Mw0NCgxae2P/pgEA4wAAAAAAAAAAAAAAAGcAAABAAAAAc6IIAABkAFoAZAFkAmwBbQJaAgEAZAFkA2wDWgNkAWQDbARaBGQBZANsBVoFZAFkA2wGWgZkAWQDbAdaB2QBZANsCFoIZAFkA2wJWglkAWQDbApaCmQBZANsC1oLZAFkA2wMWgxkAWQDbA1aDWQBZANsDloOZAFkA2wPWg9kAWQDbBBaEGQBZANsEVoRZAFkA2wSWhJkAWQDbBNaFGQBZANsFVoVZAFkA2wWWhZkAWQDbBdaF2QBZANsGFoYZAFkA2wZWhlkAWQDbBpaGmQBZANsG1obZAFkBGwObRxaHAEAeQxkAWQDbB1aHVcAbh4EAGUeawqQAXIGAQABAAEAZAFkA2wfWh1ZAG4CWAB5CGUgAQBXAG4aBABlIWsKkAFyKgEAAQABAGUiWiBZAG4CWABkAWQFbCNtJFokAQBkAWQGbCVtJlombSdaJ20oWigBAGQBZAdsBG0pWikBAHkcZAFkCGwEbSpaKm0rWittLFosAQBkCVotVwBuGgQAZR5rCpABco4BAAEAAQBkClotWQBuAlgAZAFkC2wEbS5aLwEAZAFkDGwwbTFaMW0yWjIBAHkUZAFkA2wzajRaNWU1ajYBAFcAbhoEAGUeawqQAXLaAQABAAEAZANaNVkAbgJYAGQNZA5sN204WjgBAGQBZA9sI205WjkBAGQBZBBsI206WjoBAGU7ZBGDAQEAZTtkEoMBAQBlO2QTgwEBAGU7ZBSDAQEAZTxaPWT+ZQNqPgQAAwBrAJACbzpk/2sAbgQCAAEAkAJySmU/ZBeDAYIBZSRqQJACclpkA1pBZANaQmQDWkNkA1pEZANaRWQDWkZkA1pHZANaSGQDWklkA1pKZANaS2QDWkxkA1pNZANaTmQDWk9kA1pQZANaUWQDWlJkA1pTRwBkGGQZhABkGWVUgwNaVWQaZBuEAFpWaQBaV2QcZB2EAFpYZB5kH4QAWllkIGQhhABaWmQiZCOEAFpbZCRkJYQAWlxkJmQnhABaXWQoZCmEAFpeZCpkK4QABABaX1pgZCxkLYQAWmFkLmQvZDBkMWQyZDNkNGQ1ZDZkN2Q4ZDlkOmQ7ZDxkPWQ+ZD9kQGRBZEJkQ2REZEVkRmRHZEhkSWRKZEtkTGRNZBlkTmQbZE9kUGRRZFJkU2RUZFVkVmRXZFhkWWRaZFtkXGRdZF5kX2RgZGFkYmRjZGRkZWRmZGdkaGRpZGpka2RsZG1kbmRvZHBkcWRyZ0daYkcAZHNkSYQAZEllY4MDWmRHAGR0ZEqEAGRKZWSDA1plRwBkdWR2hABkdmVlgwNaZkcAZHdkS4QAZEtlZIMDWmdHAGR4ZEyEAGRMZWSDA1poaQBaaWR5amplA2o+jgBaa2QVWmxkelptZA1abmQBWm+QAWQAWnBke2RthABacWR8ZDCEAFpyZwBmAWR9ZH6EAVpzZH9kgIQAWnRkgWSChABadWUHanZkg4MBWndlB2p2ZISDAVp4ZXVaeWSFZFKEAFp6ZIZkL4QAWntle1p8ZIdkMYQAWn1kiGQyhABafpABZAFkiWQzhAFaf2SKZDSEAFqARwBki2RghABkYIMCWoFHAGSMZGGEAGRhZYGDA1qCRwBkjWREhABkRIMCWoNHAGSOZI+EAGSPZYSDA1qFRwBkkGRDhABkQ4MCWoZlhlqHRwBkkWRNhABkTWU/gwNaiEcAZJJkRYQAZEWDAlqJZJNkQoQAWopklGRPhABai2SVZFCEAFqMZJZkVYQAWo1kl2RWhABajmSYZFeEAFqPkAFkAmSZZFiEAVqQRwBkmmRnhABkZ4MCWpFlcWWSZZGDAgEARwBkm2RohABkaGWRgwNak0cAZJxkaYQAZGllk4MDWpRllGqVgwABAEcAZJ1kZYQAZGVlkYMDWpZlloMAWpdHAGSeZJ+EAGSfZYSDA1qYRwBkoGShhABkoWWYgwNamUcAZKJkaoQAZGplk4MDWpplcWUKaptlmoMCAQBHAGSjZGKEAGRiZZaDA1qcRwBkpGRjhABkY2WUgwNanUcAZKVkZIQAZGRlmoMDWp5lWGSmaQBkp40CAQBkqGRrhABan5ABZANkqWQ/hAFaoJABZARkqmSrhAFaoWWfZQpqm2WhgwIBAJABZAVkrGSthAFaomWfZZJlooMCAQBkrmSvhABao5ABZAZksGSxhAFapGSyZLOEAFqlRwBktGS1hABktYMCWqZktmS3hABap2S4ZLmEAFqoZLpku4QAWqlkvGS9hABaqmWfZQ5qq2WkgwIBAGWsZTVkvoMCkAZysGWfZTVqrWWkgwIBAGVYZKZpAGS/jQIBAGVYZKZpAGTAjQIBAGTBZGyEAFquZMJkw4QAWq9kxGTFhABasGTGZDyEAFqxkAFkB2THZG6EAVqyZMhkyYQAWrNlrmUOaqtls4MCAQBlrmUKaptls4MCAQBlrGU1ZL6DApAHcixlrmU1aq1ls4MCAQBkymTLhABatGWuZZJltIMCAQBkzGRahABatWTNZM6EAFq2aQBmAWTPZNCEAVq3ZNFk0oQAWrhk02TUhABauWTVZNaEAFq6ZNdkU4QAWrtlB2p2ZNiDAWq8Wr1lB2p2ZNllB2q+ZQdqv0IAgwJqvFrARwBk2mRIhABkSIMCWsFk22TchABawmTdZN6EAFrDRwBk32RGhABkRoMCWsRHAGTgZOGEAGThZcSDA1rFRwBk4mTjhABk42XEgwNaxmXEZcVlxmTknANax2TlZOaEAFrIRwBk52TohABk6GXJgwNaymTpZE6EAFrLRwBk6mRHhABkR2U6asxqzYMDWs1k62TshABazmTtZO6EAFrPZO9kWYQAWtBk8GTxhABa0WTyZFSEAFrSZPNk9IQAWtNlC2rUZPVlVWQJZPaNAwEAZPdk+IQAWtVl1WXWgwBmAWT5ZPqEAYMBWtdl1WT7ZPyEAIMBWthHAGT9ZHCEAGRwZdmDA1raZANTACgIAQAAYVoCAAAKUGFja2FnZSByZXNvdXJjZSBBUEkKLS0tLS0tLS0tLS0tLS0tLS0tLS0KCkEgcmVzb3VyY2UgaXMgYSBsb2dpY2FsIGZpbGUgY29udGFpbmVkIHdpdGhpbiBhIHBhY2thZ2UsIG9yIGEgbG9naWNhbApzdWJkaXJlY3RvcnkgdGhlcmVvZi4gIFRoZSBwYWNrYWdlIHJlc291cmNlIEFQSSBleHBlY3RzIHJlc291cmNlIG5hbWVzCnRvIGhhdmUgdGhlaXIgcGF0aCBwYXJ0cyBzZXBhcmF0ZWQgd2l0aCBgYC9gYCwgKm5vdCogd2hhdGV2ZXIgdGhlIGxvY2FsCnBhdGggc2VwYXJhdG9yIGlzLiAgRG8gbm90IHVzZSBvcy5wYXRoIG9wZXJhdGlvbnMgdG8gbWFuaXB1bGF0ZSByZXNvdXJjZQpuYW1lcyBiZWluZyBwYXNzZWQgaW50byB0aGUgQVBJLgoKVGhlIHBhY2thZ2UgcmVzb3VyY2UgQVBJIGlzIGRlc2lnbmVkIHRvIHdvcmsgd2l0aCBub3JtYWwgZmlsZXN5c3RlbSBwYWNrYWdlcywKLmVnZyBmaWxlcywgYW5kIHVucGFja2VkIC5lZ2cgZmlsZXMuICBJdCBjYW4gYWxzbyB3b3JrIGluIGEgbGltaXRlZCB3YXkgd2l0aAouemlwIGZpbGVzIGFuZCB3aXRoIGN1c3RvbSBQRVAgMzAyIGxvYWRlcnMgdGhhdCBzdXBwb3J0IHRoZSBgYGdldF9kYXRhKClgYAptZXRob2QuCukAAAAAKQHaD2Fic29sdXRlX2ltcG9ydE4pAdoMZ2V0X2ltcG9ydGVyKQHaA3NpeCkD2gZ1cmxsaWLaA21hcNoGZmlsdGVyKQHaBXV0aW1lKQPaBW1rZGly2gZyZW5hbWXaBnVubGlua1RGKQHaBG9wZW4pAtoFaXNkaXLaBXNwbGl06QEAAAApAdoKcHkzMWNvbXBhdCkB2gxwbGF0Zm9ybWRpcnMpAdoJcGFja2FnaW5neh1waXAuX3ZlbmRvci5wYWNrYWdpbmcudmVyc2lvbnogcGlwLl92ZW5kb3IucGFja2FnaW5nLnNwZWNpZmllcnN6InBpcC5fdmVuZG9yLnBhY2thZ2luZy5yZXF1aXJlbWVudHN6HXBpcC5fdmVuZG9yLnBhY2thZ2luZy5tYXJrZXJz6QMAAADpBQAAAHofUHl0aG9uIDMuNSBvciBsYXRlciBpcyByZXF1aXJlZGMAAAAAAAAAAAAAAAABAAAAQAAAAHMQAAAAZQBaAWQAWgJkAVoDZAJTACkD2g1QRVA0NDBXYXJuaW5nemEKICAgIFVzZWQgd2hlbiB0aGVyZSBpcyBhbiBpc3N1ZSB3aXRoIGEgdmVyc2lvbiBvciBzcGVjaWZpZXIgbm90IGNvbXBseWluZyB3aXRoCiAgICBQRVAgNDQwLgogICAgTikE2ghfX25hbWVfX9oKX19tb2R1bGVfX9oMX19xdWFsbmFtZV9f2gdfX2RvY19fqQByGgAAAHIaAAAA+kEvdG1wL3BpcC1idWlsZC0xZmljb2o0cy9waXAvcGlwL192ZW5kb3IvcGtnX3Jlc291cmNlcy9fX2luaXRfXy5weXIVAAAAeAAAAHMCAAAACARyFQAAAGMBAAAAAAAAAAEAAAALAAAAQwAAAHMyAAAAeQx0AGoBagJ8AIMBUwAEAHQAagFqA2sKciwBAAEAAQB0AGoBagR8AIMBUwBYAGQAUwApAU4p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IG90aGVyIHBsYXRmb3JtIHdpdGggYSB2ZXJzaW9uIGluIGl0cwogICAgcGxhdGZvcm0gc3RyaW5ncywgdGhpcyBmdW5jdGlvbiBzaG91bGQgYmUgZXh0ZW5kZWQgYWNjb3JkaW5nbHkuCiAgICBO2gZkYXJ3aW56DG1hY29zeC0lcy0lc9oBLukCAAAAchMAAAApCdoSZ2V0X2J1aWxkX3BsYXRmb3Jt2hJtYWNvc1ZlcnNpb25TdHJpbmfaBW1hdGNo2gNzeXPaCHBsYXRmb3Jt2gRqb2lu2gxfbWFjb3N4X3ZlcnPaBWdyb3Vw2gpWYWx1ZUVycm9yKQLaBHBsYXTaAW1yGgAAAHIaAAAAchsAAADaFmdldF9zdXBwb3J0ZWRfcGxhdGZvcm2xAAAAcxAAAAAADQYBCgESAQIBJgEOAgYBcksAAADaB3JlcXVpcmXaCnJ1bl9zY3JpcHTaDGdldF9wcm92aWRlctoQZ2V0X2Rpc3RyaWJ1dGlvbtoQbG9hZF9lbnRyeV9wb2ludNoNZ2V0X2VudHJ5X21hcNoOZ2V0X2VudHJ5X2luZm/aEWl0ZXJfZW50cnlfcG9pbnRz2g9yZXNvdXJjZV9zdHJpbmfaD3Jlc291cmNlX3N0cmVhbdoRcmVzb3VyY2VfZmlsZW5hbWXaEHJlc291cmNlX2xpc3RkaXLaD3Jlc291cmNlX2V4aXN0c9oOcmVzb3VyY2VfaXNkaXLaEWRlY2xhcmVfbmFtZXNwYWNl2gt3b3JraW5nX3NldNoXYWRkX2FjdGl2YXRpb25fbGlzdGVuZXLaEmZpbmRfZGlzdHJpYnV0aW9uc9oTc2V0X2V4dHJhY3Rpb25fcGF0aNoRY2xlYW51cF9yZXNvdXJjZXPaEWdldF9kZWZhdWx0X2NhY2hl2gtFbnZpcm9ubWVudNoKV29ya2luZ1NldNoPUmVzb3VyY2VNYW5hZ2Vy2gxEaXN0cmlidXRpb27aC1JlcXVpcmVtZW502gpFbnRyeVBvaW502g9SZXNvbHV0aW9uRXJyb3LaD1ZlcnNpb25Db25mbGljdNoURGlzdHJpYnV0aW9uTm90Rm91bmTaDFVua25vd25FeHRyYdoPRXh0cmFjdGlvbkVycm9y2hJwYXJzZV9yZXF1aXJlbWVudHPaCXNhZmVfbmFtZdoMc2FmZV92ZXJzaW9u2gxnZXRfcGxhdGZvcm3aFGNvbXBhdGlibGVfcGxhdGZvcm1z2gt5aWVsZF9saW5lc9oOc3BsaXRfc2VjdGlvbnPaCnNhZmVfZXh0cmHaC3RvX2ZpbGVuYW1l2g5pbnZhbGlkX21hcmtlctoPZXZhbHVhdGVfbWFya2Vy2hBlbnN1cmVfZGlyZWN0b3J52g5ub3JtYWxpemVfcGF0aNoIRUdHX0RJU1TaC0JJTkFSWV9ESVNU2gtTT1VSQ0VfRElTVNoNQ0hFQ0tPVVRfRElTVNoMREVWRUxPUF9ESVNU2hFJTWV0YWRhdGFQcm92aWRlctoRSVJlc291cmNlUHJvdmlkZXLaDEZpbGVNZXRhZGF0YdoMUGF0aE1ldGFkYXRh2gtFZ2dNZXRhZGF0YdoNRW1wdHlQcm92aWRlctoOZW1wdHlfcHJvdmlkZXLaDE51bGxQcm92aWRlctoLRWdnUHJvdmlkZXLaD0RlZmF1bHRQcm92aWRlctoLWmlwUHJvdmlkZXLaD3JlZ2lzdGVyX2ZpbmRlctoacmVnaXN0ZXJfbmFtZXNwYWNlX2hhbmRsZXLaFHJlZ2lzdGVyX2xvYWRlcl90eXBl2hhmaXh1cF9uYW1lc3BhY2VfcGFja2FnZXNyAwAAANoeUGtnUmVzb3VyY2VzRGVwcmVjYXRpb25XYXJuaW5n2ghydW5fbWFpbtoWQXZhaWxhYmxlRGlzdHJpYnV0aW9uc2MAAAAAAAAAAAAAAAACAAAAQAAAAHMYAAAAZQBaAWQAWgJkAVoDZAJkA4QAWgRkBFMAKQVyZwAAAHouQWJzdHJhY3QgYmFzZSBmb3IgZGVwZW5kZW5jeSByZXNvbHV0aW9uIGVycm9yc2MBAAAAAAAAAAEAAAADAAAAQwAAAHMSAAAAfABqAGoBdAJ8AGoDgwEXAFMAKQFOKQTaCV9fY2xhc3NfX3IWAAAA2gRyZXBycjsAAAApAdoEc2VsZnIaAAAAchoAAAByGwAAANoIX19yZXByX1/+AAAAcwIAAAAAAXoYUmVzb2x1dGlvbkVycm9yLl9fcmVwcl9fTikFchYAAAByFwAAAHIYAAAAchkAAABykwAAAHIaAAAAchoAAAByGgAAAHIbAAAAcmcAAAD7AAAAcwQAAAAIAQQCYwAAAAAAAAAAAAAAAAMAAABAAAAAczwAAABlAFoBZABaAmQBWgNkAloEZQVkA2QEhACDAVoGZQVkBWQGhACDAVoHZAdkCIQAWghkCWQKhABaCWQLUwApDHJoAAAAeqoKICAgIEFuIGFscmVhZHktaW5zdGFsbGVkIHZlcnNpb24gY29uZmxpY3RzIHdpdGggdGhlIHJlcXVlc3RlZCB2ZXJzaW9uLgoKICAgIFNob3VsZCBiZSBpbml0aWFsaXplZCB3aXRoIHRoZSBpbnN0YWxsZWQgRGlzdHJpYnV0aW9uIGFuZCB0aGUgcmVxdWVzdGVkCiAgICBSZXF1aXJlbWVudC4KICAgIHoze3NlbGYuZGlzdH0gaXMgaW5zdGFsbGVkIGJ1dCB7c2VsZi5yZXF9IGlzIHJlcXVpcmVkYwEAAAAAAAAAAQAAAAIAAABDAAAAcwoAAAB8AGoAZAEZAFMAKQJOcgEAAAApAXI7AAAAKQFykgAAAHIaAAAAchoAAAByGwAAANoEZGlzdAwBAABzAgAAAAACehRWZXJzaW9uQ29uZmxpY3QuZGlzdGMBAAAAAAAAAAEAAAACAAAAQwAAAHMKAAAAfABqAGQBGQBTACkCTnIPAAAAKQFyOwAAACkBcpIAAAByGgAAAHIaAAAAchsAAADaA3JlcRABAABzAgAAAAACehNWZXJzaW9uQ29uZmxpY3QucmVxYwEAAAAAAAAAAQAAAAMAAABDAAAAcxAAAAB8AGoAagFmAHQCgwCOAVMAKQFOKQPaCV90ZW1wbGF0ZdoGZm9ybWF02gZsb2NhbHMpAXKSAAAAchoAAAByGgAAAHIbAAAA2gZyZXBvcnQUAQAAcwIAAAAAAXoWVmVyc2lvbkNvbmZsaWN0LnJlcG9ydGMCAAAAAAAAAAMAAAACAAAAQwAAAHMcAAAAfAFzCHwAUwB8AGoAfAFmARcAfQJ0AXwCjgBTACkBenQKICAgICAgICBJZiByZXF1aXJlZF9ieSBpcyBub24tZW1wdHksIHJldHVybiBhIHZlcnNpb24gb2Ygc2VsZiB0aGF0IGlzIGEKICAgICAgICBDb250ZXh0dWFsVmVyc2lvbkNvbmZsaWN0LgogICAgICAgICkCcjsAAADaGUNvbnRleHR1YWxWZXJzaW9uQ29uZmxpY3QpA3KSAAAA2gtyZXF1aXJlZF9ieXI7AAAAchoAAAByGgAAAHIbAAAA2gx3aXRoX2NvbnRleHQXAQAAcwgAAAAABQQBBAEMAXocVmVyc2lvbkNvbmZsaWN0LndpdGhfY29udGV4dE4pCnIWAAAAchcAAAByGAAAAHIZAAAAcpYAAADaCHByb3BlcnR5cpQAAABylQAAAHKZAAAAcpwAAAByGgAAAHIaAAAAchoAAAByGwAAAHJoAAAAAgEAAHMMAAAACAYEAgQCDAQMBAgDYwAAAAAAAAAAAAAAAAMAAABAAAAAcyYAAABlAFoBZABaAmQBWgNlBGoFZAIXAFoFZQZkA2QEhACDAVoHZAVTACkGcpoAAAB6hQogICAgQSBWZXJzaW9uQ29uZmxpY3QgdGhhdCBhY2NlcHRzIGEgdGhpcmQgcGFyYW1ldGVyLCB0aGUgc2V0IG9mIHRoZQogICAgcmVxdWlyZW1lbnRzIHRoYXQgcmVxdWlyZWQgdGhlIGluc3RhbGxlZCBEaXN0cmlidXRpb24uCiAgICB6FiBieSB7c2VsZi5yZXF1aXJlZF9ieX1jAQAAAAAAAAABAAAAAgAAAEMAAABzCgAAAHwAagBkARkAUwApAk5yPwAAACkBcjsAAAApAXKSAAAAchoAAAByGgAAAHIbAAAAcpsAAAAqAQAAcwIAAAAAAnolQ29udGV4dHVhbFZlcnNpb25Db25mbGljdC5yZXF1aXJlZF9ieU4pCHIWAAAAchcAAAByGAAAAHIZAAAAcmgAAABylgAAAHKdAAAAcpsAAAByGgAAAHIaAAAAchoAAAByGwAAAHKaAAAAIgEAAHMGAAAACAQEAgoCcpoAAABjAAAAAAAAAAAAAAAAAwAAAEAAAABzSAAAAGUAWgFkAFoCZAFaA2QCWgRlBWQDZASEAIMBWgZlBWQFZAaEAIMBWgdlBWQHZAiEAIMBWghkCWQKhABaCWQLZAyEAFoKZA1TACkOcmkAAAB6JkEgcmVxdWVzdGVkIGRpc3RyaWJ1dGlvbiB3YXMgbm90IGZvdW5kelNUaGUgJ3tzZWxmLnJlcX0nIGRpc3RyaWJ1dGlvbiB3YXMgbm90IGZvdW5kIGFuZCBpcyByZXF1aXJlZCBieSB7c2VsZi5yZXF1aXJlcnNfc3RyfWMBAAAAAAAAAAEAAAACAAAAQwAAAHMKAAAAfABqAGQBGQBTACkCTnIBAAAAKQFyOwAAACkBcpIAAAByGgAAAHIaAAAAchsAAABylQAAADUBAABzAgAAAAACehhEaXN0cmlidXRpb25Ob3RGb3VuZC5yZXFjAQAAAAAAAAABAAAAAgAAAEMAAABzCgAAAHwAagBkARkAUwApAk5yDwAAACkBcjsAAAApAXKSAAAAchoAAAByGgAAAHIbAAAA2glyZXF1aXJlcnM5AQAAcwIAAAAAAnoeRGlzdHJpYnV0aW9uTm90Rm91bmQucmVxdWlyZXJzYwEAAAAAAAAAAQAAAAIAAABDAAAAcxYAAAB8AGoAcwpkAVMAZAJqAXwAagCDAVMAKQNOeg90aGUgYXBwbGljYXRpb256AiwgKQJyngAAAHJFAAAAKQFykgAAAHIaAAAAchoAAAByGwAAANoNcmVxdWlyZXJzX3N0cj0BAABzBgAAAAACBgEEAXoiRGlzdHJpYnV0aW9uTm90Rm91bmQucmVxdWlyZXJzX3N0cmMBAAAAAAAAAAEAAAADAAAAQwAAAHMQAAAAfABqAGoBZgB0AoMAjgFTACkBTikDcpYAAABylwAAAHKYAAAAKQFykgAAAHIaAAAAchoAAAByGwAAAHKZAAAAQwEAAHMCAAAAAAF6G0Rpc3RyaWJ1dGlvbk5vdEZvdW5kLnJlcG9ydGMBAAAAAAAAAAEAAAABAAAAQwAAAHMIAAAAfABqAIMAUwApAU4pAXKZAAAAKQFykgAAAHIaAAAAchoAAAByGwAAANoHX19zdHJfX0YBAABzAgAAAAABehxEaXN0cmlidXRpb25Ob3RGb3VuZC5fX3N0cl9fTikLchYAAAByFwAAAHIYAAAAchkAAABylgAAAHKdAAAAcpUAAAByngAAAHKfAAAAcpkAAAByoAAAAHIaAAAAchoAAAByGgAAAHIbAAAAcmkAAAAvAQAAcw4AAAAIAQQCBAMMBAwEDAYIA2MAAAAAAAAAAAAAAAABAAAAQAAAAHMQAAAAZQBaAWQAWgJkAVoDZAJTACkDcmoAAAB6PkRpc3RyaWJ1dGlvbiBkb2Vzbid0IGhhdmUgYW4gImV4dHJhIGZlYXR1cmUiIG9mIHRoZSBnaXZlbiBuYW1lTikEchYAAAByFwAAAHIYAAAAchkAAAByGgAAAHIaAAAAchoAAAByGwAAAHJqAAAASgEAAHMCAAAACAF6BXt9Lnt9cj8AAABjAgAAAAAAAAACAAAAAwAAAEMAAABzDAAAAHwBdAB8ADwAZAFTACkCYQ8BAABSZWdpc3RlciBgcHJvdmlkZXJfZmFjdG9yeWAgdG8gbWFrZSBwcm92aWRlcnMgZm9yIGBsb2FkZXJfdHlwZWAKCiAgICBgbG9hZGVyX3R5cGVgIGlzIHRoZSB0eXBlIG9yIGNsYXNzIG9mIGEgUEVQIDMwMiBgYG1vZHVsZS5fX2xvYWRlcl9fYGAsCiAgICBhbmQgYHByb3ZpZGVyX2ZhY3RvcnlgIGlzIGEgZnVuY3Rpb24gdGhhdCwgcGFzc2VkIGEgKm1vZHVsZSogb2JqZWN0LAogICAgcmV0dXJucyBhbiBgYElSZXNvdXJjZVByb3ZpZGVyYGAgZm9yIHRoYXQgbW9kdWxlLgogICAgTikB2hNfcHJvdmlkZXJfZmFjdG9yaWVzKQLaC2xvYWRlcl90eXBl2hBwcm92aWRlcl9mYWN0b3J5choAAAByGgAAAHIbAAAAcosAAABYAQAAcwIAAAAAB2MBAAAAAAAAAAMAAAAMAAAAQwAAAHN0AAAAdAB8AHQBgwJyJHQCagN8AIMBcCJ0BHQFfACDAYMBZAEZAFMAeQ50BmoHfAAZAH0BVwBuJgQAdAhrCnJYAQABAAEAdAl8AIMBAQB0BmoHfAAZAH0BWQBuAlgAdAp8AWQCZAODA30CdAt0DHwCgwJ8AYMBUwApBHo/UmV0dXJuIGFuIElSZXNvdXJjZVByb3ZpZGVyIGZvciB0aGUgbmFtZWQgbW9kdWxlIG9yIHJlcXVpcmVtZW50cgEAAADaCl9fbG9hZGVyX19OKQ3aCmlzaW5zdGFuY2VyZQAAAHJbAAAA2gRmaW5kckwAAADaA3N0cnJDAAAA2gdtb2R1bGVz2ghLZXlFcnJvctoKX19pbXBvcnRfX9oHZ2V0YXR0ctoNX2ZpbmRfYWRhcHRlcnKhAAAAKQPaC21vZHVsZU9yUmVx2gZtb2R1bGXaBmxvYWRlcnIaAAAAchoAAAByGwAAAHJOAAAAYgEAAHMSAAAAAAIKARoBAgEOAQ4BCAEQAQwBYwEAAAAAAAAABAAAAAMAAABDAAAAc2QAAAB8AHNcdABqAYMAZAEZAH0BfAFkAmsCckxkA30CdAJqA2oEfAKDAXJMdAV0BmQEgwJyTHQGagd8AoMBfQNkBXwDawZyTHwDZAUZAH0BfABqCHwBaglkBoMBgwEBAHwAZAEZAFMAKQdOcgEAAADaAHowL1N5c3RlbS9MaWJyYXJ5L0NvcmVTZXJ2aWNlcy9TeXN0ZW1WZXJzaW9uLnBsaXN02glyZWFkUGxpc3TaDlByb2R1Y3RWZXJzaW9ucj4AAAApCnJEAAAA2gdtYWNfdmVy2gJvc9oEcGF0aNoGZXhpc3Rz2gdoYXNhdHRy2ghwbGlzdGxpYnKxAAAA2gZhcHBlbmRyDgAAACkE2gZfY2FjaGVyHAAAANoFcGxpc3TaDXBsaXN0X2NvbnRlbnRyGgAAAHIaAAAAchsAAAByRgAAAG8BAABzFgAAAAABBAEMAggBBAEMAQoBCgEIAQgCEAFyRgAAAGMBAAAAAAAAAAEAAAADAAAAQwAAAHMSAAAAZAFkAWQCnAJqAHwAfACDAlMAKQNO2gNwcGMpAtoHUG93ZXJQQ9oPUG93ZXJfTWFjaW50b3NoKQHaA2dldCkB2gdtYWNoaW5lchoAAAByGgAAAHIbAAAA2gxfbWFjb3N4X2FyY2h/AQAAcwIAAAAAAXLCAAAAYwAAAAAAAAAABAAAAAsAAABDAAAAc34AAABkAWQCbABtAX0AAQB8AIMAfQF0AmoDZANrAnJ6fAFqBGQEgwEMAHJ6eTx0BYMAfQJ0BmoHgwBkBRkAaghkBmQHgwJ9A2QIdAl8AmQBGQCDAXQJfAJkCRkAgwF0CnwDgwFmAxYAUwAEAHQLawpyeAEAAQABAFkAbgJYAHwBUwApCnrEUmV0dXJuIHRoaXMgcGxhdGZvcm0ncyBzdHJpbmcgZm9yIHBsYXRmb3JtLXNwZWNpZmljIGRpc3RyaWJ1dGlvbnMKCiAgICBYWFggQ3VycmVudGx5IHRoaXMgaXMgdGhlIHNhbWUgYXMgYGBkaXN0dXRpbHMudXRpbC5nZXRfcGxhdGZvcm0oKWBgLCBidXQgaXQKICAgIG5lZWRzIHNvbWUgaGFja3MgZm9yIExpbnV4IGFuZCBNYWMgT1MgWC4KICAgIHIBAAAAKQFybwAAAHI9AAAAegdtYWNvc3gt6QQAAAD6ASDaAV96D21hY29zeC0lZC4lZC0lc3IPAAAAKQzaCXN5c2NvbmZpZ3JvAAAAckMAAAByRAAAANoKc3RhcnRzd2l0aHJGAAAAcrQAAADaBXVuYW1l2gdyZXBsYWNl2gNpbnRywgAAAHJIAAAAKQRybwAAAHJJAAAAchwAAABywQAAAHIaAAAAchoAAAByGwAAAHJAAAAAgwEAAHMYAAAAAAYMAgYBFgECAQYBFAECARQBDAIOAwYBckAAAAB6GG1hY29zeC0oXGQrKVwuKFxkKyktKC4qKXofZGFyd2luLShcZCspXC4oXGQrKVwuKFxkKyktKC4qKWMCAAAAAAAAAAcAAAAEAAAAQwAAAHPoAAAAfABkAWsIcxh8AWQBawhzGHwAfAFrAnIcZAJTAHQAagF8AYMBfQJ8AnLkdABqAXwAgwF9A3wDc5R0AmoBfACDAX0EfARykHQDfARqBGQDgwGDAX0FZAR8AmoEZAODAXwCagRkBYMBZgIWAH0GfAVkBmsCcnx8BmQHawVzjHwFZAhrAnKQfAZkCWsFcpBkAlMAZApTAHwDagRkA4MBfAJqBGQDgwFrA3O8fANqBGQLgwF8AmoEZAuDAWsDcsBkClMAdAN8A2oEZAWDAYMBdAN8AmoEZAWDAYMBawRy4GQKUwBkAlMAZApTACkMettDYW4gY29kZSBmb3IgdGhlIGBwcm92aWRlZGAgcGxhdGZvcm0gcnVuIG9uIHRoZSBgcmVxdWlyZWRgIHBsYXRmb3JtPwoKICAgIFJldHVybnMgdHJ1ZSBpZiBlaXRoZXIgcGxhdGZvcm0gaXMgYGBOb25lYGAsIG9yIHRoZSBwbGF0Zm9ybXMgYXJlIGVxdWFsLgoKICAgIFhYWCBOZWVkcyBjb21wYXRpYmlsaXR5IGNoZWNrcyBmb3IgTGludXggYW5kIG90aGVyIHVuaXh5IE9TZXMuCiAgICBOVHIPAAAAegUlcy4lc3I/AAAA6QcAAAB6BDEwLjPpCAAAAHoEMTAuNEZyEwAAACkFckEAAAByQgAAANoTZGFyd2luVmVyc2lvblN0cmluZ3LKAAAAckcAAAApB9oIcHJvdmlkZWTaCHJlcXVpcmVk2gZyZXFNYWPaB3Byb3ZNYWPaCnByb3ZEYXJ3aW7aCGR2ZXJzaW9u2gxtYWNvc3ZlcnNpb25yGgAAAHIaAAAAchsAAABycAAAAKEBAABzKgAAAAAHGAIEAwoBBAEKAwQECgEEAQ4BGAEQARABBAIEAxQBFAEEAxwBBAIEA2MCAAAAAAAAAAQAAAADAAAAQwAAAHM8AAAAdABqAWQBgwFqAn0CfAJkAhkAfQN8AmoDgwABAHwDfAJkAjwAdAR8AIMBZAMZAGoFfAF8AoMCAQBkBFMAKQV6QExvY2F0ZSBkaXN0cmlidXRpb24gYGRpc3Rfc3BlY2AgYW5kIHJ1biBpdHMgYHNjcmlwdF9uYW1lYCBzY3JpcHRyDwAAAHIWAAAAcgEAAABOKQZyQwAAANoJX2dldGZyYW1l2glmX2dsb2JhbHNyNQAAAHJMAAAAck0AAAApBFoJZGlzdF9zcGVj2gtzY3JpcHRfbmFtZdoCbnPaBG5hbWVyGgAAAHIaAAAAchsAAAByTQAAAM8BAABzCgAAAAACDAEIAQgBCAFjAQAAAAAAAAABAAAAAwAAAEMAAABzQAAAAHQAfAB0AWoCgwJyFnQDagR8AIMBfQB0AHwAdAODAnIodAV8AIMBfQB0AHwAdAaDAnM8dAdkAXwAgwKCAXwAUwApAnpAUmV0dXJuIGEgY3VycmVudCBkaXN0cmlidXRpb24gb2JqZWN0IGZvciBhIFJlcXVpcmVtZW50IG9yIHN0cmluZ3otRXhwZWN0ZWQgc3RyaW5nLCBSZXF1aXJlbWVudCwgb3IgRGlzdHJpYnV0aW9uKQhypQAAAHIEAAAA2gxzdHJpbmdfdHlwZXNyZQAAANoFcGFyc2VyTgAAAHJkAAAA2glUeXBlRXJyb3IpAXKUAAAAchoAAAByGgAAAHIbAAAAck8AAADcAQAAcw4AAAAAAgwBCgEKAQgBCgEKAWMDAAAAAAAAAAMAAAADAAAAQwAAAHMQAAAAdAB8AIMBagF8AXwCgwJTACkBekRSZXR1cm4gYG5hbWVgIGVudHJ5IHBvaW50IG9mIGBncm91cGAgZm9yIGBkaXN0YCBvciByYWlzZSBJbXBvcnRFcnJvcikCck8AAAByUAAAACkDcpQAAAByRwAAAHLZAAAAchoAAAByGgAAAHIbAAAAclAAAADnAQAAcwIAAAAAAmMCAAAAAAAAAAIAAAACAAAAQwAAAHMOAAAAdAB8AIMBagF8AYMBUwApAXo9UmV0dXJuIHRoZSBlbnRyeSBwb2ludCBtYXAgZm9yIGBncm91cGAsIG9yIHRoZSBmdWxsIGVudHJ5IG1hcCkCck8AAAByUQAAACkCcpQAAAByRwAAAHIaAAAAchoAAAByGwAAAHJRAAAA7AEAAHMCAAAAAAJjAwAAAAAAAAADAAAAAwAAAEMAAABzEAAAAHQAfACDAWoBfAF8AoMCUwApAXo8UmV0dXJuIHRoZSBFbnRyeVBvaW50IG9iamVjdCBmb3IgYGdyb3VwYCtgbmFtZWAsIG9yIGBgTm9uZWBgKQJyTwAAAHJSAAAAKQNylAAAAHJHAAAActkAAAByGgAAAHIaAAAAchsAAAByUgAAAPEBAABzAgAAAAACYwAAAAAAAAAAAAAAAAIAAABAAAAAczwAAABlAFoBZABaAmQBZAKEAFoDZANkBIQAWgRkBWQGhABaBWQHZAiEAFoGZAlkCoQAWgdkC2QMhABaCGQNUwApDnJ+AAAAYwEAAAAAAAAAAQAAAAEAAABDAAAAcwQAAABkAVMAKQJ6O0RvZXMgdGhlIHBhY2thZ2UncyBkaXN0cmlidXRpb24gY29udGFpbiB0aGUgbmFtZWQgbWV0YWRhdGE/TnIaAAAAKQFy2QAAAHIaAAAAchoAAAByGwAAANoMaGFzX21ldGFkYXRh9wEAAHMAAAAAeh5JTWV0YWRhdGFQcm92aWRlci5oYXNfbWV0YWRhdGFjAQAAAAAAAAABAAAAAQAAAEMAAABzBAAAAGQBUwApAnonVGhlIG5hbWVkIG1ldGFkYXRhIHJlc291cmNlIGFzIGEgc3RyaW5nTnIaAAAAKQFy2QAAAHIaAAAAchoAAAByGwAAANoMZ2V0X21ldGFkYXRh+gEAAHMAAAAAeh5JTWV0YWRhdGFQcm92aWRlci5nZXRfbWV0YWRhdGFjAQAAAAAAAAABAAAAAQAAAEMAAABzBAAAAGQBUwApAnrSWWllbGQgbmFtZWQgbWV0YWRhdGEgcmVzb3VyY2UgYXMgbGlzdCBvZiBub24tYmxhbmsgbm9uLWNvbW1lbnQgbGluZXMKCiAgICAgICBMZWFkaW5nIGFuZCB0cmFpbGluZyB3aGl0ZXNwYWNlIGlzIHN0cmlwcGVkIGZyb20gZWFjaCBsaW5lLCBhbmQgbGluZXMKICAgICAgIHdpdGggYGAjYGAgYXMgdGhlIGZpcnN0IG5vbi1ibGFuayBjaGFyYWN0ZXIgYXJlIG9taXR0ZWQuTnIaAAAAKQFy2QAAAHIaAAAAchoAAAByGwAAANoSZ2V0X21ldGFkYXRhX2xpbmVz/QEAAHMAAAAAeiRJTWV0YWRhdGFQcm92aWRlci5nZXRfbWV0YWRhdGFfbGluZXNjAQAAAAAAAAABAAAAAQAAAEMAAABzBAAAAGQBUwApAno+SXMgdGhlIG5hbWVkIG1ldGFkYXRhIGEgZGlyZWN0b3J5PyAgKGxpa2UgYGBvcy5wYXRoLmlzZGlyKClgYClOchoAAAApAXLZAAAAchoAAAByGgAAAHIbAAAA2g5tZXRhZGF0YV9pc2RpcgMCAABzAAAAAHogSU1ldGFkYXRhUHJvdmlkZXIubWV0YWRhdGFfaXNkaXJjAQAAAAAAAAABAAAAAQAAAEMAAABzBAAAAGQBUwApAno/TGlzdCBvZiBtZXRhZGF0YSBuYW1lcyBpbiB0aGUgZGlyZWN0b3J5IChsaWtlIGBgb3MubGlzdGRpcigpYGApTnIaAAAAKQFy2QAAAHIaAAAAchoAAAByGwAAANoQbWV0YWRhdGFfbGlzdGRpcgYCAABzAAAAAHoiSU1ldGFkYXRhUHJvdmlkZXIubWV0YWRhdGFfbGlzdGRpcmMCAAAAAAAAAAIAAAABAAAAQwAAAHMEAAAAZAFTACkCej1FeGVjdXRlIHRoZSBuYW1lZCBzY3JpcHQgaW4gdGhlIHN1cHBsaWVkIG5hbWVzcGFjZSBkaWN0aW9uYXJ5TnIaAAAAKQJy1wAAANoJbmFtZXNwYWNlchoAAAByGgAAAHIbAAAAck0AAAAJAgAAcwAAAAB6HElNZXRhZGF0YVByb3ZpZGVyLnJ1bl9zY3JpcHROKQlyFgAAAHIXAAAAchgAAABy3QAAAHLeAAAAct8AAABy4AAAAHLhAAAAck0AAAByGgAAAHIaAAAAchoAAAByGwAAAHJ+AAAA9gEAAHMMAAAACAEIAwgDCAYIAwgDYwAAAAAAAAAAAAAAAAIAAABAAAAAc0AAAABlAFoBZABaAmQBWgNkAmQDhABaBGQEZAWEAFoFZAZkB4QAWgZkCGQJhABaB2QKZAuEAFoIZAxkDYQAWglkDlMAKQ9yfwAAAHozQW4gb2JqZWN0IHRoYXQgcHJvdmlkZXMgYWNjZXNzIHRvIHBhY2thZ2UgcmVzb3VyY2VzYwIAAAAAAAAAAgAAAAEAAABDAAAAcwQAAABkAVMAKQJ6ZFJldHVybiBhIHRydWUgZmlsZXN5c3RlbSBwYXRoIGZvciBgcmVzb3VyY2VfbmFtZWAKCiAgICAgICAgYG1hbmFnZXJgIG11c3QgYmUgYW4gYGBJUmVzb3VyY2VNYW5hZ2VyYGBOchoAAAApAtoHbWFuYWdlctoNcmVzb3VyY2VfbmFtZXIaAAAAchoAAAByGwAAANoVZ2V0X3Jlc291cmNlX2ZpbGVuYW1lEAIAAHMAAAAAeidJUmVzb3VyY2VQcm92aWRlci5nZXRfcmVzb3VyY2VfZmlsZW5hbWVjAgAAAAAAAAACAAAAAQAAAEMAAABzBAAAAGQBUwApAnppUmV0dXJuIGEgcmVhZGFibGUgZmlsZS1saWtlIG9iamVjdCBmb3IgYHJlc291cmNlX25hbWVgCgogICAgICAgIGBtYW5hZ2VyYCBtdXN0IGJlIGFuIGBgSVJlc291cmNlTWFuYWdlcmBgTnIaAAAAKQJy4wAAAHLkAAAAchoAAAByGgAAAHIbAAAA2hNnZXRfcmVzb3VyY2Vfc3RyZWFtFQIAAHMAAAAAeiVJUmVzb3VyY2VQcm92aWRlci5nZXRfcmVzb3VyY2Vfc3RyZWFtYwIAAAAAAAAAAgAAAAEAAABDAAAAcwQAAABkAVMAKQJ6bVJldHVybiBhIHN0cmluZyBjb250YWluaW5nIHRoZSBjb250ZW50cyBvZiBgcmVzb3VyY2VfbmFtZWAKCiAgICAgICAgYG1hbmFnZXJgIG11c3QgYmUgYW4gYGBJUmVzb3VyY2VNYW5hZ2VyYGBOchoAAAApAnLjAAAAcuQAAAByGgAAAHIaAAAAchsAAADaE2dldF9yZXNvdXJjZV9zdHJpbmcaAgAAcwAAAAB6JUlSZXNvdXJjZVByb3ZpZGVyLmdldF9yZXNvdXJjZV9zdHJpbmdjAQAAAAAAAAABAAAAAQAAAEMAAABzBAAAAGQBUwApAnosRG9lcyB0aGUgcGFja2FnZSBjb250YWluIHRoZSBuYW1lZCByZXNvdXJjZT9OchoAAAApAXLkAAAAchoAAAByGgAAAHIbAAAA2gxoYXNfcmVzb3VyY2UfAgAAcwAAAAB6HklSZXNvdXJjZVByb3ZpZGVyLmhhc19yZXNvdXJjZWMBAAAAAAAAAAEAAAABAAAAQwAAAHMEAAAAZAFTACkCej5JcyB0aGUgbmFtZWQgcmVzb3VyY2UgYSBkaXJl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IHN1cHBsaWVkLAogICAgICAgIHdpbGwgYmUgaW52b2tlZCB3aXRoIGVhY2ggcmVxdWlyZW1lbnQgdGhhdCBjYW5ub3QgYmUgbWV0IGJ5IGFuCiAgICAgICAgYWxyZWFkeS1pbnN0YWxsZWQgZGlzdHJpYnV0aW9uOyBpdCBzaG91bGQgcmV0dXJuIGEgYGBEaXN0cmlidXRpb25gYCBvcgogICAgICAgIGBgTm9uZWBgLgoKICAgICAgICBVbmxlc3MgYHJlcGxhY2VfY29uZmxpY3Rpbmc9VHJ1ZWAsIHJhaXNlcyBhIFZlcnNpb25Db25mbGljdCBleGNlcHRpb24KICAgICAgICBpZgogICAgICAgIGFueSByZXF1aXJlbWVudHMgYXJlIGZvdW5kIG9uIHRoZSBwYXRoIHRoYXQgaGF2ZSB0aGUgY29ycmVjdCBuYW1lIGJ1dAogICAgICAgIHRoZSB3cm9uZyB2ZXJzaW9uLiAgT3RoZXJ3aXNlLCBpZiBhbiBgaW5zdGFsbGVyYCBpcyBzdXBwbGllZCBpdCB3aWxsIGJlCiAgICAgICAgaW52b2tlZCB0byBvYnRhaW4gdGhlIGNvcnJlY3QgdmVyc2lvbiBvZiB0aGUgcmVxdWlyZW1lbnQgYW5kIGFjdGl2YXRlCiAgICAgICAgaXQuCgogICAgICAgIGBleHRyYXNgIGlzIGEgbGlzdCBvZiB0aGUgZXh0cmFzIHRvIGJlIHVzZWQgd2l0aCB0aGVzZSByZXF1aXJlbWVudHMuCiAgICAgICAgVGhpcyBpcyBpbXBvcnRhbnQgYmVjYXVzZSBleHRyYSByZXF1aXJlbWVudHMgbWF5IGxvb2sgbGlrZSBgbXlfcmVxOwogICAgICAgIGV4dHJhID0gIm15X2V4dHJhImAsIHdoaWNoIHdvdWxkIG90aGVyd2lzZSBiZSBpbnRlcnByZXRlZCBhcyBhIHB1cmVseQogICAgICAgIG9wdGlvbmFsIHJlcXVpcmVtZW50LiAgSW5zdGVhZCwgd2Ugd2FudCB0byBiZSBhYmxlIHRvIGFzc2VydCB0aGF0IHRoZXNlCiAgICAgICAgcmVxdWlyZW1lbnRzIGFyZSB0cnVseSByZXF1aXJlZC4KICAgICAgICBOcg8AAAByAQAAACkB2hNyZXBsYWNlX2NvbmZsaWN0aW5nVOn/////cgwBAAApF9oEbGlzdNoKX1JlcUV4dHJhc9oLY29sbGVjdGlvbnPaC2RlZmF1bHRkaWN02gNzZXTaA3BvcNoMbWFya2Vyc19wYXNzcsAAAAByNgAAAHLrAAAAcmEAAABy6QAAAHJiAAAA2gpiZXN0X21hdGNocmkAAAByuQAAAHJoAAAAcpwAAAByAQEAANoGZXh0cmFz2gZleHRlbmRy+AAAANoMcHJvamVjdF9uYW1lKRJykgAAANoMcmVxdWlyZW1lbnRz2gNlbnbaCWluc3RhbGxlcnILAQAAchUBAADaCXByb2Nlc3NlZNoEYmVzdNoLdG9fYWN0aXZhdGXaCnJlcV9leHRyYXNymwAAAHKVAAAAcpQAAABy9QAAAHKeAAAA2g1kZXBlbmRlbnRfcmVx2hBuZXdfcmVxdWlyZW1lbnRz2g9uZXdfcmVxdWlyZW1lbnRyGgAAAHIaAAAAchsAAABy9wAAAMsCAABzTgAAAAAbEgIEAgQBBAIGBAoCCgIKAQgCAgIMAQICDAEKAg4BFgEEAQgBCAEMBQgBCAEEAQYBEgIKAQwBCgEKAQoCCAEQAxYBCgMKARABEAIMA3oSV29ya2luZ1NldC5yZXNvbHZlYwUAAAAAAAAADwAAABIAAABDAAAAcwIBAAB0AHwBgwF9BXwFagGDAAEAaQB9BmkAfQd8AmQBawhyNHQCfABqA4MBfQh8CHwBNwB9CG4IfAJ8ARcAfQh8AGoEZwCDAX0JdAB0BXwJagZ8AIMCgwEBAHiSfAVEAF2KfQp4hHwBfAoZAEQAXXh9C3wLageDAGcBfQx5EnwJagh8DHwIfAODA30NVwBuNAQAdAlrCnK+AQB9DgEAehh8DnwGfAs8AHwEcqx3am4CUABXAFkAZAFkAX0Ofg5YAHFqWAB0AHQFfAlqBnwNgwKDAQEAfAdqCnQLagx8DYMBgwEBAFAAcWpXAHFcVwB0AHwHgwF9B3wHagGDAAEAfAd8BmYCUwApAmFzBgAARmluZCBhbGwgYWN0aXZhdGFibGUgZGlzdHJpYnV0aW9ucyBpbiBgcGx1Z2luX2VudmAKCiAgICAgICAgRXhhbXBsZSB1c2FnZTo6CgogICAgICAgICAgICBkaXN0cmlidXRpb25zLCBlcnJvcnMgPSB3b3JraW5nX3NldC5maW5kX3BsdWdpbnMoCiAgICAgICAgICAgICAgICBFbnZpcm9ubWVudChwbHVnaW5fZGlybGlzdCkKICAgICAgICAgICAgKQogICAgICAgICAgICAjIGFkZCBwbHVnaW5zK2xpYnMgdG8gc3lzLnBhdGgKICAgICAgICAgICAgbWFwKHdvcmtpbmdfc2V0LmFkZCwgZGlzdHJpYnV0aW9ucykKICAgICAgICAgICAgIyBkaXNwbGF5IGVycm9ycwogICAgICAgICAgICBwcmludCgnQ291bGQgbm90IGxvYWQnLCBlcnJvcnMpCgogICAgICAgIFRoZSBgcGx1Z2luX2VudmAgc2hvdWxkIGJlIGFuIGBgRW52aXJvbm1lbnRgYCBpbnN0YW5jZSB0aGF0IGNvbnRhaW5zCiAgICAgICAgb25seSBkaXN0cmlidXRpb25zIHRoYXQgYXJlIGluIHRoZSBwcm9qZWN0J3MgInBsdWdpbiBkaXJlY3RvcnkiIG9yCiAgICAgICAgZGlyZWN0b3JpZXMuIFRoZSBgZnVsbF9lbnZgLCBpZiBzdXBwbGllZCwgc2hvdWxkIGJlIGFuIGBgRW52aXJvbm1lbnRgYAogICAgICAgIGNvbnRhaW5zIGFsbCBjdXJyZW50bHktYXZhaWxhYmxlIGRpc3RyaWJ1dGlvbnMuICBJZiBgZnVsbF9lbnZgIGlzIG5vdAogICAgICAgIHN1cHBsaWVkLCBvbmUgaXMgY3JlYXRlZCBhdXRvbWF0aWNhbGx5IGZyb20gdGhlIGBgV29ya2luZ1NldGBgIHRoaXMKICAgICAgICBtZXRob2QgaXMgY2FsbGVkIG9uLCB3aGljaCB3aWxsIHR5cGljYWxseSBtZWFuIHRoYXQgZXZlcnkgZGlyZWN0b3J5IG9uCiAgICAgICAgYGBzeXMucGF0aGBgIHdpbGwgYmUgc2Nhbm5lZCBmb3IgZGlzdHJpYnV0aW9ucy4KCiAgICAgICAgYGluc3RhbGxlcmAgaXMgYSBzdGFuZGFyZCBpbnN0YWxsZXIgY2FsbGJhY2sgYXMgdXNlZCBieSB0aGUKICAgICAgICBgYHJlc29sdmUoKWBgIG1ldGhvZC4gVGhlIGBmYWxsYmFja2AgZmxhZyBpbmRpY2F0ZXMgd2hldGhlciB3ZSBzaG91bGQKICAgICAgICBhdHRlbXB0IHRvIHJlc29sdmUgb2xkZXIgdmVyc2lvbnMgb2YgYSBwbHVnaW4gaWYgdGhlIG5ld2VzdCB2ZXJzaW9uCiAgICAgICAgY2Fubm90IGJlIHJlc29sdmVkLgoKICAgICAgICBUaGlzIG1ldGhvZCByZXR1cm5zIGEgMi10dXBsZTogKGBkaXN0cmlidXRpb25zYCwgYGVycm9yX2luZm9gKSwgd2hlcmUKICAgICAgICBgZGlzdHJpYnV0aW9uc2AgaXMgYSBsaXN0IG9mIHRoZSBkaXN0cmlidXRpb25zIGZvdW5kIGluIGBwbHVnaW5fZW52YAogICAgICAgIHRoYXQgd2VyZSBsb2FkYWJsZSwgYWxvbmcgd2l0aCBhbnkgb3RoZXIgZGlzdHJpYnV0aW9ucyB0aGF0IGFyZSBuZWVkZWQKICAgICAgICB0byByZXNvbHZlIHRoZWlyIGRlcGVuZGVuY2llcy4gIGBlcnJvcl9pbmZvYCBpcyBhIGRpY3Rpb25hcnkgbWFwcGluZwogICAgICAgIHVubG9hZGFibGUgcGx1Z2luIGRpc3RyaWJ1dGlvbnMgdG8gYW4gZXhjZXB0aW9uIGluc3RhbmNlIGRlc2NyaWJpbmcgdGhlCiAgICAgICAgZXJyb3IgdGhhdCBvY2N1cnJlZC4gVXN1YWxseSB0aGlzIHdpbGwgYmUgYSBgYERpc3RyaWJ1dGlvbk5vdEZvdW5kYGAgb3IKICAgICAgICBgYFZlcnNpb25Db25mbGljdGBgIGluc3RhbmNlLgogICAgICAgIE4pDXINAQAA2gRzb3J0cmEAAABy6QAAAHKQAAAAcgYAAABy+AAAANoOYXNfcmVxdWlyZW1lbnRy9wAAAHJnAAAAciMAAAByJQAAAHImAAAAKQ9ykgAAANoKcGx1Z2luX2VudtoIZnVsbF9lbnZyGgEAANoIZmFsbGJhY2vaD3BsdWdpbl9wcm9qZWN0c9oKZXJyb3JfaW5mb9oNZGlzdHJpYnV0aW9uc3IZAQAA2gpzaGFkb3dfc2V0chcBAABylAAAAHKVAAAA2glyZXNvbHZlZXNyIAAAAHIaAAAAchoAAAByGwAAANoMZmluZF9wbHVnaW5zJwMAAHM0AAAAACQIAggCBAEEAggBCgEKAggC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biBhIHNlYXJjaCBwYXRoTmMEAAAAAAAAAAQAAAACAAAAQwAAAHMgAAAAaQB8AF8AfAJ8AF8BfAN8AF8CfABqA3wBgwEBAGQBUwApAmEhAwAAU25hcHNob3QgZGlzdHJpYnV0aW9ucyBhdmFpbGFibGUgb24gYSBzZWFyY2ggcGF0aAoKICAgICAgICBBbnkgZGlzdHJpYnV0aW9ucyBmb3VuZCBvbiBgc2VhcmNoX3BhdGhgIGFyZSBhZGRlZCB0byB0aGUgZW52aXJvbm1lbnQuCiAgICAgICAgYHNlYXJjaF9wYXRoYCBzaG91bGQgYmUgYSBzZXF1ZW5jZSBvZiBgYHN5cy5wYXRoYGAgaXRlbXMuICBJZiBub3QKICAgICAgICBzdXBwbGllZCwgYGBzeXMucGF0aGBgIGlzIHVzZWQuCgogICAgICAgIGBwbGF0Zm9ybWAgaXMgYW4gb3B0aW9uYWwgc3RyaW5nIHNwZWNpZnlpbmcgdGhlIG5hbWUgb2YgdGhlIHBsYXRmb3JtCiAgICAgICAgdGhhdCBwbGF0Zm9ybS1zcGVjaWZpYyBkaXN0cmlidXRpb25zIG11c3QgYmUgY29tcGF0aWJsZSB3aXRoLiAgSWYKICAgICAgICB1bnNwZWNpZmllZCwgaXQgZGVmYXVsdHMgdG8gdGhlIGN1cnJlbnQgcGxhdGZvcm0uICBgcHl0aG9uYCBpcyBhbgogICAgICAgIG9wdGlvbmFsIHN0cmluZyBuYW1pbmcgdGhlIGRlc2lyZWQgdmVyc2lvbiBvZiBQeXRob24gKGUuZy4gYGAnMy42J2BgKTsKICAgICAgICBpdCBkZWZhdWx0cyB0byB0aGUgY3VycmVudCB2ZXJzaW9uLgoKICAgICAgICBZb3UgbWF5IGV4cGxpY2l0bHkgc2V0IGBwbGF0Zm9ybWAgKGFuZC9vciBgcHl0aG9uYCkgdG8gYGBOb25lYGAgaWYgeW91CiAgICAgICAgd2lzaCB0byBtYXAgKmFsbCogZGlzdHJpYnV0aW9ucywgbm90IGp1c3QgdGhvc2UgY29tcGF0aWJsZSB3aXRoIHRoZQogICAgICAgIHJ1bm5pbmcgcGxhdGZvcm0gb3IgUHl0aG9uIHZlcnNpb24uCiAgICAgICAgTikE2ghfZGlzdG1hcHJEAAAA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d2l0aCBnZXRfcmVzb3VyY2VfZmlsZW5hbWUuIENvbnNpZGVyIGEgbW9yZSBzZWN1cmUgbG9jYXRpb24gKHNldCB3aXRoIC5zZXRfZXh0cmFjdGlvbl9wYXRoIG9yIHRoZSBQWVRIT05fRUdHX0NBQ0hFIGVudmlyb25tZW50IHZhcmlhYmxlKS4pC3K0AAAActkAAAByxwAAANoHZW52aXJvbtoEc3RhdNoHc3RfbW9kZdoHU19JV09USNoHU19JV0dSUNoId2FybmluZ3PaBHdhcm7aC1VzZXJXYXJuaW5nKQNytQAAANoEbW9kZdoDbXNnchoAAAByGgAAAHIbAAAAcl4BAADDBAAAcw4AAAAAChwEBAEMARQCAgQGAnosUmVzb3VyY2VNYW5hZ2VyLl93YXJuX3Vuc2FmZV9leHRyYWN0aW9uX3BhdGhjAwAAAAAAAAAEAAAAAwAAAEMAAABzLgAAAHQAagFkAWsCcip0AGoCfAGDAWoDZAJCAGQDQAB9A3QAagR8AXwDgwIBAGQEUwApBWE0AgAAUGVyZm9ybSBhbnkgcGxhdGZvcm0tc3BlY2lmaWMgcG9zdHByb2Nlc3Npbmcgb2YgYHRlbXBuYW1lYAoKICAgICAgICBUaGlzIGlzIHdoZXJlIE1hYyBoZWFkZXIgcmV3cml0ZXMgc2hvdWxkIGJlIGRvbmU7IG90aGVyIHBsYXRmb3JtcyBkb24ndAogICAgICAgIGhhdmUgYW55dGhpbmcgc3BlY2lhbCB0aGV5IHNob3VsZCBkby4KCiAgICAgICAgUmVzb3VyY2UgcHJvdmlkZXJzIHNob3VsZCBjYWxsIHRoaXMgbWV0aG9kIE9OTFkgYWZ0ZXIgc3VjY2Vzc2Z1bGx5CiAgICAgICAgZXh0cmFjdGluZyBhIGNvbXByZXNzZWQgcmVzb3VyY2UuICBUaGV5IG11c3QgTk9UIGNhbGwgaXQgb24gcmVzb3VyY2VzCiAgICAgICAgdGhhdCBhcmUgYWxyZWFkeSBpbiB0aGUgZmlsZXN5c3RlbS4KCiAgICAgICAgYHRlbXBuYW1lYCBpcyB0aGUgY3VycmVudCAodGVtcG9yYXJ5KSBuYW1lIG9mIHRoZSBmaWxlLCBhbmQgYGZpbGVuYW1lYAogICAgICAgIGlzIHRoZSBuYW1lIGl0IHdpbGwgYmUgcmVuYW1lZCB0byBieSB0aGUgY2FsbGVyIGFmdGVyIHRoaXMgcm91dGluZQogICAgICAgIHJldHVybnMuCiAgICAgICAg2gVwb3NpeGltAQAAaf8PAABOKQVytAAAAHLZAAAAcmcBAAByaAEAANoFY2htb2QpBHKSAAAA2gh0ZW1wbmFtZdoIZmlsZW5hbWVybgEAAHIaAAAAchoAAAByGwAAANoLcG9zdHByb2Nlc3PdBAAAcwYAAAAADwoCFAF6G1Jlc291cmNlTWFuYWdlci5wb3N0cHJvY2Vzc2MCAAAAAAAAAAIAAAACAAAAQwAAAHMYAAAAfABqAHIOdAFkAYMBggF8AXwAXwJkAlMAKQNh0gMAAFNldCB0aGUgYmFzZSBwYXRoIHdoZXJlIHJlc291cmNlcyB3aWxsIGJlIGV4dHJhY3RlZCB0bywgaWYgbmVlZGVkLgoKICAgICAgICBJZiB5b3UgZG8gbm90IGNhbGwgdGhpcyByb3V0aW5lIGJlZm9yZSBhbnkgZXh0cmFjdGlvbnMgdGFrZSBwbGFjZSwgdGhlCiAgICAgICAgcGF0aCBkZWZhdWx0cyB0byB0aGUgcmV0dXJuIHZhbHVlIG9mIGBgZ2V0X2RlZmF1bHRfY2FjaGUoKWBgLiAgKFdoaWNoCiAgICAgICAgaXMgYmFzZWQgb24gdGhlIGBgUFlUSE9OX0VHR19DQUNIRWBgIGVudmlyb25tZW50IHZhcmlhYmxlLCB3aXRoIHZhcmlvdXMKICAgICAgICBwbGF0Zm9ybS1zcGVjaWZpYyBmYWxsYmFja3MuICBTZWUgdGhhdCByb3V0aW5lJ3MgZG9jdW1lbnRhdGlvbiBmb3IgbW9yZQogICAgICAgIGRldGFpbHMuKQoKICAgICAgICBSZXNvdXJjZXMgYXJlIGV4dHJhY3RlZCB0byBzdWJkaXJlY3RvcmllcyBvZiB0aGlzIHBhdGggYmFzZWQgdXBvbgogICAgICAgIGluZm9ybWF0aW9uIGdpdmVuIGJ5IHRoZSBgYElSZXNvdXJjZVByb3ZpZGVyYGAuICBZb3UgbWF5IHNldCB0aGlzIHRvIGEKICAgICAgICB0ZW1wb3JhcnkgZGlyZWN0b3J5LCBidXQgdGhlbiB5b3UgbXVzdCBjYWxsIGBgY2xlYW51cF9yZXNvdXJjZXMoKWBgIHRvCiAgICAgICAgZGVsZXRlIHRoZSBleHRyYWN0ZWQgZmlsZXMgd2hlbiBkb25lLiAgVGhlcmUgaXMgbm8gZ3VhcmFudGVlIHRoYXQKICAgICAgICBgYGNsZWFudXBfcmVzb3VyY2VzKClgYCB3aWxsIGJlIGFibGUgdG8gcmVtb3ZlIGFsbCBleHRyYWN0ZWQgZmlsZXMuCgogICAgICAgIChOb3RlOiB5b3UgbWF5IG5vdCBjaGFuZ2UgdGhlIGV4dHJhY3Rpb24gcGF0aCBmb3IgYSBnaXZlbiByZXNvdXJjZQogICAgICAgIG1hbmFnZXIgb25jZSByZXNvdXJjZXMgaGF2ZSBiZWVuIGV4dHJhY3RlZCwgdW5sZXNzIHlvdSBmaXJzdCBjYWxsCiAgICAgICAgYGBjbGVhbnVwX3Jlc291cmNlcygpYGAuKQogICAgICAgIHo1Q2FuJ3QgY2hhbmdlIGV4dHJhY3Rpb24gcGF0aCwgZmlsZXMgYWxyZWFkeSBleHRyYWN0ZWROKQNyTwEAAHJIAAAAclIBAAApAnKSAAAAcrUAAAByGgAAAHIaAAAAchsAAAByXgAAAPEEAABzCAAAAAATBgECAQYDeiNSZXNvdXJjZU1hbmFnZXIuc2V0X2V4dHJhY3Rpb25fcGF0aEZjAgAAAAAAAAACAAAAAQAAAEMAAABzBAAAAGQBUwApAmFCAgAACiAgICAgICAgRGVsZXRlIGFsbCBleHRyYWN0ZWQgcmVzb3VyY2UgZmlsZXMgYW5kIGRpcmVjdG9yaWVzLCByZXR1cm5pbmcgYSBsaXN0CiAgICAgICAgb2YgdGhlIGZpbGUgYW5kIGRpcmVjdG9yeSBuYW1lcyB0aGF0IGNvdWxkIG5vdCBiZSBzdWNjZXNzZnVsbHkgcmVtb3ZlZC4KICAgICAgICBUaGlzIGZ1bmN0aW9uIGRvZXMgbm90IGhhdmUgYW55IGNvbmN1cnJlbmN5IHByb3RlY3Rpb24sIHNvIGl0IHNob3VsZAogICAgICAgIGdlbmVyYWxseSBvbmx5IGJlIGNhbGxlZCB3aGVuIHRoZSBleHRyYWN0aW9uIHBhdGggaXMgYSB0ZW1wb3JhcnkKICAgICAgICBkaXJlY3RvcnkgZXhjbHVzaXZlIHRvIGEg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ICBHaXZlbiBhIGxpc3Qgb2YgZmlsZW5hbWVzLCByZXR1cm4gdGhlbSBpbiBkZXNjZW5kaW5nIG9yZGVyCiAgICBieSB2ZXJzaW9uIG51bWJlci4KCiAgICA+Pj4gbmFtZXMgPSAnYmFyJywgJ2ZvbycsICdQeXRob24tMi43LjEwLmVnZycsICdQeXRob24tMi43LjIuZWdnJwogICAgPj4+IF9ieV92ZXJzaW9uX2Rlc2NlbmRpbmcobmFtZXMpCiAgICBbJ1B5dGhvbi0yLjcuMTAuZWdnJywgJ1B5dGhvbi0yLjcuMi5lZ2cnLCAnZm9vJywgJ2JhciddCiAgICA+Pj4gbmFtZXMgPSAnU2V0dXB0b29scy0xLjIuM2IxLmVnZycsICdTZXR1cHRvb2xzLTEuMi4zLmVnZycKICAgID4+PiBfYnlfdmVyc2lvbl9kZXNjZW5kaW5nKG5hbWVzKQogICAgWydTZXR1cHRvb2xzLTEuMi4zLmVnZycsICdTZXR1cHRvb2xzLTEuMi4zYjEuZWdnJ10KICAgID4+PiBuYW1lcyA9ICdTZXR1cHRvb2xzLTEuMi4zYjEuZWdnJywgJ1NldHVwdG9vbHMtMS4yLjMucG9zdDEuZWdnJwogICAgPj4+IF9ieV92ZXJzaW9uX2Rlc2NlbmRpbmcobmFtZXMpCiAgICBbJ1NldHVwdG9vbHMtMS4yLjMucG9zdDEuZWdnJywgJ1NldHVwdG9vbHMtMS4yLjNiMS5lZ2cnXQogICAgYwEAAAAAAAAAAwAAAAMAAABTAAAAczIAAAB0AGoBagJ8AIMBXAJ9AH0BdANqBHwAagVkAYMBfAFnAYMCfQJkAmQDhAB8AkQAgwFTACkEejYKICAgICAgICBQYXJzZSBlYWNoIGNvbXBvbmVudCBvZiB0aGUgZmlsZW5hbWUKICAgICAgICByegEAAGMBAAAAAAAAAAIAAAAEAAAAUwAAAHMYAAAAZwB8AF0QfQF0AGoBagJ8AYMBkQJxBFMAchoAAAApA3ISAAAAchwAAABy2wAAACkCcv8AAADaBHBhcnRyGgAAAHIaAAAAchsAAAD6CjxsaXN0Y29tcD7wBwAAcwIAAAAGAHo/X2J5X3ZlcnNpb25fZGVzY2VuZGluZy48bG9jYWxzPi5fYnlfdmVyc2lvbi48bG9jYWxz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LAogICAgICAgICAgICAgICAgaW5zZXJ0IGp1c3QgYWhlYWQgb2YgdGhlIHBhcmVudC4KICAgICAgICAgICAgICAtIEVsc2U6IGFkZCB0byB0aGUgZW5kIG9mIHBhdGguCiAgICAgICAgSWYgcmVwbGFjZT1UcnVlOgogICAgICAgICAgICAtIElmIGxvY2F0aW9uIGlzIGFscmVhZHkgb24gcGF0aCBhbnl3aGVyZSAobm90IGVnZ3MpCiAgICAgICAgICAgICAgb3IgaGlnaGVyIHByaW9yaXR5IHRoYW4gaXRzIHBhcmVudCAoZWdncykKICAgICAgICAgICAgICBkbyBub3RoaW5nLgogICAgICAgICAgICAtIEVsc2U6CiAgICAgICAgICAgICAgLSBJZiBpdCdzIGFuIGVnZyBhbmQgaXRzIHBhcmVudCBkaXJlY3RvcnkgaXMgb24gcGF0aCwKICAgICAgICAgICAgICAgIGluc2VydCBqdXN0IGFoZWFkIG9mIHRoZSBwYXJlbnQsCiAgICAgICAgICAgICAgICByZW1vdmluZyBhbnkgbG93ZXItcHJpb3JpdHkgZW50cmllcy4KICAgICAgICAgICAgICAtIEVsc2U6IGFkZCBpdCB0byB0aGUgZnJvbnQgb2YgcGF0aC4KICAgICAgICBOYwEAAAAAAAAAAgAAAAQAAABTAAAAcxwAAABnAHwAXRR9AXwBchR0AHwBgwFwFnwBkQJxBFMAchoAAAApAXIgAgAAKQJy/wAAAHJQAgAAchoAAAByGgAAAHIbAAAAchcCAABQCwAAcwIAAAAGAHoqRGlzdHJpYnV0aW9uLmluc2VydF9vbi48bG9jYWxzPi48bGlzdGNvbXA+cgEAAAByDwAAACkOcgYBAAByIAIAAHK0AAAAcrUAAAByhQEAANoJZW51bWVyYXRlcjgCAAByeQAAAHJDAAAA2hZjaGVja192ZXJzaW9uX2NvbmZsaWN0cggBAAByuQAAAHJSAgAAckgAAAApCnKSAAAAcrUAAADaA2xvY3LJAAAA2gRubG9j2gRiZGly2gVucGF0aHJQAgAAcgMBAADaAm5wchoAAAByGgAAAHIbAAAAcgUBAAA2CwAAc0IAAAAAFAoBBAEEAggBDAEOAhIBCAEEAQQEBgESAxYBBAEKAQgBDAEM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