@decentro-dev/polkadot-sufficient-assets 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +201 -0
- package/README.md +60 -0
- package/package.json +99 -0
- package/packages/client/README.md +333 -0
- package/packages/client/dist/chain-specs/ksmcc3/index.d.mts +1 -0
- package/packages/client/dist/chain-specs/ksmcc3/index.d.ts +1 -0
- package/packages/client/dist/chain-specs/ksmcc3/index.js +2 -0
- package/packages/client/dist/chain-specs/ksmcc3/index.mjs +2 -0
- package/packages/client/dist/chain-specs/ksmcc3_asset_hub/index.d.mts +1 -0
- package/packages/client/dist/chain-specs/ksmcc3_asset_hub/index.d.ts +1 -0
- package/packages/client/dist/chain-specs/ksmcc3_asset_hub/index.js +2 -0
- package/packages/client/dist/chain-specs/ksmcc3_asset_hub/index.mjs +2 -0
- package/packages/client/dist/chain-specs/paseo/index.d.mts +1 -0
- package/packages/client/dist/chain-specs/paseo/index.d.ts +1 -0
- package/packages/client/dist/chain-specs/paseo/index.js +2 -0
- package/packages/client/dist/chain-specs/paseo/index.mjs +2 -0
- package/packages/client/dist/chain-specs/paseo_asset_hub/index.d.mts +1 -0
- package/packages/client/dist/chain-specs/paseo_asset_hub/index.d.ts +1 -0
- package/packages/client/dist/chain-specs/paseo_asset_hub/index.js +2 -0
- package/packages/client/dist/chain-specs/paseo_asset_hub/index.mjs +2 -0
- package/packages/client/dist/chain-specs/polkadot/index.d.mts +1 -0
- package/packages/client/dist/chain-specs/polkadot/index.d.ts +1 -0
- package/packages/client/dist/chain-specs/polkadot/index.js +2 -0
- package/packages/client/dist/chain-specs/polkadot/index.mjs +2 -0
- package/packages/client/dist/chain-specs/polkadot_asset_hub/index.d.mts +1 -0
- package/packages/client/dist/chain-specs/polkadot_asset_hub/index.d.ts +1 -0
- package/packages/client/dist/chain-specs/polkadot_asset_hub/index.js +2 -0
- package/packages/client/dist/chain-specs/polkadot_asset_hub/index.mjs +2 -0
- package/packages/client/dist/chain-specs/rococo_v2_2/index.d.mts +1 -0
- package/packages/client/dist/chain-specs/rococo_v2_2/index.d.ts +1 -0
- package/packages/client/dist/chain-specs/rococo_v2_2/index.js +2 -0
- package/packages/client/dist/chain-specs/rococo_v2_2/index.mjs +2 -0
- package/packages/client/dist/chain-specs/rococo_v2_2_asset_hub/index.d.mts +1 -0
- package/packages/client/dist/chain-specs/rococo_v2_2_asset_hub/index.d.ts +1 -0
- package/packages/client/dist/chain-specs/rococo_v2_2_asset_hub/index.js +2 -0
- package/packages/client/dist/chain-specs/rococo_v2_2_asset_hub/index.mjs +2 -0
- package/packages/client/dist/chain-specs/westend2/index.d.mts +1 -0
- package/packages/client/dist/chain-specs/westend2/index.d.ts +1 -0
- package/packages/client/dist/chain-specs/westend2/index.js +2 -0
- package/packages/client/dist/chain-specs/westend2/index.mjs +2 -0
- package/packages/client/dist/chain-specs/westend2_asset_hub/index.d.mts +1 -0
- package/packages/client/dist/chain-specs/westend2_asset_hub/index.d.ts +1 -0
- package/packages/client/dist/chain-specs/westend2_asset_hub/index.js +2 -0
- package/packages/client/dist/chain-specs/westend2_asset_hub/index.mjs +2 -0
- package/packages/client/dist/index.d.mts +106 -0
- package/packages/client/dist/index.d.ts +106 -0
- package/packages/client/dist/index.js +2 -0
- package/packages/client/dist/index.mjs +2 -0
- package/packages/client/dist/smoldot/from-node-worker/index.d.mts +1 -0
- package/packages/client/dist/smoldot/from-node-worker/index.d.ts +1 -0
- package/packages/client/dist/smoldot/from-node-worker/index.js +2 -0
- package/packages/client/dist/smoldot/from-node-worker/index.mjs +2 -0
- package/packages/client/dist/smoldot/from-worker/index.d.mts +1 -0
- package/packages/client/dist/smoldot/from-worker/index.d.ts +1 -0
- package/packages/client/dist/smoldot/from-worker/index.js +2 -0
- package/packages/client/dist/smoldot/from-worker/index.mjs +2 -0
- package/packages/client/dist/smoldot/index.d.mts +14 -0
- package/packages/client/dist/smoldot/index.d.ts +14 -0
- package/packages/client/dist/smoldot/index.js +2 -0
- package/packages/client/dist/smoldot/index.mjs +2 -0
- package/packages/client/dist/smoldot/worker/index.d.mts +1 -0
- package/packages/client/dist/smoldot/worker/index.d.ts +1 -0
- package/packages/client/dist/smoldot/worker/index.js +2 -0
- package/packages/client/dist/smoldot/worker/index.mjs +2 -0
- package/packages/core/.papi/descriptors/dist/common-types.d.ts +21274 -0
- package/packages/core/.papi/descriptors/dist/descriptors-EQXQJ7SL.mjs +1 -0
- package/packages/core/.papi/descriptors/dist/descriptors.d.ts +11 -0
- package/packages/core/.papi/descriptors/dist/hdx.d.ts +366 -0
- package/packages/core/.papi/descriptors/dist/hdx_metadata-XH2Y6EGQ.mjs +1 -0
- package/packages/core/.papi/descriptors/dist/hdx_metadata.d.ts +2 -0
- package/packages/core/.papi/descriptors/dist/index.d.mts +24579 -0
- package/packages/core/.papi/descriptors/dist/index.d.ts +23 -0
- package/packages/core/.papi/descriptors/dist/index.js +1 -0
- package/packages/core/.papi/descriptors/dist/index.mjs +1 -0
- package/packages/core/.papi/descriptors/dist/kah.d.ts +434 -0
- package/packages/core/.papi/descriptors/dist/kah_metadata-OCBL5LAN.mjs +1 -0
- package/packages/core/.papi/descriptors/dist/kah_metadata.d.ts +2 -0
- package/packages/core/.papi/descriptors/dist/kusama.d.ts +291 -0
- package/packages/core/.papi/descriptors/dist/kusama_metadata-TGJ43LLG.mjs +1 -0
- package/packages/core/.papi/descriptors/dist/kusama_metadata.d.ts +2 -0
- package/packages/core/.papi/descriptors/dist/metadataTypes-MIM6CGSL.mjs +1 -0
- package/packages/core/.papi/descriptors/dist/metadataTypes.d.ts +2 -0
- package/packages/core/.papi/descriptors/dist/pah.d.ts +434 -0
- package/packages/core/.papi/descriptors/dist/pah_metadata-JG7F7QDO.mjs +1 -0
- package/packages/core/.papi/descriptors/dist/pah_metadata.d.ts +2 -0
- package/packages/core/.papi/descriptors/dist/paseo.d.ts +291 -0
- package/packages/core/.papi/descriptors/dist/paseo_metadata-5VVMOYKO.mjs +1 -0
- package/packages/core/.papi/descriptors/dist/paseo_metadata.d.ts +2 -0
- package/packages/core/.papi/descriptors/dist/paseoah.d.ts +242 -0
- package/packages/core/.papi/descriptors/dist/paseoah_metadata-KVQKFE5R.mjs +1 -0
- package/packages/core/.papi/descriptors/dist/paseoah_metadata.d.ts +2 -0
- package/packages/core/.papi/descriptors/dist/polkadot.d.ts +291 -0
- package/packages/core/.papi/descriptors/dist/polkadot_metadata-ASE5745E.mjs +1 -0
- package/packages/core/.papi/descriptors/dist/polkadot_metadata.d.ts +2 -0
- package/packages/core/.papi/descriptors/dist/rah.d.ts +434 -0
- package/packages/core/.papi/descriptors/dist/rah_metadata-FL7L2MWD.mjs +1 -0
- package/packages/core/.papi/descriptors/dist/rah_metadata.d.ts +2 -0
- package/packages/core/.papi/descriptors/dist/rococo.d.ts +291 -0
- package/packages/core/.papi/descriptors/dist/rococo_metadata-CHYQZIV5.mjs +1 -0
- package/packages/core/.papi/descriptors/dist/rococo_metadata.d.ts +2 -0
- package/packages/core/.papi/descriptors/dist/wah.d.ts +434 -0
- package/packages/core/.papi/descriptors/dist/wah_metadata-M2H6IX7C.mjs +1 -0
- package/packages/core/.papi/descriptors/dist/wah_metadata.d.ts +2 -0
- package/packages/core/.papi/descriptors/dist/westend.d.ts +291 -0
- package/packages/core/.papi/descriptors/dist/westend_metadata-IAM3KHRQ.mjs +1 -0
- package/packages/core/.papi/descriptors/dist/westend_metadata.d.ts +2 -0
- package/packages/core/.papi/descriptors/package.json +24 -0
- package/packages/core/.papi/metadata/hdx.scale +0 -0
- package/packages/core/.papi/metadata/kah.scale +0 -0
- package/packages/core/.papi/metadata/kusama.scale +0 -0
- package/packages/core/.papi/metadata/pah.scale +0 -0
- package/packages/core/.papi/metadata/paseo.scale +0 -0
- package/packages/core/.papi/metadata/paseoah.scale +0 -0
- package/packages/core/.papi/metadata/polkadot.scale +0 -0
- package/packages/core/.papi/metadata/rah.scale +0 -0
- package/packages/core/.papi/metadata/rococo.scale +0 -0
- package/packages/core/.papi/metadata/wah.scale +0 -0
- package/packages/core/.papi/metadata/westend.scale +0 -0
- package/packages/core/.papi/polkadot-api.json +50 -0
- package/packages/core/dist/index.d.mts +676 -0
- package/packages/core/dist/index.d.ts +676 -0
- package/packages/core/dist/index.js +1 -0
- package/packages/core/dist/index.mjs +1 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
var A="bWV0YQ/tDgAMHHNwX2NvcmUYY3J5cHRvLEFjY291bnRJZDMyAAAEAAQBIFt1ODsgMzJdAAAEAAADIAAAAAgACAAABQMADAgwZnJhbWVfc3lzdGVtLEFjY291bnRJbmZvCBROb25jZQEQLEFjY291bnREYXRhARQAFAEUbm9uY2UQARROb25jZQABJGNvbnN1bWVycxABIFJlZkNvdW50AAEkcHJvdmlkZXJzEAEgUmVmQ291bnQAASxzdWZmaWNpZW50cxABIFJlZkNvdW50AAEQZGF0YRQBLEFjY291bnREYXRhAAAQAAAFBQAUDDxwYWxsZXRfYmFsYW5jZXMUdHlwZXMsQWNjb3VudERhdGEEHEJhbGFuY2UBGAAQARBmcmVlGAEcQmFsYW5jZQABIHJlc2VydmVkGAEcQmFsYW5jZQABGGZyb3plbhgBHEJhbGFuY2UAARRmbGFncxwBKEV4dHJhRmxhZ3MAABgAAAUHABwMPHBhbGxldF9iYWxhbmNlcxR0eXBlcyhFeHRyYUZsYWdzAAAEABgBEHUxMjgAACAAAAUAACQMNGZyYW1lX3N1cHBvcnQgZGlzcGF0Y2hAUGVyRGlzcGF0Y2hDbGFzcwQEVAEoAAwBGG5vcm1hbCgBBFQAASxvcGVyYXRpb25hbCgBBFQAASRtYW5kYXRvcnkoAQRUAAAoDChzcF93ZWlnaHRzJHdlaWdodF92MhhXZWlnaHQAAAgBIHJlZl90aW1lLAEMdTY0AAEocHJvb2Zfc2l6ZSwBDHU2NAAALAAABjAAMAAABQYANAg8cHJpbWl0aXZlX3R5cGVzEEgyNTYAAAQABAEgW3U4OyAzMl0AADgAAAIIADwQKHNwX3J1bnRpbWUcZ2VuZXJpYxhkaWdlc3QYRGlnZXN0AAAEARBsb2dzQAE8VmVjPERpZ2VzdEl0ZW0+AABAAAACRABEEChzcF9ydW50aW1lHGdlbmVyaWMYZGlnZXN0KERpZ2VzdEl0ZW0AARQoUHJlUnVudGltZQgASAFEQ29uc2Vuc3VzRW5naW5lSWQAADgBHFZlYzx1OD4ABgAkQ29uc2Vuc3VzCABIAURDb25zZW5zdXNFbmdpbmVJZAAAOAEcVmVjPHU4PgAEABBTZWFsCABIAURDb25zZW5zdXNFbmdpbmVJZAAAOAEcVmVjPHU4PgAFABRPdGhlcgQAOAEcVmVjPHU4PgAAAGRSdW50aW1lRW52aXJvbm1lbnRVcGRhdGVkAAgAAEgAAAMEAAAACABMAAACUABQCDBmcmFtZV9zeXN0ZW0sRXZlbnRSZWNvcmQIBEUBVARUATQADAEUcGhhc2WRBwEUUGhhc2UAARRldmVudFQBBEUAARh0b3BpY3OVAQEYVmVjPFQ+AABUCDRwYXNlb19ydW50aW1lMFJ1bnRpbWVFdmVudAABoBhTeXN0ZW0EAFgBcGZyYW1lX3N5c3RlbTo6RXZlbnQ8UnVudGltZT4AAAAkU2NoZWR1bGVyBAB8AYBwYWxsZXRfc2NoZWR1bGVyOjpFdmVudDxSdW50aW1lPgABACBQcmVpbWFnZQQAkAF8cGFsbGV0X3ByZWltYWdlOjpFdmVudDxSdW50aW1lPgAKABxJbmRpY2VzBACUAXhwYWxsZXRfaW5kaWNlczo6RXZlbnQ8UnVudGltZT4ABAAgQmFsYW5jZXMEAJgBfHBhbGxldF9iYWxhbmNlczo6RXZlbnQ8UnVudGltZT4ABQBIVHJhbnNhY3Rpb25QYXltZW50BACgAahwYWxsZXRfdHJhbnNhY3Rpb25fcGF5bWVudDo6RXZlbnQ8UnVudGltZT4AIAAcU3Rha2luZwQApAF4cGFsbGV0X3N0YWtpbmc6OkV2ZW50PFJ1bnRpbWU+AAcAIE9mZmVuY2VzBAC8AVhwYWxsZXRfb2ZmZW5jZXM6OkV2ZW50AAgAHFNlc3Npb24EAMQBVHBhbGxldF9zZXNzaW9uOjpFdmVudAAJABxHcmFuZHBhBADIAVRwYWxsZXRfZ3JhbmRwYTo6RXZlbnQACwAgVHJlYXN1cnkEANgBfHBhbGxldF90cmVhc3VyeTo6RXZlbnQ8UnVudGltZT4AEwBAQ29udmljdGlvblZvdGluZwQAZQEBoHBhbGxldF9jb252aWN0aW9uX3ZvdGluZzo6RXZlbnQ8UnVudGltZT4AFAAkUmVmZXJlbmRhBABpAQGAcGFsbGV0X3JlZmVyZW5kYTo6RXZlbnQ8UnVudGltZT4AFQAkV2hpdGVsaXN0BADlBgGAcGFsbGV0X3doaXRlbGlzdDo6RXZlbnQ8UnVudGltZT4AFwAYQ2xhaW1zBAD5BgFYY2xhaW1zOjpFdmVudDxSdW50aW1lPgAYABxWZXN0aW5nBAD9BgF4cGFsbGV0X3Zlc3Rpbmc6OkV2ZW50PFJ1bnRpbWU+ABkAHFV0aWxpdHkEAAEHAVRwYWxsZXRfdXRpbGl0eTo6RXZlbnQAGgAUUHJveHkEAAUHAXBwYWxsZXRfcHJveHk6OkV2ZW50PFJ1bnRpbWU+AB0AIE11bHRpc2lnBAAJBwF8cGFsbGV0X211bHRpc2lnOjpFdmVudDxSdW50aW1lPgAeACBCb3VudGllcwQADQcBfHBhbGxldF9ib3VudGllczo6RXZlbnQ8UnVudGltZT4AIgA0Q2hpbGRCb3VudGllcwQAEQcBlHBhbGxldF9jaGlsZF9ib3VudGllczo6RXZlbnQ8UnVudGltZT4AJgBoRWxlY3Rpb25Qcm92aWRlck11bHRpUGhhc2UEABUHAdBwYWxsZXRfZWxlY3Rpb25fcHJvdmlkZXJfbXVsdGlfcGhhc2U6OkV2ZW50PFJ1bnRpbWU+ACQAJFZvdGVyTGlzdAQAJQcB9HBhbGxldF9iYWdzX2xpc3Q6OkV2ZW50PFJ1bnRpbWUsIHBhbGxldF9iYWdzX2xpc3Q6Okluc3RhbmNlMT4AJQA8Tm9taW5hdGlvblBvb2xzBAApBwGccGFsbGV0X25vbWluYXRpb25fcG9vbHM6OkV2ZW50PFJ1bnRpbWU+ACcALEZhc3RVbnN0YWtlBAAtBwGMcGFsbGV0X2Zhc3RfdW5zdGFrZTo6RXZlbnQ8UnVudGltZT4AKAA0UGFyYUluY2x1c2lvbgQAMQcBkHBhcmFjaGFpbnNfaW5jbHVzaW9uOjpFdmVudDxSdW50aW1lPgA1ABRQYXJhcwQAQQcBXHBhcmFjaGFpbnNfcGFyYXM6OkV2ZW50ADgAEEhybXAEAEUHAXxwYXJhY2hhaW5zX2hybXA6OkV2ZW50PFJ1bnRpbWU+ADwANFBhcmFzRGlzcHV0ZXMEAEkHAYxwYXJhY2hhaW5zX2Rpc3B1dGVzOjpFdmVudDxSdW50aW1lPgA+ACBPbkRlbWFuZAQAVQcBtHBhcmFjaGFpbnNfYXNzaWduZXJfb25fZGVtYW5kOjpFdmVudDxSdW50aW1lPgBAACRSZWdpc3RyYXIEAFkHAXxwYXJhc19yZWdpc3RyYXI6OkV2ZW50PFJ1bnRpbWU+AEYAFFNsb3RzBABdBwFUc2xvdHM6OkV2ZW50PFJ1bnRpbWU+AEcAIEF1Y3Rpb25zBABhBwFgYXVjdGlvbnM6OkV2ZW50PFJ1bnRpbWU+AEgAJENyb3dkbG9hbgQAZQcBZGNyb3dkbG9hbjo6RXZlbnQ8UnVudGltZT4ASQAgQ29yZXRpbWUEAGkHAWBjb3JldGltZTo6RXZlbnQ8UnVudGltZT4ASgBIU3RhdGVUcmllTWlncmF0aW9uBABtBwGscGFsbGV0X3N0YXRlX3RyaWVfbWlncmF0aW9uOjpFdmVudDxSdW50aW1lPgBiACRYY21QYWxsZXQEAHkHAWhwYWxsZXRfeGNtOjpFdmVudDxSdW50aW1lPgBjADBNZXNzYWdlUXVldWUEAIEHAZBwYWxsZXRfbWVzc2FnZV9xdWV1ZTo6RXZlbnQ8UnVudGltZT4AZAAkQXNzZXRSYXRlBACJBwGEcGFsbGV0X2Fzc2V0X3JhdGU6OkV2ZW50PFJ1bnRpbWU+AGUAEFN1ZG8EAI0HAWxwYWxsZXRfc3Vkbzo6RXZlbnQ8UnVudGltZT4A/wAAWAwwZnJhbWVfc3lzdGVtGHBhbGxldBRFdmVudAQEVAABHEBFeHRyaW5zaWNTdWNjZXNzBAE0ZGlzcGF0Y2hfaW5mb1wBMERpc3BhdGNoSW5mbwAABJBBbiBleHRyaW5zaWMgY29tcGxldGVkIHN1Y2Nlc3NmdWxseS48RXh0cmluc2ljRmFpbGVkCAE4ZGlzcGF0Y2hfZXJyb3JoATREaXNwYXRjaEVycm9yAAE0ZGlzcGF0Y2hfaW5mb1wBMERpc3BhdGNoSW5mbwABBFBBbiBleHRyaW5zaWMgZmFpbGVkLixDb2RlVXBkYXRlZAACBFBgOmNvZGVgIHdhcyB1cGRhdGVkLihOZXdBY2NvdW50BAEcYWNjb3VudAABMFQ6OkFjY291bnRJZAADBGhBIG5ldyBhY2NvdW50IHdhcyBjcmVhdGVkLjRLaWxsZWRBY2NvdW50BAEcYWNjb3VudAABMFQ6OkFjY291bnRJZAAEBFhBbiBhY2NvdW50IHdhcyByZWFwZWQuIFJlbWFya2VkCAEYc2VuZGVyAAEwVDo6QWNjb3VudElkAAEQaGFzaDQBHFQ6Okhhc2gABQRwT24gb24tY2hhaW4gcmVtYXJrIGhhcHBlbmVkLkRVcGdyYWRlQXV0aG9yaXplZAgBJGNvZGVfaGFzaDQBHFQ6Okhhc2gAATRjaGVja192ZXJzaW9uIAEQYm9vbAAGBGhBbiB1cGdyYWRlIHdhcyBhdXRob3JpemVkLgRwRXZlbnQgZm9yIHRoZSBTeXN0ZW0gcGFsbGV0LlwMNGZyYW1lX3N1cHBvcnQgZGlzcGF0Y2gwRGlzcGF0Y2hJbmZvAAAMARh3ZWlnaHQoARhXZWlnaHQAARRjbGFzc2ABNERpc3BhdGNoQ2xhc3MAASBwYXlzX2ZlZWQBEFBheXMAAGAMNGZyYW1lX3N1cHBvcnQgZGlzcGF0Y2g0RGlzcGF0Y2hDbGFzcwABDBhOb3JtYWwAAAAsT3BlcmF0aW9uYWwAAQAkTWFuZGF0b3J5AAIAAGQMNGZyYW1lX3N1cHBvcnQgZGlzcGF0Y2gQUGF5cwABCAxZZXMAAAAITm8AAQAAaAgoc3BfcnVudGltZTREaXNwYXRjaEVycm9yAAE4FE90aGVyAAAAMENhbm5vdExvb2t1cAABACRCYWRPcmlnaW4AAgAYTW9kdWxlBABsASxNb2R1bGVFcnJvcgADAERDb25zdW1lclJlbWFpbmluZwAEACxOb1Byb3ZpZGVycwAFAEBUb29NYW55Q29uc3VtZXJzAAYAFFRva2VuBABwAShUb2tlbkVycm9yAAcAKEFyaXRobWV0aWMEAHQBPEFyaXRobWV0aWNFcnJvcgAIADRUcmFuc2FjdGlvbmFsBAB4AUhUcmFuc2FjdGlvbmFsRXJyb3IACQAkRXhoYXVzdGVkAAoAKENvcnJ1cHRpb24ACwAsVW5hdmFpbGFibGUADAA4Um9vdE5vdEFsbG93ZWQADQAAbAgoc3BfcnVudGltZSxNb2R1bGVFcnJvcgAACAEUaW5kZXgIAQh1OAABFGVycm9ySAGMW3U4OyBNQVhfTU9EVUxFX0VSUk9SX0VOQ09ERURfU0laRV0AAHAIKHNwX3J1bnRpbWUoVG9rZW5FcnJvcgABKEBGdW5kc1VuYXZhaWxhYmxlAAAAME9ubHlQcm92aWRlcgABADBCZWxvd01pbmltdW0AAgAwQ2Fubm90Q3JlYXRlAAMAMFVua25vd25Bc3NldAAEABhGcm96ZW4ABQAsVW5zdXBwb3J0ZWQABgBAQ2Fubm90Q3JlYXRlSG9sZAAHADROb3RFeHBlbmRhYmxlAAgAHEJsb2NrZWQACQAAdAg0c3BfYXJpdGhtZXRpYzxBcml0aG1ldGljRXJyb3IAAQwkVW5kZXJmbG93AAAAIE92ZXJmbG93AAEAOERpdmlzaW9uQnlaZXJvAAIAAHgIKHNwX3J1bnRpbWVIVHJhbnNhY3Rpb25hbEVycm9yAAEIMExpbWl0UmVhY2hlZAAAABxOb0xheWVyAAEAAHwMQHBhbGxldF9zY2hlZHVsZXIYcGFsbGV0FEV2ZW50BARUAAEkJFNjaGVkdWxlZAgBEHdoZW4QAURCbG9ja051bWJlckZvcjxUPgABFGluZGV4EAEMdTMyAAAEUFNjaGVkdWxlZCBzb21lIHRhc2suIENhbmNlbGVkCAEQd2hlbhABREJsb2NrTnVtYmVyRm9yPFQ+AAEUaW5kZXgQAQx1MzIAAQRMQ2FuY2VsZWQgc29tZSB0YXNrLihEaXNwYXRjaGVkDAEQdGFza4ABeFRhc2tBZGRyZXNzPEJsb2NrTnVtYmVyRm9yPFQ+PgABCGlkhAFAT3B0aW9uPFRhc2tOYW1lPgABGHJlc3VsdIgBOERpc3BhdGNoUmVzdWx0AAIEVERpc3BhdGNoZWQgc29tZSB0YXNrLiBSZXRyeVNldBABEHRhc2uAAXhUYXNrQWRkcmVzczxCbG9ja051bWJlckZvcjxUPj4AAQhpZIQBQE9wdGlvbjxUYXNrTmFtZT4AARhwZXJpb2QQAURCbG9ja051bWJlckZvcjxUPgABHHJldHJpZXMIAQh1OAADBKBTZXQgYSByZXRyeSBjb25maWd1cmF0aW9uIGZvciBzb21lIHRhc2suOFJldHJ5Q2FuY2VsbGVkCAEQdGFza4ABeFRhc2tBZGRyZXNzPEJsb2NrTnVtYmVyRm9yPFQ+PgABCGlkhAFAT3B0aW9uPFRhc2tOYW1lPgAEBKxDYW5jZWwgYSByZXRyeSBjb25maWd1cmF0aW9uIGZvciBzb21lIHRhc2suPENhbGxVbmF2YWlsYWJsZQgBEHRhc2uAAXhUYXNrQWRkcmVzczxCbG9ja051bWJlckZvcjxUPj4AAQhpZIQBQE9wdGlvbjxUYXNrTmFtZT4ABQQpAVRoZSBjYWxsIGZvciB0aGUgcHJvdmlkZWQgaGFzaCB3YXMgbm90IGZvdW5kIHNvIHRoZSB0YXNrIGhhcyBiZWVuIGFib3J0ZWQuOFBlcmlvZGljRmFpbGVkCAEQdGFza4ABeFRhc2tBZGRyZXNzPEJsb2NrTnVtYmVyRm9yPFQ+PgABCGlkhAFAT3B0aW9uPFRhc2tOYW1lPgAGBD0BVGhlIGdpdmVuIHRhc2sgd2FzIHVuYWJsZSB0byBiZSByZW5ld2VkIHNpbmNlIHRoZSBhZ2VuZGEgaXMgZnVsbCBhdCB0aGF0IGJsb2NrLixSZXRyeUZhaWxlZAgBEHRhc2uAAXhUYXNrQWRkcmVzczxCbG9ja051bWJlckZvcjxUPj4AAQhpZIQBQE9wdGlvbjxUYXNrTmFtZT4ABwhdAVRoZSBnaXZlbiB0YXNrIHdhcyB1bmFibGUgdG8gYmUgcmV0cmllZCBzaW5jZSB0aGUgYWdlbmRhIGlzIGZ1bGwgYXQgdGhhdCBibG9jayBvciB0aGVyZZx3YXMgbm90IGVub3VnaCB3ZWlnaHQgdG8gcmVzY2hlZHVsZSBpdC5UUGVybWFuZW50bHlPdmVyd2VpZ2h0CAEQdGFza4ABeFRhc2tBZGRyZXNzPEJsb2NrTnVtYmVyRm9yPFQ+PgABCGlkhAFAT3B0aW9uPFRhc2tOYW1lPgAIBPBUaGUgZ2l2ZW4gdGFzayBjYW4gbmV2ZXIgYmUgZXhlY3V0ZWQgc2luY2UgaXQgaXMgb3ZlcndlaWdodC4EMEV2ZW50cyB0eXBlLoAAAAQIEBAAhAQYT3B0aW9uBARUAQQBCBBOb25lAAAAEFNvbWUEAAQAAAEAAIgEGFJlc3VsdAgEVAGMBEUBaAEICE9rBACMAAAAAAxFcnIEAGgAAAEAAIwAAAQAAJAMPHBhbGxldF9wcmVpbWFnZRhwYWxsZXQURXZlbnQEBFQAAQwUTm90ZWQEARBoYXNoNAEcVDo6SGFzaAAABGhBIHByZWltYWdlIGhhcyBiZWVuIG5vdGVkLiRSZXF1ZXN0ZWQEARBoYXNoNAEcVDo6SGFzaAABBHhBIHByZWltYWdlIGhhcyBiZWVuIHJlcXVlc3RlZC4cQ2xlYXJlZAQBEGhhc2g0ARxUOjpIYXNoAAIEbEEgcHJlaW1hZ2UgaGFzIGJlbiBjbGVhcmVkLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldJQMOHBhbGxldF9pbmRpY2VzGHBhbGxldBRFdmVudAQEVAABDDRJbmRleEFzc2lnbmVkCAEMd2hvAAEwVDo6QWNjb3VudElkAAEUaW5kZXgQATxUOjpBY2NvdW50SW5kZXgAAAR0QSBhY2NvdW50IGluZGV4IHdhcyBhc3NpZ25lZC4oSW5kZXhGcmVlZAQBFGluZGV4EAE8VDo6QWNjb3VudEluZGV4AAEEvEEgYWNjb3VudCBpbmRleCBoYXMgYmVlbiBmcmVlZCB1cCAodW5hc3NpZ25lZCkuLEluZGV4RnJvemVuCAEUaW5kZXgQATxUOjpBY2NvdW50SW5kZXgAAQx3aG8AATBUOjpBY2NvdW50SWQAAgToQSBhY2NvdW50IGluZGV4IGhhcyBiZWVuIGZyb3plbiB0byBpdHMgY3VycmVudCBhY2NvdW50IElELgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldJgMPHBhbGxldF9iYWxhbmNlcxhwYWxsZXQURXZlbnQIBFQABEkAAVgcRW5kb3dlZAgBHGFjY291bnQAATBUOjpBY2NvdW50SWQAATBmcmVlX2JhbGFuY2UYAShUOjpCYWxhbmNlAAAEuEFuIGFjY291bnQgd2FzIGNyZWF0ZWQgd2l0aCBzb21lIGZyZWUgYmFsYW5jZS4gRHVzdExvc3QIARxhY2NvdW50AAEwVDo6QWNjb3VudElkAAEYYW1vdW50GAEoVDo6QmFsYW5jZQABCD0BQW4gYWNjb3VudCB3YXMgcmVtb3ZlZCB3aG9zZSBiYWxhbmNlIHdhcyBub24temVybyBidXQgYmVsb3cgRXhpc3RlbnRpYWxEZXBvc2l0LHhyZXN1bHRpbmcgaW4gYW4gb3V0cmlnaHQgbG9zcy4gVHJhbnNmZXIMARBmcm9tAAEwVDo6QWNjb3VudElkAAEIdG8AATBUOjpBY2NvdW50SWQAARhhbW91bnQYAShUOjpCYWxhbmNlAAIETFRyYW5zZmVyIHN1Y2NlZWRlZC4oQmFsYW5jZVNldAgBDHdobwABMFQ6OkFjY291bnRJZAABEGZyZWUYAShUOjpCYWxhbmNlAAMEaEEgYmFsYW5jZSB3YXMgc2V0IGJ5IHJvb3QuIFJlc2VydmVkCAEMd2hvAAEwVDo6QWNjb3VudElkAAEYYW1vdW50GAEoVDo6QmFsYW5jZQAEBOBTb21lIGJhbGFuY2Ugd2FzIHJlc2VydmVkIChtb3ZlZCBmcm9tIGZyZWUgdG8gcmVzZXJ2ZWQpLihVbnJlc2VydmVkCAEMd2hvAAEwVDo6QWNjb3VudElkAAEYYW1vdW50GAEoVDo6QmFsYW5jZQAFBOhTb21lIGJhbGFuY2Ugd2FzIHVucmVzZXJ2ZWQgKG1vdmVkIGZyb20gcmVzZXJ2ZWQgdG8gZnJlZSkuSFJlc2VydmVSZXBhdHJpYXRlZBABEGZyb20AATBUOjpBY2NvdW50SWQAAQh0bwABMFQ6OkFjY291bnRJZAABGGFtb3VudBgBKFQ6OkJhbGFuY2UAAUhkZXN0aW5hdGlvbl9zdGF0dXOcARhTdGF0dXMABghNAVNvbWUgYmFsYW5jZSB3YXMgbW92ZWQgZnJvbSB0aGUgcmVzZXJ2ZSBvZiB0aGUgZmlyc3QgYWNjb3VudCB0byB0aGUgc2Vjb25kIGFjY291bnQu2EZpbmFsIGFyZ3VtZW50IGluZGljYXRlcyB0aGUgZGVzdGluYXRpb24gYmFsYW5jZSB0eXBlLhxEZXBvc2l0CAEMd2hvAAEwVDo6QWNjb3VudElkAAEYYW1vdW50GAEoVDo6QmFsYW5jZQAHBNhTb21lIGFtb3VudCB3YXMgZGVwb3NpdGVkIChlLmcuIGZvciB0cmFuc2FjdGlvbiBmZWVzKS4gV2l0aGRyYXcIAQx3aG8AATBUOjpBY2NvdW50SWQAARhhbW91bnQYAShUOjpCYWxhbmNlAAgEHQFTb21lIGFtb3VudCB3YXMgd2l0aGRyYXduIGZyb20gdGhlIGFjY291bnQgKGUuZy4gZm9yIHRyYW5zYWN0aW9uIGZlZXMpLhxTbGFzaGVkCAEMd2hvAAEwVDo6QWNjb3VudElkAAEYYW1vdW50GAEoVDo6QmFsYW5jZQAJBAEBU29tZSBhbW91bnQgd2FzIHJlbW92ZWQgZnJvbSB0aGUgYWNjb3VudCAoZS5nLiBmb3IgbWlzYmVoYXZpb3IpLhhNaW50ZWQIAQx3aG8AATBUOjpBY2NvdW50SWQAARhhbW91bnQYAShUOjpCYWxhbmNlAAoEnFNvbWUgYW1vdW50IHdhcyBtaW50ZWQgaW50byBhbiBhY2NvdW50LhhCdXJuZWQIAQx3aG8AATBUOjpBY2NvdW50SWQAARhhbW91bnQYAShUOjpCYWxhbmNlAAsEnFNvbWUgYW1vdW50IHdhcyBidXJuZWQgZnJvbSBhbiBhY2NvdW50LiRTdXNwZW5kZWQIAQx3aG8AATBUOjpBY2NvdW50SWQAARhhbW91bnQYAShUOjpCYWxhbmNlAAwEFQFTb21lIGFtb3VudCB3YXMgc3VzcGVuZGVkIGZyb20gYW4gYWNjb3VudCAoaXQgY2FuIGJlIHJlc3RvcmVkIGxhdGVyKS4gUmVzdG9yZWQIAQx3aG8AATBUOjpBY2NvdW50SWQAARhhbW91bnQYAShUOjpCYWxhbmNlAA0EpFNvbWUgYW1vdW50IHdhcyByZXN0b3JlZCBpbnRvIGFuIGFjY291bnQuIFVwZ3JhZGVkBAEMd2hvAAEwVDo6QWNjb3VudElkAA4EYEFuIGFjY291bnQgd2FzIHVwZ3JhZGVkLhhJc3N1ZWQEARhhbW91bnQYAShUOjpCYWxhbmNlAA8ELQFUb3RhbCBpc3N1YW5jZSB3YXMgaW5jcmVhc2VkIGJ5IGBhbW91bnRgLCBjcmVhdGluZyBhIGNyZWRpdCB0byBiZSBiYWxhbmNlZC4kUmVzY2luZGVkBAEYYW1vdW50GAEoVDo6QmFsYW5jZQAQBCUBVG90YWwgaXNzdWFuY2Ugd2FzIGRlY3JlYXNlZCBieSBgYW1vdW50YCwgY3JlYXRpbmcgYSBkZWJ0IHRvIGJlIGJhbGFuY2VkLhhMb2NrZWQIAQx3aG8AATBUOjpBY2NvdW50SWQAARhhbW91bnQYAShUOjpCYWxhbmNlABEEYFNvbWUgYmFsYW5jZSB3YXMgbG9ja2VkLiBVbmxvY2tlZAgBDHdobwABMFQ6OkFjY291bnRJZAABGGFtb3VudBgBKFQ6OkJhbGFuY2UAEgRoU29tZSBiYWxhbmNlIHdhcyB1bmxvY2tlZC4YRnJvemVuCAEMd2hvAAEwVDo6QWNjb3VudElkAAEYYW1vdW50GAEoVDo6QmFsYW5jZQATBGBTb21lIGJhbGFuY2Ugd2FzIGZyb3plbi4YVGhhd2VkCAEMd2hvAAEwVDo6QWNjb3VudElkAAEYYW1vdW50GAEoVDo6QmFsYW5jZQAUBGBTb21lIGJhbGFuY2Ugd2FzIHRoYXdlZC5MVG90YWxJc3N1YW5jZUZvcmNlZAgBDG9sZBgBKFQ6OkJhbGFuY2UAAQxuZXcYAShUOjpCYWxhbmNlABUErFRoZSBgVG90YWxJc3N1YW5jZWAgd2FzIGZvcmNlZnVsbHkgY2hhbmdlZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXScFDRmcmFtZV9zdXBwb3J0GHRyYWl0cxh0b2tlbnMQbWlzYzRCYWxhbmNlU3RhdHVzAAEIEEZyZWUAAAAgUmVzZXJ2ZWQAAQAAoAxocGFsbGV0X3RyYW5zYWN0aW9uX3BheW1lbnQYcGFsbGV0FEV2ZW50BARUAAEESFRyYW5zYWN0aW9uRmVlUGFpZAwBDHdobwABMFQ6OkFjY291bnRJZAABKGFjdHVhbF9mZWUYATBCYWxhbmNlT2Y8VD4AAQx0aXAYATBCYWxhbmNlT2Y8VD4AAAhZAUEgdHJhbnNhY3Rpb24gZmVlIGBhY3R1YWxfZmVlYCwgb2Ygd2hpY2ggYHRpcGAgd2FzIGFkZGVkIHRvIHRoZSBtaW5pbXVtIGluY2x1c2lvbiBmZWUsXGhhcyBiZWVuIHBhaWQgYnkgYHdob2AuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0pBA4cGFsbGV0X3N0YWtpbmcYcGFsbGV0GHBhbGxldBRFdmVudAQEVAABSBxFcmFQYWlkDAEkZXJhX2luZGV4EAEgRXJhSW5kZXgAAUB2YWxpZGF0b3JfcGF5b3V0GAEwQmFsYW5jZU9mPFQ+AAEkcmVtYWluZGVyGAEwQmFsYW5jZU9mPFQ+AAAIVQFUaGUgZXJhIHBheW91dCBoYXMgYmVlbiBzZXQ7IHRoZSBmaXJzdCBiYWxhbmNlIGlzIHRoZSB2YWxpZGF0b3ItcGF5b3V0OyB0aGUgc2Vjb25kIGlzwHRoZSByZW1haW5kZXIgZnJvbSB0aGUgbWF4aW11bSBhbW91bnQgb2YgcmV3YXJkLiBSZXdhcmRlZAwBFHN0YXNoAAEwVDo6QWNjb3VudElkAAEQZGVzdKgBfFJld2FyZERlc3RpbmF0aW9uPFQ6OkFjY291bnRJZD4AARhhbW91bnQYATBCYWxhbmNlT2Y8VD4AAQQNAVRoZSBub21pbmF0b3IgaGFzIGJlZW4gcmV3YXJkZWQgYnkgdGhpcyBhbW91bnQgdG8gdGhpcyBkZXN0aW5hdGlvbi4cU2xhc2hlZAgBGHN0YWtlcgABMFQ6OkFjY291bnRJZAABGGFtb3VudBgBMEJhbGFuY2VPZjxUPgACBB0BQSBzdGFrZXIgKHZhbGlkYXRvciBvciBub21pbmF0b3IpIGhhcyBiZWVuIHNsYXNoZWQgYnkgdGhlIGdpdmVuIGFtb3VudC40U2xhc2hSZXBvcnRlZAwBJHZhbGlkYXRvcgABMFQ6OkFjY291bnRJZAABIGZyYWN0aW9urAEcUGVyYmlsbAABJHNsYXNoX2VyYRABIEVyYUluZGV4AAMIWQFBIHNsYXNoIGZvciB0aGUgZ2l2ZW4gdmFsaWRhdG9yLCBmb3IgdGhlIGdpdmVuIHBlcmNlbnRhZ2Ugb2YgdGhlaXIgc3Rha2UsIGF0IHRoZSBnaXZlblRlcmEgYXMgYmVlbiByZXBvcnRlZC5oT2xkU2xhc2hpbmdSZXBvcnREaXNjYXJkZWQEATRzZXNzaW9uX2luZGV4EAEwU2Vzc2lvbkluZGV4AAQIGQFBbiBvbGQgc2xhc2hpbmcgcmVwb3J0IGZyb20gYSBwcmlvciBlcmEgd2FzIGRpc2NhcmRlZCBiZWNhdXNlIGl0IGNvdWxkRG5vdCBiZSBwcm9jZXNzZWQuOFN0YWtlcnNFbGVjdGVkAAUEhEEgbmV3IHNldCBvZiBzdGFrZXJzIHdhcyBlbGVjdGVkLhhCb25kZWQIARRzdGFzaAABMFQ6OkFjY291bnRJZAABGGFtb3VudBgBMEJhbGFuY2VPZjxUPgAGENBBbiBhY2NvdW50IGhhcyBib25kZWQgdGhpcyBhbW91bnQuIFxbc3Rhc2gsIGFtb3VudFxdAE0BTk9URTogVGhpcyBldmVudCBpcyBvbmx5IGVtaXR0ZWQgd2hlbiBmdW5kcyBhcmUgYm9uZGVkIHZpYSBhIGRpc3BhdGNoYWJsZS4gTm90YWJseSwhAWl0IHdpbGwgbm90IGJlIGVtaXR0ZWQgZm9yIHN0YWtpbmcgcmV3YXJkcyB3aGVuIHRoZXkgYXJlIGFkZGVkIHRvIHN0YWtlLiBVbmJvbmRlZAgBFHN0YXNoAAEwVDo6QWNjb3VudElkAAEYYW1vdW50GAEwQmFsYW5jZU9mPFQ+AAcEkEFuIGFjY291bnQgaGFzIHVuYm9uZGVkIHRoaXMgYW1vdW50LiRXaXRoZHJhd24IARRzdGFzaAABMFQ6OkFjY291bnRJZAABGGFtb3VudBgBMEJhbGFuY2VPZjxUPgAICFkBQW4gYWNjb3VudCBoYXMgY2FsbGVkIGB3aXRoZHJhd191bmJvbmRlZGAgYW5kIHJlbW92ZWQgdW5ib25kaW5nIGNodW5rcyB3b3J0aCBgQmFsYW5jZWBkZnJvbSB0aGUgdW5sb2NraW5nIHF1ZXVlLhhLaWNrZWQIASRub21pbmF0b3IAATBUOjpBY2NvdW50SWQAARRzdGFzaAABMFQ6OkFjY291bnRJZAAJBLRBIG5vbWluYXRvciBoYXMgYmVlbiBraWNrZWQgZnJvbSBhIHZhbGlkYXRvci5UU3Rha2luZ0VsZWN0aW9uRmFpbGVkAAoErFRoZSBlbGVjdGlvbiBmYWlsZWQuIE5vIG5ldyBlcmEgaXMgcGxhbm5lZC4cQ2hpbGxlZAQBFHN0YXNoAAEwVDo6QWNjb3VudElkAAsEIQFBbiBhY2NvdW50IGhhcyBzdG9wcGVkIHBhcnRpY2lwYXRpbmcgYXMgZWl0aGVyIGEgdmFsaWRhdG9yIG9yIG5vbWluYXRvci40UGF5b3V0U3RhcnRlZAgBJGVyYV9pbmRleBABIEVyYUluZGV4AAE8dmFsaWRhdG9yX3N0YXNoAAEwVDo6QWNjb3VudElkAAwEmFRoZSBzdGFrZXJzJyByZXdhcmRzIGFyZSBnZXR0aW5nIHBhaWQuRFZhbGlkYXRvclByZWZzU2V0CAEUc3Rhc2gAATBUOjpBY2NvdW50SWQAARRwcmVmc7ABOFZhbGlkYXRvclByZWZzAA0EmEEgdmFsaWRhdG9yIGhhcyBzZXQgdGhlaXIgcHJlZmVyZW5jZXMuaFNuYXBzaG90Vm90ZXJzU2l6ZUV4Y2VlZGVkBAEQc2l6ZRABDHUzMgAOBGhWb3RlcnMgc2l6ZSBsaW1pdCByZWFjaGVkLmxTbmFwc2hvdFRhcmdldHNTaXplRXhjZWVkZWQEARBzaXplEAEMdTMyAA8EbFRhcmdldHMgc2l6ZSBsaW1pdCByZWFjaGVkLiBGb3JjZUVyYQQBEG1vZGW4ARxGb3JjaW5nABAEdEEgbmV3IGZvcmNlIGVyYSBtb2RlIHdhcyBzZXQuZENvbnRyb2xsZXJCYXRjaERlcHJlY2F0ZWQEASBmYWlsdXJlcxABDHUzMgARBKRSZXBvcnQgb2YgYSBjb250cm9sbGVyIGJhdGNoIGRlcHJlY2F0aW9uLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldKgIOHBhbGxldF9zdGFraW5nRFJld2FyZERlc3RpbmF0aW9uBCRBY2NvdW50SWQBAAEUGFN0YWtlZAAAABRTdGFzaAABAChDb250cm9sbGVyAAIAHEFjY291bnQEAAABJEFjY291bnRJZAADABBOb25lAAQAAKwMNHNwX2FyaXRobWV0aWMocGVyX3RoaW5ncxxQZXJiaWxsAAAEABABDHUzMgAAsAg4cGFsbGV0X3N0YWtpbmc4VmFsaWRhdG9yUHJlZnMAAAgBKGNvbW1pc3Npb260ARxQZXJiaWxsAAEcYmxvY2tlZCABEGJvb2wAALQAAAasALgIOHBhbGxldF9zdGFraW5nHEZvcmNpbmcAARAoTm90Rm9yY2luZwAAACBGb3JjZU5ldwABACRGb3JjZU5vbmUAAgAsRm9yY2VBbHdheXMAAwAAvAw8cGFsbGV0X29mZmVuY2VzGHBhbGxldBRFdmVudAABBBxPZmZlbmNlCAEQa2luZMABEEtpbmQAASB0aW1lc2xvdDgBOE9wYXF1ZVRpbWVTbG90AAAMUQFUaGVyZSBpcyBhbiBvZmZlbmNlIHJlcG9ydGVkIG9mIHRoZSBnaXZlbiBga2luZGAgaGFwcGVuZWQgYXQgdGhlIGBzZXNzaW9uX2luZGV4YCBhbmQ1AShraW5kLXNwZWNpZmljKSB0aW1lIHNsb3QuIFRoaXMgZXZlbnQgaXMgbm90IGRlcG9zaXRlZCBmb3IgZHVwbGljYXRlIHNsYXNoZXMuTFxba2luZCwgdGltZXNsb3RcXS4EMEV2ZW50cyB0eXBlLsAAAAMQAAAACADEDDhwYWxsZXRfc2Vzc2lvbhhwYWxsZXQURXZlbnQAAQQoTmV3U2Vzc2lvbgQBNHNlc3Npb25faW5kZXgQATBTZXNzaW9uSW5kZXgAAAg5AU5ldyBzZXNzaW9uIGhhcyBoYXBwZW5lZC4gTm90ZSB0aGF0IHRoZSBhcmd1bWVudCBpcyB0aGUgc2Vzc2lvbiBpbmRleCwgbm90IHRoZZxibG9jayBudW1iZXIgYXMgdGhlIHR5cGUgbWlnaHQgc3VnZ2VzdC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXTIDDhwYWxsZXRfZ3JhbmRwYRhwYWxsZXQURXZlbnQAAQw4TmV3QXV0aG9yaXRpZXMEATRhdXRob3JpdHlfc2V0zAE0QXV0aG9yaXR5TGlzdAAABIxOZXcgYXV0aG9yaXR5IHNldCBoYXMgYmVlbiBhcHBsaWVkLhhQYXVzZWQAAQSYQ3VycmVudCBhdXRob3JpdHkgc2V0IGhhcyBiZWVuIHBhdXNlZC4cUmVzdW1lZAACBJxDdXJyZW50IGF1dGhvcml0eSBzZXQgaGFzIGJlZW4gcmVzdW1lZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXTMAAAC0ADQAAAECNQwANQMUHNwX2NvbnNlbnN1c19ncmFuZHBhDGFwcBhQdWJsaWMAAAQABAE8ZWQyNTUxOTo6UHVibGljAADYDDxwYWxsZXRfdHJlYXN1cnkYcGFsbGV0FEV2ZW50CARUAARJAAEwIFNwZW5kaW5nBAFAYnVkZ2V0X3JlbWFpbmluZxgBPEJhbGFuY2VPZjxULCBJPgAABORXZSBoYXZlIGVuZGVkIGEgc3BlbmQgcGVyaW9kIGFuZCB3aWxsIG5vdyBhbGxvY2F0ZSBmdW5kcy4cQXdhcmRlZAwBOHByb3Bvc2FsX2luZGV4EAE0UHJvcG9zYWxJbmRleAABFGF3YXJkGAE8QmFsYW5jZU9mPFQsIEk+AAEcYWNjb3VudAABMFQ6OkFjY291bnRJZAABBHxTb21lIGZ1bmRzIGhhdmUgYmVlbiBhbGxvY2F0ZWQuFEJ1cm50BAEsYnVybnRfZnVuZHMYATxCYWxhbmNlT2Y8VCwgST4AAgSIU29tZSBvZiBvdXIgZnVuZHMgaGF2ZSBiZWVuIGJ1cm50LiBSb2xsb3ZlcgQBQHJvbGxvdmVyX2JhbGFuY2UYATxCYWxhbmNlT2Y8VCwgST4AAwQtAVNwZW5kaW5nIGhhcyBmaW5pc2hlZDsgdGhpcyBpcyB0aGUgYW1vdW50IHRoYXQgcm9sbHMgb3ZlciB1bnRpbCBuZXh0IHNwZW5kLhxEZXBvc2l0BAEUdmFsdWUYATxCYWxhbmNlT2Y8VCwgST4ABAR8U29tZSBmdW5kcyBoYXZlIGJlZW4gZGVwb3NpdGVkLjRTcGVuZEFwcHJvdmVkDAE4cHJvcG9zYWxfaW5kZXgQATRQcm9wb3NhbEluZGV4AAEYYW1vdW50GAE8QmFsYW5jZU9mPFQsIEk+AAEsYmVuZWZpY2lhcnkAATBUOjpBY2NvdW50SWQABQScQSBuZXcgc3BlbmQgcHJvcG9zYWwgaGFzIGJlZW4gYXBwcm92ZWQuPFVwZGF0ZWRJbmFjdGl2ZQgBLHJlYWN0aXZhdGVkGAE8QmFsYW5jZU9mPFQsIEk+AAEsZGVhY3RpdmF0ZWQYATxCYWxhbmNlT2Y8VCwgST4ABgTMVGhlIGluYWN0aXZlIGZ1bmRzIG9mIHRoZSBwYWxsZXQgaGF2ZSBiZWVuIHVwZGF0ZWQuSEFzc2V0U3BlbmRBcHByb3ZlZBgBFGluZGV4EAEoU3BlbmRJbmRleAABKGFzc2V0X2tpbmTcATBUOjpBc3NldEtpbmQAARhhbW91bnQYAVBBc3NldEJhbGFuY2VPZjxULCBJPgABLGJlbmVmaWNpYXJ5RQEBOFQ6OkJlbmVmaWNpYXJ5AAEodmFsaWRfZnJvbRABREJsb2NrTnVtYmVyRm9yPFQ+AAEkZXhwaXJlX2F0EAFEQmxvY2tOdW1iZXJGb3I8VD4ABwS0QSBuZXcgYXNzZXQgc3BlbmQgcHJvcG9zYWwgaGFzIGJlZW4gYXBwcm92ZWQuQEFzc2V0U3BlbmRWb2lkZWQEARRpbmRleBABKFNwZW5kSW5kZXgACAR0QW4gYXBwcm92ZWQgc3BlbmQgd2FzIHZvaWRlZC4QUGFpZAgBFGluZGV4EAEoU3BlbmRJbmRleAABKHBheW1lbnRfaWQwAWQ8VDo6UGF5bWFzdGVyIGFzIFBheT46OklkAAkETEEgcGF5bWVudCBoYXBwZW5lZC40UGF5bWVudEZhaWxlZAgBFGluZGV4EAEoU3BlbmRJbmRleAABKHBheW1lbnRfaWQwAWQ8VDo6UGF5bWFzdGVyIGFzIFBheT46OklkAAoEkEEgcGF5bWVudCBmYWlsZWQgYW5kIGNhbiBiZSByZXRyaWVkLjhTcGVuZFByb2Nlc3NlZAQBFGluZGV4EAEoU3BlbmRJbmRleAALCE0BQSBzcGVuZCB3YXMgcHJvY2Vzc2VkIGFuZCByZW1vdmVkIGZyb20gdGhlIHN0b3JhZ2UuIEl0IG1pZ2h0IGhhdmUgYmVlbiBzdWNjZXNzZnVsbHlwcGFpZCBvciBpdCBtYXkgaGF2ZSBleHBpcmVkLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldNwMXHBvbGthZG90X3J1bnRpbWVfY29tbW9uFGltcGxzXFZlcnNpb25lZExvY2F0YWJsZUFzc2V0AAEICFYzCAEgbG9jYXRpb27gAUR4Y206OnYzOjpMb2NhdGlvbgABIGFzc2V0X2lkCQEBQHhjbTo6djM6OkFzc2V0SWQAAwAIVjQIASBsb2NhdGlvbg0BAUR4Y206OnY0OjpMb2NhdGlvbgABIGFzc2V0X2lkQQEBQHhjbTo6djQ6OkFzc2V0SWQABAAA4BAsc3RhZ2luZ194Y20IdjM0bXVsdGlsb2NhdGlvbjRNdWx0aUxvY2F0aW9uAAAIARxwYXJlbnRzCAEIdTgAASBpbnRlcmlvcuQBJEp1bmN0aW9ucwAA5BAMeGNtCHYzJGp1bmN0aW9ucyRKdW5jdGlvbnMAASQQSGVyZQAAAAhYMQQA6AEgSnVuY3Rpb24AAQAIWDIIAOgBIEp1bmN0aW9uAADoASBKdW5jdGlvbgACAAhYMwwA6AEgSnVuY3Rpb24AAOgBIEp1bmN0aW9uAADoASBKdW5jdGlvbgADAAhYNBAA6AEgSnVuY3Rpb24AAOgBIEp1bmN0aW9uAADoASBKdW5jdGlvbgAA6AEgSnVuY3Rpb24ABAAIWDUUAOgBIEp1bmN0aW9uAADoASBKdW5jdGlvbgAA6AEgSnVuY3Rpb24AAOgBIEp1bmN0aW9uAADoASBKdW5jdGlvbgAFAAhYNhgA6AEgSnVuY3Rpb24AAOgBIEp1bmN0aW9uAADoASBKdW5jdGlvbgAA6AEgSnVuY3Rpb24AAOgBIEp1bmN0aW9uAADoASBKdW5jdGlvbgAGAAhYNxwA6AEgSnVuY3Rpb24AAOgBIEp1bmN0aW9uAADoASBKdW5jdGlvbgAA6AEgSnVuY3Rpb24AAOgBIEp1bmN0aW9uAADoASBKdW5jdGlvbgAA6AEgSnVuY3Rpb24ABwAIWDggAOgBIEp1bmN0aW9uAADoASBKdW5jdGlvbgAA6AEgSnVuY3Rpb24AAOgBIEp1bmN0aW9uAADoASBKdW5jdGlvbgAA6AEgSnVuY3Rpb24AAOgBIEp1bmN0aW9uAADoASBKdW5jdGlvbgAIAADoEAx4Y20IdjMganVuY3Rpb24gSnVuY3Rpb24AASgkUGFyYWNoYWluBADsAQx1MzIAAAAsQWNjb3VudElkMzIIARxuZXR3b3Jr8AFET3B0aW9uPE5ldHdvcmtJZD4AAQhpZAQBIFt1ODsgMzJdAAEAOEFjY291bnRJbmRleDY0CAEcbmV0d29ya/ABRE9wdGlvbjxOZXR3b3JrSWQ+AAEUaW5kZXgsAQx1NjQAAgAwQWNjb3VudEtleTIwCAEcbmV0d29ya/ABRE9wdGlvbjxOZXR3b3JrSWQ+AAEMa2V5+AEgW3U4OyAyMF0AAwA4UGFsbGV0SW5zdGFuY2UEAAgBCHU4AAQAMEdlbmVyYWxJbmRleAQA/AEQdTEyOAAFAChHZW5lcmFsS2V5CAEYbGVuZ3RoCAEIdTgAARBkYXRhBAEgW3U4OyAzMl0ABgAkT25seUNoaWxkAAcAJFBsdXJhbGl0eQgBCGlkAQEBGEJvZHlJZAABEHBhcnQFAQEgQm9keVBhcnQACAA8R2xvYmFsQ29uc2Vuc3VzBAD0ASROZXR3b3JrSWQACQAA7AAABhAA8AQYT3B0aW9uBARUAfQBCBBOb25lAAAAEFNvbWUEAPQAAAEAAPQQDHhjbQh2MyBqdW5jdGlvbiROZXR3b3JrSWQAASwkQnlHZW5lc2lzBAAEASBbdTg7IDMyXQAAABhCeUZvcmsIATBibG9ja19udW1iZXIwAQx1NjQAAShibG9ja19oYXNoBAEgW3U4OyAzMl0AAQAgUG9sa2Fkb3QAAgAYS3VzYW1hAAMAHFdlc3RlbmQABAAYUm9jb2NvAAUAGFdvY29jbwAGACBFdGhlcmV1bQQBIGNoYWluX2lkLAEMdTY0AAcALEJpdGNvaW5Db3JlAAgALEJpdGNvaW5DYXNoAAkAQFBvbGthZG90QnVsbGV0aW4ACgAA+AAAAxQAAAAIAPwAAAYYAAEBEAx4Y20IdjMganVuY3Rpb24YQm9keUlkAAEoEFVuaXQAAAAcTW9uaWtlcgQASAEcW3U4OyA0XQABABRJbmRleAQA7AEMdTMyAAIAJEV4ZWN1dGl2ZQADACRUZWNobmljYWwABAAsTGVnaXNsYXRpdmUABQAgSnVkaWNpYWwABgAcRGVmZW5zZQAHADhBZG1pbmlzdHJhdGlvbgAIACBUcmVhc3VyeQAJAAAFARAMeGNtCHYzIGp1bmN0aW9uIEJvZHlQYXJ0AAEUFFZvaWNlAAAAHE1lbWJlcnMEARRjb3VudOwBDHUzMgABACBGcmFjdGlvbggBDG5vbewBDHUzMgABFGRlbm9t7AEMdTMyAAIAREF0TGVhc3RQcm9wb3J0aW9uCAEMbm9t7AEMdTMyAAEUZGVub23sAQx1MzIAAwBITW9yZVRoYW5Qcm9wb3J0aW9uCAEMbm9t7AEMdTMyAAEUZGVub23sAQx1MzIABAAACQEQDHhjbQh2MyhtdWx0aWFzc2V0HEFzc2V0SWQAAQggQ29uY3JldGUEAOABNE11bHRpTG9jYXRpb24AAAAgQWJzdHJhY3QEAAQBIFt1ODsgMzJdAAEAAA0BECxzdGFnaW5nX3hjbQh2NCBsb2NhdGlvbiBMb2NhdGlvbgAACAEccGFyZW50cwgBCHU4AAEgaW50ZXJpb3IRAQEkSnVuY3Rpb25zAAARARAsc3RhZ2luZ194Y20IdjQkanVuY3Rpb25zJEp1bmN0aW9ucwABJBBIZXJlAAAACFgxBAAVAQFIQXJjPFtKdW5jdGlvbjsgMV0+AAEACFgyBAAlAQFIQXJjPFtKdW5jdGlvbjsgMl0+AAIACFgzBAApAQFIQXJjPFtKdW5jdGlvbjsgM10+AAMACFg0BAAtAQFIQXJjPFtKdW5jdGlvbjsgNF0+AAQACFg1BAAxAQFIQXJjPFtKdW5jdGlvbjsgNV0+AAUACFg2BAA1AQFIQXJjPFtKdW5jdGlvbjsgNl0+AAYACFg3BAA5AQFIQXJjPFtKdW5jdGlvbjsgN10+AAcACFg4BAA9AQFIQXJjPFtKdW5jdGlvbjsgOF0+AAgAABUBAAADAQAAABkBABkBECxzdGFnaW5nX3hjbQh2NCBqdW5jdGlvbiBKdW5jdGlvbgABKCRQYXJhY2hhaW4EAOwBDHUzMgAAACxBY2NvdW50SWQzMggBHG5ldHdvcmsdAQFET3B0aW9uPE5ldHdvcmtJZD4AAQhpZAQBIFt1ODsgMzJdAAEAOEFjY291bnRJbmRleDY0CAEcbmV0d29yax0BAURPcHRpb248TmV0d29ya0lkPgABFGluZGV4LAEMdTY0AAIAMEFjY291bnRLZXkyMAgBHG5ldHdvcmsdAQFET3B0aW9uPE5ldHdvcmtJZD4AAQxrZXn4ASBbdTg7IDIwXQADADhQYWxsZXRJbnN0YW5jZQQACAEIdTgABAAwR2VuZXJhbEluZGV4BAD8ARB1MTI4AAUAKEdlbmVyYWxLZXkIARhsZW5ndGgIAQh1OAABEGRhdGEEASBbdTg7IDMyXQAGACRPbmx5Q2hpbGQABwAkUGx1cmFsaXR5CAEIaWQBAQEYQm9keUlkAAEQcGFydAUBASBCb2R5UGFydAAIADxHbG9iYWxDb25zZW5zdXMEACEBASROZXR3b3JrSWQACQAAHQEEGE9wdGlvbgQEVAEhAQEIEE5vbmUAAAAQU29tZQQAIQEAAAEAACEBECxzdGFnaW5nX3hjbQh2NCBqdW5jdGlvbiROZXR3b3JrSWQAASwkQnlHZW5lc2lzBAAEASBbdTg7IDMyXQAAABhCeUZvcmsIATBibG9ja19udW1iZXIwAQx1NjQAAShibG9ja19oYXNoBAEgW3U4OyAzMl0AAQAgUG9sa2Fkb3QAAgAYS3VzYW1hAAMAHFdlc3RlbmQABAAYUm9jb2NvAAUAGFdvY29jbwAGACBFdGhlcmV1bQQBIGNoYWluX2lkLAEMdTY0AAcALEJpdGNvaW5Db3JlAAgALEJpdGNvaW5DYXNoAAkAQFBvbGthZG90QnVsbGV0aW4ACgAAJQEAAAMCAAAAGQEAKQEAAAMDAAAAGQEALQEAAAMEAAAAGQEAMQEAAAMFAAAAGQEANQEAAAMGAAAAGQEAOQEAAAMHAAAAGQEAPQEAAAMIAAAAGQEAQQEQLHN0YWdpbmdfeGNtCHY0FGFzc2V0HEFzc2V0SWQAAAQADQEBIExvY2F0aW9uAABFAQgMeGNtRFZlcnNpb25lZExvY2F0aW9uAAEMCFYyBABJAQFEdjI6Ok11bHRpTG9jYXRpb24AAQAIVjMEAOABRHYzOjpNdWx0aUxvY2F0aW9uAAMACFY0BAANAQEwdjQ6OkxvY2F0aW9uAAQAAEkBEAx4Y20IdjI0bXVsdGlsb2NhdGlvbjRNdWx0aUxvY2F0aW9uAAAIARxwYXJlbnRzCAEIdTgAASBpbnRlcmlvck0BASRKdW5jdGlvbnMAAE0BEAx4Y20IdjI0bXVsdGlsb2NhdGlvbiRKdW5jdGlvbnMAASQQSGVyZQAAAAhYMQQAUQEBIEp1bmN0aW9uAAEACFgyCABRAQEgSnVuY3Rpb24AAFEBASBKdW5jdGlvbgACAAhYMwwAUQEBIEp1bmN0aW9uAABRAQEgSnVuY3Rpb24AAFEBASBKdW5jdGlvbgADAAhYNBAAUQEBIEp1bmN0aW9uAABRAQEgSnVuY3Rpb24AAFEBASBKdW5jdGlvbgAAUQEBIEp1bmN0aW9uAAQACFg1FABRAQEgSnVuY3Rpb24AAFEBASBKdW5jdGlvbgAAUQEBIEp1bmN0aW9uAABRAQEgSnVuY3Rpb24AAFEBASBKdW5jdGlvbgAFAAhYNhgAUQEBIEp1bmN0aW9uAABRAQEgSnVuY3Rpb24AAFEBASBKdW5jdGlvbgAAUQEBIEp1bmN0aW9uAABRAQEgSnVuY3Rpb24AAFEBASBKdW5jdGlvbgAGAAhYNxwAUQEBIEp1bmN0aW9uAABRAQEgSnVuY3Rpb24AAFEBASBKdW5jdGlvbgAAUQEBIEp1bmN0aW9uAABRAQEgSnVuY3Rpb24AAFEBASBKdW5jdGlvbgAAUQEBIEp1bmN0aW9uAAcACFg4IABRAQEgSnVuY3Rpb24AAFEBASBKdW5jdGlvbgAAUQEBIEp1bmN0aW9uAABRAQEgSnVuY3Rpb24AAFEBASBKdW5jdGlvbgAAUQEBIEp1bmN0aW9uAABRAQEgSnVuY3Rpb24AAFEBASBKdW5jdGlvbgAIAABRARAMeGNtCHYyIGp1bmN0aW9uIEp1bmN0aW9uAAEkJFBhcmFjaGFpbgQA7AEMdTMyAAAALEFjY291bnRJZDMyCAEcbmV0d29ya1UBASROZXR3b3JrSWQAAQhpZAQBIFt1ODsgMzJdAAEAOEFjY291bnRJbmRleDY0CAEcbmV0d29ya1UBASROZXR3b3JrSWQAARRpbmRleCwBDHU2NAACADBBY2NvdW50S2V5MjAIARxuZXR3b3JrVQEBJE5ldHdvcmtJZAABDGtlefgBIFt1ODsgMjBdAAMAOFBhbGxldEluc3RhbmNlBAAIAQh1OAAEADBHZW5lcmFsSW5kZXgEAPwBEHUxMjgABQAoR2VuZXJhbEtleQQAWQEBgFdlYWtCb3VuZGVkVmVjPHU4LCBDb25zdFUzMjwzMj4+AAYAJE9ubHlDaGlsZAAHACRQbHVyYWxpdHkIAQhpZF0BARhCb2R5SWQAARBwYXJ0YQEBIEJvZHlQYXJ0AAgAAFUBDAx4Y20IdjIkTmV0d29ya0lkAAEQDEFueQAAABROYW1lZAQAWQEBgFdlYWtCb3VuZGVkVmVjPHU4LCBDb25zdFUzMjwzMj4+AAEAIFBvbGthZG90AAIAGEt1c2FtYQADAABZAQxMYm91bmRlZF9jb2xsZWN0aW9uc0B3ZWFrX2JvdW5kZWRfdmVjOFdlYWtCb3VuZGVkVmVjCARUAQgEUwAABAA4ARhWZWM8VD4AAF0BDAx4Y20IdjIYQm9keUlkAAEoEFVuaXQAAAAUTmFtZWQEAFkBAYBXZWFrQm91bmRlZFZlYzx1OCwgQ29uc3RVMzI8MzI+PgABABRJbmRleAQA7AEMdTMyAAIAJEV4ZWN1dGl2ZQADACRUZWNobmljYWwABAAsTGVnaXNsYXRpdmUABQAgSnVkaWNpYWwABgAcRGVmZW5zZQAHADhBZG1pbmlzdHJhdGlvbgAIACBUcmVhc3VyeQAJAABhAQwMeGNtCHYyIEJvZHlQYXJ0AAEUFFZvaWNlAAAAHE1lbWJlcnMEARRjb3VudOwBDHUzMgABACBGcmFjdGlvbggBDG5vbewBDHUzMgABFGRlbm9t7AEMdTMyAAIAREF0TGVhc3RQcm9wb3J0aW9uCAEMbm9t7AEMdTMyAAEUZGVub23sAQx1MzIAAwBITW9yZVRoYW5Qcm9wb3J0aW9uCAEMbm9t7AEMdTMyAAEUZGVub23sAQx1MzIABAAAZQEMYHBhbGxldF9jb252aWN0aW9uX3ZvdGluZxhwYWxsZXQURXZlbnQIBFQABEkAAQgkRGVsZWdhdGVkCAAAATBUOjpBY2NvdW50SWQAAAABMFQ6OkFjY291bnRJZAAABB0BQW4gYWNjb3VudCBoYXMgZGVsZWdhdGVkIHRoZWlyIHZvdGUgdG8gYW5vdGhlciBhY2NvdW50LiBcW3dobywgdGFyZ2V0XF0sVW5kZWxlZ2F0ZWQEAAABMFQ6OkFjY291bnRJZAABBPRBbiBcW2FjY291bnRcXSBoYXMgY2FuY2VsbGVkIGEgcHJldmlvdXMgZGVsZWdhdGlvbiBvcGVyYXRpb24uBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0aQEMQHBhbGxldF9yZWZlcmVuZGEYcGFsbGV0FEV2ZW50CARUAARJAAFAJFN1Ym1pdHRlZAwBFGluZGV4EAE8UmVmZXJlbmR1bUluZGV4BGBJbmRleCBvZiB0aGUgcmVmZXJlbmR1bS4BFHRyYWNrbQEBPFRyYWNrSWRPZjxULCBJPgQlAVRoZSB0cmFjayAoYW5kIGJ5IGV4dGVuc2lvbiBwcm9wb3NhbCBkaXNwYXRjaCBvcmlnaW4pIG9mIHRoaXMgcmVmZXJlbmR1bS4BIHByb3Bvc2FscQEBTEJvdW5kZWRDYWxsT2Y8VCwgST4EgFRoZSBwcm9wb3NhbCBmb3IgdGhlIHJlZmVyZW5kdW0uAASAQSByZWZlcmVuZHVtIGhhcyBiZWVuIHN1Ym1pdHRlZC5URGVjaXNpb25EZXBvc2l0UGxhY2VkDAEUaW5kZXgQATxSZWZlcmVuZHVtSW5kZXgEYEluZGV4IG9mIHRoZSByZWZlcmVuZHVtLgEMd2hvAAEwVDo6QWNjb3VudElkBIxUaGUgYWNjb3VudCB3aG8gcGxhY2VkIHRoZSBkZXBvc2l0LgEYYW1vdW50GAE8QmFsYW5jZU9mPFQsIEk+BIRUaGUgYW1vdW50IHBsYWNlZCBieSB0aGUgYWNjb3VudC4BBJRUaGUgZGVjaXNpb24gZGVwb3NpdCBoYXMgYmVlbiBwbGFjZWQuXERlY2lzaW9uRGVwb3NpdFJlZnVuZGVkDAEUaW5kZXgQATxSZWZlcmVuZHVtSW5kZXgEYEluZGV4IG9mIHRoZSByZWZlcmVuZHVtLgEMd2hvAAEwVDo6QWNjb3VudElkBIxUaGUgYWNjb3VudCB3aG8gcGxhY2VkIHRoZSBkZXBvc2l0LgEYYW1vdW50GAE8QmFsYW5jZU9mPFQsIEk+BIRUaGUgYW1vdW50IHBsYWNlZCBieSB0aGUgYWNjb3VudC4CBJxUaGUgZGVjaXNpb24gZGVwb3NpdCBoYXMgYmVlbiByZWZ1bmRlZC44RGVwb3NpdFNsYXNoZWQIAQx3aG8AATBUOjpBY2NvdW50SWQEjFRoZSBhY2NvdW50IHdobyBwbGFjZWQgdGhlIGRlcG9zaXQuARhhbW91bnQYATxCYWxhbmNlT2Y8VCwgST4EhFRoZSBhbW91bnQgcGxhY2VkIGJ5IHRoZSBhY2NvdW50LgMEbEEgZGVwb3NpdCBoYXMgYmVlbiBzbGFzaGVkLjxEZWNpc2lvblN0YXJ0ZWQQARRpbmRleBABPFJlZmVyZW5kdW1JbmRleARgSW5kZXggb2YgdGhlIHJlZmVyZW5kdW0uARR0cmFja20BATxUcmFja0lkT2Y8VCwgST4EJQFUaGUgdHJhY2sgKGFuZCBieSBleHRlbnNpb24gcHJvcG9zYWwgZGlzcGF0Y2ggb3JpZ2luKSBvZiB0aGlzIHJlZmVyZW5kdW0uASBwcm9wb3NhbHEBAUxCb3VuZGVkQ2FsbE9mPFQsIEk+BIBUaGUgcHJvcG9zYWwgZm9yIHRoZSByZWZlcmVuZHVtLgEUdGFsbHnhBgEgVDo6VGFsbHkEuFRoZSBjdXJyZW50IHRhbGx5IG9mIHZvdGVzIGluIHRoaXMgcmVmZXJlbmR1bS4EBLxBIHJlZmVyZW5kdW0gaGFzIG1vdmVkIGludG8gdGhlIGRlY2lkaW5nIHBoYXNlLjhDb25maXJtU3RhcnRlZAQBFGluZGV4EAE8UmVmZXJlbmR1bUluZGV4BGBJbmRleCBvZiB0aGUgcmVmZXJlbmR1bS4FADhDb25maXJtQWJvcnRlZAQBFGluZGV4EAE8UmVmZXJlbmR1bUluZGV4BGBJbmRleCBvZiB0aGUgcmVmZXJlbmR1bS4GACRDb25maXJtZWQIARRpbmRleBABPFJlZmVyZW5kdW1JbmRleARgSW5kZXggb2YgdGhlIHJlZmVyZW5kdW0uARR0YWxseeEGASBUOjpUYWxseQSwVGhlIGZpbmFsIHRhbGx5IG9mIHZvdGVzIGluIHRoaXMgcmVmZXJlbmR1bS4HBCEBQSByZWZlcmVuZHVtIGhhcyBlbmRlZCBpdHMgY29uZmlybWF0aW9uIHBoYXNlIGFuZCBpcyByZWFkeSBmb3IgYXBwcm92YWwuIEFwcHJvdmVkBAEUaW5kZXgQATxSZWZlcmVuZHVtSW5kZXgEYEluZGV4IG9mIHRoZSByZWZlcmVuZHVtLggEDQFBIHJlZmVyZW5kdW0gaGFzIGJlZW4gYXBwcm92ZWQgYW5kIGl0cyBwcm9wb3NhbCBoYXMgYmVlbiBzY2hlZHVsZWQuIFJlamVjdGVkCAEUaW5kZXgQATxSZWZlcmVuZHVtSW5kZXgEYEluZGV4IG9mIHRoZSByZWZlcmVuZHVtLgEUdGFsbHnhBgEgVDo6VGFsbHkEsFRoZSBmaW5hbCB0YWxseSBvZiB2b3RlcyBpbiB0aGlzIHJlZmVyZW5kdW0uCQSsQSBwcm9wb3NhbCBoYXMgYmVlbiByZWplY3RlZCBieSByZWZlcmVuZHVtLiBUaW1lZE91dAgBFGluZGV4EAE8UmVmZXJlbmR1bUluZGV4BGBJbmRleCBvZiB0aGUgcmVmZXJlbmR1bS4BFHRhbGx54QYBIFQ6OlRhbGx5BLBUaGUgZmluYWwgdGFsbHkgb2Ygdm90ZXMgaW4gdGhpcyByZWZlcmVuZHVtLgoE2EEgcmVmZXJlbmR1bSBoYXMgYmVlbiB0aW1lZCBvdXQgd2l0aG91dCBiZWluZyBkZWNpZGVkLiRDYW5jZWxsZWQIARRpbmRleBABPFJlZmVyZW5kdW1JbmRleARgSW5kZXggb2YgdGhlIHJlZmVyZW5kdW0uARR0YWxseeEGASBUOjpUYWxseQSwVGhlIGZpbmFsIHRhbGx5IG9mIHZvdGVzIGluIHRoaXMgcmVmZXJlbmR1bS4LBIBBIHJlZmVyZW5kdW0gaGFzIGJlZW4gY2FuY2VsbGVkLhhLaWxsZWQIARRpbmRleBABPFJlZmVyZW5kdW1JbmRleARgSW5kZXggb2YgdGhlIHJlZmVyZW5kdW0uARR0YWxseeEGASBUOjpUYWxseQSwVGhlIGZpbmFsIHRhbGx5IG9mIHZvdGVzIGluIHRoaXMgcmVmZXJlbmR1bS4MBHRBIHJlZmVyZW5kdW0gaGFzIGJlZW4ga2lsbGVkLmRTdWJtaXNzaW9uRGVwb3NpdFJlZnVuZGVkDAEUaW5kZXgQATxSZWZlcmVuZHVtSW5kZXgEYEluZGV4IG9mIHRoZSByZWZlcmVuZHVtLgEMd2hvAAEwVDo6QWNjb3VudElkBIxUaGUgYWNjb3VudCB3aG8gcGxhY2VkIHRoZSBkZXBvc2l0LgEYYW1vdW50GAE8QmFsYW5jZU9mPFQsIEk+BIRUaGUgYW1vdW50IHBsYWNlZCBieSB0aGUgYWNjb3VudC4NBKRUaGUgc3VibWlzc2lvbiBkZXBvc2l0IGhhcyBiZWVuIHJlZnVuZGVkLixNZXRhZGF0YVNldAgBFGluZGV4EAE8UmVmZXJlbmR1bUluZGV4BGBJbmRleCBvZiB0aGUgcmVmZXJlbmR1bS4BEGhhc2g0ARxUOjpIYXNoBDhQcmVpbWFnZSBoYXNoLg4EnE1ldGFkYXRhIGZvciBhIHJlZmVyZW5kdW0gaGFzIGJlZW4gc2V0LjxNZXRhZGF0YUNsZWFyZWQIARRpbmRleBABPFJlZmVyZW5kdW1JbmRleARgSW5kZXggb2YgdGhlIHJlZmVyZW5kdW0uARBoYXNoNAEcVDo6SGFzaAQ4UHJlaW1hZ2UgaGFzaC4PBKxNZXRhZGF0YSBmb3IgYSByZWZlcmVuZHVtIGhhcyBiZWVuIGNsZWFyZWQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0bQEAAAUEAHEBEDRmcmFtZV9zdXBwb3J0GHRyYWl0cyRwcmVpbWFnZXMcQm91bmRlZAgEVAF1AQRIAdkGAQwYTGVnYWN5BAEQaGFzaDQBJEg6Ok91dHB1dAAAABhJbmxpbmUEAN0GATRCb3VuZGVkSW5saW5lAAEAGExvb2t1cAgBEGhhc2g0ASRIOjpPdXRwdXQAAQxsZW4QAQx1MzIAAgAAdQEINHBhc2VvX3J1bnRpbWUsUnVudGltZUNhbGwAAbwYU3lzdGVtBAB5AQGtAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxTeXN0ZW0sIFJ1bnRpbWU+AAAAJFNjaGVkdWxlcgQAiQEBuQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8U2NoZWR1bGVyLCBSdW50aW1lPgABACBQcmVpbWFnZQQAkQEBtQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8UHJlaW1hZ2UsIFJ1bnRpbWU+AAoAEEJhYmUEAJkBAaUBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPEJhYmUsIFJ1bnRpbWU+AAIAJFRpbWVzdGFtcAQAvQEBuQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8VGltZXN0YW1wLCBSdW50aW1lPgADABxJbmRpY2VzBADBAQGxAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxJbmRpY2VzLCBSdW50aW1lPgAEACBCYWxhbmNlcwQAzQEBtQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8QmFsYW5jZXMsIFJ1bnRpbWU+AAUAHFN0YWtpbmcEANkBAbEBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFN0YWtpbmcsIFJ1bnRpbWU+AAcAHFNlc3Npb24EABUCAbEBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFNlc3Npb24sIFJ1bnRpbWU+AAkAHEdyYW5kcGEEADECAbEBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPEdyYW5kcGEsIFJ1bnRpbWU+AAsAIFRyZWFzdXJ5BABdAgG1AXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxUcmVhc3VyeSwgUnVudGltZT4AEwBAQ29udmljdGlvblZvdGluZwQAZQIB1QFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8Q29udmljdGlvblZvdGluZywgUnVudGltZT4AFAAkUmVmZXJlbmRhBAB5AgG5AXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxSZWZlcmVuZGEsIFJ1bnRpbWU+ABUAJFdoaXRlbGlzdAQAoQIBuQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8V2hpdGVsaXN0LCBSdW50aW1lPgAXABhDbGFpbXMEAKUCAa0Bc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPENsYWltcywgUnVudGltZT4AGAAcVmVzdGluZwQAxQIBsQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8VmVzdGluZywgUnVudGltZT4AGQAcVXRpbGl0eQQAzQIBsQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8VXRpbGl0eSwgUnVudGltZT4AGgAUUHJveHkEANUCAakBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFByb3h5LCBSdW50aW1lPgAdACBNdWx0aXNpZwQA4QIBtQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8TXVsdGlzaWcsIFJ1bnRpbWU+AB4AIEJvdW50aWVzBADtAgG1AXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxCb3VudGllcywgUnVudGltZT4AIgA0Q2hpbGRCb3VudGllcwQA8QIByQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8Q2hpbGRCb3VudGllcywgUnVudGltZT4AJgBoRWxlY3Rpb25Qcm92aWRlck11bHRpUGhhc2UEAPUCAf0Bc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPEVsZWN0aW9uUHJvdmlkZXJNdWx0aVBoYXNlLCBSdW50aW1lPgAkACRWb3Rlckxpc3QEAOkDAbkBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFZvdGVyTGlzdCwgUnVudGltZT4AJQA8Tm9taW5hdGlvblBvb2xzBADtAwHRAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxOb21pbmF0aW9uUG9vbHMsIFJ1bnRpbWU+ACcALEZhc3RVbnN0YWtlBAAhBAHBAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxGYXN0VW5zdGFrZSwgUnVudGltZT4AKAA0Q29uZmlndXJhdGlvbgQAJQQByQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8Q29uZmlndXJhdGlvbiwgUnVudGltZT4AMwAsUGFyYXNTaGFyZWQEAEkEAcEBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFBhcmFzU2hhcmVkLCBSdW50aW1lPgA0ADRQYXJhSW5jbHVzaW9uBABNBAHJAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxQYXJhSW5jbHVzaW9uLCBSdW50aW1lPgA1ADBQYXJhSW5oZXJlbnQEAFEEAcUBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFBhcmFJbmhlcmVudCwgUnVudGltZT4ANgAUUGFyYXMEAN0EAakBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFBhcmFzLCBSdW50aW1lPgA4ACxJbml0aWFsaXplcgQA5QQBwQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8SW5pdGlhbGl6ZXIsIFJ1bnRpbWU+ADkAEEhybXAEAOkEAaUBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPEhybXAsIFJ1bnRpbWU+ADwANFBhcmFzRGlzcHV0ZXMEAPEEAckBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFBhcmFzRGlzcHV0ZXMsIFJ1bnRpbWU+AD4ANFBhcmFzU2xhc2hpbmcEAPUEAckBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFBhcmFzU2xhc2hpbmcsIFJ1bnRpbWU+AD8AIE9uRGVtYW5kBAAFBQG1AXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxPbkRlbWFuZCwgUnVudGltZT4AQAAkUmVnaXN0cmFyBAAJBQG5AXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxSZWdpc3RyYXIsIFJ1bnRpbWU+AEYAFFNsb3RzBAANBQGpAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxTbG90cywgUnVudGltZT4ARwAgQXVjdGlvbnMEABEFAbUBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPEF1Y3Rpb25zLCBSdW50aW1lPgBIACRDcm93ZGxvYW4EABkFAbkBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPENyb3dkbG9hbiwgUnVudGltZT4ASQAgQ29yZXRpbWUEAC0FAbUBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPENvcmV0aW1lLCBSdW50aW1lPgBKAEhTdGF0ZVRyaWVNaWdyYXRpb24EAEEFAd0Bc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFN0YXRlVHJpZU1pZ3JhdGlvbiwgUnVudGltZT4AYgAkWGNtUGFsbGV0BABZBQG5AXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxYY21QYWxsZXQsIFJ1bnRpbWU+AGMAME1lc3NhZ2VRdWV1ZQQAlQYBxQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8TWVzc2FnZVF1ZXVlLCBSdW50aW1lPgBkACRBc3NldFJhdGUEAKEGAbkBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPEFzc2V0UmF0ZSwgUnVudGltZT4AZQAUQmVlZnkEAKkGAakBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPEJlZWZ5LCBSdW50aW1lPgDIADxQYXJhU3Vkb1dyYXBwZXIEAM0GAdEBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFBhcmFTdWRvV3JhcHBlciwgUnVudGltZT4A+gAQU3VkbwQA1QYBpQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8U3VkbywgUnVudGltZT4A/wAAeQEMMGZyYW1lX3N5c3RlbRhwYWxsZXQQQ2FsbAQEVAABLBhyZW1hcmsEARhyZW1hcms4ARxWZWM8dTg+AAAMaE1ha2Ugc29tZSBvbi1jaGFpbiByZW1hcmsuAIhDYW4gYmUgZXhlY3V0ZWQgYnkgZXZlcnkgYG9yaWdpbmAuOHNldF9oZWFwX3BhZ2VzBAEUcGFnZXMwAQx1NjQAAQT4U2V0IHRoZSBudW1iZXIgb2YgcGFnZXMgaW4gdGhlIFdlYkFzc2VtYmx5IGVudmlyb25tZW50J3MgaGVhcC4gc2V0X2NvZGUEARBjb2RlOAEcVmVjPHU4PgACBGRTZXQgdGhlIG5ldyBydW50aW1lIGNvZGUuXHNldF9jb2RlX3dpdGhvdXRfY2hlY2tzBAEQY29kZTgBHFZlYzx1OD4AAxAZAVNldCB0aGUgbmV3IHJ1bnRpbWUgY29kZSB3aXRob3V0IGRvaW5nIGFueSBjaGVja3Mgb2YgdGhlIGdpdmVuIGBjb2RlYC4AUQFOb3RlIHRoYXQgcnVudGltZSB1cGdyYWRlcyB3aWxsIG5vdCBydW4gaWYgdGhpcyBpcyBjYWxsZWQgd2l0aCBhIG5vdC1pbmNyZWFzaW5nIHNwZWMgdmVyc2lvbiEsc2V0X3N0b3JhZ2UEARRpdGVtc30BATRWZWM8S2V5VmFsdWU+AAQEaFNldCBzb21lIGl0ZW1zIG9mIHN0b3JhZ2UuMGtpbGxfc3RvcmFnZQQBEGtleXOFAQEgVmVjPEtleT4ABQR0S2lsbCBzb21lIGl0ZW1zIGZyb20gc3RvcmFnZS4sa2lsbF9wcmVmaXgIARhwcmVmaXg4AQxLZXkAARxzdWJrZXlzEAEMdTMyAAYQEQFLaWxsIGFsbCBzdG9yYWdlIGl0ZW1zIHdpdGggYSBrZXkgdGhhdCBzdGFydHMgd2l0aCB0aGUgZ2l2ZW4gcHJlZml4LgA5ASoqTk9URToqKiBXZSByZWx5IG9uIHRoZSBSb290IG9yaWdpbiB0byBwcm92aWRlIHVzIHRoZSBudW1iZXIgb2Ygc3Via2V5cyB1bmRlcj0BdGhlIHByZWZpeCB3ZSBhcmUgcmVtb3ZpbmcgdG8gYWNjdXJhdGVseSBjYWxjdWxhdGUgdGhlIHdlaWdodCBvZiB0aGlzIGZ1bmN0aW9uLkRyZW1hcmtfd2l0aF9ldmVudAQBGHJlbWFyazgBHFZlYzx1OD4ABwSkTWFrZSBzb21lIG9uLWNoYWluIHJlbWFyayBhbmQgZW1pdCBldmVudC5EYXV0aG9yaXplX3VwZ3JhZGUEASRjb2RlX2hhc2g0ARxUOjpIYXNoAAkQYQFBdXRob3JpemUgYW4gdXBncmFkZSB0byBhIGdpdmVuIGBjb2RlX2hhc2hgIGZvciB0aGUgcnVudGltZS4gVGhlIHJ1bnRpbWUgY2FuIGJlIHN1cHBsaWVkGGxhdGVyLgB8VGhpcyBjYWxsIHJlcXVpcmVzIFJvb3Qgb3JpZ2luLoBhdXRob3JpemVfdXBncmFkZV93aXRob3V0X2NoZWNrcwQBJGNvZGVfaGFzaDQBHFQ6Okhhc2gACiBhAUF1dGhvcml6ZSBhbiB1cGdyYWRlIHRvIGEgZ2l2ZW4gYGNvZGVfaGFzaGAgZm9yIHRoZSBydW50aW1lLiBUaGUgcnVudGltZSBjYW4gYmUgc3VwcGxpZWQYbGF0ZXIuAF0BV0FSTklORzogVGhpcyBhdXRob3JpemVzIGFuIHVwZ3JhZGUgdGhhdCB3aWxsIHRha2UgcGxhY2Ugd2l0aG91dCBhbnkgc2FmZXR5IGNoZWNrcywgZm9yWQFleGFtcGxlIHRoYXQgdGhlIHNwZWMgbmFtZSByZW1haW5zIHRoZSBzYW1lIGFuZCB0aGF0IHRoZSB2ZXJzaW9uIG51bWJlciBpbmNyZWFzZXMuIE5vdPByZWNvbW1lbmRlZCBmb3Igbm9ybWFsIHVzZS4gVXNlIGBhdXRob3JpemVfdXBncmFkZWAgaW5zdGVhZC4AfFRoaXMgY2FsbCByZXF1aXJlcyBSb290IG9yaWdpbi5gYXBwbHlfYXV0aG9yaXplZF91cGdyYWRlBAEQY29kZTgBHFZlYzx1OD4ACyRVAVByb3ZpZGUgdGhlIHByZWltYWdlIChydW50aW1lIGJpbmFyeSkgYGNvZGVgIGZvciBhbiB1cGdyYWRlIHRoYXQgaGFzIGJlZW4gYXV0aG9yaXplZC4ASQFJZiB0aGUgYXV0aG9yaXphdGlvbiByZXF1aXJlZCBhIHZlcnNpb24gY2hlY2ssIHRoaXMgY2FsbCB3aWxsIGVuc3VyZSB0aGUgc3BlYyBuYW1l6HJlbWFpbnMgdW5jaGFuZ2VkIGFuZCB0aGF0IHRoZSBzcGVjIHZlcnNpb24gaGFzIGluY3JlYXNlZC4AWQFEZXBlbmRpbmcgb24gdGhlIHJ1bnRpbWUncyBgT25TZXRDb2RlYCBjb25maWd1cmF0aW9uLCB0aGlzIGZ1bmN0aW9uIG1heSBkaXJlY3RseSBhcHBseREBdGhlIG5ldyBgY29kZWAgaW4gdGhlIHNhbWUgYmxvY2sgb3IgYXR0ZW1wdCB0byBzY2hlZHVsZSB0aGUgdXBncmFkZS4AYEFsbCBvcmlnaW5zIGFyZSBhbGxvd2VkLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy59AQAAAoEBAIEBAAAECDg4AIUBAAACOACJAQxAcGFsbGV0X3NjaGVkdWxlchhwYWxsZXQQQ2FsbAQEVAABKCBzY2hlZHVsZRABEHdoZW4QAURCbG9ja051bWJlckZvcjxUPgABOG1heWJlX3BlcmlvZGljjQEBrE9wdGlvbjxzY2hlZHVsZTo6UGVyaW9kPEJsb2NrTnVtYmVyRm9yPFQ+Pj4AASBwcmlvcml0eQgBSHNjaGVkdWxlOjpQcmlvcml0eQABEGNhbGx1AQF8Qm94PDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgAABHBBbm9ueW1vdXNseSBzY2hlZHVsZSBhIHRhc2suGGNhbmNlbAgBEHdoZW4QAURCbG9ja051bWJlckZvcjxUPgABFGluZGV4EAEMdTMyAAEElENhbmNlbCBhbiBhbm9ueW1vdXNseSBzY2hlZHVsZWQgdGFzay44c2NoZWR1bGVfbmFtZWQUAQhpZAQBIFRhc2tOYW1lAAEQd2hlbhABREJsb2NrTnVtYmVyRm9yPFQ+AAE4bWF5YmVfcGVyaW9kaWONAQGsT3B0aW9uPHNjaGVkdWxlOjpQZXJpb2Q8QmxvY2tOdW1iZXJGb3I8VD4+PgABIHByaW9yaXR5CAFIc2NoZWR1bGU6OlByaW9yaXR5AAEQY2FsbHUBAXxCb3g8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AAIEWFNjaGVkdWxlIGEgbmFtZWQgdGFzay4wY2FuY2VsX25hbWVkBAEIaWQEASBUYXNrTmFtZQADBHhDYW5jZWwgYSBuYW1lZCBzY2hlZHVsZWQgdGFzay44c2NoZWR1bGVfYWZ0ZXIQARRhZnRlchABREJsb2NrTnVtYmVyRm9yPFQ+AAE4bWF5YmVfcGVyaW9kaWONAQGsT3B0aW9uPHNjaGVkdWxlOjpQZXJpb2Q8QmxvY2tOdW1iZXJGb3I8VD4+PgABIHByaW9yaXR5CAFIc2NoZWR1bGU6OlByaW9yaXR5AAEQY2FsbHUBAXxCb3g8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AAQEqEFub255bW91c2x5IHNjaGVkdWxlIGEgdGFzayBhZnRlciBhIGRlbGF5LlBzY2hlZHVsZV9uYW1lZF9hZnRlchQBCGlkBAEgVGFza05hbWUAARRhZnRlchABREJsb2NrTnVtYmVyRm9yPFQ+AAE4bWF5YmVfcGVyaW9kaWONAQGsT3B0aW9uPHNjaGVkdWxlOjpQZXJpb2Q8QmxvY2tOdW1iZXJGb3I8VD4+PgABIHByaW9yaXR5CAFIc2NoZWR1bGU6OlByaW9yaXR5AAEQY2FsbHUBAXxCb3g8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AAUEkFNjaGVkdWxlIGEgbmFtZWQgdGFzayBhZnRlciBhIGRlbGF5LiRzZXRfcmV0cnkMARB0YXNrgAF4VGFza0FkZHJlc3M8QmxvY2tOdW1iZXJGb3I8VD4+AAEccmV0cmllcwgBCHU4AAEYcGVyaW9kEAFEQmxvY2tOdW1iZXJGb3I8VD4ABjBZAVNldCBhIHJldHJ5IGNvbmZpZ3VyYXRpb24gZm9yIGEgdGFzayBzbyB0aGF0LCBpbiBjYXNlIGl0cyBzY2hlZHVsZWQgcnVuIGZhaWxzLCBpdCB3aWxsVQFiZSByZXRyaWVkIGFmdGVyIGBwZXJpb2RgIGJsb2NrcywgZm9yIGEgdG90YWwgYW1vdW50IG9mIGByZXRyaWVzYCByZXRyaWVzIG9yIHVudGlsIGl0JHN1Y2NlZWRzLgBVAVRhc2tzIHdoaWNoIG5lZWQgdG8gYmUgc2NoZWR1bGVkIGZvciBhIHJldHJ5IGFyZSBzdGlsbCBzdWJqZWN0IHRvIHdlaWdodCBtZXRlcmluZyBhbmRRAWFnZW5kYSBzcGFjZSwgc2FtZSBhcyBhIHJlZ3VsYXIgdGFzay4gSWYgYSBwZXJpb2RpYyB0YXNrIGZhaWxzLCBpdCB3aWxsIGJlIHNjaGVkdWxlZJBub3JtYWxseSB3aGlsZSB0aGUgdGFzayBpcyByZXRyeWluZy4AUQFUYXNrcyBzY2hlZHVsZWQgYXMgYSByZXN1bHQgb2YgYSByZXRyeSBmb3IgYSBwZXJpb2RpYyB0YXNrIGFyZSB1bm5hbWVkLCBub24tcGVyaW9kaWM9AWNsb25lcyBvZiB0aGUgb3JpZ2luYWwgdGFzay4gVGhlaXIgcmV0cnkgY29uZmlndXJhdGlvbiB3aWxsIGJlIGRlcml2ZWQgZnJvbSB0aGVNAW9yaWdpbmFsIHRhc2sncyBjb25maWd1cmF0aW9uLCBidXQgd2lsbCBoYXZlIGEgbG93ZXIgdmFsdWUgZm9yIGByZW1haW5pbmdgIHRoYW4gdGhlZG9yaWdpbmFsIGB0b3RhbF9yZXRyaWVzYC48c2V0X3JldHJ5X25hbWVkDAEIaWQEASBUYXNrTmFtZQABHHJldHJpZXMIAQh1OAABGHBlcmlvZBABREJsb2NrTnVtYmVyRm9yPFQ+AAcwXQFTZXQgYSByZXRyeSBjb25maWd1cmF0aW9uIGZvciBhIG5hbWVkIHRhc2sgc28gdGhhdCwgaW4gY2FzZSBpdHMgc2NoZWR1bGVkIHJ1biBmYWlscywgaXRdAXdpbGwgYmUgcmV0cmllZCBhZnRlciBgcGVyaW9kYCBibG9ja3MsIGZvciBhIHRvdGFsIGFtb3VudCBvZiBgcmV0cmllc2AgcmV0cmllcyBvciB1bnRpbDBpdCBzdWNjZWVkcy4AVQFUYXNrcyB3aGljaCBuZWVkIHRvIGJlIHNjaGVkdWxlZCBmb3IgYSByZXRyeSBhcmUgc3RpbGwgc3ViamVjdCB0byB3ZWlnaHQgbWV0ZXJpbmcgYW5kUQFhZ2VuZGEgc3BhY2UsIHNhbWUgYXMgYSByZWd1bGFyIHRhc2suIElmIGEgcGVyaW9kaWMgdGFzayBmYWlscywgaXQgd2lsbCBiZSBzY2hlZHVsZWSQbm9ybWFsbHkgd2hpbGUgdGhlIHRhc2sgaXMgcmV0cnlpbmcuAFEBVGFza3Mgc2NoZWR1bGVkIGFzIGEgcmVzdWx0IG9mIGEgcmV0cnkgZm9yIGEgcGVyaW9kaWMgdGFzayBhcmUgdW5uYW1lZCwgbm9uLXBlcmlvZGljPQFjbG9uZXMgb2YgdGhlIG9yaWdpbmFsIHRhc2suIFRoZWlyIHJldHJ5IGNvbmZpZ3VyYXRpb24gd2lsbCBiZSBkZXJpdmVkIGZyb20gdGhlTQFvcmlnaW5hbCB0YXNrJ3MgY29uZmlndXJhdGlvbiwgYnV0IHdpbGwgaGF2ZSBhIGxvd2VyIHZhbHVlIGZvciBgcmVtYWluaW5nYCB0aGFuIHRoZWRvcmlnaW5hbCBgdG90YWxfcmV0cmllc2AuMGNhbmNlbF9yZXRyeQQBEHRhc2uAAXhUYXNrQWRkcmVzczxCbG9ja051bWJlckZvcjxUPj4ACASoUmVtb3ZlcyB0aGUgcmV0cnkgY29uZmlndXJhdGlvbiBvZiBhIHRhc2suSGNhbmNlbF9yZXRyeV9uYW1lZAQBCGlkBAEgVGFza05hbWUACQS8Q2FuY2VsIHRoZSByZXRyeSBjb25maWd1cmF0aW9uIG9mIGEgbmFtZWQgdGFzay4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMujQEEGE9wdGlvbgQEVAGAAQgQTm9uZQAAABBTb21lBACAAAABAACRAQw8cGFsbGV0X3ByZWltYWdlGHBhbGxldBBDYWxsBARUAAEUNG5vdGVfcHJlaW1hZ2UEARRieXRlczgBHFZlYzx1OD4AABB0UmVnaXN0ZXIgYSBwcmVpbWFnZSBvbi1jaGFpbi4AVQFJZiB0aGUgcHJlaW1hZ2Ugd2FzIHByZXZpb3VzbHkgcmVxdWVzdGVkLCBubyBmZWVzIG9yIGRlcG9zaXRzIGFyZSB0YWtlbiBmb3IgcHJvdmlkaW5nVQF0aGUgcHJlaW1hZ2UuIE90aGVyd2lzZSwgYSBkZXBvc2l0IGlzIHRha2VuIHByb3BvcnRpb25hbCB0byB0aGUgc2l6ZSBvZiB0aGUgcHJlaW1hZ2UuPHVubm90ZV9wcmVpbWFnZQQBEGhhc2g0ARxUOjpIYXNoAAEY3ENsZWFyIGFuIHVucmVxdWVzdGVkIHByZWltYWdlIGZyb20gdGhlIHJ1bnRpbWUgc3RvcmFnZS4A/ElmIGBsZW5gIGlzIHByb3ZpZGVkLCB0aGVuIGl0IHdpbGwgYmUgYSBtdWNoIGNoZWFwZXIgb3BlcmF0aW9uLgABAS0gYGhhc2hgOiBUaGUgaGFzaCBvZiB0aGUgcHJlaW1hZ2UgdG8gYmUgcmVtb3ZlZCBmcm9tIHRoZSBzdG9yZS64LSBgbGVuYDogVGhlIGxlbmd0aCBvZiB0aGUgcHJlaW1hZ2Ugb2YgYGhhc2hgLkByZXF1ZXN0X3ByZWltYWdlBAEQaGFzaDQBHFQ6Okhhc2gAAhBBAVJlcXVlc3QgYSBwcmVpbWFnZSBiZSB1cGxvYWRlZCB0byB0aGUgY2hhaW4gd2l0aG91dCBwYXlpbmcgYW55IGZlZXMgb3IgZGVwb3NpdHMuAFUBSWYgdGhlIHByZWltYWdlIHJlcXVlc3RzIGhhcyBhbHJlYWR5IGJlZW4gcHJvdmlkZWQgb24tY2hhaW4sIHdlIHVucmVzZXJ2ZSBhbnkgZGVwb3NpdDkBYSB1c2VyIG1heSBoYXZlIHBhaWQsIGFuZCB0YWtlIHRoZSBjb250cm9sIG9mIHRoZSBwcmVpbWFnZSBvdXQgb2YgdGhlaXIgaGFuZHMuSHVucmVxdWVzdF9wcmVpbWFnZQQBEGhhc2g0ARxUOjpIYXNoAAMMvENsZWFyIGEgcHJldmlvdXNseSBtYWRlIHJlcXVlc3QgZm9yIGEgcHJlaW1hZ2UuAC0BTk9URTogVEhJUyBNVVNUIE5PVCBCRSBDQUxMRUQgT04gYGhhc2hgIE1PUkUgVElNRVMgVEhBTiBgcmVxdWVzdF9wcmVpbWFnZWAuOGVuc3VyZV91cGRhdGVkBAEYaGFzaGVzlQEBMFZlYzxUOjpIYXNoPgAEDMRFbnN1cmUgdGhhdCB0aGUgYSBidWxrIG9mIHByZS1pbWFnZXMgaXMgdXBncmFkZWQuAD0BVGhlIGNhbGxlciBwYXlzIG5vIGZlZSBpZiBhdCBsZWFzdCA5MCUgb2YgcHJlLWltYWdlcyB3ZXJlIHN1Y2Nlc3NmdWxseSB1cGRhdGVkLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy6VAQAAAjQAmQEMLHBhbGxldF9iYWJlGHBhbGxldBBDYWxsBARUAAEMTHJlcG9ydF9lcXVpdm9jYXRpb24IAUhlcXVpdm9jYXRpb25fcHJvb2adAQGQQm94PEVxdWl2b2NhdGlvblByb29mPEhlYWRlckZvcjxUPj4+AAE8a2V5X293bmVyX3Byb29mrQEBQFQ6OktleU93bmVyUHJvb2YAABAJAVJlcG9ydCBhdXRob3JpdHkgZXF1aXZvY2F0aW9uL21pc2JlaGF2aW9yLiBUaGlzIG1ldGhvZCB3aWxsIHZlcmlmeQUBdGhlIGVxdWl2b2NhdGlvbiBwcm9vZiBhbmQgdmFsaWRhdGUgdGhlIGdpdmVuIGtleSBvd25lcnNoaXAgcHJvb2YNAWFnYWluc3QgdGhlIGV4dHJhY3RlZCBvZmZlbmRlci4gSWYgYm90aCBhcmUgdmFsaWQsIHRoZSBvZmZlbmNlIHdpbGwwYmUgcmVwb3J0ZWQucHJlcG9ydF9lcXVpdm9jYXRpb25fdW5zaWduZWQIAUhlcXVpdm9jYXRpb25fcHJvb2adAQGQQm94PEVxdWl2b2NhdGlvblByb29mPEhlYWRlckZvcjxUPj4+AAE8a2V5X293bmVyX3Byb29mrQEBQFQ6OktleU93bmVyUHJvb2YAASAJAVJlcG9ydCBhdXRob3JpdHkgZXF1aXZvY2F0aW9uL21pc2JlaGF2aW9yLiBUaGlzIG1ldGhvZCB3aWxsIHZlcmlmeQUBdGhlIGVxdWl2b2NhdGlvbiBwcm9vZiBhbmQgdmFsaWRhdGUgdGhlIGdpdmVuIGtleSBvd25lcnNoaXAgcHJvb2YNAWFnYWluc3QgdGhlIGV4dHJhY3RlZCBvZmZlbmRlci4gSWYgYm90aCBhcmUgdmFsaWQsIHRoZSBvZmZlbmNlIHdpbGwwYmUgcmVwb3J0ZWQuDQFUaGlzIGV4dHJpbnNpYyBtdXN0IGJlIGNhbGxlZCB1bnNpZ25lZCBhbmQgaXQgaXMgZXhwZWN0ZWQgdGhhdCBvbmx5FQFibG9jayBhdXRob3JzIHdpbGwgY2FsbCBpdCAodmFsaWRhdGVkIGluIGBWYWxpZGF0ZVVuc2lnbmVkYCksIGFzIHN1Y2gVAWlmIHRoZSBibG9jayBhdXRob3IgaXMgZGVmaW5lZCBpdCB3aWxsIGJlIGRlZmluZWQgYXMgdGhlIGVxdWl2b2NhdGlvbiRyZXBvcnRlci5IcGxhbl9jb25maWdfY2hhbmdlBAEYY29uZmlnsQEBUE5leHRDb25maWdEZXNjcmlwdG9yAAIQXQFQbGFuIGFuIGVwb2NoIGNvbmZpZyBjaGFuZ2UuIFRoZSBlcG9jaCBjb25maWcgY2hhbmdlIGlzIHJlY29yZGVkIGFuZCB3aWxsIGJlIGVuYWN0ZWQgb25RAXRoZSBuZXh0IGNhbGwgdG8gYGVuYWN0X2Vwb2NoX2NoYW5nZWAuIFRoZSBjb25maWcgd2lsbCBiZSBhY3RpdmF0ZWQgb25lIGVwb2NoIGFmdGVyLlkBTXVsdGlwbGUgY2FsbHMgdG8gdGhpcyBtZXRob2Qgd2lsbCByZXBsYWNlIGFueSBleGlzdGluZyBwbGFubmVkIGNvbmZpZyBjaGFuZ2UgdGhhdCBoYWRUbm90IGJlZW4gZW5hY3RlZCB5ZXQuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLp0BCEhzcF9jb25zZW5zdXNfc2xvdHNERXF1aXZvY2F0aW9uUHJvb2YIGEhlYWRlcgGhAQhJZAGlAQAQASBvZmZlbmRlcqUBAQhJZAABEHNsb3SpAQEQU2xvdAABMGZpcnN0X2hlYWRlcqEBARhIZWFkZXIAATRzZWNvbmRfaGVhZGVyoQEBGEhlYWRlcgAAoQEQKHNwX3J1bnRpbWUcZ2VuZXJpYxhoZWFkZXIYSGVhZGVyCBhOdW1iZXIBEBBIYXNoAAAUASxwYXJlbnRfaGFzaDQBMEhhc2g6Ok91dHB1dAABGG51bWJlcuwBGE51bWJlcgABKHN0YXRlX3Jvb3Q0ATBIYXNoOjpPdXRwdXQAATxleHRyaW5zaWNzX3Jvb3Q0ATBIYXNoOjpPdXRwdXQAARhkaWdlc3Q8ARhEaWdlc3QAAKUBDERzcF9jb25zZW5zdXNfYmFiZQxhcHAYUHVibGljAAAEAAQBPHNyMjU1MTk6OlB1YmxpYwAAqQEISHNwX2NvbnNlbnN1c19zbG90cxBTbG90AAAEADABDHU2NAAArQEIKHNwX3Nlc3Npb248TWVtYmVyc2hpcFByb29mAAAMARxzZXNzaW9uEAEwU2Vzc2lvbkluZGV4AAEodHJpZV9ub2Rlc4UBATBWZWM8VmVjPHU4Pj4AATx2YWxpZGF0b3JfY291bnQQAThWYWxpZGF0b3JDb3VudAAAsQEMRHNwX2NvbnNlbnN1c19iYWJlHGRpZ2VzdHNQTmV4dENvbmZpZ0Rlc2NyaXB0b3IAAQQIVjEIAQRjtQEBKCh1NjQsIHU2NCkAATRhbGxvd2VkX3Nsb3RzuQEBMEFsbG93ZWRTbG90cwABAAC1AQAABAgwMAC5AQhEc3BfY29uc2Vuc3VzX2JhYmUwQWxsb3dlZFNsb3RzAAEMMFByaW1hcnlTbG90cwAAAHRQcmltYXJ5QW5kU2Vjb25kYXJ5UGxhaW5TbG90cwABAGxQcmltYXJ5QW5kU2Vjb25kYXJ5VlJGU2xvdHMAAgAAvQEMQHBhbGxldF90aW1lc3RhbXAYcGFsbGV0EENhbGwEBFQAAQQMc2V0BAEMbm93LAEkVDo6TW9tZW50AABMVFNldCB0aGUgY3VycmVudCB0aW1lLgBVAVRoaXMgY2FsbCBzaG91bGQgYmUgaW52b2tlZCBleGFjdGx5IG9uY2UgcGVyIGJsb2NrLiBJdCB3aWxsIHBhbmljIGF0IHRoZSBmaW5hbGl6YXRpb27UcGhhc2UsIGlmIHRoaXMgY2FsbCBoYXNuJ3QgYmVlbiBpbnZva2VkIGJ5IHRoYXQgdGltZS4AQQFUaGUgdGltZXN0YW1wIHNob3VsZCBiZSBncmVhdGVyIHRoYW4gdGhlIHByZXZpb3VzIG9uZSBieSB0aGUgYW1vdW50IHNwZWNpZmllZCBieWhbYENvbmZpZzo6TWluaW11bVBlcmlvZGBdLgDEVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX05vbmVfLgBRAVRoaXMgZGlzcGF0Y2ggY2xhc3MgaXMgX01hbmRhdG9yeV8gdG8gZW5zdXJlIGl0IGdldHMgZXhlY3V0ZWQgaW4gdGhlIGJsb2NrLiBCZSBhd2FyZVEBdGhhdCBjaGFuZ2luZyB0aGUgY29tcGxleGl0eSBvZiB0aGlzIGNhbGwgY291bGQgcmVzdWx0IGV4aGF1c3RpbmcgdGhlIHJlc291cmNlcyBpbiBhhGJsb2NrIHRvIGV4ZWN1dGUgYW55IG90aGVyIGNhbGxzLgA0IyMgQ29tcGxleGl0eTEBLSBgTygxKWAgKE5vdGUgdGhhdCBpbXBsZW1lbnRhdGlvbnMgb2YgYE9uVGltZXN0YW1wU2V0YCBtdXN0IGFsc28gYmUgYE8oMSlgKVUBLSAxIHN0b3JhZ2UgcmVhZCBhbmQgMSBzdG9yYWdlIG11dGF0aW9uIChjb2RlYyBgTygxKWAgYmVjYXVzZSBvZiBgRGlkVXBkYXRlOjp0YWtlYCBpbkAgIGBvbl9maW5hbGl6ZWAp1C0gMSBldmVudCBoYW5kbGVyIGBvbl90aW1lc3RhbXBfc2V0YC4gTXVzdCBiZSBgTygxKWAuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLsEBDDhwYWxsZXRfaW5kaWNlcxhwYWxsZXQQQ2FsbAQEVAABFBRjbGFpbQQBFGluZGV4EAE8VDo6QWNjb3VudEluZGV4AAAwmEFzc2lnbiBhbiBwcmV2aW91c2x5IHVuYXNzaWduZWQgaW5kZXguANxQYXltZW50OiBgRGVwb3NpdGAgaXMgcmVzZXJ2ZWQgZnJvbSB0aGUgc2VuZGVyIGFjY291bnQuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4A8C0gYGluZGV4YDogdGhlIGluZGV4IHRvIGJlIGNsYWltZWQuIFRoaXMgbXVzdCBub3QgYmUgaW4gdXNlLgCQRW1pdHMgYEluZGV4QXNzaWduZWRgIGlmIHN1Y2Nlc3NmdWwuADQjIyBDb21wbGV4aXR5JC0gYE8oMSlgLiB0cmFuc2ZlcggBDG5ld8UBAVBBY2NvdW50SWRMb29rdXBPZjxUPgABFGluZGV4EAE8VDo6QWNjb3VudEluZGV4AAEwXQFBc3NpZ24gYW4gaW5kZXggYWxyZWFkeSBvd25lZCBieSB0aGUgc2VuZGVyIHRvIGFub3RoZXIgYWNjb3VudC4gVGhlIGJhbGFuY2UgcmVzZXJ2YXRpb264aXMgZWZmZWN0aXZlbHkgdHJhbnNmZXJyZWQgdG8gdGhlIG5ldyBhY2NvdW50LgDMVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uACUBLSBgaW5kZXhgOiB0aGUgaW5kZXggdG8gYmUgcmUtYXNzaWduZWQuIFRoaXMgbXVzdCBiZSBvd25lZCBieSB0aGUgc2VuZGVyLl0BLSBgbmV3YDogdGhlIG5ldyBvd25lciBvZiB0aGUgaW5kZXguIFRoaXMgZnVuY3Rpb24gaXMgYSBuby1vcCBpZiBpdCBpcyBlcXVhbCB0byBzZW5kZXIuAJBFbWl0cyBgSW5kZXhBc3NpZ25lZGAgaWYgc3VjY2Vzc2Z1bC4ANCMjIENvbXBsZXhpdHkkLSBgTygxKWAuEGZyZWUEARRpbmRleBABPFQ6OkFjY291bnRJbmRleAACMJRGcmVlIHVwIGFuIGluZGV4IG93bmVkIGJ5IHRoZSBzZW5kZXIuAF0BUGF5bWVudDogQW55IHByZXZpb3VzIGRlcG9zaXQgcGxhY2VkIGZvciB0aGUgaW5kZXggaXMgdW5yZXNlcnZlZCBpbiB0aGUgc2VuZGVyIGFjY291bnQuAFUBVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8gYW5kIHRoZSBzZW5kZXIgbXVzdCBvd24gdGhlIGluZGV4LgANAS0gYGluZGV4YDogdGhlIGluZGV4IHRvIGJlIGZyZWVkLiBUaGlzIG11c3QgYmUgb3duZWQgYnkgdGhlIHNlbmRlci4AhEVtaXRzIGBJbmRleEZyZWVkYCBpZiBzdWNjZXNzZnVsLgA0IyMgQ29tcGxleGl0eSQtIGBPKDEpYC44Zm9yY2VfdHJhbnNmZXIMAQxuZXfFAQFQQWNjb3VudElkTG9va3VwT2Y8VD4AARRpbmRleBABPFQ6OkFjY291bnRJbmRleAABGGZyZWV6ZSABEGJvb2wAAzRVAUZvcmNlIGFuIGluZGV4IHRvIGFuIGFjY291bnQuIFRoaXMgZG9lc24ndCByZXF1aXJlIGEgZGVwb3NpdC4gSWYgdGhlIGluZGV4IGlzIGFscmVhZHnoaGVsZCwgdGhlbiBhbnkgZGVwb3NpdCBpcyByZWltYnVyc2VkIHRvIGl0cyBjdXJyZW50IG93bmVyLgDEVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1Jvb3RfLgCkLSBgaW5kZXhgOiB0aGUgaW5kZXggdG8gYmUgKHJlLSlhc3NpZ25lZC5dAS0gYG5ld2A6IHRoZSBuZXcgb3duZXIgb2YgdGhlIGluZGV4LiBUaGlzIGZ1bmN0aW9uIGlzIGEgbm8tb3AgaWYgaXQgaXMgZXF1YWwgdG8gc2VuZGVyLkEBLSBgZnJlZXplYDogaWYgc2V0IHRvIGB0cnVlYCwgd2lsbCBmcmVlemUgdGhlIGluZGV4IHNvIGl0IGNhbm5vdCBiZSB0cmFuc2ZlcnJlZC4AkEVtaXRzIGBJbmRleEFzc2lnbmVkYCBpZiBzdWNjZXNzZnVsLgA0IyMgQ29tcGxleGl0eSQtIGBPKDEpYC4YZnJlZXplBAEUaW5kZXgQATxUOjpBY2NvdW50SW5kZXgABDBBAUZyZWV6ZSBhbiBpbmRleCBzbyBpdCB3aWxsIGFsd2F5cyBwb2ludCB0byB0aGUgc2VuZGVyIGFjY291bnQuIFRoaXMgY29uc3VtZXMgdGhlIGRlcG9zaXQuAFkBVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8gYW5kIHRoZSBzaWduaW5nIGFjY291bnQgbXVzdCBoYXZlIGFsbm9uLWZyb3plbiBhY2NvdW50IGBpbmRleGAuAKwtIGBpbmRleGA6IHRoZSBpbmRleCB0byBiZSBmcm96ZW4gaW4gcGxhY2UuAIhFbWl0cyBgSW5kZXhGcm96ZW5gIGlmIHN1Y2Nlc3NmdWwuADQjIyBDb21wbGV4aXR5JC0gYE8oMSlgLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy7FAQwoc3BfcnVudGltZTBtdWx0aWFkZHJlc3MwTXVsdGlBZGRyZXNzCCRBY2NvdW50SWQBADBBY2NvdW50SW5kZXgBjAEUCElkBAAAASRBY2NvdW50SWQAAAAUSW5kZXgEAMkBATBBY2NvdW50SW5kZXgAAQAMUmF3BAA4ARxWZWM8dTg+AAIAJEFkZHJlc3MzMgQABAEgW3U4OyAzMl0AAwAkQWRkcmVzczIwBAD4ASBbdTg7IDIwXQAEAADJAQAABowAzQEMPHBhbGxldF9iYWxhbmNlcxhwYWxsZXQQQ2FsbAgEVAAESQABJFB0cmFuc2Zlcl9hbGxvd19kZWF0aAgBEGRlc3TFAQFQQWNjb3VudElkTG9va3VwT2Y8VD4AARR2YWx1ZfwBKFQ6OkJhbGFuY2UAABzUVHJhbnNmZXIgc29tZSBsaXF1aWQgZnJlZSBiYWxhbmNlIHRvIGFub3RoZXIgYWNjb3VudC4ANQFgdHJhbnNmZXJfYWxsb3dfZGVhdGhgIHdpbGwgc2V0IHRoZSBgRnJlZUJhbGFuY2VgIG9mIHRoZSBzZW5kZXIgYW5kIHJlY2VpdmVyLhEBSWYgdGhlIHNlbmRlcidzIGFjY291bnQgaXMgYmVsb3cgdGhlIGV4aXN0ZW50aWFsIGRlcG9zaXQgYXMgYSByZXN1bHSwb2YgdGhlIHRyYW5zZmVyLCB0aGUgYWNjb3VudCB3aWxsIGJlIHJlYXBlZC4AFQFUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBgU2lnbmVkYCBieSB0aGUgdHJhbnNhY3Rvci44Zm9yY2VfdHJhbnNmZXIMARhzb3VyY2XFAQFQQWNjb3VudElkTG9va3VwT2Y8VD4AARBkZXN0xQEBUEFjY291bnRJZExvb2t1cE9mPFQ+AAEUdmFsdWX8AShUOjpCYWxhbmNlAAIIYQFFeGFjdGx5IGFzIGB0cmFuc2Zlcl9hbGxvd19kZWF0aGAsIGV4Y2VwdCB0aGUgb3JpZ2luIG11c3QgYmUgcm9vdCBhbmQgdGhlIHNvdXJjZSBhY2NvdW50RG1heSBiZSBzcGVjaWZpZWQuTHRyYW5zZmVyX2tlZXBfYWxpdmUIARBkZXN0xQEBUEFjY291bnRJZExvb2t1cE9mPFQ+AAEUdmFsdWX8AShUOjpCYWxhbmNlAAMYWQFTYW1lIGFzIHRoZSBbYHRyYW5zZmVyX2FsbG93X2RlYXRoYF0gY2FsbCwgYnV0IHdpdGggYSBjaGVjayB0aGF0IHRoZSB0cmFuc2ZlciB3aWxsIG5vdGBraWxsIHRoZSBvcmlnaW4gYWNjb3VudC4A6Dk5JSBvZiB0aGUgdGltZSB5b3Ugd2FudCBbYHRyYW5zZmVyX2FsbG93X2RlYXRoYF0gaW5zdGVhZC4A8FtgdHJhbnNmZXJfYWxsb3dfZGVhdGhgXTogc3RydWN0LlBhbGxldC5odG1sI21ldGhvZC50cmFuc2ZlcjB0cmFuc2Zlcl9hbGwIARBkZXN0xQEBUEFjY291bnRJZExvb2t1cE9mPFQ+AAEoa2VlcF9hbGl2ZSABEGJvb2wABDwFAVRyYW5zZmVyIHRoZSBlbnRpcmUgdHJhbnNmZXJhYmxlIGJhbGFuY2UgZnJvbSB0aGUgY2FsbGVyIGFjY291bnQuAFkBTk9URTogVGhpcyBmdW5jdGlvbiBvbmx5IGF0dGVtcHRzIHRvIHRyYW5zZmVyIF90cmFuc2ZlcmFibGVfIGJhbGFuY2VzLiBUaGlzIG1lYW5zIHRoYXRhAWFueSBsb2NrZWQsIHJlc2VydmVkLCBvciBleGlzdGVudGlhbCBkZXBvc2l0cyAod2hlbiBga2VlcF9hbGl2ZWAgaXMgYHRydWVgKSwgd2lsbCBub3QgYmVdAXRyYW5zZmVycmVkIGJ5IHRoaXMgZnVuY3Rpb24uIFRvIGVuc3VyZSB0aGF0IHRoaXMgZnVuY3Rpb24gcmVzdWx0cyBpbiBhIGtpbGxlZCBhY2NvdW50LEUBeW91IG1pZ2h0IG5lZWQgdG8gcHJlcGFyZSB0aGUgYWNjb3VudCBieSByZW1vdmluZyBhbnkgcmVmZXJlbmNlIGNvdW50ZXJzLCBzdG9yYWdlQGRlcG9zaXRzLCBldGMuLi4AwFRoZSBkaXNwYXRjaCBvcmlnaW4gb2YgdGhpcyBjYWxsIG11c3QgYmUgU2lnbmVkLgCgLSBgZGVzdGA6IFRoZSByZWNpcGllbnQgb2YgdGhlIHRyYW5zZmVyLlkBLSBga2VlcF9hbGl2ZWA6IEEgYm9vbGVhbiB0byBkZXRlcm1pbmUgaWYgdGhlIGB0cmFuc2Zlcl9hbGxgIG9wZXJhdGlvbiBzaG91bGQgc2VuZCBhbGxNASAgb2YgdGhlIGZ1bmRzIHRoZSBhY2NvdW50IGhhcywgY2F1c2luZyB0aGUgc2VuZGVyIGFjY291bnQgdG8gYmUga2lsbGVkIChmYWxzZSksIG9yWQEgIHRyYW5zZmVyIGV2ZXJ5dGhpbmcgZXhjZXB0IGF0IGxlYXN0IHRoZSBleGlzdGVudGlhbCBkZXBvc2l0LCB3aGljaCB3aWxsIGd1YXJhbnRlZSB0b5wgIGtlZXAgdGhlIHNlbmRlciBhY2NvdW50IGFsaXZlICh0cnVlKS48Zm9yY2VfdW5yZXNlcnZlCAEMd2hvxQEBUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYYW1vdW50GAEoVDo6QmFsYW5jZQAFDLBVbnJlc2VydmUgc29tZSBiYWxhbmNlIGZyb20gYSB1c2VyIGJ5IGZvcmNlLgBsQ2FuIG9ubHkgYmUgY2FsbGVkIGJ5IFJPT1QuQHVwZ3JhZGVfYWNjb3VudHMEAQx3aG/RAQFEVmVjPFQ6OkFjY291bnRJZD4ABiBwVXBncmFkZSBhIHNwZWNpZmllZCBhY2NvdW50LgB0LSBgb3JpZ2luYDogTXVzdCBiZSBgU2lnbmVkYC6QLSBgd2hvYDogVGhlIGFjY291bnQgdG8gYmUgdXBncmFkZWQuAFUBVGhpcyB3aWxsIHdhaXZlIHRoZSB0cmFuc2FjdGlvbiBmZWUgaWYgYXQgbGVhc3QgYWxsIGJ1dCAxMCUgb2YgdGhlIGFjY291bnRzIG5lZWRlZCB0b0EBYmUgdXBncmFkZWQuIChXZSBsZXQgc29tZSBub3QgaGF2ZSB0byBiZSB1cGdyYWRlZCBqdXN0IGluIG9yZGVyIHRvIGFsbG93IGZvciB0aGVYcG9zc2liaWxpdHkgb2YgY2h1cm4pLkRmb3JjZV9zZXRfYmFsYW5jZQgBDHdob8UBAVBBY2NvdW50SWRMb29rdXBPZjxUPgABIG5ld19mcmVl/AEoVDo6QmFsYW5jZQAIDKxTZXQgdGhlIHJlZ3VsYXIgYmFsYW5jZSBvZiBhIGdpdmVuIGFjY291bnQuALBUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgaXMgYHJvb3RgLmxmb3JjZV9hZGp1c3RfdG90YWxfaXNzdWFuY2UIASRkaXJlY3Rpb27VAQFMQWRqdXN0bWVudERpcmVjdGlvbgABFGRlbHRh/AEoVDo6QmFsYW5jZQAJFLhBZGp1c3QgdGhlIHRvdGFsIGlzc3VhbmNlIGluIGEgc2F0dXJhdGluZyB3YXkuAPxDYW4gb25seSBiZSBjYWxsZWQgYnkgcm9vdCBhbmQgYWx3YXlzIG5lZWRzIGEgcG9zaXRpdmUgYGRlbHRhYC4AJCMgRXhhbXBsZRBidXJuCAEUdmFsdWX8AShUOjpCYWxhbmNlAAEoa2VlcF9hbGl2ZSABEGJvb2wAChz8QnVybiB0aGUgc3BlY2lmaWVkIGxpcXVpZCBmcmVlIGJhbGFuY2UgZnJvbSB0aGUgb3JpZ2luIGFjY291bnQuACUBSWYgdGhlIG9yaWdpbidzIGFjY291bnQgZW5kcyB1cCBiZWxvdyB0aGUgZXhpc3RlbnRpYWwgZGVwb3NpdCBhcyBhIHJlc3VsdAkBb2YgdGhlIGJ1cm4gYW5kIGBrZWVwX2FsaXZlYCBpcyBmYWxzZSwgdGhlIGFjY291bnQgd2lsbCBiZSByZWFwZWQuAFEBVW5saWtlIHNlbmRpbmcgZnVuZHMgdG8gYSBfYnVybl8gYWRkcmVzcywgd2hpY2ggbWVyZWx5IG1ha2VzIHRoZSBmdW5kcyBpbmFjY2Vzc2libGUsIQF0aGlzIGBidXJuYCBvcGVyYXRpb24gd2lsbCByZWR1Y2UgdG90YWwgaXNzdWFuY2UgYnkgdGhlIGFtb3VudCBfYnVybmVkXy4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMu0QEAAAIAANUBDDxwYWxsZXRfYmFsYW5jZXMUdHlwZXNMQWRqdXN0bWVudERpcmVjdGlvbgABCCBJbmNyZWFzZQAAACBEZWNyZWFzZQABAADZARA4cGFsbGV0X3N0YWtpbmcYcGFsbGV0GHBhbGxldBBDYWxsBARUAAF4EGJvbmQIARR2YWx1ZfwBMEJhbGFuY2VPZjxUPgABFHBheWVlqAF8UmV3YXJkRGVzdGluYXRpb248VDo6QWNjb3VudElkPgAAQGEBVGFrZSB0aGUgb3JpZ2luIGFjY291bnQgYXMgYSBzdGFzaCBhbmQgbG9jayB1cCBgdmFsdWVgIG9mIGl0cyBiYWxhbmNlLiBgY29udHJvbGxlcmAgd2lsbIBiZSB0aGUgYWNjb3VudCB0aGF0IGNvbnRyb2xzIGl0LgAtAWB2YWx1ZWAgbXVzdCBiZSBtb3JlIHRoYW4gdGhlIGBtaW5pbXVtX2JhbGFuY2VgIHNwZWNpZmllZCBieSBgVDo6Q3VycmVuY3lgLgAhAVRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfIGJ5IHRoZSBzdGFzaCBhY2NvdW50LgA8RW1pdHMgYEJvbmRlZGAuNCMjIENvbXBsZXhpdHnQLSBJbmRlcGVuZGVudCBvZiB0aGUgYXJndW1lbnRzLiBNb2RlcmF0ZSBjb21wbGV4aXR5LhwtIE8oMSkuZC0gVGhyZWUgZXh0cmEgREIgZW50cmllcy4ATQFOT1RFOiBUd28gb2YgdGhlIHN0b3JhZ2Ugd3JpdGVzIChgU2VsZjo6Ym9uZGVkYCwgYFNlbGY6OnBheWVlYCkgYXJlIF9uZXZlcl8gY2xlYW5lZFkBdW5sZXNzIHRoZSBgb3JpZ2luYCBmYWxscyBiZWxvdyBfZXhpc3RlbnRpYWwgZGVwb3NpdF8gKG9yIGVxdWFsIHRvIDApIGFuZCBnZXRzIHJlbW92ZWQgYXMgZHVzdC4oYm9uZF9leHRyYQQBOG1heF9hZGRpdGlvbmFs/AEwQmFsYW5jZU9mPFQ+AAE4YQFBZGQgc29tZSBleHRyYSBhbW91bnQgdGhhdCBoYXZlIGFwcGVhcmVkIGluIHRoZSBzdGFzaCBgZnJlZV9iYWxhbmNlYCBpbnRvIHRoZSBiYWxhbmNlIHVwMGZvciBzdGFraW5nLgBRAVRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfIGJ5IHRoZSBzdGFzaCwgbm90IHRoZSBjb250cm9sbGVyLgBNAVVzZSB0aGlzIGlmIHRoZXJlIGFyZSBhZGRpdGlvbmFsIGZ1bmRzIGluIHlvdXIgc3Rhc2ggYWNjb3VudCB0aGF0IHlvdSB3aXNoIHRvIGJvbmQuVQFVbmxpa2UgW2Bib25kYF0oU2VsZjo6Ym9uZCkgb3IgW2B1bmJvbmRgXShTZWxmOjp1bmJvbmQpIHRoaXMgZnVuY3Rpb24gZG9lcyBub3QgaW1wb3NlvGFueSBsaW1pdGF0aW9uIG9uIHRoZSBhbW91bnQgdGhhdCBjYW4gYmUgYWRkZWQuADxFbWl0cyBgQm9uZGVkYC4ANCMjIENvbXBsZXhpdHnkLSBJbmRlcGVuZGVudCBvZiB0aGUgYXJndW1lbnRzLiBJbnNpZ25pZmljYW50IGNvbXBsZXhpdHkuHC0gTygxKS4YdW5ib25kBAEUdmFsdWX8ATBCYWxhbmNlT2Y8VD4AAkxRAVNjaGVkdWxlIGEgcG9ydGlvbiBvZiB0aGUgc3Rhc2ggdG8gYmUgdW5sb2NrZWQgcmVhZHkgZm9yIHRyYW5zZmVyIG91dCBhZnRlciB0aGUgYm9uZPxwZXJpb2QgZW5kcy4gSWYgdGhpcyBsZWF2ZXMgYW4gYW1vdW50IGFjdGl2ZWx5IGJvbmRlZCBsZXNzIHRoYW4hAVQ6OkN1cnJlbmN5OjptaW5pbXVtX2JhbGFuY2UoKSwgdGhlbiBpdCBpcyBpbmNyZWFzZWQgdG8gdGhlIGZ1bGwgYW1vdW50LgBRAVRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfIGJ5IHRoZSBjb250cm9sbGVyLCBub3QgdGhlIHN0YXNoLgBFAU9uY2UgdGhlIHVubG9jayBwZXJpb2QgaXMgZG9uZSwgeW91IGNhbiBjYWxsIGB3aXRoZHJhd191bmJvbmRlZGAgdG8gYWN0dWFsbHkgbW92Zbx0aGUgZnVuZHMgb3V0IG9mIG1hbmFnZW1lbnQgcmVhZHkgZm9yIHRyYW5zZmVyLgAxAU5vIG1vcmUgdGhhbiBhIGxpbWl0ZWQgbnVtYmVyIG9mIHVubG9ja2luZyBjaHVua3MgKHNlZSBgTWF4VW5sb2NraW5nQ2h1bmtzYClBAWNhbiBjby1leGlzdHMgYXQgdGhlIHNhbWUgdGltZS4gSWYgdGhlcmUgYXJlIG5vIHVubG9ja2luZyBjaHVua3Mgc2xvdHMgYXZhaWxhYmxlRQFbYENhbGw6OndpdGhkcmF3X3VuYm9uZGVkYF0gaXMgY2FsbGVkIHRvIHJlbW92ZSBzb21lIG9mIHRoZSBjaHVua3MgKGlmIHBvc3NpYmxlKS4AOQFJZiBhIHVzZXIgZW5jb3VudGVycyB0aGUgYEluc3VmZmljaWVudEJvbmRgIGVycm9yIHdoZW4gY2FsbGluZyB0aGlzIGV4dHJpbnNpYywZAXRoZXkgc2hvdWxkIGNhbGwgYGNoaWxsYCBmaXJzdCBpbiBvcmRlciB0byBmcmVlIHVwIHRoZWlyIGJvbmRlZCBmdW5kcy4AREVtaXRzIGBVbmJvbmRlZGAuAJRTZWUgYWxzbyBbYENhbGw6OndpdGhkcmF3X3VuYm9uZGVkYF0uRHdpdGhkcmF3X3VuYm9uZGVkBAFIbnVtX3NsYXNoaW5nX3NwYW5zEAEMdTMyAANcKQFSZW1vdmUgYW55IHVubG9ja2VkIGNodW5rcyBmcm9tIHRoZSBgdW5sb2NraW5nYCBxdWV1ZSBmcm9tIG91ciBtYW5hZ2VtZW50LgBVAVRoaXMgZXNzZW50aWFsbHkgZnJlZXMgdXAgdGhhdCBiYWxhbmNlIHRvIGJlIHVzZWQgYnkgdGhlIHN0YXNoIGFjY291bnQgdG8gZG8gd2hhdGV2ZXIkaXQgd2FudHMuABUBVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8gYnkgdGhlIGNvbnRyb2xsZXIuAEhFbWl0cyBgV2l0aGRyYXduYC4AaFNlZSBhbHNvIFtgQ2FsbDo6dW5ib25kYF0uADQjIyBQYXJhbWV0ZXJzAFEBLSBgbnVtX3NsYXNoaW5nX3NwYW5zYCBpbmRpY2F0ZXMgdGhlIG51bWJlciBvZiBtZXRhZGF0YSBzbGFzaGluZyBzcGFucyB0byBjbGVhciB3aGVuVQF0aGlzIGNhbGwgcmVzdWx0cyBpbiBhIGNvbXBsZXRlIHJlbW92YWwgb2YgYWxsIHRoZSBkYXRhIHJlbGF0ZWQgdG8gdGhlIHN0YXNoIGFjY291bnQuPQFJbiB0aGlzIGNhc2UsIHRoZSBgbnVtX3NsYXNoaW5nX3NwYW5zYCBtdXN0IGJlIGxhcmdlciBvciBlcXVhbCB0byB0aGUgbnVtYmVyIG9mXQFzbGFzaGluZyBzcGFucyBhc3NvY2lhdGVkIHdpdGggdGhlIHN0YXNoIGFjY291bnQgaW4gdGhlIFtgU2xhc2hpbmdTcGFuc2BdIHN0b3JhZ2UgdHlwZSwlAW90aGVyd2lzZSB0aGUgY2FsbCB3aWxsIGZhaWwuIFRoZSBjYWxsIHdlaWdodCBpcyBkaXJlY3RseSBwcm9wb3J0aW9uYWwgdG9UYG51bV9zbGFzaGluZ19zcGFuc2AuADQjIyBDb21wbGV4aXR52E8oUykgd2hlcmUgUyBpcyB0aGUgbnVtYmVyIG9mIHNsYXNoaW5nIHNwYW5zIHRvIHJlbW92ZQkBTk9URTogV2VpZ2h0IGFubm90YXRpb24gaXMgdGhlIGtpbGwgc2NlbmFyaW8sIHdlIHJlZnVuZCBvdGhlcndpc2UuIHZhbGlkYXRlBAEUcHJlZnOwAThWYWxpZGF0b3JQcmVmcwAEFOREZWNsYXJlIHRoZSBkZXNpcmUgdG8gdmFsaWRhdGUgZm9yIHRoZSBvcmlnaW4gY29udHJvbGxlci4A2EVmZmVjdHMgd2lsbCBiZSBmZWx0IGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIG5leHQgZXJhLgBRAVRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfIGJ5IHRoZSBjb250cm9sbGVyLCBub3QgdGhlIHN0YXNoLiBub21pbmF0ZQQBHHRhcmdldHPdAQFkVmVjPEFjY291bnRJZExvb2t1cE9mPFQ+PgAFKA0BRGVjbGFyZSB0aGUgZGVzaXJlIHRvIG5vbWluYXRlIGB0YXJnZXRzYCBmb3IgdGhlIG9yaWdpbiBjb250cm9sbGVyLgDYRWZmZWN0cyB3aWxsIGJlIGZlbHQgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgbmV4dCBlcmEuAFEBVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8gYnkgdGhlIGNvbnRyb2xsZXIsIG5vdCB0aGUgc3Rhc2guADQjIyBDb21wbGV4aXR5LQEtIFRoZSB0cmFuc2FjdGlvbidzIGNvbXBsZXhpdHkgaXMgcHJvcG9ydGlvbmFsIHRvIHRoZSBzaXplIG9mIGB0YXJnZXRzYCAoTikFAXdoaWNoIGlzIGNhcHBlZCBhdCBDb21wYWN0QXNzaWdubWVudHM6OkxJTUlUIChUOjpNYXhOb21pbmF0aW9ucyku1C0gQm90aCB0aGUgcmVhZHMgYW5kIHdyaXRlcyBmb2xsb3cgYSBzaW1pbGFyIHBhdHRlcm4uFGNoaWxsAAYoxERlY2xhcmUgbm8gZGVzaXJlIHRvIGVpdGhlciB2YWxpZGF0ZSBvciBub21pbmF0ZS4A2EVmZmVjdHMgd2lsbCBiZSBmZWx0IGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIG5leHQgZXJhLgBRAVRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfIGJ5IHRoZSBjb250cm9sbGVyLCBub3QgdGhlIHN0YXNoLgA0IyMgQ29tcGxleGl0eeQtIEluZGVwZW5kZW50IG9mIHRoZSBhcmd1bWVudHMuIEluc2lnbmlmaWNhbnQgY29tcGxleGl0eS5QLSBDb250YWlucyBvbmUgcmVhZC7ELSBXcml0ZXMgYXJlIGxpbWl0ZWQgdG8gdGhlIGBvcmlnaW5gIGFjY291bnQga2V5LiRzZXRfcGF5ZWUEARRwYXllZagBfFJld2FyZERlc3RpbmF0aW9uPFQ6OkFjY291bnRJZD4ABzC0KFJlLSlzZXQgdGhlIHBheW1lbnQgdGFyZ2V0IGZvciBhIGNvbnRyb2xsZXIuAFEBRWZmZWN0cyB3aWxsIGJlIGZlbHQgaW5zdGFudGx5IChhcyBzb29uIGFzIHRoaXMgZnVuY3Rpb24gaXMgY29tcGxldGVkIHN1Y2Nlc3NmdWxseSkuAFEBVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8gYnkgdGhlIGNvbnRyb2xsZXIsIG5vdCB0aGUgc3Rhc2guADQjIyBDb21wbGV4aXR5GC0gTygxKeQtIEluZGVwZW5kZW50IG9mIHRoZSBhcmd1bWVudHMuIEluc2lnbmlmaWNhbnQgY29tcGxleGl0eS6ULSBDb250YWlucyBhIGxpbWl0ZWQgbnVtYmVyIG9mIHJlYWRzLsQtIFdyaXRlcyBhcmUgbGltaXRlZCB0byB0aGUgYG9yaWdpbmAgYWNjb3VudCBrZXkuJC0tLS0tLS0tLThzZXRfY29udHJvbGxlcgAIOEUBKFJlLSlzZXRzIHRoZSBjb250cm9sbGVyIG9mIGEgc3Rhc2ggdG8gdGhlIHN0YXNoIGl0c2VsZi4gVGhpcyBmdW5jdGlvbiBwcmV2aW91c2x5TQFhY2NlcHRlZCBhIGBjb250cm9sbGVyYCBhcmd1bWVudCB0byBzZXQgdGhlIGNvbnRyb2xsZXIgdG8gYW4gYWNjb3VudCBvdGhlciB0aGFuIHRoZVkBc3Rhc2ggaXRzZWxmLiBUaGlzIGZ1bmN0aW9uYWxpdHkgaGFzIG5vdyBiZWVuIHJlbW92ZWQsIG5vdyBvbmx5IHNldHRpbmcgdGhlIGNvbnRyb2xsZXKMdG8gdGhlIHN0YXNoLCBpZiBpdCBpcyBub3QgYWxyZWFkeS4AUQFFZmZlY3RzIHdpbGwgYmUgZmVsdCBpbnN0YW50bHkgKGFzIHNvb24gYXMgdGhpcyBmdW5jdGlvbiBpcyBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5KS4AUQFUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXyBieSB0aGUgc3Rhc2gsIG5vdCB0aGUgY29udHJvbGxlci4ANCMjIENvbXBsZXhpdHkQTygxKeQtIEluZGVwZW5kZW50IG9mIHRoZSBhcmd1bWVudHMuIEluc2lnbmlmaWNhbnQgY29tcGxleGl0eS6ULSBDb250YWlucyBhIGxpbWl0ZWQgbnVtYmVyIG9mIHJlYWRzLsQtIFdyaXRlcyBhcmUgbGltaXRlZCB0byB0aGUgYG9yaWdpbmAgYWNjb3VudCBrZXkuTHNldF92YWxpZGF0b3JfY291bnQEAQxuZXfsAQx1MzIACRiQU2V0cyB0aGUgaWRlYWwgbnVtYmVyIG9mIHZhbGlkYXRvcnMuAIRUaGUgZGlzcGF0Y2ggb3JpZ2luIG11c3QgYmUgUm9vdC4ANCMjIENvbXBsZXhpdHkQTygxKWBpbmNyZWFzZV92YWxpZGF0b3JfY291bnQEAShhZGRpdGlvbmFs7AEMdTMyAAoc6EluY3JlbWVudHMgdGhlIGlkZWFsIG51bWJlciBvZiB2YWxpZGF0b3JzIHVwIHRvIG1heGltdW0gb2aMYEVsZWN0aW9uUHJvdmlkZXJCYXNlOjpNYXhXaW5uZXJzYC4AhFRoZSBkaXNwYXRjaCBvcmlnaW4gbXVzdCBiZSBSb290LgA0IyMgQ29tcGxleGl0eZhTYW1lIGFzIFtgU2VsZjo6c2V0X3ZhbGlkYXRvcl9jb3VudGBdLlRzY2FsZV92YWxpZGF0b3JfY291bnQEARhmYWN0b3LhAQEcUGVyY2VudAALHBEBU2NhbGUgdXAgdGhlIGlkZWFsIG51bWJlciBvZiB2YWxpZGF0b3JzIGJ5IGEgZmFjdG9yIHVwIHRvIG1heGltdW0gb2aMYEVsZWN0aW9uUHJvdmlkZXJCYXNlOjpNYXhXaW5uZXJzYC4AhFRoZSBkaXNwYXRjaCBvcmlnaW4gbXVzdCBiZSBSb290LgA0IyMgQ29tcGxleGl0eZhTYW1lIGFzIFtgU2VsZjo6c2V0X3ZhbGlkYXRvcl9jb3VudGBdLjRmb3JjZV9ub19lcmFzAAw0rEZvcmNlIHRoZXJlIHRvIGJlIG5vIG5ldyBlcmFzIGluZGVmaW5pdGVseS4AhFRoZSBkaXNwYXRjaCBvcmlnaW4gbXVzdCBiZSBSb290LgAkIyBXYXJuaW5nABkBVGhlIGVsZWN0aW9uIHByb2Nlc3Mgc3RhcnRzIG11bHRpcGxlIGJsb2NrcyBiZWZvcmUgdGhlIGVuZCBvZiB0aGUgZXJhLjkBVGh1cyB0aGUgZWxlY3Rpb24gcHJvY2VzcyBtYXkgYmUgb25nb2luZyB3aGVuIHRoaXMgaXMgY2FsbGVkLiBJbiB0aGlzIGNhc2UgdGhl3GVsZWN0aW9uIHdpbGwgY29udGludWUgdW50aWwgdGhlIG5leHQgZXJhIGlzIHRyaWdnZXJlZC4ANCMjIENvbXBsZXhpdHk8LSBObyBhcmd1bWVudHMuOC0gV2VpZ2h0OiBPKDEpNGZvcmNlX25ld19lcmEADThJAUZvcmNlIHRoZXJlIHRvIGJlIGEgbmV3IGVyYSBhdCB0aGUgZW5kIG9mIHRoZSBuZXh0IHNlc3Npb24uIEFmdGVyIHRoaXMsIGl0IHdpbGwgYmWccmVzZXQgdG8gbm9ybWFsIChub24tZm9yY2VkKSBiZWhhdmlvdXIuAIRUaGUgZGlzcGF0Y2ggb3JpZ2luIG11c3QgYmUgUm9vdC4AJCMgV2FybmluZwAZAVRoZSBlbGVjdGlvbiBwcm9jZXNzIHN0YXJ0cyBtdWx0aXBsZSBibG9ja3MgYmVmb3JlIHRoZSBlbmQgb2YgdGhlIGVyYS5JAUlmIHRoaXMgaXMgY2FsbGVkIGp1c3QgYmVmb3JlIGEgbmV3IGVyYSBpcyB0cmlnZ2VyZWQsIHRoZSBlbGVjdGlvbiBwcm9jZXNzIG1heSBub3SMaGF2ZSBlbm91Z2ggYmxvY2tzIHRvIGdldCBhIHJlc3VsdC4ANCMjIENvbXBsZXhpdHk8LSBObyBhcmd1bWVudHMuOC0gV2VpZ2h0OiBPKDEpRHNldF9pbnZ1bG5lcmFibGVzBAE0aW52dWxuZXJhYmxlc9EBAURWZWM8VDo6QWNjb3VudElkPgAODMhTZXQgdGhlIHZhbGlkYXRvcnMgd2hvIGNhbm5vdCBiZSBzbGFzaGVkIChpZiBhbnkpLgCEVGhlIGRpc3BhdGNoIG9yaWdpbiBtdXN0IGJlIFJvb3QuNGZvcmNlX3Vuc3Rha2UIARRzdGFzaAABMFQ6OkFjY291bnRJZAABSG51bV9zbGFzaGluZ19zcGFucxABDHUzMgAPIAkBRm9yY2UgYSBjdXJyZW50IHN0YWtlciB0byBiZWNvbWUgY29tcGxldGVseSB1bnN0YWtlZCwgaW1tZWRpYXRlbHkuAIRUaGUgZGlzcGF0Y2ggb3JpZ2luIG11c3QgYmUgUm9vdC4ANCMjIFBhcmFtZXRlcnMARQEtIGBudW1fc2xhc2hpbmdfc3BhbnNgOiBSZWZlciB0byBjb21tZW50cyBvbiBbYENhbGw6OndpdGhkcmF3X3VuYm9uZGVkYF0gZm9yIG1vcmUgZGV0YWlscy5QZm9yY2VfbmV3X2VyYV9hbHdheXMAECQBAUZvcmNlIHRoZXJlIHRvIGJlIGEgbmV3IGVyYSBhdCB0aGUgZW5kIG9mIHNlc3Npb25zIGluZGVmaW5pdGVseS4AhFRoZSBkaXNwYXRjaCBvcmlnaW4gbXVzdCBiZSBSb290LgAkIyBXYXJuaW5nABkBVGhlIGVsZWN0aW9uIHByb2Nlc3Mgc3RhcnRzIG11bHRpcGxlIGJsb2NrcyBiZWZvcmUgdGhlIGVuZCBvZiB0aGUgZXJhLkkBSWYgdGhpcyBpcyBjYWxsZWQganVzdCBiZWZvcmUgYSBuZXcgZXJhIGlzIHRyaWdnZXJlZCwgdGhlIGVsZWN0aW9uIHByb2Nlc3MgbWF5IG5vdIxoYXZlIGVub3VnaCBibG9ja3MgdG8gZ2V0IGEgcmVzdWx0LlRjYW5jZWxfZGVmZXJyZWRfc2xhc2gIAQxlcmEQASBFcmFJbmRleAABNHNsYXNoX2luZGljZXPlAQEgVmVjPHUzMj4AERSUQ2FuY2VsIGVuYWN0bWVudCBvZiBhIGRlZmVycmVkIHNsYXNoLgCYQ2FuIGJlIGNhbGxlZCBieSB0aGUgYFQ6OkFkbWluT3JpZ2luYC4AAQFQYXJhbWV0ZXJzOiBlcmEgYW5kIGluZGljZXMgb2YgdGhlIHNsYXNoZXMgZm9yIHRoYXQgZXJhIHRvIGtpbGwuOHBheW91dF9zdGFrZXJzCAE8dmFsaWRhdG9yX3N0YXNoAAEwVDo6QWNjb3VudElkAAEMZXJhEAEgRXJhSW5kZXgAEjQZAVBheSBvdXQgbmV4dCBwYWdlIG9mIHRoZSBzdGFrZXJzIGJlaGluZCBhIHZhbGlkYXRvciBmb3IgdGhlIGdpdmVuIGVyYS4A6C0gYHZhbGlkYXRvcl9zdGFzaGAgaXMgdGhlIHN0YXNoIGFjY291bnQgb2YgdGhlIHZhbGlkYXRvci4xAS0gYGVyYWAgbWF5IGJlIGFueSBlcmEgYmV0d2VlbiBgW2N1cnJlbnRfZXJhIC0gaGlzdG9yeV9kZXB0aDsgY3VycmVudF9lcmFdYC4AVQFUaGUgb3JpZ2luIG9mIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLiBBbnkgYWNjb3VudCBjYW4gY2FsbCB0aGlzIGZ1bmN0aW9uLCBldmVuIGlmdGl0IGlzIG5vdCBvbmUgb2YgdGhlIHN0YWtlcnMuAEkBVGhlIHJld2FyZCBwYXlvdXQgY291bGQgYmUgcGFnZWQgaW4gY2FzZSB0aGVyZSBhcmUgdG9vIG1hbnkgbm9taW5hdG9ycyBiYWNraW5nIHRoZV0BYHZhbGlkYXRvcl9zdGFzaGAuIFRoaXMgY2FsbCB3aWxsIHBheW91dCB1bnBhaWQgcGFnZXMgaW4gYW4gYXNjZW5kaW5nIG9yZGVyLiBUbyBjbGFpbSBhtHNwZWNpZmljIHBhZ2UsIHVzZSBgcGF5b3V0X3N0YWtlcnNfYnlfcGFnZWAuYADwSWYgYWxsIHBhZ2VzIGFyZSBjbGFpbWVkLCBpdCByZXR1cm5zIGFuIGVycm9yIGBJbnZhbGlkUGFnZWAuGHJlYm9uZAQBFHZhbHVl/AEwQmFsYW5jZU9mPFQ+ABMc3FJlYm9uZCBhIHBvcnRpb24gb2YgdGhlIHN0YXNoIHNjaGVkdWxlZCB0byBiZSB1bmxvY2tlZC4A1FRoZSBkaXNwYXRjaCBvcmlnaW4gbXVzdCBiZSBzaWduZWQgYnkgdGhlIGNvbnRyb2xsZXIuADQjIyBDb21wbGV4aXR50C0gVGltZSBjb21wbGV4aXR5OiBPKEwpLCB3aGVyZSBMIGlzIHVubG9ja2luZyBjaHVua3OILSBCb3VuZGVkIGJ5IGBNYXhVbmxvY2tpbmdDaHVua3NgLihyZWFwX3N0YXNoCAEUc3Rhc2gAATBUOjpBY2NvdW50SWQAAUhudW1fc2xhc2hpbmdfc3BhbnMQAQx1MzIAFEhdAVJlbW92ZSBhbGwgZGF0YSBzdHJ1Y3R1cmVzIGNvbmNlcm5pbmcgYSBzdGFrZXIvc3Rhc2ggb25jZSBpdCBpcyBhdCBhIHN0YXRlIHdoZXJlIGl0IGNhbgUBYmUgY29uc2lkZXJlZCBgZHVzdGAgaW4gdGhlIHN0YWtpbmcgc3lzdGVtLiBUaGUgcmVxdWlyZW1lbnRzIGFyZToABQExLiB0aGUgYHRvdGFsX2JhbGFuY2VgIG9mIHRoZSBzdGFzaCBpcyBiZWxvdyBleGlzdGVudGlhbCBkZXBvc2l0LhEBMi4gb3IsIHRoZSBgbGVkZ2VyLnRvdGFsYCBvZiB0aGUgc3Rhc2ggaXMgYmVsb3cgZXhpc3RlbnRpYWwgZGVwb3NpdC5hATMuIG9yLCBleGlzdGVudGlhbCBkZXBvc2l0IGlzIHplcm8gYW5kIGVpdGhlciBgdG90YWxfYmFsYW5jZWAgb3IgYGxlZGdlci50b3RhbGAgaXMgemVyby4AVQFUaGUgZm9ybWVyIGNhbiBoYXBwZW4gaW4gY2FzZXMgbGlrZSBhIHNsYXNoOyB0aGUgbGF0dGVyIHdoZW4gYSBmdWxseSB1bmJvbmRlZCBhY2NvdW50CQFpcyBzdGlsbCByZWNlaXZpbmcgc3Rha2luZyByZXdhcmRzIGluIGBSZXdhcmREZXN0aW5hdGlvbjo6U3Rha2VkYC4AMQFJdCBjYW4gYmUgY2FsbGVkIGJ5IGFueW9uZSwgYXMgbG9uZyBhcyBgc3Rhc2hgIG1lZXRzIHRoZSBhYm92ZSByZXF1aXJlbWVudHMuANxSZWZ1bmRzIHRoZSB0cmFuc2FjdGlvbiBmZWVzIHVwb24gc3VjY2Vzc2Z1bCBleGVjdXRpb24uADQjIyBQYXJhbWV0ZXJzAEUBLSBgbnVtX3NsYXNoaW5nX3NwYW5zYDogUmVmZXIgdG8gY29tbWVudHMgb24gW2BDYWxsOjp3aXRoZHJhd191bmJvbmRlZGBdIGZvciBtb3JlIGRldGFpbHMuEGtpY2sEAQx3aG/dAQFkVmVjPEFjY291bnRJZExvb2t1cE9mPFQ+PgAVLOBSZW1vdmUgdGhlIGdpdmVuIG5vbWluYXRpb25zIGZyb20gdGhlIGNhbGxpbmcgdmFsaWRhdG9yLgDYRWZmZWN0cyB3aWxsIGJlIGZlbHQgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgbmV4dCBlcmEuAFEBVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8gYnkgdGhlIGNvbnRyb2xsZXIsIG5vdCB0aGUgc3Rhc2guAE0BLSBgd2hvYDogQSBsaXN0IG9mIG5vbWluYXRvciBzdGFzaCBhY2NvdW50cyB3aG8gYXJlIG5vbWluYXRpbmcgdGhpcyB2YWxpZGF0b3Igd2hpY2jAICBzaG91bGQgbm8gbG9uZ2VyIGJlIG5vbWluYXRpbmcgdGhpcyB2YWxpZGF0b3IuAFUBTm90ZTogTWFraW5nIHRoaXMgY2FsbCBvbmx5IG1ha2VzIHNlbnNlIGlmIHlvdSBmaXJzdCBzZXQgdGhlIHZhbGlkYXRvciBwcmVmZXJlbmNlcyB0b3hibG9jayBhbnkgZnVydGhlciBub21pbmF0aW9ucy5Mc2V0X3N0YWtpbmdfY29uZmlncxwBSG1pbl9ub21pbmF0b3JfYm9uZOkBAVhDb25maWdPcDxCYWxhbmNlT2Y8VD4+AAFIbWluX3ZhbGlkYXRvcl9ib25k6QEBWENvbmZpZ09wPEJhbGFuY2VPZjxUPj4AAUxtYXhfbm9taW5hdG9yX2NvdW507QEBNENvbmZpZ09wPHUzMj4AAUxtYXhfdmFsaWRhdG9yX2NvdW507QEBNENvbmZpZ09wPHUzMj4AATxjaGlsbF90aHJlc2hvbGTxAQFEQ29uZmlnT3A8UGVyY2VudD4AAThtaW5fY29tbWlzc2lvbvUBAURDb25maWdPcDxQZXJiaWxsPgABSG1heF9zdGFrZWRfcmV3YXJkc/EBAURDb25maWdPcDxQZXJjZW50PgAWRKxVcGRhdGUgdGhlIHZhcmlvdXMgc3Rha2luZyBjb25maWd1cmF0aW9ucyAuACUBKiBgbWluX25vbWluYXRvcl9ib25kYDogVGhlIG1pbmltdW0gYWN0aXZlIGJvbmQgbmVlZGVkIHRvIGJlIGEgbm9taW5hdG9yLiUBKiBgbWluX3ZhbGlkYXRvcl9ib25kYDogVGhlIG1pbmltdW0gYWN0aXZlIGJvbmQgbmVlZGVkIHRvIGJlIGEgdmFsaWRhdG9yLlUBKiBgbWF4X25vbWluYXRvcl9jb3VudGA6IFRoZSBtYXggbnVtYmVyIG9mIHVzZXJzIHdobyBjYW4gYmUgYSBub21pbmF0b3IgYXQgb25jZS4gV2hlbpggIHNldCB0byBgTm9uZWAsIG5vIGxpbWl0IGlzIGVuZm9yY2VkLlUBKiBgbWF4X3ZhbGlkYXRvcl9jb3VudGA6IFRoZSBtYXggbnVtYmVyIG9mIHVzZXJzIHdobyBjYW4gYmUgYSB2YWxpZGF0b3IgYXQgb25jZS4gV2hlbpggIHNldCB0byBgTm9uZWAsIG5vIGxpbWl0IGlzIGVuZm9yY2VkLlkBKiBgY2hpbGxfdGhyZXNob2xkYDogVGhlIHJhdGlvIG9mIGBtYXhfbm9taW5hdG9yX2NvdW50YCBvciBgbWF4X3ZhbGlkYXRvcl9jb3VudGAgd2hpY2gZASAgc2hvdWxkIGJlIGZpbGxlZCBpbiBvcmRlciBmb3IgdGhlIGBjaGlsbF9vdGhlcmAgdHJhbnNhY3Rpb24gdG8gd29yay5hASogYG1pbl9jb21taXNzaW9uYDogVGhlIG1pbmltdW0gYW1vdW50IG9mIGNvbW1pc3Npb24gdGhhdCBlYWNoIHZhbGlkYXRvcnMgbXVzdCBtYWludGFpbi5VASAgVGhpcyBpcyBjaGVja2VkIG9ubHkgdXBvbiBjYWxsaW5nIGB2YWxpZGF0ZWAuIEV4aXN0aW5nIHZhbGlkYXRvcnMgYXJlIG5vdCBhZmZlY3RlZC4AxFJ1bnRpbWVPcmlnaW4gbXVzdCBiZSBSb290IHRvIGNhbGwgdGhpcyBmdW5jdGlvbi4ANQFOT1RFOiBFeGlzdGluZyBub21pbmF0b3JzIGFuZCB2YWxpZGF0b3JzIHdpbGwgbm90IGJlIGFmZmVjdGVkIGJ5IHRoaXMgdXBkYXRlLhEBdG8ga2ljayBwZW9wbGUgdW5kZXIgdGhlIG5ldyBsaW1pdHMsIGBjaGlsbF9vdGhlcmAgc2hvdWxkIGJlIGNhbGxlZC4sY2hpbGxfb3RoZXIEARRzdGFzaAABMFQ6OkFjY291bnRJZAAXaEEBRGVjbGFyZSBhIGBjb250cm9sbGVyYCB0byBzdG9wIHBhcnRpY2lwYXRpbmcgYXMgZWl0aGVyIGEgdmFsaWRhdG9yIG9yIG5vbWluYXRvci4A2EVmZmVjdHMgd2lsbCBiZSBmZWx0IGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIG5leHQgZXJhLgBBAVRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLCBidXQgY2FuIGJlIGNhbGxlZCBieSBhbnlvbmUuAFkBSWYgdGhlIGNhbGxlciBpcyB0aGUgc2FtZSBhcyB0aGUgY29udHJvbGxlciBiZWluZyB0YXJnZXRlZCwgdGhlbiBubyBmdXJ0aGVyIGNoZWNrcyBhcmXYZW5mb3JjZWQsIGFuZCB0aGlzIGZ1bmN0aW9uIGJlaGF2ZXMganVzdCBsaWtlIGBjaGlsbGAuAF0BSWYgdGhlIGNhbGxlciBpcyBkaWZmZXJlbnQgdGhhbiB0aGUgY29udHJvbGxlciBiZWluZyB0YXJnZXRlZCwgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zMG11c3QgYmUgbWV0OgAdASogYGNvbnRyb2xsZXJgIG11c3QgYmVsb25nIHRvIGEgbm9taW5hdG9yIHdobyBoYXMgYmVjb21lIG5vbi1kZWNvZGFibGUsAAxPcjoAPQEqIEEgYENoaWxsVGhyZXNob2xkYCBtdXN0IGJlIHNldCBhbmQgY2hlY2tlZCB3aGljaCBkZWZpbmVzIGhvdyBjbG9zZSB0byB0aGUgbWF4VQEgIG5vbWluYXRvcnMgb3IgdmFsaWRhdG9ycyB3ZSBtdXN0IHJlYWNoIGJlZm9yZSB1c2VycyBjYW4gc3RhcnQgY2hpbGxpbmcgb25lLWFub3RoZXIuWQEqIEEgYE1heE5vbWluYXRvckNvdW50YCBhbmQgYE1heFZhbGlkYXRvckNvdW50YCBtdXN0IGJlIHNldCB3aGljaCBpcyB1c2VkIHRvIGRldGVybWluZZAgIGhvdyBjbG9zZSB3ZSBhcmUgdG8gdGhlIHRocmVzaG9sZC5dASogQSBgTWluTm9taW5hdG9yQm9uZGAgYW5kIGBNaW5WYWxpZGF0b3JCb25kYCBtdXN0IGJlIHNldCBhbmQgY2hlY2tlZCwgd2hpY2ggZGV0ZXJtaW5lc1EBICBpZiB0aGlzIGlzIGEgcGVyc29uIHRoYXQgc2hvdWxkIGJlIGNoaWxsZWQgYmVjYXVzZSB0aGV5IGhhdmUgbm90IG1ldCB0aGUgdGhyZXNob2xkQCAgYm9uZCByZXF1aXJlZC4AVQFUaGlzIGNhbiBiZSBoZWxwZnVsIGlmIGJvbmQgcmVxdWlyZW1lbnRzIGFyZSB1cGRhdGVkLCBhbmQgd2UgbmVlZCB0byByZW1vdmUgb2xkIHVzZXJzmHdobyBkbyBub3Qgc2F0aXNmeSB0aGVzZSByZXF1aXJlbWVudHMuaGZvcmNlX2FwcGx5X21pbl9jb21taXNzaW9uBAE8dmFsaWRhdG9yX3N0YXNoAAEwVDo6QWNjb3VudElkABgMRQFGb3JjZSBhIHZhbGlkYXRvciB0byBoYXZlIGF0IGxlYXN0IHRoZSBtaW5pbXVtIGNvbW1pc3Npb24uIFRoaXMgd2lsbCBub3QgYWZmZWN0IGFhAXZhbGlkYXRvciB3aG8gYWxyZWFkeSBoYXMgYSBjb21taXNzaW9uIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0aGUgbWluaW11bS4gQW55IGFjY291bnQ4Y2FuIGNhbGwgdGhpcy5Ic2V0X21pbl9jb21taXNzaW9uBAEMbmV3rAEcUGVyYmlsbAAZECUBU2V0cyB0aGUgbWluaW11bSBhbW91bnQgb2YgY29tbWlzc2lvbiB0aGF0IGVhY2ggdmFsaWRhdG9ycyBtdXN0IG1haW50YWluLgBZAVRoaXMgY2FsbCBoYXMgbG93ZXIgcHJpdmlsZWdlIHJlcXVpcmVtZW50cyB0aGFuIGBzZXRfc3Rha2luZ19jb25maWdgIGFuZCBjYW4gYmUgY2FsbGVkzGJ5IHRoZSBgVDo6QWRtaW5PcmlnaW5gLiBSb290IGNhbiBhbHdheXMgY2FsbCB0aGlzLlhwYXlvdXRfc3Rha2Vyc19ieV9wYWdlDAE8dmFsaWRhdG9yX3N0YXNoAAEwVDo6QWNjb3VudElkAAEMZXJhEAEgRXJhSW5kZXgAARBwYWdlEAEQUGFnZQAaRDEBUGF5IG91dCBhIHBhZ2Ugb2YgdGhlIHN0YWtlcnMgYmVoaW5kIGEgdmFsaWRhdG9yIGZvciB0aGUgZ2l2ZW4gZXJhIGFuZCBwYWdlLgDoLSBgdmFsaWRhdG9yX3N0YXNoYCBpcyB0aGUgc3Rhc2ggYWNjb3VudCBvZiB0aGUgdmFsaWRhdG9yLjEBLSBgZXJhYCBtYXkgYmUgYW55IGVyYSBiZXR3ZWVuIGBbY3VycmVudF9lcmEgLSBoaXN0b3J5X2RlcHRoOyBjdXJyZW50X2VyYV1gLjEBLSBgcGFnZWAgaXMgdGhlIHBhZ2UgaW5kZXggb2Ygbm9taW5hdG9ycyB0byBwYXkgb3V0IHdpdGggdmFsdWUgYmV0d2VlbiAwIGFuZLAgIGBudW1fbm9taW5hdG9ycyAvIFQ6Ok1heEV4cG9zdXJlUGFnZVNpemVgLgBVAVRoZSBvcmlnaW4gb2YgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uIEFueSBhY2NvdW50IGNhbiBjYWxsIHRoaXMgZnVuY3Rpb24sIGV2ZW4gaWZ0aXQgaXMgbm90IG9uZSBvZiB0aGUgc3Rha2Vycy4APQFJZiBhIHZhbGlkYXRvciBoYXMgbW9yZSB0aGFuIFtgQ29uZmlnOjpNYXhFeHBvc3VyZVBhZ2VTaXplYF0gbm9taW5hdG9ycyBiYWNraW5nKQF0aGVtLCB0aGVuIHRoZSBsaXN0IG9mIG5vbWluYXRvcnMgaXMgcGFnZWQsIHdpdGggZWFjaCBwYWdlIGJlaW5nIGNhcHBlZCBhdFUBW2BDb25maWc6Ok1heEV4cG9zdXJlUGFnZVNpemVgLl0gSWYgYSB2YWxpZGF0b3IgaGFzIG1vcmUgdGhhbiBvbmUgcGFnZSBvZiBub21pbmF0b3JzLEkBdGhlIGNhbGwgbmVlZHMgdG8gYmUgbWFkZSBmb3IgZWFjaCBwYWdlIHNlcGFyYXRlbHkgaW4gb3JkZXIgZm9yIGFsbCB0aGUgbm9taW5hdG9yc1UBYmFja2luZyBhIHZhbGlkYXRvciB0byByZWNlaXZlIHRoZSByZXdhcmQuIFRoZSBub21pbmF0b3JzIGFyZSBub3Qgc29ydGVkIGFjcm9zcyBwYWdlc2EBYW5kIHNvIGl0IHNob3VsZCBub3QgYmUgYXNzdW1lZCB0aGUgaGlnaGVzdCBzdGFrZXIgd291bGQgYmUgb24gdGhlIHRvcG1vc3QgcGFnZSBhbmQgdmljZUkBdmVyc2EuIElmIHJld2FyZHMgYXJlIG5vdCBjbGFpbWVkIGluIFtgQ29uZmlnOjpIaXN0b3J5RGVwdGhgXSBlcmFzLCB0aGV5IGFyZSBsb3N0LjB1cGRhdGVfcGF5ZWUEAShjb250cm9sbGVyAAEwVDo6QWNjb3VudElkABsY4E1pZ3JhdGVzIGFuIGFjY291bnQncyBgUmV3YXJkRGVzdGluYXRpb246OkNvbnRyb2xsZXJgIHRvpGBSZXdhcmREZXN0aW5hdGlvbjo6QWNjb3VudChjb250cm9sbGVyKWAuAFEBRWZmZWN0cyB3aWxsIGJlIGZlbHQgaW5zdGFudGx5IChhcyBzb29uIGFzIHRoaXMgZnVuY3Rpb24gaXMgY29tcGxldGVkIHN1Y2Nlc3NmdWxseSkuADEBVGhpcyB3aWxsIHdhaXZlIHRoZSB0cmFuc2FjdGlvbiBmZWUgaWYgdGhlIGBwYXllZWAgaXMgc3VjY2Vzc2Z1bGx5IG1pZ3JhdGVkLmhkZXByZWNhdGVfY29udHJvbGxlcl9iYXRjaAQBLGNvbnRyb2xsZXJz+QEB9EJvdW5kZWRWZWM8VDo6QWNjb3VudElkLCBUOjpNYXhDb250cm9sbGVyc0luRGVwcmVjYXRpb25CYXRjaD4AHBxdAVVwZGF0ZXMgYSBiYXRjaCBvZiBjb250cm9sbGVyIGFjY291bnRzIHRvIHRoZWlyIGNvcnJlc3BvbmRpbmcgc3Rhc2ggYWNjb3VudCBpZiB0aGV5IGFyZWEBbm90IHRoZSBzYW1lLiBJZ25vcmVzIGFueSBjb250cm9sbGVyIGFjY291bnRzIHRoYXQgZG8gbm90IGV4aXN0LCBhbmQgZG9lcyBub3Qgb3BlcmF0ZSBpZrh0aGUgc3Rhc2ggYW5kIGNvbnRyb2xsZXIgYXJlIGFscmVhZHkgdGhlIHNhbWUuAFEBRWZmZWN0cyB3aWxsIGJlIGZlbHQgaW5zdGFudGx5IChhcyBzb29uIGFzIHRoaXMgZnVuY3Rpb24gaXMgY29tcGxldGVkIHN1Y2Nlc3NmdWxseSkuALRUaGUgZGlzcGF0Y2ggb3JpZ2luIG11c3QgYmUgYFQ6OkFkbWluT3JpZ2luYC44cmVzdG9yZV9sZWRnZXIQARRzdGFzaAABMFQ6OkFjY291bnRJZAABQG1heWJlX2NvbnRyb2xsZXL9AQFQT3B0aW9uPFQ6OkFjY291bnRJZD4AASxtYXliZV90b3RhbAECAVBPcHRpb248QmFsYW5jZU9mPFQ+PgABPG1heWJlX3VubG9ja2luZwUCARUBT3B0aW9uPEJvdW5kZWRWZWM8VW5sb2NrQ2h1bms8QmFsYW5jZU9mPFQ+PiwgVDo6Ck1heFVubG9ja2luZ0NodW5rcz4+AB0sBQFSZXN0b3JlcyB0aGUgc3RhdGUgb2YgYSBsZWRnZXIgd2hpY2ggaXMgaW4gYW4gaW5jb25zaXN0ZW50IHN0YXRlLgDcVGhlIHJlcXVpcmVtZW50cyB0byByZXN0b3JlIGEgbGVkZ2VyIGFyZSB0aGUgZm9sbG93aW5nOmQqIFRoZSBzdGFzaCBpcyBib25kZWQ7IG9yDQEqIFRoZSBzdGFzaCBpcyBub3QgYm9uZGVkIGJ1dCBpdCBoYXMgYSBzdGFraW5nIGxvY2sgbGVmdCBiZWhpbmQ7IG9yJQEqIElmIHRoZSBzdGFzaCBoYXMgYW4gYXNzb2NpYXRlZCBsZWRnZXIgYW5kIGl0cyBzdGF0ZSBpcyBpbmNvbnNpc3RlbnQ7IG9yHQEqIElmIHRoZSBsZWRnZXIgaXMgbm90IGNvcnJ1cHRlZCAqYnV0KiBpdHMgc3Rha2luZyBsb2NrIGlzIG91dCBvZiBzeW5jLgBhAVRoZSBgbWF5YmVfKmAgaW5wdXQgcGFyYW1ldGVycyB3aWxsIG92ZXJ3cml0ZSB0aGUgY29ycmVzcG9uZGluZyBkYXRhIGFuZCBtZXRhZGF0YSBvZiB0aGVZAWxlZGdlciBhc3NvY2lhdGVkIHdpdGggdGhlIHN0YXNoLiBJZiB0aGUgaW5wdXQgcGFyYW1ldGVycyBhcmUgbm90IHNldCwgdGhlIGxlZGdlciB3aWxskGJlIHJlc2V0IHZhbHVlcyBmcm9tIG9uLWNoYWluIHN0YXRlLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy7dAQAAAsUBAOEBDDRzcF9hcml0aG1ldGljKHBlcl90aGluZ3McUGVyY2VudAAABAAIAQh1OAAA5QEAAAIQAOkBEDhwYWxsZXRfc3Rha2luZxhwYWxsZXQYcGFsbGV0IENvbmZpZ09wBARUARgBDBBOb29wAAAADFNldAQAGAEEVAABABhSZW1vdmUAAgAA7QEQOHBhbGxldF9zdGFraW5nGHBhbGxldBhwYWxsZXQgQ29uZmlnT3AEBFQBEAEMEE5vb3AAAAAMU2V0BAAQAQRUAAEAGFJlbW92ZQACAADxARA4cGFsbGV0X3N0YWtpbmcYcGFsbGV0GHBhbGxldCBDb25maWdPcAQEVAHhAQEMEE5vb3AAAAAMU2V0BADhAQEEVAABABhSZW1vdmUAAgAA9QEQOHBhbGxldF9zdGFraW5nGHBhbGxldBhwYWxsZXQgQ29uZmlnT3AEBFQBrAEMEE5vb3AAAAAMU2V0BACsAQRUAAEAGFJlbW92ZQACAAD5AQxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQAEUwAABADRAQEYVmVjPFQ+AAD9AQQYT3B0aW9uBARUAQABCBBOb25lAAAAEFNvbWUEAAAAAAEAAAECBBhPcHRpb24EBFQBGAEIEE5vbmUAAAAQU29tZQQAGAAAAQAABQIEGE9wdGlvbgQEVAEJAgEIEE5vbmUAAAAQU29tZQQACQIAAAEAAAkCDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBDQIEUwAABAARAgEYVmVjPFQ+AAANAgg4cGFsbGV0X3N0YWtpbmcsVW5sb2NrQ2h1bmsEHEJhbGFuY2UBGAAIARR2YWx1ZfwBHEJhbGFuY2UAAQxlcmHsASBFcmFJbmRleAAAEQIAAAINAgAVAgw4cGFsbGV0X3Nlc3Npb24YcGFsbGV0EENhbGwEBFQAAQggc2V0X2tleXMIARBrZXlzGQIBHFQ6OktleXMAARRwcm9vZjgBHFZlYzx1OD4AACTkU2V0cyB0aGUgc2Vzc2lvbiBrZXkocykgb2YgdGhlIGZ1bmN0aW9uIGNhbGxlciB0byBga2V5c2AuHQFBbGxvd3MgYW4gYWNjb3VudCB0byBzZXQgaXRzIHNlc3Npb24ga2V5IHByaW9yIHRvIGJlY29taW5nIGEgdmFsaWRhdG9yLsBUaGlzIGRvZXNuJ3QgdGFrZSBlZmZlY3QgdW50aWwgdGhlIG5leHQgc2Vzc2lvbi4A0FRoZSBkaXNwYXRjaCBvcmlnaW4gb2YgdGhpcyBmdW5jdGlvbiBtdXN0IGJlIHNpZ25lZC4ANCMjIENvbXBsZXhpdHlZAS0gYE8oMSlgLiBBY3R1YWwgY29zdCBkZXBlbmRzIG9uIHRoZSBudW1iZXIgb2YgbGVuZ3RoIG9mIGBUOjpLZXlzOjprZXlfaWRzKClgIHdoaWNoIGlzICAgZml4ZWQuKHB1cmdlX2tleXMAATDIUmVtb3ZlcyBhbnkgc2Vzc2lvbiBrZXkocykgb2YgdGhlIGZ1bmN0aW9uIGNhbGxlci4AwFRoaXMgZG9lc24ndCB0YWtlIGVmZmVjdCB1bnRpbCB0aGUgbmV4dCBzZXNzaW9uLgBVAVRoZSBkaXNwYXRjaCBvcmlnaW4gb2YgdGhpcyBmdW5jdGlvbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIGFjY291bnQgbXVzdCBiZSBlaXRoZXIgYmVdAWNvbnZlcnRpYmxlIHRvIGEgdmFsaWRhdG9yIElEIHVzaW5nIHRoZSBjaGFpbidzIHR5cGljYWwgYWRkcmVzc2luZyBzeXN0ZW0gKHRoaXMgdXN1YWxseVEBbWVhbnMgYmVpbmcgYSBjb250cm9sbGVyIGFjY291bnQpIG9yIGRpcmVjdGx5IGNvbnZlcnRpYmxlIGludG8gYSB2YWxpZGF0b3IgSUQgKHdoaWNolHVzdWFsbHkgbWVhbnMgYmVpbmcgYSBzdGFzaCBhY2NvdW50KS4ANCMjIENvbXBsZXhpdHk9AS0gYE8oMSlgIGluIG51bWJlciBvZiBrZXkgdHlwZXMuIEFjdHVhbCBjb3N0IGRlcGVuZHMgb24gdGhlIG51bWJlciBvZiBsZW5ndGggb2aYICBgVDo6S2V5czo6a2V5X2lkcygpYCB3aGljaCBpcyBmaXhlZC4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuGQIINHBhc2VvX3J1bnRpbWUsU2Vzc2lvbktleXMAABgBHGdyYW5kcGHUAdA8R3JhbmRwYSBhcyAkY3JhdGU6OkJvdW5kVG9SdW50aW1lQXBwUHVibGljPjo6UHVibGljAAEQYmFiZaUBAcQ8QmFiZSBhcyAkY3JhdGU6OkJvdW5kVG9SdW50aW1lQXBwUHVibGljPjo6UHVibGljAAE4cGFyYV92YWxpZGF0b3IdAgHgPEluaXRpYWxpemVyIGFzICRjcmF0ZTo6Qm91bmRUb1J1bnRpbWVBcHBQdWJsaWM+OjpQdWJsaWMAATxwYXJhX2Fzc2lnbm1lbnQhAgHwPFBhcmFTZXNzaW9uSW5mbyBhcyAkY3JhdGU6OkJvdW5kVG9SdW50aW1lQXBwUHVibGljPjo6UHVibGljAAFMYXV0aG9yaXR5X2Rpc2NvdmVyeSUCAfw8QXV0aG9yaXR5RGlzY292ZXJ5IGFzICRjcmF0ZTo6Qm91bmRUb1J1bnRpbWVBcHBQdWJsaWM+OjpQdWJsaWMAARRiZWVmeSkCAcg8QmVlZnkgYXMgJGNyYXRlOjpCb3VuZFRvUnVudGltZUFwcFB1YmxpYz46OlB1YmxpYwAAHQIQTHBvbGthZG90X3ByaW1pdGl2ZXMIdjc0dmFsaWRhdG9yX2FwcBhQdWJsaWMAAAQABAE8c3IyNTUxOTo6UHVibGljAAAhAhBMcG9sa2Fkb3RfcHJpbWl0aXZlcwh2Nzhhc3NpZ25tZW50X2FwcBhQdWJsaWMAAAQABAE8c3IyNTUxOTo6UHVibGljAAAlAgxYc3BfYXV0aG9yaXR5X2Rpc2NvdmVyeQxhcHAYUHVibGljAAAEAAQBPHNyMjU1MTk6OlB1YmxpYwAAKQIMSHNwX2NvbnNlbnN1c19iZWVmeTBlY2RzYV9jcnlwdG8YUHVibGljAAAEAC0CATRlY2RzYTo6UHVibGljAAAtAgAAAyEAAAAIADECDDhwYWxsZXRfZ3JhbmRwYRhwYWxsZXQQQ2FsbAQEVAABDExyZXBvcnRfZXF1aXZvY2F0aW9uCAFIZXF1aXZvY2F0aW9uX3Byb29mNQIByEJveDxFcXVpdm9jYXRpb25Qcm9vZjxUOjpIYXNoLCBCbG9ja051bWJlckZvcjxUPj4+AAE8a2V5X293bmVyX3Byb29mrQEBQFQ6OktleU93bmVyUHJvb2YAABAJAVJlcG9ydCB2b3RlciBlcXVpdm9jYXRpb24vbWlzYmVoYXZpb3IuIFRoaXMgbWV0aG9kIHdpbGwgdmVyaWZ5IHRoZfRlcXVpdm9jYXRpb24gcHJvb2YgYW5kIHZhbGlkYXRlIHRoZSBnaXZlbiBrZXkgb3duZXJzaGlwIHByb29m+GFnYWluc3QgdGhlIGV4dHJhY3RlZCBvZmZlbmRlci4gSWYgYm90aCBhcmUgdmFsaWQsIHRoZSBvZmZlbmNlRHdpbGwgYmUgcmVwb3J0ZWQucHJlcG9ydF9lcXVpdm9jYXRpb25fdW5zaWduZWQIAUhlcXVpdm9jYXRpb25fcHJvb2Y1AgHIQm94PEVxdWl2b2NhdGlvblByb29mPFQ6Okhhc2gsIEJsb2NrTnVtYmVyRm9yPFQ+Pj4AATxrZXlfb3duZXJfcHJvb2atAQFAVDo6S2V5T3duZXJQcm9vZgABJAkBUmVwb3J0IHZvdGVyIGVxdWl2b2NhdGlvbi9taXNiZWhhdmlvci4gVGhpcyBtZXRob2Qgd2lsbCB2ZXJpZnkgdGhl9GVxdWl2b2NhdGlvbiBwcm9vZiBhbmQgdmFsaWRhdGUgdGhlIGdpdmVuIGtleSBvd25lcnNoaXAgcHJvb2b4YWdhaW5zdCB0aGUgZXh0cmFjdGVkIG9mZmVuZGVyLiBJZiBib3RoIGFyZSB2YWxpZCwgdGhlIG9mZmVuY2VEd2lsbCBiZSByZXBvcnRlZC4ADQFUaGlzIGV4dHJpbnNpYyBtdXN0IGJlIGNhbGxlZCB1bnNpZ25lZCBhbmQgaXQgaXMgZXhwZWN0ZWQgdGhhdCBvbmx5FQFibG9jayBhdXRob3JzIHdpbGwgY2FsbCBpdCAodmFsaWRhdGVkIGluIGBWYWxpZGF0ZVVuc2lnbmVkYCksIGFzIHN1Y2gVAWlmIHRoZSBibG9jayBhdXRob3IgaXMgZGVmaW5lZCBpdCB3aWxsIGJlIGRlZmluZWQgYXMgdGhlIGVxdWl2b2NhdGlvbiRyZXBvcnRlci4wbm90ZV9zdGFsbGVkCAEUZGVsYXkQAURCbG9ja051bWJlckZvcjxUPgABbGJlc3RfZmluYWxpemVkX2Jsb2NrX251bWJlchABREJsb2NrTnVtYmVyRm9yPFQ+AAIwPQFOb3RlIHRoYXQgdGhlIGN1cnJlbnQgYXV0aG9yaXR5IHNldCBvZiB0aGUgR1JBTkRQQSBmaW5hbGl0eSBnYWRnZXQgaGFzIHN0YWxsZWQuAGEBVGhpcyB3aWxsIHRyaWdnZXIgYSBmb3JjZWQgYXV0aG9yaXR5IHNldCBjaGFuZ2UgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgbmV4dCBzZXNzaW9uLCB0b2EBYmUgZW5hY3RlZCBgZGVsYXlgIGJsb2NrcyBhZnRlciB0aGF0LiBUaGUgYGRlbGF5YCBzaG91bGQgYmUgaGlnaCBlbm91Z2ggdG8gc2FmZWx5IGFzc3VtZUkBdGhhdCB0aGUgYmxvY2sgc2lnbmFsbGluZyB0aGUgZm9yY2VkIGNoYW5nZSB3aWxsIG5vdCBiZSByZS1vcmdlZCBlLmcuIDEwMDAgYmxvY2tzLl0BVGhlIGJsb2NrIHByb2R1Y3Rpb24gcmF0ZSAod2hpY2ggbWF5IGJlIHNsb3dlZCBkb3duIGJlY2F1c2Ugb2YgZmluYWxpdHkgbGFnZ2luZykgc2hvdWxkUQFiZSB0YWtlbiBpbnRvIGFjY291bnQgd2hlbiBjaG9vc2luZyB0aGUgYGRlbGF5YC4gVGhlIEdSQU5EUEEgdm90ZXJzIGJhc2VkIG9uIHRoZSBuZXdVAWF1dGhvcml0eSB3aWxsIHN0YXJ0IHZvdGluZyBvbiB0b3Agb2YgYGJlc3RfZmluYWxpemVkX2Jsb2NrX251bWJlcmAgZm9yIG5ldyBmaW5hbGl6ZWRNAWJsb2Nrcy4gYGJlc3RfZmluYWxpemVkX2Jsb2NrX251bWJlcmAgc2hvdWxkIGJlIHRoZSBoaWdoZXN0IG9mIHRoZSBsYXRlc3QgZmluYWxpemVkxGJsb2NrIG9mIGFsbCB2YWxpZGF0b3JzIG9mIHRoZSBuZXcgYXV0aG9yaXR5IHNldC4AWE9ubHkgY2FsbGFibGUgYnkgcm9vdC4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuNQIIUHNwX2NvbnNlbnN1c19ncmFuZHBhREVxdWl2b2NhdGlvblByb29mCARIATQETgEQAAgBGHNldF9pZDABFFNldElkAAEwZXF1aXZvY2F0aW9uOQIBSEVxdWl2b2NhdGlvbjxILCBOPgAAOQIIUHNwX2NvbnNlbnN1c19ncmFuZHBhMEVxdWl2b2NhdGlvbggESAE0BE4BEAEIHFByZXZvdGUEAD0CAYkBZmluYWxpdHlfZ3JhbmRwYTo6RXF1aXZvY2F0aW9uPEF1dGhvcml0eUlkLCBmaW5hbGl0eV9ncmFuZHBhOjpQcmV2b3RlPApILCBOPiwgQXV0aG9yaXR5U2lnbmF0dXJlLD4AAAAkUHJlY29tbWl0BABRAgGRAWZpbmFsaXR5X2dyYW5kcGE6OkVxdWl2b2NhdGlvbjxBdXRob3JpdHlJZCwgZmluYWxpdHlfZ3JhbmRwYTo6UHJlY29tbWl0CjxILCBOPiwgQXV0aG9yaXR5U2lnbmF0dXJlLD4AAQAAPQIIQGZpbmFsaXR5X2dyYW5kcGEwRXF1aXZvY2F0aW9uDAhJZAHUBFYBQQIEUwFFAgAQATByb3VuZF9udW1iZXIwAQx1NjQAASBpZGVudGl0edQBCElkAAEUZmlyc3RNAgEYKFYsIFMpAAEYc2Vjb25kTQIBGChWLCBTKQAAQQIIQGZpbmFsaXR5X2dyYW5kcGEcUHJldm90ZQgESAE0BE4BEAAIASx0YXJnZXRfaGFzaDQBBEgAATR0YXJnZXRfbnVtYmVyEAEETgAARQIMUHNwX2NvbnNlbnN1c19ncmFuZHBhDGFwcCRTaWduYXR1cmUAAAQASQIBSGVkMjU1MTk6OlNpZ25hdHVyZQAASQIAAANAAAAACABNAgAABAhBAkUCAFECCEBmaW5hbGl0eV9ncmFuZHBhMEVxdWl2b2NhdGlvbgwISWQB1ARWAVUCBFMBRQIAEAEwcm91bmRfbnVtYmVyMAEMdTY0AAEgaWRlbnRpdHnUAQhJZAABFGZpcnN0WQIBGChWLCBTKQABGHNlY29uZFkCARgoViwgUykAAFUCCEBmaW5hbGl0eV9ncmFuZHBhJFByZWNvbW1pdAgESAE0BE4BEAAIASx0YXJnZXRfaGFzaDQBBEgAATR0YXJnZXRfbnVtYmVyEAEETgAAWQIAAAQIVQJFAgBdAgw8cGFsbGV0X3RyZWFzdXJ5GHBhbGxldBBDYWxsCARUAARJAAEYLHNwZW5kX2xvY2FsCAEYYW1vdW50/AE8QmFsYW5jZU9mPFQsIEk+AAEsYmVuZWZpY2lhcnnFAQFQQWNjb3VudElkTG9va3VwT2Y8VD4AA0S4UHJvcG9zZSBhbmQgYXBwcm92ZSBhIHNwZW5kIG9mIHRyZWFzdXJ5IGZ1bmRzLgBIIyMgRGlzcGF0Y2ggT3JpZ2luAEUBTXVzdCBiZSBbYENvbmZpZzo6U3BlbmRPcmlnaW5gXSB3aXRoIHRoZSBgU3VjY2Vzc2AgdmFsdWUgYmVpbmcgYXQgbGVhc3QgYGFtb3VudGAuACwjIyMgRGV0YWlsc0UBTk9URTogRm9yIHJlY29yZC1rZWVwaW5nIHB1cnBvc2VzLCB0aGUgcHJvcG9zZXIgaXMgZGVlbWVkIHRvIGJlIGVxdWl2YWxlbnQgdG8gdGhlMGJlbmVmaWNpYXJ5LgA4IyMjIFBhcmFtZXRlcnNBAS0gYGFtb3VudGA6IFRoZSBhbW91bnQgdG8gYmUgdHJhbnNmZXJyZWQgZnJvbSB0aGUgdHJlYXN1cnkgdG8gdGhlIGBiZW5lZmljaWFyeWAu6C0gYGJlbmVmaWNpYXJ5YDogVGhlIGRlc3RpbmF0aW9uIGFjY291bnQgZm9yIHRoZSB0cmFuc2Zlci4AJCMjIEV2ZW50cwC0RW1pdHMgW2BFdmVudDo6U3BlbmRBcHByb3ZlZGBdIGlmIHN1Y2Nlc3NmdWwuPHJlbW92ZV9hcHByb3ZhbAQBLHByb3Bvc2FsX2lk7AE0UHJvcG9zYWxJbmRleAAEVC0BRm9yY2UgYSBwcmV2aW91c2x5IGFwcHJvdmVkIHByb3Bvc2FsIHRvIGJlIHJlbW92ZWQgZnJvbSB0aGUgYXBwcm92YWwgcXVldWUuAEgjIyBEaXNwYXRjaCBPcmlnaW4AhE11c3QgYmUgW2BDb25maWc6OlJlamVjdE9yaWdpbmBdLgAoIyMgRGV0YWlscwDAVGhlIG9yaWdpbmFsIGRlcG9zaXQgd2lsbCBubyBsb25nZXIgYmUgcmV0dXJuZWQuADgjIyMgUGFyYW1ldGVyc6AtIGBwcm9wb3NhbF9pZGA6IFRoZSBpbmRleCBvZiBhIHByb3Bvc2FsADgjIyMgQ29tcGxleGl0eawtIE8oQSkgd2hlcmUgYEFgIGlzIHRoZSBudW1iZXIgb2YgYXBwcm92YWxzACgjIyMgRXJyb3JzRQEtIFtgRXJyb3I6OlByb3Bvc2FsTm90QXBwcm92ZWRgXTogVGhlIGBwcm9wb3NhbF9pZGAgc3VwcGxpZWQgd2FzIG5vdCBmb3VuZCBpbiB0aGVRASAgYXBwcm92YWwgcXVldWUsIGkuZS4sIHRoZSBwcm9wb3NhbCBoYXMgbm90IGJlZW4gYXBwcm92ZWQuIFRoaXMgY291bGQgYWxzbyBtZWFuIHRoZVkBICBwcm9wb3NhbCBkb2VzIG5vdCBleGlzdCBhbHRvZ2V0aGVyLCB0aHVzIHRoZXJlIGlzIG5vIHdheSBpdCB3b3VsZCBoYXZlIGJlZW4gYXBwcm92ZWRUICBpbiB0aGUgZmlyc3QgcGxhY2UuFHNwZW5kEAEoYXNzZXRfa2luZNwBREJveDxUOjpBc3NldEtpbmQ+AAEYYW1vdW50/AFQQXNzZXRCYWxhbmNlT2Y8VCwgST4AASxiZW5lZmljaWFyeUUBAXhCb3g8QmVuZWZpY2lhcnlMb29rdXBPZjxULCBJPj4AASh2YWxpZF9mcm9tYQIBZE9wdGlvbjxCbG9ja051bWJlckZvcjxUPj4ABWi4UHJvcG9zZSBhbmQgYXBwcm92ZSBhIHNwZW5kIG9mIHRyZWFzdXJ5IGZ1bmRzLgBIIyMgRGlzcGF0Y2ggT3JpZ2luAB0BTXVzdCBiZSBbYENvbmZpZzo6U3BlbmRPcmlnaW5gXSB3aXRoIHRoZSBgU3VjY2Vzc2AgdmFsdWUgYmVpbmcgYXQgbGVhc3RVAWBhbW91bnRgIG9mIGBhc3NldF9raW5kYCBpbiB0aGUgbmF0aXZlIGFzc2V0LiBUaGUgYW1vdW50IG9mIGBhc3NldF9raW5kYCBpcyBjb252ZXJ0ZWTUZm9yIGFzc2VydGlvbiB1c2luZyB0aGUgW2BDb25maWc6OkJhbGFuY2VDb252ZXJ0ZXJgXS4AKCMjIERldGFpbHMASQFDcmVhdGUgYW4gYXBwcm92ZWQgc3BlbmQgZm9yIHRyYW5zZmVycmluZyBhIHNwZWNpZmljIGBhbW91bnRgIG9mIGBhc3NldF9raW5kYCB0byBhYQFkZXNpZ25hdGVkIGJlbmVmaWNpYXJ5LiBUaGUgc3BlbmQgbXVzdCBiZSBjbGFpbWVkIHVzaW5nIHRoZSBgcGF5b3V0YCBkaXNwYXRjaGFibGUgd2l0aGludHRoZSBbYENvbmZpZzo6UGF5b3V0UGVyaW9kYF0uADgjIyMgUGFyYW1ldGVycxUBLSBgYXNzZXRfa2luZGA6IEFuIGluZGljYXRvciBvZiB0aGUgc3BlY2lmaWMgYXNzZXQgY2xhc3MgdG8gYmUgc3BlbnQuQQEtIGBhbW91bnRgOiBUaGUgYW1vdW50IHRvIGJlIHRyYW5zZmVycmVkIGZyb20gdGhlIHRyZWFzdXJ5IHRvIHRoZSBgYmVuZWZpY2lhcnlgLrgtIGBiZW5lZmljaWFyeWA6IFRoZSBiZW5lZmljaWFyeSBvZiB0aGUgc3BlbmQuVQEtIGB2YWxpZF9mcm9tYDogVGhlIGJsb2NrIG51bWJlciBmcm9tIHdoaWNoIHRoZSBzcGVuZCBjYW4gYmUgY2xhaW1lZC4gSXQgY2FuIHJlZmVyIHRvGQEgIHRoZSBwYXN0IGlmIHRoZSByZXN1bHRpbmcgc3BlbmQgaGFzIG5vdCB5ZXQgZXhwaXJlZCBhY2NvcmRpbmcgdG8gdGhlRQEgIFtgQ29uZmlnOjpQYXlvdXRQZXJpb2RgXS4gSWYgYE5vbmVgLCB0aGUgc3BlbmQgY2FuIGJlIGNsYWltZWQgaW1tZWRpYXRlbHkgYWZ0ZXIsICBhcHByb3ZhbC4AJCMjIEV2ZW50cwDIRW1pdHMgW2BFdmVudDo6QXNzZXRTcGVuZEFwcHJvdmVkYF0gaWYgc3VjY2Vzc2Z1bC4YcGF5b3V0BAEUaW5kZXgQAShTcGVuZEluZGV4AAZMOENsYWltIGEgc3BlbmQuAEgjIyBEaXNwYXRjaCBPcmlnaW4AOE11c3QgYmUgc2lnbmVkACgjIyBEZXRhaWxzAFUBU3BlbmRzIG11c3QgYmUgY2xhaW1lZCB3aXRoaW4gc29tZSB0ZW1wb3JhbCBib3VuZHMuIEEgc3BlbmQgbWF5IGJlIGNsYWltZWQgd2l0aGluIG9uZdRbYENvbmZpZzo6UGF5b3V0UGVyaW9kYF0gZnJvbSB0aGUgYHZhbGlkX2Zyb21gIGJsb2NrLlUBSW4gY2FzZSBvZiBhIHBheW91dCBmYWlsdXJlLCB0aGUgc3BlbmQgc3RhdHVzIG11c3QgYmUgdXBkYXRlZCB3aXRoIHRoZSBgY2hlY2tfc3RhdHVzYNxkaXNwYXRjaGFibGUgYmVmb3JlIHJldHJ5aW5nIHdpdGggdGhlIGN1cnJlbnQgZnVuY3Rpb24uADgjIyMgUGFyYW1ldGVyc2wtIGBpbmRleGA6IFRoZSBzcGVuZCBpbmRleC4AJCMjIEV2ZW50cwCQRW1pdHMgW2BFdmVudDo6UGFpZGBdIGlmIHN1Y2Nlc3NmdWwuMGNoZWNrX3N0YXR1cwQBFGluZGV4EAEoU3BlbmRJbmRleAAHTCkBQ2hlY2sgdGhlIHN0YXR1cyBvZiB0aGUgc3BlbmQgYW5kIHJlbW92ZSBpdCBmcm9tIHRoZSBzdG9yYWdlIGlmIHByb2Nlc3NlZC4ASCMjIERpc3BhdGNoIE9yaWdpbgA8TXVzdCBiZSBzaWduZWQuACgjIyBEZXRhaWxzAAEBVGhlIHN0YXR1cyBjaGVjayBpcyBhIHByZXJlcXVpc2l0ZSBmb3IgcmV0cnlpbmcgYSBmYWlsZWQgcGF5b3V0LkkBSWYgYSBzcGVuZCBoYXMgZWl0aGVyIHN1Y2NlZWRlZCBvciBleHBpcmVkLCBpdCBpcyByZW1vdmVkIGZyb20gdGhlIHN0b3JhZ2UgYnkgdGhpc+xmdW5jdGlvbi4gSW4gc3VjaCBpbnN0YW5jZXMsIHRyYW5zYWN0aW9uIGZlZXMgYXJlIHJlZnVuZGVkLgA4IyMjIFBhcmFtZXRlcnNsLSBgaW5kZXhgOiBUaGUgc3BlbmQgaW5kZXguACQjIyBFdmVudHMA+EVtaXRzIFtgRXZlbnQ6OlBheW1lbnRGYWlsZWRgXSBpZiB0aGUgc3BlbmQgcGF5b3V0IGhhcyBmYWlsZWQuAQFFbWl0cyBbYEV2ZW50OjpTcGVuZFByb2Nlc3NlZGBdIGlmIHRoZSBzcGVuZCBwYXlvdXQgaGFzIHN1Y2NlZWQuKHZvaWRfc3BlbmQEARRpbmRleBABKFNwZW5kSW5kZXgACEB8Vm9pZCBwcmV2aW91c2x5IGFwcHJvdmVkIHNwZW5kLgBIIyMgRGlzcGF0Y2ggT3JpZ2luAIRNdXN0IGJlIFtgQ29uZmlnOjpSZWplY3RPcmlnaW5gXS4AKCMjIERldGFpbHMAHQFBIHNwZW5kIHZvaWQgaXMgb25seSBwb3NzaWJsZSBpZiB0aGUgcGF5b3V0IGhhcyBub3QgYmVlbiBhdHRlbXB0ZWQgeWV0LgA4IyMjIFBhcmFtZXRlcnNsLSBgaW5kZXhgOiBUaGUgc3BlbmQgaW5kZXguACQjIyBFdmVudHMAwEVtaXRzIFtgRXZlbnQ6OkFzc2V0U3BlbmRWb2lkZWRgXSBpZiBzdWNjZXNzZnVsLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy5hAgQYT3B0aW9uBARUARABCBBOb25lAAAAEFNvbWUEABAAAAEAAGUCDGBwYWxsZXRfY29udmljdGlvbl92b3RpbmcYcGFsbGV0EENhbGwIBFQABEkAARgQdm90ZQgBKHBvbGxfaW5kZXjsAURQb2xsSW5kZXhPZjxULCBJPgABEHZvdGVpAgFwQWNjb3VudFZvdGU8QmFsYW5jZU9mPFQsIEk+PgAAJBkBVm90ZSBpbiBhIHBvbGwuIElmIGB2b3RlLmlzX2F5ZSgpYCwgdGhlIHZvdGUgaXMgdG8gZW5hY3QgdGhlIHByb3Bvc2FsO7hvdGhlcndpc2UgaXQgaXMgYSB2b3RlIHRvIGtlZXAgdGhlIHN0YXR1cyBxdW8uAMhUaGUgZGlzcGF0Y2ggb3JpZ2luIG9mIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLgDILSBgcG9sbF9pbmRleGA6IFRoZSBpbmRleCBvZiB0aGUgcG9sbCB0byB2b3RlIGZvci6ELSBgdm90ZWA6IFRoZSB2b3RlIGNvbmZpZ3VyYXRpb24uABUBV2VpZ2h0OiBgTyhSKWAgd2hlcmUgUiBpcyB0aGUgbnVtYmVyIG9mIHBvbGxzIHRoZSB2b3RlciBoYXMgdm90ZWQgb24uIGRlbGVnYXRlEAEUY2xhc3NtAQE0Q2xhc3NPZjxULCBJPgABCHRvxQEBUEFjY291bnRJZExvb2t1cE9mPFQ+AAEoY29udmljdGlvbnECAShDb252aWN0aW9uAAEcYmFsYW5jZRgBPEJhbGFuY2VPZjxULCBJPgABXE0BRGVsZWdhdGUgdGhlIHZvdGluZyBwb3dlciAod2l0aCBzb21lIGdpdmVuIGNvbnZpY3Rpb24pIG9mIHRoZSBzZW5kaW5nIGFjY291bnQgZm9yIGFocGFydGljdWxhciBjbGFzcyBvZiBwb2xscy4AVQFUaGUgYmFsYW5jZSBkZWxlZ2F0ZWQgaXMgbG9ja2VkIGZvciBhcyBsb25nIGFzIGl0J3MgZGVsZWdhdGVkLCBhbmQgdGhlcmVhZnRlciBmb3IgdGhlyHRpbWUgYXBwcm9wcmlhdGUgZm9yIHRoZSBjb252aWN0aW9uJ3MgbG9jayBwZXJpb2QuAF0BVGhlIGRpc3BhdGNoIG9yaWdpbiBvZiB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXywgYW5kIHRoZSBzaWduaW5nIGFjY291bnQgbXVzdCBlaXRoZXI6dCAgLSBiZSBkZWxlZ2F0aW5nIGFscmVhZHk7IG9yRQEgIC0gaGF2ZSBubyB2b3RpbmcgYWN0aXZpdHkgKGlmIHRoZXJlIGlzLCB0aGVuIGl0IHdpbGwgbmVlZCB0byBiZSByZW1vdmVkIHRocm91Z2hMICAgIGByZW1vdmVfdm90ZWApLgBFAS0gYHRvYDogVGhlIGFjY291bnQgd2hvc2Ugdm90aW5nIHRoZSBgdGFyZ2V0YCBhY2NvdW50J3Mgdm90aW5nIHBvd2VyIHdpbGwgZm9sbG93Ll0BLSBgY2xhc3NgOiBUaGUgY2xhc3Mgb2YgcG9sbHMgdG8gZGVsZWdhdGUuIFRvIGRlbGVnYXRlIG11bHRpcGxlIGNsYXNzZXMsIG11bHRpcGxlIGNhbGxzgCAgdG8gdGhpcyBmdW5jdGlvbiBhcmUgcmVxdWlyZWQuVQEtIGBjb252aWN0aW9uYDogVGhlIGNvbnZpY3Rpb24gdGhhdCB3aWxsIGJlIGF0dGFjaGVkIHRvIHRoZSBkZWxlZ2F0ZWQgdm90ZXMuIFdoZW4gdGhlQQEgIGFjY291bnQgaXMgdW5kZWxlZ2F0ZWQsIHRoZSBmdW5kcyB3aWxsIGJlIGxvY2tlZCBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgcGVyaW9kLmEBLSBgYmFsYW5jZWA6IFRoZSBhbW91bnQgb2YgdGhlIGFjY291bnQncyBiYWxhbmNlIHRvIGJlIHVzZWQgaW4gZGVsZWdhdGluZy4gVGhpcyBtdXN0IG5vdLQgIGJlIG1vcmUgdGhhbiB0aGUgYWNjb3VudCdzIGN1cnJlbnQgYmFsYW5jZS4ASEVtaXRzIGBEZWxlZ2F0ZWRgLgAlAVdlaWdodDogYE8oUilgIHdoZXJlIFIgaXMgdGhlIG51bWJlciBvZiBwb2xscyB0aGUgdm90ZXIgZGVsZWdhdGluZyB0byBoYXNNASAgdm90ZWQgb24uIFdlaWdodCBpcyBpbml0aWFsbHkgY2hhcmdlZCBhcyBpZiBtYXhpbXVtIHZvdGVzLCBidXQgaXMgcmVmdW5kZWQgbGF0ZXIuKHVuZGVsZWdhdGUEARRjbGFzc20BATRDbGFzc09mPFQsIEk+AAI4TQFVbmRlbGVnYXRlIHRoZSB2b3RpbmcgcG93ZXIgb2YgdGhlIHNlbmRpbmcgYWNjb3VudCBmb3IgYSBwYXJ0aWN1bGFyIGNsYXNzIG9mIHBvbGxzLgBdAVRva2VucyBtYXkgYmUgdW5sb2NrZWQgZm9sbG93aW5nIG9uY2UgYW4gYW1vdW50IG9mIHRpbWUgY29uc2lzdGVudCB3aXRoIHRoZSBsb2NrIHBlcmlvZAkBb2YgdGhlIGNvbnZpY3Rpb24gd2l0aCB3aGljaCB0aGUgZGVsZWdhdGlvbiB3YXMgaXNzdWVkIGhhcyBwYXNzZWQuAEUBVGhlIGRpc3BhdGNoIG9yaWdpbiBvZiB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXyBhbmQgdGhlIHNpZ25pbmcgYWNjb3VudCBtdXN0IGJlVGN1cnJlbnRseSBkZWxlZ2F0aW5nLgDwLSBgY2xhc3NgOiBUaGUgY2xhc3Mgb2YgcG9sbHMgdG8gcmVtb3ZlIHRoZSBkZWxlZ2F0aW9uIGZyb20uAFBFbWl0cyBgVW5kZWxlZ2F0ZWRgLgAlAVdlaWdodDogYE8oUilgIHdoZXJlIFIgaXMgdGhlIG51bWJlciBvZiBwb2xscyB0aGUgdm90ZXIgZGVsZWdhdGluZyB0byBoYXNNASAgdm90ZWQgb24uIFdlaWdodCBpcyBpbml0aWFsbHkgY2hhcmdlZCBhcyBpZiBtYXhpbXVtIHZvdGVzLCBidXQgaXMgcmVmdW5kZWQgbGF0ZXIuGHVubG9jawgBFGNsYXNzbQEBNENsYXNzT2Y8VCwgST4AARh0YXJnZXTFAQFQQWNjb3VudElkTG9va3VwT2Y8VD4AAyRdAVJlbW92ZSB0aGUgbG9jayBjYXVzZWQgYnkgcHJpb3Igdm90aW5nL2RlbGVnYXRpbmcgd2hpY2ggaGFzIGV4cGlyZWQgd2l0aGluIGEgcGFydGljdWxhchhjbGFzcy4AyFRoZSBkaXNwYXRjaCBvcmlnaW4gb2YgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uAKAtIGBjbGFzc2A6IFRoZSBjbGFzcyBvZiBwb2xscyB0byB1bmxvY2suuC0gYHRhcmdldGA6IFRoZSBhY2NvdW50IHRvIHJlbW92ZSB0aGUgbG9jayBvbi4AvFdlaWdodDogYE8oUilgIHdpdGggUiBudW1iZXIgb2Ygdm90ZSBvZiB0YXJnZXQuLHJlbW92ZV92b3RlCAEUY2xhc3N1AgFUT3B0aW9uPENsYXNzT2Y8VCwgST4+AAEUaW5kZXgQAURQb2xsSW5kZXhPZjxULCBJPgAEdGRSZW1vdmUgYSB2b3RlIGZvciBhIHBvbGwuAAxJZjpwLSB0aGUgcG9sbCB3YXMgY2FuY2VsbGVkLCBvcmQtIHRoZSBwb2xsIGlzIG9uZ29pbmcsIG9yeC0gdGhlIHBvbGwgaGFzIGVuZGVkIHN1Y2ggdGhhdPwgIC0gdGhlIHZvdGUgb2YgdGhlIGFjY291bnQgd2FzIGluIG9wcG9zaXRpb24gdG8gdGhlIHJlc3VsdDsgb3LUICAtIHRoZXJlIHdhcyBubyBjb252aWN0aW9uIHRvIHRoZSBhY2NvdW50J3Mgdm90ZTsgb3KEICAtIHRoZSBhY2NvdW50IG1hZGUgYSBzcGxpdCB2b3RlXQEuLi50aGVuIHRoZSB2b3RlIGlzIHJlbW92ZWQgY2xlYW5seSBhbmQgYSBmb2xsb3dpbmcgY2FsbCB0byBgdW5sb2NrYCBtYXkgcmVzdWx0IGluIG1vcmVYZnVuZHMgYmVpbmcgYXZhaWxhYmxlLgCQSWYsIGhvd2V2ZXIsIHRoZSBwb2xsIGhhcyBlbmRlZCBhbmQ67C0gaXQgZmluaXNoZWQgY29ycmVzcG9uZGluZyB0byB0aGUgdm90ZSBvZiB0aGUgYWNjb3VudCwgYW5k3C0gdGhlIGFjY291bnQgbWFkZSBhIHN0YW5kYXJkIHZvdGUgd2l0aCBjb252aWN0aW9uLCBhbmS8LSB0aGUgbG9jayBwZXJpb2Qgb2YgdGhlIGNvbnZpY3Rpb24gaXMgbm90IG92ZXJZAS4uLnRoZW4gdGhlIGxvY2sgd2lsbCBiZSBhZ2dyZWdhdGVkIGludG8gdGhlIG92ZXJhbGwgYWNjb3VudCdzIGxvY2ssIHdoaWNoIG1heSBpbnZvbHZlWQEqb3ZlcmxvY2tpbmcqICh3aGVyZSB0aGUgdHdvIGxvY2tzIGFyZSBjb21iaW5lZCBpbnRvIGEgc2luZ2xlIGxvY2sgdGhhdCBpcyB0aGUgbWF4aW11beRvZiBib3RoIHRoZSBhbW91bnQgbG9ja2VkIGFuZCB0aGUgdGltZSBpcyBpdCBsb2NrZWQgZm9yKS4ASQFUaGUgZGlzcGF0Y2ggb3JpZ2luIG9mIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLCBhbmQgdGhlIHNpZ25lciBtdXN0IGhhdmUgYSB2b3RlcHJlZ2lzdGVyZWQgZm9yIHBvbGwgYGluZGV4YC4A3C0gYGluZGV4YDogVGhlIGluZGV4IG9mIHBvbGwgb2YgdGhlIHZvdGUgdG8gYmUgcmVtb3ZlZC5VAS0gYGNsYXNzYDogT3B0aW9uYWwgcGFyYW1ldGVyLCBpZiBnaXZlbiBpdCBpbmRpY2F0ZXMgdGhlIGNsYXNzIG9mIHRoZSBwb2xsLiBGb3IgcG9sbHPwICB3aGljaCBoYXZlIGZpbmlzaGVkIG9yIGFyZSBjYW5jZWxsZWQsIHRoaXMgbXVzdCBiZSBgU29tZWAuAEUBV2VpZ2h0OiBgTyhSICsgbG9nIFIpYCB3aGVyZSBSIGlzIHRoZSBudW1iZXIgb2YgcG9sbHMgdGhhdCBgdGFyZ2V0YCBoYXMgdm90ZWQgb24u2CAgV2VpZ2h0IGlzIGNhbGN1bGF0ZWQgZm9yIHRoZSBtYXhpbXVtIG51bWJlciBvZiB2b3RlLkRyZW1vdmVfb3RoZXJfdm90ZQwBGHRhcmdldMUBAVBBY2NvdW50SWRMb29rdXBPZjxUPgABFGNsYXNzbQEBNENsYXNzT2Y8VCwgST4AARRpbmRleBABRFBvbGxJbmRleE9mPFQsIEk+AAVAZFJlbW92ZSBhIHZvdGUgZm9yIGEgcG9sbC4ATQFJZiB0aGUgYHRhcmdldGAgaXMgZXF1YWwgdG8gdGhlIHNpZ25lciwgdGhlbiB0aGlzIGZ1bmN0aW9uIGlzIGV4YWN0bHkgZXF1aXZhbGVudCB0by0BYHJlbW92ZV92b3RlYC4gSWYgbm90IGVxdWFsIHRvIHRoZSBzaWduZXIsIHRoZW4gdGhlIHZvdGUgbXVzdCBoYXZlIGV4cGlyZWQsJQFlaXRoZXIgYmVjYXVzZSB0aGUgcG9sbCB3YXMgY2FuY2VsbGVkLCBiZWNhdXNlIHRoZSB2b3RlciBsb3N0IHRoZSBwb2xsIG9ymGJlY2F1c2UgdGhlIGNvbnZpY3Rpb24gcGVyaW9kIGlzIG92ZXIuAMhUaGUgZGlzcGF0Y2ggb3JpZ2luIG9mIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLgBhAS0gYHRhcmdldGA6IFRoZSBhY2NvdW50IG9mIHRoZSB2b3RlIHRvIGJlIHJlbW92ZWQ7IHRoaXMgYWNjb3VudCBtdXN0IGhhdmUgdm90ZWQgZm9yIHBvbGwoICBgaW5kZXhgLtwtIGBpbmRleGA6IFRoZSBpbmRleCBvZiBwb2xsIG9mIHRoZSB2b3RlIHRvIGJlIHJlbW92ZWQuhC0gYGNsYXNzYDogVGhlIGNsYXNzIG9mIHRoZSBwb2xsLgBFAVdlaWdodDogYE8oUiArIGxvZyBSKWAgd2hlcmUgUiBpcyB0aGUgbnVtYmVyIG9mIHBvbGxzIHRoYXQgYHRhcmdldGAgaGFzIHZvdGVkIG9uLtggIFdlaWdodCBpcyBjYWxjdWxhdGVkIGZvciB0aGUgbWF4aW11bSBudW1iZXIgb2Ygdm90ZS4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuaQIMYHBhbGxldF9jb252aWN0aW9uX3ZvdGluZxB2b3RlLEFjY291bnRWb3RlBBxCYWxhbmNlARgBDCBTdGFuZGFyZAgBEHZvdGVtAgEQVm90ZQABHGJhbGFuY2UYARxCYWxhbmNlAAAAFFNwbGl0CAEMYXllGAEcQmFsYW5jZQABDG5heRgBHEJhbGFuY2UAAQAwU3BsaXRBYnN0YWluDAEMYXllGAEcQmFsYW5jZQABDG5heRgBHEJhbGFuY2UAARxhYnN0YWluGAEcQmFsYW5jZQACAABtAgxgcGFsbGV0X2NvbnZpY3Rpb25fdm90aW5nEHZvdGUQVm90ZQAABAAIAAAAcQIMYHBhbGxldF9jb252aWN0aW9uX3ZvdGluZyhjb252aWN0aW9uKENvbnZpY3Rpb24AARwQTm9uZQAAACBMb2NrZWQxeAABACBMb2NrZWQyeAACACBMb2NrZWQzeAADACBMb2NrZWQ0eAAEACBMb2NrZWQ1eAAFACBMb2NrZWQ2eAAGAAB1AgQYT3B0aW9uBARUAW0BAQgQTm9uZQAAABBTb21lBABtAQAAAQAAeQIMQHBhbGxldF9yZWZlcmVuZGEYcGFsbGV0EENhbGwIBFQABEkAASQYc3VibWl0DAE8cHJvcG9zYWxfb3JpZ2lufQIBXEJveDxQYWxsZXRzT3JpZ2luT2Y8VD4+AAEgcHJvcG9zYWxxAQFMQm91bmRlZENhbGxPZjxULCBJPgABQGVuYWN0bWVudF9tb21lbnSZAgF8RGlzcGF0Y2hUaW1lPEJsb2NrTnVtYmVyRm9yPFQ+PgAAJLBQcm9wb3NlIGEgcmVmZXJlbmR1bSBvbiBhIHByaXZpbGVnZWQgYWN0aW9uLgBZAS0gYG9yaWdpbmA6IG11c3QgYmUgYFN1Ym1pdE9yaWdpbmAgYW5kIHRoZSBhY2NvdW50IG11c3QgaGF2ZSBgU3VibWlzc2lvbkRlcG9zaXRgIGZ1bmRzMCAgYXZhaWxhYmxlLi0BLSBgcHJvcG9zYWxfb3JpZ2luYDogVGhlIG9yaWdpbiBmcm9tIHdoaWNoIHRoZSBwcm9wb3NhbCBzaG91bGQgYmUgZXhlY3V0ZWQubC0gYHByb3Bvc2FsYDogVGhlIHByb3Bvc2FsLhUBLSBgZW5hY3RtZW50X21vbWVudGA6IFRoZSBtb21lbnQgdGhhdCB0aGUgcHJvcG9zYWwgc2hvdWxkIGJlIGVuYWN0ZWQuAEhFbWl0cyBgU3VibWl0dGVkYC5YcGxhY2VfZGVjaXNpb25fZGVwb3NpdAQBFGluZGV4EAE8UmVmZXJlbmR1bUluZGV4AAEgrFBvc3QgdGhlIERlY2lzaW9uIERlcG9zaXQgZm9yIGEgcmVmZXJlbmR1bS4AOQEtIGBvcmlnaW5gOiBtdXN0IGJlIGBTaWduZWRgIGFuZCB0aGUgYWNjb3VudCBtdXN0IGhhdmUgZnVuZHMgYXZhaWxhYmxlIGZvciB0aGWgICByZWZlcmVuZHVtJ3MgdHJhY2sncyBEZWNpc2lvbiBEZXBvc2l0LlEBLSBgaW5kZXhgOiBUaGUgaW5kZXggb2YgdGhlIHN1Ym1pdHRlZCByZWZlcmVuZHVtIHdob3NlIERlY2lzaW9uIERlcG9zaXQgaXMgeWV0IHRvIGJlJCAgcG9zdGVkLgB4RW1pdHMgYERlY2lzaW9uRGVwb3NpdFBsYWNlZGAuXHJlZnVuZF9kZWNpc2lvbl9kZXBvc2l0BAEUaW5kZXgQATxSZWZlcmVuZHVtSW5kZXgAAhwpAVJlZnVuZCB0aGUgRGVjaXNpb24gRGVwb3NpdCBmb3IgYSBjbG9zZWQgcmVmZXJlbmR1bSBiYWNrIHRvIHRoZSBkZXBvc2l0b3IuAJwtIGBvcmlnaW5gOiBtdXN0IGJlIGBTaWduZWRgIG9yIGBSb290YC5NAS0gYGluZGV4YDogVGhlIGluZGV4IG9mIGEgY2xvc2VkIHJlZmVyZW5kdW0gd2hvc2UgRGVjaXNpb24gRGVwb3NpdCBoYXMgbm90IHlldCBiZWVuLCAgcmVmdW5kZWQuAIBFbWl0cyBgRGVjaXNpb25EZXBvc2l0UmVmdW5kZWRgLhhjYW5jZWwEARRpbmRleBABPFJlZmVyZW5kdW1JbmRleAADGHRDYW5jZWwgYW4gb25nb2luZyByZWZlcmVuZHVtLgCcLSBgb3JpZ2luYDogbXVzdCBiZSB0aGUgYENhbmNlbE9yaWdpbmAu3C0gYGluZGV4YDogVGhlIGluZGV4IG9mIHRoZSByZWZlcmVuZHVtIHRvIGJlIGNhbmNlbGxlZC4ASEVtaXRzIGBDYW5jZWxsZWRgLhBraWxsBAEUaW5kZXgQATxSZWZlcmVuZHVtSW5kZXgABBjQQ2FuY2VsIGFuIG9uZ29pbmcgcmVmZXJlbmR1bSBhbmQgc2xhc2ggdGhlIGRlcG9zaXRzLgCULSBgb3JpZ2luYDogbXVzdCBiZSB0aGUgYEtpbGxPcmlnaW5gLtwtIGBpbmRleGA6IFRoZSBpbmRleCBvZiB0aGUgcmVmZXJlbmR1bSB0byBiZSBjYW5jZWxsZWQuAJBFbWl0cyBgS2lsbGVkYCBhbmQgYERlcG9zaXRTbGFzaGVkYC5AbnVkZ2VfcmVmZXJlbmR1bQQBFGluZGV4EAE8UmVmZXJlbmR1bUluZGV4AAUQHQFBZHZhbmNlIGEgcmVmZXJlbmR1bSBvbnRvIGl0cyBuZXh0IGxvZ2ljYWwgc3RhdGUuIE9ubHkgdXNlZCBpbnRlcm5hbGx5LgBsLSBgb3JpZ2luYDogbXVzdCBiZSBgUm9vdGAupC0gYGluZGV4YDogdGhlIHJlZmVyZW5kdW0gdG8gYmUgYWR2YW5jZWQuSG9uZV9mZXdlcl9kZWNpZGluZwQBFHRyYWNrbQEBPFRyYWNrSWRPZjxULCBJPgAGJAkBQWR2YW5jZSBhIHRyYWNrIG9udG8gaXRzIG5leHQgbG9naWNhbCBzdGF0ZS4gT25seSB1c2VkIGludGVybmFsbHkuAGwtIGBvcmlnaW5gOiBtdXN0IGJlIGBSb290YC6QLSBgdHJhY2tgOiB0aGUgdHJhY2sgdG8gYmUgYWR2YW5jZWQuAFEBQWN0aW9uIGl0ZW0gZm9yIHdoZW4gdGhlcmUgaXMgbm93IG9uZSBmZXdlciByZWZlcmVuZHVtIGluIHRoZSBkZWNpZGluZyBwaGFzZSBhbmQgdGhlFQFgRGVjaWRpbmdDb3VudGAgaXMgbm90IHlldCB1cGRhdGVkLiBUaGlzIG1lYW5zIHRoYXQgd2Ugc2hvdWxkIGVpdGhlcjolAS0gYmVnaW4gZGVjaWRpbmcgYW5vdGhlciByZWZlcmVuZHVtIChhbmQgbGVhdmUgYERlY2lkaW5nQ291bnRgIGFsb25lKTsgb3JwLSBkZWNyZW1lbnQgYERlY2lkaW5nQ291bnRgLmRyZWZ1bmRfc3VibWlzc2lvbl9kZXBvc2l0BAEUaW5kZXgQATxSZWZlcmVuZHVtSW5kZXgABxwxAVJlZnVuZCB0aGUgU3VibWlzc2lvbiBEZXBvc2l0IGZvciBhIGNsb3NlZCByZWZlcmVuZHVtIGJhY2sgdG8gdGhlIGRlcG9zaXRvci4AnC0gYG9yaWdpbmA6IG11c3QgYmUgYFNpZ25lZGAgb3IgYFJvb3RgLlUBLSBgaW5kZXhgOiBUaGUgaW5kZXggb2YgYSBjbG9zZWQgcmVmZXJlbmR1bSB3aG9zZSBTdWJtaXNzaW9uIERlcG9zaXQgaGFzIG5vdCB5ZXQgYmVlbiwgIHJlZnVuZGVkLgCIRW1pdHMgYFN1Ym1pc3Npb25EZXBvc2l0UmVmdW5kZWRgLjBzZXRfbWV0YWRhdGEIARRpbmRleBABPFJlZmVyZW5kdW1JbmRleAABKG1heWJlX2hhc2idAgE8T3B0aW9uPFQ6Okhhc2g+AAgcmFNldCBvciBjbGVhciBtZXRhZGF0YSBvZiBhIHJlZmVyZW5kdW0uACxQYXJhbWV0ZXJzOkUBLSBgb3JpZ2luYDogTXVzdCBiZSBgU2lnbmVkYCBieSBhIGNyZWF0b3Igb2YgYSByZWZlcmVuZHVtIG9yIGJ5IGFueW9uZSB0byBjbGVhciBhkCAgbWV0YWRhdGEgb2YgYSBmaW5pc2hlZCByZWZlcmVuZHVtLg0BLSBgaW5kZXhgOiAgVGhlIGluZGV4IG9mIGEgcmVmZXJlbmR1bSB0byBzZXQgb3IgY2xlYXIgbWV0YWRhdGEgZm9yLlEBLSBgbWF5YmVfaGFzaGA6IFRoZSBoYXNoIG9mIGFuIG9uLWNoYWluIHN0b3JlZCBwcmVpbWFnZS4gYE5vbmVgIHRvIGNsZWFyIGEgbWV0YWRhdGEuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLn0CCDRwYXNlb19ydW50aW1lME9yaWdpbkNhbGxlcgABFBhzeXN0ZW0EAIECAXRmcmFtZV9zeXN0ZW06Ok9yaWdpbjxSdW50aW1lPgAAABxPcmlnaW5zBACFAgF0cGFsbGV0X2N1c3RvbV9vcmlnaW5zOjpPcmlnaW4AFgBAUGFyYWNoYWluc09yaWdpbgQAiQIBZHBhcmFjaGFpbnNfb3JpZ2luOjpPcmlnaW4AMgAkWGNtUGFsbGV0BACRAgFIcGFsbGV0X3hjbTo6T3JpZ2luAGMAEFZvaWQEAJUCAUEBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OgpfX3ByaXZhdGU6OlZvaWQABAAAgQIMNGZyYW1lX3N1cHBvcnQgZGlzcGF0Y2gkUmF3T3JpZ2luBCRBY2NvdW50SWQBAAEMEFJvb3QAAAAYU2lnbmVkBAAAASRBY2NvdW50SWQAAQAQTm9uZQACAACFAhQ0cGFzZW9fcnVudGltZShnb3Zlcm5hbmNlHG9yaWdpbnNUcGFsbGV0X2N1c3RvbV9vcmlnaW5zGE9yaWdpbgABPDBTdGFraW5nQWRtaW4AAAAkVHJlYXN1cmVyAAEAPEZlbGxvd3NoaXBBZG1pbgACADBHZW5lcmFsQWRtaW4AAwAwQXVjdGlvbkFkbWluAAQAKExlYXNlQWRtaW4ABQBMUmVmZXJlbmR1bUNhbmNlbGxlcgAGAEBSZWZlcmVuZHVtS2lsbGVyAAcALFNtYWxsVGlwcGVyAAgAJEJpZ1RpcHBlcgAJADBTbWFsbFNwZW5kZXIACgA0TWVkaXVtU3BlbmRlcgALAChCaWdTcGVuZGVyAAwARFdoaXRlbGlzdGVkQ2FsbGVyAA0ANFdpc2hGb3JDaGFuZ2UADgAAiQIQbHBvbGthZG90X3J1bnRpbWVfcGFyYWNoYWlucxhvcmlnaW4YcGFsbGV0GE9yaWdpbgABBCRQYXJhY2hhaW4EAI0CARhQYXJhSWQAAAAAjQIMdHBvbGthZG90X3BhcmFjaGFpbl9wcmltaXRpdmVzKHByaW1pdGl2ZXMISWQAAAQAEAEMdTMyAACRAgwocGFsbGV0X3hjbRhwYWxsZXQYT3JpZ2luAAEIDFhjbQQADQEBIExvY2F0aW9uAAAAIFJlc3BvbnNlBAANAQEgTG9jYXRpb24AAQAAlQIIHHNwX2NvcmUQVm9pZAABAACZAhA0ZnJhbWVfc3VwcG9ydBh0cmFpdHMgc2NoZWR1bGUwRGlzcGF0Y2hUaW1lBCxCbG9ja051bWJlcgEQAQgIQXQEABABLEJsb2NrTnVtYmVyAAAAFEFmdGVyBAAQASxCbG9ja051bWJlcgABAACdAgQYT3B0aW9uBARUATQBCBBOb25lAAAAEFNvbWUEADQAAAEAAKECDEBwYWxsZXRfd2hpdGVsaXN0GHBhbGxldBBDYWxsBARUAAEQOHdoaXRlbGlzdF9jYWxsBAEkY2FsbF9oYXNoNAEcVDo6SGFzaAAAAFxyZW1vdmVfd2hpdGVsaXN0ZWRfY2FsbAQBJGNhbGxfaGFzaDQBHFQ6Okhhc2gAAQBkZGlzcGF0Y2hfd2hpdGVsaXN0ZWRfY2FsbAwBJGNhbGxfaGFzaDQBHFQ6Okhhc2gAAUBjYWxsX2VuY29kZWRfbGVuEAEMdTMyAAFMY2FsbF93ZWlnaHRfd2l0bmVzcygBGFdlaWdodAACAJxkaXNwYXRjaF93aGl0ZWxpc3RlZF9jYWxsX3dpdGhfcHJlaW1hZ2UEARBjYWxsdQEBfEJveDw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4AAwAEDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMupQIQXHBvbGthZG90X3J1bnRpbWVfY29tbW9uGGNsYWltcxhwYWxsZXQQQ2FsbAQEVAABFBRjbGFpbQgBEGRlc3QAATBUOjpBY2NvdW50SWQAAUhldGhlcmV1bV9zaWduYXR1cmWpAgE4RWNkc2FTaWduYXR1cmUAAGCITWFrZSBhIGNsYWltIHRvIGNvbGxlY3QgeW91ciBET1RzLgDEVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX05vbmVfLgBQVW5zaWduZWQgVmFsaWRhdGlvbjoFAUEgY2FsbCB0byBjbGFpbSBpcyBkZWVtZWQgdmFsaWQgaWYgdGhlIHNpZ25hdHVyZSBwcm92aWRlZCBtYXRjaGVzfHRoZSBleHBlY3RlZCBzaWduZWQgbWVzc2FnZSBvZjoAaD4gRXRoZXJldW0gU2lnbmVkIE1lc3NhZ2U6lD4gKGNvbmZpZ3VyZWQgcHJlZml4IHN0cmluZykoYWRkcmVzcykApGFuZCBgYWRkcmVzc2AgbWF0Y2hlcyB0aGUgYGRlc3RgIGFjY291bnQuACxQYXJhbWV0ZXJzOtgtIGBkZXN0YDogVGhlIGRlc3RpbmF0aW9uIGFjY291bnQgdG8gcGF5b3V0IHRoZSBjbGFpbS5dAS0gYGV0aGVyZXVtX3NpZ25hdHVyZWA6IFRoZSBzaWduYXR1cmUgb2YgYW4gZXRoZXJldW0gc2lnbmVkIG1lc3NhZ2UgbWF0Y2hpbmcgdGhlIGZvcm1hdEggIGRlc2NyaWJlZCBhYm92ZS4AIDx3ZWlnaHQ+/FRoZSB3ZWlnaHQgb2YgdGhpcyBjYWxsIGlzIGludmFyaWFudCBvdmVyIHRoZSBpbnB1dCBwYXJhbWV0ZXJzLuBXZWlnaHQgaW5jbHVkZXMgbG9naWMgdG8gdmFsaWRhdGUgdW5zaWduZWQgYGNsYWltYCBjYWxsLgBYVG90YWwgQ29tcGxleGl0eTogTygxKSQ8L3dlaWdodD4obWludF9jbGFpbRABDHdob7ECATxFdGhlcmV1bUFkZHJlc3MAARR2YWx1ZRgBMEJhbGFuY2VPZjxUPgABQHZlc3Rpbmdfc2NoZWR1bGW1AgHcT3B0aW9uPChCYWxhbmNlT2Y8VD4sIEJhbGFuY2VPZjxUPiwgQmxvY2tOdW1iZXJGb3I8VD4pPgABJHN0YXRlbWVudL0CAVRPcHRpb248U3RhdGVtZW50S2luZD4AATyETWludCBhIG5ldyBjbGFpbSB0byBjb2xsZWN0IERPVHMuAMRUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfUm9vdF8uACxQYXJhbWV0ZXJzOvAtIGB3aG9gOiBUaGUgRXRoZXJldW0gYWRkcmVzcyBhbGxvd2VkIHRvIGNvbGxlY3QgdGhpcyBjbGFpbS7MLSBgdmFsdWVgOiBUaGUgbnVtYmVyIG9mIERPVHMgdGhhdCB3aWxsIGJlIGNsYWltZWQuCQEtIGB2ZXN0aW5nX3NjaGVkdWxlYDogQW4gb3B0aW9uYWwgdmVzdGluZyBzY2hlZHVsZSBmb3IgdGhlc2UgRE9Ucy4AIDx3ZWlnaHQ+/FRoZSB3ZWlnaHQgb2YgdGhpcyBjYWxsIGlzIGludmFyaWFudCBvdmVyIHRoZSBpbnB1dCBwYXJhbWV0ZXJzLh0BV2UgYXNzdW1lIHdvcnN0IGNhc2UgdGhhdCBib3RoIHZlc3RpbmcgYW5kIHN0YXRlbWVudCBpcyBiZWluZyBpbnNlcnRlZC4AWFRvdGFsIENvbXBsZXhpdHk6IE8oMSkkPC93ZWlnaHQ+MGNsYWltX2F0dGVzdAwBEGRlc3QAATBUOjpBY2NvdW50SWQAAUhldGhlcmV1bV9zaWduYXR1cmWpAgE4RWNkc2FTaWduYXR1cmUAASRzdGF0ZW1lbnQ4ARxWZWM8dTg+AAJs5E1ha2UgYSBjbGFpbSB0byBjb2xsZWN0IHlvdXIgRE9UcyBieSBzaWduaW5nIGEgc3RhdGVtZW50LgDEVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX05vbmVfLgBQVW5zaWduZWQgVmFsaWRhdGlvbjopAUEgY2FsbCB0byBgY2xhaW1fYXR0ZXN0YCBpcyBkZWVtZWQgdmFsaWQgaWYgdGhlIHNpZ25hdHVyZSBwcm92aWRlZCBtYXRjaGVzfHRoZSBleHBlY3RlZCBzaWduZWQgbWVzc2FnZSBvZjoAaD4gRXRoZXJldW0gU2lnbmVkIE1lc3NhZ2U6wD4gKGNvbmZpZ3VyZWQgcHJlZml4IHN0cmluZykoYWRkcmVzcykoc3RhdGVtZW50KQBJAWFuZCBgYWRkcmVzc2AgbWF0Y2hlcyB0aGUgYGRlc3RgIGFjY291bnQ7IHRoZSBgc3RhdGVtZW50YCBtdXN0IG1hdGNoIHRoYXQgd2hpY2ggaXPAZXhwZWN0ZWQgYWNjb3JkaW5nIHRvIHlvdXIgcHVyY2hhc2UgYXJyYW5nZW1lbnQuACxQYXJhbWV0ZXJzOtgtIGBkZXN0YDogVGhlIGRlc3RpbmF0aW9uIGFjY291bnQgdG8gcGF5b3V0IHRoZSBjbGFpbS5dAS0gYGV0aGVyZXVtX3NpZ25hdHVyZWA6IFRoZSBzaWduYXR1cmUgb2YgYW4gZXRoZXJldW0gc2lnbmVkIG1lc3NhZ2UgbWF0Y2hpbmcgdGhlIGZvcm1hdEggIGRlc2NyaWJlZCBhYm92ZS45AS0gYHN0YXRlbWVudGA6IFRoZSBpZGVudGl0eSBvZiB0aGUgc3RhdGVtZW50IHdoaWNoIGlzIGJlaW5nIGF0dGVzdGVkIHRvIGluIHRoZTAgIHNpZ25hdHVyZS4AIDx3ZWlnaHQ+/FRoZSB3ZWlnaHQgb2YgdGhpcyBjYWxsIGlzIGludmFyaWFudCBvdmVyIHRoZSBpbnB1dCBwYXJhbWV0ZXJzLvxXZWlnaHQgaW5jbHVkZXMgbG9naWMgdG8gdmFsaWRhdGUgdW5zaWduZWQgYGNsYWltX2F0dGVzdGAgY2FsbC4AWFRvdGFsIENvbXBsZXhpdHk6IE8oMSkkPC93ZWlnaHQ+GGF0dGVzdAQBJHN0YXRlbWVudDgBHFZlYzx1OD4AA0z0QXR0ZXN0IHRvIGEgc3RhdGVtZW50LCBuZWVkZWQgdG8gZmluYWxpemUgdGhlIGNsYWltcyBwcm9jZXNzLgAZAVdBUk5JTkc6IEluc2VjdXJlIHVubGVzcyB5b3VyIGNoYWluIGluY2x1ZGVzIGBQcmV2YWxpZGF0ZUF0dGVzdHNgIGFzIGFIYFNpZ25lZEV4dGVuc2lvbmAuAFBVbnNpZ25lZCBWYWxpZGF0aW9uOikBQSBjYWxsIHRvIGF0dGVzdCBpcyBkZWVtZWQgdmFsaWQgaWYgdGhlIHNlbmRlciBoYXMgYSBgUHJlY2xhaW1gIHJlZ2lzdGVyZWT0YW5kIHByb3ZpZGVzIGEgYHN0YXRlbWVudGAgd2hpY2ggaXMgZXhwZWN0ZWQgZm9yIHRoZSBhY2NvdW50LgAsUGFyYW1ldGVyczo5AS0gYHN0YXRlbWVudGA6IFRoZSBpZGVudGl0eSBvZiB0aGUgc3RhdGVtZW50IHdoaWNoIGlzIGJlaW5nIGF0dGVzdGVkIHRvIGluIHRoZTAgIHNpZ25hdHVyZS4AIDx3ZWlnaHQ+/FRoZSB3ZWlnaHQgb2YgdGhpcyBjYWxsIGlzIGludmFyaWFudCBvdmVyIHRoZSBpbnB1dCBwYXJhbWV0ZXJzLvBXZWlnaHQgaW5jbHVkZXMgbG9naWMgdG8gZG8gcHJlLXZhbGlkYXRpb24gb24gYGF0dGVzdGAgY2FsbC4AWFRvdGFsIENvbXBsZXhpdHk6IE8oMSkkPC93ZWlnaHQ+KG1vdmVfY2xhaW0MAQxvbGSxAgE8RXRoZXJldW1BZGRyZXNzAAEMbmV3sQIBPEV0aGVyZXVtQWRkcmVzcwABOG1heWJlX3ByZWNsYWlt/QEBUE9wdGlvbjxUOjpBY2NvdW50SWQ+AAQABA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLqkCDFxwb2xrYWRvdF9ydW50aW1lX2NvbW1vbhhjbGFpbXM4RWNkc2FTaWduYXR1cmUAAAQArQIBIFt1ODsgNjVdAACtAgAAA0EAAAAIALECDFxwb2xrYWRvdF9ydW50aW1lX2NvbW1vbhhjbGFpbXM8RXRoZXJldW1BZGRyZXNzAAAEAPgBIFt1ODsgMjBdAAC1AgQYT3B0aW9uBARUAbkCAQgQTm9uZQAAABBTb21lBAC5AgAAAQAAuQIAAAQMGBgQAL0CBBhPcHRpb24EBFQBwQIBCBBOb25lAAAAEFNvbWUEAMECAAABAADBAgxccG9sa2Fkb3RfcnVudGltZV9jb21tb24YY2xhaW1zNFN0YXRlbWVudEtpbmQAAQgcUmVndWxhcgAAABBTYWZ0AAEAAMUCDDhwYWxsZXRfdmVzdGluZxhwYWxsZXQQQ2FsbAQEVAABGBB2ZXN0AAAkuFVubG9jayBhbnkgdmVzdGVkIGZ1bmRzIG9mIHRoZSBzZW5kZXIgYWNjb3VudC4AXQFUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXyBhbmQgdGhlIHNlbmRlciBtdXN0IGhhdmUgZnVuZHMgc3RpbGxkbG9ja2VkIHVuZGVyIHRoaXMgcGFsbGV0LgDQRW1pdHMgZWl0aGVyIGBWZXN0aW5nQ29tcGxldGVkYCBvciBgVmVzdGluZ1VwZGF0ZWRgLgA0IyMgQ29tcGxleGl0eSQtIGBPKDEpYC4odmVzdF9vdGhlcgQBGHRhcmdldMUBAVBBY2NvdW50SWRMb29rdXBPZjxUPgABLLhVbmxvY2sgYW55IHZlc3RlZCBmdW5kcyBvZiBhIGB0YXJnZXRgIGFjY291bnQuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4AUQEtIGB0YXJnZXRgOiBUaGUgYWNjb3VudCB3aG9zZSB2ZXN0ZWQgZnVuZHMgc2hvdWxkIGJlIHVubG9ja2VkLiBNdXN0IGhhdmUgZnVuZHMgc3RpbGxkbG9ja2VkIHVuZGVyIHRoaXMgcGFsbGV0LgDQRW1pdHMgZWl0aGVyIGBWZXN0aW5nQ29tcGxldGVkYCBvciBgVmVzdGluZ1VwZGF0ZWRgLgA0IyMgQ29tcGxleGl0eSQtIGBPKDEpYC48dmVzdGVkX3RyYW5zZmVyCAEYdGFyZ2V0xQEBUEFjY291bnRJZExvb2t1cE9mPFQ+AAEgc2NoZWR1bGXJAgGwVmVzdGluZ0luZm88QmFsYW5jZU9mPFQ+LCBCbG9ja051bWJlckZvcjxUPj4AAjRkQ3JlYXRlIGEgdmVzdGVkIHRyYW5zZmVyLgDMVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uAMwtIGB0YXJnZXRgOiBUaGUgYWNjb3VudCByZWNlaXZpbmcgdGhlIHZlc3RlZCBmdW5kcy7wLSBgc2NoZWR1bGVgOiBUaGUgdmVzdGluZyBzY2hlZHVsZSBhdHRhY2hlZCB0byB0aGUgdHJhbnNmZXIuAFxFbWl0cyBgVmVzdGluZ0NyZWF0ZWRgLgD8Tk9URTogVGhpcyB3aWxsIHVubG9jayBhbGwgc2NoZWR1bGVzIHRocm91Z2ggdGhlIGN1cnJlbnQgYmxvY2suADQjIyBDb21wbGV4aXR5JC0gYE8oMSlgLlRmb3JjZV92ZXN0ZWRfdHJhbnNmZXIMARhzb3VyY2XFAQFQQWNjb3VudElkTG9va3VwT2Y8VD4AARh0YXJnZXTFAQFQQWNjb3VudElkTG9va3VwT2Y8VD4AASBzY2hlZHVsZckCAbBWZXN0aW5nSW5mbzxCYWxhbmNlT2Y8VD4sIEJsb2NrTnVtYmVyRm9yPFQ+PgADOGBGb3JjZSBhIHZlc3RlZCB0cmFuc2Zlci4AxFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9Sb290Xy4A6C0gYHNvdXJjZWA6IFRoZSBhY2NvdW50IHdob3NlIGZ1bmRzIHNob3VsZCBiZSB0cmFuc2ZlcnJlZC4RAS0gYHRhcmdldGA6IFRoZSBhY2NvdW50IHRoYXQgc2hvdWxkIGJlIHRyYW5zZmVycmVkIHRoZSB2ZXN0ZWQgZnVuZHMu8C0gYHNjaGVkdWxlYDogVGhlIHZlc3Rpbmcgc2NoZWR1bGUgYXR0YWNoZWQgdG8gdGhlIHRyYW5zZmVyLgBcRW1pdHMgYFZlc3RpbmdDcmVhdGVkYC4A/E5PVEU6IFRoaXMgd2lsbCB1bmxvY2sgYWxsIHNjaGVkdWxlcyB0aHJvdWdoIHRoZSBjdXJyZW50IGJsb2NrLgA0IyMgQ29tcGxleGl0eSQtIGBPKDEpYC48bWVyZ2Vfc2NoZWR1bGVzCAE8c2NoZWR1bGUxX2luZGV4EAEMdTMyAAE8c2NoZWR1bGUyX2luZGV4EAEMdTMyAARUXQFNZXJnZSB0d28gdmVzdGluZyBzY2hlZHVsZXMgdG9nZXRoZXIsIGNyZWF0aW5nIGEgbmV3IHZlc3Rpbmcgc2NoZWR1bGUgdGhhdCB1bmxvY2tzIG92ZXJVAXRoZSBoaWdoZXN0IHBvc3NpYmxlIHN0YXJ0IGFuZCBlbmQgYmxvY2tzLiBJZiBib3RoIHNjaGVkdWxlcyBoYXZlIGFscmVhZHkgc3RhcnRlZCB0aGVZAWN1cnJlbnQgYmxvY2sgd2lsbCBiZSB1c2VkIGFzIHRoZSBzY2hlZHVsZSBzdGFydDsgd2l0aCB0aGUgY2F2ZWF0IHRoYXQgaWYgb25lIHNjaGVkdWxlXQFpcyBmaW5pc2hlZCBieSB0aGUgY3VycmVudCBibG9jaywgdGhlIG90aGVyIHdpbGwgYmUgdHJlYXRlZCBhcyB0aGUgbmV3IG1lcmdlZCBzY2hlZHVsZSwsdW5tb2RpZmllZC4A+E5PVEU6IElmIGBzY2hlZHVsZTFfaW5kZXggPT0gc2NoZWR1bGUyX2luZGV4YCB0aGlzIGlzIGEgbm8tb3AuQQFOT1RFOiBUaGlzIHdpbGwgdW5sb2NrIGFsbCBzY2hlZHVsZXMgdGhyb3VnaCB0aGUgY3VycmVudCBibG9jayBwcmlvciB0byBtZXJnaW5nLmEBTk9URTogSWYgYm90aCBzY2hlZHVsZXMgaGF2ZSBlbmRlZCBieSB0aGUgY3VycmVudCBibG9jaywgbm8gbmV3IHNjaGVkdWxlIHdpbGwgYmUgY3JlYXRlZGRhbmQgYm90aCB3aWxsIGJlIHJlbW92ZWQuAGxNZXJnZWQgc2NoZWR1bGUgYXR0cmlidXRlczo1AS0gYHN0YXJ0aW5nX2Jsb2NrYDogYE1BWChzY2hlZHVsZTEuc3RhcnRpbmdfYmxvY2ssIHNjaGVkdWxlZDIuc3RhcnRpbmdfYmxvY2ssSCAgY3VycmVudF9ibG9jaylgLiEBLSBgZW5kaW5nX2Jsb2NrYDogYE1BWChzY2hlZHVsZTEuZW5kaW5nX2Jsb2NrLCBzY2hlZHVsZTIuZW5kaW5nX2Jsb2NrKWAuWQEtIGBsb2NrZWRgOiBgc2NoZWR1bGUxLmxvY2tlZF9hdChjdXJyZW50X2Jsb2NrKSArIHNjaGVkdWxlMi5sb2NrZWRfYXQoY3VycmVudF9ibG9jaylgLgDMVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uAOgtIGBzY2hlZHVsZTFfaW5kZXhgOiBpbmRleCBvZiB0aGUgZmlyc3Qgc2NoZWR1bGUgdG8gbWVyZ2Uu7C0gYHNjaGVkdWxlMl9pbmRleGA6IGluZGV4IG9mIHRoZSBzZWNvbmQgc2NoZWR1bGUgdG8gbWVyZ2UudGZvcmNlX3JlbW92ZV92ZXN0aW5nX3NjaGVkdWxlCAEYdGFyZ2V0xQEBjDxUOjpMb29rdXAgYXMgU3RhdGljTG9va3VwPjo6U291cmNlAAE4c2NoZWR1bGVfaW5kZXgQAQx1MzIABRh8Rm9yY2UgcmVtb3ZlIGEgdmVzdGluZyBzY2hlZHVsZQDEVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1Jvb3RfLgDILSBgdGFyZ2V0YDogQW4gYWNjb3VudCB0aGF0IGhhcyBhIHZlc3Rpbmcgc2NoZWR1bGUVAS0gYHNjaGVkdWxlX2luZGV4YDogVGhlIHZlc3Rpbmcgc2NoZWR1bGUgaW5kZXggdGhhdCBzaG91bGQgYmUgcmVtb3ZlZAQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy7JAgw4cGFsbGV0X3Zlc3RpbmcwdmVzdGluZ19pbmZvLFZlc3RpbmdJbmZvCBxCYWxhbmNlARgsQmxvY2tOdW1iZXIBEAAMARhsb2NrZWQYARxCYWxhbmNlAAEkcGVyX2Jsb2NrGAEcQmFsYW5jZQABOHN0YXJ0aW5nX2Jsb2NrEAEsQmxvY2tOdW1iZXIAAM0CDDhwYWxsZXRfdXRpbGl0eRhwYWxsZXQQQ2FsbAQEVAABGBRiYXRjaAQBFGNhbGxz0QIBfFZlYzw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4AAEh8U2VuZCBhIGJhdGNoIG9mIGRpc3BhdGNoIGNhbGxzLgCwTWF5IGJlIGNhbGxlZCBmcm9tIGFueSBvcmlnaW4gZXhjZXB0IGBOb25lYC4AXQEtIGBjYWxsc2A6IFRoZSBjYWxscyB0byBiZSBkaXNwYXRjaGVkIGZyb20gdGhlIHNhbWUgb3JpZ2luLiBUaGUgbnVtYmVyIG9mIGNhbGwgbXVzdCBub3Q5ASAgZXhjZWVkIHRoZSBjb25zdGFudDogYGJhdGNoZWRfY2FsbHNfbGltaXRgIChhdmFpbGFibGUgaW4gY29uc3RhbnQgbWV0YWRhdGEpLgBVAUlmIG9yaWdpbiBpcyByb290IHRoZW4gdGhlIGNhbGxzIGFyZSBkaXNwYXRjaGVkIHdpdGhvdXQgY2hlY2tpbmcgb3JpZ2luIGZpbHRlci4gKFRoaXPsaW5jbHVkZXMgYnlwYXNzaW5nIGBmcmFtZV9zeXN0ZW06OkNvbmZpZzo6QmFzZUNhbGxGaWx0ZXJgKS4ANCMjIENvbXBsZXhpdHnQLSBPKEMpIHdoZXJlIEMgaXMgdGhlIG51bWJlciBvZiBjYWxscyB0byBiZSBiYXRjaGVkLgBVAVRoaXMgd2lsbCByZXR1cm4gYE9rYCBpbiBhbGwgY2lyY3Vtc3RhbmNlcy4gVG8gZGV0ZXJtaW5lIHRoZSBzdWNjZXNzIG9mIHRoZSBiYXRjaCwgYW4xAWV2ZW50IGlzIGRlcG9zaXRlZC4gSWYgYSBjYWxsIGZhaWxlZCBhbmQgdGhlIGJhdGNoIHdhcyBpbnRlcnJ1cHRlZCwgdGhlbiB0aGVVAWBCYXRjaEludGVycnVwdGVkYCBldmVudCBpcyBkZXBvc2l0ZWQsIGFsb25nIHdpdGggdGhlIG51bWJlciBvZiBzdWNjZXNzZnVsIGNhbGxzIG1hZGVNAWFuZCB0aGUgZXJyb3Igb2YgdGhlIGZhaWxlZCBjYWxsLiBJZiBhbGwgd2VyZSBzdWNjZXNzZnVsLCB0aGVuIHRoZSBgQmF0Y2hDb21wbGV0ZWRgTGV2ZW50IGlzIGRlcG9zaXRlZC40YXNfZGVyaXZhdGl2ZQgBFGluZGV4bQEBDHUxNgABEGNhbGx1AQF8Qm94PDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgABNNxTZW5kIGEgY2FsbCB0aHJvdWdoIGFuIGluZGV4ZWQgcHNldWRvbnltIG9mIHRoZSBzZW5kZXIuAFUBRmlsdGVyIGZyb20gb3JpZ2luIGFyZSBwYXNzZWQgYWxvbmcuIFRoZSBjYWxsIHdpbGwgYmUgZGlzcGF0Y2hlZCB3aXRoIGFuIG9yaWdpbiB3aGljaLx1c2UgdGhlIHNhbWUgZmlsdGVyIGFzIHRoZSBvcmlnaW4gb2YgdGhpcyBjYWxsLgBFAU5PVEU6IElmIHlvdSBuZWVkIHRvIGVuc3VyZSB0aGF0IGFueSBhY2NvdW50LWJhc2VkIGZpbHRlcmluZyBpcyBub3QgaG9ub3JlZCAoaS5lLmEBYmVjYXVzZSB5b3UgZXhwZWN0IGBwcm94eWAgdG8gaGF2ZSBiZWVuIHVzZWQgcHJpb3IgaW4gdGhlIGNhbGwgc3RhY2sgYW5kIHlvdSBkbyBub3Qgd2FudFEBdGhlIGNhbGwgcmVzdHJpY3Rpb25zIHRvIGFwcGx5IHRvIGFueSBzdWItYWNjb3VudHMpLCB0aGVuIHVzZSBgYXNfbXVsdGlfdGhyZXNob2xkXzFgfGluIHRoZSBNdWx0aXNpZyBwYWxsZXQgaW5zdGVhZC4A9E5PVEU6IFByaW9yIHRvIHZlcnNpb24gKjEyLCB0aGlzIHdhcyBjYWxsZWQgYGFzX2xpbWl0ZWRfc3ViYC4AzFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLiRiYXRjaF9hbGwEARRjYWxsc9ECAXxWZWM8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AAI07FNlbmQgYSBiYXRjaCBvZiBkaXNwYXRjaCBjYWxscyBhbmQgYXRvbWljYWxseSBleGVjdXRlIHRoZW0uIQFUaGUgd2hvbGUgdHJhbnNhY3Rpb24gd2lsbCByb2xsYmFjayBhbmQgZmFpbCBpZiBhbnkgb2YgdGhlIGNhbGxzIGZhaWxlZC4AsE1heSBiZSBjYWxsZWQgZnJvbSBhbnkgb3JpZ2luIGV4Y2VwdCBgTm9uZWAuAF0BLSBgY2FsbHNgOiBUaGUgY2FsbHMgdG8gYmUgZGlzcGF0Y2hlZCBmcm9tIHRoZSBzYW1lIG9yaWdpbi4gVGhlIG51bWJlciBvZiBjYWxsIG11c3Qgbm90OQEgIGV4Y2VlZCB0aGUgY29uc3RhbnQ6IGBiYXRjaGVkX2NhbGxzX2xpbWl0YCAoYXZhaWxhYmxlIGluIGNvbnN0YW50IG1ldGFkYXRhKS4AVQFJZiBvcmlnaW4gaXMgcm9vdCB0aGVuIHRoZSBjYWxscyBhcmUgZGlzcGF0Y2hlZCB3aXRob3V0IGNoZWNraW5nIG9yaWdpbiBmaWx0ZXIuIChUaGlz7GluY2x1ZGVzIGJ5cGFzc2luZyBgZnJhbWVfc3lzdGVtOjpDb25maWc6OkJhc2VDYWxsRmlsdGVyYCkuADQjIyBDb21wbGV4aXR50C0gTyhDKSB3aGVyZSBDIGlzIHRoZSBudW1iZXIgb2YgY2FsbHMgdG8gYmUgYmF0Y2hlZC4sZGlzcGF0Y2hfYXMIASRhc19vcmlnaW59AgFUQm94PFQ6OlBhbGxldHNPcmlnaW4+AAEQY2FsbHUBAXxCb3g8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AAMYyERpc3BhdGNoZXMgYSBmdW5jdGlvbiBjYWxsIHdpdGggYSBwcm92aWRlZCBvcmlnaW4uAMRUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfUm9vdF8uADQjIyBDb21wbGV4aXR5HC0gTygxKS4sZm9yY2VfYmF0Y2gEARRjYWxsc9ECAXxWZWM8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AAQ0fFNlbmQgYSBiYXRjaCBvZiBkaXNwYXRjaCBjYWxscy7UVW5saWtlIGBiYXRjaGAsIGl0IGFsbG93cyBlcnJvcnMgYW5kIHdvbid0IGludGVycnVwdC4AsE1heSBiZSBjYWxsZWQgZnJvbSBhbnkgb3JpZ2luIGV4Y2VwdCBgTm9uZWAuAF0BLSBgY2FsbHNgOiBUaGUgY2FsbHMgdG8gYmUgZGlzcGF0Y2hlZCBmcm9tIHRoZSBzYW1lIG9yaWdpbi4gVGhlIG51bWJlciBvZiBjYWxsIG11c3Qgbm90OQEgIGV4Y2VlZCB0aGUgY29uc3RhbnQ6IGBiYXRjaGVkX2NhbGxzX2xpbWl0YCAoYXZhaWxhYmxlIGluIGNvbnN0YW50IG1ldGFkYXRhKS4ATQFJZiBvcmlnaW4gaXMgcm9vdCB0aGVuIHRoZSBjYWxscyBhcmUgZGlzcGF0Y2ggd2l0aG91dCBjaGVja2luZyBvcmlnaW4gZmlsdGVyLiAoVGhpc+xpbmNsdWRlcyBieXBhc3NpbmcgYGZyYW1lX3N5c3RlbTo6Q29uZmlnOjpCYXNlQ2FsbEZpbHRlcmApLgA0IyMgQ29tcGxleGl0edAtIE8oQykgd2hlcmUgQyBpcyB0aGUgbnVtYmVyIG9mIGNhbGxzIHRvIGJlIGJhdGNoZWQuLHdpdGhfd2VpZ2h0CAEQY2FsbHUBAXxCb3g8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AAEYd2VpZ2h0KAEYV2VpZ2h0AAUYxERpc3BhdGNoIGEgZnVuY3Rpb24gY2FsbCB3aXRoIGEgc3BlY2lmaWVkIHdlaWdodC4ALQFUaGlzIGZ1bmN0aW9uIGRvZXMgbm90IGNoZWNrIHRoZSB3ZWlnaHQgb2YgdGhlIGNhbGwsIGFuZCBpbnN0ZWFkIGFsbG93cyB0aGW4Um9vdCBvcmlnaW4gdG8gc3BlY2lmeSB0aGUgd2VpZ2h0IG9mIHRoZSBjYWxsLgDEVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1Jvb3RfLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy7RAgAAAnUBANUCDDBwYWxsZXRfcHJveHkYcGFsbGV0EENhbGwEBFQAASgUcHJveHkMARByZWFsxQEBUEFjY291bnRJZExvb2t1cE9mPFQ+AAFAZm9yY2VfcHJveHlfdHlwZdkCAVBPcHRpb248VDo6UHJveHlUeXBlPgABEGNhbGx1AQF8Qm94PDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgAAJE0BRGlzcGF0Y2ggdGhlIGdpdmVuIGBjYWxsYCBmcm9tIGFuIGFjY291bnQgdGhhdCB0aGUgc2VuZGVyIGlzIGF1dGhvcmlzZWQgZm9yIHRocm91Z2gwYGFkZF9wcm94eWAuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4ALFBhcmFtZXRlcnM6DQEtIGByZWFsYDogVGhlIGFjY291bnQgdGhhdCB0aGUgcHJveHkgd2lsbCBtYWtlIGEgY2FsbCBvbiBiZWhhbGYgb2YuYQEtIGBmb3JjZV9wcm94eV90eXBlYDogU3BlY2lmeSB0aGUgZXhhY3QgcHJveHkgdHlwZSB0byBiZSB1c2VkIGFuZCBjaGVja2VkIGZvciB0aGlzIGNhbGwu0C0gYGNhbGxgOiBUaGUgY2FsbCB0byBiZSBtYWRlIGJ5IHRoZSBgcmVhbGAgYWNjb3VudC4kYWRkX3Byb3h5DAEgZGVsZWdhdGXFAQFQQWNjb3VudElkTG9va3VwT2Y8VD4AAShwcm94eV90eXBl3QIBMFQ6OlByb3h5VHlwZQABFGRlbGF5EAFEQmxvY2tOdW1iZXJGb3I8VD4AASRFAVJlZ2lzdGVyIGEgcHJveHkgYWNjb3VudCBmb3IgdGhlIHNlbmRlciB0aGF0IGlzIGFibGUgdG8gbWFrZSBjYWxscyBvbiBpdHMgYmVoYWxmLgDMVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uACxQYXJhbWV0ZXJzOhEBLSBgcHJveHlgOiBUaGUgYWNjb3VudCB0aGF0IHRoZSBgY2FsbGVyYCB3b3VsZCBsaWtlIHRvIG1ha2UgYSBwcm94eS78LSBgcHJveHlfdHlwZWA6IFRoZSBwZXJtaXNzaW9ucyBhbGxvd2VkIGZvciB0aGlzIHByb3h5IGFjY291bnQuTQEtIGBkZWxheWA6IFRoZSBhbm5vdW5jZW1lbnQgcGVyaW9kIHJlcXVpcmVkIG9mIHRoZSBpbml0aWFsIHByb3h5LiBXaWxsIGdlbmVyYWxseSBiZRR6ZXJvLjByZW1vdmVfcHJveHkMASBkZWxlZ2F0ZcUBAVBBY2NvdW50SWRMb29rdXBPZjxUPgABKHByb3h5X3R5cGXdAgEwVDo6UHJveHlUeXBlAAEUZGVsYXkQAURCbG9ja051bWJlckZvcjxUPgACHKhVbnJlZ2lzdGVyIGEgcHJveHkgYWNjb3VudCBmb3IgdGhlIHNlbmRlci4AzFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLgAsUGFyYW1ldGVyczolAS0gYHByb3h5YDogVGhlIGFjY291bnQgdGhhdCB0aGUgYGNhbGxlcmAgd291bGQgbGlrZSB0byByZW1vdmUgYXMgYSBwcm94eS5BAS0gYHByb3h5X3R5cGVgOiBUaGUgcGVybWlzc2lvbnMgY3VycmVudGx5IGVuYWJsZWQgZm9yIHRoZSByZW1vdmVkIHByb3h5IGFjY291bnQuOHJlbW92ZV9wcm94aWVzAAMYtFVucmVnaXN0ZXIgYWxsIHByb3h5IGFjY291bnRzIGZvciB0aGUgc2VuZGVyLgDMVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uAEEBV0FSTklORzogVGhpcyBtYXkgYmUgY2FsbGVkIG9uIGFjY291bnRzIGNyZWF0ZWQgYnkgYHB1cmVgLCBob3dldmVyIGlmIGRvbmUsIHRoZW5ZAXRoZSB1bnJlc2VydmVkIGZlZXMgd2lsbCBiZSBpbmFjY2Vzc2libGUuICoqQWxsIGFjY2VzcyB0byB0aGlzIGFjY291bnQgd2lsbCBiZSBsb3N0LioqLGNyZWF0ZV9wdXJlDAEocHJveHlfdHlwZd0CATBUOjpQcm94eVR5cGUAARRkZWxheRABREJsb2NrTnVtYmVyRm9yPFQ+AAEUaW5kZXhtAQEMdTE2AARIOQFTcGF3biBhIGZyZXNoIG5ldyBhY2NvdW50IHRoYXQgaXMgZ3VhcmFudGVlZCB0byBiZSBvdGhlcndpc2UgaW5hY2Nlc3NpYmxlLCBhbmT8aW5pdGlhbGl6ZSBpdCB3aXRoIGEgcHJveHkgb2YgYHByb3h5X3R5cGVgIGZvciBgb3JpZ2luYCBzZW5kZXIuAGxSZXF1aXJlcyBhIGBTaWduZWRgIG9yaWdpbi4AUQEtIGBwcm94eV90eXBlYDogVGhlIHR5cGUgb2YgdGhlIHByb3h5IHRoYXQgdGhlIHNlbmRlciB3aWxsIGJlIHJlZ2lzdGVyZWQgYXMgb3ZlciB0aGVNAW5ldyBhY2NvdW50LiBUaGlzIHdpbGwgYWxtb3N0IGFsd2F5cyBiZSB0aGUgbW9zdCBwZXJtaXNzaXZlIGBQcm94eVR5cGVgIHBvc3NpYmxlIHRveGFsbG93IGZvciBtYXhpbXVtIGZsZXhpYmlsaXR5LlEBLSBgaW5kZXhgOiBBIGRpc2FtYmlndWF0aW9uIGluZGV4LCBpbiBjYXNlIHRoaXMgaXMgY2FsbGVkIG11bHRpcGxlIHRpbWVzIGluIHRoZSBzYW1lXQF0cmFuc2FjdGlvbiAoZS5nLiB3aXRoIGB1dGlsaXR5OjpiYXRjaGApLiBVbmxlc3MgeW91J3JlIHVzaW5nIGBiYXRjaGAgeW91IHByb2JhYmx5IGp1c3RAd2FudCB0byB1c2UgYDBgLk0BLSBgZGVsYXlgOiBUaGUgYW5ub3VuY2VtZW50IHBlcmlvZCByZXF1aXJlZCBvZiB0aGUgaW5pdGlhbCBwcm94eS4gV2lsbCBnZW5lcmFsbHkgYmUUemVyby4AUQFGYWlscyB3aXRoIGBEdXBsaWNhdGVgIGlmIHRoaXMgaGFzIGFscmVhZHkgYmVlbiBjYWxsZWQgaW4gdGhpcyB0cmFuc2FjdGlvbiwgZnJvbSB0aGWYc2FtZSBzZW5kZXIsIHdpdGggdGhlIHNhbWUgcGFyYW1ldGVycy4A5EZhaWxzIGlmIHRoZXJlIGFyZSBpbnN1ZmZpY2llbnQgZnVuZHMgdG8gcGF5IGZvciBkZXBvc2l0LiRraWxsX3B1cmUUARxzcGF3bmVyxQEBUEFjY291bnRJZExvb2t1cE9mPFQ+AAEocHJveHlfdHlwZd0CATBUOjpQcm94eVR5cGUAARRpbmRleG0BAQx1MTYAARhoZWlnaHTsAURCbG9ja051bWJlckZvcjxUPgABJGV4dF9pbmRleOwBDHUzMgAFQKBSZW1vdmVzIGEgcHJldmlvdXNseSBzcGF3bmVkIHB1cmUgcHJveHkuAEkBV0FSTklORzogKipBbGwgYWNjZXNzIHRvIHRoaXMgYWNjb3VudCB3aWxsIGJlIGxvc3QuKiogQW55IGZ1bmRzIGhlbGQgaW4gaXQgd2lsbCBiZTRpbmFjY2Vzc2libGUuAFkBUmVxdWlyZXMgYSBgU2lnbmVkYCBvcmlnaW4sIGFuZCB0aGUgc2VuZGVyIGFjY291bnQgbXVzdCBoYXZlIGJlZW4gY3JlYXRlZCBieSBhIGNhbGwgdG+UYHB1cmVgIHdpdGggY29ycmVzcG9uZGluZyBwYXJhbWV0ZXJzLgA5AS0gYHNwYXduZXJgOiBUaGUgYWNjb3VudCB0aGF0IG9yaWdpbmFsbHkgY2FsbGVkIGBwdXJlYCB0byBjcmVhdGUgdGhpcyBhY2NvdW50LjkBLSBgaW5kZXhgOiBUaGUgZGlzYW1iaWd1YXRpb24gaW5kZXggb3JpZ2luYWxseSBwYXNzZWQgdG8gYHB1cmVgLiBQcm9iYWJseSBgMGAu7C0gYHByb3h5X3R5cGVgOiBUaGUgcHJveHkgdHlwZSBvcmlnaW5hbGx5IHBhc3NlZCB0byBgcHVyZWAuKQEtIGBoZWlnaHRgOiBUaGUgaGVpZ2h0IG9mIHRoZSBjaGFpbiB3aGVuIHRoZSBjYWxsIHRvIGBwdXJlYCB3YXMgcHJvY2Vzc2VkLjUBLSBgZXh0X2luZGV4YDogVGhlIGV4dHJpbnNpYyBpbmRleCBpbiB3aGljaCB0aGUgY2FsbCB0byBgcHVyZWAgd2FzIHByb2Nlc3NlZC4ANQFGYWlscyB3aXRoIGBOb1Blcm1pc3Npb25gIGluIGNhc2UgdGhlIGNhbGxlciBpcyBub3QgYSBwcmV2aW91c2x5IGNyZWF0ZWQgcHVyZdxhY2NvdW50IHdob3NlIGBwdXJlYCBjYWxsIGhhcyBjb3JyZXNwb25kaW5nIHBhcmFtZXRlcnMuIGFubm91bmNlCAEQcmVhbMUBAVBBY2NvdW50SWRMb29rdXBPZjxUPgABJGNhbGxfaGFzaDQBNENhbGxIYXNoT2Y8VD4ABjwFAVB1Ymxpc2ggdGhlIGhhc2ggb2YgYSBwcm94eS1jYWxsIHRoYXQgd2lsbCBiZSBtYWRlIGluIHRoZSBmdXR1cmUuAF0BVGhpcyBtdXN0IGJlIGNhbGxlZCBzb21lIG51bWJlciBvZiBibG9ja3MgYmVmb3JlIHRoZSBjb3JyZXNwb25kaW5nIGBwcm94eWAgaXMgYXR0ZW1wdGVkJQFpZiB0aGUgZGVsYXkgYXNzb2NpYXRlZCB3aXRoIHRoZSBwcm94eSByZWxhdGlvbnNoaXAgaXMgZ3JlYXRlciB0aGFuIHplcm8uABEBTm8gbW9yZSB0aGFuIGBNYXhQZW5kaW5nYCBhbm5vdW5jZW1lbnRzIG1heSBiZSBtYWRlIGF0IGFueSBvbmUgdGltZS4ACQFUaGlzIHdpbGwgdGFrZSBhIGRlcG9zaXQgb2YgYEFubm91bmNlbWVudERlcG9zaXRGYWN0b3JgIGFzIHdlbGwgYXMZAWBBbm5vdW5jZW1lbnREZXBvc2l0QmFzZWAgaWYgdGhlcmUgYXJlIG5vIG90aGVyIHBlbmRpbmcgYW5ub3VuY2VtZW50cy4AJQFUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXyBhbmQgYSBwcm94eSBvZiBgcmVhbGAuACxQYXJhbWV0ZXJzOg0BLSBgcmVhbGA6IFRoZSBhY2NvdW50IHRoYXQgdGhlIHByb3h5IHdpbGwgbWFrZSBhIGNhbGwgb24gYmVoYWxmIG9mLhUBLSBgY2FsbF9oYXNoYDogVGhlIGhhc2ggb2YgdGhlIGNhbGwgdG8gYmUgbWFkZSBieSB0aGUgYHJlYWxgIGFjY291bnQuTHJlbW92ZV9hbm5vdW5jZW1lbnQIARByZWFsxQEBUEFjY291bnRJZExvb2t1cE9mPFQ+AAEkY2FsbF9oYXNoNAE0Q2FsbEhhc2hPZjxUPgAHKHBSZW1vdmUgYSBnaXZlbiBhbm5vdW5jZW1lbnQuAFkBTWF5IGJlIGNhbGxlZCBieSBhIHByb3h5IGFjY291bnQgdG8gcmVtb3ZlIGEgY2FsbCB0aGV5IHByZXZpb3VzbHkgYW5ub3VuY2VkIGFuZCByZXR1cm4wdGhlIGRlcG9zaXQuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4ALFBhcmFtZXRlcnM6DQEtIGByZWFsYDogVGhlIGFjY291bnQgdGhhdCB0aGUgcHJveHkgd2lsbCBtYWtlIGEgY2FsbCBvbiBiZWhhbGYgb2YuFQEtIGBjYWxsX2hhc2hgOiBUaGUgaGFzaCBvZiB0aGUgY2FsbCB0byBiZSBtYWRlIGJ5IHRoZSBgcmVhbGAgYWNjb3VudC5McmVqZWN0X2Fubm91bmNlbWVudAgBIGRlbGVnYXRlxQEBUEFjY291bnRJZExvb2t1cE9mPFQ+AAEkY2FsbF9oYXNoNAE0Q2FsbEhhc2hPZjxUPgAIKLBSZW1vdmUgdGhlIGdpdmVuIGFubm91bmNlbWVudCBvZiBhIGRlbGVnYXRlLgBhAU1heSBiZSBjYWxsZWQgYnkgYSB0YXJnZXQgKHByb3hpZWQpIGFjY291bnQgdG8gcmVtb3ZlIGEgY2FsbCB0aGF0IG9uZSBvZiB0aGVpciBkZWxlZ2F0ZXMlAShgZGVsZWdhdGVgKSBoYXMgYW5ub3VuY2VkIHRoZXkgd2FudCB0byBleGVjdXRlLiBUaGUgZGVwb3NpdCBpcyByZXR1cm5lZC4AzFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLgAsUGFyYW1ldGVyczr0LSBgZGVsZWdhdGVgOiBUaGUgYWNjb3VudCB0aGF0IHByZXZpb3VzbHkgYW5ub3VuY2VkIHRoZSBjYWxsLrwtIGBjYWxsX2hhc2hgOiBUaGUgaGFzaCBvZiB0aGUgY2FsbCB0byBiZSBtYWRlLjxwcm94eV9hbm5vdW5jZWQQASBkZWxlZ2F0ZcUBAVBBY2NvdW50SWRMb29rdXBPZjxUPgABEHJlYWzFAQFQQWNjb3VudElkTG9va3VwT2Y8VD4AAUBmb3JjZV9wcm94eV90eXBl2QIBUE9wdGlvbjxUOjpQcm94eVR5cGU+AAEQY2FsbHUBAXxCb3g8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AAksTQFEaXNwYXRjaCB0aGUgZ2l2ZW4gYGNhbGxgIGZyb20gYW4gYWNjb3VudCB0aGF0IHRoZSBzZW5kZXIgaXMgYXV0aG9yaXplZCBmb3IgdGhyb3VnaDBgYWRkX3Byb3h5YC4AqFJlbW92ZXMgYW55IGNvcnJlc3BvbmRpbmcgYW5ub3VuY2VtZW50KHMpLgDMVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uACxQYXJhbWV0ZXJzOg0BLSBgcmVhbGA6IFRoZSBhY2NvdW50IHRoYXQgdGhlIHByb3h5IHdpbGwgbWFrZSBhIGNhbGwgb24gYmVoYWxmIG9mLmEBLSBgZm9yY2VfcHJveHlfdHlwZWA6IFNwZWNpZnkgdGhlIGV4YWN0IHByb3h5IHR5cGUgdG8gYmUgdXNlZCBhbmQgY2hlY2tlZCBmb3IgdGhpcyBjYWxsLtAtIGBjYWxsYDogVGhlIGNhbGwgdG8gYmUgbWFkZSBieSB0aGUgYHJlYWxgIGFjY291bnQuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLtkCBBhPcHRpb24EBFQB3QIBCBBOb25lAAAAEFNvbWUEAN0CAAABAADdAgg0cGFzZW9fcnVudGltZSRQcm94eVR5cGUAARwMQW55AAAALE5vblRyYW5zZmVyAAEAKEdvdmVybmFuY2UAAgAcU3Rha2luZwADACxDYW5jZWxQcm94eQAGABxBdWN0aW9uAAcAPE5vbWluYXRpb25Qb29scwAIAADhAgw8cGFsbGV0X211bHRpc2lnGHBhbGxldBBDYWxsBARUAAEQUGFzX211bHRpX3RocmVzaG9sZF8xCAFEb3RoZXJfc2lnbmF0b3JpZXPRAQFEVmVjPFQ6OkFjY291bnRJZD4AARBjYWxsdQEBfEJveDw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4AADBRAUltbWVkaWF0ZWx5IGRpc3BhdGNoIGEgbXVsdGktc2lnbmF0dXJlIGNhbGwgdXNpbmcgYSBzaW5nbGUgYXBwcm92YWwgZnJvbSB0aGUgY2FsbGVyLgDMVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uAD0BLSBgb3RoZXJfc2lnbmF0b3JpZXNgOiBUaGUgYWNjb3VudHMgKG90aGVyIHRoYW4gdGhlIHNlbmRlcikgd2hvIGFyZSBwYXJ0IG9mIHRoZQEBbXVsdGktc2lnbmF0dXJlLCBidXQgZG8gbm90IHBhcnRpY2lwYXRlIGluIHRoZSBhcHByb3ZhbCBwcm9jZXNzLogtIGBjYWxsYDogVGhlIGNhbGwgdG8gYmUgZXhlY3V0ZWQuALhSZXN1bHQgaXMgZXF1aXZhbGVudCB0byB0aGUgZGlzcGF0Y2hlZCByZXN1bHQuADQjIyBDb21wbGV4aXR5GQFPKFogKyBDKSB3aGVyZSBaIGlzIHRoZSBsZW5ndGggb2YgdGhlIGNhbGwgYW5kIEMgaXRzIGV4ZWN1dGlvbiB3ZWlnaHQuIGFzX211bHRpFAEkdGhyZXNob2xkbQEBDHUxNgABRG90aGVyX3NpZ25hdG9yaWVz0QEBRFZlYzxUOjpBY2NvdW50SWQ+AAE8bWF5YmVfdGltZXBvaW505QIBkE9wdGlvbjxUaW1lcG9pbnQ8QmxvY2tOdW1iZXJGb3I8VD4+PgABEGNhbGx1AQF8Qm94PDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgABKG1heF93ZWlnaHQoARhXZWlnaHQAAZxVAVJlZ2lzdGVyIGFwcHJvdmFsIGZvciBhIGRpc3BhdGNoIHRvIGJlIG1hZGUgZnJvbSBhIGRldGVybWluaXN0aWMgY29tcG9zaXRlIGFjY291bnQgaWb4YXBwcm92ZWQgYnkgYSB0b3RhbCBvZiBgdGhyZXNob2xkIC0gMWAgb2YgYG90aGVyX3NpZ25hdG9yaWVzYC4AsElmIHRoZXJlIGFyZSBlbm91Z2gsIHRoZW4gZGlzcGF0Y2ggdGhlIGNhbGwuAC0BUGF5bWVudDogYERlcG9zaXRCYXNlYCB3aWxsIGJlIHJlc2VydmVkIGlmIHRoaXMgaXMgdGhlIGZpcnN0IGFwcHJvdmFsLCBwbHVzPQFgdGhyZXNob2xkYCB0aW1lcyBgRGVwb3NpdEZhY3RvcmAuIEl0IGlzIHJldHVybmVkIG9uY2UgdGhpcyBkaXNwYXRjaCBoYXBwZW5zIG9yNGlzIGNhbmNlbGxlZC4AzFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLgBVAS0gYHRocmVzaG9sZGA6IFRoZSB0b3RhbCBudW1iZXIgb2YgYXBwcm92YWxzIGZvciB0aGlzIGRpc3BhdGNoIGJlZm9yZSBpdCBpcyBleGVjdXRlZC5BAS0gYG90aGVyX3NpZ25hdG9yaWVzYDogVGhlIGFjY291bnRzIChvdGhlciB0aGFuIHRoZSBzZW5kZXIpIHdobyBjYW4gYXBwcm92ZSB0aGlzbGRpc3BhdGNoLiBNYXkgbm90IGJlIGVtcHR5LlkBLSBgbWF5YmVfdGltZXBvaW50YDogSWYgdGhpcyBpcyB0aGUgZmlyc3QgYXBwcm92YWwsIHRoZW4gdGhpcyBtdXN0IGJlIGBOb25lYC4gSWYgaXQgaXNRAW5vdCB0aGUgZmlyc3QgYXBwcm92YWwsIHRoZW4gaXQgbXVzdCBiZSBgU29tZWAsIHdpdGggdGhlIHRpbWVwb2ludCAoYmxvY2sgbnVtYmVyIGFuZNR0cmFuc2FjdGlvbiBpbmRleCkgb2YgdGhlIGZpcnN0IGFwcHJvdmFsIHRyYW5zYWN0aW9uLogtIGBjYWxsYDogVGhlIGNhbGwgdG8gYmUgZXhlY3V0ZWQuAB0BTk9URTogVW5sZXNzIHRoaXMgaXMgdGhlIGZpbmFsIGFwcHJvdmFsLCB5b3Ugd2lsbCBnZW5lcmFsbHkgd2FudCB0byB1c2UZAWBhcHByb3ZlX2FzX211bHRpYCBpbnN0ZWFkLCBzaW5jZSBpdCBvbmx5IHJlcXVpcmVzIGEgaGFzaCBvZiB0aGUgY2FsbC4AWQFSZXN1bHQgaXMgZXF1aXZhbGVudCB0byB0aGUgZGlzcGF0Y2hlZCByZXN1bHQgaWYgYHRocmVzaG9sZGAgaXMgZXhhY3RseSBgMWAuIE90aGVyd2lzZVUBb24gc3VjY2VzcywgcmVzdWx0IGlzIGBPa2AgYW5kIHRoZSByZXN1bHQgZnJvbSB0aGUgaW50ZXJpb3IgY2FsbCwgaWYgaXQgd2FzIGV4ZWN1dGVkLNxtYXkgYmUgZm91bmQgaW4gdGhlIGRlcG9zaXRlZCBgTXVsdGlzaWdFeGVjdXRlZGAgZXZlbnQuADQjIyBDb21wbGV4aXR5UC0gYE8oUyArIFogKyBDYWxsKWAuzC0gVXAgdG8gb25lIGJhbGFuY2UtcmVzZXJ2ZSBvciB1bnJlc2VydmUgb3BlcmF0aW9uLj0BLSBPbmUgcGFzc3Rocm91Z2ggb3BlcmF0aW9uLCBvbmUgaW5zZXJ0LCBib3RoIGBPKFMpYCB3aGVyZSBgU2AgaXMgdGhlIG51bWJlciBvZkUBICBzaWduYXRvcmllcy4gYFNgIGlzIGNhcHBlZCBieSBgTWF4U2lnbmF0b3JpZXNgLCB3aXRoIHdlaWdodCBiZWluZyBwcm9wb3J0aW9uYWwuIQEtIE9uZSBjYWxsIGVuY29kZSAmIGhhc2gsIGJvdGggb2YgY29tcGxleGl0eSBgTyhaKWAgd2hlcmUgYFpgIGlzIHR4LWxlbi68LSBPbmUgZW5jb2RlICYgaGFzaCwgYm90aCBvZiBjb21wbGV4aXR5IGBPKFMpYC7ULSBVcCB0byBvbmUgYmluYXJ5IHNlYXJjaCBhbmQgaW5zZXJ0IChgTyhsb2dTICsgUylgKS74LSBJL086IDEgcmVhZCBgTyhTKWAsIHVwIHRvIDEgbXV0YXRlIGBPKFMpYC4gVXAgdG8gb25lIHJlbW92ZS4wLSBPbmUgZXZlbnQubC0gVGhlIHdlaWdodCBvZiB0aGUgYGNhbGxgLk0BLSBTdG9yYWdlOiBpbnNlcnRzIG9uZSBpdGVtLCB2YWx1ZSBzaXplIGJvdW5kZWQgYnkgYE1heFNpZ25hdG9yaWVzYCwgd2l0aCBhIGRlcG9zaXQZASAgdGFrZW4gZm9yIGl0cyBsaWZldGltZSBvZiBgRGVwb3NpdEJhc2UgKyB0aHJlc2hvbGQgKiBEZXBvc2l0RmFjdG9yYC5AYXBwcm92ZV9hc19tdWx0aRQBJHRocmVzaG9sZG0BAQx1MTYAAURvdGhlcl9zaWduYXRvcmllc9EBAURWZWM8VDo6QWNjb3VudElkPgABPG1heWJlX3RpbWVwb2ludOUCAZBPcHRpb248VGltZXBvaW50PEJsb2NrTnVtYmVyRm9yPFQ+Pj4AASRjYWxsX2hhc2gEASBbdTg7IDMyXQABKG1heF93ZWlnaHQoARhXZWlnaHQAAnhVAVJlZ2lzdGVyIGFwcHJvdmFsIGZvciBhIGRpc3BhdGNoIHRvIGJlIG1hZGUgZnJvbSBhIGRldGVybWluaXN0aWMgY29tcG9zaXRlIGFjY291bnQgaWb4YXBwcm92ZWQgYnkgYSB0b3RhbCBvZiBgdGhyZXNob2xkIC0gMWAgb2YgYG90aGVyX3NpZ25hdG9yaWVzYC4ALQFQYXltZW50OiBgRGVwb3NpdEJhc2VgIHdpbGwgYmUgcmVzZXJ2ZWQgaWYgdGhpcyBpcyB0aGUgZmlyc3QgYXBwcm92YWwsIHBsdXM9AWB0aHJlc2hvbGRgIHRpbWVzIGBEZXBvc2l0RmFjdG9yYC4gSXQgaXMgcmV0dXJuZWQgb25jZSB0aGlzIGRpc3BhdGNoIGhhcHBlbnMgb3I0aXMgY2FuY2VsbGVkLgDMVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uAFUBLSBgdGhyZXNob2xkYDogVGhlIHRvdGFsIG51bWJlciBvZiBhcHByb3ZhbHMgZm9yIHRoaXMgZGlzcGF0Y2ggYmVmb3JlIGl0IGlzIGV4ZWN1dGVkLkEBLSBgb3RoZXJfc2lnbmF0b3JpZXNgOiBUaGUgYWNjb3VudHMgKG90aGVyIHRoYW4gdGhlIHNlbmRlcikgd2hvIGNhbiBhcHByb3ZlIHRoaXNsZGlzcGF0Y2guIE1heSBub3QgYmUgZW1wdHkuWQEtIGBtYXliZV90aW1lcG9pbnRgOiBJZiB0aGlzIGlzIHRoZSBmaXJzdCBhcHByb3ZhbCwgdGhlbiB0aGlzIG11c3QgYmUgYE5vbmVgLiBJZiBpdCBpc1EBbm90IHRoZSBmaXJzdCBhcHByb3ZhbCwgdGhlbiBpdCBtdXN0IGJlIGBTb21lYCwgd2l0aCB0aGUgdGltZXBvaW50IChibG9jayBudW1iZXIgYW5k1HRyYW5zYWN0aW9uIGluZGV4KSBvZiB0aGUgZmlyc3QgYXBwcm92YWwgdHJhbnNhY3Rpb24uzC0gYGNhbGxfaGFzaGA6IFRoZSBoYXNoIG9mIHRoZSBjYWxsIHRvIGJlIGV4ZWN1dGVkLgA1AU5PVEU6IElmIHRoaXMgaXMgdGhlIGZpbmFsIGFwcHJvdmFsLCB5b3Ugd2lsbCB3YW50IHRvIHVzZSBgYXNfbXVsdGlgIGluc3RlYWQuADQjIyBDb21wbGV4aXR5JC0gYE8oUylgLswtIFVwIHRvIG9uZSBiYWxhbmNlLXJlc2VydmUgb3IgdW5yZXNlcnZlIG9wZXJhdGlvbi49AS0gT25lIHBhc3N0aHJvdWdoIG9wZXJhdGlvbiwgb25lIGluc2VydCwgYm90aCBgTyhTKWAgd2hlcmUgYFNgIGlzIHRoZSBudW1iZXIgb2ZFASAgc2lnbmF0b3JpZXMuIGBTYCBpcyBjYXBwZWQgYnkgYE1heFNpZ25hdG9yaWVzYCwgd2l0aCB3ZWlnaHQgYmVpbmcgcHJvcG9ydGlvbmFsLrwtIE9uZSBlbmNvZGUgJiBoYXNoLCBib3RoIG9mIGNvbXBsZXhpdHkgYE8oUylgLtQtIFVwIHRvIG9uZSBiaW5hcnkgc2VhcmNoIGFuZCBpbnNlcnQgKGBPKGxvZ1MgKyBTKWApLvgtIEkvTzogMSByZWFkIGBPKFMpYCwgdXAgdG8gMSBtdXRhdGUgYE8oUylgLiBVcCB0byBvbmUgcmVtb3ZlLjAtIE9uZSBldmVudC5NAS0gU3RvcmFnZTogaW5zZXJ0cyBvbmUgaXRlbSwgdmFsdWUgc2l6ZSBib3VuZGVkIGJ5IGBNYXhTaWduYXRvcmllc2AsIHdpdGggYSBkZXBvc2l0GQEgIHRha2VuIGZvciBpdHMgbGlmZXRpbWUgb2YgYERlcG9zaXRCYXNlICsgdGhyZXNob2xkICogRGVwb3NpdEZhY3RvcmAuPGNhbmNlbF9hc19tdWx0aRABJHRocmVzaG9sZG0BAQx1MTYAAURvdGhlcl9zaWduYXRvcmllc9EBAURWZWM8VDo6QWNjb3VudElkPgABJHRpbWVwb2ludOkCAXBUaW1lcG9pbnQ8QmxvY2tOdW1iZXJGb3I8VD4+AAEkY2FsbF9oYXNoBAEgW3U4OyAzMl0AA1RVAUNhbmNlbCBhIHByZS1leGlzdGluZywgb24tZ29pbmcgbXVsdGlzaWcgdHJhbnNhY3Rpb24uIEFueSBkZXBvc2l0IHJlc2VydmVkIHByZXZpb3VzbHnEZm9yIHRoaXMgb3BlcmF0aW9uIHdpbGwgYmUgdW5yZXNlcnZlZCBvbiBzdWNjZXNzLgDMVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uAFUBLSBgdGhyZXNob2xkYDogVGhlIHRvdGFsIG51bWJlciBvZiBhcHByb3ZhbHMgZm9yIHRoaXMgZGlzcGF0Y2ggYmVmb3JlIGl0IGlzIGV4ZWN1dGVkLkEBLSBgb3RoZXJfc2lnbmF0b3JpZXNgOiBUaGUgYWNjb3VudHMgKG90aGVyIHRoYW4gdGhlIHNlbmRlcikgd2hvIGNhbiBhcHByb3ZlIHRoaXNsZGlzcGF0Y2guIE1heSBub3QgYmUgZW1wdHkuXQEtIGB0aW1lcG9pbnRgOiBUaGUgdGltZXBvaW50IChibG9jayBudW1iZXIgYW5kIHRyYW5zYWN0aW9uIGluZGV4KSBvZiB0aGUgZmlyc3QgYXBwcm92YWx4dHJhbnNhY3Rpb24gZm9yIHRoaXMgZGlzcGF0Y2guzC0gYGNhbGxfaGFzaGA6IFRoZSBoYXNoIG9mIHRoZSBjYWxsIHRvIGJlIGV4ZWN1dGVkLgA0IyMgQ29tcGxleGl0eSQtIGBPKFMpYC7MLSBVcCB0byBvbmUgYmFsYW5jZS1yZXNlcnZlIG9yIHVucmVzZXJ2ZSBvcGVyYXRpb24uPQEtIE9uZSBwYXNzdGhyb3VnaCBvcGVyYXRpb24sIG9uZSBpbnNlcnQsIGJvdGggYE8oUylgIHdoZXJlIGBTYCBpcyB0aGUgbnVtYmVyIG9mRQEgIHNpZ25hdG9yaWVzLiBgU2AgaXMgY2FwcGVkIGJ5IGBNYXhTaWduYXRvcmllc2AsIHdpdGggd2VpZ2h0IGJlaW5nIHByb3BvcnRpb25hbC68LSBPbmUgZW5jb2RlICYgaGFzaCwgYm90aCBvZiBjb21wbGV4aXR5IGBPKFMpYC4wLSBPbmUgZXZlbnQuhC0gSS9POiAxIHJlYWQgYE8oUylgLCBvbmUgcmVtb3ZlLnAtIFN0b3JhZ2U6IHJlbW92ZXMgb25lIGl0ZW0uBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLuUCBBhPcHRpb24EBFQB6QIBCBBOb25lAAAAEFNvbWUEAOkCAAABAADpAgg8cGFsbGV0X211bHRpc2lnJFRpbWVwb2ludAQsQmxvY2tOdW1iZXIBEAAIARhoZWlnaHQQASxCbG9ja051bWJlcgABFGluZGV4EAEMdTMyAADtAgw8cGFsbGV0X2JvdW50aWVzGHBhbGxldBBDYWxsCARUAARJAAEkOHByb3Bvc2VfYm91bnR5CAEUdmFsdWX8ATxCYWxhbmNlT2Y8VCwgST4AASxkZXNjcmlwdGlvbjgBHFZlYzx1OD4AADBUUHJvcG9zZSBhIG5ldyBib3VudHkuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4AUQFQYXltZW50OiBgVGlwUmVwb3J0RGVwb3NpdEJhc2VgIHdpbGwgYmUgcmVzZXJ2ZWQgZnJvbSB0aGUgb3JpZ2luIGFjY291bnQsIGFzIHdlbGwgYXNRAWBEYXRhRGVwb3NpdFBlckJ5dGVgIGZvciBlYWNoIGJ5dGUgaW4gYHJlYXNvbmAuIEl0IHdpbGwgYmUgdW5yZXNlcnZlZCB1cG9uIGFwcHJvdmFsLGRvciBzbGFzaGVkIHdoZW4gcmVqZWN0ZWQuAPgtIGBjdXJhdG9yYDogVGhlIGN1cmF0b3IgYWNjb3VudCB3aG9tIHdpbGwgbWFuYWdlIHRoaXMgYm91bnR5LmQtIGBmZWVgOiBUaGUgY3VyYXRvciBmZWUuJQEtIGB2YWx1ZWA6IFRoZSB0b3RhbCBwYXltZW50IGFtb3VudCBvZiB0aGlzIGJvdW50eSwgY3VyYXRvciBmZWUgaW5jbHVkZWQuwC0gYGRlc2NyaXB0aW9uYDogVGhlIGRlc2NyaXB0aW9uIG9mIHRoaXMgYm91bnR5LjhhcHByb3ZlX2JvdW50eQQBJGJvdW50eV9pZOwBLEJvdW50eUluZGV4AAEcXQFBcHByb3ZlIGEgYm91bnR5IHByb3Bvc2FsLiBBdCBhIGxhdGVyIHRpbWUsIHRoZSBib3VudHkgd2lsbCBiZSBmdW5kZWQgYW5kIGJlY29tZSBhY3RpdmWoYW5kIHRoZSBvcmlnaW5hbCBkZXBvc2l0IHdpbGwgYmUgcmV0dXJuZWQuAKRNYXkgb25seSBiZSBjYWxsZWQgZnJvbSBgVDo6U3BlbmRPcmlnaW5gLgA0IyMgQ29tcGxleGl0eRwtIE8oMSkuPHByb3Bvc2VfY3VyYXRvcgwBJGJvdW50eV9pZOwBLEJvdW50eUluZGV4AAEcY3VyYXRvcsUBAVBBY2NvdW50SWRMb29rdXBPZjxUPgABDGZlZfwBPEJhbGFuY2VPZjxULCBJPgACGJRQcm9wb3NlIGEgY3VyYXRvciB0byBhIGZ1bmRlZCBib3VudHkuAKRNYXkgb25seSBiZSBjYWxsZWQgZnJvbSBgVDo6U3BlbmRPcmlnaW5gLgA0IyMgQ29tcGxleGl0eRwtIE8oMSkuQHVuYXNzaWduX2N1cmF0b3IEASRib3VudHlfaWTsASxCb3VudHlJbmRleAADRHxVbmFzc2lnbiBjdXJhdG9yIGZyb20gYSBib3VudHkuAB0BVGhpcyBmdW5jdGlvbiBjYW4gb25seSBiZSBjYWxsZWQgYnkgdGhlIGBSZWplY3RPcmlnaW5gIGEgc2lnbmVkIG9yaWdpbi4APQFJZiB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBieSB0aGUgYFJlamVjdE9yaWdpbmAsIHdlIGFzc3VtZSB0aGF0IHRoZSBjdXJhdG9yIGlzMQFtYWxpY2lvdXMgb3IgaW5hY3RpdmUuIEFzIGEgcmVzdWx0LCB3ZSB3aWxsIHNsYXNoIHRoZSBjdXJhdG9yIHdoZW4gcG9zc2libGUuAGEBSWYgdGhlIG9yaWdpbiBpcyB0aGUgY3VyYXRvciwgd2UgdGFrZSB0aGlzIGFzIGEgc2lnbiB0aGV5IGFyZSB1bmFibGUgdG8gZG8gdGhlaXIgam9iIGFuZF0BdGhleSB3aWxsaW5nbHkgZ2l2ZSB1cC4gV2UgY291bGQgc2xhc2ggdGhlbSwgYnV0IGZvciBub3cgd2UgYWxsb3cgdGhlbSB0byByZWNvdmVyIHRoZWlyNQFkZXBvc2l0IGFuZCBleGl0IHdpdGhvdXQgaXNzdWUuIChXZSBtYXkgd2FudCB0byBjaGFuZ2UgdGhpcyBpZiBpdCBpcyBhYnVzZWQuKQBdAUZpbmFsbHksIHRoZSBvcmlnaW4gY2FuIGJlIGFueW9uZSBpZiBhbmQgb25seSBpZiB0aGUgY3VyYXRvciBpcyAiaW5hY3RpdmUiLiBUaGlzIGFsbG93c2EBYW55b25lIGluIHRoZSBjb21tdW5pdHkgdG8gY2FsbCBvdXQgdGhhdCBhIGN1cmF0b3IgaXMgbm90IGRvaW5nIHRoZWlyIGR1ZSBkaWxpZ2VuY2UsIGFuZDkBd2Ugc2hvdWxkIHBpY2sgYSBuZXcgY3VyYXRvci4gSW4gdGhpcyBjYXNlIHRoZSBjdXJhdG9yIHNob3VsZCBhbHNvIGJlIHNsYXNoZWQuADQjIyBDb21wbGV4aXR5HC0gTygxKS44YWNjZXB0X2N1cmF0b3IEASRib3VudHlfaWTsASxCb3VudHlJbmRleAAEHJRBY2NlcHQgdGhlIGN1cmF0b3Igcm9sZSBmb3IgYSBib3VudHkuKQFBIGRlcG9zaXQgd2lsbCBiZSByZXNlcnZlZCBmcm9tIGN1cmF0b3IgYW5kIHJlZnVuZCB1cG9uIHN1Y2Nlc3NmdWwgcGF5b3V0LgCQTWF5IG9ubHkgYmUgY2FsbGVkIGZyb20gdGhlIGN1cmF0b3IuADQjIyBDb21wbGV4aXR5HC0gTygxKS4wYXdhcmRfYm91bnR5CAEkYm91bnR5X2lk7AEsQm91bnR5SW5kZXgAASxiZW5lZmljaWFyecUBAVBBY2NvdW50SWRMb29rdXBPZjxUPgAFKFkBQXdhcmQgYm91bnR5IHRvIGEgYmVuZWZpY2lhcnkgYWNjb3VudC4gVGhlIGJlbmVmaWNpYXJ5IHdpbGwgYmUgYWJsZSB0byBjbGFpbSB0aGUgZnVuZHM4YWZ0ZXIgYSBkZWxheS4AFQFUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSB0aGUgY3VyYXRvciBvZiB0aGlzIGJvdW50eS4AiC0gYGJvdW50eV9pZGA6IEJvdW50eSBJRCB0byBhd2FyZC4ZAS0gYGJlbmVmaWNpYXJ5YDogVGhlIGJlbmVmaWNpYXJ5IGFjY291bnQgd2hvbSB3aWxsIHJlY2VpdmUgdGhlIHBheW91dC4ANCMjIENvbXBsZXhpdHkcLSBPKDEpLjBjbGFpbV9ib3VudHkEASRib3VudHlfaWTsASxCb3VudHlJbmRleAAGIOxDbGFpbSB0aGUgcGF5b3V0IGZyb20gYW4gYXdhcmRlZCBib3VudHkgYWZ0ZXIgcGF5b3V0IGRlbGF5LgAlAVRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIHRoZSBiZW5lZmljaWFyeSBvZiB0aGlzIGJvdW50eS4AiC0gYGJvdW50eV9pZGA6IEJvdW50eSBJRCB0byBjbGFpbS4ANCMjIENvbXBsZXhpdHkcLSBPKDEpLjBjbG9zZV9ib3VudHkEASRib3VudHlfaWTsASxCb3VudHlJbmRleAAHJDkBQ2FuY2VsIGEgcHJvcG9zZWQgb3IgYWN0aXZlIGJvdW50eS4gQWxsIHRoZSBmdW5kcyB3aWxsIGJlIHNlbnQgdG8gdHJlYXN1cnkgYW5kzHRoZSBjdXJhdG9yIGRlcG9zaXQgd2lsbCBiZSB1bnJlc2VydmVkIGlmIHBvc3NpYmxlLgDIT25seSBgVDo6UmVqZWN0T3JpZ2luYCBpcyBhYmxlIHRvIGNhbmNlbCBhIGJvdW50eS4AjC0gYGJvdW50eV9pZGA6IEJvdW50eSBJRCB0byBjYW5jZWwuADQjIyBDb21wbGV4aXR5HC0gTygxKS5QZXh0ZW5kX2JvdW50eV9leHBpcnkIASRib3VudHlfaWTsASxCb3VudHlJbmRleAABGHJlbWFyazgBHFZlYzx1OD4ACCSsRXh0ZW5kIHRoZSBleHBpcnkgdGltZSBvZiBhbiBhY3RpdmUgYm91bnR5LgAVAVRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIHRoZSBjdXJhdG9yIG9mIHRoaXMgYm91bnR5LgCMLSBgYm91bnR5X2lkYDogQm91bnR5IElEIHRvIGV4dGVuZC6MLSBgcmVtYXJrYDogYWRkaXRpb25hbCBpbmZvcm1hdGlvbi4ANCMjIENvbXBsZXhpdHkcLSBPKDEpLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy7xAgxUcGFsbGV0X2NoaWxkX2JvdW50aWVzGHBhbGxldBBDYWxsBARUAAEcQGFkZF9jaGlsZF9ib3VudHkMAUBwYXJlbnRfYm91bnR5X2lk7AEsQm91bnR5SW5kZXgAARR2YWx1ZfwBMEJhbGFuY2VPZjxUPgABLGRlc2NyaXB0aW9uOAEcVmVjPHU4PgAATFxBZGQgYSBuZXcgY2hpbGQtYm91bnR5LgD8VGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgdGhlIGN1cmF0b3Igb2YgcGFyZW503GJvdW50eSBhbmQgdGhlIHBhcmVudCBib3VudHkgbXVzdCBiZSBpbiAiYWN0aXZlIiBzdGF0ZS4ABQFDaGlsZC1ib3VudHkgZ2V0cyBhZGRlZCBzdWNjZXNzZnVsbHkgJiBmdW5kIGdldHMgdHJhbnNmZXJyZWQgZnJvbQkBcGFyZW50IGJvdW50eSB0byBjaGlsZC1ib3VudHkgYWNjb3VudCwgaWYgcGFyZW50IGJvdW50eSBoYXMgZW5vdWdobGZ1bmRzLCBlbHNlIHRoZSBjYWxsIGZhaWxzLgANAVVwcGVyIGJvdW5kIHRvIG1heGltdW0gbnVtYmVyIG9mIGFjdGl2ZSAgY2hpbGQgYm91bnRpZXMgdGhhdCBjYW4gYmWoYWRkZWQgYXJlIG1hbmFnZWQgdmlhIHJ1bnRpbWUgdHJhaXQgY29uZmlnmFtgQ29uZmlnOjpNYXhBY3RpdmVDaGlsZEJvdW50eUNvdW50YF0uAAEBSWYgdGhlIGNhbGwgaXMgc3VjY2VzcywgdGhlIHN0YXR1cyBvZiBjaGlsZC1ib3VudHkgaXMgdXBkYXRlZCB0byAiQWRkZWQiLgBNAS0gYHBhcmVudF9ib3VudHlfaWRgOiBJbmRleCBvZiBwYXJlbnQgYm91bnR5IGZvciB3aGljaCBjaGlsZC1ib3VudHkgaXMgYmVpbmcgYWRkZWQusC0gYHZhbHVlYDogVmFsdWUgZm9yIGV4ZWN1dGluZyB0aGUgcHJvcG9zYWwu3C0gYGRlc2NyaXB0aW9uYDogVGV4dCBkZXNjcmlwdGlvbiBmb3IgdGhlIGNoaWxkLWJvdW50eS48cHJvcG9zZV9jdXJhdG9yEAFAcGFyZW50X2JvdW50eV9pZOwBLEJvdW50eUluZGV4AAE8Y2hpbGRfYm91bnR5X2lk7AEsQm91bnR5SW5kZXgAARxjdXJhdG9yxQEBUEFjY291bnRJZExvb2t1cE9mPFQ+AAEMZmVl/AEwQmFsYW5jZU9mPFQ+AAE8oFByb3Bvc2UgY3VyYXRvciBmb3IgZnVuZGVkIGNoaWxkLWJvdW50eS4ADQFUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBjdXJhdG9yIG9mIHBhcmVudCBib3VudHkuABEBUGFyZW50IGJvdW50eSBtdXN0IGJlIGluIGFjdGl2ZSBzdGF0ZSwgZm9yIHRoaXMgY2hpbGQtYm91bnR5IGNhbGwgdG8Ud29yay4ADQFDaGlsZC1ib3VudHkgbXVzdCBiZSBpbiAiQWRkZWQiIHN0YXRlLCBmb3IgcHJvY2Vzc2luZyB0aGUgY2FsbC4gQW5kBQFzdGF0ZSBvZiBjaGlsZC1ib3VudHkgaXMgbW92ZWQgdG8gIkN1cmF0b3JQcm9wb3NlZCIgb24gc3VjY2Vzc2Z1bEBjYWxsIGNvbXBsZXRpb24uALQtIGBwYXJlbnRfYm91bnR5X2lkYDogSW5kZXggb2YgcGFyZW50IGJvdW50eS6sLSBgY2hpbGRfYm91bnR5X2lkYDogSW5kZXggb2YgY2hpbGQgYm91bnR5LrQtIGBjdXJhdG9yYDogQWRkcmVzcyBvZiBjaGlsZC1ib3VudHkgY3VyYXRvci7sLSBgZmVlYDogcGF5bWVudCBmZWUgdG8gY2hpbGQtYm91bnR5IGN1cmF0b3IgZm9yIGV4ZWN1dGlvbi44YWNjZXB0X2N1cmF0b3IIAUBwYXJlbnRfYm91bnR5X2lk7AEsQm91bnR5SW5kZXgAATxjaGlsZF9ib3VudHlfaWTsASxCb3VudHlJbmRleAACTLRBY2NlcHQgdGhlIGN1cmF0b3Igcm9sZSBmb3IgdGhlIGNoaWxkLWJvdW50eS4A9FRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIHRoZSBjdXJhdG9yIG9mIHRoaXM0Y2hpbGQtYm91bnR5LgDsQSBkZXBvc2l0IHdpbGwgYmUgcmVzZXJ2ZWQgZnJvbSB0aGUgY3VyYXRvciBhbmQgcmVmdW5kIHVwb26Ic3VjY2Vzc2Z1bCBwYXlvdXQgb3IgY2FuY2VsbGF0aW9uLgD4RmVlIGZvciBjdXJhdG9yIGlzIGRlZHVjdGVkIGZyb20gY3VyYXRvciBmZWUgb2YgcGFyZW50IGJvdW50eS4AEQFQYXJlbnQgYm91bnR5IG11c3QgYmUgaW4gYWN0aXZlIHN0YXRlLCBmb3IgdGhpcyBjaGlsZC1ib3VudHkgY2FsbCB0bxR3b3JrLgANAUNoaWxkLWJvdW50eSBtdXN0IGJlIGluICJDdXJhdG9yUHJvcG9zZWQiIHN0YXRlLCBmb3IgcHJvY2Vzc2luZyB0aGUJAWNhbGwuIEFuZCBzdGF0ZSBvZiBjaGlsZC1ib3VudHkgaXMgbW92ZWQgdG8gIkFjdGl2ZSIgb24gc3VjY2Vzc2Z1bEBjYWxsIGNvbXBsZXRpb24uALQtIGBwYXJlbnRfYm91bnR5X2lkYDogSW5kZXggb2YgcGFyZW50IGJvdW50eS6sLSBgY2hpbGRfYm91bnR5X2lkYDogSW5kZXggb2YgY2hpbGQgYm91bnR5LkB1bmFzc2lnbl9jdXJhdG9yCAFAcGFyZW50X2JvdW50eV9pZOwBLEJvdW50eUluZGV4AAE8Y2hpbGRfYm91bnR5X2lk7AEsQm91bnR5SW5kZXgAA4iUVW5hc3NpZ24gY3VyYXRvciBmcm9tIGEgY2hpbGQtYm91bnR5LgAJAVRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBjYW4gYmUgZWl0aGVyIGBSZWplY3RPcmlnaW5gLCBvctx0aGUgY3VyYXRvciBvZiB0aGUgcGFyZW50IGJvdW50eSwgb3IgYW55IHNpZ25lZCBvcmlnaW4uAPhGb3IgdGhlIG9yaWdpbiBvdGhlciB0aGFuIFQ6OlJlamVjdE9yaWdpbiBhbmQgdGhlIGNoaWxkLWJvdW50eQEBY3VyYXRvciwgcGFyZW50IGJvdW50eSBtdXN0IGJlIGluIGFjdGl2ZSBzdGF0ZSwgZm9yIHRoaXMgY2FsbCB0bwkBd29yay4gV2UgYWxsb3cgY2hpbGQtYm91bnR5IGN1cmF0b3IgYW5kIFQ6OlJlamVjdE9yaWdpbiB0byBleGVjdXRlyHRoaXMgY2FsbCBpcnJlc3BlY3RpdmUgb2YgdGhlIHBhcmVudCBib3VudHkgc3RhdGUuANxJZiB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBieSB0aGUgYFJlamVjdE9yaWdpbmAgb3IgdGhlBQFwYXJlbnQgYm91bnR5IGN1cmF0b3IsIHdlIGFzc3VtZSB0aGF0IHRoZSBjaGlsZC1ib3VudHkgY3VyYXRvciBpcw0BbWFsaWNpb3VzIG9yIGluYWN0aXZlLiBBcyBhIHJlc3VsdCwgY2hpbGQtYm91bnR5IGN1cmF0b3IgZGVwb3NpdCBpcyBzbGFzaGVkLgAFAUlmIHRoZSBvcmlnaW4gaXMgdGhlIGNoaWxkLWJvdW50eSBjdXJhdG9yLCB3ZSB0YWtlIHRoaXMgYXMgYSBzaWduCQF0aGF0IHRoZXkgYXJlIHVuYWJsZSB0byBkbyB0aGVpciBqb2IsIGFuZCBhcmUgd2lsbGluZ2x5IGdpdmluZyB1cC4JAVdlIGNvdWxkIHNsYXNoIHRoZSBkZXBvc2l0LCBidXQgZm9yIG5vdyB3ZSBhbGxvdyB0aGVtIHRvIHVucmVzZXJ2ZREBdGhlaXIgZGVwb3NpdCBhbmQgZXhpdCB3aXRob3V0IGlzc3VlLiAoV2UgbWF5IHdhbnQgdG8gY2hhbmdlIHRoaXMgaWY4aXQgaXMgYWJ1c2VkLikABQFGaW5hbGx5LCB0aGUgb3JpZ2luIGNhbiBiZSBhbnlvbmUgaWZmIHRoZSBjaGlsZC1ib3VudHkgY3VyYXRvciBpcwkBImluYWN0aXZlIi4gRXhwaXJ5IHVwZGF0ZSBkdWUgb2YgcGFyZW50IGJvdW50eSBpcyB1c2VkIHRvIGVzdGltYXRlnGluYWN0aXZlIHN0YXRlIG9mIGNoaWxkLWJvdW50eSBjdXJhdG9yLgANAVRoaXMgYWxsb3dzIGFueW9uZSBpbiB0aGUgY29tbXVuaXR5IHRvIGNhbGwgb3V0IHRoYXQgYSBjaGlsZC1ib3VudHkJAWN1cmF0b3IgaXMgbm90IGRvaW5nIHRoZWlyIGR1ZSBkaWxpZ2VuY2UsIGFuZCB3ZSBzaG91bGQgcGljayBhIG5ld/hvbmUuIEluIHRoaXMgY2FzZSB0aGUgY2hpbGQtYm91bnR5IGN1cmF0b3IgZGVwb3NpdCBpcyBzbGFzaGVkLgABAVN0YXRlIG9mIGNoaWxkLWJvdW50eSBpcyBtb3ZlZCB0byBBZGRlZCBzdGF0ZSBvbiBzdWNjZXNzZnVsIGNhbGwsY29tcGxldGlvbi4AtC0gYHBhcmVudF9ib3VudHlfaWRgOiBJbmRleCBvZiBwYXJlbnQgYm91bnR5LqwtIGBjaGlsZF9ib3VudHlfaWRgOiBJbmRleCBvZiBjaGlsZCBib3VudHkuSGF3YXJkX2NoaWxkX2JvdW50eQwBQHBhcmVudF9ib3VudHlfaWTsASxCb3VudHlJbmRleAABPGNoaWxkX2JvdW50eV9pZOwBLEJvdW50eUluZGV4AAEsYmVuZWZpY2lhcnnFAQFQQWNjb3VudElkTG9va3VwT2Y8VD4ABESQQXdhcmQgY2hpbGQtYm91bnR5IHRvIGEgYmVuZWZpY2lhcnkuAPhUaGUgYmVuZWZpY2lhcnkgd2lsbCBiZSBhYmxlIHRvIGNsYWltIHRoZSBmdW5kcyBhZnRlciBhIGRlbGF5LgD8VGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgdGhlIHBhcmVudCBjdXJhdG9yIG9ydGN1cmF0b3Igb2YgdGhpcyBjaGlsZC1ib3VudHkuABEBUGFyZW50IGJvdW50eSBtdXN0IGJlIGluIGFjdGl2ZSBzdGF0ZSwgZm9yIHRoaXMgY2hpbGQtYm91bnR5IGNhbGwgdG8Ud29yay4ACQFDaGlsZC1ib3VudHkgbXVzdCBiZSBpbiBhY3RpdmUgc3RhdGUsIGZvciBwcm9jZXNzaW5nIHRoZSBjYWxsLiBBbmQRAXN0YXRlIG9mIGNoaWxkLWJvdW50eSBpcyBtb3ZlZCB0byAiUGVuZGluZ1BheW91dCIgb24gc3VjY2Vzc2Z1bCBjYWxsLGNvbXBsZXRpb24uALQtIGBwYXJlbnRfYm91bnR5X2lkYDogSW5kZXggb2YgcGFyZW50IGJvdW50eS6sLSBgY2hpbGRfYm91bnR5X2lkYDogSW5kZXggb2YgY2hpbGQgYm91bnR5LpQtIGBiZW5lZmljaWFyeWA6IEJlbmVmaWNpYXJ5IGFjY291bnQuSGNsYWltX2NoaWxkX2JvdW50eQgBQHBhcmVudF9ib3VudHlfaWTsASxCb3VudHlJbmRleAABPGNoaWxkX2JvdW50eV9pZOwBLEJvdW50eUluZGV4AAVABQFDbGFpbSB0aGUgcGF5b3V0IGZyb20gYW4gYXdhcmRlZCBjaGlsZC1ib3VudHkgYWZ0ZXIgcGF5b3V0IGRlbGF5LgDsVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG1heSBiZSBhbnkgc2lnbmVkIG9yaWdpbi4ABQFDYWxsIHdvcmtzIGluZGVwZW5kZW50IG9mIHBhcmVudCBib3VudHkgc3RhdGUsIE5vIG5lZWQgZm9yIHBhcmVudHRib3VudHkgdG8gYmUgaW4gYWN0aXZlIHN0YXRlLgARAVRoZSBCZW5lZmljaWFyeSBpcyBwYWlkIG91dCB3aXRoIGFncmVlZCBib3VudHkgdmFsdWUuIEN1cmF0b3IgZmVlIGlzlHBhaWQgJiBjdXJhdG9yIGRlcG9zaXQgaXMgdW5yZXNlcnZlZC4ABQFDaGlsZC1ib3VudHkgbXVzdCBiZSBpbiAiUGVuZGluZ1BheW91dCIgc3RhdGUsIGZvciBwcm9jZXNzaW5nIHRoZfxjYWxsLiBBbmQgaW5zdGFuY2Ugb2YgY2hpbGQtYm91bnR5IGlzIHJlbW92ZWQgZnJvbSB0aGUgc3RhdGUgb25sc3VjY2Vzc2Z1bCBjYWxsIGNvbXBsZXRpb24uALQtIGBwYXJlbnRfYm91bnR5X2lkYDogSW5kZXggb2YgcGFyZW50IGJvdW50eS6sLSBgY2hpbGRfYm91bnR5X2lkYDogSW5kZXggb2YgY2hpbGQgYm91bnR5LkhjbG9zZV9jaGlsZF9ib3VudHkIAUBwYXJlbnRfYm91bnR5X2lk7AEsQm91bnR5SW5kZXgAATxjaGlsZF9ib3VudHlfaWTsASxCb3VudHlJbmRleAAGWBEBQ2FuY2VsIGEgcHJvcG9zZWQgb3IgYWN0aXZlIGNoaWxkLWJvdW50eS4gQ2hpbGQtYm91bnR5IGFjY291bnQgZnVuZHMJAWFyZSB0cmFuc2ZlcnJlZCB0byBwYXJlbnQgYm91bnR5IGFjY291bnQuIFRoZSBjaGlsZC1ib3VudHkgY3VyYXRvcphkZXBvc2l0IG1heSBiZSB1bnJlc2VydmVkIGlmIHBvc3NpYmxlLgAJAVRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIGVpdGhlciBwYXJlbnQgY3VyYXRvciBvckhgVDo6UmVqZWN0T3JpZ2luYC4A8ElmIHRoZSBzdGF0ZSBvZiBjaGlsZC1ib3VudHkgaXMgYEFjdGl2ZWAsIGN1cmF0b3IgZGVwb3NpdCBpcyx1bnJlc2VydmVkLgD0SWYgdGhlIHN0YXRlIG9mIGNoaWxkLWJvdW50eSBpcyBgUGVuZGluZ1BheW91dGAsIGNhbGwgZmFpbHMgJnhyZXR1cm5zIGBQZW5kaW5nUGF5b3V0YCBlcnJvci4ADQFGb3IgdGhlIG9yaWdpbiBvdGhlciB0aGFuIFQ6OlJlamVjdE9yaWdpbiwgcGFyZW50IGJvdW50eSBtdXN0IGJlIGlu8GFjdGl2ZSBzdGF0ZSwgZm9yIHRoaXMgY2hpbGQtYm91bnR5IGNhbGwgdG8gd29yay4gRm9yIG9yaWdpbpBUOjpSZWplY3RPcmlnaW4gZXhlY3V0aW9uIGlzIGZvcmNlZC4AAQFJbnN0YW5jZSBvZiBjaGlsZC1ib3VudHkgaXMgcmVtb3ZlZCBmcm9tIHRoZSBzdGF0ZSBvbiBzdWNjZXNzZnVsQGNhbGwgY29tcGxldGlvbi4AtC0gYHBhcmVudF9ib3VudHlfaWRgOiBJbmRleCBvZiBwYXJlbnQgYm91bnR5LqwtIGBjaGlsZF9ib3VudHlfaWRgOiBJbmRleCBvZiBjaGlsZCBib3VudHkuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLvUCDJBwYWxsZXRfZWxlY3Rpb25fcHJvdmlkZXJfbXVsdGlfcGhhc2UYcGFsbGV0EENhbGwEBFQAARQ8c3VibWl0X3Vuc2lnbmVkCAEwcmF3X3NvbHV0aW9u+QIBsEJveDxSYXdTb2x1dGlvbjxTb2x1dGlvbk9mPFQ6Ok1pbmVyQ29uZmlnPj4+AAEcd2l0bmVzc80DAVhTb2x1dGlvbk9yU25hcHNob3RTaXplAAA4pFN1Ym1pdCBhIHNvbHV0aW9uIGZvciB0aGUgdW5zaWduZWQgcGhhc2UuAMhUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvIHRoaXMgY2FsbCBtdXN0IGJlIF9fbm9uZV9fLgA9AVRoaXMgc3VibWlzc2lvbiBpcyBjaGVja2VkIG9uIHRoZSBmbHkuIE1vcmVvdmVyLCB0aGlzIHVuc2lnbmVkIHNvbHV0aW9uIGlzIG9ubHlVAXZhbGlkYXRlZCB3aGVuIHN1Ym1pdHRlZCB0byB0aGUgcG9vbCBmcm9tIHRoZSAqKmxvY2FsKiogbm9kZS4gRWZmZWN0aXZlbHksIHRoaXMgbWVhbnNdAXRoYXQgb25seSBhY3RpdmUgdmFsaWRhdG9ycyBjYW4gc3VibWl0IHRoaXMgdHJhbnNhY3Rpb24gd2hlbiBhdXRob3JpbmcgYSBibG9jayAoc2ltaWxhckB0byBhbiBpbmhlcmVudCkuAFkBVG8gcHJldmVudCBhbnkgaW5jb3JyZWN0IHNvbHV0aW9uIChhbmQgdGh1cyB3YXN0ZWQgdGltZS93ZWlnaHQpLCB0aGlzIHRyYW5zYWN0aW9uIHdpbGxNAXBhbmljIGlmIHRoZSBzb2x1dGlvbiBzdWJtaXR0ZWQgYnkgdGhlIHZhbGlkYXRvciBpcyBpbnZhbGlkIGluIGFueSB3YXksIGVmZmVjdGl2ZWx5nHB1dHRpbmcgdGhlaXIgYXV0aG9yaW5nIHJld2FyZCBhdCByaXNrLgDgTm8gZGVwb3NpdCBvciByZXdhcmQgaXMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgc3VibWlzc2lvbi5sc2V0X21pbmltdW1fdW50cnVzdGVkX3Njb3JlBAFAbWF5YmVfbmV4dF9zY29yZdEDAVRPcHRpb248RWxlY3Rpb25TY29yZT4AARSwU2V0IGEgbmV3IHZhbHVlIGZvciBgTWluaW11bVVudHJ1c3RlZFNjb3JlYC4A2ERpc3BhdGNoIG9yaWdpbiBtdXN0IGJlIGFsaWduZWQgd2l0aCBgVDo6Rm9yY2VPcmlnaW5gLgDwVGhpcyBjaGVjayBjYW4gYmUgdHVybmVkIG9mZiBieSBzZXR0aW5nIHRoZSB2YWx1ZSB0byBgTm9uZWAudHNldF9lbWVyZ2VuY3lfZWxlY3Rpb25fcmVzdWx0BAEgc3VwcG9ydHPVAwFYU3VwcG9ydHM8VDo6QWNjb3VudElkPgACIFkBU2V0IGEgc29sdXRpb24gaW4gdGhlIHF1ZXVlLCB0byBiZSBoYW5kZWQgb3V0IHRvIHRoZSBjbGllbnQgb2YgdGhpcyBwYWxsZXQgaW4gdGhlIG5leHSIY2FsbCB0byBgRWxlY3Rpb25Qcm92aWRlcjo6ZWxlY3RgLgBFAVRoaXMgY2FuIG9ubHkgYmUgc2V0IGJ5IGBUOjpGb3JjZU9yaWdpbmAsIGFuZCBvbmx5IHdoZW4gdGhlIHBoYXNlIGlzIGBFbWVyZ2VuY3lgLgBhAVRoZSBzb2x1dGlvbiBpcyBub3QgY2hlY2tlZCBmb3IgYW55IGZlYXNpYmlsaXR5IGFuZCBpcyBhc3N1bWVkIHRvIGJlIHRydXN0d29ydGh5LCBhcyBhbnlRAWZlYXNpYmlsaXR5IGNoZWNrIGl0c2VsZiBjYW4gaW4gcHJpbmNpcGxlIGNhdXNlIHRoZSBlbGVjdGlvbiBwcm9jZXNzIHRvIGZhaWwgKGR1ZSB0b2htZW1vcnkvd2VpZ2h0IGNvbnN0cmFpbnMpLhhzdWJtaXQEATByYXdfc29sdXRpb275AgGwQm94PFJhd1NvbHV0aW9uPFNvbHV0aW9uT2Y8VDo6TWluZXJDb25maWc+Pj4AAyScU3VibWl0IGEgc29sdXRpb24gZm9yIHRoZSBzaWduZWQgcGhhc2UuANBUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvIHRoaXMgY2FsbCBtdXN0IGJlIF9fc2lnbmVkX18uAF0BVGhlIHNvbHV0aW9uIGlzIHBvdGVudGlhbGx5IHF1ZXVlZCwgYmFzZWQgb24gdGhlIGNsYWltZWQgc2NvcmUgYW5kIHByb2Nlc3NlZCBhdCB0aGUgZW5kUG9mIHRoZSBzaWduZWQgcGhhc2UuAF0BQSBkZXBvc2l0IGlzIHJlc2VydmVkIGFuZCByZWNvcmRlZCBmb3IgdGhlIHNvbHV0aW9uLiBCYXNlZCBvbiB0aGUgb3V0Y29tZSwgdGhlIHNvbHV0aW9uFQFtaWdodCBiZSByZXdhcmRlZCwgc2xhc2hlZCwgb3IgZ2V0IGFsbCBvciBhIHBhcnQgb2YgdGhlIGRlcG9zaXQgYmFjay5MZ292ZXJuYW5jZV9mYWxsYmFjawgBQG1heWJlX21heF92b3RlcnNhAgEsT3B0aW9uPHUzMj4AAURtYXliZV9tYXhfdGFyZ2V0c2ECASxPcHRpb248dTMyPgAEEIBUcmlnZ2VyIHRoZSBnb3Zlcm5hbmNlIGZhbGxiYWNrLgBJAVRoaXMgY2FuIG9ubHkgYmUgY2FsbGVkIHdoZW4gW2BQaGFzZTo6RW1lcmdlbmN5YF0gaXMgZW5hYmxlZCwgYXMgYW4gYWx0ZXJuYXRpdmUgdG/AY2FsbGluZyBbYENhbGw6OnNldF9lbWVyZ2VuY3lfZWxlY3Rpb25fcmVzdWx0YF0uBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLvkCCJBwYWxsZXRfZWxlY3Rpb25fcHJvdmlkZXJfbXVsdGlfcGhhc2UsUmF3U29sdXRpb24EBFMB/QIADAEgc29sdXRpb279AgEEUwABFHNjb3JlyQMBNEVsZWN0aW9uU2NvcmUAARRyb3VuZBABDHUzMgAA/QIINHBhc2VvX3J1bnRpbWVUTnBvc0NvbXBhY3RTb2x1dGlvbjE2AABAARh2b3RlczEBAwAAARh2b3RlczINAwAAARh2b3RlczMhAwAAARh2b3RlczQtAwAAARh2b3RlczU5AwAAARh2b3RlczZFAwAAARh2b3RlczdRAwAAARh2b3RlczhdAwAAARh2b3RlczlpAwAAARx2b3RlczEwdQMAAAEcdm90ZXMxMYEDAAABHHZvdGVzMTKNAwAAARx2b3RlczEzmQMAAAEcdm90ZXMxNKUDAAABHHZvdGVzMTWxAwAAARx2b3RlczE2vQMAAAABAwAAAgUDAAUDAAAECOwJAwAJAwAABm0BAA0DAAACEQMAEQMAAAQM7BUDCQMAFQMAAAQICQMZAwAZAwAABh0DAB0DDDRzcF9hcml0aG1ldGljKHBlcl90aGluZ3MYUGVyVTE2AAAEAG0BAQx1MTYAACEDAAACJQMAJQMAAAQM7CkDCQMAKQMAAAMCAAAAFQMALQMAAAIxAwAxAwAABAzsNQMJAwA1AwAAAwMAAAAVAwA5AwAAAj0DAD0DAAAEDOxBAwkDAEEDAAADBAAAABUDAEUDAAACSQMASQMAAAQM7E0DCQMATQMAAAMFAAAAFQMAUQMAAAJVAwBVAwAABAzsWQMJAwBZAwAAAwYAAAAVAwBdAwAAAmEDAGEDAAAEDOxlAwkDAGUDAAADBwAAABUDAGkDAAACbQMAbQMAAAQM7HEDCQMAcQMAAAMIAAAAFQMAdQMAAAJ5AwB5AwAABAzsfQMJAwB9AwAAAwkAAAAVAwCBAwAAAoUDAIUDAAAEDOyJAwkDAIkDAAADCgAAABUDAI0DAAACkQMAkQMAAAQM7JUDCQMAlQMAAAMLAAAAFQMAmQMAAAKdAwCdAwAABAzsoQMJAwChAwAAAwwAAAAVAwClAwAAAqkDAKkDAAAEDOytAwkDAK0DAAADDQAAABUDALEDAAACtQMAtQMAAAQM7LkDCQMAuQMAAAMOAAAAFQMAvQMAAALBAwDBAwAABAzsxQMJAwDFAwAAAw8AAAAVAwDJAwhEc3BfbnBvc19lbGVjdGlvbnM0RWxlY3Rpb25TY29yZQAADAE0bWluaW1hbF9zdGFrZRgBPEV4dGVuZGVkQmFsYW5jZQABJHN1bV9zdGFrZRgBPEV4dGVuZGVkQmFsYW5jZQABRHN1bV9zdGFrZV9zcXVhcmVkGAE8RXh0ZW5kZWRCYWxhbmNlAADNAwiQcGFsbGV0X2VsZWN0aW9uX3Byb3ZpZGVyX211bHRpX3BoYXNlWFNvbHV0aW9uT3JTbmFwc2hvdFNpemUAAAgBGHZvdGVyc+wBDHUzMgABHHRhcmdldHPsAQx1MzIAANEDBBhPcHRpb24EBFQByQMBCBBOb25lAAAAEFNvbWUEAMkDAAABAADVAwAAAtkDANkDAAAECADdAwDdAwhEc3BfbnBvc19lbGVjdGlvbnMcU3VwcG9ydAQkQWNjb3VudElkAQAACAEUdG90YWwYATxFeHRlbmRlZEJhbGFuY2UAARh2b3RlcnPhAwGEVmVjPChBY2NvdW50SWQsIEV4dGVuZGVkQmFsYW5jZSk+AADhAwAAAuUDAOUDAAAECAAYAOkDDEBwYWxsZXRfYmFnc19saXN0GHBhbGxldBBDYWxsCARUAARJAAEMFHJlYmFnBAEoZGlzbG9jYXRlZMUBAVBBY2NvdW50SWRMb29rdXBPZjxUPgAAKFkBRGVjbGFyZSB0aGF0IHNvbWUgYGRpc2xvY2F0ZWRgIGFjY291bnQgaGFzLCB0aHJvdWdoIHJld2FyZHMgb3IgcGVuYWx0aWVzLCBzdWZmaWNpZW50bHlRAWNoYW5nZWQgaXRzIHNjb3JlIHRoYXQgaXQgc2hvdWxkIHByb3Blcmx5IGZhbGwgaW50byBhIGRpZmZlcmVudCBiYWcgdGhhbiBpdHMgY3VycmVudBBvbmUuAB0BQW55b25lIGNhbiBjYWxsIHRoaXMgZnVuY3Rpb24gYWJvdXQgYW55IHBvdGVudGlhbGx5IGRpc2xvY2F0ZWQgYWNjb3VudC4ASQFXaWxsIGFsd2F5cyB1cGRhdGUgdGhlIHN0b3JlZCBzY29yZSBvZiBgZGlzbG9jYXRlZGAgdG8gdGhlIGNvcnJlY3Qgc2NvcmUsIGJhc2VkIG9uQGBTY29yZVByb3ZpZGVyYC4A1ElmIGBkaXNsb2NhdGVkYCBkb2VzIG5vdCBleGlzdHMsIGl0IHJldHVybnMgYW4gZXJyb3IuPHB1dF9pbl9mcm9udF9vZgQBHGxpZ2h0ZXLFAQFQQWNjb3VudElkTG9va3VwT2Y8VD4AASjQTW92ZSB0aGUgY2FsbGVyJ3MgSWQgZGlyZWN0bHkgaW4gZnJvbnQgb2YgYGxpZ2h0ZXJgLgBZAVRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfIGFuZCBjYW4gb25seSBiZSBjYWxsZWQgYnkgdGhlIElkIG9mNQF0aGUgYWNjb3VudCBnb2luZyBpbiBmcm9udCBvZiBgbGlnaHRlcmAuIEZlZSBpcyBwYXllZCBieSB0aGUgb3JpZ2luIHVuZGVyIGFsbDhjaXJjdW1zdGFuY2VzLgA4T25seSB3b3JrcyBpZjoAlC0gYm90aCBub2RlcyBhcmUgd2l0aGluIHRoZSBzYW1lIGJhZyzQLSBhbmQgYG9yaWdpbmAgaGFzIGEgZ3JlYXRlciBgU2NvcmVgIHRoYW4gYGxpZ2h0ZXJgLlRwdXRfaW5fZnJvbnRfb2Zfb3RoZXIIARxoZWF2aWVyxQEBUEFjY291bnRJZExvb2t1cE9mPFQ+AAEcbGlnaHRlcsUBAVBBY2NvdW50SWRMb29rdXBPZjxUPgACDBEBU2FtZSBhcyBbYFBhbGxldDo6cHV0X2luX2Zyb250X29mYF0sIGJ1dCBpdCBjYW4gYmUgY2FsbGVkIGJ5IGFueW9uZS4AyEZlZSBpcyBwYWlkIGJ5IHRoZSBvcmlnaW4gdW5kZXIgYWxsIGNpcmN1bXN0YW5jZXMuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLu0DDFxwYWxsZXRfbm9taW5hdGlvbl9wb29scxhwYWxsZXQQQ2FsbAQEVAABaBBqb2luCAEYYW1vdW50/AEwQmFsYW5jZU9mPFQ+AAEccG9vbF9pZBABGFBvb2xJZAAAKEUBU3Rha2UgZnVuZHMgd2l0aCBhIHBvb2wuIFRoZSBhbW91bnQgdG8gYm9uZCBpcyB0cmFuc2ZlcnJlZCBmcm9tIHRoZSBtZW1iZXIgdG8gdGhl3HBvb2xzIGFjY291bnQgYW5kIGltbWVkaWF0ZWx5IGluY3JlYXNlcyB0aGUgcG9vbHMgYm9uZC4AGCMgTm90ZQDMKiBBbiBhY2NvdW50IGNhbiBvbmx5IGJlIGEgbWVtYmVyIG9mIGEgc2luZ2xlIHBvb2wu2CogQW4gYWNjb3VudCBjYW5ub3Qgam9pbiB0aGUgc2FtZSBwb29sIG11bHRpcGxlIHRpbWVzLkEBKiBUaGlzIGNhbGwgd2lsbCAqbm90KiBkdXN0IHRoZSBtZW1iZXIgYWNjb3VudCwgc28gdGhlIG1lbWJlciBtdXN0IGhhdmUgYXQgbGVhc3TIICBgZXhpc3RlbnRpYWwgZGVwb3NpdCArIGFtb3VudGAgaW4gdGhlaXIgYWNjb3VudC7QKiBPbmx5IGEgcG9vbCB3aXRoIFtgUG9vbFN0YXRlOjpPcGVuYF0gY2FuIGJlIGpvaW5lZChib25kX2V4dHJhBAEUZXh0cmHxAwFcQm9uZEV4dHJhPEJhbGFuY2VPZjxUPj4AARxFAUJvbmQgYGV4dHJhYCBtb3JlIGZ1bmRzIGZyb20gYG9yaWdpbmAgaW50byB0aGUgcG9vbCB0byB3aGljaCB0aGV5IGFscmVhZHkgYmVsb25nLgBJAUFkZGl0aW9uYWwgZnVuZHMgY2FuIGNvbWUgZnJvbSBlaXRoZXIgdGhlIGZyZWUgYmFsYW5jZSBvZiB0aGUgYWNjb3VudCwgb2YgZnJvbSB0aGWcYWNjdW11bGF0ZWQgcmV3YXJkcywgc2VlIFtgQm9uZEV4dHJhYF0uAD0BQm9uZGluZyBleHRyYSBmdW5kcyBpbXBsaWVzIGFuIGF1dG9tYXRpYyBwYXlvdXQgb2YgYWxsIHBlbmRpbmcgcmV3YXJkcyBhcyB3ZWxsLgkBU2VlIGBib25kX2V4dHJhX290aGVyYCB0byBib25kIHBlbmRpbmcgcmV3YXJkcyBvZiBgb3RoZXJgIG1lbWJlcnMuMGNsYWltX3BheW91dAACIFUBQSBib25kZWQgbWVtYmVyIGNhbiB1c2UgdGhpcyB0byBjbGFpbSB0aGVpciBwYXlvdXQgYmFzZWQgb24gdGhlIHJld2FyZHMgdGhhdCB0aGUgcG9vbGEBaGFzIGFjY3VtdWxhdGVkIHNpbmNlIHRoZWlyIGxhc3QgY2xhaW1lZCBwYXlvdXQgKE9SIHNpbmNlIGpvaW5pbmcgaWYgdGhpcyBpcyB0aGVpciBmaXJzdD0BdGltZSBjbGFpbWluZyByZXdhcmRzKS4gVGhlIHBheW91dCB3aWxsIGJlIHRyYW5zZmVycmVkIHRvIHRoZSBtZW1iZXIncyBhY2NvdW50LgBJAVRoZSBtZW1iZXIgd2lsbCBlYXJuIHJld2FyZHMgcHJvIHJhdGEgYmFzZWQgb24gdGhlIG1lbWJlcnMgc3Rha2UgdnMgdGhlIHN1bSBvZiB0aGXQbWVtYmVycyBpbiB0aGUgcG9vbHMgc3Rha2UuIFJld2FyZHMgZG8gbm90ICJleHBpcmUiLgBBAVNlZSBgY2xhaW1fcGF5b3V0X290aGVyYCB0byBjbGFpbSByZXdhcmRzIG9uIGJlaGFsZiBvZiBzb21lIGBvdGhlcmAgcG9vbCBtZW1iZXIuGHVuYm9uZAgBOG1lbWJlcl9hY2NvdW50xQEBUEFjY291bnRJZExvb2t1cE9mPFQ+AAFAdW5ib25kaW5nX3BvaW50c/wBMEJhbGFuY2VPZjxUPgADfEUBVW5ib25kIHVwIHRvIGB1bmJvbmRpbmdfcG9pbnRzYCBvZiB0aGUgYG1lbWJlcl9hY2NvdW50YCdzIGZ1bmRzIGZyb20gdGhlIHBvb2wuIEl0RQFpbXBsaWNpdGx5IGNvbGxlY3RzIHRoZSByZXdhcmRzIG9uZSBsYXN0IHRpbWUsIHNpbmNlIG5vdCBkb2luZyBzbyB3b3VsZCBtZWFuIHNvbWVscmV3YXJkcyB3b3VsZCBiZSBmb3JmZWl0ZWQuAE0BVW5kZXIgY2VydGFpbiBjb25kaXRpb25zLCB0aGlzIGNhbGwgY2FuIGJlIGRpc3BhdGNoZWQgcGVybWlzc2lvbmxlc3NseSAoaS5lLiBieSBhbnkkYWNjb3VudCkuAKwjIENvbmRpdGlvbnMgZm9yIGEgcGVybWlzc2lvbmxlc3MgZGlzcGF0Y2guAF0BKiBUaGUgcG9vbCBpcyBibG9ja2VkIGFuZCB0aGUgY2FsbGVyIGlzIGVpdGhlciB0aGUgcm9vdCBvciBib3VuY2VyLiBUaGlzIGlzIHJlZmVyZWVkIHRvMCAgYXMgYSBraWNrLvQqIFRoZSBwb29sIGlzIGRlc3Ryb3lpbmcgYW5kIHRoZSBtZW1iZXIgaXMgbm90IHRoZSBkZXBvc2l0b3IuVQEqIFRoZSBwb29sIGlzIGRlc3Ryb3lpbmcsIHRoZSBtZW1iZXIgaXMgdGhlIGRlcG9zaXRvciBhbmQgbm8gb3RoZXIgbWVtYmVycyBhcmUgaW4gdGhlHCAgcG9vbC4AEQEjIyBDb25kaXRpb25zIGZvciBwZXJtaXNzaW9uZWQgZGlzcGF0Y2ggKGkuZS4gdGhlIGNhbGxlciBpcyBhbHNvIHRoZUhgbWVtYmVyX2FjY291bnRgKToAiCogVGhlIGNhbGxlciBpcyBub3QgdGhlIGRlcG9zaXRvci5VASogVGhlIGNhbGxlciBpcyB0aGUgZGVwb3NpdG9yLCB0aGUgcG9vbCBpcyBkZXN0cm95aW5nIGFuZCBubyBvdGhlciBtZW1iZXJzIGFyZSBpbiB0aGUcICBwb29sLgAYIyBOb3RlAB0BSWYgdGhlcmUgYXJlIHRvbyBtYW55IHVubG9ja2luZyBjaHVua3MgdG8gdW5ib25kIHdpdGggdGhlIHBvb2wgYWNjb3VudCxRAVtgQ2FsbDo6cG9vbF93aXRoZHJhd191bmJvbmRlZGBdIGNhbiBiZSBjYWxsZWQgdG8gdHJ5IGFuZCBtaW5pbWl6ZSB1bmxvY2tpbmcgY2h1bmtzLlkBVGhlIFtgU3Rha2luZ0ludGVyZmFjZTo6dW5ib25kYF0gd2lsbCBpbXBsaWNpdGx5IGNhbGwgW2BDYWxsOjpwb29sX3dpdGhkcmF3X3VuYm9uZGVkYF1VAXRvIHRyeSB0byBmcmVlIGNodW5rcyBpZiBuZWNlc3NhcnkgKGllLiBpZiB1bmJvdW5kIHdhcyBjYWxsZWQgYW5kIG5vIHVubG9ja2luZyBjaHVua3NhAWFyZSBhdmFpbGFibGUpLiBIb3dldmVyLCBpdCBtYXkgbm90IGJlIHBvc3NpYmxlIHRvIHJlbGVhc2UgdGhlIGN1cnJlbnQgdW5sb2NraW5nIGNodW5rcyxdAWluIHdoaWNoIGNhc2UsIHRoZSByZXN1bHQgb2YgdGhpcyBjYWxsIHdpbGwgbGlrZWx5IGJlIHRoZSBgTm9Nb3JlQ2h1bmtzYCBlcnJvciBmcm9tIHRoZTxzdGFraW5nIHN5c3RlbS5YcG9vbF93aXRoZHJhd191bmJvbmRlZAgBHHBvb2xfaWQQARhQb29sSWQAAUhudW1fc2xhc2hpbmdfc3BhbnMQAQx1MzIABBhVAUNhbGwgYHdpdGhkcmF3X3VuYm9uZGVkYCBmb3IgdGhlIHBvb2xzIGFjY291bnQuIFRoaXMgY2FsbCBjYW4gYmUgbWFkZSBieSBhbnkgYWNjb3VudC4AQQFUaGlzIGlzIHVzZWZ1bCBpZiB0aGVyZSBhcmUgdG9vIG1hbnkgdW5sb2NraW5nIGNodW5rcyB0byBjYWxsIGB1bmJvbmRgLCBhbmQgc29tZWEBY2FuIGJlIGNsZWFyZWQgYnkgd2l0aGRyYXdpbmcuIEluIHRoZSBjYXNlIHRoZXJlIGFyZSB0b28gbWFueSB1bmxvY2tpbmcgY2h1bmtzLCB0aGUgdXNlclEBd291bGQgcHJvYmFibHkgc2VlIGFuIGVycm9yIGxpa2UgYE5vTW9yZUNodW5rc2AgZW1pdHRlZCBmcm9tIHRoZSBzdGFraW5nIHN5c3RlbSB3aGVuXHRoZXkgYXR0ZW1wdCB0byB1bmJvbmQuRHdpdGhkcmF3X3VuYm9uZGVkCAE4bWVtYmVyX2FjY291bnTFAQFQQWNjb3VudElkTG9va3VwT2Y8VD4AAUhudW1fc2xhc2hpbmdfc3BhbnMQAQx1MzIABVhVAVdpdGhkcmF3IHVuYm9uZGVkIGZ1bmRzIGZyb20gYG1lbWJlcl9hY2NvdW50YC4gSWYgbm8gYm9uZGVkIGZ1bmRzIGNhbiBiZSB1bmJvbmRlZCwgYW5IZXJyb3IgaXMgcmV0dXJuZWQuAE0BVW5kZXIgY2VydGFpbiBjb25kaXRpb25zLCB0aGlzIGNhbGwgY2FuIGJlIGRpc3BhdGNoZWQgcGVybWlzc2lvbmxlc3NseSAoaS5lLiBieSBhbnkkYWNjb3VudCkuAKgjIENvbmRpdGlvbnMgZm9yIGEgcGVybWlzc2lvbmxlc3MgZGlzcGF0Y2gACQEqIFRoZSBwb29sIGlzIGluIGRlc3Ryb3kgbW9kZSBhbmQgdGhlIHRhcmdldCBpcyBub3QgdGhlIGRlcG9zaXRvci4xASogVGhlIHRhcmdldCBpcyB0aGUgZGVwb3NpdG9yIGFuZCB0aGV5IGFyZSB0aGUgb25seSBtZW1iZXIgaW4gdGhlIHN1YiBwb29scy4NASogVGhlIHBvb2wgaXMgYmxvY2tlZCBhbmQgdGhlIGNhbGxlciBpcyBlaXRoZXIgdGhlIHJvb3Qgb3IgYm91bmNlci4AmCMgQ29uZGl0aW9ucyBmb3IgcGVybWlzc2lvbmVkIGRpc3BhdGNoAOgqIFRoZSBjYWxsZXIgaXMgdGhlIHRhcmdldCBhbmQgdGhleSBhcmUgbm90IHRoZSBkZXBvc2l0b3IuABgjIE5vdGUA9C0gSWYgdGhlIHRhcmdldCBpcyB0aGUgZGVwb3NpdG9yLCB0aGUgcG9vbCB3aWxsIGJlIGRlc3Ryb3llZC5hAS0gSWYgdGhlIHBvb2wgaGFzIGFueSBwZW5kaW5nIHNsYXNoLCB3ZSBhbHNvIHRyeSB0byBzbGFzaCB0aGUgbWVtYmVyIGJlZm9yZSBsZXR0aW5nIHRoZW1dAXdpdGhkcmF3LiBUaGlzIGNhbGN1bGF0aW9uIGFkZHMgc29tZSB3ZWlnaHQgb3ZlcmhlYWQgYW5kIGlzIG9ubHkgZGVmZW5zaXZlLiBJbiByZWFsaXR5LFUBcG9vbCBzbGFzaGVzIG11c3QgaGF2ZSBiZWVuIGFscmVhZHkgYXBwbGllZCB2aWEgcGVybWlzc2lvbmxlc3MgW2BDYWxsOjphcHBseV9zbGFzaGBdLhhjcmVhdGUQARhhbW91bnT8ATBCYWxhbmNlT2Y8VD4AARByb290xQEBUEFjY291bnRJZExvb2t1cE9mPFQ+AAEkbm9taW5hdG9yxQEBUEFjY291bnRJZExvb2t1cE9mPFQ+AAEcYm91bmNlcsUBAVBBY2NvdW50SWRMb29rdXBPZjxUPgAGRHRDcmVhdGUgYSBuZXcgZGVsZWdhdGlvbiBwb29sLgAsIyBBcmd1bWVudHMAVQEqIGBhbW91bnRgIC0gVGhlIGFtb3VudCBvZiBmdW5kcyB0byBkZWxlZ2F0ZSB0byB0aGUgcG9vbC4gVGhpcyBhbHNvIGFjdHMgb2YgYSBzb3J0IG9mTQEgIGRlcG9zaXQgc2luY2UgdGhlIHBvb2xzIGNyZWF0b3IgY2Fubm90IGZ1bGx5IHVuYm9uZCBmdW5kcyB1bnRpbCB0aGUgcG9vbCBpcyBiZWluZzAgIGRlc3Ryb3llZC5RASogYGluZGV4YCAtIEEgZGlzYW1iaWd1YXRpb24gaW5kZXggZm9yIGNyZWF0aW5nIHRoZSBhY2NvdW50LiBMaWtlbHkgb25seSB1c2VmdWwgd2hlbsAgIGNyZWF0aW5nIG11bHRpcGxlIHBvb2xzIGluIHRoZSBzYW1lIGV4dHJpbnNpYy7UKiBgcm9vdGAgLSBUaGUgYWNjb3VudCB0byBzZXQgYXMgW2BQb29sUm9sZXM6OnJvb3RgXS4NASogYG5vbWluYXRvcmAgLSBUaGUgYWNjb3VudCB0byBzZXQgYXMgdGhlIFtgUG9vbFJvbGVzOjpub21pbmF0b3JgXS78KiBgYm91bmNlcmAgLSBUaGUgYWNjb3VudCB0byBzZXQgYXMgdGhlIFtgUG9vbFJvbGVzOjpib3VuY2VyYF0uABgjIE5vdGUAYQFJbiBhZGRpdGlvbiB0byBgYW1vdW50YCwgdGhlIGNhbGxlciB3aWxsIHRyYW5zZmVyIHRoZSBleGlzdGVudGlhbCBkZXBvc2l0OyBzbyB0aGUgY2FsbGVyDQFuZWVkcyBhdCBoYXZlIGF0IGxlYXN0IGBhbW91bnQgKyBleGlzdGVudGlhbF9kZXBvc2l0YCB0cmFuc2ZlcmFibGUuTGNyZWF0ZV93aXRoX3Bvb2xfaWQUARhhbW91bnT8ATBCYWxhbmNlT2Y8VD4AARByb290xQEBUEFjY291bnRJZExvb2t1cE9mPFQ+AAEkbm9taW5hdG9yxQEBUEFjY291bnRJZExvb2t1cE9mPFQ+AAEcYm91bmNlcsUBAVBBY2NvdW50SWRMb29rdXBPZjxUPgABHHBvb2xfaWQQARhQb29sSWQABxjsQ3JlYXRlIGEgbmV3IGRlbGVnYXRpb24gcG9vbCB3aXRoIGEgcHJldmlvdXNseSB1c2VkIHBvb2wgaWQALCMgQXJndW1lbnRzAJhzYW1lIGFzIGBjcmVhdGVgIHdpdGggdGhlIGluY2x1c2lvbiBvZngqIGBwb29sX2lkYCAtIGBBIHZhbGlkIFBvb2xJZC4gbm9taW5hdGUIARxwb29sX2lkEAEYUG9vbElkAAEodmFsaWRhdG9yc9EBAURWZWM8VDo6QWNjb3VudElkPgAIMHxOb21pbmF0ZSBvbiBiZWhhbGYgb2YgdGhlIHBvb2wuAEUBVGhlIGRpc3BhdGNoIG9yaWdpbiBvZiB0aGlzIGNhbGwgbXVzdCBiZSBzaWduZWQgYnkgdGhlIHBvb2wgbm9taW5hdG9yIG9yIHRoZSBwb29sKHJvb3Qgcm9sZS4ASQFUaGlzIGRpcmVjdGx5IGZvcndhcmQgdGhlIGNhbGwgdG8gdGhlIHN0YWtpbmcgcGFsbGV0LCBvbiBiZWhhbGYgb2YgdGhlIHBvb2wgYm9uZGVkIGFjY291bnQuABgjIE5vdGUAXQFJbiBhZGRpdGlvbiB0byBhIGByb290YCBvciBgbm9taW5hdG9yYCByb2xlIG9mIGBvcmlnaW5gLCBwb29sJ3MgZGVwb3NpdG9yIG5lZWRzIHRvIGhhdmX4YXQgbGVhc3QgYGRlcG9zaXRvcl9taW5fYm9uZGAgaW4gdGhlIHBvb2wgdG8gc3RhcnQgbm9taW5hdGluZy4kc2V0X3N0YXRlCAEccG9vbF9pZBABGFBvb2xJZAABFHN0YXRl9QMBJFBvb2xTdGF0ZQAJKHRTZXQgYSBuZXcgc3RhdGUgZm9yIHRoZSBwb29sLgBVAUlmIGEgcG9vbCBpcyBhbHJlYWR5IGluIHRoZSBgRGVzdHJveWluZ2Agc3RhdGUsIHRoZW4gdW5kZXIgbm8gY29uZGl0aW9uIGNhbiBpdHMgc3RhdGU0Y2hhbmdlIGFnYWluLgDAVGhlIGRpc3BhdGNoIG9yaWdpbiBvZiB0aGlzIGNhbGwgbXVzdCBiZSBlaXRoZXI6ANwxLiBzaWduZWQgYnkgdGhlIGJvdW5jZXIsIG9yIHRoZSByb290IHJvbGUgb2YgdGhlIHBvb2wsXQEyLiBpZiB0aGUgcG9vbCBjb25kaXRpb25zIHRvIGJlIG9wZW4gYXJlIE5PVCBtZXQgKGFzIGRlc2NyaWJlZCBieSBgb2tfdG9fYmVfb3BlbmApLCBhbmQ5ASAgIHRoZW4gdGhlIHN0YXRlIG9mIHRoZSBwb29sIGNhbiBiZSBwZXJtaXNzaW9ubGVzc2x5IGNoYW5nZWQgdG8gYERlc3Ryb3lpbmdgLjBzZXRfbWV0YWRhdGEIARxwb29sX2lkEAEYUG9vbElkAAEgbWV0YWRhdGE4ARxWZWM8dTg+AAoQgFNldCBhIG5ldyBtZXRhZGF0YSBmb3IgdGhlIHBvb2wuAF0BVGhlIGRpc3BhdGNoIG9yaWdpbiBvZiB0aGlzIGNhbGwgbXVzdCBiZSBzaWduZWQgYnkgdGhlIGJvdW5jZXIsIG9yIHRoZSByb290IHJvbGUgb2YgdGhlFHBvb2wuLHNldF9jb25maWdzGAE0bWluX2pvaW5fYm9uZPkDAVhDb25maWdPcDxCYWxhbmNlT2Y8VD4+AAE8bWluX2NyZWF0ZV9ib25k+QMBWENvbmZpZ09wPEJhbGFuY2VPZjxUPj4AASRtYXhfcG9vbHP9AwE0Q29uZmlnT3A8dTMyPgABLG1heF9tZW1iZXJz/QMBNENvbmZpZ09wPHUzMj4AAVBtYXhfbWVtYmVyc19wZXJfcG9vbP0DATRDb25maWdPcDx1MzI+AAFUZ2xvYmFsX21heF9jb21taXNzaW9uAQQBRENvbmZpZ09wPFBlcmJpbGw+AAssQQFVcGRhdGUgY29uZmlndXJhdGlvbnMgZm9yIHRoZSBub21pbmF0aW9uIHBvb2xzLiBUaGUgb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZWBbYENvbmZpZzo6QWRtaW5PcmlnaW5gXS4ALCMgQXJndW1lbnRzAKAqIGBtaW5fam9pbl9ib25kYCAtIFNldCBbYE1pbkpvaW5Cb25kYF0usCogYG1pbl9jcmVhdGVfYm9uZGAgLSBTZXQgW2BNaW5DcmVhdGVCb25kYF0uhCogYG1heF9wb29sc2AgLSBTZXQgW2BNYXhQb29sc2BdLqQqIGBtYXhfbWVtYmVyc2AgLSBTZXQgW2BNYXhQb29sTWVtYmVyc2BdLuQqIGBtYXhfbWVtYmVyc19wZXJfcG9vbGAgLSBTZXQgW2BNYXhQb29sTWVtYmVyc1BlclBvb2xgXS7gKiBgZ2xvYmFsX21heF9jb21taXNzaW9uYCAtIFNldCBbYEdsb2JhbE1heENvbW1pc3Npb25gXS4wdXBkYXRlX3JvbGVzEAEccG9vbF9pZBABGFBvb2xJZAABIG5ld19yb290BQQBWENvbmZpZ09wPFQ6OkFjY291bnRJZD4AATRuZXdfbm9taW5hdG9yBQQBWENvbmZpZ09wPFQ6OkFjY291bnRJZD4AASxuZXdfYm91bmNlcgUEAVhDb25maWdPcDxUOjpBY2NvdW50SWQ+AAwcdFVwZGF0ZSB0aGUgcm9sZXMgb2YgdGhlIHBvb2wuAD0BVGhlIHJvb3QgaXMgdGhlIG9ubHkgZW50aXR5IHRoYXQgY2FuIGNoYW5nZSBhbnkgb2YgdGhlIHJvbGVzLCBpbmNsdWRpbmcgaXRzZWxmLLhleGNsdWRpbmcgdGhlIGRlcG9zaXRvciwgd2hvIGNhbiBuZXZlciBjaGFuZ2UuAFEBSXQgZW1pdHMgYW4gZXZlbnQsIG5vdGlmeWluZyBVSXMgb2YgdGhlIHJvbGUgY2hhbmdlLiBUaGlzIGV2ZW50IGlzIHF1aXRlIHJlbGV2YW50IHRvHQFtb3N0IHBvb2wgbWVtYmVycyBhbmQgdGhleSBzaG91bGQgYmUgaW5mb3JtZWQgb2YgY2hhbmdlcyB0byBwb29sIHJvbGVzLhRjaGlsbAQBHHBvb2xfaWQQARhQb29sSWQADUBwQ2hpbGwgb24gYmVoYWxmIG9mIHRoZSBwb29sLgBBAVRoZSBkaXNwYXRjaCBvcmlnaW4gb2YgdGhpcyBjYWxsIGNhbiBiZSBzaWduZWQgYnkgdGhlIHBvb2wgbm9taW5hdG9yIG9yIHRoZSBwb29soHJvb3Qgcm9sZSwgc2FtZSBhcyBbYFBhbGxldDo6bm9taW5hdGVgXS4ATQFVbmRlciBjZXJ0YWluIGNvbmRpdGlvbnMsIHRoaXMgY2FsbCBjYW4gYmUgZGlzcGF0Y2hlZCBwZXJtaXNzaW9ubGVzc2x5IChpLmUuIGJ5IGFueSRhY2NvdW50KS4ArCMgQ29uZGl0aW9ucyBmb3IgYSBwZXJtaXNzaW9ubGVzcyBkaXNwYXRjaDpZASogV2hlbiBwb29sIGRlcG9zaXRvciBoYXMgbGVzcyB0aGFuIGBNaW5Ob21pbmF0b3JCb25kYCBzdGFrZWQsIG90aGVyd2lzZSAgcG9vbCBtZW1iZXJzXCAgYXJlIHVuYWJsZSB0byB1bmJvbmQuAJwjIENvbmRpdGlvbnMgZm9yIHBlcm1pc3Npb25lZCBkaXNwYXRjaDrYKiBUaGUgY2FsbGVyIGhhcyBhIG5vbWluYXRvciBvciByb290IHJvbGUgb2YgdGhlIHBvb2wuSQFUaGlzIGRpcmVjdGx5IGZvcndhcmQgdGhlIGNhbGwgdG8gdGhlIHN0YWtpbmcgcGFsbGV0LCBvbiBiZWhhbGYgb2YgdGhlIHBvb2wgYm9uZGVkIGFjY291bnQuQGJvbmRfZXh0cmFfb3RoZXIIARhtZW1iZXLFAQFQQWNjb3VudElkTG9va3VwT2Y8VD4AARRleHRyYfEDAVxCb25kRXh0cmE8QmFsYW5jZU9mPFQ+PgAOJFUBYG9yaWdpbmAgYm9uZHMgZnVuZHMgZnJvbSBgZXh0cmFgIGZvciBzb21lIHBvb2wgbWVtYmVyIGBtZW1iZXJgIGludG8gdGhlaXIgcmVzcGVjdGl2ZRhwb29scy4ASQFgb3JpZ2luYCBjYW4gYm9uZCBleHRyYSBmdW5kcyBmcm9tIGZyZWUgYmFsYW5jZSBvciBwZW5kaW5nIHJld2FyZHMgd2hlbiBgb3JpZ2luID09HG90aGVyYC4ARQFJbiB0aGUgY2FzZSBvZiBgb3JpZ2luICE9IG90aGVyYCwgYG9yaWdpbmAgY2FuIG9ubHkgYm9uZCBleHRyYSBwZW5kaW5nIHJld2FyZHMgb2YVAWBvdGhlcmAgbWVtYmVycyBhc3N1bWluZyBzZXRfY2xhaW1fcGVybWlzc2lvbiBmb3IgdGhlIGdpdmVuIG1lbWJlciBpc8BgUGVybWlzc2lvbmxlc3NDb21wb3VuZGAgb3IgYFBlcm1pc3Npb25sZXNzQWxsYC5Qc2V0X2NsYWltX3Blcm1pc3Npb24EAShwZXJtaXNzaW9uCQQBPENsYWltUGVybWlzc2lvbgAPHEkBQWxsb3dzIGEgcG9vbCBtZW1iZXIgdG8gc2V0IGEgY2xhaW0gcGVybWlzc2lvbiB0byBhbGxvdyBvciBkaXNhbGxvdyBwZXJtaXNzaW9ubGVzc2Bib25kaW5nIGFuZCB3aXRoZHJhd2luZy4ALCMgQXJndW1lbnRzAHgqIGBvcmlnaW5gIC0gTWVtYmVyIG9mIGEgcG9vbC64KiBgcGVybWlzc2lvbmAgLSBUaGUgcGVybWlzc2lvbiB0byBiZSBhcHBsaWVkLkhjbGFpbV9wYXlvdXRfb3RoZXIEARRvdGhlcgABMFQ6OkFjY291bnRJZAAQEAEBYG9yaWdpbmAgY2FuIGNsYWltIHBheW91dHMgb24gc29tZSBwb29sIG1lbWJlciBgb3RoZXJgJ3MgYmVoYWxmLgBVAVBvb2wgbWVtYmVyIGBvdGhlcmAgbXVzdCBoYXZlIGEgYFBlcm1pc3Npb25sZXNzV2l0aGRyYXdgIG9yIGBQZXJtaXNzaW9ubGVzc0FsbGAgY2xhaW2ocGVybWlzc2lvbiBmb3IgdGhpcyBjYWxsIHRvIGJlIHN1Y2Nlc3NmdWwuOHNldF9jb21taXNzaW9uCAEccG9vbF9pZBABGFBvb2xJZAABOG5ld19jb21taXNzaW9uDQQBfE9wdGlvbjwoUGVyYmlsbCwgVDo6QWNjb3VudElkKT4AERR0U2V0IHRoZSBjb21taXNzaW9uIG9mIGEgcG9vbC5VAUJvdGggYSBjb21taXNzaW9uIHBlcmNlbnRhZ2UgYW5kIGEgY29tbWlzc2lvbiBwYXllZSBtdXN0IGJlIHByb3ZpZGVkIGluIHRoZSBgY3VycmVudGBdAXR1cGxlLiBXaGVyZSBhIGBjdXJyZW50YCBvZiBgTm9uZWAgaXMgcHJvdmlkZWQsIGFueSBjdXJyZW50IGNvbW1pc3Npb24gd2lsbCBiZSByZW1vdmVkLgBNAS0gSWYgYSBgTm9uZWAgaXMgc3VwcGxpZWQgdG8gYG5ld19jb21taXNzaW9uYCwgZXhpc3RpbmcgY29tbWlzc2lvbiB3aWxsIGJlIHJlbW92ZWQuSHNldF9jb21taXNzaW9uX21heAgBHHBvb2xfaWQQARhQb29sSWQAAThtYXhfY29tbWlzc2lvbqwBHFBlcmJpbGwAEhSUU2V0IHRoZSBtYXhpbXVtIGNvbW1pc3Npb24gb2YgYSBwb29sLgA5AS0gSW5pdGlhbCBtYXggY2FuIGJlIHNldCB0byBhbnkgYFBlcmJpbGxgLCBhbmQgb25seSBzbWFsbGVyIHZhbHVlcyB0aGVyZWFmdGVyLjUBLSBDdXJyZW50IGNvbW1pc3Npb24gd2lsbCBiZSBsb3dlcmVkIGluIHRoZSBldmVudCBpdCBpcyBoaWdoZXIgdGhhbiBhIG5ldyBtYXg0ICBjb21taXNzaW9uLmhzZXRfY29tbWlzc2lvbl9jaGFuZ2VfcmF0ZQgBHHBvb2xfaWQQARhQb29sSWQAASxjaGFuZ2VfcmF0ZRUEAZxDb21taXNzaW9uQ2hhbmdlUmF0ZTxCbG9ja051bWJlckZvcjxUPj4AExCoU2V0IHRoZSBjb21taXNzaW9uIGNoYW5nZSByYXRlIGZvciBhIHBvb2wuAD0BSW5pdGlhbCBjaGFuZ2UgcmF0ZSBpcyBub3QgYm91bmRlZCwgd2hlcmVhcyBzdWJzZXF1ZW50IHVwZGF0ZXMgY2FuIG9ubHkgYmUgbW9yZXRyZXN0cmljdGl2ZSB0aGFuIHRoZSBjdXJyZW50LkBjbGFpbV9jb21taXNzaW9uBAEccG9vbF9pZBABGFBvb2xJZAAUFGRDbGFpbSBwZW5kaW5nIGNvbW1pc3Npb24uAF0BVGhlIGRpc3BhdGNoIG9yaWdpbiBvZiB0aGlzIGNhbGwgbXVzdCBiZSBzaWduZWQgYnkgdGhlIGByb290YCByb2xlIG9mIHRoZSBwb29sLiBQZW5kaW5nXQFjb21taXNzaW9uIGlzIHBhaWQgb3V0IGFuZCBhZGRlZCB0byB0b3RhbCBjbGFpbWVkIGNvbW1pc3Npb25gLiBUb3RhbCBwZW5kaW5nIGNvbW1pc3Npb254aXMgcmVzZXQgdG8gemVyby4gdGhlIGN1cnJlbnQuTGFkanVzdF9wb29sX2RlcG9zaXQEARxwb29sX2lkEAEYUG9vbElkABUc7FRvcCB1cCB0aGUgZGVmaWNpdCBvciB3aXRoZHJhdyB0aGUgZXhjZXNzIEVEIGZyb20gdGhlIHBvb2wuAFEBV2hlbiBhIHBvb2wgaXMgY3JlYXRlZCwgdGhlIHBvb2wgZGVwb3NpdG9yIHRyYW5zZmVycyBFRCB0byB0aGUgcmV3YXJkIGFjY291bnQgb2YgdGhlVQFwb29sLiBFRCBpcyBzdWJqZWN0IHRvIGNoYW5nZSBhbmQgb3ZlciB0aW1lLCB0aGUgZGVwb3NpdCBpbiB0aGUgcmV3YXJkIGFjY291bnQgbWF5IGJlUQFpbnN1ZmZpY2llbnQgdG8gY292ZXIgdGhlIEVEIGRlZmljaXQgb2YgdGhlIHBvb2wgb3IgdmljZS12ZXJzYSB3aGVyZSB0aGVyZSBpcyBleGNlc3MxAWRlcG9zaXQgdG8gdGhlIHBvb2wuIFRoaXMgY2FsbCBhbGxvd3MgYW55b25lIHRvIGFkanVzdCB0aGUgRUQgZGVwb3NpdCBvZiB0aGX0cG9vbCBieSBlaXRoZXIgdG9wcGluZyB1cCB0aGUgZGVmaWNpdCBvciBjbGFpbWluZyB0aGUgZXhjZXNzLnxzZXRfY29tbWlzc2lvbl9jbGFpbV9wZXJtaXNzaW9uCAEccG9vbF9pZBABGFBvb2xJZAABKHBlcm1pc3Npb24ZBAG8T3B0aW9uPENvbW1pc3Npb25DbGFpbVBlcm1pc3Npb248VDo6QWNjb3VudElkPj4AFhDMU2V0IG9yIHJlbW92ZSBhIHBvb2wncyBjb21taXNzaW9uIGNsYWltIHBlcm1pc3Npb24uAGEBRGV0ZXJtaW5lcyB3aG8gY2FuIGNsYWltIHRoZSBwb29sJ3MgcGVuZGluZyBjb21taXNzaW9uLiBPbmx5IHRoZSBgUm9vdGAgcm9sZSBvZiB0aGUgcG9vbMhpcyBhYmxlIHRvIGNvbmZpZ3VyZSBjb21taXNzaW9uIGNsYWltIHBlcm1pc3Npb25zLixhcHBseV9zbGFzaAQBOG1lbWJlcl9hY2NvdW50xQEBUEFjY291bnRJZExvb2t1cE9mPFQ+ABcciEFwcGx5IGEgcGVuZGluZyBzbGFzaCBvbiBhIG1lbWJlci4AJQFGYWlscyB1bmxlc3MgW2BjcmF0ZTo6cGFsbGV0OjpDb25maWc6OlN0YWtlQWRhcHRlcmBdIGlzIG9mIHN0cmF0ZWd5IHR5cGU6pFtgYWRhcHRlcjo6U3Rha2VTdHJhdGVneVR5cGU6OkRlbGVnYXRlYF0uAFUBVGhpcyBjYWxsIGNhbiBiZSBkaXNwYXRjaGVkIHBlcm1pc3Npb25sZXNzbHkgKGkuZS4gYnkgYW55IGFjY291bnQpLiBJZiB0aGUgbWVtYmVyIGhhcx0Bc2xhc2ggdG8gYmUgYXBwbGllZCwgY2FsbGVyIG1heSBiZSByZXdhcmRlZCB3aXRoIHRoZSBwYXJ0IG9mIHRoZSBzbGFzaC5IbWlncmF0ZV9kZWxlZ2F0aW9uBAE4bWVtYmVyX2FjY291bnTFAQFQQWNjb3VudElkTG9va3VwT2Y8VD4AGCQdAU1pZ3JhdGVzIGRlbGVnYXRlZCBmdW5kcyBmcm9tIHRoZSBwb29sIGFjY291bnQgdG8gdGhlIGBtZW1iZXJfYWNjb3VudGAuACUBRmFpbHMgdW5sZXNzIFtgY3JhdGU6OnBhbGxldDo6Q29uZmlnOjpTdGFrZUFkYXB0ZXJgXSBpcyBvZiBzdHJhdGVneSB0eXBlOqRbYGFkYXB0ZXI6OlN0YWtlU3RyYXRlZ3lUeXBlOjpEZWxlZ2F0ZWBdLgApAVRoaXMgaXMgYSBwZXJtaXNzaW9uLWxlc3MgY2FsbCBhbmQgcmVmdW5kcyBhbnkgZmVlIGlmIGNsYWltIGlzIHN1Y2Nlc3NmdWwuAF0BSWYgdGhlIHBvb2wgaGFzIG1pZ3JhdGVkIHRvIGRlbGVnYXRpb24gYmFzZWQgc3Rha2luZywgdGhlIHN0YWtlZCB0b2tlbnMgb2YgcG9vbCBtZW1iZXJzKQFjYW4gYmUgbW92ZWQgYW5kIGhlbGQgaW4gdGhlaXIgb3duIGFjY291bnQuIFNlZSBbYGFkYXB0ZXI6OkRlbGVnYXRlU3Rha2VgXXhtaWdyYXRlX3Bvb2xfdG9fZGVsZWdhdGVfc3Rha2UEARxwb29sX2lkEAEYUG9vbElkABkk9E1pZ3JhdGUgcG9vbCBmcm9tIFtgYWRhcHRlcjo6U3Rha2VTdHJhdGVneVR5cGU6OlRyYW5zZmVyYF0gdG+kW2BhZGFwdGVyOjpTdGFrZVN0cmF0ZWd5VHlwZTo6RGVsZWdhdGVgXS4AJQFGYWlscyB1bmxlc3MgW2BjcmF0ZTo6cGFsbGV0OjpDb25maWc6OlN0YWtlQWRhcHRlcmBdIGlzIG9mIHN0cmF0ZWd5IHR5cGU6pFtgYWRhcHRlcjo6U3Rha2VTdHJhdGVneVR5cGU6OkRlbGVnYXRlYF0uAEEBVGhpcyBjYWxsIGNhbiBiZSBkaXNwYXRjaGVkIHBlcm1pc3Npb25sZXNzbHksIGFuZCByZWZ1bmRzIGFueSBmZWUgaWYgc3VjY2Vzc2Z1bC4ASQFJZiB0aGUgcG9vbCBoYXMgYWxyZWFkeSBtaWdyYXRlZCB0byBkZWxlZ2F0aW9uIGJhc2VkIHN0YWtpbmcsIHRoaXMgY2FsbCB3aWxsIGZhaWwuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLvEDCFxwYWxsZXRfbm9taW5hdGlvbl9wb29scyRCb25kRXh0cmEEHEJhbGFuY2UBGAEILEZyZWVCYWxhbmNlBAAYARxCYWxhbmNlAAAAHFJld2FyZHMAAQAA9QMIXHBhbGxldF9ub21pbmF0aW9uX3Bvb2xzJFBvb2xTdGF0ZQABDBBPcGVuAAAAHEJsb2NrZWQAAQAoRGVzdHJveWluZwACAAD5AwhccGFsbGV0X25vbWluYXRpb25fcG9vbHMgQ29uZmlnT3AEBFQBGAEMEE5vb3AAAAAMU2V0BAAYAQRUAAEAGFJlbW92ZQACAAD9AwhccGFsbGV0X25vbWluYXRpb25fcG9vbHMgQ29uZmlnT3AEBFQBEAEMEE5vb3AAAAAMU2V0BAAQAQRUAAEAGFJlbW92ZQACAAABBAhccGFsbGV0X25vbWluYXRpb25fcG9vbHMgQ29uZmlnT3AEBFQBrAEMEE5vb3AAAAAMU2V0BACsAQRUAAEAGFJlbW92ZQACAAAFBAhccGFsbGV0X25vbWluYXRpb25fcG9vbHMgQ29uZmlnT3AEBFQBAAEMEE5vb3AAAAAMU2V0BAAAAQRUAAEAGFJlbW92ZQACAAAJBAhccGFsbGV0X25vbWluYXRpb25fcG9vbHM8Q2xhaW1QZXJtaXNzaW9uAAEQMFBlcm1pc3Npb25lZAAAAFhQZXJtaXNzaW9ubGVzc0NvbXBvdW5kAAEAWFBlcm1pc3Npb25sZXNzV2l0aGRyYXcAAgBEUGVybWlzc2lvbmxlc3NBbGwAAwAADQQEGE9wdGlvbgQEVAERBAEIEE5vbmUAAAAQU29tZQQAEQQAAAEAABEEAAAECKwAABUECFxwYWxsZXRfbm9taW5hdGlvbl9wb29sc1BDb21taXNzaW9uQ2hhbmdlUmF0ZQQsQmxvY2tOdW1iZXIBEAAIATBtYXhfaW5jcmVhc2WsARxQZXJiaWxsAAEkbWluX2RlbGF5EAEsQmxvY2tOdW1iZXIAABkEBBhPcHRpb24EBFQBHQQBCBBOb25lAAAAEFNvbWUEAB0EAAABAAAdBAhccGFsbGV0X25vbWluYXRpb25fcG9vbHNkQ29tbWlzc2lvbkNsYWltUGVybWlzc2lvbgQkQWNjb3VudElkAQABCDhQZXJtaXNzaW9ubGVzcwAAABxBY2NvdW50BAAAASRBY2NvdW50SWQAAQAAIQQMTHBhbGxldF9mYXN0X3Vuc3Rha2UYcGFsbGV0EENhbGwEBFQAAQxUcmVnaXN0ZXJfZmFzdF91bnN0YWtlAABoiFJlZ2lzdGVyIG9uZXNlbGYgZm9yIGZhc3QtdW5zdGFrZS4ASCMjIERpc3BhdGNoIE9yaWdpbgBFAVRoZSBkaXNwYXRjaCBvcmlnaW4gb2YgdGhpcyBjYWxsIG11c3QgYmUgKnNpZ25lZCogYnkgd2hvZXZlciBpcyBwZXJtaXR0ZWQgdG8gY2FsbPB1bmJvbmQgZnVuZHMgYnkgdGhlIHN0YWtpbmcgc3lzdGVtLiBTZWUgW2BDb25maWc6OlN0YWtpbmdgXS4AKCMjIERldGFpbHMAOQFUaGUgc3Rhc2ggYXNzb2NpYXRlZCB3aXRoIHRoZSBvcmlnaW4gbXVzdCBoYXZlIG5vIG9uZ29pbmcgdW5sb2NraW5nIGNodW5rcy4gSWZdAXN1Y2Nlc3NmdWwsIHRoaXMgd2lsbCBmdWxseSB1bmJvbmQgYW5kIGNoaWxsIHRoZSBzdGFzaC4gVGhlbiwgaXQgd2lsbCBlbnF1ZXVlIHRoZSBzdGFzaIB0byBiZSBjaGVja2VkIGluIGZ1cnRoZXIgYmxvY2tzLgBRAUlmIGJ5IHRoZSB0aW1lIHRoaXMgaXMgY2FsbGVkLCB0aGUgc3Rhc2ggaXMgYWN0dWFsbHkgZWxpZ2libGUgZm9yIGZhc3QtdW5zdGFrZSwgdGhlbkUBdGhleSBhcmUgZ3VhcmFudGVlZCB0byByZW1haW4gZWxpZ2libGUsIGJlY2F1c2UgdGhlIGNhbGwgd2lsbCBjaGlsbCB0aGVtIGFzIHdlbGwuAD0BSWYgdGhlIGNoZWNrIHdvcmtzLCB0aGUgZW50aXJlIHN0YWtpbmcgZGF0YSBpcyByZW1vdmVkLCBpLmUuIHRoZSBzdGFzaCBpcyBmdWxseSR1bnN0YWtlZC4AXQFJZiB0aGUgY2hlY2sgZmFpbHMsIHRoZSBzdGFzaCByZW1haW5zIGNoaWxsZWQgYW5kIHdhaXRpbmcgZm9yIGJlaW5nIHVuYm9uZGVkIGFzIGluIHdpdGhhAXRoZSBub3JtYWwgc3Rha2luZyBzeXN0ZW0sIGJ1dCB0aGV5IGxvc2UgcGFydCBvZiB0aGVpciB1bmJvbmRpbmcgY2h1bmtzIGR1ZSB0byBjb25zdW1pbmdYdGhlIGNoYWluJ3MgcmVzb3VyY2VzLgAkIyMgRXZlbnRzAAkBU29tZSBldmVudHMgZnJvbSB0aGUgc3Rha2luZyBhbmQgY3VycmVuY3kgc3lzdGVtIG1pZ2h0IGJlIGVtaXR0ZWQuKGRlcmVnaXN0ZXIAAUikRGVyZWdpc3RlciBvbmVzZWxmIGZyb20gdGhlIGZhc3QtdW5zdGFrZS4ASCMjIERpc3BhdGNoIE9yaWdpbgBFAVRoZSBkaXNwYXRjaCBvcmlnaW4gb2YgdGhpcyBjYWxsIG11c3QgYmUgKnNpZ25lZCogYnkgd2hvZXZlciBpcyBwZXJtaXR0ZWQgdG8gY2FsbPB1bmJvbmQgZnVuZHMgYnkgdGhlIHN0YWtpbmcgc3lzdGVtLiBTZWUgW2BDb25maWc6OlN0YWtpbmdgXS4AKCMjIERldGFpbHMAYQFUaGlzIGlzIHVzZWZ1bCBpZiBvbmUgaXMgcmVnaXN0ZXJlZCwgdGhleSBhcmUgc3RpbGwgd2FpdGluZywgYW5kIHRoZXkgY2hhbmdlIHRoZWlyIG1pbmQuAFkBTm90ZSB0aGF0IHRoZSBhc3NvY2lhdGVkIHN0YXNoIGlzIHN0aWxsIGZ1bGx5IHVuYm9uZGVkIGFuZCBjaGlsbGVkIGFzIGEgY29uc2VxdWVuY2Ugb2ZZAWNhbGxpbmcgW2BQYWxsZXQ6OnJlZ2lzdGVyX2Zhc3RfdW5zdGFrZWBdLiBUaGVyZWZvcmUsIHRoaXMgc2hvdWxkIHByb2JhYmx5IGJlIGZvbGxvd2VksGJ5IGEgY2FsbCB0byBgcmVib25kYCBpbiB0aGUgc3Rha2luZyBzeXN0ZW0uACQjIyBFdmVudHMACQFTb21lIGV2ZW50cyBmcm9tIHRoZSBzdGFraW5nIGFuZCBjdXJyZW5jeSBzeXN0ZW0gbWlnaHQgYmUgZW1pdHRlZC4cY29udHJvbAQBNGVyYXNfdG9fY2hlY2sQASBFcmFJbmRleAACNJRDb250cm9sIHRoZSBvcGVyYXRpb24gb2YgdGhpcyBwYWxsZXQuAEgjIyBEaXNwYXRjaCBPcmlnaW4ADQFUaGUgZGlzcGF0Y2ggb3JpZ2luIG9mIHRoaXMgY2FsbCBtdXN0IGJlIFtgQ29uZmlnOjpDb250cm9sT3JpZ2luYF0uACgjIyBEZXRhaWxzAEEBQ2FuIHNldCB0aGUgbnVtYmVyIG9mIGVyYXMgdG8gY2hlY2sgcGVyIGJsb2NrLCBhbmQgcG90ZW50aWFsbHkgb3RoZXIgYWRtaW4gd29yay4AJCMjIEV2ZW50cwCkTm8gZXZlbnRzIGFyZSBlbWl0dGVkIGZyb20gdGhpcyBkaXNwYXRjaC4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuJQQQbHBvbGthZG90X3J1bnRpbWVfcGFyYWNoYWluczRjb25maWd1cmF0aW9uGHBhbGxldBBDYWxsBARUAAHAfHNldF92YWxpZGF0aW9uX3VwZ3JhZGVfY29vbGRvd24EAQxuZXcQAURCbG9ja051bWJlckZvcjxUPgAABJBTZXQgdGhlIHZhbGlkYXRpb24gdXBncmFkZSBjb29sZG93bi5wc2V0X3ZhbGlkYXRpb25fdXBncmFkZV9kZWxheQQBDG5ldxABREJsb2NrTnVtYmVyRm9yPFQ+AAEEhFNldCB0aGUgdmFsaWRhdGlvbiB1cGdyYWRlIGRlbGF5LmRzZXRfY29kZV9yZXRlbnRpb25fcGVyaW9kBAEMbmV3EAFEQmxvY2tOdW1iZXJGb3I8VD4AAgTQU2V0IHRoZSBhY2NlcHRhbmNlIHBlcmlvZCBmb3IgYW4gaW5jbHVkZWQgY2FuZGlkYXRlLkRzZXRfbWF4X2NvZGVfc2l6ZQQBDG5ldxABDHUzMgADBNxTZXQgdGhlIG1heCB2YWxpZGF0aW9uIGNvZGUgc2l6ZSBmb3IgaW5jb21pbmcgdXBncmFkZXMuQHNldF9tYXhfcG92X3NpemUEAQxuZXcQAQx1MzIABATEU2V0IHRoZSBtYXggUE9WIGJsb2NrIHNpemUgZm9yIGluY29taW5nIHVwZ3JhZGVzLlhzZXRfbWF4X2hlYWRfZGF0YV9zaXplBAEMbmV3EAEMdTMyAAUElFNldCB0aGUgbWF4IGhlYWQgZGF0YSBzaXplIGZvciBwYXJhcy5Ic2V0X2NvcmV0aW1lX2NvcmVzBAEMbmV3EAEMdTMyAAYQrFNldCB0aGUgbnVtYmVyIG9mIGNvcmV0aW1lIGV4ZWN1dGlvbiBjb3Jlcy4AUQFOT1RFOiB0aGF0IHRoaXMgY29uZmlndXJhdGlvbiBpcyBtYW5hZ2VkIGJ5IHRoZSBjb3JldGltZSBjaGFpbi4gT25seSBtYW51YWxseSBjaGFuZ2WwdGhpcywgaWYgeW91IHJlYWxseSBrbm93IHdoYXQgeW91IGFyZSBkb2luZyF0c2V0X21heF9hdmFpbGFiaWxpdHlfdGltZW91dHMEAQxuZXcQAQx1MzIABwRBAVNldCB0aGUgbWF4IG51bWJlciBvZiB0aW1lcyBhIGNsYWltIG1heSB0aW1lb3V0IG9uIGEgY29yZSBiZWZvcmUgaXQgaXMgYWJhbmRvbmVkcHNldF9ncm91cF9yb3RhdGlvbl9mcmVxdWVuY3kEAQxuZXcQAURCbG9ja051bWJlckZvcjxUPgAIBNBTZXQgdGhlIHBhcmFjaGFpbiB2YWxpZGF0b3ItZ3JvdXAgcm90YXRpb24gZnJlcXVlbmN5dHNldF9wYXJhc19hdmFpbGFiaWxpdHlfcGVyaW9kBAEMbmV3EAFEQmxvY2tOdW1iZXJGb3I8VD4ACQSYU2V0IHRoZSBhdmFpbGFiaWxpdHkgcGVyaW9kIGZvciBwYXJhcy5gc2V0X3NjaGVkdWxpbmdfbG9va2FoZWFkBAEMbmV3EAEMdTMyAAsEOQFTZXQgdGhlIHNjaGVkdWxpbmcgbG9va2FoZWFkLCBpbiBleHBlY3RlZCBudW1iZXIgb2YgYmxvY2tzIGF0IHBlYWsgdGhyb3VnaHB1dC5sc2V0X21heF92YWxpZGF0b3JzX3Blcl9jb3JlBAEMbmV3YQIBLE9wdGlvbjx1MzI+AAwE7FNldCB0aGUgbWF4aW11bSBudW1iZXIgb2YgdmFsaWRhdG9ycyB0byBhc3NpZ24gdG8gYW55IGNvcmUuSHNldF9tYXhfdmFsaWRhdG9ycwQBDG5ld2ECASxPcHRpb248dTMyPgANBA0BU2V0IHRoZSBtYXhpbXVtIG51bWJlciBvZiB2YWxpZGF0b3JzIHRvIHVzZSBpbiBwYXJhY2hhaW4gY29uc2Vuc3VzLkhzZXRfZGlzcHV0ZV9wZXJpb2QEAQxuZXcQATBTZXNzaW9uSW5kZXgADgQNAVNldCB0aGUgZGlzcHV0ZSBwZXJpb2QsIGluIG51bWJlciBvZiBzZXNzaW9ucyB0byBrZWVwIGZvciBkaXNwdXRlcy60c2V0X2Rpc3B1dGVfcG9zdF9jb25jbHVzaW9uX2FjY2VwdGFuY2VfcGVyaW9kBAEMbmV3EAFEQmxvY2tOdW1iZXJGb3I8VD4ADwTIU2V0IHRoZSBkaXNwdXRlIHBvc3QgY29uY2x1c2lvbiBhY2NlcHRhbmNlIHBlcmlvZC5Ec2V0X25vX3Nob3dfc2xvdHMEAQxuZXcQAQx1MzIAEgj4U2V0IHRoZSBubyBzaG93IHNsb3RzLCBpbiBudW1iZXIgb2YgbnVtYmVyIG9mIGNvbnNlbnN1cyBzbG90cy5MTXVzdCBiZSBhdCBsZWFzdCAxLlBzZXRfbl9kZWxheV90cmFuY2hlcwQBDG5ldxABDHUzMgATBJxTZXQgdGhlIHRvdGFsIG51bWJlciBvZiBkZWxheSB0cmFuY2hlcy54c2V0X3plcm90aF9kZWxheV90cmFuY2hlX3dpZHRoBAEMbmV3EAEMdTMyABQEjFNldCB0aGUgemVyb3RoIGRlbGF5IHRyYW5jaGUgd2lkdGguUHNldF9uZWVkZWRfYXBwcm92YWxzBAEMbmV3EAEMdTMyABUE3FNldCB0aGUgbnVtYmVyIG9mIHZhbGlkYXRvcnMgbmVlZGVkIHRvIGFwcHJvdmUgYSBibG9jay5wc2V0X3JlbGF5X3ZyZl9tb2R1bG9fc2FtcGxlcwQBDG5ldxABDHUzMgAWBFkBU2V0IHRoZSBudW1iZXIgb2Ygc2FtcGxlcyB0byBkbyBvZiB0aGUgYFJlbGF5VlJGTW9kdWxvYCBhcHByb3ZhbCBhc3NpZ25tZW50IGNyaXRlcmlvbi5oc2V0X21heF91cHdhcmRfcXVldWVfY291bnQEAQxuZXcQAQx1MzIAFwQtAVNldHMgdGhlIG1heGltdW0gaXRlbXMgdGhhdCBjYW4gcHJlc2VudCBpbiBhIHVwd2FyZCBkaXNwYXRjaCBxdWV1ZSBhdCBvbmNlLmRzZXRfbWF4X3Vwd2FyZF9xdWV1ZV9zaXplBAEMbmV3EAEMdTMyABgITQFTZXRzIHRoZSBtYXhpbXVtIHRvdGFsIHNpemUgb2YgaXRlbXMgdGhhdCBjYW4gcHJlc2VudCBpbiBhIHVwd2FyZCBkaXNwYXRjaCBxdWV1ZSBhdBRvbmNlLnRzZXRfbWF4X2Rvd253YXJkX21lc3NhZ2Vfc2l6ZQQBDG5ldxABDHUzMgAZBJxTZXQgdGhlIGNyaXRpY2FsIGRvd253YXJkIG1lc3NhZ2Ugc2l6ZS5sc2V0X21heF91cHdhcmRfbWVzc2FnZV9zaXplBAEMbmV3EAEMdTMyABsELQFTZXRzIHRoZSBtYXhpbXVtIHNpemUgb2YgYW4gdXB3YXJkIG1lc3NhZ2UgdGhhdCBjYW4gYmUgc2VudCBieSBhIGNhbmRpZGF0ZS6gc2V0X21heF91cHdhcmRfbWVzc2FnZV9udW1fcGVyX2NhbmRpZGF0ZQQBDG5ldxABDHUzMgAcBAUBU2V0cyB0aGUgbWF4aW11bSBudW1iZXIgb2YgbWVzc2FnZXMgdGhhdCBhIGNhbmRpZGF0ZSBjYW4gY29udGFpbi5kc2V0X2hybXBfb3Blbl9yZXF1ZXN0X3R0bAQBDG5ldxABDHUzMgAdBDUBU2V0cyB0aGUgbnVtYmVyIG9mIHNlc3Npb25zIGFmdGVyIHdoaWNoIGFuIEhSTVAgb3BlbiBjaGFubmVsIHJlcXVlc3QgZXhwaXJlcy5cc2V0X2hybXBfc2VuZGVyX2RlcG9zaXQEAQxuZXcYARxCYWxhbmNlAB4EUQFTZXRzIHRoZSBhbW91bnQgb2YgZnVuZHMgdGhhdCB0aGUgc2VuZGVyIHNob3VsZCBwcm92aWRlIGZvciBvcGVuaW5nIGFuIEhSTVAgY2hhbm5lbC5oc2V0X2hybXBfcmVjaXBpZW50X2RlcG9zaXQEAQxuZXcYARxCYWxhbmNlAB8IYQFTZXRzIHRoZSBhbW91bnQgb2YgZnVuZHMgdGhhdCB0aGUgcmVjaXBpZW50IHNob3VsZCBwcm92aWRlIGZvciBhY2NlcHRpbmcgb3BlbmluZyBhbiBIUk1QIGNoYW5uZWwudHNldF9ocm1wX2NoYW5uZWxfbWF4X2NhcGFjaXR5BAEMbmV3EAEMdTMyACAEHQFTZXRzIHRoZSBtYXhpbXVtIG51bWJlciBvZiBtZXNzYWdlcyBhbGxvd2VkIGluIGFuIEhSTVAgY2hhbm5lbCBhdCBvbmNlLnxzZXRfaHJtcF9jaGFubmVsX21heF90b3RhbF9zaXplBAEMbmV3EAEMdTMyACEEUQFTZXRzIHRoZSBtYXhpbXVtIHRvdGFsIHNpemUgb2YgbWVzc2FnZXMgaW4gYnl0ZXMgYWxsb3dlZCBpbiBhbiBIUk1QIGNoYW5uZWwgYXQgb25jZS6cc2V0X2hybXBfbWF4X3BhcmFjaGFpbl9pbmJvdW5kX2NoYW5uZWxzBAEMbmV3EAEMdTMyACIESQFTZXRzIHRoZSBtYXhpbXVtIG51bWJlciBvZiBpbmJvdW5kIEhSTVAgY2hhbm5lbHMgYSBwYXJhY2hhaW4gaXMgYWxsb3dlZCB0byBhY2NlcHQuhHNldF9ocm1wX2NoYW5uZWxfbWF4X21lc3NhZ2Vfc2l6ZQQBDG5ldxABDHUzMgAkBD0BU2V0cyB0aGUgbWF4aW11bSBzaXplIG9mIGEgbWVzc2FnZSB0aGF0IGNvdWxkIGV2ZXIgYmUgcHV0IGludG8gYW4gSFJNUCBjaGFubmVsLqBzZXRfaHJtcF9tYXhfcGFyYWNoYWluX291dGJvdW5kX2NoYW5uZWxzBAEMbmV3EAEMdTMyACUERQFTZXRzIHRoZSBtYXhpbXVtIG51bWJlciBvZiBvdXRib3VuZCBIUk1QIGNoYW5uZWxzIGEgcGFyYWNoYWluIGlzIGFsbG93ZWQgdG8gb3Blbi6Yc2V0X2hybXBfbWF4X21lc3NhZ2VfbnVtX3Blcl9jYW5kaWRhdGUEAQxuZXcQAQx1MzIAJwQ1AVNldHMgdGhlIG1heGltdW0gbnVtYmVyIG9mIG91dGJvdW5kIEhSTVAgbWVzc2FnZXMgY2FuIGJlIHNlbnQgYnkgYSBjYW5kaWRhdGUuSHNldF9wdmZfdm90aW5nX3R0bAQBDG5ldxABMFNlc3Npb25JbmRleAAqBFEBU2V0IHRoZSBudW1iZXIgb2Ygc2Vzc2lvbiBjaGFuZ2VzIGFmdGVyIHdoaWNoIGEgUFZGIHByZS1jaGVja2luZyB2b3RpbmcgaXMgcmVqZWN0ZWQukHNldF9taW5pbXVtX3ZhbGlkYXRpb25fdXBncmFkZV9kZWxheQQBDG5ldxABREJsb2NrTnVtYmVyRm9yPFQ+ACsQVQFTZXRzIHRoZSBtaW5pbXVtIGRlbGF5IGJldHdlZW4gYW5ub3VuY2luZyB0aGUgdXBncmFkZSBibG9jayBmb3IgYSBwYXJhY2hhaW4gdW50aWwgdGhlVHVwZ3JhZGUgdGFraW5nIHBsYWNlLgA5AVNlZSB0aGUgZmllbGQgZG9jdW1lbnRhdGlvbiBmb3IgaW5mb3JtYXRpb24gYW5kIGNvbnN0cmFpbnRzIGZvciB0aGUgbmV3IHZhbHVlLnBzZXRfYnlwYXNzX2NvbnNpc3RlbmN5X2NoZWNrBAEMbmV3IAEQYm9vbAAsCE0BU2V0dGluZyB0aGlzIHRvIHRydWUgd2lsbCBkaXNhYmxlIGNvbnNpc3RlbmN5IGNoZWNrcyBmb3IgdGhlIGNvbmZpZ3VyYXRpb24gc2V0dGVycy5EVXNlIHdpdGggY2F1dGlvbi5gc2V0X2FzeW5jX2JhY2tpbmdfcGFyYW1zBAEMbmV3KQQBSEFzeW5jQmFja2luZ1BhcmFtcwAtBKBTZXQgdGhlIGFzeW5jaHJvbm91cyBiYWNraW5nIHBhcmFtZXRlcnMuTHNldF9leGVjdXRvcl9wYXJhbXMEAQxuZXctBAE4RXhlY3V0b3JQYXJhbXMALgRwU2V0IFBWRiBleGVjdXRvciBwYXJhbWV0ZXJzLlhzZXRfb25fZGVtYW5kX2Jhc2VfZmVlBAEMbmV3GAEcQmFsYW5jZQAvBKRTZXQgdGhlIG9uIGRlbWFuZCAocGFyYXRocmVhZHMpIGJhc2UgZmVlLnRzZXRfb25fZGVtYW5kX2ZlZV92YXJpYWJpbGl0eQQBDG5ld6wBHFBlcmJpbGwAMATAU2V0IHRoZSBvbiBkZW1hbmQgKHBhcmF0aHJlYWRzKSBmZWUgdmFyaWFiaWxpdHkucHNldF9vbl9kZW1hbmRfcXVldWVfbWF4X3NpemUEAQxuZXcQAQx1MzIAMQS8U2V0IHRoZSBvbiBkZW1hbmQgKHBhcmF0aHJlYWRzKSBxdWV1ZSBtYXggc2l6ZS6Yc2V0X29uX2RlbWFuZF90YXJnZXRfcXVldWVfdXRpbGl6YXRpb24EAQxuZXesARxQZXJiaWxsADIEwFNldCB0aGUgb24gZGVtYW5kIChwYXJhdGhyZWFkcykgZmVlIHZhcmlhYmlsaXR5LkRzZXRfb25fZGVtYW5kX3R0bAQBDG5ldxABREJsb2NrTnVtYmVyRm9yPFQ+ADME2FNldCB0aGUgb24gZGVtYW5kIChwYXJhdGhyZWFkcykgdHRsIGluIHRoZSBjbGFpbXF1ZXVlLmRzZXRfbWluaW11bV9iYWNraW5nX3ZvdGVzBAEMbmV3EAEMdTMyADQEoFNldCB0aGUgbWluaW11bSBiYWNraW5nIHZvdGVzIHRocmVzaG9sZC5Ac2V0X25vZGVfZmVhdHVyZQgBFGluZGV4CAEIdTgAARR2YWx1ZSABEGJvb2wANQRkU2V0L1Vuc2V0IGEgbm9kZSBmZWF0dXJlLmhzZXRfYXBwcm92YWxfdm90aW5nX3BhcmFtcwQBDG5ld0EEAVBBcHByb3ZhbFZvdGluZ1BhcmFtcwA2BGxTZXQgYXBwcm92YWwtdm90aW5nLXBhcmFtcy5Qc2V0X3NjaGVkdWxlcl9wYXJhbXMEAQxuZXdFBAGIU2NoZWR1bGVyUGFyYW1zPEJsb2NrTnVtYmVyRm9yPFQ+PgA3BFRTZXQgc2NoZWR1bGVyLXBhcmFtcy4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuKQQQTHBvbGthZG90X3ByaW1pdGl2ZXMIdjc0YXN5bmNfYmFja2luZ0hBc3luY0JhY2tpbmdQYXJhbXMAAAgBTG1heF9jYW5kaWRhdGVfZGVwdGgQAQx1MzIAAVBhbGxvd2VkX2FuY2VzdHJ5X2xlbhABDHUzMgAALQQQTHBvbGthZG90X3ByaW1pdGl2ZXMIdjc8ZXhlY3V0b3JfcGFyYW1zOEV4ZWN1dG9yUGFyYW1zAAAEADEEAUhWZWM8RXhlY3V0b3JQYXJhbT4AADEEAAACNQQANQQQTHBvbGthZG90X3ByaW1pdGl2ZXMIdjc8ZXhlY3V0b3JfcGFyYW1zNEV4ZWN1dG9yUGFyYW0AARw4TWF4TWVtb3J5UGFnZXMEABABDHUzMgABADxTdGFja0xvZ2ljYWxNYXgEABABDHUzMgACADhTdGFja05hdGl2ZU1heAQAEAEMdTMyAAMAUFByZWNoZWNraW5nTWF4TWVtb3J5BAAwAQx1NjQABAA4UHZmUHJlcFRpbWVvdXQIADkEASxQdmZQcmVwS2luZAAAMAEMdTY0AAUAOFB2ZkV4ZWNUaW1lb3V0CAA9BAEsUHZmRXhlY0tpbmQAADABDHU2NAAGAERXYXNtRXh0QnVsa01lbW9yeQAHAAA5BAxMcG9sa2Fkb3RfcHJpbWl0aXZlcwh2NyxQdmZQcmVwS2luZAABCCBQcmVjaGVjawAAABxQcmVwYXJlAAEAAD0EDExwb2xrYWRvdF9wcmltaXRpdmVzCHY3LFB2ZkV4ZWNLaW5kAAEIHEJhY2tpbmcAAAAgQXBwcm92YWwAAQAAQQQMTHBvbGthZG90X3ByaW1pdGl2ZXMIdjdQQXBwcm92YWxWb3RpbmdQYXJhbXMAAAQBbG1heF9hcHByb3ZhbF9jb2FsZXNjZV9jb3VudBABDHUzMgAARQQMTHBvbGthZG90X3ByaW1pdGl2ZXMgdnN0YWdpbmc8U2NoZWR1bGVyUGFyYW1zBCxCbG9ja051bWJlcgEQACwBYGdyb3VwX3JvdGF0aW9uX2ZyZXF1ZW5jeRABLEJsb2NrTnVtYmVyAAFkcGFyYXNfYXZhaWxhYmlsaXR5X3BlcmlvZBABLEJsb2NrTnVtYmVyAAFcbWF4X3ZhbGlkYXRvcnNfcGVyX2NvcmVhAgEsT3B0aW9uPHUzMj4AASRsb29rYWhlYWQQAQx1MzIAASRudW1fY29yZXMQAQx1MzIAAWRtYXhfYXZhaWxhYmlsaXR5X3RpbWVvdXRzEAEMdTMyAAFgb25fZGVtYW5kX3F1ZXVlX21heF9zaXplEAEMdTMyAAGIb25fZGVtYW5kX3RhcmdldF9xdWV1ZV91dGlsaXphdGlvbqwBHFBlcmJpbGwAAWRvbl9kZW1hbmRfZmVlX3ZhcmlhYmlsaXR5rAEcUGVyYmlsbAABSG9uX2RlbWFuZF9iYXNlX2ZlZRgBHEJhbGFuY2UAAQx0dGwQASxCbG9ja051bWJlcgAASQQQbHBvbGthZG90X3J1bnRpbWVfcGFyYWNoYWlucxhzaGFyZWQYcGFsbGV0EENhbGwEBFQAAQAEDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuTQQQbHBvbGthZG90X3J1bnRpbWVfcGFyYWNoYWlucyRpbmNsdXNpb24YcGFsbGV0EENhbGwEBFQAAQAEDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuUQQQbHBvbGthZG90X3J1bnRpbWVfcGFyYWNoYWluczhwYXJhc19pbmhlcmVudBhwYWxsZXQQQ2FsbAQEVAABBBRlbnRlcgQBEGRhdGFVBAGQUGFyYWNoYWluc0luaGVyZW50RGF0YTxIZWFkZXJGb3I8VD4+AAAEMQFFbnRlciB0aGUgcGFyYXMgaW5oZXJlbnQuIFRoaXMgd2lsbCBwcm9jZXNzIGJpdGZpZWxkcyBhbmQgYmFja2VkIGNhbmRpZGF0ZXMuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLlUEDExwb2xrYWRvdF9wcmltaXRpdmVzCHY3MEluaGVyZW50RGF0YQQMSERSAaEBABABJGJpdGZpZWxkc1kEAZBVbmNoZWNrZWRTaWduZWRBdmFpbGFiaWxpdHlCaXRmaWVsZHMAAURiYWNrZWRfY2FuZGlkYXRlc3UEAXxWZWM8QmFja2VkQ2FuZGlkYXRlPEhEUjo6SGFzaD4+AAEgZGlzcHV0ZXO5BAFgTXVsdGlEaXNwdXRlU3RhdGVtZW50U2V0AAE0cGFyZW50X2hlYWRlcqEBAQxIRFIAAFkEAAACXQQAXQQQTHBvbGthZG90X3ByaW1pdGl2ZXMIdjcYc2lnbmVkPFVuY2hlY2tlZFNpZ25lZAgcUGF5bG9hZAFhBCxSZWFsUGF5bG9hZAFhBAAMARxwYXlsb2FkYQQBHFBheWxvYWQAATx2YWxpZGF0b3JfaW5kZXhtBAE4VmFsaWRhdG9ySW5kZXgAASRzaWduYXR1cmVxBAFIVmFsaWRhdG9yU2lnbmF0dXJlAABhBAxMcG9sa2Fkb3RfcHJpbWl0aXZlcwh2N1BBdmFpbGFiaWxpdHlCaXRmaWVsZAAABABlBAF8Qml0VmVjPHU4LCBiaXR2ZWM6Om9yZGVyOjpMc2IwPgAAZQQAAAcIaQQAaQQMGGJpdHZlYxRvcmRlchBMc2IwAAAAAG0EDExwb2xrYWRvdF9wcmltaXRpdmVzCHY3OFZhbGlkYXRvckluZGV4AAAEABABDHUzMgAAcQQQTHBvbGthZG90X3ByaW1pdGl2ZXMIdjc0dmFsaWRhdG9yX2FwcCRTaWduYXR1cmUAAAQASQIBSHNyMjU1MTk6OlNpZ25hdHVyZQAAdQQAAAJ5BAB5BAxMcG9sa2Fkb3RfcHJpbWl0aXZlcwh2NzxCYWNrZWRDYW5kaWRhdGUEBEgBNAAMASRjYW5kaWRhdGV9BAFwQ29tbWl0dGVkQ2FuZGlkYXRlUmVjZWlwdDxIPgABOHZhbGlkaXR5X3ZvdGVzsQQBYFZlYzxWYWxpZGl0eUF0dGVzdGF0aW9uPgABRHZhbGlkYXRvcl9pbmRpY2VzZQQBfEJpdFZlYzx1OCwgYml0dmVjOjpvcmRlcjo6THNiMD4AAH0EDExwb2xrYWRvdF9wcmltaXRpdmVzCHY3ZENvbW1pdHRlZENhbmRpZGF0ZVJlY2VpcHQEBEgBNAAIAShkZXNjcmlwdG9ygQQBWENhbmRpZGF0ZURlc2NyaXB0b3I8SD4AASxjb21taXRtZW50c5EEAVBDYW5kaWRhdGVDb21taXRtZW50cwAAgQQMTHBvbGthZG90X3ByaW1pdGl2ZXMIdjdMQ2FuZGlkYXRlRGVzY3JpcHRvcgQESAE0ACQBHHBhcmFfaWSNAgEISWQAATByZWxheV9wYXJlbnQ0AQRIAAEgY29sbGF0b3KFBAEoQ29sbGF0b3JJZAABeHBlcnNpc3RlZF92YWxpZGF0aW9uX2RhdGFfaGFzaDQBEEhhc2gAASBwb3ZfaGFzaDQBEEhhc2gAATBlcmFzdXJlX3Jvb3Q0ARBIYXNoAAEkc2lnbmF0dXJliQQBRENvbGxhdG9yU2lnbmF0dXJlAAEkcGFyYV9oZWFkNAEQSGFzaAABUHZhbGlkYXRpb25fY29kZV9oYXNojQQBSFZhbGlkYXRpb25Db2RlSGFzaAAAhQQQTHBvbGthZG90X3ByaW1pdGl2ZXMIdjcwY29sbGF0b3JfYXBwGFB1YmxpYwAABAAEATxzcjI1NTE5OjpQdWJsaWMAAIkEEExwb2xrYWRvdF9wcmltaXRpdmVzCHY3MGNvbGxhdG9yX2FwcCRTaWduYXR1cmUAAAQASQIBSHNyMjU1MTk6OlNpZ25hdHVyZQAAjQQMdHBvbGthZG90X3BhcmFjaGFpbl9wcmltaXRpdmVzKHByaW1pdGl2ZXNIVmFsaWRhdGlvbkNvZGVIYXNoAAAEADQBEEhhc2gAAJEEDExwb2xrYWRvdF9wcmltaXRpdmVzCHY3UENhbmRpZGF0ZUNvbW1pdG1lbnRzBAROARAAGAE8dXB3YXJkX21lc3NhZ2VzlQQBOFVwd2FyZE1lc3NhZ2VzAAFMaG9yaXpvbnRhbF9tZXNzYWdlc5kEAUhIb3Jpem9udGFsTWVzc2FnZXMAAUxuZXdfdmFsaWRhdGlvbl9jb2RlpQQBWE9wdGlvbjxWYWxpZGF0aW9uQ29kZT4AASRoZWFkX2RhdGGtBAEgSGVhZERhdGEAAWxwcm9jZXNzZWRfZG93bndhcmRfbWVzc2FnZXMQAQx1MzIAAThocm1wX3dhdGVybWFyaxABBE4AAJUEDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBOARTAAAEAIUBARhWZWM8VD4AAJkEDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBnQQEUwAABAChBAEYVmVjPFQ+AACdBAhgcG9sa2Fkb3RfY29yZV9wcmltaXRpdmVzTE91dGJvdW5kSHJtcE1lc3NhZ2UECElkAY0CAAgBJHJlY2lwaWVudI0CAQhJZAABEGRhdGE4AVBzcF9zdGQ6OnZlYzo6VmVjPHU4PgAAoQQAAAKdBAClBAQYT3B0aW9uBARUAakEAQgQTm9uZQAAABBTb21lBACpBAAAAQAAqQQMdHBvbGthZG90X3BhcmFjaGFpbl9wcmltaXRpdmVzKHByaW1pdGl2ZXM4VmFsaWRhdGlvbkNvZGUAAAQAOAEcVmVjPHU4PgAArQQMdHBvbGthZG90X3BhcmFjaGFpbl9wcmltaXRpdmVzKHByaW1pdGl2ZXMgSGVhZERhdGEAAAQAOAEcVmVjPHU4PgAAsQQAAAK1BAC1BAxMcG9sa2Fkb3RfcHJpbWl0aXZlcwh2N0xWYWxpZGl0eUF0dGVzdGF0aW9uAAEIIEltcGxpY2l0BABxBAFIVmFsaWRhdG9yU2lnbmF0dXJlAAEAIEV4cGxpY2l0BABxBAFIVmFsaWRhdG9yU2lnbmF0dXJlAAIAALkEAAACvQQAvQQMTHBvbGthZG90X3ByaW1pdGl2ZXMIdjdMRGlzcHV0ZVN0YXRlbWVudFNldAAADAE4Y2FuZGlkYXRlX2hhc2jBBAE0Q2FuZGlkYXRlSGFzaAABHHNlc3Npb24QATBTZXNzaW9uSW5kZXgAAShzdGF0ZW1lbnRzxQQB7FZlYzwoRGlzcHV0ZVN0YXRlbWVudCwgVmFsaWRhdG9ySW5kZXgsIFZhbGlkYXRvclNpZ25hdHVyZSk+AADBBAhgcG9sa2Fkb3RfY29yZV9wcmltaXRpdmVzNENhbmRpZGF0ZUhhc2gAAAQANAEQSGFzaAAAxQQAAALJBADJBAAABAzNBG0EcQQAzQQMTHBvbGthZG90X3ByaW1pdGl2ZXMIdjdARGlzcHV0ZVN0YXRlbWVudAABCBRWYWxpZAQA0QQBZFZhbGlkRGlzcHV0ZVN0YXRlbWVudEtpbmQAAAAcSW52YWxpZAQA2QQBbEludmFsaWREaXNwdXRlU3RhdGVtZW50S2luZAABAADRBAxMcG9sa2Fkb3RfcHJpbWl0aXZlcwh2N2RWYWxpZERpc3B1dGVTdGF0ZW1lbnRLaW5kAAEUIEV4cGxpY2l0AAAAPEJhY2tpbmdTZWNvbmRlZAQANAEQSGFzaAABADBCYWNraW5nVmFsaWQEADQBEEhhc2gAAgBAQXBwcm92YWxDaGVja2luZwADAIhBcHByb3ZhbENoZWNraW5nTXVsdGlwbGVDYW5kaWRhdGVzBADVBAFIVmVjPENhbmRpZGF0ZUhhc2g+AAQAANUEAAACwQQA2QQMTHBvbGthZG90X3ByaW1pdGl2ZXMIdjdsSW52YWxpZERpc3B1dGVTdGF0ZW1lbnRLaW5kAAEEIEV4cGxpY2l0AAAAAN0EEGxwb2xrYWRvdF9ydW50aW1lX3BhcmFjaGFpbnMUcGFyYXMYcGFsbGV0EENhbGwEBFQAASRYZm9yY2Vfc2V0X2N1cnJlbnRfY29kZQgBEHBhcmGNAgEYUGFyYUlkAAEgbmV3X2NvZGWpBAE4VmFsaWRhdGlvbkNvZGUAAAT4U2V0IHRoZSBzdG9yYWdlIGZvciB0aGUgcGFyYWNoYWluIHZhbGlkYXRpb24gY29kZSBpbW1lZGlhdGVseS5YZm9yY2Vfc2V0X2N1cnJlbnRfaGVhZAgBEHBhcmGNAgEYUGFyYUlkAAEgbmV3X2hlYWStBAEgSGVhZERhdGEAAQQBAVNldCB0aGUgc3RvcmFnZSBmb3IgdGhlIGN1cnJlbnQgcGFyYWNoYWluIGhlYWQgZGF0YSBpbW1lZGlhdGVseS5sZm9yY2Vfc2NoZWR1bGVfY29kZV91cGdyYWRlDAEQcGFyYY0CARhQYXJhSWQAASBuZXdfY29kZakEAThWYWxpZGF0aW9uQ29kZQABTHJlbGF5X3BhcmVudF9udW1iZXIQAURCbG9ja051bWJlckZvcjxUPgACBC0BU2NoZWR1bGUgYW4gdXBncmFkZSBhcyBpZiBpdCB3YXMgc2NoZWR1bGVkIGluIHRoZSBnaXZlbiByZWxheSBwYXJlbnQgYmxvY2suTGZvcmNlX25vdGVfbmV3X2hlYWQIARBwYXJhjQIBGFBhcmFJZAABIG5ld19oZWFkrQQBIEhlYWREYXRhAAMEHQFOb3RlIGEgbmV3IGJsb2NrIGhlYWQgZm9yIHBhcmEgd2l0aGluIHRoZSBjb250ZXh0IG9mIHRoZSBjdXJyZW50IGJsb2NrLkhmb3JjZV9xdWV1ZV9hY3Rpb24EARBwYXJhjQIBGFBhcmFJZAAEDPhQdXQgYSBwYXJhY2hhaW4gZGlyZWN0bHkgaW50byB0aGUgbmV4dCBzZXNzaW9uJ3MgYWN0aW9uIHF1ZXVlLvRXZSBjYW4ndCBxdWV1ZSBpdCBhbnkgc29vbmVyIHRoYW4gdGhpcyB3aXRob3V0IGdvaW5nIGludG8gdGhlOGluaXRpYWxpemVyLi4ubGFkZF90cnVzdGVkX3ZhbGlkYXRpb25fY29kZQQBPHZhbGlkYXRpb25fY29kZakEAThWYWxpZGF0aW9uQ29kZQAFOKBBZGRzIHRoZSB2YWxpZGF0aW9uIGNvZGUgdG8gdGhlIHN0b3JhZ2UuAFkBVGhlIGNvZGUgd2lsbCBub3QgYmUgYWRkZWQgaWYgaXQgaXMgYWxyZWFkeSBwcmVzZW50LiBBZGRpdGlvbmFsbHksIGlmIFBWRiBwcmUtY2hlY2tpbmfgaXMgcnVubmluZyBmb3IgdGhhdCBjb2RlLCBpdCB3aWxsIGJlIGluc3RhbnRseSBhY2NlcHRlZC4AUQFPdGhlcndpc2UsIHRoZSBjb2RlIHdpbGwgYmUgYWRkZWQgaW50byB0aGUgc3RvcmFnZS4gTm90ZSB0aGF0IHRoZSBjb2RlIHdpbGwgYmUgYWRkZWRhAWludG8gc3RvcmFnZSB3aXRoIHJlZmVyZW5jZSBjb3VudCAwLiBUaGlzIGlzIHRvIGFjY291bnQgdGhlIGZhY3QgdGhhdCB0aGVyZSBhcmUgbm8gdXNlcnNNAWZvciB0aGlzIGNvZGUgeWV0LiBUaGUgY2FsbGVyIHdpbGwgaGF2ZSB0byBtYWtlIHN1cmUgdGhhdCB0aGlzIGNvZGUgZXZlbnR1YWxseSBnZXRzSQF1c2VkIGJ5IHNvbWUgcGFyYWNoYWluIG9yIHJlbW92ZWQgZnJvbSB0aGUgc3RvcmFnZSB0byBhdm9pZCBzdG9yYWdlIGxlYWtzLiBGb3IgdGhlSQFsYXR0ZXIgcHJlZmVyIHRvIHVzZSB0aGUgYHBva2VfdW51c2VkX3ZhbGlkYXRpb25fY29kZWAgZGlzcGF0Y2hhYmxlIHRvIHJhdyBzdG9yYWdlNG1hbmlwdWxhdGlvbi4AUQFUaGlzIGZ1bmN0aW9uIGlzIG1haW5seSBtZWFudCB0byBiZSB1c2VkIGZvciB1cGdyYWRpbmcgcGFyYWNoYWlucyB0aGF0IGRvIG5vdCBmb2xsb3cJAXRoZSBnby1haGVhZCBzaWduYWwgd2hpbGUgdGhlIFBWRiBwcmUtY2hlY2tpbmcgZmVhdHVyZSBpcyBlbmFibGVkLmxwb2tlX3VudXNlZF92YWxpZGF0aW9uX2NvZGUEAVB2YWxpZGF0aW9uX2NvZGVfaGFzaI0EAUhWYWxpZGF0aW9uQ29kZUhhc2gABhQlAVJlbW92ZSB0aGUgdmFsaWRhdGlvbiBjb2RlIGZyb20gdGhlIHN0b3JhZ2UgaWZmIHRoZSByZWZlcmVuY2UgY291bnQgaXMgMC4AWQFUaGlzIGlzIGJldHRlciB0aGFuIHJlbW92aW5nIHRoZSBzdG9yYWdlIGRpcmVjdGx5LCBiZWNhdXNlIGl0IHdpbGwgbm90IHJlbW92ZSB0aGUgY29kZUEBdGhhdCB3YXMgc3VkZGVubHkgZ290IHVzZWQgYnkgc29tZSBwYXJhY2hhaW4gd2hpbGUgdGhpcyBkaXNwYXRjaGFibGUgd2FzIHBlbmRpbmcwZGlzcGF0Y2hpbmcubGluY2x1ZGVfcHZmX2NoZWNrX3N0YXRlbWVudAgBEHN0bXThBAFEUHZmQ2hlY2tTdGF0ZW1lbnQAASRzaWduYXR1cmVxBAFIVmFsaWRhdG9yU2lnbmF0dXJlAAcIVQFJbmNsdWRlcyBhIHN0YXRlbWVudCBmb3IgYSBQVkYgcHJlLWNoZWNraW5nIHZvdGUuIFBvdGVudGlhbGx5LCBmaW5hbGl6ZXMgdGhlIHZvdGUgYW5kQQFlbmFjdHMgdGhlIHJlc3VsdHMgaWYgdGhhdCB3YXMgdGhlIGxhc3Qgdm90ZSBiZWZvcmUgYWNoaWV2aW5nIHRoZSBzdXBlcm1ham9yaXR5LnRmb3JjZV9zZXRfbW9zdF9yZWNlbnRfY29udGV4dAgBEHBhcmGNAgEYUGFyYUlkAAEcY29udGV4dBABREJsb2NrTnVtYmVyRm9yPFQ+AAgEAQFTZXQgdGhlIHN0b3JhZ2UgZm9yIHRoZSBjdXJyZW50IHBhcmFjaGFpbiBoZWFkIGRhdGEgaW1tZWRpYXRlbHkuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLuEEDExwb2xrYWRvdF9wcmltaXRpdmVzCHY3RFB2ZkNoZWNrU3RhdGVtZW50AAAQARhhY2NlcHQgARBib29sAAEcc3ViamVjdI0EAUhWYWxpZGF0aW9uQ29kZUhhc2gAATRzZXNzaW9uX2luZGV4EAEwU2Vzc2lvbkluZGV4AAE8dmFsaWRhdG9yX2luZGV4bQQBOFZhbGlkYXRvckluZGV4AADlBBBscG9sa2Fkb3RfcnVudGltZV9wYXJhY2hhaW5zLGluaXRpYWxpemVyGHBhbGxldBBDYWxsBARUAAEENGZvcmNlX2FwcHJvdmUEARR1cF90bxABLEJsb2NrTnVtYmVyAAAMOQFJc3N1ZSBhIHNpZ25hbCB0byB0aGUgY29uc2Vuc3VzIGVuZ2luZSB0byBmb3JjaWJseSBhY3QgYXMgdGhvdWdoIGFsbCBwYXJhY2hhaW5RAWJsb2NrcyBpbiBhbGwgcmVsYXkgY2hhaW4gYmxvY2tzIHVwIHRvIGFuZCBpbmNsdWRpbmcgdGhlIGdpdmVuIG51bWJlciBpbiB0aGUgY3VycmVudKBjaGFpbiBhcmUgdmFsaWQgYW5kIHNob3VsZCBiZSBmaW5hbGl6ZWQuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLukEEGxwb2xrYWRvdF9ydW50aW1lX3BhcmFjaGFpbnMQaHJtcBhwYWxsZXQQQ2FsbAQEVAABLFhocm1wX2luaXRfb3Blbl9jaGFubmVsDAEkcmVjaXBpZW50jQIBGFBhcmFJZAABVHByb3Bvc2VkX21heF9jYXBhY2l0eRABDHUzMgABZHByb3Bvc2VkX21heF9tZXNzYWdlX3NpemUQAQx1MzIAAChNAUluaXRpYXRlIG9wZW5pbmcgYSBjaGFubmVsIGZyb20gYSBwYXJhY2hhaW4gdG8gYSBnaXZlbiByZWNpcGllbnQgd2l0aCBnaXZlbiBjaGFubmVsLHBhcmFtZXRlcnMuAFkBLSBgcHJvcG9zZWRfbWF4X2NhcGFjaXR5YCAtIHNwZWNpZmllcyBob3cgbWFueSBtZXNzYWdlcyBjYW4gYmUgaW4gdGhlIGNoYW5uZWwgYXQgb25jZS4tAS0gYHByb3Bvc2VkX21heF9tZXNzYWdlX3NpemVgIC0gc3BlY2lmaWVzIHRoZSBtYXhpbXVtIHNpemUgb2YgdGhlIG1lc3NhZ2VzLgARAVRoZXNlIG51bWJlcnMgYXJlIGEgc3ViamVjdCB0byB0aGUgcmVsYXktY2hhaW4gY29uZmlndXJhdGlvbiBsaW1pdHMuAFEBVGhlIGNoYW5uZWwgY2FuIGJlIG9wZW5lZCBvbmx5IGFmdGVyIHRoZSByZWNpcGllbnQgY29uZmlybXMgaXQgYW5kIG9ubHkgb24gYSBzZXNzaW9uHGNoYW5nZS5gaHJtcF9hY2NlcHRfb3Blbl9jaGFubmVsBAEYc2VuZGVyjQIBGFBhcmFJZAABDPBBY2NlcHQgYSBwZW5kaW5nIG9wZW4gY2hhbm5lbCByZXF1ZXN0IGZyb20gdGhlIGdpdmVuIHNlbmRlci4A9FRoZSBjaGFubmVsIHdpbGwgYmUgb3BlbmVkIG9ubHkgb24gdGhlIG5leHQgc2Vzc2lvbiBib3VuZGFyeS5IaHJtcF9jbG9zZV9jaGFubmVsBAEoY2hhbm5lbF9pZO0EATRIcm1wQ2hhbm5lbElkAAIQVQFJbml0aWF0ZSB1bmlsYXRlcmFsIGNsb3Npbmcgb2YgYSBjaGFubmVsLiBUaGUgb3JpZ2luIG11c3QgYmUgZWl0aGVyIHRoZSBzZW5kZXIgb3IgdGhlmHJlY2lwaWVudCBpbiB0aGUgY2hhbm5lbCBiZWluZyBjbG9zZWQuAMBUaGUgY2xvc3VyZSBjYW4gb25seSBoYXBwZW4gb24gYSBzZXNzaW9uIGNoYW5nZS5AZm9yY2VfY2xlYW5faHJtcAwBEHBhcmGNAgEYUGFyYUlkAAEsbnVtX2luYm91bmQQAQx1MzIAATBudW1fb3V0Ym91bmQQAQx1MzIAAxxdAVRoaXMgZXh0cmluc2ljIHRyaWdnZXJzIHRoZSBjbGVhbnVwIG9mIGFsbCB0aGUgSFJNUCBzdG9yYWdlIGl0ZW1zIHRoYXQgYSBwYXJhIG1heSBoYXZlLkkBTm9ybWFsbHkgdGhpcyBoYXBwZW5zIG9uY2UgcGVyIHNlc3Npb24sIGJ1dCB0aGlzIGFsbG93cyB5b3UgdG8gdHJpZ2dlciB0aGUgY2xlYW51cJRpbW1lZGlhdGVseSBmb3IgYSBzcGVjaWZpYyBwYXJhY2hhaW4uAFEBTnVtYmVyIG9mIGluYm91bmQgYW5kIG91dGJvdW5kIGNoYW5uZWxzIGZvciBgcGFyYWAgbXVzdCBiZSBwcm92aWRlZCBhcyB3aXRuZXNzIGRhdGEuAJBPcmlnaW4gbXVzdCBiZSB0aGUgYENoYW5uZWxNYW5hZ2VyYC5cZm9yY2VfcHJvY2Vzc19ocm1wX29wZW4EASBjaGFubmVscxABDHUzMgAEIKRGb3JjZSBwcm9jZXNzIEhSTVAgb3BlbiBjaGFubmVsIHJlcXVlc3RzLgBVAUlmIHRoZXJlIGFyZSBwZW5kaW5nIEhSTVAgb3BlbiBjaGFubmVsIHJlcXVlc3RzLCB5b3UgY2FuIHVzZSB0aGlzIGZ1bmN0aW9uIHRvIHByb2Nlc3OIYWxsIG9mIHRob3NlIHJlcXVlc3RzIGltbWVkaWF0ZWx5LgAJAVRvdGFsIG51bWJlciBvZiBvcGVuaW5nIGNoYW5uZWxzIG11c3QgYmUgcHJvdmlkZWQgYXMgd2l0bmVzcyBkYXRhLgCQT3JpZ2luIG11c3QgYmUgdGhlIGBDaGFubmVsTWFuYWdlcmAuYGZvcmNlX3Byb2Nlc3NfaHJtcF9jbG9zZQQBIGNoYW5uZWxzEAEMdTMyAAUgqEZvcmNlIHByb2Nlc3MgSFJNUCBjbG9zZSBjaGFubmVsIHJlcXVlc3RzLgBZAUlmIHRoZXJlIGFyZSBwZW5kaW5nIEhSTVAgY2xvc2UgY2hhbm5lbCByZXF1ZXN0cywgeW91IGNhbiB1c2UgdGhpcyBmdW5jdGlvbiB0byBwcm9jZXNziGFsbCBvZiB0aG9zZSByZXF1ZXN0cyBpbW1lZGlhdGVseS4ACQFUb3RhbCBudW1iZXIgb2YgY2xvc2luZyBjaGFubmVscyBtdXN0IGJlIHByb3ZpZGVkIGFzIHdpdG5lc3MgZGF0YS4AkE9yaWdpbiBtdXN0IGJlIHRoZSBgQ2hhbm5lbE1hbmFnZXJgLmBocm1wX2NhbmNlbF9vcGVuX3JlcXVlc3QIAShjaGFubmVsX2lk7QQBNEhybXBDaGFubmVsSWQAATRvcGVuX3JlcXVlc3RzEAEMdTMyAAYgXQFUaGlzIGNhbmNlbHMgYSBwZW5kaW5nIG9wZW4gY2hhbm5lbCByZXF1ZXN0LiBJdCBjYW4gYmUgY2FuY2VsZWQgYnkgZWl0aGVyIG9mIHRoZSBzZW5kZXIZAW9yIHRoZSByZWNpcGllbnQgZm9yIHRoYXQgcmVxdWVzdC4gVGhlIG9yaWdpbiBtdXN0IGJlIGVpdGhlciBvZiB0aG9zZS4AXQFUaGUgY2FuY2VsbGF0aW9uIGhhcHBlbnMgaW1tZWRpYXRlbHkuIEl0IGlzIG5vdCBwb3NzaWJsZSB0byBjYW5jZWwgdGhlIHJlcXVlc3QgaWYgaXQgaXNEYWxyZWFkeSBhY2NlcHRlZC4AWQFUb3RhbCBudW1iZXIgb2Ygb3BlbiByZXF1ZXN0cyAoaS5lLiBgSHJtcE9wZW5DaGFubmVsUmVxdWVzdHNMaXN0YCkgbXVzdCBiZSBwcm92aWRlZCBhczR3aXRuZXNzIGRhdGEuXGZvcmNlX29wZW5faHJtcF9jaGFubmVsEAEYc2VuZGVyjQIBGFBhcmFJZAABJHJlY2lwaWVudI0CARhQYXJhSWQAATBtYXhfY2FwYWNpdHkQAQx1MzIAAUBtYXhfbWVzc2FnZV9zaXplEAEMdTMyAAcgYQFPcGVuIGEgY2hhbm5lbCBmcm9tIGEgYHNlbmRlcmAgdG8gYSBgcmVjaXBpZW50YCBgUGFyYUlkYC4gQWx0aG91Z2ggb3BlbmVkIGJ5IGdvdmVybmFuY2UsQQF0aGUgYG1heF9jYXBhY2l0eWAgYW5kIGBtYXhfbWVzc2FnZV9zaXplYCBhcmUgc3RpbGwgc3ViamVjdCB0byB0aGUgUmVsYXkgQ2hhaW4nc0hjb25maWd1cmVkIGxpbWl0cy4ATQFFeHBlY3RlZCB1c2UgaXMgd2hlbiBvbmUgKGFuZCBvbmx5IG9uZSkgb2YgdGhlIGBQYXJhSWRgcyBpbnZvbHZlZCBpbiB0aGUgY2hhbm5lbCBpc8Bnb3Zlcm5lZCBieSB0aGUgc3lzdGVtLCBlLmcuIGEgc3lzdGVtIHBhcmFjaGFpbi4AkE9yaWdpbiBtdXN0IGJlIHRoZSBgQ2hhbm5lbE1hbmFnZXJgLmBlc3RhYmxpc2hfc3lzdGVtX2NoYW5uZWwIARhzZW5kZXKNAgEYUGFyYUlkAAEkcmVjaXBpZW50jQIBGFBhcmFJZAAIMFEBRXN0YWJsaXNoIGFuIEhSTVAgY2hhbm5lbCBiZXR3ZWVuIHR3byBzeXN0ZW0gY2hhaW5zLiBJZiB0aGUgY2hhbm5lbCBkb2VzIG5vdCBhbHJlYWR5UQFleGlzdCwgdGhlIHRyYW5zYWN0aW9uIGZlZXMgd2lsbCBiZSByZWZ1bmRlZCB0byB0aGUgY2FsbGVyLiBUaGUgc3lzdGVtIGRvZXMgbm90IHRha2VZAWRlcG9zaXRzIGZvciBjaGFubmVscyBiZXR3ZWVuIHN5c3RlbSBjaGFpbnMsIGFuZCBhdXRvbWF0aWNhbGx5IHNldHMgdGhlIG1lc3NhZ2UgbnVtYmVyGQFhbmQgc2l6ZSBsaW1pdHMgdG8gdGhlIG1heGltdW0gYWxsb3dlZCBieSB0aGUgbmV0d29yaydzIGNvbmZpZ3VyYXRpb24uAChBcmd1bWVudHM6AJQtIGBzZW5kZXJgOiBBIHN5c3RlbSBjaGFpbiwgYFBhcmFJZGAuoC0gYHJlY2lwaWVudGA6IEEgc3lzdGVtIGNoYWluLCBgUGFyYUlkYC4AVQFBbnkgc2lnbmVkIG9yaWdpbiBjYW4gY2FsbCB0aGlzIGZ1bmN0aW9uLCBidXQgX2JvdGhfIGlucHV0cyBNVVNUIGJlIHN5c3RlbSBjaGFpbnMuIElmwHRoZSBjaGFubmVsIGRvZXMgbm90IGV4aXN0IHlldCwgdGhlcmUgaXMgbm8gZmVlLlRwb2tlX2NoYW5uZWxfZGVwb3NpdHMIARhzZW5kZXKNAgEYUGFyYUlkAAEkcmVjaXBpZW50jQIBGFBhcmFJZAAJJFEBVXBkYXRlIHRoZSBkZXBvc2l0cyBoZWxkIGZvciBhbiBIUk1QIGNoYW5uZWwgdG8gdGhlIGxhdGVzdCBgQ29uZmlndXJhdGlvbmAuIENoYW5uZWxzsHdpdGggc3lzdGVtIGNoYWlucyBkbyBub3QgcmVxdWlyZSBhIGRlcG9zaXQuAChBcmd1bWVudHM6AHgtIGBzZW5kZXJgOiBBIGNoYWluLCBgUGFyYUlkYC6ELSBgcmVjaXBpZW50YDogQSBjaGFpbiwgYFBhcmFJZGAuAKRBbnkgc2lnbmVkIG9yaWdpbiBjYW4gY2FsbCB0aGlzIGZ1bmN0aW9uLnRlc3RhYmxpc2hfY2hhbm5lbF93aXRoX3N5c3RlbQQBTHRhcmdldF9zeXN0ZW1fY2hhaW6NAgEYUGFyYUlkAAocOQFFc3RhYmxpc2ggYSBiaWRpcmVjdGlvbmFsIEhSTVAgY2hhbm5lbCBiZXR3ZWVuIGEgcGFyYWNoYWluIGFuZCBhIHN5c3RlbSBjaGFpbi4AKEFyZ3VtZW50czoAyC0gYHRhcmdldF9zeXN0ZW1fY2hhaW5gOiBBIHN5c3RlbSBjaGFpbiwgYFBhcmFJZGAuALBUaGUgb3JpZ2luIG5lZWRzIHRvIGJlIHRoZSBwYXJhY2hhaW4gb3JpZ2luLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy7tBAx0cG9sa2Fkb3RfcGFyYWNoYWluX3ByaW1pdGl2ZXMocHJpbWl0aXZlczRIcm1wQ2hhbm5lbElkAAAIARhzZW5kZXKNAgEISWQAASRyZWNpcGllbnSNAgEISWQAAPEEEGxwb2xrYWRvdF9ydW50aW1lX3BhcmFjaGFpbnMgZGlzcHV0ZXMYcGFsbGV0EENhbGwEBFQAAQQ4Zm9yY2VfdW5mcmVlemUAAAAEDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMu9QQUbHBvbGthZG90X3J1bnRpbWVfcGFyYWNoYWlucyBkaXNwdXRlcyBzbGFzaGluZxhwYWxsZXQQQ2FsbAQEVAABBHByZXBvcnRfZGlzcHV0ZV9sb3N0X3Vuc2lnbmVkCAE0ZGlzcHV0ZV9wcm9vZvkEAURCb3g8RGlzcHV0ZVByb29mPgABPGtleV9vd25lcl9wcm9vZq0BAUBUOjpLZXlPd25lclByb29mAAAABA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLvkEEExwb2xrYWRvdF9wcmltaXRpdmVzCHY3IHNsYXNoaW5nMERpc3B1dGVQcm9vZgAAEAEkdGltZV9zbG90/QQBQERpc3B1dGVzVGltZVNsb3QAARBraW5kAQUBTFNsYXNoaW5nT2ZmZW5jZUtpbmQAATx2YWxpZGF0b3JfaW5kZXhtBAE4VmFsaWRhdG9ySW5kZXgAATB2YWxpZGF0b3JfaWQdAgEsVmFsaWRhdG9ySWQAAP0EEExwb2xrYWRvdF9wcmltaXRpdmVzCHY3IHNsYXNoaW5nQERpc3B1dGVzVGltZVNsb3QAAAgBNHNlc3Npb25faW5kZXgQATBTZXNzaW9uSW5kZXgAAThjYW5kaWRhdGVfaGFzaMEEATRDYW5kaWRhdGVIYXNoAAABBRBMcG9sa2Fkb3RfcHJpbWl0aXZlcwh2NyBzbGFzaGluZ0xTbGFzaGluZ09mZmVuY2VLaW5kAAEIKEZvckludmFsaWQAAAAwQWdhaW5zdFZhbGlkAAEAAAUFEGxwb2xrYWRvdF9ydW50aW1lX3BhcmFjaGFpbnNIYXNzaWduZXJfb25fZGVtYW5kGHBhbGxldBBDYWxsBARUAAEIXHBsYWNlX29yZGVyX2FsbG93X2RlYXRoCAEobWF4X2Ftb3VudBgBMEJhbGFuY2VPZjxUPgABHHBhcmFfaWSNAgEYUGFyYUlkAAA8lENyZWF0ZSBhIHNpbmdsZSBvbiBkZW1hbmQgY29yZSBvcmRlci5JAVdpbGwgdXNlIHRoZSBzcG90IHByaWNlIGZvciB0aGUgY3VycmVudCBibG9jayBhbmQgd2lsbCByZWFwIHRoZSBhY2NvdW50IGlmIG5lZWRlZC4ALFBhcmFtZXRlcnM6OQEtIGBvcmlnaW5gOiBUaGUgc2VuZGVyIG9mIHRoZSBjYWxsLCBmdW5kcyB3aWxsIGJlIHdpdGhkcmF3biBmcm9tIHRoaXMgYWNjb3VudC5JAS0gYG1heF9hbW91bnRgOiBUaGUgbWF4aW11bSBiYWxhbmNlIHRvIHdpdGhkcmF3IGZyb20gdGhlIG9yaWdpbiB0byBwbGFjZSBhbiBvcmRlci4NAS0gYHBhcmFfaWRgOiBBIGBQYXJhSWRgIHRoZSBvcmlnaW4gd2FudHMgdG8gcHJvdmlkZSBibG9ja3NwYWNlIGZvci4AHEVycm9yczrkLSBgSW5zdWZmaWNpZW50QmFsYW5jZWA6IGZyb20gdGhlIEN1cnJlbmN5IGltcGxlbWVudGF0aW9uNC0gYFF1ZXVlRnVsbGCALSBgU3BvdFByaWNlSGlnaGVyVGhhbk1heEFtb3VudGAAHEV2ZW50czpcLSBgT25EZW1hbmRPcmRlclBsYWNlZGBYcGxhY2Vfb3JkZXJfa2VlcF9hbGl2ZQgBKG1heF9hbW91bnQYATBCYWxhbmNlT2Y8VD4AARxwYXJhX2lkjQIBGFBhcmFJZAABPGEBU2FtZSBhcyB0aGUgW2BwbGFjZV9vcmRlcl9hbGxvd19kZWF0aGBdKFNlbGY6OnBsYWNlX29yZGVyX2FsbG93X2RlYXRoKSBjYWxsICwgYnV0IHdpdGggYdxjaGVjayB0aGF0IHBsYWNpbmcgdGhlIG9yZGVyIHdpbGwgbm90IHJlYXAgdGhlIGFjY291bnQuACxQYXJhbWV0ZXJzOjkBLSBgb3JpZ2luYDogVGhlIHNlbmRlciBvZiB0aGUgY2FsbCwgZnVuZHMgd2lsbCBiZSB3aXRoZHJhd24gZnJvbSB0aGlzIGFjY291bnQuSQEtIGBtYXhfYW1vdW50YDogVGhlIG1heGltdW0gYmFsYW5jZSB0byB3aXRoZHJhdyBmcm9tIHRoZSBvcmlnaW4gdG8gcGxhY2UgYW4gb3JkZXIuDQEtIGBwYXJhX2lkYDogQSBgUGFyYUlkYCB0aGUgb3JpZ2luIHdhbnRzIHRvIHByb3ZpZGUgYmxvY2tzcGFjZSBmb3IuABxFcnJvcnM65C0gYEluc3VmZmljaWVudEJhbGFuY2VgOiBmcm9tIHRoZSBDdXJyZW5jeSBpbXBsZW1lbnRhdGlvbjQtIGBRdWV1ZUZ1bGxggC0gYFNwb3RQcmljZUhpZ2hlclRoYW5NYXhBbW91bnRgABxFdmVudHM6XC0gYE9uRGVtYW5kT3JkZXJQbGFjZWRgBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLgkFEFxwb2xrYWRvdF9ydW50aW1lX2NvbW1vbjxwYXJhc19yZWdpc3RyYXIYcGFsbGV0EENhbGwEBFQAASQgcmVnaXN0ZXIMAQhpZI0CARhQYXJhSWQAATBnZW5lc2lzX2hlYWStBAEgSGVhZERhdGEAATx2YWxpZGF0aW9uX2NvZGWpBAE4VmFsaWRhdGlvbkNvZGUAAFD4UmVnaXN0ZXIgaGVhZCBkYXRhIGFuZCB2YWxpZGF0aW9uIGNvZGUgZm9yIGEgcmVzZXJ2ZWQgUGFyYSBJZC4AMCMjIEFyZ3VtZW50c8AtIGBvcmlnaW5gOiBNdXN0IGJlIGNhbGxlZCBieSBhIGBTaWduZWRgIG9yaWdpbi4tAS0gYGlkYDogVGhlIHBhcmEgSUQuIE11c3QgYmUgb3duZWQvbWFuYWdlZCBieSB0aGUgYG9yaWdpbmAgc2lnbmluZyBhY2NvdW50LgEBLSBgZ2VuZXNpc19oZWFkYDogVGhlIGdlbmVzaXMgaGVhZCBkYXRhIG9mIHRoZSBwYXJhY2hhaW4vdGhyZWFkLiUBLSBgdmFsaWRhdGlvbl9jb2RlYDogVGhlIGluaXRpYWwgdmFsaWRhdGlvbiBjb2RlIG9mIHRoZSBwYXJhY2hhaW4vdGhyZWFkLgBAIyMgRGVwb3NpdHMvRmVlcwkBVGhlIGFjY291bnQgd2l0aCB0aGUgb3JpZ2luYXRpbmcgc2lnbmF0dXJlIG11c3QgcmVzZXJ2ZSBhIGRlcG9zaXQuAE0BVGhlIGRlcG9zaXQgaXMgcmVxdWlyZWQgdG8gY292ZXIgdGhlIGNvc3RzIGFzc29jaWF0ZWQgd2l0aCBzdG9yaW5nIHRoZSBnZW5lc2lzIGhlYWR0ZGF0YSBhbmQgdGhlIHZhbGlkYXRpb24gY29kZS4xAVRoaXMgYWNjb3VudHMgZm9yIHRoZSBwb3RlbnRpYWwgdG8gc3RvcmUgdmFsaWRhdGlvbiBjb2RlIG9mIGEgc2l6ZSB1cCB0byB0aGXcYG1heF9jb2RlX3NpemVgLCBhcyBkZWZpbmVkIGluIHRoZSBjb25maWd1cmF0aW9uIHBhbGxldAAdAUFueXRoaW5nIGFscmVhZHkgcmVzZXJ2ZWQgcHJldmlvdXNseSBmb3IgdGhpcyBwYXJhIElEIGlzIGFjY291bnRlZCBmb3IuACQjIyBFdmVudHPUVGhlIGBSZWdpc3RlcmVkYCBldmVudCBpcyBlbWl0dGVkIGluIGNhc2Ugb2Ygc3VjY2Vzcy44Zm9yY2VfcmVnaXN0ZXIUAQx3aG8AATBUOjpBY2NvdW50SWQAARxkZXBvc2l0GAEwQmFsYW5jZU9mPFQ+AAEIaWSNAgEYUGFyYUlkAAEwZ2VuZXNpc19oZWFkrQQBIEhlYWREYXRhAAE8dmFsaWRhdGlvbl9jb2RlqQQBOFZhbGlkYXRpb25Db2RlAAEY3EZvcmNlIHRoZSByZWdpc3RyYXRpb24gb2YgYSBQYXJhIElkIG9uIHRoZSByZWxheSBjaGFpbi4AuFRoaXMgZnVuY3Rpb24gbXVzdCBiZSBjYWxsZWQgYnkgYSBSb290IG9yaWdpbi4AGQFUaGUgZGVwb3NpdCB0YWtlbiBjYW4gYmUgc3BlY2lmaWVkIGZvciB0aGlzIHJlZ2lzdHJhdGlvbi4gQW55IGBQYXJhSWRgGQFjYW4gYmUgcmVnaXN0ZXJlZCwgaW5jbHVkaW5nIHN1Yi0xMDAwIElEcyB3aGljaCBhcmUgU3lzdGVtIFBhcmFjaGFpbnMuKGRlcmVnaXN0ZXIEAQhpZI0CARhQYXJhSWQAAhAFAURlcmVnaXN0ZXIgYSBQYXJhIElkLCBmcmVlaW5nIGFsbCBkYXRhIGFuZCByZXR1cm5pbmcgYW55IGRlcG9zaXQuAFEBVGhlIGNhbGxlciBtdXN0IGJlIFJvb3QsIHRoZSBgcGFyYWAgb3duZXIsIG9yIHRoZSBgcGFyYWAgaXRzZWxmLiBUaGUgcGFyYSBtdXN0IGJlIGFuUG9uLWRlbWFuZCBwYXJhY2hhaW4uEHN3YXAIAQhpZI0CARhQYXJhSWQAARRvdGhlco0CARhQYXJhSWQAAzBBAVN3YXAgYSBsZWFzZSBob2xkaW5nIHBhcmFjaGFpbiB3aXRoIGFub3RoZXIgcGFyYWNoYWluLCBlaXRoZXIgb24tZGVtYW5kIG9yIGxlYXNlIGhvbGRpbmcuAAEBVGhlIG9yaWdpbiBtdXN0IGJlIFJvb3QsIHRoZSBgcGFyYWAgb3duZXIsIG9yIHRoZSBgcGFyYWAgaXRzZWxmLgBhAVRoZSBzd2FwIHdpbGwgaGFwcGVuIG9ubHkgaWYgdGhlcmUgaXMgYWxyZWFkeSBhbiBvcHBvc2l0ZSBzd2FwIHBlbmRpbmcuIElmIHRoZXJlIGlzIG5vdCxZAXRoZSBzd2FwIHdpbGwgYmUgc3RvcmVkIGluIHRoZSBwZW5kaW5nIHN3YXBzIG1hcCwgcmVhZHkgZm9yIGEgbGF0ZXIgY29uZmlybWF0b3J5IHN3YXAuAF0BVGhlIGBQYXJhSWRgcyByZW1haW4gbWFwcGVkIHRvIHRoZSBzYW1lIGhlYWQgZGF0YSBhbmQgY29kZSBzbyBleHRlcm5hbCBjb2RlIGNhbiByZWx5IG9uPQFgUGFyYUlkYCB0byBiZSBhIGxvbmctdGVybSBpZGVudGlmaWVyIG9mIGEgbm90aW9uYWwgInBhcmFjaGFpbiIuIEhvd2V2ZXIsIHRoZWlyNQFzY2hlZHVsaW5nIGluZm8gKGkuZS4gd2hldGhlciB0aGV5J3JlIGFuIG9uLWRlbWFuZCBwYXJhY2hhaW4gb3IgbGVhc2UgaG9sZGluZxUBcGFyYWNoYWluKSwgYXVjdGlvbiBpbmZvcm1hdGlvbiBhbmQgdGhlIGF1Y3Rpb24gZGVwb3NpdCBhcmUgc3dpdGNoZWQuLHJlbW92ZV9sb2NrBAEQcGFyYY0CARhQYXJhSWQABBANAVJlbW92ZSBhIG1hbmFnZXIgbG9jayBmcm9tIGEgcGFyYS4gVGhpcyB3aWxsIGFsbG93IHRoZSBtYW5hZ2VyIG9mIGE1AXByZXZpb3VzbHkgbG9ja2VkIHBhcmEgdG8gZGVyZWdpc3RlciBvciBzd2FwIGEgcGFyYSB3aXRob3V0IHVzaW5nIGdvdmVybmFuY2UuANxDYW4gb25seSBiZSBjYWxsZWQgYnkgdGhlIFJvb3Qgb3JpZ2luIG9yIHRoZSBwYXJhY2hhaW4uHHJlc2VydmUABUSUUmVzZXJ2ZSBhIFBhcmEgSWQgb24gdGhlIHJlbGF5IGNoYWluLgBNAVRoaXMgZnVuY3Rpb24gd2lsbCByZXNlcnZlIGEgbmV3IFBhcmEgSWQgdG8gYmUgb3duZWQvbWFuYWdlZCBieSB0aGUgb3JpZ2luIGFjY291bnQuYQFUaGUgb3JpZ2luIGFjY291bnQgaXMgYWJsZSB0byByZWdpc3RlciBoZWFkIGRhdGEgYW5kIHZhbGlkYXRpb24gY29kZSB1c2luZyBgcmVnaXN0ZXJgIHRvWQFjcmVhdGUgYW4gb24tZGVtYW5kIHBhcmFjaGFpbi4gVXNpbmcgdGhlIFNsb3RzIHBhbGxldCwgYW4gb24tZGVtYW5kIHBhcmFjaGFpbiBjYW4gdGhlbqRiZSB1cGdyYWRlZCB0byBhIGxlYXNlIGhvbGRpbmcgcGFyYWNoYWluLgAwIyMgQXJndW1lbnRzVQEtIGBvcmlnaW5gOiBNdXN0IGJlIGNhbGxlZCBieSBhIGBTaWduZWRgIG9yaWdpbi4gQmVjb21lcyB0aGUgbWFuYWdlci9vd25lciBvZiB0aGUgbmV3KCAgcGFyYSBJRC4AQCMjIERlcG9zaXRzL0ZlZXMhAVRoZSBvcmlnaW4gbXVzdCByZXNlcnZlIGEgZGVwb3NpdCBvZiBgUGFyYURlcG9zaXRgIGZvciB0aGUgcmVnaXN0cmF0aW9uLgAkIyMgRXZlbnRzWQFUaGUgYFJlc2VydmVkYCBldmVudCBpcyBlbWl0dGVkIGluIGNhc2Ugb2Ygc3VjY2Vzcywgd2hpY2ggcHJvdmlkZXMgdGhlIElEIHJlc2VydmVkIGZvchB1c2UuIGFkZF9sb2NrBAEQcGFyYY0CARhQYXJhSWQABhQJAUFkZCBhIG1hbmFnZXIgbG9jayBmcm9tIGEgcGFyYS4gVGhpcyB3aWxsIHByZXZlbnQgdGhlIG1hbmFnZXIgb2YgYYhwYXJhIHRvIGRlcmVnaXN0ZXIgb3Igc3dhcCBhIHBhcmEuAEkBQ2FuIGJlIGNhbGxlZCBieSBSb290LCB0aGUgcGFyYWNoYWluLCBvciB0aGUgcGFyYWNoYWluIG1hbmFnZXIgaWYgdGhlIHBhcmFjaGFpbiBpcyR1bmxvY2tlZC5Uc2NoZWR1bGVfY29kZV91cGdyYWRlCAEQcGFyYY0CARhQYXJhSWQAASBuZXdfY29kZakEAThWYWxpZGF0aW9uQ29kZQAHLHRTY2hlZHVsZSBhIHBhcmFjaGFpbiB1cGdyYWRlLgBVAVRoaXMgd2lsbCBraWNrIG9mZiBhIGNoZWNrIG9mIGBuZXdfY29kZWAgYnkgYWxsIHZhbGlkYXRvcnMuIEFmdGVyIHRoZSBtYWpvcml0eSBvZiB0aGVVAXZhbGlkYXRvcnMgaGF2ZSByZXBvcnRlZCBvbiB0aGUgdmFsaWRpdHkgb2YgdGhlIGNvZGUsIHRoZSBjb2RlIHdpbGwgZWl0aGVyIGJlIGVuYWN0ZWRVAW9yIHRoZSB1cGdyYWRlIHdpbGwgYmUgcmVqZWN0ZWQuIElmIHRoZSBjb2RlIHdpbGwgYmUgZW5hY3RlZCwgdGhlIGN1cnJlbnQgY29kZSBvZiB0aGVdAXBhcmFjaGFpbiB3aWxsIGJlIG92ZXJ3cml0dGVuIGRpcmVjdGx5LiBUaGlzIG1lYW5zIHRoYXQgYW55IFBvViB3aWxsIGJlIGNoZWNrZWQgYnkgdGhpc10BbmV3IGNvZGUuIFRoZSBwYXJhY2hhaW4gaXRzZWxmIHdpbGwgbm90IGJlIGluZm9ybWVkIGV4cGxpY2l0bHkgdGhhdCB0aGUgdmFsaWRhdGlvbiBjb2RlMGhhcyBjaGFuZ2VkLgBJAUNhbiBiZSBjYWxsZWQgYnkgUm9vdCwgdGhlIHBhcmFjaGFpbiwgb3IgdGhlIHBhcmFjaGFpbiBtYW5hZ2VyIGlmIHRoZSBwYXJhY2hhaW4gaXMkdW5sb2NrZWQuQHNldF9jdXJyZW50X2hlYWQIARBwYXJhjQIBGFBhcmFJZAABIG5ld19oZWFkrQQBIEhlYWREYXRhAAgQhFNldCB0aGUgcGFyYWNoYWluJ3MgY3VycmVudCBoZWFkLgBJAUNhbiBiZSBjYWxsZWQgYnkgUm9vdCwgdGhlIHBhcmFjaGFpbiwgb3IgdGhlIHBhcmFjaGFpbiBtYW5hZ2VyIGlmIHRoZSBwYXJhY2hhaW4gaXMkdW5sb2NrZWQuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLg0FEFxwb2xrYWRvdF9ydW50aW1lX2NvbW1vbhRzbG90cxhwYWxsZXQQQ2FsbAQEVAABDCxmb3JjZV9sZWFzZRQBEHBhcmGNAgEYUGFyYUlkAAEYbGVhc2VyAAEwVDo6QWNjb3VudElkAAEYYW1vdW50GAEwQmFsYW5jZU9mPFQ+AAEwcGVyaW9kX2JlZ2luEAFATGVhc2VQZXJpb2RPZjxUPgABMHBlcmlvZF9jb3VudBABQExlYXNlUGVyaW9kT2Y8VD4AABBNAUp1c3QgYSBjb25uZWN0IGludG8gdGhlIGBsZWFzZV9vdXRgIGNhbGwsIGluIGNhc2UgUm9vdCB3YW50cyB0byBmb3JjZSBzb21lIGxlYXNlIHRv/GhhcHBlbiBpbmRlcGVuZGVudGx5IG9mIGFueSBvdGhlciBvbi1jaGFpbiBtZWNoYW5pc20gdG8gdXNlIGl0LgD4VGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgbWF0Y2ggYFQ6OkZvcmNlT3JpZ2luYC5AY2xlYXJfYWxsX2xlYXNlcwQBEHBhcmGNAgEYUGFyYUlkAAEMTQFDbGVhciBhbGwgbGVhc2VzIGZvciBhIFBhcmEgSWQsIHJlZnVuZGluZyBhbnkgZGVwb3NpdHMgYmFjayB0byB0aGUgb3JpZ2luYWwgb3duZXJzLgD4VGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgbWF0Y2ggYFQ6OkZvcmNlT3JpZ2luYC48dHJpZ2dlcl9vbmJvYXJkBAEQcGFyYY0CARhQYXJhSWQAAhwlAVRyeSB0byBvbmJvYXJkIGEgcGFyYWNoYWluIHRoYXQgaGFzIGEgbGVhc2UgZm9yIHRoZSBjdXJyZW50IGxlYXNlIHBlcmlvZC4ARQFUaGlzIGZ1bmN0aW9uIGNhbiBiZSB1c2VmdWwgaWYgdGhlcmUgd2FzIHNvbWUgc3RhdGUgaXNzdWUgd2l0aCBhIHBhcmEgdGhhdCBzaG91bGQ5AWhhdmUgb25ib2FyZGVkLCBidXQgd2FzIHVuYWJsZSB0by4gQXMgbG9uZyBhcyB0aGV5IGhhdmUgYSBsZWFzZSBwZXJpb2QsIHdlIGNhbmxsZXQgdGhlbSBvbmJvYXJkIGZyb20gaGVyZS4AzE9yaWdpbiBtdXN0IGJlIHNpZ25lZCwgYnV0IGNhbiBiZSBjYWxsZWQgYnkgYW55b25lLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy4RBRBccG9sa2Fkb3RfcnVudGltZV9jb21tb24gYXVjdGlvbnMYcGFsbGV0EENhbGwEBFQAAQwsbmV3X2F1Y3Rpb24IASBkdXJhdGlvbuwBREJsb2NrTnVtYmVyRm9yPFQ+AAFIbGVhc2VfcGVyaW9kX2luZGV47AFATGVhc2VQZXJpb2RPZjxUPgAAFFRDcmVhdGUgYSBuZXcgYXVjdGlvbi4AUQFUaGlzIGNhbiBvbmx5IGhhcHBlbiB3aGVuIHRoZXJlIGlzbid0IGFscmVhZHkgYW4gYXVjdGlvbiBpbiBwcm9ncmVzcyBhbmQgbWF5IG9ubHkgYmUlAWNhbGxlZCBieSB0aGUgcm9vdCBvcmlnaW4uIEFjY2VwdHMgdGhlIGBkdXJhdGlvbmAgb2YgdGhpcyBhdWN0aW9uIGFuZCB0aGVZAWBsZWFzZV9wZXJpb2RfaW5kZXhgIG9mIHRoZSBpbml0aWFsIGxlYXNlIHBlcmlvZCBvZiB0aGUgZm91ciB0aGF0IGFyZSB0byBiZSBhdWN0aW9uZWQuDGJpZBQBEHBhcmEVBQEYUGFyYUlkAAE0YXVjdGlvbl9pbmRleOwBMEF1Y3Rpb25JbmRleAABKGZpcnN0X3Nsb3TsAUBMZWFzZVBlcmlvZE9mPFQ+AAEkbGFzdF9zbG907AFATGVhc2VQZXJpb2RPZjxUPgABGGFtb3VudPwBMEJhbGFuY2VPZjxUPgABQEkBTWFrZSBhIG5ldyBiaWQgZnJvbSBhbiBhY2NvdW50IChpbmNsdWRpbmcgYSBwYXJhY2hhaW4gYWNjb3VudCkgZm9yIGRlcGxveWluZyBhIG5ldyhwYXJhY2hhaW4uAFkBTXVsdGlwbGUgc2ltdWx0YW5lb3VzIGJpZHMgZnJvbSB0aGUgc2FtZSBiaWRkZXIgYXJlIGFsbG93ZWQgb25seSBhcyBsb25nIGFzIGFsbCBhY3RpdmU9AWJpZHMgb3ZlcmxhcCBlYWNoIG90aGVyIChpLmUuIGFyZSBtdXR1YWxseSBleGNsdXNpdmUpLiBCaWRzIGNhbm5vdCBiZSByZWRhY3RlZC4AVQEtIGBzdWJgIGlzIHRoZSBzdWItYmlkZGVyIElELCBhbGxvd2luZyBmb3IgbXVsdGlwbGUgY29tcGV0aW5nIGJpZHMgdG8gYmUgbWFkZSBieSAoYW5kcGZ1bmRlZCBieSkgdGhlIHNhbWUgYWNjb3VudC5NAS0gYGF1Y3Rpb25faW5kZXhgIGlzIHRoZSBpbmRleCBvZiB0aGUgYXVjdGlvbiB0byBiaWQgb24uIFNob3VsZCBqdXN0IGJlIHRoZSBwcmVzZW50aHZhbHVlIG9mIGBBdWN0aW9uQ291bnRlcmAuSQEtIGBmaXJzdF9zbG90YCBpcyB0aGUgZmlyc3QgbGVhc2UgcGVyaW9kIGluZGV4IG9mIHRoZSByYW5nZSB0byBiaWQgb24uIFRoaXMgaXMgdGhlCQFhYnNvbHV0ZSBsZWFzZSBwZXJpb2QgaW5kZXggdmFsdWUsIG5vdCBhbiBhdWN0aW9uLXNwZWNpZmljIG9mZnNldC5BAS0gYGxhc3Rfc2xvdGAgaXMgdGhlIGxhc3QgbGVhc2UgcGVyaW9kIGluZGV4IG9mIHRoZSByYW5nZSB0byBiaWQgb24uIFRoaXMgaXMgdGhlCQFhYnNvbHV0ZSBsZWFzZSBwZXJpb2QgaW5kZXggdmFsdWUsIG5vdCBhbiBhdWN0aW9uLXNwZWNpZmljIG9mZnNldC5JAS0gYGFtb3VudGAgaXMgdGhlIGFtb3VudCB0byBiaWQgdG8gYmUgaGVsZCBhcyBkZXBvc2l0IGZvciB0aGUgcGFyYWNoYWluIHNob3VsZCB0aGXIYmlkIHdpbi4gVGhpcyBhbW91bnQgaXMgaGVsZCB0aHJvdWdob3V0IHRoZSByYW5nZS44Y2FuY2VsX2F1Y3Rpb24AAgx4Q2FuY2VsIGFuIGluLXByb2dyZXNzIGF1Y3Rpb24uAIhDYW4gb25seSBiZSBjYWxsZWQgYnkgUm9vdCBvcmlnaW4uBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLhUFAAAGjQIAGQUQXHBvbGthZG90X3J1bnRpbWVfY29tbW9uJGNyb3dkbG9hbhhwYWxsZXQQQ2FsbAQEVAABJBhjcmVhdGUYARRpbmRleBUFARhQYXJhSWQAAQxjYXD8ATBCYWxhbmNlT2Y8VD4AATBmaXJzdF9wZXJpb2TsAUBMZWFzZVBlcmlvZE9mPFQ+AAEsbGFzdF9wZXJpb2TsAUBMZWFzZVBlcmlvZE9mPFQ+AAEMZW5k7AFEQmxvY2tOdW1iZXJGb3I8VD4AASB2ZXJpZmllch0FAUxPcHRpb248TXVsdGlTaWduZXI+AAAUTQFDcmVhdGUgYSBuZXcgY3Jvd2Rsb2FuaW5nIGNhbXBhaWduIGZvciBhIHBhcmFjaGFpbiBzbG90IHdpdGggdGhlIGdpdmVuIGxlYXNlIHBlcmlvZBhyYW5nZS4AXQFUaGlzIGFwcGxpZXMgYSBsb2NrIHRvIHlvdXIgcGFyYWNoYWluIGNvbmZpZ3VyYXRpb24sIGVuc3VyaW5nIHRoYXQgaXQgY2Fubm90IGJlIGNoYW5nZWRkYnkgdGhlIHBhcmFjaGFpbiBtYW5hZ2VyLihjb250cmlidXRlDAEUaW5kZXgVBQEYUGFyYUlkAAEUdmFsdWX8ATBCYWxhbmNlT2Y8VD4AASRzaWduYXR1cmUlBQFYT3B0aW9uPE11bHRpU2lnbmF0dXJlPgABCFEBQ29udHJpYnV0ZSB0byBhIGNyb3dkIHNhbGUuIFRoaXMgd2lsbCB0cmFuc2ZlciBzb21lIGJhbGFuY2Ugb3ZlciB0byBmdW5kIGEgcGFyYWNoYWluUQFzbG90LiBJdCB3aWxsIGJlIHdpdGhkcmF3YWJsZSB3aGVuIHRoZSBjcm93ZGxvYW4gaGFzIGVuZGVkIGFuZCB0aGUgZnVuZHMgYXJlIHVudXNlZC4gd2l0aGRyYXcIAQx3aG8AATBUOjpBY2NvdW50SWQAARRpbmRleBUFARhQYXJhSWQAAkTAV2l0aGRyYXcgZnVsbCBiYWxhbmNlIG9mIGEgc3BlY2lmaWMgY29udHJpYnV0b3IuAMBPcmlnaW4gbXVzdCBiZSBzaWduZWQsIGJ1dCBjYW4gY29tZSBmcm9tIGFueW9uZS4AXQFUaGUgZnVuZCBtdXN0IGJlIGVpdGhlciBpbiwgb3IgcmVhZHkgZm9yLCByZXRpcmVtZW50LiBGb3IgYSBmdW5kIHRvIGJlICppbiogcmV0aXJlbWVudCxJAXRoZW4gdGhlIHJldGlyZW1lbnQgZmxhZyBtdXN0IGJlIHNldC4gRm9yIGEgZnVuZCB0byBiZSByZWFkeSBmb3IgcmV0aXJlbWVudCwgdGhlbjqcLSBpdCBtdXN0IG5vdCBhbHJlYWR5IGJlIGluIHJldGlyZW1lbnQ7TQEtIHRoZSBhbW91bnQgb2YgcmFpc2VkIGZ1bmRzIG11c3QgYmUgYmlnZ2VyIHRoYW4gdGhlIF9mcmVlXyBiYWxhbmNlIG9mIHRoZSBhY2NvdW50OzQtIGFuZCBlaXRoZXI6vCAgLSB0aGUgYmxvY2sgbnVtYmVyIG11c3QgYmUgYXQgbGVhc3QgYGVuZGA7IG9yLQEgIC0gdGhlIGN1cnJlbnQgbGVhc2UgcGVyaW9kIG11c3QgYmUgZ3JlYXRlciB0aGFuIHRoZSBmdW5kJ3MgYGxhc3RfcGVyaW9kYC4AVQFJbiB0aGlzIGNhc2UsIHRoZSBmdW5kJ3MgcmV0aXJlbWVudCBmbGFnIGlzIHNldCBhbmQgaXRzIGBlbmRgIGlzIHJlc2V0IHRvIHRoZSBjdXJyZW50NGJsb2NrIG51bWJlci4A8C0gYHdob2A6IFRoZSBhY2NvdW50IHdob3NlIGNvbnRyaWJ1dGlvbiBzaG91bGQgYmUgd2l0aGRyYXduLhkBLSBgaW5kZXhgOiBUaGUgcGFyYWNoYWluIHRvIHdob3NlIGNyb3dkbG9hbiB0aGUgY29udHJpYnV0aW9uIHdhcyBtYWRlLhhyZWZ1bmQEARRpbmRleBUFARhQYXJhSWQAAxTgQXV0b21hdGljYWxseSByZWZ1bmQgY29udHJpYnV0b3JzIG9mIGFuIGVuZGVkIGNyb3dkbG9hbi4hAUR1ZSB0byB3ZWlnaHQgcmVzdHJpY3Rpb25zLCB0aGlzIGZ1bmN0aW9uIG1heSBuZWVkIHRvIGJlIGNhbGxlZCBtdWx0aXBsZUkBdGltZXMgdG8gZnVsbHkgcmVmdW5kIGFsbCB1c2Vycy4gV2Ugd2lsbCByZWZ1bmQgYFJlbW92ZUtleXNMaW1pdGAgdXNlcnMgYXQgYSB0aW1lLgDAT3JpZ2luIG11c3QgYmUgc2lnbmVkLCBidXQgY2FuIGNvbWUgZnJvbSBhbnlvbmUuIGRpc3NvbHZlBAEUaW5kZXgVBQEYUGFyYUlkAAQEVQFSZW1vdmUgYSBmdW5kIGFmdGVyIHRoZSByZXRpcmVtZW50IHBlcmlvZCBoYXMgZW5kZWQgYW5kIGFsbCBmdW5kcyBoYXZlIGJlZW4gcmV0dXJuZWQuEGVkaXQYARRpbmRleBUFARhQYXJhSWQAAQxjYXD8ATBCYWxhbmNlT2Y8VD4AATBmaXJzdF9wZXJpb2TsAUBMZWFzZVBlcmlvZE9mPFQ+AAEsbGFzdF9wZXJpb2TsAUBMZWFzZVBlcmlvZE9mPFQ+AAEMZW5k7AFEQmxvY2tOdW1iZXJGb3I8VD4AASB2ZXJpZmllch0FAUxPcHRpb248TXVsdGlTaWduZXI+AAUM0EVkaXQgdGhlIGNvbmZpZ3VyYXRpb24gZm9yIGFuIGluLXByb2dyZXNzIGNyb3dkbG9hbi4AiENhbiBvbmx5IGJlIGNhbGxlZCBieSBSb290IG9yaWdpbi4gYWRkX21lbW8IARRpbmRleI0CARhQYXJhSWQAARBtZW1vOAEcVmVjPHU4PgAGDOxBZGQgYW4gb3B0aW9uYWwgbWVtbyB0byBhbiBleGlzdGluZyBjcm93ZGxvYW4gY29udHJpYnV0aW9uLgAtAU9yaWdpbiBtdXN0IGJlIFNpZ25lZCwgYW5kIHRoZSB1c2VyIG11c3QgaGF2ZSBjb250cmlidXRlZCB0byB0aGUgY3Jvd2Rsb2FuLhBwb2tlBAEUaW5kZXiNAgEYUGFyYUlkAAcMdFBva2UgdGhlIGZ1bmQgaW50byBgTmV3UmFpc2VgANxPcmlnaW4gbXVzdCBiZSBTaWduZWQsIGFuZCB0aGUgZnVuZCBoYXMgbm9uLXplcm8gcmFpc2UuOGNvbnRyaWJ1dGVfYWxsCAEUaW5kZXgVBQEYUGFyYUlkAAEkc2lnbmF0dXJlJQUBWE9wdGlvbjxNdWx0aVNpZ25hdHVyZT4ACAxhAUNvbnRyaWJ1dGUgeW91ciBlbnRpcmUgYmFsYW5jZSB0byBhIGNyb3dkIHNhbGUuIFRoaXMgd2lsbCB0cmFuc2ZlciB0aGUgZW50aXJlIGJhbGFuY2Ugb2ZRAWEgdXNlciBvdmVyIHRvIGZ1bmQgYSBwYXJhY2hhaW4gc2xvdC4gSXQgd2lsbCBiZSB3aXRoZHJhd2FibGUgd2hlbiB0aGUgY3Jvd2Rsb2FuIGhhc3xlbmRlZCBhbmQgdGhlIGZ1bmRzIGFyZSB1bnVzZWQuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLh0FBBhPcHRpb24EBFQBIQUBCBBOb25lAAAAEFNvbWUEACEFAAABAAAhBQgoc3BfcnVudGltZSxNdWx0aVNpZ25lcgABDBxFZDI1NTE5BAAEATxlZDI1NTE5OjpQdWJsaWMAAAAcU3IyNTUxOQQABAE8c3IyNTUxOTo6UHVibGljAAEAFEVjZHNhBAAtAgE0ZWNkc2E6OlB1YmxpYwACAAAlBQQYT3B0aW9uBARUASkFAQgQTm9uZQAAABBTb21lBAApBQAAAQAAKQUIKHNwX3J1bnRpbWU4TXVsdGlTaWduYXR1cmUAAQwcRWQyNTUxOQQASQIBSGVkMjU1MTk6OlNpZ25hdHVyZQAAABxTcjI1NTE5BABJAgFIc3IyNTUxOTo6U2lnbmF0dXJlAAEAFEVjZHNhBACtAgFAZWNkc2E6OlNpZ25hdHVyZQACAAAtBRBscG9sa2Fkb3RfcnVudGltZV9wYXJhY2hhaW5zIGNvcmV0aW1lGHBhbGxldBBDYWxsBARUAAEMSHJlcXVlc3RfY29yZV9jb3VudAQBFGNvdW50bQEBDHUxNgABGFEBUmVxdWVzdCB0aGUgY29uZmlndXJhdGlvbiB0byBiZSB1cGRhdGVkIHdpdGggdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgY29yZXMuIFdhcm5pbmc6UQFTaW5jZSB0aGlzIG9ubHkgc2NoZWR1bGVzIGEgY29uZmlndXJhdGlvbiB1cGRhdGUsIGl0IHRha2VzIHR3byBzZXNzaW9ucyB0byBjb21lIGludG8cZWZmZWN0LgCYLSBgb3JpZ2luYDogUm9vdCBvciB0aGUgQ29yZXRpbWUgQ2hhaW6ALSBgY291bnRgOiB0b3RhbCBudW1iZXIgb2YgY29yZXNIcmVxdWVzdF9yZXZlbnVlX2F0BAEQd2hlbhABLEJsb2NrTnVtYmVyAAIQYQFSZXF1ZXN0IHRvIGNsYWltIHRoZSBpbnN0YW50YW5lb3VzIGNvcmV0aW1lIHNhbGVzIHJldmVudWUgc3RhcnRpbmcgZnJvbSB0aGUgYmxvY2sgaXQgd2FzXQFsYXN0IGNsYWltZWQgdW50aWwgYW5kIHVwIHRvIHRoZSBibG9jayBzcGVjaWZpZWQuIFRoZSBjbGFpbWVkIGFtb3VudCB2YWx1ZSBpcyBzZW50IGJhY2tRAXRvIHRoZSBDb3JldGltZSBjaGFpbiBpbiBhIGBub3RpZnlfcmV2ZW51ZWAgbWVzc2FnZS4gQXQgdGhlIHNhbWUgdGltZSwgdGhlIGFtb3VudCBpc4R0ZWxlcG9ydGVkIHRvIHRoZSBDb3JldGltZSBjaGFpbi4sYXNzaWduX2NvcmUQARBjb3JlbQEBPEJyb2tlckNvcmVJbmRleAABFGJlZ2luEAFEQmxvY2tOdW1iZXJGb3I8VD4AAShhc3NpZ25tZW50MQUBjFZlYzwoQ29yZUFzc2lnbm1lbnQsIFBhcnRzT2Y1NzYwMCk+AAEgZW5kX2hpbnRhAgFkT3B0aW9uPEJsb2NrTnVtYmVyRm9yPFQ+PgAEJFkBUmVjZWl2ZSBpbnN0cnVjdGlvbnMgZnJvbSB0aGUgYEV4dGVybmFsQnJva2VyT3JpZ2luYCwgZGV0YWlsaW5nIGhvdyBhIHNwZWNpZmljIGNvcmUgaXMsdG8gYmUgdXNlZC4ALFBhcmFtZXRlcnM6IQEtYG9yaWdpbmA6IFRoZSBgRXh0ZXJuYWxCcm9rZXJPcmlnaW5gLCBhc3N1bWVkIHRvIGJlIHRoZSBjb3JldGltZSBjaGFpbi6sLWBjb3JlYDogVGhlIGNvcmUgdGhhdCBzaG91bGQgYmUgc2NoZWR1bGVkLtgtYGJlZ2luYDogVGhlIHN0YXJ0aW5nIGJsb2NraGVpZ2h0IG9mIHRoZSBpbnN0cnVjdGlvbi7ULWBhc3NpZ25tZW50YDogSG93IHRoZSBibG9ja3NwYWNlIHNob3VsZCBiZSB1dGlsaXNlZC5ZAS1gZW5kX2hpbnRgOiBBbiBvcHRpb25hbCBoaW50IGFzIHRvIHdoZW4gdGhpcyBwYXJ0aWN1bGFyIHNldCBvZiBpbnN0cnVjdGlvbnMgd2lsbCBlbmQuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLjEFAAACNQUANQUAAAQIOQU9BQA5BQw0cGFsbGV0X2Jyb2tlckhjb3JldGltZV9pbnRlcmZhY2U4Q29yZUFzc2lnbm1lbnQAAQwQSWRsZQAAABBQb29sAAEAEFRhc2sEABABGFRhc2tJZAACAAA9BQxscG9sa2Fkb3RfcnVudGltZV9wYXJhY2hhaW5zRGFzc2lnbmVyX2NvcmV0aW1lMFBhcnRzT2Y1NzYwMAAABABtAQEMdTE2AABBBQxscGFsbGV0X3N0YXRlX3RyaWVfbWlncmF0aW9uGHBhbGxldBBDYWxsBARUAAEYWGNvbnRyb2xfYXV0b19taWdyYXRpb24EATBtYXliZV9jb25maWdFBQFcT3B0aW9uPE1pZ3JhdGlvbkxpbWl0cz4AAAyAQ29udHJvbCB0aGUgYXV0b21hdGljIG1pZ3JhdGlvbi4ADQFUaGUgZGlzcGF0Y2ggb3JpZ2luIG9mIHRoaXMgY2FsbCBtdXN0IGJlIFtgQ29uZmlnOjpDb250cm9sT3JpZ2luYF0uQGNvbnRpbnVlX21pZ3JhdGUMARhsaW1pdHNJBQE8TWlncmF0aW9uTGltaXRzAAE8cmVhbF9zaXplX3VwcGVyEAEMdTMyAAEwd2l0bmVzc190YXNrTQUBQE1pZ3JhdGlvblRhc2s8VD4AAVS4Q29udGludWUgdGhlIG1pZ3JhdGlvbiBmb3IgdGhlIGdpdmVuIGBsaW1pdHNgLgDsVGhlIGRpc3BhdGNoIG9yaWdpbiBvZiB0aGlzIGNhbGwgY2FuIGJlIGFueSBzaWduZWQgYWNjb3VudC4AXQFUaGlzIHRyYW5zYWN0aW9uIGhhcyBOTyBNT05FVEFSWSBJTkNFTlRJVkVTLiBjYWxsaW5nIGl0IHdpbGwgbm90IHJld2FyZCBhbnlvbmUuIEFsYmVpdCzsVXBvbiBzdWNjZXNzZnVsIGV4ZWN1dGlvbiwgdGhlIHRyYW5zYWN0aW9uIGZlZSBpcyByZXR1cm5lZC4AQQFUaGUgKHBvdGVudGlhbGx5IG92ZXItZXN0aW1hdGVkKSBvZiB0aGUgYnl0ZSBsZW5ndGggb2YgYWxsIHRoZSBkYXRhIHJlYWQgbXVzdCBiZVkBcHJvdmlkZWQgZm9yIHVwLWZyb250IGZlZS1wYXltZW50IGFuZCB3ZWlnaGluZy4gSW4gZXNzZW5jZSwgdGhlIGNhbGxlciBpcyBndWFyYW50ZWVpbmdJAXRoYXQgZXhlY3V0aW5nIHRoZSBjdXJyZW50IGBNaWdyYXRpb25UYXNrYCB3aXRoIHRoZSBnaXZlbiBgbGltaXRzYCB3aWxsIG5vdCBleGNlZWSUYHJlYWxfc2l6ZV91cHBlcmAgYnl0ZXMgb2YgcmVhZCBkYXRhLgBFAVRoZSBgd2l0bmVzc190YXNrYCBpcyBtZXJlbHkgYSBoZWxwZXIgdG8gcHJldmVudCB0aGUgY2FsbGVyIGZyb20gYmVpbmcgc2xhc2hlZCBvcl0BZ2VuZXJhbGx5IHRyaWdnZXIgYSBtaWdyYXRpb24gdGhhdCB0aGV5IGRvIG5vdCBpbnRlbmQuIFRoaXMgcGFyYW1ldGVyIGlzIGp1c3QgYSBtZXNzYWdlPQFmcm9tIGNhbGxlciwgc2F5aW5nIHRoYXQgdGhleSBiZWxpZXZlZCBgd2l0bmVzc190YXNrYCB3YXMgdGhlIGxhc3Qgc3RhdGUgb2YgdGhlWQFtaWdyYXRpb24sIGFuZCB0aGV5IG9ubHkgd2lzaCBmb3IgdGhlaXIgdHJhbnNhY3Rpb24gdG8gZG8gYW55dGhpbmcsIGlmIHRoaXMgYXNzdW1wdGlvbhEBaG9sZHMuIEluIGNhc2UgYHdpdG5lc3NfdGFza2AgZG9lcyBub3QgbWF0Y2gsIHRoZSB0cmFuc2FjdGlvbiBmYWlscy4AOQFCYXNlZCBvbiB0aGUgZG9jdW1lbnRhdGlvbiBvZiBbYE1pZ3JhdGlvblRhc2s6Om1pZ3JhdGVfdW50aWxfZXhoYXVzdGlvbmBdLCB0aGVNAXJlY29tbWVuZGVkIHdheSBvZiBkb2luZyB0aGlzIGlzIHRvIHBhc3MgYSBgbGltaXRgIHRoYXQgb25seSBib3VuZHMgYGNvdW50YCwgYXMgdGhlnGBzaXplYCBsaW1pdCBjYW4gYWx3YXlzIGJlIG92ZXJ3cml0dGVuLkhtaWdyYXRlX2N1c3RvbV90b3AIARBrZXlzhQEBMFZlYzxWZWM8dTg+PgABMHdpdG5lc3Nfc2l6ZRABDHUzMgACEAkBTWlncmF0ZSB0aGUgbGlzdCBvZiB0b3Aga2V5cyBieSBpdGVyYXRpbmcgZWFjaCBvZiB0aGVtIG9uZSBieSBvbmUuAFUBVGhpcyBkb2VzIG5vdCBhZmZlY3QgdGhlIGdsb2JhbCBtaWdyYXRpb24gcHJvY2VzcyB0cmFja2VyIChbYE1pZ3JhdGlvblByb2Nlc3NgXSksIGFuZPxzaG91bGQgb25seSBiZSB1c2VkIGluIGNhc2UgYW55IGtleXMgYXJlIGxlZnRvdmVyIGR1ZSB0byBhIGJ1Zy5QbWlncmF0ZV9jdXN0b21fY2hpbGQMARByb290OAEcVmVjPHU4PgABKGNoaWxkX2tleXOFAQEwVmVjPFZlYzx1OD4+AAEodG90YWxfc2l6ZRABDHUzMgADGBEBTWlncmF0ZSB0aGUgbGlzdCBvZiBjaGlsZCBrZXlzIGJ5IGl0ZXJhdGluZyBlYWNoIG9mIHRoZW0gb25lIGJ5IG9uZS4ADQFBbGwgb2YgdGhlIGdpdmVuIGNoaWxkIGtleXMgbXVzdCBiZSBwcmVzZW50IHVuZGVyIG9uZSBgY2hpbGRfcm9vdGAuAFUBVGhpcyBkb2VzIG5vdCBhZmZlY3QgdGhlIGdsb2JhbCBtaWdyYXRpb24gcHJvY2VzcyB0cmFja2VyIChbYE1pZ3JhdGlvblByb2Nlc3NgXSksIGFuZPxzaG91bGQgb25seSBiZSB1c2VkIGluIGNhc2UgYW55IGtleXMgYXJlIGxlZnRvdmVyIGR1ZSB0byBhIGJ1Zy5Uc2V0X3NpZ25lZF9tYXhfbGltaXRzBAEYbGltaXRzSQUBPE1pZ3JhdGlvbkxpbWl0cwAEBLhTZXQgdGhlIG1heGltdW0gbGltaXQgb2YgdGhlIHNpZ25lZCBtaWdyYXRpb24uSGZvcmNlX3NldF9wcm9ncmVzcwgBMHByb2dyZXNzX3RvcFEFATRQcm9ncmVzc09mPFQ+AAE4cHJvZ3Jlc3NfY2hpbGRRBQE0UHJvZ3Jlc3NPZjxUPgAFJMhGb3JjZWZ1bGx5IHNldCB0aGUgcHJvZ3Jlc3MgdGhlIHJ1bm5pbmcgbWlncmF0aW9uLgBdAVRoaXMgaXMgb25seSB1c2VmdWwgaW4gb25lIGNhc2U6IHRoZSBuZXh0IGtleSB0byBtaWdyYXRlIGlzIHRvbyBiaWcgdG8gYmUgbWlncmF0ZWQgd2l0aFUBYSBzaWduZWQgYWNjb3VudCwgaW4gYSBwYXJhY2hhaW4gY29udGV4dCwgYW5kIHdlIHNpbXBseSB3YW50IHRvIHNraXAgaXQuIEEgcmVhc29uYWJsZWEBZXhhbXBsZSBvZiB0aGlzIHdvdWxkIGJlIGA6Y29kZTpgLCB3aGljaCBpcyBib3RoIHZlcnkgZXhwZW5zaXZlIHRvIG1pZ3JhdGUsIGFuZCBjb21tb25seaR1c2VkLCBzbyBwcm9iYWJseSBpdCBpcyBhbHJlYWR5IG1pZ3JhdGVkLgBdAUluIGNhc2UgeW91IG1lc3MgdGhpbmdzIHVwLCB5b3UgY2FuIGFsc28sIGluIHByaW5jaXBsZSwgdXNlIHRoaXMgdG8gcmVzZXQgdGhlIG1pZ3JhdGlvbiBwcm9jZXNzLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy5FBQQYT3B0aW9uBARUAUkFAQgQTm9uZQAAABBTb21lBABJBQAAAQAASQUMbHBhbGxldF9zdGF0ZV90cmllX21pZ3JhdGlvbhhwYWxsZXQ8TWlncmF0aW9uTGltaXRzAAAIARBzaXplEAEMdTMyAAEQaXRlbRABDHUzMgAATQUMbHBhbGxldF9zdGF0ZV90cmllX21pZ3JhdGlvbhhwYWxsZXQ0TWlncmF0aW9uVGFzawQEVAAAFAEwcHJvZ3Jlc3NfdG9wUQUBNFByb2dyZXNzT2Y8VD4AAThwcm9ncmVzc19jaGlsZFEFATRQcm9ncmVzc09mPFQ+AAEQc2l6ZRABDHUzMgABJHRvcF9pdGVtcxABDHUzMgABLGNoaWxkX2l0ZW1zEAEMdTMyAABRBQxscGFsbGV0X3N0YXRlX3RyaWVfbWlncmF0aW9uGHBhbGxldCBQcm9ncmVzcwQkTWF4S2V5TGVuAAEMHFRvU3RhcnQAAAAcTGFzdEtleQQAVQUBZEJvdW5kZWRWZWM8dTgsIE1heEtleUxlbj4AAQAgQ29tcGxldGUAAgAAVQUMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEIBFMAAAQAOAEYVmVjPFQ+AABZBQwocGFsbGV0X3hjbRhwYWxsZXQQQ2FsbAQEVAABOBBzZW5kCAEQZGVzdEUBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAEcbWVzc2FnZV0FAVRCb3g8VmVyc2lvbmVkWGNtPCgpPj4AAAA8dGVsZXBvcnRfYXNzZXRzEAEQZGVzdEUBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAEsYmVuZWZpY2lhcnlFAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgABGGFzc2V0c10GAVBCb3g8VmVyc2lvbmVkQXNzZXRzPgABOGZlZV9hc3NldF9pdGVtEAEMdTMyAAFIEQFUZWxlcG9ydCBzb21lIGFzc2V0cyBmcm9tIHRoZSBsb2NhbCBjaGFpbiB0byBzb21lIGRlc3RpbmF0aW9uIGNoYWluLgAdASoqVGhpcyBmdW5jdGlvbiBpcyBkZXByZWNhdGVkOiBVc2UgYGxpbWl0ZWRfdGVsZXBvcnRfYXNzZXRzYCBpbnN0ZWFkLioqAFEBRmVlIHBheW1lbnQgb24gdGhlIGRlc3RpbmF0aW9uIHNpZGUgaXMgbWFkZSBmcm9tIHRoZSBhc3NldCBpbiB0aGUgYGFzc2V0c2AgdmVjdG9yIG9mYQFpbmRleCBgZmVlX2Fzc2V0X2l0ZW1gLiBUaGUgd2VpZ2h0IGxpbWl0IGZvciBmZWVzIGlzIG5vdCBwcm92aWRlZCBhbmQgdGh1cyBpcyB1bmxpbWl0ZWQstHdpdGggYWxsIGZlZXMgdGFrZW4gYXMgbmVlZGVkIGZyb20gdGhlIGFzc2V0LgApAS0gYG9yaWdpbmA6IE11c3QgYmUgY2FwYWJsZSBvZiB3aXRoZHJhd2luZyB0aGUgYGFzc2V0c2AgYW5kIGV4ZWN1dGluZyBYQ00uJQEtIGBkZXN0YDogRGVzdGluYXRpb24gY29udGV4dCBmb3IgdGhlIGFzc2V0cy4gV2lsbCB0eXBpY2FsbHkgYmUgYFtQYXJlbnQsYQEgIFBhcmFjaGFpbiguLildYCB0byBzZW5kIGZyb20gcGFyYWNoYWluIHRvIHBhcmFjaGFpbiwgb3IgYFtQYXJhY2hhaW4oLi4pXWAgdG8gc2VuZCBmcm9tVCAgcmVsYXkgdG8gcGFyYWNoYWluLlUBLSBgYmVuZWZpY2lhcnlgOiBBIGJlbmVmaWNpYXJ5IGxvY2F0aW9uIGZvciB0aGUgYXNzZXRzIGluIHRoZSBjb250ZXh0IG9mIGBkZXN0YC4gV2lsbJggIGdlbmVyYWxseSBiZSBhbiBgQWNjb3VudElkMzJgIHZhbHVlLlkBLSBgYXNzZXRzYDogVGhlIGFzc2V0cyB0byBiZSB3aXRoZHJhd24uIFRoaXMgc2hvdWxkIGluY2x1ZGUgdGhlIGFzc2V0cyB1c2VkIHRvIHBheSB0aGVoICBmZWUgb24gdGhlIGBkZXN0YCBjaGFpbi5NAS0gYGZlZV9hc3NldF9pdGVtYDogVGhlIGluZGV4IGludG8gYGFzc2V0c2Agb2YgdGhlIGl0ZW0gd2hpY2ggc2hvdWxkIGJlIHVzZWQgdG8gcGF5HCAgZmVlcy5ccmVzZXJ2ZV90cmFuc2Zlcl9hc3NldHMQARBkZXN0RQEBWEJveDxWZXJzaW9uZWRMb2NhdGlvbj4AASxiZW5lZmljaWFyeUUBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAEYYXNzZXRzXQYBUEJveDxWZXJzaW9uZWRBc3NldHM+AAE4ZmVlX2Fzc2V0X2l0ZW0QAQx1MzIAAnhdAVRyYW5zZmVyIHNvbWUgYXNzZXRzIGZyb20gdGhlIGxvY2FsIGNoYWluIHRvIHRoZSBkZXN0aW5hdGlvbiBjaGFpbiB0aHJvdWdoIHRoZWlyIGxvY2FsLHhkZXN0aW5hdGlvbiBvciByZW1vdGUgcmVzZXJ2ZS4APQFgYXNzZXRzYCBtdXN0IGhhdmUgc2FtZSByZXNlcnZlIGxvY2F0aW9uIGFuZCBtYXkgbm90IGJlIHRlbGVwb3J0YWJsZSB0byBgZGVzdGAuTQEgLSBgYXNzZXRzYCBoYXZlIGxvY2FsIHJlc2VydmU6IHRyYW5zZmVyIGFzc2V0cyB0byBzb3ZlcmVpZ24gYWNjb3VudCBvZiBkZXN0aW5hdGlvbk0BICAgY2hhaW4gYW5kIGZvcndhcmQgYSBub3RpZmljYXRpb24gWENNIHRvIGBkZXN0YCB0byBtaW50IGFuZCBkZXBvc2l0IHJlc2VydmUtYmFzZWRsICAgYXNzZXRzIHRvIGBiZW5lZmljaWFyeWAuVQEgLSBgYXNzZXRzYCBoYXZlIGRlc3RpbmF0aW9uIHJlc2VydmU6IGJ1cm4gbG9jYWwgYXNzZXRzIGFuZCBmb3J3YXJkIGEgbm90aWZpY2F0aW9uIHRvWQEgICBgZGVzdGAgY2hhaW4gdG8gd2l0aGRyYXcgdGhlIHJlc2VydmUgYXNzZXRzIGZyb20gdGhpcyBjaGFpbidzIHNvdmVyZWlnbiBhY2NvdW50IGFuZIQgICBkZXBvc2l0IHRoZW0gdG8gYGJlbmVmaWNpYXJ5YC5hASAtIGBhc3NldHNgIGhhdmUgcmVtb3RlIHJlc2VydmU6IGJ1cm4gbG9jYWwgYXNzZXRzLCBmb3J3YXJkIFhDTSB0byByZXNlcnZlIGNoYWluIHRvIG1vdmVhASAgIHJlc2VydmVzIGZyb20gdGhpcyBjaGFpbidzIFNBIHRvIGBkZXN0YCBjaGFpbidzIFNBLCBhbmQgZm9yd2FyZCBhbm90aGVyIFhDTSB0byBgZGVzdGD0ICAgdG8gbWludCBhbmQgZGVwb3NpdCByZXNlcnZlLWJhc2VkIGFzc2V0cyB0byBgYmVuZWZpY2lhcnlgLgA9ASoqVGhpcyBmdW5jdGlvbiBpcyBkZXByZWNhdGVkOiBVc2UgYGxpbWl0ZWRfcmVzZXJ2ZV90cmFuc2Zlcl9hc3NldHNgIGluc3RlYWQuKioAUQFGZWUgcGF5bWVudCBvbiB0aGUgZGVzdGluYXRpb24gc2lkZSBpcyBtYWRlIGZyb20gdGhlIGFzc2V0IGluIHRoZSBgYXNzZXRzYCB2ZWN0b3Igb2ZhAWluZGV4IGBmZWVfYXNzZXRfaXRlbWAuIFRoZSB3ZWlnaHQgbGltaXQgZm9yIGZlZXMgaXMgbm90IHByb3ZpZGVkIGFuZCB0aHVzIGlzIHVubGltaXRlZCy0d2l0aCBhbGwgZmVlcyB0YWtlbiBhcyBuZWVkZWQgZnJvbSB0aGUgYXNzZXQuACkBLSBgb3JpZ2luYDogTXVzdCBiZSBjYXBhYmxlIG9mIHdpdGhkcmF3aW5nIHRoZSBgYXNzZXRzYCBhbmQgZXhlY3V0aW5nIFhDTS4lAS0gYGRlc3RgOiBEZXN0aW5hdGlvbiBjb250ZXh0IGZvciB0aGUgYXNzZXRzLiBXaWxsIHR5cGljYWxseSBiZSBgW1BhcmVudCxhASAgUGFyYWNoYWluKC4uKV1gIHRvIHNlbmQgZnJvbSBwYXJhY2hhaW4gdG8gcGFyYWNoYWluLCBvciBgW1BhcmFjaGFpbiguLildYCB0byBzZW5kIGZyb21UICByZWxheSB0byBwYXJhY2hhaW4uVQEtIGBiZW5lZmljaWFyeWA6IEEgYmVuZWZpY2lhcnkgbG9jYXRpb24gZm9yIHRoZSBhc3NldHMgaW4gdGhlIGNvbnRleHQgb2YgYGRlc3RgLiBXaWxsmCAgZ2VuZXJhbGx5IGJlIGFuIGBBY2NvdW50SWQzMmAgdmFsdWUuWQEtIGBhc3NldHNgOiBUaGUgYXNzZXRzIHRvIGJlIHdpdGhkcmF3bi4gVGhpcyBzaG91bGQgaW5jbHVkZSB0aGUgYXNzZXRzIHVzZWQgdG8gcGF5IHRoZcggIGZlZSBvbiB0aGUgYGRlc3RgIChhbmQgcG9zc2libHkgcmVzZXJ2ZSkgY2hhaW5zLk0BLSBgZmVlX2Fzc2V0X2l0ZW1gOiBUaGUgaW5kZXggaW50byBgYXNzZXRzYCBvZiB0aGUgaXRlbSB3aGljaCBzaG91bGQgYmUgdXNlZCB0byBwYXkcICBmZWVzLhxleGVjdXRlCAEcbWVzc2FnZWEGAbRCb3g8VmVyc2lvbmVkWGNtPDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPj4AAShtYXhfd2VpZ2h0KAEYV2VpZ2h0AAMg0EV4ZWN1dGUgYW4gWENNIG1lc3NhZ2UgZnJvbSBhIGxvY2FsLCBzaWduZWQsIG9yaWdpbi4ATQFBbiBldmVudCBpcyBkZXBvc2l0ZWQgaW5kaWNhdGluZyB3aGV0aGVyIGBtc2dgIGNvdWxkIGJlIGV4ZWN1dGVkIGNvbXBsZXRlbHkgb3Igb25seShwYXJ0aWFsbHkuAF0BTm8gbW9yZSB0aGFuIGBtYXhfd2VpZ2h0YCB3aWxsIGJlIHVzZWQgaW4gaXRzIGF0dGVtcHRlZCBleGVjdXRpb24uIElmIHRoaXMgaXMgbGVzcyB0aGFuQQF0aGUgbWF4aW11bSBhbW91bnQgb2Ygd2VpZ2h0IHRoYXQgdGhlIG1lc3NhZ2UgY291bGQgdGFrZSB0byBiZSBleGVjdXRlZCwgdGhlbiBub3xleGVjdXRpb24gYXR0ZW1wdCB3aWxsIGJlIG1hZGUuRGZvcmNlX3hjbV92ZXJzaW9uCAEgbG9jYXRpb24NAQE0Qm94PExvY2F0aW9uPgABHHZlcnNpb24QAShYY21WZXJzaW9uAAQYSQFFeHRvbGwgdGhhdCBhIHBhcnRpY3VsYXIgZGVzdGluYXRpb24gY2FuIGJlIGNvbW11bmljYXRlZCB3aXRoIHRocm91Z2ggYSBwYXJ0aWN1bGFyPHZlcnNpb24gb2YgWENNLgDcLSBgb3JpZ2luYDogTXVzdCBiZSBhbiBvcmlnaW4gc3BlY2lmaWVkIGJ5IEFkbWluT3JpZ2luLtgtIGBsb2NhdGlvbmA6IFRoZSBkZXN0aW5hdGlvbiB0aGF0IGlzIGJlaW5nIGRlc2NyaWJlZC4RAS0gYHhjbV92ZXJzaW9uYDogVGhlIGxhdGVzdCB2ZXJzaW9uIG9mIFhDTSB0aGF0IGBsb2NhdGlvbmAgc3VwcG9ydHMuZGZvcmNlX2RlZmF1bHRfeGNtX3ZlcnNpb24EAURtYXliZV94Y21fdmVyc2lvbmECAUhPcHRpb248WGNtVmVyc2lvbj4ABRRZAVNldCBhIHNhZmUgWENNIHZlcnNpb24gKHRoZSB2ZXJzaW9uIHRoYXQgWENNIHNob3VsZCBiZSBlbmNvZGVkIHdpdGggaWYgdGhlIG1vc3QgcmVjZW50tHZlcnNpb24gYSBkZXN0aW5hdGlvbiBjYW4gYWNjZXB0IGlzIHVua25vd24pLgDcLSBgb3JpZ2luYDogTXVzdCBiZSBhbiBvcmlnaW4gc3BlY2lmaWVkIGJ5IEFkbWluT3JpZ2luLjkBLSBgbWF5YmVfeGNtX3ZlcnNpb25gOiBUaGUgZGVmYXVsdCBYQ00gZW5jb2RpbmcgdmVyc2lvbiwgb3IgYE5vbmVgIHRvIGRpc2FibGUueGZvcmNlX3N1YnNjcmliZV92ZXJzaW9uX25vdGlmeQQBIGxvY2F0aW9uRQEBWEJveDxWZXJzaW9uZWRMb2NhdGlvbj4ABhA5AUFzayBhIGxvY2F0aW9uIHRvIG5vdGlmeSB1cyByZWdhcmRpbmcgdGhlaXIgWENNIHZlcnNpb24gYW5kIGFueSBjaGFuZ2VzIHRvIGl0LgDcLSBgb3JpZ2luYDogTXVzdCBiZSBhbiBvcmlnaW4gc3BlY2lmaWVkIGJ5IEFkbWluT3JpZ2luLlkBLSBgbG9jYXRpb25gOiBUaGUgbG9jYXRpb24gdG8gd2hpY2ggd2Ugc2hvdWxkIHN1YnNjcmliZSBmb3IgWENNIHZlcnNpb24gbm90aWZpY2F0aW9ucy6AZm9yY2VfdW5zdWJzY3JpYmVfdmVyc2lvbl9ub3RpZnkEASBsb2NhdGlvbkUBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAcYSQFSZXF1aXJlIHRoYXQgYSBwYXJ0aWN1bGFyIGRlc3RpbmF0aW9uIHNob3VsZCBubyBsb25nZXIgbm90aWZ5IHVzIHJlZ2FyZGluZyBhbnkgWENNQHZlcnNpb24gY2hhbmdlcy4A3C0gYG9yaWdpbmA6IE11c3QgYmUgYW4gb3JpZ2luIHNwZWNpZmllZCBieSBBZG1pbk9yaWdpbi49AS0gYGxvY2F0aW9uYDogVGhlIGxvY2F0aW9uIHRvIHdoaWNoIHdlIGFyZSBjdXJyZW50bHkgc3Vic2NyaWJlZCBmb3IgWENNIHZlcnNpb26oICBub3RpZmljYXRpb25zIHdoaWNoIHdlIG5vIGxvbmdlciBkZXNpcmUufGxpbWl0ZWRfcmVzZXJ2ZV90cmFuc2Zlcl9hc3NldHMUARBkZXN0RQEBWEJveDxWZXJzaW9uZWRMb2NhdGlvbj4AASxiZW5lZmljaWFyeUUBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAEYYXNzZXRzXQYBUEJveDxWZXJzaW9uZWRBc3NldHM+AAE4ZmVlX2Fzc2V0X2l0ZW0QAQx1MzIAATB3ZWlnaHRfbGltaXQRBgEsV2VpZ2h0TGltaXQACHhdAVRyYW5zZmVyIHNvbWUgYXNzZXRzIGZyb20gdGhlIGxvY2FsIGNoYWluIHRvIHRoZSBkZXN0aW5hdGlvbiBjaGFpbiB0aHJvdWdoIHRoZWlyIGxvY2FsLHhkZXN0aW5hdGlvbiBvciByZW1vdGUgcmVzZXJ2ZS4APQFgYXNzZXRzYCBtdXN0IGhhdmUgc2FtZSByZXNlcnZlIGxvY2F0aW9uIGFuZCBtYXkgbm90IGJlIHRlbGVwb3J0YWJsZSB0byBgZGVzdGAuTQEgLSBgYXNzZXRzYCBoYXZlIGxvY2FsIHJlc2VydmU6IHRyYW5zZmVyIGFzc2V0cyB0byBzb3ZlcmVpZ24gYWNjb3VudCBvZiBkZXN0aW5hdGlvbk0BICAgY2hhaW4gYW5kIGZvcndhcmQgYSBub3RpZmljYXRpb24gWENNIHRvIGBkZXN0YCB0byBtaW50IGFuZCBkZXBvc2l0IHJlc2VydmUtYmFzZWRsICAgYXNzZXRzIHRvIGBiZW5lZmljaWFyeWAuVQEgLSBgYXNzZXRzYCBoYXZlIGRlc3RpbmF0aW9uIHJlc2VydmU6IGJ1cm4gbG9jYWwgYXNzZXRzIGFuZCBmb3J3YXJkIGEgbm90aWZpY2F0aW9uIHRvWQEgICBgZGVzdGAgY2hhaW4gdG8gd2l0aGRyYXcgdGhlIHJlc2VydmUgYXNzZXRzIGZyb20gdGhpcyBjaGFpbidzIHNvdmVyZWlnbiBhY2NvdW50IGFuZIQgICBkZXBvc2l0IHRoZW0gdG8gYGJlbmVmaWNpYXJ5YC5hASAtIGBhc3NldHNgIGhhdmUgcmVtb3RlIHJlc2VydmU6IGJ1cm4gbG9jYWwgYXNzZXRzLCBmb3J3YXJkIFhDTSB0byByZXNlcnZlIGNoYWluIHRvIG1vdmVhASAgIHJlc2VydmVzIGZyb20gdGhpcyBjaGFpbidzIFNBIHRvIGBkZXN0YCBjaGFpbidzIFNBLCBhbmQgZm9yd2FyZCBhbm90aGVyIFhDTSB0byBgZGVzdGD0ICAgdG8gbWludCBhbmQgZGVwb3NpdCByZXNlcnZlLWJhc2VkIGFzc2V0cyB0byBgYmVuZWZpY2lhcnlgLgBRAUZlZSBwYXltZW50IG9uIHRoZSBkZXN0aW5hdGlvbiBzaWRlIGlzIG1hZGUgZnJvbSB0aGUgYXNzZXQgaW4gdGhlIGBhc3NldHNgIHZlY3RvciBvZmEBaW5kZXggYGZlZV9hc3NldF9pdGVtYCwgdXAgdG8gZW5vdWdoIHRvIHBheSBmb3IgYHdlaWdodF9saW1pdGAgb2Ygd2VpZ2h0LiBJZiBtb3JlIHdlaWdodFkBaXMgbmVlZGVkIHRoYW4gYHdlaWdodF9saW1pdGAsIHRoZW4gdGhlIG9wZXJhdGlvbiB3aWxsIGZhaWwgYW5kIHRoZSBzZW50IGFzc2V0cyBtYXkgYmUgYXQgcmlzay4AKQEtIGBvcmlnaW5gOiBNdXN0IGJlIGNhcGFibGUgb2Ygd2l0aGRyYXdpbmcgdGhlIGBhc3NldHNgIGFuZCBleGVjdXRpbmcgWENNLiUBLSBgZGVzdGA6IERlc3RpbmF0aW9uIGNvbnRleHQgZm9yIHRoZSBhc3NldHMuIFdpbGwgdHlwaWNhbGx5IGJlIGBbUGFyZW50LGEBICBQYXJhY2hhaW4oLi4pXWAgdG8gc2VuZCBmcm9tIHBhcmFjaGFpbiB0byBwYXJhY2hhaW4sIG9yIGBbUGFyYWNoYWluKC4uKV1gIHRvIHNlbmQgZnJvbVQgIHJlbGF5IHRvIHBhcmFjaGFpbi5VAS0gYGJlbmVmaWNpYXJ5YDogQSBiZW5lZmljaWFyeSBsb2NhdGlvbiBmb3IgdGhlIGFzc2V0cyBpbiB0aGUgY29udGV4dCBvZiBgZGVzdGAuIFdpbGyYICBnZW5lcmFsbHkgYmUgYW4gYEFjY291bnRJZDMyYCB2YWx1ZS5ZAS0gYGFzc2V0c2A6IFRoZSBhc3NldHMgdG8gYmUgd2l0aGRyYXduLiBUaGlzIHNob3VsZCBpbmNsdWRlIHRoZSBhc3NldHMgdXNlZCB0byBwYXkgdGhlyCAgZmVlIG9uIHRoZSBgZGVzdGAgKGFuZCBwb3NzaWJseSByZXNlcnZlKSBjaGFpbnMuTQEtIGBmZWVfYXNzZXRfaXRlbWA6IFRoZSBpbmRleCBpbnRvIGBhc3NldHNgIG9mIHRoZSBpdGVtIHdoaWNoIHNob3VsZCBiZSB1c2VkIHRvIHBheRwgIGZlZXMuRQEtIGB3ZWlnaHRfbGltaXRgOiBUaGUgcmVtb3RlLXNpZGUgd2VpZ2h0IGxpbWl0LCBpZiBhbnksIGZvciB0aGUgWENNIGZlZSBwdXJjaGFzZS5cbGltaXRlZF90ZWxlcG9ydF9hc3NldHMUARBkZXN0RQEBWEJveDxWZXJzaW9uZWRMb2NhdGlvbj4AASxiZW5lZmljaWFyeUUBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAEYYXNzZXRzXQYBUEJveDxWZXJzaW9uZWRBc3NldHM+AAE4ZmVlX2Fzc2V0X2l0ZW0QAQx1MzIAATB3ZWlnaHRfbGltaXQRBgEsV2VpZ2h0TGltaXQACUgRAVRlbGVwb3J0IHNvbWUgYXNzZXRzIGZyb20gdGhlIGxvY2FsIGNoYWluIHRvIHNvbWUgZGVzdGluYXRpb24gY2hhaW4uAFEBRmVlIHBheW1lbnQgb24gdGhlIGRlc3RpbmF0aW9uIHNpZGUgaXMgbWFkZSBmcm9tIHRoZSBhc3NldCBpbiB0aGUgYGFzc2V0c2AgdmVjdG9yIG9mYQFpbmRleCBgZmVlX2Fzc2V0X2l0ZW1gLCB1cCB0byBlbm91Z2ggdG8gcGF5IGZvciBgd2VpZ2h0X2xpbWl0YCBvZiB3ZWlnaHQuIElmIG1vcmUgd2VpZ2h0WQFpcyBuZWVkZWQgdGhhbiBgd2VpZ2h0X2xpbWl0YCwgdGhlbiB0aGUgb3BlcmF0aW9uIHdpbGwgZmFpbCBhbmQgdGhlIHNlbnQgYXNzZXRzIG1heSBiZSBhdCByaXNrLgApAS0gYG9yaWdpbmA6IE11c3QgYmUgY2FwYWJsZSBvZiB3aXRoZHJhd2luZyB0aGUgYGFzc2V0c2AgYW5kIGV4ZWN1dGluZyBYQ00uJQEtIGBkZXN0YDogRGVzdGluYXRpb24gY29udGV4dCBmb3IgdGhlIGFzc2V0cy4gV2lsbCB0eXBpY2FsbHkgYmUgYFtQYXJlbnQsYQEgIFBhcmFjaGFpbiguLildYCB0byBzZW5kIGZyb20gcGFyYWNoYWluIHRvIHBhcmFjaGFpbiwgb3IgYFtQYXJhY2hhaW4oLi4pXWAgdG8gc2VuZCBmcm9tVCAgcmVsYXkgdG8gcGFyYWNoYWluLlUBLSBgYmVuZWZpY2lhcnlgOiBBIGJlbmVmaWNpYXJ5IGxvY2F0aW9uIGZvciB0aGUgYXNzZXRzIGluIHRoZSBjb250ZXh0IG9mIGBkZXN0YC4gV2lsbJggIGdlbmVyYWxseSBiZSBhbiBgQWNjb3VudElkMzJgIHZhbHVlLlkBLSBgYXNzZXRzYDogVGhlIGFzc2V0cyB0byBiZSB3aXRoZHJhd24uIFRoaXMgc2hvdWxkIGluY2x1ZGUgdGhlIGFzc2V0cyB1c2VkIHRvIHBheSB0aGVoICBmZWUgb24gdGhlIGBkZXN0YCBjaGFpbi5NAS0gYGZlZV9hc3NldF9pdGVtYDogVGhlIGluZGV4IGludG8gYGFzc2V0c2Agb2YgdGhlIGl0ZW0gd2hpY2ggc2hvdWxkIGJlIHVzZWQgdG8gcGF5HCAgZmVlcy5FAS0gYHdlaWdodF9saW1pdGA6IFRoZSByZW1vdGUtc2lkZSB3ZWlnaHQgbGltaXQsIGlmIGFueSwgZm9yIHRoZSBYQ00gZmVlIHB1cmNoYXNlLkBmb3JjZV9zdXNwZW5zaW9uBAEkc3VzcGVuZGVkIAEQYm9vbAAKEPRTZXQgb3IgdW5zZXQgdGhlIGdsb2JhbCBzdXNwZW5zaW9uIHN0YXRlIG9mIHRoZSBYQ00gZXhlY3V0b3IuANwtIGBvcmlnaW5gOiBNdXN0IGJlIGFuIG9yaWdpbiBzcGVjaWZpZWQgYnkgQWRtaW5PcmlnaW4u0C0gYHN1c3BlbmRlZGA6IGB0cnVlYCB0byBzdXNwZW5kLCBgZmFsc2VgIHRvIHJlc3VtZS48dHJhbnNmZXJfYXNzZXRzFAEQZGVzdEUBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAEsYmVuZWZpY2lhcnlFAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgABGGFzc2V0c10GAVBCb3g8VmVyc2lvbmVkQXNzZXRzPgABOGZlZV9hc3NldF9pdGVtEAEMdTMyAAEwd2VpZ2h0X2xpbWl0EQYBLFdlaWdodExpbWl0AAuEXQFUcmFuc2ZlciBzb21lIGFzc2V0cyBmcm9tIHRoZSBsb2NhbCBjaGFpbiB0byB0aGUgZGVzdGluYXRpb24gY2hhaW4gdGhyb3VnaCB0aGVpciBsb2NhbCzQZGVzdGluYXRpb24gb3IgcmVtb3RlIHJlc2VydmUsIG9yIHRocm91Z2ggdGVsZXBvcnRzLgBRAUZlZSBwYXltZW50IG9uIHRoZSBkZXN0aW5hdGlvbiBzaWRlIGlzIG1hZGUgZnJvbSB0aGUgYXNzZXQgaW4gdGhlIGBhc3NldHNgIHZlY3RvciBvZjUBaW5kZXggYGZlZV9hc3NldF9pdGVtYCAoaGVuY2UgcmVmZXJyZWQgdG8gYXMgYGZlZXNgKSwgdXAgdG8gZW5vdWdoIHRvIHBheSBmb3JBAWB3ZWlnaHRfbGltaXRgIG9mIHdlaWdodC4gSWYgbW9yZSB3ZWlnaHQgaXMgbmVlZGVkIHRoYW4gYHdlaWdodF9saW1pdGAsIHRoZW4gdGhl3G9wZXJhdGlvbiB3aWxsIGZhaWwgYW5kIHRoZSBzZW50IGFzc2V0cyBtYXkgYmUgYXQgcmlzay4AYQFgYXNzZXRzYCAoZXhjbHVkaW5nIGBmZWVzYCkgbXVzdCBoYXZlIHNhbWUgcmVzZXJ2ZSBsb2NhdGlvbiBvciBvdGhlcndpc2UgYmUgdGVsZXBvcnRhYmxlsHRvIGBkZXN0YCwgbm8gbGltaXRhdGlvbnMgaW1wb3NlZCBvbiBgZmVlc2AuTQEgLSBmb3IgbG9jYWwgcmVzZXJ2ZTogdHJhbnNmZXIgYXNzZXRzIHRvIHNvdmVyZWlnbiBhY2NvdW50IG9mIGRlc3RpbmF0aW9uIGNoYWluIGFuZE0BICAgZm9yd2FyZCBhIG5vdGlmaWNhdGlvbiBYQ00gdG8gYGRlc3RgIHRvIG1pbnQgYW5kIGRlcG9zaXQgcmVzZXJ2ZS1iYXNlZCBhc3NldHMgdG9EICAgYGJlbmVmaWNpYXJ5YC5hASAtIGZvciBkZXN0aW5hdGlvbiByZXNlcnZlOiBidXJuIGxvY2FsIGFzc2V0cyBhbmQgZm9yd2FyZCBhIG5vdGlmaWNhdGlvbiB0byBgZGVzdGAgY2hhaW5ZASAgIHRvIHdpdGhkcmF3IHRoZSByZXNlcnZlIGFzc2V0cyBmcm9tIHRoaXMgY2hhaW4ncyBzb3ZlcmVpZ24gYWNjb3VudCBhbmQgZGVwb3NpdCB0aGVtUCAgIHRvIGBiZW5lZmljaWFyeWAuXQEgLSBmb3IgcmVtb3RlIHJlc2VydmU6IGJ1cm4gbG9jYWwgYXNzZXRzLCBmb3J3YXJkIFhDTSB0byByZXNlcnZlIGNoYWluIHRvIG1vdmUgcmVzZXJ2ZXNdASAgIGZyb20gdGhpcyBjaGFpbidzIFNBIHRvIGBkZXN0YCBjaGFpbidzIFNBLCBhbmQgZm9yd2FyZCBhbm90aGVyIFhDTSB0byBgZGVzdGAgdG8gbWludNQgICBhbmQgZGVwb3NpdCByZXNlcnZlLWJhc2VkIGFzc2V0cyB0byBgYmVuZWZpY2lhcnlgLlEBIC0gZm9yIHRlbGVwb3J0czogYnVybiBsb2NhbCBhc3NldHMgYW5kIGZvcndhcmQgWENNIHRvIGBkZXN0YCBjaGFpbiB0byBtaW50L3RlbGVwb3J0sCAgIGFzc2V0cyBhbmQgZGVwb3NpdCB0aGVtIHRvIGBiZW5lZmljaWFyeWAuACkBLSBgb3JpZ2luYDogTXVzdCBiZSBjYXBhYmxlIG9mIHdpdGhkcmF3aW5nIHRoZSBgYXNzZXRzYCBhbmQgZXhlY3V0aW5nIFhDTS4tAS0gYGRlc3RgOiBEZXN0aW5hdGlvbiBjb250ZXh0IGZvciB0aGUgYXNzZXRzLiBXaWxsIHR5cGljYWxseSBiZSBgWDIoUGFyZW50LFUBICBQYXJhY2hhaW4oLi4pKWAgdG8gc2VuZCBmcm9tIHBhcmFjaGFpbiB0byBwYXJhY2hhaW4sIG9yIGBYMShQYXJhY2hhaW4oLi4pKWAgdG8gc2VuZGggIGZyb20gcmVsYXkgdG8gcGFyYWNoYWluLlUBLSBgYmVuZWZpY2lhcnlgOiBBIGJlbmVmaWNpYXJ5IGxvY2F0aW9uIGZvciB0aGUgYXNzZXRzIGluIHRoZSBjb250ZXh0IG9mIGBkZXN0YC4gV2lsbJggIGdlbmVyYWxseSBiZSBhbiBgQWNjb3VudElkMzJgIHZhbHVlLlkBLSBgYXNzZXRzYDogVGhlIGFzc2V0cyB0byBiZSB3aXRoZHJhd24uIFRoaXMgc2hvdWxkIGluY2x1ZGUgdGhlIGFzc2V0cyB1c2VkIHRvIHBheSB0aGXIICBmZWUgb24gdGhlIGBkZXN0YCAoYW5kIHBvc3NpYmx5IHJlc2VydmUpIGNoYWlucy5NAS0gYGZlZV9hc3NldF9pdGVtYDogVGhlIGluZGV4IGludG8gYGFzc2V0c2Agb2YgdGhlIGl0ZW0gd2hpY2ggc2hvdWxkIGJlIHVzZWQgdG8gcGF5HCAgZmVlcy5FAS0gYHdlaWdodF9saW1pdGA6IFRoZSByZW1vdGUtc2lkZSB3ZWlnaHQgbGltaXQsIGlmIGFueSwgZm9yIHRoZSBYQ00gZmVlIHB1cmNoYXNlLjBjbGFpbV9hc3NldHMIARhhc3NldHNdBgFQQm94PFZlcnNpb25lZEFzc2V0cz4AASxiZW5lZmljaWFyeUUBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAwYVQFDbGFpbXMgYXNzZXRzIHRyYXBwZWQgb24gdGhpcyBwYWxsZXQgYmVjYXVzZSBvZiBsZWZ0b3ZlciBhc3NldHMgZHVyaW5nIFhDTSBleGVjdXRpb24uAKwtIGBvcmlnaW5gOiBBbnlvbmUgY2FuIGNhbGwgdGhpcyBleHRyaW5zaWMuXQEtIGBhc3NldHNgOiBUaGUgZXhhY3QgYXNzZXRzIHRoYXQgd2VyZSB0cmFwcGVkLiBVc2UgdGhlIHZlcnNpb24gdG8gc3BlY2lmeSB3aGF0IHZlcnNpb26Yd2FzIHRoZSBsYXRlc3Qgd2hlbiB0aGV5IHdlcmUgdHJhcHBlZC5FAS0gYGJlbmVmaWNpYXJ5YDogVGhlIGxvY2F0aW9uL2FjY291bnQgd2hlcmUgdGhlIGNsYWltZWQgYXNzZXRzIHdpbGwgYmUgZGVwb3NpdGVkLox0cmFuc2Zlcl9hc3NldHNfdXNpbmdfdHlwZV9hbmRfdGhlbhwBEGRlc3RFAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgABGGFzc2V0c10GAVBCb3g8VmVyc2lvbmVkQXNzZXRzPgABUGFzc2V0c190cmFuc2Zlcl90eXBljQYBREJveDxUcmFuc2ZlclR5cGU+AAE4cmVtb3RlX2ZlZXNfaWSRBgFUQm94PFZlcnNpb25lZEFzc2V0SWQ+AAFIZmVlc190cmFuc2Zlcl90eXBljQYBREJveDxUcmFuc2ZlclR5cGU+AAFIY3VzdG9tX3hjbV9vbl9kZXN0XQUBVEJveDxWZXJzaW9uZWRYY208KCk+PgABMHdlaWdodF9saW1pdBEGASxXZWlnaHRMaW1pdAANwFUBVHJhbnNmZXIgYXNzZXRzIGZyb20gdGhlIGxvY2FsIGNoYWluIHRvIHRoZSBkZXN0aW5hdGlvbiBjaGFpbiB1c2luZyBleHBsaWNpdCB0cmFuc2Zlcmh0eXBlcyBmb3IgYXNzZXRzIGFuZCBmZWVzLgBZAWBhc3NldHNgIG11c3QgaGF2ZSBzYW1lIHJlc2VydmUgbG9jYXRpb24gb3IgbWF5IGJlIHRlbGVwb3J0YWJsZSB0byBgZGVzdGAuIENhbGxlciBtdXN07HByb3ZpZGUgdGhlIGBhc3NldHNfdHJhbnNmZXJfdHlwZWAgdG8gYmUgdXNlZCBmb3IgYGFzc2V0c2A6UQEgLSBgVHJhbnNmZXJUeXBlOjpMb2NhbFJlc2VydmVgOiB0cmFuc2ZlciBhc3NldHMgdG8gc292ZXJlaWduIGFjY291bnQgb2YgZGVzdGluYXRpb25NASAgIGNoYWluIGFuZCBmb3J3YXJkIGEgbm90aWZpY2F0aW9uIFhDTSB0byBgZGVzdGAgdG8gbWludCBhbmQgZGVwb3NpdCByZXNlcnZlLWJhc2VkbCAgIGFzc2V0cyB0byBgYmVuZWZpY2lhcnlgLlkBIC0gYFRyYW5zZmVyVHlwZTo6RGVzdGluYXRpb25SZXNlcnZlYDogYnVybiBsb2NhbCBhc3NldHMgYW5kIGZvcndhcmQgYSBub3RpZmljYXRpb24gdG9ZASAgIGBkZXN0YCBjaGFpbiB0byB3aXRoZHJhdyB0aGUgcmVzZXJ2ZSBhc3NldHMgZnJvbSB0aGlzIGNoYWluJ3Mgc292ZXJlaWduIGFjY291bnQgYW5khCAgIGRlcG9zaXQgdGhlbSB0byBgYmVuZWZpY2lhcnlgLlkBIC0gYFRyYW5zZmVyVHlwZTo6UmVtb3RlUmVzZXJ2ZShyZXNlcnZlKWA6IGJ1cm4gbG9jYWwgYXNzZXRzLCBmb3J3YXJkIFhDTSB0byBgcmVzZXJ2ZWBhASAgIGNoYWluIHRvIG1vdmUgcmVzZXJ2ZXMgZnJvbSB0aGlzIGNoYWluJ3MgU0EgdG8gYGRlc3RgIGNoYWluJ3MgU0EsIGFuZCBmb3J3YXJkIGFub3RoZXJVASAgIFhDTSB0byBgZGVzdGAgdG8gbWludCBhbmQgZGVwb3NpdCByZXNlcnZlLWJhc2VkIGFzc2V0cyB0byBgYmVuZWZpY2lhcnlgLiBUeXBpY2FsbHmUICAgdGhlIHJlbW90ZSBgcmVzZXJ2ZWAgaXMgQXNzZXQgSHViLkUBIC0gYFRyYW5zZmVyVHlwZTo6VGVsZXBvcnRgOiBidXJuIGxvY2FsIGFzc2V0cyBhbmQgZm9yd2FyZCBYQ00gdG8gYGRlc3RgIGNoYWluIHRv6CAgIG1pbnQvdGVsZXBvcnQgYXNzZXRzIGFuZCBkZXBvc2l0IHRoZW0gdG8gYGJlbmVmaWNpYXJ5YC4AVQFPbiB0aGUgZGVzdGluYXRpb24gY2hhaW4sIGFzIHdlbGwgYXMgYW55IGludGVybWVkaWFyeSBob3BzLCBgQnV5RXhlY3V0aW9uYCBpcyB1c2VkIHRvIQFidXkgZXhlY3V0aW9uIHVzaW5nIHRyYW5zZmVycmVkIGBhc3NldHNgIGlkZW50aWZpZWQgYnkgYHJlbW90ZV9mZWVzX2lkYC5ZAU1ha2Ugc3VyZSBlbm91Z2ggb2YgdGhlIHNwZWNpZmllZCBgcmVtb3RlX2ZlZXNfaWRgIGFzc2V0IGlzIGluY2x1ZGVkIGluIHRoZSBnaXZlbiBsaXN0YQFvZiBgYXNzZXRzYC4gYHJlbW90ZV9mZWVzX2lkYCBzaG91bGQgYmUgZW5vdWdoIHRvIHBheSBmb3IgYHdlaWdodF9saW1pdGAuIElmIG1vcmUgd2VpZ2h0WQFpcyBuZWVkZWQgdGhhbiBgd2VpZ2h0X2xpbWl0YCwgdGhlbiB0aGUgb3BlcmF0aW9uIHdpbGwgZmFpbCBhbmQgdGhlIHNlbnQgYXNzZXRzIG1heSBiZSBhdCByaXNrLgBFAWByZW1vdGVfZmVlc19pZGAgbWF5IHVzZSBkaWZmZXJlbnQgdHJhbnNmZXIgdHlwZSB0aGFuIHJlc3Qgb2YgYGFzc2V0c2AgYW5kIGNhbiBiZZxzcGVjaWZpZWQgdGhyb3VnaCBgZmVlc190cmFuc2Zlcl90eXBlYC4AYQFUaGUgY2FsbGVyIG5lZWRzIHRvIHNwZWNpZnkgd2hhdCBzaG91bGQgaGFwcGVuIHRvIHRoZSB0cmFuc2ZlcnJlZCBhc3NldHMgb25jZSB0aGV5IHJlYWNoQQF0aGUgYGRlc3RgIGNoYWluLiBUaGlzIGlzIGRvbmUgdGhyb3VnaCB0aGUgYGN1c3RvbV94Y21fb25fZGVzdGAgcGFyYW1ldGVyLCB3aGljaPxjb250YWlucyB0aGUgaW5zdHJ1Y3Rpb25zIHRvIGV4ZWN1dGUgb24gYGRlc3RgIGFzIGEgZmluYWwgc3RlcC58ICBUaGlzIGlzIHVzdWFsbHkgYXMgc2ltcGxlIGFzOlEBICBgWGNtKHZlYyFbRGVwb3NpdEFzc2V0IHsgYXNzZXRzOiBXaWxkKEFsbENvdW50ZWQoYXNzZXRzLmxlbigpKSksIGJlbmVmaWNpYXJ5IH1dKWAsMQEgIGJ1dCBjb3VsZCBiZSBzb21ldGhpbmcgbW9yZSBleG90aWMgbGlrZSBzZW5kaW5nIHRoZSBgYXNzZXRzYCBldmVuIGZ1cnRoZXIuACkBLSBgb3JpZ2luYDogTXVzdCBiZSBjYXBhYmxlIG9mIHdpdGhkcmF3aW5nIHRoZSBgYXNzZXRzYCBhbmQgZXhlY3V0aW5nIFhDTS4lAS0gYGRlc3RgOiBEZXN0aW5hdGlvbiBjb250ZXh0IGZvciB0aGUgYXNzZXRzLiBXaWxsIHR5cGljYWxseSBiZSBgW1BhcmVudCxhASAgUGFyYWNoYWluKC4uKV1gIHRvIHNlbmQgZnJvbSBwYXJhY2hhaW4gdG8gcGFyYWNoYWluLCBvciBgW1BhcmFjaGFpbiguLildYCB0byBzZW5kIGZyb209ASAgcmVsYXkgdG8gcGFyYWNoYWluLCBvciBgKHBhcmVudHM6IDIsIChHbG9iYWxDb25zZW5zdXMoLi4pLCAuLikpYCB0byBzZW5kIGZyb230ICBwYXJhY2hhaW4gYWNyb3NzIGEgYnJpZGdlIHRvIGFub3RoZXIgZWNvc3lzdGVtIGRlc3RpbmF0aW9uLlkBLSBgYXNzZXRzYDogVGhlIGFzc2V0cyB0byBiZSB3aXRoZHJhd24uIFRoaXMgc2hvdWxkIGluY2x1ZGUgdGhlIGFzc2V0cyB1c2VkIHRvIHBheSB0aGXIICBmZWUgb24gdGhlIGBkZXN0YCAoYW5kIHBvc3NpYmx5IHJlc2VydmUpIGNoYWlucy49AS0gYGFzc2V0c190cmFuc2Zlcl90eXBlYDogVGhlIFhDTSBgVHJhbnNmZXJUeXBlYCB1c2VkIHRvIHRyYW5zZmVyIHRoZSBgYXNzZXRzYC4hAS0gYHJlbW90ZV9mZWVzX2lkYDogT25lIG9mIHRoZSBpbmNsdWRlZCBgYXNzZXRzYCB0byBiZSB1c2VkIHRvIHBheSBmZWVzLkkBLSBgZmVlc190cmFuc2Zlcl90eXBlYDogVGhlIFhDTSBgVHJhbnNmZXJUeXBlYCB1c2VkIHRvIHRyYW5zZmVyIHRoZSBgZmVlc2AgYXNzZXRzLlkBLSBgY3VzdG9tX3hjbV9vbl9kZXN0YDogVGhlIFhDTSB0byBiZSBleGVjdXRlZCBvbiBgZGVzdGAgY2hhaW4gYXMgdGhlIGxhc3Qgc3RlcCBvZiB0aGVZASAgdHJhbnNmZXIsIHdoaWNoIGFsc28gZGV0ZXJtaW5lcyB3aGF0IGhhcHBlbnMgdG8gdGhlIGFzc2V0cyBvbiB0aGUgZGVzdGluYXRpb24gY2hhaW4uRQEtIGB3ZWlnaHRfbGltaXRgOiBUaGUgcmVtb3RlLXNpZGUgd2VpZ2h0IGxpbWl0LCBpZiBhbnksIGZvciB0aGUgWENNIGZlZSBwdXJjaGFzZS4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuXQUIDHhjbTBWZXJzaW9uZWRYY20ELFJ1bnRpbWVDYWxsAAEMCFYyBABhBQFQdjI6OlhjbTxSdW50aW1lQ2FsbD4AAgAIVjMEALEFAVB2Mzo6WGNtPFJ1bnRpbWVDYWxsPgADAAhWNAQAFQYBUHY0OjpYY208UnVudGltZUNhbGw+AAQAAGEFDAx4Y20IdjIMWGNtBCxSdW50aW1lQ2FsbAAABABlBQF0VmVjPEluc3RydWN0aW9uPFJ1bnRpbWVDYWxsPj4AAGUFAAACaQUAaQUMDHhjbQh2MixJbnN0cnVjdGlvbgQsUnVudGltZUNhbGwAAXA0V2l0aGRyYXdBc3NldAQAbQUBLE11bHRpQXNzZXRzAAAAVFJlc2VydmVBc3NldERlcG9zaXRlZAQAbQUBLE11bHRpQXNzZXRzAAEAWFJlY2VpdmVUZWxlcG9ydGVkQXNzZXQEAG0FASxNdWx0aUFzc2V0cwACADRRdWVyeVJlc3BvbnNlDAEgcXVlcnlfaWQsARxRdWVyeUlkAAEgcmVzcG9uc2WJBQEgUmVzcG9uc2UAAShtYXhfd2VpZ2h0LAEMdTY0AAMANFRyYW5zZmVyQXNzZXQIARhhc3NldHNtBQEsTXVsdGlBc3NldHMAASxiZW5lZmljaWFyeUkBATRNdWx0aUxvY2F0aW9uAAQAUFRyYW5zZmVyUmVzZXJ2ZUFzc2V0DAEYYXNzZXRzbQUBLE11bHRpQXNzZXRzAAEQZGVzdEkBATRNdWx0aUxvY2F0aW9uAAEMeGNtYQUBHFhjbTwoKT4ABQAgVHJhbnNhY3QMASxvcmlnaW5fdHlwZZkFAShPcmlnaW5LaW5kAAFYcmVxdWlyZV93ZWlnaHRfYXRfbW9zdCwBDHU2NAABEGNhbGydBQFoRG91YmxlRW5jb2RlZDxSdW50aW1lQ2FsbD4ABgBkSHJtcE5ld0NoYW5uZWxPcGVuUmVxdWVzdAwBGHNlbmRlcuwBDHUzMgABQG1heF9tZXNzYWdlX3NpemXsAQx1MzIAATBtYXhfY2FwYWNpdHnsAQx1MzIABwBMSHJtcENoYW5uZWxBY2NlcHRlZAQBJHJlY2lwaWVudOwBDHUzMgAIAEhIcm1wQ2hhbm5lbENsb3NpbmcMASRpbml0aWF0b3LsAQx1MzIAARhzZW5kZXLsAQx1MzIAASRyZWNpcGllbnTsAQx1MzIACQAsQ2xlYXJPcmlnaW4ACgA0RGVzY2VuZE9yaWdpbgQATQEBVEludGVyaW9yTXVsdGlMb2NhdGlvbgALACxSZXBvcnRFcnJvcgwBIHF1ZXJ5X2lkLAEcUXVlcnlJZAABEGRlc3RJAQE0TXVsdGlMb2NhdGlvbgABTG1heF9yZXNwb25zZV93ZWlnaHQsAQx1NjQADAAwRGVwb3NpdEFzc2V0DAEYYXNzZXRzoQUBQE11bHRpQXNzZXRGaWx0ZXIAAShtYXhfYXNzZXRz7AEMdTMyAAEsYmVuZWZpY2lhcnlJAQE0TXVsdGlMb2NhdGlvbgANAExEZXBvc2l0UmVzZXJ2ZUFzc2V0EAEYYXNzZXRzoQUBQE11bHRpQXNzZXRGaWx0ZXIAAShtYXhfYXNzZXRz7AEMdTMyAAEQZGVzdEkBATRNdWx0aUxvY2F0aW9uAAEMeGNtYQUBHFhjbTwoKT4ADgA0RXhjaGFuZ2VBc3NldAgBEGdpdmWhBQFATXVsdGlBc3NldEZpbHRlcgABHHJlY2VpdmVtBQEsTXVsdGlBc3NldHMADwBcSW5pdGlhdGVSZXNlcnZlV2l0aGRyYXcMARhhc3NldHOhBQFATXVsdGlBc3NldEZpbHRlcgABHHJlc2VydmVJAQE0TXVsdGlMb2NhdGlvbgABDHhjbWEFARxYY208KCk+ABAAQEluaXRpYXRlVGVsZXBvcnQMARhhc3NldHOhBQFATXVsdGlBc3NldEZpbHRlcgABEGRlc3RJAQE0TXVsdGlMb2NhdGlvbgABDHhjbWEFARxYY208KCk+ABEAMFF1ZXJ5SG9sZGluZxABIHF1ZXJ5X2lkLAEcUXVlcnlJZAABEGRlc3RJAQE0TXVsdGlMb2NhdGlvbgABGGFzc2V0c6EFAUBNdWx0aUFzc2V0RmlsdGVyAAFMbWF4X3Jlc3BvbnNlX3dlaWdodCwBDHU2NAASADBCdXlFeGVjdXRpb24IARBmZWVzdQUBKE11bHRpQXNzZXQAATB3ZWlnaHRfbGltaXStBQEsV2VpZ2h0TGltaXQAEwA0UmVmdW5kU3VycGx1cwAUADxTZXRFcnJvckhhbmRsZXIEAGEFAUBYY208UnVudGltZUNhbGw+ABUALFNldEFwcGVuZGl4BABhBQFAWGNtPFJ1bnRpbWVDYWxsPgAWAChDbGVhckVycm9yABcAKENsYWltQXNzZXQIARhhc3NldHNtBQEsTXVsdGlBc3NldHMAARh0aWNrZXRJAQE0TXVsdGlMb2NhdGlvbgAYABBUcmFwBAAsAQx1NjQAGQBAU3Vic2NyaWJlVmVyc2lvbggBIHF1ZXJ5X2lkLAEcUXVlcnlJZAABTG1heF9yZXNwb25zZV93ZWlnaHQsAQx1NjQAGgBIVW5zdWJzY3JpYmVWZXJzaW9uABsAAG0FEAx4Y20IdjIobXVsdGlhc3NldCxNdWx0aUFzc2V0cwAABABxBQE8VmVjPE11bHRpQXNzZXQ+AABxBQAAAnUFAHUFEAx4Y20IdjIobXVsdGlhc3NldChNdWx0aUFzc2V0AAAIAQhpZHkFARxBc3NldElkAAEMZnVufQUBLEZ1bmdpYmlsaXR5AAB5BRAMeGNtCHYyKG11bHRpYXNzZXQcQXNzZXRJZAABCCBDb25jcmV0ZQQASQEBNE11bHRpTG9jYXRpb24AAAAgQWJzdHJhY3QEADgBHFZlYzx1OD4AAQAAfQUQDHhjbQh2MihtdWx0aWFzc2V0LEZ1bmdpYmlsaXR5AAEIIEZ1bmdpYmxlBAD8ARB1MTI4AAAALE5vbkZ1bmdpYmxlBACBBQE0QXNzZXRJbnN0YW5jZQABAACBBRAMeGNtCHYyKG11bHRpYXNzZXQ0QXNzZXRJbnN0YW5jZQABHCRVbmRlZmluZWQAAAAUSW5kZXgEAPwBEHUxMjgAAQAYQXJyYXk0BABIARxbdTg7IDRdAAIAGEFycmF5OAQAhQUBHFt1ODsgOF0AAwAcQXJyYXkxNgQAwAEgW3U4OyAxNl0ABAAcQXJyYXkzMgQABAEgW3U4OyAzMl0ABQAQQmxvYgQAOAEcVmVjPHU4PgAGAACFBQAAAwgAAAAIAIkFDAx4Y20IdjIgUmVzcG9uc2UAARAQTnVsbAAAABhBc3NldHMEAG0FASxNdWx0aUFzc2V0cwABADxFeGVjdXRpb25SZXN1bHQEAI0FAVBPcHRpb248KHUzMiwgRXJyb3IpPgACABxWZXJzaW9uBAAQAThzdXBlcjo6VmVyc2lvbgADAACNBQQYT3B0aW9uBARUAZEFAQgQTm9uZQAAABBTb21lBACRBQAAAQAAkQUAAAQIEJUFAJUFEAx4Y20IdjIYdHJhaXRzFEVycm9yAAFoIE92ZXJmbG93AAAANFVuaW1wbGVtZW50ZWQAAQBgVW50cnVzdGVkUmVzZXJ2ZUxvY2F0aW9uAAIAZFVudHJ1c3RlZFRlbGVwb3J0TG9jYXRpb24AAwBETXVsdGlMb2NhdGlvbkZ1bGwABABoTXVsdGlMb2NhdGlvbk5vdEludmVydGlibGUABQAkQmFkT3JpZ2luAAYAPEludmFsaWRMb2NhdGlvbgAHADRBc3NldE5vdEZvdW5kAAgAVEZhaWxlZFRvVHJhbnNhY3RBc3NldAAJADxOb3RXaXRoZHJhd2FibGUACgBITG9jYXRpb25DYW5ub3RIb2xkAAsAVEV4Y2VlZHNNYXhNZXNzYWdlU2l6ZQAMAFhEZXN0aW5hdGlvblVuc3VwcG9ydGVkAA0AJFRyYW5zcG9ydAAOAChVbnJvdXRhYmxlAA8AMFVua25vd25DbGFpbQAQADhGYWlsZWRUb0RlY29kZQARAEBNYXhXZWlnaHRJbnZhbGlkABIAOE5vdEhvbGRpbmdGZWVzABMAMFRvb0V4cGVuc2l2ZQAUABBUcmFwBAAwAQx1NjQAFQBMVW5oYW5kbGVkWGNtVmVyc2lvbgAWAEhXZWlnaHRMaW1pdFJlYWNoZWQEADABGFdlaWdodAAXABxCYXJyaWVyABgATFdlaWdodE5vdENvbXB1dGFibGUAGQAAmQUMDHhjbQh2MihPcmlnaW5LaW5kAAEQGE5hdGl2ZQAAAEBTb3ZlcmVpZ25BY2NvdW50AAEAJFN1cGVydXNlcgACAAxYY20AAwAAnQUMDHhjbThkb3VibGVfZW5jb2RlZDREb3VibGVFbmNvZGVkBARUAAAEARxlbmNvZGVkOAEcVmVjPHU4PgAAoQUQDHhjbQh2MihtdWx0aWFzc2V0QE11bHRpQXNzZXRGaWx0ZXIAAQggRGVmaW5pdGUEAG0FASxNdWx0aUFzc2V0cwAAABBXaWxkBAClBQE4V2lsZE11bHRpQXNzZXQAAQAApQUQDHhjbQh2MihtdWx0aWFzc2V0OFdpbGRNdWx0aUFzc2V0AAEIDEFsbAAAABRBbGxPZggBCGlkeQUBHEFzc2V0SWQAAQxmdW6pBQE8V2lsZEZ1bmdpYmlsaXR5AAEAAKkFEAx4Y20IdjIobXVsdGlhc3NldDxXaWxkRnVuZ2liaWxpdHkAAQggRnVuZ2libGUAAAAsTm9uRnVuZ2libGUAAQAArQUMDHhjbQh2MixXZWlnaHRMaW1pdAABCCRVbmxpbWl0ZWQAAAAcTGltaXRlZAQALAEMdTY0AAEAALEFDAx4Y20IdjMMWGNtBBBDYWxsAAAEALUFAVhWZWM8SW5zdHJ1Y3Rpb248Q2FsbD4+AAC1BQAAArkFALkFDAx4Y20IdjMsSW5zdHJ1Y3Rpb24EEENhbGwAAcA0V2l0aGRyYXdBc3NldAQAvQUBLE11bHRpQXNzZXRzAAAAVFJlc2VydmVBc3NldERlcG9zaXRlZAQAvQUBLE11bHRpQXNzZXRzAAEAWFJlY2VpdmVUZWxlcG9ydGVkQXNzZXQEAL0FASxNdWx0aUFzc2V0cwACADRRdWVyeVJlc3BvbnNlEAEgcXVlcnlfaWQsARxRdWVyeUlkAAEgcmVzcG9uc2XRBQEgUmVzcG9uc2UAAShtYXhfd2VpZ2h0KAEYV2VpZ2h0AAEccXVlcmllcvkFAVRPcHRpb248TXVsdGlMb2NhdGlvbj4AAwA0VHJhbnNmZXJBc3NldAgBGGFzc2V0c70FASxNdWx0aUFzc2V0cwABLGJlbmVmaWNpYXJ54AE0TXVsdGlMb2NhdGlvbgAEAFBUcmFuc2ZlclJlc2VydmVBc3NldAwBGGFzc2V0c70FASxNdWx0aUFzc2V0cwABEGRlc3TgATRNdWx0aUxvY2F0aW9uAAEMeGNtsQUBHFhjbTwoKT4ABQAgVHJhbnNhY3QMASxvcmlnaW5fa2luZP0FAShPcmlnaW5LaW5kAAFYcmVxdWlyZV93ZWlnaHRfYXRfbW9zdCgBGFdlaWdodAABEGNhbGydBQFMRG91YmxlRW5jb2RlZDxDYWxsPgAGAGRIcm1wTmV3Q2hhbm5lbE9wZW5SZXF1ZXN0DAEYc2VuZGVy7AEMdTMyAAFAbWF4X21lc3NhZ2Vfc2l6ZewBDHUzMgABMG1heF9jYXBhY2l0eewBDHUzMgAHAExIcm1wQ2hhbm5lbEFjY2VwdGVkBAEkcmVjaXBpZW507AEMdTMyAAgASEhybXBDaGFubmVsQ2xvc2luZwwBJGluaXRpYXRvcuwBDHUzMgABGHNlbmRlcuwBDHUzMgABJHJlY2lwaWVudOwBDHUzMgAJACxDbGVhck9yaWdpbgAKADREZXNjZW5kT3JpZ2luBADkAVRJbnRlcmlvck11bHRpTG9jYXRpb24ACwAsUmVwb3J0RXJyb3IEAAEGAURRdWVyeVJlc3BvbnNlSW5mbwAMADBEZXBvc2l0QXNzZXQIARhhc3NldHMFBgFATXVsdGlBc3NldEZpbHRlcgABLGJlbmVmaWNpYXJ54AE0TXVsdGlMb2NhdGlvbgANAExEZXBvc2l0UmVzZXJ2ZUFzc2V0DAEYYXNzZXRzBQYBQE11bHRpQXNzZXRGaWx0ZXIAARBkZXN04AE0TXVsdGlMb2NhdGlvbgABDHhjbbEFARxYY208KCk+AA4ANEV4Y2hhbmdlQXNzZXQMARBnaXZlBQYBQE11bHRpQXNzZXRGaWx0ZXIAARB3YW50vQUBLE11bHRpQXNzZXRzAAEcbWF4aW1hbCABEGJvb2wADwBcSW5pdGlhdGVSZXNlcnZlV2l0aGRyYXcMARhhc3NldHMFBgFATXVsdGlBc3NldEZpbHRlcgABHHJlc2VydmXgATRNdWx0aUxvY2F0aW9uAAEMeGNtsQUBHFhjbTwoKT4AEABASW5pdGlhdGVUZWxlcG9ydAwBGGFzc2V0cwUGAUBNdWx0aUFzc2V0RmlsdGVyAAEQZGVzdOABNE11bHRpTG9jYXRpb24AAQx4Y22xBQEcWGNtPCgpPgARADRSZXBvcnRIb2xkaW5nCAE0cmVzcG9uc2VfaW5mbwEGAURRdWVyeVJlc3BvbnNlSW5mbwABGGFzc2V0cwUGAUBNdWx0aUFzc2V0RmlsdGVyABIAMEJ1eUV4ZWN1dGlvbggBEGZlZXPFBQEoTXVsdGlBc3NldAABMHdlaWdodF9saW1pdBEGASxXZWlnaHRMaW1pdAATADRSZWZ1bmRTdXJwbHVzABQAPFNldEVycm9ySGFuZGxlcgQAsQUBJFhjbTxDYWxsPgAVACxTZXRBcHBlbmRpeAQAsQUBJFhjbTxDYWxsPgAWAChDbGVhckVycm9yABcAKENsYWltQXNzZXQIARhhc3NldHO9BQEsTXVsdGlBc3NldHMAARh0aWNrZXTgATRNdWx0aUxvY2F0aW9uABgAEFRyYXAEACwBDHU2NAAZAEBTdWJzY3JpYmVWZXJzaW9uCAEgcXVlcnlfaWQsARxRdWVyeUlkAAFMbWF4X3Jlc3BvbnNlX3dlaWdodCgBGFdlaWdodAAaAEhVbnN1YnNjcmliZVZlcnNpb24AGwAkQnVybkFzc2V0BAC9BQEsTXVsdGlBc3NldHMAHAAsRXhwZWN0QXNzZXQEAL0FASxNdWx0aUFzc2V0cwAdADBFeHBlY3RPcmlnaW4EAPkFAVRPcHRpb248TXVsdGlMb2NhdGlvbj4AHgAsRXhwZWN0RXJyb3IEANUFAVBPcHRpb248KHUzMiwgRXJyb3IpPgAfAFBFeHBlY3RUcmFuc2FjdFN0YXR1cwQA8QUBOE1heWJlRXJyb3JDb2RlACAALFF1ZXJ5UGFsbGV0CAEsbW9kdWxlX25hbWU4ARxWZWM8dTg+AAE0cmVzcG9uc2VfaW5mbwEGAURRdWVyeVJlc3BvbnNlSW5mbwAhADBFeHBlY3RQYWxsZXQUARRpbmRleOwBDHUzMgABEG5hbWU4ARxWZWM8dTg+AAEsbW9kdWxlX25hbWU4ARxWZWM8dTg+AAEsY3JhdGVfbWFqb3LsAQx1MzIAATxtaW5fY3JhdGVfbWlub3LsAQx1MzIAIgBQUmVwb3J0VHJhbnNhY3RTdGF0dXMEAAEGAURRdWVyeVJlc3BvbnNlSW5mbwAjAExDbGVhclRyYW5zYWN0U3RhdHVzACQAPFVuaXZlcnNhbE9yaWdpbgQA6AEgSnVuY3Rpb24AJQA0RXhwb3J0TWVzc2FnZQwBHG5ldHdvcmv0ASROZXR3b3JrSWQAASxkZXN0aW5hdGlvbuQBVEludGVyaW9yTXVsdGlMb2NhdGlvbgABDHhjbbEFARxYY208KCk+ACYAJExvY2tBc3NldAgBFGFzc2V0xQUBKE11bHRpQXNzZXQAASB1bmxvY2tlcuABNE11bHRpTG9jYXRpb24AJwAsVW5sb2NrQXNzZXQIARRhc3NldMUFAShNdWx0aUFzc2V0AAEYdGFyZ2V04AE0TXVsdGlMb2NhdGlvbgAoADhOb3RlVW5sb2NrYWJsZQgBFGFzc2V0xQUBKE11bHRpQXNzZXQAARRvd25lcuABNE11bHRpTG9jYXRpb24AKQA0UmVxdWVzdFVubG9jawgBFGFzc2V0xQUBKE11bHRpQXNzZXQAARhsb2NrZXLgATRNdWx0aUxvY2F0aW9uACoALFNldEZlZXNNb2RlBAEwaml0X3dpdGhkcmF3IAEQYm9vbAArACBTZXRUb3BpYwQABAEgW3U4OyAzMl0ALAAoQ2xlYXJUb3BpYwAtACxBbGlhc09yaWdpbgQA4AE0TXVsdGlMb2NhdGlvbgAuADxVbnBhaWRFeGVjdXRpb24IATB3ZWlnaHRfbGltaXQRBgEsV2VpZ2h0TGltaXQAATBjaGVja19vcmlnaW75BQFUT3B0aW9uPE11bHRpTG9jYXRpb24+AC8AAL0FEAx4Y20IdjMobXVsdGlhc3NldCxNdWx0aUFzc2V0cwAABADBBQE8VmVjPE11bHRpQXNzZXQ+AADBBQAAAsUFAMUFEAx4Y20IdjMobXVsdGlhc3NldChNdWx0aUFzc2V0AAAIAQhpZAkBARxBc3NldElkAAEMZnVuyQUBLEZ1bmdpYmlsaXR5AADJBRAMeGNtCHYzKG11bHRpYXNzZXQsRnVuZ2liaWxpdHkAAQggRnVuZ2libGUEAPwBEHUxMjgAAAAsTm9uRnVuZ2libGUEAM0FATRBc3NldEluc3RhbmNlAAEAAM0FEAx4Y20IdjMobXVsdGlhc3NldDRBc3NldEluc3RhbmNlAAEYJFVuZGVmaW5lZAAAABRJbmRleAQA/AEQdTEyOAABABhBcnJheTQEAEgBHFt1ODsgNF0AAgAYQXJyYXk4BACFBQEcW3U4OyA4XQADABxBcnJheTE2BADAASBbdTg7IDE2XQAEABxBcnJheTMyBAAEASBbdTg7IDMyXQAFAADRBQwMeGNtCHYzIFJlc3BvbnNlAAEYEE51bGwAAAAYQXNzZXRzBAC9BQEsTXVsdGlBc3NldHMAAQA8RXhlY3V0aW9uUmVzdWx0BADVBQFQT3B0aW9uPCh1MzIsIEVycm9yKT4AAgAcVmVyc2lvbgQAEAE4c3VwZXI6OlZlcnNpb24AAwAsUGFsbGV0c0luZm8EAOEFAZhCb3VuZGVkVmVjPFBhbGxldEluZm8sIE1heFBhbGxldHNJbmZvPgAEADhEaXNwYXRjaFJlc3VsdAQA8QUBOE1heWJlRXJyb3JDb2RlAAUAANUFBBhPcHRpb24EBFQB2QUBCBBOb25lAAAAEFNvbWUEANkFAAABAADZBQAABAgQ3QUA3QUQDHhjbQh2Mxh0cmFpdHMURXJyb3IAAaAgT3ZlcmZsb3cAAAA0VW5pbXBsZW1lbnRlZAABAGBVbnRydXN0ZWRSZXNlcnZlTG9jYXRpb24AAgBkVW50cnVzdGVkVGVsZXBvcnRMb2NhdGlvbgADADBMb2NhdGlvbkZ1bGwABABUTG9jYXRpb25Ob3RJbnZlcnRpYmxlAAUAJEJhZE9yaWdpbgAGADxJbnZhbGlkTG9jYXRpb24ABwA0QXNzZXROb3RGb3VuZAAIAFRGYWlsZWRUb1RyYW5zYWN0QXNzZXQACQA8Tm90V2l0aGRyYXdhYmxlAAoASExvY2F0aW9uQ2Fubm90SG9sZAALAFRFeGNlZWRzTWF4TWVzc2FnZVNpemUADABYRGVzdGluYXRpb25VbnN1cHBvcnRlZAANACRUcmFuc3BvcnQADgAoVW5yb3V0YWJsZQAPADBVbmtub3duQ2xhaW0AEAA4RmFpbGVkVG9EZWNvZGUAEQBATWF4V2VpZ2h0SW52YWxpZAASADhOb3RIb2xkaW5nRmVlcwATADBUb29FeHBlbnNpdmUAFAAQVHJhcAQAMAEMdTY0ABUAQEV4cGVjdGF0aW9uRmFsc2UAFgA4UGFsbGV0Tm90Rm91bmQAFwAwTmFtZU1pc21hdGNoABgATFZlcnNpb25JbmNvbXBhdGlibGUAGQBQSG9sZGluZ1dvdWxkT3ZlcmZsb3cAGgAsRXhwb3J0RXJyb3IAGwA4UmVhbmNob3JGYWlsZWQAHAAYTm9EZWFsAB0AKEZlZXNOb3RNZXQAHgAkTG9ja0Vycm9yAB8AME5vUGVybWlzc2lvbgAgAChVbmFuY2hvcmVkACEAOE5vdERlcG9zaXRhYmxlACIATFVuaGFuZGxlZFhjbVZlcnNpb24AIwBIV2VpZ2h0TGltaXRSZWFjaGVkBAAoARhXZWlnaHQAJAAcQmFycmllcgAlAExXZWlnaHROb3RDb21wdXRhYmxlACYAREV4Y2VlZHNTdGFja0xpbWl0ACcAAOEFDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQB5QUEUwAABADtBQEYVmVjPFQ+AADlBQwMeGNtCHYzKFBhbGxldEluZm8AABgBFGluZGV47AEMdTMyAAEQbmFtZekFAYBCb3VuZGVkVmVjPHU4LCBNYXhQYWxsZXROYW1lTGVuPgABLG1vZHVsZV9uYW1l6QUBgEJvdW5kZWRWZWM8dTgsIE1heFBhbGxldE5hbWVMZW4+AAEUbWFqb3LsAQx1MzIAARRtaW5vcuwBDHUzMgABFHBhdGNo7AEMdTMyAADpBQxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQgEUwAABAA4ARhWZWM8VD4AAO0FAAAC5QUA8QUMDHhjbQh2MzhNYXliZUVycm9yQ29kZQABDBxTdWNjZXNzAAAAFEVycm9yBAD1BQGMQm91bmRlZFZlYzx1OCwgTWF4RGlzcGF0Y2hFcnJvckxlbj4AAQA4VHJ1bmNhdGVkRXJyb3IEAPUFAYxCb3VuZGVkVmVjPHU4LCBNYXhEaXNwYXRjaEVycm9yTGVuPgACAAD1BQxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQgEUwAABAA4ARhWZWM8VD4AAPkFBBhPcHRpb24EBFQB4AEIEE5vbmUAAAAQU29tZQQA4AAAAQAA/QUMDHhjbQh2MyhPcmlnaW5LaW5kAAEQGE5hdGl2ZQAAAEBTb3ZlcmVpZ25BY2NvdW50AAEAJFN1cGVydXNlcgACAAxYY20AAwAAAQYMDHhjbQh2M0RRdWVyeVJlc3BvbnNlSW5mbwAADAEsZGVzdGluYXRpb27gATRNdWx0aUxvY2F0aW9uAAEgcXVlcnlfaWQsARxRdWVyeUlkAAEobWF4X3dlaWdodCgBGFdlaWdodAAABQYQDHhjbQh2MyhtdWx0aWFzc2V0QE11bHRpQXNzZXRGaWx0ZXIAAQggRGVmaW5pdGUEAL0FASxNdWx0aUFzc2V0cwAAABBXaWxkBAAJBgE4V2lsZE11bHRpQXNzZXQAAQAACQYQDHhjbQh2MyhtdWx0aWFzc2V0OFdpbGRNdWx0aUFzc2V0AAEQDEFsbAAAABRBbGxPZggBCGlkCQEBHEFzc2V0SWQAAQxmdW4NBgE8V2lsZEZ1bmdpYmlsaXR5AAEAKEFsbENvdW50ZWQEAOwBDHUzMgACADBBbGxPZkNvdW50ZWQMAQhpZAkBARxBc3NldElkAAEMZnVuDQYBPFdpbGRGdW5naWJpbGl0eQABFGNvdW507AEMdTMyAAMAAA0GEAx4Y20IdjMobXVsdGlhc3NldDxXaWxkRnVuZ2liaWxpdHkAAQggRnVuZ2libGUAAAAsTm9uRnVuZ2libGUAAQAAEQYMDHhjbQh2MyxXZWlnaHRMaW1pdAABCCRVbmxpbWl0ZWQAAAAcTGltaXRlZAQAKAEYV2VpZ2h0AAEAABUGDCxzdGFnaW5nX3hjbQh2NAxYY20EEENhbGwAAAQAGQYBWFZlYzxJbnN0cnVjdGlvbjxDYWxsPj4AABkGAAACHQYAHQYMLHN0YWdpbmdfeGNtCHY0LEluc3RydWN0aW9uBBBDYWxsAAHANFdpdGhkcmF3QXNzZXQEACEGARhBc3NldHMAAABUUmVzZXJ2ZUFzc2V0RGVwb3NpdGVkBAAhBgEYQXNzZXRzAAEAWFJlY2VpdmVUZWxlcG9ydGVkQXNzZXQEACEGARhBc3NldHMAAgA0UXVlcnlSZXNwb25zZRABIHF1ZXJ5X2lkLAEcUXVlcnlJZAABIHJlc3BvbnNlNQYBIFJlc3BvbnNlAAEobWF4X3dlaWdodCgBGFdlaWdodAABHHF1ZXJpZXJJBgFAT3B0aW9uPExvY2F0aW9uPgADADRUcmFuc2ZlckFzc2V0CAEYYXNzZXRzIQYBGEFzc2V0cwABLGJlbmVmaWNpYXJ5DQEBIExvY2F0aW9uAAQAUFRyYW5zZmVyUmVzZXJ2ZUFzc2V0DAEYYXNzZXRzIQYBGEFzc2V0cwABEGRlc3QNAQEgTG9jYXRpb24AAQx4Y20VBgEcWGNtPCgpPgAFACBUcmFuc2FjdAwBLG9yaWdpbl9raW5k/QUBKE9yaWdpbktpbmQAAVhyZXF1aXJlX3dlaWdodF9hdF9tb3N0KAEYV2VpZ2h0AAEQY2FsbJ0FAUxEb3VibGVFbmNvZGVkPENhbGw+AAYAZEhybXBOZXdDaGFubmVsT3BlblJlcXVlc3QMARhzZW5kZXLsAQx1MzIAAUBtYXhfbWVzc2FnZV9zaXpl7AEMdTMyAAEwbWF4X2NhcGFjaXR57AEMdTMyAAcATEhybXBDaGFubmVsQWNjZXB0ZWQEASRyZWNpcGllbnTsAQx1MzIACABISHJtcENoYW5uZWxDbG9zaW5nDAEkaW5pdGlhdG9y7AEMdTMyAAEYc2VuZGVy7AEMdTMyAAEkcmVjaXBpZW507AEMdTMyAAkALENsZWFyT3JpZ2luAAoANERlc2NlbmRPcmlnaW4EABEBAUBJbnRlcmlvckxvY2F0aW9uAAsALFJlcG9ydEVycm9yBABNBgFEUXVlcnlSZXNwb25zZUluZm8ADAAwRGVwb3NpdEFzc2V0CAEYYXNzZXRzUQYBLEFzc2V0RmlsdGVyAAEsYmVuZWZpY2lhcnkNAQEgTG9jYXRpb24ADQBMRGVwb3NpdFJlc2VydmVBc3NldAwBGGFzc2V0c1EGASxBc3NldEZpbHRlcgABEGRlc3QNAQEgTG9jYXRpb24AAQx4Y20VBgEcWGNtPCgpPgAOADRFeGNoYW5nZUFzc2V0DAEQZ2l2ZVEGASxBc3NldEZpbHRlcgABEHdhbnQhBgEYQXNzZXRzAAEcbWF4aW1hbCABEGJvb2wADwBcSW5pdGlhdGVSZXNlcnZlV2l0aGRyYXcMARhhc3NldHNRBgEsQXNzZXRGaWx0ZXIAARxyZXNlcnZlDQEBIExvY2F0aW9uAAEMeGNtFQYBHFhjbTwoKT4AEABASW5pdGlhdGVUZWxlcG9ydAwBGGFzc2V0c1EGASxBc3NldEZpbHRlcgABEGRlc3QNAQEgTG9jYXRpb24AAQx4Y20VBgEcWGNtPCgpPgARADRSZXBvcnRIb2xkaW5nCAE0cmVzcG9uc2VfaW5mb00GAURRdWVyeVJlc3BvbnNlSW5mbwABGGFzc2V0c1EGASxBc3NldEZpbHRlcgASADBCdXlFeGVjdXRpb24IARBmZWVzKQYBFEFzc2V0AAEwd2VpZ2h0X2xpbWl0EQYBLFdlaWdodExpbWl0ABMANFJlZnVuZFN1cnBsdXMAFAA8U2V0RXJyb3JIYW5kbGVyBAAVBgEkWGNtPENhbGw+ABUALFNldEFwcGVuZGl4BAAVBgEkWGNtPENhbGw+ABYAKENsZWFyRXJyb3IAFwAoQ2xhaW1Bc3NldAgBGGFzc2V0cyEGARhBc3NldHMAARh0aWNrZXQNAQEgTG9jYXRpb24AGAAQVHJhcAQALAEMdTY0ABkAQFN1YnNjcmliZVZlcnNpb24IASBxdWVyeV9pZCwBHFF1ZXJ5SWQAAUxtYXhfcmVzcG9uc2Vfd2VpZ2h0KAEYV2VpZ2h0ABoASFVuc3Vic2NyaWJlVmVyc2lvbgAbACRCdXJuQXNzZXQEACEGARhBc3NldHMAHAAsRXhwZWN0QXNzZXQEACEGARhBc3NldHMAHQAwRXhwZWN0T3JpZ2luBABJBgFAT3B0aW9uPExvY2F0aW9uPgAeACxFeHBlY3RFcnJvcgQA1QUBUE9wdGlvbjwodTMyLCBFcnJvcik+AB8AUEV4cGVjdFRyYW5zYWN0U3RhdHVzBADxBQE4TWF5YmVFcnJvckNvZGUAIAAsUXVlcnlQYWxsZXQIASxtb2R1bGVfbmFtZTgBHFZlYzx1OD4AATRyZXNwb25zZV9pbmZvTQYBRFF1ZXJ5UmVzcG9uc2VJbmZvACEAMEV4cGVjdFBhbGxldBQBFGluZGV47AEMdTMyAAEQbmFtZTgBHFZlYzx1OD4AASxtb2R1bGVfbmFtZTgBHFZlYzx1OD4AASxjcmF0ZV9tYWpvcuwBDHUzMgABPG1pbl9jcmF0ZV9taW5vcuwBDHUzMgAiAFBSZXBvcnRUcmFuc2FjdFN0YXR1cwQATQYBRFF1ZXJ5UmVzcG9uc2VJbmZvACMATENsZWFyVHJhbnNhY3RTdGF0dXMAJAA8VW5pdmVyc2FsT3JpZ2luBAAZAQEgSnVuY3Rpb24AJQA0RXhwb3J0TWVzc2FnZQwBHG5ldHdvcmshAQEkTmV0d29ya0lkAAEsZGVzdGluYXRpb24RAQFASW50ZXJpb3JMb2NhdGlvbgABDHhjbRUGARxYY208KCk+ACYAJExvY2tBc3NldAgBFGFzc2V0KQYBFEFzc2V0AAEgdW5sb2NrZXINAQEgTG9jYXRpb24AJwAsVW5sb2NrQXNzZXQIARRhc3NldCkGARRBc3NldAABGHRhcmdldA0BASBMb2NhdGlvbgAoADhOb3RlVW5sb2NrYWJsZQgBFGFzc2V0KQYBFEFzc2V0AAEUb3duZXINAQEgTG9jYXRpb24AKQA0UmVxdWVzdFVubG9jawgBFGFzc2V0KQYBFEFzc2V0AAEYbG9ja2VyDQEBIExvY2F0aW9uACoALFNldEZlZXNNb2RlBAEwaml0X3dpdGhkcmF3IAEQYm9vbAArACBTZXRUb3BpYwQABAEgW3U4OyAzMl0ALAAoQ2xlYXJUb3BpYwAtACxBbGlhc09yaWdpbgQADQEBIExvY2F0aW9uAC4APFVucGFpZEV4ZWN1dGlvbggBMHdlaWdodF9saW1pdBEGASxXZWlnaHRMaW1pdAABMGNoZWNrX29yaWdpbkkGAUBPcHRpb248TG9jYXRpb24+AC8AACEGECxzdGFnaW5nX3hjbQh2NBRhc3NldBhBc3NldHMAAAQAJQYBKFZlYzxBc3NldD4AACUGAAACKQYAKQYQLHN0YWdpbmdfeGNtCHY0FGFzc2V0FEFzc2V0AAAIAQhpZEEBARxBc3NldElkAAEMZnVuLQYBLEZ1bmdpYmlsaXR5AAAtBhAsc3RhZ2luZ194Y20IdjQUYXNzZXQsRnVuZ2liaWxpdHkAAQggRnVuZ2libGUEAPwBEHUxMjgAAAAsTm9uRnVuZ2libGUEADEGATRBc3NldEluc3RhbmNlAAEAADEGECxzdGFnaW5nX3hjbQh2NBRhc3NldDRBc3NldEluc3RhbmNlAAEYJFVuZGVmaW5lZAAAABRJbmRleAQA/AEQdTEyOAABABhBcnJheTQEAEgBHFt1ODsgNF0AAgAYQXJyYXk4BACFBQEcW3U4OyA4XQADABxBcnJheTE2BADAASBbdTg7IDE2XQAEABxBcnJheTMyBAAEASBbdTg7IDMyXQAFAAA1Bgwsc3RhZ2luZ194Y20IdjQgUmVzcG9uc2UAARgQTnVsbAAAABhBc3NldHMEACEGARhBc3NldHMAAQA8RXhlY3V0aW9uUmVzdWx0BADVBQFQT3B0aW9uPCh1MzIsIEVycm9yKT4AAgAcVmVyc2lvbgQAEAE4c3VwZXI6OlZlcnNpb24AAwAsUGFsbGV0c0luZm8EADkGAZhCb3VuZGVkVmVjPFBhbGxldEluZm8sIE1heFBhbGxldHNJbmZvPgAEADhEaXNwYXRjaFJlc3VsdAQA8QUBOE1heWJlRXJyb3JDb2RlAAUAADkGDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBPQYEUwAABABFBgEYVmVjPFQ+AAA9Bgwsc3RhZ2luZ194Y20IdjQoUGFsbGV0SW5mbwAAGAEUaW5kZXjsAQx1MzIAARBuYW1lQQYBgEJvdW5kZWRWZWM8dTgsIE1heFBhbGxldE5hbWVMZW4+AAEsbW9kdWxlX25hbWVBBgGAQm91bmRlZFZlYzx1OCwgTWF4UGFsbGV0TmFtZUxlbj4AARRtYWpvcuwBDHUzMgABFG1pbm9y7AEMdTMyAAEUcGF0Y2jsAQx1MzIAAEEGDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBCARTAAAEADgBGFZlYzxUPgAARQYAAAI9BgBJBgQYT3B0aW9uBARUAQ0BAQgQTm9uZQAAABBTb21lBAANAQAAAQAATQYMLHN0YWdpbmdfeGNtCHY0RFF1ZXJ5UmVzcG9uc2VJbmZvAAAMASxkZXN0aW5hdGlvbg0BASBMb2NhdGlvbgABIHF1ZXJ5X2lkLAEcUXVlcnlJZAABKG1heF93ZWlnaHQoARhXZWlnaHQAAFEGECxzdGFnaW5nX3hjbQh2NBRhc3NldCxBc3NldEZpbHRlcgABCCBEZWZpbml0ZQQAIQYBGEFzc2V0cwAAABBXaWxkBABVBgEkV2lsZEFzc2V0AAEAAFUGECxzdGFnaW5nX3hjbQh2NBRhc3NldCRXaWxkQXNzZXQAARAMQWxsAAAAFEFsbE9mCAEIaWRBAQEcQXNzZXRJZAABDGZ1blkGATxXaWxkRnVuZ2liaWxpdHkAAQAoQWxsQ291bnRlZAQA7AEMdTMyAAIAMEFsbE9mQ291bnRlZAwBCGlkQQEBHEFzc2V0SWQAAQxmdW5ZBgE8V2lsZEZ1bmdpYmlsaXR5AAEUY291bnTsAQx1MzIAAwAAWQYQLHN0YWdpbmdfeGNtCHY0FGFzc2V0PFdpbGRGdW5naWJpbGl0eQABCCBGdW5naWJsZQAAACxOb25GdW5naWJsZQABAABdBggMeGNtPFZlcnNpb25lZEFzc2V0cwABDAhWMgQAbQUBPHYyOjpNdWx0aUFzc2V0cwABAAhWMwQAvQUBPHYzOjpNdWx0aUFzc2V0cwADAAhWNAQAIQYBKHY0OjpBc3NldHMABAAAYQYIDHhjbTBWZXJzaW9uZWRYY20ELFJ1bnRpbWVDYWxsAAEMCFYyBABlBgFQdjI6OlhjbTxSdW50aW1lQ2FsbD4AAgAIVjMEAHUGAVB2Mzo6WGNtPFJ1bnRpbWVDYWxsPgADAAhWNAQAgQYBUHY0OjpYY208UnVudGltZUNhbGw+AAQAAGUGDAx4Y20IdjIMWGNtBCxSdW50aW1lQ2FsbAAABABpBgF0VmVjPEluc3RydWN0aW9uPFJ1bnRpbWVDYWxsPj4AAGkGAAACbQYAbQYMDHhjbQh2MixJbnN0cnVjdGlvbgQsUnVudGltZUNhbGwAAXA0V2l0aGRyYXdBc3NldAQAbQUBLE11bHRpQXNzZXRzAAAAVFJlc2VydmVBc3NldERlcG9zaXRlZAQAbQUBLE11bHRpQXNzZXRzAAEAWFJlY2VpdmVUZWxlcG9ydGVkQXNzZXQEAG0FASxNdWx0aUFzc2V0cwACADRRdWVyeVJlc3BvbnNlDAEgcXVlcnlfaWQsARxRdWVyeUlkAAEgcmVzcG9uc2WJBQEgUmVzcG9uc2UAAShtYXhfd2VpZ2h0LAEMdTY0AAMANFRyYW5zZmVyQXNzZXQIARhhc3NldHNtBQEsTXVsdGlBc3NldHMAASxiZW5lZmljaWFyeUkBATRNdWx0aUxvY2F0aW9uAAQAUFRyYW5zZmVyUmVzZXJ2ZUFzc2V0DAEYYXNzZXRzbQUBLE11bHRpQXNzZXRzAAEQZGVzdEkBATRNdWx0aUxvY2F0aW9uAAEMeGNtYQUBHFhjbTwoKT4ABQAgVHJhbnNhY3QMASxvcmlnaW5fdHlwZZkFAShPcmlnaW5LaW5kAAFYcmVxdWlyZV93ZWlnaHRfYXRfbW9zdCwBDHU2NAABEGNhbGxxBgFoRG91YmxlRW5jb2RlZDxSdW50aW1lQ2FsbD4ABgBkSHJtcE5ld0NoYW5uZWxPcGVuUmVxdWVzdAwBGHNlbmRlcuwBDHUzMgABQG1heF9tZXNzYWdlX3NpemXsAQx1MzIAATBtYXhfY2FwYWNpdHnsAQx1MzIABwBMSHJtcENoYW5uZWxBY2NlcHRlZAQBJHJlY2lwaWVudOwBDHUzMgAIAEhIcm1wQ2hhbm5lbENsb3NpbmcMASRpbml0aWF0b3LsAQx1MzIAARhzZW5kZXLsAQx1MzIAASRyZWNpcGllbnTsAQx1MzIACQAsQ2xlYXJPcmlnaW4ACgA0RGVzY2VuZE9yaWdpbgQATQEBVEludGVyaW9yTXVsdGlMb2NhdGlvbgALACxSZXBvcnRFcnJvcgwBIHF1ZXJ5X2lkLAEcUXVlcnlJZAABEGRlc3RJAQE0TXVsdGlMb2NhdGlvbgABTG1heF9yZXNwb25zZV93ZWlnaHQsAQx1NjQADAAwRGVwb3NpdEFzc2V0DAEYYXNzZXRzoQUBQE11bHRpQXNzZXRGaWx0ZXIAAShtYXhfYXNzZXRz7AEMdTMyAAEsYmVuZWZpY2lhcnlJAQE0TXVsdGlMb2NhdGlvbgANAExEZXBvc2l0UmVzZXJ2ZUFzc2V0EAEYYXNzZXRzoQUBQE11bHRpQXNzZXRGaWx0ZXIAAShtYXhfYXNzZXRz7AEMdTMyAAEQZGVzdEkBATRNdWx0aUxvY2F0aW9uAAEMeGNtYQUBHFhjbTwoKT4ADgA0RXhjaGFuZ2VBc3NldAgBEGdpdmWhBQFATXVsdGlBc3NldEZpbHRlcgABHHJlY2VpdmVtBQEsTXVsdGlBc3NldHMADwBcSW5pdGlhdGVSZXNlcnZlV2l0aGRyYXcMARhhc3NldHOhBQFATXVsdGlBc3NldEZpbHRlcgABHHJlc2VydmVJAQE0TXVsdGlMb2NhdGlvbgABDHhjbWEFARxYY208KCk+ABAAQEluaXRpYXRlVGVsZXBvcnQMARhhc3NldHOhBQFATXVsdGlBc3NldEZpbHRlcgABEGRlc3RJAQE0TXVsdGlMb2NhdGlvbgABDHhjbWEFARxYY208KCk+ABEAMFF1ZXJ5SG9sZGluZxABIHF1ZXJ5X2lkLAEcUXVlcnlJZAABEGRlc3RJAQE0TXVsdGlMb2NhdGlvbgABGGFzc2V0c6EFAUBNdWx0aUFzc2V0RmlsdGVyAAFMbWF4X3Jlc3BvbnNlX3dlaWdodCwBDHU2NAASADBCdXlFeGVjdXRpb24IARBmZWVzdQUBKE11bHRpQXNzZXQAATB3ZWlnaHRfbGltaXStBQEsV2VpZ2h0TGltaXQAEwA0UmVmdW5kU3VycGx1cwAUADxTZXRFcnJvckhhbmRsZXIEAGUGAUBYY208UnVudGltZUNhbGw+ABUALFNldEFwcGVuZGl4BABlBgFAWGNtPFJ1bnRpbWVDYWxsPgAWAChDbGVhckVycm9yABcAKENsYWltQXNzZXQIARhhc3NldHNtBQEsTXVsdGlBc3NldHMAARh0aWNrZXRJAQE0TXVsdGlMb2NhdGlvbgAYABBUcmFwBAAsAQx1NjQAGQBAU3Vic2NyaWJlVmVyc2lvbggBIHF1ZXJ5X2lkLAEcUXVlcnlJZAABTG1heF9yZXNwb25zZV93ZWlnaHQsAQx1NjQAGgBIVW5zdWJzY3JpYmVWZXJzaW9uABsAAHEGDAx4Y204ZG91YmxlX2VuY29kZWQ0RG91YmxlRW5jb2RlZAQEVAAABAEcZW5jb2RlZDgBHFZlYzx1OD4AAHUGDAx4Y20IdjMMWGNtBBBDYWxsAAAEAHkGAVhWZWM8SW5zdHJ1Y3Rpb248Q2FsbD4+AAB5BgAAAn0GAH0GDAx4Y20IdjMsSW5zdHJ1Y3Rpb24EEENhbGwAAcA0V2l0aGRyYXdBc3NldAQAvQUBLE11bHRpQXNzZXRzAAAAVFJlc2VydmVBc3NldERlcG9zaXRlZAQAvQUBLE11bHRpQXNzZXRzAAEAWFJlY2VpdmVUZWxlcG9ydGVkQXNzZXQEAL0FASxNdWx0aUFzc2V0cwACADRRdWVyeVJlc3BvbnNlEAEgcXVlcnlfaWQsARxRdWVyeUlkAAEgcmVzcG9uc2XRBQEgUmVzcG9uc2UAAShtYXhfd2VpZ2h0KAEYV2VpZ2h0AAEccXVlcmllcvkFAVRPcHRpb248TXVsdGlMb2NhdGlvbj4AAwA0VHJhbnNmZXJBc3NldAgBGGFzc2V0c70FASxNdWx0aUFzc2V0cwABLGJlbmVmaWNpYXJ54AE0TXVsdGlMb2NhdGlvbgAEAFBUcmFuc2ZlclJlc2VydmVBc3NldAwBGGFzc2V0c70FASxNdWx0aUFzc2V0cwABEGRlc3TgATRNdWx0aUxvY2F0aW9uAAEMeGNtsQUBHFhjbTwoKT4ABQAgVHJhbnNhY3QMASxvcmlnaW5fa2luZP0FAShPcmlnaW5LaW5kAAFYcmVxdWlyZV93ZWlnaHRfYXRfbW9zdCgBGFdlaWdodAABEGNhbGxxBgFMRG91YmxlRW5jb2RlZDxDYWxsPgAGAGRIcm1wTmV3Q2hhbm5lbE9wZW5SZXF1ZXN0DAEYc2VuZGVy7AEMdTMyAAFAbWF4X21lc3NhZ2Vfc2l6ZewBDHUzMgABMG1heF9jYXBhY2l0eewBDHUzMgAHAExIcm1wQ2hhbm5lbEFjY2VwdGVkBAEkcmVjaXBpZW507AEMdTMyAAgASEhybXBDaGFubmVsQ2xvc2luZwwBJGluaXRpYXRvcuwBDHUzMgABGHNlbmRlcuwBDHUzMgABJHJlY2lwaWVudOwBDHUzMgAJACxDbGVhck9yaWdpbgAKADREZXNjZW5kT3JpZ2luBADkAVRJbnRlcmlvck11bHRpTG9jYXRpb24ACwAsUmVwb3J0RXJyb3IEAAEGAURRdWVyeVJlc3BvbnNlSW5mbwAMADBEZXBvc2l0QXNzZXQIARhhc3NldHMFBgFATXVsdGlBc3NldEZpbHRlcgABLGJlbmVmaWNpYXJ54AE0TXVsdGlMb2NhdGlvbgANAExEZXBvc2l0UmVzZXJ2ZUFzc2V0DAEYYXNzZXRzBQYBQE11bHRpQXNzZXRGaWx0ZXIAARBkZXN04AE0TXVsdGlMb2NhdGlvbgABDHhjbbEFARxYY208KCk+AA4ANEV4Y2hhbmdlQXNzZXQMARBnaXZlBQYBQE11bHRpQXNzZXRGaWx0ZXIAARB3YW50vQUBLE11bHRpQXNzZXRzAAEcbWF4aW1hbCABEGJvb2wADwBcSW5pdGlhdGVSZXNlcnZlV2l0aGRyYXcMARhhc3NldHMFBgFATXVsdGlBc3NldEZpbHRlcgABHHJlc2VydmXgATRNdWx0aUxvY2F0aW9uAAEMeGNtsQUBHFhjbTwoKT4AEABASW5pdGlhdGVUZWxlcG9ydAwBGGFzc2V0cwUGAUBNdWx0aUFzc2V0RmlsdGVyAAEQZGVzdOABNE11bHRpTG9jYXRpb24AAQx4Y22xBQEcWGNtPCgpPgARADRSZXBvcnRIb2xkaW5nCAE0cmVzcG9uc2VfaW5mbwEGAURRdWVyeVJlc3BvbnNlSW5mbwABGGFzc2V0cwUGAUBNdWx0aUFzc2V0RmlsdGVyABIAMEJ1eUV4ZWN1dGlvbggBEGZlZXPFBQEoTXVsdGlBc3NldAABMHdlaWdodF9saW1pdBEGASxXZWlnaHRMaW1pdAATADRSZWZ1bmRTdXJwbHVzABQAPFNldEVycm9ySGFuZGxlcgQAdQYBJFhjbTxDYWxsPgAVACxTZXRBcHBlbmRpeAQAdQYBJFhjbTxDYWxsPgAWAChDbGVhckVycm9yABcAKENsYWltQXNzZXQIARhhc3NldHO9BQEsTXVsdGlBc3NldHMAARh0aWNrZXTgATRNdWx0aUxvY2F0aW9uABgAEFRyYXAEACwBDHU2NAAZAEBTdWJzY3JpYmVWZXJzaW9uCAEgcXVlcnlfaWQsARxRdWVyeUlkAAFMbWF4X3Jlc3BvbnNlX3dlaWdodCgBGFdlaWdodAAaAEhVbnN1YnNjcmliZVZlcnNpb24AGwAkQnVybkFzc2V0BAC9BQEsTXVsdGlBc3NldHMAHAAsRXhwZWN0QXNzZXQEAL0FASxNdWx0aUFzc2V0cwAdADBFeHBlY3RPcmlnaW4EAPkFAVRPcHRpb248TXVsdGlMb2NhdGlvbj4AHgAsRXhwZWN0RXJyb3IEANUFAVBPcHRpb248KHUzMiwgRXJyb3IpPgAfAFBFeHBlY3RUcmFuc2FjdFN0YXR1cwQA8QUBOE1heWJlRXJyb3JDb2RlACAALFF1ZXJ5UGFsbGV0CAEsbW9kdWxlX25hbWU4ARxWZWM8dTg+AAE0cmVzcG9uc2VfaW5mbwEGAURRdWVyeVJlc3BvbnNlSW5mbwAhADBFeHBlY3RQYWxsZXQUARRpbmRleOwBDHUzMgABEG5hbWU4ARxWZWM8dTg+AAEsbW9kdWxlX25hbWU4ARxWZWM8dTg+AAEsY3JhdGVfbWFqb3LsAQx1MzIAATxtaW5fY3JhdGVfbWlub3LsAQx1MzIAIgBQUmVwb3J0VHJhbnNhY3RTdGF0dXMEAAEGAURRdWVyeVJlc3BvbnNlSW5mbwAjAExDbGVhclRyYW5zYWN0U3RhdHVzACQAPFVuaXZlcnNhbE9yaWdpbgQA6AEgSnVuY3Rpb24AJQA0RXhwb3J0TWVzc2FnZQwBHG5ldHdvcmv0ASROZXR3b3JrSWQAASxkZXN0aW5hdGlvbuQBVEludGVyaW9yTXVsdGlMb2NhdGlvbgABDHhjbbEFARxYY208KCk+ACYAJExvY2tBc3NldAgBFGFzc2V0xQUBKE11bHRpQXNzZXQAASB1bmxvY2tlcuABNE11bHRpTG9jYXRpb24AJwAsVW5sb2NrQXNzZXQIARRhc3NldMUFAShNdWx0aUFzc2V0AAEYdGFyZ2V04AE0TXVsdGlMb2NhdGlvbgAoADhOb3RlVW5sb2NrYWJsZQgBFGFzc2V0xQUBKE11bHRpQXNzZXQAARRvd25lcuABNE11bHRpTG9jYXRpb24AKQA0UmVxdWVzdFVubG9jawgBFGFzc2V0xQUBKE11bHRpQXNzZXQAARhsb2NrZXLgATRNdWx0aUxvY2F0aW9uACoALFNldEZlZXNNb2RlBAEwaml0X3dpdGhkcmF3IAEQYm9vbAArACBTZXRUb3BpYwQABAEgW3U4OyAzMl0ALAAoQ2xlYXJUb3BpYwAtACxBbGlhc09yaWdpbgQA4AE0TXVsdGlMb2NhdGlvbgAuADxVbnBhaWRFeGVjdXRpb24IATB3ZWlnaHRfbGltaXQRBgEsV2VpZ2h0TGltaXQAATBjaGVja19vcmlnaW75BQFUT3B0aW9uPE11bHRpTG9jYXRpb24+AC8AAIEGDCxzdGFnaW5nX3hjbQh2NAxYY20EEENhbGwAAAQAhQYBWFZlYzxJbnN0cnVjdGlvbjxDYWxsPj4AAIUGAAACiQYAiQYMLHN0YWdpbmdfeGNtCHY0LEluc3RydWN0aW9uBBBDYWxsAAHANFdpdGhkcmF3QXNzZXQEACEGARhBc3NldHMAAABUUmVzZXJ2ZUFzc2V0RGVwb3NpdGVkBAAhBgEYQXNzZXRzAAEAWFJlY2VpdmVUZWxlcG9ydGVkQXNzZXQEACEGARhBc3NldHMAAgA0UXVlcnlSZXNwb25zZRABIHF1ZXJ5X2lkLAEcUXVlcnlJZAABIHJlc3BvbnNlNQYBIFJlc3BvbnNlAAEobWF4X3dlaWdodCgBGFdlaWdodAABHHF1ZXJpZXJJBgFAT3B0aW9uPExvY2F0aW9uPgADADRUcmFuc2ZlckFzc2V0CAEYYXNzZXRzIQYBGEFzc2V0cwABLGJlbmVmaWNpYXJ5DQEBIExvY2F0aW9uAAQAUFRyYW5zZmVyUmVzZXJ2ZUFzc2V0DAEYYXNzZXRzIQYBGEFzc2V0cwABEGRlc3QNAQEgTG9jYXRpb24AAQx4Y20VBgEcWGNtPCgpPgAFACBUcmFuc2FjdAwBLG9yaWdpbl9raW5k/QUBKE9yaWdpbktpbmQAAVhyZXF1aXJlX3dlaWdodF9hdF9tb3N0KAEYV2VpZ2h0AAEQY2FsbHEGAUxEb3VibGVFbmNvZGVkPENhbGw+AAYAZEhybXBOZXdDaGFubmVsT3BlblJlcXVlc3QMARhzZW5kZXLsAQx1MzIAAUBtYXhfbWVzc2FnZV9zaXpl7AEMdTMyAAEwbWF4X2NhcGFjaXR57AEMdTMyAAcATEhybXBDaGFubmVsQWNjZXB0ZWQEASRyZWNpcGllbnTsAQx1MzIACABISHJtcENoYW5uZWxDbG9zaW5nDAEkaW5pdGlhdG9y7AEMdTMyAAEYc2VuZGVy7AEMdTMyAAEkcmVjaXBpZW507AEMdTMyAAkALENsZWFyT3JpZ2luAAoANERlc2NlbmRPcmlnaW4EABEBAUBJbnRlcmlvckxvY2F0aW9uAAsALFJlcG9ydEVycm9yBABNBgFEUXVlcnlSZXNwb25zZUluZm8ADAAwRGVwb3NpdEFzc2V0CAEYYXNzZXRzUQYBLEFzc2V0RmlsdGVyAAEsYmVuZWZpY2lhcnkNAQEgTG9jYXRpb24ADQBMRGVwb3NpdFJlc2VydmVBc3NldAwBGGFzc2V0c1EGASxBc3NldEZpbHRlcgABEGRlc3QNAQEgTG9jYXRpb24AAQx4Y20VBgEcWGNtPCgpPgAOADRFeGNoYW5nZUFzc2V0DAEQZ2l2ZVEGASxBc3NldEZpbHRlcgABEHdhbnQhBgEYQXNzZXRzAAEcbWF4aW1hbCABEGJvb2wADwBcSW5pdGlhdGVSZXNlcnZlV2l0aGRyYXcMARhhc3NldHNRBgEsQXNzZXRGaWx0ZXIAARxyZXNlcnZlDQEBIExvY2F0aW9uAAEMeGNtFQYBHFhjbTwoKT4AEABASW5pdGlhdGVUZWxlcG9ydAwBGGFzc2V0c1EGASxBc3NldEZpbHRlcgABEGRlc3QNAQEgTG9jYXRpb24AAQx4Y20VBgEcWGNtPCgpPgARADRSZXBvcnRIb2xkaW5nCAE0cmVzcG9uc2VfaW5mb00GAURRdWVyeVJlc3BvbnNlSW5mbwABGGFzc2V0c1EGASxBc3NldEZpbHRlcgASADBCdXlFeGVjdXRpb24IARBmZWVzKQYBFEFzc2V0AAEwd2VpZ2h0X2xpbWl0EQYBLFdlaWdodExpbWl0ABMANFJlZnVuZFN1cnBsdXMAFAA8U2V0RXJyb3JIYW5kbGVyBACBBgEkWGNtPENhbGw+ABUALFNldEFwcGVuZGl4BACBBgEkWGNtPENhbGw+ABYAKENsZWFyRXJyb3IAFwAoQ2xhaW1Bc3NldAgBGGFzc2V0cyEGARhBc3NldHMAARh0aWNrZXQNAQEgTG9jYXRpb24AGAAQVHJhcAQALAEMdTY0ABkAQFN1YnNjcmliZVZlcnNpb24IASBxdWVyeV9pZCwBHFF1ZXJ5SWQAAUxtYXhfcmVzcG9uc2Vfd2VpZ2h0KAEYV2VpZ2h0ABoASFVuc3Vic2NyaWJlVmVyc2lvbgAbACRCdXJuQXNzZXQEACEGARhBc3NldHMAHAAsRXhwZWN0QXNzZXQEACEGARhBc3NldHMAHQAwRXhwZWN0T3JpZ2luBABJBgFAT3B0aW9uPExvY2F0aW9uPgAeACxFeHBlY3RFcnJvcgQA1QUBUE9wdGlvbjwodTMyLCBFcnJvcik+AB8AUEV4cGVjdFRyYW5zYWN0U3RhdHVzBADxBQE4TWF5YmVFcnJvckNvZGUAIAAsUXVlcnlQYWxsZXQIASxtb2R1bGVfbmFtZTgBHFZlYzx1OD4AATRyZXNwb25zZV9pbmZvTQYBRFF1ZXJ5UmVzcG9uc2VJbmZvACEAMEV4cGVjdFBhbGxldBQBFGluZGV47AEMdTMyAAEQbmFtZTgBHFZlYzx1OD4AASxtb2R1bGVfbmFtZTgBHFZlYzx1OD4AASxjcmF0ZV9tYWpvcuwBDHUzMgABPG1pbl9jcmF0ZV9taW5vcuwBDHUzMgAiAFBSZXBvcnRUcmFuc2FjdFN0YXR1cwQATQYBRFF1ZXJ5UmVzcG9uc2VJbmZvACMATENsZWFyVHJhbnNhY3RTdGF0dXMAJAA8VW5pdmVyc2FsT3JpZ2luBAAZAQEgSnVuY3Rpb24AJQA0RXhwb3J0TWVzc2FnZQwBHG5ldHdvcmshAQEkTmV0d29ya0lkAAEsZGVzdGluYXRpb24RAQFASW50ZXJpb3JMb2NhdGlvbgABDHhjbRUGARxYY208KCk+ACYAJExvY2tBc3NldAgBFGFzc2V0KQYBFEFzc2V0AAEgdW5sb2NrZXINAQEgTG9jYXRpb24AJwAsVW5sb2NrQXNzZXQIARRhc3NldCkGARRBc3NldAABGHRhcmdldA0BASBMb2NhdGlvbgAoADhOb3RlVW5sb2NrYWJsZQgBFGFzc2V0KQYBFEFzc2V0AAEUb3duZXINAQEgTG9jYXRpb24AKQA0UmVxdWVzdFVubG9jawgBFGFzc2V0KQYBFEFzc2V0AAEYbG9ja2VyDQEBIExvY2F0aW9uACoALFNldEZlZXNNb2RlBAEwaml0X3dpdGhkcmF3IAEQYm9vbAArACBTZXRUb3BpYwQABAEgW3U4OyAzMl0ALAAoQ2xlYXJUb3BpYwAtACxBbGlhc09yaWdpbgQADQEBIExvY2F0aW9uAC4APFVucGFpZEV4ZWN1dGlvbggBMHdlaWdodF9saW1pdBEGASxXZWlnaHRMaW1pdAABMGNoZWNrX29yaWdpbkkGAUBPcHRpb248TG9jYXRpb24+AC8AAI0GEFBzdGFnaW5nX3hjbV9leGVjdXRvchh0cmFpdHM4YXNzZXRfdHJhbnNmZXIwVHJhbnNmZXJUeXBlAAEQIFRlbGVwb3J0AAAAMExvY2FsUmVzZXJ2ZQABAEhEZXN0aW5hdGlvblJlc2VydmUAAgA0UmVtb3RlUmVzZXJ2ZQQARQEBRFZlcnNpb25lZExvY2F0aW9uAAMAAJEGCAx4Y21AVmVyc2lvbmVkQXNzZXRJZAABCAhWMwQACQEBLHYzOjpBc3NldElkAAMACFY0BABBAQEsdjQ6OkFzc2V0SWQABAAAlQYMUHBhbGxldF9tZXNzYWdlX3F1ZXVlGHBhbGxldBBDYWxsBARUAAEIJHJlYXBfcGFnZQgBOG1lc3NhZ2Vfb3JpZ2lumQYBSE1lc3NhZ2VPcmlnaW5PZjxUPgABKHBhZ2VfaW5kZXgQASRQYWdlSW5kZXgAAAQ9AVJlbW92ZSBhIHBhZ2Ugd2hpY2ggaGFzIG5vIG1vcmUgbWVzc2FnZXMgcmVtYWluaW5nIHRvIGJlIHByb2Nlc3NlZCBvciBpcyBzdGFsZS5IZXhlY3V0ZV9vdmVyd2VpZ2h0EAE4bWVzc2FnZV9vcmlnaW6ZBgFITWVzc2FnZU9yaWdpbk9mPFQ+AAEQcGFnZRABJFBhZ2VJbmRleAABFGluZGV4EAEcVDo6U2l6ZQABMHdlaWdodF9saW1pdCgBGFdlaWdodAABNHhFeGVjdXRlIGFuIG92ZXJ3ZWlnaHQgbWVzc2FnZS4ATQFUZW1wb3JhcnkgcHJvY2Vzc2luZyBlcnJvcnMgd2lsbCBiZSBwcm9wYWdhdGVkIHdoZXJlYXMgcGVybWFuZW50IGVycm9ycyBhcmUgdHJlYXRlZFRhcyBzdWNjZXNzIGNvbmRpdGlvbi4AdC0gYG9yaWdpbmA6IE11c3QgYmUgYFNpZ25lZGAuNQEtIGBtZXNzYWdlX29yaWdpbmA6IFRoZSBvcmlnaW4gZnJvbSB3aGljaCB0aGUgbWVzc2FnZSB0byBiZSBleGVjdXRlZCBhcnJpdmVkLj0BLSBgcGFnZWA6IFRoZSBwYWdlIGluIHRoZSBxdWV1ZSBpbiB3aGljaCB0aGUgbWVzc2FnZSB0byBiZSBleGVjdXRlZCBpcyBzaXR0aW5nLgkBLSBgaW5kZXhgOiBUaGUgaW5kZXggaW50byB0aGUgcXVldWUgb2YgdGhlIG1lc3NhZ2UgdG8gYmUgZXhlY3V0ZWQuWQEtIGB3ZWlnaHRfbGltaXRgOiBUaGUgbWF4aW11bSBhbW91bnQgb2Ygd2VpZ2h0IGFsbG93ZWQgdG8gYmUgY29uc3VtZWQgaW4gdGhlIGV4ZWN1dGlvbkQgIG9mIHRoZSBtZXNzYWdlLgD0QmVuY2htYXJrIGNvbXBsZXhpdHkgY29uc2lkZXJhdGlvbnM6IE8oaW5kZXggKyB3ZWlnaHRfbGltaXQpLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy6ZBgxscG9sa2Fkb3RfcnVudGltZV9wYXJhY2hhaW5zJGluY2x1c2lvblhBZ2dyZWdhdGVNZXNzYWdlT3JpZ2luAAEEDFVtcAQAnQYBKFVtcFF1ZXVlSWQAAAAAnQYMbHBvbGthZG90X3J1bnRpbWVfcGFyYWNoYWlucyRpbmNsdXNpb24oVW1wUXVldWVJZAABBBBQYXJhBACNAgEYUGFyYUlkAAAAAKEGDERwYWxsZXRfYXNzZXRfcmF0ZRhwYWxsZXQQQ2FsbAQEVAABDBhjcmVhdGUIAShhc3NldF9raW5k3AFEQm94PFQ6OkFzc2V0S2luZD4AARByYXRlpQYBJEZpeGVkVTEyOAAAEA0BSW5pdGlhbGl6ZSBhIGNvbnZlcnNpb24gcmF0ZSB0byBuYXRpdmUgYmFsYW5jZSBmb3IgdGhlIGdpdmVuIGFzc2V0LgA0IyMgQ29tcGxleGl0eRgtIE8oMSkYdXBkYXRlCAEoYXNzZXRfa2luZNwBREJveDxUOjpBc3NldEtpbmQ+AAEQcmF0ZaUGASRGaXhlZFUxMjgAARAFAVVwZGF0ZSB0aGUgY29udmVyc2lvbiByYXRlIHRvIG5hdGl2ZSBiYWxhbmNlIGZvciB0aGUgZ2l2ZW4gYXNzZXQuADQjIyBDb21wbGV4aXR5GC0gTygxKRhyZW1vdmUEAShhc3NldF9raW5k3AFEQm94PFQ6OkFzc2V0S2luZD4AAhAlAVJlbW92ZSBhbiBleGlzdGluZyBjb252ZXJzaW9uIHJhdGUgdG8gbmF0aXZlIGJhbGFuY2UgZm9yIHRoZSBnaXZlbiBhc3NldC4ANCMjIENvbXBsZXhpdHkYLSBPKDEpBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLqUGDDRzcF9hcml0aG1ldGljLGZpeGVkX3BvaW50JEZpeGVkVTEyOAAABAAYARB1MTI4AACpBgwwcGFsbGV0X2JlZWZ5GHBhbGxldBBDYWxsBARUAAEMTHJlcG9ydF9lcXVpdm9jYXRpb24IAUhlcXVpdm9jYXRpb25fcHJvb2atBgGNAUJveDxEb3VibGVWb3RpbmdQcm9vZjxCbG9ja051bWJlckZvcjxUPiwgVDo6QmVlZnlJZCw8VDo6QmVlZnlJZAphcyBSdW50aW1lQXBwUHVibGljPjo6U2lnbmF0dXJlLD4sPgABPGtleV9vd25lcl9wcm9vZq0BAUBUOjpLZXlPd25lclByb29mAAAQCQFSZXBvcnQgdm90ZXIgZXF1aXZvY2F0aW9uL21pc2JlaGF2aW9yLiBUaGlzIG1ldGhvZCB3aWxsIHZlcmlmeSB0aGX0ZXF1aXZvY2F0aW9uIHByb29mIGFuZCB2YWxpZGF0ZSB0aGUgZ2l2ZW4ga2V5IG93bmVyc2hpcCBwcm9vZvhhZ2FpbnN0IHRoZSBleHRyYWN0ZWQgb2ZmZW5kZXIuIElmIGJvdGggYXJlIHZhbGlkLCB0aGUgb2ZmZW5jZUR3aWxsIGJlIHJlcG9ydGVkLnByZXBvcnRfZXF1aXZvY2F0aW9uX3Vuc2lnbmVkCAFIZXF1aXZvY2F0aW9uX3Byb29mrQYBjQFCb3g8RG91YmxlVm90aW5nUHJvb2Y8QmxvY2tOdW1iZXJGb3I8VD4sIFQ6OkJlZWZ5SWQsPFQ6OkJlZWZ5SWQKYXMgUnVudGltZUFwcFB1YmxpYz46OlNpZ25hdHVyZSw+LD4AATxrZXlfb3duZXJfcHJvb2atAQFAVDo6S2V5T3duZXJQcm9vZgABJAkBUmVwb3J0IHZvdGVyIGVxdWl2b2NhdGlvbi9taXNiZWhhdmlvci4gVGhpcyBtZXRob2Qgd2lsbCB2ZXJpZnkgdGhl9GVxdWl2b2NhdGlvbiBwcm9vZiBhbmQgdmFsaWRhdGUgdGhlIGdpdmVuIGtleSBvd25lcnNoaXAgcHJvb2b4YWdhaW5zdCB0aGUgZXh0cmFjdGVkIG9mZmVuZGVyLiBJZiBib3RoIGFyZSB2YWxpZCwgdGhlIG9mZmVuY2VEd2lsbCBiZSByZXBvcnRlZC4ADQFUaGlzIGV4dHJpbnNpYyBtdXN0IGJlIGNhbGxlZCB1bnNpZ25lZCBhbmQgaXQgaXMgZXhwZWN0ZWQgdGhhdCBvbmx5FQFibG9jayBhdXRob3JzIHdpbGwgY2FsbCBpdCAodmFsaWRhdGVkIGluIGBWYWxpZGF0ZVVuc2lnbmVkYCksIGFzIHN1Y2gVAWlmIHRoZSBibG9jayBhdXRob3IgaXMgZGVmaW5lZCBpdCB3aWxsIGJlIGRlZmluZWQgYXMgdGhlIGVxdWl2b2NhdGlvbiRyZXBvcnRlci48c2V0X25ld19nZW5lc2lzBAE8ZGVsYXlfaW5fYmxvY2tzEAFEQmxvY2tOdW1iZXJGb3I8VD4AAhBdAVJlc2V0IEJFRUZZIGNvbnNlbnN1cyBieSBzZXR0aW5nIGEgbmV3IEJFRUZZIGdlbmVzaXMgYXQgYGRlbGF5X2luX2Jsb2Nrc2AgYmxvY2tzIGluIHRoZRxmdXR1cmUuALROb3RlOiBgZGVsYXlfaW5fYmxvY2tzYCBoYXMgdG8gYmUgYXQgbGVhc3QgMS4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMurQYISHNwX2NvbnNlbnN1c19iZWVmeUREb3VibGVWb3RpbmdQcm9vZgwYTnVtYmVyARAISWQBKQIkU2lnbmF0dXJlAbEGAAgBFGZpcnN0tQYBiFZvdGVNZXNzYWdlPE51bWJlciwgSWQsIFNpZ25hdHVyZT4AARhzZWNvbmS1BgGIVm90ZU1lc3NhZ2U8TnVtYmVyLCBJZCwgU2lnbmF0dXJlPgAAsQYMSHNwX2NvbnNlbnN1c19iZWVmeTBlY2RzYV9jcnlwdG8kU2lnbmF0dXJlAAAEAK0CAUBlY2RzYTo6U2lnbmF0dXJlAAC1BghIc3BfY29uc2Vuc3VzX2JlZWZ5LFZvdGVNZXNzYWdlDBhOdW1iZXIBEAhJZAEpAiRTaWduYXR1cmUBsQYADAEoY29tbWl0bWVudLkGAUhDb21taXRtZW50PE51bWJlcj4AAQhpZCkCAQhJZAABJHNpZ25hdHVyZbEGASRTaWduYXR1cmUAALkGDEhzcF9jb25zZW5zdXNfYmVlZnkoY29tbWl0bWVudChDb21taXRtZW50BDBUQmxvY2tOdW1iZXIBEAAMARxwYXlsb2FkvQYBHFBheWxvYWQAATBibG9ja19udW1iZXIQATBUQmxvY2tOdW1iZXIAAUB2YWxpZGF0b3Jfc2V0X2lkMAE4VmFsaWRhdG9yU2V0SWQAAL0GDEhzcF9jb25zZW5zdXNfYmVlZnkccGF5bG9hZBxQYXlsb2FkAAAEAMEGAXhWZWM8KEJlZWZ5UGF5bG9hZElkLCBWZWM8dTg+KT4AAMEGAAACxQYAxQYAAAQIyQY4AMkGAAADAgAAAAgAzQYQXHBvbGthZG90X3J1bnRpbWVfY29tbW9uSHBhcmFzX3N1ZG9fd3JhcHBlchhwYWxsZXQQQ2FsbAQEVAABGHRzdWRvX3NjaGVkdWxlX3BhcmFfaW5pdGlhbGl6ZQgBCGlkjQIBGFBhcmFJZAABHGdlbmVzaXPRBgE8UGFyYUdlbmVzaXNBcmdzAAAUDQFTY2hlZHVsZSBhIHBhcmEgdG8gYmUgaW5pdGlhbGl6ZWQgYXQgdGhlIHN0YXJ0IG9mIHRoZSBuZXh0IHNlc3Npb24uAE0BVGhpcyBzaG91bGQgb25seSBiZSB1c2VkIGZvciBURVNUSU5HIGFuZCBub3Qgb24gUFJPRFVDVElPTiBjaGFpbnMuIEl0IGF1dG9tYXRpY2FsbHlJAWFzc2lnbnMgQ29yZXRpbWUgdG8gdGhlIGNoYWluIGFuZCBpbmNyZWFzZXMgdGhlIG51bWJlciBvZiBjb3Jlcy4gVGh1cywgdGhlcmUgaXMgbm+AcnVubmluZyBjb3JldGltZSBjaGFpbiByZXF1aXJlZC5oc3Vkb19zY2hlZHVsZV9wYXJhX2NsZWFudXAEAQhpZI0CARhQYXJhSWQAAQQJAVNjaGVkdWxlIGEgcGFyYSB0byBiZSBjbGVhbmVkIHVwIGF0IHRoZSBzdGFydCBvZiB0aGUgbmV4dCBzZXNzaW9uLoBzdWRvX3NjaGVkdWxlX3BhcmF0aHJlYWRfdXBncmFkZQQBCGlkjQIBGFBhcmFJZAACBB0BVXBncmFkZSBhIHBhcmF0aHJlYWQgKG9uLWRlbWFuZCBwYXJhY2hhaW4pIHRvIGEgbGVhc2UgaG9sZGluZyBwYXJhY2hhaW6Ec3Vkb19zY2hlZHVsZV9wYXJhY2hhaW5fZG93bmdyYWRlBAEIaWSNAgEYUGFyYUlkAAME9ERvd25ncmFkZSBhIGxlYXNlIGhvbGRpbmcgcGFyYWNoYWluIHRvIGFuIG9uLWRlbWFuZCBwYXJhY2hhaW5cc3Vkb19xdWV1ZV9kb3dud2FyZF94Y20IAQhpZI0CARhQYXJhSWQAAQx4Y21dBQF4Qm94PHhjbTo6b3BhcXVlOjpWZXJzaW9uZWRYY20+AAQQmFNlbmQgYSBkb3dud2FyZCBYQ00gdG8gdGhlIGdpdmVuIHBhcmEuAFEBVGhlIGdpdmVuIHBhcmFjaGFpbiBzaG91bGQgZXhpc3QgYW5kIHRoZSBwYXlsb2FkIHNob3VsZCBub3QgZXhjZWVkIHRoZSBwcmVjb25maWd1cmVkoHNpemUgYGNvbmZpZy5tYXhfZG93bndhcmRfbWVzc2FnZV9zaXplYC5sc3Vkb19lc3RhYmxpc2hfaHJtcF9jaGFubmVsEAEYc2VuZGVyjQIBGFBhcmFJZAABJHJlY2lwaWVudI0CARhQYXJhSWQAATBtYXhfY2FwYWNpdHkQAQx1MzIAAUBtYXhfbWVzc2FnZV9zaXplEAEMdTMyAAUQAQFGb3JjZWZ1bGx5IGVzdGFibGlzaCBhIGNoYW5uZWwgZnJvbSB0aGUgc2VuZGVyIHRvIHRoZSByZWNpcGllbnQuAFUBVGhpcyBpcyBlcXVpdmFsZW50IHRvIHNlbmRpbmcgYW4gYEhybXA6OmhybXBfaW5pdF9vcGVuX2NoYW5uZWxgIGV4dHJpbnNpYyBmb2xsb3dlZCBieYRgSHJtcDo6aHJtcF9hY2NlcHRfb3Blbl9jaGFubmVsYC4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMu0QYMbHBvbGthZG90X3J1bnRpbWVfcGFyYWNoYWlucxRwYXJhczxQYXJhR2VuZXNpc0FyZ3MAAAwBMGdlbmVzaXNfaGVhZK0EASBIZWFkRGF0YQABPHZhbGlkYXRpb25fY29kZakEAThWYWxpZGF0aW9uQ29kZQABJHBhcmFfa2luZCABIFBhcmFLaW5kAADVBgwscGFsbGV0X3N1ZG8YcGFsbGV0EENhbGwEBFQAARQQc3VkbwQBEGNhbGx1AQF8Qm94PDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgAABDUBQXV0aGVudGljYXRlcyB0aGUgc3VkbyBrZXkgYW5kIGRpc3BhdGNoZXMgYSBmdW5jdGlvbiBjYWxsIHdpdGggYFJvb3RgIG9yaWdpbi5Uc3Vkb191bmNoZWNrZWRfd2VpZ2h0CAEQY2FsbHUBAXxCb3g8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AAEYd2VpZ2h0KAEYV2VpZ2h0AAEUNQFBdXRoZW50aWNhdGVzIHRoZSBzdWRvIGtleSBhbmQgZGlzcGF0Y2hlcyBhIGZ1bmN0aW9uIGNhbGwgd2l0aCBgUm9vdGAgb3JpZ2luLi0BVGhpcyBmdW5jdGlvbiBkb2VzIG5vdCBjaGVjayB0aGUgd2VpZ2h0IG9mIHRoZSBjYWxsLCBhbmQgaW5zdGVhZCBhbGxvd3MgdGhlsFN1ZG8gdXNlciB0byBzcGVjaWZ5IHRoZSB3ZWlnaHQgb2YgdGhlIGNhbGwuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4cc2V0X2tleQQBDG5ld8UBAVBBY2NvdW50SWRMb29rdXBPZjxUPgACCF0BQXV0aGVudGljYXRlcyB0aGUgY3VycmVudCBzdWRvIGtleSBhbmQgc2V0cyB0aGUgZ2l2ZW4gQWNjb3VudElkIChgbmV3YCkgYXMgdGhlIG5ldyBzdWRvEGtleS4cc3Vkb19hcwgBDHdob8UBAVBBY2NvdW50SWRMb29rdXBPZjxUPgABEGNhbGx1AQF8Qm94PDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgADEE0BQXV0aGVudGljYXRlcyB0aGUgc3VkbyBrZXkgYW5kIGRpc3BhdGNoZXMgYSBmdW5jdGlvbiBjYWxsIHdpdGggYFNpZ25lZGAgb3JpZ2luIGZyb21AYSBnaXZlbiBhY2NvdW50LgDMVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uKHJlbW92ZV9rZXkABAyEUGVybWFuZW50bHkgcmVtb3ZlcyB0aGUgc3VkbyBrZXkuAGwqKlRoaXMgY2Fubm90IGJlIHVuLWRvbmUuKioEDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMu2QYMKHNwX3J1bnRpbWUYdHJhaXRzLEJsYWtlVHdvMjU2AAAAAN0GDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBCARTAAAEADgBGFZlYzxUPgAA4QYMYHBhbGxldF9jb252aWN0aW9uX3ZvdGluZxR0eXBlcxRUYWxseQgUVm90ZXMBGBRUb3RhbAAADAEQYXllcxgBFFZvdGVzAAEQbmF5cxgBFFZvdGVzAAEcc3VwcG9ydBgBFFZvdGVzAADlBgxAcGFsbGV0X3doaXRlbGlzdBhwYWxsZXQURXZlbnQEBFQAAQw8Q2FsbFdoaXRlbGlzdGVkBAEkY2FsbF9oYXNoNAEcVDo6SGFzaAAAAFhXaGl0ZWxpc3RlZENhbGxSZW1vdmVkBAEkY2FsbF9oYXNoNAEcVDo6SGFzaAABAGRXaGl0ZWxpc3RlZENhbGxEaXNwYXRjaGVkCAEkY2FsbF9oYXNoNAEcVDo6SGFzaAABGHJlc3VsdOkGAWhEaXNwYXRjaFJlc3VsdFdpdGhQb3N0SW5mbwACAAR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldOkGBBhSZXN1bHQIBFQB7QYERQH1BgEICE9rBADtBgAAAAAMRXJyBAD1BgAAAQAA7QYMNGZyYW1lX3N1cHBvcnQgZGlzcGF0Y2hAUG9zdERpc3BhdGNoSW5mbwAACAE0YWN0dWFsX3dlaWdodPEGAThPcHRpb248V2VpZ2h0PgABIHBheXNfZmVlZAEQUGF5cwAA8QYEGE9wdGlvbgQEVAEoAQgQTm9uZQAAABBTb21lBAAoAAABAAD1Bggoc3BfcnVudGltZWREaXNwYXRjaEVycm9yV2l0aFBvc3RJbmZvBBBJbmZvAe0GAAgBJHBvc3RfaW5mb+0GARBJbmZvAAEUZXJyb3JoATREaXNwYXRjaEVycm9yAAD5BhBccG9sa2Fkb3RfcnVudGltZV9jb21tb24YY2xhaW1zGHBhbGxldBRFdmVudAQEVAABBBxDbGFpbWVkDAEMd2hvAAEwVDo6QWNjb3VudElkAAFAZXRoZXJldW1fYWRkcmVzc7ECATxFdGhlcmV1bUFkZHJlc3MAARhhbW91bnQYATBCYWxhbmNlT2Y8VD4AAARoU29tZW9uZSBjbGFpbWVkIHNvbWUgRE9Ucy4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXT9Bgw4cGFsbGV0X3Zlc3RpbmcYcGFsbGV0FEV2ZW50BARUAAEIOFZlc3RpbmdVcGRhdGVkCAEcYWNjb3VudAABMFQ6OkFjY291bnRJZAABIHVudmVzdGVkGAEwQmFsYW5jZU9mPFQ+AAAIUQFUaGUgYW1vdW50IHZlc3RlZCBoYXMgYmVlbiB1cGRhdGVkLiBUaGlzIGNvdWxkIGluZGljYXRlIGEgY2hhbmdlIGluIGZ1bmRzIGF2YWlsYWJsZS4lAVRoZSBiYWxhbmNlIGdpdmVuIGlzIHRoZSBhbW91bnQgd2hpY2ggaXMgbGVmdCB1bnZlc3RlZCAoYW5kIHRodXMgbG9ja2VkKS5AVmVzdGluZ0NvbXBsZXRlZAQBHGFjY291bnQAATBUOjpBY2NvdW50SWQAAQScQW4gXFthY2NvdW50XF0gaGFzIGJlY29tZSBmdWxseSB2ZXN0ZWQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0AQcMOHBhbGxldF91dGlsaXR5GHBhbGxldBRFdmVudAABGEBCYXRjaEludGVycnVwdGVkCAEUaW5kZXgQAQx1MzIAARRlcnJvcmgBNERpc3BhdGNoRXJyb3IAAAhVAUJhdGNoIG9mIGRpc3BhdGNoZXMgZGlkIG5vdCBjb21wbGV0ZSBmdWxseS4gSW5kZXggb2YgZmlyc3QgZmFpbGluZyBkaXNwYXRjaCBnaXZlbiwgYXNId2VsbCBhcyB0aGUgZXJyb3IuOEJhdGNoQ29tcGxldGVkAAEEyEJhdGNoIG9mIGRpc3BhdGNoZXMgY29tcGxldGVkIGZ1bGx5IHdpdGggbm8gZXJyb3IuYEJhdGNoQ29tcGxldGVkV2l0aEVycm9ycwACBLRCYXRjaCBvZiBkaXNwYXRjaGVzIGNvbXBsZXRlZCBidXQgaGFzIGVycm9ycy40SXRlbUNvbXBsZXRlZAADBB0BQSBzaW5nbGUgaXRlbSB3aXRoaW4gYSBCYXRjaCBvZiBkaXNwYXRjaGVzIGhhcyBjb21wbGV0ZWQgd2l0aCBubyBlcnJvci4oSXRlbUZhaWxlZAQBFGVycm9yaAE0RGlzcGF0Y2hFcnJvcgAEBBEBQSBzaW5nbGUgaXRlbSB3aXRoaW4gYSBCYXRjaCBvZiBkaXNwYXRjaGVzIGhhcyBjb21wbGV0ZWQgd2l0aCBlcnJvci4wRGlzcGF0Y2hlZEFzBAEYcmVzdWx0iAE4RGlzcGF0Y2hSZXN1bHQABQRYQSBjYWxsIHdhcyBkaXNwYXRjaGVkLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldAUHDDBwYWxsZXRfcHJveHkYcGFsbGV0FEV2ZW50BARUAAEUNFByb3h5RXhlY3V0ZWQEARhyZXN1bHSIAThEaXNwYXRjaFJlc3VsdAAABLxBIHByb3h5IHdhcyBleGVjdXRlZCBjb3JyZWN0bHksIHdpdGggdGhlIGdpdmVuLixQdXJlQ3JlYXRlZBABEHB1cmUAATBUOjpBY2NvdW50SWQAAQx3aG8AATBUOjpBY2NvdW50SWQAAShwcm94eV90eXBl3QIBMFQ6OlByb3h5VHlwZQABUGRpc2FtYmlndWF0aW9uX2luZGV4bQEBDHUxNgABCNxBIHB1cmUgYWNjb3VudCBoYXMgYmVlbiBjcmVhdGVkIGJ5IG5ldyBwcm94eSB3aXRoIGdpdmVukGRpc2FtYmlndWF0aW9uIGluZGV4IGFuZCBwcm94eSB0eXBlLiRBbm5vdW5jZWQMARByZWFsAAEwVDo6QWNjb3VudElkAAEUcHJveHkAATBUOjpBY2NvdW50SWQAASRjYWxsX2hhc2g0ATRDYWxsSGFzaE9mPFQ+AAIE4EFuIGFubm91bmNlbWVudCB3YXMgcGxhY2VkIHRvIG1ha2UgYSBjYWxsIGluIHRoZSBmdXR1cmUuKFByb3h5QWRkZWQQASRkZWxlZ2F0b3IAATBUOjpBY2NvdW50SWQAASRkZWxlZ2F0ZWUAATBUOjpBY2NvdW50SWQAAShwcm94eV90eXBl3QIBMFQ6OlByb3h5VHlwZQABFGRlbGF5EAFEQmxvY2tOdW1iZXJGb3I8VD4AAwRIQSBwcm94eSB3YXMgYWRkZWQuMFByb3h5UmVtb3ZlZBABJGRlbGVnYXRvcgABMFQ6OkFjY291bnRJZAABJGRlbGVnYXRlZQABMFQ6OkFjY291bnRJZAABKHByb3h5X3R5cGXdAgEwVDo6UHJveHlUeXBlAAEUZGVsYXkQAURCbG9ja051bWJlckZvcjxUPgAEBFBBIHByb3h5IHdhcyByZW1vdmVkLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldAkHDDxwYWxsZXRfbXVsdGlzaWcYcGFsbGV0FEV2ZW50BARUAAEQLE5ld011bHRpc2lnDAEkYXBwcm92aW5nAAEwVDo6QWNjb3VudElkAAEgbXVsdGlzaWcAATBUOjpBY2NvdW50SWQAASRjYWxsX2hhc2gEASBDYWxsSGFzaAAABIxBIG5ldyBtdWx0aXNpZyBvcGVyYXRpb24gaGFzIGJlZ3VuLkBNdWx0aXNpZ0FwcHJvdmFsEAEkYXBwcm92aW5nAAEwVDo6QWNjb3VudElkAAEkdGltZXBvaW506QIBcFRpbWVwb2ludDxCbG9ja051bWJlckZvcjxUPj4AASBtdWx0aXNpZwABMFQ6OkFjY291bnRJZAABJGNhbGxfaGFzaAQBIENhbGxIYXNoAAEEyEEgbXVsdGlzaWcgb3BlcmF0aW9uIGhhcyBiZWVuIGFwcHJvdmVkIGJ5IHNvbWVvbmUuQE11bHRpc2lnRXhlY3V0ZWQUASRhcHByb3ZpbmcAATBUOjpBY2NvdW50SWQAASR0aW1lcG9pbnTpAgFwVGltZXBvaW50PEJsb2NrTnVtYmVyRm9yPFQ+PgABIG11bHRpc2lnAAEwVDo6QWNjb3VudElkAAEkY2FsbF9oYXNoBAEgQ2FsbEhhc2gAARhyZXN1bHSIAThEaXNwYXRjaFJlc3VsdAACBJxBIG11bHRpc2lnIG9wZXJhdGlvbiBoYXMgYmVlbiBleGVjdXRlZC5ETXVsdGlzaWdDYW5jZWxsZWQQAShjYW5jZWxsaW5nAAEwVDo6QWNjb3VudElkAAEkdGltZXBvaW506QIBcFRpbWVwb2ludDxCbG9ja051bWJlckZvcjxUPj4AASBtdWx0aXNpZwABMFQ6OkFjY291bnRJZAABJGNhbGxfaGFzaAQBIENhbGxIYXNoAAMEoEEgbXVsdGlzaWcgb3BlcmF0aW9uIGhhcyBiZWVuIGNhbmNlbGxlZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXQNBww8cGFsbGV0X2JvdW50aWVzGHBhbGxldBRFdmVudAgEVAAESQABLDhCb3VudHlQcm9wb3NlZAQBFGluZGV4EAEsQm91bnR5SW5kZXgAAARQTmV3IGJvdW50eSBwcm9wb3NhbC44Qm91bnR5UmVqZWN0ZWQIARRpbmRleBABLEJvdW50eUluZGV4AAEQYm9uZBgBPEJhbGFuY2VPZjxULCBJPgABBMxBIGJvdW50eSBwcm9wb3NhbCB3YXMgcmVqZWN0ZWQ7IGZ1bmRzIHdlcmUgc2xhc2hlZC5IQm91bnR5QmVjYW1lQWN0aXZlBAEUaW5kZXgQASxCb3VudHlJbmRleAACBLhBIGJvdW50eSBwcm9wb3NhbCBpcyBmdW5kZWQgYW5kIGJlY2FtZSBhY3RpdmUuNEJvdW50eUF3YXJkZWQIARRpbmRleBABLEJvdW50eUluZGV4AAEsYmVuZWZpY2lhcnkAATBUOjpBY2NvdW50SWQAAwSUQSBib3VudHkgaXMgYXdhcmRlZCB0byBhIGJlbmVmaWNpYXJ5LjRCb3VudHlDbGFpbWVkDAEUaW5kZXgQASxCb3VudHlJbmRleAABGHBheW91dBgBPEJhbGFuY2VPZjxULCBJPgABLGJlbmVmaWNpYXJ5AAEwVDo6QWNjb3VudElkAAQEjEEgYm91bnR5IGlzIGNsYWltZWQgYnkgYmVuZWZpY2lhcnkuOEJvdW50eUNhbmNlbGVkBAEUaW5kZXgQASxCb3VudHlJbmRleAAFBFhBIGJvdW50eSBpcyBjYW5jZWxsZWQuOEJvdW50eUV4dGVuZGVkBAEUaW5kZXgQASxCb3VudHlJbmRleAAGBHBBIGJvdW50eSBleHBpcnkgaXMgZXh0ZW5kZWQuOEJvdW50eUFwcHJvdmVkBAEUaW5kZXgQASxCb3VudHlJbmRleAAHBFRBIGJvdW50eSBpcyBhcHByb3ZlZC48Q3VyYXRvclByb3Bvc2VkCAEkYm91bnR5X2lkEAEsQm91bnR5SW5kZXgAARxjdXJhdG9yAAEwVDo6QWNjb3VudElkAAgEdEEgYm91bnR5IGN1cmF0b3IgaXMgcHJvcG9zZWQuREN1cmF0b3JVbmFzc2lnbmVkBAEkYm91bnR5X2lkEAEsQm91bnR5SW5kZXgACQR8QSBib3VudHkgY3VyYXRvciBpcyB1bmFzc2lnbmVkLjxDdXJhdG9yQWNjZXB0ZWQIASRib3VudHlfaWQQASxCb3VudHlJbmRleAABHGN1cmF0b3IAATBUOjpBY2NvdW50SWQACgR0QSBib3VudHkgY3VyYXRvciBpcyBhY2NlcHRlZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXQRBwxUcGFsbGV0X2NoaWxkX2JvdW50aWVzGHBhbGxldBRFdmVudAQEVAABEBRBZGRlZAgBFGluZGV4EAEsQm91bnR5SW5kZXgAASxjaGlsZF9pbmRleBABLEJvdW50eUluZGV4AAAEYEEgY2hpbGQtYm91bnR5IGlzIGFkZGVkLhxBd2FyZGVkDAEUaW5kZXgQASxCb3VudHlJbmRleAABLGNoaWxkX2luZGV4EAEsQm91bnR5SW5kZXgAASxiZW5lZmljaWFyeQABMFQ6OkFjY291bnRJZAABBKxBIGNoaWxkLWJvdW50eSBpcyBhd2FyZGVkIHRvIGEgYmVuZWZpY2lhcnkuHENsYWltZWQQARRpbmRleBABLEJvdW50eUluZGV4AAEsY2hpbGRfaW5kZXgQASxCb3VudHlJbmRleAABGHBheW91dBgBMEJhbGFuY2VPZjxUPgABLGJlbmVmaWNpYXJ5AAEwVDo6QWNjb3VudElkAAIEpEEgY2hpbGQtYm91bnR5IGlzIGNsYWltZWQgYnkgYmVuZWZpY2lhcnkuIENhbmNlbGVkCAEUaW5kZXgQASxCb3VudHlJbmRleAABLGNoaWxkX2luZGV4EAEsQm91bnR5SW5kZXgAAwRwQSBjaGlsZC1ib3VudHkgaXMgY2FuY2VsbGVkLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldBUHDJBwYWxsZXRfZWxlY3Rpb25fcHJvdmlkZXJfbXVsdGlfcGhhc2UYcGFsbGV0FEV2ZW50BARUAAEYOFNvbHV0aW9uU3RvcmVkDAEcY29tcHV0ZRkHATxFbGVjdGlvbkNvbXB1dGUAARhvcmlnaW79AQFQT3B0aW9uPFQ6OkFjY291bnRJZD4AATBwcmV2X2VqZWN0ZWQgARBib29sAAActEEgc29sdXRpb24gd2FzIHN0b3JlZCB3aXRoIHRoZSBnaXZlbiBjb21wdXRlLgBRAVRoZSBgb3JpZ2luYCBpbmRpY2F0ZXMgdGhlIG9yaWdpbiBvZiB0aGUgc29sdXRpb24uIElmIGBvcmlnaW5gIGlzIGBTb21lKEFjY291bnRJZClgLFkBdGhlIHN0b3JlZCBzb2x1dGlvbiB3YXMgc3VibWl0dGVkIGluIHRoZSBzaWduZWQgcGhhc2UgYnkgYSBtaW5lciB3aXRoIHRoZSBgQWNjb3VudElkYC4lAU90aGVyd2lzZSwgdGhlIHNvbHV0aW9uIHdhcyBzdG9yZWQgZWl0aGVyIGR1cmluZyB0aGUgdW5zaWduZWQgcGhhc2Ugb3IgYnlNAWBUOjpGb3JjZU9yaWdpbmAuIFRoZSBgYm9vbGAgaXMgYHRydWVgIHdoZW4gYSBwcmV2aW91cyBzb2x1dGlvbiB3YXMgZWplY3RlZCB0byBtYWtlSHJvb20gZm9yIHRoaXMgb25lLkRFbGVjdGlvbkZpbmFsaXplZAgBHGNvbXB1dGUZBwE8RWxlY3Rpb25Db21wdXRlAAEUc2NvcmXJAwE0RWxlY3Rpb25TY29yZQABBBkBVGhlIGVsZWN0aW9uIGhhcyBiZWVuIGZpbmFsaXplZCwgd2l0aCB0aGUgZ2l2ZW4gY29tcHV0YXRpb24gYW5kIHNjb3JlLjhFbGVjdGlvbkZhaWxlZAACDExBbiBlbGVjdGlvbiBmYWlsZWQuAAEBTm90IG11Y2ggY2FuIGJlIHNhaWQgYWJvdXQgd2hpY2ggY29tcHV0ZXMgZmFpbGVkIGluIHRoZSBwcm9jZXNzLiBSZXdhcmRlZAgBHGFjY291bnQAAZg8VCBhcyBmcmFtZV9zeXN0ZW06OkNvbmZpZz46OkFjY291bnRJZAABFHZhbHVlGAEwQmFsYW5jZU9mPFQ+AAMEJQFBbiBhY2NvdW50IGhhcyBiZWVuIHJld2FyZGVkIGZvciB0aGVpciBzaWduZWQgc3VibWlzc2lvbiBiZWluZyBmaW5hbGl6ZWQuHFNsYXNoZWQIARxhY2NvdW50AAGYPFQgYXMgZnJhbWVfc3lzdGVtOjpDb25maWc+OjpBY2NvdW50SWQAARR2YWx1ZRgBMEJhbGFuY2VPZjxUPgAEBCEBQW4gYWNjb3VudCBoYXMgYmVlbiBzbGFzaGVkIGZvciBzdWJtaXR0aW5nIGFuIGludmFsaWQgc2lnbmVkIHN1Ym1pc3Npb24uRFBoYXNlVHJhbnNpdGlvbmVkDAEQZnJvbR0HAWBQaGFzZTxCbG9ja051bWJlckZvcjxUPj4AAQh0bx0HAWBQaGFzZTxCbG9ja051bWJlckZvcjxUPj4AARRyb3VuZBABDHUzMgAFBLhUaGVyZSB3YXMgYSBwaGFzZSB0cmFuc2l0aW9uIGluIGEgZ2l2ZW4gcm91bmQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0GQcIkHBhbGxldF9lbGVjdGlvbl9wcm92aWRlcl9tdWx0aV9waGFzZTxFbGVjdGlvbkNvbXB1dGUAARQcT25DaGFpbgAAABhTaWduZWQAAQAgVW5zaWduZWQAAgAgRmFsbGJhY2sAAwAkRW1lcmdlbmN5AAQAAB0HCJBwYWxsZXRfZWxlY3Rpb25fcHJvdmlkZXJfbXVsdGlfcGhhc2UUUGhhc2UECEJuARABEAxPZmYAAAAYU2lnbmVkAAEAIFVuc2lnbmVkBAAhBwEoKGJvb2wsIEJuKQACACRFbWVyZ2VuY3kAAwAAIQcAAAQIIBAAJQcMQHBhbGxldF9iYWdzX2xpc3QYcGFsbGV0FEV2ZW50CARUAARJAAEIIFJlYmFnZ2VkDAEMd2hvAAEwVDo6QWNjb3VudElkAAEQZnJvbTABIFQ6OlNjb3JlAAEIdG8wASBUOjpTY29yZQAABKRNb3ZlZCBhbiBhY2NvdW50IGZyb20gb25lIGJhZyB0byBhbm90aGVyLjBTY29yZVVwZGF0ZWQIAQx3aG8AATBUOjpBY2NvdW50SWQAASRuZXdfc2NvcmUwASBUOjpTY29yZQABBNhVcGRhdGVkIHRoZSBzY29yZSBvZiBzb21lIGFjY291bnQgdG8gdGhlIGdpdmVuIGFtb3VudC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXQpBwxccGFsbGV0X25vbWluYXRpb25fcG9vbHMYcGFsbGV0FEV2ZW50BARUAAFIHENyZWF0ZWQIASRkZXBvc2l0b3IAATBUOjpBY2NvdW50SWQAARxwb29sX2lkEAEYUG9vbElkAAAEYEEgcG9vbCBoYXMgYmVlbiBjcmVhdGVkLhhCb25kZWQQARhtZW1iZXIAATBUOjpBY2NvdW50SWQAARxwb29sX2lkEAEYUG9vbElkAAEYYm9uZGVkGAEwQmFsYW5jZU9mPFQ+AAEYam9pbmVkIAEQYm9vbAABBJRBIG1lbWJlciBoYXMgYmVjYW1lIGJvbmRlZCBpbiBhIHBvb2wuHFBhaWRPdXQMARhtZW1iZXIAATBUOjpBY2NvdW50SWQAARxwb29sX2lkEAEYUG9vbElkAAEYcGF5b3V0GAEwQmFsYW5jZU9mPFQ+AAIEjEEgcGF5b3V0IGhhcyBiZWVuIG1hZGUgdG8gYSBtZW1iZXIuIFVuYm9uZGVkFAEYbWVtYmVyAAEwVDo6QWNjb3VudElkAAEccG9vbF9pZBABGFBvb2xJZAABHGJhbGFuY2UYATBCYWxhbmNlT2Y8VD4AARhwb2ludHMYATBCYWxhbmNlT2Y8VD4AAQxlcmEQASBFcmFJbmRleAADLJhBIG1lbWJlciBoYXMgdW5ib25kZWQgZnJvbSB0aGVpciBwb29sLgA5AS0gYGJhbGFuY2VgIGlzIHRoZSBjb3JyZXNwb25kaW5nIGJhbGFuY2Ugb2YgdGhlIG51bWJlciBvZiBwb2ludHMgdGhhdCBoYXMgYmVlblUBICByZXF1ZXN0ZWQgdG8gYmUgdW5ib25kZWQgKHRoZSBhcmd1bWVudCBvZiB0aGUgYHVuYm9uZGAgdHJhbnNhY3Rpb24pIGZyb20gdGhlIGJvbmRlZBwgIHBvb2wuRQEtIGBwb2ludHNgIGlzIHRoZSBudW1iZXIgb2YgcG9pbnRzIHRoYXQgYXJlIGlzc3VlZCBhcyBhIHJlc3VsdCBvZiBgYmFsYW5jZWAgYmVpbmfAZGlzc29sdmVkIGludG8gdGhlIGNvcnJlc3BvbmRpbmcgdW5ib25kaW5nIHBvb2wu5C0gYGVyYWAgaXMgdGhlIGVyYSBpbiB3aGljaCB0aGUgYmFsYW5jZSB3aWxsIGJlIHVuYm9uZGVkLlUBSW4gdGhlIGFic2VuY2Ugb2Ygc2xhc2hpbmcsIHRoZXNlIHZhbHVlcyB3aWxsIG1hdGNoLiBJbiB0aGUgcHJlc2VuY2Ugb2Ygc2xhc2hpbmcsIHRoZU0BbnVtYmVyIG9mIHBvaW50cyB0aGF0IGFyZSBpc3N1ZWQgaW4gdGhlIHVuYm9uZGluZyBwb29sIHdpbGwgYmUgbGVzcyB0aGFuIHRoZSBhbW91bnRkcmVxdWVzdGVkIHRvIGJlIHVuYm9uZGVkLiRXaXRoZHJhd24QARhtZW1iZXIAATBUOjpBY2NvdW50SWQAARxwb29sX2lkEAEYUG9vbElkAAEcYmFsYW5jZRgBMEJhbGFuY2VPZjxUPgABGHBvaW50cxgBMEJhbGFuY2VPZjxUPgAEGJxBIG1lbWJlciBoYXMgd2l0aGRyYXduIGZyb20gdGhlaXIgcG9vbC4AIQFUaGUgZ2l2ZW4gbnVtYmVyIG9mIGBwb2ludHNgIGhhdmUgYmVlbiBkaXNzb2x2ZWQgaW4gcmV0dXJuIG9mIGBiYWxhbmNlYC4AWQFTaW1pbGFyIHRvIGBVbmJvbmRlZGAgZXZlbnQsIGluIHRoZSBhYnNlbmNlIG9mIHNsYXNoaW5nLCB0aGUgcmF0aW8gb2YgcG9pbnQgdG8gYmFsYW5jZSh3aWxsIGJlIDEuJERlc3Ryb3llZAQBHHBvb2xfaWQQARhQb29sSWQABQRoQSBwb29sIGhhcyBiZWVuIGRlc3Ryb3llZC4wU3RhdGVDaGFuZ2VkCAEccG9vbF9pZBABGFBvb2xJZAABJG5ld19zdGF0ZfUDASRQb29sU3RhdGUABgR8VGhlIHN0YXRlIG9mIGEgcG9vbCBoYXMgY2hhbmdlZDRNZW1iZXJSZW1vdmVkCAEccG9vbF9pZBABGFBvb2xJZAABGG1lbWJlcgABMFQ6OkFjY291bnRJZAAHDJhBIG1lbWJlciBoYXMgYmVlbiByZW1vdmVkIGZyb20gYSBwb29sLgBRAVRoZSByZW1vdmFsIGNhbiBiZSB2b2x1bnRhcnkgKHdpdGhkcmF3biBhbGwgdW5ib25kZWQgZnVuZHMpIG9yIGludm9sdW50YXJ5IChraWNrZWQpLjBSb2xlc1VwZGF0ZWQMARByb290/QEBUE9wdGlvbjxUOjpBY2NvdW50SWQ+AAEcYm91bmNlcv0BAVBPcHRpb248VDo6QWNjb3VudElkPgABJG5vbWluYXRvcv0BAVBPcHRpb248VDo6QWNjb3VudElkPgAICFUBVGhlIHJvbGVzIG9mIGEgcG9vbCBoYXZlIGJlZW4gdXBkYXRlZCB0byB0aGUgZ2l2ZW4gbmV3IHJvbGVzLiBOb3RlIHRoYXQgdGhlIGRlcG9zaXRvckRjYW4gbmV2ZXIgY2hhbmdlLixQb29sU2xhc2hlZAgBHHBvb2xfaWQQARhQb29sSWQAARxiYWxhbmNlGAEwQmFsYW5jZU9mPFQ+AAkEDQFUaGUgYWN0aXZlIGJhbGFuY2Ugb2YgcG9vbCBgcG9vbF9pZGAgaGFzIGJlZW4gc2xhc2hlZCB0byBgYmFsYW5jZWAuUFVuYm9uZGluZ1Bvb2xTbGFzaGVkDAEccG9vbF9pZBABGFBvb2xJZAABDGVyYRABIEVyYUluZGV4AAEcYmFsYW5jZRgBMEJhbGFuY2VPZjxUPgAKBCUBVGhlIHVuYm9uZCBwb29sIGF0IGBlcmFgIG9mIHBvb2wgYHBvb2xfaWRgIGhhcyBiZWVuIHNsYXNoZWQgdG8gYGJhbGFuY2VgLlRQb29sQ29tbWlzc2lvblVwZGF0ZWQIARxwb29sX2lkEAEYUG9vbElkAAEcY3VycmVudA0EAXxPcHRpb248KFBlcmJpbGwsIFQ6OkFjY291bnRJZCk+AAsEtEEgcG9vbCdzIGNvbW1pc3Npb24gc2V0dGluZyBoYXMgYmVlbiBjaGFuZ2VkLmBQb29sTWF4Q29tbWlzc2lvblVwZGF0ZWQIARxwb29sX2lkEAEYUG9vbElkAAE4bWF4X2NvbW1pc3Npb26sARxQZXJiaWxsAAwE1EEgcG9vbCdzIG1heGltdW0gY29tbWlzc2lvbiBzZXR0aW5nIGhhcyBiZWVuIGNoYW5nZWQufFBvb2xDb21taXNzaW9uQ2hhbmdlUmF0ZVVwZGF0ZWQIARxwb29sX2lkEAEYUG9vbElkAAEsY2hhbmdlX3JhdGUVBAGcQ29tbWlzc2lvbkNoYW5nZVJhdGU8QmxvY2tOdW1iZXJGb3I8VD4+AA0EzEEgcG9vbCdzIGNvbW1pc3Npb24gYGNoYW5nZV9yYXRlYCBoYXMgYmVlbiBjaGFuZ2VkLpBQb29sQ29tbWlzc2lvbkNsYWltUGVybWlzc2lvblVwZGF0ZWQIARxwb29sX2lkEAEYUG9vbElkAAEocGVybWlzc2lvbhkEAbxPcHRpb248Q29tbWlzc2lvbkNsYWltUGVybWlzc2lvbjxUOjpBY2NvdW50SWQ+PgAOBMhQb29sIGNvbW1pc3Npb24gY2xhaW0gcGVybWlzc2lvbiBoYXMgYmVlbiB1cGRhdGVkLlRQb29sQ29tbWlzc2lvbkNsYWltZWQIARxwb29sX2lkEAEYUG9vbElkAAEoY29tbWlzc2lvbhgBMEJhbGFuY2VPZjxUPgAPBIRQb29sIGNvbW1pc3Npb24gaGFzIGJlZW4gY2xhaW1lZC5kTWluQmFsYW5jZURlZmljaXRBZGp1c3RlZAgBHHBvb2xfaWQQARhQb29sSWQAARhhbW91bnQYATBCYWxhbmNlT2Y8VD4AEATIVG9wcGVkIHVwIGRlZmljaXQgaW4gZnJvemVuIEVEIG9mIHRoZSByZXdhcmQgcG9vbC5gTWluQmFsYW5jZUV4Y2Vzc0FkanVzdGVkCAEccG9vbF9pZBABGFBvb2xJZAABGGFtb3VudBgBMEJhbGFuY2VPZjxUPgARBLxDbGFpbWVkIGV4Y2VzcyBmcm96ZW4gRUQgb2YgYWYgdGhlIHJld2FyZCBwb29sLgRYRXZlbnRzIG9mIHRoaXMgcGFsbGV0Li0HDExwYWxsZXRfZmFzdF91bnN0YWtlGHBhbGxldBRFdmVudAQEVAABFCBVbnN0YWtlZAgBFHN0YXNoAAEwVDo6QWNjb3VudElkAAEYcmVzdWx0iAE4RGlzcGF0Y2hSZXN1bHQAAARYQSBzdGFrZXIgd2FzIHVuc3Rha2VkLhxTbGFzaGVkCAEUc3Rhc2gAATBUOjpBY2NvdW50SWQAARhhbW91bnQYATBCYWxhbmNlT2Y8VD4AAQQZAUEgc3Rha2VyIHdhcyBzbGFzaGVkIGZvciByZXF1ZXN0aW5nIGZhc3QtdW5zdGFrZSB3aGlsc3QgYmVpbmcgZXhwb3NlZC4wQmF0Y2hDaGVja2VkBAEQZXJhc+UBATRWZWM8RXJhSW5kZXg+AAIERQFBIGJhdGNoIHdhcyBwYXJ0aWFsbHkgY2hlY2tlZCBmb3IgdGhlIGdpdmVuIGVyYXMsIGJ1dCB0aGUgcHJvY2VzcyBkaWQgbm90IGZpbmlzaC40QmF0Y2hGaW5pc2hlZAQBEHNpemUQAQx1MzIAAxCcQSBiYXRjaCBvZiBhIGdpdmVuIHNpemUgd2FzIHRlcm1pbmF0ZWQuAFUBVGhpcyBpcyBhbHdheXMgZm9sbG93cyBieSBhIG51bWJlciBvZiBgVW5zdGFrZWRgIG9yIGBTbGFzaGVkYCBldmVudHMsIG1hcmtpbmcgdGhlIGVuZOhvZiB0aGUgYmF0Y2guIEEgbmV3IGJhdGNoIHdpbGwgYmUgY3JlYXRlZCB1cG9uIG5leHQgYmxvY2suNEludGVybmFsRXJyb3IABAToQW4gaW50ZXJuYWwgZXJyb3IgaGFwcGVuZWQuIE9wZXJhdGlvbnMgd2lsbCBiZSBwYXVzZWQgbm93LgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldDEHEGxwb2xrYWRvdF9ydW50aW1lX3BhcmFjaGFpbnMkaW5jbHVzaW9uGHBhbGxldBRFdmVudAQEVAABEDxDYW5kaWRhdGVCYWNrZWQQADUHAWRDYW5kaWRhdGVSZWNlaXB0PFQ6Okhhc2g+AACtBAEgSGVhZERhdGEAADkHASRDb3JlSW5kZXgAAD0HAShHcm91cEluZGV4AAAEwEEgY2FuZGlkYXRlIHdhcyBiYWNrZWQuIGBbY2FuZGlkYXRlLCBoZWFkX2RhdGFdYERDYW5kaWRhdGVJbmNsdWRlZBAANQcBZENhbmRpZGF0ZVJlY2VpcHQ8VDo6SGFzaD4AAK0EASBIZWFkRGF0YQAAOQcBJENvcmVJbmRleAAAPQcBKEdyb3VwSW5kZXgAAQTIQSBjYW5kaWRhdGUgd2FzIGluY2x1ZGVkLiBgW2NhbmRpZGF0ZSwgaGVhZF9kYXRhXWBEQ2FuZGlkYXRlVGltZWRPdXQMADUHAWRDYW5kaWRhdGVSZWNlaXB0PFQ6Okhhc2g+AACtBAEgSGVhZERhdGEAADkHASRDb3JlSW5kZXgAAgS8QSBjYW5kaWRhdGUgdGltZWQgb3V0LiBgW2NhbmRpZGF0ZSwgaGVhZF9kYXRhXWBYVXB3YXJkTWVzc2FnZXNSZWNlaXZlZAgBEGZyb22NAgEYUGFyYUlkAAEUY291bnQQAQx1MzIAAwT4U29tZSB1cHdhcmQgbWVzc2FnZXMgaGF2ZSBiZWVuIHJlY2VpdmVkIGFuZCB3aWxsIGJlIHByb2Nlc3NlZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXQ1BwxMcG9sa2Fkb3RfcHJpbWl0aXZlcwh2N0BDYW5kaWRhdGVSZWNlaXB0BARIATQACAEoZGVzY3JpcHRvcoEEAVhDYW5kaWRhdGVEZXNjcmlwdG9yPEg+AAFAY29tbWl0bWVudHNfaGFzaDQBEEhhc2gAADkHDExwb2xrYWRvdF9wcmltaXRpdmVzCHY3JENvcmVJbmRleAAABAAQAQx1MzIAAD0HDExwb2xrYWRvdF9wcmltaXRpdmVzCHY3KEdyb3VwSW5kZXgAAAQAEAEMdTMyAABBBxBscG9sa2Fkb3RfcnVudGltZV9wYXJhY2hhaW5zFHBhcmFzGHBhbGxldBRFdmVudAABIEhDdXJyZW50Q29kZVVwZGF0ZWQEAI0CARhQYXJhSWQAAATMQ3VycmVudCBjb2RlIGhhcyBiZWVuIHVwZGF0ZWQgZm9yIGEgUGFyYS4gYHBhcmFfaWRgSEN1cnJlbnRIZWFkVXBkYXRlZAQAjQIBGFBhcmFJZAABBMxDdXJyZW50IGhlYWQgaGFzIGJlZW4gdXBkYXRlZCBmb3IgYSBQYXJhLiBgcGFyYV9pZGBQQ29kZVVwZ3JhZGVTY2hlZHVsZWQEAI0CARhQYXJhSWQAAgTcQSBjb2RlIHVwZ3JhZGUgaGFzIGJlZW4gc2NoZWR1bGVkIGZvciBhIFBhcmEuIGBwYXJhX2lkYDBOZXdIZWFkTm90ZWQEAI0CARhQYXJhSWQAAwS8QSBuZXcgaGVhZCBoYXMgYmVlbiBub3RlZCBmb3IgYSBQYXJhLiBgcGFyYV9pZGAwQWN0aW9uUXVldWVkCACNAgEYUGFyYUlkAAAQATBTZXNzaW9uSW5kZXgABATwQSBwYXJhIGhhcyBiZWVuIHF1ZXVlZCB0byBleGVjdXRlIHBlbmRpbmcgYWN0aW9ucy4gYHBhcmFfaWRgPFB2ZkNoZWNrU3RhcnRlZAgAjQQBSFZhbGlkYXRpb25Db2RlSGFzaAAAjQIBGFBhcmFJZAAFCFUBVGhlIGdpdmVuIHBhcmEgZWl0aGVyIGluaXRpYXRlZCBvciBzdWJzY3JpYmVkIHRvIGEgUFZGIGNoZWNrIGZvciB0aGUgZ2l2ZW4gdmFsaWRhdGlvbmxjb2RlLiBgY29kZV9oYXNoYCBgcGFyYV9pZGBAUHZmQ2hlY2tBY2NlcHRlZAgAjQQBSFZhbGlkYXRpb25Db2RlSGFzaAAAjQIBGFBhcmFJZAAGCBEBVGhlIGdpdmVuIHZhbGlkYXRpb24gY29kZSB3YXMgYWNjZXB0ZWQgYnkgdGhlIFBWRiBwcmUtY2hlY2tpbmcgdm90ZS5UYGNvZGVfaGFzaGAgYHBhcmFfaWRgQFB2ZkNoZWNrUmVqZWN0ZWQIAI0EAUhWYWxpZGF0aW9uQ29kZUhhc2gAAI0CARhQYXJhSWQABwgRAVRoZSBnaXZlbiB2YWxpZGF0aW9uIGNvZGUgd2FzIHJlamVjdGVkIGJ5IHRoZSBQVkYgcHJlLWNoZWNraW5nIHZvdGUuVGBjb2RlX2hhc2hgIGBwYXJhX2lkYAR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldEUHEGxwb2xrYWRvdF9ydW50aW1lX3BhcmFjaGFpbnMQaHJtcBhwYWxsZXQURXZlbnQEBFQAARxQT3BlbkNoYW5uZWxSZXF1ZXN0ZWQQARhzZW5kZXKNAgEYUGFyYUlkAAEkcmVjaXBpZW50jQIBGFBhcmFJZAABVHByb3Bvc2VkX21heF9jYXBhY2l0eRABDHUzMgABZHByb3Bvc2VkX21heF9tZXNzYWdlX3NpemUQAQx1MzIAAARwT3BlbiBIUk1QIGNoYW5uZWwgcmVxdWVzdGVkLkxPcGVuQ2hhbm5lbENhbmNlbGVkCAEwYnlfcGFyYWNoYWlujQIBGFBhcmFJZAABKGNoYW5uZWxfaWTtBAE0SHJtcENoYW5uZWxJZAABBCkBQW4gSFJNUCBjaGFubmVsIHJlcXVlc3Qgc2VudCBieSB0aGUgcmVjZWl2ZXIgd2FzIGNhbmNlbGVkIGJ5IGVpdGhlciBwYXJ0eS5MT3BlbkNoYW5uZWxBY2NlcHRlZAgBGHNlbmRlco0CARhQYXJhSWQAASRyZWNpcGllbnSNAgEYUGFyYUlkAAIEbE9wZW4gSFJNUCBjaGFubmVsIGFjY2VwdGVkLjRDaGFubmVsQ2xvc2VkCAEwYnlfcGFyYWNoYWlujQIBGFBhcmFJZAABKGNoYW5uZWxfaWTtBAE0SHJtcENoYW5uZWxJZAADBFBIUk1QIGNoYW5uZWwgY2xvc2VkLlhIcm1wQ2hhbm5lbEZvcmNlT3BlbmVkEAEYc2VuZGVyjQIBGFBhcmFJZAABJHJlY2lwaWVudI0CARhQYXJhSWQAAVRwcm9wb3NlZF9tYXhfY2FwYWNpdHkQAQx1MzIAAWRwcm9wb3NlZF9tYXhfbWVzc2FnZV9zaXplEAEMdTMyAAQErEFuIEhSTVAgY2hhbm5lbCB3YXMgb3BlbmVkIHZpYSBSb290IG9yaWdpbi5cSHJtcFN5c3RlbUNoYW5uZWxPcGVuZWQQARhzZW5kZXKNAgEYUGFyYUlkAAEkcmVjaXBpZW50jQIBGFBhcmFJZAABVHByb3Bvc2VkX21heF9jYXBhY2l0eRABDHUzMgABZHByb3Bvc2VkX21heF9tZXNzYWdlX3NpemUQAQx1MzIABQS8QW4gSFJNUCBjaGFubmVsIHdhcyBvcGVuZWQgd2l0aCBhIHN5c3RlbSBjaGFpbi5oT3BlbkNoYW5uZWxEZXBvc2l0c1VwZGF0ZWQIARhzZW5kZXKNAgEYUGFyYUlkAAEkcmVjaXBpZW50jQIBGFBhcmFJZAAGBKBBbiBIUk1QIGNoYW5uZWwncyBkZXBvc2l0cyB3ZXJlIHVwZGF0ZWQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0SQcQbHBvbGthZG90X3J1bnRpbWVfcGFyYWNoYWlucyBkaXNwdXRlcxhwYWxsZXQURXZlbnQEBFQAAQxARGlzcHV0ZUluaXRpYXRlZAgAwQQBNENhbmRpZGF0ZUhhc2gAAE0HATxEaXNwdXRlTG9jYXRpb24AAAQJAUEgZGlzcHV0ZSBoYXMgYmVlbiBpbml0aWF0ZWQuIFxbY2FuZGlkYXRlIGhhc2gsIGRpc3B1dGUgbG9jYXRpb25cXUBEaXNwdXRlQ29uY2x1ZGVkCADBBAE0Q2FuZGlkYXRlSGFzaAAAUQcBNERpc3B1dGVSZXN1bHQAAQjMQSBkaXNwdXRlIGhhcyBjb25jbHVkZWQgZm9yIG9yIGFnYWluc3QgYSBjYW5kaWRhdGUutGBcW3BhcmEgaWQsIGNhbmRpZGF0ZSBoYXNoLCBkaXNwdXRlIHJlc3VsdFxdYBhSZXZlcnQEABABREJsb2NrTnVtYmVyRm9yPFQ+AAIQ/EEgZGlzcHV0ZSBoYXMgY29uY2x1ZGVkIHdpdGggc3VwZXJtYWpvcml0eSBhZ2FpbnN0IGEgY2FuZGlkYXRlLg0BQmxvY2sgYXV0aG9ycyBzaG91bGQgbm8gbG9uZ2VyIGJ1aWxkIG9uIHRvcCBvZiB0aGlzIGhlYWQgYW5kIHNob3VsZAEBaW5zdGVhZCByZXZlcnQgdGhlIGJsb2NrIGF0IHRoZSBnaXZlbiBoZWlnaHQuIFRoaXMgc2hvdWxkIGJlIHRoZfxudW1iZXIgb2YgdGhlIGNoaWxkIG9mIHRoZSBsYXN0IGtub3duIHZhbGlkIGJsb2NrIGluIHRoZSBjaGFpbi4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXRNBwxscG9sa2Fkb3RfcnVudGltZV9wYXJhY2hhaW5zIGRpc3B1dGVzPERpc3B1dGVMb2NhdGlvbgABCBRMb2NhbAAAABhSZW1vdGUAAQAAUQcMbHBvbGthZG90X3J1bnRpbWVfcGFyYWNoYWlucyBkaXNwdXRlczREaXNwdXRlUmVzdWx0AAEIFFZhbGlkAAAAHEludmFsaWQAAQAAVQcQbHBvbGthZG90X3J1bnRpbWVfcGFyYWNoYWluc0hhc3NpZ25lcl9vbl9kZW1hbmQYcGFsbGV0FEV2ZW50BARUAAEITE9uRGVtYW5kT3JkZXJQbGFjZWQMARxwYXJhX2lkjQIBGFBhcmFJZAABKHNwb3RfcHJpY2UYATBCYWxhbmNlT2Y8VD4AAShvcmRlcmVkX2J5AAEwVDo6QWNjb3VudElkAAAEDQFBbiBvcmRlciB3YXMgcGxhY2VkIGF0IHNvbWUgc3BvdCBwcmljZSBhbW91bnQgYnkgb3JkZXJlciBvcmRlcmVkX2J5MFNwb3RQcmljZVNldAQBKHNwb3RfcHJpY2UYATBCYWxhbmNlT2Y8VD4AAQS4VGhlIHZhbHVlIG9mIHRoZSBzcG90IHByaWNlIGhhcyBsaWtlbHkgY2hhbmdlZAR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldFkHEFxwb2xrYWRvdF9ydW50aW1lX2NvbW1vbjxwYXJhc19yZWdpc3RyYXIYcGFsbGV0FEV2ZW50BARUAAEQKFJlZ2lzdGVyZWQIARxwYXJhX2lkjQIBGFBhcmFJZAABHG1hbmFnZXIAATBUOjpBY2NvdW50SWQAAAAwRGVyZWdpc3RlcmVkBAEccGFyYV9pZI0CARhQYXJhSWQAAQAgUmVzZXJ2ZWQIARxwYXJhX2lkjQIBGFBhcmFJZAABDHdobwABMFQ6OkFjY291bnRJZAACABxTd2FwcGVkCAEccGFyYV9pZI0CARhQYXJhSWQAASBvdGhlcl9pZI0CARhQYXJhSWQAAwAEfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXRdBxBccG9sa2Fkb3RfcnVudGltZV9jb21tb24Uc2xvdHMYcGFsbGV0FEV2ZW50BARUAAEIOE5ld0xlYXNlUGVyaW9kBAEwbGVhc2VfcGVyaW9kEAFATGVhc2VQZXJpb2RPZjxUPgAABJBBIG5ldyBgW2xlYXNlX3BlcmlvZF1gIGlzIGJlZ2lubmluZy4YTGVhc2VkGAEccGFyYV9pZI0CARhQYXJhSWQAARhsZWFzZXIAATBUOjpBY2NvdW50SWQAATBwZXJpb2RfYmVnaW4QAUBMZWFzZVBlcmlvZE9mPFQ+AAEwcGVyaW9kX2NvdW50EAFATGVhc2VQZXJpb2RPZjxUPgABOGV4dHJhX3Jlc2VydmVkGAEwQmFsYW5jZU9mPFQ+AAEwdG90YWxfYW1vdW50GAEwQmFsYW5jZU9mPFQ+AAEMNQFBIHBhcmEgaGFzIHdvbiB0aGUgcmlnaHQgdG8gYSBjb250aW51b3VzIHNldCBvZiBsZWFzZSBwZXJpb2RzIGFzIGEgcGFyYWNoYWluLkUBRmlyc3QgYmFsYW5jZSBpcyBhbnkgZXh0cmEgYW1vdW50IHJlc2VydmVkIG9uIHRvcCBvZiB0aGUgcGFyYSdzIGV4aXN0aW5nIGRlcG9zaXQusFNlY29uZCBiYWxhbmNlIGlzIHRoZSB0b3RhbCBhbW91bnQgcmVzZXJ2ZWQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0YQcQXHBvbGthZG90X3J1bnRpbWVfY29tbW9uIGF1Y3Rpb25zGHBhbGxldBRFdmVudAQEVAABHDhBdWN0aW9uU3RhcnRlZAwBNGF1Y3Rpb25faW5kZXgQATBBdWN0aW9uSW5kZXgAATBsZWFzZV9wZXJpb2QQAUBMZWFzZVBlcmlvZE9mPFQ+AAEYZW5kaW5nEAFEQmxvY2tOdW1iZXJGb3I8VD4AAAhJAUFuIGF1Y3Rpb24gc3RhcnRlZC4gUHJvdmlkZXMgaXRzIGluZGV4IGFuZCB0aGUgYmxvY2sgbnVtYmVyIHdoZXJlIGl0IHdpbGwgYmVnaW4gdG8VAWNsb3NlIGFuZCB0aGUgZmlyc3QgbGVhc2UgcGVyaW9kIG9mIHRoZSBxdWFkcnVwbGV0IHRoYXQgaXMgYXVjdGlvbmVkLjRBdWN0aW9uQ2xvc2VkBAE0YXVjdGlvbl9pbmRleBABMEF1Y3Rpb25JbmRleAABBLhBbiBhdWN0aW9uIGVuZGVkLiBBbGwgZnVuZHMgYmVjb21lIHVucmVzZXJ2ZWQuIFJlc2VydmVkDAEYYmlkZGVyAAEwVDo6QWNjb3VudElkAAE4ZXh0cmFfcmVzZXJ2ZWQYATBCYWxhbmNlT2Y8VD4AATB0b3RhbF9hbW91bnQYATBCYWxhbmNlT2Y8VD4AAghJAUZ1bmRzIHdlcmUgcmVzZXJ2ZWQgZm9yIGEgd2lubmluZyBiaWQuIEZpcnN0IGJhbGFuY2UgaXMgdGhlIGV4dHJhIGFtb3VudCByZXNlcnZlZC5QU2Vjb25kIGlzIHRoZSB0b3RhbC4oVW5yZXNlcnZlZAgBGGJpZGRlcgABMFQ6OkFjY291bnRJZAABGGFtb3VudBgBMEJhbGFuY2VPZjxUPgADBCkBRnVuZHMgd2VyZSB1bnJlc2VydmVkIHNpbmNlIGJpZGRlciBpcyBubyBsb25nZXIgYWN0aXZlLiBgW2JpZGRlciwgYW1vdW50XWBIUmVzZXJ2ZUNvbmZpc2NhdGVkDAEccGFyYV9pZI0CARhQYXJhSWQAARhsZWFzZXIAATBUOjpBY2NvdW50SWQAARhhbW91bnQYATBCYWxhbmNlT2Y8VD4ABAhVAVNvbWVvbmUgYXR0ZW1wdGVkIHRvIGxlYXNlIHRoZSBzYW1lIHNsb3QgdHdpY2UgZm9yIGEgcGFyYWNoYWluLiBUaGUgYW1vdW50IGlzIGhlbGQgaW64cmVzZXJ2ZSBidXQgbm8gcGFyYWNoYWluIHNsb3QgaGFzIGJlZW4gbGVhc2VkLixCaWRBY2NlcHRlZBQBGGJpZGRlcgABMFQ6OkFjY291bnRJZAABHHBhcmFfaWSNAgEYUGFyYUlkAAEYYW1vdW50GAEwQmFsYW5jZU9mPFQ+AAEoZmlyc3Rfc2xvdBABQExlYXNlUGVyaW9kT2Y8VD4AASRsYXN0X3Nsb3QQAUBMZWFzZVBlcmlvZE9mPFQ+AAUEyEEgbmV3IGJpZCBoYXMgYmVlbiBhY2NlcHRlZCBhcyB0aGUgY3VycmVudCB3aW5uZXIuNFdpbm5pbmdPZmZzZXQIATRhdWN0aW9uX2luZGV4EAEwQXVjdGlvbkluZGV4AAEwYmxvY2tfbnVtYmVyEAFEQmxvY2tOdW1iZXJGb3I8VD4ABghZAVRoZSB3aW5uaW5nIG9mZnNldCB3YXMgY2hvc2VuIGZvciBhbiBhdWN0aW9uLiBUaGlzIHdpbGwgbWFwIGludG8gdGhlIGBXaW5uaW5nYCBzdG9yYWdlEG1hcC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXRlBxBccG9sa2Fkb3RfcnVudGltZV9jb21tb24kY3Jvd2Rsb2FuGHBhbGxldBRFdmVudAQEVAABKBxDcmVhdGVkBAEccGFyYV9pZI0CARhQYXJhSWQAAASMQ3JlYXRlIGEgbmV3IGNyb3dkbG9hbmluZyBjYW1wYWlnbi4sQ29udHJpYnV0ZWQMAQx3aG8AATBUOjpBY2NvdW50SWQAAShmdW5kX2luZGV4jQIBGFBhcmFJZAABGGFtb3VudBgBMEJhbGFuY2VPZjxUPgABBHBDb250cmlidXRlZCB0byBhIGNyb3dkIHNhbGUuIFdpdGhkcmV3DAEMd2hvAAEwVDo6QWNjb3VudElkAAEoZnVuZF9pbmRleI0CARhQYXJhSWQAARhhbW91bnQYATBCYWxhbmNlT2Y8VD4AAgScV2l0aGRyZXcgZnVsbCBiYWxhbmNlIG9mIGEgY29udHJpYnV0b3IuRFBhcnRpYWxseVJlZnVuZGVkBAEccGFyYV9pZI0CARhQYXJhSWQAAwgtAVRoZSBsb2FucyBpbiBhIGZ1bmQgaGF2ZSBiZWVuIHBhcnRpYWxseSBkaXNzb2x2ZWQsIGkuZS4gdGhlcmUgYXJlIHNvbWUgbGVmdLRvdmVyIGNoaWxkIGtleXMgdGhhdCBzdGlsbCBuZWVkIHRvIGJlIGtpbGxlZC4sQWxsUmVmdW5kZWQEARxwYXJhX2lkjQIBGFBhcmFJZAAEBJxBbGwgbG9hbnMgaW4gYSBmdW5kIGhhdmUgYmVlbiByZWZ1bmRlZC4kRGlzc29sdmVkBAEccGFyYV9pZI0CARhQYXJhSWQABQRIRnVuZCBpcyBkaXNzb2x2ZWQuPEhhbmRsZUJpZFJlc3VsdAgBHHBhcmFfaWSNAgEYUGFyYUlkAAEYcmVzdWx0iAE4RGlzcGF0Y2hSZXN1bHQABgT0VGhlIHJlc3VsdCBvZiB0cnlpbmcgdG8gc3VibWl0IGEgbmV3IGJpZCB0byB0aGUgU2xvdHMgcGFsbGV0LhhFZGl0ZWQEARxwYXJhX2lkjQIBGFBhcmFJZAAHBMRUaGUgY29uZmlndXJhdGlvbiB0byBhIGNyb3dkbG9hbiBoYXMgYmVlbiBlZGl0ZWQuLE1lbW9VcGRhdGVkDAEMd2hvAAEwVDo6QWNjb3VudElkAAEccGFyYV9pZI0CARhQYXJhSWQAARBtZW1vOAEcVmVjPHU4PgAIBGBBIG1lbW8gaGFzIGJlZW4gdXBkYXRlZC48QWRkZWRUb05ld1JhaXNlBAEccGFyYV9pZI0CARhQYXJhSWQACQSgQSBwYXJhY2hhaW4gaGFzIGJlZW4gbW92ZWQgdG8gYE5ld1JhaXNlYAR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldGkHEGxwb2xrYWRvdF9ydW50aW1lX3BhcmFjaGFpbnMgY29yZXRpbWUYcGFsbGV0FEV2ZW50BARUAAEIUFJldmVudWVJbmZvUmVxdWVzdGVkBAEQd2hlbhABREJsb2NrTnVtYmVyRm9yPFQ+AAAEIQFUaGUgYnJva2VyIGNoYWluIGhhcyBhc2tlZCBmb3IgcmV2ZW51ZSBpbmZvcm1hdGlvbiBmb3IgYSBzcGVjaWZpYyBibG9jay4wQ29yZUFzc2lnbmVkBAEQY29yZTkHASRDb3JlSW5kZXgAAQTsQSBjb3JlIGhhcyByZWNlaXZlZCBhIG5ldyBhc3NpZ25tZW50IGZyb20gdGhlIGJyb2tlciBjaGFpbi4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXRtBwxscGFsbGV0X3N0YXRlX3RyaWVfbWlncmF0aW9uGHBhbGxldBRFdmVudAQEVAABECBNaWdyYXRlZAwBDHRvcBABDHUzMgABFGNoaWxkEAEMdTMyAAEcY29tcHV0ZXEHAUBNaWdyYXRpb25Db21wdXRlAAAIOQFHaXZlbiBudW1iZXIgb2YgYCh0b3AsIGNoaWxkKWAga2V5cyB3ZXJlIG1pZ3JhdGVkIHJlc3BlY3RpdmVseSwgd2l0aCB0aGUgZ2l2ZW4oYGNvbXB1dGVgLhxTbGFzaGVkCAEMd2hvAAEwVDo6QWNjb3VudElkAAEYYW1vdW50GAEwQmFsYW5jZU9mPFQ+AAEEtFNvbWUgYWNjb3VudCBnb3Qgc2xhc2hlZCBieSB0aGUgZ2l2ZW4gYW1vdW50LlRBdXRvTWlncmF0aW9uRmluaXNoZWQAAgSEVGhlIGF1dG8gbWlncmF0aW9uIHRhc2sgZmluaXNoZWQuGEhhbHRlZAQBFGVycm9ydQcBIEVycm9yPFQ+AAME7E1pZ3JhdGlvbiBnb3QgaGFsdGVkIGR1ZSB0byBhbiBlcnJvciBvciBtaXNzLWNvbmZpZ3VyYXRpb24uBHBJbm5lciBldmVudHMgb2YgdGhpcyBwYWxsZXQucQcMbHBhbGxldF9zdGF0ZV90cmllX21pZ3JhdGlvbhhwYWxsZXRATWlncmF0aW9uQ29tcHV0ZQABCBhTaWduZWQAAAAQQXV0bwABAAB1BwxscGFsbGV0X3N0YXRlX3RyaWVfbWlncmF0aW9uGHBhbGxldBRFcnJvcgQEVAABGDxNYXhTaWduZWRMaW1pdHMAAASATWF4IHNpZ25lZCBsaW1pdHMgbm90IHJlc3BlY3RlZC4oS2V5VG9vTG9uZwABHLRBIGtleSB3YXMgbG9uZ2VyIHRoYW4gdGhlIGNvbmZpZ3VyZWQgbWF4aW11bS4AEQFUaGlzIG1lYW5zIHRoYXQgdGhlIG1pZ3JhdGlvbiBoYWx0ZWQgYXQgdGhlIGN1cnJlbnQgW2BQcm9ncmVzc2BdIGFuZAEBY2FuIGJlIHJlc3VtZWQgd2l0aCBhIGxhcmdlciBbYGNyYXRlOjpDb25maWc6Ok1heEtleUxlbmBdIHZhbHVlLiEBUmV0cnlpbmcgd2l0aCB0aGUgc2FtZSBbYGNyYXRlOjpDb25maWc6Ok1heEtleUxlbmBdIHZhbHVlIHdpbGwgbm90IHdvcmsuRQFUaGUgdmFsdWUgc2hvdWxkIG9ubHkgYmUgaW5jcmVhc2VkIHRvIGF2b2lkIGEgc3RvcmFnZSBtaWdyYXRpb24gZm9yIHRoZSBjdXJyZW50bHmQc3RvcmVkIFtgY3JhdGU6OlByb2dyZXNzOjpMYXN0S2V5YF0uOE5vdEVub3VnaEZ1bmRzAAIElHN1Ym1pdHRlciBkb2VzIG5vdCBoYXZlIGVub3VnaCBmdW5kcy4oQmFkV2l0bmVzcwADBGhCYWQgd2l0bmVzcyBkYXRhIHByb3ZpZGVkLmRTaWduZWRNaWdyYXRpb25Ob3RBbGxvd2VkAAQEJQFTaWduZWQgbWlncmF0aW9uIGlzIG5vdCBhbGxvd2VkIGJlY2F1c2UgdGhlIG1heGltdW0gbGltaXQgaXMgbm90IHNldCB5ZXQuMEJhZENoaWxkUm9vdAAFBGBCYWQgY2hpbGQgcm9vdCBwcm92aWRlZC4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQueQcMKHBhbGxldF94Y20YcGFsbGV0FEV2ZW50BARUAAFgJEF0dGVtcHRlZAQBHG91dGNvbWV9BwFQeGNtOjpsYXRlc3Q6Ok91dGNvbWUAAASoRXhlY3V0aW9uIG9mIGFuIFhDTSBtZXNzYWdlIHdhcyBhdHRlbXB0ZWQuEFNlbnQQARhvcmlnaW4NAQEgTG9jYXRpb24AASxkZXN0aW5hdGlvbg0BASBMb2NhdGlvbgABHG1lc3NhZ2UVBgEcWGNtPCgpPgABKG1lc3NhZ2VfaWQEARxYY21IYXNoAAEEXEEgWENNIG1lc3NhZ2Ugd2FzIHNlbnQuSFVuZXhwZWN0ZWRSZXNwb25zZQgBGG9yaWdpbg0BASBMb2NhdGlvbgABIHF1ZXJ5X2lkMAEcUXVlcnlJZAACDFkBUXVlcnkgcmVzcG9uc2UgcmVjZWl2ZWQgd2hpY2ggZG9lcyBub3QgbWF0Y2ggYSByZWdpc3RlcmVkIHF1ZXJ5LiBUaGlzIG1heSBiZSBiZWNhdXNlIGFVAW1hdGNoaW5nIHF1ZXJ5IHdhcyBuZXZlciByZWdpc3RlcmVkLCBpdCBtYXkgYmUgYmVjYXVzZSBpdCBpcyBhIGR1cGxpY2F0ZSByZXNwb25zZSwgb3JwYmVjYXVzZSB0aGUgcXVlcnkgdGltZWQgb3V0LjRSZXNwb25zZVJlYWR5CAEgcXVlcnlfaWQwARxRdWVyeUlkAAEgcmVzcG9uc2U1BgEgUmVzcG9uc2UAAwhdAVF1ZXJ5IHJlc3BvbnNlIGhhcyBiZWVuIHJlY2VpdmVkIGFuZCBpcyByZWFkeSBmb3IgdGFraW5nIHdpdGggYHRha2VfcmVzcG9uc2VgLiBUaGVyZSBpc4BubyByZWdpc3RlcmVkIG5vdGlmaWNhdGlvbiBjYWxsLiBOb3RpZmllZAwBIHF1ZXJ5X2lkMAEcUXVlcnlJZAABMHBhbGxldF9pbmRleAgBCHU4AAEoY2FsbF9pbmRleAgBCHU4AAQIWQFRdWVyeSByZXNwb25zZSBoYXMgYmVlbiByZWNlaXZlZCBhbmQgcXVlcnkgaXMgcmVtb3ZlZC4gVGhlIHJlZ2lzdGVyZWQgbm90aWZpY2F0aW9uIGhhc6hiZWVuIGRpc3BhdGNoZWQgYW5kIGV4ZWN1dGVkIHN1Y2Nlc3NmdWxseS5ATm90aWZ5T3ZlcndlaWdodBQBIHF1ZXJ5X2lkMAEcUXVlcnlJZAABMHBhbGxldF9pbmRleAgBCHU4AAEoY2FsbF9pbmRleAgBCHU4AAE0YWN0dWFsX3dlaWdodCgBGFdlaWdodAABTG1heF9idWRnZXRlZF93ZWlnaHQoARhXZWlnaHQABQxJAVF1ZXJ5IHJlc3BvbnNlIGhhcyBiZWVuIHJlY2VpdmVkIGFuZCBxdWVyeSBpcyByZW1vdmVkLiBUaGUgcmVnaXN0ZXJlZCBub3RpZmljYXRpb25ZAWNvdWxkIG5vdCBiZSBkaXNwYXRjaGVkIGJlY2F1c2UgdGhlIGRpc3BhdGNoIHdlaWdodCBpcyBncmVhdGVyIHRoYW4gdGhlIG1heGltdW0gd2VpZ2h05G9yaWdpbmFsbHkgYnVkZ2V0ZWQgYnkgdGhpcyBydW50aW1lIGZvciB0aGUgcXVlcnkgcmVzdWx0LkxOb3RpZnlEaXNwYXRjaEVycm9yDAEgcXVlcnlfaWQwARxRdWVyeUlkAAEwcGFsbGV0X2luZGV4CAEIdTgAAShjYWxsX2luZGV4CAEIdTgABghVAVF1ZXJ5IHJlc3BvbnNlIGhhcyBiZWVuIHJlY2VpdmVkIGFuZCBxdWVyeSBpcyByZW1vdmVkLiBUaGVyZSB3YXMgYSBnZW5lcmFsIGVycm9yIHdpdGiIZGlzcGF0Y2hpbmcgdGhlIG5vdGlmaWNhdGlvbiBjYWxsLkhOb3RpZnlEZWNvZGVGYWlsZWQMASBxdWVyeV9pZDABHFF1ZXJ5SWQAATBwYWxsZXRfaW5kZXgIAQh1OAABKGNhbGxfaW5kZXgIAQh1OAAHDFEBUXVlcnkgcmVzcG9uc2UgaGFzIGJlZW4gcmVjZWl2ZWQgYW5kIHF1ZXJ5IGlzIHJlbW92ZWQuIFRoZSBkaXNwYXRjaCB3YXMgdW5hYmxlIHRvIGJlWQFkZWNvZGVkIGludG8gYSBgQ2FsbGA7IHRoaXMgbWlnaHQgYmUgZHVlIHRvIGRpc3BhdGNoIGZ1bmN0aW9uIGhhdmluZyBhIHNpZ25hdHVyZSB3aGljaJRpcyBub3QgYChvcmlnaW4sIFF1ZXJ5SWQsIFJlc3BvbnNlKWAuQEludmFsaWRSZXNwb25kZXIMARhvcmlnaW4NAQEgTG9jYXRpb24AASBxdWVyeV9pZDABHFF1ZXJ5SWQAAURleHBlY3RlZF9sb2NhdGlvbkkGAUBPcHRpb248TG9jYXRpb24+AAgMWQFFeHBlY3RlZCBxdWVyeSByZXNwb25zZSBoYXMgYmVlbiByZWNlaXZlZCBidXQgdGhlIG9yaWdpbiBsb2NhdGlvbiBvZiB0aGUgcmVzcG9uc2UgZG9lc1UBbm90IG1hdGNoIHRoYXQgZXhwZWN0ZWQuIFRoZSBxdWVyeSByZW1haW5zIHJlZ2lzdGVyZWQgZm9yIGEgbGF0ZXIsIHZhbGlkLCByZXNwb25zZSB0b2xiZSByZWNlaXZlZCBhbmQgYWN0ZWQgdXBvbi5cSW52YWxpZFJlc3BvbmRlclZlcnNpb24IARhvcmlnaW4NAQEgTG9jYXRpb24AASBxdWVyeV9pZDABHFF1ZXJ5SWQACRxRAUV4cGVjdGVkIHF1ZXJ5IHJlc3BvbnNlIGhhcyBiZWVuIHJlY2VpdmVkIGJ1dCB0aGUgZXhwZWN0ZWQgb3JpZ2luIGxvY2F0aW9uIHBsYWNlZCBpbk0Bc3RvcmFnZSBieSB0aGlzIHJ1bnRpbWUgcHJldmlvdXNseSBjYW5ub3QgYmUgZGVjb2RlZC4gVGhlIHF1ZXJ5IHJlbWFpbnMgcmVnaXN0ZXJlZC4AQQFUaGlzIGlzIHVuZXhwZWN0ZWQgKHNpbmNlIGEgbG9jYXRpb24gcGxhY2VkIGluIHN0b3JhZ2UgaW4gYSBwcmV2aW91c2x5IGV4ZWN1dGluZ00BcnVudGltZSBzaG91bGQgYmUgcmVhZGFibGUgcHJpb3IgdG8gcXVlcnkgdGltZW91dCkgYW5kIGRhbmdlcm91cyBzaW5jZSB0aGUgcG9zc2libHlZAXZhbGlkIHJlc3BvbnNlIHdpbGwgYmUgZHJvcHBlZC4gTWFudWFsIGdvdmVybmFuY2UgaW50ZXJ2ZW50aW9uIGlzIHByb2JhYmx5IGdvaW5nIHRvIGJlHG5lZWRlZC40UmVzcG9uc2VUYWtlbgQBIHF1ZXJ5X2lkMAEcUXVlcnlJZAAKBMhSZWNlaXZlZCBxdWVyeSByZXNwb25zZSBoYXMgYmVlbiByZWFkIGFuZCByZW1vdmVkLjRBc3NldHNUcmFwcGVkDAEQaGFzaDQBEEgyNTYAARhvcmlnaW4NAQEgTG9jYXRpb24AARhhc3NldHNdBgE8VmVyc2lvbmVkQXNzZXRzAAsEuFNvbWUgYXNzZXRzIGhhdmUgYmVlbiBwbGFjZWQgaW4gYW4gYXNzZXQgdHJhcC5UVmVyc2lvbkNoYW5nZU5vdGlmaWVkEAEsZGVzdGluYXRpb24NAQEgTG9jYXRpb24AARhyZXN1bHQQAShYY21WZXJzaW9uAAEQY29zdCEGARhBc3NldHMAAShtZXNzYWdlX2lkBAEcWGNtSGFzaAAMDCUBQW4gWENNIHZlcnNpb24gY2hhbmdlIG5vdGlmaWNhdGlvbiBtZXNzYWdlIGhhcyBiZWVuIGF0dGVtcHRlZCB0byBiZSBzZW50LgDgVGhlIGNvc3Qgb2Ygc2VuZGluZyBpdCAoYm9ybmUgYnkgdGhlIGNoYWluKSBpcyBpbmNsdWRlZC5cU3VwcG9ydGVkVmVyc2lvbkNoYW5nZWQIASBsb2NhdGlvbg0BASBMb2NhdGlvbgABHHZlcnNpb24QAShYY21WZXJzaW9uAA0IOQFUaGUgc3VwcG9ydGVkIHZlcnNpb24gb2YgYSBsb2NhdGlvbiBoYXMgYmVlbiBjaGFuZ2VkLiBUaGlzIG1pZ2h0IGJlIHRocm91Z2ggYW7AYXV0b21hdGljIG5vdGlmaWNhdGlvbiBvciBhIG1hbnVhbCBpbnRlcnZlbnRpb24uUE5vdGlmeVRhcmdldFNlbmRGYWlsDAEgbG9jYXRpb24NAQEgTG9jYXRpb24AASBxdWVyeV9pZDABHFF1ZXJ5SWQAARRlcnJvct0FASBYY21FcnJvcgAOCFkBQSBnaXZlbiBsb2NhdGlvbiB3aGljaCBoYWQgYSB2ZXJzaW9uIGNoYW5nZSBzdWJzY3JpcHRpb24gd2FzIGRyb3BwZWQgb3dpbmcgdG8gYW4gZXJyb3J8c2VuZGluZyB0aGUgbm90aWZpY2F0aW9uIHRvIGl0LmROb3RpZnlUYXJnZXRNaWdyYXRpb25GYWlsCAEgbG9jYXRpb25FAQFEVmVyc2lvbmVkTG9jYXRpb24AASBxdWVyeV9pZDABHFF1ZXJ5SWQADwhZAUEgZ2l2ZW4gbG9jYXRpb24gd2hpY2ggaGFkIGEgdmVyc2lvbiBjaGFuZ2Ugc3Vic2NyaXB0aW9uIHdhcyBkcm9wcGVkIG93aW5nIHRvIGFuIGVycm9ytG1pZ3JhdGluZyB0aGUgbG9jYXRpb24gdG8gb3VyIG5ldyBYQ00gZm9ybWF0LlRJbnZhbGlkUXVlcmllclZlcnNpb24IARhvcmlnaW4NAQEgTG9jYXRpb24AASBxdWVyeV9pZDABHFF1ZXJ5SWQAEBxVAUV4cGVjdGVkIHF1ZXJ5IHJlc3BvbnNlIGhhcyBiZWVuIHJlY2VpdmVkIGJ1dCB0aGUgZXhwZWN0ZWQgcXVlcmllciBsb2NhdGlvbiBwbGFjZWQgaW5NAXN0b3JhZ2UgYnkgdGhpcyBydW50aW1lIHByZXZpb3VzbHkgY2Fubm90IGJlIGRlY29kZWQuIFRoZSBxdWVyeSByZW1haW5zIHJlZ2lzdGVyZWQuAEEBVGhpcyBpcyB1bmV4cGVjdGVkIChzaW5jZSBhIGxvY2F0aW9uIHBsYWNlZCBpbiBzdG9yYWdlIGluIGEgcHJldmlvdXNseSBleGVjdXRpbmdNAXJ1bnRpbWUgc2hvdWxkIGJlIHJlYWRhYmxlIHByaW9yIHRvIHF1ZXJ5IHRpbWVvdXQpIGFuZCBkYW5nZXJvdXMgc2luY2UgdGhlIHBvc3NpYmx5WQF2YWxpZCByZXNwb25zZSB3aWxsIGJlIGRyb3BwZWQuIE1hbnVhbCBnb3Zlcm5hbmNlIGludGVydmVudGlvbiBpcyBwcm9iYWJseSBnb2luZyB0byBiZRxuZWVkZWQuOEludmFsaWRRdWVyaWVyEAEYb3JpZ2luDQEBIExvY2F0aW9uAAEgcXVlcnlfaWQwARxRdWVyeUlkAAFAZXhwZWN0ZWRfcXVlcmllcg0BASBMb2NhdGlvbgABUG1heWJlX2FjdHVhbF9xdWVyaWVySQYBQE9wdGlvbjxMb2NhdGlvbj4AEQxdAUV4cGVjdGVkIHF1ZXJ5IHJlc3BvbnNlIGhhcyBiZWVuIHJlY2VpdmVkIGJ1dCB0aGUgcXVlcmllciBsb2NhdGlvbiBvZiB0aGUgcmVzcG9uc2UgZG9lc1EBbm90IG1hdGNoIHRoZSBleHBlY3RlZC4gVGhlIHF1ZXJ5IHJlbWFpbnMgcmVnaXN0ZXJlZCBmb3IgYSBsYXRlciwgdmFsaWQsIHJlc3BvbnNlIHRvbGJlIHJlY2VpdmVkIGFuZCBhY3RlZCB1cG9uLlBWZXJzaW9uTm90aWZ5U3RhcnRlZAwBLGRlc3RpbmF0aW9uDQEBIExvY2F0aW9uAAEQY29zdCEGARhBc3NldHMAAShtZXNzYWdlX2lkBAEcWGNtSGFzaAASCFkBQSByZW1vdGUgaGFzIHJlcXVlc3RlZCBYQ00gdmVyc2lvbiBjaGFuZ2Ugbm90aWZpY2F0aW9uIGZyb20gdXMgYW5kIHdlIGhhdmUgaG9ub3JlZCBpdC4dAUEgdmVyc2lvbiBpbmZvcm1hdGlvbiBtZXNzYWdlIGlzIHNlbnQgdG8gdGhlbSBhbmQgaXRzIGNvc3QgaXMgaW5jbHVkZWQuWFZlcnNpb25Ob3RpZnlSZXF1ZXN0ZWQMASxkZXN0aW5hdGlvbg0BASBMb2NhdGlvbgABEGNvc3QhBgEYQXNzZXRzAAEobWVzc2FnZV9pZAQBHFhjbUhhc2gAEwQ9AVdlIGhhdmUgcmVxdWVzdGVkIHRoYXQgYSByZW1vdGUgY2hhaW4gc2VuZCB1cyBYQ00gdmVyc2lvbiBjaGFuZ2Ugbm90aWZpY2F0aW9ucy5gVmVyc2lvbk5vdGlmeVVucmVxdWVzdGVkDAEsZGVzdGluYXRpb24NAQEgTG9jYXRpb24AARBjb3N0IQYBGEFzc2V0cwABKG1lc3NhZ2VfaWQEARxYY21IYXNoABQIJQFXZSBoYXZlIHJlcXVlc3RlZCB0aGF0IGEgcmVtb3RlIGNoYWluIHN0b3BzIHNlbmRpbmcgdXMgWENNIHZlcnNpb24gY2hhbmdlOG5vdGlmaWNhdGlvbnMuIEZlZXNQYWlkCAEYcGF5aW5nDQEBIExvY2F0aW9uAAEQZmVlcyEGARhBc3NldHMAFQQxAUZlZXMgd2VyZSBwYWlkIGZyb20gYSBsb2NhdGlvbiBmb3IgYW4gb3BlcmF0aW9uIChvZnRlbiBmb3IgdXNpbmcgYFNlbmRYY21gKS40QXNzZXRzQ2xhaW1lZAwBEGhhc2g0ARBIMjU2AAEYb3JpZ2luDQEBIExvY2F0aW9uAAEYYXNzZXRzXQYBPFZlcnNpb25lZEFzc2V0cwAWBMBTb21lIGFzc2V0cyBoYXZlIGJlZW4gY2xhaW1lZCBmcm9tIGFuIGFzc2V0IHRyYXBgVmVyc2lvbk1pZ3JhdGlvbkZpbmlzaGVkBAEcdmVyc2lvbhABKFhjbVZlcnNpb24AFwSEQSBYQ00gdmVyc2lvbiBtaWdyYXRpb24gZmluaXNoZWQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0fQcQLHN0YWdpbmdfeGNtCHY0GHRyYWl0cxxPdXRjb21lAAEMIENvbXBsZXRlBAEQdXNlZCgBGFdlaWdodAAAAChJbmNvbXBsZXRlCAEQdXNlZCgBGFdlaWdodAABFGVycm9y3QUBFEVycm9yAAEAFEVycm9yBAEUZXJyb3LdBQEURXJyb3IAAgAAgQcMUHBhbGxldF9tZXNzYWdlX3F1ZXVlGHBhbGxldBRFdmVudAQEVAABEEBQcm9jZXNzaW5nRmFpbGVkDAEIaWQ0ARBIMjU2BJRUaGUgYGJsYWtlMl8yNTZgIGhhc2ggb2YgdGhlIG1lc3NhZ2UuARhvcmlnaW6ZBgFITWVzc2FnZU9yaWdpbk9mPFQ+BGRUaGUgcXVldWUgb2YgdGhlIG1lc3NhZ2UuARRlcnJvcoUHAUxQcm9jZXNzTWVzc2FnZUVycm9yEGBUaGUgZXJyb3IgdGhhdCBvY2N1cnJlZC4ASQFUaGlzIGVycm9yIGlzIHByZXR0eSBvcGFxdWUuIE1vcmUgZmluZS1ncmFpbmVkIGVycm9ycyBuZWVkIHRvIGJlIGVtaXR0ZWQgYXMgZXZlbnRzaGJ5IHRoZSBgTWVzc2FnZVByb2Nlc3NvcmAuAARVAU1lc3NhZ2UgZGlzY2FyZGVkIGR1ZSB0byBhbiBlcnJvciBpbiB0aGUgYE1lc3NhZ2VQcm9jZXNzb3JgICh1c3VhbGx5IGEgZm9ybWF0IGVycm9yKS4kUHJvY2Vzc2VkEAEIaWQ0ARBIMjU2BJRUaGUgYGJsYWtlMl8yNTZgIGhhc2ggb2YgdGhlIG1lc3NhZ2UuARhvcmlnaW6ZBgFITWVzc2FnZU9yaWdpbk9mPFQ+BGRUaGUgcXVldWUgb2YgdGhlIG1lc3NhZ2UuASx3ZWlnaHRfdXNlZCgBGFdlaWdodATASG93IG11Y2ggd2VpZ2h0IHdhcyB1c2VkIHRvIHByb2Nlc3MgdGhlIG1lc3NhZ2UuARxzdWNjZXNzIAEQYm9vbBiIV2hldGhlciB0aGUgbWVzc2FnZSB3YXMgcHJvY2Vzc2VkLgBJAU5vdGUgdGhhdCB0aGlzIGRvZXMgbm90IG1lYW4gdGhhdCB0aGUgdW5kZXJseWluZyBgTWVzc2FnZVByb2Nlc3NvcmAgd2FzIGludGVybmFsbHk1AXN1Y2Nlc3NmdWwuIEl0ICpzb2xlbHkqIG1lYW5zIHRoYXQgdGhlIE1RIHBhbGxldCB3aWxsIHRyZWF0IHRoaXMgYXMgYSBzdWNjZXNzTQFjb25kaXRpb24gYW5kIGRpc2NhcmQgdGhlIG1lc3NhZ2UuIEFueSBpbnRlcm5hbCBlcnJvciBuZWVkcyB0byBiZSBlbWl0dGVkIGFzIGV2ZW50c2hieSB0aGUgYE1lc3NhZ2VQcm9jZXNzb3JgLgEEVE1lc3NhZ2UgaXMgcHJvY2Vzc2VkLkhPdmVyd2VpZ2h0RW5xdWV1ZWQQAQhpZAQBIFt1ODsgMzJdBJRUaGUgYGJsYWtlMl8yNTZgIGhhc2ggb2YgdGhlIG1lc3NhZ2UuARhvcmlnaW6ZBgFITWVzc2FnZU9yaWdpbk9mPFQ+BGRUaGUgcXVldWUgb2YgdGhlIG1lc3NhZ2UuAShwYWdlX2luZGV4EAEkUGFnZUluZGV4BGBUaGUgcGFnZSBvZiB0aGUgbWVzc2FnZS4BNG1lc3NhZ2VfaW5kZXgQARxUOjpTaXplBKRUaGUgaW5kZXggb2YgdGhlIG1lc3NhZ2Ugd2l0aGluIHRoZSBwYWdlLgIEjE1lc3NhZ2UgcGxhY2VkIGluIG92ZXJ3ZWlnaHQgcXVldWUuKFBhZ2VSZWFwZWQIARhvcmlnaW6ZBgFITWVzc2FnZU9yaWdpbk9mPFQ+BFhUaGUgcXVldWUgb2YgdGhlIHBhZ2UuARRpbmRleBABJFBhZ2VJbmRleARYVGhlIGluZGV4IG9mIHRoZSBwYWdlLgMEVFRoaXMgcGFnZSB3YXMgcmVhcGVkLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldIUHEDRmcmFtZV9zdXBwb3J0GHRyYWl0cyBtZXNzYWdlc0xQcm9jZXNzTWVzc2FnZUVycm9yAAEYJEJhZEZvcm1hdAAAABxDb3JydXB0AAEALFVuc3VwcG9ydGVkAAIAKE92ZXJ3ZWlnaHQEACgBGFdlaWdodAADABRZaWVsZAAEAERTdGFja0xpbWl0UmVhY2hlZAAFAACJBwxEcGFsbGV0X2Fzc2V0X3JhdGUYcGFsbGV0FEV2ZW50BARUAAEMQEFzc2V0UmF0ZUNyZWF0ZWQIAShhc3NldF9raW5k3AEwVDo6QXNzZXRLaW5kAAEQcmF0ZaUGASRGaXhlZFUxMjgAAABAQXNzZXRSYXRlUmVtb3ZlZAQBKGFzc2V0X2tpbmTcATBUOjpBc3NldEtpbmQAAQBAQXNzZXRSYXRlVXBkYXRlZAwBKGFzc2V0X2tpbmTcATBUOjpBc3NldEtpbmQAAQxvbGSlBgEkRml4ZWRVMTI4AAEMbmV3pQYBJEZpeGVkVTEyOAACAAR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldI0HDCxwYWxsZXRfc3VkbxhwYWxsZXQURXZlbnQEBFQAARAUU3VkaWQEASxzdWRvX3Jlc3VsdIgBOERpc3BhdGNoUmVzdWx0BLRUaGUgcmVzdWx0IG9mIHRoZSBjYWxsIG1hZGUgYnkgdGhlIHN1ZG8gdXNlci4ABHBBIHN1ZG8gY2FsbCBqdXN0IHRvb2sgcGxhY2UuKEtleUNoYW5nZWQIAQxvbGT9AQFQT3B0aW9uPFQ6OkFjY291bnRJZD4EtFRoZSBvbGQgc3VkbyBrZXkgKGlmIG9uZSB3YXMgcHJldmlvdXNseSBzZXQpLgEMbmV3AAEwVDo6QWNjb3VudElkBIhUaGUgbmV3IHN1ZG8ga2V5IChpZiBvbmUgd2FzIHNldCkuAQR4VGhlIHN1ZG8ga2V5IGhhcyBiZWVuIHVwZGF0ZWQuKEtleVJlbW92ZWQAAgSAVGhlIGtleSB3YXMgcGVybWFuZW50bHkgcmVtb3ZlZC4oU3Vkb0FzRG9uZQQBLHN1ZG9fcmVzdWx0iAE4RGlzcGF0Y2hSZXN1bHQEtFRoZSByZXN1bHQgb2YgdGhlIGNhbGwgbWFkZSBieSB0aGUgc3VkbyB1c2VyLgMEyEEgW3N1ZG9fYXNdKFBhbGxldDo6c3Vkb19hcykgY2FsbCBqdXN0IHRvb2sgcGxhY2UuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0kQcIMGZyYW1lX3N5c3RlbRRQaGFzZQABDDhBcHBseUV4dHJpbnNpYwQAEAEMdTMyAAAAMEZpbmFsaXphdGlvbgABADhJbml0aWFsaXphdGlvbgACAACVBwAAAoAAmQcIMGZyYW1lX3N5c3RlbVhMYXN0UnVudGltZVVwZ3JhZGVJbmZvAAAIATBzcGVjX3ZlcnNpb27sAUxjb2RlYzo6Q29tcGFjdDx1MzI+AAEkc3BlY19uYW1lnQcBZHNwX3J1bnRpbWU6OlJ1bnRpbWVTdHJpbmcAAJ0HAAAFAgChBwgwZnJhbWVfc3lzdGVtYENvZGVVcGdyYWRlQXV0aG9yaXphdGlvbgQEVAAACAEkY29kZV9oYXNoNAEcVDo6SGFzaAABNGNoZWNrX3ZlcnNpb24gARBib29sAAClBwwwZnJhbWVfc3lzdGVtGGxpbWl0czBCbG9ja1dlaWdodHMAAAwBKGJhc2VfYmxvY2soARhXZWlnaHQAASRtYXhfYmxvY2soARhXZWlnaHQAASRwZXJfY2xhc3OpBwGEUGVyRGlzcGF0Y2hDbGFzczxXZWlnaHRzUGVyQ2xhc3M+AACpBww0ZnJhbWVfc3VwcG9ydCBkaXNwYXRjaEBQZXJEaXNwYXRjaENsYXNzBARUAa0HAAwBGG5vcm1hbK0HAQRUAAEsb3BlcmF0aW9uYWytBwEEVAABJG1hbmRhdG9yea0HAQRUAACtBwwwZnJhbWVfc3lzdGVtGGxpbWl0czxXZWlnaHRzUGVyQ2xhc3MAABABOGJhc2VfZXh0cmluc2ljKAEYV2VpZ2h0AAE0bWF4X2V4dHJpbnNpY/EGAThPcHRpb248V2VpZ2h0PgABJG1heF90b3RhbPEGAThPcHRpb248V2VpZ2h0PgABIHJlc2VydmVk8QYBOE9wdGlvbjxXZWlnaHQ+AACxBwwwZnJhbWVfc3lzdGVtGGxpbWl0cyxCbG9ja0xlbmd0aAAABAEMbWF4tQcBVFBlckRpc3BhdGNoQ2xhc3M8dTMyPgAAtQcMNGZyYW1lX3N1cHBvcnQgZGlzcGF0Y2hAUGVyRGlzcGF0Y2hDbGFzcwQEVAEQAAwBGG5vcm1hbBABBFQAASxvcGVyYXRpb25hbBABBFQAASRtYW5kYXRvcnkQAQRUAAC5Bwgoc3Bfd2VpZ2h0czxSdW50aW1lRGJXZWlnaHQAAAgBEHJlYWQwAQx1NjQAARR3cml0ZTABDHU2NAAAvQcIKHNwX3ZlcnNpb244UnVudGltZVZlcnNpb24AACABJHNwZWNfbmFtZZ0HATRSdW50aW1lU3RyaW5nAAEkaW1wbF9uYW1lnQcBNFJ1bnRpbWVTdHJpbmcAAURhdXRob3JpbmdfdmVyc2lvbhABDHUzMgABMHNwZWNfdmVyc2lvbhABDHUzMgABMGltcGxfdmVyc2lvbhABDHUzMgABEGFwaXPBBwEcQXBpc1ZlYwABTHRyYW5zYWN0aW9uX3ZlcnNpb24QAQx1MzIAATRzdGF0ZV92ZXJzaW9uCAEIdTgAAMEHBAxDb3cEBFQBxQcABADFBwAAAMUHAAACyQcAyQcAAAQIhQUQAM0HDDBmcmFtZV9zeXN0ZW0YcGFsbGV0FEVycm9yBARUAAEkPEludmFsaWRTcGVjTmFtZQAACBEBVGhlIG5hbWUgb2Ygc3BlY2lmaWNhdGlvbiBkb2VzIG5vdCBtYXRjaCBiZXR3ZWVuIHRoZSBjdXJyZW50IHJ1bnRpbWVQYW5kIHRoZSBuZXcgcnVudGltZS5oU3BlY1ZlcnNpb25OZWVkc1RvSW5jcmVhc2UAAQhBAVRoZSBzcGVjaWZpY2F0aW9uIHZlcnNpb24gaXMgbm90IGFsbG93ZWQgdG8gZGVjcmVhc2UgYmV0d2VlbiB0aGUgY3VycmVudCBydW50aW1lUGFuZCB0aGUgbmV3IHJ1bnRpbWUudEZhaWxlZFRvRXh0cmFjdFJ1bnRpbWVWZXJzaW9uAAIM7EZhaWxlZCB0byBleHRyYWN0IHRoZSBydW50aW1lIHZlcnNpb24gZnJvbSB0aGUgbmV3IHJ1bnRpbWUuAAkBRWl0aGVyIGNhbGxpbmcgYENvcmVfdmVyc2lvbmAgb3IgZGVjb2RpbmcgYFJ1bnRpbWVWZXJzaW9uYCBmYWlsZWQuTE5vbkRlZmF1bHRDb21wb3NpdGUAAwT8U3VpY2lkZSBjYWxsZWQgd2hlbiB0aGUgYWNjb3VudCBoYXMgbm9uLWRlZmF1bHQgY29tcG9zaXRlIGRhdGEuPE5vblplcm9SZWZDb3VudAAEBDUBVGhlcmUgaXMgYSBub24temVybyByZWZlcmVuY2UgY291bnQgcHJldmVudGluZyB0aGUgYWNjb3VudCBmcm9tIGJlaW5nIHB1cmdlZC4wQ2FsbEZpbHRlcmVkAAUE0FRoZSBvcmlnaW4gZmlsdGVyIHByZXZlbnQgdGhlIGNhbGwgdG8gYmUgZGlzcGF0Y2hlZC5sTXVsdGlCbG9ja01pZ3JhdGlvbnNPbmdvaW5nAAYEVQFBIG11bHRpLWJsb2NrIG1pZ3JhdGlvbiBpcyBvbmdvaW5nIGFuZCBwcmV2ZW50cyB0aGUgY3VycmVudCBjb2RlIGZyb20gYmVpbmcgcmVwbGFjZWQuRE5vdGhpbmdBdXRob3JpemVkAAcEWE5vIHVwZ3JhZGUgYXV0aG9yaXplZC4wVW5hdXRob3JpemVkAAgElFRoZSBzdWJtaXR0ZWQgY29kZSBpcyBub3QgYXV0aG9yaXplZC4EbEVycm9yIGZvciB0aGUgU3lzdGVtIHBhbGxldNEHDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQB1QcEUwAABADdBwEYVmVjPFQ+AADVBwQYT3B0aW9uBARUAdkHAQgQTm9uZQAAABBTb21lBADZBwAAAQAA2QcIQHBhbGxldF9zY2hlZHVsZXIkU2NoZWR1bGVkFBBOYW1lAQQQQ2FsbAFxASxCbG9ja051bWJlcgEQNFBhbGxldHNPcmlnaW4BfQIkQWNjb3VudElkAQAAFAEgbWF5YmVfaWSEATBPcHRpb248TmFtZT4AASBwcmlvcml0eQgBSHNjaGVkdWxlOjpQcmlvcml0eQABEGNhbGxxAQEQQ2FsbAABOG1heWJlX3BlcmlvZGljjQEBlE9wdGlvbjxzY2hlZHVsZTo6UGVyaW9kPEJsb2NrTnVtYmVyPj4AARhvcmlnaW59AgE0UGFsbGV0c09yaWdpbgAA3QcAAALVBwDhBwhAcGFsbGV0X3NjaGVkdWxlcixSZXRyeUNvbmZpZwQYUGVyaW9kARAADAE0dG90YWxfcmV0cmllcwgBCHU4AAEkcmVtYWluaW5nCAEIdTgAARhwZXJpb2QQARhQZXJpb2QAAOUHDEBwYWxsZXRfc2NoZWR1bGVyGHBhbGxldBRFcnJvcgQEVAABFEBGYWlsZWRUb1NjaGVkdWxlAAAEZEZhaWxlZCB0byBzY2hlZHVsZSBhIGNhbGwgTm90Rm91bmQAAQR8Q2Fubm90IGZpbmQgdGhlIHNjaGVkdWxlZCBjYWxsLlxUYXJnZXRCbG9ja051bWJlckluUGFzdAACBKRHaXZlbiB0YXJnZXQgYmxvY2sgbnVtYmVyIGlzIGluIHRoZSBwYXN0LkhSZXNjaGVkdWxlTm9DaGFuZ2UAAwTwUmVzY2hlZHVsZSBmYWlsZWQgYmVjYXVzZSBpdCBkb2VzIG5vdCBjaGFuZ2Ugc2NoZWR1bGVkIHRpbWUuFE5hbWVkAAQE0EF0dGVtcHQgdG8gdXNlIGEgbm9uLW5hbWVkIGZ1bmN0aW9uIG9uIGEgbmFtZWQgdGFzay4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQu6QcIPHBhbGxldF9wcmVpbWFnZUBPbGRSZXF1ZXN0U3RhdHVzCCRBY2NvdW50SWQBABxCYWxhbmNlARgBCCxVbnJlcXVlc3RlZAgBHGRlcG9zaXTlAwFQKEFjY291bnRJZCwgQmFsYW5jZSkAAQxsZW4QAQx1MzIAAAAkUmVxdWVzdGVkDAEcZGVwb3NpdO0HAXBPcHRpb248KEFjY291bnRJZCwgQmFsYW5jZSk+AAEUY291bnQQAQx1MzIAAQxsZW5hAgEsT3B0aW9uPHUzMj4AAQAA7QcEGE9wdGlvbgQEVAHlAwEIEE5vbmUAAAAQU29tZQQA5QMAAAEAAPEHCDxwYWxsZXRfcHJlaW1hZ2U0UmVxdWVzdFN0YXR1cwgkQWNjb3VudElkAQAYVGlja2V0AfUHAQgsVW5yZXF1ZXN0ZWQIARh0aWNrZXT5BwFMKEFjY291bnRJZCwgVGlja2V0KQABDGxlbhABDHUzMgAAACRSZXF1ZXN0ZWQMATBtYXliZV90aWNrZXT9BwFsT3B0aW9uPChBY2NvdW50SWQsIFRpY2tldCk+AAEUY291bnQQAQx1MzIAASRtYXliZV9sZW5hAgEsT3B0aW9uPHUzMj4AAQAA9QcUNGZyYW1lX3N1cHBvcnQYdHJhaXRzGHRva2VucyBmdW5naWJsZURIb2xkQ29uc2lkZXJhdGlvbhQEQQAERgAEUgAERAAIRnAAAAQAGAEoRjo6QmFsYW5jZQAA+QcAAAQIAPUHAP0HBBhPcHRpb24EBFQB+QcBCBBOb25lAAAAEFNvbWUEAPkHAAABAAABCAAABAg0EAAFCAxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQgEUwAABAA4ARhWZWM8VD4AAAkIDDxwYWxsZXRfcHJlaW1hZ2UYcGFsbGV0FEVycm9yBARUAAEkGFRvb0JpZwAABKBQcmVpbWFnZSBpcyB0b28gbGFyZ2UgdG8gc3RvcmUgb24tY2hhaW4uMEFscmVhZHlOb3RlZAABBKRQcmVpbWFnZSBoYXMgYWxyZWFkeSBiZWVuIG5vdGVkIG9uLWNoYWluLjROb3RBdXRob3JpemVkAAIEyFRoZSB1c2VyIGlzIG5vdCBhdXRob3JpemVkIHRvIHBlcmZvcm0gdGhpcyBhY3Rpb24uIE5vdE5vdGVkAAME/FRoZSBwcmVpbWFnZSBjYW5ub3QgYmUgcmVtb3ZlZCBzaW5jZSBpdCBoYXMgbm90IHlldCBiZWVuIG5vdGVkLiRSZXF1ZXN0ZWQABAQJAUEgcHJlaW1hZ2UgbWF5IG5vdCBiZSByZW1vdmVkIHdoZW4gdGhlcmUgYXJlIG91dHN0YW5kaW5nIHJlcXVlc3RzLjBOb3RSZXF1ZXN0ZWQABQQtAVRoZSBwcmVpbWFnZSByZXF1ZXN0IGNhbm5vdCBiZSByZW1vdmVkIHNpbmNlIG5vIG91dHN0YW5kaW5nIHJlcXVlc3RzIGV4aXN0LhxUb29NYW55AAYEVQFNb3JlIHRoYW4gYE1BWF9IQVNIX1VQR1JBREVfQlVMS19DT1VOVGAgaGFzaGVzIHdlcmUgcmVxdWVzdGVkIHRvIGJlIHVwZ3JhZGVkIGF0IG9uY2UuGFRvb0ZldwAHBORUb28gZmV3IGhhc2hlcyB3ZXJlIHJlcXVlc3RlZCB0byBiZSB1cGdyYWRlZCAoaS5lLiB6ZXJvKS4YTm9Db3N0AAgEWQFObyB0aWNrZXQgd2l0aCBhIGNvc3Qgd2FzIHJldHVybmVkIGJ5IFtgQ29uZmlnOjpDb25zaWRlcmF0aW9uYF0gdG8gc3RvcmUgdGhlIHByZWltYWdlLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC4NCAxMYm91bmRlZF9jb2xsZWN0aW9uc0B3ZWFrX2JvdW5kZWRfdmVjOFdlYWtCb3VuZGVkVmVjCARUAREIBFMAAAQAFQgBGFZlYzxUPgAAEQgAAAQIpQEwABUIAAACEQgAGQgMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEEBFMAAAQAHQgBGFZlYzxUPgAAHQgAAAIEACEIBBhPcHRpb24EBFQBJQgBCBBOb25lAAAAEFNvbWUEACUIAAABAAAlCAxEc3BfY29uc2Vuc3VzX2JhYmUcZGlnZXN0cyRQcmVEaWdlc3QAAQwcUHJpbWFyeQQAKQgBQFByaW1hcnlQcmVEaWdlc3QAAQA4U2Vjb25kYXJ5UGxhaW4EADEIAVxTZWNvbmRhcnlQbGFpblByZURpZ2VzdAACADBTZWNvbmRhcnlWUkYEADUIAVRTZWNvbmRhcnlWUkZQcmVEaWdlc3QAAwAAKQgMRHNwX2NvbnNlbnN1c19iYWJlHGRpZ2VzdHNAUHJpbWFyeVByZURpZ2VzdAAADAE8YXV0aG9yaXR5X2luZGV4EAFUc3VwZXI6OkF1dGhvcml0eUluZGV4AAEQc2xvdKkBARBTbG90AAE0dnJmX3NpZ25hdHVyZS0IATBWcmZTaWduYXR1cmUAAC0IEBxzcF9jb3JlHHNyMjU1MTkMdnJmMFZyZlNpZ25hdHVyZQAACAEocHJlX291dHB1dAQBMFZyZlByZU91dHB1dAABFHByb29mSQIBIFZyZlByb29mAAAxCAxEc3BfY29uc2Vuc3VzX2JhYmUcZGlnZXN0c1xTZWNvbmRhcnlQbGFpblByZURpZ2VzdAAACAE8YXV0aG9yaXR5X2luZGV4EAFUc3VwZXI6OkF1dGhvcml0eUluZGV4AAEQc2xvdKkBARBTbG90AAA1CAxEc3BfY29uc2Vuc3VzX2JhYmUcZGlnZXN0c1RTZWNvbmRhcnlWUkZQcmVEaWdlc3QAAAwBPGF1dGhvcml0eV9pbmRleBABVHN1cGVyOjpBdXRob3JpdHlJbmRleAABEHNsb3SpAQEQU2xvdAABNHZyZl9zaWduYXR1cmUtCAEwVnJmU2lnbmF0dXJlAAA5CAhEc3BfY29uc2Vuc3VzX2JhYmVYQmFiZUVwb2NoQ29uZmlndXJhdGlvbgAACAEEY7UBASgodTY0LCB1NjQpAAE0YWxsb3dlZF9zbG90c7kBATBBbGxvd2VkU2xvdHMAAD0IDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBQQgEUwAABABFCAEYVmVjPFQ+AABBCAAABAgwEABFCAAAAkEIAEkIDCxwYWxsZXRfYmFiZRhwYWxsZXQURXJyb3IEBFQAARBgSW52YWxpZEVxdWl2b2NhdGlvblByb29mAAAEMQFBbiBlcXVpdm9jYXRpb24gcHJvb2YgcHJvdmlkZWQgYXMgcGFydCBvZiBhbiBlcXVpdm9jYXRpb24gcmVwb3J0IGlzIGludmFsaWQuYEludmFsaWRLZXlPd25lcnNoaXBQcm9vZgABBDEBQSBrZXkgb3duZXJzaGlwIHByb29mIHByb3ZpZGVkIGFzIHBhcnQgb2YgYW4gZXF1aXZvY2F0aW9uIHJlcG9ydCBpcyBpbnZhbGlkLlhEdXBsaWNhdGVPZmZlbmNlUmVwb3J0AAIEFQFBIGdpdmVuIGVxdWl2b2NhdGlvbiByZXBvcnQgaXMgdmFsaWQgYnV0IGFscmVhZHkgcHJldmlvdXNseSByZXBvcnRlZC5QSW52YWxpZENvbmZpZ3VyYXRpb24AAwSMU3VibWl0dGVkIGNvbmZpZ3VyYXRpb24gaXMgaW52YWxpZC4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuTQgAAAQMABggAFEIDDhwYWxsZXRfaW5kaWNlcxhwYWxsZXQURXJyb3IEBFQAARQsTm90QXNzaWduZWQAAASMVGhlIGluZGV4IHdhcyBub3QgYWxyZWFkeSBhc3NpZ25lZC4gTm90T3duZXIAAQSkVGhlIGluZGV4IGlzIGFzc2lnbmVkIHRvIGFub3RoZXIgYWNjb3VudC4USW5Vc2UAAgRwVGhlIGluZGV4IHdhcyBub3QgYXZhaWxhYmxlLixOb3RUcmFuc2ZlcgADBMhUaGUgc291cmNlIGFuZCBkZXN0aW5hdGlvbiBhY2NvdW50cyBhcmUgaWRlbnRpY2FsLiRQZXJtYW5lbnQABATQVGhlIGluZGV4IGlzIHBlcm1hbmVudCBhbmQgbWF5IG5vdCBiZSBmcmVlZC9jaGFuZ2VkLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC5VCAxMYm91bmRlZF9jb2xsZWN0aW9uc0B3ZWFrX2JvdW5kZWRfdmVjOFdlYWtCb3VuZGVkVmVjCARUAVkIBFMAAAQAYQgBGFZlYzxUPgAAWQgMPHBhbGxldF9iYWxhbmNlcxR0eXBlcyxCYWxhbmNlTG9jawQcQmFsYW5jZQEYAAwBCGlkhQUBOExvY2tJZGVudGlmaWVyAAEYYW1vdW50GAEcQmFsYW5jZQABHHJlYXNvbnNdCAEcUmVhc29ucwAAXQgMPHBhbGxldF9iYWxhbmNlcxR0eXBlcxxSZWFzb25zAAEMDEZlZQAAABBNaXNjAAEADEFsbAACAABhCAAAAlkIAGUIDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBaQgEUwAABABtCAEYVmVjPFQ+AABpCAw8cGFsbGV0X2JhbGFuY2VzFHR5cGVzLFJlc2VydmVEYXRhCERSZXNlcnZlSWRlbnRpZmllcgGFBRxCYWxhbmNlARgACAEIaWSFBQFEUmVzZXJ2ZUlkZW50aWZpZXIAARhhbW91bnQYARxCYWxhbmNlAABtCAAAAmkIAHEIDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBdQgEUwAABACFCAEYVmVjPFQ+AAB1CBQ0ZnJhbWVfc3VwcG9ydBh0cmFpdHMYdG9rZW5zEG1pc2MgSWRBbW91bnQICElkAXkIHEJhbGFuY2UBGAAIAQhpZHkIAQhJZAABGGFtb3VudBgBHEJhbGFuY2UAAHkICDRwYXNlb19ydW50aW1lRFJ1bnRpbWVIb2xkUmVhc29uAAEIIFByZWltYWdlBAB9CAFscGFsbGV0X3ByZWltYWdlOjpIb2xkUmVhc29uAAoASFN0YXRlVHJpZU1pZ3JhdGlvbgQAgQgBnHBhbGxldF9zdGF0ZV90cmllX21pZ3JhdGlvbjo6SG9sZFJlYXNvbgBiAAB9CAw8cGFsbGV0X3ByZWltYWdlGHBhbGxldChIb2xkUmVhc29uAAEEIFByZWltYWdlAAAAAIEIDGxwYWxsZXRfc3RhdGVfdHJpZV9taWdyYXRpb24YcGFsbGV0KEhvbGRSZWFzb24AAQQ8U2xhc2hGb3JNaWdyYXRlAAAAAIUIAAACdQgAiQgMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAGNCARTAAAEAJkIARhWZWM8VD4AAI0IFDRmcmFtZV9zdXBwb3J0GHRyYWl0cxh0b2tlbnMQbWlzYyBJZEFtb3VudAgISWQBkQgcQmFsYW5jZQEYAAgBCGlkkQgBCElkAAEYYW1vdW50GAEcQmFsYW5jZQAAkQgINHBhc2VvX3J1bnRpbWVMUnVudGltZUZyZWV6ZVJlYXNvbgABBDxOb21pbmF0aW9uUG9vbHMEAJUIAZRwYWxsZXRfbm9taW5hdGlvbl9wb29sczo6RnJlZXplUmVhc29uACcAAJUIDFxwYWxsZXRfbm9taW5hdGlvbl9wb29scxhwYWxsZXQwRnJlZXplUmVhc29uAAEEOFBvb2xNaW5CYWxhbmNlAAAAAJkIAAACjQgAnQgMPHBhbGxldF9iYWxhbmNlcxhwYWxsZXQURXJyb3IIBFQABEkAATA4VmVzdGluZ0JhbGFuY2UAAAScVmVzdGluZyBiYWxhbmNlIHRvbyBoaWdoIHRvIHNlbmQgdmFsdWUuVExpcXVpZGl0eVJlc3RyaWN0aW9ucwABBMhBY2NvdW50IGxpcXVpZGl0eSByZXN0cmljdGlvbnMgcHJldmVudCB3aXRoZHJhd2FsLkxJbnN1ZmZpY2llbnRCYWxhbmNlAAIEeEJhbGFuY2UgdG9vIGxvdyB0byBzZW5kIHZhbHVlLkhFeGlzdGVudGlhbERlcG9zaXQAAwTsVmFsdWUgdG9vIGxvdyB0byBjcmVhdGUgYWNjb3VudCBkdWUgdG8gZXhpc3RlbnRpYWwgZGVwb3NpdC40RXhwZW5kYWJpbGl0eQAEBJBUcmFuc2Zlci9wYXltZW50IHdvdWxkIGtpbGwgYWNjb3VudC5cRXhpc3RpbmdWZXN0aW5nU2NoZWR1bGUABQTMQSB2ZXN0aW5nIHNjaGVkdWxlIGFscmVhZHkgZXhpc3RzIGZvciB0aGlzIGFjY291bnQuLERlYWRBY2NvdW50AAYEjEJlbmVmaWNpYXJ5IGFjY291bnQgbXVzdCBwcmUtZXhpc3QuPFRvb01hbnlSZXNlcnZlcwAHBLhOdW1iZXIgb2YgbmFtZWQgcmVzZXJ2ZXMgZXhjZWVkIGBNYXhSZXNlcnZlc2AuMFRvb01hbnlIb2xkcwAIBPhOdW1iZXIgb2YgaG9sZHMgZXhjZWVkIGBWYXJpYW50Q291bnRPZjxUOjpSdW50aW1lSG9sZFJlYXNvbj5gLjhUb29NYW55RnJlZXplcwAJBJhOdW1iZXIgb2YgZnJlZXplcyBleGNlZWQgYE1heEZyZWV6ZXNgLkxJc3N1YW5jZURlYWN0aXZhdGVkAAoEAQFUaGUgaXNzdWFuY2UgY2Fubm90IGJlIG1vZGlmaWVkIHNpbmNlIGl0IGlzIGFscmVhZHkgZGVhY3RpdmF0ZWQuJERlbHRhWmVybwALBGRUaGUgZGVsdGEgY2Fubm90IGJlIHplcm8uBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LqEICGhwYWxsZXRfdHJhbnNhY3Rpb25fcGF5bWVudCBSZWxlYXNlcwABCCRWMUFuY2llbnQAAAAIVjIAAQAApQgIOHBhbGxldF9zdGFraW5nNFN0YWtpbmdMZWRnZXIEBFQAABQBFHN0YXNoAAEwVDo6QWNjb3VudElkAAEUdG90YWz8ATBCYWxhbmNlT2Y8VD4AARhhY3RpdmX8ATBCYWxhbmNlT2Y8VD4AASR1bmxvY2tpbmcJAgHwQm91bmRlZFZlYzxVbmxvY2tDaHVuazxCYWxhbmNlT2Y8VD4+LCBUOjpNYXhVbmxvY2tpbmdDaHVua3M+AAFYbGVnYWN5X2NsYWltZWRfcmV3YXJkc6kIAZRCb3VuZGVkVmVjPEVyYUluZGV4LCBUOjpIaXN0b3J5RGVwdGg+AACpCAxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUARAEUwAABADlAQEYVmVjPFQ+AACtCAg4cGFsbGV0X3N0YWtpbmcsTm9taW5hdGlvbnMEBFQAAAwBHHRhcmdldHOxCAG0Qm91bmRlZFZlYzxUOjpBY2NvdW50SWQsIE1heE5vbWluYXRpb25zT2Y8VD4+AAEwc3VibWl0dGVkX2luEAEgRXJhSW5kZXgAAShzdXBwcmVzc2VkIAEQYm9vbAAAsQgMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEABFMAAAQA0QEBGFZlYzxUPgAAtQgIOHBhbGxldF9zdGFraW5nNEFjdGl2ZUVyYUluZm8AAAgBFGluZGV4EAEgRXJhSW5kZXgAARRzdGFydLkIASxPcHRpb248dTY0PgAAuQgEGE9wdGlvbgQEVAEwAQgQTm9uZQAAABBTb21lBAAwAAABAAC9CAAABAgQAADBCAgoc3Bfc3Rha2luZyBFeHBvc3VyZQgkQWNjb3VudElkAQAcQmFsYW5jZQEYAAwBFHRvdGFs/AEcQmFsYW5jZQABDG93bvwBHEJhbGFuY2UAARhvdGhlcnPFCAGsVmVjPEluZGl2aWR1YWxFeHBvc3VyZTxBY2NvdW50SWQsIEJhbGFuY2U+PgAAxQgAAALJCADJCAgoc3Bfc3Rha2luZ0hJbmRpdmlkdWFsRXhwb3N1cmUIJEFjY291bnRJZAEAHEJhbGFuY2UBGAAIAQx3aG8AASRBY2NvdW50SWQAARR2YWx1ZfwBHEJhbGFuY2UAAM0ICChzcF9zdGFraW5nVFBhZ2VkRXhwb3N1cmVNZXRhZGF0YQQcQmFsYW5jZQEYABABFHRvdGFs/AEcQmFsYW5jZQABDG93bvwBHEJhbGFuY2UAATxub21pbmF0b3JfY291bnQQAQx1MzIAAShwYWdlX2NvdW50EAEQUGFnZQAA0QgAAAQMEAAQANUICChzcF9zdGFraW5nMEV4cG9zdXJlUGFnZQgkQWNjb3VudElkAQAcQmFsYW5jZQEYAAgBKHBhZ2VfdG90YWz8ARxCYWxhbmNlAAEYb3RoZXJzxQgBrFZlYzxJbmRpdmlkdWFsRXhwb3N1cmU8QWNjb3VudElkLCBCYWxhbmNlPj4AANkICDhwYWxsZXRfc3Rha2luZzxFcmFSZXdhcmRQb2ludHMEJEFjY291bnRJZAEAAAgBFHRvdGFsEAEsUmV3YXJkUG9pbnQAAShpbmRpdmlkdWFs3QgBgEJUcmVlTWFwPEFjY291bnRJZCwgUmV3YXJkUG9pbnQ+AADdCAQgQlRyZWVNYXAIBEsBAARWARAABADhCAAAAOEIAAAC5QgA5QgAAAQIABAA6QgAAALtCADtCAg4cGFsbGV0X3N0YWtpbmc4VW5hcHBsaWVkU2xhc2gIJEFjY291bnRJZAEAHEJhbGFuY2UBGAAUASR2YWxpZGF0b3IAASRBY2NvdW50SWQAAQxvd24YARxCYWxhbmNlAAEYb3RoZXJz4QMBZFZlYzwoQWNjb3VudElkLCBCYWxhbmNlKT4AASRyZXBvcnRlcnPRAQE4VmVjPEFjY291bnRJZD4AARhwYXlvdXQYARxCYWxhbmNlAADxCAAABAisGAD1CAw4cGFsbGV0X3N0YWtpbmcgc2xhc2hpbmc0U2xhc2hpbmdTcGFucwAAEAEoc3Bhbl9pbmRleBABJFNwYW5JbmRleAABKGxhc3Rfc3RhcnQQASBFcmFJbmRleAABSGxhc3Rfbm9uemVyb19zbGFzaBABIEVyYUluZGV4AAEUcHJpb3LlAQE0VmVjPEVyYUluZGV4PgAA+QgMOHBhbGxldF9zdGFraW5nIHNsYXNoaW5nKFNwYW5SZWNvcmQEHEJhbGFuY2UBGAAIARxzbGFzaGVkGAEcQmFsYW5jZQABIHBhaWRfb3V0GAEcQmFsYW5jZQAA/QgQOHBhbGxldF9zdGFraW5nGHBhbGxldBhwYWxsZXQURXJyb3IEBFQAAXw0Tm90Q29udHJvbGxlcgAABGROb3QgYSBjb250cm9sbGVyIGFjY291bnQuIE5vdFN0YXNoAAEEUE5vdCBhIHN0YXNoIGFjY291bnQuNEFscmVhZHlCb25kZWQAAgRgU3Rhc2ggaXMgYWxyZWFkeSBib25kZWQuNEFscmVhZHlQYWlyZWQAAwR0Q29udHJvbGxlciBpcyBhbHJlYWR5IHBhaXJlZC4wRW1wdHlUYXJnZXRzAAQEYFRhcmdldHMgY2Fubm90IGJlIGVtcHR5LjhEdXBsaWNhdGVJbmRleAAFBEBEdXBsaWNhdGUgaW5kZXguREludmFsaWRTbGFzaEluZGV4AAYEhFNsYXNoIHJlY29yZCBpbmRleCBvdXQgb2YgYm91bmRzLkBJbnN1ZmZpY2llbnRCb25kAAcMWQFDYW5ub3QgaGF2ZSBhIHZhbGlkYXRvciBvciBub21pbmF0b3Igcm9sZSwgd2l0aCB2YWx1ZSBsZXNzIHRoYW4gdGhlIG1pbmltdW0gZGVmaW5lZCBieT0BZ292ZXJuYW5jZSAoc2VlIGBNaW5WYWxpZGF0b3JCb25kYCBhbmQgYE1pbk5vbWluYXRvckJvbmRgKS4gSWYgdW5ib25kaW5nIGlzIHRoZRUBaW50ZW50aW9uLCBgY2hpbGxgIGZpcnN0IHRvIHJlbW92ZSBvbmUncyByb2xlIGFzIHZhbGlkYXRvci9ub21pbmF0b3IuME5vTW9yZUNodW5rcwAIBJBDYW4gbm90IHNjaGVkdWxlIG1vcmUgdW5sb2NrIGNodW5rcy40Tm9VbmxvY2tDaHVuawAJBKBDYW4gbm90IHJlYm9uZCB3aXRob3V0IHVubG9ja2luZyBjaHVua3MuMEZ1bmRlZFRhcmdldAAKBMhBdHRlbXB0aW5nIHRvIHRhcmdldCBhIHN0YXNoIHRoYXQgc3RpbGwgaGFzIGZ1bmRzLkhJbnZhbGlkRXJhVG9SZXdhcmQACwRYSW52YWxpZCBlcmEgdG8gcmV3YXJkLmhJbnZhbGlkTnVtYmVyT2ZOb21pbmF0aW9ucwAMBHhJbnZhbGlkIG51bWJlciBvZiBub21pbmF0aW9ucy5ITm90U29ydGVkQW5kVW5pcXVlAA0EgEl0ZW1zIGFyZSBub3Qgc29ydGVkIGFuZCB1bmlxdWUuOEFscmVhZHlDbGFpbWVkAA4ECQFSZXdhcmRzIGZvciB0aGlzIGVyYSBoYXZlIGFscmVhZHkgYmVlbiBjbGFpbWVkIGZvciB0aGlzIHZhbGlkYXRvci4sSW52YWxpZFBhZ2UADwSETm8gbm9taW5hdG9ycyBleGlzdCBvbiB0aGlzIHBhZ2UuVEluY29ycmVjdEhpc3RvcnlEZXB0aAAQBMBJbmNvcnJlY3QgcHJldmlvdXMgaGlzdG9yeSBkZXB0aCBpbnB1dCBwcm92aWRlZC5YSW5jb3JyZWN0U2xhc2hpbmdTcGFucwARBLBJbmNvcnJlY3QgbnVtYmVyIG9mIHNsYXNoaW5nIHNwYW5zIHByb3ZpZGVkLiBCYWRTdGF0ZQASBDkBSW50ZXJuYWwgc3RhdGUgaGFzIGJlY29tZSBzb21laG93IGNvcnJ1cHRlZCBhbmQgdGhlIG9wZXJhdGlvbiBjYW5ub3QgY29udGludWUuOFRvb01hbnlUYXJnZXRzABMElFRvbyBtYW55IG5vbWluYXRpb24gdGFyZ2V0cyBzdXBwbGllZC4kQmFkVGFyZ2V0ABQEPQFBIG5vbWluYXRpb24gdGFyZ2V0IHdhcyBzdXBwbGllZCB0aGF0IHdhcyBibG9ja2VkIG9yIG90aGVyd2lzZSBub3QgYSB2YWxpZGF0b3IuQENhbm5vdENoaWxsT3RoZXIAFQRVAVRoZSB1c2VyIGhhcyBlbm91Z2ggYm9uZCBhbmQgdGh1cyBjYW5ub3QgYmUgY2hpbGxlZCBmb3JjZWZ1bGx5IGJ5IGFuIGV4dGVybmFsIHBlcnNvbi5EVG9vTWFueU5vbWluYXRvcnMAFghNAVRoZXJlIGFyZSB0b28gbWFueSBub21pbmF0b3JzIGluIHRoZSBzeXN0ZW0uIEdvdmVybmFuY2UgbmVlZHMgdG8gYWRqdXN0IHRoZSBzdGFraW5ntHNldHRpbmdzIHRvIGtlZXAgdGhpbmdzIHNhZmUgZm9yIHRoZSBydW50aW1lLkRUb29NYW55VmFsaWRhdG9ycwAXCFUBVGhlcmUgYXJlIHRvbyBtYW55IHZhbGlkYXRvciBjYW5kaWRhdGVzIGluIHRoZSBzeXN0ZW0uIEdvdmVybmFuY2UgbmVlZHMgdG8gYWRqdXN0IHRoZdRzdGFraW5nIHNldHRpbmdzIHRvIGtlZXAgdGhpbmdzIHNhZmUgZm9yIHRoZSBydW50aW1lLkBDb21taXNzaW9uVG9vTG93ABgE4ENvbW1pc3Npb24gaXMgdG9vIGxvdy4gTXVzdCBiZSBhdCBsZWFzdCBgTWluQ29tbWlzc2lvbmAuLEJvdW5kTm90TWV0ABkEWFNvbWUgYm91bmQgaXMgbm90IG1ldC5QQ29udHJvbGxlckRlcHJlY2F0ZWQAGgQBAVVzZWQgd2hlbiBhdHRlbXB0aW5nIHRvIHVzZSBkZXByZWNhdGVkIGNvbnRyb2xsZXIgYWNjb3VudCBsb2dpYy5MQ2Fubm90UmVzdG9yZUxlZGdlcgAbBFhDYW5ub3QgcmVzZXQgYSBsZWRnZXIubFJld2FyZERlc3RpbmF0aW9uUmVzdHJpY3RlZAAcBKxQcm92aWRlZCByZXdhcmQgZGVzdGluYXRpb24gaXMgbm90IGFsbG93ZWQuOE5vdEVub3VnaEZ1bmRzAB0EnE5vdCBlbm91Z2ggZnVuZHMgYXZhaWxhYmxlIHRvIHdpdGhkcmF3LlxWaXJ0dWFsU3Rha2VyTm90QWxsb3dlZAAeBKhPcGVyYXRpb24gbm90IGFsbG93ZWQgZm9yIHZpcnR1YWwgc3Rha2Vycy4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuAQkMKHNwX3N0YWtpbmccb2ZmZW5jZThPZmZlbmNlRGV0YWlscwggUmVwb3J0ZXIBACBPZmZlbmRlcgEFCQAIASBvZmZlbmRlcgUJASBPZmZlbmRlcgABJHJlcG9ydGVyc9EBATRWZWM8UmVwb3J0ZXI+AAAFCQAABAgAwQgACQkAAAQIwDgADQkAAAIRCQARCQAABAgAGQIAFQkAAAQIGQk4ABkJDBxzcF9jb3JlGGNyeXB0byRLZXlUeXBlSWQAAAQASAEcW3U4OyA0XQAAHQkMOHBhbGxldF9zZXNzaW9uGHBhbGxldBRFcnJvcgQEVAABFDBJbnZhbGlkUHJvb2YAAARgSW52YWxpZCBvd25lcnNoaXAgcHJvb2YuXE5vQXNzb2NpYXRlZFZhbGlkYXRvcklkAAEEnE5vIGFzc29jaWF0ZWQgdmFsaWRhdG9yIElEIGZvciBhY2NvdW50LjREdXBsaWNhdGVkS2V5AAIEZFJlZ2lzdGVyZWQgZHVwbGljYXRlIGtleS4YTm9LZXlzAAMEpE5vIGtleXMgYXJlIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGFjY291bnQuJE5vQWNjb3VudAAEBBkBS2V5IHNldHRpbmcgYWNjb3VudCBpcyBub3QgbGl2ZSwgc28gaXQncyBpbXBvc3NpYmxlIHRvIGFzc29jaWF0ZSBrZXlzLgR0RXJyb3IgZm9yIHRoZSBzZXNzaW9uIHBhbGxldC4hCQg4cGFsbGV0X2dyYW5kcGEsU3RvcmVkU3RhdGUEBE4BEAEQEExpdmUAAAAwUGVuZGluZ1BhdXNlCAEwc2NoZWR1bGVkX2F0EAEETgABFGRlbGF5EAEETgABABhQYXVzZWQAAgA0UGVuZGluZ1Jlc3VtZQgBMHNjaGVkdWxlZF9hdBABBE4AARRkZWxheRABBE4AAwAAJQkIOHBhbGxldF9ncmFuZHBhTFN0b3JlZFBlbmRpbmdDaGFuZ2UIBE4BEBRMaW1pdAAAEAEwc2NoZWR1bGVkX2F0EAEETgABFGRlbGF5EAEETgABQG5leHRfYXV0aG9yaXRpZXMpCQFsQm91bmRlZEF1dGhvcml0eUxpc3Q8TGltaXQ+AAEYZm9yY2VkYQIBJE9wdGlvbjxOPgAAKQkMTGJvdW5kZWRfY29sbGVjdGlvbnNAd2Vha19ib3VuZGVkX3ZlYzhXZWFrQm91bmRlZFZlYwgEVAHQBFMAAAQAzAEYVmVjPFQ+AAAtCQw4cGFsbGV0X2dyYW5kcGEYcGFsbGV0FEVycm9yBARUAAEcLFBhdXNlRmFpbGVkAAAIBQFBdHRlbXB0IHRvIHNpZ25hbCBHUkFORFBBIHBhdXNlIHdoZW4gdGhlIGF1dGhvcml0eSBzZXQgaXNuJ3QgbGl2ZaQoZWl0aGVyIHBhdXNlZCBvciBhbHJlYWR5IHBlbmRpbmcgcGF1c2UpLjBSZXN1bWVGYWlsZWQAAQgRAUF0dGVtcHQgdG8gc2lnbmFsIEdSQU5EUEEgcmVzdW1lIHdoZW4gdGhlIGF1dGhvcml0eSBzZXQgaXNuJ3QgcGF1c2VkoChlaXRoZXIgbGl2ZSBvciBhbHJlYWR5IHBlbmRpbmcgcmVzdW1lKS40Q2hhbmdlUGVuZGluZwACBOhBdHRlbXB0IHRvIHNpZ25hbCBHUkFORFBBIGNoYW5nZSB3aXRoIG9uZSBhbHJlYWR5IHBlbmRpbmcuHFRvb1Nvb24AAwS8Q2Fubm90IHNpZ25hbCBmb3JjZWQgY2hhbmdlIHNvIHNvb24gYWZ0ZXIgbGFzdC5gSW52YWxpZEtleU93bmVyc2hpcFByb29mAAQEMQFBIGtleSBvd25lcnNoaXAgcHJvb2YgcHJvdmlkZWQgYXMgcGFydCBvZiBhbiBlcXVpdm9jYXRpb24gcmVwb3J0IGlzIGludmFsaWQuYEludmFsaWRFcXVpdm9jYXRpb25Qcm9vZgAFBDEBQW4gZXF1aXZvY2F0aW9uIHByb29mIHByb3ZpZGVkIGFzIHBhcnQgb2YgYW4gZXF1aXZvY2F0aW9uIHJlcG9ydCBpcyBpbnZhbGlkLlhEdXBsaWNhdGVPZmZlbmNlUmVwb3J0AAYEFQFBIGdpdmVuIGVxdWl2b2NhdGlvbiByZXBvcnQgaXMgdmFsaWQgYnV0IGFscmVhZHkgcHJldmlvdXNseSByZXBvcnRlZC4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuMQkMTGJvdW5kZWRfY29sbGVjdGlvbnNAd2Vha19ib3VuZGVkX3ZlYzhXZWFrQm91bmRlZFZlYwgEVAElAgRTAAAEADUJARhWZWM8VD4AADUJAAACJQIAOQkIPHBhbGxldF90cmVhc3VyeSBQcm9wb3NhbAgkQWNjb3VudElkAQAcQmFsYW5jZQEYABABIHByb3Bvc2VyAAEkQWNjb3VudElkAAEUdmFsdWUYARxCYWxhbmNlAAEsYmVuZWZpY2lhcnkAASRBY2NvdW50SWQAARBib25kGAEcQmFsYW5jZQAAPQkMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEQBFMAAAQA5QEBGFZlYzxUPgAAQQkIPHBhbGxldF90cmVhc3VyeSxTcGVuZFN0YXR1cxQkQXNzZXRLaW5kAdwwQXNzZXRCYWxhbmNlARgsQmVuZWZpY2lhcnkBRQEsQmxvY2tOdW1iZXIBECRQYXltZW50SWQBMAAYAShhc3NldF9raW5k3AEkQXNzZXRLaW5kAAEYYW1vdW50GAEwQXNzZXRCYWxhbmNlAAEsYmVuZWZpY2lhcnlFAQEsQmVuZWZpY2lhcnkAASh2YWxpZF9mcm9tEAEsQmxvY2tOdW1iZXIAASRleHBpcmVfYXQQASxCbG9ja051bWJlcgABGHN0YXR1c0UJAVxQYXltZW50U3RhdGU8UGF5bWVudElkPgAARQkIPHBhbGxldF90cmVhc3VyeTBQYXltZW50U3RhdGUECElkATABDBxQZW5kaW5nAAAAJEF0dGVtcHRlZAQBCGlkMAEISWQAAQAYRmFpbGVkAAIAAEkJDDRzcF9hcml0aG1ldGljKHBlcl90aGluZ3McUGVybWlsbAAABAAQAQx1MzIAAE0JCDRmcmFtZV9zdXBwb3J0IFBhbGxldElkAAAEAIUFARxbdTg7IDhdAABRCQw8cGFsbGV0X3RyZWFzdXJ5GHBhbGxldBRFcnJvcggEVAAESQABLDBJbnZhbGlkSW5kZXgAAASsTm8gcHJvcG9zYWwsIGJvdW50eSBvciBzcGVuZCBhdCB0aGF0IGluZGV4LkBUb29NYW55QXBwcm92YWxzAAEEgFRvbyBtYW55IGFwcHJvdmFscyBpbiB0aGUgcXVldWUuWEluc3VmZmljaWVudFBlcm1pc3Npb24AAghFAVRoZSBzcGVuZCBvcmlnaW4gaXMgdmFsaWQgYnV0IHRoZSBhbW91bnQgaXQgaXMgYWxsb3dlZCB0byBzcGVuZCBpcyBsb3dlciB0aGFuIHRoZUxhbW91bnQgdG8gYmUgc3BlbnQuTFByb3Bvc2FsTm90QXBwcm92ZWQAAwR8UHJvcG9zYWwgaGFzIG5vdCBiZWVuIGFwcHJvdmVkLlhGYWlsZWRUb0NvbnZlcnRCYWxhbmNlAAQEUQFUaGUgYmFsYW5jZSBvZiB0aGUgYXNzZXQga2luZCBpcyBub3QgY29udmVydGlibGUgdG8gdGhlIGJhbGFuY2Ugb2YgdGhlIG5hdGl2ZSBhc3NldC4wU3BlbmRFeHBpcmVkAAUEsFRoZSBzcGVuZCBoYXMgZXhwaXJlZCBhbmQgY2Fubm90IGJlIGNsYWltZWQuLEVhcmx5UGF5b3V0AAYEpFRoZSBzcGVuZCBpcyBub3QgeWV0IGVsaWdpYmxlIGZvciBwYXlvdXQuQEFscmVhZHlBdHRlbXB0ZWQABwScVGhlIHBheW1lbnQgaGFzIGFscmVhZHkgYmVlbiBhdHRlbXB0ZWQuLFBheW91dEVycm9yAAgEzFRoZXJlIHdhcyBzb21lIGlzc3VlIHdpdGggdGhlIG1lY2hhbmlzbSBvZiBwYXltZW50LjBOb3RBdHRlbXB0ZWQACQSkVGhlIHBheW91dCB3YXMgbm90IHlldCBhdHRlbXB0ZWQvY2xhaW1lZC4wSW5jb25jbHVzaXZlAAoExFRoZSBwYXltZW50IGhhcyBuZWl0aGVyIGZhaWxlZCBub3Igc3VjY2VlZGVkIHlldC4EeEVycm9yIGZvciB0aGUgdHJlYXN1cnkgcGFsbGV0LlUJAAAECABtAQBZCQxgcGFsbGV0X2NvbnZpY3Rpb25fdm90aW5nEHZvdGUYVm90aW5nFBxCYWxhbmNlARgkQWNjb3VudElkAQAsQmxvY2tOdW1iZXIBECRQb2xsSW5kZXgBECBNYXhWb3RlcwABCBxDYXN0aW5nBABdCQHIQ2FzdGluZzxCYWxhbmNlLCBCbG9ja051bWJlciwgUG9sbEluZGV4LCBNYXhWb3Rlcz4AAAAoRGVsZWdhdGluZwQAdQkBrERlbGVnYXRpbmc8QmFsYW5jZSwgQWNjb3VudElkLCBCbG9ja051bWJlcj4AAQAAXQkMYHBhbGxldF9jb252aWN0aW9uX3ZvdGluZxB2b3RlHENhc3RpbmcQHEJhbGFuY2UBGCxCbG9ja051bWJlcgEQJFBvbGxJbmRleAEQIE1heFZvdGVzAAAMARR2b3Rlc2EJAdxCb3VuZGVkVmVjPChQb2xsSW5kZXgsIEFjY291bnRWb3RlPEJhbGFuY2U+KSwgTWF4Vm90ZXM+AAEsZGVsZWdhdGlvbnNtCQFQRGVsZWdhdGlvbnM8QmFsYW5jZT4AARRwcmlvcnEJAXxQcmlvckxvY2s8QmxvY2tOdW1iZXIsIEJhbGFuY2U+AABhCQxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAWUJBFMAAAQAaQkBGFZlYzxUPgAAZQkAAAQIEGkCAGkJAAACZQkAbQkMYHBhbGxldF9jb252aWN0aW9uX3ZvdGluZxR0eXBlcyxEZWxlZ2F0aW9ucwQcQmFsYW5jZQEYAAgBFHZvdGVzGAEcQmFsYW5jZQABHGNhcGl0YWwYARxCYWxhbmNlAABxCQxgcGFsbGV0X2NvbnZpY3Rpb25fdm90aW5nEHZvdGUkUHJpb3JMb2NrCCxCbG9ja051bWJlcgEQHEJhbGFuY2UBGAAIABABLEJsb2NrTnVtYmVyAAAYARxCYWxhbmNlAAB1CQxgcGFsbGV0X2NvbnZpY3Rpb25fdm90aW5nEHZvdGUoRGVsZWdhdGluZwwcQmFsYW5jZQEYJEFjY291bnRJZAEALEJsb2NrTnVtYmVyARAAFAEcYmFsYW5jZRgBHEJhbGFuY2UAARh0YXJnZXQAASRBY2NvdW50SWQAAShjb252aWN0aW9ucQIBKENvbnZpY3Rpb24AASxkZWxlZ2F0aW9uc20JAVBEZWxlZ2F0aW9uczxCYWxhbmNlPgABFHByaW9ycQkBfFByaW9yTG9jazxCbG9ja051bWJlciwgQmFsYW5jZT4AAHkJDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBfQkEUwAABACBCQEYVmVjPFQ+AAB9CQAABAhtARgAgQkAAAJ9CQCFCQxgcGFsbGV0X2NvbnZpY3Rpb25fdm90aW5nGHBhbGxldBRFcnJvcggEVAAESQABMChOb3RPbmdvaW5nAAAEUFBvbGwgaXMgbm90IG9uZ29pbmcuIE5vdFZvdGVyAAEErFRoZSBnaXZlbiBhY2NvdW50IGRpZCBub3Qgdm90ZSBvbiB0aGUgcG9sbC4wTm9QZXJtaXNzaW9uAAIEyFRoZSBhY3RvciBoYXMgbm8gcGVybWlzc2lvbiB0byBjb25kdWN0IHRoZSBhY3Rpb24uPE5vUGVybWlzc2lvbllldAADBFkBVGhlIGFjdG9yIGhhcyBubyBwZXJtaXNzaW9uIHRvIGNvbmR1Y3QgdGhlIGFjdGlvbiByaWdodCBub3cgYnV0IHdpbGwgZG8gaW4gdGhlIGZ1dHVyZS5EQWxyZWFkeURlbGVnYXRpbmcABASIVGhlIGFjY291bnQgaXMgYWxyZWFkeSBkZWxlZ2F0aW5nLjRBbHJlYWR5Vm90aW5nAAUIVQFUaGUgYWNjb3VudCBjdXJyZW50bHkgaGFzIHZvdGVzIGF0dGFjaGVkIHRvIGl0IGFuZCB0aGUgb3BlcmF0aW9uIGNhbm5vdCBzdWNjZWVkIHVudGlsoHRoZXNlIGFyZSByZW1vdmVkIHRocm91Z2ggYHJlbW92ZV92b3RlYC5ESW5zdWZmaWNpZW50RnVuZHMABgT8VG9vIGhpZ2ggYSBiYWxhbmNlIHdhcyBwcm92aWRlZCB0aGF0IHRoZSBhY2NvdW50IGNhbm5vdCBhZmZvcmQuNE5vdERlbGVnYXRpbmcABwSgVGhlIGFjY291bnQgaXMgbm90IGN1cnJlbnRseSBkZWxlZ2F0aW5nLiBOb25zZW5zZQAIBJREZWxlZ2F0aW9uIHRvIG9uZXNlbGYgbWFrZXMgbm8gc2Vuc2UuPE1heFZvdGVzUmVhY2hlZAAJBIBNYXhpbXVtIG51bWJlciBvZiB2b3RlcyByZWFjaGVkLixDbGFzc05lZWRlZAAKBDkBVGhlIGNsYXNzIG11c3QgYmUgc3VwcGxpZWQgc2luY2UgaXQgaXMgbm90IGVhc2lseSBkZXRlcm1pbmFibGUgZnJvbSB0aGUgc3RhdGUuIEJhZENsYXNzAAsEhFRoZSBjbGFzcyBJRCBzdXBwbGllZCBpcyBpbnZhbGlkLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC6JCQxAcGFsbGV0X3JlZmVyZW5kYRR0eXBlczhSZWZlcmVuZHVtSW5mbyAcVHJhY2tJZAFtATRSdW50aW1lT3JpZ2luAX0CGE1vbWVudAEQEENhbGwBcQEcQmFsYW5jZQEYFFRhbGx5AeEGJEFjY291bnRJZAEAPFNjaGVkdWxlQWRkcmVzcwGAARgcT25nb2luZwQAjQkBjQFSZWZlcmVuZHVtU3RhdHVzPFRyYWNrSWQsIFJ1bnRpbWVPcmlnaW4sIE1vbWVudCwgQ2FsbCwgQmFsYW5jZSwgVGFsbHksCkFjY291bnRJZCwgU2NoZWR1bGVBZGRyZXNzLD4AAAAgQXBwcm92ZWQMABABGE1vbWVudAAAlQkBjE9wdGlvbjxEZXBvc2l0PEFjY291bnRJZCwgQmFsYW5jZT4+AACVCQGMT3B0aW9uPERlcG9zaXQ8QWNjb3VudElkLCBCYWxhbmNlPj4AAQAgUmVqZWN0ZWQMABABGE1vbWVudAAAlQkBjE9wdGlvbjxEZXBvc2l0PEFjY291bnRJZCwgQmFsYW5jZT4+AACVCQGMT3B0aW9uPERlcG9zaXQ8QWNjb3VudElkLCBCYWxhbmNlPj4AAgAkQ2FuY2VsbGVkDAAQARhNb21lbnQAAJUJAYxPcHRpb248RGVwb3NpdDxBY2NvdW50SWQsIEJhbGFuY2U+PgAAlQkBjE9wdGlvbjxEZXBvc2l0PEFjY291bnRJZCwgQmFsYW5jZT4+AAMAIFRpbWVkT3V0DAAQARhNb21lbnQAAJUJAYxPcHRpb248RGVwb3NpdDxBY2NvdW50SWQsIEJhbGFuY2U+PgAAlQkBjE9wdGlvbjxEZXBvc2l0PEFjY291bnRJZCwgQmFsYW5jZT4+AAQAGEtpbGxlZAQAEAEYTW9tZW50AAUAAI0JDEBwYWxsZXRfcmVmZXJlbmRhFHR5cGVzQFJlZmVyZW5kdW1TdGF0dXMgHFRyYWNrSWQBbQE0UnVudGltZU9yaWdpbgF9AhhNb21lbnQBEBBDYWxsAXEBHEJhbGFuY2UBGBRUYWxseQHhBiRBY2NvdW50SWQBADxTY2hlZHVsZUFkZHJlc3MBgAAsARR0cmFja20BARxUcmFja0lkAAEYb3JpZ2lufQIBNFJ1bnRpbWVPcmlnaW4AASBwcm9wb3NhbHEBARBDYWxsAAEkZW5hY3RtZW50mQIBUERpc3BhdGNoVGltZTxNb21lbnQ+AAEkc3VibWl0dGVkEAEYTW9tZW50AAFIc3VibWlzc2lvbl9kZXBvc2l0kQkBbERlcG9zaXQ8QWNjb3VudElkLCBCYWxhbmNlPgABQGRlY2lzaW9uX2RlcG9zaXSVCQGMT3B0aW9uPERlcG9zaXQ8QWNjb3VudElkLCBCYWxhbmNlPj4AASBkZWNpZGluZ5kJAXhPcHRpb248RGVjaWRpbmdTdGF0dXM8TW9tZW50Pj4AARR0YWxseeEGARRUYWxseQABIGluX3F1ZXVlIAEQYm9vbAABFGFsYXJtoQkBhE9wdGlvbjwoTW9tZW50LCBTY2hlZHVsZUFkZHJlc3MpPgAAkQkMQHBhbGxldF9yZWZlcmVuZGEUdHlwZXMcRGVwb3NpdAgkQWNjb3VudElkAQAcQmFsYW5jZQEYAAgBDHdobwABJEFjY291bnRJZAABGGFtb3VudBgBHEJhbGFuY2UAAJUJBBhPcHRpb24EBFQBkQkBCBBOb25lAAAAEFNvbWUEAJEJAAABAACZCQQYT3B0aW9uBARUAZ0JAQgQTm9uZQAAABBTb21lBACdCQAAAQAAnQkMQHBhbGxldF9yZWZlcmVuZGEUdHlwZXM4RGVjaWRpbmdTdGF0dXMELEJsb2NrTnVtYmVyARAACAEUc2luY2UQASxCbG9ja051bWJlcgABKGNvbmZpcm1pbmdhAgFMT3B0aW9uPEJsb2NrTnVtYmVyPgAAoQkEGE9wdGlvbgQEVAGlCQEIEE5vbmUAAAAQU29tZQQApQkAAAEAAKUJAAAECBCAAKkJDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBrQkEUwAABACxCQEYVmVjPFQ+AACtCQAABAgQGACxCQAAAq0JALUJAAACuQkAuQkAAAQIbQG9CQC9CQxAcGFsbGV0X3JlZmVyZW5kYRR0eXBlcyRUcmFja0luZm8IHEJhbGFuY2UBGBhNb21lbnQBEAAkARBuYW1lnQcBMCYnc3RhdGljIHN0cgABMG1heF9kZWNpZGluZxABDHUzMgABQGRlY2lzaW9uX2RlcG9zaXQYARxCYWxhbmNlAAE4cHJlcGFyZV9wZXJpb2QQARhNb21lbnQAATxkZWNpc2lvbl9wZXJpb2QQARhNb21lbnQAAThjb25maXJtX3BlcmlvZBABGE1vbWVudAABUG1pbl9lbmFjdG1lbnRfcGVyaW9kEAEYTW9tZW50AAEwbWluX2FwcHJvdmFswQkBFEN1cnZlAAEsbWluX3N1cHBvcnTBCQEUQ3VydmUAAMEJDEBwYWxsZXRfcmVmZXJlbmRhFHR5cGVzFEN1cnZlAAEMQExpbmVhckRlY3JlYXNpbmcMARhsZW5ndGisARxQZXJiaWxsAAEUZmxvb3KsARxQZXJiaWxsAAEQY2VpbKwBHFBlcmJpbGwAAABEU3RlcHBlZERlY3JlYXNpbmcQARRiZWdpbqwBHFBlcmJpbGwAAQxlbmSsARxQZXJiaWxsAAEQc3RlcKwBHFBlcmJpbGwAARhwZXJpb2SsARxQZXJiaWxsAAEAKFJlY2lwcm9jYWwMARhmYWN0b3LFCQEgRml4ZWRJNjQAASB4X29mZnNldMUJASBGaXhlZEk2NAABIHlfb2Zmc2V0xQkBIEZpeGVkSTY0AAIAAMUJDDRzcF9hcml0aG1ldGljLGZpeGVkX3BvaW50IEZpeGVkSTY0AAAEAMkJAQxpNjQAAMkJAAAFDADNCQxAcGFsbGV0X3JlZmVyZW5kYRhwYWxsZXQURXJyb3IIBFQABEkAATgoTm90T25nb2luZwAABGhSZWZlcmVuZHVtIGlzIG5vdCBvbmdvaW5nLihIYXNEZXBvc2l0AAEEuFJlZmVyZW5kdW0ncyBkZWNpc2lvbiBkZXBvc2l0IGlzIGFscmVhZHkgcGFpZC4gQmFkVHJhY2sAAgScVGhlIHRyYWNrIGlkZW50aWZpZXIgZ2l2ZW4gd2FzIGludmFsaWQuEEZ1bGwAAwQxAVRoZXJlIGFyZSBhbHJlYWR5IGEgZnVsbCBjb21wbGVtZW50IG9mIHJlZmVyZW5kYSBpbiBwcm9ncmVzcyBmb3IgdGhpcyB0cmFjay4oUXVldWVFbXB0eQAEBIBUaGUgcXVldWUgb2YgdGhlIHRyYWNrIGlzIGVtcHR5LjRCYWRSZWZlcmVuZHVtAAUE5FRoZSByZWZlcmVuZHVtIGluZGV4IHByb3ZpZGVkIGlzIGludmFsaWQgaW4gdGhpcyBjb250ZXh0LixOb3RoaW5nVG9EbwAGBKxUaGVyZSB3YXMgbm90aGluZyB0byBkbyBpbiB0aGUgYWR2YW5jZW1lbnQuHE5vVHJhY2sABwSgTm8gdHJhY2sgZXhpc3RzIGZvciB0aGUgcHJvcG9zYWwgb3JpZ2luLihVbmZpbmlzaGVkAAgEAQFBbnkgZGVwb3NpdCBjYW5ub3QgYmUgcmVmdW5kZWQgdW50aWwgYWZ0ZXIgdGhlIGRlY2lzaW9uIGlzIG92ZXIuME5vUGVybWlzc2lvbgAJBKhUaGUgZGVwb3NpdCByZWZ1bmRlciBpcyBub3QgdGhlIGRlcG9zaXRvci4kTm9EZXBvc2l0AAoEzFRoZSBkZXBvc2l0IGNhbm5vdCBiZSByZWZ1bmRlZCBzaW5jZSBub25lIHdhcyBtYWRlLiRCYWRTdGF0dXMACwTQVGhlIHJlZmVyZW5kdW0gc3RhdHVzIGlzIGludmFsaWQgZm9yIHRoaXMgb3BlcmF0aW9uLkBQcmVpbWFnZU5vdEV4aXN0AAwEcFRoZSBwcmVpbWFnZSBkb2VzIG5vdCBleGlzdC6EUHJlaW1hZ2VTdG9yZWRXaXRoRGlmZmVyZW50TGVuZ3RoAA0EFQFUaGUgcHJlaW1hZ2UgaXMgc3RvcmVkIHdpdGggYSBkaWZmZXJlbnQgbGVuZ3RoIHRoYW4gdGhlIG9uZSBwcm92aWRlZC4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQu0QkMQHBhbGxldF93aGl0ZWxpc3QYcGFsbGV0FEVycm9yBARUAAEUTFVuYXZhaWxhYmxlUHJlSW1hZ2UAAATIVGhlIHByZWltYWdlIG9mIHRoZSBjYWxsIGhhc2ggY291bGQgbm90IGJlIGxvYWRlZC48VW5kZWNvZGFibGVDYWxsAAEEeFRoZSBjYWxsIGNvdWxkIG5vdCBiZSBkZWNvZGVkLmBJbnZhbGlkQ2FsbFdlaWdodFdpdG5lc3MAAgTsVGhlIHdlaWdodCBvZiB0aGUgZGVjb2RlZCBjYWxsIHdhcyBoaWdoZXIgdGhhbiB0aGUgd2l0bmVzcy5QQ2FsbElzTm90V2hpdGVsaXN0ZWQAAwR0VGhlIGNhbGwgd2FzIG5vdCB3aGl0ZWxpc3RlZC5YQ2FsbEFscmVhZHlXaGl0ZWxpc3RlZAAEBKBUaGUgY2FsbCB3YXMgYWxyZWFkeSB3aGl0ZWxpc3RlZDsgTm8tT3AuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LtUJEFxwb2xrYWRvdF9ydW50aW1lX2NvbW1vbhhjbGFpbXMYcGFsbGV0FEVycm9yBARUAAEYYEludmFsaWRFdGhlcmV1bVNpZ25hdHVyZQAABGxJbnZhbGlkIEV0aGVyZXVtIHNpZ25hdHVyZS5AU2lnbmVySGFzTm9DbGFpbQABBHhFdGhlcmV1bSBhZGRyZXNzIGhhcyBubyBjbGFpbS5AU2VuZGVySGFzTm9DbGFpbQACBLBBY2NvdW50IElEIHNlbmRpbmcgdHJhbnNhY3Rpb24gaGFzIG5vIGNsYWltLjBQb3RVbmRlcmZsb3cAAwhJAVRoZXJlJ3Mgbm90IGVub3VnaCBpbiB0aGUgcG90IHRvIHBheSBvdXQgc29tZSB1bnZlc3RlZCBhbW91bnQuIEdlbmVyYWxseSBpbXBsaWVzIGEwbG9naWMgZXJyb3IuQEludmFsaWRTdGF0ZW1lbnQABASQQSBuZWVkZWQgc3RhdGVtZW50IHdhcyBub3QgaW5jbHVkZWQuTFZlc3RlZEJhbGFuY2VFeGlzdHMABQSkVGhlIGFjY291bnQgYWxyZWFkeSBoYXMgYSB2ZXN0ZWQgYmFsYW5jZS4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQu2QkMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAHJAgRTAAAEAN0JARhWZWM8VD4AAN0JAAACyQIA4QkIOHBhbGxldF92ZXN0aW5nIFJlbGVhc2VzAAEICFYwAAAACFYxAAEAAOUJDDhwYWxsZXRfdmVzdGluZxhwYWxsZXQURXJyb3IEBFQAARQoTm90VmVzdGluZwAABIRUaGUgYWNjb3VudCBnaXZlbiBpcyBub3QgdmVzdGluZy5UQXRNYXhWZXN0aW5nU2NoZWR1bGVzAAEIJQFUaGUgYWNjb3VudCBhbHJlYWR5IGhhcyBgTWF4VmVzdGluZ1NjaGVkdWxlc2AgY291bnQgb2Ygc2NoZWR1bGVzIGFuZCB0aHVzUQFjYW5ub3QgYWRkIGFub3RoZXIgb25lLiBDb25zaWRlciBtZXJnaW5nIGV4aXN0aW5nIHNjaGVkdWxlcyBpbiBvcmRlciB0byBhZGQgYW5vdGhlci4kQW1vdW50TG93AAIEBQFBbW91bnQgYmVpbmcgdHJhbnNmZXJyZWQgaXMgdG9vIGxvdyB0byBjcmVhdGUgYSB2ZXN0aW5nIHNjaGVkdWxlLmBTY2hlZHVsZUluZGV4T3V0T2ZCb3VuZHMAAwTQQW4gaW5kZXggd2FzIG91dCBvZiBib3VuZHMgb2YgdGhlIHZlc3Rpbmcgc2NoZWR1bGVzLlRJbnZhbGlkU2NoZWR1bGVQYXJhbXMABAQNAUZhaWxlZCB0byBjcmVhdGUgYSBuZXcgc2NoZWR1bGUgYmVjYXVzZSBzb21lIHBhcmFtZXRlciB3YXMgaW52YWxpZC4EdEVycm9yIGZvciB0aGUgdmVzdGluZyBwYWxsZXQu6QkMOHBhbGxldF91dGlsaXR5GHBhbGxldBRFcnJvcgQEVAABBDBUb29NYW55Q2FsbHMAAARcVG9vIG1hbnkgY2FsbHMgYmF0Y2hlZC4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQu7QkAAAQI8QkYAPEJDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQB9QkEUwAABAD5CQEYVmVjPFQ+AAD1CQgwcGFsbGV0X3Byb3h5PFByb3h5RGVmaW5pdGlvbgwkQWNjb3VudElkAQAkUHJveHlUeXBlAd0CLEJsb2NrTnVtYmVyARAADAEgZGVsZWdhdGUAASRBY2NvdW50SWQAAShwcm94eV90eXBl3QIBJFByb3h5VHlwZQABFGRlbGF5EAEsQmxvY2tOdW1iZXIAAPkJAAAC9QkA/QkAAAQIAQoYAAEKDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBBQoEUwAABAAJCgEYVmVjPFQ+AAAFCggwcGFsbGV0X3Byb3h5MEFubm91bmNlbWVudAwkQWNjb3VudElkAQAQSGFzaAE0LEJsb2NrTnVtYmVyARAADAEQcmVhbAABJEFjY291bnRJZAABJGNhbGxfaGFzaDQBEEhhc2gAARhoZWlnaHQQASxCbG9ja051bWJlcgAACQoAAAIFCgANCgwwcGFsbGV0X3Byb3h5GHBhbGxldBRFcnJvcgQEVAABIBxUb29NYW55AAAEIQFUaGVyZSBhcmUgdG9vIG1hbnkgcHJveGllcyByZWdpc3RlcmVkIG9yIHRvbyBtYW55IGFubm91bmNlbWVudHMgcGVuZGluZy4gTm90Rm91bmQAAQR0UHJveHkgcmVnaXN0cmF0aW9uIG5vdCBmb3VuZC4gTm90UHJveHkAAgTMU2VuZGVyIGlzIG5vdCBhIHByb3h5IG9mIHRoZSBhY2NvdW50IHRvIGJlIHByb3hpZWQuLFVucHJveHlhYmxlAAMEIQFBIGNhbGwgd2hpY2ggaXMgaW5jb21wYXRpYmxlIHdpdGggdGhlIHByb3h5IHR5cGUncyBmaWx0ZXIgd2FzIGF0dGVtcHRlZC4kRHVwbGljYXRlAAQEbEFjY291bnQgaXMgYWxyZWFkeSBhIHByb3h5LjBOb1Blcm1pc3Npb24ABQQVAUNhbGwgbWF5IG5vdCBiZSBtYWRlIGJ5IHByb3h5IGJlY2F1c2UgaXQgbWF5IGVzY2FsYXRlIGl0cyBwcml2aWxlZ2VzLixVbmFubm91bmNlZAAGBNBBbm5vdW5jZW1lbnQsIGlmIG1hZGUgYXQgYWxsLCB3YXMgbWFkZSB0b28gcmVjZW50bHkuLE5vU2VsZlByb3h5AAcEZENhbm5vdCBhZGQgc2VsZiBhcyBwcm94eS4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuEQoAAAQIAAQAFQoIPHBhbGxldF9tdWx0aXNpZyBNdWx0aXNpZxAsQmxvY2tOdW1iZXIBEBxCYWxhbmNlARgkQWNjb3VudElkAQAwTWF4QXBwcm92YWxzAAAQARB3aGVu6QIBWFRpbWVwb2ludDxCbG9ja051bWJlcj4AARxkZXBvc2l0GAEcQmFsYW5jZQABJGRlcG9zaXRvcgABJEFjY291bnRJZAABJGFwcHJvdmFscxkKAYxCb3VuZGVkVmVjPEFjY291bnRJZCwgTWF4QXBwcm92YWxzPgAAGQoMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEABFMAAAQA0QEBGFZlYzxUPgAAHQoMPHBhbGxldF9tdWx0aXNpZxhwYWxsZXQURXJyb3IEBFQAAThATWluaW11bVRocmVzaG9sZAAABHxUaHJlc2hvbGQgbXVzdCBiZSAyIG9yIGdyZWF0ZXIuPEFscmVhZHlBcHByb3ZlZAABBKxDYWxsIGlzIGFscmVhZHkgYXBwcm92ZWQgYnkgdGhpcyBzaWduYXRvcnkuRE5vQXBwcm92YWxzTmVlZGVkAAIEnENhbGwgZG9lc24ndCBuZWVkIGFueSAobW9yZSkgYXBwcm92YWxzLkRUb29GZXdTaWduYXRvcmllcwADBKhUaGVyZSBhcmUgdG9vIGZldyBzaWduYXRvcmllcyBpbiB0aGUgbGlzdC5IVG9vTWFueVNpZ25hdG9yaWVzAAQErFRoZXJlIGFyZSB0b28gbWFueSBzaWduYXRvcmllcyBpbiB0aGUgbGlzdC5UU2lnbmF0b3JpZXNPdXRPZk9yZGVyAAUEDQFUaGUgc2lnbmF0b3JpZXMgd2VyZSBwcm92aWRlZCBvdXQgb2Ygb3JkZXI7IHRoZXkgc2hvdWxkIGJlIG9yZGVyZWQuTFNlbmRlckluU2lnbmF0b3JpZXMABgQNAVRoZSBzZW5kZXIgd2FzIGNvbnRhaW5lZCBpbiB0aGUgb3RoZXIgc2lnbmF0b3JpZXM7IGl0IHNob3VsZG4ndCBiZS4gTm90Rm91bmQABwTcTXVsdGlzaWcgb3BlcmF0aW9uIG5vdCBmb3VuZCB3aGVuIGF0dGVtcHRpbmcgdG8gY2FuY2VsLiBOb3RPd25lcgAIBC0BT25seSB0aGUgYWNjb3VudCB0aGF0IG9yaWdpbmFsbHkgY3JlYXRlZCB0aGUgbXVsdGlzaWcgaXMgYWJsZSB0byBjYW5jZWwgaXQuLE5vVGltZXBvaW50AAkEHQFObyB0aW1lcG9pbnQgd2FzIGdpdmVuLCB5ZXQgdGhlIG11bHRpc2lnIG9wZXJhdGlvbiBpcyBhbHJlYWR5IHVuZGVyd2F5LjhXcm9uZ1RpbWVwb2ludAAKBC0BQSBkaWZmZXJlbnQgdGltZXBvaW50IHdhcyBnaXZlbiB0byB0aGUgbXVsdGlzaWcgb3BlcmF0aW9uIHRoYXQgaXMgdW5kZXJ3YXkuTFVuZXhwZWN0ZWRUaW1lcG9pbnQACwT0QSB0aW1lcG9pbnQgd2FzIGdpdmVuLCB5ZXQgbm8gbXVsdGlzaWcgb3BlcmF0aW9uIGlzIHVuZGVyd2F5LjxNYXhXZWlnaHRUb29Mb3cADATQVGhlIG1heGltdW0gd2VpZ2h0IGluZm9ybWF0aW9uIHByb3ZpZGVkIHdhcyB0b28gbG93LjRBbHJlYWR5U3RvcmVkAA0EoFRoZSBkYXRhIHRvIGJlIHN0b3JlZCBpcyBhbHJlYWR5IHN0b3JlZC4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuIQoIPHBhbGxldF9ib3VudGllcxhCb3VudHkMJEFjY291bnRJZAEAHEJhbGFuY2UBGCxCbG9ja051bWJlcgEQABgBIHByb3Bvc2VyAAEkQWNjb3VudElkAAEUdmFsdWUYARxCYWxhbmNlAAEMZmVlGAEcQmFsYW5jZQABPGN1cmF0b3JfZGVwb3NpdBgBHEJhbGFuY2UAARBib25kGAEcQmFsYW5jZQABGHN0YXR1cyUKAZBCb3VudHlTdGF0dXM8QWNjb3VudElkLCBCbG9ja051bWJlcj4AACUKCDxwYWxsZXRfYm91bnRpZXMwQm91bnR5U3RhdHVzCCRBY2NvdW50SWQBACxCbG9ja051bWJlcgEQARggUHJvcG9zZWQAAAAgQXBwcm92ZWQAAQAYRnVuZGVkAAIAPEN1cmF0b3JQcm9wb3NlZAQBHGN1cmF0b3IAASRBY2NvdW50SWQAAwAYQWN0aXZlCAEcY3VyYXRvcgABJEFjY291bnRJZAABKHVwZGF0ZV9kdWUQASxCbG9ja051bWJlcgAEADRQZW5kaW5nUGF5b3V0DAEcY3VyYXRvcgABJEFjY291bnRJZAABLGJlbmVmaWNpYXJ5AAEkQWNjb3VudElkAAEkdW5sb2NrX2F0EAEsQmxvY2tOdW1iZXIABQAAKQoMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEIBFMAAAQAOAEYVmVjPFQ+AAAtCgw8cGFsbGV0X2JvdW50aWVzGHBhbGxldBRFcnJvcggEVAAESQABLHBJbnN1ZmZpY2llbnRQcm9wb3NlcnNCYWxhbmNlAAAEeFByb3Bvc2VyJ3MgYmFsYW5jZSBpcyB0b28gbG93LjBJbnZhbGlkSW5kZXgAAQSQTm8gcHJvcG9zYWwgb3IgYm91bnR5IGF0IHRoYXQgaW5kZXguMFJlYXNvblRvb0JpZwACBIRUaGUgcmVhc29uIGdpdmVuIGlzIGp1c3QgdG9vIGJpZy5AVW5leHBlY3RlZFN0YXR1cwADBIBUaGUgYm91bnR5IHN0YXR1cyBpcyB1bmV4cGVjdGVkLjhSZXF1aXJlQ3VyYXRvcgAEBFxSZXF1aXJlIGJvdW50eSBjdXJhdG9yLjBJbnZhbGlkVmFsdWUABQRUSW52YWxpZCBib3VudHkgdmFsdWUuKEludmFsaWRGZWUABgRMSW52YWxpZCBib3VudHkgZmVlLjRQZW5kaW5nUGF5b3V0AAcIbEEgYm91bnR5IHBheW91dCBpcyBwZW5kaW5nLvhUbyBjYW5jZWwgdGhlIGJvdW50eSwgeW91IG11c3QgdW5hc3NpZ24gYW5kIHNsYXNoIHRoZSBjdXJhdG9yLiRQcmVtYXR1cmUACARFAVRoZSBib3VudGllcyBjYW5ub3QgYmUgY2xhaW1lZC9jbG9zZWQgYmVjYXVzZSBpdCdzIHN0aWxsIGluIHRoZSBjb3VudGRvd24gcGVyaW9kLlBIYXNBY3RpdmVDaGlsZEJvdW50eQAJBAUBVGhlIGJvdW50eSBjYW5ub3QgYmUgY2xvc2VkIGJlY2F1c2UgaXQgaGFzIGFjdGl2ZSBjaGlsZCBib3VudGllcy40VG9vTWFueVF1ZXVlZAAKBJhUb28gbWFueSBhcHByb3ZhbHMgYXJlIGFscmVhZHkgcXVldWVkLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC4xCghUcGFsbGV0X2NoaWxkX2JvdW50aWVzLENoaWxkQm91bnR5DCRBY2NvdW50SWQBABxCYWxhbmNlARgsQmxvY2tOdW1iZXIBEAAUATRwYXJlbnRfYm91bnR5EAEsQm91bnR5SW5kZXgAARR2YWx1ZRgBHEJhbGFuY2UAAQxmZWUYARxCYWxhbmNlAAE8Y3VyYXRvcl9kZXBvc2l0GAEcQmFsYW5jZQABGHN0YXR1czUKAaRDaGlsZEJvdW50eVN0YXR1czxBY2NvdW50SWQsIEJsb2NrTnVtYmVyPgAANQoIVHBhbGxldF9jaGlsZF9ib3VudGllc0RDaGlsZEJvdW50eVN0YXR1cwgkQWNjb3VudElkAQAsQmxvY2tOdW1iZXIBEAEQFEFkZGVkAAAAPEN1cmF0b3JQcm9wb3NlZAQBHGN1cmF0b3IAASRBY2NvdW50SWQAAQAYQWN0aXZlBAEcY3VyYXRvcgABJEFjY291bnRJZAACADRQZW5kaW5nUGF5b3V0DAEcY3VyYXRvcgABJEFjY291bnRJZAABLGJlbmVmaWNpYXJ5AAEkQWNjb3VudElkAAEkdW5sb2NrX2F0EAEsQmxvY2tOdW1iZXIAAwAAOQoMVHBhbGxldF9jaGlsZF9ib3VudGllcxhwYWxsZXQURXJyb3IEBFQAAQxUUGFyZW50Qm91bnR5Tm90QWN0aXZlAAAEpFRoZSBwYXJlbnQgYm91bnR5IGlzIG5vdCBpbiBhY3RpdmUgc3RhdGUuZEluc3VmZmljaWVudEJvdW50eUJhbGFuY2UAAQTkVGhlIGJvdW50eSBiYWxhbmNlIGlzIG5vdCBlbm91Z2ggdG8gYWRkIG5ldyBjaGlsZC1ib3VudHkuUFRvb01hbnlDaGlsZEJvdW50aWVzAAIEDQFOdW1iZXIgb2YgY2hpbGQgYm91bnRpZXMgZXhjZWVkcyBsaW1pdCBgTWF4QWN0aXZlQ2hpbGRCb3VudHlDb3VudGAuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0Lj0KCJBwYWxsZXRfZWxlY3Rpb25fcHJvdmlkZXJfbXVsdGlfcGhhc2U0UmVhZHlTb2x1dGlvbggkQWNjb3VudElkAChNYXhXaW5uZXJzAAAMASBzdXBwb3J0c0EKAZhCb3VuZGVkU3VwcG9ydHM8QWNjb3VudElkLCBNYXhXaW5uZXJzPgABFHNjb3JlyQMBNEVsZWN0aW9uU2NvcmUAARxjb21wdXRlGQcBPEVsZWN0aW9uQ29tcHV0ZQAAQQoMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAHZAwRTAAAEANUDARhWZWM8VD4AAEUKCJBwYWxsZXRfZWxlY3Rpb25fcHJvdmlkZXJfbXVsdGlfcGhhc2U0Um91bmRTbmFwc2hvdAgkQWNjb3VudElkAQAwRGF0YVByb3ZpZGVyAUkKAAgBGHZvdGVyc00KAURWZWM8RGF0YVByb3ZpZGVyPgABHHRhcmdldHPRAQE4VmVjPEFjY291bnRJZD4AAEkKAAAEDAAwsQgATQoAAAJJCgBRCgxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAVUKBFMAAAQAWQoBGFZlYzxUPgAAVQoAAAQMyQMQEABZCgAAAlUKAF0KDJBwYWxsZXRfZWxlY3Rpb25fcHJvdmlkZXJfbXVsdGlfcGhhc2UYc2lnbmVkQFNpZ25lZFN1Ym1pc3Npb24MJEFjY291bnRJZAEAHEJhbGFuY2UBGCBTb2x1dGlvbgH9AgAQAQx3aG8AASRBY2NvdW50SWQAARxkZXBvc2l0GAEcQmFsYW5jZQABMHJhd19zb2x1dGlvbvkCAVRSYXdTb2x1dGlvbjxTb2x1dGlvbj4AASBjYWxsX2ZlZRgBHEJhbGFuY2UAAGEKDJBwYWxsZXRfZWxlY3Rpb25fcHJvdmlkZXJfbXVsdGlfcGhhc2UYcGFsbGV0FEVycm9yBARUAAE8aFByZURpc3BhdGNoRWFybHlTdWJtaXNzaW9uAAAEZFN1Ym1pc3Npb24gd2FzIHRvbyBlYXJseS5sUHJlRGlzcGF0Y2hXcm9uZ1dpbm5lckNvdW50AAEEiFdyb25nIG51bWJlciBvZiB3aW5uZXJzIHByZXNlbnRlZC5kUHJlRGlzcGF0Y2hXZWFrU3VibWlzc2lvbgACBJBTdWJtaXNzaW9uIHdhcyB0b28gd2Vhaywgc2NvcmUtd2lzZS48U2lnbmVkUXVldWVGdWxsAAMESQFUaGUgcXVldWUgd2FzIGZ1bGwsIGFuZCB0aGUgc29sdXRpb24gd2FzIG5vdCBiZXR0ZXIgdGhhbiBhbnkgb2YgdGhlIGV4aXN0aW5nIG9uZXMuWFNpZ25lZENhbm5vdFBheURlcG9zaXQABASUVGhlIG9yaWdpbiBmYWlsZWQgdG8gcGF5IHRoZSBkZXBvc2l0LlBTaWduZWRJbnZhbGlkV2l0bmVzcwAFBKBXaXRuZXNzIGRhdGEgdG8gZGlzcGF0Y2hhYmxlIGlzIGludmFsaWQuTFNpZ25lZFRvb011Y2hXZWlnaHQABgS4VGhlIHNpZ25lZCBzdWJtaXNzaW9uIGNvbnN1bWVzIHRvbyBtdWNoIHdlaWdodDxPY3dDYWxsV3JvbmdFcmEABwSYT0NXIHN1Ym1pdHRlZCBzb2x1dGlvbiBmb3Igd3Jvbmcgcm91bmRcTWlzc2luZ1NuYXBzaG90TWV0YWRhdGEACASoU25hcHNob3QgbWV0YWRhdGEgc2hvdWxkIGV4aXN0IGJ1dCBkaWRuJ3QuWEludmFsaWRTdWJtaXNzaW9uSW5kZXgACQTQYFNlbGY6Omluc2VydF9zdWJtaXNzaW9uYCByZXR1cm5lZCBhbiBpbnZhbGlkIGluZGV4LjhDYWxsTm90QWxsb3dlZAAKBJhUaGUgY2FsbCBpcyBub3QgYWxsb3dlZCBhdCB0aGlzIHBvaW50LjhGYWxsYmFja0ZhaWxlZAALBExUaGUgZmFsbGJhY2sgZmFpbGVkLEJvdW5kTm90TWV0AAwESFNvbWUgYm91bmQgbm90IG1ldDhUb29NYW55V2lubmVycwANBJxTdWJtaXR0ZWQgc29sdXRpb24gaGFzIHRvbyBtYW55IHdpbm5lcnNkUHJlRGlzcGF0Y2hEaWZmZXJlbnRSb3VuZAAOBLhTdWJtaXNzaW9uIHdhcyBwcmVwYXJlZCBmb3IgYSBkaWZmZXJlbnQgcm91bmQuBA0BRXJyb3Igb2YgdGhlIHBhbGxldCB0aGF0IGNhbiBiZSByZXR1cm5lZCBpbiByZXNwb25zZSB0byBkaXNwYXRjaGVzLmUKDEBwYWxsZXRfYmFnc19saXN0EGxpc3QQTm9kZQgEVAAESQAAFAEIaWQAATBUOjpBY2NvdW50SWQAARBwcmV2/QEBUE9wdGlvbjxUOjpBY2NvdW50SWQ+AAEQbmV4dP0BAVBPcHRpb248VDo6QWNjb3VudElkPgABJGJhZ191cHBlcjABIFQ6OlNjb3JlAAEUc2NvcmUwASBUOjpTY29yZQAAaQoMQHBhbGxldF9iYWdzX2xpc3QQbGlzdAxCYWcIBFQABEkAAAgBEGhlYWT9AQFQT3B0aW9uPFQ6OkFjY291bnRJZD4AARB0YWls/QEBUE9wdGlvbjxUOjpBY2NvdW50SWQ+AABtCgAAAjAAcQoMQHBhbGxldF9iYWdzX2xpc3QYcGFsbGV0FEVycm9yCARUAARJAAEEEExpc3QEAHUKASRMaXN0RXJyb3IAAAS0QSBlcnJvciBpbiB0aGUgbGlzdCBpbnRlcmZhY2UgaW1wbGVtZW50YXRpb24uBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LnUKDEBwYWxsZXRfYmFnc19saXN0EGxpc3QkTGlzdEVycm9yAAEQJER1cGxpY2F0ZQAAAChOb3RIZWF2aWVyAAEAME5vdEluU2FtZUJhZwACADBOb2RlTm90Rm91bmQAAwAAeQoIXHBhbGxldF9ub21pbmF0aW9uX3Bvb2xzKFBvb2xNZW1iZXIEBFQAABABHHBvb2xfaWQQARhQb29sSWQAARhwb2ludHMYATBCYWxhbmNlT2Y8VD4AAXBsYXN0X3JlY29yZGVkX3Jld2FyZF9jb3VudGVypQYBQFQ6OlJld2FyZENvdW50ZXIAATh1bmJvbmRpbmdfZXJhc30KAeBCb3VuZGVkQlRyZWVNYXA8RXJhSW5kZXgsIEJhbGFuY2VPZjxUPiwgVDo6TWF4VW5ib25kaW5nPgAAfQoMTGJvdW5kZWRfY29sbGVjdGlvbnNEYm91bmRlZF9idHJlZV9tYXA8Qm91bmRlZEJUcmVlTWFwDARLARAEVgEYBFMAAAQAgQoBOEJUcmVlTWFwPEssIFY+AACBCgQgQlRyZWVNYXAIBEsBEARWARgABACxCQAAAIUKCFxwYWxsZXRfbm9taW5hdGlvbl9wb29sczxCb25kZWRQb29sSW5uZXIEBFQAABQBKGNvbW1pc3Npb26JCgE0Q29tbWlzc2lvbjxUPgABOG1lbWJlcl9jb3VudGVyEAEMdTMyAAEYcG9pbnRzGAEwQmFsYW5jZU9mPFQ+AAEUcm9sZXOVCgFcUG9vbFJvbGVzPFQ6OkFjY291bnRJZD4AARRzdGF0ZfUDASRQb29sU3RhdGUAAIkKCFxwYWxsZXRfbm9taW5hdGlvbl9wb29scyhDb21taXNzaW9uBARUAAAUARxjdXJyZW50DQQBfE9wdGlvbjwoUGVyYmlsbCwgVDo6QWNjb3VudElkKT4AAQxtYXiNCgE8T3B0aW9uPFBlcmJpbGw+AAEsY2hhbmdlX3JhdGWRCgG8T3B0aW9uPENvbW1pc3Npb25DaGFuZ2VSYXRlPEJsb2NrTnVtYmVyRm9yPFQ+Pj4AATR0aHJvdHRsZV9mcm9tYQIBZE9wdGlvbjxCbG9ja051bWJlckZvcjxUPj4AAUBjbGFpbV9wZXJtaXNzaW9uGQQBvE9wdGlvbjxDb21taXNzaW9uQ2xhaW1QZXJtaXNzaW9uPFQ6OkFjY291bnRJZD4+AACNCgQYT3B0aW9uBARUAawBCBBOb25lAAAAEFNvbWUEAKwAAAEAAJEKBBhPcHRpb24EBFQBFQQBCBBOb25lAAAAEFNvbWUEABUEAAABAACVCghccGFsbGV0X25vbWluYXRpb25fcG9vbHMkUG9vbFJvbGVzBCRBY2NvdW50SWQBAAAQASRkZXBvc2l0b3IAASRBY2NvdW50SWQAARByb290/QEBRE9wdGlvbjxBY2NvdW50SWQ+AAEkbm9taW5hdG9y/QEBRE9wdGlvbjxBY2NvdW50SWQ+AAEcYm91bmNlcv0BAURPcHRpb248QWNjb3VudElkPgAAmQoIXHBhbGxldF9ub21pbmF0aW9uX3Bvb2xzKFJld2FyZFBvb2wEBFQAABQBcGxhc3RfcmVjb3JkZWRfcmV3YXJkX2NvdW50ZXKlBgFAVDo6UmV3YXJkQ291bnRlcgABbGxhc3RfcmVjb3JkZWRfdG90YWxfcGF5b3V0cxgBMEJhbGFuY2VPZjxUPgABVHRvdGFsX3Jld2FyZHNfY2xhaW1lZBgBMEJhbGFuY2VPZjxUPgABYHRvdGFsX2NvbW1pc3Npb25fcGVuZGluZxgBMEJhbGFuY2VPZjxUPgABYHRvdGFsX2NvbW1pc3Npb25fY2xhaW1lZBgBMEJhbGFuY2VPZjxUPgAAnQoIXHBhbGxldF9ub21pbmF0aW9uX3Bvb2xzIFN1YlBvb2xzBARUAAAIARhub19lcmGhCgE0VW5ib25kUG9vbDxUPgABIHdpdGhfZXJhpQoBAQFCb3VuZGVkQlRyZWVNYXA8RXJhSW5kZXgsIFVuYm9uZFBvb2w8VD4sIFRvdGFsVW5ib25kaW5nUG9vbHM8VD4+AAChCghccGFsbGV0X25vbWluYXRpb25fcG9vbHMoVW5ib25kUG9vbAQEVAAACAEYcG9pbnRzGAEwQmFsYW5jZU9mPFQ+AAEcYmFsYW5jZRgBMEJhbGFuY2VPZjxUPgAApQoMTGJvdW5kZWRfY29sbGVjdGlvbnNEYm91bmRlZF9idHJlZV9tYXA8Qm91bmRlZEJUcmVlTWFwDARLARAEVgGhCgRTAAAEAKkKAThCVHJlZU1hcDxLLCBWPgAAqQoEIEJUcmVlTWFwCARLARAEVgGhCgAEAK0KAAAArQoAAAKxCgCxCgAABAgQoQoAtQoMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEIBFMAAAQAOAEYVmVjPFQ+AAC5CgxccGFsbGV0X25vbWluYXRpb25fcG9vbHMYcGFsbGV0FEVycm9yBARUAAGQMFBvb2xOb3RGb3VuZAAABIhBIChib25kZWQpIHBvb2wgaWQgZG9lcyBub3QgZXhpc3QuSFBvb2xNZW1iZXJOb3RGb3VuZAABBGxBbiBhY2NvdW50IGlzIG5vdCBhIG1lbWJlci5IUmV3YXJkUG9vbE5vdEZvdW5kAAIEIQFBIHJld2FyZCBwb29sIGRvZXMgbm90IGV4aXN0LiBJbiBhbGwgY2FzZXMgdGhpcyBpcyBhIHN5c3RlbSBsb2dpYyBlcnJvci5AU3ViUG9vbHNOb3RGb3VuZAADBGhBIHN1YiBwb29sIGRvZXMgbm90IGV4aXN0LmRBY2NvdW50QmVsb25nc1RvT3RoZXJQb29sAAQITQFBbiBhY2NvdW50IGlzIGFscmVhZHkgZGVsZWdhdGluZyBpbiBhbm90aGVyIHBvb2wuIEFuIGFjY291bnQgbWF5IG9ubHkgYmVsb25nIHRvIG9uZTxwb29sIGF0IGEgdGltZS44RnVsbHlVbmJvbmRpbmcABQg9AVRoZSBtZW1iZXIgaXMgZnVsbHkgdW5ib25kZWQgKGFuZCB0aHVzIGNhbm5vdCBhY2Nlc3MgdGhlIGJvbmRlZCBhbmQgcmV3YXJkIHBvb2yoYW55bW9yZSB0bywgZm9yIGV4YW1wbGUsIGNvbGxlY3QgcmV3YXJkcykuRE1heFVuYm9uZGluZ0xpbWl0AAYECQFUaGUgbWVtYmVyIGNhbm5vdCB1bmJvbmQgZnVydGhlciBjaHVua3MgZHVlIHRvIHJlYWNoaW5nIHRoZSBsaW1pdC5EQ2Fubm90V2l0aGRyYXdBbnkABwRNAU5vbmUgb2YgdGhlIGZ1bmRzIGNhbiBiZSB3aXRoZHJhd24geWV0IGJlY2F1c2UgdGhlIGJvbmRpbmcgZHVyYXRpb24gaGFzIG5vdCBwYXNzZWQuRE1pbmltdW1Cb25kTm90TWV0AAgUKQFUaGUgYW1vdW50IGRvZXMgbm90IG1lZXQgdGhlIG1pbmltdW0gYm9uZCB0byBlaXRoZXIgam9pbiBvciBjcmVhdGUgYSBwb29sLgBVAVRoZSBkZXBvc2l0b3IgY2FuIG5ldmVyIHVuYm9uZCB0byBhIHZhbHVlIGxlc3MgdGhhbiBgUGFsbGV0OjpkZXBvc2l0b3JfbWluX2JvbmRgLiBUaGVdAWNhbGxlciBkb2VzIG5vdCBoYXZlIG5vbWluYXRpbmcgcGVybWlzc2lvbnMgZm9yIHRoZSBwb29sLiBNZW1iZXJzIGNhbiBuZXZlciB1bmJvbmQgdG8gYWh2YWx1ZSBiZWxvdyBgTWluSm9pbkJvbmRgLjBPdmVyZmxvd1Jpc2sACQQhAVRoZSB0cmFuc2FjdGlvbiBjb3VsZCBub3QgYmUgZXhlY3V0ZWQgZHVlIHRvIG92ZXJmbG93IHJpc2sgZm9yIHRoZSBwb29sLjROb3REZXN0cm95aW5nAAoIXQFBIHBvb2wgbXVzdCBiZSBpbiBbYFBvb2xTdGF0ZTo6RGVzdHJveWluZ2BdIGluIG9yZGVyIGZvciB0aGUgZGVwb3NpdG9yIHRvIHVuYm9uZCBvciBmb3K4b3RoZXIgbWVtYmVycyB0byBiZSBwZXJtaXNzaW9ubGVzc2x5IHVuYm9uZGVkLjBOb3ROb21pbmF0b3IACwT0VGhlIGNhbGxlciBkb2VzIG5vdCBoYXZlIG5vbWluYXRpbmcgcGVybWlzc2lvbnMgZm9yIHRoZSBwb29sLlROb3RLaWNrZXJPckRlc3Ryb3lpbmcADAQ9AUVpdGhlciBhKSB0aGUgY2FsbGVyIGNhbm5vdCBtYWtlIGEgdmFsaWQga2ljayBvciBiKSB0aGUgcG9vbCBpcyBub3QgZGVzdHJveWluZy4cTm90T3BlbgANBHBUaGUgcG9vbCBpcyBub3Qgb3BlbiB0byBqb2luIE1heFBvb2xzAA4EhFRoZSBzeXN0ZW0gaXMgbWF4ZWQgb3V0IG9uIHBvb2xzLjhNYXhQb29sTWVtYmVycwAPBJxUb28gbWFueSBtZW1iZXJzIGluIHRoZSBwb29sIG9yIHN5c3RlbS5EQ2FuTm90Q2hhbmdlU3RhdGUAEASIVGhlIHBvb2xzIHN0YXRlIGNhbm5vdCBiZSBjaGFuZ2VkLlREb2VzTm90SGF2ZVBlcm1pc3Npb24AEQS4VGhlIGNhbGxlciBkb2VzIG5vdCBoYXZlIGFkZXF1YXRlIHBlcm1pc3Npb25zLlRNZXRhZGF0YUV4Y2VlZHNNYXhMZW4AEgSsTWV0YWRhdGEgZXhjZWVkcyBbYENvbmZpZzo6TWF4TWV0YWRhdGFMZW5gXSREZWZlbnNpdmUEAL0KAThEZWZlbnNpdmVFcnJvcgATCDEBU29tZSBlcnJvciBvY2N1cnJlZCB0aGF0IHNob3VsZCBuZXZlciBoYXBwZW4uIFRoaXMgc2hvdWxkIGJlIHJlcG9ydGVkIHRvIHRoZTBtYWludGFpbmVycy6cUGFydGlhbFVuYm9uZE5vdEFsbG93ZWRQZXJtaXNzaW9ubGVzc2x5ABQEvFBhcnRpYWwgdW5ib25kaW5nIG5vdyBhbGxvd2VkIHBlcm1pc3Npb25sZXNzbHkuXE1heENvbW1pc3Npb25SZXN0cmljdGVkABUEHQFUaGUgcG9vbCdzIG1heCBjb21taXNzaW9uIGNhbm5vdCBiZSBzZXQgaGlnaGVyIHRoYW4gdGhlIGV4aXN0aW5nIHZhbHVlLmBDb21taXNzaW9uRXhjZWVkc01heGltdW0AFgTsVGhlIHN1cHBsaWVkIGNvbW1pc3Npb24gZXhjZWVkcyB0aGUgbWF4IGFsbG93ZWQgY29tbWlzc2lvbi54Q29tbWlzc2lvbkV4Y2VlZHNHbG9iYWxNYXhpbXVtABcE6FRoZSBzdXBwbGllZCBjb21taXNzaW9uIGV4Y2VlZHMgZ2xvYmFsIG1heGltdW0gY29tbWlzc2lvbi5kQ29tbWlzc2lvbkNoYW5nZVRocm90dGxlZAAYBAkBTm90IGVub3VnaCBibG9ja3MgaGF2ZSBzdXJwYXNzZWQgc2luY2UgdGhlIGxhc3QgY29tbWlzc2lvbiB1cGRhdGUueENvbW1pc3Npb25DaGFuZ2VSYXRlTm90QWxsb3dlZAAZBAEBVGhlIHN1Ym1pdHRlZCBjaGFuZ2VzIHRvIGNvbW1pc3Npb24gY2hhbmdlIHJhdGUgYXJlIG5vdCBhbGxvd2VkLkxOb1BlbmRpbmdDb21taXNzaW9uABoEoFRoZXJlIGlzIG5vIHBlbmRpbmcgY29tbWlzc2lvbiB0byBjbGFpbS5YTm9Db21taXNzaW9uQ3VycmVudFNldAAbBIxObyBjb21taXNzaW9uIGN1cnJlbnQgaGFzIGJlZW4gc2V0LixQb29sSWRJblVzZQAcBGRQb29sIGlkIGN1cnJlbnRseSBpbiB1c2UuNEludmFsaWRQb29sSWQAHQScUG9vbCBpZCBwcm92aWRlZCBpcyBub3QgY29ycmVjdC91c2FibGUuTEJvbmRFeHRyYVJlc3RyaWN0ZWQAHgT8Qm9uZGluZyBleHRyYSBpcyByZXN0cmljdGVkIHRvIHRoZSBleGFjdCBwZW5kaW5nIHJld2FyZCBhbW91bnQuPE5vdGhpbmdUb0FkanVzdAAfBLBObyBpbWJhbGFuY2UgaW4gdGhlIEVEIGRlcG9zaXQgZm9yIHRoZSBwb29sLjhOb3RoaW5nVG9TbGFzaAAgBMxObyBzbGFzaCBwZW5kaW5nIHRoYXQgY2FuIGJlIGFwcGxpZWQgdG8gdGhlIG1lbWJlci48QWxyZWFkeU1pZ3JhdGVkACEEFQFUaGUgcG9vbCBvciBtZW1iZXIgZGVsZWdhdGlvbiBoYXMgYWxyZWFkeSBtaWdyYXRlZCB0byBkZWxlZ2F0ZSBzdGFrZS4sTm90TWlncmF0ZWQAIgQVAVRoZSBwb29sIG9yIG1lbWJlciBkZWxlZ2F0aW9uIGhhcyBub3QgbWlncmF0ZWQgeWV0IHRvIGRlbGVnYXRlIHN0YWtlLjBOb3RTdXBwb3J0ZWQAIwTwVGhpcyBjYWxsIGlzIG5vdCBhbGxvd2VkIGluIHRoZSBjdXJyZW50IHN0YXRlIG9mIHRoZSBwYWxsZXQuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0Lr0KDFxwYWxsZXRfbm9taW5hdGlvbl9wb29scxhwYWxsZXQ4RGVmZW5zaXZlRXJyb3IAARxoTm90RW5vdWdoU3BhY2VJblVuYm9uZFBvb2wAAAAwUG9vbE5vdEZvdW5kAAEASFJld2FyZFBvb2xOb3RGb3VuZAACAEBTdWJQb29sc05vdEZvdW5kAAMAcEJvbmRlZFN0YXNoS2lsbGVkUHJlbWF0dXJlbHkABABURGVsZWdhdGlvblVuc3VwcG9ydGVkAAUAPFNsYXNoTm90QXBwbGllZAAGAADBCgxMcGFsbGV0X2Zhc3RfdW5zdGFrZRR0eXBlczhVbnN0YWtlUmVxdWVzdAQEVAAACAEcc3Rhc2hlc8UKAdhCb3VuZGVkVmVjPChUOjpBY2NvdW50SWQsIEJhbGFuY2VPZjxUPiksIFQ6OkJhdGNoU2l6ZT4AARxjaGVja2VkyQoBkEJvdW5kZWRWZWM8RXJhSW5kZXgsIE1heENoZWNraW5nPFQ+PgAAxQoMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAHlAwRTAAAEAOEDARhWZWM8VD4AAMkKDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBEARTAAAEAOUBARhWZWM8VD4AAM0KDExwYWxsZXRfZmFzdF91bnN0YWtlGHBhbGxldBRFcnJvcgQEVAABGDROb3RDb250cm9sbGVyAAAMuFRoZSBwcm92aWRlZCBDb250cm9sbGVyIGFjY291bnQgd2FzIG5vdCBmb3VuZC4AwFRoaXMgbWVhbnMgdGhhdCB0aGUgZ2l2ZW4gYWNjb3VudCBpcyBub3QgYm9uZGVkLjRBbHJlYWR5UXVldWVkAAEErFRoZSBib25kZWQgYWNjb3VudCBoYXMgYWxyZWFkeSBiZWVuIHF1ZXVlZC44Tm90RnVsbHlCb25kZWQAAgS8VGhlIGJvbmRlZCBhY2NvdW50IGhhcyBhY3RpdmUgdW5sb2NraW5nIGNodW5rcy4kTm90UXVldWVkAAMEtFRoZSBwcm92aWRlZCB1bi1zdGFrZXIgaXMgbm90IGluIHRoZSBgUXVldWVgLixBbHJlYWR5SGVhZAAEBAUBVGhlIHByb3ZpZGVkIHVuLXN0YWtlciBpcyBhbHJlYWR5IGluIEhlYWQsIGFuZCBjYW5ub3QgZGVyZWdpc3Rlci44Q2FsbE5vdEFsbG93ZWQABQQdAVRoZSBjYWxsIGlzIG5vdCBhbGxvd2VkIGF0IHRoaXMgcG9pbnQgYmVjYXVzZSB0aGUgcGFsbGV0IGlzIG5vdCBhY3RpdmUuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LtEKDGxwb2xrYWRvdF9ydW50aW1lX3BhcmFjaGFpbnM0Y29uZmlndXJhdGlvbkRIb3N0Q29uZmlndXJhdGlvbgQsQmxvY2tOdW1iZXIBEACMATRtYXhfY29kZV9zaXplEAEMdTMyAAFIbWF4X2hlYWRfZGF0YV9zaXplEAEMdTMyAAFYbWF4X3Vwd2FyZF9xdWV1ZV9jb3VudBABDHUzMgABVG1heF91cHdhcmRfcXVldWVfc2l6ZRABDHUzMgABXG1heF91cHdhcmRfbWVzc2FnZV9zaXplEAEMdTMyAAGQbWF4X3Vwd2FyZF9tZXNzYWdlX251bV9wZXJfY2FuZGlkYXRlEAEMdTMyAAGIaHJtcF9tYXhfbWVzc2FnZV9udW1fcGVyX2NhbmRpZGF0ZRABDHUzMgABbHZhbGlkYXRpb25fdXBncmFkZV9jb29sZG93bhABLEJsb2NrTnVtYmVyAAFgdmFsaWRhdGlvbl91cGdyYWRlX2RlbGF5EAEsQmxvY2tOdW1iZXIAAVBhc3luY19iYWNraW5nX3BhcmFtcykEAUhBc3luY0JhY2tpbmdQYXJhbXMAATBtYXhfcG92X3NpemUQAQx1MzIAAWRtYXhfZG93bndhcmRfbWVzc2FnZV9zaXplEAEMdTMyAAGQaHJtcF9tYXhfcGFyYWNoYWluX291dGJvdW5kX2NoYW5uZWxzEAEMdTMyAAFMaHJtcF9zZW5kZXJfZGVwb3NpdBgBHEJhbGFuY2UAAVhocm1wX3JlY2lwaWVudF9kZXBvc2l0GAEcQmFsYW5jZQABZGhybXBfY2hhbm5lbF9tYXhfY2FwYWNpdHkQAQx1MzIAAWxocm1wX2NoYW5uZWxfbWF4X3RvdGFsX3NpemUQAQx1MzIAAYxocm1wX21heF9wYXJhY2hhaW5faW5ib3VuZF9jaGFubmVscxABDHUzMgABdGhybXBfY2hhbm5lbF9tYXhfbWVzc2FnZV9zaXplEAEMdTMyAAE8ZXhlY3V0b3JfcGFyYW1zLQQBOEV4ZWN1dG9yUGFyYW1zAAFUY29kZV9yZXRlbnRpb25fcGVyaW9kEAEsQmxvY2tOdW1iZXIAAThtYXhfdmFsaWRhdG9yc2ECASxPcHRpb248dTMyPgABOGRpc3B1dGVfcGVyaW9kEAEwU2Vzc2lvbkluZGV4AAGkZGlzcHV0ZV9wb3N0X2NvbmNsdXNpb25fYWNjZXB0YW5jZV9wZXJpb2QQASxCbG9ja051bWJlcgABNG5vX3Nob3dfc2xvdHMQAQx1MzIAAUBuX2RlbGF5X3RyYW5jaGVzEAEMdTMyAAFoemVyb3RoX2RlbGF5X3RyYW5jaGVfd2lkdGgQAQx1MzIAAUBuZWVkZWRfYXBwcm92YWxzEAEMdTMyAAFgcmVsYXlfdnJmX21vZHVsb19zYW1wbGVzEAEMdTMyAAE4cHZmX3ZvdGluZ190dGwQATBTZXNzaW9uSW5kZXgAAYBtaW5pbXVtX3ZhbGlkYXRpb25fdXBncmFkZV9kZWxheRABLEJsb2NrTnVtYmVyAAFUbWluaW11bV9iYWNraW5nX3ZvdGVzEAEMdTMyAAE0bm9kZV9mZWF0dXJlc2UEATBOb2RlRmVhdHVyZXMAAVhhcHByb3ZhbF92b3RpbmdfcGFyYW1zQQQBUEFwcHJvdmFsVm90aW5nUGFyYW1zAAFAc2NoZWR1bGVyX3BhcmFtc0UEAXBTY2hlZHVsZXJQYXJhbXM8QmxvY2tOdW1iZXI+AADVCgAAAtkKANkKAAAECBDRCgDdChBscG9sa2Fkb3RfcnVudGltZV9wYXJhY2hhaW5zNGNvbmZpZ3VyYXRpb24YcGFsbGV0FEVycm9yBARUAAEEPEludmFsaWROZXdWYWx1ZQAABNxUaGUgbmV3IHZhbHVlIGZvciBhIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVyIGlzIGludmFsaWQuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LuEKAAACbQQA5QoAAAIdAgDpCgxscG9sa2Fkb3RfcnVudGltZV9wYXJhY2hhaW5zGHNoYXJlZGhBbGxvd2VkUmVsYXlQYXJlbnRzVHJhY2tlcggQSGFzaAE0LEJsb2NrTnVtYmVyARAACAEYYnVmZmVy7QoBWFZlY0RlcXVlPChIYXNoLCBIYXNoKT4AATRsYXRlc3RfbnVtYmVyEAEsQmxvY2tOdW1iZXIAAO0KAAAC8QoA8QoAAAQINDQA9QoAAAL5CgD5CgxscG9sa2Fkb3RfcnVudGltZV9wYXJhY2hhaW5zJGluY2x1c2lvbnBDYW5kaWRhdGVQZW5kaW5nQXZhaWxhYmlsaXR5CARIATQETgEQACQBEGNvcmU5BwEkQ29yZUluZGV4AAEQaGFzaMEEATRDYW5kaWRhdGVIYXNoAAEoZGVzY3JpcHRvcoEEAVhDYW5kaWRhdGVEZXNjcmlwdG9yPEg+AAEsY29tbWl0bWVudHORBAFQQ2FuZGlkYXRlQ29tbWl0bWVudHMAAUhhdmFpbGFiaWxpdHlfdm90ZXNlBAFgQml0VmVjPHU4LCBCaXRPcmRlckxzYjA+AAEcYmFja2Vyc2UEAWBCaXRWZWM8dTgsIEJpdE9yZGVyTHNiMD4AAUxyZWxheV9wYXJlbnRfbnVtYmVyEAEETgABQGJhY2tlZF9pbl9udW1iZXIQAQROAAE0YmFja2luZ19ncm91cD0HAShHcm91cEluZGV4AAD9ChBscG9sa2Fkb3RfcnVudGltZV9wYXJhY2hhaW5zJGluY2x1c2lvbhhwYWxsZXQURXJyb3IEBFQAAUhkVmFsaWRhdG9ySW5kZXhPdXRPZkJvdW5kcwAABHhWYWxpZGF0b3IgaW5kZXggb3V0IG9mIGJvdW5kcy5QVW5zY2hlZHVsZWRDYW5kaWRhdGUAAQSsQ2FuZGlkYXRlIHN1Ym1pdHRlZCBidXQgcGFyYSBub3Qgc2NoZWR1bGVkLkBIZWFkRGF0YVRvb0xhcmdlAAIEpEhlYWQgZGF0YSBleGNlZWRzIHRoZSBjb25maWd1cmVkIG1heGltdW0uUFByZW1hdHVyZUNvZGVVcGdyYWRlAAMEZENvZGUgdXBncmFkZSBwcmVtYXR1cmVseS48TmV3Q29kZVRvb0xhcmdlAAQEYE91dHB1dCBjb2RlIGlzIHRvbyBsYXJnZVREaXNhbGxvd2VkUmVsYXlQYXJlbnQABQjsVGhlIGNhbmRpZGF0ZSdzIHJlbGF5LXBhcmVudCB3YXMgbm90IGFsbG93ZWQuIEVpdGhlciBpdCB3YXMlAW5vdCByZWNlbnQgZW5vdWdoIG9yIGl0IGRpZG4ndCBhZHZhbmNlIGJhc2VkIG9uIHRoZSBsYXN0IHBhcmFjaGFpbiBibG9jay5ESW52YWxpZEFzc2lnbm1lbnQABggVAUZhaWxlZCB0byBjb21wdXRlIGdyb3VwIGluZGV4IGZvciB0aGUgY29yZTogZWl0aGVyIGl0J3Mgb3V0IG9mIGJvdW5kc+hvciB0aGUgcmVsYXkgcGFyZW50IGRvZXNuJ3QgYmVsb25nIHRvIHRoZSBjdXJyZW50IHNlc3Npb24uREludmFsaWRHcm91cEluZGV4AAcEnEludmFsaWQgZ3JvdXAgaW5kZXggaW4gY29yZSBhc3NpZ25tZW50LkxJbnN1ZmZpY2llbnRCYWNraW5nAAgEkEluc3VmZmljaWVudCAobm9uLW1ham9yaXR5KSBiYWNraW5nLjhJbnZhbGlkQmFja2luZwAJBORJbnZhbGlkIChiYWQgc2lnbmF0dXJlLCB1bmtub3duIHZhbGlkYXRvciwgZXRjLikgYmFja2luZy5ETm90Q29sbGF0b3JTaWduZWQACgRoQ29sbGF0b3IgZGlkIG5vdCBzaWduIFBvVi5oVmFsaWRhdGlvbkRhdGFIYXNoTWlzbWF0Y2gACwTEVGhlIHZhbGlkYXRpb24gZGF0YSBoYXNoIGRvZXMgbm90IG1hdGNoIGV4cGVjdGVkLoBJbmNvcnJlY3REb3dud2FyZE1lc3NhZ2VIYW5kbGluZwAMBNhUaGUgZG93bndhcmQgbWVzc2FnZSBxdWV1ZSBpcyBub3QgcHJvY2Vzc2VkIGNvcnJlY3RseS5USW52YWxpZFVwd2FyZE1lc3NhZ2VzAA0EHQFBdCBsZWFzdCBvbmUgdXB3YXJkIG1lc3NhZ2Ugc2VudCBkb2VzIG5vdCBwYXNzIHRoZSBhY2NlcHRhbmNlIGNyaXRlcmlhLmBIcm1wV2F0ZXJtYXJrTWlzaGFuZGxpbmcADgQRAVRoZSBjYW5kaWRhdGUgZGlkbid0IGZvbGxvdyB0aGUgcnVsZXMgb2YgSFJNUCB3YXRlcm1hcmsgYWR2YW5jZW1lbnQuTEludmFsaWRPdXRib3VuZEhybXAADwTUVGhlIEhSTVAgbWVzc2FnZXMgc2VudCBieSB0aGUgY2FuZGlkYXRlIGlzIG5vdCB2YWxpZC5kSW52YWxpZFZhbGlkYXRpb25Db2RlSGFzaAAQBNxUaGUgdmFsaWRhdGlvbiBjb2RlIGhhc2ggb2YgdGhlIGNhbmRpZGF0ZSBpcyBub3QgdmFsaWQuQFBhcmFIZWFkTWlzbWF0Y2gAEQhVAVRoZSBgcGFyYV9oZWFkYCBoYXNoIGluIHRoZSBjYW5kaWRhdGUgZGVzY3JpcHRvciBkb2Vzbid0IG1hdGNoIHRoZSBoYXNoIG9mIHRoZSBhY3R1YWx0cGFyYSBoZWFkIGluIHRoZSBjb21taXRtZW50cy4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuAQsMTHBvbGthZG90X3ByaW1pdGl2ZXMIdjdMU2NyYXBlZE9uQ2hhaW5Wb3RlcwQESAE0AAwBHHNlc3Npb24QATBTZXNzaW9uSW5kZXgAAYBiYWNraW5nX3ZhbGlkYXRvcnNfcGVyX2NhbmRpZGF0ZQULAR0BVmVjPChDYW5kaWRhdGVSZWNlaXB0PEg+LCBWZWM8KFZhbGlkYXRvckluZGV4LCBWYWxpZGl0eUF0dGVzdGF0aW9uKT4pCj4AASBkaXNwdXRlc7kEAWBNdWx0aURpc3B1dGVTdGF0ZW1lbnRTZXQAAAULAAACCQsACQsAAAQINQcNCwANCwAAAhELABELAAAECG0EtQQAFQsQbHBvbGthZG90X3J1bnRpbWVfcGFyYWNoYWluczhwYXJhc19pbmhlcmVudBhwYWxsZXQURXJyb3IEBFQAARRkVG9vTWFueUluY2x1c2lvbkluaGVyZW50cwAABMxJbmNsdXNpb24gaW5oZXJlbnQgY2FsbGVkIG1vcmUgdGhhbiBvbmNlIHBlciBibG9jay5MSW52YWxpZFBhcmVudEhlYWRlcgABCFUBVGhlIGhhc2ggb2YgdGhlIHN1Ym1pdHRlZCBwYXJlbnQgaGVhZGVyIGRvZXNuJ3QgY29ycmVzcG9uZCB0byB0aGUgc2F2ZWQgYmxvY2sgaGFzaCBvZix0aGUgcGFyZW50LkhJbmhlcmVudE92ZXJ3ZWlnaHQAAgQJAVRoZSBkYXRhIGdpdmVuIHRvIHRoZSBpbmhlcmVudCB3aWxsIHJlc3VsdCBpbiBhbiBvdmVyd2VpZ2h0IGJsb2NrLoRDYW5kaWRhdGVzRmlsdGVyZWREdXJpbmdFeGVjdXRpb24AAwhNAUEgY2FuZGlkYXRlIHdhcyBmaWx0ZXJlZCBkdXJpbmcgaW5oZXJlbnQgZXhlY3V0aW9uLiBUaGlzIHNob3VsZCBoYXZlIG9ubHkgYmVlbiBkb25lQGR1cmluZyBjcmVhdGlvbi5QVW5zY2hlZHVsZWRDYW5kaWRhdGUABAR0VG9vIG1hbnkgY2FuZGlkYXRlcyBzdXBwbGllZC4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuGQsAAALhCgAdCwAAAiELACELEGxwb2xrYWRvdF9ydW50aW1lX3BhcmFjaGFpbnMkc2NoZWR1bGVyGHBhbGxldDBDb3JlT2NjdXBpZWQEBE4BEAEIEEZyZWUAAAAUUGFyYXMEACULATRQYXJhc0VudHJ5PE4+AAEAACULEGxwb2xrYWRvdF9ydW50aW1lX3BhcmFjaGFpbnMkc2NoZWR1bGVyGHBhbGxldChQYXJhc0VudHJ5BAROARAADAEoYXNzaWdubWVudCkLAShBc3NpZ25tZW50AAFUYXZhaWxhYmlsaXR5X3RpbWVvdXRzEAEMdTMyAAEMdHRsEAEETgAAKQsQbHBvbGthZG90X3J1bnRpbWVfcGFyYWNoYWlucyRzY2hlZHVsZXIYY29tbW9uKEFzc2lnbm1lbnQAAQgQUG9vbAgBHHBhcmFfaWSNAgEYUGFyYUlkAAEoY29yZV9pbmRleDkHASRDb3JlSW5kZXgAAAAQQnVsawQAjQIBGFBhcmFJZAABAAAtCwQgQlRyZWVNYXAIBEsBOQcEVgExCwAEADULAAAAMQsAAAIlCwA1CwAAAjkLADkLAAAECDkHMQsAPQsMbHBvbGthZG90X3J1bnRpbWVfcGFyYWNoYWlucxRwYXJhc1xQdmZDaGVja0FjdGl2ZVZvdGVTdGF0ZQQsQmxvY2tOdW1iZXIBEAAUATB2b3Rlc19hY2NlcHRlBAFgQml0VmVjPHU4LCBCaXRPcmRlckxzYjA+AAEwdm90ZXNfcmVqZWN0ZQQBYEJpdFZlYzx1OCwgQml0T3JkZXJMc2IwPgABDGFnZRABMFNlc3Npb25JbmRleAABKGNyZWF0ZWRfYXQQASxCbG9ja051bWJlcgABGGNhdXNlc0ELAXxWZWM8UHZmQ2hlY2tDYXVzZTxCbG9ja051bWJlcj4+AABBCwAAAkULAEULDGxwb2xrYWRvdF9ydW50aW1lX3BhcmFjaGFpbnMUcGFyYXM0UHZmQ2hlY2tDYXVzZQQsQmxvY2tOdW1iZXIBEAEIKE9uYm9hcmRpbmcEAI0CARhQYXJhSWQAAAAcVXBncmFkZQwBCGlkjQIBGFBhcmFJZAABLGluY2x1ZGVkX2F0EAEsQmxvY2tOdW1iZXIAAUB1cGdyYWRlX3N0cmF0ZWd5SQsBPFVwZ3JhZGVTdHJhdGVneQABAABJCwxscG9sa2Fkb3RfcnVudGltZV9wYXJhY2hhaW5zFHBhcmFzPFVwZ3JhZGVTdHJhdGVneQABCEBTZXRHb0FoZWFkU2lnbmFsAAAAUEFwcGx5QXRFeHBlY3RlZEJsb2NrAAEAAE0LAAACjQQAUQsAAAKNAgBVCwxscG9sa2Fkb3RfcnVudGltZV9wYXJhY2hhaW5zFHBhcmFzNFBhcmFMaWZlY3ljbGUAARwoT25ib2FyZGluZwAAAChQYXJhdGhyZWFkAAEAJFBhcmFjaGFpbgACAExVcGdyYWRpbmdQYXJhdGhyZWFkAAMAUERvd25ncmFkaW5nUGFyYWNoYWluAAQAVE9mZmJvYXJkaW5nUGFyYXRocmVhZAAFAFBPZmZib2FyZGluZ1BhcmFjaGFpbgAGAABZCwAABAiNAhAAXQsMbHBvbGthZG90X3J1bnRpbWVfcGFyYWNoYWlucxRwYXJhc0BQYXJhUGFzdENvZGVNZXRhBAROARAACAE0dXBncmFkZV90aW1lc2ELAWBWZWM8UmVwbGFjZW1lbnRUaW1lczxOPj4AASxsYXN0X3BydW5lZGECASRPcHRpb248Tj4AAGELAAACZQsAZQsMbHBvbGthZG90X3J1bnRpbWVfcGFyYWNoYWlucxRwYXJhc0BSZXBsYWNlbWVudFRpbWVzBAROARAACAEsZXhwZWN0ZWRfYXQQAQROAAEwYWN0aXZhdGVkX2F0EAEETgAAaQsAAAJZCwBtCwxMcG9sa2Fkb3RfcHJpbWl0aXZlcwh2NzhVcGdyYWRlR29BaGVhZAABCBRBYm9ydAAAABxHb0FoZWFkAAEAAHELDExwb2xrYWRvdF9wcmltaXRpdmVzCHY3SFVwZ3JhZGVSZXN0cmljdGlvbgABBBxQcmVzZW50AAAAAHULEGxwb2xrYWRvdF9ydW50aW1lX3BhcmFjaGFpbnMUcGFyYXMYcGFsbGV0FEVycm9yBARUAAE0NE5vdFJlZ2lzdGVyZWQAAASUUGFyYSBpcyBub3QgcmVnaXN0ZXJlZCBpbiBvdXIgc3lzdGVtLjRDYW5ub3RPbmJvYXJkAAEEFQFQYXJhIGNhbm5vdCBiZSBvbmJvYXJkZWQgYmVjYXVzZSBpdCBpcyBhbHJlYWR5IHRyYWNrZWQgYnkgb3VyIHN5c3RlbS44Q2Fubm90T2ZmYm9hcmQAAgScUGFyYSBjYW5ub3QgYmUgb2ZmYm9hcmRlZCBhdCB0aGlzIHRpbWUuNENhbm5vdFVwZ3JhZGUAAwTUUGFyYSBjYW5ub3QgYmUgdXBncmFkZWQgdG8gYSBsZWFzZSBob2xkaW5nIHBhcmFjaGFpbi48Q2Fubm90RG93bmdyYWRlAAQE0FBhcmEgY2Fubm90IGJlIGRvd25ncmFkZWQgdG8gYW4gb24tZGVtYW5kIHBhcmFjaGFpbi5YUHZmQ2hlY2tTdGF0ZW1lbnRTdGFsZQAFBLBUaGUgc3RhdGVtZW50IGZvciBQVkYgcHJlLWNoZWNraW5nIGlzIHN0YWxlLlxQdmZDaGVja1N0YXRlbWVudEZ1dHVyZQAGBOxUaGUgc3RhdGVtZW50IGZvciBQVkYgcHJlLWNoZWNraW5nIGlzIGZvciBhIGZ1dHVyZSBzZXNzaW9uLoRQdmZDaGVja1ZhbGlkYXRvckluZGV4T3V0T2ZCb3VuZHMABwSkQ2xhaW1lZCB2YWxpZGF0b3IgaW5kZXggaXMgb3V0IG9mIGJvdW5kcy5gUHZmQ2hlY2tJbnZhbGlkU2lnbmF0dXJlAAgEyFRoZSBzaWduYXR1cmUgZm9yIHRoZSBQVkYgcHJlLWNoZWNraW5nIGlzIGludmFsaWQuSFB2ZkNoZWNrRG91YmxlVm90ZQAJBLBUaGUgZ2l2ZW4gdmFsaWRhdG9yIGFscmVhZHkgaGFzIGNhc3QgYSB2b3RlLlhQdmZDaGVja1N1YmplY3RJbnZhbGlkAAoE9FRoZSBnaXZlbiBQVkYgZG9lcyBub3QgZXhpc3QgYXQgdGhlIG1vbWVudCBvZiBwcm9jZXNzIGEgdm90ZS5EQ2Fubm90VXBncmFkZUNvZGUACwTMUGFyYWNoYWluIGNhbm5vdCBjdXJyZW50bHkgc2NoZWR1bGUgYSBjb2RlIHVwZ3JhZGUuLEludmFsaWRDb2RlAAwEdEludmFsaWQgdmFsaWRhdGlvbiBjb2RlIHNpemUuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LnkLAAACfQsAfQsMbHBvbGthZG90X3J1bnRpbWVfcGFyYWNoYWlucyxpbml0aWFsaXplclRCdWZmZXJlZFNlc3Npb25DaGFuZ2UAAAwBKHZhbGlkYXRvcnPlCgFAVmVjPFZhbGlkYXRvcklkPgABGHF1ZXVlZOUKAUBWZWM8VmFsaWRhdG9ySWQ+AAE0c2Vzc2lvbl9pbmRleBABMFNlc3Npb25JbmRleAAAgQsAAAKFCwCFCwhgcG9sa2Fkb3RfY29yZV9wcmltaXRpdmVzWEluYm91bmREb3dud2FyZE1lc3NhZ2UELEJsb2NrTnVtYmVyARAACAEcc2VudF9hdBABLEJsb2NrTnVtYmVyAAEMbXNnOAE8RG93bndhcmRNZXNzYWdlAACJCwxscG9sa2Fkb3RfcnVudGltZV9wYXJhY2hhaW5zEGhybXBYSHJtcE9wZW5DaGFubmVsUmVxdWVzdAAAGAEkY29uZmlybWVkIAEQYm9vbAABEF9hZ2UQATBTZXNzaW9uSW5kZXgAAThzZW5kZXJfZGVwb3NpdBgBHEJhbGFuY2UAAUBtYXhfbWVzc2FnZV9zaXplEAEMdTMyAAEwbWF4X2NhcGFjaXR5EAEMdTMyAAE4bWF4X3RvdGFsX3NpemUQAQx1MzIAAI0LAAAC7QQAkQsMbHBvbGthZG90X3J1bnRpbWVfcGFyYWNoYWlucxBocm1wLEhybXBDaGFubmVsAAAgATBtYXhfY2FwYWNpdHkQAQx1MzIAAThtYXhfdG90YWxfc2l6ZRABDHUzMgABQG1heF9tZXNzYWdlX3NpemUQAQx1MzIAASRtc2dfY291bnQQAQx1MzIAASh0b3RhbF9zaXplEAEMdTMyAAEgbXFjX2hlYWSdAgEwT3B0aW9uPEhhc2g+AAE4c2VuZGVyX2RlcG9zaXQYARxCYWxhbmNlAAFEcmVjaXBpZW50X2RlcG9zaXQYARxCYWxhbmNlAACVCwAAApkLAJkLCGBwb2xrYWRvdF9jb3JlX3ByaW1pdGl2ZXNISW5ib3VuZEhybXBNZXNzYWdlBCxCbG9ja051bWJlcgEQAAgBHHNlbnRfYXQQASxCbG9ja051bWJlcgABEGRhdGE4AVBzcF9zdGQ6OnZlYzo6VmVjPHU4PgAAnQsAAAKhCwChCwAABAgQUQsApQsQbHBvbGthZG90X3J1bnRpbWVfcGFyYWNoYWlucxBocm1wGHBhbGxldBRFcnJvcgQEVAABUFRPcGVuSHJtcENoYW5uZWxUb1NlbGYAAATEVGhlIHNlbmRlciB0cmllZCB0byBvcGVuIGEgY2hhbm5lbCB0byB0aGVtc2VsdmVzLnxPcGVuSHJtcENoYW5uZWxJbnZhbGlkUmVjaXBpZW50AAEEiFRoZSByZWNpcGllbnQgaXMgbm90IGEgdmFsaWQgcGFyYS5sT3BlbkhybXBDaGFubmVsWmVyb0NhcGFjaXR5AAIEfFRoZSByZXF1ZXN0ZWQgY2FwYWNpdHkgaXMgemVyby6MT3BlbkhybXBDaGFubmVsQ2FwYWNpdHlFeGNlZWRzTGltaXQAAwTAVGhlIHJlcXVlc3RlZCBjYXBhY2l0eSBleGNlZWRzIHRoZSBnbG9iYWwgbGltaXQueE9wZW5Icm1wQ2hhbm5lbFplcm9NZXNzYWdlU2l6ZQAEBKBUaGUgcmVxdWVzdGVkIG1heGltdW0gbWVzc2FnZSBzaXplIGlzIDAumE9wZW5Icm1wQ2hhbm5lbE1lc3NhZ2VTaXplRXhjZWVkc0xpbWl0AAUEKQFUaGUgb3BlbiByZXF1ZXN0IHJlcXVlc3RlZCB0aGUgbWVzc2FnZSBzaXplIHRoYXQgZXhjZWVkcyB0aGUgZ2xvYmFsIGxpbWl0LnBPcGVuSHJtcENoYW5uZWxBbHJlYWR5RXhpc3RzAAYEaFRoZSBjaGFubmVsIGFscmVhZHkgZXhpc3RzfE9wZW5Icm1wQ2hhbm5lbEFscmVhZHlSZXF1ZXN0ZWQABwTQVGhlcmUgaXMgYWxyZWFkeSBhIHJlcXVlc3QgdG8gb3BlbiB0aGUgc2FtZSBjaGFubmVsLnBPcGVuSHJtcENoYW5uZWxMaW1pdEV4Y2VlZGVkAAgEHQFUaGUgc2VuZGVyIGFscmVhZHkgaGFzIHRoZSBtYXhpbXVtIG51bWJlciBvZiBhbGxvd2VkIG91dGJvdW5kIGNoYW5uZWxzLnBBY2NlcHRIcm1wQ2hhbm5lbERvZXNudEV4aXN0AAkE4FRoZSBjaGFubmVsIGZyb20gdGhlIHNlbmRlciB0byB0aGUgb3JpZ2luIGRvZXNuJ3QgZXhpc3QuhEFjY2VwdEhybXBDaGFubmVsQWxyZWFkeUNvbmZpcm1lZAAKBIRUaGUgY2hhbm5lbCBpcyBhbHJlYWR5IGNvbmZpcm1lZC54QWNjZXB0SHJtcENoYW5uZWxMaW1pdEV4Y2VlZGVkAAsEJQFUaGUgcmVjaXBpZW50IGFscmVhZHkgaGFzIHRoZSBtYXhpbXVtIG51bWJlciBvZiBhbGxvd2VkIGluYm91bmQgY2hhbm5lbHMucENsb3NlSHJtcENoYW5uZWxVbmF1dGhvcml6ZWQADARVAVRoZSBvcmlnaW4gdHJpZXMgdG8gY2xvc2UgYSBjaGFubmVsIHdoZXJlIGl0IGlzIG5laXRoZXIgdGhlIHNlbmRlciBub3IgdGhlIHJlY2lwaWVudC5sQ2xvc2VIcm1wQ2hhbm5lbERvZXNudEV4aXN0AA0EnFRoZSBjaGFubmVsIHRvIGJlIGNsb3NlZCBkb2Vzbid0IGV4aXN0LnxDbG9zZUhybXBDaGFubmVsQWxyZWFkeVVuZGVyd2F5AA4EvFRoZSBjaGFubmVsIGNsb3NlIHJlcXVlc3QgaXMgYWxyZWFkeSByZXF1ZXN0ZWQuhENhbmNlbEhybXBPcGVuQ2hhbm5lbFVuYXV0aG9yaXplZAAPBF0BQ2FuY2VsaW5nIGlzIHJlcXVlc3RlZCBieSBuZWl0aGVyIHRoZSBzZW5kZXIgbm9yIHJlY2lwaWVudCBvZiB0aGUgb3BlbiBjaGFubmVsIHJlcXVlc3QuaE9wZW5Icm1wQ2hhbm5lbERvZXNudEV4aXN0ABAEfFRoZSBvcGVuIHJlcXVlc3QgZG9lc24ndCBleGlzdC58T3BlbkhybXBDaGFubmVsQWxyZWFkeUNvbmZpcm1lZAARBC0BQ2Fubm90IGNhbmNlbCBhbiBIUk1QIG9wZW4gY2hhbm5lbCByZXF1ZXN0IGJlY2F1c2UgaXQgaXMgYWxyZWFkeSBjb25maXJtZWQuMFdyb25nV2l0bmVzcwASBIxUaGUgcHJvdmlkZWQgd2l0bmVzcyBkYXRhIGlzIHdyb25nLnBDaGFubmVsQ3JlYXRpb25Ob3RBdXRob3JpemVkABME6FRoZSBjaGFubmVsIGJldHdlZW4gdGhlc2UgdHdvIGNoYWlucyBjYW5ub3QgYmUgYXV0aG9yaXplZC4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuqQsAAAIhAgCtCwxMcG9sa2Fkb3RfcHJpbWl0aXZlcwh2NyxTZXNzaW9uSW5mbwAANAFgYWN0aXZlX3ZhbGlkYXRvcl9pbmRpY2Vz4QoBTFZlYzxWYWxpZGF0b3JJbmRleD4AASxyYW5kb21fc2VlZAQBIFt1ODsgMzJdAAE4ZGlzcHV0ZV9wZXJpb2QQATBTZXNzaW9uSW5kZXgAASh2YWxpZGF0b3JzsQsBnEluZGV4ZWRWZWM8VmFsaWRhdG9ySW5kZXgsIFZhbGlkYXRvcklkPgABOGRpc2NvdmVyeV9rZXlzNQkBZFZlYzxBdXRob3JpdHlEaXNjb3ZlcnlJZD4AATxhc3NpZ25tZW50X2tleXOpCwFEVmVjPEFzc2lnbm1lbnRJZD4AAUB2YWxpZGF0b3JfZ3JvdXBztQsBrEluZGV4ZWRWZWM8R3JvdXBJbmRleCwgVmVjPFZhbGlkYXRvckluZGV4Pj4AARxuX2NvcmVzEAEMdTMyAAFoemVyb3RoX2RlbGF5X3RyYW5jaGVfd2lkdGgQAQx1MzIAAWByZWxheV92cmZfbW9kdWxvX3NhbXBsZXMQAQx1MzIAAUBuX2RlbGF5X3RyYW5jaGVzEAEMdTMyAAE0bm9fc2hvd19zbG90cxABDHUzMgABQG5lZWRlZF9hcHByb3ZhbHMQAQx1MzIAALELDExwb2xrYWRvdF9wcmltaXRpdmVzCHY3KEluZGV4ZWRWZWMIBEsBbQQEVgEdAgAEAOUKARhWZWM8Vj4AALULDExwb2xrYWRvdF9wcmltaXRpdmVzCHY3KEluZGV4ZWRWZWMIBEsBPQcEVgHhCgAEABkLARhWZWM8Vj4AALkLAAAECBDBBAC9CwxMcG9sa2Fkb3RfcHJpbWl0aXZlcwh2NzBEaXNwdXRlU3RhdGUEBE4BEAAQATh2YWxpZGF0b3JzX2ZvcmUEAXxCaXRWZWM8dTgsIGJpdHZlYzo6b3JkZXI6OkxzYjA+AAFIdmFsaWRhdG9yc19hZ2FpbnN0ZQQBfEJpdFZlYzx1OCwgYml0dmVjOjpvcmRlcjo6THNiMD4AARRzdGFydBABBE4AATBjb25jbHVkZWRfYXRhAgEkT3B0aW9uPE4+AADBCwQgQlRyZWVTZXQEBFQBbQQABADhCgAAAMULEGxwb2xrYWRvdF9ydW50aW1lX3BhcmFjaGFpbnMgZGlzcHV0ZXMYcGFsbGV0FEVycm9yBARUAAEkdER1cGxpY2F0ZURpc3B1dGVTdGF0ZW1lbnRTZXRzAAAEqER1cGxpY2F0ZSBkaXNwdXRlIHN0YXRlbWVudCBzZXRzIHByb3ZpZGVkLlxBbmNpZW50RGlzcHV0ZVN0YXRlbWVudAABBIxBbmNpZW50IGRpc3B1dGUgc3RhdGVtZW50IHByb3ZpZGVkLmRWYWxpZGF0b3JJbmRleE91dE9mQm91bmRzAAIE6FZhbGlkYXRvciBpbmRleCBvbiBzdGF0ZW1lbnQgaXMgb3V0IG9mIGJvdW5kcyBmb3Igc2Vzc2lvbi5ASW52YWxpZFNpZ25hdHVyZQADBHxJbnZhbGlkIHNpZ25hdHVyZSBvbiBzdGF0ZW1lbnQuSER1cGxpY2F0ZVN0YXRlbWVudAAEBMxWYWxpZGF0b3Igdm90ZSBzdWJtaXR0ZWQgbW9yZSB0aGFuIG9uY2UgdG8gZGlzcHV0ZS5IU2luZ2xlU2lkZWREaXNwdXRlAAUExEEgZGlzcHV0ZSB3aGVyZSB0aGVyZSBhcmUgb25seSB2b3RlcyBvbiBvbmUgc2lkZS48TWFsaWNpb3VzQmFja2VyAAYEnEEgZGlzcHV0ZSB2b3RlIGZyb20gYSBtYWxpY2lvdXMgYmFja2VyLkxNaXNzaW5nQmFja2luZ1ZvdGVzAAcE4E5vIGJhY2tpbmcgdm90ZXMgd2VyZSBwcm92aWRlcyBhbG9uZyBkaXNwdXRlIHN0YXRlbWVudHMuSFVuY29uZmlybWVkRGlzcHV0ZQAIBLBVbmNvbmZpcm1lZCBkaXNwdXRlIHN0YXRlbWVudCBzZXRzIHByb3ZpZGVkLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC7JCxBMcG9sa2Fkb3RfcHJpbWl0aXZlcwh2NyBzbGFzaGluZzhQZW5kaW5nU2xhc2hlcwAACAEQa2V5c80LAZRCVHJlZU1hcDxWYWxpZGF0b3JJbmRleCwgVmFsaWRhdG9ySWQ+AAEQa2luZAEFAUxTbGFzaGluZ09mZmVuY2VLaW5kAADNCwQgQlRyZWVNYXAIBEsBbQQEVgEdAgAEANELAAAA0QsAAALVCwDVCwAABAhtBB0CANkLFGxwb2xrYWRvdF9ydW50aW1lX3BhcmFjaGFpbnMgZGlzcHV0ZXMgc2xhc2hpbmcYcGFsbGV0FEVycm9yBARUAAEYYEludmFsaWRLZXlPd25lcnNoaXBQcm9vZgAABIxUaGUga2V5IG93bmVyc2hpcCBwcm9vZiBpcyBpbnZhbGlkLkxJbnZhbGlkU2Vzc2lvbkluZGV4AAEEoFRoZSBzZXNzaW9uIGluZGV4IGlzIHRvbyBvbGQgb3IgaW52YWxpZC5QSW52YWxpZENhbmRpZGF0ZUhhc2gAAgR4VGhlIGNhbmRpZGF0ZSBoYXNoIGlzIGludmFsaWQuVEludmFsaWRWYWxpZGF0b3JJbmRleAADCAEBVGhlcmUgaXMgbm8gcGVuZGluZyBzbGFzaCBmb3IgdGhlIGdpdmVuIHZhbGlkYXRvciBpbmRleCBhbmQgdGltZRRzbG90LmBWYWxpZGF0b3JJbmRleElkTWlzbWF0Y2gABATQVGhlIHZhbGlkYXRvciBpbmRleCBkb2VzIG5vdCBtYXRjaCB0aGUgdmFsaWRhdG9yIGlkLlxEdXBsaWNhdGVTbGFzaGluZ1JlcG9ydAAFBA0BVGhlIGdpdmVuIHNsYXNoaW5nIHJlcG9ydCBpcyB2YWxpZCBidXQgYWxyZWFkeSBwcmV2aW91c2x5IHJlcG9ydGVkLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC7dCxBscG9sa2Fkb3RfcnVudGltZV9wYXJhY2hhaW5zSGFzc2lnbmVyX29uX2RlbWFuZBR0eXBlc0RDb3JlQWZmaW5pdHlDb3VudAAACAEoY29yZV9pbmRleDkHASRDb3JlSW5kZXgAARRjb3VudBABDHUzMgAA4QsQbHBvbGthZG90X3J1bnRpbWVfcGFyYWNoYWluc0hhc3NpZ25lcl9vbl9kZW1hbmQUdHlwZXM8UXVldWVTdGF0dXNUeXBlAAAQARx0cmFmZmljpQYBJEZpeGVkVTEyOAABKG5leHRfaW5kZXjlCwEoUXVldWVJbmRleAABOHNtYWxsZXN0X2luZGV45QsBKFF1ZXVlSW5kZXgAATRmcmVlZF9pbmRpY2Vz6QsBdEJpbmFyeUhlYXA8UmV2ZXJzZVF1ZXVlSW5kZXg+AADlCxBscG9sa2Fkb3RfcnVudGltZV9wYXJhY2hhaW5zSGFzc2lnbmVyX29uX2RlbWFuZBR0eXBlcyhRdWV1ZUluZGV4AAAEABABDHUzMgAA6QsEKEJpbmFyeUhlYXAEBFQB7QsABADxCwAAAO0LEGxwb2xrYWRvdF9ydW50aW1lX3BhcmFjaGFpbnNIYXNzaWduZXJfb25fZGVtYW5kFHR5cGVzRFJldmVyc2VRdWV1ZUluZGV4AAAEABABDHUzMgAA8QsAAALtCwD1CwQoQmluYXJ5SGVhcAQEVAH5CwAEAP0LAAAA+QsQbHBvbGthZG90X3J1bnRpbWVfcGFyYWNoYWluc0hhc3NpZ25lcl9vbl9kZW1hbmQUdHlwZXM0RW5xdWV1ZWRPcmRlcgAACAEccGFyYV9pZI0CARhQYXJhSWQAAQxpZHjlCwEoUXVldWVJbmRleAAA/QsAAAL5CwABDAxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUARgEUwAABAAFDAEYVmVjPFQ+AAAFDAAAAhgACQwQbHBvbGthZG90X3J1bnRpbWVfcGFyYWNoYWluc0hhc3NpZ25lcl9vbl9kZW1hbmQYcGFsbGV0FEVycm9yBARUAAEIJFF1ZXVlRnVsbAAABORUaGUgb3JkZXIgcXVldWUgaXMgZnVsbCwgYHBsYWNlX29yZGVyYCB3aWxsIG5vdCBjb250aW51ZS5wU3BvdFByaWNlSGlnaGVyVGhhbk1heEFtb3VudAABCE0BVGhlIGN1cnJlbnQgc3BvdCBwcmljZSBpcyBoaWdoZXIgdGhhbiB0aGUgbWF4IGFtb3VudCBzcGVjaWZpZWQgaW4gdGhlIGBwbGFjZV9vcmRlcmBgY2FsbCwgbWFraW5nIGl0IGludmFsaWQuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0Lg0MAAAECBA5BwARDAxscG9sa2Fkb3RfcnVudGltZV9wYXJhY2hhaW5zRGFzc2lnbmVyX2NvcmV0aW1lIFNjaGVkdWxlBAROARAADAEsYXNzaWdubWVudHMxBQGMVmVjPChDb3JlQXNzaWdubWVudCwgUGFydHNPZjU3NjAwKT4AASBlbmRfaGludGECASRPcHRpb248Tj4AATRuZXh0X3NjaGVkdWxlYQIBJE9wdGlvbjxOPgAAFQwMbHBvbGthZG90X3J1bnRpbWVfcGFyYWNoYWluc0Rhc3NpZ25lcl9jb3JldGltZThDb3JlRGVzY3JpcHRvcgQETgEQAAgBFHF1ZXVlGQwBaE9wdGlvbjxRdWV1ZURlc2NyaXB0b3I8Tj4+AAEwY3VycmVudF93b3JrIQwBUE9wdGlvbjxXb3JrU3RhdGU8Tj4+AAAZDAQYT3B0aW9uBARUAR0MAQgQTm9uZQAAABBTb21lBAAdDAAAAQAAHQwMbHBvbGthZG90X3J1bnRpbWVfcGFyYWNoYWluc0Rhc3NpZ25lcl9jb3JldGltZTxRdWV1ZURlc2NyaXB0b3IEBE4BEAAIARRmaXJzdBABBE4AARBsYXN0EAEETgAAIQwEGE9wdGlvbgQEVAElDAEIEE5vbmUAAAAQU29tZQQAJQwAAAEAACUMDGxwb2xrYWRvdF9ydW50aW1lX3BhcmFjaGFpbnNEYXNzaWduZXJfY29yZXRpbWUkV29ya1N0YXRlBAROARAAEAEsYXNzaWdubWVudHMpDAGYVmVjPChDb3JlQXNzaWdubWVudCwgQXNzaWdubWVudFN0YXRlKT4AASBlbmRfaGludGECASRPcHRpb248Tj4AAQxwb3NtAQEMdTE2AAEQc3RlcD0FATBQYXJ0c09mNTc2MDAAACkMAAACLQwALQwAAAQIOQUxDAAxDAxscG9sa2Fkb3RfcnVudGltZV9wYXJhY2hhaW5zRGFzc2lnbmVyX2NvcmV0aW1lPEFzc2lnbm1lbnRTdGF0ZQAACAEUcmF0aW89BQEwUGFydHNPZjU3NjAwAAEkcmVtYWluaW5nPQUBMFBhcnRzT2Y1NzYwMAAANQwQbHBvbGthZG90X3J1bnRpbWVfcGFyYWNoYWluc0Rhc3NpZ25lcl9jb3JldGltZRhwYWxsZXQURXJyb3IEBFQAARhAQXNzaWdubWVudHNFbXB0eQAAADRPdmVyU2NoZWR1bGVkAAEEkEFzc2lnbm1lbnRzIHRvZ2V0aGVyIGV4Y2VlZGVkIDU3NjAwLjhVbmRlclNjaGVkdWxlZAACBJBBc3NpZ25tZW50cyB0b2dldGhlciBsZXNzIHRoYW4gNTc2MDBARGlzYWxsb3dlZEluc2VydAADCFEBYXNzaWduX2NvcmUgaXMgb25seSBhbGxvd2VkIHRvIGFwcGVuZCBuZXcgYXNzaWdubWVudHMgYXQgdGhlIGVuZCBvZiBhbHJlYWR5IGV4aXN0aW5nFG9uZXMuPER1cGxpY2F0ZUluc2VydAAEBFUBVHJpZWQgdG8gaW5zZXJ0IGEgc2NoZWR1bGUgZm9yIHRoZSBzYW1lIGNvcmUgYW5kIGJsb2NrIG51bWJlciBhcyBhbiBleGlzdGluZyBzY2hlZHVsZVBBc3NpZ25tZW50c05vdFNvcnRlZAAFBKxUcmllZCB0byBhZGQgYW4gdW5zb3J0ZWQgc2V0IG9mIGFzc2lnbm1lbnRzBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LjkMDFxwb2xrYWRvdF9ydW50aW1lX2NvbW1vbjxwYXJhc19yZWdpc3RyYXIgUGFyYUluZm8IHEFjY291bnQBABxCYWxhbmNlARgADAEcbWFuYWdlcgABHEFjY291bnQAARxkZXBvc2l0GAEcQmFsYW5jZQABGGxvY2tlZD0MATBPcHRpb248Ym9vbD4AAD0MBBhPcHRpb24EBFQBIAEIEE5vbmUAAAAQU29tZQQAIAAAAQAAQQwQXHBvbGthZG90X3J1bnRpbWVfY29tbW9uPHBhcmFzX3JlZ2lzdHJhchhwYWxsZXQURXJyb3IEBFQAATg0Tm90UmVnaXN0ZXJlZAAABGRUaGUgSUQgaXMgbm90IHJlZ2lzdGVyZWQuREFscmVhZHlSZWdpc3RlcmVkAAEEdFRoZSBJRCBpcyBhbHJlYWR5IHJlZ2lzdGVyZWQuIE5vdE93bmVyAAIEnFRoZSBjYWxsZXIgaXMgbm90IHRoZSBvd25lciBvZiB0aGlzIElkLjBDb2RlVG9vTGFyZ2UAAwRcSW52YWxpZCBwYXJhIGNvZGUgc2l6ZS5ASGVhZERhdGFUb29MYXJnZQAEBHBJbnZhbGlkIHBhcmEgaGVhZCBkYXRhIHNpemUuME5vdFBhcmFjaGFpbgAFBGBQYXJhIGlzIG5vdCBhIFBhcmFjaGFpbi40Tm90UGFyYXRocmVhZAAGBLxQYXJhIGlzIG5vdCBhIFBhcmF0aHJlYWQgKG9uLWRlbWFuZCBwYXJhY2hhaW4pLkBDYW5ub3REZXJlZ2lzdGVyAAcEWENhbm5vdCBkZXJlZ2lzdGVyIHBhcmE8Q2Fubm90RG93bmdyYWRlAAgELQFDYW5ub3Qgc2NoZWR1bGUgZG93bmdyYWRlIG9mIGxlYXNlIGhvbGRpbmcgcGFyYWNoYWluIHRvIG9uLWRlbWFuZCBwYXJhY2hhaW40Q2Fubm90VXBncmFkZQAJBCUBQ2Fubm90IHNjaGVkdWxlIHVwZ3JhZGUgb2Ygb24tZGVtYW5kIHBhcmFjaGFpbiB0byBsZWFzZSBob2xkaW5nIHBhcmFjaGFpbihQYXJhTG9ja2VkAAoISQFQYXJhIGlzIGxvY2tlZCBmcm9tIG1hbmlwdWxhdGlvbiBieSB0aGUgbWFuYWdlci4gTXVzdCB1c2UgcGFyYWNoYWluIG9yIHJlbGF5IGNoYWluLGdvdmVybmFuY2UuLE5vdFJlc2VydmVkAAsE0FRoZSBJRCBnaXZlbiBmb3IgcmVnaXN0cmF0aW9uIGhhcyBub3QgYmVlbiByZXNlcnZlZC4sSW52YWxpZENvZGUADAR8VGhlIHZhbGlkYXRpb24gY29kZSBpcyBpbnZhbGlkLihDYW5ub3RTd2FwAA0IUQFDYW5ub3QgcGVyZm9ybSBhIHBhcmFjaGFpbiBzbG90IC8gbGlmZWN5Y2xlIHN3YXAuIENoZWNrIHRoYXQgdGhlIHN0YXRlIG9mIGJvdGggcGFyYXOEYXJlIGNvcnJlY3QgZm9yIHRoZSBzd2FwIHRvIHdvcmsuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LkUMAAAC7QcASQwQXHBvbGthZG90X3J1bnRpbWVfY29tbW9uFHNsb3RzGHBhbGxldBRFcnJvcgQEVAABCERQYXJhTm90T25ib2FyZGluZwAABIxUaGUgcGFyYWNoYWluIElEIGlzIG5vdCBvbmJvYXJkaW5nLihMZWFzZUVycm9yAAEEiFRoZXJlIHdhcyBhbiBlcnJvciB3aXRoIHRoZSBsZWFzZS4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuTQwAAAQIAI0CAFEMAAADJAAAAFUMAFUMBBhPcHRpb24EBFQBWQwBCBBOb25lAAAAEFNvbWUEAFkMAAABAABZDAAABAwAjQIYAF0MEFxwb2xrYWRvdF9ydW50aW1lX2NvbW1vbiBhdWN0aW9ucxhwYWxsZXQURXJyb3IEBFQAARxEQXVjdGlvbkluUHJvZ3Jlc3MAAASQVGhpcyBhdWN0aW9uIGlzIGFscmVhZHkgaW4gcHJvZ3Jlc3MuRExlYXNlUGVyaW9kSW5QYXN0AAEEgFRoZSBsZWFzZSBwZXJpb2QgaXMgaW4gdGhlIHBhc3QuRFBhcmFOb3RSZWdpc3RlcmVkAAIEWFBhcmEgaXMgbm90IHJlZ2lzdGVyZWRETm90Q3VycmVudEF1Y3Rpb24AAwRYTm90IGEgY3VycmVudCBhdWN0aW9uLihOb3RBdWN0aW9uAAQEPE5vdCBhbiBhdWN0aW9uLjBBdWN0aW9uRW5kZWQABQRoQXVjdGlvbiBoYXMgYWxyZWFkeSBlbmRlZC5AQWxyZWFkeUxlYXNlZE91dAAGBNhUaGUgcGFyYSBpcyBhbHJlYWR5IGxlYXNlZCBvdXQgZm9yIHBhcnQgb2YgdGhpcyByYW5nZS4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuYQwMXHBvbGthZG90X3J1bnRpbWVfY29tbW9uJGNyb3dkbG9hbiBGdW5kSW5mbxAkQWNjb3VudElkAQAcQmFsYW5jZQEYLEJsb2NrTnVtYmVyARAsTGVhc2VQZXJpb2QBEAAoASRkZXBvc2l0b3IAASRBY2NvdW50SWQAASB2ZXJpZmllch0FAUxPcHRpb248TXVsdGlTaWduZXI+AAEcZGVwb3NpdBgBHEJhbGFuY2UAARhyYWlzZWQYARxCYWxhbmNlAAEMZW5kEAEsQmxvY2tOdW1iZXIAAQxjYXAYARxCYWxhbmNlAAFEbGFzdF9jb250cmlidXRpb25lDAF0TGFzdENvbnRyaWJ1dGlvbjxCbG9ja051bWJlcj4AATBmaXJzdF9wZXJpb2QQASxMZWFzZVBlcmlvZAABLGxhc3RfcGVyaW9kEAEsTGVhc2VQZXJpb2QAAShmdW5kX2luZGV4EAEkRnVuZEluZGV4AABlDAxccG9sa2Fkb3RfcnVudGltZV9jb21tb24kY3Jvd2Rsb2FuQExhc3RDb250cmlidXRpb24ELEJsb2NrTnVtYmVyARABDBROZXZlcgAAACRQcmVFbmRpbmcEABABDHUzMgABABhFbmRpbmcEABABLEJsb2NrTnVtYmVyAAIAAGkMEFxwb2xrYWRvdF9ydW50aW1lX2NvbW1vbiRjcm93ZGxvYW4YcGFsbGV0FEVycm9yBARUAAFcREZpcnN0UGVyaW9kSW5QYXN0AAAE9FRoZSBjdXJyZW50IGxlYXNlIHBlcmlvZCBpcyBtb3JlIHRoYW4gdGhlIGZpcnN0IGxlYXNlIHBlcmlvZC5kRmlyc3RQZXJpb2RUb29GYXJJbkZ1dHVyZQABBBEBVGhlIGZpcnN0IGxlYXNlIHBlcmlvZCBuZWVkcyB0byBhdCBsZWFzdCBiZSBsZXNzIHRoYW4gMyBgbWF4X3ZhbHVlYC5sTGFzdFBlcmlvZEJlZm9yZUZpcnN0UGVyaW9kAAIE6Exhc3QgbGVhc2UgcGVyaW9kIG11c3QgYmUgZ3JlYXRlciB0aGFuIGZpcnN0IGxlYXNlIHBlcmlvZC5gTGFzdFBlcmlvZFRvb0ZhckluRnV0dXJlAAMELQFUaGUgbGFzdCBsZWFzZSBwZXJpb2QgY2Fubm90IGJlIG1vcmUgdGhhbiAzIHBlcmlvZHMgYWZ0ZXIgdGhlIGZpcnN0IHBlcmlvZC48Q2Fubm90RW5kSW5QYXN0AAQERQFUaGUgY2FtcGFpZ24gZW5kcyBiZWZvcmUgdGhlIGN1cnJlbnQgYmxvY2sgbnVtYmVyLiBUaGUgZW5kIG11c3QgYmUgaW4gdGhlIGZ1dHVyZS5ERW5kVG9vRmFySW5GdXR1cmUABQTAVGhlIGVuZCBkYXRlIGZvciB0aGlzIGNyb3dkbG9hbiBpcyBub3Qgc2Vuc2libGUuIE92ZXJmbG93AAYEWFRoZXJlIHdhcyBhbiBvdmVyZmxvdy5QQ29udHJpYnV0aW9uVG9vU21hbGwABwToVGhlIGNvbnRyaWJ1dGlvbiB3YXMgYmVsb3cgdGhlIG1pbmltdW0sIGBNaW5Db250cmlidXRpb25gLjRJbnZhbGlkUGFyYUlkAAgETEludmFsaWQgZnVuZCBpbmRleC4sQ2FwRXhjZWVkZWQACQSQQ29udHJpYnV0aW9ucyBleGNlZWQgbWF4aW11bSBhbW91bnQuWENvbnRyaWJ1dGlvblBlcmlvZE92ZXIACgSoVGhlIGNvbnRyaWJ1dGlvbiBwZXJpb2QgaGFzIGFscmVhZHkgZW5kZWQuNEludmFsaWRPcmlnaW4ACwSMVGhlIG9yaWdpbiBvZiB0aGlzIGNhbGwgaXMgaW52YWxpZC4wTm90UGFyYWNoYWluAAwEyFRoaXMgY3Jvd2Rsb2FuIGRvZXMgbm90IGNvcnJlc3BvbmQgdG8gYSBwYXJhY2hhaW4uLExlYXNlQWN0aXZlAA0EFQFUaGlzIHBhcmFjaGFpbiBsZWFzZSBpcyBzdGlsbCBhY3RpdmUgYW5kIHJldGlyZW1lbnQgY2Fubm90IHlldCBiZWdpbi5AQmlkT3JMZWFzZUFjdGl2ZQAOBDEBVGhpcyBwYXJhY2hhaW4ncyBiaWQgb3IgbGVhc2UgaXMgc3RpbGwgYWN0aXZlIGFuZCB3aXRoZHJhdyBjYW5ub3QgeWV0IGJlZ2luLjBGdW5kTm90RW5kZWQADwSAVGhlIGNyb3dkbG9hbiBoYXMgbm90IHlldCBlbmRlZC48Tm9Db250cmlidXRpb25zABAE0FRoZXJlIGFyZSBubyBjb250cmlidXRpb25zIHN0b3JlZCBpbiB0aGlzIGNyb3dkbG9hbi5ITm90UmVhZHlUb0Rpc3NvbHZlABEIVQFUaGUgY3Jvd2Rsb2FuIGlzIG5vdCByZWFkeSB0byBkaXNzb2x2ZS4gUG90ZW50aWFsbHkgc3RpbGwgaGFzIGEgc2xvdCBvciBpbiByZXRpcmVtZW50HHBlcmlvZC5ASW52YWxpZFNpZ25hdHVyZQASBEhJbnZhbGlkIHNpZ25hdHVyZS4wTWVtb1Rvb0xhcmdlABMEfFRoZSBwcm92aWRlZCBtZW1vIGlzIHRvbyBsYXJnZS5EQWxyZWFkeUluTmV3UmFpc2UAFASEVGhlIGZ1bmQgaXMgYWxyZWFkeSBpbiBgTmV3UmFpc2VgSFZyZkRlbGF5SW5Qcm9ncmVzcwAVBLRObyBjb250cmlidXRpb25zIGFsbG93ZWQgZHVyaW5nIHRoZSBWUkYgZGVsYXk0Tm9MZWFzZVBlcmlvZAAWBC0BQSBsZWFzZSBwZXJpb2QgaGFzIG5vdCBzdGFydGVkIHlldCwgZHVlIHRvIGFuIG9mZnNldCBpbiB0aGUgc3RhcnRpbmcgYmxvY2suBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0Lm0MEGxwb2xrYWRvdF9ydW50aW1lX3BhcmFjaGFpbnMgY29yZXRpbWUYcGFsbGV0FEVycm9yBARUAAEMJE5vdEJyb2tlcgAABCkBVGhlIHBhcmFpZCBtYWtpbmcgdGhlIGNhbGwgaXMgbm90IHRoZSBjb3JldGltZSBicm9rZXJhZ2Ugc3lzdGVtIHBhcmFjaGFpbi5YUmVxdWVzdGVkRnV0dXJlUmV2ZW51ZQABCEUBUmVxdWVzdGVkIHJldmVudWUgaW5mb3JtYXRpb24gYHdoZW5gIHBhcmFtZXRlciB3YXMgaW4gdGhlIGZ1dHVyZSBmcm9tIHRoZSBjdXJyZW50NGJsb2NrIGhlaWdodC5MQXNzZXRUcmFuc2ZlckZhaWxlZAACBLxGYWlsZWQgdG8gdHJhbnNmZXIgYXNzZXRzIHRvIHRoZSBjb3JldGltZSBjaGFpbgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC5xDAwocGFsbGV0X3hjbRhwYWxsZXQsUXVlcnlTdGF0dXMELEJsb2NrTnVtYmVyARABDBxQZW5kaW5nEAEkcmVzcG9uZGVyRQEBRFZlcnNpb25lZExvY2F0aW9uAAFMbWF5YmVfbWF0Y2hfcXVlcmllcnUMAWRPcHRpb248VmVyc2lvbmVkTG9jYXRpb24+AAEwbWF5YmVfbm90aWZ5eQwBQE9wdGlvbjwodTgsIHU4KT4AARx0aW1lb3V0EAEsQmxvY2tOdW1iZXIAAAA8VmVyc2lvbk5vdGlmaWVyCAEYb3JpZ2luRQEBRFZlcnNpb25lZExvY2F0aW9uAAEkaXNfYWN0aXZlIAEQYm9vbAABABRSZWFkeQgBIHJlc3BvbnNlgQwBRFZlcnNpb25lZFJlc3BvbnNlAAEIYXQQASxCbG9ja051bWJlcgACAAB1DAQYT3B0aW9uBARUAUUBAQgQTm9uZQAAABBTb21lBABFAQAAAQAAeQwEGE9wdGlvbgQEVAF9DAEIEE5vbmUAAAAQU29tZQQAfQwAAAEAAH0MAAAECAgIAIEMCAx4Y21EVmVyc2lvbmVkUmVzcG9uc2UAAQwIVjIEAIkFATB2Mjo6UmVzcG9uc2UAAgAIVjMEANEFATB2Mzo6UmVzcG9uc2UAAwAIVjQEADUGATB2NDo6UmVzcG9uc2UABAAAhQwAAAQIEEUBAIkMAAAEDDAoEACNDAxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAZEMBFMAAAQAlQwBGFZlYzxUPgAAkQwAAAQIRQEQAJUMAAACkQwAmQwMKHBhbGxldF94Y20YcGFsbGV0VFZlcnNpb25NaWdyYXRpb25TdGFnZQABEFxNaWdyYXRlU3VwcG9ydGVkVmVyc2lvbgAAAFxNaWdyYXRlVmVyc2lvbk5vdGlmaWVycwABAFBOb3RpZnlDdXJyZW50VGFyZ2V0cwQAnQwBPE9wdGlvbjxWZWM8dTg+PgACAGhNaWdyYXRlQW5kTm90aWZ5T2xkVGFyZ2V0cwADAACdDAQYT3B0aW9uBARUATgBCBBOb25lAAAAEFNvbWUEADgAAAEAAKEMAAAEDBAAkQYApQwMKHBhbGxldF94Y20YcGFsbGV0aFJlbW90ZUxvY2tlZEZ1bmdpYmxlUmVjb3JkCEhDb25zdW1lcklkZW50aWZpZXIBjDBNYXhDb25zdW1lcnMAABABGGFtb3VudBgBEHUxMjgAARRvd25lckUBAURWZXJzaW9uZWRMb2NhdGlvbgABGGxvY2tlckUBAURWZXJzaW9uZWRMb2NhdGlvbgABJGNvbnN1bWVyc6kMAdBCb3VuZGVkVmVjPChDb25zdW1lcklkZW50aWZpZXIsIHUxMjgpLCBNYXhDb25zdW1lcnM+AACpDAxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAa0MBFMAAAQAsQwBGFZlYzxUPgAArQwAAAQIjBgAsQwAAAKtDAC1DAxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAbkMBFMAAAQAvQwBGFZlYzxUPgAAuQwAAAQIGEUBAL0MAAACuQwAwQwMKHBhbGxldF94Y20YcGFsbGV0FEVycm9yBARUAAFgLFVucmVhY2hhYmxlAAAIXQFUaGUgZGVzaXJlZCBkZXN0aW5hdGlvbiB3YXMgdW5yZWFjaGFibGUsIGdlbmVyYWxseSBiZWNhdXNlIHRoZXJlIGlzIGEgbm8gd2F5IG9mIHJvdXRpbmcYdG8gaXQuLFNlbmRGYWlsdXJlAAEIQQFUaGVyZSB3YXMgc29tZSBvdGhlciBpc3N1ZSAoaS5lLiBub3QgdG8gZG8gd2l0aCByb3V0aW5nKSBpbiBzZW5kaW5nIHRoZSBtZXNzYWdlLshQZXJoYXBzIGEgbGFjayBvZiBzcGFjZSBmb3IgYnVmZmVyaW5nIHRoZSBtZXNzYWdlLiBGaWx0ZXJlZAACBJxUaGUgbWVzc2FnZSBleGVjdXRpb24gZmFpbHMgdGhlIGZpbHRlci5IVW53ZWlnaGFibGVNZXNzYWdlAAMEtFRoZSBtZXNzYWdlJ3Mgd2VpZ2h0IGNvdWxkIG5vdCBiZSBkZXRlcm1pbmVkLmBEZXN0aW5hdGlvbk5vdEludmVydGlibGUABATcVGhlIGRlc3RpbmF0aW9uIGBMb2NhdGlvbmAgcHJvdmlkZWQgY2Fubm90IGJlIGludmVydGVkLhRFbXB0eQAFBIBUaGUgYXNzZXRzIHRvIGJlIHNlbnQgYXJlIGVtcHR5LjhDYW5ub3RSZWFuY2hvcgAGBDUBQ291bGQgbm90IHJlLWFuY2hvciB0aGUgYXNzZXRzIHRvIGRlY2xhcmUgdGhlIGZlZXMgZm9yIHRoZSBkZXN0aW5hdGlvbiBjaGFpbi40VG9vTWFueUFzc2V0cwAHBMRUb28gbWFueSBhc3NldHMgaGF2ZSBiZWVuIGF0dGVtcHRlZCBmb3IgdHJhbnNmZXIuNEludmFsaWRPcmlnaW4ACAR4T3JpZ2luIGlzIGludmFsaWQgZm9yIHNlbmRpbmcuKEJhZFZlcnNpb24ACQQhAVRoZSB2ZXJzaW9uIG9mIHRoZSBgVmVyc2lvbmVkYCB2YWx1ZSB1c2VkIGlzIG5vdCBhYmxlIHRvIGJlIGludGVycHJldGVkLixCYWRMb2NhdGlvbgAKCEEBVGhlIGdpdmVuIGxvY2F0aW9uIGNvdWxkIG5vdCBiZSB1c2VkIChlLmcuIGJlY2F1c2UgaXQgY2Fubm90IGJlIGV4cHJlc3NlZCBpbiB0aGVgZGVzaXJlZCB2ZXJzaW9uIG9mIFhDTSkuOE5vU3Vic2NyaXB0aW9uAAsEvFRoZSByZWZlcmVuY2VkIHN1YnNjcmlwdGlvbiBjb3VsZCBub3QgYmUgZm91bmQuREFscmVhZHlTdWJzY3JpYmVkAAwEEQFUaGUgbG9jYXRpb24gaXMgaW52YWxpZCBzaW5jZSBpdCBhbHJlYWR5IGhhcyBhIHN1YnNjcmlwdGlvbiBmcm9tIHVzLlhDYW5ub3RDaGVja091dFRlbGVwb3J0AA0EKQFDb3VsZCBub3QgY2hlY2stb3V0IHRoZSBhc3NldHMgZm9yIHRlbGVwb3J0YXRpb24gdG8gdGhlIGRlc3RpbmF0aW9uIGNoYWluLihMb3dCYWxhbmNlAA4EQQFUaGUgb3duZXIgZG9lcyBub3Qgb3duIChhbGwpIG9mIHRoZSBhc3NldCB0aGF0IHRoZXkgd2lzaCB0byBkbyB0aGUgb3BlcmF0aW9uIG9uLjBUb29NYW55TG9ja3MADwTAVGhlIGFzc2V0IG93bmVyIGhhcyB0b28gbWFueSBsb2NrcyBvbiB0aGUgYXNzZXQuTEFjY291bnROb3RTb3ZlcmVpZ24AEAQxAVRoZSBnaXZlbiBhY2NvdW50IGlzIG5vdCBhbiBpZGVudGlmaWFibGUgc292ZXJlaWduIGFjY291bnQgZm9yIGFueSBsb2NhdGlvbi4oRmVlc05vdE1ldAARBCkBVGhlIG9wZXJhdGlvbiByZXF1aXJlZCBmZWVzIHRvIGJlIHBhaWQgd2hpY2ggdGhlIGluaXRpYXRvciBjb3VsZCBub3QgbWVldC4wTG9ja05vdEZvdW5kABIE9EEgcmVtb3RlIGxvY2sgd2l0aCB0aGUgY29ycmVzcG9uZGluZyBkYXRhIGNvdWxkIG5vdCBiZSBmb3VuZC4USW5Vc2UAEwRJAVRoZSB1bmxvY2sgb3BlcmF0aW9uIGNhbm5vdCBzdWNjZWVkIGJlY2F1c2UgdGhlcmUgYXJlIHN0aWxsIGNvbnN1bWVycyBvZiB0aGUgbG9jay5oSW52YWxpZEFzc2V0VW5rbm93blJlc2VydmUAFQTwSW52YWxpZCBhc3NldCwgcmVzZXJ2ZSBjaGFpbiBjb3VsZCBub3QgYmUgZGV0ZXJtaW5lZCBmb3IgaXQueEludmFsaWRBc3NldFVuc3VwcG9ydGVkUmVzZXJ2ZQAWBEUBSW52YWxpZCBhc3NldCwgZG8gbm90IHN1cHBvcnQgcmVtb3RlIGFzc2V0IHJlc2VydmVzIHdpdGggZGlmZmVyZW50IGZlZXMgcmVzZXJ2ZXMuPFRvb01hbnlSZXNlcnZlcwAXBEkBVG9vIG1hbnkgYXNzZXRzIHdpdGggZGlmZmVyZW50IHJlc2VydmUgbG9jYXRpb25zIGhhdmUgYmVlbiBhdHRlbXB0ZWQgZm9yIHRyYW5zZmVyLmBMb2NhbEV4ZWN1dGlvbkluY29tcGxldGUAGAR8TG9jYWwgWENNIGV4ZWN1dGlvbiBpbmNvbXBsZXRlLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC7FDAhQcGFsbGV0X21lc3NhZ2VfcXVldWUkQm9va1N0YXRlBDRNZXNzYWdlT3JpZ2luAZkGABgBFGJlZ2luEAEkUGFnZUluZGV4AAEMZW5kEAEkUGFnZUluZGV4AAEUY291bnQQASRQYWdlSW5kZXgAAUByZWFkeV9uZWlnaGJvdXJzyQwBhE9wdGlvbjxOZWlnaGJvdXJzPE1lc3NhZ2VPcmlnaW4+PgABNG1lc3NhZ2VfY291bnQwAQx1NjQAARBzaXplMAEMdTY0AADJDAQYT3B0aW9uBARUAc0MAQgQTm9uZQAAABBTb21lBADNDAAAAQAAzQwIUHBhbGxldF9tZXNzYWdlX3F1ZXVlKE5laWdoYm91cnMENE1lc3NhZ2VPcmlnaW4BmQYACAEQcHJldpkGATRNZXNzYWdlT3JpZ2luAAEQbmV4dJkGATRNZXNzYWdlT3JpZ2luAADRDAAABAiZBhAA1QwIUHBhbGxldF9tZXNzYWdlX3F1ZXVlEFBhZ2UIEFNpemUBECBIZWFwU2l6ZQAAGAEkcmVtYWluaW5nEAEQU2l6ZQABOHJlbWFpbmluZ19zaXplEAEQU2l6ZQABLGZpcnN0X2luZGV4EAEQU2l6ZQABFGZpcnN0EAEQU2l6ZQABEGxhc3QQARBTaXplAAEQaGVhcNkMAZxCb3VuZGVkVmVjPHU4LCBJbnRvVTMyPEhlYXBTaXplLCBTaXplPj4AANkMDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBCARTAAAEADgBGFZlYzxUPgAA3QwMUHBhbGxldF9tZXNzYWdlX3F1ZXVlGHBhbGxldBRFcnJvcgQEVAABJCxOb3RSZWFwYWJsZQAACEkBUGFnZSBpcyBub3QgcmVhcGFibGUgYmVjYXVzZSBpdCBoYXMgaXRlbXMgcmVtYWluaW5nIHRvIGJlIHByb2Nlc3NlZCBhbmQgaXMgbm90IG9sZBxlbm91Z2guGE5vUGFnZQABBIRQYWdlIHRvIGJlIHJlYXBlZCBkb2VzIG5vdCBleGlzdC4kTm9NZXNzYWdlAAIEqFRoZSByZWZlcmVuY2VkIG1lc3NhZ2UgY291bGQgbm90IGJlIGZvdW5kLkBBbHJlYWR5UHJvY2Vzc2VkAAMEAQFUaGUgbWVzc2FnZSB3YXMgYWxyZWFkeSBwcm9jZXNzZWQgYW5kIGNhbm5vdCBiZSBwcm9jZXNzZWQgYWdhaW4uGFF1ZXVlZAAEBKxUaGUgbWVzc2FnZSBpcyBxdWV1ZWQgZm9yIGZ1dHVyZSBleGVjdXRpb24uSEluc3VmZmljaWVudFdlaWdodAAFBBkBVGhlcmUgaXMgdGVtcG9yYXJpbHkgbm90IGVub3VnaCB3ZWlnaHQgdG8gY29udGludWUgc2VydmljaW5nIG1lc3NhZ2VzLmBUZW1wb3JhcmlseVVucHJvY2Vzc2FibGUABhCoVGhpcyBtZXNzYWdlIGlzIHRlbXBvcmFyaWx5IHVucHJvY2Vzc2FibGUuAFkBU3VjaCBlcnJvcnMgYXJlIGV4cGVjdGVkLCBidXQgbm90IGd1YXJhbnRlZWQsIHRvIHJlc29sdmUgdGhlbXNlbHZlcyBldmVudHVhbGx5IHRocm91Z2gkcmV0cnlpbmcuLFF1ZXVlUGF1c2VkAAcM7FRoZSBxdWV1ZSBpcyBwYXVzZWQgYW5kIG5vIG1lc3NhZ2UgY2FuIGJlIGV4ZWN1dGVkIGZyb20gaXQuAB0BVGhpcyBjYW4gY2hhbmdlIGF0IGFueSB0aW1lIGFuZCBtYXkgcmVzb2x2ZSBpbiB0aGUgZnV0dXJlIGJ5IHJlLXRyeWluZy5MUmVjdXJzaXZlRGlzYWxsb3dlZAAIBDEBQW5vdGhlciBjYWxsIGlzIGluIHByb2dyZXNzIGFuZCBuZWVkcyB0byBmaW5pc2ggYmVmb3JlIHRoaXMgY2FsbCBjYW4gaGFwcGVuLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC7hDAxEcGFsbGV0X2Fzc2V0X3JhdGUYcGFsbGV0FEVycm9yBARUAAEMQFVua25vd25Bc3NldEtpbmQAAAR4VGhlIGdpdmVuIGFzc2V0IElEIGlzIHVua25vd24uNEFscmVhZHlFeGlzdHMAAQRRAVRoZSBnaXZlbiBhc3NldCBJRCBhbHJlYWR5IGhhcyBhbiBhc3NpZ25lZCBjb252ZXJzaW9uIHJhdGUgYW5kIGNhbm5vdCBiZSByZS1jcmVhdGVkLiBPdmVyZmxvdwACBMxPdmVyZmxvdyBvY3VycmVkIHdoZW4gY2FsY3VsYXRpbmcgdGhlIGludmVyc2UgcmF0ZS4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQu5QwMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEpAgRTAAAEAOkMARhWZWM8VD4AAOkMAAACKQIA7QwMMHBhbGxldF9iZWVmeRhwYWxsZXQURXJyb3IEBFQAARBgSW52YWxpZEtleU93bmVyc2hpcFByb29mAAAEMQFBIGtleSBvd25lcnNoaXAgcHJvb2YgcHJvdmlkZWQgYXMgcGFydCBvZiBhbiBlcXVpdm9jYXRpb24gcmVwb3J0IGlzIGludmFsaWQuYEludmFsaWRFcXVpdm9jYXRpb25Qcm9vZgABBDEBQW4gZXF1aXZvY2F0aW9uIHByb29mIHByb3ZpZGVkIGFzIHBhcnQgb2YgYW4gZXF1aXZvY2F0aW9uIHJlcG9ydCBpcyBpbnZhbGlkLlhEdXBsaWNhdGVPZmZlbmNlUmVwb3J0AAIEFQFBIGdpdmVuIGVxdWl2b2NhdGlvbiByZXBvcnQgaXMgdmFsaWQgYnV0IGFscmVhZHkgcHJldmlvdXNseSByZXBvcnRlZC5QSW52YWxpZENvbmZpZ3VyYXRpb24AAwSMU3VibWl0dGVkIGNvbmZpZ3VyYXRpb24gaXMgaW52YWxpZC4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQu8QwMSHNwX2NvbnNlbnN1c19iZWVmeQxtbXJEQmVlZnlBdXRob3JpdHlTZXQEWEF1dGhvcml0eVNldENvbW1pdG1lbnQBNAAMAQhpZDABVGNyYXRlOjpWYWxpZGF0b3JTZXRJZAABDGxlbhABDHUzMgABRGtleXNldF9jb21taXRtZW50NAFYQXV0aG9yaXR5U2V0Q29tbWl0bWVudAAA9QwQXHBvbGthZG90X3J1bnRpbWVfY29tbW9uSHBhcmFzX3N1ZG9fd3JhcHBlchhwYWxsZXQURXJyb3IEBFQAASQ8UGFyYURvZXNudEV4aXN0AAAEqFRoZSBzcGVjaWZpZWQgcGFyYWNoYWluIGlzIG5vdCByZWdpc3RlcmVkLkRQYXJhQWxyZWFkeUV4aXN0cwABBLhUaGUgc3BlY2lmaWVkIHBhcmFjaGFpbiBpcyBhbHJlYWR5IHJlZ2lzdGVyZWQuVEV4Y2VlZHNNYXhNZXNzYWdlU2l6ZQACCEEBQSBETVAgbWVzc2FnZSBjb3VsZG4ndCBiZSBzZW50IGJlY2F1c2UgaXQgZXhjZWVkcyB0aGUgbWF4aW11bSBzaXplIGFsbG93ZWQgZm9yIGFEZG93bndhcmQgbWVzc2FnZS44Q291bGRudENsZWFudXAAAwSAQ291bGQgbm90IHNjaGVkdWxlIHBhcmEgY2xlYW51cC40Tm90UGFyYXRocmVhZAAEBJxOb3QgYSBwYXJhdGhyZWFkIChvbi1kZW1hbmQgcGFyYWNoYWluKS4wTm90UGFyYWNoYWluAAUEeE5vdCBhIGxlYXNlIGhvbGRpbmcgcGFyYWNoYWluLjRDYW5ub3RVcGdyYWRlAAYE+ENhbm5vdCB1cGdyYWRlIG9uLWRlbWFuZCBwYXJhY2hhaW4gdG8gbGVhc2UgaG9sZGluZyBwYXJhY2hhaW4uPENhbm5vdERvd25ncmFkZQAHBNhDYW5ub3QgZG93bmdyYWRlIGxlYXNlIGhvbGRpbmcgcGFyYWNoYWluIHRvIG9uLWRlbWFuZC4wVG9vTWFueUNvcmVzAAgEzFRoZXJlIGFyZSBtb3JlIGNvcmVzIHRoYW4gc3VwcG9ydGVkIGJ5IHRoZSBydW50aW1lLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC75DAwscGFsbGV0X3N1ZG8YcGFsbGV0FEVycm9yBARUAAEELFJlcXVpcmVTdWRvAAAEgFNlbmRlciBtdXN0IGJlIHRoZSBTdWRvIGFjY291bnQuBGhFcnJvciBmb3IgdGhlIFN1ZG8gcGFsbGV0Lv0MAAAEKAENBQ0JDQ0NEQ0ZDR0NIQ0lDSkNAAENEDBmcmFtZV9zeXN0ZW0oZXh0ZW5zaW9uc1RjaGVja19ub25femVyb19zZW5kZXJIQ2hlY2tOb25aZXJvU2VuZGVyBARUAAAAAAUNEDBmcmFtZV9zeXN0ZW0oZXh0ZW5zaW9uc0hjaGVja19zcGVjX3ZlcnNpb25AQ2hlY2tTcGVjVmVyc2lvbgQEVAAAAAAJDRAwZnJhbWVfc3lzdGVtKGV4dGVuc2lvbnNAY2hlY2tfdHhfdmVyc2lvbjhDaGVja1R4VmVyc2lvbgQEVAAAAAANDRAwZnJhbWVfc3lzdGVtKGV4dGVuc2lvbnM0Y2hlY2tfZ2VuZXNpczBDaGVja0dlbmVzaXMEBFQAAAAAEQ0QMGZyYW1lX3N5c3RlbShleHRlbnNpb25zPGNoZWNrX21vcnRhbGl0eThDaGVja01vcnRhbGl0eQQEVAAABAAVDQEMRXJhAAAVDRAoc3BfcnVudGltZRxnZW5lcmljDGVyYQxFcmEAAQEEIEltbW9ydGFsAAAAHE1vcnRhbDEEAAgAAAEAHE1vcnRhbDIEAAgAAAIAHE1vcnRhbDMEAAgAAAMAHE1vcnRhbDQEAAgAAAQAHE1vcnRhbDUEAAgAAAUAHE1vcnRhbDYEAAgAAAYAHE1vcnRhbDcEAAgAAAcAHE1vcnRhbDgEAAgAAAgAHE1vcnRhbDkEAAgAAAkAIE1vcnRhbDEwBAAIAAAKACBNb3J0YWwxMQQACAAACwAgTW9ydGFsMTIEAAgAAAwAIE1vcnRhbDEzBAAIAAANACBNb3J0YWwxNAQACAAADgAgTW9ydGFsMTUEAAgAAA8AIE1vcnRhbDE2BAAIAAAQACBNb3J0YWwxNwQACAAAEQAgTW9ydGFsMTgEAAgAABIAIE1vcnRhbDE5BAAIAAATACBNb3J0YWwyMAQACAAAFAAgTW9ydGFsMjEEAAgAABUAIE1vcnRhbDIyBAAIAAAWACBNb3J0YWwyMwQACAAAFwAgTW9ydGFsMjQEAAgAABgAIE1vcnRhbDI1BAAIAAAZACBNb3J0YWwyNgQACAAAGgAgTW9ydGFsMjcEAAgAABsAIE1vcnRhbDI4BAAIAAAcACBNb3J0YWwyOQQACAAAHQAgTW9ydGFsMzAEAAgAAB4AIE1vcnRhbDMxBAAIAAAfACBNb3J0YWwzMgQACAAAIAAgTW9ydGFsMzMEAAgAACEAIE1vcnRhbDM0BAAIAAAiACBNb3J0YWwzNQQACAAAIwAgTW9ydGFsMzYEAAgAACQAIE1vcnRhbDM3BAAIAAAlACBNb3J0YWwzOAQACAAAJgAgTW9ydGFsMzkEAAgAACcAIE1vcnRhbDQwBAAIAAAoACBNb3J0YWw0MQQACAAAKQAgTW9ydGFsNDIEAAgAACoAIE1vcnRhbDQzBAAIAAArACBNb3J0YWw0NAQACAAALAAgTW9ydGFsNDUEAAgAAC0AIE1vcnRhbDQ2BAAIAAAuACBNb3J0YWw0NwQACAAALwAgTW9ydGFsNDgEAAgAADAAIE1vcnRhbDQ5BAAIAAAxACBNb3J0YWw1MAQACAAAMgAgTW9ydGFsNTEEAAgAADMAIE1vcnRhbDUyBAAIAAA0ACBNb3J0YWw1MwQACAAANQAgTW9ydGFsNTQEAAgAADYAIE1vcnRhbDU1BAAIAAA3ACBNb3J0YWw1NgQACAAAOAAgTW9ydGFsNTcEAAgAADkAIE1vcnRhbDU4BAAIAAA6ACBNb3J0YWw1OQQACAAAOwAgTW9ydGFsNjAEAAgAADwAIE1vcnRhbDYxBAAIAAA9ACBNb3J0YWw2MgQACAAAPgAgTW9ydGFsNjMEAAgAAD8AIE1vcnRhbDY0BAAIAABAACBNb3J0YWw2NQQACAAAQQAgTW9ydGFsNjYEAAgAAEIAIE1vcnRhbDY3BAAIAABDACBNb3J0YWw2OAQACAAARAAgTW9ydGFsNjkEAAgAAEUAIE1vcnRhbDcwBAAIAABGACBNb3J0YWw3MQQACAAARwAgTW9ydGFsNzIEAAgAAEgAIE1vcnRhbDczBAAIAABJACBNb3J0YWw3NAQACAAASgAgTW9ydGFsNzUEAAgAAEsAIE1vcnRhbDc2BAAIAABMACBNb3J0YWw3NwQACAAATQAgTW9ydGFsNzgEAAgAAE4AIE1vcnRhbDc5BAAIAABPACBNb3J0YWw4MAQACAAAUAAgTW9ydGFsODEEAAgAAFEAIE1vcnRhbDgyBAAIAABSACBNb3J0YWw4MwQACAAAUwAgTW9ydGFsODQEAAgAAFQAIE1vcnRhbDg1BAAIAABVACBNb3J0YWw4NgQACAAAVgAgTW9ydGFsODcEAAgAAFcAIE1vcnRhbDg4BAAIAABYACBNb3J0YWw4OQQACAAAWQAgTW9ydGFsOTAEAAgAAFoAIE1vcnRhbDkxBAAIAABbACBNb3J0YWw5MgQACAAAXAAgTW9ydGFsOTMEAAgAAF0AIE1vcnRhbDk0BAAIAABeACBNb3J0YWw5NQQACAAAXwAgTW9ydGFsOTYEAAgAAGAAIE1vcnRhbDk3BAAIAABhACBNb3J0YWw5OAQACAAAYgAgTW9ydGFsOTkEAAgAAGMAJE1vcnRhbDEwMAQACAAAZAAkTW9ydGFsMTAxBAAIAABlACRNb3J0YWwxMDIEAAgAAGYAJE1vcnRhbDEwMwQACAAAZwAkTW9ydGFsMTA0BAAIAABoACRNb3J0YWwxMDUEAAgAAGkAJE1vcnRhbDEwNgQACAAAagAkTW9ydGFsMTA3BAAIAABrACRNb3J0YWwxMDgEAAgAAGwAJE1vcnRhbDEwOQQACAAAbQAkTW9ydGFsMTEwBAAIAABuACRNb3J0YWwxMTEEAAgAAG8AJE1vcnRhbDExMgQACAAAcAAkTW9ydGFsMTEzBAAIAABxACRNb3J0YWwxMTQEAAgAAHIAJE1vcnRhbDExNQQACAAAcwAkTW9ydGFsMTE2BAAIAAB0ACRNb3J0YWwxMTcEAAgAAHUAJE1vcnRhbDExOAQACAAAdgAkTW9ydGFsMTE5BAAIAAB3ACRNb3J0YWwxMjAEAAgAAHgAJE1vcnRhbDEyMQQACAAAeQAkTW9ydGFsMTIyBAAIAAB6ACRNb3J0YWwxMjMEAAgAAHsAJE1vcnRhbDEyNAQACAAAfAAkTW9ydGFsMTI1BAAIAAB9ACRNb3J0YWwxMjYEAAgAAH4AJE1vcnRhbDEyNwQACAAAfwAkTW9ydGFsMTI4BAAIAACAACRNb3J0YWwxMjkEAAgAAIEAJE1vcnRhbDEzMAQACAAAggAkTW9ydGFsMTMxBAAIAACDACRNb3J0YWwxMzIEAAgAAIQAJE1vcnRhbDEzMwQACAAAhQAkTW9ydGFsMTM0BAAIAACGACRNb3J0YWwxMzUEAAgAAIcAJE1vcnRhbDEzNgQACAAAiAAkTW9ydGFsMTM3BAAIAACJACRNb3J0YWwxMzgEAAgAAIoAJE1vcnRhbDEzOQQACAAAiwAkTW9ydGFsMTQwBAAIAACMACRNb3J0YWwxNDEEAAgAAI0AJE1vcnRhbDE0MgQACAAAjgAkTW9ydGFsMTQzBAAIAACPACRNb3J0YWwxNDQEAAgAAJAAJE1vcnRhbDE0NQQACAAAkQAkTW9ydGFsMTQ2BAAIAACSACRNb3J0YWwxNDcEAAgAAJMAJE1vcnRhbDE0OAQACAAAlAAkTW9ydGFsMTQ5BAAIAACVACRNb3J0YWwxNTAEAAgAAJYAJE1vcnRhbDE1MQQACAAAlwAkTW9ydGFsMTUyBAAIAACYACRNb3J0YWwxNTMEAAgAAJkAJE1vcnRhbDE1NAQACAAAmgAkTW9ydGFsMTU1BAAIAACbACRNb3J0YWwxNTYEAAgAAJwAJE1vcnRhbDE1NwQACAAAnQAkTW9ydGFsMTU4BAAIAACeACRNb3J0YWwxNTkEAAgAAJ8AJE1vcnRhbDE2MAQACAAAoAAkTW9ydGFsMTYxBAAIAAChACRNb3J0YWwxNjIEAAgAAKIAJE1vcnRhbDE2MwQACAAAowAkTW9ydGFsMTY0BAAIAACkACRNb3J0YWwxNjUEAAgAAKUAJE1vcnRhbDE2NgQACAAApgAkTW9ydGFsMTY3BAAIAACnACRNb3J0YWwxNjgEAAgAAKgAJE1vcnRhbDE2OQQACAAAqQAkTW9ydGFsMTcwBAAIAACqACRNb3J0YWwxNzEEAAgAAKsAJE1vcnRhbDE3MgQACAAArAAkTW9ydGFsMTczBAAIAACtACRNb3J0YWwxNzQEAAgAAK4AJE1vcnRhbDE3NQQACAAArwAkTW9ydGFsMTc2BAAIAACwACRNb3J0YWwxNzcEAAgAALEAJE1vcnRhbDE3OAQACAAAsgAkTW9ydGFsMTc5BAAIAACzACRNb3J0YWwxODAEAAgAALQAJE1vcnRhbDE4MQQACAAAtQAkTW9ydGFsMTgyBAAIAAC2ACRNb3J0YWwxODMEAAgAALcAJE1vcnRhbDE4NAQACAAAuAAkTW9ydGFsMTg1BAAIAAC5ACRNb3J0YWwxODYEAAgAALoAJE1vcnRhbDE4NwQACAAAuwAkTW9ydGFsMTg4BAAIAAC8ACRNb3J0YWwxODkEAAgAAL0AJE1vcnRhbDE5MAQACAAAvgAkTW9ydGFsMTkxBAAIAAC/ACRNb3J0YWwxOTIEAAgAAMAAJE1vcnRhbDE5MwQACAAAwQAkTW9ydGFsMTk0BAAIAADCACRNb3J0YWwxOTUEAAgAAMMAJE1vcnRhbDE5NgQACAAAxAAkTW9ydGFsMTk3BAAIAADFACRNb3J0YWwxOTgEAAgAAMYAJE1vcnRhbDE5OQQACAAAxwAkTW9ydGFsMjAwBAAIAADIACRNb3J0YWwyMDEEAAgAAMkAJE1vcnRhbDIwMgQACAAAygAkTW9ydGFsMjAzBAAIAADLACRNb3J0YWwyMDQEAAgAAMwAJE1vcnRhbDIwNQQACAAAzQAkTW9ydGFsMjA2BAAIAADOACRNb3J0YWwyMDcEAAgAAM8AJE1vcnRhbDIwOAQACAAA0AAkTW9ydGFsMjA5BAAIAADRACRNb3J0YWwyMTAEAAgAANIAJE1vcnRhbDIxMQQACAAA0wAkTW9ydGFsMjEyBAAIAADUACRNb3J0YWwyMTMEAAgAANUAJE1vcnRhbDIxNAQACAAA1gAkTW9ydGFsMjE1BAAIAADXACRNb3J0YWwyMTYEAAgAANgAJE1vcnRhbDIxNwQACAAA2QAkTW9ydGFsMjE4BAAIAADaACRNb3J0YWwyMTkEAAgAANsAJE1vcnRhbDIyMAQACAAA3AAkTW9ydGFsMjIxBAAIAADdACRNb3J0YWwyMjIEAAgAAN4AJE1vcnRhbDIyMwQACAAA3wAkTW9ydGFsMjI0BAAIAADgACRNb3J0YWwyMjUEAAgAAOEAJE1vcnRhbDIyNgQACAAA4gAkTW9ydGFsMjI3BAAIAADjACRNb3J0YWwyMjgEAAgAAOQAJE1vcnRhbDIyOQQACAAA5QAkTW9ydGFsMjMwBAAIAADmACRNb3J0YWwyMzEEAAgAAOcAJE1vcnRhbDIzMgQACAAA6AAkTW9ydGFsMjMzBAAIAADpACRNb3J0YWwyMzQEAAgAAOoAJE1vcnRhbDIzNQQACAAA6wAkTW9ydGFsMjM2BAAIAADsACRNb3J0YWwyMzcEAAgAAO0AJE1vcnRhbDIzOAQACAAA7gAkTW9ydGFsMjM5BAAIAADvACRNb3J0YWwyNDAEAAgAAPAAJE1vcnRhbDI0MQQACAAA8QAkTW9ydGFsMjQyBAAIAADyACRNb3J0YWwyNDMEAAgAAPMAJE1vcnRhbDI0NAQACAAA9AAkTW9ydGFsMjQ1BAAIAAD1ACRNb3J0YWwyNDYEAAgAAPYAJE1vcnRhbDI0NwQACAAA9wAkTW9ydGFsMjQ4BAAIAAD4ACRNb3J0YWwyNDkEAAgAAPkAJE1vcnRhbDI1MAQACAAA+gAkTW9ydGFsMjUxBAAIAAD7ACRNb3J0YWwyNTIEAAgAAPwAJE1vcnRhbDI1MwQACAAA/QAkTW9ydGFsMjU0BAAIAAD+ACRNb3J0YWwyNTUEAAgAAP8AABkNEDBmcmFtZV9zeXN0ZW0oZXh0ZW5zaW9ucyxjaGVja19ub25jZShDaGVja05vbmNlBARUAAAEAOwBIFQ6Ok5vbmNlAAAdDRAwZnJhbWVfc3lzdGVtKGV4dGVuc2lvbnMwY2hlY2tfd2VpZ2h0LENoZWNrV2VpZ2h0BARUAAAAACENCGhwYWxsZXRfdHJhbnNhY3Rpb25fcGF5bWVudGBDaGFyZ2VUcmFuc2FjdGlvblBheW1lbnQEBFQAAAQA/AEwQmFsYW5jZU9mPFQ+AAAlDQxccG9sa2Fkb3RfcnVudGltZV9jb21tb24YY2xhaW1zSFByZXZhbGlkYXRlQXR0ZXN0cwQEVAAAAAApDQh0ZnJhbWVfbWV0YWRhdGFfaGFzaF9leHRlbnNpb25EQ2hlY2tNZXRhZGF0YUhhc2gEBFQAAAQBEG1vZGUtDQEQTW9kZQAALQ0IdGZyYW1lX21ldGFkYXRhX2hhc2hfZXh0ZW5zaW9uEE1vZGUAAQggRGlzYWJsZWQAAAAcRW5hYmxlZAABAAAxDQg0cGFzZW9fcnVudGltZRxSdW50aW1lAAAAADUNEChzcF9ydW50aW1lHGdlbmVyaWMUYmxvY2sUQmxvY2sIGEhlYWRlcgGhASRFeHRyaW5zaWMBOQ0ACAEYaGVhZGVyoQEBGEhlYWRlcgABKGV4dHJpbnNpY3M9DQE4VmVjPEV4dHJpbnNpYz4AADkNEChzcF9ydW50aW1lHGdlbmVyaWNMdW5jaGVja2VkX2V4dHJpbnNpY0hVbmNoZWNrZWRFeHRyaW5zaWMQHEFkZHJlc3MBxQEQQ2FsbAF1ASRTaWduYXR1cmUBKQUURXh0cmEB/QwABAA4AAAAPQ0AAAI5DQBBDQgoc3BfcnVudGltZVhFeHRyaW5zaWNJbmNsdXNpb25Nb2RlAAEINEFsbEV4dHJpbnNpY3MAAAA0T25seUluaGVyZW50cwABAABFDQgcc3BfY29yZThPcGFxdWVNZXRhZGF0YQAABAA4ARxWZWM8dTg+AABJDQQYT3B0aW9uBARUAUUNAQgQTm9uZQAAABBTb21lBABFDQAAAQAATQ0EGFJlc3VsdAgEVAGIBEUBUQ0BCAhPawQAiAAAAAAMRXJyBABRDQAAAQAAUQ0MKHNwX3J1bnRpbWVQdHJhbnNhY3Rpb25fdmFsaWRpdHlgVHJhbnNhY3Rpb25WYWxpZGl0eUVycm9yAAEIHEludmFsaWQEAFUNAUhJbnZhbGlkVHJhbnNhY3Rpb24AAAAcVW5rbm93bgQAWQ0BSFVua25vd25UcmFuc2FjdGlvbgABAABVDQwoc3BfcnVudGltZVB0cmFuc2FjdGlvbl92YWxpZGl0eUhJbnZhbGlkVHJhbnNhY3Rpb24AASwQQ2FsbAAAABxQYXltZW50AAEAGEZ1dHVyZQACABRTdGFsZQADACBCYWRQcm9vZgAEAERBbmNpZW50QmlydGhCbG9jawAFAERFeGhhdXN0c1Jlc291cmNlcwAGABhDdXN0b20EAAgBCHU4AAcAMEJhZE1hbmRhdG9yeQAIAExNYW5kYXRvcnlWYWxpZGF0aW9uAAkAJEJhZFNpZ25lcgAKAABZDQwoc3BfcnVudGltZVB0cmFuc2FjdGlvbl92YWxpZGl0eUhVbmtub3duVHJhbnNhY3Rpb24AAQwwQ2Fubm90TG9va3VwAAAATE5vVW5zaWduZWRWYWxpZGF0b3IAAQAYQ3VzdG9tBAAIAQh1OAACAABdDQgwc3BfaW5oZXJlbnRzMEluaGVyZW50RGF0YQAABAEQZGF0YWENAZRCVHJlZU1hcDxJbmhlcmVudElkZW50aWZpZXIsIFZlYzx1OD4+AABhDQQgQlRyZWVNYXAIBEsBhQUEVgE4AAQAZQ0AAABlDQAAAmkNAGkNAAAECIUFOABtDQgwc3BfaW5oZXJlbnRzUENoZWNrSW5oZXJlbnRzUmVzdWx0AAAMARBva2F5IAEQYm9vbAABLGZhdGFsX2Vycm9yIAEQYm9vbAABGGVycm9yc10NATBJbmhlcmVudERhdGEAAHENDChzcF9ydW50aW1lUHRyYW5zYWN0aW9uX3ZhbGlkaXR5RFRyYW5zYWN0aW9uU291cmNlAAEMHEluQmxvY2sAAAAUTG9jYWwAAQAgRXh0ZXJuYWwAAgAAdQ0EGFJlc3VsdAgEVAF5DQRFAVENAQgIT2sEAHkNAAAAAAxFcnIEAFENAAABAAB5DQwoc3BfcnVudGltZVB0cmFuc2FjdGlvbl92YWxpZGl0eUBWYWxpZFRyYW5zYWN0aW9uAAAUASBwcmlvcml0eTABTFRyYW5zYWN0aW9uUHJpb3JpdHkAASByZXF1aXJlc4UBAUxWZWM8VHJhbnNhY3Rpb25UYWc+AAEgcHJvdmlkZXOFAQFMVmVjPFRyYW5zYWN0aW9uVGFnPgABJGxvbmdldml0eTABUFRyYW5zYWN0aW9uTG9uZ2V2aXR5AAEkcHJvcGFnYXRlIAEQYm9vbAAAfQ0AAAQIGQuBDQCBDQxMcG9sa2Fkb3RfcHJpbWl0aXZlcwh2N0RHcm91cFJvdGF0aW9uSW5mbwQETgEQAAwBTHNlc3Npb25fc3RhcnRfYmxvY2sQAQROAAFgZ3JvdXBfcm90YXRpb25fZnJlcXVlbmN5EAEETgABDG5vdxABBE4AAIUNAAACiQ0AiQ0MTHBvbGthZG90X3ByaW1pdGl2ZXMIdjckQ29yZVN0YXRlCARIATQETgEQAQwgT2NjdXBpZWQEAI0NAUhPY2N1cGllZENvcmU8SCwgTj4AAAAkU2NoZWR1bGVkBACVDQE0U2NoZWR1bGVkQ29yZQABABBGcmVlAAIAAI0NDExwb2xrYWRvdF9wcmltaXRpdmVzCHY3ME9jY3VwaWVkQ29yZQgESAE0BE4BEAAgAVBuZXh0X3VwX29uX2F2YWlsYWJsZZENAVRPcHRpb248U2NoZWR1bGVkQ29yZT4AAThvY2N1cGllZF9zaW5jZRABBE4AASx0aW1lX291dF9hdBABBE4AAUxuZXh0X3VwX29uX3RpbWVfb3V0kQ0BVE9wdGlvbjxTY2hlZHVsZWRDb3JlPgABMGF2YWlsYWJpbGl0eWUEAXxCaXRWZWM8dTgsIGJpdHZlYzo6b3JkZXI6OkxzYjA+AAFEZ3JvdXBfcmVzcG9uc2libGU9BwEoR3JvdXBJbmRleAABOGNhbmRpZGF0ZV9oYXNowQQBNENhbmRpZGF0ZUhhc2gAAVBjYW5kaWRhdGVfZGVzY3JpcHRvcoEEAVhDYW5kaWRhdGVEZXNjcmlwdG9yPEg+AACRDQQYT3B0aW9uBARUAZUNAQgQTm9uZQAAABBTb21lBACVDQAAAQAAlQ0MTHBvbGthZG90X3ByaW1pdGl2ZXMIdjc0U2NoZWR1bGVkQ29yZQAACAEccGFyYV9pZI0CAQhJZAABIGNvbGxhdG9ymQ0BSE9wdGlvbjxDb2xsYXRvcklkPgAAmQ0EGE9wdGlvbgQEVAGFBAEIEE5vbmUAAAAQU29tZQQAhQQAAAEAAJ0NDExwb2xrYWRvdF9wcmltaXRpdmVzCHY3WE9jY3VwaWVkQ29yZUFzc3VtcHRpb24AAQwgSW5jbHVkZWQAAAAgVGltZWRPdXQAAQAQRnJlZQACAAChDQQYT3B0aW9uBARUAaUNAQgQTm9uZQAAABBTb21lBAClDQAAAQAApQ0MTHBvbGthZG90X3ByaW1pdGl2ZXMIdjdcUGVyc2lzdGVkVmFsaWRhdGlvbkRhdGEIBEgBNAROARAAEAEscGFyZW50X2hlYWStBAEgSGVhZERhdGEAAUxyZWxheV9wYXJlbnRfbnVtYmVyEAEETgABZHJlbGF5X3BhcmVudF9zdG9yYWdlX3Jvb3Q0AQRIAAEwbWF4X3Bvdl9zaXplEAEMdTMyAACpDQQYT3B0aW9uBARUAa0NAQgQTm9uZQAAABBTb21lBACtDQAAAQAArQ0AAAQIpQ2NBACxDQQYT3B0aW9uBARUAX0EAQgQTm9uZQAAABBTb21lBAB9BAAAAQAAtQ0AAAK5DQC5DQxMcG9sa2Fkb3RfcHJpbWl0aXZlcwh2NzhDYW5kaWRhdGVFdmVudAQESAE0AQw8Q2FuZGlkYXRlQmFja2VkEAA1BwFMQ2FuZGlkYXRlUmVjZWlwdDxIPgAArQQBIEhlYWREYXRhAAA5BwEkQ29yZUluZGV4AAA9BwEoR3JvdXBJbmRleAAAAERDYW5kaWRhdGVJbmNsdWRlZBAANQcBTENhbmRpZGF0ZVJlY2VpcHQ8SD4AAK0EASBIZWFkRGF0YQAAOQcBJENvcmVJbmRleAAAPQcBKEdyb3VwSW5kZXgAAQBEQ2FuZGlkYXRlVGltZWRPdXQMADUHAUxDYW5kaWRhdGVSZWNlaXB0PEg+AACtBAEgSGVhZERhdGEAADkHASRDb3JlSW5kZXgAAgAAvQ0EIEJUcmVlTWFwCARLAY0CBFYBlQsABADBDQAAAMENAAACxQ0AxQ0AAAQIjQKVCwDJDQQYT3B0aW9uBARUAQELAQgQTm9uZQAAABBTb21lBAABCwAAAQAAzQ0EGE9wdGlvbgQEVAGtCwEIEE5vbmUAAAAQU29tZQQArQsAAAEAANENBBhPcHRpb24EBFQBjQQBCBBOb25lAAAAEFNvbWUEAI0EAAABAADVDQAAAtkNANkNAAAEDBDBBL0LAN0NBBhPcHRpb24EBFQBLQQBCBBOb25lAAAAEFNvbWUEAC0EAAABAADhDQAAAuUNAOUNAAAEDBDBBMkLAOkNBBhPcHRpb24EBFQB7Q0BCBBOb25lAAAAEFNvbWUEAO0NAAABAADtDRBMcG9sa2Fkb3RfcHJpbWl0aXZlcwh2NyBzbGFzaGluZ1xPcGFxdWVLZXlPd25lcnNoaXBQcm9vZgAABAA4ARxWZWM8dTg+AADxDQQYT3B0aW9uBARUAYwBCBBOb25lAAAAEFNvbWUEAIwAAAEAAPUNBBhPcHRpb24EBFQB+Q0BCBBOb25lAAAAEFNvbWUEAPkNAAABAAD5DRBMcG9sa2Fkb3RfcHJpbWl0aXZlcwh2NzRhc3luY19iYWNraW5nMEJhY2tpbmdTdGF0ZQgESAE0BE4BEAAIASxjb25zdHJhaW50c/0NAThDb25zdHJhaW50czxOPgABUHBlbmRpbmdfYXZhaWxhYmlsaXR5HQ4BnFZlYzxDYW5kaWRhdGVQZW5kaW5nQXZhaWxhYmlsaXR5PEgsIE4+PgAA/Q0QTHBvbGthZG90X3ByaW1pdGl2ZXMIdjc0YXN5bmNfYmFja2luZyxDb25zdHJhaW50cwQETgEQADgBXG1pbl9yZWxheV9wYXJlbnRfbnVtYmVyEAEETgABMG1heF9wb3Zfc2l6ZRABDHUzMgABNG1heF9jb2RlX3NpemUQAQx1MzIAATR1bXBfcmVtYWluaW5nEAEMdTMyAAFMdW1wX3JlbWFpbmluZ19ieXRlcxABDHUzMgABZG1heF91bXBfbnVtX3Blcl9jYW5kaWRhdGUQAQx1MzIAAVhkbXBfcmVtYWluaW5nX21lc3NhZ2Vz5QEBGFZlYzxOPgABMGhybXBfaW5ib3VuZAEOAWRJbmJvdW5kSHJtcExpbWl0YXRpb25zPE4+AAFEaHJtcF9jaGFubmVsc19vdXQFDgGkVmVjPChJZCwgT3V0Ym91bmRIcm1wQ2hhbm5lbExpbWl0YXRpb25zKT4AAWhtYXhfaHJtcF9udW1fcGVyX2NhbmRpZGF0ZRABDHUzMgABPHJlcXVpcmVkX3BhcmVudK0EASBIZWFkRGF0YQABUHZhbGlkYXRpb25fY29kZV9oYXNojQQBSFZhbGlkYXRpb25Db2RlSGFzaAABTHVwZ3JhZGVfcmVzdHJpY3Rpb24RDgFoT3B0aW9uPFVwZ3JhZGVSZXN0cmljdGlvbj4AAVhmdXR1cmVfdmFsaWRhdGlvbl9jb2RlFQ4BfE9wdGlvbjwoTiwgVmFsaWRhdGlvbkNvZGVIYXNoKT4AAAEOEExwb2xrYWRvdF9wcmltaXRpdmVzCHY3NGFzeW5jX2JhY2tpbmdYSW5ib3VuZEhybXBMaW1pdGF0aW9ucwQETgEQAAQBQHZhbGlkX3dhdGVybWFya3PlAQEYVmVjPE4+AAAFDgAAAgkOAAkOAAAECI0CDQ4ADQ4QTHBvbGthZG90X3ByaW1pdGl2ZXMIdjc0YXN5bmNfYmFja2luZ3hPdXRib3VuZEhybXBDaGFubmVsTGltaXRhdGlvbnMAAAgBPGJ5dGVzX3JlbWFpbmluZxABDHUzMgABSG1lc3NhZ2VzX3JlbWFpbmluZxABDHUzMgAAEQ4EGE9wdGlvbgQEVAFxCwEIEE5vbmUAAAAQU29tZQQAcQsAAAEAABUOBBhPcHRpb24EBFQBGQ4BCBBOb25lAAAAEFNvbWUEABkOAAABAAAZDgAABAgQjQQAHQ4AAAIhDgAhDhBMcG9sa2Fkb3RfcHJpbWl0aXZlcwh2NzRhc3luY19iYWNraW5ncENhbmRpZGF0ZVBlbmRpbmdBdmFpbGFiaWxpdHkIBEgBNAROARAAFAE4Y2FuZGlkYXRlX2hhc2jBBAE0Q2FuZGlkYXRlSGFzaAABKGRlc2NyaXB0b3KBBAFYQ2FuZGlkYXRlRGVzY3JpcHRvcjxIPgABLGNvbW1pdG1lbnRzkQQBUENhbmRpZGF0ZUNvbW1pdG1lbnRzAAFMcmVsYXlfcGFyZW50X251bWJlchABBE4AATBtYXhfcG92X3NpemUQAQx1MzIAACUOBCBCVHJlZU1hcAgESwE5BwRWAVELAAQAKQ4AAAApDgAAAi0OAC0OAAAECDkHUQsAMQ4AAAJ9BAA1DgQYT3B0aW9uBARUATkOAQgQTm9uZQAAABBTb21lBAA5DgAAAQAAOQ4ISHNwX2NvbnNlbnN1c19iZWVmeTBWYWxpZGF0b3JTZXQELEF1dGhvcml0eUlkASkCAAgBKHZhbGlkYXRvcnPpDAFAVmVjPEF1dGhvcml0eUlkPgABCGlkMAE4VmFsaWRhdG9yU2V0SWQAAD0OCChzcF9ydW50aW1lLE9wYXF1ZVZhbHVlAAAEADgBHFZlYzx1OD4AAEEOBBhPcHRpb24EBFQBPQ4BCBBOb25lAAAAEFNvbWUEAD0OAAABAABFDgQYUmVzdWx0CARUATQERQFJDgEICE9rBAA0AAAAAAxFcnIEAEkOAAABAABJDghEc3BfbW1yX3ByaW1pdGl2ZXMURXJyb3IAAShASW52YWxpZE51bWVyaWNPcAAAABBQdXNoAAEAHEdldFJvb3QAAgAYQ29tbWl0AAMANEdlbmVyYXRlUHJvb2YABAAYVmVyaWZ5AAUAMExlYWZOb3RGb3VuZAAGAERQYWxsZXROb3RJbmNsdWRlZAAHAEBJbnZhbGlkTGVhZkluZGV4AAgAVEludmFsaWRCZXN0S25vd25CbG9jawAJAABNDgQYUmVzdWx0CARUATAERQFJDgEICE9rBAAwAAAAAAxFcnIEAEkOAAABAABRDgQYUmVzdWx0CARUAVUOBEUBSQ4BCAhPawQAVQ4AAAAADEVycgQASQ4AAAEAAFUOAAAECFkOYQ4AWQ4AAAJdDgBdDghEc3BfbW1yX3ByaW1pdGl2ZXNMRW5jb2RhYmxlT3BhcXVlTGVhZgAABAA4ARxWZWM8dTg+AABhDghEc3BfbW1yX3ByaW1pdGl2ZXMkTGVhZlByb29mBBBIYXNoATQADAEwbGVhZl9pbmRpY2VzbQoBOFZlYzxMZWFmSW5kZXg+AAEobGVhZl9jb3VudDABJE5vZGVJbmRleAABFGl0ZW1zlQEBJFZlYzxIYXNoPgAAZQ4EGFJlc3VsdAgEVAGMBEUBSQ4BCAhPawQAjAAAAAAMRXJyBABJDgAAAQAAaQ4IRHNwX2NvbnNlbnN1c19iYWJlREJhYmVDb25maWd1cmF0aW9uAAAYATRzbG90X2R1cmF0aW9uMAEMdTY0AAEwZXBvY2hfbGVuZ3RoMAEMdTY0AAEEY7UBASgodTY0LCB1NjQpAAEsYXV0aG9yaXRpZXMVCAGcVmVjPChBdXRob3JpdHlJZCwgQmFiZUF1dGhvcml0eVdlaWdodCk+AAEocmFuZG9tbmVzcwQBKFJhbmRvbW5lc3MAATRhbGxvd2VkX3Nsb3RzuQEBMEFsbG93ZWRTbG90cwAAbQ4IRHNwX2NvbnNlbnN1c19iYWJlFEVwb2NoAAAYASxlcG9jaF9pbmRleDABDHU2NAABKHN0YXJ0X3Nsb3SpAQEQU2xvdAABIGR1cmF0aW9uMAEMdTY0AAEsYXV0aG9yaXRpZXMVCAGcVmVjPChBdXRob3JpdHlJZCwgQmFiZUF1dGhvcml0eVdlaWdodCk+AAEocmFuZG9tbmVzcwQBKFJhbmRvbW5lc3MAARhjb25maWc5CAFYQmFiZUVwb2NoQ29uZmlndXJhdGlvbgAAcQ4EGE9wdGlvbgQEVAF1DgEIEE5vbmUAAAAQU29tZQQAdQ4AAAEAAHUOCERzcF9jb25zZW5zdXNfYmFiZVxPcGFxdWVLZXlPd25lcnNoaXBQcm9vZgAABAA4ARxWZWM8dTg+AAB5DgQYT3B0aW9uBARUAX0OAQgQTm9uZQAAABBTb21lBAB9DgAAAQAAfQ4AAAKBDgCBDgAABAg4GQkAhQ4MaHBhbGxldF90cmFuc2FjdGlvbl9wYXltZW50FHR5cGVzTFJ1bnRpbWVEaXNwYXRjaEluZm8IHEJhbGFuY2UBGBhXZWlnaHQBKAAMARh3ZWlnaHQoARhXZWlnaHQAARRjbGFzc2ABNERpc3BhdGNoQ2xhc3MAASxwYXJ0aWFsX2ZlZRgBHEJhbGFuY2UAAIkODGhwYWxsZXRfdHJhbnNhY3Rpb25fcGF5bWVudBR0eXBlcyhGZWVEZXRhaWxzBBxCYWxhbmNlARgACAE0aW5jbHVzaW9uX2ZlZY0OAXRPcHRpb248SW5jbHVzaW9uRmVlPEJhbGFuY2U+PgABDHRpcBgBHEJhbGFuY2UAAI0OBBhPcHRpb24EBFQBkQ4BCBBOb25lAAAAEFNvbWUEAJEOAAABAACRDgxocGFsbGV0X3RyYW5zYWN0aW9uX3BheW1lbnQUdHlwZXMwSW5jbHVzaW9uRmVlBBxCYWxhbmNlARgADAEgYmFzZV9mZWUYARxCYWxhbmNlAAEcbGVuX2ZlZRgBHEJhbGFuY2UAAUxhZGp1c3RlZF93ZWlnaHRfZmVlGAEcQmFsYW5jZQAAlQ4EGFJlc3VsdAgEVAGZDgRFAZ0OAQgIT2sEAJkOAAAAAAxFcnIEAJ0OAAABAACZDgAAApEGAJ0ODEB4Y21fcnVudGltZV9hcGlzEGZlZXMURXJyb3IAARg0VW5pbXBsZW1lbnRlZAAAAGRWZXJzaW9uZWRDb252ZXJzaW9uRmFpbGVkAAEATFdlaWdodE5vdENvbXB1dGFibGUAAgBMVW5oYW5kbGVkWGNtVmVyc2lvbgADADRBc3NldE5vdEZvdW5kAAQAKFVucm91dGFibGUABQAAoQ4EGFJlc3VsdAgEVAEoBEUBnQ4BCAhPawQAKAAAAAAMRXJyBACdDgAAAQAApQ4EGFJlc3VsdAgEVAEYBEUBnQ4BCAhPawQAGAAAAAAMRXJyBACdDgAAAQAAqQ4EGFJlc3VsdAgEVAFdBgRFAZ0OAQgIT2sEAF0GAAAAAAxFcnIEAJ0OAAABAACtDgQYUmVzdWx0CARUAbEOBEUByQ4BCAhPawQAsQ4AAAAADEVycgQAyQ4AAAEAALEODEB4Y21fcnVudGltZV9hcGlzHGRyeV9ydW5EQ2FsbERyeVJ1bkVmZmVjdHMEFEV2ZW50AVQAEAFAZXhlY3V0aW9uX3Jlc3VsdOkGAWhEaXNwYXRjaFJlc3VsdFdpdGhQb3N0SW5mbwABOGVtaXR0ZWRfZXZlbnRztQ4BKFZlYzxFdmVudD4AASRsb2NhbF94Y225DgFgT3B0aW9uPFZlcnNpb25lZFhjbTwoKT4+AAE4Zm9yd2FyZGVkX3hjbXO9DgG8VmVjPChWZXJzaW9uZWRMb2NhdGlvbiwgVmVjPFZlcnNpb25lZFhjbTwoKT4+KT4AALUOAAACVAC5DgQYT3B0aW9uBARUAV0FAQgQTm9uZQAAABBTb21lBABdBQAAAQAAvQ4AAALBDgDBDgAABAhFAcUOAMUOAAACXQUAyQ4MQHhjbV9ydW50aW1lX2FwaXMcZHJ5X3J1bhRFcnJvcgABCDRVbmltcGxlbWVudGVkAAAAZFZlcnNpb25lZENvbnZlcnNpb25GYWlsZWQAAQAAzQ4EGFJlc3VsdAgEVAHRDgRFAckOAQgIT2sEANEOAAAAAAxFcnIEAMkOAAABAADRDgxAeGNtX3J1bnRpbWVfYXBpcxxkcnlfcnVuQFhjbURyeVJ1bkVmZmVjdHMEFEV2ZW50AVQADAFAZXhlY3V0aW9uX3Jlc3VsdH0HARxPdXRjb21lAAE4ZW1pdHRlZF9ldmVudHO1DgEoVmVjPEV2ZW50PgABOGZvcndhcmRlZF94Y21zvQ4BvFZlYzwoVmVyc2lvbmVkTG9jYXRpb24sIFZlYzxWZXJzaW9uZWRYY208KCk+Pik+AADVDgQYUmVzdWx0CARUAQAERQHZDgEICE9rBAAAAAAAAAxFcnIEANkOAAABAADZDgxAeGNtX3J1bnRpbWVfYXBpcyxjb252ZXJzaW9ucxRFcnJvcgABCCxVbnN1cHBvcnRlZAAAAGRWZXJzaW9uZWRDb252ZXJzaW9uRmFpbGVkAAEAAN0OBBhSZXN1bHQIBFQBjARFAZ0HAQgIT2sEAIwAAAAADEVycgQAnQcAAAEAAOEOBBhPcHRpb24EBFQBnQcBCBBOb25lAAAAEFNvbWUEAJ0HAAABAADlDgAAAp0HAOkOCDRwYXNlb19ydW50aW1lMFJ1bnRpbWVFcnJvcgABtBhTeXN0ZW0EAM0HAXBmcmFtZV9zeXN0ZW06OkVycm9yPFJ1bnRpbWU+AAAAJFNjaGVkdWxlcgQA5QcBgHBhbGxldF9zY2hlZHVsZXI6OkVycm9yPFJ1bnRpbWU+AAEAIFByZWltYWdlBAAJCAF8cGFsbGV0X3ByZWltYWdlOjpFcnJvcjxSdW50aW1lPgAKABBCYWJlBABJCAFscGFsbGV0X2JhYmU6OkVycm9yPFJ1bnRpbWU+AAIAHEluZGljZXMEAFEIAXhwYWxsZXRfaW5kaWNlczo6RXJyb3I8UnVudGltZT4ABAAgQmFsYW5jZXMEAJ0IAXxwYWxsZXRfYmFsYW5jZXM6OkVycm9yPFJ1bnRpbWU+AAUAHFN0YWtpbmcEAP0IAXhwYWxsZXRfc3Rha2luZzo6RXJyb3I8UnVudGltZT4ABwAcU2Vzc2lvbgQAHQkBeHBhbGxldF9zZXNzaW9uOjpFcnJvcjxSdW50aW1lPgAJABxHcmFuZHBhBAAtCQF4cGFsbGV0X2dyYW5kcGE6OkVycm9yPFJ1bnRpbWU+AAsAIFRyZWFzdXJ5BABRCQF8cGFsbGV0X3RyZWFzdXJ5OjpFcnJvcjxSdW50aW1lPgATAEBDb252aWN0aW9uVm90aW5nBACFCQGgcGFsbGV0X2NvbnZpY3Rpb25fdm90aW5nOjpFcnJvcjxSdW50aW1lPgAUACRSZWZlcmVuZGEEAM0JAYBwYWxsZXRfcmVmZXJlbmRhOjpFcnJvcjxSdW50aW1lPgAVACRXaGl0ZWxpc3QEANEJAYBwYWxsZXRfd2hpdGVsaXN0OjpFcnJvcjxSdW50aW1lPgAXABhDbGFpbXMEANUJAVhjbGFpbXM6OkVycm9yPFJ1bnRpbWU+ABgAHFZlc3RpbmcEAOUJAXhwYWxsZXRfdmVzdGluZzo6RXJyb3I8UnVudGltZT4AGQAcVXRpbGl0eQQA6QkBeHBhbGxldF91dGlsaXR5OjpFcnJvcjxSdW50aW1lPgAaABRQcm94eQQADQoBcHBhbGxldF9wcm94eTo6RXJyb3I8UnVudGltZT4AHQAgTXVsdGlzaWcEAB0KAXxwYWxsZXRfbXVsdGlzaWc6OkVycm9yPFJ1bnRpbWU+AB4AIEJvdW50aWVzBAAtCgF8cGFsbGV0X2JvdW50aWVzOjpFcnJvcjxSdW50aW1lPgAiADRDaGlsZEJvdW50aWVzBAA5CgGUcGFsbGV0X2NoaWxkX2JvdW50aWVzOjpFcnJvcjxSdW50aW1lPgAmAGhFbGVjdGlvblByb3ZpZGVyTXVsdGlQaGFzZQQAYQoB0HBhbGxldF9lbGVjdGlvbl9wcm92aWRlcl9tdWx0aV9waGFzZTo6RXJyb3I8UnVudGltZT4AJAAkVm90ZXJMaXN0BABxCgH0cGFsbGV0X2JhZ3NfbGlzdDo6RXJyb3I8UnVudGltZSwgcGFsbGV0X2JhZ3NfbGlzdDo6SW5zdGFuY2UxPgAlADxOb21pbmF0aW9uUG9vbHMEALkKAZxwYWxsZXRfbm9taW5hdGlvbl9wb29sczo6RXJyb3I8UnVudGltZT4AJwAsRmFzdFVuc3Rha2UEAM0KAYxwYWxsZXRfZmFzdF91bnN0YWtlOjpFcnJvcjxSdW50aW1lPgAoADRDb25maWd1cmF0aW9uBADdCgGgcGFyYWNoYWluc19jb25maWd1cmF0aW9uOjpFcnJvcjxSdW50aW1lPgAzADRQYXJhSW5jbHVzaW9uBAD9CgGQcGFyYWNoYWluc19pbmNsdXNpb246OkVycm9yPFJ1bnRpbWU+ADUAMFBhcmFJbmhlcmVudAQAFQsBpHBhcmFjaGFpbnNfcGFyYXNfaW5oZXJlbnQ6OkVycm9yPFJ1bnRpbWU+ADYAFFBhcmFzBAB1CwGAcGFyYWNoYWluc19wYXJhczo6RXJyb3I8UnVudGltZT4AOAAQSHJtcAQApQsBfHBhcmFjaGFpbnNfaHJtcDo6RXJyb3I8UnVudGltZT4APAA0UGFyYXNEaXNwdXRlcwQAxQsBjHBhcmFjaGFpbnNfZGlzcHV0ZXM6OkVycm9yPFJ1bnRpbWU+AD4ANFBhcmFzU2xhc2hpbmcEANkLAYxwYXJhY2hhaW5zX3NsYXNoaW5nOjpFcnJvcjxSdW50aW1lPgA/ACBPbkRlbWFuZAQACQwBtHBhcmFjaGFpbnNfYXNzaWduZXJfb25fZGVtYW5kOjpFcnJvcjxSdW50aW1lPgBAAGhDb3JldGltZUFzc2lnbm1lbnRQcm92aWRlcgQANQwBsHBhcmFjaGFpbnNfYXNzaWduZXJfY29yZXRpbWU6OkVycm9yPFJ1bnRpbWU+AEEAJFJlZ2lzdHJhcgQAQQwBfHBhcmFzX3JlZ2lzdHJhcjo6RXJyb3I8UnVudGltZT4ARgAUU2xvdHMEAEkMAVRzbG90czo6RXJyb3I8UnVudGltZT4ARwAgQXVjdGlvbnMEAF0MAWBhdWN0aW9uczo6RXJyb3I8UnVudGltZT4ASAAkQ3Jvd2Rsb2FuBABpDAFkY3Jvd2Rsb2FuOjpFcnJvcjxSdW50aW1lPgBJACBDb3JldGltZQQAbQwBYGNvcmV0aW1lOjpFcnJvcjxSdW50aW1lPgBKAEhTdGF0ZVRyaWVNaWdyYXRpb24EAHUHAaxwYWxsZXRfc3RhdGVfdHJpZV9taWdyYXRpb246OkVycm9yPFJ1bnRpbWU+AGIAJFhjbVBhbGxldAQAwQwBaHBhbGxldF94Y206OkVycm9yPFJ1bnRpbWU+AGMAME1lc3NhZ2VRdWV1ZQQA3QwBkHBhbGxldF9tZXNzYWdlX3F1ZXVlOjpFcnJvcjxSdW50aW1lPgBkACRBc3NldFJhdGUEAOEMAYRwYWxsZXRfYXNzZXRfcmF0ZTo6RXJyb3I8UnVudGltZT4AZQAUQmVlZnkEAO0MAXBwYWxsZXRfYmVlZnk6OkVycm9yPFJ1bnRpbWU+AMgAPFBhcmFTdWRvV3JhcHBlcgQA9QwBiHBhcmFzX3N1ZG9fd3JhcHBlcjo6RXJyb3I8UnVudGltZT4A+gAQU3VkbwQA+QwBbHBhbGxldF9zdWRvOjpFcnJvcjxSdW50aW1lPgD/AADwGFN5c3RlbQEYU3lzdGVtSBxBY2NvdW50AQEEAgAMQQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAToIFRoZSBmdWxsIGFjY291bnQgaW5mb3JtYXRpb24gZm9yIGEgcGFydGljdWxhciBhY2NvdW50IElELjhFeHRyaW5zaWNDb3VudAAAEAQABLggVG90YWwgZXh0cmluc2ljcyBjb3VudCBmb3IgdGhlIGN1cnJlbnQgYmxvY2suQEluaGVyZW50c0FwcGxpZWQBACAEAASkIFdoZXRoZXIgYWxsIGluaGVyZW50cyBoYXZlIGJlZW4gYXBwbGllZC4sQmxvY2tXZWlnaHQBACQYAAAAAAAABIggVGhlIGN1cnJlbnQgd2VpZ2h0IGZvciB0aGUgYmxvY2suQEFsbEV4dHJpbnNpY3NMZW4AABAEAARBASBUb3RhbCBsZW5ndGggKGluIGJ5dGVzKSBmb3IgYWxsIGV4dHJpbnNpY3MgcHV0IHRvZ2V0aGVyLCBmb3IgdGhlIGN1cnJlbnQgYmxvY2suJEJsb2NrSGFzaAEBBAUQNIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASYIE1hcCBvZiBibG9jayBudW1iZXJzIHRvIGJsb2NrIGhhc2hlcy40RXh0cmluc2ljRGF0YQEBBAUQOAQABD0BIEV4dHJpbnNpY3MgZGF0YSBmb3IgdGhlIGN1cnJlbnQgYmxvY2sgKG1hcHMgYW4gZXh0cmluc2ljJ3MgaW5kZXggdG8gaXRzIGRhdGEpLhhOdW1iZXIBABAQAAAAAAQJASBUaGUgY3VycmVudCBibG9jayBudW1iZXIgYmVpbmcgcHJvY2Vzc2VkLiBTZXQgYnkgYGV4ZWN1dGVfYmxvY2tgLihQYXJlbnRIYXNoAQA0gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABHAgSGFzaCBvZiB0aGUgcHJldmlvdXMgYmxvY2suGERpZ2VzdAEAPAQABPAgRGlnZXN0IG9mIHRoZSBjdXJyZW50IGJsb2NrLCBhbHNvIHBhcnQgb2YgdGhlIGJsb2NrIGhlYWRlci4YRXZlbnRzAQBMBAAcoCBFdmVudHMgZGVwb3NpdGVkIGZvciB0aGUgY3VycmVudCBibG9jay4AHQEgTk9URTogVGhlIGl0ZW0gaXMgdW5ib3VuZCBhbmQgc2hvdWxkIHRoZXJlZm9yZSBuZXZlciBiZSByZWFkIG9uIGNoYWluLtAgSXQgY291bGQgb3RoZXJ3aXNlIGluZmxhdGUgdGhlIFBvViBzaXplIG9mIGEgYmxvY2suAC0BIEV2ZW50cyBoYXZlIGEgbGFyZ2UgaW4tbWVtb3J5IHNpemUuIEJveCB0aGUgZXZlbnRzIHRvIG5vdCBnbyBvdXQtb2YtbWVtb3J5/CBqdXN0IGluIGNhc2Ugc29tZW9uZSBzdGlsbCByZWFkcyB0aGVtIGZyb20gd2l0aGluIHRoZSBydW50aW1lLihFdmVudENvdW50AQAQEAAAAAAEuCBUaGUgbnVtYmVyIG9mIGV2ZW50cyBpbiB0aGUgYEV2ZW50czxUPmAgbGlzdC4sRXZlbnRUb3BpY3MBAQQCNJUHBAAoJQEgTWFwcGluZyBiZXR3ZWVuIGEgdG9waWMgKHJlcHJlc2VudGVkIGJ5IFQ6Okhhc2gpIGFuZCBhIHZlY3RvciBvZiBpbmRleGVzlCBvZiBldmVudHMgaW4gdGhlIGA8RXZlbnRzPFQ+PmAgbGlzdC4AUQEgQWxsIHRvcGljIHZlY3RvcnMgaGF2ZSBkZXRlcm1pbmlzdGljIHN0b3JhZ2UgbG9jYXRpb25zIGRlcGVuZGluZyBvbiB0aGUgdG9waWMuIFRoaXNFASBhbGxvd3MgbGlnaHQtY2xpZW50cyB0byBsZXZlcmFnZSB0aGUgY2hhbmdlcyB0cmllIHN0b3JhZ2UgdHJhY2tpbmcgbWVjaGFuaXNtIGFuZOQgaW4gY2FzZSBvZiBjaGFuZ2VzIGZldGNoIHRoZSBsaXN0IG9mIGV2ZW50cyBvZiBpbnRlcmVzdC4AWQEgVGhlIHZhbHVlIGhhcyB0aGUgdHlwZSBgKEJsb2NrTnVtYmVyRm9yPFQ+LCBFdmVudEluZGV4KWAgYmVjYXVzZSBpZiB3ZSB1c2VkIG9ubHkganVzdE0BIHRoZSBgRXZlbnRJbmRleGAgdGhlbiBpbiBjYXNlIGlmIHRoZSB0b3BpYyBoYXMgdGhlIHNhbWUgY29udGVudHMgb24gdGhlIG5leHQgYmxvY2sBASBubyBub3RpZmljYXRpb24gd2lsbCBiZSB0cmlnZ2VyZWQgdGh1cyB0aGUgZXZlbnQgbWlnaHQgYmUgbG9zdC5ITGFzdFJ1bnRpbWVVcGdyYWRlAACZBwQABFUBIFN0b3JlcyB0aGUgYHNwZWNfdmVyc2lvbmAgYW5kIGBzcGVjX25hbWVgIG9mIHdoZW4gdGhlIGxhc3QgcnVudGltZSB1cGdyYWRlIGhhcHBlbmVkLlRVcGdyYWRlZFRvVTMyUmVmQ291bnQBACAEAARNASBUcnVlIGlmIHdlIGhhdmUgdXBncmFkZWQgc28gdGhhdCBgdHlwZSBSZWZDb3VudGAgaXMgYHUzMmAuIEZhbHNlIChkZWZhdWx0KSBpZiBub3QuYFVwZ3JhZGVkVG9UcmlwbGVSZWZDb3VudAEAIAQACF0BIFRydWUgaWYgd2UgaGF2ZSB1cGdyYWRlZCBzbyB0aGF0IEFjY291bnRJbmZvIGNvbnRhaW5zIHRocmVlIHR5cGVzIG9mIGBSZWZDb3VudGAuIEZhbHNlSCAoZGVmYXVsdCkgaWYgbm90LjhFeGVjdXRpb25QaGFzZQAAkQcEAASIIFRoZSBleGVjdXRpb24gcGhhc2Ugb2YgdGhlIGJsb2NrLkRBdXRob3JpemVkVXBncmFkZQAAoQcEAAS4IGBTb21lYCBpZiBhIGNvZGUgdXBncmFkZSBoYXMgYmVlbiBhdXRob3JpemVkLgF5AQFYGDBCbG9ja1dlaWdodHOlBwECB7C96TYDAAsAIEqp0QET//////////8iLQ0eAAELuIRcj1gBE6NwPQrXo3C9AQsAmPc+XQET/////////78BAAAiLQ0eAAELuAyv+cwBE6NwPQrXo3D9AQsAIEqp0QET//////////8BBwCIUmp0EwAAAAAAAABAIi0NHgAAAAAE0CBCbG9jayAmIGV4dHJpbnNpY3Mgd2VpZ2h0czogYmFzZSB2YWx1ZXMgYW5kIGxpbWl0cy4sQmxvY2tMZW5ndGixBzAAADwAAABQAAAAUAAEqCBUaGUgbWF4aW11bSBsZW5ndGggb2YgYSBibG9jayAoaW4gYnl0ZXMpLjhCbG9ja0hhc2hDb3VudBAQABAAAARVASBNYXhpbXVtIG51bWJlciBvZiBibG9jayBudW1iZXIgdG8gYmxvY2sgaGFzaCBtYXBwaW5ncyB0byBrZWVwIChvbGRlc3QgcHJ1bmVkIGZpcnN0KS4gRGJXZWlnaHS5B0A4yjgBAAAAAJiq+QQAAAAABAkBIFRoZSB3ZWlnaHQgb2YgcnVudGltZSBkYXRhYmFzZSBvcGVyYXRpb25zIHRoZSBydW50aW1lIGNhbiBpbnZva2UuHFZlcnNpb269B7kEFHBhc2VvNHBhc2VvLXRlc3RuZXQAAAAA+E0PAAAAAABY32rLaJkHYJsFAAAAN+OX/HyR9eQCAAAAQP461AH4lZoGAAAAF6a8DQBirrMBAAAAGO9Yo7Z7p3ABAAAA0ryYl+7QjxUDAAAA94sni+U/RUwCAAAArywCl6I+bT0LAAAASeqvG1SKDLADAAAAkdXfGLDSz1gCAAAAKl6SRlU5nmABAAAA7ZnFrLJe7fUDAAAAy8ol458UI4cCAAAAaHrUStN/A8IBAAAAqzwFcikf64sBAAAAvJ2JkE9bkj8BAAAAN8i7E1CpoqgEAAAA8/8U1atScFkDAAAAb/Uu6Fjmxb0BAAAAkbHIsWMo65IBAAAAn/tQWqc41pwBAAAA+8V3uddH79YBAAAAGgAAAAEEhCBHZXQgdGhlIGNoYWluJ3MgaW4tY29kZSB2ZXJzaW9uLihTUzU4UHJlZml4bQEIAAAUqCBUaGUgZGVzaWduYXRlZCBTUzU4IHByZWZpeCBvZiB0aGlzIGNoYWluLgA5ASBUaGlzIHJlcGxhY2VzIHRoZSAic3M1OEZvcm1hdCIgcHJvcGVydHkgZGVjbGFyZWQgaW4gdGhlIGNoYWluIHNwZWMuIFJlYXNvbiBpczEBIHRoYXQgdGhlIHJ1bnRpbWUgc2hvdWxkIGtub3cgYWJvdXQgdGhlIHByZWZpeCBpbiBvcmRlciB0byBtYWtlIHVzZSBvZiBpdCBhc3AgYW4gaWRlbnRpZmllciBvZiB0aGUgY2hhaW4uAc0HAAAkU2NoZWR1bGVyASRTY2hlZHVsZXIQPEluY29tcGxldGVTaW5jZQAAEAQAABhBZ2VuZGEBAQQFENEHBAAETQEgSXRlbXMgdG8gYmUgZXhlY3V0ZWQsIGluZGV4ZWQgYnkgdGhlIGJsb2NrIG51bWJlciB0aGF0IHRoZXkgc2hvdWxkIGJlIGV4ZWN1dGVkIG9uLhxSZXRyaWVzAAEEAoDhBwQABCEBIFJldHJ5IGNvbmZpZ3VyYXRpb25zIGZvciBpdGVtcyB0byBiZSBleGVjdXRlZCwgaW5kZXhlZCBieSB0YXNrIGFkZHJlc3MuGExvb2t1cAABBAUEgAQAEPggTG9va3VwIGZyb20gYSBuYW1lIHRvIHRoZSBibG9jayBudW1iZXIgYW5kIGluZGV4IG9mIHRoZSB0YXNrLgBZASBGb3IgdjMgLT4gdjQgdGhlIHByZXZpb3VzbHkgdW5ib3VuZGVkIGlkZW50aXRpZXMgYXJlIEJsYWtlMi0yNTYgaGFzaGVkIHRvIGZvcm0gdGhlIHY0MCBpZGVudGl0aWVzLgGJAQF8CDRNYXhpbXVtV2VpZ2h0KEALAIBuh3QBE8zMzMzMzMzMBCkBIFRoZSBtYXhpbXVtIHdlaWdodCB0aGF0IG1heSBiZSBzY2hlZHVsZWQgcGVyIGJsb2NrIGZvciBhbnkgZGlzcGF0Y2hhYmxlcy5QTWF4U2NoZWR1bGVkUGVyQmxvY2sQEDIAAAAUHQEgVGhlIG1heGltdW0gbnVtYmVyIG9mIHNjaGVkdWxlZCBjYWxscyBpbiB0aGUgcXVldWUgZm9yIGEgc2luZ2xlIGJsb2NrLgAYIE5PVEU6UQEgKyBEZXBlbmRlbnQgcGFsbGV0cycgYmVuY2htYXJrcyBtaWdodCByZXF1aXJlIGEgaGlnaGVyIGxpbWl0IGZvciB0aGUgc2V0dGluZy4gU2V0IGHEIGhpZ2hlciBsaW1pdCB1bmRlciBgcnVudGltZS1iZW5jaG1hcmtzYCBmZWF0dXJlLgHlBwEAIFByZWltYWdlASBQcmVpbWFnZQwkU3RhdHVzRm9yAAEEBjTpBwQABJAgVGhlIHJlcXVlc3Qgc3RhdHVzIG9mIGEgZ2l2ZW4gaGFzaC5AUmVxdWVzdFN0YXR1c0ZvcgABBAY08QcEAASQIFRoZSByZXF1ZXN0IHN0YXR1cyBvZiBhIGdpdmVuIGhhc2guLFByZWltYWdlRm9yAAEEBgEIBQgEAAABkQEBkAABCQgKABBCYWJlARBCYWJlRChFcG9jaEluZGV4AQAwIAAAAAAAAAAABFQgQ3VycmVudCBlcG9jaCBpbmRleC4sQXV0aG9yaXRpZXMBAA0IBAAEbCBDdXJyZW50IGVwb2NoIGF1dGhvcml0aWVzLixHZW5lc2lzU2xvdAEAqQEgAAAAAAAAAAAI+CBUaGUgc2xvdCBhdCB3aGljaCB0aGUgZmlyc3QgZXBvY2ggYWN0dWFsbHkgc3RhcnRlZC4gVGhpcyBpcyAwkCB1bnRpbCB0aGUgZmlyc3QgYmxvY2sgb2YgdGhlIGNoYWluLixDdXJyZW50U2xvdAEAqQEgAAAAAAAAAAAEVCBDdXJyZW50IHNsb3QgbnVtYmVyLihSYW5kb21uZXNzAQAEgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKLggVGhlIGVwb2NoIHJhbmRvbW5lc3MgZm9yIHRoZSAqY3VycmVudCogZXBvY2guACwgIyBTZWN1cml0eQAFASBUaGlzIE1VU1QgTk9UIGJlIHVzZWQgZm9yIGdhbWJsaW5nLCBhcyBpdCBjYW4gYmUgaW5mbHVlbmNlZCBieSBh+CBtYWxpY2lvdXMgdmFsaWRhdG9yIGluIHRoZSBzaG9ydCB0ZXJtLiBJdCBNQVkgYmUgdXNlZCBpbiBtYW55FQEgY3J5cHRvZ3JhcGhpYyBwcm90b2NvbHMsIGhvd2V2ZXIsIHNvIGxvbmcgYXMgb25lIHJlbWVtYmVycyB0aGF0IHRoaXMVASAobGlrZSBldmVyeXRoaW5nIGVsc2Ugb24tY2hhaW4pIGl0IGlzIHB1YmxpYy4gRm9yIGV4YW1wbGUsIGl0IGNhbiBiZQUBIHVzZWQgd2hlcmUgYSBudW1iZXIgaXMgbmVlZGVkIHRoYXQgY2Fubm90IGhhdmUgYmVlbiBjaG9zZW4gYnkgYW4NASBhZHZlcnNhcnksIGZvciBwdXJwb3NlcyBzdWNoIGFzIHB1YmxpYy1jb2luIHplcm8ta25vd2xlZGdlIHByb29mcy5gUGVuZGluZ0Vwb2NoQ29uZmlnQ2hhbmdlAACxAQQABGEBIFBlbmRpbmcgZXBvY2ggY29uZmlndXJhdGlvbiBjaGFuZ2UgdGhhdCB3aWxsIGJlIGFwcGxpZWQgd2hlbiB0aGUgbmV4dCBlcG9jaCBpcyBlbmFjdGVkLjhOZXh0UmFuZG9tbmVzcwEABIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARcIE5leHQgZXBvY2ggcmFuZG9tbmVzcy48TmV4dEF1dGhvcml0aWVzAQANCAQABGAgTmV4dCBlcG9jaCBhdXRob3JpdGllcy4wU2VnbWVudEluZGV4AQAQEAAAAAAkfCBSYW5kb21uZXNzIHVuZGVyIGNvbnN0cnVjdGlvbi4A+CBXZSBtYWtlIGEgdHJhZGUtb2ZmIGJldHdlZW4gc3RvcmFnZSBhY2Nlc3NlcyBhbmQgbGlzdCBsZW5ndGguAQEgV2Ugc3RvcmUgdGhlIHVuZGVyLWNvbnN0cnVjdGlvbiByYW5kb21uZXNzIGluIHNlZ21lbnRzIG9mIHVwIHRvlCBgVU5ERVJfQ09OU1RSVUNUSU9OX1NFR01FTlRfTEVOR1RIYC4A7CBPbmNlIGEgc2VnbWVudCByZWFjaGVzIHRoaXMgbGVuZ3RoLCB3ZSBiZWdpbiB0aGUgbmV4dCBvbmUuCQEgV2UgcmVzZXQgYWxsIHNlZ21lbnRzIGFuZCByZXR1cm4gdG8gYDBgIGF0IHRoZSBiZWdpbm5pbmcgb2YgZXZlcnkcIGVwb2NoLkRVbmRlckNvbnN0cnVjdGlvbgEBBAUQGQgEAAQVASBUV09YLU5PVEU6IGBTZWdtZW50SW5kZXhgIGlzIGFuIGluY3JlYXNpbmcgaW50ZWdlciwgc28gdGhpcyBpcyBva2F5LixJbml0aWFsaXplZAAAIQgEAAgBASBUZW1wb3JhcnkgdmFsdWUgKGNsZWFyZWQgYXQgYmxvY2sgZmluYWxpemF0aW9uKSB3aGljaCBpcyBgU29tZWAdASBpZiBwZXItYmxvY2sgaW5pdGlhbGl6YXRpb24gaGFzIGFscmVhZHkgYmVlbiBjYWxsZWQgZm9yIGN1cnJlbnQgYmxvY2suTEF1dGhvclZyZlJhbmRvbW5lc3MBAIQEABAVASBUaGlzIGZpZWxkIHNob3VsZCBhbHdheXMgYmUgcG9wdWxhdGVkIGR1cmluZyBibG9jayBwcm9jZXNzaW5nIHVubGVzcxkBIHNlY29uZGFyeSBwbGFpbiBzbG90cyBhcmUgZW5hYmxlZCAod2hpY2ggZG9uJ3QgY29udGFpbiBhIFZSRiBvdXRwdXQpLgBJASBJdCBpcyBzZXQgaW4gYG9uX2ZpbmFsaXplYCwgYmVmb3JlIGl0IHdpbGwgY29udGFpbiB0aGUgdmFsdWUgZnJvbSB0aGUgbGFzdCBibG9jay4oRXBvY2hTdGFydAEAgCAAAAAAAAAAABRdASBUaGUgYmxvY2sgbnVtYmVycyB3aGVuIHRoZSBsYXN0IGFuZCBjdXJyZW50IGVwb2NoIGhhdmUgc3RhcnRlZCwgcmVzcGVjdGl2ZWx5IGBOLTFgIGFuZBQgYE5gLkkBIE5PVEU6IFdlIHRyYWNrIHRoaXMgaXMgaW4gb3JkZXIgdG8gYW5ub3RhdGUgdGhlIGJsb2NrIG51bWJlciB3aGVuIGEgZ2l2ZW4gcG9vbCBvZlkBIGVudHJvcHkgd2FzIGZpeGVkIChpLmUuIGl0IHdhcyBrbm93biB0byBjaGFpbiBvYnNlcnZlcnMpLiBTaW5jZSBlcG9jaHMgYXJlIGRlZmluZWQgaW5ZASBzbG90cywgd2hpY2ggbWF5IGJlIHNraXBwZWQsIHRoZSBibG9jayBudW1iZXJzIG1heSBub3QgbGluZSB1cCB3aXRoIHRoZSBzbG90IG51bWJlcnMuIExhdGVuZXNzAQAQEAAAAAAU2CBIb3cgbGF0ZSB0aGUgY3VycmVudCBibG9jayBpcyBjb21wYXJlZCB0byBpdHMgcGFyZW50LgAVASBUaGlzIGVudHJ5IGlzIHBvcHVsYXRlZCBhcyBwYXJ0IG9mIGJsb2NrIGV4ZWN1dGlvbiBhbmQgaXMgY2xlYW5lZCB1cBEBIG9uIGJsb2NrIGZpbmFsaXphdGlvbi4gUXVlcnlpbmcgdGhpcyBzdG9yYWdlIGVudHJ5IG91dHNpZGUgb2YgYmxvY2uwIGV4ZWN1dGlvbiBjb250ZXh0IHNob3VsZCBhbHdheXMgeWllbGQgemVyby4sRXBvY2hDb25maWcAADkIBAAIYQEgVGhlIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBjdXJyZW50IGVwb2NoLiBTaG91bGQgbmV2ZXIgYmUgYE5vbmVgIGFzIGl0IGlzIGluaXRpYWxpemVkIGluJCBnZW5lc2lzLjxOZXh0RXBvY2hDb25maWcAADkIBAAILQEgVGhlIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBuZXh0IGVwb2NoLCBgTm9uZWAgaWYgdGhlIGNvbmZpZyB3aWxsIG5vdCBjaGFuZ2XoICh5b3UgY2FuIGZhbGxiYWNrIHRvIGBFcG9jaENvbmZpZ2AgaW5zdGVhZCBpbiB0aGF0IGNhc2UpLjRTa2lwcGVkRXBvY2hzAQA9CAQAICkBIEEgbGlzdCBvZiB0aGUgbGFzdCAxMDAgc2tpcHBlZCBlcG9jaHMgYW5kIHRoZSBjb3JyZXNwb25kaW5nIHNlc3Npb24gaW5kZXhwIHdoZW4gdGhlIGVwb2NoIHdhcyBza2lwcGVkLgAxASBUaGlzIGlzIG9ubHkgdXNlZCBmb3IgdmFsaWRhdGluZyBlcXVpdm9jYXRpb24gcHJvb2ZzLiBBbiBlcXVpdm9jYXRpb24gcHJvb2Y1ASBtdXN0IGNvbnRhaW5zIGEga2V5LW93bmVyc2hpcCBwcm9vZiBmb3IgYSBnaXZlbiBzZXNzaW9uLCB0aGVyZWZvcmUgd2UgbmVlZCBhOQEgd2F5IHRvIHRpZSB0b2dldGhlciBzZXNzaW9ucyBhbmQgZXBvY2ggaW5kaWNlcywgaS5lLiB3ZSBuZWVkIHRvIHZhbGlkYXRlIHRoYXQpASBhIHZhbGlkYXRvciB3YXMgdGhlIG93bmVyIG9mIGEgZ2l2ZW4ga2V5IG9uIGEgZ2l2ZW4gc2Vzc2lvbiwgYW5kIHdoYXQgdGhlsCBhY3RpdmUgZXBvY2ggaW5kZXggd2FzIGR1cmluZyB0aGF0IHNlc3Npb24uAZkBABA0RXBvY2hEdXJhdGlvbjAgWAIAAAAAAAAM7CBUaGUgYW1vdW50IG9mIHRpbWUsIGluIHNsb3RzLCB0aGF0IGVhY2ggZXBvY2ggc2hvdWxkIGxhc3QuGQEgTk9URTogQ3VycmVudGx5IGl0IGlzIG5vdCBwb3NzaWJsZSB0byBjaGFuZ2UgdGhlIGVwb2NoIGR1cmF0aW9uIGFmdGVyIQEgdGhlIGNoYWluIGhhcyBzdGFydGVkLiBBdHRlbXB0aW5nIHRvIGRvIHNvIHdpbGwgYnJpY2sgYmxvY2sgcHJvZHVjdGlvbi5ERXhwZWN0ZWRCbG9ja1RpbWUwIHAXAAAAAAAAFAUBIFRoZSBleHBlY3RlZCBhdmVyYWdlIGJsb2NrIHRpbWUgYXQgd2hpY2ggQkFCRSBzaG91bGQgYmUgY3JlYXRpbmcRASBibG9ja3MuIFNpbmNlIEJBQkUgaXMgcHJvYmFiaWxpc3RpYyBpdCBpcyBub3QgdHJpdmlhbCB0byBmaWd1cmUgb3V0BQEgd2hhdCB0aGUgZXhwZWN0ZWQgYXZlcmFnZSBibG9jayB0aW1lIHNob3VsZCBiZSBiYXNlZCBvbiB0aGUgc2xvdAkBIGR1cmF0aW9uIGFuZCB0aGUgc2VjdXJpdHkgcGFyYW1ldGVyIGBjYCAod2hlcmUgYDEgLSBjYCByZXByZXNlbnRzoCB0aGUgcHJvYmFiaWxpdHkgb2YgYSBzbG90IGJlaW5nIGVtcHR5KS44TWF4QXV0aG9yaXRpZXMQEKCGAQAEiCBNYXggbnVtYmVyIG9mIGF1dGhvcml0aWVzIGFsbG93ZWQ0TWF4Tm9taW5hdG9ycxAQAAIAAATUIFRoZSBtYXhpbXVtIG51bWJlciBvZiBub21pbmF0b3JzIGZvciBlYWNoIHZhbGlkYXRvci4BSQgCACRUaW1lc3RhbXABJFRpbWVzdGFtcAgMTm93AQAwIAAAAAAAAAAABKAgVGhlIGN1cnJlbnQgdGltZSBmb3IgdGhlIGN1cnJlbnQgYmxvY2suJERpZFVwZGF0ZQEAIAQAENggV2hldGhlciB0aGUgdGltZXN0YW1wIGhhcyBiZWVuIHVwZGF0ZWQgaW4gdGhpcyBibG9jay4AVQEgVGhpcyB2YWx1ZSBpcyB1cGRhdGVkIHRvIGB0cnVlYCB1cG9uIHN1Y2Nlc3NmdWwgc3VibWlzc2lvbiBvZiBhIHRpbWVzdGFtcCBieSBhIG5vZGUuRQEgSXQgaXMgdGhlbiBjaGVja2VkIGF0IHRoZSBlbmQgb2YgZWFjaCBibG9jayBleGVjdXRpb24gaW4gdGhlIGBvbl9maW5hbGl6ZWAgaG9vay4BvQEABDRNaW5pbXVtUGVyaW9kMCC4CwAAAAAAABiMIFRoZSBtaW5pbXVtIHBlcmlvZCBiZXR3ZWVuIGJsb2Nrcy4ATQEgQmUgYXdhcmUgdGhhdCB0aGlzIGlzIGRpZmZlcmVudCB0byB0aGUgKmV4cGVjdGVkKiBwZXJpb2QgdGhhdCB0aGUgYmxvY2sgcHJvZHVjdGlvbkkBIGFwcGFyYXR1cyBwcm92aWRlcy4gWW91ciBjaG9zZW4gY29uc2Vuc3VzIHN5c3RlbSB3aWxsIGdlbmVyYWxseSB3b3JrIHdpdGggdGhpcyB0b2EBIGRldGVybWluZSBhIHNlbnNpYmxlIGJsb2NrIHRpbWUuIEZvciBleGFtcGxlLCBpbiB0aGUgQXVyYSBwYWxsZXQgaXQgd2lsbCBiZSBkb3VibGUgdGhpc3AgcGVyaW9kIG9uIGRlZmF1bHQgc2V0dGluZ3MuAAMAHEluZGljZXMBHEluZGljZXMEIEFjY291bnRzAAEEAhBNCAQABIggVGhlIGxvb2t1cCBmcm9tIGluZGV4IHRvIGFjY291bnQuAcEBAZQEHERlcG9zaXQYQADodkgXAAAAAAAAAAAAAAAErCBUaGUgZGVwb3NpdCBuZWVkZWQgZm9yIHJlc2VydmluZyBhbiBpbmRleC4BUQgEACBCYWxhbmNlcwEgQmFsYW5jZXMcNFRvdGFsSXNzdWFuY2UBABhAAAAAAAAAAAAAAAAAAAAAAASYIFRoZSB0b3RhbCB1bml0cyBpc3N1ZWQgaW4gdGhlIHN5c3RlbS5ASW5hY3RpdmVJc3N1YW5jZQEAGEAAAAAAAAAAAAAAAAAAAAAABAkBIFRoZSB0b3RhbCB1bml0cyBvZiBvdXRzdGFuZGluZyBkZWFjdGl2YXRlZCBiYWxhbmNlIGluIHRoZSBzeXN0ZW0uHEFjY291bnQBAQQCABQBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIBgCQEgVGhlIEJhbGFuY2VzIHBhbGxldCBleGFtcGxlIG9mIHN0b3JpbmcgdGhlIGJhbGFuY2Ugb2YgYW4gYWNjb3VudC4AKCAjIEV4YW1wbGUANCBgYGBub2NvbXBpbGWwICBpbXBsIHBhbGxldF9iYWxhbmNlczo6Q29uZmlnIGZvciBSdW50aW1lIHsZAiAgICB0eXBlIEFjY291bnRTdG9yZSA9IFN0b3JhZ2VNYXBTaGltPFNlbGY6OkFjY291bnQ8UnVudGltZT4sIGZyYW1lX3N5c3RlbTo6UHJvdmlkZXI8UnVudGltZT4sIEFjY291bnRJZCwgU2VsZjo6QWNjb3VudERhdGE8QmFsYW5jZT4+DCAgfRAgYGBgABUBIFlvdSBjYW4gYWxzbyBzdG9yZSB0aGUgYmFsYW5jZSBvZiBhbiBhY2NvdW50IGluIHRoZSBgU3lzdGVtYCBwYWxsZXQuACggIyBFeGFtcGxlADQgYGBgbm9jb21waWxlsCAgaW1wbCBwYWxsZXRfYmFsYW5jZXM6OkNvbmZpZyBmb3IgUnVudGltZSB7dCAgIHR5cGUgQWNjb3VudFN0b3JlID0gU3lzdGVtDCAgfRAgYGBgAFEBIEJ1dCB0aGlzIGNvbWVzIHdpdGggdHJhZGVvZmZzLCBzdG9yaW5nIGFjY291bnQgYmFsYW5jZXMgaW4gdGhlIHN5c3RlbSBwYWxsZXQgc3RvcmVzbQEgYGZyYW1lX3N5c3RlbWAgZGF0YSBhbG9uZ3NpZGUgdGhlIGFjY291bnQgZGF0YSBjb250cmFyeSB0byBzdG9yaW5nIGFjY291bnQgYmFsYW5jZXMgaW4gdGhlKQEgYEJhbGFuY2VzYCBwYWxsZXQsIHdoaWNoIHVzZXMgYSBgU3RvcmFnZU1hcGAgdG8gc3RvcmUgYmFsYW5jZXMgZGF0YSBvbmx5LkEBIE5PVEU6IFRoaXMgaXMgb25seSB1c2VkIGluIHRoZSBjYXNlIHRoYXQgdGhpcyBwYWxsZXQgaXMgdXNlZCB0byBzdG9yZSBiYWxhbmNlcy4UTG9ja3MBAQQCAFUIBAAQuCBBbnkgbGlxdWlkaXR5IGxvY2tzIG9uIHNvbWUgYWNjb3VudCBiYWxhbmNlcy4lASBOT1RFOiBTaG91bGQgb25seSBiZSBhY2Nlc3NlZCB3aGVuIHNldHRpbmcsIGNoYW5naW5nIGFuZCBmcmVlaW5nIGEgbG9jay4ArQEgVXNlIG9mIGxvY2tzIGlzIGRlcHJlY2F0ZWQgaW4gZmF2b3VyIG9mIGZyZWV6ZXMuIFNlZSBgaHR0cHM6Ly9naXRodWIuY29tL3Bhcml0eXRlY2gvc3Vic3RyYXRlL3B1bGwvMTI5NTEvYCBSZXNlcnZlcwEBBAIAZQgEAAykIE5hbWVkIHJlc2VydmVzIG9uIHNvbWUgYWNjb3VudCBiYWxhbmNlcy4AsQEgVXNlIG9mIHJlc2VydmVzIGlzIGRlcHJlY2F0ZWQgaW4gZmF2b3VyIG9mIGhvbGRzLiBTZWUgYGh0dHBzOi8vZ2l0aHViLmNvbS9wYXJpdHl0ZWNoL3N1YnN0cmF0ZS9wdWxsLzEyOTUxL2AUSG9sZHMBAQQCAHEIBAAEbCBIb2xkcyBvbiBhY2NvdW50IGJhbGFuY2VzLhxGcmVlemVzAQEEAgCJCAQABIggRnJlZXplIGxvY2tzIG9uIGFjY291bnQgYmFsYW5jZXMuAc0BAZgQSEV4aXN0ZW50aWFsRGVwb3NpdBhAAOQLVAIAAAAAAAAAAAAAACBBASBUaGUgbWluaW11bSBhbW91bnQgcmVxdWlyZWQgdG8ga2VlcCBhbiBhY2NvdW50IG9wZW4uIE1VU1QgQkUgR1JFQVRFUiBUSEFOIFpFUk8hAFkBIElmIHlvdSAqcmVhbGx5KiBuZWVkIGl0IHRvIGJlIHplcm8sIHlvdSBjYW4gZW5hYmxlIHRoZSBmZWF0dXJlIGBpbnNlY3VyZV96ZXJvX2VkYCBmb3JhASB0aGlzIHBhbGxldC4gSG93ZXZlciwgeW91IGRvIHNvIGF0IHlvdXIgb3duIHJpc2s6IHRoaXMgd2lsbCBvcGVuIHVwIGEgbWFqb3IgRG9TIHZlY3Rvci5ZASBJbiBjYXNlIHlvdSBoYXZlIG11bHRpcGxlIHNvdXJjZXMgb2YgcHJvdmlkZXIgcmVmZXJlbmNlcywgeW91IG1heSBhbHNvIGdldCB1bmV4cGVjdGVkjCBiZWhhdmlvdXIgaWYgeW91IHNldCB0aGlzIHRvIHplcm8uAPAgQm90dG9tIGxpbmU6IERvIHlvdXJzZWxmIGEgZmF2b3VyIGFuZCBtYWtlIGl0IGF0IGxlYXN0IG9uZSEgTWF4TG9ja3MQEDIAAAAQ9CBUaGUgbWF4aW11bSBudW1iZXIgb2YgbG9ja3MgdGhhdCBzaG91bGQgZXhpc3Qgb24gYW4gYWNjb3VudC7cIE5vdCBzdHJpY3RseSBlbmZvcmNlZCwgYnV0IHVzZWQgZm9yIHdlaWdodCBlc3RpbWF0aW9uLgCtASBVc2Ugb2YgbG9ja3MgaXMgZGVwcmVjYXRlZCBpbiBmYXZvdXIgb2YgZnJlZXplcy4gU2VlIGBodHRwczovL2dpdGh1Yi5jb20vcGFyaXR5dGVjaC9zdWJzdHJhdGUvcHVsbC8xMjk1MS9gLE1heFJlc2VydmVzEBAyAAAADA0BIFRoZSBtYXhpbXVtIG51bWJlciBvZiBuYW1lZCByZXNlcnZlcyB0aGF0IGNhbiBleGlzdCBvbiBhbiBhY2NvdW50LgCxASBVc2Ugb2YgcmVzZXJ2ZXMgaXMgZGVwcmVjYXRlZCBpbiBmYXZvdXIgb2YgaG9sZHMuIFNlZSBgaHR0cHM6Ly9naXRodWIuY29tL3Bhcml0eXRlY2gvc3Vic3RyYXRlL3B1bGwvMTI5NTEvYChNYXhGcmVlemVzEBAIAAAABGEBIFRoZSBtYXhpbXVtIG51bWJlciBvZiBpbmRpdmlkdWFsIGZyZWV6ZSBsb2NrcyB0aGF0IGNhbiBleGlzdCBvbiBhbiBhY2NvdW50IGF0IGFueSB0aW1lLgGdCAUASFRyYW5zYWN0aW9uUGF5bWVudAFIVHJhbnNhY3Rpb25QYXltZW50CEROZXh0RmVlTXVsdGlwbGllcgEApQZAAABkp7O24A0AAAAAAAAAAAA4U3RvcmFnZVZlcnNpb24BAKEIBAAAAAGgBGBPcGVyYXRpb25hbEZlZU11bHRpcGxpZXIIBAVUWQEgQSBmZWUgbXVsdGlwbGllciBmb3IgYE9wZXJhdGlvbmFsYCBleHRyaW5zaWNzIHRvIGNvbXB1dGUgInZpcnR1YWwgdGlwIiB0byBib29zdCB0aGVpciwgYHByaW9yaXR5YABRASBUaGlzIHZhbHVlIGlzIG11bHRpcGxpZWQgYnkgdGhlIGBmaW5hbF9mZWVgIHRvIG9idGFpbiBhICJ2aXJ0dWFsIHRpcCIgdGhhdCBpcyBsYXRlcvQgYWRkZWQgdG8gYSB0aXAgY29tcG9uZW50IGluIHJlZ3VsYXIgYHByaW9yaXR5YCBjYWxjdWxhdGlvbnMuTQEgSXQgbWVhbnMgdGhhdCBhIGBOb3JtYWxgIHRyYW5zYWN0aW9uIGNhbiBmcm9udC1ydW4gYSBzaW1pbGFybHktc2l6ZWQgYE9wZXJhdGlvbmFsYEEBIGV4dHJpbnNpYyAod2l0aCBubyB0aXApLCBieSBpbmNsdWRpbmcgYSB0aXAgdmFsdWUgZ3JlYXRlciB0aGFuIHRoZSB2aXJ0dWFsIHRpcC4APCBgYGBydXN0LGlnbm9yZUAgLy8gRm9yIGBOb3JtYWxgjCBsZXQgcHJpb3JpdHkgPSBwcmlvcml0eV9jYWxjKHRpcCk7AFQgLy8gRm9yIGBPcGVyYXRpb25hbGARASBsZXQgdmlydHVhbF90aXAgPSAoaW5jbHVzaW9uX2ZlZSArIHRpcCkgKiBPcGVyYXRpb25hbEZlZU11bHRpcGxpZXI7xCBsZXQgcHJpb3JpdHkgPSBwcmlvcml0eV9jYWxjKHRpcCArIHZpcnR1YWxfdGlwKTsQIGBgYABRASBOb3RlIHRoYXQgc2luY2Ugd2UgdXNlIGBmaW5hbF9mZWVgIHRoZSBtdWx0aXBsaWVyIGFwcGxpZXMgYWxzbyB0byB0aGUgcmVndWxhciBgdGlwYF0BIHNlbnQgd2l0aCB0aGUgdHJhbnNhY3Rpb24uIFNvLCBub3Qgb25seSBkb2VzIHRoZSB0cmFuc2FjdGlvbiBnZXQgYSBwcmlvcml0eSBidW1wIGJhc2VkYQEgb24gdGhlIGBpbmNsdXNpb25fZmVlYCwgYnV0IHdlIGFsc28gYW1wbGlmeSB0aGUgaW1wYWN0IG9mIHRpcHMgYXBwbGllZCB0byBgT3BlcmF0aW9uYWxgOCB0cmFuc2FjdGlvbnMuACAAKEF1dGhvcnNoaXABKEF1dGhvcnNoaXAEGEF1dGhvcgAAAAQABGQgQXV0aG9yIG9mIGN1cnJlbnQgYmxvY2suAAAAAAYAHFN0YWtpbmcBHFN0YWtpbmesOFZhbGlkYXRvckNvdW50AQAQEAAAAAAEnCBUaGUgaWRlYWwgbnVtYmVyIG9mIGFjdGl2ZSB2YWxpZGF0b3JzLlRNaW5pbXVtVmFsaWRhdG9yQ291bnQBABAQAAAAAARBASBNaW5pbXVtIG51bWJlciBvZiBzdGFraW5nIHBhcnRpY2lwYW50cyBiZWZvcmUgZW1lcmdlbmN5IGNvbmRpdGlvbnMgYXJlIGltcG9zZWQuNEludnVsbmVyYWJsZXMBANEBBAAMWQEgQW55IHZhbGlkYXRvcnMgdGhhdCBtYXkgbmV2ZXIgYmUgc2xhc2hlZCBvciBmb3JjaWJseSBraWNrZWQuIEl0J3MgYSBWZWMgc2luY2UgdGhleSdyZU0BIGVhc3kgdG8gaW5pdGlhbGl6ZSBhbmQgdGhlIHBlcmZvcm1hbmNlIGhpdCBpcyBtaW5pbWFsICh3ZSBleHBlY3Qgbm8gbW9yZSB0aGFuIGZvdXKsIGludnVsbmVyYWJsZXMpIGFuZCByZXN0cmljdGVkIHRvIHRlc3RuZXRzLhhCb25kZWQAAQQFAAAEAAwBASBNYXAgZnJvbSBhbGwgbG9ja2VkICJzdGFzaCIgYWNjb3VudHMgdG8gdGhlIGNvbnRyb2xsZXIgYWNjb3VudC4A0CBUV09YLU5PVEU6IFNBRkUgc2luY2UgYEFjY291bnRJZGAgaXMgYSBzZWN1cmUgaGFzaC5ATWluTm9taW5hdG9yQm9uZAEAGEAAAAAAAAAAAAAAAAAAAAAABCEBIFRoZSBtaW5pbXVtIGFjdGl2ZSBib25kIHRvIGJlY29tZSBhbmQgbWFpbnRhaW4gdGhlIHJvbGUgb2YgYSBub21pbmF0b3IuQE1pblZhbGlkYXRvckJvbmQBABhAAAAAAAAAAAAAAAAAAAAAAAQhASBUaGUgbWluaW11bSBhY3RpdmUgYm9uZCB0byBiZWNvbWUgYW5kIG1haW50YWluIHRoZSByb2xlIG9mIGEgdmFsaWRhdG9yLkhNaW5pbXVtQWN0aXZlU3Rha2UBABhAAAAAAAAAAAAAAAAAAAAAAAQRASBUaGUgbWluaW11bSBhY3RpdmUgbm9taW5hdG9yIHN0YWtlIG9mIHRoZSBsYXN0IHN1Y2Nlc3NmdWwgZWxlY3Rpb24uNE1pbkNvbW1pc3Npb24BAKwQAAAAAAzoIFRoZSBtaW5pbXVtIGFtb3VudCBvZiBjb21taXNzaW9uIHRoYXQgdmFsaWRhdG9ycyBjYW4gc2V0LgCAIElmIHNldCB0byBgMGAsIG5vIGxpbWl0IGV4aXN0cy4YTGVkZ2VyAAEEAgClCAQAEEUBIE1hcCBmcm9tIGFsbCAodW5sb2NrZWQpICJjb250cm9sbGVyIiBhY2NvdW50cyB0byB0aGUgaW5mbyByZWdhcmRpbmcgdGhlIHN0YWtpbmcuAHUBIE5vdGU6IEFsbCB0aGUgcmVhZHMgYW5kIG11dGF0aW9ucyB0byB0aGlzIHN0b3JhZ2UgKk1VU1QqIGJlIGRvbmUgdGhyb3VnaCB0aGUgbWV0aG9kcyBleHBvc2Vk6CBieSBbYFN0YWtpbmdMZWRnZXJgXSB0byBlbnN1cmUgZGF0YSBhbmQgbG9jayBjb25zaXN0ZW5jeS4UUGF5ZWUAAQQFAKgEAAzkIFdoZXJlIHRoZSByZXdhcmQgcGF5bWVudCBzaG91bGQgYmUgbWFkZS4gS2V5ZWQgYnkgc3Rhc2guANAgVFdPWC1OT1RFOiBTQUZFIHNpbmNlIGBBY2NvdW50SWRgIGlzIGEgc2VjdXJlIGhhc2guKFZhbGlkYXRvcnMBAQQFALAIAAAMRQEgVGhlIG1hcCBmcm9tICh3YW5uYWJlKSB2YWxpZGF0b3Igc3Rhc2gga2V5IHRvIHRoZSBwcmVmZXJlbmNlcyBvZiB0aGF0IHZhbGlkYXRvci4A0CBUV09YLU5PVEU6IFNBRkUgc2luY2UgYEFjY291bnRJZGAgaXMgYSBzZWN1cmUgaGFzaC5QQ291bnRlckZvclZhbGlkYXRvcnMBABAQAAAAAASsQ291bnRlciBmb3IgdGhlIHJlbGF0ZWQgY291bnRlZCBzdG9yYWdlIG1hcEhNYXhWYWxpZGF0b3JzQ291bnQAABAEAAwxASBUaGUgbWF4aW11bSB2YWxpZGF0b3IgY291bnQgYmVmb3JlIHdlIHN0b3AgYWxsb3dpbmcgbmV3IHZhbGlkYXRvcnMgdG8gam9pbi4A0CBXaGVuIHRoaXMgdmFsdWUgaXMgbm90IHNldCwgbm8gbGltaXRzIGFyZSBlbmZvcmNlZC4oTm9taW5hdG9ycwABBAUArQgEAEx1ASBUaGUgbWFwIGZyb20gbm9taW5hdG9yIHN0YXNoIGtleSB0byB0aGVpciBub21pbmF0aW9uIHByZWZlcmVuY2VzLCBuYW1lbHkgdGhlIHZhbGlkYXRvcnMgdGhhdFggdGhleSB3aXNoIHRvIHN1cHBvcnQuADkBIE5vdGUgdGhhdCB0aGUga2V5cyBvZiB0aGlzIHN0b3JhZ2UgbWFwIG1pZ2h0IGJlY29tZSBub24tZGVjb2RhYmxlIGluIGNhc2UgdGhlLQEgYWNjb3VudCdzIFtgTm9taW5hdGlvbnNRdW90YTo6TWF4Tm9taW5hdGlvbnNgXSBjb25maWd1cmF0aW9uIGlzIGRlY3JlYXNlZC6QIEluIHRoaXMgcmFyZSBjYXNlLCB0aGVzZSBub21pbmF0b3JzZQEgYXJlIHN0aWxsIGV4aXN0ZW50IGluIHN0b3JhZ2UsIHRoZWlyIGtleSBpcyBjb3JyZWN0IGFuZCByZXRyaWV2YWJsZSAoaS5lLiBgY29udGFpbnNfa2V5YHEBIGluZGljYXRlcyB0aGF0IHRoZXkgZXhpc3QpLCBidXQgdGhlaXIgdmFsdWUgY2Fubm90IGJlIGRlY29kZWQuIFRoZXJlZm9yZSwgdGhlIG5vbi1kZWNvZGFibGVtASBub21pbmF0b3JzIHdpbGwgZWZmZWN0aXZlbHkgbm90LWV4aXN0LCB1bnRpbCB0aGV5IHJlLXN1Ym1pdCB0aGVpciBwcmVmZXJlbmNlcyBzdWNoIHRoYXQgaXQBASBpcyB3aXRoaW4gdGhlIGJvdW5kcyBvZiB0aGUgbmV3bHkgc2V0IGBDb25maWc6Ok1heE5vbWluYXRpb25zYC4AYQEgVGhpcyBpbXBsaWVzIHRoYXQgYDo6aXRlcl9rZXlzKCkuY291bnQoKWAgYW5kIGA6Oml0ZXIoKS5jb3VudCgpYCBtaWdodCByZXR1cm4gZGlmZmVyZW50bQEgdmFsdWVzIGZvciB0aGlzIG1hcC4gTW9yZW92ZXIsIHRoZSBtYWluIGA6OmNvdW50KClgIGlzIGFsaWduZWQgd2l0aCB0aGUgZm9ybWVyLCBuYW1lbHkgdGhlbCBudW1iZXIgb2Yga2V5cyB0aGF0IGV4aXN0LgBtASBMYXN0bHksIGlmIGFueSBvZiB0aGUgbm9taW5hdG9ycyBiZWNvbWUgbm9uLWRlY29kYWJsZSwgdGhleSBjYW4gYmUgY2hpbGxlZCBpbW1lZGlhdGVseSB2aWG4IFtgQ2FsbDo6Y2hpbGxfb3RoZXJgXSBkaXNwYXRjaGFibGUgYnkgYW55b25lLgDQIFRXT1gtTk9URTogU0FGRSBzaW5jZSBgQWNjb3VudElkYCBpcyBhIHNlY3VyZSBoYXNoLlBDb3VudGVyRm9yTm9taW5hdG9ycwEAEBAAAAAABKxDb3VudGVyIGZvciB0aGUgcmVsYXRlZCBjb3VudGVkIHN0b3JhZ2UgbWFwOFZpcnR1YWxTdGFrZXJzAAEEBQCMBAAYyCBTdGFrZXJzIHdob3NlIGZ1bmRzIGFyZSBtYW5hZ2VkIGJ5IG90aGVyIHBhbGxldHMuAHUBIFRoaXMgcGFsbGV0IGRvZXMgbm90IGFwcGx5IGFueSBsb2NrcyBvbiB0aGVtLCB0aGVyZWZvcmUgdGhleSBhcmUgb25seSB2aXJ0dWFsbHkgYm9uZGVkLiBUaGV5bQEgYXJlIGV4cGVjdGVkIHRvIGJlIGtleWxlc3MgYWNjb3VudHMgYW5kIGhlbmNlIHNob3VsZCBub3QgYmUgYWxsb3dlZCB0byBtdXRhdGUgdGhlaXIgbGVkZ2VycQEgZGlyZWN0bHkgdmlhIHRoaXMgcGFsbGV0LiBJbnN0ZWFkLCB0aGVzZSBhY2NvdW50cyBhcmUgbWFuYWdlZCBieSBvdGhlciBwYWxsZXRzIGFuZCBhY2Nlc3NlZCkBIHZpYSBsb3cgbGV2ZWwgYXBpcy4gV2Uga2VlcCB0cmFjayBvZiB0aGVtIHRvIGRvIG1pbmltYWwgaW50ZWdyaXR5IGNoZWNrcy5gQ291bnRlckZvclZpcnR1YWxTdGFrZXJzAQAQEAAAAAAErENvdW50ZXIgZm9yIHRoZSByZWxhdGVkIGNvdW50ZWQgc3RvcmFnZSBtYXBITWF4Tm9taW5hdG9yc0NvdW50AAAQBAAMMQEgVGhlIG1heGltdW0gbm9taW5hdG9yIGNvdW50IGJlZm9yZSB3ZSBzdG9wIGFsbG93aW5nIG5ldyB2YWxpZGF0b3JzIHRvIGpvaW4uANAgV2hlbiB0aGlzIHZhbHVlIGlzIG5vdCBzZXQsIG5vIGxpbWl0cyBhcmUgZW5mb3JjZWQuKEN1cnJlbnRFcmEAABAEABBcIFRoZSBjdXJyZW50IGVyYSBpbmRleC4AZQEgVGhpcyBpcyB0aGUgbGF0ZXN0IHBsYW5uZWQgZXJhLCBkZXBlbmRpbmcgb24gaG93IHRoZSBTZXNzaW9uIHBhbGxldCBxdWV1ZXMgdGhlIHZhbGlkYXRvcoAgc2V0LCBpdCBtaWdodCBiZSBhY3RpdmUgb3Igbm90LiRBY3RpdmVFcmEAALUIBAAQ2CBUaGUgYWN0aXZlIGVyYSBpbmZvcm1hdGlvbiwgaXQgaG9sZHMgaW5kZXggYW5kIHN0YXJ0LgBZASBUaGUgYWN0aXZlIGVyYSBpcyB0aGUgZXJhIGJlaW5nIGN1cnJlbnRseSByZXdhcmRlZC4gVmFsaWRhdG9yIHNldCBvZiB0aGlzIGVyYSBtdXN0IGJlrCBlcXVhbCB0byBbYFNlc3Npb25JbnRlcmZhY2U6OnZhbGlkYXRvcnNgXS5URXJhc1N0YXJ0U2Vzc2lvbkluZGV4AAEEBRAQBAAQVQEgVGhlIHNlc3Npb24gaW5kZXggYXQgd2hpY2ggdGhlIGVyYSBzdGFydCBmb3IgdGhlIGxhc3QgW2BDb25maWc6Okhpc3RvcnlEZXB0aGBdIGVyYXMuAGEBIE5vdGU6IFRoaXMgdHJhY2tzIHRoZSBzdGFydGluZyBzZXNzaW9uIChpLmUuIHNlc3Npb24gaW5kZXggd2hlbiBlcmEgc3RhcnQgYmVpbmcgYWN0aXZlKfAgZm9yIHRoZSBlcmFzIGluIGBbQ3VycmVudEVyYSAtIEhJU1RPUllfREVQVEgsIEN1cnJlbnRFcmFdYC4sRXJhc1N0YWtlcnMBAQgFBb0IwQgMAAAAIHggRXhwb3N1cmUgb2YgdmFsaWRhdG9yIGF0IGVyYS4AYQEgVGhpcyBpcyBrZXllZCBmaXJzdCBieSB0aGUgZXJhIGluZGV4IHRvIGFsbG93IGJ1bGsgZGVsZXRpb24gYW5kIHRoZW4gdGhlIHN0YXNoIGFjY291bnQuAMwgSXMgaXQgcmVtb3ZlZCBhZnRlciBbYENvbmZpZzo6SGlzdG9yeURlcHRoYF0gZXJhcy5BASBJZiBzdGFrZXJzIGhhc24ndCBiZWVuIHNldCBvciBoYXMgYmVlbiByZW1vdmVkIHRoZW4gZW1wdHkgZXhwb3N1cmUgaXMgcmV0dXJuZWQuACkBIE5vdGU6IERlcHJlY2F0ZWQgc2luY2UgdjE0LiBVc2UgYEVyYUluZm9gIGluc3RlYWQgdG8gd29yayB3aXRoIGV4cG9zdXJlcy5MRXJhc1N0YWtlcnNPdmVydmlldwABCAUFvQjNCAQAMLggU3VtbWFyeSBvZiB2YWxpZGF0b3IgZXhwb3N1cmUgYXQgYSBnaXZlbiBlcmEuAHEBIFRoaXMgY29udGFpbnMgdGhlIHRvdGFsIHN0YWtlIGluIHN1cHBvcnQgb2YgdGhlIHZhbGlkYXRvciBhbmQgdGhlaXIgb3duIHN0YWtlLiBJbiBhZGRpdGlvbix1ASBpdCBjYW4gYWxzbyBiZSB1c2VkIHRvIGdldCB0aGUgbnVtYmVyIG9mIG5vbWluYXRvcnMgYmFja2luZyB0aGlzIHZhbGlkYXRvciBhbmQgdGhlIG51bWJlciBvZmkBIGV4cG9zdXJlIHBhZ2VzIHRoZXkgYXJlIGRpdmlkZWQgaW50by4gVGhlIHBhZ2UgY291bnQgaXMgdXNlZnVsIHRvIGRldGVybWluZSB0aGUgbnVtYmVyIG9mrCBwYWdlcyBvZiByZXdhcmRzIHRoYXQgbmVlZHMgdG8gYmUgY2xhaW1lZC4AYQEgVGhpcyBpcyBrZXllZCBmaXJzdCBieSB0aGUgZXJhIGluZGV4IHRvIGFsbG93IGJ1bGsgZGVsZXRpb24gYW5kIHRoZW4gdGhlIHN0YXNoIGFjY291bnQurCBTaG91bGQgb25seSBiZSBhY2Nlc3NlZCB0aHJvdWdoIGBFcmFJbmZvYC4AzCBJcyBpdCByZW1vdmVkIGFmdGVyIFtgQ29uZmlnOjpIaXN0b3J5RGVwdGhgXSBlcmFzLkEBIElmIHN0YWtlcnMgaGFzbid0IGJlZW4gc2V0IG9yIGhhcyBiZWVuIHJlbW92ZWQgdGhlbiBlbXB0eSBvdmVydmlldyBpcyByZXR1cm5lZC5IRXJhc1N0YWtlcnNDbGlwcGVkAQEIBQW9CMEIDAAAAECYIENsaXBwZWQgRXhwb3N1cmUgb2YgdmFsaWRhdG9yIGF0IGVyYS4AZQEgTm90ZTogVGhpcyBpcyBkZXByZWNhdGVkLCBzaG91bGQgYmUgdXNlZCBhcyByZWFkLW9ubHkgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgZnV0dXJlLjEBIE5ldyBgRXhwb3N1cmVgcyBhcmUgc3RvcmVkIGluIGEgcGFnZWQgbWFubmVyIGluIGBFcmFzU3Rha2Vyc1BhZ2VkYCBpbnN0ZWFkLgBZASBUaGlzIGlzIHNpbWlsYXIgdG8gW2BFcmFzU3Rha2Vyc2BdIGJ1dCBudW1iZXIgb2Ygbm9taW5hdG9ycyBleHBvc2VkIGlzIHJlZHVjZWQgdG8gdGhlqCBgVDo6TWF4RXhwb3N1cmVQYWdlU2l6ZWAgYmlnZ2VzdCBzdGFrZXJzLh0BIChOb3RlOiB0aGUgZmllbGQgYHRvdGFsYCBhbmQgYG93bmAgb2YgdGhlIGV4cG9zdXJlIHJlbWFpbnMgdW5jaGFuZ2VkKS70IFRoaXMgaXMgdXNlZCB0byBsaW1pdCB0aGUgaS9vIGNvc3QgZm9yIHRoZSBub21pbmF0b3IgcGF5b3V0LgBdASBUaGlzIGlzIGtleWVkIGZpc3QgYnkgdGhlIGVyYSBpbmRleCB0byBhbGxvdyBidWxrIGRlbGV0aW9uIGFuZCB0aGVuIHRoZSBzdGFzaCBhY2NvdW50LgDMIEl0IGlzIHJlbW92ZWQgYWZ0ZXIgW2BDb25maWc6Okhpc3RvcnlEZXB0aGBdIGVyYXMuQQEgSWYgc3Rha2VycyBoYXNuJ3QgYmVlbiBzZXQgb3IgaGFzIGJlZW4gcmVtb3ZlZCB0aGVuIGVtcHR5IGV4cG9zdXJlIGlzIHJldHVybmVkLgApASBOb3RlOiBEZXByZWNhdGVkIHNpbmNlIHYxNC4gVXNlIGBFcmFJbmZvYCBpbnN0ZWFkIHRvIHdvcmsgd2l0aCBleHBvc3VyZXMuQEVyYXNTdGFrZXJzUGFnZWQAAQwFBQXRCNUIBAAYwCBQYWdpbmF0ZWQgZXhwb3N1cmUgb2YgYSB2YWxpZGF0b3IgYXQgZ2l2ZW4gZXJhLgBxASBUaGlzIGlzIGtleWVkIGZpcnN0IGJ5IHRoZSBlcmEgaW5kZXggdG8gYWxsb3cgYnVsayBkZWxldGlvbiwgdGhlbiBzdGFzaCBhY2NvdW50IGFuZCBmaW5hbGx51CB0aGUgcGFnZS4gU2hvdWxkIG9ubHkgYmUgYWNjZXNzZWQgdGhyb3VnaCBgRXJhSW5mb2AuANQgVGhpcyBpcyBjbGVhcmVkIGFmdGVyIFtgQ29uZmlnOjpIaXN0b3J5RGVwdGhgXSBlcmFzLjhDbGFpbWVkUmV3YXJkcwEBCAUFvQjlAQQAGNwgSGlzdG9yeSBvZiBjbGFpbWVkIHBhZ2VkIHJld2FyZHMgYnkgZXJhIGFuZCB2YWxpZGF0b3IuAGkBIFRoaXMgaXMga2V5ZWQgYnkgZXJhIGFuZCB2YWxpZGF0b3Igc3Rhc2ggd2hpY2ggbWFwcyB0byB0aGUgc2V0IG9mIHBhZ2UgaW5kZXhlcyB3aGljaCBoYXZlOCBiZWVuIGNsYWltZWQuAMwgSXQgaXMgcmVtb3ZlZCBhZnRlciBbYENvbmZpZzo6SGlzdG9yeURlcHRoYF0gZXJhcy5IRXJhc1ZhbGlkYXRvclByZWZzAQEIBQW9CLAIAAAUEQEgU2ltaWxhciB0byBgRXJhc1N0YWtlcnNgLCB0aGlzIGhvbGRzIHRoZSBwcmVmZXJlbmNlcyBvZiB2YWxpZGF0b3JzLgBhASBUaGlzIGlzIGtleWVkIGZpcnN0IGJ5IHRoZSBlcmEgaW5kZXggdG8gYWxsb3cgYnVsayBkZWxldGlvbiBhbmQgdGhlbiB0aGUgc3Rhc2ggYWNjb3VudC4AzCBJcyBpdCByZW1vdmVkIGFmdGVyIFtgQ29uZmlnOjpIaXN0b3J5RGVwdGhgXSBlcmFzLkxFcmFzVmFsaWRhdG9yUmV3YXJkAAEEBRAYBAAMLQEgVGhlIHRvdGFsIHZhbGlkYXRvciBlcmEgcGF5b3V0IGZvciB0aGUgbGFzdCBbYENvbmZpZzo6SGlzdG9yeURlcHRoYF0gZXJhcy4AIQEgRXJhcyB0aGF0IGhhdmVuJ3QgZmluaXNoZWQgeWV0IG9yIGhhcyBiZWVuIHJlbW92ZWQgZG9lc24ndCBoYXZlIHJld2FyZC5ARXJhc1Jld2FyZFBvaW50cwEBBAUQ2QgUAAAAAAAI0CBSZXdhcmRzIGZvciB0aGUgbGFzdCBbYENvbmZpZzo6SGlzdG9yeURlcHRoYF0gZXJhcy4lASBJZiByZXdhcmQgaGFzbid0IGJlZW4gc2V0IG9yIGhhcyBiZWVuIHJlbW92ZWQgdGhlbiAwIHJld2FyZCBpcyByZXR1cm5lZC44RXJhc1RvdGFsU3Rha2UBAQQFEBhAAAAAAAAAAAAAAAAAAAAAAAgRASBUaGUgdG90YWwgYW1vdW50IHN0YWtlZCBmb3IgdGhlIGxhc3QgW2BDb25maWc6Okhpc3RvcnlEZXB0aGBdIGVyYXMuHQEgSWYgdG90YWwgaGFzbid0IGJlZW4gc2V0IG9yIGhhcyBiZWVuIHJlbW92ZWQgdGhlbiAwIHN0YWtlIGlzIHJldHVybmVkLiBGb3JjZUVyYQEAuAQABFQgTW9kZSBvZiBlcmEgZm9yY2luZy5ATWF4U3Rha2VkUmV3YXJkcwAA4QEEAAwZASBNYXhpbXVtIHN0YWtlZCByZXdhcmRzLCBpLmUuIHRoZSBwZXJjZW50YWdlIG9mIHRoZSBlcmEgaW5mbGF0aW9uIHRoYXRsIGlzIHVzZWQgZm9yIHN0YWtlIHJld2FyZHMurCBTZWUgW0VyYSBwYXlvdXRdKC4vaW5kZXguaHRtbCNlcmEtcGF5b3V0KS5MU2xhc2hSZXdhcmRGcmFjdGlvbgEArBAAAAAADPggVGhlIHBlcmNlbnRhZ2Ugb2YgdGhlIHNsYXNoIHRoYXQgaXMgZGlzdHJpYnV0ZWQgdG8gcmVwb3J0ZXJzLgDkIFRoZSByZXN0IG9mIHRoZSBzbGFzaGVkIHZhbHVlIGlzIGhhbmRsZWQgYnkgdGhlIGBTbGFzaGAuTENhbmNlbGVkU2xhc2hQYXlvdXQBABhAAAAAAAAAAAAAAAAAAAAAAAgVASBUaGUgYW1vdW50IG9mIGN1cnJlbmN5IGdpdmVuIHRvIHJlcG9ydGVycyBvZiBhIHNsYXNoIGV2ZW50IHdoaWNoIHdhc+wgY2FuY2VsZWQgYnkgZXh0cmFvcmRpbmFyeSBjaXJjdW1zdGFuY2VzIChlLmcuIGdvdmVybmFuY2UpLkBVbmFwcGxpZWRTbGFzaGVzAQEEBRDpCAQABMQgQWxsIHVuYXBwbGllZCBzbGFzaGVzIHRoYXQgYXJlIHF1ZXVlZCBmb3IgbGF0ZXIuKEJvbmRlZEVyYXMBAJUHBAAQJQEgQSBtYXBwaW5nIGZyb20gc3RpbGwtYm9uZGVkIGVyYXMgdG8gdGhlIGZpcnN0IHNlc3Npb24gaW5kZXggb2YgdGhhdCBlcmEuAMggTXVzdCBjb250YWlucyBpbmZvcm1hdGlvbiBmb3IgZXJhcyBmb3IgdGhlIHJhbmdlOrwgYFthY3RpdmVfZXJhIC0gYm91bmRpbmdfZHVyYXRpb247IGFjdGl2ZV9lcmFdYExWYWxpZGF0b3JTbGFzaEluRXJhAAEIBQW9CPEIBAAIRQEgQWxsIHNsYXNoaW5nIGV2ZW50cyBvbiB2YWxpZGF0b3JzLCBtYXBwZWQgYnkgZXJhIHRvIHRoZSBoaWdoZXN0IHNsYXNoIHByb3BvcnRpb25wIGFuZCBzbGFzaCB2YWx1ZSBvZiB0aGUgZXJhLkxOb21pbmF0b3JTbGFzaEluRXJhAAEIBQW9CBgEAARhASBBbGwgc2xhc2hpbmcgZXZlbnRzIG9uIG5vbWluYXRvcnMsIG1hcHBlZCBieSBlcmEgdG8gdGhlIGhpZ2hlc3Qgc2xhc2ggdmFsdWUgb2YgdGhlIGVyYS40U2xhc2hpbmdTcGFucwABBAUA9QgEAASMIFNsYXNoaW5nIHNwYW5zIGZvciBzdGFzaCBhY2NvdW50cy4kU3BhblNsYXNoAQEEBeUI+QiAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIPQEgUmVjb3JkcyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgbWF4aW11bSBzbGFzaCBvZiBhIHN0YXNoIHdpdGhpbiBhIHNsYXNoaW5nIHNwYW4suCBhcyB3ZWxsIGFzIGhvdyBtdWNoIHJld2FyZCBoYXMgYmVlbiBwYWlkIG91dC5UQ3VycmVudFBsYW5uZWRTZXNzaW9uAQAQEAAAAAAM6CBUaGUgbGFzdCBwbGFubmVkIHNlc3Npb24gc2NoZWR1bGVkIGJ5IHRoZSBzZXNzaW9uIHBhbGxldC4AcQEgVGhpcyBpcyBiYXNpY2FsbHkgaW4gc3luYyB3aXRoIHRoZSBjYWxsIHRvIFtgcGFsbGV0X3Nlc3Npb246OlNlc3Npb25NYW5hZ2VyOjpuZXdfc2Vzc2lvbmBdLkhEaXNhYmxlZFZhbGlkYXRvcnMBAOUBBAAcdQEgSW5kaWNlcyBvZiB2YWxpZGF0b3JzIHRoYXQgaGF2ZSBvZmZlbmRlZCBpbiB0aGUgYWN0aXZlIGVyYS4gVGhlIG9mZmVuZGVycyBhcmUgZGlzYWJsZWQgZm9yIGFpASB3aG9sZSBlcmEuIEZvciB0aGlzIHJlYXNvbiB0aGV5IGFyZSBrZXB0IGhlcmUgLSBvbmx5IHN0YWtpbmcgcGFsbGV0IGtub3dzIGFib3V0IGVyYXMuIFRoZVUBIGltcGxlbWVudG9yIG9mIFtgRGlzYWJsaW5nU3RyYXRlZ3lgXSBkZWZpbmVzIGlmIGEgdmFsaWRhdG9yIHNob3VsZCBiZSBkaXNhYmxlZCB3aGljaG0BIGltcGxpY2l0bHkgbWVhbnMgdGhhdCB0aGUgaW1wbGVtZW50b3IgYWxzbyBjb250cm9scyB0aGUgbWF4IG51bWJlciBvZiBkaXNhYmxlZCB2YWxpZGF0b3JzLgBtASBUaGUgdmVjIGlzIGFsd2F5cyBrZXB0IHNvcnRlZCBzbyB0aGF0IHdlIGNhbiBmaW5kIHdoZXRoZXIgYSBnaXZlbiB2YWxpZGF0b3IgaGFzIHByZXZpb3VzbHl4IG9mZmVuZGVkIHVzaW5nIGJpbmFyeSBzZWFyY2guOENoaWxsVGhyZXNob2xkAADhAQQADFEBIFRoZSB0aHJlc2hvbGQgZm9yIHdoZW4gdXNlcnMgY2FuIHN0YXJ0IGNhbGxpbmcgYGNoaWxsX290aGVyYCBmb3Igb3RoZXIgdmFsaWRhdG9ycyAvWQEgbm9taW5hdG9ycy4gVGhlIHRocmVzaG9sZCBpcyBjb21wYXJlZCB0byB0aGUgYWN0dWFsIG51bWJlciBvZiB2YWxpZGF0b3JzIC8gbm9taW5hdG9ycykBIChgQ291bnRGb3IqYCkgaW4gdGhlIHN5c3RlbSBjb21wYXJlZCB0byB0aGUgY29uZmlndXJlZCBtYXggKGBNYXgqQ291bnRgKS4B2QEBpBgwSGlzdG9yeURlcHRoEBBUAAAAUIwgTnVtYmVyIG9mIGVyYXMgdG8ga2VlcCBpbiBoaXN0b3J5LgDoIEZvbGxvd2luZyBpbmZvcm1hdGlvbiBpcyBrZXB0IGZvciBlcmFzIGluIGBbY3VycmVudF9lcmEgLQkBIEhpc3RvcnlEZXB0aCwgY3VycmVudF9lcmFdYDogYEVyYXNTdGFrZXJzYCwgYEVyYXNTdGFrZXJzQ2xpcHBlZGAsBQEgYEVyYXNWYWxpZGF0b3JQcmVmc2AsIGBFcmFzVmFsaWRhdG9yUmV3YXJkYCwgYEVyYXNSZXdhcmRQb2ludHNgLEUBIGBFcmFzVG90YWxTdGFrZWAsIGBFcmFzU3RhcnRTZXNzaW9uSW5kZXhgLCBgQ2xhaW1lZFJld2FyZHNgLCBgRXJhc1N0YWtlcnNQYWdlZGAsXCBgRXJhc1N0YWtlcnNPdmVydmlld2AuAOQgTXVzdCBiZSBtb3JlIHRoYW4gdGhlIG51bWJlciBvZiBlcmFzIGRlbGF5ZWQgYnkgc2Vzc2lvbi74IEkuZS4gYWN0aXZlIGVyYSBtdXN0IGFsd2F5cyBiZSBpbiBoaXN0b3J5LiBJLmUuIGBhY3RpdmVfZXJhID7EIGN1cnJlbnRfZXJhIC0gaGlzdG9yeV9kZXB0aGAgbXVzdCBiZSBndWFyYW50ZWVkLgARASBJZiBtaWdyYXRpbmcgYW4gZXhpc3RpbmcgcGFsbGV0IGZyb20gc3RvcmFnZSB2YWx1ZSB0byBjb25maWcgdmFsdWUs7CB0aGlzIHNob3VsZCBiZSBzZXQgdG8gc2FtZSB2YWx1ZSBvciBncmVhdGVyIGFzIGluIHN0b3JhZ2UuABUBIE5vdGU6IGBIaXN0b3J5RGVwdGhgIGlzIHVzZWQgYXMgdGhlIHVwcGVyIGJvdW5kIGZvciB0aGUgYEJvdW5kZWRWZWNgLQEgaXRlbSBgU3Rha2luZ0xlZGdlci5sZWdhY3lfY2xhaW1lZF9yZXdhcmRzYC4gU2V0dGluZyB0aGlzIHZhbHVlIGxvd2VyIHRoYW7YIHRoZSBleGlzdGluZyB2YWx1ZSBjYW4gbGVhZCB0byBpbmNvbnNpc3RlbmNpZXMgaW4gdGhlFQEgYFN0YWtpbmdMZWRnZXJgIGFuZCB3aWxsIG5lZWQgdG8gYmUgaGFuZGxlZCBwcm9wZXJseSBpbiBhIG1pZ3JhdGlvbi7wIFRoZSB0ZXN0IGByZWR1Y2luZ19oaXN0b3J5X2RlcHRoX2FicnVwdGAgc2hvd3MgdGhpcyBlZmZlY3QuOFNlc3Npb25zUGVyRXJhEBAGAAAABHAgTnVtYmVyIG9mIHNlc3Npb25zIHBlciBlcmEuPEJvbmRpbmdEdXJhdGlvbhAQHAAAAATkIE51bWJlciBvZiBlcmFzIHRoYXQgc3Rha2VkIGZ1bmRzIG11c3QgcmVtYWluIGJvbmRlZCBmb3IuSFNsYXNoRGVmZXJEdXJhdGlvbhAQGwAAABABASBOdW1iZXIgb2YgZXJhcyB0aGF0IHNsYXNoZXMgYXJlIGRlZmVycmVkIGJ5LCBhZnRlciBjb21wdXRhdGlvbi4ADQEgVGhpcyBzaG91bGQgYmUgbGVzcyB0aGFuIHRoZSBib25kaW5nIGR1cmF0aW9uLiBTZXQgdG8gMCBpZiBzbGFzaGVzFQEgc2hvdWxkIGJlIGFwcGxpZWQgaW1tZWRpYXRlbHksIHdpdGhvdXQgb3Bwb3J0dW5pdHkgZm9yIGludGVydmVudGlvbi5MTWF4RXhwb3N1cmVQYWdlU2l6ZRAQAAIAACywIFRoZSBtYXhpbXVtIHNpemUgb2YgZWFjaCBgVDo6RXhwb3N1cmVQYWdlYC4AKQEgQW4gYEV4cG9zdXJlUGFnZWAgaXMgd2Vha2x5IGJvdW5kZWQgdG8gYSBtYXhpbXVtIG9mIGBNYXhFeHBvc3VyZVBhZ2VTaXplYDAgbm9taW5hdG9ycy4AIQEgRm9yIG9sZGVyIG5vbi1wYWdlZCBleHBvc3VyZSwgYSByZXdhcmQgcGF5b3V0IHdhcyByZXN0cmljdGVkIHRvIHRoZSB0b3AhASBgTWF4RXhwb3N1cmVQYWdlU2l6ZWAgbm9taW5hdG9ycy4gVGhpcyBpcyB0byBsaW1pdCB0aGUgaS9vIGNvc3QgZm9yIHRoZUggbm9taW5hdG9yIHBheW91dC4AWQEgTm90ZTogYE1heEV4cG9zdXJlUGFnZVNpemVgIGlzIHVzZWQgdG8gYm91bmQgYENsYWltZWRSZXdhcmRzYCBhbmQgaXMgdW5zYWZlIHRvIHJlZHVjZZAgd2l0aG91dCBoYW5kbGluZyBpdCBpbiBhIG1pZ3JhdGlvbi5ITWF4VW5sb2NraW5nQ2h1bmtzEBAgAAAAKAUBIFRoZSBtYXhpbXVtIG51bWJlciBvZiBgdW5sb2NraW5nYCBjaHVua3MgYSBbYFN0YWtpbmdMZWRnZXJgXSBjYW4JASBoYXZlLiBFZmZlY3RpdmVseSBkZXRlcm1pbmVzIGhvdyBtYW55IHVuaXF1ZSBlcmFzIGEgc3Rha2VyIG1heSBiZTggdW5ib25kaW5nIGluLgD4IE5vdGU6IGBNYXhVbmxvY2tpbmdDaHVua3NgIGlzIHVzZWQgYXMgdGhlIHVwcGVyIGJvdW5kIGZvciB0aGUBASBgQm91bmRlZFZlY2AgaXRlbSBgU3Rha2luZ0xlZGdlci51bmxvY2tpbmdgLiBTZXR0aW5nIHRoaXMgdmFsdWUFASBsb3dlciB0aGFuIHRoZSBleGlzdGluZyB2YWx1ZSBjYW4gbGVhZCB0byBpbmNvbnNpc3RlbmNpZXMgaW4gdGhlCQEgYFN0YWtpbmdMZWRnZXJgIGFuZCB3aWxsIG5lZWQgdG8gYmUgaGFuZGxlZCBwcm9wZXJseSBpbiBhIHJ1bnRpbWUFASBtaWdyYXRpb24uIFRoZSB0ZXN0IGByZWR1Y2luZ19tYXhfdW5sb2NraW5nX2NodW5rc19hYnJ1cHRgIHNob3dzNCB0aGlzIGVmZmVjdC4B/QgHACBPZmZlbmNlcwEgT2ZmZW5jZXMIHFJlcG9ydHMAAQQFNAEJBAAESQEgVGhlIHByaW1hcnkgc3RydWN0dXJlIHRoYXQgaG9sZHMgYWxsIG9mZmVuY2UgcmVjb3JkcyBrZXllZCBieSByZXBvcnQgaWRlbnRpZmllcnMuWENvbmN1cnJlbnRSZXBvcnRzSW5kZXgBAQgFBQkJlQEEAAQpASBBIHZlY3RvciBvZiByZXBvcnRzIG9mIHRoZSBzYW1lIGtpbmQgdGhhdCBoYXBwZW5lZCBhdCB0aGUgc2FtZSB0aW1lIHNsb3QuAAG8AAAIAChIaXN0b3JpY2FsAShIaXN0b3JpY2FsCEhIaXN0b3JpY2FsU2Vzc2lvbnMAAQQFEAEIBAAEXQEgTWFwcGluZyBmcm9tIGhpc3RvcmljYWwgc2Vzc2lvbiBpbmRpY2VzIHRvIHNlc3Npb24tZGF0YSByb290IGhhc2ggYW5kIHZhbGlkYXRvciBjb3VudC4sU3RvcmVkUmFuZ2UAAIAEAATkIFRoZSByYW5nZSBvZiBoaXN0b3JpY2FsIHNlc3Npb25zIHdlIHN0b3JlLiBbZmlyc3QsIGxhc3QpAAAAACEAHFNlc3Npb24BHFNlc3Npb24cKFZhbGlkYXRvcnMBANEBBAAEfCBUaGUgY3VycmVudCBzZXQgb2YgdmFsaWRhdG9ycy4wQ3VycmVudEluZGV4AQAQEAAAAAAEeCBDdXJyZW50IGluZGV4IG9mIHRoZSBzZXNzaW9uLjRRdWV1ZWRDaGFuZ2VkAQAgBAAIOQEgVHJ1ZSBpZiB0aGUgdW5kZXJseWluZyBlY29ub21pYyBpZGVudGl0aWVzIG9yIHdlaWdodGluZyBiZWhpbmQgdGhlIHZhbGlkYXRvcnOkIGhhcyBjaGFuZ2VkIGluIHRoZSBxdWV1ZWQgdmFsaWRhdG9yIHNldC4oUXVldWVkS2V5cwEADQkEAAg9ASBUaGUgcXVldWVkIGtleXMgZm9yIHRoZSBuZXh0IHNlc3Npb24uIFdoZW4gdGhlIG5leHQgc2Vzc2lvbiBiZWdpbnMsIHRoZXNlIGtleXPgIHdpbGwgYmUgdXNlZCB0byBkZXRlcm1pbmUgdGhlIHZhbGlkYXRvcidzIHNlc3Npb24ga2V5cy5IRGlzYWJsZWRWYWxpZGF0b3JzAQDlAQQAFIAgSW5kaWNlcyBvZiBkaXNhYmxlZCB2YWxpZGF0b3JzLgA9ASBUaGUgdmVjIGlzIGFsd2F5cyBrZXB0IHNvcnRlZCBzbyB0aGF0IHdlIGNhbiBmaW5kIHdoZXRoZXIgYSBnaXZlbiB2YWxpZGF0b3IgaXM9ASBkaXNhYmxlZCB1c2luZyBiaW5hcnkgc2VhcmNoLiBJdCBnZXRzIGNsZWFyZWQgd2hlbiBgb25fc2Vzc2lvbl9lbmRpbmdgIHJldHVybnNkIGEgbmV3IHNldCBvZiBpZGVudGl0aWVzLiBOZXh0S2V5cwABBAUAGQIEAAScIFRoZSBuZXh0IHNlc3Npb24ga2V5cyBmb3IgYSB2YWxpZGF0b3IuIEtleU93bmVyAAEEBRUJAAQABAkBIFRoZSBvd25lciBvZiBhIGtleS4gVGhlIGtleSBpcyB0aGUgYEtleVR5cGVJZGAgKyB0aGUgZW5jb2RlZCBrZXkuARUCAcQAAR0JCQAcR3JhbmRwYQEcR3JhbmRwYRwUU3RhdGUBACEJBAAEkCBTdGF0ZSBvZiB0aGUgY3VycmVudCBhdXRob3JpdHkgc2V0LjRQZW5kaW5nQ2hhbmdlAAAlCQQABMQgUGVuZGluZyBjaGFuZ2U6IChzaWduYWxlZCBhdCwgc2NoZWR1bGVkIGNoYW5nZSkuKE5leHRGb3JjZWQAABAEAAS8IG5leHQgYmxvY2sgbnVtYmVyIHdoZXJlIHdlIGNhbiBmb3JjZSBhIGNoYW5nZS4cU3RhbGxlZAAAgAQABJAgYHRydWVgIGlmIHdlIGFyZSBjdXJyZW50bHkgc3RhbGxlZC4wQ3VycmVudFNldElkAQAwIAAAAAAAAAAACF0BIFRoZSBudW1iZXIgb2YgY2hhbmdlcyAoYm90aCBpbiB0ZXJtcyBvZiBrZXlzIGFuZCB1bmRlcmx5aW5nIGVjb25vbWljIHJlc3BvbnNpYmlsaXRpZXMpxCBpbiB0aGUgInNldCIgb2YgR3JhbmRwYSB2YWxpZGF0b3JzIGZyb20gZ2VuZXNpcy4wU2V0SWRTZXNzaW9uAAEEBTAQBAAoWQEgQSBtYXBwaW5nIGZyb20gZ3JhbmRwYSBzZXQgSUQgdG8gdGhlIGluZGV4IG9mIHRoZSAqbW9zdCByZWNlbnQqIHNlc3Npb24gZm9yIHdoaWNoIGl0c2ggbWVtYmVycyB3ZXJlIHJlc3BvbnNpYmxlLgBFASBUaGlzIGlzIG9ubHkgdXNlZCBmb3IgdmFsaWRhdGluZyBlcXVpdm9jYXRpb24gcHJvb2ZzLiBBbiBlcXVpdm9jYXRpb24gcHJvb2YgbXVzdE0BIGNvbnRhaW5zIGEga2V5LW93bmVyc2hpcCBwcm9vZiBmb3IgYSBnaXZlbiBzZXNzaW9uLCB0aGVyZWZvcmUgd2UgbmVlZCBhIHdheSB0byB0aWVFASB0b2dldGhlciBzZXNzaW9ucyBhbmQgR1JBTkRQQSBzZXQgaWRzLCBpLmUuIHdlIG5lZWQgdG8gdmFsaWRhdGUgdGhhdCBhIHZhbGlkYXRvckEBIHdhcyB0aGUgb3duZXIgb2YgYSBnaXZlbiBrZXkgb24gYSBnaXZlbiBzZXNzaW9uLCBhbmQgd2hhdCB0aGUgYWN0aXZlIHNldCBJRCB3YXNUIGR1cmluZyB0aGF0IHNlc3Npb24uALggVFdPWC1OT1RFOiBgU2V0SWRgIGlzIG5vdCB1bmRlciB1c2VyIGNvbnRyb2wuLEF1dGhvcml0aWVzAQApCQQABIQgVGhlIGN1cnJlbnQgbGlzdCBvZiBhdXRob3JpdGllcy4BMQIByAw4TWF4QXV0aG9yaXRpZXMQEKCGAQAEXCBNYXggQXV0aG9yaXRpZXMgaW4gdXNlNE1heE5vbWluYXRvcnMQEAACAAAE1CBUaGUgbWF4aW11bSBudW1iZXIgb2Ygbm9taW5hdG9ycyBmb3IgZWFjaCB2YWxpZGF0b3IuWE1heFNldElkU2Vzc2lvbkVudHJpZXMwIKgAAAAAAAAAGDkBIFRoZSBtYXhpbXVtIG51bWJlciBvZiBlbnRyaWVzIHRvIGtlZXAgaW4gdGhlIHNldCBpZCB0byBzZXNzaW9uIGluZGV4IG1hcHBpbmcuADEBIFNpbmNlIHRoZSBgU2V0SWRTZXNzaW9uYCBtYXAgaXMgb25seSB1c2VkIGZvciB2YWxpZGF0aW5nIGVxdWl2b2NhdGlvbnMgdGhpcykBIHZhbHVlIHNob3VsZCByZWxhdGUgdG8gdGhlIGJvbmRpbmcgZHVyYXRpb24gb2Ygd2hhdGV2ZXIgc3Rha2luZyBzeXN0ZW0gaXM1ASBiZWluZyB1c2VkIChpZiBhbnkpLiBJZiBlcXVpdm9jYXRpb24gaGFuZGxpbmcgaXMgbm90IGVuYWJsZWQgdGhlbiB0aGlzIHZhbHVlNCBjYW4gYmUgemVyby4BLQkLAEhBdXRob3JpdHlEaXNjb3ZlcnkBSEF1dGhvcml0eURpc2NvdmVyeQgQS2V5cwEAMQkEAASMIEtleXMgb2YgdGhlIGN1cnJlbnQgYXV0aG9yaXR5IHNldC4gTmV4dEtleXMBADEJBAAEgCBLZXlzIG9mIHRoZSBuZXh0IGF1dGhvcml0eSBzZXQuAAAAAA0AIFRyZWFzdXJ5ASBUcmVhc3VyeRg0UHJvcG9zYWxDb3VudAEAEBAAAAAABKQgTnVtYmVyIG9mIHByb3Bvc2FscyB0aGF0IGhhdmUgYmVlbiBtYWRlLiRQcm9wb3NhbHMAAQQFEDkJBAAEfCBQcm9wb3NhbHMgdGhhdCBoYXZlIGJlZW4gbWFkZS4sRGVhY3RpdmF0ZWQBABhAAAAAAAAAAAAAAAAAAAAAAATwIFRoZSBhbW91bnQgd2hpY2ggaGFzIGJlZW4gcmVwb3J0ZWQgYXMgaW5hY3RpdmUgdG8gQ3VycmVuY3kuJEFwcHJvdmFscwEAPQkEAAT4IFByb3Bvc2FsIGluZGljZXMgdGhhdCBoYXZlIGJlZW4gYXBwcm92ZWQgYnV0IG5vdCB5ZXQgYXdhcmRlZC4oU3BlbmRDb3VudAEAEBAAAAAABKQgVGhlIGNvdW50IG9mIHNwZW5kcyB0aGF0IGhhdmUgYmVlbiBtYWRlLhhTcGVuZHMAAQQFEEEJBAAE0CBTcGVuZHMgdGhhdCBoYXZlIGJlZW4gYXBwcm92ZWQgYW5kIGJlaW5nIHByb2Nlc3NlZC4BXQIB2BQsU3BlbmRQZXJpb2QQEABGBQAEiCBQZXJpb2QgYmV0d2VlbiBzdWNjZXNzaXZlIHNwZW5kcy4QQnVybkkJEBAnAAAEEQEgUGVyY2VudGFnZSBvZiBzcGFyZSBmdW5kcyAoaWYgYW55KSB0aGF0IGFyZSBidXJudCBwZXIgc3BlbmQgcGVyaW9kLiBQYWxsZXRJZE0JIHB5L3Ryc3J5BBkBIFRoZSB0cmVhc3VyeSdzIHBhbGxldCBpZCwgdXNlZCBmb3IgZGVyaXZpbmcgaXRzIHNvdmVyZWlnbiBhY2NvdW50IElELjBNYXhBcHByb3ZhbHMQEGQAAAAMFQEgVGhlIG1heGltdW0gbnVtYmVyIG9mIGFwcHJvdmFscyB0aGF0IGNhbiB3YWl0IGluIHRoZSBzcGVuZGluZyBxdWV1ZS4ATQEgTk9URTogVGhpcyBwYXJhbWV0ZXIgaXMgYWxzbyB1c2VkIHdpdGhpbiB0aGUgQm91bnRpZXMgUGFsbGV0IGV4dGVuc2lvbiBpZiBlbmFibGVkLjBQYXlvdXRQZXJpb2QQEICXBgAEGQEgVGhlIHBlcmlvZCBkdXJpbmcgd2hpY2ggYW4gYXBwcm92ZWQgdHJlYXN1cnkgc3BlbmQgaGFzIHRvIGJlIGNsYWltZWQuAVEJEwBAQ29udmljdGlvblZvdGluZwFAQ29udmljdGlvblZvdGluZwgkVm90aW5nRm9yAQEIBQVVCVkJ2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAh1ASBBbGwgdm90aW5nIGZvciBhIHBhcnRpY3VsYXIgdm90ZXIgaW4gYSBwYXJ0aWN1bGFyIHZvdGluZyBjbGFzcy4gV2Ugc3RvcmUgdGhlIGJhbGFuY2UgZm9yIHRoZZwgbnVtYmVyIG9mIHZvdGVzIHRoYXQgd2UgaGF2ZSByZWNvcmRlZC40Q2xhc3NMb2Nrc0ZvcgEBBAUAeQkEAAxpASBUaGUgdm90aW5nIGNsYXNzZXMgd2hpY2ggaGF2ZSBhIG5vbi16ZXJvIGxvY2sgcmVxdWlyZW1lbnQgYW5kIHRoZSBsb2NrIGFtb3VudHMgd2hpY2ggdGhleW0BIHJlcXVpcmUuIFRoZSBhY3R1YWwgYW1vdW50IGxvY2tlZCBvbiBiZWhhbGYgb2YgdGhpcyBwYWxsZXQgc2hvdWxkIGFsd2F5cyBiZSB0aGUgbWF4aW11bSBvZiwgdGhpcyBsaXN0LgFlAgFlAQggTWF4Vm90ZXMQEAACAAAQ8CBUaGUgbWF4aW11bSBudW1iZXIgb2YgY29uY3VycmVudCB2b3RlcyBhbiBhY2NvdW50IG1heSBoYXZlLgBVASBBbHNvIHVzZWQgdG8gY29tcHV0ZSB3ZWlnaHQsIGFuIG92ZXJseSBsYXJnZSB2YWx1ZSBjYW4gbGVhZCB0byBleHRyaW5zaWNzIHdpdGggbGFyZ2XAIHdlaWdodCBlc3RpbWF0aW9uOiBzZWUgYGRlbGVnYXRlYCBmb3IgaW5zdGFuY2UuRFZvdGVMb2NraW5nUGVyaW9kEBDAiQEAEJAgVGhlIG1pbmltdW0gcGVyaW9kIG9mIHZvdGUgbG9ja2luZy4AZQEgSXQgc2hvdWxkIGJlIG5vIHNob3J0ZXIgdGhhbiBlbmFjdG1lbnQgcGVyaW9kIHRvIGVuc3VyZSB0aGF0IGluIHRoZSBjYXNlIG9mIGFuIGFwcHJvdmFsLEkBIHRob3NlIHN1Y2Nlc3NmdWwgdm90ZXJzIGFyZSBsb2NrZWQgaW50byB0aGUgY29uc2VxdWVuY2VzIHRoYXQgdGhlaXIgdm90ZXMgZW50YWlsLgGFCRQAJFJlZmVyZW5kYQEkUmVmZXJlbmRhFDxSZWZlcmVuZHVtQ291bnQBABAQAAAAAAQxASBUaGUgbmV4dCBmcmVlIHJlZmVyZW5kdW0gaW5kZXgsIGFrYSB0aGUgbnVtYmVyIG9mIHJlZmVyZW5kYSBzdGFydGVkIHNvIGZhci5EUmVmZXJlbmR1bUluZm9Gb3IAAQQCEIkJBAAEtCBJbmZvcm1hdGlvbiBjb25jZXJuaW5nIGFueSBnaXZlbiByZWZlcmVuZHVtLihUcmFja1F1ZXVlAQEEBW0BqQkEABBdASBUaGUgc29ydGVkIGxpc3Qgb2YgcmVmZXJlbmRhIHJlYWR5IHRvIGJlIGRlY2lkZWQgYnV0IG5vdCB5ZXQgYmVpbmcgZGVjaWRlZCwgb3JkZXJlZCBieXwgY29udmljdGlvbi13ZWlnaHRlZCBhcHByb3ZhbHMuAEEBIFRoaXMgc2hvdWxkIGJlIGVtcHR5IGlmIGBEZWNpZGluZ0NvdW50YCBpcyBsZXNzIHRoYW4gYFRyYWNrSW5mbzo6bWF4X2RlY2lkaW5nYC40RGVjaWRpbmdDb3VudAEBBAVtARAQAAAAAATEIFRoZSBudW1iZXIgb2YgcmVmZXJlbmRhIGJlaW5nIGRlY2lkZWQgY3VycmVudGx5LihNZXRhZGF0YU9mAAEEAhA0BAAYBQEgVGhlIG1ldGFkYXRhIGlzIGEgZ2VuZXJhbCBpbmZvcm1hdGlvbiBjb25jZXJuaW5nIHRoZSByZWZlcmVuZHVtLkkBIFRoZSBgSGFzaGAgcmVmZXJzIHRvIHRoZSBwcmVpbWFnZSBvZiB0aGUgYFByZWltYWdlc2AgcHJvdmlkZXIgd2hpY2ggY2FuIGJlIGEgSlNPToggZHVtcCBvciBJUEZTIGhhc2ggb2YgYSBKU09OIGZpbGUuAHUBIENvbnNpZGVyIGEgZ2FyYmFnZSBjb2xsZWN0aW9uIGZvciBhIG1ldGFkYXRhIG9mIGZpbmlzaGVkIHJlZmVyZW5kdW1zIHRvIGB1bnJlcXVlc3RgIChyZW1vdmUpRCBsYXJnZSBwcmVpbWFnZXMuAXkCAWkBFERTdWJtaXNzaW9uRGVwb3NpdBhAAOQLVAIAAAAAAAAAAAAAAAQ1ASBUaGUgbWluaW11bSBhbW91bnQgdG8gYmUgdXNlZCBhcyBhIGRlcG9zaXQgZm9yIGEgcHVibGljIHJlZmVyZW5kdW0gcHJvcG9zYWwuJE1heFF1ZXVlZBAQZAAAAATkIE1heGltdW0gc2l6ZSBvZiB0aGUgcmVmZXJlbmR1bSBxdWV1ZSBmb3IgYSBzaW5nbGUgdHJhY2suRFVuZGVjaWRpbmdUaW1lb3V0EBCAEwMACFUBIFRoZSBudW1iZXIgb2YgYmxvY2tzIGFmdGVyIHN1Ym1pc3Npb24gdGhhdCBhIHJlZmVyZW5kdW0gbXVzdCBiZWdpbiBiZWluZyBkZWNpZGVkIGJ5LuQgT25jZSB0aGlzIHBhc3NlcywgdGhlbiBhbnlvbmUgbWF5IGNhbmNlbCB0aGUgcmVmZXJlbmR1bS40QWxhcm1JbnRlcnZhbBAQAQAAAAxdASBRdWFudGl6YXRpb24gbGV2ZWwgZm9yIHRoZSByZWZlcmVuZHVtIHdha2V1cCBzY2hlZHVsZXIuIEEgaGlnaGVyIG51bWJlciB3aWxsIHJlc3VsdCBpbl0BIGZld2VyIHN0b3JhZ2UgcmVhZHMvd3JpdGVzIG5lZWRlZCBmb3Igc21hbGxlciB2b3RlcnMsIGJ1dCBhbHNvIHJlc3VsdCBpbiBkZWxheXMgdG8gdGhlVQEgYXV0b21hdGljIHJlZmVyZW5kdW0gc3RhdHVzIGNoYW5nZXMuIEV4cGxpY2l0IHNlcnZpY2luZyBpbnN0cnVjdGlvbnMgYXJlIHVuYWZmZWN0ZWQuGFRyYWNrc7UJGRdAAAAQcm9vdAEAAAAAgMakfo0DAAAAAAAAAAAAsAQAAAAnBgBAOAAAQDgAAAKQ1z4NAAAAAFdD3hMAAAAAVEPeEwAAAAAAAMqaOwAAAAAAZc0dAQBId2hpdGVsaXN0ZWRfY2FsbGVyZAAAAABAehDzWgAAAAAAAAAAAAAsAQAAACcGAGQAAABkAAAAAuyXJRAAAAAAe1c8FwAAAABCOS8SAAAAAAIOAIQAAAAAANbmHwEAAAAAOWJ5AgAAAAACADx3aXNoX2Zvcl9jaGFuZ2UKAAAAAID0IOa1AAAAAAAAAAAAALAEAAAAJwYAQDgAAGQAAAACkNc+DQAAAABXQ94TAAAAAFRD3hMAAAAAAADKmjsAAAAAAGXNHQoANHN0YWtpbmdfYWRtaW4KAAAAACA9iHktAAAAAAAAAAAAALAEAAAAJwYACAcAAGQAAAAAyUMwJABlzR0Aypo7Al1veAAAAAAA6C7tAAAAAACMaIn//////wsAJHRyZWFzdXJlcgoAAAAAoHJOGAkAAAAAAAAAAAAAsAQAAAAnBgDAiQEAQDgAAAKQ1z4NAAAAAFdD3hMAAAAAVEPeEwAAAAAAAMqaOwAAAAAAZc0dDAAsbGVhc2VfYWRtaW4KAAAAACA9iHktAAAAAAAAAAAAALAEAAAAJwYACAcAAGQAAAAAyUMwJABlzR0Aypo7Al1veAAAAAAA6C7tAAAAAACMaIn//////w0AQGZlbGxvd3NoaXBfYWRtaW4KAAAAACA9iHktAAAAAAAAAAAAALAEAAAAJwYACAcAAGQAAAAAyUMwJABlzR0Aypo7Al1veAAAAAAA6C7tAAAAAACMaIn//////w4ANGdlbmVyYWxfYWRtaW4KAAAAACA9iHktAAAAAAAAAAAAALAEAAAAJwYACAcAAGQAAAACkNc+DQAAAABXQ94TAAAAAFRD3hMAAAAAAlmi9AIAAAAAoylrBQAAAAAua0r9/////w8ANGF1Y3Rpb25fYWRtaW4KAAAAACA9iHktAAAAAAAAAAAAALAEAAAAJwYACAcAAGQAAAACkNc+DQAAAABXQ94TAAAAAFRD3hMAAAAAAlmi9AIAAAAAoylrBQAAAAAua0r9/////xQAUHJlZmVyZW5kdW1fY2FuY2VsbGVy6AMAAABAehDzWgAAAAAAAAAAAACwBAAAwIkBAAgHAABkAAAAAMlDMCQAZc0dAMqaOwJdb3gAAAAAAOgu7QAAAAAAjGiJ//////8VAERyZWZlcmVuZHVtX2tpbGxlcugDAAAAQGNSv8YBAAAAAAAAAAAAsAQAAAAnBgAIBwAAZAAAAADJQzAkAGXNHQDKmjsCXW94AAAAAADoLu0AAAAAAIxoif//////HgAwc21hbGxfdGlwcGVyyAAAAADkC1QCAAAAAAAAAAAAAAAKAAAAwIkBAGQAAAAKAAAAAEmRSRUAZc0dAMqaOwL5uhgAAAAAACpNMQAAAAAAa1nn//////8fAChiaWdfdGlwcGVyZAAAAADodkgXAAAAAAAAAAAAAABkAAAAwIkBAFgCAABkAAAAAEmRSRUAZc0dAMqaOwJpTz8AAAAAADWWfQAAAAAA5TTB//////8gADRzbWFsbF9zcGVuZGVyMgAAAAAQpdToAAAAAAAAAAAAAABgCQAAACcGAIBwAABAOAAAAMlDMCQAZc0dAMqaOwJdb3gAAAAAAOgu7QAAAAAAjGiJ//////8hADhtZWRpdW1fc3BlbmRlcjIAAAAAIEqp0QEAAAAAAAAAAAAAYAkAAAAnBgAA4QAAQDgAAABbAfYwAGXNHQDKmjsCEWHbAAAAAAC/0aoBAAAAACCXKv//////IgAsYmlnX3NwZW5kZXIyAAAAAECUUqMDAAAAAAAAAAAAAGAJAAAAJwYAwIkBAEA4AAAAAMqaOwBlzR0Aypo7AkE8sAEAAAAAdV00AwAAAABF0WX+/////wTgIEluZm9ybWF0aW9uIGNvbmNlcm5pbmcgdGhlIGRpZmZlcmVudCByZWZlcmVuZHVtIHRyYWNrcy4BzQkVABxPcmlnaW5zAAAAAAAWACRXaGl0ZWxpc3QBJFdoaXRlbGlzdAQ8V2hpdGVsaXN0ZWRDYWxsAAEEBTSMBAAAAaECAeUGAAHRCRcAGENsYWltcwEYQ2xhaW1zFBhDbGFpbXMAAQQGsQIYBAAAFFRvdGFsAQAYQAAAAAAAAAAAAAAAAAAAAAAAHFZlc3RpbmcAAQQGsQK5AgQAEHggVmVzdGluZyBzY2hlZHVsZSBmb3IgYSBjbGFpbS4NASBGaXJzdCBiYWxhbmNlIGlzIHRoZSB0b3RhbCBhbW91bnQgdGhhdCBzaG91bGQgYmUgaGVsZCBmb3IgdmVzdGluZy7kIFNlY29uZCBiYWxhbmNlIGlzIGhvdyBtdWNoIHNob3VsZCBiZSB1bmxvY2tlZCBwZXIgYmxvY2suzCBUaGUgYmxvY2sgbnVtYmVyIGlzIHdoZW4gdGhlIHZlc3Rpbmcgc2hvdWxkIHN0YXJ0LhxTaWduaW5nAAEEBrECwQIEAATAIFRoZSBzdGF0ZW1lbnQga2luZCB0aGF0IG11c3QgYmUgc2lnbmVkLCBpZiBhbnkuJFByZWNsYWltcwABBAYAsQIEAAQtASBQcmUtY2xhaW1lZCBFdGhlcmV1bSBhY2NvdW50cywgYnkgdGhlIEFjY291bnQgSUQgdGhhdCB0aGV5IGFyZSBjbGFpbWVkIHRvLgGlAgH5BgQYUHJlZml4OHx4UGF5IFBBU3MgdG8gdGhlIFBhc2VvIGFjY291bnQ6AAHVCRgAHFZlc3RpbmcBHFZlc3RpbmcIHFZlc3RpbmcAAQQCANkJBAAE2CBJbmZvcm1hdGlvbiByZWdhcmRpbmcgdGhlIHZlc3Rpbmcgb2YgYSBnaXZlbiBhY2NvdW50LjhTdG9yYWdlVmVyc2lvbgEA4QkEAAx8IFN0b3JhZ2UgdmVyc2lvbiBvZiB0aGUgcGFsbGV0LgAxASBOZXcgbmV0d29ya3Mgc3RhcnQgd2l0aCBsYXRlc3QgdmVyc2lvbiwgYXMgZGV0ZXJtaW5lZCBieSB0aGUgZ2VuZXNpcyBidWlsZC4BxQIB/QYIRE1pblZlc3RlZFRyYW5zZmVyGEAA5AtUAgAAAAAAAAAAAAAABOggVGhlIG1pbmltdW0gYW1vdW50IHRyYW5zZmVycmVkIHRvIGNhbGwgYHZlc3RlZF90cmFuc2ZlcmAuTE1heFZlc3RpbmdTY2hlZHVsZXMQEBwAAAAAAeUJGQAcVXRpbGl0eQABzQIBAQcETGJhdGNoZWRfY2FsbHNfbGltaXQQEKoqAAAEqCBUaGUgbGltaXQgb24gdGhlIG51bWJlciBvZiBiYXRjaGVkIGNhbGxzLgHpCRoAFFByb3h5ARRQcm94eQgcUHJveGllcwEBBAUA7QlEAAAAAAAAAAAAAAAAAAAAAAAIRQEgVGhlIHNldCBvZiBhY2NvdW50IHByb3hpZXMuIE1hcHMgdGhlIGFjY291bnQgd2hpY2ggaGFzIGRlbGVnYXRlZCB0byB0aGUgYWNjb3VudHMhASB3aGljaCBhcmUgYmVpbmcgZGVsZWdhdGVkIHRvLCB0b2dldGhlciB3aXRoIHRoZSBhbW91bnQgaGVsZCBvbiBkZXBvc2l0LjRBbm5vdW5jZW1lbnRzAQEEBQD9CUQAAAAAAAAAAAAAAAAAAAAAAASsIFRoZSBhbm5vdW5jZW1lbnRzIG1hZGUgYnkgdGhlIHByb3h5IChrZXkpLgHVAgEFBxhAUHJveHlEZXBvc2l0QmFzZRhAAISylS4AAAAAAAAAAAAAABARASBUaGUgYmFzZSBhbW91bnQgb2YgY3VycmVuY3kgbmVlZGVkIHRvIHJlc2VydmUgZm9yIGNyZWF0aW5nIGEgcHJveHkuAAEBIFRoaXMgaXMgaGVsZCBmb3IgYW4gYWRkaXRpb25hbCBzdG9yYWdlIGl0ZW0gd2hvc2UgdmFsdWUgc2l6ZSBpcyUBIGBzaXplb2YoQmFsYW5jZSlgIGJ5dGVzIGFuZCB3aG9zZSBrZXkgc2l6ZSBpcyBgc2l6ZW9mKEFjY291bnRJZClgIGJ5dGVzLkhQcm94eURlcG9zaXRGYWN0b3IYQIBmqxMAAAAAAAAAAAAAAAAUvCBUaGUgYW1vdW50IG9mIGN1cnJlbmN5IG5lZWRlZCBwZXIgcHJveHkgYWRkZWQuADUBIFRoaXMgaXMgaGVsZCBmb3IgYWRkaW5nIDMyIGJ5dGVzIHBsdXMgYW4gaW5zdGFuY2Ugb2YgYFByb3h5VHlwZWAgbW9yZSBpbnRvIGFhASBwcmUtZXhpc3Rpbmcgc3RvcmFnZSB2YWx1ZS4gVGh1cywgd2hlbiBjb25maWd1cmluZyBgUHJveHlEZXBvc2l0RmFjdG9yYCBvbmUgc2hvdWxkIHRha2X0IGludG8gYWNjb3VudCBgMzIgKyBwcm94eV90eXBlLmVuY29kZSgpLmxlbigpYCBieXRlcyBvZiBkYXRhLihNYXhQcm94aWVzEBAgAAAABPAgVGhlIG1heGltdW0gYW1vdW50IG9mIHByb3hpZXMgYWxsb3dlZCBmb3IgYSBzaW5nbGUgYWNjb3VudC4oTWF4UGVuZGluZxAQIAAAAARFASBUaGUgbWF4aW11bSBhbW91bnQgb2YgdGltZS1kZWxheWVkIGFubm91bmNlbWVudHMgdGhhdCBhcmUgYWxsb3dlZCB0byBiZSBwZW5kaW5nLlxBbm5vdW5jZW1lbnREZXBvc2l0QmFzZRhAAISylS4AAAAAAAAAAAAAABAxASBUaGUgYmFzZSBhbW91bnQgb2YgY3VycmVuY3kgbmVlZGVkIHRvIHJlc2VydmUgZm9yIGNyZWF0aW5nIGFuIGFubm91bmNlbWVudC4ASQEgVGhpcyBpcyBoZWxkIHdoZW4gYSBuZXcgc3RvcmFnZSBpdGVtIGhvbGRpbmcgYSBgQmFsYW5jZWAgaXMgY3JlYXRlZCAodHlwaWNhbGx5IDE2ICBieXRlcykuZEFubm91bmNlbWVudERlcG9zaXRGYWN0b3IYQADNVicAAAAAAAAAAAAAAAAQ1CBUaGUgYW1vdW50IG9mIGN1cnJlbmN5IG5lZWRlZCBwZXIgYW5ub3VuY2VtZW50IG1hZGUuAFkBIFRoaXMgaXMgaGVsZCBmb3IgYWRkaW5nIGFuIGBBY2NvdW50SWRgLCBgSGFzaGAgYW5kIGBCbG9ja051bWJlcmAgKHR5cGljYWxseSA2OCBieXRlcymMIGludG8gYSBwcmUtZXhpc3Rpbmcgc3RvcmFnZSB2YWx1ZS4BDQodACBNdWx0aXNpZwEgTXVsdGlzaWcEJE11bHRpc2lncwABCAUCEQoVCgQABJQgVGhlIHNldCBvZiBvcGVuIG11bHRpc2lnIG9wZXJhdGlvbnMuAeECAQkHDCxEZXBvc2l0QmFzZRhAAIxhxS4AAAAAAAAAAAAAABhZASBUaGUgYmFzZSBhbW91bnQgb2YgY3VycmVuY3kgbmVlZGVkIHRvIHJlc2VydmUgZm9yIGNyZWF0aW5nIGEgbXVsdGlzaWcgZXhlY3V0aW9uIG9yIHRvhCBzdG9yZSBhIGRpc3BhdGNoIGNhbGwgZm9yIGxhdGVyLgABASBUaGlzIGlzIGhlbGQgZm9yIGFuIGFkZGl0aW9uYWwgc3RvcmFnZSBpdGVtIHdob3NlIHZhbHVlIHNpemUgaXMxASBgNCArIHNpemVvZigoQmxvY2tOdW1iZXIsIEJhbGFuY2UsIEFjY291bnRJZCkpYCBieXRlcyBhbmQgd2hvc2Uga2V5IHNpemUgaXOAIGAzMiArIHNpemVvZihBY2NvdW50SWQpYCBieXRlcy40RGVwb3NpdEZhY3RvchhAANASEwAAAAAAAAAAAAAAAAxVASBUaGUgYW1vdW50IG9mIGN1cnJlbmN5IG5lZWRlZCBwZXIgdW5pdCB0aHJlc2hvbGQgd2hlbiBjcmVhdGluZyBhIG11bHRpc2lnIGV4ZWN1dGlvbi4AJQEgVGhpcyBpcyBoZWxkIGZvciBhZGRpbmcgMzIgYnl0ZXMgbW9yZSBpbnRvIGEgcHJlLWV4aXN0aW5nIHN0b3JhZ2UgdmFsdWUuOE1heFNpZ25hdG9yaWVzEBBkAAAABOwgVGhlIG1heGltdW0gYW1vdW50IG9mIHNpZ25hdG9yaWVzIGFsbG93ZWQgaW4gdGhlIG11bHRpc2lnLgEdCh4AIEJvdW50aWVzASBCb3VudGllcxAsQm91bnR5Q291bnQBABAQAAAAAATAIE51bWJlciBvZiBib3VudHkgcHJvcG9zYWxzIHRoYXQgaGF2ZSBiZWVuIG1hZGUuIEJvdW50aWVzAAEEBRAhCgQABHggQm91bnRpZXMgdGhhdCBoYXZlIGJlZW4gbWFkZS5IQm91bnR5RGVzY3JpcHRpb25zAAEEBRApCgQABIAgVGhlIGRlc2NyaXB0aW9uIG9mIGVhY2ggYm91bnR5LjxCb3VudHlBcHByb3ZhbHMBAD0JBAAE7CBCb3VudHkgaW5kaWNlcyB0aGF0IGhhdmUgYmVlbiBhcHByb3ZlZCBidXQgbm90IHlldCBmdW5kZWQuAe0CAQ0HJERCb3VudHlEZXBvc2l0QmFzZRhAAOQLVAIAAAAAAAAAAAAAAAToIFRoZSBhbW91bnQgaGVsZCBvbiBkZXBvc2l0IGZvciBwbGFjaW5nIGEgYm91bnR5IHByb3Bvc2FsLmBCb3VudHlEZXBvc2l0UGF5b3V0RGVsYXkQEAAAAAAEWQEgVGhlIGRlbGF5IHBlcmlvZCBmb3Igd2hpY2ggYSBib3VudHkgYmVuZWZpY2lhcnkgbmVlZCB0byB3YWl0IGJlZm9yZSBjbGFpbSB0aGUgcGF5b3V0LkhCb3VudHlVcGRhdGVQZXJpb2QQEIDGEwAEbCBCb3VudHkgZHVyYXRpb24gaW4gYmxvY2tzLmBDdXJhdG9yRGVwb3NpdE11bHRpcGxpZXJJCRAgoQcAEBkBIFRoZSBjdXJhdG9yIGRlcG9zaXQgaXMgY2FsY3VsYXRlZCBhcyBhIHBlcmNlbnRhZ2Ugb2YgdGhlIGN1cmF0b3IgZmVlLgA5ASBUaGlzIGRlcG9zaXQgaGFzIG9wdGlvbmFsIHVwcGVyIGFuZCBsb3dlciBib3VuZHMgd2l0aCBgQ3VyYXRvckRlcG9zaXRNYXhgIGFuZFQgYEN1cmF0b3JEZXBvc2l0TWluYC5EQ3VyYXRvckRlcG9zaXRNYXgBAkQBACBKqdEBAAAAAAAAAAAAAARJASBNYXhpbXVtIGFtb3VudCBvZiBmdW5kcyB0aGF0IHNob3VsZCBiZSBwbGFjZWQgaW4gYSBkZXBvc2l0IGZvciBtYWtpbmcgYSBwcm9wb3NhbC5EQ3VyYXRvckRlcG9zaXRNaW4BAkQBAOh2SBcAAAAAAAAAAAAAAARJASBNaW5pbXVtIGFtb3VudCBvZiBmdW5kcyB0aGF0IHNob3VsZCBiZSBwbGFjZWQgaW4gYSBkZXBvc2l0IGZvciBtYWtpbmcgYSBwcm9wb3NhbC5IQm91bnR5VmFsdWVNaW5pbXVtGEAA6HZIFwAAAAAAAAAAAAAABHAgTWluaW11bSB2YWx1ZSBmb3IgYSBib3VudHkuSERhdGFEZXBvc2l0UGVyQnl0ZRhAAOH1BQAAAAAAAAAAAAAAAARhASBUaGUgYW1vdW50IGhlbGQgb24gZGVwb3NpdCBwZXIgYnl0ZSB3aXRoaW4gdGhlIHRpcCByZXBvcnQgcmVhc29uIG9yIGJvdW50eSBkZXNjcmlwdGlvbi5MTWF4aW11bVJlYXNvbkxlbmd0aBAQAEAAAAyIIE1heGltdW0gYWNjZXB0YWJsZSByZWFzb24gbGVuZ3RoLgBlASBCZW5jaG1hcmtzIGRlcGVuZCBvbiB0aGlzIHZhbHVlLCBiZSBzdXJlIHRvIHVwZGF0ZSB3ZWlnaHRzIGZpbGUgd2hlbiBjaGFuZ2luZyB0aGlzIHZhbHVlAS0KIgA0Q2hpbGRCb3VudGllcwE0Q2hpbGRCb3VudGllcxRAQ2hpbGRCb3VudHlDb3VudAEAEBAAAAAABIAgTnVtYmVyIG9mIHRvdGFsIGNoaWxkIGJvdW50aWVzLkxQYXJlbnRDaGlsZEJvdW50aWVzAQEEBRAQEAAAAAAIsCBOdW1iZXIgb2YgY2hpbGQgYm91bnRpZXMgcGVyIHBhcmVudCBib3VudHku4CBNYXAgb2YgcGFyZW50IGJvdW50eSBpbmRleCB0byBudW1iZXIgb2YgY2hpbGQgYm91bnRpZXMuNENoaWxkQm91bnRpZXMAAQgFBYAxCgQABJQgQ2hpbGQgYm91bnRpZXMgdGhhdCBoYXZlIGJlZW4gYWRkZWQuXENoaWxkQm91bnR5RGVzY3JpcHRpb25zAAEEBRApCgQABJggVGhlIGRlc2NyaXB0aW9uIG9mIGVhY2ggY2hpbGQtYm91bnR5LkxDaGlsZHJlbkN1cmF0b3JGZWVzAQEEBRAYQAAAAAAAAAAAAAAAAAAAAAAEAQEgVGhlIGN1bXVsYXRpdmUgY2hpbGQtYm91bnR5IGN1cmF0b3IgZmVlIGZvciBlYWNoIHBhcmVudCBib3VudHkuAfECAREHCGRNYXhBY3RpdmVDaGlsZEJvdW50eUNvdW50EBBkAAAABB0BIE1heGltdW0gbnVtYmVyIG9mIGNoaWxkIGJvdW50aWVzIHRoYXQgY2FuIGJlIGFkZGVkIHRvIGEgcGFyZW50IGJvdW50eS5cQ2hpbGRCb3VudHlWYWx1ZU1pbmltdW0YQADkC1QCAAAAAAAAAAAAAAAEiCBNaW5pbXVtIHZhbHVlIGZvciBhIGNoaWxkLWJvdW50eS4BOQomAGhFbGVjdGlvblByb3ZpZGVyTXVsdGlQaGFzZQFoRWxlY3Rpb25Qcm92aWRlck11bHRpUGhhc2UoFFJvdW5kAQAQEAEAAAAYrCBJbnRlcm5hbCBjb3VudGVyIGZvciB0aGUgbnVtYmVyIG9mIHJvdW5kcy4AVQEgVGhpcyBpcyB1c2VmdWwgZm9yIGRlLWR1cGxpY2F0aW9uIG9mIHRyYW5zYWN0aW9ucyBzdWJtaXR0ZWQgdG8gdGhlIHBvb2wsIGFuZCBnZW5lcmFsbCBkaWFnbm9zdGljcyBvZiB0aGUgcGFsbGV0LgBNASBUaGlzIGlzIG1lcmVseSBpbmNyZW1lbnRlZCBvbmNlIHBlciBldmVyeSB0aW1lIHRoYXQgYW4gdXBzdHJlYW0gYGVsZWN0YCBpcyBjYWxsZWQuMEN1cnJlbnRQaGFzZQEAHQcEAAQ8IEN1cnJlbnQgcGhhc2UuOFF1ZXVlZFNvbHV0aW9uAAA9CgQADD0BIEN1cnJlbnQgYmVzdCBzb2x1dGlvbiwgc2lnbmVkIG9yIHVuc2lnbmVkLCBxdWV1ZWQgdG8gYmUgcmV0dXJuZWQgdXBvbiBgZWxlY3RgLgBgIEFsd2F5cyBzb3J0ZWQgYnkgc2NvcmUuIFNuYXBzaG90AABFCgQAEHAgU25hcHNob3QgZGF0YSBvZiB0aGUgcm91bmQuAF0BIFRoaXMgaXMgY3JlYXRlZCBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBzaWduZWQgcGhhc2UgYW5kIGNsZWFyZWQgdXBvbiBjYWxsaW5nIGBlbGVjdGAuKQEgTm90ZTogVGhpcyBzdG9yYWdlIHR5cGUgbXVzdCBvbmx5IGJlIG11dGF0ZWQgdGhyb3VnaCBbYFNuYXBzaG90V3JhcHBlcmBdLjhEZXNpcmVkVGFyZ2V0cwAAEAQAEMwgRGVzaXJlZCBudW1iZXIgb2YgdGFyZ2V0cyB0byBlbGVjdCBmb3IgdGhpcyByb3VuZC4AqCBPbmx5IGV4aXN0cyB3aGVuIFtgU25hcHNob3RgXSBpcyBwcmVzZW50LikBIE5vdGU6IFRoaXMgc3RvcmFnZSB0eXBlIG11c3Qgb25seSBiZSBtdXRhdGVkIHRocm91Z2ggW2BTbmFwc2hvdFdyYXBwZXJgXS5AU25hcHNob3RNZXRhZGF0YQAAzQMEABCYIFRoZSBtZXRhZGF0YSBvZiB0aGUgW2BSb3VuZFNuYXBzaG90YF0AqCBPbmx5IGV4aXN0cyB3aGVuIFtgU25hcHNob3RgXSBpcyBwcmVzZW50LikBIE5vdGU6IFRoaXMgc3RvcmFnZSB0eXBlIG11c3Qgb25seSBiZSBtdXRhdGVkIHRocm91Z2ggW2BTbmFwc2hvdFdyYXBwZXJgXS5kU2lnbmVkU3VibWlzc2lvbk5leHRJbmRleAEAEBAAAAAAJAEBIFRoZSBuZXh0IGluZGV4IHRvIGJlIGFzc2lnbmVkIHRvIGFuIGluY29taW5nIHNpZ25lZCBzdWJtaXNzaW9uLgB1ASBFdmVyeSBhY2NlcHRlZCBzdWJtaXNzaW9uIGlzIGFzc2lnbmVkIGEgdW5pcXVlIGluZGV4OyB0aGF0IGluZGV4IGlzIGJvdW5kIHRvIHRoYXQgcGFydGljdWxhcmUBIHN1Ym1pc3Npb24gZm9yIHRoZSBkdXJhdGlvbiBvZiB0aGUgZWxlY3Rpb24uIE9uIGVsZWN0aW9uIGZpbmFsaXphdGlvbiwgdGhlIG5leHQgaW5kZXggaXMwIHJlc2V0IHRvIDAuAGkBIFdlIGNhbid0IGp1c3QgdXNlIGBTaWduZWRTdWJtaXNzaW9uSW5kaWNlcy5sZW4oKWAsIGJlY2F1c2UgdGhhdCdzIGEgYm91bmRlZCBzZXQ7IHBhc3QgaXRzWQEgY2FwYWNpdHksIGl0IHdpbGwgc2ltcGx5IHNhdHVyYXRlLiBXZSBjYW4ndCBqdXN0IGl0ZXJhdGUgb3ZlciBgU2lnbmVkU3VibWlzc2lvbnNNYXBgLPQgYmVjYXVzZSBpdGVyYXRpb24gaXMgc2xvdy4gSW5zdGVhZCwgd2Ugc3RvcmUgdGhlIHZhbHVlIGhlcmUuXFNpZ25lZFN1Ym1pc3Npb25JbmRpY2VzAQBRCgQAGG0BIEEgc29ydGVkLCBib3VuZGVkIHZlY3RvciBvZiBgKHNjb3JlLCBibG9ja19udW1iZXIsIGluZGV4KWAsIHdoZXJlIGVhY2ggYGluZGV4YCBwb2ludHMgdG8gYXggdmFsdWUgaW4gYFNpZ25lZFN1Ym1pc3Npb25zYC4AcQEgV2UgbmV2ZXIgbmVlZCB0byBwcm9jZXNzIG1vcmUgdGhhbiBhIHNpbmdsZSBzaWduZWQgc3VibWlzc2lvbiBhdCBhIHRpbWUuIFNpZ25lZCBzdWJtaXNzaW9uc3UBIGNhbiBiZSBxdWl0ZSBsYXJnZSwgc28gd2UncmUgd2lsbGluZyB0byBwYXkgdGhlIGNvc3Qgb2YgbXVsdGlwbGUgZGF0YWJhc2UgYWNjZXNzZXMgdG8gYWNjZXNzIQEgdGhlbSBvbmUgYXQgYSB0aW1lIGluc3RlYWQgb2YgcmVhZGluZyBhbmQgZGVjb2RpbmcgYWxsIG9mIHRoZW0gYXQgb25jZS5QU2lnbmVkU3VibWlzc2lvbnNNYXAAAQQFEF0KBAAcdCBVbmNoZWNrZWQsIHNpZ25lZCBzb2x1dGlvbnMuAGkBIFRvZ2V0aGVyIHdpdGggYFN1Ym1pc3Npb25JbmRpY2VzYCwgdGhpcyBzdG9yZXMgYSBib3VuZGVkIHNldCBvZiBgU2lnbmVkU3VibWlzc2lvbnNgIHdoaWxl7CBhbGxvd2luZyB1cyB0byBrZWVwIG9ubHkgYSBzaW5nbGUgb25lIGluIG1lbW9yeSBhdCBhIHRpbWUuAGkBIFR3b3ggbm90ZTogdGhlIGtleSBvZiB0aGUgbWFwIGlzIGFuIGF1dG8taW5jcmVtZW50aW5nIGluZGV4IHdoaWNoIHVzZXJzIGNhbm5vdCBpbnNwZWN0IG9y9CBhZmZlY3Q7IHdlIHNob3VsZG4ndCBuZWVkIGEgY3J5cHRvZ3JhcGhpY2FsbHkgc2VjdXJlIGhhc2hlci5UTWluaW11bVVudHJ1c3RlZFNjb3JlAADJAwQAEF0BIFRoZSBtaW5pbXVtIHNjb3JlIHRoYXQgZWFjaCAndW50cnVzdGVkJyBzb2x1dGlvbiBtdXN0IGF0dGFpbiBpbiBvcmRlciB0byBiZSBjb25zaWRlcmVkKCBmZWFzaWJsZS4AuCBDYW4gYmUgc2V0IHZpYSBgc2V0X21pbmltdW1fdW50cnVzdGVkX3Njb3JlYC4B9QIBFQc4VEJldHRlclNpZ25lZFRocmVzaG9sZKwQAAAAAAhNASBUaGUgbWluaW11bSBhbW91bnQgb2YgaW1wcm92ZW1lbnQgdG8gdGhlIHNvbHV0aW9uIHNjb3JlIHRoYXQgZGVmaW5lcyBhIHNvbHV0aW9uIGFzeCAiYmV0dGVyIiBpbiB0aGUgU2lnbmVkIHBoYXNlLjhPZmZjaGFpblJlcGVhdBAQBAAAABC0IFRoZSByZXBlYXQgdGhyZXNob2xkIG9mIHRoZSBvZmZjaGFpbiB3b3JrZXIuAGEBIEZvciBleGFtcGxlLCBpZiBpdCBpcyA1LCB0aGF0IG1lYW5zIHRoYXQgYXQgbGVhc3QgNSBibG9ja3Mgd2lsbCBlbGFwc2UgYmV0d2VlbiBhdHRlbXB0c4QgdG8gc3VibWl0IHRoZSB3b3JrZXIncyBzb2x1dGlvbi48TWluZXJUeFByaW9yaXR5MCBlZmZmZmZm5gQlASBUaGUgcHJpb3JpdHkgb2YgdGhlIHVuc2lnbmVkIHRyYW5zYWN0aW9uIHN1Ym1pdHRlZCBpbiB0aGUgdW5zaWduZWQtcGhhc2VQU2lnbmVkTWF4U3VibWlzc2lvbnMQEBAAAAAc5CBNYXhpbXVtIG51bWJlciBvZiBzaWduZWQgc3VibWlzc2lvbnMgdGhhdCBjYW4gYmUgcXVldWVkLgBVASBJdCBpcyBiZXN0IHRvIGF2b2lkIGFkanVzdGluZyB0aGlzIGR1cmluZyBhbiBlbGVjdGlvbiwgYXMgaXQgaW1wYWN0cyBkb3duc3RyZWFtIGRhdGFlASBzdHJ1Y3R1cmVzLiBJbiBwYXJ0aWN1bGFyLCBgU2lnbmVkU3VibWlzc2lvbkluZGljZXM8VD5gIGlzIGJvdW5kZWQgb24gdGhpcyB2YWx1ZS4gSWYgeW919CB1cGRhdGUgdGhpcyB2YWx1ZSBkdXJpbmcgYW4gZWxlY3Rpb24sIHlvdSBfbXVzdF8gZW5zdXJlIHRoYXRNASBgU2lnbmVkU3VibWlzc2lvbkluZGljZXMubGVuKClgIGlzIGxlc3MgdGhhbiBvciBlcXVhbCB0byB0aGUgbmV3IHZhbHVlLiBPdGhlcndpc2Us8CBhdHRlbXB0cyB0byBzdWJtaXQgbmV3IHNvbHV0aW9ucyBtYXkgY2F1c2UgYSBydW50aW1lIHBhbmljLjxTaWduZWRNYXhXZWlnaHQoQAsIx3JYVQETo3A9CtejcL0UlCBNYXhpbXVtIHdlaWdodCBvZiBhIHNpZ25lZCBzb2x1dGlvbi4AXQEgSWYgW2BDb25maWc6Ok1pbmVyQ29uZmlnYF0gaXMgYmVpbmcgaW1wbGVtZW50ZWQgdG8gc3VibWl0IHNpZ25lZCBzb2x1dGlvbnMgKG91dHNpZGUgb2Y9ASB0aGlzIHBhbGxldCksIHRoZW4gW2BNaW5lckNvbmZpZzo6c29sdXRpb25fd2VpZ2h0YF0gaXMgdXNlZCB0byBjb21wYXJlIGFnYWluc3QwIHRoaXMgdmFsdWUuQFNpZ25lZE1heFJlZnVuZHMQEAQAAAAEGQEgVGhlIG1heGltdW0gYW1vdW50IG9mIHVuY2hlY2tlZCBzb2x1dGlvbnMgdG8gcmVmdW5kIHRoZSBjYWxsIGZlZSBmb3IuQFNpZ25lZFJld2FyZEJhc2UYQADkC1QCAAAAAAAAAAAAAAAEiCBCYXNlIHJld2FyZCBmb3IgYSBzaWduZWQgc29sdXRpb25EU2lnbmVkRGVwb3NpdEJ5dGUYQHh9AQAAAAAAAAAAAAAAAAAEoCBQZXItYnl0ZSBkZXBvc2l0IGZvciBhIHNpZ25lZCBzb2x1dGlvbi5MU2lnbmVkRGVwb3NpdFdlaWdodBhAAAAAAAAAAAAAAAAAAAAAAASoIFBlci13ZWlnaHQgZGVwb3NpdCBmb3IgYSBzaWduZWQgc29sdXRpb24uKE1heFdpbm5lcnMQELAEAAAQNQEgVGhlIG1heGltdW0gbnVtYmVyIG9mIHdpbm5lcnMgdGhhdCBjYW4gYmUgZWxlY3RlZCBieSB0aGlzIGBFbGVjdGlvblByb3ZpZGVyYEAgaW1wbGVtZW50YXRpb24uAFEBIE5vdGU6IFRoaXMgbXVzdCBhbHdheXMgYmUgZ3JlYXRlciBvciBlcXVhbCB0byBgVDo6RGF0YVByb3ZpZGVyOjpkZXNpcmVkX3RhcmdldHMoKWAuOE1pbmVyTWF4TGVuZ3RoEBAAADYAADhNaW5lck1heFdlaWdodChACwjHclhVAROjcD0K16NwvQBUTWluZXJNYXhWb3Rlc1BlclZvdGVyEBAQAAAAADxNaW5lck1heFdpbm5lcnMQELAEAAAAAWEKJAAkVm90ZXJMaXN0ASRWb3Rlckxpc3QMJExpc3ROb2RlcwABBAUAZQoEAAyAIEEgc2luZ2xlIG5vZGUsIHdpdGhpbiBzb21lIGJhZy4ABQEgTm9kZXMgc3RvcmUgbGlua3MgZm9yd2FyZCBhbmQgYmFjayB3aXRoaW4gdGhlaXIgcmVzcGVjdGl2ZSBiYWdzLkxDb3VudGVyRm9yTGlzdE5vZGVzAQAQEAAAAAAErENvdW50ZXIgZm9yIHRoZSByZWxhdGVkIGNvdW50ZWQgc3RvcmFnZSBtYXAgTGlzdEJhZ3MAAQQFMGkKBAAMZCBBIGJhZyBzdG9yZWQgaW4gc3RvcmFnZS4AGQEgU3RvcmVzIGEgYEJhZ2Agc3RydWN0LCB3aGljaCBzdG9yZXMgaGVhZCBhbmQgdGFpbCBwb2ludGVycyB0byBpdHNlbGYuAekDASUHBDRCYWdUaHJlc2hvbGRzbQoJGSEDAOQLVAIAAADznoCXAgAAAKixl+ICAAAAlEkuNgMAAAAnnDqTAwAAAAO8zvoDAAAAQsAbbgQAAAAbR3XuBAAAADheVX0FAAAARtxgHAYAAACJOGzNBgAAALbugJIHAAAA/n7jbQgAAADoGxpiCQAAALAZ9HEKAAAAEDWSoAsAAADPyW/xDAAAAEEUbWgOAAAA55vaCRAAAADO6IXaEQAAACipx98TAAAAu3CTHxYAAACOQImgGAAAAIEKCWobAAAANmpIhB4AAABb02r4IQAAAIB8nNAlAAAAyVUwGCoAAAC9Y8HbLgAAAHHgVyk0AAAAaJCSEDoAAADtxNSiQAAAAGmTefNHAAAAj9gMGFAAAABLr4ooWQAAAGoWpj9jAAAACZUXe24AAAB4xfT7egAAAGLIEeeIAAAAUb9tZZgAAAAEjqukqQAAAFRGmNe8AAAAkcrANtIAAAAXXxgB6gAAAL0VsnwEAQAAQzWP9yEBAAC4/ITIQgEAAJlnPFBnAQAAB+RO+o8BAACzQYM+vQEAAAJ/LqLvAQAAmIO8uScCAAAWTWUqZgIAALSVE6yrAgAALY6CC/kCAACh5pgsTwMAAKYWCA2vAwAAzJ03xxkEAACg1YSVkAQAAELn4NUUBQAAAozXDagFAAAPdQrvSwYAAOqNLlwCBwAAw8uZbs0HAACx5XF8rwgAAKorjh+rCQAAtcEgPcMKAAAm0D0O+wsAAHDHWSlWDQAA663ajNgOAAD3l9uqhhAAAM/wRHZlEgAAHyZgcXoUAAAJphG+yxYAAB376C9gGQAAlDo8YD8cAACK/onEcR8AAM7ZY8cAIwAAA6kq5PYmAAD+cu7FXysAADbJzGlIMAAA2uMyRb81AAAGKnRw1DsAAHyXMtaZQgAAhKMkaCNKAABXGtRZh1IAAOfxAmLeWwAADbh2A0RmAACuBAHe1nEAAH2eswi5fgAAHgRKdhCNAAA6HfBkB50AAOBPr9rMrgAAVnnwL5XCAACVw6qpmtgAAJZ8BSUe8QAAF3pm1mcMAQAoyx8eyCoBAPooL3WYTAEA1X3IdDxyAQB9xLP7IpwBADZc3nTHygEAnrjhQrP+AQAMMa5UfzgCAF/hAejVeAIAY3PafnTAAgBR0aYNLhADAMfppGjtaAMAYcCR97fLAwC/J6G3sDkEAHsUmZQbtAQAhSPtImE8BQBppdTFEtQFAOyMk03vfAYA9aqQG+g4BwCMvl3bJgoIAAKXjOET8wgA+uMUQ132CQDd8S26/hYLAC663G9KWAwADFUYxPK9DQDwu1QxFUwPAEmOhmtGBxEAssFT3p/0EgAnii+yzhkVALI5n4QkfRcA4ZnnBKolGgC6E/WrMxsdACZHhcx4ZiAAiL+APy0RJAAcmCP4HSYoAMzEItRQsSwA8IiCBSjAMQA2fG1+iWE3AG6TKdMKpj0AjLxsEyKgRAAAcPMqXGRMALQ7hGmZCVUAgLSr5FCpXgCgzal5219pAEzCf0zHTHUA0KwOujSTggBIPgzPPVqRAGjGjnRpzaEAKB5vpSsdtACYqSMmdH/IAPCadGNNMN8AgM38S41y+ACQFGAtmpAUAfC0E9lF3TMBIJc1lsG0VgFQ3PuurX19AeARmLlHqqgBMMfuFru52AEgbkiGlzkOAqD6Sx1yx0kCwBFxcLUSjAKAihZDpt7VAsD4I7GiBCgDgK9ZcKJ2gwPAby2H/0HpA0CTf6yPkloEAJEJcRe22ARAD99bISBlBQBJwUlEbgEGAI68puVsrwYAWVaGhRxxB4BoqjSkt0gIgKHinlK5OAkAvavogORDCgAqcrQgTG0LgPHAEzNcuAwAoDzL3OMoDoC4YpqeIMMPAN5Wk9LKixEAXX9MkyOIEwAah981BL4VAKfOS4TvMxgAARD76iTxGgCAKuXRtf0dACKhNGCdYiEARCFr8NopJQACYfGCj14pAGYgz4UeDS4AhBAZUlJDMwCgwY/KhBA5ACatFJPMhT8A0M0kZi+2RgCc4Zoc2rZOAFjMwgxfn1cAIAp1ePuJYQAwu7vW5JNsAGDLp9ye3XgAuDvAQluLhgC4hiNhZMWVAPjxX9yTuKYAIGqRwNaWuQDY7+KPwJfOAGgpm/Uu+eX//////////6zQIFRoZSBsaXN0IG9mIHRocmVzaG9sZHMgc2VwYXJhdGluZyB0aGUgdmFyaW91cyBiYWdzLgBJASBJZHMgYXJlIHNlcGFyYXRlZCBpbnRvIHVuc29ydGVkIGJhZ3MgYWNjb3JkaW5nIHRvIHRoZWlyIHNjb3JlLiBUaGlzIHNwZWNpZmllcyB0aGVhASB0aHJlc2hvbGRzIHNlcGFyYXRpbmcgdGhlIGJhZ3MuIEFuIGlkJ3MgYmFnIGlzIHRoZSBsYXJnZXN0IGJhZyBmb3Igd2hpY2ggdGhlIGlkJ3Mgc2NvcmW4IGlzIGxlc3MgdGhhbiBvciBlcXVhbCB0byBpdHMgdXBwZXIgdGhyZXNob2xkLgBlASBXaGVuIGlkcyBhcmUgaXRlcmF0ZWQsIGhpZ2hlciBiYWdzIGFyZSBpdGVyYXRlZCBjb21wbGV0ZWx5IGJlZm9yZSBsb3dlciBiYWdzLiBUaGlzIG1lYW5zWQEgdGhhdCBpdGVyYXRpb24gaXMgX3NlbWktc29ydGVkXzogaWRzIG9mIGhpZ2hlciBzY29yZSB0ZW5kIHRvIGNvbWUgYmVmb3JlIGlkcyBvZiBsb3dlci0BIHNjb3JlLCBidXQgcGVlciBpZHMgd2l0aGluIGEgcGFydGljdWxhciBiYWcgYXJlIHNvcnRlZCBpbiBpbnNlcnRpb24gb3JkZXIuAGggIyBFeHByZXNzaW5nIHRoZSBjb25zdGFudABNASBUaGlzIGNvbnN0YW50IG11c3QgYmUgc29ydGVkIGluIHN0cmljdGx5IGluY3JlYXNpbmcgb3JkZXIuIER1cGxpY2F0ZSBpdGVtcyBhcmUgbm90LCBwZXJtaXR0ZWQuAEEBIFRoZXJlIGlzIGFuIGltcGxpZWQgdXBwZXIgbGltaXQgb2YgYFNjb3JlOjpNQVhgOyB0aGF0IHZhbHVlIGRvZXMgbm90IG5lZWQgdG8gYmUhASBzcGVjaWZpZWQgd2l0aGluIHRoZSBiYWcuIEZvciBhbnkgdHdvIHRocmVzaG9sZCBsaXN0cywgaWYgb25lIGVuZHMgd2l0aDEBIGBTY29yZTo6TUFYYCwgdGhlIG90aGVyIG9uZSBkb2VzIG5vdCwgYW5kIHRoZXkgYXJlIG90aGVyd2lzZSBlcXVhbCwgdGhlIHR3b3wgbGlzdHMgd2lsbCBiZWhhdmUgaWRlbnRpY2FsbHkuADggIyBDYWxjdWxhdGlvbgBVASBJdCBpcyByZWNvbW1lbmRlZCB0byBnZW5lcmF0ZSB0aGUgc2V0IG9mIHRocmVzaG9sZHMgaW4gYSBnZW9tZXRyaWMgc2VyaWVzLCBzdWNoIHRoYXRBASB0aGVyZSBleGlzdHMgc29tZSBjb25zdGFudCByYXRpbyBzdWNoIHRoYXQgYHRocmVzaG9sZFtrICsgMV0gPT0gKHRocmVzaG9sZFtrXSAq0CBjb25zdGFudF9yYXRpbykubWF4KHRocmVzaG9sZFtrXSArIDEpYCBmb3IgYWxsIGBrYC4AWQEgVGhlIGhlbHBlcnMgaW4gdGhlIGAvdXRpbHMvZnJhbWUvZ2VuZXJhdGUtYmFnc2AgbW9kdWxlIGNhbiBzaW1wbGlmeSB0aGlzIGNhbGN1bGF0aW9uLgAsICMgRXhhbXBsZXMAUQEgLSBJZiBgQmFnVGhyZXNob2xkczo6Z2V0KCkuaXNfZW1wdHkoKWAsIHRoZW4gYWxsIGlkcyBhcmUgcHV0IGludG8gdGhlIHNhbWUgYmFnLCBhbmSwICAgaXRlcmF0aW9uIGlzIHN0cmljdGx5IGluIGluc2VydGlvbiBvcmRlci5hASAtIElmIGBCYWdUaHJlc2hvbGRzOjpnZXQoKS5sZW4oKSA9PSA2NGAsIGFuZCB0aGUgdGhyZXNob2xkcyBhcmUgZGV0ZXJtaW5lZCBhY2NvcmRpbmcgdG8RASAgIHRoZSBwcm9jZWR1cmUgZ2l2ZW4gYWJvdmUsIHRoZW4gdGhlIGNvbnN0YW50IHJhdGlvIGlzIGVxdWFsIHRvIDIuZQEgLSBJZiBgQmFnVGhyZXNob2xkczo6Z2V0KCkubGVuKCkgPT0gMjAwYCwgYW5kIHRoZSB0aHJlc2hvbGRzIGFyZSBkZXRlcm1pbmVkIGFjY29yZGluZyB0b1kBICAgdGhlIHByb2NlZHVyZSBnaXZlbiBhYm92ZSwgdGhlbiB0aGUgY29uc3RhbnQgcmF0aW8gaXMgYXBwcm94aW1hdGVseSBlcXVhbCB0byAxLjI0OC5hASAtIElmIHRoZSB0aHJlc2hvbGQgbGlzdCBiZWdpbnMgYFsxLCAyLCAzLCAuLi5dYCwgdGhlbiBhbiBpZCB3aXRoIHNjb3JlIDAgb3IgMSB3aWxsIGZhbGzwICAgaW50byBiYWcgMCwgYW4gaWQgd2l0aCBzY29yZSAyIHdpbGwgZmFsbCBpbnRvIGJhZyAxLCBldGMuADAgIyBNaWdyYXRpb24AYQEgSW4gdGhlIGV2ZW50IHRoYXQgdGhpcyBsaXN0IGV2ZXIgY2hhbmdlcywgYSBjb3B5IG9mIHRoZSBvbGQgYmFncyBsaXN0IG11c3QgYmUgcmV0YWluZWQuXQEgV2l0aCB0aGF0IGBMaXN0OjptaWdyYXRlYCBjYW4gYmUgY2FsbGVkLCB3aGljaCB3aWxsIHBlcmZvcm0gdGhlIGFwcHJvcHJpYXRlIG1pZ3JhdGlvbi4BcQolADxOb21pbmF0aW9uUG9vbHMBPE5vbWluYXRpb25Qb29sc1RAVG90YWxWYWx1ZUxvY2tlZAEAGEAAAAAAAAAAAAAAAAAAAAAAFIwgVGhlIHN1bSBvZiBmdW5kcyBhY3Jvc3MgYWxsIHBvb2xzLgBxASBUaGlzIG1pZ2h0IGJlIGxvd2VyIGJ1dCBuZXZlciBoaWdoZXIgdGhhbiB0aGUgc3VtIG9mIGB0b3RhbF9iYWxhbmNlYCBvZiBhbGwgW2BQb29sTWVtYmVyc2BdWQEgYmVjYXVzZSBjYWxsaW5nIGBwb29sX3dpdGhkcmF3X3VuYm9uZGVkYCBtaWdodCBkZWNyZWFzZSB0aGUgdG90YWwgc3Rha2Ugb2YgdGhlIHBvb2wncykBIGBib25kZWRfYWNjb3VudGAgd2l0aG91dCBhZGp1c3RpbmcgdGhlIHBhbGxldC1pbnRlcm5hbCBgVW5ib25kaW5nUG9vbGAncy4sTWluSm9pbkJvbmQBABhAAAAAAAAAAAAAAAAAAAAAAAScIE1pbmltdW0gYW1vdW50IHRvIGJvbmQgdG8gam9pbiBhIHBvb2wuNE1pbkNyZWF0ZUJvbmQBABhAAAAAAAAAAAAAAAAAAAAAABygIE1pbmltdW0gYm9uZCByZXF1aXJlZCB0byBjcmVhdGUgYSBwb29sLgBlASBUaGlzIGlzIHRoZSBhbW91bnQgdGhhdCB0aGUgZGVwb3NpdG9yIG11c3QgcHV0IGFzIHRoZWlyIGluaXRpYWwgc3Rha2UgaW4gdGhlIHBvb2wsIGFzIGFuiCBpbmRpY2F0aW9uIG9mICJza2luIGluIHRoZSBnYW1lIi4AaQEgVGhpcyBpcyB0aGUgdmFsdWUgdGhhdCB3aWxsIGFsd2F5cyBleGlzdCBpbiB0aGUgc3Rha2luZyBsZWRnZXIgb2YgdGhlIHBvb2wgYm9uZGVkIGFjY291bnSAIHdoaWxlIGFsbCBvdGhlciBhY2NvdW50cyBsZWF2ZS4gTWF4UG9vbHMAABAEAAhpASBNYXhpbXVtIG51bWJlciBvZiBub21pbmF0aW9uIHBvb2xzIHRoYXQgY2FuIGV4aXN0LiBJZiBgTm9uZWAsIHRoZW4gYW4gdW5ib3VuZGVkIG51bWJlciBvZkQgcG9vbHMgY2FuIGV4aXN0LjhNYXhQb29sTWVtYmVycwAAEAQACEkBIE1heGltdW0gbnVtYmVyIG9mIG1lbWJlcnMgdGhhdCBjYW4gZXhpc3QgaW4gdGhlIHN5c3RlbS4gSWYgYE5vbmVgLCB0aGVuIHRoZSBjb3VudLggbWVtYmVycyBhcmUgbm90IGJvdW5kIG9uIGEgc3lzdGVtIHdpZGUgYmFzaXMuVE1heFBvb2xNZW1iZXJzUGVyUG9vbAAAEAQACEEBIE1heGltdW0gbnVtYmVyIG9mIG1lbWJlcnMgdGhhdCBtYXkgYmVsb25nIHRvIHBvb2wuIElmIGBOb25lYCwgdGhlbiB0aGUgY291bnQgb2aoIG1lbWJlcnMgaXMgbm90IGJvdW5kIG9uIGEgcGVyIHBvb2wgYmFzaXMuTEdsb2JhbE1heENvbW1pc3Npb24AAKwEAAxpASBUaGUgbWF4aW11bSBjb21taXNzaW9uIHRoYXQgY2FuIGJlIGNoYXJnZWQgYnkgYSBwb29sLiBVc2VkIG9uIGNvbW1pc3Npb24gcGF5b3V0cyB0byBib3VuZCUBIHBvb2wgY29tbWlzc2lvbnMgdGhhdCBhcmUgPiBgR2xvYmFsTWF4Q29tbWlzc2lvbmAsIG5lY2Vzc2FyeSBpZiBhIGZ1dHVyZQ0BIGBHbG9iYWxNYXhDb21taXNzaW9uYCBpcyBsb3dlciB0aGFuIHNvbWUgY3VycmVudCBwb29sIGNvbW1pc3Npb25zLixQb29sTWVtYmVycwABBAUAeQoEAAxAIEFjdGl2ZSBtZW1iZXJzLgDQIFRXT1gtTk9URTogU0FGRSBzaW5jZSBgQWNjb3VudElkYCBpcyBhIHNlY3VyZSBoYXNoLlRDb3VudGVyRm9yUG9vbE1lbWJlcnMBABAQAAAAAASsQ291bnRlciBmb3IgdGhlIHJlbGF0ZWQgY291bnRlZCBzdG9yYWdlIG1hcCxCb25kZWRQb29scwABBAUQhQoEAARoIFN0b3JhZ2UgZm9yIGJvbmRlZCBwb29scy5UQ291bnRlckZvckJvbmRlZFBvb2xzAQAQEAAAAAAErENvdW50ZXIgZm9yIHRoZSByZWxhdGVkIGNvdW50ZWQgc3RvcmFnZSBtYXAsUmV3YXJkUG9vbHMAAQQFEJkKBAAIdQEgUmV3YXJkIHBvb2xzLiBUaGlzIGlzIHdoZXJlIHRoZXJlIHJld2FyZHMgZm9yIGVhY2ggcG9vbCBhY2N1bXVsYXRlLiBXaGVuIGEgbWVtYmVycyBwYXlvdXQgaXNZASBjbGFpbWVkLCB0aGUgYmFsYW5jZSBjb21lcyBvdXQgb2YgdGhlIHJld2FyZCBwb29sLiBLZXllZCBieSB0aGUgYm9uZGVkIHBvb2xzIGFjY291bnQuVENvdW50ZXJGb3JSZXdhcmRQb29scwEAEBAAAAAABKxDb3VudGVyIGZvciB0aGUgcmVsYXRlZCBjb3VudGVkIHN0b3JhZ2UgbWFwPFN1YlBvb2xzU3RvcmFnZQABBAUQnQoEAAgZASBHcm91cHMgb2YgdW5ib25kaW5nIHBvb2xzLiBFYWNoIGdyb3VwIG9mIHVuYm9uZGluZyBwb29scyBiZWxvbmdzIHRvIGEpASBib25kZWQgcG9vbCwgaGVuY2UgdGhlIG5hbWUgc3ViLXBvb2xzLiBLZXllZCBieSB0aGUgYm9uZGVkIHBvb2xzIGFjY291bnQuZENvdW50ZXJGb3JTdWJQb29sc1N0b3JhZ2UBABAQAAAAAASsQ291bnRlciBmb3IgdGhlIHJlbGF0ZWQgY291bnRlZCBzdG9yYWdlIG1hcCBNZXRhZGF0YQEBBAUQtQoEAARcIE1ldGFkYXRhIGZvciB0aGUgcG9vbC5IQ291bnRlckZvck1ldGFkYXRhAQAQEAAAAAAErENvdW50ZXIgZm9yIHRoZSByZWxhdGVkIGNvdW50ZWQgc3RvcmFnZSBtYXAoTGFzdFBvb2xJZAEAEBAAAAAABNAgRXZlciBpbmNyZWFzaW5nIG51bWJlciBvZiBhbGwgcG9vbHMgY3JlYXRlZCBzbyBmYXIuTFJldmVyc2VQb29sSWRMb29rdXAAAQQFABAEABDcIEEgcmV2ZXJzZSBsb29rdXAgZnJvbSB0aGUgcG9vbCdzIGFjY291bnQgaWQgdG8gaXRzIGlkLgB1ASBUaGlzIGlzIG9ubHkgdXNlZCBmb3Igc2xhc2hpbmcgYW5kIG9uIGF1dG9tYXRpYyB3aXRoZHJhdyB1cGRhdGUuIEluIGFsbCBvdGhlciBpbnN0YW5jZXMsIHRoZSUBIHBvb2wgaWQgaXMgdXNlZCwgYW5kIHRoZSBhY2NvdW50cyBhcmUgZGV0ZXJtaW5pc3RpY2FsbHkgZGVyaXZlZCBmcm9tIGl0LnRDb3VudGVyRm9yUmV2ZXJzZVBvb2xJZExvb2t1cAEAEBAAAAAABKxDb3VudGVyIGZvciB0aGUgcmVsYXRlZCBjb3VudGVkIHN0b3JhZ2UgbWFwQENsYWltUGVybWlzc2lvbnMBAQQFAAkEBAIEAQEgTWFwIGZyb20gYSBwb29sIG1lbWJlciBhY2NvdW50IHRvIHRoZWlyIG9wdGVkIGNsYWltIHBlcm1pc3Npb24uAe0DASkHDCBQYWxsZXRJZE0JIHB5L25vcGxzBIQgVGhlIG5vbWluYXRpb24gcG9vbCdzIHBhbGxldCBpZC5ITWF4UG9pbnRzVG9CYWxhbmNlCAQKMB0BIFRoZSBtYXhpbXVtIHBvb2wgcG9pbnRzLXRvLWJhbGFuY2UgcmF0aW8gdGhhdCBhbiBgb3BlbmAgcG9vbCBjYW4gaGF2ZS4AVQEgVGhpcyBpcyBpbXBvcnRhbnQgaW4gdGhlIGV2ZW50IHNsYXNoaW5nIHRha2VzIHBsYWNlIGFuZCB0aGUgcG9vbCdzIHBvaW50cy10by1iYWxhbmNlfCByYXRpbyBiZWNvbWVzIGRpc3Byb3BvcnRpb25hbC4AZQEgTW9yZW92ZXIsIHRoaXMgcmVsYXRlcyB0byB0aGUgYFJld2FyZENvdW50ZXJgIHR5cGUgYXMgd2VsbCwgYXMgdGhlIGFyaXRobWV0aWMgb3BlcmF0aW9uc1UBIGFyZSBhIGZ1bmN0aW9uIG9mIG51bWJlciBvZiBwb2ludHMsIGFuZCBieSBzZXR0aW5nIHRoaXMgdmFsdWUgdG8gZS5nLiAxMCwgeW91IGVuc3VyZWUBIHRoYXQgdGhlIHRvdGFsIG51bWJlciBvZiBwb2ludHMgaW4gdGhlIHN5c3RlbSBhcmUgYXQgbW9zdCAxMCB0aW1lcyB0aGUgdG90YWxfaXNzdWFuY2Ugb2acIHRoZSBjaGFpbiwgaW4gdGhlIGFic29sdXRlIHdvcnNlIGNhc2UuAEkBIEZvciBhIHZhbHVlIG9mIDEwLCB0aGUgdGhyZXNob2xkIHdvdWxkIGJlIGEgcG9vbCBwb2ludHMtdG8tYmFsYW5jZSByYXRpbyBvZiAxMDoxLjEBIFN1Y2ggYSBzY2VuYXJpbyB3b3VsZCBhbHNvIGJlIHRoZSBlcXVpdmFsZW50IG9mIHRoZSBwb29sIGJlaW5nIDkwJSBzbGFzaGVkLjBNYXhVbmJvbmRpbmcQECAAAAAEPQEgVGhlIG1heGltdW0gbnVtYmVyIG9mIHNpbXVsdGFuZW91cyB1bmJvbmRpbmcgY2h1bmtzIHRoYXQgY2FuIGV4aXN0IHBlciBtZW1iZXIuAbkKJwAsRmFzdFVuc3Rha2UBLEZhc3RVbnN0YWtlEBBIZWFkAADBCgQADMAgVGhlIGN1cnJlbnQgImhlYWQgb2YgdGhlIHF1ZXVlIiBiZWluZyB1bnN0YWtlZC4AKQEgVGhlIGhlYWQgaW4gaXRzZWxmIGNhbiBiZSBhIGJhdGNoIG9mIHVwIHRvIFtgQ29uZmlnOjpCYXRjaFNpemVgXSBzdGFrZXJzLhRRdWV1ZQABBAUAGAQADMAgVGhlIG1hcCBvZiBhbGwgYWNjb3VudHMgd2lzaGluZyB0byBiZSB1bnN0YWtlZC4AOQEgS2VlcHMgdHJhY2sgb2YgYEFjY291bnRJZGAgd2lzaGluZyB0byB1bnN0YWtlIGFuZCBpdCdzIGNvcnJlc3BvbmRpbmcgZGVwb3NpdC48Q291bnRlckZvclF1ZXVlAQAQEAAAAAAErENvdW50ZXIgZm9yIHRoZSByZWxhdGVkIGNvdW50ZWQgc3RvcmFnZSBtYXBMRXJhc1RvQ2hlY2tQZXJCbG9jawEAEBAAAAAAIIwgTnVtYmVyIG9mIGVyYXMgdG8gY2hlY2sgcGVyIGJsb2NrLgA1ASBJZiBzZXQgdG8gMCwgdGhpcyBwYWxsZXQgZG9lcyBhYnNvbHV0ZWx5IG5vdGhpbmcuIENhbm5vdCBiZSBzZXQgdG8gbW9yZSB0aGFukCBbYENvbmZpZzo6TWF4RXJhc1RvQ2hlY2tQZXJCbG9ja2BdLgBlASBCYXNlZCBvbiB0aGUgYW1vdW50IG9mIHdlaWdodCBhdmFpbGFibGUgYXQgW2BQYWxsZXQ6Om9uX2lkbGVgXSwgdXAgdG8gdGhpcyBtYW55IGVyYXMgYXJlXQEgY2hlY2tlZC4gVGhlIGNoZWNraW5nIGlzIHJlcHJlc2VudGVkIGJ5IHVwZGF0aW5nIFtgVW5zdGFrZVJlcXVlc3Q6OmNoZWNrZWRgXSwgd2hpY2ggaXNQIHN0b3JlZCBpbiBbYEhlYWRgXS4BIQQBLQcEHERlcG9zaXQYQADkC1QCAAAAAAAAAAAAAAAIZQEgRGVwb3NpdCB0byB0YWtlIGZvciB1bnN0YWtpbmcsIHRvIG1ha2Ugc3VyZSB3ZSdyZSBhYmxlIHRvIHNsYXNoIHRoZSBpdCBpbiBvcmRlciB0byBjb3ZlcsAgdGhlIGNvc3RzIG9mIHJlc291cmNlcyBvbiB1bnN1Y2Nlc3NmdWwgdW5zdGFrZS4BzQooAEBQYXJhY2hhaW5zT3JpZ2luAAAAAAAyEHkBIFRoZXJlIGlzIG5vIHdheSB0byByZWdpc3RlciBhbiBvcmlnaW4gdHlwZSBpbiBgY29uc3RydWN0X3J1bnRpbWVgIHdpdGhvdXQgYSBwYWxsZXQgdGhlIG9yaWdpbjAgYmVsb25ncyB0by4AdQEgVGhpcyBtb2R1bGUgZnVsZmlsbHMgb25seSB0aGUgc2luZ2xlIHB1cnBvc2Ugb2YgaG91c2luZyB0aGUgYE9yaWdpbmAgaW4gYGNvbnN0cnVjdF9ydW50aW1lYC40Q29uZmlndXJhdGlvbgE0Q29uZmlndXJhdGlvbgwwQWN0aXZlQ29uZmlnAQDRCkEDAAAwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGAAAAZAAAAAEAAAABAAAAAAAAAAAAAAAAAAAAAgAAAAIAAAACAAAAAAEAAAABAAAAAQAAAAABAAAAAAAAAAAAAAAQJwAAgLLmDoDDyQGAlpgAAAAAAAAAAAAAAAAABQAAAATIIFRoZSBhY3RpdmUgY29uZmlndXJhdGlvbiBmb3IgdGhlIGN1cnJlbnQgc2Vzc2lvbi44UGVuZGluZ0NvbmZpZ3MBANUKBAAcfCBQZW5kaW5nIGNvbmZpZ3VyYXRpb24gY2hhbmdlcy4AWQEgVGhpcyBpcyBhIGxpc3Qgb2YgY29uZmlndXJhdGlvbiBjaGFuZ2VzLCBlYWNoIHdpdGggYSBzZXNzaW9uIGluZGV4IGF0IHdoaWNoIGl0IHNob3VsZDAgYmUgYXBwbGllZC4AYQEgVGhlIGxpc3QgaXMgc29ydGVkIGFzY2VuZGluZyBieSBzZXNzaW9uIGluZGV4LiBBbHNvLCB0aGlzIGxpc3QgY2FuIG9ubHkgY29udGFpbiBhdCBtb3N0/CAyIGl0ZW1zOiBmb3IgdGhlIG5leHQgc2Vzc2lvbiBhbmQgZm9yIHRoZSBgc2NoZWR1bGVkX3Nlc3Npb25gLlhCeXBhc3NDb25zaXN0ZW5jeUNoZWNrAQAgBAAIYQEgSWYgdGhpcyBpcyBzZXQsIHRoZW4gdGhlIGNvbmZpZ3VyYXRpb24gc2V0dGVycyB3aWxsIGJ5cGFzcyB0aGUgY29uc2lzdGVuY3kgY2hlY2tzLiBUaGlztCBpcyBtZWFudCB0byBiZSB1c2VkIG9ubHkgYXMgdGhlIGxhc3QgcmVzb3J0LgElBAAAAd0KMwAsUGFyYXNTaGFyZWQBLFBhcmFzU2hhcmVkEExDdXJyZW50U2Vzc2lvbkluZGV4AQAQEAAAAAAEbCBUaGUgY3VycmVudCBzZXNzaW9uIGluZGV4LlhBY3RpdmVWYWxpZGF0b3JJbmRpY2VzAQDhCgQACAkBIEFsbCB0aGUgdmFsaWRhdG9ycyBhY3RpdmVseSBwYXJ0aWNpcGF0aW5nIGluIHBhcmFjaGFpbiBjb25zZW5zdXMusCBJbmRpY2VzIGFyZSBpbnRvIHRoZSBicm9hZGVyIHZhbGlkYXRvciBzZXQuTEFjdGl2ZVZhbGlkYXRvcktleXMBAOUKBAAIVQEgVGhlIHBhcmFjaGFpbiBhdHRlc3RhdGlvbiBrZXlzIG9mIHRoZSB2YWxpZGF0b3JzIGFjdGl2ZWx5IHBhcnRpY2lwYXRpbmcgaW4gcGFyYWNoYWluHQEgY29uc2Vuc3VzLiBUaGlzIHNob3VsZCBiZSB0aGUgc2FtZSBsZW5ndGggYXMgYEFjdGl2ZVZhbGlkYXRvckluZGljZXNgLkxBbGxvd2VkUmVsYXlQYXJlbnRzAQDpChQAAAAAAARsIEFsbCBhbGxvd2VkIHJlbGF5LXBhcmVudHMuAUkEAAAANAA0UGFyYUluY2x1c2lvbgE0UGFyYUluY2x1c2lvbgQIVjEAAQQFjQL1CgQAFGEBIENhbmRpZGF0ZXMgcGVuZGluZyBhdmFpbGFiaWxpdHkgYnkgYFBhcmFJZGAuIFRoZXkgZm9ybSBhIGNoYWluIHN0YXJ0aW5nIGZyb20gdGhlIGxhdGVzdGwgaW5jbHVkZWQgaGVhZCBvZiB0aGUgcGFyYS5hASBVc2UgYSBkaWZmZXJlbnQgcHJlZml4IHBvc3QtbWlncmF0aW9uIHRvIHYxLCBzaW5jZSB0aGUgdjAgYFBlbmRpbmdBdmFpbGFiaWxpdHlgIHN0b3JhZ2VxASB3b3VsZCBvdGhlcndpc2UgaGF2ZSB0aGUgZXhhY3Qgc2FtZSBwcmVmaXggd2hpY2ggY291bGQgY2F1c2UgdW5kZWZpbmVkIGJlaGF2aW91ciB3aGVuIGRvaW5nPCB0aGUgbWlncmF0aW9uLgFNBAExBwAB/Qo1ADBQYXJhSW5oZXJlbnQBMFBhcmFJbmhlcmVudAggSW5jbHVkZWQAAIwEABjsIFdoZXRoZXIgdGhlIHBhcmFzIGluaGVyZW50IHdhcyBpbmNsdWRlZCB3aXRoaW4gdGhpcyBibG9jay4AaQEgVGhlIGBPcHRpb248KCk+YCBpcyBlZmZlY3RpdmVseSBhIGBib29sYCwgYnV0IGl0IG5ldmVyIGhpdHMgc3RvcmFnZSBpbiB0aGUgYE5vbmVgIHZhcmlhbnS8IGR1ZSB0byB0aGUgZ3VhcmFudGVlcyBvZiBGUkFNRSdzIHN0b3JhZ2UgQVBJcy4ASQEgSWYgdGhpcyBpcyBgTm9uZWAgYXQgdGhlIGVuZCBvZiB0aGUgYmxvY2ssIHdlIHBhbmljIGFuZCByZW5kZXIgdGhlIGJsb2NrIGludmFsaWQuME9uQ2hhaW5Wb3RlcwAAAQsEAARFASBTY3JhcGVkIG9uIGNoYWluIGRhdGEgZm9yIGV4dHJhY3RpbmcgcmVzb2x2ZWQgZGlzcHV0ZXMgYXMgd2VsbCBhcyBiYWNraW5nIHZvdGVzLgFRBAAAARULNgA0UGFyYVNjaGVkdWxlcgE0UGFyYVNjaGVkdWxlchA8VmFsaWRhdG9yR3JvdXBzAQAZCwQAHG0BIEFsbCB0aGUgdmFsaWRhdG9yIGdyb3Vwcy4gT25lIGZvciBlYWNoIGNvcmUuIEluZGljZXMgYXJlIGludG8gYEFjdGl2ZVZhbGlkYXRvcnNgIC0gbm90IHRoZW0BIGJyb2FkZXIgc2V0IG9mIFBvbGthZG90IHZhbGlkYXRvcnMsIGJ1dCBpbnN0ZWFkIGp1c3QgdGhlIHN1YnNldCB1c2VkIGZvciBwYXJhY2hhaW5zIGR1cmluZzggdGhpcyBzZXNzaW9uLgBJASBCb3VuZDogVGhlIG51bWJlciBvZiBjb3JlcyBpcyB0aGUgc3VtIG9mIHRoZSBudW1iZXJzIG9mIHBhcmFjaGFpbnMgYW5kIHBhcmF0aHJlYWRpASBtdWx0aXBsZXhlcnMuIFJlYXNvbmFibHksIDEwMC0xMDAwLiBUaGUgZG9taW5hbnQgZmFjdG9yIGlzIHRoZSBudW1iZXIgb2YgdmFsaWRhdG9yczogc2FmZVAgdXBwZXIgYm91bmQgYXQgMTBrLkRBdmFpbGFiaWxpdHlDb3JlcwEAHQsEABhxASBPbmUgZW50cnkgZm9yIGVhY2ggYXZhaWxhYmlsaXR5IGNvcmUuIFRoZSBpJ3RoIHBhcmFjaGFpbiBiZWxvbmdzIHRvIHRoZSBpJ3RoIGNvcmUsIHdpdGggdGhl8CByZW1haW5pbmcgY29yZXMgYWxsIGJlaW5nIG9uIGRlbWFuZCBwYXJhY2hhaW4gbXVsdGlwbGV4ZXJzLgDYIEJvdW5kZWQgYnkgdGhlIG1heGltdW0gb2YgZWl0aGVyIG9mIHRoZXNlIHR3byB2YWx1ZXM65CAgICogVGhlIG51bWJlciBvZiBwYXJhY2hhaW5zIGFuZCBwYXJhdGhyZWFkIG11bHRpcGxleGVyc0UBICAgKiBUaGUgbnVtYmVyIG9mIHZhbGlkYXRvcnMgZGl2aWRlZCBieSBgY29uZmlndXJhdGlvbi5tYXhfdmFsaWRhdG9yc19wZXJfY29yZWAuRFNlc3Npb25TdGFydEJsb2NrAQAQEAAAAAAcaQEgVGhlIGJsb2NrIG51bWJlciB3aGVyZSB0aGUgc2Vzc2lvbiBzdGFydCBvY2N1cnJlZC4gVXNlZCB0byB0cmFjayBob3cgbWFueSBncm91cCByb3RhdGlvbnM8IGhhdmUgb2NjdXJyZWQuAFUBIE5vdGUgdGhhdCBpbiB0aGUgY29udGV4dCBvZiBwYXJhY2hhaW5zIG1vZHVsZXMgdGhlIHNlc3Npb24gY2hhbmdlIGlzIHNpZ25hbGVkIGR1cmluZ2EBIHRoZSBibG9jayBhbmQgZW5hY3RlZCBhdCB0aGUgZW5kIG9mIHRoZSBibG9jayAoYXQgdGhlIGZpbmFsaXphdGlvbiBzdGFnZSwgdG8gYmUgZXhhY3QpLlkBIFRodXMgZm9yIGFsbCBpbnRlbnRzIGFuZCBwdXJwb3NlcyB0aGUgZWZmZWN0IG9mIHRoZSBzZXNzaW9uIGNoYW5nZSBpcyBvYnNlcnZlZCBhdCB0aGVlASBibG9jayBmb2xsb3dpbmcgdGhlIHNlc3Npb24gY2hhbmdlLCBibG9jayBudW1iZXIgb2Ygd2hpY2ggd2Ugc2F2ZSBpbiB0aGlzIHN0b3JhZ2UgdmFsdWUuKENsYWltUXVldWUBAC0LBAAMWQEgT25lIGVudHJ5IGZvciBlYWNoIGF2YWlsYWJpbGl0eSBjb3JlLiBUaGUgYFZlY0RlcXVlYCByZXByZXNlbnRzIHRoZSBhc3NpZ25tZW50cyB0byBiZVEBIHNjaGVkdWxlZCBvbiB0aGF0IGNvcmUuIFRoZSB2YWx1ZSBjb250YWluZWQgaGVyZSB3aWxsIG5vdCBiZSB2YWxpZCBhZnRlciB0aGUgZW5kIG9maQEgYSBibG9jay4gUnVudGltZSBBUElzIHNob3VsZCBiZSB1c2VkIHRvIGRldGVybWluZSBzY2hlZHVsZWQgY29yZXMgZm9yIHRoZSB1cGNvbWluZyBibG9jay4AAAAANwAUUGFyYXMBFFBhcmFzVEBQdmZBY3RpdmVWb3RlTWFwAAEEBY0EPQsEABC0IEFsbCBjdXJyZW50bHkgYWN0aXZlIFBWRiBwcmUtY2hlY2tpbmcgdm90ZXMuACwgSW52YXJpYW50OnUBIC0gVGhlcmUgYXJlIG5vIFBWRiBwcmUtY2hlY2tpbmcgdm90ZXMgdGhhdCBleGlzdHMgaW4gbGlzdCBidXQgbm90IGluIHRoZSBzZXQgYW5kIHZpY2UgdmVyc2EuRFB2ZkFjdGl2ZVZvdGVMaXN0AQBNCwQABDUBIFRoZSBsaXN0IG9mIGFsbCBjdXJyZW50bHkgYWN0aXZlIFBWRiB2b3Rlcy4gQXV4aWxpYXJ5IHRvIGBQdmZBY3RpdmVWb3RlTWFwYC4oUGFyYWNoYWlucwEAUQsEABBpASBBbGwgbGVhc2UgaG9sZGluZyBwYXJhY2hhaW5zLiBPcmRlcmVkIGFzY2VuZGluZyBieSBgUGFyYUlkYC4gT24gZGVtYW5kIHBhcmFjaGFpbnMgYXJlIG5vdCggaW5jbHVkZWQuAOggQ29uc2lkZXIgdXNpbmcgdGhlIFtgUGFyYWNoYWluc0NhY2hlYF0gdHlwZSBvZiBtb2RpZnlpbmcuOFBhcmFMaWZlY3ljbGVzAAEEBY0CVQsEAAS8IFRoZSBjdXJyZW50IGxpZmVjeWNsZSBvZiBhIGFsbCBrbm93biBQYXJhIElEcy4USGVhZHMAAQQFjQKtBAQABKAgVGhlIGhlYWQtZGF0YSBvZiBldmVyeSByZWdpc3RlcmVkIHBhcmEuRE1vc3RSZWNlbnRDb250ZXh0AAEEBY0CEAQABCkBIFRoZSBjb250ZXh0IChyZWxheS1jaGFpbiBibG9jayBudW1iZXIpIG9mIHRoZSBtb3N0IHJlY2VudCBwYXJhY2hhaW4gaGVhZC48Q3VycmVudENvZGVIYXNoAAEEBY0CjQQEAAy0IFRoZSB2YWxpZGF0aW9uIGNvZGUgaGFzaCBvZiBldmVyeSBsaXZlIHBhcmEuAOQgQ29ycmVzcG9uZGluZyBjb2RlIGNhbiBiZSByZXRyaWV2ZWQgd2l0aCBbYENvZGVCeUhhc2hgXS4wUGFzdENvZGVIYXNoAAEEBVkLjQQEABBhASBBY3R1YWwgcGFzdCBjb2RlIGhhc2gsIGluZGljYXRlZCBieSB0aGUgcGFyYSBpZCBhcyB3ZWxsIGFzIHRoZSBibG9jayBudW1iZXIgYXQgd2hpY2ggaXREIGJlY2FtZSBvdXRkYXRlZC4A5CBDb3JyZXNwb25kaW5nIGNvZGUgY2FuIGJlIHJldHJpZXZlZCB3aXRoIFtgQ29kZUJ5SGFzaGBdLjBQYXN0Q29kZU1ldGEBAQQFjQJdCwgAAAxJASBQYXN0IGNvZGUgb2YgcGFyYWNoYWlucy4gVGhlIHBhcmFjaGFpbnMgdGhlbXNlbHZlcyBtYXkgbm90IGJlIHJlZ2lzdGVyZWQgYW55bW9yZSxJASBidXQgd2UgYWxzbyBrZWVwIHRoZWlyIGNvZGUgb24tY2hhaW4gZm9yIHRoZSBzYW1lIGFtb3VudCBvZiB0aW1lIGFzIG91dGRhdGVkIGNvZGWwIHRvIGtlZXAgaXQgYXZhaWxhYmxlIGZvciBhcHByb3ZhbCBjaGVja2Vycy48UGFzdENvZGVQcnVuaW5nAQBpCwQAGGkBIFdoaWNoIHBhcmFzIGhhdmUgcGFzdCBjb2RlIHRoYXQgbmVlZHMgcHJ1bmluZyBhbmQgdGhlIHJlbGF5LWNoYWluIGJsb2NrIGF0IHdoaWNoIHRoZSBjb2RlaQEgd2FzIHJlcGxhY2VkLiBOb3RlIHRoYXQgdGhpcyBpcyB0aGUgYWN0dWFsIGhlaWdodCBvZiB0aGUgaW5jbHVkZWQgYmxvY2ssIG5vdCB0aGUgZXhwZWN0ZWQ9ASBoZWlnaHQgYXQgd2hpY2ggdGhlIGNvZGUgdXBncmFkZSB3b3VsZCBiZSBhcHBsaWVkLCBhbHRob3VnaCB0aGV5IG1heSBiZSBlcXVhbC5tASBUaGlzIGlzIHRvIGVuc3VyZSB0aGUgZW50aXJlIGFjY2VwdGFuY2UgcGVyaW9kIGlzIGNvdmVyZWQsIG5vdCBhbiBvZmZzZXQgYWNjZXB0YW5jZSBwZXJpb2RtASBzdGFydGluZyBmcm9tIHRoZSB0aW1lIGF0IHdoaWNoIHRoZSBwYXJhY2hhaW4gcGVyY2VpdmVzIGEgY29kZSB1cGdyYWRlIGFzIGhhdmluZyBvY2N1cnJlZC5VASBNdWx0aXBsZSBlbnRyaWVzIGZvciBhIHNpbmdsZSBwYXJhIGFyZSBwZXJtaXR0ZWQuIE9yZGVyZWQgYXNjZW5kaW5nIGJ5IGJsb2NrIG51bWJlci5IRnV0dXJlQ29kZVVwZ3JhZGVzAAEEBY0CEAQAED0BIFRoZSBibG9jayBudW1iZXIgYXQgd2hpY2ggdGhlIHBsYW5uZWQgY29kZSBjaGFuZ2UgaXMgZXhwZWN0ZWQgZm9yIGEgcGFyYWNoYWluLgBlASBUaGUgY2hhbmdlIHdpbGwgYmUgYXBwbGllZCBhZnRlciB0aGUgZmlyc3QgcGFyYWJsb2NrIGZvciB0aGlzIElEIGluY2x1ZGVkIHdoaWNoIGV4ZWN1dGVzGQEgaW4gdGhlIGNvbnRleHQgb2YgYSByZWxheSBjaGFpbiBibG9jayB3aXRoIGEgbnVtYmVyID49IGBleHBlY3RlZF9hdGAuUEZ1dHVyZUNvZGVVcGdyYWRlc0F0AQBpCwQAIKwgVGhlIGxpc3Qgb2YgdXBjb21pbmcgZnV0dXJlIGNvZGUgdXBncmFkZXMuAG0BIEVhY2ggaXRlbSBpcyBhIHBhaXIgb2YgdGhlIHBhcmFjaGFpbiBhbmQgdGhlIGV4cGVjdGVkIGJsb2NrIGF0IHdoaWNoIHRoZSB1cGdyYWRlIHNob3VsZCBiZVEBIGFwcGxpZWQuIFRoZSB1cGdyYWRlIHdpbGwgYmUgYXBwbGllZCBhdCB0aGUgZ2l2ZW4gcmVsYXkgY2hhaW4gYmxvY2suIEluIGNvbnRyYXN0IHRvdQEgW2BGdXR1cmVDb2RlVXBncmFkZXNgXSB0aGlzIGNvZGUgdXBncmFkZSB3aWxsIGJlIGFwcGxpZWQgcmVnYXJkbGVzcyB0aGUgcGFyYWNoYWluIG1ha2luZyBhbnlEIHByb2dyZXNzIG9yIG5vdC4AjCBPcmRlcmVkIGFzY2VuZGluZyBieSBibG9jayBudW1iZXIuOEZ1dHVyZUNvZGVIYXNoAAEEBY0CjQQEAAycIFRoZSBhY3R1YWwgZnV0dXJlIGNvZGUgaGFzaCBvZiBhIHBhcmEuAOQgQ29ycmVzcG9uZGluZyBjb2RlIGNhbiBiZSByZXRyaWV2ZWQgd2l0aCBbYENvZGVCeUhhc2hgXS5QVXBncmFkZUdvQWhlYWRTaWduYWwAAQQFjQJtCwQAKHUBIFRoaXMgaXMgdXNlZCBieSB0aGUgcmVsYXktY2hhaW4gdG8gY29tbXVuaWNhdGUgdG8gYSBwYXJhY2hhaW4gYSBnby1haGVhZCB3aXRoIGluIHRoZSB1cGdyYWRlLCBwcm9jZWR1cmUuAHUBIFRoaXMgdmFsdWUgaXMgYWJzZW50IHdoZW4gdGhlcmUgYXJlIG5vIHVwZ3JhZGVzIHNjaGVkdWxlZCBvciBkdXJpbmcgdGhlIHRpbWUgdGhlIHJlbGF5IGNoYWluVQEgcGVyZm9ybXMgdGhlIGNoZWNrcy4gSXQgaXMgc2V0IGF0IHRoZSBmaXJzdCByZWxheS1jaGFpbiBibG9jayB3aGVuIHRoZSBjb3JyZXNwb25kaW5ndQEgcGFyYWNoYWluIGNhbiBzd2l0Y2ggaXRzIHVwZ3JhZGUgZnVuY3Rpb24uIEFzIHNvb24gYXMgdGhlIHBhcmFjaGFpbidzIGJsb2NrIGlzIGluY2x1ZGVkLCB0aGVwIHZhbHVlIGdldHMgcmVzZXQgdG8gYE5vbmVgLgBlASBOT1RFIHRoYXQgdGhpcyBmaWVsZCBpcyB1c2VkIGJ5IHBhcmFjaGFpbnMgdmlhIG1lcmtsZSBzdG9yYWdlIHByb29mcywgdGhlcmVmb3JlIGNoYW5naW5nxCB0aGUgZm9ybWF0IHdpbGwgcmVxdWlyZSBtaWdyYXRpb24gb2YgcGFyYWNoYWlucy5gVXBncmFkZVJlc3RyaWN0aW9uU2lnbmFsAAEEBY0CcQsEACRpASBUaGlzIGlzIHVzZWQgYnkgdGhlIHJlbGF5LWNoYWluIHRvIGNvbW11bmljYXRlIHRoYXQgdGhlcmUgYXJlIHJlc3RyaWN0aW9ucyBmb3IgcGVyZm9ybWluZ3wgYW4gdXBncmFkZSBmb3IgdGhpcyBwYXJhY2hhaW4uAFkBIFRoaXMgbWF5IGJlIGEgYmVjYXVzZSB0aGUgcGFyYWNoYWluIHdhaXRzIGZvciB0aGUgdXBncmFkZSBjb29sZG93biB0byBleHBpcmUuIEFub3RoZXJtASBwb3RlbnRpYWwgdXNlIGNhc2UgaXMgd2hlbiB3ZSB3YW50IHRvIHBlcmZvcm0gc29tZSBtYWludGVuYW5jZSAoc3VjaCBhcyBzdG9yYWdlIG1pZ3JhdGlvbingIHdlIGNvdWxkIHJlc3RyaWN0IHVwZ3JhZGVzIHRvIG1ha2UgdGhlIHByb2Nlc3Mgc2ltcGxlci4AZQEgTk9URSB0aGF0IHRoaXMgZmllbGQgaXMgdXNlZCBieSBwYXJhY2hhaW5zIHZpYSBtZXJrbGUgc3RvcmFnZSBwcm9vZnMsIHRoZXJlZm9yZSBjaGFuZ2luZ8QgdGhlIGZvcm1hdCB3aWxsIHJlcXVpcmUgbWlncmF0aW9uIG9mIHBhcmFjaGFpbnMuQFVwZ3JhZGVDb29sZG93bnMBAGkLBAAMUQEgVGhlIGxpc3Qgb2YgcGFyYWNoYWlucyB0aGF0IGFyZSBhd2FpdGluZyBmb3IgdGhlaXIgdXBncmFkZSByZXN0cmljdGlvbiB0byBjb29sZG93bi4AjCBPcmRlcmVkIGFzY2VuZGluZyBieSBibG9jayBudW1iZXIuQFVwY29taW5nVXBncmFkZXMBAGkLBAAYkCBUaGUgbGlzdCBvZiB1cGNvbWluZyBjb2RlIHVwZ3JhZGVzLgBxASBFYWNoIGl0ZW0gaXMgYSBwYWlyIG9mIHdoaWNoIHBhcmEgcGVyZm9ybXMgYSBjb2RlIHVwZ3JhZGUgYW5kIGF0IHdoaWNoIHJlbGF5LWNoYWluIGJsb2NrIGl0QCBpcyBleHBlY3RlZCBhdC4AjCBPcmRlcmVkIGFzY2VuZGluZyBieSBibG9jayBudW1iZXIuMEFjdGlvbnNRdWV1ZQEBBAUQUQsEAAQVASBUaGUgYWN0aW9ucyB0byBwZXJmb3JtIGR1cmluZyB0aGUgc3RhcnQgb2YgYSBzcGVjaWZpYyBzZXNzaW9uIGluZGV4LlBVcGNvbWluZ1BhcmFzR2VuZXNpcwABBAWNAtEGBAAQoCBVcGNvbWluZyBwYXJhcyBpbnN0YW50aWF0aW9uIGFyZ3VtZW50cy4AZQEgTk9URSB0aGF0IGFmdGVyIFBWRiBwcmUtY2hlY2tpbmcgaXMgZW5hYmxlZCB0aGUgcGFyYSBnZW5lc2lzIGFyZyB3aWxsIGhhdmUgaXQncyBjb2RlIHNldGEBIHRvIGVtcHR5LiBJbnN0ZWFkLCB0aGUgY29kZSB3aWxsIGJlIHNhdmVkIGludG8gdGhlIHN0b3JhZ2UgcmlnaHQgYXdheSB2aWEgYENvZGVCeUhhc2hgLjhDb2RlQnlIYXNoUmVmcwEBBAaNBBAQAAAAAAQpASBUaGUgbnVtYmVyIG9mIHJlZmVyZW5jZSBvbiB0aGUgdmFsaWRhdGlvbiBjb2RlIGluIFtgQ29kZUJ5SGFzaGBdIHN0b3JhZ2UuKENvZGVCeUhhc2gAAQQGjQSpBAQAEJAgVmFsaWRhdGlvbiBjb2RlIHN0b3JlZCBieSBpdHMgaGFzaC4AMQEgVGhpcyBzdG9yYWdlIGlzIGNvbnNpc3RlbnQgd2l0aCBbYEZ1dHVyZUNvZGVIYXNoYF0sIFtgQ3VycmVudENvZGVIYXNoYF0gYW5kSCBbYFBhc3RDb2RlSGFzaGBdLgHdBAFBBwRAVW5zaWduZWRQcmlvcml0eTAg//////////8AAXULOAAsSW5pdGlhbGl6ZXIBLEluaXRpYWxpemVyCDhIYXNJbml0aWFsaXplZAAAjAQAICEBIFdoZXRoZXIgdGhlIHBhcmFjaGFpbnMgbW9kdWxlcyBoYXZlIGJlZW4gaW5pdGlhbGl6ZWQgd2l0aGluIHRoaXMgYmxvY2suACUBIFNlbWFudGljYWxseSBhIGBib29sYCwgYnV0IHRoaXMgZ3VhcmFudGVlcyBpdCBzaG91bGQgbmV2ZXIgaGl0IHRoZSB0cmllLGkBIGFzIHRoaXMgaXMgY2xlYXJlZCBpbiBgb25fZmluYWxpemVgIGFuZCBGcmFtZSBvcHRpbWl6ZXMgYE5vbmVgIHZhbHVlcyB0byBiZSBlbXB0eSB2YWx1ZXMuAHEBIEFzIGEgYGJvb2xgLCBgc2V0KGZhbHNlKWAgYW5kIGByZW1vdmUoKWAgYm90aCBsZWFkIHRvIHRoZSBuZXh0IGBnZXQoKWAgYmVpbmcgZmFsc2UsIGJ1dCBvbmV1ASBvZiB0aGVtIHdyaXRlcyB0byB0aGUgdHJpZSBhbmQgb25lIGRvZXMgbm90LiBUaGlzIGNvbmZ1c2lvbiBtYWtlcyBgT3B0aW9uPCgpPmAgbW9yZSBzdWl0YWJsZZAgZm9yIHRoZSBzZW1hbnRpY3Mgb2YgdGhpcyB2YXJpYWJsZS5YQnVmZmVyZWRTZXNzaW9uQ2hhbmdlcwEAeQsEABxZASBCdWZmZXJlZCBzZXNzaW9uIGNoYW5nZXMgYWxvbmcgd2l0aCB0aGUgYmxvY2sgbnVtYmVyIGF0IHdoaWNoIHRoZXkgc2hvdWxkIGJlIGFwcGxpZWQuAF0BIFR5cGljYWxseSB0aGlzIHdpbGwgYmUgZW1wdHkgb3Igb25lIGVsZW1lbnQgbG9uZy4gQXBhcnQgZnJvbSB0aGF0IHRoaXMgaXRlbSBuZXZlciBoaXRzNCB0aGUgc3RvcmFnZS4AaQEgSG93ZXZlciB0aGlzIGlzIGEgYFZlY2AgcmVnYXJkbGVzcyB0byBoYW5kbGUgdmFyaW91cyBlZGdlIGNhc2VzIHRoYXQgbWF5IG9jY3VyIGF0IHJ1bnRpbWXAIHVwZ3JhZGUgYm91bmRhcmllcyBvciBpZiBnb3Zlcm5hbmNlIGludGVydmVuZXMuAeUEAAAAOQAMRG1wAQxEbXAMVERvd253YXJkTWVzc2FnZVF1ZXVlcwEBBAWNAoELBAAE0CBUaGUgZG93bndhcmQgbWVzc2FnZXMgYWRkcmVzc2VkIGZvciBhIGNlcnRhaW4gcGFyYS5kRG93bndhcmRNZXNzYWdlUXVldWVIZWFkcwEBBAWNAjSAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAcJQEgQSBtYXBwaW5nIHRoYXQgc3RvcmVzIHRoZSBkb3dud2FyZCBtZXNzYWdlIHF1ZXVlIE1RQyBoZWFkIGZvciBlYWNoIHBhcmEuAJAgRWFjaCBsaW5rIGluIHRoaXMgY2hhaW4gaGFzIGEgZm9ybTp4IGAocHJldl9oZWFkLCBCLCBIKE0pKWAsIHdoZXJl6CAtIGBwcmV2X2hlYWRgOiBpcyB0aGUgcHJldmlvdXMgaGVhZCBoYXNoIG9yIHplcm8gaWYgbm9uZS4hASAtIGBCYDogaXMgdGhlIHJlbGF5LWNoYWluIGJsb2NrIG51bWJlciBpbiB3aGljaCBhIG1lc3NhZ2Ugd2FzIGFwcGVuZGVkLtQgLSBgSChNKWA6IGlzIHRoZSBoYXNoIG9mIHRoZSBtZXNzYWdlIGJlaW5nIGFwcGVuZGVkLkREZWxpdmVyeUZlZUZhY3RvcgEBBAWNAqUGQAAAZKeztuANAAAAAAAAAAAExCBUaGUgZmFjdG9yIHRvIG11bHRpcGx5IHRoZSBiYXNlIGRlbGl2ZXJ5IGZlZSBieS4AAAAAOgAQSHJtcAEQSHJtcDBcSHJtcE9wZW5DaGFubmVsUmVxdWVzdHMAAQQF7QSJCwQAGLwgVGhlIHNldCBvZiBwZW5kaW5nIEhSTVAgb3BlbiBjaGFubmVsIHJlcXVlc3RzLgDAIFRoZSBzZXQgaXMgYWNjb21wYW5pZWQgYnkgYSBsaXN0IGZvciBpdGVyYXRpb24uACwgSW52YXJpYW50Oj0BIC0gVGhlcmUgYXJlIG5vIGNoYW5uZWxzIHRoYXQgZXhpc3RzIGluIGxpc3QgYnV0IG5vdCBpbiB0aGUgc2V0IGFuZCB2aWNlIHZlcnNhLmxIcm1wT3BlbkNoYW5uZWxSZXF1ZXN0c0xpc3QBAI0LBAAAbEhybXBPcGVuQ2hhbm5lbFJlcXVlc3RDb3VudAEBBAWNAhAQAAAAAAxlASBUaGlzIG1hcHBpbmcgdHJhY2tzIGhvdyBtYW55IG9wZW4gY2hhbm5lbCByZXF1ZXN0cyBhcmUgaW5pdGlhdGVkIGJ5IGEgZ2l2ZW4gc2VuZGVyIHBhcmEuWQEgSW52YXJpYW50OiBgSHJtcE9wZW5DaGFubmVsUmVxdWVzdHNgIHNob3VsZCBjb250YWluIHRoZSBzYW1lIG51bWJlciBvZiBpdGVtcyB0aGF0IGhhcwUBIGAoWCwgXylgIGFzIHRoZSBudW1iZXIgb2YgYEhybXBPcGVuQ2hhbm5lbFJlcXVlc3RDb3VudGAgZm9yIGBYYC58SHJtcEFjY2VwdGVkQ2hhbm5lbFJlcXVlc3RDb3VudAEBBAWNAhAQAAAAAAxxASBUaGlzIG1hcHBpbmcgdHJhY2tzIGhvdyBtYW55IG9wZW4gY2hhbm5lbCByZXF1ZXN0cyB3ZXJlIGFjY2VwdGVkIGJ5IGEgZ2l2ZW4gcmVjaXBpZW50IHBhcmEubQEgSW52YXJpYW50OiBgSHJtcE9wZW5DaGFubmVsUmVxdWVzdHNgIHNob3VsZCBjb250YWluIHRoZSBzYW1lIG51bWJlciBvZiBpdGVtcyBgKF8sIFgpYCB3aXRoVQEgYGNvbmZpcm1lZGAgc2V0IHRvIHRydWUsIGFzIHRoZSBudW1iZXIgb2YgYEhybXBBY2NlcHRlZENoYW5uZWxSZXF1ZXN0Q291bnRgIGZvciBgWGAuYEhybXBDbG9zZUNoYW5uZWxSZXF1ZXN0cwABBAXtBIwEABxxASBBIHNldCBvZiBwZW5kaW5nIEhSTVAgY2xvc2UgY2hhbm5lbCByZXF1ZXN0cyB0aGF0IGFyZSBnb2luZyB0byBiZSBjbG9zZWQgZHVyaW5nIHRoZSBzZXNzaW9uIQEgY2hhbmdlLiBVc2VkIGZvciBjaGVja2luZyBpZiBhIGdpdmVuIGNoYW5uZWwgaXMgcmVnaXN0ZXJlZCBmb3IgY2xvc3VyZS4AwCBUaGUgc2V0IGlzIGFjY29tcGFuaWVkIGJ5IGEgbGlzdCBmb3IgaXRlcmF0aW9uLgAsIEludmFyaWFudDo9ASAtIFRoZXJlIGFyZSBubyBjaGFubmVscyB0aGF0IGV4aXN0cyBpbiBsaXN0IGJ1dCBub3QgaW4gdGhlIHNldCBhbmQgdmljZSB2ZXJzYS5wSHJtcENsb3NlQ2hhbm5lbFJlcXVlc3RzTGlzdAEAjQsEAAA4SHJtcFdhdGVybWFya3MAAQQFjQIQBAAQuCBUaGUgSFJNUCB3YXRlcm1hcmsgYXNzb2NpYXRlZCB3aXRoIGVhY2ggcGFyYS4sIEludmFyaWFudDpVASAtIGVhY2ggcGFyYSBgUGAgdXNlZCBoZXJlIGFzIGEga2V5IHNob3VsZCBzYXRpc2Z5IGBQYXJhczo6aXNfdmFsaWRfcGFyYShQKWAgd2l0aGluIGEsICAgc2Vzc2lvbi4wSHJtcENoYW5uZWxzAAEEBe0EkQsEAAy0IEhSTVAgY2hhbm5lbCBkYXRhIGFzc29jaWF0ZWQgd2l0aCBlYWNoIHBhcmEuLCBJbnZhcmlhbnQ6dQEgLSBlYWNoIHBhcnRpY2lwYW50IGluIHRoZSBjaGFubmVsIHNob3VsZCBzYXRpc2Z5IGBQYXJhczo6aXNfdmFsaWRfcGFyYShQKWAgd2l0aGluIGEgc2Vzc2lvbi5gSHJtcEluZ3Jlc3NDaGFubmVsc0luZGV4AQEEBY0CUQsEADRxASBJbmdyZXNzL2VncmVzcyBpbmRleGVzIGFsbG93IHRvIGZpbmQgYWxsIHRoZSBzZW5kZXJzIGFuZCByZWNlaXZlcnMgZ2l2ZW4gdGhlIG9wcG9zaXRlIHNpZGUuFCBJLmUuACEBIChhKSBpbmdyZXNzIGluZGV4IGFsbG93cyB0byBmaW5kIGFsbCB0aGUgc2VuZGVycyBmb3IgYSBnaXZlbiByZWNpcGllbnQuHQEgKGIpIGVncmVzcyBpbmRleCBhbGxvd3MgdG8gZmluZCBhbGwgdGhlIHJlY2lwaWVudHMgZm9yIGEgZ2l2ZW4gc2VuZGVyLgAwIEludmFyaWFudHM6UQEgLSBmb3IgZWFjaCBpbmdyZXNzIGluZGV4IGVudHJ5IGZvciBgUGAgZWFjaCBpdGVtIGBJYCBpbiB0aGUgaW5kZXggc2hvdWxkIHByZXNlbnQgaW54ICAgYEhybXBDaGFubmVsc2AgYXMgYChJLCBQKWAuTQEgLSBmb3IgZWFjaCBlZ3Jlc3MgaW5kZXggZW50cnkgZm9yIGBQYCBlYWNoIGl0ZW0gYEVgIGluIHRoZSBpbmRleCBzaG91bGQgcHJlc2VudCBpbnggICBgSHJtcENoYW5uZWxzYCBhcyBgKFAsIEUpYC4BASAtIHRoZXJlIHNob3VsZCBiZSBubyBvdGhlciBkYW5nbGluZyBjaGFubmVscyBpbiBgSHJtcENoYW5uZWxzYC5oIC0gdGhlIHZlY3RvcnMgYXJlIHNvcnRlZC5cSHJtcEVncmVzc0NoYW5uZWxzSW5kZXgBAQQFjQJRCwQAAExIcm1wQ2hhbm5lbENvbnRlbnRzAQEEBe0ElQsEAAisIFN0b3JhZ2UgZm9yIHRoZSBtZXNzYWdlcyBmb3IgZWFjaCBjaGFubmVsLmUBIEludmFyaWFudDogY2Fubm90IGJlIG5vbi1lbXB0eSBpZiB0aGUgY29ycmVzcG9uZGluZyBjaGFubmVsIGluIGBIcm1wQ2hhbm5lbHNgIGlzIGBOb25lYC5ISHJtcENoYW5uZWxEaWdlc3RzAQEEBY0CnQsEABhpASBNYWludGFpbnMgYSBtYXBwaW5nIHRoYXQgY2FuIGJlIHVzZWQgdG8gYW5zd2VyIHRoZSBxdWVzdGlvbjogV2hhdCBwYXJhcyBzZW50IGEgbWVzc2FnZSBhdOQgdGhlIGdpdmVuIGJsb2NrIG51bWJlciBmb3IgYSBnaXZlbiByZWNlaXZlci4gSW52YXJpYW50czqoIC0gVGhlIGlubmVyIGBWZWM8UGFyYUlkPmAgaXMgbmV2ZXIgZW1wdHku6CAtIFRoZSBpbm5lciBgVmVjPFBhcmFJZD5gIGNhbm5vdCBzdG9yZSB0d28gc2FtZSBgUGFyYUlkYC5tASAtIFRoZSBvdXRlciB2ZWN0b3IgaXMgc29ydGVkIGFzY2VuZGluZyBieSBibG9jayBudW1iZXIgYW5kIGNhbm5vdCBzdG9yZSB0d28gaXRlbXMgd2l0aCB0aGVUICAgc2FtZSBibG9jayBudW1iZXIuAekEAUUHAAGlCzwAPFBhcmFTZXNzaW9uSW5mbwE8UGFyYVNlc3Npb25JbmZvFFBBc3NpZ25tZW50S2V5c1Vuc2FmZQEAqQsEAAykIEFzc2lnbm1lbnQga2V5cyBmb3IgdGhlIGN1cnJlbnQgc2Vzc2lvbi5tASBOb3RlIHRoYXQgdGhpcyBBUEkgaXMgcHJpdmF0ZSBkdWUgdG8gaXQgYmVpbmcgcHJvbmUgdG8gJ29mZi1ieS1vbmUnIGF0IHNlc3Npb24gYm91bmRhcmllcy6sIFdoZW4gaW4gZG91YnQsIHVzZSBgU2Vzc2lvbnNgIEFQSSBpbnN0ZWFkLlRFYXJsaWVzdFN0b3JlZFNlc3Npb24BABAQAAAAAAQBASBUaGUgZWFybGllc3Qgc2Vzc2lvbiBmb3Igd2hpY2ggcHJldmlvdXMgc2Vzc2lvbiBpbmZvIGlzIHN0b3JlZC4gU2Vzc2lvbnMAAQQGEK0LBAAMpCBTZXNzaW9uIGluZm9ybWF0aW9uIGluIGEgcm9sbGluZyB3aW5kb3cuNQEgU2hvdWxkIGhhdmUgYW4gZW50cnkgaW4gcmFuZ2UgYEVhcmxpZXN0U3RvcmVkU2Vzc2lvbi4uPUN1cnJlbnRTZXNzaW9uSW5kZXhgLnUBIERvZXMgbm90IGhhdmUgYW55IGVudHJpZXMgYmVmb3JlIHRoZSBzZXNzaW9uIGluZGV4IGluIHRoZSBmaXJzdCBzZXNzaW9uIGNoYW5nZSBub3RpZmljYXRpb24uLEFjY291bnRLZXlzAAEEBhDRAQQABHEBIFRoZSB2YWxpZGF0b3IgYWNjb3VudCBrZXlzIG9mIHRoZSB2YWxpZGF0b3JzIGFjdGl2ZWx5IHBhcnRpY2lwYXRpbmcgaW4gcGFyYWNoYWluIGNvbnNlbnN1cy5UU2Vzc2lvbkV4ZWN1dG9yUGFyYW1zAAEEBhAtBAQABMQgRXhlY3V0b3IgcGFyYW1ldGVyIHNldCBmb3IgYSBnaXZlbiBzZXNzaW9uIGluZGV4AAAAAD0ANFBhcmFzRGlzcHV0ZXMBNFBhcmFzRGlzcHV0ZXMURExhc3RQcnVuZWRTZXNzaW9uAAAQBAAIAQEgVGhlIGxhc3QgcHJ1bmVkIHNlc3Npb24sIGlmIGFueS4gQWxsIGRhdGEgc3RvcmVkIGJ5IHRoaXMgbW9kdWxlVCByZWZlcmVuY2VzIHNlc3Npb25zLiBEaXNwdXRlcwABCAUCuQu9CwQABAUBIEFsbCBvbmdvaW5nIG9yIGNvbmNsdWRlZCBkaXNwdXRlcyBmb3IgdGhlIGxhc3Qgc2V2ZXJhbCBzZXNzaW9ucy5EQmFja2Vyc09uRGlzcHV0ZXMAAQgFArkLwQsEAAicIEJhY2tpbmcgdm90ZXMgc3RvcmVkIGZvciBlYWNoIGRpc3B1dGUujCBUaGlzIHN0b3JhZ2UgaXMgdXNlZCBmb3Igc2xhc2hpbmcuIEluY2x1ZGVkAAEIBQK5CxAEAAhFASBBbGwgaW5jbHVkZWQgYmxvY2tzIG9uIHRoZSBjaGFpbiwgYXMgd2VsbCBhcyB0aGUgYmxvY2sgbnVtYmVyIGluIHRoaXMgY2hhaW4gdGhhdFkBIHNob3VsZCBiZSByZXZlcnRlZCBiYWNrIHRvIGlmIHRoZSBjYW5kaWRhdGUgaXMgZGlzcHV0ZWQgYW5kIGRldGVybWluZWQgdG8gYmUgaW52YWxpZC4YRnJvemVuAQBhAgQAEBEBIFdoZXRoZXIgdGhlIGNoYWluIGlzIGZyb3plbi4gU3RhcnRzIGFzIGBOb25lYC4gV2hlbiB0aGlzIGlzIGBTb21lYCw1ASB0aGUgY2hhaW4gd2lsbCBub3QgYWNjZXB0IGFueSBuZXcgcGFyYWNoYWluIGJsb2NrcyBmb3IgYmFja2luZyBvciBpbmNsdXNpb24sCQEgYW5kIGl0cyB2YWx1ZSBpbmRpY2F0ZXMgdGhlIGxhc3QgdmFsaWQgYmxvY2sgbnVtYmVyIGluIHRoZSBjaGFpbi74IEl0IGNhbiBvbmx5IGJlIHNldCBiYWNrIHRvIGBOb25lYCBieSBnb3Zlcm5hbmNlIGludGVydmVudGlvbi4B8QQBSQcAAcULPgA0UGFyYXNTbGFzaGluZwE0UGFyYXNTbGFzaGluZwhAVW5hcHBsaWVkU2xhc2hlcwABCAUCuQvJCwQABJAgVmFsaWRhdG9ycyBwZW5kaW5nIGRpc3B1dGUgc2xhc2hlcy5IVmFsaWRhdG9yU2V0Q291bnRzAAEEBRAQBAAEhCBgVmFsaWRhdG9yU2V0Q291bnRgIHBlciBzZXNzaW9uLgH1BAAAAdkLPwAgT25EZW1hbmQBIE9uRGVtYW5kFDhQYXJhSWRBZmZpbml0eQABBAWNAt0LBAAMcQEgTWFwcyBhIGBQYXJhSWRgIHRvIGBDb3JlSW5kZXhgIGFuZCBrZWVwcyB0cmFjayBvZiBob3cgbWFueSBhc3NpZ25tZW50cyB0aGUgc2NoZWR1bGVyIGhhcyBpbl0BIGl0J3MgbG9va2FoZWFkLiBLZWVwaW5nIHRyYWNrIG9mIHRoaXMgYWZmaW5pdHkgcHJldmVudHMgcGFyYWxsZWwgZXhlY3V0aW9uIG9mIHRoZSBzYW1lnCBgUGFyYUlkYCBvbiB0d28gb3IgbW9yZSBgQ29yZUluZGV4YGVzLixRdWV1ZVN0YXR1cwEA4QtkAABkp7O24A0AAAAAAAAAAAAAAAAAAAAAAATcIE92ZXJhbGwgc3RhdHVzIG9mIHF1ZXVlIChib3RoIGZyZWUgKyBhZmZpbml0eSBlbnRyaWVzKSxGcmVlRW50cmllcwEA9QsEAARhASBQcmlvcml0eSBxdWV1ZSBmb3IgYWxsIG9yZGVycyB3aGljaCBkb24ndCB5ZXQgKG9yIG5vdCBhbnkgbW9yZSkgaGF2ZSBhbnkgY29yZSBhZmZpbml0eS48QWZmaW5pdHlFbnRyaWVzAQEEBTkH9QsEAARJASBRdWV1ZSBlbnRyaWVzIHRoYXQgYXJlIGN1cnJlbnRseSBib3VuZCB0byBhIHBhcnRpY3VsYXIgY29yZSBkdWUgdG8gY29yZSBhZmZpbml0eS4cUmV2ZW51ZQEAAQwEAAT8IEtlZXBzIHRyYWNrIG9mIGFjY3VtdWxhdGVkIHJldmVudWUgZnJvbSBvbiBkZW1hbmQgb3JkZXIgc2FsZXMuAQUFAVUHDExUcmFmZmljRGVmYXVsdFZhbHVlpQZAAABkp7O24A0AAAAAAAAAAATMIFRoZSBkZWZhdWx0IHZhbHVlIGZvciB0aGUgc3BvdCB0cmFmZmljIG11bHRpcGxpZXIuUE1heEhpc3RvcmljYWxSZXZlbnVlEBCgAAAACNQgVGhlIG1heGltdW0gbnVtYmVyIG9mIGJsb2NrcyBzb21lIGhpc3RvcmljYWwgcmV2ZW51ZWAgaW5mb3JtYXRpb24gc3RvcmVkIGZvci4gUGFsbGV0SWRNCSBweS9vbmRtZAS0IElkZW50aWZpZXIgZm9yIHRoZSBpbnRlcm5hbCByZXZlbnVlIGJhbGFuY2UuAQkMQABoQ29yZXRpbWVBc3NpZ25tZW50UHJvdmlkZXIBaENvcmV0aW1lQXNzaWdubWVudFByb3ZpZGVyCDRDb3JlU2NoZWR1bGVzAAEEBA0MEQwEABBsIFNjaGVkdWxlZCBhc3NpZ25tZW50IHNldHMuAG0BIEFzc2lnbm1lbnRzIGFzIG9mIHRoZSBnaXZlbiBibG9jayBudW1iZXIuIFRoZXkgd2lsbCBnbyBpbnRvIHN0YXRlIG9uY2UgdGhlIGJsb2NrIG51bWJlciBpc9AgcmVhY2hlZCAoYW5kIHJlcGxhY2Ugd2hhdGV2ZXIgd2FzIGluIHRoZXJlIGJlZm9yZSkuPENvcmVEZXNjcmlwdG9ycwEBBAQ5BxUMCAAAEKAgQXNzaWdubWVudHMgd2hpY2ggYXJlIGN1cnJlbnRseSBhY3RpdmUuAGkBIFRoZXkgd2lsbCBiZSBwaWNrZWQgZnJvbSBgUGVuZGluZ0Fzc2lnbm1lbnRzYCBvbmNlIHdlIHJlYWNoIHRoZSBzY2hlZHVsZWQgYmxvY2sgbnVtYmVyIGluWCBgUGVuZGluZ0Fzc2lnbm1lbnRzYC4AAAABNQxBACRSZWdpc3RyYXIBJFJlZ2lzdHJhcgwsUGVuZGluZ1N3YXAAAQQFjQKNAgQABGQgUGVuZGluZyBzd2FwIG9wZXJhdGlvbnMuFFBhcmFzAAEEBY0COQwEABAFASBBbW91bnQgaGVsZCBvbiBkZXBvc2l0IGZvciBlYWNoIHBhcmEgYW5kIHRoZSBvcmlnaW5hbCBkZXBvc2l0b3IuAHEBIFRoZSBnaXZlbiBhY2NvdW50IElEIGlzIHJlc3BvbnNpYmxlIGZvciByZWdpc3RlcmluZyB0aGUgY29kZSBhbmQgaW5pdGlhbCBoZWFkIGRhdGEsIGJ1dCBtYXlVASBvbmx5IGRvIHNvIGlmIGl0IGlzbid0IHlldCByZWdpc3RlcmVkLiAoQWZ0ZXIgdGhhdCwgaXQncyB1cCB0byBnb3Zlcm5hbmNlIHRvIGRvIHNvLik4TmV4dEZyZWVQYXJhSWQBAI0CEAAAAAAEYCBUaGUgbmV4dCBmcmVlIGBQYXJhSWRgLgEJBQFZBwgsUGFyYURlcG9zaXQYQAAQpdToAAAAAAAAAAAAAAAI1CBUaGUgZGVwb3NpdCB0byBiZSBwYWlkIHRvIHJ1biBhIG9uLWRlbWFuZCBwYXJhY2hhaW4uPQEgVGhpcyBzaG91bGQgaW5jbHVkZSB0aGUgY29zdCBmb3Igc3RvcmluZyB0aGUgZ2VuZXNpcyBoZWFkIGFuZCB2YWxpZGF0aW9uIGNvZGUuSERhdGFEZXBvc2l0UGVyQnl0ZRhAgJaYAAAAAAAAAAAAAAAAAATEIFRoZSBkZXBvc2l0IHRvIGJlIHBhaWQgcGVyIGJ5dGUgc3RvcmVkIG9uIGNoYWluLgFBDEYAFFNsb3RzARRTbG90cwQYTGVhc2VzAQEEBY0CRQwEAEAVASBBbW91bnRzIGhlbGQgb24gZGVwb3NpdCBmb3IgZWFjaCAocG9zc2libHkgZnV0dXJlKSBsZWFzZWQgcGFyYWNoYWluLgBhASBUaGUgYWN0dWFsIGFtb3VudCBsb2NrZWQgb24gaXRzIGJlaGFsZiBieSBhbnkgYWNjb3VudCBhdCBhbnkgdGltZSBpcyB0aGUgbWF4aW11bSBvZiB0aGUpASBzZWNvbmQgdmFsdWVzIG9mIHRoZSBpdGVtcyBpbiB0aGlzIGxpc3Qgd2hvc2UgZmlyc3QgdmFsdWUgaXMgdGhlIGFjY291bnQuAGEBIFRoZSBmaXJzdCBpdGVtIGluIHRoZSBsaXN0IGlzIHRoZSBhbW91bnQgbG9ja2VkIGZvciB0aGUgY3VycmVudCBMZWFzZSBQZXJpb2QuIEZvbGxvd2luZ7AgaXRlbXMgYXJlIGZvciB0aGUgc3Vic2VxdWVudCBsZWFzZSBwZXJpb2RzLgBhASBUaGUgZGVmYXVsdCB2YWx1ZSAoYW4gZW1wdHkgbGlzdCkgaW1wbGllcyB0aGF0IHRoZSBwYXJhY2hhaW4gbm8gbG9uZ2VyIGV4aXN0cyAob3IgbmV2ZXK0IGV4aXN0ZWQpIGFzIGZhciBhcyB0aGlzIHBhbGxldCBpcyBjb25jZXJuZWQuAFEBIElmIGEgcGFyYWNoYWluIGRvZXNuJ3QgZXhpc3QgKnlldCogYnV0IGlzIHNjaGVkdWxlZCB0byBleGlzdCBpbiB0aGUgZnV0dXJlLCB0aGVuIGl0YQEgd2lsbCBiZSBsZWZ0LXBhZGRlZCB3aXRoIG9uZSBvciBtb3JlIGBOb25lYHMgdG8gZGVub3RlIHRoZSBmYWN0IHRoYXQgbm90aGluZyBpcyBoZWxkIG9uXQEgZGVwb3NpdCBmb3IgdGhlIG5vbi1leGlzdGVudCBjaGFpbiBjdXJyZW50bHksIGJ1dCBpcyBoZWxkIGF0IHNvbWUgcG9pbnQgaW4gdGhlIGZ1dHVyZS4A3CBJdCBpcyBpbGxlZ2FsIGZvciBhIGBOb25lYCB2YWx1ZSB0byB0cmFpbCBpbiB0aGUgbGlzdC4BDQUBXQcILExlYXNlUGVyaW9kEBDAiQEABNwgVGhlIG51bWJlciBvZiBibG9ja3Mgb3ZlciB3aGljaCBhIHNpbmdsZSBwZXJpb2QgbGFzdHMuLExlYXNlT2Zmc2V0EBAAAAAABNQgVGhlIG51bWJlciBvZiBibG9ja3MgdG8gb2Zmc2V0IGVhY2ggbGVhc2UgcGVyaW9kIGJ5LgFJDEcAIEF1Y3Rpb25zASBBdWN0aW9ucxA4QXVjdGlvbkNvdW50ZXIBABAQAAAAAASMIE51bWJlciBvZiBhdWN0aW9ucyBzdGFydGVkIHNvIGZhci4sQXVjdGlvbkluZm8AAIAEABT4IEluZm9ybWF0aW9uIHJlbGF0aW5nIHRvIHRoZSBjdXJyZW50IGF1Y3Rpb24sIGlmIHRoZXJlIGlzIG9uZS4ARQEgVGhlIGZpcnN0IGl0ZW0gaW4gdGhlIHR1cGxlIGlzIHRoZSBsZWFzZSBwZXJpb2QgaW5kZXggdGhhdCB0aGUgZmlyc3Qgb2YgdGhlIGZvdXJRASBjb250aWd1b3VzIGxlYXNlIHBlcmlvZHMgb24gYXVjdGlvbiBpcyBmb3IuIFRoZSBzZWNvbmQgaXMgdGhlIGJsb2NrIG51bWJlciB3aGVuIHRoZV0BIGF1Y3Rpb24gd2lsbCAiYmVnaW4gdG8gZW5kIiwgaS5lLiB0aGUgZmlyc3QgYmxvY2sgb2YgdGhlIEVuZGluZyBQZXJpb2Qgb2YgdGhlIGF1Y3Rpb24uPFJlc2VydmVkQW1vdW50cwABBAVNDBgEAAgxASBBbW91bnRzIGN1cnJlbnRseSByZXNlcnZlZCBpbiB0aGUgYWNjb3VudHMgb2YgdGhlIGJpZGRlcnMgY3VycmVudGx5IHdpbm5pbmc4IChzdWItKXJhbmdlcy4cV2lubmluZwABBAUQUQwEAAxhASBUaGUgd2lubmluZyBiaWRzIGZvciBlYWNoIG9mIHRoZSAxMCByYW5nZXMgYXQgZWFjaCBzYW1wbGUgaW4gdGhlIGZpbmFsIEVuZGluZyBQZXJpb2Qgb2ZJASB0aGUgY3VycmVudCBhdWN0aW9uLiBUaGUgbWFwJ3Mga2V5IGlzIHRoZSAwLWJhc2VkIGluZGV4IGludG8gdGhlIFNhbXBsZSBTaXplLiBUaGUdASBmaXJzdCBzYW1wbGUgb2YgdGhlIGVuZGluZyBwZXJpb2QgaXMgMDsgdGhlIGxhc3QgaXMgYFNhbXBsZSBTaXplIC0gMWAuAREFAWEHEDBFbmRpbmdQZXJpb2QQEEAZAQAEHQEgVGhlIG51bWJlciBvZiBibG9ja3Mgb3ZlciB3aGljaCBhbiBhdWN0aW9uIG1heSBiZSByZXRyb2FjdGl2ZWx5IGVuZGVkLjBTYW1wbGVMZW5ndGgQEBQAAAAM8CBUaGUgbGVuZ3RoIG9mIGVhY2ggc2FtcGxlIHRvIHRha2UgZHVyaW5nIHRoZSBlbmRpbmcgcGVyaW9kLgDUIGBFbmRpbmdQZXJpb2RgIC8gYFNhbXBsZUxlbmd0aGAgPSBUb3RhbCAjIG9mIFNhbXBsZXM4U2xvdFJhbmdlQ291bnQQECQAAAAATExlYXNlUGVyaW9kc1BlclNsb3QQEAgAAAAAAV0MSAAkQ3Jvd2Rsb2FuASRDcm93ZGxvYW4QFEZ1bmRzAAEEBY0CYQwEAARoIEluZm8gb24gYWxsIG9mIHRoZSBmdW5kcy4gTmV3UmFpc2UBAFELBAAIVQEgVGhlIGZ1bmRzIHRoYXQgaGF2ZSBoYWQgYWRkaXRpb25hbCBjb250cmlidXRpb25zIGR1cmluZyB0aGUgbGFzdCBibG9jay4gVGhpcyBpcyB1c2VkFQEgaW4gb3JkZXIgdG8gZGV0ZXJtaW5lIHdoaWNoIGZ1bmRzIHNob3VsZCBzdWJtaXQgbmV3IG9yIHVwZGF0ZWQgYmlkcy4wRW5kaW5nc0NvdW50AQAQEAAAAAAEKQEgVGhlIG51bWJlciBvZiBhdWN0aW9ucyB0aGF0IGhhdmUgZW50ZXJlZCBpbnRvIHRoZWlyIGVuZGluZyBwZXJpb2Qgc28gZmFyLjROZXh0RnVuZEluZGV4AQAQEAAAAAAEqCBUcmFja2VyIGZvciB0aGUgbmV4dCBhdmFpbGFibGUgZnVuZCBpbmRleAEZBQFlBwwgUGFsbGV0SWRNCSBweS9jZnVuZAgNASBgUGFsbGV0SWRgIGZvciB0aGUgY3Jvd2Rsb2FuIHBhbGxldC4gQW4gYXBwcm9wcmlhdGUgdmFsdWUgY291bGQgYmVkIGBQYWxsZXRJZCgqYiJweS9jZnVuZCIpYDxNaW5Db250cmlidXRpb24YQAB0O6QLAAAAAAAAAAAAAAAIYQEgVGhlIG1pbmltdW0gYW1vdW50IHRoYXQgbWF5IGJlIGNvbnRyaWJ1dGVkIGludG8gYSBjcm93ZGxvYW4uIFNob3VsZCBhbG1vc3QgY2VydGFpbmx5IGJlfCBhdCBsZWFzdCBgRXhpc3RlbnRpYWxEZXBvc2l0YC48UmVtb3ZlS2V5c0xpbWl0EBDoAwAABOQgTWF4IG51bWJlciBvZiBzdG9yYWdlIGtleXMgdG8gcmVtb3ZlIHBlciBleHRyaW5zaWMgY2FsbC4BaQxJACBDb3JldGltZQABLQUBaQcIIEJyb2tlcklkEBDtAwAABIggVGhlIFBhcmFJZCBvZiB0aGUgY29yZXRpbWUgY2hhaW4uREJyb2tlclBvdExvY2F0aW9uEQGMAQEAbW9kbHB5L2Jyb2tlAAAAAAAAAAAAAAAAAAAAAAAAAAAEhCBUaGUgY29yZXRpbWUgY2hhaW4gcG90IGxvY2F0aW9uLgFtDEoASFN0YXRlVHJpZU1pZ3JhdGlvbgFIU3RhdGVUcmllTWlncmF0aW9uDEBNaWdyYXRpb25Qcm9jZXNzAQBNBTgAAAAAAAAAAAAAAAAAABBQIE1pZ3JhdGlvbiBwcm9ncmVzcy4AXQEgVGhpcyBzdG9yZXMgdGhlIHNuYXBzaG90IG9mIHRoZSBsYXN0IG1pZ3JhdGVkIGtleXMuIEl0IGNhbiBiZSBzZXQgaW50byBtb3Rpb24gYW5kIG1vdmXUIGZvcndhcmQgYnkgYW55IG9mIHRoZSBtZWFucyBwcm92aWRlZCBieSB0aGlzIHBhbGxldC4oQXV0b0xpbWl0cwEARQUEAAzUIFRoZSBsaW1pdHMgdGhhdCBhcmUgaW1wb3NlZCBvbiBhdXRvbWF0aWMgbWlncmF0aW9ucy4A1CBJZiBzZXQgdG8gTm9uZSwgdGhlbiBubyBhdXRvbWF0aWMgbWlncmF0aW9uIGhhcHBlbnMuYFNpZ25lZE1pZ3JhdGlvbk1heExpbWl0cwAASQUEAAzgIFRoZSBtYXhpbXVtIGxpbWl0cyB0aGF0IHRoZSBzaWduZWQgbWlncmF0aW9uIGNvdWxkIHVzZS4AtCBJZiBub3Qgc2V0LCBubyBzaWduZWQgc3VibWlzc2lvbiBpcyBhbGxvd2VkLgFBBQFtBwQkTWF4S2V5TGVuEBAAAgAAVLQgTWF4aW1hbCBudW1iZXIgb2YgYnl0ZXMgdGhhdCBhIGtleSBjYW4gaGF2ZS4AsCBGUkFNRSBpdHNlbGYgZG9lcyBub3QgbGltaXQgdGhlIGtleSBsZW5ndGguAQEgVGhlIGNvbmNyZXRlIHZhbHVlIG11c3QgdGhlcmVmb3JlIGRlcGVuZCBvbiB5b3VyIHN0b3JhZ2UgdXNhZ2UuWQEgQSBbYGZyYW1lX3N1cHBvcnQ6OnN0b3JhZ2U6OlN0b3JhZ2VOTWFwYF0gZm9yIGV4YW1wbGUgY2FuIGhhdmUgYW4gYXJiaXRyYXJ5IG51bWJlciBvZkUBIGtleXMgd2hpY2ggYXJlIHRoZW4gaGFzaGVkIGFuZCBjb25jYXRlbmF0ZWQsIHJlc3VsdGluZyBpbiBhcmJpdHJhcmlseSBsb25nIGtleXMuAEEBIFVzZSB0aGUgKnN0YXRlIG1pZ3JhdGlvbiBSUEMqIHRvIHJldHJpZXZlIHRoZSBsZW5ndGggb2YgdGhlIGxvbmdlc3Qga2V5IGluIHlvdXIBASBzdG9yYWdlOiA8aHR0cHM6Ly9naXRodWIuY29tL3Bhcml0eXRlY2gvc3Vic3RyYXRlL2lzc3Vlcy8xMTY0Mj4AKQEgVGhlIG1pZ3JhdGlvbiB3aWxsIGhhbHQgd2l0aCBhIGBIYWx0ZWRgIGV2ZW50IGlmIHRoaXMgdmFsdWUgaXMgdG9vIHNtYWxsLkkBIFNpbmNlIHRoZXJlIGlzIG5vIHJlYWwgcGVuYWx0eSBmcm9tIG92ZXItZXN0aW1hdGluZywgaXQgaXMgYWR2aXNlZCB0byB1c2UgYSBsYXJnZYAgdmFsdWUuIFRoZSBkZWZhdWx0IGlzIDUxMiBieXRlLgCAIFNvbWUga2V5IGxlbmd0aHMgZm9yIHJlZmVyZW5jZTrQIC0gW2BmcmFtZV9zdXBwb3J0OjpzdG9yYWdlOjpTdG9yYWdlVmFsdWVgXTogMzIgYnl0ZcggLSBbYGZyYW1lX3N1cHBvcnQ6OnN0b3JhZ2U6OlN0b3JhZ2VNYXBgXTogNjQgYnl0ZeAgLSBbYGZyYW1lX3N1cHBvcnQ6OnN0b3JhZ2U6OlN0b3JhZ2VEb3VibGVNYXBgXTogOTYgYnl0ZQBIIEZvciBtb3JlIGluZm8gc2VlSQEgPGh0dHBzOi8vd3d3LnNoYXdudGFicml6aS5jb20vYmxvZy9zdWJzdHJhdGUvcXVlcnlpbmctc3Vic3RyYXRlLXN0b3JhZ2UtdmlhLXJwYy8+AXUHYgAkWGNtUGFsbGV0ASRYY21QYWxsZXQ4MFF1ZXJ5Q291bnRlcgEAMCAAAAAAAAAAAASIIFRoZSBsYXRlc3QgYXZhaWxhYmxlIHF1ZXJ5IGluZGV4LhxRdWVyaWVzAAEEAjBxDAQABFQgVGhlIG9uZ29pbmcgcXVlcmllcy4oQXNzZXRUcmFwcwEBBAY0EBAAAAAAEGggVGhlIGV4aXN0aW5nIGFzc2V0IHRyYXBzLgBhASBLZXkgaXMgdGhlIGJsYWtlMiAyNTYgaGFzaCBvZiAob3JpZ2luLCB2ZXJzaW9uZWQgYEFzc2V0c2ApIHBhaXIuIFZhbHVlIGlzIHRoZSBudW1iZXIgb2YdASB0aW1lcyB0aGlzIHBhaXIgaGFzIGJlZW4gdHJhcHBlZCAodXN1YWxseSBqdXN0IDEgaWYgaXQgZXhpc3RzIGF0IGFsbCkuOFNhZmVYY21WZXJzaW9uAAAQBAAIYQEgRGVmYXVsdCB2ZXJzaW9uIHRvIGVuY29kZSBYQ00gd2hlbiBsYXRlc3QgdmVyc2lvbiBvZiBkZXN0aW5hdGlvbiBpcyB1bmtub3duLiBJZiBgTm9uZWAsPQEgdGhlbiB0aGUgZGVzdGluYXRpb25zIHdob3NlIFhDTSB2ZXJzaW9uIGlzIHVua25vd24gYXJlIGNvbnNpZGVyZWQgdW5yZWFjaGFibGUuQFN1cHBvcnRlZFZlcnNpb24AAQgFAoUMEAQABPAgVGhlIExhdGVzdCB2ZXJzaW9ucyB0aGF0IHdlIGtub3cgdmFyaW91cyBsb2NhdGlvbnMgc3VwcG9ydC5AVmVyc2lvbk5vdGlmaWVycwABCAUChQwwBAAEBQEgQWxsIGxvY2F0aW9ucyB0aGF0IHdlIGhhdmUgcmVxdWVzdGVkIHZlcnNpb24gbm90aWZpY2F0aW9ucyBmcm9tLlBWZXJzaW9uTm90aWZ5VGFyZ2V0cwABCAUChQyJDAQACHEBIFRoZSB0YXJnZXQgbG9jYXRpb25zIHRoYXQgYXJlIHN1YnNjcmliZWQgdG8gb3VyIHZlcnNpb24gY2hhbmdlcywgYXMgd2VsbCBhcyB0aGUgbW9zdCByZWNlbnSUIG9mIG91ciB2ZXJzaW9ucyB3ZSBpbmZvcm1lZCB0aGVtIG9mLlRWZXJzaW9uRGlzY292ZXJ5UXVldWUBAI0MBAAMZQEgRGVzdGluYXRpb25zIHdob3NlIGxhdGVzdCBYQ00gdmVyc2lvbiB3ZSB3b3VsZCBsaWtlIHRvIGtub3cuIER1cGxpY2F0ZXMgbm90IGFsbG93ZWQsIGFuZHEBIHRoZSBgdTMyYCBjb3VudGVyIGlzIHRoZSBudW1iZXIgb2YgdGltZXMgdGhhdCBhIHNlbmQgdG8gdGhlIGRlc3RpbmF0aW9uIGhhcyBiZWVuIGF0dGVtcHRlZCyMIHdoaWNoIGlzIHVzZWQgYXMgYSBwcmlvcml0aXphdGlvbi5AQ3VycmVudE1pZ3JhdGlvbgAAmQwEAAScIFRoZSBjdXJyZW50IG1pZ3JhdGlvbidzIHN0YWdlLCBpZiBhbnkuVFJlbW90ZUxvY2tlZEZ1bmdpYmxlcwABDAUCAqEMpQwEAATwIEZ1bmdpYmxlIGFzc2V0cyB3aGljaCB3ZSBrbm93IGFyZSBsb2NrZWQgb24gYSByZW1vdGUgY2hhaW4uPExvY2tlZEZ1bmdpYmxlcwABBAIAtQwEAATgIEZ1bmdpYmxlIGFzc2V0cyB3aGljaCB3ZSBrbm93IGFyZSBsb2NrZWQgb24gdGhpcyBjaGFpbi5UWGNtRXhlY3V0aW9uU3VzcGVuZGVkAQAgBAAEtCBHbG9iYWwgc3VzcGVuc2lvbiBzdGF0ZSBvZiB0aGUgWENNIGV4ZWN1dG9yLjxTaG91bGRSZWNvcmRYY20BACAEABxZASBXaGV0aGVyIG9yIG5vdCBpbmNvbWluZyBYQ01zIChib3RoIGV4ZWN1dGVkIGxvY2FsbHkgYW5kIHJlY2VpdmVkKSBzaG91bGQgYmUgcmVjb3JkZWQuxCBPbmx5IG9uZSBYQ00gcHJvZ3JhbSB3aWxsIGJlIHJlY29yZGVkIGF0IGEgdGltZS4pASBUaGlzIGlzIG1lYW50IHRvIGJlIHVzZWQgaW4gcnVudGltZSBBUElzLCBhbmQgaXQncyBhZHZpc2VkIGl0IHN0YXlzIGZhbHNlDQEgZm9yIGFsbCBvdGhlciB1c2UgY2FzZXMsIHNvIGFzIHRvIG5vdCBkZWdyYWRlIHJlZ3VsYXIgcGVyZm9ybWFuY2UuAFkBIE9ubHkgcmVsZXZhbnQgaWYgdGhpcyBwYWxsZXQgaXMgYmVpbmcgdXNlZCBhcyB0aGUgW2B4Y21fZXhlY3V0b3I6OnRyYWl0czo6UmVjb3JkWGNtYF3IIGltcGxlbWVudGF0aW9uIGluIHRoZSBYQ00gZXhlY3V0b3IgY29uZmlndXJhdGlvbi4sUmVjb3JkZWRYY20AABUGBAAYSQEgSWYgW2BTaG91bGRSZWNvcmRYY21gXSBpcyBzZXQgdG8gdHJ1ZSwgdGhlbiB0aGUgbGFzdCBYQ00gcHJvZ3JhbSBleGVjdXRlZCBsb2NhbGx5VCB3aWxsIGJlIHN0b3JlZCBoZXJlLikBIFJ1bnRpbWUgQVBJcyBjYW4gZmV0Y2ggdGhlIFhDTSB0aGF0IHdhcyBleGVjdXRlZCBieSBhY2Nlc3NpbmcgdGhpcyB2YWx1ZS4AWQEgT25seSByZWxldmFudCBpZiB0aGlzIHBhbGxldCBpcyBiZWluZyB1c2VkIGFzIHRoZSBbYHhjbV9leGVjdXRvcjo6dHJhaXRzOjpSZWNvcmRYY21gXcggaW1wbGVtZW50YXRpb24gaW4gdGhlIFhDTSBleGVjdXRvciBjb25maWd1cmF0aW9uLgFZBQF5BwABwQxjADBNZXNzYWdlUXVldWUBME1lc3NhZ2VRdWV1ZQwwQm9va1N0YXRlRm9yAQEEBZkGxQx0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEzCBUaGUgaW5kZXggb2YgdGhlIGZpcnN0IGFuZCBsYXN0IChub24tZW1wdHkpIHBhZ2VzLixTZXJ2aWNlSGVhZAAAmQYEAAS8IFRoZSBvcmlnaW4gYXQgd2hpY2ggd2Ugc2hvdWxkIGJlZ2luIHNlcnZpY2luZy4UUGFnZXMAAQgFBdEM1QwEAASIIFRoZSBtYXAgb2YgcGFnZSBpbmRpY2VzIHRvIHBhZ2VzLgGVBgGBBxAgSGVhcFNpemUQEAAAAQAUPQEgVGhlIHNpemUgb2YgdGhlIHBhZ2U7IHRoaXMgaW1wbGllcyB0aGUgbWF4aW11bSBtZXNzYWdlIHNpemUgd2hpY2ggY2FuIGJlIHNlbnQuAFkBIEEgZ29vZCB2YWx1ZSBkZXBlbmRzIG9uIHRoZSBleHBlY3RlZCBtZXNzYWdlIHNpemVzLCB0aGVpciB3ZWlnaHRzLCB0aGUgd2VpZ2h0IHRoYXQgaXNdASBhdmFpbGFibGUgZm9yIHByb2Nlc3NpbmcgdGhlbSBhbmQgdGhlIG1heGltYWwgbmVlZGVkIG1lc3NhZ2Ugc2l6ZS4gVGhlIG1heGltYWwgbWVzc2FnZREBIHNpemUgaXMgc2xpZ2h0bHkgbG93ZXIgdGhhbiB0aGlzIGFzIGRlZmluZWQgYnkgW2BNYXhNZXNzYWdlTGVuT2ZgXS4gTWF4U3RhbGUQEAgAAAAMXQEgVGhlIG1heGltdW0gbnVtYmVyIG9mIHN0YWxlIHBhZ2VzIChpLmUuIG9mIG92ZXJ3ZWlnaHQgbWVzc2FnZXMpIGFsbG93ZWQgYmVmb3JlIGN1bGxpbmdRASBjYW4gaGFwcGVuLiBPbmNlIHRoZXJlIGFyZSBtb3JlIHN0YWxlIHBhZ2VzIHRoYW4gdGhpcywgdGhlbiBoaXN0b3JpY2FsIHBhZ2VzIG1heSBiZfwgZHJvcHBlZCwgZXZlbiBpZiB0aGV5IGNvbnRhaW4gdW5wcm9jZXNzZWQgb3ZlcndlaWdodCBtZXNzYWdlcy40U2VydmljZVdlaWdodPEGQAEHAKDbIV0TMzMzMzMzMzMYQQEgVGhlIGFtb3VudCBvZiB3ZWlnaHQgKGlmIGFueSkgd2hpY2ggc2hvdWxkIGJlIHByb3ZpZGVkIHRvIHRoZSBtZXNzYWdlIHF1ZXVlIGZvcqggc2VydmljaW5nIGVucXVldWVkIGl0ZW1zIGBvbl9pbml0aWFsaXplYC4A/CBUaGlzIG1heSBiZSBsZWdpdGltYXRlbHkgYE5vbmVgIGluIHRoZSBjYXNlIHRoYXQgeW91IHdpbGwgY2FsbF0BIGBTZXJ2aWNlUXVldWVzOjpzZXJ2aWNlX3F1ZXVlc2AgbWFudWFsbHkgb3Igc2V0IFtgU2VsZjo6SWRsZU1heFNlcnZpY2VXZWlnaHRgXSB0byBoYXZlVCBpdCBydW4gaW4gYG9uX2lkbGVgLlBJZGxlTWF4U2VydmljZVdlaWdodPEGQAEHAKDbIV0TMzMzMzMzMzMUXQEgVGhlIG1heGltdW0gYW1vdW50IG9mIHdlaWdodCAoaWYgYW55KSB0byBiZSB1c2VkIGZyb20gcmVtYWluaW5nIHdlaWdodCBgb25faWRsZWAgd2hpY2hBASBzaG91bGQgYmUgcHJvdmlkZWQgdG8gdGhlIG1lc3NhZ2UgcXVldWUgZm9yIHNlcnZpY2luZyBlbnF1ZXVlZCBpdGVtcyBgb25faWRsZWAuPQEgVXNlZnVsIGZvciBwYXJhY2hhaW5zIHRvIHByb2Nlc3MgbWVzc2FnZXMgYXQgdGhlIHNhbWUgYmxvY2sgdGhleSBhcmUgcmVjZWl2ZWQuACkBIElmIGBOb25lYCwgaXQgd2lsbCBub3QgY2FsbCBgU2VydmljZVF1ZXVlczo6c2VydmljZV9xdWV1ZXNgIGluIGBvbl9pZGxlYC4B3QxkACRBc3NldFJhdGUBJEFzc2V0UmF0ZQRYQ29udmVyc2lvblJhdGVUb05hdGl2ZQABBALcpQYEAAwdASBNYXBzIGFuIGFzc2V0IHRvIGl0cyBmaXhlZCBwb2ludCByZXByZXNlbnRhdGlvbiBpbiB0aGUgbmF0aXZlIGJhbGFuY2UuAE0BIEUuZy4gYG5hdGl2ZV9hbW91bnQgPSBhc3NldF9hbW91bnQgKiBDb252ZXJzaW9uUmF0ZVRvTmF0aXZlOjo8VD46OmdldChhc3NldF9raW5kKWABoQYBiQcAAeEMZQAUQmVlZnkBFEJlZWZ5FCxBdXRob3JpdGllcwEA5QwEAARwIFRoZSBjdXJyZW50IGF1dGhvcml0aWVzIHNldDhWYWxpZGF0b3JTZXRJZAEAMCAAAAAAAAAAAAR0IFRoZSBjdXJyZW50IHZhbGlkYXRvciBzZXQgaWQ8TmV4dEF1dGhvcml0aWVzAQDlDAQABOwgQXV0aG9yaXRpZXMgc2V0IHNjaGVkdWxlZCB0byBiZSB1c2VkIHdpdGggdGhlIG5leHQgc2Vzc2lvbjBTZXRJZFNlc3Npb24AAQQFMBAEAChRASBBIG1hcHBpbmcgZnJvbSBCRUVGWSBzZXQgSUQgdG8gdGhlIGluZGV4IG9mIHRoZSAqbW9zdCByZWNlbnQqIHNlc3Npb24gZm9yIHdoaWNoIGl0c2ggbWVtYmVycyB3ZXJlIHJlc3BvbnNpYmxlLgBFASBUaGlzIGlzIG9ubHkgdXNlZCBmb3IgdmFsaWRhdGluZyBlcXVpdm9jYXRpb24gcHJvb2ZzLiBBbiBlcXVpdm9jYXRpb24gcHJvb2YgbXVzdE0BIGNvbnRhaW5zIGEga2V5LW93bmVyc2hpcCBwcm9vZiBmb3IgYSBnaXZlbiBzZXNzaW9uLCB0aGVyZWZvcmUgd2UgbmVlZCBhIHdheSB0byB0aWU9ASB0b2dldGhlciBzZXNzaW9ucyBhbmQgQkVFRlkgc2V0IGlkcywgaS5lLiB3ZSBuZWVkIHRvIHZhbGlkYXRlIHRoYXQgYSB2YWxpZGF0b3JBASB3YXMgdGhlIG93bmVyIG9mIGEgZ2l2ZW4ga2V5IG9uIGEgZ2l2ZW4gc2Vzc2lvbiwgYW5kIHdoYXQgdGhlIGFjdGl2ZSBzZXQgSUQgd2FzVCBkdXJpbmcgdGhhdCBzZXNzaW9uLgDcIFRXT1gtTk9URTogYFZhbGlkYXRvclNldElkYCBpcyBub3QgdW5kZXIgdXNlciBjb250cm9sLjBHZW5lc2lzQmxvY2sBAGECBAAM3CBCbG9jayBudW1iZXIgd2hlcmUgQkVFRlkgY29uc2Vuc3VzIGlzIGVuYWJsZWQvc3RhcnRlZC5pASBCeSBjaGFuZ2luZyB0aGlzICh0aHJvdWdoIHByaXZpbGVnZWQgYHNldF9uZXdfZ2VuZXNpcygpYCksIEJFRUZZIGNvbnNlbnN1cyBpcyBlZmZlY3RpdmVseawgcmVzdGFydGVkIGZyb20gdGhlIG5ld2x5IHNldCBibG9jayBudW1iZXIuAakGAAw4TWF4QXV0aG9yaXRpZXMQEKCGAQAE1CBUaGUgbWF4aW11bSBudW1iZXIgb2YgYXV0aG9yaXRpZXMgdGhhdCBjYW4gYmUgYWRkZWQuNE1heE5vbWluYXRvcnMQEAACAAAE1CBUaGUgbWF4aW11bSBudW1iZXIgb2Ygbm9taW5hdG9ycyBmb3IgZWFjaCB2YWxpZGF0b3IuWE1heFNldElkU2Vzc2lvbkVudHJpZXMwIKgAAAAAAAAAGDkBIFRoZSBtYXhpbXVtIG51bWJlciBvZiBlbnRyaWVzIHRvIGtlZXAgaW4gdGhlIHNldCBpZCB0byBzZXNzaW9uIGluZGV4IG1hcHBpbmcuADEBIFNpbmNlIHRoZSBgU2V0SWRTZXNzaW9uYCBtYXAgaXMgb25seSB1c2VkIGZvciB2YWxpZGF0aW5nIGVxdWl2b2NhdGlvbnMgdGhpcykBIHZhbHVlIHNob3VsZCByZWxhdGUgdG8gdGhlIGJvbmRpbmcgZHVyYXRpb24gb2Ygd2hhdGV2ZXIgc3Rha2luZyBzeXN0ZW0gaXM1ASBiZWluZyB1c2VkIChpZiBhbnkpLiBJZiBlcXVpdm9jYXRpb24gaGFuZGxpbmcgaXMgbm90IGVuYWJsZWQgdGhlbiB0aGlzIHZhbHVlNCBjYW4gYmUgemVyby4B7QzIAAxNbXIBDE1tcgwgUm9vdEhhc2gBADSAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEWCBMYXRlc3QgTU1SIFJvb3QgaGFzaC44TnVtYmVyT2ZMZWF2ZXMBADAgAAAAAAAAAAAEsCBDdXJyZW50IHNpemUgb2YgdGhlIE1NUiAobnVtYmVyIG9mIGxlYXZlcykuFE5vZGVzAAEEBjA0BAAQgCBIYXNoZXMgb2YgdGhlIG5vZGVzIGluIHRoZSBNTVIuAC0BIE5vdGUgdGhpcyBjb2xsZWN0aW9uIG9ubHkgY29udGFpbnMgTU1SIHBlYWtzLCB0aGUgaW5uZXIgbm9kZXMgKGFuZCBsZWF2ZXMpvCBhcmUgcHJ1bmVkIGFuZCBvbmx5IHN0b3JlZCBpbiB0aGUgT2ZmY2hhaW4gREIuAAAAAMkAMEJlZWZ5TW1yTGVhZgEwQmVlZnlNbXJMZWFmCEBCZWVmeUF1dGhvcml0aWVzAQDxDLAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASgIERldGFpbHMgb2YgY3VycmVudCBCRUVGWSBhdXRob3JpdHkgc2V0LlBCZWVmeU5leHRBdXRob3JpdGllcwEA8QywAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMlCBEZXRhaWxzIG9mIG5leHQgQkVFRlkgYXV0aG9yaXR5IHNldC4AUQEgVGhpcyBzdG9yYWdlIGVudHJ5IGlzIHVzZWQgYXMgY2FjaGUgZm9yIGNhbGxzIHRvIGB1cGRhdGVfYmVlZnlfbmV4dF9hdXRob3JpdHlfc2V0YC4AAAAAygA8UGFyYVN1ZG9XcmFwcGVyAAHNBgAAAfUM+gAQU3VkbwEQU3VkbwQMS2V5AAAABAAEhCBUaGUgYEFjY291bnRJZGAgb2YgdGhlIHN1ZG8ga2V5LgHVBgGNBwAB+Qz/AATFAXUBKQX9DChIQ2hlY2tOb25aZXJvU2VuZGVyAQ2MQENoZWNrU3BlY1ZlcnNpb24FDRA4Q2hlY2tUeFZlcnNpb24JDRAwQ2hlY2tHZW5lc2lzDQ00OENoZWNrTW9ydGFsaXR5EQ00KENoZWNrTm9uY2UZDYwsQ2hlY2tXZWlnaHQdDYxgQ2hhcmdlVHJhbnNhY3Rpb25QYXltZW50IQ2MSFByZXZhbGlkYXRlQXR0ZXN0cyUNjERDaGVja01ldGFkYXRhSGFzaCkNhDENWBBDb3JlDBx2ZXJzaW9uAL0HBJAgUmV0dXJucyB0aGUgdmVyc2lvbiBvZiB0aGUgcnVudGltZS40ZXhlY3V0ZV9ibG9jawQUYmxvY2s1DYwEZCBFeGVjdXRlIHRoZSBnaXZlbiBibG9jay5AaW5pdGlhbGl6ZV9ibG9jawQYaGVhZGVyoQFBDQRBASBJbml0aWFsaXplIGEgYmxvY2sgd2l0aCB0aGUgZ2l2ZW4gaGVhZGVyIGFuZCByZXR1cm4gdGhlIHJ1bnRpbWUgZXhlY3V0aXZlIG1vZGUuBCEBIFRoZSBgQ29yZWAgcnVudGltZSBhcGkgdGhhdCBldmVyeSBTdWJzdHJhdGUgcnVudGltZSBuZWVkcyB0byBpbXBsZW1lbnQuIE1ldGFkYXRhDCBtZXRhZGF0YQBFDQSMIFJldHVybnMgdGhlIG1ldGFkYXRhIG9mIGEgcnVudGltZS5MbWV0YWRhdGFfYXRfdmVyc2lvbgQcdmVyc2lvbhBJDRCkIFJldHVybnMgdGhlIG1ldGFkYXRhIGF0IGEgZ2l2ZW4gdmVyc2lvbi4ABQEgSWYgdGhlIGdpdmVuIGB2ZXJzaW9uYCBpc24ndCBzdXBwb3J0ZWQsIHRoaXMgd2lsbCByZXR1cm4gYE5vbmVgLnUBIFVzZSBbYFNlbGY6Om1ldGFkYXRhX3ZlcnNpb25zYF0gdG8gZmluZCBvdXQgYWJvdXQgc3VwcG9ydGVkIG1ldGFkYXRhIHZlcnNpb24gb2YgdGhlIHJ1bnRpbWUuRG1ldGFkYXRhX3ZlcnNpb25zAOUBDKQgUmV0dXJucyB0aGUgc3VwcG9ydGVkIG1ldGFkYXRhIHZlcnNpb25zLgDAIFRoaXMgY2FuIGJlIHVzZWQgdG8gY2FsbCBgbWV0YWRhdGFfYXRfdmVyc2lvbmAuBAEBIFRoZSBgTWV0YWRhdGFgIGFwaSB0cmFpdCB0aGF0IHJldHVybnMgbWV0YWRhdGEgZm9yIHRoZSBydW50aW1lLjBCbG9ja0J1aWxkZXIQPGFwcGx5X2V4dHJpbnNpYwQkZXh0cmluc2ljOQ1NDRBsIEFwcGx5IHRoZSBnaXZlbiBleHRyaW5zaWMuADkBIFJldHVybnMgYW4gaW5jbHVzaW9uIG91dGNvbWUgd2hpY2ggc3BlY2lmaWVzIGlmIHRoaXMgZXh0cmluc2ljIGlzIGluY2x1ZGVkIGluTCB0aGlzIGJsb2NrIG9yIG5vdC44ZmluYWxpemVfYmxvY2sAoQEEaCBGaW5pc2ggdGhlIGN1cnJlbnQgYmxvY2suTGluaGVyZW50X2V4dHJpbnNpY3MEIGluaGVyZW50XQ09DQQ9ASBHZW5lcmF0ZSBpbmhlcmVudCBleHRyaW5zaWNzLiBUaGUgaW5oZXJlbnQgZGF0YSB3aWxsIHZhcnkgZnJvbSBjaGFpbiB0byBjaGFpbi48Y2hlY2tfaW5oZXJlbnRzCBRibG9jazUNEGRhdGFdDW0NBFUBIENoZWNrIHRoYXQgdGhlIGluaGVyZW50cyBhcmUgdmFsaWQuIFRoZSBpbmhlcmVudCBkYXRhIHdpbGwgdmFyeSBmcm9tIGNoYWluIHRvIGNoYWluLgRxASBUaGUgYEJsb2NrQnVpbGRlcmAgYXBpIHRyYWl0IHRoYXQgcHJvdmlkZXMgdGhlIHJlcXVpcmVkIGZ1bmN0aW9uYWxpdHkgZm9yIGJ1aWxkaW5nIGEgYmxvY2suSE5vbWluYXRpb25Qb29sc0FwaRw8cGVuZGluZ19yZXdhcmRzBAx3aG8AGAQ1ASBSZXR1cm5zIHRoZSBwZW5kaW5nIHJld2FyZHMgZm9yIHRoZSBtZW1iZXIgdGhhdCB0aGUgQWNjb3VudElkIHdhcyBnaXZlbiBmb3IuRHBvaW50c190b19iYWxhbmNlCBxwb29sX2lkEBhwb2ludHMYGAT0IFJldHVybnMgdGhlIGVxdWl2YWxlbnQgYmFsYW5jZSBvZiBgcG9pbnRzYCBmb3IgYSBnaXZlbiBwb29sLkRiYWxhbmNlX3RvX3BvaW50cwgccG9vbF9pZBAkbmV3X2Z1bmRzGBgE/CBSZXR1cm5zIHRoZSBlcXVpdmFsZW50IHBvaW50cyBvZiBgbmV3X2Z1bmRzYCBmb3IgYSBnaXZlbiBwb29sLkhwb29sX3BlbmRpbmdfc2xhc2gEHHBvb2xfaWQQGASwIFJldHVybnMgdGhlIHBlbmRpbmcgc2xhc2ggZm9yIGEgZ2l2ZW4gcG9vbC5QbWVtYmVyX3BlbmRpbmdfc2xhc2gEGG1lbWJlcgAYBMwgUmV0dXJucyB0aGUgcGVuZGluZyBzbGFzaCBmb3IgYSBnaXZlbiBwb29sIG1lbWJlci50cG9vbF9uZWVkc19kZWxlZ2F0ZV9taWdyYXRpb24EHHBvb2xfaWQQICDkIFJldHVybnMgdHJ1ZSBpZiB0aGUgcG9vbCB3aXRoIGBwb29sX2lkYCBuZWVkcyBtaWdyYXRpb24uAEkBIFRoaXMgY2FuIGhhcHBlbiB3aGVuIHRoZSBgcGFsbGV0LW5vbWluYXRpb24tcG9vbHNgIGhhcyBzd2l0Y2hlZCB0byB1c2luZyBzdHJhdGVneUEBIFtgRGVsZWdhdGVTdGFrZWBdKHBhbGxldF9ub21pbmF0aW9uX3Bvb2xzOjphZGFwdGVyOjpEZWxlZ2F0ZVN0YWtlKSBidXQgdGhlIHBvb2zoIHN0aWxsIGhhcyBmdW5kcyB0aGF0IHdlcmUgc3Rha2VkIHVzaW5nIHRoZSBvbGRlciBzdHJhdGVneRkBIFtUcmFuc2ZlclN0YWtlXShwYWxsZXRfbm9taW5hdGlvbl9wb29sczo6YWRhcHRlcjo6VHJhbnNmZXJTdGFrZSkuIFVzZYkBIFtgbWlncmF0ZV9wb29sX3RvX2RlbGVnYXRlX3N0YWtlYF0ocGFsbGV0X25vbWluYXRpb25fcG9vbHM6OkNhbGw6Om1pZ3JhdGVfcG9vbF90b19kZWxlZ2F0ZV9zdGFrZSlUIHRvIG1pZ3JhdGUgdGhlIHBvb2wufG1lbWJlcl9uZWVkc19kZWxlZ2F0ZV9taWdyYXRpb24EGG1lbWJlcgAgHCkBIFJldHVybnMgdHJ1ZSBpZiB0aGUgZGVsZWdhdGVkIGZ1bmRzIG9mIHRoZSBwb29sIGBtZW1iZXJgIG5lZWRzIG1pZ3JhdGlvbi4A2CBPbmNlIGEgcG9vbCBoYXMgc3VjY2Vzc2Z1bGx5IG1pZ3JhdGVkIHRvIHRoZSBzdHJhdGVneVUBIFtgRGVsZWdhdGVTdGFrZWBdKHBhbGxldF9ub21pbmF0aW9uX3Bvb2xzOjphZGFwdGVyOjpEZWxlZ2F0ZVN0YWtlKSwgdGhlIGZ1bmRzIG9mIHRoZRkBIG1lbWJlciBjYW4gYmUgbWlncmF0ZWQgZnJvbSBwb29sIGFjY291bnQgdG8gdGhlIG1lbWJlcidzIGFjY291bnQuIFVzZSkBIFtgbWlncmF0ZV9kZWxlZ2F0aW9uYF0ocGFsbGV0X25vbWluYXRpb25fcG9vbHM6OkNhbGw6Om1pZ3JhdGVfZGVsZWdhdGlvbimkIHRvIG1pZ3JhdGUgdGhlIGZ1bmRzIG9mIHRoZSBwb29sIG1lbWJlci4E+CBSdW50aW1lIGFwaSBmb3IgYWNjZXNzaW5nIGluZm9ybWF0aW9uIGFib3V0IG5vbWluYXRpb24gcG9vbHMuKFN0YWtpbmdBcGkMRG5vbWluYXRpb25zX3F1b3RhBBxiYWxhbmNlGBAEEQEgUmV0dXJucyB0aGUgbm9taW5hdGlvbnMgcXVvdGEgZm9yIGEgbm9taW5hdG9yIHdpdGggYSBnaXZlbiBiYWxhbmNlLlxlcmFzX3N0YWtlcnNfcGFnZV9jb3VudAgMZXJhEBxhY2NvdW50ABAEOQEgUmV0dXJucyB0aGUgcGFnZSBjb3VudCBvZiBleHBvc3VyZXMgZm9yIGEgdmFsaWRhdG9yIGBhY2NvdW50YCBpbiBhIGdpdmVuIGVyYS48cGVuZGluZ19yZXdhcmRzCAxlcmEQHGFjY291bnQAIAQ9ASBSZXR1cm5zIHRydWUgaWYgdmFsaWRhdG9yIGBhY2NvdW50YCBoYXMgcGFnZXMgdG8gYmUgY2xhaW1lZCBmb3IgdGhlIGdpdmVuIGVyYS4AWFRhZ2dlZFRyYW5zYWN0aW9uUXVldWUEUHZhbGlkYXRlX3RyYW5zYWN0aW9uDBhzb3VyY2VxDQh0eDkNKGJsb2NrX2hhc2g0dQ0kaCBWYWxpZGF0ZSB0aGUgdHJhbnNhY3Rpb24uAGUBIFRoaXMgbWV0aG9kIGlzIGludm9rZWQgYnkgdGhlIHRyYW5zYWN0aW9uIHBvb2wgdG8gbGVhcm4gZGV0YWlscyBhYm91dCBnaXZlbiB0cmFuc2FjdGlvbi5FASBUaGUgaW1wbGVtZW50YXRpb24gc2hvdWxkIG1ha2Ugc3VyZSB0byB2ZXJpZnkgdGhlIGNvcnJlY3RuZXNzIG9mIHRoZSB0cmFuc2FjdGlvbk0BIGFnYWluc3QgY3VycmVudCBzdGF0ZS4gVGhlIGdpdmVuIGBibG9ja19oYXNoYCBjb3JyZXNwb25kcyB0byB0aGUgaGFzaCBvZiB0aGUgYmxvY2t8IHRoYXQgaXMgdXNlZCBhcyBjdXJyZW50IHN0YXRlLgBFASBOb3RlIHRoYXQgdGhpcyBjYWxsIG1heSBiZSBwZXJmb3JtZWQgYnkgdGhlIHBvb2wgbXVsdGlwbGUgdGltZXMgYW5kIHRyYW5zYWN0aW9uc6QgbWlnaHQgYmUgdmVyaWZpZWQgaW4gYW55IHBvc3NpYmxlIG9yZGVyLgRNASBUaGUgYFRhZ2dlZFRyYW5zYWN0aW9uUXVldWVgIGFwaSB0cmFpdCBmb3IgaW50ZXJmZXJpbmcgd2l0aCB0aGUgdHJhbnNhY3Rpb24gcXVldWUuRE9mZmNoYWluV29ya2VyQXBpBDxvZmZjaGFpbl93b3JrZXIEGGhlYWRlcqEBjATIIFN0YXJ0cyB0aGUgb2ZmLWNoYWluIHRhc2sgZm9yIGdpdmVuIGJsb2NrIGhlYWRlci4EZCBUaGUgb2ZmY2hhaW4gd29ya2VyIGFwaS40UGFyYWNoYWluSG9zdHwodmFsaWRhdG9ycwDlCgRwIEdldCB0aGUgY3VycmVudCB2YWxpZGF0b3JzLkB2YWxpZGF0b3JfZ3JvdXBzAH0NDGUBIFJldHVybnMgdGhlIHZhbGlkYXRvciBncm91cHMgYW5kIHJvdGF0aW9uIGluZm8gbG9jYWxpemVkIGJhc2VkIG9uIHRoZSBoeXBvdGhldGljYWwgY2hpbGRhASAgb2YgYSBibG9jayB3aG9zZSBzdGF0ZSAgdGhpcyBpcyBpbnZva2VkIG9uLiBOb3RlIHRoYXQgYG5vd2AgaW4gdGhlIGBHcm91cFJvdGF0aW9uSW5mb2DQIHNob3VsZCBiZSB0aGUgc3VjY2Vzc29yIG9mIHRoZSBudW1iZXIgb2YgdGhlIGJsb2NrLkhhdmFpbGFiaWxpdHlfY29yZXMAhQ0INQEgWWllbGRzIGluZm9ybWF0aW9uIG9uIGFsbCBhdmFpbGFiaWxpdHkgY29yZXMgYXMgcmVsZXZhbnQgdG8gdGhlIGNoaWxkIGJsb2NrLj0BIENvcmVzIGFyZSBlaXRoZXIgZnJlZSBvciBvY2N1cGllZC4gRnJlZSBjb3JlcyBjYW4gaGF2ZSBwYXJhcyBhc3NpZ25lZCB0byB0aGVtLmRwZXJzaXN0ZWRfdmFsaWRhdGlvbl9kYXRhCBxwYXJhX2lkjQIoYXNzdW1wdGlvbp0NoQ0UaQEgWWllbGRzIHRoZSBwZXJzaXN0ZWQgdmFsaWRhdGlvbiBkYXRhIGZvciB0aGUgZ2l2ZW4gYFBhcmFJZGAgYWxvbmcgd2l0aCBhbiBhc3N1bXB0aW9uIHRoYXTYIHNob3VsZCBiZSB1c2VkIGlmIHRoZSBwYXJhIGN1cnJlbnRseSBvY2N1cGllcyBhIGNvcmUuAEUBIFJldHVybnMgYE5vbmVgIGlmIGVpdGhlciB0aGUgcGFyYSBpcyBub3QgcmVnaXN0ZXJlZCBvciB0aGUgYXNzdW1wdGlvbiBpcyBgRnJlZWRgmCBhbmQgdGhlIHBhcmEgYWxyZWFkeSBvY2N1cGllcyBhIGNvcmUuXGFzc3VtZWRfdmFsaWRhdGlvbl9kYXRhCBxwYXJhX2lkjQKcZXhwZWN0ZWRfcGVyc2lzdGVkX3ZhbGlkYXRpb25fZGF0YV9oYXNoNKkNDGkBIFJldHVybnMgdGhlIHBlcnNpc3RlZCB2YWxpZGF0aW9uIGRhdGEgZm9yIHRoZSBnaXZlbiBgUGFyYUlkYCBhbG9uZyB3aXRoIHRoZSBjb3JyZXNwb25kaW5ndQEgdmFsaWRhdGlvbiBjb2RlIGhhc2guIEluc3RlYWQgb2YgYWNjZXB0aW5nIGFzc3VtcHRpb24gYWJvdXQgdGhlIHBhcmEsIG1hdGNoZXMgdGhlIHZhbGlkYXRpb24pASBkYXRhIGhhc2ggYWdhaW5zdCBhbiBleHBlY3RlZCBvbmUgYW5kIHlpZWxkcyBgTm9uZWAgaWYgdGhleSdyZSBub3QgZXF1YWwuYGNoZWNrX3ZhbGlkYXRpb25fb3V0cHV0cwgccGFyYV9pZI0CHG91dHB1dHORBCAEFQEgQ2hlY2tzIGlmIHRoZSBnaXZlbiB2YWxpZGF0aW9uIG91dHB1dHMgcGFzcyB0aGUgYWNjZXB0YW5jZSBjcml0ZXJpYS5cc2Vzc2lvbl9pbmRleF9mb3JfY2hpbGQAEAzwIFJldHVybnMgdGhlIHNlc3Npb24gaW5kZXggZXhwZWN0ZWQgYXQgYSBjaGlsZCBvZiB0aGUgYmxvY2suANAgVGhpcyBjYW4gYmUgdXNlZCB0byBpbnN0YW50aWF0ZSBhIGBTaWduaW5nQ29udGV4dGAuPHZhbGlkYXRpb25fY29kZQgccGFyYV9pZI0CKGFzc3VtcHRpb26dDaUEEFUBIEZldGNoIHRoZSB2YWxpZGF0aW9uIGNvZGUgdXNlZCBieSBhIHBhcmEsIG1ha2luZyB0aGUgZ2l2ZW4gYE9jY3VwaWVkQ29yZUFzc3VtcHRpb25gLgBFASBSZXR1cm5zIGBOb25lYCBpZiBlaXRoZXIgdGhlIHBhcmEgaXMgbm90IHJlZ2lzdGVyZWQgb3IgdGhlIGFzc3VtcHRpb24gaXMgYEZyZWVkYJggYW5kIHRoZSBwYXJhIGFscmVhZHkgb2NjdXBpZXMgYSBjb3JlLnhjYW5kaWRhdGVfcGVuZGluZ19hdmFpbGFiaWxpdHkEHHBhcmFfaWSNArENCF0BIEdldCB0aGUgcmVjZWlwdCBvZiBhIGNhbmRpZGF0ZSBwZW5kaW5nIGF2YWlsYWJpbGl0eS4gVGhpcyByZXR1cm5zIGBTb21lYCBmb3IgYW55IHBhcmFzJQEgYXNzaWduZWQgdG8gb2NjdXBpZWQgY29yZXMgaW4gYGF2YWlsYWJpbGl0eV9jb3Jlc2AgYW5kIGBOb25lYCBvdGhlcndpc2UuQGNhbmRpZGF0ZV9ldmVudHMAtQ0ELQEgR2V0IGEgdmVjdG9yIG9mIGV2ZW50cyBjb25jZXJuaW5nIGNhbmRpZGF0ZXMgdGhhdCBvY2N1cnJlZCB3aXRoaW4gYSBibG9jay4wZG1xX2NvbnRlbnRzBCRyZWNpcGllbnSNAoELBD0BIEdldCBhbGwgdGhlIHBlbmRpbmcgaW5ib3VuZCBtZXNzYWdlcyBpbiB0aGUgZG93bndhcmQgbWVzc2FnZSBxdWV1ZSBmb3IgYSBwYXJhLnhpbmJvdW5kX2hybXBfY2hhbm5lbHNfY29udGVudHMEJHJlY2lwaWVudI0CvQ0IZQEgR2V0IHRoZSBjb250ZW50cyBvZiBhbGwgY2hhbm5lbHMgYWRkcmVzc2VkIHRvIHRoZSBnaXZlbiByZWNpcGllbnQuIENoYW5uZWxzIHRoYXQgaGF2ZSBub5AgbWVzc2FnZXMgaW4gdGhlbSBhcmUgYWxzbyBpbmNsdWRlZC5cdmFsaWRhdGlvbl9jb2RlX2J5X2hhc2gEEGhhc2iNBKUEBJwgR2V0IHRoZSB2YWxpZGF0aW9uIGNvZGUgZnJvbSBpdHMgaGFzaC44b25fY2hhaW5fdm90ZXMAyQ0EMQEgU2NyYXBlIGRpc3B1dGUgcmVsZXZhbnQgZnJvbSBvbi1jaGFpbiwgYmFja2luZyB2b3RlcyBhbmQgcmVzb2x2ZWQgZGlzcHV0ZXMuMHNlc3Npb25faW5mbwQUaW5kZXgQzQ0M3CBHZXQgdGhlIHNlc3Npb24gaW5mbyBmb3IgdGhlIGdpdmVuIHNlc3Npb24sIGlmIHN0b3JlZC4AGQEgTk9URTogVGhpcyBmdW5jdGlvbiBpcyBvbmx5IGF2YWlsYWJsZSBzaW5jZSBwYXJhY2hhaW4gaG9zdCB2ZXJzaW9uIDIuaHN1Ym1pdF9wdmZfY2hlY2tfc3RhdGVtZW50CBBzdG104QQkc2lnbmF0dXJlcQSMDAEBIFN1Ym1pdHMgYSBQVkYgcHJlLWNoZWNraW5nIHN0YXRlbWVudCBpbnRvIHRoZSB0cmFuc2FjdGlvbiBwb29sLgAZASBOT1RFOiBUaGlzIGZ1bmN0aW9uIGlzIG9ubHkgYXZhaWxhYmxlIHNpbmNlIHBhcmFjaGFpbiBob3N0IHZlcnNpb24gMi5UcHZmc19yZXF1aXJlX3ByZWNoZWNrAE0LDF0BIFJldHVybnMgY29kZSBoYXNoZXMgb2YgUFZGcyB0aGF0IHJlcXVpcmUgcHJlLWNoZWNraW5nIGJ5IHZhbGlkYXRvcnMgaW4gdGhlIGFjdGl2ZSBzZXQuABkBIE5PVEU6IFRoaXMgZnVuY3Rpb24gaXMgb25seSBhdmFpbGFibGUgc2luY2UgcGFyYWNoYWluIGhvc3QgdmVyc2lvbiAyLlB2YWxpZGF0aW9uX2NvZGVfaGFzaAgccGFyYV9pZI0CKGFzc3VtcHRpb26dDdENDIUBIEZldGNoIHRoZSBoYXNoIG9mIHRoZSB2YWxpZGF0aW9uIGNvZGUgdXNlZCBieSBhIHBhcmEsIG1ha2luZyB0aGUgZ2l2ZW4gYE9jY3VwaWVkQ29yZUFzc3VtcHRpb25gLgAZASBOT1RFOiBUaGlzIGZ1bmN0aW9uIGlzIG9ubHkgYXZhaWxhYmxlIHNpbmNlIHBhcmFjaGFpbiBob3N0IHZlcnNpb24gMi4gZGlzcHV0ZXMA1Q0EeCBSZXR1cm5zIGFsbCBvbmNoYWluIGRpc3B1dGVzLlxzZXNzaW9uX2V4ZWN1dG9yX3BhcmFtcwQ0c2Vzc2lvbl9pbmRleBDdDQS4IFJldHVybnMgZXhlY3V0aW9uIHBhcmFtZXRlcnMgZm9yIHRoZSBzZXNzaW9uLkR1bmFwcGxpZWRfc2xhc2hlcwDhDQhZASBSZXR1cm5zIGEgbGlzdCBvZiB2YWxpZGF0b3JzIHRoYXQgbG9zdCBhIHBhc3Qgc2Vzc2lvbiBkaXNwdXRlIGFuZCBuZWVkIHRvIGJlIHNsYXNoZWQuGQEgTk9URTogVGhpcyBmdW5jdGlvbiBpcyBvbmx5IGF2YWlsYWJsZSBzaW5jZSBwYXJhY2hhaW4gaG9zdCB2ZXJzaW9uIDUuTGtleV9vd25lcnNoaXBfcHJvb2YEMHZhbGlkYXRvcl9pZB0C6Q0IzCBSZXR1cm5zIGEgbWVya2xlIHByb29mIG9mIGEgdmFsaWRhdG9yIHNlc3Npb24ga2V5LhkBIE5PVEU6IFRoaXMgZnVuY3Rpb24gaXMgb25seSBhdmFpbGFibGUgc2luY2UgcGFyYWNoYWluIGhvc3QgdmVyc2lvbiA1LmhzdWJtaXRfcmVwb3J0X2Rpc3B1dGVfbG9zdAg0ZGlzcHV0ZV9wcm9vZvkETGtleV9vd25lcnNoaXBfcHJvb2btDfENDCkBIFN1Ym1pdCBhbiB1bnNpZ25lZCBleHRyaW5zaWMgdG8gc2xhc2ggdmFsaWRhdG9ycyB3aG8gbG9zdCBhIGRpc3B1dGUgYWJvdXR8IGEgY2FuZGlkYXRlIG9mIGEgcGFzdCBzZXNzaW9uLhkBIE5PVEU6IFRoaXMgZnVuY3Rpb24gaXMgb25seSBhdmFpbGFibGUgc2luY2UgcGFyYWNoYWluIGhvc3QgdmVyc2lvbiA1LlRtaW5pbXVtX2JhY2tpbmdfdm90ZXMAEAgNASBHZXQgdGhlIG1pbmltdW0gbnVtYmVyIG9mIGJhY2tpbmcgdm90ZXMgZm9yIGEgcGFyYWNoYWluIGNhbmRpZGF0ZS70IFRoaXMgaXMgYSBzdGFnaW5nIG1ldGhvZCEgRG8gbm90IHVzZSBvbiBwcm9kdWN0aW9uIHJ1bnRpbWVzIUhwYXJhX2JhY2tpbmdfc3RhdGUEBF+NAvUNBOQgUmV0dXJucyB0aGUgc3RhdGUgb2YgcGFyYWNoYWluIGJhY2tpbmcgZm9yIGEgZ2l2ZW4gcGFyYS5QYXN5bmNfYmFja2luZ19wYXJhbXMAKQQEYQEgUmV0dXJucyBjYW5kaWRhdGUncyBhY2NlcHRhbmNlIGxpbWl0YXRpb25zIGZvciBhc3luY2hyb25vdXMgYmFja2luZyBmb3IgYSByZWxheSBwYXJlbnQuTGRpc2FibGVkX3ZhbGlkYXRvcnMA4QoE+CBSZXR1cm5zIGEgbGlzdCBvZiBhbGwgZGlzYWJsZWQgdmFsaWRhdG9ycyBhdCB0aGUgZ2l2ZW4gYmxvY2suNG5vZGVfZmVhdHVyZXMAZQQITCBHZXQgbm9kZSBmZWF0dXJlcy70IFRoaXMgaXMgYSBzdGFnaW5nIG1ldGhvZCEgRG8gbm90IHVzZSBvbiBwcm9kdWN0aW9uIHJ1bnRpbWVzIVhhcHByb3ZhbF92b3RpbmdfcGFyYW1zAEEEBKQgQXBwcm92YWwgdm90aW5nIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVycyxjbGFpbV9xdWV1ZQAlDgQwIENsYWltIHF1ZXVlfGNhbmRpZGF0ZXNfcGVuZGluZ19hdmFpbGFiaWxpdHkEHHBhcmFfaWSNAjEOBGAgRWxhc3RpYyBzY2FsaW5nIHN1cHBvcnQE3CBUaGUgQVBJIGZvciBxdWVyeWluZyB0aGUgc3RhdGUgb2YgcGFyYWNoYWlucyBvbi1jaGFpbi4gQmVlZnlBcGkQNGJlZWZ5X2dlbmVzaXMAYQIEBQEgUmV0dXJuIHRoZSBibG9jayBudW1iZXIgd2hlcmUgQkVFRlkgY29uc2Vuc3VzIGlzIGVuYWJsZWQvc3RhcnRlZDR2YWxpZGF0b3Jfc2V0ADUOBLggUmV0dXJuIHRoZSBjdXJyZW50IGFjdGl2ZSBCRUVGWSB2YWxpZGF0b3Igc2V0tHN1Ym1pdF9yZXBvcnRfZXF1aXZvY2F0aW9uX3Vuc2lnbmVkX2V4dHJpbnNpYwhIZXF1aXZvY2F0aW9uX3Byb29mrQY8a2V5X293bmVyX3Byb29mPQ7xDSARASBTdWJtaXRzIGFuIHVuc2lnbmVkIGV4dHJpbnNpYyB0byByZXBvcnQgYW4gZXF1aXZvY2F0aW9uLiBUaGUgY2FsbGVy+CBtdXN0IHByb3ZpZGUgdGhlIGVxdWl2b2NhdGlvbiBwcm9vZiBhbmQgYSBrZXkgb3duZXJzaGlwIHByb29m/CAoc2hvdWxkIGJlIG9idGFpbmVkIHVzaW5nIGBnZW5lcmF0ZV9rZXlfb3duZXJzaGlwX3Byb29mYCkuIFRoZQUBIGV4dHJpbnNpYyB3aWxsIGJlIHVuc2lnbmVkIGFuZCBzaG91bGQgb25seSBiZSBhY2NlcHRlZCBmb3IgbG9jYWwVASBhdXRob3JzaGlwIChub3QgdG8gYmUgYnJvYWRjYXN0IHRvIHRoZSBuZXR3b3JrKS4gVGhpcyBtZXRob2QgcmV0dXJucwkBIGBOb25lYCB3aGVuIGNyZWF0aW9uIG9mIHRoZSBleHRyaW5zaWMgZmFpbHMsIGUuZy4gaWYgZXF1aXZvY2F0aW9uBQEgcmVwb3J0aW5nIGlzIGRpc2FibGVkIGZvciB0aGUgZ2l2ZW4gcnVudGltZSAoaS5lLiB0aGlzIG1ldGhvZCBpcwUBIGhhcmRjb2RlZCB0byByZXR1cm4gYE5vbmVgKS4gT25seSB1c2VmdWwgaW4gYW4gb2ZmY2hhaW4gY29udGV4dC5wZ2VuZXJhdGVfa2V5X293bmVyc2hpcF9wcm9vZggYc2V0X2lkMDBhdXRob3JpdHlfaWQpAkEOLAkBIEdlbmVyYXRlcyBhIHByb29mIG9mIGtleSBvd25lcnNoaXAgZm9yIHRoZSBnaXZlbiBhdXRob3JpdHkgaW4gdGhl/CBnaXZlbiBzZXQuIEFuIGV4YW1wbGUgdXNhZ2Ugb2YgdGhpcyBtb2R1bGUgaXMgY291cGxlZCB3aXRoIHRoZQUBIHNlc3Npb24gaGlzdG9yaWNhbCBtb2R1bGUgdG8gcHJvdmUgdGhhdCBhIGdpdmVuIGF1dGhvcml0eSBrZXkgaXMNASB0aWVkIHRvIGEgZ2l2ZW4gc3Rha2luZyBpZGVudGl0eSBkdXJpbmcgYSBzcGVjaWZpYyBzZXNzaW9uLiBQcm9vZnMRASBvZiBrZXkgb3duZXJzaGlwIGFyZSBuZWNlc3NhcnkgZm9yIHN1Ym1pdHRpbmcgZXF1aXZvY2F0aW9uIHJlcG9ydHMuEQEgTk9URTogZXZlbiB0aG91Z2ggdGhlIEFQSSB0YWtlcyBhIGBzZXRfaWRgIGFzIHBhcmFtZXRlciB0aGUgY3VycmVudAkBIGltcGxlbWVudGF0aW9ucyBpZ25vcmVzIHRoaXMgcGFyYW1ldGVyIGFuZCBpbnN0ZWFkIHJlbGllcyBvbiB0aGlzDQEgbWV0aG9kIGJlaW5nIGNhbGxlZCBhdCB0aGUgY29ycmVjdCBibG9jayBoZWlnaHQsIGkuZS4gYW55IHBvaW50IGF0FQEgd2hpY2ggdGhlIGdpdmVuIHNldCBpZCBpcyBsaXZlIG9uLWNoYWluLiBGdXR1cmUgaW1wbGVtZW50YXRpb25zIHdpbGwNASBpbnN0ZWFkIHVzZSBpbmRleGVkIGRhdGEgdGhyb3VnaCBhbiBvZmZjaGFpbiB3b3JrZXIsIG5vdCByZXF1aXJpbmd4IG9sZGVyIHN0YXRlcyB0byBiZSBhdmFpbGFibGUuBIAgQVBJIG5lY2Vzc2FyeSBmb3IgQkVFRlkgdm90ZXJzLhhNbXJBcGkUIG1tcl9yb290AEUOBIwgUmV0dXJuIHRoZSBvbi1jaGFpbiBNTVIgcm9vdCBoYXNoLjhtbXJfbGVhZl9jb3VudABNDgS4IFJldHVybiB0aGUgbnVtYmVyIG9mIE1NUiBibG9ja3MgaW4gdGhlIGNoYWluLjhnZW5lcmF0ZV9wcm9vZgg0YmxvY2tfbnVtYmVyc+UBXGJlc3Rfa25vd25fYmxvY2tfbnVtYmVyYQJRDghpASBHZW5lcmF0ZSBNTVIgcHJvb2YgZm9yIGEgc2VyaWVzIG9mIGJsb2NrIG51bWJlcnMuIElmIGBiZXN0X2tub3duX2Jsb2NrX251bWJlciA9IFNvbWUobilgLEUBIHVzZSBoaXN0b3JpY2FsIE1NUiBzdGF0ZSBhdCBnaXZlbiBibG9jayBoZWlnaHQgYG5gLiBFbHNlLCB1c2UgY3VycmVudCBNTVIgc3RhdGUuMHZlcmlmeV9wcm9vZggYbGVhdmVzWQ4UcHJvb2ZhDmUOFPQgVmVyaWZ5IE1NUiBwcm9vZiBhZ2FpbnN0IG9uLWNoYWluIE1NUiBmb3IgYSBiYXRjaCBvZiBsZWF2ZXMuAHEBIE5vdGUgdGhpcyBmdW5jdGlvbiB3aWxsIHVzZSBvbi1jaGFpbiBNTVIgcm9vdCBoYXNoIGFuZCBjaGVjayBpZiB0aGUgcHJvb2YgbWF0Y2hlcyB0aGUgaGFzaC5tASBOb3RlLCB0aGUgbGVhdmVzIHNob3VsZCBiZSBzb3J0ZWQgc3VjaCB0aGF0IGNvcnJlc3BvbmRpbmcgbGVhdmVzIGFuZCBsZWFmIGluZGljZXMgaGF2ZSB0aGWVASBzYW1lIHBvc2l0aW9uIGluIGJvdGggdGhlIGBsZWF2ZXNgIHZlY3RvciBhbmQgdGhlIGBsZWFmX2luZGljZXNgIHZlY3RvciBjb250YWluZWQgaW4gdGhlIFtMZWFmUHJvb2ZdWHZlcmlmeV9wcm9vZl9zdGF0ZWxlc3MMEHJvb3Q0GGxlYXZlc1kOFHByb29mYQ5lDhwBASBWZXJpZnkgTU1SIHByb29mIGFnYWluc3QgZ2l2ZW4gcm9vdCBoYXNoIGZvciBhIGJhdGNoIG9mIGxlYXZlcy4A/CBOb3RlIHRoaXMgZnVuY3Rpb24gZG9lcyBub3QgcmVxdWlyZSBhbnkgb24tY2hhaW4gc3RvcmFnZSAtIHRoZbwgcHJvb2YgaXMgdmVyaWZpZWQgYWdhaW5zdCBnaXZlbiBNTVIgcm9vdCBoYXNoLgBtASBOb3RlLCB0aGUgbGVhdmVzIHNob3VsZCBiZSBzb3J0ZWQgc3VjaCB0aGF0IGNvcnJlc3BvbmRpbmcgbGVhdmVzIGFuZCBsZWFmIGluZGljZXMgaGF2ZSB0aGWVASBzYW1lIHBvc2l0aW9uIGluIGJvdGggdGhlIGBsZWF2ZXNgIHZlY3RvciBhbmQgdGhlIGBsZWFmX2luZGljZXNgIHZlY3RvciBjb250YWluZWQgaW4gdGhlIFtMZWFmUHJvb2ZdBIQgQVBJIHRvIGludGVyYWN0IHdpdGggTU1SIHBhbGxldC4sQmVlZnlNbXJBcGkITGF1dGhvcml0eV9zZXRfcHJvb2YA8QwE3CBSZXR1cm4gdGhlIGN1cnJlbnRseSBhY3RpdmUgQkVFRlkgYXV0aG9yaXR5IHNldCBwcm9vZi5gbmV4dF9hdXRob3JpdHlfc2V0X3Byb29mAPEMBMggUmV0dXJuIHRoZSBuZXh0L3F1ZXVlZCBCRUVGWSBhdXRob3JpdHkgc2V0IHByb29mLgSQIEFQSSB1c2VmdWwgZm9yIEJFRUZZIGxpZ2h0IGNsaWVudHMuKEdyYW5kcGFBcGkQTGdyYW5kcGFfYXV0aG9yaXRpZXMAzBg9ASBHZXQgdGhlIGN1cnJlbnQgR1JBTkRQQSBhdXRob3JpdGllcyBhbmQgd2VpZ2h0cy4gVGhpcyBzaG91bGQgbm90IGNoYW5nZSBleGNlcHQdASBmb3Igd2hlbiBjaGFuZ2VzIGFyZSBzY2hlZHVsZWQgYW5kIHRoZSBjb3JyZXNwb25kaW5nIGRlbGF5IGhhcyBwYXNzZWQuADUBIFdoZW4gY2FsbGVkIGF0IGJsb2NrIEIsIGl0IHdpbGwgcmV0dXJuIHRoZSBzZXQgb2YgYXV0aG9yaXRpZXMgdGhhdCBzaG91bGQgYmU9ASB1c2VkIHRvIGZpbmFsaXplIGRlc2NlbmRhbnRzIG9mIHRoaXMgYmxvY2sgKEIrMSwgQisyLCAuLi4pLiBUaGUgYmxvY2sgQiBpdHNlbGbAIGlzIGZpbmFsaXplZCBieSB0aGUgYXV0aG9yaXRpZXMgZnJvbSBibG9jayBCLTEutHN1Ym1pdF9yZXBvcnRfZXF1aXZvY2F0aW9uX3Vuc2lnbmVkX2V4dHJpbnNpYwhIZXF1aXZvY2F0aW9uX3Byb29mNQI8a2V5X293bmVyX3Byb29mPQ7xDSARASBTdWJtaXRzIGFuIHVuc2lnbmVkIGV4dHJpbnNpYyB0byByZXBvcnQgYW4gZXF1aXZvY2F0aW9uLiBUaGUgY2FsbGVy+CBtdXN0IHByb3ZpZGUgdGhlIGVxdWl2b2NhdGlvbiBwcm9vZiBhbmQgYSBrZXkgb3duZXJzaGlwIHByb29m/CAoc2hvdWxkIGJlIG9idGFpbmVkIHVzaW5nIGBnZW5lcmF0ZV9rZXlfb3duZXJzaGlwX3Byb29mYCkuIFRoZQUBIGV4dHJpbnNpYyB3aWxsIGJlIHVuc2lnbmVkIGFuZCBzaG91bGQgb25seSBiZSBhY2NlcHRlZCBmb3IgbG9jYWwVASBhdXRob3JzaGlwIChub3QgdG8gYmUgYnJvYWRjYXN0IHRvIHRoZSBuZXR3b3JrKS4gVGhpcyBtZXRob2QgcmV0dXJucwkBIGBOb25lYCB3aGVuIGNyZWF0aW9uIG9mIHRoZSBleHRyaW5zaWMgZmFpbHMsIGUuZy4gaWYgZXF1aXZvY2F0aW9uBQEgcmVwb3J0aW5nIGlzIGRpc2FibGVkIGZvciB0aGUgZ2l2ZW4gcnVudGltZSAoaS5lLiB0aGlzIG1ldGhvZCBpcwUBIGhhcmRjb2RlZCB0byByZXR1cm4gYE5vbmVgKS4gT25seSB1c2VmdWwgaW4gYW4gb2ZmY2hhaW4gY29udGV4dC5wZ2VuZXJhdGVfa2V5X293bmVyc2hpcF9wcm9vZggYc2V0X2lkMDBhdXRob3JpdHlfaWTUQQ4sCQEgR2VuZXJhdGVzIGEgcHJvb2Ygb2Yga2V5IG93bmVyc2hpcCBmb3IgdGhlIGdpdmVuIGF1dGhvcml0eSBpbiB0aGX8IGdpdmVuIHNldC4gQW4gZXhhbXBsZSB1c2FnZSBvZiB0aGlzIG1vZHVsZSBpcyBjb3VwbGVkIHdpdGggdGhlBQEgc2Vzc2lvbiBoaXN0b3JpY2FsIG1vZHVsZSB0byBwcm92ZSB0aGF0IGEgZ2l2ZW4gYXV0aG9yaXR5IGtleSBpcw0BIHRpZWQgdG8gYSBnaXZlbiBzdGFraW5nIGlkZW50aXR5IGR1cmluZyBhIHNwZWNpZmljIHNlc3Npb24uIFByb29mcxEBIG9mIGtleSBvd25lcnNoaXAgYXJlIG5lY2Vzc2FyeSBmb3Igc3VibWl0dGluZyBlcXVpdm9jYXRpb24gcmVwb3J0cy4RASBOT1RFOiBldmVuIHRob3VnaCB0aGUgQVBJIHRha2VzIGEgYHNldF9pZGAgYXMgcGFyYW1ldGVyIHRoZSBjdXJyZW50/CBpbXBsZW1lbnRhdGlvbnMgaWdub3JlIHRoaXMgcGFyYW1ldGVyIGFuZCBpbnN0ZWFkIHJlbHkgb24gdGhpcw0BIG1ldGhvZCBiZWluZyBjYWxsZWQgYXQgdGhlIGNvcnJlY3QgYmxvY2sgaGVpZ2h0LCBpLmUuIGFueSBwb2ludCBhdBUBIHdoaWNoIHRoZSBnaXZlbiBzZXQgaWQgaXMgbGl2ZSBvbi1jaGFpbi4gRnV0dXJlIGltcGxlbWVudGF0aW9ucyB3aWxsDQEgaW5zdGVhZCB1c2UgaW5kZXhlZCBkYXRhIHRocm91Z2ggYW4gb2ZmY2hhaW4gd29ya2VyLCBub3QgcmVxdWlyaW5neCBvbGRlciBzdGF0ZXMgdG8gYmUgYXZhaWxhYmxlLjhjdXJyZW50X3NldF9pZAAwBJggR2V0IGN1cnJlbnQgR1JBTkRQQSBhdXRob3JpdHkgc2V0IGlkLiQBASBBUElzIGZvciBpbnRlZ3JhdGluZyB0aGUgR1JBTkRQQSBmaW5hbGl0eSBnYWRnZXQgaW50byBydW50aW1lcy7AIFRoaXMgc2hvdWxkIGJlIGltcGxlbWVudGVkIG9uIHRoZSBydW50aW1lIHNpZGUuABUBIFRoaXMgaXMgcHJpbWFyaWx5IHVzZWQgZm9yIG5lZ290aWF0aW5nIGF1dGhvcml0eS1zZXQgY2hhbmdlcyBmb3IgdGhlDQEgZ2FkZ2V0LiBHUkFORFBBIHVzZXMgYSBzaWduYWxpbmcgbW9kZWwgb2YgY2hhbmdpbmcgYXV0aG9yaXR5IHNldHM6MQEgY2hhbmdlcyBzaG91bGQgYmUgc2lnbmFsZWQgd2l0aCBhIGRlbGF5IG9mIE4gYmxvY2tzLCBhbmQgdGhlbiBhdXRvbWF0aWNhbGx55CBhcHBsaWVkIGluIHRoZSBydW50aW1lIGFmdGVyIHRob3NlIE4gYmxvY2tzIGhhdmUgcGFzc2VkLgD8IFRoZSBjb25zZW5zdXMgcHJvdG9jb2wgd2lsbCBjb29yZGluYXRlIHRoZSBoYW5kb2ZmIGV4dGVybmFsbHkuHEJhYmVBcGkYNGNvbmZpZ3VyYXRpb24AaQ4EjCBSZXR1cm4gdGhlIGNvbmZpZ3VyYXRpb24gZm9yIEJBQkUuTGN1cnJlbnRfZXBvY2hfc3RhcnQAqQEExCBSZXR1cm5zIHRoZSBzbG90IHRoYXQgc3RhcnRlZCB0aGUgY3VycmVudCBlcG9jaC40Y3VycmVudF9lcG9jaABtDgTEIFJldHVybnMgaW5mb3JtYXRpb24gcmVnYXJkaW5nIHRoZSBjdXJyZW50IGVwb2NoLihuZXh0X2Vwb2NoAG0OCAEBIFJldHVybnMgaW5mb3JtYXRpb24gcmVnYXJkaW5nIHRoZSBuZXh0IGVwb2NoICh3aGljaCB3YXMgYWxyZWFkeVwgcHJldmlvdXNseSBhbm5vdW5jZWQpLnBnZW5lcmF0ZV9rZXlfb3duZXJzaGlwX3Byb29mCBBzbG90qQEwYXV0aG9yaXR5X2lkpQFxDiwJASBHZW5lcmF0ZXMgYSBwcm9vZiBvZiBrZXkgb3duZXJzaGlwIGZvciB0aGUgZ2l2ZW4gYXV0aG9yaXR5IGluIHRoZQ0BIGN1cnJlbnQgZXBvY2guIEFuIGV4YW1wbGUgdXNhZ2Ugb2YgdGhpcyBtb2R1bGUgaXMgY291cGxlZCB3aXRoIHRoZQUBIHNlc3Npb24gaGlzdG9yaWNhbCBtb2R1bGUgdG8gcHJvdmUgdGhhdCBhIGdpdmVuIGF1dGhvcml0eSBrZXkgaXMNASB0aWVkIHRvIGEgZ2l2ZW4gc3Rha2luZyBpZGVudGl0eSBkdXJpbmcgYSBzcGVjaWZpYyBzZXNzaW9uLiBQcm9vZnMRASBvZiBrZXkgb3duZXJzaGlwIGFyZSBuZWNlc3NhcnkgZm9yIHN1Ym1pdHRpbmcgZXF1aXZvY2F0aW9uIHJlcG9ydHMuCQEgTk9URTogZXZlbiB0aG91Z2ggdGhlIEFQSSB0YWtlcyBhIGBzbG90YCBhcyBwYXJhbWV0ZXIgdGhlIGN1cnJlbnQJASBpbXBsZW1lbnRhdGlvbnMgaWdub3JlcyB0aGlzIHBhcmFtZXRlciBhbmQgaW5zdGVhZCByZWxpZXMgb24gdGhpcw0BIG1ldGhvZCBiZWluZyBjYWxsZWQgYXQgdGhlIGNvcnJlY3QgYmxvY2sgaGVpZ2h0LCBpLmUuIGFueSBwb2ludCBhdPAgd2hpY2ggdGhlIGVwb2NoIGZvciB0aGUgZ2l2ZW4gc2xvdCBpcyBsaXZlIG9uLWNoYWluLiBGdXR1cmUJASBpbXBsZW1lbnRhdGlvbnMgd2lsbCBpbnN0ZWFkIHVzZSBpbmRleGVkIGRhdGEgdGhyb3VnaCBhbiBvZmZjaGFpbtAgd29ya2VyLCBub3QgcmVxdWlyaW5nIG9sZGVyIHN0YXRlcyB0byBiZSBhdmFpbGFibGUutHN1Ym1pdF9yZXBvcnRfZXF1aXZvY2F0aW9uX3Vuc2lnbmVkX2V4dHJpbnNpYwhIZXF1aXZvY2F0aW9uX3Byb29mnQE8a2V5X293bmVyX3Byb29mdQ7xDSARASBTdWJtaXRzIGFuIHVuc2lnbmVkIGV4dHJpbnNpYyB0byByZXBvcnQgYW4gZXF1aXZvY2F0aW9uLiBUaGUgY2FsbGVy+CBtdXN0IHByb3ZpZGUgdGhlIGVxdWl2b2NhdGlvbiBwcm9vZiBhbmQgYSBrZXkgb3duZXJzaGlwIHByb29m/CAoc2hvdWxkIGJlIG9idGFpbmVkIHVzaW5nIGBnZW5lcmF0ZV9rZXlfb3duZXJzaGlwX3Byb29mYCkuIFRoZQUBIGV4dHJpbnNpYyB3aWxsIGJlIHVuc2lnbmVkIGFuZCBzaG91bGQgb25seSBiZSBhY2NlcHRlZCBmb3IgbG9jYWwVASBhdXRob3JzaGlwIChub3QgdG8gYmUgYnJvYWRjYXN0IHRvIHRoZSBuZXR3b3JrKS4gVGhpcyBtZXRob2QgcmV0dXJucwkBIGBOb25lYCB3aGVuIGNyZWF0aW9uIG9mIHRoZSBleHRyaW5zaWMgZmFpbHMsIGUuZy4gaWYgZXF1aXZvY2F0aW9uBQEgcmVwb3J0aW5nIGlzIGRpc2FibGVkIGZvciB0aGUgZ2l2ZW4gcnVudGltZSAoaS5lLiB0aGlzIG1ldGhvZCBpcwUBIGhhcmRjb2RlZCB0byByZXR1cm4gYE5vbmVgKS4gT25seSB1c2VmdWwgaW4gYW4gb2ZmY2hhaW4gY29udGV4dC4EuCBBUEkgbmVjZXNzYXJ5IGZvciBibG9jayBhdXRob3JzaGlwIHdpdGggQkFCRS5UQXV0aG9yaXR5RGlzY292ZXJ5QXBpBCxhdXRob3JpdGllcwA1CQQZASBSZXRyaWV2ZSBhdXRob3JpdHkgaWRlbnRpZmllcnMgb2YgdGhlIGN1cnJlbnQgYW5kIG5leHQgYXV0aG9yaXR5IHNldC4QdCBUaGUgYXV0aG9yaXR5IGRpc2NvdmVyeSBhcGkuAFEBIFRoaXMgYXBpIGlzIHVzZWQgYnkgdGhlIGBjbGllbnQvYXV0aG9yaXR5LWRpc2NvdmVyeWAgbW9kdWxlIHRvIHJldHJpZXZlIGlkZW50aWZpZXJznCBvZiB0aGUgY3VycmVudCBhbmQgbmV4dCBhdXRob3JpdHkgc2V0LixTZXNzaW9uS2V5cwhUZ2VuZXJhdGVfc2Vzc2lvbl9rZXlzBBBzZWVknQw4HBUBIEdlbmVyYXRlIGEgc2V0IG9mIHNlc3Npb24ga2V5cyB3aXRoIG9wdGlvbmFsbHkgdXNpbmcgdGhlIGdpdmVuIHNlZWQuCQEgVGhlIGtleXMgc2hvdWxkIGJlIHN0b3JlZCB3aXRoaW4gdGhlIGtleXN0b3JlIGV4cG9zZWQgdmlhIHJ1bnRpbWU8IGV4dGVybmFsaXRpZXMuALAgVGhlIHNlZWQgbmVlZHMgdG8gYmUgYSB2YWxpZCBgdXRmOGAgc3RyaW5nLgDQIFJldHVybnMgdGhlIGNvbmNhdGVuYXRlZCBTQ0FMRSBlbmNvZGVkIHB1YmxpYyBrZXlzLkxkZWNvZGVfc2Vzc2lvbl9rZXlzBBxlbmNvZGVkOHkODJggRGVjb2RlIHRoZSBnaXZlbiBwdWJsaWMgc2Vzc2lvbiBrZXlzLgDcIFJldHVybnMgdGhlIGxpc3Qgb2YgcHVibGljIHJhdyBwdWJsaWMga2V5cyArIGtleSB0eXBlLgRoIFNlc3Npb24ga2V5cyBydW50aW1lIGFwaS48QWNjb3VudE5vbmNlQXBpBDRhY2NvdW50X25vbmNlBBxhY2NvdW50ABAEwCBHZXQgY3VycmVudCBhY2NvdW50IG5vbmNlIG9mIGdpdmVuIGBBY2NvdW50SWRgLgSAIFRoZSBBUEkgdG8gcXVlcnkgYWNjb3VudCBub25jZS5UVHJhbnNhY3Rpb25QYXltZW50QXBpEChxdWVyeV9pbmZvCAx1eHQ5DQxsZW4QhQ4ARHF1ZXJ5X2ZlZV9kZXRhaWxzCAx1eHQ5DQxsZW4QiQ4ATHF1ZXJ5X3dlaWdodF90b19mZWUEGHdlaWdodCgYAExxdWVyeV9sZW5ndGhfdG9fZmVlBBhsZW5ndGgQGAAAZFRyYW5zYWN0aW9uUGF5bWVudENhbGxBcGkQPHF1ZXJ5X2NhbGxfaW5mbwgQY2FsbHUBDGxlbhCFDgRJASBRdWVyeSBpbmZvcm1hdGlvbiBvZiBhIGRpc3BhdGNoIGNsYXNzLCB3ZWlnaHQsIGFuZCBmZWUgb2YgYSBnaXZlbiBlbmNvZGVkIGBDYWxsYC5YcXVlcnlfY2FsbF9mZWVfZGV0YWlscwgQY2FsbHUBDGxlbhCJDgS0IFF1ZXJ5IGZlZSBkZXRhaWxzIG9mIGEgZ2l2ZW4gZW5jb2RlZCBgQ2FsbGAuTHF1ZXJ5X3dlaWdodF90b19mZWUEGHdlaWdodCgYBAEBIFF1ZXJ5IHRoZSBvdXRwdXQgb2YgdGhlIGN1cnJlbnQgYFdlaWdodFRvRmVlYCBnaXZlbiBzb21lIGlucHV0LkxxdWVyeV9sZW5ndGhfdG9fZmVlBBhsZW5ndGgQGAQBASBRdWVyeSB0aGUgb3V0cHV0IG9mIHRoZSBjdXJyZW50IGBMZW5ndGhUb0ZlZWAgZ2l2ZW4gc29tZSBpbnB1dC4ANFhjbVBheW1lbnRBcGkQfHF1ZXJ5X2FjY2VwdGFibGVfcGF5bWVudF9hc3NldHMELHhjbV92ZXJzaW9uEJUOFLQgUmV0dXJucyBhIGxpc3Qgb2YgYWNjZXB0YWJsZSBwYXltZW50IGFzc2V0cy4AMCAjIEFyZ3VtZW50cwBoICogYHhjbV92ZXJzaW9uYDogVmVyc2lvbi5AcXVlcnlfeGNtX3dlaWdodAQcbWVzc2FnZV0FoQ4UqCBSZXR1cm5zIGEgd2VpZ2h0IG5lZWRlZCB0byBleGVjdXRlIGEgWENNLgAwICMgQXJndW1lbnRzAHQgKiBgbWVzc2FnZWA6IGBWZXJzaW9uZWRYY21gLmRxdWVyeV93ZWlnaHRfdG9fYXNzZXRfZmVlCBh3ZWlnaHQoFGFzc2V0kQalDhjoIENvbnZlcnRzIGEgd2VpZ2h0IGludG8gYSBmZWUgZm9yIHRoZSBzcGVjaWZpZWQgYEFzc2V0SWRgLgAwICMgQXJndW1lbnRzAIggKiBgd2VpZ2h0YDogY29udmVydGlibGUgYFdlaWdodGAufCAqIGBhc3NldGA6IGBWZXJzaW9uZWRBc3NldElkYC5McXVlcnlfZGVsaXZlcnlfZmVlcwgsZGVzdGluYXRpb25FARxtZXNzYWdlXQWpDiAdASBHZXQgZGVsaXZlcnkgZmVlcyBmb3Igc2VuZGluZyBhIHNwZWNpZmljIGBtZXNzYWdlYCB0byBhIGBkZXN0aW5hdGlvbmAu9CBUaGVzZSBhbHdheXMgY29tZSBpbiBhIHNwZWNpZmljIGFzc2V0LCBkZWZpbmVkIGJ5IHRoZSBjaGFpbi4AMCAjIEFyZ3VtZW50c4EBICogYG1lc3NhZ2VgOiBUaGUgbWVzc2FnZSB0aGF0J2xsIGJlIHNlbnQsIG5lY2Vzc2FyeSBiZWNhdXNlIG1vc3QgZGVsaXZlcnkgZmVlcyBhcmUgYmFzZWQgb24gdGhlXCAgIHNpemUgb2YgdGhlIG1lc3NhZ2UuYQEgKiBgZGVzdGluYXRpb25gOiBUaGUgZGVzdGluYXRpb24gdG8gc2VuZCB0aGUgbWVzc2FnZSB0by4gRGlmZmVyZW50IGRlc3RpbmF0aW9ucyBtYXkgdXNlwCAgIGRpZmZlcmVudCBzZW5kZXJzIHRoYXQgY2hhcmdlIGRpZmZlcmVudCBmZWVzLixwIEEgdHJhaXQgb2YgWENNIHBheW1lbnQgQVBJLgCoIEFQSSBwcm92aWRlcyBmdW5jdGlvbmFsaXR5IGZvciBvYnRhaW5pbmc6AMQgKiB0aGUgd2VpZ2h0IHJlcXVpcmVkIHRvIGV4ZWN1dGUgYW4gWENNIG1lc3NhZ2UsBQEgKiBhIGxpc3Qgb2YgYWNjZXB0YWJsZSBgQXNzZXRJZGBzIGZvciBtZXNzYWdlIGV4ZWN1dGlvbiBwYXltZW50LAEBICogdGhlIGNvc3Qgb2YgdGhlIHdlaWdodCBpbiB0aGUgc3BlY2lmaWVkIGFjY2VwdGFibGUgYEFzc2V0SWRgLqAgKiB0aGUgZmVlcyBmb3IgYW4gWENNIG1lc3NhZ2UgZGVsaXZlcnkuAPAgVG8gZGV0ZXJtaW5lIHRoZSBleGVjdXRpb24gd2VpZ2h0IG9mIHRoZSBjYWxscyByZXF1aXJlZCBmb3J1ASBbYHhjbTo6bGF0ZXN0OjpJbnN0cnVjdGlvbjo6VHJhbnNhY3RgXSBpbnN0cnVjdGlvbiwgYFRyYW5zYWN0aW9uUGF5bWVudENhbGxBcGlgIGNhbiBiZSB1c2VkLiREcnlSdW5BcGkIMGRyeV9ydW5fY2FsbAgYb3JpZ2lufQIQY2FsbHUBrQ4EOCBEcnkgcnVuIGNhbGwuLGRyeV9ydW5feGNtCDxvcmlnaW5fbG9jYXRpb25FAQx4Y21hBs0OBFAgRHJ5IHJ1biBYQ00gcHJvZ3JhbSSxASBBUEkgZm9yIGRyeS1ydW5uaW5nIGV4dHJpbnNpY3MgYW5kIFhDTSBwcm9ncmFtcyB0byBnZXQgdGhlIHByb2dyYW1zIHRoYXQgbmVlZCB0byBiZSBwYXNzZWQgdG8gdGhlIGZlZXMgQVBJLgCBASBBbGwgY2FsbHMgcmV0dXJuIGEgdmVjdG9yIG9mIHR1cGxlcyAobG9jYXRpb24sIHhjbSkgd2hlcmUgZWFjaCAieGNtIiBpcyBleGVjdXRlZCBpbiAibG9jYXRpb24iLuQgSWYgdGhlcmUncyBsb2NhbCBleGVjdXRpb24sIHRoZSBsb2NhdGlvbiB3aWxsIGJlICJIZXJlIi4dASBUaGlzIHZlY3RvciBjYW4gYmUgdXNlZCB0byBjYWxjdWxhdGUgYm90aCBleGVjdXRpb24gYW5kIGRlbGl2ZXJ5IGZlZXMuAJkBIENhbGxzIG9yIFhDTXMgbWlnaHQgZmFpbCB3aGVuIGV4ZWN1dGVkLCB0aGlzIGRvZXNuJ3QgbWVhbiB0aGUgcmVzdWx0IG9mIHRoZXNlIGNhbGxzIHdpbGwgYmUgYW4gYEVycmAuZQEgSW4gdGhvc2UgY2FzZXMsIHRoZXJlIG1pZ2h0IHN0aWxsIGJlIGEgdmFsaWQgcmVzdWx0LCB3aXRoIHRoZSBleGVjdXRpb24gZXJyb3IgaW5zaWRlIGl0LmUBIFRoZSBvbmx5IHJlYXNvbnMgd2h5IHRoZXNlIGNhbGxzIG1pZ2h0IHJldHVybiBhbiBlcnJvciBhcmUgbGlzdGVkIGluIHRoZSBbYEVycm9yYF0gZW51bS5QTG9jYXRpb25Ub0FjY291bnRBcGkEQGNvbnZlcnRfbG9jYXRpb24EIGxvY2F0aW9uRQHVDgSQIENvbnZlcnRzIGBMb2NhdGlvbmAgdG8gYEFjY291bnRJZGAuBA0BIEFQSSBmb3IgdXNlZnVsIGNvbnZlcnNpb25zIGJldHdlZW4gWENNIGBMb2NhdGlvbmAgYW5kIGBBY2NvdW50SWRgLjhHZW5lc2lzQnVpbGRlcgwsYnVpbGRfc3RhdGUEEGpzb2443Q4kZQEgQnVpbGQgYFJ1bnRpbWVHZW5lc2lzQ29uZmlnYCBmcm9tIGEgSlNPTiBibG9iIG5vdCB1c2luZyBhbnkgZGVmYXVsdHMgYW5kIHN0b3JlIGl0IGluIHRoZSQgc3RvcmFnZS4A+QEgSW4gdGhlIGNhc2Ugb2YgYSBGUkFNRS1iYXNlZCBydW50aW1lLCB0aGlzIGZ1bmN0aW9uIGRlc2VyaWFsaXplcyB0aGUgZnVsbCBgUnVudGltZUdlbmVzaXNDb25maWdgIGZyb20gdGhlIGdpdmVuIEpTT04gYmxvYiBhbmRZASBwdXRzIGl0IGludG8gdGhlIHN0b3JhZ2UuIElmIHRoZSBwcm92aWRlZCBKU09OIGJsb2IgaXMgaW5jb3JyZWN0IG9yIGluY29tcGxldGUgb3IgdGhltCBkZXNlcmlhbGl6YXRpb24gZmFpbHMsIGFuIGVycm9yIGlzIHJldHVybmVkLgBdASBQbGVhc2Ugbm90ZSB0aGF0IHByb3ZpZGVkIEpTT04gYmxvYiBtdXN0IGNvbnRhaW4gYWxsIGBSdW50aW1lR2VuZXNpc0NvbmZpZ2AgZmllbGRzLCBub1wgZGVmYXVsdHMgd2lsbCBiZSB1c2VkLihnZXRfcHJlc2V0BAhpZOEOnQw4YQEgUmV0dXJucyBhIEpTT04gYmxvYiByZXByZXNlbnRhdGlvbiBvZiB0aGUgYnVpbHQtaW4gYFJ1bnRpbWVHZW5lc2lzQ29uZmlnYCBpZGVudGlmaWVkIGJ5GCBgaWRgLgA9ASBJZiBgaWRgIGlzIGBOb25lYCB0aGUgZnVuY3Rpb24gcmV0dXJucyBKU09OIGJsb2IgcmVwcmVzZW50YXRpb24gb2YgdGhlIGRlZmF1bHRJASBgUnVudGltZUdlbmVzaXNDb25maWdgIHN0cnVjdCBvZiB0aGUgcnVudGltZS4gSW1wbGVtZW50YXRpb24gbXVzdCBwcm92aWRlIGRlZmF1bHRgIGBSdW50aW1lR2VuZXNpc0NvbmZpZ2AuACEBIE90aGVyd2lzZSBmdW5jdGlvbiByZXR1cm5zIGEgSlNPTiByZXByZXNlbnRhdGlvbiBvZiB0aGUgYnVpbHQtaW4sIG5hbWVkUQEgYFJ1bnRpbWVHZW5lc2lzQ29uZmlnYCBwcmVzZXQgaWRlbnRpZmllZCBieSBgaWRgLCBvciBgTm9uZWAgaWYgc3VjaCBwcmVzZXQgZG9lcyBub3RlASBleGlzdHMuIFJldHVybmVkIGBWZWM8dTg+YCBjb250YWlucyBieXRlcyBvZiBKU09OIGJsb2IgKHBhdGNoKSB3aGljaCBjb21wcmlzZXMgYSBsaXN0IG9mTQEgKHBvdGVudGlhbGx5IG5lc3RlZCkga2V5LXZhbHVlIHBhaXJzIHRoYXQgYXJlIGludGVuZGVkIGZvciBjdXN0b21pemluZyB0aGUgZGVmYXVsdGUBIHJ1bnRpbWUgZ2VuZXNpcyBjb25maWcuIFRoZSBwYXRjaCBzaGFsbCBiZSBtZXJnZWQgKHJmYzczODYpIHdpdGggdGhlIEpTT04gcmVwcmVzZW50YXRpb25hASBvZiB0aGUgZGVmYXVsdCBgUnVudGltZUdlbmVzaXNDb25maWdgIHRvIGNyZWF0ZSBhIGNvbXByZWhlbnNpdmUgZ2VuZXNpcyBjb25maWcgdGhhdCBjYW6EIGJlIHVzZWQgaW4gYGJ1aWxkX3N0YXRlYCBtZXRob2QuMHByZXNldF9uYW1lcwDlDhBRASBSZXR1cm5zIGEgbGlzdCBvZiBpZGVudGlmaWVycyBmb3IgYXZhaWxhYmxlIGJ1aWx0aW4gYFJ1bnRpbWVHZW5lc2lzQ29uZmlnYCBwcmVzZXRzLgBhASBUaGUgcHJlc2V0cyBmcm9tIHRoZSBsaXN0IGNhbiBiZSBxdWVyaWVkIHdpdGggW2BHZW5lc2lzQnVpbGRlcjo6Z2V0X3ByZXNldGBdIG1ldGhvZC4gSWYBASBubyBuYW1lZCBwcmVzZXRzIGFyZSBwcm92aWRlZCBieSB0aGUgcnVudGltZSB0aGUgbGlzdCBpcyBlbXB0eS4E6CBBUEkgdG8gaW50ZXJhY3Qgd2l0aCBSdW50aW1lR2VuZXNpc0NvbmZpZyBmb3IgdGhlIHJ1bnRpbWV1AVTpDgA=",G=A;export{G as default};
|