ICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQVByb3h5CiAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hbnVlbCBkZSBy6WbpcmVuY2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uIDEuMy4yCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbGx5IHRhcnJlYXUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMDA2LzA5LzAzCgo9PT09PT09PT09PT09PT09CnwgSW50cm9kdWN0aW9uIHwKPT09PT09PT09PT09PT09PQoKSEFQcm94eSBlc3QgdW4gcmVsYWlzIFRDUC9IVFRQIG9mZnJhbnQgZGVzIGZhY2lsaXTpcyBkJ2ludOlncmF0aW9uIGVuCmVudmlyb25uZW1lbnQgaGF1dGVtZW50IGRpc3BvbmlibGUuIEVuIGVmZmV0LCBpbCBlc3QgY2FwYWJsZSBkZSA6CiAgLSBlZmZlY3R1ZXIgdW4gYWlndWlsbGFnZSBzdGF0aXF1ZSBk6WZpbmkgcGFyIGRlcyBjb29raWVzIDsKICAtIGVmZmVjdHVlciB1bmUgculwYXJ0aXRpb24gZGUgY2hhcmdlIGF2ZWMgY3LpYXRpb24gZGUgY29va2llcyBwb3VyIGFzc3VyZXIKICAgIGxhIHBlcnNpc3RlbmNlIGRlIHNlc3Npb24gOyAKICAtIGZvdXJuaXIgdW5lIHZpc2liaWxpdOkgZXh0ZXJuZSBkZSBzb24g6XRhdCBkZSBzYW506SA7CiAgLSBzJ2Fycup0ZXIgZW4gZG91Y2V1ciBzYW5zIHBlcnRlIGJydXRhbGUgZGUgc2VydmljZSA7CiAgLSBtb2RpZmllci9ham91dGVyL3N1cHByaW1lciBkZXMgZW4tdOp0ZXMgZGFucyBsYSByZXF16nRlIGV0IGxhIHLpcG9uc2UgOwogIC0gaW50ZXJkaXJlIGRlcyByZXF16nRlcyBxdWkgdulyaWZpZW50IGNlcnRhaW5lcyBjb25kaXRpb25zIDsKICAtIHV0aWxpc2VyIGRlcyBzZXJ2ZXVycyBkZSBzZWNvdXJzIGxvcnNxdWUgbGVzIHNlcnZldXJzIHByaW5jaXBhdXggc29udCBob3JzCiAgICBkJ3VzYWdlLgogIC0gbWFpbnRlbmlyIGRlcyBjbGllbnRzIHN1ciBsZSBib24gc2VydmV1ciBzZXJ2ZXVyIGQnYXBwbGljYXRpb24gZW4gZm9uY3Rpb24KICAgIGRlIGNvb2tpZXMgYXBwbGljYXRpZnMuCiAgLSBmb3VybmlyIGRlcyByYXBwb3J0cyBkJ+l0YXQgZW4gSFRNTCDgIGRlcyB1dGlsaXNhdGV1cnMgYXV0aGVudGlmaelzLCDgCiAgICB0cmF2ZXJzIGRlcyBVUkkgZGUgbCdhcHBsaWNhdGlvbiBpbnRlcmNlcHTpZXMuCgpJbCByZXF1aWVydCBwZXUgZGUgcmVzc291cmNlcywgZXQgc29uIGFyY2hpdGVjdHVyZSDpduluZW1lbnRpZWxsZSBtb25vLQpwcm9jZXNzdXMgbHVpIHBlcm1ldCBmYWNpbGVtZW50IGRlIGfpcmVyIHBsdXNpZXVycyBtaWxsaWVycyBkZSBjb25uZXhpb25zCnNpbXVsdGFu6WVzIHN1ciBwbHVzaWV1cnMgcmVsYWlzIHNhbnMgZWZmb25kcmVyIGxlIHN5c3TobWUuCgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09CnwgUGFyYW3odHJlcyBkZSBsYW5jZW1lbnQgfAo9PT09PT09PT09PT09PT09PT09PT09PT09PT0KCkxlcyBvcHRpb25zIGRlIGxhbmNlbWVudCBzb250IHBldSBub21icmV1c2VzIDoKCiAgICAtZiA8ZmljaGllciBkZSBjb25maWd1cmF0aW9uPgogICAgLW4gPG5vbWJyZSBtYXhpbWFsIHRvdGFsIGRlIGNvbm5leGlvbnMgc2ltdWx0YW7pZXM+CiAgICAgICA9ICdtYXhjb25uJyBkYW5zIGxhIHNlY3Rpb24gJ2dsb2JhbCcKICAgIC1OIDxub21icmUgbWF4aW1hbCBkZSBjb25uZXhpb25zIHNpbXVsdGFu6WVzIHBhciBpbnN0YW5jZT4KICAgICAgID0gJ21heGNvbm4nIGRhbnMgbGVzIHNlY3Rpb25zICdsaXN0ZW4nIG91ICdkZWZhdWx0JwogICAgLWQgYWN0aXZlIGxlIG1vZGUgZGVidWcKICAgIC1EIHBhc3NlIGVuIGRhZW1vbgogICAgLXEgZOlzYWN0aXZlIGwnYWZmaWNoYWdlIGRlIG1lc3NhZ2VzIHN1ciBsYSBzb3J0aWUgc3RhbmRhcmQuCiAgICAtViBhZmZpY2hlIGxlcyBtZXNzYWdlcyBzdXIgbGEgc29ydGllIHN0YW5kYXJkLCBt6m1lIHNpIC1xIG91ICdxdWlldCcgc29udAogICAgICAgc3DpY2lmaelzLgogICAgLWMgdulyaWZpZSBsZSBmaWNoaWVyIGRlIGNvbmZpZ3VyYXRpb24gcHVpcyBxdWl0dGUgYXZlYyB1biBjb2RlIGRlIHJldG91ciAwCiAgICAgICBzaSBhdWN1bmUgZXJyZXVyIG4nYSDpdOkgdHJvdXbpZSwgb3UgMSBzaSB1bmUgZXJyZXVyIGRlIHN5bnRheGUgYSDpdOkKICAgICAgIGTpdGVjdOllLgogICAgLXAgPGZpY2hpZXI+IGluZGlxdWUgYXUgcHJvY2Vzc3VzIHDocmUgcXUnaWwgZG9pdCDpY3JpcmUgbGVzIFBJRHMgZGUgc2VzCiAgICAgICBmaWxzIGRhbnMgY2UgZmljaGllciBlbiBtb2RlIGTpbW9uLgogICAgLXNmIHNwZWNpZmllIHVuZSBsaXN0ZSBkZSBQSURzIGF1eHF1ZWxzIGVudm95ZXIgdW4gc2lnbmFsIEZJTklTSAogICAgLXN0IHNwZWNpZmllIHVuZSBsaXN0ZSBkZSBQSURzIGF1eHF1ZWxzIGVudm95ZXIgdW4gc2lnbmFsIFRFUk1JTkFURQogICAgLXMgYWZmaWNoZSBsZXMgc3RhdGlzdGlxdWVzIChzaSBvcHRpb24gY29tcGls6WUpCiAgICAtbCBham91dGUgZGVzIGluZm9ybWF0aW9ucyBhdXggc3RhdGlzdGlxdWVzCiAgICAtZGsgZOlzYWN0aXZlIGwndXRpbGlzYXRpb24gZGUga3F1ZXVlKCkKICAgIC1kcyBk6XNhY3RpdmUgbCd1dGlsaXNhdGlvbiBkZSBlcG9sbCgpIHNwZWN1bGF0aWYKICAgIC1kZSBk6XNhY3RpdmUgbCd1dGlsaXNhdGlvbiBkZSBlcG9sbCgpCiAgICAtZHAgZOlzYWN0aXZlIGwndXRpbGlzYXRpb24gZGUgcG9sbCgpCiAgICAtZGIgZOlzYWN0aXZlIGxhIG1pc2UgZW4gYXJyaehyZS1wbGFuICh1dGlsZSBwb3VyIGTpYnVnZ2VyKQogICAgLW0gPG1lZ3M+IGFwcGxpcXVlIHVuZSBsaW1pdGF0aW9uIGRlIDxtZWdzPiBNbyBkJ3V0aWxpc2F0aW9uIG3pbW9pcmUKCkxlIG5vbWJyZSBtYXhpbWFsIGRlIGNvbm5leGlvbiBzaW11bHRhbullcyBwYXIgcHJveHkgZXN0IGxlIHBhcmFt6HRyZSBwYXIKZOlmYXV0IHBvdXIgbGVzIHByb3hpZXMgcG91ciBsZXNxdWVscyBjZSBwYXJhbeh0cmUgbidlc3QgcGFzIHBy6WNpc+kgZGFucyBsZQpmaWNoaWVyIGRlIGNvbmZpZ3VyYXRpb24uIElsIHMnYWdpdCBkdSBwYXJhbeh0cmUgJ21heGNvbm4nIGRhbnMgbGVzIHNlY3Rpb25zCidsaXN0ZW4nLgoKTGUgbm9tYnJlIG1heGltYWwgdG90YWwgZGUgY29ubmV4aW9ucyBzaW11bHRhbullcyBsaW1pdGUgbGUgbm9tYnJlIGRlCmNvbm5leGlvbnMgVENQIHV0aWxpc2FibGVzIOAgdW4gaW5zdGFudCBkb25u6SBwYXIgbGUgcHJvY2Vzc3VzLCB0b3VzIHByb3hpZXMKY29uZm9uZHVzLiBDZSBwYXJhbeh0cmUgcmVtcGxhY2UgbGUgcGFyYW3odHJlICdtYXhjb25uJyBkZSBsYSBzZWN0aW9uICdnbG9iYWwnLgoKTGUgbW9kZSBkZWJ1ZyBjb3JyZXNwb25kIOAgbCdvcHRpb24gJ2RlYnVnJyBkZSBsYSBzZWN0aW9uICdnbG9iYWwnLiBEYW5zIGNlCm1vZGUsIHRvdXRlcyBsZXMgY29ubmV4aW9ucywgZOljb25uZXhpb25zLCBldCB0b3VzIGxlcyDpY2hhbmdlcyBkJ2VuLXTqdGVzIEhUVFAKc29udCBhZmZpY2jpcy4KClBvdXIgZGVidWdnZXIsIGwnb3B0aW9uICctZGInIGVzdCB0cuhzIHByYXRpcXVlIGNhciBlbGxlIGTpc2FjdGl2ZQp0ZW1wb3JhaXJlbWVudCBsZSBtb2RlIGRhZW1vbiBldCBsZSBtb2RlIG11bHRpLXByb2Nlc3N1cy4gTGUgc2VydmljZSBwZXV0IGFsb3JzCup0cmUgYXJy6nTpIHBhciB1biBzaW1wbGUgYXBwdWkgc3VyIEN0cmwtQywgc2FucyBhdm9pciDgIG1vZGlmaWVyIGxhCmNvbmZpZ3VyYXRpb24gbmkg4CBhY3RpdmVyIGxlIG1vZGUgZGVidWcgY29tcGxldC4KCkxlcyBzdGF0aXN0aXF1ZXMgbmUgc29udCBkaXNwb25pYmxlcyBxdWUgc2kgbGUgcHJvZ3JhbW1lIGEg6XTpIGNvbXBpbOkgYXZlYwpsJ29wdGlvbiAiU1RBVFRJTUUiLiBJbCBzJ2FnaXQgcHJpbmNpcGFsZW1lbnQgZGUgZG9ubullcyBicnV0ZXMgbidheWFudApkJ3V0aWxpdOkgcXVlIGxvcnMgZGUgYmVuY2htYXJrcyBwYXIgZXhlbXBsZSwgZXQgc29udCBhbWVu6WVzIOAgZGlzcGFyYWl0cmUuCgpMZXMgcGFyYW3odHJlcyAnLXN0JyBldCAnLXNmJyBzb250IHV0aWxpc+lzIHBvdXIgbGEgcmVjb25maWd1cmF0aW9uIOAgY2hhdWQuClZvaXIgbGEgc2VjdGlvbiDgIGNlIHN1amV0LgoKPT09PT09PT09PT09PT09PT09PT09PT09PT09PQp8IEZpY2hpZXIgZGUgY29uZmlndXJhdGlvbiB8Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT0KClN0cnVjdHVyZQo9PT09PT09PT0KCkwnYW5hbHlzZXVyIGR1IGZpY2hpZXIgZGUgY29uZmlndXJhdGlvbiBpZ25vcmUgZGVzIGxpZ25lcyB2aWRlcywgbGVzIGVzcGFjZXMsCmxlcyB0YWJ1bGF0aW9ucywgZXQgdG91dCBjZSBxdWkgZXN0IGNvbXByaXMgZW50cmUgbGUgc3ltYm9sZSAnIycgKHMnaWwgbidlc3QKcGFzIHBy6WPpZOkgZCd1biAnXCcpLCBldCBsYSBmaW4gZGUgbGEgbGlnbmUsIGNlIHF1aSBjb25zdGl0dWUgdW4gY29tbWVudGFpcmUuCgpMZSBmaWNoaWVyIGRlIGNvbmZpZ3VyYXRpb24gZXN0IGTpY291cOkgZW4gc2VjdGlvbnMgculw6XLpZXMgcGFyIGRlcyBtb3RzIGNs6XMKdGVscyBxdWUgOgoKICAtICdnbG9iYWwnCiAgLSAnbGlzdGVuJwogIC0gJ2RlZmF1bHRzJwoKVG91cyBsZXMgcGFyYW3odHJlcyBmb250IHLpZulyZW5jZSDgIGxhIHNlY3Rpb24gZOlmaW5pZSBwYXIgbGUgZGVybmllciBtb3QgY2zpCnJlY29ubnUuCgoKMSkgUGFyYW3odHJlcyBnbG9iYXV4Cj09PT09PT09PT09PT09PT09PT09PQoKSWwgcydhZ2l0IGRlcyBwYXJhbeh0cmVzIGFnaXNzYW50IHN1ciBsZSBwcm9jZXNzdXMsIG91IGJpZW4gc3VyIGwnZW5zZW1ibGUgZGVzCnByb3hpZXMuIElscyBzb250IHRvdXMgc3DpY2lmaelzIGRhbnMgbGEgc2VjdGlvbiAnZ2xvYmFsJy4gTGVzIHBhcmFt6HRyZXMKc3VwcG9ydOlzIHNvbnQgOgoKICAtIGxvZyA8YWRyZXNzZT4gPGNhdOlnb3JpZT4gW25pdmVhdV9tYXhdCiAgLSBtYXhjb25uIDxub21icmU+CiAgLSB1aWQgPGlkZW50aWZpYW50PgogIC0gZ2lkIDxpZGVudGlmaWFudD4KICAtIHVzZXIgPG5vbSBkJ3V0aWxpc2F0ZXVyPgogIC0gZ3JvdXAgPG5vbSBkZSBncm91cGU+CiAgLSBjaHJvb3QgPHLpcGVydG9pcmU+CiAgLSBuYnByb2MgPG5vbWJyZT4KICAtIGRhZW1vbgogIC0gZGVidWcKICAtIG5va3F1ZXVlCiAgLSBub3NlcG9sbAogIC0gbm9lcG9sbAogIC0gbm9wb2xsCiAgLSBxdWlldAogIC0gcGlkZmlsZSA8ZmljaGllcj4KICAtIHVsaW1pdC1uIDxub21icmU+CiAgLSB0dW5lLm1heHBvbGxldmVudHMgPG5vbWJyZT4KCgoxLjEpIEpvdXJuYWxpc2F0aW9uIGRlcyDpduluZW1lbnRzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KTGEgcGx1cGFydCBkZXMg6XbpbmVtZW50cyBzb250IGpvdXJuYWxpc+lzIDogZOltYXJyYWdlcywgYXJy6nRzLCBkaXNwYXJpdGlvbiBldAphcHBhcml0aW9uIGRlIHNlcnZldXJzLCBjb25uZXhpb25zLCBlcnJldXJzLiBUb3VzIGxlcyBtZXNzYWdlcyBzb250IGVudm956XMgZW4Kc3lzbG9nIHZlcnMgdW4gb3UgZGV1eCBzZXJ2ZXVycy4gTGEgc3ludGF4ZSBlc3QgbGEgc3VpdmFudGUgOgoKICAgIGxvZyA8YWRyZXNzZV9pcD4gPGNhdOlnb3JpZT4gW25pdmVhdV9tYXhdCgpMZXMgY29ubmV4aW9ucyBzb250IGVudm956WVzIGVuIG5pdmVhdSAiaW5mbyIuIExlcyBk6W1hcnJhZ2VzIGRlIHNlcnZpY2UgZXQgZGUKc2VydmV1cnMgc2Vyb250IGVudm956XMgZW4gIm5vdGljZSIsIGxlcyBzaWduYXV4IGQnYXJy6nRzIGVuICJ3YXJuaW5nIiBldCBsZXMKYXJy6nRzIGTpZmluaXRpZnMgZGUgc2VydmljZXMgZXQgZGUgc2VydmV1cnMgZW4gImFsZXJ0Ii4gQ2VjaSBlc3QgdmFsYWJsZSBhdXNzaQpiaWVuIHBvdXIgbGVzIHByb3hpZXMgcXVlIHBvdXIgbGVzIHNlcnZldXJzIHRlc3TpcyBwYXIgbGVzIHByb3hpZXMuIExlCnBhcmFt6HRyZSBvcHRpb25uZWwgPG5pdmVhdV9tYXg+IGTpZmluaXQgbGUgbml2ZWF1IG1heGltYWwgZGUgdHJhY2VzIOltaXNlcwpwYXJtaSBsZXMgOCB2YWxldXJzIHN1aXZhbnRlcyAgOgogICAgZW1lcmcsIGFsZXJ0LCBjcml0LCBlcnIsIHdhcm5pbmcsIG5vdGljZSwgaW5mbywgZGVidWcKClBhciBjb21wYXRpYmlsaXTpIGF2ZWMgbGVzIHZlcnNpb25zIDEuMS4xNiBldCBhbnTpcmlldXJlcywgbGEgdmFsZXVyIHBhciBk6WZhdXQKZXN0ICJkZWJ1ZyIgc2kgbCdvcHRpb24gbidlc3QgcGFzIHBy6WNpc+llLgoKTGVzIGNhdOlnb3JpZXMgcG9zc2libGVzIHNvbnQgOgogICAga2VybiwgdXNlciwgbWFpbCwgZGFlbW9uLCBhdXRoLCBzeXNsb2csIGxwciwgbmV3cywKICAgIHV1Y3AsIGNyb24sIGF1dGgyLCBmdHAsIG50cCwgYXVkaXQsIGFsZXJ0LCBjcm9uMiwKICAgIGxvY2FsMCwgbG9jYWwxLCBsb2NhbDIsIGxvY2FsMywgbG9jYWw0LCBsb2NhbDUsIGxvY2FsNiwgbG9jYWw3CgpDb25mb3Jt6W1lbnQg4CBsYSBSRkMzMTY0LCBsZXMgbWVzc2FnZXMg6W1pcyBzb250IGxpbWl06XMg4CAxMDI0IGNhcmFjdOhyZXMuCgpFeGVtcGxlIDoKLS0tLS0tLS0tCiAgICBnbG9iYWwKICAgICAgICBsb2cgMTkyLjE2OC4yLjIwMCBsb2NhbDMKICAgICAgICBsb2cgMTI3LjAuMC4xICAgICBsb2NhbDQgbm90aWNlCgoxLjIpIGxpbWl0YXRpb24gZHUgbm9tYnJlIGRlIGNvbm5leGlvbnMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCklsIGVzdCBwb3NzaWJsZSBldCBjb25zZWlsbOkgZGUgbGltaXRlciBsZSBub21icmUgZ2xvYmFsIGRlIGNvbm5leGlvbnMgcGFyCnByb2Nlc3N1cyDgIGwnYWlkZSBkdSBtb3QgY2zpIGdsb2JhbCAnbWF4Y29ubicuIExlcyBjb25uZXhpb25zIHNvbnQgY29tcHJpc2VzCmF1IHNlbnMgJ2FjY2VwdGF0aW9uIGRlIGNvbm5leGlvbicsIGRvbmMgaWwgZmF1dCBzJ2F0dGVuZHJlIGVuIHLoZ2xlIGfpbulyYWwg4Aphdm9pciB1biBwZXUgcGx1cyBkdSBkb3VibGUgZGUgc2Vzc2lvbnMgVENQIHF1ZSBsZSBtYXhpbXVtIGRlIGNvbm5leGlvbnMgZml46S4KQydlc3QgaW1wb3J0YW50IHBvdXIgZml4ZXIgbGUgcGFyYW3odHJlICd1bGltaXQgLW4nIGF2YW50IGRlIGxhbmNlciBsZSBwcm94eS4KUG91ciBjb21wdGFiaWxpc2VyIGxlIG5vbWJyZSBkZSBzb2NrZXRzIG7pY2Vzc2FpcmVzLCBpbCBmYXV0IHByZW5kcmUgZW4gY29tcHRlCmNlcyBwYXJhbeh0cmVzIDoKCiAgLSAxIHNvY2tldCBwYXIgY29ubmV4aW9uIGVudHJhbnRlCiAgLSAxIHNvY2tldCBwYXIgY29ubmV4aW9uIHNvcnRhbnRlCiAgLSAxIHNvY2tldCBwYXIgY291cGxlIGFkcmVzc2UvcG9ydCBkJ+ljb3V0ZSBwYXIgcHJveHkKICAtIDEgc29ja2V0IHBvdXIgY2hhcXVlIHNlcnZldXIgZW4gY291cnMgZGUgaGVhbHRoLWNoZWNrCiAgLSAxIHNvY2tldCBwb3VyIGxlcyBsb2dzICh0b3VzIHNlcnZldXJzIGNvbmZvbmR1cykKCkRhbnMgbGUgY2FzIG/5IGNoYXF1ZSBwcm94eSBuJ+ljb3V0ZSBxdWUgc3VyIHVuIGNvdXBsZSBhZHJlc3NlL3BvcnQsCnBvc2l0aW9ubmVyIGxhIGxpbWl0ZSBkdSBub21icmUgZGUgZGVzY3JpcHRldXJzIGRlIGZpY2hpZXJzICh1bGltaXQgLW4pIOAgCigyICogbWF4Y29ubiArIG5icHJveHkgKyBuYnNlcnZldXJzICsgMSkuIEEgcGFydGlyIGRlcyB2ZXJzaW9ucyAxLjEuMzIvMS4yLjYsCmlsIGVzdCBwb3NzaWJsZSBkZSBzcOljaWZpZXIgY2V0dGUgbGltaXRlIGRhbnMgbGEgY29uZmlndXJhdGlvbiDgIGwnYWlkZSBkdQptb3QtY2zpIGdsb2JhbCAndWxpbWl0LW4nLCDgIGNvbmRpdGlvbiBiaWVuIGVudGVuZHUgcXVlIGxlIHByb3h5IGFpdCDpdOkKZOltYXJy6SBzb3VzIGxlIGNvbXB0ZSByb290IChvdSBhdmVjIGRlcyBkcm9pdHMgc3VmZmlzYW50cyBwb3VyIOlsZXZlciBsZQpub21icmUgZGUgZGVzY3JpcHRldXJzIGRlIGZpY2hpZXJzKS4gQ2V0dGUgc29sdXRpb24gbWV0IHVuIHRlcm1lIGF1IHByb2Js6G1lCnLpY3VycmVudCBkJ2luY2VydGl0dWRlIGRlIGwnYWTpcXVhdGlvbiBlbnRyZSBsZXMgbGltaXRlcyBzeXN06G1lcyBsb3JzIGRlIGxhCmRlcm5p6HJlIHJlbGFuY2UgZHUgcHJveGVzc3VzIGV0IGxlcyBsaW1pdGVzIGVuIG5vbWJyZSBkZSBjb25uZXhpb25zLiBOb3RlciBxdWUKY2V0dGUgbGltaXRlIHMnYXBwbGlxdWUgcGFyIHByb2Nlc3N1cy4KCkV4ZW1wbGUgOgotLS0tLS0tLS0KICAgIGdsb2JhbAogICAgICAgIG1heGNvbm4gMzIwMDAKICAgICAgICB1bGltaXQtbiA2NTUzNgoKCjEuMykgRGltaW51dGlvbiBkZXMgcHJpdmls6GdlcwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQWZpbiBkZSBy6WR1aXJlIGxlcyByaXNxdWVzIGQnYXR0YXF1ZXMgZGFucyBsZSBjYXMgb/kgdW5lIGZhaWxsZSBub24gaWRlbnRpZmnpZQpzZXJhaXQgZXhwbG9pdOllLCBpbCBlc3QgcG9zc2libGUgZGUgZGltaW51ZXIgbGVzIHByaXZpbOhnZXMgZHUgcHJvY2Vzc3VzLCBldApkZSBsJ2lzb2xlciBkYW5zIHVuIHLpcGVydG9pcmUgc2FucyByaXNxdWUuCgpEYW5zIGxhIHNlY3Rpb24gJ2dsb2JhbCcsIGxlIHBhcmFt6HRyZSAndWlkJyBwZXJtZXQgZGUgc3DpY2lmaWVyIHVuIGlkZW50aWZpYW50Cm51belyaXF1ZSBkJ3V0aWxpc2F0ZXVyLiBMYSB2YWxldXIgMCwgY29ycmVzcG9uZGFudCBub3JtYWxlbWVudCBhdSBzdXBlci0KdXRpbGlzYXRldXIsIHBvc3PoZGUgaWNpIHVuZSBzaWduaWZpY2F0aW9uIHBhcnRpY3VsaehyZSBjYXIgZWxsZSBpbmRpcXVlIHF1ZQpsJ29uIG5lIHNvdWhhaXRlIHBhcyBjaGFuZ2VyIGNldCBpZGVudGlmaWFudCBldCBjb25zZXJ2ZXIgbGEgdmFsZXVyIGNvdXJhbnRlLgpDJ2VzdCBsYSB2YWxldXIgcGFyIGTpZmF1dC4gRGUgbGEgbeptZSBtYW5p6HJlLCBsZSBwYXJhbeh0cmUgJ2dpZCcgY29ycmVzcG9uZCDgCnVuIGlkZW50aWZpYW50IGRlIGdyb3VwZSwgZXQgdXRpbGlzZSBwYXIgZOlmYXV0IGxhIHZhbGV1ciAwIHBvdXIgbmUgcmllbgpjaGFuZ2VyLiBEYW5zIGxlIGNhcyBv+SBpbCBuZSBzZXJhaXQgcGFzIHBvc3NpYmxlIGRlIHNw6WNpZmllciB1biBpZGVudGlmaWFudApudW3pcmlxdWUgcG91ciBsJ3VpZCwgaWwgZXN0IHBvc3NpYmxlIGRlIHNw6WNpZmllciB1biBub20gZCd1dGlsaXNhdGV1ciBhcHLocwpsZSBtb3QtY2zpICd1c2VyJy4gRGUgbGEgbeptZSBtYW5p6HJlLCBpbCBlc3QgcG9zc2libGUgZGUgcHLpY2lzZXIgdW4gbm9tIGRlCmdyb3VwZSBhcHLocyBsZSBtb3QtY2zpICdncm91cCcuCgpJbCBlc3QgcGFydGljdWxp6HJlbWVudCBk6WNvbnNlaWxs6SBkJ3V0aWxpc2VyIGRlcyBjb21wdGVzIGfpbulyaXF1ZXMgdGVscyBxdWUKJ25vYm9keScgY2FyIGNldHRlIHByYXRpcXVlIHJldmllbnQg4CB1dGlsaXNlciAncm9vdCcgc2kgZCdhdXRyZXMgcHJvY2Vzc3VzCnV0aWxpc2VudCBsZXMgbeptZXMgaWRlbnRpZmlhbnRzLgoKTGUgcGFyYW3odHJlICdjaHJvb3QnIGF1dG9yaXNlIOAgY2hhbmdlciBsYSByYWNpbmUgZHUgcHJvY2Vzc3VzIHVuZSBmb2lzIGxlCnByb2dyYW1tZSBsYW5j6SwgZGUgc29ydGUgcXVlIG5pIGxlIHByb2Nlc3N1cywgbmkgbCd1biBkZSBzZXMgZGVzY2VuZGFudHMgbmUKcHVpc3NlbnQgcmVtb250ZXIgZGUgbm91dmVhdSDgIGxhIHJhY2luZS4gQ2UgdHlwZSBkZSBjbG9pc29ubmVtZW50IChjaHJvb3QpIGVzdApn6W7pcmFsZW1lbnQgY29udG91cm5hYmxlIHN1ciBjZXJ0YWlucyBPUyAoTGludXgsIFNvbGFyaXMpIHBvdXIgcGV1IHF1ZQpsJ2F0dGFxdWFudCBwb3Nz6GRlIGRlcyBkcm9pdHMgJ3Jvb3QnIGV0IHNvaXQgZW4gbWVzdXJlIGQndXRpbGlzZXIgb3UgZGUgY3LpZXIKdW4gculwZXJ0b2lyZS4gQXVzc2ksIGlsIGVzdCBpbXBvcnRhbnQgZCd1dGlsaXNlciB1biBy6XBlcnRvaXJlIHNw6WNpZmlxdWUgYXUKc2VydmljZSBwb3VyIGNldCB1c2FnZSwgZXQgZGUgbmUgcGFzIG11dHVhbGlzZXIgdW4gbeptZSBy6XBlcnRvaXJlIHBvdXIKcGx1c2lldXJzIHNlcnZpY2VzIGRlIG5hdHVyZSBkaWZm6XJlbnRlLiBQb3VyIHJlbmRyZSBsJ2lzb2xlbWVudCBwbHVzIHJvYnVzdGUsCmlsIGVzdCBjb25zZWlsbOkgZCd1dGlsaXNlciB1biBy6XBlcnRvaXJlIHZpZGUsIHNhbnMgYXVjdW4gZHJvaXQsIGV0IGRlIGNoYW5nZXIKbCd1aWQgZHUgcHJvY2Vzc3VzIGRlIHNvcnRlIHF1J2lsIG5lIHB1aXNzZSByaWVuIGZhaXJlIGRhbnMgbGVkaXQgculwZXJ0b2lyZS4KClJlbWFycXVlIGltcG9ydGFudGUgOgotLS0tLS0tLS0tLS0tLS0tLS0tLS0KRGFucyBsZSBjYXMgb/kgdW5lIHRlbGxlIGZhaWxsZSBzZXJhaXQgbWlzZSBlbiDpdmlkZW5jZSwgaWwgZXN0IGZvcnQgcHJvYmFibGUKcXVlIGxlcyBwcmVtaehyZXMgdGVudGF0aXZlcyBkZSBzb24gZXhwbG9pdGF0aW9uIHByb3ZvcXVlbnQgdW4gYXJy6nQgZHUKcHJvZ3JhbW1lLCDgIGNhdXNlIGQndW4gc2lnbmFsIGRlIHR5cGUgJ1NlZ21lbnRhdGlvbiBGYXVsdCcsICdCdXMgRXJyb3InIG91CmVuY29yZSAnSWxsZWdhbCBJbnN0cnVjdGlvbicuIE3qbWUgcydpbCBlc3QgdnJhaSBxdWUgZmFpcmUgdG91cm5lciBsZSBzZXJ2ZXVyCmVuIGVudmlyb25uZW1lbnQgbGltaXTpIHLpZHVpdCBsZXMgcmlzcXVlcyBkJ2ludHJ1c2lvbiwgaWwgZXN0IHBhcmZvaXMgYmllbgp1dGlsZSBkYW5zIGNlcyBjaXJjb25zdGFuY2VzIGRlIGNvbm5h7nRyZSBsZXMgY29uZGl0aW9ucyBkJ2FwcGFyaXRpb24gZHUKcHJvYmzobWUsIHZpYSBsJ29idGVudGlvbiBkJ3VuIGZpY2hpZXIgJ2NvcmUnLiBMYSBwbHVwYXJ0IGRlcyBzeXN06G1lcywgcG91cgpkZXMgcmFpc29ucyBkZSBz6WN1cml06SwgZOlzYWN0aXZlbnQgbGEgZ+lu6XJhdGlvbiBkdSBmaWNoaWVyICdjb3JlJyBhcHLocyB1bgpjaGFuZ2VtZW50IGQnaWRlbnRpZmlhbnQgcG91ciBsZSBwcm9jZXNzdXMuIElsIGZhdWRyYSBkb25jIHNvaXQgbGFuY2VyIGxlCnByb2Nlc3N1cyDgIHBhcnRpciBkJ3VuIGNvbXB0ZSB1dGlsaXNhdGV1ciBhdXggZHJvaXRzIHLpZHVpdHMgKG1haXMgbmUgcG91dmFudApwYXMgZWZmZWN0dWVyIGxlIGNocm9vdCksIG91IGJpZW4gbGUgZmFpcmUgZW4gcm9vdCBzYW5zIHLpZHVjdGlvbiBkZXMgZHJvaXRzCih1aWQgMCkuIERhbnMgY2UgY2FzLCBsZSBmaWNoaWVyIHNlIHRyb3V2ZXJhIHNvaXQgZGFucyBsZSBy6XBlcnRvaXJlIGRlCmxhbmNlbWVudCwgc29pdCBkYW5zIGxlIHLpcGVydG9pcmUgc3DpY2lmaekgYXBy6HMgbCdvcHRpb24gJ2Nocm9vdCcuIE5lIHBhcwpvdWJsaWVyIGxhIGNvbW1hbmRlIHN1aXZhbnRlIHBvdXIgYXV0b3Jpc2VyIGxhIGfpbulyYXRpb24gZHUgZmljaGllciBhdmFudCBkZQpsYW5jZXIgbGUgcHJvZ3JhbW1lIDoKCiMgdWxpbWl0IC1jIHVubGltaXRlZAoKRXhlbXBsZSA6Ci0tLS0tLS0tLQoKICAgICMgd2l0aCB1aWQvZ2lkCiAgICBnbG9iYWwKICAgICAgICB1aWQgICAgICAgIDMwMDAwCiAgICAgICAgZ2lkICAgICAgICAzMDAwMAogICAgICAgIGNocm9vdCAgL3Zhci9jaHJvb3QvaGFwcm94eQoKICAgICMgd2l0aCB1c2VyL2dyb3VwCiAgICBnbG9iYWwKICAgICAgICB1c2VyICAgIGhhcHJveHkKICAgICAgICBncm91cCAgIHB1YmxpYwogICAgICAgIGNocm9vdCAgL3Zhci9jaHJvb3QvaGFwcm94eQoKCjEuNCkgTW9kZXMgZGUgZm9uY3Rpb25uZW1lbnQKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpMZSBzZXJ2aWNlIHBldXQgZm9uY3Rpb25uZXIgZGFucyBwbHVzaWV1cnMgbW9kZXMgOgogIC0gYXZhbnQtIC8gYXJyaehyZS1wbGFuCiAgLSBzaWxlbmNpZXV4IC8gbm9ybWFsIC8gZGVidWcKCkxlIG1vZGUgcGFyIGTpZmF1dCBlc3Qgbm9ybWFsLCBhdmFudC1wbGFuLCBjJ2VzdCDgIGRpcmUgcXVlIGxlIHByb2dyYW1tZSBuZQpyZW5kIHBhcyBsYSBtYWluIHVuZSBmb2lzIGxhbmPpLiBJbCBuZSBmYXV0IHN1cnRvdXQgcGFzIGxlIGxhbmNlciBjb21tZSBjZWNpCmRhbnMgdW4gc2NyaXB0IGRlIGTpbWFycmFnZSBkdSBzeXN06G1lLCBzaW5vbiBsZSBzeXN06G1lIG5lIGZpbmlyYWl0IHBhcyBzb24KaW5pdGlhbGlzYXRpb24uIElsIGZhdXQgbGUgbWV0dHJlIGVuIGFycmnocmUtcGxhbiwgZGUgc29ydGUgcXUnaWwgcmVuZGUgbGEgbWFpbgphdSBwcm9jZXNzdXMgYXBwZWxhbnQuIEMnZXN0IGNlIHF1ZSBmYWl0IGwnb3B0aW9uICdkYWVtb24nIGRlIGxhIHNlY3Rpb24KJ2dsb2JhbCcsIGV0IHF1aSBlc3QgbCfpcXVpdmFsZW50IGR1IHBhcmFt6HRyZSAnLUQnIGRlIGxhIGxpZ25lIGRlIGNvbW1hbmRlLgoKTGUgcGFyYW3odHJlIGRlIGxpZ25lIGRlIGNvbW1hbmRlICctZGInIGluaGliZSBsZXMgb3B0aW9ucyBnbG9iYWxlcyAnZGFlbW9uJwpldCAnbmJwcm9jJyBwb3VyIGZhaXJlIGZvbmN0aW9ubmVyIGxlIHByb2Nlc3N1cyBlbiBtb2RlIG5vcm1hbCwgYXZhbnQtcGxhbi4KClBhciBhaWxsZXVycywgY2VydGFpbnMgbWVzc2FnZXMgZCdhbGVydGUgc29udCB0b3Vqb3VycyBlbnZveelzIHN1ciBsYSBzb3J0aWUKc3RhbmRhcmQsIG3qbWUgZW4gbW9kZSAnZGFlbW9uJy4gUG91ciBuZSBwbHVzIGxlcyB2b2lyIGFpbGxldXJzIHF1ZSBkYW5zIGxlcwpsb2dzLCBpbCBzdWZmaXQgZGUgcGFzc2VyIGVuIG1vZGUgc2lsZW5jaWV1eCBwYXIgbCdham91dCBkZSBsJ29wdGlvbiAncXVpZXQnLgpDZXR0ZSBvcHRpb24gbidhIHBhcyBkJ+lxdWl2YWxlbnQgZW4gbGlnbmUgZGUgY29tbWFuZGUuCgpFbmZpbiwgbGUgbW9kZSAnZGVidWcnIHBlcm1ldCBkZSBkaWFnbm9zdGlxdWVyIGxlcyBvcmlnaW5lcyBkZSBjZXJ0YWlucwpwcm9ibOhtZXMgZW4gYWZmaWNoYW50IGxlcyBjb25uZXhpb25zLCBk6WNvbm5leGlvbnMgZXQg6WNoYW5nZXMgZCdlbi106nRlcyBIVFRQCmVudHJlIGxlcyBjbGllbnRzIGV0IGxlcyBzZXJ2ZXVycy4gQ2UgbW9kZSBlc3QgaW5jb21wYXRpYmxlIGF2ZWMgbGVzIG9wdGlvbnMKJ2RhZW1vbicgZXQgJ3F1aWV0JyBwb3VyIGRlcyByYWlzb25zIGRlIGJvbiBzZW5zLgoKMS41KSBBY2Nyb2lzc2VtZW50IGRlIGxhIGNhcGFjaXTpIGRlIHRyYWl0ZW1lbnQKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KU3VyIGRlcyBtYWNoaW5lcyBtdWx0aS1wcm9jZXNzZXVycywgaWwgcGV1dCBzZW1ibGVyIGfiY2jpIGRlIG4ndXRpbGlzZXIgcXUndW4KcHJvY2Vzc2V1ciBwb3VyIGVmZmVjdHVlciBsZXMgdOJjaGVzIGRlIHJlbGF5YWdlLCBt6m1lIHNpIGxlcyBjaGFyZ2VzCm7pY2Vzc2FpcmVzIOAgc2F0dXJlciB1biBwcm9jZXNzZXVyIGFjdHVlbCBzb250IGJpZW4gYXUtZGVs4CBkZXMgb3JkcmVzIGRlCmdyYW5kZXVyIGNvdXJhbW1lbnQgcmVuY29udHLpcy4gQ2VwZW5kYW50LCBwb3VyIGRlcyBiZXNvaW5zIHBhcnRpY3VsaWVycywgbGUKcHJvZ3JhbW1lIHNhaXQgZOltYXJyZXIgcGx1c2lldXJzIHByb2Nlc3N1cyBzZSBy6XBhcnRpc3NhbnQgbGEgY2hhcmdlIGRlCnRyYXZhaWwuIENlIG5vbWJyZSBkZSBwcm9jZXNzdXMgZXN0IHNw6WNpZmnpIHBhciBsZSBwYXJhbeh0cmUgJ25icHJvYycgZGUgbGEKc2VjdGlvbiAnZ2xvYmFsJy4gU2EgdmFsZXVyIHBhciBk6WZhdXQgZXN0IG5hdHVyZWxsZW1lbnQgMS4gQ2VjaSBuZSBmb25jdGlvbm5lCnF1J2VuIG1vZGUgJ2RhZW1vbicuIFVuIHVzYWdlIGTpauAgcmVuY29udHLpIHBvdXIgY2UgcGFyYW3odHJlIGZ1dCBkZSBk6XBhc3NlcgpsYSBsaW1pdGUgZGUgbm9tYnJlIGRlIGRlc2NyaXB0ZXVycyBkZSBmaWNoaWVycyBhbGxvdellIHBhciBwcm9jZXNzdXMgc291cwpTb2xhcmlzLgoKRXhlbXBsZSA6Ci0tLS0tLS0tLQoKICAgIGdsb2JhbAogICAgICAgIGRhZW1vbgogICAgICAgIHF1aWV0CiAgICAgICAgbmJwcm9jICAgICAgICAyCgoxLjYpIFNpbXBsaWZpY2F0aW9uIGRlIGxhIGdlc3Rpb24gZGVzIHByb2Nlc3N1cwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpIYXByb3h5IHN1cHBvcnRlIGRvculuYXZhbnQgbGEgbm90aW9uIGRlIGZpY2hpZXJzIGRlIHBpZCAoLT4gcGlkZmlsZXMpLiBTaSBsZQpwYXJhbeh0cmUgJy1wJyBkZSBsaWduZSBkZSBjb21tYW5kZSwgb3UgbCdvcHRpb24gZ2xvYmFsZSAncGlkZmlsZScgc29udCBzdWl2aXMKZCd1biBub20gZGUgZmljaGllciwgYWxvcnMgY2UgZmljaGllciBzZXJhIHN1cHByaW3pIHB1aXMgcmVjcunpIGV0IGNvbnRpZW5kcmEKbGUgbnVt6XJvIGRlIFBJRCBkZXMgcHJvY2Vzc3VzIGZpbHMsIOAgcmFpc29uIGQndW4gcGFyIGxpZ25lICh2YWxhYmxlCnVuaXF1ZW1lbnQgZW4gbW9kZSBk6W1vbikuIENlIGZpY2hpZXIgbidlc3QgUEFTIHJlbGF0aWYgYXUgY2xvaXNvbm5lbWVudCBjaHJvb3QKYWZpbiBkZSByZXN0ZXIgY29tcGF0aWJsZSBhdmVjIHVuIHLpcGVydG9pcmUgcHJvdOln6SBlbiBsZWN0dXJlIHNldWxlLiBJbAphcHBhcnRpZW5kcmEg4CBsJ3V0aWxpc2F0ZXVyIGF5YW50IGxhbmPpIGxlIHByb2Nlc3N1cywgZXQgZGlzcG9zZXJhIGRlcyBkcm9pdHMKMDY0NC4KCkV4ZW1wbGUgOgotLS0tLS0tLS0KCiAgICBnbG9iYWwKICAgICAgICBkYWVtb24KICAgICAgICBxdWlldAogICAgICAgIG5icHJvYyAyCiAgICAgICAgcGlkZmlsZSAvdmFyL3J1bi9oYXByb3h5LXByaXZhdGUucGlkCgogICAgIyBwb3VyIHN0b3BwZXIgc2V1bGVtZW50IGNlcyBwcm9jZXNzdXMgcGFybWkgZCdhdXRyZXMgOgogICAgIyBraWxsICQoPC92YXIvcnVuL2hhcHJveHktcHJpdmF0ZS5waWQpCgogICAgIyBwb3VyIHJlY2hhcmdlciB1bmUgY29uZmlndXJhdGlvbiBhdmVjIHVuIGltcGFjdCBtaW5pbWFsIHN1ciBsZSBzZXJ2aWNlLAogICAgIyBldCBzYW5zIGNhc3NlciBsZXMgc2Vzc2lvbnMgZXhpc3RhbnRlcyA6CiAgICAjIGhhcHJveHkgLWYgaGFwcm94eS5jZmcgLXAgL3Zhci9ydW4vaGFwcm94eS1wcml2YXRlLnBpZCAtc2YgJCg8L3Zhci9ydW4vaGFwcm94eS1wcml2YXRlLnBpZCkKCjEuNykgTeljYW5pc21lcyBkZSB0cmFpdGVtZW50cyBkZXMg6XbpbmVtZW50cwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQSBwYXJ0aXIgZGUgbGEgdmVyc2lvbiAxLjIuNSwgaGFwcm94eSBzdXBwb3J0ZSBsZXMgbeljYW5pc21lcyBwb2xsKCkgZXQKZXBvbGwoKS4gU3VyIGxlcyBzeXN0ZW1zIG/5IHNlbGVjdCgpIGVzdCBsaW1pdOkgcGFyIEZEX1NFVFNJWkUgKGNvbW1lIFNvbGFyaXMpLApwb2xsKCkgcGV1dCDqdHJlIHVuZSBhbHRlcm5hdGl2ZSBpbnTpcmVzc2FudGUuIERlcyB0ZXN0cyBkZSBwZXJmb3JtYW5jZQptb250cmVudCBxdWUgbGVzIHBlcmZvcm1hbmNlcyBkZSBwb2xsKCkgbmUgZOljcm9pc3NlbnQgcGFzIGF1c3NpIHZpdGUgcXVlIGxlCm5vbWJyZSBkZSBzb2NrZXRzIGF1Z21lbnRlLCBjZSBxdWkgZW4gZmFpdCB1bmUgc29sdXRpb24gc/tyZSBwb3VyIGxlcyBmb3J0ZXMKY2hhcmdlcy4gQ2VsYSBkaXQsIFNvYWxyaXMgdXRpbGlzZSBk6WrgIHBvbGwoKSBwb3VyIOltdWxlciBzZWxlY3QoKSwgZG9uYyB0YW50CnF1ZSBsZSBub21icmUgZGUgc29ja2V0cyBuZSBk6XBhc3NlIHBhcyBGRF9TRVRTSVpFLCBwb2xsKCkgbmUgZGV2cmFpdCBwYXMKYXBwb3J0ZXIgZGUgcGVyZm9ybWFuY2VzIHN1cHBs6W1lbnRhaXJlcy4gU3VyIGxlcyBzeXN06G1lcyDgIGJhc2UgTGludXgKaW5jbHVhbnQgbGUgcGF0Y2ggZXBvbGwoKSAob3UgdG91cyBsZXMgTGludXggMi42KSwgaGFwcm94eSB1dGlsaXNlcmEgZXBvbGwoKQpxdWkgZXN0IGV4dHLobWVtZW50IHJhcGlkZSBpbmTpcGVuZGFtbWVudCBkdSBub21icmUgZGUgc29ja2V0cy4gTGVzIHRlc3RzIHN1cgpoYXByb3h5IG9udCBtb250cukgdW5lIHBlcmZvcm1hbmNlIGNvbnN0YW50ZSBkZSAxIOAgNDAwMDAgc2Vzc2lvbnMgc2ltdWx0YW7pZXMuCkxhIHZlcnNpb24gMS4zLjkgYSBpbnRyb2R1aXQgbGUgc3VwcG9ydCBkZSBrcXVldWUoKSBwb3VyIEZyZWVCU0QvT3BlbkJTRCwgYWluc2kKcXUndW5lIHZhcmlhbnRlIGFwcGVs6WUgInNwZWN1bGF0aXZlIGVwb2xsKCkiIGNvbnNpc3RhbnQg4CB0ZW50ZXIgZCdlZmZlY3R1ZXIKbGVzIG9w6XJhdGlvbnMgZCdlbnRy6WVzL3NvcnRpZXMgYXZhbnQgZGUgY2hh7m5lciBsZXMg6XbpbmVtZW50cyBwYXIgbGVzIGFwcGVscwpzeXN06G1lLgoKQWZpbiBkJ29wdGltaXNlciBsYSBsYXRlbmNlLCBpbCBlc3QgZOlzb3JtYWlzIHBvc3NpYmxlIGRlIGxpbWl0ZXIgbGUgbm9tYnJlCmQn6XbpbmVtZW50cyByZW1vbnTpcyDgIGNoYXF1ZSBhcHBlbC4gTGEgbGltaXRlIHBhciBk6WZhdXQgZXN0IGZpeOllIOAgMjAwLiBTaQp1bmUgbGF0ZW5jZSBwbHVzIHBldGl0ZSBlc3QgcmVjaGVyY2jpZSwgaWwgcGV1dCDqdHJlIGp1c3RpZmnpIGQnYWJhaXNzZXIgY2V0dGUKbGltaXRlIHBhciBsJ3V0aWxpc2F0aW9uIGR1IHBhcmFt6HRyZSAndHVuZS5tYXhwb2xsZXZlbnRzJyBkYW5zIGxhIHNlY3Rpb24KJ2dsb2JhbCcuIEwnYXVnbWVudGVyIHBlcm1ldHRyYSBkJ+ljb25vbWlzZXIgdW4gcGV1IGxlIHByb2Nlc3NldXIgZW4gcHLpc2VuY2UKZGUgdHLocyBncmFuZHMgbm9tYnJlcyBkZSBjb25uZXhpb25zIHNpbXVsdGFu6WVzLgoKSGFwcm94eSB1dGlsaXNlcmEga3F1ZXVlKCkgb3Ugc3BlY3VsYXRpdmUgZXBvbGwoKSBsb3JzcXVlIGNlIHNlcmEgZGlzcG9uaWJsZSwKcHVpcyBlcG9sbCgpLCBldCBzZSByZXBsaWVyYSBzdXIgcG9sbCgpLCBwdWlzIGVuIGRlcm5pZXIgbGlldSBzdXIgc2VsZWN0KCkuCkNlcGVuZGFudCwgc2kgcG91ciB1bmUgcmFpc29uIHF1ZWxjb25xdWUgaWwgcydhdulyYWl0IG7pY2Vzc2FpcmUgZGUgZOlzYWN0aXZlcgplcG9sbCgpIG91IHBvbGwoKSAocC5leDog4CBjYXVzZSBkJ3VuIGJ1ZyBvdSBqdXN0ZSBwb3VyIGNvbXBhcmVyIGxlcwpwZXJmb3JtYW5jZXMpLCBkZSBub3V2ZWxsZXMgb3B0aW9ucyBnbG9iYWxlcyBvbnQg6XTpIGFqb3V06WVzIGRhbnMgY2UgYnV0IDoKJ25vc2Vwb2xsJywgJ25va3F1ZXVlJywgJ25vZXBvbGwnIGV0ICdub3BvbGwnLgoKRXhlbXBsZSA6Ci0tLS0tLS0tLQogICAgZ2xvYmFsCiAgICAgICAgIyB1dGlsaXNlciBzZXVsZW1lbnQgc2VsZWN0KCkKICAgICAgICBub2Vwb2xsCiAgICAgICAgbm9wb2xsCiAgICAgICAgdHVuZS5tYXhwb2xsZXZlbnRzIDEwMAoKUmVtYXJxdWUgOgotLS0tLS0tLS0tCkRhbnMgbGUgYnV0IGQnYXNzdXJlciB1bmUgcG9ydGFiaWxpdOkgbWF4aW1hbGUgZGVzIGNvbmZpZ3VyYXRpb25zLCBjZXMgb3B0aW9ucwpzb250IGFjY2VwdOllcyBldCBpZ25vcullcyBzaSBsZXMgbeljYW5pc21lcyBwb2xsKCkgb3UgZXBvbGwoKSBuJ29udCBwYXMg6XTpCmFjdGl26XMgbG9ycyBkZSBsYSBjb21waWxhdGlvbi4KCkFmaW4gZGUgc2ltcGxpZmllciBsYSBy6XNvbHV0aW9uIGRlIHByb2Js6G1lcywgbGUgcGFyYW3odHJlICctZGUnIGVuIGxpZ25lIGRlCmNvbW1hbmRlIGTpc2FjdGl2ZSBlcG9sbCgpLCBsZSBwYXJhbeh0cmUgJy1kcCcgZOlzYWN0aXZlIHBvbGwoKSwgJy1kaycga3F1ZXVlKCkKZXQgJy1kcycgZOlzYWN0aXZlIHNwZWN1bGF0aXZlIGVwb2xsKCkuIElscyBzb250IHJlc3BlY3RpdmVtZW50IOlxdWl2YWxlbnRzIOAKJ25vZXBvbGwnLCAnbm9wb2xsJywgJ25va3F1ZXVlJyBldCAnbm9zZXBvbGwnLgoKCjIpIETpZmluaXRpb24gZCd1biBzZXJ2aWNlIGVuIOljb3V0ZQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KCkxlcyBzZWN0aW9ucyBkZSBzZXJ2aWNlIGTpYnV0ZW50IHBhciBsZSBtb3QgY2zpICJsaXN0ZW4iIDoKCiAgICBsaXN0ZW4gPG5vbV9pbnN0YW5jZT4gWyA8YWRyZXNzZV9JUD46PHBsYWdlX3BvcnRzPlssLi4uXSBdCgotIDxub21faW5zdGFuY2U+IGVzdCBsZSBub20gZGUgbCdpbnN0YW5jZSBk6WNyaXRlLiBDZSBub20gc2VyYSBlbnZveekgZGFucyBsZXMKICBsb2dzLCBkb25jIGlsIGVzdCBzb3VoYWl0YWJsZSBkJ3V0aWxpc2VyIHVuIG5vbSByZWxhdGlmIGF1IHNlcnZpY2UgcmVsYXnpLgogIEF1Y3VuIHRlc3Qgbidlc3QgZWZmZWN0dekgY29uY2VybmFudCBsJ3VuaWNpdOkgZGUgY2Ugbm9tLCBxdWkgbidlc3QgcGFzCiAgb2JsaWdhdG9pcmUsIG1haXMgZm9ydGVtZW50IHJlY29tbWFuZOllLgoKLSA8YWRyZXNzZV9JUD4gZXN0IGwnYWRyZXNzZSBJUCBzdXIgbGFxdWVsbGUgbGUgcmVsYWlzIGF0dGVuZCBzZXMgY29ubmV4aW9ucy4KICBMJ2Fic2VuY2UgZCdhZHJlc3NlIGFpbnNpIHF1ZSBsJ2FkcmVzc2UgMC4wLjAuMCBzaWduaWZpZW50IHF1ZSBsZXMgY29ubmV4aW9ucwogIHBvdXJyb250IHMnZWZmZWN0dWVyIHN1ciB0b3V0ZXMgbGVzIGFkcmVzc2VzIGRlIGxhIG1hY2hpbmUuCgotIDxwbGFnZV9wb3J0cz4gY29ycmVzcG9uZCBzb2l0IOAgdW4gcG9ydCwgc29pdCDgIHVuZSBwbGFnZSBkZSBwb3J0cyBzdXIKICBsZXNxdWVscyBsZSByZWxhaXMgYWNjZXB0ZXJhIGRlcyBjb25uZXhpb25zIHBvdXIgbCdhZHJlc3NlIElQIHNw6WNpZmnpZS4KICBDZXR0ZSBwbGFnZSBwZXV0IOp0cmUgOgogICAgLSBzb2l0IHVuIHBvcnQgbnVt6XJpcXVlIChleDogJzgwJykKICAgIC0gc29pdCB1bmUgcGxhZ2UgY29uc3RpdHXpZSBkZSBkZXV4IHZhbGV1cnMgc+lwYXLpZXMgcGFyIHVuIHRpcmV0CiAgICAgIChleDogJzIwMDAtMjEwMCcpIHJlcHLpc2VudGFudCBsZXMgZXh0cultaXTpcyBpbmNsdXNlcyBkYW5zIGxhCiAgICAgIHBsYWdlLgogIElsIGZhdXQgZmFpcmUgYXR0ZW50aW9uIOAgbCd1c2FnZSBkZXMgcGxhZ2VzLCBjYXIgY2hhcXVlIGNvbWJpbmFpc29uCiAgPGFkcmVzc2VfSVA+Ojxwb3J0PiBjb25zb21tZSB1bmUgc29ja2V0LCBkb25jIHVuIGRlc2NyaXB0ZXVyIGRlIGZpY2hpZXIuCiAgTGUgY291cGxlIDxhZHJlc3NlX0lQPjo8cG9ydD4gZG9pdCDqdHJlIHVuaXF1ZSBwb3VyIHRvdXRlcyBsZXMgIGluc3RhbmNlcwogIGQndW5lIG3qbWUgbWFjaGluZS4gTCdhdHRhY2hlbWVudCDgIHVuIHBvcnQgaW5m6XJpZXVyIOAgMTAyNCBu6WNlc3NpdGUgdW4KICBuaXZlYXUgZGUgcHJpdmls6GdlIHBhcnRpY3VsaWVyIGxvcnMgZHUgbGFuY2VtZW50IGR1IHByb2dyYW1tZQogIChpbmTpcGVuZGFtbWVudCBkdSBwYXJhbeh0cmUgJ3VpZCcgZGUgbGEgc2VjdGlvbiAnZ2xvYmFsJykuCgotIGxlIGNvdXBsZSA8YWRyZXNzZV9JUD46PHBsYWdlX3BvcnRzPiBwZXV0IOp0cmUgculw6XTpIGluZOlmaW5pbWVudCBwb3VyCiAgZGVtYW5kZXIgYXUgcmVsYWlzIGQn6WNvdXRlciDpZ2FsZW1lbnQgc3VyIGQnYXV0cmVzIGFkcmVzc2VzIGV0L291IGQnYXV0cmVzCiAgcGxhZ2VzIGRlIHBvcnRzLiBQb3VyIGNlbGEsIGlsIHN1ZmZpdCBkZSBz6XBhcmVyIGxlcyBjb3VwbGVzIHBhciB1bmUgdmlyZ3VsZS4KCkV4ZW1wbGVzIDoKLS0tLS0tLS0tCiAgICBsaXN0ZW4gaHR0cF9wcm94eSA6ODAKICAgIGxpc3RlbiB4MTFfcHJveHkgMTI3LjAuMC4xOjYwMDAtNjAwOQogICAgbGlzdGVuIHNtdHBfcHJveHkgMTI3LjAuMC4xOjI1LDEyNy4wLjAuMTo1ODcKICAgIGxpc3RlbiBsZGFwX3Byb3h5IDozODksOjY2MwoKU2kgdG91dGVzIGxlcyBhZHJlc3NlcyBuZSB0aWVubmVudCBwYXMgc3VyIHVuZSBsaWduZSwgaWwgZXN0IHBvc3NpYmxlIGQnZW4KcmFqb3V0ZXIg4CBsJ2FpZGUgZHUgbW90IGNs6SAnYmluZCcuIERhbnMgY2UgY2FzLCBpbCBuJ2VzdCBt6m1lIHBhcyBu6WNlc3NhaXJlCmRlIHNw6WNpZmllciBsYSBwcmVtaehyZSBhZHJlc3NlIHN1ciBsYSBsaWduZSBsaXN0ZW4sIGNlIHF1aSBmYWNpbGl0ZSBwYXJmb2lzCmwn6WNyaXR1cmUgZGUgY29uZmlndXJhdGlvbnMgOgoKICAgIGJpbmQgWyA8YWRyZXNzZV9JUD46PHBsYWdlX3BvcnRzPlssLi4uXSBdCgpFeGVtcGxlcyA6Ci0tLS0tLS0tLS0KICAgIGxpc3RlbiBodHRwX3Byb3h5CiAgICAgICAgYmluZCA6ODAsOjQ0MwogICAgICAgIGJpbmQgMTAuMC4wLjE6MTAwODAsMTAuMC4wLjE6MTA0NDMKCjIuMSkgSW5oaWJpdGlvbiBkJ3VuIHNlcnZpY2UKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpVbiBzZXJ2aWNlIHBldXQg6nRyZSBk6XNhY3RpdukgcG91ciBkZXMgYmVzb2lucyBkZSBtYWludGVuYW5jZSwgc2FucyBhdm9pciDgCmNvbW1lbnRlciB0b3V0ZSB1bmUgcGFydGllIGR1IGZpY2hpZXIuIElsIHN1ZmZpdCBkZSBwb3NpdGlvbm5lciBsZSBtb3QgY2zpCiJkaXNhYmxlZCIgZGFucyBzYSBzZWN0aW9uIDoKCiAgICBsaXN0ZW4gc210cF9wcm94eSAwLjAuMC4wOjI1CiAgICAgICAgZGlzYWJsZWQKClJlbWFycXVlOiBsZSBtb3QgY2zpICdlbmFibGVkJyBwZXJtZXQgZGUgculhY3RpdmVyIHVuIHNlcnZpY2UgcHLpYWxhYmxlbWVudAogICAgICAgICAgZOlzYWN0aXbpIHBhciBsZSBtb3QgY2zpICdkaXNhYmxlZCcsIHBhciBleGVtcGxlIOAgY2F1c2UgZCd1bmUKICAgICAgICAgIGNvbmZpZ3VyYXRpb24gcGFyIGTpZmF1dC4KCjIuMikgTW9kZSBkZSBmb25jdGlvbm5lbWVudAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KVW4gc2VydmljZSBwZXV0IGZvbmN0aW9ubmVyIGRhbnMgdHJvaXMgbW9kZXMgZGlmZulyZW50cyA6CiAgLSBUQ1AKICAtIEhUVFAKICAtIOl0YXQgZGUgc2FudOkKCk1vZGUgVENQCi0tLS0tLS0tCkRhbnMgY2UgbW9kZSwgbGUgc2VydmljZSByZWxheWUsIGTocyBsZXVyIOl0YWJsaXNzZW1lbnQsIGxlcyBjb25uZXhpb25zIFRDUAp2ZXJzIHVuIG91IHBsdXNpZXVycyBzZXJ2ZXVycy4gQXVjdW4gdHJhaXRlbWVudCBuJ2VzdCBlZmZlY3R16SBzdXIgbGUgZmx1eC4gSWwKcydhZ2l0IHNpbXBsZW1lbnQgZCd1bmUgYXNzb2NpYXRpb24KICAgICBzb3VyY2U8YWRyZXNzZTpwb3J0PiAtPiBkZXN0aW5hdGlvbjxhZHJlc3NlOnBvcnQ+LgpQb3VyIGwndXRpbGlzZXIsIHBy6WNpc2VyIGxlIG1vZGUgVENQIHNvdXMgbGEgZOljbGFyYXRpb24gZHUgcmVsYWlzLgoKRXhlbXBsZSA6Ci0tLS0tLS0tLQogICAgbGlzdGVuIHNtdHBfcHJveHkgMC4wLjAuMDoyNQogICAgICAgIG1vZGUgdGNwCgpNb2RlIEhUVFAKLS0tLS0tLS0tCkRhbnMgY2UgbW9kZSwgbGUgc2VydmljZSByZWxheWUgbGVzIGNvbm5leGlvbnMgVENQIHZlcnMgdW4gb3UgcGx1c2lldXJzCnNlcnZldXJzLCB1bmUgZm9pcyBxdSdpbCBkaXNwb3NlIGQnYXNzZXogZCdpbmZvcm1hdGlvbnMgcG91ciBlbiBwcmVuZHJlIGxhCmTpY2lzaW9uLiBMZXMgZW4tdOp0ZXMgSFRUUCBzb250IGFuYWx5c+lzIHBvdXIgeSB0cm91dmVyIHVuIOl2ZW50dWVsIGNvb2tpZSwgZXQKY2VydGFpbnMgZCdlbnRyZS1ldXggcGV1dmVudCDqdHJlIG1vZGlmaelzIHBhciBsZSBiaWFpcyBkJ2V4cHJlc3Npb25zCnLpZ3VsaehyZXMuIFBvdXIgYWN0aXZlciBjZSBtb2RlLCBwculjaXNlciBsZSBtb2RlIEhUVFAgc291cyBsYSBk6WNsYXJhdGlvbiBkdQpyZWxhaXMuCgpFeGVtcGxlIDoKLS0tLS0tLS0tCiAgICBsaXN0ZW4gaHR0cF9wcm94eSAwLjAuMC4wOjgwCiAgICAgICAgbW9kZSBodHRwCgpNb2RlIHN1cGVydmlzaW9uCi0tLS0tLS0tLS0tLS0tLS0KSWwgcydhZ2l0IGQndW4gbW9kZSBvZmZyYW50IOAgdW4gY29tcG9zYW50IGV4dGVybmUgdW5lIHZpc2liaWxpdOkgZGUgbCfpdGF0IGRlCnNhbnTpIGR1IHNlcnZpY2UuIElsIHNlIGNvbnRlbnRlIGRlIHJldG91cm5lciAiT0siIOAgdG91dCBjbGllbnQgc2UgY29ubmVjdGFudApzdXIgc29uIHBvcnQuIElsIHBldXQg6nRyZSB1dGlsaXPpIGF2ZWMgZGVzIHLpcGFydGl0ZXVycyBkZSBjaGFyZ2Ug6XZvbHXpcyBwb3VyCmTpdGVybWluZXIgcXVlbHMgc29udCBsZXMgc2VydmljZXMgdXRpbGlzYWJsZXMuIFNpIGwnb3B0aW9uICdodHRwY2hrJyBlc3QKYWN0aXbpZSwgYWxvcnMgbGEgculwb25zZSBjaGFuZ2VyYSBlbiAnSFRUUC8xLjAgMjAwIE9LJyBwb3VyIHNhdGlzZmFpcmUgbGVzCmF0dGVudGVzIGRlIGNvbXBvc2FudHMgc2FjaGFudCB0ZXN0ZXIgZW4gSFRUUC4gUG91ciBhY3RpdmVyIGNlIG1vZGUsIHBy6WNpc2VyCmxlIG1vZGUgSEVBTFRIIHNvdXMgbGEgZOljbGFyYXRpb24gZHUgcmVsYWlzLgoKRXhlbXBsZSA6Ci0tLS0tLS0tLQogICAgIyBy6XBvbnNlIHNpbXBsZSA6ICdPSycKICAgIGxpc3RlbiBoZWFsdGhfY2hlY2sgMC4wLjAuMDo2MDAwMAogICAgICAgIG1vZGUgaGVhbHRoCgogICAgIyBy6XBvbnNlIEhUVFAgOiAnSFRUUC8xLjAgMjAwIE9LJwogICAgbGlzdGVuIGh0dHBfaGVhbHRoX2NoZWNrIDAuMC4wLjA6NjAwMDEKICAgICAgICBtb2RlIGhlYWx0aAogICAgICAgIG9wdGlvbiBodHRwY2hrCgoKMi4yLjEgU3VwZXJ2aXNpb24KLS0tLS0tLS0tLS0tLS0tLS0KTGVzIHZlcnNpb25zIDEuMS4zMiBldCAxLjIuNiBhcHBvcnRlbnQgdW5lIG5vdXZlbGxlIHNvbHV0aW9uIHBvdXIgdmFsaWRlciBsZQpib24gZm9uY3Rpb25uZW1lbnQgZHUgcHJveHkgc2FucyBwZXJ0dXJiZXIgbGUgc2VydmljZS4gTGUgbW90LWNs6SAnbW9uaXRvci1uZXQnCmEg6XTpIGNy6ekgZGFucyBsZSBidXRkIGRlIHNw6WNpZmllciB1biBy6XNlYXUgZCfpcXVpcGVtZW50cyBxdWkgbmUgUEVVVkVOVCBQQVMKdXRpbGlzZXIgbGUgc2VydmljZSBwb3VyIGF1dHJlIGNob3NlIHF1ZSBkZXMgdGVzdHMgZGUgZm9uY3Rpb25uZW1lbnQuIEMnZXN0CnBhcnRpY3VsaehyZW1lbnQgYWRhcHTpIGF1eCBwcm94aWVzIFRDUCwgY2FyIGNlbGEgZW1w6mNoZSBsZSBwcm94eSBkZSByZWxheWVyCmRlcyDpdGFibGlzc2VtZW50cyBkZSBjb25uZXhpb24g6W1pcyBwYXIgdW4gb3V0aWwgZGUgc3VydmVpbGxhbmNlLgoKTG9yc3F1ZSBjJ2VzdCB1dGlsaXPpIHN1ciB1biBwcm94eSBUQ1AsIGxhIGNvbm5leGlvbiBlc3QgYWNjZXB06WUgcHVpcyByZWZlcm3pZQpldCByaWVuIG4nZXN0IGxvZ3XpLiBDJ2VzdCBzdWZmaXNhbnQgcG91ciBxdSd1biBy6XBhcnRpdGV1ciBkZSBjaGFyZ2UgZW4gYW1vbnQKZOl0ZWN0ZSBxdWUgbGUgc2VydmljZSBlc3QgZGlzcG9uaWJsZS4KCkxvcnNxdWUgYydlc3QgdXRpbGlz6SBzdXIgdW4gcHJveHkgSFRUUCwgbGEgY29ubmV4aW9uIGVzdCBhY2NlcHTpZSwgcmllbiBuJ2VzdApsb2d16SwgcHVpcyBsYSBy6XBvbnNlIHN1aXZhbnRlIGVzdCBlbnZveellIGV0IGxhIHNlc3Npb24gcmVmZXJt6WUgOgoiSFRUUC8xLjAgMjAwIE9LIi4gQydlc3Qgbm9ybWFsZW1lbnQgc3VmZmlzYW50IHBvdXIgcXUndW4gculwYXJ0aXRldXIgZGUgY2hhcmdlCkhUVFAgZW4gYW1vbnQgZOl0ZWN0ZSBsZSBzZXJ2aWNlIGNvbW1lIG9w6XJhdGlvbm5lbCwgYXVzc2kgYmllbiDgIHRyYXZlcnMgZGVzCnRlc3RzIFRDUCBxdWUgSFRUUC4KCkxlcyBwcm94aWVzIHV0aWxpc2FudCBsZSBtb3QtY2zpICdtb25pdG9yLW5ldCcgcGV1dmVudCBhY2Nlc3NvaXJlbWVudCBzZSBwYXNzZXIKZGUgbCdvcHRpb24gJ2RvbnRsb2dudWxsJywgY2UgcXVpIHBlcm1ldHRyYSBkZSBsb2d1ZXIgbGVzIGNvbm5leGlvbnMgdmlkZXMK6W1pc2VzIGRlcHVpcyBkJ2F1dHJlcyBhZHJlc3NlcyBxdWUgY2VsbGVzIGR1IHLpc2VhdSBkZSB0ZXN0cy4KCkV4ZW1wbGUgOgotLS0tLS0tLS0KCiAgICBsaXN0ZW4gdHNlLXByb3h5CiAgICAgICBiaW5kIDozMzg5LDoxNDk0LDo1OTAwICAjIFRTRSwgSUNBIGFuZCBWTkMgYXQgb25jZS4KICAgICAgIG1vZGUgdGNwCiAgICAgICBiYWxhbmNlIHJvdW5kcm9iaW4KICAgICAgIHNlcnZlciB0c2UtZmFybSAxOTIuMTY4LjEuMTAKICAgICAgIG1vbml0b3ItbmV0IDE5Mi4xNjguMS4yNTIvMzEgICAjIEw0IGxvYWQtYmFsYW5jZXJzIG9uIC4yNTIgYW5kIC4yNTMKCgpMb3JzcXVlIGxlIHN5c3TobWUgZWZmZWN0dWFudCBsZXMgdGVzdHMgZXN0IHNpdHXpIGRlcnJp6HJlIHVuIHByb3h5LCBsZSBtb3QtY2zpCidtb25pdG9yLW5ldCcgbidlc3QgcGFzIHV0aWxpc2FibGUgZHUgZmFpdCBxdWUgaGFwcm94eSB2ZXJyYSB0b3Vqb3VycyBsYSBt6m1lCmFkcmVzc2UgcG91ciBsZSBwcm94eS4gUG91ciBwYWxsaWVyIOAgY2V0dGUgbGltaXRhdGlvbiwgbGEgdmVyc2lvbiAxLjIuMTUgYQphcHBvcnTpIGxlIG1vdC1jbOkgJ21vbml0b3ItdXJpJy4gSWwgZOlmaW5pdCB1bmUgVVJJIHF1aSBuZSBzZXJhIG5pIHJldHJhbnNtaXNlCm5pIGxvZ+llLCBtYWlzIHBvdXIgbGFxdWVsbGUgaGFwcm94eSByZXRvdXJuZXJhIGltbelkaWF0ZW1lbnQgdW5lIHLpcG9uc2UKIkhUVFAvMS4wIDIwMCBPSyIuIENlbGEgcmVuZCBwb3NzaWJsZXMgbGVzIHRlc3RzIGRlIHZhbGlkaXTpIGQndW5lIGNoYe5uZQpyZXZlcnNlLXByb3h5LT5oYXByb3h5IGVuIHVuZSByZXF16nRlIEhUVFAuIENlbGEgcGV1dCDqdHJlIHV0aWxpc+kgcG91ciB2YWxpZGVyCnVuZSBjb21iaW5haXNpb24gZGUgc3R1bm5lbCtoYXByb3h5IOAgbCdhaWRlIGRlIHRlc3RzIEhUVFBTIHBhciBleGVtcGxlLiBCaWVuCmVudGVuZHUsIGNlIG1vdC1jbOkgbidlc3QgdmFsaWRlIHF1J2VuIG1vZGUgSFRUUCwgc2lub24gaWwgbid5IGEgcGFzIGRlIG5vdGlvbgpkJ1VSSS4gTm90ZXIgcXVlIGxhIG3pdGhvZGUgZXQgbGEgdmVyc2lvbiBIVFRQIHNvbnQgc2ltcGxlbWVudCBpZ25vcullcy4KCkV4ZW1wbGUgOgotLS0tLS0tLS0KCiAgICBsaXN0ZW4gc3R1bm5lbF9iYWNrZW5kIDo4MDgwCiAgICAgICBtb2RlIGh0dHAKICAgICAgIGJhbGFuY2Ugcm91bmRyb2JpbgogICAgICAgc2VydmVyIHdlYjEgMTkyLjE2OC4xLjEwOjgwIGNoZWNrCiAgICAgICBzZXJ2ZXIgd2ViMiAxOTIuMTY4LjEuMTE6ODAgY2hlY2sKICAgICAgIG1vbml0b3ItdXJpIC9oYXByb3h5X3Rlc3QKCgoyLjMpIExpbWl0YXRpb24gZHUgbm9tYnJlIGRlIGNvbm5leGlvbnMgc2ltdWx0YW7pZXMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkxlIHBhcmFt6HRyZSAibWF4Y29ubiIgcGVybWV0IGRlIGZpeGVyIGxhIGxpbWl0ZSBhY2NlcHRhYmxlIGVuIG5vbWJyZSBkZQpjb25uZXhpb25zIHNpbXVsdGFu6WVzIHBhciBwcm94eS4gQ2hhcXVlIHByb3h5IHF1aSBhdHRlaW50IGNldHRlIHZhbGV1ciBjZXNzZQpkJ+ljb3V0ZXIganVzcXUn4CBsaWLpcmF0aW9uIGQndW5lIGNvbm5leGlvbi4gVm9pciBwbHVzIGxvaW4gY29uY2VybmFudCBsZXMKbGltaXRhdGlvbnMgbGnpZXMgYXUgc3lzdOhtZS4KCkV4ZW1wbGUgOgotLS0tLS0tLS0KICAgIGxpc3RlbiB0aW55X3NlcnZlciAwLjAuMC4wOjgwCiAgICAgICAgbWF4Y29ubiAxMAoKCjIuNCkgQXJy6nQgZW4gZG91Y2V1cgotLS0tLS0tLS0tLS0tLS0tLS0tLS0KSWwgZXN0IHBvc3NpYmxlIGQnYXJy6nRlciBsZXMgc2VydmljZXMgZW4gZG91Y2V1ciBlbiBlbnZveWFudCB1biBzaWduYWwKU0lHVVNSMSBhdSBwcm9jZXNzdXMgcmVsYWlzLiBUb3VzIGxlcyBzZXJ2aWNlcyBzZXJvbnQgYWxvcnMgbWlzIGVuIHBoYXNlCmQnYXJy6nQsIG1haXMgcG91cnJvbnQgY29udGludWVyIGQnYWNjZXB0ZXIgZGVzIGNvbm5leGlvbnMgcGVuZGFudCB1biB0ZW1wcwpk6WZpbmkgcGFyIGxlIHBhcmFt6HRyZSAnZ3JhY2UnIChlbiBtaWxsaXNlY29uZGVzKS4gQ2VsYSBwZXJtZXQgcGFyIGV4ZW1wbGUsCmRlIGZhaXJlIHNhdm9pciByYXBpZGVtZW50IOAgdW4gculwYXJ0aXRldXIgZGUgY2hhcmdlIHF1J2lsIG5lIGRvaXQgcGx1cwp1dGlsaXNlciB1biByZWxhaXMsIHRvdXQgZW4gY29udGludWFudCBkJ2Fzc3VyZXIgbGUgc2VydmljZSBsZSB0ZW1wcyBxdSdpbApzJ2VuIHJlbmRlIGNvbXB0ZS4KClJlbWFycXVlIDoKLS0tLS0tLS0tLQpMZXMgY29ubmV4aW9ucyBhY3RpdmVzIG5lIHNvbnQgamFtYWlzIGNhc3PpZXMuIERhbnMgbGUgcGlyZSBkZXMgY2FzLCBpbCBmYXVkcmEKYXR0ZW5kcmUgZW4gcGx1cyBsZXVyIGV4cGlyYXRpb24gYXZhbnQgbCdhcnLqdCB0b3RhbCBkdSBwcm9jZXNzdXMsIG91IGJpZW4gdHVlcgptYW51ZWxsZW1lbnQgbGUgcHJvY2Vzc3VzIHBhciBsJ2Vudm9pIGQndW4gc2lnbmFsIFNJR1RFUk0uIExhIHZhbGV1ciBwYXIgZOlmYXV0CmR1IHBhcmFt6HRyZSAnZ3JhY2UnIGVzdCAwIChwYXMgZGUgZ3LiY2UsIGFycup0IGltbelkaWF0IGRlIGwn6WNvdXRlKS4KCkV4ZW1wbGUgOgotLS0tLS0tLS0KICAgICMgYXJy6nRlciBlbiBkb3VjZXVyIHBhciAna2lsbGFsbCAtVVNSMSBoYXByb3h5JwogICAgIyBsZSBzZXJ2aWNlIHRvdXJuZXJhIGVuY29yZSAxMCBzZWNvbmRlcyBhcHLocyBsYSBkZW1hbmRlIGQnYXJy6nQKICAgIGxpc3RlbiBodHRwX3Byb3h5IDAuMC4wLjA6ODAKICAgICAgICBtb2RlIGh0dHAKICAgICAgICBncmFjZSAxMDAwMAoKICAgICMgY2UgcG9ydCBuJ2VzdCB0ZXN06SBxdWUgcGFyIHVuIHLpcGFydGl0ZXVyIGRlIGNoYXJnZS4KICAgIGxpc3RlbiBoZWFsdGhfY2hlY2sgMC4wLjAuMDo2MDAwMAogICAgICAgIG1vZGUgaGVhbHRoCiAgICAgICAgZ3JhY2UgMAoKQSBwYXJ0aXIgZGUgbGEgdmVyc2lvbiAxLjIuOCwgdW4gbm91dmVhdSBt6WNhbmlzbWUgZGUgcmVjb25maWd1cmF0aW9uIOAgY2hhdWQKYSDpdOkgaW50cm9kdWl0LiBJbCBlc3QgZOlzb3JtYWlzIHBvc3NpYmxlIGRlIG1ldHRyZSBsZXMgcHJveGllcyBlbiAicGF1c2UiIGVuCmVudm95YW50IHVuIHNpZ25hbCBTSUdUVE9VIGF1eCBwcm9jZXNzdXMuIENlbGEgZOlzYWN0aXZlcmEgbGVzIHNvY2tldHMgZCfpY291dGUKc2FucyBjYXNzZXIgbGVzIHNlc3Npb25zIGV4aXN0YW50ZXMuIFN1aXRlIOAgY2VsYSwgbCdlbnZvaSBkJ3VuIHNpZ25hbCBTSUdUVElOCnLpYWN0aXZlcmEgbGVzIHNvY2tldHMgZCfpY291dGUuIENlY2kgZXN0IHRy6HMgcHJhdGlxdWUgcG91ciB0ZW50ZXIgZGUgY2hhcmdlcgp1bmUgbm91dmVsbGUgY29uZmlndXJhdGlvbiBvdSBt6m1lIHVuZSBub3V2ZWxsZSB2ZXJzaW9uIGRlIGhhcHJveHkgc2FucyBjYXNzZXIKbGVzIGNvbm5leGlvbnMgZXhpc3RhbnRlcy4gU2kgbGUgcmVjaGFyZ2VtZW50IHMnZWZmZWN0dWUgY29ycmVjdGVtZW50LCBpbCBuZQpyZXN0ZSBwbHVzIHF1J+AgZW52b3llciB1biBzaWduYWwgU0lHVVNSMSBhdXggYW5jaWVucyBwcm9jZXNzdXMsIGNlIHF1aQpwcm92b3F1ZXJhIGxldXIgYXJy6nQgaW1t6WRpYXQgZOhzIHF1ZSBsZXVycyBjb25uZXhpb25zIHNlcm9udCB0ZXJtaW7pZXMgOyBlbgpyZXZhbmNoZSwgc2kgbGUgcmVjaGFyZ2VtZW50IOljaG91ZSwgaWwgc3VmZml0IGQnZW52b3llciB1biBzaWduYWwgU0lHVFRJTiBwb3VyCnJlbWV0dHJlIGxlcyBwb3J0cyBlbiDpY291dGUgZXQgcul0YWJsaXIgbGUgc2VydmljZSBpbW3pZGlhdGVtZW50LiBWZXVpbGxlegpub3RlciBxdWUgbGUgcGFyYW3odHJlICdncmFjZScgZXN0IGlnbm9y6SBwb3VyIGxlIHNpZ25hbCBTSUdUVE9VIGFpbnNpIHF1ZSBsZQpzaWduYWwgU0lHVVNSMSB1bmUgZm9pcyBsZSBwcm9jZXNzdXMgZW4gcGF1c2UuIEF1c3NpLCBpbCBwZXV0IHMnYXbpcmVyIHRy6HMKdXRpbGUgZGUgc2F1dmVyIGxlIGZpY2hpZXIgZGUgcGlkIGF2YW50IGRlIGTpbWFycmVyIHVuZSBub3V2ZWxsZSBpbnN0YW5jZS4KCkNlIG3pY2FuaXNtZSBlc3QgcGxlaW5lbWVudCBleHBsb2l06SDgIHBhcnRpciBkZSBsYSB2ZXJzaW9uIDEuMi4xMSBhdmVjIGxlcwpvcHRpb25zICctc3QnIGV0ICctc2YnICh2b2lyIGNpLWRlc3NvdXMpLgoKMi40KSBSZWNvbmZpZ3VyYXRpb24g4CBjaGF1ZAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkxlcyBwYXJhbeh0cmVzICctc3QnIGV0ICctc2YnIHNvbnQgdXRpbGlz6XMgcG91ciBpbmZvcm1lciBkZXMgcHJvY2Vzc3VzCmV4aXN0YW50cyBxdWUgbGEgY29uZmlndXJhdGlvbiB2YSDqdHJlIHJlY2hhcmfpZS4gSWxzIHJlY2V2cm9udCBsZSBzaWduYWwKU0lHVFRPVSwgbGV1ciBkZW1hbmRhbnQgZGUgbGli6XJlciBsZXMgcG9ydHMgZW4g6WNvdXRlIGFmaW4gcXVlIGxlIG5vdXZlYXUKcHJvY2Vzc3VzIHB1aXNzZSBsZXMgcHJlbmRyZS4gU2kgcXVvaSBxdWUgY2Ugc29pdCBzZSBwYXNzZSBtYWwsIGxlIG5vdXZlYXUKcHJvY2Vzc3VzIGxldXIgZW52ZXJyYSB1biBzaWduYWwgU0lHVFRJTiBwb3VyIGxldXIgaW5kaXF1ZXIgcXUnaWxzIHBldXZlbnQKc2UgcmVtZXR0cmUgZW4g6WNvdXRlIGV0IGNvbnRpbnVlciBsZXVyIHRyYXZhaWwuIEVuIHJldmFuY2hlLCBzaSBsYQpjb25maWd1cmF0aW9uIHNlIGNoYXJnZSBjb3JyZWN0ZW1lbnQsIGFsb3JzIGlscyByZWNldnJvbnQgdW4gc2lnbmFsIGRlIGRlbWFuZGUKZGUgZmluIGRlIHRyYXZhaWwgZW4gZG91Y2V1ciAoLXNmKSwgb3UgZGUgdGVybWluYWlzb24gaW1t6WRpYXRlICgtc3QpIHF1aQpjb3VwZXJhIGxlcyBzZXNzaW9ucyBlbiBjb3Vycy4gVW4gdXNhZ2UgdHlwaXF1ZSB0ZWwgcXVlIGNlbHVpLWNpIHBlcm1ldCBkZQpyZWNoYXJnZXIgdW5lIGNvbmZpZ3VyYXRpb24gc2FucyBpbnRlcnJ1cHRpb24gZGUgc2VydmljZSA6CgogIyBoYXByb3h5IC1wIC92YXIvcnVuL2hhcHJveHkucGlkIC1zZiAkKGNhdCAvdmFyL3J1bi9oYXByb3h5LnBpZCkKCgoyLjUpIFRlbXBzIGQnZXhwaXJhdGlvbiBkZXMgY29ubmV4aW9ucwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpJbCBlc3QgcG9zc2libGUgZGUgcGFyYW3pdHJlciBjZXJ0YWluZXMgZHVy6WVzIGQnZXhwaXJhdGlvbiBhdSBuaXZlYXUgZGVzCmNvbm5leGlvbnMgVENQLiBUcm9pcyB0ZW1wcyBpbmTpcGVuZGFudHMgc29udCBjb25maWd1cmFibGVzIGV0IGFjY2VwdGVudCBkZXMKdmFsZXVycyBlbiBtaWxsaXNlY29uZGVzLiBTaSBsJ3VuZSBkZSBjZXMgdHJvaXMgdGVtcG9yaXNhdGlvbnMgZXN0IGTpcGFzc+llLCBsYQpzZXNzaW9uIGVzdCB0ZXJtaW7pZSDgIGNoYXF1ZSBleHRy6W1pdOkuCgogIC0gdGVtcHMgZCdhdHRlbnRlIGQndW5lIGRvbm7pZSBkZSBsYSBwYXJ0IGR1IGNsaWVudCwgb3UgZGUgbGEKICAgIHBvc3NpYmlsaXTpIGRlIGx1aSBlbnZveWVyIGRlcyBkb25u6WVzIDogImNsaXRpbWVvdXQiIDoKCiAgICAgICAgIyB0aW1lLW91dCBjbGllbnQg4CAybW4zMC4KICAgICAgICBjbGl0aW1lb3V0ICAgICAgICAxNTAwMDAKCiAgLSB0ZW1wcyBkJ2F0dGVudGUgZCd1bmUgZG9ubullIGRlIGxhIHBhcnQgZHUgc2VydmV1ciwgb3UgZGUgbGEKICAgIHBvc3NpYmlsaXTpIGRlIGx1aSBlbnZveWVyIGRlcyBkb25u6WVzIDogInNydnRpbWVvdXQiIDoKCiAgICAgICAgIyB0aW1lLW91dCBzZXJ2ZXVyIOAgMzBzLgogICAgICAgIHNydnRpbWVvdXQgICAgICAgIDMwMDAwCgogIC0gdGVtcHMgZCdhdHRlbnRlIGRlIGwn6XRhYmxpc3NlbWVudCBkJ3VuZSBjb25uZXhpb24gdmVycyB1biBzZXJ2ZXVyCiAgICAiY29udGltZW91dCIgOgoKICAgICAgICAjIG9uIGFiYW5kb25uZSBzaSBsYSBjb25uZXhpb24gbidlc3QgcGFzIOl0YWJsaWUgYXBy6HMgNCBzZWNvbmRlcwogICAgICAgIGNvbnRpbWVvdXQgICAgICAgIDQwMDAKClJlbWFycXVlcyA6Ci0tLS0tLS0tLS0tCiAgLSAiY29udGltZW91dCIgZXQgInNydnRpbWVvdXQiIG4nb250IHBhcyBkJ3V0aWxpdOkgZGFucyBsZSBjYXMgZHUgc2VydmV1ciBkZQogICAgdHlwZSAiaGVhbHRoIi4KICAtIHNvdXMgZGUgZm9ydGVzIGNoYXJnZXMsIG91IHN1ciB1biBy6XNlYXUgc2F0dXLpIG91IGTpZmVjdHVldXgsIGlsIGVzdAogICAgcG9zc2libGUgZGUgcGVyZHJlIGRlcyBwYXF1ZXRzLiBEdSBmYWl0IHF1ZSBsYSBwcmVtaehyZSByZXRyYW5zbWlzc2lvbgogICAgVENQIG4nYWl0IGxpZXUgcXUnYXUgYm91dCBkZSAzIHNlY291ZGVzLCBmaXhlciB1biB0aW1lb3V0IGRlIGNvbm5leGlvbgogICAgaW5m6XJpZXVyIOAgMyBzZWNvbmRlcyBuZSBwZXJtZXQgcGFzIGRlIHNlIHJhdHRyYXBlciBzdXIgbGEgcGVydGUKICAgIGRlIHBhcXVldHMgY2FyIGxhIHNlc3Npb24gYXVyYSDpdOkgYWJhbmRvbm7pZSBhdmFudCBsYSBwcmVtaehyZQogICAgcmV0cmFuc21pc3Npb24uIFVuZSB2YWxldXIgZGUgNCBzZWNvbmRlcyBy6WR1aXJhIGNvbnNpZOlyYWJsZW1lbnQKICAgIGxlIG5vbWJyZSBkJ+ljaGVjcyBkZSBjb25uZXhpb24uCgoyLjYpIFRlbnRhdGl2ZXMgZGUgcmVjb25uZXhpb24KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkxvcnMgZCd1biDpY2hlYyBkZSBjb25uZXhpb24gdmVycyB1biBzZXJ2ZXVyLCBpbCBlc3QgcG9zc2libGUgZGUKcmV0ZW50ZXIgKHBvdGVudGllbGxlbWVudCB2ZXJzIHVuIGF1dHJlIHNlcnZldXIsIGVuIGNhcyBkZSBy6XBhcnRpdGlvbgpkZSBjaGFyZ2UpLiBMZSBub21icmUgZGUgbm91dmVsbGVzIHRlbnRhdGl2ZXMgaW5mcnVjdHVldXNlcyBhdmFudAphYmFuZG9uIGVzdCBmb3VybmkgcGFyIGxlIHBhcmFt6HRyZSAicmV0cmllcyIuCgpFeGVtcGxlIDoKLS0tLS0tLS0tCiAgICAgICAgIyBvbiBlc3NhaWUgZW5jb3JlIHRyb2lzIGZvaXMgbWF4aQogICAgICAgIHJldHJpZXMgMwoKSWwgZXN0IOAgbm90ZXIgcXVlIGxhIHRlbnRhdGl2ZSBkZSByZWNvbm5leGlvbiBwZXV0IGFtZW5lciDgIHV0aWxpc2VyIHVuIGF1dHJlCnNlcnZldXIgc2kgbGUgcHJlbWllciBhIGRpc3BhcnUgZW50cmUgZGV1eCB0ZW50YXRpdmVzIGRlIGNvbm5leGlvbi4KCgoyLjcpIEFkcmVzc2UgZHUgc2VydmV1cgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpMZSBzZXJ2ZXVyIHZlcnMgbGVxdWVsIHNvbnQgcmVkaXJpZ+llcyBsZXMgbm91dmVsbGVzIGNvbm5leGlvbnMgZXN0IGTpZmluaSBwYXIKbGUgcGFyYW3odHJlICJkaXNwYXRjaCIgc291cyBsYSBmb3JtZSA8YWRyZXNzZV9pcD46PHBvcnQ+LiBJbCBjb3JyZXNwb25kIOAgdW4Kc2VydmV1ciBkJ2Fzc2lnbmF0aW9uIGRlIGNvb2tpZSBkYW5zIGxlIGNhcyBv+SBsZSBzZXJ2aWNlIGNvbnNpc3RlIOAgYXNzdXJlcgp1bmlxdWVtZW50IHVuZSBwZXJzaXN0ZW5jZSBIVFRQLCBvdSBiaWVuIHNpbXBsZW1lbnQgYXUgc2VydmV1ciBkZXN0aW5hdGlvbiBkYW5zCmxlIGNhcyBkZSByZWxheWFnZSBUQ1Agc2ltcGxlLiBDZXQgYW5jaWVuIG1vZGUgbmUgcGVybWV0IHBhcyBkZSB0ZXN0ZXIgbCfpdGF0CmR1IHNlcnZldXIgZGlzdGFudCwgZXQgaWwgZXN0IG1haW50ZW5hbnQgcmVjb21tYW5k6SBkJ3V0aWxpc2VyIGRlIHBy6WbpcmVuY2UKbGUgbW9kZSAnYmFsYW5jZScuCgpFeGVtcGxlIDoKLS0tLS0tLS0tCiAgICAgICAgICAgIyBvbiBlbnZvaWUgdG91dGVzIGxlcyBub3V2ZWxsZXMgY29ubmV4aW9ucyBpY2kKICAgICAgICBkaXNwYXRjaCAxOTIuMTY4LjEuMjo4MAoKUmVtYXJxdWUgOgotLS0tLS0tLS0tCkNlIHBhcmFt6HRyZSBuJ2EgcGFzIGQndXRpbGl06SBwb3VyIHVuIHNlcnZldXIgZW4gbW9kZSAnaGVhbHRoJywgbmkgZW4gbW9kZQonYmFsYW5jZScuCgoKMi44KSBBZHJlc3NlIGRlIHNvcnRpZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tCklsIGVzdCBwb3NzaWJsZSBkZSBmb3JjZXIgbCdhZHJlc3NlIHV0aWxpc+llIHBvdXIg6XRhYmxpciBsZXMgY29ubmV4aW9ucyB2ZXJzCmxlcyBzZXJ2ZXVycyDgIGwnYWlkZSBkdSBwYXJhbeh0cmUgInNvdXJjZSIuIElsIGVzdCBt6m1lIHBvc3NpYmxlIGRlIGZvcmNlciBsZQpwb3J0LCBiaWVuIHF1ZSBjZXR0ZSBmb25jdGlvbm5hbGl06SBzZSBsaW1pdGUg4CBkZXMgdXNhZ2VzIHRy6HMgc3DpY2lmaXF1ZXMuCkMnZXN0IHBhcnRpY3VsaehyZW1lbnQgdXRpbGUgZW4gY2FzIGQnYWRyZXNzYWdlIG11bHRpcGxlLCBldCBwbHVzIGfpbulyYWxlbWVudApwb3VyIHBlcm1ldHRyZSBhdXggc2VydmV1cnMgZGUgdHJvdXZlciBsZSBjaGVtaW4gZGUgcmV0b3VyIGRhbnMgZGVzIGNvbnRleHRlcwpkZSByb3V0YWdlIGRpZmZpY2lsZXMuIFNpIGwnYWRyZXNzZSBlc3QgJzAuMC4wLjAnIG91ICcqJyBvdSB2aWRlLCBlbGxlIHNlcmEKY2hvaXNpZSBsaWJyZW1lbnQgcGFyIGxlIHN5c3RlbWUuIFNpIGxlIHBvcnQgZXN0ICcwJyBvdSB2aWRlLCBpbCBzZXJhIGNob2lzaQpsaWJyZW1lbnQgcGFyIGxlIHN5c3TobWUuIElsIGVzdCDgIG5vdGVyIHF1ZSBkZXB1aXMgbGEgdmVyc2lvbiAxLjEuMTgsIGxlcwp0ZXN0cyBkZSBib24gZm9uY3Rpb25uZW1lbnQgZGVzIHNlcnZldXJzIHNlcm9udCBhdXNzaSBlZmZlY3R16XMg4CBwYXJ0aXIgZGUgbGEKc291cmNlIHNw6WNpZmnpZSBwYXIgY2UgcGFyYW3odHJlLgoKRXhlbXBsZXMgOgotLS0tLS0tLS0tCiAgICBsaXN0ZW4gaHR0cF9wcm94eSAqOjgwCiAgICAgICAgICAgIyB0b3V0ZXMgbGVzIGNvbm5leGlvbnMgcHJlbm5lbnQgbCdhZHJlc3NlIDE5Mi4xNjguMS4yMDAKICAgICAgICBzb3VyY2UgMTkyLjE2OC4xLjIwMDowCgogICAgbGlzdGVuIHJsb2dpbl9wcm94eSAqOjUxMwogICAgICAgICAgICMgdXRpbGlzZXIgbCdhZHJlc3NlIDE5Mi4xNjguMS4yMDAgZXQgbGUgcG9ydCBy6XNlcnbpIDkwMAogICAgICAgIHNvdXJjZSAxOTIuMTY4LjEuMjAwOjkwMAoKCjIuOSkgROlmaW5pdGlvbiBkdSBub20gZHUgY29va2llCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkVuIG1vZGUgSFRUUCwgaWwgZXN0IHBvc3NpYmxlIGRlIHJlY2hlcmNoZXIgbGEgdmFsZXVyIGQndW4gY29va2llIHBvdXIgc2F2b2lyCnZlcnMgcXVlbCBzZXJ2ZXVyIGFpZ3VpbGxlciBsYSByZXF16nRlIHV0aWxpc2F0ZXVyLiBMZSBub20gZHUgY29va2llIGVzdCBkb25u6QpwYXIgbGUgcGFyYW3odHJlICJjb29raWUiLgoKRXhlbXBsZSA6Ci0tLS0tLS0tLQogICAgbGlzdGVuIGh0dHBfcHJveHkgOjgwCiAgICAgICAgbW9kZSBodHRwCiAgICAgICAgY29va2llIFNFUlZFUklECgpPbiBwZXV0IG1vZGlmaWVyIGwndXRpbGlzYXRpb24gZHUgY29va2llIHBvdXIgbGEgcmVuZHJlIHBsdXMgaW50ZWxsaWdlbnRlCnZpcy3gLXZpcyBkZXMgYXBwbGljYXRpb25zIHJlbGF56WVzLiBJbCBlc3QgcG9zc2libGUsIG5vdGFtbWVudCBkZSBzdXBwcmltZXIgb3UKcunpY3JpcmUgdW4gY29va2llIHJldG91cm7pIHBhciB1biBzZXJ2ZXVyIGFjY+lk6SBlbiBkaXJlY3QsIGV0IGQnaW5z6XJlciB1bgpjb29raWUgZGFucyB1bmUgculwb25zZSBIVFRQIGFkcmVzc+llIOAgdW4gc2VydmV1ciBz6WxlY3Rpb25u6SBlbiBy6XBhcnRpdGlvbgpkZSBjaGFyZ2UsIGV0IG3qbWUgZGUgc2lnbmFsZXIgYXV4IHByb3hpZXMgYW1vbnQgZGUgbmUgcGFzIGNhY2hlciBsZSBjb29raWUKaW5z6XLpLgoKRXhlbXBsZXMgOgotLS0tLS0tLS0tCgpQb3VyIG5lIGNvbnNlcnZlciBsZSBjb29raWUgcXUnZW4gYWNj6HMgaW5kaXJlY3QsIGRvbmMg4CB0cmF2ZXJzIGxlCmRpc3BhdGNoZXVyLCBldCBzdXBwcmltZXIgdG91dGVzIHNlcyDpdmVudHVlbGxlcyBvY2N1cmVuY2VzIGxvcnMgZGVzIGFjY+hzCmRpcmVjdHMgOgoKICAgICAgICBjb29raWUgU0VSVkVSSUQgaW5kaXJlY3QKClBvdXIgcmVtcGxhY2VyIGxhIHZhbGV1ciBkJ3VuIGNvb2tpZSBleGlzdGFudCBwYXIgY2VsbGUgYXR0cmlidellIOAgdW4gc2VydmV1ciwKbG9ycyBkJ3VuIGFjY+hzIGRpcmVjdCA6CgogICAgICAgIGNvb2tpZSBTRVJWRVJJRCByZXdyaXRlCgpQb3VyIGNy6WVyIHVuIGNvb2tpZSBjb21wb3J0YW50IGxhIHZhbGV1ciBhdHRyaWJ16WUg4CB1biBzZXJ2ZXVyIGxvcnMgZCd1bgphY2PocyBlbiBy6XBhcnRpdGlvbiBkZSBjaGFyZ2UgaW50ZXJuZS4gRGFucyBjZSBjYXMsIGlsIGVzdCBzb3VoYWl0YWJsZSBxdWUKdG91cyBsZXMgc2VydmV1cnMgYWllbnQgdW4gY29va2llIHJlbnNlaWdu6S4gVW4gc2VydmV1ciBub24gYXNzaWdu6SBkJ3VuIGNvb2tpZQpyZXRvdXJuZXJhIHVuIGNvb2tpZSB2aWRlIChjb29raWUgZGUgc3VwcHJlc3Npb24pIDoKCiAgICAgICAgY29va2llIFNFUlZFUklEIGluc2VydAoKUG91ciBy6XV0aWxpc2VyIHVuIGNvb2tpZSBhcHBsaWNhdGlmIGV0IGx1aSBwculmaXhlciBsJ2lkZW50aWZpYW50IGR1IHNlcnZldXIsCnB1aXMgbGUgc3VwcHJpbWVyIGRhbnMgbGVzIHJlcXXqdGVzIHN1aXZhbnRlcywgdXRpbGlzZXIgbCdvcHRpb24gJ3ByZWZpeCcuIEVsbGUKcGVybWV0IGQnaW5z6XJlciB1bmUgaW5zdGFuY2UgZGUgaGFwcm94eSBkZXZhbnQgdW5lIGFwcGxpY2F0aW9uIHNhbnMgcmlzcXVlcgpkJ2luY29tcGF0aWJpbGl06XMgZPtlcyDgIGRlcyBjbGllbnRzIHF1aSBuZSBzdXBwb3J0ZXJhaWVudCBwYXMgZCdhcHByZW5kcmUKcGx1cyBkJ3VuIGNvb2tpZSA6CgogICAgICAgY29va2llIEpTRVNTSU9OSUQgcHJlZml4CgpQb3VyIGluc+lyZXIgdW4gY29va2llLCBlbiBzJ2Fzc3VyYW50IHF1J3VuIGNhY2hlIGVuIGFtb250IG5lIGxlIHN0b2NrZXJhIHBhcywKYWpvdXRlciBsZSBtb3QgY2zpICdub2NhY2hlJyBhcHLocyAnaW5zZXJ0JyA6CgogICAgICAgIGNvb2tpZSBTRVJWRVJJRCBpbnNlcnQgbm9jYWNoZQoKUG91ciBpbnPpcmVyIHVuIGNvb2tpZSBzZXVsZW1lbnQgc3VpdGUgYXV4IHJlcXXqdGVzIGRlIHR5cGUgUE9TVCwgYWpvdXRlciBsZQptb3QgY2zpICdwb3N0b25seScgYXBy6HMgJ2luc2VydCcgOgoKICAgICAgICBjb29raWUgU0VSVkVSSUQgaW5zZXJ0IHBvc3Rvbmx5CgoKUmVtYXJxdWVzIDoKLS0tLS0tLS0tLS0KLSBJbCBlc3QgcG9zc2libGUgZGUgY29tYmluZXIgJ2luc2VydCcgYXZlYyAnaW5kaXJlY3QnIG91ICdyZXdyaXRlJyBwb3VyCiAgcydhZGFwdGVyIOAgZGVzIGFwcGxpY2F0aW9ucyBn6W7pcmFudCBk6WrgIGxlIGNvb2tpZSwgYXZlYyB1biBjb250ZW51CiAgaW52YWxpZGUuIElsIHN1ZmZpdCBwb3VyIGNlbGEgZGUgbGVzIHNw6WNpZmllciBzdXIgbGEgbeptZSBsaWduZS4KCi0gZGFucyBsZSBjYXMgb/kgJ2luc2VydCcgZXQgJ2luZGlyZWN0JyBzb250IHNw6WNpZmnpcywgbGUgY29va2llIG4nZXN0IGphbWFpcwogIHRyYW5zbWlzIGF1IHNlcnZldXIgdnUgcXUnaWwgbidlbiBhIHBhcyBjb25uYWlzc2FuY2UgZXQgbmUgcG91cnJhaXQgcGFzIGxlCiAgY29tcHJlbmRyZS4KCi0gaWwgZXN0IHBhcnRpY3VsaehyZW1lbnQgcmVjb21tYW5k6SBkJ3V0aWxpc2VyICdub2NhY2hlJyBlbiBtb2RlIGluc2VydGlvbiBzaQogIGRlcyBjYWNoZXMgcGV1dmVudCBzZSB0cm91dmVyIGVudHJlIGxlcyBjbGllbnRzIGV0IGwnaW5zdGFuY2UgZHUgcHJveHkuIERhbnMKICBsZSBjYXMgY29udHJhaXJlLCB1biBjYWNoZSBIVFRQIDEuMCBwb3VycmFpdCBjYWNoZXIgbGEgculwb25zZSwgaW5jbHVhbnQgbGUKICBjb29raWUgZGUgcGVyc2lzdGVuY2UgaW5z6XLpLCBkb25jIHByb3ZvcXVlciBkZXMgY2hhbmdlbWVudHMgZGUgc2VydmV1cnMgcG91cgogIGRlcyBjbGllbnRzIHBhcnRhZ2VhbnQgbGUgbeptZSBjYWNoZS4KCi0gbGUgbW9kZSAncHJlZml4JyBuZSBu6WNlc3NpdGUgcGFzIGQndXRpbGlzZXIgJ2luZGlyZWN0JywgJ25vY2FjaGUnLCBuaQogICdwb3N0b25seScsIGNhciB0b3V0IGNvbW1lIGxlIG1vZGUgJ3Jld3JpdGUnLCBpbCBzJ2FwcHVpZSBzdXIgdW4gY29va2llCiAgcHLpc2VudOkgcGFyIGwnYXBwbGljYXRpb24gcXVpIGVzdCBjZW5z6WUgc2F2b2lyIOAgcXVlbCBtb21lbnQgaWwgcGV1dAogIOp0cmUg6W1pcyBzYW5zIHJpc3F1ZS4gVG91dGVmb2lzLCBjb21tZSBpbCBu6WNlc3NpdGUgZGUgcmVjdGlmaWVyIGxlIGNvb2tpZQogIHBy6XNlbnTpIHBhciBsZSBjbGllbnQgZGFucyBjaGFxdWUgcmVxdep0ZSB1bHTpcmlldXJlLCBpbCBlc3QgaW5kaXNwZW5zYWJsZQogIGRlIHMnYXNzdXJlciBxdWUgbGUgY2xpZW50IGV0IGxlIHNlcnZldXIgY29tbXVuaXF1ZXJvbnQgc2FucyAia2VlcC1hbGl2ZQogIEhUVFAiLiBEYW5zIGxlIGRvdXRlLCBpbCBlc3QgcmVjb21tYW5k6SBkJ3V0aWxpc2VyIGwnb3B0aW9uICJodHRwY2xvc2UiLgoKLSBsb3JzcXVlIGwnYXBwbGljYXRpb24gZXN0IGJpZW4gY29ubnVlLCBldCBxdWUgbGVzIHBhcnRpZXMgbuljZXNzaXRhbnQgZGUgbGEKICBwZXJzaXN0ZW5jZSBzb250IHN5c3TpbWF0aXF1ZW1lbnQgYWNj6WTpZXMgcGFyIHVuIGZvcm11bGFpcmUgZW4gbW9kZSBQT1NULAogIGlsIGVzdCBwbHVzIGVmZmljYWNlIGVuY29yZSBkZSBjb21iaW5lciBsZSBtb3QgY2zpICJwb3N0b25seSIgYXZlYyAiaW5zZXJ0IgogIGV0ICJpbmRpcmVjdCIsIGNhciBsYSBwYWdlIGQnYWNjdWVpbCByZXN0ZSBjYWNoYWJsZSwgZXQgYydlc3QgbCdhcHBsaWNhdGlvbgogIHF1aSBn6HJlIGxlICdjYWNoZS1jb250cm9sJy4KCjIuMTApIEFzc2lnbmF0aW9uIGQndW4gc2VydmV1ciDgIHVuZSB2YWxldXIgZGUgY29va2llCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KRW4gbW9kZSBIVFRQLCBpbCBlc3QgcG9zc2libGUgZCdhc3NvY2llciBkZXMgdmFsZXVycyBkZSBjb29raWUg4CBkZXMgc2VydmV1cnMKcGFyIGxlIHBhcmFt6HRyZSAnc2VydmVyJy4gTGEgc3ludGF4ZSBlc3QgOgoKICAgIHNlcnZlciA8aWRlbnRpZmlhbnQ+IDxhZHJlc3NlX2lwPjo8cG9ydD4gY29va2llIDx2YWxldXI+CgotIDxpZGVudGlmaWFudD4gZXN0IHVuIG5vbSBxdWVsY29ucXVlIGRlIHNlcnZldXIgdXRpbGlz6SBwb3VyIGwnaWRlbnRpZmllciBkYW5zIGxhCiAgY29uZmlndXJhdGlvbiBldCBsZXMgbG9ncy4KLSA8YWRyZXNzZV9pcD46PHBvcnQ+IGVzdCBsZSBjb3VwbGUgYWRyZXNzZS1wb3J0IHN1ciBsZXF1ZWwgbGUgc2VydmV1ciDpY291dGUuCi0gPHZhbGV1cj4gZXN0IGxhIHZhbGV1ciDgIHJlY29ubmHudHJlIG91IHBvc2l0aW9ubmVyIGRhbnMgbGUgY29va2llLgoKRXhlbXBsZSA6IGxlIGNvb2tpZSBTRVJWRVJJRCBwZXV0IGNvbnRlbmlyIHNlcnZlcjAxIG91IHNlcnZlcjAyCi0tLS0tLS0tLQogICAgbGlzdGVuIGh0dHBfcHJveHkgOjgwCiAgICAgICAgbW9kZSBodHRwCiAgICAgICAgY29va2llIFNFUlZFUklECiAgICAgICAgZGlzcGF0Y2ggMTkyLjE2OC4xLjEwMDo4MAogICAgICAgIHNlcnZlciB3ZWIxIDE5Mi4xNjguMS4xOjgwIGNvb2tpZSBzZXJ2ZXIwMQogICAgICAgIHNlcnZlciB3ZWIyIDE5Mi4xNjguMS4yOjgwIGNvb2tpZSBzZXJ2ZXIwMgoKQXR0ZW50aW9uIDogbGEgc3ludGF4ZSBhIGNoYW5n6SBkZXB1aXMgbGEgdmVyc2lvbiAxLjAuCi0tLS0tLS0tLS0tCgozKSBS6XBhcnRpdGV1ciBkZSBjaGFyZ2UgYXV0b25vbWUKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CgpMZSByZWxhaXMgcGV1dCBlZmZlY3R1ZXIgbHVpLW3qbWUgbGEgculwYXJ0aXRpb24gZGUgY2hhcmdlIGVudHJlIGxlcyBkaWZm6XJlbnRzCnNlcnZldXJzIGTpZmluaXMgcG91ciB1biBzZXJ2aWNlIGRvbm7pLCBlbiBtb2RlIFRDUCBjb21tZSBlbiBtb2RlIEhUVFAuIFBvdXIKY2VsYSwgb24gcHLpY2lzZSBsZSBtb3QgY2zpICdiYWxhbmNlJyBkYW5zIGxhIGTpZmluaXRpb24gZHUgc2VydmljZSwK6XZlbnR1ZWxsZW1lbnQgc3VpdmkgZHUgbm9tIGQndW4gYWxnb3JpdGhtZSBkZSBy6XBhcnRpdGlvbi4gSnVzcXUn4CBsYSB2ZXJzaW9uCjEuMi4xMSwgc2V1bCAncm91bmRyb2Jpbicg6XRhaXQgZ+ly6SwgZXQgYydlc3QgYXVzc2kgbGEgdmFsZXVyIGltcGxpY2l0ZSBwYXIKZOlmYXV0LiBBdmVjIGxhIHZlcnNpb24gMS4yLjEyLCBsZSBub3V2ZWF1IG1vdCBjbOkgJ3NvdXJjZScgZXN0IGFwcGFydS4gTGEKdmVyc2lvbiAxLjMuMTAgYSDpZ2FsZW1lbnQgYXBwb3J06SBsZSBtb3QgY2zpICd1cmknLiBJbCBlc3Qg6XZpZGVudCBxdSdlbiBjYXMKZCd1dGlsaXNhdGlvbiBkdSBy6XBhcnRpdGV1ciBpbnRlcm5lLCBpbCBuZSBmYXVkcmEgcGFzIHNw6WNpZmllciBkJ2FkcmVzc2UgZGUKZGlzcGF0Y2gsIGV0IHF1J2lsIGZhdWRyYSBhdSBtb2lucyB1biBzZXJ2ZXVyLgoKRXhlbXBsZSA6IG3qbWUgcXVlIHBy6WPpZGVtbWVudCBlbiBy6XBhcnRpdGlvbiBpbnRlcm5lCi0tLS0tLS0tLQoKICAgIGxpc3RlbiBodHRwX3Byb3h5IDo4MAogICAgICAgIG1vZGUgaHR0cAogICAgICAgIGNvb2tpZSBTRVJWRVJJRAogICAgICAgIGJhbGFuY2Ugcm91bmRyb2JpbgogICAgICAgIHNlcnZlciB3ZWIxIDE5Mi4xNjguMS4xOjgwIGNvb2tpZSBzZXJ2ZXIwMQogICAgICAgIHNlcnZlciB3ZWIyIDE5Mi4xNjguMS4yOjgwIGNvb2tpZSBzZXJ2ZXIwMgoKRGVwdWlzIGxhIHZlcnNpb24gMS4xLjIyLCBpbCBlc3QgcG9zc2libGUgZGUgZOl0ZXJtaW5lciBhdXRvbWF0aXF1ZW1lbnQgbGUgcG9ydApkdSBzZXJ2ZXVyIHZlcnMgbGVxdWVsIHNlcmEgZW52b3npZSBsYSBjb25uZXhpb24sIGVuIGZvbmN0aW9uIGR1IHBvcnQgZCfpY291dGUKc3VyIGxlcXVlbCBsZSBjbGllbnQgcydlc3QgY29ubmVjdOkuIEVuIGVmZmV0LCBpbCB5IGEgNCBwb3NzaWJpbGl06XMgcG91ciBsZQpjaGFtcCA8cG9ydD4gZGUgbCdhZHJlc3NlIHNlcnZldXIgOgoKICAtIG5vbiBzcOljaWZp6SBvdSBudWwgOgogICAgbGEgY29ubmV4aW9uIHNlcmEgZW52b3npZSBhdSBzZXJ2ZXVyIHN1ciBsZSBt6m1lIHBvcnQgcXVlIGNlbHVpIHN1cgogICAgbGVxdWVsIGxlIHJlbGFpcyBhIHJl53UgbGEgY29ubmV4aW9uLgoKICAtIHZhbGV1ciBudW3pcmlxdWUgKHNldWwgY2FzIHN1cHBvcnTpIHBvdXIgbGVzIHZlcnNpb25zIGFudOlyaWV1cmVzKSA6CiAgICBsZSBzZXJ2ZXVyIHJlY2V2cmEgbGEgY29ubmV4aW9uIHN1ciBsZSBwb3J0IGTpc2lnbukuCgogIC0gdmFsZXVyIG51belyaXF1ZSBwculj6WTpZSBkJ3VuIHNpZ25lICcrJyA6CiAgICBsYSBjb25uZXhpb24gc2VyYSBlbnZveellIGF1IHNlcnZldXIgc3VyIGxlIG3qbWUgcG9ydCBxdWUgY2VsdWkgc3VyCiAgICBsZXF1ZWwgbGUgcmVsYWlzIGEgcmXndSBsYSBjb25uZXhpb24sIGF1cXVlbCBvbiBham91dGUgbGEgdmFsZXVyIGTpc2lnbullLgogICAgCiAgLSB2YWxldXIgbnVt6XJpcXVlIHBy6WPpZOllIGQndW4gc2lnbmUgJy0nIDoKICAgIGxhIGNvbm5leGlvbiBzZXJhIGVudm956WUgYXUgc2VydmV1ciBzdXIgbGUgbeptZSBwb3J0IHF1ZSBjZWx1aSBzdXIKICAgIGxlcXVlbCBsZSByZWxhaXMgYSByZed1IGxhIGNvbm5leGlvbiwgZHVxdWVsIG9uIHNvdXN0cmFpdCBsYSB2YWxldXIKICAgIGTpc2lnbullLgogICAgCkV4ZW1wbGVzIDoKLS0tLS0tLS0tLQoKIyBt6m1lIHF1ZSBwculj6WRlbW1lbnQKCiAgICBsaXN0ZW4gaHR0cF9wcm94eSA6ODAKICAgICAgICBtb2RlIGh0dHAKICAgICAgICBjb29raWUgU0VSVkVSSUQKICAgICAgICBiYWxhbmNlIHJvdW5kcm9iaW4KICAgICAgICBzZXJ2ZXIgd2ViMSAxOTIuMTY4LjEuMSBjb29raWUgc2VydmVyMDEKICAgICAgICBzZXJ2ZXIgd2ViMiAxOTIuMTY4LjEuMiBjb29raWUgc2VydmVyMDIKCiMgcmVsYXlhZ2Ugc2ltdWx0YW7pIGRlcyBwb3J0cyA4MCBldCA4MSBldCA4MDgwLTgwODkKCiAgICBsaXN0ZW4gaHR0cF9wcm94eSA6ODAsOjgxLDo4MDgwLTgwODkKICAgICAgICBtb2RlIGh0dHAKICAgICAgICBjb29raWUgU0VSVkVSSUQKICAgICAgICBiYWxhbmNlIHJvdW5kcm9iaW4KICAgICAgICBzZXJ2ZXIgd2ViMSAxOTIuMTY4LjEuMSBjb29raWUgc2VydmVyMDEKICAgICAgICBzZXJ2ZXIgd2ViMiAxOTIuMTY4LjEuMiBjb29raWUgc2VydmVyMDIKCiMgcmVsYXlhZ2UgVENQIGRlcyBwb3J0cyAyNSwgMzg5IGV0IDY2MyB2ZXJzIGxlcyBwb3J0cyAxMDI1LCAxMzg5IGV0IDE2NjMKCiAgICBsaXN0ZW4gaHR0cF9wcm94eSA6MjUsOjM4OSw6NjYzCiAgICAgICAgbW9kZSB0Y3AKICAgICAgICBiYWxhbmNlIHJvdW5kcm9iaW4KICAgICAgICBzZXJ2ZXIgc3J2MSAxOTIuMTY4LjEuMTorMTAwMAogICAgICAgIHNlcnZlciBzcnYyIDE5Mi4xNjguMS4yOisxMDAwCgpDb21tZSBpbmRpcXXpIHBy6WPpZGVtbWVudCwgbGEgdmVyc2lvbiAxLjIuMTIgYXBwb3J0YSBsZSBub3V2ZWF1IG1vdCBjbOkKJ3NvdXJjZScuIExvcnNxdWUgY2VsdWktY2kgZXN0IHV0aWxpc+ksIGwnYWRyZXNzZSBJUCBkdSBjbGllbnQgZXN0IGhhY2jpZSBldApkaXN0cmlidellIGRlIG1hbmnocmUgaG9tb2fobmUgcGFybWkgbGVzIHNlcnZldXJzIGRpc3BvbmlibGVzLCBkZSBzb3J0ZSBxdSd1bmUKbeptZSBhZHJlc3NlIElQIGFpbGxlIHRvdWpvdXJzIHN1ciBsZSBt6m1lIHNlcnZldXIgdGFudCBxdSdpbCBuJ3kgYSBhdWN1bgpjaGFuZ2VtZW50IGRhbnMgbGUgbm9tYnJlIGRlIHNlcnZldXJzIGRpc3BvbmlibGVzLiBDZWNpIHBldXQg6nRyZSB1dGlsaXPpIHBhcgpleGVtcGxlIHBvdXIgYXR0YWNoZXIgbGUgSFRUUCBldCBsZSBIVFRQUyBzdXIgdW4gbeptZSBzZXJ2ZXVyIHBvdXIgdW4gbeptZQpjbGllbnQuIENlbGEgcGV1dCDpZ2FsZW1lbnQg6nRyZSB1dGlsaXPpIHBvdXIgYW3pbGlvcmVyIGxhIHBlcnNpc3RhbmNlCmxvcnNxdSd1bmUgcGFydGllIGRlIGxhIHBvcHVsYXRpb24gZGVzIGNsaWVudHMgbidhY2NlcHRlIHBhcyBsZXMgY29va2llcy4gRGFucwpjZSBjYXMsIHNldWxzIGNlcyBkZXJuaWVycyBzZXJvbnQgcGVydHVyYulzIHBhciBsYSBwZXJ0ZSBkJ3VuIHNlcnZldXIuCgpOT1RFOiBpbCBlc3QgaW1wb3J0YW50IGRlIHByZW5kcmUgZW4gY29tcHRlIGxlIGZhaXQgcXVlIGJlYXVjb3VwIGQnaW50ZXJuYXV0ZXMKICAgICAgbmF2aWd1ZW50IOAgdHJhdmVycyBkZXMgZmVybWVzIGRlIHByb3hpZXMgcXVpIGFzc2lnbmVudCBkZXMgYWRyZXNzZXMgSVAKICAgICAgZGlmZulyZW50ZXMg4CBjaGFxdWUgcmVxdep0ZS4gRCdhdXRyZXMgaW50ZXJuYXV0ZXMgdXRpbGlzZW50IGRlcyBsaWVucyDgCiAgICAgIGxhIGRlbWFuZGUgZXQgb2J0aWVubmVudCB1bmUgYWRyZXNzZSBJUCBkaWZm6XJlbnRlIOAgY2hhcXVlIGNvbm5leGlvbi4gRGUKICAgICAgY2UgZmFpdCwgbGUgcGFyYW3odHJlICdzb3VyY2UnIGRvaXQg6nRyZSB1dGlsaXPpIGF2ZWMgdW5lIGV4dHLobWUKICAgICAgcHLpY2F1dGlvbi4KCkV4ZW1wbGVzIDoKLS0tLS0tLS0tLQoKIyBhc3N1cmVyIHF1J3VuZSBt6m1lIGFkcmVzc2UgSVAgaXJhIHN1ciBsZSBt6m1lIHNlcnZldXIgcG91ciB0b3V0IHNlcnZpY2UKCiAgICBsaXN0ZW4gaHR0cF9wcm94eQogICAgICAgIGJpbmQgOjgwLDo0NDMKICAgICAgICBtb2RlIGh0dHAKICAgICAgICBiYWxhbmNlIHNvdXJjZQogICAgICAgIHNlcnZlciB3ZWIxIDE5Mi4xNjguMS4xCiAgICAgICAgc2VydmVyIHdlYjIgMTkyLjE2OC4xLjIKCiMgYW3pbGlvcmVyIGxhIHBlcnNpc3RhbmNlIHBhciBsJ3V0aWxpc2F0aW9uIGRlIGxhIHNvdXJjZSBlbiBwbHVzIGR1IGNvb2tpZSA6CgogICAgbGlzdGVuIGh0dHBfcHJveHkgOjgwCiAgICAgICAgbW9kZSBodHRwCiAgICAgICAgY29va2llIFNFUlZFUklECiAgICAgICAgYmFsYW5jZSBzb3VyY2UKICAgICAgICBzZXJ2ZXIgd2ViMSAxOTIuMTY4LjEuMSBjb29raWUgc2VydmVyMDEKICAgICAgICBzZXJ2ZXIgd2ViMiAxOTIuMTY4LjEuMiBjb29raWUgc2VydmVyMDIKCkRlIHBsdXMsIHRlbCBxdSdpbmRpcXXpIGNpLWRlc3N1cywgbGEgdmVyc2lvbiAxLjMuMTAgYSBpbnRyb2R1aXQgbGUgbW90IGNs6QondXJpJy4gSWwgZXN0IHRy6HMgcHJhdGlxdWUgZGFucyBsZSBjYXMgZGUgculwYXJ0aXRpb24gZGUgY2hhcmdlIGVudHJlIGRlcwpyZXZlcnNlLXByb3h5LWNhY2hlcywgcGFyY2UgcXUnaWwgdXRpbGlzZXJhIGxlIHLpc3VsdGF0IGQndW4gaGFjaGFnZSBkZSBsJ1VSSQpwb3VyIGNob2lzaXIgdW4gc2VydmV1ciwgY2UgcXVpIGF1cmEgcG91ciBlZmZldCBkJ29wdGltaXNlciBsZSB0YXV4IGRlIGNhY2hlCmR1IGZhaXQgcXVlIGxhIG3qbWUgVVJJIHNlcmEgdG91am91cnMgZW52b3npZSBhdSBt6m1lIGNhY2hlLiBDZSBtb3QtY2zpIG4nZXN0CmF1dG9yaXPpIHF1J2VuIG1vZGUgSFRUUC4KCkV4YW1wbGUgOgotLS0tLS0tLS0KCiMgRW52b2llIHRvdWpvdXJzIHVuZSBVUkkgZG9ubullIGF1IG3qbWUgc2VydmV1cgoKICAgIGxpc3RlbiBodHRwX3Byb3h5CiAgICAgICAgYmluZCA6MzEyOAogICAgICAgIG1vZGUgaHR0cAogICAgICAgIGJhbGFuY2UgdXJpCiAgICAgICAgc2VydmVyIHNxdWlkMSAxOTIuMTY4LjEuMQogICAgICAgIHNlcnZlciBzcXVpZDIgMTkyLjE2OC4xLjIKCgozLjEpIFN1cnZlaWxsYW5jZSBkZXMgc2VydmV1cnMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCklsIGVzdCBwb3NzaWJsZSBkZSB0ZXN0ZXIgbCfpdGF0IGRlcyBzZXJ2ZXVycyBwYXIg6XRhYmxpc3NlbWVudCBkZSBjb25uZXhpb24KVENQIG91IHBhciBlbnZvaSBkJ3VuZSByZXF16nRlIEhUVFAuIFVuIHNlcnZldXIgaG9ycyBkJ3VzYWdlIG5lIHNlcmEgcGFzCnV0aWxpc+kgZGFucyBsZSBwcm9jZXNzdXMgZGUgculwYXJ0aXRpb24gZGUgY2hhcmdlIGludGVybmUuIFBvdXIgYWN0aXZlciBsYQpzdXJ2ZWlsbGFuY2UsIGFqb3V0ZXIgbGUgbW90IGNs6SAnY2hlY2snIOAgbGEgZmluIGRlIGxhIGTpY2xhcmF0aW9uIGR1IHNlcnZldXIuCklsIGVzdCBwb3NzaWJsZSBkZSBzcOljaWZpZXIgbCdpbnRlcnZhbGxlIChlbiBtaWxsaXNlY29uZGVzKSBz6XBhcmFudCBkZXV4CnRlc3RzIGR1IHNlcnZldXIgcGFyIGxlIHBhcmFt6HRyZSAiaW50ZXIiLCBsZSBub21icmUgZCfpY2hlY3MgYWNjZXB06XMgcGFyIGxlCnBhcmFt6HRyZSAiZmFsbCIsIGV0IGxlIG5vbWJyZSBkZSBzdWNj6HMgYXZhbnQgcmVwcmlzZSBwYXIgbGUgcGFyYW3odHJlICJyaXNlIi4KTGVzIHBhcmFt6HRyZXMgbm9uIHBy6WNpc+lzIHByZW5uZW50IGxlcyB2YWxldXJzIHN1aXZhbnRlcyBwYXIgZOlmYXV0IDoKCiAtIGludGVyIDogMjAwMAogLSByaXNlICA6IDIKIC0gZmFsbCAgOiAzCiAtIHBvcnQgIDogcG9ydCBkZSBjb25uZXhpb24gZHUgc2VydmV1cgogLSBhZGRyICA6IGFkcmVzc2UgZGUgY29ubmV4aW9uIGR1IHNlcnZldXIgKHBhciBkZWZhdXQ6IGFkcmVzc2UgZHUgc2VydmV1cikKIApMZSBtb2RlIHBhciBk6WZhdXQgY29uc2lzdGUg4CDpdGFibGlyIGRlcyBjb25uZXhpb25zIFRDUCB1bmlxdWVtZW50LiBEYW5zCmNlcnRhaW5zIGNhcyBkZSBwYW5uZXMsIGRlcyBzZXJ2ZXVycyBwZXV2ZW50IGNvbnRpbnVlciDgIGFjY2VwdGVyIGxlcwpjb25uZXhpb25zIHNhbnMgbGVzIHRyYWl0ZXIuIERlcHVpcyBsYSB2ZXJzaW9uIDEuMS4xNiwgaGFwcm94eSBlc3QgZW4gbWVzdXJlCmQnZW52b3llciBkZXMgcmVxdep0ZXMgSFRUUCBjb3VydGVzIGV0IHRy6HMgcGV1IGNv+3RldXNlcy4gTGVzIHZlcnNpb25zIDEuMS4xNgpldCAxLjEuMTcgdXRpbGlzZW50ICJPUFRJT05TIC8gSFRUUC8xLjAiLiBEYW5zIGxlcyB2ZXJzaW9ucyAxLjEuMTgg4CAxLjEuMjAsCmxlcyByZXF16nRlcyBvbnQg6XTpIGNoYW5n6WVzIGVuICJPUFRJT05TICogSFRUUC8xLjAiIHBvdXIgZGVzIHJhaXNvbnMgZGUKY29udHL0bGUgZCdhY2PocyBhdXggcmVzc291cmNlcy4gQ2VwZW5kYW50LCBjZXR0ZSByZXF16nRlIGRvY3VtZW506WUgZGFucyBsYQpSRkMyMDY4IG4nZXN0IHBhcyBjb21wcmlzZSBwYXIgdG91cyBsZXMgc2VydmV1cnMuIERvbmMg4CBwYXJ0aXIgZGUgbGEgdmVyc2lvbgoxLjEuMjEsIGxhIHJlcXXqdGUgcGFyIGTpZmF1dCBlc3QgcmV2ZW51ZSDgICJPUFRJT05TIC8gSFRUUC8xLjAiLCBtYWlzIGlsIGVzdApwb3NzaWJsZSBkZSBwYXJhbel0cmVyIGxhIHBhcnRpZSBVUkkuIExlcyByZXF16nRlcyBPUFRJT05TIHBy6XNlbnRlbnQKbCdhdmFudGFnZSBkJ+p0cmUgZmFjaWxlbWVudCBleHRyYWN0aWJsZXMgZGVzIGxvZ3MsIGV0IGRlIG5lIHBhcyBpbmR1aXJlCmQnYWNj6HMgYXV4IGZpY2hpZXJzIGP0dOkgc2VydmV1ci4gU2V1bGVzIGxlcyBy6XBvbnNlcyAyeHggZXQgM3h4IHNvbnQKY29uc2lk6XLpZXMgdmFsaWRlcywgbGVzIGF1dHJlcyAoeSBjb21wcmlzIG5vbi1y6XBvbnNlcykgYWJvdXRpc3NlbnQg4CB1bgrpY2hlYy4gTGUgdGVtcHMgbWF4aW1hbCBpbXBhcnRpIHBvdXIgdW5lIHLpcG9uc2UgZXN0IOlnYWwg4CBsJ2ludGVydmFsbGUgZW50cmUKZGV1eCB0ZXN0cyAocGFyYW3odHJlICJpbnRlciIpLiBQb3VyIGFjdGl2ZXIgY2UgbW9kZSwgc3DpY2lmaWVyIGwnb3B0aW9uCiJodHRwY2hrIiwg6XZlbnR1ZWxsZW1lbnQgc3VpdmllIGQndW5lIG3pdGhvZGUgZXQgZCd1bmUgVVJJLiBMJ29wdGlvbiAiaHR0cGNoayIKYWNjZXB0ZSBkb25jIDQgZm9ybWVzIDoKCiAgLSBvcHRpb24gaHR0cGNoayAgICAgICAgICAgICAgIC0+IE9QVElPTlMgLyBIVFRQLzEuMAogIC0gb3B0aW9uIGh0dHBjaGsgVVJJICAgICAgICAgICAtPiBPUFRJT05TIDxVUkk+IEhUVFAvMS4wCiAgLSBvcHRpb24gaHR0cGNoayBNRVRIIFVSSSAgICAgIC0+IDxNRVRIPiA8VVJJPiBIVFRQLzEuMAogIC0gb3B0aW9uIGh0dHBjaGsgTUVUSCBVUkkgVkVSICAtPiA8TUVUSD4gPFVSST4gPFZFUj4KCkhBUHJveHkgZXN0IHNvdXZlbnQgdXRpbGlz6SBwb3VyIHJlbGF5ZXIgZGl2ZXJzIHByb3RvY29sZXMgcmVwb3NhbnQgc3VyIFRDUCwKdGVscyBxdWUgSFRUUFMsIFNNVFAgb3UgTERBUCwgbGUgcGx1cyBjb21tdW4g6XRhbnQgSFRUUFMuIFVuIHByb2Js6G1lIGFzc2V6CmNvdXJhbW1lbnQgcmVuY29udHLpIGRhbnMgbGVzIGRhdGEgY2VudGVycyBlc3QgbGUgYmVzb2luIGRlIHJlbGF5ZXIgZHUgdHJhZmljCnZlcnMgZGVzIHNlcnZldXJzIGxvaW50YWlucyB0b3V0IGVuIG1haW50ZW5hbnQgbGEgcG9zc2liaWxpdOkgZGUgYmFzY3VsZXIgc3VyCnVuIHNlcnZldXIgZGUgc2Vjb3Vycy4gTGVzIHRlc3RzIHB1cmVtZW50IFRDUCBuZSBzdWZmaXNlbnQgcGFzIHRvdWpvdXJzIGRhbnMKY2VzIHNpdHVhdGlvbnMgY2FyIGwnb24gdHJvdXZlIHNvdXZlbnQsIGRhbnMgbGEgY2hh7m5lLCBkZXMgcHJveGllcywgZmlyZXdhbGxzCm91IHLpcGFydGl0ZXVycyBkZSBjaGFyZ2UgcXVpIHBldXZlbnQgYWNxdWl0dGVyIGxhIGNvbm5leGlvbiBhdmFudCBxdSdlbGxlCm4nYXR0ZWlnbmUgbGUgc2VydmV1ci4gTGEgc2V1bGUgc29sdXRpb24g4CBjZSBwcm9ibOhtZSBlc3QgZCdlbnZveWVyIGRlcyB0ZXN0cwphcHBsaWNhdGlmcy4gQ29tbWUgbGEgZGVtYW5kZSBwb3VyIGxlcyB0ZXN0cyBIVFRQUyBlc3Qg6WxldullLCBjZSB0ZXN0IGEg6XTpCmltcGzpbWVudOkgZW4gdmVyc2lvbiAxLjIuMTUgc3VyIGxhIGJhc2UgZGUgbWVzc2FnZXMgU1NMdjMgQ0xJRU5UIEhFTExPLiBQb3VyCmwnYWN0aXZlciwgdXRpbGlzZXIgIm9wdGlvbiBzc2wtaGVsbG8tY2hrIi4gQ2VjaSBlbnZlcnJhIGRlcyBtZXNzYWdlcyBTU0x2MwpDTElFTlQgSEVMTE8gYXV4IHNlcnZldXJzLCBlbiBhbm5vbudhbnQgdW4gc3VwcG9ydCBwb3VyIGxhIG1ham9yaXTpIGRlcwphbGdvcml0aG1lcyBkZSBjaGlmZnJlbWVudC4gU2kgZW4gcmV0b3VyLCBsZSBzZXJ2ZXVyIGVudm9pZSBjZSBxdWkgcmVzc2VtYmxlIOAKdW5lIHLpcG9uc2UgU1NMdjMgU0VSVkVSIEhFTExPIG91IEFMRVJUIChyZWZ1cyBkZXMgYWxnb3JpdGhtZXMpLCBhbG9ycyBsYQpy6XBvbnNlIHNlcmEgY29uc2lk6XLpZSBjb21tZSB2YWxpZGUuIE5vdGVyIHF1J0FwYWNoZSBuZSBwcm9kdWl0IHBhcyBkZSBsb2cKbG9yc3F1J2lsIHJl529pdCBkZXMgbWVzc2FnZXMgSEVMTE8sIGNlIHF1aSBlbiBmYWl0IHVuIHR5cGUgZGUgbWVzc2FnZQpwYXJmYWl0ZW1lbnQgYWRhcHTpIOAgY2UgYmVzb2luLgoKTGEgdmVyc2lvbiAxLjMuMTAgZXN0IGFjY29tcGFnbullIGQndW4gbm91dmVhdSB0ZXN0IGQn6XRhdCBwb3VyIGxlIFNNVFAuIFBhcgpk6WZhdXQsIGlsIGNvbnNpc3RlIOAgZW52b3llciAiSEVMTyBsb2NhbGhvc3QiIGF1eCBzZXJ2ZXVycywgZXQg4CBhdHRlbmRyZSBsZQptZXNzYWdlICIyNTAiIGVuIHJldG91ci4gTm90ZXogcXUnaWwgcGV1dCBhdXNzaSBlbnZveWVyIHVuZSByZXF16nRlIHBsdXMKc3DpY2lmaXF1ZSA6CgogIC0gb3B0aW9uIHNtdHBjaGsgICAgICAgICAgICAgICAgICAgICAgICAgLT4gZW52b2llICJIRUxPIGxvY2FsaG9zdCIKICAtIG9wdGlvbiBzbXRwY2hrIEVITE8gbWFpbC5teWRvbWFpbi5jb20gIC0+IGVudm9pZSBjZSBtZXNzYWdlIEVTTVRQCgpWb2lyIGxlcyBleGVtcGxlcyBjaS1hcHLocy4gICAgICAgIAoKRGVwdWlzIGxhIHZlcnNpb24gMS4xLjE3LCBpbCBlc3QgcG9zc2libGUgZGUgZOlmaW5pciBkZXMgc2VydmV1cnMgZGUgc2Vjb3VycywKdXRpbGlz6XMgdW5pcXVlbWVudCBsb3JzcXUnYXVjdW4gZGVzIGF1dHJlcyBzZXJ2ZXVycyBuZSBmb25jdGlvbm5lLiBQb3VyIGNlbGEsCmFqb3V0ZXIgbGUgbW90IGNs6SAiYmFja3VwIiBzdXIgbGEgbGlnbmUgZGUgZOlmaW5pdGlvbiBkdSBzZXJ2ZXVyLiBVbiBzZXJ2ZXVyCmRlIHNlY291cnMgbidlc3QgYXBwZWzpIHF1ZSBsb3JzcXVlIHRvdXMgbGVzIHNlcnZldXJzIG5vcm1hdXgsIGFpbnNpIHF1ZSB0b3VzCmxlcyBzZXJ2ZXVycyBkZSBzZWNvdXJzIHF1aSBsZSBwculj6GRlbnQgc29udCBob3JzIGQndXNhZ2UuIElsIG4neSBhIGRvbmMgcGFzCmRlIHLpcGFydGl0aW9uIGRlIGNoYXJnZSBlbnRyZSBkZXMgc2VydmV1cnMgZGUgc2Vjb3VycyBwYXIgZOlmYXV0LiBBIHBhcnRpcgpkZSBsYSB2ZXJzaW9uIDEuMi45LCBpbCBlc3QgcG9zc2libGUgZGUgbGVzIHV0aWxpc2VyIHNpbXVsdGFu6W1lbnQgZ3LiY2Ug4ApsJ29wdGlvbiAnYWxsYmFja3VwcycuIENlIHR5cGUgZGUgc2VydmV1cnMgcGV1dCBzZXJ2aXIg4CByZXRvdXJuZXIgZGVzIHBhZ2VzCmQnaW5kaXNwb25pYmlsaXTpIGRlIHNlcnZpY2UuIERhbnMgY2UgY2FzLCBpbCBlc3QgcHLpZulyYWJsZSBkZSBuZSBwYXMgYWZmZWN0ZXIKZGUgY29va2llLCBhZmluIHF1ZSBsZXMgY2xpZW50cyBxdWkgbGUgcmVuY29udHJlbnQgbid5IHNvaWVudCBwYXMgYWZmZWN06XMKZOlmaW5pdGl2ZW1lbnQuIExlIGZhaXQgZGUgbmUgcGFzIG1ldHRyZSBkZSBjb29raWUgZW52b2llIHVuIGNvb2tpZSB2aWRlLCBjZQpxdWkgYSBwb3VyIGVmZmV0IGRlIHN1cHByaW1lciB1biDpdmVudHVlbCBjb29raWUgYWZmZWN06SBwculj6WRlbW1lbnQuCgpEZXB1aXMgbGEgdmVyc2lvbiAxLjEuMjIsIGlsIGVzdCBwb3NzaWJsZSBkJ2Vudm95ZXIgbGVzIHRlc3RzIGRlIGZvbmN0aW9ubmVtZW50CnZlcnMgdW4gcG9ydCBkaWZm6XJlbnQgZGUgY2VsdWkgZGUgc2VydmljZS4gQydlc3QgbuljZXNzYWlyZSBwcmluY2lwYWxlbWVudApwb3VyIGxlcyBjb25maWd1cmF0aW9ucyBv+SBsZSBzZXJ2ZXVyIG4nYSBwYXMgZGUgcG9ydCBwculk6WZpbmksIHBhciBleGVtcGxlCmxvcnNxdSdpbCBlc3QgZOlkdWl0IGR1IHBvcnQgZCdhY2NlcHRhdGlvbiBkZSBsYSBjb25uZXhpb24uIFBvdXIgY2VsYSwgdXRpbGlzZXIKbGUgcGFyYW3odHJlICdwb3J0JyBzdWl2aSBkdSBudW3pcm8gZGUgcG9ydCBkZXZhbnQgculwb25kcmUgYXV4IHJlcXXqdGVzLiBJbAplc3QgcG9zc2libGUgZCdlbnZveWVyIGxlcyB0ZXN0cyBkZSBmb25jdGlvbm5lbWVudCB2ZXJzIHVuZSBhZHJlc3NlIGRpZmbpcmVudGUgCmRlIGNlbGxlIGRlIHNlcnZpY2UuIENlbGEgcGVybWV0IGQndXRpbGlzZXIsIHN1ciBsYSBtYWNoaW5lIGZhaXNhbnQgZm9uY3Rpb25uZXIKSEFwcm94eSwgdW4gZOltb24gcGVybWV0dGFudCBkZXMgdGVzdHMgc3BlY2lmaXF1ZXMgKCBSRUdFWCBzdXIgdW4gculzdWx0YXQgZXQKYmFzY3VsZW1lbnQgZGUgcGx1c2lldXJzIGZlcm1lcyBlbiBjYXMgZCdlcnJldXIgc3VyIGwndW5lIGQnZWxsZXMpLgoKRW5maW4sIGRlcHVpcyBsYSB2ZXJzaW9uIDEuMS4xNywgaWwgZXN0IHBvc3NpYmxlIGRlIHZpc3VhbGlzZXIgcmFwaWRlbWVudApsJ+l0YXQgY291cmFudCBkZSB0b3VzIGxlcyBzZXJ2ZXVycy4gUG91ciBjZWxhLCBpbCBzdWZmaXQgZCdlbnZveWVyIHVuIHNpZ25hbApTSUdIVVAgYXUgcHJvY2Vzc3VzIHByb3h5LiBMJ+l0YXQgZGUgdG91cyBsZXMgc2VydmV1cnMgZGUgdG91cyBsZXMgcHJveGllcyBlc3QKZW52b3npIGRhbnMgbGVzIGxvZ3MgZW4gbml2ZWF1ICJub3RpY2UiLCBhaW5zaSBxdWUgc3VyIGxhIHNvcnRpZSBkJ2VycmV1cnMgc2kKZWxsZSBlc3QgYWN0aXZlLiBDJ2VzdCB1bmUgYm9ubmUgcmFpc29uIHBvdXIgYXZvaXIgYXUgbW9pbnMgdW4gc2VydmV1ciBkZSBsb2dzCmxvY2FsIGVuIG5pdmVhdSBub3RpY2UuCgpEZXB1aXMgbGEgdmVyc2lvbiAxLjEuMTggKGV0IDEuMi4xKSwgdW4gbWVzc2FnZSBkJ3VyZ2VuY2UgZXN0IGVudm956SBkYW5zIGxlcwpsb2dzIGVuIG5pdmVhdSAnZW1lcmcnIHNpIHRvdXMgbGVzIHNlcnZldXJzIGQndW5lIG3qbWUgaW5zdGFuY2Ugc29udCB0b21i6XMsCmFmaW4gZGUgbm90aWZpZXIgbCdhZG1pbmlzdHJhdGV1ciBxdSdpbCBmYXV0IHByZW5kcmUgdW5lIGFjdGlvbiBpbW3pZGlhdGUuCgpEZXB1aXMgbGVzIHZlcnNpb25zIDEuMS4zMCBldCAxLjIuMywgcGx1c2lldXJzIHNlcnZldXJzIHBldXZlbnQgcGFydGFnZXIgbGEKbeptZSB2YWxldXIgZGUgY29va2llLiBDJ2VzdCBwYXJ0aWN1bGnocmVtZW50IHV0aWxlIGVuIG1vZGUgYmFja3VwLCBwb3VyCnPpbGVjdGlvbm5lciBkZXMgY2hlbWlucyBhbHRlcm5hdGlmcyBwb3VyIHVuIHNlcnZldXIgZG9ubuksIHBvdXIgbWV0dHJlIGVuCm9ldXZyZSBsJ2Fycup0IGVuIGRvdWNldXIgZCd1biBzZXJ2ZXVyLCBvdSBwb3VyIGRpcmlnZXIgbGVzIGNsaWVudHMKdGVtcG9yYWlyZW1lbnQgdmVycyB1bmUgcGFnZSBkJ2VycmV1ciBlbiBhdHRlbmRhbnQgbGUgcmVk6W1hcnJhZ2UgZCd1bmUKYXBwbGljYXRpb24uIExlIHByaW5jaXBlIGVzdCBxdWUgbG9yc3F1J3VuIHNlcnZldXIgZXN0IGTpdGVjdOkgY29tbWUgaW5vcOlyYW50LApsZSBwcm94eSBjaGVyY2hlcmEgbGUgcHJvY2hhaW4gc2VydmV1ciBwb3Nz6WRhbnQgbGEgbeptZSB2YWxldXIgZGUgY29va2llIHBvdXIKY2hhcXVlIGNsaWVudCBxdWkgbGUgZGVtYW5kZXJhLiBTJ2lsIG5lIHRyb3V2ZSBwYXMgZGUgc2VydmV1ciBub3JtYWwsIGFsb3JzIGlsCmxlIGNoZXJjaGVyYSBwYXJtaSBsZXMgc2VydmV1cnMgZGUgYmFja3VwLiBDb25zdWx0ZXIgbGUgZ3VpZGUgZCdhcmNoaXRlY3R1cmUKcG91ciBwbHVzIGQnaW5mb3JtYXRpb25zLgoKRXhlbXBsZXMgOgotLS0tLS0tLS0tCiMgY29uZiBkdSBwYXJhZ3JhcGhlIDMpIGF2ZWMgc3VydmVpbGxhbmNlIFRDUAogICAgbGlzdGVuIGh0dHBfcHJveHkgMC4wLjAuMDo4MAogICAgICAgIG1vZGUgaHR0cAogICAgICAgIGNvb2tpZSBTRVJWRVJJRAogICAgICAgIGJhbGFuY2Ugcm91bmRyb2JpbgogICAgICAgIHNlcnZlciB3ZWIxIDE5Mi4xNjguMS4xOjgwIGNvb2tpZSBzZXJ2ZXIwMSBjaGVjawogICAgICAgIHNlcnZlciB3ZWIyIDE5Mi4xNjguMS4yOjgwIGNvb2tpZSBzZXJ2ZXIwMiBjaGVjayBpbnRlciA1MDAgcmlzZSAxIGZhbGwgMgoKIyBt6m1lIHF1ZSBwculj6WRlbW1lbnQgYXZlYyBzdXJ2ZWlsbGFuY2UgSFRUUCBwYXIgJ09QVElPTlMgLyBIVFRQLzEuMCcKICAgIGxpc3RlbiBodHRwX3Byb3h5IDAuMC4wLjA6ODAKICAgICAgICBtb2RlIGh0dHAKICAgICAgICBjb29raWUgU0VSVkVSSUQKICAgICAgICBiYWxhbmNlIHJvdW5kcm9iaW4KICAgICAgICBvcHRpb24gaHR0cGNoawogICAgICAgIHNlcnZlciB3ZWIxIDE5Mi4xNjguMS4xOjgwIGNvb2tpZSBzZXJ2ZXIwMSBjaGVjawogICAgICAgIHNlcnZlciB3ZWIyIDE5Mi4xNjguMS4yOjgwIGNvb2tpZSBzZXJ2ZXIwMiBjaGVjayBpbnRlciA1MDAgcmlzZSAxIGZhbGwgMgoKIyBt6m1lIHF1ZSBwculj6WRlbW1lbnQgYXZlYyBzdXJ2ZWlsbGFuY2UgSFRUUCBwYXIgJ09QVElPTlMgL2luZGV4Lmh0bWwgSFRUUC8xLjAnCiAgICBsaXN0ZW4gaHR0cF9wcm94eSAwLjAuMC4wOjgwCiAgICAgICAgbW9kZSBodHRwCiAgICAgICAgY29va2llIFNFUlZFUklECiAgICAgICAgYmFsYW5jZSByb3VuZHJvYmluCiAgICAgICAgb3B0aW9uIGh0dHBjaGsgL2luZGV4Lmh0bWwKICAgICAgICBzZXJ2ZXIgd2ViMSAxOTIuMTY4LjEuMTo4MCBjb29raWUgc2VydmVyMDEgY2hlY2sKICAgICAgICBzZXJ2ZXIgd2ViMiAxOTIuMTY4LjEuMjo4MCBjb29raWUgc2VydmVyMDIgY2hlY2sgaW50ZXIgNTAwIHJpc2UgMSBmYWxsIDIKCiMgaWRlbSBhdmVjIHN1cnZlaWxsYW5jZSBIVFRQIHBhciAnSEVBRCAvaW5kZXguanNwPyBIVFRQLzEuMVxyXG5Ib3N0OiB3d3cnCiAgICBsaXN0ZW4gaHR0cF9wcm94eSAwLjAuMC4wOjgwCiAgICAgICAgbW9kZSBodHRwCiAgICAgICAgY29va2llIFNFUlZFUklECiAgICAgICAgYmFsYW5jZSByb3VuZHJvYmluCiAgICAgICAgb3B0aW9uIGh0dHBjaGsgSEVBRCAvaW5kZXguanNwPyBIVFRQLzEuMVxyXG5Ib3N0Olwgd3d3CiAgICAgICAgc2VydmVyIHdlYjEgMTkyLjE2OC4xLjE6ODAgY29va2llIHNlcnZlcjAxIGNoZWNrCiAgICAgICAgc2VydmVyIHdlYjIgMTkyLjE2OC4xLjI6ODAgY29va2llIHNlcnZlcjAyIGNoZWNrIGludGVyIDUwMCByaXNlIDEgZmFsbCAyCgojIHLpcGFydGl0aW9uIGF2ZWMgcGVyc2lzdGVuY2UgYmFz6WUgc3VyIGxlIHBy6WZpeGUgZGUgY29va2llLCBldCBhcnLqdCBlbgojIGRvdWNldXIgdXRpbGlzYW50IHVuIHNlY29uZCBwb3J0ICg4MSkganVzdGUgcG91ciBsZXMgaGVhbHRoLWNoZWNrcy4KICAgIGxpc3RlbiBodHRwX3Byb3h5IDAuMC4wLjA6ODAKICAgICAgIG1vZGUgaHR0cAogICAgICAgY29va2llIEpTRVNTSU9OSUQgcHJlZml4CiAgICAgICBiYWxhbmNlIHJvdW5kcm9iaW4KICAgICAgIG9wdGlvbiBodHRwY2hrIEhFQUQgL2luZGV4LmpzcD8gSFRUUC8xLjFcclxuSG9zdDpcIHd3dwogICAgICAgc2VydmVyIHdlYjEtbm9ybSAxOTIuMTY4LjEuMTo4MCBjb29raWUgczEgY2hlY2sgcG9ydCA4MQogICAgICAgc2VydmVyIHdlYjItbm9ybSAxOTIuMTY4LjEuMjo4MCBjb29raWUgczIgY2hlY2sgcG9ydCA4MQogICAgICAgc2VydmVyIHdlYjEtc3RvcCAxOTIuMTY4LjEuMTo4MCBjb29raWUgczEgY2hlY2sgcG9ydCA4MCBiYWNrdXAKICAgICAgIHNlcnZlciB3ZWIyLXN0b3AgMTkyLjE2OC4xLjI6ODAgY29va2llIHMyIGNoZWNrIHBvcnQgODAgYmFja3VwCgojIEluc2VydGlvbiBhdXRvbWF0aXF1ZSBkZSBjb29raWUgZGFucyBsYSBy6XBvbnNlIGR1IHNlcnZldXIsIGV0IHN1cHByZXNzaW9uCiMgYXV0b21hdGlxdWUgZGFucyBsYSByZXF16nRlLCB0b3V0IGVuIGluZGlxdWFudCBhdXggY2FjaGVzIGRlIG5lIHBhcyBnYXJkZXIKIyBjZSBjb29raWUuCiAgICBsaXN0ZW4gd2ViX2FwcGwgMC4wLjAuMDo4MAogICAgICAgIG1vZGUgaHR0cAogICAgICAgIGNvb2tpZSBTRVJWRVJJRCBpbnNlcnQgbm9jYWNoZSBpbmRpcmVjdAogICAgICAgIGJhbGFuY2Ugcm91bmRyb2JpbgogICAgICAgIHNlcnZlciB3ZWIxIDE5Mi4xNjguMS4xOjgwIGNvb2tpZSBzZXJ2ZXIwMSBjaGVjawogICAgICAgIHNlcnZlciB3ZWIyIDE5Mi4xNjguMS4yOjgwIGNvb2tpZSBzZXJ2ZXIwMiBjaGVjawoKIyBpZGVtIGF2ZWMgc2VydmV1ciBhcHBsaWNhdGlmIGRlIHNlY291cnMgc3VyIGF1dHJlIHNpdGUsIGV0IHNlcnZldXIgZGUgcGFnZXMgZCdlcnJldXJzCiAgICBsaXN0ZW4gd2ViX2FwcGwgMC4wLjAuMDo4MAogICAgICAgIG1vZGUgaHR0cAogICAgICAgIGNvb2tpZSBTRVJWRVJJRCBpbnNlcnQgbm9jYWNoZSBpbmRpcmVjdAogICAgICAgIGJhbGFuY2Ugcm91bmRyb2JpbgogICAgICAgIHNlcnZlciB3ZWIxIDE5Mi4xNjguMS4xOjgwIGNvb2tpZSBzZXJ2ZXIwMSBjaGVjawogICAgICAgIHNlcnZlciB3ZWIyIDE5Mi4xNjguMS4yOjgwIGNvb2tpZSBzZXJ2ZXIwMiBjaGVjawogICAgICAgIHNlcnZlciB3ZWItYmFja3VwIDE5Mi4xNjguMi4xOjgwIGNvb2tpZSBzZXJ2ZXIwMyBjaGVjayBiYWNrdXAKICAgICAgICBzZXJ2ZXIgd2ViLWV4Y3VzZSAxOTIuMTY4LjMuMTo4MCBjaGVjayBiYWNrdXAKCiMgcmVsYXlhZ2UgU01UUCtUTFMgYXZlYyB0ZXN0IGR1IHNlcnZldXIgZXQgc2VydmV1ciBkZSBiYWNrdXAKCiAgICBsaXN0ZW4gaHR0cF9wcm94eSA6MjUsOjU4NwogICAgICAgIG1vZGUgdGNwCiAgICAgICAgYmFsYW5jZSByb3VuZHJvYmluCiAgICAgICAgc2VydmVyIHNydjEgMTkyLjE2OC4xLjEgY2hlY2sgcG9ydCAyNSBpbnRlciAzMDAwMCByaXNlIDEgZmFsbCAyCiAgICAgICAgc2VydmVyIHNydjIgMTkyLjE2OC4xLjIgYmFja3VwCgojIHJlbGF5YWdlIEhUVFBTIGF2ZWMgdGVzdCBkdSBzZXJ2ZXVyIGV0IHNlcnZldXIgZGUgYmFja3VwCgogICAgbGlzdGVuIGh0dHBfcHJveHkgOjQ0MwogICAgICAgIG1vZGUgdGNwCglvcHRpb24gc3NsLWhlbGxvLWNoawogICAgICAgIGJhbGFuY2Ugcm91bmRyb2JpbgogICAgICAgIHNlcnZlciBzcnYxIDE5Mi4xNjguMS4xIGNoZWNrIGludGVyIDMwMDAwIHJpc2UgMSBmYWxsIDIKICAgICAgICBzZXJ2ZXIgc3J2MiAxOTIuMTY4LjEuMiBiYWNrdXAKCiMgVXRpbGlzYXRpb24gZCd1biBncm91cGUgZGUgc2VydmV1cnMgcG91ciBsZSBiYWNrdXAgKG7pY2Vzc2l0ZSBoYXByb3h5IDEuMi45KQogICAgbGlzdGVuIGh0dHBfcHJveHkgMC4wLjAuMDo4MAogICAgICAgIG1vZGUgaHR0cAogICAgICAgIGJhbGFuY2Ugcm91bmRyb2JpbgogICAgICAgIG9wdGlvbiBodHRwY2hrCiAgICAgICAgc2VydmVyIGluc3QxIDE5Mi4xNjguMS4xOjgwIGNvb2tpZSBzMSBjaGVjawogICAgICAgIHNlcnZlciBpbnN0MiAxOTIuMTY4LjEuMjo4MCBjb29raWUgczIgY2hlY2sKICAgICAgICBzZXJ2ZXIgaW5zdDMgMTkyLjE2OC4xLjM6ODAgY29va2llIHMzIGNoZWNrCiAgICAgICAgc2VydmVyIGJhY2sxIDE5Mi4xNjguMS4xMDo4MCBjaGVjayBiYWNrdXAKICAgICAgICBzZXJ2ZXIgYmFjazIgMTkyLjE2OC4xLjExOjgwIGNoZWNrIGJhY2t1cAogICAgICAgIG9wdGlvbiBhbGxiYWNrdXBzICAjIGFsbCBiYWNrdXBzIHdpbGwgYmUgdXNlZAoKCjMuMikgUmVjb25uZXhpb24gdmVycyB1biBy6XBhcnRpdGV1ciBlbiBjYXMgZCfpY2hlYyBkaXJlY3QKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpFbiBtb2RlIEhUVFAsIHNpIHVuIHNlcnZldXIgZOlmaW5pIHBhciB1biBjb29raWUgbmUgculwb25kIHBsdXMsIGxlcyBjbGllbnRzCnNlcm9udCBk6WZpbml0aXZlbWVudCBhaWd1aWxs6XMgZGVzc3VzIOAgY2F1c2UgZGUgbGV1ciBjb29raWUsIGV0IGRlIGNlIGZhaXQsCmTpZmluaXRpdmVtZW50IHByaXbpcyBkZSBzZXJ2aWNlLiBMYSBzcOljaWZpY2F0aW9uIGR1IHBhcmFt6HRyZSAncmVkaXNwYXRjaCcKYXV0b3Jpc2UgZGFucyBjZSBjYXMg4CByZW52b3llciBsZXMgY29ubmV4aW9ucyDpY2hvdellcyB2ZXJzIGxlIHLpcGFydGl0ZXVyCihleHRlcm5lIG91IGludGVybmUpIGFmaW4gZCdhc3NpZ25lciB1biBub3V2ZWF1IHNlcnZldXIg4CBjZXMgY2xpZW50cy4KCkV4ZW1wbGUgOgotLS0tLS0tLS0KICAgIGxpc3RlbiBodHRwX3Byb3h5IDAuMC4wLjA6ODAKICAgICAgICBtb2RlIGh0dHAKICAgICAgICBjb29raWUgU0VSVkVSSUQKICAgICAgICBkaXNwYXRjaCAxOTIuMTY4LjEuMTAwOjgwCiAgICAgICAgc2VydmVyIHdlYjEgMTkyLjE2OC4xLjE6ODAgY29va2llIHNlcnZlcjAxCiAgICAgICAgc2VydmVyIHdlYjIgMTkyLjE2OC4xLjI6ODAgY29va2llIHNlcnZlcjAyCiAgICAgICAgcmVkaXNwYXRjaCAjIHJlbnZveWVyIHZlcnMgZGlzcGF0Y2ggc2kgcmVmdXMgZGUgY29ubmV4aW9uLgoKUGFyIGTpZmF1dCAoZXQgZGFucyBsZXMgdmVyc2lvbnMgMS4xLjE2IGV0IGFudOlyaWV1cmVzKSwgbGUgcGFyYW3odHJlCnJlZGlzcGF0Y2ggbmUgcydhcHBsaXF1ZSBxdSdhdXgg6WNoZWNzIGRlIGNvbm5leGlvbiBhdSBzZXJ2ZXVyLiBEZXB1aXMgbGEKdmVyc2lvbiAxLjEuMTcsIGlsIHMnYXBwbGlxdWUgYXVzc2kgYXV4IGNvbm5leGlvbnMgZGVzdGlu6WVzIOAgZGVzIHNlcnZldXJzCmlkZW50aWZp6XMgY29tbWUgaG9ycyBkJ3VzYWdlIHBhciBsYSBzdXJ2ZWlsbGFuY2UuIFNpIGwnb24gc291aGFpdGUgbWFsZ3LpCnRvdXQgcXUndW4gY2xpZW50IGRpc3Bvc2FudCBkJ3VuIGNvb2tpZSBjb3JyZXNwb25kYW50IOAgdW4gc2VydmV1ciBk6WZlY3R1ZXV4CnRlbnRlIGRlIHMneSBjb25uZWN0ZXIsIGlsIGZhdXQgcHLpY2lzZXIgbCdvcHRpb24gInBlcnNpc3QiIDoKCiAgICBsaXN0ZW4gaHR0cF9wcm94eSAwLjAuMC4wOjgwCiAgICAgICAgbW9kZSBodHRwCiAgICAgICAgb3B0aW9uIHBlcnNpc3QKICAgICAgICBjb29raWUgU0VSVkVSSUQKICAgICAgICBkaXNwYXRjaCAxOTIuMTY4LjEuMTAwOjgwCiAgICAgICAgc2VydmVyIHdlYjEgMTkyLjE2OC4xLjE6ODAgY29va2llIHNlcnZlcjAxCiAgICAgICAgc2VydmVyIHdlYjIgMTkyLjE2OC4xLjI6ODAgY29va2llIHNlcnZlcjAyCiAgICAgICAgcmVkaXNwYXRjaCAjIHJlbnZveWVyIHZlcnMgZGlzcGF0Y2ggc2kgc2VydmV1ciBIUy4KCgozLjMpIEFzc2lnbmF0aW9uIGRlIHBvaWRzIGRpZmbpcmVudHMg4CBkZXMgc2VydmV1cnMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tClBhcmZvaXMgaWwgYXJyaXZlIGQnYWpvdXRlciBkZSBub3V2ZWF1eCBzZXJ2ZXVycyBwb3VyIGFjY3Jv7nRyZSBsYSBjYXBhY2l06QpkJ3VuZSBmZXJtZSBkZSBzZXJ2ZXVyLCBtYWlzIGxlIG5vdXZlYXUgc2VydmV1ciBlc3Qgc29pdCBiZWF1Y291cCBwbHVzIHBldGl0CnF1ZSBsZXMgYXV0cmVzIChkYW5zIGxlIGNhcyBkJ3VuIGFqb3V0IGQndXJnZW5jZSBkZSBtYXTpcmllbCBkZSBy6WN1cOlyYXRpb24pLApzb2l0IHBsdXMgcHVpc3NhbnQgKGxvcnMgZCd1biBpbnZlc3Rpc3NlbWVudCBkYW5zIGR1IG1hdOlyaWVsIG5ldWYpLiBQb3VyIGNldHRlCnJhaXNvbiwgaWwgc2VtYmxlIHBhcmZvaXMganVkaWNpZXV4IGRlIHBvdXZvaXIgZW52b3llciBwbHVzIGRlIGNsaWVudHMgdmVycyBsZXMKcGx1cyBncm9zIHNlcnZldXJzLiBKdXNxdSfgIGxhIHZlcnNpb24gMS4yLjExLCBpbCDpdGFpdCBu6WNlc3NhaXJlIGRlIHLpcGxpcXVlcgpwbHVzaWV1cnMgZm9pcyBsZXMgZOlmaW5pdGlvbnMgZGVzIHNlcnZldXJzIHBvdXIgYXVnbWVudGVyIGxldXIgcG9pZHMuIERlcHVpcwpsYSB2ZXJzaW9uIDEuMi4xMiwgbCdvcHRpb24gJ3dlaWdodCcgZXN0IGRpc3BvbmlibGUuIEhBUHJveHkgY29uc3RydWl0IGFsb3JzCnVuZSB2dWUgZGVzIHNlcnZldXJzIGRpc3BvbmlibGVzIGxhIHBsdXMgaG9tb2fobmUgcG9zc2libGUgZW4gc2UgYmFzYW50IHN1cgpsZXVyIHBvaWRzIGRlIHNvcnRlIHF1ZSBsYSBjaGFyZ2Ugc2UgZGlzdHJpYnVlIGRlIGxhIG1hbmnocmUgbGEgcGx1cyBsaXNzZQpwb3NzaWJsZS4gTGUgcG9pZHMgY29tcHJpcyBlbnRyZSAxIGV0IDI1NiBkb2l0IHJlZmzpdGVyIGxhIGNhcGFjaXTpIGQndW4Kc2VydmV1ciBwYXIgcmFwcG9ydCBhdXggYXV0cmVzLiBMZSBwb2lkcyBkZSAxIGRvbm5lIGxhIGZy6XF1ZW5jZSBkJ2FwcGFyaXRpb24KbGEgcGx1cyBmYWlibGUsIGV0IDI1NiBsYSBmculxdWVuY2UgbGEgcGx1cyDpbGV26WUuIERlIGNldHRlIG1hbmnocmUsIHNpIHVuCnNlcnZldXIgZGlzcGFyYWl0LCBsZXMgY2FwYWNpdOlzIHJlc3RhbnRlcyBzb250IHRvdWpvdXJzIHJlc3BlY3TpZXMuCgoKRXhlbXBsZSA6Ci0tLS0tLS0tLQojIGRpc3RyaWJ1dGlvbiDpcXVpdGFibGUgc3VyIDIgb3B0ZXJvbiBhbmQgdW4gYW5jaWVuIHBlbnRpdW0zCgogICAgbGlzdGVuIHdlYl9hcHBsIDAuMC4wLjA6ODAKICAgICAgICBtb2RlIGh0dHAKICAgICAgICBjb29raWUgU0VSVkVSSUQgaW5zZXJ0IG5vY2FjaGUgaW5kaXJlY3QKICAgICAgICBiYWxhbmNlIHJvdW5kcm9iaW4KICAgICAgICBzZXJ2ZXIgcGVudGl1bTMtODAwIDE5Mi4xNjguMS4xOjgwIGNvb2tpZSBzZXJ2ZXIwMSB3ZWlnaHQgIDggY2hlY2sKICAgICAgICBzZXJ2ZXIgb3B0ZXJvbi0yLjBHIDE5Mi4xNjguMS4yOjgwIGNvb2tpZSBzZXJ2ZXIwMiB3ZWlnaHQgMjAgY2hlY2sKICAgICAgICBzZXJ2ZXIgb3B0ZXJvbi0yLjRHIDE5Mi4xNjguMS4zOjgwIGNvb2tpZSBzZXJ2ZXIwMyB3ZWlnaHQgMjQgY2hlY2sKICAgICAgICBzZXJ2ZXIgd2ViLWJhY2t1cDEgMTkyLjE2OC4yLjE6ODAgY29va2llIHNlcnZlcjA0IGNoZWNrIGJhY2t1cAogICAgICAgIHNlcnZlciB3ZWItZXhjdXNlIDE5Mi4xNjguMy4xOjgwIGNoZWNrIGJhY2t1cAoKTm90ZXMgOgotLS0tLS0tCiAgLSBsb3JzcXVlIGxlIHBvaWRzIG4nZXN0IHBhcyBzcOljaWZp6SwgbGEgdmFsZXVyIHBhciBk6WZhdXQgZXN0IOAgMQoKICAtIGxlIHBvaWRzIG4naW1wYWN0ZSBwYXMgbGVzIHRlc3RzIGRlIGZvbmN0aW9ubmVtZW50IChoZWFsdGggY2hlY2tzKSwgZG9uYyBpbAogICAgZXN0IHBsdXMgcHJvcHJlIGQndXRpbGlzZXIgbGVzIHBvaWRzIHF1ZSBkZSBy6XBsaXF1ZXIgbGUgbeptZSBzZXJ2ZXVyCiAgICBwbHVzaWV1cnMgZm9pcy4KCiAgLSBsZXMgcG9pZHMgcydhcHBsaXF1ZW50IOlnYWxlbWVudCBhdXggc2VydmV1cnMgZGUgYmFja3VwIHNpIGwnb3B0aW9uCiAgICAnYWxsYmFja3VwcycgZXN0IHBvc2l0aW9ubullLgoKICAtIGxlIHBvaWRzIHMnYXBwbGlxdWUgYXVzc2kg4CBsYSBy6XBhcnRpdGlvbiBzZWxvbiBsYSBzb3VyY2UKICAgICgnYmFsYW5jZSBzb3VyY2UnKS4KCiAgLSBxdWVscyBxdWUgc29pZW50IGxlcyBwb2lkcywgbGUgcHJlbWllciBzZXJ2ZXVyIHNlcmEgdG91am91cnMgYXNzaWdu6SBlbgogICAgcHJlbWllci4gQ2V0dGUgcuhnbGUgZmFjaWxpdGUgbGVzIGRpYWdub3N0aWNzLgoKICAtIHBvdXIgbGVzIHB1cmlzdGVzLCBsJ2FsZ29yaXRobWUgZGUgY2FsY3VsYXRpb24gZGUgbGEgdnVlIGRlcyBzZXJ2ZXVycyBkb25uZQogICAgdW5lIHByaW9yaXTpIGF1eCBwcmVtaWVycyBzZXJ2ZXVycywgZG9uYyBsYSB2dWUgZXN0IGxhIHBsdXMgdW5pZm9ybWUgc2kgbGVzCiAgICBzZXJ2ZXVycyBzb250IGTpY2xhculzIGRhbnMgbCdvcmRyZSBjcm9pc3NhbnQgZGUgbGV1cnMgcG9pZHMuCgpMYSBkaXN0cmlidXRpb24gZHUgdHJhZmljIHN1aXZyYSBleGFjdGVtZW50IGxlIHPpcXVlbmNlbWVudCBzdWl2YW50IDoKCiAgICAgICAgUmVxdWVzdHwgICAgICAgICAgICAgICAgICAgMSAxIDEgMQogICAgICAgIG51bWJlciB8IDEgMiAzIDQgNSA2IDcgOCA5IDAgMSAyIDMKICAgICAgIC0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAgIHAzLTgwMCB8IFggLiAuIC4gLiAuIC4gWCAuIC4gLiAuIC4KICAgICAgICBvcHQtMjAgfCAuIFggLiBYIC4gWCAuIC4gLiBYIC4gWCAuCiAgICAgICAgb3B0LTI0IHwgLiAuIFggLiBYIC4gWCAuIFggLiBYIC4gWAoKCjMuNCkgTGltaXRhdGlvbiBkdSBub21icmUgZGUgc2Vzc2lvbnMgY29uY3VycmVudGVzIHBhciBzZXJ2ZXVyCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkNlcnRhaW5zIHNlcnZldXJzIHdlYiBtdWx0aS1wcm9jZXNzdXMgdGVscyBxdSdBcGFjaGUgc291ZmZyZW50IGTocyBxdSdpbCB5IGEKdHJvcCBkZSBzZXNzaW9ucyBjb25jdXJyZW50ZXMsIHBhcmNlIHF1J2lsIGVzdCB0cuhzIGNv+3RldXggZGUgZmFpcmUKZm9uY3Rpb25uZXIgZGVzIGNlbnRhaW5lcyBvdSBkZXMgbWlsbGllcnMgZGUgcHJvY2Vzc3VzIHN1ciB1biBzeXN06G1lLiBVbmUKc29sdXRpb24gY29uc2lzdGUg4CBhdWdtZW50ZXIgbGUgbm9tYnJlIGRlIHNlcnZldXJzIGV0IGRlIHLpcGFydGlyIGxhIGNoYXJnZQplbnRyZSBldXgsIG1haXMgY2VsYSBwb3NlIHVuIHByb2Js6G1lIGxvcnNxdWUgbGUgYnV0IGVzdCB1bmlxdWVtZW50IGRlIHLpc2lzdGVyCuAgZGVzIHBpY3MgZGUgY2hhcmdlIG9jY2FzaW9ubmVscy4KClBvdXIgculzb3VkcmUgY2UgcHJvYmzobWUsIHVuZSBub3V2ZWxsZSBmb25jdGlvbm5hbGl06SBhIOl06SBpbXBs6W1lbnTpZSBkYW5zCkhBUHJveHkgMS4yLjEzLiBJbCBzJ2FnaXQgZCd1bmUgbGltaXRlICJtYXhjb25uIiBwYXIgc2VydmV1ciwgYXNzb2Np6WUg4CB1bmUKZmlsZSBkJ2F0dGVudGUgcGFyIHNlcnZldXIgZXQgcGFyIHByb3h5LiBDZWNpIHRyYW5zZm9ybWUgSEFQcm94eSBlbiB1biB0YW1wb24KZW50cmUgZGVzIG1pbGxpZXJzIGRlIGNsaWVudHMgZXQgcXVlbHF1ZXMgc2VydmV1cnMuIERhbnMgYmllbiBkZXMgY2FzLCBsZSBmYWl0CmRlIGRpbWludWVyIGxhIHZhbGV1ciBtYXhjb25uIGFt6Wxpb3JlcmEgbm90YWJsZW1lbnQgbGVzIHBlcmZvcm1hbmNlcyBkZXMKc2VydmV1cnMgZXQgZGltaW51ZXJhIGxlcyB0ZW1wcyBkZSBy6XBvbnNlIHNpbXBsZW1lbnQgcGFyY2UgcXVlIGxlcyBzZXJ2ZXVycwpzZXJvbnQgbW9pbnMgY29uZ2VzdGlvbm7pcy4KClF1YW5kIHVuZSByZXF16nRlIGNoZXJjaGUg4CBqb2luZHJlIG4naW1wb3J0ZSBxdWVsIHNlcnZldXIsIGxlIHByZW1pZXIgc2VydmV1cgpub24gc2F0dXLpIGVzdCB1dGlsaXPpLCBlbiByZXNwZWN0YW50IGwnYWxnb3JpdGhtZSBkZSBy6XBhcnRpdGlvbiBkZSBjaGFyZ2UuIFNpCnRvdXMgbGVzIHNlcnZldXJzIHNvbnQgc2F0dXLpcywgYWxvcnMgbGEgcmVxdep0ZSBzZXJhIG1pc2UgZGFucyBsYSBmaWxlCmQnYXR0ZW50ZSBnbG9iYWxlIGRlIGwnaW5zdGFuY2UuIEVsbGUgc29ydGlyYSBkZSBjZXR0ZSBmaWxlIGQnYXR0ZW50ZSBsb3JzcXVlCnRvdXRlcyBsZXMgcmVxdep0ZXMgcHLpY+lkZW50ZXMgYXVyb250IOl06SBsaWLpcullcyBldCBxdSd1biBzZXJ2ZXVyIGF1cmEg6XTpCmxpYuly6SBkJ3VuZSBjb25uZXhpb24gcG91ciBsYSB0cmFpdGVyLgoKU2kgdW5lIHJlcXXqdGUgZmFpdCBy6WbpcmVuY2Ug4CB1biBzZXJ2ZXVyIGVuIHBhcnRpY3VsaWVyIChwLmV4OiBoYWNoYWdlIGQnSVAKc291cmNlLCBvdSBwZXJzaXN0YW5jZSBwYXIgY29va2llKSwgZXQgcXVlIGNlIHNlcnZlciBlc3Qgc2F0dXLpLCBhbG9ycyBsYQpyZXF16nRlIHNlcmEgbWlzZSBkYW5zIGxhIGZpbGUgZCdhdHRlbnRlIGTpZGnpZSDgIGNlIHNlcnZldXIuIENldHRlIGZpbGUKZCdhdHRlbnRlIGVzdCBwcmlvcml0YWlyZSBzdXIgbGEgZmlsZSBkJ2F0dGVudGUgZ2xvYmFsZSwgZGUgc29ydGUgcXUnaWwgc29pdApwbHVzIGZhY2lsZSBkJ2F0dGVpbmRyZSBsZSBzaXRlIHBvdXIgbGVzIHV0aWxpc2F0ZXVycyBxdWkgcyd5IHRyb3V2ZW50IGTpauAKcXVlIHBvdXIgbGVzIG5vdXZlYXV4IHV0aWxpc2F0ZXVycy4KClBvdXIgY2VsYSwgbGVzIGxvZ3Mgb250IGT7IOp0cmUgZW5yaWNoaXMgcG91ciBpbmRpcXVlciBsZSBub21icmUgZGUgc2Vzc2lvbnMKcGFyIHNlcnZldXIsIGxhIHBvc2l0aW9uIGRlIGxhIHJlcXXqdGUgZGFucyBsZXMgZmlsZXMgZCdhdHRlbnRlcywgZXQgbGUgdGVtcHMKcGFzc+kgZW4gZmlsZSBkJ2F0dGVudGUuIENlY2kgYWlkZSBjb25zaWTpcmFibGVtZW50IOAgZmFpcmUgZGUgbGEgcHLpdmlzaW9uIGRlCmNhcGFjaXTpLiBWb2lyIGxhIHNlY3Rpb24gJ2xvZ3MnIHBsdXMgYmFzIHBvdXIgcGx1cyBkJ2luZm9ybWF0aW9ucy4KCkV4ZW1wbGUgOgotLS0tLS0tLS0KICAgICMgUHJlbmRyZSBzb2luIGR1IFAzIHF1aSBuJ2EgcXVlIDI1NiBNbyBkZSBSQU0uCiAgICBsaXN0ZW4gd2ViX2FwcGwgMC4wLjAuMDo4MAogICAgICAgIG1heGNvbm4gMTAwMDAKICAgICAgICBtb2RlIGh0dHAKICAgICAgICBjb29raWUgU0VSVkVSSUQgaW5zZXJ0IG5vY2FjaGUgaW5kaXJlY3QKICAgICAgICBiYWxhbmNlIHJvdW5kcm9iaW4KICAgICAgICBzZXJ2ZXIgcGVudGl1bTMtODAwIDE5Mi4xNjguMS4xOjgwIGNvb2tpZSBzMSB3ZWlnaHQgIDggbWF4Y29ubiAxMDAgY2hlY2sKICAgICAgICBzZXJ2ZXIgb3B0ZXJvbi0yLjBHIDE5Mi4xNjguMS4yOjgwIGNvb2tpZSBzMiB3ZWlnaHQgMjAgbWF4Y29ubiAzMDAgY2hlY2sKICAgICAgICBzZXJ2ZXIgb3B0ZXJvbi0yLjRHIDE5Mi4xNjguMS4zOjgwIGNvb2tpZSBzMyB3ZWlnaHQgMjQgbWF4Y29ubiAzMDAgY2hlY2sKICAgICAgICBzZXJ2ZXIgd2ViLWJhY2t1cDEgMTkyLjE2OC4yLjE6ODAgY29va2llIHM0IGNoZWNrIG1heGNvbm4gMjAwIGJhY2t1cAogICAgICAgIHNlcnZlciB3ZWItZXhjdXNlIDE5Mi4xNjguMy4xOjgwIGNoZWNrIGJhY2t1cAoKQ2V0dGUgb3B0aW9uIHNlIG1vbnRyYSBzaSBlZmZpY2FjZSBwb3VyIHLpZHVpcmUgbGVzIHRlbXBzIGRlIHLpcG9uc2UgZGVzCnNlcnZldXJzIHF1ZSBjZXJ0YWlucyB1dGlsaXNhdGV1cnMgdm91bGFpZW50IHV0aWxpc2VyIGRlcyB2YWxldXJzIHRyb3AgYmFzc2VzCnBvdXIgYW3pbGlvcmVyIGxlcyBwZXJmb3JtYW5jZXMgZGUgbGV1cnMgc2VydmV1cnMuIFNldWxlbWVudCwgaWxzIG4n6XRhaWVudAphbG9ycyBwbHVzIGVuIG1lc3VyZSBkZSBzdXBwb3J0ZXIgZGUgdHLocyBmb3J0ZXMgY2hhcmdlcyBwYXJjZSBxdSdpbCBuJ+l0YWl0CnBsdXMgcG9zc2libGUgZGUgbGVzIHNhdHVyZXIuIFBvdXIgY2V0dGUgcmFpc29uLCBsYSB2ZXJzaW9uIDEuMi4xNCBhIGFwcG9ydOkgbGEKbGltaXRhdGlvbiBkeW5hbWlxdWUgZGUgY29ubmV4aW9ucyBhdmVjIGwnYWRkaXRpb24gZHUgcGFyYW3odHJlICJtaW5jb25uIi4KTG9yc3F1ZSBjZSBwYXJhbeh0cmUgZXN0IGFzc29jaekg4CAibWF4Y29ubiIsIGlsIGFjdGl2ZSBsYSBsaW1pdGF0aW9uIGR5bmFtaXF1ZQpiYXPpZSBzdXIgbGEgY2hhcmdlIGRlIGwnaW5zdGFuY2UuIExlIG5vbWJyZSBtYXhpbWFsIGRlIHNlc3Npb25zIGNvbmN1cnJlbnRlcwpzdXIgdW4gc2VydmV1ciBkZXZpZW50IGFsb3JzIHByb3BvcnRpb25uZWwgYXUgbm9tYnJlIGRlIHNlc3Npb25zIGRlIGwnaW5zdGFuY2UKcGFyIHJhcHBvcnQg4CBzb24gJ21heGNvbm4nLiBVbiBtaW5pbXVtIGRlIDxtaW5jb25uPiBzZXNzaW9ucyBzZXJhIHRvdWpvdXJzCnBlcm1pcyBxdWVsbGUgcXVlIHNvaXQgbGEgY2hhcmdlLiBDZWNpIGFzc3VyZXJhIHF1ZSBsZXMgc2VydmV1cnMgdHJhdmFpbGxlcm9udAphdSBtZWlsbGV1ciBkZSBsZXVycyBwZXJmb3JtYW5jZXMgc291cyBkZXMgY2hhcmdlcyBub3JtYWxlcywgZXQgcXUnaWxzIHNlcm9udAp0b3V0IGRlIG3qbWUgY2FwYWJsZXMgZGUgc3VwcG9ydGVyIGRlIGZvcnRlcyBwb2ludGVzIGxvcnNxdWUgbuljZXNzYWlyZS4gTGEKbGltaXRlIGR5bmFtaXF1ZSBlc3QgY2FsY3Vs6WUgY29tbWUgY2VjaSA6CgogICAgc3J2LmR5bl9saW1pdCA9IG1heChzcnYubWluY29ubiwgc3J2Lm1heGNvbm4gKiBpbnN0LnNlc3MgLyBpbnN0Lm1heGNvbm4pCgpFeGVtcGxlIDoKLS0tLS0tLS0tCiAgICAjIFByZW5kcmUgc29pbiBkdSBQMyBxdWkgbidhIHF1ZSAyNTYgTW8gZGUgUkFNLgogICAgbGlzdGVuIHdlYl9hcHBsIDAuMC4wLjA6ODAKICAgICAgICBtYXhjb25uIDEwMDAwCiAgICAgICAgbW9kZSBodHRwCiAgICAgICAgY29va2llIFNFUlZFUklEIGluc2VydCBub2NhY2hlIGluZGlyZWN0CiAgICAgICAgYmFsYW5jZSByb3VuZHJvYmluCiAgICAgICAgc2VydmVyIHBlbnRpdW0zLTgwMCAxOTIuMTY4LjEuMTo4MCBjb29raWUgczEgd2VpZ2h0ICA4IG1pbmNvbm4gMTAgbWF4Y29ubiAxMDAgY2hlY2sKICAgICAgICBzZXJ2ZXIgb3B0ZXJvbi0yLjBHIDE5Mi4xNjguMS4yOjgwIGNvb2tpZSBzMiB3ZWlnaHQgMjAgbWluY29ubiAzMCBtYXhjb25uIDMwMCBjaGVjawogICAgICAgIHNlcnZlciBvcHRlcm9uLTIuNEcgMTkyLjE2OC4xLjM6ODAgY29va2llIHMzIHdlaWdodCAyNCBtaW5jb25uIDMwIG1heGNvbm4gMzAwIGNoZWNrCiAgICAgICAgc2VydmVyIHdlYi1iYWNrdXAxIDE5Mi4xNjguMi4xOjgwIGNvb2tpZSBzNCBjaGVjayBtYXhjb25uIDIwMCBiYWNrdXAKICAgICAgICBzZXJ2ZXIgd2ViLWV4Y3VzZSAxOTIuMTY4LjMuMTo4MCBjaGVjayBiYWNrdXAKCkRhbnMgbCdleGVtcGxlIGNpLWRlc3N1cywgbGUgc2VydmV1ciAicGVudGl1bTMtODAwJyByZWNldnJhIGF1IHBsdXMgMTAwCmNvbm5leGlvbnMgc2ltdWx0YW7pZXMgbG9yc3F1ZSBsJ2luc3RhbmNlIGR1IHByb3h5IGVuIGF0dGVpbmRyYSAxMDAwMCwgZXQKcmVjZXZyYSBzZXVsZW1lbnQgMTAgY29ubmV4aW9ucyBzaW11bHRhbullcyB0YW50IHF1ZSBsZSBwcm94eSBzZXJhIHNvdXMgbGVzIDEwMDAKc2Vzc2lvbnMuCgpOb3RlcyA6Ci0tLS0tLS0KICAtIGxhIHJlcXXqdGUgbmUgcmVzdGVyYSBwYXMgaW5k6WZpbmltZW50IGVuIGZpbGUgZCdhdHRlbnRlLCBlbGxlIGVzdAogICAgYXNzdWrpdGllIGF1IHBhcmFt6HRyZSAnY29udGltZW91dCcsIGV0IHNpIHVuZSByZXF16nRlIG5lIHBldXQgcGFzCiAgICBzb3J0aXIgZGUgbGEgZmlsZSBhdmFudCBjZSB0aW1lLW91dCwgc29pdCBwYXJjZSBxdWUgbGUgc2VydmV1ciBlc3QKICAgIHNhdHVy6Swgc29pdCBwYXJjZSBxdSdpbCB5IGEgdHJvcCBkZSByZXF16nRlcyBlbiBmaWxlIGQnYXR0ZW50ZSwKICAgIGFsb3JzIGVsbGUgZXhwaXJlcmEgYXZlYyB1bmUgZXJyZXVyIDUwMy4KCiAgLSBzaSBzZXVsIDxtaW5jb25uPiBlc3Qgc3DpY2lmaeksIGlsIGEgbGUgbeptZSBlZmZldCBxdWUgPG1heGNvbm4+CgogIC0gcG9zaXRpb25uZXIgZGVzIHZhbGV1cnMgdHJvcCBiYXNzZXMgcG91ciAnbWF4Y29ubicgcGV1dCBhbelsaW9yZXIgbGVzCiAgICBwZXJmb3JtYW5jZXMgbWFpcyBhdXNzaSBwZXJtZXR0cmUg4CBkZXMgdXRpbGlzYXRldXJzIHRyb3AgbGVudHMgZGUgYmxvcXVlcgogICAgdW4gc2VydmV1ciBwb3VyIGxlcyBhdXRyZXMgdXRpbGlzYXRldXJzLgoKCjMuNSkgQWJhbmRvbiBkZXMgcmVxdep0ZXMgYWJvcnTpZXMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpFbiBwculzZW5jZSBkZSB0cuhzIGZvcnRlcyBjaGFyZ2VzLCBsZXMgc2VydmV1cnMgbWV0dHJvbnQgdW4gY2VydGFpbiB0ZW1wcyDgCnLpcG9uZHJlLiBMYSBmaWxlIGQnYXR0ZW50ZSBkdSBwcm94eSBzZSByZW1wbGlyYSwgZXQgbGVzIHRlbXBzIGRlIHLpcG9uc2UKc3VpdnJvbnQgdW5lIGNyb2lzc2FuY2UgcHJvcG9ydGlvbm5lbGxlIOAgbGEgdGFpbGxlIGRlIGZpbGUgZCdhdHRlbnRlIGZvaXMKbGUgdGVtcHMgbW95ZW4gZGUgculwb25zZSBwYXIgc2Vzc2lvbi4gTG9yc3F1ZSBsZXMgY2xpZW50cyBhdHRlbmRyb250IHBsdXMgZGUKcXVlbHF1ZXMgc2Vjb25kZXMsIGlscyBjbGlxdWVyb250IHNvdXZlbnQgc3VyIGxlIGJvdXRvbiAnU1RPUCcgZGUgbGV1cgpuYXZpZ2F0ZXVyLCBsYWlzc2FudCBkZXMgcmVxdep0ZXMgaW51dGlsZXMgZW4gZmlsZSBkJ2F0dGVudGUgZXQgcmFsZW50aXNzYW50CmRvbmMgbGVzIGF1dHJlcyB1dGlsaXNhdGV1cnMuCgpDb21tZSBpbCBuJ3kgYSBhdWN1biBtb3llbiBkZSBkaXN0aW5ndWVyIHVuIHZyYWkgY2xpYyBzdXIgU1RPUCBkJ3VuZSBzaW1wbGUKZmVybWV0dXJlIGR1IGNhbmFsIGRlIHNvcnRpZSBzdXIgbGUgY2xpZW50IChzaHV0ZG93bihTSFVUX1dSKSksIGxlcyBhZ2VudHMgSFRUUApkb2l2ZW50IOp0cmUgY29uc2VydmF0ZXVycyBldCBjb25zaWTpcmVyIHF1ZSBsZSBjbGllbnQgbidhIHByb2JhYmxlbWVudCBmZXJt6QpxdWUgbGUgY2FuYWwgZGUgc29ydGllIGVuIGF0dGVuZGFudCBsYSBy6XBvbnNlLiBUb3V0ZWZvaXMsIGNlY2kgaW50cm9kdWl0IGRlcwpyaXNxdWVzIGRlIGNvbmdlc3Rpb24gbG9yc3F1ZSBiZWF1Y291cCBkJ3V0aWxpc2F0ZXVycyBmb250IGRlIG3qbWUsIGV0IHMnYXbocmUKYXVqb3VyZCdodWkgY29tcGzodGVtZW50IGludXRpbGUgY2FyIHByb2JhYmxlbWVudCBhdWN1biBjbGllbnQgbmUgcmVmZXJtZSBsYQpzZXNzaW9uIGVuIGF0dGVuZGFudCBsYSBy6XBvbnNlLiBDZXJ0YWlucyBhZ2VudHMgSFRUUCBzdXBwb3J0ZW50IGNlY2kgKFNxdWlkLApBcGFjaGUsIEhBUHJveHkpLCBldCBkJ2F1dHJlcyBuZSBsZSBzdXBwb3J0ZW50IHBhcyAoVFVYLCBldCBsYSBwbHVwYXJ0IGRlcwpy6XBhcnRpdGV1cnMgZGUgY2hhcmdlIG1hdOlyaWVscykuIERvbmMgbGEgcHJvYmFiaWxpdOkgcG91ciBxdSd1bmUgbm90aWZpY2F0aW9uCmRlIGZlcm1ldHVyZSBkJ3VuIGNhbmFsIGQnZW50cullIGP0dOkgY2xpZW50IHJlcHLpc2VudGUgdW4gdXRpbGlzYXRldXIgY2xpcXVhbnQKc3VyICdTVE9QJyBlc3QgcHJvY2hlIGRlIDEwMCUsIGV0IGlsIGVzdCB2cmFpbWVudCB0ZW50YW50IGQnYWJhbmRvbm5lciBsYQpyZXF16nRlIHBy6W1hdHVy6W1lbnQgc2FucyBwb2xsdWVyIGxlcyBzZXJ2ZXVycy4KClBvdXIgY2V0dGUgcmFpc29uLCB1bmUgbm91dmVsbGUgb3B0aW9uICJhYm9ydG9uY2xvc2UiIGEg6XTpIGludHJvZHVpdGUgZW4KdmVyc2lvbiAxLjIuMTQuIFBhciBk6WZhdXQgKHNhbnMgbCdvcHRpb24pLCBsZSBjb21wb3J0ZW1lbnQgcmVzdGUgY29uZm9ybWUg4ApIVFRQLiBNYWlzIGxvcnNxdWUgbCdvcHRpb24gZXN0IHNw6WNpZmnpZSwgdW5lIHNlc3Npb24gZG9udCBsZSBjYW5hbCBlbnRyYW50CmVzdCBmZXJt6SBzZXJhIGFib3J06WUgc2kgY2VsYSBlc3QgcG9zc2libGUsIGMnZXN0IOAgZGlyZSBxdWUgbGEgcmVxdep0ZSBlc3QKc29pdCBlbiBmaWxlIGQnYXR0ZW50ZSwgc29pdCBlbiB0ZW50YXRpdmUgZGUgY29ubmV4aW9uLiBDZWNpIHLpZHVpdApjb25zaWTpcmFibGVtZW50IGxhIGxvbmd1ZXVyIGRlcyBmaWxlcyBkJ2F0dGVudGVzIGV0IGxhIGNoYXJnZSBzdXIgbGVzIHNlcnZldXJzCnNhdHVy6XMgbG9yc3F1ZSBsZXMgdXRpbGlzYXRldXJzIHNvbnQgdGVudOlzIGRlIGNsaXF1ZXIgc3VyICdTVE9QJywgY2UgcXVpIOAKc29uIHRvdXIsIHLpZHVpdCBsZXMgdGVtcHMgZGUgculwb25zZSBwb3VyIGxlcyBhdXRyZXMgdXRpbGlzYXRldXJzLgoKRXhlbXBsZSA6Ci0tLS0tLS0tLQogICAgbGlzdGVuIHdlYl9hcHBsIDAuMC4wLjA6ODAKICAgICAgICBtYXhjb25uIDEwMDAwCiAgICAgICAgbW9kZSBodHRwCiAgICAgICAgY29va2llIFNFUlZFUklEIGluc2VydCBub2NhY2hlIGluZGlyZWN0CiAgICAgICAgYmFsYW5jZSByb3VuZHJvYmluCiAgICAgICAgc2VydmVyIHdlYjEgMTkyLjE2OC4xLjE6ODAgY29va2llIHMxIHdlaWdodCAxMCBtYXhjb25uIDEwMCBjaGVjawogICAgICAgIHNlcnZlciB3ZWIyIDE5Mi4xNjguMS4yOjgwIGNvb2tpZSBzMiB3ZWlnaHQgMTAgbWF4Y29ubiAxMDAgY2hlY2sKICAgICAgICBzZXJ2ZXIgd2ViMyAxOTIuMTY4LjEuMzo4MCBjb29raWUgczMgd2VpZ2h0IDEwIG1heGNvbm4gMTAwIGNoZWNrCiAgICAgICAgc2VydmVyIGJjazEgMTkyLjE2OC4yLjE6ODAgY29va2llIHM0IGNoZWNrIG1heGNvbm4gMjAwIGJhY2t1cAogICAgICAgIG9wdGlvbiBhYm9ydG9uY2xvc2UKCgo0KSBGb25jdGlvbm5hbGl06XMgYWRkaXRpb25uZWxsZXMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CgpEJ2F1dHJlcyBmb25jdGlvbm5hbGl06XMgZCd1c2FnZSBtb2lucyBjb3VyYW50IHNvbnQgZGlzcG9uaWJsZXMuIElsIHMnYWdpdApwcmluY2lwYWxlbWVudCBkdSBtb2RlIHRyYW5zcGFyZW50LCBkZSBsYSBqb3VybmFsaXNhdGlvbiBkZXMgY29ubmV4aW9ucywgZGUgbGEKcunpY3JpdHVyZSBkZXMgZW4tdOp0ZXMsIGV0IGR1IHN0YXR1dCBzb3VzIGZvcm1lIGRlIHBhZ2UgSFRNTC4KCgo0LjEpIEZvbmN0aW9ubmFsaXTpcyBy6XNlYXUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCjQuMS4xKSBGb25jdGlvbm5lbWVudCBlbiBtb2RlIHRyYW5zcGFyZW50Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpFbiBtb2RlIEhUVFAsIGxlIG1vdCBjbOkgJ3RyYW5zcGFyZW50JyBwZXJtZXQgZCdpbnRlcmNlcHRlciBkZXMgc2Vzc2lvbnMKcm91dOllcyDgIHRyYXZlcnMgbGEgbWFjaGluZSBo6WJlcmdlYW50IGxlIHByb3h5LiBEYW5zIGNlIG1vZGUsIG9uIG5lIHBy6WNpc2UKcGFzIGwnYWRyZXNzZSBkZSBy6XBhcnRpdGlvbiAnZGlzcGF0Y2gnLCBjYXIgY2VsbGUtY2kgZXN0IHRpcullIGRlIGwnYWRyZXNzZQpkZXN0aW5hdGlvbiBkZSBsYSBzZXNzaW9uIGTpdG91cm7pZS4gTGUgc3lzdOhtZSBkb2l0IHBlcm1ldHRyZSBkZSByZWRpcmlnZXIgbGVzCnBhcXVldHMgdmVycyB1biBwcm9jZXNzdXMgbG9jYWwuCgpFeGVtcGxlIDoKLS0tLS0tLS0tCiAgICBsaXN0ZW4gaHR0cF9wcm94eSAwLjAuMC4wOjY1MDAwCiAgICAgICAgbW9kZSBodHRwCiAgICAgICAgdHJhbnNwYXJlbnQKICAgICAgICBjb29raWUgU0VSVkVSSUQKICAgICAgICBzZXJ2ZXIgc2VydmVyMDEgMTkyLjE2OC4xLjE6ODAKICAgICAgICBzZXJ2ZXIgc2VydmVyMDIgMTkyLjE2OC4xLjI6ODAKCiAgICAjIGlwdGFibGVzIC10IG5hdCAtQSBQUkVST1VUSU5HIC1pIGV0aDAgLXAgdGNwIC1kIDE5Mi4xNjguMS4xMDAgXAogICAgICAtLWRwb3J0IDgwIC1qIFJFRElSRUNUIC0tdG8tcG9ydHMgNjUwMDAKClJlbWFycXVlIDoKLS0tLS0tLS0tLQpTaSBsZSBwb3J0IG4nZXN0IHBhcyBzcOljaWZp6SBzdXIgbGUgc2VydmV1ciwgYydlc3QgbGUgcG9ydCBhdXF1ZWwgcydlc3QKYWRyZXNz6SBsZSBjbGllbnQgcXVpIHNlcmEgdXRpbGlz6S4gQ2VsYSBwZXJtZXQgZGUgcmVsYXllciB0b3VzIGxlcyBwb3J0cyBUQ1AKZCd1bmUgbeptZSBhZHJlc3NlIGF2ZWMgdW5lIG3qbWUgaW5zdGFuY2UgZXQgc2FucyB1dGlsaXNlciBkaXJlY3RlbWVudCBsZSBtb2RlCnRyYW5zcGFyZW50LgoKRXhlbXBsZSA6Ci0tLS0tLS0tLQogICAgbGlzdGVuIGh0dHBfcHJveHkgMC4wLjAuMDo2NTAwMAogICAgICAgIG1vZGUgdGNwCiAgICAgICAgc2VydmVyIHNlcnZlcjAxIDE5Mi4xNjguMS4xIGNoZWNrIHBvcnQgNjAwMDAKICAgICAgICBzZXJ2ZXIgc2VydmVyMDIgMTkyLjE2OC4xLjIgY2hlY2sgcG9ydCA2MDAwMAoKICAgICMgaXB0YWJsZXMgLXQgbmF0IC1BIFBSRVJPVVRJTkcgLWkgZXRoMCAtcCB0Y3AgLWQgMTkyLjE2OC4xLjEwMCBcCiAgICAgIC1qIFJFRElSRUNUIC0tdG8tcG9ydHMgNjUwMDAKCgo0LjEuMikgQ2hvaXggZCd1bmUgYWRyZXNzZSBzb3VyY2UgcGFyIHNlcnZldXIKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkF2ZWMgbGVzIHZlcnNpb25zIDEuMS4zMCBldCAxLjIuMywgaWwgZGV2aWVudCBwb3NzaWJsZSBkZSBzcOljaWZpZXIgdW5lIGFkcmVzc2UKSVAgc291cmNlIHBvdXIgam9pbmRyZSBjaGFxdWUgc2VydmV1ci4gQydlc3QgdXRpbGUgcG91ciBqb2luZHJlIGRlcyBzZXJ2ZXVycyBkZQpiYWNrdXAg4CBwYXJ0aXIgZCd1biBMQU4gZGlmZulyZW50LCBvdSBwb3VyIHV0aWxpc2VyIGRlcyBjaGVtaW5zIGFsdGVybmF0aWZzCnBvdXIgam9pbmRyZSBsZSBt6m1lIHNlcnZldXIuIEMnZXN0IOlnYWxlbWVudCB1dGlsaXNhYmxlIHBvdXIgZmFjaWxpdGVyIHVuZQpy6XBhcnRpdGlvbiBkZSBjaGFyZ2Ugc2Vsb24gbCdhZHJlc3NlIElQIHNvdXJjZSBwb3VyIGRlcyBjb25uZXhpb25zIHNvcnRhbnRlcy4KQmllbiBlbnRlbmR1LCBsYSBt6m1lIGFkcmVzc2UgZXN0IHV0aWxpc+llIHBvdXIgbGVzIGhlYWx0aC1jaGVja3MuCgpFeGVtcGxlIDoKLS0tLS0tLS0tCiAgICAjIHV0aWxpc2VyIHVuZSBhZHJlc3NlIHBhcnRpY3VsaehyZSBwb3VyIGpvaW5kcmUgbGVzIDIgc2VydmV1cgogICAgbGlzdGVuIGh0dHBfcHJveHkgMC4wLjAuMDo2NTAwMAogICAgICAgbW9kZSBodHRwCiAgICAgICBiYWxhbmNlIHJvdW5kcm9iaW4KICAgICAgIHNlcnZlciBzZXJ2ZXIwMSAxOTIuMTY4LjEuMTo4MCBzb3VyY2UgMTkyLjE2OC4yLjEzCiAgICAgICBzZXJ2ZXIgc2VydmVyMDIgMTkyLjE2OC4xLjI6ODAgc291cmNlIDE5Mi4xNjguMi4xMwoKRXhlbXBsZSA6Ci0tLS0tLS0tLQogICAgIyB1dGlsaXNlciB1bmUgYWRyZXNzZSBwYXJ0aWN1bGnocmUgcG91ciBqb2luZHJlIGNoYXF1ZSBzZXJ2ZXVyCiAgICBsaXN0ZW4gaHR0cF9wcm94eSAwLjAuMC4wOjY1MDAwCiAgICAgICBtb2RlIGh0dHAKICAgICAgIGJhbGFuY2Ugcm91bmRyb2JpbgogICAgICAgc2VydmVyIHNlcnZlcjAxIDE5Mi4xNjguMS4xOjgwIHNvdXJjZSAxOTIuMTY4LjEuMQogICAgICAgc2VydmVyIHNlcnZlcjAyIDE5Mi4xNjguMi4xOjgwIHNvdXJjZSAxOTIuMTY4LjIuMQoKRXhlbXBsZSA6Ci0tLS0tLS0tLQogICAgIyBmYWlyZSB1bmUgculwYXJ0aXRpb24gZCdhZHJlc3NlIHNvdXJjZXMgcG91ciBqb2luZHJlIGxlIG3qbWUgcHJveHkg4AogICAgIyB0cmF2ZXJzIGRldXggbGllbnMgV0FOIAogICAgbGlzdGVuIGh0dHBfcHJveHkgMC4wLjAuMDo2NTAwMAogICAgICAgbW9kZSBodHRwCiAgICAgICBiYWxhbmNlIHJvdW5kcm9iaW4KICAgICAgIHNlcnZlciByZW1vdGUtcHJveHktd2F5MSAxOTIuMTY4LjEuMTozMTI4IHNvdXJjZSAxOTIuMTY4LjIuMQogICAgICAgc2VydmVyIHJlbW90ZS1wcm94eS13YXkyIDE5Mi4xNjguMS4xOjMxMjggc291cmNlIDE5Mi4xNjguMy4xCgpFeGVtcGxlIDoKLS0tLS0tLS0tCiAgICAjIGZvcmNlciB1bmUgY29ubmV4aW9uIFRDUCDgIHMnYXR0YWNoZXIg4CB1biBwb3J0IHBhcnRpY3VsaWVyCiAgICBsaXN0ZW4gaHR0cF9wcm94eSAwLjAuMC4wOjIwMDAKICAgICAgIG1vZGUgdGNwCiAgICAgICBiYWxhbmNlIHJvdW5kcm9iaW4KICAgICAgIHNlcnZlciBzcnYxIDE5Mi4xNjguMS4xOjgwIHNvdXJjZSAxOTIuMTY4LjIuMToyMAogICAgICAgc2VydmVyIHNydjIgMTkyLjE2OC4xLjI6ODAgc291cmNlIDE5Mi4xNjguMi4xOjIwCgo0LjEuMykgTWFpbnRpZW4gZGUgc2Vzc2lvbiBUQ1AgKGtlZXAtYWxpdmUpCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQXZlYyBsYSB2ZXJzaW9uIDEuMi43LCBpbCBkZXZpZW50IHBvc3NpYmxlIGQnYWN0aXZlciBsZSBtYWludGllbiBkZSBzZXNzaW9uClRDUCAoVENQIGtlZXAtYWxpdmUpIOAgbGEgZm9pcyBj9HTpIGNsaWVudCBldCBj9HTpIHNlcnZldXIuIENlbGEgcGVybWV0CmQnZW1w6mNoZXIgZGVzIHNlc3Npb25zIGxvbmd1ZXMgZCdleHBpcmVyIHN1ciBkZXMg6XF1aXBlbWVudHMgZGUgbml2ZWF1IDQKZXh0ZXJuZXMgdGVscyBxdWUgZGVzIGZpcmV3YWxscyBvdSBkZXMgculwYXJ0aXRldXJzIGRlIGNoYXJnZS4gQ2VsYSBwZXJtZXQKYXVzc2kgYXUgc3lzdOhtZSBkZSBk6XRlY3RlciBldCB0ZXJtaW5lciBkZXMgc2Vzc2lvbnMgZmln6WVzIGxvcnNxdSdhdWN1bgp0aW1lLW91dCBuJ2Eg6XTpIHBvc2l0aW9ubukgKGZvcnRlbWVudCBk6WNvbnNlaWxs6SkuIExlIHByb3h5IG5lIHBldXQgcGFzCnBvc2l0aW9ubmVyIGwnaW50ZXJ2YWxsZSBlbnRyZSBsZXMgYW5ub25jZXMgbmkgbGUgbm9tYnJlIG1heGltYWwsIHZldWlsbGV6CnZvdXMgculm6XJlciBhdSBtYW51ZWwgZHUgc3lzdOhtZSBkJ2V4cGxvaXRhdGlvbiBwb3VyIGNlbGEuIElsIGV4aXN0ZSAzIG9wdGlvbnMKcG91ciBhY3RpdmVyIGxlIG1haW50aWVuIGRlIHNlc3Npb24gVENQIDoKCglvcHRpb24gdGNwa2EJIyBhY3RpdmUgbGUga2VlcC1hbGl2ZSBj9HTpIGNsaWVudCBldCBj9HTpIHNlcnZldXIKCW9wdGlvbiBjbGl0Y3BrYQkjIGFjdGl2ZSBsZSBrZWVwLWFsaXZlIGP0dOkgY2xpZW50CglvcHRpb24gc3J2dGNwa2EJIyBhY3RpdmUgbGUga2VlcC1hbGl2ZSBj9HTpIHNlcnZldXIKCjQuMS40KSBS6W1hbmVuY2UgZGVzIGRvbm7pZXMgVENQIChsaW5nZXJpbmcpCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCklsIGVzdCBwb3NzaWJsZSBkZSBk6XNhY3RpdmVyIGxhIGNvbnNlcnZhdGlvbiBkZSBkb25u6WVzIG5vbiBhY3F1aXR06WVzIHBhciB1bgpjbGllbnQg4CBsYSBmaW4gZCd1bmUgc2Vzc2lvbi4gQ2VsYSBwZXV0IHBhcmZvaXMgcydhdulyZXIgbuljZXNzYWlyZSBsb3JzcXVlCmhhcHJveHkgZXN0IHV0aWxpc+kgZW4gZmFjZSBkJ3VuIGdyYW5kIG5vbWJyZSBkZSBjbGllbnRzIG5vbiBmaWFibGVzIGV0IHF1J3VuCm5vbWJyZSDpbGV26SBkZSBzb2NrZXRzIGVuIOl0YXQgRklOX1dBSVQgZXN0IG9ic2Vydukgc3VyIGxhIG1hY2hpbmUuIEwnb3B0aW9uCnBldXQg6nRyZSB1dGlsaXPpZSBkYW5zIHVuIGZyb250ZW5kIHBvdXIgYWp1c3RlciBsZXMgY29ubmV4aW9ucyB2ZXJzIGxlcwpjbGllbnRzLCBldCBkYW5zIHVuIGJhY2tlbmQgcG91ciBhanVzdGVyIGxlcyBjb25uZXhpb25zIHZlcnMgbGVzIHNlcnZldXJzIDoKCglvcHRpb24gbm9saW5nZXIJIyBk6XNhY3RpdmUgbGEgY29uc2VydmF0aW9uIGRlIGRvbm7pZXMKCgo0LjIpIEpvdXJuYWxpc2F0aW9uIGRlcyBjb25uZXhpb25zCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KCkwndW4gZGVzIHBvaW50cyBmb3J0cyBkZSBIQVByb3h5IGVzdCBpbmTpbmlhYmxlbWVudCBsYSBwculjaXNpb24gZGUgc2VzIGxvZ3MuCklsIGZvdXJuaXQgcHJvYmFibGVtZW50IGxlIHBsdXMgZmluIG5pdmVhdSBkJ2luZm9ybWF0aW9uIGRpc3BvbmlibGUgcG91ciB1bgp0ZWwgb3V0aWwsIGNlIHF1aSBlc3QgdHLocyBpbXBvcnRhbnQgcG91ciBsZXMgZGlhZ25vc3RpY3MgZW4gZW52aXJvbm5lbWVudHMKY29tcGxleGVzLiBFbiBzdGFuZGFyZCwgbGVzIGluZm9ybWF0aW9ucyBqb3VybmFsaXPpZXMgaW5jbHVlbnQgbGUgcG9ydCBjbGllbnQsCmxlcyBjaHJvbm9t6XRyYWdlcyBkZXMg6XRhdHMgVENQL0hUVFAsIGRlcyDpdGF0cyBkZSBzZXNzaW9uIHBy6WNpcyBhdSBtb21lbnQgZGUKbGEgdGVybWluYWlzb24gZXQgc2EgY2F1c2UsIGRlcyBpbmZvcm1hdGlvbnMgc3VyIGxlcyBk6WNpc2lvbnMgZCdhaWd1aWxsYWdlIGR1CnRyYWZpYyB2ZXJzIHVuIHNlcnZldXIsIGV0IGJpZW4gc/tyIGxhIHBvc3NpYmlsaXTpIGRlIGNhcHR1cmVyIGRlcyBlbi106nRlcwphcmJpdHJhaXJlcy4KCkRhbnMgbGUgYnV0IGQnYW3pbGlvcmVyIGxhIHLpYWN0aXZpdOkgZGVzIGFkbWluaXN0cmF0ZXVycywgaWwgb2ZmcmUgdW5lIGdyYW5kZQp0cmFuc3BhcmVuY2Ugc3VyIGxlcyBwcm9ibOhtZXMgcmVuY29udHLpcywg4CBsYSBmb2lzIGludGVybmVzIGV0IGV4dGVybmVzLCBldAppbCBlc3QgcG9zc2libGUgZCdlbnZveWVyIGxlcyBsb2dzIHZlcnMgZGVzIHNlcnZldXJzIGRpZmbpcmVudHMgZW4gbeptZSB0ZW1wcwphdmVjIGRlcyBuaXZlYXV4IGRlIGZpbHRyYWdlIGRpZmbpcmVudHMgOgoKICAtIGxvZ3MgZ2xvYmF1eCBhdSBuaXZlYXUgcHJvY2Vzc3VzIChlcnJldXJzIHN5c3TobWUsIGFycup0cy9k6W1hcnJhZ2VzLCAuLi4pCiAgLSBlcnJldXJzIHN5c3TobWUgZXQgaW50ZXJuZXMgcGFyIGluc3RhbmNlIChtYW5xdWUgZGUgcmVzc291cmNlcywgYnVncywgLi4uKQogIC0gcHJvYmzobWVzIGV4dGVybmVzIHBhciBpbnN0YW5jZSAoYXJy6nRzL3JlbGFuY2Ugc2VydmV1cnMsIGxpbWl0ZXMsIC4uLikKICAtIGFjdGl2aXTpIHBhciBpbnN0YW5jZSAoY29ubmV4aW9ucyBjbGllbnRzKSwgYXVzc2kgYmllbiBsb3JzIGRlIGxldXIKICAgIOl0YWJsaXNzZW1lbnQgcXUn4CBsZXVyIHRlcm1pbmFpc29uLgoKTGEgcG9zc2liaWxpdOkgZGUgZGlzdHJpYnVlciBkaWZm6XJlbnRzIG5pdmVhdXggZGUgbG9ncyDgIGRpZmbpcmVudHMgc2VydmV1cnMKcGVybWV0IOAgcGx1c2lldXJzIOlxdWlwZXMgZGUgcHJvZHVjdGlvbiBkJ2ludOlyYWdpciBldCBkZSBjb3JyaWdlciBsZXVycwpwcm9ibOhtZXMgbGUgcGx1cyB09HQgcG9zc2libGUuIFBhciBleGVtcGxlLCBsJ+lxdWlwZSBzeXN06G1lIHBldXQgc3VydmVpbGxlcgpvY2Nhc2lvbm5lbGxlbWVudCBsZXMgZXJyZXVycyBzeXN06G1lLCBwZW5kYW50IHF1ZSBsJ+lxdWlwZSBhcHBsaWNhdGlvbgpzdXJ2ZWlsbGUgbGVzIGFsZXJ0ZXMgZCdhcnLqdHMvZOltYXJyYWdlcyBkZSBzZXMgc2VydmV1cnMgZW4gdGVtcHMgcullbCwgZXQKcXVlIGwn6XF1aXBlIHPpY3VyaXTpIGFuYWx5c2UgbCdhY3Rpdml06SBlbiBkaWZm6XLpIGQndW5lIGhldXJlLgoKCjQuMi4xKSBOaXZlYXV4IGRlIGxvZwotLS0tLS0tLS0tLS0tLS0tLS0tLS0KTGVzIGNvbm5leGlvbnMgVENQIGV0IEhUVFAgcGV1dmVudCBkb25uZXIgbGlldSDgIHVuZSBqb3VybmFsaXNhdGlvbiBzb21tYWlyZSBvdQpk6XRhaWxs6WUgaW5kaXF1YW50LCBwb3VyIGNoYXF1ZSBjb25uZXhpb24sIGxhIGRhdGUsIGwnaGV1cmUsIGwnYWRyZXNzZSBJUApzb3VyY2UsIGxlIHNlcnZldXIgZGVzdGluYXRpb24sIGxhIGR1cullIGRlIGxhIGNvbm5leGlvbiwgbGVzIHRlbXBzIGRlIHLpcG9uc2UsCmxhIHJlcXXqdGUgSFRUUCwgbGUgY29kZSBkZSByZXRvdXIsIGxhIHF1YW50aXTpIGRlIGRvbm7pZXMgdHJhbnNtaXNlcywgZXQgbeptZQpkYW5zIGNlcnRhaW5zIGNhcywgbGEgdmFsZXVyIGQndW4gY29va2llIHBlcm1ldHRhbnQgZGUgc3VpdnJlIGxlcyBzZXNzaW9ucy4KVG91cyBsZXMgbWVzc2FnZXMgc29udCBlbnZveelzIGVuIHN5c2xvZyB2ZXJzIHVuIG91IGRldXggc2VydmV1cnMuIFNlIHLpZulyZXIg4ApsYSBzZWN0aW9uIDEuMSBwb3VyIHBsdXMgZCdpbmZvcm1hdGlvbiBzdXIgbGVzIGNhdOlnb3JpZXMgZGUgbG9ncy4gIExhIHN5bnRheGUKZXN0IGxhIHN1aXZhbnRlIDoKCiAgICBsb2cgPGFkcmVzc2VfaXBfMT4gPGNhdOlnb3JpZV8xPiBbbml2ZWF1X21heF8xXQogICAgbG9nIDxhZHJlc3NlX2lwXzI+IDxjYXTpZ29yaWVfMj4gW25pdmVhdV9tYXhfMl0Kb3UKICAgIGxvZyBnbG9iYWwKClJlbWFycXVlIDoKLS0tLS0tLS0tLQpMYSBzeW50YXhlIHNw6WNpZmlxdWUgJ2xvZyBnbG9iYWwnIGluZGlxdWUgcXVlIGwnb24gc291aGFpdGUgdXRpbGlzZXIgbGVzCnBhcmFt6HRyZXMgZGUgam91cm5hbGlzYXRpb24gZOlmaW5pcyBkYW5zIGxhIHNlY3Rpb24gJ2dsb2JhbCcuCgpFeGVtcGxlIDoKLS0tLS0tLS0tCiAgICBsaXN0ZW4gaHR0cF9wcm94eSAwLjAuMC4wOjgwCiAgICAgICAgbW9kZSBodHRwCiAgICAgICAgbG9nIDE5Mi4xNjguMi4yMDAgbG9jYWwzCiAgICAgICAgbG9nIDE5Mi4xNjguMi4yMDEgbG9jYWw0Cgo0LjIuMikgRm9ybWF0IGRlcyBsb2dzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KUGFyIGTpZmF1dCwgbGVzIGNvbm5leGlvbnMgc29udCBqb3VybmFsaXPpZXMgYXUgbml2ZWF1IFRDUCBk6HMgbCfpdGFibGlzc2VtZW50CmRlIGxhIHNlc3Npb24gZW50cmUgbGUgY2xpZW50IGV0IGxlIHJlbGFpcy4gRW4gcHLpY2lzYW50IGwnb3B0aW9uICd0Y3Bsb2cnLApsYSBjb25uZXhpb24gbmUgc2VyYSBqb3VybmFsaXPpZSBxdSdlbiBmaW4gZGUgc2Vzc2lvbiwgYWpvdXRhbnQgZGVzIHBy6WNpc2lvbnMKc3VyIHNvbiDpdGF0IGxvcnMgZGUgbGEgZOljb25uZXhpb24sIGFpbnNpIHF1ZSBsZSB0ZW1wcyBkZSBjb25uZXhpb24gZXQgbGEKZHVy6WUgdG90YWxlIGRlIGxhIHNlc3Npb24uIExlIG5vbWJyZSBkZSBzZXNzaW9ucyByZXN0YW50ZXMgYXBy6HMgbGEKZOljb25uZXhpb24gZXN0IOlnYWxlbWVudCBpbmRpcXXpIChwb3VyIGxlIHNlcnZldXIsIGwnaW5zdGFuY2UgZXQgbGUgcHJvY2VzcykuCgpFeGVtcGxlIGRlIGpvdXJuYWxpc2F0aW9uIFRDUCA6Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgIGxpc3RlbiByZWxhaXMtdGNwIDAuMC4wLjA6ODAwMAogICAgICAgIG1vZGUgdGNwCiAgICAgICAgb3B0aW9uIHRjcGxvZwogICAgICAgIGxvZyAxOTIuMTY4LjIuMjAwIGxvY2FsMwoKPj4+IGhhcHJveHlbMTg5ODldOiAxMjcuMC4wLjE6MzQ1NTAgWzE1L09jdC8yMDAzOjE1OjI0OjI4XSByZWxhaXMtdGNwIFNydjEgMC8wLzUwMDcgMCAtLSAxLzEvMSAwLzAKICAKICAgIENoYW1wICBGb3JtYXQgLyBEZXNjcmlwdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgRXhlbXBsZQoKICAgICAgICAxICBub21fcHJvY2Vzc3VzICdbJyBwaWQgJ106JyAgICAgICAgICAgICAgICAgICAgaGFwcm94eVsxODk4OV06CiAgICAgICAgMiAgaXBfY2xpZW50ICc6JyBwb3J0X2NsaWVudCAgICAgICAgICAgICAgICAgICAgIDEyNy4wLjAuMTozNDU1MAogICAgICAgIDMgICdbJyBkYXRlICddJyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbMTUvT2N0LzIwMDM6MTU6MjQ6MjhdCiAgICAgICAgNCAgbm9tX2luc3RhbmNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbGFpcy10Y3AKICAgICAgICA1ICBub21fc2VydmV1ciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3J2MQogICAgICAgIDYgIHRlbXBzX2ZpbGUgJy8nIHRlbXBzX2Nvbm5lY3QgJy8nIHRlbXBzX3RvdGFsICAwLzAvNTAwNwogICAgICAgIDcgIG9jdGV0cyBsdXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwCiAgICAgICAgOCAgZXRhdF90ZXJtaW5haXNvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAgICAgICAgOSAgY29ubl9zcnYgJy8nIGNvbm5zX2luc3QgJy8nIGNvbm5zX3Byb2Nlc3N1cyAgIDEvMS8xCiAgICAgICAxMCAgcG9zaXRpb24gZW4gZmlsZSBkJ2F0dGVudGUgc3J2ICcvJyBnbG9iYWxlICAgIDAvMAoKVW5lIGF1dHJlIG9wdGlvbiwgJ2h0dHBsb2cnLCBmb3Vybml0IHBsdXMgZGUgZOl0YWlscyBzdXIgbGUgcHJvdG9jb2xlIEhUVFAsCm5vdGFtbWVudCBsYSByZXF16nRlIGV0IGwn6XRhdCBkZXMgY29va2llcy4gRGFucyBsZXMgY2FzIG/5IHVuIG3pY2FuaXNtZSBkZQpzdXJ2ZWlsbGFuY2UgZWZmZWN0dWFudCBkZXMgY29ubmV4aW9ucyBldCBk6WNvbm5leGlvbnMgZnLpcXVlbnRlcywgcG9sbHVlcmFpdApsZXMgbG9ncywgaWwgc3VmZml0IGQnYWpvdXRlciBsJ29wdGlvbiAnZG9udGxvZ251bGwnLCBwb3VyIG5lIHBsdXMgb2J0ZW5pciB1bmUKbGlnbmUgZGUgbG9nIHBvdXIgbGVzIHNlc3Npb25zIG4nYXlhbnQgcGFzIGRvbm7pIGxpZXUg4CB1biDpY2hhbmdlIGRlIGRvbm7pZXMKKHJlcXXqdGUgb3Ugculwb25zZSkuCgpFeGVtcGxlIGRlIGpvdXJuYWxpc2F0aW9uIEhUVFAgOgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgbGlzdGVuIGh0dHBfcHJveHkgMC4wLjAuMDo4MAogICAgICAgIG1vZGUgaHR0cAogICAgICAgIG9wdGlvbiBodHRwbG9nCiAgICAgICAgb3B0aW9uIGRvbnRsb2dudWxsCiAgICAgICAgbG9nIDE5Mi4xNjguMi4yMDAgbG9jYWwzCgo+Pj4gaGFwcm94eVs2NzRdOiAxMjcuMC4wLjE6MzMzMTkgWzE1L09jdC8yMDAzOjA4OjMxOjU3XSByZWxhaXMtaHR0cCBTcnYxIDkvMC83LzE0Ny83MjMgMjAwIDI0MyAtIC0gLS0tLSAyLzMvMyAwLzAgIkhFQUQgLyBIVFRQLzEuMCIKCkV4ZW1wbGUgcGx1cyBjb21wbGV0IDoKCiAgICBoYXByb3h5WzE4OTg5XTogMTAuMC4wLjE6MzQ1NTIgWzE1L09jdC8yMDAzOjE1OjI2OjMxXSByZWxhaXMtaHR0cCBTcnYxIDMxODMvLTEvLTEvLTEvMTEyMTUgNTAzIDAgLSAtIFNDLS0gMTM3LzIwMi8yMDUgMC8wIHt3Lm9kcy5vcmd8TW96aWxsYX0ge30gIkhFQUQgLyBIVFRQLzEuMCIgCgogICAgQ2hhbXAgIEZvcm1hdCAvIERlc2NyaXB0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICBFeGVtcGxlCgogICAgICAgIDEgIG5vbV9wcm9jZXNzdXMgJ1snIHBpZCAnXTonICAgICAgICAgICAgICAgICAgICBoYXByb3h5WzE4OTg5XToKICAgICAgICAyICBpcF9jbGllbnQgJzonIHBvcnRfY2xpZW50ICAgICAgICAgICAgICAgICAgICAgMTAuMC4wLjE6MzQ1NTIKICAgICAgICAzICAnWycgZGF0ZSAnXScgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWzE1L09jdC8yMDAzOjE1OjI2OjMxXQogICAgICAgIDQgIG5vbV9pbnN0YW5jZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWxhaXMtaHR0cAogICAgICAgIDUgIG5vbV9zZXJ2ZXVyICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTcnYxCiAgICAgICAgNiAgVHEgJy8nIFR3ICcvJyBUYyAnLycgVHIgJy8nIFR0ICAgICAgICAgICAgICAgIDMxODMvLTEvLTEvLTEvMTEyMTUKICAgICAgICA3ICBDb2RlX3JldG91cl9IVFRQICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgNTAzCiAgICAgICAgOCAgb2N0ZXRzIGx1cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAKICAgICAgICA5ICBjb29raWVzX3JlcXXqdGVfY2FwdHVy6XMgICAgICAgICAgICAgICAgICAgICAgLQogICAgICAgMTAgIGNvb2tpZXNfcmVwb25zZV9jYXB0dXLpcyAgICAgICAgICAgICAgICAgICAgICAtCiAgICAgICAxMSAgZXRhdF90ZXJtaW5haXNvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNDLS0KICAgICAgIDEyICBjb25uc19zcnYgJy8nIGNvbm5zX2luc3QgJy8nIGNvbm5zX3Byb2Nlc3N1cyAgMTM3LzIwMi8yMDUKICAgICAgIDEzICBwb3NpdGlvbiBmaWxlIHNlcnZldXIgJy8nIGdsb2JhbGUgICAgICAgICAgICAgMC8wCiAgICAgICAxNCAgJ3snIGVudGV0ZXNfcmVxdep0ZV9jYXB0dXLpcyAnfScgICAgICAgICAgICAgIHt3Lm9kcy5vcmd8TW96aWxsYX0KICAgICAgIDE1ICAneycgZW50ZXRlc19yZXBvbnNlX2NhcHR1culzICd9JyAgICAgICAgICAgICAge30KICAgICAgIDE2ICAnIicgcmVxdep0ZV9IVFRQICciJyAgICAgICAgICAgICAgICAgICAgICAgICAgIkhFQUQgLyBIVFRQLzEuMCIKICAKTm90ZSBwb3VyIGxlcyBhbmFseXNldXJzIGRlIGxvZ3MgOiBsJ1VSSSBlc3QgVE9VSk9VUlMgbGUgZGVybmllciBjaGFtcCBkZSBsYSBsaWduZSwgZXQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tZW5jZSBwYXIgdW4gZ3VpbGxlbWV0ICciJy4KCkxlIHByb2Js6G1lIGRlIGxvZ3VlciB1bmlxdWVtZW50IGVuIGZpbiBkZSBzZXNzaW9uLCBjJ2VzdCBxdSdpbCBlc3QgaW1wb3NzaWJsZQpkZSBzYXZvaXIgY2UgcXVpIHNlIHBhc3NlIGR1cmFudCBkZSBncm9zIHRyYW5zZmVydHMgb3UgZGVzIHNlc3Npb25zIGxvbmd1ZXMuClBvdXIgcGFsbGllciDgIGNlIHByb2Js6G1lLCB1bmUgbm91dmVsbGUgb3B0aW9uICdsb2dhc2FwJyBhIOl06SBpbnRyb2R1aXRlIGRhbnMKbGEgdmVyc2lvbiAxLjEuMjggKDEuMi4xKS4gTG9yc3F1J2VsbGUgZXN0IGFjdGl26WUsIGxlIHByb3h5IGxvZ3VlcmEgbGUgcGx1cwp09HQgcG9zc2libGUsIGMnZXN0IOAgZGlyZSBqdXN0ZSBhdmFudCBxdWUgbmUgZOlidXRlbnQgbGVzIHRyYW5zZmVydHMgZGUKZG9ubullcy4gQ2VsYSBzaWduaWZpZSwgZGFucyBsZSBjYXMgZHUgVENQLCBxdSdpbCBsb2d1ZXJhIHRvdWpvdXJzIGxlIHLpc3VsdGF0CmRlIGxhIGNvbm5leGlvbiB2ZXJzIGxlIHNlcnZldXIsIGV0IGRhbnMgbGUgY2FzIEhUVFAsIHF1J2lsIGxvZ3VlcmEgZW4gZmluIGRlCnRyYWl0ZW1lbnQgZGVzIGVuLXTqdGVzIGRlIGxhIHLpcG9uc2UgZHUgc2VydmV1ciwgYXVxdWVsIGNhcyBsZSBub21icmUgZCdvY3RldHMKcmVwculzZW50ZXJhIGxhIHRhaWxsZSBkZXMgZW4tdOp0ZXMgcmV0b3VybulzIGF1IGNsaWVudC4KCkFmaW4gZCfpdml0ZXIgdG91dGUgY29uZnVzaW9uIGF2ZWMgbGVzIGxvZ3Mgbm9ybWF1eCwgbGUgdGVtcHMgdG90YWwgZGUKdHJhbnNmZXJ0IGV0IGxlIG5vbWJyZSBkJ29jdGV0cyB0cmFuc2bpculzIHNvbnQgcHLpZml46XMgZCd1biBzaWduZSAnKycKcmFwcGVsYW50IHF1ZSBsZXMgdmFsZXVycyBy6WVsbGVzIHNvbnQgY2VydGFpbmVtZW50IHBsdXMg6Wxldullcy4KCkV4ZW1wbGUgOgotLS0tLS0tLS0KCiAgICBsaXN0ZW4gaHR0cF9wcm94eSAwLjAuMC4wOjgwCiAgICAgICAgbW9kZSBodHRwCiAgICAgICAgb3B0aW9uIGh0dHBsb2cKICAgICAgICBvcHRpb24gZG9udGxvZ251bGwKICAgICAgICBvcHRpb24gbG9nYXNhcAogICAgICAgIGxvZyAxOTIuMTY4LjIuMjAwIGxvY2FsMwoKPj4+IGhhcHJveHlbNjc0XTogMTI3LjAuMC4xOjMzMzIwIFsxNS9PY3QvMjAwMzowODozMjoxN10gcmVsYWlzLWh0dHAgU3J2MSA5LzcvMTQvKzMwIDIwMCArMjQzIC0gLSAtLS0tIDMvMyAiR0VUIC9pbWFnZS5pc28gSFRUUC8xLjAiCgoKNC4yLjMpIENocm9ub23pdHJhZ2UgZGVzIOl26W5lbWVudHMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KUG91ciBk6WNlbGVyIGRlcyBwcm9ibOhtZXMgculzZWF1LCBsZXMgbWVzdXJlcyBkdSB0ZW1wcyDpY291bOkgZW50cmUgY2VydGFpbnMK6XbpbmVtZW50cyBzb250IGQndW5lIHRy6HMgZ3JhbmRlIHV0aWxpdOkuIFRvdXMgbGVzIHRlbXBzIHNvbnQgbWVzdXLpcyBlbgptaWxsaXNlY29uZGVzIChtcykuIEVuIG1vZGUgSFRUUCwgcXVhdHJlIHBvaW50cyBkZSBtZXN1cmUgc29udCByYXBwb3J06XMgc291cwpsYSBmb3JtZSBUcS9Udy9UYy9Uci9UdCA6CgogIC0gVHE6IHRlbXBzIHRvdGFsIGRlIHLpY2VwdGlvbiBkZSBsYSByZXF16nRlIEhUVFAgZGUgbGEgcGFydCBkdSBjbGllbnQuCiAgICBDJ2VzdCBsZSB0ZW1wcyBxdWkgcydlc3Qg6WNvdWzpIGVudHJlIGxlIG1vbWVudCBv+SBsZSBjbGllbnQgYSDpdGFibGkKICAgIHNhIGNvbm5leGlvbiB2ZXJzIGxlIHJlbGFpcywgZXQgbGUgbW9tZW50IG/5IGNlIGRlcm5pZXIgYSByZed1IGxlIGRlcm5pZXIKICAgIGVuLXTqdGUgSFRUUCB2YWxpZGFudCBsYSBmaW4gZGUgbGEgcmVxdep0ZS4gVW5lIHZhbGV1ciAnLTEnIGljaSBpbmRpcXVlCiAgICBxdWUgbGEgcmVxdep0ZSBjb21wbOh0ZSBuJ2EgamFtYWlzIOl06SByZed1ZS4KCiAgLSBUdzogdGVtcHMgdG90YWwgcGFzc+kgZGFucyBsZXMgZmlsZXMgZCdhdHRlbnRlIGF2YW50IGQnb2J0ZW5pciB1bmUgcGxhY2UKICAgIHZlcnMgdW4gc2VydmV1ci4gQ2VjaSB0aWVudCBjb21wdGUg4CBsYSBmb2lzIGRlIGxhIGZpbGUgZCdhdHRlbnRlIGdsb2JhbGUKICAgIGV0IGRlIGNlbGxlIGR1IHNlcnZldXIsIGV0IGTpcGVuZCBkdSBub21icmUgZGUgcmVxdep0ZXMgZGFucyBsYSBmaWxlIGV0IGR1CiAgICB0ZW1wcyBu6WNlc3NhaXJlIGF1IHNlcnZldXIgcG91ciBjb21wbOl0ZXIgbGVzIHNlc3Npb25zIHBy6WPpZGVudGVzLiBMYQogICAgdmFsZXVyICctMScgaW5kaXF1ZSBxdWUgbGEgcmVxdep0ZSBhIOl06SBk6XRydWl0ZSBhdmFudCBkJ2F0dGVpbmRyZSB1bmUKICAgIGZpbGUuCgogIC0gVGM6IHRlbXBzIGQn6XRhYmxpc3NlbWVudCBkZSBsYSBjb25uZXhpb24gVENQIGR1IHJlbGFpcyB2ZXJzIGxlIHNlcnZldXIuCiAgICBDJ2VzdCBsZSB0ZW1wcyDpY291bOkgZW50cmUgbGUgbW9tZW50IG91IGxlIHJlbGFpcyBhIGluaXRp6SBsYSBkZW1hbmRlIGRlCiAgICBjb25uZXhpb24gdmVycyBsZSBzZXJ2ZXVyLCBldCBsZSBtb21lbnQgb/kgY2UgZGVybmllciBsJ2EgYWNxdWl0dOllLCBjJ2VzdAogICAg4CBkaXJlIGxlIHRlbXBzIGVudHJlIGwnZW52b2kgZHUgcGFxdWV0IFRDUCBTWU4gbGEgculjZXB0aW9uIGR1IFNZTi9BQ0suCiAgICBVbmUgdmFsZXVyICctMScgaWNpIGluZGlxdWUgcXVlIGxhIGNvbm5leGlvbiBuJ2EgamFtYWlzIHB1IOp0cmUg6XRhYmxpZQogICAgdmVycyBsZSBzZXJ2ZXVyLgoKICAtIFRyOiB0ZW1wcyBkZSBy6XBvbnNlIGR1IHNlcnZldXIuIEMnZXN0IGxlIHRlbXBzIHF1ZSBsZSBzZXJ2ZXVyIGEgbWlzIHBvdXIKICAgIHJlbnZveWVyIGxhIHRvdGFsaXTpIGRlcyBlbi106nRlcyBIVFRQIOAgcGFydGlyIGR1IG1vbWVudCBv+SBpbCBhIGFjcXVpdHTpCiAgICBsYSBjb25uZXhpb24uIENhIHJlcHLpc2VudGUgZXhhY3RlbWVudCBsZSB0ZW1wcyBkZSB0cmFpdGVtZW50IGRlIGxhCiAgICB0cmFuc2FjdGlvbiBzYW5zIGxlIHRyYW5zZmVydCBkZXMgZG9ubullcyBhc3NvY2npZXMuIFVuZSB2YWxldXIgJy0xJwogICAgaW5kaXF1ZSBxdWUgbGUgc2VydmV1ciBuJ2EgcGFzIGVudm956SBsYSB0b3RhbGl06SBkZSBsJ2VuLXTqdGUgSFRUUC4KCiAgLSBUdDogZHVy6WUgZGUgdmllIHRvdGFsZSBkZSBsYSBzZXNzaW9uLCBlbnRyZSBsZSBtb21lbnQgb/kgbGEgZGVtYW5kZSBkZQogICAgY29ubmV4aW9uIGR1IGNsaWVudCBhIOl06SBhY3F1aXR06WUgZXQgbGUgbW9tZW50IG/5IGxhIGNvbm5leGlvbiBhIOl06QogICAgcmVmZXJt6WUgYXV4IGRldXggZXh0cultaXTpcyAoY2xpZW50IGV0IHNlcnZldXIpLiBMYSBzaWduaWZpY2F0aW9uIGNoYW5nZQogICAgdW4gcGV1IHNpIGwnb3B0aW9uICdsb2dhc2FwJyBlc3QgcHLpc2VudGUuIERhbnMgY2UgY2FzLCBsZSB0ZW1wcyBjb3JyZXNwb25kCiAgICB1bmlxdWVtZW50IOAgKFRxICsgVHcgKyBUYyArIFRyKSwgZXQgc2UgdHJvdXZlIHBy6WZpeOkgZCd1biBzaWduZSAnKycuIE9uCiAgICBwZXV0IGRvbmMgZOlkdWlyZSBUZCwgbGUgdGVtcHMgZGUgdHJhbnNmZXJ0IGRlcyBkb25u6WVzLCBlbiBleGNsdWFudCBsZXMKICAgIGF1dHJlcyB0ZW1wcyA6CgogICAgICAgIFRkID0gVHQgLSAoVHEgKyBUdyArIFRjICsgVHIpCgogICAgTGVzIHRlbXBzIHJhcHBvcnTpcyDgICctMScgc29udCBzaW1wbGVtZW50IOAg6WxpbWluZXIgZGUgY2V0dGUg6XF1YXRpb24uCgpFbiBtb2RlIFRDUCAoJ29wdGlvbiB0Y3Bsb2cnKSwgc2V1bHMgbGVzIGRldXggaW5kaWNhdGV1cnMgVHcsIFRjIGV0IFR0IHNvbnQKcmFwcG9ydOlzLgoKQ2VzIHRlbXBzIGZvdXJuaXNzZW50IGRlIHBy6WNpZXV4IHJlbnNlaWduZW1lbnQgc3VyIGRlcyBjYXVzZXMgcHJvYmFibGVzIGRlCnByb2Js6G1lcy4gRHUgZmFpdCBxdWUgbGUgcHJvdG9jb2xlIFRDUCBk6WZpbmlzc2UgZGVzIHRlbXBzIGRlIHJldHJhbnNtaXNzaW9uCmRlIDMgc2Vjb25kZXMsIHB1aXMgNiwgMTIsIGV0Yy4uLiwgbCdvYnNlcnZhdGlvbiBkZSB0ZW1wcyBwcm9jaGVzIGRlIG11bHRpcGxlcwpkZSAzIHNlY29uZGVzIGluZGlxdWUgcHJhdGlxdWVtZW50IHRvdWpvdXJzIGRlcyBwZXJ0ZXMgZGUgcGFxdWV0cyBsaelzIOAgdW4KcHJvYmzobWUgculzZWF1IChj4mJsZSBvdSBu6WdvY2lhdGlvbikuIERlIHBsdXMsIHNpIDxUdD4gZXN0IHByb2NoZSBkJ3VuZQp2YWxldXIgZGUgdGltZS1vdXQgZGFucyBsYSBjb25maWd1cmF0aW9uLCBjJ2VzdCBzb3V2ZW50IHF1J3VuZSBzZXNzaW9uIGEg6XTpCmFiYW5kb25u6WUgc3VyIGV4cGlyYXRpb24gZCd1biB0aW1lLW91dC4KCkNhcyBsZXMgcGx1cyBmculxdWVudHMgOgoKICAtIFNpIFRxIGVzdCBwcm9jaGUgZGUgMzAwMCwgdW4gcGFxdWV0IGEgdHLocyBjZXJ0YWluZW1lbnQg6XTpIHBlcmR1IGVudHJlCiAgICBsZSBjbGllbnQgZXQgbGUgcmVsYWlzLgogIC0gU2kgVGMgZXN0IHByb2NoZSBkZSAzMDAwLCB1biBwYXF1ZXQgYSB0cuhzIGNlcnRhaW5lbWVudCDpdOkgcGVyZHUgZW50cmUKICAgIGxlIHJlbGFpcyBldCBsZSBzZXJ2ZXVyIGR1cmFudCBsYSBwaGFzZSBkZSBjb25uZXhpb24uIENldCBpbmRpY2F0ZXVyCiAgICBkZXZyYWl0IG5vcm1hbGVtZW50IHRvdWpvdXJzIOp0cmUgdHLocyBiYXMgKG1vaW5zIGRlIHF1ZWxxdWVzIGRpemFpbmVzKS4KICAtIFNpIFRyIGVzdCBwcmVzcXVlIHRvdWpvdXJzIGluZulyaWV1ciDgIDMwMDAsIGV0IHF1ZSBjZXJ0YWluZXMgdmFsZXVycwogICAgc2VtYmxlbnQgcHJvY2hlcyBkZSBsYSB2YWxldXIgbW95ZW5uZSBtYWpvcullIGRlIDMwMDAsIGlsIHkgYSBwZXV0Lep0cmUKICAgIGRlIHBlcnRlcyBlbnRyZSBsZSByZWxhaXMgZXQgbGUgc2VydmV1ci4KICAtIFNpIFR0IGVzdCBs6WfocmVtZW50IHN1cOlyaWV1ciBhdSB0aW1lLW91dCwgYydlc3Qgc291dmVudCBwYXJjZSBxdWUgbGUKICAgIGNsaWVudCBldCBsZSBzZXJ2ZXVyIHV0aWxpc2VudCBkdSBrZWVwLWFsaXZlIEhUVFAgZW50cmUgZXV4IGV0IHF1ZSBsYQogICAgc2Vzc2lvbiBlc3QgbWFpbnRlbnVlIGFwcuhzIGxhIGZpbiBkZXMg6WNoYW5nZXMuIFZvaXIgcGx1cyBsb2luIHBvdXIKICAgIHNhdm9pciBjb21tZW50IGTpc2FjdGl2ZXIgbGUga2VlcC1hbGl2ZSBIVFRQLgoKQXV0cmVzIGNhcyAoJ3h4JyByZXBy6XNlbnRhbnQgdW5lIHZhbGV1ciBxdWVsY29ucXVlIOAgaWdub3JlcikgOgogIC0xL3h4L3h4L3h4L1R0OiBsZSBjbGllbnQgbidhIHBhcyBlbnZveekgc2EgcmVxdep0ZSBkYW5zIGxlIHRlbXBzIGltcGFydGkgb3UKICAgICAgICAgICAgICAgICAgYSByZWZlcm3pIHNhIGNvbm5leGlvbiBzYW5zIGNvbXBs6XRlciBsYSByZXF16nRlLgogIFRxLy0xL3h4L3h4L1R0OiBJbCBuJ+l0YWl0IHBhcyBwb3NzaWJsZSBkZSB0cmFpdGVyIGxhIHJlcXVlc3QsIHByb2JhYmxlbWVudAogICAgICAgICAgICAgICAgICBwYXJjZSBxdWUgdG91cyBsZXMgc2VydmV1cnMg6XRhaWVudCBob3JzIGQndXNhZ2UuCiAgVHEvVHcvLTEveHgvVHQ6IGxhIGNvbm5leGlvbiBuJ2EgcGFzIHB1IHMn6XRhYmxpciB2ZXJzIGxlIHNlcnZldXIgKHJlZnVzIG91CiAgICAgICAgICAgICAgICAgIHRpbWUtb3V0IGF1IGJvdXQgZGUgVHQtKFRxK1R3KSBtcykuCiAgVHEvVHcvVGMvLTEvVHQ6IGxlIHNlcnZldXIgYSBhY2NlcHTpIGxhIGNvbm5leGlvbiBtYWlzIG4nYSBwYXMgculwb25kdSBkYW5zCiAgICAgICAgICAgICAgICAgIGxlcyB0ZW1wcyBvdSBiaWVuIGEgcmVmZXJt6SBzYSBjb25uZXhpb24gdHJvcCB09HQsIGF1IGJvdXQKICAgICAgICAgICAgICAgICAgZGUgVHQtKFRxK1R3K1RjKSBtcy4KICAgICAKNC4yLjQpIENvbmRpdGlvbnMgZGUgZOljb25uZXhpb24KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KTGVzIGxvZ3MgVENQIGV0IEhUVFAgZm91cm5pc3NlbnQgdW4gaW5kaWNhdGV1ciBkZSBjb21wbOl0dWRlIGRlIGxhIHNlc3Npb24gZGFucwpsZSBjaGFtcCAnZXRhdF90ZXJtaW5haXNvbicsIGp1c3RlIGF2YW50IGxlIG5vbWJyZSBkZSBjb25uZXhpb25zIGFjdGl2ZXMuIEMnZXN0CnVuIGNoYW1wIGxvbmcgZGUgMiBjYXJhY3TocmVzIGVuIFRDUCBldCBkZSA0IGNhcmFjdOhyZXMgZW4gSFRUUCwgY2hhY3VuIGF5YW50CnVuZSBzaWduaWZpY2F0aW9uIHBy6WNpc2UgOgoKICAtIHN1ciBsZSBwcmVtaWVyIGNhcmFjdOhyZSwgdW4gY29kZSBwculjaXNhbnQgbGUgcHJlbWllciDpduluZW1lbnQgcXVpIGEgY2F1c+kKICAgIGxhIHRlcm1pbmFpc29uIGRlIGxhIHNlc3Npb24gOgoKICAgICAgICBDIDogZmVybWV0dXJlIGluYXR0ZW5kdWUgZGUgbGEgc2Vzc2lvbiBUQ1AgZGUgbGEgcGFydCBkdSBjbGllbnQuCgogICAgICAgIFMgOiBmZXJtZXR1cmUgaW5hdHRlbmR1ZSBkZSBsYSBzZXNzaW9uIFRDUCBkZSBsYSBwYXJ0IGR1IHNlcnZldXIsIG91CiAgICAgICAgICAgIHJlZnVzIGV4cGxpY2l0ZSBkZSBjb25uZXhpb24gZGUgbGEgcGFydCBkZSBjZSBkZXJuaWVyLgoKICAgICAgICBQIDogdGVybWluYWlzb24gcHLpbWF0dXLpZSBkZXMgc2Vzc2lvbnMgcGFyIGxlIHByb3h5LCBwb3VyIGNhdXNlCiAgICAgICAgICAgIGQnaW1wb3NpdGlvbiBkJ3VuZSBsaW1pdGUgc3VyIGxlIG5vbWJyZSBkZSBjb25uZXhpb25zLCBwb3VyIGNhdXNlCiAgICAgICAgICAgIGRlIGNvbmZpZ3VyYXRpb24gKGV4OiBmaWx0cmUgZCdVUkwpLCBvdSBwYXJjZSBxdSd1biBjb250cvRsZSBkZQogICAgICAgICAgICBz6WN1cml06SBhIGTpdGVjdOkgZXQgYmxvcXXpIHVuZSBhbm9tYWxpZSBkYW5zIGxhIHLpcG9uc2UgZHUKICAgICAgICAgICAgc2VydmV1ciBxdWkgYXVyYWl0IHB1IGNhdXNlciB1bmUgZnVpdGUgZCdpbmZvcm1hdGlvbnMgKHBhciBleGVtcGxlLAogICAgICAgICAgICB1biBjb29raWUgY2FjaGFibGUpLgoKICAgICAgICBSIDogdW5lIHJlc3NvdXJjZSBzdXIgbGUgcHJveHkgYSDpdOkg6XB1aXPpZSAobeltb2lyZSwgc29ja2V0cywgcG9ydHMKICAgICAgICAgICAgc291cmNlLCAuLi4pLiBH6W7pcmFsZW1lbnQsIGNlbGEgYXJyaXZlIGF1IGNvdXJzIGRlIGwn6XRhYmxpc3NlbWVudAogICAgICAgICAgICBkJ3VuZSBjb25uZXhpb24sIGV0IGxlcyBsb2dzIHN5c3TobWUgZG9pdmVudCBjb250ZW5pciB1bmUgY29waWUgZGUKICAgICAgICAgICAgbCfpcnJldXIgcHLpY2lzZS4KCiAgICAgICAgSSA6IHVuZSBlcnJldXIgaW50ZXJuZSBhIOl06SBpZGVudGlmaellIHBhciBsZSBwcm94eSDgIGxhIHN1aXRlIGQndW4KICAgICAgICAgICAgYXV0by1jb250cvRsZS4gQ2VjaSBuZSBkb2l0IEpBTUFJUyBhcnJpdmVyLCBldCB2b3VzIOp0ZXMgZW5jb3VyYWfpcwogICAgICAgICAgICDgIHJlbW9udGVyIG4naW1wb3J0ZSBxdWVsIGxvZyBjb250ZW5hbnQgY2VjaSBjYXIgaWwgcydhZ2lyYSB1biBidWcuCgogICAgICAgIGMgOiBsZSBk6WxhaSBtYXhpbWFsIGQnYXR0ZW50ZSBkdSBjbGllbnQgYSBleHBpcukgKGNsaXRpbWVvdXQpLgoKICAgICAgICBzIDogbGUgZOlsYWkgbWF4aW1hbCBkJ2F0dGVudGUgZHUgc2VydmV1ciBhIGV4cGly6SAoc3J2dGltZW91dCBldCBjb250aW1lb3V0KQoKICAgICAgICAtIDogdGVybWluYWlzb24gbm9ybWFsZSBkZSBzZXNzaW9uLgoKICAtIHN1ciBsZSBzZWNvbmQgY2FyYWN06HJlLCBsJ+l0YXQgZCdhdmFuY2VtZW50IGRlIGxhIHNlc3Npb24gVENQL0hUVFAgbG9ycyBkZQogICAgbGEgZmVybWV0dXJlIDoKCiAgICAgICAgUiA6IGF0dGVudGUgZCd1bmUgUkVRVUVURSBIVFRQIGNvbXBs6HRlIGRlIGxhIHBhcnQgZHUgY2xpZW50LiBSaWVuIG4nYQogICAgICAgICAgICDpdOkgdHJhbnNtaXMgYXUgc2VydmV1ci4KCiAgICAgICAgUSA6IGF0dGVudGUgZW4gZmlsZSBkJ2F0dGVudGUgKFFVRVVFKSBkJ3VuZSBwbGFjZSBwb3VyIGF2b2lyIHVuZQogICAgICAgICAgICBjb25uZXhpb24gdmVycyB1biBzZXJ2ZXVyLiBOZSBwZXV0IGFwcGFyYe50cmUgcXVlIHN1ciB1biBzZXJ2ZXVyCiAgICAgICAgICAgIHBvc3PpZGFudCB1biBwYXJhbeh0cmUgJ21heGNvbm4nLiBBdWN1bmUgY29ubmV4aW9uIG4nYSDpdOkgZW52b3npZQogICAgICAgICAgICBhdSBzZXJ2ZXVyLgoKICAgICAgICBDIDogYXR0ZW50ZSBkZSBsJ+l0YWJsaXNzZW1lbnQgZCd1bmUgQ09OTkVYSU9OIHZlcnMgbGUgc2VydmV1ci4gTGUKICAgICAgICAgICAgc2VydmV1ciBwZXV0IGF1IHBsdXMgYXZvaXIgdnUgbGEgdGVudGF0aXZlIGRlIGNvbm5leGlvbiwgbWFpcwogICAgICAgICAgICBhdWN1bmUgZG9ubullIG4nYSDpdOkg6WNoYW5n6WUuCgogICAgICAgIEggOiBhdHRlbnRlLCBy6WNlcHRpb24gb3UgdHJhaXRlbWVudCBkZXMgZW4tdOp0ZXMgSFRUUCAoIkhFQURFUlMiKS4KCiAgICAgICAgRCA6IHRyYW5zZmVydCBkZXMgRE9OTkVFUyBkdSBzZXJ2ZXVyIHZlcnMgbGUgY2xpZW50LgoKICAgICAgICBMIDogdHJhbnNmZXJ0IGRlcyBkZXJuaehyZXMgKCJMQVNUIikgZG9ubullcyBkdSBwcm94eSB2ZXJzIGxlIGNsaWVudCwKICAgICAgICAgICAgYWxvcnMgcXVlIGxlIHNlcnZldXIgYSBk6WrgIGZpbmkuCgogICAgICAgIFQgOiByZXF16nRlIGJsb3F16WUgZW4gbW9kZSAidGFycGl0IiBwYXIgbGUgcHJveHkuIEVsbGUgYSDpdOkgbWFpbnRlbnVlCiAgICAgICAgICAgIG91dmVydGUgdmVycyBsZSBjbGllbnQgcGVuZGFudCB0b3V0ZSBsYSBkdXLpZSBkdSBjb250aW1lb3V0IG91CiAgICAgICAgICAgIGp1c3F1J+AgbCdhYmFuZG9uIGRlIGxhIHBhcnQgZHUgY2xpZW50LgoKICAgICAgICAtIDogdGVybWluYWlzb24gbm9ybWFsZSwgYXBy6HMgZmluIGRlIHRyYW5zZmVydCBkZXMgZG9ubullcy4KCiAgLSBsZSB0cm9pc2nobWUgY2FyYWN06HJlIGluZGlxdWUgbCfpdmVudHVlbGxlIGlkZW50aWZpY2F0aW9uIGQndW4gY29va2llIGRlCiAgICBwZXJzaXN0ZW5jZSAodW5pcXVlbWVudCBlbiBtb2RlIEhUVFApIDoKCiAgICAgICAgTiA6IGF1Y3VuIGNvb2tpZSBkZSBwZXJzaXN0ZW5jZSBuJ2Eg6XTpIHBy6XNlbnTpLiBDJ2VzdCBn6W7pcmFsZW1lbnQgbGUKICAgICAgICAgICAgY2FzIHN1ciBsZXMgTk9VVkVMTEVTIGNvbm5leGlvbnMgY2xpZW50cy4KCiAgICAgICAgSSA6IGxlIGNsaWVudCBhIHBy6XNlbnTpIHVuIGNvb2tpZSBJTlZBTElERSBuZSBjb3JyZXNwb25kYW50IOAgYXVjdW4KICAgICAgICAgICAgc2VydmV1ciBjb25udS4gQ2VjaSBwZXV0IOp0cmUgZPsg4CB1biBjaGFuZ2VtZW50IGRlIGNvbmZpZ3VyYXRpb24KICAgICAgICAgICAgculjZW50LCDgIGRlcyBt6WxhbmdlcyBkZSBub21zIGRlIGNvb2tpZXMgZW50cmUgc2l0ZXMgSFRUUC9IVFRQUywKICAgICAgICAgICAgb3Ug4CB1bmUgYXR0YXF1ZS4KCiAgICAgICAgRCA6IGxlIGNsaWVudCBhIHBy6XNlbnTpIHVuIGNvb2tpZSBjb3JyZXNwb25kYW50IOAgdW4gc2VydmV1ciBob3JzCiAgICAgICAgICAgIGQndXNhZ2UgKCJET1dOIikuIFN1aXZhbnQgbCdvcHRpb24gJ3BlcnNpc3QnLCBpbCBhIOl06SByZW52b3npIHZlcnMKICAgICAgICAgICAgdW4gYXV0cmUgc2VydmV1ciBvdSBhIHRvdXQgZGUgbeptZSB0ZW506SBkZSBzZSBjb25uZWN0ZXIgc3VyIGNlbHVpCiAgICAgICAgICAgIGNvcnJlc3BvbmRhbnQgYXUgY29va2llLgoKICAgICAgICBWIDogbGUgY2xpZW50IGEgcHLpc2VudOkgdW4gY29va2llIFZBTElERSBldCBhIHB1IHNlIGNvbm5lY3RlciBhdQogICAgICAgICAgICBzZXJ2ZXVyIGNvcnJlc3BvbmRhbnQuCgogICAgICAgIC0gOiBub24gYXBwbGlxdWFibGUgKHBhcyBkZSBjb29raWUgcG9zaXRpb25u6SBkYW5zIGxhIGNvbmZpZ3VyYXRpb24pLgoKICAtIGxlIGRlcm5pZXIgY2FyYWN06HJlIGluZGlxdWUgbCfpdmVudHVlbCB0cmFpdGVtZW50IGVmZmVjdHXpIHN1ciB1biBjb29raWUgZGUKICAgIHBlcnNpc3RlbmNlIHJldHJvdXJu6SBwYXIgbGUgc2VydmV1ciAodW5pcXVlbWVudCBlbiBtb2RlIEhUVFApIDoKCiAgICAgICAgTiA6IGF1Y3VuIGNvb2tpZSBkZSBwZXJzaXN0YW5jZSBuJ2Eg6XTpIGZvdXJuaSBwYXIgbGUgc2VydmV1ciwgZXQgYXVjdW4KICAgICAgICAgICAgbidhIOl06SBpbnPpcukuCgogICAgICAgIEkgOiBhdWN1biBjb29raWUgZGUgcGVyc2lzdGFuY2UgbidhIOl06SBmb3VybmkgcGFyIGxlIHNlcnZldXIsIGV0IGxlCiAgICAgICAgICAgIHByb3h5IGVuIGEgSU5TRVJFIHVuLgoKICAgICAgICBQIDogdW4gY29va2llIGRlIHBlcnNpc3RlbmNlIGEg6XTpIGZvdXJuaSBwYXIgbGUgc2VydmV1ciBldCB0cmFuc21pcwogICAgICAgICAgICB0ZWwgcXVlbCAoIlBBU1NJRiIpLgoKICAgICAgICBSIDogbGUgY29va2llIHJldG91cm7pIHBhciBsZSBzZXJ2ZXVyIGEg6XTpIFJFRUNSSVQgcGFyIGxlIHByb3h5LgoKICAgICAgICBEIDogbGUgY29va2llIHBy6XNlbnTpIHBhciBsZSBzZXJ2ZXVyIGEg6XTpIERFVFJVSVQgcGFyIGxlIHByb3h5IHBvdXIKICAgICAgICAgICAgbmUgcGFzIOp0cmUgcmV0b3VybukgYXUgY2xpZW50LgoKICAgICAgICAtIDogbm9uIGFwcGxpcXVhYmxlCgoKTGEgY29tYmluYWlzb24gZGVzIGRldXggcHJlbWllcnMgaW5kaWNhdGV1cnMgZm91cm5pdCB1bmUgZ3JhbmRlIHF1YW50aXRp6QpkJ2luZm9ybWF0aW9ucyBzdXIgY2UgcXVpIHNlIHBhc3NhaXQgbG9yc3F1ZSBsYSBzZXNzaW9uIHMnZXN0IHRlcm1pbullLiBDZWxhCnBldXQgbm90YW1tZW50IGFpZGVyIOAgZOl0ZWN0ZXIgdW5lIHNhdHVyYXRpb24gZGUgc2VydmV1ciwgZGVzIHRyb3VibGVzIHLpc2VhdSwKZGVzIOlwdWlzZW1lbnRzIGRlIHJlc3NvdXJjZXMgc3lzdOhtZSBsb2NhbGVzLCBkZXMgYXR0YXF1ZXMsIGV0Yy4uLgoKTGVzIGNvbWJpbmFpc29ucyBkJ2luZGljYXRldXJzIGxlcyBwbHVzIGZy6XF1ZW50ZXMgc29udCDpbnVt6XLpZXMgaWNpLgoKICAgSW5kaWMgIFJhaXNvbgogICAgICBDUiAgTGUgY2xpZW50IGEgYWJhbmRvbm7pIGF2YW50IGQn6W1ldHRyZSB1bmUgcmVxdep0ZSBjb21wbOh0ZS4gSWwgZXN0CiAgICAgICAgICB0cuhzIHByb2JhYmxlIHF1ZSBsYSByZXF16nRlIGFpdCDpdOkgdGFw6WUg4CBsYSBtYWluIGRhbnMgdW4gY2xpZW50CiAgICAgICAgICB0ZWxuZXQgZXQgYWJvcnTpZSB0cm9wIHT0dC4KCiAgICAgIGNSICBMZSB0ZW1wcyBpbXBhcnRpIGF1IGNsaWVudCBhIGV4cGly6SBhdmFudCBy6WNlcHRpb24gZCd1bmUgcmVxdep0ZQogICAgICAgICAgY29tcGzodGUuIENlY2kgZXN0IHBhcmZvaXMgY2F1c+kgcGFyIHVuIHBhcmFt6HRyZSBUQ1AgTVNTIHRyb3Ag6WxldukKICAgICAgICAgIHN1ciBsZSBjbGllbnQgcG91ciBkZXMgculzZWF1eCBQUFBvRSBzdXIgQURTTCBxdWkgbmUgcGV1dmVudCBwYXMKICAgICAgICAgIHRyYW5zcG9ydGVyIGRlcyBwYXF1ZXRzIGVudGllcnMsIG91IHBhciBkZXMgY2xpZW50cyBxdWkg6W52b2llbnQgZGVzCiAgICAgICAgICByZXF16nRlcyDgIGxhIG1haW4gZXQgbmUgdGFwZW50IHBhcyBhc3NleiB2aXRlLgoKICAgICAgU0MgIExlIHNlcnZldXIgYSBleHBsaWNpdGVtZW50IHJlZnVz6SBsYSBjb25uZXhpb24gKGxlIHByb3h5IGEgcmXndSB1bgogICAgICAgICAgUlNUIFRDUCBvdSB1biBtZXNzYWdlIElDTVAgZW4gcmV0b3VyKS4gRGFucyBjZXJ0YWlucyBjYXMsIGNlbGEgcGV1dAogICAgICAgICAg6nRyZSBsYSBjb3VjaGUgculzZWF1IHF1aSBpbmRpcXVlIGF1IHByb3h5IHF1ZSBsZSBzZXJ2ZXVyIG4nZXN0IHBhcwogICAgICAgICAgam9pZ25hYmxlIChwLmV4OiBwYXMgZGUgcm91dGUsIHBhcyBkZSBy6XBvbnNlIEFSUCBlbiBsb2NhbCwgZXRjLi4uKQoKICAgICAgc0MgIExhIGNvbm5leGlvbiBhdSBzZXJ2ZXVyIG4nYSBwYXMgcHUgcyfpdGFibGlyIGRhbnMgbGUgdGVtcHMgaW1wYXJ0aS4KCiAgICAgIFBDICBMZSBwcm94eSBhIHJlZnVz6SBkJ+l0YWJsaXIgdW5lIGNvbm5leGlvbiBhdSBzZXJ2ZXVyIHBhcmNlIHF1ZSBsZQogICAgICAgICAgbm9tYnJlIGRlIGNvbm5leGlvbnMgYSBhdHRlaW50IGxhIGxpbWl0ZSAnbWF4Y29ubicgKGdsb2JhbCBvdSBkZQogICAgICAgICAgbCdpbnN0YW5jZSkuIExlIHBhcmFt6HRyZSAnbWF4Y29ubicgZGUgbCdpbnN0YW5jZSBwb3VycmFpdCDqdHJlCiAgICAgICAgICBhdWdtZW506SwgdG91dCBjb21tZSBsZSBwYXJhbeh0cmUgJ21heGNvbm4nIGdsb2JhbC4KCiAgICAgIFJDICBVbmUgcmVzc291cmNlIGxvY2FsZSBhIOl06SDpcHVpc+llICht6W1vaXJlLCBzb2NrZXRzLCBwb3J0cyBzb3VyY2UpLAogICAgICAgICAgZW1w6mNoYW50IGxhIGNvbm5leGlvbiBhdSBzZXJ2ZXVyIGRlIHMn6XRhYmxpci4gTGVzIGxvZ3MgZCdlcnJldXJzCiAgICAgICAgICBkaXJvbnQgcHLpY2lz6W1lbnQgY2UgcXVpIG1hbnF1YWl0LiBEYW5zIHRvdXMgbGVzIGNhcywgbGUgc2V1bCByZW3oZGUKICAgICAgICAgIGNvbnNpc3RlIOAgYWZmaW5lciBsZSBwYXJhbel0cmFnZSBzeXN06G1lLgoKICAgICAgY0ggIExlIHRlbXBzIGltcGFydGkgYXUgY2xpZW50IGEgZXhwaXLpIGF1IGNvdXJzIGQndW5lIHJlcXXqdGUgUE9TVC4gQ2VjaQogICAgICAgICAgZXN0IHBhcmZvaXMgY2F1c+kgcGFyIHVuIHBhcmFt6HRyZSBUQ1AgTVNTIHRyb3Ag6Wxldukgc3VyIGxlIGNsaWVudAogICAgICAgICAgcG91ciBkZXMgculzZWF1eCBQUFBvRSBzdXIgQURTTCBxdWkgbmUgcGV1dmVudCBwYXMgdHJhbnNwb3J0ZXIgZGVzCiAgICAgICAgICBwYXF1ZXRzIGVudGllcnMuCgogICAgICBDSCAgTGUgY2xpZW50IGEgYWJhbmRvbm7pIGFsb3JzIHF1J2lsIGF0dGVuZGFpdCB1biBk6WJ1dCBkZSBy6XBvbnNlIGRlIGxhCiAgICAgICAgICBwYXJ0IGR1IHNlcnZldXIuIENlbGEgcGV1dCDqdHJlIGNhdXPpIHBhciBsZSBzZXJ2ZXVyIHF1aSBtZXR0YWl0IHRyb3AKICAgICAgICAgIGRlIHRlbXBzIOAgculwb25kcmUsIG91IHBhciB1biBjbGllbnQgY2xpcXVhbnQgcHLpY2lwaXRhbW1lbnQgc3VyIGxlCiAgICAgICAgICBib3V0b24gJ1N0b3AnLgoKICAgICAgQ1EgIExlIGNsaWVudCBhIGFiYW5kb25u6SBhbG9ycyBxdWUgc2Egc2Vzc2lvbiDpdGFpdCBtaXNlIGVuIGZpbGUKICAgICAgICAgIGQnYXR0ZW50ZSBwb3VyIG9idGVuaXIgdW4gc2VydmV1ciBhdmVjIHN1ZmZpc2FtbWVudCBkZSBjb25uZXhpb25zCiAgICAgICAgICBsaWJyZXMgcG91ciBsJ2FjY2VwdGVyLiBDZWxhIHNpZ25pZmllIHNvaXQgcXVlIGwnZW5zZW1ibGUgZGVzCiAgICAgICAgICBzZXJ2ZXVycyDpdGFpZW50IHNhdHVy6XMsIHNvaXQgcXVlIGxlIHNlcnZldXIgYXNzaWdu6SBhIG1pcyB0cm9wIGRlCiAgICAgICAgICB0ZW1wcyDgIHLpcG9uZHJlLgoKICAgICAgQ1QgIExlIGNsaWVudCBhIGFiYW5kb25u6SBhbG9ycyBxdWUgc2Egc2Vzc2lvbiDpdGFpdCBibG9xdellIGVuIG1vZGUKICAgICAgICAgIHRhcnBpdC4KCiAgICAgIHNRICBMYSBzZXNzaW9uIGEgYXR0ZW5kdSB0cm9wIGxvbmd0ZW1wcyBlbiBmaWxlIGQnYXR0ZW50ZSBldCBhIOl06QogICAgICAgICAgZXhwaXLpZS4KCiAgICAgIFNIICBMZSBzZXJ2ZXVyIGEgYWJvcnTpIGJydXRhbGVtZW50IGFsb3JzIHF1J2lsIGRldmFpdCBlbnZveWVyIHNlcwogICAgICAgICAgZW4tdOp0ZXMuIEVuIGfpbulyYWwsIGNlbGEgaW5kaXF1ZSBxdSdpbCBhIGNyYXNo6S4KCiAgICAgIHNIICBMZSBzZXJ2ZXVyIG4nYSBwYXMgcHUgculwb25kcmUgZHVyYW50IGxlIHRlbXBzIGltcGFydGksIGNlIHF1aSBtb250cmUKICAgICAgICAgIGRlcyB0cmFuc2FjdGlvbnMgdHJvcCBsb25ndWVzLCBwcm9iYWJsZW1lbnQgY2F1c+llcyBwYXIgdW4gYmFjay1lbmQKICAgICAgICAgIHNhdHVy6S4gTGVzIHNldWxlcyBzb2x1dGlvbnMgc29udCBkZSBjb3JyaWdlciBsZSBwcm9ibOhtZSBzdXIKICAgICAgICAgIGwnYXBwbGljYXRpb24sIGQnYWNjcm/udHJlIGxlIHBhcmFt6HRyZSAnc3J2dGltZW91dCcgcG91ciBzdXBwb3J0ZXIKICAgICAgICAgIGRlcyBhdHRlbnRlcyBwbHVzIGxvbmd1ZXMgYXUgcmlzcXVlIHF1ZSBsZXMgY2xpZW50cyBhYmFuZG9ubmVudCDgCiAgICAgICAgICBsZXVyIHRvdXIsIG91IGJpZW4gZCdham91dGVyIGRlcyBzZXJ2ZXVycy4KICAgICAgCiAgICAgIFBSICBMZSBwcm94eSBhIGJsb3F16SB1bmUgcmVxdep0ZSBkdSBjbGllbnQsIHNvaXQg4CBjYXVzZSBkJ3VuZSBzeW50YXhlCiAgICAgICAgICBIVFRQIGludmFsaWRlLCBhdXF1ZWwgY2FzIGlsIGEgcmVudm956SB1bmUgZXJyZXVyIEhUVFAgNDAwIGF1IGNsaWVudCwKICAgICAgICAgIHNvaXQg4CBjYXVzZSBkJ3VuZSByZXF16nRlIHZhbGlkYW50IHVuIGZpbHRyZSBkJ2ludGVyZGljdGlvbiwgYXVxdWVsCiAgICAgICAgICBjYXMgbGUgcHJveHkgYSByZW52b3npIHVuZSBlcnJldXIgSFRUUCA0MDMuCgogICAgICBQSCAgTGUgcHJveHkgYSBibG9xdekgbGEgculwb25zZSBkdSBzZXJ2ZXVyIHBhcmNlIHF1J2VsbGUg6XRhaXQgaW52YWxpZGUsCiAgICAgICAgICBpbmNvbXBs6HRlLCBkYW5nZXJldXNlICgnY2FjaGUgY29udHJvbCcpLCBvdSBwYXJjZSBxdSdlbGxlIHZhbGlkYWl0CiAgICAgICAgICB1biBmaWx0cmUgZGUgc+ljdXJpdOkuIERhbnMgdG91cyBsZXMgY2FzLCB1bmUgZXJyZXVyIEhUVFAgNTAyIGVzdAogICAgICAgICAgcmVudm956WUgYXUgY2xpZW50LgoKICAgICAgUFQgIExlIHByb3h5IGEgYmxvcXXpIHVuZSByZXF16nRlIGR1IGNsaWVudCBldCBhIG1haW50ZW51IHNhIGNvbm5lY3Rpb24KICAgICAgICAgIG91dmVydGUgYXZhbnQgZGUgbHVpIHJldG91cm5lciB1bmUgZXJyZXVyICI1MDAgc2VydmVyIGVycm9yIi4gUmllbgogICAgICAgICAgbidhIOl06SBlbnZveekgYXUgc2VydmV1ci4KCiAgICAgIGNEICBMZSBjbGllbnQgbidhIHBhcyBsdSBkZSBkb25u6WVzIHBlbmRhbnQgbGUgdGVtcHMgcXVpIGx1aSDpdGFpdAogICAgICAgICAgaW1wYXJ0aS4gQ2VjaSBlc3Qgc291dmVudCBjYXVz6SBwYXIgZGVzIHByb2Js6G1lcyBy6XNlYXUgY/R06SBjbGllbnQuCgogICAgICBDRCAgTGUgY2xpZW50IGEgYWJvcnTpIHNhIGNvbm5lY3Rpb24gZGUgbWFuaehyZSBpbmF0dGVuZHVlIHBlbmRhbnQgbGUKICAgICAgICAgIHRyYW5zZmVydCBkZXMgZG9ubullcy4gQ2VjaSBlc3QgcHJvdm9xdekgc29pdCBwYXIgbGUgY3Jhc2ggZCd1bgogICAgICAgICAgbmF2aWdhdGV1ciwgb3UgcGFyIHVuZSBzZXNzaW9uIGVuIEhUVFAga2VlcC1hbGl2ZSBlbnRyZSBsZSBzZXJ2ZXVyCiAgICAgICAgICBldCBsZSBjbGllbnQgdGVybWlu6WUgZW4gcHJlbWllciBwYXIgbGUgY2xpZW50LgoKICAgICAgc0QgIExlIHNlcnZldXIgbidhIHJpZW4gZmFpdCBkdXJhbnQgbGUgdGVtcHMgaW1wYXJ0aSBwYXIgbGUgcGFyYW3odHJlCiAgICAgICAgICAnc3J2dGltZW91dCcuIENlY2kgZXN0IHNvdXZlbnQgY2F1c+kgcGFyIGRlcyB0aW1lb3V0cyB0cm9wIGNvdXJ0cwogICAgICAgICAgc3VyIGRlcyDpcXVpcGVtZW50cyBkZSBuaXZlYXUgNCAoZmlyZXdhbGxzLCBy6XBhcnRpdGV1cnMgZGUgY2hhcmdlKQogICAgICAgICAgc2l0delzIGVudHJlIGxlIHByb3h5IGV0IGxlIHNlcnZldXIuCgo0LjIuNSkgQ2FyYWN06HJlcyBub24taW1wcmltYWJsZXMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkRlcHVpcyBsYSB2ZXJzaW9uIDEuMS4yOSwgbGVzIGNhcmFjdOhyZXMgbm9uLWltcHJpbWFibGVzIG5lIHNvbnQgcGx1cyBlbnZveelzCnRlbHMgcXVlbHMgZGFucyBsZXMgbGlnbmVzIGRlIGxvZ3MsIG1haXMgaW5zY3JpdHMgc291cyBsYSBmb3JtZSBkZSBkZXV4IGNoaWZmcmVzCmhleGFk6WNpbWF1eCwgcHLpZml46XMgZHUgY2FyYWN06HJlIGQn6WNoYXBwZW1lbnQgJyMnLiBMZXMgc2V1bHMgY2FyYWN06HJlcwpkb3LpbmF2YW50IGxvZ3XpcyB0ZWxzIHF1ZWxzIHNvbnQgY29tcHJpcyBlbnRyZSAzMiBldCAxMjYuIEJpZW4g6XZpZGVtbWVudCwgbGUKY2FyYWN06HJlIGQn6WNoYXBwZW1lbnQgJyMnIGVzdCBsdWktbeptZSBlbmNvZOkgYWZpbiBkZSBsZXZlciBsJ2FtYmlndWl06S4gSWwgZW4KZXN0IGRlIG3qbWUgcG91ciBsZSBjYXJhY3TocmUgJyInLCBhaW5zaSBxdWUgbGVzIGNhcmFjdOhyZXMgJ3snLCAnfCcgZXQgJ30nIHBvdXIKbGVzIGVuLXTqdGVzLgoKNC4yLjYpIENhcHR1cmUgZCdlbi106nRlcyBIVFRQIGV0IGRlIGNvb2tpZXMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KTGEgdmVyc2lvbiAxLjEuMjMgYSBhcHBvcnTpIGxhIGNhcHR1cmUgZGVzIGNvb2tpZXMsIGV0IGxhIHZlcnNpb24gMS4xLjI5IGxhCmNhcHR1cmUgZCdlbi106nRlcy4gVG91dCBjZWNpIGVzdCBlZmZlY3R16SBlbiB1dGlsaXNhbnQgbGUgbW90LWNs6SAnY2FwdHVyZScuCgpMZXMgY2FwdHVyZXMgZGUgY29va2llcyBmYWNpbGl0ZW50IGxlIHN1aXZpIGV0IGxhIHJlY29uc3RpdHV0aW9uIGQndW5lIHNlc3Npb24KdXRpbGlzYXRldXIuIExhIHN5bnRheGUgZXN0IGxhIHN1aXZhbnRlIDoKCiAgICBjYXB0dXJlIGNvb2tpZSA8cHLpZml4ZV9jb29raWU+IGxlbiA8bG9uZ3VldXJfY2FwdHVyZT4KCkNlY2kgYWN0aXZlcmEgbGEgY2FwdHVyZSBkZSBjb29raWVzIOAgbGEgZm9pcyBkYW5zIGxlcyByZXF16nRlcyBldCBkYW5zIGxlcwpy6XBvbnNlcy4gRGUgY2V0dGUgbWFuaehyZSwgaWwgZGV2aWVudCBmYWNpbGUgZGUgZOl0ZWN0ZXIgbG9yc3F1J3VuIHV0aWxpc2F0ZXVyCmJhc2N1bGUgc3VyIHVuZSBub3V2ZWxsZSBzZXNzaW9uIHBhciBleGVtcGxlLCBjYXIgbGUgc2VydmV1ciBsdWkgculhc3NpZ25lcmEgdW4Kbm91dmVhdSBjb29raWUuCgpMZSBwcmVtaWVyIGNvb2tpZSBkb250IGxlIG5vbSBjb21tZW5jZXJhIHBhciA8cHLpZml4ZV9jb29raWU+IHNlcmEgY2FwdHVy6SwgZXQKdHJhbnNtaXMgc291cyBsYSBmb3JtZSAiTk9NPXZhbGV1ciIsIHNhbnMgdG91dGVmb2lzLCBleGPpZGVyIDxsb25ndWV1cl9jYXB0dXJlPgpjYXJhY3TocmVzICg2NCBhdSBtYXhpbXVtKS4gTG9yc3F1ZSBsZSBub20gZHUgY29va2llIGVzdCBmaXhlIGV0IGNvbm51LCBvbiBwZXV0CmxlIHN1ZmZpeGVyIGR1IHNpZ25lICI9IiBwb3VyIHMnYXNzdXJlciBxdSdhdWN1biBhdXRyZSBjb29raWUgbmUgcHJlbmRyYSBzYQpwbGFjZSBkYW5zIGxlcyBsb2dzLgoKRXhlbXBsZXMgOgotLS0tLS0tLS0tCiAgICAjIGNhcHR1cmUgZHUgcHJlbWllciBjb29raWUgZG9udCBsZSBub20gY29tbWVuY2UgcGFyICJBU1BTRVNTSU9OIgogICAgY2FwdHVyZSBjb29raWUgQVNQU0VTU0lPTiBsZW4gMzIKCiAgICAjIGNhcHR1cmUgZHUgcHJlbWllciBjb29raWUgZG9udCBsZSBub20gZXN0IGV4YWN0ZW1lbnQgInZnbnZpc2l0b3IiCiAgICBjYXB0dXJlIGNvb2tpZSB2Z252aXNpdG9yPSBsZW4gMzIKCkRhbnMgbGVzIGxvZ3MsIGxlIGNoYW1wIHBy6WPpZGFudCBsJ2luZGljYXRldXIgZGUgY29tcGzpdHVkZSBjb250aWVudCBsZSBjb29raWUKcG9zaXRpb25u6SBwYXIgbGUgc2VydmV1ciwgcHLpY+lk6SBkdSBjb29raWUgcG9zaXRpb25u6SBwYXIgbGUgY2xpZW50LiBDaGFjdW4KZGUgY2VzIGNoYW1wcyBlc3QgcmVtcGxhY+kgcGFyIGxlIHNpZ25lICItIiBsb3JzcXUnYXVjdW4gY29va2llIG4nZXN0IGZvdXJuaQpwYXIgbGUgY2xpZW50IG91IGxlIHNlcnZldXIsIG91IGxvcnNxdWUgbCdvcHRpb24gZXN0IGTpc2FjdGl26WUuLgoKTGVzIGNhcHR1cmVzIGQnZW4tdOp0ZXMgb250IHVuIHL0bGUgY29tcGzodGVtZW50IGRpZmbpcmVudC4gRWxsZXMgc29udCB1dGlsZXMKcG91ciBzdWl2cmUgdW4gaWRlbnRpZmlhbnQgZGUgcmVxdep0ZSBnbG9iYWxlbWVudCB1bmlxdWUgcG9zaXRpb25u6SBwYXIgdW4KYXV0cmUgcHJveHkgZW4gYW1vbnQsIHBvdXIgam91cm5hbGlzZXIgbGVzIG5vbXMgZGUgc2VydmV1cnMgdmlydHVlbHMsIGxlcyB0eXBlcwpkZSBjbGllbnRzIHdlYiwgbGEgbG9uZ3VldXIgZGVzIFBPU1QsIGxlcyAncmVmZXJyZXJzJywgZXRjLiBEYW5zIGxhIHLpcG9uc2UsIG9uCnBldXQgY2hlcmNoZXIgZGVzIGluZm9ybWF0aW9ucyByZWxhdGl2ZXMg4CBsYSBsb25ndWV1ciBhbm5vbmPpZSBkZSBsYSBy6XBvbnNlLApsZSBmb25jdGlvbm5lbWVudCBhdHRlbmR1IGR1IGNhY2hlLCBvdSBlbmNvcmUgbGEgbG9jYWxpc2F0aW9uIGQndW4gb2JqZXQgZW4gY2FzCmRlIHJlZGlyZWN0aW9uLiBUb3V0IGNvbW1lIHBvdXIgbGVzIGNhcHR1cmVzIGRlIGNvb2tpZXMsIGlsIGVzdCBwb3NzaWJsZQpkJ2luY2x1cmUgbGVzIGVuLXTqdGVzIGRlIHJlcXXqdGVzIGV0IGRlIHLpcG9uc2Ugc2ltdWx0YW7pbWVudC4gTGEgc3ludGF4ZSBlc3QKbGEgc3VpdmFudGUgOgoKICAgIGNhcHR1cmUgcmVxdWVzdCAgaGVhZGVyIDxub20+IGxlbiA8bG9uZ3VldXIgbWF4PgogICAgY2FwdHVyZSByZXNwb25zZSBoZWFkZXIgPG5vbT4gbGVuIDxsb25ndWV1ciBtYXg+CgpOb3RlOiBMZXMgbm9tcyBkJ2VuLXTqdGVzIG5lIHNvbnQgcGFzIHNlbnNpYmxlcyDgIGxhIGNhc3NlLgoKRXhlbXBsZXM6Ci0tLS0tLS0tLQogICAgIyBjb25zZXJ2ZXIgbGUgbm9tIGR1IHNlcnZldXIgdmlydHVlbCBhY2PpZOkgcGFyIGxlIGNsaWVudAogICAgY2FwdHVyZSByZXF1ZXN0ICBoZWFkZXIgSG9zdCBsZW4gMjAKICAgICMgbm90ZXIgbGEgbG9uZ3VldXIgZGVzIGRvbm7pZXMgZW52b3npZXMgZGFucyB1biBQT1NUCiAgICBjYXB0dXJlIHJlcXVlc3QgIGhlYWRlciBDb250ZW50LUxlbmd0aCBsZW4gMTAKCiAgICAjIG5vdGVyIGxlIGZvbmN0aW9ubmVtZW50IGF0dGVuZHUgZHUgY2FjaGUgcGFyIGxlIHNlcnZldXIKICAgIGNhcHR1cmUgcmVzcG9uc2UgaGVhZGVyIENhY2hlLUNvbnRyb2wgbGVuIDgKICAgICMgbm90ZXIgbCdVUkwgZGUgcmVkaXJlY3Rpb24KICAgIGNhcHR1cmUgcmVzcG9uc2UgaGVhZGVyIExvY2F0aW9uIGxlbiAyMAoKTGVzIGVuLXTqdGVzIG5vbiB0cm91dulzIHNvbnQgbG9ndelzIOAgdmlkZSwgZXQgc2kgdW4gZW4tdOp0ZSBhcHBhcmFpdCBwbHVzaWV1cnMKZm9pcywgc2V1bGUgbGEgZGVybmnocmUgb2NjdXJlbmNlIHNlcmEgY29uc2VydullLiBMZXMgZW4tdOp0ZXMgZGUgcmVxdep0ZSBzb250CnJlZ3JvdXDpcyBlbnRyZSBkZXV4IGFjY29sYWRlcyAneycgZXQgJ30nIGRhbnMgbCdvcmRyZSBkZSBsZXVyIGTpY2xhcmF0aW9uLCBldApjaGFjdW4gc+lwYXLpcyBwYXIgdW5lIGJhcnJlIHZlcnRpY2FsZSAnfCcsIHNhbnMgYXVjdW4gZXNwYWNlLiBMZXMgZW4tdOp0ZXMgZGUKculwb25zZSBzb250IHBy6XNlbnTpcyBkZSBsYSBt6m1lIG1hbmnocmUsIG1haXMgYXBy6HMgdW4gZXNwYWNlIHN1aXZhbnQgbGUgYmxvYwpkJ2VuLXTqdGUgZGUgcmVxdep0ZS4gTGUgdG91dCBwculj6GRlIGxhIHJlcXXqdGUgSFRUUC4gRXhlbXBsZSA6CgogIENvbmZpZzoKCiAgICBjYXB0dXJlIHJlcXVlc3QgIGhlYWRlciBIb3N0IGxlbiAyMAogICAgY2FwdHVyZSByZXF1ZXN0ICBoZWFkZXIgQ29udGVudC1MZW5ndGggbGVuIDEwCiAgICBjYXB0dXJlIHJlcXVlc3QgIGhlYWRlciBSZWZlcmVyIGxlbiAyMAogICAgY2FwdHVyZSByZXNwb25zZSBoZWFkZXIgU2VydmVyIGxlbiAyMAogICAgY2FwdHVyZSByZXNwb25zZSBoZWFkZXIgQ29udGVudC1MZW5ndGggbGVuIDEwCiAgICBjYXB0dXJlIHJlc3BvbnNlIGhlYWRlciBDYWNoZS1Db250cm9sIGxlbiA4CiAgICBjYXB0dXJlIHJlc3BvbnNlIGhlYWRlciBWaWEgbGVuIDIwCiAgICBjYXB0dXJlIHJlc3BvbnNlIGhlYWRlciBMb2NhdGlvbiBsZW4gMjAKCiAgTG9nIDoKCiAgICBBdWcgIDkgMjA6MjY6MDkgbG9jYWxob3N0IGhhcHJveHlbMjAyMl06IDEyNy4wLjAuMTozNDAxNCBbMDkvQXVnLzIwMDQ6MjA6MjY6MDldIHJlbGFpcy1odHRwIG5ldGNhY2hlIDAvMC8wLzE2Mi8rMTYyIDIwMCArMzUwIC0gLSAtLS0tIDAvMC8wIDAvMCB7ZnIuYWRzZXJ2ZXIueWFob28uY298fGh0dHA6Ly9mci5mNDE2Lm1haWwufSB7fDg2NHxwcml2YXRlfHx9ICJHRVQgaHR0cDovL2ZyLmFkc2VydmVyLnlhaG9vLmNvbS8iCiAgICBBdWcgIDkgMjA6MzA6NDYgbG9jYWxob3N0IGhhcHJveHlbMjAyMl06IDEyNy4wLjAuMTozNDAyMCBbMDkvQXVnLzIwMDQ6MjA6MzA6NDZdIHJlbGFpcy1odHRwIG5ldGNhY2hlIDAvMC8wLzE4Mi8rMTgyIDIwMCArMjc5IC0gLSAtLS0tIDAvMC8wIDAvMCB7dy5vZHMub3JnfHx9IHtGb3JtaWx1eC8wLjEuOHwzNDk1fHx8fSAiR0VUIGh0dHA6Ly93Lm9kcy5vcmcvc3l0YWRpbi5odG1sIEhUVFAvMS4xIiAKICAgIEF1ZyAgOSAyMDozMDo0NiBsb2NhbGhvc3QgaGFwcm94eVsyMDIyXTogMTI3LjAuMC4xOjM0MDI4IFswOS9BdWcvMjAwNDoyMDozMDo0Nl0gcmVsYWlzLWh0dHAgbmV0Y2FjaGUgMC8wLzIvMTI2LysxMjggMjAwICsyMjMgLSAtIC0tLS0gMC8wLzAgMC8wIHt3d3cuaW5mb3RyYWZpYy5jb218fGh0dHA6Ly93Lm9kcy5vcmcvc3l0fSB7QXBhY2hlLzIuMC40MCAoUmVkIEh8OTA2OHx8fH0gIkdFVCBodHRwOi8vd3d3LmluZm90cmFmaWMuY29tL2ltYWdlcy9saXZlL2NhcnRlc2lkZi9ncmFuZGVzL2lkZl9uZS5wbmcgSFRUUC8xLjEiIAoKNC4yLjcpIEV4ZW1wbGVzIGRlIGxvZ3MKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSBoYXByb3h5WzY3NF06IDEyNy4wLjAuMTozMzMxOSBbMTUvT2N0LzIwMDM6MDg6MzE6NTddIHJlbGFpcy1odHRwIFNydjEgNjU1OS8wLzcvMTQ3LzY3MjMgMjAwIDI0MyAtIC0gLS0tLSAxLzMvNSAgMC8wIkhFQUQgLyBIVFRQLzEuMCIKICA9PiByZXF16nRlIGxvbmd1ZSAoNi41cykgc2Fpc2llIOAgbGEgbWFpbiBhdmVjIHVuIGNsaWVudCB0ZWxuZXQuIExlIHNlcnZldXIgYQogICAgIHLpcG9uZHUgZW4gMTQ3IG1zIGV0IGxhIHNlc3Npb24gcydlc3QgdGVybWlu6WUgbm9ybWFsZW1lbnQgKCctLS0tJykKCi0gaGFwcm94eVs2NzRdOiAxMjcuMC4wLjE6MzMzMTkgWzE1L09jdC8yMDAzOjA4OjMxOjU3XSByZWxhaXMtaHR0cCBTcnYxIDY1NTkvMTIzMC83LzE0Ny82ODcwIDIwMCAyNDMgLSAtIC0tLS0gOTkvMjM5LzMyNCAwLzkgIkhFQUQgLyBIVFRQLzEuMCIKICA9PiBJZGVtLCBtYWlzIGxhIHJlcXXqdGUgYSDpdOkgbWlzZSBlbiBhdHRlbnRlIGRhbnMgbGEgZmlsZSBnbG9iYWxlIGRlcnJp6HJlCiAgICAgOSBhdXRyZXMgcmVxdep0ZXMgZOlq4CBwculzZW50ZXMsIGV0IHkgYSBhdHRlbmR1IDEyMzAgbXMuCgotIGhhcHJveHlbNjc0XTogMTI3LjAuMC4xOjMzMzIwIFsxNS9PY3QvMjAwMzowODozMjoxN10gcmVsYWlzLWh0dHAgU3J2MSA5LzAvNy8xNC8rMzAgMjAwICsyNDMgLSAtIC0tLS0gMS8zLzMgMC8wICJHRVQgL2ltYWdlLmlzbyBIVFRQLzEuMCIKICA9PiByZXF16nRlIHBvdXIgdW4gbG9uZyB0cmFuc2ZlcnQuIEwnb3B0aW9uICdsb2dhc2FwJyDpdGFpdCBzcOljaWZp6WUgZG9uYyBsZQogICAgIGxvZyBhIOl06SBn6W7pcukganVzdGUgYXZhbnQgbGUgdHJhbnNmZXJ0IGRlIGRvbm7pZXMuIExlIHNlcnZldXIgYSBy6XBvbmR1CiAgICAgZW4gMTQgbXMsIDI0MyBvY3RldHMgZCdlbi106nRlcyBvbnQg6XTpIHRyYW5zZuly6XMgYXUgY2xpZW50LCBldCBsZSB0ZW1wcwogICAgIHRvdGFsIGVudHJlIGwnYWNjZXB0KCkgZXQgbGUgcHJlbWllciBvY3RldCBkZSBkb25u6WUgZXN0IGRlIDMwIG1zLgoKLSBoYXByb3h5WzY3NF06IDEyNy4wLjAuMTozMzMyMCBbMTUvT2N0LzIwMDM6MDg6MzI6MTddIHJlbGFpcy1odHRwIFNydjEgOS8wLzcvMTQvMzAgNTAyIDI0MyAtIC0gUEgtLSAwLzIvMyAwLzAgIkdFVCAvY2dpLWJpbi9idWcuY2dpPyBIVFRQLzEuMCIKICA9PiBsZSBwcm94eSBhIGJsb3F16SB1bmUgculwb25zZSBkdSBzZXJ2ZXVyIHNvaXQg4CBjYXVzZSBkJ3VuIGZpbHRyZSAncnNwZGVueScKICAgICBvdSAncnNwaWRlbnknLCBzb2l0IHBhcmNlIHF1J2lsIGEgZOl0ZWN06SB1biByaXNxdWUgZGUgZnVpdGUgc2Vuc2libGUKICAgICBkJ2luZm9ybWF0aW9ucyByaXNxdWFudCBkJ+p0cmUgY2FjaOllcy4gRGFucyBjZSBjYXMsIGxhIHLpcG9uc2UgZXN0CiAgICAgcmVtcGxhY+llIHBhciAnNTAyIGJhZCBnYXRld2F5Jy4KCi0gaGFwcm94eVsxODExM106IDEyNy4wLjAuMTozNDU0OCBbMTUvT2N0LzIwMDM6MTU6MTg6NTVdIHJlbGFpcy1odHRwIDxOT1NSVj4gLTEvLTEvLTEvLTEvODQ5MCAtMSAwIC0gLSBDUi0tIDAvMi8yIDAvMCAiIiAKICA9PiBMZSBjbGllbnQgbidhIHBhcyBlbnZveekgc2EgcmVxdep0ZSBldCBhIHJlZmVybekgbGEgY29ubmV4aW9uIGx1aS1t6m1lCiAgICAgKCdDLS0tJykgYXUgYm91dCBkZSA4LjVzLCBhbG9ycyBxdWUgbGUgcmVsYWlzIGF0dGVuZGFpdCBsJ2VuLXTqdGUgKCctUi0tJykuCiAgICAgQXVjdW5lIGNvbm5leGlvbiBuJ2Eg6XTpIGVudm956WUgdmVycyBsZSBzZXJ2ZXVyLgoKLSBoYXByb3h5WzE4MTEzXTogMTI3LjAuMC4xOjM0NTQ5IFsxNS9PY3QvMjAwMzoxNToxOTowNl0gcmVsYWlzLWh0dHAgPE5PU1JWPiAtMS8tMS8tMS8tMS81MDAwMSA0MDggMCAtIC0gY1ItLSAwLzIvMiAwLzAgIiIgCiAgPT4gTGUgY2xpZW50IG4nYSBwYXMgZW52b3npIHNhIHJlcXXqdGUgZXQgc29uIHRpbWUtb3V0IGEgZXhwaXLpICgnYy0tLScpIGF1CiAgICAgYm91dCBkZSA1MHMsIGFsb3JzIHF1ZSBsZSByZWxhaXMgYXR0ZW5kYWl0IGwnZW4tdOp0ZSAoJy1SLS0nKS4gQXVjdW5lCiAgICAgY29ubmV4aW9uIG4nYSDpdOkgZW52b3npZSB2ZXJzIGxlIHNlcnZldXIsIG1haXMgbGUgcmVsYWlzIGEgdG91dCBkZSBt6m1lCiAgICAgcHUgcmVudm95ZXIgdW4gbWVzc2FnZSA0MDggYXUgY2xpZW50LgoKLSBoYXByb3h5WzE4OTg5XTogMTI3LjAuMC4xOjM0NTUwIFsxNS9PY3QvMjAwMzoxNToyNDoyOF0gcmVsYWlzLXRjcCBTcnYxIDAvNTAwNyAwIGNECiAgPT4gbG9nIGVuIG1vZGUgJ3RjcGxvZycuIEV4cGlyYXRpb24gZHUgdGltZS1vdXQgY/R06SBjbGllbnQgKCdjRCcpIGF1IGJvdXQgZGUKICAgICA1cy4KCi0gaGFwcm94eVsxODk4OV06IDEwLjAuMC4xOjM0NTUyIFsxNS9PY3QvMjAwMzoxNToyNjozMV0gcmVsYWlzLWh0dHAgU3J2MSAzMTgzLy0xLy0xLy0xLzExMjE1IDUwMyAwIC0gLSBTQy0tIDExNS8yMDIvMjA1IDAvMCAiSEVBRCAvIEhUVFAvMS4wIiAKICA9PiBMYSByZXF16nRlIGNsaWVudCBtZXQgM3Mg4CBlbnRyZXIgKHBldXQt6nRyZSB1biBwcm9ibOhtZSBy6XNlYXUpLCBldCBsYQogICAgIGNvbm5leGlvbiAoJ1NDLS0nKSB2ZXJzIGxlIHNlcnZldXIg6WNob3VlIGF1IGJvdXQgZGUgNCB0ZW50YXRpdmVzIGRlIDIKICAgICBzZWNvbmRlcyAocmV0cmllcyAzIGRhbnMgbGEgY29uZiksIHB1aXMgdW4gY29kZSA1MDMgZXN0IHJldG91cm7pIGF1CiAgICAgY2xpZW50LiBJbCB5IGF2YWl0IDExNSBjb25uZXhpb25zIHN1ciBjZSBzZXJ2ZXVyLCAyMDIgY29ubmV4aW9ucyBzdXIgY2V0dGUKICAgICBpbnN0YW5jZSwgZXQgMjA1IHN1ciBsJ2Vuc2VtYmxlIGRlcyBpbnN0YW5jZXMgcG91ciBjZSBwcm9jZXNzdXMuIElsIGVzdAogICAgIHBvc3NpYmxlIHF1ZSBsZSBzZXJ2ZXVyIGFpdCByZWZ1c+kgbGEgY29ubmV4aW9uIHBhcmNlIHF1J2lsIHkgZW4gYXZhaXQKICAgICBk6WrgIHRyb3AgZCfpdGFibGllcy4KCgo0LjMpIE1vZGlmaWNhdGlvbiBkZXMgZW4tdOp0ZXMgSFRUUAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkVuIG1vZGUgSFRUUCB1bmlxdWVtZW50LCBpbCBlc3QgcG9zc2libGUgZGUgcmVtcGxhY2VyIGNlcnRhaW5zIGVuLXTqdGVzIGRhbnMgbGEKcmVxdep0ZSBldC9vdSBsYSBy6XBvbnNlIOAgcGFydGlyIGQnZXhwcmVzc2lvbnMgculndWxp6HJlcy4gSWwgZXN0IOlnYWxlbWVudApwb3NzaWJsZSBkZSBibG9xdWVyIGNlcnRhaW5lcyByZXF16nRlcyBlbiBmb25jdGlvbiBkdSBjb250ZW51IGRlcyBlbi106nRlcyBvdQpkZSBsYSByZXF16nRlLiBVbmUgbGltaXRhdGlvbiBjZXBlbmRhbnQgOiBsZXMgZW4tdOp0ZXMgZm91cm5pcyBhdSBtaWxpZXUgZGUKY29ubmV4aW9ucyBwZXJzaXN0ZW50ZXMgKGtlZXAtYWxpdmUpIG5lIHNvbnQgcGFzIHZ1cyBjYXIgaWxzIHNvbnQgY29uc2lk6XLpcwpjb21tZSBmYWlzYW50IHBhcnRpZSBkZXMg6WNoYW5nZXMgZGUgZG9ubullcyBjb25z6WN1dGlmcyDgIGxhIHByZW1p6HJlIHJlcXXqdGUuCkxlcyBkb25u6WVzIG5lIHNvbnQgcGFzIGFmZmVjdOllcywgY2VjaSBuZSBzJ2FwcGxpcXVlIHF1J2F1eCBlbi106nRlcy4gCgpMYSBzeW50YXhlIGVzdCA6CiAgIHJlcWFkZCAgICA8c3RyaW5nPiAgICAgICAgICAgICBwb3VyIGFqb3V0ZXIgdW4gZW4tdOp0ZSBkYW5zIGxhIHJlcXXqdGUKICAgcmVxcmVwICAgIDxzZWFyY2g+IDxyZXBsYWNlPiAgIHBvdXIgbW9kaWZpZXIgbGEgcmVxdep0ZQogICByZXFpcmVwICAgPHNlYXJjaD4gPHJlcGxhY2U+ICAgaWRlbSBzYW5zIGRpc3RpbmN0aW9uIG1hanVzY3VsZXMvbWludXNjdWxlcwogICByZXFkZWwgICAgPHNlYXJjaD4gICAgICAgICAgICAgcG91ciBzdXBwcmltZXIgdW4gZW4tdOp0ZSBkYW5zIGxhIHJlcXXqdGUKICAgcmVxaWRlbCAgIDxzZWFyY2g+ICAgICAgICAgICAgIGlkZW0gc2FucyBkaXN0aW5jdGlvbiBtYWp1c2N1bGVzL21pbnVzY3VsZXMKICAgcmVxYWxsb3cgIDxzZWFyY2g+ICAgICAgICAgICAgIGF1dG9yaXNlciBsYSByZXF16nRlIHNpIHVuIGVuLXTqdGUgdmFsaWRlIDxzZWFyY2g+CiAgIHJlcWlhbGxvdyA8c2VhcmNoPiAgICAgICAgICAgICBpZGVtIHNhbnMgZGlzdGluY3Rpb24gbWFqdXNjdWxlcy9taW51c2N1bGVzCiAgIHJlcWRlbnkgICA8c2VhcmNoPiAgICAgICAgICAgICBpbnRlcmRpcmUgbGEgcmVxdep0ZSBzaSB1biBlbi106nRlIHZhbGlkZSA8c2VhcmNoPgogICByZXFpZGVueSAgPHNlYXJjaD4gICAgICAgICAgICAgaWRlbSBzYW5zIGRpc3RpbmN0aW9uIG1hanVzY3VsZXMvbWludXNjdWxlcwogICByZXFwYXNzICAgPHNlYXJjaD4gICAgICAgICAgICAgaW5oaWJlIGNlcyBhY3Rpb25zIHN1ciBsZXMgZW4tdOp0ZXMgdmFsaWRhbnQgPHNlYXJjaD4KICAgcmVxaXBhc3MgIDxzZWFyY2g+ICAgICAgICAgICAgIGlkZW0gc2FucyBkaXN0aW5jdGlvbiBtYWp1c2N1bGVzL21pbnVzY3VsZXMKICAgcmVxdGFycGl0IDxzZWFyY2g+ICAgICAgICAgICAgIGJsb3F1ZXIgZXQgbWFpbnRlbmlyIHVuZSByZXF1ZXN0IHZhbGlkYW50IDxzZWFyY2g+CiAgIHJlcWl0YXJwaXQgPHNlYXJjaD4gICAgICAgICAgICBpZGVtIHNhbnMgZGlzdGluY3Rpb24gbWFqdXNjdWxlcy9taW51c2N1bGVzCgogICByc3BhZGQgICA8c3RyaW5nPiAgICAgICAgICAgICAgcG91ciBham91dGVyIHVuIGVuLXTqdGUgZGFucyBsYSBy6XBvbnNlCiAgIHJzcHJlcCAgIDxzZWFyY2g+IDxyZXBsYWNlPiAgICBwb3VyIG1vZGlmaWVyIGxhIHLpcG9uc2UKICAgcnNwaXJlcCAgPHNlYXJjaD4gPHJlcGxhY2U+ICAgIGlkZW0gc2FucyBkaXN0aW5jdGlvbiBtYWp1c2N1bGVzL21pbnVzY3VsZXMKICAgcnNwZGVsICAgPHNlYXJjaD4gICAgICAgICAgICAgIHBvdXIgc3VwcHJpbWVyIHVuIGVuLXTqdGUgZGFucyBsYSBy6XBvbnNlCiAgIHJzcGlkZWwgIDxzZWFyY2g+ICAgICAgICAgICAgICBpZGVtIHNhbnMgZGlzdGluY3Rpb24gbWFqdXNjdWxlcy9taW51c2N1bGVzCiAgIHJzcGRlbnkgIDxzZWFyY2g+ICAgICAgICAgICAgICByZW1wbGFjZSBsYSBy6XBvbnNlIHBhciB1biBIVFRQIDUwMiBzaSB1bgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW4tdOp0ZSB2YWxpZGUgPHNlYXJjaD4KICAgcnNwaWRlbnkgPHNlYXJjaD4gICAgICAgICAgICAgIGlkZW0gc2FucyBkaXN0aW5jdGlvbiBtYWp1c2N1bGVzL21pbnVzY3VsZXMKCgo8c2VhcmNoPiBlc3QgdW5lIGV4cHJlc3Npb24gculndWxp6HJlIGNvbXBhdGlibGUgUE9TSVggcmVnZXhwIHN1cHBvcnRhbnQgbGUKZ3JvdXBhZ2UgcGFyIHBhcmVudGjoc2VzIChzYW5zIGxlcyAnXCcpLiBMZXMgZXNwYWNlcyBldCBhdXRyZXMgc+lwYXJhdGV1cnMKZG9pdmVudCDqdHJlcyBwculj6WTpcyBkJ3VuICdcJyBwb3VyIG5lIHBhcyDqdHJlIGNvbmZvbmR1cyBhdmVjIGxhIGZpbiBkZSBsYQpjaGHubmUuIERlIHBsdXMsIGNlcnRhaW5zIGNhcmFjdOhyZXMgc3DpY2lhdXggcGV1dmVudCDqdHJlIHBy6WPpZOlzIGQndW4KYmFja3NsYWNoICgnXCcpIDoKCiAgXHQgICBwb3VyIHVuZSB0YWJ1bGF0aW9uCiAgXHIgICBwb3VyIHVuIHJldG91ciBjaGFycmlvdAogIFxuICAgcG91ciB1biBzYXV0IGRlIGxpZ25lCiAgXCAgICBwb3VyIGRpZmbpcmVuY2llciB1biBlc3BhY2UgZCd1biBz6XBhcmF0ZXVyCiAgXCMgICBwb3VyIGRpZmbpcmVuY2llciB1biBkaehzZSBkJ3VuIGNvbW1lbnRhaXJlCiAgXFwgICBwb3VyIHV0aWxpc2VyIHVuIGJhY2tzbGFzaCBkYW5zIGxhIHJlZ2V4CiAgXFxcXCBwb3VyIHV0aWxpc2VyIHVuIGJhY2tzbGFzaCBkYW5zIGxlIHRleHRlCiAgXHhYWCBwb3VyIHVuIGNhcmFjdOhyZSBzcOljaWZpcXVlIFhYIChjb21tZSBlbiBDKQoKCjxyZXBsYWNlPiBjb250aWVudCBsYSBjaGHubmUgcmVtcGxh52FudCBsYSBwb3J0aW9uIHbpcmlmaellIHBhciBsJ2V4cHJlc3Npb24uCkVsbGUgcGV1dCBpbmNsdXJlIGxlcyBjYXJhY3TocmVzIHNw6WNpYXV4IGNpLWRlc3N1cywgZmFpcmUgculm6XJlbmNlIOAgdW4KZ3JvdXBlIGTpbGltaXTpIHBhciBkZXMgcGFyZW50aOhzZXMgZGFucyBsJ2V4cHJlc3Npb24gculndWxp6HJlLCBwYXIgc2EKcG9zaXRpb24gbnVt6XJhbGUuIExlcyBwb3NpdGlvbnMgdm9udCBkZSAwIOAgOSwgZXQgc29udCBjb2TpZXMgcGFyIHVuICdcJwpzdWl2aSBkdSBjaGlmZnJlIGTpc2ly6SAoMCBk6XNpZ25hbnQgbGEgbGlnbmUgY29tcGzodGUpLiBJbCBlc3Qg6WdhbGVtZW50CnBvc3NpYmxlIGQnaW5z6XJlciB1biBjYXJhY3TocmUgbm9uIGltcHJpbWFibGUgKHV0aWxlIHBvdXIgbGUgc2F1dCBkZSBsaWduZSkKaW5zY3JpdmFudCAnXHgnIHN1aXZpIGR1IGNvZGUgaGV4YWTpY2ltYWwgZGUgY2UgY2FyYWN06HJlIChjb21tZSBlbiBDKS4KCjxzdHJpbmc+IHJlcHLpc2VudGUgdW5lIGNoYe5uZSBxdWkgc2VyYSBham91dOllIHN5c3TpbWF0aXF1ZW1lbnQgYXBy6HMgbGEKZGVybmnocmUgbGlnbmUgZCdlbi106nRlLgoKUmVtYXJxdWVzIDoKLS0tLS0tLS0tLS0KICAtIGxhIHByZW1p6HJlIGxpZ25lIGRlIGxhIHJlcXXqdGUgZXQgY2VsbGUgZGUgbGEgculwb25zZSBzb250IHRyYWl06WVzIGNvbW1lCiAgICBkZXMgZW4tdOp0ZXMsIGNlIHF1aSBwZXJtZXQgZGUgcunpY3JpcmUgZGVzIFVSTCBldCBkZXMgY29kZXMgZCdlcnJldXIuCiAgLSAncmVxcmVwJyBlc3QgbCfpcXVpdmFsZW50IGRlICdjbGlleHAnIGVuIHZlcnNpb24gMS4wLCBldCAncnNwcmVwJyBjZWx1aSBkZQogICAgJ3NydmV4cCcuIENlcyBub21zIHNvbnQgdG91am91cnMgc3VwcG9ydOlzIG1haXMgZOljb25zZWlsbOlzLgogIC0gcG91ciBkZXMgcmFpc29ucyBkZSBwZXJmb3JtYW5jZXMsIGxlIG5vbWJyZSB0b3RhbCBkZSBjYXJhY3TocmVzIGFqb3V06XMgc3VyCiAgICB1bmUgcmVxdep0ZSBvdSB1bmUgculwb25zZSBlc3QgbGltaXTpIOAgNDA5NiBkZXB1aXMgbGEgdmVyc2lvbiAxLjEuNSAoY2V0dGUKICAgIGxpbWl0ZSDpdGFpdCDgIDI1NiBhdXBhcmF2YW50KS4gQ2V0dGUgdmFsZXVyIGVzdCBtb2RpZmlhYmxlIGRhbnMgbGUgY29kZS4KICAgIFBvdXIgdW4gdXNhZ2UgdGVtcG9yYWlyZSwgb24gcGV1dCBnYWduZXIgZGUgbGEgcGxhY2UgZW4gc3VwcHJpbWFudCBxdWVscXVlcwogICAgZW4tdOp0ZXMgaW51dGlsZXMgYXZhbnQgbGVzIGFqb3V0cy4KICAtIHVuZSByZXF16nRlIGJsb3F16WUgcHJvZHVpcmEgdW5lIHLpcG9uc2UgIkhUVFAgNDAzIGZvcmJpZGRlbiIgdGFuZGlzIHF1J3VuZQogICAgculwb25zZSBibG9xdellIHByb2R1aXJhIHVuZSBy6XBvbnNlICJIVFRQIDUwMiBCYWQgZ2F0ZXdheSIuCiAgLSB1bmUgcmVxdep0ZSBibG9xdellIHBhciAncmVxdGFycGl0JyBzZXJhIG1haW50ZW51ZSBwZW5kYW50IHVuZSBkdXLpZSDpZ2FsZQogICAgYXUgcGFyYW3odHJlICdjb250aW1lb3V0Jywgb3UganVzcXUn4CBsJ2FiYW5kb24gZHUgY2xpZW50LiBSaWVuIG5lIHNlcmEKICAgIGVudm956SBhdSBzZXJ2ZXVyLiBMb3JzcXVlIGxlIHRlbXBzIGFsbG916SBleHBpcmUsIGxlIHByb3h5IHLpcG9uZHJhIGF2ZWMKICAgIHVuZSBy6XBvbnNlICI1MDAgc2VydmVyIGVycm9yIiBkZSBzb3J0ZSBxdWUgbCdhdHRhcXVhbnQgbmUgc3VzcGVjdGUgcGFzCiAgICBxdSdpbCBhaXQg6XTpIGJsb3F16S4gTGVzIGxvZ3MgcmFwcG9ydGVyb250IGF1c3NpIGNlIGNvZGUgNTAwLCBtYWlzIGxlcwogICAgZmxhZ3MgZGUgdGVybWluYWlzb24gaW5kaXF1ZXJvbnQgIlBUIi4KCkV4ZW1wbGVzIDoKLS0tLS0tLS0tLQogICAgICAgICMjIyMjIyBhIGZldyBleGFtcGxlcyAjIyMjIyMKCiAgICAgICAgIyByZXdyaXRlICdvbmxpbmUuZnInIGluc3RlYWQgb2YgJ2ZyZWUuZnInIGZvciBHRVQgYW5kIFBPU1QgcmVxdWVzdHMKICAgICAgICByZXFyZXAgICAgICAgIF4oR0VUXCAuKikoLmZyZWUuZnIpKC4qKSBcMS5vbmxpbmUuZnJcMwogICAgICAgIHJlcXJlcCAgICAgICAgXihQT1NUXCAuKikoLmZyZWUuZnIpKC4qKSBcMS5vbmxpbmUuZnJcMwoKICAgICAgICAjIGZvcmNlIHByb3h5IGNvbm5lY3Rpb25zIHRvIGNsb3NlCiAgICAgICAgcmVxaXJlcCAgICAgICAgXlByb3h5LUNvbm5lY3Rpb246LiogICAgICAgIFByb3h5LUNvbm5lY3Rpb246XCBjbG9zZQogICAgICAgICMgcmV3cml0ZSBsb2NhdGlvbnMKICAgICAgICByc3BpcmVwICAgICAgICBeKExvY2F0aW9uOlwgKShbXjpdKjovL1teL10qKSguKikgXDFcMwoKICAgICAgICAjIyMjIyMgQSBmdWxsIGNvbmZpZ3VyYXRpb24gYmVpbmcgdXNlZCBvbiBwcm9kdWN0aW9uICMjIyMjIwoKICAgICAgICAjIEV2ZXJ5IGhlYWRlciBzaG91bGQgZW5kIHdpdGggYSBjb2xvbiBmb2xsb3dlZCBieSBvbmUgc3BhY2UuCiAgICAgICAgcmVxaWRlbnkgICAgICAgIF5bXjpcIF0qW1wgXSokCgogICAgICAgICMgYmxvY2sgQXBhY2hlIGNodW5rIGV4cGxvaXQKICAgICAgICByZXFpZGVueSAgICAgICAgXlRyYW5zZmVyLUVuY29kaW5nOltcIF0qY2h1bmtlZAogICAgICAgIHJlcWlkZW55ICAgICAgICBeSG9zdDpcIGFwYWNoZS0KCiAgICAgICAgIyBibG9jayBhbm5veWluZyB3b3JtcyB0aGF0IGZpbGwgdGhlIGxvZ3MuLi4KICAgICAgICByZXFpZGVueSAgICAgICAgXlteOlwgXSpcIC4qKFwufCUyZSkoXC58JTJlKSglMmZ8JTVjfC98XFxcXCkKICAgICAgICByZXFpZGVueSAgICAgICAgXlteOlwgXSpcIChbXlwgXSpcIFteXCBdKlwgfC4qJTAwKQogICAgICAgIHJlcWlkZW55ICAgICAgICBeW146XCBdKlwgLio8c2NyaXB0CiAgICAgICAgcmVxaWRlbnkgICAgICAgIF5bXjpcIF0qXCAuKi8ocm9vdFwuZXhlXD98Y21kXC5leGVcP3xkZWZhdWx0XC5pZGFcPykKCgkjIHRhcnBpdCBhdHRhY2tzIG9uIHRoZSBsb2dpbiBwYWdlLgogICAgICAgIHJlcXRhcnBpdCAgICAgXlteOlwgXSpcIC4qXC5waHA/bG9naW49W14wLTldCgogICAgICAgICMgYWxsb3cgb3RoZXIgc3ludGFjdGljYWxseSB2YWxpZCByZXF1ZXN0cywgYW5kIGJsb2NrIGFueSBvdGhlciBtZXRob2QKICAgICAgICByZXFpcGFzcyAgICAgICAgXihHRVR8UE9TVHxIRUFEfE9QVElPTlMpXCAvLipcIEhUVFAvMVwuWzAxXSQKICAgICAgICByZXFpcGFzcyAgICAgICAgXk9QVElPTlNcIFxcKlwgSFRUUC8xXC5bMDFdJAogICAgICAgIHJlcWlkZW55ICAgICAgICBeW146XCBdKlwgCgogICAgICAgICMgZm9yY2UgY29ubmVjdGlvbjpjbG9zZSwgdGh1cyBkaXNhYmxpbmcgSFRUUCBrZWVwLWFsaXZlCiAgICAgICAgb3B0aW9uICAgICAgICAgICAgICAgIGh0dHBjbG9zCgogICAgICAgICMgY2hhbmdlIHRoZSBzZXJ2ZXIgbmFtZQogICAgICAgIHJzcGlkZWwgICAgICAgICBeU2VydmVyOlwgCiAgICAgICAgcnNwYWRkICAgICAgICAgIFNlcnZlcjpcIEZvcm1pbHV4LzAuMS44CgoKRGUgcGx1cywgbCdvcHRpb24gJ2ZvcndhcmRmb3InIGFqb3V0ZSBsJ2FkcmVzc2UgSVAgZHUgY2xpZW50IGRhbnMgdW4gY2hhbXAKJ1gtRm9yd2FyZGVkLUZvcicgZGUgbGEgcmVxdep0ZSwgY2UgcXVpIHBlcm1ldCDgIHVuIHNlcnZldXIgd2ViIGZpbmFsIGRlCmNvbm5h7nRyZSBsJ2FkcmVzc2UgSVAgZHUgY2xpZW50IGluaXRpYWwuIERlcHVpcyBsYSB2ZXJzaW9uIDEuMy44LCBpbCBlc3QKcG9zc2libGUgZGUgcHLpY2lzZXIgbGUgbW90LWNs6SAiZXhjZXB0IiBzdWl2aSBkJ3VuZSBhZHJlc3NlIG91IHVuIHLpc2VhdQpJUCBzb3VyY2UgcG91ciBsZXF1ZWwgbCdlbnTqdGUgbmUgc2VyYSBwYXMgYWpvdXTpLiBDJ2VzdCB0cuhzIHByYXRpcXVlIGRhbnMgbGUKY2FzIG/5IHVuIGF1dHJlIHJldmVyc2UtcHJveHkgYWpvdXRhbnQgZOlq4CBsJ2VudOp0ZSBlc3QgaW5zdGFsbOkgc3VyIGxhIG3qbWUKbWFjaGluZSBvdSBkYW5zIHVuZSBETVogY29ubnVlLiBMZSBjYXMgbGUgcGx1cyBmculxdWVudCBlc3QgbGnpIOAgbCd1dGlsaXNhdGlvbgpkZSBzdHVubmVsIGVuIGxvY2FsLgoKRW5maW4sIGwnb3B0aW9uICdodHRwY2xvc2UnIGFwcGFydWUgZGFucyBsYSB2ZXJzaW9uIDEuMS4yOC8xLjIuMSBzdXBwcmltZSB0b3V0CmVuLXTqdGUgZGUgdHlwZSAnQ29ubmVjdGlvbjonIGV0IGFqb3V0ZSAnQ29ubmVjdGlvbjogY2xvc2UnIGRhbnMgbGVzIGRldXggc2Vucy4KQ2VjaSBzaW1wbGlmaWUgbGEgZOlzYWN0aXZhdGlvbiBkdSBrZWVwLWFsaXZlIEhUVFAgcGFyIHJhcHBvcnQg4CBsJ2FuY2llbm5lCm3pdGhvZGUgaW1wbGlxdWFudCA0IHLoZ2xlcy4KCkV4ZW1wbGUgOgotLS0tLS0tLS0KICAgIGxpc3RlbiBodHRwX3Byb3h5IDAuMC4wLjA6ODAKICAgICAgICBtb2RlIGh0dHAKICAgICAgICBsb2cgIGdsb2JhbAogICAgICAgIG9wdGlvbiBodHRwbG9nCiAgICAgICAgb3B0aW9uIGRvbnRsb2dudWxsCiAgICAgICAgb3B0aW9uIGZvcndhcmRmb3IgZXhjZXB0IDEyNy4wLjAuMS84CiAgICAgICAgb3B0aW9uIGh0dHBjbG9zZQoKTm90b25zIHF1ZSBjZXJ0YWlucyBzZXJ2ZXVycyBIVFRQIG5lIHJlZmVybWVudCBwYXMgbuljZXNzYWlyZW1lbnQgbGEgc2Vzc2lvbgpUQ1AgZW4gZmluIGRlIHRyYWl0ZW1lbnQgbG9yc3F1J2lscyByZedvaXZlbnQgdW4gZW506nRlICdDb25uZWN0aW9uOiBjbG9zZScsCmNlIHF1aSBzZSB0cmFkdWl0IHBhciBkZXMgZ3JhbmRzIG5vbWJyZXMgZGUgc2Vzc2lvbnMg6XRhYmxpZXMgZXQgZGVzIHRlbXBzCmdsb2JhdXggdHLocyBsb25ncyBzdXIgbGVzIHJlcXXqdGVzLiBQb3VyIGNvbnRvdXJuZXIgY2UgcHJvYmzobWUsIGxhIHZlcnNpb24KMS4yLjkgYXBwb3J0ZSB1bmUgbm91dmVsbGUgb3B0aW9uICdmb3JjZWNsb3NlJyBxdWkgcmVmZXJtZSBsYSBjb25uZXhpb24gc29ydGFudAp2ZXJzIGxlIHNlcnZldXIgZOhzIHF1J2lsIGNvbW1lbmNlIOAgculwb25kcmUgZXQgc2V1bGVtZW50IHNpIGxlIHRhbXBvbiBkZQpyZXF16nRlIGVzdCB2aWRlLiBBdHRlbnRpb24gdG91dGVmb2lzIOAgbmUgUEFTIHV0aWxpc2VyIGNldHRlIG9wdGlvbiBzaSBkZXMKbel0aG9kZXMgQ09OTkVDVCBzb250IGF0dGVuZHVlcyBlbnRyZSBsZSBjbGllbnQgZXQgbGUgc2VydmV1ci4gTCdvcHRpb24KJ2ZvcmNlY2xvc2UnIGltcGxpcXVlIGwnb3B0aW9uICdodHRwY2xvc2UnLgoKRXhlbXBsZSA6Ci0tLS0tLS0tLQogICAgbGlzdGVuIGh0dHBfcHJveHkgMC4wLjAuMDo4MAogICAgICAgIG1vZGUgaHR0cAogICAgICAgIGxvZyAgZ2xvYmFsCiAgICAgICAgb3B0aW9uIGh0dHBsb2cKICAgICAgICBvcHRpb24gZG9udGxvZ251bGwKICAgICAgICBvcHRpb24gZm9yd2FyZGZvcgogICAgICAgIG9wdGlvbiBmb3JjZWNsb3NlCgoKNC40KSBS6XBhcnRpdGlvbiBhdmVjIHBlcnNpc3RlbmNlCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpMYSBjb21iaW5haXNvbiBkZSBsJ2luc2VydGlvbiBkZSBjb29raWUgYXZlYyBsYSBy6XBhcnRpdGlvbiBkZSBjaGFyZ2UgaW50ZXJuZQpwZXJtZXQgZCdhc3N1cmVyIHVuZSBwZXJzaXN0ZW5jZSBkYW5zIGxlcyBzZXNzaW9ucyBIVFRQIGQndW5lIG1hbmnocmUKcHJhdGlxdWVtZW50IHRyYW5zcGFyZW50ZSBwb3VyIGxlcyBhcHBsaWNhdGlvbnMuIExlIHByaW5jaXBlIGVzdCBzaW1wbGUgOgogIC0gYXR0cmlidWVyIHVuZSB2YWxldXIgZCd1biBjb29raWUg4CBjaGFxdWUgc2VydmV1cgogIC0gZWZmZWN0dWVyIHVuZSBy6XBhcnRpdGlvbiBpbnRlcm5lCiAgLSBpbnPpcmVyIHVuIGNvb2tpZSBkYW5zIGxlcyBy6XBvbnNlcyBpc3N1ZXMgZCd1bmUgculwYXJ0aXRpb24gdW5pcXVlbWVudCwKICAgIGV0IGZhaXJlIGVuIHNvcnRlIHF1ZSBkZXMgY2FjaGVzIG5lIG3pbW9yaXNlbnQgcGFzIGNlIGNvb2tpZS4KICAtIGNhY2hlciBjZSBjb29raWUg4CBsJ2FwcGxpY2F0aW9uIGxvcnMgZGVzIHJlcXXqdGVzIHVsdOlyaWV1cmVzLgoKRXhlbXBsZSA6Ci0tLS0tLS0tLQogICAgbGlzdGVuIGFwcGxpY2F0aW9uIDAuMC4wLjA6ODAKICAgICAgICBtb2RlIGh0dHAKICAgICAgICBjb29raWUgU0VSVkVSSUQgaW5zZXJ0IG5vY2FjaGUgaW5kaXJlY3QKICAgICAgICBiYWxhbmNlIHJvdW5kcm9iaW4KICAgICAgICBzZXJ2ZXIgc3J2MSAxOTIuMTY4LjEuMTo4MCBjb29raWUgc2VydmVyMDEgY2hlY2sKICAgICAgICBzZXJ2ZXIgc3J2MiAxOTIuMTY4LjEuMjo4MCBjb29raWUgc2VydmVyMDIgY2hlY2sKCkwnYXV0cmUgc29sdXRpb24gYXBwb3J06WUgcGFyIGxlcyB2ZXJzaW9ucyAxLjEuMzAgZXQgMS4yLjMgZXN0IGRlIHLpdXRpbGlzZXIgdW4KY29va2llIGVuIHByb3ZlbmFuY2UgZHUgc2VydmV1ciBldCBkZSBsdWkgcHLpZml4ZXIgbCdpZGVudGlmaWFudCBkdSBzZXJ2ZXVyLgpEYW5zIGNlIGNhcywgbmUgcGFzIG91YmxpZXIgZGUgZm9yY2VyIGxlIG1vZGUgImh0dHBjbG9zZSIgcG91ciBlbXDqY2hlciBsZQpjbGllbnQgZXQgbGUgc2VydmV1ciBkZSB0cmF2YWlsbGVyIGVuIG1vZGUgImtlZXAtYWxpdmUiIGFmaW4gcXVlIGxlIHByb3h5CnB1aXNzZSBjb3JyaWdlciBsZSBub20gZHUgY29va2llIGRhbnMgdG91dGVzIGxlcyBmdXR1cmVzIHJlcXXqdGVzLgoKICAgIGxpc3RlbiBhcHBsaWNhdGlvbiAwLjAuMC4wOjgwCiAgICAgICBtb2RlIGh0dHAKICAgICAgIGNvb2tpZSBKU0VTU0lPTklEIHByZWZpeAogICAgICAgYmFsYW5jZSByb3VuZHJvYmluCiAgICAgICBzZXJ2ZXIgc3J2MSAxOTIuMTY4LjEuMTo4MCBjb29raWUgc3J2MSBjaGVjawogICAgICAgc2VydmVyIHNydjIgMTkyLjE2OC4xLjI6ODAgY29va2llIHNydjIgY2hlY2sKICAgICAgIG9wdGlvbiBodHRwY2xvc2UKCgo0LjUpIFByb3RlY3Rpb24gY29udHJlIGxlcyBmdWl0ZXMgZCdpbmZvcm1hdGlvbnMgZHUgc2VydmV1cgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpEYW5zIGxlcyB2ZXJzaW9ucyAxLjEuMjggZXQgMS4yLjEsIHVuZSBub3V2ZWxsZSBvcHRpb24gJ2NoZWNrY2FjaGUnIGEg6XTpCmNy6ellLiBFbGxlIHNlcnQg4CBpbnNwZWN0ZXIgbWludXRpZXVzZW1lbnQgbGVzIGVuLXTqdGVzICdDYWNoZS1jb250cm9sJywKJ1ByYWdtYScsIGV0ICdTZXQtY29va2llJyBkYW5zIGxlcyBy6XBvbnNlcyBzZXJ2ZXVyIHBvdXIgZOl0ZXJtaW5lciBzJ2lsIHkgYQp1biByaXNxdWUgZGUgY2FjaGVyIHVuIGNvb2tpZSBzdXIgdW4gcHJveHkgY/R06SBjbGllbnQuIFF1YW5kIGNldHRlIG9wdGlvbiBlc3QKYWN0aXbpZSwgbGVzIHNldWxlcyBy6XBvbnNlcyBxdWkgcGV1dmVudCDqdHJlIHJldG91cm7pZXMgYXUgY2xpZW50IHNvbnQgOgogIC0gdG91dGVzIGNlbGxlcyBxdWkgbidvbnQgcGFzIGQnZW4tdOp0ZSAnU2V0LWNvb2tpZScgOwogIC0gdG91dGVzIGNlbGxlcyBxdWkgb250IHVuIGNvZGUgZGUgcmV0b3VyIGF1dHJlIHF1ZSAyMDAsIDIwMywgMjA2LCAzMDAsIDMwMSwgCiAgICA0MTAsIHNhdWYgc2kgbGUgc2VydmV1ciBhIHBvc2l0aW9ubukgdW4gZW4tdOp0ZSAnQ2FjaGUtY29udHJvbDogcHVibGljJyA7CiAgLSBjZWxsZXMgcXVpIGZvbnQgc3VpdGUg4CB1bmUgcmVxdep0ZSBQT1NULCBzYXVmIHNpIGxlIHNlcnZldXIgYSBwb3NpdGlvbm7pCiAgICB1biBlbi106nRlICdDYWNoZS1jb250cm9sOiBwdWJsaWMnIDsKICAtIGNlbGxlcyBxdWkgb250IHVuIGVuLXTqdGUgJ1ByYWdtYTogbm8tY2FjaGUnIDsKICAtIGNlbGxlcyBxdWkgb250IHVuIGVuLXTqdGUgJ0NhY2hlLWNvbnRyb2w6IHByaXZhdGUnIDsgCiAgLSBjZWxsZXMgcXVpIG9udCB1biBlbi106nRlICdDYWNoZS1jb250cm9sOiBuby1zdG9yZScgOyAKICAtIGNlbGxlcyBxdWkgb250IHVuIGVuLXTqdGUgJ0NhY2hlLWNvbnRyb2w6IG1heC1hZ2U9MCcgOwogIC0gY2VsbGVzIHF1aSBvbnQgdW4gZW4tdOp0ZSAnQ2FjaGUtY29udHJvbDogcy1tYXhhZ2U9MCcgOwogIC0gY2VsbGVzIHF1aSBvbnQgdW4gZW4tdOp0ZSAnQ2FjaGUtY29udHJvbDogbm8tY2FjaGUnIDsKICAtIGNlbGxlcyBxdWkgb250IHVuIGVuLXTqdGUgJ0NhY2hlLWNvbnRyb2w6IG5vLWNhY2hlPSJzZXQtY29va2llIicgOwogIC0gY2VsbGVzIHF1aSBvbnQgdW4gZW4tdOp0ZSAnQ2FjaGUtY29udHJvbDogbm8tY2FjaGU9InNldC1jb29raWUsJwogICAgKGF1dG9yaXNhbnQgZCdhdXRyZXMgY2hhbXBzIGFwcuhzIHNldC1jb29raWUpLgoKU2kgdW5lIHLpcG9uc2UgbmUgcmVzcGVjdGUgcGFzIGNlcyBwcuktcmVxdWlzLCBhbG9ycyBlbGxlIHNlcmEgYmxvcXXpZSBkZSBsYQpt6m1lIG1hbmnocmUgcXVlIHMnaWwgcydhZ2lzc2FpdCBkJ3VuIGZpbHRyZSAncnNwZGVueScsIGF2ZWMgZW4gcmV0b3VyIHVuCm1lc3NhZ2UgIkhUVFAgNTAyIGJhZCBnYXRld2F5Ii4gTCfpdGF0IGRlIHNlc3Npb24gbW9udHJlICJQSC0tIiBjZSBxdWkgdmV1dApkaXJlIHF1ZSBjJ2VzdCBsZSBwcm94eSBxdWkgYSBibG9xdekgbGEgculwb25zZSBkdXJhbnQgbGUgdHJhaXRlbWVudCBkZXMKZW4tdOp0ZXMuIERlIHBsdXMsIHVuIG1lc3NhZ2UgZCdhbGVydGUgc2VyYSBlbnZveekgZGFucyBsZXMgbG9ncyBkZSBzb3J0ZSBxdWUKbCdhZG1pbmlzdHJhdGV1ciBzYWNoZSBxdSdpbCB5IGEgdW5lIGFjdGlvbiBjb3JyZWN0cmljZSDgIGVudHJlcHJlbmRyZS4KCjQuNikgUGVyc29uYWxpc2F0aW9uIGRlcyBlcnJldXJzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkNlcnRhaW5lcyBzaXR1YXRpb25zIGNvbmR1aXNlbnQg4CByZXRvdXJuZXIgdW5lIGVycmV1ciBIVFRQIGF1IGNsaWVudCA6CiAgLSByZXF16nRlIGludmFsaWRlIG91IHRyb3AgbG9uZ3VlID0+IGNvZGUgSFRUUCA0MDAKICAtIHJlcXXqdGUgbWV0dGFudCB0cm9wIGRlIHRlbXBzIOAgdmVuaXIgPT4gY29kZSBIVFRQIDQwOAogIC0gcmVxdep0ZSBpbnRlcmRpdGUgKGJsb3F16WUgcGFyIHVuIHJlcWlkZW55KSA9PiBjb2RlIEhUVFAgNDAzCiAgLSBlcnJldXIgaW50ZXJuZSBkdSBwcm94eSA9PiBjb2RlIEhUVFAgNTAwCiAgLSBsZSBzZXJ2ZXVyIGEgcmV0b3VybukgdW5lIHLpcG9uc2UgaW5jb21wbOh0ZSBvdSBpbnZhbGlkZSA9PiBjb2RlIEhUVFAgNTAyCiAgLSBhdWN1biBzZXJ2ZXVyIGRpc3BvbmlibGUgcG91ciBjZXR0ZSByZXF16nRlID0+IGNvZGUgSFRUUCA1MDMKICAtIGxlIHNlcnZldXIgbidhIHBhcyBy6XBvbmR1IGRhbnMgbGUgdGVtcHMgaW1wYXJ0aSA9PiBjb2RlIEhUVFAgNTA0CgpVbiBtZXNzYWdlIGQnZXJyZXVyIHN1Y2NpbnQgdGly6SBkZSBsYSBSRkMgYWNjb21wYWduZSBjZXMgY29kZXMgZGUgcmV0b3VyLgpDZXBlbmRhbnQsIGVuIGZvbmN0aW9uIGR1IHR5cGUgZGUgY2xpZW506GxlLCBvbiBwZXV0IHBy6WbpcmVyIHJldG91cm5lciBkZXMKcGFnZXMgcGVyc29ubmFsaXPpZXMuIENlY2kgZXN0IHBvc3NpYmxlIGRlIGRldXggbWFuaehyZXMsIGwndW5lIHJlcG9zYW50IHN1cgp1bmUgcmVkaXJlY3Rpb24gdmVycyB1biBzZXJ2ZXVyIGNvbm51LCBldCBsJ2F1dHJlIGNvbnNpc3RhbnQg4CByZXRvdXJuZXIgdW4KZmljaGllciBsb2NhbC4KCjQuNi4xKSBSZWRpcmVjdGlvbgotLS0tLS0tLS0tLS0tLS0tLS0KVW5lIHJlZGlyZWN0aW9uIGQnZXJyZXVyIGVzdCBhc3N1cullIHBhciBsZSBiaWFpcyBkZSBsYSBjb21tYW5kZSAiZXJyb3Jsb2MiIDoKCiAgICBlcnJvcmxvYyA8Y29kZV9IVFRQPiA8bG9jYXRpb24+CgpBdSBsaWV1IGRlIGfpbulyZXIgdW5lIGVycmV1ciBIVFRQIDxjb2RlX0hUVFA+IHBhcm1pIGxlcyBjb2RlcyBjaXTpcyBjaS1kZXNzdXMsCmxlIHByb3h5IGfpbuhyZXJhIHVuIGNvZGUgZGUgcmVkaXJlY3Rpb24gdGVtcG9yYWlyZSAoSFRUUCAzMDIpIHZlcnMgbCdhZHJlc3NlCmQndW5lIHBhZ2UgcHLpY2lz6WUgZGFucyA8bG9jYXRpb24+LiBDZXR0ZSBhZHJlc3NlIHBldXQg6nRyZSByZWxhdGl2ZSBhdSBzaXRlLApvdSBhYnNvbHVlLiBDb21tZSBjZXR0ZSBy6XBvbnNlIGVzdCB0cmHudOllIHBhciBsZSBuYXZpZ2F0ZXVyIGR1IGNsaWVudApsdWktbeptZSwgaWwgZXN0IGluZGlzcGVuc2FibGUgcXVlIGwnYWRyZXNzZSBmb3VybmllIGx1aSBzb2l0IGFjY2Vzc2libGUuCgpFeGVtcGxlIDoKLS0tLS0tLS0tCiAgICBsaXN0ZW4gYXBwbGljYXRpb24gMC4wLjAuMDo4MAogICAgICAgIGVycm9ybG9jIDQwMCAvYmFkcmVxdWVzdC5odG1sCiAgICAgICAgZXJyb3Jsb2MgNDAzIC9mb3JiaWRkZW4uaHRtbAogICAgICAgIGVycm9ybG9jIDQwOCAvdG9vbG9uZy5odG1sCiAgICAgICAgZXJyb3Jsb2MgNTAwIGh0dHA6Ly9oYXByb3h5LmRvbWFpbi5uZXQvYnVncmVwb3J0Lmh0bWwKICAgICAgICBlcnJvcmxvYyA1MDIgaHR0cDovLzE5Mi4xNjguMTE0LjU4L2Vycm9yNTB4Lmh0bWwKICAgICAgICBlcnJvcmxvYyA1MDMgaHR0cDovLzE5Mi4xNjguMTE0LjU4L2Vycm9yNTB4Lmh0bWwKICAgICAgICBlcnJvcmxvYyA1MDQgaHR0cDovLzE5Mi4xNjguMTE0LjU4L2Vycm9yNTB4Lmh0bWwKCk5vdGU6IGxhIFJGQzI2MTYgc3RpcHVsZSBxdSd1biBjbGllbnQgZG9pdCBy6XV0aWxpc2VyIGxhIG3qbWUgbel0aG9kZSBwb3VyCmFjY+lkZXIg4CBsJ1VSTCBkZSByZWRpcmVjdGlvbiBxdWUgY2VsbGUgcXVpIGwnYSByZXRvdXJu6WUsIGNlIHF1aSBwb3NlIGRlcwpwcm9ibOhtZXMgYXZlYyBsZXMgcmVxdep0ZXMgUE9TVC4gTGUgY29kZSBkZSByZXRvdXIgMzAzIGEg6XTpIGNy6ekgZXhwcuhzIHBvdXIKculnbGVyIGNlIHByb2Js6G1lLCBpbmRpcXVhbnQgYXUgY2xpZW50IHF1J2lsIGRvaXQgYWNj6WRlciDgIGwnVVJMIHJldG91cm7pZQpkYW5zIGxlIGNoYW1wIExvY2F0aW9uIGF2ZWMgbGEgbel0aG9kZSBHRVQgdW5pcXVlbWVudC4gU2V1bGVtZW50LCBjZXJ0YWlucwpuYXZpZ2F0ZXVycyBhbnTpcmlldXJzIOAgSFRUUC8xLjEgbmUgY29ubmFpc3NlbnQgcGFzIGNlIGNvZGUgZGUgcmV0b3VyLiBEZQpwbHVzLCBsYSBwbHVwYXJ0IGRlcyBuYXZpZ2F0ZXVycyBzZSBjb21wb3J0ZW50IGTpauAgYXZlYyBsZSBjb2RlIDMwMiBjb21tZSBpbHMKZGV2cmFpZW50IGxlIGZhaXJlIGF2ZWMgbGUgMzAzLiBEb25jLCBkYW5zIGxlIGJ1dCBkZSBsYWlzc2VyIGxlIGNob2l4IOAKbCd1dGlsaXNhdGV1ciwgbGVzIHZlcnNpb25zIDEuMS4zMSBldCAxLjIuNSBhcHBvcnRlbnQgZGV1eCBub3V2ZWxsZXMgY29tbWFuZGVzCnZpc2FudCDgIHJlbXBsYWNlciAnZXJyb3Jsb2MnIDogJ2Vycm9ybG9jMzAyJyBldCAnZXJyb3Jsb2MzMDMnLgoKTGV1ciB1c2FnZSBub24gYW1iaWf8IGVzdCByZWNvbW1hbmTpIOAgbGEgcGxhY2UgZGUgbGEgY29tbWFuZGUgJ2Vycm9ybG9jJyAocXVpCnV0aWxpc2UgdG91am91cnMgMzAyKS4gRGFucyBsZSBkb3V0ZSwgcHLpZulyZXogbCd1dGlsaXNhdGlvbiBkZSAnZXJyb3Jsb2MzMDMnCmTocyBxdWUgdm91cyBzYXZleiBxdWUgdm9zIGNsaWVudHMgc3VwcG9ydGVudCBsZSBjb2RlIGRlIHJldG91ciBIVFRQIDMwMy4KCjQuNi4yKSBGaWNoaWVycyBsb2NhdXgKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpQYXJmb2lzIGlsIGVzdCBzb3VoYWl0YWJsZSBkZSBjaGFuZ2VyIGwnZXJyZXVyIHJldG91cm7pZSBzYW5zIHJlY291cmlyIOAgZGVzCnJlZGlyZWN0aW9ucy4gTGEgc2Vjb25kZSBt6XRob2RlIGNvbnNpc3RlIOAgY2hhcmdlciBkZXMgZmljaGllcnMgbG9jYXV4IGxvcnMKZHUgZOltYXJyYWdlIGV0IOAgbGVzIGVudm95ZXIgZW4gZ3Vpc2UgZGUgcHVyIGNvbnRlbnUgSFRUUCBlbiBjYXMgZCdlcnJldXIuCkMnZXN0IGNlIHF1ZSBmYWl0IGxlIG1vdCBjbOkgJ2Vycm9yZmlsZScuCgpBdHRlbnRpb24sIGlsIHkgYSBkZXMgcGnoZ2VzIOAgcHJlbmRyZSBlbiBjb21wdGUgOgogLSBsZXMgZmljaGllcnMgc29udCBjaGFyZ+lzIGR1cmFudCBsJ2FuYWx5c2UgZGUgbGEgY29uZmlndXJhdGlvbiwgYXZhbnQgZGUKICAgZmFpcmUgbGUgY2hyb290KCkuIERvbmMgaWxzIHNvbnQgcmVsYXRpZnMgYXUgc3lzdOhtZSBkZSBmaWNoaWVycyBy6WVsLiBQb3VyCiAgIGNldHRlIHJhaXNvbiwgaWwgZXN0IHJlY29tbWFuZOkgZGUgdG91am91cnMgcGFzc2VyIHVuIGNoZW1pbiBhYnNvbHUgdmVycyBjZXMKICAgZmljaGllcnMuCgogLSBsZSBjb250ZW51IGRlIGNlcyBmaWNoaWVycyBuJ2VzdCBwYXMgZHUgSFRNTCBtYWlzIHZyYWltZW50IGR1IHByb3RvY29sZSBIVFRQCiAgIGF2ZWMgcG90ZW50aWVsbGVtZW50IHVuIGNvcnBzIEhUTUwuIERvbmMgbGEgcHJlbWnocmUgbGlnbmUgZXQgbGVzIGVuLXTqdGVzCiAgIHNvbnQgb2JsaWdhdG9pcmVzLiBJZOlhbGVtZW50LCBjaGFxdWUgbGlnbmUgZGFucyBsYSBwYXJ0aWUgSFRUUCBkZXZyYWl0IHNlCiAgIHRlcm1pbmVyIHBhciB1biBDUi1MRiBwb3VyIHVuIG1heGltdW0gZGUgY29tcGF0aWJpbGl06S4KCiAtIGxlcyBy6XBvbnNlcyBzb250IGxpbWl06WVzIOAgdW5lIHRhaWxsZSBkZSBidWZmZXIgKEJVRlNJWkUpLCBn6W7pcmFsZW1lbnQgOAogICBvdSAxNiBrby4KCiAtIGxlcyBy6XBvbnNlcyBuZSBkZXZyYWllbnQgcGFzIGluY2x1cmUgZGUgculm6XJlbmNlcyBhdXggc2VydmV1cnMgbG9jYXV4LAogICBhZmluIGRlIG5lIHBhcyByaXNxdWVyIGRlIGNy6WVyIGRlcyBib3VjbGVzIGluZmluaWVzIHN1ciBsZSBuYXZpZ2F0ZXVyIGRhbnMKICAgbGUgY2FzIGQndW5lIHBhbm5lIGxvY2FsZS4KCkV4ZW1wbGUgOgotLS0tLS0tLS0KICAgICAgICBlcnJvcmZpbGUgNDAwIC9ldGMvaGFwcm94eS9lcnJvcmZpbGVzLzQwMGJhZHJlcS5odHRwCiAgICAgICAgZXJyb3JmaWxlIDQwMyAvZXRjL2hhcHJveHkvZXJyb3JmaWxlcy80MDNmb3JiaWQuaHR0cAogICAgICAgIGVycm9yZmlsZSA1MDMgL2V0Yy9oYXByb3h5L2Vycm9yZmlsZXMvNTAzc29ycnkuaHR0cAoKCjQuNykgQ2hhbmdlbWVudCBkZXMgdmFsZXVycyBwYXIgZOlmYXV0Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkRhbnMgbGEgdmVyc2lvbiAxLjEuMjIgZXN0IGFwcGFydWUgbGEgbm90aW9uIGRlIHZhbGV1cnMgcGFyIGTpZmF1dCwgY2UgcXVpCul2aXRlIGRlIHLpcOl0ZXIgZGVzIHBhcmFt6HRyZXMgY29tbXVucyDgIHRvdXRlcyBsZXMgaW5zdGFuY2VzLCB0ZWxzIHF1ZSBsZXMKdGltZW91dHMsIGFkcmVzc2VzIGRlIGxvZywgbW9kZXMgZGUgZm9uY3Rpb25uZW1lbnQsIGV0Yy4KCkxlcyB2YWxldXJzIHBhciBk6WZhdXQgc29udCBwb3NpdGlvbm7pZXMgZGFucyBsYSBkZXJuaehyZSBzZWN0aW9uICdkZWZhdWx0cycKcHLpY+lkZW50IGwnaW5zdGFuY2UgcXVpIGxlcyB1dGlsaXNlcmEuIE9uIHBldXQgZG9uYyBtZXR0cmUgYXV0YW50IGRlIHNlY3Rpb25zCidkZWZhdWx0cycgcXVlIGwnb24gdmV1dC4gSWwgZmF1dCBqdXN0ZSBzZSByYXBwZWxlciBxdWUgbGEgcHLpc2VuY2UgZCd1bmUgdGVsbGUKc2VjdGlvbiBpbXBsaXF1ZSB1bmUgYW5udWxhdGlvbiBkZSB0b3VzIGxlcyBwYXJhbeh0cmVzIHBhciBk6WZhdXQgcG9zaXRpb25u6XMKcHLpY+lkZW1tZW50LCBkYW5zIGxlIGJ1dCBkZSBsZXMgcmVtcGxhY2VyLgoKTGEgc2VjdGlvbiAnZGVmYXVsdHMnIHV0aWxpc2UgbGEgbeptZSBzeW50YXhlIHF1ZSBsYSBzZWN0aW9uICdsaXN0ZW4nLCBhdXgKcGFyYW3odHJlcyBwcuhzIHF1aSBuZSBzb250IHBhcyBzdXBwb3J06XMuIExlIG1vdCBjbOkgJ2RlZmF1bHRzJyBwZXV0IGFjY2VwdGVyCnVuIGNvbW1lbnRhaXJlIGVuIGd1aXNlIHBhcmFt6HRyZS4KCkRhbnMgbGEgdmVyc2lvbiAxLjEuMjgvMS4yLjEsIHNldWxzIGxlcyBwYXJhbeh0cmVzIHN1aXZhbnRzIHBldXZlbnQg6nRyZQpwb3NpdGlvbm7pcyBkYW5zIHVuZSBzZWN0aW9uICdkZWZhdWx0cycgOgogIC0gbG9nIChsZSBwcmVtaWVyIGV0IGxlIHNlY29uZCkKICAtIG1vZGUgeyB0Y3AsIGh0dHAsIGhlYWx0aCB9CiAgLSBiYWxhbmNlIHsgcm91bmRyb2JpbiB9CiAgLSBkaXNhYmxlZCAocG91ciBk6XNhY3RpdmVyIHRvdXRlcyBsZXMgaW5zdGFuY2VzIHF1aSBzdWl2ZW50KQogIC0gZW5hYmxlZCAocG91ciBmYWlyZSBsJ29w6XJhdGlvbiBpbnZlcnNlLCBtYWlzIGMnZXN0IGxlIGNhcyBwYXIgZOlmYXV0KQogIC0gY29udGltZW91dCwgY2xpdGltZW91dCwgc3J2dGltZW91dCwgZ3JhY2UsIHJldHJpZXMsIG1heGNvbm4KICAtIG9wdGlvbiB7IHJlZGlzcGF0Y2gsIHRyYW5zcGFyZW50LCBrZWVwYWxpdmUsIGZvcndhcmRmb3IsIGxvZ2FzYXAsIGh0dHBjbG9zZSwKICAgICAgICAgICAgIGNoZWNrY2FjaGUsIGh0dHBsb2csIHRjcGxvZywgZG9udGxvZ251bGwsIHBlcnNpc3QsIGh0dHBjaGsgfQogIC0gcmVkaXNwYXRjaCwgcmVkaXNwLCB0cmFuc3BhcmVudCwgc291cmNlIHsgYWRkcjpwb3J0IH0KICAtIGNvb2tpZSwgY2FwdHVyZQogIC0gZXJyb3Jsb2MKCk5lIHNvbnQgcGFzIHN1cHBvcnTpcyBkYW5zIGNldHRlIHZlcnNpb24sIGxlcyBhZHJlc3NlcyBkZSBkaXNwYXRjaCBldCBsZXMKY29uZmlndXJhdGlvbnMgZGUgc2VydmV1cnMsIGFpbnNpIHF1ZSB0b3VzIGxlcyBmaWx0cmVzIGJhc+lzIHN1ciBsZXMKZXhwcmVzc2lvbnMgculndWxp6HJlcyA6CiAgLSBkaXNwYXRjaCwgc2VydmVyLAogIC0gcmVxKiwgcnNwKgoKRW5maW4sIGlsIG4neSBhIHBhcyBsZSBtb3llbiwgcG91ciBsZSBtb21lbnQsIGQnaW52YWxpZGVyIHVuIHBhcmFt6HRyZSBib29s6WVuCnBvc2l0aW9ubukgcGFyIGTpZmF1dC4gRG9uYyBzaSB1bmUgb3B0aW9uIGVzdCBzcOljaWZp6WUgZGFucyBsZXMgcGFyYW3odHJlcyBwYXIKZOlmYXV0LCBsZSBzZXVsIG1veWVuIGRlIGxhIGTpc2FjdGl2ZXIgcG91ciB1bmUgaW5zdGFuY2UsIGMnZXN0IGRlIGNoYW5nZXIgbGVzCnBhcmFt6HRyZXMgcGFyIGTpZmF1dCBhdmFudCBsYSBk6WNsYXJhdGlvbiBkZSBsJ2luc3RhbmNlLgoKRXhlbXBsZXMgOgotLS0tLS0tLS0tCiAgICBkZWZhdWx0cyBhcHBsaWNhdGlvbnMgVENQCiAgICAgICAgbG9nIGdsb2JhbAogICAgICAgIG1vZGUgdGNwCiAgICAgICAgYmFsYW5jZSByb3VuZHJvYmluCiAgICAgICAgY2xpdGltZW91dCAxODAwMDAKICAgICAgICBzcnZ0aW1lb3V0IDE4MDAwMAogICAgICAgIGNvbnRpbWVvdXQgNDAwMAogICAgICAgIHJldHJpZXMgMwogICAgICAgIHJlZGlzcGF0Y2gKCiAgICBsaXN0ZW4gYXBwX3RjcDEgMTAuMC4wLjE6NjAwMC02MDYzCiAgICAgICAgc2VydmVyIHNydjEgMTkyLjE2OC4xLjEgY2hlY2sgcG9ydCA2MDAwIGludGVyIDEwMDAwCiAgICAgICAgc2VydmVyIHNydjIgMTkyLjE2OC4xLjIgYmFja3VwCgogICAgbGlzdGVuIGFwcF90Y3AyIDEwLjAuMC4yOjYwMDAtNjA2MwogICAgICAgIHNlcnZlciBzcnYxIDE5Mi4xNjguMi4xIGNoZWNrIHBvcnQgNjAwMCBpbnRlciAxMDAwMAogICAgICAgIHNlcnZlciBzcnYyIDE5Mi4xNjguMi4yIGJhY2t1cAogICAgCiAgICBkZWZhdWx0cyBhcHBsaWNhdGlvbnMgSFRUUAogICAgICAgIGxvZyBnbG9iYWwKICAgICAgICBtb2RlIGh0dHAKICAgICAgICBvcHRpb24gaHR0cGxvZwogICAgICAgIG9wdGlvbiBmb3J3YXJkZm9yCiAgICAgICAgb3B0aW9uIGRvbnRsb2dudWxsCiAgICAgICAgYmFsYW5jZSByb3VuZHJvYmluCiAgICAgICAgY2xpdGltZW91dCAyMDAwMAogICAgICAgIHNydnRpbWVvdXQgMjAwMDAKICAgICAgICBjb250aW1lb3V0IDQwMDAKICAgICAgICByZXRyaWVzIDMKCiAgICBsaXN0ZW4gYXBwX2h0dHAxIDEwLjAuMC4xOjgwLTgxCiAgICAgICAgY29va2llIFNFUlZFUklEIHBvc3Rvbmx5IGluc2VydCBpbmRpcmVjdAogICAgICAgIGNhcHR1cmUgY29va2llIHVzZXJpZD0gbGVuIDEwCiAgICAgICAgc2VydmVyIHNydjEgMTkyLjE2OC4xLjE6KzgwMDAgY29va2llIHNydjEgY2hlY2sgcG9ydCA4MDgwIGludGVyIDEwMDAKICAgICAgICBzZXJ2ZXIgc3J2MSAxOTIuMTY4LjEuMjorODAwMCBjb29raWUgc3J2MiBjaGVjayBwb3J0IDgwODAgaW50ZXIgMTAwMAoKICAgIGRlZmF1bHRzCiAgICAgICAgIyBzZWN0aW9uIHZpZGUgcXVpIGFubnVsZSB0b3VzIGxlcyBwYXJhbeh0ZXMgcGFyIGTpZmF1dC4KCgo0LjgpIFJhcHBvcnQgZCfpdGF0IHNvdXMgZm9ybWUgZGUgcGFnZSBIVE1MCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KQXZlYyBsYSB2ZXJzaW9uIDEuMi4xNCwgaWwgZGV2aWVudCBwb3NzaWJsZSBwb3VyIGhhcHJveHkgZCdpbnRlcmNlcHRyZSBkZXMKcmVxdep0ZXMgcG91ciB1bmUgVVJJIHBhcnRpY3VsaehyZSBldCBkZSByZXRvdXJuZXIgdW4gcmFwcG9ydCBjb21wbGV0IGQn6XRhdCBkZQpsJ2FjdGl2aXTpIGR1IHByb3h5LCBldCBkZXMgc3RhdGlzdGlxdWVzIHN1ciBsZXMgc2VydmV1cnMuIENlY2kgZXN0IGRpc3BvbmlibGUKdmlhIGxlIG1vdCBjbOkgInN0YXRzIiBhc3NvY2npIOAgbidpbXBvcnRlIGxhcXVlbGxlIGRlIGNlcyBvcHRpb25zIDoKCiAgIC0gc3RhdHMgZW5hYmxlCiAgIC0gc3RhdHMgdXJpIDx1cmkgcHJlZml4PgogICAtIHN0YXRzIHJlYWxtIDxhdXRoZW50aWNhdGlvbiByZWFsbT4KICAgLSBzdGF0cyBhdXRoIDx1c2VyOnBhc3N3b3JkPgogICAtIHN0YXRzIHNjb3BlIDxwcm94eV9pZD4gfCAnLicKCgpQYXIgZOlmYXV0LCBsZSByYXBwb3J0IGVzdCBk6XNhY3RpdukuIExlIGZhaXQgZGUgc3DpY2lmaWVyIHVuZSBkZXMgY29tYmluYWlzaW9uCmNpLWRlc3N1cyBhY3RpdmUgbGUgcmFwcG9ydCBwb3VyIGwnaW5zdGFuY2UgZGUgcHJveHkgcXVpIGxlIHLpZulyZW5jZS4gTGEKc29sdXRpb24gbGEgcGx1cyBzaW1wbGUgZXN0IGQndXRpbGlzZXIgInN0YXRzIGVuYWJsZSIgcXVpIGFjdGl2ZXJhIGxlIHJhcHBvcnQKYXZlYyBsZXMgcGFyYW3odHJlcyBwYXIgZOlmYXV0IHN1aXZhbnQgOgoKICAgLSBkZWZhdWx0IFVSSSAgIDogIi9oYXByb3h5P3N0YXRzIiAgICAgICAgKENPTkZJR19TVEFUU19ERUZBVUxUX1VSSSkKICAgLSBkZWZhdWx0IGF1dGggIDogbm9uIHNw6WNpZmnpIChwYXMgZCdhdXRoZW50aWNhdGlvbikKICAgLSBkZWZhdWx0IHJlYWxtIDogIkhBUHJveHkgU3RhdGlzdGljcyIgICAgKENPTkZJR19TVEFUU19ERUZBVUxUX1JFQUxNKQogICAtIGRlZmF1bHQgc2NvcGUgOiBub24gc3BlY2lmaekgKGFjY+hzIOAgdG91dGVzIGxlcyBpbnN0YW5jZXMpCgpMJ29wdGlvbiAic3RhdHMgdXJpIDx1cmlfcHJlZml4PiIgcGVybWV0IGQnaW50ZXJjZXB0ZXIgdW4gYXV0cmUgcHLpZml4ZSBkJ1VSSQpxdWUgY2VsdWkgcGFyIGTpZmF1dC4gTm90ZXIgcXVlIG4naW1wb3J0ZSBxdWVsbGUgVVJJIHF1aSBDT01NRU5DRSBhdmVjIGNldHRlCmNoYe5uZSBzZXJhIHZhbGlk6WUuIFBhciBleGVtcGxlLCB1bmUgaW5zdGFuY2UgcG91cnJhaXQg6nRyZSBk6WRp6WUg4CBsYSBwYWdlCmQn6XRhdCBzZXVsZW1lbnQgZXQgculwb25kcmUg4CB0b3V0ZSBVUkkuCgpFeGFtcGxlIDoKLS0tLS0tLS0tCiAgICAjIGludGVyY2VwdGUgbidpbXBvcnRlIHF1ZWxsZSBVUkkgZXQgcmV0b3VybmUgbGEgcGFnZSBkJ+l0YXQuCiAgICBsaXN0ZW4gc3RhdHMgOjgwODAKICAgICAgICBtb2RlIGh0dHAKICAgICAgICBzdGF0cyB1cmkgLwoKCkwnb3B0aW9uICJzdGF0cyBhdXRoIDx1c2VyOnBhc3N3b3JkPiIgYWN0aXZlIGwnYXV0aGVudGlmaWNhdGlvbiAiQmFzaWMiIGV0CmFqb3V0ZSB1biBjb3VwbGUgInVzZXI6cGFzc3dvcmQiIHZhbGlkZSDgIGxhIGxpc3RlIGRlcyBjb21wdGVzIGF1dG9yaXPpcy4KTCd1dGlsaXNhdGV1ciA8dXNlcj4gZXQgbGUgbW90IGRlIHBhc3NlIDxwYXNzd29yZD4gZG9pdmVudCDqdHJlIHBy6WNpc+lzCmVuIGNsYWlyIGRhbnMgbGUgZmljaGllciBkZSBjb25maWd1cmF0aW9uLCBldCBjb21tZSBjZWNpIGVzdCBkZQpsJ2F1dGhlbnRpZmljYXRpb24gSFRUUCAiQmFzaWMiLCBpbCBmYXV0IOp0cmUgY29uc2NpZW50IHF1J2lscyB0cmFuc2l0ZW50IGVuCmNsYWlyIHN1ciBsZSBy6XNlYXUsIGRvbmMgaWwgbmUgZmF1dCBwYXMgdXRpbGlzZXIgZGUgY29tcHRlIHNlbnNpYmxlLiBMYSBsaXN0ZQplc3QgaWxsaW1pdOllIGRhbnMgbGUgYnV0IGRlIHBvdXZvaXIgZm91cm5pciBkZXMgYWNj6HMgZmFjaWxlbWVudCDgIGRlcwpk6XZlbG9wcGV1cnMgb3Ug4CBkZXMgY2xpZW50cy4KCkwnb3B0aW9uICJzdGF0cyByZWFsbSA8cmVhbG0+IiBk6WZpbml0IGxlICJkb21haW5lIiAoInJlYWxtIikgZGUgdmFsaWRpdOkgZHUKbW90IGRlIHBhc3NlIHF1aSBzZXJhIHBy6XNlbnTpIGRhbnMgbGEgYm/udGUgZGUgZGlhbG9ndWUgZHUgbmF2aWdhdGV1cgpsb3JzcXUnaWwgZGVtYW5kZXJhIHVuIGNvbXB0ZSB1dGlsaXNhdGV1ciBldCB1biBtb3QgZGUgcGFzc2UuIElsIGVzdCBpbXBvcnRhbnQKZGUgcydhc3N1cmVyIHF1ZSBjZWx1aS1jaSBzb2l0IGRpZmbpcmVudCBkZSBjZXV4IHV0aWxpc+lzIHBhciBsJ2FwcGxpY2F0aW9uLAphdXRyZW1lbnQgbGUgbmF2aWdhdGV1ciB0ZW50ZXJhIGQnZW4gdXRpbGlzZXIgdW4gY2FjaOkgZGVwdWlzIGwnYXBwbGljYXRpb24uCk5vdGVyIHF1ZSBsZXMgZXNwYWNlcyBkYW5zIGxlIG5vbSBkZSAicmVhbG0iIGRvaXZlbnQg6nRyZSBwcm906WfpcyBwYXIgdW4KYmFja3NsYXNoICgnXCcpLgoKTCdvcHRpb24gInN0YXRzIHNjb3BlIDxwcm94eV9pZD4iIGxpbWl0ZSBsYSBwb3J06WUgZHUgcmFwcG9ydCBkJ+l0YXQuIFBhcgpk6WZhdXQsIHRvdXRlcyBsZXMgaW5zdGFuY2VzIHByb3h5IHNvbnQgbGlzdOllcy4gTWFpcyBkYW5zIGNlcnRhaW5lcwpjaXJjb25zdGFuY2VzLCBpbCBzZXJhaXQgcHLpZulyYWJsZSBkZSBuZSBsaXN0ZXIgcXVlIGNlcnRhaW5zIHByb3hpZXMgb3UKc2ltcGxlbWVudCBsZSBwcm94eSBjb3VyYW50LiBDJ2VzdCBjZSBxdWUgZmFpdCBjZXR0ZSBvcHRpb24uIExlIG5vbSBzcOljaWFsICIuIgoodW4gc2ltcGxlIHBvaW50KSBy6WbpcmVuY2UgbGUgcHJveHkgY291cmFudC4gQ2V0dGUgb3B0aW9uIHBldXQg6nRyZSBy6XDpdOllCmF1dGFudCBkZSBmb2lzIHF1ZSBu6WNlc3NhaXJlIHBvdXIgYXV0b3Jpc2VyIGQnYXV0cmVzIHByb3hpZXMsIG3qbWUgcG91ciBkZXMKbm9tcyBy6WbpcmVuY+lzIHBsdXMgbG9pbiBkYW5zIGxhIGNvbmZpZ3VyYXRpb24gb3UgYmllbiBkZXMgbm9tcyBxdWkgbidleGlzdGVudApwYXMgZW5jb3JlLiBMZSBub20gcHLpY2lz6SBlc3QgY2VsdWkgcXVpIGFwcGFyYWl0IGFwcuhzIGxlIG1vdCBjbOkgImxpc3RlbiIuCgpFeGVtcGxlIDoKLS0tLS0tLS0tCiAgICAjIHNpbXBsZSBhcHBsaWNhdGlvbiBlbWJhcnF1YW50IGxhIHBhZ2UgZCfpdGF0IGF1dGhlbnRpZmnpZQogICAgbGlzdGVuIGFwcDEgMTkyLjE2OC4xLjEwMDo4MAogICAgICAgIG1vZGUgaHR0cAogICAgICAgIG9wdGlvbiBodHRwY2xvc2UKICAgICAgICBiYWxhbmNlIHJvdW5kcm9iaW4KICAgICAgICBjb29raWUgU0VSVkVSSUQgcG9zdG9ubHkgaW5zZXJ0IGluZGlyZWN0CiAgICAgICAgc2VydmVyIHNydjEgMTkyLjE2OC4xLjE6ODA4MCBjb29raWUgc3J2MSBjaGVjayBpbnRlciAxMDAwCiAgICAgICAgc2VydmVyIHNydjEgMTkyLjE2OC4xLjI6ODA4MCBjb29raWUgc3J2MiBjaGVjayBpbnRlciAxMDAwCiAgICAgICAgc3RhdHMgdXJpIC9teV9zdGF0cwogICAgICAgIHN0YXRzIHJlYWxtIFN0YXRpc3RpY3NcIGZvclwgTXlBcHAxLTIKICAgICAgICBzdGF0cyBhdXRoIGd1ZXN0Omd1ZXN0CiAgICAgICAgc3RhdHMgYXV0aCBhZG1pbjpBZE1pTjEyMwogICAgICAgIHN0YXRzIHNjb3BlIC4KICAgICAgICBzdGF0cyBzY29wZSBhcHAyCgogICAgIyBzaW1wbGUgYXBwbGljYXRpb24gZW1iYXJxdWFudCBsYSBwYWdlIGQn6XRhdCBzYW5zIGF1dGhlbnRpZmljYXRpb24KICAgIGxpc3RlbiBhcHAyIDE5Mi4xNjguMi4xMDA6ODAKICAgICAgICBtb2RlIGh0dHAKICAgICAgICBvcHRpb24gaHR0cGNsb3NlCiAgICAgICAgYmFsYW5jZSByb3VuZHJvYmluCiAgICAgICAgY29va2llIFNFUlZFUklEIHBvc3Rvbmx5IGluc2VydCBpbmRpcmVjdAogICAgICAgIHNlcnZlciBzcnYxIDE5Mi4xNjguMi4xOjgwODAgY29va2llIHNydjEgY2hlY2sgaW50ZXIgMTAwMAogICAgICAgIHNlcnZlciBzcnYxIDE5Mi4xNjguMi4yOjgwODAgY29va2llIHNydjIgY2hlY2sgaW50ZXIgMTAwMAogICAgICAgIHN0YXRzIHVyaSAvbXlfc3RhdHMKICAgICAgICBzdGF0cyByZWFsbSBTdGF0aXN0aWNzXCBmb3JcIE15QXBwMgogICAgICAgIHN0YXRzIHNjb3BlIC4KCiAgICBsaXN0ZW4gYWRtaW5fcGFnZSA6ODA4MAogICAgICAgIG1vZGUgaHR0cAogICAgICAgIHN0YXRzIHVyaSAvbXlfc3RhdHMKICAgICAgICBzdGF0cyByZWFsbSBHbG9iYWxcIHN0YXRpc3RpY3MKICAgICAgICBzdGF0cyBhdXRoIGFkbWluOkFkTWlOMTIzCgpOb3RlcyA6Ci0tLS0tLS0KICAtIGxlcyBvcHRpb25zICJzdGF0cyIgcGV1dmVudCBhdXNzaSDqdHJlIHNw6WNpZmnpZXMgZGFucyB1bmUgc2VjdGlvbgogICAgImRlZmF1bHRzIiwgYXVxdWVsIGNhcyBsYSBt6m1lIGNvbmZpZ3VyYXRpb24gZXhhY3RlbWVudCBzZXJhIGZvdXJuaWUg4AogICAgdG91dGVzIGxlcyBpbnN0YW5jZXMgc3VpdmFudGVzLCBkJ2/5IGwndXRpbGl06SBkdSBzY29wZSAiLiIuIFRvdXRlZm9pcywgc2kKICAgIHVuZSBpbnN0YW5jZSByZWTpZmluaXQgbidpbXBvcnRlIHF1ZWwgcGFyYW3odHJlICJzdGF0cyIsIGFsb3JzIGxlcyBk6WZhdXRzCiAgICBuZSBsdWkgc2Vyb250IHBhcyBhcHBsaXF16XMuCgogIC0gbCdhdXRoZW50aWZpY2F0aW9uICJCYXNpYyIgZXN0IHRy6HMgc2ltcGxpc3RlIGV0IG5vbiBz6WN1cmlz6WUgY29udHJlIGxhCiAgICBjYXB0dXJlIHLpc2VhdS4gQXVjdW4gbW90IGRlIHBhc3NlIHNlbnNpYmxlIG5lIGRvaXQg6nRyZSB1dGlsaXPpLCBldCBpbAogICAgZXN0IGJvbiBkZSBzYXZvaXIgcXUnaWwgbidleGlzdGUgcGFzIGRlIG1veWVuIGRlIGxlIHN1cHByaW1lciBkdSBuYXZpZ2F0ZXVyCiAgICBhcHLocyB1c2FnZSwgZG9uYyBpbCBzZXJhIGVudm956SB0ZWwgcXVlbCDgIGwnYXBwbGljYXRpb24gYXUgY291cnMgZGVzCiAgICBhY2PocyBzdWNjZXNzaWZzLgoKICAtIElsIGVzdCB0cuhzIGltcG9ydGFudCBkZSBwculjaXNlciBsJ29wdGlvbiAiaHR0cGNsb3NlIiwgc2lub24gbGUgcHJveHkgbmUKICAgIHNlcmEgcGFzIGVuIG1lc3VyZSBkZSBk6XRlY3RlciBsZXMgVVJJIGRhbnMgbGVzIHNlc3Npb25zIGtlZXAtYWxpdmUKICAgIG1haW50ZW51ZXMgZW50cmUgbGUgbmF2aWdhdGV1ciBldCBsZXMgc2VydmV1cnMsIGRvbmMgbGVzIFVSSSBkZSBzdGF0cwogICAgc2Vyb250IHRyYW5zbWlzZXMgdGVsbGVzIHF1ZWxsZXMgYXV4IHNlcnZldXJzIGNvbW1lIHNpIGwnb3B0aW9uIG4n6XRhaXQKICAgIHBhcyBwculjaXPpZS4KCgo1KSBMaXN0ZXMgZCdhY2Pocwo9PT09PT09PT09PT09PT09PQoKQXZlYyBsYSB2ZXJzaW9uIDEuMy4xMCwgdW4gbm91dmVhdSBjb25jZXB0IGRlIGxpc3RlcyBkJ2FjY+hzIChBQ0wpIGEgdnUgbGUKam91ci4gQ29tbWUgaWwgbifpdGFpdCBwYXMgbuljZXNzYWlyZSBkZSBy6WludmVudGVyIGxhIHJvdWUsIGV0IGR1IGZhaXQgcXVlCnRvdXRlcyBsZXMgculmbGV4aW9ucyBwYXNz6WVzIGFib3V0aXNzYWllbnQg4CBkZXMgcHJvcG9zaXRpb25zIG5vbgpzYXRpc2ZhaXNhbnRlcywgaWwgYSBmaW5hbGVtZW50IOl06SBk6WNpZOkgcXVlIHF1ZWxxdWUgY2hvc2UgZGUgcHJvY2hlIGRlIGNlCnF1ZSBTcXVpZCBvZmZyZSBzZXJhaXQgdW4gYm9uIGNvbXByb21pcyBlbnRyZSB1bmUgcmljaGVzc2UgZm9uY3Rpb25uZWxsZSBldCB1bmUKZmFjaWxpdOkgZCd1dGlsaXNhdGlvbgoKTGUgcHJpbmNpcGUgZXN0IHRy6HMgc2ltcGxlIDogbGVzIEFDTHMgc29udCBk6WNsYXLpZXMgYXZlYyB1biBub20sIHVuIHRlc3QgZXQKdW5lIGxpc3RlIGRlIHZhbGV1cnMgdmFsaWRlcyDgIHRlc3Rlci4gRGVzIGNvbmRpdGlvbnMgc29udCBhcHBsaXF16WVzIHN1cgpkaXZlcnNlcyBhY3Rpb25zLCBldCBjZXMgY29uZGl0aW9ucyBlZmZlY3R1ZW50IHVuIEVUIGxvZ2lxdWUgZW50cmUgbGVzIEFDTHMuIExhCmNvbmRpdGlvbiBuJ2VzdCBkb25jIHZhbGlk6WUgcXVlIHNpIHRvdXRlcyBsZXMgQUNMcyBzb250IHZyYWllcy4KCklsIGVzdCDpZ2FsZW1lbnQgcG9zc2libGUgZCd1dGlsaXNlciBsZSBtb3QgculzZXJ26SAiT1IiIGRhbnMgbGVzIGNvbmRpdGlvbnMsCmV0IGlsIGVzdCBwb3NzaWJsZSBwb3VyIHVuZSBBQ0wgZCfqdHJlIHNw6WNpZmnpZSBwbHVzaWV1cnMgZm9pcywgbeptZSBhdmVjIGRlcwp0ZXN0cyBkaWZm6XJlbnRzLCBhdXF1ZWwgY2FzIGxlIHByZW1pZXIgdGVzdCBy6XVzc2kgdmFsaWRlcmEgbCdBQ0wuCgpBdSBzdGFkZSBkZSBsYSB2ZXJzaW9uIDEuMy4xMiwgc2V1bHMgbGVzIHRlc3RzIHN1aXZhbnRzIG9udCDpdOkgaW1wbOltZW506XMgOgoKICAgTml2ZWF1eCAzLzQgOgogICAgIHNyYyAgICAgICA8aXB2NF9hZGRyZXNzPlsvbWFza10gLi4uIDogbWF0Y2ggSVB2NCBzb3VyY2UgYWRkcmVzcwogICAgIGRzdCAgICAgICA8aXB2NF9hZGRyZXNzPlsvbWFza10gLi4uIDogbWF0Y2ggSVB2NCBkZXN0aW5hdGlvbiBhZGRyZXNzCiAgICAgc3JjX3BvcnQgIDxyYW5nZT4gLi4uICAgICAgICAgICAgICAgOiBtYXRjaCBzb3VyY2UgcG9ydCByYW5nZQogICAgIGRzdF9wb3J0ICA8cmFuZ2U+IC4uLiAgICAgICAgICAgICAgIDogbWF0Y2ggZGVzdGluYXRpb24gcG9ydCByYW5nZQogICAgIGRzdF9jb25uICA8cmFuZ2U+IC4uLiAgICAgICAgICAgICAgIDogbWF0Y2ggI2Nvbm5lY3Rpb25zIG9uIGZyb250ZW5kCgogICBOaXZlYXUgNyA6CiAgICAgbWV0aG9kICAgIDxIVFRQIG1ldGhvZD4gLi4uICA6IG1hdGNoIEhUVFAgbWV0aG9kCiAgICAgcmVxX3ZlciAgIDwxLjB8MS4xPiAuLi4gICAgICA6IG1hdGNoIEhUVFAgcmVxdWVzdCB2ZXJzaW9uCiAgICAgcmVzcF92ZXIgIDwxLjB8MS4xPiAuLi4gICAgICA6IG1hdGNoIEhUVFAgcmVzcG9uc2UgdmVyc2lvbgogICAgIHN0YXR1cyAgICA8cmFuZ2U+IC4uLiAgICAgICAgOiBtYXRjaCBIVFRQIHJlc3BvbnNlIHN0YXR1cyBjb2RlIGluIHJhbmdlCiAgICAgdXJsICAgICAgIDxzdHJpbmc+IC4uLiA6IGV4YWN0IHN0cmluZyBtYXRjaCBvbiBVUkkKICAgICB1cmxfcmVnICAgPHJlZ2V4PiAgLi4uIDogcmVnZXggc3RyaW5nIG1hdGNoIG9uIFVSSQogICAgIHVybF9iZWcgICA8c3RyaW5nPiAuLi4gOiB0cnVlIGlmIFVSSSBiZWdpbnMgd2l0aCA8c3RyaW5nPgogICAgIHVybF9lbmQgICA8c3RyaW5nPiAuLi4gOiB0cnVlIGlmIFVSSSBlbmRzIHdpdGggPHN0cmluZz4KICAgICB1cmxfc3ViICAgPHN0cmluZz4gLi4uIDogdHJ1ZSBpZiBVUkkgY29udGFpbnMgPHN0cmluZz4KICAgICB1cmxfZGlyICAgPHN0cmluZz4gLi4uIDogdHJ1ZSBpZiBVUkkgY29udGFpbnMgPHN0cmluZz4gYmV0d2VlbiBzbGFzaGVzCiAgICAgdXJsX2RvbSAgIDxzdHJpbmc+IC4uLiA6IHRydWUgaWYgVVJJIGNvbnRhaW5zIDxzdHJpbmc+IGJldHdlZW4gc2xhc2hlcyBvciBkb3RzCgpVbmUgcGxhZ2UgKCdyYW5nZScpIGVzdCBjb25zdGl0dellIGQndW4gb3UgZGV1eCBlbnRpZXJzIHF1aSBwZXV2ZW50IOp0cmUKcHLpZml46XMgZCd1biBvcOlyYXRldXIuIExhIHN5bnRheGUgZXN0IDoKCiAgWzxvcD5dIDxtaW4+Wzo8bWF4Pl0KCkF2ZWMgPG9wPiBwb3V2YW50IOp0cmUgOgogICdlcScgOiBsYSB2YWxldXIgZG9pdCDpZ2FsZXIgPG1pbj4gb3Ug6nRyZSBjb21wcmlzZSBlbnRyZSA8bWluPiBldCA8bWF4PgogICdsZScgOiBsYSB2YWxldXIgZG9pdCDqdHJlIGluZulyaWV1cmUgb3Ug6WdhbGUg4CA8bWluPgogICdsdCcgOiBsYSB2YWxldXIgZG9pdCDqdHJlIHN0cmljdGVtZW50IGluZulyaWV1cmUg4CA8bWluPgogICdnZScgOiBsYSB2YWxldXIgZG9pdCDqdHJlIHN1cOlyaWV1cmUgb3Ug6WdhbGUg4CA8bWluPgogICdndCcgOiBsYSB2YWxldXIgZG9pdCDqdHJlIHN0cmljdGVtZW50IHN1cOlyaWV1cmUg4CA8bWluPgoKTG9yc3F1J2F1Y3VuIG9w6XJhdGV1ciBuJ2VzdCBk6WZpbmksICdlcScgZXN0IGVtcGxveekuIE5vdGVyIHF1ZSBsb3JzcXUndW4Kb3DpcmF0ZXVyIGVzdCBzcOljaWZp6SwgaWwgcydhcHBsaXF1ZSDgIHRvdXRlcyBsZXMgcGxhZ2VzIGRlIHZhbGV1cnMgc3VpdmFudGVzCmp1c3F1J+AgbGEgZmluIGRlIGxhIGxpZ25lIG91IGJpZW4ganVzcXUn4CBjZSBxdSd1biBub3V2ZWwgb3DpcmF0ZXVyIHNvaXQKcHLpY2lz6S4gRXhlbXBsZSA6CgogIGFjbCBzdGF0dXNfZXJyb3IgIHN0YXR1cyAgIDQwMDo1OTkKICBhY2wgc2F0dXJhdGVkX2ZydCBkc3RfY29ubiBnZSAxMDAwCiAgYWNsIGludmFsaWRfcG9ydHMgc3JjX3BvcnQgbHQgNTEyIGdlIDY1NTM1CgpEJ2F1dHJlcyB0ZXN0cyBhcnJpdmVudCAoZW506nRlcywgY29va2llcywgaGV1cmUsIGF1dGhlbnRpZmljYXRpb24pLCBjJ2VzdApqdXN0ZSB1bmUgcXVlc3Rpb24gZGUgdGVtcHMuIElsIGVzdCBhdXNzaSBwcul2dSBkZSBwZXJtZXR0cmUgZGUgbGlyZSBsZXMKdmFsZXVycyBkZXB1aXMgdW4gZmljaGllciwgYWluc2kgcXVlIGQnaWdub3JlciBsYSBjYXNzZSBwb3VyIGNlcnRhaW5zIHRlc3RzLgoKTGEgc2V1bGUgY29tbWFuZGUgc3VwcG9ydGFudCBsZXMgY29uZGl0aW9ucyBkJ0FDTCDgIGNlIGpvdXIgZXN0IGxhIG5vdXZlbGxlCmNvbW1hbmRlICJibG9jayIgcXVpIGJsb3F1ZSB1bmUgcmVxdep0ZSBldCByZXRvdXJuZSB1biBzdGF0dXQgNDAzIHNpIHNhCmNvbmRpdGlvbiBlc3QgdmFsaWTpZSAoY2FzIGR1ICJpZiIpIG91IGludmFsaWTpZSAoY2FzIGR1ICJ1bmxlc3MiKS4KCkV4ZW1wbGUgOgotLS0tLS0tLS0KCiAgICBhY2wgb3B0aW9uc191cmlzICB1cmwgKgogICAgYWNsIG1ldGhfb3B0aW9uICAgbWV0aG9kIE9QVElPTlMKICAgIGFjbCBodHRwXzEuMSAgICAgIHJlcV92ZXIgMS4xCiAgICBhY2wgYWxsb3dlZF9tZXRoICBtZXRob2QgR0VUIEhFQUQgUE9TVCBPUFRJT05TIENPTk5FQ1QKICAgIGFjbCBjb25uZWN0X21ldGggIG1ldGhvZCBDT05ORUNUCiAgICBhY2wgcHJveHlfdXJsICAgICB1cmxfYmVnIGh0dHA6Ly8KCiAgICAjIGJsb2NrIGlmIHJlc2VydmVkIFVSSSAiKiIgdXNlZCB3aXRoIGEgbWV0aG9kIG90aGVyIHRoYW4gIk9QVElPTlMiCiAgICBibG9jayBpZiBvcHRpb25zX3VyaXMgIW1ldGhfb3B0aW9uCgogICAgIyBibG9jayBpZiB0aGUgT1BUSU9OUyBtZXRob2QgaXMgdXNlZCB3aXRoIEhUVFAgMS4wCiAgICBibG9jayBpZiBtZXRoX29wdGlvbiAhaHR0cF8xLjEKCiAgICAjIGFsbG93IG5vbi1wcm94eSB1cmwgd2l0aCBhbnl0aGluZyBidXQgdGhlIENPTk5FQ1QgbWV0aG9kCiAgICBibG9jayBpZiAhY29ubmVjdF9tZXRoICFwcm94eV91cmwKCiAgICAjIGJsb2NrIGFsbCB1bmtub3duIG1ldGhvZHMKICAgIGJsb2NrIHVubGVzcyBhbGxvd2VkX21ldGgKCk5vdGU6IENldHRlIGRvY3VtZW50YXRpb24gZXN0IGVtYnJ5b25uYWlyZSBtYWlzIGRvaXQgcGVybWV0dHJlIGRlIGTpbWFycmVyIGV0CnN1cnRvdXQgZCdhdmFuY2VyIHN1ciBsZSBwcm9qZXQgc2FucyDqdHJlIHRyb3AgcmFsZW50aSBwYXIgbGEgZG9jdW1lbnRhdGlvbi4KCgo9PT09PT09PT09PT09PT09PT09PT09PQp8IFBhcmFt6XRyYWdlIHN5c3TobWUgfAo9PT09PT09PT09PT09PT09PT09PT09PQoKU291cyBMaW51eCAyLjQKPT09PT09PT09PT09PT0KCi0tIGN1dCBoZXJlIC0tCiMhL2Jpbi9zaAojIHNldCB0aGlzIHRvIGFib3V0IDI1Ni80TSAoMTYzODQgZm9yIDI1Nk0gbWFjaGluZSkKTUFYRklMRVM9MTYzODQKZWNobyAkTUFYRklMRVMgPiAvcHJvYy9zeXMvZnMvZmlsZS1tYXgKdWxpbWl0IC1uICRNQVhGSUxFUwoKaWYgWyAtZSAvcHJvYy9zeXMvbmV0L2lwdjQvaXBfY29ubnRyYWNrX21heCBdOyB0aGVuCiAgICAgICAgZWNobyA2NTUzNiA+IC9wcm9jL3N5cy9uZXQvaXB2NC9pcF9jb25udHJhY2tfbWF4CmZpCgppZiBbIC1lIC9wcm9jL3N5cy9uZXQvaXB2NC9uZXRmaWx0ZXIvaXBfY3RfdGNwX3RpbWVvdXRfZmluX3dhaXQgXTsgdGhlbgogICAgICAgICMgMzAgc2Vjb25kcyBmb3IgZmluLCAxNSBmb3IgdGltZSB3YWl0CiAgICAgICAgZWNobyAzMDAwID4gL3Byb2Mvc3lzL25ldC9pcHY0L25ldGZpbHRlci9pcF9jdF90Y3BfdGltZW91dF9maW5fd2FpdAogICAgICAgIGVjaG8gMTUwMCA+IC9wcm9jL3N5cy9uZXQvaXB2NC9uZXRmaWx0ZXIvaXBfY3RfdGNwX3RpbWVvdXRfdGltZV93YWl0CiAgICAgICAgZWNobyAwID4gL3Byb2Mvc3lzL25ldC9pcHY0L25ldGZpbHRlci9pcF9jdF90Y3BfbG9nX2ludmFsaWRfc2NhbGUKICAgICAgICBlY2hvIDAgPiAvcHJvYy9zeXMvbmV0L2lwdjQvbmV0ZmlsdGVyL2lwX2N0X3RjcF9sb2dfb3V0X29mX3dpbmRvdwpmaQoKZWNobyAxMDI0IDYwOTk5ID4gL3Byb2Mvc3lzL25ldC9pcHY0L2lwX2xvY2FsX3BvcnRfcmFuZ2UKZWNobyAzMCA+IC9wcm9jL3N5cy9uZXQvaXB2NC90Y3BfZmluX3RpbWVvdXQKZWNobyA0MDk2ID4gL3Byb2Mvc3lzL25ldC9pcHY0L3RjcF9tYXhfc3luX2JhY2tsb2cKZWNobyAyNjIxNDQgPiAvcHJvYy9zeXMvbmV0L2lwdjQvdGNwX21heF90d19idWNrZXRzCmVjaG8gMjYyMTQ0ID4gL3Byb2Mvc3lzL25ldC9pcHY0L3RjcF9tYXhfb3JwaGFucwplY2hvIDMwMCA+IC9wcm9jL3N5cy9uZXQvaXB2NC90Y3Bfa2VlcGFsaXZlX3RpbWUKZWNobyAxID4gL3Byb2Mvc3lzL25ldC9pcHY0L3RjcF90d19yZWN5Y2xlCmVjaG8gMCA+IC9wcm9jL3N5cy9uZXQvaXB2NC90Y3BfdGltZXN0YW1wcwplY2hvIDAgPiAvcHJvYy9zeXMvbmV0L2lwdjQvdGNwX2VjbgplY2hvIDEgPiAvcHJvYy9zeXMvbmV0L2lwdjQvdGNwX3NhY2sKZWNobyAwID4gL3Byb2Mvc3lzL25ldC9pcHY0L3RjcF9kc2FjawoKIyBhdXRvLXR1bmVkIG9uIDIuNAojZWNobyAyNjIxNDMgPiAvcHJvYy9zeXMvbmV0L2NvcmUvcm1lbV9tYXgKI2VjaG8gMjYyMTQzID4gL3Byb2Mvc3lzL25ldC9jb3JlL3JtZW1fZGVmYXVsdAoKZWNobyAxNjM4NCA2NTUzNiA1MjQyODggPiAvcHJvYy9zeXMvbmV0L2lwdjQvdGNwX3JtZW0KZWNobyAxNjM4NCAzNDk1MjAgNjk5MDQwID4gL3Byb2Mvc3lzL25ldC9pcHY0L3RjcF93bWVtCgotLSBjdXQgaGVyZSAtLQoKU291cyBGcmVlQlNECj09PT09PT09PT09PQoKVW4gcG9ydCBkZSBIQS1Qcm94eSBzb3VzIEZyZWVCU0QgZXN0IGTpc29ybWFpcyBkaXNwb25pYmxlLCBncuJjZSDgCkNsZW1lbnQgTGFmb3JldCA8c2hlZXBraWxsZXJAY3VsdGRlYWRzaGVlcC5vcmc+LgoKUG91ciBwbHVzIGQnaW5mb3JtYXRpb25zIDoKaHR0cDovL3d3dy5mcmVlYnNkLm9yZy9jZ2kvdXJsLmNnaT9wb3J0cy9uZXQvaGFwcm94eS9wa2ctZGVzY3IKaHR0cDovL3d3dy5mcmVlYnNkLm9yZy9jZ2kvY3Zzd2ViLmNnaS9wb3J0cy9uZXQvaGFwcm94eS8KaHR0cDovL3d3dy5mcmVzaHBvcnRzLm9yZy9uZXQvaGFwcm94eQoKCi0tIGZpbiAtLQo=