bW9kLjIwMDUwMzA3LHJoLiBUaGFua3MgdG8gRW5yaXF1ZSBMYXRyZSBmb3IgMjQwIHdvcmRzIGFkZGVkIHRvIGxpc3QKbW9kLjIwMDUwMTE4LHJoLiBUaGFua3MgdG8gU2FudGlhZ28gQm9zaW8gZm9yIHRoZSAiZXNjcmliaXIiIGZsYWcgY29ycmVjdGlvbgptb2QuMjAwNDA2MjYscmguIFRoYW5rcyB0byBDbGF1ZGlvIFZhbGRlcnJhbWEgZm9yIGNvcnJlY3Rpbmcgb3ZlcnNpZ2h0IG9mIENoaWxlCm1vZC4yMDAzMTIzMCxyaC4gQWRkaW5nIHdvcmRzIHRvIGRpY3QKbW9kLjIwMDMxMDI0LHJoLiBBZGp1c3RpbmcgYWZmaXggZmlsZQptb2QuMjAwMzEwMTIscmguIENvcnJlY3RlZCBSRVAgbGlzdCBjb3VudAptb2QuMjAwMzEwMDYscmguIENvcnJlY3RlZCBUUlkgc3RyaW5nLCBhZGQgUkVQIGxpc3QsIG1vcmUgcHJvcGVyIG5vdW5zClJlbGVhc2hlZDoyMDAyMDUwMSxyaC4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClRoaXMgZGljdGlvbmFyeSBpcyBiYXNlZCBvbiB0aGUgU3BhbmlzaCB3b3JkbGlzdCBhbmQgYWZmaXhlcyBjcmVhdGVkCmJ5IEplc3VzIENhcnJldGVybyBhbmQgU2FudGlhZ28gUm9kcmlndWV6LCBKdW5lIDIwMDEgVjEuNyBhbmQgaXMKY292ZXJlZCBieSB0aGVpciBvcmlnaW5hbCBHbnUgR1BMIGxpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGU0YsCnB1Ymxpc2hlZCBhdCBmdHA6Ly9mdHAuZmkudXBtLmVzL3B1Yi91bml4L2VzcGF+bm9sLnRhci5neiAuCgpBbGwgbW9kaWZpY2F0aW9uIHRvIHRoZSBhZmZpeCBmaWxlIGFuZCB3b3JkbGlzdCB0byBtYWtlIGNvbXBhdGlibGUKd2l0aCBNeVNwZWxsIGFyZSBjb3B5cmlnaHQgMjAwMiBSaWNoYXJkIEhvbHQsIHJob2x0QHRlbGNlbC5uZXQudmUgYW5kCmNvdmVyZWQgYnkgdGhlIHNhbWUgR251IEdQTCBsaWNlbnNlIGFzIHRoZSBvcmlnaW5hbCB3b3JrLgoKVGhhbmtzIHRvIFNhbnRpYWdvIFJvZHJpZ3VleiBmb3IgaGlzIGFzc2lzdGFuY2UgaW4gY29udmVydGluZyB0byBNeVNwZWxsLgotLS0tLS0tLS0tLS0tLS0tCkVzdGUgZGljY2lvbmFyaW8gZXN0YSBiYXNhZGEgZW4gbGEgbGlzdGEgZGUgcGFsYWJyYXMgeSBhZmlqb3MgY3JlYWRvCnBvciBKZXP6cyBDYXJyZXRlcm8geSBTYW50aWFnbyBSb2RyaWd1ZXosIEp1bmlvIDIwMDEgVjEuNyB5IGVzdGEKY3ViaWVydG8gcG9yIHN1IGxpY2VuY2lhIG9yaWdpbmFsLCBHbnUgR1BMIGNvbW8gcHVibGljYWRvIHBvciBlbCBGU0YuCnB1YmxpY2FkbyBlbiBmdHA6Ly9mdHAuZmkudXBtLmVzL3B1Yi91bml4L2VzcGF+bm9sLnRhci5neiAuCgpMb3MgbW9kaWZpY2FjaW9uZXMgYWwgZmljaGVybyBkZSBhZmlqb3MgeSBsaXN0YSBkZSBwYWxhYnJhcyBwYXJhIGhhY2VybG8KY29tcGF0aWJsZSBjb24gTXlTcGVsbCBzb24gY29weXJpZ2h0IDIwMDIgUmljaGFyZCBIb2x0LCByaG9sdEB0ZWxjZWwubmV0LnZlCnkgY3ViaWVydG8gcG9yIGVsIG1pc21vIGxpY2VuY2lhIEdudSBHUEwgcXVlIGVsIHRyYWJham8gb3JpZ2luYWwuCgpHcmFjaWFzIGEgU2FudGlhZ28gUm9kcmlndWV6IHBhcmEgc3UgYXNpc3RlbmNpYSBlbiBsYSBjb252ZXJzafNuIGEgTXlTcGVsbC4KKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoJCQkJCQkJCQkJCQlJTlNUQUxBQ0nTTgoKCQkJIEluc3RhbGFjafNuIG1hbnVhbCBwYXJhIGRpY2Npb25hcmlvIEVzcGHxb2wgcGFyYQogICAgT3Blbk9mZmljZS5vcmcgKE9PbzEwMCkgeSAoT09vMTAxKSBwYXJhIExpbnV4IHkgV2luZG93cwoKTm90YXM6CiAgIExhcyByZWZlcmVuY2lhcyBlc3ThbiBiYXNhZGFzIGVuIE9PbzEwMC8xMDEgZW4gRXNwYfFvbC4KICAgU2UgYXN1bWUgcXVlIE9Pb3JnIGVzdOEgaW5zdGFsYWRvIGNvcnJlY3RhbWVudGUuCiAgIEVsIGRpY2Npb25hcmlvIGVzIGxvIG1pc21vIHBhcmEgTGludXggeSBXaW5kb3dzCiAgIENpZXJyZSBlbCBPT29yZyB5IGVsIFF1aWNrc3RhcnRlciBhbnRlcyBkZSBjb250aW51YXIKCjEuIERlc2NvbXByaW1hIGVsIGRpY2Npb25hcmlvLCAqLnppcCBvICoudGd6IGEgdW4gZGlyZWN0b3JpbyB0ZW1wb3JhbC4KQ29waWUgZGljdGlvbmFyeS5sc3QgKHNpIG5vIGV4aXN0ZSksIGVzX0VTLmFmZiB5IGVzX0VTLmRpYyBhbCBkaXJlY3RvcmlvCnNlZ/puIHN1IHNpc3RlbWEgb3BlcmF0aXZvIHkgbGEgdmVyc2nzbiBkZSBPb29yZzoKCmM6XFByb2dyYW1hc1xPT28xMHhcdXNlclx3b3JkYm9va1wKbwovaG9tZS9PT28xMHgvdXNlci93b3JkYm9vay8KCiAgICoqIEVuIE9PbzEwMSwgZXMgcG9zaWJsZSBwYXJhIGVsIGFkbWluaXN0cmFkb3IgaW5zdGFsYXIgZGljY2lvbmFyaW9zCiAgIGFkaWNpb25hbGVzIGEgPC1uZXQgSW5zdGFsbD5cT09vMTAxXHNoYXJlXGRpY3Rcb29vXCBxdWUgcXVlZGFy4QogICBkaXNwb25pYmxlIHBhcmEgYWN0aXZhY2nzbiBlbiB0b2RvcyB1c3Vhcmlvcy4gTG9zIHVzdWFyaW9zLCBzaWVtcHJlCiAgIHB1ZWRhbiBh8WFkaXIgZGljY2lvbmFyaW9zIGEgc3UgXHVzZXJcd29yZGJvb2suCgoyLkVkaXRlICJkaWN0aW9uYXJ5LmxzdCIgZW4gZXN0ZSBkaXJlY3RvcmlvIGNvbiB1biBlZGl0b3IgZGUgdGV4dG8uClBhcmEgcmVnaXN0cmFyIHVuIGlkaW9tYSBlc3BlY+1maWNvLCBvIG36bHRpcGxlcywgYWdyZWd1ZSBs7W5lYXMKY29tbywgcG9yIGVqZW1wbG8sIGxvIHNpZ3VpZW50ZSBhICJkaWN0aW9uYXJ5LmxzdCI6CgojCkRJQ1QgZXMgVkUgZXNfRVMKSFlQSCBlcyBWRSBoeXBoX2VzX0VTCgoKMy5BaG9yYSwgYXJyYW5xdWUgT09vcmcuIFNpIGVzdGFiYSBlamVjdXRhbmRvIGVsIHByb2dyYW1hIG1pZW50cmFzCmhhY+1hIGxvIGFudGVyaW9yLCBjaWVycmUgdG9kYXMgbGFzIHZlbnRhbmFzLCBlbCBRdWlja3N0YXJ0ZXIKeSByZWhhZ2EgZWwgcGFzbyBu+m1lcm8gMiBkZSBhcnJpYmEgZW4gZWwgImRpY3Rpb25hcnkubHN0Ii4KCjQuQ29uZmlndXJhY2nzbiBkZSBJZGlvbWFzOgpDbGljIGVuIEhlcnJhbWllbnRhc3xPcGNpb25lc3xDb25maWd1cmFjafNuIGRlIGlkaW9tYXxJZGlvbWFzClNlbGVjY2lvbmUgSWRpb21hIFByZWRldGVybWluYWRvIGEgIkVzcGHxb2wgKEVzcGHxYSkiIG8gbGEgc3V5YS4KQ2xpYyBlbiBIZXJyYW1pZW50YXN8T3BjaW9uZXN8Q29uZmlndXJhY2nzbiBkZSBpZGlvbWF8TGluZ/ztc3RpY2EKCkVuIEVkaXRhciBN82R1bG9zIGRpc3BvbmlibGVzIGRlIGlkaW9tYSwgZW4gbGEgc2VjY2nzbiBJZGlvbWEKc2VsZWNjaW9uZSBFc3Bh8W9sIChFc3Bh8WEpIHkKbWFyY2FyICJbeF0gT3Blbk9mZmljZSBNeVNwZWxsIFNwZWxsQ2hlY2tlciIgcGFyYSBjYWRhIGlkaW9tYQppbnN0YWxhZG8gY29uIGVsIGZpbiBkZSBhY3RpdmFybG8uCgpPcHJpbWEgQ2VycmFyLgpTZWxlY2Npb25lIEFjZXB0YXIgcGFyYSBndWFyZGFyIHN1cyBjYW1iaW9zIHkKc2FsaXIgZGUgQ29uZmlndXJhY2nzbiBkZSBpZGlvbWEuCgogIKFMaXN0byEgU3UgZGljY2lvbmFyaW8gZXN04SBpbnN0YWxhZG8geSByZWdpc3RyYWRvIHBhcmEgZXNlIGlkaW9tYS4KU2kgc2lndWUgY29uIHByb2JsZW1hcywgbGVhIG90cmEgdmV6IGxhcyBpbnN0cnVjY2lvbmVzLiAgRXN0byBvY3VycmUKbXV5IGZyZWN1ZW50ZW1lbnRlIHBvcnF1ZSBPT29yZyBlc3RhYmEgYWN0aXZvIGN1YW5kbyBtb2RpZmljYSBlbApkaWN0aW9uYXJ5LmxzdApTaSB0b2RhdmlhIHRpZW5lcyBwcm9ibGVtYXMsIGVzY3LtYmFtZSBhIHVzZXJzQGVzLm9wZW5vZmZpY2Uub3JnCgoKUC4gRC46IFNpIGRlc2VhIGNyZWFyIHVuIGRpY2Npb25hcmlvIHBhcmEgc3Ugem9uYSBvIHBh7XMgc29sYW1lbnRlCnRpZW5lIHF1ZSBoYWNlciBsbyBzaWd1aWVudGU6CgpBc2lnbmFybG8gZW4gZWwgZGljdGlvbmFyeS5sc3QuIFNvbGFtZW50ZSBhc2lnbmEgbG9zIGxvY2FsZXMgcXVlCmFjdHVhbG1lbnRlIG5lY2VzaXRhcyBwb3IgcXVlIHNlIG9jdXBhbiBtZW1vcmlhIFJBTS4KCiAJRElDVCBlcyBBUiBlc19FUwogCURJQ1QgZXMgQk8gZXNfRVMKIAlESUNUIGVzIEJaIGVzX0VTCiAJRElDVCBlcyBDTyBlc19FUwogCURJQ1QgZXMgQ0wgZXNfRVMKIAlESUNUIGVzIENSIGVzX0VTCiAJRElDVCBlcyBDVSBlc19FUwogCURJQ1QgZXMgRE8gZXNfRVMKIAlESUNUIGVzIEVDIGVzX0VTCiAJRElDVCBlcyBTViBlc19FUwogCURJQ1QgZXMgR1UgZXNfRVMKIAlESUNUIGVzIEhOIGVzX0VTCiAJRElDVCBlcyBNWCBlc19FUwogCURJQ1QgZXMgTkkgZXNfRVMKIAlESUNUIGVzIFBBIGVzX0VTCiAJRElDVCBlcyBQWSBlc19FUwogCURJQ1QgZXMgUEUgZXNfRVMKIAlESUNUIGVzIFBSIGVzX0VTCiAJRElDVCBlcyBFUyBlc19FUwogCURJQ1QgZXMgVVkgZXNfRVMKIAlESUNUIGVzIFZFIGVzX0VTCioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKTG9zIHNpZ3VpZW50ZXMgc29uIGRpc3BvbmlibGVzOgplcyxBUixlc19FUyxFc3Bh8W9sIChBcmdlbnRpbmEpLGVzX0VTLnppcAplcyxCWixlc19FUyxFc3Bh8W9sIChCZWxpemUpLGVzX0VTLnppcAplcyxCTyxlc19FUyxFc3Bh8W9sIChCb2xpdmlhKSxlc19FUy56aXAKZXMsQ0wsZXNfRVMsRXNwYfFvbCAoQ2hpbGUpLGVzX0VTLnppcAplcyxDTyxlc19FUyxFc3Bh8W9sIChDb2xvbWJpYSksZXNfRVMuemlwCmVzLENSLGVzX0VTLEVzcGHxb2wgKENvc3RhIFJpY2EpLGVzX0VTLnppcAplcyxDVSxlc19FUyxFc3Bh8W9sIChDdWJhKSxlc19FUy56aXAKZXMsRE8sZXNfRVMsRXNwYfFvbCAoRG9taW5pY2FuIFJlcHVibGljKSxlc19FUy56aXAKZXMsRUMsZXNfRVMsRXNwYfFvbCAoRWN1YWRvciksZXNfRVMuemlwCmVzLFNWLGVzX0VTLEVzcGHxb2wgKEVsIFNhbHZhZG9yKSxlc19FUy56aXAKZXMsR1UsZXNfRVMsRXNwYfFvbCAoR3VhdGVtYWxhKSxlc19FUy56aXAKZXMsSE4sZXNfRVMsRXNwYfFvbCAoSG9uZHVyYXMpLGVzX0VTLnppcAplcyxNWCxlc19NWCxFc3Bh8W9sIChNZXhpY28pLGVzX01YLnppcAplcyxOSSxlc19FUyxFc3Bh8W9sIChOaWNhcmFndWEpLGVzX0VTLnppcAplcyxQQSxlc19FUyxFc3Bh8W9sIChQYW5hbWEpLGVzX0VTLnppcAplcyxQWSxlc19FUyxFc3Bh8W9sIChQYXJhZ3VheSksZXNfRVMuemlwCmVzLFBFLGVzX0VTLEVzcGHxb2wgKFBlcnUpLGVzX0VTLnppcAplcyxQUixlc19FUyxFc3Bh8W9sIChQdWVydG8gUmljbyksZXNfRVMuemlwCmVzLEVTLGVzX0VTLEVzcGHxb2wgKFNwYWluKSxlc19FUy56aXAKZXMsVVksZXNfRVMsRXNwYfFvbCAoVXJ1Z3VheSksZXNfRVMuemlwCmVzLFZFLGVzX0VTLEVzcGHxb2wgKFZlbmV6dWVsYSksZXNfRVMuemlwCnkKcG9yIHNlcGFyYWRvLCB0YW1iaWVuOgpjYSxFUyxjYV9FUyxDYXRhbGFuIChTcGFpbiksY2FfRVMuemlwCmdsLEVTLGdsX0VTLEdhbGljaWFuIChTcGFpbiksZ2xfRVMuemlwCgoJCQkJCUV4YW1wbGUgb2YgImRpY3Rpb25hcnkubHN0IgoKIyBMaXN0IG9mIEFsbCBEaWN0aW9uYXJpZXMgdG8gYmUgTG9hZGVkIGJ5IE9wZW5PZmZpY2UKIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIyBFYWNoIEVudHJ5IGluIHRoZSBsaXN0IGhhdmUgdGhlIGZvbGxvd2luZyBzcGFjZSBkZWxpbWl0ZWQgZmllbGRzCiMKIyBGaWVsZCAxOiBFbnRyeSBUeXBlICJESUNUIiAtIHNwZWxsY2hlY2tpbmcgZGljdGlvbmFyeQojICAgICAgICAgICAgICAgICAgICAgIkhZUEgiIC0gaHlwaGVuYXRpb24gZGljdGlvbmFyeQojCiMgRmllbGQgMjogTGFuZ3VhZ2UgY29kZSBmcm9tIExvY2FsZSAiZW4iIG9yICJkZSIgb3IgInB0IiAuLi4KIwojIEZpZWxkIDM6IENvdW50cnkgQ29kZSBmcm9tIExvY2FsZSAiVVMiIG9yICJHQiIgb3IgIlBUIgojCiMgRmllbGQgNDogUm9vdCBuYW1lIG9mIGZpbGUocykgImVuX1VTIiBvciAiaHlwaF9kZSIKIyAgICAgICAgICAoZG8gbm90IGFkZCBleHRlbnNpb25zIHRvIHRoZSBuYW1lKQoKRElDVCBlcyBFUyBlc19FUwpESUNUIGVzIFZFIGVzX0VTCkhZUEggZXMgRVMgaHlwaF9lc19FUwpIWVBIIGVzIFZFIGh5cGhfZXNfRVMK