[Date Prev][Date Next] [Chronological] [Thread] [Top]

Re: (ITS#7631) Overlay to rewrite value of attribute using regex



--=_c864110a076fc513331e0370bcb9adbe
Content-Transfer-Encoding: 7bit
Content-Type: text/plain; charset=UTF-8;
 format=flowed


I put patch here because the ftp server is full.
DB

--=_c864110a076fc513331e0370bcb9adbe
Content-Transfer-Encoding: base64
Content-Type: text/plain;
 name=bart-130624.patch
Content-Disposition: attachment;
 filename=bart-130624.patch

RnJvbSBiOTM0MjdiZDVjYmNkMmJmOWMzYmM3M2IxYzE2NWYzNDY3MGRkOWY5IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBiYXJ0IDxiYXJ0QG5iLWJhcnQuKG5vbmUpPgpEYXRlOiBNb24s
IDI0IEp1biAyMDEzIDIzOjA2OjEwICswMjAwClN1YmplY3Q6IFtQQVRDSF0gT3ZlcmxheSB0byBy
ZXdyaXRlIHZhbHVlIG9mIGF0dHJpYnV0ZSB1c2luZyByZWdleAoKLS0tCiBjb250cmliL3NsYXBk
LW1vZHVsZXMvcmV3YXR0L01ha2VmaWxlIHwgICA0NiArKysrCiBjb250cmliL3NsYXBkLW1vZHVs
ZXMvcmV3YXR0L3Jld2F0dC5jIHwgIDQ2NyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysKIDIgZmlsZXMgY2hhbmdlZCwgNTEzIGluc2VydGlvbnMoKyksIDAgZGVsZXRpb25zKC0pCiBj
cmVhdGUgbW9kZSAxMDA2NDQgY29udHJpYi9zbGFwZC1tb2R1bGVzL3Jld2F0dC9NYWtlZmlsZQog
Y3JlYXRlIG1vZGUgMTAwNjQ0IGNvbnRyaWIvc2xhcGQtbW9kdWxlcy9yZXdhdHQvcmV3YXR0LmMK
CmRpZmYgLS1naXQgYS9jb250cmliL3NsYXBkLW1vZHVsZXMvcmV3YXR0L01ha2VmaWxlIGIvY29u
dHJpYi9zbGFwZC1tb2R1bGVzL3Jld2F0dC9NYWtlZmlsZQpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwLi5kNWQ5ZDEyCi0tLSAvZGV2L251bGwKKysrIGIvY29udHJpYi9zbGFwZC1t
b2R1bGVzL3Jld2F0dC9NYWtlZmlsZQpAQCAtMCwwICsxLDQ2IEBACisjICRPcGVuTERBUCQKKwor
TERBUF9TUkMgPSAuLi8uLi8uLgorTERBUF9CVUlMRCA9IC4uLy4uLy4uCitMREFQX0lOQyA9IC1J
JChMREFQX0JVSUxEKS9pbmNsdWRlIC1JJChMREFQX1NSQykvaW5jbHVkZSAtSSQoTERBUF9TUkMp
L3NlcnZlcnMvc2xhcGQKK0xEQVBfTElCID0gJChMREFQX0JVSUxEKS9saWJyYXJpZXMvbGlibGRh
cF9yL2xpYmxkYXBfci5sYSBcCisJJChMREFQX0JVSUxEKS9saWJyYXJpZXMvbGlibGJlci9saWJs
YmVyLmxhCisKK0xJQlRPT0wgPSAkKExEQVBfQlVJTEQpL2xpYnRvb2wKK0NDID0gZ2NjCitPUFQg
PSAtZyAtTzIgLVdhbGwgLWdnZGIKK0RFRlMgPSAKK0lOQ1MgPSAkKExEQVBfSU5DKQorTElCUyA9
ICQoTERBUF9MSUIpCisKK1BST0dSQU1TID0gcmV3YXR0LmxhCitMVFZFUiA9IDA6MDowCisKK3By
ZWZpeD0vdXNyL2xvY2FsCitleGVjX3ByZWZpeD0kKHByZWZpeCkKK2xkYXBfc3ViZGlyPS9vcGVu
bGRhcAorCitsaWJkaXI9JChleGVjX3ByZWZpeCkvbGliCitsaWJleGVjZGlyPSQoZXhlY19wcmVm
aXgpL2xpYmV4ZWMKK21vZHVsZWRpciA9ICQobGliZXhlY2RpcikkKGxkYXBfc3ViZGlyKQorCisu
U1VGRklYRVM6IC5jIC5vIC5sbworCisuYy5sbzoKKwkkKExJQlRPT0wpIC0tbW9kZT1jb21waWxl
ICQoQ0MpICQoT1BUKSAkKERFRlMpICQoSU5DUykgLWMgJDwKKworYWxsOiAkKFBST0dSQU1TKQor
CityZXdhdHQubGE6IHJld2F0dC5sbworCSQoTElCVE9PTCkgLS1tb2RlPWxpbmsgJChDQykgJChP
UFQpIC12ZXJzaW9uLWluZm8gJChMVFZFUikgXAorCS1ycGF0aCAkKG1vZHVsZWRpcikgLW1vZHVs
ZSAtbyAkQCAkPyAkKExJQlMpCisKK2NsZWFuOgorCXJtIC1yZiAqLm8gKi5sbyAqLmxhIC5saWJz
CisKK2luc3RhbGw6ICQoUFJPR1JBTVMpCisJbWtkaXIgLXAgJChERVNURElSKSQobW9kdWxlZGly
KQorCWZvciBwIGluICQoUFJPR1JBTVMpIDsgZG8gXAorCQkkKExJQlRPT0wpIC0tbW9kZT1pbnN0
YWxsIGNwICQkcCAkKERFU1RESVIpJChtb2R1bGVkaXIpIDsgXAorCWRvbmUKKwpkaWZmIC0tZ2l0
IGEvY29udHJpYi9zbGFwZC1tb2R1bGVzL3Jld2F0dC9yZXdhdHQuYyBiL2NvbnRyaWIvc2xhcGQt
bW9kdWxlcy9yZXdhdHQvcmV3YXR0LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uNjgzYmVjYwotLS0gL2Rldi9udWxsCisrKyBiL2NvbnRyaWIvc2xhcGQtbW9kdWxlcy9yZXdh
dHQvcmV3YXR0LmMKQEAgLTAsMCArMSw0NjcgQEAKKy8qIHJld2F0dC5jIC0gT3ZlcmxheSB0byBy
ZXdyaXRlIHNvbWUgYXR0cmlidXRlICAqLworLyogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgb25seSBhcyBhdXRob3JpemVkIGJ5IHRoZSBPcGVuTERBUAorICogUHVi
bGljIExpY2Vuc2UuCisgKgorICogQSBjb3B5IG9mIHRoaXMgbGljZW5zZSBpcyBhdmFpbGFibGUg
aW4gdGhlIGZpbGUgTElDRU5TRSBpbiB0aGUKKyAqIHRvcC1sZXZlbCBkaXJlY3Rvcnkgb2YgdGhl
IGRpc3RyaWJ1dGlvbiBvciwgYWx0ZXJuYXRpdmVseSwgYXQKKyAqIDxodHRwOi8vd3d3Lk9wZW5M
REFQLm9yZy9saWNlbnNlLmh0bWw+LgorICovCisvKiBBQ0tOT1dMRURHRU1FTlRTOgorICogVGhp
cyB3b3JrIHdhcyBvcmlnaW5hbGx5IGRldmVsb3BlZCBieSB0aGUgRG9taW5payBCYXJ0a2lld2lj
eiBiYXJ0QGljbS5lZHUucGwgZm9yCisgKiBpbmNsdXNpb24gaW4gT3BlbkxEQVAgU29mdHdhcmUu
CisgKi8KKworI2luY2x1ZGUgInBvcnRhYmxlLmgiCisKKyNpbmNsdWRlIDxzdGRpby5oPgorI2lu
Y2x1ZGUgPHJlZ2V4Lmg+CisKKyNpbmNsdWRlICJhYy9zdHJpbmcuaCIKKyNpbmNsdWRlICJhYy9z
b2NrZXQuaCIKKworI2luY2x1ZGUgImx1dGlsLmgiCisjaW5jbHVkZSAic2xhcC5oIgorI2luY2x1
ZGUgImNvbmZpZy5oIgorCisjZGVmaW5lIE1BWF9NQVRDSEVTIDEKKworZW51bSB7CisJUkVXQVRU
X0FUVFJJQlVURT0xLAorCVJFV0FUVF9SRUdFWCwKKwlSRVdBVFRfU1VCLAorCVJFV0FUVF9BVFRS
SUJVVEVfVCwKKwlSRVdBVFRfUkVHRVhfVAorfTsKKworCit0eXBlZGVmIHN0cnVjdCByZXdhdHRf
aW5mb190IHsKKwlBdHRyaWJ1dGVEZXNjcmlwdGlvbgkqcmFfYXR0cmlidXRlOworCXJlZ2V4X3QJ
CQkqcmFfcmVnZXg7CisJY2hhcgkJKnJhX3N1YjsKKwlBdHRyaWJ1dGVEZXNjcmlwdGlvbgkqcmFf
YXR0cmlidXRlX3Q7CisJcmVnZXhfdAkJCSpyYV9yZWdleF90OworCXN0cnVjdCByZXdhdHRfaW5m
b190CSpyYV9uZXh0OworfSByZXdhdHRfaW5mb190OworCitzdGF0aWMgaW50CityZXdhdHRfY2Zn
ZW4oIENvbmZpZ0FyZ3MgKmMgKQoreworCXNsYXBfb3Zlcmluc3QJKm9uID0gKHNsYXBfb3Zlcmlu
c3QgKiljLT5iaTsKKwlyZXdhdHRfaW5mb190CSpjaSA9IChyZXdhdHRfaW5mb190ICopb24tPm9u
X2JpLmJpX3ByaXZhdGUgOworCisgICAgICAgIGlmKCBjaSA9PSBOVUxMICkgeworICAgICAgICAg
ICAgICAgIGNpID0gKHJld2F0dF9pbmZvX3QqKWNoX2NhbGxvYyggMSwgc2l6ZW9mKHJld2F0dF9p
bmZvX3QpICk7CisJCWNpIC0+IHJhX3JlZ2V4ID0gTlVMTDsKKwkJY2kgLT4gcmFfcmVnZXggPSBO
VUxMOworCQljaSAtPiByYV9zdWIgPSBOVUxMOworCQljaSAtPiByYV9hdHRyaWJ1dGUgPSBOVUxM
OworCQljaSAtPiByYV9hdHRyaWJ1dGVfdCA9IE5VTEw7CisJCWNpIC0+IHJhX25leHQgPSBOVUxM
OworCQlvbi0+b25fYmkuYmlfcHJpdmF0ZT0gKHZvaWQgKikgY2k7CisJCURlYnVnKCBMREFQX0RF
QlVHX1RSQUNFLCAicmV3YXR0X2NmZ2VuOiAgIG9uLT5vbl9iaS5iaV9wcml2YXRlPSAlcCBcbiIs
IG9uLT5vbl9iaS5iaV9wcml2YXRlLCAwLCAwKTsKKyAgICAgICAgfSBlbHNlIHsKKwkJZm9yICg7
Y2k7Y2k9Y2ktPnJhX25leHQpIHsKKyAgICAgICAgCQlpZiggY2ktPnJhX25leHQgPT0gTlVMTCAp
IHsKKwkJCQlpZihjaS0+cmFfYXR0cmlidXRlICE9IE5VTEwgJiYgYy0+dHlwZSA9PSBSRVdBVFRf
QVRUUklCVVRFICYmICBjLT5vcCAhPSBTTEFQX0NPTkZJR19FTUlUICYmIGMtPm9wICE9ICBMREFQ
X01PRF9ERUxFVEUpeworICAgICAgICAgICAgICAgIAkJCWNpLT5yYV9uZXh0ID0gKHJld2F0dF9p
bmZvX3QqKWNoX2NhbGxvYyggMSwgc2l6ZW9mKHJld2F0dF9pbmZvX3QpICk7CisJCQkJCWNpLT5y
YV9uZXh0IC0+IHJhX3JlZ2V4ID0gTlVMTDsKKwkJCQkJY2ktPnJhX25leHQgLT4gcmFfcmVnZXhf
dCA9IE5VTEw7CisJCQkJCWNpLT5yYV9uZXh0IC0+IHJhX3N1YiA9IE5VTEw7CisJCQkJCWNpLT5y
YV9uZXh0IC0+IHJhX2F0dHJpYnV0ZSA9IE5VTEw7CisJCQkJCWNpLT5yYV9uZXh0IC0+IHJhX2F0
dHJpYnV0ZV90ID0gTlVMTDsKKwkJCQkJY2ktPnJhX25leHQgLT4gcmFfbmV4dCA9IE5VTEw7CisJ
CQkJCURlYnVnKCBMREFQX0RFQlVHX1RSQUNFLCAicmV3YXR0X2NmZ2VuOiAgIG9uLT5vbl9iaS5i
aV9wcml2YXRlPSAlcCBcbiIsIG9uLT5vbl9iaS5iaV9wcml2YXRlLCAwLCAwKTsKKwkJCQl9IGVs
c2UgeworCQkJCQlicmVhazsKKwkJCQl9CisgICAgICAgIAkJfQorCQkJCisJCX0KKworCX0KKwor
CWNvbnN0IGNoYXIJCSp0ZXh0OworCWludCByYyA9IDE7CisJaW50IHIgPSAxOworCWludCBpID0g
MDsKKwlpbnQgbGVuID0gMDsKKwlmb3IoaT0wO2k8Yy0+YXJnYztpKyspeworCQlEZWJ1ZyggTERB
UF9ERUJVR19UUkFDRSwgInJld2F0dF9jZmdlbjogICBjLT5hcmd2WyVkXTogJXNcbiIsIGksIGMt
PmFyZ3ZbaV0sIDApOworCX0KKwlEZWJ1ZyggTERBUF9ERUJVR19UUkFDRSwgInJld2F0dF9jZmdl
bjogICBjLT5vcDogJWRcbiIsICBjLT5vcCwgMCwwKTsKKwlpZiAoIGMtPm9wID09IFNMQVBfQ09O
RklHX0VNSVQgKSB7CisJCWNpID0gb24tPm9uX2JpLmJpX3ByaXZhdGUgOworCQlzdHJ1Y3QgYmVy
dmFsCWJ2OworCQlEZWJ1ZyggTERBUF9ERUJVR19UUkFDRSwgInJld2F0dF9jZmdlbiBTTEFQX0NP
TkZJR19FTUlUIDogICBjLT50eXBlOiAlZFxuIiwgIGMtPnR5cGUsIDAsMCk7CisJCXN3aXRjaChj
LT50eXBlKSB7CisJCWNhc2UgUkVXQVRUX0FUVFJJQlVURToKKwkJCWxlbiA9IHNucHJpbnRmKCBj
LT5jcl9tc2csIHNpemVvZiggYy0+Y3JfbXNnICksCisJCQkJICIlcyIsIAorCQkJCWNpLT5yYV9h
dHRyaWJ1dGUtPmFkX2NuYW1lLmJ2X3ZhbCApOworCisJCQlidi5idl92YWwgPSBjLT5jcl9tc2c7
CisJCQlEZWJ1ZyggTERBUF9ERUJVR19UUkFDRSwgInJld2F0dF9jZmdlbiBSRVdBVFRfQVRUUklC
VVRFOiAgIGMtPmNyX21zZzogJXNcbiIsICBjLT5jcl9tc2csIDAsMCk7CisJCQlidi5idl9sZW4g
PSBsZW47CisJCQl2YWx1ZV9hZGRfb25lICggJmMtPnJ2YWx1ZV92YWxzLCAmYnYgKTsKKwkJCXJj
ID0gMDsKKwkJCWJyZWFrOworCQljYXNlIFJFV0FUVF9SRUdFWDoKKworCQkJLy9sZW4gPSBzbnBy
aW50ZiggYy0+Y3JfbXNnLCBzaXplb2YoIGMtPmNyX21zZyApLCAiJXMiLCBjaS0+cmFfcmVnZXhw
ICk7CisJCQkvL2J2LmJ2X3ZhbCA9IGMtPmNyX21zZzsKKwkJCS8vRGVidWcoIExEQVBfREVCVUdf
VFJBQ0UsICJyZXdhdHRfY2ZnZW4gUkVXQVRUX1JFR0VYUDogICBjLT5jcl9tc2c6ICVzXG4iLCAg
Yy0+Y3JfbXNnLCAwLDApOworCQkJLy9idi5idl9sZW4gPSBsZW47CisJCQkvL3ZhbHVlX2FkZF9v
bmUgKCAmYy0+cnZhbHVlX3ZhbHMsICZidiApOworCQkJcmMgPSAwOworCQkJYnJlYWs7CisJCWNh
c2UgUkVXQVRUX1NVQjoKKwkJCWlmICggY2ktPnJhX3N1YiApeworCQkJCWxlbiA9IHNucHJpbnRm
KCBjLT5jcl9tc2csIHNpemVvZiggYy0+Y3JfbXNnICksCisJCQkJCSIlcyIsCisJCQkJCWNpLT5y
YV9zdWIgKTsKKworCQkJCWJ2LmJ2X3ZhbCA9IGMtPmNyX21zZzsKKwkJCQlEZWJ1ZyggTERBUF9E
RUJVR19UUkFDRSwgInJld2F0dF9jZmdlbiBSRVdBVFRfU1VCOiAgIGMtPmNyX21zZzogJXNcbiIs
ICBjLT5jcl9tc2csIDAsMCk7CisJCQkJYnYuYnZfbGVuID0gbGVuOworCQkJCXZhbHVlX2FkZF9v
bmUgKCAmYy0+cnZhbHVlX3ZhbHMsICZidiApOworCQkJfQorCQkJcmMgPSAwOworCQkJYnJlYWs7
CisJCWNhc2UgUkVXQVRUX0FUVFJJQlVURV9UOgorCQkJaWYoY2ktPnJhX2F0dHJpYnV0ZV90KXsK
KwkJCQlsZW4gPSBzbnByaW50ZiggYy0+Y3JfbXNnLCBzaXplb2YoIGMtPmNyX21zZyApLAorCQkJ
CQkgIiVzIiwgCisJCQkJCWNpLT5yYV9hdHRyaWJ1dGVfdC0+YWRfY25hbWUuYnZfdmFsICk7CisJ
CQkJYnYuYnZfdmFsID0gYy0+Y3JfbXNnOworCQkJCURlYnVnKCBMREFQX0RFQlVHX1RSQUNFLCAi
cmV3YXR0X2NmZ2VuIFJFV0FUVF9BVFRSSUJVVEU6ICAgYy0+Y3JfbXNnOiAlc1xuIiwgIGMtPmNy
X21zZywgMCwwKTsKKwkJCQlidi5idl9sZW4gPSBsZW47CisJCQkJdmFsdWVfYWRkX29uZSAoICZj
LT5ydmFsdWVfdmFscywgJmJ2ICk7CisJCQl9CisJCQlyYyA9IDA7CisJCQlicmVhazsKKwkJY2Fz
ZSBSRVdBVFRfUkVHRVhfVDoKKwkJCXJjID0gMDsKKwkJCWJyZWFrOworCisJCWRlZmF1bHQ6CisJ
CQlyYyA9IDE7CisJCQlicmVhazsKKwkJfQorCQlyZXR1cm4gcmM7CisJfSBlbHNlIGlmICggYy0+
b3AgPT0gTERBUF9NT0RfREVMRVRFICkgeworCSAgICAgICAgLyogRklYTUUgKi8KKwkgICAgICAg
IHJldHVybiAxOworCX0KKwlEZWJ1ZyggTERBUF9ERUJVR19UUkFDRSwgInJld2F0dF9jZmdlbjog
ICBjLT50eXBlOiAlZFxuIiwgIGMtPnR5cGUsIDAsMCk7CisJc3dpdGNoKCBjLT50eXBlICkgewor
CWNhc2UgUkVXQVRUX0FUVFJJQlVURToKKwkJaWYgKCBjLT5hcmdjID09IDIgKXsKKwkJCXIgPSBz
bGFwX3N0cjJhZCggYy0+YXJndlsxXSwgJihjaS0+cmFfYXR0cmlidXRlKSwgJnRleHQgKTsKKwkJ
CWlmICggciAhPSBMREFQX1NVQ0NFU1MgKSB7CisJCQkJRGVidWcoIExEQVBfREVCVUdfVFJBQ0Us
ICJyZXdhdHRfY2ZnZW46ICBzbGFwX3N0cjJhZDogcmV0dXJuIGNvZGUgPSAlZFxuIiwgciwgMCww
KTsKKwkJCQlyYyA9IDE7CisJCQl9IGVsc2UgeworCQkJCURlYnVnKCBMREFQX0RFQlVHX1RSQUNF
LCAicmV3YXR0X2NmZ2VuOiAgIGNpLT5yYV9hdHRyaWJ1dGUtPmFkX2NuYW1lLmJ2X3ZhbCA9ICVz
XG4iLCAgY2ktPnJhX2F0dHJpYnV0ZS0+YWRfY25hbWUuYnZfdmFsICwgMCwwKTsKKwkJCQlyYyA9
IDA7CisJCQl9CisJCX0KKwkJYnJlYWs7CisJY2FzZSBSRVdBVFRfUkVHRVg6CisJCWlmICggYy0+
YXJnYyA9PSAyICl7CisJCQljaS0+cmFfcmVnZXg9KHJlZ2V4X3QgKilTTEFQX01BTExPQyhzaXpl
b2YocmVnZXhfdCkpOworCQkJciA9IHJlZ2NvbXAoY2ktPnJhX3JlZ2V4LCBjLT5hcmd2WzFdLCBS
RUdfRVhURU5ERUQpOworCQkJaWYoIHIgKXsKKwkJCQlEZWJ1ZyggTERBUF9ERUJVR19UUkFDRSwg
InJld2F0dF9jZmdlbjogQ291bGQgbm90IGNvbXBpbGUgcmVnZXggciA9ICVkXG4iLCByICwgMCww
KTsKKwkJCQlyZWdmcmVlKGNpLT5yYV9yZWdleCk7CisJCQkJY2ktPnJhX3JlZ2V4PU5VTEw7CisJ
CQkJcmMgPSAxOworCQkJfSBlbHNlIHsKKwkJCQlEZWJ1ZyggTERBUF9ERUJVR19UUkFDRSwgInJl
d2F0dF9jZmdlbjogICBjaS0+cmFfcmVnZXggbWFrZSBmcm9tICM+ICVzIDwjJ1xuIiwgIGMtPmFy
Z3ZbMV0gLCAwLDApOworCQkJCXJjID0gMDsKKwkJCX0KKwkJfQorCQlicmVhazsKKwljYXNlIFJF
V0FUVF9TVUI6CisJCWlmICggYy0+YXJnYyA9PSAyICl7CisJCQljaS0+cmFfc3ViPVNMQVBfTUFM
TE9DKChzdHJsZW4oYy0+YXJndlsxXSkrMSkqIHNpemVvZihjaGFyKSApOworCQkJRGVidWcoIExE
QVBfREVCVUdfVFJBQ0UsICJyZXdhdHRfY2ZnZW46ICAgY2ktPnJhX3N1Yj1tYWxsb2MoJWx1KVxu
IiwgICgoc3RybGVuKGMtPmFyZ3ZbMV0pKzEpKiBzaXplb2YoY2hhcikgKSwgMCwwKTsKKwkJCXN0
cm5jcHkoY2ktPnJhX3N1YixjLT5hcmd2WzFdLHN0cmxlbihjLT5hcmd2WzFdKSk7CisJCQljaS0+
cmFfc3ViW3N0cmxlbihjLT5hcmd2WzFdKV09J1wwJzsKKwkJCURlYnVnKCBMREFQX0RFQlVHX1RS
QUNFLCAicmV3YXR0X2NmZ2VuOiAgIGNpLT5yYV9zdWI9ICVzXG4iLCAgY2ktPnJhX3N1YiwgMCww
KTsKKwkJCXJjID0gMDsKKwkJfSBlbHNlIHsKKwkJCWNpLT5yYV9zdWI9bWFsbG9jKHNpemVvZihj
aGFyKSk7CisJCQljaS0+cmFfc3ViWzBdPSdcMCc7CisJCQlyYyA9IDA7CisJCX0KKwkJYnJlYWs7
CisJY2FzZSBSRVdBVFRfQVRUUklCVVRFX1Q6CisJCWlmICggYy0+YXJnYyA9PSAyICl7CisJCQly
ID0gc2xhcF9zdHIyYWQoIGMtPmFyZ3ZbMV0sICYoY2ktPnJhX2F0dHJpYnV0ZV90KSwgJnRleHQg
KTsKKwkJCWlmICggciAhPSBMREFQX1NVQ0NFU1MgKSB7CisJCQkJRGVidWcoIExEQVBfREVCVUdf
VFJBQ0UsICJyZXdhdHRfY2ZnZW46ICBzbGFwX3N0cjJhZDogcmV0dXJuIGNvZGUgPSAlZFxuIiwg
ciwgMCwwKTsKKwkJCQlyYyA9IDE7CisJCQl9IGVsc2UgeworCQkJCURlYnVnKCBMREFQX0RFQlVH
X1RSQUNFLCAicmV3YXR0X2NmZ2VuOiAgIGNpLT5yYV9hdHRyaWJ1dGVfdC0+YWRfY25hbWUuYnZf
dmFsID0gJXNcbiIsICBjaS0+cmFfYXR0cmlidXRlX3QtPmFkX2NuYW1lLmJ2X3ZhbCAsIDAsMCk7
CisJCQkJcmMgPSAwOworCQkJfQorCQl9CisJCWJyZWFrOworCWNhc2UgUkVXQVRUX1JFR0VYX1Q6
CisJCWlmICggYy0+YXJnYyA9PSAyICl7CisJCQljaS0+cmFfcmVnZXhfdD0ocmVnZXhfdCAqKVNM
QVBfTUFMTE9DKHNpemVvZihyZWdleF90KSk7CisJCQlyID0gcmVnY29tcChjaS0+cmFfcmVnZXhf
dCwgYy0+YXJndlsxXSwgUkVHX0VYVEVOREVEKTsKKwkJCWlmKCByICl7CisJCQkJRGVidWcoIExE
QVBfREVCVUdfVFJBQ0UsICJyZXdhdHRfY2ZnZW46IENvdWxkIG5vdCBjb21waWxlIHJlZ2V4IHIg
PSAlZFxuIiwgciAsIDAsMCk7CisJCQkJcmVnZnJlZShjaS0+cmFfcmVnZXhfdCk7CisJCQkJY2kt
PnJhX3JlZ2V4X3Q9TlVMTDsKKwkJCQlyYyA9IDE7CisJCQl9IGVsc2UgeworCQkJCURlYnVnKCBM
REFQX0RFQlVHX1RSQUNFLCAicmV3YXR0X2NmZ2VuOiAgIGNpLT5yYV9yZWdleF90IG1ha2UgZnJv
bSAjPiAlcyA8IydcbiIsICBjLT5hcmd2WzFdICwgMCwwKTsKKwkJCQlyYyA9IDA7CisJCQl9CisJ
CX0KKwkJYnJlYWs7CisKKworCWRlZmF1bHQ6CQkKKwkJcmV0dXJuIDE7CisJCWJyZWFrOworCX0K
KwlyZXR1cm4gcmM7Cit9CitzdGF0aWMgaW50CityZXdhdHRfc2VhcmNoX3Jlc3BvbnNlX2NiKCBP
cGVyYXRpb24gKm9wLCBTbGFwUmVwbHkgKnJzICkKK3sKKwlzbGFwX2NhbGxiYWNrICAgKnNjOwor
CXJld2F0dF9pbmZvX3QJKnJhaTsKKwlFbnRyeQkJKmUgPSBOVUxMOworCUF0dHJpYnV0ZSAqYTsK
KwljaGFyIG1zZ2J1ZlsxMDBdOworCWludCByZXRpOworCWludCBpOworCisJYXNzZXJ0KCBvcCAm
JiBvcC0+b19jYWxsYmFjayAmJiBycyApOworCURlYnVnKCBMREFQX0RFQlVHX1RSQUNFLCAicmV3
YXR0X3NlYXJjaF9yZXNwb25zZV9jYiBcbiIsIDAsIDAsMCk7CisJaWYgKCBycy0+c3JfdHlwZSAh
PSBSRVBfU0VBUkNIIHx8ICFycy0+c3JfZW50cnkgKSB7CisJCXNsYXBfZnJlZXNlbGZfY2IoIG9w
LCBycyApOworCQlyZXR1cm4gKCBTTEFQX0NCX0NPTlRJTlVFICk7CisJfQorCXNjID0gb3AtPm9f
Y2FsbGJhY2s7CisJcmFpID0gKHJld2F0dF9pbmZvX3QgKilzYy0+c2NfcHJpdmF0ZTsKKworCWZv
ciAocmFpID0gKHJld2F0dF9pbmZvX3QgKilzYy0+c2NfcHJpdmF0ZTtyYWk7cmFpPXJhaS0+cmFf
bmV4dCl7CisJCS8vRGVidWcoIExEQVBfREVCVUdfVFJBQ0UsICJyZXdhdHRfc2VhcmNoX3Jlc3Bv
bnNlX2NiOiByYWkgPSAlcCBcbiIsIHJhaSwgMCwgMCk7CisJCWUgPSBycy0+c3JfZW50cnk7CisJ
CWZvciAoIGEgPSBlLT5lX2F0dHJzOyBhOyBhID0gYS0+YV9uZXh0ICkgeworCQkJaWYgKCBhLT5h
X2Rlc2MgPT0gcmFpLT5yYV9hdHRyaWJ1dGUgKSB7CisJCQkJRGVidWcoIExEQVBfREVCVUdfVFJB
Q0UsICJyZXdhdHRfc2VhcmNoX3Jlc3BvbnNlX2NiOiByZXdhdHQgZmluZDogJXNcbiIsIGEtPmFf
ZGVzYy0+YWRfY25hbWUuYnZfdmFsLCAwLDApOworCQkJCWJyZWFrOworCQkJCX0KKwkJfQorCisJ
CWlmICggYSA9PSBOVUxMICkgeworCQkJRGVidWcoIExEQVBfREVCVUdfVFJBQ0UsICJyZXdhdHRf
c2VhcmNoX3Jlc3BvbnNlX2NiOiByZXdhdHQgbm90IGZpbmQ6ICVzXG4iLCByYWktPnJhX2F0dHJp
YnV0ZS0+YWRfY25hbWUuYnZfdmFsLCAwLDApOworCQkJY29udGludWU7CisJCX0KKworCQlEZWJ1
ZyggTERBUF9ERUJVR19UUkFDRSwgInJld2F0dF9zZWFyY2hfcmVzcG9uc2VfY2I6IGEtPmFfZGVz
Yy0+YWRfY25hbWUuYnZfdmFsOiAlc1xuIiwgYS0+YV9kZXNjLT5hZF9jbmFtZS5idl92YWwsIDAs
MCk7CisKKwkJaWYgKCByYWktPnJhX2F0dHJpYnV0ZV90ICE9IE5VTEwgKXsKKwkJCWZvciAoIGEg
PSBlLT5lX2F0dHJzOyBhOyBhID0gYS0+YV9uZXh0ICkgeworCQkJCWlmICggYS0+YV9kZXNjID09
IHJhaS0+cmFfYXR0cmlidXRlX3QgKSB7CisJCQkJCWJyZWFrOworCQkJCQl9CisJCQl9CisJCisJ
CQlpZiAoIGEgPT0gTlVMTCApIHsKKwkJCQlEZWJ1ZyggTERBUF9ERUJVR19UUkFDRSwgInJld2F0
dF9zZWFyY2hfcmVzcG9uc2VfY2I6IHJld2F0dCBub3QgZmluZCByYV9hdHRyaWJ1dGVfdCA6ICVz
XG4iLCByYWktPnJhX2F0dHJpYnV0ZV90LT5hZF9jbmFtZS5idl92YWwsIDAsMCk7CisJCQkJY29u
dGludWU7CisJCQl9CisJCX0KKwkJaWYgKCByYWktPnJhX2F0dHJpYnV0ZV90ICE9IE5VTEwgJiYg
cmFpLT5yYV9yZWdleF90ICE9IE5VTEwpeworCQkJZm9yICggYSA9IGUtPmVfYXR0cnM7IGE7IGEg
PSBhLT5hX25leHQgKSB7CisJCQkJaWYgKCBhLT5hX2Rlc2MgPT0gcmFpLT5yYV9hdHRyaWJ1dGVf
dCApIHsKKwkJCQkJCWZvcihpPTA7aSA8IGEtPmFfbnVtdmFscyA7aSsrKXsKKwkJCQkJCQkgcmV0
aSA9IHJlZ2V4ZWMocmFpLT5yYV9yZWdleF90LCBhLT5hX3ZhbHNbaV0uYnZfdmFsICwgMCAsIE5V
TEwgLCBSRUdfTk9UQk9MIHwgUkVHX05PVEVPTCk7CisJCQkJCQkJIGlmIChyZXRpID09IDApIGJy
ZWFrOworCQkJCQkJfQorCQkJCQkJaWYgKHJldGkgPT0gMCApIGJyZWFrOworCQkJCQl9CisJCQl9
CisJCisJCQlpZiAoIGEgPT0gTlVMTCApIHsKKwkJCQlEZWJ1ZyggTERBUF9ERUJVR19UUkFDRSwg
InJld2F0dF9zZWFyY2hfcmVzcG9uc2VfY2I6IHJhX3JlZ2V4X3QgUkVHX05PTUFUQ0ggaW4gJXMg
XG4iLCAgcmFpLT5yYV9hdHRyaWJ1dGVfdC0+YWRfY25hbWUuYnZfdmFsICwgMCwwKTsKKwkJCQlj
b250aW51ZTsKKwkJCX0KKworCQl9CisKKwkJLy9OZXcgZnVuY3Rpb24gZm9yIHNsYXBkID4gMi40
LjI0CisJCXJzX2VudHJ5Mm1vZGlmaWFibGUoIG9wLCBycywgKHNsYXBfb3Zlcmluc3QgKikgb3At
Pm9fYmQtPmJkX2luZm8gKTsKKwkJLy9yc19lbnN1cmVfZW50cnlfbW9kaWZpYWJsZSggb3AsIHJz
LCAoc2xhcF9vdmVyaW5zdCAqKSBvcC0+b19iZC0+YmRfaW5mbyApOworCQllID0gcnMtPnNyX2Vu
dHJ5OworCisJCWZvciAoIGEgPSBlLT5lX2F0dHJzOyBhOyBhID0gYS0+YV9uZXh0ICkgeworCQkJ
aWYgKCBhLT5hX2Rlc2MgIT0gIHJhaS0+cmFfYXR0cmlidXRlICkKKwkJCQljb250aW51ZTsKKwkJ
CWZvcihpPTA7aSA8IGEtPmFfbnVtdmFscyA7aSsrKXsKKworCisJCQkJRGVidWcoIExEQVBfREVC
VUdfVFJBQ0UsICJyZXdhdHRfc2VhcmNoX3Jlc3BvbnNlX2NiOiBvbGQgIHZhbHVlICAlc1xuIiwg
YS0+YV92YWxzW2ldLmJ2X3ZhbCwgMCwwICk7CisJCQkJRGVidWcoIExEQVBfREVCVUdfVFJBQ0Us
ICJyZXdhdHRfc2VhcmNoX3Jlc3BvbnNlX2NiOiBvbGQgbnZhbHVlICAlc1xuIiwgYS0+YV9udmFs
c1tpXS5idl92YWwsIDAsMCApOworCisJCQkJaW50IGo7CisJCQkJY2hhciAqIHZhbF90bXA9TlVM
TDsKKwkJCQlyZWdtYXRjaF90IG1hdGNoZXNbTUFYX01BVENIRVNdOworCQkJCQorCQkJCS8qIEV4
ZWN1dGUgcmVndWxhciBleHByZXNzaW9uICovCisJCQkJcmV0aSA9IHJlZ2V4ZWMocmFpLT5yYV9y
ZWdleCwgYS0+YV92YWxzW2ldLmJ2X3ZhbCAsIE1BWF9NQVRDSEVTICwgbWF0Y2hlcyAsIFJFR19O
T1RCT0wgfCBSRUdfTk9URU9MKTsKKworCQkJCWlmKCAhcmV0aSApeworCQkJCQlmb3IgKGogPSAw
OyBqIDwgIE1BWF9NQVRDSEVTOyBqKyspIHsKKwkJCQkJCWlmIChtYXRjaGVzW2pdLnJtX3NvID09
IC0xKSB7CisJCQkJCQkgICAgYnJlYWs7CisJCQkJCQl9CisJCQkJCQlpZiAoaiA9PSAwICkgewor
CQkJCQkJCXZhbF90bXAgPSByZWFsbG9jKHZhbF90bXAgLCAoc3RybGVuKHJhaS0+cmFfc3ViKSAt
IG1hdGNoZXNbal0ucm1fZW8gKyBtYXRjaGVzW2pdLnJtX3NvICsxICsgc3RybGVuKGEtPmFfdmFs
c1tpXS5idl92YWwpICkgKiBzaXplb2YoY2hhcikpOworCQkJCQkJCWlmKG1hdGNoZXNbal0ucm1f
c28gPiAwKQorCQkJCQkJCQlzdHJuY3B5KCB2YWxfdG1wLCAgYS0+YV92YWxzW2ldLmJ2X3ZhbCwg
bWF0Y2hlc1tqXS5ybV9zbyk7CisJCQkJCQkJc3RyY3B5KCB2YWxfdG1wICsgbWF0Y2hlc1tqXS5y
bV9zbywgIHJhaS0+cmFfc3ViKTsKKwkJCQkJCQlzdHJjcHkoIHZhbF90bXAgKyBzdHJsZW4odmFs
X3RtcCkgLCBhLT5hX3ZhbHNbaV0uYnZfdmFsICsgbWF0Y2hlc1tqXS5ybV9lbyApOworCQkJCQkJ
fQorCQkJCQl9CisJCQkJCURlYnVnKCBMREFQX0RFQlVHX1RSQUNFLCAicmV3YXR0X3NlYXJjaF9y
ZXNwb25zZV9jYjogdmFsX3RtcCB2YWx1ZTogJXNcbiIsIHZhbF90bXAsIDAsIDAgKTsKKwkJCQkJ
YS0+YV92YWxzW2ldLmJ2X3ZhbCA9IHJlYWxsb2MoIGEtPmFfdmFsc1tpXS5idl92YWwgLCAoIHN0
cmxlbih2YWxfdG1wKSArIDEgKSAqIHNpemVvZihjaGFyKSAgKTsKKwkJCQkJYS0+YV9udmFsc1tp
XS5idl92YWwgPSByZWFsbG9jKCBhLT5hX252YWxzW2ldLmJ2X3ZhbCAsICggc3RybGVuKHZhbF90
bXApICsgMSApICAqIHNpemVvZihjaGFyKSAgKTsKKwkJCQkJRGVidWcoIExEQVBfREVCVUdfVFJB
Q0UsICJyZXdhdHRfc2VhcmNoX3Jlc3BvbnNlX2NiOiBhZnRlciBTTEFQX1JFQUxMT0MgYS0+YV9b
bl12YWxzWyVkXS0+YnZfdmFsIHRvICAlbHVcbiIsIGkgLChzdHJsZW4odmFsX3RtcCkrMSkqc2l6
ZW9mKGNoYXIpLCAwICk7CisJCQkJCXN0cmNweSggYS0+YV92YWxzW2ldLmJ2X3ZhbCAsdmFsX3Rt
cCk7CisJCQkJCXN0cmNweSggYS0+YV9udmFsc1tpXS5idl92YWwgLHZhbF90bXApOworCQkJCQlE
ZWJ1ZyggTERBUF9ERUJVR19UUkFDRSwgInJld2F0dF9zZWFyY2hfcmVzcG9uc2VfY2I6IG5ldyBh
LT5hX1tuXXZhbHNbJWRdLmJ2X3ZhbD0gJXNcbiIsaSwgYS0+YV9udmFsc1tpXS5idl92YWwsIDAg
KTsKKwkJCQkJYS0+YV92YWxzW2ldLmJ2X2xlbj0gc3RybGVuKHZhbF90bXApIDsKKwkJCQkJYS0+
YV9udmFsc1tpXS5idl9sZW49IHN0cmxlbih2YWxfdG1wKSA7CisJCQkJCURlYnVnKCBMREFQX0RF
QlVHX1RSQUNFLCAicmV3YXR0X3NlYXJjaF9yZXNwb25zZV9jYjogbmV3IGEtPmFfW25ddmFsc1sl
ZF0uYnZfbGVuPSAlenVcbiIsaSwgc3RybGVuKHZhbF90bXApLCAwICk7CisJCQkJCWlmICh2YWxf
dG1wKSBmcmVlKHZhbF90bXApOworCQkJCX0KKwkJCQllbHNlIGlmKCByZXRpID09IFJFR19OT01B
VENIICl7CisJCQkJCURlYnVnKCBMREFQX0RFQlVHX1RSQUNFLCAicmV3YXR0X3NlYXJjaF9yZXNw
b25zZV9jYjogUkVHX05PTUFUQ0ggaW4gOiAlc1xuIiwgIGEtPmFfdmFsc1tpXS5idl92YWwgICwg
MCwwKTsKKwkJCQl9CisJCQkJZWxzZXsKKwkJCQkgICAgICAgIHJlZ2Vycm9yKHJldGksIHJhaS0+
cmFfcmVnZXgsIG1zZ2J1Ziwgc2l6ZW9mKG1zZ2J1ZikpOworCQkJCQlEZWJ1ZyggTERBUF9ERUJV
R19UUkFDRSwgInJld2F0dF9zZWFyY2hfcmVzcG9uc2VfY2I6IFJlZ2V4IG1hdGNoIGZhaWxlZDog
JXNcbiIsICBtc2didWYgLCAwLDApOworCQkJCQlicmVhazsKKwkJCQl9CisJCQl9CisKKyAgICAg
ICAgCX0KKwl9CisJcmV0dXJuICggU0xBUF9DQl9DT05USU5VRSApOworfQorCitzdGF0aWMgaW50
CityZXdhdHRfc2VhcmNoX2NsZWFudXBfY2IoIE9wZXJhdGlvbiAqb3AsIFNsYXBSZXBseSAqcnMg
KQoreworCWlmICggcnMtPnNyX3R5cGUgPT0gUkVQX1JFU1VMVCB8fCBycy0+c3JfZXJyICE9IExE
QVBfU1VDQ0VTUyApIHsKKwkJc2xhcF9mcmVlc2VsZl9jYiggb3AsIHJzICk7CisJfQorCisJcmV0
dXJuIFNMQVBfQ0JfQ09OVElOVUU7Cit9CisKK3N0YXRpYyBpbnQKK3Jld2F0dF9zZWFyY2goIE9w
ZXJhdGlvbiAqb3AsIFNsYXBSZXBseSAqcnMgKQoreworICAgICAgICBzbGFwX292ZXJpbnN0ICAg
Km9uID0gKHNsYXBfb3Zlcmluc3QgKilvcC0+b19iZC0+YmRfaW5mbzsKKyAgICAgICAgcmV3YXR0
X2luZm9fdCAgICAqY2kgPSAocmV3YXR0X2luZm9fdCAqKW9uLT5vbl9iaS5iaV9wcml2YXRlOwor
CXNsYXBfY2FsbGJhY2sJKnNjOworCisJRGVidWcoIExEQVBfREVCVUdfVFJBQ0UsICJyZXdhdHRf
c2VhcmNoIFxuIiwgMCwgMCwgMCApOworCXNjID0gb3AtPm9fdG1wY2FsbG9jKCAxLCBzaXplb2Yo
ICpzYyApLCBvcC0+b190bXBtZW1jdHggKTsKKwlzYy0+c2NfcmVzcG9uc2UgPSByZXdhdHRfc2Vh
cmNoX3Jlc3BvbnNlX2NiOworCXNjLT5zY19jbGVhbnVwID0gcmV3YXR0X3NlYXJjaF9jbGVhbnVw
X2NiOworCXNjLT5zY19uZXh0ID0gb3AtPm9fY2FsbGJhY2s7CisgICAgICAgIHNjLT5zY19wcml2
YXRlID0gY2k7CisJb3AtPm9fY2FsbGJhY2sgPSBzYzsKKworCXJldHVybiBTTEFQX0NCX0NPTlRJ
TlVFOworCit9CitzdGF0aWMgaW50CityZXdhdHRfZGJfZGVzdHJveSgKKyAgICAgICAgQmFja2Vu
ZERCICpiZSwKKyAgICAgICAgQ29uZmlnUmVwbHkgKmNyICkKK3sKKyAgICAgICAgc2xhcF9vdmVy
aW5zdCAqb24gPSAoc2xhcF9vdmVyaW5zdCAqKWJlLT5iZF9pbmZvOworCisgICAgICAgIG9uLT5v
bl9iaS5iaV9wcml2YXRlID0gTlVMTDsKKworICAgICAgICByZXR1cm4gMDsKK30KKworc3RhdGlj
IHNsYXBfb3Zlcmluc3QgcmV3YXR0X292bDsKKworc3RhdGljIENvbmZpZ0RyaXZlciAgICAgcmV3
YXR0X2NmZ2VuOworCitzdGF0aWMgQ29uZmlnVGFibGUgcmV3YXR0X2NmZ1tdID0geworCXsgInJh
X2F0dHJpYnV0ZSIsIE5VTEwsIDIsIDIsIDAsIEFSR19NQUdJQ3xSRVdBVFRfQVRUUklCVVRFLAor
CQlyZXdhdHRfY2ZnZW4sICIoT0xjZmdDdEF0OjIyLjEgTkFNRSAnb2xjUmV3YXR0QXR0cmlidXRl
JyAiCisJCQkiREVTQyAnQXR0cmlidXRlIE5hbWUnICIKKwkJCSJFUVVBTElUWSBjYXNlSWdub3Jl
TWF0Y2ggIgorCQkJIlNZTlRBWCBPTXNEaXJlY3RvcnlTdHJpbmcgIgorCQkJIlgtT1JERVJFRCAn
VkFMVUVTJyApIiwgTlVMTCwgTlVMTCB9LAorCXsgInJhX3JlZ2V4IiwgTlVMTCwgMiwgMiwgMCwg
QVJHX01BR0lDfFJFV0FUVF9SRUdFWCwKKwkJcmV3YXR0X2NmZ2VuLCAiKE9MY2ZnQ3RBdDoyMi4y
IE5BTUUgJ29sY1Jld2F0dFJlZ2V4JyAiCisJCQkiREVTQyAnUmVnZXgnICIKKwkJCSJTWU5UQVgg
T01zRGlyZWN0b3J5U3RyaW5nICIKKwkJCSJYLU9SREVSRUQgJ1ZBTFVFUycgKSIsIE5VTEwsIE5V
TEwgfSwKKwl7ICJyYV9zdWIiLCBOVUxMLCAxLCAyLCAwLCBBUkdfTUFHSUN8UkVXQVRUX1NVQiwK
KwkJcmV3YXR0X2NmZ2VuLCAiKE9MY2ZnQ3RBdDoyMi4zIE5BTUUgJ29sY1Jld2F0dFN1YicgIgor
CQkJIkRFU0MgJ1N1YnN0aXR1dGlvbicgIgorCQkJIlNZTlRBWCBPTXNEaXJlY3RvcnlTdHJpbmcg
IgorCQkJIlgtT1JERVJFRCAnVkFMVUVTJyApIiwgTlVMTCwgTlVMTCB9LAorCXsgInJhX2F0dHJp
YnV0ZV90IiwgTlVMTCwgMiwgMiwgMCwgQVJHX01BR0lDfFJFV0FUVF9BVFRSSUJVVEVfVCwKKwkJ
cmV3YXR0X2NmZ2VuLCAiKE9MY2ZnQ3RBdDoyMi40IE5BTUUgJ29sY1Jld2F0dEF0dHJpYnV0ZVQn
ICIKKwkJCSJERVNDICdUcmlnZ2VyaW5nIEF0dHJpYnV0ZSBOYW1lJyAiCisJCQkiU1lOVEFYIE9N
c0RpcmVjdG9yeVN0cmluZyAiCisJCQkiWC1PUkRFUkVEICdWQUxVRVMnICkiLCBOVUxMLCBOVUxM
IH0sCisJeyAicmFfcmVnZXhfdCIsIE5VTEwsIDIsIDIsIDAsIEFSR19NQUdJQ3xSRVdBVFRfUkVH
RVhfVCwKKwkJcmV3YXR0X2NmZ2VuLCAiKE9MY2ZnQ3RBdDoyMi41IE5BTUUgJ29sY1Jld2F0dFJl
Z2V4VCcgIgorCQkJIkRFU0MgJ1RyaWdnZXJpbmcgUmVnZXgnICIKKwkJCSJTWU5UQVggT01zRGly
ZWN0b3J5U3RyaW5nICIKKwkJCSJYLU9SREVSRUQgJ1ZBTFVFUycgKSIsIE5VTEwsIE5VTEwgfSwK
Kwl7IE5VTEwsIE5VTEwsIDAsIDAsIDAsIEFSR19JR05PUkVEIH0KK307CisKK3N0YXRpYyBDb25m
aWdPQ3MgcmV3YXR0X29jc1tdID0geworCXsgIiggT0xjZmdDdE9jOjIyLjEgIgorCSAgIk5BTUUg
J29sY1Jld2F0dENvbmZpZycgIgorCSAgIkRFU0MgJ0F0dHJpYnV0ZSBSZXdhdHQgY29uZmlndXJh
dGlvbicgIgorCSAgIlNVUCBvbGNPdmVybGF5Q29uZmlnICIKKwkgICJNVVNUICggb2xjUmV3YXR0
QXR0cmlidXRlICQgb2xjUmV3YXR0UmVnZXgpICIgCisJICAiTUFZICggb2xjUmV3YXR0UmVnZXhU
ICQgb2xjUmV3YXR0U3ViICQgb2xjUmV3YXR0QXR0cmlidXRlVCApICIgCisJICAiICkgIiwgCisJ
ICBDZnRfT3ZlcmxheSwgcmV3YXR0X2NmZyB9LAorCXsgTlVMTCwgMCwgTlVMTCB9Cit9OworCitz
dGF0aWMgaW50CityZXdhdHRfaW5pdGlhbGl6ZSggdm9pZCApIHsKKwlpbnQgcmM7CisJcmV3YXR0
X292bC5vbl9iaS5iaV90eXBlID0gInJld2F0dCI7CisKKwlyZXdhdHRfb3ZsLm9uX2JpLmJpX2Ri
X2Rlc3Ryb3kgPSByZXdhdHRfZGJfZGVzdHJveTsKKwlyZXdhdHRfb3ZsLm9uX2JpLmJpX29wX3Nl
YXJjaCA9IHJld2F0dF9zZWFyY2g7CisJcmV3YXR0X292bC5vbl9iaS5iaV9jZl9vY3MgPSByZXdh
dHRfb2NzOworCQorCURlYnVnKCBMREFQX0RFQlVHX1RSQUNFLCAicmV3YXR0X2luaXRpYWxpemU6
IHJld2F0dF9vdmwub25fYmkuYmlfdHlwZT0gICVzXG4iLCByZXdhdHRfb3ZsLm9uX2JpLmJpX3R5
cGUgLCAwLDAgKTsKKwlyYyA9IGNvbmZpZ19yZWdpc3Rlcl9zY2hlbWEgKCByZXdhdHRfY2ZnLHJl
d2F0dF9vY3MgKTsKKwlpZiAoIHJjICkgCisJCXJldHVybiByYzsKKwlyZXR1cm4gb3ZlcmxheV9y
ZWdpc3RlciggJnJld2F0dF9vdmwgKTsKK30KKworaW50IGluaXRfbW9kdWxlKGludCBhcmdjLCBj
aGFyICphcmd2W10pIHsKKwlyZXR1cm4gcmV3YXR0X2luaXRpYWxpemUoKTsKK30KKwotLSAKMS43
LjUuNAoK
--=_c864110a076fc513331e0370bcb9adbe--