Ci5cIiAqIE9wZW5HR1NOIC0gR2F0ZXdheSBHUFJTIFN1cHBvcnQgTm9kZQouXCIgKiBDb3B5cmlnaHQgKEMpIDIwMDIsIDIwMDMgTW9uZHJ1IEFCLgouXCIgKiBQb2xpc2ggdHJhbnNsYXRpb24gY29weXJpZ2h0IChDKSAyMDA0IE1hcmVrIK9ha293aWN6IDxtYXphY3pla0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci5cIiAqIAouXCIgKiBUaGUgY29udGVudHMgb2YgdGhpcyBmaWxlIG1heSBiZSB1c2VkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VCi5cIiAqIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAyLCBwcm92aWRlZCB0aGF0IHRoZSBhYm92ZSBjb3B5cmlnaHQKLlwiICogbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIGlzIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3IKLlwiICogc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIHNvZnR3YXJlLgouXCIgKiAKLlwiICogVGhlIGluaXRpYWwgZGV2ZWxvcGVyIG9mIHRoZSBvcmlnaW5hbCBjb2RlIGlzCi5cIiAqIEplbnMgSmFrb2JzZW4gPGpqQG9wZW5nZ3NuLm9yZz4KLlwiICogCi5cIiAqIENvbnRyaWJ1dG9yKHMpOgouXCIgKiAKLlwiICogVHJhbnNsYXRpb24gdG8gcG9saXNoOiBNYXJlayBaYWtvd2ljeiA8bWF6YWtAZGViaWFuLmxpbnV4Lm9yZy5wbD4KLlwiIE1hbnVhbCBwYWdlIGZvciBnZ3NuCi5cIiBTSCBzZWN0aW9uIGhlYWRpbmcKLlwiIFNTIHN1YnNlY3Rpb24gaGVhZGluZwouXCIgTFAgcGFyYWdyYXBoCi5cIiBJUCBpbmRlbnRlZCBwYXJhZ3JhcGgKLlwiIFRQIGhhbmdpbmcgbGFiZWwKCi5USCBnZ3NuIDggIkxpcGllYyAyMDAzIgouU0ggTkFaV0EKZ2dzbiBcLSBX6nplsyBXc3BpZXJharFjeSBCcmFteSBHUFJTIChhbmcuIEdhdGV3YXkgR1BSUyBTdXBwb3J0IE5vZGUpLgouU0ggVa9ZVEtPV0FOSUUKLkIgZ2dzbgpcLVwtaGVscAogIAouQiBnZ3NuCiAgXC1cLXZlcnNpb24KCi5CIGdnc24KWwouQkkgXC1cLWZnCl0gWwouQkkgXC1cLWRlYnVnCl0gWwouQkkgXC1cLWNvbmYgIiBwbGlrIgpdIFsKLkJJIFwtXC1waWRmaWxlICIgcGxpayIKXSBbCi5CSSBcLVwtc3RhdGVkaXIgIiBwbGlrIiAKXSBbIAouQkkgXC1cLWxpc3RlbiAiIGhvc3QiIApdIFsKLkJJIFwtXC1uZXQgIiBzaWXmIiAKXSBbCi5CSSBcLVwtaXB1cCAiIHNrcnlwdCIgCl0gWwouQkkgXC1cLWlwZG93biAiIHNrcnlwdCIgCl0gWwouQkkgXC1cLWR5bmlwICIgc2ll5iIgCl0gWwouQkkgXC1cLXN0YXRpcCAiIHNpZeYiIApdIFsKLkJJIFwtXC1wY29kbnMxICIgaG9zdCIgCl0gWwouQkkgXC1cLXBjb2RuczIgIiBob3N0IiAKXSBbCi5CSSBcLVwtdGltZWxpbWl0ICIgc2VrdW5keSIgCl0KCi5TSCBPUElTCi5CIGdnc24KamVzdCBjeuq2Y2mxIHByb2pla3R1IAouQiBPcGVuR0dTTgppIGltcGxlbWVudHVqZSBmdW5rY2pvbmFsbm+25iB36nqzYSB3c3BpZXJharFjZWdvIGJyYW15IEdQUlMuClfqerN5IEdHU04gc7Egd3lrb3J6eXN0eXdhbmUgcHJ6ZXogb3BlcmF0b3LzdyBzaWVjaSBrb23zcmtvd3ljaCBqYWtvIGludGVyZmVqc3kKcG9taepkenkgSW50ZXJuZXRlbSBpIHJlc3p0sSBpbmZyYXN0cnVrdHVyeSBzaWVjaSBrb23zcmtvd2VqLgogIApGdW5rY2pvbmFsbm+25iBpIHByb3Rva2+zeSBHUFJTIHpvc3Rhs3kgdXN0YW5kYXJ5em93YW5lIHcgcmFtYWNoIHByb2pla3R1ClRoaXJkIEdlbmVyYXRpb24gUGFydG5lcnNoaXAgUHJvamVjdCAoM0dQUCkuICBTdG9zb3duaWUgZG8gc3BlY3lmaWthY2ppIDNHUFAsCkdHU04gcG9zaWFkYSBkd2EgaW50ZXJmZWpzeTogaW50ZXJmZWpzIEduL0dwIG9yYXogaW50ZXJmZWpzIEdpLgogCkludGVyZmVqcyBHbi9HcCBtb79lIGJ55iBwb3N0cnplZ2FueSBqYWtvILOxY3plIHBvZHJ66mRuZSB36nqzYSBHR1NOLgpKZXN0IG9uIHd5a29yenlzdHl3YW55IGRvIGtvbXVuaWthY2ppIHogV+p6s2VtIERvc3RhcmN6YWqxY3ltIFVzs3VnIEdQUlMKKFNHU04pLCBrdPNyeSB6IGtvbGVpIGplc3QgaW50ZXJmZWpzZW0gZG8gcmFkaW93ZWogc2llY2kgZG9zdOpwb3dlai4KSW50ZXJmZWpzIEduL0dwIHd5a29yenlzdHVqZSBwcm90b2vzsyB0dW5lbG93YW5pYSBHUFJTIChHVFApLiAgUGFraWV0eSBkYW55Y2gKdb95dGtvd25pa2EgKHphend5Y3phaiBwYWtpZXR5IElQKSBzsSB0dW5lbG93YW5lIHphIHBvtnJlZG5pY3R3ZW0gcHJvdG9rb7N1IEdUUCwKa3TzcnkgeiBrb2xlaSB3eWtvcnp5c3R1amUgcHJvdG9r87MgVURQIG5hZCBJUC4KICAKRHJ1Z2kgeiBpbnRlcmZlanPzdyBtb79lIGJ55iBwb3N0cnplZ2FueSBqYWtvILOxY3plIG5hZHJ66mRuZSwKcHJvd2FkerFjZSB6IHfqerNhIEdHU04gZG8gemV3bup0cnpuZWogc2llY2kgZGFueWNoLgpHaSBqZXN0IG5hamN66rZjaWVqIGludGVyZmVqc2VtIGRvIEludGVybmV0dS4KIAouQiBnZ3NuCnd5a29yenlzdHVqZQouQiBzdGVyb3duaWsgVFVOL1RBUApqYWtvIGludGVyZmVqcyBHaS4gIEludGVyZmVqcyB3IHNpZWNpIHR1biBqZXN0IHVydWNoYW1pYW55IHBvZGN6YXMgc3RhcnR1Ci5CIGdnc24uCiAKLkIgZ2dzbgpvZGJpZXJhIHBvs7FjemVuaWEgbmFkY2hvZHqxY2Ugb2QgdXJ6sWR6ZfEgcnVjaG9teWNoIHphIHBvtnJlZG5pY3R3ZW0Kc2llY2kgcmFkaW93ZWogb3JheiBTR1NOLiAgR2R5IG5hZGNob2R6aSC/sWRhbmllIHBvs7FjemVuaWEsIGdnc24gcmV6ZXJ3dWplCmRsYSB1cnqxZHplbmlhIHJ1Y2hvbWVnbyBkeW5hbWljem55IGFkcmVzIElQIGkgcG96d2FsYSB1cnqxZHplbml1IHJ1Y2hvbWVtdQprb3J6eXN0YeYgeiBpbnRlcmZlanN1IEdpLiAgUG+zsWN6ZW5pYSBtb2exIGJ55iB6YW15a2FuZSB6YXLzd25vIHByemV6CnN0YWNqZSBydWNob21lLCBqYWsgaSBTR1NOLiAgQrPqZHkgd3lzdOpwdWqxY2UgcG9kY3phcyBwcmFjeSBwcm9ncmFtdQpzsSByYXBvcnRvd2FuZSB6IHd5a29yenlzdGFuaWVtIAouQiBzeXNsb2dkICg4KS4KICAKVyB0eXBvd2VqIHN5dHVhY2ppCi5CIGdnc24KamVzdCB1cnVjaGFtaWFueSBuYSBrb21wdXRlcnplIHogZHdvbWEga2FydGFtaSBFdGhlcm5ldCAtIGplZG6xCnByemV6bmFjem9usSBkbGEgaW50ZXJmZWpzdSBHbi9HcCBpIGplZG6xIGRsYSBpbnRlcmZlanN1IEdpLgpQb2xpdHlraSB0cmFzb3dhbmlhIGkgcmVndbN5ILZjaWFueSBvZ25pb3dlaiBwb3dpbm55IGJ55iB3eWtvcnp5c3RhbmUKdyBjZWx1IHJvemR6aWVsZW5pYSBydWNodSBHaSBvZCBydWNodSBHbi9HcC4KICAKLlNIIE9QQ0pFCi5UUAouQkkgLS1oZWxwCld5tndpZXRsYSBwb21vYyBpIG5hIHR5bSBrb/Fjenkgd3lrb25hbmllIHByb2dyYW11LgogIAouVFAKLkJJIC0tdmVyc2lvbgpXebZ3aWV0bGEgcG9tb2MgaSBuYSB0eW0ga2/xY3p5IHd5a29uYW5pZSBwcm9ncmFtdS4KIAouVFAKLkJJIC0tZmcKVXJ1Y2hhbWlhIG5hIHBpZXJ3c3p5bSBwbGFuaWUgKGRvbXm2bG5pZSB3ebOxY3pvbmUpLgogIAouVFAKLkJJIC0tZGVidWcKVXJ1Y2hhbWlhIHcgdHJ5YmllIHVzdXdhbmlhIGKz6mTzdyAoZG9tebZsbmllIHd5s7Fjem9uZSkuCiAgCi5UUAouQkkgLS1jb25mICIgcGxpayIKT2Rjenl0dWplIGtvbmZpZ3VyYWNq6iB6Ci5JIHBsaWt1Cihkb215tmxuaWUgL2V0Yy9nZ3NuLmNvbmYpLCBrdPNyZWdvIGthv2RhIGxpbmlhIG9kcG93aWFkYSBqZWRuZWogb3BjamkKbGluaWkgcG9sZWNl8SBwb3piYXdpb25laiBwcnplZHJvc3RrYSAnLS0nLiAgT3BjamUgcG9kYW5lIHcgbGluaWkgcG9sZWNl8QpuYWRwaXN1arEgb3BjamUgcG9kYW5lIHcgcGxpa3Uga29uZmlndXJhY3lqbnltLgogCi5UUAouQkkgLS1waWRmaWxlICIgcGxpayIKTmF6d2EKLkkgcGxpa3UKeiBpZGVudHlmaWthdG9yZW0gcHJvY2VzdSAoZG9tebZsbmllIC92YXIvcnVuL2dnc24ucGlkKQogIAouVFAKLkJJIC0tc3RhdGVkaXIgIiC2Y2llv2thIgouSSCmY2llv2thCmRvIGthdGFsb2d1IHogdHJ3YbN5bWkgKG5pZSB1bG90bnltaSkgZGFueW1pIChkb215tmxuaWUgL3Zhci9saWIvZ2dzbi8pCiAKLlRQCi5CSSAtLWxpc3RlbiAiIGhvc3QiCkxva2FsbnkgYWRyZXMgSVAsIGt083J5IHpvc3RhbmllIHW/eXR5IGRvIG5hc7N1Y2h1IHByemV6IGludGVyZmVqcyBHbi9HcC4KVGEgb3BjamEgbXVzaSB6b3N0YeYgcG9kYW5hLgpaIHByenljenluIGJlenBpZWN6ZfFzdHdhIG5pZSBtb79lIGJ55iB3eWtvcnp5c3RhbnkgSU5BRERSX0FOWS4KCi5UUAouQkkgLS1uZXQgIiBzaWXmIgpBZHJlcyBzaWVjaSBpbnRlcmZlanN1IEdpIChkb215tmxuaWUgMTkyLjE2OC4wLjAvMjQpLgpBZHJlcyBzaWVjaSBqZXN0IHVzdGF3aWFueSBwb2RjemFzIGluaWNqYWxpemFjamksIGdkeQouQiBnZ3NuCnVydWNoYW1pYSB1cnqxZHplbmllIHR1biBkbGEgaW50ZXJmZWpzdSBHaS4KIAouVFAKLkJJIC0taXB1cCAiIHNrcnlwdCIKU2tyeXB0IHd5a29ueXdhbnkgcG8gYWt0eXdhY2ppIGludGVyZmVqc3UgR2kgdyBzaWVjaSB0dW4uClNrcnlwdCBqZXN0IHVydWNoYW1pYW55IHogbmFzdOpwdWqxY3ltaSBwYXJhbWV0cmFtaSA8bmF6d2EgdXJ6sWR6ZW5pYT4gPGFkcmVzIGlwPi4KICAKLlRQCi5CSSAtLWlwZG93biAiIHNrcnlwdCIKU2tyeXB0IHd5a29ueXdhbnkgcG8gd3mzsWN6ZW5pdSBpbnRlcmZlanN1IEdpIHcgc2llY2kgdHVuLgpTa3J5cHQgamVzdCB1cnVjaGFtaWFueSB6IG5hc3TqcHVqsWN5bWkgcGFyYW1ldHJhbWkgPG5hendhIHVyerFkemVuaWE+IDxhZHJlcyBpcD4uCiAgCi5UUAouQkkgLS1keW5pcCAiIHNpZeYiClB1bGEgZHluYW1pY3pueWNoIGFkcmVz83cgc2llY2kgSVAuICBPa3JltmxhIHB1bOogZHluYW1pY3pueWNoIGFkcmVz83cgSVAuCkpltmxpIHRhIG9wY2phIHpvc3RhbmllIHBvbWluaep0YSwgZ2dzbiB3eWtvcnp5c3R1amUgZG8gZHluYW1pY3puZWogcmV6ZXJ3YWNqaQphZHJlc/N3IElQLCBhZHJlcyBzaWVjaSBva3JltmxvbnkgcHJ6ZXogb3BjauoKLkJJIC0tbmV0LgogIAouVFAKLkJJIC0tcGNvZG5zMSAiIGhvc3QiClNlcndlciBQQ08gRE5TIDEgKGRvbXm2bG5pZSAwLjAuMC4wKS4gUENPIGplc3QgYWtyb25pbWVtIApQcm90b2NvbCBDb25maWd1cmF0aW9uIE9wdGlvbnMsIGNvIHSzdW1hY3p5IHNp6iBqYWtvIFByb3Rva/OzIE9wY2ppCktvbmZpZ3VyYWN5am55Y2ggaSBqZXN0IGN66rZjabEgc3BlY3lmaWthY2ppIHBydG9rb7PzdyBHUFJTLiAgSmVzdAp3eWtvcnp5c3R5d2FueSBkbyBpbmZvcm1vd2FuaWEgc3RhY2ppIHJ1Y2hvbWVqIG8gYWRyZXNpZSBzZXJ3ZXJhIEROUwpzdG9zb3dhbmVnbyBkbyByb3p3abF6eXdhbmlhIG5hencgaG9zdPN3LgogIAouVFAKLkJJIC0tcGNvZG5zMiAiIGhvc3QiClNlcndlciBQQ08gRE5TIDIgKGRvbXm2bG5pZSAwLjAuMC4wKS4gUENPIGplc3QgYWtyb25pbWVtIApQcm90b2NvbCBDb25maWd1cmF0aW9uIE9wdGlvbnMsIGNvIHSzdW1hY3p5IHNp6iBqYWtvIFByb3Rva/OzIE9wY2ppCktvbmZpZ3VyYWN5am55Y2ggaSBqZXN0IGN66rZjabEgc3BlY3lmaWthY2ppIHBydG9rb7PzdyBHUFJTLiAgSmVzdAp3eWtvcnp5c3R5d2FueSBkbyBpbmZvcm1vd2FuaWEgc3RhY2ppIHJ1Y2hvbWVqIG8gYWRyZXNpZSBzZXJ3ZXJhIEROUwpzdG9zb3dhbmVnbyBkbyByb3p3abF6eXdhbmlhIG5hencgaG9zdPN3LgogIAouVFAKLkJJIC0tdGltZWxpbWl0ICIgc2VrdW5keSIKS2/xY3p5IHd5a29uYW5pZQouYiBnZ3NuCnBvIHVws3l3aWUgcG9kYW5laiBsaWN6eSBcZklzZWt1bmRcZlAuCk9wY2phIHd5a29yenlzdHl3YW5hIHcgY2VsdSB1c3V3YW5pYSBis+pk83cuCiAgCgouU0ggUExJS0kKLkkgL2V0Yy9nZ3NuLmNvbmYKLlJTClBsaWsga29uZmlndXJhY3lqbnkgZGxhCi5CIGdnc24uCi5SRQouSSAvdmFyL3J1bi9nZ3NuLnBpZAouUlMKUGxpayB6YXdpZXJharFjeSBpZGVudHlmaWthdG9yIHByb2Nlc3UuCi5SRQouSSAvdmFyL2xpYi9nZ3NuCi5SUwpLYXRhbG9nIHByemVjaG93dWqxY3kgdHJ3YbNlIChuaWUgdWxvdG5lKSBkYW5lLgouUkUKCi5TSCBCo8pEWQpaZ7Nhc3phaiBis+pkeSBuYSBsaXN06iC2bGVkemVuaWEgYrPqZPN3IE9wZW5HR1NOCi5JIGh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvZ2dzbi8KCi5CIGdnc24KbWEgYmFyZHpvIG9ncmFuaWN6b25lIHdzcGFyY2llIGRsYSB6YXJ6sWR6YW5pYS4KT2JlY25pZSB6YXLzd25vIFNOTVAgamFrIGkgbWVjaGFuaXpteSByb3psaWN6YW5pYSBzsSBwb21pbmnqdGUuCiAgCi5TSCAiWk9CQUNaIFRBS69FIgouQlIgc2dzbmVtdSAoOCksIAouQlIgc3lzbG9nZCAoOCkKIAouU0ggVVdBR0kKLkxQCiAgCk9wcvNjeiBks3VnaWNoLCB1ZG9rdW1lbnRvd2FueWNoIHcgdHltIHBvZHLqY3puaWt1LCBvcGNqaQouQiBnZ3NuCndzcGllcmEgcvN3bmllvyBwZXdusSBsaWN6YrEga3LzdGtpY2ggb3BjamkgbyB0ZWogc2FtZWogZnVua2Nqb25hbG5vtmNpLgpXeXdvs2FqIAouQiBnZ3NuIC0taGVscApieSB1enlza2HmIHBls26xIGxpc3TqIGRvc3TqcG55Y2ggb3BjamkuCgpTdGVyb3duaWsgVFVOL1RBUCBqZXN0IHd5bWFnYW55IGRsYSBwb3ByYXduZWdvIGR6aWGzYW5pYQouQiBnZ3NuLiAKRGxhIGqxZGVyIGxpbnVrc2EgcPO8bmllanN6eWNoIG5pvyAyLjQuNyBzdGVyb3duaWsgVFVOL1RBUCBqZXN0IHphd2FydHkgdyBqsWRyemUsCmNob2NpYb8gdyB0eXBvd2VqIHN5dHVhY2ppIG11c2kgYnnmILNhZG93YW55IG9kZHppZWxuaWUgemEgcG9tb2OxCi5CIG1vZHByb2JlIHR1bi4KQWJ5ILNhZG93YeYgYXV0b21hdHljem5pZSBuYWxlv3kgZG8gcGxpa3UKLkIgL2V0Yy9tb2R1bGVzLmNvbmYuCmRvZGHmIGxpbmnqICAKLkIgYWxpYXMgY2hhci1tYWpvci0xMC0yMDAgdHVuCkFieSB1enlza2HmIGluZm9ybWFjamUgbyBpbm55Y2ggcGxhdGZvcm1hY2ggem9iYWN6IHN0cm9u6gouSSBodHRwOi8vdnR1bi5zb3VyY2Vmb3JnZS5uZXQvdHVuLwpvcGlzdWqxY7EgamFrIHphaW5zdGFsb3dh5iBpIHNrb25maWd1cm93YeYgc3Rlcm93bmlrIHR1bi4KCi5CIGdnc24gCnd5a29yenlzdHVqZSBwcm90b2vzsyB0dW5lbG93YW5pYSBHUFJTIChHVFApIHd5c3BlY3lmaWtvd2FueSBwcnpleiAKVGhpcmQgR2VuZXJhdGlvbiBQYXJ0bmVyc2hpcCBQcm9qZWN0ICgzR1BQKS4gU3BlY3lmaWthY2plIHByb3Rva2+z83cgM0dQUAptb2exIGJ55iB6bmFsZXppb25lIG5hCi5JIGh0dHA6Ly93d3cuM2dwcC5vcmcKCi5TSCBDT1BZUklHSFQKCkNvcHlyaWdodCAoQykgMjAwMiwgMjAwMyBieSBNb25kcnUgQUIuCgpaYXdhcnRvtuYgdGVnbyBwbGlrdSBtb79lIGJ55iB3eWtvcnp5c3R5d2FuYSBzdG9zb3duaWUgZG8gdGVybWlu83cKT2fzbG5laiwgUHVibGljem5laiBMaWNlbmNqaSAoR1BMKSBHTlUgdyB3ZXJzamkgMiBkb3N0YXJjem9uZWogd3Jhegp6IG5pbmllanN6sSB1d2FnsSBvIHByYXdhY2ggYXV0b3Jza2ljaCB6YXdhcnSxIHdlIHdzenlzdGtpY2gga29waWFjaAppIGlzdG90bnljaCBmcmFnbWVudGFjaCBvcHJvZ3JhbW93YW5pYS4KCi5TSCBBVVRPUlpZCkplbnMgSmFrb2JzZW4gPGpqQG9wZW5nZ3NuLm9yZz4KCi5TSCBUo1VNQUNaRU5JRQpQb2xpc2ggdHJhbnNsYXRpb24gY29weXJpZ2h0IChDKSAyMDA0IE1hcmVrIK9ha293aWN6IDxtYXphY3pla0B1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+CgpUs3VtYWN6ZW5pZSBqZXN0IGNocm9uaW9uZSBwcmF3YW1pIGF1dG9yc2tpbWkuCkRvendvbG9uZSBqZXN0IGtvcnp5c3RhbmllLCByb3pwcm93YWR6YW5pZSBpIG1vZHlmaWthY2phIG5hIHphc2FkYWNoIGxpY2VuY2ppIEdOVSBHUEwgMi4K