@parity/product-sdk-descriptors 0.7.0 → 0.8.0
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/README.md +0 -4
- package/chains/devnet-asset-hub/.papi/polkadot-api.json +1 -1
- package/chains/devnet-asset-hub/generated/dist/{devnet_asset_hub_metadata-ECXPhx7J.js → devnet_asset_hub_metadata-DPRqW8eH.js} +1 -1
- package/chains/devnet-asset-hub/generated/dist/index.js +2 -2
- package/chains/devnet-individuality/.papi/polkadot-api.json +1 -1
- package/chains/devnet-individuality/generated/dist/{devnet_individuality_metadata-D_Q26UoG.js → devnet_individuality_metadata-Bn9N9BNx.js} +1 -1
- package/chains/devnet-individuality/generated/dist/index.js +2 -2
- package/chains/kusama-asset-hub/.papi/polkadot-api.json +1 -1
- package/chains/kusama-asset-hub/generated/dist/common-types.d.ts +502 -390
- package/chains/kusama-asset-hub/generated/dist/descriptors-DISR3KIi.js +25 -0
- package/chains/kusama-asset-hub/generated/dist/index.d.ts +1 -1
- package/chains/kusama-asset-hub/generated/dist/index.js +5 -6
- package/chains/kusama-asset-hub/generated/dist/kusama_asset_hub.d.ts +464 -300
- package/chains/kusama-asset-hub/generated/dist/kusama_asset_hub_metadata-DXHUHPNj.js +3 -0
- package/chains/kusama-asset-hub/generated/dist/metadataTypes-D7CQu3b0.js +3 -0
- package/chains/kusama-asset-hub/generated/dist/metadataTypes.d.ts +1 -1
- package/chains/paseo-asset-hub/.papi/polkadot-api.json +1 -1
- package/chains/paseo-asset-hub/generated/dist/common-types.d.ts +154 -157
- package/chains/paseo-asset-hub/generated/dist/{descriptors-DhUtfABq.js → descriptors-CimFu30S.js} +1 -1
- package/chains/paseo-asset-hub/generated/dist/index.js +4 -4
- package/chains/paseo-asset-hub/generated/dist/metadataTypes-Bo4aVwWD.js +3 -0
- package/chains/paseo-asset-hub/generated/dist/metadataTypes.d.ts +1 -1
- package/chains/paseo-asset-hub/generated/dist/paseo_asset_hub.d.ts +73 -87
- package/chains/{summit-asset-hub/generated/dist/summit_asset_hub_metadata-PvlcOpIm.js → paseo-asset-hub/generated/dist/paseo_asset_hub_metadata-CWOk3DU-.js} +1 -1
- package/chains/paseo-bulletin/.papi/polkadot-api.json +1 -1
- package/chains/paseo-bulletin/generated/dist/index.js +2 -2
- package/chains/{summit-bulletin/generated/dist/summit_bulletin_metadata-B9gNyCCl.js → paseo-bulletin/generated/dist/paseo_bulletin_metadata-B5YIN1Ow.js} +1 -1
- package/chains/paseo-individuality/.papi/polkadot-api.json +1 -1
- package/chains/paseo-individuality/generated/dist/common-types.d.ts +142 -68
- package/chains/paseo-individuality/generated/dist/{descriptors-BPDSgyWs.js → descriptors-SCgI2-0R.js} +1 -1
- package/chains/paseo-individuality/generated/dist/index.js +4 -4
- package/chains/{summit-individuality/generated/dist/metadataTypes.d.ts → paseo-individuality/generated/dist/metadataTypes-B1qG4QkU.js} +3 -2
- package/chains/paseo-individuality/generated/dist/metadataTypes.d.ts +1 -1
- package/chains/paseo-individuality/generated/dist/paseo_individuality.d.ts +93 -38
- package/chains/paseo-individuality/generated/dist/paseo_individuality_metadata-DRo0inTN.js +3 -0
- package/chains/polkadot-asset-hub/.papi/polkadot-api.json +1 -1
- package/chains/polkadot-asset-hub/generated/dist/common-types.d.ts +343 -155
- package/chains/polkadot-asset-hub/generated/dist/descriptors-BwnkDiaI.js +25 -0
- package/chains/polkadot-asset-hub/generated/dist/index.d.ts +1 -1
- package/chains/polkadot-asset-hub/generated/dist/index.js +5 -6
- package/chains/polkadot-asset-hub/generated/dist/metadataTypes--EQ8pxh1.js +3 -0
- package/chains/polkadot-asset-hub/generated/dist/metadataTypes.d.ts +1 -1
- package/chains/polkadot-asset-hub/generated/dist/polkadot_asset_hub.d.ts +375 -86
- package/chains/polkadot-asset-hub/generated/dist/polkadot_asset_hub_metadata-CN_MTTeF.js +3 -0
- package/package.json +1 -13
- package/chains/kusama-asset-hub/generated/dist/descriptors-DgSoa2t9.js +0 -25
- package/chains/kusama-asset-hub/generated/dist/kusama_asset_hub_metadata-DMsyqc9c.js +0 -3
- package/chains/kusama-asset-hub/generated/dist/metadataTypes-c7k6GZcy.js +0 -3
- package/chains/paseo-asset-hub/generated/dist/metadataTypes-D0TOPqAM.js +0 -3
- package/chains/paseo-asset-hub/generated/dist/paseo_asset_hub_metadata-BeiFoQh7.js +0 -3
- package/chains/paseo-bulletin/generated/dist/paseo_bulletin_metadata-B9gNyCCl.js +0 -3
- package/chains/paseo-individuality/generated/dist/metadataTypes-B3fJT8lX.js +0 -3
- package/chains/paseo-individuality/generated/dist/paseo_individuality_metadata-CoVMbneS.js +0 -3
- package/chains/polkadot-asset-hub/generated/dist/descriptors-CoscEQ9e.js +0 -25
- package/chains/polkadot-asset-hub/generated/dist/metadataTypes-Dk55glaU.js +0 -3
- package/chains/polkadot-asset-hub/generated/dist/polkadot_asset_hub_metadata-BEYst3UH.js +0 -3
- package/chains/summit-asset-hub/.papi/polkadot-api.json +0 -12
- package/chains/summit-asset-hub/generated/dist/common-types.d.ts +0 -16940
- package/chains/summit-asset-hub/generated/dist/common.d.ts +0 -1
- package/chains/summit-asset-hub/generated/dist/descriptors-B8WL4bSQ.js +0 -25
- package/chains/summit-asset-hub/generated/dist/descriptors.d.ts +0 -1
- package/chains/summit-asset-hub/generated/dist/index.d.ts +0 -10
- package/chains/summit-asset-hub/generated/dist/index.js +0 -116
- package/chains/summit-asset-hub/generated/dist/metadataTypes-D0TOPqAM.js +0 -3
- package/chains/summit-asset-hub/generated/dist/metadataTypes.d.ts +0 -2
- package/chains/summit-asset-hub/generated/dist/summit_asset_hub.d.ts +0 -16379
- package/chains/summit-asset-hub/generated/dist/summit_asset_hub_metadata.d.ts +0 -2
- package/chains/summit-bulletin/.papi/polkadot-api.json +0 -12
- package/chains/summit-bulletin/generated/dist/common-types.d.ts +0 -4594
- package/chains/summit-bulletin/generated/dist/common.d.ts +0 -1
- package/chains/summit-bulletin/generated/dist/descriptors-BDn18GWW.js +0 -25
- package/chains/summit-bulletin/generated/dist/descriptors.d.ts +0 -1
- package/chains/summit-bulletin/generated/dist/index.d.ts +0 -10
- package/chains/summit-bulletin/generated/dist/index.js +0 -88
- package/chains/summit-bulletin/generated/dist/metadataTypes-GA7L2eXx.js +0 -3
- package/chains/summit-bulletin/generated/dist/metadataTypes.d.ts +0 -2
- package/chains/summit-bulletin/generated/dist/summit_bulletin.d.ts +0 -3976
- package/chains/summit-bulletin/generated/dist/summit_bulletin_metadata.d.ts +0 -2
- package/chains/summit-individuality/.papi/polkadot-api.json +0 -12
- package/chains/summit-individuality/generated/dist/common-types.d.ts +0 -10638
- package/chains/summit-individuality/generated/dist/common.d.ts +0 -1
- package/chains/summit-individuality/generated/dist/descriptors-DlbXAv0U.js +0 -25
- package/chains/summit-individuality/generated/dist/descriptors.d.ts +0 -1
- package/chains/summit-individuality/generated/dist/index.d.ts +0 -10
- package/chains/summit-individuality/generated/dist/index.js +0 -87
- package/chains/summit-individuality/generated/dist/metadataTypes-B3fJT8lX.js +0 -3
- package/chains/summit-individuality/generated/dist/summit_individuality.d.ts +0 -10192
- package/chains/summit-individuality/generated/dist/summit_individuality_metadata-CoVMbneS.js +0 -3
- package/chains/summit-individuality/generated/dist/summit_individuality_metadata.d.ts +0 -2
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
const binMeta = "bWV0YRDdEgAMKHNwX3J1bnRpbWUwbXVsdGlhZGRyZXNzME11bHRpQWRkcmVzcwgkQWNjb3VudElkAQQwQWNjb3VudEluZGV4ARABFAhJZAQABAEkQWNjb3VudElkAAAAFEluZGV4BAAUATBBY2NvdW50SW5kZXgAAQAMUmF3BAAYARxWZWM8dTg+AAIAJEFkZHJlc3MzMgQACAEgW3U4OyAzMl0AAwAkQWRkcmVzczIwBAAcASBbdTg7IDIwXQAEAAAEDBxzcF9jb3JlGGNyeXB0byxBY2NvdW50SWQzMgAABAAIASBbdTg7IDMyXQAACAAAAyAAAAAMAAwAAAUDABAAAAQAABQAAAYQABgAAAIMABwAAAMUAAAADAAgCFxhc3NldF9odWJfcGFzZW9fcnVudGltZSxSdW50aW1lQ2FsbAAB3BhTeXN0ZW0EACQBrQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8U3lzdGVtLCBSdW50aW1lPgAAADxQYXJhY2hhaW5TeXN0ZW0EAEQB0QFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8UGFyYWNoYWluU3lzdGVtLCBSdW50aW1lPgABACRUaW1lc3RhbXAEALQBuQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8VGltZXN0YW1wLCBSdW50aW1lPgADADRQYXJhY2hhaW5JbmZvBAC8AckBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFBhcmFjaGFpbkluZm8sIFJ1bnRpbWU+AAQAIFByZWltYWdlBADAAbUBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFByZWltYWdlLCBSdW50aW1lPgAFACRTY2hlZHVsZXIEAMgBuQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8U2NoZWR1bGVyLCBSdW50aW1lPgAGAChQYXJhbWV0ZXJzBADUAb0Bc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFBhcmFtZXRlcnMsIFJ1bnRpbWU+AAcAUE11bHRpQmxvY2tNaWdyYXRpb25zBAApAQHlAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxNdWx0aUJsb2NrTWlncmF0aW9ucywgUnVudGltZT4ACAAgQmFsYW5jZXMEAFEBAbUBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPEJhbGFuY2VzLCBSdW50aW1lPgAKABxWZXN0aW5nBABpAQGxAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxWZXN0aW5nLCBSdW50aW1lPgAOABhDbGFpbXMEAHEBAa0Bc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPENsYWltcywgUnVudGltZT4ADwAMRGFwBACVAQGhAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxEYXAsIFJ1bnRpbWU+ABAARENvbGxhdG9yU2VsZWN0aW9uBACxAQHZAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxDb2xsYXRvclNlbGVjdGlvbiwgUnVudGltZT4AFQAcU2Vzc2lvbgQAtQEBsQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8U2Vzc2lvbiwgUnVudGltZT4AFgAkWGNtcFF1ZXVlBADBAQG5AXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxYY21wUXVldWUsIFJ1bnRpbWU+AB4ALFBvbGthZG90WGNtBADFAQHBAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxQb2xrYWRvdFhjbSwgUnVudGltZT4AHwAoQ3VtdWx1c1hjbQQAxQMBvQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8Q3VtdWx1c1hjbSwgUnVudGltZT4AIABEVG9LdXNhbWFYY21Sb3V0ZXIEAMkDAdkBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFRvS3VzYW1hWGNtUm91dGVyLCBSdW50aW1lPgAiADBNZXNzYWdlUXVldWUEAM0DAcUBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPE1lc3NhZ2VRdWV1ZSwgUnVudGltZT4AIwBgU25vd2JyaWRnZVN5c3RlbUZyb250ZW5kBADVAwH1AXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxTbm93YnJpZGdlU3lzdGVtRnJvbnRlbmQsIFJ1bnRpbWU+ACQAHFV0aWxpdHkEAOUDAbEBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFV0aWxpdHksIFJ1bnRpbWU+ACgAIE11bHRpc2lnBAApBAG1AXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxNdWx0aXNpZywgUnVudGltZT4AKQAUUHJveHkEADUEAakBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFByb3h5LCBSdW50aW1lPgAqABxJbmRpY2VzBABBBAGxAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxJbmRpY2VzLCBSdW50aW1lPgArABhBc3NldHMEAEUEAa0Bc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPEFzc2V0cywgUnVudGltZT4AMgAcVW5pcXVlcwQAUQQBsQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8VW5pcXVlcywgUnVudGltZT4AMwAQTmZ0cwQAaQQBpQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8TmZ0cywgUnVudGltZT4ANAA0Rm9yZWlnbkFzc2V0cwQAyQQByQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8Rm9yZWlnbkFzc2V0cywgUnVudGltZT4ANQAoUG9vbEFzc2V0cwQA2QQBvQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8UG9vbEFzc2V0cywgUnVudGltZT4ANgA8QXNzZXRDb252ZXJzaW9uBADdBAHRAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxBc3NldENvbnZlcnNpb24sIFJ1bnRpbWU+ADcAIFRyZWFzdXJ5BADlBAG1AXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxUcmVhc3VyeSwgUnVudGltZT4APABAQ29udmljdGlvblZvdGluZwQA8QQB1QFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8Q29udmljdGlvblZvdGluZywgUnVudGltZT4APQAkUmVmZXJlbmRhBAAFBQG5AXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxSZWZlcmVuZGEsIFJ1bnRpbWU+AD4AJFdoaXRlbGlzdAQAGQUBuQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8V2hpdGVsaXN0LCBSdW50aW1lPgBAACBCb3VudGllcwQAHQUBtQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8Qm91bnRpZXMsIFJ1bnRpbWU+AEEANENoaWxkQm91bnRpZXMEACEFAckBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPENoaWxkQm91bnRpZXMsIFJ1bnRpbWU+AEIAJEFzc2V0UmF0ZQQAJQUBuQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8QXNzZXRSYXRlLCBSdW50aW1lPgBDAEhNdWx0aUFzc2V0Qm91bnRpZXMEAC0FAd0Bc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPE11bHRpQXNzZXRCb3VudGllcywgUnVudGltZT4ARABIU3RhdGVUcmllTWlncmF0aW9uBAAxBQHdAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxTdGF0ZVRyaWVNaWdyYXRpb24sIFJ1bnRpbWU+AEYAPE5vbWluYXRpb25Qb29scwQASQUB0QFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8Tm9taW5hdGlvblBvb2xzLCBSdW50aW1lPgBQACRWb3Rlckxpc3QEAH0FAbkBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFZvdGVyTGlzdCwgUnVudGltZT4AUgA8U3Rha2luZ1JjQ2xpZW50BACBBQHRAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxTdGFraW5nUmNDbGllbnQsIFJ1bnRpbWU+AFQASE11bHRpQmxvY2tFbGVjdGlvbgQApQUB3QFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8TXVsdGlCbG9ja0VsZWN0aW9uLCBSdW50aW1lPgBVAGhNdWx0aUJsb2NrRWxlY3Rpb25WZXJpZmllcgQA2QUB/QFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8TXVsdGlCbG9ja0VsZWN0aW9uVmVyaWZpZXIsIFJ1bnRpbWU+AFYAaE11bHRpQmxvY2tFbGVjdGlvblVuc2lnbmVkBADdBQH9AXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxNdWx0aUJsb2NrRWxlY3Rpb25VbnNpZ25lZCwgUnVudGltZT4AVwBgTXVsdGlCbG9ja0VsZWN0aW9uU2lnbmVkBAC1BgH1AXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxNdWx0aUJsb2NrRWxlY3Rpb25TaWduZWQsIFJ1bnRpbWU+AFgAHFN0YWtpbmcEAL0GAbEBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFN0YWtpbmcsIFJ1bnRpbWU+AFkARE1lbWJlcnNTdWJzY3JpYmVyBAAJBwHZAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxNZW1iZXJzU3Vic2NyaWJlciwgUnVudGltZT4AYQA0QWxpYXNBY2NvdW50cwQALQcByQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8QWxpYXNBY2NvdW50cywgUnVudGltZT4AYgAQUGdhcwQANQcBpQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8UGdhcywgUnVudGltZT4AYwAYUmV2aXZlBAA5BwGtAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxSZXZpdmUsIFJ1bnRpbWU+AGQAMERvdG5zR2F0ZXdheQQATQcBxQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8RG90bnNHYXRld2F5LCBSdW50aW1lPgCYAERPcmlnaW5SZXN0cmljdGlvbgQAYQcB2QFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8T3JpZ2luUmVzdHJpY3Rpb24sIFJ1bnRpbWU+AJkAEFN1ZG8EAGkHAaUBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFN1ZG8sIFJ1bnRpbWU+APsAFEFoT3BzBABtBwGpAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxBaE9wcywgUnVudGltZT4A/gAAJAwwZnJhbWVfc3lzdGVtGHBhbGxldBBDYWxsBARUAAEwGHJlbWFyawQBGHJlbWFyaxgBHFZlYzx1OD4AAAxoTWFrZSBzb21lIG9uLWNoYWluIHJlbWFyay4AiENhbiBiZSBleGVjdXRlZCBieSBldmVyeSBgb3JpZ2luYC44c2V0X2hlYXBfcGFnZXMEARRwYWdlcygBDHU2NAABBPhTZXQgdGhlIG51bWJlciBvZiBwYWdlcyBpbiB0aGUgV2ViQXNzZW1ibHkgZW52aXJvbm1lbnQncyBoZWFwLiBzZXRfY29kZQQBEGNvZGUYARxWZWM8dTg+AAIEZFNldCB0aGUgbmV3IHJ1bnRpbWUgY29kZS5cc2V0X2NvZGVfd2l0aG91dF9jaGVja3MEARBjb2RlGAEcVmVjPHU4PgADEBkBU2V0IHRoZSBuZXcgcnVudGltZSBjb2RlIHdpdGhvdXQgZG9pbmcgYW55IGNoZWNrcyBvZiB0aGUgZ2l2ZW4gYGNvZGVgLgBRAU5vdGUgdGhhdCBydW50aW1lIHVwZ3JhZGVzIHdpbGwgbm90IHJ1biBpZiB0aGlzIGlzIGNhbGxlZCB3aXRoIGEgbm90LWluY3JlYXNpbmcgc3BlYyB2ZXJzaW9uISxzZXRfc3RvcmFnZQQBFGl0ZW1zLAE0VmVjPEtleVZhbHVlPgAEBGhTZXQgc29tZSBpdGVtcyBvZiBzdG9yYWdlLjBraWxsX3N0b3JhZ2UEARBrZXlzNAEgVmVjPEtleT4ABQR0S2lsbCBzb21lIGl0ZW1zIGZyb20gc3RvcmFnZS4sa2lsbF9wcmVmaXgIARhwcmVmaXgYAQxLZXkAARxzdWJrZXlzOAEMdTMyAAYQEQFLaWxsIGFsbCBzdG9yYWdlIGl0ZW1zIHdpdGggYSBrZXkgdGhhdCBzdGFydHMgd2l0aCB0aGUgZ2l2ZW4gcHJlZml4LgA5ASoqTk9URToqKiBXZSByZWx5IG9uIHRoZSBSb290IG9yaWdpbiB0byBwcm92aWRlIHVzIHRoZSBudW1iZXIgb2Ygc3Via2V5cyB1bmRlcj0BdGhlIHByZWZpeCB3ZSBhcmUgcmVtb3ZpbmcgdG8gYWNjdXJhdGVseSBjYWxjdWxhdGUgdGhlIHdlaWdodCBvZiB0aGlzIGZ1bmN0aW9uLkRyZW1hcmtfd2l0aF9ldmVudAQBGHJlbWFyaxgBHFZlYzx1OD4ABwSkTWFrZSBzb21lIG9uLWNoYWluIHJlbWFyayBhbmQgZW1pdCBldmVudC4cZG9fdGFzawQBEHRhc2s8AThUOjpSdW50aW1lVGFzawAIAERhdXRob3JpemVfdXBncmFkZQQBJGNvZGVfaGFzaEABHFQ6Okhhc2gACRBhAUF1dGhvcml6ZSBhbiB1cGdyYWRlIHRvIGEgZ2l2ZW4gYGNvZGVfaGFzaGAgZm9yIHRoZSBydW50aW1lLiBUaGUgcnVudGltZSBjYW4gYmUgc3VwcGxpZWQYbGF0ZXIuAHxUaGlzIGNhbGwgcmVxdWlyZXMgUm9vdCBvcmlnaW4ugGF1dGhvcml6ZV91cGdyYWRlX3dpdGhvdXRfY2hlY2tzBAEkY29kZV9oYXNoQAEcVDo6SGFzaAAKIGEBQXV0aG9yaXplIGFuIHVwZ3JhZGUgdG8gYSBnaXZlbiBgY29kZV9oYXNoYCBmb3IgdGhlIHJ1bnRpbWUuIFRoZSBydW50aW1lIGNhbiBiZSBzdXBwbGllZBhsYXRlci4AXQFXQVJOSU5HOiBUaGlzIGF1dGhvcml6ZXMgYW4gdXBncmFkZSB0aGF0IHdpbGwgdGFrZSBwbGFjZSB3aXRob3V0IGFueSBzYWZldHkgY2hlY2tzLCBmb3JZAWV4YW1wbGUgdGhhdCB0aGUgc3BlYyBuYW1lIHJlbWFpbnMgdGhlIHNhbWUgYW5kIHRoYXQgdGhlIHZlcnNpb24gbnVtYmVyIGluY3JlYXNlcy4gTm908HJlY29tbWVuZGVkIGZvciBub3JtYWwgdXNlLiBVc2UgYGF1dGhvcml6ZV91cGdyYWRlYCBpbnN0ZWFkLgB8VGhpcyBjYWxsIHJlcXVpcmVzIFJvb3Qgb3JpZ2luLmBhcHBseV9hdXRob3JpemVkX3VwZ3JhZGUEARBjb2RlGAEcVmVjPHU4PgALJFUBUHJvdmlkZSB0aGUgcHJlaW1hZ2UgKHJ1bnRpbWUgYmluYXJ5KSBgY29kZWAgZm9yIGFuIHVwZ3JhZGUgdGhhdCBoYXMgYmVlbiBhdXRob3JpemVkLgBJAUlmIHRoZSBhdXRob3JpemF0aW9uIHJlcXVpcmVkIGEgdmVyc2lvbiBjaGVjaywgdGhpcyBjYWxsIHdpbGwgZW5zdXJlIHRoZSBzcGVjIG5hbWXocmVtYWlucyB1bmNoYW5nZWQgYW5kIHRoYXQgdGhlIHNwZWMgdmVyc2lvbiBoYXMgaW5jcmVhc2VkLgBZAURlcGVuZGluZyBvbiB0aGUgcnVudGltZSdzIGBPblNldENvZGVgIGNvbmZpZ3VyYXRpb24sIHRoaXMgZnVuY3Rpb24gbWF5IGRpcmVjdGx5IGFwcGx5EQF0aGUgbmV3IGBjb2RlYCBpbiB0aGUgc2FtZSBibG9jayBvciBhdHRlbXB0IHRvIHNjaGVkdWxlIHRoZSB1cGdyYWRlLgBgQWxsIG9yaWdpbnMgYXJlIGFsbG93ZWQuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLigAAAUGACwAAAIwADAAAAQIGBgANAAAAhgAOAAABQUAPAhcYXNzZXRfaHViX3Bhc2VvX3J1bnRpbWUsUnVudGltZVRhc2sAAQAAQAg8cHJpbWl0aXZlX3R5cGVzEEgyNTYAAAQACAEgW3U4OyAzMl0AAEQMfGN1bXVsdXNfcGFsbGV0X3BhcmFjaGFpbl9zeXN0ZW0YcGFsbGV0EENhbGwEBFQAAQhMc2V0X3ZhbGlkYXRpb25fZGF0YQgBEGRhdGFIAWhCYXNpY1BhcmFjaGFpbkluaGVyZW50RGF0YQABVGluYm91bmRfbWVzc2FnZXNfZGF0YYABTEluYm91bmRNZXNzYWdlc0RhdGEAACSAU2V0IHRoZSBjdXJyZW50IHZhbGlkYXRpb24gZGF0YS4AQQFUaGlzIHNob3VsZCBiZSBpbnZva2VkIGV4YWN0bHkgb25jZSBwZXIgYmxvY2suIEl0IHdpbGwgcGFuaWMgYXQgdGhlIGZpbmFsaXphdGlvbohwaGFzZSBpZiB0aGUgY2FsbCB3YXMgbm90IGludm9rZWQuANBUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBgSW5oZXJlbnRgACEBQXMgYSBzaWRlIGVmZmVjdCwgdGhpcyBmdW5jdGlvbiB1cGdyYWRlcyB0aGUgY3VycmVudCB2YWxpZGF0aW9uIGZ1bmN0aW9uhGlmIHRoZSBhcHByb3ByaWF0ZSB0aW1lIGhhcyBjb21lLmBzdWRvX3NlbmRfdXB3YXJkX21lc3NhZ2UEARxtZXNzYWdlGAE0VXB3YXJkTWVzc2FnZQABAAQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy5IDHxjdW11bHVzX3BhbGxldF9wYXJhY2hhaW5fc3lzdGVtSHBhcmFjaGFpbl9pbmhlcmVudGhCYXNpY1BhcmFjaGFpbkluaGVyZW50RGF0YQAAEAE8dmFsaWRhdGlvbl9kYXRhTAFcUGVyc2lzdGVkVmFsaWRhdGlvbkRhdGEAAURyZWxheV9jaGFpbl9zdGF0ZVQBVHNwX3RyaWU6OlN0b3JhZ2VQcm9vZgABYHJlbGF5X3BhcmVudF9kZXNjZW5kYW50c1wBQFZlYzxSZWxheUhlYWRlcj4AAUBjb2xsYXRvcl9wZWVyX2lkeAFYT3B0aW9uPEFwcHJvdmVkUGVlcklkPgAATAxMcG9sa2Fkb3RfcHJpbWl0aXZlcwh2OVxQZXJzaXN0ZWRWYWxpZGF0aW9uRGF0YQgESAFABE4BOAAQASxwYXJlbnRfaGVhZFABIEhlYWREYXRhAAFMcmVsYXlfcGFyZW50X251bWJlcjgBBE4AAWRyZWxheV9wYXJlbnRfc3RvcmFnZV9yb290QAEESAABMG1heF9wb3Zfc2l6ZTgBDHUzMgAAUAx0cG9sa2Fkb3RfcGFyYWNoYWluX3ByaW1pdGl2ZXMocHJpbWl0aXZlcyBIZWFkRGF0YQAABAAYARxWZWM8dTg+AABUDBxzcF90cmllNHN0b3JhZ2VfcHJvb2YwU3RvcmFnZVByb29mAAAEASh0cmllX25vZGVzWAFEQlRyZWVTZXQ8VmVjPHU4Pj4AAFgEIEJUcmVlU2V0BARUARgABAA0AAAAXAAAAmAAYBAoc3BfcnVudGltZRxnZW5lcmljGGhlYWRlchhIZWFkZXIIGE51bWJlcgE4EEhhc2gAABQBLHBhcmVudF9oYXNoQAEwSGFzaDo6T3V0cHV0AAEYbnVtYmVyZAEYTnVtYmVyAAEoc3RhdGVfcm9vdEABMEhhc2g6Ok91dHB1dAABPGV4dHJpbnNpY3Nfcm9vdEABMEhhc2g6Ok91dHB1dAABGGRpZ2VzdGgBGERpZ2VzdAAAZAAABjgAaBAoc3BfcnVudGltZRxnZW5lcmljGGRpZ2VzdBhEaWdlc3QAAAQBEGxvZ3NsATxWZWM8RGlnZXN0SXRlbT4AAGwAAAJwAHAQKHNwX3J1bnRpbWUcZ2VuZXJpYxhkaWdlc3QoRGlnZXN0SXRlbQABFChQcmVSdW50aW1lCAB0AURDb25zZW5zdXNFbmdpbmVJZAAAGAEcVmVjPHU4PgAGACRDb25zZW5zdXMIAHQBRENvbnNlbnN1c0VuZ2luZUlkAAAYARxWZWM8dTg+AAQAEFNlYWwIAHQBRENvbnNlbnN1c0VuZ2luZUlkAAAYARxWZWM8dTg+AAUAFE90aGVyBAAYARxWZWM8dTg+AAAAZFJ1bnRpbWVFbnZpcm9ubWVudFVwZGF0ZWQACAAAdAAAAwQAAAAMAHgEGE9wdGlvbgQEVAF8AQgQTm9uZQAAABBTb21lBAB8AAABAAB8DExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBDARTAAAEABgBGFZlYzxUPgAAgAx8Y3VtdWx1c19wYWxsZXRfcGFyYWNoYWluX3N5c3RlbUhwYXJhY2hhaW5faW5oZXJlbnRMSW5ib3VuZE1lc3NhZ2VzRGF0YQAACAFEZG93bndhcmRfbWVzc2FnZXOEAXxBYnJpZGdlZEluYm91bmREb3dud2FyZE1lc3NhZ2VzAAFMaG9yaXpvbnRhbF9tZXNzYWdlc5gBbEFicmlkZ2VkSW5ib3VuZEhybXBNZXNzYWdlcwAAhAx8Y3VtdWx1c19wYWxsZXRfcGFyYWNoYWluX3N5c3RlbUhwYXJhY2hhaW5faW5oZXJlbnSEQWJyaWRnZWRJbmJvdW5kTWVzc2FnZXNDb2xsZWN0aW9uBBxNZXNzYWdlAYgACAE0ZnVsbF9tZXNzYWdlc4wBMFZlYzxNZXNzYWdlPgABPGhhc2hlZF9tZXNzYWdlc5ABfFZlYzxNZXNzYWdlOjpDb21wcmVzc2VkTWVzc2FnZT4AAIgIYHBvbGthZG90X2NvcmVfcHJpbWl0aXZlc1hJbmJvdW5kRG93bndhcmRNZXNzYWdlBCxCbG9ja051bWJlcgE4AAgBHHNlbnRfYXQ4ASxCbG9ja051bWJlcgABDG1zZxgBPERvd253YXJkTWVzc2FnZQAAjAAAAogAkAAAApQAlAiUY3VtdWx1c19wcmltaXRpdmVzX3BhcmFjaGFpbl9pbmhlcmVudDRIYXNoZWRNZXNzYWdlAAAIARxzZW50X2F0OAFUUmVsYXlDaGFpbkJsb2NrTnVtYmVyAAEgbXNnX2hhc2hAATRzcF9jb3JlOjpIMjU2AACYDHxjdW11bHVzX3BhbGxldF9wYXJhY2hhaW5fc3lzdGVtSHBhcmFjaGFpbl9pbmhlcmVudIRBYnJpZGdlZEluYm91bmRNZXNzYWdlc0NvbGxlY3Rpb24EHE1lc3NhZ2UBnAAIATRmdWxsX21lc3NhZ2VzqAEwVmVjPE1lc3NhZ2U+AAE8aGFzaGVkX21lc3NhZ2VzrAF8VmVjPE1lc3NhZ2U6OkNvbXByZXNzZWRNZXNzYWdlPgAAnAAABAigpACgDHRwb2xrYWRvdF9wYXJhY2hhaW5fcHJpbWl0aXZlcyhwcmltaXRpdmVzCElkAAAEADgBDHUzMgAApAhgcG9sa2Fkb3RfY29yZV9wcmltaXRpdmVzSEluYm91bmRIcm1wTWVzc2FnZQQsQmxvY2tOdW1iZXIBOAAIARxzZW50X2F0OAEsQmxvY2tOdW1iZXIAARBkYXRhGAFMYWxsb2M6OnZlYzo6VmVjPHU4PgAAqAAAApwArAAAArAAsAAABAiglAC0DEBwYWxsZXRfdGltZXN0YW1wGHBhbGxldBBDYWxsBARUAAEEDHNldAQBDG5vd7gBJFQ6Ok1vbWVudAAATFRTZXQgdGhlIGN1cnJlbnQgdGltZS4AVQFUaGlzIGNhbGwgc2hvdWxkIGJlIGludm9rZWQgZXhhY3RseSBvbmNlIHBlciBibG9jay4gSXQgd2lsbCBwYW5pYyBhdCB0aGUgZmluYWxpemF0aW9u1HBoYXNlLCBpZiB0aGlzIGNhbGwgaGFzbid0IGJlZW4gaW52b2tlZCBieSB0aGF0IHRpbWUuAEEBVGhlIHRpbWVzdGFtcCBzaG91bGQgYmUgZ3JlYXRlciB0aGFuIHRoZSBwcmV2aW91cyBvbmUgYnkgdGhlIGFtb3VudCBzcGVjaWZpZWQgYnloW2BDb25maWc6Ok1pbmltdW1QZXJpb2RgXS4AxFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9Ob25lXy4AUQFUaGlzIGRpc3BhdGNoIGNsYXNzIGlzIF9NYW5kYXRvcnlfIHRvIGVuc3VyZSBpdCBnZXRzIGV4ZWN1dGVkIGluIHRoZSBibG9jay4gQmUgYXdhcmVRAXRoYXQgY2hhbmdpbmcgdGhlIGNvbXBsZXhpdHkgb2YgdGhpcyBjYWxsIGNvdWxkIHJlc3VsdCBleGhhdXN0aW5nIHRoZSByZXNvdXJjZXMgaW4gYYRibG9jayB0byBleGVjdXRlIGFueSBvdGhlciBjYWxscy4ANCMjIENvbXBsZXhpdHkxAS0gYE8oMSlgIChOb3RlIHRoYXQgaW1wbGVtZW50YXRpb25zIG9mIGBPblRpbWVzdGFtcFNldGAgbXVzdCBhbHNvIGJlIGBPKDEpYClVAS0gMSBzdG9yYWdlIHJlYWQgYW5kIDEgc3RvcmFnZSBtdXRhdGlvbiAoY29kZWMgYE8oMSlgIGJlY2F1c2Ugb2YgYERpZFVwZGF0ZTo6dGFrZWAgaW5AICBgb25fZmluYWxpemVgKdQtIDEgZXZlbnQgaGFuZGxlciBgb25fdGltZXN0YW1wX3NldGAuIE11c3QgYmUgYE8oMSlgLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy64AAAGKAC8DFhzdGFnaW5nX3BhcmFjaGFpbl9pbmZvGHBhbGxldBBDYWxsBARUAAEABA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLsAMPHBhbGxldF9wcmVpbWFnZRhwYWxsZXQQQ2FsbAQEVAABFDRub3RlX3ByZWltYWdlBAEUYnl0ZXMYARxWZWM8dTg+AAAQdFJlZ2lzdGVyIGEgcHJlaW1hZ2Ugb24tY2hhaW4uAFUBSWYgdGhlIHByZWltYWdlIHdhcyBwcmV2aW91c2x5IHJlcXVlc3RlZCwgbm8gZmVlcyBvciBkZXBvc2l0cyBhcmUgdGFrZW4gZm9yIHByb3ZpZGluZ1UBdGhlIHByZWltYWdlLiBPdGhlcndpc2UsIGEgZGVwb3NpdCBpcyB0YWtlbiBwcm9wb3J0aW9uYWwgdG8gdGhlIHNpemUgb2YgdGhlIHByZWltYWdlLjx1bm5vdGVfcHJlaW1hZ2UEARBoYXNoQAEcVDo6SGFzaAABGNxDbGVhciBhbiB1bnJlcXVlc3RlZCBwcmVpbWFnZSBmcm9tIHRoZSBydW50aW1lIHN0b3JhZ2UuAPxJZiBgbGVuYCBpcyBwcm92aWRlZCwgdGhlbiBpdCB3aWxsIGJlIGEgbXVjaCBjaGVhcGVyIG9wZXJhdGlvbi4AAQEtIGBoYXNoYDogVGhlIGhhc2ggb2YgdGhlIHByZWltYWdlIHRvIGJlIHJlbW92ZWQgZnJvbSB0aGUgc3RvcmUuuC0gYGxlbmA6IFRoZSBsZW5ndGggb2YgdGhlIHByZWltYWdlIG9mIGBoYXNoYC5AcmVxdWVzdF9wcmVpbWFnZQQBEGhhc2hAARxUOjpIYXNoAAIQQQFSZXF1ZXN0IGEgcHJlaW1hZ2UgYmUgdXBsb2FkZWQgdG8gdGhlIGNoYWluIHdpdGhvdXQgcGF5aW5nIGFueSBmZWVzIG9yIGRlcG9zaXRzLgBVAUlmIHRoZSBwcmVpbWFnZSByZXF1ZXN0cyBoYXMgYWxyZWFkeSBiZWVuIHByb3ZpZGVkIG9uLWNoYWluLCB3ZSB1bnJlc2VydmUgYW55IGRlcG9zaXQ5AWEgdXNlciBtYXkgaGF2ZSBwYWlkLCBhbmQgdGFrZSB0aGUgY29udHJvbCBvZiB0aGUgcHJlaW1hZ2Ugb3V0IG9mIHRoZWlyIGhhbmRzLkh1bnJlcXVlc3RfcHJlaW1hZ2UEARBoYXNoQAEcVDo6SGFzaAADDLxDbGVhciBhIHByZXZpb3VzbHkgbWFkZSByZXF1ZXN0IGZvciBhIHByZWltYWdlLgAtAU5PVEU6IFRISVMgTVVTVCBOT1QgQkUgQ0FMTEVEIE9OIGBoYXNoYCBNT1JFIFRJTUVTIFRIQU4gYHJlcXVlc3RfcHJlaW1hZ2VgLjhlbnN1cmVfdXBkYXRlZAQBGGhhc2hlc8QBMFZlYzxUOjpIYXNoPgAEDLxFbnN1cmUgdGhhdCB0aGUgYnVsayBvZiBwcmUtaW1hZ2VzIGlzIHVwZ3JhZGVkLgA9AVRoZSBjYWxsZXIgcGF5cyBubyBmZWUgaWYgYXQgbGVhc3QgOTAlIG9mIHByZS1pbWFnZXMgd2VyZSBzdWNjZXNzZnVsbHkgdXBkYXRlZC4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuxAAAAkAAyAxAcGFsbGV0X3NjaGVkdWxlchhwYWxsZXQQQ2FsbAQEVAABKCBzY2hlZHVsZRABEHdoZW44AURCbG9ja051bWJlckZvcjxUPgABOG1heWJlX3BlcmlvZGljzAGsT3B0aW9uPHNjaGVkdWxlOjpQZXJpb2Q8QmxvY2tOdW1iZXJGb3I8VD4+PgABIHByaW9yaXR5DAFIc2NoZWR1bGU6OlByaW9yaXR5AAEQY2FsbCABfEJveDw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4AAARwQW5vbnltb3VzbHkgc2NoZWR1bGUgYSB0YXNrLhhjYW5jZWwIARB3aGVuOAFEQmxvY2tOdW1iZXJGb3I8VD4AARRpbmRleDgBDHUzMgABEGEBQ2FuY2VsIGEgc2NoZWR1bGVkIHRhc2sgKG5hbWVkIG9yIGFub255bW91cyksIGJ5IHByb3ZpZGluZyB0aGUgYmxvY2sgaXQgaXMgc2NoZWR1bGVkIGZvchkBZXhlY3V0aW9uIGluLCBhcyB3ZWxsIGFzIHRoZSBpbmRleCBvZiB0aGUgdGFzayBpbiB0aGF0IGJsb2NrJ3MgYWdlbmRhLgA1AUluIHRoZSBjYXNlIG9mIGEgbmFtZWQgdGFzaywgaXQgd2lsbCByZW1vdmUgaXQgZnJvbSB0aGUgbG9va3VwIHRhYmxlIGFzIHdlbGwuOHNjaGVkdWxlX25hbWVkFAEIaWQIASBUYXNrTmFtZQABEHdoZW44AURCbG9ja051bWJlckZvcjxUPgABOG1heWJlX3BlcmlvZGljzAGsT3B0aW9uPHNjaGVkdWxlOjpQZXJpb2Q8QmxvY2tOdW1iZXJGb3I8VD4+PgABIHByaW9yaXR5DAFIc2NoZWR1bGU6OlByaW9yaXR5AAEQY2FsbCABfEJveDw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4AAgRYU2NoZWR1bGUgYSBuYW1lZCB0YXNrLjBjYW5jZWxfbmFtZWQEAQhpZAgBIFRhc2tOYW1lAAMEeENhbmNlbCBhIG5hbWVkIHNjaGVkdWxlZCB0YXNrLjhzY2hlZHVsZV9hZnRlchABFGFmdGVyOAFEQmxvY2tOdW1iZXJGb3I8VD4AAThtYXliZV9wZXJpb2RpY8wBrE9wdGlvbjxzY2hlZHVsZTo6UGVyaW9kPEJsb2NrTnVtYmVyRm9yPFQ+Pj4AASBwcmlvcml0eQwBSHNjaGVkdWxlOjpQcmlvcml0eQABEGNhbGwgAXxCb3g8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AAQEqEFub255bW91c2x5IHNjaGVkdWxlIGEgdGFzayBhZnRlciBhIGRlbGF5LlBzY2hlZHVsZV9uYW1lZF9hZnRlchQBCGlkCAEgVGFza05hbWUAARRhZnRlcjgBREJsb2NrTnVtYmVyRm9yPFQ+AAE4bWF5YmVfcGVyaW9kaWPMAaxPcHRpb248c2NoZWR1bGU6OlBlcmlvZDxCbG9ja051bWJlckZvcjxUPj4+AAEgcHJpb3JpdHkMAUhzY2hlZHVsZTo6UHJpb3JpdHkAARBjYWxsIAF8Qm94PDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgAFBJBTY2hlZHVsZSBhIG5hbWVkIHRhc2sgYWZ0ZXIgYSBkZWxheS4kc2V0X3JldHJ5DAEQdGFza9ABeFRhc2tBZGRyZXNzPEJsb2NrTnVtYmVyRm9yPFQ+PgABHHJldHJpZXMMAQh1OAABGHBlcmlvZDgBREJsb2NrTnVtYmVyRm9yPFQ+AAY4WQFTZXQgYSByZXRyeSBjb25maWd1cmF0aW9uIGZvciBhIHRhc2sgc28gdGhhdCwgaW4gY2FzZSBpdHMgc2NoZWR1bGVkIHJ1biBmYWlscywgaXQgd2lsbFUBYmUgcmV0cmllZCBhZnRlciBgcGVyaW9kYCBibG9ja3MsIGZvciBhIHRvdGFsIGFtb3VudCBvZiBgcmV0cmllc2AgcmV0cmllcyBvciB1bnRpbCBpdCRzdWNjZWVkcy4AVQFUYXNrcyB3aGljaCBuZWVkIHRvIGJlIHNjaGVkdWxlZCBmb3IgYSByZXRyeSBhcmUgc3RpbGwgc3ViamVjdCB0byB3ZWlnaHQgbWV0ZXJpbmcgYW5kUQFhZ2VuZGEgc3BhY2UsIHNhbWUgYXMgYSByZWd1bGFyIHRhc2suIElmIGEgcGVyaW9kaWMgdGFzayBmYWlscywgaXQgd2lsbCBiZSBzY2hlZHVsZWSQbm9ybWFsbHkgd2hpbGUgdGhlIHRhc2sgaXMgcmV0cnlpbmcuAFEBVGFza3Mgc2NoZWR1bGVkIGFzIGEgcmVzdWx0IG9mIGEgcmV0cnkgZm9yIGEgcGVyaW9kaWMgdGFzayBhcmUgdW5uYW1lZCwgbm9uLXBlcmlvZGljPQFjbG9uZXMgb2YgdGhlIG9yaWdpbmFsIHRhc2suIFRoZWlyIHJldHJ5IGNvbmZpZ3VyYXRpb24gd2lsbCBiZSBkZXJpdmVkIGZyb20gdGhlTQFvcmlnaW5hbCB0YXNrJ3MgY29uZmlndXJhdGlvbiwgYnV0IHdpbGwgaGF2ZSBhIGxvd2VyIHZhbHVlIGZvciBgcmVtYWluaW5nYCB0aGFuIHRoZWRvcmlnaW5hbCBgdG90YWxfcmV0cmllc2AuAC0BVGhpcyBjYWxsICoqY2Fubm90KiogYmUgdXNlZCB0byBzZXQgYSByZXRyeSBjb25maWd1cmF0aW9uIGZvciBhIG5hbWVkIHRhc2suPHNldF9yZXRyeV9uYW1lZAwBCGlkCAEgVGFza05hbWUAARxyZXRyaWVzDAEIdTgAARhwZXJpb2Q4AURCbG9ja051bWJlckZvcjxUPgAHOF0BU2V0IGEgcmV0cnkgY29uZmlndXJhdGlvbiBmb3IgYSBuYW1lZCB0YXNrIHNvIHRoYXQsIGluIGNhc2UgaXRzIHNjaGVkdWxlZCBydW4gZmFpbHMsIGl0XQF3aWxsIGJlIHJldHJpZWQgYWZ0ZXIgYHBlcmlvZGAgYmxvY2tzLCBmb3IgYSB0b3RhbCBhbW91bnQgb2YgYHJldHJpZXNgIHJldHJpZXMgb3IgdW50aWwwaXQgc3VjY2VlZHMuAFUBVGFza3Mgd2hpY2ggbmVlZCB0byBiZSBzY2hlZHVsZWQgZm9yIGEgcmV0cnkgYXJlIHN0aWxsIHN1YmplY3QgdG8gd2VpZ2h0IG1ldGVyaW5nIGFuZFEBYWdlbmRhIHNwYWNlLCBzYW1lIGFzIGEgcmVndWxhciB0YXNrLiBJZiBhIHBlcmlvZGljIHRhc2sgZmFpbHMsIGl0IHdpbGwgYmUgc2NoZWR1bGVkkG5vcm1hbGx5IHdoaWxlIHRoZSB0YXNrIGlzIHJldHJ5aW5nLgBRAVRhc2tzIHNjaGVkdWxlZCBhcyBhIHJlc3VsdCBvZiBhIHJldHJ5IGZvciBhIHBlcmlvZGljIHRhc2sgYXJlIHVubmFtZWQsIG5vbi1wZXJpb2RpYz0BY2xvbmVzIG9mIHRoZSBvcmlnaW5hbCB0YXNrLiBUaGVpciByZXRyeSBjb25maWd1cmF0aW9uIHdpbGwgYmUgZGVyaXZlZCBmcm9tIHRoZU0Bb3JpZ2luYWwgdGFzaydzIGNvbmZpZ3VyYXRpb24sIGJ1dCB3aWxsIGhhdmUgYSBsb3dlciB2YWx1ZSBmb3IgYHJlbWFpbmluZ2AgdGhhbiB0aGVkb3JpZ2luYWwgYHRvdGFsX3JldHJpZXNgLgANAVRoaXMgaXMgdGhlIG9ubHkgd2F5IHRvIHNldCBhIHJldHJ5IGNvbmZpZ3VyYXRpb24gZm9yIGEgbmFtZWQgdGFzay4wY2FuY2VsX3JldHJ5BAEQdGFza9ABeFRhc2tBZGRyZXNzPEJsb2NrTnVtYmVyRm9yPFQ+PgAIBKhSZW1vdmVzIHRoZSByZXRyeSBjb25maWd1cmF0aW9uIG9mIGEgdGFzay5IY2FuY2VsX3JldHJ5X25hbWVkBAEIaWQIASBUYXNrTmFtZQAJBLxDYW5jZWwgdGhlIHJldHJ5IGNvbmZpZ3VyYXRpb24gb2YgYSBuYW1lZCB0YXNrLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy7MBBhPcHRpb24EBFQB0AEIEE5vbmUAAAAQU29tZQQA0AAAAQAA0AAABAg4OADUDERwYWxsZXRfcGFyYW1ldGVycxhwYWxsZXQQQ2FsbAQEVAABBDRzZXRfcGFyYW1ldGVyBAEka2V5X3ZhbHVl2AFQVDo6UnVudGltZVBhcmFtZXRlcnMAABB0U2V0IHRoZSB2YWx1ZSBvZiBhIHBhcmFtZXRlci4AVQFUaGUgZGlzcGF0Y2ggb3JpZ2luIG9mIHRoaXMgY2FsbCBtdXN0IGJlIGBBZG1pbk9yaWdpbmAgZm9yIHRoZSBnaXZlbiBga2V5YC4gVmFsdWVzIGJliGRlbGV0ZWQgYnkgc2V0dGluZyB0aGVtIHRvIGBOb25lYC4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMu2AhcYXNzZXRfaHViX3Bhc2VvX3J1bnRpbWVEUnVudGltZVBhcmFtZXRlcnMAAQw8U3Rha2luZ0VsZWN0aW9uBADcAbBkeW5hbWljX3BhcmFtczo6c3Rha2luZ19lbGVjdGlvbjo6UGFyYW1ldGVycwAAACRTY2hlZHVsZXIEAAUBAZRkeW5hbWljX3BhcmFtczo6c2NoZWR1bGVyOjpQYXJhbWV0ZXJzAAEAME1lc3NhZ2VRdWV1ZQQAGQEBpGR5bmFtaWNfcGFyYW1zOjptZXNzYWdlX3F1ZXVlOjpQYXJhbWV0ZXJzAAIAANwQXGFzc2V0X2h1Yl9wYXNlb19ydW50aW1lOGR5bmFtaWNfcGFyYW1zQHN0YWtpbmdfZWxlY3Rpb24oUGFyYW1ldGVycwABHCxTaWduZWRQaGFzZQgA4AEsU2lnbmVkUGhhc2UAAOQBTE9wdGlvbjxCbG9ja051bWJlcj4AAABQTWF4U2lnbmVkU3VibWlzc2lvbnMIAOgBUE1heFNpZ25lZFN1Ym1pc3Npb25zAADkASxPcHRpb248dTMyPgABADRVbnNpZ25lZFBoYXNlCADsATRVbnNpZ25lZFBoYXNlAADkAUxPcHRpb248QmxvY2tOdW1iZXI+AAIAKE1pbmVyUGFnZXMIAPABKE1pbmVyUGFnZXMAAOQBLE9wdGlvbjx1MzI+AAMARE1heEVsZWN0aW5nVm90ZXJzCAD0AURNYXhFbGVjdGluZ1ZvdGVycwAA5AEsT3B0aW9uPHUzMj4ABABYVGFyZ2V0U25hcHNob3RQZXJCbG9jawgA+AFYVGFyZ2V0U25hcHNob3RQZXJCbG9jawAA5AEsT3B0aW9uPHUzMj4ABQA4TWF4RXJhRHVyYXRpb24IAPwBOE1heEVyYUR1cmF0aW9uAAABAQEsT3B0aW9uPHU2ND4ABgAA4BBcYXNzZXRfaHViX3Bhc2VvX3J1bnRpbWU4ZHluYW1pY19wYXJhbXNAc3Rha2luZ19lbGVjdGlvbixTaWduZWRQaGFzZQAAAADkBBhPcHRpb24EBFQBOAEIEE5vbmUAAAAQU29tZQQAOAAAAQAA6BBcYXNzZXRfaHViX3Bhc2VvX3J1bnRpbWU4ZHluYW1pY19wYXJhbXNAc3Rha2luZ19lbGVjdGlvblBNYXhTaWduZWRTdWJtaXNzaW9ucwAAAADsEFxhc3NldF9odWJfcGFzZW9fcnVudGltZThkeW5hbWljX3BhcmFtc0BzdGFraW5nX2VsZWN0aW9uNFVuc2lnbmVkUGhhc2UAAAAA8BBcYXNzZXRfaHViX3Bhc2VvX3J1bnRpbWU4ZHluYW1pY19wYXJhbXNAc3Rha2luZ19lbGVjdGlvbihNaW5lclBhZ2VzAAAAAPQQXGFzc2V0X2h1Yl9wYXNlb19ydW50aW1lOGR5bmFtaWNfcGFyYW1zQHN0YWtpbmdfZWxlY3Rpb25ETWF4RWxlY3RpbmdWb3RlcnMAAAAA+BBcYXNzZXRfaHViX3Bhc2VvX3J1bnRpbWU4ZHluYW1pY19wYXJhbXNAc3Rha2luZ19lbGVjdGlvblhUYXJnZXRTbmFwc2hvdFBlckJsb2NrAAAAAPwQXGFzc2V0X2h1Yl9wYXNlb19ydW50aW1lOGR5bmFtaWNfcGFyYW1zQHN0YWtpbmdfZWxlY3Rpb244TWF4RXJhRHVyYXRpb24AAAAAAQEEGE9wdGlvbgQEVAEoAQgQTm9uZQAAABBTb21lBAAoAAABAAAFARBcYXNzZXRfaHViX3Bhc2VvX3J1bnRpbWU4ZHluYW1pY19wYXJhbXMkc2NoZWR1bGVyKFBhcmFtZXRlcnMAAQhQTWF4U2NoZWR1bGVkUGVyQmxvY2sIAAkBAVBNYXhTY2hlZHVsZWRQZXJCbG9jawAA5AEsT3B0aW9uPHUzMj4AAAA0TWF4aW11bVdlaWdodAgADQEBNE1heGltdW1XZWlnaHQAABEBAThPcHRpb248V2VpZ2h0PgABAAAJARBcYXNzZXRfaHViX3Bhc2VvX3J1bnRpbWU4ZHluYW1pY19wYXJhbXMkc2NoZWR1bGVyUE1heFNjaGVkdWxlZFBlckJsb2NrAAAAAA0BEFxhc3NldF9odWJfcGFzZW9fcnVudGltZThkeW5hbWljX3BhcmFtcyRzY2hlZHVsZXI0TWF4aW11bVdlaWdodAAAAAARAQQYT3B0aW9uBARUARUBAQgQTm9uZQAAABBTb21lBAAVAQAAAQAAFQEMKHNwX3dlaWdodHMkd2VpZ2h0X3YyGFdlaWdodAAACAEgcmVmX3RpbWW4AQx1NjQAAShwcm9vZl9zaXpluAEMdTY0AAAZARBcYXNzZXRfaHViX3Bhc2VvX3J1bnRpbWU4ZHluYW1pY19wYXJhbXM0bWVzc2FnZV9xdWV1ZShQYXJhbWV0ZXJzAAEIPE1heE9uSW5pdFdlaWdodAgAHQEBPE1heE9uSW5pdFdlaWdodAAAIQEBWE9wdGlvbjxPcHRpb248V2VpZ2h0Pj4AAAA8TWF4T25JZGxlV2VpZ2h0CAAlAQE8TWF4T25JZGxlV2VpZ2h0AAAhAQFYT3B0aW9uPE9wdGlvbjxXZWlnaHQ+PgABAAAdARBcYXNzZXRfaHViX3Bhc2VvX3J1bnRpbWU4ZHluYW1pY19wYXJhbXM0bWVzc2FnZV9xdWV1ZTxNYXhPbkluaXRXZWlnaHQAAAAAIQEEGE9wdGlvbgQEVAERAQEIEE5vbmUAAAAQU29tZQQAEQEAAAEAACUBEFxhc3NldF9odWJfcGFzZW9fcnVudGltZThkeW5hbWljX3BhcmFtczRtZXNzYWdlX3F1ZXVlPE1heE9uSWRsZVdlaWdodAAAAAApAQxEcGFsbGV0X21pZ3JhdGlvbnMYcGFsbGV0EENhbGwEBFQAARBAZm9yY2Vfc2V0X2N1cnNvcgQBGGN1cnNvci0BAUxPcHRpb248Q3Vyc29yT2Y8VD4+AAAUXQFBbGxvd3Mgcm9vdCB0byBzZXQgYSBjdXJzb3IgdG8gZm9yY2VmdWxseSBzdGFydCwgc3RvcCBvciBmb3J3YXJkIHRoZSBtaWdyYXRpb24gcHJvY2Vzcy4ASQFTaG91bGQgbm9ybWFsbHkgbm90IGJlIG5lZWRlZCBhbmQgaXMgb25seSBpbiBwbGFjZSBhcyBlbWVyZ2VuY3kgbWVhc3VyZS4gTm90ZSB0aGF0BQFyZXN0YXJ0aW5nIHRoZSBtaWdyYXRpb24gcHJvY2VzcyBpbiB0aGlzIG1hbm5lciB3aWxsIG5vdCBjYWxsIHRoZS0BW2BNaWdyYXRpb25TdGF0dXNIYW5kbGVyOjpzdGFydGVkYF0gaG9vayBvciBlbWl0IGFuIGBVcGdyYWRlU3RhcnRlZGAgZXZlbnQuXGZvcmNlX3NldF9hY3RpdmVfY3Vyc29yDAEUaW5kZXg4AQx1MzIAATBpbm5lcl9jdXJzb3I9AQFYT3B0aW9uPFJhd0N1cnNvck9mPFQ+PgABKHN0YXJ0ZWRfYXTkAWRPcHRpb248QmxvY2tOdW1iZXJGb3I8VD4+AAEYWQFBbGxvd3Mgcm9vdCB0byBzZXQgYW4gYWN0aXZlIGN1cnNvciB0byBmb3JjZWZ1bGx5IHN0YXJ0L2ZvcndhcmQgdGhlIG1pZ3JhdGlvbiBwcm9jZXNzLgBFAVRoaXMgaXMgYW4gZWRnZS1jYXNlIHZlcnNpb24gb2YgW2BTZWxmOjpmb3JjZV9zZXRfY3Vyc29yYF0gdGhhdCBhbGxvd3MgdG8gc2V0IHRoZWEBYHN0YXJ0ZWRfYXRgIHZhbHVlIHRvIHRoZSBuZXh0IGJsb2NrIG51bWJlci4gT3RoZXJ3aXNlIHRoaXMgd291bGQgbm90IGJlIHBvc3NpYmxlLCBzaW5jZUUBYGZvcmNlX3NldF9jdXJzb3JgIHRha2VzIGFuIGFic29sdXRlIGJsb2NrIG51bWJlci4gU2V0dGluZyBgc3RhcnRlZF9hdGAgdG8gYE5vbmVgAQFpbmRpY2F0ZXMgdGhhdCB0aGUgY3VycmVudCBibG9jayBudW1iZXIgcGx1cyBvbmUgc2hvdWxkIGJlIHVzZWQuSGZvcmNlX29uYm9hcmRfbWJtcwACEKBGb3JjZXMgdGhlIG9uYm9hcmRpbmcgb2YgdGhlIG1pZ3JhdGlvbnMuAF0BVGhpcyBwcm9jZXNzIGhhcHBlbnMgYXV0b21hdGljYWxseSBvbiBhIHJ1bnRpbWUgdXBncmFkZS4gSXQgaXMgaW4gcGxhY2UgYXMgYW4gZW1lcmdlbmN5/G1lYXN1cmVtZW50LiBUaGUgY3Vyc29yIG5lZWRzIHRvIGJlIGBOb25lYCBmb3IgdGhpcyB0byBzdWNjZWVkLjhjbGVhcl9oaXN0b3JpYwQBIHNlbGVjdG9yQQEBoEhpc3RvcmljQ2xlYW51cFNlbGVjdG9yPElkZW50aWZpZXJPZjxUPj4AAxRoQ2xlYXJzIHRoZSBgSGlzdG9yaWNgIHNldC4ADQFgbWFwX2N1cnNvcmAgbXVzdCBiZSBzZXQgdG8gdGhlIGxhc3QgdmFsdWUgdGhhdCB3YXMgcmV0dXJuZWQgYnkgdGhlXQFgSGlzdG9yaWNDbGVhcmVkYCBldmVudC4gVGhlIGZpcnN0IHRpbWUgYE5vbmVgIGNhbiBiZSB1c2VkLiBgbGltaXRgIG11c3QgYmUgY2hvc2VuIGluIGGod2F5IHRoYXQgd2lsbCByZXN1bHQgaW4gYSBzZW5zaWJsZSB3ZWlnaHQuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLi0BBBhPcHRpb24EBFQBMQEBCBBOb25lAAAAEFNvbWUEADEBAAABAAAxAQhEcGFsbGV0X21pZ3JhdGlvbnM8TWlncmF0aW9uQ3Vyc29yCBhDdXJzb3IBNQEsQmxvY2tOdW1iZXIBOAEIGEFjdGl2ZQQAOQEBhEFjdGl2ZUN1cnNvcjxDdXJzb3IsIEJsb2NrTnVtYmVyPgAAABRTdHVjawABAAA1AQxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQwEUwAABAAYARhWZWM8VD4AADkBCERwYWxsZXRfbWlncmF0aW9uczBBY3RpdmVDdXJzb3IIGEN1cnNvcgE1ASxCbG9ja051bWJlcgE4AAwBFGluZGV4OAEMdTMyAAEwaW5uZXJfY3Vyc29yPQEBOE9wdGlvbjxDdXJzb3I+AAEoc3RhcnRlZF9hdDgBLEJsb2NrTnVtYmVyAAA9AQQYT3B0aW9uBARUATUBAQgQTm9uZQAAABBTb21lBAA1AQAAAQAAQQEIRHBhbGxldF9taWdyYXRpb25zXEhpc3RvcmljQ2xlYW51cFNlbGVjdG9yBAhJZAFFAQEIIFNwZWNpZmljBABJAQEcVmVjPElkPgAAACBXaWxkY2FyZAgBFGxpbWl05AEsT3B0aW9uPHUzMj4AATxwcmV2aW91c19jdXJzb3JNAQE8T3B0aW9uPFZlYzx1OD4+AAEAAEUBDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBDARTAAAEABgBGFZlYzxUPgAASQEAAAJFAQBNAQQYT3B0aW9uBARUARgBCBBOb25lAAAAEFNvbWUEABgAAAEAAFEBDDxwYWxsZXRfYmFsYW5jZXMYcGFsbGV0EENhbGwIBFQABEkAASRQdHJhbnNmZXJfYWxsb3dfZGVhdGgIARBkZXN0AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARR2YWx1ZVUBAShUOjpCYWxhbmNlAAAc1FRyYW5zZmVyIHNvbWUgbGlxdWlkIGZyZWUgYmFsYW5jZSB0byBhbm90aGVyIGFjY291bnQuADUBYHRyYW5zZmVyX2FsbG93X2RlYXRoYCB3aWxsIHNldCB0aGUgYEZyZWVCYWxhbmNlYCBvZiB0aGUgc2VuZGVyIGFuZCByZWNlaXZlci4RAUlmIHRoZSBzZW5kZXIncyBhY2NvdW50IGlzIGJlbG93IHRoZSBleGlzdGVudGlhbCBkZXBvc2l0IGFzIGEgcmVzdWx0sG9mIHRoZSB0cmFuc2ZlciwgdGhlIGFjY291bnQgd2lsbCBiZSByZWFwZWQuABUBVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgYFNpZ25lZGAgYnkgdGhlIHRyYW5zYWN0b3IuOGZvcmNlX3RyYW5zZmVyDAEYc291cmNlAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARBkZXN0AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARR2YWx1ZVUBAShUOjpCYWxhbmNlAAIIYQFFeGFjdGx5IGFzIGB0cmFuc2Zlcl9hbGxvd19kZWF0aGAsIGV4Y2VwdCB0aGUgb3JpZ2luIG11c3QgYmUgcm9vdCBhbmQgdGhlIHNvdXJjZSBhY2NvdW50RG1heSBiZSBzcGVjaWZpZWQuTHRyYW5zZmVyX2tlZXBfYWxpdmUIARBkZXN0AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARR2YWx1ZVUBAShUOjpCYWxhbmNlAAMYWQFTYW1lIGFzIHRoZSBbYHRyYW5zZmVyX2FsbG93X2RlYXRoYF0gY2FsbCwgYnV0IHdpdGggYSBjaGVjayB0aGF0IHRoZSB0cmFuc2ZlciB3aWxsIG5vdGBraWxsIHRoZSBvcmlnaW4gYWNjb3VudC4A6Dk5JSBvZiB0aGUgdGltZSB5b3Ugd2FudCBbYHRyYW5zZmVyX2FsbG93X2RlYXRoYF0gaW5zdGVhZC4A8FtgdHJhbnNmZXJfYWxsb3dfZGVhdGhgXTogc3RydWN0LlBhbGxldC5odG1sI21ldGhvZC50cmFuc2ZlcjB0cmFuc2Zlcl9hbGwIARBkZXN0AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AAShrZWVwX2FsaXZlXQEBEGJvb2wABDwFAVRyYW5zZmVyIHRoZSBlbnRpcmUgdHJhbnNmZXJhYmxlIGJhbGFuY2UgZnJvbSB0aGUgY2FsbGVyIGFjY291bnQuAFkBTk9URTogVGhpcyBmdW5jdGlvbiBvbmx5IGF0dGVtcHRzIHRvIHRyYW5zZmVyIF90cmFuc2ZlcmFibGVfIGJhbGFuY2VzLiBUaGlzIG1lYW5zIHRoYXRhAWFueSBsb2NrZWQsIHJlc2VydmVkLCBvciBleGlzdGVudGlhbCBkZXBvc2l0cyAod2hlbiBga2VlcF9hbGl2ZWAgaXMgYHRydWVgKSwgd2lsbCBub3QgYmVdAXRyYW5zZmVycmVkIGJ5IHRoaXMgZnVuY3Rpb24uIFRvIGVuc3VyZSB0aGF0IHRoaXMgZnVuY3Rpb24gcmVzdWx0cyBpbiBhIGtpbGxlZCBhY2NvdW50LEUBeW91IG1pZ2h0IG5lZWQgdG8gcHJlcGFyZSB0aGUgYWNjb3VudCBieSByZW1vdmluZyBhbnkgcmVmZXJlbmNlIGNvdW50ZXJzLCBzdG9yYWdlQGRlcG9zaXRzLCBldGMuLi4AwFRoZSBkaXNwYXRjaCBvcmlnaW4gb2YgdGhpcyBjYWxsIG11c3QgYmUgU2lnbmVkLgCgLSBgZGVzdGA6IFRoZSByZWNpcGllbnQgb2YgdGhlIHRyYW5zZmVyLlkBLSBga2VlcF9hbGl2ZWA6IEEgYm9vbGVhbiB0byBkZXRlcm1pbmUgaWYgdGhlIGB0cmFuc2Zlcl9hbGxgIG9wZXJhdGlvbiBzaG91bGQgc2VuZCBhbGxNASAgb2YgdGhlIGZ1bmRzIHRoZSBhY2NvdW50IGhhcywgY2F1c2luZyB0aGUgc2VuZGVyIGFjY291bnQgdG8gYmUga2lsbGVkIChmYWxzZSksIG9yWQEgIHRyYW5zZmVyIGV2ZXJ5dGhpbmcgZXhjZXB0IGF0IGxlYXN0IHRoZSBleGlzdGVudGlhbCBkZXBvc2l0LCB3aGljaCB3aWxsIGd1YXJhbnRlZSB0b5wgIGtlZXAgdGhlIHNlbmRlciBhY2NvdW50IGFsaXZlICh0cnVlKS48Zm9yY2VfdW5yZXNlcnZlCAEMd2hvAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARhhbW91bnRZAQEoVDo6QmFsYW5jZQAFDLBVbnJlc2VydmUgc29tZSBiYWxhbmNlIGZyb20gYSB1c2VyIGJ5IGZvcmNlLgBsQ2FuIG9ubHkgYmUgY2FsbGVkIGJ5IFJPT1QuQHVwZ3JhZGVfYWNjb3VudHMEAQx3aG9hAQFEVmVjPFQ6OkFjY291bnRJZD4ABiBwVXBncmFkZSBhIHNwZWNpZmllZCBhY2NvdW50LgB0LSBgb3JpZ2luYDogTXVzdCBiZSBgU2lnbmVkYC6QLSBgd2hvYDogVGhlIGFjY291bnQgdG8gYmUgdXBncmFkZWQuAFUBVGhpcyB3aWxsIHdhaXZlIHRoZSB0cmFuc2FjdGlvbiBmZWUgaWYgYXQgbGVhc3QgYWxsIGJ1dCAxMCUgb2YgdGhlIGFjY291bnRzIG5lZWRlZCB0b0EBYmUgdXBncmFkZWQuIChXZSBsZXQgc29tZSBub3QgaGF2ZSB0byBiZSB1cGdyYWRlZCBqdXN0IGluIG9yZGVyIHRvIGFsbG93IGZvciB0aGVYcG9zc2liaWxpdHkgb2YgY2h1cm4pLkRmb3JjZV9zZXRfYmFsYW5jZQgBDHdobwABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEgbmV3X2ZyZWVVAQEoVDo6QmFsYW5jZQAIDKxTZXQgdGhlIHJlZ3VsYXIgYmFsYW5jZSBvZiBhIGdpdmVuIGFjY291bnQuALBUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgaXMgYHJvb3RgLmxmb3JjZV9hZGp1c3RfdG90YWxfaXNzdWFuY2UIASRkaXJlY3Rpb25lAQFMQWRqdXN0bWVudERpcmVjdGlvbgABFGRlbHRhVQEBKFQ6OkJhbGFuY2UACRS4QWRqdXN0IHRoZSB0b3RhbCBpc3N1YW5jZSBpbiBhIHNhdHVyYXRpbmcgd2F5LgD8Q2FuIG9ubHkgYmUgY2FsbGVkIGJ5IHJvb3QgYW5kIGFsd2F5cyBuZWVkcyBhIHBvc2l0aXZlIGBkZWx0YWAuACQjIEV4YW1wbGUQYnVybggBFHZhbHVlVQEBKFQ6OkJhbGFuY2UAAShrZWVwX2FsaXZlXQEBEGJvb2wAChz8QnVybiB0aGUgc3BlY2lmaWVkIGxpcXVpZCBmcmVlIGJhbGFuY2UgZnJvbSB0aGUgb3JpZ2luIGFjY291bnQuACUBSWYgdGhlIG9yaWdpbidzIGFjY291bnQgZW5kcyB1cCBiZWxvdyB0aGUgZXhpc3RlbnRpYWwgZGVwb3NpdCBhcyBhIHJlc3VsdAkBb2YgdGhlIGJ1cm4gYW5kIGBrZWVwX2FsaXZlYCBpcyBmYWxzZSwgdGhlIGFjY291bnQgd2lsbCBiZSByZWFwZWQuAFEBVW5saWtlIHNlbmRpbmcgZnVuZHMgdG8gYSBfYnVybl8gYWRkcmVzcywgd2hpY2ggbWVyZWx5IG1ha2VzIHRoZSBmdW5kcyBpbmFjY2Vzc2libGUsIQF0aGlzIGBidXJuYCBvcGVyYXRpb24gd2lsbCByZWR1Y2UgdG90YWwgaXNzdWFuY2UgYnkgdGhlIGFtb3VudCBfYnVybmVkXy4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuVQEAAAZZAQBZAQAABQcAXQEAAAUAAGEBAAACBABlAQw8cGFsbGV0X2JhbGFuY2VzFHR5cGVzTEFkanVzdG1lbnREaXJlY3Rpb24AAQggSW5jcmVhc2UAAAAgRGVjcmVhc2UAAQAAaQEMOHBhbGxldF92ZXN0aW5nGHBhbGxldBBDYWxsBARUAAEYEHZlc3QAACS4VW5sb2NrIGFueSB2ZXN0ZWQgZnVuZHMgb2YgdGhlIHNlbmRlciBhY2NvdW50LgBdAVRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfIGFuZCB0aGUgc2VuZGVyIG11c3QgaGF2ZSBmdW5kcyBzdGlsbGRsb2NrZWQgdW5kZXIgdGhpcyBwYWxsZXQuANBFbWl0cyBlaXRoZXIgYFZlc3RpbmdDb21wbGV0ZWRgIG9yIGBWZXN0aW5nVXBkYXRlZGAuADQjIyBDb21wbGV4aXR5JC0gYE8oMSlgLih2ZXN0X290aGVyBAEYdGFyZ2V0AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AASy4VW5sb2NrIGFueSB2ZXN0ZWQgZnVuZHMgb2YgYSBgdGFyZ2V0YCBhY2NvdW50LgDMVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uAFEBLSBgdGFyZ2V0YDogVGhlIGFjY291bnQgd2hvc2UgdmVzdGVkIGZ1bmRzIHNob3VsZCBiZSB1bmxvY2tlZC4gTXVzdCBoYXZlIGZ1bmRzIHN0aWxsZGxvY2tlZCB1bmRlciB0aGlzIHBhbGxldC4A0EVtaXRzIGVpdGhlciBgVmVzdGluZ0NvbXBsZXRlZGAgb3IgYFZlc3RpbmdVcGRhdGVkYC4ANCMjIENvbXBsZXhpdHkkLSBgTygxKWAuPHZlc3RlZF90cmFuc2ZlcggBGHRhcmdldAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEgc2NoZWR1bGVtAQGwVmVzdGluZ0luZm88QmFsYW5jZU9mPFQ+LCBCbG9ja051bWJlckZvcjxUPj4AAjRkQ3JlYXRlIGEgdmVzdGVkIHRyYW5zZmVyLgDMVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uAMwtIGB0YXJnZXRgOiBUaGUgYWNjb3VudCByZWNlaXZpbmcgdGhlIHZlc3RlZCBmdW5kcy7wLSBgc2NoZWR1bGVgOiBUaGUgdmVzdGluZyBzY2hlZHVsZSBhdHRhY2hlZCB0byB0aGUgdHJhbnNmZXIuAFxFbWl0cyBgVmVzdGluZ0NyZWF0ZWRgLgD8Tk9URTogVGhpcyB3aWxsIHVubG9jayBhbGwgc2NoZWR1bGVzIHRocm91Z2ggdGhlIGN1cnJlbnQgYmxvY2suADQjIyBDb21wbGV4aXR5JC0gYE8oMSlgLlRmb3JjZV92ZXN0ZWRfdHJhbnNmZXIMARhzb3VyY2UAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGHRhcmdldAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEgc2NoZWR1bGVtAQGwVmVzdGluZ0luZm88QmFsYW5jZU9mPFQ+LCBCbG9ja051bWJlckZvcjxUPj4AAzhgRm9yY2UgYSB2ZXN0ZWQgdHJhbnNmZXIuAMRUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfUm9vdF8uAOgtIGBzb3VyY2VgOiBUaGUgYWNjb3VudCB3aG9zZSBmdW5kcyBzaG91bGQgYmUgdHJhbnNmZXJyZWQuEQEtIGB0YXJnZXRgOiBUaGUgYWNjb3VudCB0aGF0IHNob3VsZCBiZSB0cmFuc2ZlcnJlZCB0aGUgdmVzdGVkIGZ1bmRzLvAtIGBzY2hlZHVsZWA6IFRoZSB2ZXN0aW5nIHNjaGVkdWxlIGF0dGFjaGVkIHRvIHRoZSB0cmFuc2Zlci4AXEVtaXRzIGBWZXN0aW5nQ3JlYXRlZGAuAPxOT1RFOiBUaGlzIHdpbGwgdW5sb2NrIGFsbCBzY2hlZHVsZXMgdGhyb3VnaCB0aGUgY3VycmVudCBibG9jay4ANCMjIENvbXBsZXhpdHkkLSBgTygxKWAuPG1lcmdlX3NjaGVkdWxlcwgBPHNjaGVkdWxlMV9pbmRleDgBDHUzMgABPHNjaGVkdWxlMl9pbmRleDgBDHUzMgAEVF0BTWVyZ2UgdHdvIHZlc3Rpbmcgc2NoZWR1bGVzIHRvZ2V0aGVyLCBjcmVhdGluZyBhIG5ldyB2ZXN0aW5nIHNjaGVkdWxlIHRoYXQgdW5sb2NrcyBvdmVyVQF0aGUgaGlnaGVzdCBwb3NzaWJsZSBzdGFydCBhbmQgZW5kIGJsb2Nrcy4gSWYgYm90aCBzY2hlZHVsZXMgaGF2ZSBhbHJlYWR5IHN0YXJ0ZWQgdGhlWQFjdXJyZW50IGJsb2NrIHdpbGwgYmUgdXNlZCBhcyB0aGUgc2NoZWR1bGUgc3RhcnQ7IHdpdGggdGhlIGNhdmVhdCB0aGF0IGlmIG9uZSBzY2hlZHVsZV0BaXMgZmluaXNoZWQgYnkgdGhlIGN1cnJlbnQgYmxvY2ssIHRoZSBvdGhlciB3aWxsIGJlIHRyZWF0ZWQgYXMgdGhlIG5ldyBtZXJnZWQgc2NoZWR1bGUsLHVubW9kaWZpZWQuAPhOT1RFOiBJZiBgc2NoZWR1bGUxX2luZGV4ID09IHNjaGVkdWxlMl9pbmRleGAgdGhpcyBpcyBhIG5vLW9wLkEBTk9URTogVGhpcyB3aWxsIHVubG9jayBhbGwgc2NoZWR1bGVzIHRocm91Z2ggdGhlIGN1cnJlbnQgYmxvY2sgcHJpb3IgdG8gbWVyZ2luZy5hAU5PVEU6IElmIGJvdGggc2NoZWR1bGVzIGhhdmUgZW5kZWQgYnkgdGhlIGN1cnJlbnQgYmxvY2ssIG5vIG5ldyBzY2hlZHVsZSB3aWxsIGJlIGNyZWF0ZWRkYW5kIGJvdGggd2lsbCBiZSByZW1vdmVkLgBsTWVyZ2VkIHNjaGVkdWxlIGF0dHJpYnV0ZXM6NQEtIGBzdGFydGluZ19ibG9ja2A6IGBNQVgoc2NoZWR1bGUxLnN0YXJ0aW5nX2Jsb2NrLCBzY2hlZHVsZWQyLnN0YXJ0aW5nX2Jsb2NrLEggIGN1cnJlbnRfYmxvY2spYC4hAS0gYGVuZGluZ19ibG9ja2A6IGBNQVgoc2NoZWR1bGUxLmVuZGluZ19ibG9jaywgc2NoZWR1bGUyLmVuZGluZ19ibG9jaylgLlkBLSBgbG9ja2VkYDogYHNjaGVkdWxlMS5sb2NrZWRfYXQoY3VycmVudF9ibG9jaykgKyBzY2hlZHVsZTIubG9ja2VkX2F0KGN1cnJlbnRfYmxvY2spYC4AzFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLgDoLSBgc2NoZWR1bGUxX2luZGV4YDogaW5kZXggb2YgdGhlIGZpcnN0IHNjaGVkdWxlIHRvIG1lcmdlLuwtIGBzY2hlZHVsZTJfaW5kZXhgOiBpbmRleCBvZiB0aGUgc2Vjb25kIHNjaGVkdWxlIHRvIG1lcmdlLnRmb3JjZV9yZW1vdmVfdmVzdGluZ19zY2hlZHVsZQgBGHRhcmdldAABjDxUOjpMb29rdXAgYXMgU3RhdGljTG9va3VwPjo6U291cmNlAAE4c2NoZWR1bGVfaW5kZXg4AQx1MzIABRh8Rm9yY2UgcmVtb3ZlIGEgdmVzdGluZyBzY2hlZHVsZQDEVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1Jvb3RfLgDILSBgdGFyZ2V0YDogQW4gYWNjb3VudCB0aGF0IGhhcyBhIHZlc3Rpbmcgc2NoZWR1bGUVAS0gYHNjaGVkdWxlX2luZGV4YDogVGhlIHZlc3Rpbmcgc2NoZWR1bGUgaW5kZXggdGhhdCBzaG91bGQgYmUgcmVtb3ZlZAQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy5tAQw4cGFsbGV0X3Zlc3RpbmcwdmVzdGluZ19pbmZvLFZlc3RpbmdJbmZvCBxCYWxhbmNlAVkBLEJsb2NrTnVtYmVyATgADAEYbG9ja2VkWQEBHEJhbGFuY2UAASRwZXJfYmxvY2tZAQEcQmFsYW5jZQABOHN0YXJ0aW5nX2Jsb2NrOAEsQmxvY2tOdW1iZXIAAHEBEFxwb2xrYWRvdF9ydW50aW1lX2NvbW1vbhhjbGFpbXMYcGFsbGV0EENhbGwEBFQAARQUY2xhaW0IARBkZXN0BAEwVDo6QWNjb3VudElkAAFIZXRoZXJldW1fc2lnbmF0dXJldQEBOEVjZHNhU2lnbmF0dXJlAABgiE1ha2UgYSBjbGFpbSB0byBjb2xsZWN0IHlvdXIgRE9Ucy4AxFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9Ob25lXy4AUFVuc2lnbmVkIFZhbGlkYXRpb246BQFBIGNhbGwgdG8gY2xhaW0gaXMgZGVlbWVkIHZhbGlkIGlmIHRoZSBzaWduYXR1cmUgcHJvdmlkZWQgbWF0Y2hlc3x0aGUgZXhwZWN0ZWQgc2lnbmVkIG1lc3NhZ2Ugb2Y6AGg+IEV0aGVyZXVtIFNpZ25lZCBNZXNzYWdlOpQ+IChjb25maWd1cmVkIHByZWZpeCBzdHJpbmcpKGFkZHJlc3MpAKRhbmQgYGFkZHJlc3NgIG1hdGNoZXMgdGhlIGBkZXN0YCBhY2NvdW50LgAsUGFyYW1ldGVyczrYLSBgZGVzdGA6IFRoZSBkZXN0aW5hdGlvbiBhY2NvdW50IHRvIHBheW91dCB0aGUgY2xhaW0uXQEtIGBldGhlcmV1bV9zaWduYXR1cmVgOiBUaGUgc2lnbmF0dXJlIG9mIGFuIGV0aGVyZXVtIHNpZ25lZCBtZXNzYWdlIG1hdGNoaW5nIHRoZSBmb3JtYXRIICBkZXNjcmliZWQgYWJvdmUuACA8d2VpZ2h0PvxUaGUgd2VpZ2h0IG9mIHRoaXMgY2FsbCBpcyBpbnZhcmlhbnQgb3ZlciB0aGUgaW5wdXQgcGFyYW1ldGVycy7gV2VpZ2h0IGluY2x1ZGVzIGxvZ2ljIHRvIHZhbGlkYXRlIHVuc2lnbmVkIGBjbGFpbWAgY2FsbC4AWFRvdGFsIENvbXBsZXhpdHk6IE8oMSkkPC93ZWlnaHQ+KG1pbnRfY2xhaW0QAQx3aG99AQE8RXRoZXJldW1BZGRyZXNzAAEUdmFsdWVZAQEwQmFsYW5jZU9mPFQ+AAFAdmVzdGluZ19zY2hlZHVsZYEBAdxPcHRpb248KEJhbGFuY2VPZjxUPiwgQmFsYW5jZU9mPFQ+LCBCbG9ja051bWJlckZvcjxUPik+AAEkc3RhdGVtZW50iQEBVE9wdGlvbjxTdGF0ZW1lbnRLaW5kPgABPIRNaW50IGEgbmV3IGNsYWltIHRvIGNvbGxlY3QgRE9Ucy4AxFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9Sb290Xy4ALFBhcmFtZXRlcnM68C0gYHdob2A6IFRoZSBFdGhlcmV1bSBhZGRyZXNzIGFsbG93ZWQgdG8gY29sbGVjdCB0aGlzIGNsYWltLswtIGB2YWx1ZWA6IFRoZSBudW1iZXIgb2YgRE9UcyB0aGF0IHdpbGwgYmUgY2xhaW1lZC4JAS0gYHZlc3Rpbmdfc2NoZWR1bGVgOiBBbiBvcHRpb25hbCB2ZXN0aW5nIHNjaGVkdWxlIGZvciB0aGVzZSBET1RzLgAgPHdlaWdodD78VGhlIHdlaWdodCBvZiB0aGlzIGNhbGwgaXMgaW52YXJpYW50IG92ZXIgdGhlIGlucHV0IHBhcmFtZXRlcnMuHQFXZSBhc3N1bWUgd29yc3QgY2FzZSB0aGF0IGJvdGggdmVzdGluZyBhbmQgc3RhdGVtZW50IGlzIGJlaW5nIGluc2VydGVkLgBYVG90YWwgQ29tcGxleGl0eTogTygxKSQ8L3dlaWdodD4wY2xhaW1fYXR0ZXN0DAEQZGVzdAQBMFQ6OkFjY291bnRJZAABSGV0aGVyZXVtX3NpZ25hdHVyZXUBAThFY2RzYVNpZ25hdHVyZQABJHN0YXRlbWVudBgBHFZlYzx1OD4AAmzkTWFrZSBhIGNsYWltIHRvIGNvbGxlY3QgeW91ciBET1RzIGJ5IHNpZ25pbmcgYSBzdGF0ZW1lbnQuAMRUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfTm9uZV8uAFBVbnNpZ25lZCBWYWxpZGF0aW9uOikBQSBjYWxsIHRvIGBjbGFpbV9hdHRlc3RgIGlzIGRlZW1lZCB2YWxpZCBpZiB0aGUgc2lnbmF0dXJlIHByb3ZpZGVkIG1hdGNoZXN8dGhlIGV4cGVjdGVkIHNpZ25lZCBtZXNzYWdlIG9mOgBoPiBFdGhlcmV1bSBTaWduZWQgTWVzc2FnZTrAPiAoY29uZmlndXJlZCBwcmVmaXggc3RyaW5nKShhZGRyZXNzKShzdGF0ZW1lbnQpAEkBYW5kIGBhZGRyZXNzYCBtYXRjaGVzIHRoZSBgZGVzdGAgYWNjb3VudDsgdGhlIGBzdGF0ZW1lbnRgIG11c3QgbWF0Y2ggdGhhdCB3aGljaCBpc8BleHBlY3RlZCBhY2NvcmRpbmcgdG8geW91ciBwdXJjaGFzZSBhcnJhbmdlbWVudC4ALFBhcmFtZXRlcnM62C0gYGRlc3RgOiBUaGUgZGVzdGluYXRpb24gYWNjb3VudCB0byBwYXlvdXQgdGhlIGNsYWltLl0BLSBgZXRoZXJldW1fc2lnbmF0dXJlYDogVGhlIHNpZ25hdHVyZSBvZiBhbiBldGhlcmV1bSBzaWduZWQgbWVzc2FnZSBtYXRjaGluZyB0aGUgZm9ybWF0SCAgZGVzY3JpYmVkIGFib3ZlLjkBLSBgc3RhdGVtZW50YDogVGhlIGlkZW50aXR5IG9mIHRoZSBzdGF0ZW1lbnQgd2hpY2ggaXMgYmVpbmcgYXR0ZXN0ZWQgdG8gaW4gdGhlMCAgc2lnbmF0dXJlLgAgPHdlaWdodD78VGhlIHdlaWdodCBvZiB0aGlzIGNhbGwgaXMgaW52YXJpYW50IG92ZXIgdGhlIGlucHV0IHBhcmFtZXRlcnMu/FdlaWdodCBpbmNsdWRlcyBsb2dpYyB0byB2YWxpZGF0ZSB1bnNpZ25lZCBgY2xhaW1fYXR0ZXN0YCBjYWxsLgBYVG90YWwgQ29tcGxleGl0eTogTygxKSQ8L3dlaWdodD4YYXR0ZXN0BAEkc3RhdGVtZW50GAEcVmVjPHU4PgADTPRBdHRlc3QgdG8gYSBzdGF0ZW1lbnQsIG5lZWRlZCB0byBmaW5hbGl6ZSB0aGUgY2xhaW1zIHByb2Nlc3MuABkBV0FSTklORzogSW5zZWN1cmUgdW5sZXNzIHlvdXIgY2hhaW4gaW5jbHVkZXMgYFByZXZhbGlkYXRlQXR0ZXN0c2AgYXMgYVxgVHJhbnNhY3Rpb25FeHRlbnNpb25gLgBQVW5zaWduZWQgVmFsaWRhdGlvbjopAUEgY2FsbCB0byBhdHRlc3QgaXMgZGVlbWVkIHZhbGlkIGlmIHRoZSBzZW5kZXIgaGFzIGEgYFByZWNsYWltYCByZWdpc3RlcmVk9GFuZCBwcm92aWRlcyBhIGBzdGF0ZW1lbnRgIHdoaWNoIGlzIGV4cGVjdGVkIGZvciB0aGUgYWNjb3VudC4ALFBhcmFtZXRlcnM6OQEtIGBzdGF0ZW1lbnRgOiBUaGUgaWRlbnRpdHkgb2YgdGhlIHN0YXRlbWVudCB3aGljaCBpcyBiZWluZyBhdHRlc3RlZCB0byBpbiB0aGUwICBzaWduYXR1cmUuACA8d2VpZ2h0PvxUaGUgd2VpZ2h0IG9mIHRoaXMgY2FsbCBpcyBpbnZhcmlhbnQgb3ZlciB0aGUgaW5wdXQgcGFyYW1ldGVycy7wV2VpZ2h0IGluY2x1ZGVzIGxvZ2ljIHRvIGRvIHByZS12YWxpZGF0aW9uIG9uIGBhdHRlc3RgIGNhbGwuAFhUb3RhbCBDb21wbGV4aXR5OiBPKDEpJDwvd2VpZ2h0Pihtb3ZlX2NsYWltDAEMb2xkfQEBPEV0aGVyZXVtQWRkcmVzcwABDG5ld30BATxFdGhlcmV1bUFkZHJlc3MAAThtYXliZV9wcmVjbGFpbZEBAVBPcHRpb248VDo6QWNjb3VudElkPgAEAAQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy51AQxccG9sa2Fkb3RfcnVudGltZV9jb21tb24YY2xhaW1zOEVjZHNhU2lnbmF0dXJlAAAEAHkBASBbdTg7IDY1XQAAeQEAAANBAAAADAB9AQxccG9sa2Fkb3RfcnVudGltZV9jb21tb24YY2xhaW1zPEV0aGVyZXVtQWRkcmVzcwAABAAcASBbdTg7IDIwXQAAgQEEGE9wdGlvbgQEVAGFAQEIEE5vbmUAAAAQU29tZQQAhQEAAAEAAIUBAAAEDFkBWQE4AIkBBBhPcHRpb24EBFQBjQEBCBBOb25lAAAAEFNvbWUEAI0BAAABAACNAQxccG9sa2Fkb3RfcnVudGltZV9jb21tb24YY2xhaW1zNFN0YXRlbWVudEtpbmQAAQgcUmVndWxhcgAAABBTYWZ0AAEAAJEBBBhPcHRpb24EBFQBBAEIEE5vbmUAAAAQU29tZQQABAAAAQAAlQEMKHBhbGxldF9kYXAYcGFsbGV0EENhbGwEBFQAAQRUc2V0X2J1ZGdldF9hbGxvY2F0aW9uBAE8bmV3X2FsbG9jYXRpb25zmQEBTEJ1ZGdldEFsbG9jYXRpb25NYXAAABB4U2V0IHRoZSBidWRnZXQgYWxsb2NhdGlvbiBtYXAuADkBRWFjaCBrZXkgbXVzdCBtYXRjaCBhIHJlZ2lzdGVyZWQgYEJ1ZGdldFJlY2lwaWVudGAuIFRoZSBzdW0gb2YgYWxsIHBlcmNlbnRhZ2VzJQFtdXN0IGJlIGV4YWN0bHkgMTAwJS4gUmVjaXBpZW50cyBub3QgaW5jbHVkZWQgaW4gdGhlIG1hcCByZWNlaXZlIG5vdGhpbmcuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLpkBDExib3VuZGVkX2NvbGxlY3Rpb25zRGJvdW5kZWRfYnRyZWVfbWFwPEJvdW5kZWRCVHJlZU1hcAwESwGdAQRWAaEBBFMAAAQApQEBOEJUcmVlTWFwPEssIFY+AACdAQxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQwEUwAABAAYARhWZWM8VD4AAKEBDDRzcF9hcml0aG1ldGljKHBlcl90aGluZ3McUGVyYmlsbAAABAA4AQx1MzIAAKUBBCBCVHJlZU1hcAgESwGdAQRWAaEBAAQAqQEAAACpAQAAAq0BAK0BAAAECJ0BoQEAsQEMZHBhbGxldF9jb2xsYXRvcl9zZWxlY3Rpb24YcGFsbGV0EENhbGwEBFQAASREc2V0X2ludnVsbmVyYWJsZXMEAQxuZXdhAQFEVmVjPFQ6OkFjY291bnRJZD4AADQxAVNldCB0aGUgbGlzdCBvZiBpbnZ1bG5lcmFibGUgKGZpeGVkKSBjb2xsYXRvcnMuIFRoZXNlIGNvbGxhdG9ycyBtdXN0IGRvIHNvbWXQcHJlcGFyYXRpb24sIG5hbWVseSB0byBoYXZlIHJlZ2lzdGVyZWQgc2Vzc2lvbiBrZXlzLgBZAVRoZSBjYWxsIHdpbGwgcmVtb3ZlIGFueSBhY2NvdW50cyB0aGF0IGhhdmUgbm90IHJlZ2lzdGVyZWQga2V5cyBmcm9tIHRoZSBzZXQuIFRoYXQgaXMsXQFpdCBpcyBub24tYXRvbWljOyB0aGUgY2FsbGVyIGFjY2VwdHMgYWxsIGBBY2NvdW50SWRgcyBwYXNzZWQgaW4gYG5ld2AgX2luZGl2aWR1YWxseV8gYXMxAWFjY2VwdGFibGUgSW52dWxuZXJhYmxlcywgYW5kIGlzIG5vdCBwcm9wb3NpbmcgYSBfc2V0XyBvZiBuZXcgSW52dWxuZXJhYmxlcy4AWQFUaGlzIGNhbGwgZG9lcyBub3QgbWFpbnRhaW4gbXV0dWFsIGV4Y2x1c2l2aXR5IG9mIGBJbnZ1bG5lcmFibGVzYCBhbmQgYENhbmRpZGF0ZXNgLiBJdGEBaXMgcmVjb21tZW5kZWQgdG8gdXNlIGEgYmF0Y2ggb2YgYGFkZF9pbnZ1bG5lcmFibGVgIGFuZCBgcmVtb3ZlX2ludnVsbmVyYWJsZWAgaW5zdGVhZC4gQVEBYGJhdGNoX2FsbGAgY2FuIGFsc28gYmUgdXNlZCB0byBlbmZvcmNlIGF0b21pY2l0eS4gSWYgYW55IGNhbmRpZGF0ZXMgYXJlIGluY2x1ZGVkIGluTQFgbmV3YCwgdGhleSBzaG91bGQgYmUgcmVtb3ZlZCB3aXRoIGByZW1vdmVfaW52dWxuZXJhYmxlX2NhbmRpZGF0ZWAgYWZ0ZXIgZXhlY3V0aW9uLgCUTXVzdCBiZSBjYWxsZWQgYnkgdGhlIGBVcGRhdGVPcmlnaW5gLlhzZXRfZGVzaXJlZF9jYW5kaWRhdGVzBAEMbWF4OAEMdTMyAAEUVQFTZXQgdGhlIGlkZWFsIG51bWJlciBvZiBub24taW52dWxuZXJhYmxlIGNvbGxhdG9ycy4gSWYgbG93ZXJpbmcgdGhpcyBudW1iZXIsIHRoZW4gdGhlYQFudW1iZXIgb2YgcnVubmluZyBjb2xsYXRvcnMgY291bGQgYmUgaGlnaGVyIHRoYW4gdGhpcyBmaWd1cmUuIEFzaWRlIGZyb20gdGhhdCBlZGdlIGNhc2UsNQF0aGVyZSBzaG91bGQgYmUgbm8gb3RoZXIgd2F5IHRvIGhhdmUgbW9yZSBjYW5kaWRhdGVzIHRoYW4gdGhlIGRlc2lyZWQgbnVtYmVyLgDQVGhlIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgdGhlIGBVcGRhdGVPcmlnaW5gLkhzZXRfY2FuZGlkYWN5X2JvbmQEARBib25kWQEBMEJhbGFuY2VPZjxUPgACHHhTZXQgdGhlIGNhbmRpZGFjeSBib25kIGFtb3VudC4AUQFJZiB0aGUgY2FuZGlkYWN5IGJvbmQgaXMgaW5jcmVhc2VkIGJ5IHRoaXMgY2FsbCwgYWxsIGN1cnJlbnQgY2FuZGlkYXRlcyB3aGljaCBoYXZlIGFNAWRlcG9zaXQgbG93ZXIgdGhhbiB0aGUgbmV3IGJvbmQgd2lsbCBiZSBraWNrZWQgZnJvbSB0aGUgbGlzdCBhbmQgZ2V0IHRoZWlyIGRlcG9zaXRzFGJhY2suANBUaGUgb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSB0aGUgYFVwZGF0ZU9yaWdpbmAuVHJlZ2lzdGVyX2FzX2NhbmRpZGF0ZQADEEEBUmVnaXN0ZXIgdGhpcyBhY2NvdW50IGFzIGEgY29sbGF0b3IgY2FuZGlkYXRlLiBUaGUgYWNjb3VudCBtdXN0IChhKSBhbHJlYWR5IGhhdmUdAXJlZ2lzdGVyZWQgc2Vzc2lvbiBrZXlzIGFuZCAoYikgYmUgYWJsZSB0byByZXNlcnZlIHRoZSBgQ2FuZGlkYWN5Qm9uZGAuANxUaGlzIGNhbGwgaXMgbm90IGF2YWlsYWJsZSB0byBgSW52dWxuZXJhYmxlYCBjb2xsYXRvcnMuMGxlYXZlX2ludGVudAAEFFUBRGVyZWdpc3RlciBgb3JpZ2luYCBhcyBhIGNvbGxhdG9yIGNhbmRpZGF0ZS4gTm90ZSB0aGF0IHRoZSBjb2xsYXRvciBjYW4gb25seSBsZWF2ZSBvbg0Bc2Vzc2lvbiBjaGFuZ2UuIFRoZSBgQ2FuZGlkYWN5Qm9uZGAgd2lsbCBiZSB1bnJlc2VydmVkIGltbWVkaWF0ZWx5LgAZAVRoaXMgY2FsbCB3aWxsIGZhaWwgaWYgdGhlIHRvdGFsIG51bWJlciBvZiBjYW5kaWRhdGVzIHdvdWxkIGRyb3AgYmVsb3dcYE1pbkVsaWdpYmxlQ29sbGF0b3JzYC5AYWRkX2ludnVsbmVyYWJsZQQBDHdobwQBMFQ6OkFjY291bnRJZAAFEEUBQWRkIGEgbmV3IGFjY291bnQgYHdob2AgdG8gdGhlIGxpc3Qgb2YgYEludnVsbmVyYWJsZXNgIGNvbGxhdG9ycy4gYHdob2AgbXVzdCBoYXZlHQFyZWdpc3RlcmVkIHNlc3Npb24ga2V5cy4gSWYgYHdob2AgaXMgYSBjYW5kaWRhdGUsIHRoZXkgd2lsbCBiZSByZW1vdmVkLgDQVGhlIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgdGhlIGBVcGRhdGVPcmlnaW5gLkxyZW1vdmVfaW52dWxuZXJhYmxlBAEMd2hvBAEwVDo6QWNjb3VudElkAAYQYQFSZW1vdmUgYW4gYWNjb3VudCBgd2hvYCBmcm9tIHRoZSBsaXN0IG9mIGBJbnZ1bG5lcmFibGVzYCBjb2xsYXRvcnMuIGBJbnZ1bG5lcmFibGVzYCBtdXN0KGJlIHNvcnRlZC4A0FRoZSBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIHRoZSBgVXBkYXRlT3JpZ2luYC4sdXBkYXRlX2JvbmQEASxuZXdfZGVwb3NpdFkBATBCYWxhbmNlT2Y8VD4ABxxdAVVwZGF0ZSB0aGUgY2FuZGlkYWN5IGJvbmQgb2YgY29sbGF0b3IgY2FuZGlkYXRlIGBvcmlnaW5gIHRvIGEgbmV3IGFtb3VudCBgbmV3X2RlcG9zaXRgLgBBAVNldHRpbmcgYSBgbmV3X2RlcG9zaXRgIHRoYXQgaXMgbG93ZXIgdGhhbiB0aGUgY3VycmVudCBkZXBvc2l0IHdoaWxlIGBvcmlnaW5gIGlz4G9jY3VweWluZyBhIHRvcC1gRGVzaXJlZENhbmRpZGF0ZXNgIHNsb3QgaXMgbm90IGFsbG93ZWQuAFkBVGhpcyBjYWxsIHdpbGwgZmFpbCBpZiBgb3JpZ2luYCBpcyBub3QgYSBjb2xsYXRvciBjYW5kaWRhdGUsIHRoZSB1cGRhdGVkIGJvbmQgaXMgbG93ZXIZAXRoYW4gdGhlIG1pbmltdW0gY2FuZGlkYWN5IGJvbmQsIGFuZC9vciB0aGUgYW1vdW50IGNhbm5vdCBiZSByZXNlcnZlZC5MdGFrZV9jYW5kaWRhdGVfc2xvdAgBHGRlcG9zaXRZAQEwQmFsYW5jZU9mPFQ+AAEYdGFyZ2V0BAEwVDo6QWNjb3VudElkAAgcTQFUaGUgY2FsbGVyIGBvcmlnaW5gIHJlcGxhY2VzIGEgY2FuZGlkYXRlIGB0YXJnZXRgIGluIHRoZSBjb2xsYXRvciBjYW5kaWRhdGUgbGlzdCBieVUBcmVzZXJ2aW5nIGBkZXBvc2l0YC4gVGhlIGFtb3VudCBgZGVwb3NpdGAgcmVzZXJ2ZWQgYnkgdGhlIGNhbGxlciBtdXN0IGJlIGdyZWF0ZXIgdGhhbuB0aGUgZXhpc3RpbmcgYm9uZCBvZiB0aGUgdGFyZ2V0IGl0IGlzIHRyeWluZyB0byByZXBsYWNlLgBZAVRoaXMgY2FsbCB3aWxsIGZhaWwgaWYgdGhlIGNhbGxlciBpcyBhbHJlYWR5IGEgY29sbGF0b3IgY2FuZGlkYXRlIG9yIGludnVsbmVyYWJsZSwgdGhlVQFjYWxsZXIgZG9lcyBub3QgaGF2ZSByZWdpc3RlcmVkIHNlc3Npb24ga2V5cywgdGhlIHRhcmdldCBpcyBub3QgYSBjb2xsYXRvciBjYW5kaWRhdGUsvGFuZC9vciB0aGUgYGRlcG9zaXRgIGFtb3VudCBjYW5ub3QgYmUgcmVzZXJ2ZWQuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLrUBDDhwYWxsZXRfc2Vzc2lvbhhwYWxsZXQQQ2FsbAQEVAABCCBzZXRfa2V5cwgBEGtleXO5AQEcVDo6S2V5cwABFHByb29mGAEcVmVjPHU4PgAALORTZXRzIHRoZSBzZXNzaW9uIGtleShzKSBvZiB0aGUgZnVuY3Rpb24gY2FsbGVyIHRvIGBrZXlzYC4AHQFBbGxvd3MgYW4gYWNjb3VudCB0byBzZXQgaXRzIHNlc3Npb24ga2V5IHByaW9yIHRvIGJlY29taW5nIGEgdmFsaWRhdG9yLsBUaGlzIGRvZXNuJ3QgdGFrZSBlZmZlY3QgdW50aWwgdGhlIG5leHQgc2Vzc2lvbi4AAQEtIGBvcmlnaW5gOiBUaGUgZGlzcGF0Y2ggb3JpZ2luIG9mIHRoaXMgZnVuY3Rpb24gbXVzdCBiZSBzaWduZWQuVQEtIGBrZXlzYDogVGhlIG5ldyBzZXNzaW9uIGtleXMgdG8gc2V0LiBUaGVzZSBhcmUgdGhlIHB1YmxpYyBrZXlzIG9mIGFsbCBzZXNzaW9ucyBrZXlzXCAgc2V0dXAgaW4gdGhlIHJ1bnRpbWUuQQEtIGBwcm9vZmA6IFRoZSBwcm9vZiB0aGF0IGBvcmlnaW5gIGhhcyBhY2Nlc3MgdG8gdGhlIHByaXZhdGUga2V5cyBvZiBga2V5c2AuIFNlZU0BICBbYGltcGxfb3BhcXVlX2tleXNgXShzcF9ydW50aW1lOjppbXBsX29wYXF1ZV9rZXlzKSBmb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGU8ICBwcm9vZiBmb3JtYXQuKHB1cmdlX2tleXMAASDIUmVtb3ZlcyBhbnkgc2Vzc2lvbiBrZXkocykgb2YgdGhlIGZ1bmN0aW9uIGNhbGxlci4AwFRoaXMgZG9lc24ndCB0YWtlIGVmZmVjdCB1bnRpbCB0aGUgbmV4dCBzZXNzaW9uLgBVAVRoZSBkaXNwYXRjaCBvcmlnaW4gb2YgdGhpcyBmdW5jdGlvbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIGFjY291bnQgbXVzdCBiZSBlaXRoZXIgYmVdAWNvbnZlcnRpYmxlIHRvIGEgdmFsaWRhdG9yIElEIHVzaW5nIHRoZSBjaGFpbidzIHR5cGljYWwgYWRkcmVzc2luZyBzeXN0ZW0gKHRoaXMgdXN1YWxseVEBbWVhbnMgYmVpbmcgYSBjb250cm9sbGVyIGFjY291bnQpIG9yIGRpcmVjdGx5IGNvbnZlcnRpYmxlIGludG8gYSB2YWxpZGF0b3IgSUQgKHdoaWNolHVzdWFsbHkgbWVhbnMgYmVpbmcgYSBzdGFzaCBhY2NvdW50KS4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuuQEIXGFzc2V0X2h1Yl9wYXNlb19ydW50aW1lLFNlc3Npb25LZXlzAAAEARBhdXJhvQEBxDxBdXJhIGFzICRjcmF0ZTo6Qm91bmRUb1J1bnRpbWVBcHBQdWJsaWM+OjpQdWJsaWMAAL0BEERzcF9jb25zZW5zdXNfYXVyYRxzcjI1NTE5LGFwcF9zcjI1NTE5GFB1YmxpYwAABAAIATxzcjI1NTE5OjpQdWJsaWMAAMEBDGRjdW11bHVzX3BhbGxldF94Y21wX3F1ZXVlGHBhbGxldBBDYWxsBARUAAEUVHN1c3BlbmRfeGNtX2V4ZWN1dGlvbgABDEkBU3VzcGVuZHMgYWxsIFhDTSBleGVjdXRpb25zIGZvciB0aGUgWENNUCBxdWV1ZSwgcmVnYXJkbGVzcyBvZiB0aGUgc2VuZGVyJ3Mgb3JpZ2luLgCkLSBgb3JpZ2luYDogTXVzdCBwYXNzIGBDb250cm9sbGVyT3JpZ2luYC5QcmVzdW1lX3hjbV9leGVjdXRpb24AAhS4UmVzdW1lcyBhbGwgWENNIGV4ZWN1dGlvbnMgZm9yIHRoZSBYQ01QIHF1ZXVlLgA9AU5vdGUgdGhhdCB0aGlzIGZ1bmN0aW9uIGRvZXNuJ3QgY2hhbmdlIHRoZSBzdGF0dXMgb2YgdGhlIGluL291dCBib3VuZCBjaGFubmVscy4ApC0gYG9yaWdpbmA6IE11c3QgcGFzcyBgQ29udHJvbGxlck9yaWdpbmAuYHVwZGF0ZV9zdXNwZW5kX3RocmVzaG9sZAQBDG5ldzgBDHUzMgADFEkBT3ZlcndyaXRlcyB0aGUgbnVtYmVyIG9mIHBhZ2VzIHdoaWNoIG11c3QgYmUgaW4gdGhlIHF1ZXVlIGZvciB0aGUgb3RoZXIgc2lkZSB0byBiZXh0b2xkIHRvIHN1c3BlbmQgdGhlaXIgc2VuZGluZy4AdC0gYG9yaWdpbmA6IE11c3QgcGFzcyBgUm9vdGAu6C0gYG5ld2A6IERlc2lyZWQgdmFsdWUgZm9yIGBRdWV1ZUNvbmZpZ0RhdGEuc3VzcGVuZF92YWx1ZWBUdXBkYXRlX2Ryb3BfdGhyZXNob2xkBAEMbmV3OAEMdTMyAAQURQFPdmVyd3JpdGVzIHRoZSBudW1iZXIgb2YgcGFnZXMgd2hpY2ggbXVzdCBiZSBpbiB0aGUgcXVldWUgYWZ0ZXIgd2hpY2ggd2UgZHJvcCBhbnmIZnVydGhlciBtZXNzYWdlcyBmcm9tIHRoZSBjaGFubmVsLgB0LSBgb3JpZ2luYDogTXVzdCBwYXNzIGBSb290YC7sLSBgbmV3YDogRGVzaXJlZCB2YWx1ZSBmb3IgYFF1ZXVlQ29uZmlnRGF0YS5kcm9wX3RocmVzaG9sZGBcdXBkYXRlX3Jlc3VtZV90aHJlc2hvbGQEAQxuZXc4AQx1MzIABRRNAU92ZXJ3cml0ZXMgdGhlIG51bWJlciBvZiBwYWdlcyB3aGljaCB0aGUgcXVldWUgbXVzdCBiZSByZWR1Y2VkIHRvIGJlZm9yZSBpdCBzaWduYWxzAQF0aGF0IG1lc3NhZ2Ugc2VuZGluZyBtYXkgcmVjb21tZW5jZSBhZnRlciBpdCBoYXMgYmVlbiBzdXNwZW5kZWQuAHQtIGBvcmlnaW5gOiBNdXN0IHBhc3MgYFJvb3RgLvQtIGBuZXdgOiBEZXNpcmVkIHZhbHVlIGZvciBgUXVldWVDb25maWdEYXRhLnJlc3VtZV90aHJlc2hvbGRgBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLsUBDChwYWxsZXRfeGNtGHBhbGxldBBDYWxsBARUAAFEEHNlbmQIARBkZXN0yQEBWEJveDxWZXJzaW9uZWRMb2NhdGlvbj4AARxtZXNzYWdlUQIBVEJveDxWZXJzaW9uZWRYY208KCk+PgAAADx0ZWxlcG9ydF9hc3NldHMQARBkZXN0yQEBWEJveDxWZXJzaW9uZWRMb2NhdGlvbj4AASxiZW5lZmljaWFyeckBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAEYYXNzZXRzjQMBUEJveDxWZXJzaW9uZWRBc3NldHM+AAE4ZmVlX2Fzc2V0X2l0ZW04AQx1MzIAAUgRAVRlbGVwb3J0IHNvbWUgYXNzZXRzIGZyb20gdGhlIGxvY2FsIGNoYWluIHRvIHNvbWUgZGVzdGluYXRpb24gY2hhaW4uAB0BKipUaGlzIGZ1bmN0aW9uIGlzIGRlcHJlY2F0ZWQ6IFVzZSBgbGltaXRlZF90ZWxlcG9ydF9hc3NldHNgIGluc3RlYWQuKioAUQFGZWUgcGF5bWVudCBvbiB0aGUgZGVzdGluYXRpb24gc2lkZSBpcyBtYWRlIGZyb20gdGhlIGFzc2V0IGluIHRoZSBgYXNzZXRzYCB2ZWN0b3Igb2ZhAWluZGV4IGBmZWVfYXNzZXRfaXRlbWAuIFRoZSB3ZWlnaHQgbGltaXQgZm9yIGZlZXMgaXMgbm90IHByb3ZpZGVkIGFuZCB0aHVzIGlzIHVubGltaXRlZCy0d2l0aCBhbGwgZmVlcyB0YWtlbiBhcyBuZWVkZWQgZnJvbSB0aGUgYXNzZXQuACkBLSBgb3JpZ2luYDogTXVzdCBiZSBjYXBhYmxlIG9mIHdpdGhkcmF3aW5nIHRoZSBgYXNzZXRzYCBhbmQgZXhlY3V0aW5nIFhDTS4lAS0gYGRlc3RgOiBEZXN0aW5hdGlvbiBjb250ZXh0IGZvciB0aGUgYXNzZXRzLiBXaWxsIHR5cGljYWxseSBiZSBgW1BhcmVudCxhASAgUGFyYWNoYWluKC4uKV1gIHRvIHNlbmQgZnJvbSBwYXJhY2hhaW4gdG8gcGFyYWNoYWluLCBvciBgW1BhcmFjaGFpbiguLildYCB0byBzZW5kIGZyb21UICByZWxheSB0byBwYXJhY2hhaW4uVQEtIGBiZW5lZmljaWFyeWA6IEEgYmVuZWZpY2lhcnkgbG9jYXRpb24gZm9yIHRoZSBhc3NldHMgaW4gdGhlIGNvbnRleHQgb2YgYGRlc3RgLiBXaWxsmCAgZ2VuZXJhbGx5IGJlIGFuIGBBY2NvdW50SWQzMmAgdmFsdWUuWQEtIGBhc3NldHNgOiBUaGUgYXNzZXRzIHRvIGJlIHdpdGhkcmF3bi4gVGhpcyBzaG91bGQgaW5jbHVkZSB0aGUgYXNzZXRzIHVzZWQgdG8gcGF5IHRoZWggIGZlZSBvbiB0aGUgYGRlc3RgIGNoYWluLk0BLSBgZmVlX2Fzc2V0X2l0ZW1gOiBUaGUgaW5kZXggaW50byBgYXNzZXRzYCBvZiB0aGUgaXRlbSB3aGljaCBzaG91bGQgYmUgdXNlZCB0byBwYXkcICBmZWVzLlxyZXNlcnZlX3RyYW5zZmVyX2Fzc2V0cxABEGRlc3TJAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgABLGJlbmVmaWNpYXJ5yQEBWEJveDxWZXJzaW9uZWRMb2NhdGlvbj4AARhhc3NldHONAwFQQm94PFZlcnNpb25lZEFzc2V0cz4AAThmZWVfYXNzZXRfaXRlbTgBDHUzMgACeF0BVHJhbnNmZXIgc29tZSBhc3NldHMgZnJvbSB0aGUgbG9jYWwgY2hhaW4gdG8gdGhlIGRlc3RpbmF0aW9uIGNoYWluIHRocm91Z2ggdGhlaXIgbG9jYWwseGRlc3RpbmF0aW9uIG9yIHJlbW90ZSByZXNlcnZlLgA9AWBhc3NldHNgIG11c3QgaGF2ZSBzYW1lIHJlc2VydmUgbG9jYXRpb24gYW5kIG1heSBub3QgYmUgdGVsZXBvcnRhYmxlIHRvIGBkZXN0YC5NASAtIGBhc3NldHNgIGhhdmUgbG9jYWwgcmVzZXJ2ZTogdHJhbnNmZXIgYXNzZXRzIHRvIHNvdmVyZWlnbiBhY2NvdW50IG9mIGRlc3RpbmF0aW9uTQEgICBjaGFpbiBhbmQgZm9yd2FyZCBhIG5vdGlmaWNhdGlvbiBYQ00gdG8gYGRlc3RgIHRvIG1pbnQgYW5kIGRlcG9zaXQgcmVzZXJ2ZS1iYXNlZGwgICBhc3NldHMgdG8gYGJlbmVmaWNpYXJ5YC5VASAtIGBhc3NldHNgIGhhdmUgZGVzdGluYXRpb24gcmVzZXJ2ZTogYnVybiBsb2NhbCBhc3NldHMgYW5kIGZvcndhcmQgYSBub3RpZmljYXRpb24gdG9ZASAgIGBkZXN0YCBjaGFpbiB0byB3aXRoZHJhdyB0aGUgcmVzZXJ2ZSBhc3NldHMgZnJvbSB0aGlzIGNoYWluJ3Mgc292ZXJlaWduIGFjY291bnQgYW5khCAgIGRlcG9zaXQgdGhlbSB0byBgYmVuZWZpY2lhcnlgLmEBIC0gYGFzc2V0c2AgaGF2ZSByZW1vdGUgcmVzZXJ2ZTogYnVybiBsb2NhbCBhc3NldHMsIGZvcndhcmQgWENNIHRvIHJlc2VydmUgY2hhaW4gdG8gbW92ZWEBICAgcmVzZXJ2ZXMgZnJvbSB0aGlzIGNoYWluJ3MgU0EgdG8gYGRlc3RgIGNoYWluJ3MgU0EsIGFuZCBmb3J3YXJkIGFub3RoZXIgWENNIHRvIGBkZXN0YPQgICB0byBtaW50IGFuZCBkZXBvc2l0IHJlc2VydmUtYmFzZWQgYXNzZXRzIHRvIGBiZW5lZmljaWFyeWAuAD0BKipUaGlzIGZ1bmN0aW9uIGlzIGRlcHJlY2F0ZWQ6IFVzZSBgbGltaXRlZF9yZXNlcnZlX3RyYW5zZmVyX2Fzc2V0c2AgaW5zdGVhZC4qKgBRAUZlZSBwYXltZW50IG9uIHRoZSBkZXN0aW5hdGlvbiBzaWRlIGlzIG1hZGUgZnJvbSB0aGUgYXNzZXQgaW4gdGhlIGBhc3NldHNgIHZlY3RvciBvZmEBaW5kZXggYGZlZV9hc3NldF9pdGVtYC4gVGhlIHdlaWdodCBsaW1pdCBmb3IgZmVlcyBpcyBub3QgcHJvdmlkZWQgYW5kIHRodXMgaXMgdW5saW1pdGVkLLR3aXRoIGFsbCBmZWVzIHRha2VuIGFzIG5lZWRlZCBmcm9tIHRoZSBhc3NldC4AKQEtIGBvcmlnaW5gOiBNdXN0IGJlIGNhcGFibGUgb2Ygd2l0aGRyYXdpbmcgdGhlIGBhc3NldHNgIGFuZCBleGVjdXRpbmcgWENNLiUBLSBgZGVzdGA6IERlc3RpbmF0aW9uIGNvbnRleHQgZm9yIHRoZSBhc3NldHMuIFdpbGwgdHlwaWNhbGx5IGJlIGBbUGFyZW50LGEBICBQYXJhY2hhaW4oLi4pXWAgdG8gc2VuZCBmcm9tIHBhcmFjaGFpbiB0byBwYXJhY2hhaW4sIG9yIGBbUGFyYWNoYWluKC4uKV1gIHRvIHNlbmQgZnJvbVQgIHJlbGF5IHRvIHBhcmFjaGFpbi5VAS0gYGJlbmVmaWNpYXJ5YDogQSBiZW5lZmljaWFyeSBsb2NhdGlvbiBmb3IgdGhlIGFzc2V0cyBpbiB0aGUgY29udGV4dCBvZiBgZGVzdGAuIFdpbGyYICBnZW5lcmFsbHkgYmUgYW4gYEFjY291bnRJZDMyYCB2YWx1ZS5ZAS0gYGFzc2V0c2A6IFRoZSBhc3NldHMgdG8gYmUgd2l0aGRyYXduLiBUaGlzIHNob3VsZCBpbmNsdWRlIHRoZSBhc3NldHMgdXNlZCB0byBwYXkgdGhlyCAgZmVlIG9uIHRoZSBgZGVzdGAgKGFuZCBwb3NzaWJseSByZXNlcnZlKSBjaGFpbnMuTQEtIGBmZWVfYXNzZXRfaXRlbWA6IFRoZSBpbmRleCBpbnRvIGBhc3NldHNgIG9mIHRoZSBpdGVtIHdoaWNoIHNob3VsZCBiZSB1c2VkIHRvIHBheRwgIGZlZXMuHGV4ZWN1dGUIARxtZXNzYWdlkQMBtEJveDxWZXJzaW9uZWRYY208PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+PgABKG1heF93ZWlnaHQVAQEYV2VpZ2h0AAMg0EV4ZWN1dGUgYW4gWENNIG1lc3NhZ2UgZnJvbSBhIGxvY2FsLCBzaWduZWQsIG9yaWdpbi4ATQFBbiBldmVudCBpcyBkZXBvc2l0ZWQgaW5kaWNhdGluZyB3aGV0aGVyIGBtc2dgIGNvdWxkIGJlIGV4ZWN1dGVkIGNvbXBsZXRlbHkgb3Igb25seShwYXJ0aWFsbHkuAF0BTm8gbW9yZSB0aGFuIGBtYXhfd2VpZ2h0YCB3aWxsIGJlIHVzZWQgaW4gaXRzIGF0dGVtcHRlZCBleGVjdXRpb24uIElmIHRoaXMgaXMgbGVzcyB0aGFuQQF0aGUgbWF4aW11bSBhbW91bnQgb2Ygd2VpZ2h0IHRoYXQgdGhlIG1lc3NhZ2UgY291bGQgdGFrZSB0byBiZSBleGVjdXRlZCwgdGhlbiBub3xleGVjdXRpb24gYXR0ZW1wdCB3aWxsIGJlIG1hZGUuRGZvcmNlX3hjbV92ZXJzaW9uCAEgbG9jYXRpb24dAgE0Qm94PExvY2F0aW9uPgABHHZlcnNpb244AShYY21WZXJzaW9uAAQYSQFFeHRvbGwgdGhhdCBhIHBhcnRpY3VsYXIgZGVzdGluYXRpb24gY2FuIGJlIGNvbW11bmljYXRlZCB3aXRoIHRocm91Z2ggYSBwYXJ0aWN1bGFyPHZlcnNpb24gb2YgWENNLgDcLSBgb3JpZ2luYDogTXVzdCBiZSBhbiBvcmlnaW4gc3BlY2lmaWVkIGJ5IEFkbWluT3JpZ2luLtgtIGBsb2NhdGlvbmA6IFRoZSBkZXN0aW5hdGlvbiB0aGF0IGlzIGJlaW5nIGRlc2NyaWJlZC4RAS0gYHhjbV92ZXJzaW9uYDogVGhlIGxhdGVzdCB2ZXJzaW9uIG9mIFhDTSB0aGF0IGBsb2NhdGlvbmAgc3VwcG9ydHMuZGZvcmNlX2RlZmF1bHRfeGNtX3ZlcnNpb24EAURtYXliZV94Y21fdmVyc2lvbuQBSE9wdGlvbjxYY21WZXJzaW9uPgAFFFkBU2V0IGEgc2FmZSBYQ00gdmVyc2lvbiAodGhlIHZlcnNpb24gdGhhdCBYQ00gc2hvdWxkIGJlIGVuY29kZWQgd2l0aCBpZiB0aGUgbW9zdCByZWNlbnS0dmVyc2lvbiBhIGRlc3RpbmF0aW9uIGNhbiBhY2NlcHQgaXMgdW5rbm93bikuANwtIGBvcmlnaW5gOiBNdXN0IGJlIGFuIG9yaWdpbiBzcGVjaWZpZWQgYnkgQWRtaW5PcmlnaW4uOQEtIGBtYXliZV94Y21fdmVyc2lvbmA6IFRoZSBkZWZhdWx0IFhDTSBlbmNvZGluZyB2ZXJzaW9uLCBvciBgTm9uZWAgdG8gZGlzYWJsZS54Zm9yY2Vfc3Vic2NyaWJlX3ZlcnNpb25fbm90aWZ5BAEgbG9jYXRpb27JAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgAGEDkBQXNrIGEgbG9jYXRpb24gdG8gbm90aWZ5IHVzIHJlZ2FyZGluZyB0aGVpciBYQ00gdmVyc2lvbiBhbmQgYW55IGNoYW5nZXMgdG8gaXQuANwtIGBvcmlnaW5gOiBNdXN0IGJlIGFuIG9yaWdpbiBzcGVjaWZpZWQgYnkgQWRtaW5PcmlnaW4uWQEtIGBsb2NhdGlvbmA6IFRoZSBsb2NhdGlvbiB0byB3aGljaCB3ZSBzaG91bGQgc3Vic2NyaWJlIGZvciBYQ00gdmVyc2lvbiBub3RpZmljYXRpb25zLoBmb3JjZV91bnN1YnNjcmliZV92ZXJzaW9uX25vdGlmeQQBIGxvY2F0aW9uyQEBWEJveDxWZXJzaW9uZWRMb2NhdGlvbj4ABxhJAVJlcXVpcmUgdGhhdCBhIHBhcnRpY3VsYXIgZGVzdGluYXRpb24gc2hvdWxkIG5vIGxvbmdlciBub3RpZnkgdXMgcmVnYXJkaW5nIGFueSBYQ01AdmVyc2lvbiBjaGFuZ2VzLgDcLSBgb3JpZ2luYDogTXVzdCBiZSBhbiBvcmlnaW4gc3BlY2lmaWVkIGJ5IEFkbWluT3JpZ2luLj0BLSBgbG9jYXRpb25gOiBUaGUgbG9jYXRpb24gdG8gd2hpY2ggd2UgYXJlIGN1cnJlbnRseSBzdWJzY3JpYmVkIGZvciBYQ00gdmVyc2lvbqggIG5vdGlmaWNhdGlvbnMgd2hpY2ggd2Ugbm8gbG9uZ2VyIGRlc2lyZS58bGltaXRlZF9yZXNlcnZlX3RyYW5zZmVyX2Fzc2V0cxQBEGRlc3TJAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgABLGJlbmVmaWNpYXJ5yQEBWEJveDxWZXJzaW9uZWRMb2NhdGlvbj4AARhhc3NldHONAwFQQm94PFZlcnNpb25lZEFzc2V0cz4AAThmZWVfYXNzZXRfaXRlbTgBDHUzMgABMHdlaWdodF9saW1pdMUCASxXZWlnaHRMaW1pdAAIeF0BVHJhbnNmZXIgc29tZSBhc3NldHMgZnJvbSB0aGUgbG9jYWwgY2hhaW4gdG8gdGhlIGRlc3RpbmF0aW9uIGNoYWluIHRocm91Z2ggdGhlaXIgbG9jYWwseGRlc3RpbmF0aW9uIG9yIHJlbW90ZSByZXNlcnZlLgA9AWBhc3NldHNgIG11c3QgaGF2ZSBzYW1lIHJlc2VydmUgbG9jYXRpb24gYW5kIG1heSBub3QgYmUgdGVsZXBvcnRhYmxlIHRvIGBkZXN0YC5NASAtIGBhc3NldHNgIGhhdmUgbG9jYWwgcmVzZXJ2ZTogdHJhbnNmZXIgYXNzZXRzIHRvIHNvdmVyZWlnbiBhY2NvdW50IG9mIGRlc3RpbmF0aW9uTQEgICBjaGFpbiBhbmQgZm9yd2FyZCBhIG5vdGlmaWNhdGlvbiBYQ00gdG8gYGRlc3RgIHRvIG1pbnQgYW5kIGRlcG9zaXQgcmVzZXJ2ZS1iYXNlZGwgICBhc3NldHMgdG8gYGJlbmVmaWNpYXJ5YC5VASAtIGBhc3NldHNgIGhhdmUgZGVzdGluYXRpb24gcmVzZXJ2ZTogYnVybiBsb2NhbCBhc3NldHMgYW5kIGZvcndhcmQgYSBub3RpZmljYXRpb24gdG9ZASAgIGBkZXN0YCBjaGFpbiB0byB3aXRoZHJhdyB0aGUgcmVzZXJ2ZSBhc3NldHMgZnJvbSB0aGlzIGNoYWluJ3Mgc292ZXJlaWduIGFjY291bnQgYW5khCAgIGRlcG9zaXQgdGhlbSB0byBgYmVuZWZpY2lhcnlgLmEBIC0gYGFzc2V0c2AgaGF2ZSByZW1vdGUgcmVzZXJ2ZTogYnVybiBsb2NhbCBhc3NldHMsIGZvcndhcmQgWENNIHRvIHJlc2VydmUgY2hhaW4gdG8gbW92ZWEBICAgcmVzZXJ2ZXMgZnJvbSB0aGlzIGNoYWluJ3MgU0EgdG8gYGRlc3RgIGNoYWluJ3MgU0EsIGFuZCBmb3J3YXJkIGFub3RoZXIgWENNIHRvIGBkZXN0YPQgICB0byBtaW50IGFuZCBkZXBvc2l0IHJlc2VydmUtYmFzZWQgYXNzZXRzIHRvIGBiZW5lZmljaWFyeWAuAFEBRmVlIHBheW1lbnQgb24gdGhlIGRlc3RpbmF0aW9uIHNpZGUgaXMgbWFkZSBmcm9tIHRoZSBhc3NldCBpbiB0aGUgYGFzc2V0c2AgdmVjdG9yIG9mYQFpbmRleCBgZmVlX2Fzc2V0X2l0ZW1gLCB1cCB0byBlbm91Z2ggdG8gcGF5IGZvciBgd2VpZ2h0X2xpbWl0YCBvZiB3ZWlnaHQuIElmIG1vcmUgd2VpZ2h0WQFpcyBuZWVkZWQgdGhhbiBgd2VpZ2h0X2xpbWl0YCwgdGhlbiB0aGUgb3BlcmF0aW9uIHdpbGwgZmFpbCBhbmQgdGhlIHNlbnQgYXNzZXRzIG1heSBiZSBhdCByaXNrLgApAS0gYG9yaWdpbmA6IE11c3QgYmUgY2FwYWJsZSBvZiB3aXRoZHJhd2luZyB0aGUgYGFzc2V0c2AgYW5kIGV4ZWN1dGluZyBYQ00uJQEtIGBkZXN0YDogRGVzdGluYXRpb24gY29udGV4dCBmb3IgdGhlIGFzc2V0cy4gV2lsbCB0eXBpY2FsbHkgYmUgYFtQYXJlbnQsYQEgIFBhcmFjaGFpbiguLildYCB0byBzZW5kIGZyb20gcGFyYWNoYWluIHRvIHBhcmFjaGFpbiwgb3IgYFtQYXJhY2hhaW4oLi4pXWAgdG8gc2VuZCBmcm9tVCAgcmVsYXkgdG8gcGFyYWNoYWluLlUBLSBgYmVuZWZpY2lhcnlgOiBBIGJlbmVmaWNpYXJ5IGxvY2F0aW9uIGZvciB0aGUgYXNzZXRzIGluIHRoZSBjb250ZXh0IG9mIGBkZXN0YC4gV2lsbJggIGdlbmVyYWxseSBiZSBhbiBgQWNjb3VudElkMzJgIHZhbHVlLlkBLSBgYXNzZXRzYDogVGhlIGFzc2V0cyB0byBiZSB3aXRoZHJhd24uIFRoaXMgc2hvdWxkIGluY2x1ZGUgdGhlIGFzc2V0cyB1c2VkIHRvIHBheSB0aGXIICBmZWUgb24gdGhlIGBkZXN0YCAoYW5kIHBvc3NpYmx5IHJlc2VydmUpIGNoYWlucy5NAS0gYGZlZV9hc3NldF9pdGVtYDogVGhlIGluZGV4IGludG8gYGFzc2V0c2Agb2YgdGhlIGl0ZW0gd2hpY2ggc2hvdWxkIGJlIHVzZWQgdG8gcGF5HCAgZmVlcy5FAS0gYHdlaWdodF9saW1pdGA6IFRoZSByZW1vdGUtc2lkZSB3ZWlnaHQgbGltaXQsIGlmIGFueSwgZm9yIHRoZSBYQ00gZmVlIHB1cmNoYXNlLlxsaW1pdGVkX3RlbGVwb3J0X2Fzc2V0cxQBEGRlc3TJAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgABLGJlbmVmaWNpYXJ5yQEBWEJveDxWZXJzaW9uZWRMb2NhdGlvbj4AARhhc3NldHONAwFQQm94PFZlcnNpb25lZEFzc2V0cz4AAThmZWVfYXNzZXRfaXRlbTgBDHUzMgABMHdlaWdodF9saW1pdMUCASxXZWlnaHRMaW1pdAAJSBEBVGVsZXBvcnQgc29tZSBhc3NldHMgZnJvbSB0aGUgbG9jYWwgY2hhaW4gdG8gc29tZSBkZXN0aW5hdGlvbiBjaGFpbi4AUQFGZWUgcGF5bWVudCBvbiB0aGUgZGVzdGluYXRpb24gc2lkZSBpcyBtYWRlIGZyb20gdGhlIGFzc2V0IGluIHRoZSBgYXNzZXRzYCB2ZWN0b3Igb2ZhAWluZGV4IGBmZWVfYXNzZXRfaXRlbWAsIHVwIHRvIGVub3VnaCB0byBwYXkgZm9yIGB3ZWlnaHRfbGltaXRgIG9mIHdlaWdodC4gSWYgbW9yZSB3ZWlnaHRZAWlzIG5lZWRlZCB0aGFuIGB3ZWlnaHRfbGltaXRgLCB0aGVuIHRoZSBvcGVyYXRpb24gd2lsbCBmYWlsIGFuZCB0aGUgc2VudCBhc3NldHMgbWF5IGJlIGF0IHJpc2suACkBLSBgb3JpZ2luYDogTXVzdCBiZSBjYXBhYmxlIG9mIHdpdGhkcmF3aW5nIHRoZSBgYXNzZXRzYCBhbmQgZXhlY3V0aW5nIFhDTS4lAS0gYGRlc3RgOiBEZXN0aW5hdGlvbiBjb250ZXh0IGZvciB0aGUgYXNzZXRzLiBXaWxsIHR5cGljYWxseSBiZSBgW1BhcmVudCxhASAgUGFyYWNoYWluKC4uKV1gIHRvIHNlbmQgZnJvbSBwYXJhY2hhaW4gdG8gcGFyYWNoYWluLCBvciBgW1BhcmFjaGFpbiguLildYCB0byBzZW5kIGZyb21UICByZWxheSB0byBwYXJhY2hhaW4uVQEtIGBiZW5lZmljaWFyeWA6IEEgYmVuZWZpY2lhcnkgbG9jYXRpb24gZm9yIHRoZSBhc3NldHMgaW4gdGhlIGNvbnRleHQgb2YgYGRlc3RgLiBXaWxsmCAgZ2VuZXJhbGx5IGJlIGFuIGBBY2NvdW50SWQzMmAgdmFsdWUuWQEtIGBhc3NldHNgOiBUaGUgYXNzZXRzIHRvIGJlIHdpdGhkcmF3bi4gVGhpcyBzaG91bGQgaW5jbHVkZSB0aGUgYXNzZXRzIHVzZWQgdG8gcGF5IHRoZWggIGZlZSBvbiB0aGUgYGRlc3RgIGNoYWluLk0BLSBgZmVlX2Fzc2V0X2l0ZW1gOiBUaGUgaW5kZXggaW50byBgYXNzZXRzYCBvZiB0aGUgaXRlbSB3aGljaCBzaG91bGQgYmUgdXNlZCB0byBwYXkcICBmZWVzLkUBLSBgd2VpZ2h0X2xpbWl0YDogVGhlIHJlbW90ZS1zaWRlIHdlaWdodCBsaW1pdCwgaWYgYW55LCBmb3IgdGhlIFhDTSBmZWUgcHVyY2hhc2UuQGZvcmNlX3N1c3BlbnNpb24EASRzdXNwZW5kZWRdAQEQYm9vbAAKEPRTZXQgb3IgdW5zZXQgdGhlIGdsb2JhbCBzdXNwZW5zaW9uIHN0YXRlIG9mIHRoZSBYQ00gZXhlY3V0b3IuANwtIGBvcmlnaW5gOiBNdXN0IGJlIGFuIG9yaWdpbiBzcGVjaWZpZWQgYnkgQWRtaW5PcmlnaW4u0C0gYHN1c3BlbmRlZGA6IGB0cnVlYCB0byBzdXNwZW5kLCBgZmFsc2VgIHRvIHJlc3VtZS48dHJhbnNmZXJfYXNzZXRzFAEQZGVzdMkBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAEsYmVuZWZpY2lhcnnJAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgABGGFzc2V0c40DAVBCb3g8VmVyc2lvbmVkQXNzZXRzPgABOGZlZV9hc3NldF9pdGVtOAEMdTMyAAEwd2VpZ2h0X2xpbWl0xQIBLFdlaWdodExpbWl0AAuEXQFUcmFuc2ZlciBzb21lIGFzc2V0cyBmcm9tIHRoZSBsb2NhbCBjaGFpbiB0byB0aGUgZGVzdGluYXRpb24gY2hhaW4gdGhyb3VnaCB0aGVpciBsb2NhbCzQZGVzdGluYXRpb24gb3IgcmVtb3RlIHJlc2VydmUsIG9yIHRocm91Z2ggdGVsZXBvcnRzLgBRAUZlZSBwYXltZW50IG9uIHRoZSBkZXN0aW5hdGlvbiBzaWRlIGlzIG1hZGUgZnJvbSB0aGUgYXNzZXQgaW4gdGhlIGBhc3NldHNgIHZlY3RvciBvZjUBaW5kZXggYGZlZV9hc3NldF9pdGVtYCAoaGVuY2UgcmVmZXJyZWQgdG8gYXMgYGZlZXNgKSwgdXAgdG8gZW5vdWdoIHRvIHBheSBmb3JBAWB3ZWlnaHRfbGltaXRgIG9mIHdlaWdodC4gSWYgbW9yZSB3ZWlnaHQgaXMgbmVlZGVkIHRoYW4gYHdlaWdodF9saW1pdGAsIHRoZW4gdGhl3G9wZXJhdGlvbiB3aWxsIGZhaWwgYW5kIHRoZSBzZW50IGFzc2V0cyBtYXkgYmUgYXQgcmlzay4AYQFgYXNzZXRzYCAoZXhjbHVkaW5nIGBmZWVzYCkgbXVzdCBoYXZlIHNhbWUgcmVzZXJ2ZSBsb2NhdGlvbiBvciBvdGhlcndpc2UgYmUgdGVsZXBvcnRhYmxlsHRvIGBkZXN0YCwgbm8gbGltaXRhdGlvbnMgaW1wb3NlZCBvbiBgZmVlc2AuTQEgLSBmb3IgbG9jYWwgcmVzZXJ2ZTogdHJhbnNmZXIgYXNzZXRzIHRvIHNvdmVyZWlnbiBhY2NvdW50IG9mIGRlc3RpbmF0aW9uIGNoYWluIGFuZE0BICAgZm9yd2FyZCBhIG5vdGlmaWNhdGlvbiBYQ00gdG8gYGRlc3RgIHRvIG1pbnQgYW5kIGRlcG9zaXQgcmVzZXJ2ZS1iYXNlZCBhc3NldHMgdG9EICAgYGJlbmVmaWNpYXJ5YC5hASAtIGZvciBkZXN0aW5hdGlvbiByZXNlcnZlOiBidXJuIGxvY2FsIGFzc2V0cyBhbmQgZm9yd2FyZCBhIG5vdGlmaWNhdGlvbiB0byBgZGVzdGAgY2hhaW5ZASAgIHRvIHdpdGhkcmF3IHRoZSByZXNlcnZlIGFzc2V0cyBmcm9tIHRoaXMgY2hhaW4ncyBzb3ZlcmVpZ24gYWNjb3VudCBhbmQgZGVwb3NpdCB0aGVtUCAgIHRvIGBiZW5lZmljaWFyeWAuXQEgLSBmb3IgcmVtb3RlIHJlc2VydmU6IGJ1cm4gbG9jYWwgYXNzZXRzLCBmb3J3YXJkIFhDTSB0byByZXNlcnZlIGNoYWluIHRvIG1vdmUgcmVzZXJ2ZXNdASAgIGZyb20gdGhpcyBjaGFpbidzIFNBIHRvIGBkZXN0YCBjaGFpbidzIFNBLCBhbmQgZm9yd2FyZCBhbm90aGVyIFhDTSB0byBgZGVzdGAgdG8gbWludNQgICBhbmQgZGVwb3NpdCByZXNlcnZlLWJhc2VkIGFzc2V0cyB0byBgYmVuZWZpY2lhcnlgLlEBIC0gZm9yIHRlbGVwb3J0czogYnVybiBsb2NhbCBhc3NldHMgYW5kIGZvcndhcmQgWENNIHRvIGBkZXN0YCBjaGFpbiB0byBtaW50L3RlbGVwb3J0sCAgIGFzc2V0cyBhbmQgZGVwb3NpdCB0aGVtIHRvIGBiZW5lZmljaWFyeWAuACkBLSBgb3JpZ2luYDogTXVzdCBiZSBjYXBhYmxlIG9mIHdpdGhkcmF3aW5nIHRoZSBgYXNzZXRzYCBhbmQgZXhlY3V0aW5nIFhDTS4tAS0gYGRlc3RgOiBEZXN0aW5hdGlvbiBjb250ZXh0IGZvciB0aGUgYXNzZXRzLiBXaWxsIHR5cGljYWxseSBiZSBgWDIoUGFyZW50LFUBICBQYXJhY2hhaW4oLi4pKWAgdG8gc2VuZCBmcm9tIHBhcmFjaGFpbiB0byBwYXJhY2hhaW4sIG9yIGBYMShQYXJhY2hhaW4oLi4pKWAgdG8gc2VuZGggIGZyb20gcmVsYXkgdG8gcGFyYWNoYWluLlUBLSBgYmVuZWZpY2lhcnlgOiBBIGJlbmVmaWNpYXJ5IGxvY2F0aW9uIGZvciB0aGUgYXNzZXRzIGluIHRoZSBjb250ZXh0IG9mIGBkZXN0YC4gV2lsbJggIGdlbmVyYWxseSBiZSBhbiBgQWNjb3VudElkMzJgIHZhbHVlLlkBLSBgYXNzZXRzYDogVGhlIGFzc2V0cyB0byBiZSB3aXRoZHJhd24uIFRoaXMgc2hvdWxkIGluY2x1ZGUgdGhlIGFzc2V0cyB1c2VkIHRvIHBheSB0aGXIICBmZWUgb24gdGhlIGBkZXN0YCAoYW5kIHBvc3NpYmx5IHJlc2VydmUpIGNoYWlucy5NAS0gYGZlZV9hc3NldF9pdGVtYDogVGhlIGluZGV4IGludG8gYGFzc2V0c2Agb2YgdGhlIGl0ZW0gd2hpY2ggc2hvdWxkIGJlIHVzZWQgdG8gcGF5HCAgZmVlcy5FAS0gYHdlaWdodF9saW1pdGA6IFRoZSByZW1vdGUtc2lkZSB3ZWlnaHQgbGltaXQsIGlmIGFueSwgZm9yIHRoZSBYQ00gZmVlIHB1cmNoYXNlLjBjbGFpbV9hc3NldHMIARhhc3NldHONAwFQQm94PFZlcnNpb25lZEFzc2V0cz4AASxiZW5lZmljaWFyeckBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAwYVQFDbGFpbXMgYXNzZXRzIHRyYXBwZWQgb24gdGhpcyBwYWxsZXQgYmVjYXVzZSBvZiBsZWZ0b3ZlciBhc3NldHMgZHVyaW5nIFhDTSBleGVjdXRpb24uAKwtIGBvcmlnaW5gOiBBbnlvbmUgY2FuIGNhbGwgdGhpcyBleHRyaW5zaWMuXQEtIGBhc3NldHNgOiBUaGUgZXhhY3QgYXNzZXRzIHRoYXQgd2VyZSB0cmFwcGVkLiBVc2UgdGhlIHZlcnNpb24gdG8gc3BlY2lmeSB3aGF0IHZlcnNpb26Yd2FzIHRoZSBsYXRlc3Qgd2hlbiB0aGV5IHdlcmUgdHJhcHBlZC5FAS0gYGJlbmVmaWNpYXJ5YDogVGhlIGxvY2F0aW9uL2FjY291bnQgd2hlcmUgdGhlIGNsYWltZWQgYXNzZXRzIHdpbGwgYmUgZGVwb3NpdGVkLox0cmFuc2Zlcl9hc3NldHNfdXNpbmdfdHlwZV9hbmRfdGhlbhwBEGRlc3TJAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgABGGFzc2V0c40DAVBCb3g8VmVyc2lvbmVkQXNzZXRzPgABUGFzc2V0c190cmFuc2Zlcl90eXBlvQMBREJveDxUcmFuc2ZlclR5cGU+AAE4cmVtb3RlX2ZlZXNfaWTBAwFUQm94PFZlcnNpb25lZEFzc2V0SWQ+AAFIZmVlc190cmFuc2Zlcl90eXBlvQMBREJveDxUcmFuc2ZlclR5cGU+AAFIY3VzdG9tX3hjbV9vbl9kZXN0UQIBVEJveDxWZXJzaW9uZWRYY208KCk+PgABMHdlaWdodF9saW1pdMUCASxXZWlnaHRMaW1pdAANwFUBVHJhbnNmZXIgYXNzZXRzIGZyb20gdGhlIGxvY2FsIGNoYWluIHRvIHRoZSBkZXN0aW5hdGlvbiBjaGFpbiB1c2luZyBleHBsaWNpdCB0cmFuc2Zlcmh0eXBlcyBmb3IgYXNzZXRzIGFuZCBmZWVzLgBZAWBhc3NldHNgIG11c3QgaGF2ZSBzYW1lIHJlc2VydmUgbG9jYXRpb24gb3IgbWF5IGJlIHRlbGVwb3J0YWJsZSB0byBgZGVzdGAuIENhbGxlciBtdXN07HByb3ZpZGUgdGhlIGBhc3NldHNfdHJhbnNmZXJfdHlwZWAgdG8gYmUgdXNlZCBmb3IgYGFzc2V0c2A6UQEgLSBgVHJhbnNmZXJUeXBlOjpMb2NhbFJlc2VydmVgOiB0cmFuc2ZlciBhc3NldHMgdG8gc292ZXJlaWduIGFjY291bnQgb2YgZGVzdGluYXRpb25NASAgIGNoYWluIGFuZCBmb3J3YXJkIGEgbm90aWZpY2F0aW9uIFhDTSB0byBgZGVzdGAgdG8gbWludCBhbmQgZGVwb3NpdCByZXNlcnZlLWJhc2VkbCAgIGFzc2V0cyB0byBgYmVuZWZpY2lhcnlgLlkBIC0gYFRyYW5zZmVyVHlwZTo6RGVzdGluYXRpb25SZXNlcnZlYDogYnVybiBsb2NhbCBhc3NldHMgYW5kIGZvcndhcmQgYSBub3RpZmljYXRpb24gdG9ZASAgIGBkZXN0YCBjaGFpbiB0byB3aXRoZHJhdyB0aGUgcmVzZXJ2ZSBhc3NldHMgZnJvbSB0aGlzIGNoYWluJ3Mgc292ZXJlaWduIGFjY291bnQgYW5khCAgIGRlcG9zaXQgdGhlbSB0byBgYmVuZWZpY2lhcnlgLlkBIC0gYFRyYW5zZmVyVHlwZTo6UmVtb3RlUmVzZXJ2ZShyZXNlcnZlKWA6IGJ1cm4gbG9jYWwgYXNzZXRzLCBmb3J3YXJkIFhDTSB0byBgcmVzZXJ2ZWBhASAgIGNoYWluIHRvIG1vdmUgcmVzZXJ2ZXMgZnJvbSB0aGlzIGNoYWluJ3MgU0EgdG8gYGRlc3RgIGNoYWluJ3MgU0EsIGFuZCBmb3J3YXJkIGFub3RoZXJVASAgIFhDTSB0byBgZGVzdGAgdG8gbWludCBhbmQgZGVwb3NpdCByZXNlcnZlLWJhc2VkIGFzc2V0cyB0byBgYmVuZWZpY2lhcnlgLiBUeXBpY2FsbHmUICAgdGhlIHJlbW90ZSBgcmVzZXJ2ZWAgaXMgQXNzZXQgSHViLkUBIC0gYFRyYW5zZmVyVHlwZTo6VGVsZXBvcnRgOiBidXJuIGxvY2FsIGFzc2V0cyBhbmQgZm9yd2FyZCBYQ00gdG8gYGRlc3RgIGNoYWluIHRv6CAgIG1pbnQvdGVsZXBvcnQgYXNzZXRzIGFuZCBkZXBvc2l0IHRoZW0gdG8gYGJlbmVmaWNpYXJ5YC4AVQFPbiB0aGUgZGVzdGluYXRpb24gY2hhaW4sIGFzIHdlbGwgYXMgYW55IGludGVybWVkaWFyeSBob3BzLCBgQnV5RXhlY3V0aW9uYCBpcyB1c2VkIHRvIQFidXkgZXhlY3V0aW9uIHVzaW5nIHRyYW5zZmVycmVkIGBhc3NldHNgIGlkZW50aWZpZWQgYnkgYHJlbW90ZV9mZWVzX2lkYC5ZAU1ha2Ugc3VyZSBlbm91Z2ggb2YgdGhlIHNwZWNpZmllZCBgcmVtb3RlX2ZlZXNfaWRgIGFzc2V0IGlzIGluY2x1ZGVkIGluIHRoZSBnaXZlbiBsaXN0YQFvZiBgYXNzZXRzYC4gYHJlbW90ZV9mZWVzX2lkYCBzaG91bGQgYmUgZW5vdWdoIHRvIHBheSBmb3IgYHdlaWdodF9saW1pdGAuIElmIG1vcmUgd2VpZ2h0WQFpcyBuZWVkZWQgdGhhbiBgd2VpZ2h0X2xpbWl0YCwgdGhlbiB0aGUgb3BlcmF0aW9uIHdpbGwgZmFpbCBhbmQgdGhlIHNlbnQgYXNzZXRzIG1heSBiZSBhdCByaXNrLgBFAWByZW1vdGVfZmVlc19pZGAgbWF5IHVzZSBkaWZmZXJlbnQgdHJhbnNmZXIgdHlwZSB0aGFuIHJlc3Qgb2YgYGFzc2V0c2AgYW5kIGNhbiBiZZxzcGVjaWZpZWQgdGhyb3VnaCBgZmVlc190cmFuc2Zlcl90eXBlYC4AYQFUaGUgY2FsbGVyIG5lZWRzIHRvIHNwZWNpZnkgd2hhdCBzaG91bGQgaGFwcGVuIHRvIHRoZSB0cmFuc2ZlcnJlZCBhc3NldHMgb25jZSB0aGV5IHJlYWNoQQF0aGUgYGRlc3RgIGNoYWluLiBUaGlzIGlzIGRvbmUgdGhyb3VnaCB0aGUgYGN1c3RvbV94Y21fb25fZGVzdGAgcGFyYW1ldGVyLCB3aGljaPxjb250YWlucyB0aGUgaW5zdHJ1Y3Rpb25zIHRvIGV4ZWN1dGUgb24gYGRlc3RgIGFzIGEgZmluYWwgc3RlcC58ICBUaGlzIGlzIHVzdWFsbHkgYXMgc2ltcGxlIGFzOlEBICBgWGNtKHZlYyFbRGVwb3NpdEFzc2V0IHsgYXNzZXRzOiBXaWxkKEFsbENvdW50ZWQoYXNzZXRzLmxlbigpKSksIGJlbmVmaWNpYXJ5IH1dKWAsMQEgIGJ1dCBjb3VsZCBiZSBzb21ldGhpbmcgbW9yZSBleG90aWMgbGlrZSBzZW5kaW5nIHRoZSBgYXNzZXRzYCBldmVuIGZ1cnRoZXIuACkBLSBgb3JpZ2luYDogTXVzdCBiZSBjYXBhYmxlIG9mIHdpdGhkcmF3aW5nIHRoZSBgYXNzZXRzYCBhbmQgZXhlY3V0aW5nIFhDTS4lAS0gYGRlc3RgOiBEZXN0aW5hdGlvbiBjb250ZXh0IGZvciB0aGUgYXNzZXRzLiBXaWxsIHR5cGljYWxseSBiZSBgW1BhcmVudCxhASAgUGFyYWNoYWluKC4uKV1gIHRvIHNlbmQgZnJvbSBwYXJhY2hhaW4gdG8gcGFyYWNoYWluLCBvciBgW1BhcmFjaGFpbiguLildYCB0byBzZW5kIGZyb209ASAgcmVsYXkgdG8gcGFyYWNoYWluLCBvciBgKHBhcmVudHM6IDIsIChHbG9iYWxDb25zZW5zdXMoLi4pLCAuLikpYCB0byBzZW5kIGZyb230ICBwYXJhY2hhaW4gYWNyb3NzIGEgYnJpZGdlIHRvIGFub3RoZXIgZWNvc3lzdGVtIGRlc3RpbmF0aW9uLlkBLSBgYXNzZXRzYDogVGhlIGFzc2V0cyB0byBiZSB3aXRoZHJhd24uIFRoaXMgc2hvdWxkIGluY2x1ZGUgdGhlIGFzc2V0cyB1c2VkIHRvIHBheSB0aGXIICBmZWUgb24gdGhlIGBkZXN0YCAoYW5kIHBvc3NpYmx5IHJlc2VydmUpIGNoYWlucy49AS0gYGFzc2V0c190cmFuc2Zlcl90eXBlYDogVGhlIFhDTSBgVHJhbnNmZXJUeXBlYCB1c2VkIHRvIHRyYW5zZmVyIHRoZSBgYXNzZXRzYC4hAS0gYHJlbW90ZV9mZWVzX2lkYDogT25lIG9mIHRoZSBpbmNsdWRlZCBgYXNzZXRzYCB0byBiZSB1c2VkIHRvIHBheSBmZWVzLkkBLSBgZmVlc190cmFuc2Zlcl90eXBlYDogVGhlIFhDTSBgVHJhbnNmZXJUeXBlYCB1c2VkIHRvIHRyYW5zZmVyIHRoZSBgZmVlc2AgYXNzZXRzLlkBLSBgY3VzdG9tX3hjbV9vbl9kZXN0YDogVGhlIFhDTSB0byBiZSBleGVjdXRlZCBvbiBgZGVzdGAgY2hhaW4gYXMgdGhlIGxhc3Qgc3RlcCBvZiB0aGVZASAgdHJhbnNmZXIsIHdoaWNoIGFsc28gZGV0ZXJtaW5lcyB3aGF0IGhhcHBlbnMgdG8gdGhlIGFzc2V0cyBvbiB0aGUgZGVzdGluYXRpb24gY2hhaW4uRQEtIGB3ZWlnaHRfbGltaXRgOiBUaGUgcmVtb3RlLXNpZGUgd2VpZ2h0IGxpbWl0LCBpZiBhbnksIGZvciB0aGUgWENNIGZlZSBwdXJjaGFzZS5QYWRkX2F1dGhvcml6ZWRfYWxpYXMIARxhbGlhc2VyyQEBWEJveDxWZXJzaW9uZWRMb2NhdGlvbj4AARxleHBpcmVzAQEBLE9wdGlvbjx1NjQ+AA4sXQFBdXRob3JpemUgYW5vdGhlciBgYWxpYXNlcmAgbG9jYXRpb24gdG8gYWxpYXMgaW50byB0aGUgbG9jYWwgYG9yaWdpbmAgbWFraW5nIHRoaXMgY2FsbC4pAVRoZSBgYWxpYXNlcmAgaXMgb25seSBhdXRob3JpemVkIHVudGlsIHRoZSBwcm92aWRlZCBgZXhwaXJ5YCBibG9jayBudW1iZXIuSQFUaGUgY2FsbCBjYW4gYWxzbyBiZSB1c2VkIGZvciBhIHByZXZpb3VzbHkgYXV0aG9yaXplZCBhbGlhcyBpbiBvcmRlciB0byB1cGRhdGUgaXRzWGBleHBpcnlgIGJsb2NrIG51bWJlci4AUQFVc3VhbGx5IHVzZWZ1bCB0byBhbGxvdyB5b3VyIGxvY2FsIGFjY291bnQgdG8gYmUgYWxpYXNlZCBpbnRvIGZyb20gYSByZW1vdGUgbG9jYXRpb270YWxzbyB1bmRlciB5b3VyIGNvbnRyb2wgKGxpa2UgeW91ciBhY2NvdW50IG9uIGFub3RoZXIgY2hhaW4pLgBRAVdBUk5JTkc6IG1ha2Ugc3VyZSB0aGUgY2FsbGVyIGBvcmlnaW5gICh5b3UpIHRydXN0cyB0aGUgYGFsaWFzZXJgIGxvY2F0aW9uIHRvIGFjdCBpblkBdGhlaXIveW91ciBuYW1lLiBPbmNlIGF1dGhvcml6ZWQgdXNpbmcgdGhpcyBjYWxsLCB0aGUgYGFsaWFzZXJgIGNhbiBmcmVlbHkgaW1wZXJzb25hdGXUYG9yaWdpbmAgaW4gWENNIHByb2dyYW1zIGV4ZWN1dGVkIG9uIHRoZSBsb2NhbCBjaGFpbi5ccmVtb3ZlX2F1dGhvcml6ZWRfYWxpYXMEARxhbGlhc2VyyQEBWEJveDxWZXJzaW9uZWRMb2NhdGlvbj4ADwhdAVJlbW92ZSBhIHByZXZpb3VzbHkgYXV0aG9yaXplZCBgYWxpYXNlcmAgZnJvbSB0aGUgbGlzdCBvZiBsb2NhdGlvbnMgdGhhdCBjYW4gYWxpYXMgaW50b5B0aGUgbG9jYWwgYG9yaWdpbmAgbWFraW5nIHRoaXMgY2FsbC50cmVtb3ZlX2FsbF9hdXRob3JpemVkX2FsaWFzZXMAEAhJAVJlbW92ZSBhbGwgcHJldmlvdXNseSBhdXRob3JpemVkIGBhbGlhc2VyYHMgdGhhdCBjYW4gYWxpYXMgaW50byB0aGUgbG9jYWwgYG9yaWdpbmBEbWFraW5nIHRoaXMgY2FsbC4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuyQEIDHhjbURWZXJzaW9uZWRMb2NhdGlvbgABDAhWMwQAzQEBRHYzOjpNdWx0aUxvY2F0aW9uAAMACFY0BADpAQEwdjQ6OkxvY2F0aW9uAAQACFY1BAAdAgEwdjU6OkxvY2F0aW9uAAUAAM0BECxzdGFnaW5nX3hjbQh2MzRtdWx0aWxvY2F0aW9uNE11bHRpTG9jYXRpb24AAAgBHHBhcmVudHMMAQh1OAABIGludGVyaW9y0QEBJEp1bmN0aW9ucwAA0QEQDHhjbQh2MyRqdW5jdGlvbnMkSnVuY3Rpb25zAAEkEEhlcmUAAAAIWDEEANUBASBKdW5jdGlvbgABAAhYMggA1QEBIEp1bmN0aW9uAADVAQEgSnVuY3Rpb24AAgAIWDMMANUBASBKdW5jdGlvbgAA1QEBIEp1bmN0aW9uAADVAQEgSnVuY3Rpb24AAwAIWDQQANUBASBKdW5jdGlvbgAA1QEBIEp1bmN0aW9uAADVAQEgSnVuY3Rpb24AANUBASBKdW5jdGlvbgAEAAhYNRQA1QEBIEp1bmN0aW9uAADVAQEgSnVuY3Rpb24AANUBASBKdW5jdGlvbgAA1QEBIEp1bmN0aW9uAADVAQEgSnVuY3Rpb24ABQAIWDYYANUBASBKdW5jdGlvbgAA1QEBIEp1bmN0aW9uAADVAQEgSnVuY3Rpb24AANUBASBKdW5jdGlvbgAA1QEBIEp1bmN0aW9uAADVAQEgSnVuY3Rpb24ABgAIWDccANUBASBKdW5jdGlvbgAA1QEBIEp1bmN0aW9uAADVAQEgSnVuY3Rpb24AANUBASBKdW5jdGlvbgAA1QEBIEp1bmN0aW9uAADVAQEgSnVuY3Rpb24AANUBASBKdW5jdGlvbgAHAAhYOCAA1QEBIEp1bmN0aW9uAADVAQEgSnVuY3Rpb24AANUBASBKdW5jdGlvbgAA1QEBIEp1bmN0aW9uAADVAQEgSnVuY3Rpb24AANUBASBKdW5jdGlvbgAA1QEBIEp1bmN0aW9uAADVAQEgSnVuY3Rpb24ACAAA1QEQDHhjbQh2MyBqdW5jdGlvbiBKdW5jdGlvbgABKCRQYXJhY2hhaW4EAGQBDHUzMgAAACxBY2NvdW50SWQzMggBHG5ldHdvcmvZAQFET3B0aW9uPE5ldHdvcmtJZD4AAQhpZAgBIFt1ODsgMzJdAAEAOEFjY291bnRJbmRleDY0CAEcbmV0d29ya9kBAURPcHRpb248TmV0d29ya0lkPgABFGluZGV4uAEMdTY0AAIAMEFjY291bnRLZXkyMAgBHG5ldHdvcmvZAQFET3B0aW9uPE5ldHdvcmtJZD4AAQxrZXkcASBbdTg7IDIwXQADADhQYWxsZXRJbnN0YW5jZQQADAEIdTgABAAwR2VuZXJhbEluZGV4BABVAQEQdTEyOAAFAChHZW5lcmFsS2V5CAEYbGVuZ3RoDAEIdTgAARBkYXRhCAEgW3U4OyAzMl0ABgAkT25seUNoaWxkAAcAJFBsdXJhbGl0eQgBCGlk4QEBGEJvZHlJZAABEHBhcnTlAQEgQm9keVBhcnQACAA8R2xvYmFsQ29uc2Vuc3VzBADdAQEkTmV0d29ya0lkAAkAANkBBBhPcHRpb24EBFQB3QEBCBBOb25lAAAAEFNvbWUEAN0BAAABAADdARAMeGNtCHYzIGp1bmN0aW9uJE5ldHdvcmtJZAABLCRCeUdlbmVzaXMEAAgBIFt1ODsgMzJdAAAAGEJ5Rm9yawgBMGJsb2NrX251bWJlcigBDHU2NAABKGJsb2NrX2hhc2gIASBbdTg7IDMyXQABACBQb2xrYWRvdAACABhLdXNhbWEAAwAcV2VzdGVuZAAEABhSb2NvY28ABQAYV29jb2NvAAYAIEV0aGVyZXVtBAEgY2hhaW5faWS4AQx1NjQABwAsQml0Y29pbkNvcmUACAAsQml0Y29pbkNhc2gACQBAUG9sa2Fkb3RCdWxsZXRpbgAKAADhARAMeGNtCHYzIGp1bmN0aW9uGEJvZHlJZAABKBBVbml0AAAAHE1vbmlrZXIEAHQBHFt1ODsgNF0AAQAUSW5kZXgEAGQBDHUzMgACACRFeGVjdXRpdmUAAwAkVGVjaG5pY2FsAAQALExlZ2lzbGF0aXZlAAUAIEp1ZGljaWFsAAYAHERlZmVuc2UABwA4QWRtaW5pc3RyYXRpb24ACAAgVHJlYXN1cnkACQAA5QEQDHhjbQh2MyBqdW5jdGlvbiBCb2R5UGFydAABFBRWb2ljZQAAABxNZW1iZXJzBAEUY291bnRkAQx1MzIAAQAgRnJhY3Rpb24IAQxub21kAQx1MzIAARRkZW5vbWQBDHUzMgACAERBdExlYXN0UHJvcG9ydGlvbggBDG5vbWQBDHUzMgABFGRlbm9tZAEMdTMyAAMASE1vcmVUaGFuUHJvcG9ydGlvbggBDG5vbWQBDHUzMgABFGRlbm9tZAEMdTMyAAQAAOkBECxzdGFnaW5nX3hjbQh2NCBsb2NhdGlvbiBMb2NhdGlvbgAACAEccGFyZW50cwwBCHU4AAEgaW50ZXJpb3LtAQEkSnVuY3Rpb25zAADtARAsc3RhZ2luZ194Y20IdjQkanVuY3Rpb25zJEp1bmN0aW9ucwABJBBIZXJlAAAACFgxBADxAQFIQXJjPFtKdW5jdGlvbjsgMV0+AAEACFgyBAABAgFIQXJjPFtKdW5jdGlvbjsgMl0+AAIACFgzBAAFAgFIQXJjPFtKdW5jdGlvbjsgM10+AAMACFg0BAAJAgFIQXJjPFtKdW5jdGlvbjsgNF0+AAQACFg1BAANAgFIQXJjPFtKdW5jdGlvbjsgNV0+AAUACFg2BAARAgFIQXJjPFtKdW5jdGlvbjsgNl0+AAYACFg3BAAVAgFIQXJjPFtKdW5jdGlvbjsgN10+AAcACFg4BAAZAgFIQXJjPFtKdW5jdGlvbjsgOF0+AAgAAPEBAAADAQAAAPUBAPUBECxzdGFnaW5nX3hjbQh2NCBqdW5jdGlvbiBKdW5jdGlvbgABKCRQYXJhY2hhaW4EAGQBDHUzMgAAACxBY2NvdW50SWQzMggBHG5ldHdvcmv5AQFET3B0aW9uPE5ldHdvcmtJZD4AAQhpZAgBIFt1ODsgMzJdAAEAOEFjY291bnRJbmRleDY0CAEcbmV0d29ya/kBAURPcHRpb248TmV0d29ya0lkPgABFGluZGV4uAEMdTY0AAIAMEFjY291bnRLZXkyMAgBHG5ldHdvcmv5AQFET3B0aW9uPE5ldHdvcmtJZD4AAQxrZXkcASBbdTg7IDIwXQADADhQYWxsZXRJbnN0YW5jZQQADAEIdTgABAAwR2VuZXJhbEluZGV4BABVAQEQdTEyOAAFAChHZW5lcmFsS2V5CAEYbGVuZ3RoDAEIdTgAARBkYXRhCAEgW3U4OyAzMl0ABgAkT25seUNoaWxkAAcAJFBsdXJhbGl0eQgBCGlk4QEBGEJvZHlJZAABEHBhcnTlAQEgQm9keVBhcnQACAA8R2xvYmFsQ29uc2Vuc3VzBAD9AQEkTmV0d29ya0lkAAkAAPkBBBhPcHRpb24EBFQB/QEBCBBOb25lAAAAEFNvbWUEAP0BAAABAAD9ARAsc3RhZ2luZ194Y20IdjQganVuY3Rpb24kTmV0d29ya0lkAAEsJEJ5R2VuZXNpcwQACAEgW3U4OyAzMl0AAAAYQnlGb3JrCAEwYmxvY2tfbnVtYmVyKAEMdTY0AAEoYmxvY2tfaGFzaAgBIFt1ODsgMzJdAAEAIFBvbGthZG90AAIAGEt1c2FtYQADABxXZXN0ZW5kAAQAGFJvY29jbwAFABhXb2NvY28ABgAgRXRoZXJldW0EASBjaGFpbl9pZLgBDHU2NAAHACxCaXRjb2luQ29yZQAIACxCaXRjb2luQ2FzaAAJAEBQb2xrYWRvdEJ1bGxldGluAAoAAAECAAADAgAAAPUBAAUCAAADAwAAAPUBAAkCAAADBAAAAPUBAA0CAAADBQAAAPUBABECAAADBgAAAPUBABUCAAADBwAAAPUBABkCAAADCAAAAPUBAB0CECxzdGFnaW5nX3hjbQh2NSBsb2NhdGlvbiBMb2NhdGlvbgAACAEccGFyZW50cwwBCHU4AAEgaW50ZXJpb3IhAgEkSnVuY3Rpb25zAAAhAhAsc3RhZ2luZ194Y20IdjUkanVuY3Rpb25zJEp1bmN0aW9ucwABJBBIZXJlAAAACFgxBAAlAgFIQXJjPFtKdW5jdGlvbjsgMV0+AAEACFgyBAA1AgFIQXJjPFtKdW5jdGlvbjsgMl0+AAIACFgzBAA5AgFIQXJjPFtKdW5jdGlvbjsgM10+AAMACFg0BAA9AgFIQXJjPFtKdW5jdGlvbjsgNF0+AAQACFg1BABBAgFIQXJjPFtKdW5jdGlvbjsgNV0+AAUACFg2BABFAgFIQXJjPFtKdW5jdGlvbjsgNl0+AAYACFg3BABJAgFIQXJjPFtKdW5jdGlvbjsgN10+AAcACFg4BABNAgFIQXJjPFtKdW5jdGlvbjsgOF0+AAgAACUCAAADAQAAACkCACkCECxzdGFnaW5nX3hjbQh2NSBqdW5jdGlvbiBKdW5jdGlvbgABKCRQYXJhY2hhaW4EAGQBDHUzMgAAACxBY2NvdW50SWQzMggBHG5ldHdvcmstAgFET3B0aW9uPE5ldHdvcmtJZD4AAQhpZAgBIFt1ODsgMzJdAAEAOEFjY291bnRJbmRleDY0CAEcbmV0d29yay0CAURPcHRpb248TmV0d29ya0lkPgABFGluZGV4uAEMdTY0AAIAMEFjY291bnRLZXkyMAgBHG5ldHdvcmstAgFET3B0aW9uPE5ldHdvcmtJZD4AAQxrZXkcASBbdTg7IDIwXQADADhQYWxsZXRJbnN0YW5jZQQADAEIdTgABAAwR2VuZXJhbEluZGV4BABVAQEQdTEyOAAFAChHZW5lcmFsS2V5CAEYbGVuZ3RoDAEIdTgAARBkYXRhCAEgW3U4OyAzMl0ABgAkT25seUNoaWxkAAcAJFBsdXJhbGl0eQgBCGlk4QEBGEJvZHlJZAABEHBhcnTlAQEgQm9keVBhcnQACAA8R2xvYmFsQ29uc2Vuc3VzBAAxAgEkTmV0d29ya0lkAAkAAC0CBBhPcHRpb24EBFQBMQIBCBBOb25lAAAAEFNvbWUEADECAAABAAAxAhAsc3RhZ2luZ194Y20IdjUganVuY3Rpb24kTmV0d29ya0lkAAEgJEJ5R2VuZXNpcwQACAEgW3U4OyAzMl0AAAAYQnlGb3JrCAEwYmxvY2tfbnVtYmVyKAEMdTY0AAEoYmxvY2tfaGFzaAgBIFt1ODsgMzJdAAEAIFBvbGthZG90AAIAGEt1c2FtYQADACBFdGhlcmV1bQQBIGNoYWluX2lkuAEMdTY0AAcALEJpdGNvaW5Db3JlAAgALEJpdGNvaW5DYXNoAAkAQFBvbGthZG90QnVsbGV0aW4ACgAANQIAAAMCAAAAKQIAOQIAAAMDAAAAKQIAPQIAAAMEAAAAKQIAQQIAAAMFAAAAKQIARQIAAAMGAAAAKQIASQIAAAMHAAAAKQIATQIAAAMIAAAAKQIAUQIIDHhjbTBWZXJzaW9uZWRYY20ELFJ1bnRpbWVDYWxsAAEMCFYzBABVAgFQdjM6OlhjbTxSdW50aW1lQ2FsbD4AAwAIVjQEAMkCAVB2NDo6WGNtPFJ1bnRpbWVDYWxsPgAEAAhWNQQAFQMBUHY1OjpYY208UnVudGltZUNhbGw+AAUAAFUCDAx4Y20IdjMMWGNtBBBDYWxsAAAEAFkCAVhWZWM8SW5zdHJ1Y3Rpb248Q2FsbD4+AABZAgAAAl0CAF0CDAx4Y20IdjMsSW5zdHJ1Y3Rpb24EEENhbGwAAcA0V2l0aGRyYXdBc3NldAQAYQIBLE11bHRpQXNzZXRzAAAAVFJlc2VydmVBc3NldERlcG9zaXRlZAQAYQIBLE11bHRpQXNzZXRzAAEAWFJlY2VpdmVUZWxlcG9ydGVkQXNzZXQEAGECASxNdWx0aUFzc2V0cwACADRRdWVyeVJlc3BvbnNlEAEgcXVlcnlfaWS4ARxRdWVyeUlkAAEgcmVzcG9uc2WBAgEgUmVzcG9uc2UAAShtYXhfd2VpZ2h0FQEBGFdlaWdodAABHHF1ZXJpZXKpAgFUT3B0aW9uPE11bHRpTG9jYXRpb24+AAMANFRyYW5zZmVyQXNzZXQIARhhc3NldHNhAgEsTXVsdGlBc3NldHMAASxiZW5lZmljaWFyec0BATRNdWx0aUxvY2F0aW9uAAQAUFRyYW5zZmVyUmVzZXJ2ZUFzc2V0DAEYYXNzZXRzYQIBLE11bHRpQXNzZXRzAAEQZGVzdM0BATRNdWx0aUxvY2F0aW9uAAEMeGNtVQIBHFhjbTwoKT4ABQAgVHJhbnNhY3QMASxvcmlnaW5fa2luZK0CAShPcmlnaW5LaW5kAAFYcmVxdWlyZV93ZWlnaHRfYXRfbW9zdBUBARhXZWlnaHQAARBjYWxssQIBTERvdWJsZUVuY29kZWQ8Q2FsbD4ABgBkSHJtcE5ld0NoYW5uZWxPcGVuUmVxdWVzdAwBGHNlbmRlcmQBDHUzMgABQG1heF9tZXNzYWdlX3NpemVkAQx1MzIAATBtYXhfY2FwYWNpdHlkAQx1MzIABwBMSHJtcENoYW5uZWxBY2NlcHRlZAQBJHJlY2lwaWVudGQBDHUzMgAIAEhIcm1wQ2hhbm5lbENsb3NpbmcMASRpbml0aWF0b3JkAQx1MzIAARhzZW5kZXJkAQx1MzIAASRyZWNpcGllbnRkAQx1MzIACQAsQ2xlYXJPcmlnaW4ACgA0RGVzY2VuZE9yaWdpbgQA0QEBVEludGVyaW9yTXVsdGlMb2NhdGlvbgALACxSZXBvcnRFcnJvcgQAtQIBRFF1ZXJ5UmVzcG9uc2VJbmZvAAwAMERlcG9zaXRBc3NldAgBGGFzc2V0c7kCAUBNdWx0aUFzc2V0RmlsdGVyAAEsYmVuZWZpY2lhcnnNAQE0TXVsdGlMb2NhdGlvbgANAExEZXBvc2l0UmVzZXJ2ZUFzc2V0DAEYYXNzZXRzuQIBQE11bHRpQXNzZXRGaWx0ZXIAARBkZXN0zQEBNE11bHRpTG9jYXRpb24AAQx4Y21VAgEcWGNtPCgpPgAOADRFeGNoYW5nZUFzc2V0DAEQZ2l2ZbkCAUBNdWx0aUFzc2V0RmlsdGVyAAEQd2FudGECASxNdWx0aUFzc2V0cwABHG1heGltYWxdAQEQYm9vbAAPAFxJbml0aWF0ZVJlc2VydmVXaXRoZHJhdwwBGGFzc2V0c7kCAUBNdWx0aUFzc2V0RmlsdGVyAAEccmVzZXJ2Zc0BATRNdWx0aUxvY2F0aW9uAAEMeGNtVQIBHFhjbTwoKT4AEABASW5pdGlhdGVUZWxlcG9ydAwBGGFzc2V0c7kCAUBNdWx0aUFzc2V0RmlsdGVyAAEQZGVzdM0BATRNdWx0aUxvY2F0aW9uAAEMeGNtVQIBHFhjbTwoKT4AEQA0UmVwb3J0SG9sZGluZwgBNHJlc3BvbnNlX2luZm+1AgFEUXVlcnlSZXNwb25zZUluZm8AARhhc3NldHO5AgFATXVsdGlBc3NldEZpbHRlcgASADBCdXlFeGVjdXRpb24IARBmZWVzaQIBKE11bHRpQXNzZXQAATB3ZWlnaHRfbGltaXTFAgEsV2VpZ2h0TGltaXQAEwA0UmVmdW5kU3VycGx1cwAUADxTZXRFcnJvckhhbmRsZXIEAFUCASRYY208Q2FsbD4AFQAsU2V0QXBwZW5kaXgEAFUCASRYY208Q2FsbD4AFgAoQ2xlYXJFcnJvcgAXAChDbGFpbUFzc2V0CAEYYXNzZXRzYQIBLE11bHRpQXNzZXRzAAEYdGlja2V0zQEBNE11bHRpTG9jYXRpb24AGAAQVHJhcAQAuAEMdTY0ABkAQFN1YnNjcmliZVZlcnNpb24IASBxdWVyeV9pZLgBHFF1ZXJ5SWQAAUxtYXhfcmVzcG9uc2Vfd2VpZ2h0FQEBGFdlaWdodAAaAEhVbnN1YnNjcmliZVZlcnNpb24AGwAkQnVybkFzc2V0BABhAgEsTXVsdGlBc3NldHMAHAAsRXhwZWN0QXNzZXQEAGECASxNdWx0aUFzc2V0cwAdADBFeHBlY3RPcmlnaW4EAKkCAVRPcHRpb248TXVsdGlMb2NhdGlvbj4AHgAsRXhwZWN0RXJyb3IEAIUCAVBPcHRpb248KHUzMiwgRXJyb3IpPgAfAFBFeHBlY3RUcmFuc2FjdFN0YXR1cwQAoQIBOE1heWJlRXJyb3JDb2RlACAALFF1ZXJ5UGFsbGV0CAEsbW9kdWxlX25hbWUYARxWZWM8dTg+AAE0cmVzcG9uc2VfaW5mb7UCAURRdWVyeVJlc3BvbnNlSW5mbwAhADBFeHBlY3RQYWxsZXQUARRpbmRleGQBDHUzMgABEG5hbWUYARxWZWM8dTg+AAEsbW9kdWxlX25hbWUYARxWZWM8dTg+AAEsY3JhdGVfbWFqb3JkAQx1MzIAATxtaW5fY3JhdGVfbWlub3JkAQx1MzIAIgBQUmVwb3J0VHJhbnNhY3RTdGF0dXMEALUCAURRdWVyeVJlc3BvbnNlSW5mbwAjAExDbGVhclRyYW5zYWN0U3RhdHVzACQAPFVuaXZlcnNhbE9yaWdpbgQA1QEBIEp1bmN0aW9uACUANEV4cG9ydE1lc3NhZ2UMARxuZXR3b3Jr3QEBJE5ldHdvcmtJZAABLGRlc3RpbmF0aW9u0QEBVEludGVyaW9yTXVsdGlMb2NhdGlvbgABDHhjbVUCARxYY208KCk+ACYAJExvY2tBc3NldAgBFGFzc2V0aQIBKE11bHRpQXNzZXQAASB1bmxvY2tlcs0BATRNdWx0aUxvY2F0aW9uACcALFVubG9ja0Fzc2V0CAEUYXNzZXRpAgEoTXVsdGlBc3NldAABGHRhcmdldM0BATRNdWx0aUxvY2F0aW9uACgAOE5vdGVVbmxvY2thYmxlCAEUYXNzZXRpAgEoTXVsdGlBc3NldAABFG93bmVyzQEBNE11bHRpTG9jYXRpb24AKQA0UmVxdWVzdFVubG9jawgBFGFzc2V0aQIBKE11bHRpQXNzZXQAARhsb2NrZXLNAQE0TXVsdGlMb2NhdGlvbgAqACxTZXRGZWVzTW9kZQQBMGppdF93aXRoZHJhd10BARBib29sACsAIFNldFRvcGljBAAIASBbdTg7IDMyXQAsAChDbGVhclRvcGljAC0ALEFsaWFzT3JpZ2luBADNAQE0TXVsdGlMb2NhdGlvbgAuADxVbnBhaWRFeGVjdXRpb24IATB3ZWlnaHRfbGltaXTFAgEsV2VpZ2h0TGltaXQAATBjaGVja19vcmlnaW6pAgFUT3B0aW9uPE11bHRpTG9jYXRpb24+AC8AAGECEAx4Y20IdjMobXVsdGlhc3NldCxNdWx0aUFzc2V0cwAABABlAgE8VmVjPE11bHRpQXNzZXQ+AABlAgAAAmkCAGkCEAx4Y20IdjMobXVsdGlhc3NldChNdWx0aUFzc2V0AAAIAQhpZG0CARxBc3NldElkAAEMZnVucQIBLEZ1bmdpYmlsaXR5AABtAhAMeGNtCHYzKG11bHRpYXNzZXQcQXNzZXRJZAABCCBDb25jcmV0ZQQAzQEBNE11bHRpTG9jYXRpb24AAAAgQWJzdHJhY3QEAAgBIFt1ODsgMzJdAAEAAHECEAx4Y20IdjMobXVsdGlhc3NldCxGdW5naWJpbGl0eQABCCBGdW5naWJsZQQAVQEBEHUxMjgAAAAsTm9uRnVuZ2libGUEAHUCATRBc3NldEluc3RhbmNlAAEAAHUCEAx4Y20IdjMobXVsdGlhc3NldDRBc3NldEluc3RhbmNlAAEYJFVuZGVmaW5lZAAAABRJbmRleAQAVQEBEHUxMjgAAQAYQXJyYXk0BAB0ARxbdTg7IDRdAAIAGEFycmF5OAQAeQIBHFt1ODsgOF0AAwAcQXJyYXkxNgQAfQIBIFt1ODsgMTZdAAQAHEFycmF5MzIEAAgBIFt1ODsgMzJdAAUAAHkCAAADCAAAAAwAfQIAAAMQAAAADACBAgwMeGNtCHYzIFJlc3BvbnNlAAEYEE51bGwAAAAYQXNzZXRzBABhAgEsTXVsdGlBc3NldHMAAQA8RXhlY3V0aW9uUmVzdWx0BACFAgFQT3B0aW9uPCh1MzIsIEVycm9yKT4AAgAcVmVyc2lvbgQAOAE4c3VwZXI6OlZlcnNpb24AAwAsUGFsbGV0c0luZm8EAJECAZhCb3VuZGVkVmVjPFBhbGxldEluZm8sIE1heFBhbGxldHNJbmZvPgAEADhEaXNwYXRjaFJlc3VsdAQAoQIBOE1heWJlRXJyb3JDb2RlAAUAAIUCBBhPcHRpb24EBFQBiQIBCBBOb25lAAAAEFNvbWUEAIkCAAABAACJAgAABAg4jQIAjQIQDHhjbQh2Mxh0cmFpdHMURXJyb3IAAaAgT3ZlcmZsb3cAAAA0VW5pbXBsZW1lbnRlZAABAGBVbnRydXN0ZWRSZXNlcnZlTG9jYXRpb24AAgBkVW50cnVzdGVkVGVsZXBvcnRMb2NhdGlvbgADADBMb2NhdGlvbkZ1bGwABABUTG9jYXRpb25Ob3RJbnZlcnRpYmxlAAUAJEJhZE9yaWdpbgAGADxJbnZhbGlkTG9jYXRpb24ABwA0QXNzZXROb3RGb3VuZAAIAFRGYWlsZWRUb1RyYW5zYWN0QXNzZXQACQA8Tm90V2l0aGRyYXdhYmxlAAoASExvY2F0aW9uQ2Fubm90SG9sZAALAFRFeGNlZWRzTWF4TWVzc2FnZVNpemUADABYRGVzdGluYXRpb25VbnN1cHBvcnRlZAANACRUcmFuc3BvcnQADgAoVW5yb3V0YWJsZQAPADBVbmtub3duQ2xhaW0AEAA4RmFpbGVkVG9EZWNvZGUAEQBATWF4V2VpZ2h0SW52YWxpZAASADhOb3RIb2xkaW5nRmVlcwATADBUb29FeHBlbnNpdmUAFAAQVHJhcAQAKAEMdTY0ABUAQEV4cGVjdGF0aW9uRmFsc2UAFgA4UGFsbGV0Tm90Rm91bmQAFwAwTmFtZU1pc21hdGNoABgATFZlcnNpb25JbmNvbXBhdGlibGUAGQBQSG9sZGluZ1dvdWxkT3ZlcmZsb3cAGgAsRXhwb3J0RXJyb3IAGwA4UmVhbmNob3JGYWlsZWQAHAAYTm9EZWFsAB0AKEZlZXNOb3RNZXQAHgAkTG9ja0Vycm9yAB8AME5vUGVybWlzc2lvbgAgAChVbmFuY2hvcmVkACEAOE5vdERlcG9zaXRhYmxlACIATFVuaGFuZGxlZFhjbVZlcnNpb24AIwBIV2VpZ2h0TGltaXRSZWFjaGVkBAAVAQEYV2VpZ2h0ACQAHEJhcnJpZXIAJQBMV2VpZ2h0Tm90Q29tcHV0YWJsZQAmAERFeGNlZWRzU3RhY2tMaW1pdAAnAACRAgxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAZUCBFMAAAQAnQIBGFZlYzxUPgAAlQIMDHhjbQh2MyhQYWxsZXRJbmZvAAAYARRpbmRleGQBDHUzMgABEG5hbWWZAgGAQm91bmRlZFZlYzx1OCwgTWF4UGFsbGV0TmFtZUxlbj4AASxtb2R1bGVfbmFtZZkCAYBCb3VuZGVkVmVjPHU4LCBNYXhQYWxsZXROYW1lTGVuPgABFG1ham9yZAEMdTMyAAEUbWlub3JkAQx1MzIAARRwYXRjaGQBDHUzMgAAmQIMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AACdAgAAApUCAKECDAx4Y20IdjM4TWF5YmVFcnJvckNvZGUAAQwcU3VjY2VzcwAAABRFcnJvcgQApQIBjEJvdW5kZWRWZWM8dTgsIE1heERpc3BhdGNoRXJyb3JMZW4+AAEAOFRydW5jYXRlZEVycm9yBAClAgGMQm91bmRlZFZlYzx1OCwgTWF4RGlzcGF0Y2hFcnJvckxlbj4AAgAApQIMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AACpAgQYT3B0aW9uBARUAc0BAQgQTm9uZQAAABBTb21lBADNAQAAAQAArQIMDHhjbQh2MyhPcmlnaW5LaW5kAAEQGE5hdGl2ZQAAAEBTb3ZlcmVpZ25BY2NvdW50AAEAJFN1cGVydXNlcgACAAxYY20AAwAAsQIMDHhjbThkb3VibGVfZW5jb2RlZDREb3VibGVFbmNvZGVkBARUAAAEARxlbmNvZGVkGAEcVmVjPHU4PgAAtQIMDHhjbQh2M0RRdWVyeVJlc3BvbnNlSW5mbwAADAEsZGVzdGluYXRpb27NAQE0TXVsdGlMb2NhdGlvbgABIHF1ZXJ5X2lkuAEcUXVlcnlJZAABKG1heF93ZWlnaHQVAQEYV2VpZ2h0AAC5AhAMeGNtCHYzKG11bHRpYXNzZXRATXVsdGlBc3NldEZpbHRlcgABCCBEZWZpbml0ZQQAYQIBLE11bHRpQXNzZXRzAAAAEFdpbGQEAL0CAThXaWxkTXVsdGlBc3NldAABAAC9AhAMeGNtCHYzKG11bHRpYXNzZXQ4V2lsZE11bHRpQXNzZXQAARAMQWxsAAAAFEFsbE9mCAEIaWRtAgEcQXNzZXRJZAABDGZ1bsECATxXaWxkRnVuZ2liaWxpdHkAAQAoQWxsQ291bnRlZAQAZAEMdTMyAAIAMEFsbE9mQ291bnRlZAwBCGlkbQIBHEFzc2V0SWQAAQxmdW7BAgE8V2lsZEZ1bmdpYmlsaXR5AAEUY291bnRkAQx1MzIAAwAAwQIQDHhjbQh2MyhtdWx0aWFzc2V0PFdpbGRGdW5naWJpbGl0eQABCCBGdW5naWJsZQAAACxOb25GdW5naWJsZQABAADFAgwMeGNtCHYzLFdlaWdodExpbWl0AAEIJFVubGltaXRlZAAAABxMaW1pdGVkBAAVAQEYV2VpZ2h0AAEAAMkCDCxzdGFnaW5nX3hjbQh2NAxYY20EEENhbGwAAAQAzQIBWFZlYzxJbnN0cnVjdGlvbjxDYWxsPj4AAM0CAAAC0QIA0QIMLHN0YWdpbmdfeGNtCHY0LEluc3RydWN0aW9uBBBDYWxsAAHANFdpdGhkcmF3QXNzZXQEANUCARhBc3NldHMAAABUUmVzZXJ2ZUFzc2V0RGVwb3NpdGVkBADVAgEYQXNzZXRzAAEAWFJlY2VpdmVUZWxlcG9ydGVkQXNzZXQEANUCARhBc3NldHMAAgA0UXVlcnlSZXNwb25zZRABIHF1ZXJ5X2lkuAEcUXVlcnlJZAABIHJlc3BvbnNl7QIBIFJlc3BvbnNlAAEobWF4X3dlaWdodBUBARhXZWlnaHQAARxxdWVyaWVyAQMBQE9wdGlvbjxMb2NhdGlvbj4AAwA0VHJhbnNmZXJBc3NldAgBGGFzc2V0c9UCARhBc3NldHMAASxiZW5lZmljaWFyeekBASBMb2NhdGlvbgAEAFBUcmFuc2ZlclJlc2VydmVBc3NldAwBGGFzc2V0c9UCARhBc3NldHMAARBkZXN06QEBIExvY2F0aW9uAAEMeGNtyQIBHFhjbTwoKT4ABQAgVHJhbnNhY3QMASxvcmlnaW5fa2luZK0CAShPcmlnaW5LaW5kAAFYcmVxdWlyZV93ZWlnaHRfYXRfbW9zdBUBARhXZWlnaHQAARBjYWxssQIBTERvdWJsZUVuY29kZWQ8Q2FsbD4ABgBkSHJtcE5ld0NoYW5uZWxPcGVuUmVxdWVzdAwBGHNlbmRlcmQBDHUzMgABQG1heF9tZXNzYWdlX3NpemVkAQx1MzIAATBtYXhfY2FwYWNpdHlkAQx1MzIABwBMSHJtcENoYW5uZWxBY2NlcHRlZAQBJHJlY2lwaWVudGQBDHUzMgAIAEhIcm1wQ2hhbm5lbENsb3NpbmcMASRpbml0aWF0b3JkAQx1MzIAARhzZW5kZXJkAQx1MzIAASRyZWNpcGllbnRkAQx1MzIACQAsQ2xlYXJPcmlnaW4ACgA0RGVzY2VuZE9yaWdpbgQA7QEBQEludGVyaW9yTG9jYXRpb24ACwAsUmVwb3J0RXJyb3IEAAUDAURRdWVyeVJlc3BvbnNlSW5mbwAMADBEZXBvc2l0QXNzZXQIARhhc3NldHMJAwEsQXNzZXRGaWx0ZXIAASxiZW5lZmljaWFyeekBASBMb2NhdGlvbgANAExEZXBvc2l0UmVzZXJ2ZUFzc2V0DAEYYXNzZXRzCQMBLEFzc2V0RmlsdGVyAAEQZGVzdOkBASBMb2NhdGlvbgABDHhjbckCARxYY208KCk+AA4ANEV4Y2hhbmdlQXNzZXQMARBnaXZlCQMBLEFzc2V0RmlsdGVyAAEQd2FudNUCARhBc3NldHMAARxtYXhpbWFsXQEBEGJvb2wADwBcSW5pdGlhdGVSZXNlcnZlV2l0aGRyYXcMARhhc3NldHMJAwEsQXNzZXRGaWx0ZXIAARxyZXNlcnZl6QEBIExvY2F0aW9uAAEMeGNtyQIBHFhjbTwoKT4AEABASW5pdGlhdGVUZWxlcG9ydAwBGGFzc2V0cwkDASxBc3NldEZpbHRlcgABEGRlc3TpAQEgTG9jYXRpb24AAQx4Y23JAgEcWGNtPCgpPgARADRSZXBvcnRIb2xkaW5nCAE0cmVzcG9uc2VfaW5mbwUDAURRdWVyeVJlc3BvbnNlSW5mbwABGGFzc2V0cwkDASxBc3NldEZpbHRlcgASADBCdXlFeGVjdXRpb24IARBmZWVz3QIBFEFzc2V0AAEwd2VpZ2h0X2xpbWl0xQIBLFdlaWdodExpbWl0ABMANFJlZnVuZFN1cnBsdXMAFAA8U2V0RXJyb3JIYW5kbGVyBADJAgEkWGNtPENhbGw+ABUALFNldEFwcGVuZGl4BADJAgEkWGNtPENhbGw+ABYAKENsZWFyRXJyb3IAFwAoQ2xhaW1Bc3NldAgBGGFzc2V0c9UCARhBc3NldHMAARh0aWNrZXTpAQEgTG9jYXRpb24AGAAQVHJhcAQAuAEMdTY0ABkAQFN1YnNjcmliZVZlcnNpb24IASBxdWVyeV9pZLgBHFF1ZXJ5SWQAAUxtYXhfcmVzcG9uc2Vfd2VpZ2h0FQEBGFdlaWdodAAaAEhVbnN1YnNjcmliZVZlcnNpb24AGwAkQnVybkFzc2V0BADVAgEYQXNzZXRzABwALEV4cGVjdEFzc2V0BADVAgEYQXNzZXRzAB0AMEV4cGVjdE9yaWdpbgQAAQMBQE9wdGlvbjxMb2NhdGlvbj4AHgAsRXhwZWN0RXJyb3IEAIUCAVBPcHRpb248KHUzMiwgRXJyb3IpPgAfAFBFeHBlY3RUcmFuc2FjdFN0YXR1cwQAoQIBOE1heWJlRXJyb3JDb2RlACAALFF1ZXJ5UGFsbGV0CAEsbW9kdWxlX25hbWUYARxWZWM8dTg+AAE0cmVzcG9uc2VfaW5mbwUDAURRdWVyeVJlc3BvbnNlSW5mbwAhADBFeHBlY3RQYWxsZXQUARRpbmRleGQBDHUzMgABEG5hbWUYARxWZWM8dTg+AAEsbW9kdWxlX25hbWUYARxWZWM8dTg+AAEsY3JhdGVfbWFqb3JkAQx1MzIAATxtaW5fY3JhdGVfbWlub3JkAQx1MzIAIgBQUmVwb3J0VHJhbnNhY3RTdGF0dXMEAAUDAURRdWVyeVJlc3BvbnNlSW5mbwAjAExDbGVhclRyYW5zYWN0U3RhdHVzACQAPFVuaXZlcnNhbE9yaWdpbgQA9QEBIEp1bmN0aW9uACUANEV4cG9ydE1lc3NhZ2UMARxuZXR3b3Jr/QEBJE5ldHdvcmtJZAABLGRlc3RpbmF0aW9u7QEBQEludGVyaW9yTG9jYXRpb24AAQx4Y23JAgEcWGNtPCgpPgAmACRMb2NrQXNzZXQIARRhc3NldN0CARRBc3NldAABIHVubG9ja2Vy6QEBIExvY2F0aW9uACcALFVubG9ja0Fzc2V0CAEUYXNzZXTdAgEUQXNzZXQAARh0YXJnZXTpAQEgTG9jYXRpb24AKAA4Tm90ZVVubG9ja2FibGUIARRhc3NldN0CARRBc3NldAABFG93bmVy6QEBIExvY2F0aW9uACkANFJlcXVlc3RVbmxvY2sIARRhc3NldN0CARRBc3NldAABGGxvY2tlcukBASBMb2NhdGlvbgAqACxTZXRGZWVzTW9kZQQBMGppdF93aXRoZHJhd10BARBib29sACsAIFNldFRvcGljBAAIASBbdTg7IDMyXQAsAChDbGVhclRvcGljAC0ALEFsaWFzT3JpZ2luBADpAQEgTG9jYXRpb24ALgA8VW5wYWlkRXhlY3V0aW9uCAEwd2VpZ2h0X2xpbWl0xQIBLFdlaWdodExpbWl0AAEwY2hlY2tfb3JpZ2luAQMBQE9wdGlvbjxMb2NhdGlvbj4ALwAA1QIQLHN0YWdpbmdfeGNtCHY0FGFzc2V0GEFzc2V0cwAABADZAgEoVmVjPEFzc2V0PgAA2QIAAALdAgDdAhAsc3RhZ2luZ194Y20IdjQUYXNzZXQUQXNzZXQAAAgBCGlk4QIBHEFzc2V0SWQAAQxmdW7lAgEsRnVuZ2liaWxpdHkAAOECECxzdGFnaW5nX3hjbQh2NBRhc3NldBxBc3NldElkAAAEAOkBASBMb2NhdGlvbgAA5QIQLHN0YWdpbmdfeGNtCHY0FGFzc2V0LEZ1bmdpYmlsaXR5AAEIIEZ1bmdpYmxlBABVAQEQdTEyOAAAACxOb25GdW5naWJsZQQA6QIBNEFzc2V0SW5zdGFuY2UAAQAA6QIQLHN0YWdpbmdfeGNtCHY0FGFzc2V0NEFzc2V0SW5zdGFuY2UAARgkVW5kZWZpbmVkAAAAFEluZGV4BABVAQEQdTEyOAABABhBcnJheTQEAHQBHFt1ODsgNF0AAgAYQXJyYXk4BAB5AgEcW3U4OyA4XQADABxBcnJheTE2BAB9AgEgW3U4OyAxNl0ABAAcQXJyYXkzMgQACAEgW3U4OyAzMl0ABQAA7QIMLHN0YWdpbmdfeGNtCHY0IFJlc3BvbnNlAAEYEE51bGwAAAAYQXNzZXRzBADVAgEYQXNzZXRzAAEAPEV4ZWN1dGlvblJlc3VsdAQAhQIBUE9wdGlvbjwodTMyLCBFcnJvcik+AAIAHFZlcnNpb24EADgBOHN1cGVyOjpWZXJzaW9uAAMALFBhbGxldHNJbmZvBADxAgGYQm91bmRlZFZlYzxQYWxsZXRJbmZvLCBNYXhQYWxsZXRzSW5mbz4ABAA4RGlzcGF0Y2hSZXN1bHQEAKECAThNYXliZUVycm9yQ29kZQAFAADxAgxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAfUCBFMAAAQA/QIBGFZlYzxUPgAA9QIMLHN0YWdpbmdfeGNtCHY0KFBhbGxldEluZm8AABgBFGluZGV4ZAEMdTMyAAEQbmFtZfkCAYBCb3VuZGVkVmVjPHU4LCBNYXhQYWxsZXROYW1lTGVuPgABLG1vZHVsZV9uYW1l+QIBgEJvdW5kZWRWZWM8dTgsIE1heFBhbGxldE5hbWVMZW4+AAEUbWFqb3JkAQx1MzIAARRtaW5vcmQBDHUzMgABFHBhdGNoZAEMdTMyAAD5AgxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQwEUwAABAAYARhWZWM8VD4AAP0CAAAC9QIAAQMEGE9wdGlvbgQEVAHpAQEIEE5vbmUAAAAQU29tZQQA6QEAAAEAAAUDDCxzdGFnaW5nX3hjbQh2NERRdWVyeVJlc3BvbnNlSW5mbwAADAEsZGVzdGluYXRpb27pAQEgTG9jYXRpb24AASBxdWVyeV9pZLgBHFF1ZXJ5SWQAAShtYXhfd2VpZ2h0FQEBGFdlaWdodAAACQMQLHN0YWdpbmdfeGNtCHY0FGFzc2V0LEFzc2V0RmlsdGVyAAEIIERlZmluaXRlBADVAgEYQXNzZXRzAAAAEFdpbGQEAA0DASRXaWxkQXNzZXQAAQAADQMQLHN0YWdpbmdfeGNtCHY0FGFzc2V0JFdpbGRBc3NldAABEAxBbGwAAAAUQWxsT2YIAQhpZOECARxBc3NldElkAAEMZnVuEQMBPFdpbGRGdW5naWJpbGl0eQABAChBbGxDb3VudGVkBABkAQx1MzIAAgAwQWxsT2ZDb3VudGVkDAEIaWThAgEcQXNzZXRJZAABDGZ1bhEDATxXaWxkRnVuZ2liaWxpdHkAARRjb3VudGQBDHUzMgADAAARAxAsc3RhZ2luZ194Y20IdjQUYXNzZXQ8V2lsZEZ1bmdpYmlsaXR5AAEIIEZ1bmdpYmxlAAAALE5vbkZ1bmdpYmxlAAEAABUDDCxzdGFnaW5nX3hjbQh2NQxYY20EEENhbGwAAAQAGQMBWFZlYzxJbnN0cnVjdGlvbjxDYWxsPj4AABkDAAACHQMAHQMMLHN0YWdpbmdfeGNtCHY1LEluc3RydWN0aW9uBBBDYWxsAAHQNFdpdGhkcmF3QXNzZXQEACEDARhBc3NldHMAAABUUmVzZXJ2ZUFzc2V0RGVwb3NpdGVkBAAhAwEYQXNzZXRzAAEAWFJlY2VpdmVUZWxlcG9ydGVkQXNzZXQEACEDARhBc3NldHMAAgA0UXVlcnlSZXNwb25zZRABIHF1ZXJ5X2lkuAEcUXVlcnlJZAABIHJlc3BvbnNlOQMBIFJlc3BvbnNlAAEobWF4X3dlaWdodBUBARhXZWlnaHQAARxxdWVyaWVyWQMBQE9wdGlvbjxMb2NhdGlvbj4AAwA0VHJhbnNmZXJBc3NldAgBGGFzc2V0cyEDARhBc3NldHMAASxiZW5lZmljaWFyeR0CASBMb2NhdGlvbgAEAFBUcmFuc2ZlclJlc2VydmVBc3NldAwBGGFzc2V0cyEDARhBc3NldHMAARBkZXN0HQIBIExvY2F0aW9uAAEMeGNtFQMBHFhjbTwoKT4ABQAgVHJhbnNhY3QMASxvcmlnaW5fa2luZK0CAShPcmlnaW5LaW5kAAFMZmFsbGJhY2tfbWF4X3dlaWdodBEBAThPcHRpb248V2VpZ2h0PgABEGNhbGyxAgFMRG91YmxlRW5jb2RlZDxDYWxsPgAGAGRIcm1wTmV3Q2hhbm5lbE9wZW5SZXF1ZXN0DAEYc2VuZGVyZAEMdTMyAAFAbWF4X21lc3NhZ2Vfc2l6ZWQBDHUzMgABMG1heF9jYXBhY2l0eWQBDHUzMgAHAExIcm1wQ2hhbm5lbEFjY2VwdGVkBAEkcmVjaXBpZW50ZAEMdTMyAAgASEhybXBDaGFubmVsQ2xvc2luZwwBJGluaXRpYXRvcmQBDHUzMgABGHNlbmRlcmQBDHUzMgABJHJlY2lwaWVudGQBDHUzMgAJACxDbGVhck9yaWdpbgAKADREZXNjZW5kT3JpZ2luBAAhAgFASW50ZXJpb3JMb2NhdGlvbgALACxSZXBvcnRFcnJvcgQAXQMBRFF1ZXJ5UmVzcG9uc2VJbmZvAAwAMERlcG9zaXRBc3NldAgBGGFzc2V0c2EDASxBc3NldEZpbHRlcgABLGJlbmVmaWNpYXJ5HQIBIExvY2F0aW9uAA0ATERlcG9zaXRSZXNlcnZlQXNzZXQMARhhc3NldHNhAwEsQXNzZXRGaWx0ZXIAARBkZXN0HQIBIExvY2F0aW9uAAEMeGNtFQMBHFhjbTwoKT4ADgA0RXhjaGFuZ2VBc3NldAwBEGdpdmVhAwEsQXNzZXRGaWx0ZXIAARB3YW50IQMBGEFzc2V0cwABHG1heGltYWxdAQEQYm9vbAAPAFxJbml0aWF0ZVJlc2VydmVXaXRoZHJhdwwBGGFzc2V0c2EDASxBc3NldEZpbHRlcgABHHJlc2VydmUdAgEgTG9jYXRpb24AAQx4Y20VAwEcWGNtPCgpPgAQAEBJbml0aWF0ZVRlbGVwb3J0DAEYYXNzZXRzYQMBLEFzc2V0RmlsdGVyAAEQZGVzdB0CASBMb2NhdGlvbgABDHhjbRUDARxYY208KCk+ABEANFJlcG9ydEhvbGRpbmcIATRyZXNwb25zZV9pbmZvXQMBRFF1ZXJ5UmVzcG9uc2VJbmZvAAEYYXNzZXRzYQMBLEFzc2V0RmlsdGVyABIAMEJ1eUV4ZWN1dGlvbggBEGZlZXMpAwEUQXNzZXQAATB3ZWlnaHRfbGltaXTFAgEsV2VpZ2h0TGltaXQAEwA0UmVmdW5kU3VycGx1cwAUADxTZXRFcnJvckhhbmRsZXIEABUDASRYY208Q2FsbD4AFQAsU2V0QXBwZW5kaXgEABUDASRYY208Q2FsbD4AFgAoQ2xlYXJFcnJvcgAXAChDbGFpbUFzc2V0CAEYYXNzZXRzIQMBGEFzc2V0cwABGHRpY2tldB0CASBMb2NhdGlvbgAYABBUcmFwBAC4AQx1NjQAGQBAU3Vic2NyaWJlVmVyc2lvbggBIHF1ZXJ5X2lkuAEcUXVlcnlJZAABTG1heF9yZXNwb25zZV93ZWlnaHQVAQEYV2VpZ2h0ABoASFVuc3Vic2NyaWJlVmVyc2lvbgAbACRCdXJuQXNzZXQEACEDARhBc3NldHMAHAAsRXhwZWN0QXNzZXQEACEDARhBc3NldHMAHQAwRXhwZWN0T3JpZ2luBABZAwFAT3B0aW9uPExvY2F0aW9uPgAeACxFeHBlY3RFcnJvcgQAPQMBUE9wdGlvbjwodTMyLCBFcnJvcik+AB8AUEV4cGVjdFRyYW5zYWN0U3RhdHVzBAChAgE4TWF5YmVFcnJvckNvZGUAIAAsUXVlcnlQYWxsZXQIASxtb2R1bGVfbmFtZRgBHFZlYzx1OD4AATRyZXNwb25zZV9pbmZvXQMBRFF1ZXJ5UmVzcG9uc2VJbmZvACEAMEV4cGVjdFBhbGxldBQBFGluZGV4ZAEMdTMyAAEQbmFtZRgBHFZlYzx1OD4AASxtb2R1bGVfbmFtZRgBHFZlYzx1OD4AASxjcmF0ZV9tYWpvcmQBDHUzMgABPG1pbl9jcmF0ZV9taW5vcmQBDHUzMgAiAFBSZXBvcnRUcmFuc2FjdFN0YXR1cwQAXQMBRFF1ZXJ5UmVzcG9uc2VJbmZvACMATENsZWFyVHJhbnNhY3RTdGF0dXMAJAA8VW5pdmVyc2FsT3JpZ2luBAApAgEgSnVuY3Rpb24AJQA0RXhwb3J0TWVzc2FnZQwBHG5ldHdvcmsxAgEkTmV0d29ya0lkAAEsZGVzdGluYXRpb24hAgFASW50ZXJpb3JMb2NhdGlvbgABDHhjbRUDARxYY208KCk+ACYAJExvY2tBc3NldAgBFGFzc2V0KQMBFEFzc2V0AAEgdW5sb2NrZXIdAgEgTG9jYXRpb24AJwAsVW5sb2NrQXNzZXQIARRhc3NldCkDARRBc3NldAABGHRhcmdldB0CASBMb2NhdGlvbgAoADhOb3RlVW5sb2NrYWJsZQgBFGFzc2V0KQMBFEFzc2V0AAEUb3duZXIdAgEgTG9jYXRpb24AKQA0UmVxdWVzdFVubG9jawgBFGFzc2V0KQMBFEFzc2V0AAEYbG9ja2VyHQIBIExvY2F0aW9uACoALFNldEZlZXNNb2RlBAEwaml0X3dpdGhkcmF3XQEBEGJvb2wAKwAgU2V0VG9waWMEAAgBIFt1ODsgMzJdACwAKENsZWFyVG9waWMALQAsQWxpYXNPcmlnaW4EAB0CASBMb2NhdGlvbgAuADxVbnBhaWRFeGVjdXRpb24IATB3ZWlnaHRfbGltaXTFAgEsV2VpZ2h0TGltaXQAATBjaGVja19vcmlnaW5ZAwFAT3B0aW9uPExvY2F0aW9uPgAvABxQYXlGZWVzBAEUYXNzZXQpAwEUQXNzZXQAMABASW5pdGlhdGVUcmFuc2ZlchQBLGRlc3RpbmF0aW9uHQIBIExvY2F0aW9uAAEscmVtb3RlX2ZlZXNtAwFsT3B0aW9uPEFzc2V0VHJhbnNmZXJGaWx0ZXI+AAE8cHJlc2VydmVfb3JpZ2luXQEBEGJvb2wAARhhc3NldHN1AwHgQm91bmRlZFZlYzxBc3NldFRyYW5zZmVyRmlsdGVyLCBNYXhBc3NldFRyYW5zZmVyRmlsdGVycz4AAShyZW1vdGVfeGNtFQMBHFhjbTwoKT4AMQBERXhlY3V0ZVdpdGhPcmlnaW4IAURkZXNjZW5kYW50X29yaWdpbn0DAWBPcHRpb248SW50ZXJpb3JMb2NhdGlvbj4AAQx4Y20VAwEkWGNtPENhbGw+ADIAIFNldEhpbnRzBAEUaGludHOBAwGEQm91bmRlZFZlYzxIaW50LCBIaW50TnVtVmFyaWFudHM+ADMAACEDECxzdGFnaW5nX3hjbQh2NRRhc3NldBhBc3NldHMAAAQAJQMBKFZlYzxBc3NldD4AACUDAAACKQMAKQMQLHN0YWdpbmdfeGNtCHY1FGFzc2V0FEFzc2V0AAAIAQhpZC0DARxBc3NldElkAAEMZnVuMQMBLEZ1bmdpYmlsaXR5AAAtAxAsc3RhZ2luZ194Y20IdjUUYXNzZXQcQXNzZXRJZAAABAAdAgEgTG9jYXRpb24AADEDECxzdGFnaW5nX3hjbQh2NRRhc3NldCxGdW5naWJpbGl0eQABCCBGdW5naWJsZQQAVQEBEHUxMjgAAAAsTm9uRnVuZ2libGUEADUDATRBc3NldEluc3RhbmNlAAEAADUDECxzdGFnaW5nX3hjbQh2NRRhc3NldDRBc3NldEluc3RhbmNlAAEYJFVuZGVmaW5lZAAAABRJbmRleAQAVQEBEHUxMjgAAQAYQXJyYXk0BAB0ARxbdTg7IDRdAAIAGEFycmF5OAQAeQIBHFt1ODsgOF0AAwAcQXJyYXkxNgQAfQIBIFt1ODsgMTZdAAQAHEFycmF5MzIEAAgBIFt1ODsgMzJdAAUAADkDDCxzdGFnaW5nX3hjbQh2NSBSZXNwb25zZQABGBBOdWxsAAAAGEFzc2V0cwQAIQMBGEFzc2V0cwABADxFeGVjdXRpb25SZXN1bHQEAD0DAVBPcHRpb248KHUzMiwgRXJyb3IpPgACABxWZXJzaW9uBAA4AThzdXBlcjo6VmVyc2lvbgADACxQYWxsZXRzSW5mbwQASQMBmEJvdW5kZWRWZWM8UGFsbGV0SW5mbywgTWF4UGFsbGV0c0luZm8+AAQAOERpc3BhdGNoUmVzdWx0BAChAgE4TWF5YmVFcnJvckNvZGUABQAAPQMEGE9wdGlvbgQEVAFBAwEIEE5vbmUAAAAQU29tZQQAQQMAAAEAAEEDAAAECDhFAwBFAxAMeGNtCHY1GHRyYWl0cxRFcnJvcgABpCBPdmVyZmxvdwAAADRVbmltcGxlbWVudGVkAAEAYFVudHJ1c3RlZFJlc2VydmVMb2NhdGlvbgACAGRVbnRydXN0ZWRUZWxlcG9ydExvY2F0aW9uAAMAMExvY2F0aW9uRnVsbAAEAFRMb2NhdGlvbk5vdEludmVydGlibGUABQAkQmFkT3JpZ2luAAYAPEludmFsaWRMb2NhdGlvbgAHADRBc3NldE5vdEZvdW5kAAgAVEZhaWxlZFRvVHJhbnNhY3RBc3NldAAJADxOb3RXaXRoZHJhd2FibGUACgBITG9jYXRpb25DYW5ub3RIb2xkAAsAVEV4Y2VlZHNNYXhNZXNzYWdlU2l6ZQAMAFhEZXN0aW5hdGlvblVuc3VwcG9ydGVkAA0AJFRyYW5zcG9ydAAOAChVbnJvdXRhYmxlAA8AMFVua25vd25DbGFpbQAQADhGYWlsZWRUb0RlY29kZQARAEBNYXhXZWlnaHRJbnZhbGlkABIAOE5vdEhvbGRpbmdGZWVzABMAMFRvb0V4cGVuc2l2ZQAUABBUcmFwBAAoAQx1NjQAFQBARXhwZWN0YXRpb25GYWxzZQAWADhQYWxsZXROb3RGb3VuZAAXADBOYW1lTWlzbWF0Y2gAGABMVmVyc2lvbkluY29tcGF0aWJsZQAZAFBIb2xkaW5nV291bGRPdmVyZmxvdwAaACxFeHBvcnRFcnJvcgAbADhSZWFuY2hvckZhaWxlZAAcABhOb0RlYWwAHQAoRmVlc05vdE1ldAAeACRMb2NrRXJyb3IAHwAwTm9QZXJtaXNzaW9uACAAKFVuYW5jaG9yZWQAIQA4Tm90RGVwb3NpdGFibGUAIgA0VG9vTWFueUFzc2V0cwAjAExVbmhhbmRsZWRYY21WZXJzaW9uACQASFdlaWdodExpbWl0UmVhY2hlZAQAFQEBGFdlaWdodAAlABxCYXJyaWVyACYATFdlaWdodE5vdENvbXB1dGFibGUAJwBERXhjZWVkc1N0YWNrTGltaXQAKAAASQMMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAFNAwRTAAAEAFUDARhWZWM8VD4AAE0DDCxzdGFnaW5nX3hjbQh2NShQYWxsZXRJbmZvAAAYARRpbmRleGQBDHUzMgABEG5hbWVRAwGAQm91bmRlZFZlYzx1OCwgTWF4UGFsbGV0TmFtZUxlbj4AASxtb2R1bGVfbmFtZVEDAYBCb3VuZGVkVmVjPHU4LCBNYXhQYWxsZXROYW1lTGVuPgABFG1ham9yZAEMdTMyAAEUbWlub3JkAQx1MzIAARRwYXRjaGQBDHUzMgAAUQMMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AABVAwAAAk0DAFkDBBhPcHRpb24EBFQBHQIBCBBOb25lAAAAEFNvbWUEAB0CAAABAABdAwwsc3RhZ2luZ194Y20IdjVEUXVlcnlSZXNwb25zZUluZm8AAAwBLGRlc3RpbmF0aW9uHQIBIExvY2F0aW9uAAEgcXVlcnlfaWS4ARxRdWVyeUlkAAEobWF4X3dlaWdodBUBARhXZWlnaHQAAGEDECxzdGFnaW5nX3hjbQh2NRRhc3NldCxBc3NldEZpbHRlcgABCCBEZWZpbml0ZQQAIQMBGEFzc2V0cwAAABBXaWxkBABlAwEkV2lsZEFzc2V0AAEAAGUDECxzdGFnaW5nX3hjbQh2NRRhc3NldCRXaWxkQXNzZXQAARAMQWxsAAAAFEFsbE9mCAEIaWQtAwEcQXNzZXRJZAABDGZ1bmkDATxXaWxkRnVuZ2liaWxpdHkAAQAoQWxsQ291bnRlZAQAZAEMdTMyAAIAMEFsbE9mQ291bnRlZAwBCGlkLQMBHEFzc2V0SWQAAQxmdW5pAwE8V2lsZEZ1bmdpYmlsaXR5AAEUY291bnRkAQx1MzIAAwAAaQMQLHN0YWdpbmdfeGNtCHY1FGFzc2V0PFdpbGRGdW5naWJpbGl0eQABCCBGdW5naWJsZQAAACxOb25GdW5naWJsZQABAABtAwQYT3B0aW9uBARUAXEDAQgQTm9uZQAAABBTb21lBABxAwAAAQAAcQMQLHN0YWdpbmdfeGNtCHY1FGFzc2V0TEFzc2V0VHJhbnNmZXJGaWx0ZXIAAQwgVGVsZXBvcnQEAGEDASxBc3NldEZpbHRlcgAAADhSZXNlcnZlRGVwb3NpdAQAYQMBLEFzc2V0RmlsdGVyAAEAPFJlc2VydmVXaXRoZHJhdwQAYQMBLEFzc2V0RmlsdGVyAAIAAHUDDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBcQMEUwAABAB5AwEYVmVjPFQ+AAB5AwAAAnEDAH0DBBhPcHRpb24EBFQBIQIBCBBOb25lAAAAEFNvbWUEACECAAABAACBAwxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAYUDBFMAAAQAiQMBGFZlYzxUPgAAhQMMLHN0YWdpbmdfeGNtCHY1EEhpbnQAAQQwQXNzZXRDbGFpbWVyBAEgbG9jYXRpb24dAgEgTG9jYXRpb24AAAAAiQMAAAKFAwCNAwgMeGNtPFZlcnNpb25lZEFzc2V0cwABDAhWMwQAYQIBPHYzOjpNdWx0aUFzc2V0cwADAAhWNAQA1QIBKHY0OjpBc3NldHMABAAIVjUEACEDASh2NTo6QXNzZXRzAAUAAJEDCAx4Y20wVmVyc2lvbmVkWGNtBCxSdW50aW1lQ2FsbAABDAhWMwQAlQMBUHYzOjpYY208UnVudGltZUNhbGw+AAMACFY0BAClAwFQdjQ6OlhjbTxSdW50aW1lQ2FsbD4ABAAIVjUEALEDAVB2NTo6WGNtPFJ1bnRpbWVDYWxsPgAFAACVAwwMeGNtCHYzDFhjbQQQQ2FsbAAABACZAwFYVmVjPEluc3RydWN0aW9uPENhbGw+PgAAmQMAAAKdAwCdAwwMeGNtCHYzLEluc3RydWN0aW9uBBBDYWxsAAHANFdpdGhkcmF3QXNzZXQEAGECASxNdWx0aUFzc2V0cwAAAFRSZXNlcnZlQXNzZXREZXBvc2l0ZWQEAGECASxNdWx0aUFzc2V0cwABAFhSZWNlaXZlVGVsZXBvcnRlZEFzc2V0BABhAgEsTXVsdGlBc3NldHMAAgA0UXVlcnlSZXNwb25zZRABIHF1ZXJ5X2lkuAEcUXVlcnlJZAABIHJlc3BvbnNlgQIBIFJlc3BvbnNlAAEobWF4X3dlaWdodBUBARhXZWlnaHQAARxxdWVyaWVyqQIBVE9wdGlvbjxNdWx0aUxvY2F0aW9uPgADADRUcmFuc2ZlckFzc2V0CAEYYXNzZXRzYQIBLE11bHRpQXNzZXRzAAEsYmVuZWZpY2lhcnnNAQE0TXVsdGlMb2NhdGlvbgAEAFBUcmFuc2ZlclJlc2VydmVBc3NldAwBGGFzc2V0c2ECASxNdWx0aUFzc2V0cwABEGRlc3TNAQE0TXVsdGlMb2NhdGlvbgABDHhjbVUCARxYY208KCk+AAUAIFRyYW5zYWN0DAEsb3JpZ2luX2tpbmStAgEoT3JpZ2luS2luZAABWHJlcXVpcmVfd2VpZ2h0X2F0X21vc3QVAQEYV2VpZ2h0AAEQY2FsbKEDAUxEb3VibGVFbmNvZGVkPENhbGw+AAYAZEhybXBOZXdDaGFubmVsT3BlblJlcXVlc3QMARhzZW5kZXJkAQx1MzIAAUBtYXhfbWVzc2FnZV9zaXplZAEMdTMyAAEwbWF4X2NhcGFjaXR5ZAEMdTMyAAcATEhybXBDaGFubmVsQWNjZXB0ZWQEASRyZWNpcGllbnRkAQx1MzIACABISHJtcENoYW5uZWxDbG9zaW5nDAEkaW5pdGlhdG9yZAEMdTMyAAEYc2VuZGVyZAEMdTMyAAEkcmVjaXBpZW50ZAEMdTMyAAkALENsZWFyT3JpZ2luAAoANERlc2NlbmRPcmlnaW4EANEBAVRJbnRlcmlvck11bHRpTG9jYXRpb24ACwAsUmVwb3J0RXJyb3IEALUCAURRdWVyeVJlc3BvbnNlSW5mbwAMADBEZXBvc2l0QXNzZXQIARhhc3NldHO5AgFATXVsdGlBc3NldEZpbHRlcgABLGJlbmVmaWNpYXJ5zQEBNE11bHRpTG9jYXRpb24ADQBMRGVwb3NpdFJlc2VydmVBc3NldAwBGGFzc2V0c7kCAUBNdWx0aUFzc2V0RmlsdGVyAAEQZGVzdM0BATRNdWx0aUxvY2F0aW9uAAEMeGNtVQIBHFhjbTwoKT4ADgA0RXhjaGFuZ2VBc3NldAwBEGdpdmW5AgFATXVsdGlBc3NldEZpbHRlcgABEHdhbnRhAgEsTXVsdGlBc3NldHMAARxtYXhpbWFsXQEBEGJvb2wADwBcSW5pdGlhdGVSZXNlcnZlV2l0aGRyYXcMARhhc3NldHO5AgFATXVsdGlBc3NldEZpbHRlcgABHHJlc2VydmXNAQE0TXVsdGlMb2NhdGlvbgABDHhjbVUCARxYY208KCk+ABAAQEluaXRpYXRlVGVsZXBvcnQMARhhc3NldHO5AgFATXVsdGlBc3NldEZpbHRlcgABEGRlc3TNAQE0TXVsdGlMb2NhdGlvbgABDHhjbVUCARxYY208KCk+ABEANFJlcG9ydEhvbGRpbmcIATRyZXNwb25zZV9pbmZvtQIBRFF1ZXJ5UmVzcG9uc2VJbmZvAAEYYXNzZXRzuQIBQE11bHRpQXNzZXRGaWx0ZXIAEgAwQnV5RXhlY3V0aW9uCAEQZmVlc2kCAShNdWx0aUFzc2V0AAEwd2VpZ2h0X2xpbWl0xQIBLFdlaWdodExpbWl0ABMANFJlZnVuZFN1cnBsdXMAFAA8U2V0RXJyb3JIYW5kbGVyBACVAwEkWGNtPENhbGw+ABUALFNldEFwcGVuZGl4BACVAwEkWGNtPENhbGw+ABYAKENsZWFyRXJyb3IAFwAoQ2xhaW1Bc3NldAgBGGFzc2V0c2ECASxNdWx0aUFzc2V0cwABGHRpY2tldM0BATRNdWx0aUxvY2F0aW9uABgAEFRyYXAEALgBDHU2NAAZAEBTdWJzY3JpYmVWZXJzaW9uCAEgcXVlcnlfaWS4ARxRdWVyeUlkAAFMbWF4X3Jlc3BvbnNlX3dlaWdodBUBARhXZWlnaHQAGgBIVW5zdWJzY3JpYmVWZXJzaW9uABsAJEJ1cm5Bc3NldAQAYQIBLE11bHRpQXNzZXRzABwALEV4cGVjdEFzc2V0BABhAgEsTXVsdGlBc3NldHMAHQAwRXhwZWN0T3JpZ2luBACpAgFUT3B0aW9uPE11bHRpTG9jYXRpb24+AB4ALEV4cGVjdEVycm9yBACFAgFQT3B0aW9uPCh1MzIsIEVycm9yKT4AHwBQRXhwZWN0VHJhbnNhY3RTdGF0dXMEAKECAThNYXliZUVycm9yQ29kZQAgACxRdWVyeVBhbGxldAgBLG1vZHVsZV9uYW1lGAEcVmVjPHU4PgABNHJlc3BvbnNlX2luZm+1AgFEUXVlcnlSZXNwb25zZUluZm8AIQAwRXhwZWN0UGFsbGV0FAEUaW5kZXhkAQx1MzIAARBuYW1lGAEcVmVjPHU4PgABLG1vZHVsZV9uYW1lGAEcVmVjPHU4PgABLGNyYXRlX21ham9yZAEMdTMyAAE8bWluX2NyYXRlX21pbm9yZAEMdTMyACIAUFJlcG9ydFRyYW5zYWN0U3RhdHVzBAC1AgFEUXVlcnlSZXNwb25zZUluZm8AIwBMQ2xlYXJUcmFuc2FjdFN0YXR1cwAkADxVbml2ZXJzYWxPcmlnaW4EANUBASBKdW5jdGlvbgAlADRFeHBvcnRNZXNzYWdlDAEcbmV0d29ya90BASROZXR3b3JrSWQAASxkZXN0aW5hdGlvbtEBAVRJbnRlcmlvck11bHRpTG9jYXRpb24AAQx4Y21VAgEcWGNtPCgpPgAmACRMb2NrQXNzZXQIARRhc3NldGkCAShNdWx0aUFzc2V0AAEgdW5sb2NrZXLNAQE0TXVsdGlMb2NhdGlvbgAnACxVbmxvY2tBc3NldAgBFGFzc2V0aQIBKE11bHRpQXNzZXQAARh0YXJnZXTNAQE0TXVsdGlMb2NhdGlvbgAoADhOb3RlVW5sb2NrYWJsZQgBFGFzc2V0aQIBKE11bHRpQXNzZXQAARRvd25lcs0BATRNdWx0aUxvY2F0aW9uACkANFJlcXVlc3RVbmxvY2sIARRhc3NldGkCAShNdWx0aUFzc2V0AAEYbG9ja2VyzQEBNE11bHRpTG9jYXRpb24AKgAsU2V0RmVlc01vZGUEATBqaXRfd2l0aGRyYXddAQEQYm9vbAArACBTZXRUb3BpYwQACAEgW3U4OyAzMl0ALAAoQ2xlYXJUb3BpYwAtACxBbGlhc09yaWdpbgQAzQEBNE11bHRpTG9jYXRpb24ALgA8VW5wYWlkRXhlY3V0aW9uCAEwd2VpZ2h0X2xpbWl0xQIBLFdlaWdodExpbWl0AAEwY2hlY2tfb3JpZ2luqQIBVE9wdGlvbjxNdWx0aUxvY2F0aW9uPgAvAAChAwwMeGNtOGRvdWJsZV9lbmNvZGVkNERvdWJsZUVuY29kZWQEBFQAAAQBHGVuY29kZWQYARxWZWM8dTg+AAClAwwsc3RhZ2luZ194Y20IdjQMWGNtBBBDYWxsAAAEAKkDAVhWZWM8SW5zdHJ1Y3Rpb248Q2FsbD4+AACpAwAAAq0DAK0DDCxzdGFnaW5nX3hjbQh2NCxJbnN0cnVjdGlvbgQQQ2FsbAABwDRXaXRoZHJhd0Fzc2V0BADVAgEYQXNzZXRzAAAAVFJlc2VydmVBc3NldERlcG9zaXRlZAQA1QIBGEFzc2V0cwABAFhSZWNlaXZlVGVsZXBvcnRlZEFzc2V0BADVAgEYQXNzZXRzAAIANFF1ZXJ5UmVzcG9uc2UQASBxdWVyeV9pZLgBHFF1ZXJ5SWQAASByZXNwb25zZe0CASBSZXNwb25zZQABKG1heF93ZWlnaHQVAQEYV2VpZ2h0AAEccXVlcmllcgEDAUBPcHRpb248TG9jYXRpb24+AAMANFRyYW5zZmVyQXNzZXQIARhhc3NldHPVAgEYQXNzZXRzAAEsYmVuZWZpY2lhcnnpAQEgTG9jYXRpb24ABABQVHJhbnNmZXJSZXNlcnZlQXNzZXQMARhhc3NldHPVAgEYQXNzZXRzAAEQZGVzdOkBASBMb2NhdGlvbgABDHhjbckCARxYY208KCk+AAUAIFRyYW5zYWN0DAEsb3JpZ2luX2tpbmStAgEoT3JpZ2luS2luZAABWHJlcXVpcmVfd2VpZ2h0X2F0X21vc3QVAQEYV2VpZ2h0AAEQY2FsbKEDAUxEb3VibGVFbmNvZGVkPENhbGw+AAYAZEhybXBOZXdDaGFubmVsT3BlblJlcXVlc3QMARhzZW5kZXJkAQx1MzIAAUBtYXhfbWVzc2FnZV9zaXplZAEMdTMyAAEwbWF4X2NhcGFjaXR5ZAEMdTMyAAcATEhybXBDaGFubmVsQWNjZXB0ZWQEASRyZWNpcGllbnRkAQx1MzIACABISHJtcENoYW5uZWxDbG9zaW5nDAEkaW5pdGlhdG9yZAEMdTMyAAEYc2VuZGVyZAEMdTMyAAEkcmVjaXBpZW50ZAEMdTMyAAkALENsZWFyT3JpZ2luAAoANERlc2NlbmRPcmlnaW4EAO0BAUBJbnRlcmlvckxvY2F0aW9uAAsALFJlcG9ydEVycm9yBAAFAwFEUXVlcnlSZXNwb25zZUluZm8ADAAwRGVwb3NpdEFzc2V0CAEYYXNzZXRzCQMBLEFzc2V0RmlsdGVyAAEsYmVuZWZpY2lhcnnpAQEgTG9jYXRpb24ADQBMRGVwb3NpdFJlc2VydmVBc3NldAwBGGFzc2V0cwkDASxBc3NldEZpbHRlcgABEGRlc3TpAQEgTG9jYXRpb24AAQx4Y23JAgEcWGNtPCgpPgAOADRFeGNoYW5nZUFzc2V0DAEQZ2l2ZQkDASxBc3NldEZpbHRlcgABEHdhbnTVAgEYQXNzZXRzAAEcbWF4aW1hbF0BARBib29sAA8AXEluaXRpYXRlUmVzZXJ2ZVdpdGhkcmF3DAEYYXNzZXRzCQMBLEFzc2V0RmlsdGVyAAEccmVzZXJ2ZekBASBMb2NhdGlvbgABDHhjbckCARxYY208KCk+ABAAQEluaXRpYXRlVGVsZXBvcnQMARhhc3NldHMJAwEsQXNzZXRGaWx0ZXIAARBkZXN06QEBIExvY2F0aW9uAAEMeGNtyQIBHFhjbTwoKT4AEQA0UmVwb3J0SG9sZGluZwgBNHJlc3BvbnNlX2luZm8FAwFEUXVlcnlSZXNwb25zZUluZm8AARhhc3NldHMJAwEsQXNzZXRGaWx0ZXIAEgAwQnV5RXhlY3V0aW9uCAEQZmVlc90CARRBc3NldAABMHdlaWdodF9saW1pdMUCASxXZWlnaHRMaW1pdAATADRSZWZ1bmRTdXJwbHVzABQAPFNldEVycm9ySGFuZGxlcgQApQMBJFhjbTxDYWxsPgAVACxTZXRBcHBlbmRpeAQApQMBJFhjbTxDYWxsPgAWAChDbGVhckVycm9yABcAKENsYWltQXNzZXQIARhhc3NldHPVAgEYQXNzZXRzAAEYdGlja2V06QEBIExvY2F0aW9uABgAEFRyYXAEALgBDHU2NAAZAEBTdWJzY3JpYmVWZXJzaW9uCAEgcXVlcnlfaWS4ARxRdWVyeUlkAAFMbWF4X3Jlc3BvbnNlX3dlaWdodBUBARhXZWlnaHQAGgBIVW5zdWJzY3JpYmVWZXJzaW9uABsAJEJ1cm5Bc3NldAQA1QIBGEFzc2V0cwAcACxFeHBlY3RBc3NldAQA1QIBGEFzc2V0cwAdADBFeHBlY3RPcmlnaW4EAAEDAUBPcHRpb248TG9jYXRpb24+AB4ALEV4cGVjdEVycm9yBACFAgFQT3B0aW9uPCh1MzIsIEVycm9yKT4AHwBQRXhwZWN0VHJhbnNhY3RTdGF0dXMEAKECAThNYXliZUVycm9yQ29kZQAgACxRdWVyeVBhbGxldAgBLG1vZHVsZV9uYW1lGAEcVmVjPHU4PgABNHJlc3BvbnNlX2luZm8FAwFEUXVlcnlSZXNwb25zZUluZm8AIQAwRXhwZWN0UGFsbGV0FAEUaW5kZXhkAQx1MzIAARBuYW1lGAEcVmVjPHU4PgABLG1vZHVsZV9uYW1lGAEcVmVjPHU4PgABLGNyYXRlX21ham9yZAEMdTMyAAE8bWluX2NyYXRlX21pbm9yZAEMdTMyACIAUFJlcG9ydFRyYW5zYWN0U3RhdHVzBAAFAwFEUXVlcnlSZXNwb25zZUluZm8AIwBMQ2xlYXJUcmFuc2FjdFN0YXR1cwAkADxVbml2ZXJzYWxPcmlnaW4EAPUBASBKdW5jdGlvbgAlADRFeHBvcnRNZXNzYWdlDAEcbmV0d29ya/0BASROZXR3b3JrSWQAASxkZXN0aW5hdGlvbu0BAUBJbnRlcmlvckxvY2F0aW9uAAEMeGNtyQIBHFhjbTwoKT4AJgAkTG9ja0Fzc2V0CAEUYXNzZXTdAgEUQXNzZXQAASB1bmxvY2tlcukBASBMb2NhdGlvbgAnACxVbmxvY2tBc3NldAgBFGFzc2V03QIBFEFzc2V0AAEYdGFyZ2V06QEBIExvY2F0aW9uACgAOE5vdGVVbmxvY2thYmxlCAEUYXNzZXTdAgEUQXNzZXQAARRvd25lcukBASBMb2NhdGlvbgApADRSZXF1ZXN0VW5sb2NrCAEUYXNzZXTdAgEUQXNzZXQAARhsb2NrZXLpAQEgTG9jYXRpb24AKgAsU2V0RmVlc01vZGUEATBqaXRfd2l0aGRyYXddAQEQYm9vbAArACBTZXRUb3BpYwQACAEgW3U4OyAzMl0ALAAoQ2xlYXJUb3BpYwAtACxBbGlhc09yaWdpbgQA6QEBIExvY2F0aW9uAC4APFVucGFpZEV4ZWN1dGlvbggBMHdlaWdodF9saW1pdMUCASxXZWlnaHRMaW1pdAABMGNoZWNrX29yaWdpbgEDAUBPcHRpb248TG9jYXRpb24+AC8AALEDDCxzdGFnaW5nX3hjbQh2NQxYY20EEENhbGwAAAQAtQMBWFZlYzxJbnN0cnVjdGlvbjxDYWxsPj4AALUDAAACuQMAuQMMLHN0YWdpbmdfeGNtCHY1LEluc3RydWN0aW9uBBBDYWxsAAHQNFdpdGhkcmF3QXNzZXQEACEDARhBc3NldHMAAABUUmVzZXJ2ZUFzc2V0RGVwb3NpdGVkBAAhAwEYQXNzZXRzAAEAWFJlY2VpdmVUZWxlcG9ydGVkQXNzZXQEACEDARhBc3NldHMAAgA0UXVlcnlSZXNwb25zZRABIHF1ZXJ5X2lkuAEcUXVlcnlJZAABIHJlc3BvbnNlOQMBIFJlc3BvbnNlAAEobWF4X3dlaWdodBUBARhXZWlnaHQAARxxdWVyaWVyWQMBQE9wdGlvbjxMb2NhdGlvbj4AAwA0VHJhbnNmZXJBc3NldAgBGGFzc2V0cyEDARhBc3NldHMAASxiZW5lZmljaWFyeR0CASBMb2NhdGlvbgAEAFBUcmFuc2ZlclJlc2VydmVBc3NldAwBGGFzc2V0cyEDARhBc3NldHMAARBkZXN0HQIBIExvY2F0aW9uAAEMeGNtFQMBHFhjbTwoKT4ABQAgVHJhbnNhY3QMASxvcmlnaW5fa2luZK0CAShPcmlnaW5LaW5kAAFMZmFsbGJhY2tfbWF4X3dlaWdodBEBAThPcHRpb248V2VpZ2h0PgABEGNhbGyhAwFMRG91YmxlRW5jb2RlZDxDYWxsPgAGAGRIcm1wTmV3Q2hhbm5lbE9wZW5SZXF1ZXN0DAEYc2VuZGVyZAEMdTMyAAFAbWF4X21lc3NhZ2Vfc2l6ZWQBDHUzMgABMG1heF9jYXBhY2l0eWQBDHUzMgAHAExIcm1wQ2hhbm5lbEFjY2VwdGVkBAEkcmVjaXBpZW50ZAEMdTMyAAgASEhybXBDaGFubmVsQ2xvc2luZwwBJGluaXRpYXRvcmQBDHUzMgABGHNlbmRlcmQBDHUzMgABJHJlY2lwaWVudGQBDHUzMgAJACxDbGVhck9yaWdpbgAKADREZXNjZW5kT3JpZ2luBAAhAgFASW50ZXJpb3JMb2NhdGlvbgALACxSZXBvcnRFcnJvcgQAXQMBRFF1ZXJ5UmVzcG9uc2VJbmZvAAwAMERlcG9zaXRBc3NldAgBGGFzc2V0c2EDASxBc3NldEZpbHRlcgABLGJlbmVmaWNpYXJ5HQIBIExvY2F0aW9uAA0ATERlcG9zaXRSZXNlcnZlQXNzZXQMARhhc3NldHNhAwEsQXNzZXRGaWx0ZXIAARBkZXN0HQIBIExvY2F0aW9uAAEMeGNtFQMBHFhjbTwoKT4ADgA0RXhjaGFuZ2VBc3NldAwBEGdpdmVhAwEsQXNzZXRGaWx0ZXIAARB3YW50IQMBGEFzc2V0cwABHG1heGltYWxdAQEQYm9vbAAPAFxJbml0aWF0ZVJlc2VydmVXaXRoZHJhdwwBGGFzc2V0c2EDASxBc3NldEZpbHRlcgABHHJlc2VydmUdAgEgTG9jYXRpb24AAQx4Y20VAwEcWGNtPCgpPgAQAEBJbml0aWF0ZVRlbGVwb3J0DAEYYXNzZXRzYQMBLEFzc2V0RmlsdGVyAAEQZGVzdB0CASBMb2NhdGlvbgABDHhjbRUDARxYY208KCk+ABEANFJlcG9ydEhvbGRpbmcIATRyZXNwb25zZV9pbmZvXQMBRFF1ZXJ5UmVzcG9uc2VJbmZvAAEYYXNzZXRzYQMBLEFzc2V0RmlsdGVyABIAMEJ1eUV4ZWN1dGlvbggBEGZlZXMpAwEUQXNzZXQAATB3ZWlnaHRfbGltaXTFAgEsV2VpZ2h0TGltaXQAEwA0UmVmdW5kU3VycGx1cwAUADxTZXRFcnJvckhhbmRsZXIEALEDASRYY208Q2FsbD4AFQAsU2V0QXBwZW5kaXgEALEDASRYY208Q2FsbD4AFgAoQ2xlYXJFcnJvcgAXAChDbGFpbUFzc2V0CAEYYXNzZXRzIQMBGEFzc2V0cwABGHRpY2tldB0CASBMb2NhdGlvbgAYABBUcmFwBAC4AQx1NjQAGQBAU3Vic2NyaWJlVmVyc2lvbggBIHF1ZXJ5X2lkuAEcUXVlcnlJZAABTG1heF9yZXNwb25zZV93ZWlnaHQVAQEYV2VpZ2h0ABoASFVuc3Vic2NyaWJlVmVyc2lvbgAbACRCdXJuQXNzZXQEACEDARhBc3NldHMAHAAsRXhwZWN0QXNzZXQEACEDARhBc3NldHMAHQAwRXhwZWN0T3JpZ2luBABZAwFAT3B0aW9uPExvY2F0aW9uPgAeACxFeHBlY3RFcnJvcgQAPQMBUE9wdGlvbjwodTMyLCBFcnJvcik+AB8AUEV4cGVjdFRyYW5zYWN0U3RhdHVzBAChAgE4TWF5YmVFcnJvckNvZGUAIAAsUXVlcnlQYWxsZXQIASxtb2R1bGVfbmFtZRgBHFZlYzx1OD4AATRyZXNwb25zZV9pbmZvXQMBRFF1ZXJ5UmVzcG9uc2VJbmZvACEAMEV4cGVjdFBhbGxldBQBFGluZGV4ZAEMdTMyAAEQbmFtZRgBHFZlYzx1OD4AASxtb2R1bGVfbmFtZRgBHFZlYzx1OD4AASxjcmF0ZV9tYWpvcmQBDHUzMgABPG1pbl9jcmF0ZV9taW5vcmQBDHUzMgAiAFBSZXBvcnRUcmFuc2FjdFN0YXR1cwQAXQMBRFF1ZXJ5UmVzcG9uc2VJbmZvACMATENsZWFyVHJhbnNhY3RTdGF0dXMAJAA8VW5pdmVyc2FsT3JpZ2luBAApAgEgSnVuY3Rpb24AJQA0RXhwb3J0TWVzc2FnZQwBHG5ldHdvcmsxAgEkTmV0d29ya0lkAAEsZGVzdGluYXRpb24hAgFASW50ZXJpb3JMb2NhdGlvbgABDHhjbRUDARxYY208KCk+ACYAJExvY2tBc3NldAgBFGFzc2V0KQMBFEFzc2V0AAEgdW5sb2NrZXIdAgEgTG9jYXRpb24AJwAsVW5sb2NrQXNzZXQIARRhc3NldCkDARRBc3NldAABGHRhcmdldB0CASBMb2NhdGlvbgAoADhOb3RlVW5sb2NrYWJsZQgBFGFzc2V0KQMBFEFzc2V0AAEUb3duZXIdAgEgTG9jYXRpb24AKQA0UmVxdWVzdFVubG9jawgBFGFzc2V0KQMBFEFzc2V0AAEYbG9ja2VyHQIBIExvY2F0aW9uACoALFNldEZlZXNNb2RlBAEwaml0X3dpdGhkcmF3XQEBEGJvb2wAKwAgU2V0VG9waWMEAAgBIFt1ODsgMzJdACwAKENsZWFyVG9waWMALQAsQWxpYXNPcmlnaW4EAB0CASBMb2NhdGlvbgAuADxVbnBhaWRFeGVjdXRpb24IATB3ZWlnaHRfbGltaXTFAgEsV2VpZ2h0TGltaXQAATBjaGVja19vcmlnaW5ZAwFAT3B0aW9uPExvY2F0aW9uPgAvABxQYXlGZWVzBAEUYXNzZXQpAwEUQXNzZXQAMABASW5pdGlhdGVUcmFuc2ZlchQBLGRlc3RpbmF0aW9uHQIBIExvY2F0aW9uAAEscmVtb3RlX2ZlZXNtAwFsT3B0aW9uPEFzc2V0VHJhbnNmZXJGaWx0ZXI+AAE8cHJlc2VydmVfb3JpZ2luXQEBEGJvb2wAARhhc3NldHN1AwHgQm91bmRlZFZlYzxBc3NldFRyYW5zZmVyRmlsdGVyLCBNYXhBc3NldFRyYW5zZmVyRmlsdGVycz4AAShyZW1vdGVfeGNtFQMBHFhjbTwoKT4AMQBERXhlY3V0ZVdpdGhPcmlnaW4IAURkZXNjZW5kYW50X29yaWdpbn0DAWBPcHRpb248SW50ZXJpb3JMb2NhdGlvbj4AAQx4Y22xAwEkWGNtPENhbGw+ADIAIFNldEhpbnRzBAEUaGludHOBAwGEQm91bmRlZFZlYzxIaW50LCBIaW50TnVtVmFyaWFudHM+ADMAAL0DEFBzdGFnaW5nX3hjbV9leGVjdXRvchh0cmFpdHM4YXNzZXRfdHJhbnNmZXIwVHJhbnNmZXJUeXBlAAEQIFRlbGVwb3J0AAAAMExvY2FsUmVzZXJ2ZQABAEhEZXN0aW5hdGlvblJlc2VydmUAAgA0UmVtb3RlUmVzZXJ2ZQQAyQEBRFZlcnNpb25lZExvY2F0aW9uAAMAAMEDCAx4Y21AVmVyc2lvbmVkQXNzZXRJZAABDAhWMwQAbQIBLHYzOjpBc3NldElkAAMACFY0BADhAgEsdjQ6OkFzc2V0SWQABAAIVjUEAC0DASx2NTo6QXNzZXRJZAAFAADFAwxIY3VtdWx1c19wYWxsZXRfeGNtGHBhbGxldBBDYWxsBARUAAEABA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLskDDHBwYWxsZXRfeGNtX2JyaWRnZV9odWJfcm91dGVyGHBhbGxldBBDYWxsCARUAARJAAEEUHJlcG9ydF9icmlkZ2Vfc3RhdHVzCAEkYnJpZGdlX2lkQAEQSDI1NgABMGlzX2Nvbmdlc3RlZF0BARBib29sAAAEqE5vdGlmaWNhdGlvbiBhYm91dCBjb25nZXN0ZWQgYnJpZGdlIHF1ZXVlLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy7NAwxQcGFsbGV0X21lc3NhZ2VfcXVldWUYcGFsbGV0EENhbGwEBFQAAQgkcmVhcF9wYWdlCAE4bWVzc2FnZV9vcmlnaW7RAwFITWVzc2FnZU9yaWdpbk9mPFQ+AAEocGFnZV9pbmRleDgBJFBhZ2VJbmRleAAABD0BUmVtb3ZlIGEgcGFnZSB3aGljaCBoYXMgbm8gbW9yZSBtZXNzYWdlcyByZW1haW5pbmcgdG8gYmUgcHJvY2Vzc2VkIG9yIGlzIHN0YWxlLkhleGVjdXRlX292ZXJ3ZWlnaHQQAThtZXNzYWdlX29yaWdpbtEDAUhNZXNzYWdlT3JpZ2luT2Y8VD4AARBwYWdlOAEkUGFnZUluZGV4AAEUaW5kZXg4ARxUOjpTaXplAAEwd2VpZ2h0X2xpbWl0FQEBGFdlaWdodAABNHhFeGVjdXRlIGFuIG92ZXJ3ZWlnaHQgbWVzc2FnZS4ATQFUZW1wb3JhcnkgcHJvY2Vzc2luZyBlcnJvcnMgd2lsbCBiZSBwcm9wYWdhdGVkIHdoZXJlYXMgcGVybWFuZW50IGVycm9ycyBhcmUgdHJlYXRlZFRhcyBzdWNjZXNzIGNvbmRpdGlvbi4AdC0gYG9yaWdpbmA6IE11c3QgYmUgYFNpZ25lZGAuNQEtIGBtZXNzYWdlX29yaWdpbmA6IFRoZSBvcmlnaW4gZnJvbSB3aGljaCB0aGUgbWVzc2FnZSB0byBiZSBleGVjdXRlZCBhcnJpdmVkLj0BLSBgcGFnZWA6IFRoZSBwYWdlIGluIHRoZSBxdWV1ZSBpbiB3aGljaCB0aGUgbWVzc2FnZSB0byBiZSBleGVjdXRlZCBpcyBzaXR0aW5nLgkBLSBgaW5kZXhgOiBUaGUgaW5kZXggaW50byB0aGUgcXVldWUgb2YgdGhlIG1lc3NhZ2UgdG8gYmUgZXhlY3V0ZWQuWQEtIGB3ZWlnaHRfbGltaXRgOiBUaGUgbWF4aW11bSBhbW91bnQgb2Ygd2VpZ2h0IGFsbG93ZWQgdG8gYmUgY29uc3VtZWQgaW4gdGhlIGV4ZWN1dGlvbkQgIG9mIHRoZSBtZXNzYWdlLgD0QmVuY2htYXJrIGNvbXBsZXhpdHkgY29uc2lkZXJhdGlvbnM6IE8oaW5kZXggKyB3ZWlnaHRfbGltaXQpLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy7RAwhcY3VtdWx1c19wcmltaXRpdmVzX2NvcmVYQWdncmVnYXRlTWVzc2FnZU9yaWdpbgABDBBIZXJlAAAAGFBhcmVudAABABxTaWJsaW5nBACgARhQYXJhSWQAAgAA1QMMhHNub3dicmlkZ2VfcGFsbGV0X3N5c3RlbV9mcm9udGVuZBhwYWxsZXQQQ2FsbAQEVAABDEhzZXRfb3BlcmF0aW5nX21vZGUEARBtb2Rl2QMBNE9wZXJhdGluZ01vZGUAAAToU2V0IHRoZSBvcGVyYXRpbmcgbW9kZSBmb3IgZXhwb3J0aW5nIG1lc3NhZ2VzIHRvIEV0aGVyZXVtLjhyZWdpc3Rlcl90b2tlbgwBIGFzc2V0X2lkyQEBWEJveDxWZXJzaW9uZWRMb2NhdGlvbj4AASBtZXRhZGF0Yd0DATRBc3NldE1ldGFkYXRhAAEkZmVlX2Fzc2V0KQMBFEFzc2V0AAEcSQFJbml0aWF0ZXMgdGhlIHJlZ2lzdHJhdGlvbiBmb3IgYSBQb2xrYWRvdC1uYXRpdmUgdG9rZW4gYXMgYSB3cmFwcGVkIEVSQzIwIHRva2VuIG9uJEV0aGVyZXVtLowtIGBhc3NldF9pZGA6IExvY2F0aW9uIG9mIHRoZSBhc3NldEEBLSBgbWV0YWRhdGFgOiBNZXRhZGF0YSB0byBpbmNsdWRlIGluIHRoZSBpbnN0YW50aWF0ZWQgRVJDMjAgY29udHJhY3Qgb24gRXRoZXJldW0AXQFBbGwgb3JpZ2lucyBhcmUgYWxsb3dlZCwgaG93ZXZlciBgYXNzZXRfaWRgIG11c3QgYmUgYSBsb2NhdGlvbiBuZXN0ZWQgd2l0aGluIHRoZSBvcmlnaW5EY29uc2Vuc3VzIHN5c3RlbS4cYWRkX3RpcAgBKG1lc3NhZ2VfaWThAwEkTWVzc2FnZUlkAAEUYXNzZXQpAwEUQXNzZXQAAghFAUFkZCBhbiBhZGRpdGlvbmFsIHJlbGF5ZXIgdGlwIGZvciBhIGNvbW1pdHRlZCBtZXNzYWdlIGlkZW50aWZpZWQgYnkgYG1lc3NhZ2VfaWRgLqBUaGUgdGlwIGFzc2V0IHdpbGwgYmUgc3dhcHBlZCBmb3IgZXRoZXIuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLtkDDDxzbm93YnJpZGdlX2NvcmU4b3BlcmF0aW5nX21vZGVIQmFzaWNPcGVyYXRpbmdNb2RlAAEIGE5vcm1hbAAAABhIYWx0ZWQAAQAA3QMIPHNub3dicmlkZ2VfY29yZTRBc3NldE1ldGFkYXRhAAAMARBuYW1lnQEBwEJvdW5kZWRWZWM8dTgsIENvbnN0VTMyPE1FVEFEQVRBX0ZJRUxEX01BWF9MRU4+PgABGHN5bWJvbJ0BAcBCb3VuZGVkVmVjPHU4LCBDb25zdFUzMjxNRVRBREFUQV9GSUVMRF9NQVhfTEVOPj4AASBkZWNpbWFscwwBCHU4AADhAww8c25vd2JyaWRnZV9jb3JlGHJld2FyZCRNZXNzYWdlSWQAAQgcSW5ib3VuZAQAKAEMdTY0AAAAIE91dGJvdW5kBAAoAQx1NjQAAQAA5QMMOHBhbGxldF91dGlsaXR5GHBhbGxldBBDYWxsBARUAAEgFGJhdGNoBAEUY2FsbHPpAwF8VmVjPDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgAASHxTZW5kIGEgYmF0Y2ggb2YgZGlzcGF0Y2ggY2FsbHMuALBNYXkgYmUgY2FsbGVkIGZyb20gYW55IG9yaWdpbiBleGNlcHQgYE5vbmVgLgBdAS0gYGNhbGxzYDogVGhlIGNhbGxzIHRvIGJlIGRpc3BhdGNoZWQgZnJvbSB0aGUgc2FtZSBvcmlnaW4uIFRoZSBudW1iZXIgb2YgY2FsbCBtdXN0IG5vdDkBICBleGNlZWQgdGhlIGNvbnN0YW50OiBgYmF0Y2hlZF9jYWxsc19saW1pdGAgKGF2YWlsYWJsZSBpbiBjb25zdGFudCBtZXRhZGF0YSkuAFUBSWYgb3JpZ2luIGlzIHJvb3QgdGhlbiB0aGUgY2FsbHMgYXJlIGRpc3BhdGNoZWQgd2l0aG91dCBjaGVja2luZyBvcmlnaW4gZmlsdGVyLiAoVGhpc+xpbmNsdWRlcyBieXBhc3NpbmcgYGZyYW1lX3N5c3RlbTo6Q29uZmlnOjpCYXNlQ2FsbEZpbHRlcmApLgA0IyMgQ29tcGxleGl0edAtIE8oQykgd2hlcmUgQyBpcyB0aGUgbnVtYmVyIG9mIGNhbGxzIHRvIGJlIGJhdGNoZWQuAFUBVGhpcyB3aWxsIHJldHVybiBgT2tgIGluIGFsbCBjaXJjdW1zdGFuY2VzLiBUbyBkZXRlcm1pbmUgdGhlIHN1Y2Nlc3Mgb2YgdGhlIGJhdGNoLCBhbjEBZXZlbnQgaXMgZGVwb3NpdGVkLiBJZiBhIGNhbGwgZmFpbGVkIGFuZCB0aGUgYmF0Y2ggd2FzIGludGVycnVwdGVkLCB0aGVuIHRoZVUBYEJhdGNoSW50ZXJydXB0ZWRgIGV2ZW50IGlzIGRlcG9zaXRlZCwgYWxvbmcgd2l0aCB0aGUgbnVtYmVyIG9mIHN1Y2Nlc3NmdWwgY2FsbHMgbWFkZU0BYW5kIHRoZSBlcnJvciBvZiB0aGUgZmFpbGVkIGNhbGwuIElmIGFsbCB3ZXJlIHN1Y2Nlc3NmdWwsIHRoZW4gdGhlIGBCYXRjaENvbXBsZXRlZGBMZXZlbnQgaXMgZGVwb3NpdGVkLjRhc19kZXJpdmF0aXZlCAEUaW5kZXjtAwEMdTE2AAEQY2FsbCABfEJveDw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4AATTcU2VuZCBhIGNhbGwgdGhyb3VnaCBhbiBpbmRleGVkIHBzZXVkb255bSBvZiB0aGUgc2VuZGVyLgBVAUZpbHRlciBmcm9tIG9yaWdpbiBhcmUgcGFzc2VkIGFsb25nLiBUaGUgY2FsbCB3aWxsIGJlIGRpc3BhdGNoZWQgd2l0aCBhbiBvcmlnaW4gd2hpY2i8dXNlIHRoZSBzYW1lIGZpbHRlciBhcyB0aGUgb3JpZ2luIG9mIHRoaXMgY2FsbC4ARQFOT1RFOiBJZiB5b3UgbmVlZCB0byBlbnN1cmUgdGhhdCBhbnkgYWNjb3VudC1iYXNlZCBmaWx0ZXJpbmcgaXMgbm90IGhvbm9yZWQgKGkuZS5hAWJlY2F1c2UgeW91IGV4cGVjdCBgcHJveHlgIHRvIGhhdmUgYmVlbiB1c2VkIHByaW9yIGluIHRoZSBjYWxsIHN0YWNrIGFuZCB5b3UgZG8gbm90IHdhbnRRAXRoZSBjYWxsIHJlc3RyaWN0aW9ucyB0byBhcHBseSB0byBhbnkgc3ViLWFjY291bnRzKSwgdGhlbiB1c2UgYGFzX211bHRpX3RocmVzaG9sZF8xYHxpbiB0aGUgTXVsdGlzaWcgcGFsbGV0IGluc3RlYWQuAPROT1RFOiBQcmlvciB0byB2ZXJzaW9uICoxMiwgdGhpcyB3YXMgY2FsbGVkIGBhc19saW1pdGVkX3N1YmAuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4kYmF0Y2hfYWxsBAEUY2FsbHPpAwF8VmVjPDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgACNOxTZW5kIGEgYmF0Y2ggb2YgZGlzcGF0Y2ggY2FsbHMgYW5kIGF0b21pY2FsbHkgZXhlY3V0ZSB0aGVtLiEBVGhlIHdob2xlIHRyYW5zYWN0aW9uIHdpbGwgcm9sbGJhY2sgYW5kIGZhaWwgaWYgYW55IG9mIHRoZSBjYWxscyBmYWlsZWQuALBNYXkgYmUgY2FsbGVkIGZyb20gYW55IG9yaWdpbiBleGNlcHQgYE5vbmVgLgBdAS0gYGNhbGxzYDogVGhlIGNhbGxzIHRvIGJlIGRpc3BhdGNoZWQgZnJvbSB0aGUgc2FtZSBvcmlnaW4uIFRoZSBudW1iZXIgb2YgY2FsbCBtdXN0IG5vdDkBICBleGNlZWQgdGhlIGNvbnN0YW50OiBgYmF0Y2hlZF9jYWxsc19saW1pdGAgKGF2YWlsYWJsZSBpbiBjb25zdGFudCBtZXRhZGF0YSkuAFUBSWYgb3JpZ2luIGlzIHJvb3QgdGhlbiB0aGUgY2FsbHMgYXJlIGRpc3BhdGNoZWQgd2l0aG91dCBjaGVja2luZyBvcmlnaW4gZmlsdGVyLiAoVGhpc+xpbmNsdWRlcyBieXBhc3NpbmcgYGZyYW1lX3N5c3RlbTo6Q29uZmlnOjpCYXNlQ2FsbEZpbHRlcmApLgA0IyMgQ29tcGxleGl0edAtIE8oQykgd2hlcmUgQyBpcyB0aGUgbnVtYmVyIG9mIGNhbGxzIHRvIGJlIGJhdGNoZWQuLGRpc3BhdGNoX2FzCAEkYXNfb3JpZ2lu8QMBVEJveDxUOjpQYWxsZXRzT3JpZ2luPgABEGNhbGwgAXxCb3g8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AAMYyERpc3BhdGNoZXMgYSBmdW5jdGlvbiBjYWxsIHdpdGggYSBwcm92aWRlZCBvcmlnaW4uAMRUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfUm9vdF8uADQjIyBDb21wbGV4aXR5HC0gTygxKS4sZm9yY2VfYmF0Y2gEARRjYWxsc+kDAXxWZWM8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AAQ0fFNlbmQgYSBiYXRjaCBvZiBkaXNwYXRjaCBjYWxscy7UVW5saWtlIGBiYXRjaGAsIGl0IGFsbG93cyBlcnJvcnMgYW5kIHdvbid0IGludGVycnVwdC4AsE1heSBiZSBjYWxsZWQgZnJvbSBhbnkgb3JpZ2luIGV4Y2VwdCBgTm9uZWAuAF0BLSBgY2FsbHNgOiBUaGUgY2FsbHMgdG8gYmUgZGlzcGF0Y2hlZCBmcm9tIHRoZSBzYW1lIG9yaWdpbi4gVGhlIG51bWJlciBvZiBjYWxsIG11c3Qgbm90OQEgIGV4Y2VlZCB0aGUgY29uc3RhbnQ6IGBiYXRjaGVkX2NhbGxzX2xpbWl0YCAoYXZhaWxhYmxlIGluIGNvbnN0YW50IG1ldGFkYXRhKS4ATQFJZiBvcmlnaW4gaXMgcm9vdCB0aGVuIHRoZSBjYWxscyBhcmUgZGlzcGF0Y2ggd2l0aG91dCBjaGVja2luZyBvcmlnaW4gZmlsdGVyLiAoVGhpc+xpbmNsdWRlcyBieXBhc3NpbmcgYGZyYW1lX3N5c3RlbTo6Q29uZmlnOjpCYXNlQ2FsbEZpbHRlcmApLgA0IyMgQ29tcGxleGl0edAtIE8oQykgd2hlcmUgQyBpcyB0aGUgbnVtYmVyIG9mIGNhbGxzIHRvIGJlIGJhdGNoZWQuLHdpdGhfd2VpZ2h0CAEQY2FsbCABfEJveDw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4AARh3ZWlnaHQVAQEYV2VpZ2h0AAUYxERpc3BhdGNoIGEgZnVuY3Rpb24gY2FsbCB3aXRoIGEgc3BlY2lmaWVkIHdlaWdodC4ALQFUaGlzIGZ1bmN0aW9uIGRvZXMgbm90IGNoZWNrIHRoZSB3ZWlnaHQgb2YgdGhlIGNhbGwsIGFuZCBpbnN0ZWFkIGFsbG93cyB0aGW4Um9vdCBvcmlnaW4gdG8gc3BlY2lmeSB0aGUgd2VpZ2h0IG9mIHRoZSBjYWxsLgDEVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1Jvb3RfLhxpZl9lbHNlCAEQbWFpbiABfEJveDw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4AASBmYWxsYmFjayABfEJveDw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4ABlwVAURpc3BhdGNoIGEgZmFsbGJhY2sgY2FsbCBpbiB0aGUgZXZlbnQgdGhlIG1haW4gY2FsbCBmYWlscyB0byBleGVjdXRlLrBNYXkgYmUgY2FsbGVkIGZyb20gYW55IG9yaWdpbiBleGNlcHQgYE5vbmVgLgDkVGhpcyBmdW5jdGlvbiBmaXJzdCBhdHRlbXB0cyB0byBkaXNwYXRjaCB0aGUgYG1haW5gIGNhbGwu1ElmIHRoZSBgbWFpbmAgY2FsbCBmYWlscywgdGhlIGBmYWxsYmFja2AgaXMgYXR0ZW10ZWQuFQFpZiB0aGUgZmFsbGJhY2sgaXMgc3VjY2Vzc2Z1bGx5IGRpc3BhdGNoZWQsIHRoZSB3ZWlnaHRzIG9mIGJvdGggY2FsbHMlAWFyZSBhY2N1bXVsYXRlZCBhbmQgYW4gZXZlbnQgY29udGFpbmluZyB0aGUgbWFpbiBjYWxsIGVycm9yIGlzIGRlcG9zaXRlZC4A3EluIHRoZSBldmVudCBvZiBhIGZhbGxiYWNrIGZhaWx1cmUgdGhlIHdob2xlIGNhbGwgZmFpbHNod2l0aCB0aGUgd2VpZ2h0cyByZXR1cm5lZC4AQQEtIGBtYWluYDogVGhlIG1haW4gY2FsbCB0byBiZSBkaXNwYXRjaGVkLiBUaGlzIGlzIHRoZSBwcmltYXJ5IGFjdGlvbiB0byBleGVjdXRlLj0BLSBgZmFsbGJhY2tgOiBUaGUgZmFsbGJhY2sgY2FsbCB0byBiZSBkaXNwYXRjaGVkIGluIGNhc2UgdGhlIGBtYWluYCBjYWxsIGZhaWxzLgBEIyMgRGlzcGF0Y2ggTG9naWNBAS0gSWYgdGhlIG9yaWdpbiBpcyBgcm9vdGAsIGJvdGggdGhlIG1haW4gYW5kIGZhbGxiYWNrIGNhbGxzIGFyZSBleGVjdXRlZCB3aXRob3V0eCAgYXBwbHlpbmcgYW55IG9yaWdpbiBmaWx0ZXJzLkkBLSBJZiB0aGUgb3JpZ2luIGlzIG5vdCBgcm9vdGAsIHRoZSBvcmlnaW4gZmlsdGVyIGlzIGFwcGxpZWQgdG8gYm90aCB0aGUgYG1haW5gIGFuZEwgIGBmYWxsYmFja2AgY2FsbHMuACwjIyBVc2UgQ2FzZVkBLSBTb21lIHVzZSBjYXNlcyBtaWdodCBpbnZvbHZlIHN1Ym1pdHRpbmcgYSBgYmF0Y2hgIHR5cGUgY2FsbCBpbiBlaXRoZXIgbWFpbiwgZmFsbGJhY2soICBvciBib3RoLlBkaXNwYXRjaF9hc19mYWxsaWJsZQgBJGFzX29yaWdpbvEDAVRCb3g8VDo6UGFsbGV0c09yaWdpbj4AARBjYWxsIAF8Qm94PDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgAHFMhEaXNwYXRjaGVzIGEgZnVuY3Rpb24gY2FsbCB3aXRoIGEgcHJvdmlkZWQgb3JpZ2luLgBRAUFsbW9zdCB0aGUgc2FtZSBhcyBbYFBhbGxldDo6ZGlzcGF0Y2hfYXNgXSBidXQgZm9yd2FyZHMgYW55IGVycm9yIG9mIHRoZSBpbm5lciBjYWxsLgDEVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1Jvb3RfLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy7pAwAAAiAA7QMAAAUEAPEDCFxhc3NldF9odWJfcGFzZW9fcnVudGltZTBPcmlnaW5DYWxsZXIAASAYc3lzdGVtBAD1AwF0ZnJhbWVfc3lzdGVtOjpPcmlnaW48UnVudGltZT4AAAAsUG9sa2Fkb3RYY20EAPkDAUhwYWxsZXRfeGNtOjpPcmlnaW4AHwAoQ3VtdWx1c1hjbQQA/QMBaGN1bXVsdXNfcGFsbGV0X3hjbTo6T3JpZ2luACAAHE9yaWdpbnMEAAEEAXRwYWxsZXRfY3VzdG9tX29yaWdpbnM6Ok9yaWdpbgA/ADRBbGlhc0FjY291bnRzBAAFBAGMaW5kaXZfcGFsbGV0X2FsaWFzX2FjY291bnRzOjpPcmlnaW4AYgAQUGdhcwQAEQQBZGluZGl2X3BhbGxldF9wZ2FzOjpPcmlnaW4AYwAYUmV2aXZlBAAdBAF4cGFsbGV0X3Jldml2ZTo6T3JpZ2luPFJ1bnRpbWU+AGQAMERvdG5zR2F0ZXdheQQAJQQBiGluZGl2X3BhbGxldF9kb3Ruc19nYXRld2F5OjpPcmlnaW4AmAAA9QMMNGZyYW1lX3N1cHBvcnQgZGlzcGF0Y2gkUmF3T3JpZ2luBCRBY2NvdW50SWQBBAEQEFJvb3QAAAAYU2lnbmVkBAAEASRBY2NvdW50SWQAAQAQTm9uZQACAChBdXRob3JpemVkAAMAAPkDDChwYWxsZXRfeGNtGHBhbGxldBhPcmlnaW4AAQgMWGNtBAAdAgEgTG9jYXRpb24AAAAgUmVzcG9uc2UEAB0CASBMb2NhdGlvbgABAAD9AwxIY3VtdWx1c19wYWxsZXRfeGNtGHBhbGxldBhPcmlnaW4AAQgUUmVsYXkAAABAU2libGluZ1BhcmFjaGFpbgQAoAEYUGFyYUlkAAEAAAEEFFxhc3NldF9odWJfcGFzZW9fcnVudGltZShnb3Zlcm5hbmNlHG9yaWdpbnNUcGFsbGV0X2N1c3RvbV9vcmlnaW5zGE9yaWdpbgABPDBTdGFraW5nQWRtaW4AAAAkVHJlYXN1cmVyAAEAPEZlbGxvd3NoaXBBZG1pbgACADBHZW5lcmFsQWRtaW4AAwAwQXVjdGlvbkFkbWluAAQAKExlYXNlQWRtaW4ABQBMUmVmZXJlbmR1bUNhbmNlbGxlcgAGAEBSZWZlcmVuZHVtS2lsbGVyAAcALFNtYWxsVGlwcGVyAAgAJEJpZ1RpcHBlcgAJADBTbWFsbFNwZW5kZXIACgA0TWVkaXVtU3BlbmRlcgALAChCaWdTcGVuZGVyAAwARFdoaXRlbGlzdGVkQ2FsbGVyAA0ANFdpc2hGb3JDaGFuZ2UADgAABQQMbGluZGl2X3BhbGxldF9hbGlhc19hY2NvdW50cxhwYWxsZXQYT3JpZ2luAAEEJFJpbmdBbGlhcwQACQQBQEFsaWFzQWNjb3VudEluZm8AAAAACQQMbGluZGl2X3BhbGxldF9hbGlhc19hY2NvdW50cxR0eXBlc0BBbGlhc0FjY291bnRJbmZvAAAQAShjb2xsZWN0aW9uCAEoSWRlbnRpZmllcgABIHJldmlzaW9uOAE0UmV2aXNpb25JbmRleAABEHJpbmc4ASRSaW5nSW5kZXgAAQhjYQ0EATxDb250ZXh0dWFsQWxpYXMAAA0EEDRpbmRpdl9zdXBwb3J0GHRyYWl0cxxyZWFsaXR5PENvbnRleHR1YWxBbGlhcwAACAEUYWxpYXMIARRBbGlhcwABHGNvbnRleHQIARxDb250ZXh0AAARBAxEaW5kaXZfcGFsbGV0X3BnYXMYcGFsbGV0GE9yaWdpbgABBChDbGFpbUFsaWFzDAEUYWxpYXMIARRBbGlhcwABDGRheRUEAQxEYXkAAShjb2xsZWN0aW9uGQQBOFBnYXNDb2xsZWN0aW9uAAAAABUEDDRpbmRpdl9zdXBwb3J0FHV0aWxzMEJpZ0VuZGlhblUzMgADBAAAAAwEGQFBIHUzMiBlbmNvZGVkIGluIGJpZy1lbmRpYW4gZm9ybWF0IGZvciBjb3JyZWN0IGxleGljb2dyYXBoaWMgb3JkZXJpbmcuGQQMRGluZGl2X3BhbGxldF9wZ2FzJGV4dGVuc2lvbjhQZ2FzQ29sbGVjdGlvbgABCBhQZW9wbGUAAAAoTGl0ZVBlb3BsZQABAAAdBAw0cGFsbGV0X3Jldml2ZRhwYWxsZXQYT3JpZ2luBARUASEEAQQ4RXRoVHJhbnNhY3Rpb24EAAQBMFQ6OkFjY291bnRJZAAAAAAhBAhcYXNzZXRfaHViX3Bhc2VvX3J1bnRpbWUcUnVudGltZQAAAAAlBAxoaW5kaXZfcGFsbGV0X2RvdG5zX2dhdGV3YXkYcGFsbGV0GE9yaWdpbgABBEhQZXJzb25SZWdpc3RyYXRpb24EAAgBFEFsaWFzAAAAACkEDDxwYWxsZXRfbXVsdGlzaWcYcGFsbGV0EENhbGwEBFQAARRQYXNfbXVsdGlfdGhyZXNob2xkXzEIAURvdGhlcl9zaWduYXRvcmllc2EBAURWZWM8VDo6QWNjb3VudElkPgABEGNhbGwgAXxCb3g8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AAAwUQFJbW1lZGlhdGVseSBkaXNwYXRjaCBhIG11bHRpLXNpZ25hdHVyZSBjYWxsIHVzaW5nIGEgc2luZ2xlIGFwcHJvdmFsIGZyb20gdGhlIGNhbGxlci4AzFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLgA9AS0gYG90aGVyX3NpZ25hdG9yaWVzYDogVGhlIGFjY291bnRzIChvdGhlciB0aGFuIHRoZSBzZW5kZXIpIHdobyBhcmUgcGFydCBvZiB0aGUBAW11bHRpLXNpZ25hdHVyZSwgYnV0IGRvIG5vdCBwYXJ0aWNpcGF0ZSBpbiB0aGUgYXBwcm92YWwgcHJvY2Vzcy6ILSBgY2FsbGA6IFRoZSBjYWxsIHRvIGJlIGV4ZWN1dGVkLgC4UmVzdWx0IGlzIGVxdWl2YWxlbnQgdG8gdGhlIGRpc3BhdGNoZWQgcmVzdWx0LgA0IyMgQ29tcGxleGl0eRkBTyhaICsgQykgd2hlcmUgWiBpcyB0aGUgbGVuZ3RoIG9mIHRoZSBjYWxsIGFuZCBDIGl0cyBleGVjdXRpb24gd2VpZ2h0LiBhc19tdWx0aRQBJHRocmVzaG9sZO0DAQx1MTYAAURvdGhlcl9zaWduYXRvcmllc2EBAURWZWM8VDo6QWNjb3VudElkPgABPG1heWJlX3RpbWVwb2ludC0EAZBPcHRpb248VGltZXBvaW50PEJsb2NrTnVtYmVyRm9yPFQ+Pj4AARBjYWxsIAF8Qm94PDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgABKG1heF93ZWlnaHQVAQEYV2VpZ2h0AAGoVQFSZWdpc3RlciBhcHByb3ZhbCBmb3IgYSBkaXNwYXRjaCB0byBiZSBtYWRlIGZyb20gYSBkZXRlcm1pbmlzdGljIGNvbXBvc2l0ZSBhY2NvdW50IGlm+GFwcHJvdmVkIGJ5IGEgdG90YWwgb2YgYHRocmVzaG9sZCAtIDFgIG9mIGBvdGhlcl9zaWduYXRvcmllc2AuAD0BKipJZiB0aGUgYXBwcm92YWwgdGhyZXNob2xkIGlzIG1ldCAoaW5jbHVkaW5nIHRoZSBzZW5kZXIncyBhcHByb3ZhbCksIHRoaXMgd2lsbEUBaW1tZWRpYXRlbHkgZXhlY3V0ZSB0aGUgY2FsbC4qKiBUaGlzIGlzIHRoZSBvbmx5IHdheSB0byBleGVjdXRlIGEgbXVsdGlzaWcgY2FsbCAtwGBhcHByb3ZlX2FzX211bHRpYCB3aWxsIG5ldmVyIHRyaWdnZXIgZXhlY3V0aW9uLgAtAVBheW1lbnQ6IGBEZXBvc2l0QmFzZWAgd2lsbCBiZSByZXNlcnZlZCBpZiB0aGlzIGlzIHRoZSBmaXJzdCBhcHByb3ZhbCwgcGx1cz0BYHRocmVzaG9sZGAgdGltZXMgYERlcG9zaXRGYWN0b3JgLiBJdCBpcyByZXR1cm5lZCBvbmNlIHRoaXMgZGlzcGF0Y2ggaGFwcGVucyBvcjRpcyBjYW5jZWxsZWQuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4AVQEtIGB0aHJlc2hvbGRgOiBUaGUgdG90YWwgbnVtYmVyIG9mIGFwcHJvdmFscyBmb3IgdGhpcyBkaXNwYXRjaCBiZWZvcmUgaXQgaXMgZXhlY3V0ZWQuQQEtIGBvdGhlcl9zaWduYXRvcmllc2A6IFRoZSBhY2NvdW50cyAob3RoZXIgdGhhbiB0aGUgc2VuZGVyKSB3aG8gY2FuIGFwcHJvdmUgdGhpc2xkaXNwYXRjaC4gTWF5IG5vdCBiZSBlbXB0eS5ZAS0gYG1heWJlX3RpbWVwb2ludGA6IElmIHRoaXMgaXMgdGhlIGZpcnN0IGFwcHJvdmFsLCB0aGVuIHRoaXMgbXVzdCBiZSBgTm9uZWAuIElmIGl0IGlzUQFub3QgdGhlIGZpcnN0IGFwcHJvdmFsLCB0aGVuIGl0IG11c3QgYmUgYFNvbWVgLCB3aXRoIHRoZSB0aW1lcG9pbnQgKGJsb2NrIG51bWJlciBhbmTUdHJhbnNhY3Rpb24gaW5kZXgpIG9mIHRoZSBmaXJzdCBhcHByb3ZhbCB0cmFuc2FjdGlvbi6ILSBgY2FsbGA6IFRoZSBjYWxsIHRvIGJlIGV4ZWN1dGVkLgBNAU5PVEU6IEZvciBpbnRlcm1lZGlhdGUgYXBwcm92YWxzIChub3QgdGhlIGZpbmFsIGFwcHJvdmFsKSwgeW91IHNob3VsZCBnZW5lcmFsbHkgdXNlRQFgYXBwcm92ZV9hc19tdWx0aWAgaW5zdGVhZCwgc2luY2UgaXQgb25seSByZXF1aXJlcyBhIGhhc2ggb2YgdGhlIGNhbGwgYW5kIGlzIG1vcmUoZWZmaWNpZW50LgBZAVJlc3VsdCBpcyBlcXVpdmFsZW50IHRvIHRoZSBkaXNwYXRjaGVkIHJlc3VsdCBpZiBgdGhyZXNob2xkYCBpcyBleGFjdGx5IGAxYC4gT3RoZXJ3aXNlVQFvbiBzdWNjZXNzLCByZXN1bHQgaXMgYE9rYCBhbmQgdGhlIHJlc3VsdCBmcm9tIHRoZSBpbnRlcmlvciBjYWxsLCBpZiBpdCB3YXMgZXhlY3V0ZWQs3G1heSBiZSBmb3VuZCBpbiB0aGUgZGVwb3NpdGVkIGBNdWx0aXNpZ0V4ZWN1dGVkYCBldmVudC4ANCMjIENvbXBsZXhpdHlQLSBgTyhTICsgWiArIENhbGwpYC7MLSBVcCB0byBvbmUgYmFsYW5jZS1yZXNlcnZlIG9yIHVucmVzZXJ2ZSBvcGVyYXRpb24uPQEtIE9uZSBwYXNzdGhyb3VnaCBvcGVyYXRpb24sIG9uZSBpbnNlcnQsIGJvdGggYE8oUylgIHdoZXJlIGBTYCBpcyB0aGUgbnVtYmVyIG9mRQEgIHNpZ25hdG9yaWVzLiBgU2AgaXMgY2FwcGVkIGJ5IGBNYXhTaWduYXRvcmllc2AsIHdpdGggd2VpZ2h0IGJlaW5nIHByb3BvcnRpb25hbC4hAS0gT25lIGNhbGwgZW5jb2RlICYgaGFzaCwgYm90aCBvZiBjb21wbGV4aXR5IGBPKFopYCB3aGVyZSBgWmAgaXMgdHgtbGVuLrwtIE9uZSBlbmNvZGUgJiBoYXNoLCBib3RoIG9mIGNvbXBsZXhpdHkgYE8oUylgLtQtIFVwIHRvIG9uZSBiaW5hcnkgc2VhcmNoIGFuZCBpbnNlcnQgKGBPKGxvZ1MgKyBTKWApLvgtIEkvTzogMSByZWFkIGBPKFMpYCwgdXAgdG8gMSBtdXRhdGUgYE8oUylgLiBVcCB0byBvbmUgcmVtb3ZlLjAtIE9uZSBldmVudC5sLSBUaGUgd2VpZ2h0IG9mIHRoZSBgY2FsbGAuTQEtIFN0b3JhZ2U6IGluc2VydHMgb25lIGl0ZW0sIHZhbHVlIHNpemUgYm91bmRlZCBieSBgTWF4U2lnbmF0b3JpZXNgLCB3aXRoIGEgZGVwb3NpdBkBICB0YWtlbiBmb3IgaXRzIGxpZmV0aW1lIG9mIGBEZXBvc2l0QmFzZSArIHRocmVzaG9sZCAqIERlcG9zaXRGYWN0b3JgLkBhcHByb3ZlX2FzX211bHRpFAEkdGhyZXNob2xk7QMBDHUxNgABRG90aGVyX3NpZ25hdG9yaWVzYQEBRFZlYzxUOjpBY2NvdW50SWQ+AAE8bWF5YmVfdGltZXBvaW50LQQBkE9wdGlvbjxUaW1lcG9pbnQ8QmxvY2tOdW1iZXJGb3I8VD4+PgABJGNhbGxfaGFzaAgBIFt1ODsgMzJdAAEobWF4X3dlaWdodBUBARhXZWlnaHQAAphVAVJlZ2lzdGVyIGFwcHJvdmFsIGZvciBhIGRpc3BhdGNoIHRvIGJlIG1hZGUgZnJvbSBhIGRldGVybWluaXN0aWMgY29tcG9zaXRlIGFjY291bnQgaWb4YXBwcm92ZWQgYnkgYSB0b3RhbCBvZiBgdGhyZXNob2xkIC0gMWAgb2YgYG90aGVyX3NpZ25hdG9yaWVzYC4AOQEqKlRoaXMgZnVuY3Rpb24gd2lsbCBORVZFUiBleGVjdXRlIHRoZSBjYWxsLCBldmVuIGlmIHRoZSBhcHByb3ZhbCB0aHJlc2hvbGQgaXNRAXJlYWNoZWQuKiogSXQgb25seSByZWdpc3RlcnMgYXBwcm92YWwuIFRvIGFjdHVhbGx5IGV4ZWN1dGUgdGhlIGNhbGwsIGBhc19tdWx0aWAgbXVzdPBiZSBjYWxsZWQgd2l0aCB0aGUgZnVsbCBjYWxsIGRhdGEgYnkgYW55IG9mIHRoZSBzaWduYXRvcmllcy4ATQFUaGlzIGZ1bmN0aW9uIGlzIG1vcmUgZWZmaWNpZW50IHRoYW4gYGFzX211bHRpYCBmb3IgaW50ZXJtZWRpYXRlIGFwcHJvdmFscyBzaW5jZSBpdNBvbmx5IHJlcXVpcmVzIHRoZSBjYWxsIGhhc2gsIG5vdCB0aGUgZnVsbCBjYWxsIGRhdGEuAC0BUGF5bWVudDogYERlcG9zaXRCYXNlYCB3aWxsIGJlIHJlc2VydmVkIGlmIHRoaXMgaXMgdGhlIGZpcnN0IGFwcHJvdmFsLCBwbHVzPQFgdGhyZXNob2xkYCB0aW1lcyBgRGVwb3NpdEZhY3RvcmAuIEl0IGlzIHJldHVybmVkIG9uY2UgdGhpcyBkaXNwYXRjaCBoYXBwZW5zIG9yNGlzIGNhbmNlbGxlZC4AzFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLgBVAS0gYHRocmVzaG9sZGA6IFRoZSB0b3RhbCBudW1iZXIgb2YgYXBwcm92YWxzIGZvciB0aGlzIGRpc3BhdGNoIGJlZm9yZSBpdCBpcyBleGVjdXRlZC5BAS0gYG90aGVyX3NpZ25hdG9yaWVzYDogVGhlIGFjY291bnRzIChvdGhlciB0aGFuIHRoZSBzZW5kZXIpIHdobyBjYW4gYXBwcm92ZSB0aGlzbGRpc3BhdGNoLiBNYXkgbm90IGJlIGVtcHR5LlkBLSBgbWF5YmVfdGltZXBvaW50YDogSWYgdGhpcyBpcyB0aGUgZmlyc3QgYXBwcm92YWwsIHRoZW4gdGhpcyBtdXN0IGJlIGBOb25lYC4gSWYgaXQgaXNRAW5vdCB0aGUgZmlyc3QgYXBwcm92YWwsIHRoZW4gaXQgbXVzdCBiZSBgU29tZWAsIHdpdGggdGhlIHRpbWVwb2ludCAoYmxvY2sgbnVtYmVyIGFuZNR0cmFuc2FjdGlvbiBpbmRleCkgb2YgdGhlIGZpcnN0IGFwcHJvdmFsIHRyYW5zYWN0aW9uLswtIGBjYWxsX2hhc2hgOiBUaGUgaGFzaCBvZiB0aGUgY2FsbCB0byBiZSBleGVjdXRlZC4APQFOT1RFOiBUbyBleGVjdXRlIHRoZSBjYWxsIGFmdGVyIGFwcHJvdmFscyBhcmUgZ2F0aGVyZWQsIGFueSBzaWduYXRvcnkgbXVzdCBjYWxsKQFgYXNfbXVsdGlgIHdpdGggdGhlIGZ1bGwgY2FsbCBkYXRhLiBUaGlzIGZ1bmN0aW9uIGNhbm5vdCBleGVjdXRlIHRoZSBjYWxsLgA0IyMgQ29tcGxleGl0eSQtIGBPKFMpYC7MLSBVcCB0byBvbmUgYmFsYW5jZS1yZXNlcnZlIG9yIHVucmVzZXJ2ZSBvcGVyYXRpb24uPQEtIE9uZSBwYXNzdGhyb3VnaCBvcGVyYXRpb24sIG9uZSBpbnNlcnQsIGJvdGggYE8oUylgIHdoZXJlIGBTYCBpcyB0aGUgbnVtYmVyIG9mRQEgIHNpZ25hdG9yaWVzLiBgU2AgaXMgY2FwcGVkIGJ5IGBNYXhTaWduYXRvcmllc2AsIHdpdGggd2VpZ2h0IGJlaW5nIHByb3BvcnRpb25hbC68LSBPbmUgZW5jb2RlICYgaGFzaCwgYm90aCBvZiBjb21wbGV4aXR5IGBPKFMpYC7ULSBVcCB0byBvbmUgYmluYXJ5IHNlYXJjaCBhbmQgaW5zZXJ0IChgTyhsb2dTICsgUylgKS74LSBJL086IDEgcmVhZCBgTyhTKWAsIHVwIHRvIDEgbXV0YXRlIGBPKFMpYC4gVXAgdG8gb25lIHJlbW92ZS4wLSBPbmUgZXZlbnQuTQEtIFN0b3JhZ2U6IGluc2VydHMgb25lIGl0ZW0sIHZhbHVlIHNpemUgYm91bmRlZCBieSBgTWF4U2lnbmF0b3JpZXNgLCB3aXRoIGEgZGVwb3NpdBkBICB0YWtlbiBmb3IgaXRzIGxpZmV0aW1lIG9mIGBEZXBvc2l0QmFzZSArIHRocmVzaG9sZCAqIERlcG9zaXRGYWN0b3JgLjxjYW5jZWxfYXNfbXVsdGkQASR0aHJlc2hvbGTtAwEMdTE2AAFEb3RoZXJfc2lnbmF0b3JpZXNhAQFEVmVjPFQ6OkFjY291bnRJZD4AASR0aW1lcG9pbnQxBAFwVGltZXBvaW50PEJsb2NrTnVtYmVyRm9yPFQ+PgABJGNhbGxfaGFzaAgBIFt1ODsgMzJdAANUVQFDYW5jZWwgYSBwcmUtZXhpc3RpbmcsIG9uLWdvaW5nIG11bHRpc2lnIHRyYW5zYWN0aW9uLiBBbnkgZGVwb3NpdCByZXNlcnZlZCBwcmV2aW91c2x5xGZvciB0aGlzIG9wZXJhdGlvbiB3aWxsIGJlIHVucmVzZXJ2ZWQgb24gc3VjY2Vzcy4AzFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLgBVAS0gYHRocmVzaG9sZGA6IFRoZSB0b3RhbCBudW1iZXIgb2YgYXBwcm92YWxzIGZvciB0aGlzIGRpc3BhdGNoIGJlZm9yZSBpdCBpcyBleGVjdXRlZC5BAS0gYG90aGVyX3NpZ25hdG9yaWVzYDogVGhlIGFjY291bnRzIChvdGhlciB0aGFuIHRoZSBzZW5kZXIpIHdobyBjYW4gYXBwcm92ZSB0aGlzbGRpc3BhdGNoLiBNYXkgbm90IGJlIGVtcHR5Ll0BLSBgdGltZXBvaW50YDogVGhlIHRpbWVwb2ludCAoYmxvY2sgbnVtYmVyIGFuZCB0cmFuc2FjdGlvbiBpbmRleCkgb2YgdGhlIGZpcnN0IGFwcHJvdmFseHRyYW5zYWN0aW9uIGZvciB0aGlzIGRpc3BhdGNoLswtIGBjYWxsX2hhc2hgOiBUaGUgaGFzaCBvZiB0aGUgY2FsbCB0byBiZSBleGVjdXRlZC4ANCMjIENvbXBsZXhpdHkkLSBgTyhTKWAuzC0gVXAgdG8gb25lIGJhbGFuY2UtcmVzZXJ2ZSBvciB1bnJlc2VydmUgb3BlcmF0aW9uLj0BLSBPbmUgcGFzc3Rocm91Z2ggb3BlcmF0aW9uLCBvbmUgaW5zZXJ0LCBib3RoIGBPKFMpYCB3aGVyZSBgU2AgaXMgdGhlIG51bWJlciBvZkUBICBzaWduYXRvcmllcy4gYFNgIGlzIGNhcHBlZCBieSBgTWF4U2lnbmF0b3JpZXNgLCB3aXRoIHdlaWdodCBiZWluZyBwcm9wb3J0aW9uYWwuvC0gT25lIGVuY29kZSAmIGhhc2gsIGJvdGggb2YgY29tcGxleGl0eSBgTyhTKWAuMC0gT25lIGV2ZW50LoQtIEkvTzogMSByZWFkIGBPKFMpYCwgb25lIHJlbW92ZS5wLSBTdG9yYWdlOiByZW1vdmVzIG9uZSBpdGVtLjBwb2tlX2RlcG9zaXQMASR0aHJlc2hvbGTtAwEMdTE2AAFEb3RoZXJfc2lnbmF0b3JpZXNhAQFEVmVjPFQ6OkFjY291bnRJZD4AASRjYWxsX2hhc2gIASBbdTg7IDMyXQAENPRQb2tlIHRoZSBkZXBvc2l0IHJlc2VydmVkIGZvciBhbiBleGlzdGluZyBtdWx0aXNpZyBvcGVyYXRpb24uAGEBVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8gYW5kIG11c3QgYmUgdGhlIG9yaWdpbmFsIGRlcG9zaXRvciBvZlx0aGUgbXVsdGlzaWcgb3BlcmF0aW9uLgABAVRoZSB0cmFuc2FjdGlvbiBmZWUgaXMgd2FpdmVkIGlmIHRoZSBkZXBvc2l0IGFtb3VudCBoYXMgY2hhbmdlZC4AGQEtIGB0aHJlc2hvbGRgOiBUaGUgdG90YWwgbnVtYmVyIG9mIGFwcHJvdmFscyBuZWVkZWQgZm9yIHRoaXMgbXVsdGlzaWcuPQEtIGBvdGhlcl9zaWduYXRvcmllc2A6IFRoZSBhY2NvdW50cyAob3RoZXIgdGhhbiB0aGUgc2VuZGVyKSB3aG8gYXJlIHBhcnQgb2YgdGhlLCAgbXVsdGlzaWcuBQEtIGBjYWxsX2hhc2hgOiBUaGUgaGFzaCBvZiB0aGUgY2FsbCB0aGlzIGRlcG9zaXQgaXMgcmVzZXJ2ZWQgZm9yLgCMRW1pdHMgYERlcG9zaXRQb2tlZGAgaWYgc3VjY2Vzc2Z1bC4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuLQQEGE9wdGlvbgQEVAExBAEIEE5vbmUAAAAQU29tZQQAMQQAAAEAADEECDxwYWxsZXRfbXVsdGlzaWckVGltZXBvaW50BCxCbG9ja051bWJlcgE4AAgBGGhlaWdodDgBLEJsb2NrTnVtYmVyAAEUaW5kZXg4AQx1MzIAADUEDDBwYWxsZXRfcHJveHkYcGFsbGV0EENhbGwEBFQAASwUcHJveHkMARByZWFsAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AAUBmb3JjZV9wcm94eV90eXBlOQQBUE9wdGlvbjxUOjpQcm94eVR5cGU+AAEQY2FsbCABfEJveDw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4AACRNAURpc3BhdGNoIHRoZSBnaXZlbiBgY2FsbGAgZnJvbSBhbiBhY2NvdW50IHRoYXQgdGhlIHNlbmRlciBpcyBhdXRob3Jpc2VkIGZvciB0aHJvdWdoMGBhZGRfcHJveHlgLgDMVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uACxQYXJhbWV0ZXJzOg0BLSBgcmVhbGA6IFRoZSBhY2NvdW50IHRoYXQgdGhlIHByb3h5IHdpbGwgbWFrZSBhIGNhbGwgb24gYmVoYWxmIG9mLmEBLSBgZm9yY2VfcHJveHlfdHlwZWA6IFNwZWNpZnkgdGhlIGV4YWN0IHByb3h5IHR5cGUgdG8gYmUgdXNlZCBhbmQgY2hlY2tlZCBmb3IgdGhpcyBjYWxsLtAtIGBjYWxsYDogVGhlIGNhbGwgdG8gYmUgbWFkZSBieSB0aGUgYHJlYWxgIGFjY291bnQuJGFkZF9wcm94eQwBIGRlbGVnYXRlAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AAShwcm94eV90eXBlPQQBMFQ6OlByb3h5VHlwZQABFGRlbGF5OAFEQmxvY2tOdW1iZXJGb3I8VD4AASRFAVJlZ2lzdGVyIGEgcHJveHkgYWNjb3VudCBmb3IgdGhlIHNlbmRlciB0aGF0IGlzIGFibGUgdG8gbWFrZSBjYWxscyBvbiBpdHMgYmVoYWxmLgDMVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uACxQYXJhbWV0ZXJzOhEBLSBgcHJveHlgOiBUaGUgYWNjb3VudCB0aGF0IHRoZSBgY2FsbGVyYCB3b3VsZCBsaWtlIHRvIG1ha2UgYSBwcm94eS78LSBgcHJveHlfdHlwZWA6IFRoZSBwZXJtaXNzaW9ucyBhbGxvd2VkIGZvciB0aGlzIHByb3h5IGFjY291bnQuTQEtIGBkZWxheWA6IFRoZSBhbm5vdW5jZW1lbnQgcGVyaW9kIHJlcXVpcmVkIG9mIHRoZSBpbml0aWFsIHByb3h5LiBXaWxsIGdlbmVyYWxseSBiZRR6ZXJvLjByZW1vdmVfcHJveHkMASBkZWxlZ2F0ZQABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEocHJveHlfdHlwZT0EATBUOjpQcm94eVR5cGUAARRkZWxheTgBREJsb2NrTnVtYmVyRm9yPFQ+AAIcqFVucmVnaXN0ZXIgYSBwcm94eSBhY2NvdW50IGZvciB0aGUgc2VuZGVyLgDMVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uACxQYXJhbWV0ZXJzOiUBLSBgcHJveHlgOiBUaGUgYWNjb3VudCB0aGF0IHRoZSBgY2FsbGVyYCB3b3VsZCBsaWtlIHRvIHJlbW92ZSBhcyBhIHByb3h5LkEBLSBgcHJveHlfdHlwZWA6IFRoZSBwZXJtaXNzaW9ucyBjdXJyZW50bHkgZW5hYmxlZCBmb3IgdGhlIHJlbW92ZWQgcHJveHkgYWNjb3VudC44cmVtb3ZlX3Byb3hpZXMAAxi0VW5yZWdpc3RlciBhbGwgcHJveHkgYWNjb3VudHMgZm9yIHRoZSBzZW5kZXIuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4AXQFXQVJOSU5HOiBUaGlzIG1heSBiZSBjYWxsZWQgb24gYWNjb3VudHMgY3JlYXRlZCBieSBgY3JlYXRlX3B1cmVgLCBob3dldmVyIGlmIGRvbmUsIHRoZW5ZAXRoZSB1bnJlc2VydmVkIGZlZXMgd2lsbCBiZSBpbmFjY2Vzc2libGUuICoqQWxsIGFjY2VzcyB0byB0aGlzIGFjY291bnQgd2lsbCBiZSBsb3N0LioqLGNyZWF0ZV9wdXJlDAEocHJveHlfdHlwZT0EATBUOjpQcm94eVR5cGUAARRkZWxheTgBREJsb2NrTnVtYmVyRm9yPFQ+AAEUaW5kZXjtAwEMdTE2AARIOQFTcGF3biBhIGZyZXNoIG5ldyBhY2NvdW50IHRoYXQgaXMgZ3VhcmFudGVlZCB0byBiZSBvdGhlcndpc2UgaW5hY2Nlc3NpYmxlLCBhbmT8aW5pdGlhbGl6ZSBpdCB3aXRoIGEgcHJveHkgb2YgYHByb3h5X3R5cGVgIGZvciBgb3JpZ2luYCBzZW5kZXIuAGxSZXF1aXJlcyBhIGBTaWduZWRgIG9yaWdpbi4AUQEtIGBwcm94eV90eXBlYDogVGhlIHR5cGUgb2YgdGhlIHByb3h5IHRoYXQgdGhlIHNlbmRlciB3aWxsIGJlIHJlZ2lzdGVyZWQgYXMgb3ZlciB0aGVNAW5ldyBhY2NvdW50LiBUaGlzIHdpbGwgYWxtb3N0IGFsd2F5cyBiZSB0aGUgbW9zdCBwZXJtaXNzaXZlIGBQcm94eVR5cGVgIHBvc3NpYmxlIHRveGFsbG93IGZvciBtYXhpbXVtIGZsZXhpYmlsaXR5LlEBLSBgaW5kZXhgOiBBIGRpc2FtYmlndWF0aW9uIGluZGV4LCBpbiBjYXNlIHRoaXMgaXMgY2FsbGVkIG11bHRpcGxlIHRpbWVzIGluIHRoZSBzYW1lXQF0cmFuc2FjdGlvbiAoZS5nLiB3aXRoIGB1dGlsaXR5OjpiYXRjaGApLiBVbmxlc3MgeW91J3JlIHVzaW5nIGBiYXRjaGAgeW91IHByb2JhYmx5IGp1c3RAd2FudCB0byB1c2UgYDBgLk0BLSBgZGVsYXlgOiBUaGUgYW5ub3VuY2VtZW50IHBlcmlvZCByZXF1aXJlZCBvZiB0aGUgaW5pdGlhbCBwcm94eS4gV2lsbCBnZW5lcmFsbHkgYmUUemVyby4AUQFGYWlscyB3aXRoIGBEdXBsaWNhdGVgIGlmIHRoaXMgaGFzIGFscmVhZHkgYmVlbiBjYWxsZWQgaW4gdGhpcyB0cmFuc2FjdGlvbiwgZnJvbSB0aGWYc2FtZSBzZW5kZXIsIHdpdGggdGhlIHNhbWUgcGFyYW1ldGVycy4A5EZhaWxzIGlmIHRoZXJlIGFyZSBpbnN1ZmZpY2llbnQgZnVuZHMgdG8gcGF5IGZvciBkZXBvc2l0LiRraWxsX3B1cmUUARxzcGF3bmVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AAShwcm94eV90eXBlPQQBMFQ6OlByb3h5VHlwZQABFGluZGV47QMBDHUxNgABGGhlaWdodGQBREJsb2NrTnVtYmVyRm9yPFQ+AAEkZXh0X2luZGV4ZAEMdTMyAAVAoFJlbW92ZXMgYSBwcmV2aW91c2x5IHNwYXduZWQgcHVyZSBwcm94eS4ASQFXQVJOSU5HOiAqKkFsbCBhY2Nlc3MgdG8gdGhpcyBhY2NvdW50IHdpbGwgYmUgbG9zdC4qKiBBbnkgZnVuZHMgaGVsZCBpbiBpdCB3aWxsIGJlNGluYWNjZXNzaWJsZS4AWQFSZXF1aXJlcyBhIGBTaWduZWRgIG9yaWdpbiwgYW5kIHRoZSBzZW5kZXIgYWNjb3VudCBtdXN0IGhhdmUgYmVlbiBjcmVhdGVkIGJ5IGEgY2FsbCB0b7BgY3JlYXRlX3B1cmVgIHdpdGggY29ycmVzcG9uZGluZyBwYXJhbWV0ZXJzLgBVAS0gYHNwYXduZXJgOiBUaGUgYWNjb3VudCB0aGF0IG9yaWdpbmFsbHkgY2FsbGVkIGBjcmVhdGVfcHVyZWAgdG8gY3JlYXRlIHRoaXMgYWNjb3VudC5VAS0gYGluZGV4YDogVGhlIGRpc2FtYmlndWF0aW9uIGluZGV4IG9yaWdpbmFsbHkgcGFzc2VkIHRvIGBjcmVhdGVfcHVyZWAuIFByb2JhYmx5IGAwYC4JAS0gYHByb3h5X3R5cGVgOiBUaGUgcHJveHkgdHlwZSBvcmlnaW5hbGx5IHBhc3NlZCB0byBgY3JlYXRlX3B1cmVgLkUBLSBgaGVpZ2h0YDogVGhlIGhlaWdodCBvZiB0aGUgY2hhaW4gd2hlbiB0aGUgY2FsbCB0byBgY3JlYXRlX3B1cmVgIHdhcyBwcm9jZXNzZWQuUQEtIGBleHRfaW5kZXhgOiBUaGUgZXh0cmluc2ljIGluZGV4IGluIHdoaWNoIHRoZSBjYWxsIHRvIGBjcmVhdGVfcHVyZWAgd2FzIHByb2Nlc3NlZC4ANQFGYWlscyB3aXRoIGBOb1Blcm1pc3Npb25gIGluIGNhc2UgdGhlIGNhbGxlciBpcyBub3QgYSBwcmV2aW91c2x5IGNyZWF0ZWQgcHVyZfhhY2NvdW50IHdob3NlIGBjcmVhdGVfcHVyZWAgY2FsbCBoYXMgY29ycmVzcG9uZGluZyBwYXJhbWV0ZXJzLiBhbm5vdW5jZQgBEHJlYWwAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABJGNhbGxfaGFzaEABNENhbGxIYXNoT2Y8VD4ABjwFAVB1Ymxpc2ggdGhlIGhhc2ggb2YgYSBwcm94eS1jYWxsIHRoYXQgd2lsbCBiZSBtYWRlIGluIHRoZSBmdXR1cmUuAF0BVGhpcyBtdXN0IGJlIGNhbGxlZCBzb21lIG51bWJlciBvZiBibG9ja3MgYmVmb3JlIHRoZSBjb3JyZXNwb25kaW5nIGBwcm94eWAgaXMgYXR0ZW1wdGVkJQFpZiB0aGUgZGVsYXkgYXNzb2NpYXRlZCB3aXRoIHRoZSBwcm94eSByZWxhdGlvbnNoaXAgaXMgZ3JlYXRlciB0aGFuIHplcm8uABEBTm8gbW9yZSB0aGFuIGBNYXhQZW5kaW5nYCBhbm5vdW5jZW1lbnRzIG1heSBiZSBtYWRlIGF0IGFueSBvbmUgdGltZS4ACQFUaGlzIHdpbGwgdGFrZSBhIGRlcG9zaXQgb2YgYEFubm91bmNlbWVudERlcG9zaXRGYWN0b3JgIGFzIHdlbGwgYXMZAWBBbm5vdW5jZW1lbnREZXBvc2l0QmFzZWAgaWYgdGhlcmUgYXJlIG5vIG90aGVyIHBlbmRpbmcgYW5ub3VuY2VtZW50cy4AJQFUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXyBhbmQgYSBwcm94eSBvZiBgcmVhbGAuACxQYXJhbWV0ZXJzOg0BLSBgcmVhbGA6IFRoZSBhY2NvdW50IHRoYXQgdGhlIHByb3h5IHdpbGwgbWFrZSBhIGNhbGwgb24gYmVoYWxmIG9mLhUBLSBgY2FsbF9oYXNoYDogVGhlIGhhc2ggb2YgdGhlIGNhbGwgdG8gYmUgbWFkZSBieSB0aGUgYHJlYWxgIGFjY291bnQuTHJlbW92ZV9hbm5vdW5jZW1lbnQIARByZWFsAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AASRjYWxsX2hhc2hAATRDYWxsSGFzaE9mPFQ+AAcocFJlbW92ZSBhIGdpdmVuIGFubm91bmNlbWVudC4AWQFNYXkgYmUgY2FsbGVkIGJ5IGEgcHJveHkgYWNjb3VudCB0byByZW1vdmUgYSBjYWxsIHRoZXkgcHJldmlvdXNseSBhbm5vdW5jZWQgYW5kIHJldHVybjB0aGUgZGVwb3NpdC4AzFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLgAsUGFyYW1ldGVyczoNAS0gYHJlYWxgOiBUaGUgYWNjb3VudCB0aGF0IHRoZSBwcm94eSB3aWxsIG1ha2UgYSBjYWxsIG9uIGJlaGFsZiBvZi4VAS0gYGNhbGxfaGFzaGA6IFRoZSBoYXNoIG9mIHRoZSBjYWxsIHRvIGJlIG1hZGUgYnkgdGhlIGByZWFsYCBhY2NvdW50LkxyZWplY3RfYW5ub3VuY2VtZW50CAEgZGVsZWdhdGUAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABJGNhbGxfaGFzaEABNENhbGxIYXNoT2Y8VD4ACCiwUmVtb3ZlIHRoZSBnaXZlbiBhbm5vdW5jZW1lbnQgb2YgYSBkZWxlZ2F0ZS4AYQFNYXkgYmUgY2FsbGVkIGJ5IGEgdGFyZ2V0IChwcm94aWVkKSBhY2NvdW50IHRvIHJlbW92ZSBhIGNhbGwgdGhhdCBvbmUgb2YgdGhlaXIgZGVsZWdhdGVzJQEoYGRlbGVnYXRlYCkgaGFzIGFubm91bmNlZCB0aGV5IHdhbnQgdG8gZXhlY3V0ZS4gVGhlIGRlcG9zaXQgaXMgcmV0dXJuZWQuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4ALFBhcmFtZXRlcnM69C0gYGRlbGVnYXRlYDogVGhlIGFjY291bnQgdGhhdCBwcmV2aW91c2x5IGFubm91bmNlZCB0aGUgY2FsbC68LSBgY2FsbF9oYXNoYDogVGhlIGhhc2ggb2YgdGhlIGNhbGwgdG8gYmUgbWFkZS48cHJveHlfYW5ub3VuY2VkEAEgZGVsZWdhdGUAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABEHJlYWwAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABQGZvcmNlX3Byb3h5X3R5cGU5BAFQT3B0aW9uPFQ6OlByb3h5VHlwZT4AARBjYWxsIAF8Qm94PDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgAJLE0BRGlzcGF0Y2ggdGhlIGdpdmVuIGBjYWxsYCBmcm9tIGFuIGFjY291bnQgdGhhdCB0aGUgc2VuZGVyIGlzIGF1dGhvcml6ZWQgZm9yIHRocm91Z2gwYGFkZF9wcm94eWAuAKhSZW1vdmVzIGFueSBjb3JyZXNwb25kaW5nIGFubm91bmNlbWVudChzKS4AzFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLgAsUGFyYW1ldGVyczoNAS0gYHJlYWxgOiBUaGUgYWNjb3VudCB0aGF0IHRoZSBwcm94eSB3aWxsIG1ha2UgYSBjYWxsIG9uIGJlaGFsZiBvZi5hAS0gYGZvcmNlX3Byb3h5X3R5cGVgOiBTcGVjaWZ5IHRoZSBleGFjdCBwcm94eSB0eXBlIHRvIGJlIHVzZWQgYW5kIGNoZWNrZWQgZm9yIHRoaXMgY2FsbC7QLSBgY2FsbGA6IFRoZSBjYWxsIHRvIGJlIG1hZGUgYnkgdGhlIGByZWFsYCBhY2NvdW50LjBwb2tlX2RlcG9zaXQACiBJAVBva2UgLyBBZGp1c3QgZGVwb3NpdHMgbWFkZSBmb3IgcHJveGllcyBhbmQgYW5ub3VuY2VtZW50cyBiYXNlZCBvbiBjdXJyZW50IHZhbHVlcy4NAVRoaXMgY2FuIGJlIHVzZWQgYnkgYWNjb3VudHMgdG8gcG9zc2libHkgbG93ZXIgdGhlaXIgbG9ja2VkIGFtb3VudC4AzFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLgABAVRoZSB0cmFuc2FjdGlvbiBmZWUgaXMgd2FpdmVkIGlmIHRoZSBkZXBvc2l0IGFtb3VudCBoYXMgY2hhbmdlZC4AjEVtaXRzIGBEZXBvc2l0UG9rZWRgIGlmIHN1Y2Nlc3NmdWwuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLjkEBBhPcHRpb24EBFQBPQQBCBBOb25lAAAAEFNvbWUEAD0EAAABAAA9BAhcYXNzZXRfaHViX3Bhc2VvX3J1bnRpbWUkUHJveHlUeXBlAAE4DEFueQAAACxOb25UcmFuc2ZlcgABACxDYW5jZWxQcm94eQACABhBc3NldHMAAwAoQXNzZXRPd25lcgAEADBBc3NldE1hbmFnZXIABQAgQ29sbGF0b3IABgAoR292ZXJuYW5jZQAHABxTdGFraW5nAAgAPE5vbWluYXRpb25Qb29scwAJABxBdWN0aW9uAAoAQFBhcmFSZWdpc3RyYXRpb24ACwA8U3Rha2luZ09wZXJhdG9yAAwAIFNhZmVTdWRvAGQAAEEEDDhwYWxsZXRfaW5kaWNlcxhwYWxsZXQQQ2FsbAQEVAABGBRjbGFpbQQBFGluZGV4OAE8VDo6QWNjb3VudEluZGV4AAAwmEFzc2lnbiBhbiBwcmV2aW91c2x5IHVuYXNzaWduZWQgaW5kZXguANxQYXltZW50OiBgRGVwb3NpdGAgaXMgcmVzZXJ2ZWQgZnJvbSB0aGUgc2VuZGVyIGFjY291bnQuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4A8C0gYGluZGV4YDogdGhlIGluZGV4IHRvIGJlIGNsYWltZWQuIFRoaXMgbXVzdCBub3QgYmUgaW4gdXNlLgCQRW1pdHMgYEluZGV4QXNzaWduZWRgIGlmIHN1Y2Nlc3NmdWwuADQjIyBDb21wbGV4aXR5JC0gYE8oMSlgLiB0cmFuc2ZlcggBDG5ldwABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEUaW5kZXg4ATxUOjpBY2NvdW50SW5kZXgAATBdAUFzc2lnbiBhbiBpbmRleCBhbHJlYWR5IG93bmVkIGJ5IHRoZSBzZW5kZXIgdG8gYW5vdGhlciBhY2NvdW50LiBUaGUgYmFsYW5jZSByZXNlcnZhdGlvbrhpcyBlZmZlY3RpdmVseSB0cmFuc2ZlcnJlZCB0byB0aGUgbmV3IGFjY291bnQuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4AJQEtIGBpbmRleGA6IHRoZSBpbmRleCB0byBiZSByZS1hc3NpZ25lZC4gVGhpcyBtdXN0IGJlIG93bmVkIGJ5IHRoZSBzZW5kZXIuXQEtIGBuZXdgOiB0aGUgbmV3IG93bmVyIG9mIHRoZSBpbmRleC4gVGhpcyBmdW5jdGlvbiBpcyBhIG5vLW9wIGlmIGl0IGlzIGVxdWFsIHRvIHNlbmRlci4AkEVtaXRzIGBJbmRleEFzc2lnbmVkYCBpZiBzdWNjZXNzZnVsLgA0IyMgQ29tcGxleGl0eSQtIGBPKDEpYC4QZnJlZQQBFGluZGV4OAE8VDo6QWNjb3VudEluZGV4AAIwlEZyZWUgdXAgYW4gaW5kZXggb3duZWQgYnkgdGhlIHNlbmRlci4AXQFQYXltZW50OiBBbnkgcHJldmlvdXMgZGVwb3NpdCBwbGFjZWQgZm9yIHRoZSBpbmRleCBpcyB1bnJlc2VydmVkIGluIHRoZSBzZW5kZXIgYWNjb3VudC4AVQFUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXyBhbmQgdGhlIHNlbmRlciBtdXN0IG93biB0aGUgaW5kZXguAA0BLSBgaW5kZXhgOiB0aGUgaW5kZXggdG8gYmUgZnJlZWQuIFRoaXMgbXVzdCBiZSBvd25lZCBieSB0aGUgc2VuZGVyLgCERW1pdHMgYEluZGV4RnJlZWRgIGlmIHN1Y2Nlc3NmdWwuADQjIyBDb21wbGV4aXR5JC0gYE8oMSlgLjhmb3JjZV90cmFuc2ZlcgwBDG5ldwABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEUaW5kZXg4ATxUOjpBY2NvdW50SW5kZXgAARhmcmVlemVdAQEQYm9vbAADNFUBRm9yY2UgYW4gaW5kZXggdG8gYW4gYWNjb3VudC4gVGhpcyBkb2Vzbid0IHJlcXVpcmUgYSBkZXBvc2l0LiBJZiB0aGUgaW5kZXggaXMgYWxyZWFkeehoZWxkLCB0aGVuIGFueSBkZXBvc2l0IGlzIHJlaW1idXJzZWQgdG8gaXRzIGN1cnJlbnQgb3duZXIuAMRUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfUm9vdF8uAKQtIGBpbmRleGA6IHRoZSBpbmRleCB0byBiZSAocmUtKWFzc2lnbmVkLl0BLSBgbmV3YDogdGhlIG5ldyBvd25lciBvZiB0aGUgaW5kZXguIFRoaXMgZnVuY3Rpb24gaXMgYSBuby1vcCBpZiBpdCBpcyBlcXVhbCB0byBzZW5kZXIuQQEtIGBmcmVlemVgOiBpZiBzZXQgdG8gYHRydWVgLCB3aWxsIGZyZWV6ZSB0aGUgaW5kZXggc28gaXQgY2Fubm90IGJlIHRyYW5zZmVycmVkLgCQRW1pdHMgYEluZGV4QXNzaWduZWRgIGlmIHN1Y2Nlc3NmdWwuADQjIyBDb21wbGV4aXR5JC0gYE8oMSlgLhhmcmVlemUEARRpbmRleDgBPFQ6OkFjY291bnRJbmRleAAEMEEBRnJlZXplIGFuIGluZGV4IHNvIGl0IHdpbGwgYWx3YXlzIHBvaW50IHRvIHRoZSBzZW5kZXIgYWNjb3VudC4gVGhpcyBjb25zdW1lcyB0aGUgZGVwb3NpdC4AWQFUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXyBhbmQgdGhlIHNpZ25pbmcgYWNjb3VudCBtdXN0IGhhdmUgYWxub24tZnJvemVuIGFjY291bnQgYGluZGV4YC4ArC0gYGluZGV4YDogdGhlIGluZGV4IHRvIGJlIGZyb3plbiBpbiBwbGFjZS4AiEVtaXRzIGBJbmRleEZyb3plbmAgaWYgc3VjY2Vzc2Z1bC4ANCMjIENvbXBsZXhpdHkkLSBgTygxKWAuMHBva2VfZGVwb3NpdAQBFGluZGV4OAE8VDo6QWNjb3VudEluZGV4AAUonFBva2UgdGhlIGRlcG9zaXQgcmVzZXJ2ZWQgZm9yIGFuIGluZGV4LgBZAVRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfIGFuZCB0aGUgc2lnbmluZyBhY2NvdW50IG11c3QgaGF2ZSBhbG5vbi1mcm96ZW4gYWNjb3VudCBgaW5kZXhgLgBZAVRoZSB0cmFuc2FjdGlvbiBmZWVzIGlzIHdhaXZlZCBpZiB0aGUgZGVwb3NpdCBpcyBjaGFuZ2VkIGFmdGVyIHBva2luZy9yZWNvbnNpZGVyYXRpb24uAPwtIGBpbmRleGA6IHRoZSBpbmRleCB3aG9zZSBkZXBvc2l0IGlzIHRvIGJlIHBva2VkL3JlY29uc2lkZXJlZC4AjEVtaXRzIGBEZXBvc2l0UG9rZWRgIGlmIHN1Y2Nlc3NmdWwuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLkUEDDRwYWxsZXRfYXNzZXRzGHBhbGxldBBDYWxsCARUAARJAAGIGGNyZWF0ZQwBCGlkZAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABFGFkbWluAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AASxtaW5fYmFsYW5jZVkBAShUOjpCYWxhbmNlAABM6Elzc3VlIGEgbmV3IGNsYXNzIG9mIGZ1bmdpYmxlIGFzc2V0cyBmcm9tIGEgcHVibGljIG9yaWdpbi4AJQFUaGlzIG5ldyBhc3NldCBjbGFzcyBoYXMgbm8gYXNzZXRzIGluaXRpYWxseSBhbmQgaXRzIG93bmVyIGlzIHRoZSBvcmlnaW4uAGEBVGhlIG9yaWdpbiBtdXN0IGNvbmZvcm0gdG8gdGhlIGNvbmZpZ3VyZWQgYENyZWF0ZU9yaWdpbmAgYW5kIGhhdmUgc3VmZmljaWVudCBmdW5kcyBmcmVlLgC8RnVuZHMgb2Ygc2VuZGVyIGFyZSByZXNlcnZlZCBieSBgQXNzZXREZXBvc2l0YC4ALFBhcmFtZXRlcnM6WQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBuZXcgYXNzZXQuIFRoaXMgbXVzdCBub3QgYmUgY3VycmVudGx5IGluIHVzZSB0byBpZGVudGlmeTEBYW4gZXhpc3RpbmcgYXNzZXQuIElmIFtgTmV4dEFzc2V0SWRgXSBpcyBzZXQsIHRoZW4gdGhpcyBtdXN0IGJlIGVxdWFsIHRvIGl0LlkBLSBgYWRtaW5gOiBUaGUgYWRtaW4gb2YgdGhpcyBjbGFzcyBvZiBhc3NldHMuIFRoZSBhZG1pbiBpcyB0aGUgaW5pdGlhbCBhZGRyZXNzIG9mIGVhY2icbWVtYmVyIG9mIHRoZSBhc3NldCBjbGFzcydzIGFkbWluIHRlYW0uTQEtIGBtaW5fYmFsYW5jZWA6IFRoZSBtaW5pbXVtIGJhbGFuY2Ugb2YgdGhpcyBuZXcgYXNzZXQgdGhhdCBhbnkgc2luZ2xlIGFjY291bnQgbXVzdD0BaGF2ZS4gSWYgYW4gYWNjb3VudCdzIGJhbGFuY2UgaXMgcmVkdWNlZCBiZWxvdyB0aGlzLCB0aGVuIGl0IGNvbGxhcHNlcyB0byB6ZXJvLgCYRW1pdHMgYENyZWF0ZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4AOFdlaWdodDogYE8oMSlgMGZvcmNlX2NyZWF0ZRABCGlkZAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABFG93bmVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AATRpc19zdWZmaWNpZW50XQEBEGJvb2wAASxtaW5fYmFsYW5jZVUBAShUOjpCYWxhbmNlAAFM+Elzc3VlIGEgbmV3IGNsYXNzIG9mIGZ1bmdpYmxlIGFzc2V0cyBmcm9tIGEgcHJpdmlsZWdlZCBvcmlnaW4uALRUaGlzIG5ldyBhc3NldCBjbGFzcyBoYXMgbm8gYXNzZXRzIGluaXRpYWxseS4ApFRoZSBvcmlnaW4gbXVzdCBjb25mb3JtIHRvIGBGb3JjZU9yaWdpbmAuAJxVbmxpa2UgYGNyZWF0ZWAsIG5vIGZ1bmRzIGFyZSByZXNlcnZlZC4AWQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBuZXcgYXNzZXQuIFRoaXMgbXVzdCBub3QgYmUgY3VycmVudGx5IGluIHVzZSB0byBpZGVudGlmeTEBYW4gZXhpc3RpbmcgYXNzZXQuIElmIFtgTmV4dEFzc2V0SWRgXSBpcyBzZXQsIHRoZW4gdGhpcyBtdXN0IGJlIGVxdWFsIHRvIGl0LlkBLSBgb3duZXJgOiBUaGUgb3duZXIgb2YgdGhpcyBjbGFzcyBvZiBhc3NldHMuIFRoZSBvd25lciBoYXMgZnVsbCBzdXBlcnVzZXIgcGVybWlzc2lvbnMlAW92ZXIgdGhpcyBhc3NldCwgYnV0IG1heSBsYXRlciBjaGFuZ2UgYW5kIGNvbmZpZ3VyZSB0aGUgcGVybWlzc2lvbnMgdXNpbmeQYHRyYW5zZmVyX293bmVyc2hpcGAgYW5kIGBzZXRfdGVhbWAuTQEtIGBtaW5fYmFsYW5jZWA6IFRoZSBtaW5pbXVtIGJhbGFuY2Ugb2YgdGhpcyBuZXcgYXNzZXQgdGhhdCBhbnkgc2luZ2xlIGFjY291bnQgbXVzdD0BaGF2ZS4gSWYgYW4gYWNjb3VudCdzIGJhbGFuY2UgaXMgcmVkdWNlZCBiZWxvdyB0aGlzLCB0aGVuIGl0IGNvbGxhcHNlcyB0byB6ZXJvLgCsRW1pdHMgYEZvcmNlQ3JlYXRlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLgA4V2VpZ2h0OiBgTygxKWA0c3RhcnRfZGVzdHJveQQBCGlkZAFMVDo6QXNzZXRJZFBhcmFtZXRlcgACMNxTdGFydCB0aGUgcHJvY2VzcyBvZiBkZXN0cm95aW5nIGEgZnVuZ2libGUgYXNzZXQgY2xhc3MuAFkBYHN0YXJ0X2Rlc3Ryb3lgIGlzIHRoZSBmaXJzdCBpbiBhIHNlcmllcyBvZiBleHRyaW5zaWNzIHRoYXQgc2hvdWxkIGJlIGNhbGxlZCwgdG8gYWxsb3d4ZGVzdHJ1Y3Rpb24gb2YgYW4gYXNzZXQgY2xhc3MuAFEBVGhlIG9yaWdpbiBtdXN0IGNvbmZvcm0gdG8gYEZvcmNlT3JpZ2luYCBvciBtdXN0IGJlIGBTaWduZWRgIGJ5IHRoZSBhc3NldCdzIGBvd25lcmAuAE0BLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgZGVzdHJveWVkLiBUaGlzIG11c3QgaWRlbnRpZnkgYW4gZXhpc3RpbmcgICBhc3NldC4ASQFJdCB3aWxsIGZhaWwgd2l0aCBlaXRoZXIgW2BFcnJvcjo6Q29udGFpbnNIb2xkc2BdIG9yIFtgRXJyb3I6OkNvbnRhaW5zRnJlZXplc2BdIGlmuGFuIGFjY291bnQgY29udGFpbnMgaG9sZHMgb3IgZnJlZXplcyBpbiBwbGFjZS5AZGVzdHJveV9hY2NvdW50cwQBCGlkZAFMVDo6QXNzZXRJZFBhcmFtZXRlcgADMMxEZXN0cm95IGFsbCBhY2NvdW50cyBhc3NvY2lhdGVkIHdpdGggYSBnaXZlbiBhc3NldC4AXQFgZGVzdHJveV9hY2NvdW50c2Agc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGFmdGVyIGBzdGFydF9kZXN0cm95YCBoYXMgYmVlbiBjYWxsZWQsIGFuZCB0aGWEYXNzZXQgaXMgaW4gYSBgRGVzdHJveWluZ2Agc3RhdGUuAF0BRHVlIHRvIHdlaWdodCByZXN0cmljdGlvbnMsIHRoaXMgZnVuY3Rpb24gbWF5IG5lZWQgdG8gYmUgY2FsbGVkIG11bHRpcGxlIHRpbWVzIHRvIGZ1bGx5MQFkZXN0cm95IGFsbCBhY2NvdW50cy4gSXQgd2lsbCBkZXN0cm95IGBSZW1vdmVJdGVtc0xpbWl0YCBhY2NvdW50cyBhdCBhIHRpbWUuAE0BLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgZGVzdHJveWVkLiBUaGlzIG11c3QgaWRlbnRpZnkgYW4gZXhpc3RpbmcgICBhc3NldC4A1EVhY2ggY2FsbCBlbWl0cyB0aGUgYEV2ZW50OjpEZXN0cm95ZWRBY2NvdW50c2AgZXZlbnQuRGRlc3Ryb3lfYXBwcm92YWxzBAEIaWRkAUxUOjpBc3NldElkUGFyYW1ldGVyAAQwYQFEZXN0cm95IGFsbCBhcHByb3ZhbHMgYXNzb2NpYXRlZCB3aXRoIGEgZ2l2ZW4gYXNzZXQgdXAgdG8gdGhlIG1heCAoVDo6UmVtb3ZlSXRlbXNMaW1pdCkuAGEBYGRlc3Ryb3lfYXBwcm92YWxzYCBzaG91bGQgb25seSBiZSBjYWxsZWQgYWZ0ZXIgYHN0YXJ0X2Rlc3Ryb3lgIGhhcyBiZWVuIGNhbGxlZCwgYW5kIHRoZYRhc3NldCBpcyBpbiBhIGBEZXN0cm95aW5nYCBzdGF0ZS4AXQFEdWUgdG8gd2VpZ2h0IHJlc3RyaWN0aW9ucywgdGhpcyBmdW5jdGlvbiBtYXkgbmVlZCB0byBiZSBjYWxsZWQgbXVsdGlwbGUgdGltZXMgdG8gZnVsbHk5AWRlc3Ryb3kgYWxsIGFwcHJvdmFscy4gSXQgd2lsbCBkZXN0cm95IGBSZW1vdmVJdGVtc0xpbWl0YCBhcHByb3ZhbHMgYXQgYSB0aW1lLgBNAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIGRlc3Ryb3llZC4gVGhpcyBtdXN0IGlkZW50aWZ5IGFuIGV4aXN0aW5nICAgYXNzZXQuANhFYWNoIGNhbGwgZW1pdHMgdGhlIGBFdmVudDo6RGVzdHJveWVkQXBwcm92YWxzYCBldmVudC44ZmluaXNoX2Rlc3Ryb3kEAQhpZGQBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIABSjEQ29tcGxldGUgZGVzdHJveWluZyBhc3NldCBhbmQgdW5yZXNlcnZlIGN1cnJlbmN5LgBVAWBmaW5pc2hfZGVzdHJveWAgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGFmdGVyIGBzdGFydF9kZXN0cm95YCBoYXMgYmVlbiBjYWxsZWQsIGFuZCB0aGVZAWFzc2V0IGlzIGluIGEgYERlc3Ryb3lpbmdgIHN0YXRlLiBBbGwgYWNjb3VudHMgb3IgYXBwcm92YWxzIHNob3VsZCBiZSBkZXN0cm95ZWQgYmVmb3JlFGhhbmQuAE0BLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgZGVzdHJveWVkLiBUaGlzIG11c3QgaWRlbnRpZnkgYW4gZXhpc3RpbmcgICBhc3NldC4A4EVhY2ggc3VjY2Vzc2Z1bCBjYWxsIGVtaXRzIHRoZSBgRXZlbnQ6OkRlc3Ryb3llZGAgZXZlbnQuEG1pbnQMAQhpZGQBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAASxiZW5lZmljaWFyeQABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYYW1vdW50VQEBKFQ6OkJhbGFuY2UABjCITWludCBhc3NldHMgb2YgYSBwYXJ0aWN1bGFyIGNsYXNzLgA5AVRoZSBvcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgbXVzdCBiZSB0aGUgSXNzdWVyIG9mIHRoZSBhc3NldCBgaWRgLgD8LSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gaGF2ZSBzb21lIGFtb3VudCBtaW50ZWQuDQEtIGBiZW5lZmljaWFyeWA6IFRoZSBhY2NvdW50IHRvIGJlIGNyZWRpdGVkIHdpdGggdGhlIG1pbnRlZCBhc3NldHMuxC0gYGFtb3VudGA6IFRoZSBhbW91bnQgb2YgdGhlIGFzc2V0IHRvIGJlIG1pbnRlZC4AlEVtaXRzIGBJc3N1ZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4AOFdlaWdodDogYE8oMSlgVQFNb2RlczogUHJlLWV4aXN0aW5nIGJhbGFuY2Ugb2YgYGJlbmVmaWNpYXJ5YDsgQWNjb3VudCBwcmUtZXhpc3RlbmNlIG9mIGBiZW5lZmljaWFyeWAuEGJ1cm4MAQhpZGQBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAAQx3aG8AAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGFtb3VudFUBAShUOjpCYWxhbmNlAAc8RQFSZWR1Y2UgdGhlIGJhbGFuY2Ugb2YgYHdob2AgYnkgYXMgbXVjaCBhcyBwb3NzaWJsZSB1cCB0byBgYW1vdW50YCBhc3NldHMgb2YgYGlkYC4ANQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBNYW5hZ2VyIG9mIHRoZSBhc3NldCBgaWRgLgDQQmFpbHMgd2l0aCBgTm9BY2NvdW50YCBpZiB0aGUgYHdob2AgaXMgYWxyZWFkeSBkZWFkLgD8LSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gaGF2ZSBzb21lIGFtb3VudCBidXJuZWQuoC0gYHdob2A6IFRoZSBhY2NvdW50IHRvIGJlIGRlYml0ZWQgZnJvbS4pAS0gYGFtb3VudGA6IFRoZSBtYXhpbXVtIGFtb3VudCBieSB3aGljaCBgd2hvYCdzIGJhbGFuY2Ugc2hvdWxkIGJlIHJlZHVjZWQuAFEBRW1pdHMgYEJ1cm5lZGAgd2l0aCB0aGUgYWN0dWFsIGFtb3VudCBidXJuZWQuIElmIHRoaXMgdGFrZXMgdGhlIGJhbGFuY2UgdG8gYmVsb3cgdGhlOQFtaW5pbXVtIGZvciB0aGUgYXNzZXQsIHRoZW4gdGhlIGFtb3VudCBidXJuZWQgaXMgaW5jcmVhc2VkIHRvIHRha2UgaXQgdG8gemVyby4AOFdlaWdodDogYE8oMSlgCQFNb2RlczogUG9zdC1leGlzdGVuY2Ugb2YgYHdob2A7IFByZSAmIHBvc3QgWm9tYmllLXN0YXR1cyBvZiBgd2hvYC4gdHJhbnNmZXIMAQhpZGQBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARh0YXJnZXQAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGFtb3VudFUBAShUOjpCYWxhbmNlAAhI0E1vdmUgc29tZSBhc3NldHMgZnJvbSB0aGUgc2VuZGVyIGFjY291bnQgdG8gYW5vdGhlci4AWE9yaWdpbiBtdXN0IGJlIFNpZ25lZC4AEQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBoYXZlIHNvbWUgYW1vdW50IHRyYW5zZmVycmVkLpwtIGB0YXJnZXRgOiBUaGUgYWNjb3VudCB0byBiZSBjcmVkaXRlZC5RAS0gYGFtb3VudGA6IFRoZSBhbW91bnQgYnkgd2hpY2ggdGhlIHNlbmRlcidzIGJhbGFuY2Ugb2YgYXNzZXRzIHNob3VsZCBiZSByZWR1Y2VkIGFuZGEBYHRhcmdldGAncyBiYWxhbmNlIGluY3JlYXNlZC4gVGhlIGFtb3VudCBhY3R1YWxseSB0cmFuc2ZlcnJlZCBtYXkgYmUgc2xpZ2h0bHkgZ3JlYXRlciBpbl0BdGhlIGNhc2UgdGhhdCB0aGUgdHJhbnNmZXIgd291bGQgb3RoZXJ3aXNlIHRha2UgdGhlIHNlbmRlciBiYWxhbmNlIGFib3ZlIHplcm8gYnV0IGJlbG93vHRoZSBtaW5pbXVtIGJhbGFuY2UuIE11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8uAGEBRW1pdHMgYFRyYW5zZmVycmVkYCB3aXRoIHRoZSBhY3R1YWwgYW1vdW50IHRyYW5zZmVycmVkLiBJZiB0aGlzIHRha2VzIHRoZSBzb3VyY2UgYmFsYW5jZV0BdG8gYmVsb3cgdGhlIG1pbmltdW0gZm9yIHRoZSBhc3NldCwgdGhlbiB0aGUgYW1vdW50IHRyYW5zZmVycmVkIGlzIGluY3JlYXNlZCB0byB0YWtlIGl0IHRvIHplcm8uADhXZWlnaHQ6IGBPKDEpYFEBTW9kZXM6IFByZS1leGlzdGVuY2Ugb2YgYHRhcmdldGA7IFBvc3QtZXhpc3RlbmNlIG9mIHNlbmRlcjsgQWNjb3VudCBwcmUtZXhpc3RlbmNlIG9mJGB0YXJnZXRgLkx0cmFuc2Zlcl9rZWVwX2FsaXZlDAEIaWRkAUxUOjpBc3NldElkUGFyYW1ldGVyAAEYdGFyZ2V0AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARhhbW91bnRVAQEoVDo6QmFsYW5jZQAJSFkBTW92ZSBzb21lIGFzc2V0cyBmcm9tIHRoZSBzZW5kZXIgYWNjb3VudCB0byBhbm90aGVyLCBrZWVwaW5nIHRoZSBzZW5kZXIgYWNjb3VudCBhbGl2ZS4AWE9yaWdpbiBtdXN0IGJlIFNpZ25lZC4AEQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBoYXZlIHNvbWUgYW1vdW50IHRyYW5zZmVycmVkLpwtIGB0YXJnZXRgOiBUaGUgYWNjb3VudCB0byBiZSBjcmVkaXRlZC5RAS0gYGFtb3VudGA6IFRoZSBhbW91bnQgYnkgd2hpY2ggdGhlIHNlbmRlcidzIGJhbGFuY2Ugb2YgYXNzZXRzIHNob3VsZCBiZSByZWR1Y2VkIGFuZGEBYHRhcmdldGAncyBiYWxhbmNlIGluY3JlYXNlZC4gVGhlIGFtb3VudCBhY3R1YWxseSB0cmFuc2ZlcnJlZCBtYXkgYmUgc2xpZ2h0bHkgZ3JlYXRlciBpbl0BdGhlIGNhc2UgdGhhdCB0aGUgdHJhbnNmZXIgd291bGQgb3RoZXJ3aXNlIHRha2UgdGhlIHNlbmRlciBiYWxhbmNlIGFib3ZlIHplcm8gYnV0IGJlbG93vHRoZSBtaW5pbXVtIGJhbGFuY2UuIE11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8uAGEBRW1pdHMgYFRyYW5zZmVycmVkYCB3aXRoIHRoZSBhY3R1YWwgYW1vdW50IHRyYW5zZmVycmVkLiBJZiB0aGlzIHRha2VzIHRoZSBzb3VyY2UgYmFsYW5jZV0BdG8gYmVsb3cgdGhlIG1pbmltdW0gZm9yIHRoZSBhc3NldCwgdGhlbiB0aGUgYW1vdW50IHRyYW5zZmVycmVkIGlzIGluY3JlYXNlZCB0byB0YWtlIGl0IHRvIHplcm8uADhXZWlnaHQ6IGBPKDEpYFEBTW9kZXM6IFByZS1leGlzdGVuY2Ugb2YgYHRhcmdldGA7IFBvc3QtZXhpc3RlbmNlIG9mIHNlbmRlcjsgQWNjb3VudCBwcmUtZXhpc3RlbmNlIG9mJGB0YXJnZXRgLjhmb3JjZV90cmFuc2ZlchABCGlkZAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABGHNvdXJjZQABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEQZGVzdAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYYW1vdW50VQEBKFQ6OkJhbGFuY2UACky0TW92ZSBzb21lIGFzc2V0cyBmcm9tIG9uZSBhY2NvdW50IHRvIGFub3RoZXIuAC0BT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgQWRtaW4gb2YgdGhlIGFzc2V0IGBpZGAuABEBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gaGF2ZSBzb21lIGFtb3VudCB0cmFuc2ZlcnJlZC6YLSBgc291cmNlYDogVGhlIGFjY291bnQgdG8gYmUgZGViaXRlZC6ULSBgZGVzdGA6IFRoZSBhY2NvdW50IHRvIGJlIGNyZWRpdGVkLlkBLSBgYW1vdW50YDogVGhlIGFtb3VudCBieSB3aGljaCB0aGUgYHNvdXJjZWAncyBiYWxhbmNlIG9mIGFzc2V0cyBzaG91bGQgYmUgcmVkdWNlZCBhbmRZAWBkZXN0YCdzIGJhbGFuY2UgaW5jcmVhc2VkLiBUaGUgYW1vdW50IGFjdHVhbGx5IHRyYW5zZmVycmVkIG1heSBiZSBzbGlnaHRseSBncmVhdGVyIGluTQF0aGUgY2FzZSB0aGF0IHRoZSB0cmFuc2ZlciB3b3VsZCBvdGhlcndpc2UgdGFrZSB0aGUgYHNvdXJjZWAgYmFsYW5jZSBhYm92ZSB6ZXJvIGJ1dNRiZWxvdyB0aGUgbWluaW11bSBiYWxhbmNlLiBNdXN0IGJlIGdyZWF0ZXIgdGhhbiB6ZXJvLgBhAUVtaXRzIGBUcmFuc2ZlcnJlZGAgd2l0aCB0aGUgYWN0dWFsIGFtb3VudCB0cmFuc2ZlcnJlZC4gSWYgdGhpcyB0YWtlcyB0aGUgc291cmNlIGJhbGFuY2VdAXRvIGJlbG93IHRoZSBtaW5pbXVtIGZvciB0aGUgYXNzZXQsIHRoZW4gdGhlIGFtb3VudCB0cmFuc2ZlcnJlZCBpcyBpbmNyZWFzZWQgdG8gdGFrZSBpdCB0byB6ZXJvLgA4V2VpZ2h0OiBgTygxKWBRAU1vZGVzOiBQcmUtZXhpc3RlbmNlIG9mIGBkZXN0YDsgUG9zdC1leGlzdGVuY2Ugb2YgYHNvdXJjZWA7IEFjY291bnQgcHJlLWV4aXN0ZW5jZSBvZhxgZGVzdGAuGGZyZWV6ZQgBCGlkZAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABDHdobwABUEFjY291bnRJZExvb2t1cE9mPFQ+AAswVQFEaXNhbGxvdyBmdXJ0aGVyIHVucHJpdmlsZWdlZCB0cmFuc2ZlcnMgb2YgYW4gYXNzZXQgYGlkYCBmcm9tIGFuIGFjY291bnQgYHdob2AuIGB3aG9gTQFtdXN0IGFscmVhZHkgZXhpc3QgYXMgYW4gZW50cnkgaW4gYEFjY291bnRgcyBvZiB0aGUgYXNzZXQuIElmIHlvdSB3YW50IHRvIGZyZWV6ZSBhbvRhY2NvdW50IHRoYXQgZG9lcyBub3QgaGF2ZSBhbiBlbnRyeSwgdXNlIGB0b3VjaF9vdGhlcmAgZmlyc3QuADUBT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgRnJlZXplciBvZiB0aGUgYXNzZXQgYGlkYC4AxC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIGZyb3plbi6ILSBgd2hvYDogVGhlIGFjY291bnQgdG8gYmUgZnJvemVuLgA8RW1pdHMgYEZyb3plbmAuADhXZWlnaHQ6IGBPKDEpYBB0aGF3CAEIaWRkAUxUOjpBc3NldElkUGFyYW1ldGVyAAEMd2hvAAFQQWNjb3VudElkTG9va3VwT2Y8VD4ADCjoQWxsb3cgdW5wcml2aWxlZ2VkIHRyYW5zZmVycyB0byBhbmQgZnJvbSBhbiBhY2NvdW50IGFnYWluLgAtAU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEFkbWluIG9mIHRoZSBhc3NldCBgaWRgLgDELSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgZnJvemVuLpAtIGB3aG9gOiBUaGUgYWNjb3VudCB0byBiZSB1bmZyb3plbi4APEVtaXRzIGBUaGF3ZWRgLgA4V2VpZ2h0OiBgTygxKWAwZnJlZXplX2Fzc2V0BAEIaWRkAUxUOjpBc3NldElkUGFyYW1ldGVyAA0k8ERpc2FsbG93IGZ1cnRoZXIgdW5wcml2aWxlZ2VkIHRyYW5zZmVycyBmb3IgdGhlIGFzc2V0IGNsYXNzLgA1AU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEZyZWV6ZXIgb2YgdGhlIGFzc2V0IGBpZGAuAMQtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBiZSBmcm96ZW4uADxFbWl0cyBgRnJvemVuYC4AOFdlaWdodDogYE8oMSlgKHRoYXdfYXNzZXQEAQhpZGQBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIADiTEQWxsb3cgdW5wcml2aWxlZ2VkIHRyYW5zZmVycyBmb3IgdGhlIGFzc2V0IGFnYWluLgAtAU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEFkbWluIG9mIHRoZSBhc3NldCBgaWRgLgDELSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgdGhhd2VkLgA8RW1pdHMgYFRoYXdlZGAuADhXZWlnaHQ6IGBPKDEpYEh0cmFuc2Zlcl9vd25lcnNoaXAIAQhpZGQBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARRvd25lcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AA8odENoYW5nZSB0aGUgT3duZXIgb2YgYW4gYXNzZXQuAC0BT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgT3duZXIgb2YgdGhlIGFzc2V0IGBpZGAuAJAtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldC6cLSBgb3duZXJgOiBUaGUgbmV3IE93bmVyIG9mIHRoaXMgYXNzZXQuAFRFbWl0cyBgT3duZXJDaGFuZ2VkYC4AOFdlaWdodDogYE8oMSlgIHNldF90ZWFtEAEIaWRkAUxUOjpBc3NldElkUGFyYW1ldGVyAAEYaXNzdWVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARRhZG1pbgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEcZnJlZXplcgABUEFjY291bnRJZExvb2t1cE9mPFQ+ABAwxENoYW5nZSB0aGUgSXNzdWVyLCBBZG1pbiBhbmQgRnJlZXplciBvZiBhbiBhc3NldC4ALQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBPd25lciBvZiB0aGUgYXNzZXQgYGlkYC4AxC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIGZyb3plbi6kLSBgaXNzdWVyYDogVGhlIG5ldyBJc3N1ZXIgb2YgdGhpcyBhc3NldC6cLSBgYWRtaW5gOiBUaGUgbmV3IEFkbWluIG9mIHRoaXMgYXNzZXQurC0gYGZyZWV6ZXJgOiBUaGUgbmV3IEZyZWV6ZXIgb2YgdGhpcyBhc3NldC4AUEVtaXRzIGBUZWFtQ2hhbmdlZGAuADhXZWlnaHQ6IGBPKDEpYDBzZXRfbWV0YWRhdGEQAQhpZGQBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARBuYW1lGAEcVmVjPHU4PgABGHN5bWJvbBgBHFZlYzx1OD4AASBkZWNpbWFscwwBCHU4ABFAeFNldCB0aGUgbWV0YWRhdGEgZm9yIGFuIGFzc2V0LgAtAU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIE93bmVyIG9mIHRoZSBhc3NldCBgaWRgLgDYRnVuZHMgb2Ygc2VuZGVyIGFyZSByZXNlcnZlZCBhY2NvcmRpbmcgdG8gdGhlIGZvcm11bGE6UQFgTWV0YWRhdGFEZXBvc2l0QmFzZSArIE1ldGFkYXRhRGVwb3NpdFBlckJ5dGUgKiAobmFtZS5sZW4gKyBzeW1ib2wubGVuKWAgdGFraW5nIGludG+MYWNjb3VudCBhbnkgYWxyZWFkeSByZXNlcnZlZCBmdW5kcy4AuC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIHVwZGF0ZS5NAS0gYG5hbWVgOiBUaGUgdXNlciBmcmllbmRseSBuYW1lIG9mIHRoaXMgYXNzZXQuIExpbWl0ZWQgaW4gbGVuZ3RoIGJ5IGBTdHJpbmdMaW1pdGAuTQEtIGBzeW1ib2xgOiBUaGUgZXhjaGFuZ2Ugc3ltYm9sIGZvciB0aGlzIGFzc2V0LiBMaW1pdGVkIGluIGxlbmd0aCBieSBgU3RyaW5nTGltaXRgLi0BLSBgZGVjaW1hbHNgOiBUaGUgbnVtYmVyIG9mIGRlY2ltYWxzIHRoaXMgYXNzZXQgdXNlcyB0byByZXByZXNlbnQgb25lIHVuaXQuAFBFbWl0cyBgTWV0YWRhdGFTZXRgLgA4V2VpZ2h0OiBgTygxKWA4Y2xlYXJfbWV0YWRhdGEEAQhpZGQBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAEiyAQ2xlYXIgdGhlIG1ldGFkYXRhIGZvciBhbiBhc3NldC4ALQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBPd25lciBvZiB0aGUgYXNzZXQgYGlkYC4ApEFueSBkZXBvc2l0IGlzIGZyZWVkIGZvciB0aGUgYXNzZXQgb3duZXIuALQtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBjbGVhci4AYEVtaXRzIGBNZXRhZGF0YUNsZWFyZWRgLgA4V2VpZ2h0OiBgTygxKWBIZm9yY2Vfc2V0X21ldGFkYXRhFAEIaWRkAUxUOjpBc3NldElkUGFyYW1ldGVyAAEQbmFtZRgBHFZlYzx1OD4AARhzeW1ib2wYARxWZWM8dTg+AAEgZGVjaW1hbHMMAQh1OAABJGlzX2Zyb3plbl0BARBib29sABM4uEZvcmNlIHRoZSBtZXRhZGF0YSBmb3IgYW4gYXNzZXQgdG8gc29tZSB2YWx1ZS4AbE9yaWdpbiBtdXN0IGJlIEZvcmNlT3JpZ2luLgBoQW55IGRlcG9zaXQgaXMgbGVmdCBhbG9uZS4AuC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIHVwZGF0ZS5NAS0gYG5hbWVgOiBUaGUgdXNlciBmcmllbmRseSBuYW1lIG9mIHRoaXMgYXNzZXQuIExpbWl0ZWQgaW4gbGVuZ3RoIGJ5IGBTdHJpbmdMaW1pdGAuTQEtIGBzeW1ib2xgOiBUaGUgZXhjaGFuZ2Ugc3ltYm9sIGZvciB0aGlzIGFzc2V0LiBMaW1pdGVkIGluIGxlbmd0aCBieSBgU3RyaW5nTGltaXRgLi0BLSBgZGVjaW1hbHNgOiBUaGUgbnVtYmVyIG9mIGRlY2ltYWxzIHRoaXMgYXNzZXQgdXNlcyB0byByZXByZXNlbnQgb25lIHVuaXQuAFBFbWl0cyBgTWV0YWRhdGFTZXRgLgBRAVdlaWdodDogYE8oTiArIFMpYCB3aGVyZSBOIGFuZCBTIGFyZSB0aGUgbGVuZ3RoIG9mIHRoZSBuYW1lIGFuZCBzeW1ib2wgcmVzcGVjdGl2ZWx5LlBmb3JjZV9jbGVhcl9tZXRhZGF0YQQBCGlkZAFMVDo6QXNzZXRJZFBhcmFtZXRlcgAULIBDbGVhciB0aGUgbWV0YWRhdGEgZm9yIGFuIGFzc2V0LgBsT3JpZ2luIG11c3QgYmUgRm9yY2VPcmlnaW4uAGBBbnkgZGVwb3NpdCBpcyByZXR1cm5lZC4AtC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGNsZWFyLgBgRW1pdHMgYE1ldGFkYXRhQ2xlYXJlZGAuADhXZWlnaHQ6IGBPKDEpYEhmb3JjZV9hc3NldF9zdGF0dXMgAQhpZGQBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARRvd25lcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYaXNzdWVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARRhZG1pbgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEcZnJlZXplcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEsbWluX2JhbGFuY2VVAQEoVDo6QmFsYW5jZQABNGlzX3N1ZmZpY2llbnRdAQEQYm9vbAABJGlzX2Zyb3plbl0BARBib29sABVYmEFsdGVyIHRoZSBhdHRyaWJ1dGVzIG9mIGEgZ2l2ZW4gYXNzZXQuAHRPcmlnaW4gbXVzdCBiZSBgRm9yY2VPcmlnaW5gLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQunC0gYG93bmVyYDogVGhlIG5ldyBPd25lciBvZiB0aGlzIGFzc2V0LqQtIGBpc3N1ZXJgOiBUaGUgbmV3IElzc3VlciBvZiB0aGlzIGFzc2V0LpwtIGBhZG1pbmA6IFRoZSBuZXcgQWRtaW4gb2YgdGhpcyBhc3NldC6sLSBgZnJlZXplcmA6IFRoZSBuZXcgRnJlZXplciBvZiB0aGlzIGFzc2V0Lk0BLSBgbWluX2JhbGFuY2VgOiBUaGUgbWluaW11bSBiYWxhbmNlIG9mIHRoaXMgbmV3IGFzc2V0IHRoYXQgYW55IHNpbmdsZSBhY2NvdW50IG11c3Q9AWhhdmUuIElmIGFuIGFjY291bnQncyBiYWxhbmNlIGlzIHJlZHVjZWQgYmVsb3cgdGhpcywgdGhlbiBpdCBjb2xsYXBzZXMgdG8gemVyby5RAS0gYGlzX3N1ZmZpY2llbnRgOiBXaGV0aGVyIGEgbm9uLXplcm8gYmFsYW5jZSBvZiB0aGlzIGFzc2V0IGlzIGRlcG9zaXQgb2Ygc3VmZmljaWVudE0BdmFsdWUgdG8gYWNjb3VudCBmb3IgdGhlIHN0YXRlIGJsb2F0IGFzc29jaWF0ZWQgd2l0aCBpdHMgYmFsYW5jZSBzdG9yYWdlLiBJZiBzZXQgdG9VAWB0cnVlYCwgdGhlbiBub24temVybyBiYWxhbmNlcyBtYXkgYmUgc3RvcmVkIHdpdGhvdXQgYSBgY29uc3VtZXJgIHJlZmVyZW5jZSAoYW5kIHRodXNNAWFuIEVEIGluIHRoZSBCYWxhbmNlcyBwYWxsZXQgb3Igd2hhdGV2ZXIgZWxzZSBpcyB1c2VkIHRvIGNvbnRyb2wgdXNlci1hY2NvdW50IHN0YXRlIGdyb3d0aCkuPQEtIGBpc19mcm96ZW5gOiBXaGV0aGVyIHRoaXMgYXNzZXQgY2xhc3MgaXMgZnJvemVuIGV4Y2VwdCBmb3IgcGVybWlzc2lvbmVkL2FkbWluNGluc3RydWN0aW9ucy4A6EVtaXRzIGBBc3NldFN0YXR1c0NoYW5nZWRgIHdpdGggdGhlIGlkZW50aXR5IG9mIHRoZSBhc3NldC4AOFdlaWdodDogYE8oMSlgQGFwcHJvdmVfdHJhbnNmZXIMAQhpZGQBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAASBkZWxlZ2F0ZQABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYYW1vdW50VQEBKFQ6OkJhbGFuY2UAFlAtAUFwcHJvdmUgYW4gYW1vdW50IG9mIGFzc2V0IGZvciB0cmFuc2ZlciBieSBhIGRlbGVnYXRlZCB0aGlyZC1wYXJ0eSBhY2NvdW50LgBYT3JpZ2luIG11c3QgYmUgU2lnbmVkLgBNAUVuc3VyZXMgdGhhdCBgQXBwcm92YWxEZXBvc2l0YCB3b3J0aCBvZiBgQ3VycmVuY3lgIGlzIHJlc2VydmVkIGZyb20gc2lnbmluZyBhY2NvdW50VQFmb3IgdGhlIHB1cnBvc2Ugb2YgaG9sZGluZyB0aGUgYXBwcm92YWwuIElmIHNvbWUgbm9uLXplcm8gYW1vdW50IG9mIGFzc2V0cyBpcyBhbHJlYWR5SQFhcHByb3ZlZCBmcm9tIHNpZ25pbmcgYWNjb3VudCB0byBgZGVsZWdhdGVgLCB0aGVuIGl0IGlzIHRvcHBlZCB1cCBvciB1bnJlc2VydmVkIHRvVG1lZXQgdGhlIHJpZ2h0IHZhbHVlLgBFAU5PVEU6IFRoZSBzaWduaW5nIGFjY291bnQgZG9lcyBub3QgbmVlZCB0byBvd24gYGFtb3VudGAgb2YgYXNzZXRzIGF0IHRoZSBwb2ludCBvZkRtYWtpbmcgdGhpcyBjYWxsLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQuDQEtIGBkZWxlZ2F0ZWA6IFRoZSBhY2NvdW50IHRvIGRlbGVnYXRlIHBlcm1pc3Npb24gdG8gdHJhbnNmZXIgYXNzZXQuSQEtIGBhbW91bnRgOiBUaGUgYW1vdW50IG9mIGFzc2V0IHRoYXQgbWF5IGJlIHRyYW5zZmVycmVkIGJ5IGBkZWxlZ2F0ZWAuIElmIHRoZXJlIGlz4GFscmVhZHkgYW4gYXBwcm92YWwgaW4gcGxhY2UsIHRoZW4gdGhpcyBhY3RzIGFkZGl0aXZlbHkuAJBFbWl0cyBgQXBwcm92ZWRUcmFuc2ZlcmAgb24gc3VjY2Vzcy4AOFdlaWdodDogYE8oMSlgPGNhbmNlbF9hcHByb3ZhbAgBCGlkZAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABIGRlbGVnYXRlAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AFzRJAUNhbmNlbCBhbGwgb2Ygc29tZSBhc3NldCBhcHByb3ZlZCBmb3IgZGVsZWdhdGVkIHRyYW5zZmVyIGJ5IGEgdGhpcmQtcGFydHkgYWNjb3VudC4APQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZXJlIG11c3QgYmUgYW4gYXBwcm92YWwgaW4gcGxhY2UgYmV0d2VlbiBzaWduZXIgYW5kLGBkZWxlZ2F0ZWAuAEkBVW5yZXNlcnZlcyBhbnkgZGVwb3NpdCBwcmV2aW91c2x5IHJlc2VydmVkIGJ5IGBhcHByb3ZlX3RyYW5zZmVyYCBmb3IgdGhlIGFwcHJvdmFsLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQuBQEtIGBkZWxlZ2F0ZWA6IFRoZSBhY2NvdW50IGRlbGVnYXRlZCBwZXJtaXNzaW9uIHRvIHRyYW5zZmVyIGFzc2V0LgCURW1pdHMgYEFwcHJvdmFsQ2FuY2VsbGVkYCBvbiBzdWNjZXNzLgA4V2VpZ2h0OiBgTygxKWBUZm9yY2VfY2FuY2VsX2FwcHJvdmFsDAEIaWRkAUxUOjpBc3NldElkUGFyYW1ldGVyAAEUb3duZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABIGRlbGVnYXRlAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AGDRJAUNhbmNlbCBhbGwgb2Ygc29tZSBhc3NldCBhcHByb3ZlZCBmb3IgZGVsZWdhdGVkIHRyYW5zZmVyIGJ5IGEgdGhpcmQtcGFydHkgYWNjb3VudC4ASQFPcmlnaW4gbXVzdCBiZSBlaXRoZXIgRm9yY2VPcmlnaW4gb3IgU2lnbmVkIG9yaWdpbiB3aXRoIHRoZSBzaWduZXIgYmVpbmcgdGhlIEFkbWluaGFjY291bnQgb2YgdGhlIGFzc2V0IGBpZGAuAEkBVW5yZXNlcnZlcyBhbnkgZGVwb3NpdCBwcmV2aW91c2x5IHJlc2VydmVkIGJ5IGBhcHByb3ZlX3RyYW5zZmVyYCBmb3IgdGhlIGFwcHJvdmFsLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQuBQEtIGBkZWxlZ2F0ZWA6IFRoZSBhY2NvdW50IGRlbGVnYXRlZCBwZXJtaXNzaW9uIHRvIHRyYW5zZmVyIGFzc2V0LgCURW1pdHMgYEFwcHJvdmFsQ2FuY2VsbGVkYCBvbiBzdWNjZXNzLgA4V2VpZ2h0OiBgTygxKWBEdHJhbnNmZXJfYXBwcm92ZWQQAQhpZGQBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARRvd25lcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEsZGVzdGluYXRpb24AAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGFtb3VudFUBAShUOjpCYWxhbmNlABlITQFUcmFuc2ZlciBzb21lIGFzc2V0IGJhbGFuY2UgZnJvbSBhIHByZXZpb3VzbHkgZGVsZWdhdGVkIGFjY291bnQgdG8gc29tZSB0aGlyZC1wYXJ0eSBhY2NvdW50LgBJAU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlcmUgbXVzdCBiZSBhbiBhcHByb3ZhbCBpbiBwbGFjZSBieSB0aGUgYG93bmVyYCB0byB0aGUcc2lnbmVyLgBZAUlmIHRoZSBlbnRpcmUgYW1vdW50IGFwcHJvdmVkIGZvciB0cmFuc2ZlciBpcyB0cmFuc2ZlcnJlZCwgdGhlbiBhbnkgZGVwb3NpdCBwcmV2aW91c2x5tHJlc2VydmVkIGJ5IGBhcHByb3ZlX3RyYW5zZmVyYCBpcyB1bnJlc2VydmVkLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQuYQEtIGBvd25lcmA6IFRoZSBhY2NvdW50IHdoaWNoIHByZXZpb3VzbHkgYXBwcm92ZWQgZm9yIGEgdHJhbnNmZXIgb2YgYXQgbGVhc3QgYGFtb3VudGAgYW5kvGZyb20gd2hpY2ggdGhlIGFzc2V0IGJhbGFuY2Ugd2lsbCBiZSB3aXRoZHJhd24uYQEtIGBkZXN0aW5hdGlvbmA6IFRoZSBhY2NvdW50IHRvIHdoaWNoIHRoZSBhc3NldCBiYWxhbmNlIG9mIGBhbW91bnRgIHdpbGwgYmUgdHJhbnNmZXJyZWQutC0gYGFtb3VudGA6IFRoZSBhbW91bnQgb2YgYXNzZXRzIHRvIHRyYW5zZmVyLgCcRW1pdHMgYFRyYW5zZmVycmVkQXBwcm92ZWRgIG9uIHN1Y2Nlc3MuADhXZWlnaHQ6IGBPKDEpYBR0b3VjaAQBCGlkZAFMVDo6QXNzZXRJZFBhcmFtZXRlcgAaJMBDcmVhdGUgYW4gYXNzZXQgYWNjb3VudCBmb3Igbm9uLXByb3ZpZGVyIGFzc2V0cy4AwEEgZGVwb3NpdCB3aWxsIGJlIHRha2VuIGZyb20gdGhlIHNpZ25lciBhY2NvdW50LgBdAS0gYG9yaWdpbmA6IE11c3QgYmUgU2lnbmVkOyB0aGUgc2lnbmVyIGFjY291bnQgbXVzdCBoYXZlIHN1ZmZpY2llbnQgZnVuZHMgZm9yIGEgZGVwb3NpdDggIHRvIGJlIHRha2VuLgkBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgZm9yIHRoZSBhY2NvdW50IHRvIGJlIGNyZWF0ZWQuAJhFbWl0cyBgVG91Y2hlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLhhyZWZ1bmQIAQhpZGQBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAAShhbGxvd19idXJuXQEBEGJvb2wAGzRZAVJldHVybiB0aGUgZGVwb3NpdCAoaWYgYW55KSBvZiBhbiBhc3NldCBhY2NvdW50IG9yIGEgY29uc3VtZXIgcmVmZXJlbmNlIChpZiBhbnkpIG9mIGFuIGFjY291bnQuAGhUaGUgb3JpZ2luIG11c3QgYmUgU2lnbmVkLgA9AS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IGZvciB3aGljaCB0aGUgY2FsbGVyIHdvdWxkIGxpa2UgdGhlIGRlcG9zaXQsICByZWZ1bmRlZC5dAS0gYGFsbG93X2J1cm5gOiBJZiBgdHJ1ZWAgdGhlbiBhc3NldHMgbWF5IGJlIGRlc3Ryb3llZCBpbiBvcmRlciB0byBjb21wbGV0ZSB0aGUgcmVmdW5kLgBJAUl0IHdpbGwgZmFpbCB3aXRoIGVpdGhlciBbYEVycm9yOjpDb250YWluc0hvbGRzYF0gb3IgW2BFcnJvcjo6Q29udGFpbnNGcmVlemVzYF0gaWbUdGhlIGFzc2V0IGFjY291bnQgY29udGFpbnMgaG9sZHMgb3IgZnJlZXplcyBpbiBwbGFjZS4AnEVtaXRzIGBSZWZ1bmRlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLjxzZXRfbWluX2JhbGFuY2UIAQhpZGQBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAASxtaW5fYmFsYW5jZVkBAShUOjpCYWxhbmNlABwwlFNldHMgdGhlIG1pbmltdW0gYmFsYW5jZSBvZiBhbiBhc3NldC4AIQFPbmx5IHdvcmtzIGlmIHRoZXJlIGFyZW4ndCBhbnkgYWNjb3VudHMgdGhhdCBhcmUgaG9sZGluZyB0aGUgYXNzZXQgb3IgaWbgdGhlIG5ldyB2YWx1ZSBvZiBgbWluX2JhbGFuY2VgIGlzIGxlc3MgdGhhbiB0aGUgb2xkIG9uZS4A/E9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBoYXMgdG8gYmUgdGhlIE93bmVyIG9mIHRoZSxhc3NldCBgaWRgLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQuwC0gYG1pbl9iYWxhbmNlYDogVGhlIG5ldyB2YWx1ZSBvZiBgbWluX2JhbGFuY2VgLgDURW1pdHMgYEFzc2V0TWluQmFsYW5jZUNoYW5nZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4sdG91Y2hfb3RoZXIIAQhpZGQBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAAQx3aG8AAVBBY2NvdW50SWRMb29rdXBPZjxUPgAdLIhDcmVhdGUgYW4gYXNzZXQgYWNjb3VudCBmb3IgYHdob2AuAMBBIGRlcG9zaXQgd2lsbCBiZSB0YWtlbiBmcm9tIHRoZSBzaWduZXIgYWNjb3VudC4AXQEtIGBvcmlnaW5gOiBNdXN0IGJlIFNpZ25lZDsgdGhlIHNpZ25lciBhY2NvdW50IG11c3QgaGF2ZSBzdWZmaWNpZW50IGZ1bmRzIGZvciBhIGRlcG9zaXQ4ICB0byBiZSB0YWtlbi5hAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IGZvciB0aGUgYWNjb3VudCB0byBiZSBjcmVhdGVkLCB0aGUgYXNzZXQgc3RhdHVzIG11c3QoICBiZSBsaXZlLowtIGB3aG9gOiBUaGUgYWNjb3VudCB0byBiZSBjcmVhdGVkLgCYRW1pdHMgYFRvdWNoZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4wcmVmdW5kX290aGVyCAEIaWRkAUxUOjpBc3NldElkUGFyYW1ldGVyAAEMd2hvAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AHjRdAVJldHVybiB0aGUgZGVwb3NpdCAoaWYgYW55KSBvZiBhIHRhcmdldCBhc3NldCBhY2NvdW50LiBVc2VmdWwgaWYgeW91IGFyZSB0aGUgZGVwb3NpdG9yLgBdAVRoZSBvcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIGVpdGhlciB0aGUgYWNjb3VudCBvd25lciwgZGVwb3NpdG9yLCBvciBhc3NldCBgQWRtaW5gLiBJbmEBb3JkZXIgdG8gYnVybiBhIG5vbi16ZXJvIGJhbGFuY2Ugb2YgdGhlIGFzc2V0LCB0aGUgY2FsbGVyIG11c3QgYmUgdGhlIGFjY291bnQgYW5kIHNob3VsZDR1c2UgYHJlZnVuZGAuABkBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgZm9yIHRoZSBhY2NvdW50IGhvbGRpbmcgYSBkZXBvc2l0LnwtIGB3aG9gOiBUaGUgYWNjb3VudCB0byByZWZ1bmQuAEkBSXQgd2lsbCBmYWlsIHdpdGggZWl0aGVyIFtgRXJyb3I6OkNvbnRhaW5zSG9sZHNgXSBvciBbYEVycm9yOjpDb250YWluc0ZyZWV6ZXNgXSBpZtR0aGUgYXNzZXQgYWNjb3VudCBjb250YWlucyBob2xkcyBvciBmcmVlemVzIGluIHBsYWNlLgCcRW1pdHMgYFJlZnVuZGVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuFGJsb2NrCAEIaWRkAUxUOjpBc3NldElkUGFyYW1ldGVyAAEMd2hvAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AHyhZAURpc2FsbG93IGZ1cnRoZXIgdW5wcml2aWxlZ2VkIHRyYW5zZmVycyBvZiBhbiBhc3NldCBgaWRgIHRvIGFuZCBmcm9tIGFuIGFjY291bnQgYHdob2AuADUBT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgRnJlZXplciBvZiB0aGUgYXNzZXQgYGlkYC4AuC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFjY291bnQncyBhc3NldC6ULSBgd2hvYDogVGhlIGFjY291bnQgdG8gYmUgdW5ibG9ja2VkLgBARW1pdHMgYEJsb2NrZWRgLgA4V2VpZ2h0OiBgTygxKWAwdHJhbnNmZXJfYWxsDAEIaWRkAUxUOjpBc3NldElkUGFyYW1ldGVyAAEQZGVzdAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEoa2VlcF9hbGl2ZV0BARBib29sACBAHQFUcmFuc2ZlciB0aGUgZW50aXJlIHRyYW5zZmVyYWJsZSBiYWxhbmNlIGZyb20gdGhlIGNhbGxlciBhc3NldCBhY2NvdW50LgBZAU5PVEU6IFRoaXMgZnVuY3Rpb24gb25seSBhdHRlbXB0cyB0byB0cmFuc2ZlciBfdHJhbnNmZXJhYmxlXyBiYWxhbmNlcy4gVGhpcyBtZWFucyB0aGF0PQFhbnkgaGVsZCwgZnJvemVuLCBvciBtaW5pbXVtIGJhbGFuY2UgKHdoZW4gYGtlZXBfYWxpdmVgIGlzIGB0cnVlYCksIHdpbGwgbm90IGJlXQF0cmFuc2ZlcnJlZCBieSB0aGlzIGZ1bmN0aW9uLiBUbyBlbnN1cmUgdGhhdCB0aGlzIGZ1bmN0aW9uIHJlc3VsdHMgaW4gYSBraWxsZWQgYWNjb3VudCxFAXlvdSBtaWdodCBuZWVkIHRvIHByZXBhcmUgdGhlIGFjY291bnQgYnkgcmVtb3ZpbmcgYW55IHJlZmVyZW5jZSBjb3VudGVycywgc3RvcmFnZUBkZXBvc2l0cywgZXRjLi4uAMBUaGUgZGlzcGF0Y2ggb3JpZ2luIG9mIHRoaXMgY2FsbCBtdXN0IGJlIFNpZ25lZC4AGQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCBmb3IgdGhlIGFjY291bnQgaG9sZGluZyBhIGRlcG9zaXQuoC0gYGRlc3RgOiBUaGUgcmVjaXBpZW50IG9mIHRoZSB0cmFuc2Zlci5ZAS0gYGtlZXBfYWxpdmVgOiBBIGJvb2xlYW4gdG8gZGV0ZXJtaW5lIGlmIHRoZSBgdHJhbnNmZXJfYWxsYCBvcGVyYXRpb24gc2hvdWxkIHNlbmQgYWxsTQEgIG9mIHRoZSBmdW5kcyB0aGUgYXNzZXQgYWNjb3VudCBoYXMsIGNhdXNpbmcgdGhlIHNlbmRlciBhc3NldCBhY2NvdW50IHRvIGJlIGtpbGxlZEUBICAoZmFsc2UpLCBvciB0cmFuc2ZlciBldmVyeXRoaW5nIGV4Y2VwdCBhdCBsZWFzdCB0aGUgbWluaW11bSBiYWxhbmNlLCB3aGljaCB3aWxs6CAgZ3VhcmFudGVlIHRvIGtlZXAgdGhlIHNlbmRlciBhc3NldCBhY2NvdW50IGFsaXZlICh0cnVlKS4wc2V0X3Jlc2VydmVzCAEIaWRkAUxUOjpBc3NldElkUGFyYW1ldGVyAAEgcmVzZXJ2ZXNJBAHIQm91bmRlZFZlYzxUOjpSZXNlcnZlRGF0YSwgQ29uc3RVMzI8TUFYX1JFU0VSVkVTPj4AISTEU2V0cyB0aGUgdHJ1c3RlZCByZXNlcnZlIGluZm9ybWF0aW9uIG9mIGFuIGFzc2V0LgBVAU9yaWdpbiBtdXN0IGJlIHRoZSBPd25lciBvZiB0aGUgYXNzZXQgYGlkYC4gVGhlIG9yaWdpbiBtdXN0IGNvbmZvcm0gdG8gdGhlIGNvbmZpZ3VyZWQlAWBDcmVhdGVPcmlnaW5gIG9yIGJlIHRoZSBzaWduZWQgYG93bmVyYCBjb25maWd1cmVkIGR1cmluZyBhc3NldCBjcmVhdGlvbi4AkC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0LvAtIGByZXNlcnZlc2A6IFRoZSBmdWxsIGxpc3Qgb2YgdHJ1c3RlZCByZXNlcnZlcyBpbmZvcm1hdGlvbi4A1EVtaXRzIGBBc3NldE1pbkJhbGFuY2VDaGFuZ2VkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLkkEDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBEARTAAAEAE0EARhWZWM8VD4AAE0EAAACEABRBAw4cGFsbGV0X3VuaXF1ZXMYcGFsbGV0EENhbGwIBFQABEkAAWgYY3JlYXRlCAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABFGFkbWluAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AAEAJAUlzc3VlIGEgbmV3IGNvbGxlY3Rpb24gb2Ygbm9uLWZ1bmdpYmxlIGl0ZW1zIGZyb20gYSBwdWJsaWMgb3JpZ2luLgAdAVRoaXMgbmV3IGNvbGxlY3Rpb24gaGFzIG5vIGl0ZW1zIGluaXRpYWxseSBhbmQgaXRzIG93bmVyIGlzIHRoZSBvcmlnaW4uAGEBVGhlIG9yaWdpbiBtdXN0IGNvbmZvcm0gdG8gdGhlIGNvbmZpZ3VyZWQgYENyZWF0ZU9yaWdpbmAgYW5kIGhhdmUgc3VmZmljaWVudCBmdW5kcyBmcmVlLgCsYEl0ZW1EZXBvc2l0YCBmdW5kcyBvZiBzZW5kZXIgYXJlIHJlc2VydmVkLgAsUGFyYW1ldGVyczphAS0gYGNvbGxlY3Rpb25gOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgbmV3IGNvbGxlY3Rpb24uIFRoaXMgbXVzdCBub3QgYmUgY3VycmVudGx5IGluIHVzZS5FAS0gYGFkbWluYDogVGhlIGFkbWluIG9mIHRoaXMgY29sbGVjdGlvbi4gVGhlIGFkbWluIGlzIHRoZSBpbml0aWFsIGFkZHJlc3Mgb2YgZWFjaJhtZW1iZXIgb2YgdGhlIGNvbGxlY3Rpb24ncyBhZG1pbiB0ZWFtLgCYRW1pdHMgYENyZWF0ZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4AOFdlaWdodDogYE8oMSlgMGZvcmNlX2NyZWF0ZQwBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARRvd25lcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEwZnJlZV9ob2xkaW5nXQEBEGJvb2wAAUQZAUlzc3VlIGEgbmV3IGNvbGxlY3Rpb24gb2Ygbm9uLWZ1bmdpYmxlIGl0ZW1zIGZyb20gYSBwcml2aWxlZ2VkIG9yaWdpbi4ArFRoaXMgbmV3IGNvbGxlY3Rpb24gaGFzIG5vIGl0ZW1zIGluaXRpYWxseS4ApFRoZSBvcmlnaW4gbXVzdCBjb25mb3JtIHRvIGBGb3JjZU9yaWdpbmAuAJxVbmxpa2UgYGNyZWF0ZWAsIG5vIGZ1bmRzIGFyZSByZXNlcnZlZC4ASQEtIGBjb2xsZWN0aW9uYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIG5ldyBpdGVtLiBUaGlzIG11c3Qgbm90IGJlIGN1cnJlbnRseSBpbiB1c2UuOQEtIGBvd25lcmA6IFRoZSBvd25lciBvZiB0aGlzIGNvbGxlY3Rpb24gb2YgaXRlbXMuIFRoZSBvd25lciBoYXMgZnVsbCBzdXBlcnVzZXI0ICBwZXJtaXNzaW9ucyEBb3ZlciB0aGlzIGl0ZW0sIGJ1dCBtYXkgbGF0ZXIgY2hhbmdlIGFuZCBjb25maWd1cmUgdGhlIHBlcm1pc3Npb25zIHVzaW5nkGB0cmFuc2Zlcl9vd25lcnNoaXBgIGFuZCBgc2V0X3RlYW1gLgCsRW1pdHMgYEZvcmNlQ3JlYXRlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLgA4V2VpZ2h0OiBgTygxKWAcZGVzdHJveQgBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARx3aXRuZXNzVQQBOERlc3Ryb3lXaXRuZXNzAAI8nERlc3Ryb3kgYSBjb2xsZWN0aW9uIG9mIGZ1bmdpYmxlIGl0ZW1zLgBdAVRoZSBvcmlnaW4gbXVzdCBjb25mb3JtIHRvIGBGb3JjZU9yaWdpbmAgb3IgbXVzdCBiZSBgU2lnbmVkYCBhbmQgdGhlIHNlbmRlciBtdXN0IGJlIHRoZWhvd25lciBvZiB0aGUgYGNvbGxlY3Rpb25gLgAFAS0gYGNvbGxlY3Rpb25gOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgY29sbGVjdGlvbiB0byBiZSBkZXN0cm95ZWQuMQEtIGB3aXRuZXNzYDogSW5mb3JtYXRpb24gb24gdGhlIGl0ZW1zIG1pbnRlZCBpbiB0aGUgY29sbGVjdGlvbi4gVGhpcyBtdXN0IGJlIGNvcnJlY3QuAKBFbWl0cyBgRGVzdHJveWVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuAGRXZWlnaHQ6IGBPKG4gKyBtKWAgd2hlcmU6VC0gYG4gPSB3aXRuZXNzLml0ZW1zYHgtIGBtID0gd2l0bmVzcy5pdGVtX21ldGFkYXRhc2BoLSBgYSA9IHdpdG5lc3MuYXR0cmlidXRlc2AQbWludAwBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAEUb3duZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgADLKBNaW50IGFuIGl0ZW0gb2YgYSBwYXJ0aWN1bGFyIGNvbGxlY3Rpb24uAEEBVGhlIG9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBtdXN0IGJlIHRoZSBJc3N1ZXIgb2YgdGhlIGBjb2xsZWN0aW9uYC4A4C0gYGNvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiBvZiB0aGUgaXRlbSB0byBiZSBtaW50ZWQuyC0gYGl0ZW1gOiBUaGUgaXRlbSB2YWx1ZSBvZiB0aGUgaXRlbSB0byBiZSBtaW50ZWQu2C0gYGJlbmVmaWNpYXJ5YDogVGhlIGluaXRpYWwgb3duZXIgb2YgdGhlIG1pbnRlZCBpdGVtLgCURW1pdHMgYElzc3VlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLgA4V2VpZ2h0OiBgTygxKWAQYnVybgwBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAEsY2hlY2tfb3duZXJZBAFwT3B0aW9uPEFjY291bnRJZExvb2t1cE9mPFQ+PgAEPFhEZXN0cm95IGEgc2luZ2xlIGl0ZW0uAPRPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzaWduaW5nIGFjY291bnQgbXVzdCBiZSBlaXRoZXI6gC0gdGhlIEFkbWluIG9mIHRoZSBgY29sbGVjdGlvbmA7aC0gdGhlIE93bmVyIG9mIHRoZSBgaXRlbWA7AOAtIGBjb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gb2YgdGhlIGl0ZW0gdG8gYmUgYnVybmVkLrAtIGBpdGVtYDogVGhlIGl0ZW0gb2YgdGhlIGl0ZW0gdG8gYmUgYnVybmVkLlEBLSBgY2hlY2tfb3duZXJgOiBJZiBgU29tZWAgdGhlbiB0aGUgb3BlcmF0aW9uIHdpbGwgZmFpbCB3aXRoIGBXcm9uZ093bmVyYCB1bmxlc3MgdGhleCAgaXRlbSBpcyBvd25lZCBieSB0aGlzIHZhbHVlLgC0RW1pdHMgYEJ1cm5lZGAgd2l0aCB0aGUgYWN0dWFsIGFtb3VudCBidXJuZWQuADhXZWlnaHQ6IGBPKDEpYHxNb2RlczogYGNoZWNrX293bmVyLmlzX3NvbWUoKWAuIHRyYW5zZmVyDAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAARBkZXN0AAFQQWNjb3VudElkTG9va3VwT2Y8VD4ABUTATW92ZSBhbiBpdGVtIGZyb20gdGhlIHNlbmRlciBhY2NvdW50IHRvIGFub3RoZXIuALRUaGlzIHJlc2V0cyB0aGUgYXBwcm92ZWQgYWNjb3VudCBvZiB0aGUgaXRlbS4A9E9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNpZ25pbmcgYWNjb3VudCBtdXN0IGJlIGVpdGhlcjqALSB0aGUgQWRtaW4gb2YgdGhlIGBjb2xsZWN0aW9uYDtoLSB0aGUgT3duZXIgb2YgdGhlIGBpdGVtYDs1AS0gdGhlIGFwcHJvdmVkIGRlbGVnYXRlIGZvciB0aGUgYGl0ZW1gIChpbiB0aGlzIGNhc2UsIHRoZSBhcHByb3ZhbCBpcyByZXNldCkuAChBcmd1bWVudHM69C0gYGNvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiBvZiB0aGUgaXRlbSB0byBiZSB0cmFuc2ZlcnJlZC7ELSBgaXRlbWA6IFRoZSBpdGVtIG9mIHRoZSBpdGVtIHRvIGJlIHRyYW5zZmVycmVkLtwtIGBkZXN0YDogVGhlIGFjY291bnQgdG8gcmVjZWl2ZSBvd25lcnNoaXAgb2YgdGhlIGl0ZW0uAFBFbWl0cyBgVHJhbnNmZXJyZWRgLgA4V2VpZ2h0OiBgTygxKWAkcmVkZXBvc2l0CAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABFGl0ZW1zXQQBOFZlYzxUOjpJdGVtSWQ+AAZEmFJlZXZhbHVhdGUgdGhlIGRlcG9zaXRzIG9uIHNvbWUgaXRlbXMuADUBT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgT3duZXIgb2YgdGhlIGBjb2xsZWN0aW9uYC4AsC0gYGNvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiB0byBiZSBmcm96ZW4uKQEtIGBpdGVtc2A6IFRoZSBpdGVtcyBvZiB0aGUgY29sbGVjdGlvbiB3aG9zZSBkZXBvc2l0cyB3aWxsIGJlIHJlZXZhbHVhdGVkLgAtAU5PVEU6IFRoaXMgZXhpc3RzIGFzIGEgYmVzdC1lZmZvcnQgZnVuY3Rpb24uIEFueSBpdGVtcyB3aGljaCBhcmUgdW5rbm93biBvcjkBaW4gdGhlIGNhc2UgdGhhdCB0aGUgb3duZXIgYWNjb3VudCBkb2VzIG5vdCBoYXZlIHJlc2VydmFibGUgZnVuZHMgdG8gcGF5IGZvciBhTQFkZXBvc2l0IGluY3JlYXNlIGFyZSBpZ25vcmVkLiBHZW5lcmFsbHkgdGhlIG93bmVyIGlzbid0IGdvaW5nIHRvIGNhbGwgdGhpcyBvbiBpdGVtc1UBd2hvc2UgZXhpc3RpbmcgZGVwb3NpdCBpcyBsZXNzIHRoYW4gdGhlIHJlZnJlc2hlZCBkZXBvc2l0IGFzIGl0IHdvdWxkIG9ubHkgY29zdCB0aGVtLHhzbyBpdCdzIG9mIGxpdHRsZSBjb25zZXF1ZW5jZS4AWQFJdCB3aWxsIHN0aWxsIHJldHVybiBhbiBlcnJvciBpbiB0aGUgY2FzZSB0aGF0IHRoZSBjb2xsZWN0aW9uIGlzIHVua25vd24gb2YgdGhlIHNpZ25lcnBpcyBub3QgcGVybWl0dGVkIHRvIGNhbGwgaXQuAGBXZWlnaHQ6IGBPKGl0ZW1zLmxlbigpKWAYZnJlZXplCAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAByjIRGlzYWxsb3cgZnVydGhlciB1bnByaXZpbGVnZWQgdHJhbnNmZXIgb2YgYW4gaXRlbS4APQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBGcmVlemVyIG9mIHRoZSBgY29sbGVjdGlvbmAuAOAtIGBjb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gb2YgdGhlIGl0ZW0gdG8gYmUgZnJvemVuLrAtIGBpdGVtYDogVGhlIGl0ZW0gb2YgdGhlIGl0ZW0gdG8gYmUgZnJvemVuLgA8RW1pdHMgYEZyb3plbmAuADhXZWlnaHQ6IGBPKDEpYBB0aGF3CAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQACCioUmUtYWxsb3cgdW5wcml2aWxlZ2VkIHRyYW5zZmVyIG9mIGFuIGl0ZW0uAD0BT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgRnJlZXplciBvZiB0aGUgYGNvbGxlY3Rpb25gLgDgLSBgY29sbGVjdGlvbmA6IFRoZSBjb2xsZWN0aW9uIG9mIHRoZSBpdGVtIHRvIGJlIHRoYXdlZC6wLSBgaXRlbWA6IFRoZSBpdGVtIG9mIHRoZSBpdGVtIHRvIGJlIHRoYXdlZC4APEVtaXRzIGBUaGF3ZWRgLgA4V2VpZ2h0OiBgTygxKWBEZnJlZXplX2NvbGxlY3Rpb24EAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAkk/ERpc2FsbG93IGZ1cnRoZXIgdW5wcml2aWxlZ2VkIHRyYW5zZmVycyBmb3IgYSB3aG9sZSBjb2xsZWN0aW9uLgA9AU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEZyZWV6ZXIgb2YgdGhlIGBjb2xsZWN0aW9uYC4AsC0gYGNvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiB0byBiZSBmcm96ZW4uAGRFbWl0cyBgQ29sbGVjdGlvbkZyb3plbmAuADhXZWlnaHQ6IGBPKDEpYDx0aGF3X2NvbGxlY3Rpb24EAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAok3FJlLWFsbG93IHVucHJpdmlsZWdlZCB0cmFuc2ZlcnMgZm9yIGEgd2hvbGUgY29sbGVjdGlvbi4ANQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBBZG1pbiBvZiB0aGUgYGNvbGxlY3Rpb25gLgCwLSBgY29sbGVjdGlvbmA6IFRoZSBjb2xsZWN0aW9uIHRvIGJlIHRoYXdlZC4AZEVtaXRzIGBDb2xsZWN0aW9uVGhhd2VkYC4AOFdlaWdodDogYE8oMSlgSHRyYW5zZmVyX293bmVyc2hpcAgBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAASRuZXdfb3duZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgALLIRDaGFuZ2UgdGhlIE93bmVyIG9mIGEgY29sbGVjdGlvbi4ANQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBPd25lciBvZiB0aGUgYGNvbGxlY3Rpb25gLgD0LSBgY29sbGVjdGlvbmA6IFRoZSBjb2xsZWN0aW9uIHdob3NlIG93bmVyIHNob3VsZCBiZSBjaGFuZ2VkLgkBLSBgb3duZXJgOiBUaGUgbmV3IE93bmVyIG9mIHRoaXMgY29sbGVjdGlvbi4gVGhleSBtdXN0IGhhdmUgY2FsbGVkSQEgIGBzZXRfYWNjZXB0X293bmVyc2hpcGAgd2l0aCBgY29sbGVjdGlvbmAgaW4gb3JkZXIgZm9yIHRoaXMgb3BlcmF0aW9uIHRvIHN1Y2NlZWQuAFRFbWl0cyBgT3duZXJDaGFuZ2VkYC4AOFdlaWdodDogYE8oMSlgIHNldF90ZWFtEAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABGGlzc3VlcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEUYWRtaW4AAVBBY2NvdW50SWRMb29rdXBPZjxUPgABHGZyZWV6ZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgAMMNRDaGFuZ2UgdGhlIElzc3VlciwgQWRtaW4gYW5kIEZyZWV6ZXIgb2YgYSBjb2xsZWN0aW9uLgA1AU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIE93bmVyIG9mIHRoZSBgY29sbGVjdGlvbmAuAPAtIGBjb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gd2hvc2UgdGVhbSBzaG91bGQgYmUgY2hhbmdlZC64LSBgaXNzdWVyYDogVGhlIG5ldyBJc3N1ZXIgb2YgdGhpcyBjb2xsZWN0aW9uLrAtIGBhZG1pbmA6IFRoZSBuZXcgQWRtaW4gb2YgdGhpcyBjb2xsZWN0aW9uLsAtIGBmcmVlemVyYDogVGhlIG5ldyBGcmVlemVyIG9mIHRoaXMgY29sbGVjdGlvbi4AUEVtaXRzIGBUZWFtQ2hhbmdlZGAuADhXZWlnaHQ6IGBPKDEpYEBhcHByb3ZlX3RyYW5zZmVyDAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAASBkZWxlZ2F0ZQABUEFjY291bnRJZExvb2t1cE9mPFQ+AA04FQFBcHByb3ZlIGFuIGl0ZW0gdG8gYmUgdHJhbnNmZXJyZWQgYnkgYSBkZWxlZ2F0ZWQgdGhpcmQtcGFydHkgYWNjb3VudC4ATQFUaGUgb3JpZ2luIG11c3QgY29uZm9ybSB0byBgRm9yY2VPcmlnaW5gIG9yIG11c3QgYmUgYFNpZ25lZGAgYW5kIHRoZSBzZW5kZXIgbXVzdCBiZfhlaXRoZXIgdGhlIG93bmVyIG9mIHRoZSBgaXRlbWAgb3IgdGhlIGFkbWluIG9mIHRoZSBjb2xsZWN0aW9uLgBFAS0gYGNvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiBvZiB0aGUgaXRlbSB0byBiZSBhcHByb3ZlZCBmb3IgZGVsZWdhdGVkIHRyYW5zZmVyLhUBLSBgaXRlbWA6IFRoZSBpdGVtIG9mIHRoZSBpdGVtIHRvIGJlIGFwcHJvdmVkIGZvciBkZWxlZ2F0ZWQgdHJhbnNmZXIuGQEtIGBkZWxlZ2F0ZWA6IFRoZSBhY2NvdW50IHRvIGRlbGVnYXRlIHBlcm1pc3Npb24gdG8gdHJhbnNmZXIgdGhlIGl0ZW0uABkBSW1wb3J0YW50IE5PVEU6IFRoZSBgYXBwcm92ZWRgIGFjY291bnQgZ2V0cyByZXNldCBhZnRlciBlYWNoIHRyYW5zZmVyLgCQRW1pdHMgYEFwcHJvdmVkVHJhbnNmZXJgIG9uIHN1Y2Nlc3MuADhXZWlnaHQ6IGBPKDEpYDxjYW5jZWxfYXBwcm92YWwMAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAABUG1heWJlX2NoZWNrX2RlbGVnYXRlWQQBcE9wdGlvbjxBY2NvdW50SWRMb29rdXBPZjxUPj4ADkARAUNhbmNlbCB0aGUgcHJpb3IgYXBwcm92YWwgZm9yIHRoZSB0cmFuc2ZlciBvZiBhbiBpdGVtIGJ5IGEgZGVsZWdhdGUuAFhPcmlnaW4gbXVzdCBiZSBlaXRoZXI6VC0gdGhlIGBGb3JjZWAgb3JpZ2luO/wtIGBTaWduZWRgIHdpdGggdGhlIHNpZ25lciBiZWluZyB0aGUgQWRtaW4gb2YgdGhlIGBjb2xsZWN0aW9uYDvkLSBgU2lnbmVkYCB3aXRoIHRoZSBzaWduZXIgYmVpbmcgdGhlIE93bmVyIG9mIHRoZSBgaXRlbWA7AChBcmd1bWVudHM6PQEtIGBjb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gb2YgdGhlIGl0ZW0gb2Ygd2hvc2UgYXBwcm92YWwgd2lsbCBiZSBjYW5jZWxsZWQuDQEtIGBpdGVtYDogVGhlIGl0ZW0gb2YgdGhlIGl0ZW0gb2Ygd2hvc2UgYXBwcm92YWwgd2lsbCBiZSBjYW5jZWxsZWQuUQEtIGBtYXliZV9jaGVja19kZWxlZ2F0ZWA6IElmIGBTb21lYCB3aWxsIGVuc3VyZSB0aGF0IHRoZSBnaXZlbiBhY2NvdW50IGlzIHRoZSBvbmUgdG+wICB3aGljaCBwZXJtaXNzaW9uIG9mIHRyYW5zZmVyIGlzIGRlbGVnYXRlZC4AlEVtaXRzIGBBcHByb3ZhbENhbmNlbGxlZGAgb24gc3VjY2Vzcy4AOFdlaWdodDogYE8oMSlgRGZvcmNlX2l0ZW1fc3RhdHVzHAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABFG93bmVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARhpc3N1ZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABFGFkbWluAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARxmcmVlemVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AATBmcmVlX2hvbGRpbmddAQEQYm9vbAABJGlzX2Zyb3plbl0BARBib29sAA9AlEFsdGVyIHRoZSBhdHRyaWJ1dGVzIG9mIGEgZ2l2ZW4gaXRlbS4AdE9yaWdpbiBtdXN0IGJlIGBGb3JjZU9yaWdpbmAuAKwtIGBjb2xsZWN0aW9uYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGl0ZW0umC0gYG93bmVyYDogVGhlIG5ldyBPd25lciBvZiB0aGlzIGl0ZW0uoC0gYGlzc3VlcmA6IFRoZSBuZXcgSXNzdWVyIG9mIHRoaXMgaXRlbS6YLSBgYWRtaW5gOiBUaGUgbmV3IEFkbWluIG9mIHRoaXMgaXRlbS6oLSBgZnJlZXplcmA6IFRoZSBuZXcgRnJlZXplciBvZiB0aGlzIGl0ZW0uUQEtIGBmcmVlX2hvbGRpbmdgOiBXaGV0aGVyIGEgZGVwb3NpdCBpcyB0YWtlbiBmb3IgaG9sZGluZyBhbiBpdGVtIG9mIHRoaXMgY29sbGVjdGlvbi45AS0gYGlzX2Zyb3plbmA6IFdoZXRoZXIgdGhpcyBjb2xsZWN0aW9uIGlzIGZyb3plbiBleGNlcHQgZm9yIHBlcm1pc3Npb25lZC9hZG1pbjRpbnN0cnVjdGlvbnMuAOBFbWl0cyBgSXRlbVN0YXR1c0NoYW5nZWRgIHdpdGggdGhlIGlkZW50aXR5IG9mIHRoZSBpdGVtLgA4V2VpZ2h0OiBgTygxKWA0c2V0X2F0dHJpYnV0ZRABKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAAShtYXliZV9pdGVt5AFET3B0aW9uPFQ6Okl0ZW1JZD4AAQxrZXmdAQFsQm91bmRlZFZlYzx1OCwgVDo6S2V5TGltaXQ+AAEUdmFsdWV8AXRCb3VuZGVkVmVjPHU4LCBUOjpWYWx1ZUxpbWl0PgAQRKhTZXQgYW4gYXR0cmlidXRlIGZvciBhIGNvbGxlY3Rpb24gb3IgaXRlbS4AXQFPcmlnaW4gbXVzdCBiZSBlaXRoZXIgYEZvcmNlT3JpZ2luYCBvciBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBPd25lciBvZiB0aGU0YGNvbGxlY3Rpb25gLgBRAUlmIHRoZSBvcmlnaW4gaXMgU2lnbmVkLCB0aGVuIGZ1bmRzIG9mIHNpZ25lciBhcmUgcmVzZXJ2ZWQgYWNjb3JkaW5nIHRvIHRoZSBmb3JtdWxhOikBYE1ldGFkYXRhRGVwb3NpdEJhc2UgKyBEZXBvc2l0UGVyQnl0ZSAqIChrZXkubGVuICsgdmFsdWUubGVuKWAgdGFraW5nIGludG+MYWNjb3VudCBhbnkgYWxyZWFkeSByZXNlcnZlZCBmdW5kcy4AOQEtIGBjb2xsZWN0aW9uYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGNvbGxlY3Rpb24gd2hvc2UgaXRlbSdzIG1ldGFkYXRhIHRvIHNldC4FAS0gYG1heWJlX2l0ZW1gOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgaXRlbSB3aG9zZSBtZXRhZGF0YSB0byBzZXQuiC0gYGtleWA6IFRoZSBrZXkgb2YgdGhlIGF0dHJpYnV0ZS7MLSBgdmFsdWVgOiBUaGUgdmFsdWUgdG8gd2hpY2ggdG8gc2V0IHRoZSBhdHRyaWJ1dGUuAFRFbWl0cyBgQXR0cmlidXRlU2V0YC4AOFdlaWdodDogYE8oMSlgPGNsZWFyX2F0dHJpYnV0ZQwBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAAShtYXliZV9pdGVt5AFET3B0aW9uPFQ6Okl0ZW1JZD4AAQxrZXmdAQFsQm91bmRlZFZlYzx1OCwgVDo6S2V5TGltaXQ+ABE4sENsZWFyIGFuIGF0dHJpYnV0ZSBmb3IgYSBjb2xsZWN0aW9uIG9yIGl0ZW0uAF0BT3JpZ2luIG11c3QgYmUgZWl0aGVyIGBGb3JjZU9yaWdpbmAgb3IgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgT3duZXIgb2YgdGhlNGBjb2xsZWN0aW9uYC4AwEFueSBkZXBvc2l0IGlzIGZyZWVkIGZvciB0aGUgY29sbGVjdGlvbidzIG93bmVyLgBBAS0gYGNvbGxlY3Rpb25gOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgY29sbGVjdGlvbiB3aG9zZSBpdGVtJ3MgbWV0YWRhdGEgdG8gY2xlYXIuDQEtIGBtYXliZV9pdGVtYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGl0ZW0gd2hvc2UgbWV0YWRhdGEgdG8gY2xlYXIuiC0gYGtleWA6IFRoZSBrZXkgb2YgdGhlIGF0dHJpYnV0ZS4AZEVtaXRzIGBBdHRyaWJ1dGVDbGVhcmVkYC4AOFdlaWdodDogYE8oMSlgMHNldF9tZXRhZGF0YRABKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAEQZGF0YWEEAXhCb3VuZGVkVmVjPHU4LCBUOjpTdHJpbmdMaW1pdD4AASRpc19mcm96ZW5dAQEQYm9vbAASRHRTZXQgdGhlIG1ldGFkYXRhIGZvciBhbiBpdGVtLgBdAU9yaWdpbiBtdXN0IGJlIGVpdGhlciBgRm9yY2VPcmlnaW5gIG9yIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIE93bmVyIG9mIHRoZTRgY29sbGVjdGlvbmAuAFEBSWYgdGhlIG9yaWdpbiBpcyBTaWduZWQsIHRoZW4gZnVuZHMgb2Ygc2lnbmVyIGFyZSByZXNlcnZlZCBhY2NvcmRpbmcgdG8gdGhlIGZvcm11bGE69GBNZXRhZGF0YURlcG9zaXRCYXNlICsgRGVwb3NpdFBlckJ5dGUgKiBkYXRhLmxlbmAgdGFraW5nIGludG+MYWNjb3VudCBhbnkgYWxyZWFkeSByZXNlcnZlZCBmdW5kcy4AOQEtIGBjb2xsZWN0aW9uYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGNvbGxlY3Rpb24gd2hvc2UgaXRlbSdzIG1ldGFkYXRhIHRvIHNldC7sLSBgaXRlbWA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBpdGVtIHdob3NlIG1ldGFkYXRhIHRvIHNldC5NAS0gYGRhdGFgOiBUaGUgZ2VuZXJhbCBpbmZvcm1hdGlvbiBvZiB0aGlzIGl0ZW0uIExpbWl0ZWQgaW4gbGVuZ3RoIGJ5IGBTdHJpbmdMaW1pdGAuNQEtIGBpc19mcm96ZW5gOiBXaGV0aGVyIHRoZSBtZXRhZGF0YSBzaG91bGQgYmUgZnJvemVuIGFnYWluc3QgZnVydGhlciBjaGFuZ2VzLgBQRW1pdHMgYE1ldGFkYXRhU2V0YC4AOFdlaWdodDogYE8oMSlgOGNsZWFyX21ldGFkYXRhCAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAEzR8Q2xlYXIgdGhlIG1ldGFkYXRhIGZvciBhbiBpdGVtLgBdAU9yaWdpbiBtdXN0IGJlIGVpdGhlciBgRm9yY2VPcmlnaW5gIG9yIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIE93bmVyIG9mIHRoZRxgaXRlbWAuAMBBbnkgZGVwb3NpdCBpcyBmcmVlZCBmb3IgdGhlIGNvbGxlY3Rpb24ncyBvd25lci4AQQEtIGBjb2xsZWN0aW9uYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGNvbGxlY3Rpb24gd2hvc2UgaXRlbSdzIG1ldGFkYXRhIHRvIGNsZWFyLvQtIGBpdGVtYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGl0ZW0gd2hvc2UgbWV0YWRhdGEgdG8gY2xlYXIuAGBFbWl0cyBgTWV0YWRhdGFDbGVhcmVkYC4AOFdlaWdodDogYE8oMSlgXHNldF9jb2xsZWN0aW9uX21ldGFkYXRhDAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGRhdGFhBAF4Qm91bmRlZFZlYzx1OCwgVDo6U3RyaW5nTGltaXQ+AAEkaXNfZnJvemVuXQEBEGJvb2wAFECIU2V0IHRoZSBtZXRhZGF0YSBmb3IgYSBjb2xsZWN0aW9uLgBVAU9yaWdpbiBtdXN0IGJlIGVpdGhlciBgRm9yY2VPcmlnaW5gIG9yIGBTaWduZWRgIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgT3duZXIgb2ZEdGhlIGBjb2xsZWN0aW9uYC4AWQFJZiB0aGUgb3JpZ2luIGlzIGBTaWduZWRgLCB0aGVuIGZ1bmRzIG9mIHNpZ25lciBhcmUgcmVzZXJ2ZWQgYWNjb3JkaW5nIHRvIHRoZSBmb3JtdWxhOvRgTWV0YWRhdGFEZXBvc2l0QmFzZSArIERlcG9zaXRQZXJCeXRlICogZGF0YS5sZW5gIHRha2luZyBpbnRvjGFjY291bnQgYW55IGFscmVhZHkgcmVzZXJ2ZWQgZnVuZHMuABEBLSBgY29sbGVjdGlvbmA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBpdGVtIHdob3NlIG1ldGFkYXRhIHRvIHVwZGF0ZS5NAS0gYGRhdGFgOiBUaGUgZ2VuZXJhbCBpbmZvcm1hdGlvbiBvZiB0aGlzIGl0ZW0uIExpbWl0ZWQgaW4gbGVuZ3RoIGJ5IGBTdHJpbmdMaW1pdGAuNQEtIGBpc19mcm96ZW5gOiBXaGV0aGVyIHRoZSBtZXRhZGF0YSBzaG91bGQgYmUgZnJvemVuIGFnYWluc3QgZnVydGhlciBjaGFuZ2VzLgB4RW1pdHMgYENvbGxlY3Rpb25NZXRhZGF0YVNldGAuADhXZWlnaHQ6IGBPKDEpYGRjbGVhcl9jb2xsZWN0aW9uX21ldGFkYXRhBAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAAVMJBDbGVhciB0aGUgbWV0YWRhdGEgZm9yIGEgY29sbGVjdGlvbi4AVQFPcmlnaW4gbXVzdCBiZSBlaXRoZXIgYEZvcmNlT3JpZ2luYCBvciBgU2lnbmVkYCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIE93bmVyIG9mRHRoZSBgY29sbGVjdGlvbmAuAMBBbnkgZGVwb3NpdCBpcyBmcmVlZCBmb3IgdGhlIGNvbGxlY3Rpb24ncyBvd25lci4AJQEtIGBjb2xsZWN0aW9uYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGNvbGxlY3Rpb24gd2hvc2UgbWV0YWRhdGEgdG8gY2xlYXIuAIhFbWl0cyBgQ29sbGVjdGlvbk1ldGFkYXRhQ2xlYXJlZGAuADhXZWlnaHQ6IGBPKDEpYFBzZXRfYWNjZXB0X293bmVyc2hpcAQBQG1heWJlX2NvbGxlY3Rpb27kAVxPcHRpb248VDo6Q29sbGVjdGlvbklkPgAWKBEBU2V0IChvciByZXNldCkgdGhlIGFjY2VwdGFuY2Ugb2Ygb3duZXJzaGlwIGZvciBhIHBhcnRpY3VsYXIgYWNjb3VudC4AYQFPcmlnaW4gbXVzdCBiZSBgU2lnbmVkYCBhbmQgaWYgYG1heWJlX2NvbGxlY3Rpb25gIGlzIGBTb21lYCwgdGhlbiB0aGUgc2lnbmVyIG11c3QgaGF2ZSBhTHByb3ZpZGVyIHJlZmVyZW5jZS4AUQEtIGBtYXliZV9jb2xsZWN0aW9uYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGNvbGxlY3Rpb24gd2hvc2Ugb3duZXJzaGlwIHRoZSBzaWduZXIgaXNhASAgd2lsbGluZyB0byBhY2NlcHQsIG9yIGlmIGBOb25lYCwgYW4gaW5kaWNhdGlvbiB0aGF0IHRoZSBzaWduZXIgaXMgd2lsbGluZyB0byBhY2NlcHQgbm9cICBvd25lcnNoaXAgdHJhbnNmZXJhbC4AjEVtaXRzIGBPd25lcnNoaXBBY2NlcHRhbmNlQ2hhbmdlZGAuZHNldF9jb2xsZWN0aW9uX21heF9zdXBwbHkIAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEobWF4X3N1cHBseTgBDHUzMgAXLOBTZXQgdGhlIG1heGltdW0gYW1vdW50IG9mIGl0ZW1zIGEgY29sbGVjdGlvbiBjb3VsZCBoYXZlLgBVAU9yaWdpbiBtdXN0IGJlIGVpdGhlciBgRm9yY2VPcmlnaW5gIG9yIGBTaWduZWRgIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgT3duZXIgb2ZEdGhlIGBjb2xsZWN0aW9uYC4A5E5vdGU6IFRoaXMgZnVuY3Rpb24gY2FuIG9ubHkgc3VjY2VlZCBvbmNlIHBlciBjb2xsZWN0aW9uLgDsLSBgY29sbGVjdGlvbmA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBjb2xsZWN0aW9uIHRvIGNoYW5nZS4RAS0gYG1heF9zdXBwbHlgOiBUaGUgbWF4aW11bSBhbW91bnQgb2YgaXRlbXMgYSBjb2xsZWN0aW9uIGNvdWxkIGhhdmUuANRFbWl0cyBgQ29sbGVjdGlvbk1heFN1cHBseVNldGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLiRzZXRfcHJpY2UQAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAABFHByaWNlZQQBXE9wdGlvbjxJdGVtUHJpY2U8VCwgST4+AAFEd2hpdGVsaXN0ZWRfYnV5ZXJZBAFwT3B0aW9uPEFjY291bnRJZExvb2t1cE9mPFQ+PgAYLJRTZXQgKG9yIHJlc2V0KSB0aGUgcHJpY2UgZm9yIGFuIGl0ZW0uAAEBT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCBtdXN0IGJlIHRoZSBvd25lciBvZiB0aGUgYXNzZXQgYGl0ZW1gLgCsLSBgY29sbGVjdGlvbmA6IFRoZSBjb2xsZWN0aW9uIG9mIHRoZSBpdGVtLqAtIGBpdGVtYDogVGhlIGl0ZW0gdG8gc2V0IHRoZSBwcmljZSBmb3IuDQEtIGBwcmljZWA6IFRoZSBwcmljZSBmb3IgdGhlIGl0ZW0uIFBhc3MgYE5vbmVgLCB0byByZXNldCB0aGUgcHJpY2Uu9C0gYGJ1eWVyYDogUmVzdHJpY3RzIHRoZSBidXkgb3BlcmF0aW9uIHRvIGEgc3BlY2lmaWMgYWNjb3VudC4A7EVtaXRzIGBJdGVtUHJpY2VTZXRgIG9uIHN1Y2Nlc3MgaWYgdGhlIHByaWNlIGlzIG5vdCBgTm9uZWAu7EVtaXRzIGBJdGVtUHJpY2VSZW1vdmVkYCBvbiBzdWNjZXNzIGlmIHRoZSBwcmljZSBpcyBgTm9uZWAuIGJ1eV9pdGVtDAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAASRiaWRfcHJpY2VZAQE8SXRlbVByaWNlPFQsIEk+ABkkqEFsbG93cyB0byBidXkgYW4gaXRlbSBpZiBpdCdzIHVwIGZvciBzYWxlLgD4T3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCBtdXN0IG5vdCBiZSB0aGUgb3duZXIgb2YgdGhlIGBpdGVtYC4ArC0gYGNvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiBvZiB0aGUgaXRlbS6sLSBgaXRlbWA6IFRoZSBpdGVtIHRoZSBzZW5kZXIgd2FudHMgdG8gYnV5LtgtIGBiaWRfcHJpY2VgOiBUaGUgcHJpY2UgdGhlIHNlbmRlciBpcyB3aWxsaW5nIHRvIHBheS4AeEVtaXRzIGBJdGVtQm91Z2h0YCBvbiBzdWNjZXNzLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy5VBAw4cGFsbGV0X3VuaXF1ZXMUdHlwZXM4RGVzdHJveVdpdG5lc3MAAAwBFGl0ZW1zZAEMdTMyAAE4aXRlbV9tZXRhZGF0YXNkAQx1MzIAAShhdHRyaWJ1dGVzZAEMdTMyAABZBAQYT3B0aW9uBARUAQABCBBOb25lAAAAEFNvbWUEAAAAAAEAAF0EAAACOABhBAxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQwEUwAABAAYARhWZWM8VD4AAGUEBBhPcHRpb24EBFQBWQEBCBBOb25lAAAAEFNvbWUEAFkBAAABAABpBAwscGFsbGV0X25mdHMYcGFsbGV0EENhbGwIBFQABEkAAZwYY3JlYXRlCAEUYWRtaW4AAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGNvbmZpZ20EAWRDb2xsZWN0aW9uQ29uZmlnRm9yPFQsIEk+AAA8CQFJc3N1ZSBhIG5ldyBjb2xsZWN0aW9uIG9mIG5vbi1mdW5naWJsZSBpdGVtcyBmcm9tIGEgcHVibGljIG9yaWdpbi4AHQFUaGlzIG5ldyBjb2xsZWN0aW9uIGhhcyBubyBpdGVtcyBpbml0aWFsbHkgYW5kIGl0cyBvd25lciBpcyB0aGUgb3JpZ2luLgAlAVRoZSBvcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgbXVzdCBoYXZlIHN1ZmZpY2llbnQgZnVuZHMgZnJlZS4AxGBDb2xsZWN0aW9uRGVwb3NpdGAgZnVuZHMgb2Ygc2VuZGVyIGFyZSByZXNlcnZlZC4ALFBhcmFtZXRlcnM6RQEtIGBhZG1pbmA6IFRoZSBhZG1pbiBvZiB0aGlzIGNvbGxlY3Rpb24uIFRoZSBhZG1pbiBpcyB0aGUgaW5pdGlhbCBhZGRyZXNzIG9mIGVhY2iYbWVtYmVyIG9mIHRoZSBjb2xsZWN0aW9uJ3MgYWRtaW4gdGVhbS4AmEVtaXRzIGBDcmVhdGVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuADhXZWlnaHQ6IGBPKDEpYDBmb3JjZV9jcmVhdGUIARRvd25lcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYY29uZmlnbQQBZENvbGxlY3Rpb25Db25maWdGb3I8VCwgST4AATwZAUlzc3VlIGEgbmV3IGNvbGxlY3Rpb24gb2Ygbm9uLWZ1bmdpYmxlIGl0ZW1zIGZyb20gYSBwcml2aWxlZ2VkIG9yaWdpbi4ArFRoaXMgbmV3IGNvbGxlY3Rpb24gaGFzIG5vIGl0ZW1zIGluaXRpYWxseS4ApFRoZSBvcmlnaW4gbXVzdCBjb25mb3JtIHRvIGBGb3JjZU9yaWdpbmAuAJxVbmxpa2UgYGNyZWF0ZWAsIG5vIGZ1bmRzIGFyZSByZXNlcnZlZC4AOQEtIGBvd25lcmA6IFRoZSBvd25lciBvZiB0aGlzIGNvbGxlY3Rpb24gb2YgaXRlbXMuIFRoZSBvd25lciBoYXMgZnVsbCBzdXBlcnVzZXJZASAgcGVybWlzc2lvbnMgb3ZlciB0aGlzIGl0ZW0sIGJ1dCBtYXkgbGF0ZXIgY2hhbmdlIGFuZCBjb25maWd1cmUgdGhlIHBlcm1pc3Npb25zIHVzaW5nmCAgYHRyYW5zZmVyX293bmVyc2hpcGAgYW5kIGBzZXRfdGVhbWAuAKxFbWl0cyBgRm9yY2VDcmVhdGVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuADhXZWlnaHQ6IGBPKDEpYBxkZXN0cm95CAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABHHdpdG5lc3OJBAE4RGVzdHJveVdpdG5lc3MAAkScRGVzdHJveSBhIGNvbGxlY3Rpb24gb2YgZnVuZ2libGUgaXRlbXMuAF0BVGhlIG9yaWdpbiBtdXN0IGNvbmZvcm0gdG8gYEZvcmNlT3JpZ2luYCBvciBtdXN0IGJlIGBTaWduZWRgIGFuZCB0aGUgc2VuZGVyIG11c3QgYmUgdGhlaG93bmVyIG9mIHRoZSBgY29sbGVjdGlvbmAuANxOT1RFOiBUaGUgY29sbGVjdGlvbiBtdXN0IGhhdmUgMCBpdGVtcyB0byBiZSBkZXN0cm95ZWQuAAUBLSBgY29sbGVjdGlvbmA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBjb2xsZWN0aW9uIHRvIGJlIGRlc3Ryb3llZC4xAS0gYHdpdG5lc3NgOiBJbmZvcm1hdGlvbiBvbiB0aGUgaXRlbXMgbWludGVkIGluIHRoZSBjb2xsZWN0aW9uLiBUaGlzIG11c3QgYmUgY29ycmVjdC4AoEVtaXRzIGBEZXN0cm95ZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4AdFdlaWdodDogYE8obSArIGMgKyBhKWAgd2hlcmU6eC0gYG0gPSB3aXRuZXNzLml0ZW1fbWV0YWRhdGFzYHAtIGBjID0gd2l0bmVzcy5pdGVtX2NvbmZpZ3NgaC0gYGEgPSB3aXRuZXNzLmF0dHJpYnV0ZXNgEG1pbnQQAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAABHG1pbnRfdG8AAVBBY2NvdW50SWRMb29rdXBPZjxUPgABMHdpdG5lc3NfZGF0YY0EAdhPcHRpb248TWludFdpdG5lc3M8VDo6SXRlbUlkLCBEZXBvc2l0QmFsYW5jZU9mPFQsIEk+Pj4AA0CgTWludCBhbiBpdGVtIG9mIGEgcGFydGljdWxhciBjb2xsZWN0aW9uLgBRAVRoZSBvcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgbXVzdCBjb21wbHkgd2l0aCB0aGUgYG1pbnRfc2V0dGluZ3NgIHJ1bGVzLgDgLSBgY29sbGVjdGlvbmA6IFRoZSBjb2xsZWN0aW9uIG9mIHRoZSBpdGVtIHRvIGJlIG1pbnRlZC6gLSBgaXRlbWA6IEFuIGlkZW50aWZpZXIgb2YgdGhlIG5ldyBpdGVtLuAtIGBtaW50X3RvYDogQWNjb3VudCBpbnRvIHdoaWNoIHRoZSBpdGVtIHdpbGwgYmUgbWludGVkLkUBLSBgd2l0bmVzc19kYXRhYDogV2hlbiB0aGUgbWludCB0eXBlIGlzIGBIb2xkZXJPZihjb2xsZWN0aW9uX2lkKWAsIHRoZW4gdGhlIG93bmVkWQEgIGl0ZW1faWQgZnJvbSB0aGF0IGNvbGxlY3Rpb24gbmVlZHMgdG8gYmUgcHJvdmlkZWQgd2l0aGluIHRoZSB3aXRuZXNzIGRhdGEgb2JqZWN0LiBJZmEBICB0aGUgbWludCBwcmljZSBpcyBzZXQsIHRoZW4gaXQgc2hvdWxkIGJlIGFkZGl0aW9uYWxseSBjb25maXJtZWQgaW4gdGhlIGB3aXRuZXNzX2RhdGFgLgBRAU5vdGU6IHRoZSBkZXBvc2l0IHdpbGwgYmUgdGFrZW4gZnJvbSB0aGUgYG9yaWdpbmAgYW5kIG5vdCB0aGUgYG93bmVyYCBvZiB0aGUgYGl0ZW1gLgCURW1pdHMgYElzc3VlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLgA4V2VpZ2h0OiBgTygxKWAoZm9yY2VfbWludBABKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAEcbWludF90bwABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEsaXRlbV9jb25maWeVBAEoSXRlbUNvbmZpZwAENAUBTWludCBhbiBpdGVtIG9mIGEgcGFydGljdWxhciBjb2xsZWN0aW9uIGZyb20gYSBwcml2aWxlZ2VkIG9yaWdpbi4AXQFUaGUgb3JpZ2luIG11c3QgY29uZm9ybSB0byBgRm9yY2VPcmlnaW5gIG9yIG11c3QgYmUgYFNpZ25lZGAgYW5kIHRoZSBzZW5kZXIgbXVzdCBiZSB0aGVsSXNzdWVyIG9mIHRoZSBgY29sbGVjdGlvbmAuAOAtIGBjb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gb2YgdGhlIGl0ZW0gdG8gYmUgbWludGVkLqAtIGBpdGVtYDogQW4gaWRlbnRpZmllciBvZiB0aGUgbmV3IGl0ZW0u4C0gYG1pbnRfdG9gOiBBY2NvdW50IGludG8gd2hpY2ggdGhlIGl0ZW0gd2lsbCBiZSBtaW50ZWQuqC0gYGl0ZW1fY29uZmlnYDogQSBjb25maWcgb2YgdGhlIG5ldyBpdGVtLgCURW1pdHMgYElzc3VlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLgA4V2VpZ2h0OiBgTygxKWAQYnVybggBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAUsWERlc3Ryb3kgYSBzaW5nbGUgaXRlbS4AXQFUaGUgb3JpZ2luIG11c3QgY29uZm9ybSB0byBgRm9yY2VPcmlnaW5gIG9yIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2lnbmluZyBhY2NvdW50IG11c3RsYmUgdGhlIG93bmVyIG9mIHRoZSBgaXRlbWAuAOAtIGBjb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gb2YgdGhlIGl0ZW0gdG8gYmUgYnVybmVkLoAtIGBpdGVtYDogVGhlIGl0ZW0gdG8gYmUgYnVybmVkLgA8RW1pdHMgYEJ1cm5lZGAuADhXZWlnaHQ6IGBPKDEpYCB0cmFuc2ZlcgwBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAEQZGVzdAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAY4wE1vdmUgYW4gaXRlbSBmcm9tIHRoZSBzZW5kZXIgYWNjb3VudCB0byBhbm90aGVyLgD0T3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2lnbmluZyBhY2NvdW50IG11c3QgYmUgZWl0aGVyOmgtIHRoZSBPd25lciBvZiB0aGUgYGl0ZW1gOzUBLSB0aGUgYXBwcm92ZWQgZGVsZWdhdGUgZm9yIHRoZSBgaXRlbWAgKGluIHRoaXMgY2FzZSwgdGhlIGFwcHJvdmFsIGlzIHJlc2V0KS4AKEFyZ3VtZW50czr0LSBgY29sbGVjdGlvbmA6IFRoZSBjb2xsZWN0aW9uIG9mIHRoZSBpdGVtIHRvIGJlIHRyYW5zZmVycmVkLpQtIGBpdGVtYDogVGhlIGl0ZW0gdG8gYmUgdHJhbnNmZXJyZWQu3C0gYGRlc3RgOiBUaGUgYWNjb3VudCB0byByZWNlaXZlIG93bmVyc2hpcCBvZiB0aGUgaXRlbS4AUEVtaXRzIGBUcmFuc2ZlcnJlZGAuADhXZWlnaHQ6IGBPKDEpYCRyZWRlcG9zaXQIAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEUaXRlbXNdBAE4VmVjPFQ6Okl0ZW1JZD4AB0ScUmUtZXZhbHVhdGUgdGhlIGRlcG9zaXRzIG9uIHNvbWUgaXRlbXMuADUBT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgT3duZXIgb2YgdGhlIGBjb2xsZWN0aW9uYC4A+C0gYGNvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiBvZiB0aGUgaXRlbXMgdG8gYmUgcmVldmFsdWF0ZWQuKQEtIGBpdGVtc2A6IFRoZSBpdGVtcyBvZiB0aGUgY29sbGVjdGlvbiB3aG9zZSBkZXBvc2l0cyB3aWxsIGJlIHJlZXZhbHVhdGVkLgAtAU5PVEU6IFRoaXMgZXhpc3RzIGFzIGEgYmVzdC1lZmZvcnQgZnVuY3Rpb24uIEFueSBpdGVtcyB3aGljaCBhcmUgdW5rbm93biBvcjkBaW4gdGhlIGNhc2UgdGhhdCB0aGUgb3duZXIgYWNjb3VudCBkb2VzIG5vdCBoYXZlIHJlc2VydmFibGUgZnVuZHMgdG8gcGF5IGZvciBhTQFkZXBvc2l0IGluY3JlYXNlIGFyZSBpZ25vcmVkLiBHZW5lcmFsbHkgdGhlIG93bmVyIGlzbid0IGdvaW5nIHRvIGNhbGwgdGhpcyBvbiBpdGVtc1UBd2hvc2UgZXhpc3RpbmcgZGVwb3NpdCBpcyBsZXNzIHRoYW4gdGhlIHJlZnJlc2hlZCBkZXBvc2l0IGFzIGl0IHdvdWxkIG9ubHkgY29zdCB0aGVtLHhzbyBpdCdzIG9mIGxpdHRsZSBjb25zZXF1ZW5jZS4AWQFJdCB3aWxsIHN0aWxsIHJldHVybiBhbiBlcnJvciBpbiB0aGUgY2FzZSB0aGF0IHRoZSBjb2xsZWN0aW9uIGlzIHVua25vd24gb3IgdGhlIHNpZ25lcnBpcyBub3QgcGVybWl0dGVkIHRvIGNhbGwgaXQuAGBXZWlnaHQ6IGBPKGl0ZW1zLmxlbigpKWBIbG9ja19pdGVtX3RyYW5zZmVyCAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQACCjIRGlzYWxsb3cgZnVydGhlciB1bnByaXZpbGVnZWQgdHJhbnNmZXIgb2YgYW4gaXRlbS4APQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBGcmVlemVyIG9mIHRoZSBgY29sbGVjdGlvbmAuAOQtIGBjb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gb2YgdGhlIGl0ZW0gdG8gYmUgY2hhbmdlZC64LSBgaXRlbWA6IFRoZSBpdGVtIHRvIGJlY29tZSBub24tdHJhbnNmZXJhYmxlLgBsRW1pdHMgYEl0ZW1UcmFuc2ZlckxvY2tlZGAuADhXZWlnaHQ6IGBPKDEpYFB1bmxvY2tfaXRlbV90cmFuc2ZlcggBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAkoqFJlLWFsbG93IHVucHJpdmlsZWdlZCB0cmFuc2ZlciBvZiBhbiBpdGVtLgA9AU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEZyZWV6ZXIgb2YgdGhlIGBjb2xsZWN0aW9uYC4A5C0gYGNvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiBvZiB0aGUgaXRlbSB0byBiZSBjaGFuZ2VkLqgtIGBpdGVtYDogVGhlIGl0ZW0gdG8gYmVjb21lIHRyYW5zZmVyYWJsZS4AdEVtaXRzIGBJdGVtVHJhbnNmZXJVbmxvY2tlZGAuADhXZWlnaHQ6IGBPKDEpYDxsb2NrX2NvbGxlY3Rpb24IAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAE0bG9ja19zZXR0aW5nc3EEAUhDb2xsZWN0aW9uU2V0dGluZ3MACjDYRGlzYWxsb3dzIHNwZWNpZmllZCBzZXR0aW5ncyBmb3IgdGhlIHdob2xlIGNvbGxlY3Rpb24uADUBT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgT3duZXIgb2YgdGhlIGBjb2xsZWN0aW9uYC4AsC0gYGNvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiB0byBiZSBsb2NrZWQutC0gYGxvY2tfc2V0dGluZ3NgOiBUaGUgc2V0dGluZ3MgdG8gYmUgbG9ja2VkLgAdAU5vdGU6IGl0J3MgcG9zc2libGUgdG8gb25seSBsb2NrKHNldCkgdGhlIHNldHRpbmcsIGJ1dCBub3QgdG8gdW5zZXQgaXQuAGRFbWl0cyBgQ29sbGVjdGlvbkxvY2tlZGAuADhXZWlnaHQ6IGBPKDEpYEh0cmFuc2Zlcl9vd25lcnNoaXAIAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEkbmV3X293bmVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4ACyyEQ2hhbmdlIHRoZSBPd25lciBvZiBhIGNvbGxlY3Rpb24uADUBT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgT3duZXIgb2YgdGhlIGBjb2xsZWN0aW9uYC4A9C0gYGNvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiB3aG9zZSBvd25lciBzaG91bGQgYmUgY2hhbmdlZC4JAS0gYG93bmVyYDogVGhlIG5ldyBPd25lciBvZiB0aGlzIGNvbGxlY3Rpb24uIFRoZXkgbXVzdCBoYXZlIGNhbGxlZEkBICBgc2V0X2FjY2VwdF9vd25lcnNoaXBgIHdpdGggYGNvbGxlY3Rpb25gIGluIG9yZGVyIGZvciB0aGlzIG9wZXJhdGlvbiB0byBzdWNjZWVkLgBURW1pdHMgYE93bmVyQ2hhbmdlZGAuADhXZWlnaHQ6IGBPKDEpYCBzZXRfdGVhbRABKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARhpc3N1ZXJZBAFwT3B0aW9uPEFjY291bnRJZExvb2t1cE9mPFQ+PgABFGFkbWluWQQBcE9wdGlvbjxBY2NvdW50SWRMb29rdXBPZjxUPj4AARxmcmVlemVyWQQBcE9wdGlvbjxBY2NvdW50SWRMb29rdXBPZjxUPj4ADEDUQ2hhbmdlIHRoZSBJc3N1ZXIsIEFkbWluIGFuZCBGcmVlemVyIG9mIGEgY29sbGVjdGlvbi4AXQFPcmlnaW4gbXVzdCBiZSBlaXRoZXIgYEZvcmNlT3JpZ2luYCBvciBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBPd25lciBvZiB0aGU0YGNvbGxlY3Rpb25gLgBRAU5vdGU6IGJ5IHNldHRpbmcgdGhlIHJvbGUgdG8gYE5vbmVgIG9ubHkgdGhlIGBGb3JjZU9yaWdpbmAgd2lsbCBiZSBhYmxlIHRvIGNoYW5nZSBpdGRhZnRlciB0byBgU29tZShhY2NvdW50KWAuAPAtIGBjb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gd2hvc2UgdGVhbSBzaG91bGQgYmUgY2hhbmdlZC64LSBgaXNzdWVyYDogVGhlIG5ldyBJc3N1ZXIgb2YgdGhpcyBjb2xsZWN0aW9uLrAtIGBhZG1pbmA6IFRoZSBuZXcgQWRtaW4gb2YgdGhpcyBjb2xsZWN0aW9uLsAtIGBmcmVlemVyYDogVGhlIG5ldyBGcmVlemVyIG9mIHRoaXMgY29sbGVjdGlvbi4AUEVtaXRzIGBUZWFtQ2hhbmdlZGAuADhXZWlnaHQ6IGBPKDEpYFhmb3JjZV9jb2xsZWN0aW9uX293bmVyCAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABFG93bmVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4ADSiEQ2hhbmdlIHRoZSBPd25lciBvZiBhIGNvbGxlY3Rpb24uAHRPcmlnaW4gbXVzdCBiZSBgRm9yY2VPcmlnaW5gLgDELSBgY29sbGVjdGlvbmA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBjb2xsZWN0aW9uLrAtIGBvd25lcmA6IFRoZSBuZXcgT3duZXIgb2YgdGhpcyBjb2xsZWN0aW9uLgBURW1pdHMgYE93bmVyQ2hhbmdlZGAuADhXZWlnaHQ6IGBPKDEpYFxmb3JjZV9jb2xsZWN0aW9uX2NvbmZpZwgBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARhjb25maWdtBAFkQ29sbGVjdGlvbkNvbmZpZ0ZvcjxULCBJPgAOKIhDaGFuZ2UgdGhlIGNvbmZpZyBvZiBhIGNvbGxlY3Rpb24uAHRPcmlnaW4gbXVzdCBiZSBgRm9yY2VPcmlnaW5gLgDELSBgY29sbGVjdGlvbmA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBjb2xsZWN0aW9uLrgtIGBjb25maWdgOiBUaGUgbmV3IGNvbmZpZyBvZiB0aGlzIGNvbGxlY3Rpb24uAIBFbWl0cyBgQ29sbGVjdGlvbkNvbmZpZ0NoYW5nZWRgLgA4V2VpZ2h0OiBgTygxKWBAYXBwcm92ZV90cmFuc2ZlchABKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAEgZGVsZWdhdGUAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABOG1heWJlX2RlYWRsaW5l5AFwT3B0aW9uPEJsb2NrTnVtYmVyRm9yPFQsIEk+PgAPOBUBQXBwcm92ZSBhbiBpdGVtIHRvIGJlIHRyYW5zZmVycmVkIGJ5IGEgZGVsZWdhdGVkIHRoaXJkLXBhcnR5IGFjY291bnQuAF0BT3JpZ2luIG11c3QgYmUgZWl0aGVyIGBGb3JjZU9yaWdpbmAgb3IgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgT3duZXIgb2YgdGhlHGBpdGVtYC4ARQEtIGBjb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gb2YgdGhlIGl0ZW0gdG8gYmUgYXBwcm92ZWQgZm9yIGRlbGVnYXRlZCB0cmFuc2Zlci7kLSBgaXRlbWA6IFRoZSBpdGVtIHRvIGJlIGFwcHJvdmVkIGZvciBkZWxlZ2F0ZWQgdHJhbnNmZXIuGQEtIGBkZWxlZ2F0ZWA6IFRoZSBhY2NvdW50IHRvIGRlbGVnYXRlIHBlcm1pc3Npb24gdG8gdHJhbnNmZXIgdGhlIGl0ZW0uSQEtIGBtYXliZV9kZWFkbGluZWA6IE9wdGlvbmFsIGRlYWRsaW5lIGZvciB0aGUgYXBwcm92YWwuIFNwZWNpZmllZCBieSBwcm92aWRpbmcgdGhl2AludW1iZXIgb2YgYmxvY2tzIGFmdGVyIHdoaWNoIHRoZSBhcHByb3ZhbCB3aWxsIGV4cGlyZQCQRW1pdHMgYFRyYW5zZmVyQXBwcm92ZWRgIG9uIHN1Y2Nlc3MuADhXZWlnaHQ6IGBPKDEpYDxjYW5jZWxfYXBwcm92YWwMAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAABIGRlbGVnYXRlAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AEDjkQ2FuY2VsIG9uZSBvZiB0aGUgdHJhbnNmZXIgYXBwcm92YWxzIGZvciBhIHNwZWNpZmljIGl0ZW0uAFhPcmlnaW4gbXVzdCBiZSBlaXRoZXI6VC0gdGhlIGBGb3JjZWAgb3JpZ2luO+QtIGBTaWduZWRgIHdpdGggdGhlIHNpZ25lciBiZWluZyB0aGUgT3duZXIgb2YgdGhlIGBpdGVtYDsAKEFyZ3VtZW50czo9AS0gYGNvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiBvZiB0aGUgaXRlbSBvZiB3aG9zZSBhcHByb3ZhbCB3aWxsIGJlIGNhbmNlbGxlZC4lAS0gYGl0ZW1gOiBUaGUgaXRlbSBvZiB0aGUgY29sbGVjdGlvbiBvZiB3aG9zZSBhcHByb3ZhbCB3aWxsIGJlIGNhbmNlbGxlZC4BAS0gYGRlbGVnYXRlYDogVGhlIGFjY291bnQgdGhhdCBpcyBnb2luZyB0byBsb29zZSB0aGVpciBhcHByb3ZhbC4AlEVtaXRzIGBBcHByb3ZhbENhbmNlbGxlZGAgb24gc3VjY2Vzcy4AOFdlaWdodDogYE8oMSlgcGNsZWFyX2FsbF90cmFuc2Zlcl9hcHByb3ZhbHMIAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAARNLBDYW5jZWwgYWxsIHRoZSBhcHByb3ZhbHMgb2YgYSBzcGVjaWZpYyBpdGVtLgBYT3JpZ2luIG11c3QgYmUgZWl0aGVyOlQtIHRoZSBgRm9yY2VgIG9yaWdpbjvkLSBgU2lnbmVkYCB3aXRoIHRoZSBzaWduZXIgYmVpbmcgdGhlIE93bmVyIG9mIHRoZSBgaXRlbWA7AChBcmd1bWVudHM6OQEtIGBjb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gb2YgdGhlIGl0ZW0gb2Ygd2hvc2UgYXBwcm92YWxzIHdpbGwgYmUgY2xlYXJlZC4hAS0gYGl0ZW1gOiBUaGUgaXRlbSBvZiB0aGUgY29sbGVjdGlvbiBvZiB3aG9zZSBhcHByb3ZhbHMgd2lsbCBiZSBjbGVhcmVkLgCkRW1pdHMgYEFsbEFwcHJvdmFsc0NhbmNlbGxlZGAgb24gc3VjY2Vzcy4AOFdlaWdodDogYE8oMSlgUGxvY2tfaXRlbV9wcm9wZXJ0aWVzEAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAATRsb2NrX21ldGFkYXRhXQEBEGJvb2wAATxsb2NrX2F0dHJpYnV0ZXNdAQEQYm9vbAASROhEaXNhbGxvd3MgY2hhbmdpbmcgdGhlIG1ldGFkYXRhIG9yIGF0dHJpYnV0ZXMgb2YgdGhlIGl0ZW0uAEEBT3JpZ2luIG11c3QgYmUgZWl0aGVyIGBGb3JjZU9yaWdpbmAgb3IgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgQWRtaW5Qb2YgdGhlIGBjb2xsZWN0aW9uYC4AtC0gYGNvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiBpZiB0aGUgYGl0ZW1gLnwtIGBpdGVtYDogQW4gaXRlbSB0byBiZSBsb2NrZWQuDQEtIGBsb2NrX21ldGFkYXRhYDogU3BlY2lmaWVzIHdoZXRoZXIgdGhlIG1ldGFkYXRhIHNob3VsZCBiZSBsb2NrZWQuYQEtIGBsb2NrX2F0dHJpYnV0ZXNgOiBTcGVjaWZpZXMgd2hldGhlciB0aGUgYXR0cmlidXRlcyBpbiB0aGUgYENvbGxlY3Rpb25Pd25lcmAgbmFtZXNwYWNlTCAgc2hvdWxkIGJlIGxvY2tlZC4AXQFOb3RlOiBgbG9ja19hdHRyaWJ1dGVzYCBhZmZlY3RzIHRoZSBhdHRyaWJ1dGVzIGluIHRoZSBgQ29sbGVjdGlvbk93bmVyYCBuYW1lc3BhY2Ugb25seS5FAVdoZW4gdGhlIG1ldGFkYXRhIG9yIGF0dHJpYnV0ZXMgYXJlIGxvY2tlZCwgaXQgd29uJ3QgYmUgcG9zc2libGUgdGhlIHVubG9jayB0aGVtLgB0RW1pdHMgYEl0ZW1Qcm9wZXJ0aWVzTG9ja2VkYC4AOFdlaWdodDogYE8oMSlgNHNldF9hdHRyaWJ1dGUUAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEobWF5YmVfaXRlbeQBRE9wdGlvbjxUOjpJdGVtSWQ+AAEkbmFtZXNwYWNlmQQBgEF0dHJpYnV0ZU5hbWVzcGFjZTxUOjpBY2NvdW50SWQ+AAEMa2V5fAFsQm91bmRlZFZlYzx1OCwgVDo6S2V5TGltaXQ+AAEUdmFsdWVFAQF0Qm91bmRlZFZlYzx1OCwgVDo6VmFsdWVMaW1pdD4AE1ioU2V0IGFuIGF0dHJpYnV0ZSBmb3IgYSBjb2xsZWN0aW9uIG9yIGl0ZW0uAAEBT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCBtdXN0IGNvbmZvcm0gdG8gdGhlIG5hbWVzcGFjZSBydWxlc2V0Oj0BLSBgQ29sbGVjdGlvbk93bmVyYCBuYW1lc3BhY2UgY291bGQgYmUgbW9kaWZpZWQgYnkgdGhlIGBjb2xsZWN0aW9uYCBBZG1pbiBvbmx5O1kBLSBgSXRlbU93bmVyYCBuYW1lc3BhY2UgY291bGQgYmUgbW9kaWZpZWQgYnkgdGhlIGBtYXliZV9pdGVtYCBvd25lciBvbmx5LiBgbWF5YmVfaXRlbWB0ICBzaG91bGQgYmUgc2V0IGluIHRoYXQgY2FzZTtVAS0gYEFjY291bnQoQWNjb3VudElkKWAgbmFtZXNwYWNlIGNvdWxkIGJlIG1vZGlmaWVkIG9ubHkgd2hlbiB0aGUgYG9yaWdpbmAgd2FzIGdpdmVuIGFYICBwZXJtaXNzaW9uIHRvIGRvIHNvOwDwVGhlIGZ1bmRzIG9mIGBvcmlnaW5gIGFyZSByZXNlcnZlZCBhY2NvcmRpbmcgdG8gdGhlIGZvcm11bGE6LQFgQXR0cmlidXRlRGVwb3NpdEJhc2UgKyBEZXBvc2l0UGVyQnl0ZSAqIChrZXkubGVuICsgdmFsdWUubGVuKWAgdGFraW5nIGludG+MYWNjb3VudCBhbnkgYWxyZWFkeSByZXNlcnZlZCBmdW5kcy4AOQEtIGBjb2xsZWN0aW9uYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGNvbGxlY3Rpb24gd2hvc2UgaXRlbSdzIG1ldGFkYXRhIHRvIHNldC4FAS0gYG1heWJlX2l0ZW1gOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgaXRlbSB3aG9zZSBtZXRhZGF0YSB0byBzZXQulC0gYG5hbWVzcGFjZWA6IEF0dHJpYnV0ZSdzIG5hbWVzcGFjZS6ILSBga2V5YDogVGhlIGtleSBvZiB0aGUgYXR0cmlidXRlLswtIGB2YWx1ZWA6IFRoZSB2YWx1ZSB0byB3aGljaCB0byBzZXQgdGhlIGF0dHJpYnV0ZS4AVEVtaXRzIGBBdHRyaWJ1dGVTZXRgLgA4V2VpZ2h0OiBgTygxKWBMZm9yY2Vfc2V0X2F0dHJpYnV0ZRgBGHNldF9hc5EBAVBPcHRpb248VDo6QWNjb3VudElkPgABKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAAShtYXliZV9pdGVt5AFET3B0aW9uPFQ6Okl0ZW1JZD4AASRuYW1lc3BhY2WZBAGAQXR0cmlidXRlTmFtZXNwYWNlPFQ6OkFjY291bnRJZD4AAQxrZXl8AWxCb3VuZGVkVmVjPHU4LCBUOjpLZXlMaW1pdD4AARR2YWx1ZUUBAXRCb3VuZGVkVmVjPHU4LCBUOjpWYWx1ZUxpbWl0PgAURMBGb3JjZS1zZXQgYW4gYXR0cmlidXRlIGZvciBhIGNvbGxlY3Rpb24gb3IgaXRlbS4AdE9yaWdpbiBtdXN0IGJlIGBGb3JjZU9yaWdpbmAuADkBSWYgdGhlIGF0dHJpYnV0ZSBhbHJlYWR5IGV4aXN0cyBhbmQgaXQgd2FzIHNldCBieSBhbm90aGVyIGFjY291bnQsIHRoZSBkZXBvc2l0nHdpbGwgYmUgcmV0dXJuZWQgdG8gdGhlIHByZXZpb3VzIG93bmVyLgC8LSBgc2V0X2FzYDogQW4gb3B0aW9uYWwgb3duZXIgb2YgdGhlIGF0dHJpYnV0ZS45AS0gYGNvbGxlY3Rpb25gOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgY29sbGVjdGlvbiB3aG9zZSBpdGVtJ3MgbWV0YWRhdGEgdG8gc2V0LgUBLSBgbWF5YmVfaXRlbWA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBpdGVtIHdob3NlIG1ldGFkYXRhIHRvIHNldC6ULSBgbmFtZXNwYWNlYDogQXR0cmlidXRlJ3MgbmFtZXNwYWNlLogtIGBrZXlgOiBUaGUga2V5IG9mIHRoZSBhdHRyaWJ1dGUuzC0gYHZhbHVlYDogVGhlIHZhbHVlIHRvIHdoaWNoIHRvIHNldCB0aGUgYXR0cmlidXRlLgBURW1pdHMgYEF0dHJpYnV0ZVNldGAuADhXZWlnaHQ6IGBPKDEpYDxjbGVhcl9hdHRyaWJ1dGUQAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEobWF5YmVfaXRlbeQBRE9wdGlvbjxUOjpJdGVtSWQ+AAEkbmFtZXNwYWNlmQQBgEF0dHJpYnV0ZU5hbWVzcGFjZTxUOjpBY2NvdW50SWQ+AAEMa2V5fAFsQm91bmRlZFZlYzx1OCwgVDo6S2V5TGltaXQ+ABU8sENsZWFyIGFuIGF0dHJpYnV0ZSBmb3IgYSBjb2xsZWN0aW9uIG9yIGl0ZW0uAF0BT3JpZ2luIG11c3QgYmUgZWl0aGVyIGBGb3JjZU9yaWdpbmAgb3IgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgT3duZXIgb2YgdGhlKGF0dHJpYnV0ZS4AwEFueSBkZXBvc2l0IGlzIGZyZWVkIGZvciB0aGUgY29sbGVjdGlvbidzIG93bmVyLgBBAS0gYGNvbGxlY3Rpb25gOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgY29sbGVjdGlvbiB3aG9zZSBpdGVtJ3MgbWV0YWRhdGEgdG8gY2xlYXIuDQEtIGBtYXliZV9pdGVtYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGl0ZW0gd2hvc2UgbWV0YWRhdGEgdG8gY2xlYXIulC0gYG5hbWVzcGFjZWA6IEF0dHJpYnV0ZSdzIG5hbWVzcGFjZS6ILSBga2V5YDogVGhlIGtleSBvZiB0aGUgYXR0cmlidXRlLgBkRW1pdHMgYEF0dHJpYnV0ZUNsZWFyZWRgLgA4V2VpZ2h0OiBgTygxKWBcYXBwcm92ZV9pdGVtX2F0dHJpYnV0ZXMMAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAABIGRlbGVnYXRlAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AFiQtAUFwcHJvdmUgaXRlbSdzIGF0dHJpYnV0ZXMgdG8gYmUgY2hhbmdlZCBieSBhIGRlbGVnYXRlZCB0aGlyZC1wYXJ0eSBhY2NvdW50LgDkT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCBtdXN0IGJlIGFuIG93bmVyIG9mIHRoZSBgaXRlbWAuAKQtIGBjb2xsZWN0aW9uYDogQSBjb2xsZWN0aW9uIG9mIHRoZSBpdGVtLqQtIGBpdGVtYDogVGhlIGl0ZW0gdGhhdCBob2xkcyBhdHRyaWJ1dGVzLkkBLSBgZGVsZWdhdGVgOiBUaGUgYWNjb3VudCB0byBkZWxlZ2F0ZSBwZXJtaXNzaW9uIHRvIGNoYW5nZSBhdHRyaWJ1dGVzIG9mIHRoZSBpdGVtLgC8RW1pdHMgYEl0ZW1BdHRyaWJ1dGVzQXBwcm92YWxBZGRlZGAgb24gc3VjY2Vzcy58Y2FuY2VsX2l0ZW1fYXR0cmlidXRlc19hcHByb3ZhbBABKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAEgZGVsZWdhdGUAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABHHdpdG5lc3OdBAF8Q2FuY2VsQXR0cmlidXRlc0FwcHJvdmFsV2l0bmVzcwAXKBEBQ2FuY2VsIHRoZSBwcmV2aW91c2x5IHByb3ZpZGVkIGFwcHJvdmFsIHRvIGNoYW5nZSBpdGVtJ3MgYXR0cmlidXRlcy4RAUFsbCB0aGUgcHJldmlvdXNseSBzZXQgYXR0cmlidXRlcyBieSB0aGUgYGRlbGVnYXRlYCB3aWxsIGJlIHJlbW92ZWQuAORPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIG11c3QgYmUgYW4gb3duZXIgb2YgdGhlIGBpdGVtYC4A9C0gYGNvbGxlY3Rpb25gOiBDb2xsZWN0aW9uIHRoYXQgdGhlIGl0ZW0gaXMgY29udGFpbmVkIHdpdGhpbi6kLSBgaXRlbWA6IFRoZSBpdGVtIHRoYXQgaG9sZHMgYXR0cmlidXRlcy7gLSBgZGVsZWdhdGVgOiBUaGUgcHJldmlvdXNseSBhcHByb3ZlZCBhY2NvdW50IHRvIHJlbW92ZS4AxEVtaXRzIGBJdGVtQXR0cmlidXRlc0FwcHJvdmFsUmVtb3ZlZGAgb24gc3VjY2Vzcy4wc2V0X21ldGFkYXRhDAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAARBkYXRhRQEBeEJvdW5kZWRWZWM8dTgsIFQ6OlN0cmluZ0xpbWl0PgAYQHRTZXQgdGhlIG1ldGFkYXRhIGZvciBhbiBpdGVtLgBdAU9yaWdpbiBtdXN0IGJlIGVpdGhlciBgRm9yY2VPcmlnaW5gIG9yIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEFkbWluIG9mIHRoZTRgY29sbGVjdGlvbmAuAFEBSWYgdGhlIG9yaWdpbiBpcyBTaWduZWQsIHRoZW4gZnVuZHMgb2Ygc2lnbmVyIGFyZSByZXNlcnZlZCBhY2NvcmRpbmcgdG8gdGhlIGZvcm11bGE69GBNZXRhZGF0YURlcG9zaXRCYXNlICsgRGVwb3NpdFBlckJ5dGUgKiBkYXRhLmxlbmAgdGFraW5nIGludG+MYWNjb3VudCBhbnkgYWxyZWFkeSByZXNlcnZlZCBmdW5kcy4AOQEtIGBjb2xsZWN0aW9uYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGNvbGxlY3Rpb24gd2hvc2UgaXRlbSdzIG1ldGFkYXRhIHRvIHNldC7sLSBgaXRlbWA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBpdGVtIHdob3NlIG1ldGFkYXRhIHRvIHNldC5NAS0gYGRhdGFgOiBUaGUgZ2VuZXJhbCBpbmZvcm1hdGlvbiBvZiB0aGlzIGl0ZW0uIExpbWl0ZWQgaW4gbGVuZ3RoIGJ5IGBTdHJpbmdMaW1pdGAuAGBFbWl0cyBgSXRlbU1ldGFkYXRhU2V0YC4AOFdlaWdodDogYE8oMSlgOGNsZWFyX21ldGFkYXRhCAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAGTR8Q2xlYXIgdGhlIG1ldGFkYXRhIGZvciBhbiBpdGVtLgBdAU9yaWdpbiBtdXN0IGJlIGVpdGhlciBgRm9yY2VPcmlnaW5gIG9yIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEFkbWluIG9mIHRoZTRgY29sbGVjdGlvbmAuAMBBbnkgZGVwb3NpdCBpcyBmcmVlZCBmb3IgdGhlIGNvbGxlY3Rpb24ncyBvd25lci4AQQEtIGBjb2xsZWN0aW9uYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGNvbGxlY3Rpb24gd2hvc2UgaXRlbSdzIG1ldGFkYXRhIHRvIGNsZWFyLvQtIGBpdGVtYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGl0ZW0gd2hvc2UgbWV0YWRhdGEgdG8gY2xlYXIuAHBFbWl0cyBgSXRlbU1ldGFkYXRhQ2xlYXJlZGAuADhXZWlnaHQ6IGBPKDEpYFxzZXRfY29sbGVjdGlvbl9tZXRhZGF0YQgBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBkYXRhRQEBeEJvdW5kZWRWZWM8dTgsIFQ6OlN0cmluZ0xpbWl0PgAaPIhTZXQgdGhlIG1ldGFkYXRhIGZvciBhIGNvbGxlY3Rpb24uAFUBT3JpZ2luIG11c3QgYmUgZWl0aGVyIGBGb3JjZU9yaWdpbmAgb3IgYFNpZ25lZGAgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBBZG1pbiBvZkR0aGUgYGNvbGxlY3Rpb25gLgBZAUlmIHRoZSBvcmlnaW4gaXMgYFNpZ25lZGAsIHRoZW4gZnVuZHMgb2Ygc2lnbmVyIGFyZSByZXNlcnZlZCBhY2NvcmRpbmcgdG8gdGhlIGZvcm11bGE69GBNZXRhZGF0YURlcG9zaXRCYXNlICsgRGVwb3NpdFBlckJ5dGUgKiBkYXRhLmxlbmAgdGFraW5nIGludG+MYWNjb3VudCBhbnkgYWxyZWFkeSByZXNlcnZlZCBmdW5kcy4AEQEtIGBjb2xsZWN0aW9uYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGl0ZW0gd2hvc2UgbWV0YWRhdGEgdG8gdXBkYXRlLk0BLSBgZGF0YWA6IFRoZSBnZW5lcmFsIGluZm9ybWF0aW9uIG9mIHRoaXMgaXRlbS4gTGltaXRlZCBpbiBsZW5ndGggYnkgYFN0cmluZ0xpbWl0YC4AeEVtaXRzIGBDb2xsZWN0aW9uTWV0YWRhdGFTZXRgLgA4V2VpZ2h0OiBgTygxKWBkY2xlYXJfY29sbGVjdGlvbl9tZXRhZGF0YQQBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAGzCQQ2xlYXIgdGhlIG1ldGFkYXRhIGZvciBhIGNvbGxlY3Rpb24uAFUBT3JpZ2luIG11c3QgYmUgZWl0aGVyIGBGb3JjZU9yaWdpbmAgb3IgYFNpZ25lZGAgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBBZG1pbiBvZkR0aGUgYGNvbGxlY3Rpb25gLgDAQW55IGRlcG9zaXQgaXMgZnJlZWQgZm9yIHRoZSBjb2xsZWN0aW9uJ3Mgb3duZXIuACUBLSBgY29sbGVjdGlvbmA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBjb2xsZWN0aW9uIHdob3NlIG1ldGFkYXRhIHRvIGNsZWFyLgCIRW1pdHMgYENvbGxlY3Rpb25NZXRhZGF0YUNsZWFyZWRgLgA4V2VpZ2h0OiBgTygxKWBQc2V0X2FjY2VwdF9vd25lcnNoaXAEAUBtYXliZV9jb2xsZWN0aW9u5AFcT3B0aW9uPFQ6OkNvbGxlY3Rpb25JZD4AHCgRAVNldCAob3IgcmVzZXQpIHRoZSBhY2NlcHRhbmNlIG9mIG93bmVyc2hpcCBmb3IgYSBwYXJ0aWN1bGFyIGFjY291bnQuAGEBT3JpZ2luIG11c3QgYmUgYFNpZ25lZGAgYW5kIGlmIGBtYXliZV9jb2xsZWN0aW9uYCBpcyBgU29tZWAsIHRoZW4gdGhlIHNpZ25lciBtdXN0IGhhdmUgYUxwcm92aWRlciByZWZlcmVuY2UuAFEBLSBgbWF5YmVfY29sbGVjdGlvbmA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBjb2xsZWN0aW9uIHdob3NlIG93bmVyc2hpcCB0aGUgc2lnbmVyIGlzYQEgIHdpbGxpbmcgdG8gYWNjZXB0LCBvciBpZiBgTm9uZWAsIGFuIGluZGljYXRpb24gdGhhdCB0aGUgc2lnbmVyIGlzIHdpbGxpbmcgdG8gYWNjZXB0IG5vXCAgb3duZXJzaGlwIHRyYW5zZmVyYWwuAIxFbWl0cyBgT3duZXJzaGlwQWNjZXB0YW5jZUNoYW5nZWRgLmRzZXRfY29sbGVjdGlvbl9tYXhfc3VwcGx5CAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABKG1heF9zdXBwbHk4AQx1MzIAHSTgU2V0IHRoZSBtYXhpbXVtIG51bWJlciBvZiBpdGVtcyBhIGNvbGxlY3Rpb24gY291bGQgaGF2ZS4AVQFPcmlnaW4gbXVzdCBiZSBlaXRoZXIgYEZvcmNlT3JpZ2luYCBvciBgU2lnbmVkYCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIE93bmVyIG9mRHRoZSBgY29sbGVjdGlvbmAuAOwtIGBjb2xsZWN0aW9uYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGNvbGxlY3Rpb24gdG8gY2hhbmdlLhEBLSBgbWF4X3N1cHBseWA6IFRoZSBtYXhpbXVtIG51bWJlciBvZiBpdGVtcyBhIGNvbGxlY3Rpb24gY291bGQgaGF2ZS4A1EVtaXRzIGBDb2xsZWN0aW9uTWF4U3VwcGx5U2V0YCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuUHVwZGF0ZV9taW50X3NldHRpbmdzCAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABNG1pbnRfc2V0dGluZ3N5BAEVAU1pbnRTZXR0aW5nczxCYWxhbmNlT2Y8VCwgST4sIEJsb2NrTnVtYmVyRm9yPFQsIEk+LCBUOjoKQ29sbGVjdGlvbklkPgAeJFRVcGRhdGUgbWludCBzZXR0aW5ncy4ATQFPcmlnaW4gbXVzdCBiZSBlaXRoZXIgYEZvcmNlT3JpZ2luYCBvciBgU2lnbmVkYCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIElzc3VlclBvZiB0aGUgYGNvbGxlY3Rpb25gLgDsLSBgY29sbGVjdGlvbmA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBjb2xsZWN0aW9uIHRvIGNoYW5nZS6kLSBgbWludF9zZXR0aW5nc2A6IFRoZSBuZXcgbWludCBzZXR0aW5ncy4A8EVtaXRzIGBDb2xsZWN0aW9uTWludFNldHRpbmdzVXBkYXRlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLiRzZXRfcHJpY2UQAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAABFHByaWNlZQQBXE9wdGlvbjxJdGVtUHJpY2U8VCwgST4+AAFEd2hpdGVsaXN0ZWRfYnV5ZXJZBAFwT3B0aW9uPEFjY291bnRJZExvb2t1cE9mPFQ+PgAfLJRTZXQgKG9yIHJlc2V0KSB0aGUgcHJpY2UgZm9yIGFuIGl0ZW0uAOhPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIG11c3QgYmUgdGhlIG93bmVyIG9mIHRoZSBgaXRlbWAuAKwtIGBjb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gb2YgdGhlIGl0ZW0uoC0gYGl0ZW1gOiBUaGUgaXRlbSB0byBzZXQgdGhlIHByaWNlIGZvci4NAS0gYHByaWNlYDogVGhlIHByaWNlIGZvciB0aGUgaXRlbS4gUGFzcyBgTm9uZWAsIHRvIHJlc2V0IHRoZSBwcmljZS70LSBgYnV5ZXJgOiBSZXN0cmljdHMgdGhlIGJ1eSBvcGVyYXRpb24gdG8gYSBzcGVjaWZpYyBhY2NvdW50LgDsRW1pdHMgYEl0ZW1QcmljZVNldGAgb24gc3VjY2VzcyBpZiB0aGUgcHJpY2UgaXMgbm90IGBOb25lYC7sRW1pdHMgYEl0ZW1QcmljZVJlbW92ZWRgIG9uIHN1Y2Nlc3MgaWYgdGhlIHByaWNlIGlzIGBOb25lYC4gYnV5X2l0ZW0MAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAABJGJpZF9wcmljZVkBATxJdGVtUHJpY2U8VCwgST4AICSoQWxsb3dzIHRvIGJ1eSBhbiBpdGVtIGlmIGl0J3MgdXAgZm9yIHNhbGUuAPhPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIG11c3Qgbm90IGJlIHRoZSBvd25lciBvZiB0aGUgYGl0ZW1gLgCsLSBgY29sbGVjdGlvbmA6IFRoZSBjb2xsZWN0aW9uIG9mIHRoZSBpdGVtLqwtIGBpdGVtYDogVGhlIGl0ZW0gdGhlIHNlbmRlciB3YW50cyB0byBidXku2C0gYGJpZF9wcmljZWA6IFRoZSBwcmljZSB0aGUgc2VuZGVyIGlzIHdpbGxpbmcgdG8gcGF5LgB4RW1pdHMgYEl0ZW1Cb3VnaHRgIG9uIHN1Y2Nlc3MuIHBheV90aXBzBAEQdGlwc6EEAZxCb3VuZGVkVmVjPEl0ZW1UaXBPZjxULCBJPiwgVDo6TWF4VGlwcz4AIRxcQWxsb3dzIHRvIHBheSB0aGUgdGlwcy4AWE9yaWdpbiBtdXN0IGJlIFNpZ25lZC4AVC0gYHRpcHNgOiBUaXBzIGFycmF5LgCYRW1pdHMgYFRpcFNlbnRgIG9uIGV2ZXJ5IHRpcCB0cmFuc2Zlci4sY3JlYXRlX3N3YXAYAUhvZmZlcmVkX2NvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAATBvZmZlcmVkX2l0ZW04ASRUOjpJdGVtSWQAAUhkZXNpcmVkX2NvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAAUhtYXliZV9kZXNpcmVkX2l0ZW3kAURPcHRpb248VDo6SXRlbUlkPgABLG1heWJlX3ByaWNlrQQBrE9wdGlvbjxQcmljZVdpdGhEaXJlY3Rpb248SXRlbVByaWNlPFQsIEk+Pj4AASBkdXJhdGlvbjgBUEJsb2NrTnVtYmVyRm9yPFQsIEk+ACJAUQFSZWdpc3RlciBhIG5ldyBhdG9taWMgc3dhcCwgZGVjbGFyaW5nIGFuIGludGVudGlvbiB0byBzZW5kIGFuIGBpdGVtYCBpbiBleGNoYW5nZSBmb3L8YGRlc2lyZWRfaXRlbWAgZnJvbSBvcmlnaW4gdG8gdGFyZ2V0IG9uIHRoZSBjdXJyZW50IGJsb2NrY2hhaW4uTQFUaGUgdGFyZ2V0IGNhbiBleGVjdXRlIHRoZSBzd2FwIGR1cmluZyB0aGUgc3BlY2lmaWVkIGBkdXJhdGlvbmAgb2YgYmxvY2tzIChpZiBzZXQpLvBBZGRpdGlvbmFsbHksIHRoZSBwcmljZSBjb3VsZCBiZSBzZXQgZm9yIHRoZSBkZXNpcmVkIGBpdGVtYC4A5E9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgbXVzdCBiZSBhbiBvd25lciBvZiB0aGUgYGl0ZW1gLgCsLSBgY29sbGVjdGlvbmA6IFRoZSBjb2xsZWN0aW9uIG9mIHRoZSBpdGVtLqgtIGBpdGVtYDogVGhlIGl0ZW0gYW4gb3duZXIgd2FudHMgdG8gZ2l2ZS7sLSBgZGVzaXJlZF9jb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gb2YgdGhlIGRlc2lyZWQgaXRlbS70LSBgZGVzaXJlZF9pdGVtYDogVGhlIGRlc2lyZWQgaXRlbSBhbiBvd25lciB3YW50cyB0byByZWNlaXZlLmEBLSBgbWF5YmVfcHJpY2VgOiBUaGUgcHJpY2UgYW4gb3duZXIgaXMgd2lsbGluZyB0byBwYXkgb3IgcmVjZWl2ZSBmb3IgdGhlIGRlc2lyZWQgYGl0ZW1gLkkBLSBgZHVyYXRpb25gOiBBIGRlYWRsaW5lIGZvciB0aGUgc3dhcC4gU3BlY2lmaWVkIGJ5IHByb3ZpZGluZyB0aGUgbnVtYmVyIG9mIGJsb2Nrc4gJYWZ0ZXIgd2hpY2ggdGhlIHN3YXAgd2lsbCBleHBpcmUuAHxFbWl0cyBgU3dhcENyZWF0ZWRgIG9uIHN1Y2Nlc3MuLGNhbmNlbF9zd2FwCAFIb2ZmZXJlZF9jb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEwb2ZmZXJlZF9pdGVtOAEkVDo6SXRlbUlkACMkWENhbmNlbCBhbiBhdG9taWMgc3dhcC4AWE9yaWdpbiBtdXN0IGJlIFNpZ25lZC4VAU9yaWdpbiBtdXN0IGJlIGFuIG93bmVyIG9mIHRoZSBgaXRlbWAgaWYgdGhlIGRlYWRsaW5lIGhhc24ndCBleHBpcmVkLgCsLSBgY29sbGVjdGlvbmA6IFRoZSBjb2xsZWN0aW9uIG9mIHRoZSBpdGVtLqgtIGBpdGVtYDogVGhlIGl0ZW0gYW4gb3duZXIgd2FudHMgdG8gZ2l2ZS4AhEVtaXRzIGBTd2FwQ2FuY2VsbGVkYCBvbiBzdWNjZXNzLihjbGFpbV9zd2FwFAE8c2VuZF9jb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEkc2VuZF9pdGVtOAEkVDo6SXRlbUlkAAFIcmVjZWl2ZV9jb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEwcmVjZWl2ZV9pdGVtOAEkVDo6SXRlbUlkAAE0d2l0bmVzc19wcmljZa0EAaxPcHRpb248UHJpY2VXaXRoRGlyZWN0aW9uPEl0ZW1QcmljZTxULCBJPj4+ACQwVENsYWltIGFuIGF0b21pYyBzd2FwLjkBVGhpcyBtZXRob2QgZXhlY3V0ZXMgYSBwZW5kaW5nIHN3YXAsIHRoYXQgd2FzIGNyZWF0ZWQgYnkgYSBjb3VudGVycGFydCBiZWZvcmUuAORPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIG11c3QgYmUgYW4gb3duZXIgb2YgdGhlIGBpdGVtYC4A7C0gYHNlbmRfY29sbGVjdGlvbmA6IFRoZSBjb2xsZWN0aW9uIG9mIHRoZSBpdGVtIHRvIGJlIHNlbnQujC0gYHNlbmRfaXRlbWA6IFRoZSBpdGVtIHRvIGJlIHNlbnQuCQEtIGByZWNlaXZlX2NvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiBvZiB0aGUgaXRlbSB0byBiZSByZWNlaXZlZC6oLSBgcmVjZWl2ZV9pdGVtYDogVGhlIGl0ZW0gdG8gYmUgcmVjZWl2ZWQu5C0gYHdpdG5lc3NfcHJpY2VgOiBBIHByaWNlIHRoYXQgd2FzIHByZXZpb3VzbHkgYWdyZWVkIG9uLgB8RW1pdHMgYFN3YXBDbGFpbWVkYCBvbiBzdWNjZXNzLjxtaW50X3ByZV9zaWduZWQMASRtaW50X2RhdGG5BAFoQm94PFByZVNpZ25lZE1pbnRPZjxULCBJPj4AASRzaWduYXR1cmW9BAFQVDo6T2ZmY2hhaW5TaWduYXR1cmUAARhzaWduZXIEATBUOjpBY2NvdW50SWQAJTTITWludCBhbiBpdGVtIGJ5IHByb3ZpZGluZyB0aGUgcHJlLXNpZ25lZCBhcHByb3ZhbC4AWE9yaWdpbiBtdXN0IGJlIFNpZ25lZC4AXQEtIGBtaW50X2RhdGFgOiBUaGUgcHJlLXNpZ25lZCBhcHByb3ZhbCB0aGF0IGNvbnNpc3RzIG9mIHRoZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgaXRlbSxRASAgaXRzIG1ldGFkYXRhLCBhdHRyaWJ1dGVzLCB3aG8gY2FuIG1pbnQgaXQgKGBOb25lYCBmb3IgYW55b25lKSBhbmQgdW50aWwgd2hhdCBibG9jayQgIG51bWJlci7ILSBgc2lnbmF0dXJlYDogVGhlIHNpZ25hdHVyZSBvZiB0aGUgYGRhdGFgIG9iamVjdC45AS0gYHNpZ25lcmA6IFRoZSBgZGF0YWAgb2JqZWN0J3Mgc2lnbmVyLiBTaG91bGQgYmUgYW4gSXNzdWVyIG9mIHRoZSBjb2xsZWN0aW9uLgBoRW1pdHMgYElzc3VlZGAgb24gc3VjY2Vzcy7URW1pdHMgYEF0dHJpYnV0ZVNldGAgaWYgdGhlIGF0dHJpYnV0ZXMgd2VyZSBwcm92aWRlZC7YRW1pdHMgYEl0ZW1NZXRhZGF0YVNldGAgaWYgdGhlIG1ldGFkYXRhIHdhcyBub3QgZW1wdHkuZHNldF9hdHRyaWJ1dGVzX3ByZV9zaWduZWQMARBkYXRhxQQBbFByZVNpZ25lZEF0dHJpYnV0ZXNPZjxULCBJPgABJHNpZ25hdHVyZb0EAVBUOjpPZmZjaGFpblNpZ25hdHVyZQABGHNpZ25lcgQBMFQ6OkFjY291bnRJZAAmNAEBU2V0IGF0dHJpYnV0ZXMgZm9yIGFuIGl0ZW0gYnkgcHJvdmlkaW5nIHRoZSBwcmUtc2lnbmVkIGFwcHJvdmFsLgD4T3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCBtdXN0IGJlIGFuIG93bmVyIG9mIHRoZSBgZGF0YS5pdGVtYC4ASQEtIGBkYXRhYDogVGhlIHByZS1zaWduZWQgYXBwcm92YWwgdGhhdCBjb25zaXN0cyBvZiB0aGUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGl0ZW0szCAgYXR0cmlidXRlcyB0byB1cGRhdGUgYW5kIHVudGlsIHdoYXQgYmxvY2sgbnVtYmVyLsgtIGBzaWduYXR1cmVgOiBUaGUgc2lnbmF0dXJlIG9mIHRoZSBgZGF0YWAgb2JqZWN0LlEBLSBgc2lnbmVyYDogVGhlIGBkYXRhYCBvYmplY3QncyBzaWduZXIuIFNob3VsZCBiZSBhbiBBZG1pbiBvZiB0aGUgY29sbGVjdGlvbiBmb3IgdGhleCAgYENvbGxlY3Rpb25Pd25lcmAgbmFtZXNwYWNlLgDERW1pdHMgYEF0dHJpYnV0ZVNldGAgZm9yIGVhY2ggcHJvdmlkZWQgYXR0cmlidXRlLhkBRW1pdHMgYEl0ZW1BdHRyaWJ1dGVzQXBwcm92YWxBZGRlZGAgaWYgdGhlIGFwcHJvdmFsIHdhc24ndCBzZXQgYmVmb3JlLqhFbWl0cyBgUHJlU2lnbmVkQXR0cmlidXRlc1NldGAgb24gc3VjY2Vzcy4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMubQQMLHBhbGxldF9uZnRzFHR5cGVzQENvbGxlY3Rpb25Db25maWcMFFByaWNlAVkBLEJsb2NrTnVtYmVyATgwQ29sbGVjdGlvbklkATgADAEgc2V0dGluZ3NxBAFIQ29sbGVjdGlvblNldHRpbmdzAAEobWF4X3N1cHBseeQBLE9wdGlvbjx1MzI+AAE0bWludF9zZXR0aW5nc3kEAbhNaW50U2V0dGluZ3M8UHJpY2UsIEJsb2NrTnVtYmVyLCBDb2xsZWN0aW9uSWQ+AABxBAwscGFsbGV0X25mdHMUdHlwZXMgQml0RmxhZ3MEBFQBdQQABAAoAURDb2xsZWN0aW9uU2V0dGluZwAAdQQMLHBhbGxldF9uZnRzFHR5cGVzRENvbGxlY3Rpb25TZXR0aW5nAAEURFRyYW5zZmVyYWJsZUl0ZW1zAAEAQFVubG9ja2VkTWV0YWRhdGEAAgBIVW5sb2NrZWRBdHRyaWJ1dGVzAAQARFVubG9ja2VkTWF4U3VwcGx5AAgAPERlcG9zaXRSZXF1aXJlZAAQAAB5BAwscGFsbGV0X25mdHMUdHlwZXMwTWludFNldHRpbmdzDBRQcmljZQFZASxCbG9ja051bWJlcgE4MENvbGxlY3Rpb25JZAE4ABQBJG1pbnRfdHlwZX0EAVhNaW50VHlwZTxDb2xsZWN0aW9uSWQ+AAEUcHJpY2VlBAE0T3B0aW9uPFByaWNlPgABLHN0YXJ0X2Jsb2Nr5AFMT3B0aW9uPEJsb2NrTnVtYmVyPgABJGVuZF9ibG9ja+QBTE9wdGlvbjxCbG9ja051bWJlcj4AAVRkZWZhdWx0X2l0ZW1fc2V0dGluZ3OBBAEwSXRlbVNldHRpbmdzAAB9BAwscGFsbGV0X25mdHMUdHlwZXMgTWludFR5cGUEMENvbGxlY3Rpb25JZAE4AQwYSXNzdWVyAAAAGFB1YmxpYwABACBIb2xkZXJPZgQAOAEwQ29sbGVjdGlvbklkAAIAAIEEDCxwYWxsZXRfbmZ0cxR0eXBlcyBCaXRGbGFncwQEVAGFBAAEACgBLEl0ZW1TZXR0aW5nAACFBAwscGFsbGV0X25mdHMUdHlwZXMsSXRlbVNldHRpbmcAAQwwVHJhbnNmZXJhYmxlAAEAQFVubG9ja2VkTWV0YWRhdGEAAgBIVW5sb2NrZWRBdHRyaWJ1dGVzAAQAAIkEDCxwYWxsZXRfbmZ0cxR0eXBlczhEZXN0cm95V2l0bmVzcwAADAE4aXRlbV9tZXRhZGF0YXNkAQx1MzIAATBpdGVtX2NvbmZpZ3NkAQx1MzIAAShhdHRyaWJ1dGVzZAEMdTMyAACNBAQYT3B0aW9uBARUAZEEAQgQTm9uZQAAABBTb21lBACRBAAAAQAAkQQMLHBhbGxldF9uZnRzFHR5cGVzLE1pbnRXaXRuZXNzCBhJdGVtSWQBOBxCYWxhbmNlAVkBAAgBKG93bmVkX2l0ZW3kAThPcHRpb248SXRlbUlkPgABKG1pbnRfcHJpY2VlBAE8T3B0aW9uPEJhbGFuY2U+AACVBAwscGFsbGV0X25mdHMUdHlwZXMoSXRlbUNvbmZpZwAABAEgc2V0dGluZ3OBBAEwSXRlbVNldHRpbmdzAACZBAwscGFsbGV0X25mdHMUdHlwZXNIQXR0cmlidXRlTmFtZXNwYWNlBCRBY2NvdW50SWQBBAEQGFBhbGxldAAAADxDb2xsZWN0aW9uT3duZXIAAQAkSXRlbU93bmVyAAIAHEFjY291bnQEAAQBJEFjY291bnRJZAADAACdBAwscGFsbGV0X25mdHMUdHlwZXN8Q2FuY2VsQXR0cmlidXRlc0FwcHJvdmFsV2l0bmVzcwAABAFIYWNjb3VudF9hdHRyaWJ1dGVzOAEMdTMyAAChBAxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAaUEBFMAAAQAqQQBGFZlYzxUPgAApQQMLHBhbGxldF9uZnRzFHR5cGVzHEl0ZW1UaXAQMENvbGxlY3Rpb25JZAE4GEl0ZW1JZAE4JEFjY291bnRJZAEEGEFtb3VudAFZAQAQAShjb2xsZWN0aW9uOAEwQ29sbGVjdGlvbklkAAEQaXRlbTgBGEl0ZW1JZAABIHJlY2VpdmVyBAEkQWNjb3VudElkAAEYYW1vdW50WQEBGEFtb3VudAAAqQQAAAKlBACtBAQYT3B0aW9uBARUAbEEAQgQTm9uZQAAABBTb21lBACxBAAAAQAAsQQMLHBhbGxldF9uZnRzFHR5cGVzSFByaWNlV2l0aERpcmVjdGlvbgQYQW1vdW50AVkBAAgBGGFtb3VudFkBARhBbW91bnQAASRkaXJlY3Rpb261BAE4UHJpY2VEaXJlY3Rpb24AALUEDCxwYWxsZXRfbmZ0cxR0eXBlczhQcmljZURpcmVjdGlvbgABCBBTZW5kAAAAHFJlY2VpdmUAAQAAuQQMLHBhbGxldF9uZnRzFHR5cGVzNFByZVNpZ25lZE1pbnQUMENvbGxlY3Rpb25JZAE4GEl0ZW1JZAE4JEFjY291bnRJZAEEIERlYWRsaW5lATgcQmFsYW5jZQFZAQAcAShjb2xsZWN0aW9uOAEwQ29sbGVjdGlvbklkAAEQaXRlbTgBGEl0ZW1JZAABKGF0dHJpYnV0ZXMsAVxWZWM8KFZlYzx1OD4sIFZlYzx1OD4pPgABIG1ldGFkYXRhGAEcVmVjPHU4PgABMG9ubHlfYWNjb3VudJEBAURPcHRpb248QWNjb3VudElkPgABIGRlYWRsaW5lOAEgRGVhZGxpbmUAAShtaW50X3ByaWNlZQQBPE9wdGlvbjxCYWxhbmNlPgAAvQQIKHNwX3J1bnRpbWU4TXVsdGlTaWduYXR1cmUAARAcRWQyNTUxOQQAwQQBSGVkMjU1MTk6OlNpZ25hdHVyZQAAABxTcjI1NTE5BADBBAFIc3IyNTUxOTo6U2lnbmF0dXJlAAEAFEVjZHNhBAB5AQFAZWNkc2E6OlNpZ25hdHVyZQACAAxFdGgEAHkBAVhlY2RzYTo6S2VjY2FrU2lnbmF0dXJlAAMAAMEEAAADQAAAAAwAxQQMLHBhbGxldF9uZnRzFHR5cGVzTFByZVNpZ25lZEF0dHJpYnV0ZXMQMENvbGxlY3Rpb25JZAE4GEl0ZW1JZAE4JEFjY291bnRJZAEEIERlYWRsaW5lATgAFAEoY29sbGVjdGlvbjgBMENvbGxlY3Rpb25JZAABEGl0ZW04ARhJdGVtSWQAAShhdHRyaWJ1dGVzLAFcVmVjPChWZWM8dTg+LCBWZWM8dTg+KT4AASRuYW1lc3BhY2WZBAF0QXR0cmlidXRlTmFtZXNwYWNlPEFjY291bnRJZD4AASBkZWFkbGluZTgBIERlYWRsaW5lAADJBAw0cGFsbGV0X2Fzc2V0cxhwYWxsZXQQQ2FsbAgEVAAESQABiBhjcmVhdGUMAQhpZB0CAUxUOjpBc3NldElkUGFyYW1ldGVyAAEUYWRtaW4AAVBBY2NvdW50SWRMb29rdXBPZjxUPgABLG1pbl9iYWxhbmNlWQEBKFQ6OkJhbGFuY2UAAEzoSXNzdWUgYSBuZXcgY2xhc3Mgb2YgZnVuZ2libGUgYXNzZXRzIGZyb20gYSBwdWJsaWMgb3JpZ2luLgAlAVRoaXMgbmV3IGFzc2V0IGNsYXNzIGhhcyBubyBhc3NldHMgaW5pdGlhbGx5IGFuZCBpdHMgb3duZXIgaXMgdGhlIG9yaWdpbi4AYQFUaGUgb3JpZ2luIG11c3QgY29uZm9ybSB0byB0aGUgY29uZmlndXJlZCBgQ3JlYXRlT3JpZ2luYCBhbmQgaGF2ZSBzdWZmaWNpZW50IGZ1bmRzIGZyZWUuALxGdW5kcyBvZiBzZW5kZXIgYXJlIHJlc2VydmVkIGJ5IGBBc3NldERlcG9zaXRgLgAsUGFyYW1ldGVyczpZAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIG5ldyBhc3NldC4gVGhpcyBtdXN0IG5vdCBiZSBjdXJyZW50bHkgaW4gdXNlIHRvIGlkZW50aWZ5MQFhbiBleGlzdGluZyBhc3NldC4gSWYgW2BOZXh0QXNzZXRJZGBdIGlzIHNldCwgdGhlbiB0aGlzIG11c3QgYmUgZXF1YWwgdG8gaXQuWQEtIGBhZG1pbmA6IFRoZSBhZG1pbiBvZiB0aGlzIGNsYXNzIG9mIGFzc2V0cy4gVGhlIGFkbWluIGlzIHRoZSBpbml0aWFsIGFkZHJlc3Mgb2YgZWFjaJxtZW1iZXIgb2YgdGhlIGFzc2V0IGNsYXNzJ3MgYWRtaW4gdGVhbS5NAS0gYG1pbl9iYWxhbmNlYDogVGhlIG1pbmltdW0gYmFsYW5jZSBvZiB0aGlzIG5ldyBhc3NldCB0aGF0IGFueSBzaW5nbGUgYWNjb3VudCBtdXN0PQFoYXZlLiBJZiBhbiBhY2NvdW50J3MgYmFsYW5jZSBpcyByZWR1Y2VkIGJlbG93IHRoaXMsIHRoZW4gaXQgY29sbGFwc2VzIHRvIHplcm8uAJhFbWl0cyBgQ3JlYXRlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLgA4V2VpZ2h0OiBgTygxKWAwZm9yY2VfY3JlYXRlEAEIaWQdAgFMVDo6QXNzZXRJZFBhcmFtZXRlcgABFG93bmVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AATRpc19zdWZmaWNpZW50XQEBEGJvb2wAASxtaW5fYmFsYW5jZVUBAShUOjpCYWxhbmNlAAFM+Elzc3VlIGEgbmV3IGNsYXNzIG9mIGZ1bmdpYmxlIGFzc2V0cyBmcm9tIGEgcHJpdmlsZWdlZCBvcmlnaW4uALRUaGlzIG5ldyBhc3NldCBjbGFzcyBoYXMgbm8gYXNzZXRzIGluaXRpYWxseS4ApFRoZSBvcmlnaW4gbXVzdCBjb25mb3JtIHRvIGBGb3JjZU9yaWdpbmAuAJxVbmxpa2UgYGNyZWF0ZWAsIG5vIGZ1bmRzIGFyZSByZXNlcnZlZC4AWQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBuZXcgYXNzZXQuIFRoaXMgbXVzdCBub3QgYmUgY3VycmVudGx5IGluIHVzZSB0byBpZGVudGlmeTEBYW4gZXhpc3RpbmcgYXNzZXQuIElmIFtgTmV4dEFzc2V0SWRgXSBpcyBzZXQsIHRoZW4gdGhpcyBtdXN0IGJlIGVxdWFsIHRvIGl0LlkBLSBgb3duZXJgOiBUaGUgb3duZXIgb2YgdGhpcyBjbGFzcyBvZiBhc3NldHMuIFRoZSBvd25lciBoYXMgZnVsbCBzdXBlcnVzZXIgcGVybWlzc2lvbnMlAW92ZXIgdGhpcyBhc3NldCwgYnV0IG1heSBsYXRlciBjaGFuZ2UgYW5kIGNvbmZpZ3VyZSB0aGUgcGVybWlzc2lvbnMgdXNpbmeQYHRyYW5zZmVyX293bmVyc2hpcGAgYW5kIGBzZXRfdGVhbWAuTQEtIGBtaW5fYmFsYW5jZWA6IFRoZSBtaW5pbXVtIGJhbGFuY2Ugb2YgdGhpcyBuZXcgYXNzZXQgdGhhdCBhbnkgc2luZ2xlIGFjY291bnQgbXVzdD0BaGF2ZS4gSWYgYW4gYWNjb3VudCdzIGJhbGFuY2UgaXMgcmVkdWNlZCBiZWxvdyB0aGlzLCB0aGVuIGl0IGNvbGxhcHNlcyB0byB6ZXJvLgCsRW1pdHMgYEZvcmNlQ3JlYXRlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLgA4V2VpZ2h0OiBgTygxKWA0c3RhcnRfZGVzdHJveQQBCGlkHQIBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAAjDcU3RhcnQgdGhlIHByb2Nlc3Mgb2YgZGVzdHJveWluZyBhIGZ1bmdpYmxlIGFzc2V0IGNsYXNzLgBZAWBzdGFydF9kZXN0cm95YCBpcyB0aGUgZmlyc3QgaW4gYSBzZXJpZXMgb2YgZXh0cmluc2ljcyB0aGF0IHNob3VsZCBiZSBjYWxsZWQsIHRvIGFsbG93eGRlc3RydWN0aW9uIG9mIGFuIGFzc2V0IGNsYXNzLgBRAVRoZSBvcmlnaW4gbXVzdCBjb25mb3JtIHRvIGBGb3JjZU9yaWdpbmAgb3IgbXVzdCBiZSBgU2lnbmVkYCBieSB0aGUgYXNzZXQncyBgb3duZXJgLgBNAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIGRlc3Ryb3llZC4gVGhpcyBtdXN0IGlkZW50aWZ5IGFuIGV4aXN0aW5nICAgYXNzZXQuAEkBSXQgd2lsbCBmYWlsIHdpdGggZWl0aGVyIFtgRXJyb3I6OkNvbnRhaW5zSG9sZHNgXSBvciBbYEVycm9yOjpDb250YWluc0ZyZWV6ZXNgXSBpZrhhbiBhY2NvdW50IGNvbnRhaW5zIGhvbGRzIG9yIGZyZWV6ZXMgaW4gcGxhY2UuQGRlc3Ryb3lfYWNjb3VudHMEAQhpZB0CAUxUOjpBc3NldElkUGFyYW1ldGVyAAMwzERlc3Ryb3kgYWxsIGFjY291bnRzIGFzc29jaWF0ZWQgd2l0aCBhIGdpdmVuIGFzc2V0LgBdAWBkZXN0cm95X2FjY291bnRzYCBzaG91bGQgb25seSBiZSBjYWxsZWQgYWZ0ZXIgYHN0YXJ0X2Rlc3Ryb3lgIGhhcyBiZWVuIGNhbGxlZCwgYW5kIHRoZYRhc3NldCBpcyBpbiBhIGBEZXN0cm95aW5nYCBzdGF0ZS4AXQFEdWUgdG8gd2VpZ2h0IHJlc3RyaWN0aW9ucywgdGhpcyBmdW5jdGlvbiBtYXkgbmVlZCB0byBiZSBjYWxsZWQgbXVsdGlwbGUgdGltZXMgdG8gZnVsbHkxAWRlc3Ryb3kgYWxsIGFjY291bnRzLiBJdCB3aWxsIGRlc3Ryb3kgYFJlbW92ZUl0ZW1zTGltaXRgIGFjY291bnRzIGF0IGEgdGltZS4ATQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBiZSBkZXN0cm95ZWQuIFRoaXMgbXVzdCBpZGVudGlmeSBhbiBleGlzdGluZyAgIGFzc2V0LgDURWFjaCBjYWxsIGVtaXRzIHRoZSBgRXZlbnQ6OkRlc3Ryb3llZEFjY291bnRzYCBldmVudC5EZGVzdHJveV9hcHByb3ZhbHMEAQhpZB0CAUxUOjpBc3NldElkUGFyYW1ldGVyAAQwYQFEZXN0cm95IGFsbCBhcHByb3ZhbHMgYXNzb2NpYXRlZCB3aXRoIGEgZ2l2ZW4gYXNzZXQgdXAgdG8gdGhlIG1heCAoVDo6UmVtb3ZlSXRlbXNMaW1pdCkuAGEBYGRlc3Ryb3lfYXBwcm92YWxzYCBzaG91bGQgb25seSBiZSBjYWxsZWQgYWZ0ZXIgYHN0YXJ0X2Rlc3Ryb3lgIGhhcyBiZWVuIGNhbGxlZCwgYW5kIHRoZYRhc3NldCBpcyBpbiBhIGBEZXN0cm95aW5nYCBzdGF0ZS4AXQFEdWUgdG8gd2VpZ2h0IHJlc3RyaWN0aW9ucywgdGhpcyBmdW5jdGlvbiBtYXkgbmVlZCB0byBiZSBjYWxsZWQgbXVsdGlwbGUgdGltZXMgdG8gZnVsbHk5AWRlc3Ryb3kgYWxsIGFwcHJvdmFscy4gSXQgd2lsbCBkZXN0cm95IGBSZW1vdmVJdGVtc0xpbWl0YCBhcHByb3ZhbHMgYXQgYSB0aW1lLgBNAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIGRlc3Ryb3llZC4gVGhpcyBtdXN0IGlkZW50aWZ5IGFuIGV4aXN0aW5nICAgYXNzZXQuANhFYWNoIGNhbGwgZW1pdHMgdGhlIGBFdmVudDo6RGVzdHJveWVkQXBwcm92YWxzYCBldmVudC44ZmluaXNoX2Rlc3Ryb3kEAQhpZB0CAUxUOjpBc3NldElkUGFyYW1ldGVyAAUoxENvbXBsZXRlIGRlc3Ryb3lpbmcgYXNzZXQgYW5kIHVucmVzZXJ2ZSBjdXJyZW5jeS4AVQFgZmluaXNoX2Rlc3Ryb3lgIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBhZnRlciBgc3RhcnRfZGVzdHJveWAgaGFzIGJlZW4gY2FsbGVkLCBhbmQgdGhlWQFhc3NldCBpcyBpbiBhIGBEZXN0cm95aW5nYCBzdGF0ZS4gQWxsIGFjY291bnRzIG9yIGFwcHJvdmFscyBzaG91bGQgYmUgZGVzdHJveWVkIGJlZm9yZRRoYW5kLgBNAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIGRlc3Ryb3llZC4gVGhpcyBtdXN0IGlkZW50aWZ5IGFuIGV4aXN0aW5nICAgYXNzZXQuAOBFYWNoIHN1Y2Nlc3NmdWwgY2FsbCBlbWl0cyB0aGUgYEV2ZW50OjpEZXN0cm95ZWRgIGV2ZW50LhBtaW50DAEIaWQdAgFMVDo6QXNzZXRJZFBhcmFtZXRlcgABLGJlbmVmaWNpYXJ5AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARhhbW91bnRVAQEoVDo6QmFsYW5jZQAGMIhNaW50IGFzc2V0cyBvZiBhIHBhcnRpY3VsYXIgY2xhc3MuADkBVGhlIG9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBtdXN0IGJlIHRoZSBJc3N1ZXIgb2YgdGhlIGFzc2V0IGBpZGAuAPwtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBoYXZlIHNvbWUgYW1vdW50IG1pbnRlZC4NAS0gYGJlbmVmaWNpYXJ5YDogVGhlIGFjY291bnQgdG8gYmUgY3JlZGl0ZWQgd2l0aCB0aGUgbWludGVkIGFzc2V0cy7ELSBgYW1vdW50YDogVGhlIGFtb3VudCBvZiB0aGUgYXNzZXQgdG8gYmUgbWludGVkLgCURW1pdHMgYElzc3VlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLgA4V2VpZ2h0OiBgTygxKWBVAU1vZGVzOiBQcmUtZXhpc3RpbmcgYmFsYW5jZSBvZiBgYmVuZWZpY2lhcnlgOyBBY2NvdW50IHByZS1leGlzdGVuY2Ugb2YgYGJlbmVmaWNpYXJ5YC4QYnVybgwBCGlkHQIBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAAQx3aG8AAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGFtb3VudFUBAShUOjpCYWxhbmNlAAc8RQFSZWR1Y2UgdGhlIGJhbGFuY2Ugb2YgYHdob2AgYnkgYXMgbXVjaCBhcyBwb3NzaWJsZSB1cCB0byBgYW1vdW50YCBhc3NldHMgb2YgYGlkYC4ANQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBNYW5hZ2VyIG9mIHRoZSBhc3NldCBgaWRgLgDQQmFpbHMgd2l0aCBgTm9BY2NvdW50YCBpZiB0aGUgYHdob2AgaXMgYWxyZWFkeSBkZWFkLgD8LSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gaGF2ZSBzb21lIGFtb3VudCBidXJuZWQuoC0gYHdob2A6IFRoZSBhY2NvdW50IHRvIGJlIGRlYml0ZWQgZnJvbS4pAS0gYGFtb3VudGA6IFRoZSBtYXhpbXVtIGFtb3VudCBieSB3aGljaCBgd2hvYCdzIGJhbGFuY2Ugc2hvdWxkIGJlIHJlZHVjZWQuAFEBRW1pdHMgYEJ1cm5lZGAgd2l0aCB0aGUgYWN0dWFsIGFtb3VudCBidXJuZWQuIElmIHRoaXMgdGFrZXMgdGhlIGJhbGFuY2UgdG8gYmVsb3cgdGhlOQFtaW5pbXVtIGZvciB0aGUgYXNzZXQsIHRoZW4gdGhlIGFtb3VudCBidXJuZWQgaXMgaW5jcmVhc2VkIHRvIHRha2UgaXQgdG8gemVyby4AOFdlaWdodDogYE8oMSlgCQFNb2RlczogUG9zdC1leGlzdGVuY2Ugb2YgYHdob2A7IFByZSAmIHBvc3QgWm9tYmllLXN0YXR1cyBvZiBgd2hvYC4gdHJhbnNmZXIMAQhpZB0CAUxUOjpBc3NldElkUGFyYW1ldGVyAAEYdGFyZ2V0AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARhhbW91bnRVAQEoVDo6QmFsYW5jZQAISNBNb3ZlIHNvbWUgYXNzZXRzIGZyb20gdGhlIHNlbmRlciBhY2NvdW50IHRvIGFub3RoZXIuAFhPcmlnaW4gbXVzdCBiZSBTaWduZWQuABEBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gaGF2ZSBzb21lIGFtb3VudCB0cmFuc2ZlcnJlZC6cLSBgdGFyZ2V0YDogVGhlIGFjY291bnQgdG8gYmUgY3JlZGl0ZWQuUQEtIGBhbW91bnRgOiBUaGUgYW1vdW50IGJ5IHdoaWNoIHRoZSBzZW5kZXIncyBiYWxhbmNlIG9mIGFzc2V0cyBzaG91bGQgYmUgcmVkdWNlZCBhbmRhAWB0YXJnZXRgJ3MgYmFsYW5jZSBpbmNyZWFzZWQuIFRoZSBhbW91bnQgYWN0dWFsbHkgdHJhbnNmZXJyZWQgbWF5IGJlIHNsaWdodGx5IGdyZWF0ZXIgaW5dAXRoZSBjYXNlIHRoYXQgdGhlIHRyYW5zZmVyIHdvdWxkIG90aGVyd2lzZSB0YWtlIHRoZSBzZW5kZXIgYmFsYW5jZSBhYm92ZSB6ZXJvIGJ1dCBiZWxvd7x0aGUgbWluaW11bSBiYWxhbmNlLiBNdXN0IGJlIGdyZWF0ZXIgdGhhbiB6ZXJvLgBhAUVtaXRzIGBUcmFuc2ZlcnJlZGAgd2l0aCB0aGUgYWN0dWFsIGFtb3VudCB0cmFuc2ZlcnJlZC4gSWYgdGhpcyB0YWtlcyB0aGUgc291cmNlIGJhbGFuY2VdAXRvIGJlbG93IHRoZSBtaW5pbXVtIGZvciB0aGUgYXNzZXQsIHRoZW4gdGhlIGFtb3VudCB0cmFuc2ZlcnJlZCBpcyBpbmNyZWFzZWQgdG8gdGFrZSBpdCB0byB6ZXJvLgA4V2VpZ2h0OiBgTygxKWBRAU1vZGVzOiBQcmUtZXhpc3RlbmNlIG9mIGB0YXJnZXRgOyBQb3N0LWV4aXN0ZW5jZSBvZiBzZW5kZXI7IEFjY291bnQgcHJlLWV4aXN0ZW5jZSBvZiRgdGFyZ2V0YC5MdHJhbnNmZXJfa2VlcF9hbGl2ZQwBCGlkHQIBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARh0YXJnZXQAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGFtb3VudFUBAShUOjpCYWxhbmNlAAlIWQFNb3ZlIHNvbWUgYXNzZXRzIGZyb20gdGhlIHNlbmRlciBhY2NvdW50IHRvIGFub3RoZXIsIGtlZXBpbmcgdGhlIHNlbmRlciBhY2NvdW50IGFsaXZlLgBYT3JpZ2luIG11c3QgYmUgU2lnbmVkLgARAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGhhdmUgc29tZSBhbW91bnQgdHJhbnNmZXJyZWQunC0gYHRhcmdldGA6IFRoZSBhY2NvdW50IHRvIGJlIGNyZWRpdGVkLlEBLSBgYW1vdW50YDogVGhlIGFtb3VudCBieSB3aGljaCB0aGUgc2VuZGVyJ3MgYmFsYW5jZSBvZiBhc3NldHMgc2hvdWxkIGJlIHJlZHVjZWQgYW5kYQFgdGFyZ2V0YCdzIGJhbGFuY2UgaW5jcmVhc2VkLiBUaGUgYW1vdW50IGFjdHVhbGx5IHRyYW5zZmVycmVkIG1heSBiZSBzbGlnaHRseSBncmVhdGVyIGluXQF0aGUgY2FzZSB0aGF0IHRoZSB0cmFuc2ZlciB3b3VsZCBvdGhlcndpc2UgdGFrZSB0aGUgc2VuZGVyIGJhbGFuY2UgYWJvdmUgemVybyBidXQgYmVsb3e8dGhlIG1pbmltdW0gYmFsYW5jZS4gTXVzdCBiZSBncmVhdGVyIHRoYW4gemVyby4AYQFFbWl0cyBgVHJhbnNmZXJyZWRgIHdpdGggdGhlIGFjdHVhbCBhbW91bnQgdHJhbnNmZXJyZWQuIElmIHRoaXMgdGFrZXMgdGhlIHNvdXJjZSBiYWxhbmNlXQF0byBiZWxvdyB0aGUgbWluaW11bSBmb3IgdGhlIGFzc2V0LCB0aGVuIHRoZSBhbW91bnQgdHJhbnNmZXJyZWQgaXMgaW5jcmVhc2VkIHRvIHRha2UgaXQgdG8gemVyby4AOFdlaWdodDogYE8oMSlgUQFNb2RlczogUHJlLWV4aXN0ZW5jZSBvZiBgdGFyZ2V0YDsgUG9zdC1leGlzdGVuY2Ugb2Ygc2VuZGVyOyBBY2NvdW50IHByZS1leGlzdGVuY2Ugb2YkYHRhcmdldGAuOGZvcmNlX3RyYW5zZmVyEAEIaWQdAgFMVDo6QXNzZXRJZFBhcmFtZXRlcgABGHNvdXJjZQABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEQZGVzdAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYYW1vdW50VQEBKFQ6OkJhbGFuY2UACky0TW92ZSBzb21lIGFzc2V0cyBmcm9tIG9uZSBhY2NvdW50IHRvIGFub3RoZXIuAC0BT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgQWRtaW4gb2YgdGhlIGFzc2V0IGBpZGAuABEBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gaGF2ZSBzb21lIGFtb3VudCB0cmFuc2ZlcnJlZC6YLSBgc291cmNlYDogVGhlIGFjY291bnQgdG8gYmUgZGViaXRlZC6ULSBgZGVzdGA6IFRoZSBhY2NvdW50IHRvIGJlIGNyZWRpdGVkLlkBLSBgYW1vdW50YDogVGhlIGFtb3VudCBieSB3aGljaCB0aGUgYHNvdXJjZWAncyBiYWxhbmNlIG9mIGFzc2V0cyBzaG91bGQgYmUgcmVkdWNlZCBhbmRZAWBkZXN0YCdzIGJhbGFuY2UgaW5jcmVhc2VkLiBUaGUgYW1vdW50IGFjdHVhbGx5IHRyYW5zZmVycmVkIG1heSBiZSBzbGlnaHRseSBncmVhdGVyIGluTQF0aGUgY2FzZSB0aGF0IHRoZSB0cmFuc2ZlciB3b3VsZCBvdGhlcndpc2UgdGFrZSB0aGUgYHNvdXJjZWAgYmFsYW5jZSBhYm92ZSB6ZXJvIGJ1dNRiZWxvdyB0aGUgbWluaW11bSBiYWxhbmNlLiBNdXN0IGJlIGdyZWF0ZXIgdGhhbiB6ZXJvLgBhAUVtaXRzIGBUcmFuc2ZlcnJlZGAgd2l0aCB0aGUgYWN0dWFsIGFtb3VudCB0cmFuc2ZlcnJlZC4gSWYgdGhpcyB0YWtlcyB0aGUgc291cmNlIGJhbGFuY2VdAXRvIGJlbG93IHRoZSBtaW5pbXVtIGZvciB0aGUgYXNzZXQsIHRoZW4gdGhlIGFtb3VudCB0cmFuc2ZlcnJlZCBpcyBpbmNyZWFzZWQgdG8gdGFrZSBpdCB0byB6ZXJvLgA4V2VpZ2h0OiBgTygxKWBRAU1vZGVzOiBQcmUtZXhpc3RlbmNlIG9mIGBkZXN0YDsgUG9zdC1leGlzdGVuY2Ugb2YgYHNvdXJjZWA7IEFjY291bnQgcHJlLWV4aXN0ZW5jZSBvZhxgZGVzdGAuGGZyZWV6ZQgBCGlkHQIBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAAQx3aG8AAVBBY2NvdW50SWRMb29rdXBPZjxUPgALMFUBRGlzYWxsb3cgZnVydGhlciB1bnByaXZpbGVnZWQgdHJhbnNmZXJzIG9mIGFuIGFzc2V0IGBpZGAgZnJvbSBhbiBhY2NvdW50IGB3aG9gLiBgd2hvYE0BbXVzdCBhbHJlYWR5IGV4aXN0IGFzIGFuIGVudHJ5IGluIGBBY2NvdW50YHMgb2YgdGhlIGFzc2V0LiBJZiB5b3Ugd2FudCB0byBmcmVlemUgYW70YWNjb3VudCB0aGF0IGRvZXMgbm90IGhhdmUgYW4gZW50cnksIHVzZSBgdG91Y2hfb3RoZXJgIGZpcnN0LgA1AU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEZyZWV6ZXIgb2YgdGhlIGFzc2V0IGBpZGAuAMQtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBiZSBmcm96ZW4uiC0gYHdob2A6IFRoZSBhY2NvdW50IHRvIGJlIGZyb3plbi4APEVtaXRzIGBGcm96ZW5gLgA4V2VpZ2h0OiBgTygxKWAQdGhhdwgBCGlkHQIBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAAQx3aG8AAVBBY2NvdW50SWRMb29rdXBPZjxUPgAMKOhBbGxvdyB1bnByaXZpbGVnZWQgdHJhbnNmZXJzIHRvIGFuZCBmcm9tIGFuIGFjY291bnQgYWdhaW4uAC0BT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgQWRtaW4gb2YgdGhlIGFzc2V0IGBpZGAuAMQtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBiZSBmcm96ZW4ukC0gYHdob2A6IFRoZSBhY2NvdW50IHRvIGJlIHVuZnJvemVuLgA8RW1pdHMgYFRoYXdlZGAuADhXZWlnaHQ6IGBPKDEpYDBmcmVlemVfYXNzZXQEAQhpZB0CAUxUOjpBc3NldElkUGFyYW1ldGVyAA0k8ERpc2FsbG93IGZ1cnRoZXIgdW5wcml2aWxlZ2VkIHRyYW5zZmVycyBmb3IgdGhlIGFzc2V0IGNsYXNzLgA1AU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEZyZWV6ZXIgb2YgdGhlIGFzc2V0IGBpZGAuAMQtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBiZSBmcm96ZW4uADxFbWl0cyBgRnJvemVuYC4AOFdlaWdodDogYE8oMSlgKHRoYXdfYXNzZXQEAQhpZB0CAUxUOjpBc3NldElkUGFyYW1ldGVyAA4kxEFsbG93IHVucHJpdmlsZWdlZCB0cmFuc2ZlcnMgZm9yIHRoZSBhc3NldCBhZ2Fpbi4ALQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBBZG1pbiBvZiB0aGUgYXNzZXQgYGlkYC4AxC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIHRoYXdlZC4APEVtaXRzIGBUaGF3ZWRgLgA4V2VpZ2h0OiBgTygxKWBIdHJhbnNmZXJfb3duZXJzaGlwCAEIaWQdAgFMVDo6QXNzZXRJZFBhcmFtZXRlcgABFG93bmVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4ADyh0Q2hhbmdlIHRoZSBPd25lciBvZiBhbiBhc3NldC4ALQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBPd25lciBvZiB0aGUgYXNzZXQgYGlkYC4AkC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0LpwtIGBvd25lcmA6IFRoZSBuZXcgT3duZXIgb2YgdGhpcyBhc3NldC4AVEVtaXRzIGBPd25lckNoYW5nZWRgLgA4V2VpZ2h0OiBgTygxKWAgc2V0X3RlYW0QAQhpZB0CAUxUOjpBc3NldElkUGFyYW1ldGVyAAEYaXNzdWVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARRhZG1pbgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEcZnJlZXplcgABUEFjY291bnRJZExvb2t1cE9mPFQ+ABAwxENoYW5nZSB0aGUgSXNzdWVyLCBBZG1pbiBhbmQgRnJlZXplciBvZiBhbiBhc3NldC4ALQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBPd25lciBvZiB0aGUgYXNzZXQgYGlkYC4AxC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIGZyb3plbi6kLSBgaXNzdWVyYDogVGhlIG5ldyBJc3N1ZXIgb2YgdGhpcyBhc3NldC6cLSBgYWRtaW5gOiBUaGUgbmV3IEFkbWluIG9mIHRoaXMgYXNzZXQurC0gYGZyZWV6ZXJgOiBUaGUgbmV3IEZyZWV6ZXIgb2YgdGhpcyBhc3NldC4AUEVtaXRzIGBUZWFtQ2hhbmdlZGAuADhXZWlnaHQ6IGBPKDEpYDBzZXRfbWV0YWRhdGEQAQhpZB0CAUxUOjpBc3NldElkUGFyYW1ldGVyAAEQbmFtZRgBHFZlYzx1OD4AARhzeW1ib2wYARxWZWM8dTg+AAEgZGVjaW1hbHMMAQh1OAARQHhTZXQgdGhlIG1ldGFkYXRhIGZvciBhbiBhc3NldC4ALQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBPd25lciBvZiB0aGUgYXNzZXQgYGlkYC4A2EZ1bmRzIG9mIHNlbmRlciBhcmUgcmVzZXJ2ZWQgYWNjb3JkaW5nIHRvIHRoZSBmb3JtdWxhOlEBYE1ldGFkYXRhRGVwb3NpdEJhc2UgKyBNZXRhZGF0YURlcG9zaXRQZXJCeXRlICogKG5hbWUubGVuICsgc3ltYm9sLmxlbilgIHRha2luZyBpbnRvjGFjY291bnQgYW55IGFscmVhZHkgcmVzZXJ2ZWQgZnVuZHMuALgtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byB1cGRhdGUuTQEtIGBuYW1lYDogVGhlIHVzZXIgZnJpZW5kbHkgbmFtZSBvZiB0aGlzIGFzc2V0LiBMaW1pdGVkIGluIGxlbmd0aCBieSBgU3RyaW5nTGltaXRgLk0BLSBgc3ltYm9sYDogVGhlIGV4Y2hhbmdlIHN5bWJvbCBmb3IgdGhpcyBhc3NldC4gTGltaXRlZCBpbiBsZW5ndGggYnkgYFN0cmluZ0xpbWl0YC4tAS0gYGRlY2ltYWxzYDogVGhlIG51bWJlciBvZiBkZWNpbWFscyB0aGlzIGFzc2V0IHVzZXMgdG8gcmVwcmVzZW50IG9uZSB1bml0LgBQRW1pdHMgYE1ldGFkYXRhU2V0YC4AOFdlaWdodDogYE8oMSlgOGNsZWFyX21ldGFkYXRhBAEIaWQdAgFMVDo6QXNzZXRJZFBhcmFtZXRlcgASLIBDbGVhciB0aGUgbWV0YWRhdGEgZm9yIGFuIGFzc2V0LgAtAU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIE93bmVyIG9mIHRoZSBhc3NldCBgaWRgLgCkQW55IGRlcG9zaXQgaXMgZnJlZWQgZm9yIHRoZSBhc3NldCBvd25lci4AtC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGNsZWFyLgBgRW1pdHMgYE1ldGFkYXRhQ2xlYXJlZGAuADhXZWlnaHQ6IGBPKDEpYEhmb3JjZV9zZXRfbWV0YWRhdGEUAQhpZB0CAUxUOjpBc3NldElkUGFyYW1ldGVyAAEQbmFtZRgBHFZlYzx1OD4AARhzeW1ib2wYARxWZWM8dTg+AAEgZGVjaW1hbHMMAQh1OAABJGlzX2Zyb3plbl0BARBib29sABM4uEZvcmNlIHRoZSBtZXRhZGF0YSBmb3IgYW4gYXNzZXQgdG8gc29tZSB2YWx1ZS4AbE9yaWdpbiBtdXN0IGJlIEZvcmNlT3JpZ2luLgBoQW55IGRlcG9zaXQgaXMgbGVmdCBhbG9uZS4AuC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIHVwZGF0ZS5NAS0gYG5hbWVgOiBUaGUgdXNlciBmcmllbmRseSBuYW1lIG9mIHRoaXMgYXNzZXQuIExpbWl0ZWQgaW4gbGVuZ3RoIGJ5IGBTdHJpbmdMaW1pdGAuTQEtIGBzeW1ib2xgOiBUaGUgZXhjaGFuZ2Ugc3ltYm9sIGZvciB0aGlzIGFzc2V0LiBMaW1pdGVkIGluIGxlbmd0aCBieSBgU3RyaW5nTGltaXRgLi0BLSBgZGVjaW1hbHNgOiBUaGUgbnVtYmVyIG9mIGRlY2ltYWxzIHRoaXMgYXNzZXQgdXNlcyB0byByZXByZXNlbnQgb25lIHVuaXQuAFBFbWl0cyBgTWV0YWRhdGFTZXRgLgBRAVdlaWdodDogYE8oTiArIFMpYCB3aGVyZSBOIGFuZCBTIGFyZSB0aGUgbGVuZ3RoIG9mIHRoZSBuYW1lIGFuZCBzeW1ib2wgcmVzcGVjdGl2ZWx5LlBmb3JjZV9jbGVhcl9tZXRhZGF0YQQBCGlkHQIBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAFCyAQ2xlYXIgdGhlIG1ldGFkYXRhIGZvciBhbiBhc3NldC4AbE9yaWdpbiBtdXN0IGJlIEZvcmNlT3JpZ2luLgBgQW55IGRlcG9zaXQgaXMgcmV0dXJuZWQuALQtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBjbGVhci4AYEVtaXRzIGBNZXRhZGF0YUNsZWFyZWRgLgA4V2VpZ2h0OiBgTygxKWBIZm9yY2VfYXNzZXRfc3RhdHVzIAEIaWQdAgFMVDo6QXNzZXRJZFBhcmFtZXRlcgABFG93bmVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARhpc3N1ZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABFGFkbWluAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARxmcmVlemVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AASxtaW5fYmFsYW5jZVUBAShUOjpCYWxhbmNlAAE0aXNfc3VmZmljaWVudF0BARBib29sAAEkaXNfZnJvemVuXQEBEGJvb2wAFViYQWx0ZXIgdGhlIGF0dHJpYnV0ZXMgb2YgYSBnaXZlbiBhc3NldC4AdE9yaWdpbiBtdXN0IGJlIGBGb3JjZU9yaWdpbmAuAJAtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldC6cLSBgb3duZXJgOiBUaGUgbmV3IE93bmVyIG9mIHRoaXMgYXNzZXQupC0gYGlzc3VlcmA6IFRoZSBuZXcgSXNzdWVyIG9mIHRoaXMgYXNzZXQunC0gYGFkbWluYDogVGhlIG5ldyBBZG1pbiBvZiB0aGlzIGFzc2V0LqwtIGBmcmVlemVyYDogVGhlIG5ldyBGcmVlemVyIG9mIHRoaXMgYXNzZXQuTQEtIGBtaW5fYmFsYW5jZWA6IFRoZSBtaW5pbXVtIGJhbGFuY2Ugb2YgdGhpcyBuZXcgYXNzZXQgdGhhdCBhbnkgc2luZ2xlIGFjY291bnQgbXVzdD0BaGF2ZS4gSWYgYW4gYWNjb3VudCdzIGJhbGFuY2UgaXMgcmVkdWNlZCBiZWxvdyB0aGlzLCB0aGVuIGl0IGNvbGxhcHNlcyB0byB6ZXJvLlEBLSBgaXNfc3VmZmljaWVudGA6IFdoZXRoZXIgYSBub24temVybyBiYWxhbmNlIG9mIHRoaXMgYXNzZXQgaXMgZGVwb3NpdCBvZiBzdWZmaWNpZW50TQF2YWx1ZSB0byBhY2NvdW50IGZvciB0aGUgc3RhdGUgYmxvYXQgYXNzb2NpYXRlZCB3aXRoIGl0cyBiYWxhbmNlIHN0b3JhZ2UuIElmIHNldCB0b1UBYHRydWVgLCB0aGVuIG5vbi16ZXJvIGJhbGFuY2VzIG1heSBiZSBzdG9yZWQgd2l0aG91dCBhIGBjb25zdW1lcmAgcmVmZXJlbmNlIChhbmQgdGh1c00BYW4gRUQgaW4gdGhlIEJhbGFuY2VzIHBhbGxldCBvciB3aGF0ZXZlciBlbHNlIGlzIHVzZWQgdG8gY29udHJvbCB1c2VyLWFjY291bnQgc3RhdGUgZ3Jvd3RoKS49AS0gYGlzX2Zyb3plbmA6IFdoZXRoZXIgdGhpcyBhc3NldCBjbGFzcyBpcyBmcm96ZW4gZXhjZXB0IGZvciBwZXJtaXNzaW9uZWQvYWRtaW40aW5zdHJ1Y3Rpb25zLgDoRW1pdHMgYEFzc2V0U3RhdHVzQ2hhbmdlZGAgd2l0aCB0aGUgaWRlbnRpdHkgb2YgdGhlIGFzc2V0LgA4V2VpZ2h0OiBgTygxKWBAYXBwcm92ZV90cmFuc2ZlcgwBCGlkHQIBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAASBkZWxlZ2F0ZQABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYYW1vdW50VQEBKFQ6OkJhbGFuY2UAFlAtAUFwcHJvdmUgYW4gYW1vdW50IG9mIGFzc2V0IGZvciB0cmFuc2ZlciBieSBhIGRlbGVnYXRlZCB0aGlyZC1wYXJ0eSBhY2NvdW50LgBYT3JpZ2luIG11c3QgYmUgU2lnbmVkLgBNAUVuc3VyZXMgdGhhdCBgQXBwcm92YWxEZXBvc2l0YCB3b3J0aCBvZiBgQ3VycmVuY3lgIGlzIHJlc2VydmVkIGZyb20gc2lnbmluZyBhY2NvdW50VQFmb3IgdGhlIHB1cnBvc2Ugb2YgaG9sZGluZyB0aGUgYXBwcm92YWwuIElmIHNvbWUgbm9uLXplcm8gYW1vdW50IG9mIGFzc2V0cyBpcyBhbHJlYWR5SQFhcHByb3ZlZCBmcm9tIHNpZ25pbmcgYWNjb3VudCB0byBgZGVsZWdhdGVgLCB0aGVuIGl0IGlzIHRvcHBlZCB1cCBvciB1bnJlc2VydmVkIHRvVG1lZXQgdGhlIHJpZ2h0IHZhbHVlLgBFAU5PVEU6IFRoZSBzaWduaW5nIGFjY291bnQgZG9lcyBub3QgbmVlZCB0byBvd24gYGFtb3VudGAgb2YgYXNzZXRzIGF0IHRoZSBwb2ludCBvZkRtYWtpbmcgdGhpcyBjYWxsLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQuDQEtIGBkZWxlZ2F0ZWA6IFRoZSBhY2NvdW50IHRvIGRlbGVnYXRlIHBlcm1pc3Npb24gdG8gdHJhbnNmZXIgYXNzZXQuSQEtIGBhbW91bnRgOiBUaGUgYW1vdW50IG9mIGFzc2V0IHRoYXQgbWF5IGJlIHRyYW5zZmVycmVkIGJ5IGBkZWxlZ2F0ZWAuIElmIHRoZXJlIGlz4GFscmVhZHkgYW4gYXBwcm92YWwgaW4gcGxhY2UsIHRoZW4gdGhpcyBhY3RzIGFkZGl0aXZlbHkuAJBFbWl0cyBgQXBwcm92ZWRUcmFuc2ZlcmAgb24gc3VjY2Vzcy4AOFdlaWdodDogYE8oMSlgPGNhbmNlbF9hcHByb3ZhbAgBCGlkHQIBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAASBkZWxlZ2F0ZQABUEFjY291bnRJZExvb2t1cE9mPFQ+ABc0SQFDYW5jZWwgYWxsIG9mIHNvbWUgYXNzZXQgYXBwcm92ZWQgZm9yIGRlbGVnYXRlZCB0cmFuc2ZlciBieSBhIHRoaXJkLXBhcnR5IGFjY291bnQuAD0BT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGVyZSBtdXN0IGJlIGFuIGFwcHJvdmFsIGluIHBsYWNlIGJldHdlZW4gc2lnbmVyIGFuZCxgZGVsZWdhdGVgLgBJAVVucmVzZXJ2ZXMgYW55IGRlcG9zaXQgcHJldmlvdXNseSByZXNlcnZlZCBieSBgYXBwcm92ZV90cmFuc2ZlcmAgZm9yIHRoZSBhcHByb3ZhbC4AkC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0LgUBLSBgZGVsZWdhdGVgOiBUaGUgYWNjb3VudCBkZWxlZ2F0ZWQgcGVybWlzc2lvbiB0byB0cmFuc2ZlciBhc3NldC4AlEVtaXRzIGBBcHByb3ZhbENhbmNlbGxlZGAgb24gc3VjY2Vzcy4AOFdlaWdodDogYE8oMSlgVGZvcmNlX2NhbmNlbF9hcHByb3ZhbAwBCGlkHQIBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARRvd25lcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEgZGVsZWdhdGUAAVBBY2NvdW50SWRMb29rdXBPZjxUPgAYNEkBQ2FuY2VsIGFsbCBvZiBzb21lIGFzc2V0IGFwcHJvdmVkIGZvciBkZWxlZ2F0ZWQgdHJhbnNmZXIgYnkgYSB0aGlyZC1wYXJ0eSBhY2NvdW50LgBJAU9yaWdpbiBtdXN0IGJlIGVpdGhlciBGb3JjZU9yaWdpbiBvciBTaWduZWQgb3JpZ2luIHdpdGggdGhlIHNpZ25lciBiZWluZyB0aGUgQWRtaW5oYWNjb3VudCBvZiB0aGUgYXNzZXQgYGlkYC4ASQFVbnJlc2VydmVzIGFueSBkZXBvc2l0IHByZXZpb3VzbHkgcmVzZXJ2ZWQgYnkgYGFwcHJvdmVfdHJhbnNmZXJgIGZvciB0aGUgYXBwcm92YWwuAJAtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldC4FAS0gYGRlbGVnYXRlYDogVGhlIGFjY291bnQgZGVsZWdhdGVkIHBlcm1pc3Npb24gdG8gdHJhbnNmZXIgYXNzZXQuAJRFbWl0cyBgQXBwcm92YWxDYW5jZWxsZWRgIG9uIHN1Y2Nlc3MuADhXZWlnaHQ6IGBPKDEpYER0cmFuc2Zlcl9hcHByb3ZlZBABCGlkHQIBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARRvd25lcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEsZGVzdGluYXRpb24AAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGFtb3VudFUBAShUOjpCYWxhbmNlABlITQFUcmFuc2ZlciBzb21lIGFzc2V0IGJhbGFuY2UgZnJvbSBhIHByZXZpb3VzbHkgZGVsZWdhdGVkIGFjY291bnQgdG8gc29tZSB0aGlyZC1wYXJ0eSBhY2NvdW50LgBJAU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlcmUgbXVzdCBiZSBhbiBhcHByb3ZhbCBpbiBwbGFjZSBieSB0aGUgYG93bmVyYCB0byB0aGUcc2lnbmVyLgBZAUlmIHRoZSBlbnRpcmUgYW1vdW50IGFwcHJvdmVkIGZvciB0cmFuc2ZlciBpcyB0cmFuc2ZlcnJlZCwgdGhlbiBhbnkgZGVwb3NpdCBwcmV2aW91c2x5tHJlc2VydmVkIGJ5IGBhcHByb3ZlX3RyYW5zZmVyYCBpcyB1bnJlc2VydmVkLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQuYQEtIGBvd25lcmA6IFRoZSBhY2NvdW50IHdoaWNoIHByZXZpb3VzbHkgYXBwcm92ZWQgZm9yIGEgdHJhbnNmZXIgb2YgYXQgbGVhc3QgYGFtb3VudGAgYW5kvGZyb20gd2hpY2ggdGhlIGFzc2V0IGJhbGFuY2Ugd2lsbCBiZSB3aXRoZHJhd24uYQEtIGBkZXN0aW5hdGlvbmA6IFRoZSBhY2NvdW50IHRvIHdoaWNoIHRoZSBhc3NldCBiYWxhbmNlIG9mIGBhbW91bnRgIHdpbGwgYmUgdHJhbnNmZXJyZWQutC0gYGFtb3VudGA6IFRoZSBhbW91bnQgb2YgYXNzZXRzIHRvIHRyYW5zZmVyLgCcRW1pdHMgYFRyYW5zZmVycmVkQXBwcm92ZWRgIG9uIHN1Y2Nlc3MuADhXZWlnaHQ6IGBPKDEpYBR0b3VjaAQBCGlkHQIBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAGiTAQ3JlYXRlIGFuIGFzc2V0IGFjY291bnQgZm9yIG5vbi1wcm92aWRlciBhc3NldHMuAMBBIGRlcG9zaXQgd2lsbCBiZSB0YWtlbiBmcm9tIHRoZSBzaWduZXIgYWNjb3VudC4AXQEtIGBvcmlnaW5gOiBNdXN0IGJlIFNpZ25lZDsgdGhlIHNpZ25lciBhY2NvdW50IG11c3QgaGF2ZSBzdWZmaWNpZW50IGZ1bmRzIGZvciBhIGRlcG9zaXQ4ICB0byBiZSB0YWtlbi4JAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IGZvciB0aGUgYWNjb3VudCB0byBiZSBjcmVhdGVkLgCYRW1pdHMgYFRvdWNoZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4YcmVmdW5kCAEIaWQdAgFMVDo6QXNzZXRJZFBhcmFtZXRlcgABKGFsbG93X2J1cm5dAQEQYm9vbAAbNFkBUmV0dXJuIHRoZSBkZXBvc2l0IChpZiBhbnkpIG9mIGFuIGFzc2V0IGFjY291bnQgb3IgYSBjb25zdW1lciByZWZlcmVuY2UgKGlmIGFueSkgb2YgYW4gYWNjb3VudC4AaFRoZSBvcmlnaW4gbXVzdCBiZSBTaWduZWQuAD0BLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgZm9yIHdoaWNoIHRoZSBjYWxsZXIgd291bGQgbGlrZSB0aGUgZGVwb3NpdCwgIHJlZnVuZGVkLl0BLSBgYWxsb3dfYnVybmA6IElmIGB0cnVlYCB0aGVuIGFzc2V0cyBtYXkgYmUgZGVzdHJveWVkIGluIG9yZGVyIHRvIGNvbXBsZXRlIHRoZSByZWZ1bmQuAEkBSXQgd2lsbCBmYWlsIHdpdGggZWl0aGVyIFtgRXJyb3I6OkNvbnRhaW5zSG9sZHNgXSBvciBbYEVycm9yOjpDb250YWluc0ZyZWV6ZXNgXSBpZtR0aGUgYXNzZXQgYWNjb3VudCBjb250YWlucyBob2xkcyBvciBmcmVlemVzIGluIHBsYWNlLgCcRW1pdHMgYFJlZnVuZGVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuPHNldF9taW5fYmFsYW5jZQgBCGlkHQIBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAASxtaW5fYmFsYW5jZVkBAShUOjpCYWxhbmNlABwwlFNldHMgdGhlIG1pbmltdW0gYmFsYW5jZSBvZiBhbiBhc3NldC4AIQFPbmx5IHdvcmtzIGlmIHRoZXJlIGFyZW4ndCBhbnkgYWNjb3VudHMgdGhhdCBhcmUgaG9sZGluZyB0aGUgYXNzZXQgb3IgaWbgdGhlIG5ldyB2YWx1ZSBvZiBgbWluX2JhbGFuY2VgIGlzIGxlc3MgdGhhbiB0aGUgb2xkIG9uZS4A/E9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBoYXMgdG8gYmUgdGhlIE93bmVyIG9mIHRoZSxhc3NldCBgaWRgLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQuwC0gYG1pbl9iYWxhbmNlYDogVGhlIG5ldyB2YWx1ZSBvZiBgbWluX2JhbGFuY2VgLgDURW1pdHMgYEFzc2V0TWluQmFsYW5jZUNoYW5nZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4sdG91Y2hfb3RoZXIIAQhpZB0CAUxUOjpBc3NldElkUGFyYW1ldGVyAAEMd2hvAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AHSyIQ3JlYXRlIGFuIGFzc2V0IGFjY291bnQgZm9yIGB3aG9gLgDAQSBkZXBvc2l0IHdpbGwgYmUgdGFrZW4gZnJvbSB0aGUgc2lnbmVyIGFjY291bnQuAF0BLSBgb3JpZ2luYDogTXVzdCBiZSBTaWduZWQ7IHRoZSBzaWduZXIgYWNjb3VudCBtdXN0IGhhdmUgc3VmZmljaWVudCBmdW5kcyBmb3IgYSBkZXBvc2l0OCAgdG8gYmUgdGFrZW4uYQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCBmb3IgdGhlIGFjY291bnQgdG8gYmUgY3JlYXRlZCwgdGhlIGFzc2V0IHN0YXR1cyBtdXN0KCAgYmUgbGl2ZS6MLSBgd2hvYDogVGhlIGFjY291bnQgdG8gYmUgY3JlYXRlZC4AmEVtaXRzIGBUb3VjaGVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuMHJlZnVuZF9vdGhlcggBCGlkHQIBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAAQx3aG8AAVBBY2NvdW50SWRMb29rdXBPZjxUPgAeNF0BUmV0dXJuIHRoZSBkZXBvc2l0IChpZiBhbnkpIG9mIGEgdGFyZ2V0IGFzc2V0IGFjY291bnQuIFVzZWZ1bCBpZiB5b3UgYXJlIHRoZSBkZXBvc2l0b3IuAF0BVGhlIG9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgZWl0aGVyIHRoZSBhY2NvdW50IG93bmVyLCBkZXBvc2l0b3IsIG9yIGFzc2V0IGBBZG1pbmAuIEluYQFvcmRlciB0byBidXJuIGEgbm9uLXplcm8gYmFsYW5jZSBvZiB0aGUgYXNzZXQsIHRoZSBjYWxsZXIgbXVzdCBiZSB0aGUgYWNjb3VudCBhbmQgc2hvdWxkNHVzZSBgcmVmdW5kYC4AGQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCBmb3IgdGhlIGFjY291bnQgaG9sZGluZyBhIGRlcG9zaXQufC0gYHdob2A6IFRoZSBhY2NvdW50IHRvIHJlZnVuZC4ASQFJdCB3aWxsIGZhaWwgd2l0aCBlaXRoZXIgW2BFcnJvcjo6Q29udGFpbnNIb2xkc2BdIG9yIFtgRXJyb3I6OkNvbnRhaW5zRnJlZXplc2BdIGlm1HRoZSBhc3NldCBhY2NvdW50IGNvbnRhaW5zIGhvbGRzIG9yIGZyZWV6ZXMgaW4gcGxhY2UuAJxFbWl0cyBgUmVmdW5kZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4UYmxvY2sIAQhpZB0CAUxUOjpBc3NldElkUGFyYW1ldGVyAAEMd2hvAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AHyhZAURpc2FsbG93IGZ1cnRoZXIgdW5wcml2aWxlZ2VkIHRyYW5zZmVycyBvZiBhbiBhc3NldCBgaWRgIHRvIGFuZCBmcm9tIGFuIGFjY291bnQgYHdob2AuADUBT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgRnJlZXplciBvZiB0aGUgYXNzZXQgYGlkYC4AuC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFjY291bnQncyBhc3NldC6ULSBgd2hvYDogVGhlIGFjY291bnQgdG8gYmUgdW5ibG9ja2VkLgBARW1pdHMgYEJsb2NrZWRgLgA4V2VpZ2h0OiBgTygxKWAwdHJhbnNmZXJfYWxsDAEIaWQdAgFMVDo6QXNzZXRJZFBhcmFtZXRlcgABEGRlc3QAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABKGtlZXBfYWxpdmVdAQEQYm9vbAAgQB0BVHJhbnNmZXIgdGhlIGVudGlyZSB0cmFuc2ZlcmFibGUgYmFsYW5jZSBmcm9tIHRoZSBjYWxsZXIgYXNzZXQgYWNjb3VudC4AWQFOT1RFOiBUaGlzIGZ1bmN0aW9uIG9ubHkgYXR0ZW1wdHMgdG8gdHJhbnNmZXIgX3RyYW5zZmVyYWJsZV8gYmFsYW5jZXMuIFRoaXMgbWVhbnMgdGhhdD0BYW55IGhlbGQsIGZyb3plbiwgb3IgbWluaW11bSBiYWxhbmNlICh3aGVuIGBrZWVwX2FsaXZlYCBpcyBgdHJ1ZWApLCB3aWxsIG5vdCBiZV0BdHJhbnNmZXJyZWQgYnkgdGhpcyBmdW5jdGlvbi4gVG8gZW5zdXJlIHRoYXQgdGhpcyBmdW5jdGlvbiByZXN1bHRzIGluIGEga2lsbGVkIGFjY291bnQsRQF5b3UgbWlnaHQgbmVlZCB0byBwcmVwYXJlIHRoZSBhY2NvdW50IGJ5IHJlbW92aW5nIGFueSByZWZlcmVuY2UgY291bnRlcnMsIHN0b3JhZ2VAZGVwb3NpdHMsIGV0Yy4uLgDAVGhlIGRpc3BhdGNoIG9yaWdpbiBvZiB0aGlzIGNhbGwgbXVzdCBiZSBTaWduZWQuABkBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgZm9yIHRoZSBhY2NvdW50IGhvbGRpbmcgYSBkZXBvc2l0LqAtIGBkZXN0YDogVGhlIHJlY2lwaWVudCBvZiB0aGUgdHJhbnNmZXIuWQEtIGBrZWVwX2FsaXZlYDogQSBib29sZWFuIHRvIGRldGVybWluZSBpZiB0aGUgYHRyYW5zZmVyX2FsbGAgb3BlcmF0aW9uIHNob3VsZCBzZW5kIGFsbE0BICBvZiB0aGUgZnVuZHMgdGhlIGFzc2V0IGFjY291bnQgaGFzLCBjYXVzaW5nIHRoZSBzZW5kZXIgYXNzZXQgYWNjb3VudCB0byBiZSBraWxsZWRFASAgKGZhbHNlKSwgb3IgdHJhbnNmZXIgZXZlcnl0aGluZyBleGNlcHQgYXQgbGVhc3QgdGhlIG1pbmltdW0gYmFsYW5jZSwgd2hpY2ggd2lsbOggIGd1YXJhbnRlZSB0byBrZWVwIHRoZSBzZW5kZXIgYXNzZXQgYWNjb3VudCBhbGl2ZSAodHJ1ZSkuMHNldF9yZXNlcnZlcwgBCGlkHQIBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAASByZXNlcnZlc80EAchCb3VuZGVkVmVjPFQ6OlJlc2VydmVEYXRhLCBDb25zdFUzMjxNQVhfUkVTRVJWRVM+PgAhJMRTZXRzIHRoZSB0cnVzdGVkIHJlc2VydmUgaW5mb3JtYXRpb24gb2YgYW4gYXNzZXQuAFUBT3JpZ2luIG11c3QgYmUgdGhlIE93bmVyIG9mIHRoZSBhc3NldCBgaWRgLiBUaGUgb3JpZ2luIG11c3QgY29uZm9ybSB0byB0aGUgY29uZmlndXJlZCUBYENyZWF0ZU9yaWdpbmAgb3IgYmUgdGhlIHNpZ25lZCBgb3duZXJgIGNvbmZpZ3VyZWQgZHVyaW5nIGFzc2V0IGNyZWF0aW9uLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQu8C0gYHJlc2VydmVzYDogVGhlIGZ1bGwgbGlzdCBvZiB0cnVzdGVkIHJlc2VydmVzIGluZm9ybWF0aW9uLgDURW1pdHMgYEFzc2V0TWluQmFsYW5jZUNoYW5nZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuzQQMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAHRBARTAAAEANUEARhWZWM8VD4AANEEDDRhc3NldHNfY29tbW9uYGxvY2FsX2FuZF9mb3JlaWduX2Fzc2V0c1xGb3JlaWduQXNzZXRSZXNlcnZlRGF0YQAACAEccmVzZXJ2ZR0CASBMb2NhdGlvbgABMHRlbGVwb3J0YWJsZV0BARBib29sAADVBAAAAtEEANkEDDRwYWxsZXRfYXNzZXRzGHBhbGxldBBDYWxsCARUAARJAAGIGGNyZWF0ZQwBCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABFGFkbWluAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AASxtaW5fYmFsYW5jZVkBAShUOjpCYWxhbmNlAABM6Elzc3VlIGEgbmV3IGNsYXNzIG9mIGZ1bmdpYmxlIGFzc2V0cyBmcm9tIGEgcHVibGljIG9yaWdpbi4AJQFUaGlzIG5ldyBhc3NldCBjbGFzcyBoYXMgbm8gYXNzZXRzIGluaXRpYWxseSBhbmQgaXRzIG93bmVyIGlzIHRoZSBvcmlnaW4uAGEBVGhlIG9yaWdpbiBtdXN0IGNvbmZvcm0gdG8gdGhlIGNvbmZpZ3VyZWQgYENyZWF0ZU9yaWdpbmAgYW5kIGhhdmUgc3VmZmljaWVudCBmdW5kcyBmcmVlLgC8RnVuZHMgb2Ygc2VuZGVyIGFyZSByZXNlcnZlZCBieSBgQXNzZXREZXBvc2l0YC4ALFBhcmFtZXRlcnM6WQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBuZXcgYXNzZXQuIFRoaXMgbXVzdCBub3QgYmUgY3VycmVudGx5IGluIHVzZSB0byBpZGVudGlmeTEBYW4gZXhpc3RpbmcgYXNzZXQuIElmIFtgTmV4dEFzc2V0SWRgXSBpcyBzZXQsIHRoZW4gdGhpcyBtdXN0IGJlIGVxdWFsIHRvIGl0LlkBLSBgYWRtaW5gOiBUaGUgYWRtaW4gb2YgdGhpcyBjbGFzcyBvZiBhc3NldHMuIFRoZSBhZG1pbiBpcyB0aGUgaW5pdGlhbCBhZGRyZXNzIG9mIGVhY2icbWVtYmVyIG9mIHRoZSBhc3NldCBjbGFzcydzIGFkbWluIHRlYW0uTQEtIGBtaW5fYmFsYW5jZWA6IFRoZSBtaW5pbXVtIGJhbGFuY2Ugb2YgdGhpcyBuZXcgYXNzZXQgdGhhdCBhbnkgc2luZ2xlIGFjY291bnQgbXVzdD0BaGF2ZS4gSWYgYW4gYWNjb3VudCdzIGJhbGFuY2UgaXMgcmVkdWNlZCBiZWxvdyB0aGlzLCB0aGVuIGl0IGNvbGxhcHNlcyB0byB6ZXJvLgCYRW1pdHMgYENyZWF0ZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4AOFdlaWdodDogYE8oMSlgMGZvcmNlX2NyZWF0ZRABCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABFG93bmVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AATRpc19zdWZmaWNpZW50XQEBEGJvb2wAASxtaW5fYmFsYW5jZVUBAShUOjpCYWxhbmNlAAFM+Elzc3VlIGEgbmV3IGNsYXNzIG9mIGZ1bmdpYmxlIGFzc2V0cyBmcm9tIGEgcHJpdmlsZWdlZCBvcmlnaW4uALRUaGlzIG5ldyBhc3NldCBjbGFzcyBoYXMgbm8gYXNzZXRzIGluaXRpYWxseS4ApFRoZSBvcmlnaW4gbXVzdCBjb25mb3JtIHRvIGBGb3JjZU9yaWdpbmAuAJxVbmxpa2UgYGNyZWF0ZWAsIG5vIGZ1bmRzIGFyZSByZXNlcnZlZC4AWQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBuZXcgYXNzZXQuIFRoaXMgbXVzdCBub3QgYmUgY3VycmVudGx5IGluIHVzZSB0byBpZGVudGlmeTEBYW4gZXhpc3RpbmcgYXNzZXQuIElmIFtgTmV4dEFzc2V0SWRgXSBpcyBzZXQsIHRoZW4gdGhpcyBtdXN0IGJlIGVxdWFsIHRvIGl0LlkBLSBgb3duZXJgOiBUaGUgb3duZXIgb2YgdGhpcyBjbGFzcyBvZiBhc3NldHMuIFRoZSBvd25lciBoYXMgZnVsbCBzdXBlcnVzZXIgcGVybWlzc2lvbnMlAW92ZXIgdGhpcyBhc3NldCwgYnV0IG1heSBsYXRlciBjaGFuZ2UgYW5kIGNvbmZpZ3VyZSB0aGUgcGVybWlzc2lvbnMgdXNpbmeQYHRyYW5zZmVyX293bmVyc2hpcGAgYW5kIGBzZXRfdGVhbWAuTQEtIGBtaW5fYmFsYW5jZWA6IFRoZSBtaW5pbXVtIGJhbGFuY2Ugb2YgdGhpcyBuZXcgYXNzZXQgdGhhdCBhbnkgc2luZ2xlIGFjY291bnQgbXVzdD0BaGF2ZS4gSWYgYW4gYWNjb3VudCdzIGJhbGFuY2UgaXMgcmVkdWNlZCBiZWxvdyB0aGlzLCB0aGVuIGl0IGNvbGxhcHNlcyB0byB6ZXJvLgCsRW1pdHMgYEZvcmNlQ3JlYXRlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLgA4V2VpZ2h0OiBgTygxKWA0c3RhcnRfZGVzdHJveQQBCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgACMNxTdGFydCB0aGUgcHJvY2VzcyBvZiBkZXN0cm95aW5nIGEgZnVuZ2libGUgYXNzZXQgY2xhc3MuAFkBYHN0YXJ0X2Rlc3Ryb3lgIGlzIHRoZSBmaXJzdCBpbiBhIHNlcmllcyBvZiBleHRyaW5zaWNzIHRoYXQgc2hvdWxkIGJlIGNhbGxlZCwgdG8gYWxsb3d4ZGVzdHJ1Y3Rpb24gb2YgYW4gYXNzZXQgY2xhc3MuAFEBVGhlIG9yaWdpbiBtdXN0IGNvbmZvcm0gdG8gYEZvcmNlT3JpZ2luYCBvciBtdXN0IGJlIGBTaWduZWRgIGJ5IHRoZSBhc3NldCdzIGBvd25lcmAuAE0BLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgZGVzdHJveWVkLiBUaGlzIG11c3QgaWRlbnRpZnkgYW4gZXhpc3RpbmcgICBhc3NldC4ASQFJdCB3aWxsIGZhaWwgd2l0aCBlaXRoZXIgW2BFcnJvcjo6Q29udGFpbnNIb2xkc2BdIG9yIFtgRXJyb3I6OkNvbnRhaW5zRnJlZXplc2BdIGlmuGFuIGFjY291bnQgY29udGFpbnMgaG9sZHMgb3IgZnJlZXplcyBpbiBwbGFjZS5AZGVzdHJveV9hY2NvdW50cwQBCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgADMMxEZXN0cm95IGFsbCBhY2NvdW50cyBhc3NvY2lhdGVkIHdpdGggYSBnaXZlbiBhc3NldC4AXQFgZGVzdHJveV9hY2NvdW50c2Agc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGFmdGVyIGBzdGFydF9kZXN0cm95YCBoYXMgYmVlbiBjYWxsZWQsIGFuZCB0aGWEYXNzZXQgaXMgaW4gYSBgRGVzdHJveWluZ2Agc3RhdGUuAF0BRHVlIHRvIHdlaWdodCByZXN0cmljdGlvbnMsIHRoaXMgZnVuY3Rpb24gbWF5IG5lZWQgdG8gYmUgY2FsbGVkIG11bHRpcGxlIHRpbWVzIHRvIGZ1bGx5MQFkZXN0cm95IGFsbCBhY2NvdW50cy4gSXQgd2lsbCBkZXN0cm95IGBSZW1vdmVJdGVtc0xpbWl0YCBhY2NvdW50cyBhdCBhIHRpbWUuAE0BLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgZGVzdHJveWVkLiBUaGlzIG11c3QgaWRlbnRpZnkgYW4gZXhpc3RpbmcgICBhc3NldC4A1EVhY2ggY2FsbCBlbWl0cyB0aGUgYEV2ZW50OjpEZXN0cm95ZWRBY2NvdW50c2AgZXZlbnQuRGRlc3Ryb3lfYXBwcm92YWxzBAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAQwYQFEZXN0cm95IGFsbCBhcHByb3ZhbHMgYXNzb2NpYXRlZCB3aXRoIGEgZ2l2ZW4gYXNzZXQgdXAgdG8gdGhlIG1heCAoVDo6UmVtb3ZlSXRlbXNMaW1pdCkuAGEBYGRlc3Ryb3lfYXBwcm92YWxzYCBzaG91bGQgb25seSBiZSBjYWxsZWQgYWZ0ZXIgYHN0YXJ0X2Rlc3Ryb3lgIGhhcyBiZWVuIGNhbGxlZCwgYW5kIHRoZYRhc3NldCBpcyBpbiBhIGBEZXN0cm95aW5nYCBzdGF0ZS4AXQFEdWUgdG8gd2VpZ2h0IHJlc3RyaWN0aW9ucywgdGhpcyBmdW5jdGlvbiBtYXkgbmVlZCB0byBiZSBjYWxsZWQgbXVsdGlwbGUgdGltZXMgdG8gZnVsbHk5AWRlc3Ryb3kgYWxsIGFwcHJvdmFscy4gSXQgd2lsbCBkZXN0cm95IGBSZW1vdmVJdGVtc0xpbWl0YCBhcHByb3ZhbHMgYXQgYSB0aW1lLgBNAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIGRlc3Ryb3llZC4gVGhpcyBtdXN0IGlkZW50aWZ5IGFuIGV4aXN0aW5nICAgYXNzZXQuANhFYWNoIGNhbGwgZW1pdHMgdGhlIGBFdmVudDo6RGVzdHJveWVkQXBwcm92YWxzYCBldmVudC44ZmluaXNoX2Rlc3Ryb3kEAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIABSjEQ29tcGxldGUgZGVzdHJveWluZyBhc3NldCBhbmQgdW5yZXNlcnZlIGN1cnJlbmN5LgBVAWBmaW5pc2hfZGVzdHJveWAgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGFmdGVyIGBzdGFydF9kZXN0cm95YCBoYXMgYmVlbiBjYWxsZWQsIGFuZCB0aGVZAWFzc2V0IGlzIGluIGEgYERlc3Ryb3lpbmdgIHN0YXRlLiBBbGwgYWNjb3VudHMgb3IgYXBwcm92YWxzIHNob3VsZCBiZSBkZXN0cm95ZWQgYmVmb3JlFGhhbmQuAE0BLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgZGVzdHJveWVkLiBUaGlzIG11c3QgaWRlbnRpZnkgYW4gZXhpc3RpbmcgICBhc3NldC4A4EVhY2ggc3VjY2Vzc2Z1bCBjYWxsIGVtaXRzIHRoZSBgRXZlbnQ6OkRlc3Ryb3llZGAgZXZlbnQuEG1pbnQMAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAASxiZW5lZmljaWFyeQABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYYW1vdW50VQEBKFQ6OkJhbGFuY2UABjCITWludCBhc3NldHMgb2YgYSBwYXJ0aWN1bGFyIGNsYXNzLgA5AVRoZSBvcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgbXVzdCBiZSB0aGUgSXNzdWVyIG9mIHRoZSBhc3NldCBgaWRgLgD8LSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gaGF2ZSBzb21lIGFtb3VudCBtaW50ZWQuDQEtIGBiZW5lZmljaWFyeWA6IFRoZSBhY2NvdW50IHRvIGJlIGNyZWRpdGVkIHdpdGggdGhlIG1pbnRlZCBhc3NldHMuxC0gYGFtb3VudGA6IFRoZSBhbW91bnQgb2YgdGhlIGFzc2V0IHRvIGJlIG1pbnRlZC4AlEVtaXRzIGBJc3N1ZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4AOFdlaWdodDogYE8oMSlgVQFNb2RlczogUHJlLWV4aXN0aW5nIGJhbGFuY2Ugb2YgYGJlbmVmaWNpYXJ5YDsgQWNjb3VudCBwcmUtZXhpc3RlbmNlIG9mIGBiZW5lZmljaWFyeWAuEGJ1cm4MAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAAQx3aG8AAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGFtb3VudFUBAShUOjpCYWxhbmNlAAc8RQFSZWR1Y2UgdGhlIGJhbGFuY2Ugb2YgYHdob2AgYnkgYXMgbXVjaCBhcyBwb3NzaWJsZSB1cCB0byBgYW1vdW50YCBhc3NldHMgb2YgYGlkYC4ANQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBNYW5hZ2VyIG9mIHRoZSBhc3NldCBgaWRgLgDQQmFpbHMgd2l0aCBgTm9BY2NvdW50YCBpZiB0aGUgYHdob2AgaXMgYWxyZWFkeSBkZWFkLgD8LSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gaGF2ZSBzb21lIGFtb3VudCBidXJuZWQuoC0gYHdob2A6IFRoZSBhY2NvdW50IHRvIGJlIGRlYml0ZWQgZnJvbS4pAS0gYGFtb3VudGA6IFRoZSBtYXhpbXVtIGFtb3VudCBieSB3aGljaCBgd2hvYCdzIGJhbGFuY2Ugc2hvdWxkIGJlIHJlZHVjZWQuAFEBRW1pdHMgYEJ1cm5lZGAgd2l0aCB0aGUgYWN0dWFsIGFtb3VudCBidXJuZWQuIElmIHRoaXMgdGFrZXMgdGhlIGJhbGFuY2UgdG8gYmVsb3cgdGhlOQFtaW5pbXVtIGZvciB0aGUgYXNzZXQsIHRoZW4gdGhlIGFtb3VudCBidXJuZWQgaXMgaW5jcmVhc2VkIHRvIHRha2UgaXQgdG8gemVyby4AOFdlaWdodDogYE8oMSlgCQFNb2RlczogUG9zdC1leGlzdGVuY2Ugb2YgYHdob2A7IFByZSAmIHBvc3QgWm9tYmllLXN0YXR1cyBvZiBgd2hvYC4gdHJhbnNmZXIMAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARh0YXJnZXQAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGFtb3VudFUBAShUOjpCYWxhbmNlAAhI0E1vdmUgc29tZSBhc3NldHMgZnJvbSB0aGUgc2VuZGVyIGFjY291bnQgdG8gYW5vdGhlci4AWE9yaWdpbiBtdXN0IGJlIFNpZ25lZC4AEQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBoYXZlIHNvbWUgYW1vdW50IHRyYW5zZmVycmVkLpwtIGB0YXJnZXRgOiBUaGUgYWNjb3VudCB0byBiZSBjcmVkaXRlZC5RAS0gYGFtb3VudGA6IFRoZSBhbW91bnQgYnkgd2hpY2ggdGhlIHNlbmRlcidzIGJhbGFuY2Ugb2YgYXNzZXRzIHNob3VsZCBiZSByZWR1Y2VkIGFuZGEBYHRhcmdldGAncyBiYWxhbmNlIGluY3JlYXNlZC4gVGhlIGFtb3VudCBhY3R1YWxseSB0cmFuc2ZlcnJlZCBtYXkgYmUgc2xpZ2h0bHkgZ3JlYXRlciBpbl0BdGhlIGNhc2UgdGhhdCB0aGUgdHJhbnNmZXIgd291bGQgb3RoZXJ3aXNlIHRha2UgdGhlIHNlbmRlciBiYWxhbmNlIGFib3ZlIHplcm8gYnV0IGJlbG93vHRoZSBtaW5pbXVtIGJhbGFuY2UuIE11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8uAGEBRW1pdHMgYFRyYW5zZmVycmVkYCB3aXRoIHRoZSBhY3R1YWwgYW1vdW50IHRyYW5zZmVycmVkLiBJZiB0aGlzIHRha2VzIHRoZSBzb3VyY2UgYmFsYW5jZV0BdG8gYmVsb3cgdGhlIG1pbmltdW0gZm9yIHRoZSBhc3NldCwgdGhlbiB0aGUgYW1vdW50IHRyYW5zZmVycmVkIGlzIGluY3JlYXNlZCB0byB0YWtlIGl0IHRvIHplcm8uADhXZWlnaHQ6IGBPKDEpYFEBTW9kZXM6IFByZS1leGlzdGVuY2Ugb2YgYHRhcmdldGA7IFBvc3QtZXhpc3RlbmNlIG9mIHNlbmRlcjsgQWNjb3VudCBwcmUtZXhpc3RlbmNlIG9mJGB0YXJnZXRgLkx0cmFuc2Zlcl9rZWVwX2FsaXZlDAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAEYdGFyZ2V0AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARhhbW91bnRVAQEoVDo6QmFsYW5jZQAJSFkBTW92ZSBzb21lIGFzc2V0cyBmcm9tIHRoZSBzZW5kZXIgYWNjb3VudCB0byBhbm90aGVyLCBrZWVwaW5nIHRoZSBzZW5kZXIgYWNjb3VudCBhbGl2ZS4AWE9yaWdpbiBtdXN0IGJlIFNpZ25lZC4AEQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBoYXZlIHNvbWUgYW1vdW50IHRyYW5zZmVycmVkLpwtIGB0YXJnZXRgOiBUaGUgYWNjb3VudCB0byBiZSBjcmVkaXRlZC5RAS0gYGFtb3VudGA6IFRoZSBhbW91bnQgYnkgd2hpY2ggdGhlIHNlbmRlcidzIGJhbGFuY2Ugb2YgYXNzZXRzIHNob3VsZCBiZSByZWR1Y2VkIGFuZGEBYHRhcmdldGAncyBiYWxhbmNlIGluY3JlYXNlZC4gVGhlIGFtb3VudCBhY3R1YWxseSB0cmFuc2ZlcnJlZCBtYXkgYmUgc2xpZ2h0bHkgZ3JlYXRlciBpbl0BdGhlIGNhc2UgdGhhdCB0aGUgdHJhbnNmZXIgd291bGQgb3RoZXJ3aXNlIHRha2UgdGhlIHNlbmRlciBiYWxhbmNlIGFib3ZlIHplcm8gYnV0IGJlbG93vHRoZSBtaW5pbXVtIGJhbGFuY2UuIE11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8uAGEBRW1pdHMgYFRyYW5zZmVycmVkYCB3aXRoIHRoZSBhY3R1YWwgYW1vdW50IHRyYW5zZmVycmVkLiBJZiB0aGlzIHRha2VzIHRoZSBzb3VyY2UgYmFsYW5jZV0BdG8gYmVsb3cgdGhlIG1pbmltdW0gZm9yIHRoZSBhc3NldCwgdGhlbiB0aGUgYW1vdW50IHRyYW5zZmVycmVkIGlzIGluY3JlYXNlZCB0byB0YWtlIGl0IHRvIHplcm8uADhXZWlnaHQ6IGBPKDEpYFEBTW9kZXM6IFByZS1leGlzdGVuY2Ugb2YgYHRhcmdldGA7IFBvc3QtZXhpc3RlbmNlIG9mIHNlbmRlcjsgQWNjb3VudCBwcmUtZXhpc3RlbmNlIG9mJGB0YXJnZXRgLjhmb3JjZV90cmFuc2ZlchABCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABGHNvdXJjZQABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEQZGVzdAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYYW1vdW50VQEBKFQ6OkJhbGFuY2UACky0TW92ZSBzb21lIGFzc2V0cyBmcm9tIG9uZSBhY2NvdW50IHRvIGFub3RoZXIuAC0BT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgQWRtaW4gb2YgdGhlIGFzc2V0IGBpZGAuABEBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gaGF2ZSBzb21lIGFtb3VudCB0cmFuc2ZlcnJlZC6YLSBgc291cmNlYDogVGhlIGFjY291bnQgdG8gYmUgZGViaXRlZC6ULSBgZGVzdGA6IFRoZSBhY2NvdW50IHRvIGJlIGNyZWRpdGVkLlkBLSBgYW1vdW50YDogVGhlIGFtb3VudCBieSB3aGljaCB0aGUgYHNvdXJjZWAncyBiYWxhbmNlIG9mIGFzc2V0cyBzaG91bGQgYmUgcmVkdWNlZCBhbmRZAWBkZXN0YCdzIGJhbGFuY2UgaW5jcmVhc2VkLiBUaGUgYW1vdW50IGFjdHVhbGx5IHRyYW5zZmVycmVkIG1heSBiZSBzbGlnaHRseSBncmVhdGVyIGluTQF0aGUgY2FzZSB0aGF0IHRoZSB0cmFuc2ZlciB3b3VsZCBvdGhlcndpc2UgdGFrZSB0aGUgYHNvdXJjZWAgYmFsYW5jZSBhYm92ZSB6ZXJvIGJ1dNRiZWxvdyB0aGUgbWluaW11bSBiYWxhbmNlLiBNdXN0IGJlIGdyZWF0ZXIgdGhhbiB6ZXJvLgBhAUVtaXRzIGBUcmFuc2ZlcnJlZGAgd2l0aCB0aGUgYWN0dWFsIGFtb3VudCB0cmFuc2ZlcnJlZC4gSWYgdGhpcyB0YWtlcyB0aGUgc291cmNlIGJhbGFuY2VdAXRvIGJlbG93IHRoZSBtaW5pbXVtIGZvciB0aGUgYXNzZXQsIHRoZW4gdGhlIGFtb3VudCB0cmFuc2ZlcnJlZCBpcyBpbmNyZWFzZWQgdG8gdGFrZSBpdCB0byB6ZXJvLgA4V2VpZ2h0OiBgTygxKWBRAU1vZGVzOiBQcmUtZXhpc3RlbmNlIG9mIGBkZXN0YDsgUG9zdC1leGlzdGVuY2Ugb2YgYHNvdXJjZWA7IEFjY291bnQgcHJlLWV4aXN0ZW5jZSBvZhxgZGVzdGAuGGZyZWV6ZQgBCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABDHdobwABUEFjY291bnRJZExvb2t1cE9mPFQ+AAswVQFEaXNhbGxvdyBmdXJ0aGVyIHVucHJpdmlsZWdlZCB0cmFuc2ZlcnMgb2YgYW4gYXNzZXQgYGlkYCBmcm9tIGFuIGFjY291bnQgYHdob2AuIGB3aG9gTQFtdXN0IGFscmVhZHkgZXhpc3QgYXMgYW4gZW50cnkgaW4gYEFjY291bnRgcyBvZiB0aGUgYXNzZXQuIElmIHlvdSB3YW50IHRvIGZyZWV6ZSBhbvRhY2NvdW50IHRoYXQgZG9lcyBub3QgaGF2ZSBhbiBlbnRyeSwgdXNlIGB0b3VjaF9vdGhlcmAgZmlyc3QuADUBT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgRnJlZXplciBvZiB0aGUgYXNzZXQgYGlkYC4AxC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIGZyb3plbi6ILSBgd2hvYDogVGhlIGFjY291bnQgdG8gYmUgZnJvemVuLgA8RW1pdHMgYEZyb3plbmAuADhXZWlnaHQ6IGBPKDEpYBB0aGF3CAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAEMd2hvAAFQQWNjb3VudElkTG9va3VwT2Y8VD4ADCjoQWxsb3cgdW5wcml2aWxlZ2VkIHRyYW5zZmVycyB0byBhbmQgZnJvbSBhbiBhY2NvdW50IGFnYWluLgAtAU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEFkbWluIG9mIHRoZSBhc3NldCBgaWRgLgDELSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgZnJvemVuLpAtIGB3aG9gOiBUaGUgYWNjb3VudCB0byBiZSB1bmZyb3plbi4APEVtaXRzIGBUaGF3ZWRgLgA4V2VpZ2h0OiBgTygxKWAwZnJlZXplX2Fzc2V0BAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAA0k8ERpc2FsbG93IGZ1cnRoZXIgdW5wcml2aWxlZ2VkIHRyYW5zZmVycyBmb3IgdGhlIGFzc2V0IGNsYXNzLgA1AU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEZyZWV6ZXIgb2YgdGhlIGFzc2V0IGBpZGAuAMQtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBiZSBmcm96ZW4uADxFbWl0cyBgRnJvemVuYC4AOFdlaWdodDogYE8oMSlgKHRoYXdfYXNzZXQEAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIADiTEQWxsb3cgdW5wcml2aWxlZ2VkIHRyYW5zZmVycyBmb3IgdGhlIGFzc2V0IGFnYWluLgAtAU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEFkbWluIG9mIHRoZSBhc3NldCBgaWRgLgDELSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgdGhhd2VkLgA8RW1pdHMgYFRoYXdlZGAuADhXZWlnaHQ6IGBPKDEpYEh0cmFuc2Zlcl9vd25lcnNoaXAIAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARRvd25lcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AA8odENoYW5nZSB0aGUgT3duZXIgb2YgYW4gYXNzZXQuAC0BT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgT3duZXIgb2YgdGhlIGFzc2V0IGBpZGAuAJAtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldC6cLSBgb3duZXJgOiBUaGUgbmV3IE93bmVyIG9mIHRoaXMgYXNzZXQuAFRFbWl0cyBgT3duZXJDaGFuZ2VkYC4AOFdlaWdodDogYE8oMSlgIHNldF90ZWFtEAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAEYaXNzdWVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARRhZG1pbgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEcZnJlZXplcgABUEFjY291bnRJZExvb2t1cE9mPFQ+ABAwxENoYW5nZSB0aGUgSXNzdWVyLCBBZG1pbiBhbmQgRnJlZXplciBvZiBhbiBhc3NldC4ALQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBPd25lciBvZiB0aGUgYXNzZXQgYGlkYC4AxC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIGZyb3plbi6kLSBgaXNzdWVyYDogVGhlIG5ldyBJc3N1ZXIgb2YgdGhpcyBhc3NldC6cLSBgYWRtaW5gOiBUaGUgbmV3IEFkbWluIG9mIHRoaXMgYXNzZXQurC0gYGZyZWV6ZXJgOiBUaGUgbmV3IEZyZWV6ZXIgb2YgdGhpcyBhc3NldC4AUEVtaXRzIGBUZWFtQ2hhbmdlZGAuADhXZWlnaHQ6IGBPKDEpYDBzZXRfbWV0YWRhdGEQAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARBuYW1lGAEcVmVjPHU4PgABGHN5bWJvbBgBHFZlYzx1OD4AASBkZWNpbWFscwwBCHU4ABFAeFNldCB0aGUgbWV0YWRhdGEgZm9yIGFuIGFzc2V0LgAtAU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIE93bmVyIG9mIHRoZSBhc3NldCBgaWRgLgDYRnVuZHMgb2Ygc2VuZGVyIGFyZSByZXNlcnZlZCBhY2NvcmRpbmcgdG8gdGhlIGZvcm11bGE6UQFgTWV0YWRhdGFEZXBvc2l0QmFzZSArIE1ldGFkYXRhRGVwb3NpdFBlckJ5dGUgKiAobmFtZS5sZW4gKyBzeW1ib2wubGVuKWAgdGFraW5nIGludG+MYWNjb3VudCBhbnkgYWxyZWFkeSByZXNlcnZlZCBmdW5kcy4AuC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIHVwZGF0ZS5NAS0gYG5hbWVgOiBUaGUgdXNlciBmcmllbmRseSBuYW1lIG9mIHRoaXMgYXNzZXQuIExpbWl0ZWQgaW4gbGVuZ3RoIGJ5IGBTdHJpbmdMaW1pdGAuTQEtIGBzeW1ib2xgOiBUaGUgZXhjaGFuZ2Ugc3ltYm9sIGZvciB0aGlzIGFzc2V0LiBMaW1pdGVkIGluIGxlbmd0aCBieSBgU3RyaW5nTGltaXRgLi0BLSBgZGVjaW1hbHNgOiBUaGUgbnVtYmVyIG9mIGRlY2ltYWxzIHRoaXMgYXNzZXQgdXNlcyB0byByZXByZXNlbnQgb25lIHVuaXQuAFBFbWl0cyBgTWV0YWRhdGFTZXRgLgA4V2VpZ2h0OiBgTygxKWA4Y2xlYXJfbWV0YWRhdGEEAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAEiyAQ2xlYXIgdGhlIG1ldGFkYXRhIGZvciBhbiBhc3NldC4ALQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBPd25lciBvZiB0aGUgYXNzZXQgYGlkYC4ApEFueSBkZXBvc2l0IGlzIGZyZWVkIGZvciB0aGUgYXNzZXQgb3duZXIuALQtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBjbGVhci4AYEVtaXRzIGBNZXRhZGF0YUNsZWFyZWRgLgA4V2VpZ2h0OiBgTygxKWBIZm9yY2Vfc2V0X21ldGFkYXRhFAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAEQbmFtZRgBHFZlYzx1OD4AARhzeW1ib2wYARxWZWM8dTg+AAEgZGVjaW1hbHMMAQh1OAABJGlzX2Zyb3plbl0BARBib29sABM4uEZvcmNlIHRoZSBtZXRhZGF0YSBmb3IgYW4gYXNzZXQgdG8gc29tZSB2YWx1ZS4AbE9yaWdpbiBtdXN0IGJlIEZvcmNlT3JpZ2luLgBoQW55IGRlcG9zaXQgaXMgbGVmdCBhbG9uZS4AuC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIHVwZGF0ZS5NAS0gYG5hbWVgOiBUaGUgdXNlciBmcmllbmRseSBuYW1lIG9mIHRoaXMgYXNzZXQuIExpbWl0ZWQgaW4gbGVuZ3RoIGJ5IGBTdHJpbmdMaW1pdGAuTQEtIGBzeW1ib2xgOiBUaGUgZXhjaGFuZ2Ugc3ltYm9sIGZvciB0aGlzIGFzc2V0LiBMaW1pdGVkIGluIGxlbmd0aCBieSBgU3RyaW5nTGltaXRgLi0BLSBgZGVjaW1hbHNgOiBUaGUgbnVtYmVyIG9mIGRlY2ltYWxzIHRoaXMgYXNzZXQgdXNlcyB0byByZXByZXNlbnQgb25lIHVuaXQuAFBFbWl0cyBgTWV0YWRhdGFTZXRgLgBRAVdlaWdodDogYE8oTiArIFMpYCB3aGVyZSBOIGFuZCBTIGFyZSB0aGUgbGVuZ3RoIG9mIHRoZSBuYW1lIGFuZCBzeW1ib2wgcmVzcGVjdGl2ZWx5LlBmb3JjZV9jbGVhcl9tZXRhZGF0YQQBCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgAULIBDbGVhciB0aGUgbWV0YWRhdGEgZm9yIGFuIGFzc2V0LgBsT3JpZ2luIG11c3QgYmUgRm9yY2VPcmlnaW4uAGBBbnkgZGVwb3NpdCBpcyByZXR1cm5lZC4AtC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGNsZWFyLgBgRW1pdHMgYE1ldGFkYXRhQ2xlYXJlZGAuADhXZWlnaHQ6IGBPKDEpYEhmb3JjZV9hc3NldF9zdGF0dXMgAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARRvd25lcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYaXNzdWVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARRhZG1pbgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEcZnJlZXplcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEsbWluX2JhbGFuY2VVAQEoVDo6QmFsYW5jZQABNGlzX3N1ZmZpY2llbnRdAQEQYm9vbAABJGlzX2Zyb3plbl0BARBib29sABVYmEFsdGVyIHRoZSBhdHRyaWJ1dGVzIG9mIGEgZ2l2ZW4gYXNzZXQuAHRPcmlnaW4gbXVzdCBiZSBgRm9yY2VPcmlnaW5gLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQunC0gYG93bmVyYDogVGhlIG5ldyBPd25lciBvZiB0aGlzIGFzc2V0LqQtIGBpc3N1ZXJgOiBUaGUgbmV3IElzc3VlciBvZiB0aGlzIGFzc2V0LpwtIGBhZG1pbmA6IFRoZSBuZXcgQWRtaW4gb2YgdGhpcyBhc3NldC6sLSBgZnJlZXplcmA6IFRoZSBuZXcgRnJlZXplciBvZiB0aGlzIGFzc2V0Lk0BLSBgbWluX2JhbGFuY2VgOiBUaGUgbWluaW11bSBiYWxhbmNlIG9mIHRoaXMgbmV3IGFzc2V0IHRoYXQgYW55IHNpbmdsZSBhY2NvdW50IG11c3Q9AWhhdmUuIElmIGFuIGFjY291bnQncyBiYWxhbmNlIGlzIHJlZHVjZWQgYmVsb3cgdGhpcywgdGhlbiBpdCBjb2xsYXBzZXMgdG8gemVyby5RAS0gYGlzX3N1ZmZpY2llbnRgOiBXaGV0aGVyIGEgbm9uLXplcm8gYmFsYW5jZSBvZiB0aGlzIGFzc2V0IGlzIGRlcG9zaXQgb2Ygc3VmZmljaWVudE0BdmFsdWUgdG8gYWNjb3VudCBmb3IgdGhlIHN0YXRlIGJsb2F0IGFzc29jaWF0ZWQgd2l0aCBpdHMgYmFsYW5jZSBzdG9yYWdlLiBJZiBzZXQgdG9VAWB0cnVlYCwgdGhlbiBub24temVybyBiYWxhbmNlcyBtYXkgYmUgc3RvcmVkIHdpdGhvdXQgYSBgY29uc3VtZXJgIHJlZmVyZW5jZSAoYW5kIHRodXNNAWFuIEVEIGluIHRoZSBCYWxhbmNlcyBwYWxsZXQgb3Igd2hhdGV2ZXIgZWxzZSBpcyB1c2VkIHRvIGNvbnRyb2wgdXNlci1hY2NvdW50IHN0YXRlIGdyb3d0aCkuPQEtIGBpc19mcm96ZW5gOiBXaGV0aGVyIHRoaXMgYXNzZXQgY2xhc3MgaXMgZnJvemVuIGV4Y2VwdCBmb3IgcGVybWlzc2lvbmVkL2FkbWluNGluc3RydWN0aW9ucy4A6EVtaXRzIGBBc3NldFN0YXR1c0NoYW5nZWRgIHdpdGggdGhlIGlkZW50aXR5IG9mIHRoZSBhc3NldC4AOFdlaWdodDogYE8oMSlgQGFwcHJvdmVfdHJhbnNmZXIMAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAASBkZWxlZ2F0ZQABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYYW1vdW50VQEBKFQ6OkJhbGFuY2UAFlAtAUFwcHJvdmUgYW4gYW1vdW50IG9mIGFzc2V0IGZvciB0cmFuc2ZlciBieSBhIGRlbGVnYXRlZCB0aGlyZC1wYXJ0eSBhY2NvdW50LgBYT3JpZ2luIG11c3QgYmUgU2lnbmVkLgBNAUVuc3VyZXMgdGhhdCBgQXBwcm92YWxEZXBvc2l0YCB3b3J0aCBvZiBgQ3VycmVuY3lgIGlzIHJlc2VydmVkIGZyb20gc2lnbmluZyBhY2NvdW50VQFmb3IgdGhlIHB1cnBvc2Ugb2YgaG9sZGluZyB0aGUgYXBwcm92YWwuIElmIHNvbWUgbm9uLXplcm8gYW1vdW50IG9mIGFzc2V0cyBpcyBhbHJlYWR5SQFhcHByb3ZlZCBmcm9tIHNpZ25pbmcgYWNjb3VudCB0byBgZGVsZWdhdGVgLCB0aGVuIGl0IGlzIHRvcHBlZCB1cCBvciB1bnJlc2VydmVkIHRvVG1lZXQgdGhlIHJpZ2h0IHZhbHVlLgBFAU5PVEU6IFRoZSBzaWduaW5nIGFjY291bnQgZG9lcyBub3QgbmVlZCB0byBvd24gYGFtb3VudGAgb2YgYXNzZXRzIGF0IHRoZSBwb2ludCBvZkRtYWtpbmcgdGhpcyBjYWxsLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQuDQEtIGBkZWxlZ2F0ZWA6IFRoZSBhY2NvdW50IHRvIGRlbGVnYXRlIHBlcm1pc3Npb24gdG8gdHJhbnNmZXIgYXNzZXQuSQEtIGBhbW91bnRgOiBUaGUgYW1vdW50IG9mIGFzc2V0IHRoYXQgbWF5IGJlIHRyYW5zZmVycmVkIGJ5IGBkZWxlZ2F0ZWAuIElmIHRoZXJlIGlz4GFscmVhZHkgYW4gYXBwcm92YWwgaW4gcGxhY2UsIHRoZW4gdGhpcyBhY3RzIGFkZGl0aXZlbHkuAJBFbWl0cyBgQXBwcm92ZWRUcmFuc2ZlcmAgb24gc3VjY2Vzcy4AOFdlaWdodDogYE8oMSlgPGNhbmNlbF9hcHByb3ZhbAgBCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABIGRlbGVnYXRlAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AFzRJAUNhbmNlbCBhbGwgb2Ygc29tZSBhc3NldCBhcHByb3ZlZCBmb3IgZGVsZWdhdGVkIHRyYW5zZmVyIGJ5IGEgdGhpcmQtcGFydHkgYWNjb3VudC4APQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZXJlIG11c3QgYmUgYW4gYXBwcm92YWwgaW4gcGxhY2UgYmV0d2VlbiBzaWduZXIgYW5kLGBkZWxlZ2F0ZWAuAEkBVW5yZXNlcnZlcyBhbnkgZGVwb3NpdCBwcmV2aW91c2x5IHJlc2VydmVkIGJ5IGBhcHByb3ZlX3RyYW5zZmVyYCBmb3IgdGhlIGFwcHJvdmFsLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQuBQEtIGBkZWxlZ2F0ZWA6IFRoZSBhY2NvdW50IGRlbGVnYXRlZCBwZXJtaXNzaW9uIHRvIHRyYW5zZmVyIGFzc2V0LgCURW1pdHMgYEFwcHJvdmFsQ2FuY2VsbGVkYCBvbiBzdWNjZXNzLgA4V2VpZ2h0OiBgTygxKWBUZm9yY2VfY2FuY2VsX2FwcHJvdmFsDAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAEUb3duZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABIGRlbGVnYXRlAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AGDRJAUNhbmNlbCBhbGwgb2Ygc29tZSBhc3NldCBhcHByb3ZlZCBmb3IgZGVsZWdhdGVkIHRyYW5zZmVyIGJ5IGEgdGhpcmQtcGFydHkgYWNjb3VudC4ASQFPcmlnaW4gbXVzdCBiZSBlaXRoZXIgRm9yY2VPcmlnaW4gb3IgU2lnbmVkIG9yaWdpbiB3aXRoIHRoZSBzaWduZXIgYmVpbmcgdGhlIEFkbWluaGFjY291bnQgb2YgdGhlIGFzc2V0IGBpZGAuAEkBVW5yZXNlcnZlcyBhbnkgZGVwb3NpdCBwcmV2aW91c2x5IHJlc2VydmVkIGJ5IGBhcHByb3ZlX3RyYW5zZmVyYCBmb3IgdGhlIGFwcHJvdmFsLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQuBQEtIGBkZWxlZ2F0ZWA6IFRoZSBhY2NvdW50IGRlbGVnYXRlZCBwZXJtaXNzaW9uIHRvIHRyYW5zZmVyIGFzc2V0LgCURW1pdHMgYEFwcHJvdmFsQ2FuY2VsbGVkYCBvbiBzdWNjZXNzLgA4V2VpZ2h0OiBgTygxKWBEdHJhbnNmZXJfYXBwcm92ZWQQAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARRvd25lcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEsZGVzdGluYXRpb24AAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGFtb3VudFUBAShUOjpCYWxhbmNlABlITQFUcmFuc2ZlciBzb21lIGFzc2V0IGJhbGFuY2UgZnJvbSBhIHByZXZpb3VzbHkgZGVsZWdhdGVkIGFjY291bnQgdG8gc29tZSB0aGlyZC1wYXJ0eSBhY2NvdW50LgBJAU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlcmUgbXVzdCBiZSBhbiBhcHByb3ZhbCBpbiBwbGFjZSBieSB0aGUgYG93bmVyYCB0byB0aGUcc2lnbmVyLgBZAUlmIHRoZSBlbnRpcmUgYW1vdW50IGFwcHJvdmVkIGZvciB0cmFuc2ZlciBpcyB0cmFuc2ZlcnJlZCwgdGhlbiBhbnkgZGVwb3NpdCBwcmV2aW91c2x5tHJlc2VydmVkIGJ5IGBhcHByb3ZlX3RyYW5zZmVyYCBpcyB1bnJlc2VydmVkLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQuYQEtIGBvd25lcmA6IFRoZSBhY2NvdW50IHdoaWNoIHByZXZpb3VzbHkgYXBwcm92ZWQgZm9yIGEgdHJhbnNmZXIgb2YgYXQgbGVhc3QgYGFtb3VudGAgYW5kvGZyb20gd2hpY2ggdGhlIGFzc2V0IGJhbGFuY2Ugd2lsbCBiZSB3aXRoZHJhd24uYQEtIGBkZXN0aW5hdGlvbmA6IFRoZSBhY2NvdW50IHRvIHdoaWNoIHRoZSBhc3NldCBiYWxhbmNlIG9mIGBhbW91bnRgIHdpbGwgYmUgdHJhbnNmZXJyZWQutC0gYGFtb3VudGA6IFRoZSBhbW91bnQgb2YgYXNzZXRzIHRvIHRyYW5zZmVyLgCcRW1pdHMgYFRyYW5zZmVycmVkQXBwcm92ZWRgIG9uIHN1Y2Nlc3MuADhXZWlnaHQ6IGBPKDEpYBR0b3VjaAQBCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgAaJMBDcmVhdGUgYW4gYXNzZXQgYWNjb3VudCBmb3Igbm9uLXByb3ZpZGVyIGFzc2V0cy4AwEEgZGVwb3NpdCB3aWxsIGJlIHRha2VuIGZyb20gdGhlIHNpZ25lciBhY2NvdW50LgBdAS0gYG9yaWdpbmA6IE11c3QgYmUgU2lnbmVkOyB0aGUgc2lnbmVyIGFjY291bnQgbXVzdCBoYXZlIHN1ZmZpY2llbnQgZnVuZHMgZm9yIGEgZGVwb3NpdDggIHRvIGJlIHRha2VuLgkBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgZm9yIHRoZSBhY2NvdW50IHRvIGJlIGNyZWF0ZWQuAJhFbWl0cyBgVG91Y2hlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLhhyZWZ1bmQIAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAAShhbGxvd19idXJuXQEBEGJvb2wAGzRZAVJldHVybiB0aGUgZGVwb3NpdCAoaWYgYW55KSBvZiBhbiBhc3NldCBhY2NvdW50IG9yIGEgY29uc3VtZXIgcmVmZXJlbmNlIChpZiBhbnkpIG9mIGFuIGFjY291bnQuAGhUaGUgb3JpZ2luIG11c3QgYmUgU2lnbmVkLgA9AS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IGZvciB3aGljaCB0aGUgY2FsbGVyIHdvdWxkIGxpa2UgdGhlIGRlcG9zaXQsICByZWZ1bmRlZC5dAS0gYGFsbG93X2J1cm5gOiBJZiBgdHJ1ZWAgdGhlbiBhc3NldHMgbWF5IGJlIGRlc3Ryb3llZCBpbiBvcmRlciB0byBjb21wbGV0ZSB0aGUgcmVmdW5kLgBJAUl0IHdpbGwgZmFpbCB3aXRoIGVpdGhlciBbYEVycm9yOjpDb250YWluc0hvbGRzYF0gb3IgW2BFcnJvcjo6Q29udGFpbnNGcmVlemVzYF0gaWbUdGhlIGFzc2V0IGFjY291bnQgY29udGFpbnMgaG9sZHMgb3IgZnJlZXplcyBpbiBwbGFjZS4AnEVtaXRzIGBSZWZ1bmRlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLjxzZXRfbWluX2JhbGFuY2UIAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAASxtaW5fYmFsYW5jZVkBAShUOjpCYWxhbmNlABwwlFNldHMgdGhlIG1pbmltdW0gYmFsYW5jZSBvZiBhbiBhc3NldC4AIQFPbmx5IHdvcmtzIGlmIHRoZXJlIGFyZW4ndCBhbnkgYWNjb3VudHMgdGhhdCBhcmUgaG9sZGluZyB0aGUgYXNzZXQgb3IgaWbgdGhlIG5ldyB2YWx1ZSBvZiBgbWluX2JhbGFuY2VgIGlzIGxlc3MgdGhhbiB0aGUgb2xkIG9uZS4A/E9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBoYXMgdG8gYmUgdGhlIE93bmVyIG9mIHRoZSxhc3NldCBgaWRgLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQuwC0gYG1pbl9iYWxhbmNlYDogVGhlIG5ldyB2YWx1ZSBvZiBgbWluX2JhbGFuY2VgLgDURW1pdHMgYEFzc2V0TWluQmFsYW5jZUNoYW5nZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4sdG91Y2hfb3RoZXIIAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAAQx3aG8AAVBBY2NvdW50SWRMb29rdXBPZjxUPgAdLIhDcmVhdGUgYW4gYXNzZXQgYWNjb3VudCBmb3IgYHdob2AuAMBBIGRlcG9zaXQgd2lsbCBiZSB0YWtlbiBmcm9tIHRoZSBzaWduZXIgYWNjb3VudC4AXQEtIGBvcmlnaW5gOiBNdXN0IGJlIFNpZ25lZDsgdGhlIHNpZ25lciBhY2NvdW50IG11c3QgaGF2ZSBzdWZmaWNpZW50IGZ1bmRzIGZvciBhIGRlcG9zaXQ4ICB0byBiZSB0YWtlbi5hAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IGZvciB0aGUgYWNjb3VudCB0byBiZSBjcmVhdGVkLCB0aGUgYXNzZXQgc3RhdHVzIG11c3QoICBiZSBsaXZlLowtIGB3aG9gOiBUaGUgYWNjb3VudCB0byBiZSBjcmVhdGVkLgCYRW1pdHMgYFRvdWNoZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4wcmVmdW5kX290aGVyCAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAEMd2hvAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AHjRdAVJldHVybiB0aGUgZGVwb3NpdCAoaWYgYW55KSBvZiBhIHRhcmdldCBhc3NldCBhY2NvdW50LiBVc2VmdWwgaWYgeW91IGFyZSB0aGUgZGVwb3NpdG9yLgBdAVRoZSBvcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIGVpdGhlciB0aGUgYWNjb3VudCBvd25lciwgZGVwb3NpdG9yLCBvciBhc3NldCBgQWRtaW5gLiBJbmEBb3JkZXIgdG8gYnVybiBhIG5vbi16ZXJvIGJhbGFuY2Ugb2YgdGhlIGFzc2V0LCB0aGUgY2FsbGVyIG11c3QgYmUgdGhlIGFjY291bnQgYW5kIHNob3VsZDR1c2UgYHJlZnVuZGAuABkBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgZm9yIHRoZSBhY2NvdW50IGhvbGRpbmcgYSBkZXBvc2l0LnwtIGB3aG9gOiBUaGUgYWNjb3VudCB0byByZWZ1bmQuAEkBSXQgd2lsbCBmYWlsIHdpdGggZWl0aGVyIFtgRXJyb3I6OkNvbnRhaW5zSG9sZHNgXSBvciBbYEVycm9yOjpDb250YWluc0ZyZWV6ZXNgXSBpZtR0aGUgYXNzZXQgYWNjb3VudCBjb250YWlucyBob2xkcyBvciBmcmVlemVzIGluIHBsYWNlLgCcRW1pdHMgYFJlZnVuZGVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuFGJsb2NrCAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAEMd2hvAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AHyhZAURpc2FsbG93IGZ1cnRoZXIgdW5wcml2aWxlZ2VkIHRyYW5zZmVycyBvZiBhbiBhc3NldCBgaWRgIHRvIGFuZCBmcm9tIGFuIGFjY291bnQgYHdob2AuADUBT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgRnJlZXplciBvZiB0aGUgYXNzZXQgYGlkYC4AuC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFjY291bnQncyBhc3NldC6ULSBgd2hvYDogVGhlIGFjY291bnQgdG8gYmUgdW5ibG9ja2VkLgBARW1pdHMgYEJsb2NrZWRgLgA4V2VpZ2h0OiBgTygxKWAwdHJhbnNmZXJfYWxsDAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAEQZGVzdAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEoa2VlcF9hbGl2ZV0BARBib29sACBAHQFUcmFuc2ZlciB0aGUgZW50aXJlIHRyYW5zZmVyYWJsZSBiYWxhbmNlIGZyb20gdGhlIGNhbGxlciBhc3NldCBhY2NvdW50LgBZAU5PVEU6IFRoaXMgZnVuY3Rpb24gb25seSBhdHRlbXB0cyB0byB0cmFuc2ZlciBfdHJhbnNmZXJhYmxlXyBiYWxhbmNlcy4gVGhpcyBtZWFucyB0aGF0PQFhbnkgaGVsZCwgZnJvemVuLCBvciBtaW5pbXVtIGJhbGFuY2UgKHdoZW4gYGtlZXBfYWxpdmVgIGlzIGB0cnVlYCksIHdpbGwgbm90IGJlXQF0cmFuc2ZlcnJlZCBieSB0aGlzIGZ1bmN0aW9uLiBUbyBlbnN1cmUgdGhhdCB0aGlzIGZ1bmN0aW9uIHJlc3VsdHMgaW4gYSBraWxsZWQgYWNjb3VudCxFAXlvdSBtaWdodCBuZWVkIHRvIHByZXBhcmUgdGhlIGFjY291bnQgYnkgcmVtb3ZpbmcgYW55IHJlZmVyZW5jZSBjb3VudGVycywgc3RvcmFnZUBkZXBvc2l0cywgZXRjLi4uAMBUaGUgZGlzcGF0Y2ggb3JpZ2luIG9mIHRoaXMgY2FsbCBtdXN0IGJlIFNpZ25lZC4AGQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCBmb3IgdGhlIGFjY291bnQgaG9sZGluZyBhIGRlcG9zaXQuoC0gYGRlc3RgOiBUaGUgcmVjaXBpZW50IG9mIHRoZSB0cmFuc2Zlci5ZAS0gYGtlZXBfYWxpdmVgOiBBIGJvb2xlYW4gdG8gZGV0ZXJtaW5lIGlmIHRoZSBgdHJhbnNmZXJfYWxsYCBvcGVyYXRpb24gc2hvdWxkIHNlbmQgYWxsTQEgIG9mIHRoZSBmdW5kcyB0aGUgYXNzZXQgYWNjb3VudCBoYXMsIGNhdXNpbmcgdGhlIHNlbmRlciBhc3NldCBhY2NvdW50IHRvIGJlIGtpbGxlZEUBICAoZmFsc2UpLCBvciB0cmFuc2ZlciBldmVyeXRoaW5nIGV4Y2VwdCBhdCBsZWFzdCB0aGUgbWluaW11bSBiYWxhbmNlLCB3aGljaCB3aWxs6CAgZ3VhcmFudGVlIHRvIGtlZXAgdGhlIHNlbmRlciBhc3NldCBhY2NvdW50IGFsaXZlICh0cnVlKS4wc2V0X3Jlc2VydmVzCAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAEgcmVzZXJ2ZXNJBAHIQm91bmRlZFZlYzxUOjpSZXNlcnZlRGF0YSwgQ29uc3RVMzI8TUFYX1JFU0VSVkVTPj4AISTEU2V0cyB0aGUgdHJ1c3RlZCByZXNlcnZlIGluZm9ybWF0aW9uIG9mIGFuIGFzc2V0LgBVAU9yaWdpbiBtdXN0IGJlIHRoZSBPd25lciBvZiB0aGUgYXNzZXQgYGlkYC4gVGhlIG9yaWdpbiBtdXN0IGNvbmZvcm0gdG8gdGhlIGNvbmZpZ3VyZWQlAWBDcmVhdGVPcmlnaW5gIG9yIGJlIHRoZSBzaWduZWQgYG93bmVyYCBjb25maWd1cmVkIGR1cmluZyBhc3NldCBjcmVhdGlvbi4AkC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0LvAtIGByZXNlcnZlc2A6IFRoZSBmdWxsIGxpc3Qgb2YgdHJ1c3RlZCByZXNlcnZlcyBpbmZvcm1hdGlvbi4A1EVtaXRzIGBBc3NldE1pbkJhbGFuY2VDaGFuZ2VkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLt0EDFxwYWxsZXRfYXNzZXRfY29udmVyc2lvbhhwYWxsZXQQQ2FsbAQEVAABGCxjcmVhdGVfcG9vbAgBGGFzc2V0MR0CAURCb3g8VDo6QXNzZXRLaW5kPgABGGFzc2V0Mh0CAURCb3g8VDo6QXNzZXRLaW5kPgAAEBkBQ3JlYXRlcyBhbiBlbXB0eSBsaXF1aWRpdHkgcG9vbCBhbmQgYW4gYXNzb2NpYXRlZCBuZXcgYGxwX3Rva2VuYCBhc3NldAEBKHRoZSBpZCBvZiB3aGljaCBpcyByZXR1cm5lZCBpbiB0aGUgYEV2ZW50OjpQb29sQ3JlYXRlZGAgZXZlbnQpLgARAU9uY2UgYSBwb29sIGlzIGNyZWF0ZWQsIHNvbWVvbmUgbWF5IFtgUGFsbGV0OjphZGRfbGlxdWlkaXR5YF0gdG8gaXQuNGFkZF9saXF1aWRpdHkcARhhc3NldDEdAgFEQm94PFQ6OkFzc2V0S2luZD4AARhhc3NldDIdAgFEQm94PFQ6OkFzc2V0S2luZD4AATxhbW91bnQxX2Rlc2lyZWRZAQEoVDo6QmFsYW5jZQABPGFtb3VudDJfZGVzaXJlZFkBAShUOjpCYWxhbmNlAAEsYW1vdW50MV9taW5ZAQEoVDo6QmFsYW5jZQABLGFtb3VudDJfbWluWQEBKFQ6OkJhbGFuY2UAARxtaW50X3RvBAEwVDo6QWNjb3VudElkAAE45FByb3ZpZGUgbGlxdWlkaXR5IGludG8gdGhlIHBvb2wgb2YgYGFzc2V0MWAgYW5kIGBhc3NldDJgLg0BTk9URTogYW4gb3B0aW1hbCBhbW91bnQgb2YgYXNzZXQxIGFuZCBhc3NldDIgd2lsbCBiZSBjYWxjdWxhdGVkIGFuZCEBbWlnaHQgYmUgZGlmZmVyZW50IHRoYW4gdGhlIHByb3ZpZGVkIGBhbW91bnQxX2Rlc2lyZWRgL2BhbW91bnQyX2Rlc2lyZWRg/HRodXMgeW91IHNob3VsZCBwcm92aWRlIHRoZSBtaW4gYW1vdW50IHlvdSdyZSBoYXBweSB0byBwcm92aWRlLshQYXJhbXMgYGFtb3VudDFfbWluYC9gYW1vdW50Ml9taW5gIHJlcHJlc2VudCB0aGF0LkkBYG1pbnRfdG9gIHdpbGwgYmUgc2VudCB0aGUgbGlxdWlkaXR5IHRva2VucyB0aGF0IHJlcHJlc2VudCB0aGlzIHNoYXJlIG9mIHRoZSBwb29sLgBdAU5PVEU6IHdoZW4gZW5jb3VudGVyaW5nIGFuIGluY29ycmVjdCBleGNoYW5nZSByYXRlIGFuZCBub24td2l0aGRyYXdhYmxlIHBvb2wgbGlxdWlkaXR5LNxiYXRjaCBhbiBhdG9taWMgY2FsbCB3aXRoIFtgUGFsbGV0OjphZGRfbGlxdWlkaXR5YF0gYW5kUQFbYFBhbGxldDo6c3dhcF9leGFjdF90b2tlbnNfZm9yX3Rva2Vuc2BdIG9yIFtgUGFsbGV0Ojpzd2FwX3Rva2Vuc19mb3JfZXhhY3RfdG9rZW5zYF0lAWNhbGxzIHRvIHJlbmRlciB0aGUgbGlxdWlkaXR5IHdpdGhkcmF3YWJsZSBhbmQgcmVjdGlmeSB0aGUgZXhjaGFuZ2UgcmF0ZS4A2E9uY2UgbGlxdWlkaXR5IGlzIGFkZGVkLCBzb21lb25lIG1heSBzdWNjZXNzZnVsbHkgY2FsbKRbYFBhbGxldDo6c3dhcF9leGFjdF90b2tlbnNfZm9yX3Rva2Vuc2BdLkByZW1vdmVfbGlxdWlkaXR5GAEYYXNzZXQxHQIBREJveDxUOjpBc3NldEtpbmQ+AAEYYXNzZXQyHQIBREJveDxUOjpBc3NldEtpbmQ+AAE0bHBfdG9rZW5fYnVyblkBAShUOjpCYWxhbmNlAAFMYW1vdW50MV9taW5fcmVjZWl2ZVkBAShUOjpCYWxhbmNlAAFMYW1vdW50Ml9taW5fcmVjZWl2ZVkBAShUOjpCYWxhbmNlAAEsd2l0aGRyYXdfdG8EATBUOjpBY2NvdW50SWQAAgxNAUFsbG93cyB5b3UgdG8gcmVtb3ZlIGxpcXVpZGl0eSBieSBwcm92aWRpbmcgdGhlIGBscF90b2tlbl9idXJuYCB0b2tlbnMgdGhhdCB3aWxsIGJlUQFidXJuZWQgaW4gdGhlIHByb2Nlc3MuIFdpdGggdGhlIHVzYWdlIG9mIGBhbW91bnQxX21pbl9yZWNlaXZlYC9gYW1vdW50Ml9taW5fcmVjZWl2ZWA1AWl0J3MgcG9zc2libGUgdG8gY29udHJvbCB0aGUgbWluIGFtb3VudCBvZiByZXR1cm5lZCB0b2tlbnMgeW91J3JlIGhhcHB5IHdpdGgucHN3YXBfZXhhY3RfdG9rZW5zX2Zvcl90b2tlbnMUARBwYXRo4QQBWFZlYzxCb3g8VDo6QXNzZXRLaW5kPj4AASRhbW91bnRfaW5ZAQEoVDo6QmFsYW5jZQABOGFtb3VudF9vdXRfbWluWQEBKFQ6OkJhbGFuY2UAARxzZW5kX3RvBAEwVDo6QWNjb3VudElkAAEoa2VlcF9hbGl2ZV0BARBib29sAAMYwFN3YXAgdGhlIGV4YWN0IGFtb3VudCBvZiBgYXNzZXQxYCBpbnRvIGBhc3NldDJgLi0BYGFtb3VudF9vdXRfbWluYCBwYXJhbSBhbGxvd3MgeW91IHRvIHNwZWNpZnkgdGhlIG1pbiBhbW91bnQgb2YgdGhlIGBhc3NldDJgYHlvdSdyZSBoYXBweSB0byByZWNlaXZlLgBZAVtgQXNzZXRDb252ZXJzaW9uQXBpOjpxdW90ZV9wcmljZV9leGFjdF90b2tlbnNfZm9yX3Rva2Vuc2BdIHJ1bnRpbWUgY2FsbCBjYW4gYmUgY2FsbGVkMGZvciBhIHF1b3RlLnBzd2FwX3Rva2Vuc19mb3JfZXhhY3RfdG9rZW5zFAEQcGF0aOEEAVhWZWM8Qm94PFQ6OkFzc2V0S2luZD4+AAEoYW1vdW50X291dFkBAShUOjpCYWxhbmNlAAE0YW1vdW50X2luX21heFkBAShUOjpCYWxhbmNlAAEcc2VuZF90bwQBMFQ6OkFjY291bnRJZAABKGtlZXBfYWxpdmVdAQEQYm9vbAAEGAEBU3dhcCBhbnkgYW1vdW50IG9mIGBhc3NldDFgIHRvIGdldCB0aGUgZXhhY3QgYW1vdW50IG9mIGBhc3NldDJgLhkBYGFtb3VudF9pbl9tYXhgIHBhcmFtIGFsbG93cyB0byBzcGVjaWZ5IHRoZSBtYXggYW1vdW50IG9mIHRoZSBgYXNzZXQxYGB5b3UncmUgaGFwcHkgdG8gcHJvdmlkZS4AWQFbYEFzc2V0Q29udmVyc2lvbkFwaTo6cXVvdGVfcHJpY2VfdG9rZW5zX2Zvcl9leGFjdF90b2tlbnNgXSBydW50aW1lIGNhbGwgY2FuIGJlIGNhbGxlZDBmb3IgYSBxdW90ZS4UdG91Y2gIARhhc3NldDEdAgFEQm94PFQ6OkFzc2V0S2luZD4AARhhc3NldDIdAgFEQm94PFQ6OkFzc2V0S2luZD4ABSxNAVRvdWNoIGFuIGV4aXN0aW5nIHBvb2wgdG8gZnVsZmlsbCBwcmVyZXF1aXNpdGVzIGJlZm9yZSBwcm92aWRpbmcgbGlxdWlkaXR5LCBzdWNoIGFzSQFlbnN1cmluZyB0aGF0IHRoZSBwb29sJ3MgYWNjb3VudHMgYXJlIGluIHBsYWNlLiBJdCBpcyB0eXBpY2FsbHkgdXNlZnVsIHdoZW4gYSBwb29sVQFjcmVhdG9yIHJlbW92ZXMgdGhlIHBvb2wncyBhY2NvdW50cyBhbmQgZG9lcyBub3QgcHJvdmlkZSBhIGxpcXVpZGl0eS4gVGhpcyBhY3Rpb24gbWF5VQFpbnZvbHZlIGhvbGRpbmcgYXNzZXRzIGZyb20gdGhlIGNhbGxlciBhcyBhIGRlcG9zaXQgZm9yIGNyZWF0aW5nIHRoZSBwb29sJ3MgYWNjb3VudHMuAGhUaGUgb3JpZ2luIG11c3QgYmUgU2lnbmVkLgApAS0gYGFzc2V0MWA6IFRoZSBhc3NldCBJRCBvZiBhbiBleGlzdGluZyBwb29sIHdpdGggYSBwYWlyIChhc3NldDEsIGFzc2V0MikuKQEtIGBhc3NldDJgOiBUaGUgYXNzZXQgSUQgb2YgYW4gZXhpc3RpbmcgcG9vbCB3aXRoIGEgcGFpciAoYXNzZXQxLCBhc3NldDIpLgCYRW1pdHMgYFRvdWNoZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4EcFBhbGxldCdzIGNhbGxhYmxlIGZ1bmN0aW9ucy7hBAAAAh0CAOUEDDxwYWxsZXRfdHJlYXN1cnkYcGFsbGV0EENhbGwIBFQABEkAARgsc3BlbmRfbG9jYWwIARhhbW91bnRVAQE8QmFsYW5jZU9mPFQsIEk+AAEsYmVuZWZpY2lhcnkAAVBBY2NvdW50SWRMb29rdXBPZjxUPgADRLhQcm9wb3NlIGFuZCBhcHByb3ZlIGEgc3BlbmQgb2YgdHJlYXN1cnkgZnVuZHMuAEgjIyBEaXNwYXRjaCBPcmlnaW4ARQFNdXN0IGJlIFtgQ29uZmlnOjpTcGVuZE9yaWdpbmBdIHdpdGggdGhlIGBTdWNjZXNzYCB2YWx1ZSBiZWluZyBhdCBsZWFzdCBgYW1vdW50YC4ALCMjIyBEZXRhaWxzRQFOT1RFOiBGb3IgcmVjb3JkLWtlZXBpbmcgcHVycG9zZXMsIHRoZSBwcm9wb3NlciBpcyBkZWVtZWQgdG8gYmUgZXF1aXZhbGVudCB0byB0aGUwYmVuZWZpY2lhcnkuADgjIyMgUGFyYW1ldGVyc0EBLSBgYW1vdW50YDogVGhlIGFtb3VudCB0byBiZSB0cmFuc2ZlcnJlZCBmcm9tIHRoZSB0cmVhc3VyeSB0byB0aGUgYGJlbmVmaWNpYXJ5YC7oLSBgYmVuZWZpY2lhcnlgOiBUaGUgZGVzdGluYXRpb24gYWNjb3VudCBmb3IgdGhlIHRyYW5zZmVyLgAkIyMgRXZlbnRzALRFbWl0cyBbYEV2ZW50OjpTcGVuZEFwcHJvdmVkYF0gaWYgc3VjY2Vzc2Z1bC48cmVtb3ZlX2FwcHJvdmFsBAEscHJvcG9zYWxfaWRkATRQcm9wb3NhbEluZGV4AARULQFGb3JjZSBhIHByZXZpb3VzbHkgYXBwcm92ZWQgcHJvcG9zYWwgdG8gYmUgcmVtb3ZlZCBmcm9tIHRoZSBhcHByb3ZhbCBxdWV1ZS4ASCMjIERpc3BhdGNoIE9yaWdpbgCETXVzdCBiZSBbYENvbmZpZzo6UmVqZWN0T3JpZ2luYF0uACgjIyBEZXRhaWxzAMBUaGUgb3JpZ2luYWwgZGVwb3NpdCB3aWxsIG5vIGxvbmdlciBiZSByZXR1cm5lZC4AOCMjIyBQYXJhbWV0ZXJzoC0gYHByb3Bvc2FsX2lkYDogVGhlIGluZGV4IG9mIGEgcHJvcG9zYWwAOCMjIyBDb21wbGV4aXR5rC0gTyhBKSB3aGVyZSBgQWAgaXMgdGhlIG51bWJlciBvZiBhcHByb3ZhbHMAKCMjIyBFcnJvcnNFAS0gW2BFcnJvcjo6UHJvcG9zYWxOb3RBcHByb3ZlZGBdOiBUaGUgYHByb3Bvc2FsX2lkYCBzdXBwbGllZCB3YXMgbm90IGZvdW5kIGluIHRoZVEBICBhcHByb3ZhbCBxdWV1ZSwgaS5lLiwgdGhlIHByb3Bvc2FsIGhhcyBub3QgYmVlbiBhcHByb3ZlZC4gVGhpcyBjb3VsZCBhbHNvIG1lYW4gdGhlWQEgIHByb3Bvc2FsIGRvZXMgbm90IGV4aXN0IGFsdG9nZXRoZXIsIHRodXMgdGhlcmUgaXMgbm8gd2F5IGl0IHdvdWxkIGhhdmUgYmVlbiBhcHByb3ZlZFQgIGluIHRoZSBmaXJzdCBwbGFjZS4Uc3BlbmQQAShhc3NldF9raW5k6QQBREJveDxUOjpBc3NldEtpbmQ+AAEYYW1vdW50VQEBUEFzc2V0QmFsYW5jZU9mPFQsIEk+AAEsYmVuZWZpY2lhcnntBAF4Qm94PEJlbmVmaWNpYXJ5TG9va3VwT2Y8VCwgST4+AAEodmFsaWRfZnJvbeQBcE9wdGlvbjxCbG9ja051bWJlckZvcjxULCBJPj4ABWi4UHJvcG9zZSBhbmQgYXBwcm92ZSBhIHNwZW5kIG9mIHRyZWFzdXJ5IGZ1bmRzLgBIIyMgRGlzcGF0Y2ggT3JpZ2luAB0BTXVzdCBiZSBbYENvbmZpZzo6U3BlbmRPcmlnaW5gXSB3aXRoIHRoZSBgU3VjY2Vzc2AgdmFsdWUgYmVpbmcgYXQgbGVhc3RVAWBhbW91bnRgIG9mIGBhc3NldF9raW5kYCBpbiB0aGUgbmF0aXZlIGFzc2V0LiBUaGUgYW1vdW50IG9mIGBhc3NldF9raW5kYCBpcyBjb252ZXJ0ZWTUZm9yIGFzc2VydGlvbiB1c2luZyB0aGUgW2BDb25maWc6OkJhbGFuY2VDb252ZXJ0ZXJgXS4AKCMjIERldGFpbHMASQFDcmVhdGUgYW4gYXBwcm92ZWQgc3BlbmQgZm9yIHRyYW5zZmVycmluZyBhIHNwZWNpZmljIGBhbW91bnRgIG9mIGBhc3NldF9raW5kYCB0byBhYQFkZXNpZ25hdGVkIGJlbmVmaWNpYXJ5LiBUaGUgc3BlbmQgbXVzdCBiZSBjbGFpbWVkIHVzaW5nIHRoZSBgcGF5b3V0YCBkaXNwYXRjaGFibGUgd2l0aGludHRoZSBbYENvbmZpZzo6UGF5b3V0UGVyaW9kYF0uADgjIyMgUGFyYW1ldGVycxUBLSBgYXNzZXRfa2luZGA6IEFuIGluZGljYXRvciBvZiB0aGUgc3BlY2lmaWMgYXNzZXQgY2xhc3MgdG8gYmUgc3BlbnQuQQEtIGBhbW91bnRgOiBUaGUgYW1vdW50IHRvIGJlIHRyYW5zZmVycmVkIGZyb20gdGhlIHRyZWFzdXJ5IHRvIHRoZSBgYmVuZWZpY2lhcnlgLrgtIGBiZW5lZmljaWFyeWA6IFRoZSBiZW5lZmljaWFyeSBvZiB0aGUgc3BlbmQuVQEtIGB2YWxpZF9mcm9tYDogVGhlIGJsb2NrIG51bWJlciBmcm9tIHdoaWNoIHRoZSBzcGVuZCBjYW4gYmUgY2xhaW1lZC4gSXQgY2FuIHJlZmVyIHRvGQEgIHRoZSBwYXN0IGlmIHRoZSByZXN1bHRpbmcgc3BlbmQgaGFzIG5vdCB5ZXQgZXhwaXJlZCBhY2NvcmRpbmcgdG8gdGhlRQEgIFtgQ29uZmlnOjpQYXlvdXRQZXJpb2RgXS4gSWYgYE5vbmVgLCB0aGUgc3BlbmQgY2FuIGJlIGNsYWltZWQgaW1tZWRpYXRlbHkgYWZ0ZXIsICBhcHByb3ZhbC4AJCMjIEV2ZW50cwDIRW1pdHMgW2BFdmVudDo6QXNzZXRTcGVuZEFwcHJvdmVkYF0gaWYgc3VjY2Vzc2Z1bC4YcGF5b3V0BAEUaW5kZXg4AShTcGVuZEluZGV4AAZMOENsYWltIGEgc3BlbmQuAEgjIyBEaXNwYXRjaCBPcmlnaW4AOE11c3QgYmUgc2lnbmVkACgjIyBEZXRhaWxzAFUBU3BlbmRzIG11c3QgYmUgY2xhaW1lZCB3aXRoaW4gc29tZSB0ZW1wb3JhbCBib3VuZHMuIEEgc3BlbmQgbWF5IGJlIGNsYWltZWQgd2l0aGluIG9uZdRbYENvbmZpZzo6UGF5b3V0UGVyaW9kYF0gZnJvbSB0aGUgYHZhbGlkX2Zyb21gIGJsb2NrLlUBSW4gY2FzZSBvZiBhIHBheW91dCBmYWlsdXJlLCB0aGUgc3BlbmQgc3RhdHVzIG11c3QgYmUgdXBkYXRlZCB3aXRoIHRoZSBgY2hlY2tfc3RhdHVzYNxkaXNwYXRjaGFibGUgYmVmb3JlIHJldHJ5aW5nIHdpdGggdGhlIGN1cnJlbnQgZnVuY3Rpb24uADgjIyMgUGFyYW1ldGVyc2wtIGBpbmRleGA6IFRoZSBzcGVuZCBpbmRleC4AJCMjIEV2ZW50cwCQRW1pdHMgW2BFdmVudDo6UGFpZGBdIGlmIHN1Y2Nlc3NmdWwuMGNoZWNrX3N0YXR1cwQBFGluZGV4OAEoU3BlbmRJbmRleAAHTCkBQ2hlY2sgdGhlIHN0YXR1cyBvZiB0aGUgc3BlbmQgYW5kIHJlbW92ZSBpdCBmcm9tIHRoZSBzdG9yYWdlIGlmIHByb2Nlc3NlZC4ASCMjIERpc3BhdGNoIE9yaWdpbgA8TXVzdCBiZSBzaWduZWQuACgjIyBEZXRhaWxzAAEBVGhlIHN0YXR1cyBjaGVjayBpcyBhIHByZXJlcXVpc2l0ZSBmb3IgcmV0cnlpbmcgYSBmYWlsZWQgcGF5b3V0LkkBSWYgYSBzcGVuZCBoYXMgZWl0aGVyIHN1Y2NlZWRlZCBvciBleHBpcmVkLCBpdCBpcyByZW1vdmVkIGZyb20gdGhlIHN0b3JhZ2UgYnkgdGhpc+xmdW5jdGlvbi4gSW4gc3VjaCBpbnN0YW5jZXMsIHRyYW5zYWN0aW9uIGZlZXMgYXJlIHJlZnVuZGVkLgA4IyMjIFBhcmFtZXRlcnNsLSBgaW5kZXhgOiBUaGUgc3BlbmQgaW5kZXguACQjIyBFdmVudHMA+EVtaXRzIFtgRXZlbnQ6OlBheW1lbnRGYWlsZWRgXSBpZiB0aGUgc3BlbmQgcGF5b3V0IGhhcyBmYWlsZWQuAQFFbWl0cyBbYEV2ZW50OjpTcGVuZFByb2Nlc3NlZGBdIGlmIHRoZSBzcGVuZCBwYXlvdXQgaGFzIHN1Y2NlZWQuKHZvaWRfc3BlbmQEARRpbmRleDgBKFNwZW5kSW5kZXgACEB8Vm9pZCBwcmV2aW91c2x5IGFwcHJvdmVkIHNwZW5kLgBIIyMgRGlzcGF0Y2ggT3JpZ2luAIRNdXN0IGJlIFtgQ29uZmlnOjpSZWplY3RPcmlnaW5gXS4AKCMjIERldGFpbHMAHQFBIHNwZW5kIHZvaWQgaXMgb25seSBwb3NzaWJsZSBpZiB0aGUgcGF5b3V0IGhhcyBub3QgYmVlbiBhdHRlbXB0ZWQgeWV0LgA4IyMjIFBhcmFtZXRlcnNsLSBgaW5kZXhgOiBUaGUgc3BlbmQgaW5kZXguACQjIyBFdmVudHMAwEVtaXRzIFtgRXZlbnQ6OkFzc2V0U3BlbmRWb2lkZWRgXSBpZiBzdWNjZXNzZnVsLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy7pBAxccG9sa2Fkb3RfcnVudGltZV9jb21tb24UaW1wbHNcVmVyc2lvbmVkTG9jYXRhYmxlQXNzZXQAAQwIVjMIASBsb2NhdGlvbs0BAUR4Y206OnYzOjpMb2NhdGlvbgABIGFzc2V0X2lkbQIBQHhjbTo6djM6OkFzc2V0SWQAAwAIVjQIASBsb2NhdGlvbukBAUR4Y206OnY0OjpMb2NhdGlvbgABIGFzc2V0X2lk4QIBQHhjbTo6djQ6OkFzc2V0SWQABAAIVjUIASBsb2NhdGlvbh0CAUR4Y206OnY1OjpMb2NhdGlvbgABIGFzc2V0X2lkLQMBQHhjbTo6djU6OkFzc2V0SWQABQAA7QQMRHBhcmFjaGFpbnNfY29tbW9uDHBheWRWZXJzaW9uZWRMb2NhdGFibGVBY2NvdW50AAEICFY0CAEgbG9jYXRpb27pAQFEeGNtOjp2NDo6TG9jYXRpb24AAShhY2NvdW50X2lk6QEBRHhjbTo6djQ6OkxvY2F0aW9uAAQACFY1CAEgbG9jYXRpb24dAgFEeGNtOjp2NTo6TG9jYXRpb24AAShhY2NvdW50X2lkHQIBRHhjbTo6djU6OkxvY2F0aW9uAAUAAPEEDGBwYWxsZXRfY29udmljdGlvbl92b3RpbmcYcGFsbGV0EENhbGwIBFQABEkAARgQdm90ZQgBKHBvbGxfaW5kZXhkAURQb2xsSW5kZXhPZjxULCBJPgABEHZvdGX1BAFwQWNjb3VudFZvdGU8QmFsYW5jZU9mPFQsIEk+PgAAJBkBVm90ZSBpbiBhIHBvbGwuIElmIGB2b3RlLmlzX2F5ZSgpYCwgdGhlIHZvdGUgaXMgdG8gZW5hY3QgdGhlIHByb3Bvc2FsO7hvdGhlcndpc2UgaXQgaXMgYSB2b3RlIHRvIGtlZXAgdGhlIHN0YXR1cyBxdW8uAMhUaGUgZGlzcGF0Y2ggb3JpZ2luIG9mIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLgDILSBgcG9sbF9pbmRleGA6IFRoZSBpbmRleCBvZiB0aGUgcG9sbCB0byB2b3RlIGZvci6ELSBgdm90ZWA6IFRoZSB2b3RlIGNvbmZpZ3VyYXRpb24uABUBV2VpZ2h0OiBgTyhSKWAgd2hlcmUgUiBpcyB0aGUgbnVtYmVyIG9mIHBvbGxzIHRoZSB2b3RlciBoYXMgdm90ZWQgb24uIGRlbGVnYXRlEAEUY2xhc3PtAwE0Q2xhc3NPZjxULCBJPgABCHRvAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AAShjb252aWN0aW9u/QQBKENvbnZpY3Rpb24AARxiYWxhbmNlWQEBPEJhbGFuY2VPZjxULCBJPgABXE0BRGVsZWdhdGUgdGhlIHZvdGluZyBwb3dlciAod2l0aCBzb21lIGdpdmVuIGNvbnZpY3Rpb24pIG9mIHRoZSBzZW5kaW5nIGFjY291bnQgZm9yIGFocGFydGljdWxhciBjbGFzcyBvZiBwb2xscy4AVQFUaGUgYmFsYW5jZSBkZWxlZ2F0ZWQgaXMgbG9ja2VkIGZvciBhcyBsb25nIGFzIGl0J3MgZGVsZWdhdGVkLCBhbmQgdGhlcmVhZnRlciBmb3IgdGhlyHRpbWUgYXBwcm9wcmlhdGUgZm9yIHRoZSBjb252aWN0aW9uJ3MgbG9jayBwZXJpb2QuAF0BVGhlIGRpc3BhdGNoIG9yaWdpbiBvZiB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXywgYW5kIHRoZSBzaWduaW5nIGFjY291bnQgbXVzdCBlaXRoZXI6dCAgLSBiZSBkZWxlZ2F0aW5nIGFscmVhZHk7IG9yRQEgIC0gaGF2ZSBubyB2b3RpbmcgYWN0aXZpdHkgKGlmIHRoZXJlIGlzLCB0aGVuIGl0IHdpbGwgbmVlZCB0byBiZSByZW1vdmVkIHRocm91Z2hMICAgIGByZW1vdmVfdm90ZWApLgBFAS0gYHRvYDogVGhlIGFjY291bnQgd2hvc2Ugdm90aW5nIHRoZSBgdGFyZ2V0YCBhY2NvdW50J3Mgdm90aW5nIHBvd2VyIHdpbGwgZm9sbG93Ll0BLSBgY2xhc3NgOiBUaGUgY2xhc3Mgb2YgcG9sbHMgdG8gZGVsZWdhdGUuIFRvIGRlbGVnYXRlIG11bHRpcGxlIGNsYXNzZXMsIG11bHRpcGxlIGNhbGxzgCAgdG8gdGhpcyBmdW5jdGlvbiBhcmUgcmVxdWlyZWQuVQEtIGBjb252aWN0aW9uYDogVGhlIGNvbnZpY3Rpb24gdGhhdCB3aWxsIGJlIGF0dGFjaGVkIHRvIHRoZSBkZWxlZ2F0ZWQgdm90ZXMuIFdoZW4gdGhlQQEgIGFjY291bnQgaXMgdW5kZWxlZ2F0ZWQsIHRoZSBmdW5kcyB3aWxsIGJlIGxvY2tlZCBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgcGVyaW9kLmEBLSBgYmFsYW5jZWA6IFRoZSBhbW91bnQgb2YgdGhlIGFjY291bnQncyBiYWxhbmNlIHRvIGJlIHVzZWQgaW4gZGVsZWdhdGluZy4gVGhpcyBtdXN0IG5vdLQgIGJlIG1vcmUgdGhhbiB0aGUgYWNjb3VudCdzIGN1cnJlbnQgYmFsYW5jZS4ASEVtaXRzIGBEZWxlZ2F0ZWRgLgAlAVdlaWdodDogYE8oUilgIHdoZXJlIFIgaXMgdGhlIG51bWJlciBvZiBwb2xscyB0aGUgdm90ZXIgZGVsZWdhdGluZyB0byBoYXNNASAgdm90ZWQgb24uIFdlaWdodCBpcyBpbml0aWFsbHkgY2hhcmdlZCBhcyBpZiBtYXhpbXVtIHZvdGVzLCBidXQgaXMgcmVmdW5kZWQgbGF0ZXIuKHVuZGVsZWdhdGUEARRjbGFzc+0DATRDbGFzc09mPFQsIEk+AAI4TQFVbmRlbGVnYXRlIHRoZSB2b3RpbmcgcG93ZXIgb2YgdGhlIHNlbmRpbmcgYWNjb3VudCBmb3IgYSBwYXJ0aWN1bGFyIGNsYXNzIG9mIHBvbGxzLgBdAVRva2VucyBtYXkgYmUgdW5sb2NrZWQgZm9sbG93aW5nIG9uY2UgYW4gYW1vdW50IG9mIHRpbWUgY29uc2lzdGVudCB3aXRoIHRoZSBsb2NrIHBlcmlvZAkBb2YgdGhlIGNvbnZpY3Rpb24gd2l0aCB3aGljaCB0aGUgZGVsZWdhdGlvbiB3YXMgaXNzdWVkIGhhcyBwYXNzZWQuAEUBVGhlIGRpc3BhdGNoIG9yaWdpbiBvZiB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXyBhbmQgdGhlIHNpZ25pbmcgYWNjb3VudCBtdXN0IGJlVGN1cnJlbnRseSBkZWxlZ2F0aW5nLgDwLSBgY2xhc3NgOiBUaGUgY2xhc3Mgb2YgcG9sbHMgdG8gcmVtb3ZlIHRoZSBkZWxlZ2F0aW9uIGZyb20uAFBFbWl0cyBgVW5kZWxlZ2F0ZWRgLgAlAVdlaWdodDogYE8oUilgIHdoZXJlIFIgaXMgdGhlIG51bWJlciBvZiBwb2xscyB0aGUgdm90ZXIgZGVsZWdhdGluZyB0byBoYXNNASAgdm90ZWQgb24uIFdlaWdodCBpcyBpbml0aWFsbHkgY2hhcmdlZCBhcyBpZiBtYXhpbXVtIHZvdGVzLCBidXQgaXMgcmVmdW5kZWQgbGF0ZXIuGHVubG9jawgBFGNsYXNz7QMBNENsYXNzT2Y8VCwgST4AARh0YXJnZXQAAVBBY2NvdW50SWRMb29rdXBPZjxUPgADJF0BUmVtb3ZlIHRoZSBsb2NrIGNhdXNlZCBieSBwcmlvciB2b3RpbmcvZGVsZWdhdGluZyB3aGljaCBoYXMgZXhwaXJlZCB3aXRoaW4gYSBwYXJ0aWN1bGFyGGNsYXNzLgDIVGhlIGRpc3BhdGNoIG9yaWdpbiBvZiB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4AoC0gYGNsYXNzYDogVGhlIGNsYXNzIG9mIHBvbGxzIHRvIHVubG9jay64LSBgdGFyZ2V0YDogVGhlIGFjY291bnQgdG8gcmVtb3ZlIHRoZSBsb2NrIG9uLgC8V2VpZ2h0OiBgTyhSKWAgd2l0aCBSIG51bWJlciBvZiB2b3RlIG9mIHRhcmdldC4scmVtb3ZlX3ZvdGUIARRjbGFzcwEFAVRPcHRpb248Q2xhc3NPZjxULCBJPj4AARRpbmRleDgBRFBvbGxJbmRleE9mPFQsIEk+AAR0ZFJlbW92ZSBhIHZvdGUgZm9yIGEgcG9sbC4ADElmOnAtIHRoZSBwb2xsIHdhcyBjYW5jZWxsZWQsIG9yZC0gdGhlIHBvbGwgaXMgb25nb2luZywgb3J4LSB0aGUgcG9sbCBoYXMgZW5kZWQgc3VjaCB0aGF0/CAgLSB0aGUgdm90ZSBvZiB0aGUgYWNjb3VudCB3YXMgaW4gb3Bwb3NpdGlvbiB0byB0aGUgcmVzdWx0OyBvctQgIC0gdGhlcmUgd2FzIG5vIGNvbnZpY3Rpb24gdG8gdGhlIGFjY291bnQncyB2b3RlOyBvcoQgIC0gdGhlIGFjY291bnQgbWFkZSBhIHNwbGl0IHZvdGVdAS4uLnRoZW4gdGhlIHZvdGUgaXMgcmVtb3ZlZCBjbGVhbmx5IGFuZCBhIGZvbGxvd2luZyBjYWxsIHRvIGB1bmxvY2tgIG1heSByZXN1bHQgaW4gbW9yZVhmdW5kcyBiZWluZyBhdmFpbGFibGUuAJBJZiwgaG93ZXZlciwgdGhlIHBvbGwgaGFzIGVuZGVkIGFuZDrsLSBpdCBmaW5pc2hlZCBjb3JyZXNwb25kaW5nIHRvIHRoZSB2b3RlIG9mIHRoZSBhY2NvdW50LCBhbmTcLSB0aGUgYWNjb3VudCBtYWRlIGEgc3RhbmRhcmQgdm90ZSB3aXRoIGNvbnZpY3Rpb24sIGFuZLwtIHRoZSBsb2NrIHBlcmlvZCBvZiB0aGUgY29udmljdGlvbiBpcyBub3Qgb3ZlclkBLi4udGhlbiB0aGUgbG9jayB3aWxsIGJlIGFnZ3JlZ2F0ZWQgaW50byB0aGUgb3ZlcmFsbCBhY2NvdW50J3MgbG9jaywgd2hpY2ggbWF5IGludm9sdmVZASpvdmVybG9ja2luZyogKHdoZXJlIHRoZSB0d28gbG9ja3MgYXJlIGNvbWJpbmVkIGludG8gYSBzaW5nbGUgbG9jayB0aGF0IGlzIHRoZSBtYXhpbXVt5G9mIGJvdGggdGhlIGFtb3VudCBsb2NrZWQgYW5kIHRoZSB0aW1lIGlzIGl0IGxvY2tlZCBmb3IpLgBJAVRoZSBkaXNwYXRjaCBvcmlnaW4gb2YgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8sIGFuZCB0aGUgc2lnbmVyIG11c3QgaGF2ZSBhIHZvdGVwcmVnaXN0ZXJlZCBmb3IgcG9sbCBgaW5kZXhgLgDcLSBgaW5kZXhgOiBUaGUgaW5kZXggb2YgcG9sbCBvZiB0aGUgdm90ZSB0byBiZSByZW1vdmVkLlUBLSBgY2xhc3NgOiBPcHRpb25hbCBwYXJhbWV0ZXIsIGlmIGdpdmVuIGl0IGluZGljYXRlcyB0aGUgY2xhc3Mgb2YgdGhlIHBvbGwuIEZvciBwb2xsc/AgIHdoaWNoIGhhdmUgZmluaXNoZWQgb3IgYXJlIGNhbmNlbGxlZCwgdGhpcyBtdXN0IGJlIGBTb21lYC4ARQFXZWlnaHQ6IGBPKFIgKyBsb2cgUilgIHdoZXJlIFIgaXMgdGhlIG51bWJlciBvZiBwb2xscyB0aGF0IGB0YXJnZXRgIGhhcyB2b3RlZCBvbi7YICBXZWlnaHQgaXMgY2FsY3VsYXRlZCBmb3IgdGhlIG1heGltdW0gbnVtYmVyIG9mIHZvdGUuRHJlbW92ZV9vdGhlcl92b3RlDAEYdGFyZ2V0AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARRjbGFzc+0DATRDbGFzc09mPFQsIEk+AAEUaW5kZXg4AURQb2xsSW5kZXhPZjxULCBJPgAFQGRSZW1vdmUgYSB2b3RlIGZvciBhIHBvbGwuAE0BSWYgdGhlIGB0YXJnZXRgIGlzIGVxdWFsIHRvIHRoZSBzaWduZXIsIHRoZW4gdGhpcyBmdW5jdGlvbiBpcyBleGFjdGx5IGVxdWl2YWxlbnQgdG8tAWByZW1vdmVfdm90ZWAuIElmIG5vdCBlcXVhbCB0byB0aGUgc2lnbmVyLCB0aGVuIHRoZSB2b3RlIG11c3QgaGF2ZSBleHBpcmVkLCUBZWl0aGVyIGJlY2F1c2UgdGhlIHBvbGwgd2FzIGNhbmNlbGxlZCwgYmVjYXVzZSB0aGUgdm90ZXIgbG9zdCB0aGUgcG9sbCBvcphiZWNhdXNlIHRoZSBjb252aWN0aW9uIHBlcmlvZCBpcyBvdmVyLgDIVGhlIGRpc3BhdGNoIG9yaWdpbiBvZiB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4AYQEtIGB0YXJnZXRgOiBUaGUgYWNjb3VudCBvZiB0aGUgdm90ZSB0byBiZSByZW1vdmVkOyB0aGlzIGFjY291bnQgbXVzdCBoYXZlIHZvdGVkIGZvciBwb2xsKCAgYGluZGV4YC7cLSBgaW5kZXhgOiBUaGUgaW5kZXggb2YgcG9sbCBvZiB0aGUgdm90ZSB0byBiZSByZW1vdmVkLoQtIGBjbGFzc2A6IFRoZSBjbGFzcyBvZiB0aGUgcG9sbC4ARQFXZWlnaHQ6IGBPKFIgKyBsb2cgUilgIHdoZXJlIFIgaXMgdGhlIG51bWJlciBvZiBwb2xscyB0aGF0IGB0YXJnZXRgIGhhcyB2b3RlZCBvbi7YICBXZWlnaHQgaXMgY2FsY3VsYXRlZCBmb3IgdGhlIG1heGltdW0gbnVtYmVyIG9mIHZvdGUuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLvUEDGBwYWxsZXRfY29udmljdGlvbl92b3RpbmcQdm90ZSxBY2NvdW50Vm90ZQQcQmFsYW5jZQFZAQEMIFN0YW5kYXJkCAEQdm90ZfkEARBWb3RlAAEcYmFsYW5jZVkBARxCYWxhbmNlAAAAFFNwbGl0CAEMYXllWQEBHEJhbGFuY2UAAQxuYXlZAQEcQmFsYW5jZQABADBTcGxpdEFic3RhaW4MAQxheWVZAQEcQmFsYW5jZQABDG5heVkBARxCYWxhbmNlAAEcYWJzdGFpblkBARxCYWxhbmNlAAIAAPkEDGBwYWxsZXRfY29udmljdGlvbl92b3RpbmcQdm90ZRBWb3RlAAAEAAwAAAD9BAxgcGFsbGV0X2NvbnZpY3Rpb25fdm90aW5nKGNvbnZpY3Rpb24oQ29udmljdGlvbgABHBBOb25lAAAAIExvY2tlZDF4AAEAIExvY2tlZDJ4AAIAIExvY2tlZDN4AAMAIExvY2tlZDR4AAQAIExvY2tlZDV4AAUAIExvY2tlZDZ4AAYAAAEFBBhPcHRpb24EBFQB7QMBCBBOb25lAAAAEFNvbWUEAO0DAAABAAAFBQxAcGFsbGV0X3JlZmVyZW5kYRhwYWxsZXQQQ2FsbAgEVAAESQABJBhzdWJtaXQMATxwcm9wb3NhbF9vcmlnaW7xAwFcQm94PFBhbGxldHNPcmlnaW5PZjxUPj4AASBwcm9wb3NhbAkFAUxCb3VuZGVkQ2FsbE9mPFQsIEk+AAFAZW5hY3RtZW50X21vbWVudBEFAYhEaXNwYXRjaFRpbWU8QmxvY2tOdW1iZXJGb3I8VCwgST4+AAAksFByb3Bvc2UgYSByZWZlcmVuZHVtIG9uIGEgcHJpdmlsZWdlZCBhY3Rpb24uAFkBLSBgb3JpZ2luYDogbXVzdCBiZSBgU3VibWl0T3JpZ2luYCBhbmQgdGhlIGFjY291bnQgbXVzdCBoYXZlIGBTdWJtaXNzaW9uRGVwb3NpdGAgZnVuZHMwICBhdmFpbGFibGUuLQEtIGBwcm9wb3NhbF9vcmlnaW5gOiBUaGUgb3JpZ2luIGZyb20gd2hpY2ggdGhlIHByb3Bvc2FsIHNob3VsZCBiZSBleGVjdXRlZC5sLSBgcHJvcG9zYWxgOiBUaGUgcHJvcG9zYWwuFQEtIGBlbmFjdG1lbnRfbW9tZW50YDogVGhlIG1vbWVudCB0aGF0IHRoZSBwcm9wb3NhbCBzaG91bGQgYmUgZW5hY3RlZC4ASEVtaXRzIGBTdWJtaXR0ZWRgLlhwbGFjZV9kZWNpc2lvbl9kZXBvc2l0BAEUaW5kZXg4ATxSZWZlcmVuZHVtSW5kZXgAASCsUG9zdCB0aGUgRGVjaXNpb24gRGVwb3NpdCBmb3IgYSByZWZlcmVuZHVtLgA5AS0gYG9yaWdpbmA6IG11c3QgYmUgYFNpZ25lZGAgYW5kIHRoZSBhY2NvdW50IG11c3QgaGF2ZSBmdW5kcyBhdmFpbGFibGUgZm9yIHRoZaAgIHJlZmVyZW5kdW0ncyB0cmFjaydzIERlY2lzaW9uIERlcG9zaXQuUQEtIGBpbmRleGA6IFRoZSBpbmRleCBvZiB0aGUgc3VibWl0dGVkIHJlZmVyZW5kdW0gd2hvc2UgRGVjaXNpb24gRGVwb3NpdCBpcyB5ZXQgdG8gYmUkICBwb3N0ZWQuAHhFbWl0cyBgRGVjaXNpb25EZXBvc2l0UGxhY2VkYC5ccmVmdW5kX2RlY2lzaW9uX2RlcG9zaXQEARRpbmRleDgBPFJlZmVyZW5kdW1JbmRleAACHCkBUmVmdW5kIHRoZSBEZWNpc2lvbiBEZXBvc2l0IGZvciBhIGNsb3NlZCByZWZlcmVuZHVtIGJhY2sgdG8gdGhlIGRlcG9zaXRvci4AnC0gYG9yaWdpbmA6IG11c3QgYmUgYFNpZ25lZGAgb3IgYFJvb3RgLk0BLSBgaW5kZXhgOiBUaGUgaW5kZXggb2YgYSBjbG9zZWQgcmVmZXJlbmR1bSB3aG9zZSBEZWNpc2lvbiBEZXBvc2l0IGhhcyBub3QgeWV0IGJlZW4sICByZWZ1bmRlZC4AgEVtaXRzIGBEZWNpc2lvbkRlcG9zaXRSZWZ1bmRlZGAuGGNhbmNlbAQBFGluZGV4OAE8UmVmZXJlbmR1bUluZGV4AAMYdENhbmNlbCBhbiBvbmdvaW5nIHJlZmVyZW5kdW0uAJwtIGBvcmlnaW5gOiBtdXN0IGJlIHRoZSBgQ2FuY2VsT3JpZ2luYC7cLSBgaW5kZXhgOiBUaGUgaW5kZXggb2YgdGhlIHJlZmVyZW5kdW0gdG8gYmUgY2FuY2VsbGVkLgBIRW1pdHMgYENhbmNlbGxlZGAuEGtpbGwEARRpbmRleDgBPFJlZmVyZW5kdW1JbmRleAAEGNBDYW5jZWwgYW4gb25nb2luZyByZWZlcmVuZHVtIGFuZCBzbGFzaCB0aGUgZGVwb3NpdHMuAJQtIGBvcmlnaW5gOiBtdXN0IGJlIHRoZSBgS2lsbE9yaWdpbmAu3C0gYGluZGV4YDogVGhlIGluZGV4IG9mIHRoZSByZWZlcmVuZHVtIHRvIGJlIGNhbmNlbGxlZC4AkEVtaXRzIGBLaWxsZWRgIGFuZCBgRGVwb3NpdFNsYXNoZWRgLkBudWRnZV9yZWZlcmVuZHVtBAEUaW5kZXg4ATxSZWZlcmVuZHVtSW5kZXgABRAdAUFkdmFuY2UgYSByZWZlcmVuZHVtIG9udG8gaXRzIG5leHQgbG9naWNhbCBzdGF0ZS4gT25seSB1c2VkIGludGVybmFsbHkuAGwtIGBvcmlnaW5gOiBtdXN0IGJlIGBSb290YC6kLSBgaW5kZXhgOiB0aGUgcmVmZXJlbmR1bSB0byBiZSBhZHZhbmNlZC5Ib25lX2Zld2VyX2RlY2lkaW5nBAEUdHJhY2vtAwE8VHJhY2tJZE9mPFQsIEk+AAYkCQFBZHZhbmNlIGEgdHJhY2sgb250byBpdHMgbmV4dCBsb2dpY2FsIHN0YXRlLiBPbmx5IHVzZWQgaW50ZXJuYWxseS4AbC0gYG9yaWdpbmA6IG11c3QgYmUgYFJvb3RgLpAtIGB0cmFja2A6IHRoZSB0cmFjayB0byBiZSBhZHZhbmNlZC4AUQFBY3Rpb24gaXRlbSBmb3Igd2hlbiB0aGVyZSBpcyBub3cgb25lIGZld2VyIHJlZmVyZW5kdW0gaW4gdGhlIGRlY2lkaW5nIHBoYXNlIGFuZCB0aGUVAWBEZWNpZGluZ0NvdW50YCBpcyBub3QgeWV0IHVwZGF0ZWQuIFRoaXMgbWVhbnMgdGhhdCB3ZSBzaG91bGQgZWl0aGVyOiUBLSBiZWdpbiBkZWNpZGluZyBhbm90aGVyIHJlZmVyZW5kdW0gKGFuZCBsZWF2ZSBgRGVjaWRpbmdDb3VudGAgYWxvbmUpOyBvcnAtIGRlY3JlbWVudCBgRGVjaWRpbmdDb3VudGAuZHJlZnVuZF9zdWJtaXNzaW9uX2RlcG9zaXQEARRpbmRleDgBPFJlZmVyZW5kdW1JbmRleAAHHDEBUmVmdW5kIHRoZSBTdWJtaXNzaW9uIERlcG9zaXQgZm9yIGEgY2xvc2VkIHJlZmVyZW5kdW0gYmFjayB0byB0aGUgZGVwb3NpdG9yLgCcLSBgb3JpZ2luYDogbXVzdCBiZSBgU2lnbmVkYCBvciBgUm9vdGAuVQEtIGBpbmRleGA6IFRoZSBpbmRleCBvZiBhIGNsb3NlZCByZWZlcmVuZHVtIHdob3NlIFN1Ym1pc3Npb24gRGVwb3NpdCBoYXMgbm90IHlldCBiZWVuLCAgcmVmdW5kZWQuAIhFbWl0cyBgU3VibWlzc2lvbkRlcG9zaXRSZWZ1bmRlZGAuMHNldF9tZXRhZGF0YQgBFGluZGV4OAE8UmVmZXJlbmR1bUluZGV4AAEobWF5YmVfaGFzaBUFATxPcHRpb248VDo6SGFzaD4ACByYU2V0IG9yIGNsZWFyIG1ldGFkYXRhIG9mIGEgcmVmZXJlbmR1bS4ALFBhcmFtZXRlcnM6RQEtIGBvcmlnaW5gOiBNdXN0IGJlIGBTaWduZWRgIGJ5IGEgY3JlYXRvciBvZiBhIHJlZmVyZW5kdW0gb3IgYnkgYW55b25lIHRvIGNsZWFyIGGQICBtZXRhZGF0YSBvZiBhIGZpbmlzaGVkIHJlZmVyZW5kdW0uDQEtIGBpbmRleGA6ICBUaGUgaW5kZXggb2YgYSByZWZlcmVuZHVtIHRvIHNldCBvciBjbGVhciBtZXRhZGF0YSBmb3IuUQEtIGBtYXliZV9oYXNoYDogVGhlIGhhc2ggb2YgYW4gb24tY2hhaW4gc3RvcmVkIHByZWltYWdlLiBgTm9uZWAgdG8gY2xlYXIgYSBtZXRhZGF0YS4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuCQUQNGZyYW1lX3N1cHBvcnQYdHJhaXRzJHByZWltYWdlcxxCb3VuZGVkCARUASAESAENBQEMGExlZ2FjeQQBEGhhc2hAASRIOjpPdXRwdXQAAAAYSW5saW5lBABhBAE0Qm91bmRlZElubGluZQABABhMb29rdXAIARBoYXNoQAEkSDo6T3V0cHV0AAEMbGVuOAEMdTMyAAIAAA0FDChzcF9ydW50aW1lGHRyYWl0cyxCbGFrZVR3bzI1NgAAAAARBRA0ZnJhbWVfc3VwcG9ydBh0cmFpdHMgc2NoZWR1bGUwRGlzcGF0Y2hUaW1lBCxCbG9ja051bWJlcgE4AQgIQXQEADgBLEJsb2NrTnVtYmVyAAAAFEFmdGVyBAA4ASxCbG9ja051bWJlcgABAAAVBQQYT3B0aW9uBARUAUABCBBOb25lAAAAEFNvbWUEAEAAAAEAABkFDEBwYWxsZXRfd2hpdGVsaXN0GHBhbGxldBBDYWxsBARUAAEQOHdoaXRlbGlzdF9jYWxsBAEkY2FsbF9oYXNoQAEcVDo6SGFzaAAAAFxyZW1vdmVfd2hpdGVsaXN0ZWRfY2FsbAQBJGNhbGxfaGFzaEABHFQ6Okhhc2gAAQBkZGlzcGF0Y2hfd2hpdGVsaXN0ZWRfY2FsbAwBJGNhbGxfaGFzaEABHFQ6Okhhc2gAAUBjYWxsX2VuY29kZWRfbGVuOAEMdTMyAAFMY2FsbF93ZWlnaHRfd2l0bmVzcxUBARhXZWlnaHQAAgCcZGlzcGF0Y2hfd2hpdGVsaXN0ZWRfY2FsbF93aXRoX3ByZWltYWdlBAEQY2FsbCABfEJveDw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4AAwAEDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuHQUMPHBhbGxldF9ib3VudGllcxhwYWxsZXQQQ2FsbAgEVAAESQABLDhwcm9wb3NlX2JvdW50eQgBFHZhbHVlVQEBPEJhbGFuY2VPZjxULCBJPgABLGRlc2NyaXB0aW9uGAEcVmVjPHU4PgAAMFRQcm9wb3NlIGEgbmV3IGJvdW50eS4AzFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLgBRAVBheW1lbnQ6IGBUaXBSZXBvcnREZXBvc2l0QmFzZWAgd2lsbCBiZSByZXNlcnZlZCBmcm9tIHRoZSBvcmlnaW4gYWNjb3VudCwgYXMgd2VsbCBhc1EBYERhdGFEZXBvc2l0UGVyQnl0ZWAgZm9yIGVhY2ggYnl0ZSBpbiBgcmVhc29uYC4gSXQgd2lsbCBiZSB1bnJlc2VydmVkIHVwb24gYXBwcm92YWwsZG9yIHNsYXNoZWQgd2hlbiByZWplY3RlZC4A+C0gYGN1cmF0b3JgOiBUaGUgY3VyYXRvciBhY2NvdW50IHdob20gd2lsbCBtYW5hZ2UgdGhpcyBib3VudHkuZC0gYGZlZWA6IFRoZSBjdXJhdG9yIGZlZS4lAS0gYHZhbHVlYDogVGhlIHRvdGFsIHBheW1lbnQgYW1vdW50IG9mIHRoaXMgYm91bnR5LCBjdXJhdG9yIGZlZSBpbmNsdWRlZC7ALSBgZGVzY3JpcHRpb25gOiBUaGUgZGVzY3JpcHRpb24gb2YgdGhpcyBib3VudHkuOGFwcHJvdmVfYm91bnR5BAEkYm91bnR5X2lkZAEsQm91bnR5SW5kZXgAARxdAUFwcHJvdmUgYSBib3VudHkgcHJvcG9zYWwuIEF0IGEgbGF0ZXIgdGltZSwgdGhlIGJvdW50eSB3aWxsIGJlIGZ1bmRlZCBhbmQgYmVjb21lIGFjdGl2ZahhbmQgdGhlIG9yaWdpbmFsIGRlcG9zaXQgd2lsbCBiZSByZXR1cm5lZC4ApE1heSBvbmx5IGJlIGNhbGxlZCBmcm9tIGBUOjpTcGVuZE9yaWdpbmAuADQjIyBDb21wbGV4aXR5HC0gTygxKS48cHJvcG9zZV9jdXJhdG9yDAEkYm91bnR5X2lkZAEsQm91bnR5SW5kZXgAARxjdXJhdG9yAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AAQxmZWVVAQE8QmFsYW5jZU9mPFQsIEk+AAIYlFByb3Bvc2UgYSBjdXJhdG9yIHRvIGEgZnVuZGVkIGJvdW50eS4ApE1heSBvbmx5IGJlIGNhbGxlZCBmcm9tIGBUOjpTcGVuZE9yaWdpbmAuADQjIyBDb21wbGV4aXR5HC0gTygxKS5AdW5hc3NpZ25fY3VyYXRvcgQBJGJvdW50eV9pZGQBLEJvdW50eUluZGV4AANEfFVuYXNzaWduIGN1cmF0b3IgZnJvbSBhIGJvdW50eS4AHQFUaGlzIGZ1bmN0aW9uIGNhbiBvbmx5IGJlIGNhbGxlZCBieSB0aGUgYFJlamVjdE9yaWdpbmAgYSBzaWduZWQgb3JpZ2luLgA9AUlmIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGJ5IHRoZSBgUmVqZWN0T3JpZ2luYCwgd2UgYXNzdW1lIHRoYXQgdGhlIGN1cmF0b3IgaXMxAW1hbGljaW91cyBvciBpbmFjdGl2ZS4gQXMgYSByZXN1bHQsIHdlIHdpbGwgc2xhc2ggdGhlIGN1cmF0b3Igd2hlbiBwb3NzaWJsZS4AYQFJZiB0aGUgb3JpZ2luIGlzIHRoZSBjdXJhdG9yLCB3ZSB0YWtlIHRoaXMgYXMgYSBzaWduIHRoZXkgYXJlIHVuYWJsZSB0byBkbyB0aGVpciBqb2IgYW5kXQF0aGV5IHdpbGxpbmdseSBnaXZlIHVwLiBXZSBjb3VsZCBzbGFzaCB0aGVtLCBidXQgZm9yIG5vdyB3ZSBhbGxvdyB0aGVtIHRvIHJlY292ZXIgdGhlaXI1AWRlcG9zaXQgYW5kIGV4aXQgd2l0aG91dCBpc3N1ZS4gKFdlIG1heSB3YW50IHRvIGNoYW5nZSB0aGlzIGlmIGl0IGlzIGFidXNlZC4pAF0BRmluYWxseSwgdGhlIG9yaWdpbiBjYW4gYmUgYW55b25lIGlmIGFuZCBvbmx5IGlmIHRoZSBjdXJhdG9yIGlzICJpbmFjdGl2ZSIuIFRoaXMgYWxsb3dzYQFhbnlvbmUgaW4gdGhlIGNvbW11bml0eSB0byBjYWxsIG91dCB0aGF0IGEgY3VyYXRvciBpcyBub3QgZG9pbmcgdGhlaXIgZHVlIGRpbGlnZW5jZSwgYW5kOQF3ZSBzaG91bGQgcGljayBhIG5ldyBjdXJhdG9yLiBJbiB0aGlzIGNhc2UgdGhlIGN1cmF0b3Igc2hvdWxkIGFsc28gYmUgc2xhc2hlZC4ANCMjIENvbXBsZXhpdHkcLSBPKDEpLjhhY2NlcHRfY3VyYXRvcgQBJGJvdW50eV9pZGQBLEJvdW50eUluZGV4AAQclEFjY2VwdCB0aGUgY3VyYXRvciByb2xlIGZvciBhIGJvdW50eS4pAUEgZGVwb3NpdCB3aWxsIGJlIHJlc2VydmVkIGZyb20gY3VyYXRvciBhbmQgcmVmdW5kIHVwb24gc3VjY2Vzc2Z1bCBwYXlvdXQuAJBNYXkgb25seSBiZSBjYWxsZWQgZnJvbSB0aGUgY3VyYXRvci4ANCMjIENvbXBsZXhpdHkcLSBPKDEpLjBhd2FyZF9ib3VudHkIASRib3VudHlfaWRkASxCb3VudHlJbmRleAABLGJlbmVmaWNpYXJ5AAFQQWNjb3VudElkTG9va3VwT2Y8VD4ABShZAUF3YXJkIGJvdW50eSB0byBhIGJlbmVmaWNpYXJ5IGFjY291bnQuIFRoZSBiZW5lZmljaWFyeSB3aWxsIGJlIGFibGUgdG8gY2xhaW0gdGhlIGZ1bmRzOGFmdGVyIGEgZGVsYXkuABUBVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgdGhlIGN1cmF0b3Igb2YgdGhpcyBib3VudHkuAIgtIGBib3VudHlfaWRgOiBCb3VudHkgSUQgdG8gYXdhcmQuGQEtIGBiZW5lZmljaWFyeWA6IFRoZSBiZW5lZmljaWFyeSBhY2NvdW50IHdob20gd2lsbCByZWNlaXZlIHRoZSBwYXlvdXQuADQjIyBDb21wbGV4aXR5HC0gTygxKS4wY2xhaW1fYm91bnR5BAEkYm91bnR5X2lkZAEsQm91bnR5SW5kZXgABiDsQ2xhaW0gdGhlIHBheW91dCBmcm9tIGFuIGF3YXJkZWQgYm91bnR5IGFmdGVyIHBheW91dCBkZWxheS4AJQFUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSB0aGUgYmVuZWZpY2lhcnkgb2YgdGhpcyBib3VudHkuAIgtIGBib3VudHlfaWRgOiBCb3VudHkgSUQgdG8gY2xhaW0uADQjIyBDb21wbGV4aXR5HC0gTygxKS4wY2xvc2VfYm91bnR5BAEkYm91bnR5X2lkZAEsQm91bnR5SW5kZXgAByQ5AUNhbmNlbCBhIHByb3Bvc2VkIG9yIGFjdGl2ZSBib3VudHkuIEFsbCB0aGUgZnVuZHMgd2lsbCBiZSBzZW50IHRvIHRyZWFzdXJ5IGFuZMx0aGUgY3VyYXRvciBkZXBvc2l0IHdpbGwgYmUgdW5yZXNlcnZlZCBpZiBwb3NzaWJsZS4AyE9ubHkgYFQ6OlJlamVjdE9yaWdpbmAgaXMgYWJsZSB0byBjYW5jZWwgYSBib3VudHkuAIwtIGBib3VudHlfaWRgOiBCb3VudHkgSUQgdG8gY2FuY2VsLgA0IyMgQ29tcGxleGl0eRwtIE8oMSkuUGV4dGVuZF9ib3VudHlfZXhwaXJ5CAEkYm91bnR5X2lkZAEsQm91bnR5SW5kZXgAARhyZW1hcmsYARxWZWM8dTg+AAgkrEV4dGVuZCB0aGUgZXhwaXJ5IHRpbWUgb2YgYW4gYWN0aXZlIGJvdW50eS4AFQFUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSB0aGUgY3VyYXRvciBvZiB0aGlzIGJvdW50eS4AjC0gYGJvdW50eV9pZGA6IEJvdW50eSBJRCB0byBleHRlbmQujC0gYHJlbWFya2A6IGFkZGl0aW9uYWwgaW5mb3JtYXRpb24uADQjIyBDb21wbGV4aXR5HC0gTygxKS5sYXBwcm92ZV9ib3VudHlfd2l0aF9jdXJhdG9yDAEkYm91bnR5X2lkZAEsQm91bnR5SW5kZXgAARxjdXJhdG9yAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AAQxmZWVVAQE8QmFsYW5jZU9mPFQsIEk+AAks1EFwcHJvdmUgYm91bnRyeSBhbmQgcHJvcG9zZSBhIGN1cmF0b3Igc2ltdWx0YW5lb3VzbHkuVQFUaGlzIGNhbGwgaXMgYSBzaG9ydGN1dCB0byBjYWxsaW5nIGBhcHByb3ZlX2JvdW50eWAgYW5kIGBwcm9wb3NlX2N1cmF0b3JgIHNlcGFyYXRlbHkuAKRNYXkgb25seSBiZSBjYWxsZWQgZnJvbSBgVDo6U3BlbmRPcmlnaW5gLgCQLSBgYm91bnR5X2lkYDogQm91bnR5IElEIHRvIGFwcHJvdmUu+C0gYGN1cmF0b3JgOiBUaGUgY3VyYXRvciBhY2NvdW50IHdob20gd2lsbCBtYW5hZ2UgdGhpcyBib3VudHkuZC0gYGZlZWA6IFRoZSBjdXJhdG9yIGZlZS4ANCMjIENvbXBsZXhpdHkcLSBPKDEpLjBwb2tlX2RlcG9zaXQEASRib3VudHlfaWRkASxCb3VudHlJbmRleAAKPORQb2tlIHRoZSBkZXBvc2l0IHJlc2VydmVkIGZvciBjcmVhdGluZyBhIGJvdW50eSBwcm9wb3NhbC4A9FRoaXMgY2FuIGJlIHVzZWQgYnkgYWNjb3VudHMgdG8gdXBkYXRlIHRoZWlyIHJlc2VydmVkIGFtb3VudC4AzFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLgAsUGFyYW1ldGVyczr0LSBgYm91bnR5X2lkYDogVGhlIGJvdW50eSBpZCBmb3Igd2hpY2ggdG8gYWRqdXN0IHRoZSBkZXBvc2l0LgA5AUlmIHRoZSBkZXBvc2l0IGlzIHVwZGF0ZWQsIHRoZSBkaWZmZXJlbmNlIHdpbGwgYmUgcmVzZXJ2ZWQvdW5yZXNlcnZlZCBmcm9tIHRoZUxwcm9wb3NlcidzIGFjY291bnQuACkBVGhlIHRyYW5zYWN0aW9uIGlzIG1hZGUgZnJlZSBpZiB0aGUgZGVwb3NpdCBpcyB1cGRhdGVkIGFuZCBwYWlkIG90aGVyd2lzZS4AvEVtaXRzIGBEZXBvc2l0UG9rZWRgIGlmIHRoZSBkZXBvc2l0IGlzIHVwZGF0ZWQuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLiEFDFRwYWxsZXRfY2hpbGRfYm91bnRpZXMYcGFsbGV0EENhbGwEBFQAARxAYWRkX2NoaWxkX2JvdW50eQwBQHBhcmVudF9ib3VudHlfaWRkASxCb3VudHlJbmRleAABFHZhbHVlVQEBMEJhbGFuY2VPZjxUPgABLGRlc2NyaXB0aW9uGAEcVmVjPHU4PgAATFxBZGQgYSBuZXcgY2hpbGQtYm91bnR5LgD8VGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgdGhlIGN1cmF0b3Igb2YgcGFyZW503GJvdW50eSBhbmQgdGhlIHBhcmVudCBib3VudHkgbXVzdCBiZSBpbiAiYWN0aXZlIiBzdGF0ZS4ABQFDaGlsZC1ib3VudHkgZ2V0cyBhZGRlZCBzdWNjZXNzZnVsbHkgJiBmdW5kIGdldHMgdHJhbnNmZXJyZWQgZnJvbQkBcGFyZW50IGJvdW50eSB0byBjaGlsZC1ib3VudHkgYWNjb3VudCwgaWYgcGFyZW50IGJvdW50eSBoYXMgZW5vdWdobGZ1bmRzLCBlbHNlIHRoZSBjYWxsIGZhaWxzLgANAVVwcGVyIGJvdW5kIHRvIG1heGltdW0gbnVtYmVyIG9mIGFjdGl2ZSAgY2hpbGQgYm91bnRpZXMgdGhhdCBjYW4gYmWoYWRkZWQgYXJlIG1hbmFnZWQgdmlhIHJ1bnRpbWUgdHJhaXQgY29uZmlnmFtgQ29uZmlnOjpNYXhBY3RpdmVDaGlsZEJvdW50eUNvdW50YF0uAAEBSWYgdGhlIGNhbGwgaXMgc3VjY2VzcywgdGhlIHN0YXR1cyBvZiBjaGlsZC1ib3VudHkgaXMgdXBkYXRlZCB0byAiQWRkZWQiLgBNAS0gYHBhcmVudF9ib3VudHlfaWRgOiBJbmRleCBvZiBwYXJlbnQgYm91bnR5IGZvciB3aGljaCBjaGlsZC1ib3VudHkgaXMgYmVpbmcgYWRkZWQusC0gYHZhbHVlYDogVmFsdWUgZm9yIGV4ZWN1dGluZyB0aGUgcHJvcG9zYWwu3C0gYGRlc2NyaXB0aW9uYDogVGV4dCBkZXNjcmlwdGlvbiBmb3IgdGhlIGNoaWxkLWJvdW50eS48cHJvcG9zZV9jdXJhdG9yEAFAcGFyZW50X2JvdW50eV9pZGQBLEJvdW50eUluZGV4AAE8Y2hpbGRfYm91bnR5X2lkZAEsQm91bnR5SW5kZXgAARxjdXJhdG9yAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AAQxmZWVVAQEwQmFsYW5jZU9mPFQ+AAE8oFByb3Bvc2UgY3VyYXRvciBmb3IgZnVuZGVkIGNoaWxkLWJvdW50eS4ADQFUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBjdXJhdG9yIG9mIHBhcmVudCBib3VudHkuABEBUGFyZW50IGJvdW50eSBtdXN0IGJlIGluIGFjdGl2ZSBzdGF0ZSwgZm9yIHRoaXMgY2hpbGQtYm91bnR5IGNhbGwgdG8Ud29yay4ADQFDaGlsZC1ib3VudHkgbXVzdCBiZSBpbiAiQWRkZWQiIHN0YXRlLCBmb3IgcHJvY2Vzc2luZyB0aGUgY2FsbC4gQW5kBQFzdGF0ZSBvZiBjaGlsZC1ib3VudHkgaXMgbW92ZWQgdG8gIkN1cmF0b3JQcm9wb3NlZCIgb24gc3VjY2Vzc2Z1bEBjYWxsIGNvbXBsZXRpb24uALQtIGBwYXJlbnRfYm91bnR5X2lkYDogSW5kZXggb2YgcGFyZW50IGJvdW50eS6sLSBgY2hpbGRfYm91bnR5X2lkYDogSW5kZXggb2YgY2hpbGQgYm91bnR5LrQtIGBjdXJhdG9yYDogQWRkcmVzcyBvZiBjaGlsZC1ib3VudHkgY3VyYXRvci7sLSBgZmVlYDogcGF5bWVudCBmZWUgdG8gY2hpbGQtYm91bnR5IGN1cmF0b3IgZm9yIGV4ZWN1dGlvbi44YWNjZXB0X2N1cmF0b3IIAUBwYXJlbnRfYm91bnR5X2lkZAEsQm91bnR5SW5kZXgAATxjaGlsZF9ib3VudHlfaWRkASxCb3VudHlJbmRleAACTLRBY2NlcHQgdGhlIGN1cmF0b3Igcm9sZSBmb3IgdGhlIGNoaWxkLWJvdW50eS4A9FRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIHRoZSBjdXJhdG9yIG9mIHRoaXM0Y2hpbGQtYm91bnR5LgDsQSBkZXBvc2l0IHdpbGwgYmUgcmVzZXJ2ZWQgZnJvbSB0aGUgY3VyYXRvciBhbmQgcmVmdW5kIHVwb26Ic3VjY2Vzc2Z1bCBwYXlvdXQgb3IgY2FuY2VsbGF0aW9uLgD4RmVlIGZvciBjdXJhdG9yIGlzIGRlZHVjdGVkIGZyb20gY3VyYXRvciBmZWUgb2YgcGFyZW50IGJvdW50eS4AEQFQYXJlbnQgYm91bnR5IG11c3QgYmUgaW4gYWN0aXZlIHN0YXRlLCBmb3IgdGhpcyBjaGlsZC1ib3VudHkgY2FsbCB0bxR3b3JrLgANAUNoaWxkLWJvdW50eSBtdXN0IGJlIGluICJDdXJhdG9yUHJvcG9zZWQiIHN0YXRlLCBmb3IgcHJvY2Vzc2luZyB0aGUJAWNhbGwuIEFuZCBzdGF0ZSBvZiBjaGlsZC1ib3VudHkgaXMgbW92ZWQgdG8gIkFjdGl2ZSIgb24gc3VjY2Vzc2Z1bEBjYWxsIGNvbXBsZXRpb24uALQtIGBwYXJlbnRfYm91bnR5X2lkYDogSW5kZXggb2YgcGFyZW50IGJvdW50eS6sLSBgY2hpbGRfYm91bnR5X2lkYDogSW5kZXggb2YgY2hpbGQgYm91bnR5LkB1bmFzc2lnbl9jdXJhdG9yCAFAcGFyZW50X2JvdW50eV9pZGQBLEJvdW50eUluZGV4AAE8Y2hpbGRfYm91bnR5X2lkZAEsQm91bnR5SW5kZXgAA4iUVW5hc3NpZ24gY3VyYXRvciBmcm9tIGEgY2hpbGQtYm91bnR5LgAJAVRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBjYW4gYmUgZWl0aGVyIGBSZWplY3RPcmlnaW5gLCBvctx0aGUgY3VyYXRvciBvZiB0aGUgcGFyZW50IGJvdW50eSwgb3IgYW55IHNpZ25lZCBvcmlnaW4uAPhGb3IgdGhlIG9yaWdpbiBvdGhlciB0aGFuIFQ6OlJlamVjdE9yaWdpbiBhbmQgdGhlIGNoaWxkLWJvdW50eQEBY3VyYXRvciwgcGFyZW50IGJvdW50eSBtdXN0IGJlIGluIGFjdGl2ZSBzdGF0ZSwgZm9yIHRoaXMgY2FsbCB0bwkBd29yay4gV2UgYWxsb3cgY2hpbGQtYm91bnR5IGN1cmF0b3IgYW5kIFQ6OlJlamVjdE9yaWdpbiB0byBleGVjdXRlyHRoaXMgY2FsbCBpcnJlc3BlY3RpdmUgb2YgdGhlIHBhcmVudCBib3VudHkgc3RhdGUuANxJZiB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBieSB0aGUgYFJlamVjdE9yaWdpbmAgb3IgdGhlBQFwYXJlbnQgYm91bnR5IGN1cmF0b3IsIHdlIGFzc3VtZSB0aGF0IHRoZSBjaGlsZC1ib3VudHkgY3VyYXRvciBpcw0BbWFsaWNpb3VzIG9yIGluYWN0aXZlLiBBcyBhIHJlc3VsdCwgY2hpbGQtYm91bnR5IGN1cmF0b3IgZGVwb3NpdCBpcyBzbGFzaGVkLgAFAUlmIHRoZSBvcmlnaW4gaXMgdGhlIGNoaWxkLWJvdW50eSBjdXJhdG9yLCB3ZSB0YWtlIHRoaXMgYXMgYSBzaWduCQF0aGF0IHRoZXkgYXJlIHVuYWJsZSB0byBkbyB0aGVpciBqb2IsIGFuZCBhcmUgd2lsbGluZ2x5IGdpdmluZyB1cC4JAVdlIGNvdWxkIHNsYXNoIHRoZSBkZXBvc2l0LCBidXQgZm9yIG5vdyB3ZSBhbGxvdyB0aGVtIHRvIHVucmVzZXJ2ZREBdGhlaXIgZGVwb3NpdCBhbmQgZXhpdCB3aXRob3V0IGlzc3VlLiAoV2UgbWF5IHdhbnQgdG8gY2hhbmdlIHRoaXMgaWY4aXQgaXMgYWJ1c2VkLikABQFGaW5hbGx5LCB0aGUgb3JpZ2luIGNhbiBiZSBhbnlvbmUgaWZmIHRoZSBjaGlsZC1ib3VudHkgY3VyYXRvciBpcwkBImluYWN0aXZlIi4gRXhwaXJ5IHVwZGF0ZSBkdWUgb2YgcGFyZW50IGJvdW50eSBpcyB1c2VkIHRvIGVzdGltYXRlnGluYWN0aXZlIHN0YXRlIG9mIGNoaWxkLWJvdW50eSBjdXJhdG9yLgANAVRoaXMgYWxsb3dzIGFueW9uZSBpbiB0aGUgY29tbXVuaXR5IHRvIGNhbGwgb3V0IHRoYXQgYSBjaGlsZC1ib3VudHkJAWN1cmF0b3IgaXMgbm90IGRvaW5nIHRoZWlyIGR1ZSBkaWxpZ2VuY2UsIGFuZCB3ZSBzaG91bGQgcGljayBhIG5ld/hvbmUuIEluIHRoaXMgY2FzZSB0aGUgY2hpbGQtYm91bnR5IGN1cmF0b3IgZGVwb3NpdCBpcyBzbGFzaGVkLgABAVN0YXRlIG9mIGNoaWxkLWJvdW50eSBpcyBtb3ZlZCB0byBBZGRlZCBzdGF0ZSBvbiBzdWNjZXNzZnVsIGNhbGwsY29tcGxldGlvbi4AtC0gYHBhcmVudF9ib3VudHlfaWRgOiBJbmRleCBvZiBwYXJlbnQgYm91bnR5LqwtIGBjaGlsZF9ib3VudHlfaWRgOiBJbmRleCBvZiBjaGlsZCBib3VudHkuSGF3YXJkX2NoaWxkX2JvdW50eQwBQHBhcmVudF9ib3VudHlfaWRkASxCb3VudHlJbmRleAABPGNoaWxkX2JvdW50eV9pZGQBLEJvdW50eUluZGV4AAEsYmVuZWZpY2lhcnkAAVBBY2NvdW50SWRMb29rdXBPZjxUPgAERJBBd2FyZCBjaGlsZC1ib3VudHkgdG8gYSBiZW5lZmljaWFyeS4A+FRoZSBiZW5lZmljaWFyeSB3aWxsIGJlIGFibGUgdG8gY2xhaW0gdGhlIGZ1bmRzIGFmdGVyIGEgZGVsYXkuAPxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSB0aGUgcGFyZW50IGN1cmF0b3Igb3J0Y3VyYXRvciBvZiB0aGlzIGNoaWxkLWJvdW50eS4AEQFQYXJlbnQgYm91bnR5IG11c3QgYmUgaW4gYWN0aXZlIHN0YXRlLCBmb3IgdGhpcyBjaGlsZC1ib3VudHkgY2FsbCB0bxR3b3JrLgAJAUNoaWxkLWJvdW50eSBtdXN0IGJlIGluIGFjdGl2ZSBzdGF0ZSwgZm9yIHByb2Nlc3NpbmcgdGhlIGNhbGwuIEFuZBEBc3RhdGUgb2YgY2hpbGQtYm91bnR5IGlzIG1vdmVkIHRvICJQZW5kaW5nUGF5b3V0IiBvbiBzdWNjZXNzZnVsIGNhbGwsY29tcGxldGlvbi4AtC0gYHBhcmVudF9ib3VudHlfaWRgOiBJbmRleCBvZiBwYXJlbnQgYm91bnR5LqwtIGBjaGlsZF9ib3VudHlfaWRgOiBJbmRleCBvZiBjaGlsZCBib3VudHkulC0gYGJlbmVmaWNpYXJ5YDogQmVuZWZpY2lhcnkgYWNjb3VudC5IY2xhaW1fY2hpbGRfYm91bnR5CAFAcGFyZW50X2JvdW50eV9pZGQBLEJvdW50eUluZGV4AAE8Y2hpbGRfYm91bnR5X2lkZAEsQm91bnR5SW5kZXgABUAFAUNsYWltIHRoZSBwYXlvdXQgZnJvbSBhbiBhd2FyZGVkIGNoaWxkLWJvdW50eSBhZnRlciBwYXlvdXQgZGVsYXkuAOxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbWF5IGJlIGFueSBzaWduZWQgb3JpZ2luLgAFAUNhbGwgd29ya3MgaW5kZXBlbmRlbnQgb2YgcGFyZW50IGJvdW50eSBzdGF0ZSwgTm8gbmVlZCBmb3IgcGFyZW50dGJvdW50eSB0byBiZSBpbiBhY3RpdmUgc3RhdGUuABEBVGhlIEJlbmVmaWNpYXJ5IGlzIHBhaWQgb3V0IHdpdGggYWdyZWVkIGJvdW50eSB2YWx1ZS4gQ3VyYXRvciBmZWUgaXOUcGFpZCAmIGN1cmF0b3IgZGVwb3NpdCBpcyB1bnJlc2VydmVkLgAFAUNoaWxkLWJvdW50eSBtdXN0IGJlIGluICJQZW5kaW5nUGF5b3V0IiBzdGF0ZSwgZm9yIHByb2Nlc3NpbmcgdGhl/GNhbGwuIEFuZCBpbnN0YW5jZSBvZiBjaGlsZC1ib3VudHkgaXMgcmVtb3ZlZCBmcm9tIHRoZSBzdGF0ZSBvbmxzdWNjZXNzZnVsIGNhbGwgY29tcGxldGlvbi4AtC0gYHBhcmVudF9ib3VudHlfaWRgOiBJbmRleCBvZiBwYXJlbnQgYm91bnR5LqwtIGBjaGlsZF9ib3VudHlfaWRgOiBJbmRleCBvZiBjaGlsZCBib3VudHkuSGNsb3NlX2NoaWxkX2JvdW50eQgBQHBhcmVudF9ib3VudHlfaWRkASxCb3VudHlJbmRleAABPGNoaWxkX2JvdW50eV9pZGQBLEJvdW50eUluZGV4AAZYEQFDYW5jZWwgYSBwcm9wb3NlZCBvciBhY3RpdmUgY2hpbGQtYm91bnR5LiBDaGlsZC1ib3VudHkgYWNjb3VudCBmdW5kcwkBYXJlIHRyYW5zZmVycmVkIHRvIHBhcmVudCBib3VudHkgYWNjb3VudC4gVGhlIGNoaWxkLWJvdW50eSBjdXJhdG9ymGRlcG9zaXQgbWF5IGJlIHVucmVzZXJ2ZWQgaWYgcG9zc2libGUuAAkBVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgZWl0aGVyIHBhcmVudCBjdXJhdG9yIG9ySGBUOjpSZWplY3RPcmlnaW5gLgDwSWYgdGhlIHN0YXRlIG9mIGNoaWxkLWJvdW50eSBpcyBgQWN0aXZlYCwgY3VyYXRvciBkZXBvc2l0IGlzLHVucmVzZXJ2ZWQuAPRJZiB0aGUgc3RhdGUgb2YgY2hpbGQtYm91bnR5IGlzIGBQZW5kaW5nUGF5b3V0YCwgY2FsbCBmYWlscyAmeHJldHVybnMgYFBlbmRpbmdQYXlvdXRgIGVycm9yLgANAUZvciB0aGUgb3JpZ2luIG90aGVyIHRoYW4gVDo6UmVqZWN0T3JpZ2luLCBwYXJlbnQgYm91bnR5IG11c3QgYmUgaW7wYWN0aXZlIHN0YXRlLCBmb3IgdGhpcyBjaGlsZC1ib3VudHkgY2FsbCB0byB3b3JrLiBGb3Igb3JpZ2lukFQ6OlJlamVjdE9yaWdpbiBleGVjdXRpb24gaXMgZm9yY2VkLgABAUluc3RhbmNlIG9mIGNoaWxkLWJvdW50eSBpcyByZW1vdmVkIGZyb20gdGhlIHN0YXRlIG9uIHN1Y2Nlc3NmdWxAY2FsbCBjb21wbGV0aW9uLgC0LSBgcGFyZW50X2JvdW50eV9pZGA6IEluZGV4IG9mIHBhcmVudCBib3VudHkurC0gYGNoaWxkX2JvdW50eV9pZGA6IEluZGV4IG9mIGNoaWxkIGJvdW50eS4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuJQUMRHBhbGxldF9hc3NldF9yYXRlGHBhbGxldBBDYWxsBARUAAEMGGNyZWF0ZQgBKGFzc2V0X2tpbmTpBAFEQm94PFQ6OkFzc2V0S2luZD4AARByYXRlKQUBJEZpeGVkVTEyOAAAEA0BSW5pdGlhbGl6ZSBhIGNvbnZlcnNpb24gcmF0ZSB0byBuYXRpdmUgYmFsYW5jZSBmb3IgdGhlIGdpdmVuIGFzc2V0LgA0IyMgQ29tcGxleGl0eRgtIE8oMSkYdXBkYXRlCAEoYXNzZXRfa2luZOkEAURCb3g8VDo6QXNzZXRLaW5kPgABEHJhdGUpBQEkRml4ZWRVMTI4AAEQBQFVcGRhdGUgdGhlIGNvbnZlcnNpb24gcmF0ZSB0byBuYXRpdmUgYmFsYW5jZSBmb3IgdGhlIGdpdmVuIGFzc2V0LgA0IyMgQ29tcGxleGl0eRgtIE8oMSkYcmVtb3ZlBAEoYXNzZXRfa2luZOkEAURCb3g8VDo6QXNzZXRLaW5kPgACECUBUmVtb3ZlIGFuIGV4aXN0aW5nIGNvbnZlcnNpb24gcmF0ZSB0byBuYXRpdmUgYmFsYW5jZSBmb3IgdGhlIGdpdmVuIGFzc2V0LgA0IyMgQ29tcGxleGl0eRgtIE8oMSkEDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuKQUMNHNwX2FyaXRobWV0aWMsZml4ZWRfcG9pbnQkRml4ZWRVMTI4AAAEAFkBARB1MTI4AAAtBQxscGFsbGV0X211bHRpX2Fzc2V0X2JvdW50aWVzGHBhbGxldBBDYWxsCARUAARJAAEkLGZ1bmRfYm91bnR5EAEoYXNzZXRfa2luZOkEAURCb3g8VDo6QXNzZXRLaW5kPgABFHZhbHVlVQEBKFQ6OkJhbGFuY2UAARxjdXJhdG9yAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AASBtZXRhZGF0YUABHFQ6Okhhc2gAAGgpAUZ1bmQgYSBuZXcgYm91bnR5IHdpdGggYSBwcm9wb3NlZCBjdXJhdG9yLCBpbml0aWF0aW5nIHRoZSBwYXltZW50IGZyb20gdGhluGZ1bmRpbmcgc291cmNlIHRvIHRoZSBib3VudHkgYWNjb3VudC9sb2NhdGlvbi4ASCMjIERpc3BhdGNoIE9yaWdpbgAdAU11c3QgYmUgW2BDb25maWc6OlNwZW5kT3JpZ2luYF0gd2l0aCB0aGUgYFN1Y2Nlc3NgIHZhbHVlIGJlaW5nIGF0IGxlYXN0QQF0aGUgYm91bnR5IHZhbHVlIGNvbnZlcnRlZCB0byBuYXRpdmUgYmFsYW5jZSB1c2luZyBbYENvbmZpZzo6QmFsYW5jZUNvbnZlcnRlcmBdLjUBVGhlIGNvbnZlcnRlZCBuYXRpdmUgYW1vdW50IGlzIHZhbGlkYXRlZCBhZ2FpbnN0IHRoZSBtYXhpbXVtIHNwZW5kYWJsZSBhbW91bnSQcmV0dXJuZWQgYnkgW2BDb25maWc6OlNwZW5kT3JpZ2luYF0uACgjIyBEZXRhaWxzACEBLSBUaGUgYFNwZW5kT3JpZ2luYCBtdXN0IGhhdmUgc3VmZmljaWVudCBwZXJtaXNzaW9ucyB0byBmdW5kIHRoZSBib3VudHkuWQEtIFRoZSBib3VudHkgYHZhbHVlYCAoaW4gYXNzZXQgYmFsYW5jZSkgaXMgY29udmVydGVkIHRvIG5hdGl2ZSBiYWxhbmNlIGZvciB2YWxpZGF0aW9uLikBLSBJbiBjYXNlIG9mIGEgZnVuZGluZyBmYWlsdXJlLCB0aGUgYm91bnR5IHN0YXR1cyBtdXN0IGJlIHVwZGF0ZWQgd2l0aCB0aGUBASAgYGNoZWNrX3N0YXR1c2AgY2FsbCBiZWZvcmUgcmV0cnlpbmcgd2l0aCBgcmV0cnlfcGF5bWVudGAgY2FsbC4AOCMjIyBQYXJhbWV0ZXJzGQEtIGBhc3NldF9raW5kYDogQW4gaW5kaWNhdG9yIG9mIHRoZSBzcGVjaWZpYyBhc3NldCBjbGFzcyB0byBiZSBmdW5kZWQuzC0gYHZhbHVlYDogVGhlIHRvdGFsIHBheW1lbnQgYW1vdW50IG9mIHRoaXMgYm91bnR5LpwtIGBjdXJhdG9yYDogQWRkcmVzcyBvZiBib3VudHkgY3VyYXRvci4tAS0gYG1ldGFkYXRhYDogVGhlIGhhc2ggb2YgYW4gb24tY2hhaW4gc3RvcmVkIHByZWltYWdlIHdpdGggYm91bnR5IG1ldGFkYXRhLgAkIyMgRXZlbnRzAAUBRW1pdHMgW2BFdmVudDo6Qm91bnR5Q3JlYXRlZGBdIGFuZCBbYEV2ZW50OjpQYWlkYF0gaWYgc3VjY2Vzc2Z1bC5EZnVuZF9jaGlsZF9ib3VudHkQAUBwYXJlbnRfYm91bnR5X2lkZAEsQm91bnR5SW5kZXgAARR2YWx1ZVUBAShUOjpCYWxhbmNlAAEgbWV0YWRhdGFAARxUOjpIYXNoAAEcY3VyYXRvclkEAXBPcHRpb248QWNjb3VudElkTG9va3VwT2Y8VD4+AAFgXQFGdW5kIGEgbmV3IGNoaWxkLWJvdW50eSB3aXRoIGEgcHJvcG9zZWQgY3VyYXRvciwgaW5pdGlhdGluZyB0aGUgcGF5bWVudCBmcm9tIHRoZSBwYXJlbnSwYm91bnR5IHRvIHRoZSBjaGlsZC1ib3VudHkgYWNjb3VudC9sb2NhdGlvbi4ASCMjIERpc3BhdGNoIE9yaWdpbgCUTXVzdCBiZSBzaWduZWQgYnkgdGhlIHBhcmVudCBjdXJhdG9yLgAoIyMgRGV0YWlscwBFAS0gSWYgYGN1cmF0b3JgIGlzIG5vdCBwcm92aWRlZCwgdGhlIGNoaWxkLWJvdW50eSB3aWxsIGRlZmF1bHQgdG8gdXNpbmcgdGhlIHBhcmVudDUBICBjdXJhdG9yLCBhbGxvd2luZyB0aGUgcGFyZW50IGN1cmF0b3IgdG8gaW1tZWRpYXRlbHkgY2FsbCBgY2hlY2tfc3RhdHVzYCBhbmSwICBgYXdhcmRfYm91bnR5YCB0byBwYXlvdXQgdGhlIGNoaWxkLWJvdW50eS5FAS0gSW4gY2FzZSBvZiBhIGZ1bmRpbmcgZmFpbHVyZSwgdGhlIGNoaWxkLS9ib3VudHkgc3RhdHVzIG11c3QgYmUgdXBkYXRlZCB3aXRoIHRoZQEBICBgY2hlY2tfc3RhdHVzYCBjYWxsIGJlZm9yZSByZXRyeWluZyB3aXRoIGByZXRyeV9wYXltZW50YCBjYWxsLgA4IyMjIFBhcmFtZXRlcnNNAS0gYHBhcmVudF9ib3VudHlfaWRgOiBJbmRleCBvZiBwYXJlbnQgYm91bnR5IGZvciB3aGljaCBjaGlsZC1ib3VudHkgaXMgYmVpbmcgYWRkZWQuzC0gYHZhbHVlYDogVGhlIHBheW1lbnQgYW1vdW50IG9mIHRoaXMgY2hpbGQtYm91bnR5LkUBLSBgbWV0YWRhdGFgOiBUaGUgaGFzaCBvZiBhbiBvbi1jaGFpbiBzdG9yZWQgcHJlaW1hZ2Ugd2l0aCBjaGlsZC1ib3VudHkgbWV0YWRhdGEutC0gYGN1cmF0b3JgOiBBZGRyZXNzIG9mIGNoaWxkLWJvdW50eSBjdXJhdG9yLgAkIyMgRXZlbnRzABkBRW1pdHMgW2BFdmVudDo6Q2hpbGRCb3VudHlDcmVhdGVkYF0gYW5kIFtgRXZlbnQ6OlBhaWRgXSBpZiBzdWNjZXNzZnVsLjxwcm9wb3NlX2N1cmF0b3IMAUBwYXJlbnRfYm91bnR5X2lkZAEsQm91bnR5SW5kZXgAATxjaGlsZF9ib3VudHlfaWTkAUxPcHRpb248Qm91bnR5SW5kZXg+AAEcY3VyYXRvcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAJUMQFQcm9wb3NlIGEgbmV3IGN1cmF0b3IgZm9yIGEgY2hpbGQtL2JvdW50eSBhZnRlciB0aGUgcHJldmlvdXMgd2FzIHVuYXNzaWduZWQuAEgjIyBEaXNwYXRjaCBPcmlnaW4AQQFNdXN0IGJlIHNpZ25lZCBieSBgVDo6U3BlbmRPcmlnaW5gIGZvciBhIGJvdW50eSwgb3IgYnkgdGhlIHBhcmVudCBib3VudHkgY3VyYXRvckxmb3IgYSBjaGlsZC1ib3VudHkuACgjIyBEZXRhaWxzAPQtIFRoZSBjaGlsZC0vYm91bnR5IG11c3QgYmUgaW4gdGhlIGBDdXJhdG9yVW5hc3NpZ25lZGAgc3RhdGUuRQEtIEZvciBhIGJvdW50eSwgdGhlIGBTcGVuZE9yaWdpbmAgbXVzdCBoYXZlIHN1ZmZpY2llbnQgcGVybWlzc2lvbnMgdG8gcHJvcG9zZSB0aGUoICBjdXJhdG9yLgA4IyMjIFBhcmFtZXRlcnOYLSBgcGFyZW50X2JvdW50eV9pZGA6IEluZGV4IG9mIGJvdW50eS6sLSBgY2hpbGRfYm91bnR5X2lkYDogSW5kZXggb2YgY2hpbGQtYm91bnR5LswtIGBjdXJhdG9yYDogQWNjb3VudCB0byBiZSBwcm9wb3NlZCBhcyB0aGUgY3VyYXRvci4AJCMjIEV2ZW50cwC8RW1pdHMgW2BFdmVudDo6Q3VyYXRvclByb3Bvc2VkYF0gaWYgc3VjY2Vzc2Z1bC44YWNjZXB0X2N1cmF0b3IIAUBwYXJlbnRfYm91bnR5X2lkZAEsQm91bnR5SW5kZXgAATxjaGlsZF9ib3VudHlfaWTkAUxPcHRpb248Qm91bnR5SW5kZXg+AANMsEFjY2VwdCB0aGUgY3VyYXRvciByb2xlIGZvciBhIGNoaWxkLS9ib3VudHkuAEgjIyBEaXNwYXRjaCBPcmlnaW4AnE11c3QgYmUgc2lnbmVkIGJ5IHRoZSBwcm9wb3NlZCBjdXJhdG9yLgAoIyMgRGV0YWlscwDILSBUaGUgY2hpbGQtL2JvdW50eSBtdXN0IGJlIGluIHRoZSBgRnVuZGVkYCBzdGF0ZS7wLSBUaGUgY3VyYXRvciBtdXN0IGFjY2VwdCB0aGUgcm9sZSBieSBjYWxsaW5nIHRoaXMgZnVuY3Rpb24uSQEtIEEgZGVwb3NpdCB3aWxsIGJlIHJlc2VydmVkIGZyb20gdGhlIGN1cmF0b3IgYW5kIHJlZnVuZGVkIHVwb24gc3VjY2Vzc2Z1bCBwYXlvdXQuADgjIyMgUGFyYW1ldGVyc7QtIGBwYXJlbnRfYm91bnR5X2lkYDogSW5kZXggb2YgcGFyZW50IGJvdW50eS6sLSBgY2hpbGRfYm91bnR5X2lkYDogSW5kZXggb2YgY2hpbGQtYm91bnR5LgAkIyMgRXZlbnRzAMhFbWl0cyBbYEV2ZW50OjpCb3VudHlCZWNhbWVBY3RpdmVgXSBpZiBzdWNjZXNzZnVsLkB1bmFzc2lnbl9jdXJhdG9yCAFAcGFyZW50X2JvdW50eV9pZGQBLEJvdW50eUluZGV4AAE8Y2hpbGRfYm91bnR5X2lk5AFMT3B0aW9uPEJvdW50eUluZGV4PgAEZJhVbmFzc2lnbiBjdXJhdG9yIGZyb20gYSBjaGlsZC0vYm91bnR5LgBIIyMgRGlzcGF0Y2ggT3JpZ2luAFEBVGhpcyBmdW5jdGlvbiBjYW4gb25seSBiZSBjYWxsZWQgYnkgdGhlIGBSZWplY3RPcmlnaW5gIG9yIHRoZSBjaGlsZC0vYm91bnR5IGN1cmF0b3IuACgjIyBEZXRhaWxzAGEBLSBJZiB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBieSB0aGUgYFJlamVjdE9yaWdpbmAsIG9yIGJ5IHRoZSBwYXJlbnQgY3VyYXRvciBpbiB0aGUgY2FzZVkBICBvZiBhIGNoaWxkIGJvdW50eSwgd2UgYXNzdW1lIHRoYXQgdGhlIGN1cmF0b3IgaXMgbWFsaWNpb3VzIG9yIGluYWN0aXZlLiBBcyBhIHJlc3VsdCyoICB3ZSB3aWxsIHNsYXNoIHRoZSBjdXJhdG9yIHdoZW4gcG9zc2libGUuXQEtIElmIHRoZSBvcmlnaW4gaXMgdGhlIGNoaWxkLS9ib3VudHkgY3VyYXRvciwgd2UgdGFrZSB0aGlzIGFzIGEgc2lnbiB0aGV5IGFyZSB1bmFibGUgdG9RASAgZG8gdGhlaXIgam9iIGFuZCB0aGV5IHdpbGxpbmdseSBnaXZlIHVwLiBXZSBjb3VsZCBzbGFzaCB0aGVtLCBidXQgZm9yIG5vdyB3ZSBhbGxvd1kBICB0aGVtIHRvIHJlY292ZXIgdGhlaXIgZGVwb3NpdCBhbmQgZXhpdCB3aXRob3V0IGlzc3VlLiAoV2UgbWF5IHdhbnQgdG8gY2hhbmdlIHRoaXMgaWZAICBpdCBpcyBhYnVzZWQpLj0BLSBJZiBzdWNjZXNzZnVsLCB0aGUgY2hpbGQtL2JvdW50eSBzdGF0dXMgaXMgdXBkYXRlZCB0byBgQ3VyYXRvclVuYXNzaWduZWRgLiBUb0UBICByZWFjdGl2YXRlIHRoZSBib3VudHksIGEgbmV3IGN1cmF0b3IgbXVzdCBiZSBwcm9wb3NlZCBhbmQgbXVzdCBhY2NlcHQgdGhlIHJvbGUuADgjIyMgUGFyYW1ldGVyc7QtIGBwYXJlbnRfYm91bnR5X2lkYDogSW5kZXggb2YgcGFyZW50IGJvdW50eS6sLSBgY2hpbGRfYm91bnR5X2lkYDogSW5kZXggb2YgY2hpbGQtYm91bnR5LgAkIyMgRXZlbnRzAMRFbWl0cyBbYEV2ZW50OjpDdXJhdG9yVW5hc3NpZ25lZGBdIGlmIHN1Y2Nlc3NmdWwuMGF3YXJkX2JvdW50eQwBQHBhcmVudF9ib3VudHlfaWRkASxCb3VudHlJbmRleAABPGNoaWxkX2JvdW50eV9pZOQBTE9wdGlvbjxCb3VudHlJbmRleD4AASxiZW5lZmljaWFyee0EAWRCZW5lZmljaWFyeUxvb2t1cE9mPFQsIEk+AAVg7EF3YXJkcyB0aGUgY2hpbGQtL2JvdW50eSB0byBhIGJlbmVmaWNpYXJ5IGFjY291bnQvbG9jYXRpb24sHQFpbml0aWF0aW5nIHRoZSBwYXlvdXQgcGF5bWVudHMgdG8gYm90aCB0aGUgYmVuZWZpY2lhcnkgYW5kIHRoZSBjdXJhdG9yLgBIIyMgRGlzcGF0Y2ggT3JpZ2luAFEBVGhpcyBmdW5jdGlvbiBjYW4gb25seSBiZSBjYWxsZWQgYnkgdGhlIGBSZWplY3RPcmlnaW5gIG9yIHRoZSBjaGlsZC0vYm91bnR5IGN1cmF0b3IuACgjIyBEZXRhaWxzAMgtIFRoZSBjaGlsZC0vYm91bnR5IG11c3QgYmUgaW4gdGhlIGBBY3RpdmVgIHN0YXRlLj0BLSBpZiBhd2FyZGluZyBhIHBhcmVudCBib3VudHkgaXQgbXVzdCBub3QgaGF2ZSBhY3RpdmUgb3IgZnVuZGVkIGNoaWxkIGJvdW50aWVzLlkBLSBJbml0aWF0ZXMgcGF5b3V0IHBheW1lbnQgZnJvbSB0aGUgY2hpbGQtL2JvdW50eSB0byB0aGUgYmVuZWZpY2lhcnkgYWNjb3VudC9sb2NhdGlvbi4lAS0gSWYgc3VjY2Vzc2Z1bCB0aGUgY2hpbGQtL2JvdW50eSBzdGF0dXMgaXMgdXBkYXRlZCB0byBgUGF5b3V0QXR0ZW1wdGVkYC4xAS0gSW4gY2FzZSBvZiBhIHBheW91dCBmYWlsdXJlLCB0aGUgY2hpbGQtL2JvdW50eSBzdGF0dXMgbXVzdCBiZSB1cGRhdGVkIHdpdGj4YGNoZWNrX3N0YXR1c2AgY2FsbCBiZWZvcmUgcmV0cnlpbmcgd2l0aCBgcmV0cnlfcGF5bWVudGAgY2FsbC4AOCMjIyBQYXJhbWV0ZXJztC0gYHBhcmVudF9ib3VudHlfaWRgOiBJbmRleCBvZiBwYXJlbnQgYm91bnR5LqwtIGBjaGlsZF9ib3VudHlfaWRgOiBJbmRleCBvZiBjaGlsZC1ib3VudHkuCQEtIGBiZW5lZmljaWFyeWA6IEFjY291bnQvbG9jYXRpb24gdG8gYmUgYXdhcmRlZCB0aGUgY2hpbGQtL2JvdW50eS4AJCMjIEV2ZW50cwAFAUVtaXRzIFtgRXZlbnQ6OkJvdW50eUF3YXJkZWRgXSBhbmQgW2BFdmVudDo6UGFpZGBdIGlmIHN1Y2Nlc3NmdWwuMGNsb3NlX2JvdW50eQgBQHBhcmVudF9ib3VudHlfaWRkASxCb3VudHlJbmRleAABPGNoaWxkX2JvdW50eV9pZOQBTE9wdGlvbjxCb3VudHlJbmRleD4ABlxhAUNhbmNlbCBhbiBhY3RpdmUgY2hpbGQtL2JvdW50eS4gQSBwYXltZW50IHRvIHNlbmQgYWxsIHRoZSBmdW5kcyB0byB0aGUgZnVuZGluZyBzb3VyY2UgaXMwaW5pdGlhbGl6ZWQuAEgjIyBEaXNwYXRjaCBPcmlnaW4AUQFUaGlzIGZ1bmN0aW9uIGNhbiBvbmx5IGJlIGNhbGxlZCBieSB0aGUgYFJlamVjdE9yaWdpbmAgb3IgdGhlIHBhcmVudCBib3VudHkgY3VyYXRvci4AKCMjIERldGFpbHMAPQEtIElmIHRoZSBjaGlsZC0vYm91bnR5IGlzIGluIHRoZSBgRnVuZGVkYCBzdGF0ZSwgYSByZWZ1bmQgcGF5bWVudCBpcyBpbml0aWF0ZWQuWQEtIElmIHRoZSBjaGlsZC0vYm91bnR5IGlzIGluIHRoZSBgQWN0aXZlYCBzdGF0ZSwgYSByZWZ1bmQgcGF5bWVudCBpcyBpbml0aWF0ZWQgYW5kIHRoZREBICBjaGlsZC0vYm91bnR5IHN0YXR1cyBpcyB1cGRhdGVkIHdpdGggdGhlIGN1cmF0b3IgYWNjb3VudC9sb2NhdGlvbi5BAS0gSWYgdGhlIGNoaWxkLS9ib3VudHkgaXMgaW4gdGhlIGZ1bmRpbmcgb3IgcGF5b3V0IHBoYXNlLCBpdCBjYW5ub3QgYmUgY2FuY2VsZWQuQQEtIEluIGNhc2Ugb2YgYSByZWZ1bmQgZmFpbHVyZSwgdGhlIGNoaWxkLS9ib3VudHkgc3RhdHVzIG11c3QgYmUgdXBkYXRlZCB3aXRoIHRoZfhgY2hlY2tfc3RhdHVzYCBjYWxsIGJlZm9yZSByZXRyeWluZyB3aXRoIGByZXRyeV9wYXltZW50YCBjYWxsLgA4IyMjIFBhcmFtZXRlcnO0LSBgcGFyZW50X2JvdW50eV9pZGA6IEluZGV4IG9mIHBhcmVudCBib3VudHkurC0gYGNoaWxkX2JvdW50eV9pZGA6IEluZGV4IG9mIGNoaWxkLWJvdW50eS4AJCMjIEV2ZW50cwAJAUVtaXRzIFtgRXZlbnQ6OkJvdW50eUNhbmNlbGVkYF0gYW5kIFtgRXZlbnQ6OlBhaWRgXSBpZiBzdWNjZXNzZnVsLjBjaGVja19zdGF0dXMIAUBwYXJlbnRfYm91bnR5X2lkZAEsQm91bnR5SW5kZXgAATxjaGlsZF9ib3VudHlfaWTkAUxPcHRpb248Qm91bnR5SW5kZXg+AAdk3ENoZWNrIGFuZCB1cGRhdGUgdGhlIHBheW1lbnQgc3RhdHVzIG9mIGEgY2hpbGQtL2JvdW50eS4ASCMjIERpc3BhdGNoIE9yaWdpbgA8TXVzdCBiZSBzaWduZWQuACgjIyBEZXRhaWxzAFUBLSBJZiB0aGUgY2hpbGQtL2JvdW50eSBzdGF0dXMgaXMgYEZ1bmRpbmdBdHRlbXB0ZWRgLCBpdCBjaGVja3MgaWYgdGhlIGZ1bmRpbmcgcGF5bWVudA0BICBoYXMgc3VjY2VlZGVkLiBJZiBzdWNjZXNzZnVsLCB0aGUgYm91bnR5IHN0YXR1cyBiZWNvbWVzIGBGdW5kZWRgLl0BLSBJZiB0aGUgY2hpbGQtL2JvdW50eSBzdGF0dXMgaXMgYFJlZnVuZEF0dGVtcHRlZGAsIGl0IGNoZWNrcyBpZiB0aGUgcmVmdW5kIHBheW1lbnQgaGFzGQEgIHN1Y2NlZWRlZC4gSWYgc3VjY2Vzc2Z1bCwgdGhlIGNoaWxkLS9ib3VudHkgaXMgcmVtb3ZlZCBmcm9tIHN0b3JhZ2UuXQEtIElmIHRoZSBjaGlsZC0vYm91bnR5IHN0YXR1cyBpcyBgUGF5b3V0QXR0ZW1wdGVkYCwgaXQgY2hlY2tzIGlmIHRoZSBwYXlvdXQgcGF5bWVudCBoYXMZASAgc3VjY2VlZGVkLiBJZiBzdWNjZXNzZnVsLCB0aGUgY2hpbGQtL2JvdW50eSBpcyByZW1vdmVkIGZyb20gc3RvcmFnZS4AOCMjIyBQYXJhbWV0ZXJztC0gYHBhcmVudF9ib3VudHlfaWRgOiBJbmRleCBvZiBwYXJlbnQgYm91bnR5LqwtIGBjaGlsZF9ib3VudHlfaWRgOiBJbmRleCBvZiBjaGlsZC1ib3VudHkuACQjIyBFdmVudHMAXQFFbWl0cyBbYEV2ZW50OjpCb3VudHlCZWNhbWVBY3RpdmVgXSBpZiB0aGUgY2hpbGQvYm91bnR5IHN0YXR1cyB0cmFuc2l0aW9ucyB0byBgQWN0aXZlYC4lAUVtaXRzIFtgRXZlbnQ6OkJvdW50eVJlZnVuZFByb2Nlc3NlZGBdIGlmIHRoZSByZWZ1bmQgcGF5bWVudCBoYXMgc3VjY2VlZC4lAUVtaXRzIFtgRXZlbnQ6OkJvdW50eVBheW91dFByb2Nlc3NlZGBdIGlmIHRoZSBwYXlvdXQgcGF5bWVudCBoYXMgc3VjY2VlZC5VAUVtaXRzIFtgRXZlbnQ6OlBheW1lbnRGYWlsZWRgXSBpZiB0aGUgZnVuZGluZywgcmVmdW5kIG91ciBwYXltZW50IHBheW1lbnQgaGFzIGZhaWxlZC40cmV0cnlfcGF5bWVudAgBQHBhcmVudF9ib3VudHlfaWRkASxCb3VudHlJbmRleAABPGNoaWxkX2JvdW50eV9pZOQBTE9wdGlvbjxCb3VudHlJbmRleD4ACFi0UmV0cnkgdGhlIGZ1bmRpbmcsIHJlZnVuZCBvciBwYXlvdXQgcGF5bWVudHMuAEgjIyBEaXNwYXRjaCBPcmlnaW4APE11c3QgYmUgc2lnbmVkLgAoIyMgRGV0YWlscwBhAS0gSWYgdGhlIGNoaWxkLS9ib3VudHkgc3RhdHVzIGlzIGBGdW5kaW5nQXR0ZW1wdGVkYCwgaXQgcmV0cmllcyB0aGUgZnVuZGluZyBwYXltZW50IGZyb23QICBmdW5kaW5nIHNvdXJjZSB0aGUgY2hpbGQtL2JvdW50eSBhY2NvdW50L2xvY2F0aW9uLlkBLSBJZiB0aGUgY2hpbGQtL2JvdW50eSBzdGF0dXMgaXMgYFJlZnVuZEF0dGVtcHRlZGAsIGl0IHJldHJpZXMgdGhlIHJlZnVuZCBwYXltZW50IGZyb23sICB0aGUgY2hpbGQtL2JvdW50eSBhY2NvdW50L2xvY2F0aW9uIHRvIHRoZSBmdW5kaW5nIHNvdXJjZS5ZAS0gSWYgdGhlIGNoaWxkLS9ib3VudHkgc3RhdHVzIGlzIGBQYXlvdXRBdHRlbXB0ZWRgLCBpdCByZXRyaWVzIHRoZSBwYXlvdXQgcGF5bWVudCBmcm9tJQEgIHRoZSBjaGlsZC0vYm91bnR5IGFjY291bnQvbG9jYXRpb24gdG8gdGhlIGJlbmVmaWNpYXJ5IGFjY291bnQvbG9jYXRpb24uADgjIyMgUGFyYW1ldGVyc7QtIGBwYXJlbnRfYm91bnR5X2lkYDogSW5kZXggb2YgcGFyZW50IGJvdW50eS6sLSBgY2hpbGRfYm91bnR5X2lkYDogSW5kZXggb2YgY2hpbGQtYm91bnR5LgAkIyMgRXZlbnRzADUBRW1pdHMgW2BFdmVudDo6UGFpZGBdIGlmIHRoZSBmdW5kaW5nLCByZWZ1bmQgb3IgcGF5b3V0IHBheW1lbnQgaGFzIGluaXRpYXRlZC4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuMQUMbHBhbGxldF9zdGF0ZV90cmllX21pZ3JhdGlvbhhwYWxsZXQQQ2FsbAQEVAABGFhjb250cm9sX2F1dG9fbWlncmF0aW9uBAEwbWF5YmVfY29uZmlnNQUBXE9wdGlvbjxNaWdyYXRpb25MaW1pdHM+AAAMgENvbnRyb2wgdGhlIGF1dG9tYXRpYyBtaWdyYXRpb24uAA0BVGhlIGRpc3BhdGNoIG9yaWdpbiBvZiB0aGlzIGNhbGwgbXVzdCBiZSBbYENvbmZpZzo6Q29udHJvbE9yaWdpbmBdLkBjb250aW51ZV9taWdyYXRlDAEYbGltaXRzOQUBPE1pZ3JhdGlvbkxpbWl0cwABPHJlYWxfc2l6ZV91cHBlcjgBDHUzMgABMHdpdG5lc3NfdGFzaz0FAUBNaWdyYXRpb25UYXNrPFQ+AAFUuENvbnRpbnVlIHRoZSBtaWdyYXRpb24gZm9yIHRoZSBnaXZlbiBgbGltaXRzYC4A7FRoZSBkaXNwYXRjaCBvcmlnaW4gb2YgdGhpcyBjYWxsIGNhbiBiZSBhbnkgc2lnbmVkIGFjY291bnQuAF0BVGhpcyB0cmFuc2FjdGlvbiBoYXMgTk8gTU9ORVRBUlkgSU5DRU5USVZFUy4gY2FsbGluZyBpdCB3aWxsIG5vdCByZXdhcmQgYW55b25lLiBBbGJlaXQs7FVwb24gc3VjY2Vzc2Z1bCBleGVjdXRpb24sIHRoZSB0cmFuc2FjdGlvbiBmZWUgaXMgcmV0dXJuZWQuAEEBVGhlIChwb3RlbnRpYWxseSBvdmVyLWVzdGltYXRlZCkgb2YgdGhlIGJ5dGUgbGVuZ3RoIG9mIGFsbCB0aGUgZGF0YSByZWFkIG11c3QgYmVZAXByb3ZpZGVkIGZvciB1cC1mcm9udCBmZWUtcGF5bWVudCBhbmQgd2VpZ2hpbmcuIEluIGVzc2VuY2UsIHRoZSBjYWxsZXIgaXMgZ3VhcmFudGVlaW5nSQF0aGF0IGV4ZWN1dGluZyB0aGUgY3VycmVudCBgTWlncmF0aW9uVGFza2Agd2l0aCB0aGUgZ2l2ZW4gYGxpbWl0c2Agd2lsbCBub3QgZXhjZWVklGByZWFsX3NpemVfdXBwZXJgIGJ5dGVzIG9mIHJlYWQgZGF0YS4ARQFUaGUgYHdpdG5lc3NfdGFza2AgaXMgbWVyZWx5IGEgaGVscGVyIHRvIHByZXZlbnQgdGhlIGNhbGxlciBmcm9tIGJlaW5nIHNsYXNoZWQgb3JdAWdlbmVyYWxseSB0cmlnZ2VyIGEgbWlncmF0aW9uIHRoYXQgdGhleSBkbyBub3QgaW50ZW5kLiBUaGlzIHBhcmFtZXRlciBpcyBqdXN0IGEgbWVzc2FnZT0BZnJvbSBjYWxsZXIsIHNheWluZyB0aGF0IHRoZXkgYmVsaWV2ZWQgYHdpdG5lc3NfdGFza2Agd2FzIHRoZSBsYXN0IHN0YXRlIG9mIHRoZVkBbWlncmF0aW9uLCBhbmQgdGhleSBvbmx5IHdpc2ggZm9yIHRoZWlyIHRyYW5zYWN0aW9uIHRvIGRvIGFueXRoaW5nLCBpZiB0aGlzIGFzc3VtcHRpb24RAWhvbGRzLiBJbiBjYXNlIGB3aXRuZXNzX3Rhc2tgIGRvZXMgbm90IG1hdGNoLCB0aGUgdHJhbnNhY3Rpb24gZmFpbHMuADkBQmFzZWQgb24gdGhlIGRvY3VtZW50YXRpb24gb2YgW2BNaWdyYXRpb25UYXNrOjptaWdyYXRlX3VudGlsX2V4aGF1c3Rpb25gXSwgdGhlTQFyZWNvbW1lbmRlZCB3YXkgb2YgZG9pbmcgdGhpcyBpcyB0byBwYXNzIGEgYGxpbWl0YCB0aGF0IG9ubHkgYm91bmRzIGBjb3VudGAsIGFzIHRoZZxgc2l6ZWAgbGltaXQgY2FuIGFsd2F5cyBiZSBvdmVyd3JpdHRlbi5IbWlncmF0ZV9jdXN0b21fdG9wCAEQa2V5czQBMFZlYzxWZWM8dTg+PgABMHdpdG5lc3Nfc2l6ZTgBDHUzMgACEAkBTWlncmF0ZSB0aGUgbGlzdCBvZiB0b3Aga2V5cyBieSBpdGVyYXRpbmcgZWFjaCBvZiB0aGVtIG9uZSBieSBvbmUuAFUBVGhpcyBkb2VzIG5vdCBhZmZlY3QgdGhlIGdsb2JhbCBtaWdyYXRpb24gcHJvY2VzcyB0cmFja2VyIChbYE1pZ3JhdGlvblByb2Nlc3NgXSksIGFuZPxzaG91bGQgb25seSBiZSB1c2VkIGluIGNhc2UgYW55IGtleXMgYXJlIGxlZnRvdmVyIGR1ZSB0byBhIGJ1Zy5QbWlncmF0ZV9jdXN0b21fY2hpbGQMARByb290GAEcVmVjPHU4PgABKGNoaWxkX2tleXM0ATBWZWM8VmVjPHU4Pj4AASh0b3RhbF9zaXplOAEMdTMyAAMYEQFNaWdyYXRlIHRoZSBsaXN0IG9mIGNoaWxkIGtleXMgYnkgaXRlcmF0aW5nIGVhY2ggb2YgdGhlbSBvbmUgYnkgb25lLgANAUFsbCBvZiB0aGUgZ2l2ZW4gY2hpbGQga2V5cyBtdXN0IGJlIHByZXNlbnQgdW5kZXIgb25lIGBjaGlsZF9yb290YC4AVQFUaGlzIGRvZXMgbm90IGFmZmVjdCB0aGUgZ2xvYmFsIG1pZ3JhdGlvbiBwcm9jZXNzIHRyYWNrZXIgKFtgTWlncmF0aW9uUHJvY2Vzc2BdKSwgYW5k/HNob3VsZCBvbmx5IGJlIHVzZWQgaW4gY2FzZSBhbnkga2V5cyBhcmUgbGVmdG92ZXIgZHVlIHRvIGEgYnVnLlRzZXRfc2lnbmVkX21heF9saW1pdHMEARhsaW1pdHM5BQE8TWlncmF0aW9uTGltaXRzAAQEuFNldCB0aGUgbWF4aW11bSBsaW1pdCBvZiB0aGUgc2lnbmVkIG1pZ3JhdGlvbi5IZm9yY2Vfc2V0X3Byb2dyZXNzCAEwcHJvZ3Jlc3NfdG9wQQUBNFByb2dyZXNzT2Y8VD4AAThwcm9ncmVzc19jaGlsZEEFATRQcm9ncmVzc09mPFQ+AAUkyEZvcmNlZnVsbHkgc2V0IHRoZSBwcm9ncmVzcyB0aGUgcnVubmluZyBtaWdyYXRpb24uAF0BVGhpcyBpcyBvbmx5IHVzZWZ1bCBpbiBvbmUgY2FzZTogdGhlIG5leHQga2V5IHRvIG1pZ3JhdGUgaXMgdG9vIGJpZyB0byBiZSBtaWdyYXRlZCB3aXRoVQFhIHNpZ25lZCBhY2NvdW50LCBpbiBhIHBhcmFjaGFpbiBjb250ZXh0LCBhbmQgd2Ugc2ltcGx5IHdhbnQgdG8gc2tpcCBpdC4gQSByZWFzb25hYmxlYQFleGFtcGxlIG9mIHRoaXMgd291bGQgYmUgYDpjb2RlOmAsIHdoaWNoIGlzIGJvdGggdmVyeSBleHBlbnNpdmUgdG8gbWlncmF0ZSwgYW5kIGNvbW1vbmx5pHVzZWQsIHNvIHByb2JhYmx5IGl0IGlzIGFscmVhZHkgbWlncmF0ZWQuAF0BSW4gY2FzZSB5b3UgbWVzcyB0aGluZ3MgdXAsIHlvdSBjYW4gYWxzbywgaW4gcHJpbmNpcGxlLCB1c2UgdGhpcyB0byByZXNldCB0aGUgbWlncmF0aW9uIHByb2Nlc3MuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLjUFBBhPcHRpb24EBFQBOQUBCBBOb25lAAAAEFNvbWUEADkFAAABAAA5BQxscGFsbGV0X3N0YXRlX3RyaWVfbWlncmF0aW9uGHBhbGxldDxNaWdyYXRpb25MaW1pdHMAAAgBEHNpemU4AQx1MzIAARBpdGVtOAEMdTMyAAA9BQxscGFsbGV0X3N0YXRlX3RyaWVfbWlncmF0aW9uGHBhbGxldDRNaWdyYXRpb25UYXNrBARUAAAUATBwcm9ncmVzc190b3BBBQE0UHJvZ3Jlc3NPZjxUPgABOHByb2dyZXNzX2NoaWxkQQUBNFByb2dyZXNzT2Y8VD4AARBzaXplOAEMdTMyAAEkdG9wX2l0ZW1zOAEMdTMyAAEsY2hpbGRfaXRlbXM4AQx1MzIAAEEFDGxwYWxsZXRfc3RhdGVfdHJpZV9taWdyYXRpb24YcGFsbGV0IFByb2dyZXNzBCRNYXhLZXlMZW4AAQwcVG9TdGFydAAAABxMYXN0S2V5BABFBQFkQm91bmRlZFZlYzx1OCwgTWF4S2V5TGVuPgABACBDb21wbGV0ZQACAABFBQxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQwEUwAABAAYARhWZWM8VD4AAEkFDFxwYWxsZXRfbm9taW5hdGlvbl9wb29scxhwYWxsZXQQQ2FsbAQEVAABaBBqb2luCAEYYW1vdW50VQEBMEJhbGFuY2VPZjxUPgABHHBvb2xfaWQ4ARhQb29sSWQAAEBFAVN0YWtlIGZ1bmRzIHdpdGggYSBwb29sLiBUaGUgYW1vdW50IHRvIGJvbmQgaXMgZGVsZWdhdGVkIChvciB0cmFuc2ZlcnJlZCBiYXNlZCBvbk0BW2BhZGFwdGVyOjpTdGFrZVN0cmF0ZWd5VHlwZWBdKSBmcm9tIHRoZSBtZW1iZXIgdG8gdGhlIHBvb2wgYWNjb3VudCBhbmQgaW1tZWRpYXRlbHloaW5jcmVhc2VzIHRoZSBwb29sJ3MgYm9uZC4AKQFUaGUgbWV0aG9kIG9mIHRyYW5zZmVycmluZyB0aGUgYW1vdW50IHRvIHRoZSBwb29sIGFjY291bnQgaXMgZGV0ZXJtaW5lZCBieQEBW2BhZGFwdGVyOjpTdGFrZVN0cmF0ZWd5VHlwZWBdLiBJZiB0aGUgcG9vbCBpcyBjb25maWd1cmVkIHRvIHVzZTEBW2BhZGFwdGVyOjpTdGFrZVN0cmF0ZWd5VHlwZTo6RGVsZWdhdGVgXSwgdGhlIGZ1bmRzIHJlbWFpbiBpbiB0aGUgYWNjb3VudCBvZjEBdGhlIGBvcmlnaW5gLCB3aGlsZSB0aGUgcG9vbCBnYWlucyB0aGUgcmlnaHQgdG8gdXNlIHRoZXNlIGZ1bmRzIGZvciBzdGFraW5nLgAYIyBOb3RlAMwqIEFuIGFjY291bnQgY2FuIG9ubHkgYmUgYSBtZW1iZXIgb2YgYSBzaW5nbGUgcG9vbC7YKiBBbiBhY2NvdW50IGNhbm5vdCBqb2luIHRoZSBzYW1lIHBvb2wgbXVsdGlwbGUgdGltZXMuQQEqIFRoaXMgY2FsbCB3aWxsICpub3QqIGR1c3QgdGhlIG1lbWJlciBhY2NvdW50LCBzbyB0aGUgbWVtYmVyIG11c3QgaGF2ZSBhdCBsZWFzdMggIGBleGlzdGVudGlhbCBkZXBvc2l0ICsgYW1vdW50YCBpbiB0aGVpciBhY2NvdW50LtAqIE9ubHkgYSBwb29sIHdpdGggW2BQb29sU3RhdGU6Ok9wZW5gXSBjYW4gYmUgam9pbmVkKGJvbmRfZXh0cmEEARRleHRyYU0FAVxCb25kRXh0cmE8QmFsYW5jZU9mPFQ+PgABHEUBQm9uZCBgZXh0cmFgIG1vcmUgZnVuZHMgZnJvbSBgb3JpZ2luYCBpbnRvIHRoZSBwb29sIHRvIHdoaWNoIHRoZXkgYWxyZWFkeSBiZWxvbmcuAEkBQWRkaXRpb25hbCBmdW5kcyBjYW4gY29tZSBmcm9tIGVpdGhlciB0aGUgZnJlZSBiYWxhbmNlIG9mIHRoZSBhY2NvdW50LCBvZiBmcm9tIHRoZZxhY2N1bXVsYXRlZCByZXdhcmRzLCBzZWUgW2BCb25kRXh0cmFgXS4APQFCb25kaW5nIGV4dHJhIGZ1bmRzIGltcGxpZXMgYW4gYXV0b21hdGljIHBheW91dCBvZiBhbGwgcGVuZGluZyByZXdhcmRzIGFzIHdlbGwuCQFTZWUgYGJvbmRfZXh0cmFfb3RoZXJgIHRvIGJvbmQgcGVuZGluZyByZXdhcmRzIG9mIGBvdGhlcmAgbWVtYmVycy4wY2xhaW1fcGF5b3V0AAIgVQFBIGJvbmRlZCBtZW1iZXIgY2FuIHVzZSB0aGlzIHRvIGNsYWltIHRoZWlyIHBheW91dCBiYXNlZCBvbiB0aGUgcmV3YXJkcyB0aGF0IHRoZSBwb29sYQFoYXMgYWNjdW11bGF0ZWQgc2luY2UgdGhlaXIgbGFzdCBjbGFpbWVkIHBheW91dCAoT1Igc2luY2Ugam9pbmluZyBpZiB0aGlzIGlzIHRoZWlyIGZpcnN0PQF0aW1lIGNsYWltaW5nIHJld2FyZHMpLiBUaGUgcGF5b3V0IHdpbGwgYmUgdHJhbnNmZXJyZWQgdG8gdGhlIG1lbWJlcidzIGFjY291bnQuAEkBVGhlIG1lbWJlciB3aWxsIGVhcm4gcmV3YXJkcyBwcm8gcmF0YSBiYXNlZCBvbiB0aGUgbWVtYmVycyBzdGFrZSB2cyB0aGUgc3VtIG9mIHRoZdBtZW1iZXJzIGluIHRoZSBwb29scyBzdGFrZS4gUmV3YXJkcyBkbyBub3QgImV4cGlyZSIuAEEBU2VlIGBjbGFpbV9wYXlvdXRfb3RoZXJgIHRvIGNsYWltIHJld2FyZHMgb24gYmVoYWxmIG9mIHNvbWUgYG90aGVyYCBwb29sIG1lbWJlci4YdW5ib25kCAE4bWVtYmVyX2FjY291bnQAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABQHVuYm9uZGluZ19wb2ludHNVAQEwQmFsYW5jZU9mPFQ+AAN8RQFVbmJvbmQgdXAgdG8gYHVuYm9uZGluZ19wb2ludHNgIG9mIHRoZSBgbWVtYmVyX2FjY291bnRgJ3MgZnVuZHMgZnJvbSB0aGUgcG9vbC4gSXRFAWltcGxpY2l0bHkgY29sbGVjdHMgdGhlIHJld2FyZHMgb25lIGxhc3QgdGltZSwgc2luY2Ugbm90IGRvaW5nIHNvIHdvdWxkIG1lYW4gc29tZWxyZXdhcmRzIHdvdWxkIGJlIGZvcmZlaXRlZC4ATQFVbmRlciBjZXJ0YWluIGNvbmRpdGlvbnMsIHRoaXMgY2FsbCBjYW4gYmUgZGlzcGF0Y2hlZCBwZXJtaXNzaW9ubGVzc2x5IChpLmUuIGJ5IGFueSRhY2NvdW50KS4ArCMgQ29uZGl0aW9ucyBmb3IgYSBwZXJtaXNzaW9ubGVzcyBkaXNwYXRjaC4AXQEqIFRoZSBwb29sIGlzIGJsb2NrZWQgYW5kIHRoZSBjYWxsZXIgaXMgZWl0aGVyIHRoZSByb290IG9yIGJvdW5jZXIuIFRoaXMgaXMgcmVmZXJlZWQgdG8wICBhcyBhIGtpY2su9CogVGhlIHBvb2wgaXMgZGVzdHJveWluZyBhbmQgdGhlIG1lbWJlciBpcyBub3QgdGhlIGRlcG9zaXRvci5VASogVGhlIHBvb2wgaXMgZGVzdHJveWluZywgdGhlIG1lbWJlciBpcyB0aGUgZGVwb3NpdG9yIGFuZCBubyBvdGhlciBtZW1iZXJzIGFyZSBpbiB0aGUcICBwb29sLgARASMjIENvbmRpdGlvbnMgZm9yIHBlcm1pc3Npb25lZCBkaXNwYXRjaCAoaS5lLiB0aGUgY2FsbGVyIGlzIGFsc28gdGhlSGBtZW1iZXJfYWNjb3VudGApOgCIKiBUaGUgY2FsbGVyIGlzIG5vdCB0aGUgZGVwb3NpdG9yLlUBKiBUaGUgY2FsbGVyIGlzIHRoZSBkZXBvc2l0b3IsIHRoZSBwb29sIGlzIGRlc3Ryb3lpbmcgYW5kIG5vIG90aGVyIG1lbWJlcnMgYXJlIGluIHRoZRwgIHBvb2wuABgjIE5vdGUAHQFJZiB0aGVyZSBhcmUgdG9vIG1hbnkgdW5sb2NraW5nIGNodW5rcyB0byB1bmJvbmQgd2l0aCB0aGUgcG9vbCBhY2NvdW50LFEBW2BDYWxsOjpwb29sX3dpdGhkcmF3X3VuYm9uZGVkYF0gY2FuIGJlIGNhbGxlZCB0byB0cnkgYW5kIG1pbmltaXplIHVubG9ja2luZyBjaHVua3MuWQFUaGUgW2BTdGFraW5nSW50ZXJmYWNlOjp1bmJvbmRgXSB3aWxsIGltcGxpY2l0bHkgY2FsbCBbYENhbGw6OnBvb2xfd2l0aGRyYXdfdW5ib25kZWRgXVUBdG8gdHJ5IHRvIGZyZWUgY2h1bmtzIGlmIG5lY2Vzc2FyeSAoaWUuIGlmIHVuYm91bmQgd2FzIGNhbGxlZCBhbmQgbm8gdW5sb2NraW5nIGNodW5rc2EBYXJlIGF2YWlsYWJsZSkuIEhvd2V2ZXIsIGl0IG1heSBub3QgYmUgcG9zc2libGUgdG8gcmVsZWFzZSB0aGUgY3VycmVudCB1bmxvY2tpbmcgY2h1bmtzLF0BaW4gd2hpY2ggY2FzZSwgdGhlIHJlc3VsdCBvZiB0aGlzIGNhbGwgd2lsbCBsaWtlbHkgYmUgdGhlIGBOb01vcmVDaHVua3NgIGVycm9yIGZyb20gdGhlPHN0YWtpbmcgc3lzdGVtLlhwb29sX3dpdGhkcmF3X3VuYm9uZGVkCAEccG9vbF9pZDgBGFBvb2xJZAABSG51bV9zbGFzaGluZ19zcGFuczgBDHUzMgAEGFUBQ2FsbCBgd2l0aGRyYXdfdW5ib25kZWRgIGZvciB0aGUgcG9vbHMgYWNjb3VudC4gVGhpcyBjYWxsIGNhbiBiZSBtYWRlIGJ5IGFueSBhY2NvdW50LgBBAVRoaXMgaXMgdXNlZnVsIGlmIHRoZXJlIGFyZSB0b28gbWFueSB1bmxvY2tpbmcgY2h1bmtzIHRvIGNhbGwgYHVuYm9uZGAsIGFuZCBzb21lYQFjYW4gYmUgY2xlYXJlZCBieSB3aXRoZHJhd2luZy4gSW4gdGhlIGNhc2UgdGhlcmUgYXJlIHRvbyBtYW55IHVubG9ja2luZyBjaHVua3MsIHRoZSB1c2VyUQF3b3VsZCBwcm9iYWJseSBzZWUgYW4gZXJyb3IgbGlrZSBgTm9Nb3JlQ2h1bmtzYCBlbWl0dGVkIGZyb20gdGhlIHN0YWtpbmcgc3lzdGVtIHdoZW5cdGhleSBhdHRlbXB0IHRvIHVuYm9uZC5Ed2l0aGRyYXdfdW5ib25kZWQIAThtZW1iZXJfYWNjb3VudAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAFIbnVtX3NsYXNoaW5nX3NwYW5zOAEMdTMyAAVYVQFXaXRoZHJhdyB1bmJvbmRlZCBmdW5kcyBmcm9tIGBtZW1iZXJfYWNjb3VudGAuIElmIG5vIGJvbmRlZCBmdW5kcyBjYW4gYmUgdW5ib25kZWQsIGFuSGVycm9yIGlzIHJldHVybmVkLgBNAVVuZGVyIGNlcnRhaW4gY29uZGl0aW9ucywgdGhpcyBjYWxsIGNhbiBiZSBkaXNwYXRjaGVkIHBlcm1pc3Npb25sZXNzbHkgKGkuZS4gYnkgYW55JGFjY291bnQpLgCoIyBDb25kaXRpb25zIGZvciBhIHBlcm1pc3Npb25sZXNzIGRpc3BhdGNoAAkBKiBUaGUgcG9vbCBpcyBpbiBkZXN0cm95IG1vZGUgYW5kIHRoZSB0YXJnZXQgaXMgbm90IHRoZSBkZXBvc2l0b3IuMQEqIFRoZSB0YXJnZXQgaXMgdGhlIGRlcG9zaXRvciBhbmQgdGhleSBhcmUgdGhlIG9ubHkgbWVtYmVyIGluIHRoZSBzdWIgcG9vbHMuDQEqIFRoZSBwb29sIGlzIGJsb2NrZWQgYW5kIHRoZSBjYWxsZXIgaXMgZWl0aGVyIHRoZSByb290IG9yIGJvdW5jZXIuAJgjIENvbmRpdGlvbnMgZm9yIHBlcm1pc3Npb25lZCBkaXNwYXRjaADoKiBUaGUgY2FsbGVyIGlzIHRoZSB0YXJnZXQgYW5kIHRoZXkgYXJlIG5vdCB0aGUgZGVwb3NpdG9yLgAYIyBOb3RlAPQtIElmIHRoZSB0YXJnZXQgaXMgdGhlIGRlcG9zaXRvciwgdGhlIHBvb2wgd2lsbCBiZSBkZXN0cm95ZWQuYQEtIElmIHRoZSBwb29sIGhhcyBhbnkgcGVuZGluZyBzbGFzaCwgd2UgYWxzbyB0cnkgdG8gc2xhc2ggdGhlIG1lbWJlciBiZWZvcmUgbGV0dGluZyB0aGVtXQF3aXRoZHJhdy4gVGhpcyBjYWxjdWxhdGlvbiBhZGRzIHNvbWUgd2VpZ2h0IG92ZXJoZWFkIGFuZCBpcyBvbmx5IGRlZmVuc2l2ZS4gSW4gcmVhbGl0eSxVAXBvb2wgc2xhc2hlcyBtdXN0IGhhdmUgYmVlbiBhbHJlYWR5IGFwcGxpZWQgdmlhIHBlcm1pc3Npb25sZXNzIFtgQ2FsbDo6YXBwbHlfc2xhc2hgXS4YY3JlYXRlEAEYYW1vdW50VQEBMEJhbGFuY2VPZjxUPgABEHJvb3QAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABJG5vbWluYXRvcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEcYm91bmNlcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAZEdENyZWF0ZSBhIG5ldyBkZWxlZ2F0aW9uIHBvb2wuACwjIEFyZ3VtZW50cwBVASogYGFtb3VudGAgLSBUaGUgYW1vdW50IG9mIGZ1bmRzIHRvIGRlbGVnYXRlIHRvIHRoZSBwb29sLiBUaGlzIGFsc28gYWN0cyBvZiBhIHNvcnQgb2ZNASAgZGVwb3NpdCBzaW5jZSB0aGUgcG9vbHMgY3JlYXRvciBjYW5ub3QgZnVsbHkgdW5ib25kIGZ1bmRzIHVudGlsIHRoZSBwb29sIGlzIGJlaW5nMCAgZGVzdHJveWVkLlEBKiBgaW5kZXhgIC0gQSBkaXNhbWJpZ3VhdGlvbiBpbmRleCBmb3IgY3JlYXRpbmcgdGhlIGFjY291bnQuIExpa2VseSBvbmx5IHVzZWZ1bCB3aGVuwCAgY3JlYXRpbmcgbXVsdGlwbGUgcG9vbHMgaW4gdGhlIHNhbWUgZXh0cmluc2ljLtQqIGByb290YCAtIFRoZSBhY2NvdW50IHRvIHNldCBhcyBbYFBvb2xSb2xlczo6cm9vdGBdLg0BKiBgbm9taW5hdG9yYCAtIFRoZSBhY2NvdW50IHRvIHNldCBhcyB0aGUgW2BQb29sUm9sZXM6Om5vbWluYXRvcmBdLvwqIGBib3VuY2VyYCAtIFRoZSBhY2NvdW50IHRvIHNldCBhcyB0aGUgW2BQb29sUm9sZXM6OmJvdW5jZXJgXS4AGCMgTm90ZQBhAUluIGFkZGl0aW9uIHRvIGBhbW91bnRgLCB0aGUgY2FsbGVyIHdpbGwgdHJhbnNmZXIgdGhlIGV4aXN0ZW50aWFsIGRlcG9zaXQ7IHNvIHRoZSBjYWxsZXINAW5lZWRzIGF0IGhhdmUgYXQgbGVhc3QgYGFtb3VudCArIGV4aXN0ZW50aWFsX2RlcG9zaXRgIHRyYW5zZmVyYWJsZS5MY3JlYXRlX3dpdGhfcG9vbF9pZBQBGGFtb3VudFUBATBCYWxhbmNlT2Y8VD4AARByb290AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AASRub21pbmF0b3IAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABHGJvdW5jZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABHHBvb2xfaWQ4ARhQb29sSWQABxjsQ3JlYXRlIGEgbmV3IGRlbGVnYXRpb24gcG9vbCB3aXRoIGEgcHJldmlvdXNseSB1c2VkIHBvb2wgaWQALCMgQXJndW1lbnRzAJhzYW1lIGFzIGBjcmVhdGVgIHdpdGggdGhlIGluY2x1c2lvbiBvZngqIGBwb29sX2lkYCAtIGBBIHZhbGlkIFBvb2xJZC4gbm9taW5hdGUIARxwb29sX2lkOAEYUG9vbElkAAEodmFsaWRhdG9yc2EBAURWZWM8VDo6QWNjb3VudElkPgAIMHxOb21pbmF0ZSBvbiBiZWhhbGYgb2YgdGhlIHBvb2wuAEUBVGhlIGRpc3BhdGNoIG9yaWdpbiBvZiB0aGlzIGNhbGwgbXVzdCBiZSBzaWduZWQgYnkgdGhlIHBvb2wgbm9taW5hdG9yIG9yIHRoZSBwb29sKHJvb3Qgcm9sZS4ARQFUaGlzIGRpcmVjdGx5IGZvcndhcmRzIHRoZSBjYWxsIHRvIGFuIGltcGxlbWVudGF0aW9uIG9mIGBTdGFraW5nSW50ZXJmYWNlYCAoZS5nLixFAWBwYWxsZXQtc3Rha2luZ2ApIHRocm91Z2ggW2BDb25maWc6OlN0YWtlQWRhcHRlcmBdLCBvbiBiZWhhbGYgb2YgdGhlIGJvbmRlZCBwb29sLgAYIyBOb3RlAFkBSW4gYWRkaXRpb24gdG8gYSBgcm9vdGAgb3IgYG5vbWluYXRvcmAgcm9sZSBvZiBgb3JpZ2luYCwgdGhlIHBvb2wncyBkZXBvc2l0b3IgbmVlZHMgdG8NAWhhdmUgYXQgbGVhc3QgYGRlcG9zaXRvcl9taW5fYm9uZGAgaW4gdGhlIHBvb2wgdG8gc3RhcnQgbm9taW5hdGluZy4kc2V0X3N0YXRlCAEccG9vbF9pZDgBGFBvb2xJZAABFHN0YXRlUQUBJFBvb2xTdGF0ZQAJKHRTZXQgYSBuZXcgc3RhdGUgZm9yIHRoZSBwb29sLgBVAUlmIGEgcG9vbCBpcyBhbHJlYWR5IGluIHRoZSBgRGVzdHJveWluZ2Agc3RhdGUsIHRoZW4gdW5kZXIgbm8gY29uZGl0aW9uIGNhbiBpdHMgc3RhdGU0Y2hhbmdlIGFnYWluLgDAVGhlIGRpc3BhdGNoIG9yaWdpbiBvZiB0aGlzIGNhbGwgbXVzdCBiZSBlaXRoZXI6ANwxLiBzaWduZWQgYnkgdGhlIGJvdW5jZXIsIG9yIHRoZSByb290IHJvbGUgb2YgdGhlIHBvb2wsXQEyLiBpZiB0aGUgcG9vbCBjb25kaXRpb25zIHRvIGJlIG9wZW4gYXJlIE5PVCBtZXQgKGFzIGRlc2NyaWJlZCBieSBgb2tfdG9fYmVfb3BlbmApLCBhbmQ5ASAgIHRoZW4gdGhlIHN0YXRlIG9mIHRoZSBwb29sIGNhbiBiZSBwZXJtaXNzaW9ubGVzc2x5IGNoYW5nZWQgdG8gYERlc3Ryb3lpbmdgLjBzZXRfbWV0YWRhdGEIARxwb29sX2lkOAEYUG9vbElkAAEgbWV0YWRhdGEYARxWZWM8dTg+AAoQgFNldCBhIG5ldyBtZXRhZGF0YSBmb3IgdGhlIHBvb2wuAF0BVGhlIGRpc3BhdGNoIG9yaWdpbiBvZiB0aGlzIGNhbGwgbXVzdCBiZSBzaWduZWQgYnkgdGhlIGJvdW5jZXIsIG9yIHRoZSByb290IHJvbGUgb2YgdGhlFHBvb2wuLHNldF9jb25maWdzGAE0bWluX2pvaW5fYm9uZFUFAVhDb25maWdPcDxCYWxhbmNlT2Y8VD4+AAE8bWluX2NyZWF0ZV9ib25kVQUBWENvbmZpZ09wPEJhbGFuY2VPZjxUPj4AASRtYXhfcG9vbHNZBQE0Q29uZmlnT3A8dTMyPgABLG1heF9tZW1iZXJzWQUBNENvbmZpZ09wPHUzMj4AAVBtYXhfbWVtYmVyc19wZXJfcG9vbFkFATRDb25maWdPcDx1MzI+AAFUZ2xvYmFsX21heF9jb21taXNzaW9uXQUBRENvbmZpZ09wPFBlcmJpbGw+AAssQQFVcGRhdGUgY29uZmlndXJhdGlvbnMgZm9yIHRoZSBub21pbmF0aW9uIHBvb2xzLiBUaGUgb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZWBbYENvbmZpZzo6QWRtaW5PcmlnaW5gXS4ALCMgQXJndW1lbnRzAKAqIGBtaW5fam9pbl9ib25kYCAtIFNldCBbYE1pbkpvaW5Cb25kYF0usCogYG1pbl9jcmVhdGVfYm9uZGAgLSBTZXQgW2BNaW5DcmVhdGVCb25kYF0uhCogYG1heF9wb29sc2AgLSBTZXQgW2BNYXhQb29sc2BdLqQqIGBtYXhfbWVtYmVyc2AgLSBTZXQgW2BNYXhQb29sTWVtYmVyc2BdLuQqIGBtYXhfbWVtYmVyc19wZXJfcG9vbGAgLSBTZXQgW2BNYXhQb29sTWVtYmVyc1BlclBvb2xgXS7gKiBgZ2xvYmFsX21heF9jb21taXNzaW9uYCAtIFNldCBbYEdsb2JhbE1heENvbW1pc3Npb25gXS4wdXBkYXRlX3JvbGVzEAEccG9vbF9pZDgBGFBvb2xJZAABIG5ld19yb290YQUBWENvbmZpZ09wPFQ6OkFjY291bnRJZD4AATRuZXdfbm9taW5hdG9yYQUBWENvbmZpZ09wPFQ6OkFjY291bnRJZD4AASxuZXdfYm91bmNlcmEFAVhDb25maWdPcDxUOjpBY2NvdW50SWQ+AAwcdFVwZGF0ZSB0aGUgcm9sZXMgb2YgdGhlIHBvb2wuAD0BVGhlIHJvb3QgaXMgdGhlIG9ubHkgZW50aXR5IHRoYXQgY2FuIGNoYW5nZSBhbnkgb2YgdGhlIHJvbGVzLCBpbmNsdWRpbmcgaXRzZWxmLLhleGNsdWRpbmcgdGhlIGRlcG9zaXRvciwgd2hvIGNhbiBuZXZlciBjaGFuZ2UuAFEBSXQgZW1pdHMgYW4gZXZlbnQsIG5vdGlmeWluZyBVSXMgb2YgdGhlIHJvbGUgY2hhbmdlLiBUaGlzIGV2ZW50IGlzIHF1aXRlIHJlbGV2YW50IHRvHQFtb3N0IHBvb2wgbWVtYmVycyBhbmQgdGhleSBzaG91bGQgYmUgaW5mb3JtZWQgb2YgY2hhbmdlcyB0byBwb29sIHJvbGVzLhRjaGlsbAQBHHBvb2xfaWQ4ARhQb29sSWQADURwQ2hpbGwgb24gYmVoYWxmIG9mIHRoZSBwb29sLgBBAVRoZSBkaXNwYXRjaCBvcmlnaW4gb2YgdGhpcyBjYWxsIGNhbiBiZSBzaWduZWQgYnkgdGhlIHBvb2wgbm9taW5hdG9yIG9yIHRoZSBwb29soHJvb3Qgcm9sZSwgc2FtZSBhcyBbYFBhbGxldDo6bm9taW5hdGVgXS4ARQFUaGlzIGRpcmVjdGx5IGZvcndhcmRzIHRoZSBjYWxsIHRvIGFuIGltcGxlbWVudGF0aW9uIG9mIGBTdGFraW5nSW50ZXJmYWNlYCAoZS5nLixFAWBwYWxsZXQtc3Rha2luZ2ApIHRocm91Z2ggW2BDb25maWc6OlN0YWtlQWRhcHRlcmBdLCBvbiBiZWhhbGYgb2YgdGhlIGJvbmRlZCBwb29sLgBNAVVuZGVyIGNlcnRhaW4gY29uZGl0aW9ucywgdGhpcyBjYWxsIGNhbiBiZSBkaXNwYXRjaGVkIHBlcm1pc3Npb25sZXNzbHkgKGkuZS4gYnkgYW55JGFjY291bnQpLgCsIyBDb25kaXRpb25zIGZvciBhIHBlcm1pc3Npb25sZXNzIGRpc3BhdGNoOlUBKiBXaGVuIHBvb2wgZGVwb3NpdG9yIGhhcyBsZXNzIHRoYW4gYE1pbk5vbWluYXRvckJvbmRgIHN0YWtlZCwgb3RoZXJ3aXNlIHBvb2wgbWVtYmVyc1wgIGFyZSB1bmFibGUgdG8gdW5ib25kLgCcIyBDb25kaXRpb25zIGZvciBwZXJtaXNzaW9uZWQgZGlzcGF0Y2g6tCogVGhlIGNhbGxlciBpcyB0aGUgcG9vbCdzIG5vbWluYXRvciBvciByb290LkBib25kX2V4dHJhX290aGVyCAEYbWVtYmVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARRleHRyYU0FAVxCb25kRXh0cmE8QmFsYW5jZU9mPFQ+PgAOJFUBYG9yaWdpbmAgYm9uZHMgZnVuZHMgZnJvbSBgZXh0cmFgIGZvciBzb21lIHBvb2wgbWVtYmVyIGBtZW1iZXJgIGludG8gdGhlaXIgcmVzcGVjdGl2ZRhwb29scy4ASQFgb3JpZ2luYCBjYW4gYm9uZCBleHRyYSBmdW5kcyBmcm9tIGZyZWUgYmFsYW5jZSBvciBwZW5kaW5nIHJld2FyZHMgd2hlbiBgb3JpZ2luID09HG90aGVyYC4ARQFJbiB0aGUgY2FzZSBvZiBgb3JpZ2luICE9IG90aGVyYCwgYG9yaWdpbmAgY2FuIG9ubHkgYm9uZCBleHRyYSBwZW5kaW5nIHJld2FyZHMgb2YVAWBvdGhlcmAgbWVtYmVycyBhc3N1bWluZyBzZXRfY2xhaW1fcGVybWlzc2lvbiBmb3IgdGhlIGdpdmVuIG1lbWJlciBpc8BgUGVybWlzc2lvbmxlc3NDb21wb3VuZGAgb3IgYFBlcm1pc3Npb25sZXNzQWxsYC5Qc2V0X2NsYWltX3Blcm1pc3Npb24EAShwZXJtaXNzaW9uZQUBPENsYWltUGVybWlzc2lvbgAPHEkBQWxsb3dzIGEgcG9vbCBtZW1iZXIgdG8gc2V0IGEgY2xhaW0gcGVybWlzc2lvbiB0byBhbGxvdyBvciBkaXNhbGxvdyBwZXJtaXNzaW9ubGVzc2Bib25kaW5nIGFuZCB3aXRoZHJhd2luZy4ALCMgQXJndW1lbnRzAHgqIGBvcmlnaW5gIC0gTWVtYmVyIG9mIGEgcG9vbC64KiBgcGVybWlzc2lvbmAgLSBUaGUgcGVybWlzc2lvbiB0byBiZSBhcHBsaWVkLkhjbGFpbV9wYXlvdXRfb3RoZXIEARRvdGhlcgQBMFQ6OkFjY291bnRJZAAQEAEBYG9yaWdpbmAgY2FuIGNsYWltIHBheW91dHMgb24gc29tZSBwb29sIG1lbWJlciBgb3RoZXJgJ3MgYmVoYWxmLgBVAVBvb2wgbWVtYmVyIGBvdGhlcmAgbXVzdCBoYXZlIGEgYFBlcm1pc3Npb25sZXNzV2l0aGRyYXdgIG9yIGBQZXJtaXNzaW9ubGVzc0FsbGAgY2xhaW2ocGVybWlzc2lvbiBmb3IgdGhpcyBjYWxsIHRvIGJlIHN1Y2Nlc3NmdWwuOHNldF9jb21taXNzaW9uCAEccG9vbF9pZDgBGFBvb2xJZAABOG5ld19jb21taXNzaW9uaQUBfE9wdGlvbjwoUGVyYmlsbCwgVDo6QWNjb3VudElkKT4AERR0U2V0IHRoZSBjb21taXNzaW9uIG9mIGEgcG9vbC5VAUJvdGggYSBjb21taXNzaW9uIHBlcmNlbnRhZ2UgYW5kIGEgY29tbWlzc2lvbiBwYXllZSBtdXN0IGJlIHByb3ZpZGVkIGluIHRoZSBgY3VycmVudGBdAXR1cGxlLiBXaGVyZSBhIGBjdXJyZW50YCBvZiBgTm9uZWAgaXMgcHJvdmlkZWQsIGFueSBjdXJyZW50IGNvbW1pc3Npb24gd2lsbCBiZSByZW1vdmVkLgBNAS0gSWYgYSBgTm9uZWAgaXMgc3VwcGxpZWQgdG8gYG5ld19jb21taXNzaW9uYCwgZXhpc3RpbmcgY29tbWlzc2lvbiB3aWxsIGJlIHJlbW92ZWQuSHNldF9jb21taXNzaW9uX21heAgBHHBvb2xfaWQ4ARhQb29sSWQAAThtYXhfY29tbWlzc2lvbqEBARxQZXJiaWxsABIUlFNldCB0aGUgbWF4aW11bSBjb21taXNzaW9uIG9mIGEgcG9vbC4AOQEtIEluaXRpYWwgbWF4IGNhbiBiZSBzZXQgdG8gYW55IGBQZXJiaWxsYCwgYW5kIG9ubHkgc21hbGxlciB2YWx1ZXMgdGhlcmVhZnRlci41AS0gQ3VycmVudCBjb21taXNzaW9uIHdpbGwgYmUgbG93ZXJlZCBpbiB0aGUgZXZlbnQgaXQgaXMgaGlnaGVyIHRoYW4gYSBuZXcgbWF4NCAgY29tbWlzc2lvbi5oc2V0X2NvbW1pc3Npb25fY2hhbmdlX3JhdGUIARxwb29sX2lkOAEYUG9vbElkAAEsY2hhbmdlX3JhdGVxBQGcQ29tbWlzc2lvbkNoYW5nZVJhdGU8QmxvY2tOdW1iZXJGb3I8VD4+ABMQqFNldCB0aGUgY29tbWlzc2lvbiBjaGFuZ2UgcmF0ZSBmb3IgYSBwb29sLgA9AUluaXRpYWwgY2hhbmdlIHJhdGUgaXMgbm90IGJvdW5kZWQsIHdoZXJlYXMgc3Vic2VxdWVudCB1cGRhdGVzIGNhbiBvbmx5IGJlIG1vcmV0cmVzdHJpY3RpdmUgdGhhbiB0aGUgY3VycmVudC5AY2xhaW1fY29tbWlzc2lvbgQBHHBvb2xfaWQ4ARhQb29sSWQAFEBkQ2xhaW0gcGVuZGluZyBjb21taXNzaW9uLgA9AVRoZSBgcm9vdGAgcm9sZSBvZiB0aGUgcG9vbCBpcyBfYWx3YXlzXyBhbGxvd2VkIHRvIGNsYWltIHRoZSBwb29sJ3MgY29tbWlzc2lvbi4AVQFJZiB0aGUgcG9vbCBoYXMgc2V0IGBDb21taXNzaW9uQ2xhaW1QZXJtaXNzaW9uOjpQZXJtaXNzaW9ubGVzc2AsIHRoZW4gYW55IGFjY291bnQgY2Fu2HRyaWdnZXIgdGhlIHByb2Nlc3Mgb2YgY2xhaW1pbmcgdGhlIHBvb2wncyBjb21taXNzaW9uLgBBAUlmIHRoZSBwb29sIGhhcyBzZXQgaXRzIGBDb21taXNzaW9uQ2xhaW1QZXJtaXNzaW9uYCB0byBgQWNjb3VudChhY2MpYCwgdGhlbiBvbmx5IGFjY291bnRzMCogYGFjY2AsIGFuZGQqIHRoZSBwb29sJ3Mgcm9vdCBhY2NvdW50ALhtYXkgY2FsbCB0aGlzIGV4dHJpbnNpYyBvbiBiZWhhbGYgb2YgdGhlIHBvb2wuAC0BUGVuZGluZyBjb21taXNzaW9ucyBhcmUgcGFpZCBvdXQgYW5kIGFkZGVkIHRvIHRoZSB0b3RhbCBjbGFpbWVkIGNvbW1pc3Npb24uuFRoZSB0b3RhbCBwZW5kaW5nIGNvbW1pc3Npb24gaXMgcmVzZXQgdG8gemVyby5MYWRqdXN0X3Bvb2xfZGVwb3NpdAQBHHBvb2xfaWQ4ARhQb29sSWQAFRzsVG9wIHVwIHRoZSBkZWZpY2l0IG9yIHdpdGhkcmF3IHRoZSBleGNlc3MgRUQgZnJvbSB0aGUgcG9vbC4AUQFXaGVuIGEgcG9vbCBpcyBjcmVhdGVkLCB0aGUgcG9vbCBkZXBvc2l0b3IgdHJhbnNmZXJzIEVEIHRvIHRoZSByZXdhcmQgYWNjb3VudCBvZiB0aGVVAXBvb2wuIEVEIGlzIHN1YmplY3QgdG8gY2hhbmdlIGFuZCBvdmVyIHRpbWUsIHRoZSBkZXBvc2l0IGluIHRoZSByZXdhcmQgYWNjb3VudCBtYXkgYmVRAWluc3VmZmljaWVudCB0byBjb3ZlciB0aGUgRUQgZGVmaWNpdCBvZiB0aGUgcG9vbCBvciB2aWNlLXZlcnNhIHdoZXJlIHRoZXJlIGlzIGV4Y2VzczEBZGVwb3NpdCB0byB0aGUgcG9vbC4gVGhpcyBjYWxsIGFsbG93cyBhbnlvbmUgdG8gYWRqdXN0IHRoZSBFRCBkZXBvc2l0IG9mIHRoZfRwb29sIGJ5IGVpdGhlciB0b3BwaW5nIHVwIHRoZSBkZWZpY2l0IG9yIGNsYWltaW5nIHRoZSBleGNlc3MufHNldF9jb21taXNzaW9uX2NsYWltX3Blcm1pc3Npb24IARxwb29sX2lkOAEYUG9vbElkAAEocGVybWlzc2lvbnUFAbxPcHRpb248Q29tbWlzc2lvbkNsYWltUGVybWlzc2lvbjxUOjpBY2NvdW50SWQ+PgAWEMxTZXQgb3IgcmVtb3ZlIGEgcG9vbCdzIGNvbW1pc3Npb24gY2xhaW0gcGVybWlzc2lvbi4AYQFEZXRlcm1pbmVzIHdobyBjYW4gY2xhaW0gdGhlIHBvb2wncyBwZW5kaW5nIGNvbW1pc3Npb24uIE9ubHkgdGhlIGBSb290YCByb2xlIG9mIHRoZSBwb29syGlzIGFibGUgdG8gY29uZmlndXJlIGNvbW1pc3Npb24gY2xhaW0gcGVybWlzc2lvbnMuLGFwcGx5X3NsYXNoBAE4bWVtYmVyX2FjY291bnQAAVBBY2NvdW50SWRMb29rdXBPZjxUPgAXJIhBcHBseSBhIHBlbmRpbmcgc2xhc2ggb24gYSBtZW1iZXIuACUBRmFpbHMgdW5sZXNzIFtgY3JhdGU6OnBhbGxldDo6Q29uZmlnOjpTdGFrZUFkYXB0ZXJgXSBpcyBvZiBzdHJhdGVneSB0eXBlOqRbYGFkYXB0ZXI6OlN0YWtlU3RyYXRlZ3lUeXBlOjpEZWxlZ2F0ZWBdLgBdAVRoZSBwZW5kaW5nIHNsYXNoIGFtb3VudCBvZiB0aGUgbWVtYmVyIG11c3QgYmUgZXF1YWwgb3IgbW9yZSB0aGFuIGBFeGlzdGVudGlhbERlcG9zaXRgLlEBVGhpcyBjYWxsIGNhbiBiZSBkaXNwYXRjaGVkIHBlcm1pc3Npb25sZXNzbHkgKGkuZS4gYnkgYW55IGFjY291bnQpLiBJZiB0aGUgZXhlY3V0aW9uSQFpcyBzdWNjZXNzZnVsLCBmZWUgaXMgcmVmdW5kZWQgYW5kIGNhbGxlciBtYXkgYmUgcmV3YXJkZWQgd2l0aCBhIHBhcnQgb2YgdGhlIHNsYXNoDQFiYXNlZCBvbiB0aGUgW2BjcmF0ZTo6cGFsbGV0OjpDb25maWc6OlN0YWtlQWRhcHRlcmBdIGNvbmZpZ3VyYXRpb24uSG1pZ3JhdGVfZGVsZWdhdGlvbgQBOG1lbWJlcl9hY2NvdW50AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AGCQdAU1pZ3JhdGVzIGRlbGVnYXRlZCBmdW5kcyBmcm9tIHRoZSBwb29sIGFjY291bnQgdG8gdGhlIGBtZW1iZXJfYWNjb3VudGAuACUBRmFpbHMgdW5sZXNzIFtgY3JhdGU6OnBhbGxldDo6Q29uZmlnOjpTdGFrZUFkYXB0ZXJgXSBpcyBvZiBzdHJhdGVneSB0eXBlOqRbYGFkYXB0ZXI6OlN0YWtlU3RyYXRlZ3lUeXBlOjpEZWxlZ2F0ZWBdLgApAVRoaXMgaXMgYSBwZXJtaXNzaW9uLWxlc3MgY2FsbCBhbmQgcmVmdW5kcyBhbnkgZmVlIGlmIGNsYWltIGlzIHN1Y2Nlc3NmdWwuAF0BSWYgdGhlIHBvb2wgaGFzIG1pZ3JhdGVkIHRvIGRlbGVnYXRpb24gYmFzZWQgc3Rha2luZywgdGhlIHN0YWtlZCB0b2tlbnMgb2YgcG9vbCBtZW1iZXJzKQFjYW4gYmUgbW92ZWQgYW5kIGhlbGQgaW4gdGhlaXIgb3duIGFjY291bnQuIFNlZSBbYGFkYXB0ZXI6OkRlbGVnYXRlU3Rha2VgXXhtaWdyYXRlX3Bvb2xfdG9fZGVsZWdhdGVfc3Rha2UEARxwb29sX2lkOAEYUG9vbElkABkk9E1pZ3JhdGUgcG9vbCBmcm9tIFtgYWRhcHRlcjo6U3Rha2VTdHJhdGVneVR5cGU6OlRyYW5zZmVyYF0gdG+kW2BhZGFwdGVyOjpTdGFrZVN0cmF0ZWd5VHlwZTo6RGVsZWdhdGVgXS4AJQFGYWlscyB1bmxlc3MgW2BjcmF0ZTo6cGFsbGV0OjpDb25maWc6OlN0YWtlQWRhcHRlcmBdIGlzIG9mIHN0cmF0ZWd5IHR5cGU6pFtgYWRhcHRlcjo6U3Rha2VTdHJhdGVneVR5cGU6OkRlbGVnYXRlYF0uAEEBVGhpcyBjYWxsIGNhbiBiZSBkaXNwYXRjaGVkIHBlcm1pc3Npb25sZXNzbHksIGFuZCByZWZ1bmRzIGFueSBmZWUgaWYgc3VjY2Vzc2Z1bC4ASQFJZiB0aGUgcG9vbCBoYXMgYWxyZWFkeSBtaWdyYXRlZCB0byBkZWxlZ2F0aW9uIGJhc2VkIHN0YWtpbmcsIHRoaXMgY2FsbCB3aWxsIGZhaWwuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLk0FCFxwYWxsZXRfbm9taW5hdGlvbl9wb29scyRCb25kRXh0cmEEHEJhbGFuY2UBWQEBCCxGcmVlQmFsYW5jZQQAWQEBHEJhbGFuY2UAAAAcUmV3YXJkcwABAABRBQhccGFsbGV0X25vbWluYXRpb25fcG9vbHMkUG9vbFN0YXRlAAEMEE9wZW4AAAAcQmxvY2tlZAABAChEZXN0cm95aW5nAAIAAFUFCFxwYWxsZXRfbm9taW5hdGlvbl9wb29scyBDb25maWdPcAQEVAFZAQEMEE5vb3AAAAAMU2V0BABZAQEEVAABABhSZW1vdmUAAgAAWQUIXHBhbGxldF9ub21pbmF0aW9uX3Bvb2xzIENvbmZpZ09wBARUATgBDBBOb29wAAAADFNldAQAOAEEVAABABhSZW1vdmUAAgAAXQUIXHBhbGxldF9ub21pbmF0aW9uX3Bvb2xzIENvbmZpZ09wBARUAaEBAQwQTm9vcAAAAAxTZXQEAKEBAQRUAAEAGFJlbW92ZQACAABhBQhccGFsbGV0X25vbWluYXRpb25fcG9vbHMgQ29uZmlnT3AEBFQBBAEMEE5vb3AAAAAMU2V0BAAEAQRUAAEAGFJlbW92ZQACAABlBQhccGFsbGV0X25vbWluYXRpb25fcG9vbHM8Q2xhaW1QZXJtaXNzaW9uAAEQMFBlcm1pc3Npb25lZAAAAFhQZXJtaXNzaW9ubGVzc0NvbXBvdW5kAAEAWFBlcm1pc3Npb25sZXNzV2l0aGRyYXcAAgBEUGVybWlzc2lvbmxlc3NBbGwAAwAAaQUEGE9wdGlvbgQEVAFtBQEIEE5vbmUAAAAQU29tZQQAbQUAAAEAAG0FAAAECKEBBABxBQhccGFsbGV0X25vbWluYXRpb25fcG9vbHNQQ29tbWlzc2lvbkNoYW5nZVJhdGUELEJsb2NrTnVtYmVyATgACAEwbWF4X2luY3JlYXNloQEBHFBlcmJpbGwAASRtaW5fZGVsYXk4ASxCbG9ja051bWJlcgAAdQUEGE9wdGlvbgQEVAF5BQEIEE5vbmUAAAAQU29tZQQAeQUAAAEAAHkFCFxwYWxsZXRfbm9taW5hdGlvbl9wb29sc2RDb21taXNzaW9uQ2xhaW1QZXJtaXNzaW9uBCRBY2NvdW50SWQBBAEIOFBlcm1pc3Npb25sZXNzAAAAHEFjY291bnQEAAQBJEFjY291bnRJZAABAAB9BQxAcGFsbGV0X2JhZ3NfbGlzdBhwYWxsZXQQQ2FsbAgEVAAESQABDBRyZWJhZwQBKGRpc2xvY2F0ZWQAAVBBY2NvdW50SWRMb29rdXBPZjxUPgAAKFkBRGVjbGFyZSB0aGF0IHNvbWUgYGRpc2xvY2F0ZWRgIGFjY291bnQgaGFzLCB0aHJvdWdoIHJld2FyZHMgb3IgcGVuYWx0aWVzLCBzdWZmaWNpZW50bHlRAWNoYW5nZWQgaXRzIHNjb3JlIHRoYXQgaXQgc2hvdWxkIHByb3Blcmx5IGZhbGwgaW50byBhIGRpZmZlcmVudCBiYWcgdGhhbiBpdHMgY3VycmVudBBvbmUuAB0BQW55b25lIGNhbiBjYWxsIHRoaXMgZnVuY3Rpb24gYWJvdXQgYW55IHBvdGVudGlhbGx5IGRpc2xvY2F0ZWQgYWNjb3VudC4ASQFXaWxsIGFsd2F5cyB1cGRhdGUgdGhlIHN0b3JlZCBzY29yZSBvZiBgZGlzbG9jYXRlZGAgdG8gdGhlIGNvcnJlY3Qgc2NvcmUsIGJhc2VkIG9uQGBTY29yZVByb3ZpZGVyYC4A1ElmIGBkaXNsb2NhdGVkYCBkb2VzIG5vdCBleGlzdHMsIGl0IHJldHVybnMgYW4gZXJyb3IuPHB1dF9pbl9mcm9udF9vZgQBHGxpZ2h0ZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABKNBNb3ZlIHRoZSBjYWxsZXIncyBJZCBkaXJlY3RseSBpbiBmcm9udCBvZiBgbGlnaHRlcmAuAFkBVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8gYW5kIGNhbiBvbmx5IGJlIGNhbGxlZCBieSB0aGUgSWQgb2Y1AXRoZSBhY2NvdW50IGdvaW5nIGluIGZyb250IG9mIGBsaWdodGVyYC4gRmVlIGlzIHBheWVkIGJ5IHRoZSBvcmlnaW4gdW5kZXIgYWxsOGNpcmN1bXN0YW5jZXMuADhPbmx5IHdvcmtzIGlmOgCULSBib3RoIG5vZGVzIGFyZSB3aXRoaW4gdGhlIHNhbWUgYmFnLNAtIGFuZCBgb3JpZ2luYCBoYXMgYSBncmVhdGVyIGBTY29yZWAgdGhhbiBgbGlnaHRlcmAuVHB1dF9pbl9mcm9udF9vZl9vdGhlcggBHGhlYXZpZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABHGxpZ2h0ZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgACDBEBU2FtZSBhcyBbYFBhbGxldDo6cHV0X2luX2Zyb250X29mYF0sIGJ1dCBpdCBjYW4gYmUgY2FsbGVkIGJ5IGFueW9uZS4AyEZlZSBpcyBwYWlkIGJ5IHRoZSBvcmlnaW4gdW5kZXIgYWxsIGNpcmN1bXN0YW5jZXMuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLoEFDHhwYWxsZXRfc3Rha2luZ19hc3luY19yY19jbGllbnQYcGFsbGV0EENhbGwEBFQAARBQcmVsYXlfc2Vzc2lvbl9yZXBvcnQEARhyZXBvcnSFBQFsU2Vzc2lvblJlcG9ydDxUOjpBY2NvdW50SWQ+AAAEBQFDYWxsZWQgdG8gaW5kaWNhdGUgdGhlIHN0YXJ0IG9mIGEgbmV3IHNlc3Npb24gb24gdGhlIHJlbGF5IGNoYWluLlxyZWxheV9uZXdfb2ZmZW5jZV9wYWdlZAQBIG9mZmVuY2VzmQUBqFZlYzwoU2Vzc2lvbkluZGV4LCBPZmZlbmNlPFQ6OkFjY291bnRJZD4pPgABACBzZXRfa2V5cwwBEGtleXMYARxWZWM8dTg+AAEUcHJvb2YYARxWZWM8dTg+AAGUbWF4X2RlbGl2ZXJ5X2FuZF9yZW1vdGVfZXhlY3V0aW9uX2ZlZWUEAVBPcHRpb248QmFsYW5jZU9mPFQ+PgAKfFUBU2V0IHNlc3Npb24ga2V5cyBmb3IgYSB2YWxpZGF0b3IuIEtleXMgYXJlIHZhbGlkYXRlZCBvbiBBc3NldEh1YiBhbmQgZm9yd2FyZGVkIHRvIFJDLgBVAU9uIHRoZSBmaXJzdCBjYWxsLCBhIGRlcG9zaXQgb2YgYEtleURlcG9zaXRgIGlzIGhlbGQgZnJvbSB0aGUgc3Rhc2guIFN1YnNlcXVlbnQgY2FsbHP0ZG8gbm90IGNoYXJnZSBhZ2Fpbi4gVGhlIGRlcG9zaXQgaXMgcmVsZWFzZWQgb24gYHB1cmdlX2tleXNgLgBsKipWYWxpZGF0aW9uIG9uIEFzc2V0SHViOioqTQEtIEtleXMgYXJlIGRlY29kZWQgYXMgYFQ6OlJlbGF5Q2hhaW5TZXNzaW9uS2V5c2AgdG8gZW5zdXJlIHRoZXkgbWF0Y2ggUkMncyBleHBlY3RlZCQgIGZvcm1hdC4xAS0gT3duZXJzaGlwIHByb29mIGlzIHZhbGlkYXRlZCB1c2luZyBgT3BhcXVlS2V5czo6b3duZXJzaGlwX3Byb29mX2lzX3ZhbGlkYC4AQQFJZiB2YWxpZGF0aW9uIHBhc3Nlcywgb25seSB0aGUgdmFsaWRhdGVkIGtleXMgYXJlIHNlbnQgdG8gUkMgKHdpdGggZW1wdHkgcHJvb2YpLIBzaW5jZSBSQyB0cnVzdHMgQUgncyB2YWxpZGF0aW9uLgAkKipGZWVzOioqVQFUaGUgYWN0dWFsIGNvc3Qgb2YgdGhpcyBjYWxsIGlzIGhpZ2hlciB0aGFuIHdoYXQgdGhlIHdlaWdodC1iYXNlZCBmZWUgZXN0aW1hdGUgc2hvd3MuUQFJbiBhZGRpdGlvbiB0byB0aGUgbG9jYWwgdHJhbnNhY3Rpb24gd2VpZ2h0IGZlZSwgdGhlIHN0YXNoIGFjY291bnQgaXMgY2hhcmdlZCBhbiBYQ01JAWZlZSAoZGVsaXZlcnkgKyBSQyBleGVjdXRpb24gY29zdCkgdmlhIGBYY21FeGVjdXRvcjo6Y2hhcmdlX2ZlZXNgLiBUaGUgcmVsYXkgY2hhaW49AXVzZXMgYFVucGFpZEV4ZWN1dGlvbmAsIHNvIHRoZSBmdWxsIHJlbW90ZSBjb3N0IGlzIGNoYXJnZWQgdXBmcm9udCBvbiBBc3NldEh1Yi4ALQFXaGVuIGNhbGxlZCB2aWEgYSBzdGFraW5nIHByb3h5LCB0aGUgcHJveHkgcGF5cyB0aGUgdHJhbnNhY3Rpb24gd2VpZ2h0IGZlZSzYd2hpbGUgdGhlIHN0YXNoIChkZWxlZ2F0aW5nIGFjY291bnQpIHBheXMgdGhlIFhDTSBmZWUuAEgqKk1heCBGZWUgTGltaXQ6KipFAVVzZXJzIGNhbiBvcHRpb25hbGx5IHNwZWNpZnkgYG1heF9kZWxpdmVyeV9hbmRfcmVtb3RlX2V4ZWN1dGlvbl9mZWVgIHRvIGxpbWl0IHRoZV0BZGVsaXZlcnkgKyBSQyBleGVjdXRpb24gZmVlLiBUaGlzIGRvZXMgbm90IGluY2x1ZGUgdGhlIGxvY2FsIHRyYW5zYWN0aW9uIHdlaWdodCBmZWUuIElmXQF0aGUgZmVlIGV4Y2VlZHMgdGhpcyBsaW1pdCwgdGhlIG9wZXJhdGlvbiBmYWlscyB3aXRoIGBGZWVzRXhjZWVkZWRNYXhgLiBQYXNzIGBOb25lYCBmb3JMdW5saW1pdGVkIChubyBjYXApLgBZAU5PVEU6IHVubGlrZSB0aGUgY3VycmVudCBmbG93IGZvciBuZXcgdmFsaWRhdG9ycyBvbiBSQyAoYm9uZCAtPiBzZXRfa2V5cyAtPiB2YWxpZGF0ZSksVQF1c2VycyBvbiBBc3NldCBIdWIgTVVTVCBjYWxsIGJvbmQgYW5kIHZhbGlkYXRlIEJFRk9SRSBjYWxsaW5nIHNldF9rZXlzLiBBdHRlbXB0aW5nIHRvJQFzZXQga2V5cyBiZWZvcmUgZGVjbGFyaW5nIGludGVudCB0byB2YWxpZGF0ZSB3aWxsIGZhaWwgd2l0aCBOb3RWYWxpZGF0b3IuKHB1cmdlX2tleXMEAZRtYXhfZGVsaXZlcnlfYW5kX3JlbW90ZV9leGVjdXRpb25fZmVlZQQBUE9wdGlvbjxCYWxhbmNlT2Y8VD4+AAtoAQFSZW1vdmUgc2Vzc2lvbiBrZXlzIGZvciBhIHZhbGlkYXRvciBhbmQgcmVsZWFzZSB0aGUga2V5IGRlcG9zaXQuAKhUaGlzIHB1cmdlcyB0aGUga2V5cyBmcm9tIHRoZSBSZWxheSBDaGFpbi4ARQFVbmxpa2UgYHNldF9rZXlzYCwgdGhpcyBkb2VzIG5vdCByZXF1aXJlIHRoZSBjYWxsZXIgdG8gYmUgYSByZWdpc3RlcmVkIHZhbGlkYXRvci5JAVRoaXMgaXMgaW50ZW50aW9uYWw6IGEgdmFsaWRhdG9yIHdobyBoYXMgY2hpbGxlZCAoc3RvcHBlZCB2YWxpZGF0aW5nKSBzaG91bGQgc3RpbGw5AWJlIGFibGUgdG8gcHVyZ2UgdGhlaXIgc2Vzc2lvbiBrZXlzLiBUaGlzIG1hdGNoZXMgdGhlIGJlaGF2aW9yIG9mIHRoZSBvcmlnaW5hbPBgcGFsbGV0LXNlc3Npb246OnB1cmdlX2tleXNgIHdoaWNoIGFsbG93cyBhbnlvbmUgdG8gY2FsbCBpdC4AOQFUaGUgUmVsYXkgQ2hhaW4gd2lsbCByZWplY3QgdGhlIGNhbGwgd2l0aCBgTm9LZXlzYCBlcnJvciBpZiB0aGUgYWNjb3VudCBoYXMgbm8ka2V5cyBzZXQuACQqKkZlZXM6KipVAVRoZSBhY3R1YWwgY29zdCBvZiB0aGlzIGNhbGwgaXMgaGlnaGVyIHRoYW4gd2hhdCB0aGUgd2VpZ2h0LWJhc2VkIGZlZSBlc3RpbWF0ZSBzaG93cy5FAUluIGFkZGl0aW9uIHRvIHRoZSBsb2NhbCB0cmFuc2FjdGlvbiB3ZWlnaHQgZmVlLCB0aGUgY2FsbGVyIGlzIGNoYXJnZWQgYW4gWENNIGZlZU0BKGRlbGl2ZXJ5ICsgUkMgZXhlY3V0aW9uIGNvc3QpIHZpYSBgWGNtRXhlY3V0b3I6OmNoYXJnZV9mZWVzYC4gVGhlIHJlbGF5IGNoYWluIHVzZXMpAWBVbnBhaWRFeGVjdXRpb25gLCBzbyB0aGUgZnVsbCByZW1vdGUgY29zdCBpcyBjaGFyZ2VkIHVwZnJvbnQgb24gQXNzZXRIdWIuAC0BV2hlbiBjYWxsZWQgdmlhIGEgc3Rha2luZyBwcm94eSwgdGhlIHByb3h5IHBheXMgdGhlIHRyYW5zYWN0aW9uIHdlaWdodCBmZWUsuHdoaWxlIHRoZSBkZWxlZ2F0aW5nIGFjY291bnQgcGF5cyB0aGUgWENNIGZlZS4ASCoqTWF4IEZlZSBMaW1pdDoqKkUBVXNlcnMgY2FuIG9wdGlvbmFsbHkgc3BlY2lmeSBgbWF4X2RlbGl2ZXJ5X2FuZF9yZW1vdGVfZXhlY3V0aW9uX2ZlZWAgdG8gbGltaXQgdGhlXQFkZWxpdmVyeSArIFJDIGV4ZWN1dGlvbiBmZWUuIFRoaXMgZG9lcyBub3QgaW5jbHVkZSB0aGUgbG9jYWwgdHJhbnNhY3Rpb24gd2VpZ2h0IGZlZS4gSWZdAXRoZSBmZWUgZXhjZWVkcyB0aGlzIGxpbWl0LCB0aGUgb3BlcmF0aW9uIGZhaWxzIHdpdGggYEZlZXNFeGNlZWRlZE1heGAuIFBhc3MgYE5vbmVgIGZvckx1bmxpbWl0ZWQgKG5vIGNhcCkuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLoUFCHhwYWxsZXRfc3Rha2luZ19hc3luY19yY19jbGllbnQ0U2Vzc2lvblJlcG9ydAQkQWNjb3VudElkAQQAEAEkZW5kX2luZGV4OAEwU2Vzc2lvbkluZGV4AAFAdmFsaWRhdG9yX3BvaW50c4kFAVRWZWM8KEFjY291bnRJZCwgdTMyKT4AAVBhY3RpdmF0aW9uX3RpbWVzdGFtcJEFAUhPcHRpb248KHU2NCwgdTMyKT4AASBsZWZ0b3Zlcl0BARBib29sAACJBQAAAo0FAI0FAAAECAQ4AJEFBBhPcHRpb24EBFQBlQUBCBBOb25lAAAAEFNvbWUEAJUFAAABAACVBQAABAgoOACZBQAAAp0FAJ0FAAAECDihBQChBQh4cGFsbGV0X3N0YWtpbmdfYXN5bmNfcmNfY2xpZW50HE9mZmVuY2UEJEFjY291bnRJZAEEAAwBIG9mZmVuZGVyBAEkQWNjb3VudElkAAEkcmVwb3J0ZXJzYQEBOFZlYzxBY2NvdW50SWQ+AAE4c2xhc2hfZnJhY3Rpb26hAQEcUGVyYmlsbAAApQUMkHBhbGxldF9lbGVjdGlvbl9wcm92aWRlcl9tdWx0aV9ibG9jaxhwYWxsZXQQQ2FsbAQEVAABCBhtYW5hZ2UEAQhvcKkFAUxNYW5hZ2VyT3BlcmF0aW9uPFQ+AAAUTE1hbmFnZSB0aGlzIHBhbGxldC4A6FRoZSBvcmlnaW4gb2YgdGhpcyBjYWxsIG11c3QgYmUgW2BDb25maWc6Ok1hbmFnZXJPcmlnaW5gXS4ACQFTZWUgW2BNYW5hZ2VyT3BlcmF0aW9uYF0gZm9yIHZhcmlvdXMgb3BlcmF0aW9ucyB0aGF0IGFyZSBwb3NzaWJsZS4UYWRtaW4EAQhvcLEFAURBZG1pbk9wZXJhdGlvbjxUPgABAAQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy6pBQiQcGFsbGV0X2VsZWN0aW9uX3Byb3ZpZGVyX211bHRpX2Jsb2NrQE1hbmFnZXJPcGVyYXRpb24EBFQAAQxARm9yY2VSb3RhdGVSb3VuZAAAADRGb3JjZVNldFBoYXNlBACtBQEgUGhhc2U8VD4AAQBERW1lcmdlbmN5RmFsbGJhY2sAAgAArQUMkHBhbGxldF9lbGVjdGlvbl9wcm92aWRlcl9tdWx0aV9ibG9jaxR0eXBlcxRQaGFzZQQEVAABIAxPZmYAAAAYU2lnbmVkBAA4AURCbG9ja051bWJlckZvcjxUPgABAEBTaWduZWRWYWxpZGF0aW9uBAA4AURCbG9ja051bWJlckZvcjxUPgACACBVbnNpZ25lZAQAOAFEQmxvY2tOdW1iZXJGb3I8VD4AAwAgU25hcHNob3QEADgBJFBhZ2VJbmRleAAEABBEb25lAAUAGEV4cG9ydAQAOAEkUGFnZUluZGV4AAYAJEVtZXJnZW5jeQAHAACxBQiQcGFsbGV0X2VsZWN0aW9uX3Byb3ZpZGVyX211bHRpX2Jsb2NrOEFkbWluT3BlcmF0aW9uBARUAAEIUEVtZXJnZW5jeVNldFNvbHV0aW9uCAC1BQGEQm94PEJvdW5kZWRTdXBwb3J0c09mPFBhbGxldDxUPj4+AADVBQE0RWxlY3Rpb25TY29yZQAAAFBTZXRNaW5VbnRydXN0ZWRTY29yZQQA1QUBNEVsZWN0aW9uU2NvcmUAAQAAtQUIfGZyYW1lX2VsZWN0aW9uX3Byb3ZpZGVyX3N1cHBvcnQ8Qm91bmRlZFN1cHBvcnRzDCRBY2NvdW50SWQBBBhCT3V0ZXIAGEJJbm5lcgAABAC5BQEJAUJvdW5kZWRWZWM8KEFjY291bnRJZCwgQm91bmRlZFN1cHBvcnQ8QWNjb3VudElkLCBCSW5uZXI+KSwgQk91dGVyPgAAuQUMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAG9BQRTAAAEANEFARhWZWM8VD4AAL0FAAAECATBBQDBBQh8ZnJhbWVfZWxlY3Rpb25fcHJvdmlkZXJfc3VwcG9ydDhCb3VuZGVkU3VwcG9ydAgkQWNjb3VudElkAQQUQm91bmQAAAgBFHRvdGFsWQEBPEV4dGVuZGVkQmFsYW5jZQABGHZvdGVyc8UFAbxCb3VuZGVkVmVjPChBY2NvdW50SWQsIEV4dGVuZGVkQmFsYW5jZSksIEJvdW5kPgAAxQUMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAHJBQRTAAAEAM0FARhWZWM8VD4AAMkFAAAECARZAQDNBQAAAskFANEFAAACvQUA1QUIRHNwX25wb3NfZWxlY3Rpb25zNEVsZWN0aW9uU2NvcmUAAAwBNG1pbmltYWxfc3Rha2VZAQE8RXh0ZW5kZWRCYWxhbmNlAAEkc3VtX3N0YWtlWQEBPEV4dGVuZGVkQmFsYW5jZQABRHN1bV9zdGFrZV9zcXVhcmVkWQEBPEV4dGVuZGVkQmFsYW5jZQAA2QUUkHBhbGxldF9lbGVjdGlvbl9wcm92aWRlcl9tdWx0aV9ibG9jayB2ZXJpZmllchRpbXBscxhwYWxsZXQQQ2FsbAQEVAABAAQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy7dBRCQcGFsbGV0X2VsZWN0aW9uX3Byb3ZpZGVyX211bHRpX2Jsb2NrIHVuc2lnbmVkGHBhbGxldBBDYWxsBARUAAEEPHN1Ym1pdF91bnNpZ25lZAQBOHBhZ2VkX3NvbHV0aW9u4QUBlEJveDxQYWdlZFJhd1NvbHV0aW9uPFQ6Ok1pbmVyQ29uZmlnPj4AADxwU3VibWl0IGFuIHVuc2lnbmVkIHNvbHV0aW9uLgBVAVRoaXMgd29ya3MgdmVyeSBtdWNoIGxpa2UgYW4gaW5oZXJlbnQsIGFzIG9ubHkgdGhlIHZhbGlkYXRvcnMgYXJlIHBlcm1pdHRlZCB0byBzdWJtaXRZAWFueXRoaW5nLiBCeSBkZWZhdWx0IHZhbGlkYXRvcnMgd2lsbCBjb21wdXRlIHRoaXMgY2FsbCBpbiB0aGVpciBgb2ZmY2hhaW5fd29ya2VyYCBob29rbGFuZCB0cnkgYW5kIHN1Ym1pdCBpdCBiYWNrLgBFAVRoaXMgaXMgZGlmZmVyZW50IGZyb20gc2lnbmVkIHBhZ2Ugc3VibWlzc2lvbiBtYWlubHkgaW4gdGhhdCB0aGUgc29sdXRpb24gcGFnZSBpc1B2ZXJpZmllZCBvbiB0aGUgZmx5LgA9AVRoZSBgcGFnZWRfc29sdXRpb25gIG1heSBjb250YWluIGF0IG1vc3QgW2BDb25maWc6Ok1pbmVyUGFnZXNgXSBwYWdlcy4gVGhleSBhcmUNAWludGVycHJldGVkIGFzIG1zcCAtPiBsc3AsIGFzIHBlciBbYGNyYXRlOjpQYWxsZXQ6Om1zcF9yYW5nZV9mb3JgXS4AXQFGb3IgZXhhbXBsZSwgaWYgYFBhZ2VzID0gNGAsIGFuZCBgTWluZXJQYWdlcyA9IDJgLCBvdXIgZnVsbCBzbmFwc2hvdCByYW5nZSB3b3VsZCBiZSBbMCxVATEsIDIsIDNdLCB3aXRoIDMgYmVpbmcgbXNwLiBCdXQsIGluIHRoaXMgY2FzZSwgdGhlbiB0aGUgYHBhZ2VkX3Jhd19zb2x1dGlvbi5wYWdlc2AgaXPcZXhwZWN0ZWQgdG8gY29ycmVzcG9uZCB0byBgW3NuYXBzaG90KDIpLCBzbmFwc2hvdCgzKV1gLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy7hBQyQcGFsbGV0X2VsZWN0aW9uX3Byb3ZpZGVyX211bHRpX2Jsb2NrFHR5cGVzQFBhZ2VkUmF3U29sdXRpb24EBFQAAAwBOHNvbHV0aW9uX3BhZ2Vz5QUBSFZlYzxTb2x1dGlvbk9mPFQ+PgABFHNjb3Jl1QUBNEVsZWN0aW9uU2NvcmUAARRyb3VuZDgBDHUzMgAA5QUAAALpBQDpBQxcYXNzZXRfaHViX3Bhc2VvX3J1bnRpbWUcc3Rha2luZ1ROcG9zQ29tcGFjdFNvbHV0aW9uMTYAAEABGHZvdGVzMe0FAAABGHZvdGVzMvkFAAABGHZvdGVzMw0GAAABGHZvdGVzNBkGAAABGHZvdGVzNSUGAAABGHZvdGVzNjEGAAABGHZvdGVzNz0GAAABGHZvdGVzOEkGAAABGHZvdGVzOVUGAAABHHZvdGVzMTBhBgAAARx2b3RlczExbQYAAAEcdm90ZXMxMnkGAAABHHZvdGVzMTOFBgAAARx2b3RlczE0kQYAAAEcdm90ZXMxNZ0GAAABHHZvdGVzMTapBgAAAO0FAAAC8QUA8QUAAAQIZPUFAPUFAAAG7QMA+QUAAAL9BQD9BQAABAxkAQb1BQABBgAABAj1BQUGAAUGAAAGCQYACQYMNHNwX2FyaXRobWV0aWMocGVyX3RoaW5ncxhQZXJVMTYAAAQA7QMBDHUxNgAADQYAAAIRBgARBgAABAxkFQb1BQAVBgAAAwIAAAABBgAZBgAAAh0GAB0GAAAEDGQhBvUFACEGAAADAwAAAAEGACUGAAACKQYAKQYAAAQMZC0G9QUALQYAAAMEAAAAAQYAMQYAAAI1BgA1BgAABAxkOQb1BQA5BgAAAwUAAAABBgA9BgAAAkEGAEEGAAAEDGRFBvUFAEUGAAADBgAAAAEGAEkGAAACTQYATQYAAAQMZFEG9QUAUQYAAAMHAAAAAQYAVQYAAAJZBgBZBgAABAxkXQb1BQBdBgAAAwgAAAABBgBhBgAAAmUGAGUGAAAEDGRpBvUFAGkGAAADCQAAAAEGAG0GAAACcQYAcQYAAAQMZHUG9QUAdQYAAAMKAAAAAQYAeQYAAAJ9BgB9BgAABAxkgQb1BQCBBgAAAwsAAAABBgCFBgAAAokGAIkGAAAEDGSNBvUFAI0GAAADDAAAAAEGAJEGAAAClQYAlQYAAAQMZJkG9QUAmQYAAAMNAAAAAQYAnQYAAAKhBgChBgAABAxkpQb1BQClBgAAAw4AAAABBgCpBgAAAq0GAK0GAAAEDGSxBvUFALEGAAADDwAAAAEGALUGEJBwYWxsZXRfZWxlY3Rpb25fcHJvdmlkZXJfbXVsdGlfYmxvY2sYc2lnbmVkGHBhbGxldBBDYWxsBARUAAEUIHJlZ2lzdGVyBAE0Y2xhaW1lZF9zY29yZdUFATRFbGVjdGlvblNjb3JlAAAExFJlZ2lzdGVyIG9uZXNlbGYgZm9yIGFuIHVwY29taW5nIHNpZ25lZCBlbGVjdGlvbi4sc3VibWl0X3BhZ2UIARBwYWdlOAEkUGFnZUluZGV4AAE4bWF5YmVfc29sdXRpb265BgGcT3B0aW9uPEJveDxTb2x1dGlvbk9mPFQ6Ok1pbmVyQ29uZmlnPj4+AAEgjFN1Ym1pdCBhIHNpbmdsZSBwYWdlIG9mIGEgc29sdXRpb24uALBNdXN0IGFsd2F5cyBjb21lIGFmdGVyIFtgUGFsbGV0OjpyZWdpc3RlcmBdLgDgYG1heWJlX3NvbHV0aW9uYCBjYW4gYmUgc2V0IHRvIGBOb25lYCB0byBlcmFzZSB0aGUgcGFnZS4ANQFDb2xsZWN0cyBkZXBvc2l0cyBmcm9tIHRoZSBzaWduZWQgb3JpZ2luIGJhc2VkIG9uIFtgQ29uZmlnOjpEZXBvc2l0QmFzZWBdIGFuZGxbYENvbmZpZzo6RGVwb3NpdFBlclBhZ2VgXS4QYmFpbAACFFRSZXRyYWN0IGEgc3VibWlzc2lvbi4ATQFBIHBvcnRpb24gb2YgdGhlIGRlcG9zaXQgbWF5IGJlIHJldHVybmVkLCBiYXNlZCBvbiB0aGUgW2BDb25maWc6OkVqZWN0R3JhY2VSYXRpb2BdLgDEVGhpcyB3aWxsIGZ1bGx5IHJlbW92ZSB0aGUgc29sdXRpb24gZnJvbSBzdG9yYWdlLlBjbGVhcl9vbGRfcm91bmRfZGF0YQgBFHJvdW5kOAEMdTMyAAE0d2l0bmVzc19wYWdlczgBDHUzMgADGMBDbGVhciB0aGUgZGF0YSBvZiBhIHN1Ym1pdHRlciBmb3JtIGFuIG9sZCByb3VuZC4AMQFUaGUgZGlzcGF0Y2ggb3JpZ2luIG9mIHRoaXMgY2FsbCBtdXN0IGJlIHNpZ25lZCwgYW5kIHRoZSBvcmlnaW5hbCBzdWJtaXR0ZXIuAF0BVGhpcyBjYW4gb25seSBiZSBjYWxsZWQgZm9yIHN1Ym1pc3Npb25zIHRoYXQgZW5kIHVwIGJlaW5nIGRpc2NhcmRlZCwgYXMgaW4gdGhleSBhcmUgbm90xHByb2Nlc3NlZCBhbmQgdGhleSBlbmQgdXAgbGluZ2VyaW5nIGluIHRoZSBxdWV1ZS5Ec2V0X2ludnVsbmVyYWJsZXMEAQxpbnZhAQFEVmVjPFQ6OkFjY291bnRJZD4ABAxoU2V0IHRoZSBpbnZ1bG5lcmFibGUgbGlzdC4AEQFEaXNwYXRjaCBvcmlnaW4gbXVzdCB0aGUgdGhlIHNhbWUgYXMgW2BjcmF0ZTo6Q29uZmlnOjpBZG1pbk9yaWdpbmBdLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy65BgQYT3B0aW9uBARUAekFAQgQTm9uZQAAABBTb21lBADpBQAAAQAAvQYQUHBhbGxldF9zdGFraW5nX2FzeW5jGHBhbGxldBhwYWxsZXQQQ2FsbAQEVAABiBBib25kCAEUdmFsdWVVAQEwQmFsYW5jZU9mPFQ+AAEUcGF5ZWXBBgF8UmV3YXJkRGVzdGluYXRpb248VDo6QWNjb3VudElkPgAAMGEBVGFrZSB0aGUgb3JpZ2luIGFjY291bnQgYXMgYSBzdGFzaCBhbmQgbG9jayB1cCBgdmFsdWVgIG9mIGl0cyBiYWxhbmNlLiBgY29udHJvbGxlcmAgd2lsbIBiZSB0aGUgYWNjb3VudCB0aGF0IGNvbnRyb2xzIGl0LgAtAWB2YWx1ZWAgbXVzdCBiZSBtb3JlIHRoYW4gdGhlIGBtaW5pbXVtX2JhbGFuY2VgIHNwZWNpZmllZCBieSBgVDo6Q3VycmVuY3lgLgAhAVRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfIGJ5IHRoZSBzdGFzaCBhY2NvdW50LgA8RW1pdHMgYEJvbmRlZGAuAE0BTk9URTogVHdvIG9mIHRoZSBzdG9yYWdlIHdyaXRlcyAoYFNlbGY6OmJvbmRlZGAsIGBTZWxmOjpwYXllZWApIGFyZSBfbmV2ZXJfIGNsZWFuZWRZAXVubGVzcyB0aGUgYG9yaWdpbmAgZmFsbHMgYmVsb3cgX2V4aXN0ZW50aWFsIGRlcG9zaXRfIChvciBlcXVhbCB0byAwKSBhbmQgZ2V0cyByZW1vdmVkIGFzIGR1c3QuKGJvbmRfZXh0cmEEAThtYXhfYWRkaXRpb25hbFUBATBCYWxhbmNlT2Y8VD4AAShhAUFkZCBzb21lIGV4dHJhIGFtb3VudCB0aGF0IGhhdmUgYXBwZWFyZWQgaW4gdGhlIHN0YXNoIGBmcmVlX2JhbGFuY2VgIGludG8gdGhlIGJhbGFuY2UgdXAwZm9yIHN0YWtpbmcuAFEBVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8gYnkgdGhlIHN0YXNoLCBub3QgdGhlIGNvbnRyb2xsZXIuAE0BVXNlIHRoaXMgaWYgdGhlcmUgYXJlIGFkZGl0aW9uYWwgZnVuZHMgaW4geW91ciBzdGFzaCBhY2NvdW50IHRoYXQgeW91IHdpc2ggdG8gYm9uZC5VAVVubGlrZSBbYGJvbmRgXShTZWxmOjpib25kKSBvciBbYHVuYm9uZGBdKFNlbGY6OnVuYm9uZCkgdGhpcyBmdW5jdGlvbiBkb2VzIG5vdCBpbXBvc2W8YW55IGxpbWl0YXRpb24gb24gdGhlIGFtb3VudCB0aGF0IGNhbiBiZSBhZGRlZC4APEVtaXRzIGBCb25kZWRgLhh1bmJvbmQEARR2YWx1ZVUBATBCYWxhbmNlT2Y8VD4AAkxRAVNjaGVkdWxlIGEgcG9ydGlvbiBvZiB0aGUgc3Rhc2ggdG8gYmUgdW5sb2NrZWQgcmVhZHkgZm9yIHRyYW5zZmVyIG91dCBhZnRlciB0aGUgYm9uZPxwZXJpb2QgZW5kcy4gSWYgdGhpcyBsZWF2ZXMgYW4gYW1vdW50IGFjdGl2ZWx5IGJvbmRlZCBsZXNzIHRoYW4hAVtgYXNzZXQ6OmV4aXN0ZW50aWFsX2RlcG9zaXRgXSwgdGhlbiBpdCBpcyBpbmNyZWFzZWQgdG8gdGhlIGZ1bGwgYW1vdW50LgBRAVRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfIGJ5IHRoZSBjb250cm9sbGVyLCBub3QgdGhlIHN0YXNoLgBFAU9uY2UgdGhlIHVubG9jayBwZXJpb2QgaXMgZG9uZSwgeW91IGNhbiBjYWxsIGB3aXRoZHJhd191bmJvbmRlZGAgdG8gYWN0dWFsbHkgbW92Zbx0aGUgZnVuZHMgb3V0IG9mIG1hbmFnZW1lbnQgcmVhZHkgZm9yIHRyYW5zZmVyLgAxAU5vIG1vcmUgdGhhbiBhIGxpbWl0ZWQgbnVtYmVyIG9mIHVubG9ja2luZyBjaHVua3MgKHNlZSBgTWF4VW5sb2NraW5nQ2h1bmtzYClBAWNhbiBjby1leGlzdHMgYXQgdGhlIHNhbWUgdGltZS4gSWYgdGhlcmUgYXJlIG5vIHVubG9ja2luZyBjaHVua3Mgc2xvdHMgYXZhaWxhYmxlRQFbYENhbGw6OndpdGhkcmF3X3VuYm9uZGVkYF0gaXMgY2FsbGVkIHRvIHJlbW92ZSBzb21lIG9mIHRoZSBjaHVua3MgKGlmIHBvc3NpYmxlKS4AOQFJZiBhIHVzZXIgZW5jb3VudGVycyB0aGUgYEluc3VmZmljaWVudEJvbmRgIGVycm9yIHdoZW4gY2FsbGluZyB0aGlzIGV4dHJpbnNpYywZAXRoZXkgc2hvdWxkIGNhbGwgYGNoaWxsYCBmaXJzdCBpbiBvcmRlciB0byBmcmVlIHVwIHRoZWlyIGJvbmRlZCBmdW5kcy4AREVtaXRzIGBVbmJvbmRlZGAuAJRTZWUgYWxzbyBbYENhbGw6OndpdGhkcmF3X3VuYm9uZGVkYF0uRHdpdGhkcmF3X3VuYm9uZGVkBAFIbnVtX3NsYXNoaW5nX3NwYW5zOAEMdTMyAANMKQFSZW1vdmUgYW55IHN0YWtlIHRoYXQgaGFzIGJlZW4gZnVsbHkgdW5ib25kZWQgYW5kIGlzIHJlYWR5IGZvciB3aXRoZHJhd2FsLgBVAVN0YWtlIGlzIGNvbnNpZGVyZWQgZnVsbHkgdW5ib25kZWQgb25jZSBbYENvbmZpZzo6Qm9uZGluZ0R1cmF0aW9uYF0gaGFzIGVsYXBzZWQgc2luY2VdAXRoZSB1bmJvbmRpbmcgd2FzIGluaXRpYXRlZC4gSW4gcmFyZSBjYXNlc+KAlHN1Y2ggYXMgd2hlbiBvZmZlbmNlcyBmb3IgdGhlIHVuYm9uZGVkIGVyYVUBaGF2ZSBiZWVuIHJlcG9ydGVkIGJ1dCBub3QgeWV0IHByb2Nlc3NlZOKAlHdpdGhkcmF3YWwgaXMgcmVzdHJpY3RlZCB0byBlcmFzIGZvciB3aGljaIRhbGwgb2ZmZW5jZXMgaGF2ZSBiZWVuIHByb2Nlc3NlZC4AJQFUaGUgdW5sb2NrZWQgc3Rha2Ugd2lsbCBiZSByZXR1cm5lZCBhcyBmcmVlIGJhbGFuY2UgaW4gdGhlIHN0YXNoIGFjY291bnQuABUBVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8gYnkgdGhlIGNvbnRyb2xsZXIuAEhFbWl0cyBgV2l0aGRyYXduYC4AaFNlZSBhbHNvIFtgQ2FsbDo6dW5ib25kYF0uADQjIyBQYXJhbWV0ZXJzAFkBLSBgbnVtX3NsYXNoaW5nX3NwYW5zYDogKipEZXByZWNhdGVkKiouIFJldGFpbmVkIG9ubHkgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHk7IHRoaXNoICBwYXJhbWV0ZXIgaGFzIG5vIGVmZmVjdC4gdmFsaWRhdGUEARRwcmVmc8UGAThWYWxpZGF0b3JQcmVmcwAEFOREZWNsYXJlIHRoZSBkZXNpcmUgdG8gdmFsaWRhdGUgZm9yIHRoZSBvcmlnaW4gY29udHJvbGxlci4A2EVmZmVjdHMgd2lsbCBiZSBmZWx0IGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIG5leHQgZXJhLgBRAVRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfIGJ5IHRoZSBjb250cm9sbGVyLCBub3QgdGhlIHN0YXNoLiBub21pbmF0ZQQBHHRhcmdldHPNBgFkVmVjPEFjY291bnRJZExvb2t1cE9mPFQ+PgAFFA0BRGVjbGFyZSB0aGUgZGVzaXJlIHRvIG5vbWluYXRlIGB0YXJnZXRzYCBmb3IgdGhlIG9yaWdpbiBjb250cm9sbGVyLgDYRWZmZWN0cyB3aWxsIGJlIGZlbHQgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgbmV4dCBlcmEuAFEBVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8gYnkgdGhlIGNvbnRyb2xsZXIsIG5vdCB0aGUgc3Rhc2guFGNoaWxsAAYoxERlY2xhcmUgbm8gZGVzaXJlIHRvIGVpdGhlciB2YWxpZGF0ZSBvciBub21pbmF0ZS4A2EVmZmVjdHMgd2lsbCBiZSBmZWx0IGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIG5leHQgZXJhLgBRAVRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfIGJ5IHRoZSBjb250cm9sbGVyLCBub3QgdGhlIHN0YXNoLgA0IyMgQ29tcGxleGl0eeQtIEluZGVwZW5kZW50IG9mIHRoZSBhcmd1bWVudHMuIEluc2lnbmlmaWNhbnQgY29tcGxleGl0eS5QLSBDb250YWlucyBvbmUgcmVhZC7ELSBXcml0ZXMgYXJlIGxpbWl0ZWQgdG8gdGhlIGBvcmlnaW5gIGFjY291bnQga2V5LiRzZXRfcGF5ZWUEARRwYXllZcEGAXxSZXdhcmREZXN0aW5hdGlvbjxUOjpBY2NvdW50SWQ+AAcUtChSZS0pc2V0IHRoZSBwYXltZW50IHRhcmdldCBmb3IgYSBjb250cm9sbGVyLgBRAUVmZmVjdHMgd2lsbCBiZSBmZWx0IGluc3RhbnRseSAoYXMgc29vbiBhcyB0aGlzIGZ1bmN0aW9uIGlzIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkpLgBRAVRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfIGJ5IHRoZSBjb250cm9sbGVyLCBub3QgdGhlIHN0YXNoLjhzZXRfY29udHJvbGxlcgAIIEUBKFJlLSlzZXRzIHRoZSBjb250cm9sbGVyIG9mIGEgc3Rhc2ggdG8gdGhlIHN0YXNoIGl0c2VsZi4gVGhpcyBmdW5jdGlvbiBwcmV2aW91c2x5TQFhY2NlcHRlZCBhIGBjb250cm9sbGVyYCBhcmd1bWVudCB0byBzZXQgdGhlIGNvbnRyb2xsZXIgdG8gYW4gYWNjb3VudCBvdGhlciB0aGFuIHRoZVkBc3Rhc2ggaXRzZWxmLiBUaGlzIGZ1bmN0aW9uYWxpdHkgaGFzIG5vdyBiZWVuIHJlbW92ZWQsIG5vdyBvbmx5IHNldHRpbmcgdGhlIGNvbnRyb2xsZXKMdG8gdGhlIHN0YXNoLCBpZiBpdCBpcyBub3QgYWxyZWFkeS4AUQFFZmZlY3RzIHdpbGwgYmUgZmVsdCBpbnN0YW50bHkgKGFzIHNvb24gYXMgdGhpcyBmdW5jdGlvbiBpcyBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5KS4AUQFUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXyBieSB0aGUgc3Rhc2gsIG5vdCB0aGUgY29udHJvbGxlci5Mc2V0X3ZhbGlkYXRvcl9jb3VudAQBDG5ld2QBDHUzMgAJDJBTZXRzIHRoZSBpZGVhbCBudW1iZXIgb2YgdmFsaWRhdG9ycy4AhFRoZSBkaXNwYXRjaCBvcmlnaW4gbXVzdCBiZSBSb290LmBpbmNyZWFzZV92YWxpZGF0b3JfY291bnQEAShhZGRpdGlvbmFsZAEMdTMyAAoQ6EluY3JlbWVudHMgdGhlIGlkZWFsIG51bWJlciBvZiB2YWxpZGF0b3JzIHVwIHRvIG1heGltdW0gb2ZUYFQ6Ok1heFZhbGlkYXRvclNldGAuAIRUaGUgZGlzcGF0Y2ggb3JpZ2luIG11c3QgYmUgUm9vdC5Uc2NhbGVfdmFsaWRhdG9yX2NvdW50BAEYZmFjdG9y0QYBHFBlcmNlbnQACxARAVNjYWxlIHVwIHRoZSBpZGVhbCBudW1iZXIgb2YgdmFsaWRhdG9ycyBieSBhIGZhY3RvciB1cCB0byBtYXhpbXVtIG9mVGBUOjpNYXhWYWxpZGF0b3JTZXRgLgCEVGhlIGRpc3BhdGNoIG9yaWdpbiBtdXN0IGJlIFJvb3QuNGZvcmNlX25vX2VyYXMADCSsRm9yY2UgdGhlcmUgdG8gYmUgbm8gbmV3IGVyYXMgaW5kZWZpbml0ZWx5LgCEVGhlIGRpc3BhdGNoIG9yaWdpbiBtdXN0IGJlIFJvb3QuACQjIFdhcm5pbmcAGQFUaGUgZWxlY3Rpb24gcHJvY2VzcyBzdGFydHMgbXVsdGlwbGUgYmxvY2tzIGJlZm9yZSB0aGUgZW5kIG9mIHRoZSBlcmEuOQFUaHVzIHRoZSBlbGVjdGlvbiBwcm9jZXNzIG1heSBiZSBvbmdvaW5nIHdoZW4gdGhpcyBpcyBjYWxsZWQuIEluIHRoaXMgY2FzZSB0aGXcZWxlY3Rpb24gd2lsbCBjb250aW51ZSB1bnRpbCB0aGUgbmV4dCBlcmEgaXMgdHJpZ2dlcmVkLjRmb3JjZV9uZXdfZXJhAA0oSQFGb3JjZSB0aGVyZSB0byBiZSBhIG5ldyBlcmEgYXQgdGhlIGVuZCBvZiB0aGUgbmV4dCBzZXNzaW9uLiBBZnRlciB0aGlzLCBpdCB3aWxsIGJlnHJlc2V0IHRvIG5vcm1hbCAobm9uLWZvcmNlZCkgYmVoYXZpb3VyLgCEVGhlIGRpc3BhdGNoIG9yaWdpbiBtdXN0IGJlIFJvb3QuACQjIFdhcm5pbmcAGQFUaGUgZWxlY3Rpb24gcHJvY2VzcyBzdGFydHMgbXVsdGlwbGUgYmxvY2tzIGJlZm9yZSB0aGUgZW5kIG9mIHRoZSBlcmEuSQFJZiB0aGlzIGlzIGNhbGxlZCBqdXN0IGJlZm9yZSBhIG5ldyBlcmEgaXMgdHJpZ2dlcmVkLCB0aGUgZWxlY3Rpb24gcHJvY2VzcyBtYXkgbm90jGhhdmUgZW5vdWdoIGJsb2NrcyB0byBnZXQgYSByZXN1bHQuNGZvcmNlX3Vuc3Rha2UIARRzdGFzaAQBMFQ6OkFjY291bnRJZAABSG51bV9zbGFzaGluZ19zcGFuczgBDHUzMgAPIAkBRm9yY2UgYSBjdXJyZW50IHN0YWtlciB0byBiZWNvbWUgY29tcGxldGVseSB1bnN0YWtlZCwgaW1tZWRpYXRlbHkuAIRUaGUgZGlzcGF0Y2ggb3JpZ2luIG11c3QgYmUgUm9vdC40IyMgUGFyYW1ldGVycwCwLSBgc3Rhc2hgOiBUaGUgc3Rhc2ggYWNjb3VudCB0byBiZSB1bnN0YWtlZC49AS0gYG51bV9zbGFzaGluZ19zcGFuc2A6ICoqRGVwcmVjYXRlZCoqLiBUaGlzIHBhcmFtZXRlciBpcyByZXRhaW5lZCBmb3IgYmFja3dhcmSsY29tcGF0aWJpbGl0eS4gSXQgbm8gbG9uZ2VyIGhhcyBhbnkgZWZmZWN0LlBmb3JjZV9uZXdfZXJhX2Fsd2F5cwAQJAEBRm9yY2UgdGhlcmUgdG8gYmUgYSBuZXcgZXJhIGF0IHRoZSBlbmQgb2Ygc2Vzc2lvbnMgaW5kZWZpbml0ZWx5LgCEVGhlIGRpc3BhdGNoIG9yaWdpbiBtdXN0IGJlIFJvb3QuACQjIFdhcm5pbmcAGQFUaGUgZWxlY3Rpb24gcHJvY2VzcyBzdGFydHMgbXVsdGlwbGUgYmxvY2tzIGJlZm9yZSB0aGUgZW5kIG9mIHRoZSBlcmEuSQFJZiB0aGlzIGlzIGNhbGxlZCBqdXN0IGJlZm9yZSBhIG5ldyBlcmEgaXMgdHJpZ2dlcmVkLCB0aGUgZWxlY3Rpb24gcHJvY2VzcyBtYXkgbm90jGhhdmUgZW5vdWdoIGJsb2NrcyB0byBnZXQgYSByZXN1bHQuVGNhbmNlbF9kZWZlcnJlZF9zbGFzaAgBDGVyYTgBIEVyYUluZGV4AAFEdmFsaWRhdG9yX3NsYXNoZXPVBgFwVmVjPChUOjpBY2NvdW50SWQsIFBlcmJpbGwpPgARLAkBQ2FuY2VscyBzY2hlZHVsZWQgc2xhc2hlcyBmb3IgYSBnaXZlbiBlcmEgYmVmb3JlIHRoZXkgYXJlIGFwcGxpZWQuAGEBVGhpcyBmdW5jdGlvbiBhbGxvd3MgYFQ6OkFkbWluT3JpZ2luYCB0byBjYW5jZWwgcGVuZGluZyBzbGFzaGVzIGZvciBzcGVjaWZpZWQgdmFsaWRhdG9yc0kBaW4gYSBnaXZlbiBlcmEuIFRoZSBjYW5jZWxsZWQgc2xhc2hlcyBhcmUgc3RvcmVkIGFuZCB3aWxsIGJlIGNoZWNrZWQgd2hlbiBhcHBseWluZyBzbGFzaGVzLgA0IyMgUGFyYW1ldGVyc1UBLSBgZXJhYDogVGhlIHN0YWtpbmcgZXJhIGZvciB3aGljaCBzbGFzaGVzIHNob3VsZCBiZSBjYW5jZWxsZWQuIFRoaXMgaXMgdGhlIGVyYSB3aGVyZTUBICB0aGUgc2xhc2ggd291bGQgYmUgYXBwbGllZCwgbm90IHRoZSBlcmEgaW4gd2hpY2ggdGhlIG9mZmVuY2Ugd2FzIGNvbW1pdHRlZC5ZAS0gYHZhbGlkYXRvcl9zbGFzaGVzYDogQSBsaXN0IG9mIHZhbGlkYXRvciBzdGFzaCBhY2NvdW50cyBhbmQgdGhlaXIgc2xhc2ggZnJhY3Rpb25zIHRvPCAgYmUgY2FuY2VsbGVkLjhwYXlvdXRfc3Rha2VycwgBPHZhbGlkYXRvcl9zdGFzaAQBMFQ6OkFjY291bnRJZAABDGVyYTgBIEVyYUluZGV4ABI0GQFQYXkgb3V0IG5leHQgcGFnZSBvZiB0aGUgc3Rha2VycyBiZWhpbmQgYSB2YWxpZGF0b3IgZm9yIHRoZSBnaXZlbiBlcmEuAOgtIGB2YWxpZGF0b3Jfc3Rhc2hgIGlzIHRoZSBzdGFzaCBhY2NvdW50IG9mIHRoZSB2YWxpZGF0b3IuMQEtIGBlcmFgIG1heSBiZSBhbnkgZXJhIGJldHdlZW4gYFtjdXJyZW50X2VyYSAtIGhpc3RvcnlfZGVwdGg7IGN1cnJlbnRfZXJhXWAuAFUBVGhlIG9yaWdpbiBvZiB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4gQW55IGFjY291bnQgY2FuIGNhbGwgdGhpcyBmdW5jdGlvbiwgZXZlbiBpZnRpdCBpcyBub3Qgb25lIG9mIHRoZSBzdGFrZXJzLgBJAVRoZSByZXdhcmQgcGF5b3V0IGNvdWxkIGJlIHBhZ2VkIGluIGNhc2UgdGhlcmUgYXJlIHRvbyBtYW55IG5vbWluYXRvcnMgYmFja2luZyB0aGVdAWB2YWxpZGF0b3Jfc3Rhc2hgLiBUaGlzIGNhbGwgd2lsbCBwYXlvdXQgdW5wYWlkIHBhZ2VzIGluIGFuIGFzY2VuZGluZyBvcmRlci4gVG8gY2xhaW0gYbRzcGVjaWZpYyBwYWdlLCB1c2UgYHBheW91dF9zdGFrZXJzX2J5X3BhZ2VgLmAA8ElmIGFsbCBwYWdlcyBhcmUgY2xhaW1lZCwgaXQgcmV0dXJucyBhbiBlcnJvciBgSW52YWxpZFBhZ2VgLhhyZWJvbmQEARR2YWx1ZVUBATBCYWxhbmNlT2Y8VD4AEwzcUmVib25kIGEgcG9ydGlvbiBvZiB0aGUgc3Rhc2ggc2NoZWR1bGVkIHRvIGJlIHVubG9ja2VkLgDUVGhlIGRpc3BhdGNoIG9yaWdpbiBtdXN0IGJlIHNpZ25lZCBieSB0aGUgY29udHJvbGxlci4ocmVhcF9zdGFzaAgBFHN0YXNoBAEwVDo6QWNjb3VudElkAAFIbnVtX3NsYXNoaW5nX3NwYW5zOAEMdTMyABRIXQFSZW1vdmUgYWxsIGRhdGEgc3RydWN0dXJlcyBjb25jZXJuaW5nIGEgc3Rha2VyL3N0YXNoIG9uY2UgaXQgaXMgYXQgYSBzdGF0ZSB3aGVyZSBpdCBjYW4FAWJlIGNvbnNpZGVyZWQgYGR1c3RgIGluIHRoZSBzdGFraW5nIHN5c3RlbS4gVGhlIHJlcXVpcmVtZW50cyBhcmU6AC0BMS4gdGhlIGB0b3RhbF9iYWxhbmNlYCBvZiB0aGUgc3Rhc2ggaXMgYmVsb3cgYG1pbl9jaGlsbGVkX2JvbmRgIG9yIGlzIHplcm8uOQEyLiBvciwgdGhlIGBsZWRnZXIudG90YWxgIG9mIHRoZSBzdGFzaCBpcyBiZWxvdyBgbWluX2NoaWxsZWRfYm9uZGAgb3IgaXMgemVyby4AVQFUaGUgZm9ybWVyIGNhbiBoYXBwZW4gaW4gY2FzZXMgbGlrZSBhIHNsYXNoOyB0aGUgbGF0dGVyIHdoZW4gYSBmdWxseSB1bmJvbmRlZCBhY2NvdW50CQFpcyBzdGlsbCByZWNlaXZpbmcgc3Rha2luZyByZXdhcmRzIGluIGBSZXdhcmREZXN0aW5hdGlvbjo6U3Rha2VkYC4AMQFJdCBjYW4gYmUgY2FsbGVkIGJ5IGFueW9uZSwgYXMgbG9uZyBhcyBgc3Rhc2hgIG1lZXRzIHRoZSBhYm92ZSByZXF1aXJlbWVudHMuANxSZWZ1bmRzIHRoZSB0cmFuc2FjdGlvbiBmZWVzIHVwb24gc3VjY2Vzc2Z1bCBleGVjdXRpb24uADQjIyBQYXJhbWV0ZXJzAKgtIGBzdGFzaGA6IFRoZSBzdGFzaCBhY2NvdW50IHRvIGJlIHJlYXBlZC49AS0gYG51bV9zbGFzaGluZ19zcGFuc2A6ICoqRGVwcmVjYXRlZCoqLiBUaGlzIHBhcmFtZXRlciBpcyByZXRhaW5lZCBmb3IgYmFja3dhcmSsY29tcGF0aWJpbGl0eS4gSXQgbm8gbG9uZ2VyIGhhcyBhbnkgZWZmZWN0LhBraWNrBAEMd2hvzQYBZFZlYzxBY2NvdW50SWRMb29rdXBPZjxUPj4AFSzgUmVtb3ZlIHRoZSBnaXZlbiBub21pbmF0aW9ucyBmcm9tIHRoZSBjYWxsaW5nIHZhbGlkYXRvci4A2EVmZmVjdHMgd2lsbCBiZSBmZWx0IGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIG5leHQgZXJhLgBRAVRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfIGJ5IHRoZSBjb250cm9sbGVyLCBub3QgdGhlIHN0YXNoLgBNAS0gYHdob2A6IEEgbGlzdCBvZiBub21pbmF0b3Igc3Rhc2ggYWNjb3VudHMgd2hvIGFyZSBub21pbmF0aW5nIHRoaXMgdmFsaWRhdG9yIHdoaWNowCAgc2hvdWxkIG5vIGxvbmdlciBiZSBub21pbmF0aW5nIHRoaXMgdmFsaWRhdG9yLgBVAU5vdGU6IE1ha2luZyB0aGlzIGNhbGwgb25seSBtYWtlcyBzZW5zZSBpZiB5b3UgZmlyc3Qgc2V0IHRoZSB2YWxpZGF0b3IgcHJlZmVyZW5jZXMgdG94YmxvY2sgYW55IGZ1cnRoZXIgbm9taW5hdGlvbnMuTHNldF9zdGFraW5nX2NvbmZpZ3MgAUhtaW5fbm9taW5hdG9yX2JvbmTdBgFYQ29uZmlnT3A8QmFsYW5jZU9mPFQ+PgABSG1pbl92YWxpZGF0b3JfYm9uZN0GAVhDb25maWdPcDxCYWxhbmNlT2Y8VD4+AAFMbWF4X25vbWluYXRvcl9jb3VudOEGATRDb25maWdPcDx1MzI+AAFMbWF4X3ZhbGlkYXRvcl9jb3VudOEGATRDb25maWdPcDx1MzI+AAE8Y2hpbGxfdGhyZXNob2xk5QYBRENvbmZpZ09wPFBlcmNlbnQ+AAE4bWluX2NvbW1pc3Npb27pBgFEQ29uZmlnT3A8UGVyYmlsbD4AAUhtYXhfc3Rha2VkX3Jld2FyZHPlBgFEQ29uZmlnT3A8UGVyY2VudD4AAWBhcmVfbm9taW5hdG9yc19zbGFzaGFibGXtBgE4Q29uZmlnT3A8Ym9vbD4AFkSsVXBkYXRlIHRoZSB2YXJpb3VzIHN0YWtpbmcgY29uZmlndXJhdGlvbnMgLgAlASogYG1pbl9ub21pbmF0b3JfYm9uZGA6IFRoZSBtaW5pbXVtIGFjdGl2ZSBib25kIG5lZWRlZCB0byBiZSBhIG5vbWluYXRvci4lASogYG1pbl92YWxpZGF0b3JfYm9uZGA6IFRoZSBtaW5pbXVtIGFjdGl2ZSBib25kIG5lZWRlZCB0byBiZSBhIHZhbGlkYXRvci5VASogYG1heF9ub21pbmF0b3JfY291bnRgOiBUaGUgbWF4IG51bWJlciBvZiB1c2VycyB3aG8gY2FuIGJlIGEgbm9taW5hdG9yIGF0IG9uY2UuIFdoZW6YICBzZXQgdG8gYE5vbmVgLCBubyBsaW1pdCBpcyBlbmZvcmNlZC5VASogYG1heF92YWxpZGF0b3JfY291bnRgOiBUaGUgbWF4IG51bWJlciBvZiB1c2VycyB3aG8gY2FuIGJlIGEgdmFsaWRhdG9yIGF0IG9uY2UuIFdoZW6YICBzZXQgdG8gYE5vbmVgLCBubyBsaW1pdCBpcyBlbmZvcmNlZC5ZASogYGNoaWxsX3RocmVzaG9sZGA6IFRoZSByYXRpbyBvZiBgbWF4X25vbWluYXRvcl9jb3VudGAgb3IgYG1heF92YWxpZGF0b3JfY291bnRgIHdoaWNoGQEgIHNob3VsZCBiZSBmaWxsZWQgaW4gb3JkZXIgZm9yIHRoZSBgY2hpbGxfb3RoZXJgIHRyYW5zYWN0aW9uIHRvIHdvcmsuYQEqIGBtaW5fY29tbWlzc2lvbmA6IFRoZSBtaW5pbXVtIGFtb3VudCBvZiBjb21taXNzaW9uIHRoYXQgZWFjaCB2YWxpZGF0b3JzIG11c3QgbWFpbnRhaW4uVQEgIFRoaXMgaXMgY2hlY2tlZCBvbmx5IHVwb24gY2FsbGluZyBgdmFsaWRhdGVgLiBFeGlzdGluZyB2YWxpZGF0b3JzIGFyZSBub3QgYWZmZWN0ZWQuAMRSdW50aW1lT3JpZ2luIG11c3QgYmUgUm9vdCB0byBjYWxsIHRoaXMgZnVuY3Rpb24uADUBTk9URTogRXhpc3Rpbmcgbm9taW5hdG9ycyBhbmQgdmFsaWRhdG9ycyB3aWxsIG5vdCBiZSBhZmZlY3RlZCBieSB0aGlzIHVwZGF0ZS4RAXRvIGtpY2sgcGVvcGxlIHVuZGVyIHRoZSBuZXcgbGltaXRzLCBgY2hpbGxfb3RoZXJgIHNob3VsZCBiZSBjYWxsZWQuLGNoaWxsX290aGVyBAEUc3Rhc2gEATBUOjpBY2NvdW50SWQAF2hBAURlY2xhcmUgYSBgY29udHJvbGxlcmAgdG8gc3RvcCBwYXJ0aWNpcGF0aW5nIGFzIGVpdGhlciBhIHZhbGlkYXRvciBvciBub21pbmF0b3IuANhFZmZlY3RzIHdpbGwgYmUgZmVsdCBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBuZXh0IGVyYS4AQQFUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXywgYnV0IGNhbiBiZSBjYWxsZWQgYnkgYW55b25lLgBZAUlmIHRoZSBjYWxsZXIgaXMgdGhlIHNhbWUgYXMgdGhlIGNvbnRyb2xsZXIgYmVpbmcgdGFyZ2V0ZWQsIHRoZW4gbm8gZnVydGhlciBjaGVja3MgYXJl2GVuZm9yY2VkLCBhbmQgdGhpcyBmdW5jdGlvbiBiZWhhdmVzIGp1c3QgbGlrZSBgY2hpbGxgLgBdAUlmIHRoZSBjYWxsZXIgaXMgZGlmZmVyZW50IHRoYW4gdGhlIGNvbnRyb2xsZXIgYmVpbmcgdGFyZ2V0ZWQsIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczBtdXN0IGJlIG1ldDoAHQEqIGBjb250cm9sbGVyYCBtdXN0IGJlbG9uZyB0byBhIG5vbWluYXRvciB3aG8gaGFzIGJlY29tZSBub24tZGVjb2RhYmxlLAAMT3I6AD0BKiBBIGBDaGlsbFRocmVzaG9sZGAgbXVzdCBiZSBzZXQgYW5kIGNoZWNrZWQgd2hpY2ggZGVmaW5lcyBob3cgY2xvc2UgdG8gdGhlIG1heFUBICBub21pbmF0b3JzIG9yIHZhbGlkYXRvcnMgd2UgbXVzdCByZWFjaCBiZWZvcmUgdXNlcnMgY2FuIHN0YXJ0IGNoaWxsaW5nIG9uZS1hbm90aGVyLlkBKiBBIGBNYXhOb21pbmF0b3JDb3VudGAgYW5kIGBNYXhWYWxpZGF0b3JDb3VudGAgbXVzdCBiZSBzZXQgd2hpY2ggaXMgdXNlZCB0byBkZXRlcm1pbmWQICBob3cgY2xvc2Ugd2UgYXJlIHRvIHRoZSB0aHJlc2hvbGQuXQEqIEEgYE1pbk5vbWluYXRvckJvbmRgIGFuZCBgTWluVmFsaWRhdG9yQm9uZGAgbXVzdCBiZSBzZXQgYW5kIGNoZWNrZWQsIHdoaWNoIGRldGVybWluZXNRASAgaWYgdGhpcyBpcyBhIHBlcnNvbiB0aGF0IHNob3VsZCBiZSBjaGlsbGVkIGJlY2F1c2UgdGhleSBoYXZlIG5vdCBtZXQgdGhlIHRocmVzaG9sZEAgIGJvbmQgcmVxdWlyZWQuAFUBVGhpcyBjYW4gYmUgaGVscGZ1bCBpZiBib25kIHJlcXVpcmVtZW50cyBhcmUgdXBkYXRlZCwgYW5kIHdlIG5lZWQgdG8gcmVtb3ZlIG9sZCB1c2Vyc5h3aG8gZG8gbm90IHNhdGlzZnkgdGhlc2UgcmVxdWlyZW1lbnRzLmhmb3JjZV9hcHBseV9taW5fY29tbWlzc2lvbgQBPHZhbGlkYXRvcl9zdGFzaAQBMFQ6OkFjY291bnRJZAAYEDkBQ2xhbXBzIGEgdmFsaWRhdG9yJ3MgY29tbWlzc2lvbiB0byB0aGUgYFtNaW5Db21taXNzaW9uLCBNYXhDb21taXNzaW9uXWAgcmFuZ2UuADkBTmFtZWQgYGZvcmNlX2FwcGx5X21pbl9jb21taXNzaW9uYCBmb3IgbGVnYWN5IHJlYXNvbnMg4oCUIGl0IGFsc28gZW5mb3JjZXMgdGhljG1heGltdW0uIEFueSBhY2NvdW50IGNhbiBjYWxsIHRoaXMuSHNldF9taW5fY29tbWlzc2lvbgQBDG5ld6EBARxQZXJiaWxsABkQJQFTZXRzIHRoZSBtaW5pbXVtIGFtb3VudCBvZiBjb21taXNzaW9uIHRoYXQgZWFjaCB2YWxpZGF0b3JzIG11c3QgbWFpbnRhaW4uAFkBVGhpcyBjYWxsIGhhcyBsb3dlciBwcml2aWxlZ2UgcmVxdWlyZW1lbnRzIHRoYW4gYHNldF9zdGFraW5nX2NvbmZpZ2AgYW5kIGNhbiBiZSBjYWxsZWTMYnkgdGhlIGBUOjpBZG1pbk9yaWdpbmAuIFJvb3QgY2FuIGFsd2F5cyBjYWxsIHRoaXMuWHBheW91dF9zdGFrZXJzX2J5X3BhZ2UMATx2YWxpZGF0b3Jfc3Rhc2gEATBUOjpBY2NvdW50SWQAAQxlcmE4ASBFcmFJbmRleAABEHBhZ2U4ARBQYWdlABpUMQFQYXkgb3V0IGEgcGFnZSBvZiB0aGUgc3Rha2VycyBiZWhpbmQgYSB2YWxpZGF0b3IgZm9yIHRoZSBnaXZlbiBlcmEgYW5kIHBhZ2UuAOgtIGB2YWxpZGF0b3Jfc3Rhc2hgIGlzIHRoZSBzdGFzaCBhY2NvdW50IG9mIHRoZSB2YWxpZGF0b3IuMQEtIGBlcmFgIG1heSBiZSBhbnkgZXJhIGJldHdlZW4gYFtjdXJyZW50X2VyYSAtIGhpc3RvcnlfZGVwdGg7IGN1cnJlbnRfZXJhXWAuMQEtIGBwYWdlYCBpcyB0aGUgcGFnZSBpbmRleCBvZiBub21pbmF0b3JzIHRvIHBheSBvdXQgd2l0aCB2YWx1ZSBiZXR3ZWVuIDAgYW5ksCAgYG51bV9ub21pbmF0b3JzIC8gVDo6TWF4RXhwb3N1cmVQYWdlU2l6ZWAuAFUBVGhlIG9yaWdpbiBvZiB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4gQW55IGFjY291bnQgY2FuIGNhbGwgdGhpcyBmdW5jdGlvbiwgZXZlbiBpZnRpdCBpcyBub3Qgb25lIG9mIHRoZSBzdGFrZXJzLgA9AUlmIGEgdmFsaWRhdG9yIGhhcyBtb3JlIHRoYW4gW2BDb25maWc6Ok1heEV4cG9zdXJlUGFnZVNpemVgXSBub21pbmF0b3JzIGJhY2tpbmcpAXRoZW0sIHRoZW4gdGhlIGxpc3Qgb2Ygbm9taW5hdG9ycyBpcyBwYWdlZCwgd2l0aCBlYWNoIHBhZ2UgYmVpbmcgY2FwcGVkIGF0VQFbYENvbmZpZzo6TWF4RXhwb3N1cmVQYWdlU2l6ZWBdLiBJZiBhIHZhbGlkYXRvciBoYXMgbW9yZSB0aGFuIG9uZSBwYWdlIG9mIG5vbWluYXRvcnMsSQF0aGUgY2FsbCBuZWVkcyB0byBiZSBtYWRlIGZvciBlYWNoIHBhZ2Ugc2VwYXJhdGVseSBpbiBvcmRlciBmb3IgYWxsIHRoZSBub21pbmF0b3JzVQFiYWNraW5nIGEgdmFsaWRhdG9yIHRvIHJlY2VpdmUgdGhlIHJld2FyZC4gVGhlIG5vbWluYXRvcnMgYXJlIG5vdCBzb3J0ZWQgYWNyb3NzIHBhZ2VzYQFhbmQgc28gaXQgc2hvdWxkIG5vdCBiZSBhc3N1bWVkIHRoZSBoaWdoZXN0IHN0YWtlciB3b3VsZCBiZSBvbiB0aGUgdG9wbW9zdCBwYWdlIGFuZCB2aWNlSQF2ZXJzYS4gSWYgcmV3YXJkcyBhcmUgbm90IGNsYWltZWQgaW4gW2BDb25maWc6Okhpc3RvcnlEZXB0aGBdIGVyYXMsIHRoZXkgYXJlIGxvc3QuAEkBVGhlIHZhbGlkYXRvcidzIG93biByZXdhcmQgKGNvbW1pc3Npb24gKyBvd24tc3Rha2Ugc2hhcmUpIGlzIHByb3JhdGVkIGFjcm9zcyBwYWdlc0kBcHJvcG9ydGlvbmFsIHRvIGVhY2ggcGFnZSdzIHN0YWtlLiBUaGUgZnVsbCB2YWxpZGF0b3IgcmV3YXJkIGlzIHRoZSBzdW0gYWNyb3NzIGFsbBhwYWdlcy4wdXBkYXRlX3BheWVlBAEoY29udHJvbGxlcgQBMFQ6OkFjY291bnRJZAAbGOBNaWdyYXRlcyBhbiBhY2NvdW50J3MgYFJld2FyZERlc3RpbmF0aW9uOjpDb250cm9sbGVyYCB0b6RgUmV3YXJkRGVzdGluYXRpb246OkFjY291bnQoY29udHJvbGxlcilgLgBRAUVmZmVjdHMgd2lsbCBiZSBmZWx0IGluc3RhbnRseSAoYXMgc29vbiBhcyB0aGlzIGZ1bmN0aW9uIGlzIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkpLgAxAVRoaXMgd2lsbCB3YWl2ZSB0aGUgdHJhbnNhY3Rpb24gZmVlIGlmIHRoZSBgcGF5ZWVgIGlzIHN1Y2Nlc3NmdWxseSBtaWdyYXRlZC5oZGVwcmVjYXRlX2NvbnRyb2xsZXJfYmF0Y2gEASxjb250cm9sbGVyc/EGAfRCb3VuZGVkVmVjPFQ6OkFjY291bnRJZCwgVDo6TWF4Q29udHJvbGxlcnNJbkRlcHJlY2F0aW9uQmF0Y2g+ABwcXQFVcGRhdGVzIGEgYmF0Y2ggb2YgY29udHJvbGxlciBhY2NvdW50cyB0byB0aGVpciBjb3JyZXNwb25kaW5nIHN0YXNoIGFjY291bnQgaWYgdGhleSBhcmVhAW5vdCB0aGUgc2FtZS4gSWdub3JlcyBhbnkgY29udHJvbGxlciBhY2NvdW50cyB0aGF0IGRvIG5vdCBleGlzdCwgYW5kIGRvZXMgbm90IG9wZXJhdGUgaWa4dGhlIHN0YXNoIGFuZCBjb250cm9sbGVyIGFyZSBhbHJlYWR5IHRoZSBzYW1lLgBRAUVmZmVjdHMgd2lsbCBiZSBmZWx0IGluc3RhbnRseSAoYXMgc29vbiBhcyB0aGlzIGZ1bmN0aW9uIGlzIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkpLgC0VGhlIGRpc3BhdGNoIG9yaWdpbiBtdXN0IGJlIGBUOjpBZG1pbk9yaWdpbmAuOHJlc3RvcmVfbGVkZ2VyEAEUc3Rhc2gEATBUOjpBY2NvdW50SWQAAUBtYXliZV9jb250cm9sbGVykQEBUE9wdGlvbjxUOjpBY2NvdW50SWQ+AAEsbWF5YmVfdG90YWxlBAFQT3B0aW9uPEJhbGFuY2VPZjxUPj4AATxtYXliZV91bmxvY2tpbmf1BgEVAU9wdGlvbjxCb3VuZGVkVmVjPFVubG9ja0NodW5rPEJhbGFuY2VPZjxUPj4sIFQ6OgpNYXhVbmxvY2tpbmdDaHVua3M+PgAdLAUBUmVzdG9yZXMgdGhlIHN0YXRlIG9mIGEgbGVkZ2VyIHdoaWNoIGlzIGluIGFuIGluY29uc2lzdGVudCBzdGF0ZS4A3FRoZSByZXF1aXJlbWVudHMgdG8gcmVzdG9yZSBhIGxlZGdlciBhcmUgdGhlIGZvbGxvd2luZzpkKiBUaGUgc3Rhc2ggaXMgYm9uZGVkOyBvcg0BKiBUaGUgc3Rhc2ggaXMgbm90IGJvbmRlZCBidXQgaXQgaGFzIGEgc3Rha2luZyBsb2NrIGxlZnQgYmVoaW5kOyBvciUBKiBJZiB0aGUgc3Rhc2ggaGFzIGFuIGFzc29jaWF0ZWQgbGVkZ2VyIGFuZCBpdHMgc3RhdGUgaXMgaW5jb25zaXN0ZW50OyBvch0BKiBJZiB0aGUgbGVkZ2VyIGlzIG5vdCBjb3JydXB0ZWQgKmJ1dCogaXRzIHN0YWtpbmcgbG9jayBpcyBvdXQgb2Ygc3luYy4AYQFUaGUgYG1heWJlXypgIGlucHV0IHBhcmFtZXRlcnMgd2lsbCBvdmVyd3JpdGUgdGhlIGNvcnJlc3BvbmRpbmcgZGF0YSBhbmQgbWV0YWRhdGEgb2YgdGhlWQFsZWRnZXIgYXNzb2NpYXRlZCB3aXRoIHRoZSBzdGFzaC4gSWYgdGhlIGlucHV0IHBhcmFtZXRlcnMgYXJlIG5vdCBzZXQsIHRoZSBsZWRnZXIgd2lsbJBiZSByZXNldCB2YWx1ZXMgZnJvbSBvbi1jaGFpbiBzdGF0ZS5AbWlncmF0ZV9jdXJyZW5jeQQBFHN0YXNoBAEwVDo6QWNjb3VudElkAB4c2E1pZ3JhdGVzIHBlcm1pc3Npb25sZXNzbHkgYSBzdGFzaCBmcm9tIGxvY2tzIHRvIGhvbGRzLgBJAVRoaXMgcmVtb3ZlcyB0aGUgb2xkIGxvY2sgb24gdGhlIHN0YWtlIGFuZCBjcmVhdGVzIGEgaG9sZCBvbiBpdCBhdG9taWNhbGx5LiBJZiBhbGxhAXN0YWtlIGNhbm5vdCBiZSBoZWxkLCB0aGUgYmVzdCBlZmZvcnQgaXMgbWFkZSB0byBob2xkIGFzIG11Y2ggYXMgcG9zc2libGUuIFRoZSByZW1haW5pbmeEc3Rha2UgaXMgcmVtb3ZlZCBmcm9tIHRoZSBsZWRnZXIuAMRUaGUgZmVlIGlzIHdhaXZlZCBpZiB0aGUgbWlncmF0aW9uIGlzIHN1Y2Nlc3NmdWwuLGFwcGx5X3NsYXNoCAEkc2xhc2hfZXJhOAEgRXJhSW5kZXgAASRzbGFzaF9rZXkFBwFwKFQ6OkFjY291bnRJZCwgUGVyYmlsbCwgdTMyKQAfiB0BTWFudWFsbHkgYW5kIHBlcm1pc3Npb25sZXNzbHkgYXBwbGllcyBhIGRlZmVycmVkIHNsYXNoIGZvciBhIGdpdmVuIGVyYS4AXQFOb3JtYWxseSwgc2xhc2hlcyBhcmUgYXV0b21hdGljYWxseSBhcHBsaWVkIHNob3J0bHkgYWZ0ZXIgdGhlIHN0YXJ0IG9mIHRoZSBgc2xhc2hfZXJhYC5ZAVRoZSBhdXRvbWF0aWMgYXBwbGljYXRpb24gb2Ygc2xhc2hlcyBpcyBoYW5kbGVkIGJ5IHRoZSBwYWxsZXQncyBpbnRlcm5hbCBsb2dpYywgYW5kIGl0zHRyaWVzIHRvIGFwcGx5IG9uZSBzbGFzaCBwYWdlIHBlciBibG9jayBvZiB0aGUgZXJhLlUBSWYgZm9yIHNvbWUgcmVhc29uLCBvbmUgZXJhIGlzIG5vdCBlbm91Z2ggZm9yIGFwcGx5aW5nIGFsbCBzbGFzaCBwYWdlcywgdGhlIHJlbWFpbmluZ9xzbGFzaGVzIG5lZWQgdG8gYmUgbWFudWFsbHkgKHBlcm1pc3Npb25sZXNzbHkpIGFwcGxpZWQuAEkBRm9yIGEgZ2l2ZW4gZXJhIHgsIGlmIGF0IGVyYSB4KzEsIHNsYXNoZXMgYXJlIHN0aWxsIHVuYXBwbGllZCwgYWxsIHdpdGhkcmF3YWxzIGdldCEBYmxvY2tlZCwgYW5kIHRoZXNlIG5lZWQgdG8gYmUgbWFudWFsbHkgYXBwbGllZCBieSBjYWxsaW5nIHRoaXMgZnVuY3Rpb24uTQFUaGlzIGZ1bmN0aW9uIGV4aXN0cyBhcyBhICoqZmFsbGJhY2sgbWVjaGFuaXNtKiogZm9yIHRoaXMgZXh0cmVtZSBzaXR1YXRpb24sIGJ1dCB3ZcxuZXZlciBleHBlY3QgdG8gZW5jb3VudGVyIHRoaXMgaW4gbm9ybWFsIHNjZW5hcmlvcy4AYQFUaGUgcGFyYW1ldGVycyBmb3IgdGhpcyBjYWxsIGNhbiBiZSBxdWVyaWVkIGJ5IGxvb2tpbmcgYXQgdGhlIGBVbmFwcGxpZWRTbGFzaGVzYCBzdG9yYWdljGZvciBlcmFzIG9sZGVyIHRoYW4gdGhlIGFjdGl2ZSBlcmEuADQjIyBQYXJhbWV0ZXJzVQEtIGBzbGFzaF9lcmFgOiBUaGUgYXBwbGljYXRpb24gZXJhIChgb2ZmZW5jZV9lcmEgKyBTbGFzaERlZmVyRHVyYXRpb25gKSwgaS5lLiB0aGUga2V5cCAgaW50byBbYFVuYXBwbGllZFNsYXNoZXNgXS4lAS0gYHNsYXNoX2tleWA6IEEgdW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBzbGFzaCwgcmVwcmVzZW50ZWQgYXMgYSB0dXBsZTr4ICAtIGBzdGFzaGA6IFRoZSBzdGFzaCBhY2NvdW50IG9mIHRoZSB2YWxpZGF0b3IgYmVpbmcgc2xhc2hlZC4FASAgLSBgc2xhc2hfZnJhY3Rpb25gOiBUaGUgZnJhY3Rpb24gb2YgdGhlIHN0YWtlIHRoYXQgd2FzIHNsYXNoZWQuBQEgIC0gYHBhZ2VfaW5kZXhgOiBUaGUgaW5kZXggb2YgdGhlIGV4cG9zdXJlIHBhZ2UgYmVpbmcgcHJvY2Vzc2VkLgAsIyMgQmVoYXZpb3LoLSBUaGUgZnVuY3Rpb24gaXMgKipwZXJtaXNzaW9ubGVzcyoq4oCUYW55b25lIGNhbiBjYWxsIGl0LvAtIFRoZSBgc2xhc2hfZXJhYCAqKm11c3QgYmUgdGhlIGN1cnJlbnQgZXJhIG9yIGEgcGFzdCBlcmEqKi5sSWYgaXQgaXMgaW4gdGhlIGZ1dHVyZSwgdGhliCAgY2FsbCBmYWlscyB3aXRoIGBFcmFOb3RTdGFydGVkYC7kLSBUaGUgZmVlIGlzIHdhaXZlZCBpZiB0aGUgc2xhc2ggaXMgc3VjY2Vzc2Z1bGx5IGFwcGxpZWQuAFQjIyBGdXR1cmUgSW1wcm92ZW1lbnRhAS0gSW1wbGVtZW50IGFuICoqb2ZmLWNoYWluIHdvcmtlciAoT0NXKSB0YXNrKiogdG8gYXV0b21hdGljYWxseSBhcHBseSBzbGFzaGVzIHdoZW4gdGhlcmW4ICBpcyB1bnVzZWQgYmxvY2sgc3BhY2UsIGltcHJvdmluZyBlZmZpY2llbmN5LjhwcnVuZV9lcmFfc3RlcAQBDGVyYTgBIEVyYUluZGV4ACAsYQFQZXJmb3JtIG9uZSBzdGVwIG9mIGVyYSBwcnVuaW5nIHRvIHByZXZlbnQgUG9WIHNpemUgZXhoYXVzdGlvbiBmcm9tIHVuYm91bmRlZCBkZWxldGlvbnMuADEBVGhpcyBleHRyaW5zaWMgZW5hYmxlcyBwZXJtaXNzaW9ubGVzcyBsYXp5IHBydW5pbmcgb2YgZXJhIGRhdGEgYnkgcGVyZm9ybWluZy0BaW5jcmVtZW50YWwgZGVsZXRpb24gb2Ygc3RvcmFnZSBpdGVtcy4gRWFjaCBjYWxsIHByb2Nlc3NlcyBhIGxpbWl0ZWQgbnVtYmVyJQFvZiBpdGVtcyBiYXNlZCBvbiBhdmFpbGFibGUgYmxvY2sgd2VpZ2h0IHRvIGF2b2lkIGV4Y2VlZGluZyBibG9jayBsaW1pdHMuADUBUmV0dXJucyBgUGF5czo6Tm9gIHdoZW4gd29yayBpcyBwZXJmb3JtZWQgdG8gaW5jZW50aXZpemUgcmVndWxhciBtYWludGVuYW5jZS4FAUFueW9uZSBjYW4gY2FsbCB0aGlzIHRvIGhlbHAgbWFpbnRhaW4gdGhlIGNoYWluJ3Mgc3RvcmFnZSBoZWFsdGguAA0BVGhlIGVyYSBtdXN0IGJlIGVsaWdpYmxlIGZvciBwcnVuaW5nIChvbGRlciB0aGFuIEhpc3RvcnlEZXB0aCArIDEpLjkBQ2hlY2sgYEVyYVBydW5pbmdTdGF0ZWAgc3RvcmFnZSB0byBzZWUgaWYgYW4gZXJhIG5lZWRzIHBydW5pbmcgYmVmb3JlIGNhbGxpbmcuSHNldF9tYXhfY29tbWlzc2lvbgQBDG5ld6EBARxQZXJiaWxsACEM0FNldHMgdGhlIG1heGltdW0gY29tbWlzc2lvbiB0aGF0IHZhbGlkYXRvcnMgY2FuIHNldC4AtFRoZSBkaXNwYXRjaCBvcmlnaW4gbXVzdCBiZSBgVDo6QWRtaW5PcmlnaW5gLqRzZXRfdmFsaWRhdG9yX3NlbGZfc3Rha2VfaW5jZW50aXZlX2NvbmZpZwwBSG9wdGltdW1fc2VsZl9zdGFrZd0GAVhDb25maWdPcDxCYWxhbmNlT2Y8VD4+AAFMaGFyZF9jYXBfc2VsZl9zdGFrZd0GAVhDb25maWdPcDxCYWxhbmNlT2Y8VD4+AAFcc2VsZl9zdGFrZV9zbG9wZV9mYWN0b3LpBgFEQ29uZmlnT3A8UGVyYmlsbD4AIhTgQ29uZmlndXJlIHRoZSB2YWxpZGF0b3Igc2VsZi1zdGFrZSBpbmNlbnRpdmUgcGFyYW1ldGVycy4AtFRoZSBkaXNwYXRjaCBvcmlnaW4gbXVzdCBiZSBgVDo6QWRtaW5PcmlnaW5gLgABAUNoYW5nZXMgdGFrZSBlZmZlY3QgaW4gdGhlIG5leHQgZXJhIHdoZW4gcmV3YXJkcyBhcmUgY2FsY3VsYXRlZC4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuwQYIUHBhbGxldF9zdGFraW5nX2FzeW5jRFJld2FyZERlc3RpbmF0aW9uBCRBY2NvdW50SWQBBAEUGFN0YWtlZAAAABRTdGFzaAABAChDb250cm9sbGVyAAIAHEFjY291bnQEAAQBJEFjY291bnRJZAADABBOb25lAAQAAMUGCFBwYWxsZXRfc3Rha2luZ19hc3luYzhWYWxpZGF0b3JQcmVmcwAACAEoY29tbWlzc2lvbskGARxQZXJiaWxsAAEcYmxvY2tlZF0BARBib29sAADJBgAABqEBAM0GAAACAADRBgw0c3BfYXJpdGhtZXRpYyhwZXJfdGhpbmdzHFBlcmNlbnQAAAQADAEIdTgAANUGAAAC2QYA2QYAAAQIBKEBAN0GEFBwYWxsZXRfc3Rha2luZ19hc3luYxhwYWxsZXQYcGFsbGV0IENvbmZpZ09wBARUAVkBAQwQTm9vcAAAAAxTZXQEAFkBAQRUAAEAGFJlbW92ZQACAADhBhBQcGFsbGV0X3N0YWtpbmdfYXN5bmMYcGFsbGV0GHBhbGxldCBDb25maWdPcAQEVAE4AQwQTm9vcAAAAAxTZXQEADgBBFQAAQAYUmVtb3ZlAAIAAOUGEFBwYWxsZXRfc3Rha2luZ19hc3luYxhwYWxsZXQYcGFsbGV0IENvbmZpZ09wBARUAdEGAQwQTm9vcAAAAAxTZXQEANEGAQRUAAEAGFJlbW92ZQACAADpBhBQcGFsbGV0X3N0YWtpbmdfYXN5bmMYcGFsbGV0GHBhbGxldCBDb25maWdPcAQEVAGhAQEMEE5vb3AAAAAMU2V0BAChAQEEVAABABhSZW1vdmUAAgAA7QYQUHBhbGxldF9zdGFraW5nX2FzeW5jGHBhbGxldBhwYWxsZXQgQ29uZmlnT3AEBFQBXQEBDBBOb29wAAAADFNldAQAXQEBBFQAAQAYUmVtb3ZlAAIAAPEGDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBBARTAAAEAGEBARhWZWM8VD4AAPUGBBhPcHRpb24EBFQB+QYBCBBOb25lAAAAEFNvbWUEAPkGAAABAAD5BgxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAf0GBFMAAAQAAQcBGFZlYzxUPgAA/QYMUHBhbGxldF9zdGFraW5nX2FzeW5jGGxlZGdlcixVbmxvY2tDaHVuawQcQmFsYW5jZQFZAQAIARR2YWx1ZVUBARxCYWxhbmNlAAEMZXJhZAEgRXJhSW5kZXgAAAEHAAAC/QYABQcAAAQMBKEBOAAJBwx8aW5kaXZfcGFsbGV0X21lbWJlcnNfc3Vic2NyaWJlchhwYWxsZXQQQ2FsbAQEVAABEFRpbml0aWFsaXplX3Jpbmdfcm9vdHMIATRyaW5nX2V4cG9uZW50DQcBMFJpbmdFeHBvbmVudAABFHJvb3RzEQcBXFJpbmdSb290VXBkYXRlc0JhdGNoPFQ+AAAgRQFTdG9yZXMgdGhlIGluaXRpYWwgcmluZyByb290cyByZWNlaXZlZCBmcm9tIHRoZSBub3RpZmllciB1cG9uIHN1YnNjcmlwdGlvbiBzdGFydC5BAUFjY2VwdHMgbXVsdGktcGFydCBjb250aW51YXRpb25zIChzYW1lIHNlcXVlbmNlKS4gUmVqZWN0cyBjYWxscyB3aXRoIGEgZGlmZmVyZW50UQFzZXF1ZW5jZSB3aGlsZSBzdWJzY3JpcHRpb24gaXMgYEFjdGl2ZWAg4oCUIGEgc3Vic2NyaXB0aW9uIG11c3QgYmUgdGVybWluYXRlZCBmaXJzdC4dAUNhbiBvbmx5IGJlIGNhbGxlZCBieSBub3RpZmllciBYQ00gb3JpZ2luICh2aWEgYEVuc3VyZU5vdGlmaWVyT3JpZ2luYCkuADQjIyBQYXJhbWV0ZXJzgC0gYG9yaWdpbmA6IE5vdGlmaWVyIFhDTSBvcmlnaW4unC0gYHJvb3RzYDogSW5pdGlhbCBiYXRjaCBvZiByaW5nIHJvb3RzLlBwcm9jZXNzX3JpbmdfdXBkYXRlcwQBFGJhdGNoEQcBXFJpbmdSb290VXBkYXRlc0JhdGNoPFQ+AAEU2FByb2Nlc3MgcmluZyByb290cyB1cGRhdGVzIHJlY2VpdmVkIGZyb20gdGhlIG5vdGlmaWVyLgA0IyMgUGFyYW1ldGVyc9QtIGBvcmlnaW5gOiBNdXN0IGJlIHRoZSBYQ00gb3JpZ2luIGZyb20gdGhlIG5vdGlmaWVyLsQtIGBiYXRjaGA6IEJhdGNoIG9mIHJpbmcgcm9vdCB1cGRhdGVzIHRvIHByb2Nlc3MuWHRlcm1pbmF0ZV9zdWJzY3JpcHRpb24AAihwVGVybWluYXRlcyB0aGUgc3Vic2NyaXB0aW9uLgAtAUFjY2VwdHMgZWl0aGVyIG5vdGlmaWVyIG9yaWdpbiAoYEVuc3VyZU5vdGlmaWVyT3JpZ2luYCkgb3IgbG9jYWwgZ292ZXJuYW5jZRUBb3JpZ2luIChgRW5zdXJlVGVybWluYXRpb25PcmlnaW5gKS4gV2hlbiBjYWxsZWQgbG9jYWxseSwgc2VuZHMgYW4gWENNLQF1bnN1YnNjcmliZSBtZXNzYWdlIHRvIHRoZSBub3RpZmllci4gV2hlbiBjYWxsZWQgZnJvbSB0aGUgbm90aWZpZXIgKGUuZy4gb24NAWdvdmVybmFuY2UgdW5zdWJzY3JpYmUpLCBubyBYQ00gaXMgc2VudCBiYWNrLiBJZGVtcG90ZW50IGlmIGFscmVhZHksdGVybWluYXRlZC4ANCMjIFBhcmFtZXRlcnPoLSBgb3JpZ2luYDogTm90aWZpZXIgWENNIG9yaWdpbiBvciByb290L2dvdmVybmFuY2Ugb3JpZ2luLlByZXBsYXlfbWlzc2luZ19yb290cwgBKGlkZW50aWZpZXIIAShJZGVudGlmaWVyAAEcaW5kaWNlcykHAdhCb3VuZGVkVmVjPFJpbmdJbmRleCwgVDo6TWF4TWlzc2luZ1Jvb3RzUGVyQ29sbGVjdGlvbj4AAxT0U2VuZHMgcmVwbGF5IHJlcXVlc3RzIHRvIHRoZSBub3RpZmllciBmb3IgbWlzc2luZyByaW5nIHJvb3RzLgAhAVN1Ym1pdHRlZCBieSB0aGUgb2ZmY2hhaW4gd29ya2VyIGFzIGFuIGF1dGhvcml6ZWQgdHJhbnNhY3Rpb24uIFZhbGlkYXRlcykBdGhhdCB0aGUgc3Vic2NyaXB0aW9uIGlzIGFjdGl2ZSBhbmQgdGhhdCB0aGUgcHJvdmlkZWQgaW5kaWNlcyBhcmUgYWN0dWFsbHmsbWlzc2luZyBiZWZvcmUgc2VuZGluZyBYQ00gcmVwbGF5IHJlcXVlc3RzLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy4NBxA0aW5kaXZfc3VwcG9ydBh0cmFpdHMccmVhbGl0eTBSaW5nRXhwb25lbnQAAQwQUjJlOQAJABRSMmUxMAAKABRSMmUxNAAOAAARBww0aW5kaXZfc3VwcG9ydGxtZW1iZXJzX25vdGlmaWVyX3N1YnNjcmliZXJQUmluZ1Jvb3RVcGRhdGVzQmF0Y2gEBFQAABQBKGlkZW50aWZpZXIIAShJZGVudGlmaWVyAAEgc2VxdWVuY2UoAThTZXF1ZW5jZU51bWJlcgABLHNvdXJjZV90aW1lKAEMdTY0AAEcdXBkYXRlcxUHAdBCb3VuZGVkVmVjPFJpbmdSb290VXBkYXRlPFQ+LCBUOjpNYXhVcGRhdGVzUGVyQmF0Y2g+AAE8bmV4dF9yaW5nX2luZGV4OAEMdTMyAAAVBwxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUARkHBFMAAAQAJQcBGFZlYzxUPgAAGQcMNGluZGl2X3N1cHBvcnRsbWVtYmVyc19ub3RpZmllcl9zdWJzY3JpYmVyOFJpbmdSb290VXBkYXRlBARUAAAIAShyaW5nX2luZGV4OAEkUmluZ0luZGV4AAEIb3AdBwFgUmluZ1Jvb3RPcDxNZW1iZXJzT2Y8VD4+AAAdBww0aW5kaXZfc3VwcG9ydGxtZW1iZXJzX25vdGlmaWVyX3N1YnNjcmliZXIoUmluZ1Jvb3RPcAQEUgEhBwEIFEJ1aWx0CAEgcmV2aXNpb244ATRSZXZpc2lvbkluZGV4AAEQcm9vdCEHAQRSAAAAHERlbGV0ZWQAAQAAIQcMKHZlcmlmaWFibGUQcmluZ0RNZW1iZXJzQ29tbWl0bWVudAADAAMAAAwAJQcAAAIZBwApBwxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUATgEUwAABABdBAEYVmVjPFQ+AAAtBwxsaW5kaXZfcGFsbGV0X2FsaWFzX2FjY291bnRzGHBhbGxldBBDYWxsBARUAAEUTHVuc2V0X2FsaWFzX2FjY291bnQAARCgUmVtb3ZlIHRoZSBhbGlhcyBtYXBwaW5nIGZvciB0aGUgc2lnbmVyLgA1AVRoZSBvcmlnaW4gbXVzdCBiZSBzaWduZWQgYnkgdGhlIGFjY291bnQgY3VycmVudGx5IGJvdW5kIHRvIGEgcmluZyBhbGlhcy4gVGhlmG1hcHBpbmcgaXMgcmVtb3ZlZCBpbiBib3RoIGRpcmVjdGlvbnMuRHNldF9hbGlhc19hY2NvdW50GAEUcHJvb2YxBwEoUHJvb2ZPZjxUPgABKGNvbGxlY3Rpb24IAShJZGVudGlmaWVyAAEocmluZ19pbmRleDgBJFJpbmdJbmRleAABNHJpbmdfcmV2aXNpb244ATRSZXZpc2lvbkluZGV4AAEcY29udGV4dAgBHENvbnRleHQAAThwcm9vZl92YWxpZF9hdCgBDHU2NAADMOhMaW5rIGFuIGFjY291bnQgdG8gYSByaW5nIGFsaWFzLCBvbiBwYXltZW50IG9mIGEgUEdBUyBmZWUuADUBVGhlIG9yaWdpbiBtdXN0IGJlIHNpZ25lZDsgdGhlIHNpZ25lciBiZWNvbWVzIHRoZSBib3VuZCBhY2NvdW50LiBUaGUgUEdBUyBmZWU5AShbYEFsaWFzRmVlYF0pIGlzIGJ1cm5lZCBmcm9tIHRoZSBzaWduZXIncyBQR0FTIGJhbGFuY2UuIFRoZSBhbGlhcyBtdXN0IHZlcmlmeUEBYWdhaW5zdCB0aGUgc3VwcGxpZWQgYGNvbGxlY3Rpb25gL2ByaW5nX2luZGV4YC9gcmluZ19yZXZpc2lvbmAgaW4gYGNvbnRleHRgLiBUaGW8Y29sbGVjdGlvbiBtdXN0IHN0aWxsIGJlIFBlb3BsZSBvciBQZW9wbGUgTGl0ZS4ASQFJZiBhIGRpZmZlcmVudCBhY2NvdW50IGlzIGFscmVhZHkgYm91bmQgdG8gdGhlIHNhbWUgYWxpYXMgdW5kZXIgdGhpcyBjb250ZXh0LCB0aGF0+G1hcHBpbmcgaXMgZHJvcHBlZCBhbmQgdGhlIHN3YXAgaXMgcGFpZCBmb3IgYnkgdGhlIG5ldyBzaWduZXIuACkBUmUtcHJvdmluZyB0aGUgc2FtZSBhbGlhcyB1bmRlciBhIGZyZXNoZXIgcmluZyByZXZpc2lvbiBzaG91bGQgaW5zdGVhZCB1c2XEW2BQYWxsZXQ6OnJlcHJvdmVfYWxpYXNfYWNjb3VudGBdLCB3aGljaCBpcyBmcmVlLlRyZXByb3ZlX2FsaWFzX2FjY291bnQQARRwcm9vZjEHAShQcm9vZk9mPFQ+AAEocmluZ19pbmRleDgBJFJpbmdJbmRleAABNHJpbmdfcmV2aXNpb244ATRSZXZpc2lvbkluZGV4AAE4cHJvb2ZfdmFsaWRfYXQoAQx1NjQABBxhAVJlLXByb3ZlIHRoZSBob2xkZXIncyBhbGlhcyBhZ2FpbnN0IGEgZnJlc2hlciByaW5nIHJldmlzaW9uLCBmcmVlIG9mIGNoYXJnZSBpbiBjYXNlIG9mIGFYc3VjY2Vzc2Z1bCBvcGVyYXRpb25zLgARAVRoZSBvcmlnaW4gbXVzdCBiZSBzaWduZWQgYW5kIG11c3QgYWxyZWFkeSBob2xkIGEgYWxpYXMgbWFwcGluZy4gVGhlGQFwcm9vZiBpcyB2ZXJpZmllZCBhZ2FpbnN0IHRoZSBzdG9yZWQgY29udGV4dDsgdGhlIHJlc3VsdGluZyBhbGlhcyBtdXN0EQFtYXRjaCB0aGUgc3RvcmVkIGFsaWFzLiBPbmx5IHRoZSBgcmV2aXNpb25gIGFuZCBgcmluZ2AgZmllbGRzIG9mIHRoZREBc3RvcmVkIG1hcHBpbmcgY2hhbmdlOyBjb2xsZWN0aW9uLCBjb250ZXh0LCBhbmQgYWxpYXMgYXJlIHByZXNlcnZlZC40c2V0X2FsaWFzX2ZlZQQBDGZlZVkBATBCYWxhbmNlT2Y8VD4ABRToU2V0IHRoZSBQR0FTIGZlZSBjaGFyZ2VkIGJ5IFtgUGFsbGV0OjpzZXRfYWxpYXNfYWNjb3VudGBdLgAVAU9yaWdpbiBtdXN0IGJlIFtgQ29uZmlnOjpGZWVNYW5hZ2VyT3JpZ2luYF0uIFRoZSBuZXcgZmVlIHJlcGxhY2VzIHRoZfxwcmV2aW91cyB2YWx1ZSAoaWYgYW55KS4gVGhlcmUgaXMgbm8gbWluaW11bSDigJQgc2V0IHRvIHplcm8gdG/kZWZmZWN0aXZlbHkgZGlzYWJsZSB0aGUgYnVybiB3aGlsZSBrZWVwaW5nIHRoZSBwYXRoIG9wZW4uUGNsZWFuX3VwX3N0YWxlX2FsaWFzCAEoY29sbGVjdGlvbggBKElkZW50aWZpZXIAAQhjYQ0EATxDb250ZXh0dWFsQWxpYXMAAiSkUmVtb3ZlIGEgc3RhbGUgYWxpYXMgPC0+IGFjY291bnQgbWFwcGluZy4AuEFueW9uZSBjYW4gY2FsbCB0aGlzLiBBIG1hcHBpbmcgaXMgc3RhbGUgd2hlbjpJATEuIFRoZSByaW5nIHJldmlzaW9uIG5vIGxvbmdlciBtYXRjaGVzIHRoZSBhY2NvdW50IGFsaWFzIChpLmUuLCByaW5nIHdhcyByZWJ1aWx0KS64Mi4gVGhlIGFjY291bnQgYWxpYXMgcmVmZXJzIHRvIGEgZGVsZXRlZCByaW5nLgA9AUZvciAoMSksIHRoZSBtYXBwaW5nIGlzIG9ubHkgY29uc2lkZXJlZCBzdGFsZSBhZnRlciBhIGdyYWNlIHBlcmlvZCBoYXMgZWxhcHNlZC4ACQFUaGUgdHJhbnNhY3Rpb24gZmVlIGlzIHJlZnVuZGVkIG9uIHN1Y2Nlc3MgdG8gaW5jZW50aXZpemUgY2xlYW51cC4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuMQcMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AAA1BwxEaW5kaXZfcGFsbGV0X3BnYXMYcGFsbGV0EENhbGwEBFQAAQwoY2xhaW1fcGdhcwgBKHNsb3RfaW5kZXg4AQx1MzIAARh0YXJnZXQEATBUOjpBY2NvdW50SWQAACSQTWludCBQR0FTIGZvciBhIHZlcmlmaWVkIGNsYWltIHNsb3QuAAkBTXVzdCBiZSBzdWJtaXR0ZWQgd2l0aCB0aGUgW2BBc1BnYXNgXSB0cmFuc2FjdGlvbiBleHRlbnNpb24sIHdoaWNoUQF2ZXJpZmllcyB0aGUgcmluZy1WUkYgcHJvb2YgYW5kIHByb2R1Y2VzIGFuIFtgT3JpZ2luOjpDbGFpbUFsaWFzYF0uIFRoZSBvdXRlciBvcmlnaW5VAW11c3QgYmUgYE5vbmVgICh0aGUgZXh0ZW5zaW9uIHJlcGxhY2VzIGl0IHdpdGggdGhlIGxvY2FsIG9yaWdpbik7IGFueSBvdGhlciBvcmlnaW4gaXMkcmVqZWN0ZWQuAFkBYHNsb3RfaW5kZXhgIGlzIHBhcnQgb2YgdGhlIGNhbGwgcGF5bG9hZCBzbyB0aGUgZXh0ZW5zaW9uIGNhbiBkZXJpdmUgdGhlIGNsYWltIGNvbnRleHRRAW9uLWNoYWluIGFuZCBzbyB0aGUgcHJvb2YgYmluZHMgdG8gdGhlIHJlcXVlc3RlZCBzbG90IHZpYSB0aGUgaW5oZXJpdGVkIGltcGxpY2F0aW9uLkRjcmVhdGVfcGdhc19hc3NldAABCFUBQ3JlYXRlIHRoZSBQR0FTIGFzc2V0LiBUaGlzIGlzIGEgcGVybWlzc2lvbmxlc3MgYXV0aG9yaXplZCBjYWxsIHRoYXQgY2FuIG9ubHkgc3VjY2VlZKRpZiB0aGUgUEdBUyBhc3NldCBkb2VzIG5vdCBhbHJlYWR5IGV4aXN0LmBjbGVhbl9wZ2FzX2NsYWltX3JlY29yZHMIASRkYXlfaW5kZXg4AQx1MzIAASxmaXJzdF9hbGlhcwgBFEFsaWFzAAIk5FJlbW92ZSBvbGQgUEdBUyBjbGFpbSByZWNvcmRzIGZvciBhIHNwZWNpZmljIGBkYXlfaW5kZXhgLgAFAVRoaXMgaXMgYW4gYXV0aG9yaXplZCBleHRyaW5zaWMgc3VibWl0dGVkIGJ5IHRoZSBvZmZjaGFpbiB3b3JrZXIuNQFPbmx5IHJlY29yZHMgZnJvbSBkYXlzIHRoYXQgaGF2ZSBmdWxseSBlbGFwc2VkIChvdXRzaWRlIHRoZSBncmFjZSB3aW5kb3cpIGNhbikBYmUgY2xlYW5lZC4gVXAgdG8gW2BDb25maWc6Ok1heFBnYXNDbGFpbVJlY29yZENsZWFudXBQZXJDYWxsYF0gZW50cmllcyBhcmVEcmVtb3ZlZCBwZXIgY2FsbC4AYQFgZmlyc3RfYWxpYXNgIGlzIHRoZSBmaXJzdCBhbGlhcyBjdXJyZW50bHkgc3RvcmVkIGZvciBgZGF5X2luZGV4YCBhbmQgaXMgaW5jbHVkZWQgaW4gdGhlgHRhZ3MgZm9yIHRyYW5zYWN0aW9uIHVuaXF1ZW5lc3MuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLjkHDDRwYWxsZXRfcmV2aXZlGHBhbGxldBBDYWxsBARUAAE4MGV0aF90cmFuc2FjdAQBHHBheWxvYWQYARxWZWM8dTg+AAAwLQFBIHJhdyBFVk0gdHJhbnNhY3Rpb24sIHR5cGljYWxseSBkaXNwYXRjaGVkIGJ5IGFuIEV0aGVyZXVtIEpTT04tUlBDIHNlcnZlci4AMCMgUGFyYW1ldGVycwDsKiBgcGF5bG9hZGA6IFRoZSBlbmNvZGVkIFtgY3JhdGU6OmV2bTo6VHJhbnNhY3Rpb25TaWduZWRgXS4AGCMgTm90ZQBRAVRoaXMgY2FsbCBjYW5ub3QgYmUgZGlzcGF0Y2hlZCBkaXJlY3RseTsgYXR0ZW1wdGluZyB0byBkbyBzbyB3aWxsIHJlc3VsdCBpbiBhIGZhaWxlZFEBdHJhbnNhY3Rpb24uIEl0IHNlcnZlcyBhcyBhIHdyYXBwZXIgZm9yIGFuIEV0aGVyZXVtIHRyYW5zYWN0aW9uLiBXaGVuIHN1Ym1pdHRlZCwgdGhlWQFydW50aW1lIGNvbnZlcnRzIGl0IGludG8gYSBbYHNwX3J1bnRpbWU6OmdlbmVyaWM6OkNoZWNrZWRFeHRyaW5zaWNgXSBieSByZWNvdmVyaW5nIHRoZZhzaWduZXIgYW5kIHZhbGlkYXRpbmcgdGhlIHRyYW5zYWN0aW9uLhBjYWxsFAEQZGVzdD0HARBIMTYwAAEUdmFsdWVVAQEwQmFsYW5jZU9mPFQ+AAEwd2VpZ2h0X2xpbWl0FQEBGFdlaWdodAABVHN0b3JhZ2VfZGVwb3NpdF9saW1pdFUBATBCYWxhbmNlT2Y8VD4AARBkYXRhGAEcVmVjPHU4PgABQAUBTWFrZXMgYSBjYWxsIHRvIGFuIGFjY291bnQsIG9wdGlvbmFsbHkgdHJhbnNmZXJyaW5nIHNvbWUgYmFsYW5jZS4AMCMgUGFyYW1ldGVycwCoKiBgZGVzdGA6IEFkZHJlc3Mgb2YgdGhlIGNvbnRyYWN0IHRvIGNhbGwu/CogYHZhbHVlYDogVGhlIGJhbGFuY2UgdG8gdHJhbnNmZXIgZnJvbSB0aGUgYG9yaWdpbmAgdG8gYGRlc3RgLi0BKiBgd2VpZ2h0X2xpbWl0YDogVGhlIHdlaWdodCBsaW1pdCBlbmZvcmNlZCB3aGVuIGV4ZWN1dGluZyB0aGUgY29uc3RydWN0b3IuVQEqIGBzdG9yYWdlX2RlcG9zaXRfbGltaXRgOiBUaGUgbWF4aW11bSBhbW91bnQgb2YgYmFsYW5jZSB0aGF0IGNhbiBiZSBjaGFyZ2VkIGZyb20gdGhlpCAgY2FsbGVyIHRvIHBheSBmb3IgdGhlIHN0b3JhZ2UgY29uc3VtZWQuxCogYGRhdGFgOiBUaGUgaW5wdXQgZGF0YSB0byBwYXNzIHRvIHRoZSBjb250cmFjdC4AJQEqIElmIHRoZSBhY2NvdW50IGlzIGEgc21hcnQtY29udHJhY3QgYWNjb3VudCwgdGhlIGFzc29jaWF0ZWQgY29kZSB3aWxsIGJlrGV4ZWN1dGVkIGFuZCBhbnkgdmFsdWUgd2lsbCBiZSB0cmFuc2ZlcnJlZC4VASogSWYgdGhlIGFjY291bnQgaXMgYSByZWd1bGFyIGFjY291bnQsIGFueSB2YWx1ZSB3aWxsIGJlIHRyYW5zZmVycmVkLkUBKiBJZiBubyBhY2NvdW50IGV4aXN0cyBhbmQgdGhlIGNhbGwgdmFsdWUgaXMgbm90IGxlc3MgdGhhbiBgZXhpc3RlbnRpYWxfZGVwb3NpdGAsEQFhIHJlZ3VsYXIgYWNjb3VudCB3aWxsIGJlIGNyZWF0ZWQgYW5kIGFueSB2YWx1ZSB3aWxsIGJlIHRyYW5zZmVycmVkLixpbnN0YW50aWF0ZRgBFHZhbHVlVQEBMEJhbGFuY2VPZjxUPgABMHdlaWdodF9saW1pdBUBARhXZWlnaHQAAVRzdG9yYWdlX2RlcG9zaXRfbGltaXRVAQEwQmFsYW5jZU9mPFQ+AAEkY29kZV9oYXNoQAE0c3BfY29yZTo6SDI1NgABEGRhdGEYARxWZWM8dTg+AAEQc2FsdEEHAUBPcHRpb248W3U4OyAzMl0+AAIU9Eluc3RhbnRpYXRlcyBhIGNvbnRyYWN0IGZyb20gYSBwcmV2aW91c2x5IGRlcGxveWVkIHZtIGJpbmFyeS4ANQFUaGlzIGZ1bmN0aW9uIGlzIGlkZW50aWNhbCB0byBbYFNlbGY6Omluc3RhbnRpYXRlX3dpdGhfY29kZWBdIGJ1dCB3aXRob3V0IHRoZUEBY29kZSBkZXBsb3ltZW50IHN0ZXAuIEluc3RlYWQsIHRoZSBgY29kZV9oYXNoYCBvZiBhbiBvbi1jaGFpbiBkZXBsb3llZCB2bSBiaW5hcnlEbXVzdCBiZSBzdXBwbGllZC5UaW5zdGFudGlhdGVfd2l0aF9jb2RlGAEUdmFsdWVVAQEwQmFsYW5jZU9mPFQ+AAEwd2VpZ2h0X2xpbWl0FQEBGFdlaWdodAABVHN0b3JhZ2VfZGVwb3NpdF9saW1pdFUBATBCYWxhbmNlT2Y8VD4AARBjb2RlGAEcVmVjPHU4PgABEGRhdGEYARxWZWM8dTg+AAEQc2FsdEEHAUBPcHRpb248W3U4OyAzMl0+AANsMQFJbnN0YW50aWF0ZXMgYSBuZXcgY29udHJhY3QgZnJvbSB0aGUgc3VwcGxpZWQgYGNvZGVgIG9wdGlvbmFsbHkgdHJhbnNmZXJyaW5nNHNvbWUgYmFsYW5jZS4AIQFUaGlzIGRpc3BhdGNoYWJsZSBoYXMgdGhlIHNhbWUgZWZmZWN0IGFzIGNhbGxpbmcgW2BTZWxmOjp1cGxvYWRfY29kZWBdICs9AVtgU2VsZjo6aW5zdGFudGlhdGVgXS4gQnVuZGxpbmcgdGhlbSB0b2dldGhlciBwcm92aWRlcyBlZmZpY2llbmN5IGdhaW5zLiBQbGVhc2XYYWxzbyBjaGVjayB0aGUgZG9jdW1lbnRhdGlvbiBvZiBbYFNlbGY6OnVwbG9hZF9jb2RlYF0uADAjIFBhcmFtZXRlcnMATQEqIGB2YWx1ZWA6IFRoZSBiYWxhbmNlIHRvIHRyYW5zZmVyIGZyb20gdGhlIGBvcmlnaW5gIHRvIHRoZSBuZXdseSBjcmVhdGVkIGNvbnRyYWN0Li0BKiBgd2VpZ2h0X2xpbWl0YDogVGhlIHdlaWdodCBsaW1pdCBlbmZvcmNlZCB3aGVuIGV4ZWN1dGluZyB0aGUgY29uc3RydWN0b3IuVQEqIGBzdG9yYWdlX2RlcG9zaXRfbGltaXRgOiBUaGUgbWF4aW11bSBhbW91bnQgb2YgYmFsYW5jZSB0aGF0IGNhbiBiZSBjaGFyZ2VkL3Jlc2VydmVkyCAgZnJvbSB0aGUgY2FsbGVyIHRvIHBheSBmb3IgdGhlIHN0b3JhZ2UgY29uc3VtZWQuzCogYGNvZGVgOiBUaGUgY29udHJhY3QgY29kZSB0byBkZXBsb3kgaW4gcmF3IGJ5dGVzLvQqIGBkYXRhYDogVGhlIGlucHV0IGRhdGEgdG8gcGFzcyB0byB0aGUgY29udHJhY3QgY29uc3RydWN0b3IuPQEqIGBzYWx0YDogVXNlZCBmb3IgdGhlIGFkZHJlc3MgZGVyaXZhdGlvbi4gSWYgYFNvbWVgIGlzIHN1cHBsaWVkIHRoZW4gYENSRUFURTJg1AlzZW1hbnRpY3MgYXJlIHVzZWQuIElmIGBOb25lYCB0aGVuIGBDUkFURTFgIGlzIHVzZWQuAACUSW5zdGFudGlhdGlvbiBpcyBleGVjdXRlZCBhcyBmb2xsb3dzOgA5AS0gVGhlIHN1cHBsaWVkIGBjb2RlYCBpcyBkZXBsb3llZCwgYW5kIGEgYGNvZGVfaGFzaGAgaXMgY3JlYXRlZCBmb3IgdGhhdCBjb2RlLlkBLSBJZiB0aGUgYGNvZGVfaGFzaGAgYWxyZWFkeSBleGlzdHMgb24gdGhlIGNoYWluIHRoZSB1bmRlcmx5aW5nIGBjb2RlYCB3aWxsIGJlIHNoYXJlZC5JAS0gVGhlIGRlc3RpbmF0aW9uIGFkZHJlc3MgaXMgY29tcHV0ZWQgYmFzZWQgb24gdGhlIHNlbmRlciwgY29kZV9oYXNoIGFuZCB0aGUgc2FsdC4BAS0gVGhlIHNtYXJ0LWNvbnRyYWN0IGFjY291bnQgaXMgY3JlYXRlZCBhdCB0aGUgY29tcHV0ZWQgYWRkcmVzcy7ALSBUaGUgYHZhbHVlYCBpcyB0cmFuc2ZlcnJlZCB0byB0aGUgbmV3IGFjY291bnQuQQEtIFRoZSBgZGVwbG95YCBmdW5jdGlvbiBpcyBleGVjdXRlZCBpbiB0aGUgY29udGV4dCBvZiB0aGUgbmV3bHktY3JlYXRlZCBhY2NvdW50LmRldGhfaW5zdGFudGlhdGVfd2l0aF9jb2RlIAEUdmFsdWVFBwEQVTI1NgABMHdlaWdodF9saW1pdBUBARhXZWlnaHQAATRldGhfZ2FzX2xpbWl0RQcBEFUyNTYAARBjb2RlGAEcVmVjPHU4PgABEGRhdGEYARxWZWM8dTg+AAFMdHJhbnNhY3Rpb25fZW5jb2RlZBgBHFZlYzx1OD4AAUxlZmZlY3RpdmVfZ2FzX3ByaWNlRQcBEFUyNTYAASxlbmNvZGVkX2xlbjgBDHUzMgAKVD0BU2FtZSBhcyBbYFNlbGY6Omluc3RhbnRpYXRlX3dpdGhfY29kZWBdLCBidXQgaW50ZW5kZWQgdG8gYmUgZGlzcGF0Y2hlZCAqKm9ubHkqKuhieSBhbiBFVk0gdHJhbnNhY3Rpb24gdGhyb3VnaCB0aGUgRVZNIGNvbXBhdGliaWxpdHkgbGF5ZXIuADAjIFBhcmFtZXRlcnMATQEqIGB2YWx1ZWA6IFRoZSBiYWxhbmNlIHRvIHRyYW5zZmVyIGZyb20gdGhlIGBvcmlnaW5gIHRvIHRoZSBuZXdseSBjcmVhdGVkIGNvbnRyYWN0LlUBKiBgd2VpZ2h0X2xpbWl0YDogVGhlIGdhcyBsaW1pdCB1c2VkIHRvIGRlcml2ZSB0aGUgdHJhbnNhY3Rpb24gd2VpZ2h0IGZvciB0cmFuc2FjdGlvbiQgIHBheW1lbnRdASogYGV0aF9nYXNfbGltaXRgOiBUaGUgRXRoZXJldW0gZ2FzIGxpbWl0IGdvdmVybmluZyB0aGUgcmVzb3VyY2UgdXNhZ2Ugb2YgdGhlIGV4ZWN1dGlvbswqIGBjb2RlYDogVGhlIGNvbnRyYWN0IGNvZGUgdG8gZGVwbG95IGluIHJhdyBieXRlcy70KiBgZGF0YWA6IFRoZSBpbnB1dCBkYXRhIHRvIHBhc3MgdG8gdGhlIGNvbnRyYWN0IGNvbnN0cnVjdG9yLjUBKiBgdHJhbnNhY3Rpb25fZW5jb2RlZGA6IFRoZSBSTFAgZW5jb2Rpbmcgb2YgdGhlIHNpZ25lZCBFdGhlcmV1bSB0cmFuc2FjdGlvbixdASAgcmVwcmVzZW50ZWQgYXMgW2NyYXRlOjpldm06OlRyYW5zYWN0aW9uU2lnbmVkXSwgcHJvdmlkZWQgYnkgdGhlIEV0aGVyZXVtIHdhbGxldC4gVGhpc9QgIGlzIHVzZWQgZm9yIGJ1aWxkaW5nIHRoZSBFdGhlcmV1bSB0cmFuc2FjdGlvbiByb290LsQqIGVmZmVjdGl2ZV9nYXNfcHJpY2U6IHRoZSBwcmljZSBvZiBhIHVuaXQgb2YgZ2FzBQEqIGVuY29kZWQgbGVuOiB0aGUgYnl0ZSBjb2RlIHNpemUgb2YgdGhlIGBldGhfdHJhbnNhY3RgIGV4dHJpbnNpYwA5AUNhbGxpbmcgdGhpcyBkaXNwYXRjaGFibGUgZW5zdXJlcyB0aGF0IHRoZSBvcmlnaW4ncyBub25jZSBpcyBidW1wZWQgb25seSBvbmNlLGEBdmlhIHRoZSBgQ2hlY2tOb25jZWAgdHJhbnNhY3Rpb24gZXh0ZW5zaW9uLiBJbiBjb250cmFzdCwgW2BTZWxmOjppbnN0YW50aWF0ZV93aXRoX2NvZGVgXU0BYWxzbyBidW1wcyB0aGUgbm9uY2UgYWZ0ZXIgY29udHJhY3QgaW5zdGFudGlhdGlvbiwgc2luY2UgaXQgbWF5IGJlIGludm9rZWQgbXVsdGlwbGWYdGltZXMgd2l0aGluIGEgYmF0Y2ggY2FsbCB0cmFuc2FjdGlvbi4gZXRoX2NhbGwgARBkZXN0PQcBEEgxNjAAARR2YWx1ZUUHARBVMjU2AAEwd2VpZ2h0X2xpbWl0FQEBGFdlaWdodAABNGV0aF9nYXNfbGltaXRFBwEQVTI1NgABEGRhdGEYARxWZWM8dTg+AAFMdHJhbnNhY3Rpb25fZW5jb2RlZBgBHFZlYzx1OD4AAUxlZmZlY3RpdmVfZ2FzX3ByaWNlRQcBEFUyNTYAASxlbmNvZGVkX2xlbjgBDHUzMgALQPhTYW1lIGFzIFtgU2VsZjo6Y2FsbGBdLCBidXQgaW50ZW5kZWQgdG8gYmUgZGlzcGF0Y2hlZCAqKm9ubHkqKuhieSBhbiBFVk0gdHJhbnNhY3Rpb24gdGhyb3VnaCB0aGUgRVZNIGNvbXBhdGliaWxpdHkgbGF5ZXIuADAjIFBhcmFtZXRlcnMA6CogYGRlc3RgOiBUaGUgRXRoZXJldW0gYWRkcmVzcyBvZiB0aGUgYWNjb3VudCB0byBiZSBjYWxsZWRNASogYHZhbHVlYDogVGhlIGJhbGFuY2UgdG8gdHJhbnNmZXIgZnJvbSB0aGUgYG9yaWdpbmAgdG8gdGhlIG5ld2x5IGNyZWF0ZWQgY29udHJhY3QuVQEqIGB3ZWlnaHRfbGltaXRgOiBUaGUgZ2FzIGxpbWl0IHVzZWQgdG8gZGVyaXZlIHRoZSB0cmFuc2FjdGlvbiB3ZWlnaHQgZm9yIHRyYW5zYWN0aW9uJCAgcGF5bWVudF0BKiBgZXRoX2dhc19saW1pdGA6IFRoZSBFdGhlcmV1bSBnYXMgbGltaXQgZ292ZXJuaW5nIHRoZSByZXNvdXJjZSB1c2FnZSBvZiB0aGUgZXhlY3V0aW9u9CogYGRhdGFgOiBUaGUgaW5wdXQgZGF0YSB0byBwYXNzIHRvIHRoZSBjb250cmFjdCBjb25zdHJ1Y3Rvci41ASogYHRyYW5zYWN0aW9uX2VuY29kZWRgOiBUaGUgUkxQIGVuY29kaW5nIG9mIHRoZSBzaWduZWQgRXRoZXJldW0gdHJhbnNhY3Rpb24sXQEgIHJlcHJlc2VudGVkIGFzIFtjcmF0ZTo6ZXZtOjpUcmFuc2FjdGlvblNpZ25lZF0sIHByb3ZpZGVkIGJ5IHRoZSBFdGhlcmV1bSB3YWxsZXQuIFRoaXPUICBpcyB1c2VkIGZvciBidWlsZGluZyB0aGUgRXRoZXJldW0gdHJhbnNhY3Rpb24gcm9vdC7EKiBlZmZlY3RpdmVfZ2FzX3ByaWNlOiB0aGUgcHJpY2Ugb2YgYSB1bml0IG9mIGdhcwUBKiBlbmNvZGVkIGxlbjogdGhlIGJ5dGUgY29kZSBzaXplIG9mIHRoZSBgZXRoX3RyYW5zYWN0YCBleHRyaW5zaWNIZXRoX3N1YnN0cmF0ZV9jYWxsCAEQY2FsbCABfEJveDw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4AAUx0cmFuc2FjdGlvbl9lbmNvZGVkGAEcVmVjPHU4PgAMKPxFeGVjdXRlcyBhIFN1YnN0cmF0ZSBydW50aW1lIGNhbGwgZnJvbSBhbiBFdGhlcmV1bSB0cmFuc2FjdGlvbi4ARQFUaGlzIGRpc3BhdGNoYWJsZSBpcyBpbnRlbmRlZCB0byBiZSBjYWxsZWQgKipvbmx5KiogdGhyb3VnaCB0aGUgRVZNIGNvbXBhdGliaWxpdHkZAWxheWVyLiBUaGUgcHJvdmlkZWQgY2FsbCB3aWxsIGJlIGRpc3BhdGNoZWQgdXNpbmcgYFJhd09yaWdpbjo6U2lnbmVkYC4AMCMgUGFyYW1ldGVycwDkKiBgb3JpZ2luYDogTXVzdCBiZSBhbiBbYE9yaWdpbjo6RXRoVHJhbnNhY3Rpb25gXSBvcmlnaW4uwCogYGNhbGxgOiBUaGUgU3Vic3RyYXRlIHJ1bnRpbWUgY2FsbCB0byBleGVjdXRlLhkBKiBgdHJhbnNhY3Rpb25fZW5jb2RlZGA6IFRoZSBSTFAgZW5jb2Rpbmcgb2YgdGhlIEV0aGVyZXVtIHRyYW5zYWN0aW9uLCx1cGxvYWRfY29kZQgBEGNvZGUYARxWZWM8dTg+AAFUc3RvcmFnZV9kZXBvc2l0X2xpbWl0VQEBMEJhbGFuY2VPZjxUPgAEOOxVcGxvYWQgbmV3IGBjb2RlYCB3aXRob3V0IGluc3RhbnRpYXRpbmcgYSBjb250cmFjdCBmcm9tIGl0LgAhAUlmIHRoZSBjb2RlIGRvZXMgbm90IGFscmVhZHkgZXhpc3QgYSBkZXBvc2l0IGlzIHJlc2VydmVkIGZyb20gdGhlIGNhbGxlcg0BVGhlIHNpemUgb2YgdGhlIHJlc2VydmUgZGVwZW5kcyBvbiB0aGUgc2l6ZSBvZiB0aGUgc3VwcGxpZWQgYGNvZGVgLgAYIyBOb3RlAFkBQW55b25lIGNhbiBpbnN0YW50aWF0ZSBhIGNvbnRyYWN0IGZyb20gYW55IHVwbG9hZGVkIGNvZGUgYW5kIHRodXMgcHJldmVudCBpdHMgcmVtb3ZhbC5BAVRvIGF2b2lkIHRoaXMgc2l0dWF0aW9uIGEgY29uc3RydWN0b3IgY291bGQgZW1wbG95IGFjY2VzcyBjb250cm9sIHNvIHRoYXQgaXQgY2FuOQFvbmx5IGJlIGluc3RhbnRpYXRlZCBieSBwZXJtaXNzaW9uZWQgZW50aXRpZXMuIFRoZSBzYW1lIGlzIHRydWUgd2hlbiB1cGxvYWRpbmegdGhyb3VnaCBbYFNlbGY6Omluc3RhbnRpYXRlX3dpdGhfY29kZWBdLgBFAUlmIHRoZSByZWZjb3VudCBvZiB0aGUgY29kZSByZWFjaGVzIHplcm8gYWZ0ZXIgdGVybWluYXRpbmcgdGhlIGxhc3QgY29udHJhY3QgdGhhdPRyZWZlcmVuY2VzIHRoaXMgY29kZSwgdGhlIGNvZGUgd2lsbCBiZSByZW1vdmVkIGF1dG9tYXRpY2FsbHkuLHJlbW92ZV9jb2RlBAEkY29kZV9oYXNoQAE0c3BfY29yZTo6SDI1NgAFEDUBUmVtb3ZlIHRoZSBjb2RlIHN0b3JlZCB1bmRlciBgY29kZV9oYXNoYCBhbmQgcmVmdW5kIHRoZSBkZXBvc2l0IHRvIGl0cyBvd25lci4ARQFBIGNvZGUgY2FuIG9ubHkgYmUgcmVtb3ZlZCBieSBpdHMgb3JpZ2luYWwgdXBsb2FkZXIgKGl0cyBvd25lcikgYW5kIG9ubHkgaWYgaXQgaXNkbm90IHVzZWQgYnkgYW55IGNvbnRyYWN0LiBzZXRfY29kZQgBEGRlc3Q9BwEQSDE2MAABJGNvZGVfaGFzaEABNHNwX2NvcmU6OkgyNTYABigJAVByaXZpbGVnZWQgZnVuY3Rpb24gdGhhdCBjaGFuZ2VzIHRoZSBjb2RlIG9mIGFuIGV4aXN0aW5nIGNvbnRyYWN0LgBFAVRoaXMgdGFrZXMgY2FyZSBvZiB1cGRhdGluZyByZWZjb3VudHMgYW5kIGFsbCBvdGhlciBuZWNlc3Nhcnkgb3BlcmF0aW9ucy4gUmV0dXJuc+hhbiBlcnJvciBpZiBlaXRoZXIgdGhlIGBjb2RlX2hhc2hgIG9yIGBkZXN0YCBkbyBub3QgZXhpc3QuABgjIE5vdGUAMQFUaGlzIGRvZXMgKipub3QqKiBjaGFuZ2UgdGhlIGFkZHJlc3Mgb2YgdGhlIGNvbnRyYWN0IGluIHF1ZXN0aW9uLiBUaGlzIG1lYW5zPQF0aGF0IHRoZSBjb250cmFjdCBhZGRyZXNzIGlzIG5vIGxvbmdlciBkZXJpdmVkIGZyb20gaXRzIGNvZGUgaGFzaCBhZnRlciBjYWxsaW5nSHRoaXMgZGlzcGF0Y2hhYmxlLixtYXBfYWNjb3VudAAHHEEBUmVnaXN0ZXIgdGhlIGNhbGxlcnMgYWNjb3VudCBpZCBzbyB0aGF0IGl0IGNhbiBiZSB1c2VkIGluIGNvbnRyYWN0IGludGVyYWN0aW9ucy4AXQFUaGlzIHdpbGwgZXJyb3IgaWYgdGhlIG9yaWdpbiBpcyBhbHJlYWR5IG1hcHBlZCBvciBpcyBhIGV0aCBuYXRpdmUgYEFkZHJlc3MyMGAuIEl0IHdpbGwdAXRha2UgYSBkZXBvc2l0IHRoYXQgY2FuIGJlIHJlbGVhc2VkIGJ5IGNhbGxpbmcgW2BTZWxmOjp1bm1hcF9hY2NvdW50YF0uADkBTm9vcCB3aGVuIFtgQ29uZmlnOjpBdXRvTWFwYF0gaXMgZW5hYmxlZCwgYXMgYWNjb3VudHMgYXJlIGF1dG9tYXRpY2FsbHkgbWFwcGVkfG9uIGNyZWF0aW9uIHZpYSBbYEF1dG9NYXBwZXJgXS5IYmF0Y2hfbWFwX2FjY291bnRzBAEgYWNjb3VudHNhAQFEVmVjPFQ6OkFjY291bnRJZD4ADQRZAU1hcCBtYW55IGFjY291bnRzIGFuZCBtYWtlIHRoZSBUWCBmcmVlIGlmIGF0IGxlYXN0IDkwJSB3ZXJlIHVubWFwcGVkIG9yIGhlbGQgZGVwb3NpdHMuNHVubWFwX2FjY291bnQACBz8VW5yZWdpc3RlciB0aGUgY2FsbGVycyBhY2NvdW50IGlkIGluIG9yZGVyIHRvIGZyZWUgdGhlIGRlcG9zaXQuAEEBVGhlcmUgaXMgbm8gcmVhc29uIHRvIGV2ZXIgY2FsbCB0aGlzIGZ1bmN0aW9uIG90aGVyIHRoYW4gZnJlZWluZyB1cCB0aGUgZGVwb3NpdC74VGhpcyBpcyBvbmx5IHVzZWZ1bCB3aGVuIHRoZSBhY2NvdW50IHNob3VsZCBubyBsb25nZXIgYmUgdXNlZC4AUQFEaXNhYmxlZCB3aGVuIFtgQ29uZmlnOjpBdXRvTWFwYF0gaXMgZW5hYmxlZCwgYXMgYWNjb3VudHMgYXJlIGF1dG9tYXRpY2FsbHkgdW5tYXBwZWRsb24ga2lsbCB2aWEgW2BBdXRvTWFwcGVyYF0ucGRpc3BhdGNoX2FzX2ZhbGxiYWNrX2FjY291bnQEARBjYWxsIAF8Qm94PDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgAJFB0BRGlzcGF0Y2ggYW4gYGNhbGxgIHdpdGggdGhlIG9yaWdpbiBzZXQgdG8gdGhlIGNhbGxlcnMgZmFsbGJhY2sgYWRkcmVzcy4AYQFFdmVyeSBgQWNjb3VudElkMzJgIGNhbiBjb250cm9sIGl0cyBjb3JyZXNwb25kaW5nIGZhbGxiYWNrIGFjY291bnQuIFRoZSBmYWxsYmFjayBhY2NvdW50QQFpcyB0aGUgYEFjY291bnRJZDIwYCB3aXRoIHRoZSBsYXN0IDEyIGJ5dGVzIHNldCB0byBgMHhFRWAuIFRoaXMgaXMgZXNzZW50aWFsbHkgYVUBcmVjb3ZlcnkgZnVuY3Rpb24gaW4gY2FzZSBhbiBgQWNjb3VudElkMjBgIHdhcyB1c2VkIHdpdGhvdXQgY3JlYXRpbmcgYSBtYXBwaW5nIGZpcnN0LgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy49Bwg8cHJpbWl0aXZlX3R5cGVzEEgxNjAAAAQAHAEgW3U4OyAyMF0AAEEHBBhPcHRpb24EBFQBCAEIEE5vbmUAAAAQU29tZQQACAAAAQAARQcIPHByaW1pdGl2ZV90eXBlcxBVMjU2AAAEAEkHASBbdTY0OyA0XQAASQcAAAMEAAAAKABNBwxoaW5kaXZfcGFsbGV0X2RvdG5zX2dhdGV3YXkYcGFsbGV0EENhbGwEBFQAARQwcmVzZXJ2ZV9uYW1lGAEkY2FuZGlkYXRlBAEwVDo6QWNjb3VudElkAAFMY2FuZGlkYXRlX3NpZ25hdHVyZb0EAVxUOjpBdHRlc3RhdGlvblNpZ25hdHVyZQABKGxpdGVfbGFiZWxRBwEkQmFzZUxhYmVsAAEgY2hhdF9rZXlVBwEcQ2hhdEtleQABTHJlc2VydmVkX2Jhc2VfbGFiZWxZBwFET3B0aW9uPEJhc2VMYWJlbD4AASRzaWduZWRfYXQoAQx1NjQAAGxJAVJlc2VydmVzIGEgbGl0ZS1wZXJzb24gbGFiZWwgb24gYERvdG5zUG9wQ29udHJvbGxlcmAgKHZpYSBgUm9vdEdhdGV3YXlEaXNwYXRjaGVyYClJAWZvciBhIExpdGUgUGVyc29uLCBhbmQgb3B0aW9uYWxseSBlbnF1ZXVlcyBhIHJlc2VydmF0aW9uIGZvciBhIGJhc2UgbGFiZWwgdGhlIHVzZXKgaW50ZW5kcyB0byBjbGFpbSBhcyBhIEZ1bGwgUGVyc29uIGxhdGVyLgANAVRoZSBjYWxsZXIgbXVzdCBiZSBhbiBhdHRlc3RlciB3aXRoIGF2YWlsYWJsZSBhbGxvd2FuY2UuIFRoZSB1c2VyJ3MpAXNpZ25hdHVyZSBwcm92ZXMgdGhlaXIgY29uc2VudCB0byB0aGUgcmVzZXJ2YXRpb24gd2l0aCB0aGlzIHNwZWNpZmljIGxhYmVsNGFuZCBhdHRlc3Rlci4AMCMgUGFyYW1ldGVyc10BLSBgY2FuZGlkYXRlYDogdGhlIExpdGUgUGVyc29uJ3MgYWNjb3VudCBmb3Igd2hvbSB0aGUgbGFiZWwgaXMgYmVpbmcgcmVzZXJ2ZWQuIEFsc28gdGhliCAgc2lnbmVyIG9mIGBjYW5kaWRhdGVfc2lnbmF0dXJlYC70LSBgY2FuZGlkYXRlX3NpZ25hdHVyZWA6IHNpZ25hdHVyZSBvdmVyIHRoZSBieXRlcyByZXR1cm5lZCBieWUBICBgUGFsbGV0Ojpjb25zdHJ1Y3RfcmVzZXJ2YXRpb25fbWVzc2FnZWAg4oCUIGEgU0NBTEUtZW5jb2RlZCB0dXBsZSBiaW5kaW5nIHRoZSBhdHRlc3RlcixZASAgY2FuZGlkYXRlLCB0aGUgY2FuZGlkYXRlJ3MgY2hvc2VuICpiYXNlKiB1c2VybmFtZSwgYW5kIGNoYXQga2V5LiBUaGUgZGlnaXQgc3VmZml4IG9mOQEgIGBsaXRlX2xhYmVsYCBpcyAqKm5vdCoqIHBhcnQgb2YgdGhlIHNpZ25lZCBtZXNzYWdlICh0aGUgZGlnaXRzIGFyZSBhbGxvY2F0ZWRJASAgc2VydmVyLXNpZGUgYWZ0ZXIgdGhlIGNhbmRpZGF0ZSBzaWducywgc28gdGhlIGNhbmRpZGF0ZSBjYW5ub3QgY29tbWl0IHRvIHRoZW0gYXRAICBzaWduaW5nIHRpbWUpLjUBLSBgbGl0ZV9sYWJlbGA6IHRoZSBsaXRlLXBlcnNvbiBsYWJlbC4gTXVzdCBiZSBgPGRucy1zdGVtPi48MisgZGlnaXRzPmAgKGUuZy5JASAgYGFsaWNlLjQyYCksIG1hdGNoaW5nIGBTdHJpbmdVdGlscy5pc0xpdGVQZXJzb25MYWJlbGAgaW4gdGhlIGNvbnRyYWN0cy4gT25seSB0aGVZASAgYDxkbnMtc3RlbT5gIHBvcnRpb24gZW50ZXJzIHRoZSBzaWduZWQgbWVzc2FnZTsgdGhlIGRpZ2l0cyByaWRlIGFsb25nIGFzIGFuIHVuc2lnbmVkEQEgIGV4dHJpbnNpYyBhcmd1bWVudCB1c2VkIGZvciB0aGUgY29udHJhY3QgY2FsbGRhdGEgYW5kIHN0b3JhZ2Uga2V5LtAtIGBjaGF0X2tleWA6IDY1LWJ5dGUgcHVibGljIGtleSB1c2VkIGZvciBFQ0RIIGNoYXQuWQEtIGByZXNlcnZlZF9iYXNlX2xhYmVsYDogb3B0aW9uYWwgYmFzZSBsYWJlbCByZXNlcnZlZCBmb3IgdGhlIGNhbmRpZGF0ZSB0byBsYXRlciBjbGFpbfggIGFzIGEgRnVsbCBQZXJzb24uIE11c3QgYmUgYSBzaW5nbGUgRE5TIGxhYmVsIChlLmcuIGBhbGljZWApLlkBLSBgc2lnbmVkX2F0YDogVW5peC10aW1lIHNlY29uZCBhdCB3aGljaCB0aGUgY2FuZGlkYXRlIHNpZ25lZCB0aGUgcmVzZXJ2YXRpb24gbWVzc2FnZS5ZASAgVGhlIHNpZ25hdHVyZSBpcyBhY2NlcHRlZCBvbmx5IGlmIGBzaWduZWRfYXQgPD0gbm93ICsgTWF4RnV0dXJlU2tld1NlY29uZHNgIGFuZCBgbm93SQEgIDw9IHNpZ25lZF9hdCArIE1heFZhbGlkaXR5U2Vjb25kc2AsIHdoZXJlIGBub3dgIGNvbWVzIGZyb20gW2BDb25maWc6OlVuaXhUaW1lYF0uNHJlZ2lzdGVyX25hbWUMAQx3aG8EATBUOjpBY2NvdW50SWQAARRsYWJlbFEHASRCYXNlTGFiZWwAARBsaW5rXQcBEExpbmsAAUhNAVJlZ2lzdGVycyBhIGZ1bGwtcGVyc29uIGxhYmVsIG9uIGBEb3Ruc1BvcENvbnRyb2xsZXJgICh2aWEgYFJvb3RHYXRld2F5RGlzcGF0Y2hlcmApaGZvciBhIGZ1bGx5IHByb3ZlbiBwZXJzb24uAF0BVGhlIG9yaWdpbiBtdXN0IGJlIFtgT3JpZ2luOjpQZXJzb25SZWdpc3RyYXRpb25gXSwgcHJvZHVjZWQgYnkgW2BBc0RvdG5zR2F0ZXdheWBdIGFmdGVyRQFpdCB2ZXJpZmllcyB0aGUgcmluZyBtZW1iZXJzaGlwIHByb29mIGFuZCB0aGUgb2ZmLWNoYWluIHNpZ25hdHVyZSBmcm9tIGB3aG9gLiBBbGz8YXV0aGVudGljYXRpb24sIGZvcm1hdCBhbmQgcmVwbGF5IGNoZWNrcyBsaXZlIGluIHRoZSBleHRlbnNpb24uADAjIFBhcmFtZXRlcnNNAS0gYHdob2A6IHRoZSBhY2NvdW50IHRoYXQgb3ducyB0aGUgZnVsbC1wZXJzb24gbGFiZWw7IGl0cyBFVk0tbWFwcGVkIGFkZHJlc3MgaXMgdGhlOQEgIHJlY2lwaWVudCBvbiB0aGUgYERvdG5zUG9wQ29udHJvbGxlcmAgY29udHJhY3QuIE11c3QgbWF0Y2ggdGhlIGB3aG9gIGFscmVhZHmYICBhdXRoZW50aWNhdGVkIGJ5IFtgQXNEb3Ruc0dhdGV3YXlgXS5VAS0gYGxhYmVsYDogdGhlIGZ1bGwtcGVyc29uIGxhYmVsLiBNdXN0IGJlIGEgc2luZ2xlIEROUyBsYWJlbCAoZS5nLiBgYWxpY2VgKSwgbWF0Y2hpbme8ICBgU3RyaW5nVXRpbHMuaXNTaW5nbGVMYWJlbGAgaW4gdGhlIGNvbnRyYWN0cy5BAS0gYGxpbmtgOiBob3cgdGhlIGZ1bGwtcGVyc29uIGxhYmVsIHJlbGF0ZXMgdG8gYSBwcmUtZXhpc3RpbmcgbGl0ZS1wZXJzb24gbGFiZWw6VQEgIC0gYExpbms6OkxpdGVVc2VybmFtZShsaXRlX2xhYmVsKWAg4oCUIGxpbmtzIHRvIGFuIGV4aXN0aW5nIGxpdGUtcGVyc29uIGxhYmVsIChtdXN0XQEgICAgbWF0Y2ggdGhlIGxpdGUgZm9ybWF0IGA8ZG5zLXN0ZW0+LjwyKyBkaWdpdHM+YCk7IHRoZSBjaGF0IGtleSBpcyBpbmhlcml0ZWQgZnJvbSB0aGU8ICAgIGxpdGUgZW50cnkuSQEgIC0gYExpbms6Ok5vbmUoY2hhdF9rZXkpYCDigJQgc3RhbmRhbG9uZSByZWdpc3RyYXRpb24gd2l0aCBhIGZyZXNoIEVDREggY2hhdCBrZXkueGluY3JlYXNlX2F0dGVzdGF0aW9uX2FsbG93YW5jZQgBHGFjY291bnQEATBUOjpBY2NvdW50SWQAARRjb3VudDgBDHUzMgACDNBHcmFudHMgYXR0ZXN0YXRpb24gYWxsb3dhbmNlIHRvIGFuIGF0dGVzdGVyIGFjY291bnQuAMRUaGUgb3JpZ2luIG11c3QgYmUgYEF0dGVzdGF0aW9uQWxsb3dhbmNlTWFuYWdlcmAubGNsZWFyX2F0dGVzdGF0aW9uX2FsbG93YW5jZQQBHGFjY291bnQEATBUOjpBY2NvdW50SWQAAwzkQ2xlYXJzIGFsbCBhdHRlc3RhdGlvbiBhbGxvd2FuY2UgZm9yIGFuIGF0dGVzdGVyIGFjY291bnQuAMRUaGUgb3JpZ2luIG11c3QgYmUgYEF0dGVzdGF0aW9uQWxsb3dhbmNlTWFuYWdlcmAuWHNldF9kaXNwYXRjaGVyX2FkZHJlc3MEARxhZGRyZXNzPQcBEEgxNjAABAzIU2V0cyB0aGUgYFJvb3RHYXRld2F5RGlzcGF0Y2hlcmAgY29udHJhY3QgYWRkcmVzcy4AKQFUaGUgb3JpZ2luIG11c3QgYmUgYERpc3BhdGNoZXJBZGRyZXNzTWFuYWdlcmAuIE92ZXJ3cml0ZXMgYW55IHByaW9yIHZhbHVlLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy5RBwxoaW5kaXZfcGFsbGV0X2RvdG5zX2dhdGV3YXkUdHlwZXMkQmFzZUxhYmVsAAAEAJ0BAXBCb3VuZGVkVmVjPHU4LCBDb25zdFUzMjwzMj4+AABVBwxoaW5kaXZfcGFsbGV0X2RvdG5zX2dhdGV3YXkUdHlwZXMcQ2hhdEtleQAABAB5AQEgW3U4OyA2NV0AAFkHBBhPcHRpb24EBFQBUQcBCBBOb25lAAAAEFNvbWUEAFEHAAABAABdBwxoaW5kaXZfcGFsbGV0X2RvdG5zX2dhdGV3YXkUdHlwZXMQTGluawABCDBMaXRlVXNlcm5hbWUEAFEHASRCYXNlTGFiZWwAAAAQTm9uZQQAVQcBHENoYXRLZXkAAQAAYQcMfGluZGl2X3BhbGxldF9vcmlnaW5fcmVzdHJpY3Rpb24YcGFsbGV0EENhbGwEBFQAAQQsY2xlYW5fdXNhZ2UEARhlbnRpdHllBwFMVDo6UmVzdHJpY3RlZEVudGl0eQABCEkBQWxsb3cgdG8gY2xlYW4gdXNhZ2UgYXNzb2NpYXRlZCB3aXRoIGFuIGVudGl0eSB3aGVuIGl0IGlzIHplcm8gb3Igd2hlbiB0aGVyZSBpcyBub5Bsb25nZXIgYW55IGFsbG93YW5jZSBmb3IgdGhlIG9yaWdpbi4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuZQcIXGFzc2V0X2h1Yl9wYXNlb19ydW50aW1lQFJlc3RyaWN0ZWRFbnRpdHkAAQRcRG90bnNQZXJzb25SZWdpc3RyYXRpb24EAAgBcGluZGl2X3N1cHBvcnQ6OnRyYWl0czo6QWxpYXMAAAAAaQcMLHBhbGxldF9zdWRvGHBhbGxldBBDYWxsBARUAAEUEHN1ZG8EARBjYWxsIAF8Qm94PDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgAABDUBQXV0aGVudGljYXRlcyB0aGUgc3VkbyBrZXkgYW5kIGRpc3BhdGNoZXMgYSBmdW5jdGlvbiBjYWxsIHdpdGggYFJvb3RgIG9yaWdpbi5Uc3Vkb191bmNoZWNrZWRfd2VpZ2h0CAEQY2FsbCABfEJveDw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4AARh3ZWlnaHQVAQEYV2VpZ2h0AAEUNQFBdXRoZW50aWNhdGVzIHRoZSBzdWRvIGtleSBhbmQgZGlzcGF0Y2hlcyBhIGZ1bmN0aW9uIGNhbGwgd2l0aCBgUm9vdGAgb3JpZ2luLi0BVGhpcyBmdW5jdGlvbiBkb2VzIG5vdCBjaGVjayB0aGUgd2VpZ2h0IG9mIHRoZSBjYWxsLCBhbmQgaW5zdGVhZCBhbGxvd3MgdGhlsFN1ZG8gdXNlciB0byBzcGVjaWZ5IHRoZSB3ZWlnaHQgb2YgdGhlIGNhbGwuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4cc2V0X2tleQQBDG5ldwABUEFjY291bnRJZExvb2t1cE9mPFQ+AAIIXQFBdXRoZW50aWNhdGVzIHRoZSBjdXJyZW50IHN1ZG8ga2V5IGFuZCBzZXRzIHRoZSBnaXZlbiBBY2NvdW50SWQgKGBuZXdgKSBhcyB0aGUgbmV3IHN1ZG8Qa2V5LhxzdWRvX2FzCAEMd2hvAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARBjYWxsIAF8Qm94PDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgADEE0BQXV0aGVudGljYXRlcyB0aGUgc3VkbyBrZXkgYW5kIGRpc3BhdGNoZXMgYSBmdW5jdGlvbiBjYWxsIHdpdGggYFNpZ25lZGAgb3JpZ2luIGZyb21AYSBnaXZlbiBhY2NvdW50LgDMVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uKHJlbW92ZV9rZXkABAyEUGVybWFuZW50bHkgcmVtb3ZlcyB0aGUgc3VkbyBrZXkuAGwqKlRoaXMgY2Fubm90IGJlIHVuLWRvbmUuKioEDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMubQcMNHBhbGxldF9haF9vcHMYcGFsbGV0EENhbGwEBFQAARRcdW5yZXNlcnZlX2xlYXNlX2RlcG9zaXQMARRibG9jazgBREJsb2NrTnVtYmVyRm9yPFQ+AAEkZGVwb3NpdG9ykQEBUE9wdGlvbjxUOjpBY2NvdW50SWQ+AAEccGFyYV9pZKABGFBhcmFJZAAAIPhVbnJlc2VydmUgdGhlIGRlcG9zaXQgdGhhdCB3YXMgdGFrZW4gZm9yIGNyZWF0aW5nIGEgY3Jvd2Rsb2FuLgBdAVRoaXMgY2FuIGJlIGNhbGxlZCBieSBhbnkgc2lnbmVkIG9yaWdpbi4gSXQgdW5yZXNlcnZlcyB0aGUgbGVhc2UgZGVwb3NpdCBvbiB0aGUgYWNjb3VudFkBdGhhdCB3b24gdGhlIGxlYXNlIGF1Y3Rpb24uIEl0IGNhbiBiZSB1bnJlc2VydmVkIG9uY2UgYWxsIGxlYXNlcyBleHBpcmVkLiBOb3RlIHRoYXQgaXRRAXdpbGwgYmUgY2FsbGVkIGF1dG9tYXRpY2FsbHkgZnJvbSBgd2l0aGRyYXdfY3Jvd2Rsb2FuX2NvbnRyaWJ1dGlvbmAgZm9yIHRoZSBtYXRjaGluZ0hjcm93ZGxvYW4gYWNjb3VudC4AUQFTb2xvIGJpZGRlciBhY2NvdW50cyB0aGF0IHdvbiBsZWFzZSBhdWN0aW9ucyBjYW4gdXNlIHRoaXMgdG8gdW5yZXNlcnZlIHRoZWlyIGFtb3VudC58d2l0aGRyYXdfY3Jvd2Rsb2FuX2NvbnRyaWJ1dGlvbgwBFGJsb2NrOAFEQmxvY2tOdW1iZXJGb3I8VD4AASRkZXBvc2l0b3KRAQFQT3B0aW9uPFQ6OkFjY291bnRJZD4AARxwYXJhX2lkoAEYUGFyYUlkAAEcyFdpdGhkcmF3IHRoZSBjb250cmlidXRpb24gb2YgYSBmaW5pc2hlZCBjcm93ZGxvYW4uANBBIGNyb3dkbG9hbiBjb250cmlidXRpb24gY2FuIGJlIHdpdGhkcmF3biBpZiBlaXRoZXI61C0gVGhlIGNyb3dkbG9hbiBmYWlsZWQgdG8gaW4gYW4gYXVjdGlvbiBhbmQgdGltZWQgb3V0nC0gV29uIGFuIGF1Y3Rpb24gYW5kIGFsbCBsZWFzZXMgZXhwaXJlZACMQ2FuIGJlIGNhbGxlZCBieSBhbnkgc2lnbmVkIG9yaWdpbi5sdW5yZXNlcnZlX2Nyb3dkbG9hbl9yZXNlcnZlDAEUYmxvY2s4AURCbG9ja051bWJlckZvcjxUPgABJGRlcG9zaXRvcpEBAVBPcHRpb248VDo6QWNjb3VudElkPgABHHBhcmFfaWSgARhQYXJhSWQAAiD4VW5yZXNlcnZlIHRoZSBkZXBvc2l0IHRoYXQgd2FzIHRha2VuIGZvciBjcmVhdGluZyBhIGNyb3dkbG9hbi4AfFRoaXMgY2FuIGJlIGNhbGxlZCBvbmNlIGVpdGhlcjrYLSBUaGUgY3Jvd2Rsb2FuIGZhaWxlZCB0byB3aW4gYW4gYXVjdGlvbiBhbmQgdGltZWQgb3V0IQEtIFdvbiBhbiBhdWN0aW9uLCBhbGwgbGVhc2VzIGV4cGlyZWQgYW5kIGFsbCBjb250cmlidXRpb25zIGFyZSB3aXRoZHJhd24AWQFDYW4gYmUgY2FsbGVkIGJ5IGFueSBzaWduZWQgb3JpZ2luLiBUaGUgY29uZGl0aW9uIHRoYXQgYWxsIGNvbnRyaWJ1dGlvbnMgYXJlIHdpdGhkcmF3buBpcyBpbiBwbGFjZSBzaW5jZSB0aGUgcmVzZXJ2ZSBhY3RzIGFzIGEgc3RvcmFnZSBkZXBvc2l0Lox0cmFuc2Zlcl90b19wb3N0X21pZ3JhdGlvbl90cmVhc3VyeQQBIGFzc2V0X2lkHQIB+EJveDw8VDo6RnVuZ2libGVzIGFzIEZ1bmdpYmxlc0luc3BlY3Q8VDo6QWNjb3VudElkPj46OkFzc2V0SWQ+AAMQSQFUcmFuc2ZlciB0aGUgYmFsYW5jZSBmcm9tIHRoZSBwcmUtbWlncmF0aW9uIHRyZWFzdXJ5IGFjY291bnQgdG8gdGhlIHBvc3QtbWlncmF0aW9uRHRyZWFzdXJ5IGFjY291bnQuAPhUaGlzIGNhbGwgY2FuIG9ubHkgYmUgY2FsbGVkIGFmdGVyIHRoZSBtaWdyYXRpb24gaXMgY29tcGxldGVkLsR0cmFuc2xhdGVfcGFyYV9zb3ZlcmVpZ25fY2hpbGRfdG9fc2libGluZ19kZXJpdmVkEAEccGFyYV9pZO0DAQx1MTYAATxkZXJpdmF0aW9uX3BhdGhxBwEgVmVjPHUxNj4AASxvbGRfYWNjb3VudAQBMFQ6OkFjY291bnRJZAABLG5ld19hY2NvdW50BAEwVDo6QWNjb3VudElkAAQsPQFUcmFuc2xhdGUgcmVjdXJzaXZlbHkgZGVyaXZlZCBwYXJhY2hhaW4gc292ZXJlaWduIGNoaWxkIGFjY291bnQgdG8gaXRzIHNpYmxpbmcuAGEBVXNlcyB0aGUgc2FtZSBkZXJpdmF0aW9uIHBhdGggb24gdGhlIHNpYmxpbmcuIFRoZSBvbGQgYW5kIG5ldyBhY2NvdW50IGFyZ3VtZW50cyBhcmUgb25seUEBd2l0bmVzcyBkYXRhIHRvIGVuc3VyZSBjb3JyZWN0IHVzYWdlLiBDYW4gb25seSBiZSBjYWxsZWQgYnkgdGhlIGBNaWdyYXRlT3JpZ2luYC4AOFRoaXMgbWlncmF0ZXM6UC0gTmF0aXZlIERPVCBiYWxhbmNlqC0gQWxsIGFzc2V0cyBsaXN0ZWQgaW4gYFQ6OlJlbGV2YW50QXNzZXRzYEQtIFN0YWtlZCBiYWxhbmNlcwBJAVRoaW5ncyBsaWtlIG5vbi1yZWxldmFudCBhc3NldHMgb3IgdmVzdGVkIHRyYW5zZmVycyBtYXkgcmVtYWluIG9uIHRoZSBvbGQgYWNjb3VudC4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMucQcAAALtAwB1BwyAaW5kaXZfcGFsbGV0X3ZhbHVlX3RyYW5zZmVyX2F1dGgkZXh0ZW5zaW9uWEF1dGhvcml6ZVZhbHVlVHJhbnNmZXIIBFQABFAAAAQAeQcBjE9wdGlvbjxzcF9jb3JlOjplZDI1NTE5OjpTaWduYXR1cmU+AAB5BwQYT3B0aW9uBARUAcEEAQgQTm9uZQAAABBTb21lBADBBAAAAQAAfQcQMGZyYW1lX3N5c3RlbShleHRlbnNpb25zOGF1dGhvcml6ZV9jYWxsNEF1dGhvcml6ZUNhbGwEBFQAAAAAgQcMRGluZGl2X3BhbGxldF9wZ2FzJGV4dGVuc2lvbhhBc1BnYXMEBFQAAAQAhQcBVE9wdGlvbjxBc1BnYXNJbmZvPFQ+PgAAhQcEGE9wdGlvbgQEVAGJBwEIEE5vbmUAAAAQU29tZQQAiQcAAAEAAIkHDERpbmRpdl9wYWxsZXRfcGdhcyRleHRlbnNpb24oQXNQZ2FzSW5mbwQEVAABBBRDbGFpbRQBFHByb29mMQcBKFByb29mT2Y8VD4AAShyaW5nX2luZGV4OAEkUmluZ0luZGV4AAEgcmV2aXNpb244ATRSZXZpc2lvbkluZGV4AAEoY29sbGVjdGlvbhkEAThQZ2FzQ29sbGVjdGlvbgABDGRheTgBDHUzMgAAAACNBwxsaW5kaXZfcGFsbGV0X2FsaWFzX2FjY291bnRzJGV4dGVuc2lvbixBc1JpbmdBbGlhcwQEVAAABACRBwFoT3B0aW9uPEFzUmluZ0FsaWFzSW5mbzxUPj4AAJEHBBhPcHRpb24EBFQBlQcBCBBOb25lAAAAEFNvbWUEAJUHAAABAACVBwxsaW5kaXZfcGFsbGV0X2FsaWFzX2FjY291bnRzJGV4dGVuc2lvbjxBc1JpbmdBbGlhc0luZm8EBFQAAQQsV2l0aEFjY291bnQEADgBIFQ6Ok5vbmNlAAAAAJkHDGhpbmRpdl9wYWxsZXRfZG90bnNfZ2F0ZXdheSRleHRlbnNpb244QXNEb3Ruc0dhdGV3YXkEBFQAAAQAnQcBdE9wdGlvbjxBc0RvdG5zR2F0ZXdheUluZm88VD4+AACdBwQYT3B0aW9uBARUAaEHAQgQTm9uZQAAABBTb21lBAChBwAAAQAAoQcMaGluZGl2X3BhbGxldF9kb3Ruc19nYXRld2F5JGV4dGVuc2lvbkhBc0RvdG5zR2F0ZXdheUluZm8EBFQAAQRAUmVnaXN0ZXJGdWxsTmFtZQwBFHByb29mMQcBKFByb29mT2Y8VD4AAShyaW5nX2luZGV4OAEkUmluZ0luZGV4AAEkc2lnbmF0dXJlvQQBXFQ6OkF0dGVzdGF0aW9uU2lnbmF0dXJlAAAAAKUHCHxpbmRpdl9wYWxsZXRfb3JpZ2luX3Jlc3RyaWN0aW9uOFJlc3RyaWN0T3JpZ2luBARUAAAEAF0BARBib29sAACpBxAwZnJhbWVfc3lzdGVtKGV4dGVuc2lvbnNUY2hlY2tfbm9uX3plcm9fc2VuZGVySENoZWNrTm9uWmVyb1NlbmRlcgQEVAAAAACtBxAwZnJhbWVfc3lzdGVtKGV4dGVuc2lvbnNIY2hlY2tfc3BlY192ZXJzaW9uQENoZWNrU3BlY1ZlcnNpb24EBFQAAAAAsQcQMGZyYW1lX3N5c3RlbShleHRlbnNpb25zQGNoZWNrX3R4X3ZlcnNpb244Q2hlY2tUeFZlcnNpb24EBFQAAAAAtQcQMGZyYW1lX3N5c3RlbShleHRlbnNpb25zNGNoZWNrX2dlbmVzaXMwQ2hlY2tHZW5lc2lzBARUAAAAALkHEDBmcmFtZV9zeXN0ZW0oZXh0ZW5zaW9uczxjaGVja19tb3J0YWxpdHk4Q2hlY2tNb3J0YWxpdHkEBFQAAAQAvQcBDEVyYQAAvQcQKHNwX3J1bnRpbWUcZ2VuZXJpYwxlcmEMRXJhAAEBBCBJbW1vcnRhbAAAABxNb3J0YWwxBAAMAAABABxNb3J0YWwyBAAMAAACABxNb3J0YWwzBAAMAAADABxNb3J0YWw0BAAMAAAEABxNb3J0YWw1BAAMAAAFABxNb3J0YWw2BAAMAAAGABxNb3J0YWw3BAAMAAAHABxNb3J0YWw4BAAMAAAIABxNb3J0YWw5BAAMAAAJACBNb3J0YWwxMAQADAAACgAgTW9ydGFsMTEEAAwAAAsAIE1vcnRhbDEyBAAMAAAMACBNb3J0YWwxMwQADAAADQAgTW9ydGFsMTQEAAwAAA4AIE1vcnRhbDE1BAAMAAAPACBNb3J0YWwxNgQADAAAEAAgTW9ydGFsMTcEAAwAABEAIE1vcnRhbDE4BAAMAAASACBNb3J0YWwxOQQADAAAEwAgTW9ydGFsMjAEAAwAABQAIE1vcnRhbDIxBAAMAAAVACBNb3J0YWwyMgQADAAAFgAgTW9ydGFsMjMEAAwAABcAIE1vcnRhbDI0BAAMAAAYACBNb3J0YWwyNQQADAAAGQAgTW9ydGFsMjYEAAwAABoAIE1vcnRhbDI3BAAMAAAbACBNb3J0YWwyOAQADAAAHAAgTW9ydGFsMjkEAAwAAB0AIE1vcnRhbDMwBAAMAAAeACBNb3J0YWwzMQQADAAAHwAgTW9ydGFsMzIEAAwAACAAIE1vcnRhbDMzBAAMAAAhACBNb3J0YWwzNAQADAAAIgAgTW9ydGFsMzUEAAwAACMAIE1vcnRhbDM2BAAMAAAkACBNb3J0YWwzNwQADAAAJQAgTW9ydGFsMzgEAAwAACYAIE1vcnRhbDM5BAAMAAAnACBNb3J0YWw0MAQADAAAKAAgTW9ydGFsNDEEAAwAACkAIE1vcnRhbDQyBAAMAAAqACBNb3J0YWw0MwQADAAAKwAgTW9ydGFsNDQEAAwAACwAIE1vcnRhbDQ1BAAMAAAtACBNb3J0YWw0NgQADAAALgAgTW9ydGFsNDcEAAwAAC8AIE1vcnRhbDQ4BAAMAAAwACBNb3J0YWw0OQQADAAAMQAgTW9ydGFsNTAEAAwAADIAIE1vcnRhbDUxBAAMAAAzACBNb3J0YWw1MgQADAAANAAgTW9ydGFsNTMEAAwAADUAIE1vcnRhbDU0BAAMAAA2ACBNb3J0YWw1NQQADAAANwAgTW9ydGFsNTYEAAwAADgAIE1vcnRhbDU3BAAMAAA5ACBNb3J0YWw1OAQADAAAOgAgTW9ydGFsNTkEAAwAADsAIE1vcnRhbDYwBAAMAAA8ACBNb3J0YWw2MQQADAAAPQAgTW9ydGFsNjIEAAwAAD4AIE1vcnRhbDYzBAAMAAA/ACBNb3J0YWw2NAQADAAAQAAgTW9ydGFsNjUEAAwAAEEAIE1vcnRhbDY2BAAMAABCACBNb3J0YWw2NwQADAAAQwAgTW9ydGFsNjgEAAwAAEQAIE1vcnRhbDY5BAAMAABFACBNb3J0YWw3MAQADAAARgAgTW9ydGFsNzEEAAwAAEcAIE1vcnRhbDcyBAAMAABIACBNb3J0YWw3MwQADAAASQAgTW9ydGFsNzQEAAwAAEoAIE1vcnRhbDc1BAAMAABLACBNb3J0YWw3NgQADAAATAAgTW9ydGFsNzcEAAwAAE0AIE1vcnRhbDc4BAAMAABOACBNb3J0YWw3OQQADAAATwAgTW9ydGFsODAEAAwAAFAAIE1vcnRhbDgxBAAMAABRACBNb3J0YWw4MgQADAAAUgAgTW9ydGFsODMEAAwAAFMAIE1vcnRhbDg0BAAMAABUACBNb3J0YWw4NQQADAAAVQAgTW9ydGFsODYEAAwAAFYAIE1vcnRhbDg3BAAMAABXACBNb3J0YWw4OAQADAAAWAAgTW9ydGFsODkEAAwAAFkAIE1vcnRhbDkwBAAMAABaACBNb3J0YWw5MQQADAAAWwAgTW9ydGFsOTIEAAwAAFwAIE1vcnRhbDkzBAAMAABdACBNb3J0YWw5NAQADAAAXgAgTW9ydGFsOTUEAAwAAF8AIE1vcnRhbDk2BAAMAABgACBNb3J0YWw5NwQADAAAYQAgTW9ydGFsOTgEAAwAAGIAIE1vcnRhbDk5BAAMAABjACRNb3J0YWwxMDAEAAwAAGQAJE1vcnRhbDEwMQQADAAAZQAkTW9ydGFsMTAyBAAMAABmACRNb3J0YWwxMDMEAAwAAGcAJE1vcnRhbDEwNAQADAAAaAAkTW9ydGFsMTA1BAAMAABpACRNb3J0YWwxMDYEAAwAAGoAJE1vcnRhbDEwNwQADAAAawAkTW9ydGFsMTA4BAAMAABsACRNb3J0YWwxMDkEAAwAAG0AJE1vcnRhbDExMAQADAAAbgAkTW9ydGFsMTExBAAMAABvACRNb3J0YWwxMTIEAAwAAHAAJE1vcnRhbDExMwQADAAAcQAkTW9ydGFsMTE0BAAMAAByACRNb3J0YWwxMTUEAAwAAHMAJE1vcnRhbDExNgQADAAAdAAkTW9ydGFsMTE3BAAMAAB1ACRNb3J0YWwxMTgEAAwAAHYAJE1vcnRhbDExOQQADAAAdwAkTW9ydGFsMTIwBAAMAAB4ACRNb3J0YWwxMjEEAAwAAHkAJE1vcnRhbDEyMgQADAAAegAkTW9ydGFsMTIzBAAMAAB7ACRNb3J0YWwxMjQEAAwAAHwAJE1vcnRhbDEyNQQADAAAfQAkTW9ydGFsMTI2BAAMAAB+ACRNb3J0YWwxMjcEAAwAAH8AJE1vcnRhbDEyOAQADAAAgAAkTW9ydGFsMTI5BAAMAACBACRNb3J0YWwxMzAEAAwAAIIAJE1vcnRhbDEzMQQADAAAgwAkTW9ydGFsMTMyBAAMAACEACRNb3J0YWwxMzMEAAwAAIUAJE1vcnRhbDEzNAQADAAAhgAkTW9ydGFsMTM1BAAMAACHACRNb3J0YWwxMzYEAAwAAIgAJE1vcnRhbDEzNwQADAAAiQAkTW9ydGFsMTM4BAAMAACKACRNb3J0YWwxMzkEAAwAAIsAJE1vcnRhbDE0MAQADAAAjAAkTW9ydGFsMTQxBAAMAACNACRNb3J0YWwxNDIEAAwAAI4AJE1vcnRhbDE0MwQADAAAjwAkTW9ydGFsMTQ0BAAMAACQACRNb3J0YWwxNDUEAAwAAJEAJE1vcnRhbDE0NgQADAAAkgAkTW9ydGFsMTQ3BAAMAACTACRNb3J0YWwxNDgEAAwAAJQAJE1vcnRhbDE0OQQADAAAlQAkTW9ydGFsMTUwBAAMAACWACRNb3J0YWwxNTEEAAwAAJcAJE1vcnRhbDE1MgQADAAAmAAkTW9ydGFsMTUzBAAMAACZACRNb3J0YWwxNTQEAAwAAJoAJE1vcnRhbDE1NQQADAAAmwAkTW9ydGFsMTU2BAAMAACcACRNb3J0YWwxNTcEAAwAAJ0AJE1vcnRhbDE1OAQADAAAngAkTW9ydGFsMTU5BAAMAACfACRNb3J0YWwxNjAEAAwAAKAAJE1vcnRhbDE2MQQADAAAoQAkTW9ydGFsMTYyBAAMAACiACRNb3J0YWwxNjMEAAwAAKMAJE1vcnRhbDE2NAQADAAApAAkTW9ydGFsMTY1BAAMAAClACRNb3J0YWwxNjYEAAwAAKYAJE1vcnRhbDE2NwQADAAApwAkTW9ydGFsMTY4BAAMAACoACRNb3J0YWwxNjkEAAwAAKkAJE1vcnRhbDE3MAQADAAAqgAkTW9ydGFsMTcxBAAMAACrACRNb3J0YWwxNzIEAAwAAKwAJE1vcnRhbDE3MwQADAAArQAkTW9ydGFsMTc0BAAMAACuACRNb3J0YWwxNzUEAAwAAK8AJE1vcnRhbDE3NgQADAAAsAAkTW9ydGFsMTc3BAAMAACxACRNb3J0YWwxNzgEAAwAALIAJE1vcnRhbDE3OQQADAAAswAkTW9ydGFsMTgwBAAMAAC0ACRNb3J0YWwxODEEAAwAALUAJE1vcnRhbDE4MgQADAAAtgAkTW9ydGFsMTgzBAAMAAC3ACRNb3J0YWwxODQEAAwAALgAJE1vcnRhbDE4NQQADAAAuQAkTW9ydGFsMTg2BAAMAAC6ACRNb3J0YWwxODcEAAwAALsAJE1vcnRhbDE4OAQADAAAvAAkTW9ydGFsMTg5BAAMAAC9ACRNb3J0YWwxOTAEAAwAAL4AJE1vcnRhbDE5MQQADAAAvwAkTW9ydGFsMTkyBAAMAADAACRNb3J0YWwxOTMEAAwAAMEAJE1vcnRhbDE5NAQADAAAwgAkTW9ydGFsMTk1BAAMAADDACRNb3J0YWwxOTYEAAwAAMQAJE1vcnRhbDE5NwQADAAAxQAkTW9ydGFsMTk4BAAMAADGACRNb3J0YWwxOTkEAAwAAMcAJE1vcnRhbDIwMAQADAAAyAAkTW9ydGFsMjAxBAAMAADJACRNb3J0YWwyMDIEAAwAAMoAJE1vcnRhbDIwMwQADAAAywAkTW9ydGFsMjA0BAAMAADMACRNb3J0YWwyMDUEAAwAAM0AJE1vcnRhbDIwNgQADAAAzgAkTW9ydGFsMjA3BAAMAADPACRNb3J0YWwyMDgEAAwAANAAJE1vcnRhbDIwOQQADAAA0QAkTW9ydGFsMjEwBAAMAADSACRNb3J0YWwyMTEEAAwAANMAJE1vcnRhbDIxMgQADAAA1AAkTW9ydGFsMjEzBAAMAADVACRNb3J0YWwyMTQEAAwAANYAJE1vcnRhbDIxNQQADAAA1wAkTW9ydGFsMjE2BAAMAADYACRNb3J0YWwyMTcEAAwAANkAJE1vcnRhbDIxOAQADAAA2gAkTW9ydGFsMjE5BAAMAADbACRNb3J0YWwyMjAEAAwAANwAJE1vcnRhbDIyMQQADAAA3QAkTW9ydGFsMjIyBAAMAADeACRNb3J0YWwyMjMEAAwAAN8AJE1vcnRhbDIyNAQADAAA4AAkTW9ydGFsMjI1BAAMAADhACRNb3J0YWwyMjYEAAwAAOIAJE1vcnRhbDIyNwQADAAA4wAkTW9ydGFsMjI4BAAMAADkACRNb3J0YWwyMjkEAAwAAOUAJE1vcnRhbDIzMAQADAAA5gAkTW9ydGFsMjMxBAAMAADnACRNb3J0YWwyMzIEAAwAAOgAJE1vcnRhbDIzMwQADAAA6QAkTW9ydGFsMjM0BAAMAADqACRNb3J0YWwyMzUEAAwAAOsAJE1vcnRhbDIzNgQADAAA7AAkTW9ydGFsMjM3BAAMAADtACRNb3J0YWwyMzgEAAwAAO4AJE1vcnRhbDIzOQQADAAA7wAkTW9ydGFsMjQwBAAMAADwACRNb3J0YWwyNDEEAAwAAPEAJE1vcnRhbDI0MgQADAAA8gAkTW9ydGFsMjQzBAAMAADzACRNb3J0YWwyNDQEAAwAAPQAJE1vcnRhbDI0NQQADAAA9QAkTW9ydGFsMjQ2BAAMAAD2ACRNb3J0YWwyNDcEAAwAAPcAJE1vcnRhbDI0OAQADAAA+AAkTW9ydGFsMjQ5BAAMAAD5ACRNb3J0YWwyNTAEAAwAAPoAJE1vcnRhbDI1MQQADAAA+wAkTW9ydGFsMjUyBAAMAAD8ACRNb3J0YWwyNTMEAAwAAP0AJE1vcnRhbDI1NAQADAAA/gAkTW9ydGFsMjU1BAAMAAD/AADBBxAwZnJhbWVfc3lzdGVtKGV4dGVuc2lvbnMsY2hlY2tfbm9uY2UoQ2hlY2tOb25jZQQEVAAABABkASBUOjpOb25jZQAAxQcQMGZyYW1lX3N5c3RlbShleHRlbnNpb25zMGNoZWNrX3dlaWdodCxDaGVja1dlaWdodAQEVAAAAADJBwiIcGFsbGV0X2Fzc2V0X2NvbnZlcnNpb25fdHhfcGF5bWVudFBDaGFyZ2VBc3NldFR4UGF5bWVudAQEVAAACAEMdGlwVQEBMEJhbGFuY2VPZjxUPgABIGFzc2V0X2lkWQMBSE9wdGlvbjxUOjpBc3NldElkPgAAzQcMXHBvbGthZG90X3J1bnRpbWVfY29tbW9uGGNsYWltc0hQcmV2YWxpZGF0ZUF0dGVzdHMEBFQAAAAA0QcIdGZyYW1lX21ldGFkYXRhX2hhc2hfZXh0ZW5zaW9uRENoZWNrTWV0YWRhdGFIYXNoBARUAAAEARBtb2Rl1QcBEE1vZGUAANUHCHRmcmFtZV9tZXRhZGF0YV9oYXNoX2V4dGVuc2lvbhBNb2RlAAEIIERpc2FibGVkAAAAHEVuYWJsZWQAAQAA2QcQNHBhbGxldF9yZXZpdmUMZXZtMHR4X2V4dGVuc2lvbiRTZXRPcmlnaW4EBFQAAAAA3QcIMGZyYW1lX3N5c3RlbSxBY2NvdW50SW5mbwgUTm9uY2UBOCxBY2NvdW50RGF0YQHhBwAUARRub25jZTgBFE5vbmNlAAEkY29uc3VtZXJzOAEgUmVmQ291bnQAASRwcm92aWRlcnM4ASBSZWZDb3VudAABLHN1ZmZpY2llbnRzOAEgUmVmQ291bnQAARBkYXRh4QcBLEFjY291bnREYXRhAADhBww8cGFsbGV0X2JhbGFuY2VzFHR5cGVzLEFjY291bnREYXRhBBxCYWxhbmNlAVkBABABEGZyZWVZAQEcQmFsYW5jZQABIHJlc2VydmVkWQEBHEJhbGFuY2UAARhmcm96ZW5ZAQEcQmFsYW5jZQABFGZsYWdz5QcBKEV4dHJhRmxhZ3MAAOUHDDxwYWxsZXRfYmFsYW5jZXMUdHlwZXMoRXh0cmFGbGFncwAABABZAQEQdTEyOAAA6QcMNGZyYW1lX3N1cHBvcnQgZGlzcGF0Y2hAUGVyRGlzcGF0Y2hDbGFzcwQEVAEVAQAMARhub3JtYWwVAQEEVAABLG9wZXJhdGlvbmFsFQEBBFQAASRtYW5kYXRvcnkVAQEEVAAA7QcAAALxBwDxBwgwZnJhbWVfc3lzdGVtLEV2ZW50UmVjb3JkCARFAfUHBFQBQAAMARRwaGFzZcUJARRQaGFzZQABFGV2ZW509QcBBEUAARh0b3BpY3PEARhWZWM8VD4AAPUHCFxhc3NldF9odWJfcGFzZW9fcnVudGltZTBSdW50aW1lRXZlbnQAAegYU3lzdGVtBAD5BwFwZnJhbWVfc3lzdGVtOjpFdmVudDxSdW50aW1lPgAAADxQYXJhY2hhaW5TeXN0ZW0EACEIAbxjdW11bHVzX3BhbGxldF9wYXJhY2hhaW5fc3lzdGVtOjpFdmVudDxSdW50aW1lPgABACBQcmVpbWFnZQQAJQgBfHBhbGxldF9wcmVpbWFnZTo6RXZlbnQ8UnVudGltZT4ABQAkU2NoZWR1bGVyBAApCAGAcGFsbGV0X3NjaGVkdWxlcjo6RXZlbnQ8UnVudGltZT4ABgAoUGFyYW1ldGVycwQAMQgBhHBhbGxldF9wYXJhbWV0ZXJzOjpFdmVudDxSdW50aW1lPgAHAFBNdWx0aUJsb2NrTWlncmF0aW9ucwQAWQgBhHBhbGxldF9taWdyYXRpb25zOjpFdmVudDxSdW50aW1lPgAIACBCYWxhbmNlcwQAXQgBfHBhbGxldF9iYWxhbmNlczo6RXZlbnQ8UnVudGltZT4ACgBIVHJhbnNhY3Rpb25QYXltZW50BACVCAGocGFsbGV0X3RyYW5zYWN0aW9uX3BheW1lbnQ6OkV2ZW50PFJ1bnRpbWU+AAsAOEFzc2V0VHhQYXltZW50BACZCAHIcGFsbGV0X2Fzc2V0X2NvbnZlcnNpb25fdHhfcGF5bWVudDo6RXZlbnQ8UnVudGltZT4ADQAcVmVzdGluZwQAnQgBeHBhbGxldF92ZXN0aW5nOjpFdmVudDxSdW50aW1lPgAOABhDbGFpbXMEAKEIAXRwYWxsZXRfY2xhaW1zOjpFdmVudDxSdW50aW1lPgAPAAxEYXAEAKUIAWhwYWxsZXRfZGFwOjpFdmVudDxSdW50aW1lPgAQAERDb2xsYXRvclNlbGVjdGlvbgQArQgBpHBhbGxldF9jb2xsYXRvcl9zZWxlY3Rpb246OkV2ZW50PFJ1bnRpbWU+ABUAHFNlc3Npb24EALEIAXhwYWxsZXRfc2Vzc2lvbjo6RXZlbnQ8UnVudGltZT4AFgAkWGNtcFF1ZXVlBAC1CAGkY3VtdWx1c19wYWxsZXRfeGNtcF9xdWV1ZTo6RXZlbnQ8UnVudGltZT4AHgAsUG9sa2Fkb3RYY20EALkIAWhwYWxsZXRfeGNtOjpFdmVudDxSdW50aW1lPgAfAChDdW11bHVzWGNtBADJCAGIY3VtdWx1c19wYWxsZXRfeGNtOjpFdmVudDxSdW50aW1lPgAgAERUb0t1c2FtYVhjbVJvdXRlcgQAzQgBWQFwYWxsZXRfeGNtX2JyaWRnZV9odWJfcm91dGVyOjpFdmVudDxSdW50aW1lLCBwYWxsZXRfeGNtX2JyaWRnZV9odWJfcm91dGVyCjo6SW5zdGFuY2UxPgAiADBNZXNzYWdlUXVldWUEANEIAZBwYWxsZXRfbWVzc2FnZV9xdWV1ZTo6RXZlbnQ8UnVudGltZT4AIwBgU25vd2JyaWRnZVN5c3RlbUZyb250ZW5kBADZCAHEc25vd2JyaWRnZV9wYWxsZXRfc3lzdGVtX2Zyb250ZW5kOjpFdmVudDxSdW50aW1lPgAkABxVdGlsaXR5BADdCAFUcGFsbGV0X3V0aWxpdHk6OkV2ZW50ACgAIE11bHRpc2lnBADhCAF8cGFsbGV0X211bHRpc2lnOjpFdmVudDxSdW50aW1lPgApABRQcm94eQQA5QgBcHBhbGxldF9wcm94eTo6RXZlbnQ8UnVudGltZT4AKgAcSW5kaWNlcwQA7QgBeHBhbGxldF9pbmRpY2VzOjpFdmVudDxSdW50aW1lPgArABhBc3NldHMEAPEIAdxwYWxsZXRfYXNzZXRzOjpFdmVudDxSdW50aW1lLCBwYWxsZXRfYXNzZXRzOjpJbnN0YW5jZTE+ADIAHFVuaXF1ZXMEAPUIAXhwYWxsZXRfdW5pcXVlczo6RXZlbnQ8UnVudGltZT4AMwAQTmZ0cwQA+QgBbHBhbGxldF9uZnRzOjpFdmVudDxSdW50aW1lPgA0ADRGb3JlaWduQXNzZXRzBAABCQHccGFsbGV0X2Fzc2V0czo6RXZlbnQ8UnVudGltZSwgcGFsbGV0X2Fzc2V0czo6SW5zdGFuY2UyPgA1AChQb29sQXNzZXRzBAAFCQHccGFsbGV0X2Fzc2V0czo6RXZlbnQ8UnVudGltZSwgcGFsbGV0X2Fzc2V0czo6SW5zdGFuY2UzPgA2ADxBc3NldENvbnZlcnNpb24EAAkJAZxwYWxsZXRfYXNzZXRfY29udmVyc2lvbjo6RXZlbnQ8UnVudGltZT4ANwA0QXNzZXRzRnJlZXplcgQAHQkBHQFwYWxsZXRfYXNzZXRzX2ZyZWV6ZXI6OkV2ZW50PFJ1bnRpbWUsIHBhbGxldF9hc3NldHNfZnJlZXplcjo6SW5zdGFuY2UxPgA4ADBBc3NldHNIb2xkZXIEACEJARUBcGFsbGV0X2Fzc2V0c19ob2xkZXI6OkV2ZW50PFJ1bnRpbWUsIHBhbGxldF9hc3NldHNfaG9sZGVyOjpJbnN0YW5jZTE+ADkAIFRyZWFzdXJ5BAAlCQF8cGFsbGV0X3RyZWFzdXJ5OjpFdmVudDxSdW50aW1lPgA8AEBDb252aWN0aW9uVm90aW5nBAApCQGgcGFsbGV0X2NvbnZpY3Rpb25fdm90aW5nOjpFdmVudDxSdW50aW1lPgA9ACRSZWZlcmVuZGEEAC0JAYBwYWxsZXRfcmVmZXJlbmRhOjpFdmVudDxSdW50aW1lPgA+ACRXaGl0ZWxpc3QEADUJAYBwYWxsZXRfd2hpdGVsaXN0OjpFdmVudDxSdW50aW1lPgBAACBCb3VudGllcwQARQkBfHBhbGxldF9ib3VudGllczo6RXZlbnQ8UnVudGltZT4AQQA0Q2hpbGRCb3VudGllcwQASQkBlHBhbGxldF9jaGlsZF9ib3VudGllczo6RXZlbnQ8UnVudGltZT4AQgAkQXNzZXRSYXRlBABNCQGEcGFsbGV0X2Fzc2V0X3JhdGU6OkV2ZW50PFJ1bnRpbWU+AEMASE11bHRpQXNzZXRCb3VudGllcwQAUQkBrHBhbGxldF9tdWx0aV9hc3NldF9ib3VudGllczo6RXZlbnQ8UnVudGltZT4ARABIU3RhdGVUcmllTWlncmF0aW9uBABVCQGscGFsbGV0X3N0YXRlX3RyaWVfbWlncmF0aW9uOjpFdmVudDxSdW50aW1lPgBGADxOb21pbmF0aW9uUG9vbHMEAGEJAZxwYWxsZXRfbm9taW5hdGlvbl9wb29sczo6RXZlbnQ8UnVudGltZT4AUAAkVm90ZXJMaXN0BABpCQH0cGFsbGV0X2JhZ3NfbGlzdDo6RXZlbnQ8UnVudGltZSwgcGFsbGV0X2JhZ3NfbGlzdDo6SW5zdGFuY2UxPgBSAEBEZWxlZ2F0ZWRTdGFraW5nBABtCQGgcGFsbGV0X2RlbGVnYXRlZF9zdGFraW5nOjpFdmVudDxSdW50aW1lPgBTADxTdGFraW5nUmNDbGllbnQEAHEJAbhwYWxsZXRfc3Rha2luZ19hc3luY19yY19jbGllbnQ6OkV2ZW50PFJ1bnRpbWU+AFQASE11bHRpQmxvY2tFbGVjdGlvbgQAeQkB0HBhbGxldF9lbGVjdGlvbl9wcm92aWRlcl9tdWx0aV9ibG9jazo6RXZlbnQ8UnVudGltZT4AVQBoTXVsdGlCbG9ja0VsZWN0aW9uVmVyaWZpZXIEAH0JAfhwYWxsZXRfZWxlY3Rpb25fcHJvdmlkZXJfbXVsdGlfYmxvY2s6OnZlcmlmaWVyOjpFdmVudDxSdW50aW1lPgBWAGBNdWx0aUJsb2NrRWxlY3Rpb25TaWduZWQEAI0JAfBwYWxsZXRfZWxlY3Rpb25fcHJvdmlkZXJfbXVsdGlfYmxvY2s6OnNpZ25lZDo6RXZlbnQ8UnVudGltZT4AWAAcU3Rha2luZwQAkQkBkHBhbGxldF9zdGFraW5nX2FzeW5jOjpFdmVudDxSdW50aW1lPgBZAERNZW1iZXJzU3Vic2NyaWJlcgQAoQkBvGluZGl2X3BhbGxldF9tZW1iZXJzX3N1YnNjcmliZXI6OkV2ZW50PFJ1bnRpbWU+AGEANEFsaWFzQWNjb3VudHMEAKUJAaxpbmRpdl9wYWxsZXRfYWxpYXNfYWNjb3VudHM6OkV2ZW50PFJ1bnRpbWU+AGIAEFBnYXMEAKkJAYRpbmRpdl9wYWxsZXRfcGdhczo6RXZlbnQ8UnVudGltZT4AYwAYUmV2aXZlBACtCQF0cGFsbGV0X3Jldml2ZTo6RXZlbnQ8UnVudGltZT4AZAAwRG90bnNHYXRld2F5BACxCQGoaW5kaXZfcGFsbGV0X2RvdG5zX2dhdGV3YXk6OkV2ZW50PFJ1bnRpbWU+AJgARE9yaWdpblJlc3RyaWN0aW9uBAC1CQG8aW5kaXZfcGFsbGV0X29yaWdpbl9yZXN0cmljdGlvbjo6RXZlbnQ8UnVudGltZT4AmQAQU3VkbwQAuQkBbHBhbGxldF9zdWRvOjpFdmVudDxSdW50aW1lPgD7ADRQZ2FzQWxsb3dhbmNlBAC9CQGUcGFsbGV0X3BnYXNfYWxsb3dhbmNlOjpFdmVudDxSdW50aW1lPgD8ABRBaE9wcwQAwQkBdHBhbGxldF9haF9vcHM6OkV2ZW50PFJ1bnRpbWU+AP4AAPkHDDBmcmFtZV9zeXN0ZW0YcGFsbGV0FEV2ZW50BARUAAEsQEV4dHJpbnNpY1N1Y2Nlc3MEATRkaXNwYXRjaF9pbmZv/QcBRERpc3BhdGNoRXZlbnRJbmZvAAAEkEFuIGV4dHJpbnNpYyBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5LjxFeHRyaW5zaWNGYWlsZWQIAThkaXNwYXRjaF9lcnJvcgkIATREaXNwYXRjaEVycm9yAAE0ZGlzcGF0Y2hfaW5mb/0HAUREaXNwYXRjaEV2ZW50SW5mbwABBFBBbiBleHRyaW5zaWMgZmFpbGVkLixDb2RlVXBkYXRlZAQBEGhhc2hAARxUOjpIYXNoAAIE0GA6Y29kZWAgd2FzIHVwZGF0ZWQgdG8gdGhlIGNvZGUgd2l0aCB0aGUgZ2l2ZW4gaGFzaC4oTmV3QWNjb3VudAQBHGFjY291bnQEATBUOjpBY2NvdW50SWQAAwRoQSBuZXcgYWNjb3VudCB3YXMgY3JlYXRlZC40S2lsbGVkQWNjb3VudAQBHGFjY291bnQEATBUOjpBY2NvdW50SWQABARYQW4gYWNjb3VudCB3YXMgcmVhcGVkLiBSZW1hcmtlZAgBGHNlbmRlcgQBMFQ6OkFjY291bnRJZAABEGhhc2hAARxUOjpIYXNoAAUEcE9uIG9uLWNoYWluIHJlbWFyayBoYXBwZW5lZC4sVGFza1N0YXJ0ZWQEARB0YXNrPAE4VDo6UnVudGltZVRhc2sABgSAQSBbYFRhc2tgXSBoYXMgc3RhcnRlZCBleGVjdXRpbmc0VGFza0NvbXBsZXRlZAQBEHRhc2s8AThUOjpSdW50aW1lVGFzawAHBIhBIFtgVGFza2BdIGhhcyBmaW5pc2hlZCBleGVjdXRpbmcuKFRhc2tGYWlsZWQIARB0YXNrPAE4VDo6UnVudGltZVRhc2sAAQxlcnIJCAE0RGlzcGF0Y2hFcnJvcgAIBIxBIFtgVGFza2BdIGZhaWxlZCBkdXJpbmcgZXhlY3V0aW9uLkRVcGdyYWRlQXV0aG9yaXplZAgBJGNvZGVfaGFzaEABHFQ6Okhhc2gAATRjaGVja192ZXJzaW9uXQEBEGJvb2wACQRoQW4gdXBncmFkZSB3YXMgYXV0aG9yaXplZC6AUmVqZWN0ZWRJbnZhbGlkQXV0aG9yaXplZFVwZ3JhZGUIASRjb2RlX2hhc2hAARxUOjpIYXNoAAEUZXJyb3IJCAE0RGlzcGF0Y2hFcnJvcgAKBBEBQW4gaW52YWxpZCBhdXRob3JpemVkIHVwZ3JhZGUgd2FzIHJlamVjdGVkIHdoaWxlIHRyeWluZyB0byBhcHBseSBpdC4EcEV2ZW50IGZvciB0aGUgU3lzdGVtIHBhbGxldC79BwgwZnJhbWVfc3lzdGVtRERpc3BhdGNoRXZlbnRJbmZvAAAMARh3ZWlnaHQVAQEYV2VpZ2h0AAEUY2xhc3MBCAE0RGlzcGF0Y2hDbGFzcwABIHBheXNfZmVlBQgBEFBheXMAAAEIDDRmcmFtZV9zdXBwb3J0IGRpc3BhdGNoNERpc3BhdGNoQ2xhc3MAAQwYTm9ybWFsAAAALE9wZXJhdGlvbmFsAAEAJE1hbmRhdG9yeQACAAAFCAw0ZnJhbWVfc3VwcG9ydCBkaXNwYXRjaBBQYXlzAAEIDFllcwAAAAhObwABAAAJCAgoc3BfcnVudGltZTREaXNwYXRjaEVycm9yAAE8FE90aGVyAAAAMENhbm5vdExvb2t1cAABACRCYWRPcmlnaW4AAgAYTW9kdWxlBAANCAEsTW9kdWxlRXJyb3IAAwBEQ29uc3VtZXJSZW1haW5pbmcABAAsTm9Qcm92aWRlcnMABQBAVG9vTWFueUNvbnN1bWVycwAGABRUb2tlbgQAEQgBKFRva2VuRXJyb3IABwAoQXJpdGhtZXRpYwQAFQgBPEFyaXRobWV0aWNFcnJvcgAIADRUcmFuc2FjdGlvbmFsBAAZCAFIVHJhbnNhY3Rpb25hbEVycm9yAAkAJEV4aGF1c3RlZAAKAChDb3JydXB0aW9uAAsALFVuYXZhaWxhYmxlAAwAOFJvb3ROb3RBbGxvd2VkAA0AEFRyaWUEAB0IASRUcmllRXJyb3IADgAADQgIKHNwX3J1bnRpbWUsTW9kdWxlRXJyb3IAAAgBFGluZGV4DAEIdTgAARRlcnJvcnQBjFt1ODsgTUFYX01PRFVMRV9FUlJPUl9FTkNPREVEX1NJWkVdAAARCAgoc3BfcnVudGltZShUb2tlbkVycm9yAAEoQEZ1bmRzVW5hdmFpbGFibGUAAAAwT25seVByb3ZpZGVyAAEAMEJlbG93TWluaW11bQACADBDYW5ub3RDcmVhdGUAAwAwVW5rbm93bkFzc2V0AAQAGEZyb3plbgAFACxVbnN1cHBvcnRlZAAGAEBDYW5ub3RDcmVhdGVIb2xkAAcANE5vdEV4cGVuZGFibGUACAAcQmxvY2tlZAAJAAAVCAg0c3BfYXJpdGhtZXRpYzxBcml0aG1ldGljRXJyb3IAAQwkVW5kZXJmbG93AAAAIE92ZXJmbG93AAEAOERpdmlzaW9uQnlaZXJvAAIAABkICChzcF9ydW50aW1lSFRyYW5zYWN0aW9uYWxFcnJvcgABCDBMaW1pdFJlYWNoZWQAAAAcTm9MYXllcgABAAAdCAwoc3BfcnVudGltZTBwcm92aW5nX3RyaWUkVHJpZUVycm9yAAE4QEludmFsaWRTdGF0ZVJvb3QAAABISW5jb21wbGV0ZURhdGFiYXNlAAEAUFZhbHVlQXRJbmNvbXBsZXRlS2V5AAIAMERlY29kZXJFcnJvcgADACxJbnZhbGlkSGFzaAAEADBEdXBsaWNhdGVLZXkABQA4RXh0cmFuZW91c05vZGUABgA8RXh0cmFuZW91c1ZhbHVlAAcAXEV4dHJhbmVvdXNIYXNoUmVmZXJlbmNlAAgAVEludmFsaWRDaGlsZFJlZmVyZW5jZQAJADRWYWx1ZU1pc21hdGNoAAoAPEluY29tcGxldGVQcm9vZgALADBSb290TWlzbWF0Y2gADAAsRGVjb2RlRXJyb3IADQAAIQgMfGN1bXVsdXNfcGFsbGV0X3BhcmFjaGFpbl9zeXN0ZW0YcGFsbGV0FEV2ZW50BARUAAEYYFZhbGlkYXRpb25GdW5jdGlvblN0b3JlZAAABNBUaGUgdmFsaWRhdGlvbiBmdW5jdGlvbiBoYXMgYmVlbiBzY2hlZHVsZWQgdG8gYXBwbHkuZFZhbGlkYXRpb25GdW5jdGlvbkFwcGxpZWQEAVRyZWxheV9jaGFpbl9ibG9ja19udW04AVRSZWxheUNoYWluQmxvY2tOdW1iZXIAAQRFAVRoZSB2YWxpZGF0aW9uIGZ1bmN0aW9uIHdhcyBhcHBsaWVkIGFzIG9mIHRoZSBjb250YWluZWQgcmVsYXkgY2hhaW4gYmxvY2sgbnVtYmVyLmxWYWxpZGF0aW9uRnVuY3Rpb25EaXNjYXJkZWQAAgSwVGhlIHJlbGF5LWNoYWluIGFib3J0ZWQgdGhlIHVwZ3JhZGUgcHJvY2Vzcy5gRG93bndhcmRNZXNzYWdlc1JlY2VpdmVkBAEUY291bnQ4AQx1MzIAAwQBAVNvbWUgZG93bndhcmQgbWVzc2FnZXMgaGF2ZSBiZWVuIHJlY2VpdmVkIGFuZCB3aWxsIGJlIHByb2Nlc3NlZC5kRG93bndhcmRNZXNzYWdlc1Byb2Nlc3NlZAgBLHdlaWdodF91c2VkFQEBGFdlaWdodAABIGRtcV9oZWFkQAFEcmVsYXlfY2hhaW46Okhhc2gABATgRG93bndhcmQgbWVzc2FnZXMgd2VyZSBwcm9jZXNzZWQgdXNpbmcgdGhlIGdpdmVuIHdlaWdodC5EVXB3YXJkTWVzc2FnZVNlbnQEATBtZXNzYWdlX2hhc2hBBwE8T3B0aW9uPFhjbUhhc2g+AAUEuEFuIHVwd2FyZCBtZXNzYWdlIHdhcyBzZW50IHRvIHRoZSByZWxheSBjaGFpbi4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXQlCAw8cGFsbGV0X3ByZWltYWdlGHBhbGxldBRFdmVudAQEVAABDBROb3RlZAQBEGhhc2hAARxUOjpIYXNoAAAEaEEgcHJlaW1hZ2UgaGFzIGJlZW4gbm90ZWQuJFJlcXVlc3RlZAQBEGhhc2hAARxUOjpIYXNoAAEEeEEgcHJlaW1hZ2UgaGFzIGJlZW4gcmVxdWVzdGVkLhxDbGVhcmVkBAEQaGFzaEABHFQ6Okhhc2gAAgRsQSBwcmVpbWFnZSBoYXMgYmVuIGNsZWFyZWQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0KQgMQHBhbGxldF9zY2hlZHVsZXIYcGFsbGV0FEV2ZW50BARUAAEoJFNjaGVkdWxlZAgBEHdoZW44AURCbG9ja051bWJlckZvcjxUPgABFGluZGV4OAEMdTMyAAAEUFNjaGVkdWxlZCBzb21lIHRhc2suIENhbmNlbGVkCAEQd2hlbjgBREJsb2NrTnVtYmVyRm9yPFQ+AAEUaW5kZXg4AQx1MzIAAQRMQ2FuY2VsZWQgc29tZSB0YXNrLihEaXNwYXRjaGVkDAEQdGFza9ABeFRhc2tBZGRyZXNzPEJsb2NrTnVtYmVyRm9yPFQ+PgABCGlkQQcBQE9wdGlvbjxUYXNrTmFtZT4AARhyZXN1bHQtCAE4RGlzcGF0Y2hSZXN1bHQAAgRURGlzcGF0Y2hlZCBzb21lIHRhc2suIFJldHJ5U2V0EAEQdGFza9ABeFRhc2tBZGRyZXNzPEJsb2NrTnVtYmVyRm9yPFQ+PgABCGlkQQcBQE9wdGlvbjxUYXNrTmFtZT4AARhwZXJpb2Q4AURCbG9ja051bWJlckZvcjxUPgABHHJldHJpZXMMAQh1OAADBKBTZXQgYSByZXRyeSBjb25maWd1cmF0aW9uIGZvciBzb21lIHRhc2suOFJldHJ5Q2FuY2VsbGVkCAEQdGFza9ABeFRhc2tBZGRyZXNzPEJsb2NrTnVtYmVyRm9yPFQ+PgABCGlkQQcBQE9wdGlvbjxUYXNrTmFtZT4ABASsQ2FuY2VsIGEgcmV0cnkgY29uZmlndXJhdGlvbiBmb3Igc29tZSB0YXNrLjxDYWxsVW5hdmFpbGFibGUIARB0YXNr0AF4VGFza0FkZHJlc3M8QmxvY2tOdW1iZXJGb3I8VD4+AAEIaWRBBwFAT3B0aW9uPFRhc2tOYW1lPgAFBCkBVGhlIGNhbGwgZm9yIHRoZSBwcm92aWRlZCBoYXNoIHdhcyBub3QgZm91bmQgc28gdGhlIHRhc2sgaGFzIGJlZW4gYWJvcnRlZC44UGVyaW9kaWNGYWlsZWQIARB0YXNr0AF4VGFza0FkZHJlc3M8QmxvY2tOdW1iZXJGb3I8VD4+AAEIaWRBBwFAT3B0aW9uPFRhc2tOYW1lPgAGBD0BVGhlIGdpdmVuIHRhc2sgd2FzIHVuYWJsZSB0byBiZSByZW5ld2VkIHNpbmNlIHRoZSBhZ2VuZGEgaXMgZnVsbCBhdCB0aGF0IGJsb2NrLixSZXRyeUZhaWxlZAgBEHRhc2vQAXhUYXNrQWRkcmVzczxCbG9ja051bWJlckZvcjxUPj4AAQhpZEEHAUBPcHRpb248VGFza05hbWU+AAcIXQFUaGUgZ2l2ZW4gdGFzayB3YXMgdW5hYmxlIHRvIGJlIHJldHJpZWQgc2luY2UgdGhlIGFnZW5kYSBpcyBmdWxsIGF0IHRoYXQgYmxvY2sgb3IgdGhlcmWcd2FzIG5vdCBlbm91Z2ggd2VpZ2h0IHRvIHJlc2NoZWR1bGUgaXQuVFBlcm1hbmVudGx5T3ZlcndlaWdodAgBEHRhc2vQAXhUYXNrQWRkcmVzczxCbG9ja051bWJlckZvcjxUPj4AAQhpZEEHAUBPcHRpb248VGFza05hbWU+AAgE8FRoZSBnaXZlbiB0YXNrIGNhbiBuZXZlciBiZSBleGVjdXRlZCBzaW5jZSBpdCBpcyBvdmVyd2VpZ2h0LkBBZ2VuZGFJbmNvbXBsZXRlBAEQd2hlbjgBREJsb2NrTnVtYmVyRm9yPFQ+AAkEhEFnZW5kYSBpcyBpbmNvbXBsZXRlIGZyb20gYHdoZW5gLgQwRXZlbnRzIHR5cGUuLQgEGFJlc3VsdAgEVAEQBEUBCQgBCAhPawQAEAAAAAAMRXJyBAAJCAAAAQAAMQgMRHBhbGxldF9wYXJhbWV0ZXJzGHBhbGxldBRFdmVudAQEVAABBBxVcGRhdGVkDAEMa2V5NQgBxDxUOjpSdW50aW1lUGFyYW1ldGVycyBhcyBBZ2dyZWdhdGVkS2V5VmFsdWU+OjpLZXkEZFRoZSBrZXkgdGhhdCB3YXMgdXBkYXRlZC4BJG9sZF92YWx1ZUUIAexPcHRpb248PFQ6OlJ1bnRpbWVQYXJhbWV0ZXJzIGFzIEFnZ3JlZ2F0ZWRLZXlWYWx1ZT46OlZhbHVlPgR8VGhlIG9sZCB2YWx1ZSBiZWZvcmUgdGhpcyBjYWxsLgEkbmV3X3ZhbHVlRQgB7E9wdGlvbjw8VDo6UnVudGltZVBhcmFtZXRlcnMgYXMgQWdncmVnYXRlZEtleVZhbHVlPjo6VmFsdWU+BHhUaGUgbmV3IHZhbHVlIGFmdGVyIHRoaXMgY2FsbC4ADFBBIFBhcmFtZXRlciB3YXMgc2V0LgC8SXMgYWxzbyBlbWl0dGVkIHdoZW4gdGhlIHZhbHVlIHdhcyBub3QgY2hhbmdlZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXQ1CAhcYXNzZXRfaHViX3Bhc2VvX3J1bnRpbWVQUnVudGltZVBhcmFtZXRlcnNLZXkAAQw8U3Rha2luZ0VsZWN0aW9uBAA5CAHFATxkeW5hbWljX3BhcmFtczo6c3Rha2luZ19lbGVjdGlvbjo6UGFyYW1ldGVycyBhcyBmcmFtZV9zdXBwb3J0Ojp0cmFpdHMKOjpkeW5hbWljX3BhcmFtczo6QWdncmVnYXRlZEtleVZhbHVlPjo6S2V5AAAAJFNjaGVkdWxlcgQAPQgBqQE8ZHluYW1pY19wYXJhbXM6OnNjaGVkdWxlcjo6UGFyYW1ldGVycyBhcyBmcmFtZV9zdXBwb3J0Ojp0cmFpdHM6OgpkeW5hbWljX3BhcmFtczo6QWdncmVnYXRlZEtleVZhbHVlPjo6S2V5AAEAME1lc3NhZ2VRdWV1ZQQAQQgBuQE8ZHluYW1pY19wYXJhbXM6Om1lc3NhZ2VfcXVldWU6OlBhcmFtZXRlcnMgYXMgZnJhbWVfc3VwcG9ydDo6dHJhaXRzOjoKZHluYW1pY19wYXJhbXM6OkFnZ3JlZ2F0ZWRLZXlWYWx1ZT46OktleQACAAA5CBBcYXNzZXRfaHViX3Bhc2VvX3J1bnRpbWU4ZHluYW1pY19wYXJhbXNAc3Rha2luZ19lbGVjdGlvbjRQYXJhbWV0ZXJzS2V5AAEcLFNpZ25lZFBoYXNlBADgASxTaWduZWRQaGFzZQAAAFBNYXhTaWduZWRTdWJtaXNzaW9ucwQA6AFQTWF4U2lnbmVkU3VibWlzc2lvbnMAAQA0VW5zaWduZWRQaGFzZQQA7AE0VW5zaWduZWRQaGFzZQACAChNaW5lclBhZ2VzBADwAShNaW5lclBhZ2VzAAMARE1heEVsZWN0aW5nVm90ZXJzBAD0AURNYXhFbGVjdGluZ1ZvdGVycwAEAFhUYXJnZXRTbmFwc2hvdFBlckJsb2NrBAD4AVhUYXJnZXRTbmFwc2hvdFBlckJsb2NrAAUAOE1heEVyYUR1cmF0aW9uBAD8AThNYXhFcmFEdXJhdGlvbgAGAAA9CBBcYXNzZXRfaHViX3Bhc2VvX3J1bnRpbWU4ZHluYW1pY19wYXJhbXMkc2NoZWR1bGVyNFBhcmFtZXRlcnNLZXkAAQhQTWF4U2NoZWR1bGVkUGVyQmxvY2sEAAkBAVBNYXhTY2hlZHVsZWRQZXJCbG9jawAAADRNYXhpbXVtV2VpZ2h0BAANAQE0TWF4aW11bVdlaWdodAABAABBCBBcYXNzZXRfaHViX3Bhc2VvX3J1bnRpbWU4ZHluYW1pY19wYXJhbXM0bWVzc2FnZV9xdWV1ZTRQYXJhbWV0ZXJzS2V5AAEIPE1heE9uSW5pdFdlaWdodAQAHQEBPE1heE9uSW5pdFdlaWdodAAAADxNYXhPbklkbGVXZWlnaHQEACUBATxNYXhPbklkbGVXZWlnaHQAAQAARQgEGE9wdGlvbgQEVAFJCAEIEE5vbmUAAAAQU29tZQQASQgAAAEAAEkICFxhc3NldF9odWJfcGFzZW9fcnVudGltZVhSdW50aW1lUGFyYW1ldGVyc1ZhbHVlAAEMPFN0YWtpbmdFbGVjdGlvbgQATQgBzQE8ZHluYW1pY19wYXJhbXM6OnN0YWtpbmdfZWxlY3Rpb246OlBhcmFtZXRlcnMgYXMgZnJhbWVfc3VwcG9ydDo6dHJhaXRzCjo6ZHluYW1pY19wYXJhbXM6OkFnZ3JlZ2F0ZWRLZXlWYWx1ZT46OlZhbHVlAAAAJFNjaGVkdWxlcgQAUQgBsQE8ZHluYW1pY19wYXJhbXM6OnNjaGVkdWxlcjo6UGFyYW1ldGVycyBhcyBmcmFtZV9zdXBwb3J0Ojp0cmFpdHM6OgpkeW5hbWljX3BhcmFtczo6QWdncmVnYXRlZEtleVZhbHVlPjo6VmFsdWUAAQAwTWVzc2FnZVF1ZXVlBABVCAHBATxkeW5hbWljX3BhcmFtczo6bWVzc2FnZV9xdWV1ZTo6UGFyYW1ldGVycyBhcyBmcmFtZV9zdXBwb3J0Ojp0cmFpdHM6OgpkeW5hbWljX3BhcmFtczo6QWdncmVnYXRlZEtleVZhbHVlPjo6VmFsdWUAAgAATQgQXGFzc2V0X2h1Yl9wYXNlb19ydW50aW1lOGR5bmFtaWNfcGFyYW1zQHN0YWtpbmdfZWxlY3Rpb248UGFyYW1ldGVyc1ZhbHVlAAEcLFNpZ25lZFBoYXNlBAA4ASxCbG9ja051bWJlcgAAAFBNYXhTaWduZWRTdWJtaXNzaW9ucwQAOAEMdTMyAAEANFVuc2lnbmVkUGhhc2UEADgBLEJsb2NrTnVtYmVyAAIAKE1pbmVyUGFnZXMEADgBDHUzMgADAERNYXhFbGVjdGluZ1ZvdGVycwQAOAEMdTMyAAQAWFRhcmdldFNuYXBzaG90UGVyQmxvY2sEADgBDHUzMgAFADhNYXhFcmFEdXJhdGlvbgQAKAEMdTY0AAYAAFEIEFxhc3NldF9odWJfcGFzZW9fcnVudGltZThkeW5hbWljX3BhcmFtcyRzY2hlZHVsZXI8UGFyYW1ldGVyc1ZhbHVlAAEIUE1heFNjaGVkdWxlZFBlckJsb2NrBAA4AQx1MzIAAAA0TWF4aW11bVdlaWdodAQAFQEBGFdlaWdodAABAABVCBBcYXNzZXRfaHViX3Bhc2VvX3J1bnRpbWU4ZHluYW1pY19wYXJhbXM0bWVzc2FnZV9xdWV1ZTxQYXJhbWV0ZXJzVmFsdWUAAQg8TWF4T25Jbml0V2VpZ2h0BAARAQE4T3B0aW9uPFdlaWdodD4AAAA8TWF4T25JZGxlV2VpZ2h0BAARAQE4T3B0aW9uPFdlaWdodD4AAQAAWQgMRHBhbGxldF9taWdyYXRpb25zGHBhbGxldBRFdmVudAQEVAABIDhVcGdyYWRlU3RhcnRlZAQBKG1pZ3JhdGlvbnM4AQx1MzIQ0FRoZSBudW1iZXIgb2YgbWlncmF0aW9ucyB0aGF0IHRoaXMgdXBncmFkZSBjb250YWlucy4AQQFUaGlzIGNhbiBiZSB1c2VkIHRvIGRlc2lnbiBhIHByb2dyZXNzIGluZGljYXRvciBpbiBjb21iaW5hdGlvbiB3aXRoIGNvdW50aW5nIHRoZcxgTWlncmF0aW9uQ29tcGxldGVkYCBhbmQgYE1pZ3JhdGlvblNraXBwZWRgIGV2ZW50cy4ADGhBIFJ1bnRpbWUgdXBncmFkZSBzdGFydGVkLgD4SXRzIGVuZCBpcyBpbmRpY2F0ZWQgYnkgYFVwZ3JhZGVDb21wbGV0ZWRgIG9yIGBVcGdyYWRlRmFpbGVkYC5AVXBncmFkZUNvbXBsZXRlZAABDJhUaGUgY3VycmVudCBydW50aW1lIHVwZ3JhZGUgY29tcGxldGVkLgAdAVRoaXMgaW1wbGllcyB0aGF0IGFsbCBvZiBpdHMgbWlncmF0aW9ucyBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5IGFzIHdlbGwuNFVwZ3JhZGVGYWlsZWQAAgxcUnVudGltZSB1cGdyYWRlIGZhaWxlZC4A6FRoaXMgaXMgdmVyeSBiYWQgYW5kIHdpbGwgcmVxdWlyZSBnb3Zlcm5hbmNlIGludGVydmVudGlvbi5ATWlncmF0aW9uU2tpcHBlZAQBFGluZGV4OAEMdTMyBCkBVGhlIGluZGV4IG9mIHRoZSBza2lwcGVkIG1pZ3JhdGlvbiB3aXRoaW4gdGhlIFtgQ29uZmlnOjpNaWdyYXRpb25zYF0gbGlzdC4DBAkBQSBtaWdyYXRpb24gd2FzIHNraXBwZWQgc2luY2UgaXQgd2FzIGFscmVhZHkgZXhlY3V0ZWQgaW4gdGhlIHBhc3QuRE1pZ3JhdGlvbkFkdmFuY2VkCAEUaW5kZXg4AQx1MzIECQFUaGUgaW5kZXggb2YgdGhlIG1pZ3JhdGlvbiB3aXRoaW4gdGhlIFtgQ29uZmlnOjpNaWdyYXRpb25zYF0gbGlzdC4BEHRvb2s4AURCbG9ja051bWJlckZvcjxUPgTUVGhlIG51bWJlciBvZiBibG9ja3MgdGhhdCB0aGlzIG1pZ3JhdGlvbiB0b29rIHNvIGZhci4EBFxBIG1pZ3JhdGlvbiBwcm9ncmVzc2VkLkhNaWdyYXRpb25Db21wbGV0ZWQIARRpbmRleDgBDHUzMgQJAVRoZSBpbmRleCBvZiB0aGUgbWlncmF0aW9uIHdpdGhpbiB0aGUgW2BDb25maWc6Ok1pZ3JhdGlvbnNgXSBsaXN0LgEQdG9vazgBREJsb2NrTnVtYmVyRm9yPFQ+BNRUaGUgbnVtYmVyIG9mIGJsb2NrcyB0aGF0IHRoaXMgbWlncmF0aW9uIHRvb2sgc28gZmFyLgUEWEEgTWlncmF0aW9uIGNvbXBsZXRlZC48TWlncmF0aW9uRmFpbGVkCAEUaW5kZXg4AQx1MzIECQFUaGUgaW5kZXggb2YgdGhlIG1pZ3JhdGlvbiB3aXRoaW4gdGhlIFtgQ29uZmlnOjpNaWdyYXRpb25zYF0gbGlzdC4BEHRvb2s4AURCbG9ja051bWJlckZvcjxUPgTUVGhlIG51bWJlciBvZiBibG9ja3MgdGhhdCB0aGlzIG1pZ3JhdGlvbiB0b29rIHNvIGZhci4GDExBIE1pZ3JhdGlvbiBmYWlsZWQuAE0BVGhpcyBpbXBsaWVzIHRoYXQgdGhlIHdob2xlIHVwZ3JhZGUgZmFpbGVkIGFuZCBnb3Zlcm5hbmNlIGludGVydmVudGlvbiBpcyByZXF1aXJlZC48SGlzdG9yaWNDbGVhcmVkBAEsbmV4dF9jdXJzb3JNAQE8T3B0aW9uPFZlYzx1OD4+BOhTaG91bGQgYmUgcGFzc2VkIHRvIGBjbGVhcl9oaXN0b3JpY2AgaW4gYSBzdWNjZXNzaXZlIGNhbGwuBwTIVGhlIHNldCBvZiBoaXN0b3JpY2FsIG1pZ3JhdGlvbnMgaGFzIGJlZW4gY2xlYXJlZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXRdCAw8cGFsbGV0X2JhbGFuY2VzGHBhbGxldBRFdmVudAgEVAAESQABeBxFbmRvd2VkCAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAABMGZyZWVfYmFsYW5jZVkBAShUOjpCYWxhbmNlAAAEuEFuIGFjY291bnQgd2FzIGNyZWF0ZWQgd2l0aCBzb21lIGZyZWUgYmFsYW5jZS4gRHVzdExvc3QIARxhY2NvdW50BAEwVDo6QWNjb3VudElkAAEYYW1vdW50WQEBKFQ6OkJhbGFuY2UAAQg9AUFuIGFjY291bnQgd2FzIHJlbW92ZWQgd2hvc2UgYmFsYW5jZSB3YXMgbm9uLXplcm8gYnV0IGJlbG93IEV4aXN0ZW50aWFsRGVwb3NpdCx4cmVzdWx0aW5nIGluIGFuIG91dHJpZ2h0IGxvc3MuIFRyYW5zZmVyDAEQZnJvbQQBMFQ6OkFjY291bnRJZAABCHRvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50WQEBKFQ6OkJhbGFuY2UAAgRMVHJhbnNmZXIgc3VjY2VlZGVkLihCYWxhbmNlU2V0CAEMd2hvBAEwVDo6QWNjb3VudElkAAEQZnJlZVkBAShUOjpCYWxhbmNlAAMEaEEgYmFsYW5jZSB3YXMgc2V0IGJ5IHJvb3QuIFJlc2VydmVkCAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50WQEBKFQ6OkJhbGFuY2UABATgU29tZSBiYWxhbmNlIHdhcyByZXNlcnZlZCAobW92ZWQgZnJvbSBmcmVlIHRvIHJlc2VydmVkKS4oVW5yZXNlcnZlZAgBDHdobwQBMFQ6OkFjY291bnRJZAABGGFtb3VudFkBAShUOjpCYWxhbmNlAAUE6FNvbWUgYmFsYW5jZSB3YXMgdW5yZXNlcnZlZCAobW92ZWQgZnJvbSByZXNlcnZlZCB0byBmcmVlKS5IUmVzZXJ2ZVJlcGF0cmlhdGVkEAEQZnJvbQQBMFQ6OkFjY291bnRJZAABCHRvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50WQEBKFQ6OkJhbGFuY2UAAUhkZXN0aW5hdGlvbl9zdGF0dXNhCAEYU3RhdHVzAAYITQFTb21lIGJhbGFuY2Ugd2FzIG1vdmVkIGZyb20gdGhlIHJlc2VydmUgb2YgdGhlIGZpcnN0IGFjY291bnQgdG8gdGhlIHNlY29uZCBhY2NvdW50LthGaW5hbCBhcmd1bWVudCBpbmRpY2F0ZXMgdGhlIGRlc3RpbmF0aW9uIGJhbGFuY2UgdHlwZS4cRGVwb3NpdAgBDHdobwQBMFQ6OkFjY291bnRJZAABGGFtb3VudFkBAShUOjpCYWxhbmNlAAcE2FNvbWUgYW1vdW50IHdhcyBkZXBvc2l0ZWQgKGUuZy4gZm9yIHRyYW5zYWN0aW9uIGZlZXMpLiBXaXRoZHJhdwgBDHdobwQBMFQ6OkFjY291bnRJZAABGGFtb3VudFkBAShUOjpCYWxhbmNlAAgEHQFTb21lIGFtb3VudCB3YXMgd2l0aGRyYXduIGZyb20gdGhlIGFjY291bnQgKGUuZy4gZm9yIHRyYW5zYWN0aW9uIGZlZXMpLhxTbGFzaGVkCAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50WQEBKFQ6OkJhbGFuY2UACQQBAVNvbWUgYW1vdW50IHdhcyByZW1vdmVkIGZyb20gdGhlIGFjY291bnQgKGUuZy4gZm9yIG1pc2JlaGF2aW9yKS4YTWludGVkCAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50WQEBKFQ6OkJhbGFuY2UACgScU29tZSBhbW91bnQgd2FzIG1pbnRlZCBpbnRvIGFuIGFjY291bnQuME1pbnRlZENyZWRpdAQBGGFtb3VudFkBAShUOjpCYWxhbmNlAAsE4FNvbWUgY3JlZGl0IHdhcyBiYWxhbmNlZCBhbmQgYWRkZWQgdG8gdGhlIFRvdGFsSXNzdWFuY2UuGEJ1cm5lZAgBDHdobwQBMFQ6OkFjY291bnRJZAABGGFtb3VudFkBAShUOjpCYWxhbmNlAAwEnFNvbWUgYW1vdW50IHdhcyBidXJuZWQgZnJvbSBhbiBhY2NvdW50LihCdXJuZWREZWJ0BAEYYW1vdW50WQEBKFQ6OkJhbGFuY2UADQTMU29tZSBkZWJ0IGhhcyBiZWVuIGRyb3BwZWQgZnJvbSB0aGUgVG90YWwgSXNzdWFuY2UuJFN1c3BlbmRlZAgBDHdobwQBMFQ6OkFjY291bnRJZAABGGFtb3VudFkBAShUOjpCYWxhbmNlAA4EFQFTb21lIGFtb3VudCB3YXMgc3VzcGVuZGVkIGZyb20gYW4gYWNjb3VudCAoaXQgY2FuIGJlIHJlc3RvcmVkIGxhdGVyKS4gUmVzdG9yZWQIAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnRZAQEoVDo6QmFsYW5jZQAPBKRTb21lIGFtb3VudCB3YXMgcmVzdG9yZWQgaW50byBhbiBhY2NvdW50LiBVcGdyYWRlZAQBDHdobwQBMFQ6OkFjY291bnRJZAAQBGBBbiBhY2NvdW50IHdhcyB1cGdyYWRlZC4YSXNzdWVkBAEYYW1vdW50WQEBKFQ6OkJhbGFuY2UAEQQtAVRvdGFsIGlzc3VhbmNlIHdhcyBpbmNyZWFzZWQgYnkgYGFtb3VudGAsIGNyZWF0aW5nIGEgY3JlZGl0IHRvIGJlIGJhbGFuY2VkLiRSZXNjaW5kZWQEARhhbW91bnRZAQEoVDo6QmFsYW5jZQASBCUBVG90YWwgaXNzdWFuY2Ugd2FzIGRlY3JlYXNlZCBieSBgYW1vdW50YCwgY3JlYXRpbmcgYSBkZWJ0IHRvIGJlIGJhbGFuY2VkLhhMb2NrZWQIAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnRZAQEoVDo6QmFsYW5jZQATBGBTb21lIGJhbGFuY2Ugd2FzIGxvY2tlZC4gVW5sb2NrZWQIAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnRZAQEoVDo6QmFsYW5jZQAUBGhTb21lIGJhbGFuY2Ugd2FzIHVubG9ja2VkLhhGcm96ZW4IAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnRZAQEoVDo6QmFsYW5jZQAVBGBTb21lIGJhbGFuY2Ugd2FzIGZyb3plbi4YVGhhd2VkCAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50WQEBKFQ6OkJhbGFuY2UAFgRgU29tZSBiYWxhbmNlIHdhcyB0aGF3ZWQuTFRvdGFsSXNzdWFuY2VGb3JjZWQIAQxvbGRZAQEoVDo6QmFsYW5jZQABDG5ld1kBAShUOjpCYWxhbmNlABcErFRoZSBgVG90YWxJc3N1YW5jZWAgd2FzIGZvcmNlZnVsbHkgY2hhbmdlZC4QSGVsZAwBGHJlYXNvbmUIAVBUOjpSdW50aW1lSG9sZFJlYXNvbgABDHdobwQBMFQ6OkFjY291bnRJZAABGGFtb3VudFkBAShUOjpCYWxhbmNlABgEgFNvbWUgYmFsYW5jZSB3YXMgcGxhY2VkIG9uIGhvbGQuKEJ1cm5lZEhlbGQMARhyZWFzb25lCAFQVDo6UnVudGltZUhvbGRSZWFzb24AAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnRZAQEoVDo6QmFsYW5jZQAZBKBIZWxkIGJhbGFuY2Ugd2FzIGJ1cm5lZCBmcm9tIGFuIGFjY291bnQuOFRyYW5zZmVyT25Ib2xkEAEYcmVhc29uZQgBUFQ6OlJ1bnRpbWVIb2xkUmVhc29uAAEYc291cmNlBAEwVDo6QWNjb3VudElkAAEQZGVzdAQBMFQ6OkFjY291bnRJZAABGGFtb3VudFkBAShUOjpCYWxhbmNlABoEFQFBIHRyYW5zZmVyIG9mIGBhbW91bnRgIG9uIGhvbGQgZnJvbSBgc291cmNlYCB0byBgZGVzdGAgd2FzIGluaXRpYXRlZC48VHJhbnNmZXJBbmRIb2xkEAEYcmVhc29uZQgBUFQ6OlJ1bnRpbWVIb2xkUmVhc29uAAEYc291cmNlBAEwVDo6QWNjb3VudElkAAEQZGVzdAQBMFQ6OkFjY291bnRJZAABLHRyYW5zZmVycmVkWQEBKFQ6OkJhbGFuY2UAGwQJAVRoZSBgdHJhbnNmZXJyZWRgIGJhbGFuY2UgaXMgcGxhY2VkIG9uIGhvbGQgYXQgdGhlIGBkZXN0YCBhY2NvdW50LiBSZWxlYXNlZAwBGHJlYXNvbmUIAVBUOjpSdW50aW1lSG9sZFJlYXNvbgABDHdobwQBMFQ6OkFjY291bnRJZAABGGFtb3VudFkBAShUOjpCYWxhbmNlABwEkFNvbWUgYmFsYW5jZSB3YXMgcmVsZWFzZWQgZnJvbSBob2xkLihVbmV4cGVjdGVkBACRCAE4VW5leHBlY3RlZEtpbmQAHQSwQW4gdW5leHBlY3RlZC9kZWZlbnNpdmUgZXZlbnQgd2FzIHRyaWdnZXJlZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXRhCBQ0ZnJhbWVfc3VwcG9ydBh0cmFpdHMYdG9rZW5zEG1pc2M0QmFsYW5jZVN0YXR1cwABCBBGcmVlAAAAIFJlc2VydmVkAAEAAGUICFxhc3NldF9odWJfcGFzZW9fcnVudGltZURSdW50aW1lSG9sZFJlYXNvbgABKCBQcmVpbWFnZQQAaQgBbHBhbGxldF9wcmVpbWFnZTo6SG9sZFJlYXNvbgAFABxTZXNzaW9uBABtCAFocGFsbGV0X3Nlc3Npb246OkhvbGRSZWFzb24AFgAsUG9sa2Fkb3RYY20EAHEIAVhwYWxsZXRfeGNtOjpIb2xkUmVhc29uAB8ASE11bHRpQXNzZXRCb3VudGllcwQAdQgBnHBhbGxldF9tdWx0aV9hc3NldF9ib3VudGllczo6SG9sZFJlYXNvbgBEAEhTdGF0ZVRyaWVNaWdyYXRpb24EAHkIAZxwYWxsZXRfc3RhdGVfdHJpZV9taWdyYXRpb246OkhvbGRSZWFzb24ARgBARGVsZWdhdGVkU3Rha2luZwQAfQgBkHBhbGxldF9kZWxlZ2F0ZWRfc3Rha2luZzo6SG9sZFJlYXNvbgBTADxTdGFraW5nUmNDbGllbnQEAIEIAahwYWxsZXRfc3Rha2luZ19hc3luY19yY19jbGllbnQ6OkhvbGRSZWFzb24AVABgTXVsdGlCbG9ja0VsZWN0aW9uU2lnbmVkBACFCAHgcGFsbGV0X2VsZWN0aW9uX3Byb3ZpZGVyX211bHRpX2Jsb2NrOjpzaWduZWQ6OkhvbGRSZWFzb24AWAAcU3Rha2luZwQAiQgBgHBhbGxldF9zdGFraW5nX2FzeW5jOjpIb2xkUmVhc29uAFkAGFJldml2ZQQAjQgBZHBhbGxldF9yZXZpdmU6OkhvbGRSZWFzb24AZAAAaQgMPHBhbGxldF9wcmVpbWFnZRhwYWxsZXQoSG9sZFJlYXNvbgABBCBQcmVpbWFnZQAAAABtCAw4cGFsbGV0X3Nlc3Npb24YcGFsbGV0KEhvbGRSZWFzb24AAQQQS2V5cwAAAABxCAwocGFsbGV0X3hjbRhwYWxsZXQoSG9sZFJlYXNvbgABBDhBdXRob3JpemVBbGlhcwAAAAB1CAxscGFsbGV0X211bHRpX2Fzc2V0X2JvdW50aWVzGHBhbGxldChIb2xkUmVhc29uBARJAAEEOEN1cmF0b3JEZXBvc2l0AAAAAHkIDGxwYWxsZXRfc3RhdGVfdHJpZV9taWdyYXRpb24YcGFsbGV0KEhvbGRSZWFzb24AAQQ8U2xhc2hGb3JNaWdyYXRlAAAAAH0IDGBwYWxsZXRfZGVsZWdhdGVkX3N0YWtpbmcYcGFsbGV0KEhvbGRSZWFzb24AAQREU3Rha2luZ0RlbGVnYXRpb24AAAAAgQgMeHBhbGxldF9zdGFraW5nX2FzeW5jX3JjX2NsaWVudBhwYWxsZXQoSG9sZFJlYXNvbgABBBBLZXlzAAAAAIUIEJBwYWxsZXRfZWxlY3Rpb25fcHJvdmlkZXJfbXVsdGlfYmxvY2sYc2lnbmVkGHBhbGxldChIb2xkUmVhc29uAAEEQFNpZ25lZFN1Ym1pc3Npb24AAAAAiQgQUHBhbGxldF9zdGFraW5nX2FzeW5jGHBhbGxldBhwYWxsZXQoSG9sZFJlYXNvbgABBBxTdGFraW5nAAAAAI0IDDRwYWxsZXRfcmV2aXZlGHBhbGxldChIb2xkUmVhc29uAAEMYENvZGVVcGxvYWREZXBvc2l0UmVzZXJ2ZQAAAFRTdG9yYWdlRGVwb3NpdFJlc2VydmUAAQA4QWRkcmVzc01hcHBpbmcAAgAAkQgMPHBhbGxldF9iYWxhbmNlcxhwYWxsZXQ4VW5leHBlY3RlZEtpbmQAAQg4QmFsYW5jZVVwZGF0ZWQAAABURmFpbGVkVG9NdXRhdGVBY2NvdW50AAEAAJUIDGhwYWxsZXRfdHJhbnNhY3Rpb25fcGF5bWVudBhwYWxsZXQURXZlbnQEBFQAAQRIVHJhbnNhY3Rpb25GZWVQYWlkDAEMd2hvBAEwVDo6QWNjb3VudElkAAEoYWN0dWFsX2ZlZVkBATBCYWxhbmNlT2Y8VD4AAQx0aXBZAQEwQmFsYW5jZU9mPFQ+AAAIWQFBIHRyYW5zYWN0aW9uIGZlZSBgYWN0dWFsX2ZlZWAsIG9mIHdoaWNoIGB0aXBgIHdhcyBhZGRlZCB0byB0aGUgbWluaW11bSBpbmNsdXNpb24gZmVlLFxoYXMgYmVlbiBwYWlkIGJ5IGB3aG9gLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldJkIDIhwYWxsZXRfYXNzZXRfY29udmVyc2lvbl90eF9wYXltZW50GHBhbGxldBRFdmVudAQEVAABCDhBc3NldFR4RmVlUGFpZBABDHdobwQBMFQ6OkFjY291bnRJZAABKGFjdHVhbF9mZWVZAQEwQmFsYW5jZU9mPFQ+AAEMdGlwWQEBMEJhbGFuY2VPZjxUPgABIGFzc2V0X2lkHQIBKFQ6OkFzc2V0SWQAAAhZAUEgdHJhbnNhY3Rpb24gZmVlIGBhY3R1YWxfZmVlYCwgb2Ygd2hpY2ggYHRpcGAgd2FzIGFkZGVkIHRvIHRoZSBtaW5pbXVtIGluY2x1c2lvbiBmZWUsuGhhcyBiZWVuIHBhaWQgYnkgYHdob2AgaW4gYW4gYXNzZXQgYGFzc2V0X2lkYC5EQXNzZXRSZWZ1bmRGYWlsZWQEAUhuYXRpdmVfYW1vdW50X2tlcHRZAQEwQmFsYW5jZU9mPFQ+AAEE9EEgc3dhcCBvZiB0aGUgcmVmdW5kIGluIG5hdGl2ZSBjdXJyZW5jeSBiYWNrIHRvIGFzc2V0IGZhaWxlZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXSdCAw4cGFsbGV0X3Zlc3RpbmcYcGFsbGV0FEV2ZW50BARUAAEMOFZlc3RpbmdDcmVhdGVkCAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAABOHNjaGVkdWxlX2luZGV4OAEMdTMyAAAEkEEgdmVzdGluZyBzY2hlZHVsZSBoYXMgYmVlbiBjcmVhdGVkLjhWZXN0aW5nVXBkYXRlZAgBHGFjY291bnQEATBUOjpBY2NvdW50SWQAASB1bnZlc3RlZFkBATBCYWxhbmNlT2Y8VD4AAQhRAVRoZSBhbW91bnQgdmVzdGVkIGhhcyBiZWVuIHVwZGF0ZWQuIFRoaXMgY291bGQgaW5kaWNhdGUgYSBjaGFuZ2UgaW4gZnVuZHMgYXZhaWxhYmxlLiUBVGhlIGJhbGFuY2UgZ2l2ZW4gaXMgdGhlIGFtb3VudCB3aGljaCBpcyBsZWZ0IHVudmVzdGVkIChhbmQgdGh1cyBsb2NrZWQpLkBWZXN0aW5nQ29tcGxldGVkBAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAACBJxBbiBcW2FjY291bnRcXSBoYXMgYmVjb21lIGZ1bGx5IHZlc3RlZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXShCBBccG9sa2Fkb3RfcnVudGltZV9jb21tb24YY2xhaW1zGHBhbGxldBRFdmVudAQEVAABBBxDbGFpbWVkDAEMd2hvBAEwVDo6QWNjb3VudElkAAFAZXRoZXJldW1fYWRkcmVzc30BATxFdGhlcmV1bUFkZHJlc3MAARhhbW91bnRZAQEwQmFsYW5jZU9mPFQ+AAAEaFNvbWVvbmUgY2xhaW1lZCBzb21lIERPVHMuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0pQgMKHBhbGxldF9kYXAYcGFsbGV0FEV2ZW50BARUAAEQOElzc3VhbmNlTWludGVkCAEwdG90YWxfbWludGVkWQEBMEJhbGFuY2VPZjxUPgSEVG90YWwgYW1vdW50IG1pbnRlZCBpbiB0aGlzIGRyaXAuAThlbGFwc2VkX21pbGxpcygBDHU2NASIRWxhcHNlZCB0aW1lIChtcykgc2luY2UgbGFzdCBkcmlwLgAE3EluZmxhdGlvbiBkcmlwcGVkIGFuZCBkaXN0cmlidXRlZCB0byBidWRnZXQgcmVjaXBpZW50cy5cQnVkZ2V0QWxsb2NhdGlvblVwZGF0ZWQEASxhbGxvY2F0aW9uc5kBAUxCdWRnZXRBbGxvY2F0aW9uTWFwBHhUaGUgbmV3IGJ1ZGdldCBhbGxvY2F0aW9uIG1hcC4BBLRCdWRnZXQgYWxsb2NhdGlvbiB3YXMgdXBkYXRlZCB2aWEgZ292ZXJuYW5jZS44U3RhZ2luZ0RyYWluZWQEARhhbW91bnRZAQEwQmFsYW5jZU9mPFQ+BDxBbW91bnQgZHJhaW5lZC4CBAEBRnVuZHMgd2VyZSBkcmFpbmVkIGZyb20gdGhlIHN0YWdpbmcgYWNjb3VudCBpbnRvIHRoZSBEQVAgYnVmZmVyLihVbmV4cGVjdGVkBACpCAE4VW5leHBlY3RlZEtpbmQAAwSwQW4gdW5leHBlY3RlZC9kZWZlbnNpdmUgZXZlbnQgd2FzIHRyaWdnZXJlZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXSpCAwocGFsbGV0X2RhcBhwYWxsZXQ4VW5leHBlY3RlZEtpbmQAAQgoTWludEZhaWxlZAAAADhFbGFwc2VkQ2xhbXBlZAgBOGFjdHVhbF9lbGFwc2VkKAEMdTY0AAEcY2VpbGluZygBDHU2NAABAACtCAxkcGFsbGV0X2NvbGxhdG9yX3NlbGVjdGlvbhhwYWxsZXQURXZlbnQEBFQAAShATmV3SW52dWxuZXJhYmxlcwQBNGludnVsbmVyYWJsZXNhAQFEVmVjPFQ6OkFjY291bnRJZD4AAARsTmV3IEludnVsbmVyYWJsZXMgd2VyZSBzZXQuREludnVsbmVyYWJsZUFkZGVkBAEoYWNjb3VudF9pZAQBMFQ6OkFjY291bnRJZAABBHRBIG5ldyBJbnZ1bG5lcmFibGUgd2FzIGFkZGVkLkxJbnZ1bG5lcmFibGVSZW1vdmVkBAEoYWNjb3VudF9pZAQBMFQ6OkFjY291bnRJZAACBHBBbiBJbnZ1bG5lcmFibGUgd2FzIHJlbW92ZWQuUE5ld0Rlc2lyZWRDYW5kaWRhdGVzBAFIZGVzaXJlZF9jYW5kaWRhdGVzOAEMdTMyAAMEpFRoZSBudW1iZXIgb2YgZGVzaXJlZCBjYW5kaWRhdGVzIHdhcyBzZXQuQE5ld0NhbmRpZGFjeUJvbmQEASxib25kX2Ftb3VudFkBATBCYWxhbmNlT2Y8VD4ABARsVGhlIGNhbmRpZGFjeSBib25kIHdhcyBzZXQuOENhbmRpZGF0ZUFkZGVkCAEoYWNjb3VudF9pZAQBMFQ6OkFjY291bnRJZAABHGRlcG9zaXRZAQEwQmFsYW5jZU9mPFQ+AAUEXEEgbmV3IGNhbmRpZGF0ZSBqb2luZWQuUENhbmRpZGF0ZUJvbmRVcGRhdGVkCAEoYWNjb3VudF9pZAQBMFQ6OkFjY291bnRJZAABHGRlcG9zaXRZAQEwQmFsYW5jZU9mPFQ+AAYEcEJvbmQgb2YgYSBjYW5kaWRhdGUgdXBkYXRlZC5AQ2FuZGlkYXRlUmVtb3ZlZAQBKGFjY291bnRfaWQEATBUOjpBY2NvdW50SWQABwRgQSBjYW5kaWRhdGUgd2FzIHJlbW92ZWQuRENhbmRpZGF0ZVJlcGxhY2VkDAEMb2xkBAEwVDo6QWNjb3VudElkAAEMbmV3BAEwVDo6QWNjb3VudElkAAEcZGVwb3NpdFkBATBCYWxhbmNlT2Y8VD4ACAT0QW4gYWNjb3VudCB3YXMgcmVwbGFjZWQgaW4gdGhlIGNhbmRpZGF0ZSBsaXN0IGJ5IGFub3RoZXIgb25lLmhJbnZhbGlkSW52dWxuZXJhYmxlU2tpcHBlZAQBKGFjY291bnRfaWQEATBUOjpBY2NvdW50SWQACQhVAUFuIGFjY291bnQgd2FzIHVuYWJsZSB0byBiZSBhZGRlZCB0byB0aGUgSW52dWxuZXJhYmxlcyBiZWNhdXNlIHRoZXkgZGlkIG5vdCBoYXZlIGtleXPIcmVnaXN0ZXJlZC4gT3RoZXIgSW52dWxuZXJhYmxlcyBtYXkgaGF2ZSBiZWVuIHNldC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXSxCAw4cGFsbGV0X3Nlc3Npb24YcGFsbGV0FEV2ZW50BARUAAEQKE5ld1Nlc3Npb24EATRzZXNzaW9uX2luZGV4OAEwU2Vzc2lvbkluZGV4AAAIOQFOZXcgc2Vzc2lvbiBoYXMgaGFwcGVuZWQuIE5vdGUgdGhhdCB0aGUgYXJndW1lbnQgaXMgdGhlIHNlc3Npb24gaW5kZXgsIG5vdCB0aGWcYmxvY2sgbnVtYmVyIGFzIHRoZSB0eXBlIG1pZ2h0IHN1Z2dlc3QuJE5ld1F1ZXVlZAABCEkBVGhlIGBOZXdTZXNzaW9uYCBldmVudCBpbiB0aGUgY3VycmVudCBibG9jayBhbHNvIGltcGxpZXMgYSBuZXcgdmFsaWRhdG9yIHNldCB0byBiZRxxdWV1ZWQuRFZhbGlkYXRvckRpc2FibGVkBAEkdmFsaWRhdG9yBAE4VDo6VmFsaWRhdG9ySWQAAgRwVmFsaWRhdG9yIGhhcyBiZWVuIGRpc2FibGVkLkhWYWxpZGF0b3JSZWVuYWJsZWQEASR2YWxpZGF0b3IEAThUOjpWYWxpZGF0b3JJZAADBHhWYWxpZGF0b3IgaGFzIGJlZW4gcmUtZW5hYmxlZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXS1CAxkY3VtdWx1c19wYWxsZXRfeGNtcF9xdWV1ZRhwYWxsZXQURXZlbnQEBFQAAQQ8WGNtcE1lc3NhZ2VTZW50BAEwbWVzc2FnZV9oYXNoCAEcWGNtSGFzaAAABMBBbiBIUk1QIG1lc3NhZ2Ugd2FzIHNlbnQgdG8gYSBzaWJsaW5nIHBhcmFjaGFpbi4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXS5CAwocGFsbGV0X3hjbRhwYWxsZXQURXZlbnQEBFQAAXQkQXR0ZW1wdGVkBAEcb3V0Y29tZb0IAVB4Y206OmxhdGVzdDo6T3V0Y29tZQAABKhFeGVjdXRpb24gb2YgYW4gWENNIG1lc3NhZ2Ugd2FzIGF0dGVtcHRlZC4QU2VudBABGG9yaWdpbh0CASBMb2NhdGlvbgABLGRlc3RpbmF0aW9uHQIBIExvY2F0aW9uAAEcbWVzc2FnZRUDARxYY208KCk+AAEobWVzc2FnZV9pZAgBHFhjbUhhc2gAAQRgQW4gWENNIG1lc3NhZ2Ugd2FzIHNlbnQuKFNlbmRGYWlsZWQQARhvcmlnaW4dAgEgTG9jYXRpb24AASxkZXN0aW5hdGlvbh0CASBMb2NhdGlvbgABFGVycm9yxQgBJFNlbmRFcnJvcgABKG1lc3NhZ2VfaWQIARxYY21IYXNoAAIEeEFuIFhDTSBtZXNzYWdlIGZhaWxlZCB0byBzZW5kLjxQcm9jZXNzWGNtRXJyb3IMARhvcmlnaW4dAgEgTG9jYXRpb24AARRlcnJvckUDASBYY21FcnJvcgABKG1lc3NhZ2VfaWQIARxYY21IYXNoAAMEhEFuIFhDTSBtZXNzYWdlIGZhaWxlZCB0byBwcm9jZXNzLkhVbmV4cGVjdGVkUmVzcG9uc2UIARhvcmlnaW4dAgEgTG9jYXRpb24AASBxdWVyeV9pZCgBHFF1ZXJ5SWQABAxZAVF1ZXJ5IHJlc3BvbnNlIHJlY2VpdmVkIHdoaWNoIGRvZXMgbm90IG1hdGNoIGEgcmVnaXN0ZXJlZCBxdWVyeS4gVGhpcyBtYXkgYmUgYmVjYXVzZSBhVQFtYXRjaGluZyBxdWVyeSB3YXMgbmV2ZXIgcmVnaXN0ZXJlZCwgaXQgbWF5IGJlIGJlY2F1c2UgaXQgaXMgYSBkdXBsaWNhdGUgcmVzcG9uc2UsIG9ycGJlY2F1c2UgdGhlIHF1ZXJ5IHRpbWVkIG91dC40UmVzcG9uc2VSZWFkeQgBIHF1ZXJ5X2lkKAEcUXVlcnlJZAABIHJlc3BvbnNlOQMBIFJlc3BvbnNlAAUIXQFRdWVyeSByZXNwb25zZSBoYXMgYmVlbiByZWNlaXZlZCBhbmQgaXMgcmVhZHkgZm9yIHRha2luZyB3aXRoIGB0YWtlX3Jlc3BvbnNlYC4gVGhlcmUgaXOAbm8gcmVnaXN0ZXJlZCBub3RpZmljYXRpb24gY2FsbC4gTm90aWZpZWQMASBxdWVyeV9pZCgBHFF1ZXJ5SWQAATBwYWxsZXRfaW5kZXgMAQh1OAABKGNhbGxfaW5kZXgMAQh1OAAGCFkBUXVlcnkgcmVzcG9uc2UgaGFzIGJlZW4gcmVjZWl2ZWQgYW5kIHF1ZXJ5IGlzIHJlbW92ZWQuIFRoZSByZWdpc3RlcmVkIG5vdGlmaWNhdGlvbiBoYXOoYmVlbiBkaXNwYXRjaGVkIGFuZCBleGVjdXRlZCBzdWNjZXNzZnVsbHkuQE5vdGlmeU92ZXJ3ZWlnaHQUASBxdWVyeV9pZCgBHFF1ZXJ5SWQAATBwYWxsZXRfaW5kZXgMAQh1OAABKGNhbGxfaW5kZXgMAQh1OAABNGFjdHVhbF93ZWlnaHQVAQEYV2VpZ2h0AAFMbWF4X2J1ZGdldGVkX3dlaWdodBUBARhXZWlnaHQABwxJAVF1ZXJ5IHJlc3BvbnNlIGhhcyBiZWVuIHJlY2VpdmVkIGFuZCBxdWVyeSBpcyByZW1vdmVkLiBUaGUgcmVnaXN0ZXJlZCBub3RpZmljYXRpb25ZAWNvdWxkIG5vdCBiZSBkaXNwYXRjaGVkIGJlY2F1c2UgdGhlIGRpc3BhdGNoIHdlaWdodCBpcyBncmVhdGVyIHRoYW4gdGhlIG1heGltdW0gd2VpZ2h05G9yaWdpbmFsbHkgYnVkZ2V0ZWQgYnkgdGhpcyBydW50aW1lIGZvciB0aGUgcXVlcnkgcmVzdWx0LkxOb3RpZnlEaXNwYXRjaEVycm9yDAEgcXVlcnlfaWQoARxRdWVyeUlkAAEwcGFsbGV0X2luZGV4DAEIdTgAAShjYWxsX2luZGV4DAEIdTgACAhVAVF1ZXJ5IHJlc3BvbnNlIGhhcyBiZWVuIHJlY2VpdmVkIGFuZCBxdWVyeSBpcyByZW1vdmVkLiBUaGVyZSB3YXMgYSBnZW5lcmFsIGVycm9yIHdpdGiIZGlzcGF0Y2hpbmcgdGhlIG5vdGlmaWNhdGlvbiBjYWxsLkhOb3RpZnlEZWNvZGVGYWlsZWQMASBxdWVyeV9pZCgBHFF1ZXJ5SWQAATBwYWxsZXRfaW5kZXgMAQh1OAABKGNhbGxfaW5kZXgMAQh1OAAJDFEBUXVlcnkgcmVzcG9uc2UgaGFzIGJlZW4gcmVjZWl2ZWQgYW5kIHF1ZXJ5IGlzIHJlbW92ZWQuIFRoZSBkaXNwYXRjaCB3YXMgdW5hYmxlIHRvIGJlWQFkZWNvZGVkIGludG8gYSBgQ2FsbGA7IHRoaXMgbWlnaHQgYmUgZHVlIHRvIGRpc3BhdGNoIGZ1bmN0aW9uIGhhdmluZyBhIHNpZ25hdHVyZSB3aGljaJRpcyBub3QgYChvcmlnaW4sIFF1ZXJ5SWQsIFJlc3BvbnNlKWAuQEludmFsaWRSZXNwb25kZXIMARhvcmlnaW4dAgEgTG9jYXRpb24AASBxdWVyeV9pZCgBHFF1ZXJ5SWQAAURleHBlY3RlZF9sb2NhdGlvblkDAUBPcHRpb248TG9jYXRpb24+AAoMWQFFeHBlY3RlZCBxdWVyeSByZXNwb25zZSBoYXMgYmVlbiByZWNlaXZlZCBidXQgdGhlIG9yaWdpbiBsb2NhdGlvbiBvZiB0aGUgcmVzcG9uc2UgZG9lc1UBbm90IG1hdGNoIHRoYXQgZXhwZWN0ZWQuIFRoZSBxdWVyeSByZW1haW5zIHJlZ2lzdGVyZWQgZm9yIGEgbGF0ZXIsIHZhbGlkLCByZXNwb25zZSB0b2xiZSByZWNlaXZlZCBhbmQgYWN0ZWQgdXBvbi5cSW52YWxpZFJlc3BvbmRlclZlcnNpb24IARhvcmlnaW4dAgEgTG9jYXRpb24AASBxdWVyeV9pZCgBHFF1ZXJ5SWQACxxRAUV4cGVjdGVkIHF1ZXJ5IHJlc3BvbnNlIGhhcyBiZWVuIHJlY2VpdmVkIGJ1dCB0aGUgZXhwZWN0ZWQgb3JpZ2luIGxvY2F0aW9uIHBsYWNlZCBpbk0Bc3RvcmFnZSBieSB0aGlzIHJ1bnRpbWUgcHJldmlvdXNseSBjYW5ub3QgYmUgZGVjb2RlZC4gVGhlIHF1ZXJ5IHJlbWFpbnMgcmVnaXN0ZXJlZC4AQQFUaGlzIGlzIHVuZXhwZWN0ZWQgKHNpbmNlIGEgbG9jYXRpb24gcGxhY2VkIGluIHN0b3JhZ2UgaW4gYSBwcmV2aW91c2x5IGV4ZWN1dGluZ00BcnVudGltZSBzaG91bGQgYmUgcmVhZGFibGUgcHJpb3IgdG8gcXVlcnkgdGltZW91dCkgYW5kIGRhbmdlcm91cyBzaW5jZSB0aGUgcG9zc2libHlZAXZhbGlkIHJlc3BvbnNlIHdpbGwgYmUgZHJvcHBlZC4gTWFudWFsIGdvdmVybmFuY2UgaW50ZXJ2ZW50aW9uIGlzIHByb2JhYmx5IGdvaW5nIHRvIGJlHG5lZWRlZC40UmVzcG9uc2VUYWtlbgQBIHF1ZXJ5X2lkKAEcUXVlcnlJZAAMBMhSZWNlaXZlZCBxdWVyeSByZXNwb25zZSBoYXMgYmVlbiByZWFkIGFuZCByZW1vdmVkLjRBc3NldHNUcmFwcGVkDAEQaGFzaEABEEgyNTYAARhvcmlnaW4dAgEgTG9jYXRpb24AARhhc3NldHONAwE8VmVyc2lvbmVkQXNzZXRzAA0EuFNvbWUgYXNzZXRzIGhhdmUgYmVlbiBwbGFjZWQgaW4gYW4gYXNzZXQgdHJhcC5UVmVyc2lvbkNoYW5nZU5vdGlmaWVkEAEsZGVzdGluYXRpb24dAgEgTG9jYXRpb24AARhyZXN1bHQ4AShYY21WZXJzaW9uAAEQY29zdCEDARhBc3NldHMAAShtZXNzYWdlX2lkCAEcWGNtSGFzaAAODCUBQW4gWENNIHZlcnNpb24gY2hhbmdlIG5vdGlmaWNhdGlvbiBtZXNzYWdlIGhhcyBiZWVuIGF0dGVtcHRlZCB0byBiZSBzZW50LgDgVGhlIGNvc3Qgb2Ygc2VuZGluZyBpdCAoYm9ybmUgYnkgdGhlIGNoYWluKSBpcyBpbmNsdWRlZC5cU3VwcG9ydGVkVmVyc2lvbkNoYW5nZWQIASBsb2NhdGlvbh0CASBMb2NhdGlvbgABHHZlcnNpb244AShYY21WZXJzaW9uAA8IOQFUaGUgc3VwcG9ydGVkIHZlcnNpb24gb2YgYSBsb2NhdGlvbiBoYXMgYmVlbiBjaGFuZ2VkLiBUaGlzIG1pZ2h0IGJlIHRocm91Z2ggYW7AYXV0b21hdGljIG5vdGlmaWNhdGlvbiBvciBhIG1hbnVhbCBpbnRlcnZlbnRpb24uUE5vdGlmeVRhcmdldFNlbmRGYWlsDAEgbG9jYXRpb24dAgEgTG9jYXRpb24AASBxdWVyeV9pZCgBHFF1ZXJ5SWQAARRlcnJvckUDASBYY21FcnJvcgAQCFkBQSBnaXZlbiBsb2NhdGlvbiB3aGljaCBoYWQgYSB2ZXJzaW9uIGNoYW5nZSBzdWJzY3JpcHRpb24gd2FzIGRyb3BwZWQgb3dpbmcgdG8gYW4gZXJyb3J8c2VuZGluZyB0aGUgbm90aWZpY2F0aW9uIHRvIGl0LmROb3RpZnlUYXJnZXRNaWdyYXRpb25GYWlsCAEgbG9jYXRpb27JAQFEVmVyc2lvbmVkTG9jYXRpb24AASBxdWVyeV9pZCgBHFF1ZXJ5SWQAEQhZAUEgZ2l2ZW4gbG9jYXRpb24gd2hpY2ggaGFkIGEgdmVyc2lvbiBjaGFuZ2Ugc3Vic2NyaXB0aW9uIHdhcyBkcm9wcGVkIG93aW5nIHRvIGFuIGVycm9ytG1pZ3JhdGluZyB0aGUgbG9jYXRpb24gdG8gb3VyIG5ldyBYQ00gZm9ybWF0LlRJbnZhbGlkUXVlcmllclZlcnNpb24IARhvcmlnaW4dAgEgTG9jYXRpb24AASBxdWVyeV9pZCgBHFF1ZXJ5SWQAEhxVAUV4cGVjdGVkIHF1ZXJ5IHJlc3BvbnNlIGhhcyBiZWVuIHJlY2VpdmVkIGJ1dCB0aGUgZXhwZWN0ZWQgcXVlcmllciBsb2NhdGlvbiBwbGFjZWQgaW5NAXN0b3JhZ2UgYnkgdGhpcyBydW50aW1lIHByZXZpb3VzbHkgY2Fubm90IGJlIGRlY29kZWQuIFRoZSBxdWVyeSByZW1haW5zIHJlZ2lzdGVyZWQuAEEBVGhpcyBpcyB1bmV4cGVjdGVkIChzaW5jZSBhIGxvY2F0aW9uIHBsYWNlZCBpbiBzdG9yYWdlIGluIGEgcHJldmlvdXNseSBleGVjdXRpbmdNAXJ1bnRpbWUgc2hvdWxkIGJlIHJlYWRhYmxlIHByaW9yIHRvIHF1ZXJ5IHRpbWVvdXQpIGFuZCBkYW5nZXJvdXMgc2luY2UgdGhlIHBvc3NpYmx5WQF2YWxpZCByZXNwb25zZSB3aWxsIGJlIGRyb3BwZWQuIE1hbnVhbCBnb3Zlcm5hbmNlIGludGVydmVudGlvbiBpcyBwcm9iYWJseSBnb2luZyB0byBiZRxuZWVkZWQuOEludmFsaWRRdWVyaWVyEAEYb3JpZ2luHQIBIExvY2F0aW9uAAEgcXVlcnlfaWQoARxRdWVyeUlkAAFAZXhwZWN0ZWRfcXVlcmllch0CASBMb2NhdGlvbgABUG1heWJlX2FjdHVhbF9xdWVyaWVyWQMBQE9wdGlvbjxMb2NhdGlvbj4AEwxdAUV4cGVjdGVkIHF1ZXJ5IHJlc3BvbnNlIGhhcyBiZWVuIHJlY2VpdmVkIGJ1dCB0aGUgcXVlcmllciBsb2NhdGlvbiBvZiB0aGUgcmVzcG9uc2UgZG9lc1EBbm90IG1hdGNoIHRoZSBleHBlY3RlZC4gVGhlIHF1ZXJ5IHJlbWFpbnMgcmVnaXN0ZXJlZCBmb3IgYSBsYXRlciwgdmFsaWQsIHJlc3BvbnNlIHRvbGJlIHJlY2VpdmVkIGFuZCBhY3RlZCB1cG9uLlBWZXJzaW9uTm90aWZ5U3RhcnRlZAwBLGRlc3RpbmF0aW9uHQIBIExvY2F0aW9uAAEQY29zdCEDARhBc3NldHMAAShtZXNzYWdlX2lkCAEcWGNtSGFzaAAUCFkBQSByZW1vdGUgaGFzIHJlcXVlc3RlZCBYQ00gdmVyc2lvbiBjaGFuZ2Ugbm90aWZpY2F0aW9uIGZyb20gdXMgYW5kIHdlIGhhdmUgaG9ub3JlZCBpdC4dAUEgdmVyc2lvbiBpbmZvcm1hdGlvbiBtZXNzYWdlIGlzIHNlbnQgdG8gdGhlbSBhbmQgaXRzIGNvc3QgaXMgaW5jbHVkZWQuWFZlcnNpb25Ob3RpZnlSZXF1ZXN0ZWQMASxkZXN0aW5hdGlvbh0CASBMb2NhdGlvbgABEGNvc3QhAwEYQXNzZXRzAAEobWVzc2FnZV9pZAgBHFhjbUhhc2gAFQQ9AVdlIGhhdmUgcmVxdWVzdGVkIHRoYXQgYSByZW1vdGUgY2hhaW4gc2VuZCB1cyBYQ00gdmVyc2lvbiBjaGFuZ2Ugbm90aWZpY2F0aW9ucy5gVmVyc2lvbk5vdGlmeVVucmVxdWVzdGVkDAEsZGVzdGluYXRpb24dAgEgTG9jYXRpb24AARBjb3N0IQMBGEFzc2V0cwABKG1lc3NhZ2VfaWQIARxYY21IYXNoABYIJQFXZSBoYXZlIHJlcXVlc3RlZCB0aGF0IGEgcmVtb3RlIGNoYWluIHN0b3BzIHNlbmRpbmcgdXMgWENNIHZlcnNpb24gY2hhbmdlOG5vdGlmaWNhdGlvbnMuIEZlZXNQYWlkCAEYcGF5aW5nHQIBIExvY2F0aW9uAAEQZmVlcyEDARhBc3NldHMAFwQxAUZlZXMgd2VyZSBwYWlkIGZyb20gYSBsb2NhdGlvbiBmb3IgYW4gb3BlcmF0aW9uIChvZnRlbiBmb3IgdXNpbmcgYFNlbmRYY21gKS40QXNzZXRzQ2xhaW1lZAwBEGhhc2hAARBIMjU2AAEYb3JpZ2luHQIBIExvY2F0aW9uAAEYYXNzZXRzjQMBPFZlcnNpb25lZEFzc2V0cwAYBMBTb21lIGFzc2V0cyBoYXZlIGJlZW4gY2xhaW1lZCBmcm9tIGFuIGFzc2V0IHRyYXBgVmVyc2lvbk1pZ3JhdGlvbkZpbmlzaGVkBAEcdmVyc2lvbjgBKFhjbVZlcnNpb24AGQSEQSBYQ00gdmVyc2lvbiBtaWdyYXRpb24gZmluaXNoZWQuPEFsaWFzQXV0aG9yaXplZAwBHGFsaWFzZXIdAgEgTG9jYXRpb24AARh0YXJnZXQdAgEgTG9jYXRpb24AARhleHBpcnkBAQEsT3B0aW9uPHU2ND4AGghdAUFuIGBhbGlhc2VyYCBsb2NhdGlvbiB3YXMgYXV0aG9yaXplZCBieSBgdGFyZ2V0YCB0byBhbGlhcyBpdCwgYXV0aG9yaXphdGlvbiB2YWxpZCB1bnRpbFhgZXhwaXJ5YCBibG9jayBudW1iZXIuZEFsaWFzQXV0aG9yaXphdGlvblJlbW92ZWQIARxhbGlhc2VyHQIBIExvY2F0aW9uAAEYdGFyZ2V0HQIBIExvY2F0aW9uABsEzGB0YXJnZXRgIHJlbW92ZWQgYWxpYXMgYXV0aG9yaXphdGlvbiBmb3IgYGFsaWFzZXJgLnBBbGlhc2VzQXV0aG9yaXphdGlvbnNSZW1vdmVkBAEYdGFyZ2V0HQIBIExvY2F0aW9uABwEqGB0YXJnZXRgIHJlbW92ZWQgYWxsIGFsaWFzIGF1dGhvcml6YXRpb25zLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldL0IECxzdGFnaW5nX3hjbQh2NRh0cmFpdHMcT3V0Y29tZQABDCBDb21wbGV0ZQQBEHVzZWQVAQEYV2VpZ2h0AAAAKEluY29tcGxldGUIARB1c2VkFQEBGFdlaWdodAABFGVycm9ywQgBQEluc3RydWN0aW9uRXJyb3IAAQAURXJyb3IEAMEIAUBJbnN0cnVjdGlvbkVycm9yAAIAAMEIECxzdGFnaW5nX3hjbQh2NRh0cmFpdHNASW5zdHJ1Y3Rpb25FcnJvcgAACAEUaW5kZXgMAUBJbnN0cnVjdGlvbkluZGV4AAEUZXJyb3JFAwEURXJyb3IAAMUIEAx4Y20IdjMYdHJhaXRzJFNlbmRFcnJvcgABHDROb3RBcHBsaWNhYmxlAAAAJFRyYW5zcG9ydAABAChVbnJvdXRhYmxlAAIAWERlc3RpbmF0aW9uVW5zdXBwb3J0ZWQAAwBURXhjZWVkc01heE1lc3NhZ2VTaXplAAQAPE1pc3NpbmdBcmd1bWVudAAFABBGZWVzAAYAAMkIDEhjdW11bHVzX3BhbGxldF94Y20YcGFsbGV0FEV2ZW50BARUAAEMNEludmFsaWRGb3JtYXQEAAgBIFt1ODsgMzJdAAAIgERvd253YXJkIG1lc3NhZ2UgaXMgaW52YWxpZCBYQ00uIFxbIGlkIFxdSFVuc3VwcG9ydGVkVmVyc2lvbgQACAEgW3U4OyAzMl0AAQi8RG93bndhcmQgbWVzc2FnZSBpcyB1bnN1cHBvcnRlZCB2ZXJzaW9uIG9mIFhDTS4gXFsgaWQgXF1ARXhlY3V0ZWREb3dud2FyZAgACAEgW3U4OyAzMl0AAL0IARxPdXRjb21lAAIIxERvd253YXJkIG1lc3NhZ2UgZXhlY3V0ZWQgd2l0aCB0aGUgZ2l2ZW4gb3V0Y29tZS5EXFsgaWQsIG91dGNvbWUgXF0EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXTNCAxwcGFsbGV0X3hjbV9icmlkZ2VfaHViX3JvdXRlchhwYWxsZXQURXZlbnQIBFQABEkAAQhoRGVsaXZlcnlGZWVGYWN0b3JEZWNyZWFzZWQEASRuZXdfdmFsdWUpBQEkRml4ZWRVMTI4BJROZXcgdmFsdWUgb2YgdGhlIGBEZWxpdmVyeUZlZUZhY3RvcmAuAAScRGVsaXZlcnkgZmVlIGZhY3RvciBoYXMgYmVlbiBkZWNyZWFzZWQuaERlbGl2ZXJ5RmVlRmFjdG9ySW5jcmVhc2VkBAEkbmV3X3ZhbHVlKQUBJEZpeGVkVTEyOASUTmV3IHZhbHVlIG9mIHRoZSBgRGVsaXZlcnlGZWVGYWN0b3JgLgEEnERlbGl2ZXJ5IGZlZSBmYWN0b3IgaGFzIGJlZW4gaW5jcmVhc2VkLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldNEIDFBwYWxsZXRfbWVzc2FnZV9xdWV1ZRhwYWxsZXQURXZlbnQEBFQAARBAUHJvY2Vzc2luZ0ZhaWxlZAwBCGlkQAEQSDI1NgSUVGhlIGBibGFrZTJfMjU2YCBoYXNoIG9mIHRoZSBtZXNzYWdlLgEYb3JpZ2lu0QMBSE1lc3NhZ2VPcmlnaW5PZjxUPgRkVGhlIHF1ZXVlIG9mIHRoZSBtZXNzYWdlLgEUZXJyb3LVCAFMUHJvY2Vzc01lc3NhZ2VFcnJvchBgVGhlIGVycm9yIHRoYXQgb2NjdXJyZWQuAEkBVGhpcyBlcnJvciBpcyBwcmV0dHkgb3BhcXVlLiBNb3JlIGZpbmUtZ3JhaW5lZCBlcnJvcnMgbmVlZCB0byBiZSBlbWl0dGVkIGFzIGV2ZW50c2hieSB0aGUgYE1lc3NhZ2VQcm9jZXNzb3JgLgAEVQFNZXNzYWdlIGRpc2NhcmRlZCBkdWUgdG8gYW4gZXJyb3IgaW4gdGhlIGBNZXNzYWdlUHJvY2Vzc29yYCAodXN1YWxseSBhIGZvcm1hdCBlcnJvcikuJFByb2Nlc3NlZBABCGlkQAEQSDI1NgSUVGhlIGBibGFrZTJfMjU2YCBoYXNoIG9mIHRoZSBtZXNzYWdlLgEYb3JpZ2lu0QMBSE1lc3NhZ2VPcmlnaW5PZjxUPgRkVGhlIHF1ZXVlIG9mIHRoZSBtZXNzYWdlLgEsd2VpZ2h0X3VzZWQVAQEYV2VpZ2h0BMBIb3cgbXVjaCB3ZWlnaHQgd2FzIHVzZWQgdG8gcHJvY2VzcyB0aGUgbWVzc2FnZS4BHHN1Y2Nlc3NdAQEQYm9vbBiIV2hldGhlciB0aGUgbWVzc2FnZSB3YXMgcHJvY2Vzc2VkLgBJAU5vdGUgdGhhdCB0aGlzIGRvZXMgbm90IG1lYW4gdGhhdCB0aGUgdW5kZXJseWluZyBgTWVzc2FnZVByb2Nlc3NvcmAgd2FzIGludGVybmFsbHk1AXN1Y2Nlc3NmdWwuIEl0ICpzb2xlbHkqIG1lYW5zIHRoYXQgdGhlIE1RIHBhbGxldCB3aWxsIHRyZWF0IHRoaXMgYXMgYSBzdWNjZXNzTQFjb25kaXRpb24gYW5kIGRpc2NhcmQgdGhlIG1lc3NhZ2UuIEFueSBpbnRlcm5hbCBlcnJvciBuZWVkcyB0byBiZSBlbWl0dGVkIGFzIGV2ZW50c2hieSB0aGUgYE1lc3NhZ2VQcm9jZXNzb3JgLgEEVE1lc3NhZ2UgaXMgcHJvY2Vzc2VkLkhPdmVyd2VpZ2h0RW5xdWV1ZWQQAQhpZAgBIFt1ODsgMzJdBJRUaGUgYGJsYWtlMl8yNTZgIGhhc2ggb2YgdGhlIG1lc3NhZ2UuARhvcmlnaW7RAwFITWVzc2FnZU9yaWdpbk9mPFQ+BGRUaGUgcXVldWUgb2YgdGhlIG1lc3NhZ2UuAShwYWdlX2luZGV4OAEkUGFnZUluZGV4BGBUaGUgcGFnZSBvZiB0aGUgbWVzc2FnZS4BNG1lc3NhZ2VfaW5kZXg4ARxUOjpTaXplBKRUaGUgaW5kZXggb2YgdGhlIG1lc3NhZ2Ugd2l0aGluIHRoZSBwYWdlLgIEjE1lc3NhZ2UgcGxhY2VkIGluIG92ZXJ3ZWlnaHQgcXVldWUuKFBhZ2VSZWFwZWQIARhvcmlnaW7RAwFITWVzc2FnZU9yaWdpbk9mPFQ+BFhUaGUgcXVldWUgb2YgdGhlIHBhZ2UuARRpbmRleDgBJFBhZ2VJbmRleARYVGhlIGluZGV4IG9mIHRoZSBwYWdlLgMEVFRoaXMgcGFnZSB3YXMgcmVhcGVkLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldNUIEDRmcmFtZV9zdXBwb3J0GHRyYWl0cyBtZXNzYWdlc0xQcm9jZXNzTWVzc2FnZUVycm9yAAEYJEJhZEZvcm1hdAAAABxDb3JydXB0AAEALFVuc3VwcG9ydGVkAAIAKE92ZXJ3ZWlnaHQEABUBARhXZWlnaHQAAwAUWWllbGQABABEU3RhY2tMaW1pdFJlYWNoZWQABQAA2QgMhHNub3dicmlkZ2VfcGFsbGV0X3N5c3RlbV9mcm9udGVuZBhwYWxsZXQURXZlbnQEBFQAAQgsTWVzc2FnZVNlbnQQARhvcmlnaW4dAgEgTG9jYXRpb24AASxkZXN0aW5hdGlvbh0CASBMb2NhdGlvbgABHG1lc3NhZ2UVAwEcWGNtPCgpPgABKG1lc3NhZ2VfaWQIARxYY21IYXNoAAAEPEFuIFhDTSB3YXMgc2VudGhFeHBvcnRPcGVyYXRpbmdNb2RlQ2hhbmdlZAQBEG1vZGXZAwE0T3BlcmF0aW5nTW9kZQABBERTZXQgT3BlcmF0aW5nTW9kZQR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldN0IDDhwYWxsZXRfdXRpbGl0eRhwYWxsZXQURXZlbnQAASBAQmF0Y2hJbnRlcnJ1cHRlZAgBFGluZGV4OAEMdTMyAAEUZXJyb3IJCAE0RGlzcGF0Y2hFcnJvcgAACFUBQmF0Y2ggb2YgZGlzcGF0Y2hlcyBkaWQgbm90IGNvbXBsZXRlIGZ1bGx5LiBJbmRleCBvZiBmaXJzdCBmYWlsaW5nIGRpc3BhdGNoIGdpdmVuLCBhc0h3ZWxsIGFzIHRoZSBlcnJvci44QmF0Y2hDb21wbGV0ZWQAAQTIQmF0Y2ggb2YgZGlzcGF0Y2hlcyBjb21wbGV0ZWQgZnVsbHkgd2l0aCBubyBlcnJvci5gQmF0Y2hDb21wbGV0ZWRXaXRoRXJyb3JzAAIEtEJhdGNoIG9mIGRpc3BhdGNoZXMgY29tcGxldGVkIGJ1dCBoYXMgZXJyb3JzLjRJdGVtQ29tcGxldGVkAAMEHQFBIHNpbmdsZSBpdGVtIHdpdGhpbiBhIEJhdGNoIG9mIGRpc3BhdGNoZXMgaGFzIGNvbXBsZXRlZCB3aXRoIG5vIGVycm9yLihJdGVtRmFpbGVkBAEUZXJyb3IJCAE0RGlzcGF0Y2hFcnJvcgAEBBEBQSBzaW5nbGUgaXRlbSB3aXRoaW4gYSBCYXRjaCBvZiBkaXNwYXRjaGVzIGhhcyBjb21wbGV0ZWQgd2l0aCBlcnJvci4wRGlzcGF0Y2hlZEFzBAEYcmVzdWx0LQgBOERpc3BhdGNoUmVzdWx0AAUEWEEgY2FsbCB3YXMgZGlzcGF0Y2hlZC5ESWZFbHNlTWFpblN1Y2Nlc3MABgRkTWFpbiBjYWxsIHdhcyBkaXNwYXRjaGVkLlBJZkVsc2VGYWxsYmFja0NhbGxlZAQBKG1haW5fZXJyb3IJCAE0RGlzcGF0Y2hFcnJvcgAHBIRUaGUgZmFsbGJhY2sgY2FsbCB3YXMgZGlzcGF0Y2hlZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXThCAw8cGFsbGV0X211bHRpc2lnGHBhbGxldBRFdmVudAQEVAABFCxOZXdNdWx0aXNpZwwBJGFwcHJvdmluZwQBMFQ6OkFjY291bnRJZAABIG11bHRpc2lnBAEwVDo6QWNjb3VudElkAAEkY2FsbF9oYXNoCAEgQ2FsbEhhc2gAAASMQSBuZXcgbXVsdGlzaWcgb3BlcmF0aW9uIGhhcyBiZWd1bi5ATXVsdGlzaWdBcHByb3ZhbBABJGFwcHJvdmluZwQBMFQ6OkFjY291bnRJZAABJHRpbWVwb2ludDEEAXBUaW1lcG9pbnQ8QmxvY2tOdW1iZXJGb3I8VD4+AAEgbXVsdGlzaWcEATBUOjpBY2NvdW50SWQAASRjYWxsX2hhc2gIASBDYWxsSGFzaAABBMhBIG11bHRpc2lnIG9wZXJhdGlvbiBoYXMgYmVlbiBhcHByb3ZlZCBieSBzb21lb25lLkBNdWx0aXNpZ0V4ZWN1dGVkFAEkYXBwcm92aW5nBAEwVDo6QWNjb3VudElkAAEkdGltZXBvaW50MQQBcFRpbWVwb2ludDxCbG9ja051bWJlckZvcjxUPj4AASBtdWx0aXNpZwQBMFQ6OkFjY291bnRJZAABJGNhbGxfaGFzaAgBIENhbGxIYXNoAAEYcmVzdWx0LQgBOERpc3BhdGNoUmVzdWx0AAIEnEEgbXVsdGlzaWcgb3BlcmF0aW9uIGhhcyBiZWVuIGV4ZWN1dGVkLkRNdWx0aXNpZ0NhbmNlbGxlZBABKGNhbmNlbGxpbmcEATBUOjpBY2NvdW50SWQAASR0aW1lcG9pbnQxBAFwVGltZXBvaW50PEJsb2NrTnVtYmVyRm9yPFQ+PgABIG11bHRpc2lnBAEwVDo6QWNjb3VudElkAAEkY2FsbF9oYXNoCAEgQ2FsbEhhc2gAAwSgQSBtdWx0aXNpZyBvcGVyYXRpb24gaGFzIGJlZW4gY2FuY2VsbGVkLjBEZXBvc2l0UG9rZWQQAQx3aG8EATBUOjpBY2NvdW50SWQAASRjYWxsX2hhc2gIASBDYWxsSGFzaAABLG9sZF9kZXBvc2l0WQEBMEJhbGFuY2VPZjxUPgABLG5ld19kZXBvc2l0WQEBMEJhbGFuY2VPZjxUPgAEBPBUaGUgZGVwb3NpdCBmb3IgYSBtdWx0aXNpZyBvcGVyYXRpb24gaGFzIGJlZW4gdXBkYXRlZC9wb2tlZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXTlCAwwcGFsbGV0X3Byb3h5GHBhbGxldBRFdmVudAQEVAABHDRQcm94eUV4ZWN1dGVkBAEYcmVzdWx0LQgBOERpc3BhdGNoUmVzdWx0AAAEvEEgcHJveHkgd2FzIGV4ZWN1dGVkIGNvcnJlY3RseSwgd2l0aCB0aGUgZ2l2ZW4uLFB1cmVDcmVhdGVkGAEQcHVyZQQBMFQ6OkFjY291bnRJZAABDHdobwQBMFQ6OkFjY291bnRJZAABKHByb3h5X3R5cGU9BAEwVDo6UHJveHlUeXBlAAFQZGlzYW1iaWd1YXRpb25faW5kZXjtAwEMdTE2AAEIYXQ4AURCbG9ja051bWJlckZvcjxUPgABPGV4dHJpbnNpY19pbmRleDgBDHUzMgABCNxBIHB1cmUgYWNjb3VudCBoYXMgYmVlbiBjcmVhdGVkIGJ5IG5ldyBwcm94eSB3aXRoIGdpdmVukGRpc2FtYmlndWF0aW9uIGluZGV4IGFuZCBwcm94eSB0eXBlLihQdXJlS2lsbGVkEAEQcHVyZQQBMFQ6OkFjY291bnRJZAABHHNwYXduZXIEATBUOjpBY2NvdW50SWQAAShwcm94eV90eXBlPQQBMFQ6OlByb3h5VHlwZQABUGRpc2FtYmlndWF0aW9uX2luZGV47QMBDHUxNgACBJxBIHB1cmUgcHJveHkgd2FzIGtpbGxlZCBieSBpdHMgc3Bhd25lci4kQW5ub3VuY2VkDAEQcmVhbAQBMFQ6OkFjY291bnRJZAABFHByb3h5BAEwVDo6QWNjb3VudElkAAEkY2FsbF9oYXNoQAE0Q2FsbEhhc2hPZjxUPgADBOBBbiBhbm5vdW5jZW1lbnQgd2FzIHBsYWNlZCB0byBtYWtlIGEgY2FsbCBpbiB0aGUgZnV0dXJlLihQcm94eUFkZGVkEAEkZGVsZWdhdG9yBAEwVDo6QWNjb3VudElkAAEkZGVsZWdhdGVlBAEwVDo6QWNjb3VudElkAAEocHJveHlfdHlwZT0EATBUOjpQcm94eVR5cGUAARRkZWxheTgBREJsb2NrTnVtYmVyRm9yPFQ+AAQESEEgcHJveHkgd2FzIGFkZGVkLjBQcm94eVJlbW92ZWQQASRkZWxlZ2F0b3IEATBUOjpBY2NvdW50SWQAASRkZWxlZ2F0ZWUEATBUOjpBY2NvdW50SWQAAShwcm94eV90eXBlPQQBMFQ6OlByb3h5VHlwZQABFGRlbGF5OAFEQmxvY2tOdW1iZXJGb3I8VD4ABQRQQSBwcm94eSB3YXMgcmVtb3ZlZC4wRGVwb3NpdFBva2VkEAEMd2hvBAEwVDo6QWNjb3VudElkAAEQa2luZOkIASxEZXBvc2l0S2luZAABLG9sZF9kZXBvc2l0WQEBMEJhbGFuY2VPZjxUPgABLG5ld19kZXBvc2l0WQEBMEJhbGFuY2VPZjxUPgAGBAkBQSBkZXBvc2l0IHN0b3JlZCBmb3IgcHJveGllcyBvciBhbm5vdW5jZW1lbnRzIHdhcyBwb2tlZCAvIHVwZGF0ZWQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV06QgIMHBhbGxldF9wcm94eSxEZXBvc2l0S2luZAABCBxQcm94aWVzAAAANEFubm91bmNlbWVudHMAAQAA7QgMOHBhbGxldF9pbmRpY2VzGHBhbGxldBRFdmVudAQEVAABEDRJbmRleEFzc2lnbmVkCAEMd2hvBAEwVDo6QWNjb3VudElkAAEUaW5kZXg4ATxUOjpBY2NvdW50SW5kZXgAAAR0QSBhY2NvdW50IGluZGV4IHdhcyBhc3NpZ25lZC4oSW5kZXhGcmVlZAQBFGluZGV4OAE8VDo6QWNjb3VudEluZGV4AAEEvEEgYWNjb3VudCBpbmRleCBoYXMgYmVlbiBmcmVlZCB1cCAodW5hc3NpZ25lZCkuLEluZGV4RnJvemVuCAEUaW5kZXg4ATxUOjpBY2NvdW50SW5kZXgAAQx3aG8EATBUOjpBY2NvdW50SWQAAgToQSBhY2NvdW50IGluZGV4IGhhcyBiZWVuIGZyb3plbiB0byBpdHMgY3VycmVudCBhY2NvdW50IElELjBEZXBvc2l0UG9rZWQQAQx3aG8EATBUOjpBY2NvdW50SWQAARRpbmRleDgBPFQ6OkFjY291bnRJbmRleAABLG9sZF9kZXBvc2l0WQEBMEJhbGFuY2VPZjxUPgABLG5ld19kZXBvc2l0WQEBMEJhbGFuY2VPZjxUPgADBOhBIGRlcG9zaXQgdG8gcmVzZXJ2ZSBhbiBpbmRleCBoYXMgYmVlbiBwb2tlZC9yZWNvbnNpZGVyZWQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV08QgMNHBhbGxldF9hc3NldHMYcGFsbGV0FEV2ZW50CARUAARJAAGAHENyZWF0ZWQMASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAARxjcmVhdG9yBAEwVDo6QWNjb3VudElkAAEUb3duZXIEATBUOjpBY2NvdW50SWQAAAR0U29tZSBhc3NldCBjbGFzcyB3YXMgY3JlYXRlZC4YSXNzdWVkDAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEUb3duZXIEATBUOjpBY2NvdW50SWQAARhhbW91bnRZAQEoVDo6QmFsYW5jZQABBGBTb21lIGFzc2V0cyB3ZXJlIGlzc3VlZC4sVHJhbnNmZXJyZWQQASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAARBmcm9tBAEwVDo6QWNjb3VudElkAAEIdG8EATBUOjpBY2NvdW50SWQAARhhbW91bnRZAQEoVDo6QmFsYW5jZQACBHRTb21lIGFzc2V0cyB3ZXJlIHRyYW5zZmVycmVkLhhCdXJuZWQMASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAABHGJhbGFuY2VZAQEoVDo6QmFsYW5jZQADBGxTb21lIGFzc2V0cyB3ZXJlIGRlc3Ryb3llZC4sVGVhbUNoYW5nZWQQASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAARhpc3N1ZXIEATBUOjpBY2NvdW50SWQAARRhZG1pbgQBMFQ6OkFjY291bnRJZAABHGZyZWV6ZXIEATBUOjpBY2NvdW50SWQABARwVGhlIG1hbmFnZW1lbnQgdGVhbSBjaGFuZ2VkLjBPd25lckNoYW5nZWQIASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAAFBEhUaGUgb3duZXIgY2hhbmdlZC4YRnJvemVuCAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEMd2hvBAEwVDo6QWNjb3VudElkAAYEeFNvbWUgYWNjb3VudCBgd2hvYCB3YXMgZnJvemVuLhhUaGF3ZWQIASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAAQx3aG8EATBUOjpBY2NvdW50SWQABwR4U29tZSBhY2NvdW50IGB3aG9gIHdhcyB0aGF3ZWQuLEFzc2V0RnJvemVuBAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAgEhFNvbWUgYXNzZXQgYGFzc2V0X2lkYCB3YXMgZnJvemVuLixBc3NldFRoYXdlZAQBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAAJBIRTb21lIGFzc2V0IGBhc3NldF9pZGAgd2FzIHRoYXdlZC5EQWNjb3VudHNEZXN0cm95ZWQMASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAAUhhY2NvdW50c19kZXN0cm95ZWQ4AQx1MzIAAUhhY2NvdW50c19yZW1haW5pbmc4AQx1MzIACgSgQWNjb3VudHMgd2VyZSBkZXN0cm95ZWQgZm9yIGdpdmVuIGFzc2V0LkhBcHByb3ZhbHNEZXN0cm95ZWQMASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAAUxhcHByb3ZhbHNfZGVzdHJveWVkOAEMdTMyAAFMYXBwcm92YWxzX3JlbWFpbmluZzgBDHUzMgALBKRBcHByb3ZhbHMgd2VyZSBkZXN0cm95ZWQgZm9yIGdpdmVuIGFzc2V0LkhEZXN0cnVjdGlvblN0YXJ0ZWQEASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQADATQQW4gYXNzZXQgY2xhc3MgaXMgaW4gdGhlIHByb2Nlc3Mgb2YgYmVpbmcgZGVzdHJveWVkLiREZXN0cm95ZWQEASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQADQR0QW4gYXNzZXQgY2xhc3Mgd2FzIGRlc3Ryb3llZC4wRm9yY2VDcmVhdGVkCAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEUb3duZXIEATBUOjpBY2NvdW50SWQADgSMU29tZSBhc3NldCBjbGFzcyB3YXMgZm9yY2UtY3JlYXRlZC4sTWV0YWRhdGFTZXQUASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAARBuYW1lGAEcVmVjPHU4PgABGHN5bWJvbBgBHFZlYzx1OD4AASBkZWNpbWFscwwBCHU4AAEkaXNfZnJvemVuXQEBEGJvb2wADwScTmV3IG1ldGFkYXRhIGhhcyBiZWVuIHNldCBmb3IgYW4gYXNzZXQuPE1ldGFkYXRhQ2xlYXJlZAQBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAAQBJxNZXRhZGF0YSBoYXMgYmVlbiBjbGVhcmVkIGZvciBhbiBhc3NldC5AQXBwcm92ZWRUcmFuc2ZlchABIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABGHNvdXJjZQQBMFQ6OkFjY291bnRJZAABIGRlbGVnYXRlBAEwVDo6QWNjb3VudElkAAEYYW1vdW50WQEBKFQ6OkJhbGFuY2UAEQQxAShBZGRpdGlvbmFsKSBmdW5kcyBoYXZlIGJlZW4gYXBwcm92ZWQgZm9yIHRyYW5zZmVyIHRvIGEgZGVzdGluYXRpb24gYWNjb3VudC5EQXBwcm92YWxDYW5jZWxsZWQMASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAABIGRlbGVnYXRlBAEwVDo6QWNjb3VudElkABIE8EFuIGFwcHJvdmFsIGZvciBhY2NvdW50IGBkZWxlZ2F0ZWAgd2FzIGNhbmNlbGxlZCBieSBgb3duZXJgLkxUcmFuc2ZlcnJlZEFwcHJvdmVkFAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEUb3duZXIEATBUOjpBY2NvdW50SWQAASBkZWxlZ2F0ZQQBMFQ6OkFjY291bnRJZAABLGRlc3RpbmF0aW9uBAEwVDo6QWNjb3VudElkAAEYYW1vdW50WQEBKFQ6OkJhbGFuY2UAEwgxAUFuIGBhbW91bnRgIHdhcyB0cmFuc2ZlcnJlZCBpbiBpdHMgZW50aXJldHkgZnJvbSBgb3duZXJgIHRvIGBkZXN0aW5hdGlvbmAgYnlgdGhlIGFwcHJvdmVkIGBkZWxlZ2F0ZWAuSEFzc2V0U3RhdHVzQ2hhbmdlZAQBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAAUBPhBbiBhc3NldCBoYXMgaGFkIGl0cyBhdHRyaWJ1dGVzIGNoYW5nZWQgYnkgdGhlIGBGb3JjZWAgb3JpZ2luLlhBc3NldE1pbkJhbGFuY2VDaGFuZ2VkCAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAE8bmV3X21pbl9iYWxhbmNlWQEBKFQ6OkJhbGFuY2UAFQQBAVRoZSBtaW5fYmFsYW5jZSBvZiBhbiBhc3NldCBoYXMgYmVlbiB1cGRhdGVkIGJ5IHRoZSBhc3NldCBvd25lci4cVG91Y2hlZAwBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABDHdobwQBMFQ6OkFjY291bnRJZAABJGRlcG9zaXRvcgQBMFQ6OkFjY291bnRJZAAWBPxTb21lIGFjY291bnQgYHdob2Agd2FzIGNyZWF0ZWQgd2l0aCBhIGRlcG9zaXQgZnJvbSBgZGVwb3NpdG9yYC4cQmxvY2tlZAgBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABDHdobwQBMFQ6OkFjY291bnRJZAAXBHxTb21lIGFjY291bnQgYHdob2Agd2FzIGJsb2NrZWQuJERlcG9zaXRlZAwBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABDHdobwQBMFQ6OkFjY291bnRJZAABGGFtb3VudFkBAShUOjpCYWxhbmNlABgE3FNvbWUgYXNzZXRzIHdlcmUgZGVwb3NpdGVkIChlLmcuIGZvciB0cmFuc2FjdGlvbiBmZWVzKS4kV2l0aGRyYXduDAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50WQEBKFQ6OkJhbGFuY2UAGQQhAVNvbWUgYXNzZXRzIHdlcmUgd2l0aGRyYXduIGZyb20gdGhlIGFjY291bnQgKGUuZy4gZm9yIHRyYW5zYWN0aW9uIGZlZXMpLjxSZXNlcnZlc1VwZGF0ZWQIASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAASByZXNlcnZlc00EAUxWZWM8VDo6UmVzZXJ2ZURhdGE+ABoE2FJlc2VydmUgaW5mb3JtYXRpb24gd2FzIHNldCBvciB1cGRhdGVkIGZvciBgYXNzZXRfaWRgLjxSZXNlcnZlc1JlbW92ZWQEASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAGwS8UmVzZXJ2ZSBpbmZvcm1hdGlvbiB3YXMgcmVtb3ZlZCBmb3IgYGFzc2V0X2lkYC4wSXNzdWVkQ3JlZGl0CAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEYYW1vdW50WQEBKFQ6OkJhbGFuY2UAHATEU29tZSBhc3NldHMgd2VyZSBpc3N1ZWQgYXMgQ3JlZGl0IChubyBvd25lciB5ZXQpLjBCdXJuZWRDcmVkaXQIASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAARhhbW91bnRZAQEoVDo6QmFsYW5jZQAdBIRTb21lIGFzc2V0cyBDcmVkaXQgd2FzIGRlc3Ryb3llZC4oSXNzdWVkRGVidAgBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABGGFtb3VudFkBAShUOjpCYWxhbmNlAB4EvFNvbWUgYXNzZXRzIHdlcmUgYnVybmVkIGFuZCBhIERlYnQgd2FzIGNyZWF0ZWQuKEJ1cm5lZERlYnQIASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAARhhbW91bnRZAQEoVDo6QmFsYW5jZQAfBMxTb21lIGFzc2V0cyBEZWJ0IHdhcyBkZXN0cm95ZWQgKGFuZCBhc3NldHMgaXNzdWVkKS4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXT1CAw4cGFsbGV0X3VuaXF1ZXMYcGFsbGV0FEV2ZW50CARUAARJAAFsHENyZWF0ZWQMAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEcY3JlYXRvcgQBMFQ6OkFjY291bnRJZAABFG93bmVyBAEwVDo6QWNjb3VudElkAAAEbEEgYGNvbGxlY3Rpb25gIHdhcyBjcmVhdGVkLjBGb3JjZUNyZWF0ZWQIAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEUb3duZXIEATBUOjpBY2NvdW50SWQAAQSEQSBgY29sbGVjdGlvbmAgd2FzIGZvcmNlLWNyZWF0ZWQuJERlc3Ryb3llZAQBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAAgR0QSBgY29sbGVjdGlvbmAgd2FzIGRlc3Ryb3llZC4YSXNzdWVkDAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAADBFRBbiBgaXRlbWAgd2FzIGlzc3VlZC4sVHJhbnNmZXJyZWQQAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAABEGZyb20EATBUOjpBY2NvdW50SWQAAQh0bwQBMFQ6OkFjY291bnRJZAAEBGhBbiBgaXRlbWAgd2FzIHRyYW5zZmVycmVkLhhCdXJuZWQMAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAABFG93bmVyBAEwVDo6QWNjb3VudElkAAUEYEFuIGBpdGVtYCB3YXMgZGVzdHJveWVkLhhGcm96ZW4IAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAAGBFxTb21lIGBpdGVtYCB3YXMgZnJvemVuLhhUaGF3ZWQIAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAAHBFxTb21lIGBpdGVtYCB3YXMgdGhhd2VkLkBDb2xsZWN0aW9uRnJvemVuBAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAAIBHRTb21lIGBjb2xsZWN0aW9uYCB3YXMgZnJvemVuLkBDb2xsZWN0aW9uVGhhd2VkBAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAAJBHRTb21lIGBjb2xsZWN0aW9uYCB3YXMgdGhhd2VkLjBPd25lckNoYW5nZWQIAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEkbmV3X293bmVyBAEwVDo6QWNjb3VudElkAAoESFRoZSBvd25lciBjaGFuZ2VkLixUZWFtQ2hhbmdlZBABKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARhpc3N1ZXIEATBUOjpBY2NvdW50SWQAARRhZG1pbgQBMFQ6OkFjY291bnRJZAABHGZyZWV6ZXIEATBUOjpBY2NvdW50SWQACwRwVGhlIG1hbmFnZW1lbnQgdGVhbSBjaGFuZ2VkLkBBcHByb3ZlZFRyYW5zZmVyEAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAABIGRlbGVnYXRlBAEwVDo6QWNjb3VudElkAAwIMQFBbiBgaXRlbWAgb2YgYSBgY29sbGVjdGlvbmAgaGFzIGJlZW4gYXBwcm92ZWQgYnkgdGhlIGBvd25lcmAgZm9yIHRyYW5zZmVyIGJ5NGEgYGRlbGVnYXRlYC5EQXBwcm92YWxDYW5jZWxsZWQQAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAABFG93bmVyBAEwVDo6QWNjb3VudElkAAEgZGVsZWdhdGUEATBUOjpBY2NvdW50SWQADQgZAUFuIGFwcHJvdmFsIGZvciBhIGBkZWxlZ2F0ZWAgYWNjb3VudCB0byB0cmFuc2ZlciB0aGUgYGl0ZW1gIG9mIGFuIGl0ZW2oYGNvbGxlY3Rpb25gIHdhcyBjYW5jZWxsZWQgYnkgaXRzIGBvd25lcmAuREl0ZW1TdGF0dXNDaGFuZ2VkBAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAAOBBEBQSBgY29sbGVjdGlvbmAgaGFzIGhhZCBpdHMgYXR0cmlidXRlcyBjaGFuZ2VkIGJ5IHRoZSBgRm9yY2VgIG9yaWdpbi5UQ29sbGVjdGlvbk1ldGFkYXRhU2V0DAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGRhdGFhBAF4Qm91bmRlZFZlYzx1OCwgVDo6U3RyaW5nTGltaXQ+AAEkaXNfZnJvemVuXQEBEGJvb2wADwS0TmV3IG1ldGFkYXRhIGhhcyBiZWVuIHNldCBmb3IgYSBgY29sbGVjdGlvbmAuZENvbGxlY3Rpb25NZXRhZGF0YUNsZWFyZWQEAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkABAEtE1ldGFkYXRhIGhhcyBiZWVuIGNsZWFyZWQgZm9yIGEgYGNvbGxlY3Rpb25gLixNZXRhZGF0YVNldBABKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAEQZGF0YWEEAXhCb3VuZGVkVmVjPHU4LCBUOjpTdHJpbmdMaW1pdD4AASRpc19mcm96ZW5dAQEQYm9vbAARBJhOZXcgbWV0YWRhdGEgaGFzIGJlZW4gc2V0IGZvciBhbiBpdGVtLjxNZXRhZGF0YUNsZWFyZWQIAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAASBJhNZXRhZGF0YSBoYXMgYmVlbiBjbGVhcmVkIGZvciBhbiBpdGVtLixSZWRlcG9zaXRlZAgBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAAUBzdWNjZXNzZnVsX2l0ZW1zXQQBOFZlYzxUOjpJdGVtSWQ+ABMEmE1ldGFkYXRhIGhhcyBiZWVuIGNsZWFyZWQgZm9yIGFuIGl0ZW0uMEF0dHJpYnV0ZVNldBABKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAAShtYXliZV9pdGVt5AFET3B0aW9uPFQ6Okl0ZW1JZD4AAQxrZXmdAQFsQm91bmRlZFZlYzx1OCwgVDo6S2V5TGltaXQ+AAEUdmFsdWV8AXRCb3VuZGVkVmVjPHU4LCBUOjpWYWx1ZUxpbWl0PgAUBAUBTmV3IGF0dHJpYnV0ZSBtZXRhZGF0YSBoYXMgYmVlbiBzZXQgZm9yIGEgYGNvbGxlY3Rpb25gIG9yIGBpdGVtYC5AQXR0cmlidXRlQ2xlYXJlZAwBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAAShtYXliZV9pdGVt5AFET3B0aW9uPFQ6Okl0ZW1JZD4AAQxrZXmdAQFsQm91bmRlZFZlYzx1OCwgVDo6S2V5TGltaXQ+ABUEBQFBdHRyaWJ1dGUgbWV0YWRhdGEgaGFzIGJlZW4gY2xlYXJlZCBmb3IgYSBgY29sbGVjdGlvbmAgb3IgYGl0ZW1gLmhPd25lcnNoaXBBY2NlcHRhbmNlQ2hhbmdlZAgBDHdobwQBMFQ6OkFjY291bnRJZAABQG1heWJlX2NvbGxlY3Rpb27kAVxPcHRpb248VDo6Q29sbGVjdGlvbklkPgAWBMBPd25lcnNoaXAgYWNjZXB0YW5jZSBoYXMgY2hhbmdlZCBmb3IgYW4gYWNjb3VudC5YQ29sbGVjdGlvbk1heFN1cHBseVNldAgBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAAShtYXhfc3VwcGx5OAEMdTMyABcEpE1heCBzdXBwbHkgaGFzIGJlZW4gc2V0IGZvciBhIGNvbGxlY3Rpb24uMEl0ZW1QcmljZVNldBABKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAEUcHJpY2VZAQE8SXRlbVByaWNlPFQsIEk+AAFEd2hpdGVsaXN0ZWRfYnV5ZXKRAQFQT3B0aW9uPFQ6OkFjY291bnRJZD4AGASMVGhlIHByaWNlIHdhcyBzZXQgZm9yIHRoZSBpbnN0YW5jZS5ASXRlbVByaWNlUmVtb3ZlZAgBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkABkEnFRoZSBwcmljZSBmb3IgdGhlIGluc3RhbmNlIHdhcyByZW1vdmVkLihJdGVtQm91Z2h0FAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAARRwcmljZVkBATxJdGVtUHJpY2U8VCwgST4AARhzZWxsZXIEATBUOjpBY2NvdW50SWQAARRidXllcgQBMFQ6OkFjY291bnRJZAAaBExBbiBpdGVtIHdhcyBib3VnaHQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0+QgMLHBhbGxldF9uZnRzGHBhbGxldBRFdmVudAgEVAAESQABmBxDcmVhdGVkDAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABHGNyZWF0b3IEATBUOjpBY2NvdW50SWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAAABGxBIGBjb2xsZWN0aW9uYCB3YXMgY3JlYXRlZC4wRm9yY2VDcmVhdGVkCAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABFG93bmVyBAEwVDo6QWNjb3VudElkAAEEhEEgYGNvbGxlY3Rpb25gIHdhcyBmb3JjZS1jcmVhdGVkLiREZXN0cm95ZWQEAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAIEdEEgYGNvbGxlY3Rpb25gIHdhcyBkZXN0cm95ZWQuGElzc3VlZAwBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAEUb3duZXIEATBUOjpBY2NvdW50SWQAAwRUQW4gYGl0ZW1gIHdhcyBpc3N1ZWQuLFRyYW5zZmVycmVkEAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAARBmcm9tBAEwVDo6QWNjb3VudElkAAEIdG8EATBUOjpBY2NvdW50SWQABARoQW4gYGl0ZW1gIHdhcyB0cmFuc2ZlcnJlZC4YQnVybmVkDAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAAFBGBBbiBgaXRlbWAgd2FzIGRlc3Ryb3llZC5ISXRlbVRyYW5zZmVyTG9ja2VkCAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQABgSIQW4gYGl0ZW1gIGJlY2FtZSBub24tdHJhbnNmZXJhYmxlLlBJdGVtVHJhbnNmZXJVbmxvY2tlZAgBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAcEeEFuIGBpdGVtYCBiZWNhbWUgdHJhbnNmZXJhYmxlLlBJdGVtUHJvcGVydGllc0xvY2tlZBABKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAE0bG9ja19tZXRhZGF0YV0BARBib29sAAE8bG9ja19hdHRyaWJ1dGVzXQEBEGJvb2wACASoYGl0ZW1gIG1ldGFkYXRhIG9yIGF0dHJpYnV0ZXMgd2VyZSBsb2NrZWQuQENvbGxlY3Rpb25Mb2NrZWQEAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAkEdFNvbWUgYGNvbGxlY3Rpb25gIHdhcyBsb2NrZWQuME93bmVyQ2hhbmdlZAgBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAASRuZXdfb3duZXIEATBUOjpBY2NvdW50SWQACgRIVGhlIG93bmVyIGNoYW5nZWQuLFRlYW1DaGFuZ2VkEAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABGGlzc3VlcpEBAVBPcHRpb248VDo6QWNjb3VudElkPgABFGFkbWlukQEBUE9wdGlvbjxUOjpBY2NvdW50SWQ+AAEcZnJlZXplcpEBAVBPcHRpb248VDo6QWNjb3VudElkPgALBHBUaGUgbWFuYWdlbWVudCB0ZWFtIGNoYW5nZWQuQFRyYW5zZmVyQXBwcm92ZWQUAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAABFG93bmVyBAEwVDo6QWNjb3VudElkAAEgZGVsZWdhdGUEATBUOjpBY2NvdW50SWQAASBkZWFkbGluZeQBcE9wdGlvbjxCbG9ja051bWJlckZvcjxULCBJPj4ADAgxAUFuIGBpdGVtYCBvZiBhIGBjb2xsZWN0aW9uYCBoYXMgYmVlbiBhcHByb3ZlZCBieSB0aGUgYG93bmVyYCBmb3IgdHJhbnNmZXIgYnk0YSBgZGVsZWdhdGVgLkRBcHByb3ZhbENhbmNlbGxlZBABKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAEUb3duZXIEATBUOjpBY2NvdW50SWQAASBkZWxlZ2F0ZQQBMFQ6OkFjY291bnRJZAANCBkBQW4gYXBwcm92YWwgZm9yIGEgYGRlbGVnYXRlYCBhY2NvdW50IHRvIHRyYW5zZmVyIHRoZSBgaXRlbWAgb2YgYW4gaXRlbahgY29sbGVjdGlvbmAgd2FzIGNhbmNlbGxlZCBieSBpdHMgYG93bmVyYC5UQWxsQXBwcm92YWxzQ2FuY2VsbGVkDAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAAOBJxBbGwgYXBwcm92YWxzIG9mIGFuIGl0ZW0gZ290IGNhbmNlbGxlZC5cQ29sbGVjdGlvbkNvbmZpZ0NoYW5nZWQEAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAA8EAQFBIGBjb2xsZWN0aW9uYCBoYXMgaGFkIGl0cyBjb25maWcgY2hhbmdlZCBieSB0aGUgYEZvcmNlYCBvcmlnaW4uVENvbGxlY3Rpb25NZXRhZGF0YVNldAgBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBkYXRhRQEBeEJvdW5kZWRWZWM8dTgsIFQ6OlN0cmluZ0xpbWl0PgAQBLROZXcgbWV0YWRhdGEgaGFzIGJlZW4gc2V0IGZvciBhIGBjb2xsZWN0aW9uYC5kQ29sbGVjdGlvbk1ldGFkYXRhQ2xlYXJlZAQBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAEQS0TWV0YWRhdGEgaGFzIGJlZW4gY2xlYXJlZCBmb3IgYSBgY29sbGVjdGlvbmAuPEl0ZW1NZXRhZGF0YVNldAwBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAEQZGF0YUUBAXhCb3VuZGVkVmVjPHU4LCBUOjpTdHJpbmdMaW1pdD4AEgSYTmV3IG1ldGFkYXRhIGhhcyBiZWVuIHNldCBmb3IgYW4gaXRlbS5MSXRlbU1ldGFkYXRhQ2xlYXJlZAgBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkABMEmE1ldGFkYXRhIGhhcyBiZWVuIGNsZWFyZWQgZm9yIGFuIGl0ZW0uLFJlZGVwb3NpdGVkCAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABQHN1Y2Nlc3NmdWxfaXRlbXNdBAE4VmVjPFQ6Okl0ZW1JZD4AFAQhAVRoZSBkZXBvc2l0IGZvciBhIHNldCBvZiBgaXRlbWBzIHdpdGhpbiBhIGBjb2xsZWN0aW9uYCBoYXMgYmVlbiB1cGRhdGVkLjBBdHRyaWJ1dGVTZXQUAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEobWF5YmVfaXRlbeQBRE9wdGlvbjxUOjpJdGVtSWQ+AAEMa2V5fAFsQm91bmRlZFZlYzx1OCwgVDo6S2V5TGltaXQ+AAEUdmFsdWVFAQF0Qm91bmRlZFZlYzx1OCwgVDo6VmFsdWVMaW1pdD4AASRuYW1lc3BhY2WZBAGAQXR0cmlidXRlTmFtZXNwYWNlPFQ6OkFjY291bnRJZD4AFQQFAU5ldyBhdHRyaWJ1dGUgbWV0YWRhdGEgaGFzIGJlZW4gc2V0IGZvciBhIGBjb2xsZWN0aW9uYCBvciBgaXRlbWAuQEF0dHJpYnV0ZUNsZWFyZWQQAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEobWF5YmVfaXRlbeQBRE9wdGlvbjxUOjpJdGVtSWQ+AAEMa2V5fAFsQm91bmRlZFZlYzx1OCwgVDo6S2V5TGltaXQ+AAEkbmFtZXNwYWNlmQQBgEF0dHJpYnV0ZU5hbWVzcGFjZTxUOjpBY2NvdW50SWQ+ABYEBQFBdHRyaWJ1dGUgbWV0YWRhdGEgaGFzIGJlZW4gY2xlYXJlZCBmb3IgYSBgY29sbGVjdGlvbmAgb3IgYGl0ZW1gLmxJdGVtQXR0cmlidXRlc0FwcHJvdmFsQWRkZWQMAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAABIGRlbGVnYXRlBAEwVDo6QWNjb3VudElkABcEzEEgbmV3IGFwcHJvdmFsIHRvIG1vZGlmeSBpdGVtIGF0dHJpYnV0ZXMgd2FzIGFkZGVkLnRJdGVtQXR0cmlidXRlc0FwcHJvdmFsUmVtb3ZlZAwBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAEgZGVsZWdhdGUEATBUOjpBY2NvdW50SWQAGATUQSBuZXcgYXBwcm92YWwgdG8gbW9kaWZ5IGl0ZW0gYXR0cmlidXRlcyB3YXMgcmVtb3ZlZC5oT3duZXJzaGlwQWNjZXB0YW5jZUNoYW5nZWQIAQx3aG8EATBUOjpBY2NvdW50SWQAAUBtYXliZV9jb2xsZWN0aW9u5AFcT3B0aW9uPFQ6OkNvbGxlY3Rpb25JZD4AGQTAT3duZXJzaGlwIGFjY2VwdGFuY2UgaGFzIGNoYW5nZWQgZm9yIGFuIGFjY291bnQuWENvbGxlY3Rpb25NYXhTdXBwbHlTZXQIAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEobWF4X3N1cHBseTgBDHUzMgAaBKRNYXggc3VwcGx5IGhhcyBiZWVuIHNldCBmb3IgYSBjb2xsZWN0aW9uLnRDb2xsZWN0aW9uTWludFNldHRpbmdzVXBkYXRlZAQBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAGwSsTWludCBzZXR0aW5ncyBmb3IgYSBjb2xsZWN0aW9uIGhhZCBjaGFuZ2VkLmxOZXh0Q29sbGVjdGlvbklkSW5jcmVtZW50ZWQEARxuZXh0X2lk5AFcT3B0aW9uPFQ6OkNvbGxlY3Rpb25JZD4AHAQBAUV2ZW50IGdldHMgZW1pdHRlZCB3aGVuIHRoZSBgTmV4dENvbGxlY3Rpb25JZGAgZ2V0cyBpbmNyZW1lbnRlZC4wSXRlbVByaWNlU2V0EAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAARRwcmljZVkBATxJdGVtUHJpY2U8VCwgST4AAUR3aGl0ZWxpc3RlZF9idXllcpEBAVBPcHRpb248VDo6QWNjb3VudElkPgAdBHxUaGUgcHJpY2Ugd2FzIHNldCBmb3IgdGhlIGl0ZW0uQEl0ZW1QcmljZVJlbW92ZWQIAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAAeBIxUaGUgcHJpY2UgZm9yIHRoZSBpdGVtIHdhcyByZW1vdmVkLihJdGVtQm91Z2h0FAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAARRwcmljZVkBATxJdGVtUHJpY2U8VCwgST4AARhzZWxsZXIEATBUOjpBY2NvdW50SWQAARRidXllcgQBMFQ6OkFjY291bnRJZAAfBExBbiBpdGVtIHdhcyBib3VnaHQuHFRpcFNlbnQUAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAABGHNlbmRlcgQBMFQ6OkFjY291bnRJZAABIHJlY2VpdmVyBAEwVDo6QWNjb3VudElkAAEYYW1vdW50WQEBWERlcG9zaXRCYWxhbmNlT2Y8VCwgST4AIAQ8QSB0aXAgd2FzIHNlbnQuLFN3YXBDcmVhdGVkGAFIb2ZmZXJlZF9jb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEwb2ZmZXJlZF9pdGVtOAEkVDo6SXRlbUlkAAFIZGVzaXJlZF9jb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEwZGVzaXJlZF9pdGVt5AFET3B0aW9uPFQ6Okl0ZW1JZD4AARRwcmljZa0EAaxPcHRpb248UHJpY2VXaXRoRGlyZWN0aW9uPEl0ZW1QcmljZTxULCBJPj4+AAEgZGVhZGxpbmU4AVBCbG9ja051bWJlckZvcjxULCBJPgAhBIhBbiBgaXRlbWAgc3dhcCBpbnRlbnQgd2FzIGNyZWF0ZWQuNFN3YXBDYW5jZWxsZWQYAUhvZmZlcmVkX2NvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAATBvZmZlcmVkX2l0ZW04ASRUOjpJdGVtSWQAAUhkZXNpcmVkX2NvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAATBkZXNpcmVkX2l0ZW3kAURPcHRpb248VDo6SXRlbUlkPgABFHByaWNlrQQBrE9wdGlvbjxQcmljZVdpdGhEaXJlY3Rpb248SXRlbVByaWNlPFQsIEk+Pj4AASBkZWFkbGluZTgBUEJsb2NrTnVtYmVyRm9yPFQsIEk+ACIEXFRoZSBzd2FwIHdhcyBjYW5jZWxsZWQuLFN3YXBDbGFpbWVkIAE8c2VudF9jb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEkc2VudF9pdGVtOAEkVDo6SXRlbUlkAAE8c2VudF9pdGVtX293bmVyBAEwVDo6QWNjb3VudElkAAFMcmVjZWl2ZWRfY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABNHJlY2VpdmVkX2l0ZW04ASRUOjpJdGVtSWQAAUxyZWNlaXZlZF9pdGVtX293bmVyBAEwVDo6QWNjb3VudElkAAEUcHJpY2WtBAGsT3B0aW9uPFByaWNlV2l0aERpcmVjdGlvbjxJdGVtUHJpY2U8VCwgST4+PgABIGRlYWRsaW5lOAFQQmxvY2tOdW1iZXJGb3I8VCwgST4AIwRoVGhlIHN3YXAgaGFzIGJlZW4gY2xhaW1lZC5YUHJlU2lnbmVkQXR0cmlidXRlc1NldAwBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAEkbmFtZXNwYWNlmQQBgEF0dHJpYnV0ZU5hbWVzcGFjZTxUOjpBY2NvdW50SWQ+ACQE/E5ldyBhdHRyaWJ1dGVzIGhhdmUgYmVlbiBzZXQgZm9yIGFuIGBpdGVtYCBvZiB0aGUgYGNvbGxlY3Rpb25gLkhQYWxsZXRBdHRyaWJ1dGVTZXQQAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbeQBRE9wdGlvbjxUOjpJdGVtSWQ+AAEkYXR0cmlidXRl/QgBhFBhbGxldEF0dHJpYnV0ZXM8VDo6Q29sbGVjdGlvbklkPgABFHZhbHVlRQEBdEJvdW5kZWRWZWM8dTgsIFQ6OlZhbHVlTGltaXQ+ACUITQFBIG5ldyBhdHRyaWJ1dGUgaW4gdGhlIGBQYWxsZXRgIG5hbWVzcGFjZSB3YXMgc2V0IGZvciB0aGUgYGNvbGxlY3Rpb25gIG9yIGFuIGBpdGVtYGR3aXRoaW4gdGhhdCBgY29sbGVjdGlvbmAuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0/QgMLHBhbGxldF9uZnRzFHR5cGVzQFBhbGxldEF0dHJpYnV0ZXMEMENvbGxlY3Rpb25JZAE4AQgsVXNlZFRvQ2xhaW0EADgBMENvbGxlY3Rpb25JZAAAAEBUcmFuc2ZlckRpc2FibGVkAAEAAAEJDDRwYWxsZXRfYXNzZXRzGHBhbGxldBRFdmVudAgEVAAESQABgBxDcmVhdGVkDAEgYXNzZXRfaWQdAgEoVDo6QXNzZXRJZAABHGNyZWF0b3IEATBUOjpBY2NvdW50SWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAAABHRTb21lIGFzc2V0IGNsYXNzIHdhcyBjcmVhdGVkLhhJc3N1ZWQMASBhc3NldF9pZB0CAShUOjpBc3NldElkAAEUb3duZXIEATBUOjpBY2NvdW50SWQAARhhbW91bnRZAQEoVDo6QmFsYW5jZQABBGBTb21lIGFzc2V0cyB3ZXJlIGlzc3VlZC4sVHJhbnNmZXJyZWQQASBhc3NldF9pZB0CAShUOjpBc3NldElkAAEQZnJvbQQBMFQ6OkFjY291bnRJZAABCHRvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50WQEBKFQ6OkJhbGFuY2UAAgR0U29tZSBhc3NldHMgd2VyZSB0cmFuc2ZlcnJlZC4YQnVybmVkDAEgYXNzZXRfaWQdAgEoVDo6QXNzZXRJZAABFG93bmVyBAEwVDo6QWNjb3VudElkAAEcYmFsYW5jZVkBAShUOjpCYWxhbmNlAAMEbFNvbWUgYXNzZXRzIHdlcmUgZGVzdHJveWVkLixUZWFtQ2hhbmdlZBABIGFzc2V0X2lkHQIBKFQ6OkFzc2V0SWQAARhpc3N1ZXIEATBUOjpBY2NvdW50SWQAARRhZG1pbgQBMFQ6OkFjY291bnRJZAABHGZyZWV6ZXIEATBUOjpBY2NvdW50SWQABARwVGhlIG1hbmFnZW1lbnQgdGVhbSBjaGFuZ2VkLjBPd25lckNoYW5nZWQIASBhc3NldF9pZB0CAShUOjpBc3NldElkAAEUb3duZXIEATBUOjpBY2NvdW50SWQABQRIVGhlIG93bmVyIGNoYW5nZWQuGEZyb3plbggBIGFzc2V0X2lkHQIBKFQ6OkFzc2V0SWQAAQx3aG8EATBUOjpBY2NvdW50SWQABgR4U29tZSBhY2NvdW50IGB3aG9gIHdhcyBmcm96ZW4uGFRoYXdlZAgBIGFzc2V0X2lkHQIBKFQ6OkFzc2V0SWQAAQx3aG8EATBUOjpBY2NvdW50SWQABwR4U29tZSBhY2NvdW50IGB3aG9gIHdhcyB0aGF3ZWQuLEFzc2V0RnJvemVuBAEgYXNzZXRfaWQdAgEoVDo6QXNzZXRJZAAIBIRTb21lIGFzc2V0IGBhc3NldF9pZGAgd2FzIGZyb3plbi4sQXNzZXRUaGF3ZWQEASBhc3NldF9pZB0CAShUOjpBc3NldElkAAkEhFNvbWUgYXNzZXQgYGFzc2V0X2lkYCB3YXMgdGhhd2VkLkRBY2NvdW50c0Rlc3Ryb3llZAwBIGFzc2V0X2lkHQIBKFQ6OkFzc2V0SWQAAUhhY2NvdW50c19kZXN0cm95ZWQ4AQx1MzIAAUhhY2NvdW50c19yZW1haW5pbmc4AQx1MzIACgSgQWNjb3VudHMgd2VyZSBkZXN0cm95ZWQgZm9yIGdpdmVuIGFzc2V0LkhBcHByb3ZhbHNEZXN0cm95ZWQMASBhc3NldF9pZB0CAShUOjpBc3NldElkAAFMYXBwcm92YWxzX2Rlc3Ryb3llZDgBDHUzMgABTGFwcHJvdmFsc19yZW1haW5pbmc4AQx1MzIACwSkQXBwcm92YWxzIHdlcmUgZGVzdHJveWVkIGZvciBnaXZlbiBhc3NldC5IRGVzdHJ1Y3Rpb25TdGFydGVkBAEgYXNzZXRfaWQdAgEoVDo6QXNzZXRJZAAMBNBBbiBhc3NldCBjbGFzcyBpcyBpbiB0aGUgcHJvY2VzcyBvZiBiZWluZyBkZXN0cm95ZWQuJERlc3Ryb3llZAQBIGFzc2V0X2lkHQIBKFQ6OkFzc2V0SWQADQR0QW4gYXNzZXQgY2xhc3Mgd2FzIGRlc3Ryb3llZC4wRm9yY2VDcmVhdGVkCAEgYXNzZXRfaWQdAgEoVDo6QXNzZXRJZAABFG93bmVyBAEwVDo6QWNjb3VudElkAA4EjFNvbWUgYXNzZXQgY2xhc3Mgd2FzIGZvcmNlLWNyZWF0ZWQuLE1ldGFkYXRhU2V0FAEgYXNzZXRfaWQdAgEoVDo6QXNzZXRJZAABEG5hbWUYARxWZWM8dTg+AAEYc3ltYm9sGAEcVmVjPHU4PgABIGRlY2ltYWxzDAEIdTgAASRpc19mcm96ZW5dAQEQYm9vbAAPBJxOZXcgbWV0YWRhdGEgaGFzIGJlZW4gc2V0IGZvciBhbiBhc3NldC48TWV0YWRhdGFDbGVhcmVkBAEgYXNzZXRfaWQdAgEoVDo6QXNzZXRJZAAQBJxNZXRhZGF0YSBoYXMgYmVlbiBjbGVhcmVkIGZvciBhbiBhc3NldC5AQXBwcm92ZWRUcmFuc2ZlchABIGFzc2V0X2lkHQIBKFQ6OkFzc2V0SWQAARhzb3VyY2UEATBUOjpBY2NvdW50SWQAASBkZWxlZ2F0ZQQBMFQ6OkFjY291bnRJZAABGGFtb3VudFkBAShUOjpCYWxhbmNlABEEMQEoQWRkaXRpb25hbCkgZnVuZHMgaGF2ZSBiZWVuIGFwcHJvdmVkIGZvciB0cmFuc2ZlciB0byBhIGRlc3RpbmF0aW9uIGFjY291bnQuREFwcHJvdmFsQ2FuY2VsbGVkDAEgYXNzZXRfaWQdAgEoVDo6QXNzZXRJZAABFG93bmVyBAEwVDo6QWNjb3VudElkAAEgZGVsZWdhdGUEATBUOjpBY2NvdW50SWQAEgTwQW4gYXBwcm92YWwgZm9yIGFjY291bnQgYGRlbGVnYXRlYCB3YXMgY2FuY2VsbGVkIGJ5IGBvd25lcmAuTFRyYW5zZmVycmVkQXBwcm92ZWQUASBhc3NldF9pZB0CAShUOjpBc3NldElkAAEUb3duZXIEATBUOjpBY2NvdW50SWQAASBkZWxlZ2F0ZQQBMFQ6OkFjY291bnRJZAABLGRlc3RpbmF0aW9uBAEwVDo6QWNjb3VudElkAAEYYW1vdW50WQEBKFQ6OkJhbGFuY2UAEwgxAUFuIGBhbW91bnRgIHdhcyB0cmFuc2ZlcnJlZCBpbiBpdHMgZW50aXJldHkgZnJvbSBgb3duZXJgIHRvIGBkZXN0aW5hdGlvbmAgYnlgdGhlIGFwcHJvdmVkIGBkZWxlZ2F0ZWAuSEFzc2V0U3RhdHVzQ2hhbmdlZAQBIGFzc2V0X2lkHQIBKFQ6OkFzc2V0SWQAFAT4QW4gYXNzZXQgaGFzIGhhZCBpdHMgYXR0cmlidXRlcyBjaGFuZ2VkIGJ5IHRoZSBgRm9yY2VgIG9yaWdpbi5YQXNzZXRNaW5CYWxhbmNlQ2hhbmdlZAgBIGFzc2V0X2lkHQIBKFQ6OkFzc2V0SWQAATxuZXdfbWluX2JhbGFuY2VZAQEoVDo6QmFsYW5jZQAVBAEBVGhlIG1pbl9iYWxhbmNlIG9mIGFuIGFzc2V0IGhhcyBiZWVuIHVwZGF0ZWQgYnkgdGhlIGFzc2V0IG93bmVyLhxUb3VjaGVkDAEgYXNzZXRfaWQdAgEoVDo6QXNzZXRJZAABDHdobwQBMFQ6OkFjY291bnRJZAABJGRlcG9zaXRvcgQBMFQ6OkFjY291bnRJZAAWBPxTb21lIGFjY291bnQgYHdob2Agd2FzIGNyZWF0ZWQgd2l0aCBhIGRlcG9zaXQgZnJvbSBgZGVwb3NpdG9yYC4cQmxvY2tlZAgBIGFzc2V0X2lkHQIBKFQ6OkFzc2V0SWQAAQx3aG8EATBUOjpBY2NvdW50SWQAFwR8U29tZSBhY2NvdW50IGB3aG9gIHdhcyBibG9ja2VkLiREZXBvc2l0ZWQMASBhc3NldF9pZB0CAShUOjpBc3NldElkAAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50WQEBKFQ6OkJhbGFuY2UAGATcU29tZSBhc3NldHMgd2VyZSBkZXBvc2l0ZWQgKGUuZy4gZm9yIHRyYW5zYWN0aW9uIGZlZXMpLiRXaXRoZHJhd24MASBhc3NldF9pZB0CAShUOjpBc3NldElkAAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50WQEBKFQ6OkJhbGFuY2UAGQQhAVNvbWUgYXNzZXRzIHdlcmUgd2l0aGRyYXduIGZyb20gdGhlIGFjY291bnQgKGUuZy4gZm9yIHRyYW5zYWN0aW9uIGZlZXMpLjxSZXNlcnZlc1VwZGF0ZWQIASBhc3NldF9pZB0CAShUOjpBc3NldElkAAEgcmVzZXJ2ZXPVBAFMVmVjPFQ6OlJlc2VydmVEYXRhPgAaBNhSZXNlcnZlIGluZm9ybWF0aW9uIHdhcyBzZXQgb3IgdXBkYXRlZCBmb3IgYGFzc2V0X2lkYC48UmVzZXJ2ZXNSZW1vdmVkBAEgYXNzZXRfaWQdAgEoVDo6QXNzZXRJZAAbBLxSZXNlcnZlIGluZm9ybWF0aW9uIHdhcyByZW1vdmVkIGZvciBgYXNzZXRfaWRgLjBJc3N1ZWRDcmVkaXQIASBhc3NldF9pZB0CAShUOjpBc3NldElkAAEYYW1vdW50WQEBKFQ6OkJhbGFuY2UAHATEU29tZSBhc3NldHMgd2VyZSBpc3N1ZWQgYXMgQ3JlZGl0IChubyBvd25lciB5ZXQpLjBCdXJuZWRDcmVkaXQIASBhc3NldF9pZB0CAShUOjpBc3NldElkAAEYYW1vdW50WQEBKFQ6OkJhbGFuY2UAHQSEU29tZSBhc3NldHMgQ3JlZGl0IHdhcyBkZXN0cm95ZWQuKElzc3VlZERlYnQIASBhc3NldF9pZB0CAShUOjpBc3NldElkAAEYYW1vdW50WQEBKFQ6OkJhbGFuY2UAHgS8U29tZSBhc3NldHMgd2VyZSBidXJuZWQgYW5kIGEgRGVidCB3YXMgY3JlYXRlZC4oQnVybmVkRGVidAgBIGFzc2V0X2lkHQIBKFQ6OkFzc2V0SWQAARhhbW91bnRZAQEoVDo6QmFsYW5jZQAfBMxTb21lIGFzc2V0cyBEZWJ0IHdhcyBkZXN0cm95ZWQgKGFuZCBhc3NldHMgaXNzdWVkKS4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXQFCQw0cGFsbGV0X2Fzc2V0cxhwYWxsZXQURXZlbnQIBFQABEkAAYAcQ3JlYXRlZAwBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABHGNyZWF0b3IEATBUOjpBY2NvdW50SWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAAABHRTb21lIGFzc2V0IGNsYXNzIHdhcyBjcmVhdGVkLhhJc3N1ZWQMASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAABGGFtb3VudFkBAShUOjpCYWxhbmNlAAEEYFNvbWUgYXNzZXRzIHdlcmUgaXNzdWVkLixUcmFuc2ZlcnJlZBABIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABEGZyb20EATBUOjpBY2NvdW50SWQAAQh0bwQBMFQ6OkFjY291bnRJZAABGGFtb3VudFkBAShUOjpCYWxhbmNlAAIEdFNvbWUgYXNzZXRzIHdlcmUgdHJhbnNmZXJyZWQuGEJ1cm5lZAwBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABFG93bmVyBAEwVDo6QWNjb3VudElkAAEcYmFsYW5jZVkBAShUOjpCYWxhbmNlAAMEbFNvbWUgYXNzZXRzIHdlcmUgZGVzdHJveWVkLixUZWFtQ2hhbmdlZBABIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABGGlzc3VlcgQBMFQ6OkFjY291bnRJZAABFGFkbWluBAEwVDo6QWNjb3VudElkAAEcZnJlZXplcgQBMFQ6OkFjY291bnRJZAAEBHBUaGUgbWFuYWdlbWVudCB0ZWFtIGNoYW5nZWQuME93bmVyQ2hhbmdlZAgBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABFG93bmVyBAEwVDo6QWNjb3VudElkAAUESFRoZSBvd25lciBjaGFuZ2VkLhhGcm96ZW4IASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAAQx3aG8EATBUOjpBY2NvdW50SWQABgR4U29tZSBhY2NvdW50IGB3aG9gIHdhcyBmcm96ZW4uGFRoYXdlZAgBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABDHdobwQBMFQ6OkFjY291bnRJZAAHBHhTb21lIGFjY291bnQgYHdob2Agd2FzIHRoYXdlZC4sQXNzZXRGcm96ZW4EASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQACASEU29tZSBhc3NldCBgYXNzZXRfaWRgIHdhcyBmcm96ZW4uLEFzc2V0VGhhd2VkBAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAkEhFNvbWUgYXNzZXQgYGFzc2V0X2lkYCB3YXMgdGhhd2VkLkRBY2NvdW50c0Rlc3Ryb3llZAwBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABSGFjY291bnRzX2Rlc3Ryb3llZDgBDHUzMgABSGFjY291bnRzX3JlbWFpbmluZzgBDHUzMgAKBKBBY2NvdW50cyB3ZXJlIGRlc3Ryb3llZCBmb3IgZ2l2ZW4gYXNzZXQuSEFwcHJvdmFsc0Rlc3Ryb3llZAwBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABTGFwcHJvdmFsc19kZXN0cm95ZWQ4AQx1MzIAAUxhcHByb3ZhbHNfcmVtYWluaW5nOAEMdTMyAAsEpEFwcHJvdmFscyB3ZXJlIGRlc3Ryb3llZCBmb3IgZ2l2ZW4gYXNzZXQuSERlc3RydWN0aW9uU3RhcnRlZAQBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAAMBNBBbiBhc3NldCBjbGFzcyBpcyBpbiB0aGUgcHJvY2VzcyBvZiBiZWluZyBkZXN0cm95ZWQuJERlc3Ryb3llZAQBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAANBHRBbiBhc3NldCBjbGFzcyB3YXMgZGVzdHJveWVkLjBGb3JjZUNyZWF0ZWQIASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAAOBIxTb21lIGFzc2V0IGNsYXNzIHdhcyBmb3JjZS1jcmVhdGVkLixNZXRhZGF0YVNldBQBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABEG5hbWUYARxWZWM8dTg+AAEYc3ltYm9sGAEcVmVjPHU4PgABIGRlY2ltYWxzDAEIdTgAASRpc19mcm96ZW5dAQEQYm9vbAAPBJxOZXcgbWV0YWRhdGEgaGFzIGJlZW4gc2V0IGZvciBhbiBhc3NldC48TWV0YWRhdGFDbGVhcmVkBAEgYXNzZXRfaWQ4AShUOjpBc3NldElkABAEnE1ldGFkYXRhIGhhcyBiZWVuIGNsZWFyZWQgZm9yIGFuIGFzc2V0LkBBcHByb3ZlZFRyYW5zZmVyEAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEYc291cmNlBAEwVDo6QWNjb3VudElkAAEgZGVsZWdhdGUEATBUOjpBY2NvdW50SWQAARhhbW91bnRZAQEoVDo6QmFsYW5jZQARBDEBKEFkZGl0aW9uYWwpIGZ1bmRzIGhhdmUgYmVlbiBhcHByb3ZlZCBmb3IgdHJhbnNmZXIgdG8gYSBkZXN0aW5hdGlvbiBhY2NvdW50LkRBcHByb3ZhbENhbmNlbGxlZAwBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABFG93bmVyBAEwVDo6QWNjb3VudElkAAEgZGVsZWdhdGUEATBUOjpBY2NvdW50SWQAEgTwQW4gYXBwcm92YWwgZm9yIGFjY291bnQgYGRlbGVnYXRlYCB3YXMgY2FuY2VsbGVkIGJ5IGBvd25lcmAuTFRyYW5zZmVycmVkQXBwcm92ZWQUASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAABIGRlbGVnYXRlBAEwVDo6QWNjb3VudElkAAEsZGVzdGluYXRpb24EATBUOjpBY2NvdW50SWQAARhhbW91bnRZAQEoVDo6QmFsYW5jZQATCDEBQW4gYGFtb3VudGAgd2FzIHRyYW5zZmVycmVkIGluIGl0cyBlbnRpcmV0eSBmcm9tIGBvd25lcmAgdG8gYGRlc3RpbmF0aW9uYCBieWB0aGUgYXBwcm92ZWQgYGRlbGVnYXRlYC5IQXNzZXRTdGF0dXNDaGFuZ2VkBAEgYXNzZXRfaWQ4AShUOjpBc3NldElkABQE+EFuIGFzc2V0IGhhcyBoYWQgaXRzIGF0dHJpYnV0ZXMgY2hhbmdlZCBieSB0aGUgYEZvcmNlYCBvcmlnaW4uWEFzc2V0TWluQmFsYW5jZUNoYW5nZWQIASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAATxuZXdfbWluX2JhbGFuY2VZAQEoVDo6QmFsYW5jZQAVBAEBVGhlIG1pbl9iYWxhbmNlIG9mIGFuIGFzc2V0IGhhcyBiZWVuIHVwZGF0ZWQgYnkgdGhlIGFzc2V0IG93bmVyLhxUb3VjaGVkDAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEMd2hvBAEwVDo6QWNjb3VudElkAAEkZGVwb3NpdG9yBAEwVDo6QWNjb3VudElkABYE/FNvbWUgYWNjb3VudCBgd2hvYCB3YXMgY3JlYXRlZCB3aXRoIGEgZGVwb3NpdCBmcm9tIGBkZXBvc2l0b3JgLhxCbG9ja2VkCAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEMd2hvBAEwVDo6QWNjb3VudElkABcEfFNvbWUgYWNjb3VudCBgd2hvYCB3YXMgYmxvY2tlZC4kRGVwb3NpdGVkDAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50WQEBKFQ6OkJhbGFuY2UAGATcU29tZSBhc3NldHMgd2VyZSBkZXBvc2l0ZWQgKGUuZy4gZm9yIHRyYW5zYWN0aW9uIGZlZXMpLiRXaXRoZHJhd24MASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnRZAQEoVDo6QmFsYW5jZQAZBCEBU29tZSBhc3NldHMgd2VyZSB3aXRoZHJhd24gZnJvbSB0aGUgYWNjb3VudCAoZS5nLiBmb3IgdHJhbnNhY3Rpb24gZmVlcykuPFJlc2VydmVzVXBkYXRlZAgBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABIHJlc2VydmVzTQQBTFZlYzxUOjpSZXNlcnZlRGF0YT4AGgTYUmVzZXJ2ZSBpbmZvcm1hdGlvbiB3YXMgc2V0IG9yIHVwZGF0ZWQgZm9yIGBhc3NldF9pZGAuPFJlc2VydmVzUmVtb3ZlZAQBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAAbBLxSZXNlcnZlIGluZm9ybWF0aW9uIHdhcyByZW1vdmVkIGZvciBgYXNzZXRfaWRgLjBJc3N1ZWRDcmVkaXQIASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAARhhbW91bnRZAQEoVDo6QmFsYW5jZQAcBMRTb21lIGFzc2V0cyB3ZXJlIGlzc3VlZCBhcyBDcmVkaXQgKG5vIG93bmVyIHlldCkuMEJ1cm5lZENyZWRpdAgBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABGGFtb3VudFkBAShUOjpCYWxhbmNlAB0EhFNvbWUgYXNzZXRzIENyZWRpdCB3YXMgZGVzdHJveWVkLihJc3N1ZWREZWJ0CAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEYYW1vdW50WQEBKFQ6OkJhbGFuY2UAHgS8U29tZSBhc3NldHMgd2VyZSBidXJuZWQgYW5kIGEgRGVidCB3YXMgY3JlYXRlZC4oQnVybmVkRGVidAgBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABGGFtb3VudFkBAShUOjpCYWxhbmNlAB8EzFNvbWUgYXNzZXRzIERlYnQgd2FzIGRlc3Ryb3llZCAoYW5kIGFzc2V0cyBpc3N1ZWQpLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldAkJDFxwYWxsZXRfYXNzZXRfY29udmVyc2lvbhhwYWxsZXQURXZlbnQEBFQAARgsUG9vbENyZWF0ZWQQARxjcmVhdG9yBAEwVDo6QWNjb3VudElkBIhUaGUgYWNjb3VudCB0aGF0IGNyZWF0ZWQgdGhlIHBvb2wuARxwb29sX2lkDQkBJFQ6OlBvb2xJZAhJAVRoZSBwb29sIGlkIGFzc29jaWF0ZWQgd2l0aCB0aGUgcG9vbC4gTm90ZSB0aGF0IHRoZSBvcmRlciBvZiB0aGUgYXNzZXRzIG1heSBub3QgYmX0dGhlIHNhbWUgYXMgdGhlIG9yZGVyIHNwZWNpZmllZCBpbiB0aGUgY3JlYXRlIHBvb2wgZXh0cmluc2ljLgEwcG9vbF9hY2NvdW50BAEwVDo6QWNjb3VudElkBGxUaGUgYWNjb3VudCBJRCBvZiB0aGUgcG9vbC4BIGxwX3Rva2VuOAE4VDo6UG9vbEFzc2V0SWQIQQFUaGUgaWQgb2YgdGhlIGxpcXVpZGl0eSB0b2tlbnMgdGhhdCB3aWxsIGJlIG1pbnRlZCB3aGVuIGFzc2V0cyBhcmUgYWRkZWQgdG8gdGhpcxRwb29sLgAEHQFBIHN1Y2Nlc3NmdWwgY2FsbCBvZiB0aGUgYENyZWF0ZVBvb2xgIGV4dHJpbnNpYyB3aWxsIGNyZWF0ZSB0aGlzIGV2ZW50LjhMaXF1aWRpdHlBZGRlZBwBDHdobwQBMFQ6OkFjY291bnRJZAS4VGhlIGFjY291bnQgdGhhdCB0aGUgbGlxdWlkaXR5IHdhcyB0YWtlbiBmcm9tLgEcbWludF90bwQBMFQ6OkFjY291bnRJZATUVGhlIGFjY291bnQgdGhhdCB0aGUgbGlxdWlkaXR5IHRva2VucyB3ZXJlIG1pbnRlZCB0by4BHHBvb2xfaWQNCQEkVDo6UG9vbElkBOBUaGUgcG9vbCBpZCBvZiB0aGUgcG9vbCB0aGF0IHRoZSBsaXF1aWRpdHkgd2FzIGFkZGVkIHRvLgFAYW1vdW50MV9wcm92aWRlZFkBAShUOjpCYWxhbmNlBORUaGUgYW1vdW50IG9mIHRoZSBmaXJzdCBhc3NldCB0aGF0IHdhcyBhZGRlZCB0byB0aGUgcG9vbC4BQGFtb3VudDJfcHJvdmlkZWRZAQEoVDo6QmFsYW5jZQToVGhlIGFtb3VudCBvZiB0aGUgc2Vjb25kIGFzc2V0IHRoYXQgd2FzIGFkZGVkIHRvIHRoZSBwb29sLgEgbHBfdG9rZW44AThUOjpQb29sQXNzZXRJZAScVGhlIGlkIG9mIHRoZSBscCB0b2tlbiB0aGF0IHdhcyBtaW50ZWQuATxscF90b2tlbl9taW50ZWRZAQEoVDo6QmFsYW5jZQTQVGhlIGFtb3VudCBvZiBscCB0b2tlbnMgdGhhdCB3ZXJlIG1pbnRlZCBvZiB0aGF0IGlkLgEEJQFBIHN1Y2Nlc3NmdWwgY2FsbCBvZiB0aGUgYEFkZExpcXVpZGl0eWAgZXh0cmluc2ljIHdpbGwgY3JlYXRlIHRoaXMgZXZlbnQuQExpcXVpZGl0eVJlbW92ZWQgAQx3aG8EATBUOjpBY2NvdW50SWQE3FRoZSBhY2NvdW50IHRoYXQgdGhlIGxpcXVpZGl0eSB0b2tlbnMgd2VyZSBidXJuZWQgZnJvbS4BLHdpdGhkcmF3X3RvBAEwVDo6QWNjb3VudElkBMBUaGUgYWNjb3VudCB0aGF0IHRoZSBhc3NldHMgd2VyZSB0cmFuc2ZlcnJlZCB0by4BHHBvb2xfaWQNCQEkVDo6UG9vbElkBMBUaGUgcG9vbCBpZCB0aGF0IHRoZSBsaXF1aWRpdHkgd2FzIHJlbW92ZWQgZnJvbS4BHGFtb3VudDFZAQEoVDo6QmFsYW5jZQT0VGhlIGFtb3VudCBvZiB0aGUgZmlyc3QgYXNzZXQgdGhhdCB3YXMgcmVtb3ZlZCBmcm9tIHRoZSBwb29sLgEcYW1vdW50MlkBAShUOjpCYWxhbmNlBPhUaGUgYW1vdW50IG9mIHRoZSBzZWNvbmQgYXNzZXQgdGhhdCB3YXMgcmVtb3ZlZCBmcm9tIHRoZSBwb29sLgEgbHBfdG9rZW44AThUOjpQb29sQXNzZXRJZAScVGhlIGlkIG9mIHRoZSBscCB0b2tlbiB0aGF0IHdhcyBidXJuZWQuATxscF90b2tlbl9idXJuZWRZAQEoVDo6QmFsYW5jZQTQVGhlIGFtb3VudCBvZiBscCB0b2tlbnMgdGhhdCB3ZXJlIGJ1cm5lZCBvZiB0aGF0IGlkLgE4d2l0aGRyYXdhbF9mZWURCQEcUGVybWlsbAR0TGlxdWlkaXR5IHdpdGhkcmF3YWwgZmVlICglKS4CBDEBQSBzdWNjZXNzZnVsIGNhbGwgb2YgdGhlIGBSZW1vdmVMaXF1aWRpdHlgIGV4dHJpbnNpYyB3aWxsIGNyZWF0ZSB0aGlzIGV2ZW50LjBTd2FwRXhlY3V0ZWQUAQx3aG8EATBUOjpBY2NvdW50SWQEtFdoaWNoIGFjY291bnQgd2FzIHRoZSBpbnN0aWdhdG9yIG9mIHRoZSBzd2FwLgEcc2VuZF90bwQBMFQ6OkFjY291bnRJZATAVGhlIGFjY291bnQgdGhhdCB0aGUgYXNzZXRzIHdlcmUgdHJhbnNmZXJyZWQgdG8uASRhbW91bnRfaW5ZAQEoVDo6QmFsYW5jZQS8VGhlIGFtb3VudCBvZiB0aGUgZmlyc3QgYXNzZXQgdGhhdCB3YXMgc3dhcHBlZC4BKGFtb3VudF9vdXRZAQEoVDo6QmFsYW5jZQTEVGhlIGFtb3VudCBvZiB0aGUgc2Vjb25kIGFzc2V0IHRoYXQgd2FzIHJlY2VpdmVkLgEQcGF0aBUJAThCYWxhbmNlUGF0aDxUPgj8VGhlIHJvdXRlIG9mIGFzc2V0IElEcyB3aXRoIGFtb3VudHMgdGhhdCB0aGUgc3dhcCB3ZW50IHRocm91Z2gu7EUuZy4gKEEsIGFtb3VudF9pbikgLT4gKERvdCwgYW1vdW50X291dCkgLT4gKEIsIGFtb3VudF9vdXQpAwg1AUFzc2V0cyBoYXZlIGJlZW4gY29udmVydGVkIGZyb20gb25lIHRvIGFub3RoZXIuIEJvdGggYFN3YXBFeGFjdFRva2VuRm9yVG9rZW5g2GFuZCBgU3dhcFRva2VuRm9yRXhhY3RUb2tlbmAgd2lsbCBnZW5lcmF0ZSB0aGlzIGV2ZW50LkhTd2FwQ3JlZGl0RXhlY3V0ZWQMASRhbW91bnRfaW5ZAQEoVDo6QmFsYW5jZQS8VGhlIGFtb3VudCBvZiB0aGUgZmlyc3QgYXNzZXQgdGhhdCB3YXMgc3dhcHBlZC4BKGFtb3VudF9vdXRZAQEoVDo6QmFsYW5jZQTEVGhlIGFtb3VudCBvZiB0aGUgc2Vjb25kIGFzc2V0IHRoYXQgd2FzIHJlY2VpdmVkLgEQcGF0aBUJAThCYWxhbmNlUGF0aDxUPgj8VGhlIHJvdXRlIG9mIGFzc2V0IElEcyB3aXRoIGFtb3VudHMgdGhhdCB0aGUgc3dhcCB3ZW50IHRocm91Z2gu7EUuZy4gKEEsIGFtb3VudF9pbikgLT4gKERvdCwgYW1vdW50X291dCkgLT4gKEIsIGFtb3VudF9vdXQpBAS8QXNzZXRzIGhhdmUgYmVlbiBjb252ZXJ0ZWQgZnJvbSBvbmUgdG8gYW5vdGhlci4cVG91Y2hlZAgBHHBvb2xfaWQNCQEkVDo6UG9vbElkBExUaGUgSUQgb2YgdGhlIHBvb2wuAQx3aG8EATBUOjpBY2NvdW50SWQEhFRoZSBhY2NvdW50IGluaXRpYXRpbmcgdGhlIHRvdWNoLgUEDQFQb29sIGhhcyBiZWVuIHRvdWNoZWQgaW4gb3JkZXIgdG8gZnVsZmlsbCBvcGVyYXRpb25hbCByZXF1aXJlbWVudHMuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0DQkAAAQIHQIdAgARCQw0c3BfYXJpdGhtZXRpYyhwZXJfdGhpbmdzHFBlcm1pbGwAAAQAOAEMdTMyAAAVCQAAAhkJABkJAAAECB0CWQEAHQkMVHBhbGxldF9hc3NldHNfZnJlZXplchhwYWxsZXQURXZlbnQIBFQABEkAAQgYRnJvemVuDAEMd2hvBAEwVDo6QWNjb3VudElkAAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEYYW1vdW50WQEBKFQ6OkJhbGFuY2UAAAAYVGhhd2VkDAEMd2hvBAEwVDo6QWNjb3VudElkAAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEYYW1vdW50WQEBKFQ6OkJhbGFuY2UAAQAEfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXQhCQxQcGFsbGV0X2Fzc2V0c19ob2xkZXIYcGFsbGV0FEV2ZW50CARUAARJAAEMEEhlbGQQAQx3aG8EATBUOjpBY2NvdW50SWQAASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAARhyZWFzb25lCAFQVDo6UnVudGltZUhvbGRSZWFzb24AARhhbW91bnRZAQEoVDo6QmFsYW5jZQAABMRgd2hvYHMgYmFsYW5jZSBvbiBob2xkIHdhcyBpbmNyZWFzZWQgYnkgYGFtb3VudGAuIFJlbGVhc2VkEAEMd2hvBAEwVDo6QWNjb3VudElkAAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEYcmVhc29uZQgBUFQ6OlJ1bnRpbWVIb2xkUmVhc29uAAEYYW1vdW50WQEBKFQ6OkJhbGFuY2UAAQTEYHdob2BzIGJhbGFuY2Ugb24gaG9sZCB3YXMgZGVjcmVhc2VkIGJ5IGBhbW91bnRgLhhCdXJuZWQQAQx3aG8EATBUOjpBY2NvdW50SWQAASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAARhyZWFzb25lCAFQVDo6UnVudGltZUhvbGRSZWFzb24AARhhbW91bnRZAQEoVDo6QmFsYW5jZQACBLhgd2hvYHMgYmFsYW5jZSBvbiBob2xkIHdhcyBidXJuZWQgYnkgYGFtb3VudGAuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0JQkMPHBhbGxldF90cmVhc3VyeRhwYWxsZXQURXZlbnQIBFQABEkAATAgU3BlbmRpbmcEAUBidWRnZXRfcmVtYWluaW5nWQEBPEJhbGFuY2VPZjxULCBJPgAABORXZSBoYXZlIGVuZGVkIGEgc3BlbmQgcGVyaW9kIGFuZCB3aWxsIG5vdyBhbGxvY2F0ZSBmdW5kcy4cQXdhcmRlZAwBOHByb3Bvc2FsX2luZGV4OAE0UHJvcG9zYWxJbmRleAABFGF3YXJkWQEBPEJhbGFuY2VPZjxULCBJPgABHGFjY291bnQEATBUOjpBY2NvdW50SWQAAQR8U29tZSBmdW5kcyBoYXZlIGJlZW4gYWxsb2NhdGVkLhRCdXJudAQBLGJ1cm50X2Z1bmRzWQEBPEJhbGFuY2VPZjxULCBJPgACBIhTb21lIG9mIG91ciBmdW5kcyBoYXZlIGJlZW4gYnVybnQuIFJvbGxvdmVyBAFAcm9sbG92ZXJfYmFsYW5jZVkBATxCYWxhbmNlT2Y8VCwgST4AAwQtAVNwZW5kaW5nIGhhcyBmaW5pc2hlZDsgdGhpcyBpcyB0aGUgYW1vdW50IHRoYXQgcm9sbHMgb3ZlciB1bnRpbCBuZXh0IHNwZW5kLhxEZXBvc2l0BAEUdmFsdWVZAQE8QmFsYW5jZU9mPFQsIEk+AAQEfFNvbWUgZnVuZHMgaGF2ZSBiZWVuIGRlcG9zaXRlZC40U3BlbmRBcHByb3ZlZAwBOHByb3Bvc2FsX2luZGV4OAE0UHJvcG9zYWxJbmRleAABGGFtb3VudFkBATxCYWxhbmNlT2Y8VCwgST4AASxiZW5lZmljaWFyeQQBMFQ6OkFjY291bnRJZAAFBJxBIG5ldyBzcGVuZCBwcm9wb3NhbCBoYXMgYmVlbiBhcHByb3ZlZC48VXBkYXRlZEluYWN0aXZlCAEscmVhY3RpdmF0ZWRZAQE8QmFsYW5jZU9mPFQsIEk+AAEsZGVhY3RpdmF0ZWRZAQE8QmFsYW5jZU9mPFQsIEk+AAYEzFRoZSBpbmFjdGl2ZSBmdW5kcyBvZiB0aGUgcGFsbGV0IGhhdmUgYmVlbiB1cGRhdGVkLkhBc3NldFNwZW5kQXBwcm92ZWQYARRpbmRleDgBKFNwZW5kSW5kZXgAAShhc3NldF9raW5k6QQBMFQ6OkFzc2V0S2luZAABGGFtb3VudFkBAVBBc3NldEJhbGFuY2VPZjxULCBJPgABLGJlbmVmaWNpYXJ57QQBOFQ6OkJlbmVmaWNpYXJ5AAEodmFsaWRfZnJvbTgBUEJsb2NrTnVtYmVyRm9yPFQsIEk+AAEkZXhwaXJlX2F0OAFQQmxvY2tOdW1iZXJGb3I8VCwgST4ABwS0QSBuZXcgYXNzZXQgc3BlbmQgcHJvcG9zYWwgaGFzIGJlZW4gYXBwcm92ZWQuQEFzc2V0U3BlbmRWb2lkZWQEARRpbmRleDgBKFNwZW5kSW5kZXgACAR0QW4gYXBwcm92ZWQgc3BlbmQgd2FzIHZvaWRlZC4QUGFpZAgBFGluZGV4OAEoU3BlbmRJbmRleAABKHBheW1lbnRfaWQoAWQ8VDo6UGF5bWFzdGVyIGFzIFBheT46OklkAAkETEEgcGF5bWVudCBoYXBwZW5lZC40UGF5bWVudEZhaWxlZAgBFGluZGV4OAEoU3BlbmRJbmRleAABKHBheW1lbnRfaWQoAWQ8VDo6UGF5bWFzdGVyIGFzIFBheT46OklkAAoEkEEgcGF5bWVudCBmYWlsZWQgYW5kIGNhbiBiZSByZXRyaWVkLjhTcGVuZFByb2Nlc3NlZAQBFGluZGV4OAEoU3BlbmRJbmRleAALCE0BQSBzcGVuZCB3YXMgcHJvY2Vzc2VkIGFuZCByZW1vdmVkIGZyb20gdGhlIHN0b3JhZ2UuIEl0IG1pZ2h0IGhhdmUgYmVlbiBzdWNjZXNzZnVsbHlwcGFpZCBvciBpdCBtYXkgaGF2ZSBleHBpcmVkLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldCkJDGBwYWxsZXRfY29udmljdGlvbl92b3RpbmcYcGFsbGV0FEV2ZW50CARUAARJAAEUJERlbGVnYXRlZAwABAEwVDo6QWNjb3VudElkAAAEATBUOjpBY2NvdW50SWQAAO0DATRDbGFzc09mPFQsIEk+AAAEHQFBbiBhY2NvdW50IGhhcyBkZWxlZ2F0ZWQgdGhlaXIgdm90ZSB0byBhbm90aGVyIGFjY291bnQuIFxbd2hvLCB0YXJnZXRcXSxVbmRlbGVnYXRlZAgABAEwVDo6QWNjb3VudElkAADtAwE0Q2xhc3NPZjxULCBJPgABBPRBbiBcW2FjY291bnRcXSBoYXMgY2FuY2VsbGVkIGEgcHJldmlvdXMgZGVsZWdhdGlvbiBvcGVyYXRpb24uFFZvdGVkDAEMd2hvBAEwVDo6QWNjb3VudElkAAEQdm90ZfUEAXBBY2NvdW50Vm90ZTxCYWxhbmNlT2Y8VCwgST4+AAEocG9sbF9pbmRleDgBRFBvbGxJbmRleE9mPFQsIEk+AAIEUEFuIGFjY291bnQgaGFzIHZvdGVkLFZvdGVSZW1vdmVkDAEMd2hvBAEwVDo6QWNjb3VudElkAAEQdm90ZfUEAXBBY2NvdW50Vm90ZTxCYWxhbmNlT2Y8VCwgST4+AAEocG9sbF9pbmRleDgBRFBvbGxJbmRleE9mPFQsIEk+AAMEXEEgdm90ZSBoYXMgYmVlbiByZW1vdmVkMFZvdGVVbmxvY2tlZAgBDHdobwQBMFQ6OkFjY291bnRJZAABFGNsYXNz7QMBNENsYXNzT2Y8VCwgST4ABARFAVRoZSBsb2NrdXAgcGVyaW9kIG9mIGEgY29udmljdGlvbiB2b3RlIGV4cGlyZWQsIGFuZCB0aGUgZnVuZHMgaGF2ZSBiZWVuIHVubG9ja2VkLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldC0JDEBwYWxsZXRfcmVmZXJlbmRhGHBhbGxldBRFdmVudAgEVAAESQABQCRTdWJtaXR0ZWQMARRpbmRleDgBPFJlZmVyZW5kdW1JbmRleARgSW5kZXggb2YgdGhlIHJlZmVyZW5kdW0uARR0cmFja+0DATxUcmFja0lkT2Y8VCwgST4EJQFUaGUgdHJhY2sgKGFuZCBieSBleHRlbnNpb24gcHJvcG9zYWwgZGlzcGF0Y2ggb3JpZ2luKSBvZiB0aGlzIHJlZmVyZW5kdW0uASBwcm9wb3NhbAkFAUxCb3VuZGVkQ2FsbE9mPFQsIEk+BIBUaGUgcHJvcG9zYWwgZm9yIHRoZSByZWZlcmVuZHVtLgAEgEEgcmVmZXJlbmR1bSBoYXMgYmVlbiBzdWJtaXR0ZWQuVERlY2lzaW9uRGVwb3NpdFBsYWNlZAwBFGluZGV4OAE8UmVmZXJlbmR1bUluZGV4BGBJbmRleCBvZiB0aGUgcmVmZXJlbmR1bS4BDHdobwQBMFQ6OkFjY291bnRJZASMVGhlIGFjY291bnQgd2hvIHBsYWNlZCB0aGUgZGVwb3NpdC4BGGFtb3VudFkBATxCYWxhbmNlT2Y8VCwgST4EhFRoZSBhbW91bnQgcGxhY2VkIGJ5IHRoZSBhY2NvdW50LgEElFRoZSBkZWNpc2lvbiBkZXBvc2l0IGhhcyBiZWVuIHBsYWNlZC5cRGVjaXNpb25EZXBvc2l0UmVmdW5kZWQMARRpbmRleDgBPFJlZmVyZW5kdW1JbmRleARgSW5kZXggb2YgdGhlIHJlZmVyZW5kdW0uAQx3aG8EATBUOjpBY2NvdW50SWQEjFRoZSBhY2NvdW50IHdobyBwbGFjZWQgdGhlIGRlcG9zaXQuARhhbW91bnRZAQE8QmFsYW5jZU9mPFQsIEk+BIRUaGUgYW1vdW50IHBsYWNlZCBieSB0aGUgYWNjb3VudC4CBJxUaGUgZGVjaXNpb24gZGVwb3NpdCBoYXMgYmVlbiByZWZ1bmRlZC44RGVwb3NpdFNsYXNoZWQIAQx3aG8EATBUOjpBY2NvdW50SWQEjFRoZSBhY2NvdW50IHdobyBwbGFjZWQgdGhlIGRlcG9zaXQuARhhbW91bnRZAQE8QmFsYW5jZU9mPFQsIEk+BIRUaGUgYW1vdW50IHBsYWNlZCBieSB0aGUgYWNjb3VudC4DBGxBIGRlcG9zaXQgaGFzIGJlZW4gc2xhc2hlZC48RGVjaXNpb25TdGFydGVkEAEUaW5kZXg4ATxSZWZlcmVuZHVtSW5kZXgEYEluZGV4IG9mIHRoZSByZWZlcmVuZHVtLgEUdHJhY2vtAwE8VHJhY2tJZE9mPFQsIEk+BCUBVGhlIHRyYWNrIChhbmQgYnkgZXh0ZW5zaW9uIHByb3Bvc2FsIGRpc3BhdGNoIG9yaWdpbikgb2YgdGhpcyByZWZlcmVuZHVtLgEgcHJvcG9zYWwJBQFMQm91bmRlZENhbGxPZjxULCBJPgSAVGhlIHByb3Bvc2FsIGZvciB0aGUgcmVmZXJlbmR1bS4BFHRhbGx5MQkBIFQ6OlRhbGx5BLhUaGUgY3VycmVudCB0YWxseSBvZiB2b3RlcyBpbiB0aGlzIHJlZmVyZW5kdW0uBAS8QSByZWZlcmVuZHVtIGhhcyBtb3ZlZCBpbnRvIHRoZSBkZWNpZGluZyBwaGFzZS44Q29uZmlybVN0YXJ0ZWQEARRpbmRleDgBPFJlZmVyZW5kdW1JbmRleARgSW5kZXggb2YgdGhlIHJlZmVyZW5kdW0uBQA4Q29uZmlybUFib3J0ZWQEARRpbmRleDgBPFJlZmVyZW5kdW1JbmRleARgSW5kZXggb2YgdGhlIHJlZmVyZW5kdW0uBgAkQ29uZmlybWVkCAEUaW5kZXg4ATxSZWZlcmVuZHVtSW5kZXgEYEluZGV4IG9mIHRoZSByZWZlcmVuZHVtLgEUdGFsbHkxCQEgVDo6VGFsbHkEsFRoZSBmaW5hbCB0YWxseSBvZiB2b3RlcyBpbiB0aGlzIHJlZmVyZW5kdW0uBwQhAUEgcmVmZXJlbmR1bSBoYXMgZW5kZWQgaXRzIGNvbmZpcm1hdGlvbiBwaGFzZSBhbmQgaXMgcmVhZHkgZm9yIGFwcHJvdmFsLiBBcHByb3ZlZAQBFGluZGV4OAE8UmVmZXJlbmR1bUluZGV4BGBJbmRleCBvZiB0aGUgcmVmZXJlbmR1bS4IBA0BQSByZWZlcmVuZHVtIGhhcyBiZWVuIGFwcHJvdmVkIGFuZCBpdHMgcHJvcG9zYWwgaGFzIGJlZW4gc2NoZWR1bGVkLiBSZWplY3RlZAgBFGluZGV4OAE8UmVmZXJlbmR1bUluZGV4BGBJbmRleCBvZiB0aGUgcmVmZXJlbmR1bS4BFHRhbGx5MQkBIFQ6OlRhbGx5BLBUaGUgZmluYWwgdGFsbHkgb2Ygdm90ZXMgaW4gdGhpcyByZWZlcmVuZHVtLgkErEEgcHJvcG9zYWwgaGFzIGJlZW4gcmVqZWN0ZWQgYnkgcmVmZXJlbmR1bS4gVGltZWRPdXQIARRpbmRleDgBPFJlZmVyZW5kdW1JbmRleARgSW5kZXggb2YgdGhlIHJlZmVyZW5kdW0uARR0YWxseTEJASBUOjpUYWxseQSwVGhlIGZpbmFsIHRhbGx5IG9mIHZvdGVzIGluIHRoaXMgcmVmZXJlbmR1bS4KBNhBIHJlZmVyZW5kdW0gaGFzIGJlZW4gdGltZWQgb3V0IHdpdGhvdXQgYmVpbmcgZGVjaWRlZC4kQ2FuY2VsbGVkCAEUaW5kZXg4ATxSZWZlcmVuZHVtSW5kZXgEYEluZGV4IG9mIHRoZSByZWZlcmVuZHVtLgEUdGFsbHkxCQEgVDo6VGFsbHkEsFRoZSBmaW5hbCB0YWxseSBvZiB2b3RlcyBpbiB0aGlzIHJlZmVyZW5kdW0uCwSAQSByZWZlcmVuZHVtIGhhcyBiZWVuIGNhbmNlbGxlZC4YS2lsbGVkCAEUaW5kZXg4ATxSZWZlcmVuZHVtSW5kZXgEYEluZGV4IG9mIHRoZSByZWZlcmVuZHVtLgEUdGFsbHkxCQEgVDo6VGFsbHkEsFRoZSBmaW5hbCB0YWxseSBvZiB2b3RlcyBpbiB0aGlzIHJlZmVyZW5kdW0uDAR0QSByZWZlcmVuZHVtIGhhcyBiZWVuIGtpbGxlZC5kU3VibWlzc2lvbkRlcG9zaXRSZWZ1bmRlZAwBFGluZGV4OAE8UmVmZXJlbmR1bUluZGV4BGBJbmRleCBvZiB0aGUgcmVmZXJlbmR1bS4BDHdobwQBMFQ6OkFjY291bnRJZASMVGhlIGFjY291bnQgd2hvIHBsYWNlZCB0aGUgZGVwb3NpdC4BGGFtb3VudFkBATxCYWxhbmNlT2Y8VCwgST4EhFRoZSBhbW91bnQgcGxhY2VkIGJ5IHRoZSBhY2NvdW50Lg0EpFRoZSBzdWJtaXNzaW9uIGRlcG9zaXQgaGFzIGJlZW4gcmVmdW5kZWQuLE1ldGFkYXRhU2V0CAEUaW5kZXg4ATxSZWZlcmVuZHVtSW5kZXgEYEluZGV4IG9mIHRoZSByZWZlcmVuZHVtLgEQaGFzaEABHFQ6Okhhc2gEOFByZWltYWdlIGhhc2guDgScTWV0YWRhdGEgZm9yIGEgcmVmZXJlbmR1bSBoYXMgYmVlbiBzZXQuPE1ldGFkYXRhQ2xlYXJlZAgBFGluZGV4OAE8UmVmZXJlbmR1bUluZGV4BGBJbmRleCBvZiB0aGUgcmVmZXJlbmR1bS4BEGhhc2hAARxUOjpIYXNoBDhQcmVpbWFnZSBoYXNoLg8ErE1ldGFkYXRhIGZvciBhIHJlZmVyZW5kdW0gaGFzIGJlZW4gY2xlYXJlZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXQxCQxgcGFsbGV0X2NvbnZpY3Rpb25fdm90aW5nFHR5cGVzFFRhbGx5CBRWb3RlcwFZARRUb3RhbAAADAEQYXllc1kBARRWb3RlcwABEG5heXNZAQEUVm90ZXMAARxzdXBwb3J0WQEBFFZvdGVzAAA1CQxAcGFsbGV0X3doaXRlbGlzdBhwYWxsZXQURXZlbnQEBFQAAQw8Q2FsbFdoaXRlbGlzdGVkBAEkY2FsbF9oYXNoQAEcVDo6SGFzaAAAAFhXaGl0ZWxpc3RlZENhbGxSZW1vdmVkBAEkY2FsbF9oYXNoQAEcVDo6SGFzaAABAGRXaGl0ZWxpc3RlZENhbGxEaXNwYXRjaGVkCAEkY2FsbF9oYXNoQAEcVDo6SGFzaAABGHJlc3VsdDkJAWhEaXNwYXRjaFJlc3VsdFdpdGhQb3N0SW5mbwACAAR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldDkJBBhSZXN1bHQIBFQBPQkERQFBCQEICE9rBAA9CQAAAAAMRXJyBABBCQAAAQAAPQkMNGZyYW1lX3N1cHBvcnQgZGlzcGF0Y2hAUG9zdERpc3BhdGNoSW5mbwAACAE0YWN0dWFsX3dlaWdodBEBAThPcHRpb248V2VpZ2h0PgABIHBheXNfZmVlBQgBEFBheXMAAEEJCChzcF9ydW50aW1lZERpc3BhdGNoRXJyb3JXaXRoUG9zdEluZm8EEEluZm8BPQkACAEkcG9zdF9pbmZvPQkBEEluZm8AARRlcnJvcgkIATREaXNwYXRjaEVycm9yAABFCQw8cGFsbGV0X2JvdW50aWVzGHBhbGxldBRFdmVudAgEVAAESQABMDhCb3VudHlQcm9wb3NlZAQBFGluZGV4OAEsQm91bnR5SW5kZXgAAARQTmV3IGJvdW50eSBwcm9wb3NhbC44Qm91bnR5UmVqZWN0ZWQIARRpbmRleDgBLEJvdW50eUluZGV4AAEQYm9uZFkBATxCYWxhbmNlT2Y8VCwgST4AAQTMQSBib3VudHkgcHJvcG9zYWwgd2FzIHJlamVjdGVkOyBmdW5kcyB3ZXJlIHNsYXNoZWQuSEJvdW50eUJlY2FtZUFjdGl2ZQQBFGluZGV4OAEsQm91bnR5SW5kZXgAAgS4QSBib3VudHkgcHJvcG9zYWwgaXMgZnVuZGVkIGFuZCBiZWNhbWUgYWN0aXZlLjRCb3VudHlBd2FyZGVkCAEUaW5kZXg4ASxCb3VudHlJbmRleAABLGJlbmVmaWNpYXJ5BAEwVDo6QWNjb3VudElkAAMElEEgYm91bnR5IGlzIGF3YXJkZWQgdG8gYSBiZW5lZmljaWFyeS40Qm91bnR5Q2xhaW1lZAwBFGluZGV4OAEsQm91bnR5SW5kZXgAARhwYXlvdXRZAQE8QmFsYW5jZU9mPFQsIEk+AAEsYmVuZWZpY2lhcnkEATBUOjpBY2NvdW50SWQABASMQSBib3VudHkgaXMgY2xhaW1lZCBieSBiZW5lZmljaWFyeS44Qm91bnR5Q2FuY2VsZWQEARRpbmRleDgBLEJvdW50eUluZGV4AAUEWEEgYm91bnR5IGlzIGNhbmNlbGxlZC44Qm91bnR5RXh0ZW5kZWQEARRpbmRleDgBLEJvdW50eUluZGV4AAYEcEEgYm91bnR5IGV4cGlyeSBpcyBleHRlbmRlZC44Qm91bnR5QXBwcm92ZWQEARRpbmRleDgBLEJvdW50eUluZGV4AAcEVEEgYm91bnR5IGlzIGFwcHJvdmVkLjxDdXJhdG9yUHJvcG9zZWQIASRib3VudHlfaWQ4ASxCb3VudHlJbmRleAABHGN1cmF0b3IEATBUOjpBY2NvdW50SWQACAR0QSBib3VudHkgY3VyYXRvciBpcyBwcm9wb3NlZC5EQ3VyYXRvclVuYXNzaWduZWQEASRib3VudHlfaWQ4ASxCb3VudHlJbmRleAAJBHxBIGJvdW50eSBjdXJhdG9yIGlzIHVuYXNzaWduZWQuPEN1cmF0b3JBY2NlcHRlZAgBJGJvdW50eV9pZDgBLEJvdW50eUluZGV4AAEcY3VyYXRvcgQBMFQ6OkFjY291bnRJZAAKBHRBIGJvdW50eSBjdXJhdG9yIGlzIGFjY2VwdGVkLjBEZXBvc2l0UG9rZWQQASRib3VudHlfaWQ4ASxCb3VudHlJbmRleAABIHByb3Bvc2VyBAEwVDo6QWNjb3VudElkAAEsb2xkX2RlcG9zaXRZAQE8QmFsYW5jZU9mPFQsIEk+AAEsbmV3X2RlcG9zaXRZAQE8QmFsYW5jZU9mPFQsIEk+AAsEgEEgYm91bnR5IGRlcG9zaXQgaGFzIGJlZW4gcG9rZWQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0SQkMVHBhbGxldF9jaGlsZF9ib3VudGllcxhwYWxsZXQURXZlbnQEBFQAARAUQWRkZWQIARRpbmRleDgBLEJvdW50eUluZGV4AAEsY2hpbGRfaW5kZXg4ASxCb3VudHlJbmRleAAABGBBIGNoaWxkLWJvdW50eSBpcyBhZGRlZC4cQXdhcmRlZAwBFGluZGV4OAEsQm91bnR5SW5kZXgAASxjaGlsZF9pbmRleDgBLEJvdW50eUluZGV4AAEsYmVuZWZpY2lhcnkEATBUOjpBY2NvdW50SWQAAQSsQSBjaGlsZC1ib3VudHkgaXMgYXdhcmRlZCB0byBhIGJlbmVmaWNpYXJ5LhxDbGFpbWVkEAEUaW5kZXg4ASxCb3VudHlJbmRleAABLGNoaWxkX2luZGV4OAEsQm91bnR5SW5kZXgAARhwYXlvdXRZAQEwQmFsYW5jZU9mPFQ+AAEsYmVuZWZpY2lhcnkEATBUOjpBY2NvdW50SWQAAgSkQSBjaGlsZC1ib3VudHkgaXMgY2xhaW1lZCBieSBiZW5lZmljaWFyeS4gQ2FuY2VsZWQIARRpbmRleDgBLEJvdW50eUluZGV4AAEsY2hpbGRfaW5kZXg4ASxCb3VudHlJbmRleAADBHBBIGNoaWxkLWJvdW50eSBpcyBjYW5jZWxsZWQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0TQkMRHBhbGxldF9hc3NldF9yYXRlGHBhbGxldBRFdmVudAQEVAABDEBBc3NldFJhdGVDcmVhdGVkCAEoYXNzZXRfa2luZOkEATBUOjpBc3NldEtpbmQAARByYXRlKQUBJEZpeGVkVTEyOAAAAEBBc3NldFJhdGVSZW1vdmVkBAEoYXNzZXRfa2luZOkEATBUOjpBc3NldEtpbmQAAQBAQXNzZXRSYXRlVXBkYXRlZAwBKGFzc2V0X2tpbmTpBAEwVDo6QXNzZXRLaW5kAAEMb2xkKQUBJEZpeGVkVTEyOAABDG5ldykFASRGaXhlZFUxMjgAAgAEfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXRRCQxscGFsbGV0X211bHRpX2Fzc2V0X2JvdW50aWVzGHBhbGxldBRFdmVudAgEVAAESQABMDRCb3VudHlDcmVhdGVkBAEUaW5kZXg4ASxCb3VudHlJbmRleAAABOBBIG5ldyBib3VudHkgd2FzIGNyZWF0ZWQgYW5kIGZ1bmRpbmcgaGFzIGJlZW4gaW5pdGlhdGVkLkhDaGlsZEJvdW50eUNyZWF0ZWQIARRpbmRleDgBLEJvdW50eUluZGV4AAEsY2hpbGRfaW5kZXg4ASxCb3VudHlJbmRleAABBPhBIG5ldyBjaGlsZC1ib3VudHkgd2FzIGNyZWF0ZWQgYW5kIGZ1bmRpbmcgaGFzIGJlZW4gaW5pdGlhdGVkLkhCb3VudHlCZWNhbWVBY3RpdmUMARRpbmRleDgBLEJvdW50eUluZGV4AAEsY2hpbGRfaW5kZXjkAUxPcHRpb248Qm91bnR5SW5kZXg+AAEcY3VyYXRvcgQBMFQ6OkFjY291bnRJZAACBOhUaGUgY3VyYXRvciBhY2NlcHRlZCByb2xlIGFuZCBjaGlsZC0vYm91bnR5IGJlY2FtZSBhY3RpdmUuNEJvdW50eUF3YXJkZWQMARRpbmRleDgBLEJvdW50eUluZGV4AAEsY2hpbGRfaW5kZXjkAUxPcHRpb248Qm91bnR5SW5kZXg+AAEsYmVuZWZpY2lhcnntBAE4VDo6QmVuZWZpY2lhcnkAAwS0QSBjaGlsZC0vYm91bnR5IHdhcyBhd2FyZGVkIHRvIGEgYmVuZWZpY2lhcnkuVEJvdW50eVBheW91dFByb2Nlc3NlZBQBFGluZGV4OAEsQm91bnR5SW5kZXgAASxjaGlsZF9pbmRleOQBTE9wdGlvbjxCb3VudHlJbmRleD4AAShhc3NldF9raW5k6QQBMFQ6OkFzc2V0S2luZAABFHZhbHVlWQEBKFQ6OkJhbGFuY2UAASxiZW5lZmljaWFyee0EAThUOjpCZW5lZmljaWFyeQAEBPRQYXlvdXQgcGF5bWVudCB0byB0aGUgYmVuZWZpY2lhcnkgaGFzIGNvbmNsdWRlZCBzdWNjZXNzZnVsbHkuWEJvdW50eUZ1bmRpbmdQcm9jZXNzZWQIARRpbmRleDgBLEJvdW50eUluZGV4AAEsY2hpbGRfaW5kZXjkAUxPcHRpb248Qm91bnR5SW5kZXg+AAUErEZ1bmRpbmcgcGF5bWVudCBoYXMgY29uY2x1ZGVkIHN1Y2Nlc3NmdWxseS5UQm91bnR5UmVmdW5kUHJvY2Vzc2VkCAEUaW5kZXg4ASxCb3VudHlJbmRleAABLGNoaWxkX2luZGV45AFMT3B0aW9uPEJvdW50eUluZGV4PgAGBKhSZWZ1bmQgcGF5bWVudCBoYXMgY29uY2x1ZGVkIHN1Y2Nlc3NmdWxseS44Qm91bnR5Q2FuY2VsZWQIARRpbmRleDgBLEJvdW50eUluZGV4AAEsY2hpbGRfaW5kZXjkAUxPcHRpb248Qm91bnR5SW5kZXg+AAcEeEEgY2hpbGQtL2JvdW50eSB3YXMgY2FuY2VsbGVkLkRDdXJhdG9yVW5hc3NpZ25lZAgBFGluZGV4OAEsQm91bnR5SW5kZXgAASxjaGlsZF9pbmRleOQBTE9wdGlvbjxCb3VudHlJbmRleD4ACAScQSBjaGlsZC0vYm91bnR5IGN1cmF0b3Igd2FzIHVuYXNzaWduZWQuPEN1cmF0b3JQcm9wb3NlZAwBFGluZGV4OAEsQm91bnR5SW5kZXgAASxjaGlsZF9pbmRleOQBTE9wdGlvbjxCb3VudHlJbmRleD4AARxjdXJhdG9yBAEwVDo6QWNjb3VudElkAAkElEEgY2hpbGQtL2JvdW50eSBjdXJhdG9yIHdhcyBwcm9wb3NlZC40UGF5bWVudEZhaWxlZAwBFGluZGV4OAEsQm91bnR5SW5kZXgAASxjaGlsZF9pbmRleOQBTE9wdGlvbjxCb3VudHlJbmRleD4AAShwYXltZW50X2lkKAFEUGF5bWVudElkT2Y8VCwgST4ACgSQQSBwYXltZW50IGZhaWxlZCBhbmQgY2FuIGJlIHJldHJpZWQuEFBhaWQMARRpbmRleDgBLEJvdW50eUluZGV4AAEsY2hpbGRfaW5kZXjkAUxPcHRpb248Qm91bnR5SW5kZXg+AAEocGF5bWVudF9pZCgBRFBheW1lbnRJZE9mPFQsIEk+AAsEmEEgcGF5bWVudCBoYXBwZW5lZCBhbmQgY2FuIGJlIGNoZWNrZWQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0VQkMbHBhbGxldF9zdGF0ZV90cmllX21pZ3JhdGlvbhhwYWxsZXQURXZlbnQEBFQAARAgTWlncmF0ZWQMAQx0b3A4AQx1MzIAARRjaGlsZDgBDHUzMgABHGNvbXB1dGVZCQFATWlncmF0aW9uQ29tcHV0ZQAACDkBR2l2ZW4gbnVtYmVyIG9mIGAodG9wLCBjaGlsZClgIGtleXMgd2VyZSBtaWdyYXRlZCByZXNwZWN0aXZlbHksIHdpdGggdGhlIGdpdmVuKGBjb21wdXRlYC4cU2xhc2hlZAgBDHdobwQBMFQ6OkFjY291bnRJZAABGGFtb3VudFkBATBCYWxhbmNlT2Y8VD4AAQS0U29tZSBhY2NvdW50IGdvdCBzbGFzaGVkIGJ5IHRoZSBnaXZlbiBhbW91bnQuVEF1dG9NaWdyYXRpb25GaW5pc2hlZAACBIRUaGUgYXV0byBtaWdyYXRpb24gdGFzayBmaW5pc2hlZC4YSGFsdGVkBAEUZXJyb3JdCQEgRXJyb3I8VD4AAwTsTWlncmF0aW9uIGdvdCBoYWx0ZWQgZHVlIHRvIGFuIGVycm9yIG9yIG1pc3MtY29uZmlndXJhdGlvbi4EcElubmVyIGV2ZW50cyBvZiB0aGlzIHBhbGxldC5ZCQxscGFsbGV0X3N0YXRlX3RyaWVfbWlncmF0aW9uGHBhbGxldEBNaWdyYXRpb25Db21wdXRlAAEIGFNpZ25lZAAAABBBdXRvAAEAAF0JDGxwYWxsZXRfc3RhdGVfdHJpZV9taWdyYXRpb24YcGFsbGV0FEVycm9yBARUAAEYPE1heFNpZ25lZExpbWl0cwAABIBNYXggc2lnbmVkIGxpbWl0cyBub3QgcmVzcGVjdGVkLihLZXlUb29Mb25nAAEctEEga2V5IHdhcyBsb25nZXIgdGhhbiB0aGUgY29uZmlndXJlZCBtYXhpbXVtLgARAVRoaXMgbWVhbnMgdGhhdCB0aGUgbWlncmF0aW9uIGhhbHRlZCBhdCB0aGUgY3VycmVudCBbYFByb2dyZXNzYF0gYW5kAQFjYW4gYmUgcmVzdW1lZCB3aXRoIGEgbGFyZ2VyIFtgY3JhdGU6OkNvbmZpZzo6TWF4S2V5TGVuYF0gdmFsdWUuIQFSZXRyeWluZyB3aXRoIHRoZSBzYW1lIFtgY3JhdGU6OkNvbmZpZzo6TWF4S2V5TGVuYF0gdmFsdWUgd2lsbCBub3Qgd29yay5FAVRoZSB2YWx1ZSBzaG91bGQgb25seSBiZSBpbmNyZWFzZWQgdG8gYXZvaWQgYSBzdG9yYWdlIG1pZ3JhdGlvbiBmb3IgdGhlIGN1cnJlbnRseZBzdG9yZWQgW2BjcmF0ZTo6UHJvZ3Jlc3M6Okxhc3RLZXlgXS44Tm90RW5vdWdoRnVuZHMAAgSUc3VibWl0dGVyIGRvZXMgbm90IGhhdmUgZW5vdWdoIGZ1bmRzLihCYWRXaXRuZXNzAAMEaEJhZCB3aXRuZXNzIGRhdGEgcHJvdmlkZWQuZFNpZ25lZE1pZ3JhdGlvbk5vdEFsbG93ZWQABAQlAVNpZ25lZCBtaWdyYXRpb24gaXMgbm90IGFsbG93ZWQgYmVjYXVzZSB0aGUgbWF4aW11bSBsaW1pdCBpcyBub3Qgc2V0IHlldC4wQmFkQ2hpbGRSb290AAUEYEJhZCBjaGlsZCByb290IHByb3ZpZGVkLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC5hCQxccGFsbGV0X25vbWluYXRpb25fcG9vbHMYcGFsbGV0FEV2ZW50BARUAAFcHENyZWF0ZWQIASRkZXBvc2l0b3IEATBUOjpBY2NvdW50SWQAARxwb29sX2lkOAEYUG9vbElkAAAEYEEgcG9vbCBoYXMgYmVlbiBjcmVhdGVkLhhCb25kZWQQARhtZW1iZXIEATBUOjpBY2NvdW50SWQAARxwb29sX2lkOAEYUG9vbElkAAEYYm9uZGVkWQEBMEJhbGFuY2VPZjxUPgABGGpvaW5lZF0BARBib29sAAEElEEgbWVtYmVyIGhhcyBiZWNhbWUgYm9uZGVkIGluIGEgcG9vbC4cUGFpZE91dAwBGG1lbWJlcgQBMFQ6OkFjY291bnRJZAABHHBvb2xfaWQ4ARhQb29sSWQAARhwYXlvdXRZAQEwQmFsYW5jZU9mPFQ+AAIEjEEgcGF5b3V0IGhhcyBiZWVuIG1hZGUgdG8gYSBtZW1iZXIuIFVuYm9uZGVkFAEYbWVtYmVyBAEwVDo6QWNjb3VudElkAAEccG9vbF9pZDgBGFBvb2xJZAABHGJhbGFuY2VZAQEwQmFsYW5jZU9mPFQ+AAEYcG9pbnRzWQEBMEJhbGFuY2VPZjxUPgABDGVyYTgBIEVyYUluZGV4AAMsmEEgbWVtYmVyIGhhcyB1bmJvbmRlZCBmcm9tIHRoZWlyIHBvb2wuADkBLSBgYmFsYW5jZWAgaXMgdGhlIGNvcnJlc3BvbmRpbmcgYmFsYW5jZSBvZiB0aGUgbnVtYmVyIG9mIHBvaW50cyB0aGF0IGhhcyBiZWVuVQEgIHJlcXVlc3RlZCB0byBiZSB1bmJvbmRlZCAodGhlIGFyZ3VtZW50IG9mIHRoZSBgdW5ib25kYCB0cmFuc2FjdGlvbikgZnJvbSB0aGUgYm9uZGVkHCAgcG9vbC5FAS0gYHBvaW50c2AgaXMgdGhlIG51bWJlciBvZiBwb2ludHMgdGhhdCBhcmUgaXNzdWVkIGFzIGEgcmVzdWx0IG9mIGBiYWxhbmNlYCBiZWluZ8BkaXNzb2x2ZWQgaW50byB0aGUgY29ycmVzcG9uZGluZyB1bmJvbmRpbmcgcG9vbC7kLSBgZXJhYCBpcyB0aGUgZXJhIGluIHdoaWNoIHRoZSBiYWxhbmNlIHdpbGwgYmUgdW5ib25kZWQuVQFJbiB0aGUgYWJzZW5jZSBvZiBzbGFzaGluZywgdGhlc2UgdmFsdWVzIHdpbGwgbWF0Y2guIEluIHRoZSBwcmVzZW5jZSBvZiBzbGFzaGluZywgdGhlTQFudW1iZXIgb2YgcG9pbnRzIHRoYXQgYXJlIGlzc3VlZCBpbiB0aGUgdW5ib25kaW5nIHBvb2wgd2lsbCBiZSBsZXNzIHRoYW4gdGhlIGFtb3VudGRyZXF1ZXN0ZWQgdG8gYmUgdW5ib25kZWQuJFdpdGhkcmF3bhABGG1lbWJlcgQBMFQ6OkFjY291bnRJZAABHHBvb2xfaWQ4ARhQb29sSWQAARxiYWxhbmNlWQEBMEJhbGFuY2VPZjxUPgABGHBvaW50c1kBATBCYWxhbmNlT2Y8VD4ABBicQSBtZW1iZXIgaGFzIHdpdGhkcmF3biBmcm9tIHRoZWlyIHBvb2wuACEBVGhlIGdpdmVuIG51bWJlciBvZiBgcG9pbnRzYCBoYXZlIGJlZW4gZGlzc29sdmVkIGluIHJldHVybiBvZiBgYmFsYW5jZWAuAFkBU2ltaWxhciB0byBgVW5ib25kZWRgIGV2ZW50LCBpbiB0aGUgYWJzZW5jZSBvZiBzbGFzaGluZywgdGhlIHJhdGlvIG9mIHBvaW50IHRvIGJhbGFuY2Uod2lsbCBiZSAxLiREZXN0cm95ZWQEARxwb29sX2lkOAEYUG9vbElkAAUEaEEgcG9vbCBoYXMgYmVlbiBkZXN0cm95ZWQuMFN0YXRlQ2hhbmdlZAgBHHBvb2xfaWQ4ARhQb29sSWQAASRuZXdfc3RhdGVRBQEkUG9vbFN0YXRlAAYEfFRoZSBzdGF0ZSBvZiBhIHBvb2wgaGFzIGNoYW5nZWQ0TWVtYmVyUmVtb3ZlZAwBHHBvb2xfaWQ4ARhQb29sSWQAARhtZW1iZXIEATBUOjpBY2NvdW50SWQAAUByZWxlYXNlZF9iYWxhbmNlWQEBMEJhbGFuY2VPZjxUPgAHFJhBIG1lbWJlciBoYXMgYmVlbiByZW1vdmVkIGZyb20gYSBwb29sLgBRAVRoZSByZW1vdmFsIGNhbiBiZSB2b2x1bnRhcnkgKHdpdGhkcmF3biBhbGwgdW5ib25kZWQgZnVuZHMpIG9yIGludm9sdW50YXJ5IChraWNrZWQpLkkBQW55IGZ1bmRzIHRoYXQgYXJlIHN0aWxsIGRlbGVnYXRlZCAoaS5lLiBkYW5nbGluZyBkZWxlZ2F0aW9uKSBhcmUgcmVsZWFzZWQgYW5kIGFyZYhyZXByZXNlbnRlZCBieSBgcmVsZWFzZWRfYmFsYW5jZWAuMFJvbGVzVXBkYXRlZAwBEHJvb3SRAQFQT3B0aW9uPFQ6OkFjY291bnRJZD4AARxib3VuY2VykQEBUE9wdGlvbjxUOjpBY2NvdW50SWQ+AAEkbm9taW5hdG9ykQEBUE9wdGlvbjxUOjpBY2NvdW50SWQ+AAgIVQFUaGUgcm9sZXMgb2YgYSBwb29sIGhhdmUgYmVlbiB1cGRhdGVkIHRvIHRoZSBnaXZlbiBuZXcgcm9sZXMuIE5vdGUgdGhhdCB0aGUgZGVwb3NpdG9yRGNhbiBuZXZlciBjaGFuZ2UuLFBvb2xTbGFzaGVkCAEccG9vbF9pZDgBGFBvb2xJZAABHGJhbGFuY2VZAQEwQmFsYW5jZU9mPFQ+AAkEDQFUaGUgYWN0aXZlIGJhbGFuY2Ugb2YgcG9vbCBgcG9vbF9pZGAgaGFzIGJlZW4gc2xhc2hlZCB0byBgYmFsYW5jZWAuUFVuYm9uZGluZ1Bvb2xTbGFzaGVkDAEccG9vbF9pZDgBGFBvb2xJZAABDGVyYTgBIEVyYUluZGV4AAEcYmFsYW5jZVkBATBCYWxhbmNlT2Y8VD4ACgQlAVRoZSB1bmJvbmQgcG9vbCBhdCBgZXJhYCBvZiBwb29sIGBwb29sX2lkYCBoYXMgYmVlbiBzbGFzaGVkIHRvIGBiYWxhbmNlYC5UUG9vbENvbW1pc3Npb25VcGRhdGVkCAEccG9vbF9pZDgBGFBvb2xJZAABHGN1cnJlbnRpBQF8T3B0aW9uPChQZXJiaWxsLCBUOjpBY2NvdW50SWQpPgALBLRBIHBvb2wncyBjb21taXNzaW9uIHNldHRpbmcgaGFzIGJlZW4gY2hhbmdlZC5gUG9vbE1heENvbW1pc3Npb25VcGRhdGVkCAEccG9vbF9pZDgBGFBvb2xJZAABOG1heF9jb21taXNzaW9uoQEBHFBlcmJpbGwADATUQSBwb29sJ3MgbWF4aW11bSBjb21taXNzaW9uIHNldHRpbmcgaGFzIGJlZW4gY2hhbmdlZC58UG9vbENvbW1pc3Npb25DaGFuZ2VSYXRlVXBkYXRlZAgBHHBvb2xfaWQ4ARhQb29sSWQAASxjaGFuZ2VfcmF0ZXEFAZxDb21taXNzaW9uQ2hhbmdlUmF0ZTxCbG9ja051bWJlckZvcjxUPj4ADQTMQSBwb29sJ3MgY29tbWlzc2lvbiBgY2hhbmdlX3JhdGVgIGhhcyBiZWVuIGNoYW5nZWQukFBvb2xDb21taXNzaW9uQ2xhaW1QZXJtaXNzaW9uVXBkYXRlZAgBHHBvb2xfaWQ4ARhQb29sSWQAAShwZXJtaXNzaW9udQUBvE9wdGlvbjxDb21taXNzaW9uQ2xhaW1QZXJtaXNzaW9uPFQ6OkFjY291bnRJZD4+AA4EyFBvb2wgY29tbWlzc2lvbiBjbGFpbSBwZXJtaXNzaW9uIGhhcyBiZWVuIHVwZGF0ZWQuVFBvb2xDb21taXNzaW9uQ2xhaW1lZAgBHHBvb2xfaWQ4ARhQb29sSWQAAShjb21taXNzaW9uWQEBMEJhbGFuY2VPZjxUPgAPBIRQb29sIGNvbW1pc3Npb24gaGFzIGJlZW4gY2xhaW1lZC5kTWluQmFsYW5jZURlZmljaXRBZGp1c3RlZAgBHHBvb2xfaWQ4ARhQb29sSWQAARhhbW91bnRZAQEwQmFsYW5jZU9mPFQ+ABAEyFRvcHBlZCB1cCBkZWZpY2l0IGluIGZyb3plbiBFRCBvZiB0aGUgcmV3YXJkIHBvb2wuYE1pbkJhbGFuY2VFeGNlc3NBZGp1c3RlZAgBHHBvb2xfaWQ4ARhQb29sSWQAARhhbW91bnRZAQEwQmFsYW5jZU9mPFQ+ABEEvENsYWltZWQgZXhjZXNzIGZyb3plbiBFRCBvZiBhZiB0aGUgcmV3YXJkIHBvb2wucE1lbWJlckNsYWltUGVybWlzc2lvblVwZGF0ZWQIARhtZW1iZXIEATBUOjpBY2NvdW50SWQAAShwZXJtaXNzaW9uZQUBPENsYWltUGVybWlzc2lvbgASBMhBIHBvb2wgbWVtYmVyJ3MgY2xhaW0gcGVybWlzc2lvbiBoYXMgYmVlbiB1cGRhdGVkLjxNZXRhZGF0YVVwZGF0ZWQIARxwb29sX2lkOAEYUG9vbElkAAEYY2FsbGVyBAEwVDo6QWNjb3VudElkABMEeEEgcG9vbCdzIG1ldGFkYXRhIHdhcyB1cGRhdGVkLkhQb29sTm9taW5hdGlvbk1hZGUIARxwb29sX2lkOAEYUG9vbElkAAEYY2FsbGVyBAEwVDo6QWNjb3VudElkABQIWQFBIHBvb2wncyBub21pbmF0aW5nIGFjY291bnQgKG9yIHRoZSBwb29sJ3Mgcm9vdCBhY2NvdW50KSBoYXMgbm9taW5hdGVkIGEgdmFsaWRhdG9yIHNldFhvbiBiZWhhbGYgb2YgdGhlIHBvb2wuUFBvb2xOb21pbmF0b3JDaGlsbGVkCAEccG9vbF9pZDgBGFBvb2xJZAABGGNhbGxlcgQBMFQ6OkFjY291bnRJZAAVBLhUaGUgcG9vbCBpcyBjaGlsbGVkIGkuZS4gbm8gbG9uZ2VyIG5vbWluYXRpbmcuTEdsb2JhbFBhcmFtc1VwZGF0ZWQYATRtaW5fam9pbl9ib25kWQEBMEJhbGFuY2VPZjxUPgABPG1pbl9jcmVhdGVfYm9uZFkBATBCYWxhbmNlT2Y8VD4AASRtYXhfcG9vbHPkASxPcHRpb248dTMyPgABLG1heF9tZW1iZXJz5AEsT3B0aW9uPHUzMj4AAVBtYXhfbWVtYmVyc19wZXJfcG9vbOQBLE9wdGlvbjx1MzI+AAFUZ2xvYmFsX21heF9jb21taXNzaW9uZQkBPE9wdGlvbjxQZXJiaWxsPgAWBAEBR2xvYmFsIHBhcmFtZXRlcnMgcmVndWxhdGluZyBub21pbmF0aW9uIHBvb2xzIGhhdmUgYmVlbiB1cGRhdGVkLgRYRXZlbnRzIG9mIHRoaXMgcGFsbGV0LmUJBBhPcHRpb24EBFQBoQEBCBBOb25lAAAAEFNvbWUEAKEBAAABAABpCQxAcGFsbGV0X2JhZ3NfbGlzdBhwYWxsZXQURXZlbnQIBFQABEkAAQggUmViYWdnZWQMAQx3aG8EATBUOjpBY2NvdW50SWQAARBmcm9tKAEgVDo6U2NvcmUAAQh0bygBIFQ6OlNjb3JlAAAEpE1vdmVkIGFuIGFjY291bnQgZnJvbSBvbmUgYmFnIHRvIGFub3RoZXIuMFNjb3JlVXBkYXRlZAgBDHdobwQBMFQ6OkFjY291bnRJZAABJG5ld19zY29yZSgBIFQ6OlNjb3JlAAEE2FVwZGF0ZWQgdGhlIHNjb3JlIG9mIHNvbWUgYWNjb3VudCB0byB0aGUgZ2l2ZW4gYW1vdW50LgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldG0JDGBwYWxsZXRfZGVsZWdhdGVkX3N0YWtpbmcYcGFsbGV0FEV2ZW50BARUAAEQJERlbGVnYXRlZAwBFGFnZW50BAEwVDo6QWNjb3VudElkAAEkZGVsZWdhdG9yBAEwVDo6QWNjb3VudElkAAEYYW1vdW50WQEBMEJhbGFuY2VPZjxUPgAABHxGdW5kcyBkZWxlZ2F0ZWQgYnkgYSBkZWxlZ2F0b3IuIFJlbGVhc2VkDAEUYWdlbnQEATBUOjpBY2NvdW50SWQAASRkZWxlZ2F0b3IEATBUOjpBY2NvdW50SWQAARhhbW91bnRZAQEwQmFsYW5jZU9mPFQ+AAEEeEZ1bmRzIHJlbGVhc2VkIHRvIGEgZGVsZWdhdG9yLhxTbGFzaGVkDAEUYWdlbnQEATBUOjpBY2NvdW50SWQAASRkZWxlZ2F0b3IEATBUOjpBY2NvdW50SWQAARhhbW91bnRZAQEwQmFsYW5jZU9mPFQ+AAIEfEZ1bmRzIHNsYXNoZWQgZnJvbSBhIGRlbGVnYXRvci5ITWlncmF0ZWREZWxlZ2F0aW9uDAEUYWdlbnQEATBUOjpBY2NvdW50SWQAASRkZWxlZ2F0b3IEATBUOjpBY2NvdW50SWQAARhhbW91bnRZAQEwQmFsYW5jZU9mPFQ+AAMExFVuY2xhaW1lZCBkZWxlZ2F0aW9uIGZ1bmRzIG1pZ3JhdGVkIHRvIGRlbGVnYXRvci4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXRxCQx4cGFsbGV0X3N0YWtpbmdfYXN5bmNfcmNfY2xpZW50GHBhbGxldBRFdmVudAQEVAABEFRTZXNzaW9uUmVwb3J0UmVjZWl2ZWQQASRlbmRfaW5kZXg4ATBTZXNzaW9uSW5kZXgAAVBhY3RpdmF0aW9uX3RpbWVzdGFtcJEFAUhPcHRpb248KHU2NCwgdTMyKT4AAVx2YWxpZGF0b3JfcG9pbnRzX2NvdW50czgBDHUzMgABIGxlZnRvdmVyXQEBEGJvb2wAAASMQSBzYWlkIHNlc3Npb24gcmVwb3J0IHdhcyByZWNlaXZlZC48T2ZmZW5jZVJlY2VpdmVkCAE0c2xhc2hfc2Vzc2lvbjgBMFNlc3Npb25JbmRleAABOG9mZmVuY2VzX2NvdW50OAEMdTMyAAEEbEEgbmV3IG9mZmVuY2Ugd2FzIHJlcG9ydGVkLiBGZWVzUGFpZAgBDHdobwQBMFQ6OkFjY291bnRJZAABEGZlZXNZAQEwQmFsYW5jZU9mPFQ+AAIMAQFGZWVzIHdlcmUgY2hhcmdlZCBmb3IgYSB1c2VyIG9wZXJhdGlvbiAoc2V0X2tleXMgb3IgcHVyZ2Vfa2V5cykuABkBVGhlIGZlZSBpbmNsdWRlcyBib3RoIFhDTSBkZWxpdmVyeSBmZWUgYW5kIHJlbGF5IGNoYWluIGV4ZWN1dGlvbiBjb3N0LihVbmV4cGVjdGVkBAB1CQE4VW5leHBlY3RlZEtpbmQAAwgNAVNvbWV0aGluZyBvY2N1cnJlZCB0aGF0IHNob3VsZCBuZXZlciBoYXBwZW4gdW5kZXIgbm9ybWFsIG9wZXJhdGlvbi68TG9nZ2VkIGFzIGFuIGV2ZW50IGZvciBmYWlsLXNhZmUgb2JzZXJ2YWJpbGl0eS4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXR1CQx4cGFsbGV0X3N0YWtpbmdfYXN5bmNfcmNfY2xpZW50GHBhbGxldDhVbmV4cGVjdGVkS2luZAABGHBTZXNzaW9uUmVwb3J0SW50ZWdyaXR5RmFpbGVkAAAAbFZhbGlkYXRvclNldEludGVncml0eUZhaWxlZAABADhTZXNzaW9uU2tpcHBlZAACAFxTZXNzaW9uQWxyZWFkeVByb2Nlc3NlZAADAFhWYWxpZGF0b3JTZXRTZW5kRmFpbGVkAAQATFZhbGlkYXRvclNldERyb3BwZWQABQAAeQkMkHBhbGxldF9lbGVjdGlvbl9wcm92aWRlcl9tdWx0aV9ibG9jaxhwYWxsZXQURXZlbnQEBFQAARREUGhhc2VUcmFuc2l0aW9uZWQIARBmcm9trQUBIFBoYXNlPFQ+BEB0aGUgc291cmNlIHBoYXNlAQh0b60FASBQaGFzZTxUPgRAVGhlIHRhcmdldCBwaGFzZQAIXQFBIHBoYXNlIHRyYW5zaXRpb24gaGFwcGVuZWQuIE9ubHkgY2hlY2tzIG1ham9yIGNoYW5nZXMgaW4gdGhlIHZhcmlhbnRzLCBub3QgbWlub3IgaW5uZXIcdmFsdWVzLnhVbmV4cGVjdGVkVGFyZ2V0U25hcHNob3RGYWlsZWQAAQSAVGFyZ2V0IHNuYXBzaG90IGNyZWF0aW9uIGZhaWxlZC50VW5leHBlY3RlZFZvdGVyU25hcHNob3RGYWlsZWQAAgR8Vm90ZXIgc25hcHNob3QgY3JlYXRpb24gZmFpbGVkLpBVbmV4cGVjdGVkUGhhc2VUcmFuc2l0aW9uT3V0T2ZXZWlnaHQQARBmcm9trQUBIFBoYXNlPFQ+AAEIdG+tBQEgUGhhc2U8VD4AASByZXF1aXJlZBUBARhXZWlnaHQAAQxoYWQVAQEYV2VpZ2h0AAME+FBoYXNlIHRyYW5zaXRpb24gY291bGQgbm90IHByb2NlZWQgZHVlIHRvIGJlaW5nIG91dCBvZiB3ZWlnaHQudFVuZXhwZWN0ZWRQaGFzZVRyYW5zaXRpb25IYWx0CAEgcmVxdWlyZWQVAQEYV2VpZ2h0AAEMaGFkFQEBGFdlaWdodAAEBBUBUGhhc2UgdHJhbnNpdGlvbiBjb3VsZCBub3QgZXZlbiBiZWdpbiBiZWNhc2V1IG9mIGJlaW5nIG91dCBvZiB3ZWlnaHQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0fQkUkHBhbGxldF9lbGVjdGlvbl9wcm92aWRlcl9tdWx0aV9ibG9jayB2ZXJpZmllchRpbXBscxhwYWxsZXQURXZlbnQEBFQAAQxIVmVyaWZpY2F0aW9uRmFpbGVkCAA4ASRQYWdlSW5kZXgAAIEJAUBGZWFzaWJpbGl0eUVycm9yAAAQoEEgdmVyaWZpY2F0aW9uIGZhaWxlZCBhdCB0aGUgZ2l2ZW4gcGFnZS4AVQFOT1RFOiBpZiB0aGUgaW5kZXggaXMgMCwgdGhlbiB0aGlzIGNvdWxkIG1lYW4gZWl0aGVyIHRoZSBmZWFzaWJpbGl0eSBvZiB0aGUgbGFzdCBwYWdlBQF3YXMgd3JvbmcsIG9yIHRoZSBmaW5hbCBjaGVja3Mgb2YgYGZpbmFsaXplX3ZlcmlmaWNhdGlvbmAgZmFpbGVkLiBWZXJpZmllZAgAOAEkUGFnZUluZGV4AAA4AQx1MzIAAQhZAVRoZSBnaXZlbiBwYWdlIG9mIGEgc29sdXRpb24gaGFzIGJlZW4gdmVyaWZpZWQsIHdpdGggdGhlIGdpdmVuIG51bWJlciBvZiB3aW5uZXJzIGJlaW5nMGZvdW5kIGluIGl0LhhRdWV1ZWQIANUFATRFbGVjdGlvblNjb3JlAACJCQFUT3B0aW9uPEVsZWN0aW9uU2NvcmU+AAIEHQFBIHNvbHV0aW9uIHdpdGggdGhlIGdpdmVuIHNjb3JlIGhhcyByZXBsYWNlZCBvdXIgY3VycmVudCBiZXN0IHNvbHV0aW9uLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldIEJDJBwYWxsZXRfZWxlY3Rpb25fcHJvdmlkZXJfbXVsdGlfYmxvY2sgdmVyaWZpZXJARmVhc2liaWxpdHlFcnJvcgABLEBXcm9uZ1dpbm5lckNvdW50AAAATFNuYXBzaG90VW5hdmFpbGFibGUAAQAsSW52YWxpZFZvdGUAAgAwSW52YWxpZFZvdGVyAAMANEludmFsaWRXaW5uZXIABAAwSW52YWxpZFNjb3JlAAUAMEludmFsaWRSb3VuZAAGACxTY29yZVRvb0xvdwAHAFBGYWlsZWRUb0JvdW5kU3VwcG9ydAAIADBOcG9zRWxlY3Rpb24EAIUJAWBzcF9ucG9zX2VsZWN0aW9uczo6RXJyb3IACQAoSW5jb21wbGV0ZQAKAACFCQhEc3BfbnBvc19lbGVjdGlvbnMURXJyb3IAAShYU29sdXRpb25XZWlnaHRPdmVyZmxvdwAAAFhTb2x1dGlvblRhcmdldE92ZXJmbG93AAEAUFNvbHV0aW9uSW52YWxpZEluZGV4AAIAYFNvbHV0aW9uSW52YWxpZFBhZ2VJbmRleAADADxBcml0aG1ldGljRXJyb3IABABISW52YWxpZFN1cHBvcnRFZGdlAAUANFRvb01hbnlWb3RlcnMABgA4Qm91bmRzRXhjZWVkZWQABwA4RHVwbGljYXRlVm90ZXIACAA8RHVwbGljYXRlVGFyZ2V0AAkAAIkJBBhPcHRpb24EBFQB1QUBCBBOb25lAAAAEFNvbWUEANUFAAABAACNCRCQcGFsbGV0X2VsZWN0aW9uX3Byb3ZpZGVyX211bHRpX2Jsb2NrGHNpZ25lZBhwYWxsZXQURXZlbnQEBFQAARwoUmVnaXN0ZXJlZAwAOAEMdTMyAAAEATBUOjpBY2NvdW50SWQAANUFATRFbGVjdGlvblNjb3JlAAAEUQFVcGNvbWluZyBzdWJtaXNzaW9uIGhhcyBiZWVuIHJlZ2lzdGVyZWQgZm9yIHRoZSBnaXZlbiBhY2NvdW50LCB3aXRoIHRoZSBnaXZlbiBzY29yZS4YU3RvcmVkDAA4AQx1MzIAAAQBMFQ6OkFjY291bnRJZAAAOAEkUGFnZUluZGV4AAEEXQFBIHBhZ2Ugb2Ygc29sdXRpb24gc29sdXRpb24gd2l0aCB0aGUgZ2l2ZW4gaW5kZXggaGFzIGJlZW4gc3RvcmVkIGZvciB0aGUgZ2l2ZW4gYWNjb3VudC4gUmV3YXJkZWQMADgBDHUzMgAABAEwVDo6QWNjb3VudElkAABZAQEwQmFsYW5jZU9mPFQ+AAIE6FRoZSBnaXZlbiBhY2NvdW50IGhhcyBiZWVuIHJld2FyZGVkIHdpdGggdGhlIGdpdmVuIGFtb3VudC4cU2xhc2hlZAwAOAEMdTMyAAAEATBUOjpBY2NvdW50SWQAAFkBATBCYWxhbmNlT2Y8VD4AAwTkVGhlIGdpdmVuIGFjY291bnQgaGFzIGJlZW4gc2xhc2hlZCB3aXRoIHRoZSBnaXZlbiBhbW91bnQuHEVqZWN0ZWQIADgBDHUzMgAABAEwVDo6QWNjb3VudElkAAQE1FRoZSBnaXZlbiBzb2x1dGlvbiwgZm9yIHRoZSBnaXZlbiByb3VuZCwgd2FzIGVqZWN0ZWQuJERpc2NhcmRlZAgAOAEMdTMyAAAEATBUOjpBY2NvdW50SWQABQSUVGhlIGdpdmVuIGFjY291bnQgaGFzIGJlZW4gZGlzY2FyZGVkLhhCYWlsZWQIADgBDHUzMgAABAEwVDo6QWNjb3VudElkAAYEdFRoZSBnaXZlbiBhY2NvdW50IGhhcyBiYWlsZWQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0kQkQUHBhbGxldF9zdGFraW5nX2FzeW5jGHBhbGxldBhwYWxsZXQURXZlbnQEBFQAAWwcRXJhUGFpZAwBJGVyYV9pbmRleDgBIEVyYUluZGV4AAFAdmFsaWRhdG9yX3BheW91dFkBATBCYWxhbmNlT2Y8VD4AASRyZW1haW5kZXJZAQEwQmFsYW5jZU9mPFQ+AAAUcFRoZSBlcmEgcGF5b3V0IGhhcyBiZWVuIHNldC4ADQFJbiBub24tbWludGluZyBtb2RlLCBgdmFsaWRhdG9yX3BheW91dGAgaXMgdGhlIHN0YWtlciByZXdhcmQgYnVkZ2V0BQFzbmFwc2hvdHRlZCBmcm9tIHRoZSBnZW5lcmFsIHBvdCwgYW5kIGByZW1haW5kZXJgIGlzIGFsd2F5cyB6ZXJvLiEBSW4gbGVnYWN5IG1pbnRpbmcgbW9kZSwgYm90aCBmaWVsZHMgcmVmbGVjdCB0aGUgYEVyYVBheW91dGAgY29tcHV0YXRpb24uIFJld2FyZGVkDAEUc3Rhc2gEATBUOjpBY2NvdW50SWQAARBkZXN0wQYBfFJld2FyZERlc3RpbmF0aW9uPFQ6OkFjY291bnRJZD4AARhhbW91bnRZAQEwQmFsYW5jZU9mPFQ+AAEEDQFUaGUgbm9taW5hdG9yIGhhcyBiZWVuIHJld2FyZGVkIGJ5IHRoaXMgYW1vdW50IHRvIHRoaXMgZGVzdGluYXRpb24uHFNsYXNoZWQIARhzdGFrZXIEATBUOjpBY2NvdW50SWQAARhhbW91bnRZAQEwQmFsYW5jZU9mPFQ+AAIEHQFBIHN0YWtlciAodmFsaWRhdG9yIG9yIG5vbWluYXRvcikgaGFzIGJlZW4gc2xhc2hlZCBieSB0aGUgZ2l2ZW4gYW1vdW50LmhPbGRTbGFzaGluZ1JlcG9ydERpc2NhcmRlZAQBNHNlc3Npb25faW5kZXg4ATBTZXNzaW9uSW5kZXgAAwgZAUFuIG9sZCBzbGFzaGluZyByZXBvcnQgZnJvbSBhIHByaW9yIGVyYSB3YXMgZGlzY2FyZGVkIGJlY2F1c2UgaXQgY291bGREbm90IGJlIHByb2Nlc3NlZC4YQm9uZGVkCAEUc3Rhc2gEATBUOjpBY2NvdW50SWQAARhhbW91bnRZAQEwQmFsYW5jZU9mPFQ+AAQQ0EFuIGFjY291bnQgaGFzIGJvbmRlZCB0aGlzIGFtb3VudC4gXFtzdGFzaCwgYW1vdW50XF0ATQFOT1RFOiBUaGlzIGV2ZW50IGlzIG9ubHkgZW1pdHRlZCB3aGVuIGZ1bmRzIGFyZSBib25kZWQgdmlhIGEgZGlzcGF0Y2hhYmxlLiBOb3RhYmx5LCEBaXQgd2lsbCBub3QgYmUgZW1pdHRlZCBmb3Igc3Rha2luZyByZXdhcmRzIHdoZW4gdGhleSBhcmUgYWRkZWQgdG8gc3Rha2UuIFVuYm9uZGVkCAEUc3Rhc2gEATBUOjpBY2NvdW50SWQAARhhbW91bnRZAQEwQmFsYW5jZU9mPFQ+AAUEkEFuIGFjY291bnQgaGFzIHVuYm9uZGVkIHRoaXMgYW1vdW50LiRXaXRoZHJhd24IARRzdGFzaAQBMFQ6OkFjY291bnRJZAABGGFtb3VudFkBATBCYWxhbmNlT2Y8VD4ABghZAUFuIGFjY291bnQgaGFzIGNhbGxlZCBgd2l0aGRyYXdfdW5ib25kZWRgIGFuZCByZW1vdmVkIHVuYm9uZGluZyBjaHVua3Mgd29ydGggYEJhbGFuY2VgZGZyb20gdGhlIHVubG9ja2luZyBxdWV1ZS40U3Rha2VyUmVtb3ZlZAQBFHN0YXNoBAEwVDo6QWNjb3VudElkAAcIVQFBIHN1YnNlcXVlbnQgZXZlbnQgb2YgYFdpdGhkcmF3bmAsIGluZGljYXRpbmcgdGhhdCBgc3Rhc2hgIHdhcyBmdWxseSByZW1vdmVkIGZyb20gdGhlHHN5c3RlbS4YS2lja2VkCAEkbm9taW5hdG9yBAEwVDo6QWNjb3VudElkAAEUc3Rhc2gEATBUOjpBY2NvdW50SWQACAS0QSBub21pbmF0b3IgaGFzIGJlZW4ga2lja2VkIGZyb20gYSB2YWxpZGF0b3IuHENoaWxsZWQEARRzdGFzaAQBMFQ6OkFjY291bnRJZAAJBCEBQW4gYWNjb3VudCBoYXMgc3RvcHBlZCBwYXJ0aWNpcGF0aW5nIGFzIGVpdGhlciBhIHZhbGlkYXRvciBvciBub21pbmF0b3IuNFBheW91dFN0YXJ0ZWQQASRlcmFfaW5kZXg4ASBFcmFJbmRleAABPHZhbGlkYXRvcl9zdGFzaAQBMFQ6OkFjY291bnRJZAABEHBhZ2U4ARBQYWdlAAEQbmV4dOQBME9wdGlvbjxQYWdlPgAKBFkBQSBQYWdlIG9mIHN0YWtlcnMgcmV3YXJkcyBhcmUgZ2V0dGluZyBwYWlkLiBgbmV4dGAgaXMgYE5vbmVgIGlmIGFsbCBwYWdlcyBhcmUgY2xhaW1lZC5EVmFsaWRhdG9yUHJlZnNTZXQIARRzdGFzaAQBMFQ6OkFjY291bnRJZAABFHByZWZzxQYBOFZhbGlkYXRvclByZWZzAAsEmEEgdmFsaWRhdG9yIGhhcyBzZXQgdGhlaXIgcHJlZmVyZW5jZXMuaFNuYXBzaG90Vm90ZXJzU2l6ZUV4Y2VlZGVkBAEQc2l6ZTgBDHUzMgAMBGhWb3RlcnMgc2l6ZSBsaW1pdCByZWFjaGVkLmxTbmFwc2hvdFRhcmdldHNTaXplRXhjZWVkZWQEARBzaXplOAEMdTMyAA0EbFRhcmdldHMgc2l6ZSBsaW1pdCByZWFjaGVkLiBGb3JjZUVyYQQBEG1vZGWVCQEcRm9yY2luZwAOAGRDb250cm9sbGVyQmF0Y2hEZXByZWNhdGVkBAEgZmFpbHVyZXM4AQx1MzIADwSkUmVwb3J0IG9mIGEgY29udHJvbGxlciBiYXRjaCBkZXByZWNhdGlvbi5AQ3VycmVuY3lNaWdyYXRlZAgBFHN0YXNoBAEwVDo6QWNjb3VudElkAAE4Zm9yY2Vfd2l0aGRyYXdZAQEwQmFsYW5jZU9mPFQ+ABAIVQFTdGFraW5nIGJhbGFuY2UgbWlncmF0ZWQgZnJvbSBsb2NrcyB0byBob2xkcywgd2l0aCBhbnkgYmFsYW5jZSB0aGF0IGNvdWxkIG5vdCBiZSBoZWxkTGlzIGZvcmNlIHdpdGhkcmF3bi5YUGFnZWRFbGVjdGlvblByb2NlZWRlZAgBEHBhZ2U4ASRQYWdlSW5kZXgAARhyZXN1bHSZCQFAUmVzdWx0PHUzMiwgdTMyPgARJEEBQSBwYWdlIGZyb20gYSBtdWx0aS1wYWdlIGVsZWN0aW9uIHdhcyBmZXRjaGVkLiBBIG51bWJlciBvZiB0aGVzZSBhcmUgZm9sbG93ZWQgYnlEYFN0YWtlcnNFbGVjdGVkYC4A8GBPayhjb3VudClgIGluZGljYXRlcyB0aGUgZ2l2ZSBudW1iZXIgb2Ygc3Rhc2hlcyB3ZXJlIGFkZGVkLgUBYEVycihpbmRleClgIGluZGljYXRlcyB0aGF0IHRoZSBzdGFzaGVzIGFmdGVyIGluZGV4IHdlcmUgZHJvcHBlZC5BAWBFcnIoMClgIGluZGljYXRlcyB0aGF0IGFuIGVycm9yIGhhcHBlbmVkIGJ1dCBubyBzdGFzaGVzIHdlcmUgZHJvcHBlZCBub3IgYWRkZWQuAFEBVGhlIGVycm9yIGluZGljYXRlcyB0aGF0IGEgbnVtYmVyIG9mIHZhbGlkYXRvcnMgd2VyZSBkcm9wcGVkIGR1ZSB0byBleGNlc3Mgc2l6ZSwgYnV0jHRoZSBvdmVyYWxsIGVsZWN0aW9uIHdpbGwgY29udGludWUuPE9mZmVuY2VSZXBvcnRlZAwBLG9mZmVuY2VfZXJhOAEgRXJhSW5kZXgAASR2YWxpZGF0b3IEATBUOjpBY2NvdW50SWQAASBmcmFjdGlvbqEBARxQZXJiaWxsABIITQFBbiBvZmZlbmNlIGZvciB0aGUgZ2l2ZW4gdmFsaWRhdG9yLCBmb3IgdGhlIGdpdmVuIHBlcmNlbnRhZ2Ugb2YgdGhlaXIgc3Rha2UsIGF0IHRoZWxnaXZlbiBlcmEgYXMgYmVlbiByZXBvcnRlZC40U2xhc2hDb21wdXRlZBABLG9mZmVuY2VfZXJhOAEgRXJhSW5kZXgAASRzbGFzaF9lcmE4ASBFcmFJbmRleAABIG9mZmVuZGVyBAEwVDo6QWNjb3VudElkAAEQcGFnZTgBDHUzMgATBDEBQW4gb2ZmZW5jZSBoYXMgYmVlbiBwcm9jZXNzZWQgYW5kIHRoZSBjb3JyZXNwb25kaW5nIHNsYXNoIGhhcyBiZWVuIGNvbXB1dGVkLjhTbGFzaENhbmNlbGxlZAgBJHNsYXNoX2VyYTgBIEVyYUluZGV4AAEkdmFsaWRhdG9yBAEwVDo6QWNjb3VudElkABQEmEFuIHVuYXBwbGllZCBzbGFzaCBoYXMgYmVlbiBjYW5jZWxsZWQuOFNlc3Npb25Sb3RhdGVkDAFAc3RhcnRpbmdfc2Vzc2lvbjgBMFNlc3Npb25JbmRleAABKGFjdGl2ZV9lcmE4ASBFcmFJbmRleAABLHBsYW5uZWRfZXJhOAEgRXJhSW5kZXgAFRCIU2Vzc2lvbiBjaGFuZ2UgaGFzIGJlZW4gdHJpZ2dlcmVkLgBZAUlmIHBsYW5uZWRfZXJhIGlzIG9uZSBlcmEgYWhlYWQgb2YgYWN0aXZlX2VyYSwgaXQgaW1wbGllcyBuZXcgZXJhIGlzIGJlaW5nIHBsYW5uZWQgYW5kUGVsZWN0aW9uIGlzIG9uZ29pbmcuKFVuZXhwZWN0ZWQEAJ0JAURVbmV4cGVjdGVkS2luZDxUPgAWCA0BU29tZXRoaW5nIG9jY3VycmVkIHRoYXQgc2hvdWxkIG5ldmVyIGhhcHBlbiB1bmRlciBub3JtYWwgb3BlcmF0aW9uLrxMb2dnZWQgYXMgYW4gZXZlbnQgZm9yIGZhaWwtc2FmZSBvYnNlcnZhYmlsaXR5LjRPZmZlbmNlVG9vT2xkDAEsb2ZmZW5jZV9lcmE4ASBFcmFJbmRleAABJHZhbGlkYXRvcgQBMFQ6OkFjY291bnRJZAABIGZyYWN0aW9uoQEBHFBlcmJpbGwAFwQ9AUFuIG9mZmVuY2Ugd2FzIHJlcG9ydGVkIHRoYXQgd2FzIHRvbyBvbGQgdG8gYmUgcHJvY2Vzc2VkLCBhbmQgdGh1cyB3YXMgZHJvcHBlZC4kRXJhUHJ1bmVkBAEUaW5kZXg4ASBFcmFJbmRleAAYBKxBbiBvbGQgZXJhIHdpdGggdGhlIGdpdmVuIGluZGV4IHdhcyBwcnVuZWQuWFZhbGlkYXRvckluY2VudGl2ZVBhaWQQAQxlcmE4ASBFcmFJbmRleAABPHZhbGlkYXRvcl9zdGFzaAQBMFQ6OkFjY291bnRJZAABEGRlc3TBBgF8UmV3YXJkRGVzdGluYXRpb248VDo6QWNjb3VudElkPgABGGFtb3VudFkBATBCYWxhbmNlT2Y8VD4AGQT0VGhlIHZhbGlkYXRvciBoYXMgYmVlbiBwYWlkIHRoZWlyIHNlbGYtc3Rha2UgaW5jZW50aXZlIGJvbnVzLmxWYWxpZGF0b3JJbmNlbnRpdmVDb25maWdTZXQMAUhvcHRpbXVtX3NlbGZfc3Rha2VZAQEwQmFsYW5jZU9mPFQ+AAFMaGFyZF9jYXBfc2VsZl9zdGFrZVkBATBCYWxhbmNlT2Y8VD4AATBzbG9wZV9mYWN0b3KhAQEcUGVyYmlsbAAaBPhWYWxpZGF0b3Igc2VsZi1zdGFrZSBpbmNlbnRpdmUgY29uZmlndXJhdGlvbiBoYXMgYmVlbiB1cGRhdGVkLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldJUJCFBwYWxsZXRfc3Rha2luZ19hc3luYxxGb3JjaW5nAAEQKE5vdEZvcmNpbmcAAAAgRm9yY2VOZXcAAQAkRm9yY2VOb25lAAIALEZvcmNlQWx3YXlzAAMAAJkJBBhSZXN1bHQIBFQBOARFATgBCAhPawQAOAAAAAAMRXJyBAA4AAABAACdCRBQcGFsbGV0X3N0YWtpbmdfYXN5bmMYcGFsbGV0GHBhbGxldDhVbmV4cGVjdGVkS2luZAQEVAABGGBFcmFEdXJhdGlvbkJvdW5kRXhjZWVkZWQAAABoVW5rbm93blZhbGlkYXRvckFjdGl2YXRpb24AAQBgUGFnZWRFbGVjdGlvbk91dE9mV2VpZ2h0DAEQcGFnZTgBJFBhZ2VJbmRleAABIHJlcXVpcmVkFQEBGFdlaWdodAABDGhhZBUBARhXZWlnaHQAAgAwTWlzc2luZ1BheWVlCAEMZXJhOAEgRXJhSW5kZXgAARRzdGFzaAQBMFQ6OkFjY291bnRJZAADAIBWYWxpZGF0b3JJbmNlbnRpdmVXZWlnaHRNaXNtYXRjaAQBDGVyYTgBIEVyYUluZGV4AAQAgFZhbGlkYXRvckluY2VudGl2ZVRyYW5zZmVyRmFpbGVkBAEMZXJhOAEgRXJhSW5kZXgABQAAoQkMfGluZGl2X3BhbGxldF9tZW1iZXJzX3N1YnNjcmliZXIYcGFsbGV0FEV2ZW50BARUAAEYUFJpbmdSb290c0luaXRpYWxpemVkCAEUY291bnQ4AQx1MzIEhE51bWJlciBvZiByaW5nIHJvb3RzIGluaXRpYWxpemVkLgEgc2VxdWVuY2UoAThTZXF1ZW5jZU51bWJlcgSwU2VxdWVuY2UgbnVtYmVyIG9mIHRoZSBpbml0aWFsaXphdGlvbiBiYXRjaC4ABMxSaW5nIHJvb3RzIGhhdmUgYmVlbiBpbml0aWFsaXplZCBmcm9tIHRoZSBub3RpZmllci5AUmluZ1Jvb3RzVXBkYXRlZAgBFGNvdW50OAEMdTMyBHBOdW1iZXIgb2YgdXBkYXRlcyBwcm9jZXNzZWQuASBzZXF1ZW5jZSgBOFNlcXVlbmNlTnVtYmVyBHRTZXF1ZW5jZSBudW1iZXIgb2YgdGhlIGJhdGNoLgEEmFJpbmcgcm9vdCB1cGRhdGVzIGhhdmUgYmVlbiBwcm9jZXNzZWQuWFN1YnNjcmlwdGlvblRlcm1pbmF0ZWQEAURub3RpZmllcl9ub3RpZmllZF0BARBib29sBNBXaGV0aGVyIHRoZSB1bnN1YnNjcmliZSBYQ00gd2FzIHN1Y2Nlc3NmdWxseSBxdWV1ZWQuAgSEU3Vic2NyaXB0aW9uIGhhcyBiZWVuIHRlcm1pbmF0ZWQuUE1pc3NpbmdSaW5nc0RldGVjdGVkCAEoaWRlbnRpZmllcggBKElkZW50aWZpZXIEbFJpbmcgY29sbGVjdGlvbiBpZGVudGlmaWVyLgEUY291bnQ4AQx1MzIEuE51bWJlciBvZiBuZXdseSBkZXRlY3RlZCBtaXNzaW5nIHJpbmcgaW5kaWNlcy4DBOBOZXcgbWlzc2luZyByaW5nIHJvb3RzIGRldGVjdGVkIGR1cmluZyBiYXRjaCBwcm9jZXNzaW5nLkRSZXBsYXlSZXF1ZXN0U2VudAgBKGlkZW50aWZpZXIIAShJZGVudGlmaWVyBGxSaW5nIGNvbGxlY3Rpb24gaWRlbnRpZmllci4BNGluZGljZXNfY291bnQ4AQx1MzIEoE51bWJlciBvZiBtaXNzaW5nIGluZGljZXMgaW4gdGhpcyBjaHVuay4EBLRSZXBsYXkgcmVxdWVzdCBzdWNjZXNzZnVsbHkgc2VudCB0byBub3RpZmllci5gRGVsZXRlZEluZGljZXNBdENhcGFjaXR5BAEoaWRlbnRpZmllcggBKElkZW50aWZpZXIEbFJpbmcgY29sbGVjdGlvbiBpZGVudGlmaWVyLgUEDQFNaXNzaW5nIHJpbmcgc2NhbiBza2lwcGVkIGJlY2F1c2UgZGVsZXRlZF9pbmRpY2VzIHJlYWNoZWQgY2FwYWNpdHkuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0pQkMbGluZGl2X3BhbGxldF9hbGlhc19hY2NvdW50cxhwYWxsZXQURXZlbnQEBFQAARA8QWxpYXNBY2NvdW50U2V0DAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZARwVGhlIGFjY291bnQgdGhhdCB3YXMgbGlua2VkLgEoY29sbGVjdGlvbggBKElkZW50aWZpZXIEaFRoZSBjb2xsZWN0aW9uIGlkZW50aWZpZXIuARRhbGlhcwgBFEFsaWFzBFRUaGUgY29udGV4dHVhbCBhbGlhcy4ABKRBbiBhbGlhcyBhY2NvdW50IGhhcyBiZWVuIHNldCBvciB1cGRhdGVkLkRBbGlhc0FjY291bnRVbnNldAQBHGFjY291bnQEATBUOjpBY2NvdW50SWQEeFRoZSBhY2NvdW50IHRoYXQgd2FzIHVubGlua2VkLgEEiEFuIGFsaWFzIGFjY291bnQgaGFzIGJlZW4gcmVtb3ZlZC5MU3RhbGVBbGlhc0NsZWFuZWRVcAwBHGFjY291bnQEATBUOjpBY2NvdW50SWQEeFRoZSBhY2NvdW50IHRoYXQgd2FzIHVubGlua2VkLgEoY29sbGVjdGlvbggBKElkZW50aWZpZXIEaFRoZSBjb2xsZWN0aW9uIGlkZW50aWZpZXIuARRhbGlhcwgBFEFsaWFzBFRUaGUgY29udGV4dHVhbCBhbGlhcy4CBJRBIHN0YWxlIGFsaWFzIG1hcHBpbmcgd2FzIGNsZWFuZWQgdXAuLEFsaWFzRmVlU2V0BAEMZmVlWQEBMEJhbGFuY2VPZjxUPgADBMRUaGUgUEdBUyBmZWUgZm9yIGFsaWFzIHJlZ2lzdHJhdGlvbnMgd2FzIGNoYW5nZWQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0qQkMRGluZGl2X3BhbGxldF9wZ2FzGHBhbGxldBRFdmVudAQEVAABDCxQZ2FzQ2xhaW1lZBQBFGFsaWFzCAEUQWxpYXMAARh0YXJnZXQEATBUOjpBY2NvdW50SWQAARhhbW91bnRZAQEhATw8VCBhcyBDb25maWc+OjpGdW5naWJsZXMgYXMgZnVuZ2libGVzOjpJbnNwZWN0PFQ6OkFjY291bnRJZD4+OjoKQmFsYW5jZQABKGNvbGxlY3Rpb24ZBAE4UGdhc0NvbGxlY3Rpb24AAQxkYXk4AQx1MzIAAAR0UEdBUyB3YXMgY2xhaW1lZCBieSBhIHBlcnNvbi5AUGdhc0Fzc2V0Q3JlYXRlZAABBGxUaGUgUEdBUyBhc3NldCB3YXMgY3JlYXRlZC5cUGdhc0NsYWltUmVjb3Jkc0NsZWFuZWQIASRkYXlfaW5kZXg4AQx1MzIAARRjb3VudDgBDHUzMgACBJxPbGQgUEdBUyBjbGFpbSByZWNvcmRzIHdlcmUgY2xlYW5lZCB1cC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXStCQw0cGFsbGV0X3Jldml2ZRhwYWxsZXQURXZlbnQEBFQAAQw8Q29udHJhY3RFbWl0dGVkDAEgY29udHJhY3Q9BwEQSDE2MASQVGhlIGNvbnRyYWN0IHRoYXQgZW1pdHRlZCB0aGUgZXZlbnQuARBkYXRhGAEcVmVjPHU4Pgg1AURhdGEgc3VwcGxpZWQgYnkgdGhlIGNvbnRyYWN0LiBNZXRhZGF0YSBnZW5lcmF0ZWQgZHVyaW5nIGNvbnRyYWN0IGNvbXBpbGF0aW9uXGlzIG5lZWRlZCB0byBkZWNvZGUgaXQuARh0b3BpY3PEASRWZWM8SDI1Nj4IpEEgbGlzdCBvZiB0b3BpY3MgdXNlZCB0byBpbmRleCB0aGUgZXZlbnQu7E51bWJlciBvZiB0b3BpY3MgaXMgY2FwcGVkIGJ5IFtgbGltaXRzOjpOVU1fRVZFTlRfVE9QSUNTYF0uAAScQSBjdXN0b20gZXZlbnQgZW1pdHRlZCBieSB0aGUgY29udHJhY3QuMEluc3RhbnRpYXRlZAgBIGRlcGxveWVyPQcBEEgxNjAAASBjb250cmFjdD0HARBIMTYwAAEE3ENvbnRyYWN0IGRlcGxveWVkIGJ5IGRlcGxveWVyIGF0IHRoZSBzcGVjaWZpZWQgYWRkcmVzcy5IRXRoRXh0cmluc2ljUmV2ZXJ0BAE4ZGlzcGF0Y2hfZXJyb3IJCAE0RGlzcGF0Y2hFcnJvcgACGLRFbWl0dGVkIHdoZW4gYW4gRXRoZXJldW0gdHJhbnNhY3Rpb24gcmV2ZXJ0cy4AKQFFdGhlcmV1bSB0cmFuc2FjdGlvbnMgYWx3YXlzIGNvbXBsZXRlIHN1Y2Nlc3NmdWxseSBhdCB0aGUgZXh0cmluc2ljIGxldmVsLNhhcyBldmVuIHJldmVydGVkIGNhbGxzIG11c3Qgc3RvcmUgdGhlaXIgYFJlY2VpcHRJbmZvYC4lAVRvIGRpc3Rpbmd1aXNoIHJldmVydGVkIGNhbGxzIGZyb20gc3VjY2Vzc2Z1bCBvbmVzLCB0aGlzIGV2ZW50IGlzIGVtaXR0ZWSEZm9yIGZhaWxlZCBFdGhlcmV1bSB0cmFuc2FjdGlvbnMuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0sQkMaGluZGl2X3BhbGxldF9kb3Ruc19nYXRld2F5GHBhbGxldBRFdmVudAQEVAABFDBOYW1lUmVzZXJ2ZWQUASRjYW5kaWRhdGUEATBUOjpBY2NvdW50SWQEmFRoZSBjYW5kaWRhdGUgd2hvc2UgbmFtZSB3YXMgcmVzZXJ2ZWQuASBhdHRlc3RlcgQBMFQ6OkFjY291bnRJZASsVGhlIGF0dGVzdGVyIHdobyBwZXJmb3JtZWQgdGhlIHJlc2VydmF0aW9uLgEobGl0ZV9sYWJlbFEHASRCYXNlTGFiZWwEuFRoZSBsaXRlLXBlcnNvbiBsYWJlbCAoYDxkbnMtc3RlbT4uPGRpZ2l0cz5gKS4BIGNoYXRfa2V5VQcBHENoYXRLZXkE5FRoZSBFQ0RIIGNoYXQga2V5IHN0b3JlZCBhbG9uZ3NpZGUgdGhlIGxpdGUtcGVyc29uIGxhYmVsLgFMcmVzZXJ2ZWRfYmFzZV9sYWJlbFkHAURPcHRpb248QmFzZUxhYmVsPgQFAVRoZSBvcHRpb25hbCBiYXNlIGxhYmVsIHJlc2VydmVkIGZvciBmdXR1cmUgZnVsbC1wZXJzb24gY2xhaW1pbmcuAATwQSB1c2VybmFtZSBoYXMgYmVlbiByZXNlcnZlZCBmb3IgYSBjYW5kaWRhdGUgYnkgYW4gYXR0ZXN0ZXIuOE5hbWVSZWdpc3RlcmVkEAEUYWxpYXMIARRBbGlhcwSYVGhlIGFsaWFzIGRlcml2ZWQgZnJvbSB0aGUgcmluZyBwcm9vZi4BHGFjY291bnQEATBUOjpBY2NvdW50SWQEsFRoZSBhY2NvdW50IHRoYXQgaW5pdGlhdGVkIHRoZSByZWdpc3RyYXRpb24uARRsYWJlbFEHASRCYXNlTGFiZWwEhFRoZSByZWdpc3RlcmVkIGZ1bGwtcGVyc29uIGxhYmVsLgEQbGlua10HARBMaW5rBORIb3cgdGhlIGZ1bGwtcGVyc29uIGxhYmVsIHJlbGF0ZXMgdG8gYSBsaXRlLXBlcnNvbiBsYWJlbC4BBNBBIHVzZXJuYW1lIGhhcyBiZWVuIHJlZ2lzdGVyZWQgYnkgYSB2ZXJpZmllZCBwZXJzb24udEF0dGVzdGF0aW9uQWxsb3dhbmNlSW5jcmVhc2VkCAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZARUVGhlIGF0dGVzdGVyIGFjY291bnQuARRjb3VudDgBDHUzMgSEVGhlIG51bWJlciBvZiBhdHRlc3RhdGlvbnMgYWRkZWQuAgTMQXR0ZXN0YXRpb24gYWxsb3dhbmNlIHdhcyBpbmNyZWFzZWQgZm9yIGFuIGFjY291bnQueEFsbEF0dGVzdGF0aW9uQWxsb3dhbmNlQ2xlYXJlZAQBIGF0dGVzdGVyBAEwVDo6QWNjb3VudElkBFRUaGUgYXR0ZXN0ZXIgYWNjb3VudC4DBPBBbGwgYXR0ZXN0YXRpb24gYWxsb3dhbmNlIGhhcyBiZWVuIHJlbW92ZWQgZm9yIHRoZSBhdHRlc3Rlci5QRGlzcGF0Y2hlckFkZHJlc3NTZXQEARxhZGRyZXNzPQcBEEgxNjAEZFRoZSBuZXcgY29udHJhY3QgYWRkcmVzcy4EBNRUaGUgYFJvb3RHYXRld2F5RGlzcGF0Y2hlcmAgY29udHJhY3QgYWRkcmVzcyB3YXMgc2V0LgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldLUJDHxpbmRpdl9wYWxsZXRfb3JpZ2luX3Jlc3RyaWN0aW9uGHBhbGxldBRFdmVudAQEVAABBDBVc2FnZUNsZWFuZWQEARhlbnRpdHllBwFMVDo6UmVzdHJpY3RlZEVudGl0eQAABHxVc2FnZSBmb3IgYW4gZW50aXR5IGlzIGNsZWFuZWQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0uQkMLHBhbGxldF9zdWRvGHBhbGxldBRFdmVudAQEVAABEBRTdWRpZAQBLHN1ZG9fcmVzdWx0LQgBOERpc3BhdGNoUmVzdWx0BLRUaGUgcmVzdWx0IG9mIHRoZSBjYWxsIG1hZGUgYnkgdGhlIHN1ZG8gdXNlci4ABHBBIHN1ZG8gY2FsbCBqdXN0IHRvb2sgcGxhY2UuKEtleUNoYW5nZWQIAQxvbGSRAQFQT3B0aW9uPFQ6OkFjY291bnRJZD4EtFRoZSBvbGQgc3VkbyBrZXkgKGlmIG9uZSB3YXMgcHJldmlvdXNseSBzZXQpLgEMbmV3BAEwVDo6QWNjb3VudElkBIhUaGUgbmV3IHN1ZG8ga2V5IChpZiBvbmUgd2FzIHNldCkuAQR4VGhlIHN1ZG8ga2V5IGhhcyBiZWVuIHVwZGF0ZWQuKEtleVJlbW92ZWQAAgSAVGhlIGtleSB3YXMgcGVybWFuZW50bHkgcmVtb3ZlZC4oU3Vkb0FzRG9uZQQBLHN1ZG9fcmVzdWx0LQgBOERpc3BhdGNoUmVzdWx0BLRUaGUgcmVzdWx0IG9mIHRoZSBjYWxsIG1hZGUgYnkgdGhlIHN1ZG8gdXNlci4DBMhBIFtzdWRvX2FzXShQYWxsZXQ6OnN1ZG9fYXMpIGNhbGwganVzdCB0b29rIHBsYWNlLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldL0JDFRwYWxsZXRfcGdhc19hbGxvd2FuY2UYcGFsbGV0FEV2ZW50BARUAAEELFBHQVNGZWVQYWlkCAEMd2hvBAEwVDo6QWNjb3VudElkAAEoYWN0dWFsX2ZlZVkBATBCYWxhbmNlT2Y8VD4AAAhFAUEgdHJhbnNhY3Rpb24gZmVlIGBhY3R1YWxfZmVlYCBoYXMgYmVlbiBwYWlkIGJ5IGB3aG9gIGluIFBHQVMgYW5kIGJ1cm5lZC4gTWlycm9yc+hbYHBhbGxldF90cmFuc2FjdGlvbl9wYXltZW50OjpFdmVudDo6VHJhbnNhY3Rpb25GZWVQYWlkYF0uBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0wQkMNHBhbGxldF9haF9vcHMYcGFsbGV0FEV2ZW50BARUAAEQXExlYXNlVW5yZXNlcnZlUmVtYWluaW5nDAEkZGVwb3NpdG9yBAEwVDo6QWNjb3VudElkAAEccGFyYV9pZKABGFBhcmFJZAABJHJlbWFpbmluZ1kBATBCYWxhbmNlT2Y8VD4AAAQRAVNvbWUgbGVhc2UgcmVzZXJ2ZSBjb3VsZCBub3QgYmUgdW5yZXNlcnZlZCBhbmQgbmVlZHMgbWFudWFsIGNsZWFudXAubENyb3dkbG9hblVucmVzZXJ2ZVJlbWFpbmluZwwBJGRlcG9zaXRvcgQBMFQ6OkFjY291bnRJZAABHHBhcmFfaWSgARhQYXJhSWQAASRyZW1haW5pbmdZAQEwQmFsYW5jZU9mPFQ+AAEEVQFTb21lIGFtb3VudCBmb3IgYSBjcm93ZGxvYW4gcmVzZXJ2ZSBjb3VsZCBub3QgYmUgdW5yZXNlcnZlZCBhbmQgbmVlZHMgbWFudWFsIGNsZWFudXAuRFNvdmVyZWlnbk1pZ3JhdGVkEAEccGFyYV9pZO0DAQx1MTYEvFRoZSBwYXJhY2hhaW4gSUQgdGhhdCBoYWQgaXRzIGFjY291bnQgbWlncmF0ZWQuARBmcm9tBAEwVDo6QWNjb3VudElkBKRUaGUgb2xkIGFjY291bnQgdGhhdCB3YXMgbWlncmF0ZWQgb3V0IG9mLgEIdG8EATBUOjpBY2NvdW50SWQEnFRoZSBuZXcgYWNjb3VudCB0aGF0IHdhcyBtaWdyYXRlZCBpbnRvLgE8ZGVyaXZhdGlvbl9wYXRocQcBIFZlYzx1MTY+BOxUaGUgZGVyaXZhdGlvbiBwYXRoIHRoYXQgd2FzIHVzZWQgdG8gdHJhbnNsYXRlIHRoZSBhY2NvdW50LgIIJQFBIHNvdmVyZWlnbiBwYXJhY2hhaW4gYWNjb3VudCBoYXMgYmVlbiBtaWdyYXRlZCBmcm9tIGl0cyBjaGlsZCB0byBzaWJsaW5nPHJlcHJlc2VudGF0aW9uLjBGYWlsZWRUb0JvbmQIARxhY2NvdW50BAEwVDo6QWNjb3VudElkAAEYYW1vdW50WQEBMEJhbGFuY2VPZjxUPgADBJhGYWlsZWQgdG8gcmUtYm9uZCBzb21lIG1pZ3JhdGVkIGZ1bmRzLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldMUJCDBmcmFtZV9zeXN0ZW0UUGhhc2UAAQw4QXBwbHlFeHRyaW5zaWMEADgBDHUzMgAAADBGaW5hbGl6YXRpb24AAQA4SW5pdGlhbGl6YXRpb24AAgAAyQkAAALQAM0JCDBmcmFtZV9zeXN0ZW1YTGFzdFJ1bnRpbWVVcGdyYWRlSW5mbwAACAEwc3BlY192ZXJzaW9uZAFMY29kZWM6OkNvbXBhY3Q8dTMyPgABJHNwZWNfbmFtZdEJAURDb3c8J3N0YXRpYywgc3RyPgAA0QkEDENvdwQEVAHVCQAEANUJAAAA1QkAAAUCANkJCDBmcmFtZV9zeXN0ZW1gQ29kZVVwZ3JhZGVBdXRob3JpemF0aW9uBARUAAAIASRjb2RlX2hhc2hAARxUOjpIYXNoAAE0Y2hlY2tfdmVyc2lvbl0BARBib29sAADdCQwwZnJhbWVfc3lzdGVtGGxpbWl0czBCbG9ja1dlaWdodHMAAAwBKGJhc2VfYmxvY2sVAQEYV2VpZ2h0AAEkbWF4X2Jsb2NrFQEBGFdlaWdodAABJHBlcl9jbGFzc+EJAYRQZXJEaXNwYXRjaENsYXNzPFdlaWdodHNQZXJDbGFzcz4AAOEJDDRmcmFtZV9zdXBwb3J0IGRpc3BhdGNoQFBlckRpc3BhdGNoQ2xhc3MEBFQB5QkADAEYbm9ybWFs5QkBBFQAASxvcGVyYXRpb25hbOUJAQRUAAEkbWFuZGF0b3J55QkBBFQAAOUJDDBmcmFtZV9zeXN0ZW0YbGltaXRzPFdlaWdodHNQZXJDbGFzcwAAEAE4YmFzZV9leHRyaW5zaWMVAQEYV2VpZ2h0AAE0bWF4X2V4dHJpbnNpYxEBAThPcHRpb248V2VpZ2h0PgABJG1heF90b3RhbBEBAThPcHRpb248V2VpZ2h0PgABIHJlc2VydmVkEQEBOE9wdGlvbjxXZWlnaHQ+AADpCQwwZnJhbWVfc3lzdGVtGGxpbWl0cyxCbG9ja0xlbmd0aAAACAEMbWF47QkBVFBlckRpc3BhdGNoQ2xhc3M8dTMyPgABPG1heF9oZWFkZXJfc2l6ZeQBLE9wdGlvbjx1MzI+AADtCQw0ZnJhbWVfc3VwcG9ydCBkaXNwYXRjaEBQZXJEaXNwYXRjaENsYXNzBARUATgADAEYbm9ybWFsOAEEVAABLG9wZXJhdGlvbmFsOAEEVAABJG1hbmRhdG9yeTgBBFQAAPEJCChzcF93ZWlnaHRzPFJ1bnRpbWVEYldlaWdodAAACAEQcmVhZCgBDHU2NAABFHdyaXRlKAEMdTY0AAD1CQgoc3BfdmVyc2lvbjhSdW50aW1lVmVyc2lvbgAAIAEkc3BlY19uYW1l0QkBRENvdzwnc3RhdGljLCBzdHI+AAEkaW1wbF9uYW1l0QkBRENvdzwnc3RhdGljLCBzdHI+AAFEYXV0aG9yaW5nX3ZlcnNpb244AQx1MzIAATBzcGVjX3ZlcnNpb244AQx1MzIAATBpbXBsX3ZlcnNpb244AQx1MzIAARBhcGlz+QkBHEFwaXNWZWMAAUx0cmFuc2FjdGlvbl92ZXJzaW9uOAEMdTMyAAE4c3lzdGVtX3ZlcnNpb24MAQh1OAAA+QkEDENvdwQEVAH9CQAEAP0JAAAA/QkAAAIBCgABCgAABAh5AjgABQoMMGZyYW1lX3N5c3RlbRhwYWxsZXQURXJyb3IEBFQAASw8SW52YWxpZFNwZWNOYW1lAAAIEQFUaGUgbmFtZSBvZiBzcGVjaWZpY2F0aW9uIGRvZXMgbm90IG1hdGNoIGJldHdlZW4gdGhlIGN1cnJlbnQgcnVudGltZVBhbmQgdGhlIG5ldyBydW50aW1lLmhTcGVjVmVyc2lvbk5lZWRzVG9JbmNyZWFzZQABCEEBVGhlIHNwZWNpZmljYXRpb24gdmVyc2lvbiBpcyBub3QgYWxsb3dlZCB0byBkZWNyZWFzZSBiZXR3ZWVuIHRoZSBjdXJyZW50IHJ1bnRpbWVQYW5kIHRoZSBuZXcgcnVudGltZS50RmFpbGVkVG9FeHRyYWN0UnVudGltZVZlcnNpb24AAgzsRmFpbGVkIHRvIGV4dHJhY3QgdGhlIHJ1bnRpbWUgdmVyc2lvbiBmcm9tIHRoZSBuZXcgcnVudGltZS4ACQFFaXRoZXIgY2FsbGluZyBgQ29yZV92ZXJzaW9uYCBvciBkZWNvZGluZyBgUnVudGltZVZlcnNpb25gIGZhaWxlZC5MTm9uRGVmYXVsdENvbXBvc2l0ZQADBPxTdWljaWRlIGNhbGxlZCB3aGVuIHRoZSBhY2NvdW50IGhhcyBub24tZGVmYXVsdCBjb21wb3NpdGUgZGF0YS48Tm9uWmVyb1JlZkNvdW50AAQENQFUaGVyZSBpcyBhIG5vbi16ZXJvIHJlZmVyZW5jZSBjb3VudCBwcmV2ZW50aW5nIHRoZSBhY2NvdW50IGZyb20gYmVpbmcgcHVyZ2VkLjBDYWxsRmlsdGVyZWQABQTQVGhlIG9yaWdpbiBmaWx0ZXIgcHJldmVudCB0aGUgY2FsbCB0byBiZSBkaXNwYXRjaGVkLmxNdWx0aUJsb2NrTWlncmF0aW9uc09uZ29pbmcABgRVAUEgbXVsdGktYmxvY2sgbWlncmF0aW9uIGlzIG9uZ29pbmcgYW5kIHByZXZlbnRzIHRoZSBjdXJyZW50IGNvZGUgZnJvbSBiZWluZyByZXBsYWNlZC4sSW52YWxpZFRhc2sABwSQVGhlIHNwZWNpZmllZCBbYFRhc2tgXSBpcyBub3QgdmFsaWQuKEZhaWxlZFRhc2sACAS8VGhlIHNwZWNpZmllZCBbYFRhc2tgXSBmYWlsZWQgZHVyaW5nIGV4ZWN1dGlvbi5ETm90aGluZ0F1dGhvcml6ZWQACQRYTm8gdXBncmFkZSBhdXRob3JpemVkLjBVbmF1dGhvcml6ZWQACgSUVGhlIHN1Ym1pdHRlZCBjb2RlIGlzIG5vdCBhdXRob3JpemVkLgRsRXJyb3IgZm9yIHRoZSBTeXN0ZW0gcGFsbGV0CQoQKHNwX3J1bnRpbWUcZ2VuZXJpYxRibG9jaxRCbG9jawgYSGVhZGVyAWAkRXh0cmluc2ljAQ0KAAgBGGhlYWRlcmABGEhlYWRlcgABKGV4dHJpbnNpY3MhCgE4VmVjPEV4dHJpbnNpYz4AAA0KEChzcF9ydW50aW1lHGdlbmVyaWNMdW5jaGVja2VkX2V4dHJpbnNpY0hVbmNoZWNrZWRFeHRyaW5zaWMQHEFkZHJlc3MBABBDYWxsASAkU2lnbmF0dXJlAb0EFEV4dHJhAREKAAQAGAAAABEKCHRjdW11bHVzX3BhbGxldF93ZWlnaHRfcmVjbGFpbVBTdG9yYWdlV2VpZ2h0UmVjbGFpbQgEVAAEUwEVCgAEABUKAQRTAAAVCgAABCwZCqUHqQetB7EHtQe5B8EHxQfJBx0KABkKAAAEFHUHfQeBB40HmQcAHQoAAAQMzQfRB9kHACEKAAACDQoAJQoMfGN1bXVsdXNfcGFsbGV0X3BhcmFjaGFpbl9zeXN0ZW0wYmxvY2tfd2VpZ2h0PEJsb2NrV2VpZ2h0TW9kZQQEVAABDCBGdWxsQ29yZQQBHGNvbnRleHQ4AURCbG9ja051bWJlckZvcjxUPgAAAERQb3RlbnRpYWxGdWxsQ29yZQwBHGNvbnRleHQ4AURCbG9ja051bWJlckZvcjxUPgABXGZpcnN0X3RyYW5zYWN0aW9uX2luZGV45AEsT3B0aW9uPHUzMj4AATR0YXJnZXRfd2VpZ2h0FQEBGFdlaWdodAABADhGcmFjdGlvbk9mQ29yZQgBHGNvbnRleHQ4AURCbG9ja051bWJlckZvcjxUPgABXGZpcnN0X3RyYW5zYWN0aW9uX2luZGV45AEsT3B0aW9uPHUzMj4AAgAAKQoAAAItCgAtCgx8Y3VtdWx1c19wYWxsZXRfcGFyYWNoYWluX3N5c3RlbUh1bmluY2x1ZGVkX3NlZ21lbnQgQW5jZXN0b3IEBEgBQAAMATh1c2VkX2JhbmR3aWR0aDEKATRVc2VkQmFuZHdpZHRoAAE4cGFyYV9oZWFkX2hhc2gVBQEkT3B0aW9uPEg+AAFgY29uc3VtZWRfZ29fYWhlYWRfc2lnbmFsRQoBjE9wdGlvbjxyZWxheV9jaGFpbjo6VXBncmFkZUdvQWhlYWQ+AAAxCgx8Y3VtdWx1c19wYWxsZXRfcGFyYWNoYWluX3N5c3RlbUh1bmluY2x1ZGVkX3NlZ21lbnQ0VXNlZEJhbmR3aWR0aAAADAE0dW1wX21zZ19jb3VudDgBDHUzMgABPHVtcF90b3RhbF9ieXRlczgBDHUzMgABNGhybXBfb3V0Z29pbmc1CgGMQlRyZWVNYXA8UGFyYUlkLCBIcm1wQ2hhbm5lbFVwZGF0ZT4AADUKBCBCVHJlZU1hcAgESwGgBFYBOQoABAA9CgAAADkKDHxjdW11bHVzX3BhbGxldF9wYXJhY2hhaW5fc3lzdGVtSHVuaW5jbHVkZWRfc2VnbWVudERIcm1wQ2hhbm5lbFVwZGF0ZQAACAEkbXNnX2NvdW50OAEMdTMyAAEsdG90YWxfYnl0ZXM4AQx1MzIAAD0KAAACQQoAQQoAAAQIoDkKAEUKBBhPcHRpb24EBFQBSQoBCBBOb25lAAAAEFNvbWUEAEkKAAABAABJCgxMcG9sa2Fkb3RfcHJpbWl0aXZlcwh2OThVcGdyYWRlR29BaGVhZAABCBRBYm9ydAAAABxHb0FoZWFkAAEAAE0KDHxjdW11bHVzX3BhbGxldF9wYXJhY2hhaW5fc3lzdGVtSHVuaW5jbHVkZWRfc2VnbWVudDhTZWdtZW50VHJhY2tlcgQESAFAAAwBOHVzZWRfYmFuZHdpZHRoMQoBNFVzZWRCYW5kd2lkdGgAAThocm1wX3dhdGVybWFya+QBgE9wdGlvbjxyZWxheV9jaGFpbjo6QmxvY2tOdW1iZXI+AAFgY29uc3VtZWRfZ29fYWhlYWRfc2lnbmFsRQoBjE9wdGlvbjxyZWxheV9jaGFpbjo6VXBncmFkZUdvQWhlYWQ+AABRCgQYT3B0aW9uBARUAVUKAQgQTm9uZQAAABBTb21lBABVCgAAAQAAVQoMTHBvbGthZG90X3ByaW1pdGl2ZXMIdjlIVXBncmFkZVJlc3RyaWN0aW9uAAEEHFByZXNlbnQAAAAAWQoMfGN1bXVsdXNfcGFsbGV0X3BhcmFjaGFpbl9zeXN0ZW1QcmVsYXlfc3RhdGVfc25hcHNob3RYTWVzc2FnaW5nU3RhdGVTbmFwc2hvdAAAEAEwZG1xX21xY19oZWFkQAFEcmVsYXlfY2hhaW46Okhhc2gAAZxyZWxheV9kaXNwYXRjaF9xdWV1ZV9yZW1haW5pbmdfY2FwYWNpdHldCgGMUmVsYXlEaXNwYXRjaFF1ZXVlUmVtYWluaW5nQ2FwYWNpdHkAAUBpbmdyZXNzX2NoYW5uZWxzYQoBiFZlYzwoUGFyYUlkLCBBYnJpZGdlZEhybXBDaGFubmVsKT4AATxlZ3Jlc3NfY2hhbm5lbHNhCgGIVmVjPChQYXJhSWQsIEFicmlkZ2VkSHJtcENoYW5uZWwpPgAAXQoMfGN1bXVsdXNfcGFsbGV0X3BhcmFjaGFpbl9zeXN0ZW1QcmVsYXlfc3RhdGVfc25hcHNob3SMUmVsYXlEaXNwYXRjaFF1ZXVlUmVtYWluaW5nQ2FwYWNpdHkAAAgBPHJlbWFpbmluZ19jb3VudDgBDHUzMgABOHJlbWFpbmluZ19zaXplOAEMdTMyAABhCgAAAmUKAGUKAAAECKBpCgBpCgxMcG9sa2Fkb3RfcHJpbWl0aXZlcwh2OUxBYnJpZGdlZEhybXBDaGFubmVsAAAYATBtYXhfY2FwYWNpdHk4AQx1MzIAAThtYXhfdG90YWxfc2l6ZTgBDHUzMgABQG1heF9tZXNzYWdlX3NpemU4AQx1MzIAASRtc2dfY291bnQ4AQx1MzIAASh0b3RhbF9zaXplOAEMdTMyAAEgbXFjX2hlYWQVBQEwT3B0aW9uPEhhc2g+AABtCgxMcG9sa2Fkb3RfcHJpbWl0aXZlcwh2OWRBYnJpZGdlZEhvc3RDb25maWd1cmF0aW9uAAAoATRtYXhfY29kZV9zaXplOAEMdTMyAAFIbWF4X2hlYWRfZGF0YV9zaXplOAEMdTMyAAFYbWF4X3Vwd2FyZF9xdWV1ZV9jb3VudDgBDHUzMgABVG1heF91cHdhcmRfcXVldWVfc2l6ZTgBDHUzMgABXG1heF91cHdhcmRfbWVzc2FnZV9zaXplOAEMdTMyAAGQbWF4X3Vwd2FyZF9tZXNzYWdlX251bV9wZXJfY2FuZGlkYXRlOAEMdTMyAAGIaHJtcF9tYXhfbWVzc2FnZV9udW1fcGVyX2NhbmRpZGF0ZTgBDHUzMgABbHZhbGlkYXRpb25fdXBncmFkZV9jb29sZG93bjgBLEJsb2NrTnVtYmVyAAFgdmFsaWRhdGlvbl91cGdyYWRlX2RlbGF5OAEsQmxvY2tOdW1iZXIAAVBhc3luY19iYWNraW5nX3BhcmFtc3EKAUhBc3luY0JhY2tpbmdQYXJhbXMAAHEKEExwb2xrYWRvdF9wcmltaXRpdmVzCHY5NGFzeW5jX2JhY2tpbmdIQXN5bmNCYWNraW5nUGFyYW1zAAAIAUxtYXhfY2FuZGlkYXRlX2RlcHRoOAEMdTMyAAFQYWxsb3dlZF9hbmNlc3RyeV9sZW44AQx1MzIAAHUKCJRjdW11bHVzX3ByaW1pdGl2ZXNfcGFyYWNoYWluX2luaGVyZW50RE1lc3NhZ2VRdWV1ZUNoYWluAAAEAEABJFJlbGF5SGFzaAAAeQoEIEJUcmVlTWFwCARLAaAEVgF1CgAEAH0KAAAAfQoAAAKBCgCBCgAABAigdQoAhQoMfGN1bXVsdXNfcGFsbGV0X3BhcmFjaGFpbl9zeXN0ZW1IcGFyYWNoYWluX2luaGVyZW50QEluYm91bmRNZXNzYWdlSWQAAAgBHHNlbnRfYXQ4ASxCbG9ja051bWJlcgABLHJldmVyc2VfaWR4OAEMdTMyAACJCgAAAo0KAI0KCGBwb2xrYWRvdF9jb3JlX3ByaW1pdGl2ZXNMT3V0Ym91bmRIcm1wTWVzc2FnZQQISWQBoAAIASRyZWNpcGllbnSgAQhJZAABEGRhdGEYAUxhbGxvYzo6dmVjOjpWZWM8dTg+AACRCgh8Y3VtdWx1c19wYWxsZXRfcGFyYWNoYWluX3N5c3RlbSxQb1ZNZXNzYWdlcwAAGAFocmVsYXlfc3RvcmFnZV9yb290X29yX2hhc2hAAURyZWxheV9jaGFpbjo6SGFzaAABNGNvcmVfc2VsZWN0b3IMAQh1OAABMGJ1bmRsZV9pbmRleAwBCHU4AAE0dW1wX21zZ19jb3VudDgBDHUzMgABTGhybXBfb3V0Ym91bmRfY291bnQ4AQx1MzIAAWBocm1wX291dGJvdW5kX3JlY2lwaWVudHOVCgEsVmVjPFBhcmFJZD4AAJUKAAACoACZCgx8Y3VtdWx1c19wYWxsZXRfcGFyYWNoYWluX3N5c3RlbRhwYWxsZXQURXJyb3IEBFQAARhMT3ZlcmxhcHBpbmdVcGdyYWRlcwAABBkBQXR0ZW1wdCB0byB1cGdyYWRlIHZhbGlkYXRpb24gZnVuY3Rpb24gd2hpbGUgZXhpc3RpbmcgdXBncmFkZSBwZW5kaW5nLlBQcm9oaWJpdGVkQnlQb2xrYWRvdAABBE0BUG9sa2Fkb3QgY3VycmVudGx5IHByb2hpYml0cyB0aGlzIHBhcmFjaGFpbiBmcm9tIHVwZ3JhZGluZyBpdHMgdmFsaWRhdGlvbiBmdW5jdGlvbi4YVG9vQmlnAAIIRQFUaGUgc3VwcGxpZWQgdmFsaWRhdGlvbiBmdW5jdGlvbiBoYXMgY29tcGlsZWQgaW50byBhIGJsb2IgbGFyZ2VyIHRoYW4gUG9sa2Fkb3QgaXM8d2lsbGluZyB0byBydW4uaFZhbGlkYXRpb25EYXRhTm90QXZhaWxhYmxlAAMEHQFUaGUgaW5oZXJlbnQgd2hpY2ggc3VwcGxpZXMgdGhlIHZhbGlkYXRpb24gZGF0YSBkaWQgbm90IHJ1biB0aGlzIGJsb2NrLnRIb3N0Q29uZmlndXJhdGlvbk5vdEF2YWlsYWJsZQAEBCkBVGhlIGluaGVyZW50IHdoaWNoIHN1cHBsaWVzIHRoZSBob3N0IGNvbmZpZ3VyYXRpb24gZGlkIG5vdCBydW4gdGhpcyBibG9jay4wTm90U2NoZWR1bGVkAAUE2E5vIHZhbGlkYXRpb24gZnVuY3Rpb24gdXBncmFkZSBpcyBjdXJyZW50bHkgc2NoZWR1bGVkLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC6dCgg8cGFsbGV0X3ByZWltYWdlQE9sZFJlcXVlc3RTdGF0dXMIJEFjY291bnRJZAEEHEJhbGFuY2UBWQEBCCxVbnJlcXVlc3RlZAgBHGRlcG9zaXTJBQFQKEFjY291bnRJZCwgQmFsYW5jZSkAAQxsZW44AQx1MzIAAAAkUmVxdWVzdGVkDAEcZGVwb3NpdKEKAXBPcHRpb248KEFjY291bnRJZCwgQmFsYW5jZSk+AAEUY291bnQ4AQx1MzIAAQxsZW7kASxPcHRpb248dTMyPgABAAChCgQYT3B0aW9uBARUAckFAQgQTm9uZQAAABBTb21lBADJBQAAAQAApQoIPHBhbGxldF9wcmVpbWFnZTRSZXF1ZXN0U3RhdHVzCCRBY2NvdW50SWQBBBhUaWNrZXQBqQoBCCxVbnJlcXVlc3RlZAgBGHRpY2tldK0KAUwoQWNjb3VudElkLCBUaWNrZXQpAAEMbGVuOAEMdTMyAAAAJFJlcXVlc3RlZAwBMG1heWJlX3RpY2tldLEKAWxPcHRpb248KEFjY291bnRJZCwgVGlja2V0KT4AARRjb3VudDgBDHUzMgABJG1heWJlX2xlbuQBLE9wdGlvbjx1MzI+AAEAAKkKFDRmcmFtZV9zdXBwb3J0GHRyYWl0cxh0b2tlbnMgZnVuZ2libGVESG9sZENvbnNpZGVyYXRpb24UBEEABEYABFIABEQACEZwAAAEAFkBAShGOjpCYWxhbmNlAACtCgAABAgEqQoAsQoEGE9wdGlvbgQEVAGtCgEIEE5vbmUAAAAQU29tZQQArQoAAAEAALUKAAAECEA4ALkKDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBDARTAAAEABgBGFZlYzxUPgAAvQoMPHBhbGxldF9wcmVpbWFnZRhwYWxsZXQURXJyb3IEBFQAASAYVG9vQmlnAAAEoFByZWltYWdlIGlzIHRvbyBsYXJnZSB0byBzdG9yZSBvbi1jaGFpbi4wQWxyZWFkeU5vdGVkAAEEpFByZWltYWdlIGhhcyBhbHJlYWR5IGJlZW4gbm90ZWQgb24tY2hhaW4uNE5vdEF1dGhvcml6ZWQAAgTIVGhlIHVzZXIgaXMgbm90IGF1dGhvcml6ZWQgdG8gcGVyZm9ybSB0aGlzIGFjdGlvbi4gTm90Tm90ZWQAAwT8VGhlIHByZWltYWdlIGNhbm5vdCBiZSByZW1vdmVkIHNpbmNlIGl0IGhhcyBub3QgeWV0IGJlZW4gbm90ZWQuJFJlcXVlc3RlZAAEBAkBQSBwcmVpbWFnZSBtYXkgbm90IGJlIHJlbW92ZWQgd2hlbiB0aGVyZSBhcmUgb3V0c3RhbmRpbmcgcmVxdWVzdHMuME5vdFJlcXVlc3RlZAAFBC0BVGhlIHByZWltYWdlIHJlcXVlc3QgY2Fubm90IGJlIHJlbW92ZWQgc2luY2Ugbm8gb3V0c3RhbmRpbmcgcmVxdWVzdHMgZXhpc3QuHFRvb01hbnkABgRVAU1vcmUgdGhhbiBgTUFYX0hBU0hfVVBHUkFERV9CVUxLX0NPVU5UYCBoYXNoZXMgd2VyZSByZXF1ZXN0ZWQgdG8gYmUgdXBncmFkZWQgYXQgb25jZS4YVG9vRmV3AAcE5FRvbyBmZXcgaGFzaGVzIHdlcmUgcmVxdWVzdGVkIHRvIGJlIHVwZ3JhZGVkIChpLmUuIHplcm8pLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC7BCgxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAcUKBFMAAAQAzQoBGFZlYzxUPgAAxQoEGE9wdGlvbgQEVAHJCgEIEE5vbmUAAAAQU29tZQQAyQoAAAEAAMkKCEBwYWxsZXRfc2NoZWR1bGVyJFNjaGVkdWxlZBQQTmFtZQEIEENhbGwBCQUsQmxvY2tOdW1iZXIBODRQYWxsZXRzT3JpZ2luAfEDJEFjY291bnRJZAEEABQBIG1heWJlX2lkQQcBME9wdGlvbjxOYW1lPgABIHByaW9yaXR5DAFIc2NoZWR1bGU6OlByaW9yaXR5AAEQY2FsbAkFARBDYWxsAAE4bWF5YmVfcGVyaW9kaWPMAZRPcHRpb248c2NoZWR1bGU6OlBlcmlvZDxCbG9ja051bWJlcj4+AAEYb3JpZ2lu8QMBNFBhbGxldHNPcmlnaW4AAM0KAAACxQoA0QoIQHBhbGxldF9zY2hlZHVsZXIsUmV0cnlDb25maWcEGFBlcmlvZAE4AAwBNHRvdGFsX3JldHJpZXMMAQh1OAABJHJlbWFpbmluZwwBCHU4AAEYcGVyaW9kOAEYUGVyaW9kAADVCgxAcGFsbGV0X3NjaGVkdWxlchhwYWxsZXQURXJyb3IEBFQAARRARmFpbGVkVG9TY2hlZHVsZQAABGRGYWlsZWQgdG8gc2NoZWR1bGUgYSBjYWxsIE5vdEZvdW5kAAEEfENhbm5vdCBmaW5kIHRoZSBzY2hlZHVsZWQgY2FsbC5cVGFyZ2V0QmxvY2tOdW1iZXJJblBhc3QAAgSkR2l2ZW4gdGFyZ2V0IGJsb2NrIG51bWJlciBpcyBpbiB0aGUgcGFzdC5IUmVzY2hlZHVsZU5vQ2hhbmdlAAME8FJlc2NoZWR1bGUgZmFpbGVkIGJlY2F1c2UgaXQgZG9lcyBub3QgY2hhbmdlIHNjaGVkdWxlZCB0aW1lLhROYW1lZAAEBNBBdHRlbXB0IHRvIHVzZSBhIG5vbi1uYW1lZCBmdW5jdGlvbiBvbiBhIG5hbWVkIHRhc2suBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LtkKDERwYWxsZXRfbWlncmF0aW9ucxhwYWxsZXQURXJyb3IEBFQAAQQcT25nb2luZwAABOhUaGUgb3BlcmF0aW9uIGNhbm5vdCBjb21wbGV0ZSBzaW5jZSBzb21lIE1CTXMgYXJlIG9uZ29pbmcuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0Lt0KCERwYWxsZXRfbWlncmF0aW9uczBNYm1Jc09uZ29pbmcAAQwMWWVzAAAACE5vAAEAFFN0dWNrAAIAAOEKBBhPcHRpb24EBFQB5QoBCBBOb25lAAAAEFNvbWUEAOUKAAABAADlCghEcGFsbGV0X21pZ3JhdGlvbnMsTWJtUHJvZ3Jlc3MAABABRGN1cnJlbnRfbWlncmF0aW9uOAEMdTMyAAFAdG90YWxfbWlncmF0aW9uczgBDHUzMgABXGN1cnJlbnRfbWlncmF0aW9uX3N0ZXBzOAEMdTMyAAFsY3VycmVudF9taWdyYXRpb25fbWF4X3N0ZXBz5AEsT3B0aW9uPHUzMj4AAOkKCERwYWxsZXRfbWlncmF0aW9ucyRNYm1TdGF0dXMAAAwBHG9uZ29pbmfdCgEwTWJtSXNPbmdvaW5nAAEgcHJvZ3Jlc3PhCgFMT3B0aW9uPE1ibVByb2dyZXNzPgABIHByZWZpeGVzNAEwVmVjPFZlYzx1OD4+AADtCgxMYm91bmRlZF9jb2xsZWN0aW9uc0B3ZWFrX2JvdW5kZWRfdmVjOFdlYWtCb3VuZGVkVmVjCARUAfEKBFMAAAQA+QoBGFZlYzxUPgAA8QoMPHBhbGxldF9iYWxhbmNlcxR0eXBlcyxCYWxhbmNlTG9jawQcQmFsYW5jZQFZAQAMAQhpZHkCAThMb2NrSWRlbnRpZmllcgABGGFtb3VudFkBARxCYWxhbmNlAAEccmVhc29uc/UKARxSZWFzb25zAAD1Cgw8cGFsbGV0X2JhbGFuY2VzFHR5cGVzHFJlYXNvbnMAAQwMRmVlAAAAEE1pc2MAAQAMQWxsAAIAAPkKAAAC8QoA/QoMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEBCwRTAAAEAAULARhWZWM8VD4AAAELDDxwYWxsZXRfYmFsYW5jZXMUdHlwZXMsUmVzZXJ2ZURhdGEIRFJlc2VydmVJZGVudGlmaWVyAXkCHEJhbGFuY2UBWQEACAEIaWR5AgFEUmVzZXJ2ZUlkZW50aWZpZXIAARhhbW91bnRZAQEcQmFsYW5jZQAABQsAAAIBCwAJCwxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQ0LBFMAAAQAEQsBGFZlYzxUPgAADQsUNGZyYW1lX3N1cHBvcnQYdHJhaXRzGHRva2VucxBtaXNjIElkQW1vdW50CAhJZAFlCBxCYWxhbmNlAVkBAAgBCGlkZQgBCElkAAEYYW1vdW50WQEBHEJhbGFuY2UAABELAAACDQsAFQsMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEZCwRTAAAEACkLARhWZWM8VD4AABkLFDRmcmFtZV9zdXBwb3J0GHRyYWl0cxh0b2tlbnMQbWlzYyBJZEFtb3VudAgISWQBHQscQmFsYW5jZQFZAQAIAQhpZB0LAQhJZAABGGFtb3VudFkBARxCYWxhbmNlAAAdCwhcYXNzZXRfaHViX3Bhc2VvX3J1bnRpbWVMUnVudGltZUZyZWV6ZVJlYXNvbgABCDxOb21pbmF0aW9uUG9vbHMEACELAZRwYWxsZXRfbm9taW5hdGlvbl9wb29sczo6RnJlZXplUmVhc29uAFAAGFJldml2ZQQAJQsBbHBhbGxldF9yZXZpdmU6OkZyZWV6ZVJlYXNvbgBkAAAhCwxccGFsbGV0X25vbWluYXRpb25fcG9vbHMYcGFsbGV0MEZyZWV6ZVJlYXNvbgABBDhQb29sTWluQmFsYW5jZQAAAAAlCww0cGFsbGV0X3Jldml2ZRhwYWxsZXQwRnJlZXplUmVhc29uAAEEOFBHYXNNaW5CYWxhbmNlAAAAACkLAAACGQsALQsMPHBhbGxldF9iYWxhbmNlcxhwYWxsZXQURXJyb3IIBFQABEkAATA4VmVzdGluZ0JhbGFuY2UAAAScVmVzdGluZyBiYWxhbmNlIHRvbyBoaWdoIHRvIHNlbmQgdmFsdWUuVExpcXVpZGl0eVJlc3RyaWN0aW9ucwABBMhBY2NvdW50IGxpcXVpZGl0eSByZXN0cmljdGlvbnMgcHJldmVudCB3aXRoZHJhd2FsLkxJbnN1ZmZpY2llbnRCYWxhbmNlAAIEeEJhbGFuY2UgdG9vIGxvdyB0byBzZW5kIHZhbHVlLkhFeGlzdGVudGlhbERlcG9zaXQAAwTsVmFsdWUgdG9vIGxvdyB0byBjcmVhdGUgYWNjb3VudCBkdWUgdG8gZXhpc3RlbnRpYWwgZGVwb3NpdC40RXhwZW5kYWJpbGl0eQAEBJBUcmFuc2Zlci9wYXltZW50IHdvdWxkIGtpbGwgYWNjb3VudC5cRXhpc3RpbmdWZXN0aW5nU2NoZWR1bGUABQTMQSB2ZXN0aW5nIHNjaGVkdWxlIGFscmVhZHkgZXhpc3RzIGZvciB0aGlzIGFjY291bnQuLERlYWRBY2NvdW50AAYEjEJlbmVmaWNpYXJ5IGFjY291bnQgbXVzdCBwcmUtZXhpc3QuPFRvb01hbnlSZXNlcnZlcwAHBLhOdW1iZXIgb2YgbmFtZWQgcmVzZXJ2ZXMgZXhjZWVkIGBNYXhSZXNlcnZlc2AuMFRvb01hbnlIb2xkcwAIBPhOdW1iZXIgb2YgaG9sZHMgZXhjZWVkIGBWYXJpYW50Q291bnRPZjxUOjpSdW50aW1lSG9sZFJlYXNvbj5gLjhUb29NYW55RnJlZXplcwAJBJhOdW1iZXIgb2YgZnJlZXplcyBleGNlZWQgYE1heEZyZWV6ZXNgLkxJc3N1YW5jZURlYWN0aXZhdGVkAAoEAQFUaGUgaXNzdWFuY2UgY2Fubm90IGJlIG1vZGlmaWVkIHNpbmNlIGl0IGlzIGFscmVhZHkgZGVhY3RpdmF0ZWQuJERlbHRhWmVybwALBGRUaGUgZGVsdGEgY2Fubm90IGJlIHplcm8uBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LjELCGhwYWxsZXRfdHJhbnNhY3Rpb25fcGF5bWVudCBSZWxlYXNlcwABCCRWMUFuY2llbnQAAAAIVjIAAQAANQsQNGZyYW1lX3N1cHBvcnQYdHJhaXRzHHN0b3JhZ2UYTm9Ecm9wBARUATkLAAQAOQsBBFQAADkLGDRmcmFtZV9zdXBwb3J0GHRyYWl0cxh0b2tlbnMgZnVuZ2libGUkaW1iYWxhbmNlJEltYmFsYW5jZQwEQgFZARhPbkRyb3AAOE9wcG9zaXRlT25Ecm9wAAAEARhhbW91bnRZAQEEQgAAPQsMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAFtAQRTAAAEAEELARhWZWM8VD4AAEELAAACbQEARQsIOHBhbGxldF92ZXN0aW5nIFJlbGVhc2VzAAEICFYwAAAACFYxAAEAAEkLDDhwYWxsZXRfdmVzdGluZxhwYWxsZXQURXJyb3IEBFQAARQoTm90VmVzdGluZwAABIRUaGUgYWNjb3VudCBnaXZlbiBpcyBub3QgdmVzdGluZy5UQXRNYXhWZXN0aW5nU2NoZWR1bGVzAAEIJQFUaGUgYWNjb3VudCBhbHJlYWR5IGhhcyBgTWF4VmVzdGluZ1NjaGVkdWxlc2AgY291bnQgb2Ygc2NoZWR1bGVzIGFuZCB0aHVzUQFjYW5ub3QgYWRkIGFub3RoZXIgb25lLiBDb25zaWRlciBtZXJnaW5nIGV4aXN0aW5nIHNjaGVkdWxlcyBpbiBvcmRlciB0byBhZGQgYW5vdGhlci4kQW1vdW50TG93AAIEBQFBbW91bnQgYmVpbmcgdHJhbnNmZXJyZWQgaXMgdG9vIGxvdyB0byBjcmVhdGUgYSB2ZXN0aW5nIHNjaGVkdWxlLmBTY2hlZHVsZUluZGV4T3V0T2ZCb3VuZHMAAwTQQW4gaW5kZXggd2FzIG91dCBvZiBib3VuZHMgb2YgdGhlIHZlc3Rpbmcgc2NoZWR1bGVzLlRJbnZhbGlkU2NoZWR1bGVQYXJhbXMABAQNAUZhaWxlZCB0byBjcmVhdGUgYSBuZXcgc2NoZWR1bGUgYmVjYXVzZSBzb21lIHBhcmFtZXRlciB3YXMgaW52YWxpZC4EdEVycm9yIGZvciB0aGUgdmVzdGluZyBwYWxsZXQuTQsQXHBvbGthZG90X3J1bnRpbWVfY29tbW9uGGNsYWltcxhwYWxsZXQURXJyb3IEBFQAARhgSW52YWxpZEV0aGVyZXVtU2lnbmF0dXJlAAAEbEludmFsaWQgRXRoZXJldW0gc2lnbmF0dXJlLkBTaWduZXJIYXNOb0NsYWltAAEEeEV0aGVyZXVtIGFkZHJlc3MgaGFzIG5vIGNsYWltLkBTZW5kZXJIYXNOb0NsYWltAAIEsEFjY291bnQgSUQgc2VuZGluZyB0cmFuc2FjdGlvbiBoYXMgbm8gY2xhaW0uMFBvdFVuZGVyZmxvdwADCEkBVGhlcmUncyBub3QgZW5vdWdoIGluIHRoZSBwb3QgdG8gcGF5IG91dCBzb21lIHVudmVzdGVkIGFtb3VudC4gR2VuZXJhbGx5IGltcGxpZXMgYTBsb2dpYyBlcnJvci5ASW52YWxpZFN0YXRlbWVudAAEBJBBIG5lZWRlZCBzdGF0ZW1lbnQgd2FzIG5vdCBpbmNsdWRlZC5MVmVzdGVkQmFsYW5jZUV4aXN0cwAFBKRUaGUgYWNjb3VudCBhbHJlYWR5IGhhcyBhIHZlc3RlZCBiYWxhbmNlLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC5RCwg0ZnJhbWVfc3VwcG9ydCBQYWxsZXRJZAAABAB5AgEcW3U4OyA4XQAAVQsMKHBhbGxldF9kYXAYcGFsbGV0FEVycm9yBARUAAEIQFVua25vd25CdWRnZXRLZXkAAAQdAUEga2V5IGluIHRoZSBidWRnZXQgYWxsb2NhdGlvbiBkb2VzIG5vdCBtYXRjaCBhbnkgcmVnaXN0ZXJlZCByZWNpcGllbnQuOEJ1ZGdldE5vdEV4YWN0AAEE5EJ1ZGdldCBhbGxvY2F0aW9uIHBlcmNlbnRhZ2VzIGRvIG5vdCBzdW0gdG8gZXhhY3RseSAxMDAlLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC5ZCwAAAl0LAF0LAAAEDJ0BBKEBAGELDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBBARTAAAEAGEBARhWZWM8VD4AAGULDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBaQsEUwAABABtCwEYVmVjPFQ+AABpCwxkcGFsbGV0X2NvbGxhdG9yX3NlbGVjdGlvbhhwYWxsZXQ0Q2FuZGlkYXRlSW5mbwgkQWNjb3VudElkAQQcQmFsYW5jZQFZAQAIAQx3aG8EASRBY2NvdW50SWQAARxkZXBvc2l0WQEBHEJhbGFuY2UAAG0LAAACaQsAcQsMZHBhbGxldF9jb2xsYXRvcl9zZWxlY3Rpb24YcGFsbGV0FEVycm9yBARUAAFERFRvb01hbnlDYW5kaWRhdGVzAAAEjFRoZSBwYWxsZXQgaGFzIHRvbyBtYW55IGNhbmRpZGF0ZXMuXFRvb0Zld0VsaWdpYmxlQ29sbGF0b3JzAAEErExlYXZpbmcgd291bGQgcmVzdWx0IGluIHRvbyBmZXcgY2FuZGlkYXRlcy5AQWxyZWFkeUNhbmRpZGF0ZQACBHxBY2NvdW50IGlzIGFscmVhZHkgYSBjYW5kaWRhdGUuME5vdENhbmRpZGF0ZQADBGxBY2NvdW50IGlzIG5vdCBhIGNhbmRpZGF0ZS5QVG9vTWFueUludnVsbmVyYWJsZXMABASEVGhlcmUgYXJlIHRvbyBtYW55IEludnVsbmVyYWJsZXMuTEFscmVhZHlJbnZ1bG5lcmFibGUABQSMQWNjb3VudCBpcyBhbHJlYWR5IGFuIEludnVsbmVyYWJsZS48Tm90SW52dWxuZXJhYmxlAAYEfEFjY291bnQgaXMgbm90IGFuIEludnVsbmVyYWJsZS5cTm9Bc3NvY2lhdGVkVmFsaWRhdG9ySWQABwScQWNjb3VudCBoYXMgbm8gYXNzb2NpYXRlZCB2YWxpZGF0b3IgSUQuWFZhbGlkYXRvck5vdFJlZ2lzdGVyZWQACASMVmFsaWRhdG9yIElEIGlzIG5vdCB5ZXQgcmVnaXN0ZXJlZC5sSW5zZXJ0VG9DYW5kaWRhdGVMaXN0RmFpbGVkAAkEnENvdWxkIG5vdCBpbnNlcnQgaW4gdGhlIGNhbmRpZGF0ZSBsaXN0LnRSZW1vdmVGcm9tQ2FuZGlkYXRlTGlzdEZhaWxlZAAKBKRDb3VsZCBub3QgcmVtb3ZlIGZyb20gdGhlIGNhbmRpZGF0ZSBsaXN0LjREZXBvc2l0VG9vTG93AAsE9E5ldyBkZXBvc2l0IGFtb3VudCB3b3VsZCBiZSBiZWxvdyB0aGUgbWluaW11bSBjYW5kaWRhY3kgYm9uZC5kVXBkYXRlQ2FuZGlkYXRlTGlzdEZhaWxlZAAMBJBDb3VsZCBub3QgdXBkYXRlIHRoZSBjYW5kaWRhdGUgbGlzdC5ASW5zdWZmaWNpZW50Qm9uZAANBCkBRGVwb3NpdCBhbW91bnQgaXMgdG9vIGxvdyB0byB0YWtlIHRoZSB0YXJnZXQncyBzbG90IGluIHRoZSBjYW5kaWRhdGUgbGlzdC5QVGFyZ2V0SXNOb3RDYW5kaWRhdGUADgQtAVRoZSB0YXJnZXQgYWNjb3VudCB0byBiZSByZXBsYWNlZCBpbiB0aGUgY2FuZGlkYXRlIGxpc3QgaXMgbm90IGEgY2FuZGlkYXRlLkBJZGVudGljYWxEZXBvc2l0AA8EDQFUaGUgdXBkYXRlZCBkZXBvc2l0IGFtb3VudCBpcyBlcXVhbCB0byB0aGUgYW1vdW50IGFscmVhZHkgcmVzZXJ2ZWQuQEludmFsaWRVbnJlc2VydmUAEAQ9AUNhbm5vdCBsb3dlciBjYW5kaWRhY3kgYm9uZCB3aGlsZSBvY2N1cHlpbmcgYSBmdXR1cmUgY29sbGF0b3Igc2xvdCBpbiB0aGUgbGlzdC4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQudQsAAAJ5CwB5CwAABAgEuQEAfQsAAAKBCwCBCwAABAg4hQsAhQsMKHNwX3N0YWtpbmccb2ZmZW5jZTxPZmZlbmNlU2V2ZXJpdHkAAAQAoQEBHFBlcmJpbGwAAIkLAAAECI0LGACNCwwcc3BfY29yZRhjcnlwdG8kS2V5VHlwZUlkAAAEAHQBHFt1ODsgNF0AAJELDDhwYWxsZXRfc2Vzc2lvbhhwYWxsZXQURXJyb3IEBFQAARQwSW52YWxpZFByb29mAAAEYEludmFsaWQgb3duZXJzaGlwIHByb29mLlxOb0Fzc29jaWF0ZWRWYWxpZGF0b3JJZAABBJxObyBhc3NvY2lhdGVkIHZhbGlkYXRvciBJRCBmb3IgYWNjb3VudC40RHVwbGljYXRlZEtleQACBGRSZWdpc3RlcmVkIGR1cGxpY2F0ZSBrZXkuGE5vS2V5cwADBKRObyBrZXlzIGFyZSBhc3NvY2lhdGVkIHdpdGggdGhpcyBhY2NvdW50LiROb0FjY291bnQABAQZAUtleSBzZXR0aW5nIGFjY291bnQgaXMgbm90IGxpdmUsIHNvIGl0J3MgaW1wb3NzaWJsZSB0byBhc3NvY2lhdGUga2V5cy4EdEVycm9yIGZvciB0aGUgc2Vzc2lvbiBwYWxsZXQulQsMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAG9AQRTAAAEAJkLARhWZWM8VD4AAJkLAAACvQEAnQsISHNwX2NvbnNlbnN1c19zbG90cxBTbG90AAAEACgBDHU2NAAAoQsAAAQInQs4AKULDExib3VuZGVkX2NvbGxlY3Rpb25zRGJvdW5kZWRfYnRyZWVfc2V0PEJvdW5kZWRCVHJlZVNldAgEVAGgBFMAAAQAqQsBLEJUcmVlU2V0PFQ+AACpCwQgQlRyZWVTZXQEBFQBoAAEAJUKAAAArQsMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAGxCwRTAAAEAL0LARhWZWM8VD4AALELCGRjdW11bHVzX3BhbGxldF94Y21wX3F1ZXVlWE91dGJvdW5kQ2hhbm5lbERldGFpbHMAABgBJHJlY2lwaWVudKABGFBhcmFJZAABFHN0YXRltQsBNE91dGJvdW5kU3RhdGUAATRzaWduYWxzX2V4aXN0XQEBEGJvb2wAASxmaXJzdF9pbmRleO0DAQx1MTYAAShsYXN0X2luZGV47QMBDHUxNgABFGZsYWdzuQsBUE91dGJvdW5kQ2hhbm5lbEZsYWdzAAC1CwhkY3VtdWx1c19wYWxsZXRfeGNtcF9xdWV1ZTRPdXRib3VuZFN0YXRlAAEICE9rAAAAJFN1c3BlbmRlZAABAAC5CwhkY3VtdWx1c19wYWxsZXRfeGNtcF9xdWV1ZVBPdXRib3VuZENoYW5uZWxGbGFncwAABAEQYml0czgBDHUzMgAAvQsAAAKxCwDBCwAABAig7QMAxQsMTGJvdW5kZWRfY29sbGVjdGlvbnNAd2Vha19ib3VuZGVkX3ZlYzhXZWFrQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AADJCwhkY3VtdWx1c19wYWxsZXRfeGNtcF9xdWV1ZTxRdWV1ZUNvbmZpZ0RhdGEAAAwBRHN1c3BlbmRfdGhyZXNob2xkOAEMdTMyAAE4ZHJvcF90aHJlc2hvbGQ4AQx1MzIAAUByZXN1bWVfdGhyZXNob2xkOAEMdTMyAADNCwxkY3VtdWx1c19wYWxsZXRfeGNtcF9xdWV1ZRhwYWxsZXQURXJyb3IEBFQAARQ4QmFkUXVldWVDb25maWcAAAQRAVNldHRpbmcgdGhlIHF1ZXVlIGNvbmZpZyBmYWlsZWQgc2luY2Ugb25lIG9mIGl0cyB2YWx1ZXMgd2FzIGludmFsaWQuQEFscmVhZHlTdXNwZW5kZWQAAQSMVGhlIGV4ZWN1dGlvbiBpcyBhbHJlYWR5IHN1c3BlbmRlZC44QWxyZWFkeVJlc3VtZWQAAgSEVGhlIGV4ZWN1dGlvbiBpcyBhbHJlYWR5IHJlc3VtZWQudFRvb01hbnlBY3RpdmVPdXRib3VuZENoYW5uZWxzAAMEsFRoZXJlIGFyZSB0b28gbWFueSBhY3RpdmUgb3V0Ym91bmQgY2hhbm5lbHMuGFRvb0JpZwAEBFxUaGUgbWVzc2FnZSBpcyB0b28gYmlnLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC7RCwwocGFsbGV0X3hjbRhwYWxsZXQsUXVlcnlTdGF0dXMELEJsb2NrTnVtYmVyATgBDBxQZW5kaW5nEAEkcmVzcG9uZGVyyQEBRFZlcnNpb25lZExvY2F0aW9uAAFMbWF5YmVfbWF0Y2hfcXVlcmllctULAWRPcHRpb248VmVyc2lvbmVkTG9jYXRpb24+AAEwbWF5YmVfbm90aWZ52QsBQE9wdGlvbjwodTgsIHU4KT4AARx0aW1lb3V0OAEsQmxvY2tOdW1iZXIAAAA8VmVyc2lvbk5vdGlmaWVyCAEYb3JpZ2luyQEBRFZlcnNpb25lZExvY2F0aW9uAAEkaXNfYWN0aXZlXQEBEGJvb2wAAQAUUmVhZHkIASByZXNwb25zZeELAURWZXJzaW9uZWRSZXNwb25zZQABCGF0OAEsQmxvY2tOdW1iZXIAAgAA1QsEGE9wdGlvbgQEVAHJAQEIEE5vbmUAAAAQU29tZQQAyQEAAAEAANkLBBhPcHRpb24EBFQB3QsBCBBOb25lAAAAEFNvbWUEAN0LAAABAADdCwAABAgMDADhCwgMeGNtRFZlcnNpb25lZFJlc3BvbnNlAAEMCFYzBACBAgEwdjM6OlJlc3BvbnNlAAMACFY0BADtAgEwdjQ6OlJlc3BvbnNlAAQACFY1BAA5AwEwdjU6OlJlc3BvbnNlAAUAAOULAAAECDjJAQDpCwAABAwoFQE4AO0LDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQB8QsEUwAABAD1CwEYVmVjPFQ+AADxCwAABAjJATgA9QsAAALxCwD5CwwocGFsbGV0X3hjbRhwYWxsZXRUVmVyc2lvbk1pZ3JhdGlvblN0YWdlAAEQXE1pZ3JhdGVTdXBwb3J0ZWRWZXJzaW9uAAAAXE1pZ3JhdGVWZXJzaW9uTm90aWZpZXJzAAEAUE5vdGlmeUN1cnJlbnRUYXJnZXRzBABNAQE8T3B0aW9uPFZlYzx1OD4+AAIAaE1pZ3JhdGVBbmROb3RpZnlPbGRUYXJnZXRzAAMAAP0LAAAEDDgEwQMAAQwMKHBhbGxldF94Y20YcGFsbGV0aFJlbW90ZUxvY2tlZEZ1bmdpYmxlUmVjb3JkCEhDb25zdW1lcklkZW50aWZpZXIBEDBNYXhDb25zdW1lcnMAABABGGFtb3VudFkBARB1MTI4AAEUb3duZXLJAQFEVmVyc2lvbmVkTG9jYXRpb24AARhsb2NrZXLJAQFEVmVyc2lvbmVkTG9jYXRpb24AASRjb25zdW1lcnMFDAHQQm91bmRlZFZlYzwoQ29uc3VtZXJJZGVudGlmaWVyLCB1MTI4KSwgTWF4Q29uc3VtZXJzPgAABQwMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEJDARTAAAEAA0MARhWZWM8VD4AAAkMAAAECBBZAQANDAAAAgkMABEMDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBFQwEUwAABAAZDAEYVmVjPFQ+AAAVDAAABAhZAckBABkMAAACFQwAHQwIKHBhbGxldF94Y21YQXV0aG9yaXplZEFsaWFzZXNFbnRyeQgYVGlja2V0ASEMDE1BWAElDAAIASBhbGlhc2VycykMAXhCb3VuZGVkVmVjPE9yaWdpbkFsaWFzZXIsIE1BWD4AARh0aWNrZXQhDAEYVGlja2V0AAAhDBQ0ZnJhbWVfc3VwcG9ydBh0cmFpdHMYdG9rZW5zIGZ1bmdpYmxlREhvbGRDb25zaWRlcmF0aW9uFARBAARGAARSAAREAAhGcAAABABZAQEoRjo6QmFsYW5jZQAAJQwMKHBhbGxldF94Y20YcGFsbGV0UE1heEF1dGhvcml6ZWRBbGlhc2VzAAAAACkMDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBLQwEUwAABAAxDAEYVmVjPFQ+AAAtDAxAeGNtX3J1bnRpbWVfYXBpc0hhdXRob3JpemVkX2FsaWFzZXM0T3JpZ2luQWxpYXNlcgAACAEgbG9jYXRpb27JAQFEVmVyc2lvbmVkTG9jYXRpb24AARhleHBpcnkBAQEsT3B0aW9uPHU2ND4AADEMAAACLQwANQwMKHBhbGxldF94Y20YcGFsbGV0FEVycm9yBARUAAFwLFVucmVhY2hhYmxlAAAIXQFUaGUgZGVzaXJlZCBkZXN0aW5hdGlvbiB3YXMgdW5yZWFjaGFibGUsIGdlbmVyYWxseSBiZWNhdXNlIHRoZXJlIGlzIGEgbm8gd2F5IG9mIHJvdXRpbmcYdG8gaXQuLFNlbmRGYWlsdXJlAAEIQQFUaGVyZSB3YXMgc29tZSBvdGhlciBpc3N1ZSAoaS5lLiBub3QgdG8gZG8gd2l0aCByb3V0aW5nKSBpbiBzZW5kaW5nIHRoZSBtZXNzYWdlLshQZXJoYXBzIGEgbGFjayBvZiBzcGFjZSBmb3IgYnVmZmVyaW5nIHRoZSBtZXNzYWdlLiBGaWx0ZXJlZAACBJxUaGUgbWVzc2FnZSBleGVjdXRpb24gZmFpbHMgdGhlIGZpbHRlci5IVW53ZWlnaGFibGVNZXNzYWdlAAMEtFRoZSBtZXNzYWdlJ3Mgd2VpZ2h0IGNvdWxkIG5vdCBiZSBkZXRlcm1pbmVkLmBEZXN0aW5hdGlvbk5vdEludmVydGlibGUABATcVGhlIGRlc3RpbmF0aW9uIGBMb2NhdGlvbmAgcHJvdmlkZWQgY2Fubm90IGJlIGludmVydGVkLhRFbXB0eQAFBIBUaGUgYXNzZXRzIHRvIGJlIHNlbnQgYXJlIGVtcHR5LjhDYW5ub3RSZWFuY2hvcgAGBDUBQ291bGQgbm90IHJlLWFuY2hvciB0aGUgYXNzZXRzIHRvIGRlY2xhcmUgdGhlIGZlZXMgZm9yIHRoZSBkZXN0aW5hdGlvbiBjaGFpbi40VG9vTWFueUFzc2V0cwAHBMRUb28gbWFueSBhc3NldHMgaGF2ZSBiZWVuIGF0dGVtcHRlZCBmb3IgdHJhbnNmZXIuNEludmFsaWRPcmlnaW4ACAR4T3JpZ2luIGlzIGludmFsaWQgZm9yIHNlbmRpbmcuKEJhZFZlcnNpb24ACQQhAVRoZSB2ZXJzaW9uIG9mIHRoZSBgVmVyc2lvbmVkYCB2YWx1ZSB1c2VkIGlzIG5vdCBhYmxlIHRvIGJlIGludGVycHJldGVkLixCYWRMb2NhdGlvbgAKCEEBVGhlIGdpdmVuIGxvY2F0aW9uIGNvdWxkIG5vdCBiZSB1c2VkIChlLmcuIGJlY2F1c2UgaXQgY2Fubm90IGJlIGV4cHJlc3NlZCBpbiB0aGVgZGVzaXJlZCB2ZXJzaW9uIG9mIFhDTSkuOE5vU3Vic2NyaXB0aW9uAAsEvFRoZSByZWZlcmVuY2VkIHN1YnNjcmlwdGlvbiBjb3VsZCBub3QgYmUgZm91bmQuREFscmVhZHlTdWJzY3JpYmVkAAwEEQFUaGUgbG9jYXRpb24gaXMgaW52YWxpZCBzaW5jZSBpdCBhbHJlYWR5IGhhcyBhIHN1YnNjcmlwdGlvbiBmcm9tIHVzLlhDYW5ub3RDaGVja091dFRlbGVwb3J0AA0EKQFDb3VsZCBub3QgY2hlY2stb3V0IHRoZSBhc3NldHMgZm9yIHRlbGVwb3J0YXRpb24gdG8gdGhlIGRlc3RpbmF0aW9uIGNoYWluLihMb3dCYWxhbmNlAA4EQQFUaGUgb3duZXIgZG9lcyBub3Qgb3duIChhbGwpIG9mIHRoZSBhc3NldCB0aGF0IHRoZXkgd2lzaCB0byBkbyB0aGUgb3BlcmF0aW9uIG9uLjBUb29NYW55TG9ja3MADwTAVGhlIGFzc2V0IG93bmVyIGhhcyB0b28gbWFueSBsb2NrcyBvbiB0aGUgYXNzZXQuTEFjY291bnROb3RTb3ZlcmVpZ24AEAQxAVRoZSBnaXZlbiBhY2NvdW50IGlzIG5vdCBhbiBpZGVudGlmaWFibGUgc292ZXJlaWduIGFjY291bnQgZm9yIGFueSBsb2NhdGlvbi4oRmVlc05vdE1ldAARBCkBVGhlIG9wZXJhdGlvbiByZXF1aXJlZCBmZWVzIHRvIGJlIHBhaWQgd2hpY2ggdGhlIGluaXRpYXRvciBjb3VsZCBub3QgbWVldC4wTG9ja05vdEZvdW5kABIE9EEgcmVtb3RlIGxvY2sgd2l0aCB0aGUgY29ycmVzcG9uZGluZyBkYXRhIGNvdWxkIG5vdCBiZSBmb3VuZC4USW5Vc2UAEwRJAVRoZSB1bmxvY2sgb3BlcmF0aW9uIGNhbm5vdCBzdWNjZWVkIGJlY2F1c2UgdGhlcmUgYXJlIHN0aWxsIGNvbnN1bWVycyBvZiB0aGUgbG9jay5oSW52YWxpZEFzc2V0VW5rbm93blJlc2VydmUAFQTwSW52YWxpZCBhc3NldCwgcmVzZXJ2ZSBjaGFpbiBjb3VsZCBub3QgYmUgZGV0ZXJtaW5lZCBmb3IgaXQueEludmFsaWRBc3NldFVuc3VwcG9ydGVkUmVzZXJ2ZQAWBEUBSW52YWxpZCBhc3NldCwgZG8gbm90IHN1cHBvcnQgcmVtb3RlIGFzc2V0IHJlc2VydmVzIHdpdGggZGlmZmVyZW50IGZlZXMgcmVzZXJ2ZXMuPFRvb01hbnlSZXNlcnZlcwAXBEkBVG9vIG1hbnkgYXNzZXRzIHdpdGggZGlmZmVyZW50IHJlc2VydmUgbG9jYXRpb25zIGhhdmUgYmVlbiBhdHRlbXB0ZWQgZm9yIHRyYW5zZmVyLmBMb2NhbEV4ZWN1dGlvbkluY29tcGxldGUAGAR8TG9jYWwgWENNIGV4ZWN1dGlvbiBpbmNvbXBsZXRlLmBUb29NYW55QXV0aG9yaXplZEFsaWFzZXMAGQS4VG9vIG1hbnkgbG9jYXRpb25zIGF1dGhvcml6ZWQgdG8gYWxpYXMgb3JpZ2luLjRFeHBpcmVzSW5QYXN0ABoEjEV4cGlyeSBibG9jayBudW1iZXIgaXMgaW4gdGhlIHBhc3QuNEFsaWFzTm90Rm91bmQAGwTQVGhlIGFsaWFzIHRvIHJlbW92ZSBhdXRob3JpemF0aW9uIGZvciB3YXMgbm90IGZvdW5kLoRMb2NhbEV4ZWN1dGlvbkluY29tcGxldGVXaXRoRXJyb3IIARRpbmRleAwBQEluc3RydWN0aW9uSW5kZXgAARRlcnJvcjkMAThFeGVjdXRpb25FcnJvcgAcCDUBTG9jYWwgWENNIGV4ZWN1dGlvbiBpbmNvbXBsZXRlIHdpdGggdGhlIGFjdHVhbCBYQ00gZXJyb3IgYW5kIHRoZSBpbmRleCBvZiB0aGWIaW5zdHJ1Y3Rpb24gdGhhdCBjYXVzZWQgdGhlIGVycm9yLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC45DAwocGFsbGV0X3hjbRhlcnJvcnM4RXhlY3V0aW9uRXJyb3IAAaQgT3ZlcmZsb3cAAAA0VW5pbXBsZW1lbnRlZAABAGBVbnRydXN0ZWRSZXNlcnZlTG9jYXRpb24AAgBkVW50cnVzdGVkVGVsZXBvcnRMb2NhdGlvbgADADBMb2NhdGlvbkZ1bGwABABUTG9jYXRpb25Ob3RJbnZlcnRpYmxlAAUAJEJhZE9yaWdpbgAGADxJbnZhbGlkTG9jYXRpb24ABwA0QXNzZXROb3RGb3VuZAAIAFRGYWlsZWRUb1RyYW5zYWN0QXNzZXQACQA8Tm90V2l0aGRyYXdhYmxlAAoASExvY2F0aW9uQ2Fubm90SG9sZAALAFRFeGNlZWRzTWF4TWVzc2FnZVNpemUADABYRGVzdGluYXRpb25VbnN1cHBvcnRlZAANACRUcmFuc3BvcnQADgAoVW5yb3V0YWJsZQAPADBVbmtub3duQ2xhaW0AEAA4RmFpbGVkVG9EZWNvZGUAEQBATWF4V2VpZ2h0SW52YWxpZAASADhOb3RIb2xkaW5nRmVlcwATADBUb29FeHBlbnNpdmUAFAAQVHJhcAAVAEBFeHBlY3RhdGlvbkZhbHNlABYAOFBhbGxldE5vdEZvdW5kABcAME5hbWVNaXNtYXRjaAAYAExWZXJzaW9uSW5jb21wYXRpYmxlABkAUEhvbGRpbmdXb3VsZE92ZXJmbG93ABoALEV4cG9ydEVycm9yABsAOFJlYW5jaG9yRmFpbGVkABwAGE5vRGVhbAAdAChGZWVzTm90TWV0AB4AJExvY2tFcnJvcgAfADBOb1Blcm1pc3Npb24AIAAoVW5hbmNob3JlZAAhADhOb3REZXBvc2l0YWJsZQAiADRUb29NYW55QXNzZXRzACMATFVuaGFuZGxlZFhjbVZlcnNpb24AJABIV2VpZ2h0TGltaXRSZWFjaGVkACUAHEJhcnJpZXIAJgBMV2VpZ2h0Tm90Q29tcHV0YWJsZQAnAERFeGNlZWRzU3RhY2tMaW1pdAAoAAA9DAhgYnBfeGNtX2JyaWRnZV9odWJfcm91dGVyLEJyaWRnZVN0YXRlAAAIAUxkZWxpdmVyeV9mZWVfZmFjdG9yKQUBJEZpeGVkVTEyOAABMGlzX2Nvbmdlc3RlZF0BARBib29sAABBDAhQcGFsbGV0X21lc3NhZ2VfcXVldWUkQm9va1N0YXRlBDRNZXNzYWdlT3JpZ2luAdEDABgBFGJlZ2luOAEkUGFnZUluZGV4AAEMZW5kOAEkUGFnZUluZGV4AAEUY291bnQ4ASRQYWdlSW5kZXgAAUByZWFkeV9uZWlnaGJvdXJzRQwBhE9wdGlvbjxOZWlnaGJvdXJzPE1lc3NhZ2VPcmlnaW4+PgABNG1lc3NhZ2VfY291bnQoAQx1NjQAARBzaXplKAEMdTY0AABFDAQYT3B0aW9uBARUAUkMAQgQTm9uZQAAABBTb21lBABJDAAAAQAASQwIUHBhbGxldF9tZXNzYWdlX3F1ZXVlKE5laWdoYm91cnMENE1lc3NhZ2VPcmlnaW4B0QMACAEQcHJldtEDATRNZXNzYWdlT3JpZ2luAAEQbmV4dNEDATRNZXNzYWdlT3JpZ2luAABNDAAABAjRAzgAUQwIUHBhbGxldF9tZXNzYWdlX3F1ZXVlEFBhZ2UIEFNpemUBOCBIZWFwU2l6ZQAAGAEkcmVtYWluaW5nOAEQU2l6ZQABOHJlbWFpbmluZ19zaXplOAEQU2l6ZQABLGZpcnN0X2luZGV4OAEQU2l6ZQABFGZpcnN0OAEQU2l6ZQABEGxhc3Q4ARBTaXplAAEQaGVhcFUMAZxCb3VuZGVkVmVjPHU4LCBJbnRvVTMyPEhlYXBTaXplLCBTaXplPj4AAFUMDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBDARTAAAEABgBGFZlYzxUPgAAWQwMUHBhbGxldF9tZXNzYWdlX3F1ZXVlGHBhbGxldBRFcnJvcgQEVAABJCxOb3RSZWFwYWJsZQAACEkBUGFnZSBpcyBub3QgcmVhcGFibGUgYmVjYXVzZSBpdCBoYXMgaXRlbXMgcmVtYWluaW5nIHRvIGJlIHByb2Nlc3NlZCBhbmQgaXMgbm90IG9sZBxlbm91Z2guGE5vUGFnZQABBIRQYWdlIHRvIGJlIHJlYXBlZCBkb2VzIG5vdCBleGlzdC4kTm9NZXNzYWdlAAIEqFRoZSByZWZlcmVuY2VkIG1lc3NhZ2UgY291bGQgbm90IGJlIGZvdW5kLkBBbHJlYWR5UHJvY2Vzc2VkAAMEAQFUaGUgbWVzc2FnZSB3YXMgYWxyZWFkeSBwcm9jZXNzZWQgYW5kIGNhbm5vdCBiZSBwcm9jZXNzZWQgYWdhaW4uGFF1ZXVlZAAEBKxUaGUgbWVzc2FnZSBpcyBxdWV1ZWQgZm9yIGZ1dHVyZSBleGVjdXRpb24uSEluc3VmZmljaWVudFdlaWdodAAFBBkBVGhlcmUgaXMgdGVtcG9yYXJpbHkgbm90IGVub3VnaCB3ZWlnaHQgdG8gY29udGludWUgc2VydmljaW5nIG1lc3NhZ2VzLmBUZW1wb3JhcmlseVVucHJvY2Vzc2FibGUABhCoVGhpcyBtZXNzYWdlIGlzIHRlbXBvcmFyaWx5IHVucHJvY2Vzc2FibGUuAFkBU3VjaCBlcnJvcnMgYXJlIGV4cGVjdGVkLCBidXQgbm90IGd1YXJhbnRlZWQsIHRvIHJlc29sdmUgdGhlbXNlbHZlcyBldmVudHVhbGx5IHRocm91Z2gkcmV0cnlpbmcuLFF1ZXVlUGF1c2VkAAcM7FRoZSBxdWV1ZSBpcyBwYXVzZWQgYW5kIG5vIG1lc3NhZ2UgY2FuIGJlIGV4ZWN1dGVkIGZyb20gaXQuAB0BVGhpcyBjYW4gY2hhbmdlIGF0IGFueSB0aW1lIGFuZCBtYXkgcmVzb2x2ZSBpbiB0aGUgZnV0dXJlIGJ5IHJlLXRyeWluZy5MUmVjdXJzaXZlRGlzYWxsb3dlZAAIBDEBQW5vdGhlciBjYWxsIGlzIGluIHByb2dyZXNzIGFuZCBuZWVkcyB0byBmaW5pc2ggYmVmb3JlIHRoaXMgY2FsbCBjYW4gaGFwcGVuLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC5dDAyEc25vd2JyaWRnZV9wYWxsZXRfc3lzdGVtX2Zyb250ZW5kGHBhbGxldBRFcnJvcgQEVAABNGhVbnN1cHBvcnRlZExvY2F0aW9uVmVyc2lvbgAABIhDb252ZXJ0IHZlcnNpb25lZCBsb2NhdGlvbiBmYWlsdXJlREludmFsaWRBc3NldE93bmVyAAEEGQFDaGVjayBsb2NhdGlvbiBmYWlsdXJlLCBzaG91bGQgc3RhcnQgZnJvbSB0aGUgZGlzcGF0Y2ggb3JpZ2luIGFzIG93bmVyLFNlbmRGYWlsdXJlAAIEYFNlbmQgeGNtIG1lc3NhZ2UgZmFpbHVyZShGZWVzTm90TWV0AAMEaFdpdGhkcmF3IGZlZSBhc3NldCBmYWlsdXJlYExvY2F0aW9uQ29udmVyc2lvbkZhaWxlZAAEBJhDb252ZXJ0IHRvIHJlYW5jaG9yZWQgbG9jYXRpb24gZmFpbHVyZRhIYWx0ZWQABQRgTWVzc2FnZSBleHBvcnQgaXMgaGFsdGVkLFVucmVhY2hhYmxlAAYIXQFUaGUgZGVzaXJlZCBkZXN0aW5hdGlvbiB3YXMgdW5yZWFjaGFibGUsIGdlbmVyYWxseSBiZWNhdXNlIHRoZXJlIGlzIGEgbm8gd2F5IG9mIHJvdXRpbmcYdG8gaXQuQFVuc3VwcG9ydGVkQXNzZXQABwS4VGhlIGFzc2V0IHByb3ZpZGVkIGZvciB0aGUgdGlwIGlzIHVuc3VwcG9ydGVkLjRXaXRoZHJhd0Vycm9yAAgEZFVuYWJsZSB0byB3aXRoZHJhdyBhc3NldC44SW52YWxpZEFjY291bnQACQS0QWNjb3VudCBjb3VsZCBub3QgYmUgY29udmVydGVkIHRvIGEgbG9jYXRpb24uJFN3YXBFcnJvcgAKBMhQcm92aWRlZCB0aXAgYXNzZXQgY291bGQgbm90IGJlIHN3YXBwZWQgZm9yIGV0aGVyLiRCdXJuRXJyb3IACwRoRXRoZXIgY291bGQgbm90IGJlIGJ1cm5lZC40VGlwQW1vdW50WmVybwAMBGRUaGUgdGlwIHByb3ZpZGVkIGlzIHplcm8uBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LmEMDDhwYWxsZXRfdXRpbGl0eRhwYWxsZXQURXJyb3IEBFQAAQQwVG9vTWFueUNhbGxzAAAEXFRvbyBtYW55IGNhbGxzIGJhdGNoZWQuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LmUMAAAECAQIAGkMCDxwYWxsZXRfbXVsdGlzaWcgTXVsdGlzaWcQLEJsb2NrTnVtYmVyATgcQmFsYW5jZQFZASRBY2NvdW50SWQBBDBNYXhBcHByb3ZhbHMAABABEHdoZW4xBAFYVGltZXBvaW50PEJsb2NrTnVtYmVyPgABHGRlcG9zaXRZAQEcQmFsYW5jZQABJGRlcG9zaXRvcgQBJEFjY291bnRJZAABJGFwcHJvdmFsc20MAYxCb3VuZGVkVmVjPEFjY291bnRJZCwgTWF4QXBwcm92YWxzPgAAbQwMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEEBFMAAAQAYQEBGFZlYzxUPgAAcQwMPHBhbGxldF9tdWx0aXNpZxhwYWxsZXQURXJyb3IEBFQAAThATWluaW11bVRocmVzaG9sZAAABHxUaHJlc2hvbGQgbXVzdCBiZSAyIG9yIGdyZWF0ZXIuPEFscmVhZHlBcHByb3ZlZAABBKxDYWxsIGlzIGFscmVhZHkgYXBwcm92ZWQgYnkgdGhpcyBzaWduYXRvcnkuRE5vQXBwcm92YWxzTmVlZGVkAAIEnENhbGwgZG9lc24ndCBuZWVkIGFueSAobW9yZSkgYXBwcm92YWxzLkRUb29GZXdTaWduYXRvcmllcwADBKhUaGVyZSBhcmUgdG9vIGZldyBzaWduYXRvcmllcyBpbiB0aGUgbGlzdC5IVG9vTWFueVNpZ25hdG9yaWVzAAQErFRoZXJlIGFyZSB0b28gbWFueSBzaWduYXRvcmllcyBpbiB0aGUgbGlzdC5UU2lnbmF0b3JpZXNPdXRPZk9yZGVyAAUEDQFUaGUgc2lnbmF0b3JpZXMgd2VyZSBwcm92aWRlZCBvdXQgb2Ygb3JkZXI7IHRoZXkgc2hvdWxkIGJlIG9yZGVyZWQuTFNlbmRlckluU2lnbmF0b3JpZXMABgQNAVRoZSBzZW5kZXIgd2FzIGNvbnRhaW5lZCBpbiB0aGUgb3RoZXIgc2lnbmF0b3JpZXM7IGl0IHNob3VsZG4ndCBiZS4gTm90Rm91bmQABwSgTXVsdGlzaWcgb3BlcmF0aW9uIG5vdCBmb3VuZCBpbiBzdG9yYWdlLiBOb3RPd25lcgAICFEBT25seSB0aGUgYWNjb3VudCB0aGF0IG9yaWdpbmFsbHkgY3JlYXRlZCB0aGUgbXVsdGlzaWcgaXMgYWJsZSB0byBjYW5jZWwgaXQgb3IgdXBkYXRlNGl0cyBkZXBvc2l0cy4sTm9UaW1lcG9pbnQACQQdAU5vIHRpbWVwb2ludCB3YXMgZ2l2ZW4sIHlldCB0aGUgbXVsdGlzaWcgb3BlcmF0aW9uIGlzIGFscmVhZHkgdW5kZXJ3YXkuOFdyb25nVGltZXBvaW50AAoELQFBIGRpZmZlcmVudCB0aW1lcG9pbnQgd2FzIGdpdmVuIHRvIHRoZSBtdWx0aXNpZyBvcGVyYXRpb24gdGhhdCBpcyB1bmRlcndheS5MVW5leHBlY3RlZFRpbWVwb2ludAALBPRBIHRpbWVwb2ludCB3YXMgZ2l2ZW4sIHlldCBubyBtdWx0aXNpZyBvcGVyYXRpb24gaXMgdW5kZXJ3YXkuPE1heFdlaWdodFRvb0xvdwAMBNBUaGUgbWF4aW11bSB3ZWlnaHQgaW5mb3JtYXRpb24gcHJvdmlkZWQgd2FzIHRvbyBsb3cuNEFscmVhZHlTdG9yZWQADQSgVGhlIGRhdGEgdG8gYmUgc3RvcmVkIGlzIGFscmVhZHkgc3RvcmVkLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC51DAAABAh5DFkBAHkMDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBfQwEUwAABACBDAEYVmVjPFQ+AAB9DAgwcGFsbGV0X3Byb3h5PFByb3h5RGVmaW5pdGlvbgwkQWNjb3VudElkAQQkUHJveHlUeXBlAT0ELEJsb2NrTnVtYmVyATgADAEgZGVsZWdhdGUEASRBY2NvdW50SWQAAShwcm94eV90eXBlPQQBJFByb3h5VHlwZQABFGRlbGF5OAEsQmxvY2tOdW1iZXIAAIEMAAACfQwAhQwAAAQIiQxZAQCJDAxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAY0MBFMAAAQAkQwBGFZlYzxUPgAAjQwIMHBhbGxldF9wcm94eTBBbm5vdW5jZW1lbnQMJEFjY291bnRJZAEEEEhhc2gBQCxCbG9ja051bWJlcgE4AAwBEHJlYWwEASRBY2NvdW50SWQAASRjYWxsX2hhc2hAARBIYXNoAAEYaGVpZ2h0OAEsQmxvY2tOdW1iZXIAAJEMAAACjQwAlQwMMHBhbGxldF9wcm94eRhwYWxsZXQURXJyb3IEBFQAASAcVG9vTWFueQAABCEBVGhlcmUgYXJlIHRvbyBtYW55IHByb3hpZXMgcmVnaXN0ZXJlZCBvciB0b28gbWFueSBhbm5vdW5jZW1lbnRzIHBlbmRpbmcuIE5vdEZvdW5kAAEEdFByb3h5IHJlZ2lzdHJhdGlvbiBub3QgZm91bmQuIE5vdFByb3h5AAIEzFNlbmRlciBpcyBub3QgYSBwcm94eSBvZiB0aGUgYWNjb3VudCB0byBiZSBwcm94aWVkLixVbnByb3h5YWJsZQADBCEBQSBjYWxsIHdoaWNoIGlzIGluY29tcGF0aWJsZSB3aXRoIHRoZSBwcm94eSB0eXBlJ3MgZmlsdGVyIHdhcyBhdHRlbXB0ZWQuJER1cGxpY2F0ZQAEBGxBY2NvdW50IGlzIGFscmVhZHkgYSBwcm94eS4wTm9QZXJtaXNzaW9uAAUEFQFDYWxsIG1heSBub3QgYmUgbWFkZSBieSBwcm94eSBiZWNhdXNlIGl0IG1heSBlc2NhbGF0ZSBpdHMgcHJpdmlsZWdlcy4sVW5hbm5vdW5jZWQABgTQQW5ub3VuY2VtZW50LCBpZiBtYWRlIGF0IGFsbCwgd2FzIG1hZGUgdG9vIHJlY2VudGx5LixOb1NlbGZQcm94eQAHBGRDYW5ub3QgYWRkIHNlbGYgYXMgcHJveHkuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LpkMAAAEDARZAV0BAJ0MDDhwYWxsZXRfaW5kaWNlcxhwYWxsZXQURXJyb3IEBFQAARQsTm90QXNzaWduZWQAAASMVGhlIGluZGV4IHdhcyBub3QgYWxyZWFkeSBhc3NpZ25lZC4gTm90T3duZXIAAQSkVGhlIGluZGV4IGlzIGFzc2lnbmVkIHRvIGFub3RoZXIgYWNjb3VudC4USW5Vc2UAAgRwVGhlIGluZGV4IHdhcyBub3QgYXZhaWxhYmxlLixOb3RUcmFuc2ZlcgADBMhUaGUgc291cmNlIGFuZCBkZXN0aW5hdGlvbiBhY2NvdW50cyBhcmUgaWRlbnRpY2FsLiRQZXJtYW5lbnQABATQVGhlIGluZGV4IGlzIHBlcm1hbmVudCBhbmQgbWF5IG5vdCBiZSBmcmVlZC9jaGFuZ2VkLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC6hDAw0cGFsbGV0X2Fzc2V0cxR0eXBlczBBc3NldERldGFpbHMMHEJhbGFuY2UBWQEkQWNjb3VudElkAQQ4RGVwb3NpdEJhbGFuY2UBWQEAMAEUb3duZXIEASRBY2NvdW50SWQAARhpc3N1ZXIEASRBY2NvdW50SWQAARRhZG1pbgQBJEFjY291bnRJZAABHGZyZWV6ZXIEASRBY2NvdW50SWQAARhzdXBwbHlZAQEcQmFsYW5jZQABHGRlcG9zaXRZAQE4RGVwb3NpdEJhbGFuY2UAASxtaW5fYmFsYW5jZVkBARxCYWxhbmNlAAE0aXNfc3VmZmljaWVudF0BARBib29sAAEgYWNjb3VudHM4AQx1MzIAASxzdWZmaWNpZW50czgBDHUzMgABJGFwcHJvdmFsczgBDHUzMgABGHN0YXR1c6UMASxBc3NldFN0YXR1cwAApQwMNHBhbGxldF9hc3NldHMUdHlwZXMsQXNzZXRTdGF0dXMAAQwQTGl2ZQAAABhGcm96ZW4AAQAoRGVzdHJveWluZwACAACpDAAABAg4BACtDAw0cGFsbGV0X2Fzc2V0cxR0eXBlczBBc3NldEFjY291bnQQHEJhbGFuY2UBWQE4RGVwb3NpdEJhbGFuY2UBWQEURXh0cmEBECRBY2NvdW50SWQBBAAQARxiYWxhbmNlWQEBHEJhbGFuY2UAARhzdGF0dXOxDAE0QWNjb3VudFN0YXR1cwABGHJlYXNvbrUMAahFeGlzdGVuY2VSZWFzb248RGVwb3NpdEJhbGFuY2UsIEFjY291bnRJZD4AARRleHRyYRABFEV4dHJhAACxDAw0cGFsbGV0X2Fzc2V0cxR0eXBlczRBY2NvdW50U3RhdHVzAAEMGExpcXVpZAAAABhGcm96ZW4AAQAcQmxvY2tlZAACAAC1DAw0cGFsbGV0X2Fzc2V0cxR0eXBlczxFeGlzdGVuY2VSZWFzb24IHEJhbGFuY2UBWQEkQWNjb3VudElkAQQBFCBDb25zdW1lcgAAAChTdWZmaWNpZW50AAEALERlcG9zaXRIZWxkBABZAQEcQmFsYW5jZQACADxEZXBvc2l0UmVmdW5kZWQAAwAsRGVwb3NpdEZyb20IAAQBJEFjY291bnRJZAAAWQEBHEJhbGFuY2UABAAAuQwAAAQMOAQEAL0MDDRwYWxsZXRfYXNzZXRzFHR5cGVzIEFwcHJvdmFsCBxCYWxhbmNlAVkBOERlcG9zaXRCYWxhbmNlAVkBAAgBGGFtb3VudFkBARxCYWxhbmNlAAEcZGVwb3NpdFkBAThEZXBvc2l0QmFsYW5jZQAAwQwMNHBhbGxldF9hc3NldHMUdHlwZXM0QXNzZXRNZXRhZGF0YQg4RGVwb3NpdEJhbGFuY2UBWQE0Qm91bmRlZFN0cmluZwHFDAAUARxkZXBvc2l0WQEBOERlcG9zaXRCYWxhbmNlAAEQbmFtZcUMATRCb3VuZGVkU3RyaW5nAAEYc3ltYm9sxQwBNEJvdW5kZWRTdHJpbmcAASBkZWNpbWFscwwBCHU4AAEkaXNfZnJvemVuXQEBEGJvb2wAAMUMDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBDARTAAAEABgBGFZlYzxUPgAAyQwMNHBhbGxldF9hc3NldHMYcGFsbGV0FEVycm9yCARUAARJAAFgKEJhbGFuY2VMb3cAAAQVAUFjY291bnQgYmFsYW5jZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0aGUgdHJhbnNmZXIgYW1vdW50LiROb0FjY291bnQAAQSQVGhlIGFjY291bnQgdG8gYWx0ZXIgZG9lcyBub3QgZXhpc3QuME5vUGVybWlzc2lvbgACBOhUaGUgc2lnbmluZyBhY2NvdW50IGhhcyBubyBwZXJtaXNzaW9uIHRvIGRvIHRoZSBvcGVyYXRpb24uHFVua25vd24AAwR4VGhlIGdpdmVuIGFzc2V0IElEIGlzIHVua25vd24uGEZyb3plbgAEBHRUaGUgb3JpZ2luIGFjY291bnQgaXMgZnJvemVuLhRJblVzZQAFBHhUaGUgYXNzZXQgSUQgaXMgYWxyZWFkeSB0YWtlbi4oQmFkV2l0bmVzcwAGBGxJbnZhbGlkIHdpdG5lc3MgZGF0YSBnaXZlbi44TWluQmFsYW5jZVplcm8ABwSMTWluaW11bSBiYWxhbmNlIHNob3VsZCBiZSBub24temVyby5MVW5hdmFpbGFibGVDb25zdW1lcgAIDFkBVW5hYmxlIHRvIGluY3JlbWVudCB0aGUgY29uc3VtZXIgcmVmZXJlbmNlIGNvdW50ZXJzIG9uIHRoZSBhY2NvdW50LiBFaXRoZXIgbm8gcHJvdmlkZXJNAXJlZmVyZW5jZSBleGlzdHMgdG8gYWxsb3cgYSBub24temVybyBiYWxhbmNlIG9mIGEgbm9uLXNlbGYtc3VmZmljaWVudCBhc3NldCwgb3Igb25l8GZld2VyIHRoZW4gdGhlIG1heGltdW0gbnVtYmVyIG9mIGNvbnN1bWVycyBoYXMgYmVlbiByZWFjaGVkLixCYWRNZXRhZGF0YQAJBFxJbnZhbGlkIG1ldGFkYXRhIGdpdmVuLihVbmFwcHJvdmVkAAoExE5vIGFwcHJvdmFsIGV4aXN0cyB0aGF0IHdvdWxkIGFsbG93IHRoZSB0cmFuc2Zlci4gV291bGREaWUACwQ1AVRoZSBzb3VyY2UgYWNjb3VudCB3b3VsZCBub3Qgc3Vydml2ZSB0aGUgdHJhbnNmZXIgYW5kIGl0IG5lZWRzIHRvIHN0YXkgYWxpdmUuNEFscmVhZHlFeGlzdHMADASEVGhlIGFzc2V0LWFjY291bnQgYWxyZWFkeSBleGlzdHMuJE5vRGVwb3NpdAANBNRUaGUgYXNzZXQtYWNjb3VudCBkb2Vzbid0IGhhdmUgYW4gYXNzb2NpYXRlZCBkZXBvc2l0LiRXb3VsZEJ1cm4ADgTEVGhlIG9wZXJhdGlvbiB3b3VsZCByZXN1bHQgaW4gZnVuZHMgYmVpbmcgYnVybmVkLiRMaXZlQXNzZXQADwhZAVRoZSBhc3NldCBpcyBhIGxpdmUgYXNzZXQgYW5kIGlzIGFjdGl2ZWx5IGJlaW5nIHVzZWQuIFVzdWFsbHkgZW1pdCBmb3Igb3BlcmF0aW9ucyBzdWNoHQFhcyBgc3RhcnRfZGVzdHJveWAgd2hpY2ggcmVxdWlyZSB0aGUgYXNzZXQgdG8gYmUgaW4gYSBkZXN0cm95aW5nIHN0YXRlLjBBc3NldE5vdExpdmUAEATIVGhlIGFzc2V0IGlzIG5vdCBsaXZlLCBhbmQgbGlrZWx5IGJlaW5nIGRlc3Ryb3llZC48SW5jb3JyZWN0U3RhdHVzABEEsFRoZSBhc3NldCBzdGF0dXMgaXMgbm90IHRoZSBleHBlY3RlZCBzdGF0dXMuJE5vdEZyb3plbgASBNhUaGUgYXNzZXQgc2hvdWxkIGJlIGZyb3plbiBiZWZvcmUgdGhlIGdpdmVuIG9wZXJhdGlvbi44Q2FsbGJhY2tGYWlsZWQAEwSEQ2FsbGJhY2sgYWN0aW9uIHJlc3VsdGVkIGluIGVycm9yKEJhZEFzc2V0SWQAFATIVGhlIGFzc2V0IElEIG11c3QgYmUgZXF1YWwgdG8gdGhlIFtgTmV4dEFzc2V0SWRgXS48Q29udGFpbnNGcmVlemVzABUETQFUaGUgYXNzZXQgY2Fubm90IGJlIGRlc3Ryb3llZCBiZWNhdXNlIHNvbWUgYWNjb3VudHMgZm9yIHRoaXMgYXNzZXQgY29udGFpbiBmcmVlemVzLjRDb250YWluc0hvbGRzABYERQFUaGUgYXNzZXQgY2Fubm90IGJlIGRlc3Ryb3llZCBiZWNhdXNlIHNvbWUgYWNjb3VudHMgZm9yIHRoaXMgYXNzZXQgY29udGFpbiBob2xkcy48VG9vTWFueVJlc2VydmVzABcEgFRyaWVkIHNldHRpbmcgdG9vIG1hbnkgcmVzZXJ2ZXMuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0Ls0MBBhPcHRpb24EBFQBoQwBCBBOb25lAAAAEFNvbWUEAKEMAAABAADRDAQYT3B0aW9uBARUAcEMAQgQTm9uZQAAABBTb21lBADBDAAAAQAA1QwMOHBhbGxldF91bmlxdWVzFHR5cGVzRENvbGxlY3Rpb25EZXRhaWxzCCRBY2NvdW50SWQBBDhEZXBvc2l0QmFsYW5jZQFZAQAoARRvd25lcgQBJEFjY291bnRJZAABGGlzc3VlcgQBJEFjY291bnRJZAABFGFkbWluBAEkQWNjb3VudElkAAEcZnJlZXplcgQBJEFjY291bnRJZAABNHRvdGFsX2RlcG9zaXRZAQE4RGVwb3NpdEJhbGFuY2UAATBmcmVlX2hvbGRpbmddAQEQYm9vbAABFGl0ZW1zOAEMdTMyAAE4aXRlbV9tZXRhZGF0YXM4AQx1MzIAAShhdHRyaWJ1dGVzOAEMdTMyAAEkaXNfZnJvemVuXQEBEGJvb2wAANkMAAAEDAQ4OADdDAw4cGFsbGV0X3VuaXF1ZXMUdHlwZXMsSXRlbURldGFpbHMIJEFjY291bnRJZAEEOERlcG9zaXRCYWxhbmNlAVkBABABFG93bmVyBAEkQWNjb3VudElkAAEgYXBwcm92ZWSRAQFET3B0aW9uPEFjY291bnRJZD4AASRpc19mcm96ZW5dAQEQYm9vbAABHGRlcG9zaXRZAQE4RGVwb3NpdEJhbGFuY2UAAOEMDDhwYWxsZXRfdW5pcXVlcxR0eXBlc0hDb2xsZWN0aW9uTWV0YWRhdGEIOERlcG9zaXRCYWxhbmNlAVkBLFN0cmluZ0xpbWl0AAAMARxkZXBvc2l0WQEBOERlcG9zaXRCYWxhbmNlAAEQZGF0YWEEAWxCb3VuZGVkVmVjPHU4LCBTdHJpbmdMaW1pdD4AASRpc19mcm96ZW5dAQEQYm9vbAAA5QwMOHBhbGxldF91bmlxdWVzFHR5cGVzMEl0ZW1NZXRhZGF0YQg4RGVwb3NpdEJhbGFuY2UBWQEsU3RyaW5nTGltaXQAAAwBHGRlcG9zaXRZAQE4RGVwb3NpdEJhbGFuY2UAARBkYXRhYQQBbEJvdW5kZWRWZWM8dTgsIFN0cmluZ0xpbWl0PgABJGlzX2Zyb3plbl0BARBib29sAADpDAAABAw45J0BAO0MAAAECHxZAQDxDAAABAhZAZEBAPUMDDhwYWxsZXRfdW5pcXVlcxhwYWxsZXQURXJyb3IIBFQABEkAAVgwTm9QZXJtaXNzaW9uAAAE6FRoZSBzaWduaW5nIGFjY291bnQgaGFzIG5vIHBlcm1pc3Npb24gdG8gZG8gdGhlIG9wZXJhdGlvbi5EVW5rbm93bkNvbGxlY3Rpb24AAQR0VGhlIGdpdmVuIGl0ZW0gSUQgaXMgdW5rbm93bi40QWxyZWFkeUV4aXN0cwACBLhUaGUgaXRlbSBJRCBoYXMgYWxyZWFkeSBiZWVuIHVzZWQgZm9yIGFuIGl0ZW0uKFdyb25nT3duZXIAAwToVGhlIG93bmVyIHR1cm5lZCBvdXQgdG8gYmUgZGlmZmVyZW50IHRvIHdoYXQgd2FzIGV4cGVjdGVkLihCYWRXaXRuZXNzAAQEbEludmFsaWQgd2l0bmVzcyBkYXRhIGdpdmVuLhRJblVzZQAFBHRUaGUgaXRlbSBJRCBpcyBhbHJlYWR5IHRha2VuLhhGcm96ZW4ABgSEVGhlIGl0ZW0gb3IgY29sbGVjdGlvbiBpcyBmcm96ZW4uNFdyb25nRGVsZWdhdGUABwT0VGhlIGRlbGVnYXRlIHR1cm5lZCBvdXQgdG8gYmUgZGlmZmVyZW50IHRvIHdoYXQgd2FzIGV4cGVjdGVkLihOb0RlbGVnYXRlAAgEeFRoZXJlIGlzIG5vIGRlbGVnYXRlIGFwcHJvdmVkLihVbmFwcHJvdmVkAAkExE5vIGFwcHJvdmFsIGV4aXN0cyB0aGF0IHdvdWxkIGFsbG93IHRoZSB0cmFuc2Zlci4oVW5hY2NlcHRlZAAKBCUBVGhlIG5hbWVkIG93bmVyIGhhcyBub3Qgc2lnbmVkIG93bmVyc2hpcCBvZiB0aGUgY29sbGVjdGlvbiBpcyBhY2NlcHRhYmxlLhhMb2NrZWQACwRMVGhlIGl0ZW0gaXMgbG9ja2VkLkBNYXhTdXBwbHlSZWFjaGVkAAwEbEFsbCBpdGVtcyBoYXZlIGJlZW4gbWludGVkLkxNYXhTdXBwbHlBbHJlYWR5U2V0AA0EkFRoZSBtYXggc3VwcGx5IGhhcyBhbHJlYWR5IGJlZW4gc2V0LkRNYXhTdXBwbHlUb29TbWFsbAAOBEEBVGhlIHByb3ZpZGVkIG1heCBzdXBwbHkgaXMgbGVzcyB0byB0aGUgYW1vdW50IG9mIGl0ZW1zIGEgY29sbGVjdGlvbiBhbHJlYWR5IGhhcy4sVW5rbm93bkl0ZW0ADwR0VGhlIGdpdmVuIGl0ZW0gSUQgaXMgdW5rbm93bi4oTm90Rm9yU2FsZQAQBFRJdGVtIGlzIG5vdCBmb3Igc2FsZS4kQmlkVG9vTG93ABEEcFRoZSBwcm92aWRlZCBiaWQgaXMgdG9vIGxvdy4oTm9NZXRhZGF0YQASBFRObyBtZXRhZGF0YSBpcyBmb3VuZC40V3JvbmdNZXRhZGF0YQATBKBXcm9uZyBtZXRhZGF0YSBrZXkvdmFsdWUgYnl0ZXMgc3VwcGxpZWQuREF0dHJpYnV0ZU5vdEZvdW5kABQEaEFuIGF0dHJpYnV0ZSBpcyBub3QgZm91bmQuOFdyb25nQXR0cmlidXRlABUEpFdyb25nIGF0dHJpYnV0ZSBrZXkvdmFsdWUgYnl0ZXMgc3VwcGxpZWQuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LvkMDCxwYWxsZXRfbmZ0cxR0eXBlc0RDb2xsZWN0aW9uRGV0YWlscwgkQWNjb3VudElkAQQ4RGVwb3NpdEJhbGFuY2UBWQEAGAEUb3duZXIEASRBY2NvdW50SWQAATRvd25lcl9kZXBvc2l0WQEBOERlcG9zaXRCYWxhbmNlAAEUaXRlbXM4AQx1MzIAAThpdGVtX21ldGFkYXRhczgBDHUzMgABMGl0ZW1fY29uZmlnczgBDHUzMgABKGF0dHJpYnV0ZXM4AQx1MzIAAP0MDCxwYWxsZXRfbmZ0cxR0eXBlcyBCaXRGbGFncwQEVAEBDQAEAAwBOENvbGxlY3Rpb25Sb2xlAAABDQwscGFsbGV0X25mdHMUdHlwZXM4Q29sbGVjdGlvblJvbGUAAQwYSXNzdWVyAAEAHEZyZWV6ZXIAAgAUQWRtaW4ABAAABQ0MLHBhbGxldF9uZnRzFHR5cGVzLEl0ZW1EZXRhaWxzDCRBY2NvdW50SWQBBBxEZXBvc2l0AQkNJEFwcHJvdmFscwENDQAMARRvd25lcgQBJEFjY291bnRJZAABJGFwcHJvdmFscw0NASRBcHByb3ZhbHMAARxkZXBvc2l0CQ0BHERlcG9zaXQAAAkNDCxwYWxsZXRfbmZ0cxR0eXBlcyxJdGVtRGVwb3NpdAg4RGVwb3NpdEJhbGFuY2UBWQEkQWNjb3VudElkAQQACAEcYWNjb3VudAQBJEFjY291bnRJZAABGGFtb3VudFkBAThEZXBvc2l0QmFsYW5jZQAADQ0MTGJvdW5kZWRfY29sbGVjdGlvbnNEYm91bmRlZF9idHJlZV9tYXA8Qm91bmRlZEJUcmVlTWFwDARLAQQEVgHkBFMAAAQAEQ0BOEJUcmVlTWFwPEssIFY+AAARDQQgQlRyZWVNYXAIBEsBBARWAeQABAAVDQAAABUNAAACGQ0AGQ0AAAQIBOQAHQ0MLHBhbGxldF9uZnRzFHR5cGVzSENvbGxlY3Rpb25NZXRhZGF0YQgcRGVwb3NpdAFZASxTdHJpbmdMaW1pdAAACAEcZGVwb3NpdFkBARxEZXBvc2l0AAEQZGF0YUUBAWxCb3VuZGVkVmVjPHU4LCBTdHJpbmdMaW1pdD4AACENDCxwYWxsZXRfbmZ0cxR0eXBlczBJdGVtTWV0YWRhdGEIHERlcG9zaXQBJQ0sU3RyaW5nTGltaXQAAAgBHGRlcG9zaXQlDQEcRGVwb3NpdAABEGRhdGFFAQFsQm91bmRlZFZlYzx1OCwgU3RyaW5nTGltaXQ+AAAlDQwscGFsbGV0X25mdHMUdHlwZXNMSXRlbU1ldGFkYXRhRGVwb3NpdAg4RGVwb3NpdEJhbGFuY2UBWQEkQWNjb3VudElkAQQACAEcYWNjb3VudJEBAURPcHRpb248QWNjb3VudElkPgABGGFtb3VudFkBAThEZXBvc2l0QmFsYW5jZQAAKQ0AAAQQOOSZBHwALQ0AAAQIRQExDQAxDQwscGFsbGV0X25mdHMUdHlwZXNAQXR0cmlidXRlRGVwb3NpdAg4RGVwb3NpdEJhbGFuY2UBWQEkQWNjb3VudElkAQQACAEcYWNjb3VudJEBAURPcHRpb248QWNjb3VudElkPgABGGFtb3VudFkBAThEZXBvc2l0QmFsYW5jZQAANQ0MTGJvdW5kZWRfY29sbGVjdGlvbnNEYm91bmRlZF9idHJlZV9zZXQ8Qm91bmRlZEJUcmVlU2V0CARUAQQEUwAABAA5DQEsQlRyZWVTZXQ8VD4AADkNBCBCVHJlZVNldAQEVAEEAAQAYQEAAAA9DQwscGFsbGV0X25mdHMUdHlwZXMsUGVuZGluZ1N3YXAQMENvbGxlY3Rpb25JZAE4GEl0ZW1JZAE4WEl0ZW1QcmljZVdpdGhEaXJlY3Rpb24BsQQgRGVhZGxpbmUBOAAQAUhkZXNpcmVkX2NvbGxlY3Rpb244ATBDb2xsZWN0aW9uSWQAATBkZXNpcmVkX2l0ZW3kAThPcHRpb248SXRlbUlkPgABFHByaWNlrQQBeE9wdGlvbjxJdGVtUHJpY2VXaXRoRGlyZWN0aW9uPgABIGRlYWRsaW5lOAEgRGVhZGxpbmUAAEENDCxwYWxsZXRfbmZ0cxR0eXBlcyBCaXRGbGFncwQEVAFFDQAEACgBNFBhbGxldEZlYXR1cmUAAEUNDCxwYWxsZXRfbmZ0cxR0eXBlczRQYWxsZXRGZWF0dXJlAAEQHFRyYWRpbmcAAQAoQXR0cmlidXRlcwACACRBcHByb3ZhbHMABAAUU3dhcHMACAAASQ0MLHBhbGxldF9uZnRzGHBhbGxldBRFcnJvcggEVAAESQABtDBOb1Blcm1pc3Npb24AAAToVGhlIHNpZ25pbmcgYWNjb3VudCBoYXMgbm8gcGVybWlzc2lvbiB0byBkbyB0aGUgb3BlcmF0aW9uLkRVbmtub3duQ29sbGVjdGlvbgABBHRUaGUgZ2l2ZW4gaXRlbSBJRCBpcyB1bmtub3duLjRBbHJlYWR5RXhpc3RzAAIEuFRoZSBpdGVtIElEIGhhcyBhbHJlYWR5IGJlZW4gdXNlZCBmb3IgYW4gaXRlbS48QXBwcm92YWxFeHBpcmVkAAMEOQFUaGUgYXBwcm92YWwgaGFkIGEgZGVhZGxpbmUgdGhhdCBleHBpcmVkLCBzbyB0aGUgYXBwcm92YWwgaXNuJ3QgdmFsaWQgYW55bW9yZS4oV3JvbmdPd25lcgAEBOhUaGUgb3duZXIgdHVybmVkIG91dCB0byBiZSBkaWZmZXJlbnQgdG8gd2hhdCB3YXMgZXhwZWN0ZWQuKEJhZFdpdG5lc3MABQQVAVRoZSB3aXRuZXNzIGRhdGEgZ2l2ZW4gZG9lcyBub3QgbWF0Y2ggdGhlIGN1cnJlbnQgc3RhdGUgb2YgdGhlIGNoYWluLkRDb2xsZWN0aW9uSWRJblVzZQAGBHxDb2xsZWN0aW9uIElEIGlzIGFscmVhZHkgdGFrZW4uUEl0ZW1zTm9uVHJhbnNmZXJhYmxlAAcEyEl0ZW1zIHdpdGhpbiB0aGF0IGNvbGxlY3Rpb24gYXJlIG5vbi10cmFuc2ZlcmFibGUuLE5vdERlbGVnYXRlAAgEnFRoZSBwcm92aWRlZCBhY2NvdW50IGlzIG5vdCBhIGRlbGVnYXRlLjRXcm9uZ0RlbGVnYXRlAAkE9FRoZSBkZWxlZ2F0ZSB0dXJuZWQgb3V0IHRvIGJlIGRpZmZlcmVudCB0byB3aGF0IHdhcyBleHBlY3RlZC4oVW5hcHByb3ZlZAAKBMRObyBhcHByb3ZhbCBleGlzdHMgdGhhdCB3b3VsZCBhbGxvdyB0aGUgdHJhbnNmZXIuKFVuYWNjZXB0ZWQACwQZAVRoZSBuYW1lZCBvd25lciBoYXMgbm90IHNpZ25lZCBvd25lcnNoaXAgYWNjZXB0YW5jZSBvZiB0aGUgY29sbGVjdGlvbi4oSXRlbUxvY2tlZAAMBJhUaGUgaXRlbSBpcyBsb2NrZWQgKG5vbi10cmFuc2ZlcmFibGUpLlBMb2NrZWRJdGVtQXR0cmlidXRlcwANBHRJdGVtJ3MgYXR0cmlidXRlcyBhcmUgbG9ja2VkLmhMb2NrZWRDb2xsZWN0aW9uQXR0cmlidXRlcwAOBIxDb2xsZWN0aW9uJ3MgYXR0cmlidXRlcyBhcmUgbG9ja2VkLkhMb2NrZWRJdGVtTWV0YWRhdGEADwRoSXRlbSdzIG1ldGFkYXRhIGlzIGxvY2tlZC5gTG9ja2VkQ29sbGVjdGlvbk1ldGFkYXRhABAEgENvbGxlY3Rpb24ncyBtZXRhZGF0YSBpcyBsb2NrZWQuQE1heFN1cHBseVJlYWNoZWQAEQRsQWxsIGl0ZW1zIGhhdmUgYmVlbiBtaW50ZWQuPE1heFN1cHBseUxvY2tlZAASBLhUaGUgbWF4IHN1cHBseSBpcyBsb2NrZWQgYW5kIGNhbid0IGJlIGNoYW5nZWQuRE1heFN1cHBseVRvb1NtYWxsABMESQFUaGUgcHJvdmlkZWQgbWF4IHN1cHBseSBpcyBsZXNzIHRoYW4gdGhlIG51bWJlciBvZiBpdGVtcyBhIGNvbGxlY3Rpb24gYWxyZWFkeSBoYXMuLFVua25vd25JdGVtABQEdFRoZSBnaXZlbiBpdGVtIElEIGlzIHVua25vd24uLFVua25vd25Td2FwABUETFN3YXAgZG9lc24ndCBleGlzdC5ATWV0YWRhdGFOb3RGb3VuZAAWBIxUaGUgZ2l2ZW4gaXRlbSBoYXMgbm8gbWV0YWRhdGEgc2V0LkRBdHRyaWJ1dGVOb3RGb3VuZAAXBJhUaGUgcHJvdmlkZWQgYXR0cmlidXRlIGNhbid0IGJlIGZvdW5kLihOb3RGb3JTYWxlABgEVEl0ZW0gaXMgbm90IGZvciBzYWxlLiRCaWRUb29Mb3cAGQRwVGhlIHByb3ZpZGVkIGJpZCBpcyB0b28gbG93LlBSZWFjaGVkQXBwcm92YWxMaW1pdAAaBKBUaGUgaXRlbSBoYXMgcmVhY2hlZCBpdHMgYXBwcm92YWwgbGltaXQuPERlYWRsaW5lRXhwaXJlZAAbBIRUaGUgZGVhZGxpbmUgaGFzIGFscmVhZHkgZXhwaXJlZC40V3JvbmdEdXJhdGlvbgAcBDEBVGhlIGR1cmF0aW9uIHByb3ZpZGVkIHNob3VsZCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gYE1heERlYWRsaW5lRHVyYXRpb25gLjhNZXRob2REaXNhYmxlZAAdBKhUaGUgbWV0aG9kIGlzIGRpc2FibGVkIGJ5IHN5c3RlbSBzZXR0aW5ncy4wV3JvbmdTZXR0aW5nAB4EiFRoZSBwcm92aWRlZCBzZXR0aW5nIGNhbid0IGJlIHNldC5YSW5jb25zaXN0ZW50SXRlbUNvbmZpZwAfBBUBSXRlbSdzIGNvbmZpZyBhbHJlYWR5IGV4aXN0cyBhbmQgc2hvdWxkIGJlIGVxdWFsIHRvIHRoZSBwcm92aWRlZCBvbmUuIE5vQ29uZmlnACAEyENvbmZpZyBmb3IgYSBjb2xsZWN0aW9uIG9yIGFuIGl0ZW0gY2FuJ3QgYmUgZm91bmQuPFJvbGVzTm90Q2xlYXJlZAAhBHBTb21lIHJvbGVzIHdlcmUgbm90IGNsZWFyZWQuOE1pbnROb3RTdGFydGVkACIEZE1pbnQgaGFzIG5vdCBzdGFydGVkIHlldC4kTWludEVuZGVkACMEXE1pbnQgaGFzIGFscmVhZHkgZW5kZWQuOEFscmVhZHlDbGFpbWVkACQEwFRoZSBwcm92aWRlZCBJdGVtIHdhcyBhbHJlYWR5IHVzZWQgZm9yIGNsYWltaW5nLjRJbmNvcnJlY3REYXRhACUEfFRoZSBwcm92aWRlZCBkYXRhIGlzIGluY29ycmVjdC4sV3JvbmdPcmlnaW4AJgSsVGhlIGV4dHJpbnNpYyB3YXMgc2VudCBieSB0aGUgd3Jvbmcgb3JpZ2luLjhXcm9uZ1NpZ25hdHVyZQAnBJBUaGUgcHJvdmlkZWQgc2lnbmF0dXJlIGlzIGluY29ycmVjdC5ESW5jb3JyZWN0TWV0YWRhdGEAKASgVGhlIHByb3ZpZGVkIG1ldGFkYXRhIG1pZ2h0IGJlIHRvbyBsb25nLmRNYXhBdHRyaWJ1dGVzTGltaXRSZWFjaGVkACkEnENhbid0IHNldCBtb3JlIGF0dHJpYnV0ZXMgcGVyIG9uZSBjYWxsLjhXcm9uZ05hbWVzcGFjZQAqBNBUaGUgcHJvdmlkZWQgbmFtZXNwYWNlIGlzbid0IHN1cHBvcnRlZCBpbiB0aGlzIGNhbGwuSENvbGxlY3Rpb25Ob3RFbXB0eQArBIxDYW4ndCBkZWxldGUgbm9uLWVtcHR5IGNvbGxlY3Rpb25zLjxXaXRuZXNzUmVxdWlyZWQALASQVGhlIHdpdG5lc3MgZGF0YSBzaG91bGQgYmUgcHJvdmlkZWQuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0Lk0NAAAECB0CBABRDQAABAwdAgQEAFUNDDRwYWxsZXRfYXNzZXRzFHR5cGVzNEFzc2V0TWV0YWRhdGEIOERlcG9zaXRCYWxhbmNlAVkBNEJvdW5kZWRTdHJpbmcBWQ0AFAEcZGVwb3NpdFkBAThEZXBvc2l0QmFsYW5jZQABEG5hbWVZDQE0Qm91bmRlZFN0cmluZwABGHN5bWJvbFkNATRCb3VuZGVkU3RyaW5nAAEgZGVjaW1hbHMMAQh1OAABJGlzX2Zyb3plbl0BARBib29sAABZDQxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQwEUwAABAAYARhWZWM8VD4AAF0NDDRwYWxsZXRfYXNzZXRzGHBhbGxldBRFcnJvcggEVAAESQABYChCYWxhbmNlTG93AAAEFQFBY2NvdW50IGJhbGFuY2UgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gdGhlIHRyYW5zZmVyIGFtb3VudC4kTm9BY2NvdW50AAEEkFRoZSBhY2NvdW50IHRvIGFsdGVyIGRvZXMgbm90IGV4aXN0LjBOb1Blcm1pc3Npb24AAgToVGhlIHNpZ25pbmcgYWNjb3VudCBoYXMgbm8gcGVybWlzc2lvbiB0byBkbyB0aGUgb3BlcmF0aW9uLhxVbmtub3duAAMEeFRoZSBnaXZlbiBhc3NldCBJRCBpcyB1bmtub3duLhhGcm96ZW4ABAR0VGhlIG9yaWdpbiBhY2NvdW50IGlzIGZyb3plbi4USW5Vc2UABQR4VGhlIGFzc2V0IElEIGlzIGFscmVhZHkgdGFrZW4uKEJhZFdpdG5lc3MABgRsSW52YWxpZCB3aXRuZXNzIGRhdGEgZ2l2ZW4uOE1pbkJhbGFuY2VaZXJvAAcEjE1pbmltdW0gYmFsYW5jZSBzaG91bGQgYmUgbm9uLXplcm8uTFVuYXZhaWxhYmxlQ29uc3VtZXIACAxZAVVuYWJsZSB0byBpbmNyZW1lbnQgdGhlIGNvbnN1bWVyIHJlZmVyZW5jZSBjb3VudGVycyBvbiB0aGUgYWNjb3VudC4gRWl0aGVyIG5vIHByb3ZpZGVyTQFyZWZlcmVuY2UgZXhpc3RzIHRvIGFsbG93IGEgbm9uLXplcm8gYmFsYW5jZSBvZiBhIG5vbi1zZWxmLXN1ZmZpY2llbnQgYXNzZXQsIG9yIG9uZfBmZXdlciB0aGVuIHRoZSBtYXhpbXVtIG51bWJlciBvZiBjb25zdW1lcnMgaGFzIGJlZW4gcmVhY2hlZC4sQmFkTWV0YWRhdGEACQRcSW52YWxpZCBtZXRhZGF0YSBnaXZlbi4oVW5hcHByb3ZlZAAKBMRObyBhcHByb3ZhbCBleGlzdHMgdGhhdCB3b3VsZCBhbGxvdyB0aGUgdHJhbnNmZXIuIFdvdWxkRGllAAsENQFUaGUgc291cmNlIGFjY291bnQgd291bGQgbm90IHN1cnZpdmUgdGhlIHRyYW5zZmVyIGFuZCBpdCBuZWVkcyB0byBzdGF5IGFsaXZlLjRBbHJlYWR5RXhpc3RzAAwEhFRoZSBhc3NldC1hY2NvdW50IGFscmVhZHkgZXhpc3RzLiROb0RlcG9zaXQADQTUVGhlIGFzc2V0LWFjY291bnQgZG9lc24ndCBoYXZlIGFuIGFzc29jaWF0ZWQgZGVwb3NpdC4kV291bGRCdXJuAA4ExFRoZSBvcGVyYXRpb24gd291bGQgcmVzdWx0IGluIGZ1bmRzIGJlaW5nIGJ1cm5lZC4kTGl2ZUFzc2V0AA8IWQFUaGUgYXNzZXQgaXMgYSBsaXZlIGFzc2V0IGFuZCBpcyBhY3RpdmVseSBiZWluZyB1c2VkLiBVc3VhbGx5IGVtaXQgZm9yIG9wZXJhdGlvbnMgc3VjaB0BYXMgYHN0YXJ0X2Rlc3Ryb3lgIHdoaWNoIHJlcXVpcmUgdGhlIGFzc2V0IHRvIGJlIGluIGEgZGVzdHJveWluZyBzdGF0ZS4wQXNzZXROb3RMaXZlABAEyFRoZSBhc3NldCBpcyBub3QgbGl2ZSwgYW5kIGxpa2VseSBiZWluZyBkZXN0cm95ZWQuPEluY29ycmVjdFN0YXR1cwARBLBUaGUgYXNzZXQgc3RhdHVzIGlzIG5vdCB0aGUgZXhwZWN0ZWQgc3RhdHVzLiROb3RGcm96ZW4AEgTYVGhlIGFzc2V0IHNob3VsZCBiZSBmcm96ZW4gYmVmb3JlIHRoZSBnaXZlbiBvcGVyYXRpb24uOENhbGxiYWNrRmFpbGVkABMEhENhbGxiYWNrIGFjdGlvbiByZXN1bHRlZCBpbiBlcnJvcihCYWRBc3NldElkABQEyFRoZSBhc3NldCBJRCBtdXN0IGJlIGVxdWFsIHRvIHRoZSBbYE5leHRBc3NldElkYF0uPENvbnRhaW5zRnJlZXplcwAVBE0BVGhlIGFzc2V0IGNhbm5vdCBiZSBkZXN0cm95ZWQgYmVjYXVzZSBzb21lIGFjY291bnRzIGZvciB0aGlzIGFzc2V0IGNvbnRhaW4gZnJlZXplcy40Q29udGFpbnNIb2xkcwAWBEUBVGhlIGFzc2V0IGNhbm5vdCBiZSBkZXN0cm95ZWQgYmVjYXVzZSBzb21lIGFjY291bnRzIGZvciB0aGlzIGFzc2V0IGNvbnRhaW4gaG9sZHMuPFRvb01hbnlSZXNlcnZlcwAXBIBUcmllZCBzZXR0aW5nIHRvbyBtYW55IHJlc2VydmVzLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC5hDQQYT3B0aW9uBARUAVUNAQgQTm9uZQAAABBTb21lBABVDQAAAQAAZQ0MNHBhbGxldF9hc3NldHMUdHlwZXM0QXNzZXRNZXRhZGF0YQg4RGVwb3NpdEJhbGFuY2UBWQE0Qm91bmRlZFN0cmluZwFpDQAUARxkZXBvc2l0WQEBOERlcG9zaXRCYWxhbmNlAAEQbmFtZWkNATRCb3VuZGVkU3RyaW5nAAEYc3ltYm9saQ0BNEJvdW5kZWRTdHJpbmcAASBkZWNpbWFscwwBCHU4AAEkaXNfZnJvemVuXQEBEGJvb2wAAGkNDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBDARTAAAEABgBGFZlYzxUPgAAbQ0MNHBhbGxldF9hc3NldHMYcGFsbGV0FEVycm9yCARUAARJAAFgKEJhbGFuY2VMb3cAAAQVAUFjY291bnQgYmFsYW5jZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0aGUgdHJhbnNmZXIgYW1vdW50LiROb0FjY291bnQAAQSQVGhlIGFjY291bnQgdG8gYWx0ZXIgZG9lcyBub3QgZXhpc3QuME5vUGVybWlzc2lvbgACBOhUaGUgc2lnbmluZyBhY2NvdW50IGhhcyBubyBwZXJtaXNzaW9uIHRvIGRvIHRoZSBvcGVyYXRpb24uHFVua25vd24AAwR4VGhlIGdpdmVuIGFzc2V0IElEIGlzIHVua25vd24uGEZyb3plbgAEBHRUaGUgb3JpZ2luIGFjY291bnQgaXMgZnJvemVuLhRJblVzZQAFBHhUaGUgYXNzZXQgSUQgaXMgYWxyZWFkeSB0YWtlbi4oQmFkV2l0bmVzcwAGBGxJbnZhbGlkIHdpdG5lc3MgZGF0YSBnaXZlbi44TWluQmFsYW5jZVplcm8ABwSMTWluaW11bSBiYWxhbmNlIHNob3VsZCBiZSBub24temVyby5MVW5hdmFpbGFibGVDb25zdW1lcgAIDFkBVW5hYmxlIHRvIGluY3JlbWVudCB0aGUgY29uc3VtZXIgcmVmZXJlbmNlIGNvdW50ZXJzIG9uIHRoZSBhY2NvdW50LiBFaXRoZXIgbm8gcHJvdmlkZXJNAXJlZmVyZW5jZSBleGlzdHMgdG8gYWxsb3cgYSBub24temVybyBiYWxhbmNlIG9mIGEgbm9uLXNlbGYtc3VmZmljaWVudCBhc3NldCwgb3Igb25l8GZld2VyIHRoZW4gdGhlIG1heGltdW0gbnVtYmVyIG9mIGNvbnN1bWVycyBoYXMgYmVlbiByZWFjaGVkLixCYWRNZXRhZGF0YQAJBFxJbnZhbGlkIG1ldGFkYXRhIGdpdmVuLihVbmFwcHJvdmVkAAoExE5vIGFwcHJvdmFsIGV4aXN0cyB0aGF0IHdvdWxkIGFsbG93IHRoZSB0cmFuc2Zlci4gV291bGREaWUACwQ1AVRoZSBzb3VyY2UgYWNjb3VudCB3b3VsZCBub3Qgc3Vydml2ZSB0aGUgdHJhbnNmZXIgYW5kIGl0IG5lZWRzIHRvIHN0YXkgYWxpdmUuNEFscmVhZHlFeGlzdHMADASEVGhlIGFzc2V0LWFjY291bnQgYWxyZWFkeSBleGlzdHMuJE5vRGVwb3NpdAANBNRUaGUgYXNzZXQtYWNjb3VudCBkb2Vzbid0IGhhdmUgYW4gYXNzb2NpYXRlZCBkZXBvc2l0LiRXb3VsZEJ1cm4ADgTEVGhlIG9wZXJhdGlvbiB3b3VsZCByZXN1bHQgaW4gZnVuZHMgYmVpbmcgYnVybmVkLiRMaXZlQXNzZXQADwhZAVRoZSBhc3NldCBpcyBhIGxpdmUgYXNzZXQgYW5kIGlzIGFjdGl2ZWx5IGJlaW5nIHVzZWQuIFVzdWFsbHkgZW1pdCBmb3Igb3BlcmF0aW9ucyBzdWNoHQFhcyBgc3RhcnRfZGVzdHJveWAgd2hpY2ggcmVxdWlyZSB0aGUgYXNzZXQgdG8gYmUgaW4gYSBkZXN0cm95aW5nIHN0YXRlLjBBc3NldE5vdExpdmUAEATIVGhlIGFzc2V0IGlzIG5vdCBsaXZlLCBhbmQgbGlrZWx5IGJlaW5nIGRlc3Ryb3llZC48SW5jb3JyZWN0U3RhdHVzABEEsFRoZSBhc3NldCBzdGF0dXMgaXMgbm90IHRoZSBleHBlY3RlZCBzdGF0dXMuJE5vdEZyb3plbgASBNhUaGUgYXNzZXQgc2hvdWxkIGJlIGZyb3plbiBiZWZvcmUgdGhlIGdpdmVuIG9wZXJhdGlvbi44Q2FsbGJhY2tGYWlsZWQAEwSEQ2FsbGJhY2sgYWN0aW9uIHJlc3VsdGVkIGluIGVycm9yKEJhZEFzc2V0SWQAFATIVGhlIGFzc2V0IElEIG11c3QgYmUgZXF1YWwgdG8gdGhlIFtgTmV4dEFzc2V0SWRgXS48Q29udGFpbnNGcmVlemVzABUETQFUaGUgYXNzZXQgY2Fubm90IGJlIGRlc3Ryb3llZCBiZWNhdXNlIHNvbWUgYWNjb3VudHMgZm9yIHRoaXMgYXNzZXQgY29udGFpbiBmcmVlemVzLjRDb250YWluc0hvbGRzABYERQFUaGUgYXNzZXQgY2Fubm90IGJlIGRlc3Ryb3llZCBiZWNhdXNlIHNvbWUgYWNjb3VudHMgZm9yIHRoaXMgYXNzZXQgY29udGFpbiBob2xkcy48VG9vTWFueVJlc2VydmVzABcEgFRyaWVkIHNldHRpbmcgdG9vIG1hbnkgcmVzZXJ2ZXMuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LnENBBhPcHRpb24EBFQBZQ0BCBBOb25lAAAAEFNvbWUEAGUNAAABAAB1DQxccGFsbGV0X2Fzc2V0X2NvbnZlcnNpb24UdHlwZXMgUG9vbEluZm8ELFBvb2xBc3NldElkATgABAEgbHBfdG9rZW44ASxQb29sQXNzZXRJZAAAeQ0MXHBhbGxldF9hc3NldF9jb252ZXJzaW9uGHBhbGxldBRFcnJvcgQEVAABYEBJbnZhbGlkQXNzZXRQYWlyAAAEuFByb3ZpZGVkIGFzc2V0IHBhaXIgaXMgbm90IHN1cHBvcnRlZCBmb3IgcG9vbC4oUG9vbEV4aXN0cwABBFBQb29sIGFscmVhZHkgZXhpc3RzLkhXcm9uZ0Rlc2lyZWRBbW91bnQAAgR0RGVzaXJlZCBhbW91bnQgY2FuJ3QgYmUgemVyby5gQW1vdW50T25lTGVzc1RoYW5NaW5pbWFsAAMISQFQcm92aWRlZCBhbW91bnQgc2hvdWxkIGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0aGUgZXhpc3RlbnRpYWwgZGVwb3NpdC9hc3NldCdzPG1pbmltYWwgYW1vdW50LmBBbW91bnRUd29MZXNzVGhhbk1pbmltYWwABAhJAVByb3ZpZGVkIGFtb3VudCBzaG91bGQgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHRoZSBleGlzdGVudGlhbCBkZXBvc2l0L2Fzc2V0J3M8bWluaW1hbCBhbW91bnQuaFJlc2VydmVMZWZ0TGVzc1RoYW5NaW5pbWFsAAUITQFSZXNlcnZlIG5lZWRzIHRvIGFsd2F5cyBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gdGhlIGV4aXN0ZW50aWFsIGRlcG9zaXQvYXNzZXQnczxtaW5pbWFsIGFtb3VudC5AQW1vdW50T3V0VG9vSGlnaAAGBMhEZXNpcmVkIGFtb3VudCBjYW4ndCBiZSBlcXVhbCB0byB0aGUgcG9vbCByZXNlcnZlLjBQb29sTm90Rm91bmQABwRcVGhlIHBvb2wgZG9lc24ndCBleGlzdC4gT3ZlcmZsb3cACARUQW4gb3ZlcmZsb3cgaGFwcGVuZWQugEFzc2V0T25lRGVwb3NpdERpZE5vdE1lZXRNaW5pbXVtAAkEKQFUaGUgbWluaW1hbCBhbW91bnQgcmVxdWlyZW1lbnQgZm9yIHRoZSBmaXJzdCB0b2tlbiBpbiB0aGUgcGFpciB3YXNuJ3QgbWV0LoBBc3NldFR3b0RlcG9zaXREaWROb3RNZWV0TWluaW11bQAKBC0BVGhlIG1pbmltYWwgYW1vdW50IHJlcXVpcmVtZW50IGZvciB0aGUgc2Vjb25kIHRva2VuIGluIHRoZSBwYWlyIHdhc24ndCBtZXQujEFzc2V0T25lV2l0aGRyYXdhbERpZE5vdE1lZXRNaW5pbXVtAAsEKQFUaGUgbWluaW1hbCBhbW91bnQgcmVxdWlyZW1lbnQgZm9yIHRoZSBmaXJzdCB0b2tlbiBpbiB0aGUgcGFpciB3YXNuJ3QgbWV0LoxBc3NldFR3b1dpdGhkcmF3YWxEaWROb3RNZWV0TWluaW11bQAMBC0BVGhlIG1pbmltYWwgYW1vdW50IHJlcXVpcmVtZW50IGZvciB0aGUgc2Vjb25kIHRva2VuIGluIHRoZSBwYWlyIHdhc24ndCBtZXQucE9wdGltYWxBbW91bnRMZXNzVGhhbkRlc2lyZWQADQS8T3B0aW1hbCBjYWxjdWxhdGVkIGFtb3VudCBpcyBsZXNzIHRoYW4gZGVzaXJlZC5sSW5zdWZmaWNpZW50TGlxdWlkaXR5TWludGVkAA4EeEluc3VmZmljaWVudCBsaXF1aWRpdHkgbWludGVkLjRaZXJvTGlxdWlkaXR5AA8EiFJlcXVlc3RlZCBsaXF1aWRpdHkgY2FuJ3QgYmUgemVyby4oWmVyb0Ftb3VudAAQBFRBbW91bnQgY2FuJ3QgYmUgemVyby6MUHJvdmlkZWRNaW5pbXVtTm90U3VmZmljaWVudEZvclN3YXAAEQTsQ2FsY3VsYXRlZCBhbW91bnQgb3V0IGlzIGxlc3MgdGhhbiBwcm92aWRlZCBtaW5pbXVtIGFtb3VudC6MUHJvdmlkZWRNYXhpbXVtTm90U3VmZmljaWVudEZvclN3YXAAEgTMUHJvdmlkZWQgbWF4aW11bSBhbW91bnQgaXMgbm90IHN1ZmZpY2llbnQgZm9yIHN3YXAuLEludmFsaWRQYXRoABME1FRoZSBwcm92aWRlZCBwYXRoIG11c3QgY29uc2lzdHMgb2YgMiBhc3NldHMgYXQgbGVhc3QuNE5vblVuaXF1ZVBhdGgAFATEVGhlIHByb3ZpZGVkIHBhdGggbXVzdCBjb25zaXN0cyBvZiB1bmlxdWUgYXNzZXRzLlBJbmNvcnJlY3RQb29sQXNzZXRJZAAVBOxJdCB3YXMgbm90IHBvc3NpYmxlIHRvIGdldCBvciBpbmNyZW1lbnQgdGhlIElkIG9mIHRoZSBwb29sLjBCZWxvd01pbmltdW0AFgTwVGhlIGRlc3RpbmF0aW9uIGFjY291bnQgY2Fubm90IGV4aXN0IHdpdGggdGhlIHN3YXBwZWQgZnVuZHMuJFBvb2xFbXB0eQAXBDEBVGhlIHBvb2wgZXhpc3RzIGJ1dCBoYXMgbm8gbGlxdWlkaXR5IChhdCBsZWFzdCBvbmUgb2YgdGhlIHJlc2VydmVzIGlzIHplcm8pLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC59DQQYUmVzdWx0CARUAYENBEUBeQ0BCAhPawQAgQ0AAAAADEVycgQAeQ0AAAEAAIENAAAECFkBWQEAhQ0MVHBhbGxldF9hc3NldHNfZnJlZXplchhwYWxsZXQURXJyb3IIBFQABEkAAQQ4VG9vTWFueUZyZWV6ZXMAAAToTnVtYmVyIG9mIGZyZWV6ZXMgb24gYW4gYWNjb3VudCB3b3VsZCBleGNlZWQgYE1heEZyZWV6ZXNgLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC6JDQxQcGFsbGV0X2Fzc2V0c19ob2xkZXIYcGFsbGV0FEVycm9yCARUAARJAAEEMFRvb01hbnlIb2xkcwAABDEBTnVtYmVyIG9mIGhvbGRzIG9uIGFuIGFjY291bnQgd291bGQgZXhjZWVkIHRoZSBjb3VudCBvZiBgUnVudGltZUhvbGRSZWFzb25gLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC6NDQg8cGFsbGV0X3RyZWFzdXJ5IFByb3Bvc2FsCCRBY2NvdW50SWQBBBxCYWxhbmNlAVkBABABIHByb3Bvc2VyBAEkQWNjb3VudElkAAEUdmFsdWVZAQEcQmFsYW5jZQABLGJlbmVmaWNpYXJ5BAEkQWNjb3VudElkAAEQYm9uZFkBARxCYWxhbmNlAACRDQxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUATgEUwAABABdBAEYVmVjPFQ+AACVDQg8cGFsbGV0X3RyZWFzdXJ5LFNwZW5kU3RhdHVzFCRBc3NldEtpbmQB6QQwQXNzZXRCYWxhbmNlAVkBLEJlbmVmaWNpYXJ5Ae0ELEJsb2NrTnVtYmVyATgkUGF5bWVudElkASgAGAEoYXNzZXRfa2luZOkEASRBc3NldEtpbmQAARhhbW91bnRZAQEwQXNzZXRCYWxhbmNlAAEsYmVuZWZpY2lhcnntBAEsQmVuZWZpY2lhcnkAASh2YWxpZF9mcm9tOAEsQmxvY2tOdW1iZXIAASRleHBpcmVfYXQ4ASxCbG9ja051bWJlcgABGHN0YXR1c5kNAVxQYXltZW50U3RhdGU8UGF5bWVudElkPgAAmQ0IPHBhbGxldF90cmVhc3VyeTBQYXltZW50U3RhdGUECElkASgBDBxQZW5kaW5nAAAAJEF0dGVtcHRlZAQBCGlkKAEISWQAAQAYRmFpbGVkAAIAAJ0NDDxwYWxsZXRfdHJlYXN1cnkYcGFsbGV0FEVycm9yCARUAARJAAEsMEludmFsaWRJbmRleAAABKxObyBwcm9wb3NhbCwgYm91bnR5IG9yIHNwZW5kIGF0IHRoYXQgaW5kZXguQFRvb01hbnlBcHByb3ZhbHMAAQSAVG9vIG1hbnkgYXBwcm92YWxzIGluIHRoZSBxdWV1ZS5YSW5zdWZmaWNpZW50UGVybWlzc2lvbgACCEUBVGhlIHNwZW5kIG9yaWdpbiBpcyB2YWxpZCBidXQgdGhlIGFtb3VudCBpdCBpcyBhbGxvd2VkIHRvIHNwZW5kIGlzIGxvd2VyIHRoYW4gdGhlTGFtb3VudCB0byBiZSBzcGVudC5MUHJvcG9zYWxOb3RBcHByb3ZlZAADBHxQcm9wb3NhbCBoYXMgbm90IGJlZW4gYXBwcm92ZWQuWEZhaWxlZFRvQ29udmVydEJhbGFuY2UABARRAVRoZSBiYWxhbmNlIG9mIHRoZSBhc3NldCBraW5kIGlzIG5vdCBjb252ZXJ0aWJsZSB0byB0aGUgYmFsYW5jZSBvZiB0aGUgbmF0aXZlIGFzc2V0LjBTcGVuZEV4cGlyZWQABQSwVGhlIHNwZW5kIGhhcyBleHBpcmVkIGFuZCBjYW5ub3QgYmUgY2xhaW1lZC4sRWFybHlQYXlvdXQABgSkVGhlIHNwZW5kIGlzIG5vdCB5ZXQgZWxpZ2libGUgZm9yIHBheW91dC5AQWxyZWFkeUF0dGVtcHRlZAAHBJxUaGUgcGF5bWVudCBoYXMgYWxyZWFkeSBiZWVuIGF0dGVtcHRlZC4sUGF5b3V0RXJyb3IACATMVGhlcmUgd2FzIHNvbWUgaXNzdWUgd2l0aCB0aGUgbWVjaGFuaXNtIG9mIHBheW1lbnQuME5vdEF0dGVtcHRlZAAJBKRUaGUgcGF5b3V0IHdhcyBub3QgeWV0IGF0dGVtcHRlZC9jbGFpbWVkLjBJbmNvbmNsdXNpdmUACgTEVGhlIHBheW1lbnQgaGFzIG5laXRoZXIgZmFpbGVkIG5vciBzdWNjZWVkZWQgeWV0LgR4RXJyb3IgZm9yIHRoZSB0cmVhc3VyeSBwYWxsZXQuoQ0AAAQIBO0DAKUNDGBwYWxsZXRfY29udmljdGlvbl92b3RpbmcQdm90ZRhWb3RpbmcUHEJhbGFuY2UBWQEkQWNjb3VudElkAQQsQmxvY2tOdW1iZXIBOCRQb2xsSW5kZXgBOCBNYXhWb3RlcwABCBxDYXN0aW5nBACpDQHIQ2FzdGluZzxCYWxhbmNlLCBCbG9ja051bWJlciwgUG9sbEluZGV4LCBNYXhWb3Rlcz4AAAAoRGVsZWdhdGluZwQAwQ0BrERlbGVnYXRpbmc8QmFsYW5jZSwgQWNjb3VudElkLCBCbG9ja051bWJlcj4AAQAAqQ0MYHBhbGxldF9jb252aWN0aW9uX3ZvdGluZxB2b3RlHENhc3RpbmcQHEJhbGFuY2UBWQEsQmxvY2tOdW1iZXIBOCRQb2xsSW5kZXgBOCBNYXhWb3RlcwAADAEUdm90ZXOtDQHcQm91bmRlZFZlYzwoUG9sbEluZGV4LCBBY2NvdW50Vm90ZTxCYWxhbmNlPiksIE1heFZvdGVzPgABLGRlbGVnYXRpb25zuQ0BUERlbGVnYXRpb25zPEJhbGFuY2U+AAEUcHJpb3K9DQF8UHJpb3JMb2NrPEJsb2NrTnVtYmVyLCBCYWxhbmNlPgAArQ0MTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAGxDQRTAAAEALUNARhWZWM8VD4AALENAAAECDj1BAC1DQAAArENALkNDGBwYWxsZXRfY29udmljdGlvbl92b3RpbmcUdHlwZXMsRGVsZWdhdGlvbnMEHEJhbGFuY2UBWQEACAEUdm90ZXNZAQEcQmFsYW5jZQABHGNhcGl0YWxZAQEcQmFsYW5jZQAAvQ0MYHBhbGxldF9jb252aWN0aW9uX3ZvdGluZxB2b3RlJFByaW9yTG9jawgsQmxvY2tOdW1iZXIBOBxCYWxhbmNlAVkBAAgAOAEsQmxvY2tOdW1iZXIAAFkBARxCYWxhbmNlAADBDQxgcGFsbGV0X2NvbnZpY3Rpb25fdm90aW5nEHZvdGUoRGVsZWdhdGluZwwcQmFsYW5jZQFZASRBY2NvdW50SWQBBCxCbG9ja051bWJlcgE4ABQBHGJhbGFuY2VZAQEcQmFsYW5jZQABGHRhcmdldAQBJEFjY291bnRJZAABKGNvbnZpY3Rpb279BAEoQ29udmljdGlvbgABLGRlbGVnYXRpb25zuQ0BUERlbGVnYXRpb25zPEJhbGFuY2U+AAEUcHJpb3K9DQF8UHJpb3JMb2NrPEJsb2NrTnVtYmVyLCBCYWxhbmNlPgAAxQ0MTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAHJDQRTAAAEAM0NARhWZWM8VD4AAMkNAAAECO0DWQEAzQ0AAALJDQDRDQxgcGFsbGV0X2NvbnZpY3Rpb25fdm90aW5nGHBhbGxldBRFcnJvcggEVAAESQABMChOb3RPbmdvaW5nAAAEUFBvbGwgaXMgbm90IG9uZ29pbmcuIE5vdFZvdGVyAAEErFRoZSBnaXZlbiBhY2NvdW50IGRpZCBub3Qgdm90ZSBvbiB0aGUgcG9sbC4wTm9QZXJtaXNzaW9uAAIEyFRoZSBhY3RvciBoYXMgbm8gcGVybWlzc2lvbiB0byBjb25kdWN0IHRoZSBhY3Rpb24uPE5vUGVybWlzc2lvbllldAADBFkBVGhlIGFjdG9yIGhhcyBubyBwZXJtaXNzaW9uIHRvIGNvbmR1Y3QgdGhlIGFjdGlvbiByaWdodCBub3cgYnV0IHdpbGwgZG8gaW4gdGhlIGZ1dHVyZS5EQWxyZWFkeURlbGVnYXRpbmcABASIVGhlIGFjY291bnQgaXMgYWxyZWFkeSBkZWxlZ2F0aW5nLjRBbHJlYWR5Vm90aW5nAAUIVQFUaGUgYWNjb3VudCBjdXJyZW50bHkgaGFzIHZvdGVzIGF0dGFjaGVkIHRvIGl0IGFuZCB0aGUgb3BlcmF0aW9uIGNhbm5vdCBzdWNjZWVkIHVudGlsoHRoZXNlIGFyZSByZW1vdmVkIHRocm91Z2ggYHJlbW92ZV92b3RlYC5ESW5zdWZmaWNpZW50RnVuZHMABgT8VG9vIGhpZ2ggYSBiYWxhbmNlIHdhcyBwcm92aWRlZCB0aGF0IHRoZSBhY2NvdW50IGNhbm5vdCBhZmZvcmQuNE5vdERlbGVnYXRpbmcABwSgVGhlIGFjY291bnQgaXMgbm90IGN1cnJlbnRseSBkZWxlZ2F0aW5nLiBOb25zZW5zZQAIBJREZWxlZ2F0aW9uIHRvIG9uZXNlbGYgbWFrZXMgbm8gc2Vuc2UuPE1heFZvdGVzUmVhY2hlZAAJBIBNYXhpbXVtIG51bWJlciBvZiB2b3RlcyByZWFjaGVkLixDbGFzc05lZWRlZAAKBDkBVGhlIGNsYXNzIG11c3QgYmUgc3VwcGxpZWQgc2luY2UgaXQgaXMgbm90IGVhc2lseSBkZXRlcm1pbmFibGUgZnJvbSB0aGUgc3RhdGUuIEJhZENsYXNzAAsEhFRoZSBjbGFzcyBJRCBzdXBwbGllZCBpcyBpbnZhbGlkLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC7VDQxAcGFsbGV0X3JlZmVyZW5kYRR0eXBlczhSZWZlcmVuZHVtSW5mbyAcVHJhY2tJZAHtAzRSdW50aW1lT3JpZ2luAfEDGE1vbWVudAE4EENhbGwBCQUcQmFsYW5jZQFZARRUYWxseQExCSRBY2NvdW50SWQBBDxTY2hlZHVsZUFkZHJlc3MB0AEYHE9uZ29pbmcEANkNAY0BUmVmZXJlbmR1bVN0YXR1czxUcmFja0lkLCBSdW50aW1lT3JpZ2luLCBNb21lbnQsIENhbGwsIEJhbGFuY2UsIFRhbGx5LApBY2NvdW50SWQsIFNjaGVkdWxlQWRkcmVzcyw+AAAAIEFwcHJvdmVkDAA4ARhNb21lbnQAAOENAYxPcHRpb248RGVwb3NpdDxBY2NvdW50SWQsIEJhbGFuY2U+PgAA4Q0BjE9wdGlvbjxEZXBvc2l0PEFjY291bnRJZCwgQmFsYW5jZT4+AAEAIFJlamVjdGVkDAA4ARhNb21lbnQAAOENAYxPcHRpb248RGVwb3NpdDxBY2NvdW50SWQsIEJhbGFuY2U+PgAA4Q0BjE9wdGlvbjxEZXBvc2l0PEFjY291bnRJZCwgQmFsYW5jZT4+AAIAJENhbmNlbGxlZAwAOAEYTW9tZW50AADhDQGMT3B0aW9uPERlcG9zaXQ8QWNjb3VudElkLCBCYWxhbmNlPj4AAOENAYxPcHRpb248RGVwb3NpdDxBY2NvdW50SWQsIEJhbGFuY2U+PgADACBUaW1lZE91dAwAOAEYTW9tZW50AADhDQGMT3B0aW9uPERlcG9zaXQ8QWNjb3VudElkLCBCYWxhbmNlPj4AAOENAYxPcHRpb248RGVwb3NpdDxBY2NvdW50SWQsIEJhbGFuY2U+PgAEABhLaWxsZWQEADgBGE1vbWVudAAFAADZDQxAcGFsbGV0X3JlZmVyZW5kYRR0eXBlc0BSZWZlcmVuZHVtU3RhdHVzIBxUcmFja0lkAe0DNFJ1bnRpbWVPcmlnaW4B8QMYTW9tZW50ATgQQ2FsbAEJBRxCYWxhbmNlAVkBFFRhbGx5ATEJJEFjY291bnRJZAEEPFNjaGVkdWxlQWRkcmVzcwHQACwBFHRyYWNr7QMBHFRyYWNrSWQAARhvcmlnaW7xAwE0UnVudGltZU9yaWdpbgABIHByb3Bvc2FsCQUBEENhbGwAASRlbmFjdG1lbnQRBQFQRGlzcGF0Y2hUaW1lPE1vbWVudD4AASRzdWJtaXR0ZWQ4ARhNb21lbnQAAUhzdWJtaXNzaW9uX2RlcG9zaXTdDQFsRGVwb3NpdDxBY2NvdW50SWQsIEJhbGFuY2U+AAFAZGVjaXNpb25fZGVwb3NpdOENAYxPcHRpb248RGVwb3NpdDxBY2NvdW50SWQsIEJhbGFuY2U+PgABIGRlY2lkaW5n5Q0BeE9wdGlvbjxEZWNpZGluZ1N0YXR1czxNb21lbnQ+PgABFHRhbGx5MQkBFFRhbGx5AAEgaW5fcXVldWVdAQEQYm9vbAABFGFsYXJt7Q0BhE9wdGlvbjwoTW9tZW50LCBTY2hlZHVsZUFkZHJlc3MpPgAA3Q0MQHBhbGxldF9yZWZlcmVuZGEUdHlwZXMcRGVwb3NpdAgkQWNjb3VudElkAQQcQmFsYW5jZQFZAQAIAQx3aG8EASRBY2NvdW50SWQAARhhbW91bnRZAQEcQmFsYW5jZQAA4Q0EGE9wdGlvbgQEVAHdDQEIEE5vbmUAAAAQU29tZQQA3Q0AAAEAAOUNBBhPcHRpb24EBFQB6Q0BCBBOb25lAAAAEFNvbWUEAOkNAAABAADpDQxAcGFsbGV0X3JlZmVyZW5kYRR0eXBlczhEZWNpZGluZ1N0YXR1cwQsQmxvY2tOdW1iZXIBOAAIARRzaW5jZTgBLEJsb2NrTnVtYmVyAAEoY29uZmlybWluZ+QBTE9wdGlvbjxCbG9ja051bWJlcj4AAO0NBBhPcHRpb24EBFQB8Q0BCBBOb25lAAAAEFNvbWUEAPENAAABAADxDQAABAg40AD1DQxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAfkNBFMAAAQA/Q0BGFZlYzxUPgAA+Q0AAAQIOFkBAP0NAAAC+Q0AAQ4AAAIFDgAFDgAABAjtAwkOAAkODEBwYWxsZXRfcmVmZXJlbmRhFHR5cGVzMFRyYWNrRGV0YWlscwwcQmFsYW5jZQFZARhNb21lbnQBOBBOYW1lAdUJACQBEG5hbWXVCQEQTmFtZQABMG1heF9kZWNpZGluZzgBDHUzMgABQGRlY2lzaW9uX2RlcG9zaXRZAQEcQmFsYW5jZQABOHByZXBhcmVfcGVyaW9kOAEYTW9tZW50AAE8ZGVjaXNpb25fcGVyaW9kOAEYTW9tZW50AAE4Y29uZmlybV9wZXJpb2Q4ARhNb21lbnQAAVBtaW5fZW5hY3RtZW50X3BlcmlvZDgBGE1vbWVudAABMG1pbl9hcHByb3ZhbA0OARRDdXJ2ZQABLG1pbl9zdXBwb3J0DQ4BFEN1cnZlAAANDgxAcGFsbGV0X3JlZmVyZW5kYRR0eXBlcxRDdXJ2ZQABDEBMaW5lYXJEZWNyZWFzaW5nDAEYbGVuZ3RooQEBHFBlcmJpbGwAARRmbG9vcqEBARxQZXJiaWxsAAEQY2VpbKEBARxQZXJiaWxsAAAARFN0ZXBwZWREZWNyZWFzaW5nEAEUYmVnaW6hAQEcUGVyYmlsbAABDGVuZKEBARxQZXJiaWxsAAEQc3RlcKEBARxQZXJiaWxsAAEYcGVyaW9koQEBHFBlcmJpbGwAAQAoUmVjaXByb2NhbAwBGGZhY3RvchEOASBGaXhlZEk2NAABIHhfb2Zmc2V0EQ4BIEZpeGVkSTY0AAEgeV9vZmZzZXQRDgEgRml4ZWRJNjQAAgAAEQ4MNHNwX2FyaXRobWV0aWMsZml4ZWRfcG9pbnQgRml4ZWRJNjQAAAQAFQ4BDGk2NAAAFQ4AAAUMABkODEBwYWxsZXRfcmVmZXJlbmRhGHBhbGxldBRFcnJvcggEVAAESQABOChOb3RPbmdvaW5nAAAEaFJlZmVyZW5kdW0gaXMgbm90IG9uZ29pbmcuKEhhc0RlcG9zaXQAAQS4UmVmZXJlbmR1bSdzIGRlY2lzaW9uIGRlcG9zaXQgaXMgYWxyZWFkeSBwYWlkLiBCYWRUcmFjawACBJxUaGUgdHJhY2sgaWRlbnRpZmllciBnaXZlbiB3YXMgaW52YWxpZC4QRnVsbAADBDEBVGhlcmUgYXJlIGFscmVhZHkgYSBmdWxsIGNvbXBsZW1lbnQgb2YgcmVmZXJlbmRhIGluIHByb2dyZXNzIGZvciB0aGlzIHRyYWNrLihRdWV1ZUVtcHR5AAQEgFRoZSBxdWV1ZSBvZiB0aGUgdHJhY2sgaXMgZW1wdHkuNEJhZFJlZmVyZW5kdW0ABQTkVGhlIHJlZmVyZW5kdW0gaW5kZXggcHJvdmlkZWQgaXMgaW52YWxpZCBpbiB0aGlzIGNvbnRleHQuLE5vdGhpbmdUb0RvAAYErFRoZXJlIHdhcyBub3RoaW5nIHRvIGRvIGluIHRoZSBhZHZhbmNlbWVudC4cTm9UcmFjawAHBKBObyB0cmFjayBleGlzdHMgZm9yIHRoZSBwcm9wb3NhbCBvcmlnaW4uKFVuZmluaXNoZWQACAQBAUFueSBkZXBvc2l0IGNhbm5vdCBiZSByZWZ1bmRlZCB1bnRpbCBhZnRlciB0aGUgZGVjaXNpb24gaXMgb3Zlci4wTm9QZXJtaXNzaW9uAAkEqFRoZSBkZXBvc2l0IHJlZnVuZGVyIGlzIG5vdCB0aGUgZGVwb3NpdG9yLiROb0RlcG9zaXQACgTMVGhlIGRlcG9zaXQgY2Fubm90IGJlIHJlZnVuZGVkIHNpbmNlIG5vbmUgd2FzIG1hZGUuJEJhZFN0YXR1cwALBNBUaGUgcmVmZXJlbmR1bSBzdGF0dXMgaXMgaW52YWxpZCBmb3IgdGhpcyBvcGVyYXRpb24uQFByZWltYWdlTm90RXhpc3QADARwVGhlIHByZWltYWdlIGRvZXMgbm90IGV4aXN0LoRQcmVpbWFnZVN0b3JlZFdpdGhEaWZmZXJlbnRMZW5ndGgADQQVAVRoZSBwcmVpbWFnZSBpcyBzdG9yZWQgd2l0aCBhIGRpZmZlcmVudCBsZW5ndGggdGhhbiB0aGUgb25lIHByb3ZpZGVkLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC4dDgxAcGFsbGV0X3doaXRlbGlzdBhwYWxsZXQURXJyb3IEBFQAARRMVW5hdmFpbGFibGVQcmVJbWFnZQAABMhUaGUgcHJlaW1hZ2Ugb2YgdGhlIGNhbGwgaGFzaCBjb3VsZCBub3QgYmUgbG9hZGVkLjxVbmRlY29kYWJsZUNhbGwAAQR4VGhlIGNhbGwgY291bGQgbm90IGJlIGRlY29kZWQuYEludmFsaWRDYWxsV2VpZ2h0V2l0bmVzcwACBOxUaGUgd2VpZ2h0IG9mIHRoZSBkZWNvZGVkIGNhbGwgd2FzIGhpZ2hlciB0aGFuIHRoZSB3aXRuZXNzLlBDYWxsSXNOb3RXaGl0ZWxpc3RlZAADBHRUaGUgY2FsbCB3YXMgbm90IHdoaXRlbGlzdGVkLlhDYWxsQWxyZWFkeVdoaXRlbGlzdGVkAAQEoFRoZSBjYWxsIHdhcyBhbHJlYWR5IHdoaXRlbGlzdGVkOyBOby1PcC4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuIQ4IPHBhbGxldF9ib3VudGllcxhCb3VudHkMJEFjY291bnRJZAEEHEJhbGFuY2UBWQEsQmxvY2tOdW1iZXIBOAAYASBwcm9wb3NlcgQBJEFjY291bnRJZAABFHZhbHVlWQEBHEJhbGFuY2UAAQxmZWVZAQEcQmFsYW5jZQABPGN1cmF0b3JfZGVwb3NpdFkBARxCYWxhbmNlAAEQYm9uZFkBARxCYWxhbmNlAAEYc3RhdHVzJQ4BkEJvdW50eVN0YXR1czxBY2NvdW50SWQsIEJsb2NrTnVtYmVyPgAAJQ4IPHBhbGxldF9ib3VudGllczBCb3VudHlTdGF0dXMIJEFjY291bnRJZAEELEJsb2NrTnVtYmVyATgBHCBQcm9wb3NlZAAAACBBcHByb3ZlZAABABhGdW5kZWQAAgA8Q3VyYXRvclByb3Bvc2VkBAEcY3VyYXRvcgQBJEFjY291bnRJZAADABhBY3RpdmUIARxjdXJhdG9yBAEkQWNjb3VudElkAAEodXBkYXRlX2R1ZTgBLEJsb2NrTnVtYmVyAAQANFBlbmRpbmdQYXlvdXQMARxjdXJhdG9yBAEkQWNjb3VudElkAAEsYmVuZWZpY2lhcnkEASRBY2NvdW50SWQAASR1bmxvY2tfYXQ4ASxCbG9ja051bWJlcgAFAExBcHByb3ZlZFdpdGhDdXJhdG9yBAEcY3VyYXRvcgQBJEFjY291bnRJZAAGAAApDgxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQwEUwAABAAYARhWZWM8VD4AAC0ODDxwYWxsZXRfYm91bnRpZXMYcGFsbGV0FEVycm9yCARUAARJAAEwcEluc3VmZmljaWVudFByb3Bvc2Vyc0JhbGFuY2UAAAR4UHJvcG9zZXIncyBiYWxhbmNlIGlzIHRvbyBsb3cuMEludmFsaWRJbmRleAABBJBObyBwcm9wb3NhbCBvciBib3VudHkgYXQgdGhhdCBpbmRleC4wUmVhc29uVG9vQmlnAAIEhFRoZSByZWFzb24gZ2l2ZW4gaXMganVzdCB0b28gYmlnLkBVbmV4cGVjdGVkU3RhdHVzAAMEgFRoZSBib3VudHkgc3RhdHVzIGlzIHVuZXhwZWN0ZWQuOFJlcXVpcmVDdXJhdG9yAAQEXFJlcXVpcmUgYm91bnR5IGN1cmF0b3IuMEludmFsaWRWYWx1ZQAFBFRJbnZhbGlkIGJvdW50eSB2YWx1ZS4oSW52YWxpZEZlZQAGBExJbnZhbGlkIGJvdW50eSBmZWUuNFBlbmRpbmdQYXlvdXQABwhsQSBib3VudHkgcGF5b3V0IGlzIHBlbmRpbmcu+FRvIGNhbmNlbCB0aGUgYm91bnR5LCB5b3UgbXVzdCB1bmFzc2lnbiBhbmQgc2xhc2ggdGhlIGN1cmF0b3IuJFByZW1hdHVyZQAIBEUBVGhlIGJvdW50aWVzIGNhbm5vdCBiZSBjbGFpbWVkL2Nsb3NlZCBiZWNhdXNlIGl0J3Mgc3RpbGwgaW4gdGhlIGNvdW50ZG93biBwZXJpb2QuUEhhc0FjdGl2ZUNoaWxkQm91bnR5AAkEBQFUaGUgYm91bnR5IGNhbm5vdCBiZSBjbG9zZWQgYmVjYXVzZSBpdCBoYXMgYWN0aXZlIGNoaWxkIGJvdW50aWVzLjRUb29NYW55UXVldWVkAAoEmFRvbyBtYW55IGFwcHJvdmFscyBhcmUgYWxyZWFkeSBxdWV1ZWQuLE5vdFByb3Bvc2VyAAsEnFVzZXIgaXMgbm90IHRoZSBwcm9wb3NlciBvZiB0aGUgYm91bnR5LgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC4xDghUcGFsbGV0X2NoaWxkX2JvdW50aWVzLENoaWxkQm91bnR5DCRBY2NvdW50SWQBBBxCYWxhbmNlAVkBLEJsb2NrTnVtYmVyATgAFAE0cGFyZW50X2JvdW50eTgBLEJvdW50eUluZGV4AAEUdmFsdWVZAQEcQmFsYW5jZQABDGZlZVkBARxCYWxhbmNlAAE8Y3VyYXRvcl9kZXBvc2l0WQEBHEJhbGFuY2UAARhzdGF0dXM1DgGkQ2hpbGRCb3VudHlTdGF0dXM8QWNjb3VudElkLCBCbG9ja051bWJlcj4AADUOCFRwYWxsZXRfY2hpbGRfYm91bnRpZXNEQ2hpbGRCb3VudHlTdGF0dXMIJEFjY291bnRJZAEELEJsb2NrTnVtYmVyATgBEBRBZGRlZAAAADxDdXJhdG9yUHJvcG9zZWQEARxjdXJhdG9yBAEkQWNjb3VudElkAAEAGEFjdGl2ZQQBHGN1cmF0b3IEASRBY2NvdW50SWQAAgA0UGVuZGluZ1BheW91dAwBHGN1cmF0b3IEASRBY2NvdW50SWQAASxiZW5lZmljaWFyeQQBJEFjY291bnRJZAABJHVubG9ja19hdDgBLEJsb2NrTnVtYmVyAAMAADkODFRwYWxsZXRfY2hpbGRfYm91bnRpZXMYcGFsbGV0FEVycm9yBARUAAEMVFBhcmVudEJvdW50eU5vdEFjdGl2ZQAABKRUaGUgcGFyZW50IGJvdW50eSBpcyBub3QgaW4gYWN0aXZlIHN0YXRlLmRJbnN1ZmZpY2llbnRCb3VudHlCYWxhbmNlAAEE5FRoZSBib3VudHkgYmFsYW5jZSBpcyBub3QgZW5vdWdoIHRvIGFkZCBuZXcgY2hpbGQtYm91bnR5LlBUb29NYW55Q2hpbGRCb3VudGllcwACBA0BTnVtYmVyIG9mIGNoaWxkIGJvdW50aWVzIGV4Y2VlZHMgbGltaXQgYE1heEFjdGl2ZUNoaWxkQm91bnR5Q291bnRgLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC49DgxEcGFsbGV0X2Fzc2V0X3JhdGUYcGFsbGV0FEVycm9yBARUAAEMQFVua25vd25Bc3NldEtpbmQAAAR4VGhlIGdpdmVuIGFzc2V0IElEIGlzIHVua25vd24uNEFscmVhZHlFeGlzdHMAAQRRAVRoZSBnaXZlbiBhc3NldCBJRCBhbHJlYWR5IGhhcyBhbiBhc3NpZ25lZCBjb252ZXJzaW9uIHJhdGUgYW5kIGNhbm5vdCBiZSByZS1jcmVhdGVkLiBPdmVyZmxvdwACBMxPdmVyZmxvdyBvY3VycmVkIHdoZW4gY2FsY3VsYXRpbmcgdGhlIGludmVyc2UgcmF0ZS4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuQQ4IbHBhbGxldF9tdWx0aV9hc3NldF9ib3VudGllcxhCb3VudHkYJEFjY291bnRJZAEEHEJhbGFuY2UBWQEkQXNzZXRLaW5kAekEEEhhc2gBQCRQYXltZW50SWQBKCxCZW5lZmljaWFyeQHtBAAQAShhc3NldF9raW5k6QQBJEFzc2V0S2luZAABFHZhbHVlWQEBHEJhbGFuY2UAASBtZXRhZGF0YUABEEhhc2gAARhzdGF0dXNFDgG8Qm91bnR5U3RhdHVzPEFjY291bnRJZCwgUGF5bWVudElkLCBCZW5lZmljaWFyeT4AAEUOCGxwYWxsZXRfbXVsdGlfYXNzZXRfYm91bnRpZXMwQm91bnR5U3RhdHVzDCRBY2NvdW50SWQBBCRQYXltZW50SWQBKCxCZW5lZmljaWFyeQHtBAEYQEZ1bmRpbmdBdHRlbXB0ZWQIARxjdXJhdG9yBAEkQWNjb3VudElkAAE4cGF5bWVudF9zdGF0dXNJDgFcUGF5bWVudFN0YXRlPFBheW1lbnRJZD4AAAAYRnVuZGVkBAEcY3VyYXRvcgQBJEFjY291bnRJZAABAERDdXJhdG9yVW5hc3NpZ25lZAACABhBY3RpdmUEARxjdXJhdG9yBAEkQWNjb3VudElkAAMAPFJlZnVuZEF0dGVtcHRlZAgBHGN1cmF0b3KRAQFET3B0aW9uPEFjY291bnRJZD4AAThwYXltZW50X3N0YXR1c0kOAVxQYXltZW50U3RhdGU8UGF5bWVudElkPgAEADxQYXlvdXRBdHRlbXB0ZWQMARxjdXJhdG9yBAEkQWNjb3VudElkAAEsYmVuZWZpY2lhcnntBAEsQmVuZWZpY2lhcnkAAThwYXltZW50X3N0YXR1c0kOAVxQYXltZW50U3RhdGU8UGF5bWVudElkPgAFAABJDghscGFsbGV0X211bHRpX2Fzc2V0X2JvdW50aWVzMFBheW1lbnRTdGF0ZQQISWQBKAEQHFBlbmRpbmcAAAAkQXR0ZW1wdGVkBAEIaWQoAQhJZAABABhGYWlsZWQAAgAkU3VjY2VlZGVkAAMAAE0OCGxwYWxsZXRfbXVsdGlfYXNzZXRfYm91bnRpZXMsQ2hpbGRCb3VudHkUJEFjY291bnRJZAEEHEJhbGFuY2UBWQEQSGFzaAFAJFBheW1lbnRJZAEoLEJlbmVmaWNpYXJ5Ae0EABABNHBhcmVudF9ib3VudHk4ASxCb3VudHlJbmRleAABFHZhbHVlWQEBHEJhbGFuY2UAASBtZXRhZGF0YUABEEhhc2gAARhzdGF0dXNFDgG8Qm91bnR5U3RhdHVzPEFjY291bnRJZCwgUGF5bWVudElkLCBCZW5lZmljaWFyeT4AAFEOAAAECDjkAFUOFDRmcmFtZV9zdXBwb3J0GHRyYWl0cxh0b2tlbnMgZnVuZ2libGVESG9sZENvbnNpZGVyYXRpb24UBEEABEYABFIABEQACEZwAAAEAFkBAShGOjpCYWxhbmNlAABZDgxscGFsbGV0X211bHRpX2Fzc2V0X2JvdW50aWVzGHBhbGxldBRFcnJvcggEVAAESQABSDBJbnZhbGlkSW5kZXgAAAR8Tm8gY2hpbGQtL2JvdW50eSBhdCB0aGF0IGluZGV4LjBSZWFzb25Ub29CaWcAAQSEVGhlIHJlYXNvbiBnaXZlbiBpcyBqdXN0IHRvbyBiaWcuMEludmFsaWRWYWx1ZQACBHBJbnZhbGlkIGNoaWxkLS9ib3VudHkgdmFsdWUuWEZhaWxlZFRvQ29udmVydEJhbGFuY2UAAwhdAVRoZSBiYWxhbmNlIG9mIHRoZSBhc3NldCBraW5kIGlzIG5vdCBjb252ZXJ0aWJsZSB0byB0aGUgYmFsYW5jZSBvZiB0aGUgbmF0aXZlIGFzc2V0IGZvcoRhc3NlcnRpbmcgdGhlIG9yaWdpbiBwZXJtaXNzaW9ucy5AVW5leHBlY3RlZFN0YXR1cwAEBJxUaGUgY2hpbGQtL2JvdW50eSBzdGF0dXMgaXMgdW5leHBlY3RlZC44UmVxdWlyZUN1cmF0b3IABQR4UmVxdWlyZSBjaGlsZC0vYm91bnR5IGN1cmF0b3IuWEluc3VmZmljaWVudFBlcm1pc3Npb24ABghFAVRoZSBzcGVuZCBvcmlnaW4gaXMgdmFsaWQgYnV0IHRoZSBhbW91bnQgaXQgaXMgYWxsb3dlZCB0byBzcGVuZCBpcyBsb3dlciB0aGFuIHRoZURyZXF1ZXN0ZWQgYW1vdW50LjBGdW5kaW5nRXJyb3IABwS8VGhlcmUgd2FzIGlzc3VlIHdpdGggZnVuZGluZyB0aGUgY2hpbGQtL2JvdW50eS4sUmVmdW5kRXJyb3IACATEVGhlcmUgd2FzIGlzc3VlIHdpdGggcmVmdW5kaW5nIHRoZSBjaGlsZC0vYm91bnR5LixQYXlvdXRFcnJvcgAJAExGdW5kaW5nSW5jb25jbHVzaXZlAAoEsENoaWxkLS9ib3VudHkgZnVuZGluZyBoYXMgbm90IGNvbmNsdWRlZCB5ZXQuSFJlZnVuZEluY29uY2x1c2l2ZQALBKxDaGlsZC0vYm91bnR5IHJlZnVuZCBoYXMgbm90IGNvbmNsdWRlZCB5ZXQuSFBheW91dEluY29uY2x1c2l2ZQAMBKxDaGlsZC0vYm91bnR5IHBheW91dCBoYXMgbm90IGNvbmNsdWRlZCB5ZXQuVEZhaWxlZFRvQ29udmVydFNvdXJjZQANCFUBVGhlIGNoaWxkLS9ib3VudHkgb3IgZnVuZGluZyBzb3VyY2UgYWNjb3VudCBjb3VsZCBub3QgYmUgZGVyaXZlZCBmcm9tIHRoZSBpbmRleGVzIGFuZCxhc3NldCBraW5kLlBIYXNBY3RpdmVDaGlsZEJvdW50eQAOBCEBVGhlIHBhcmVudCBib3VudHkgY2Fubm90IGJlIGNsb3NlZCBiZWNhdXNlIGl0IGhhcyBhY3RpdmUgY2hpbGQgYm91bnRpZXMuUFRvb01hbnlDaGlsZEJvdW50aWVzAA8EDQFOdW1iZXIgb2YgY2hpbGQgYm91bnRpZXMgZXhjZWVkcyBsaW1pdCBgTWF4QWN0aXZlQ2hpbGRCb3VudHlDb3VudGAuXEluc3VmZmljaWVudEJvdW50eVZhbHVlABAE+FRoZSBwYXJlbnQgYm91bnR5IHZhbHVlIGlzIG5vdCBlbm91Z2ggdG8gYWRkIG5ldyBjaGlsZC1ib3VudHkuQFByZWltYWdlTm90RXhpc3QAEQRwVGhlIHByZWltYWdlIGRvZXMgbm90IGV4aXN0LgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC5dDghccGFsbGV0X25vbWluYXRpb25fcG9vbHMoUG9vbE1lbWJlcgQEVAAAEAEccG9vbF9pZDgBGFBvb2xJZAABGHBvaW50c1kBATBCYWxhbmNlT2Y8VD4AAXBsYXN0X3JlY29yZGVkX3Jld2FyZF9jb3VudGVyKQUBQFQ6OlJld2FyZENvdW50ZXIAATh1bmJvbmRpbmdfZXJhc2EOAeBCb3VuZGVkQlRyZWVNYXA8RXJhSW5kZXgsIEJhbGFuY2VPZjxUPiwgVDo6TWF4VW5ib25kaW5nPgAAYQ4MTGJvdW5kZWRfY29sbGVjdGlvbnNEYm91bmRlZF9idHJlZV9tYXA8Qm91bmRlZEJUcmVlTWFwDARLATgEVgFZAQRTAAAEAGUOAThCVHJlZU1hcDxLLCBWPgAAZQ4EIEJUcmVlTWFwCARLATgEVgFZAQAEAP0NAAAAaQ4IXHBhbGxldF9ub21pbmF0aW9uX3Bvb2xzPEJvbmRlZFBvb2xJbm5lcgQEVAAAFAEoY29tbWlzc2lvbm0OATRDb21taXNzaW9uPFQ+AAE4bWVtYmVyX2NvdW50ZXI4AQx1MzIAARhwb2ludHNZAQEwQmFsYW5jZU9mPFQ+AAEUcm9sZXN1DgFcUG9vbFJvbGVzPFQ6OkFjY291bnRJZD4AARRzdGF0ZVEFASRQb29sU3RhdGUAAG0OCFxwYWxsZXRfbm9taW5hdGlvbl9wb29scyhDb21taXNzaW9uBARUAAAUARxjdXJyZW50aQUBfE9wdGlvbjwoUGVyYmlsbCwgVDo6QWNjb3VudElkKT4AAQxtYXhlCQE8T3B0aW9uPFBlcmJpbGw+AAEsY2hhbmdlX3JhdGVxDgG8T3B0aW9uPENvbW1pc3Npb25DaGFuZ2VSYXRlPEJsb2NrTnVtYmVyRm9yPFQ+Pj4AATR0aHJvdHRsZV9mcm9t5AFkT3B0aW9uPEJsb2NrTnVtYmVyRm9yPFQ+PgABQGNsYWltX3Blcm1pc3Npb251BQG8T3B0aW9uPENvbW1pc3Npb25DbGFpbVBlcm1pc3Npb248VDo6QWNjb3VudElkPj4AAHEOBBhPcHRpb24EBFQBcQUBCBBOb25lAAAAEFNvbWUEAHEFAAABAAB1DghccGFsbGV0X25vbWluYXRpb25fcG9vbHMkUG9vbFJvbGVzBCRBY2NvdW50SWQBBAAQASRkZXBvc2l0b3IEASRBY2NvdW50SWQAARByb290kQEBRE9wdGlvbjxBY2NvdW50SWQ+AAEkbm9taW5hdG9ykQEBRE9wdGlvbjxBY2NvdW50SWQ+AAEcYm91bmNlcpEBAURPcHRpb248QWNjb3VudElkPgAAeQ4IXHBhbGxldF9ub21pbmF0aW9uX3Bvb2xzKFJld2FyZFBvb2wEBFQAABQBcGxhc3RfcmVjb3JkZWRfcmV3YXJkX2NvdW50ZXIpBQFAVDo6UmV3YXJkQ291bnRlcgABbGxhc3RfcmVjb3JkZWRfdG90YWxfcGF5b3V0c1kBATBCYWxhbmNlT2Y8VD4AAVR0b3RhbF9yZXdhcmRzX2NsYWltZWRZAQEwQmFsYW5jZU9mPFQ+AAFgdG90YWxfY29tbWlzc2lvbl9wZW5kaW5nWQEBMEJhbGFuY2VPZjxUPgABYHRvdGFsX2NvbW1pc3Npb25fY2xhaW1lZFkBATBCYWxhbmNlT2Y8VD4AAH0OCFxwYWxsZXRfbm9taW5hdGlvbl9wb29scyBTdWJQb29scwQEVAAACAEYbm9fZXJhgQ4BNFVuYm9uZFBvb2w8VD4AASB3aXRoX2VyYYUOAQEBQm91bmRlZEJUcmVlTWFwPEVyYUluZGV4LCBVbmJvbmRQb29sPFQ+LCBUb3RhbFVuYm9uZGluZ1Bvb2xzPFQ+PgAAgQ4IXHBhbGxldF9ub21pbmF0aW9uX3Bvb2xzKFVuYm9uZFBvb2wEBFQAAAgBGHBvaW50c1kBATBCYWxhbmNlT2Y8VD4AARxiYWxhbmNlWQEBMEJhbGFuY2VPZjxUPgAAhQ4MTGJvdW5kZWRfY29sbGVjdGlvbnNEYm91bmRlZF9idHJlZV9tYXA8Qm91bmRlZEJUcmVlTWFwDARLATgEVgGBDgRTAAAEAIkOAThCVHJlZU1hcDxLLCBWPgAAiQ4EIEJUcmVlTWFwCARLATgEVgGBDgAEAI0OAAAAjQ4AAAKRDgCRDgAABAg4gQ4AlQ4MXHBhbGxldF9ub21pbmF0aW9uX3Bvb2xzGHBhbGxldBRFcnJvcgQEVAABmDBQb29sTm90Rm91bmQAAASIQSAoYm9uZGVkKSBwb29sIGlkIGRvZXMgbm90IGV4aXN0LkhQb29sTWVtYmVyTm90Rm91bmQAAQRsQW4gYWNjb3VudCBpcyBub3QgYSBtZW1iZXIuSFJld2FyZFBvb2xOb3RGb3VuZAACBCEBQSByZXdhcmQgcG9vbCBkb2VzIG5vdCBleGlzdC4gSW4gYWxsIGNhc2VzIHRoaXMgaXMgYSBzeXN0ZW0gbG9naWMgZXJyb3IuQFN1YlBvb2xzTm90Rm91bmQAAwRoQSBzdWIgcG9vbCBkb2VzIG5vdCBleGlzdC5kQWNjb3VudEJlbG9uZ3NUb090aGVyUG9vbAAECE0BQW4gYWNjb3VudCBpcyBhbHJlYWR5IGRlbGVnYXRpbmcgaW4gYW5vdGhlciBwb29sLiBBbiBhY2NvdW50IG1heSBvbmx5IGJlbG9uZyB0byBvbmU8cG9vbCBhdCBhIHRpbWUuOEZ1bGx5VW5ib25kaW5nAAUIPQFUaGUgbWVtYmVyIGlzIGZ1bGx5IHVuYm9uZGVkIChhbmQgdGh1cyBjYW5ub3QgYWNjZXNzIHRoZSBib25kZWQgYW5kIHJld2FyZCBwb29sqGFueW1vcmUgdG8sIGZvciBleGFtcGxlLCBjb2xsZWN0IHJld2FyZHMpLkRNYXhVbmJvbmRpbmdMaW1pdAAGBAkBVGhlIG1lbWJlciBjYW5ub3QgdW5ib25kIGZ1cnRoZXIgY2h1bmtzIGR1ZSB0byByZWFjaGluZyB0aGUgbGltaXQuRENhbm5vdFdpdGhkcmF3QW55AAcETQFOb25lIG9mIHRoZSBmdW5kcyBjYW4gYmUgd2l0aGRyYXduIHlldCBiZWNhdXNlIHRoZSBib25kaW5nIGR1cmF0aW9uIGhhcyBub3QgcGFzc2VkLkRNaW5pbXVtQm9uZE5vdE1ldAAIFCkBVGhlIGFtb3VudCBkb2VzIG5vdCBtZWV0IHRoZSBtaW5pbXVtIGJvbmQgdG8gZWl0aGVyIGpvaW4gb3IgY3JlYXRlIGEgcG9vbC4AVQFUaGUgZGVwb3NpdG9yIGNhbiBuZXZlciB1bmJvbmQgdG8gYSB2YWx1ZSBsZXNzIHRoYW4gYFBhbGxldDo6ZGVwb3NpdG9yX21pbl9ib25kYC4gVGhlXQFjYWxsZXIgZG9lcyBub3QgaGF2ZSBub21pbmF0aW5nIHBlcm1pc3Npb25zIGZvciB0aGUgcG9vbC4gTWVtYmVycyBjYW4gbmV2ZXIgdW5ib25kIHRvIGFodmFsdWUgYmVsb3cgYE1pbkpvaW5Cb25kYC4wT3ZlcmZsb3dSaXNrAAkEIQFUaGUgdHJhbnNhY3Rpb24gY291bGQgbm90IGJlIGV4ZWN1dGVkIGR1ZSB0byBvdmVyZmxvdyByaXNrIGZvciB0aGUgcG9vbC40Tm90RGVzdHJveWluZwAKCF0BQSBwb29sIG11c3QgYmUgaW4gW2BQb29sU3RhdGU6OkRlc3Ryb3lpbmdgXSBpbiBvcmRlciBmb3IgdGhlIGRlcG9zaXRvciB0byB1bmJvbmQgb3IgZm9yuG90aGVyIG1lbWJlcnMgdG8gYmUgcGVybWlzc2lvbmxlc3NseSB1bmJvbmRlZC4wTm90Tm9taW5hdG9yAAsE9FRoZSBjYWxsZXIgZG9lcyBub3QgaGF2ZSBub21pbmF0aW5nIHBlcm1pc3Npb25zIGZvciB0aGUgcG9vbC5UTm90S2lja2VyT3JEZXN0cm95aW5nAAwEPQFFaXRoZXIgYSkgdGhlIGNhbGxlciBjYW5ub3QgbWFrZSBhIHZhbGlkIGtpY2sgb3IgYikgdGhlIHBvb2wgaXMgbm90IGRlc3Ryb3lpbmcuHE5vdE9wZW4ADQRwVGhlIHBvb2wgaXMgbm90IG9wZW4gdG8gam9pbiBNYXhQb29scwAOBIRUaGUgc3lzdGVtIGlzIG1heGVkIG91dCBvbiBwb29scy44TWF4UG9vbE1lbWJlcnMADwScVG9vIG1hbnkgbWVtYmVycyBpbiB0aGUgcG9vbCBvciBzeXN0ZW0uRENhbk5vdENoYW5nZVN0YXRlABAEiFRoZSBwb29scyBzdGF0ZSBjYW5ub3QgYmUgY2hhbmdlZC5URG9lc05vdEhhdmVQZXJtaXNzaW9uABEEuFRoZSBjYWxsZXIgZG9lcyBub3QgaGF2ZSBhZGVxdWF0ZSBwZXJtaXNzaW9ucy5UTWV0YWRhdGFFeGNlZWRzTWF4TGVuABIErE1ldGFkYXRhIGV4Y2VlZHMgW2BDb25maWc6Ok1heE1ldGFkYXRhTGVuYF0kRGVmZW5zaXZlBACZDgE4RGVmZW5zaXZlRXJyb3IAEwgxAVNvbWUgZXJyb3Igb2NjdXJyZWQgdGhhdCBzaG91bGQgbmV2ZXIgaGFwcGVuLiBUaGlzIHNob3VsZCBiZSByZXBvcnRlZCB0byB0aGUwbWFpbnRhaW5lcnMunFBhcnRpYWxVbmJvbmROb3RBbGxvd2VkUGVybWlzc2lvbmxlc3NseQAUBLxQYXJ0aWFsIHVuYm9uZGluZyBub3cgYWxsb3dlZCBwZXJtaXNzaW9ubGVzc2x5LlxNYXhDb21taXNzaW9uUmVzdHJpY3RlZAAVBB0BVGhlIHBvb2wncyBtYXggY29tbWlzc2lvbiBjYW5ub3QgYmUgc2V0IGhpZ2hlciB0aGFuIHRoZSBleGlzdGluZyB2YWx1ZS5gQ29tbWlzc2lvbkV4Y2VlZHNNYXhpbXVtABYE7FRoZSBzdXBwbGllZCBjb21taXNzaW9uIGV4Y2VlZHMgdGhlIG1heCBhbGxvd2VkIGNvbW1pc3Npb24ueENvbW1pc3Npb25FeGNlZWRzR2xvYmFsTWF4aW11bQAXBOhUaGUgc3VwcGxpZWQgY29tbWlzc2lvbiBleGNlZWRzIGdsb2JhbCBtYXhpbXVtIGNvbW1pc3Npb24uZENvbW1pc3Npb25DaGFuZ2VUaHJvdHRsZWQAGAQJAU5vdCBlbm91Z2ggYmxvY2tzIGhhdmUgc3VycGFzc2VkIHNpbmNlIHRoZSBsYXN0IGNvbW1pc3Npb24gdXBkYXRlLnhDb21taXNzaW9uQ2hhbmdlUmF0ZU5vdEFsbG93ZWQAGQQBAVRoZSBzdWJtaXR0ZWQgY2hhbmdlcyB0byBjb21taXNzaW9uIGNoYW5nZSByYXRlIGFyZSBub3QgYWxsb3dlZC5MTm9QZW5kaW5nQ29tbWlzc2lvbgAaBKBUaGVyZSBpcyBubyBwZW5kaW5nIGNvbW1pc3Npb24gdG8gY2xhaW0uWE5vQ29tbWlzc2lvbkN1cnJlbnRTZXQAGwSMTm8gY29tbWlzc2lvbiBjdXJyZW50IGhhcyBiZWVuIHNldC4sUG9vbElkSW5Vc2UAHARkUG9vbCBpZCBjdXJyZW50bHkgaW4gdXNlLjRJbnZhbGlkUG9vbElkAB0EnFBvb2wgaWQgcHJvdmlkZWQgaXMgbm90IGNvcnJlY3QvdXNhYmxlLkxCb25kRXh0cmFSZXN0cmljdGVkAB4E/EJvbmRpbmcgZXh0cmEgaXMgcmVzdHJpY3RlZCB0byB0aGUgZXhhY3QgcGVuZGluZyByZXdhcmQgYW1vdW50LjxOb3RoaW5nVG9BZGp1c3QAHwSwTm8gaW1iYWxhbmNlIGluIHRoZSBFRCBkZXBvc2l0IGZvciB0aGUgcG9vbC44Tm90aGluZ1RvU2xhc2gAIATMTm8gc2xhc2ggcGVuZGluZyB0aGF0IGNhbiBiZSBhcHBsaWVkIHRvIHRoZSBtZW1iZXIuLFNsYXNoVG9vTG93ACEEqFRoZSBzbGFzaCBhbW91bnQgaXMgdG9vIGxvdyB0byBiZSBhcHBsaWVkLjxBbHJlYWR5TWlncmF0ZWQAIgQVAVRoZSBwb29sIG9yIG1lbWJlciBkZWxlZ2F0aW9uIGhhcyBhbHJlYWR5IG1pZ3JhdGVkIHRvIGRlbGVnYXRlIHN0YWtlLixOb3RNaWdyYXRlZAAjBBUBVGhlIHBvb2wgb3IgbWVtYmVyIGRlbGVnYXRpb24gaGFzIG5vdCBtaWdyYXRlZCB5ZXQgdG8gZGVsZWdhdGUgc3Rha2UuME5vdFN1cHBvcnRlZAAkBPBUaGlzIGNhbGwgaXMgbm90IGFsbG93ZWQgaW4gdGhlIGN1cnJlbnQgc3RhdGUgb2YgdGhlIHBhbGxldC4oUmVzdHJpY3RlZAAlCFEBQWNjb3VudCBpcyByZXN0cmljdGVkIGZyb20gcGFydGljaXBhdGlvbiBpbiBwb29scy4gVGhpcyBtYXkgaGFwcGVuIGlmIHRoZSBhY2NvdW50IGlzfHN0YWtpbmcgaW4gYW5vdGhlciB3YXkgYWxyZWFkeS4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQumQ4MXHBhbGxldF9ub21pbmF0aW9uX3Bvb2xzGHBhbGxldDhEZWZlbnNpdmVFcnJvcgABHGhOb3RFbm91Z2hTcGFjZUluVW5ib25kUG9vbAAAADBQb29sTm90Rm91bmQAAQBIUmV3YXJkUG9vbE5vdEZvdW5kAAIAQFN1YlBvb2xzTm90Rm91bmQAAwBwQm9uZGVkU3Rhc2hLaWxsZWRQcmVtYXR1cmVseQAEAFREZWxlZ2F0aW9uVW5zdXBwb3J0ZWQABQA8U2xhc2hOb3RBcHBsaWVkAAYAAJ0ODEBwYWxsZXRfYmFnc19saXN0EGxpc3QQTm9kZQgEVAAESQAAFAEIaWQEATBUOjpBY2NvdW50SWQAARBwcmV2kQEBUE9wdGlvbjxUOjpBY2NvdW50SWQ+AAEQbmV4dJEBAVBPcHRpb248VDo6QWNjb3VudElkPgABJGJhZ191cHBlcigBIFQ6OlNjb3JlAAEUc2NvcmUoASBUOjpTY29yZQAAoQ4MQHBhbGxldF9iYWdzX2xpc3QQbGlzdAxCYWcIBFQABEkAAAgBEGhlYWSRAQFQT3B0aW9uPFQ6OkFjY291bnRJZD4AARB0YWlskQEBUE9wdGlvbjxUOjpBY2NvdW50SWQ+AAClDgAAAigAqQ4MQHBhbGxldF9iYWdzX2xpc3QYcGFsbGV0FEVycm9yCARUAARJAAEIEExpc3QEAK0OASRMaXN0RXJyb3IAAAS0QSBlcnJvciBpbiB0aGUgbGlzdCBpbnRlcmZhY2UgaW1wbGVtZW50YXRpb24uGExvY2tlZAABBNhDb3VsZCBub3QgdXBkYXRlIGEgbm9kZSwgYmVjYXVzZSB0aGUgcGFsbGV0IGlzIGxvY2tlZC4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQurQ4MQHBhbGxldF9iYWdzX2xpc3QQbGlzdCRMaXN0RXJyb3IAARQkRHVwbGljYXRlAAAAKE5vdEhlYXZpZXIAAQAwTm90SW5TYW1lQmFnAAIAME5vZGVOb3RGb3VuZAADABhMb2NrZWQABAAAsQ4AAAQIAQEBAQC1DgxgcGFsbGV0X2RlbGVnYXRlZF9zdGFraW5nFHR5cGVzKERlbGVnYXRpb24EBFQAAAgBFGFnZW50BAEwVDo6QWNjb3VudElkAAEYYW1vdW50WQEBMEJhbGFuY2VPZjxUPgAAuQ4MYHBhbGxldF9kZWxlZ2F0ZWRfc3Rha2luZxR0eXBlcyxBZ2VudExlZGdlcgQEVAAAEAEUcGF5ZWUEATBUOjpBY2NvdW50SWQAATx0b3RhbF9kZWxlZ2F0ZWRVAQEwQmFsYW5jZU9mPFQ+AAFUdW5jbGFpbWVkX3dpdGhkcmF3YWxzVQEBMEJhbGFuY2VPZjxUPgABNHBlbmRpbmdfc2xhc2hVAQEwQmFsYW5jZU9mPFQ+AAC9DgxgcGFsbGV0X2RlbGVnYXRlZF9zdGFraW5nGHBhbGxldBRFcnJvcgQEVAABMChOb3RBbGxvd2VkAAAEqFRoZSBhY2NvdW50IGNhbm5vdCBwZXJmb3JtIHRoaXMgb3BlcmF0aW9uLjhBbHJlYWR5U3Rha2luZwABBLhBbiBleGlzdGluZyBzdGFrZXIgY2Fubm90IHBlcmZvcm0gdGhpcyBhY3Rpb24uYEludmFsaWRSZXdhcmREZXN0aW5hdGlvbgACBNRSZXdhcmQgRGVzdGluYXRpb24gY2Fubm90IGJlIHNhbWUgYXMgYEFnZW50YCBhY2NvdW50LkRJbnZhbGlkRGVsZWdhdGlvbgADFIhEZWxlZ2F0aW9uIGNvbmRpdGlvbnMgYXJlIG5vdCBtZXQuAExQb3NzaWJsZSBpc3N1ZXMgYXJlbDEpIENhbm5vdCBkZWxlZ2F0ZSB0byBzZWxmLKQyKSBDYW5ub3QgZGVsZWdhdGUgdG8gbXVsdGlwbGUgZGVsZWdhdGVzLjhOb3RFbm91Z2hGdW5kcwAEBAEBVGhlIGFjY291bnQgZG9lcyBub3QgaGF2ZSBlbm91Z2ggZnVuZHMgdG8gcGVyZm9ybSB0aGUgb3BlcmF0aW9uLiBOb3RBZ2VudAAFBIBOb3QgYW4gZXhpc3RpbmcgYEFnZW50YCBhY2NvdW50LjBOb3REZWxlZ2F0b3IABgRgTm90IGEgRGVsZWdhdG9yIGFjY291bnQuIEJhZFN0YXRlAAcEiFNvbWUgY29ycnVwdGlvbiBpbiBpbnRlcm5hbCBzdGF0ZS44VW5hcHBsaWVkU2xhc2gACATcVW5hcHBsaWVkIHBlbmRpbmcgc2xhc2ggcmVzdHJpY3RzIG9wZXJhdGlvbiBvbiBgQWdlbnRgLjhOb3RoaW5nVG9TbGFzaAAJBKxgQWdlbnRgIGhhcyBubyBwZW5kaW5nIHNsYXNoIHRvIGJlIGFwcGxpZWQuOFdpdGhkcmF3RmFpbGVkAAoEsEZhaWxlZCB0byB3aXRoZHJhdyBhbW91bnQgZnJvbSBDb3JlIFN0YWtpbmcuME5vdFN1cHBvcnRlZAALBJxPcGVyYXRpb24gbm90IHN1cHBvcnRlZCBieSB0aGlzIHBhbGxldC4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuwQ4AAAQIxQ44AMUOCHhwYWxsZXRfc3Rha2luZ19hc3luY19yY19jbGllbnRIVmFsaWRhdG9yU2V0UmVwb3J0BCRBY2NvdW50SWQBBAAQAURuZXdfdmFsaWRhdG9yX3NldGEBAThWZWM8QWNjb3VudElkPgABCGlkOAEMdTMyAAEscHJ1bmVfdXBfdG/kAVBPcHRpb248U2Vzc2lvbkluZGV4PgABIGxlZnRvdmVyXQEBEGJvb2wAAMkODHhwYWxsZXRfc3Rha2luZ19hc3luY19yY19jbGllbnQYcGFsbGV0FEVycm9yBARUAAEUNFhjbVNlbmRGYWlsZWQAAAS4RmFpbGVkIHRvIHNlbmQgWENNIG1lc3NhZ2UgdG8gdGhlIFJlbGF5IENoYWluLjBOb3RWYWxpZGF0b3IAARTEVGhlIG9yaWdpbiBhY2NvdW50IGlzIG5vdCBhIHJlZ2lzdGVyZWQgdmFsaWRhdG9yLgBZAU9ubHkgYWNjb3VudHMgdGhhdCBoYXZlIGNhbGxlZCBgdmFsaWRhdGUoKWAgY2FuIHNldCBvciBwdXJnZSBzZXNzaW9uIGtleXMuIFdoZW4gY2FsbGVkSQF2aWEgYSBzdGFraW5nIHByb3h5LCB0aGUgb3JpZ2luIGlzIHRoZSBkZWxlZ2F0aW5nIGFjY291bnQgKHN0YXNoKSwgd2hpY2ggbXVzdCBiZSBhVHJlZ2lzdGVyZWQgdmFsaWRhdG9yLixJbnZhbGlkS2V5cwACBEUBVGhlIHNlc3Npb24ga2V5cyBjb3VsZCBub3QgYmUgZGVjb2RlZCBhcyB0aGUgZXhwZWN0ZWQgUmVsYXlDaGFpblNlc3Npb25LZXlzIHR5cGUuMEludmFsaWRQcm9vZgADBLRJbnZhbGlkIG93bmVyc2hpcCBwcm9vZiBmb3IgdGhlIHNlc3Npb24ga2V5cy48RmVlc0V4Y2VlZGVkTWF4AAQEtERlbGl2ZXJ5IGZlZXMgZXhjZWVkZWQgdGhlIHNwZWNpZmllZCBtYXhpbXVtLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC7NDgxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAdEOBFMAAAQA2Q4BGFZlYzxUPgAA0Q4AAAQMBCjVDgDVDgxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQQEUwAABABhAQEYVmVjPFQ+AADZDgAAAtEOAN0ODExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBBARTAAAEAGEBARhWZWM8VD4AAOEODJBwYWxsZXRfZWxlY3Rpb25fcHJvdmlkZXJfbXVsdGlfYmxvY2sYcGFsbGV0FEVycm9yBARUAAEMIEZhbGxiYWNrAAAEhFRyaWdnZXJpbmcgdGhlIGBGYWxsYmFja2AgZmFpbGVkLjxVbmV4cGVjdGVkUGhhc2UAAQRAVW5leHBlY3RlZCBwaGFzZSBTbmFwc2hvdAACBGRTbmFwc2hvdCB3YXMgdW5hdmFpbGFibGUuBA0BRXJyb3Igb2YgdGhlIHBhbGxldCB0aGF0IGNhbiBiZSByZXR1cm5lZCBpbiByZXNwb25zZSB0byBkaXNwYXRjaGVzLuUOEJBwYWxsZXRfZWxlY3Rpb25fcHJvdmlkZXJfbXVsdGlfYmxvY2sgdmVyaWZpZXIUaW1wbHM0VmFsaWRTb2x1dGlvbgABCARYAAAABFkAAQAA6Q4MTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAHtDgRTAAAEAPUOARhWZWM8VD4AAO0OAAAECATxDgDxDhCQcGFsbGV0X2VsZWN0aW9uX3Byb3ZpZGVyX211bHRpX2Jsb2NrIHZlcmlmaWVyFGltcGxzPFBhcnRpYWxCYWNraW5ncwAACAEUdG90YWxZAQE8RXh0ZW5kZWRCYWxhbmNlAAEcYmFja2VyczgBDHUzMgAA9Q4AAALtDgD5DhCQcGFsbGV0X2VsZWN0aW9uX3Byb3ZpZGVyX211bHRpX2Jsb2NrIHZlcmlmaWVyFGltcGxzGFN0YXR1cwABCBxPbmdvaW5nBAA4ASRQYWdlSW5kZXgAAAAcTm90aGluZwABAAD9DgxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQEPBFMAAAQABQ8BGFZlYzxUPgAAAQ8AAAQIBNUFAAUPAAACAQ8ACQ8AAAQMOAQ4AA0PDJBwYWxsZXRfZWxlY3Rpb25fcHJvdmlkZXJfbXVsdGlfYmxvY2sYc2lnbmVkSFN1Ym1pc3Npb25NZXRhZGF0YQQEVAAAFAEcZGVwb3NpdFkBATBCYWxhbmNlT2Y8VD4AAQxmZWVZAQEwQmFsYW5jZU9mPFQ+AAEYcmV3YXJkWQEBMEJhbGFuY2VPZjxUPgABNGNsYWltZWRfc2NvcmXVBQE0RWxlY3Rpb25TY29yZQABFHBhZ2VzEQ8BaEJvdW5kZWRWZWM8Ym9vbCwgVDo6UGFnZXM+AAARDwxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAV0BBFMAAAQAFQ8BGFZlYzxUPgAAFQ8AAAJdAQAZDxCQcGFsbGV0X2VsZWN0aW9uX3Byb3ZpZGVyX211bHRpX2Jsb2NrGHNpZ25lZBhwYWxsZXQURXJyb3IEBFQAASQ4UGhhc2VOb3RTaWduZWQAAARgVGhlIHBoYXNlIGlzIG5vdCBzaWduZWQuJER1cGxpY2F0ZQABBHhUaGUgc3VibWlzc2lvbiBpcyBhIGR1cGxpY2F0ZS4kUXVldWVGdWxsAAIESFRoZSBxdWV1ZSBpcyBmdWxsLjBCYWRQYWdlSW5kZXgAAwSAVGhlIHBhZ2UgaW5kZXggaXMgb3V0IG9mIGJvdW5kcy40Tm90UmVnaXN0ZXJlZAAEBHhUaGUgYWNjb3VudCBpcyBub3QgcmVnaXN0ZXJlZC4wTm9TdWJtaXNzaW9uAAUEUE5vIHN1Ym1pc3Npb24gZm91bmQuMFJvdW5kTm90T3ZlcgAGBFhSb3VuZCBpcyBub3QgeWV0IG92ZXIuOEJhZFdpdG5lc3NEYXRhAAcEaEJhZCB3aXRuZXNzIGRhdGEgcHJvdmlkZWQuUFRvb01hbnlJbnZ1bG5lcmFibGVzAAgEsFRvbyBtYW55IGludnVsbmVyYWJsZSBhY2NvdW50cyBhcmUgcHJvdmlkZWQsBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0Lh0PDFBwYWxsZXRfc3Rha2luZ19hc3luYxhsZWRnZXI0U3Rha2luZ0xlZGdlcgQEVAAAEAEUc3Rhc2gEATBUOjpBY2NvdW50SWQAARR0b3RhbFUBATBCYWxhbmNlT2Y8VD4AARhhY3RpdmVVAQEwQmFsYW5jZU9mPFQ+AAEkdW5sb2NraW5n+QYB8EJvdW5kZWRWZWM8VW5sb2NrQ2h1bms8QmFsYW5jZU9mPFQ+PiwgVDo6TWF4VW5sb2NraW5nQ2h1bmtzPgAAIQ8IUHBhbGxldF9zdGFraW5nX2FzeW5jLE5vbWluYXRpb25zBARUAAAMARx0YXJnZXRz1Q4BtEJvdW5kZWRWZWM8VDo6QWNjb3VudElkLCBNYXhOb21pbmF0aW9uc09mPFQ+PgABMHN1Ym1pdHRlZF9pbjgBIEVyYUluZGV4AAEoc3VwcHJlc3NlZF0BARBib29sAAAlDwhQcGFsbGV0X3N0YWtpbmdfYXN5bmM0QWN0aXZlRXJhSW5mbwAACAEUaW5kZXg4ASBFcmFJbmRleAABFHN0YXJ0AQEBLE9wdGlvbjx1NjQ+AAApDwxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAdAEUwAABADJCQEYVmVjPFQ+AAAtDwgoc3Bfc3Rha2luZ1RQYWdlZEV4cG9zdXJlTWV0YWRhdGEEHEJhbGFuY2UBWQEAEAEUdG90YWxVAQEcQmFsYW5jZQABDG93blUBARxCYWxhbmNlAAE8bm9taW5hdG9yX2NvdW50OAEMdTMyAAEocGFnZV9jb3VudDgBEFBhZ2UAADEPEFBwYWxsZXRfc3Rha2luZ19hc3luYxhwYWxsZXQYcGFsbGV0TEJvdW5kZWRFeHBvc3VyZVBhZ2UEBFQAAAQANQ8BoEV4cG9zdXJlUGFnZTxUOjpBY2NvdW50SWQsIEJhbGFuY2VPZjxUPj4AADUPCChzcF9zdGFraW5nMEV4cG9zdXJlUGFnZQgkQWNjb3VudElkAQQcQmFsYW5jZQFZAQAIAShwYWdlX3RvdGFsVQEBHEJhbGFuY2UAARhvdGhlcnM5DwGsVmVjPEluZGl2aWR1YWxFeHBvc3VyZTxBY2NvdW50SWQsIEJhbGFuY2U+PgAAOQ8AAAI9DwA9Dwgoc3Bfc3Rha2luZ0hJbmRpdmlkdWFsRXhwb3N1cmUIJEFjY291bnRJZAEEHEJhbGFuY2UBWQEACAEMd2hvBAEkQWNjb3VudElkAAEUdmFsdWVVAQEcQmFsYW5jZQAAQQ8MTGJvdW5kZWRfY29sbGVjdGlvbnNAd2Vha19ib3VuZGVkX3ZlYzhXZWFrQm91bmRlZFZlYwgEVAE4BFMAAAQAXQQBGFZlYzxUPgAARQ8IUHBhbGxldF9zdGFraW5nX2FzeW5jPEVyYVJld2FyZFBvaW50cwQEVAAACAEUdG90YWw4ASxSZXdhcmRQb2ludAABKGluZGl2aWR1YWxJDwH4Qm91bmRlZEJUcmVlTWFwPFQ6OkFjY291bnRJZCwgUmV3YXJkUG9pbnQsIFQ6Ok1heFZhbGlkYXRvclNldD4AAEkPDExib3VuZGVkX2NvbGxlY3Rpb25zRGJvdW5kZWRfYnRyZWVfbWFwPEJvdW5kZWRCVHJlZU1hcAwESwEEBFYBOARTAAAEAE0PAThCVHJlZU1hcDxLLCBWPgAATQ8EIEJUcmVlTWFwCARLAQQEVgE4AAQAiQUAAABRDwxQcGFsbGV0X3N0YWtpbmdfYXN5bmMgc2xhc2hpbmc0T2ZmZW5jZVJlY29yZAQkQWNjb3VudElkAQQAFAEgcmVwb3J0ZXKRAQFET3B0aW9uPEFjY291bnRJZD4AATByZXBvcnRlZF9lcmE4ASBFcmFJbmRleAABNGV4cG9zdXJlX3BhZ2U4AQx1MzIAAThzbGFzaF9mcmFjdGlvbqEBARxQZXJiaWxsAAFQcHJpb3Jfc2xhc2hfZnJhY3Rpb26hAQEcUGVyYmlsbAAAVQ8MTGJvdW5kZWRfY29sbGVjdGlvbnNAd2Vha19ib3VuZGVkX3ZlYzhXZWFrQm91bmRlZFZlYwgEVAE4BFMAAAQAXQQBGFZlYzxUPgAAWQ8AAAQMOARRDwBdDwAABAg4BQcAYQ8IUHBhbGxldF9zdGFraW5nX2FzeW5jOFVuYXBwbGllZFNsYXNoBARUAAAUASR2YWxpZGF0b3IEATBUOjpBY2NvdW50SWQAAQxvd25ZAQEwQmFsYW5jZU9mPFQ+AAEYb3RoZXJzZQ8BEQFXZWFrQm91bmRlZFZlYzwoVDo6QWNjb3VudElkLCBCYWxhbmNlT2Y8VD4pLCBUOjpNYXhFeHBvc3VyZVBhZ2VTaXplPgABIHJlcG9ydGVykQEBUE9wdGlvbjxUOjpBY2NvdW50SWQ+AAEYcGF5b3V0WQEBMEJhbGFuY2VPZjxUPgAAZQ8MTGJvdW5kZWRfY29sbGVjdGlvbnNAd2Vha19ib3VuZGVkX3ZlYzhXZWFrQm91bmRlZFZlYwgEVAHJBQRTAAAEAM0FARhWZWM8VD4AAGkPDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQB2QYEUwAABADVBgEYVmVjPFQ+AABtDwAABAihAVkBAHEPCFBwYWxsZXRfc3Rha2luZ19hc3luYzhTbmFwc2hvdFN0YXR1cwQkQWNjb3VudElkAQQBDBxPbmdvaW5nBAAEASRBY2NvdW50SWQAAAAgQ29uc3VtZWQAAQAcV2FpdGluZwACAAB1DwxMYm91bmRlZF9jb2xsZWN0aW9uc0Rib3VuZGVkX2J0cmVlX3NldDxCb3VuZGVkQlRyZWVTZXQIBFQBBARTAAAEADkNASxCVHJlZVNldDxUPgAAeQ8QUHBhbGxldF9zdGFraW5nX2FzeW5jGHBhbGxldBhwYWxsZXQsUHJ1bmluZ1N0ZXAAASRARXJhc1N0YWtlcnNQYWdlZAAAAExFcmFzU3Rha2Vyc092ZXJ2aWV3AAEASEVyYXNWYWxpZGF0b3JQcmVmcwACADhDbGFpbWVkUmV3YXJkcwADAExFcmFzVmFsaWRhdG9yUmV3YXJkAAQAQEVyYXNSZXdhcmRQb2ludHMABQBMU2luZ2xlRW50cnlDbGVhbnVwcwAGAExWYWxpZGF0b3JTbGFzaEluRXJhAAcAcEVyYXNWYWxpZGF0b3JJbmNlbnRpdmVXZWlnaHQACAAAfQ8QUHBhbGxldF9zdGFraW5nX2FzeW5jGHBhbGxldBhwYWxsZXQURXJyb3IEBFQAAZg0Tm90Q29udHJvbGxlcgAABGROb3QgYSBjb250cm9sbGVyIGFjY291bnQuIE5vdFN0YXNoAAEEUE5vdCBhIHN0YXNoIGFjY291bnQuNEFscmVhZHlCb25kZWQAAgRgU3Rhc2ggaXMgYWxyZWFkeSBib25kZWQuNEFscmVhZHlQYWlyZWQAAwR0Q29udHJvbGxlciBpcyBhbHJlYWR5IHBhaXJlZC4wRW1wdHlUYXJnZXRzAAQEYFRhcmdldHMgY2Fubm90IGJlIGVtcHR5LjhEdXBsaWNhdGVJbmRleAAFBEBEdXBsaWNhdGUgaW5kZXguSEludmFsaWRTbGFzaFJlY29yZAAGBFxTbGFzaCByZWNvcmQgbm90IGZvdW5kLkBJbnN1ZmZpY2llbnRCb25kAAcMNQFDYW5ub3QgYm9uZCwgbm9taW5hdGUgb3IgdmFsaWRhdGUgd2l0aCB2YWx1ZSBsZXNzIHRoYW4gdGhlIG1pbmltdW0gZGVmaW5lZCBieT0BZ292ZXJuYW5jZSAoc2VlIGBNaW5WYWxpZGF0b3JCb25kYCBhbmQgYE1pbk5vbWluYXRvckJvbmRgKS4gSWYgdW5ib25kaW5nIGlzIHRoZRUBaW50ZW50aW9uLCBgY2hpbGxgIGZpcnN0IHRvIHJlbW92ZSBvbmUncyByb2xlIGFzIHZhbGlkYXRvci9ub21pbmF0b3IuME5vTW9yZUNodW5rcwAIBJBDYW4gbm90IHNjaGVkdWxlIG1vcmUgdW5sb2NrIGNodW5rcy40Tm9VbmxvY2tDaHVuawAJBKBDYW4gbm90IHJlYm9uZCB3aXRob3V0IHVubG9ja2luZyBjaHVua3MuMEZ1bmRlZFRhcmdldAAKBMhBdHRlbXB0aW5nIHRvIHRhcmdldCBhIHN0YXNoIHRoYXQgc3RpbGwgaGFzIGZ1bmRzLkhJbnZhbGlkRXJhVG9SZXdhcmQACwRYSW52YWxpZCBlcmEgdG8gcmV3YXJkLmhJbnZhbGlkTnVtYmVyT2ZOb21pbmF0aW9ucwAMBHhJbnZhbGlkIG51bWJlciBvZiBub21pbmF0aW9ucy44QWxyZWFkeUNsYWltZWQADQQJAVJld2FyZHMgZm9yIHRoaXMgZXJhIGhhdmUgYWxyZWFkeSBiZWVuIGNsYWltZWQgZm9yIHRoaXMgdmFsaWRhdG9yLixJbnZhbGlkUGFnZQAOBIRObyBub21pbmF0b3JzIGV4aXN0IG9uIHRoaXMgcGFnZS5USW5jb3JyZWN0SGlzdG9yeURlcHRoAA8EwEluY29ycmVjdCBwcmV2aW91cyBoaXN0b3J5IGRlcHRoIGlucHV0IHByb3ZpZGVkLiBCYWRTdGF0ZQAQBDkBSW50ZXJuYWwgc3RhdGUgaGFzIGJlY29tZSBzb21laG93IGNvcnJ1cHRlZCBhbmQgdGhlIG9wZXJhdGlvbiBjYW5ub3QgY29udGludWUuOFRvb01hbnlUYXJnZXRzABEElFRvbyBtYW55IG5vbWluYXRpb24gdGFyZ2V0cyBzdXBwbGllZC4kQmFkVGFyZ2V0ABIEPQFBIG5vbWluYXRpb24gdGFyZ2V0IHdhcyBzdXBwbGllZCB0aGF0IHdhcyBibG9ja2VkIG9yIG90aGVyd2lzZSBub3QgYSB2YWxpZGF0b3IuQENhbm5vdENoaWxsT3RoZXIAEwRVAVRoZSB1c2VyIGhhcyBlbm91Z2ggYm9uZCBhbmQgdGh1cyBjYW5ub3QgYmUgY2hpbGxlZCBmb3JjZWZ1bGx5IGJ5IGFuIGV4dGVybmFsIHBlcnNvbi5EVG9vTWFueU5vbWluYXRvcnMAFAhNAVRoZXJlIGFyZSB0b28gbWFueSBub21pbmF0b3JzIGluIHRoZSBzeXN0ZW0uIEdvdmVybmFuY2UgbmVlZHMgdG8gYWRqdXN0IHRoZSBzdGFraW5ntHNldHRpbmdzIHRvIGtlZXAgdGhpbmdzIHNhZmUgZm9yIHRoZSBydW50aW1lLkRUb29NYW55VmFsaWRhdG9ycwAVCFUBVGhlcmUgYXJlIHRvbyBtYW55IHZhbGlkYXRvciBjYW5kaWRhdGVzIGluIHRoZSBzeXN0ZW0uIEdvdmVybmFuY2UgbmVlZHMgdG8gYWRqdXN0IHRoZdRzdGFraW5nIHNldHRpbmdzIHRvIGtlZXAgdGhpbmdzIHNhZmUgZm9yIHRoZSBydW50aW1lLkBDb21taXNzaW9uVG9vTG93ABYE4ENvbW1pc3Npb24gaXMgdG9vIGxvdy4gTXVzdCBiZSBhdCBsZWFzdCBgTWluQ29tbWlzc2lvbmAuLEJvdW5kTm90TWV0ABcEWFNvbWUgYm91bmQgaXMgbm90IG1ldC5QQ29udHJvbGxlckRlcHJlY2F0ZWQAGAQBAVVzZWQgd2hlbiBhdHRlbXB0aW5nIHRvIHVzZSBkZXByZWNhdGVkIGNvbnRyb2xsZXIgYWNjb3VudCBsb2dpYy5MQ2Fubm90UmVzdG9yZUxlZGdlcgAZBFhDYW5ub3QgcmVzZXQgYSBsZWRnZXIubFJld2FyZERlc3RpbmF0aW9uUmVzdHJpY3RlZAAaBKxQcm92aWRlZCByZXdhcmQgZGVzdGluYXRpb24gaXMgbm90IGFsbG93ZWQuOE5vdEVub3VnaEZ1bmRzABsEnE5vdCBlbm91Z2ggZnVuZHMgYXZhaWxhYmxlIHRvIHdpdGhkcmF3LlxWaXJ0dWFsU3Rha2VyTm90QWxsb3dlZAAcBKhPcGVyYXRpb24gbm90IGFsbG93ZWQgZm9yIHZpcnR1YWwgc3Rha2Vycy48Q2Fubm90UmVhcFN0YXNoAB0E9FN0YXNoIGNvdWxkIG5vdCBiZSByZWFwZWQgYXMgb3RoZXIgcGFsbGV0IG1pZ2h0IGRlcGVuZCBvbiBpdC48QWxyZWFkeU1pZ3JhdGVkAB4ECQFUaGUgc3Rha2Ugb2YgdGhpcyBhY2NvdW50IGlzIGFscmVhZHkgbWlncmF0ZWQgdG8gYEZ1bmdpYmxlYCBob2xkcy40RXJhTm90U3RhcnRlZAAfBFBFcmEgbm90IHlldCBzdGFydGVkLihSZXN0cmljdGVkACAIWQFBY2NvdW50IGlzIHJlc3RyaWN0ZWQgZnJvbSBwYXJ0aWNpcGF0aW9uIGluIHN0YWtpbmcuIFRoaXMgbWF5IGhhcHBlbiBpZiB0aGUgYWNjb3VudCBpc8RzdGFraW5nIGluIGFub3RoZXIgd2F5IGFscmVhZHksIHN1Y2ggYXMgdmlhIHBvb2wudFVuYXBwbGllZFNsYXNoZXNJblByZXZpb3VzRXJhACEILQFVbmFwcGxpZWQgc2xhc2hlcyBpbiB0aGUgcmVjZW50bHkgY29uY2x1ZGVkIGVyYSBpcyBibG9ja2luZyB0aGlzIG9wZXJhdGlvbi6YU2VlIGBDYWxsOjphcHBseV9zbGFzaGAgdG8gYXBwbHkgdGhlbS44RXJhTm90UHJ1bmFibGUAIgSQVGhlIGVyYSBpcyBub3QgZWxpZ2libGUgZm9yIHBydW5pbmcuOENhbmNlbGxlZFNsYXNoACMEzFRoZSBzbGFzaCBoYXMgYmVlbiBjYW5jZWxsZWQgYW5kIGNhbm5vdCBiZSBhcHBsaWVkLkRDb21taXNzaW9uVG9vSGlnaAAkBPhDb21taXNzaW9uIGlzIGhpZ2hlciB0aGFuIHRoZSBhbGxvd2VkIG1heGltdW0gYE1heENvbW1pc3Npb25gLlRPcHRpbXVtR3JlYXRlclRoYW5DYXAAJQTMT3B0aW11bSBzZWxmLXN0YWtlIGNhbm5vdCBiZSBncmVhdGVyIHRoYW4gaGFyZCBjYXAuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LoEPCFBwYWxsZXRfc3Rha2luZ19hc3luYyRSZXdhcmRQb3QAAQgcR2VuZXJhbAQAhQ8BKFJld2FyZEtpbmQAAAAMRXJhCAA4ASBFcmFJbmRleAAAhQ8BKFJld2FyZEtpbmQAAQAAhQ8IUHBhbGxldF9zdGFraW5nX2FzeW5jKFJld2FyZEtpbmQAAQg0U3Rha2VyUmV3YXJkcwAAAEhWYWxpZGF0b3JTZWxmU3Rha2UAAQAAiQ8MUHBhbGxldF9zdGFraW5nX2FzeW5jGHJld2FyZExFcmFSZXdhcmRBbGxvY2F0aW9uBBxCYWxhbmNlAVkBAAgBOHN0YWtlcl9yZXdhcmRzWQEBHEJhbGFuY2UAAUx2YWxpZGF0b3JfaW5jZW50aXZlWQEBHEJhbGFuY2UAAI0PAAAECAg4AJEPDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBlQ8EUwAABACZDwEYVmVjPFQ+AACVDwx8aW5kaXZfcGFsbGV0X21lbWJlcnNfc3Vic2NyaWJlchR0eXBlc1BSaW5nQ29tbWl0bWVudFJlY29yZAQEVAAAEAEQcm9vdCEHATBNZW1iZXJzT2Y8VD4AASByZXZpc2lvbjgBNFJldmlzaW9uSW5kZXgAASxzb3VyY2VfdGltZSgBDHU2NAABPHNvdXJjZV9zZXF1ZW5jZSgBOFNlcXVlbmNlTnVtYmVyAACZDwAAApUPAJ0PDHxpbmRpdl9wYWxsZXRfbWVtYmVyc19zdWJzY3JpYmVyFHR5cGVzTFJpbmdDb2xsZWN0aW9uU3RhdGUIKE1heE1pc3NpbmcAKE1heERlbGV0ZWQAABABKHJpbmdfY291bnQ4AQx1MzIAATxuZXh0X3JpbmdfaW5kZXg4AQx1MzIAATxtaXNzaW5nX2luZGljZXOhDwGsQm91bmRlZEJUcmVlTWFwPFJpbmdJbmRleCwgdTMyLCBNYXhNaXNzaW5nPgABPGRlbGV0ZWRfaW5kaWNlc6kPAZhCb3VuZGVkQlRyZWVTZXQ8UmluZ0luZGV4LCBNYXhEZWxldGVkPgAAoQ8MTGJvdW5kZWRfY29sbGVjdGlvbnNEYm91bmRlZF9idHJlZV9tYXA8Qm91bmRlZEJUcmVlTWFwDARLATgEVgE4BFMAAAQApQ8BOEJUcmVlTWFwPEssIFY+AAClDwQgQlRyZWVNYXAIBEsBOARWATgABADJCQAAAKkPDExib3VuZGVkX2NvbGxlY3Rpb25zRGJvdW5kZWRfYnRyZWVfc2V0PEJvdW5kZWRCVHJlZVNldAgEVAE4BFMAAAQArQ8BLEJUcmVlU2V0PFQ+AACtDwQgQlRyZWVTZXQEBFQBOAAEAF0EAAAAsQ8MfGluZGl2X3BhbGxldF9tZW1iZXJzX3N1YnNjcmliZXIUdHlwZXNIU3Vic2NyaXB0aW9uU3RhdHVzAAEMIEluYWN0aXZlAAAAGEFjdGl2ZQQBXGluaXRpYWxpemVkX2F0X3NlcXVlbmNlKAE4U2VxdWVuY2VOdW1iZXIAAQAoVGVybWluYXRlZAACAAC1Dwx8aW5kaXZfcGFsbGV0X21lbWJlcnNfc3Vic2NyaWJlchR0eXBlc1hVcGRhdGVzUHJvY2Vzc2luZ1N0YXRlAAAMAVxsYXN0X3Byb2Nlc3NlZF9zZXF1ZW5jZSgBOFNlcXVlbmNlTnVtYmVyAAFgbGFzdF9iYXRjaF9yZWNlaXZlZF90aW1lKAEMdTY0AAFgbGFzdF9yZXBsYXlfcmVxdWVzdF90aW1lKAEMdTY0AAC5Dwx8aW5kaXZfcGFsbGV0X21lbWJlcnNfc3Vic2NyaWJlchR0eXBlc0BOb3RpZmllckVuZHBvaW50AAAIASBsb2NhdGlvbh0CASBMb2NhdGlvbgABMHBhbGxldF9pbmRleAwBCHU4AAC9Dwx8aW5kaXZfcGFsbGV0X21lbWJlcnNfc3Vic2NyaWJlchhwYWxsZXQURXJyb3IEBFQAASQ0WGNtU2VuZEZhaWxlZAAABGBYQ00gbWVzc2FnZSBzZW5kIGZhaWxlZC5QU3Vic2NyaXB0aW9uSW5hY3RpdmUAAQSMU3Vic2NyaXB0aW9uIGlzIGN1cnJlbnRseSBpbmFjdGl2ZS5YU3Vic2NyaXB0aW9uVGVybWluYXRlZAACBJBTdWJzY3JpcHRpb24gaXMgaW4gdGVybWluYXRlZCBzdGF0ZS5kU3Vic2NyaXB0aW9uQWxyZWFkeUFjdGl2ZQADBC0BU3Vic2NyaXB0aW9uIGlzIGFjdGl2ZSB3aXRoIGEgZGlmZmVyZW50IHNlcXVlbmNlOyBtdXN0IGJlIHRlcm1pbmF0ZWQgZmlyc3QuSENvbGxlY3Rpb25Ob3RGb3VuZAAEBNBDb2xsZWN0aW9uIHdpdGggdGhlIGdpdmVuIGlkZW50aWZpZXIgaXMgbm90IHRyYWNrZWQuGE5vUm9vdAAFBLRObyByaW5nIHJvb3Qgc3RvcmVkIGZvciB0aGUgZ2l2ZW4gcmluZyBpbmRleC4wSW52YWxpZFByb29mAAYE0FByb29mIGZhaWxlZCB0byB2ZXJpZnkgYWdhaW5zdCBhbnkgc3RvcmVkIHJpbmcgcm9vdC5MSW52YWxpZFJpbmdFeHBvbmVudAAHBAUBU3RvcmVkIHJpbmcgZXhwb25lbnQgZG9lcyBub3QgY29udmVydCBpbnRvIHRoZSBjcnlwdG8ncyBjYXBhY2l0eS5AUmV2aXNpb25Ob3RGb3VuZAAIBPxSZXF1ZXN0ZWQgcmV2aXNpb24gaXMgbm90IHByZXNlbnQgaW4gdGhlIHN0b3JlZCBzbGlkaW5nIHdpbmRvdy4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuwQ8AAAQICA0EAMUPDGxpbmRpdl9wYWxsZXRfYWxpYXNfYWNjb3VudHMYcGFsbGV0FEVycm9yBARUAAE4REludmFsaWRDb2xsZWN0aW9uAAAEfFRoZSBjb2xsZWN0aW9uIGlzIG5vdCBhY2NlcHRlZC4wQWNjb3VudEluVXNlAAEEyFRoZSBhY2NvdW50IGlzIGFscmVhZHkgaW4gdXNlIHVuZGVyIGFub3RoZXIgYWxpYXMuOEludmFsaWRBY2NvdW50AAIEZFRoZSBhY2NvdW50IGlzIG5vdCBrbm93bi5YQWxpYXNBY2NvdW50QWxyZWFkeVNldAADBMBBbGlhcyA8LT4gQWNjb3VudCBpcyBhbHJlYWR5IHNldCBhbmQgdXAgdG8gZGF0ZS44VGltZU91dE9mUmFuZ2UABAR4Q2FsbCBpcyB0b28gbGF0ZSBvciB0b28gZWFybHkuNEFsaWFzTm90U3RhbGUABQRFAVRoZSBhbGlhcyBtYXBwaW5nIGlzIG5vdCBzdGFsZTsgdGhlIHJldmlzaW9uIHN0aWxsIG1hdGNoZXMgdGhlIGN1cnJlbnQgcmluZyByb290LjxDbGVhbnVwVG9vRWFybHkABghBAVRoZSBjbGVhbnVwIGdyYWNlIHBlcmlvZCBoYXMgbm90IGVsYXBzZWQgeWV0OyB0aGUgYWxpYXMgaG9sZGVyIHN0aWxsIGhhcyB0aW1lIHRvHHVwZGF0ZS5ESW5jb25zaXN0ZW50U3RhdGUABwRVAVN0b3JhZ2UgaXMgaW4gYW4gaW5jb25zaXN0ZW50IHN0YXRlLiBUaGlzIHNob3VsZCBuZXZlciBoYXBwZW4gdW5kZXIgbm9ybWFsIG9wZXJhdGlvbi40QWxpYXNGZWVVbnNldAAIBOhUaGUgUEdBUyBmZWUgZm9yIGFsaWFzIHJlZ2lzdHJhdGlvbnMgaGFzIG5vdCBiZWVuIHNldCB5ZXQuPFJlcHJvdmVNaXNtYXRjaAAJCB0BVGhlIHByb29mIHBhc3NlZCB0byBgcmVwcm92ZV9hbGlhc19hY2NvdW50YCBwcm9kdWNlZCBhbiBhbGlhcyAvIGNvbnRleHTYdGhhdCBkb2VzIG5vdCBtYXRjaCB0aGUgc3RvcmVkIG1hcHBpbmcgZm9yIHRoZSBzaWduZXIuQFJpbmdSb290Tm90Rm91bmQACgQFAU5vIHJpbmcgcm9vdCB3YXMgZm91bmQgZm9yIHRoZSByZXF1ZXN0ZWQgY29sbGVjdGlvbiAvIHJpbmcgaW5kZXguNFN0YWxlUmV2aXNpb24ACwQBAVRoZSByZXF1ZXN0ZWQgcmluZyByZXZpc2lvbiBpcyBubyBsb25nZXIgYWNjZXB0ZWQgZm9yIHRoaXMgcmluZy4gQmFkUHJvb2YADASMUmluZy1WUkYgcHJvb2YgdmVyaWZpY2F0aW9uIGZhaWxlZC5MSW52YWxpZFJpbmdDYXBhY2l0eQANBPBUaGUgY29uZmlndXJlZCByaW5nIGNhcGFjaXR5IGlzIGludmFsaWQgZm9yIHRoaXMgY29sbGVjdGlvbi4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuyQ8AAAQIFQQIAM0PDERpbmRpdl9wYWxsZXRfcGdhcxhwYWxsZXQURXJyb3IEBFQAARA4QWxyZWFkeUNsYWltZWQAAAT4VGhpcyBhbGlhcyBoYXMgYWxyZWFkeSBiZWVuIHVzZWQgdG8gY2xhaW0gUEdBUyBpbiB0aGlzIHBlcmlvZC44UGdhc01pbnRGYWlsZWQAAQTAVGhlIFBHQVMgYXNzZXQgZG9lcyBub3QgZXhpc3Qgb3IgbWludGluZyBmYWlsZWQuPE5vUmVjb3Jkc0ZvckRheQACBDEBYGNsZWFuX3BnYXNfY2xhaW1fcmVjb3Jkc2Agd2FzIGNhbGxlZCB3aXRoIGEgZGF5IHRoYXQgaGFzIG5vIHN0b3JlZCByZWNvcmRzLkhGaXJzdEFsaWFzTWlzbWF0Y2gAAwhVAVRoZSBgZmlyc3RfYWxpYXNgIHBhc3NlZCB0byBgY2xlYW5fcGdhc19jbGFpbV9yZWNvcmRzYCBkb2VzIG5vdCBtYXRjaCB0aGUgZmlyc3QgYWxpYXOIY3VycmVudGx5IHN0b3JlZCB1bmRlciB0aGUgcHJlZml4LgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC7RDww0cGFsbGV0X3Jldml2ZQh2bSBDb2RlSW5mbwQEVAAAGAEUb3duZXIEAThBY2NvdW50SWRPZjxUPgABHGRlcG9zaXRVAQEwQmFsYW5jZU9mPFQ+AAEgcmVmY291bnS4AQx1NjQAASBjb2RlX2xlbjgBDHUzMgABJGNvZGVfdHlwZdUPATBCeXRlY29kZVR5cGUAAURiZWhhdmlvdXJfdmVyc2lvbjgBDHUzMgAA1Q8MNHBhbGxldF9yZXZpdmUIdm0wQnl0ZWNvZGVUeXBlAAEIDFB2bQAAAAxFdm0AAQAA2Q8MNHBhbGxldF9yZXZpdmUcc3RvcmFnZSxBY2NvdW50SW5mbwQEVAAACAEwYWNjb3VudF90eXBl3Q8BOEFjY291bnRUeXBlPFQ+AAEQZHVzdDgBDHUzMgAA3Q8MNHBhbGxldF9yZXZpdmUcc3RvcmFnZSxBY2NvdW50VHlwZQQEVAABCCBDb250cmFjdAQA4Q8BPENvbnRyYWN0SW5mbzxUPgAAAAxFT0EAAQAA4Q8MNHBhbGxldF9yZXZpdmUcc3RvcmFnZTBDb250cmFjdEluZm8EBFQAACABHHRyaWVfaWRhBAEYVHJpZUlkAAEkY29kZV9oYXNoQAE0c3BfY29yZTo6SDI1NgABNHN0b3JhZ2VfYnl0ZXM4AQx1MzIAATRzdG9yYWdlX2l0ZW1zOAEMdTMyAAFQc3RvcmFnZV9ieXRlX2RlcG9zaXRZAQEwQmFsYW5jZU9mPFQ+AAFQc3RvcmFnZV9pdGVtX2RlcG9zaXRZAQEwQmFsYW5jZU9mPFQ+AAFQc3RvcmFnZV9iYXNlX2RlcG9zaXRZAQEwQmFsYW5jZU9mPFQ+AAFIaW1tdXRhYmxlX2RhdGFfbGVuOAEMdTMyAADlDwAABAgEBADpDwxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQwEUwAABAAYARhWZWM8VD4AAO0PDDRwYWxsZXRfcmV2aXZlHHN0b3JhZ2VERGVsZXRpb25RdWV1ZUl0ZW0EBFQAAAgBHHRyaWVfaWRhBAEYVHJpZUlkAAEoYWNjb3VudF9pZAQBOEFjY291bnRJZE9mPFQ+AADxDww0cGFsbGV0X3Jldml2ZRxzdG9yYWdlUERlbGV0aW9uUXVldWVNYW5hZ2VyBARUAAAIAThpbnNlcnRfY291bnRlcjgBDHUzMgABOGRlbGV0ZV9jb3VudGVyOAEMdTMyAAD1DxQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpNHJwY190eXBlc19nZW4UQmxvY2sAAGwBQGJhc2VfZmVlX3Blcl9nYXNFBwEQVTI1NgABNGJsb2JfZ2FzX3VzZWRFBwEQVTI1NgABKGRpZmZpY3VsdHlFBwEQVTI1NgABPGV4Y2Vzc19ibG9iX2dhc0UHARBVMjU2AAEoZXh0cmFfZGF0YfkPARRCeXRlcwABJGdhc19saW1pdEUHARBVMjU2AAEgZ2FzX3VzZWRFBwEQVTI1NgABEGhhc2hAARBIMjU2AAEobG9nc19ibG9vbf0PASBCeXRlczI1NgABFG1pbmVyPQcBHEFkZHJlc3MAASBtaXhfaGFzaEABEEgyNTYAARRub25jZQUQARhCeXRlczgAARhudW1iZXJFBwEQVTI1NgABYHBhcmVudF9iZWFjb25fYmxvY2tfcm9vdBUFATBPcHRpb248SDI1Nj4AASxwYXJlbnRfaGFzaEABEEgyNTYAATRyZWNlaXB0c19yb290QAEQSDI1NgABNHJlcXVlc3RzX2hhc2gVBQEwT3B0aW9uPEgyNTY+AAEwc2hhXzNfdW5jbGVzQAEQSDI1NgABEHNpemVFBwEQVTI1NgABKHN0YXRlX3Jvb3RAARBIMjU2AAEkdGltZXN0YW1wRQcBEFUyNTYAAUB0b3RhbF9kaWZmaWN1bHR5CRABME9wdGlvbjxVMjU2PgABMHRyYW5zYWN0aW9ucw0QAWBIYXNoZXNPclRyYW5zYWN0aW9uSW5mb3MAAUR0cmFuc2FjdGlvbnNfcm9vdEABEEgyNTYAARh1bmNsZXPEASRWZWM8SDI1Nj4AASx3aXRoZHJhd2Fsc1kQATxWZWM8V2l0aGRyYXdhbD4AAUB3aXRoZHJhd2Fsc19yb290QAEQSDI1NgAA+Q8UNHBhbGxldF9yZXZpdmUMZXZtDGFwaRBieXRlFEJ5dGVzAAAEABgBHFZlYzx1OD4AAP0PFDRwYWxsZXRfcmV2aXZlDGV2bQxhcGkQYnl0ZSBCeXRlczI1NgAABAABEAEkW3U4OyAyNTZdAAABEAAAAwABAAAMAAUQFDRwYWxsZXRfcmV2aXZlDGV2bQxhcGkQYnl0ZRhCeXRlczgAAAQAeQIBHFt1ODsgOF0AAAkQBBhPcHRpb24EBFQBRQcBCBBOb25lAAAAEFNvbWUEAEUHAAABAAANEBQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpNHJwY190eXBlc19nZW5gSGFzaGVzT3JUcmFuc2FjdGlvbkluZm9zAAEIGEhhc2hlcwQAxAEkVmVjPEgyNTY+AAAAQFRyYW5zYWN0aW9uSW5mb3MEABEQAVBWZWM8VHJhbnNhY3Rpb25JbmZvPgABAAAREAAAAhUQABUQFDRwYWxsZXRfcmV2aXZlDGV2bQxhcGk0cnBjX3R5cGVzX2dlbjxUcmFuc2FjdGlvbkluZm8AABgBKGJsb2NrX2hhc2hAARBIMjU2AAEwYmxvY2tfbnVtYmVyRQcBEFUyNTYAARBmcm9tPQcBHEFkZHJlc3MAARBoYXNoQAEQSDI1NgABRHRyYW5zYWN0aW9uX2luZGV4RQcBEFUyNTYAAUh0cmFuc2FjdGlvbl9zaWduZWQZEAFEVHJhbnNhY3Rpb25TaWduZWQAABkQFDRwYWxsZXRfcmV2aXZlDGV2bQxhcGk0cnBjX3R5cGVzX2dlbkRUcmFuc2FjdGlvblNpZ25lZAABFFRUcmFuc2FjdGlvbjc3MDJTaWduZWQEAB0QAVRUcmFuc2FjdGlvbjc3MDJTaWduZWQAAABUVHJhbnNhY3Rpb240ODQ0U2lnbmVkBAA1EAFUVHJhbnNhY3Rpb240ODQ0U2lnbmVkAAEAVFRyYW5zYWN0aW9uMTU1OVNpZ25lZAQAPRABVFRyYW5zYWN0aW9uMTU1OVNpZ25lZAACAFRUcmFuc2FjdGlvbjI5MzBTaWduZWQEAEkQAVRUcmFuc2FjdGlvbjI5MzBTaWduZWQAAwBcVHJhbnNhY3Rpb25MZWdhY3lTaWduZWQEAFEQAVxUcmFuc2FjdGlvbkxlZ2FjeVNpZ25lZAAEAAAdEBQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpNHJwY190eXBlc19nZW5UVHJhbnNhY3Rpb243NzAyU2lnbmVkAAAUAWR0cmFuc2FjdGlvbl83NzAyX3Vuc2lnbmVkIRABXFRyYW5zYWN0aW9uNzcwMlVuc2lnbmVkAAEEckUHARBVMjU2AAEEc0UHARBVMjU2AAEEdgkQATBPcHRpb248VTI1Nj4AASB5X3Bhcml0eUUHARBVMjU2AAAhEBQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpNHJwY190eXBlc19nZW5cVHJhbnNhY3Rpb243NzAyVW5zaWduZWQAACwBLGFjY2Vzc19saXN0JRABKEFjY2Vzc0xpc3QAAUhhdXRob3JpemF0aW9uX2xpc3QtEAFsVmVjPEF1dGhvcml6YXRpb25MaXN0RW50cnk+AAEgY2hhaW5faWRFBwEQVTI1NgABDGdhc0UHARBVMjU2AAEUaW5wdXT5DwEUQnl0ZXMAATxtYXhfZmVlX3Blcl9nYXNFBwEQVTI1NgABYG1heF9wcmlvcml0eV9mZWVfcGVyX2dhc0UHARBVMjU2AAEUbm9uY2VFBwEQVTI1NgABCHRvPQcBHEFkZHJlc3MAARhyI3R5cGUMASxUeXBlRWlwNzcwMgABFHZhbHVlRQcBEFUyNTYAACUQAAACKRAAKRAUNHBhbGxldF9yZXZpdmUMZXZtDGFwaTRycGNfdHlwZXNfZ2VuPEFjY2Vzc0xpc3RFbnRyeQAACAEcYWRkcmVzcz0HARxBZGRyZXNzAAEwc3RvcmFnZV9rZXlzxAEkVmVjPEgyNTY+AAAtEAAAAjEQADEQFDRwYWxsZXRfcmV2aXZlDGV2bQxhcGk0cnBjX3R5cGVzX2dlblhBdXRob3JpemF0aW9uTGlzdEVudHJ5AAAYASBjaGFpbl9pZEUHARBVMjU2AAEcYWRkcmVzcz0HARxBZGRyZXNzAAEUbm9uY2VFBwEQVTI1NgABIHlfcGFyaXR5RQcBEFUyNTYAAQRyRQcBEFUyNTYAAQRzRQcBEFUyNTYAADUQFDRwYWxsZXRfcmV2aXZlDGV2bQxhcGk0cnBjX3R5cGVzX2dlblRUcmFuc2FjdGlvbjQ4NDRTaWduZWQAABABZHRyYW5zYWN0aW9uXzQ4NDRfdW5zaWduZWQ5EAFcVHJhbnNhY3Rpb240ODQ0VW5zaWduZWQAAQRyRQcBEFUyNTYAAQRzRQcBEFUyNTYAASB5X3Bhcml0eUUHARBVMjU2AAA5EBQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpNHJwY190eXBlc19nZW5cVHJhbnNhY3Rpb240ODQ0VW5zaWduZWQAADABLGFjY2Vzc19saXN0JRABKEFjY2Vzc0xpc3QAAVRibG9iX3ZlcnNpb25lZF9oYXNoZXPEASRWZWM8SDI1Nj4AASBjaGFpbl9pZEUHARBVMjU2AAEMZ2FzRQcBEFUyNTYAARRpbnB1dPkPARRCeXRlcwABUG1heF9mZWVfcGVyX2Jsb2JfZ2FzRQcBEFUyNTYAATxtYXhfZmVlX3Blcl9nYXNFBwEQVTI1NgABYG1heF9wcmlvcml0eV9mZWVfcGVyX2dhc0UHARBVMjU2AAEUbm9uY2VFBwEQVTI1NgABCHRvPQcBHEFkZHJlc3MAARhyI3R5cGUMASxUeXBlRWlwNDg0NAABFHZhbHVlRQcBEFUyNTYAAD0QFDRwYWxsZXRfcmV2aXZlDGV2bQxhcGk0cnBjX3R5cGVzX2dlblRUcmFuc2FjdGlvbjE1NTlTaWduZWQAABQBZHRyYW5zYWN0aW9uXzE1NTlfdW5zaWduZWRBEAFcVHJhbnNhY3Rpb24xNTU5VW5zaWduZWQAAQRyRQcBEFUyNTYAAQRzRQcBEFUyNTYAAQR2CRABME9wdGlvbjxVMjU2PgABIHlfcGFyaXR5RQcBEFUyNTYAAEEQFDRwYWxsZXRfcmV2aXZlDGV2bQxhcGk0cnBjX3R5cGVzX2dlblxUcmFuc2FjdGlvbjE1NTlVbnNpZ25lZAAALAEsYWNjZXNzX2xpc3QlEAEoQWNjZXNzTGlzdAABIGNoYWluX2lkRQcBEFUyNTYAAQxnYXNFBwEQVTI1NgABJGdhc19wcmljZUUHARBVMjU2AAEUaW5wdXT5DwEUQnl0ZXMAATxtYXhfZmVlX3Blcl9nYXNFBwEQVTI1NgABYG1heF9wcmlvcml0eV9mZWVfcGVyX2dhc0UHARBVMjU2AAEUbm9uY2VFBwEQVTI1NgABCHRvRRABPE9wdGlvbjxBZGRyZXNzPgABGHIjdHlwZQwBLFR5cGVFaXAxNTU5AAEUdmFsdWVFBwEQVTI1NgAARRAEGE9wdGlvbgQEVAE9BwEIEE5vbmUAAAAQU29tZQQAPQcAAAEAAEkQFDRwYWxsZXRfcmV2aXZlDGV2bQxhcGk0cnBjX3R5cGVzX2dlblRUcmFuc2FjdGlvbjI5MzBTaWduZWQAABQBZHRyYW5zYWN0aW9uXzI5MzBfdW5zaWduZWRNEAFcVHJhbnNhY3Rpb24yOTMwVW5zaWduZWQAAQRyRQcBEFUyNTYAAQRzRQcBEFUyNTYAAQR2CRABME9wdGlvbjxVMjU2PgABIHlfcGFyaXR5RQcBEFUyNTYAAE0QFDRwYWxsZXRfcmV2aXZlDGV2bQxhcGk0cnBjX3R5cGVzX2dlblxUcmFuc2FjdGlvbjI5MzBVbnNpZ25lZAAAJAEsYWNjZXNzX2xpc3QlEAEoQWNjZXNzTGlzdAABIGNoYWluX2lkRQcBEFUyNTYAAQxnYXNFBwEQVTI1NgABJGdhc19wcmljZUUHARBVMjU2AAEUaW5wdXT5DwEUQnl0ZXMAARRub25jZUUHARBVMjU2AAEIdG9FEAE8T3B0aW9uPEFkZHJlc3M+AAEYciN0eXBlDAEsVHlwZUVpcDI5MzAAARR2YWx1ZUUHARBVMjU2AABREBQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpNHJwY190eXBlc19nZW5cVHJhbnNhY3Rpb25MZWdhY3lTaWduZWQAABABbHRyYW5zYWN0aW9uX2xlZ2FjeV91bnNpZ25lZFUQAWRUcmFuc2FjdGlvbkxlZ2FjeVVuc2lnbmVkAAEEckUHARBVMjU2AAEEc0UHARBVMjU2AAEEdkUHARBVMjU2AABVEBQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpNHJwY190eXBlc19nZW5kVHJhbnNhY3Rpb25MZWdhY3lVbnNpZ25lZAAAIAEgY2hhaW5faWQJEAEwT3B0aW9uPFUyNTY+AAEMZ2FzRQcBEFUyNTYAASRnYXNfcHJpY2VFBwEQVTI1NgABFGlucHV0+Q8BFEJ5dGVzAAEUbm9uY2VFBwEQVTI1NgABCHRvRRABPE9wdGlvbjxBZGRyZXNzPgABGHIjdHlwZQwBKFR5cGVMZWdhY3kAARR2YWx1ZUUHARBVMjU2AABZEAAAAl0QAF0QFDRwYWxsZXRfcmV2aXZlDGV2bQxhcGk0cnBjX3R5cGVzX2dlbihXaXRoZHJhd2FsAAAQARxhZGRyZXNzPQcBHEFkZHJlc3MAARhhbW91bnRFBwEQVTI1NgABFGluZGV4RQcBEFUyNTYAATx2YWxpZGF0b3JfaW5kZXhFBwEQVTI1NgAAYRAAAAJlEABlEBA0cGFsbGV0X3Jldml2ZQxldm0oYmxvY2tfaGFzaDhSZWNlaXB0R2FzSW5mbwAACAEgZ2FzX3VzZWRFBwEQVTI1NgABTGVmZmVjdGl2ZV9nYXNfcHJpY2VFBwEQVTI1NgAAaRAUNHBhbGxldF9yZXZpdmUMZXZtKGJsb2NrX2hhc2g0YmxvY2tfYnVpbGRlclhFdGhlcmV1bUJsb2NrQnVpbGRlcklSBARUAAAgAWB0cmFuc2FjdGlvbl9yb290X2J1aWxkZXJtEAFgSW5jcmVtZW50YWxIYXNoQnVpbGRlcklSAAFUcmVjZWlwdHNfcm9vdF9idWlsZGVybRABYEluY3JlbWVudGFsSGFzaEJ1aWxkZXJJUgABQGJhc2VfZmVlX3Blcl9nYXNFBwEQVTI1NgABPGJsb2NrX2dhc19saW1pdEUHARBVMjU2AAEgZ2FzX3VzZWRFBwEQVTI1NgABKGxvZ3NfYmxvb20BEAFYW3U4OyBCTE9PTV9TSVpFX0JZVEVTXQABJHR4X2hhc2hlc8QBJFZlYzxIMjU2PgABIGdhc19pbmZvYRABTFZlYzxSZWNlaXB0R2FzSW5mbz4AAG0QFDRwYWxsZXRfcmV2aXZlDGV2bShibG9ja19oYXNoMGhhc2hfYnVpbGRlcmBJbmNyZW1lbnRhbEhhc2hCdWlsZGVySVIAACgBDGtleRgBHFZlYzx1OD4AASh2YWx1ZV90eXBlDAEIdTgAATRidWlsZGVyX3ZhbHVlGAEcVmVjPHU4PgABFHN0YWNrNAEwVmVjPFZlYzx1OD4+AAEsc3RhdGVfbWFza3NxBwEgVmVjPHUxNj4AASh0cmVlX21hc2tzcQcBIFZlYzx1MTY+AAEoaGFzaF9tYXNrc3EHASBWZWM8dTE2PgABSHN0b3JlZF9pbl9kYXRhYmFzZV0BARBib29sAAEccmxwX2J1ZhgBHFZlYzx1OD4AARRpbmRleCgBDHU2NAAAcRAEGE9wdGlvbgQEVAEwAQgQTm9uZQAAABBTb21lBAAwAAABAAB1EAw0cGFsbGV0X3Jldml2ZRRkZWJ1ZzREZWJ1Z1NldHRpbmdzAAAQAXRhbGxvd191bmxpbWl0ZWRfY29udHJhY3Rfc2l6ZV0BARBib29sAAE8YnlwYXNzX2VpcF8zNjA3XQEBEGJvb2wAASBwdm1fbG9nc10BARBib29sAAFkZGlzYWJsZV9leGVjdXRpb25fdHJhY2luZ10BARBib29sAAB5EAw0cGFsbGV0X3Jldml2ZRhwYWxsZXQURXJyb3IEBFQAAeg8SW52YWxpZFNjaGVkdWxlAAEEGQFJbnZhbGlkIHNjaGVkdWxlIHN1cHBsaWVkLCBlLmcuIHdpdGggemVybyB3ZWlnaHQgb2YgYSBiYXNpYyBvcGVyYXRpb24uQEludmFsaWRDYWxsRmxhZ3MAAgQ1AUludmFsaWQgY29tYmluYXRpb24gb2YgZmxhZ3Mgc3VwcGxpZWQgdG8gYHNlYWxfY2FsbGAgb3IgYHNlYWxfZGVsZWdhdGVfY2FsbGAuIE91dE9mR2FzAAMEuFRoZSBleGVjdXRlZCBjb250cmFjdCBleGhhdXN0ZWQgaXRzIGdhcyBsaW1pdC44VHJhbnNmZXJGYWlsZWQABAg1AVBlcmZvcm1pbmcgdGhlIHJlcXVlc3RlZCB0cmFuc2ZlciBmYWlsZWQuIFByb2JhYmx5IGJlY2F1c2UgdGhlcmUgaXNuJ3QgZW5vdWdolGZyZWUgYmFsYW5jZSBpbiB0aGUgc2VuZGVyJ3MgYWNjb3VudC5MTWF4Q2FsbERlcHRoUmVhY2hlZAAFCCEBUGVyZm9ybWluZyBhIGNhbGwgd2FzIGRlbmllZCBiZWNhdXNlIHRoZSBjYWxsaW5nIGRlcHRoIHJlYWNoZWQgdGhlIGxpbWl0lG9mIHdoYXQgaXMgc3BlY2lmaWVkIGluIHRoZSBzY2hlZHVsZS5AQ29udHJhY3ROb3RGb3VuZAAGBLxObyBjb250cmFjdCB3YXMgZm91bmQgYXQgdGhlIHNwZWNpZmllZCBhZGRyZXNzLjBDb2RlTm90Rm91bmQABwTETm8gY29kZSBjb3VsZCBiZSBmb3VuZCBhdCB0aGUgc3VwcGxpZWQgY29kZSBoYXNoLkBDb2RlSW5mb05vdEZvdW5kAAgE2E5vIGNvZGUgaW5mbyBjb3VsZCBiZSBmb3VuZCBhdCB0aGUgc3VwcGxpZWQgY29kZSBoYXNoLixPdXRPZkJvdW5kcwAJBCUBQSBidWZmZXIgb3V0c2lkZSBvZiBzYW5kYm94IG1lbW9yeSB3YXMgcGFzc2VkIHRvIGEgY29udHJhY3QgQVBJIGZ1bmN0aW9uLjhEZWNvZGluZ0ZhaWxlZAAKBCkBSW5wdXQgcGFzc2VkIHRvIGEgY29udHJhY3QgQVBJIGZ1bmN0aW9uIGZhaWxlZCB0byBkZWNvZGUgYXMgZXhwZWN0ZWQgdHlwZS48Q29udHJhY3RUcmFwcGVkAAsEiENvbnRyYWN0IHRyYXBwZWQgZHVyaW5nIGV4ZWN1dGlvbi40VmFsdWVUb29MYXJnZQAMBPRFdmVudCBib2R5IG9yIHN0b3JhZ2UgaXRlbSBleGNlZWRzIFtgbGltaXRzOjpTVE9SQUdFX0JZVEVTYF0uYFRlcm1pbmF0ZWRXaGlsZVJlZW50cmFudAANCBkBVGVybWluYXRpb24gb2YgYSBjb250cmFjdCBpcyBub3QgYWxsb3dlZCB3aGlsZSB0aGUgY29udHJhY3QgaXMgYWxyZWFkeeBvbiB0aGUgY2FsbCBzdGFjay4gQ2FuIGJlIHRyaWdnZXJlZCBieSBgc2VhbF90ZXJtaW5hdGVgLjhJbnB1dEZvcndhcmRlZAAOBEEBYHNlYWxfY2FsbGAgZm9yd2FyZGVkIHRoaXMgY29udHJhY3RzIGlucHV0LiBJdCB0aGVyZWZvcmUgaXMgbm8gbG9uZ2VyIGF2YWlsYWJsZS40VG9vTWFueVRvcGljcwAPBB0BVGhlIGFtb3VudCBvZiB0b3BpY3MgcGFzc2VkIHRvIGBzZWFsX2RlcG9zaXRfZXZlbnRzYCBleGNlZWRzIHRoZSBsaW1pdC5ERHVwbGljYXRlQ29udHJhY3QAEgTIQSBjb250cmFjdCB3aXRoIHRoZSBzYW1lIEFjY291bnRJZCBhbHJlYWR5IGV4aXN0cy5cVGVybWluYXRlZEluQ29uc3RydWN0b3IAEwy4QSBjb250cmFjdCBzZWxmIGRlc3RydWN0ZWQgaW4gaXRzIGNvbnN0cnVjdG9yLgDQVGhpcyBjYW4gYmUgdHJpZ2dlcmVkIGJ5IGEgY2FsbCB0byBgc2VhbF90ZXJtaW5hdGVgLkBSZWVudHJhbmNlRGVuaWVkABQEDQFBIGNhbGwgdHJpZWQgdG8gaW52b2tlIGEgY29udHJhY3QgdGhhdCBpcyBmbGFnZ2VkIGFzIG5vbi1yZWVudHJhbnQuPFJlZW50ZXJlZFBhbGxldAAVBC0BQSBjb250cmFjdCBjYWxsZWQgaW50byB0aGUgcnVudGltZSB3aGljaCB0aGVuIGNhbGxlZCBiYWNrIGludG8gdGhpcyBwYWxsZXQuRFN0YXRlQ2hhbmdlRGVuaWVkABYETQFBIGNvbnRyYWN0IGF0dGVtcHRlZCB0byBpbnZva2UgYSBzdGF0ZSBtb2RpZnlpbmcgQVBJIHdoaWxlIGJlaW5nIGluIHJlYWQtb25seSBtb2RlLnBTdG9yYWdlRGVwb3NpdE5vdEVub3VnaEZ1bmRzABcEIQFPcmlnaW4gZG9lc24ndCBoYXZlIGVub3VnaCBiYWxhbmNlIHRvIHBheSB0aGUgcmVxdWlyZWQgc3RvcmFnZSBkZXBvc2l0cy5wU3RvcmFnZURlcG9zaXRMaW1pdEV4aGF1c3RlZAAYBA0BTW9yZSBzdG9yYWdlIHdhcyBjcmVhdGVkIHRoYW4gYWxsb3dlZCBieSB0aGUgc3RvcmFnZSBkZXBvc2l0IGxpbWl0LiRDb2RlSW5Vc2UAGQRJAUNvZGUgcmVtb3ZhbCB3YXMgZGVuaWVkIGJlY2F1c2UgdGhlIGNvZGUgaXMgc3RpbGwgaW4gdXNlIGJ5IGF0IGxlYXN0IG9uZSBjb250cmFjdC5AQ29udHJhY3RSZXZlcnRlZAAaECUBVGhlIGNvbnRyYWN0IHJhbiB0byBjb21wbGV0aW9uIGJ1dCBkZWNpZGVkIHRvIHJldmVydCBpdHMgc3RvcmFnZSBjaGFuZ2VzLkkBUGxlYXNlIG5vdGUgdGhhdCB0aGlzIGVycm9yIGlzIG9ubHkgcmV0dXJuZWQgZnJvbSBleHRyaW5zaWNzLiBXaGVuIGNhbGxlZCBkaXJlY3RseV0Bb3IgdmlhIFJQQyBhbiBgT2tgIHdpbGwgYmUgcmV0dXJuZWQuIEluIHRoaXMgY2FzZSB0aGUgY2FsbGVyIG5lZWRzIHRvIGluc3BlY3QgdGhlIGZsYWdzxHRvIGRldGVybWluZSB3aGV0aGVyIGEgcmV2ZXJzaW9uIGhhcyB0YWtlbiBwbGFjZS4wQ29kZVJlamVjdGVkABsQGQFUaGUgY29udHJhY3QgZmFpbGVkIHRvIGNvbXBpbGUgb3IgaXMgbWlzc2luZyB0aGUgY29ycmVjdCBlbnRyeSBwb2ludHMuAFEBQSBtb3JlIGRldGFpbGVkIGVycm9yIGNhbiBiZSBmb3VuZCBvbiB0aGUgbm9kZSBjb25zb2xlIGlmIGRlYnVnIG1lc3NhZ2VzIGFyZSBlbmFibGVknGJ5IHN1cHBseWluZyBgLWxydW50aW1lOjpyZXZpdmU9ZGVidWdgLjBCbG9iVG9vTGFyZ2UAHAQNAVRoZSBjb2RlIGJsb2Igc3VwcGxpZWQgaXMgbGFyZ2VyIHRoYW4gW2BsaW1pdHM6OmNvZGU6OkJMT0JfQllURVNgXS5QU3RhdGljTWVtb3J5VG9vTGFyZ2UAHQTgVGhlIGNvbnRyYWN0IGRlY2xhcmVzIHRvbyBtdWNoIG1lbW9yeSAocm8gKyBydyArIHN0YWNrKS5IQmFzaWNCbG9ja1Rvb0xhcmdlAB4E/FRoZSBwcm9ncmFtIGNvbnRhaW5zIGEgYmFzaWMgYmxvY2sgdGhhdCBpcyBsYXJnZXIgdGhhbiBhbGxvd2VkLkhJbnZhbGlkSW5zdHJ1Y3Rpb24AHwSwVGhlIHByb2dyYW0gY29udGFpbnMgYW4gaW52YWxpZCBpbnN0cnVjdGlvbi54TWF4RGVsZWdhdGVEZXBlbmRlbmNpZXNSZWFjaGVkACAEFQFUaGUgY29udHJhY3QgaGFzIHJlYWNoZWQgaXRzIG1heGltdW0gbnVtYmVyIG9mIGRlbGVnYXRlIGRlcGVuZGVuY2llcy5oRGVsZWdhdGVEZXBlbmRlbmN5Tm90Rm91bmQAIQQVAVRoZSBkZXBlbmRlbmN5IHdhcyBub3QgZm91bmQgaW4gdGhlIGNvbnRyYWN0J3MgZGVsZWdhdGUgZGVwZW5kZW5jaWVzLnxEZWxlZ2F0ZURlcGVuZGVuY3lBbHJlYWR5RXhpc3RzACIE+FRoZSBjb250cmFjdCBhbHJlYWR5IGRlcGVuZHMgb24gdGhlIGdpdmVuIGRlbGVnYXRlIGRlcGVuZGVuY3kuhENhbm5vdEFkZFNlbGZBc0RlbGVnYXRlRGVwZW5kZW5jeQAjBCkBQ2FuIG5vdCBhZGQgYSBkZWxlZ2F0ZSBkZXBlbmRlbmN5IHRvIHRoZSBjb2RlIGhhc2ggb2YgdGhlIGNvbnRyYWN0IGl0c2VsZi5UT3V0T2ZUcmFuc2llbnRTdG9yYWdlACQErENhbiBub3QgYWRkIG1vcmUgZGF0YSB0byB0cmFuc2llbnQgc3RvcmFnZS44SW52YWxpZFN5c2NhbGwAJQRVAVRoZSBjb250cmFjdCB0cmllZCB0byBjYWxsIGEgc3lzY2FsbCB3aGljaCBkb2VzIG5vdCBleGlzdCAoYXQgaXRzIGN1cnJlbnQgYXBpIGxldmVsKS5MSW52YWxpZFN0b3JhZ2VGbGFncwAmBAUBSW52YWxpZCBzdG9yYWdlIGZsYWdzIHdlcmUgcGFzc2VkIHRvIG9uZSBvZiB0aGUgc3RvcmFnZSBzeXNjYWxscy48RXhlY3V0aW9uRmFpbGVkACcEKQFQb2xrYVZNIGZhaWxlZCBkdXJpbmcgY29kZSBleGVjdXRpb24uIFByb2JhYmx5IGR1ZSB0byBhIG1hbGZvcm1lZCBwcm9ncmFtLlxCYWxhbmNlQ29udmVyc2lvbkZhaWxlZAAoBJhGYWlsZWQgdG8gY29udmVydCBhIFUyNTYgdG8gYSBCYWxhbmNlLlhJbnZhbGlkSW1tdXRhYmxlQWNjZXNzACoIMQFJbW11dGFibGUgZGF0YSBjYW4gb25seSBiZSBzZXQgZHVyaW5nIGRlcGxveXMgYW5kIG9ubHkgYmUgcmVhZCBkdXJpbmcgY2FsbHMuNQFBZGRpdGlvbmFsbHksIGl0IGlzIG9ubHkgdmFsaWQgdG8gc2V0IHRoZSBkYXRhIG9uY2UgYW5kIGl0IG11c3Qgbm90IGJlIGVtcHR5LjxBY2NvdW50VW5tYXBwZWQAKwxRAUFuIGBBY2NvdW50SUQzMmAgYWNjb3VudCB0cmllZCB0byBpbnRlcmFjdCB3aXRoIHRoZSBwYWxsZXQgd2l0aG91dCBoYXZpbmcgYSBtYXBwaW5nLgApAUNhbGwgW2BQYWxsZXQ6Om1hcF9hY2NvdW50YF0gaW4gb3JkZXIgdG8gY3JlYXRlIGEgbWFwcGluZyBmb3IgdGhlIGFjY291bnQuUEFjY291bnRBbHJlYWR5TWFwcGVkACwEvFRyaWVkIHRvIG1hcCBhbiBhY2NvdW50IHRoYXQgaXMgYWxyZWFkeSBtYXBwZWQuZEludmFsaWRHZW5lcmljVHJhbnNhY3Rpb24ALQTYVGhlIHRyYW5zYWN0aW9uIHVzZWQgdG8gZHJ5LXJ1biBhIGNvbnRyYWN0IGlzIGludmFsaWQuXFJlZmNvdW50T3Zlck9yVW5kZXJmbG93AC4EyFRoZSByZWZjb3VudCBvZiBhIGNvZGUgZWl0aGVyIG92ZXIgb3IgdW5kZXJmbG93ZWQucFVuc3VwcG9ydGVkUHJlY29tcGlsZUFkZHJlc3MALwR8VW5zdXBwb3J0ZWQgcHJlY29tcGlsZSBhZGRyZXNzLkBDYWxsRGF0YVRvb0xhcmdlADAEwFRoZSBjYWxsZGF0YSBleGNlZWRzIFtgbGltaXRzOjpDQUxMREFUQV9CWVRFU2BdLkhSZXR1cm5EYXRhVG9vTGFyZ2UAMQTMVGhlIHJldHVybiBkYXRhIGV4Y2VlZHMgW2BsaW1pdHM6OkNBTExEQVRBX0JZVEVTYF0uLEludmFsaWRKdW1wADIEOQFJbnZhbGlkIGp1bXAgZGVzdGluYXRpb24uIER5bmFtaWMganVtcHMgcG9pbnRzIHRvIGludmFsaWQgbm90IGp1bXBkZXN0IG9wY29kZS44U3RhY2tVbmRlcmZsb3cAMwS4QXR0ZW1wdGluZyB0byBwb3AgYSB2YWx1ZSBmcm9tIGFuIGVtcHR5IHN0YWNrLjRTdGFja092ZXJmbG93ADQEtEF0dGVtcHRpbmcgdG8gcHVzaCBhIHZhbHVlIG9udG8gYSBmdWxsIHN0YWNrLjRUeEZlZU92ZXJkcmF3ADUMEQFUb28gbXVjaCBkZXBvc2l0IHdhcyBkcmF3biBmcm9tIHRoZSBzaGFyZWQgdHhmZWUgYW5kIGRlcG9zaXQgY3JlZGl0LgAxAVRoaXMgaGFwcGVucyBpZiB0aGUgcGFzc2VkIGBnYXNgIGluc2lkZSB0aGUgZXRoZXJldW0gdHJhbnNhY3Rpb24gaXMgdG9vIGxvdy5oRXZtQ29uc3RydWN0b3JOb25FbXB0eURhdGEANgzcV2hlbiBjYWxsaW5nIGFuIEVWTSBjb25zdHJ1Y3RvciBgZGF0YWAgaGFzIHRvIGJlIGVtcHR5LgBZAUVWTSBjb25zdHJ1Y3RvcnMgZG8gbm90IGFjY2VwdCBkYXRhLiBUaGVpciBpbnB1dCBkYXRhIGlzIHBhcnQgb2YgdGhlIGNvZGUgYmxvYiBpdHNlbGYuWEV2bUNvbnN0cnVjdGVkRnJvbUhhc2gANxDEVHJpZWQgdG8gY29uc3RydWN0IGFuIEVWTSBjb250cmFjdCB2aWEgY29kZSBoYXNoLgAhAUVWTSBjb250cmFjdHMgY2FuIG9ubHkgYmUgaW5zdGFudGlhdGVkIHZpYSBjb2RlIHVwbG9hZCBhcyBubyBpbml0Y29kZSBpc0BzdG9yZWQgb24tY2hhaW4ubFN0b3JhZ2VSZWZ1bmROb3RFbm91Z2hGdW5kcwA4DCEBVGhlIGNvbnRyYWN0IGRvZXMgbm90IGhhdmUgZW5vdWdoIGJhbGFuY2UgdG8gcmVmdW5kIHRoZSBzdG9yYWdlIGRlcG9zaXQuAD0BVGhpcyBpcyBhIGJ1ZyBhbmQgc2hvdWxkIG5ldmVyIGhhcHBlbi4gSXQgbWVhbnMgdGhlIGFjY291bnRpbmcgZ290IG91dCBvZiBzeW5jLkxTdG9yYWdlUmVmdW5kTG9ja2VkADkQXQFUaGlzIG1lYW5zIHRoZXJlIGFyZSBsb2NrcyBvbiB0aGUgY29udHJhY3RzIHN0b3JhZ2UgZGVwb3NpdCB0aGF0IHByZXZlbnRzIHJlZnVuZGluZyBpdC4APQFUaGlzIHdvdWxkIGJlIHRoZSBjYXNlIGlmIHRoZSBjb250cmFjdCB1c2VkIGl0cyBzdG9yYWdlIGRlcG9zaXRzIGZvciBnb3Zlcm5hbmNl9G9yIG90aGVyIHBhbGxldHMgdGhhdCBhbGxvdyBjcmVhdGluZyBsb2NrcyBvdmVyIGhlbGQgYmFsYW5jZS5gUHJlY29tcGlsZURlbGVnYXRlRGVuaWVkAEAQ/ENhbGxlZCBhIHByZS1jb21waWxlIHRoYXQgaXMgbm90IGFsbG93ZWQgdG8gYmUgZGVsZWdhdGUgY2FsbGVkLgAlAVNvbWUgcHJlLWNvbXBpbGUgZnVuY3Rpb25zIHdpbGwgdHJhcCB0aGUgY2FsbGVyIGNvbnRleHQgaWYgYmVpbmcgZGVsZWdhdGXQY2FsbGVkIG9yIGlmIHRoZWlyIGNhbGxlciB3YXMgYmVpbmcgZGVsZWdhdGUgY2FsbGVkLkxFY2RzYVJlY292ZXJ5RmFpbGVkAEEEPQFFQ0RTQSBwdWJsaWMga2V5IHJlY292ZXJ5IGZhaWxlZC4gTW9zdCBwcm9iYWJseSB3cm9uZyByZWNvdmVyeSBpZCBvciBzaWduYXR1cmUuSEF1dG9NYXBwaW5nRW5hYmxlZABCBOBNYW51YWwgbWFwcGluZyBpcyBkaXNhYmxlZCB3aGVuIGF1dG8tbWFwcGluZyBpcyBlbmFibGVkLlRQZW5kaW5nRGVwb3NpdENsZWFudXAAQwwRAUEgY29udHJhY3QgY2Fubm90IGJlIGNyZWF0ZWQgYXQgdGhpcyBhZGRyZXNzOiBpdCBzdGlsbCBoYXMgdW5jbGVhcmVkTQFbYE5hdGl2ZURlcG9zaXRPZmBdIGVudHJpZXMgZnJvbSBhIHByZXZpb3VzbHkgdGVybWluYXRlZCBjb250cmFjdCB0aGF0IHRoZSBkZWxldGlvbmhxdWV1ZSBoYXMgbm90IHlldCBkcmFpbmVkLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC59EAAABAg9Bz0HAIEQEGRwYWxsZXRfYXNzZXRzX3ByZWNvbXBpbGVzGHBlcm1pdBhwYWxsZXQURXJyb3IEBFQAASBASW52YWxpZFNpZ25hdHVyZQAABIBUaGUgcGVybWl0IHNpZ25hdHVyZSBpcyBpbnZhbGlkLjhTaWduZXJNaXNtYXRjaAABBJBUaGUgc2lnbmVyIGRvZXMgbm90IG1hdGNoIHRoZSBvd25lci40UGVybWl0RXhwaXJlZAACBKRUaGUgcGVybWl0IGhhcyBleHBpcmVkIChkZWFkbGluZSBwYXNzZWQpLlhTaWduYXR1cmVTVmFsdWVUb29IaWdoAAMEAQFUaGUgc2lnbmF0dXJlJ3MgYHNgIHZhbHVlIGlzIHRvbyBoaWdoIChtYWxsZWFiaWxpdHkgcHJvdGVjdGlvbikuNEludmFsaWRWVmFsdWUABASUVGhlIHNpZ25hdHVyZSdzIGB2YCB2YWx1ZSBpcyBpbnZhbGlkLjROb25jZU92ZXJmbG93AAUEzE5vbmNlIG92ZXJmbG93IC0gYWNjb3VudCBoYXMgdXNlZCB0b28gbWFueSBwZXJtaXRzLjBJbnZhbGlkT3duZXIABgTIVGhlIG93bmVyIGFkZHJlc3MgaXMgaW52YWxpZCAoZS5nLiwgemVybyBhZGRyZXNzKS44SW52YWxpZFNwZW5kZXIABwTQVGhlIHNwZW5kZXIgYWRkcmVzcyBpcyBpbnZhbGlkIChlLmcuLCB6ZXJvIGFkZHJlc3MpLgSIRXJyb3IgdHlwZXMgZm9yIHRoZSBwZXJtaXQgcGFsbGV0LoUQDGhpbmRpdl9wYWxsZXRfZG90bnNfZ2F0ZXdheRR0eXBlc0hSZWdpc3RyYXRpb25SZWNvcmQEBFQAAAgBKGNvbGxlY3Rpb26JEAEoQ29sbGVjdGlvbgABHGFjY291bnQEATBUOjpBY2NvdW50SWQAAIkQDGhpbmRpdl9wYWxsZXRfZG90bnNfZ2F0ZXdheRR0eXBlcyhDb2xsZWN0aW9uAAEIGFBlb3BsZQAAAChQZW9wbGVMaXRlAAEAAI0QDGhpbmRpdl9wYWxsZXRfZG90bnNfZ2F0ZXdheRhwYWxsZXQURXJyb3IEBFQAAShEQWxyZWFkeVJlZ2lzdGVyZWQAAASgVGhlIGFsaWFzIGhhcyBhbHJlYWR5IHJlZ2lzdGVyZWQgYSBuYW1lLkhDb250cmFjdENhbGxGYWlsZWQAAQj8VGhlIGNvbnRyYWN0IGNhbGwgZmFpbGVkIChub24tcmV2ZXJ0OiBvdXQtb2YtZ2FzLCBsb3ctbGV2ZWwsIG9yUHVuZGVjb2RhYmxlIHJldmVydCkuOENvbnRyYWN0UmV2ZXJ0BACREAFARGlzcGF0Y2hlclJldmVydAACCBEBQ29udHJhY3QgcmV2ZXJ0ZWQgd2l0aCBhIHR5cGVkIGVycm9yIGZyb20gYFJvb3RHYXRld2F5RGlzcGF0Y2hlcmAgb3KgdGhlIGBEb3Ruc1BvcENvbnRyb2xsZXJgIGl0IGZvcndhcmRzIHRvLixJbnZhbGlkTmFtZQADCPRUaGUgbmFtZSBpcyBpbnZhbGlkIChlbXB0eSBvciB0b28gbG9uZywgb3IgZG9lcyBub3QgbWF0Y2ggdGhlgHJlcXVpcmVkIEROUy9saXRlLWxhYmVsIGZvcm1hdCkuWE5vQXR0ZXN0YXRpb25BbGxvd2FuY2UABATQVGhlIGF0dGVzdGVyIGhhcyBubyBhdHRlc3RhdGlvbiBhbGxvd2FuY2UgcmVtYWluaW5nLmxJbnZhbGlkQXR0ZXN0YXRpb25TaWduYXR1cmUABQSUVGhlIGNhbmRpZGF0ZSdzIHNpZ25hdHVyZSBpcyBpbnZhbGlkLmxSZXNlcnZhdGlvblNpZ25hdHVyZUV4cGlyZWQABgQdAVRoZSByZXNlcnZhdGlvbiBzaWduYXR1cmUgaXMgb2xkZXIgdGhhbiBbYENvbmZpZzo6TWF4VmFsaWRpdHlTZWNvbmRzYF0ueFJlc2VydmF0aW9uU2lnbmF0dXJlRnJvbUZ1dHVyZQAHCPxUaGUgcmVzZXJ2YXRpb24gc2lnbmF0dXJlIGNsYWltcyB0byBoYXZlIGJlZW4gY3JlYXRlZCBtb3JlIHRoYW7MW2BDb25maWc6Ok1heFZhbGlkaXR5U2Vjb25kc2BdIGFoZWFkIG9mIGNoYWluIHRpbWUuRE5vdExpdGVMYWJlbE93bmVyAAgICQFUaGUgYExpbms6OkxpdGVVc2VybmFtZWAgdGFyZ2V0IGlzIG5vdCBvd25lZCBieSB0aGUgY2FsbGVyIChvciBoYXN4bm8gb24tY2hhaW4gb3duZXJzaGlwIHJlY29yZCkuXERpc3BhdGNoZXJBZGRyZXNzTm90U2V0AAkE+FRoZSBgUm9vdEdhdGV3YXlEaXNwYXRjaGVyYCBjb250cmFjdCBhZGRyZXNzIGhhcyBub3QgYmVlbiBzZXQuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LpEQDGhpbmRpdl9wYWxsZXRfZG90bnNfZ2F0ZXdheRR0eXBlc0BEaXNwYXRjaGVyUmV2ZXJ0AAEgHE5vdFJvb3QAAAAoTm90R2F0ZXdheQABAEBJbnZhbGlkTGl0ZUxhYmVsAAIAQEludmFsaWRCYXNlTGFiZWwAAwBMTm9BY3RpdmVSZXNlcnZhdGlvbgAEACRRdWV1ZUZ1bGwABQA8QWxyZWFkeVJlc2VydmVkAAYAJE5vdEhvbGRlcgAHAACVEAx8aW5kaXZfcGFsbGV0X29yaWdpbl9yZXN0cmljdGlvbhhwYWxsZXQUVXNhZ2UIHEJhbGFuY2UBWQEsQmxvY2tOdW1iZXIBOAAIARB1c2VkWQEBHEJhbGFuY2UAASBhdF9ibG9jazgBLEJsb2NrTnVtYmVyAACZEAx8aW5kaXZfcGFsbGV0X29yaWdpbl9yZXN0cmljdGlvbhhwYWxsZXQURXJyb3IEBFQAAQgcTm9Vc2FnZQAABIBUaGUgb3JpZ2luIGhhcyBubyB1c2FnZSB0cmFja2VkLhxOb3RaZXJvAAEEWFRoZSB1c2FnZSBpcyBub3QgemVyby4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQunRAMLHBhbGxldF9zdWRvGHBhbGxldBRFcnJvcgQEVAABBCxSZXF1aXJlU3VkbwAABIBTZW5kZXIgbXVzdCBiZSB0aGUgU3VkbyBhY2NvdW50LgRoRXJyb3IgZm9yIHRoZSBTdWRvIHBhbGxldC6hEAAABAw4oAQApRAMNHBhbGxldF9haF9vcHMYcGFsbGV0FEVycm9yBARUAAE8OE5vTGVhc2VSZXNlcnZlAAAEuEVpdGhlciBubyBsZWFzZSBkZXBvc2l0IG9yIGFscmVhZHkgdW5yZXNlcnZlZC5cTm9Dcm93ZGxvYW5Db250cmlidXRpb24AAQTYRWl0aGVyIG5vIGNyb3dkbG9hbiBjb250cmlidXRpb24gb3IgYWxyZWFkeSB3aXRoZHJhd24uSE5vQ3Jvd2Rsb2FuUmVzZXJ2ZQACBMhFaXRoZXIgbm8gY3Jvd2Rsb2FuIHJlc2VydmUgb3IgYWxyZWFkeSB1bnJlc2VydmVkLpRGYWlsZWRUb1dpdGhkcmF3Q3Jvd2Rsb2FuQ29udHJpYnV0aW9uAAMEqEZhaWxlZCB0byB3aXRoZHJhdyBjcm93ZGxvYW4gY29udHJpYnV0aW9uLhhOb3RZZXQABASAQmxvY2sgbnVtYmVyIGlzIG5vdCB5ZXQgcmVhY2hlZC5YQ29udHJpYnV0aW9uc1JlbWFpbmluZwAFBJBOb3QgYWxsIGNvbnRyaWJ1dGlvbnMgYXJlIHdpdGhkcmF3bi5cV3JvbmdEZXJpdmVkVHJhbnNsYXRpb24ABgSUVGhlIGFjY291bnQgaXMgbm90IGEgZGVyaXZlZCBhY2NvdW50LjBOb3RTb3ZlcmVpZ24ABwQlAUFjY291bnQgY2Fubm90IGJlIG1pZ3JhdGVkIHNpbmNlIGl0IGlzIG5vdCBhIHNvdmVyZWlnbiBwYXJhY2hhaW4gYWNjb3VudC40SW50ZXJuYWxFcnJvcgAIBIhJbnRlcm5hbCBlcnJvciwgcGxlYXNlIGJ1ZyByZXBvcnQuVE1pZ3JhdGlvbk5vdENvbXBsZXRlZAAJBKRUaGUgQXNzZXQgSHViIG1pZ3JhdGlvbiBpcyBub3QgY29tcGxldGVkLixaZXJvQmFsYW5jZQAKBFBUaGUgYmFsYW5jZSBpcyB6ZXJvLkBGYWlsZWRUb1RyYW5zZmVyAAsEbEZhaWxlZCB0byB0cmFuc2ZlciBiYWxhbmNlLkRBbHJlYWR5VHJhbnNsYXRlZAAMBKBUaGUgYWNjb3VudCBoYXMgYWxyZWFkeSBiZWVuIHRyYW5zbGF0ZWQuVFRvb0xvbmdEZXJpdmF0aW9uUGF0aAANBIBUaGUgZGVyaXZhdGlvbiBwYXRoIGlzIHRvbyBsb25nLlBGYWlsZWRUb0ZvcmNlVW5zdGFrZQAOBGBGYWlsZWQgdG8gZm9yY2UgdW5zdGFrZS4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuqRAISHNwX2NvbnNlbnN1c19zbG90czBTbG90RHVyYXRpb24AAAQAKAEMdTY0AACtEBAoc3BfcnVudGltZRxnZW5lcmljFGJsb2NrJExhenlCbG9jawgYSGVhZGVyAWAkRXh0cmluc2ljAQ0KAAgBGGhlYWRlcmABGEhlYWRlcgABKGV4dHJpbnNpY3OxEAFQVmVjPE9wYXF1ZUV4dHJpbnNpYz4AALEQAAACtRAAtRAIKHNwX3J1bnRpbWU8T3BhcXVlRXh0cmluc2ljAAAEABgBHFZlYzx1OD4AALkQCChzcF9ydW50aW1lWEV4dHJpbnNpY0luY2x1c2lvbk1vZGUAAQg0QWxsRXh0cmluc2ljcwAAADRPbmx5SW5oZXJlbnRzAAEAAL0QCBxzcF9jb3JlOE9wYXF1ZU1ldGFkYXRhAAAEABgBHFZlYzx1OD4AAMEQBBhPcHRpb24EBFQBvRABCBBOb25lAAAAEFNvbWUEAL0QAAABAADFEAQYUmVzdWx0CARUAS0IBEUByRABCAhPawQALQgAAAAADEVycgQAyRAAAAEAAMkQDChzcF9ydW50aW1lUHRyYW5zYWN0aW9uX3ZhbGlkaXR5YFRyYW5zYWN0aW9uVmFsaWRpdHlFcnJvcgABCBxJbnZhbGlkBADNEAFISW52YWxpZFRyYW5zYWN0aW9uAAAAHFVua25vd24EANEQAUhVbmtub3duVHJhbnNhY3Rpb24AAQAAzRAMKHNwX3J1bnRpbWVQdHJhbnNhY3Rpb25fdmFsaWRpdHlISW52YWxpZFRyYW5zYWN0aW9uAAE0EENhbGwAAAAcUGF5bWVudAABABhGdXR1cmUAAgAUU3RhbGUAAwAgQmFkUHJvb2YABABEQW5jaWVudEJpcnRoQmxvY2sABQBERXhoYXVzdHNSZXNvdXJjZXMABgAYQ3VzdG9tBAAMAQh1OAAHADBCYWRNYW5kYXRvcnkACABMTWFuZGF0b3J5VmFsaWRhdGlvbgAJACRCYWRTaWduZXIACgBUSW5kZXRlcm1pbmF0ZUltcGxpY2l0AAsANFVua25vd25PcmlnaW4ADAAA0RAMKHNwX3J1bnRpbWVQdHJhbnNhY3Rpb25fdmFsaWRpdHlIVW5rbm93blRyYW5zYWN0aW9uAAEMMENhbm5vdExvb2t1cAAAAExOb1Vuc2lnbmVkVmFsaWRhdG9yAAEAGEN1c3RvbQQADAEIdTgAAgAA1RAIMHNwX2luaGVyZW50czBJbmhlcmVudERhdGEAAAQBEGRhdGHZEAGUQlRyZWVNYXA8SW5oZXJlbnRJZGVudGlmaWVyLCBWZWM8dTg+PgAA2RAEIEJUcmVlTWFwCARLAXkCBFYBGAAEAN0QAAAA3RAAAALhEADhEAAABAh5AhgA5RAIMHNwX2luaGVyZW50c1BDaGVja0luaGVyZW50c1Jlc3VsdAAADAEQb2theV0BARBib29sAAEsZmF0YWxfZXJyb3JdAQEQYm9vbAABGGVycm9yc9UQATBJbmhlcmVudERhdGEAAOkQDChzcF9ydW50aW1lUHRyYW5zYWN0aW9uX3ZhbGlkaXR5RFRyYW5zYWN0aW9uU291cmNlAAEMHEluQmxvY2sAAAAUTG9jYWwAAQAgRXh0ZXJuYWwAAgAA7RAEGFJlc3VsdAgEVAHxEARFAckQAQgIT2sEAPEQAAAAAAxFcnIEAMkQAAABAADxEAwoc3BfcnVudGltZVB0cmFuc2FjdGlvbl92YWxpZGl0eUBWYWxpZFRyYW5zYWN0aW9uAAAUASBwcmlvcml0eSgBTFRyYW5zYWN0aW9uUHJpb3JpdHkAASByZXF1aXJlczQBTFZlYzxUcmFuc2FjdGlvblRhZz4AASBwcm92aWRlczQBTFZlYzxUcmFuc2FjdGlvblRhZz4AASRsb25nZXZpdHkoAVBUcmFuc2FjdGlvbkxvbmdldml0eQABJHByb3BhZ2F0ZV0BARBib29sAAD1EAwoc3Bfc2Vzc2lvbixydW50aW1lX2FwaWhPcGFxdWVHZW5lcmF0ZWRTZXNzaW9uS2V5cwAACAEQa2V5cxgBHFZlYzx1OD4AARRwcm9vZhgBHFZlYzx1OD4AAPkQBBhPcHRpb24EBFQB/RABCBBOb25lAAAAEFNvbWUEAP0QAAABAAD9EAAAAgERAAERAAAECBiNCwAFEQw0ZnJhbWVfc3VwcG9ydDh2aWV3X2Z1bmN0aW9uczhWaWV3RnVuY3Rpb25JZAAACAEYcHJlZml4fQIBIFt1ODsgMTZdAAEYc3VmZml4fQIBIFt1ODsgMTZdAAAJEQQYUmVzdWx0CARUARgERQENEQEICE9rBAAYAAAAAAxFcnIEAA0RAAABAAANEQw0ZnJhbWVfc3VwcG9ydDh2aWV3X2Z1bmN0aW9uc2RWaWV3RnVuY3Rpb25EaXNwYXRjaEVycm9yAAEMOE5vdEltcGxlbWVudGVkAAAAIE5vdEZvdW5kBAAFEQE4Vmlld0Z1bmN0aW9uSWQAAQAUQ29kZWMAAgAAEREMaHBhbGxldF90cmFuc2FjdGlvbl9wYXltZW50FHR5cGVzTFJ1bnRpbWVEaXNwYXRjaEluZm8IHEJhbGFuY2UBWQEYV2VpZ2h0ARUBAAwBGHdlaWdodBUBARhXZWlnaHQAARRjbGFzcwEIATREaXNwYXRjaENsYXNzAAEscGFydGlhbF9mZWVZAQEcQmFsYW5jZQAAFREMaHBhbGxldF90cmFuc2FjdGlvbl9wYXltZW50FHR5cGVzKEZlZURldGFpbHMEHEJhbGFuY2UBWQEACAE0aW5jbHVzaW9uX2ZlZRkRAXRPcHRpb248SW5jbHVzaW9uRmVlPEJhbGFuY2U+PgABDHRpcFkBARxCYWxhbmNlAAAZEQQYT3B0aW9uBARUAR0RAQgQTm9uZQAAABBTb21lBAAdEQAAAQAAHREMaHBhbGxldF90cmFuc2FjdGlvbl9wYXltZW50FHR5cGVzMEluY2x1c2lvbkZlZQQcQmFsYW5jZQFZAQAMASBiYXNlX2ZlZVkBARxCYWxhbmNlAAEcbGVuX2ZlZVkBARxCYWxhbmNlAAFMYWRqdXN0ZWRfd2VpZ2h0X2ZlZVkBARxCYWxhbmNlAAAhEQQYUmVzdWx0CARUASURBEUBKREBCAhPawQAJREAAAAADEVycgQAKREAAAEAACURAAACwQMAKREMQHhjbV9ydW50aW1lX2FwaXMQZmVlcxRFcnJvcgABGDRVbmltcGxlbWVudGVkAAAAZFZlcnNpb25lZENvbnZlcnNpb25GYWlsZWQAAQBMV2VpZ2h0Tm90Q29tcHV0YWJsZQACAExVbmhhbmRsZWRYY21WZXJzaW9uAAMANEFzc2V0Tm90Rm91bmQABAAoVW5yb3V0YWJsZQAFAAAtEQQYUmVzdWx0CARUARUBBEUBKREBCAhPawQAFQEAAAAADEVycgQAKREAAAEAADERBBhSZXN1bHQIBFQBWQEERQEpEQEICE9rBABZAQAAAAAMRXJyBAApEQAAAQAANREEGFJlc3VsdAgEVAGNAwRFASkRAQgIT2sEAI0DAAAAAAxFcnIEACkRAAABAAA5EQQYUmVzdWx0CARUAT0RBEUBVREBCAhPawQAPREAAAAADEVycgQAVREAAAEAAD0RDEB4Y21fcnVudGltZV9hcGlzHGRyeV9ydW5EQ2FsbERyeVJ1bkVmZmVjdHMEFEV2ZW50AfUHABABQGV4ZWN1dGlvbl9yZXN1bHQ5CQFoRGlzcGF0Y2hSZXN1bHRXaXRoUG9zdEluZm8AAThlbWl0dGVkX2V2ZW50c0ERAShWZWM8RXZlbnQ+AAEkbG9jYWxfeGNtRREBYE9wdGlvbjxWZXJzaW9uZWRYY208KCk+PgABOGZvcndhcmRlZF94Y21zSREBvFZlYzwoVmVyc2lvbmVkTG9jYXRpb24sIFZlYzxWZXJzaW9uZWRYY208KCk+Pik+AABBEQAAAvUHAEURBBhPcHRpb24EBFQBUQIBCBBOb25lAAAAEFNvbWUEAFECAAABAABJEQAAAk0RAE0RAAAECMkBUREAUREAAAJRAgBVEQxAeGNtX3J1bnRpbWVfYXBpcxxkcnlfcnVuFEVycm9yAAEINFVuaW1wbGVtZW50ZWQAAABkVmVyc2lvbmVkQ29udmVyc2lvbkZhaWxlZAABAABZEQQYUmVzdWx0CARUAV0RBEUBVREBCAhPawQAXREAAAAADEVycgQAVREAAAEAAF0RDEB4Y21fcnVudGltZV9hcGlzHGRyeV9ydW5AWGNtRHJ5UnVuRWZmZWN0cwQURXZlbnQB9QcADAFAZXhlY3V0aW9uX3Jlc3VsdL0IARxPdXRjb21lAAE4ZW1pdHRlZF9ldmVudHNBEQEoVmVjPEV2ZW50PgABOGZvcndhcmRlZF94Y21zSREBvFZlYzwoVmVyc2lvbmVkTG9jYXRpb24sIFZlYzxWZXJzaW9uZWRYY208KCk+Pik+AABhEQQYUmVzdWx0CARUAQQERQFlEQEICE9rBAAEAAAAAAxFcnIEAGURAAABAABlEQxAeGNtX3J1bnRpbWVfYXBpcyxjb252ZXJzaW9ucxRFcnJvcgABCCxVbnN1cHBvcnRlZAAAAGRWZXJzaW9uZWRDb252ZXJzaW9uRmFpbGVkAAEAAGkRCAx4Y204VmVyc2lvbmVkQXNzZXQAAQwIVjMEAGkCATh2Mzo6TXVsdGlBc3NldAADAAhWNAQA3QIBJHY0OjpBc3NldAAEAAhWNQQAKQMBJHY1OjpBc3NldAAFAABtEQQYUmVzdWx0CARUAV0BBEUBcREBCAhPawQAXQEAAAAADEVycgQAcREAAAEAAHERDEB4Y21fcnVudGltZV9hcGlzNHRydXN0ZWRfcXVlcnkURXJyb3IAAQh4VmVyc2lvbmVkQXNzZXRDb252ZXJzaW9uRmFpbGVkAAAAhFZlcnNpb25lZExvY2F0aW9uQ29udmVyc2lvbkZhaWxlZAABAAB1EQQYUmVzdWx0CARUATEMBEUBeREBCAhPawQAMQwAAAAADEVycgQAeREAAAEAAHkRDEB4Y21fcnVudGltZV9hcGlzSGF1dGhvcml6ZWRfYWxpYXNlcxRFcnJvcgABBHxMb2NhdGlvblZlcnNpb25Db252ZXJzaW9uRmFpbGVkAAAAAH0RBBhSZXN1bHQIBFQBXQEERQF5EQEICE9rBABdAQAAAAAMRXJyBAB5EQAAAQAAgREEGFJlc3VsdAgEVAGNAwRFAYURAQgIT2sEAI0DAAAAAAxFcnIEAIURAAABAACFEQw0YXNzZXRzX2NvbW1vbixydW50aW1lX2FwaVBGdW5naWJsZXNBY2Nlc3NFcnJvcgABCFxBc3NldElkQ29udmVyc2lvbkZhaWxlZAAAAHxBbW91bnRUb0JhbGFuY2VDb252ZXJzaW9uRmFpbGVkAAEAAIkRCFxjdW11bHVzX3ByaW1pdGl2ZXNfY29yZTRDb2xsYXRpb25JbmZvAAAYATx1cHdhcmRfbWVzc2FnZXM0AUhWZWM8VXB3YXJkTWVzc2FnZT4AAUxob3Jpem9udGFsX21lc3NhZ2VziQoBYFZlYzxPdXRib3VuZEhybXBNZXNzYWdlPgABTG5ld192YWxpZGF0aW9uX2NvZGWNEQGMT3B0aW9uPHJlbGF5X2NoYWluOjpWYWxpZGF0aW9uQ29kZT4AAWxwcm9jZXNzZWRfZG93bndhcmRfbWVzc2FnZXM4AQx1MzIAAThocm1wX3dhdGVybWFyazgBYHJlbGF5X2NoYWluOjpCbG9ja051bWJlcgABJGhlYWRfZGF0YVABIEhlYWREYXRhAACNEQQYT3B0aW9uBARUAZERAQgQTm9uZQAAABBTb21lBACREQAAAQAAkREMdHBvbGthZG90X3BhcmFjaGFpbl9wcmltaXRpdmVzKHByaW1pdGl2ZXM4VmFsaWRhdGlvbkNvZGUAAAQAGAEcVmVjPHU4PgAAlREEGFJlc3VsdAgEVAEQBEUB1QkBCAhPawQAEAAAAAAMRXJyBADVCQAAAQAAmREEGE9wdGlvbgQEVAHVCQEIEE5vbmUAAAAQU29tZQQA1QkAAAEAAJ0RAAAC1QkAoREEGE9wdGlvbgQEVAGBDQEIEE5vbmUAAAAQU29tZQQAgQ0AAAEAAKURDGBzeXN0ZW1fcGFyYWNoYWluc19jb21tb24QYXBpczRJbmZsYXRpb25JbmZvAAAIASBpc3N1YW5jZakRAVxzcF9ydW50aW1lOjpQZXJxdWludGlsbAABJG5leHRfbWludIENAfAocG9sa2Fkb3RfcHJpbWl0aXZlczo6QmFsYW5jZSwgcG9sa2Fkb3RfcHJpbWl0aXZlczo6QmFsYW5jZSkAAKkRDDRzcF9hcml0aG1ldGljKHBlcl90aGluZ3MsUGVycXVpbnRpbGwAAAQAKAEMdTY0AACtEQw0cGFsbGV0X3Jldml2ZShwcmltaXRpdmVzOENvbnRyYWN0UmVzdWx0CARSAbERHEJhbGFuY2UBWQEAGAE8d2VpZ2h0X2NvbnN1bWVkFQEBGFdlaWdodAABPHdlaWdodF9yZXF1aXJlZBUBARhXZWlnaHQAATxzdG9yYWdlX2RlcG9zaXS5EQFcU3RvcmFnZURlcG9zaXQ8QmFsYW5jZT4AAUxtYXhfc3RvcmFnZV9kZXBvc2l0uREBXFN0b3JhZ2VEZXBvc2l0PEJhbGFuY2U+AAEwZ2FzX2NvbnN1bWVkWQEBHEJhbGFuY2UAARhyZXN1bHS9EQFgUmVzdWx0PFIsIERpc3BhdGNoRXJyb3I+AACxEQw0cGFsbGV0X3Jldml2ZShwcmltaXRpdmVzPEV4ZWNSZXR1cm5WYWx1ZQAACAEUZmxhZ3O1EQEsUmV0dXJuRmxhZ3MAARBkYXRhGAEcVmVjPHU4PgAAtREMSHBhbGxldF9yZXZpdmVfdWFwaRRmbGFncyxSZXR1cm5GbGFncwAABAEQYml0czgBDHUzMgAAuREMNHBhbGxldF9yZXZpdmUocHJpbWl0aXZlczhTdG9yYWdlRGVwb3NpdAQcQmFsYW5jZQFZAQEIGFJlZnVuZAQAWQEBHEJhbGFuY2UAAAAYQ2hhcmdlBABZAQEcQmFsYW5jZQABAAC9EQQYUmVzdWx0CARUAbERBEUBCQgBCAhPawQAsREAAAAADEVycgQACQgAAAEAAMERDDRwYWxsZXRfcmV2aXZlKHByaW1pdGl2ZXMQQ29kZQABCBhVcGxvYWQEABgBHFZlYzx1OD4AAAAgRXhpc3RpbmcEAEABNHNwX2NvcmU6OkgyNTYAAQAAxREMNHBhbGxldF9yZXZpdmUocHJpbWl0aXZlczhDb250cmFjdFJlc3VsdAgEUgHJERxCYWxhbmNlAVkBABgBPHdlaWdodF9jb25zdW1lZBUBARhXZWlnaHQAATx3ZWlnaHRfcmVxdWlyZWQVAQEYV2VpZ2h0AAE8c3RvcmFnZV9kZXBvc2l0uREBXFN0b3JhZ2VEZXBvc2l0PEJhbGFuY2U+AAFMbWF4X3N0b3JhZ2VfZGVwb3NpdLkRAVxTdG9yYWdlRGVwb3NpdDxCYWxhbmNlPgABMGdhc19jb25zdW1lZFkBARxCYWxhbmNlAAEYcmVzdWx0zREBYFJlc3VsdDxSLCBEaXNwYXRjaEVycm9yPgAAyREMNHBhbGxldF9yZXZpdmUocHJpbWl0aXZlc1hJbnN0YW50aWF0ZVJldHVyblZhbHVlAAAIARhyZXN1bHSxEQE8RXhlY1JldHVyblZhbHVlAAEQYWRkcj0HARBIMTYwAADNEQQYUmVzdWx0CARUAckRBEUBCQgBCAhPawQAyREAAAAADEVycgQACQgAAAEAANERFDRwYWxsZXRfcmV2aXZlDGV2bQxhcGk0cnBjX3R5cGVzX2dlbkhHZW5lcmljVHJhbnNhY3Rpb24AAEABLGFjY2Vzc19saXN01REBSE9wdGlvbjxBY2Nlc3NMaXN0PgABSGF1dGhvcml6YXRpb25fbGlzdC0QAWxWZWM8QXV0aG9yaXphdGlvbkxpc3RFbnRyeT4AAVRibG9iX3ZlcnNpb25lZF9oYXNoZXPEASRWZWM8SDI1Nj4AARRibG9ic9kRAShWZWM8Qnl0ZXM+AAEgY2hhaW5faWQJEAEwT3B0aW9uPFUyNTY+AAEQZnJvbUUQATxPcHRpb248QWRkcmVzcz4AAQxnYXMJEAEwT3B0aW9uPFUyNTY+AAEkZ2FzX3ByaWNlCRABME9wdGlvbjxVMjU2PgABFGlucHV03REBLElucHV0T3JEYXRhAAFQbWF4X2ZlZV9wZXJfYmxvYl9nYXMJEAEwT3B0aW9uPFUyNTY+AAE8bWF4X2ZlZV9wZXJfZ2FzCRABME9wdGlvbjxVMjU2PgABYG1heF9wcmlvcml0eV9mZWVfcGVyX2dhcwkQATBPcHRpb248VTI1Nj4AARRub25jZQkQATBPcHRpb248VTI1Nj4AAQh0b0UQATxPcHRpb248QWRkcmVzcz4AARhyI3R5cGXlEQEwT3B0aW9uPEJ5dGU+AAEUdmFsdWUJEAEwT3B0aW9uPFUyNTY+AADVEQQYT3B0aW9uBARUASUQAQgQTm9uZQAAABBTb21lBAAlEAAAAQAA2REAAAL5DwDdERQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpNHJwY190eXBlc19nZW4sSW5wdXRPckRhdGEAAAgBFGlucHV04REBNE9wdGlvbjxCeXRlcz4AARBkYXRh4REBNE9wdGlvbjxCeXRlcz4AAOERBBhPcHRpb24EBFQB+Q8BCBBOb25lAAAAEFNvbWUEAPkPAAABAADlEQQYT3B0aW9uBARUAekRAQgQTm9uZQAAABBTb21lBADpEQAAAQAA6REUNHBhbGxldF9yZXZpdmUMZXZtDGFwaRBieXRlEEJ5dGUAAAQADAEIdTgAAO0RBBhSZXN1bHQIBFQB8REERQH1EQEICE9rBADxEQAAAAAMRXJyBAD1EQAAAQAA8REMNHBhbGxldF9yZXZpdmUocHJpbWl0aXZlczxFdGhUcmFuc2FjdEluZm8EHEJhbGFuY2UBWQEAFAE8d2VpZ2h0X3JlcXVpcmVkFQEBGFdlaWdodAABPHN0b3JhZ2VfZGVwb3NpdFkBARxCYWxhbmNlAAFMbWF4X3N0b3JhZ2VfZGVwb3NpdFkBARxCYWxhbmNlAAEcZXRoX2dhc0UHARBVMjU2AAEQZGF0YRgBHFZlYzx1OD4AAPURDDRwYWxsZXRfcmV2aXZlKHByaW1pdGl2ZXNARXRoVHJhbnNhY3RFcnJvcgABCBBEYXRhBAAYARxWZWM8dTg+AAAAHE1lc3NhZ2UEANUJARhTdHJpbmcAAQAA+REUNHBhbGxldF9yZXZpdmUMZXZtDGFwaSRycGNfdHlwZXMwRHJ5UnVuQ29uZmlnBBhNb21lbnQBKAAMAUh0aW1lc3RhbXBfb3ZlcnJpZGUBAQE4T3B0aW9uPE1vbWVudD4AAVhwZXJmb3JtX2JhbGFuY2VfY2hlY2tz/REBME9wdGlvbjxib29sPgABPHN0YXRlX292ZXJyaWRlcwESAWBPcHRpb248U3RhdGVPdmVycmlkZVNldD4AAP0RBBhPcHRpb24EBFQBXQEBCBBOb25lAAAAEFNvbWUEAF0BAAABAAABEgQYT3B0aW9uBARUAQUSAQgQTm9uZQAAABBTb21lBAAFEgAAAQAABRIUNHBhbGxldF9yZXZpdmUMZXZtDGFwaTRycGNfdHlwZXNfZ2VuQFN0YXRlT3ZlcnJpZGVTZXQAAAQACRIBgEJUcmVlTWFwPEFkZHJlc3MsIFN0YXRlT3ZlcnJpZGU+AAAJEgQgQlRyZWVNYXAIBEsBPQcEVgENEgAEACUSAAAADRIUNHBhbGxldF9yZXZpdmUMZXZtDGFwaTRycGNfdHlwZXNfZ2VuNFN0YXRlT3ZlcnJpZGUAABQBHGJhbGFuY2UJEAEwT3B0aW9uPFUyNTY+AAEUbm9uY2UJEAEwT3B0aW9uPFUyNTY+AAEQY29kZeERATRPcHRpb248Qnl0ZXM+AAEcc3RvcmFnZRESAVxPcHRpb248U3RvcmFnZU92ZXJyaWRlPgABaG1vdmVfcHJlY29tcGlsZV90b19hZGRyZXNzRRABPE9wdGlvbjxBZGRyZXNzPgAAERIEGE9wdGlvbgQEVAEVEgEIEE5vbmUAAAAQU29tZQQAFRIAAAEAABUSFDRwYWxsZXRfcmV2aXZlDGV2bQxhcGk0cnBjX3R5cGVzX2dlbjxTdG9yYWdlT3ZlcnJpZGUAAQgUU3RhdGUEABkSAVBCVHJlZU1hcDxIMjU2LCBIMjU2PgAAACRTdGF0ZURpZmYEABkSAVBCVHJlZU1hcDxIMjU2LCBIMjU2PgABAAAZEgQgQlRyZWVNYXAIBEsBQARWAUAABAAdEgAAAB0SAAACIRIAIRIAAAQIQEAAJRIAAAIpEgApEgAABAg9Bw0SAC0SBBhSZXN1bHQIBFQBRQcERQH1EQEICE9rBABFBwAAAAAMRXJyBAD1EQAAAQAAMRIEGFJlc3VsdAgEVAEVAQRFAfURAQgIT2sEABUBAAAAAAxFcnIEAPURAAABAAA1EgQYUmVzdWx0CARUATkSBEUBCQgBCAhPawQAORIAAAAADEVycgQACQgAAAEAADkSDDRwYWxsZXRfcmV2aXZlKHByaW1pdGl2ZXNUQ29kZVVwbG9hZFJldHVyblZhbHVlBBxCYWxhbmNlAVkBAAgBJGNvZGVfaGFzaEABNHNwX2NvcmU6OkgyNTYAARxkZXBvc2l0WQEBHEJhbGFuY2UAAD0SBBhSZXN1bHQIBFQBTQEERQFBEgEICE9rBABNAQAAAAAMRXJyBABBEgAAAQAAQRIMNHBhbGxldF9yZXZpdmUocHJpbWl0aXZlc0xDb250cmFjdEFjY2Vzc0Vycm9yAAEMLERvZXNudEV4aXN0AAAAREtleURlY29kaW5nRmFpbGVkAAEASFN0b3JhZ2VXcml0ZUZhaWxlZAQACQgBNERpc3BhdGNoRXJyb3IAAgAARRIUNHBhbGxldF9yZXZpdmUMZXZtDGFwaTxkZWJ1Z19ycGNfdHlwZXMoVHJhY2VyVHlwZQABDChDYWxsVHJhY2VyBABJEgFgT3B0aW9uPENhbGxUcmFjZXJDb25maWc+AAAAOFByZXN0YXRlVHJhY2VyBABREgFwT3B0aW9uPFByZXN0YXRlVHJhY2VyQ29uZmlnPgABADxFeGVjdXRpb25UcmFjZXIEAFkSAXRPcHRpb248RXhlY3V0aW9uVHJhY2VyQ29uZmlnPgACAABJEgQYT3B0aW9uBARUAU0SAQgQTm9uZQAAABBTb21lBABNEgAAAQAATRIUNHBhbGxldF9yZXZpdmUMZXZtDGFwaTxkZWJ1Z19ycGNfdHlwZXNAQ2FsbFRyYWNlckNvbmZpZwAACAEkd2l0aF9sb2dzXQEBEGJvb2wAATRvbmx5X3RvcF9jYWxsXQEBEGJvb2wAAFESBBhPcHRpb24EBFQBVRIBCBBOb25lAAAAEFNvbWUEAFUSAAABAABVEhQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpPGRlYnVnX3JwY190eXBlc1BQcmVzdGF0ZVRyYWNlckNvbmZpZwAADAEkZGlmZl9tb2RlXQEBEGJvb2wAATxkaXNhYmxlX3N0b3JhZ2VdAQEQYm9vbAABMGRpc2FibGVfY29kZV0BARBib29sAABZEgQYT3B0aW9uBARUAV0SAQgQTm9uZQAAABBTb21lBABdEgAAAQAAXRIUNHBhbGxldF9yZXZpdmUMZXZtDGFwaTxkZWJ1Z19ycGNfdHlwZXNURXhlY3V0aW9uVHJhY2VyQ29uZmlnAAAcATRlbmFibGVfbWVtb3J5XQEBEGJvb2wAATRkaXNhYmxlX3N0YWNrXQEBEGJvb2wAATxkaXNhYmxlX3N0b3JhZ2VdAQEQYm9vbAABSGVuYWJsZV9yZXR1cm5fZGF0YV0BARBib29sAAFcZGlzYWJsZV9zeXNjYWxsX2RldGFpbHNdAQEQYm9vbAABFGxpbWl0AQEBLE9wdGlvbjx1NjQ+AAFEbWVtb3J5X3dvcmRfbGltaXQ4AQx1MzIAAGESAAACZRIAZRIAAAQIOGkSAGkSFDRwYWxsZXRfcmV2aXZlDGV2bQxhcGk8ZGVidWdfcnBjX3R5cGVzFFRyYWNlAAEMEENhbGwEAG0SASRDYWxsVHJhY2UAAAAgUHJlc3RhdGUEAIESATRQcmVzdGF0ZVRyYWNlAAEAJEV4ZWN1dGlvbgQAoRIBOEV4ZWN1dGlvblRyYWNlAAIAAG0SFDRwYWxsZXRfcmV2aXZlDGV2bQxhcGk8ZGVidWdfcnBjX3R5cGVzJENhbGxUcmFjZQAANAEQZnJvbT0HARBIMTYwAAEMZ2FzKAEMdTY0AAEgZ2FzX3VzZWQoAQx1NjQAAQh0bz0HARBIMTYwAAEUaW5wdXT5DwEUQnl0ZXMAARhvdXRwdXT5DwEUQnl0ZXMAARRlcnJvcpkRAThPcHRpb248U3RyaW5nPgABNHJldmVydF9yZWFzb26ZEQE4T3B0aW9uPFN0cmluZz4AARRjYWxsc3ESAThWZWM8Q2FsbFRyYWNlPgABEGxvZ3N1EgEwVmVjPENhbGxMb2c+AAEUdmFsdWUJEAEwT3B0aW9uPFUyNTY+AAEkY2FsbF90eXBlfRIBIENhbGxUeXBlAAFAY2hpbGRfY2FsbF9jb3VudDgBDHUzMgAAcRIAAAJtEgB1EgAAAnkSAHkSFDRwYWxsZXRfcmV2aXZlDGV2bQxhcGk8ZGVidWdfcnBjX3R5cGVzHENhbGxMb2cAABABHGFkZHJlc3M9BwEQSDE2MAABGHRvcGljc8QBJFZlYzxIMjU2PgABEGRhdGH5DwEUQnl0ZXMAASBwb3NpdGlvbjgBDHUzMgAAfRIUNHBhbGxldF9yZXZpdmUMZXZtDGFwaTxkZWJ1Z19ycGNfdHlwZXMgQ2FsbFR5cGUAARgQQ2FsbAAAAChTdGF0aWNDYWxsAAEAMERlbGVnYXRlQ2FsbAACABhDcmVhdGUAAwAcQ3JlYXRlMgAEADBTZWxmZGVzdHJ1Y3QABQAAgRIUNHBhbGxldF9yZXZpdmUMZXZtDGFwaTxkZWJ1Z19ycGNfdHlwZXM0UHJlc3RhdGVUcmFjZQABCCBQcmVzdGF0ZQQAhRIBhEJUcmVlTWFwPEgxNjAsIFByZXN0YXRlVHJhY2VJbmZvPgAAACBEaWZmTW9kZQgBDHByZYUSAYRCVHJlZU1hcDxIMTYwLCBQcmVzdGF0ZVRyYWNlSW5mbz4AARBwb3N0hRIBhEJUcmVlTWFwPEgxNjAsIFByZXN0YXRlVHJhY2VJbmZvPgABAACFEgQgQlRyZWVNYXAIBEsBPQcEVgGJEgAEAJkSAAAAiRIUNHBhbGxldF9yZXZpdmUMZXZtDGFwaTxkZWJ1Z19ycGNfdHlwZXNEUHJlc3RhdGVUcmFjZUluZm8AABABHGJhbGFuY2UJEAEwT3B0aW9uPFUyNTY+AAEUbm9uY2XkASxPcHRpb248dTMyPgABEGNvZGXhEQE0T3B0aW9uPEJ5dGVzPgABHHN0b3JhZ2WNEgF4QlRyZWVNYXA8Qnl0ZXMsIE9wdGlvbjxCeXRlcz4+AACNEgQgQlRyZWVNYXAIBEsB+Q8EVgHhEQAEAJESAAAAkRIAAAKVEgCVEgAABAj5D+ERAJkSAAACnRIAnRIAAAQIPQeJEgChEhQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpPGRlYnVnX3JwY190eXBlczhFeGVjdXRpb25UcmFjZQAAGAEMZ2FzKAEMdTY0AAE8d2VpZ2h0X2NvbnN1bWVkFQEBGFdlaWdodAABQGJhc2VfY2FsbF93ZWlnaHQVAQEYV2VpZ2h0AAEYZmFpbGVkXQEBEGJvb2wAATByZXR1cm5fdmFsdWX5DwEUQnl0ZXMAASxzdHJ1Y3RfbG9nc6USAUhWZWM8RXhlY3V0aW9uU3RlcD4AAKUSAAACqRIAqRIUNHBhbGxldF9yZXZpdmUMZXZtDGFwaTxkZWJ1Z19ycGNfdHlwZXM0RXhlY3V0aW9uU3RlcAAAHAEMZ2FzuAEMdTY0AAEgZ2FzX2Nvc3S4AQx1NjQAASx3ZWlnaHRfY29zdBUBARhXZWlnaHQAARRkZXB0aO0DAQx1MTYAASxyZXR1cm5fZGF0YfkPARRCeXRlcwABFGVycm9ymREBOE9wdGlvbjxTdHJpbmc+AAEQa2luZK0SAURFeGVjdXRpb25TdGVwS2luZAAArRIUNHBhbGxldF9yZXZpdmUMZXZtDGFwaTxkZWJ1Z19ycGNfdHlwZXNERXhlY3V0aW9uU3RlcEtpbmQAAQgkRVZNT3Bjb2RlFAEIcGNkAQx1MzIAAQhvcAwBCHU4AAEUc3RhY2vZEQEoVmVjPEJ5dGVzPgABGG1lbW9yedkRAShWZWM8Qnl0ZXM+AAEcc3RvcmFnZbESAchPcHRpb248YWxsb2M6OmNvbGxlY3Rpb25zOjpCVHJlZU1hcDxCeXRlcywgQnl0ZXM+PgAAAChQVk1TeXNjYWxsDAEIb3AMAQh1OAABEGFyZ3OlDgEgVmVjPHU2ND4AASByZXR1cm5lZAEBASxPcHRpb248dTY0PgABAACxEgQYT3B0aW9uBARUAbUSAQgQTm9uZQAAABBTb21lBAC1EgAAAQAAtRIEIEJUcmVlTWFwCARLAfkPBFYB+Q8ABAC5EgAAALkSAAACvRIAvRIAAAQI+Q/5DwDBEgQYT3B0aW9uBARUAWkSAQgQTm9uZQAAABBTb21lBABpEgAAAQAAxRIEGFJlc3VsdAgEVAFpEgRFAfURAQgIT2sEAGkSAAAAAAxFcnIEAPURAAABAADJEhQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpJHJwY190eXBlczRUcmFjaW5nQ29uZmlnAAAEATxzdGF0ZV9vdmVycmlkZXMBEgFgT3B0aW9uPFN0YXRlT3ZlcnJpZGVTZXQ+AADNEgQYUmVzdWx0CARUAdESBEUB1RIBCAhPawQA0RIAAAAADEVycgQA1RIAAAEAANESAAAECFkBOADVEgw0cGFsbGV0X3Jldml2ZShwcmltaXRpdmVzWEJhbGFuY2VDb252ZXJzaW9uRXJyb3IAAQgUVmFsdWUAAAAQRHVzdAABAADZEghcYXNzZXRfaHViX3Bhc2VvX3J1bnRpbWUwUnVudGltZUVycm9yAAHQGFN5c3RlbQQABQoBcGZyYW1lX3N5c3RlbTo6RXJyb3I8UnVudGltZT4AAAA8UGFyYWNoYWluU3lzdGVtBACZCgG8Y3VtdWx1c19wYWxsZXRfcGFyYWNoYWluX3N5c3RlbTo6RXJyb3I8UnVudGltZT4AAQAgUHJlaW1hZ2UEAL0KAXxwYWxsZXRfcHJlaW1hZ2U6OkVycm9yPFJ1bnRpbWU+AAUAJFNjaGVkdWxlcgQA1QoBgHBhbGxldF9zY2hlZHVsZXI6OkVycm9yPFJ1bnRpbWU+AAYAUE11bHRpQmxvY2tNaWdyYXRpb25zBADZCgGEcGFsbGV0X21pZ3JhdGlvbnM6OkVycm9yPFJ1bnRpbWU+AAgAIEJhbGFuY2VzBAAtCwF8cGFsbGV0X2JhbGFuY2VzOjpFcnJvcjxSdW50aW1lPgAKABxWZXN0aW5nBABJCwF4cGFsbGV0X3Zlc3Rpbmc6OkVycm9yPFJ1bnRpbWU+AA4AGENsYWltcwQATQsBdHBhbGxldF9jbGFpbXM6OkVycm9yPFJ1bnRpbWU+AA8ADERhcAQAVQsBaHBhbGxldF9kYXA6OkVycm9yPFJ1bnRpbWU+ABAARENvbGxhdG9yU2VsZWN0aW9uBABxCwGkcGFsbGV0X2NvbGxhdG9yX3NlbGVjdGlvbjo6RXJyb3I8UnVudGltZT4AFQAcU2Vzc2lvbgQAkQsBeHBhbGxldF9zZXNzaW9uOjpFcnJvcjxSdW50aW1lPgAWACRYY21wUXVldWUEAM0LAaRjdW11bHVzX3BhbGxldF94Y21wX3F1ZXVlOjpFcnJvcjxSdW50aW1lPgAeACxQb2xrYWRvdFhjbQQANQwBaHBhbGxldF94Y206OkVycm9yPFJ1bnRpbWU+AB8AME1lc3NhZ2VRdWV1ZQQAWQwBkHBhbGxldF9tZXNzYWdlX3F1ZXVlOjpFcnJvcjxSdW50aW1lPgAjAGBTbm93YnJpZGdlU3lzdGVtRnJvbnRlbmQEAF0MAcRzbm93YnJpZGdlX3BhbGxldF9zeXN0ZW1fZnJvbnRlbmQ6OkVycm9yPFJ1bnRpbWU+ACQAHFV0aWxpdHkEAGEMAXhwYWxsZXRfdXRpbGl0eTo6RXJyb3I8UnVudGltZT4AKAAgTXVsdGlzaWcEAHEMAXxwYWxsZXRfbXVsdGlzaWc6OkVycm9yPFJ1bnRpbWU+ACkAFFByb3h5BACVDAFwcGFsbGV0X3Byb3h5OjpFcnJvcjxSdW50aW1lPgAqABxJbmRpY2VzBACdDAF4cGFsbGV0X2luZGljZXM6OkVycm9yPFJ1bnRpbWU+ACsAGEFzc2V0cwQAyQwB3HBhbGxldF9hc3NldHM6OkVycm9yPFJ1bnRpbWUsIHBhbGxldF9hc3NldHM6Okluc3RhbmNlMT4AMgAcVW5pcXVlcwQA9QwBeHBhbGxldF91bmlxdWVzOjpFcnJvcjxSdW50aW1lPgAzABBOZnRzBABJDQFscGFsbGV0X25mdHM6OkVycm9yPFJ1bnRpbWU+ADQANEZvcmVpZ25Bc3NldHMEAF0NAdxwYWxsZXRfYXNzZXRzOjpFcnJvcjxSdW50aW1lLCBwYWxsZXRfYXNzZXRzOjpJbnN0YW5jZTI+ADUAKFBvb2xBc3NldHMEAG0NAdxwYWxsZXRfYXNzZXRzOjpFcnJvcjxSdW50aW1lLCBwYWxsZXRfYXNzZXRzOjpJbnN0YW5jZTM+ADYAPEFzc2V0Q29udmVyc2lvbgQAeQ0BnHBhbGxldF9hc3NldF9jb252ZXJzaW9uOjpFcnJvcjxSdW50aW1lPgA3ADRBc3NldHNGcmVlemVyBACFDQEdAXBhbGxldF9hc3NldHNfZnJlZXplcjo6RXJyb3I8UnVudGltZSwgcGFsbGV0X2Fzc2V0c19mcmVlemVyOjpJbnN0YW5jZTE+ADgAMEFzc2V0c0hvbGRlcgQAiQ0BFQFwYWxsZXRfYXNzZXRzX2hvbGRlcjo6RXJyb3I8UnVudGltZSwgcGFsbGV0X2Fzc2V0c19ob2xkZXI6Okluc3RhbmNlMT4AOQAgVHJlYXN1cnkEAJ0NAXxwYWxsZXRfdHJlYXN1cnk6OkVycm9yPFJ1bnRpbWU+ADwAQENvbnZpY3Rpb25Wb3RpbmcEANENAaBwYWxsZXRfY29udmljdGlvbl92b3Rpbmc6OkVycm9yPFJ1bnRpbWU+AD0AJFJlZmVyZW5kYQQAGQ4BgHBhbGxldF9yZWZlcmVuZGE6OkVycm9yPFJ1bnRpbWU+AD4AJFdoaXRlbGlzdAQAHQ4BgHBhbGxldF93aGl0ZWxpc3Q6OkVycm9yPFJ1bnRpbWU+AEAAIEJvdW50aWVzBAAtDgF8cGFsbGV0X2JvdW50aWVzOjpFcnJvcjxSdW50aW1lPgBBADRDaGlsZEJvdW50aWVzBAA5DgGUcGFsbGV0X2NoaWxkX2JvdW50aWVzOjpFcnJvcjxSdW50aW1lPgBCACRBc3NldFJhdGUEAD0OAYRwYWxsZXRfYXNzZXRfcmF0ZTo6RXJyb3I8UnVudGltZT4AQwBITXVsdGlBc3NldEJvdW50aWVzBABZDgGscGFsbGV0X211bHRpX2Fzc2V0X2JvdW50aWVzOjpFcnJvcjxSdW50aW1lPgBEAEhTdGF0ZVRyaWVNaWdyYXRpb24EAF0JAaxwYWxsZXRfc3RhdGVfdHJpZV9taWdyYXRpb246OkVycm9yPFJ1bnRpbWU+AEYAPE5vbWluYXRpb25Qb29scwQAlQ4BnHBhbGxldF9ub21pbmF0aW9uX3Bvb2xzOjpFcnJvcjxSdW50aW1lPgBQACRWb3Rlckxpc3QEAKkOAfRwYWxsZXRfYmFnc19saXN0OjpFcnJvcjxSdW50aW1lLCBwYWxsZXRfYmFnc19saXN0OjpJbnN0YW5jZTE+AFIAQERlbGVnYXRlZFN0YWtpbmcEAL0OAaBwYWxsZXRfZGVsZWdhdGVkX3N0YWtpbmc6OkVycm9yPFJ1bnRpbWU+AFMAPFN0YWtpbmdSY0NsaWVudAQAyQ4BuHBhbGxldF9zdGFraW5nX2FzeW5jX3JjX2NsaWVudDo6RXJyb3I8UnVudGltZT4AVABITXVsdGlCbG9ja0VsZWN0aW9uBADhDgHQcGFsbGV0X2VsZWN0aW9uX3Byb3ZpZGVyX211bHRpX2Jsb2NrOjpFcnJvcjxSdW50aW1lPgBVAGBNdWx0aUJsb2NrRWxlY3Rpb25TaWduZWQEABkPAfBwYWxsZXRfZWxlY3Rpb25fcHJvdmlkZXJfbXVsdGlfYmxvY2s6OnNpZ25lZDo6RXJyb3I8UnVudGltZT4AWAAcU3Rha2luZwQAfQ8BkHBhbGxldF9zdGFraW5nX2FzeW5jOjpFcnJvcjxSdW50aW1lPgBZAERNZW1iZXJzU3Vic2NyaWJlcgQAvQ8BvGluZGl2X3BhbGxldF9tZW1iZXJzX3N1YnNjcmliZXI6OkVycm9yPFJ1bnRpbWU+AGEANEFsaWFzQWNjb3VudHMEAMUPAaxpbmRpdl9wYWxsZXRfYWxpYXNfYWNjb3VudHM6OkVycm9yPFJ1bnRpbWU+AGIAEFBnYXMEAM0PAYRpbmRpdl9wYWxsZXRfcGdhczo6RXJyb3I8UnVudGltZT4AYwAYUmV2aXZlBAB5EAF0cGFsbGV0X3Jldml2ZTo6RXJyb3I8UnVudGltZT4AZABcQXNzZXRzUHJlY29tcGlsZXNQZXJtaXQEAIEQAeRwYWxsZXRfYXNzZXRzX3ByZWNvbXBpbGVzOjpwZXJtaXQ6OnBhbGxldDo6RXJyb3I8UnVudGltZT4AZgAwRG90bnNHYXRld2F5BACNEAGoaW5kaXZfcGFsbGV0X2RvdG5zX2dhdGV3YXk6OkVycm9yPFJ1bnRpbWU+AJgARE9yaWdpblJlc3RyaWN0aW9uBACZEAG8aW5kaXZfcGFsbGV0X29yaWdpbl9yZXN0cmljdGlvbjo6RXJyb3I8UnVudGltZT4AmQAQU3VkbwQAnRABbHBhbGxldF9zdWRvOjpFcnJvcjxSdW50aW1lPgD7ABRBaE9wcwQApRABdHBhbGxldF9haF9vcHM6OkVycm9yPFJ1bnRpbWU+AP4AABUBGFN5c3RlbQEYU3lzdGVtUBxBY2NvdW50AQEEAgTdB0EBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAE6CBUaGUgZnVsbCBhY2NvdW50IGluZm9ybWF0aW9uIGZvciBhIHBhcnRpY3VsYXIgYWNjb3VudCBJRC4AOEV4dHJpbnNpY0NvdW50AAA4BAAEuCBUb3RhbCBleHRyaW5zaWNzIGNvdW50IGZvciB0aGUgY3VycmVudCBibG9jay4AQEluaGVyZW50c0FwcGxpZWQBAF0BBAAEpCBXaGV0aGVyIGFsbCBpbmhlcmVudHMgaGF2ZSBiZWVuIGFwcGxpZWQuACxCbG9ja1dlaWdodAEA6QcYAAAAAAAABIggVGhlIGN1cnJlbnQgd2VpZ2h0IGZvciB0aGUgYmxvY2suACRCbG9ja1NpemUAADgEAAywIFRvdGFsIHNpemUgKGluIGJ5dGVzKSBvZiB0aGUgY3VycmVudCBibG9jay4AyCBUcmFja3MgdGhlIHNpemUgb2YgdGhlIGhlYWRlciBhbmQgYWxsIGV4dHJpbnNpY3MuACRCbG9ja0hhc2gBAQQFOECAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEmCBNYXAgb2YgYmxvY2sgbnVtYmVycyB0byBibG9jayBoYXNoZXMuADRFeHRyaW5zaWNEYXRhAQEEBTgYBAAEPQEgRXh0cmluc2ljcyBkYXRhIGZvciB0aGUgY3VycmVudCBibG9jayAobWFwcyBhbiBleHRyaW5zaWMncyBpbmRleCB0byBpdHMgZGF0YSkuABhOdW1iZXIBADgQAAAAAAQJASBUaGUgY3VycmVudCBibG9jayBudW1iZXIgYmVpbmcgcHJvY2Vzc2VkLiBTZXQgYnkgYGV4ZWN1dGVfYmxvY2tgLgAoUGFyZW50SGFzaAEAQIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARwIEhhc2ggb2YgdGhlIHByZXZpb3VzIGJsb2NrLgAYRGlnZXN0AQBoBAAE8CBEaWdlc3Qgb2YgdGhlIGN1cnJlbnQgYmxvY2ssIGFsc28gcGFydCBvZiB0aGUgYmxvY2sgaGVhZGVyLgAYRXZlbnRzAQDtBwQAHKAgRXZlbnRzIGRlcG9zaXRlZCBmb3IgdGhlIGN1cnJlbnQgYmxvY2suAB0BIE5PVEU6IFRoZSBpdGVtIGlzIHVuYm91bmQgYW5kIHNob3VsZCB0aGVyZWZvcmUgbmV2ZXIgYmUgcmVhZCBvbiBjaGFpbi7QIEl0IGNvdWxkIG90aGVyd2lzZSBpbmZsYXRlIHRoZSBQb1Ygc2l6ZSBvZiBhIGJsb2NrLgAtASBFdmVudHMgaGF2ZSBhIGxhcmdlIGluLW1lbW9yeSBzaXplLiBCb3ggdGhlIGV2ZW50cyB0byBub3QgZ28gb3V0LW9mLW1lbW9yefwganVzdCBpbiBjYXNlIHNvbWVvbmUgc3RpbGwgcmVhZHMgdGhlbSBmcm9tIHdpdGhpbiB0aGUgcnVudGltZS4AKEV2ZW50Q291bnQBADgQAAAAAAS4IFRoZSBudW1iZXIgb2YgZXZlbnRzIGluIHRoZSBgRXZlbnRzPFQ+YCBsaXN0LgAsRXZlbnRUb3BpY3MBAQQCQMkJBAAoJQEgTWFwcGluZyBiZXR3ZWVuIGEgdG9waWMgKHJlcHJlc2VudGVkIGJ5IFQ6Okhhc2gpIGFuZCBhIHZlY3RvciBvZiBpbmRleGVzlCBvZiBldmVudHMgaW4gdGhlIGA8RXZlbnRzPFQ+PmAgbGlzdC4AUQEgQWxsIHRvcGljIHZlY3RvcnMgaGF2ZSBkZXRlcm1pbmlzdGljIHN0b3JhZ2UgbG9jYXRpb25zIGRlcGVuZGluZyBvbiB0aGUgdG9waWMuIFRoaXNFASBhbGxvd3MgbGlnaHQtY2xpZW50cyB0byBsZXZlcmFnZSB0aGUgY2hhbmdlcyB0cmllIHN0b3JhZ2UgdHJhY2tpbmcgbWVjaGFuaXNtIGFuZOQgaW4gY2FzZSBvZiBjaGFuZ2VzIGZldGNoIHRoZSBsaXN0IG9mIGV2ZW50cyBvZiBpbnRlcmVzdC4AWQEgVGhlIHZhbHVlIGhhcyB0aGUgdHlwZSBgKEJsb2NrTnVtYmVyRm9yPFQ+LCBFdmVudEluZGV4KWAgYmVjYXVzZSBpZiB3ZSB1c2VkIG9ubHkganVzdE0BIHRoZSBgRXZlbnRJbmRleGAgdGhlbiBpbiBjYXNlIGlmIHRoZSB0b3BpYyBoYXMgdGhlIHNhbWUgY29udGVudHMgb24gdGhlIG5leHQgYmxvY2sBASBubyBub3RpZmljYXRpb24gd2lsbCBiZSB0cmlnZ2VyZWQgdGh1cyB0aGUgZXZlbnQgbWlnaHQgYmUgbG9zdC4ASExhc3RSdW50aW1lVXBncmFkZQAAzQkEAARVASBTdG9yZXMgdGhlIGBzcGVjX3ZlcnNpb25gIGFuZCBgc3BlY19uYW1lYCBvZiB3aGVuIHRoZSBsYXN0IHJ1bnRpbWUgdXBncmFkZSBoYXBwZW5lZC4AREJsb2Nrc1RpbGxVcGdyYWRlAAAMBAAE7CBOdW1iZXIgb2YgYmxvY2tzIHRpbGwgdGhlIHBlbmRpbmcgY29kZSB1cGdyYWRlIGlzIGFwcGxpZWQuAFRVcGdyYWRlZFRvVTMyUmVmQ291bnQBAF0BBAAETQEgVHJ1ZSBpZiB3ZSBoYXZlIHVwZ3JhZGVkIHNvIHRoYXQgYHR5cGUgUmVmQ291bnRgIGlzIGB1MzJgLiBGYWxzZSAoZGVmYXVsdCkgaWYgbm90LgBgVXBncmFkZWRUb1RyaXBsZVJlZkNvdW50AQBdAQQACF0BIFRydWUgaWYgd2UgaGF2ZSB1cGdyYWRlZCBzbyB0aGF0IEFjY291bnRJbmZvIGNvbnRhaW5zIHRocmVlIHR5cGVzIG9mIGBSZWZDb3VudGAuIEZhbHNlSCAoZGVmYXVsdCkgaWYgbm90LgA4RXhlY3V0aW9uUGhhc2UAAMUJBAAEiCBUaGUgZXhlY3V0aW9uIHBoYXNlIG9mIHRoZSBibG9jay4AREF1dGhvcml6ZWRVcGdyYWRlAADZCQQABLggYFNvbWVgIGlmIGEgY29kZSB1cGdyYWRlIGhhcyBiZWVuIGF1dGhvcml6ZWQuAGBFeHRyaW5zaWNXZWlnaHRSZWNsYWltZWQBABUBCAAAHKAgVGhlIHdlaWdodCByZWNsYWltZWQgZm9yIHRoZSBleHRyaW5zaWMuACEBIFRoaXMgaW5mb3JtYXRpb24gaXMgYXZhaWxhYmxlIHVudGlsIHRoZSBlbmQgb2YgdGhlIGV4dHJpbnNpYyBleGVjdXRpb24uIQEgTW9yZSBwcmVjaXNlbHkgdGhpcyBpbmZvcm1hdGlvbiBpcyByZW1vdmVkIGluIGBub3RlX2FwcGxpZWRfZXh0cmluc2ljYC4AcQEgTG9naWMgZG9pbmcgc29tZSBwb3N0IGRpc3BhdGNoIHdlaWdodCByZWR1Y3Rpb24gbXVzdCB1cGRhdGUgdGhpcyBzdG9yYWdlIHRvIGF2b2lkIGR1cGxpY2F0ZSwgcmVkdWN0aW9uLgABJAAB+QcAGDBCbG9ja1dlaWdodHPdCYkBBwDyBSoBAAsAIEqp0QECAIACAmXNHQABC8Am+390AQIAAAIBCwBo5c+LAQIAIAIBAAACZc0dAAELwN5fWboBAgBgAgELACBKqdEBAgCAAgEHALhk2UUCAGAAAmXNHQAAAAAE0CBCbG9jayAmIGV4dHJpbnNpY3Mgd2VpZ2h0czogYmFzZSB2YWx1ZXMgYW5kIGxpbWl0cy4ALEJsb2NrTGVuZ3Ro6Qk0AABEAAAAUAAAAFAAAASoIFRoZSBtYXhpbXVtIGxlbmd0aCBvZiBhIGJsb2NrIChpbiBieXRlcykuADhCbG9ja0hhc2hDb3VudDgQABAAAARVASBNYXhpbXVtIG51bWJlciBvZiBibG9jayBudW1iZXIgdG8gYmxvY2sgaGFzaCBtYXBwaW5ncyB0byBrZWVwIChvbGRlc3QgcHJ1bmVkIGZpcnN0KS4AIERiV2VpZ2h08QlAQHh9AQAAAAAA4fUFAAAAAAQJASBUaGUgd2VpZ2h0IG9mIHJ1bnRpbWUgZGF0YWJhc2Ugb3BlcmF0aW9ucyB0aGUgcnVudGltZSBjYW4gaW52b2tlLgAcVmVyc2lvbvUJ2QU8YXNzZXQtaHViLXBhc2VvPGFzc2V0LWh1Yi1wYXNlbwEAAAAglB4AAAAAAGzdcY1cxTJi1AEAAAAE5wUhoNPS+AEAAADXvdiicsoNZQIAAADfastomQdgmwUAAAA345f8fJH15AIAAABA/jrUAfiVmgYAAADSvJiX7tCPFQMAAAD3iyeL5T9FTAIAAACrPAVyKR/riwIAAADM2d5jlsiZygEAAAC8nYmQT1uSPwEAAAA3yLsTUKmiqAQAAADz/xTVq1JwWQMAAABv9S7oWObFvQIAAACRscixYyjrkgIAAACf+1BapzjWnAEAAAAmCb6DrERo3AEAAAASyOPU1+Bt4AEAAADekrigQmub9gIAAADqk+Pxbz1pYgMAAAD7xXe510fv1gEAAACKgEelOoJ37AEAAACi3balhHe/YwEAAAAXprwNAGKuswEAAAAY71ijtnuncAEAAADFH/H6P10MygEAAACMQD5cSp/UQgEAAAAQAAAAAQSEIEdldCB0aGUgY2hhaW4ncyBpbi1jb2RlIHZlcnNpb24uAChTUzU4UHJlZml47QMIAAAUqCBUaGUgZGVzaWduYXRlZCBTUzU4IHByZWZpeCBvZiB0aGlzIGNoYWluLgA5ASBUaGlzIHJlcGxhY2VzIHRoZSAic3M1OEZvcm1hdCIgcHJvcGVydHkgZGVjbGFyZWQgaW4gdGhlIGNoYWluIHNwZWMuIFJlYXNvbiBpczEBIHRoYXQgdGhlIHJ1bnRpbWUgc2hvdWxkIGtub3cgYWJvdXQgdGhlIHByZWZpeCBpbiBvcmRlciB0byBtYWtlIHVzZSBvZiBpdCBhc3AgYW4gaWRlbnRpZmllciBvZiB0aGUgY2hhaW4uAAEFCgAcLFJ1bnRpbWVDYWxsIASMIFRoZSBhZ2dyZWdhdGVkIGBSdW50aW1lQ2FsbGAgdHlwZS4UTm9uY2U4BEkBIFRoaXMgc3RvcmVzIHRoZSBudW1iZXIgb2YgcHJldmlvdXMgdHJhbnNhY3Rpb25zIGFzc29jaWF0ZWQgd2l0aCBhIHNlbmRlciBhY2NvdW50LhBIYXNoQASYIFRoZSBvdXRwdXQgb2YgdGhlIGBIYXNoaW5nYCBmdW5jdGlvbi4cSGFzaGluZw0FBCEBIFRoZSBoYXNoaW5nIHN5c3RlbSAoYWxnb3JpdGhtKSBiZWluZyB1c2VkIGluIHRoZSBydW50aW1lIChlLmcuIEJsYWtlMikuJEFjY291bnRJZAQEyCBUaGUgdXNlciBhY2NvdW50IGlkZW50aWZpZXIgdHlwZSBmb3IgdGhlIHJ1bnRpbWUuFEJsb2NrCQoIYQEgVGhlIEJsb2NrIHR5cGUgdXNlZCBieSB0aGUgcnVudGltZS4gVGhpcyBpcyB1c2VkIGJ5IGBjb25zdHJ1Y3RfcnVudGltZWAgdG8gcmV0cmlldmUgdGhlzCBleHRyaW5zaWNzIG9yIG90aGVyIGJsb2NrIHNwZWNpZmljIGRhdGEgYXMgbmVlZGVkLixBY2NvdW50RGF0YeEHCGEBIERhdGEgdG8gYmUgYXNzb2NpYXRlZCB3aXRoIGFuIGFjY291bnQgKG90aGVyIHRoYW4gbm9uY2UvdHJhbnNhY3Rpb24gY291bnRlciwgd2hpY2ggdGhpc2QgcGFsbGV0IGRvZXMgcmVnYXJkbGVzcykuAAAAADxQYXJhY2hhaW5TeXN0ZW0BPFBhcmFjaGFpblN5c3RlbXw8QmxvY2tXZWlnaHRNb2RlAAAlCgQAGHwgVGhlIGN1cnJlbnQgYmxvY2sgd2VpZ2h0IG1vZGUuAHUBIFRoaXMgaXMgdXNlZCB0byBkZXRlcm1pbmUgd2hhdCBpcyB0aGUgbWF4aW11bSBhbGxvd2VkIGJsb2NrIHdlaWdodCwgZm9yIG1vcmUgaW5mb3JtYXRpb24gc2VlSCBbYGJsb2NrX3dlaWdodGBdLgAlASBLaWxsZWQgaW4gW2BTZWxmOjpvbl9pbml0aWFsaXplYF0gYW5kIHNldCBieSB0aGUgW2BibG9ja193ZWlnaHRgXSBsb2dpYy4ARFByZXZpb3VzQ29yZUNvdW50AAD1BQQADAUBIFRoZSBjb3JlIGNvdW50IGF2YWlsYWJsZSB0byB0aGUgcGFyYWNoYWluIGluIHRoZSBwcmV2aW91cyBibG9jay4AdQEgVGhpcyBpcyBtYWlubHkgdXNlZCBmb3Igb2ZmY2hhaW4gZnVuY3Rpb25hbGl0eSB0byBjYWxjdWxhdGUgdGhlIGNvcnJlY3QgdGFyZ2V0IGJsb2NrIHdlaWdodC4ARFVuaW5jbHVkZWRTZWdtZW50AQApCgQAGEkBIExhdGVzdCBpbmNsdWRlZCBibG9jayBkZXNjZW5kYW50cyB0aGUgcnVudGltZSBhY2NlcHRlZC4gSW4gb3RoZXIgd29yZHMsIHRoZXNlIGFyZWEBIGFuY2VzdG9ycyBvZiB0aGUgY3VycmVudGx5IGV4ZWN1dGluZyBibG9jayB3aGljaCBoYXZlIG5vdCBiZWVuIGluY2x1ZGVkIGluIHRoZSBvYnNlcnZlZEwgcmVsYXktY2hhaW4gc3RhdGUuAHUBIFRoZSBzZWdtZW50IGxlbmd0aCBpcyBsaW1pdGVkIGJ5IHRoZSBjYXBhY2l0eSByZXR1cm5lZCBmcm9tIHRoZSBbYENvbnNlbnN1c0hvb2tgXSBjb25maWd1cmVkPCBpbiB0aGUgcGFsbGV0LgBsQWdncmVnYXRlZFVuaW5jbHVkZWRTZWdtZW50AABNCgQADGkBIFN0b3JhZ2UgZmllbGQgdGhhdCBrZWVwcyB0cmFjayBvZiBiYW5kd2lkdGggdXNlZCBieSB0aGUgdW5pbmNsdWRlZCBzZWdtZW50IGFsb25nIHdpdGggdGhlLQEgbGF0ZXN0IEhSTVAgd2F0ZXJtYXJrLiBVc2VkIGZvciBsaW1pdGluZyB0aGUgYWNjZXB0YW5jZSBvZiBuZXcgYmxvY2tzIHdpdGiQIHJlc3BlY3QgdG8gcmVsYXkgY2hhaW4gY29uc3RyYWludHMuAFRQZW5kaW5nVmFsaWRhdGlvbkNvZGUBABgEABhZASBJbiBjYXNlIG9mIGEgc2NoZWR1bGVkIHVwZ3JhZGUsIHRoaXMgc3RvcmFnZSBmaWVsZCBjb250YWlucyB0aGUgdmFsaWRhdGlvbiBjb2RlIHRvIGJlJCBhcHBsaWVkLgA9ASBBcyBzb29uIGFzIHRoZSByZWxheSBjaGFpbiBnaXZlcyB1cyB0aGUgZ28tYWhlYWQgc2lnbmFsLCB3ZSB3aWxsIG92ZXJ3cml0ZSB0aGVlASBbYDpwZW5kaW5nX2NvZGVgXVtzcF9jb3JlOjpzdG9yYWdlOjp3ZWxsX2tub3duX2tleXM6OlBFTkRJTkdfQ09ERV0gd2hpY2ggd2lsbCByZXN1bHQgdGhldQEgbmV4dCBibG9jayB0byBiZSBwcm9jZXNzZWQgd2l0aCB0aGUgbmV3IHZhbGlkYXRpb24gY29kZS4gVGhpcyBjb25jbHVkZXMgdGhlIHVwZ3JhZGUgcHJvY2Vzcy4ARE5ld1ZhbGlkYXRpb25Db2RlAAAYBAAUXQEgVmFsaWRhdGlvbiBjb2RlIHRoYXQgaXMgc2V0IGJ5IHRoZSBwYXJhY2hhaW4gYW5kIGlzIHRvIGJlIGNvbW11bmljYXRlZCB0byBjb2xsYXRvciBhbmR4IGNvbnNlcXVlbnRseSB0aGUgcmVsYXktY2hhaW4uAGUBIFRoaXMgd2lsbCBiZSBjbGVhcmVkIGluIGBvbl9pbml0aWFsaXplYCBvZiBlYWNoIG5ldyBibG9jayBpZiBubyBvdGhlciBwYWxsZXQgYWxyZWFkeSBzZXQsIHRoZSB2YWx1ZS4AOFZhbGlkYXRpb25EYXRhAABMBAAM0CBUaGUgW2BQZXJzaXN0ZWRWYWxpZGF0aW9uRGF0YWBdIHNldCBmb3IgdGhpcyBibG9jay4AcQEgVGhpcyB2YWx1ZSBpcyBleHBlY3RlZCB0byBiZSBzZXQgb25seSBvbmNlIGJ5IHRoZSBbYFBhbGxldDo6c2V0X3ZhbGlkYXRpb25fZGF0YWBdIGluaGVyZW50LgBQRGlkU2V0VmFsaWRhdGlvbkNvZGUBAF0BBAAE4CBXZXJlIHRoZSB2YWxpZGF0aW9uIGRhdGEgc2V0IHRvIG5vdGlmeSB0aGUgcmVsYXkgY2hhaW4/AGRMYXN0UmVsYXlDaGFpbkJsb2NrTnVtYmVyAQA4EAAAAAAMHQEgVGhlIHJlbGF5IGNoYWluIGJsb2NrIG51bWJlciBhc3NvY2lhdGVkIHdpdGggdGhlIGxhc3QgcGFyYWNoYWluIGJsb2NrLgCIIFRoaXMgaXMgdXBkYXRlZCBpbiBgb25fZmluYWxpemVgLgBgVXBncmFkZVJlc3RyaWN0aW9uU2lnbmFsAQBRCgQAHHUBIEFuIG9wdGlvbiB3aGljaCBpbmRpY2F0ZXMgaWYgdGhlIHJlbGF5LWNoYWluIHJlc3RyaWN0cyBzaWduYWxsaW5nIGEgdmFsaWRhdGlvbiBjb2RlIHVwZ3JhZGUuYQEgSW4gb3RoZXIgd29yZHMsIGlmIHRoaXMgaXMgYFNvbWVgIGFuZCBbYE5ld1ZhbGlkYXRpb25Db2RlYF0gaXMgYFNvbWVgIHRoZW4gdGhlIHByb2R1Y2VkbCBjYW5kaWRhdGUgd2lsbCBiZSBpbnZhbGlkLgBxASBUaGlzIHN0b3JhZ2UgaXRlbSBpcyBhIG1pcnJvciBvZiB0aGUgY29ycmVzcG9uZGluZyB2YWx1ZSBmb3IgdGhlIGN1cnJlbnQgcGFyYWNoYWluIGZyb20gdGhlbQEgcmVsYXktY2hhaW4uIFRoaXMgdmFsdWUgaXMgZXBoZW1lcmFsIHdoaWNoIG1lYW5zIGl0IGRvZXNuJ3QgaGl0IHRoZSBzdG9yYWdlLiBUaGlzIHZhbHVlIGlzYCBzZXQgYWZ0ZXIgdGhlIGluaGVyZW50LgA4VXBncmFkZUdvQWhlYWQBAEUKBAAU3CBPcHRpb25hbCB1cGdyYWRlIGdvLWFoZWFkIHNpZ25hbCBmcm9tIHRoZSByZWxheS1jaGFpbi4AcQEgVGhpcyBzdG9yYWdlIGl0ZW0gaXMgYSBtaXJyb3Igb2YgdGhlIGNvcnJlc3BvbmRpbmcgdmFsdWUgZm9yIHRoZSBjdXJyZW50IHBhcmFjaGFpbiBmcm9tIHRoZW0BIHJlbGF5LWNoYWluLiBUaGlzIHZhbHVlIGlzIGVwaGVtZXJhbCB3aGljaCBtZWFucyBpdCBkb2Vzbid0IGhpdCB0aGUgc3RvcmFnZS4gVGhpcyB2YWx1ZSBpc2Agc2V0IGFmdGVyIHRoZSBpbmhlcmVudC4APFJlbGF5U3RhdGVQcm9vZgAAVAQAGMQgVGhlIHN0YXRlIHByb29mIGZvciB0aGUgbGFzdCByZWxheSBwYXJlbnQgYmxvY2suAG0BIFRoaXMgZmllbGQgaXMgbWVhbnQgdG8gYmUgdXBkYXRlZCBlYWNoIGJsb2NrIHdpdGggdGhlIHZhbGlkYXRpb24gZGF0YSBpbmhlcmVudC4gVGhlcmVmb3JlLE0BIGJlZm9yZSBwcm9jZXNzaW5nIG9mIHRoZSBpbmhlcmVudCwgZS5nLiBpbiBgb25faW5pdGlhbGl6ZWAgdGhpcyBkYXRhIG1heSBiZSBzdGFsZS4ArCBUaGlzIGRhdGEgaXMgYWxzbyBhYnNlbnQgZnJvbSB0aGUgZ2VuZXNpcy4AWFJlbGV2YW50TWVzc2FnaW5nU3RhdGUAAFkKBAAcZQEgVGhlIHNuYXBzaG90IG9mIHNvbWUgc3RhdGUgcmVsYXRlZCB0byBtZXNzYWdpbmcgcmVsZXZhbnQgdG8gdGhlIGN1cnJlbnQgcGFyYWNoYWluIGFzIHBlckggdGhlIHJlbGF5IHBhcmVudC4AbQEgVGhpcyBmaWVsZCBpcyBtZWFudCB0byBiZSB1cGRhdGVkIGVhY2ggYmxvY2sgd2l0aCB0aGUgdmFsaWRhdGlvbiBkYXRhIGluaGVyZW50LiBUaGVyZWZvcmUsTQEgYmVmb3JlIHByb2Nlc3Npbmcgb2YgdGhlIGluaGVyZW50LCBlLmcuIGluIGBvbl9pbml0aWFsaXplYCB0aGlzIGRhdGEgbWF5IGJlIHN0YWxlLgCsIFRoaXMgZGF0YSBpcyBhbHNvIGFic2VudCBmcm9tIHRoZSBnZW5lc2lzLgBESG9zdENvbmZpZ3VyYXRpb24AAG0KBAAYKQEgVGhlIHBhcmFjaGFpbiBob3N0IGNvbmZpZ3VyYXRpb24gdGhhdCB3YXMgb2J0YWluZWQgZnJvbSB0aGUgcmVsYXkgcGFyZW50LgBtASBUaGlzIGZpZWxkIGlzIG1lYW50IHRvIGJlIHVwZGF0ZWQgZWFjaCBibG9jayB3aXRoIHRoZSB2YWxpZGF0aW9uIGRhdGEgaW5oZXJlbnQuIFRoZXJlZm9yZSxNASBiZWZvcmUgcHJvY2Vzc2luZyBvZiB0aGUgaW5oZXJlbnQsIGUuZy4gaW4gYG9uX2luaXRpYWxpemVgIHRoaXMgZGF0YSBtYXkgYmUgc3RhbGUuAKwgVGhpcyBkYXRhIGlzIGFsc28gYWJzZW50IGZyb20gdGhlIGdlbmVzaXMuADhMYXN0RG1xTXFjSGVhZAEAdQqAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQ9CBUaGUgbGFzdCBkb3dud2FyZCBtZXNzYWdlIHF1ZXVlIGNoYWluIGhlYWQgd2UgaGF2ZSBvYnNlcnZlZC4AZQEgVGhpcyB2YWx1ZSBpcyBsb2FkZWQgYmVmb3JlIGFuZCBzYXZlZCBhZnRlciBwcm9jZXNzaW5nIGluYm91bmQgZG93bndhcmQgbWVzc2FnZXMgY2FycmllZGAgYnkgdGhlIHN5c3RlbSBpbmhlcmVudC4AQExhc3RIcm1wTXFjSGVhZHMBAHkKBAAQSQEgVGhlIG1lc3NhZ2UgcXVldWUgY2hhaW4gaGVhZHMgd2UgaGF2ZSBvYnNlcnZlZCBwZXIgZWFjaCBjaGFubmVsIGluY29taW5nIGNoYW5uZWwuAGUBIFRoaXMgdmFsdWUgaXMgbG9hZGVkIGJlZm9yZSBhbmQgc2F2ZWQgYWZ0ZXIgcHJvY2Vzc2luZyBpbmJvdW5kIGRvd253YXJkIG1lc3NhZ2VzIGNhcnJpZWRgIGJ5IHRoZSBzeXN0ZW0gaW5oZXJlbnQuAGRQcm9jZXNzZWREb3dud2FyZE1lc3NhZ2VzAQA4EAAAAAAMyCBOdW1iZXIgb2YgZG93bndhcmQgbWVzc2FnZXMgcHJvY2Vzc2VkIGluIGEgYmxvY2suAOwgVGhpcyB3aWxsIGJlIGNsZWFyZWQgaW4gYG9uX2luaXRpYWxpemVgIG9mIGVhY2ggbmV3IGJsb2NrLgBwTGFzdFByb2Nlc3NlZERvd253YXJkTWVzc2FnZQAAhQoEAAyUIFRoZSBsYXN0IHByb2Nlc3NlZCBkb3dud2FyZCBtZXNzYWdlLgBdASBXZSBuZWVkIHRvIGtlZXAgdHJhY2sgb2YgdGhpcyB0byBmaWx0ZXIgdGhlIG1lc3NhZ2VzIHRoYXQgaGF2ZSBiZWVuIGFscmVhZHkgcHJvY2Vzc2VkLgA0SHJtcFdhdGVybWFyawEAOBAAAAAABKAgSFJNUCB3YXRlcm1hcmsgdGhhdCB3YXMgc2V0IGluIGEgYmxvY2suAGBMYXN0UHJvY2Vzc2VkSHJtcE1lc3NhZ2UAAIUKBAAMhCBUaGUgbGFzdCBwcm9jZXNzZWQgSFJNUCBtZXNzYWdlLgBdASBXZSBuZWVkIHRvIGtlZXAgdHJhY2sgb2YgdGhpcyB0byBmaWx0ZXIgdGhlIG1lc3NhZ2VzIHRoYXQgaGF2ZSBiZWVuIGFscmVhZHkgcHJvY2Vzc2VkLgBQSHJtcE91dGJvdW5kTWVzc2FnZXMBAIkKBAAMpCBIUk1QIG1lc3NhZ2VzIHRoYXQgd2VyZSBzZW50IGluIGEgYmxvY2suAOwgVGhpcyB3aWxsIGJlIGNsZWFyZWQgaW4gYG9uX2luaXRpYWxpemVgIG9mIGVhY2ggbmV3IGJsb2NrLgA4VXB3YXJkTWVzc2FnZXMBADQEAAysIFVwd2FyZCBtZXNzYWdlcyB0aGF0IHdlcmUgc2VudCBpbiBhIGJsb2NrLgDwIFRoaXMgd2lsbCBiZSBjbGVhcmVkIGluIGBvbl9pbml0aWFsaXplYCBmb3IgZWFjaCBuZXcgYmxvY2suAFRQZW5kaW5nVXB3YXJkTWVzc2FnZXMBADQEAAQxASBVcHdhcmQgbWVzc2FnZXMgdGhhdCBhcmUgc3RpbGwgcGVuZGluZyBhbmQgbm90IHlldCBzZW50IHRvIHRoZSByZWxheSBjaGFpbi4AUFBlbmRpbmdVcHdhcmRTaWduYWxzAQA0BAAMLQEgVXB3YXJkIHNpZ25hbHMgdGhhdCBhcmUgc3RpbGwgcGVuZGluZyBhbmQgbm90IHlldCBzZW50IHRvIHRoZSByZWxheSBjaGFpbi4A2CBUaGlzIHdpbGwgYmUgY2xlYXJlZCBpbiBgb25fZmluYWxpemVgIGZvciBlYWNoIGJsb2NrLgBMUGVuZGluZ0FwcHJvdmVkUGVlcgAAfAQABDkBIFRoZSBhcHByb3ZlZCBwZWVyIGlkIHRvIGJlIHNlbnQgYXMgYSBVTVAgc2lnbmFsIG9uIHRoZSBsYXN0IGJsb2NrIG9mIHRoZSBQb1YuAFxVcHdhcmREZWxpdmVyeUZlZUZhY3RvcgEAKQVAAABkp7O24A0AAAAAAAAAAATkIFRoZSBmYWN0b3IgdG8gbXVsdGlwbHkgdGhlIGJhc2UgZGVsaXZlcnkgZmVlIGJ5IGZvciBVTVAuAIRBbm5vdW5jZWRIcm1wTWVzc2FnZXNQZXJDYW5kaWRhdGUBADgQAAAAAAhlASBUaGUgbnVtYmVyIG9mIEhSTVAgbWVzc2FnZXMgd2Ugb2JzZXJ2ZWQgaW4gYG9uX2luaXRpYWxpemVgIGFuZCB0aHVzIHVzZWQgdGhhdCBudW1iZXIgZm9y8CBhbm5vdW5jaW5nIHRoZSB3ZWlnaHQgb2YgYG9uX2luaXRpYWxpemVgIGFuZCBgb25fZmluYWxpemVgLgBoUmVzZXJ2ZWRYY21wV2VpZ2h0T3ZlcnJpZGUAABUBBAAIXQEgVGhlIHdlaWdodCB3ZSByZXNlcnZlIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIGJsb2NrIGZvciBwcm9jZXNzaW5nIFhDTVAgbWVzc2FnZXMuIFRoaXO4IG92ZXJyaWRlcyB0aGUgYW1vdW50IHNldCBpbiB0aGUgQ29uZmlnIHRyYWl0LgBkUmVzZXJ2ZWREbXBXZWlnaHRPdmVycmlkZQAAFQEEAAhZASBUaGUgd2VpZ2h0IHdlIHJlc2VydmUgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgYmxvY2sgZm9yIHByb2Nlc3NpbmcgRE1QIG1lc3NhZ2VzLiBUaGlzuCBvdmVycmlkZXMgdGhlIGFtb3VudCBzZXQgaW4gdGhlIENvbmZpZyB0cmFpdC4AYEN1c3RvbVZhbGlkYXRpb25IZWFkRGF0YQAAGAQADCkBIEEgY3VzdG9tIGhlYWQgZGF0YSB0aGF0IHNob3VsZCBiZSByZXR1cm5lZCBhcyByZXN1bHQgb2YgYHZhbGlkYXRlX2Jsb2NrYC4AEQEgU2VlIGBQYWxsZXQ6OnNldF9jdXN0b21fdmFsaWRhdGlvbl9oZWFkX2RhdGFgIGZvciBtb3JlIGluZm9ybWF0aW9uLgBIUG9WTWVzc2FnZXNUcmFja2VyAACRCgQADFUBIFRyYWNrcyBjdW11bGF0aXZlIGBVTVBgIGFuZCBgSFJNUGAgbWVzc2FnZXMgc2VudCBhY3Jvc3MgYmxvY2tzIGluIHRoZSBjdXJyZW50IGBQb1ZgLgB1ASBBY3Jvc3MgZGlmZmVyZW50IGNhbmRpZGF0ZXMvUG9WcyB0aGUgYnVkZ2V0cyBhcmUgdHJhY2tlZCBieSBbYEFnZ3JlZ2F0ZWRVbmluY2x1ZGVkU2VnbWVudGBdLgABRAABIQgABChTZWxmUGFyYUlkoBDoAwAABLggUmV0dXJucyB0aGUgcGFyYWNoYWluIElEIHdlIGFyZSBydW5uaW5nIHdpdGguAAGZCgAAAAEAACRUaW1lc3RhbXABJFRpbWVzdGFtcAgMTm93AQAoIAAAAAAAAAAABKAgVGhlIGN1cnJlbnQgdGltZSBmb3IgdGhlIGN1cnJlbnQgYmxvY2suACREaWRVcGRhdGUBAF0BBAAQ2CBXaGV0aGVyIHRoZSB0aW1lc3RhbXAgaGFzIGJlZW4gdXBkYXRlZCBpbiB0aGlzIGJsb2NrLgBVASBUaGlzIHZhbHVlIGlzIHVwZGF0ZWQgdG8gYHRydWVgIHVwb24gc3VjY2Vzc2Z1bCBzdWJtaXNzaW9uIG9mIGEgdGltZXN0YW1wIGJ5IGEgbm9kZS5FASBJdCBpcyB0aGVuIGNoZWNrZWQgYXQgdGhlIGVuZCBvZiBlYWNoIGJsb2NrIGV4ZWN1dGlvbiBpbiB0aGUgYG9uX2ZpbmFsaXplYCBob29rLgABtAAABDRNaW5pbXVtUGVyaW9kKCAAAAAAAAAAABiMIFRoZSBtaW5pbXVtIHBlcmlvZCBiZXR3ZWVuIGJsb2Nrcy4ATQEgQmUgYXdhcmUgdGhhdCB0aGlzIGlzIGRpZmZlcmVudCB0byB0aGUgKmV4cGVjdGVkKiBwZXJpb2QgdGhhdCB0aGUgYmxvY2sgcHJvZHVjdGlvbkkBIGFwcGFyYXR1cyBwcm92aWRlcy4gWW91ciBjaG9zZW4gY29uc2Vuc3VzIHN5c3RlbSB3aWxsIGdlbmVyYWxseSB3b3JrIHdpdGggdGhpcyB0b2EBIGRldGVybWluZSBhIHNlbnNpYmxlIGJsb2NrIHRpbWUuIEZvciBleGFtcGxlLCBpbiB0aGUgQXVyYSBwYWxsZXQgaXQgd2lsbCBiZSBkb3VibGUgdGhpc3AgcGVyaW9kIG9uIGRlZmF1bHQgc2V0dGluZ3MuAAAEGE1vbWVudCgEmCBUeXBlIHVzZWQgZm9yIGV4cHJlc3NpbmcgYSB0aW1lc3RhbXAuAAMAADRQYXJhY2hhaW5JbmZvATRQYXJhY2hhaW5JbmZvBCxQYXJhY2hhaW5JZAEAoBBkAAAAAAABvAAAAAAAAAQAACBQcmVpbWFnZQEgUHJlaW1hZ2UMJFN0YXR1c0ZvcgABBAZAnQoEAASQIFRoZSByZXF1ZXN0IHN0YXR1cyBvZiBhIGdpdmVuIGhhc2guAkBSZXF1ZXN0U3RhdHVzRm9yAEBSZXF1ZXN0U3RhdHVzRm9yAAEEBkClCgQABJAgVGhlIHJlcXVlc3Qgc3RhdHVzIG9mIGEgZ2l2ZW4gaGFzaC4ALFByZWltYWdlRm9yAAEEBrUKuQoEAAAAAcAAASUIAAABvQoAAAAFAAAkU2NoZWR1bGVyASRTY2hlZHVsZXIQPEluY29tcGxldGVTaW5jZQAAOAQABPQgQmxvY2sgbnVtYmVyIGF0IHdoaWNoIHRoZSBhZ2VuZGEgYmVnYW4gaW5jb21wbGV0ZSBleGVjdXRpb24uABhBZ2VuZGEBAQQFOMEKBAAETQEgSXRlbXMgdG8gYmUgZXhlY3V0ZWQsIGluZGV4ZWQgYnkgdGhlIGJsb2NrIG51bWJlciB0aGF0IHRoZXkgc2hvdWxkIGJlIGV4ZWN1dGVkIG9uLgAcUmV0cmllcwABBALQ0QoEAAQhASBSZXRyeSBjb25maWd1cmF0aW9ucyBmb3IgaXRlbXMgdG8gYmUgZXhlY3V0ZWQsIGluZGV4ZWQgYnkgdGFzayBhZGRyZXNzLgAYTG9va3VwAAEEBQjQBAAQ+CBMb29rdXAgZnJvbSBhIG5hbWUgdG8gdGhlIGJsb2NrIG51bWJlciBhbmQgaW5kZXggb2YgdGhlIHRhc2suAFkBIEZvciB2MyAtPiB2NCB0aGUgcHJldmlvdXNseSB1bmJvdW5kZWQgaWRlbnRpdGllcyBhcmUgQmxha2UyLTI1NiBoYXNoZWQgdG8gZm9ybSB0aGUgdjQwIGlkZW50aXRpZXMuAAHIAAEpCAAINE1heGltdW1XZWlnaHQVASwLAIBuh3QBAgAAAgQpASBUaGUgbWF4aW11bSB3ZWlnaHQgdGhhdCBtYXkgYmUgc2NoZWR1bGVkIHBlciBibG9jayBmb3IgYW55IGRpc3BhdGNoYWJsZXMuAFBNYXhTY2hlZHVsZWRQZXJCbG9jazgQMgAAABQdASBUaGUgbWF4aW11bSBudW1iZXIgb2Ygc2NoZWR1bGVkIGNhbGxzIGluIHRoZSBxdWV1ZSBmb3IgYSBzaW5nbGUgYmxvY2suABggTk9URTpRASArIERlcGVuZGVudCBwYWxsZXRzJyBiZW5jaG1hcmtzIG1pZ2h0IHJlcXVpcmUgYSBoaWdoZXIgbGltaXQgZm9yIHRoZSBzZXR0aW5nLiBTZXQgYcQgaGlnaGVyIGxpbWl0IHVuZGVyIGBydW50aW1lLWJlbmNobWFya3NgIGZlYXR1cmUuAAHVCgAELFJ1bnRpbWVDYWxsIARoIFRoZSBhZ2dyZWdhdGVkIGNhbGwgdHlwZS4ABgAAKFBhcmFtZXRlcnMBKFBhcmFtZXRlcnMEKFBhcmFtZXRlcnMAAQQCNQhJCAQABEwgU3RvcmVkIHBhcmFtZXRlcnMuAAHUAAExCAAAAAAABwAAUE11bHRpQmxvY2tNaWdyYXRpb25zAVBNdWx0aUJsb2NrTWlncmF0aW9ucwgYQ3Vyc29yAAAxAQQADNggVGhlIGN1cnJlbnRseSBhY3RpdmUgbWlncmF0aW9uIHRvIHJ1biBhbmQgaXRzIGN1cnNvci4AvCBgTm9uZWAgaW5kaWNhdGVzIHRoYXQgbm8gbWlncmF0aW9uIGlzIHJ1bm5pbmcuACBIaXN0b3JpYwABBAVFARAEABC0IFNldCBvZiBhbGwgc3VjY2Vzc2Z1bGx5IGV4ZWN1dGVkIG1pZ3JhdGlvbnMuAHEBIFRoaXMgaXMgdXNlZCBhcyBibGFja2xpc3QsIHRvIG5vdCByZS1leGVjdXRlIG1pZ3JhdGlvbnMgdGhhdCBoYXZlIG5vdCBiZWVuIHJlbW92ZWQgZnJvbSB0aGUxASBjb2RlYmFzZSB5ZXQuIEdvdmVybmFuY2UgY2FuIHJlZ3VsYXJseSBjbGVhciB0aGlzIG91dCB2aWEgYGNsZWFyX2hpc3RvcmljYC4AASkBAAFZCAAIMEN1cnNvck1heExlbjgQAAABABCkIFRoZSBtYXhpbWFsIGxlbmd0aCBvZiBhbiBlbmNvZGVkIGN1cnNvci4AZQEgQSBnb29kIGRlZmF1bHQgbmVlZHMgdG8gc2VsZWN0ZWQgc3VjaCB0aGF0IG5vIG1pZ3JhdGlvbiB3aWxsIGV2ZXIgaGF2ZSBhIGN1cnNvciB3aXRoIE1FTAkBIGFib3ZlIHRoaXMgbGltaXQuIFRoaXMgaXMgc3RhdGljYWxseSBjaGVja2VkIGluIGBpbnRlZ3JpdHlfdGVzdGAuAEBJZGVudGlmaWVyTWF4TGVuOBAAAQAAELQgVGhlIG1heGltYWwgbGVuZ3RoIG9mIGFuIGVuY29kZWQgaWRlbnRpZmllci4AVQEgQSBnb29kIGRlZmF1bHQgbmVlZHMgdG8gc2VsZWN0ZWQgc3VjaCB0aGF0IG5vIG1pZ3JhdGlvbiB3aWxsIGV2ZXIgaGF2ZSBhbiBpZGVudGlmaWVyLQEgd2l0aCBNRUwgYWJvdmUgdGhpcyBsaW1pdC4gVGhpcyBpcyBzdGF0aWNhbGx5IGNoZWNrZWQgaW4gYGludGVncml0eV90ZXN0YC4AAdkKAAAQCyAZms41ZNCWTixNSpukaZRNvP9qbOGk0LJ8b8wC0kw4b25nb2luZ19zdGF0dXMA3QoEqCBSZXR1cm5zIHRoZSBvbmdvaW5nIHN0YXR1cyBvZiBtaWdyYXRpb25zLgALIBmazjVk0JZOLE1Km6RpXr13bLFdm5EuJ41NLWLFoSBwcm9ncmVzcwDhChAJASBSZXR1cm5zIHByb2dyZXNzIGluZm9ybWF0aW9uIGFib3V0IHRoZSBjdXJyZW50IG1pZ3JhdGlvbiwgaWYgYW55LgBRASBUaGlzIGZ1bmN0aW9uIHByb3ZpZGVzIGRldGFpbGVkIGluZm9ybWF0aW9uIGFib3V0IHRoZSBjdXJyZW50IG1pZ3JhdGlvbidzIHByb2dyZXNzLB0BIGluY2x1ZGluZyB0aGUgbnVtYmVyIG9mIHN0ZXBzIGNvbXBsZXRlZCBhbmQgdGhlIG1heGltdW0gYWxsb3dlZCBzdGVwcy4ACyAZms41ZNCWTixNSpukaUavS87G81p7u+6dn8EJW+FEYWZmZWN0ZWRfcHJlZml4ZXMANAwBASBSZXR1cm5zIHRoZSBzdG9yYWdlIHByZWZpeGVzIGFmZmVjdGVkIGJ5IHRoZSBjdXJyZW50IG1pZ3JhdGlvbi4AGQEgQ2FuIGJlIGVtcHR5IGlmIHRoZSBtaWdyYXRpb24gZG9lcyBub3Qga25vdyBvciB0aGVyZSBhcmUgbm8gcHJlZml4ZXMuAAsgGZrONWTQlk4sTUqbpGmqTCigbxmIRb0bsp7GIF3dGHN0YXR1cwDpCgTwIFJldHVybnMgdGhlIGNvbXByZWhlbnNpdmUgc3RhdHVzIG9mIG11bHRpLWJsb2NrIG1pZ3JhdGlvbnMuAAgAADRXZWlnaHRSZWNsYWltAAAAAAAAAAkIgQEgUGFsbGV0IHRvIHVzZSBhbG9uZ3NpZGUgdGhlIHRyYW5zYWN0aW9uIGV4dGVuc2lvbiBbYFN0b3JhZ2VXZWlnaHRSZWNsYWltYF0sIHRoZSBwYWxsZXQgcHJvdmlkZXOMIHdlaWdodCBpbmZvcm1hdGlvbiBhbmQgYmVuY2htYXJrcy4AIEJhbGFuY2VzASBCYWxhbmNlcxw0VG90YWxJc3N1YW5jZQEAWQFAAAAAAAAAAAAAAAAAAAAAAASYIFRoZSB0b3RhbCB1bml0cyBpc3N1ZWQgaW4gdGhlIHN5c3RlbS4AQEluYWN0aXZlSXNzdWFuY2UBAFkBQAAAAAAAAAAAAAAAAAAAAAAECQEgVGhlIHRvdGFsIHVuaXRzIG9mIG91dHN0YW5kaW5nIGRlYWN0aXZhdGVkIGJhbGFuY2UgaW4gdGhlIHN5c3RlbS4AHEFjY291bnQBAQQCBOEHAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAYAkBIFRoZSBCYWxhbmNlcyBwYWxsZXQgZXhhbXBsZSBvZiBzdG9yaW5nIHRoZSBiYWxhbmNlIG9mIGFuIGFjY291bnQuACggIyBFeGFtcGxlADQgYGBgbm9jb21waWxlsCAgaW1wbCBwYWxsZXRfYmFsYW5jZXM6OkNvbmZpZyBmb3IgUnVudGltZSB7GQIgICAgdHlwZSBBY2NvdW50U3RvcmUgPSBTdG9yYWdlTWFwU2hpbTxTZWxmOjpBY2NvdW50PFJ1bnRpbWU+LCBmcmFtZV9zeXN0ZW06OlByb3ZpZGVyPFJ1bnRpbWU+LCBBY2NvdW50SWQsIFNlbGY6OkFjY291bnREYXRhPEJhbGFuY2U+PgwgIH0QIGBgYAAVASBZb3UgY2FuIGFsc28gc3RvcmUgdGhlIGJhbGFuY2Ugb2YgYW4gYWNjb3VudCBpbiB0aGUgYFN5c3RlbWAgcGFsbGV0LgAoICMgRXhhbXBsZQA0IGBgYG5vY29tcGlsZbAgIGltcGwgcGFsbGV0X2JhbGFuY2VzOjpDb25maWcgZm9yIFJ1bnRpbWUge3QgICB0eXBlIEFjY291bnRTdG9yZSA9IFN5c3RlbQwgIH0QIGBgYABRASBCdXQgdGhpcyBjb21lcyB3aXRoIHRyYWRlb2Zmcywgc3RvcmluZyBhY2NvdW50IGJhbGFuY2VzIGluIHRoZSBzeXN0ZW0gcGFsbGV0IHN0b3Jlc20BIGBmcmFtZV9zeXN0ZW1gIGRhdGEgYWxvbmdzaWRlIHRoZSBhY2NvdW50IGRhdGEgY29udHJhcnkgdG8gc3RvcmluZyBhY2NvdW50IGJhbGFuY2VzIGluIHRoZSkBIGBCYWxhbmNlc2AgcGFsbGV0LCB3aGljaCB1c2VzIGEgYFN0b3JhZ2VNYXBgIHRvIHN0b3JlIGJhbGFuY2VzIGRhdGEgb25seS5BASBOT1RFOiBUaGlzIGlzIG9ubHkgdXNlZCBpbiB0aGUgY2FzZSB0aGF0IHRoaXMgcGFsbGV0IGlzIHVzZWQgdG8gc3RvcmUgYmFsYW5jZXMuABRMb2NrcwEBBAIE7QoEABC4IEFueSBsaXF1aWRpdHkgbG9ja3Mgb24gc29tZSBhY2NvdW50IGJhbGFuY2VzLiUBIE5PVEU6IFNob3VsZCBvbmx5IGJlIGFjY2Vzc2VkIHdoZW4gc2V0dGluZywgY2hhbmdpbmcgYW5kIGZyZWVpbmcgYSBsb2NrLgCtASBVc2Ugb2YgbG9ja3MgaXMgZGVwcmVjYXRlZCBpbiBmYXZvdXIgb2YgZnJlZXplcy4gU2VlIGBodHRwczovL2dpdGh1Yi5jb20vcGFyaXR5dGVjaC9zdWJzdHJhdGUvcHVsbC8xMjk1MS9gACBSZXNlcnZlcwEBBAIE/QoEAAykIE5hbWVkIHJlc2VydmVzIG9uIHNvbWUgYWNjb3VudCBiYWxhbmNlcy4AsQEgVXNlIG9mIHJlc2VydmVzIGlzIGRlcHJlY2F0ZWQgaW4gZmF2b3VyIG9mIGhvbGRzLiBTZWUgYGh0dHBzOi8vZ2l0aHViLmNvbS9wYXJpdHl0ZWNoL3N1YnN0cmF0ZS9wdWxsLzEyOTUxL2AAFEhvbGRzAQEEAgQJCwQABGwgSG9sZHMgb24gYWNjb3VudCBiYWxhbmNlcy4AHEZyZWV6ZXMBAQQCBBULBAAEiCBGcmVlemUgbG9ja3Mgb24gYWNjb3VudCBiYWxhbmNlcy4AAVEBAAFdCAAQSEV4aXN0ZW50aWFsRGVwb3NpdFkBQADh9QUAAAAAAAAAAAAAAAAgQQEgVGhlIG1pbmltdW0gYW1vdW50IHJlcXVpcmVkIHRvIGtlZXAgYW4gYWNjb3VudCBvcGVuLiBNVVNUIEJFIEdSRUFURVIgVEhBTiBaRVJPIQBZASBJZiB5b3UgKnJlYWxseSogbmVlZCBpdCB0byBiZSB6ZXJvLCB5b3UgY2FuIGVuYWJsZSB0aGUgZmVhdHVyZSBgaW5zZWN1cmVfemVyb19lZGAgZm9yYQEgdGhpcyBwYWxsZXQuIEhvd2V2ZXIsIHlvdSBkbyBzbyBhdCB5b3VyIG93biByaXNrOiB0aGlzIHdpbGwgb3BlbiB1cCBhIG1ham9yIERvUyB2ZWN0b3IuWQEgSW4gY2FzZSB5b3UgaGF2ZSBtdWx0aXBsZSBzb3VyY2VzIG9mIHByb3ZpZGVyIHJlZmVyZW5jZXMsIHlvdSBtYXkgYWxzbyBnZXQgdW5leHBlY3RlZIwgYmVoYXZpb3VyIGlmIHlvdSBzZXQgdGhpcyB0byB6ZXJvLgDwIEJvdHRvbSBsaW5lOiBEbyB5b3Vyc2VsZiBhIGZhdm91ciBhbmQgbWFrZSBpdCBhdCBsZWFzdCBvbmUhACBNYXhMb2NrczgQMgAAABD0IFRoZSBtYXhpbXVtIG51bWJlciBvZiBsb2NrcyB0aGF0IHNob3VsZCBleGlzdCBvbiBhbiBhY2NvdW50LtwgTm90IHN0cmljdGx5IGVuZm9yY2VkLCBidXQgdXNlZCBmb3Igd2VpZ2h0IGVzdGltYXRpb24uAK0BIFVzZSBvZiBsb2NrcyBpcyBkZXByZWNhdGVkIGluIGZhdm91ciBvZiBmcmVlemVzLiBTZWUgYGh0dHBzOi8vZ2l0aHViLmNvbS9wYXJpdHl0ZWNoL3N1YnN0cmF0ZS9wdWxsLzEyOTUxL2AALE1heFJlc2VydmVzOBAyAAAADA0BIFRoZSBtYXhpbXVtIG51bWJlciBvZiBuYW1lZCByZXNlcnZlcyB0aGF0IGNhbiBleGlzdCBvbiBhbiBhY2NvdW50LgCxASBVc2Ugb2YgcmVzZXJ2ZXMgaXMgZGVwcmVjYXRlZCBpbiBmYXZvdXIgb2YgaG9sZHMuIFNlZSBgaHR0cHM6Ly9naXRodWIuY29tL3Bhcml0eXRlY2gvc3Vic3RyYXRlL3B1bGwvMTI5NTEvYAAoTWF4RnJlZXplczgQAgAAAARhASBUaGUgbWF4aW11bSBudW1iZXIgb2YgaW5kaXZpZHVhbCBmcmVlemUgbG9ja3MgdGhhdCBjYW4gZXhpc3Qgb24gYW4gYWNjb3VudCBhdCBhbnkgdGltZS4AAS0LABBEUnVudGltZUhvbGRSZWFzb25lCAR0IFRoZSBvdmVyYXJjaGluZyBob2xkIHJlYXNvbi4cQmFsYW5jZVkBBGwgVGhlIGJhbGFuY2Ugb2YgYW4gYWNjb3VudC5EUmVzZXJ2ZUlkZW50aWZpZXJ5AgxoIFRoZSBJRCB0eXBlIGZvciByZXNlcnZlcy4AsQEgVXNlIG9mIHJlc2VydmVzIGlzIGRlcHJlY2F0ZWQgaW4gZmF2b3VyIG9mIGhvbGRzLiBTZWUgYGh0dHBzOi8vZ2l0aHViLmNvbS9wYXJpdHl0ZWNoL3N1YnN0cmF0ZS9wdWxsLzEyOTUxL2BARnJlZXplSWRlbnRpZmllch0LBGQgVGhlIElEIHR5cGUgZm9yIGZyZWV6ZXMuAAoAAEhUcmFuc2FjdGlvblBheW1lbnQBSFRyYW5zYWN0aW9uUGF5bWVudAxETmV4dEZlZU11bHRpcGxpZXIBACkFQAAAZKeztuANAAAAAAAAAAAAADhTdG9yYWdlVmVyc2lvbgEAMQsEAAAAPFR4UGF5bWVudENyZWRpdAAANQsEAAzwIFRoZSBgT25DaGFyZ2VUcmFuc2FjdGlvbmAgc3RvcmVzIHRoZSB3aXRoZHJhd24gdHggZmVlIGhlcmUuADUBIFVzZSBgd2l0aGRyYXdfdHhmZWVgIGFuZCBgcmVtYWluaW5nX3R4ZmVlYCB0byBhY2Nlc3MgZnJvbSBvdXRzaWRlIHRoZSBjcmF0ZS4AAAGVCAAEYE9wZXJhdGlvbmFsRmVlTXVsdGlwbGllcgwEBVRZASBBIGZlZSBtdWx0aXBsaWVyIGZvciBgT3BlcmF0aW9uYWxgIGV4dHJpbnNpY3MgdG8gY29tcHV0ZSAidmlydHVhbCB0aXAiIHRvIGJvb3N0IHRoZWlyLCBgcHJpb3JpdHlgAFEBIFRoaXMgdmFsdWUgaXMgbXVsdGlwbGllZCBieSB0aGUgYGZpbmFsX2ZlZWAgdG8gb2J0YWluIGEgInZpcnR1YWwgdGlwIiB0aGF0IGlzIGxhdGVy9CBhZGRlZCB0byBhIHRpcCBjb21wb25lbnQgaW4gcmVndWxhciBgcHJpb3JpdHlgIGNhbGN1bGF0aW9ucy5NASBJdCBtZWFucyB0aGF0IGEgYE5vcm1hbGAgdHJhbnNhY3Rpb24gY2FuIGZyb250LXJ1biBhIHNpbWlsYXJseS1zaXplZCBgT3BlcmF0aW9uYWxgQQEgZXh0cmluc2ljICh3aXRoIG5vIHRpcCksIGJ5IGluY2x1ZGluZyBhIHRpcCB2YWx1ZSBncmVhdGVyIHRoYW4gdGhlIHZpcnR1YWwgdGlwLgA8IGBgYHJ1c3QsaWdub3JlQCAvLyBGb3IgYE5vcm1hbGCMIGxldCBwcmlvcml0eSA9IHByaW9yaXR5X2NhbGModGlwKTsAVCAvLyBGb3IgYE9wZXJhdGlvbmFsYBEBIGxldCB2aXJ0dWFsX3RpcCA9IChpbmNsdXNpb25fZmVlICsgdGlwKSAqIE9wZXJhdGlvbmFsRmVlTXVsdGlwbGllcjvEIGxldCBwcmlvcml0eSA9IHByaW9yaXR5X2NhbGModGlwICsgdmlydHVhbF90aXApOxAgYGBgAFEBIE5vdGUgdGhhdCBzaW5jZSB3ZSB1c2UgYGZpbmFsX2ZlZWAgdGhlIG11bHRpcGxpZXIgYXBwbGllcyBhbHNvIHRvIHRoZSByZWd1bGFyIGB0aXBgXQEgc2VudCB3aXRoIHRoZSB0cmFuc2FjdGlvbi4gU28sIG5vdCBvbmx5IGRvZXMgdGhlIHRyYW5zYWN0aW9uIGdldCBhIHByaW9yaXR5IGJ1bXAgYmFzZWRhASBvbiB0aGUgYGluY2x1c2lvbl9mZWVgLCBidXQgd2UgYWxzbyBhbXBsaWZ5IHRoZSBpbXBhY3Qgb2YgdGlwcyBhcHBsaWVkIHRvIGBPcGVyYXRpb25hbGA4IHRyYW5zYWN0aW9ucy4AAAAACwAAOEFzc2V0VHhQYXltZW50AAABmQgAAAAAAA0AABxWZXN0aW5nARxWZXN0aW5nCBxWZXN0aW5nAAEEAgQ9CwQABNggSW5mb3JtYXRpb24gcmVnYXJkaW5nIHRoZSB2ZXN0aW5nIG9mIGEgZ2l2ZW4gYWNjb3VudC4AOFN0b3JhZ2VWZXJzaW9uAQBFCwQADHwgU3RvcmFnZSB2ZXJzaW9uIG9mIHRoZSBwYWxsZXQuADEBIE5ldyBuZXR3b3JrcyBzdGFydCB3aXRoIGxhdGVzdCB2ZXJzaW9uLCBhcyBkZXRlcm1pbmVkIGJ5IHRoZSBnZW5lc2lzIGJ1aWxkLgABaQEAAZ0IAAhETWluVmVzdGVkVHJhbnNmZXJZAUAA4fUFAAAAAAAAAAAAAAAABOggVGhlIG1pbmltdW0gYW1vdW50IHRyYW5zZmVycmVkIHRvIGNhbGwgYHZlc3RlZF90cmFuc2ZlcmAuAExNYXhWZXN0aW5nU2NoZWR1bGVzOBAcAAAAAAABSQsAAAAOAAAYQ2xhaW1zARhDbGFpbXMUGENsYWltcwABBAZ9AVkBBAAAABRUb3RhbAEAWQFAAAAAAAAAAAAAAAAAAAAAAAAAHFZlc3RpbmcAAQQGfQGFAQQAEHggVmVzdGluZyBzY2hlZHVsZSBmb3IgYSBjbGFpbS4NASBGaXJzdCBiYWxhbmNlIGlzIHRoZSB0b3RhbCBhbW91bnQgdGhhdCBzaG91bGQgYmUgaGVsZCBmb3IgdmVzdGluZy7kIFNlY29uZCBiYWxhbmNlIGlzIGhvdyBtdWNoIHNob3VsZCBiZSB1bmxvY2tlZCBwZXIgYmxvY2suzCBUaGUgYmxvY2sgbnVtYmVyIGlzIHdoZW4gdGhlIHZlc3Rpbmcgc2hvdWxkIHN0YXJ0LgAcU2lnbmluZwABBAZ9AY0BBAAEwCBUaGUgc3RhdGVtZW50IGtpbmQgdGhhdCBtdXN0IGJlIHNpZ25lZCwgaWYgYW55LgAkUHJlY2xhaW1zAAEEBgR9AQQABC0BIFByZS1jbGFpbWVkIEV0aGVyZXVtIGFjY291bnRzLCBieSB0aGUgQWNjb3VudCBJRCB0aGF0IHRoZXkgYXJlIGNsYWltZWQgdG8uAAFxAQABoQgABBhQcmVmaXgYiIRQYXkgRE9UcyB0byB0aGUgUG9sa2Fkb3QgYWNjb3VudDoAAAFNCwAAAA8AAAxEYXABDERhcAhAQnVkZ2V0QWxsb2NhdGlvbgEAmQEEABC8IEJ1ZGdldCBhbGxvY2F0aW9uIG1hcDogYEJ1ZGdldEtleSAtPiBQZXJiaWxsYC4ANQEgS2V5cyBtdXN0IGNvcnJlc3BvbmQgdG8gcmVnaXN0ZXJlZCBgQnVkZ2V0UmVjaXBpZW50c2AuIFN1bSBvZiB2YWx1ZXMgbXVzdCBiZSkBIGV4YWN0bHkgYFBlcmJpbGw6Om9uZSgpYCAoMTAwJSkuIFJlY2lwaWVudHMgbm90IGluY2x1ZGVkIHJlY2VpdmUgbm90aGluZy4AVExhc3RJc3N1YW5jZVRpbWVzdGFtcAEAKCAAAAAAAAAAABCoIFRpbWVzdGFtcCAobXMpIG9mIHRoZSBsYXN0IGlzc3VhbmNlIGRyaXAuALAgT24gZXhpc3RpbmcgY2hhaW5zLCB0aGlzIG11c3QgYmUgc2VlZGVkIHZpYTkBIFtgbWlncmF0aW9uczo6TWlncmF0ZVYxVG9WMmBdIHRvIHByZXZlbnQgaW5jb3JyZWN0IG1pbnRpbmcgb24gdGhlIGZpcnN0IGRyaXAuAAGVAQABpQgADCBQYWxsZXRJZFELIGRhcC9idWZmBMQgVGhlIHBhbGxldCBJRCB1c2VkIHRvIGRlcml2ZSB0aGUgYnVmZmVyIGFjY291bnQuADxJc3N1YW5jZUNhZGVuY2UoIGDqAAAAAAAAGMggTWluaW11bSBlbGFwc2VkIHRpbWUgKG1zKSBiZXR3ZWVuIGlzc3VhbmNlIGRyaXBzLgBkIC0gYDBgID0gZHJpcCBldmVyeSBibG9ja7QgLSBgNjBfMDAwYCA9IGRyaXAgZXZlcnkgbWludXRlIChSZWNvbW1lbmRlZCkAoCBTaG91bGQgYmUgc21hbGwgcmVsYXRpdmUgdG8gZXJhIGxlbmd0aC4ARE1heEVsYXBzZWRQZXJEcmlwKCDAJwkAAAAAABQdASBTYWZldHkgY2VpbGluZzogbWF4aW11bSBlbGFwc2VkIHRpbWUgKG1zKSBjb25zaWRlcmVkIGluIGEgc2luZ2xlIGRyaXAuABUBIElmIG1vcmUgdGltZSBoYXMgcGFzc2VkIHRoYW4gdGhpcywgZWxhcHNlZCBpcyBjbGFtcGVkIHRvIHRoaXMgdmFsdWUuGQEgUHJldmVudHMgYWNjaWRlbnRhbCBvdmVyLW1pbnRpbmcgZnJvbSBidWdzLCBtaXNjb25maWd1cmF0aW9uLCBvciBsb25nYCBwZXJpb2RzIHdpdGhvdXQgYmxvY2tzLgABVQsAAAjNFDEPhSb1BNuNmFSNi+42hlr7SN7NdkcDLDTwUTR5RURidWRnZXRfcmVjaXBpZW50cwBZCxAdASBBbGwgcmVnaXN0ZXJlZCBidWRnZXQgcmVjaXBpZW50cyB3aXRoIHRoZWlyIGN1cnJlbnQgYWxsb2NhdGlvbiBzaGFyZXMuAB0BIFRoZSBgUGVyYmlsbGAgaXMgdGFrZW4gZnJvbSBgQnVkZ2V0QWxsb2NhdGlvbmA7IHJlY2lwaWVudHMgYWJzZW50IGZyb22cIHRoZSBtYXAgYXBwZWFyIHdpdGggYFBlcmJpbGw6Onplcm8oKWAuAM0UMQ+FJvUE242YVI2L7japZ2sG/fgSxL9xSQ7M7Z09HHN0YWdpbmcABAwVASBBY2NvdW50IHRoYXQgaG9sZHMgYnVybmVkL3NsYXNoZWQgZnVuZHMgYmVmb3JlIHRoZXkgYXJlIGRyYWluZWQgaW50bxkBIHRoZSBEQVAgYnVmZmVyIGJ5IGBvbl9pZGxlYC4gRXhwb3NlZCB0byBjbGllbnRzIHNvIHRoZXkgZG9uJ3QgaGF2ZSB0b5ggcmUtZGVyaXZlIHRoZSBzdWItYWNjb3VudCB0aGVtc2VsdmVzLgAQAAAoQXV0aG9yc2hpcAEoQXV0aG9yc2hpcAQYQXV0aG9yAAAEBAAEZCBBdXRob3Igb2YgY3VycmVudCBibG9jay4AAAAAAAAAFAAARENvbGxhdG9yU2VsZWN0aW9uAURDb2xsYXRvclNlbGVjdGlvbhQ0SW52dWxuZXJhYmxlcwEAYQsEAAQRASBUaGUgaW52dWxuZXJhYmxlLCBwZXJtaXNzaW9uZWQgY29sbGF0b3JzLiBUaGlzIGxpc3QgbXVzdCBiZSBzb3J0ZWQuADRDYW5kaWRhdGVMaXN0AQBlCwQAFGkBIFRoZSAoY29tbXVuaXR5LCBsaW1pdGVkKSBjb2xsYXRpb24gY2FuZGlkYXRlcy4gYENhbmRpZGF0ZXNgIGFuZCBgSW52dWxuZXJhYmxlc2Agc2hvdWxkIGJlUCBtdXR1YWxseSBleGNsdXNpdmUuAHUBIFRoaXMgbGlzdCBpcyBzb3J0ZWQgaW4gYXNjZW5kaW5nIG9yZGVyIGJ5IGRlcG9zaXQgYW5kIHdoZW4gdGhlIGRlcG9zaXRzIGFyZSBlcXVhbCwgdGhlIGxlYXN0oCByZWNlbnRseSB1cGRhdGVkIGlzIGNvbnNpZGVyZWQgZ3JlYXRlci4ARExhc3RBdXRob3JlZEJsb2NrAQEEBQQ4EAAAAAAEhCBMYXN0IGJsb2NrIGF1dGhvcmVkIGJ5IGNvbGxhdG9yLgBERGVzaXJlZENhbmRpZGF0ZXMBADgQAAAAAAx4IERlc2lyZWQgbnVtYmVyIG9mIGNhbmRpZGF0ZXMuAHUBIFRoaXMgc2hvdWxkIGlkZWFsbHkgYWx3YXlzIGJlIGxlc3MgdGhhbiBbYENvbmZpZzo6TWF4Q2FuZGlkYXRlc2BdIGZvciB3ZWlnaHRzIHRvIGJlIGNvcnJlY3QuADRDYW5kaWRhY3lCb25kAQBZAUAAAAAAAAAAAAAAAAAAAAAADLggRml4ZWQgYW1vdW50IHRvIGRlcG9zaXQgdG8gYmVjb21lIGEgY29sbGF0b3IuAEEBIFdoZW4gYSBjb2xsYXRvciBjYWxscyBgbGVhdmVfaW50ZW50YCB0aGV5IGltbWVkaWF0ZWx5IHJlY2VpdmUgdGhlIGRlcG9zaXQgYmFjay4AAbEBAAGtCAAYFFBvdElkUQsgUG90U3Rha2UE9CBBY2NvdW50IElkZW50aWZpZXIgZnJvbSB3aGljaCB0aGUgaW50ZXJuYWwgUG90IGlzIGdlbmVyYXRlZC4ANE1heENhbmRpZGF0ZXM4EGQAAAAMyCBNYXhpbXVtIG51bWJlciBvZiBjYW5kaWRhdGVzIHRoYXQgd2Ugc2hvdWxkIGhhdmUuAMwgVGhpcyBkb2VzIG5vdCB0YWtlIGludG8gYWNjb3VudCB0aGUgaW52dWxuZXJhYmxlcy4AUE1pbkVsaWdpYmxlQ29sbGF0b3JzOBAEAAAADFUBIE1pbmltdW0gbnVtYmVyIGVsaWdpYmxlIGNvbGxhdG9ycy4gU2hvdWxkIGFsd2F5cyBiZSBncmVhdGVyIHRoYW4gemVyby4gVGhpcyBpbmNsdWRlc1EBIEludnVsbmVyYWJsZSBjb2xsYXRvcnMuIFRoaXMgZW5zdXJlcyB0aGF0IHRoZXJlIHdpbGwgYWx3YXlzIGJlIG9uZSBjb2xsYXRvciB3aG8gY2FuRCBwcm9kdWNlIGEgYmxvY2suAEBNYXhJbnZ1bG5lcmFibGVzOBAUAAAABIQgTWF4aW11bSBudW1iZXIgb2YgaW52dWxuZXJhYmxlcy4ANEtpY2tUaHJlc2hvbGQ4EBAOAAAAACxwb3RfYWNjb3VudASAbW9kbFBvdFN0YWtlAAAAAAAAAAAAAAAAAAAAAAAAAAAEoCBHZXRzIHRoaXMgcGFsbGV0J3MgZGVyaXZlZCBwb3QgYWNjb3VudC4AAXELAAQsVmFsaWRhdG9ySWQEBHQgQSBzdGFibGUgSUQgZm9yIGEgdmFsaWRhdG9yLgAVAAAcU2Vzc2lvbgEcU2Vzc2lvbiAoVmFsaWRhdG9ycwEAYQEEAAR8IFRoZSBjdXJyZW50IHNldCBvZiB2YWxpZGF0b3JzLgAwQ3VycmVudEluZGV4AQA4EAAAAAAEeCBDdXJyZW50IGluZGV4IG9mIHRoZSBzZXNzaW9uLgA0UXVldWVkQ2hhbmdlZAEAXQEEAAg5ASBUcnVlIGlmIHRoZSB1bmRlcmx5aW5nIGVjb25vbWljIGlkZW50aXRpZXMgb3Igd2VpZ2h0aW5nIGJlaGluZCB0aGUgdmFsaWRhdG9yc6QgaGFzIGNoYW5nZWQgaW4gdGhlIHF1ZXVlZCB2YWxpZGF0b3Igc2V0LgAoUXVldWVkS2V5cwEAdQsEAAg9ASBUaGUgcXVldWVkIGtleXMgZm9yIHRoZSBuZXh0IHNlc3Npb24uIFdoZW4gdGhlIG5leHQgc2Vzc2lvbiBiZWdpbnMsIHRoZXNlIGtleXPgIHdpbGwgYmUgdXNlZCB0byBkZXRlcm1pbmUgdGhlIHZhbGlkYXRvcidzIHNlc3Npb24ga2V5cy4ASERpc2FibGVkVmFsaWRhdG9ycwEAfQsEABSAIEluZGljZXMgb2YgZGlzYWJsZWQgdmFsaWRhdG9ycy4APQEgVGhlIHZlYyBpcyBhbHdheXMga2VwdCBzb3J0ZWQgc28gdGhhdCB3ZSBjYW4gZmluZCB3aGV0aGVyIGEgZ2l2ZW4gdmFsaWRhdG9yIGlzPQEgZGlzYWJsZWQgdXNpbmcgYmluYXJ5IHNlYXJjaC4gSXQgZ2V0cyBjbGVhcmVkIHdoZW4gYG9uX3Nlc3Npb25fZW5kaW5nYCByZXR1cm5zZCBhIG5ldyBzZXQgb2YgaWRlbnRpdGllcy4AIE5leHRLZXlzAAEEBQS5AQQABJwgVGhlIG5leHQgc2Vzc2lvbiBrZXlzIGZvciBhIHZhbGlkYXRvci4AIEtleU93bmVyAAEEBYkLBAQABAkBIFRoZSBvd25lciBvZiBhIGtleS4gVGhlIGtleSBpcyB0aGUgYEtleVR5cGVJZGAgKyB0aGUgZW5jb2RlZCBrZXkuAERFeHRlcm5hbGx5U2V0S2V5cwABBAUEEAQAEDEBIEFjY291bnRzIHdob3NlIGtleXMgd2VyZSBzZXQgdmlhIGBTZXNzaW9uSW50ZXJmYWNlYCAoZXh0ZXJuYWwgcGF0aCkgd2l0aG91dDkBIGluY3JlbWVudGluZyB0aGUgY29uc3VtZXIgcmVmZXJlbmNlIG9yIHBsYWNpbmcgYSBrZXkgZGVwb3NpdC4gYGRvX3B1cmdlX2tleXNgOQEgb25seSBkZWNyZW1lbnRzIGNvbnN1bWVycyBmb3IgYWNjb3VudHMgdGhhdCB3ZXJlIHJlZ2lzdGVyZWQgdGhyb3VnaCB0aGUgbG9jYWxAIHNlc3Npb24gcGFsbGV0LgABtQEAAbEIAAQoS2V5RGVwb3NpdFkBQAAAAAAAAAAAAAAAAAAAAAAEpCBUaGUgYW1vdW50IHRvIGJlIGhlbGQgd2hlbiBzZXR0aW5nIGtleXMuAAGRCwAILFZhbGlkYXRvcklkBAR0IEEgc3RhYmxlIElEIGZvciBhIHZhbGlkYXRvci4QS2V5c7kBBCggVGhlIGtleXMuABYAABBBdXJhARBBdXJhCCxBdXRob3JpdGllcwEAlQsEAARsIFRoZSBjdXJyZW50IGF1dGhvcml0eSBzZXQuACxDdXJyZW50U2xvdAEAnQsgAAAAAAAAAAAMgCBUaGUgY3VycmVudCBzbG90IG9mIHRoaXMgYmxvY2suAJQgVGhpcyB3aWxsIGJlIHNldCBpbiBgb25faW5pdGlhbGl6ZWAuAAAABDBTbG90RHVyYXRpb24oIOAuAAAAAAAAFA0BIFRoZSBzbG90IGR1cmF0aW9uIEF1cmEgc2hvdWxkIHJ1biB3aXRoLCBleHByZXNzZWQgaW4gbWlsbGlzZWNvbmRzLgAhASBUaGUgZWZmZWN0aXZlIHZhbHVlIG9mIHRoaXMgdHlwZSBjYW4gYmUgY2hhbmdlZCB3aXRoIGEgcnVudGltZSB1cGdyYWRlLgA1ASBGb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgZWl0aGVyIHVzZSBbYE1pbmltdW1QZXJpb2RUaW1lc1R3b2BdIG9yIGEgY29uc3QuAAAELEF1dGhvcml0eUlkvQEEmCBUaGUgaWRlbnRpZmllciB0eXBlIGZvciBhbiBhdXRob3JpdHkuABcAABxBdXJhRXh0ARxBdXJhRXh0CCxBdXRob3JpdGllcwEAlQsEABSUIFNlcnZlcyBhcyBjYWNoZSBmb3IgdGhlIGF1dGhvcml0aWVzLgBxASBUaGUgYXV0aG9yaXRpZXMgaW4gQXVSYSBhcmUgb3ZlcndyaXR0ZW4gaW4gYG9uX2luaXRpYWxpemVgIHdoZW4gd2Ugc3dpdGNoIHRvIGEgbmV3IHNlc3Npb24sXQEgYnV0IHdlIHJlcXVpcmUgdGhlIG9sZCBhdXRob3JpdGllcyB0byB2ZXJpZnkgdGhlIHNlYWwgd2hlbiB2YWxpZGF0aW5nIGEgUG9WLiBUaGlzIHdpbGwNASBhbHdheXMgYmUgdXBkYXRlZCB0byB0aGUgbGF0ZXN0IEF1UmEgYXV0aG9yaXRpZXMgaW4gYG9uX2ZpbmFsaXplYC4ANFJlbGF5U2xvdEluZm8AAKELBAAQCQEgQ3VycmVudCByZWxheSBjaGFpbiBzbG90IHBhaXJlZCB3aXRoIGEgbnVtYmVyIG9mIGF1dGhvcmVkIGJsb2Nrcy4AZQEgVGhpcyBpcyB1cGRhdGVkIGluIFtgRml4ZWRWZWxvY2l0eUNvbnNlbnN1c0hvb2s6Om9uX3N0YXRlX3Byb29mYF0gd2l0aCB0aGUgY3VycmVudCByZWxhedwgY2hhaW4gc2xvdCBhcyBwcm92aWRlZCBieSB0aGUgcmVsYXkgY2hhaW4gc3RhdGUgcHJvb2YuAAAAAAAAABgAACRYY21wUXVldWUBJFhjbXBRdWV1ZRxQSW5ib3VuZFhjbXBTdXNwZW5kZWQBAKULBAAgDQEgVGhlIHN1c3BlbmRlZCBpbmJvdW5kIFhDTVAgY2hhbm5lbHMuIEFsbCBvdGhlcnMgYXJlIG5vdCBzdXNwZW5kZWQuAHEBIFRoaXMgaXMgYSBgU3RvcmFnZVZhbHVlYCBpbnN0ZWFkIG9mIGEgYFN0b3JhZ2VNYXBgIHNpbmNlIHdlIGV4cGVjdCBtdWx0aXBsZSByZWFkcyBwZXIgYmxvY2tpASB0byBkaWZmZXJlbnQga2V5cyB3aXRoIGEgb25lIGJ5dGUgcGF5bG9hZC4gVGhlIGFjY2VzcyB0byBgQm91bmRlZEJUcmVlU2V0YCB3aWxsIGJlIGNhY2hlZBUBIHdpdGhpbiB0aGUgYmxvY2sgYW5kIHRoZXJlZm9yZSBvbmx5IGluY2x1ZGVkIG9uY2UgaW4gdGhlIHByb29mIHNpemUuAGUBIE5PVEU6IFRoZSBQb1YgYmVuY2htYXJraW5nIGNhbm5vdCBrbm93IHRoaXMgYW5kIHdpbGwgb3Zlci1lc3RpbWF0ZSwgYnV0IHRoZSBhY3R1YWwgcHJvb2ZEIHdpbGwgYmUgc21hbGxlci4ASE91dGJvdW5kWGNtcFN0YXR1cwEArQsEABhdASBUaGUgbm9uLWVtcHR5IFhDTVAgY2hhbm5lbHMgaW4gb3JkZXIgb2YgYmVjb21pbmcgbm9uLWVtcHR5LCBhbmQgdGhlIGluZGV4IG9mIHRoZSBmaXJzdFEBIGFuZCBsYXN0IG91dGJvdW5kIG1lc3NhZ2UuIElmIHRoZSB0d28gaW5kaWNlcyBhcmUgZXF1YWwsIHRoZW4gaXQgaW5kaWNhdGVzIGFuIGVtcHR5WQEgcXVldWUgYW5kIHRoZXJlIG11c3QgYmUgYSBub24tYE9rYCBgT3V0Ym91bmRTdGF0dXNgLiBXZSBhc3N1bWUgcXVldWVzIGdyb3cgbm8gZ3JlYXRlclkBIHRoYW4gNjU1MzUgaXRlbXMuIFF1ZXVlIGluZGljZXMgZm9yIG5vcm1hbCBtZXNzYWdlcyBiZWdpbiBhdCBvbmU7IHplcm8gaXMgcmVzZXJ2ZWQgaW4RASBjYXNlIG9mIHRoZSBuZWVkIHRvIHNlbmQgYSBoaWdoLXByaW9yaXR5IHNpZ25hbCBtZXNzYWdlIHRoaXMgYmxvY2suCQEgVGhlIGJvb2wgaXMgdHJ1ZSBpZiB0aGVyZSBpcyBhIHNpZ25hbCBtZXNzYWdlIHdhaXRpbmcgdG8gYmUgc2VudC4AUE91dGJvdW5kWGNtcE1lc3NhZ2VzAQEIAgXBC8ULBAAEvCBUaGUgbWVzc2FnZXMgb3V0Ym91bmQgaW4gYSBnaXZlbiBYQ01QIGNoYW5uZWwuADhTaWduYWxNZXNzYWdlcwEBBAKgxQsEAASgIEFueSBzaWduYWwgbWVzc2FnZXMgd2FpdGluZyB0byBiZSBzZW50LgAsUXVldWVDb25maWcBAMkLMCAAAAAwAAAACAAAAAQVASBUaGUgY29uZmlndXJhdGlvbiB3aGljaCBjb250cm9scyB0aGUgZHluYW1pY3Mgb2YgdGhlIG91dGJvdW5kIHF1ZXVlLgA4UXVldWVTdXNwZW5kZWQBAF0BBAAEQQEgV2hldGhlciBvciBub3QgdGhlIFhDTVAgcXVldWUgaXMgc3VzcGVuZGVkIGZyb20gZXhlY3V0aW5nIGluY29taW5nIFhDTXMgb3Igbm90LgBERGVsaXZlcnlGZWVGYWN0b3IBAQQFoCkFQAAAZKeztuANAAAAAAAAAAAExCBUaGUgZmFjdG9yIHRvIG11bHRpcGx5IHRoZSBiYXNlIGRlbGl2ZXJ5IGZlZSBieS4AAcEBAAG1CAAMTE1heEluYm91bmRTdXNwZW5kZWQ4EOgDAAAUSQEgVGhlIG1heGltdW0gbnVtYmVyIG9mIGluYm91bmQgWENNUCBjaGFubmVscyB0aGF0IGNhbiBiZSBzdXNwZW5kZWQgc2ltdWx0YW5lb3VzbHkuAF0BIEFueSBmdXJ0aGVyIGNoYW5uZWwgc3VzcGVuc2lvbnMgd2lsbCBmYWlsIGFuZCBtZXNzYWdlcyBtYXkgZ2V0IGRyb3BwZWQgd2l0aG91dCBmdXJ0aGVyRQEgbm90aWNlLiBDaG9vc2luZyBhIGhpZ2ggdmFsdWUgKDEwMDApIGlzIG9rYXk7IHRoZSB0cmFkZS1vZmYgdGhhdCBpcyBkZXNjcmliZWQgaW7YIFtgSW5ib3VuZFhjbXBTdXNwZW5kZWRgXSBzdGlsbCBhcHBsaWVzIGF0IHRoYXQgc2NhbGUuAGRNYXhBY3RpdmVPdXRib3VuZENoYW5uZWxzOBCAAAAAIGUBIE1heGltYWwgbnVtYmVyIG9mIG91dGJvdW5kIFhDTVAgY2hhbm5lbHMgdGhhdCBjYW4gaGF2ZSBtZXNzYWdlcyBxdWV1ZWQgYXQgdGhlIHNhbWUgdGltZS4AVQEgSWYgdGhpcyBpcyByZWFjaGVkLCB0aGVuIG5vIGZ1cnRoZXIgbWVzc2FnZXMgY2FuIGJlIHNlbnQgdG8gY2hhbm5lbHMgdGhhdCBkbyBub3QgeWV0XQEgaGF2ZSBhIG1lc3NhZ2UgcXVldWVkLiBUaGlzIHNob3VsZCBiZSBzZXQgdG8gdGhlIGV4cGVjdGVkIG1heGltdW0gb2Ygb3V0Ym91bmQgY2hhbm5lbHNhASB3aGljaCBpcyBkZXRlcm1pbmVkIGJ5IFtgU2VsZjo6Q2hhbm5lbEluZm9gXS4gSXQgaXMgaW1wb3J0YW50IHRvIHNldCB0aGlzIGxhcmdlIGVub3VnaCxdASBzaW5jZSBvdGhlcndpc2UgdGhlIGNvbmdlc3Rpb24gY29udHJvbCBwcm90b2NvbCB3aWxsIG5vdCB3b3JrIGFzIGludGVuZGVkIGFuZCBtZXNzYWdlc1EBIG1heSBiZSBkcm9wcGVkLiBUaGlzIHZhbHVlIGluY3JlYXNlcyB0aGUgUG9WIGFuZCBzaG91bGQgdGhlcmVmb3JlIG5vdCBiZSBwaWNrZWQgdG9vTQEgaGlnaC4gR292ZXJuYW5jZSBuZWVkcyB0byBwYXkgYXR0ZW50aW9uIHRvIG5vdCBvcGVuIG1vcmUgY2hhbm5lbHMgdGhhbiB0aGlzIHZhbHVlLgAsTWF4UGFnZVNpemU4EACcAQAUuCBUaGUgbWF4aW1hbCBwYWdlIHNpemUgZm9yIEhSTVAgbWVzc2FnZSBwYWdlcy4AYQEgQSBsb3dlciBsaW1pdCBjYW4gYmUgc2V0IGR5bmFtaWNhbGx5LCBidXQgdGhpcyBpcyB0aGUgaGFyZC1saW1pdCBmb3IgdGhlIFBvViB3b3JzdCBjYXNlVQEgYmVuY2htYXJraW5nLiBUaGUgbGltaXQgZm9yIHRoZSBzaXplIG9mIGEgbWVzc2FnZSBpcyBzbGlnaHRseSBiZWxvdyB0aGlzLCBzaW5jZSBzb21luCBvdmVyaGVhZCBpcyBpbmN1cnJlZCBmb3IgZW5jb2RpbmcgdGhlIGZvcm1hdC4AAc0LAAAAHgAALFBvbGthZG90WGNtASxQb2xrYWRvdFhjbTwwUXVlcnlDb3VudGVyAQAoIAAAAAAAAAAABIggVGhlIGxhdGVzdCBhdmFpbGFibGUgcXVlcnkgaW5kZXguABxRdWVyaWVzAAEEAijRCwQABFQgVGhlIG9uZ29pbmcgcXVlcmllcy4AKEFzc2V0VHJhcHMBAQQGQDgQAAAAABBoIFRoZSBleGlzdGluZyBhc3NldCB0cmFwcy4AYQEgS2V5IGlzIHRoZSBibGFrZTIgMjU2IGhhc2ggb2YgKG9yaWdpbiwgdmVyc2lvbmVkIGBBc3NldHNgKSBwYWlyLiBWYWx1ZSBpcyB0aGUgbnVtYmVyIG9mHQEgdGltZXMgdGhpcyBwYWlyIGhhcyBiZWVuIHRyYXBwZWQgKHVzdWFsbHkganVzdCAxIGlmIGl0IGV4aXN0cyBhdCBhbGwpLgA4U2FmZVhjbVZlcnNpb24AADgEAAhhASBEZWZhdWx0IHZlcnNpb24gdG8gZW5jb2RlIFhDTSB3aGVuIGxhdGVzdCB2ZXJzaW9uIG9mIGRlc3RpbmF0aW9uIGlzIHVua25vd24uIElmIGBOb25lYCw9ASB0aGVuIHRoZSBkZXN0aW5hdGlvbnMgd2hvc2UgWENNIHZlcnNpb24gaXMgdW5rbm93biBhcmUgY29uc2lkZXJlZCB1bnJlYWNoYWJsZS4AQFN1cHBvcnRlZFZlcnNpb24AAQgFAuULOAQABPAgVGhlIExhdGVzdCB2ZXJzaW9ucyB0aGF0IHdlIGtub3cgdmFyaW91cyBsb2NhdGlvbnMgc3VwcG9ydC4AQFZlcnNpb25Ob3RpZmllcnMAAQgFAuULKAQABAUBIEFsbCBsb2NhdGlvbnMgdGhhdCB3ZSBoYXZlIHJlcXVlc3RlZCB2ZXJzaW9uIG5vdGlmaWNhdGlvbnMgZnJvbS4AUFZlcnNpb25Ob3RpZnlUYXJnZXRzAAEIBQLlC+kLBAAIcQEgVGhlIHRhcmdldCBsb2NhdGlvbnMgdGhhdCBhcmUgc3Vic2NyaWJlZCB0byBvdXIgdmVyc2lvbiBjaGFuZ2VzLCBhcyB3ZWxsIGFzIHRoZSBtb3N0IHJlY2VudJQgb2Ygb3VyIHZlcnNpb25zIHdlIGluZm9ybWVkIHRoZW0gb2YuAFRWZXJzaW9uRGlzY292ZXJ5UXVldWUBAO0LBAAMZQEgRGVzdGluYXRpb25zIHdob3NlIGxhdGVzdCBYQ00gdmVyc2lvbiB3ZSB3b3VsZCBsaWtlIHRvIGtub3cuIER1cGxpY2F0ZXMgbm90IGFsbG93ZWQsIGFuZHEBIHRoZSBgdTMyYCBjb3VudGVyIGlzIHRoZSBudW1iZXIgb2YgdGltZXMgdGhhdCBhIHNlbmQgdG8gdGhlIGRlc3RpbmF0aW9uIGhhcyBiZWVuIGF0dGVtcHRlZCyMIHdoaWNoIGlzIHVzZWQgYXMgYSBwcmlvcml0aXphdGlvbi4AQEN1cnJlbnRNaWdyYXRpb24AAPkLBAAEnCBUaGUgY3VycmVudCBtaWdyYXRpb24ncyBzdGFnZSwgaWYgYW55LgBUUmVtb3RlTG9ja2VkRnVuZ2libGVzAAEMBQIC/QsBDAQABPAgRnVuZ2libGUgYXNzZXRzIHdoaWNoIHdlIGtub3cgYXJlIGxvY2tlZCBvbiBhIHJlbW90ZSBjaGFpbi4APExvY2tlZEZ1bmdpYmxlcwABBAIEEQwEAATgIEZ1bmdpYmxlIGFzc2V0cyB3aGljaCB3ZSBrbm93IGFyZSBsb2NrZWQgb24gdGhpcyBjaGFpbi4AVFhjbUV4ZWN1dGlvblN1c3BlbmRlZAEAXQEEAAS0IEdsb2JhbCBzdXNwZW5zaW9uIHN0YXRlIG9mIHRoZSBYQ00gZXhlY3V0b3IuADxTaG91bGRSZWNvcmRYY20BAF0BBAAcWQEgV2hldGhlciBvciBub3QgaW5jb21pbmcgWENNcyAoYm90aCBleGVjdXRlZCBsb2NhbGx5IGFuZCByZWNlaXZlZCkgc2hvdWxkIGJlIHJlY29yZGVkLsQgT25seSBvbmUgWENNIHByb2dyYW0gd2lsbCBiZSByZWNvcmRlZCBhdCBhIHRpbWUuKQEgVGhpcyBpcyBtZWFudCB0byBiZSB1c2VkIGluIHJ1bnRpbWUgQVBJcywgYW5kIGl0J3MgYWR2aXNlZCBpdCBzdGF5cyBmYWxzZQ0BIGZvciBhbGwgb3RoZXIgdXNlIGNhc2VzLCBzbyBhcyB0byBub3QgZGVncmFkZSByZWd1bGFyIHBlcmZvcm1hbmNlLgBZASBPbmx5IHJlbGV2YW50IGlmIHRoaXMgcGFsbGV0IGlzIGJlaW5nIHVzZWQgYXMgdGhlIFtgeGNtX2V4ZWN1dG9yOjp0cmFpdHM6OlJlY29yZFhjbWBdyCBpbXBsZW1lbnRhdGlvbiBpbiB0aGUgWENNIGV4ZWN1dG9yIGNvbmZpZ3VyYXRpb24uACxSZWNvcmRlZFhjbQAAFQMEABhJASBJZiBbYFNob3VsZFJlY29yZFhjbWBdIGlzIHNldCB0byB0cnVlLCB0aGVuIHRoZSBsYXN0IFhDTSBwcm9ncmFtIGV4ZWN1dGVkIGxvY2FsbHlUIHdpbGwgYmUgc3RvcmVkIGhlcmUuKQEgUnVudGltZSBBUElzIGNhbiBmZXRjaCB0aGUgWENNIHRoYXQgd2FzIGV4ZWN1dGVkIGJ5IGFjY2Vzc2luZyB0aGlzIHZhbHVlLgBZASBPbmx5IHJlbGV2YW50IGlmIHRoaXMgcGFsbGV0IGlzIGJlaW5nIHVzZWQgYXMgdGhlIFtgeGNtX2V4ZWN1dG9yOjp0cmFpdHM6OlJlY29yZFhjbWBdyCBpbXBsZW1lbnRhdGlvbiBpbiB0aGUgWENNIGV4ZWN1dG9yIGNvbmZpZ3VyYXRpb24uAERBdXRob3JpemVkQWxpYXNlcwABBALJAR0MBAAMZQEgTWFwIG9mIGF1dGhvcml6ZWQgYWxpYXNlcnMgb2YgbG9jYWwgb3JpZ2lucy4gRWFjaCBsb2NhbCBsb2NhdGlvbiBjYW4gYXV0aG9yaXplIGEgbGlzdCBvZlkBIG90aGVyIGxvY2F0aW9ucyB0byBhbGlhcyBpbnRvIGl0LiBFYWNoIGFsaWFzZXIgaXMgb25seSB2YWxpZCB1bnRpbCBpdHMgaW5uZXIgYGV4cGlyeWA4IGJsb2NrIG51bWJlci4AAcUBCAECuQFUaGlzIGV4dHJpbnNpYyB1c2VzIGBXZWlnaHRMaW1pdDo6VW5saW1pdGVkYCwgcGxlYXNlIG1pZ3JhdGUgdG8gYGxpbWl0ZWRfdGVsZXBvcnRfYXNzZXRzYCBvciBgdHJhbnNmZXJfYXNzZXRzYAACAtkBVGhpcyBleHRyaW5zaWMgdXNlcyBgV2VpZ2h0TGltaXQ6OlVubGltaXRlZGAsIHBsZWFzZSBtaWdyYXRlIHRvIGBsaW1pdGVkX3Jlc2VydmVfdHJhbnNmZXJfYXNzZXRzYCBvciBgdHJhbnNmZXJfYXNzZXRzYAABuQgAEERVbml2ZXJzYWxMb2NhdGlvbiECGAIJAgChDwSEIFRoaXMgY2hhaW4ncyBVbml2ZXJzYWwgTG9jYXRpb24uAFBBZHZlcnRpc2VkWGNtVmVyc2lvbjgQBQAAAAglASBUaGUgbGF0ZXN0IHN1cHBvcnRlZCB2ZXJzaW9uIHRoYXQgd2UgYWR2ZXJ0aXNlLiBHZW5lcmFsbHkganVzdCBzZXQgaXQgdG+EIGBwYWxsZXRfeGNtOjpDdXJyZW50WGNtVmVyc2lvbmAuAChNYXhMb2NrZXJzOBAIAAAABBkBIFRoZSBtYXhpbXVtIG51bWJlciBvZiBsb2NhbCBYQ00gbG9ja3MgdGhhdCBhIHNpbmdsZSBhY2NvdW50IG1heSBoYXZlLgBYTWF4UmVtb3RlTG9ja0NvbnN1bWVyczgQAAAAAAT8IFRoZSBtYXhpbXVtIG51bWJlciBvZiBjb25zdW1lcnMgYSBzaW5nbGUgcmVtb3RlIGxvY2sgbWF5IGhhdmUuAAE1DAQYArxVc2UgYExvY2FsRXhlY3V0aW9uSW5jb21wbGV0ZVdpdGhFcnJvcmAgaW5zdGVhZAEYMjAuMC4wCCxSdW50aW1lQ2FsbCAEZCBUaGUgcnVudGltZSBgQ2FsbGAgdHlwZS5wUmVtb3RlTG9ja0NvbnN1bWVySWRlbnRpZmllchAExCBUaGUgSUQgdHlwZSBmb3IgbG9jYWwgY29uc3VtZXJzIG9mIHJlbW90ZSBsb2Nrcy4AHwAAKEN1bXVsdXNYY20AAcUDAAHJCAAAAAAAIAAARFRvS3VzYW1hWGNtUm91dGVyAURUb0t1c2FtYVhjbVJvdXRlcgQYQnJpZGdlAQA9DEQAAGSns7bgDQAAAAAAAAAAABxoIEJyaWRnZSB0aGF0IHdlIGFyZSB1c2luZy4AcQEgKipicmlkZ2VzLXYxKiogYXNzdW1wdGlvbnM6IGFsbCBvdXRib3VuZCBtZXNzYWdlcyB0aHJvdWdoIHRoaXMgcm91dGVyIGFyZSB1c2luZyBzaW5nbGUgbGFuZW0BIGFuZCB0byBzaW5nbGUgcmVtb3RlIGNvbnNlbnN1cy4gSWYgdGhlcmUgaXMgc29tZSBvdGhlciByZW1vdGUgY29uc2Vuc3VzIHRoYXQgdXNlcyB0aGUgc2FtZWEBIGJyaWRnZSBodWIsIHRoZSBzZXBhcmF0ZSBwYWxsZXQgaW5zdGFuY2Ugc2hhbGwgYmUgdXNlZCwgSW4gYHYyYCB3ZSdsbCBoYXZlIGFsbCByZXF1aXJlZHEBIHByaW1pdGl2ZXMgKGxhbmUtaWQgYWthIGJyaWRnZS1pZCwgZGVyaXZlZCBmcm9tIFhDTSBsb2NhdGlvbnMpIHRvIHN1cHBvcnQgbXVsdGlwbGUgIGJyaWRnZXN0IGJ5IHRoZSBzYW1lIHBhbGxldCBpbnN0YW5jZS4AAckDAAHNCAAAAAAAIgAAME1lc3NhZ2VRdWV1ZQEwTWVzc2FnZVF1ZXVlDDBCb29rU3RhdGVGb3IBAQQF0QNBDHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATMIFRoZSBpbmRleCBvZiB0aGUgZmlyc3QgYW5kIGxhc3QgKG5vbi1lbXB0eSkgcGFnZXMuACxTZXJ2aWNlSGVhZAAA0QMEAAS8IFRoZSBvcmlnaW4gYXQgd2hpY2ggd2Ugc2hvdWxkIGJlZ2luIHNlcnZpY2luZy4AFFBhZ2VzAAEIBQVNDFEMBAAEiCBUaGUgbWFwIG9mIHBhZ2UgaW5kaWNlcyB0byBwYWdlcy4AAc0DAAHRCAAQIEhlYXBTaXplOBAAAAEAFD0BIFRoZSBzaXplIG9mIHRoZSBwYWdlOyB0aGlzIGltcGxpZXMgdGhlIG1heGltdW0gbWVzc2FnZSBzaXplIHdoaWNoIGNhbiBiZSBzZW50LgBZASBBIGdvb2QgdmFsdWUgZGVwZW5kcyBvbiB0aGUgZXhwZWN0ZWQgbWVzc2FnZSBzaXplcywgdGhlaXIgd2VpZ2h0cywgdGhlIHdlaWdodCB0aGF0IGlzXQEgYXZhaWxhYmxlIGZvciBwcm9jZXNzaW5nIHRoZW0gYW5kIHRoZSBtYXhpbWFsIG5lZWRlZCBtZXNzYWdlIHNpemUuIFRoZSBtYXhpbWFsIG1lc3NhZ2URASBzaXplIGlzIHNsaWdodGx5IGxvd2VyIHRoYW4gdGhpcyBhcyBkZWZpbmVkIGJ5IFtgTWF4TWVzc2FnZUxlbk9mYF0uACBNYXhTdGFsZTgQCAAAAAxdASBUaGUgbWF4aW11bSBudW1iZXIgb2Ygc3RhbGUgcGFnZXMgKGkuZS4gb2Ygb3ZlcndlaWdodCBtZXNzYWdlcykgYWxsb3dlZCBiZWZvcmUgY3VsbGluZ1EBIGNhbiBoYXBwZW4uIE9uY2UgdGhlcmUgYXJlIG1vcmUgc3RhbGUgcGFnZXMgdGhhbiB0aGlzLCB0aGVuIGhpc3RvcmljYWwgcGFnZXMgbWF5IGJl/CBkcm9wcGVkLCBldmVuIGlmIHRoZXkgY29udGFpbiB1bnByb2Nlc3NlZCBvdmVyd2VpZ2h0IG1lc3NhZ2VzLgA0U2VydmljZVdlaWdodBEBLAEHABCl1OgCAEABGEEBIFRoZSBhbW91bnQgb2Ygd2VpZ2h0IChpZiBhbnkpIHdoaWNoIHNob3VsZCBiZSBwcm92aWRlZCB0byB0aGUgbWVzc2FnZSBxdWV1ZSBmb3KoIHNlcnZpY2luZyBlbnF1ZXVlZCBpdGVtcyBgb25faW5pdGlhbGl6ZWAuAPwgVGhpcyBtYXkgYmUgbGVnaXRpbWF0ZWx5IGBOb25lYCBpbiB0aGUgY2FzZSB0aGF0IHlvdSB3aWxsIGNhbGxdASBgU2VydmljZVF1ZXVlczo6c2VydmljZV9xdWV1ZXNgIG1hbnVhbGx5IG9yIHNldCBbYFNlbGY6OklkbGVNYXhTZXJ2aWNlV2VpZ2h0YF0gdG8gaGF2ZVQgaXQgcnVuIGluIGBvbl9pZGxlYC4AUElkbGVNYXhTZXJ2aWNlV2VpZ2h0EQEsAQcAEKXU6AIAQAEUXQEgVGhlIG1heGltdW0gYW1vdW50IG9mIHdlaWdodCAoaWYgYW55KSB0byBiZSB1c2VkIGZyb20gcmVtYWluaW5nIHdlaWdodCBgb25faWRsZWAgd2hpY2hBASBzaG91bGQgYmUgcHJvdmlkZWQgdG8gdGhlIG1lc3NhZ2UgcXVldWUgZm9yIHNlcnZpY2luZyBlbnF1ZXVlZCBpdGVtcyBgb25faWRsZWAuPQEgVXNlZnVsIGZvciBwYXJhY2hhaW5zIHRvIHByb2Nlc3MgbWVzc2FnZXMgYXQgdGhlIHNhbWUgYmxvY2sgdGhleSBhcmUgcmVjZWl2ZWQuACkBIElmIGBOb25lYCwgaXQgd2lsbCBub3QgY2FsbCBgU2VydmljZVF1ZXVlczo6c2VydmljZV9xdWV1ZXNgIGluIGBvbl9pZGxlYC4AAVkMAAQQU2l6ZTgEVCBQYWdlL2hlYXAgc2l6ZSB0eXBlLgAjAABgU25vd2JyaWRnZVN5c3RlbUZyb250ZW5kAWBTbm93YnJpZGdlU3lzdGVtRnJvbnRlbmQETEV4cG9ydE9wZXJhdGluZ01vZGUBANkDBAAE2CBUaGUgY3VycmVudCBvcGVyYXRpbmcgbW9kZSBmb3IgZXhwb3J0aW5nIHRvIEV0aGVyZXVtLgAB1QMAAdkIAAABXQwAAAAkAAAcVXRpbGl0eQAB5QMAAd0IAARMYmF0Y2hlZF9jYWxsc19saW1pdDgQqioAAASoIFRoZSBsaW1pdCBvbiB0aGUgbnVtYmVyIG9mIGJhdGNoZWQgY2FsbHMuAAFhDAAILFJ1bnRpbWVDYWxsIARsIFRoZSBvdmVyYXJjaGluZyBjYWxsIHR5cGUuNFBhbGxldHNPcmlnaW7xAwTwIFRoZSBjYWxsZXIgb3JpZ2luLCBvdmVyYXJjaGluZyB0eXBlIG9mIGFsbCBwYWxsZXRzIG9yaWdpbnMuACgAACBNdWx0aXNpZwEgTXVsdGlzaWcEJE11bHRpc2lncwABCAUCZQxpDAQABJQgVGhlIHNldCBvZiBvcGVuIG11bHRpc2lnIG9wZXJhdGlvbnMuAAEpBAAB4QgADCxEZXBvc2l0QmFzZVkBQADbu3cAAAAAAAAAAAAAAAAYWQEgVGhlIGJhc2UgYW1vdW50IG9mIGN1cnJlbmN5IG5lZWRlZCB0byByZXNlcnZlIGZvciBjcmVhdGluZyBhIG11bHRpc2lnIGV4ZWN1dGlvbiBvciB0b4Qgc3RvcmUgYSBkaXNwYXRjaCBjYWxsIGZvciBsYXRlci4AAQEgVGhpcyBpcyBoZWxkIGZvciBhbiBhZGRpdGlvbmFsIHN0b3JhZ2UgaXRlbSB3aG9zZSB2YWx1ZSBzaXplIGlzMQEgYDQgKyBzaXplb2YoKEJsb2NrTnVtYmVyLCBCYWxhbmNlLCBBY2NvdW50SWQpKWAgYnl0ZXMgYW5kIHdob3NlIGtleSBzaXplIGlzgCBgMzIgKyBzaXplb2YoQWNjb3VudElkKWAgYnl0ZXMuADREZXBvc2l0RmFjdG9yWQFAANQwAAAAAAAAAAAAAAAAAAxVASBUaGUgYW1vdW50IG9mIGN1cnJlbmN5IG5lZWRlZCBwZXIgdW5pdCB0aHJlc2hvbGQgd2hlbiBjcmVhdGluZyBhIG11bHRpc2lnIGV4ZWN1dGlvbi4AJQEgVGhpcyBpcyBoZWxkIGZvciBhZGRpbmcgMzIgYnl0ZXMgbW9yZSBpbnRvIGEgcHJlLWV4aXN0aW5nIHN0b3JhZ2UgdmFsdWUuADhNYXhTaWduYXRvcmllczgQZAAAAATsIFRoZSBtYXhpbXVtIGFtb3VudCBvZiBzaWduYXRvcmllcyBhbGxvd2VkIGluIHRoZSBtdWx0aXNpZy4AAXEMAAQsUnVudGltZUNhbGwgBGwgVGhlIG92ZXJhcmNoaW5nIGNhbGwgdHlwZS4AKQAAFFByb3h5ARRQcm94eQgcUHJveGllcwEBBAUEdQxEAAAAAAAAAAAAAAAAAAAAAAAIRQEgVGhlIHNldCBvZiBhY2NvdW50IHByb3hpZXMuIE1hcHMgdGhlIGFjY291bnQgd2hpY2ggaGFzIGRlbGVnYXRlZCB0byB0aGUgYWNjb3VudHMhASB3aGljaCBhcmUgYmVpbmcgZGVsZWdhdGVkIHRvLCB0b2dldGhlciB3aXRoIHRoZSBhbW91bnQgaGVsZCBvbiBkZXBvc2l0LgA0QW5ub3VuY2VtZW50cwEBBAUEhQxEAAAAAAAAAAAAAAAAAAAAAAAErCBUaGUgYW5ub3VuY2VtZW50cyBtYWRlIGJ5IHRoZSBwcm94eSAoa2V5KS4AATUEAAHlCAAYQFByb3h5RGVwb3NpdEJhc2VZAUAAnXJ3AAAAAAAAAAAAAAAAEBEBIFRoZSBiYXNlIGFtb3VudCBvZiBjdXJyZW5jeSBuZWVkZWQgdG8gcmVzZXJ2ZSBmb3IgY3JlYXRpbmcgYSBwcm94eS4AAQEgVGhpcyBpcyBoZWxkIGZvciBhbiBhZGRpdGlvbmFsIHN0b3JhZ2UgaXRlbSB3aG9zZSB2YWx1ZSBzaXplIGlzJQEgYHNpemVvZihCYWxhbmNlKWAgYnl0ZXMgYW5kIHdob3NlIGtleSBzaXplIGlzIGBzaXplb2YoQWNjb3VudElkKWAgYnl0ZXMuAEhQcm94eURlcG9zaXRGYWN0b3JZAUCgWjIAAAAAAAAAAAAAAAAAFLwgVGhlIGFtb3VudCBvZiBjdXJyZW5jeSBuZWVkZWQgcGVyIHByb3h5IGFkZGVkLgA1ASBUaGlzIGlzIGhlbGQgZm9yIGFkZGluZyAzMiBieXRlcyBwbHVzIGFuIGluc3RhbmNlIG9mIGBQcm94eVR5cGVgIG1vcmUgaW50byBhYQEgcHJlLWV4aXN0aW5nIHN0b3JhZ2UgdmFsdWUuIFRodXMsIHdoZW4gY29uZmlndXJpbmcgYFByb3h5RGVwb3NpdEZhY3RvcmAgb25lIHNob3VsZCB0YWtl9CBpbnRvIGFjY291bnQgYDMyICsgcHJveHlfdHlwZS5lbmNvZGUoKS5sZW4oKWAgYnl0ZXMgb2YgZGF0YS4AKE1heFByb3hpZXM4ECAAAAAE8CBUaGUgbWF4aW11bSBhbW91bnQgb2YgcHJveGllcyBhbGxvd2VkIGZvciBhIHNpbmdsZSBhY2NvdW50LgAoTWF4UGVuZGluZzgQIAAAAARFASBUaGUgbWF4aW11bSBhbW91bnQgb2YgdGltZS1kZWxheWVkIGFubm91bmNlbWVudHMgdGhhdCBhcmUgYWxsb3dlZCB0byBiZSBwZW5kaW5nLgBcQW5ub3VuY2VtZW50RGVwb3NpdEJhc2VZAUAA0n53AAAAAAAAAAAAAAAAEDEBIFRoZSBiYXNlIGFtb3VudCBvZiBjdXJyZW5jeSBuZWVkZWQgdG8gcmVzZXJ2ZSBmb3IgY3JlYXRpbmcgYW4gYW5ub3VuY2VtZW50LgBJASBUaGlzIGlzIGhlbGQgd2hlbiBhIG5ldyBzdG9yYWdlIGl0ZW0gaG9sZGluZyBhIGBCYWxhbmNlYCBpcyBjcmVhdGVkICh0eXBpY2FsbHkgMTYgIGJ5dGVzKS4AZEFubm91bmNlbWVudERlcG9zaXRGYWN0b3JZAUBAtWQAAAAAAAAAAAAAAAAAENQgVGhlIGFtb3VudCBvZiBjdXJyZW5jeSBuZWVkZWQgcGVyIGFubm91bmNlbWVudCBtYWRlLgBZASBUaGlzIGlzIGhlbGQgZm9yIGFkZGluZyBhbiBgQWNjb3VudElkYCwgYEhhc2hgIGFuZCBgQmxvY2tOdW1iZXJgICh0eXBpY2FsbHkgNjggYnl0ZXMpjCBpbnRvIGEgcHJlLWV4aXN0aW5nIHN0b3JhZ2UgdmFsdWUuAAGVDAAILFJ1bnRpbWVDYWxsIARsIFRoZSBvdmVyYXJjaGluZyBjYWxsIHR5cGUuJFByb3h5VHlwZT0EEFUBIEEga2luZCBvZiBwcm94eTsgc3BlY2lmaWVkIHdpdGggdGhlIHByb3h5IGFuZCBwYXNzZWQgaW4gdG8gdGhlIGBJc1Byb3h5YWJsZWAgZmlsdGVyLlEBIFRoZSBpbnN0YW5jZSBmaWx0ZXIgZGV0ZXJtaW5lcyB3aGV0aGVyIGEgZ2l2ZW4gY2FsbCBtYXkgYmUgcHJveGllZCB1bmRlciB0aGlzIHR5cGUuAE0BIElNUE9SVEFOVDogYERlZmF1bHRgIG11c3QgYmUgcHJvdmlkZWQgYW5kIE1VU1QgQkUgdGhlIHRoZSAqbW9zdCBwZXJtaXNzaXZlKiB2YWx1ZS4IGAnXg0Zyeg71jA+gO6+jI8vFFIjZKhqnE3sDv7UO/BdEY2hlY2tfcGVybWlzc2lvbnMIEGNhbGwgKHByb3h5X3R5cGU9BF0BBPQgQ2hlY2sgaWYgYSBgUnVudGltZUNhbGxgIGlzIGFsbG93ZWQgZm9yIGEgZ2l2ZW4gYFByb3h5VHlwZWAuABgJ14NGcnoO9YwPoDuvoyMXFLBgfWKvCjs7CtLF1VxYLGlzX3N1cGVyc2V0CCB0b19jaGVjaz0EHGFnYWluc3Q9BF0BBPQgQ2hlY2sgaWYgb25lIGBQcm94eVR5cGVgIGlzIGEgc3Vic2V0IG9mIGFub3RoZXIgYFByb3h5VHlwZWAuACoAABxJbmRpY2VzARxJbmRpY2VzBCBBY2NvdW50cwABBAI4mQwEAASIIFRoZSBsb29rdXAgZnJvbSBpbmRleCB0byBhY2NvdW50LgABQQQAAe0IAAQcRGVwb3NpdFkBQADSfncAAAAAAAAAAAAAAAAErCBUaGUgZGVwb3NpdCBuZWVkZWQgZm9yIHJlc2VydmluZyBhbiBpbmRleC4AAZ0MAAQwQWNjb3VudEluZGV4OAhVASBUeXBlIHVzZWQgZm9yIHN0b3JpbmcgYW4gYWNjb3VudCdzIGluZGV4OyBpbXBsaWVzIHRoZSBtYXhpbXVtIG51bWJlciBvZiBhY2NvdW50cyB0aGVEIHN5c3RlbSBjYW4gaG9sZC4AKwAAGEFzc2V0cwEYQXNzZXRzGBRBc3NldAABBAI4oQwEAARUIERldGFpbHMgb2YgYW4gYXNzZXQuABxBY2NvdW50AAEIAgKpDK0MBAAE5CBUaGUgaG9sZGluZ3Mgb2YgYSBzcGVjaWZpYyBhY2NvdW50IGZvciBhIHNwZWNpZmljIGFzc2V0LgAkQXBwcm92YWxzAAEMAgICuQy9DAQADFkBIEFwcHJvdmVkIGJhbGFuY2UgdHJhbnNmZXJzLiBGaXJzdCBiYWxhbmNlIGlzIHRoZSBhbW91bnQgYXBwcm92ZWQgZm9yIHRyYW5zZmVyLiBTZWNvbmToIGlzIHRoZSBhbW91bnQgb2YgYFQ6OkN1cnJlbmN5YCByZXNlcnZlZCBmb3Igc3RvcmluZyB0aGlzLkkBIEZpcnN0IGtleSBpcyB0aGUgYXNzZXQgSUQsIHNlY29uZCBrZXkgaXMgdGhlIG93bmVyIGFuZCB0aGlyZCBrZXkgaXMgdGhlIGRlbGVnYXRlLgAgTWV0YWRhdGEBAQQCOMEMUAAAAAAAAAAAAAAAAAAAAAAAAAAABFggTWV0YWRhdGEgb2YgYW4gYXNzZXQuACBSZXNlcnZlcwEBBAI4SQQEAAT8IE1hcHMgYW4gYXNzZXQgdG8gYSBsaXN0IG9mIGl0cyBjb25maWd1cmVkIHJlc2VydmUgaW5mb3JtYXRpb24uACxOZXh0QXNzZXRJZAAAOAQAJG0BIFRoZSBhc3NldCBJRCBlbmZvcmNlZCBmb3IgdGhlIG5leHQgYXNzZXQgY3JlYXRpb24sIGlmIGFueSBwcmVzZW50LiBPdGhlcndpc2UsIHRoaXMgc3RvcmFnZVAgaXRlbSBoYXMgbm8gZWZmZWN0LgBlASBUaGlzIGNhbiBiZSB1c2VmdWwgZm9yIHNldHRpbmcgdXAgY29uc3RyYWludHMgZm9yIElEcyBvZiB0aGUgbmV3IGFzc2V0cy4gRm9yIGV4YW1wbGUsIGJ5aQEgcHJvdmlkaW5nIGFuIGluaXRpYWwgW2BOZXh0QXNzZXRJZGBdIGFuZCB1c2luZyB0aGUgW2BjcmF0ZTo6QXV0b0luY0Fzc2V0SWRgXSBjYWxsYmFjaywgYW7oIGF1dG8taW5jcmVtZW50IG1vZGVsIGNhbiBiZSBhcHBsaWVkIHRvIGFsbCBuZXcgYXNzZXQgSURzLgAhASBUaGUgaW5pdGlhbCBuZXh0IGFzc2V0IElEIGNhbiBiZSBzZXQgdXNpbmcgdGhlIFtgR2VuZXNpc0NvbmZpZ2BdIG9yIHRoZSEBIFtTZXROZXh0QXNzZXRJZF0oYG1pZ3JhdGlvbjo6bmV4dF9hc3NldF9pZDo6U2V0TmV4dEFzc2V0SWRgKSBtaWdyYXRpb24uAAFFBAAB8QgAHEBSZW1vdmVJdGVtc0xpbWl0OBDoAwAADFEBIE1heCBudW1iZXIgb2YgaXRlbXMgdG8gZGVzdHJveSBwZXIgYGRlc3Ryb3lfYWNjb3VudHNgIGFuZCBgZGVzdHJveV9hcHByb3ZhbHNgIGNhbGwuADkBIE11c3QgYmUgY29uZmlndXJlZCB0byByZXN1bHQgaW4gYSB3ZWlnaHQgdGhhdCBtYWtlcyBlYWNoIGNhbGwgZml0IGluIGEgYmxvY2suADBBc3NldERlcG9zaXRZAUDAfld4AAAAAAAAAAAAAAAABPggVGhlIGJhc2ljIGFtb3VudCBvZiBmdW5kcyB0aGF0IG11c3QgYmUgcmVzZXJ2ZWQgZm9yIGFuIGFzc2V0LgBMQXNzZXRBY2NvdW50RGVwb3NpdFkBQAD+TXcAAAAAAAAAAAAAAAAIRQEgVGhlIGFtb3VudCBvZiBmdW5kcyB0aGF0IG11c3QgYmUgcmVzZXJ2ZWQgZm9yIGEgbm9uLXByb3ZpZGVyIGFzc2V0IGFjY291bnQgdG8gYmUwIG1haW50YWluZWQuAExNZXRhZGF0YURlcG9zaXRCYXNlWQFAgFaddwAAAAAAAAAAAAAAAARRASBUaGUgYmFzaWMgYW1vdW50IG9mIGZ1bmRzIHRoYXQgbXVzdCBiZSByZXNlcnZlZCB3aGVuIGFkZGluZyBtZXRhZGF0YSB0byB5b3VyIGFzc2V0LgBYTWV0YWRhdGFEZXBvc2l0UGVyQnl0ZVkBQKCGAQAAAAAAAAAAAAAAAAAIVQEgVGhlIGFkZGl0aW9uYWwgZnVuZHMgdGhhdCBtdXN0IGJlIHJlc2VydmVkIGZvciB0aGUgbnVtYmVyIG9mIGJ5dGVzIHlvdSBzdG9yZSBpbiB5b3VyKCBtZXRhZGF0YS4APEFwcHJvdmFsRGVwb3NpdFkBQADh9QUAAAAAAAAAAAAAAAAEIQEgVGhlIGFtb3VudCBvZiBmdW5kcyB0aGF0IG11c3QgYmUgcmVzZXJ2ZWQgd2hlbiBjcmVhdGluZyBhIG5ldyBhcHByb3ZhbC4ALFN0cmluZ0xpbWl0OBAyAAAABOAgVGhlIG1heGltdW0gbGVuZ3RoIG9mIGEgbmFtZSBvciBzeW1ib2wgc3RvcmVkIG9uLWNoYWluLgAByQwAFBxCYWxhbmNlWQEEnCBUaGUgdW5pdHMgaW4gd2hpY2ggd2UgcmVjb3JkIGJhbGFuY2VzLhxBc3NldElkOASMIElkZW50aWZpZXIgZm9yIHRoZSBjbGFzcyBvZiBhc3NldC5AQXNzZXRJZFBhcmFtZXRlcmQcWQEgV3JhcHBlciBhcm91bmQgYFNlbGY6OkFzc2V0SWRgIHRvIHVzZSBpbiBkaXNwYXRjaGFibGUgY2FsbCBzaWduYXR1cmVzLiBBbGxvd3MgdGhlIHVzZVEBIG9mIGNvbXBhY3QgZW5jb2RpbmcgaW4gaW5zdGFuY2VzIG9mIHRoZSBwYWxsZXQsIHdoaWNoIHdpbGwgcHJldmVudCBicmVha2luZyBjaGFuZ2VzBQEgcmVzdWx0aW5nIGZyb20gdGhlIHJlbW92YWwgb2YgYEhhc0NvbXBhY3RgIGZyb20gYFNlbGY6OkFzc2V0SWRgLgBZASBUaGlzIHR5cGUgaW5jbHVkZXMgdGhlIGBGcm9tPFNlbGY6OkFzc2V0SWQ+YCBib3VuZCwgc2luY2UgdGlnaHRseSBjb3VwbGVkIHBhbGxldHMgbWF5RQEgd2FudCB0byBjb252ZXJ0IGFuIGBBc3NldElkYCBpbnRvIGEgcGFyYW1ldGVyIGZvciBjYWxsaW5nIGRpc3BhdGNoYWJsZSBmdW5jdGlvbnMoIGRpcmVjdGx5LixSZXNlcnZlRGF0YRAE6CBJbmZvcm1hdGlvbiBhYm91dCByZXNlcnZlIGxvY2F0aW9ucyBmb3IgYSBjbGFzcyBvZiBhc3NldC4URXh0cmEQBPggQWRkaXRpb25hbCBkYXRhIHRvIGJlIHN0b3JlZCB3aXRoIGFuIGFjY291bnQncyBhc3NldCBiYWxhbmNlLhBoKlnVGrnkioyMxBj/lwjSpwKXrQtL3T2kt0YpplpuXDRhc3NldF9kZXRhaWxzBAhpZDjNDASoIFByb3ZpZGUgdGhlIGFzc2V0IGRldGFpbHMgZm9yIGFzc2V0IGBpZGAuAGgqWdUaueSKjIzEGP+XCNJTGsfiG3axIedh5HNBmhsCKGJhbGFuY2Vfb2YIDHdobwQIaWQ4ZQQEtCBQcm92aWRlIHRoZSBiYWxhbmNlIG9mIGB3aG9gIGZvciBhc3NldCBgaWRgLgBoKlnVGrnkioyMxBj/lwjSLodmpA0badYVG9gB5XVQXjBnZXRfbWV0YWRhdGEECGlkONEMBMAgUHJvdmlkZSB0aGUgY29uZmlndXJlZCBtZXRhZGF0YSBmb3IgYXNzZXQgYGlkYC4AaCpZ1Rq55IqMjMQY/5cI0mT2Pykj45goJDFjga4eaYZEZ2V0X3Jlc2VydmVzX2RhdGEECGlkOE0EBNQgUHJvdmlkZSB0aGUgY29uZmlndXJlZCByZXNlcnZlcyBkYXRhIGZvciBhc3NldCBgaWRgLgAyAAAcVW5pcXVlcwEcVW5pcXVlcygUQ2xhc3MAAQQCONUMBAAEZCBEZXRhaWxzIG9mIGEgY29sbGVjdGlvbi4ATE93bmVyc2hpcEFjY2VwdGFuY2UAAQQCBDgEAAQpASBUaGUgY29sbGVjdGlvbiwgaWYgYW55LCBvZiB3aGljaCBhbiBhY2NvdW50IGlzIHdpbGxpbmcgdG8gdGFrZSBvd25lcnNoaXAuABxBY2NvdW50AAEMAgIC2QwQBAAIWQEgVGhlIGl0ZW1zIGhlbGQgYnkgYW55IGdpdmVuIGFjY291bnQ7IHNldCBvdXQgdGhpcyB3YXkgc28gdGhhdCBpdGVtcyBvd25lZCBieSBhIHNpbmdsZWwgYWNjb3VudCBjYW4gYmUgZW51bWVyYXRlZC4AMENsYXNzQWNjb3VudAABCAICjQUQBAAIaQEgVGhlIGNvbGxlY3Rpb25zIG93bmVkIGJ5IGFueSBnaXZlbiBhY2NvdW50OyBzZXQgb3V0IHRoaXMgd2F5IHNvIHRoYXQgY29sbGVjdGlvbnMgb3duZWQgYnmQIGEgc2luZ2xlIGFjY291bnQgY2FuIGJlIGVudW1lcmF0ZWQuABRBc3NldAABCAIC0N0MBAAE0CBUaGUgaXRlbXMgaW4gZXhpc3RlbmNlIGFuZCB0aGVpciBvd25lcnNoaXAgZGV0YWlscy4APENsYXNzTWV0YWRhdGFPZgABBAI44QwEAARoIE1ldGFkYXRhIG9mIGEgY29sbGVjdGlvbi4ASEluc3RhbmNlTWV0YWRhdGFPZgABCAIC0OUMBAAEVCBNZXRhZGF0YSBvZiBhbiBpdGVtLgAkQXR0cmlidXRlAAEMAgIC6QztDAQABHAgQXR0cmlidXRlcyBvZiBhIGNvbGxlY3Rpb24uACxJdGVtUHJpY2VPZgABCAIC0PEMBAAEcCBQcmljZSBvZiBhbiBhc3NldCBpbnN0YW5jZS4ATENvbGxlY3Rpb25NYXhTdXBwbHkAAQQCODgEAATwIEtlZXBzIHRyYWNrIG9mIHRoZSBudW1iZXIgb2YgaXRlbXMgYSBjb2xsZWN0aW9uIG1pZ2h0IGhhdmUuAAFRBAAB9QgAIERDb2xsZWN0aW9uRGVwb3NpdFkBQADodkgXAAAAAAAAAAAAAAAEAQEgVGhlIGJhc2ljIGFtb3VudCBvZiBmdW5kcyB0aGF0IG11c3QgYmUgcmVzZXJ2ZWQgZm9yIGNvbGxlY3Rpb24uACxJdGVtRGVwb3NpdFkBQADh9QUAAAAAAAAAAAAAAAAE9CBUaGUgYmFzaWMgYW1vdW50IG9mIGZ1bmRzIHRoYXQgbXVzdCBiZSByZXNlcnZlZCBmb3IgYW4gaXRlbS4ATE1ldGFkYXRhRGVwb3NpdEJhc2VZAUCgavp3AAAAAAAAAAAAAAAABE0BIFRoZSBiYXNpYyBhbW91bnQgb2YgZnVuZHMgdGhhdCBtdXN0IGJlIHJlc2VydmVkIHdoZW4gYWRkaW5nIG1ldGFkYXRhIHRvIHlvdXIgaXRlbS4AUEF0dHJpYnV0ZURlcG9zaXRCYXNlWQFAAJQ1dwAAAAAAAAAAAAAAAARVASBUaGUgYmFzaWMgYW1vdW50IG9mIGZ1bmRzIHRoYXQgbXVzdCBiZSByZXNlcnZlZCB3aGVuIGFkZGluZyBhbiBhdHRyaWJ1dGUgdG8gYW4gaXRlbS4AOERlcG9zaXRQZXJCeXRlWQFAoIYBAAAAAAAAAAAAAAAAAAhZASBUaGUgYWRkaXRpb25hbCBmdW5kcyB0aGF0IG11c3QgYmUgcmVzZXJ2ZWQgZm9yIHRoZSBudW1iZXIgb2YgYnl0ZXMgc3RvcmUgaW4gbWV0YWRhdGEswCBlaXRoZXIgIm5vcm1hbCIgbWV0YWRhdGEgb3IgYXR0cmlidXRlIG1ldGFkYXRhLgAsU3RyaW5nTGltaXQ4EIAAAAAEsCBUaGUgbWF4aW11bSBsZW5ndGggb2YgZGF0YSBzdG9yZWQgb24tY2hhaW4uACBLZXlMaW1pdDgQIAAAAASgIFRoZSBtYXhpbXVtIGxlbmd0aCBvZiBhbiBhdHRyaWJ1dGUga2V5LgAoVmFsdWVMaW1pdDgQQAAAAASoIFRoZSBtYXhpbXVtIGxlbmd0aCBvZiBhbiBhdHRyaWJ1dGUgdmFsdWUuAAH1DAAIMENvbGxlY3Rpb25JZDgEnCBJZGVudGlmaWVyIGZvciB0aGUgY29sbGVjdGlvbiBvZiBpdGVtLhhJdGVtSWQ4BPQgVGhlIHR5cGUgdXNlZCB0byBpZGVudGlmeSBhIHVuaXF1ZSBpdGVtIHdpdGhpbiBhIGNvbGxlY3Rpb24uADMAABBOZnRzARBOZnRzPChDb2xsZWN0aW9uAAEEAjj5DAQABGQgRGV0YWlscyBvZiBhIGNvbGxlY3Rpb24uAExPd25lcnNoaXBBY2NlcHRhbmNlAAEEAgQ4BAAEKQEgVGhlIGNvbGxlY3Rpb24sIGlmIGFueSwgb2Ygd2hpY2ggYW4gYWNjb3VudCBpcyB3aWxsaW5nIHRvIHRha2Ugb3duZXJzaGlwLgAcQWNjb3VudAABDAICAtkMEAQACFkBIFRoZSBpdGVtcyBoZWxkIGJ5IGFueSBnaXZlbiBhY2NvdW50OyBzZXQgb3V0IHRoaXMgd2F5IHNvIHRoYXQgaXRlbXMgb3duZWQgYnkgYSBzaW5nbGVsIGFjY291bnQgY2FuIGJlIGVudW1lcmF0ZWQuAERDb2xsZWN0aW9uQWNjb3VudAABCAICjQUQBAAIaQEgVGhlIGNvbGxlY3Rpb25zIG93bmVkIGJ5IGFueSBnaXZlbiBhY2NvdW50OyBzZXQgb3V0IHRoaXMgd2F5IHNvIHRoYXQgY29sbGVjdGlvbnMgb3duZWQgYnmQIGEgc2luZ2xlIGFjY291bnQgY2FuIGJlIGVudW1lcmF0ZWQuAEBDb2xsZWN0aW9uUm9sZU9mAAEIAgKpDP0MBAAI0CBUaGUgaXRlbXMgaW4gZXhpc3RlbmNlIGFuZCB0aGVpciBvd25lcnNoaXAgZGV0YWlscy6gIFN0b3JlcyBjb2xsZWN0aW9uIHJvbGVzIGFzIHBlciBhY2NvdW50LgAQSXRlbQABCAIC0AUNBAAE0CBUaGUgaXRlbXMgaW4gZXhpc3RlbmNlIGFuZCB0aGVpciBvd25lcnNoaXAgZGV0YWlscy4AUENvbGxlY3Rpb25NZXRhZGF0YU9mAAEEAjgdDQQABGggTWV0YWRhdGEgb2YgYSBjb2xsZWN0aW9uLgA4SXRlbU1ldGFkYXRhT2YAAQgCAtAhDQQABFQgTWV0YWRhdGEgb2YgYW4gaXRlbS4AJEF0dHJpYnV0ZQABEAICAgIpDS0NBAAEcCBBdHRyaWJ1dGVzIG9mIGEgY29sbGVjdGlvbi4ALEl0ZW1QcmljZU9mAAEIAgLQ8QwEAARQIEEgcHJpY2Ugb2YgYW4gaXRlbS4AZEl0ZW1BdHRyaWJ1dGVzQXBwcm92YWxzT2YBAQgCAtA1DQQABGggSXRlbSBhdHRyaWJ1dGUgYXBwcm92YWxzLgBATmV4dENvbGxlY3Rpb25JZAAAOAQACDEBIFN0b3JlcyB0aGUgYENvbGxlY3Rpb25JZGAgdGhhdCBpcyBnb2luZyB0byBiZSB1c2VkIGZvciB0aGUgbmV4dCBjb2xsZWN0aW9uLvAgVGhpcyBnZXRzIGluY3JlbWVudGVkIHdoZW5ldmVyIGEgbmV3IGNvbGxlY3Rpb24gaXMgY3JlYXRlZC4ANFBlbmRpbmdTd2FwT2YAAQgCAtA9DQQABHwgSGFuZGxlcyBhbGwgdGhlIHBlbmRpbmcgc3dhcHMuAEhDb2xsZWN0aW9uQ29uZmlnT2YAAQQCOG0EBAAEYCBDb25maWcgb2YgYSBjb2xsZWN0aW9uLgAwSXRlbUNvbmZpZ09mAAEIAgLQlQQEAARMIENvbmZpZyBvZiBhbiBpdGVtLgABaQQAAfkIADhEQ29sbGVjdGlvbkRlcG9zaXRZAUBA8ft3AAAAAAAAAAAAAAAABAEBIFRoZSBiYXNpYyBhbW91bnQgb2YgZnVuZHMgdGhhdCBtdXN0IGJlIHJlc2VydmVkIGZvciBjb2xsZWN0aW9uLgAsSXRlbURlcG9zaXRZAUAQMgEDAAAAAAAAAAAAAAAABPQgVGhlIGJhc2ljIGFtb3VudCBvZiBmdW5kcyB0aGF0IG11c3QgYmUgcmVzZXJ2ZWQgZm9yIGFuIGl0ZW0uAExNZXRhZGF0YURlcG9zaXRCYXNlWQFAEHH/CwAAAAAAAAAAAAAAAARNASBUaGUgYmFzaWMgYW1vdW50IG9mIGZ1bmRzIHRoYXQgbXVzdCBiZSByZXNlcnZlZCB3aGVuIGFkZGluZyBtZXRhZGF0YSB0byB5b3VyIGl0ZW0uAFBBdHRyaWJ1dGVEZXBvc2l0QmFzZVkBQADC6wsAAAAAAAAAAAAAAAAEVQEgVGhlIGJhc2ljIGFtb3VudCBvZiBmdW5kcyB0aGF0IG11c3QgYmUgcmVzZXJ2ZWQgd2hlbiBhZGRpbmcgYW4gYXR0cmlidXRlIHRvIGFuIGl0ZW0uADhEZXBvc2l0UGVyQnl0ZVkBQKCGAQAAAAAAAAAAAAAAAAAIWQEgVGhlIGFkZGl0aW9uYWwgZnVuZHMgdGhhdCBtdXN0IGJlIHJlc2VydmVkIGZvciB0aGUgbnVtYmVyIG9mIGJ5dGVzIHN0b3JlIGluIG1ldGFkYXRhLMAgZWl0aGVyICJub3JtYWwiIG1ldGFkYXRhIG9yIGF0dHJpYnV0ZSBtZXRhZGF0YS4ALFN0cmluZ0xpbWl0OBAAAQAABLAgVGhlIG1heGltdW0gbGVuZ3RoIG9mIGRhdGEgc3RvcmVkIG9uLWNoYWluLgAgS2V5TGltaXQ4EEAAAAAEoCBUaGUgbWF4aW11bSBsZW5ndGggb2YgYW4gYXR0cmlidXRlIGtleS4AKFZhbHVlTGltaXQ4EAABAAAEqCBUaGUgbWF4aW11bSBsZW5ndGggb2YgYW4gYXR0cmlidXRlIHZhbHVlLgA4QXBwcm92YWxzTGltaXQ4EBQAAAAEqCBUaGUgbWF4aW11bSBhcHByb3ZhbHMgYW4gaXRlbSBjb3VsZCBoYXZlLgBwSXRlbUF0dHJpYnV0ZXNBcHByb3ZhbHNMaW1pdDgQHgAAAATUIFRoZSBtYXhpbXVtIGF0dHJpYnV0ZXMgYXBwcm92YWxzIGFuIGl0ZW0gY291bGQgaGF2ZS4AHE1heFRpcHM4EAoAAAAEqCBUaGUgbWF4IG51bWJlciBvZiB0aXBzIGEgdXNlciBjb3VsZCBzZW5kLgBMTWF4RGVhZGxpbmVEdXJhdGlvbjgQABpPAASoIFRoZSBtYXggZHVyYXRpb24gaW4gYmxvY2tzIGZvciBkZWFkbGluZXMuAFBNYXhBdHRyaWJ1dGVzUGVyQ2FsbDgQCgAAAATgIFRoZSBtYXggbnVtYmVyIG9mIGF0dHJpYnV0ZXMgYSB1c2VyIGNvdWxkIHNldCBwZXIgY2FsbC4AIEZlYXR1cmVzQQ0gAAAAAAAAAAAEkCBEaXNhYmxlcyBzb21lIG9mIHBhbGxldCdzIGZlYXR1cmVzLgABSQ0ADDBDb2xsZWN0aW9uSWQ4JJwgSWRlbnRpZmllciBmb3IgdGhlIGNvbGxlY3Rpb24gb2YgaXRlbS4ASQEgU0FGRVRZOiBUaGUgZnVuY3Rpb25zIGluIHRoZSBgSW5jcmVtZW50YWJsZWAgdHJhaXQgYXJlIGZhbGxpYmxlLiBJZiB0aGUgZnVuY3Rpb25zQQEgb2YgdGhlIGltcGxlbWVudGF0aW9uIGJvdGggcmV0dXJuIGBOb25lYCwgdGhlIGF1dG9tYXRpYyBDb2xsZWN0aW9uSWQgZ2VuZXJhdGlvbikBIHNob3VsZCBub3QgYmUgdXNlZC4gU28gdGhlIGBjcmVhdGVgIGFuZCBgZm9yY2VfY3JlYXRlYCBleHRyaW5zaWNzIGFuZCB0aGVNASBgY3JlYXRlX2NvbGxlY3Rpb25gIGZ1bmN0aW9uIHdpbGwgcmV0dXJuIGFuIGBVbmtub3duQ29sbGVjdGlvbmAgRXJyb3IuIEluc3RlYWQgdXNlQQEgdGhlIGBjcmVhdGVfY29sbGVjdGlvbl93aXRoX2lkYCBmdW5jdGlvbi4gSG93ZXZlciwgaWYgdGhlIGBJbmNyZW1lbnRhYmxlYCB0cmFpdEkBIGltcGxlbWVudGF0aW9uIGhhcyBhbiBpbmNyZW1lbnRhbCBvcmRlciwgdGhlIGBjcmVhdGVfY29sbGVjdGlvbl93aXRoX2lkYCBmdW5jdGlvbvwgc2hvdWxkIG5vdCBiZSB1c2VkIGFzIGl0IGNhbiBjbGFpbSBhIHZhbHVlIGluIHRoZSBJRCBzZXF1ZW5jZS4YSXRlbUlkOAT0IFRoZSB0eXBlIHVzZWQgdG8gaWRlbnRpZnkgYSB1bmlxdWUgaXRlbSB3aXRoaW4gYSBjb2xsZWN0aW9uLkRPZmZjaGFpblNpZ25hdHVyZb0EDGggT2ZmLUNoYWluIHNpZ25hdHVyZSB0eXBlLgAJASBDYW4gdmVyaWZ5IHdoZXRoZXIgYW4gYFNlbGY6Ok9mZmNoYWluUHVibGljYCBjcmVhdGVkIGEgc2lnbmF0dXJlLgA0AAA0Rm9yZWlnbkFzc2V0cwE0Rm9yZWlnbkFzc2V0cxgUQXNzZXQAAQQCHQKhDAQABFQgRGV0YWlscyBvZiBhbiBhc3NldC4AHEFjY291bnQAAQgCAk0NrQwEAATkIFRoZSBob2xkaW5ncyBvZiBhIHNwZWNpZmljIGFjY291bnQgZm9yIGEgc3BlY2lmaWMgYXNzZXQuACRBcHByb3ZhbHMAAQwCAgJRDb0MBAAMWQEgQXBwcm92ZWQgYmFsYW5jZSB0cmFuc2ZlcnMuIEZpcnN0IGJhbGFuY2UgaXMgdGhlIGFtb3VudCBhcHByb3ZlZCBmb3IgdHJhbnNmZXIuIFNlY29uZOggaXMgdGhlIGFtb3VudCBvZiBgVDo6Q3VycmVuY3lgIHJlc2VydmVkIGZvciBzdG9yaW5nIHRoaXMuSQEgRmlyc3Qga2V5IGlzIHRoZSBhc3NldCBJRCwgc2Vjb25kIGtleSBpcyB0aGUgb3duZXIgYW5kIHRoaXJkIGtleSBpcyB0aGUgZGVsZWdhdGUuACBNZXRhZGF0YQEBBAIdAlUNUAAAAAAAAAAAAAAAAAAAAAAAAAAABFggTWV0YWRhdGEgb2YgYW4gYXNzZXQuACBSZXNlcnZlcwEBBAIdAs0EBAAE/CBNYXBzIGFuIGFzc2V0IHRvIGEgbGlzdCBvZiBpdHMgY29uZmlndXJlZCByZXNlcnZlIGluZm9ybWF0aW9uLgAsTmV4dEFzc2V0SWQAAB0CBAAkbQEgVGhlIGFzc2V0IElEIGVuZm9yY2VkIGZvciB0aGUgbmV4dCBhc3NldCBjcmVhdGlvbiwgaWYgYW55IHByZXNlbnQuIE90aGVyd2lzZSwgdGhpcyBzdG9yYWdlUCBpdGVtIGhhcyBubyBlZmZlY3QuAGUBIFRoaXMgY2FuIGJlIHVzZWZ1bCBmb3Igc2V0dGluZyB1cCBjb25zdHJhaW50cyBmb3IgSURzIG9mIHRoZSBuZXcgYXNzZXRzLiBGb3IgZXhhbXBsZSwgYnlpASBwcm92aWRpbmcgYW4gaW5pdGlhbCBbYE5leHRBc3NldElkYF0gYW5kIHVzaW5nIHRoZSBbYGNyYXRlOjpBdXRvSW5jQXNzZXRJZGBdIGNhbGxiYWNrLCBhbuggYXV0by1pbmNyZW1lbnQgbW9kZWwgY2FuIGJlIGFwcGxpZWQgdG8gYWxsIG5ldyBhc3NldCBJRHMuACEBIFRoZSBpbml0aWFsIG5leHQgYXNzZXQgSUQgY2FuIGJlIHNldCB1c2luZyB0aGUgW2BHZW5lc2lzQ29uZmlnYF0gb3IgdGhlIQEgW1NldE5leHRBc3NldElkXShgbWlncmF0aW9uOjpuZXh0X2Fzc2V0X2lkOjpTZXROZXh0QXNzZXRJZGApIG1pZ3JhdGlvbi4AAckEAAEBCQAcQFJlbW92ZUl0ZW1zTGltaXQ4EOgDAAAMUQEgTWF4IG51bWJlciBvZiBpdGVtcyB0byBkZXN0cm95IHBlciBgZGVzdHJveV9hY2NvdW50c2AgYW5kIGBkZXN0cm95X2FwcHJvdmFsc2AgY2FsbC4AOQEgTXVzdCBiZSBjb25maWd1cmVkIHRvIHJlc3VsdCBpbiBhIHdlaWdodCB0aGF0IG1ha2VzIGVhY2ggY2FsbCBmaXQgaW4gYSBibG9jay4AMEFzc2V0RGVwb3NpdFkBQMB+V3gAAAAAAAAAAAAAAAAE+CBUaGUgYmFzaWMgYW1vdW50IG9mIGZ1bmRzIHRoYXQgbXVzdCBiZSByZXNlcnZlZCBmb3IgYW4gYXNzZXQuAExBc3NldEFjY291bnREZXBvc2l0WQFAAP5NdwAAAAAAAAAAAAAAAAhFASBUaGUgYW1vdW50IG9mIGZ1bmRzIHRoYXQgbXVzdCBiZSByZXNlcnZlZCBmb3IgYSBub24tcHJvdmlkZXIgYXNzZXQgYWNjb3VudCB0byBiZTAgbWFpbnRhaW5lZC4ATE1ldGFkYXRhRGVwb3NpdEJhc2VZAUCAVp13AAAAAAAAAAAAAAAABFEBIFRoZSBiYXNpYyBhbW91bnQgb2YgZnVuZHMgdGhhdCBtdXN0IGJlIHJlc2VydmVkIHdoZW4gYWRkaW5nIG1ldGFkYXRhIHRvIHlvdXIgYXNzZXQuAFhNZXRhZGF0YURlcG9zaXRQZXJCeXRlWQFAoIYBAAAAAAAAAAAAAAAAAAhVASBUaGUgYWRkaXRpb25hbCBmdW5kcyB0aGF0IG11c3QgYmUgcmVzZXJ2ZWQgZm9yIHRoZSBudW1iZXIgb2YgYnl0ZXMgeW91IHN0b3JlIGluIHlvdXIoIG1ldGFkYXRhLgA8QXBwcm92YWxEZXBvc2l0WQFAAOH1BQAAAAAAAAAAAAAAAAQhASBUaGUgYW1vdW50IG9mIGZ1bmRzIHRoYXQgbXVzdCBiZSByZXNlcnZlZCB3aGVuIGNyZWF0aW5nIGEgbmV3IGFwcHJvdmFsLgAsU3RyaW5nTGltaXQ4EDIAAAAE4CBUaGUgbWF4aW11bSBsZW5ndGggb2YgYSBuYW1lIG9yIHN5bWJvbCBzdG9yZWQgb24tY2hhaW4uAAFdDQAUHEJhbGFuY2VZAQScIFRoZSB1bml0cyBpbiB3aGljaCB3ZSByZWNvcmQgYmFsYW5jZXMuHEFzc2V0SWQdAgSMIElkZW50aWZpZXIgZm9yIHRoZSBjbGFzcyBvZiBhc3NldC5AQXNzZXRJZFBhcmFtZXRlch0CHFkBIFdyYXBwZXIgYXJvdW5kIGBTZWxmOjpBc3NldElkYCB0byB1c2UgaW4gZGlzcGF0Y2hhYmxlIGNhbGwgc2lnbmF0dXJlcy4gQWxsb3dzIHRoZSB1c2VRASBvZiBjb21wYWN0IGVuY29kaW5nIGluIGluc3RhbmNlcyBvZiB0aGUgcGFsbGV0LCB3aGljaCB3aWxsIHByZXZlbnQgYnJlYWtpbmcgY2hhbmdlcwUBIHJlc3VsdGluZyBmcm9tIHRoZSByZW1vdmFsIG9mIGBIYXNDb21wYWN0YCBmcm9tIGBTZWxmOjpBc3NldElkYC4AWQEgVGhpcyB0eXBlIGluY2x1ZGVzIHRoZSBgRnJvbTxTZWxmOjpBc3NldElkPmAgYm91bmQsIHNpbmNlIHRpZ2h0bHkgY291cGxlZCBwYWxsZXRzIG1heUUBIHdhbnQgdG8gY29udmVydCBhbiBgQXNzZXRJZGAgaW50byBhIHBhcmFtZXRlciBmb3IgY2FsbGluZyBkaXNwYXRjaGFibGUgZnVuY3Rpb25zKCBkaXJlY3RseS4sUmVzZXJ2ZURhdGHRBAToIEluZm9ybWF0aW9uIGFib3V0IHJlc2VydmUgbG9jYXRpb25zIGZvciBhIGNsYXNzIG9mIGFzc2V0LhRFeHRyYRAE+CBBZGRpdGlvbmFsIGRhdGEgdG8gYmUgc3RvcmVkIHdpdGggYW4gYWNjb3VudCdzIGFzc2V0IGJhbGFuY2UuEDDmSlYCb0tePC0ZYoOpoX2nApetC0vdPaS3RimmWm5cNGFzc2V0X2RldGFpbHMECGlkHQLNDASoIFByb3ZpZGUgdGhlIGFzc2V0IGRldGFpbHMgZm9yIGFzc2V0IGBpZGAuADDmSlYCb0tePC0ZYoOpoX1TGsfiG3axIedh5HNBmhsCKGJhbGFuY2Vfb2YIDHdobwQIaWQdAmUEBLQgUHJvdmlkZSB0aGUgYmFsYW5jZSBvZiBgd2hvYCBmb3IgYXNzZXQgYGlkYC4AMOZKVgJvS148LRlig6mhfS6HZqQNG2nWFRvYAeV1UF4wZ2V0X21ldGFkYXRhBAhpZB0CYQ0EwCBQcm92aWRlIHRoZSBjb25maWd1cmVkIG1ldGFkYXRhIGZvciBhc3NldCBgaWRgLgAw5kpWAm9LXjwtGWKDqaF9ZPY/KSPjmCgkMWOBrh5phkRnZXRfcmVzZXJ2ZXNfZGF0YQQIaWQdAtUEBNQgUHJvdmlkZSB0aGUgY29uZmlndXJlZCByZXNlcnZlcyBkYXRhIGZvciBhc3NldCBgaWRgLgA1AAAoUG9vbEFzc2V0cwEoUG9vbEFzc2V0cxgUQXNzZXQAAQQCOKEMBAAEVCBEZXRhaWxzIG9mIGFuIGFzc2V0LgAcQWNjb3VudAABCAICqQytDAQABOQgVGhlIGhvbGRpbmdzIG9mIGEgc3BlY2lmaWMgYWNjb3VudCBmb3IgYSBzcGVjaWZpYyBhc3NldC4AJEFwcHJvdmFscwABDAICArkMvQwEAAxZASBBcHByb3ZlZCBiYWxhbmNlIHRyYW5zZmVycy4gRmlyc3QgYmFsYW5jZSBpcyB0aGUgYW1vdW50IGFwcHJvdmVkIGZvciB0cmFuc2Zlci4gU2Vjb25k6CBpcyB0aGUgYW1vdW50IG9mIGBUOjpDdXJyZW5jeWAgcmVzZXJ2ZWQgZm9yIHN0b3JpbmcgdGhpcy5JASBGaXJzdCBrZXkgaXMgdGhlIGFzc2V0IElELCBzZWNvbmQga2V5IGlzIHRoZSBvd25lciBhbmQgdGhpcmQga2V5IGlzIHRoZSBkZWxlZ2F0ZS4AIE1ldGFkYXRhAQEEAjhlDVAAAAAAAAAAAAAAAAAAAAAAAAAAAARYIE1ldGFkYXRhIG9mIGFuIGFzc2V0LgAgUmVzZXJ2ZXMBAQQCOEkEBAAE/CBNYXBzIGFuIGFzc2V0IHRvIGEgbGlzdCBvZiBpdHMgY29uZmlndXJlZCByZXNlcnZlIGluZm9ybWF0aW9uLgAsTmV4dEFzc2V0SWQAADgEACRtASBUaGUgYXNzZXQgSUQgZW5mb3JjZWQgZm9yIHRoZSBuZXh0IGFzc2V0IGNyZWF0aW9uLCBpZiBhbnkgcHJlc2VudC4gT3RoZXJ3aXNlLCB0aGlzIHN0b3JhZ2VQIGl0ZW0gaGFzIG5vIGVmZmVjdC4AZQEgVGhpcyBjYW4gYmUgdXNlZnVsIGZvciBzZXR0aW5nIHVwIGNvbnN0cmFpbnRzIGZvciBJRHMgb2YgdGhlIG5ldyBhc3NldHMuIEZvciBleGFtcGxlLCBieWkBIHByb3ZpZGluZyBhbiBpbml0aWFsIFtgTmV4dEFzc2V0SWRgXSBhbmQgdXNpbmcgdGhlIFtgY3JhdGU6OkF1dG9JbmNBc3NldElkYF0gY2FsbGJhY2ssIGFu6CBhdXRvLWluY3JlbWVudCBtb2RlbCBjYW4gYmUgYXBwbGllZCB0byBhbGwgbmV3IGFzc2V0IElEcy4AIQEgVGhlIGluaXRpYWwgbmV4dCBhc3NldCBJRCBjYW4gYmUgc2V0IHVzaW5nIHRoZSBbYEdlbmVzaXNDb25maWdgXSBvciB0aGUhASBbU2V0TmV4dEFzc2V0SWRdKGBtaWdyYXRpb246Om5leHRfYXNzZXRfaWQ6OlNldE5leHRBc3NldElkYCkgbWlncmF0aW9uLgAB2QQAAQUJABxAUmVtb3ZlSXRlbXNMaW1pdDgQ6AMAAAxRASBNYXggbnVtYmVyIG9mIGl0ZW1zIHRvIGRlc3Ryb3kgcGVyIGBkZXN0cm95X2FjY291bnRzYCBhbmQgYGRlc3Ryb3lfYXBwcm92YWxzYCBjYWxsLgA5ASBNdXN0IGJlIGNvbmZpZ3VyZWQgdG8gcmVzdWx0IGluIGEgd2VpZ2h0IHRoYXQgbWFrZXMgZWFjaCBjYWxsIGZpdCBpbiBhIGJsb2NrLgAwQXNzZXREZXBvc2l0WQFAAAAAAAAAAAAAAAAAAAAAAAT4IFRoZSBiYXNpYyBhbW91bnQgb2YgZnVuZHMgdGhhdCBtdXN0IGJlIHJlc2VydmVkIGZvciBhbiBhc3NldC4ATEFzc2V0QWNjb3VudERlcG9zaXRZAUAA/k13AAAAAAAAAAAAAAAACEUBIFRoZSBhbW91bnQgb2YgZnVuZHMgdGhhdCBtdXN0IGJlIHJlc2VydmVkIGZvciBhIG5vbi1wcm92aWRlciBhc3NldCBhY2NvdW50IHRvIGJlMCBtYWludGFpbmVkLgBMTWV0YWRhdGFEZXBvc2l0QmFzZVkBQAAAAAAAAAAAAAAAAAAAAAAEUQEgVGhlIGJhc2ljIGFtb3VudCBvZiBmdW5kcyB0aGF0IG11c3QgYmUgcmVzZXJ2ZWQgd2hlbiBhZGRpbmcgbWV0YWRhdGEgdG8geW91ciBhc3NldC4AWE1ldGFkYXRhRGVwb3NpdFBlckJ5dGVZAUAAAAAAAAAAAAAAAAAAAAAACFUBIFRoZSBhZGRpdGlvbmFsIGZ1bmRzIHRoYXQgbXVzdCBiZSByZXNlcnZlZCBmb3IgdGhlIG51bWJlciBvZiBieXRlcyB5b3Ugc3RvcmUgaW4geW91ciggbWV0YWRhdGEuADxBcHByb3ZhbERlcG9zaXRZAUAA4fUFAAAAAAAAAAAAAAAABCEBIFRoZSBhbW91bnQgb2YgZnVuZHMgdGhhdCBtdXN0IGJlIHJlc2VydmVkIHdoZW4gY3JlYXRpbmcgYSBuZXcgYXBwcm92YWwuACxTdHJpbmdMaW1pdDgQMgAAAATgIFRoZSBtYXhpbXVtIGxlbmd0aCBvZiBhIG5hbWUgb3Igc3ltYm9sIHN0b3JlZCBvbi1jaGFpbi4AAW0NABQcQmFsYW5jZVkBBJwgVGhlIHVuaXRzIGluIHdoaWNoIHdlIHJlY29yZCBiYWxhbmNlcy4cQXNzZXRJZDgEjCBJZGVudGlmaWVyIGZvciB0aGUgY2xhc3Mgb2YgYXNzZXQuQEFzc2V0SWRQYXJhbWV0ZXI4HFkBIFdyYXBwZXIgYXJvdW5kIGBTZWxmOjpBc3NldElkYCB0byB1c2UgaW4gZGlzcGF0Y2hhYmxlIGNhbGwgc2lnbmF0dXJlcy4gQWxsb3dzIHRoZSB1c2VRASBvZiBjb21wYWN0IGVuY29kaW5nIGluIGluc3RhbmNlcyBvZiB0aGUgcGFsbGV0LCB3aGljaCB3aWxsIHByZXZlbnQgYnJlYWtpbmcgY2hhbmdlcwUBIHJlc3VsdGluZyBmcm9tIHRoZSByZW1vdmFsIG9mIGBIYXNDb21wYWN0YCBmcm9tIGBTZWxmOjpBc3NldElkYC4AWQEgVGhpcyB0eXBlIGluY2x1ZGVzIHRoZSBgRnJvbTxTZWxmOjpBc3NldElkPmAgYm91bmQsIHNpbmNlIHRpZ2h0bHkgY291cGxlZCBwYWxsZXRzIG1heUUBIHdhbnQgdG8gY29udmVydCBhbiBgQXNzZXRJZGAgaW50byBhIHBhcmFtZXRlciBmb3IgY2FsbGluZyBkaXNwYXRjaGFibGUgZnVuY3Rpb25zKCBkaXJlY3RseS4sUmVzZXJ2ZURhdGEQBOggSW5mb3JtYXRpb24gYWJvdXQgcmVzZXJ2ZSBsb2NhdGlvbnMgZm9yIGEgY2xhc3Mgb2YgYXNzZXQuFEV4dHJhEAT4IEFkZGl0aW9uYWwgZGF0YSB0byBiZSBzdG9yZWQgd2l0aCBhbiBhY2NvdW50J3MgYXNzZXQgYmFsYW5jZS4QTbBrocpvGLHtsG/wgtJECacCl60LS909pLdGKaZablw0YXNzZXRfZGV0YWlscwQIaWQ4zQwEqCBQcm92aWRlIHRoZSBhc3NldCBkZXRhaWxzIGZvciBhc3NldCBgaWRgLgBNsGuhym8Yse2wb/CC0kQJUxrH4ht2sSHnYeRzQZobAihiYWxhbmNlX29mCAx3aG8ECGlkOGUEBLQgUHJvdmlkZSB0aGUgYmFsYW5jZSBvZiBgd2hvYCBmb3IgYXNzZXQgYGlkYC4ATbBrocpvGLHtsG/wgtJECS6HZqQNG2nWFRvYAeV1UF4wZ2V0X21ldGFkYXRhBAhpZDhxDQTAIFByb3ZpZGUgdGhlIGNvbmZpZ3VyZWQgbWV0YWRhdGEgZm9yIGFzc2V0IGBpZGAuAE2wa6HKbxix7bBv8ILSRAlk9j8pI+OYKCQxY4GuHmmGRGdldF9yZXNlcnZlc19kYXRhBAhpZDhNBATUIFByb3ZpZGUgdGhlIGNvbmZpZ3VyZWQgcmVzZXJ2ZXMgZGF0YSBmb3IgYXNzZXQgYGlkYC4ANgAAPEFzc2V0Q29udmVyc2lvbgE8QXNzZXRDb252ZXJzaW9uCBRQb29scwABBAINCXUNBAAIaQEgTWFwIGZyb20gYFBvb2xBc3NldElkYCB0byBgUG9vbEluZm9gLiBUaGlzIGVzdGFibGlzaGVzIHdoZXRoZXIgYSBwb29sIGhhcyBiZWVuIG9mZmljaWFsbHk9ASBjcmVhdGVkIHJhdGhlciB0aGFuIHBlb3BsZSBzZW5kaW5nIHRva2VucyBkaXJlY3RseSB0byBhIHBvb2wncyBwdWJsaWMgYWNjb3VudC4APE5leHRQb29sQXNzZXRJZAAAOAQACCUBIFN0b3JlcyB0aGUgYFBvb2xBc3NldElkYCB0aGF0IGlzIGdvaW5nIHRvIGJlIHVzZWQgZm9yIHRoZSBuZXh0IGxwIHRva2VuLuQgVGhpcyBnZXRzIGluY3JlbWVudGVkIHdoZW5ldmVyIGEgbmV3IGxwIHBvb2wgaXMgY3JlYXRlZC4AAd0EAAEJCQAcFExQRmVlEQkQuAsAAAQdASBUaGUgZnJhY3Rpb24gb2YgZXZlcnkgc3dhcCB0aGF0IHRoZSBsaXF1aWRpdHkgcHJvdmlkZXJzIHRha2UgYXMgYSBmZWUuADBQb29sU2V0dXBGZWVZAUBALZPvAAAAAAAAAAAAAAAABIggQSBvbmUtdGltZSBmZWUgdG8gc2V0dXAgdGhlIHBvb2wuAERQb29sU2V0dXBGZWVBc3NldB0CCAEABDkBIEFzc2V0IGNsYXNzIGZyb20gW2BDb25maWc6OkFzc2V0c2BdIHVzZWQgdG8gcGF5IHRoZSBbYENvbmZpZzo6UG9vbFNldHVwRmVlYF0uAFhMaXF1aWRpdHlXaXRoZHJhd2FsRmVlEQkQAAAAAASEIEEgZmVlIHRvIHdpdGhkcmF3IHRoZSBsaXF1aWRpdHkuAEBNaW50TWluTGlxdWlkaXR5WQFAZAAAAAAAAAAAAAAAAAAAAAQ9ASBUaGUgbWluaW11bSBMUCB0b2tlbiBhbW91bnQgdGhhdCBjb3VsZCBiZSBtaW50ZWQuIEFtZWxpb3JhdGVzIHJvdW5kaW5nIGVycm9ycy4ARE1heFN3YXBQYXRoTGVuZ3RoOBADAAAABIggVGhlIG1heCBudW1iZXIgb2YgaG9wcyBpbiBhIHN3YXAuACBQYWxsZXRJZFELIHB5L2FzY29uBPQgVGhlIHBhbGxldCdzIGlkLCB1c2VkIGZvciBkZXJpdmluZyBpdHMgc292ZXJlaWduIGFjY291bnQgSUQuAAF5DQAIJEFzc2V0S2luZB0CCF0BIFR5cGUgb2YgYXNzZXQgY2xhc3MsIHNvdXJjZWQgZnJvbSBbYENvbmZpZzo6QXNzZXRzYF0sIHV0aWxpemVkIHRvIG9mZmVyIGxpcXVpZGl0eSB0byBhGCBwb29sLhhQb29sSWQNCQRsIExpcXVpZGl0eSBwb29sIGlkZW50aWZpZXIuDLUmBtqA0CqzdEKDaaXyRvFLWmdWZt7//dMa0S/bqv/jMGdldF9yZXNlcnZlcwgYYXNzZXQxHQIYYXNzZXQyHQJ9DQi8IFJldHVybnMgdGhlIGJhbGFuY2Ugb2YgZWFjaCBhc3NldCBpbiB0aGUgcG9vbC5VASBUaGUgdHVwbGUgcmVzdWx0IGlzIGluIHRoZSBvcmRlciByZXF1ZXN0ZWQgKG5vdCBuZWNlc3NhcmlseSB0aGUgc2FtZSBhcyBwb29sIG9yZGVyKS4AtSYG2oDQKrN0QoNppfJG8Xjng3C91VyYZEm8bNVQEAuMcXVvdGVfcHJpY2VfZXhhY3RfdG9rZW5zX2Zvcl90b2tlbnMQGGFzc2V0MR0CGGFzc2V0Mh0CGGFtb3VudFkBLGluY2x1ZGVfZmVlXQFlBBwRASBHZXRzIGEgcXVvdGUgZm9yIHN3YXBwaW5nIGFuIGV4YWN0IGFtb3VudCBvZiBgYXNzZXQxYCBmb3IgYGFzc2V0MmAuADUBIElmIGBpbmNsdWRlX2ZlZWAgaXMgdHJ1ZSwgdGhlIHF1b3RlIHdpbGwgaW5jbHVkZSB0aGUgbGlxdWlkaXR5IHByb3ZpZGVyIGZlZS4RASBJZiB0aGUgcG9vbCBkb2VzIG5vdCBleGlzdCBvciBoYXMgbm8gbGlxdWlkaXR5LCBgTm9uZWAgaXMgcmV0dXJuZWQuOQEgTm90ZSB0aGF0IHRoZSBwcmljZSBtYXkgaGF2ZSBjaGFuZ2VkIGJ5IHRoZSB0aW1lIHRoZSB0cmFuc2FjdGlvbiBpcyBleGVjdXRlZC6wIChVc2UgYGFtb3VudF9vdXRfbWluYCB0byBjb250cm9sIHNsaXBwYWdlLimoIFJldHVybnMgYFNvbWUocXVvdGVkX2Ftb3VudClgIG9uIHN1Y2Nlc3MuALUmBtqA0CqzdEKDaaXyRvEoeQ/vmy3jX0SNPsNzk2mNjHF1b3RlX3ByaWNlX3Rva2Vuc19mb3JfZXhhY3RfdG9rZW5zEBhhc3NldDEdAhhhc3NldDIdAhhhbW91bnRZASxpbmNsdWRlX2ZlZV0BZQQcQQEgR2V0cyBhIHF1b3RlIGZvciBzd2FwcGluZyBgYW1vdW50YCBvZiBgYXNzZXQxYCBmb3IgYW4gZXhhY3QgYW1vdW50IG9mIGBhc3NldDJgLgA1ASBJZiBgaW5jbHVkZV9mZWVgIGlzIHRydWUsIHRoZSBxdW90ZSB3aWxsIGluY2x1ZGUgdGhlIGxpcXVpZGl0eSBwcm92aWRlciBmZWUuEQEgSWYgdGhlIHBvb2wgZG9lcyBub3QgZXhpc3Qgb3IgaGFzIG5vIGxpcXVpZGl0eSwgYE5vbmVgIGlzIHJldHVybmVkLjkBIE5vdGUgdGhhdCB0aGUgcHJpY2UgbWF5IGhhdmUgY2hhbmdlZCBieSB0aGUgdGltZSB0aGUgdHJhbnNhY3Rpb24gaXMgZXhlY3V0ZWQurCAoVXNlIGBhbW91bnRfaW5fbWF4YCB0byBjb250cm9sIHNsaXBwYWdlLimoIFJldHVybnMgYFNvbWUocXVvdGVkX2Ftb3VudClgIG9uIHN1Y2Nlc3MuADcAADRBc3NldHNGcmVlemVyATRBc3NldHNGcmVlemVyCBxGcmVlemVzAQEIAgKpDBULBAAEFQEgQSBtYXAgdGhhdCBzdG9yZXMgZnJlZXplcyBhcHBsaWVkIG9uIGFuIGFjY291bnQgZm9yIGEgZ2l2ZW4gQXNzZXRJZC4AOEZyb3plbkJhbGFuY2VzAAEIAgKpDFkBBAAEZQEgQSBtYXAgdGhhdCBzdG9yZXMgdGhlIGN1cnJlbnQgdG90YWwgZnJvemVuIGJhbGFuY2UgZm9yIGV2ZXJ5IGFjY291bnQgb24gYSBnaXZlbiBBc3NldElkLgAAAR0JAAABhQ0ABExSdW50aW1lRnJlZXplUmVhc29uHQsEfCBUaGUgb3ZlcmFyY2hpbmcgZnJlZXplIHJlYXNvbi4AOAAAMEFzc2V0c0hvbGRlcgEwQXNzZXRzSG9sZGVyCBRIb2xkcwEBCAICqQwJCwQABA0BIEEgbWFwIHRoYXQgc3RvcmVzIGhvbGRzIGFwcGxpZWQgb24gYW4gYWNjb3VudCBmb3IgYSBnaXZlbiBBc3NldElkLgA4QmFsYW5jZXNPbkhvbGQAAQgCAqkMWQEEAARpASBBIG1hcCB0aGF0IHN0b3JlcyB0aGUgY3VycmVudCB0b3RhbCBiYWxhbmNlIG9uIGhvbGQgZm9yIGV2ZXJ5IGFjY291bnQgb24gYSBnaXZlbiBBc3NldElkLgAAASEJAAABiQ0ABERSdW50aW1lSG9sZFJlYXNvbmUIBHwgVGhlIG92ZXJhcmNoaW5nIGZyZWV6ZSByZWFzb24uADkAACBUcmVhc3VyeQEgVHJlYXN1cnkcNFByb3Bvc2FsQ291bnQBADgQAAAAABBBASBERVBSRUNBVEVEOiBhc3NvY2lhdGVkIHdpdGggYHNwZW5kX2xvY2FsYCBjYWxsIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gTWF5IDIwMjUuaQEgUmVmZXIgdG8gPGh0dHBzOi8vZ2l0aHViLmNvbS9wYXJpdHl0ZWNoL3BvbGthZG90LXNkay9wdWxsLzU5NjE+IGZvciBtaWdyYXRpb24gdG8gYHNwZW5kYC4ApCBOdW1iZXIgb2YgcHJvcG9zYWxzIHRoYXQgaGF2ZSBiZWVuIG1hZGUuACRQcm9wb3NhbHMAAQQFOI0NBAAQQQEgREVQUkVDQVRFRDogYXNzb2NpYXRlZCB3aXRoIGBzcGVuZF9sb2NhbGAgY2FsbCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIE1heSAyMDI1LmkBIFJlZmVyIHRvIDxodHRwczovL2dpdGh1Yi5jb20vcGFyaXR5dGVjaC9wb2xrYWRvdC1zZGsvcHVsbC81OTYxPiBmb3IgbWlncmF0aW9uIHRvIGBzcGVuZGAuAHwgUHJvcG9zYWxzIHRoYXQgaGF2ZSBiZWVuIG1hZGUuACxEZWFjdGl2YXRlZAEAWQFAAAAAAAAAAAAAAAAAAAAAAATwIFRoZSBhbW91bnQgd2hpY2ggaGFzIGJlZW4gcmVwb3J0ZWQgYXMgaW5hY3RpdmUgdG8gQ3VycmVuY3kuACRBcHByb3ZhbHMBAJENBAAQQQEgREVQUkVDQVRFRDogYXNzb2NpYXRlZCB3aXRoIGBzcGVuZF9sb2NhbGAgY2FsbCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIE1heSAyMDI1LmkBIFJlZmVyIHRvIDxodHRwczovL2dpdGh1Yi5jb20vcGFyaXR5dGVjaC9wb2xrYWRvdC1zZGsvcHVsbC81OTYxPiBmb3IgbWlncmF0aW9uIHRvIGBzcGVuZGAuAPggUHJvcG9zYWwgaW5kaWNlcyB0aGF0IGhhdmUgYmVlbiBhcHByb3ZlZCBidXQgbm90IHlldCBhd2FyZGVkLgAoU3BlbmRDb3VudAEAOBAAAAAABKQgVGhlIGNvdW50IG9mIHNwZW5kcyB0aGF0IGhhdmUgYmVlbiBtYWRlLgAYU3BlbmRzAAEEBTiVDQQABNAgU3BlbmRzIHRoYXQgaGF2ZSBiZWVuIGFwcHJvdmVkIGFuZCBiZWluZyBwcm9jZXNzZWQuADxMYXN0U3BlbmRQZXJpb2QAADgEAATUIFRoZSBibG9ja251bWJlciBmb3IgdGhlIGxhc3QgdHJpZ2dlcmVkIHNwZW5kIHBlcmlvZC4AAeUECAMClQFUaGUgYHNwZW5kX2xvY2FsYCBjYWxsIHdpbGwgYmUgcmVtb3ZlZCBieSBNYXkgMjAyNS4gTWlncmF0ZSB0byB0aGUgbmV3IGZsb3cgYW5kIHVzZSB0aGUgYHNwZW5kYCBjYWxsLgAEArUBVGhlIGByZW1vdmVfYXBwcm92YWxgIGNhbGwgd2lsbCBiZSByZW1vdmVkIGJ5IE1heSAyMDI1LiBJdCBhc3NvY2lhdGVkIHdpdGggdGhlIGRlcHJlY2F0ZWQgYHNwZW5kX2xvY2FsYCBjYWxsLgABJQkAGCxTcGVuZFBlcmlvZDgQwKgAAASIIFBlcmlvZCBiZXR3ZWVuIHN1Y2Nlc3NpdmUgc3BlbmRzLgAQQnVybhEJEAAAAAAEEQEgUGVyY2VudGFnZSBvZiBzcGFyZSBmdW5kcyAoaWYgYW55KSB0aGF0IGFyZSBidXJudCBwZXIgc3BlbmQgcGVyaW9kLgAgUGFsbGV0SWRRCyBweS90cnNyeQQZASBUaGUgdHJlYXN1cnkncyBwYWxsZXQgaWQsIHVzZWQgZm9yIGRlcml2aW5nIGl0cyBzb3ZlcmVpZ24gYWNjb3VudCBJRC4AME1heEFwcHJvdmFsczgQZAAAABhBASBERVBSRUNBVEVEOiBhc3NvY2lhdGVkIHdpdGggYHNwZW5kX2xvY2FsYCBjYWxsIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gTWF5IDIwMjUuaQEgUmVmZXIgdG8gPGh0dHBzOi8vZ2l0aHViLmNvbS9wYXJpdHl0ZWNoL3BvbGthZG90LXNkay9wdWxsLzU5NjE+IGZvciBtaWdyYXRpb24gdG8gYHNwZW5kYC4AFQEgVGhlIG1heGltdW0gbnVtYmVyIG9mIGFwcHJvdmFscyB0aGF0IGNhbiB3YWl0IGluIHRoZSBzcGVuZGluZyBxdWV1ZS4ATQEgTk9URTogVGhpcyBwYXJhbWV0ZXIgaXMgYWxzbyB1c2VkIHdpdGhpbiB0aGUgQm91bnRpZXMgUGFsbGV0IGV4dGVuc2lvbiBpZiBlbmFibGVkLgAwUGF5b3V0UGVyaW9kOBAA4QAABBkBIFRoZSBwZXJpb2QgZHVyaW5nIHdoaWNoIGFuIGFwcHJvdmVkIHRyZWFzdXJ5IHNwZW5kIGhhcyB0byBiZSBjbGFpbWVkLgAscG90X2FjY291bnQEgG1vZGxweS90cnNyeQAAAAAAAAAAAAAAAAAAAAAAAAAABKAgR2V0cyB0aGlzIHBhbGxldCdzIGRlcml2ZWQgcG90IGFjY291bnQuAAGdDQAIJEFzc2V0S2luZOkEBC0BIFR5cGUgcGFyYW1ldGVyIHJlcHJlc2VudGluZyB0aGUgYXNzZXQga2luZHMgdG8gYmUgc3BlbnQgZnJvbSB0aGUgdHJlYXN1cnkuLEJlbmVmaWNpYXJ57QQEXQEgVHlwZSBwYXJhbWV0ZXIgdXNlZCB0byBpZGVudGlmeSB0aGUgYmVuZWZpY2lhcmllcyBlbGlnaWJsZSB0byByZWNlaXZlIHRyZWFzdXJ5IHNwZW5kcy4APAAAQENvbnZpY3Rpb25Wb3RpbmcBQENvbnZpY3Rpb25Wb3RpbmcIJFZvdGluZ0ZvcgEBCAUFoQ2lDdgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIdQEgQWxsIHZvdGluZyBmb3IgYSBwYXJ0aWN1bGFyIHZvdGVyIGluIGEgcGFydGljdWxhciB2b3RpbmcgY2xhc3MuIFdlIHN0b3JlIHRoZSBiYWxhbmNlIGZvciB0aGWcIG51bWJlciBvZiB2b3RlcyB0aGF0IHdlIGhhdmUgcmVjb3JkZWQuADRDbGFzc0xvY2tzRm9yAQEEBQTFDQQADGkBIFRoZSB2b3RpbmcgY2xhc3NlcyB3aGljaCBoYXZlIGEgbm9uLXplcm8gbG9jayByZXF1aXJlbWVudCBhbmQgdGhlIGxvY2sgYW1vdW50cyB3aGljaCB0aGV5bQEgcmVxdWlyZS4gVGhlIGFjdHVhbCBhbW91bnQgbG9ja2VkIG9uIGJlaGFsZiBvZiB0aGlzIHBhbGxldCBzaG91bGQgYWx3YXlzIGJlIHRoZSBtYXhpbXVtIG9mLCB0aGlzIGxpc3QuAAHxBAABKQkACCBNYXhWb3RlczgQAAIAABDwIFRoZSBtYXhpbXVtIG51bWJlciBvZiBjb25jdXJyZW50IHZvdGVzIGFuIGFjY291bnQgbWF5IGhhdmUuAFUBIEFsc28gdXNlZCB0byBjb21wdXRlIHdlaWdodCwgYW4gb3Zlcmx5IGxhcmdlIHZhbHVlIGNhbiBsZWFkIHRvIGV4dHJpbnNpY3Mgd2l0aCBsYXJnZcAgd2VpZ2h0IGVzdGltYXRpb246IHNlZSBgZGVsZWdhdGVgIGZvciBpbnN0YW5jZS4ARFZvdGVMb2NraW5nUGVyaW9kOBDAiQEAEJAgVGhlIG1pbmltdW0gcGVyaW9kIG9mIHZvdGUgbG9ja2luZy4AZQEgSXQgc2hvdWxkIGJlIG5vIHNob3J0ZXIgdGhhbiBlbmFjdG1lbnQgcGVyaW9kIHRvIGVuc3VyZSB0aGF0IGluIHRoZSBjYXNlIG9mIGFuIGFwcHJvdmFsLEkBIHRob3NlIHN1Y2Nlc3NmdWwgdm90ZXJzIGFyZSBsb2NrZWQgaW50byB0aGUgY29uc2VxdWVuY2VzIHRoYXQgdGhlaXIgdm90ZXMgZW50YWlsLgAB0Q0AAAA9AAAkUmVmZXJlbmRhASRSZWZlcmVuZGEUPFJlZmVyZW5kdW1Db3VudAEAOBAAAAAABDEBIFRoZSBuZXh0IGZyZWUgcmVmZXJlbmR1bSBpbmRleCwgYWthIHRoZSBudW1iZXIgb2YgcmVmZXJlbmRhIHN0YXJ0ZWQgc28gZmFyLgBEUmVmZXJlbmR1bUluZm9Gb3IAAQQCONUNBAAEtCBJbmZvcm1hdGlvbiBjb25jZXJuaW5nIGFueSBnaXZlbiByZWZlcmVuZHVtLgAoVHJhY2tRdWV1ZQEBBAXtA/UNBAAQXQEgVGhlIHNvcnRlZCBsaXN0IG9mIHJlZmVyZW5kYSByZWFkeSB0byBiZSBkZWNpZGVkIGJ1dCBub3QgeWV0IGJlaW5nIGRlY2lkZWQsIG9yZGVyZWQgYnl8IGNvbnZpY3Rpb24td2VpZ2h0ZWQgYXBwcm92YWxzLgBBASBUaGlzIHNob3VsZCBiZSBlbXB0eSBpZiBgRGVjaWRpbmdDb3VudGAgaXMgbGVzcyB0aGFuIGBUcmFja0luZm86Om1heF9kZWNpZGluZ2AuADREZWNpZGluZ0NvdW50AQEEBe0DOBAAAAAABMQgVGhlIG51bWJlciBvZiByZWZlcmVuZGEgYmVpbmcgZGVjaWRlZCBjdXJyZW50bHkuAChNZXRhZGF0YU9mAAEEAjhABAAYBQEgVGhlIG1ldGFkYXRhIGlzIGEgZ2VuZXJhbCBpbmZvcm1hdGlvbiBjb25jZXJuaW5nIHRoZSByZWZlcmVuZHVtLkkBIFRoZSBgSGFzaGAgcmVmZXJzIHRvIHRoZSBwcmVpbWFnZSBvZiB0aGUgYFByZWltYWdlc2AgcHJvdmlkZXIgd2hpY2ggY2FuIGJlIGEgSlNPToggZHVtcCBvciBJUEZTIGhhc2ggb2YgYSBKU09OIGZpbGUuAHUBIENvbnNpZGVyIGEgZ2FyYmFnZSBjb2xsZWN0aW9uIGZvciBhIG1ldGFkYXRhIG9mIGZpbmlzaGVkIHJlZmVyZW5kdW1zIHRvIGB1bnJlcXVlc3RgIChyZW1vdmUpRCBsYXJnZSBwcmVpbWFnZXMuAAEFBQABLQkAFERTdWJtaXNzaW9uRGVwb3NpdFkBQADodkgXAAAAAAAAAAAAAAAENQEgVGhlIG1pbmltdW0gYW1vdW50IHRvIGJlIHVzZWQgYXMgYSBkZXBvc2l0IGZvciBhIHB1YmxpYyByZWZlcmVuZHVtIHByb3Bvc2FsLgAkTWF4UXVldWVkOBBkAAAABOQgTWF4aW11bSBzaXplIG9mIHRoZSByZWZlcmVuZHVtIHF1ZXVlIGZvciBhIHNpbmdsZSB0cmFjay4ARFVuZGVjaWRpbmdUaW1lb3V0OBDAqAAACFUBIFRoZSBudW1iZXIgb2YgYmxvY2tzIGFmdGVyIHN1Ym1pc3Npb24gdGhhdCBhIHJlZmVyZW5kdW0gbXVzdCBiZWdpbiBiZWluZyBkZWNpZGVkIGJ5LuQgT25jZSB0aGlzIHBhc3NlcywgdGhlbiBhbnlvbmUgbWF5IGNhbmNlbCB0aGUgcmVmZXJlbmR1bS4ANEFsYXJtSW50ZXJ2YWw4EAEAAAAMXQEgUXVhbnRpemF0aW9uIGxldmVsIGZvciB0aGUgcmVmZXJlbmR1bSB3YWtldXAgc2NoZWR1bGVyLiBBIGhpZ2hlciBudW1iZXIgd2lsbCByZXN1bHQgaW5dASBmZXdlciBzdG9yYWdlIHJlYWRzL3dyaXRlcyBuZWVkZWQgZm9yIHNtYWxsZXIgdm90ZXJzLCBidXQgYWxzbyByZXN1bHQgaW4gZGVsYXlzIHRvIHRoZVUBIGF1dG9tYXRpYyByZWZlcmVuZHVtIHN0YXR1cyBjaGFuZ2VzLiBFeHBsaWNpdCBzZXJ2aWNpbmcgaW5zdHJ1Y3Rpb25zIGFyZSB1bmFmZmVjdGVkLgAYVHJhY2tzAQ4VGkAAAGRyb290AAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAACAxqR+jQMAAAAAAAAAAACwBAAAACcGAEA4AABAOAAAApDXPg0AAAAAV0PeEwAAAABUQ94TAAAAAAAAypo7AAAAAABlzR0BAGR3aGl0ZWxpc3RlZF9jYWxsZXIAAAAAAAAAZAAAAABAehDzWgAAAAAAAAAAAAAsAQAAACcGAGQAAABkAAAAAuyXJRAAAAAAe1c8FwAAAABCOS8SAAAAAAIOAIQAAAAAANbmHwEAAAAAOWJ5AgAAAAACAGR3aXNoX2Zvcl9jaGFuZ2UAAAAAAAAAAAAACgAAAACA9CDmtQAAAAAAAAAAAACwBAAAACcGAEA4AABkAAAAApDXPg0AAAAAV0PeEwAAAABUQ94TAAAAAAAAypo7AAAAAABlzR0KAGRzdGFraW5nX2FkbWluAAAAAAAAAAAAAAAACgAAAAAgPYh5LQAAAAAAAAAAAACwBAAAACcGAAgHAABkAAAAAMlDMCQAZc0dAMqaOwJdb3gAAAAAAOgu7QAAAAAAjGiJ//////8LAGR0cmVhc3VyZXIAAAAAAAAAAAAAAAAAAAAAAgAAAACgMalf4wAAAAAAAAAAAACwBAAAACcGAMCJAQBAOAAAApDXPg0AAAAAV0PeEwAAAABUQ94TAAAAAAAAypo7gJaYAABlzR0MAGRsZWFzZV9hZG1pbgAAAAAAAAAAAAAAAAAACgAAAAAgPYh5LQAAAAAAAAAAAACwBAAAACcGAAgHAABkAAAAAMlDMCQAZc0dAMqaOwJdb3gAAAAAAOgu7QAAAAAAjGiJ//////8NAGRmZWxsb3dzaGlwX2FkbWluAAAAAAAAAAAACgAAAAAgPYh5LQAAAAAAAAAAAACwBAAAACcGAAgHAABkAAAAAMlDMCQAZc0dAMqaOwJdb3gAAAAAAOgu7QAAAAAAjGiJ//////8OAGRnZW5lcmFsX2FkbWluAAAAAAAAAAAAAAAACgAAAAAgPYh5LQAAAAAAAAAAAACwBAAAACcGAAgHAABkAAAAApDXPg0AAAAAV0PeEwAAAABUQ94TAAAAAAJZovQCAAAAAKMpawUAAAAALmtK/f////8PAGRhdWN0aW9uX2FkbWluAAAAAAAAAAAAAAAACgAAAAAgPYh5LQAAAAAAAAAAAACwBAAAACcGAAgHAABkAAAAApDXPg0AAAAAV0PeEwAAAABUQ94TAAAAAAJZovQCAAAAAKMpawUAAAAALmtK/f////8UAGRyZWZlcmVuZHVtX2NhbmNlbGxlcgAAAAAA9AEAAAAgPYh5LQAAAAAAAAAAAACwBAAAwIkBAAgHAABkAAAAAMlDMCQAZc0dAMqaOwJdb3gAAAAAAOgu7QAAAAAAjGiJ//////8VAGRyZWZlcmVuZHVtX2tpbGxlcgAAAAAAAAAA6AMAAABAY1K/xgEAAAAAAAAAAACwBAAAACcGAAgHAABkAAAAAMlDMCQAZc0dAMqaOwJdb3gAAAAAAOgu7QAAAAAAjGiJ//////8eAGRzbWFsbF90aXBwZXIAAAAAAAAAAAAAAAAAyAAAAADkC1QCAAAAAAAAAAAAAAAKAAAAwIkBAGQAAAAKAAAAAEmRSRUAZc0dAMqaOwL5uhgAAAAAACpNMQAAAAAAa1nn//////8fAGRiaWdfdGlwcGVyAAAAAAAAAAAAAAAAAAAAZAAAAADodkgXAAAAAAAAAAAAAABkAAAAwIkBAFgCAABkAAAAAEmRSRUAZc0dAMqaOwJpTz8AAAAAADWWfQAAAAAA5TTB//////8gAGRzbWFsbF9zcGVuZGVyAAAAAAAAAAAAAAAABQAAAACgck4YCQAAAAAAAAAAAABgCQAAACcGAIBwAABAOAAAAMlDMCQAZc0dAMqaOwIKszoAAAAAAFOtdQAAAAAANwsSAAAAAAAhAGRtZWRpdW1fc3BlbmRlcgAAAAAAAAAAAAAAMgAAAAAgSqnRAQAAAAAAAAAAAABgCQAAACcGAADhAABAOAAAAFsB9jAAZc0dAMqaOwIgnmkAAAAAAE930gAAAAAA/hzk//////8iAGRiaWdfc3BlbmRlcgAAAAAAAAAAAAAAAAAAAwAAAAAgPYh5LQAAAAAAAAAAAABgCQAAACcGAMCJAQBAOAAAAADKmjsAZc0dAMqaOwLNWGIAAAAAAFskxQAAAAAANVkRAAAAAAAMSCBBIGxpc3Qgb2YgdHJhY2tzLgBdASBOb3RlOiBpZiB0aGUgdHJhY2tzIGFyZSBkeW5hbWljLCB0aGUgdmFsdWUgaW4gdGhlIHN0YXRpYyBtZXRhZGF0YSBtaWdodCBiZSBpbmFjY3VyYXRlLgABGQ4ADCxSdW50aW1lQ2FsbCAAFFZvdGVzWQEEzCBUaGUgY291bnRpbmcgdHlwZSBmb3Igdm90ZXMuIFVzdWFsbHkganVzdCBiYWxhbmNlLhRUYWxseTEJBEwgVGhlIHRhbGx5aW5nIHR5cGUuAD4AABxPcmlnaW5zAAAAAAAAAD8AACRXaGl0ZWxpc3QBJFdoaXRlbGlzdAQ8V2hpdGVsaXN0ZWRDYWxsAAEEBUAQBAAAAAEZBQABNQkAAAEdDgAELFJ1bnRpbWVDYWxsIARsIFRoZSBvdmVyYXJjaGluZyBjYWxsIHR5cGUuAEAAACBCb3VudGllcwEgQm91bnRpZXMQLEJvdW50eUNvdW50AQA4EAAAAAAEwCBOdW1iZXIgb2YgYm91bnR5IHByb3Bvc2FscyB0aGF0IGhhdmUgYmVlbiBtYWRlLgAgQm91bnRpZXMAAQQFOCEOBAAEeCBCb3VudGllcyB0aGF0IGhhdmUgYmVlbiBtYWRlLgBIQm91bnR5RGVzY3JpcHRpb25zAAEEBTgpDgQABIAgVGhlIGRlc2NyaXB0aW9uIG9mIGVhY2ggYm91bnR5LgA8Qm91bnR5QXBwcm92YWxzAQCRDQQABOwgQm91bnR5IGluZGljZXMgdGhhdCBoYXZlIGJlZW4gYXBwcm92ZWQgYnV0IG5vdCB5ZXQgZnVuZGVkLgABHQUAAUUJACREQm91bnR5RGVwb3NpdEJhc2VZAUAAjgwBAAAAAAAAAAAAAAAABOggVGhlIGFtb3VudCBoZWxkIG9uIGRlcG9zaXQgZm9yIHBsYWNpbmcgYSBib3VudHkgcHJvcG9zYWwuAGBCb3VudHlEZXBvc2l0UGF5b3V0RGVsYXk4EAAAAAAEWQEgVGhlIGRlbGF5IHBlcmlvZCBmb3Igd2hpY2ggYSBib3VudHkgYmVuZWZpY2lhcnkgbmVlZCB0byB3YWl0IGJlZm9yZSBjbGFpbSB0aGUgcGF5b3V0LgBIQm91bnR5VXBkYXRlUGVyaW9kOBAABBcDGPQgVGhlIHRpbWUgbGltaXQgZm9yIGEgY3VyYXRvciB0byBhY3QgYmVmb3JlIGEgYm91bnR5IGV4cGlyZXMuAFUBIFRoZSBwZXJpb2QgdGhhdCBzdGFydHMgd2hlbiBhIGN1cmF0b3IgaXMgYXBwcm92ZWQsIGR1cmluZyB3aGljaCB0aGV5IG11c3QgZXhlY3V0ZSBvclUBIHVwZGF0ZSB0aGUgYm91bnR5IHZpYSBgZXh0ZW5kX2JvdW50eV9leHBpcnlgLiBJZiBtaXNzZWQsIHRoZSBib3VudHkgZXhwaXJlcywgYW5kIHRoZVUBIGN1cmF0b3IgbWF5IGJlIHNsYXNoZWQuIElmIGBCbG9ja051bWJlckZvcjo6TUFYYCwgYm91bnRpZXMgc3RheSBhY3RpdmUgaW5kZWZpbml0ZWx5LLggcmVtb3ZpbmcgdGhlIG5lZWQgZm9yIGBleHRlbmRfYm91bnR5X2V4cGlyeWAuAGBDdXJhdG9yRGVwb3NpdE11bHRpcGxpZXIRCRAgoQcAEBkBIFRoZSBjdXJhdG9yIGRlcG9zaXQgaXMgY2FsY3VsYXRlZCBhcyBhIHBlcmNlbnRhZ2Ugb2YgdGhlIGN1cmF0b3IgZmVlLgA5ASBUaGlzIGRlcG9zaXQgaGFzIG9wdGlvbmFsIHVwcGVyIGFuZCBsb3dlciBib3VuZHMgd2l0aCBgQ3VyYXRvckRlcG9zaXRNYXhgIGFuZFQgYEN1cmF0b3JEZXBvc2l0TWluYC4AREN1cmF0b3JEZXBvc2l0TWF4ZQREAQAgSqnRAQAAAAAAAAAAAAAESQEgTWF4aW11bSBhbW91bnQgb2YgZnVuZHMgdGhhdCBzaG91bGQgYmUgcGxhY2VkIGluIGEgZGVwb3NpdCBmb3IgbWFraW5nIGEgcHJvcG9zYWwuAERDdXJhdG9yRGVwb3NpdE1pbmUERAEA6HZIFwAAAAAAAAAAAAAABEkBIE1pbmltdW0gYW1vdW50IG9mIGZ1bmRzIHRoYXQgc2hvdWxkIGJlIHBsYWNlZCBpbiBhIGRlcG9zaXQgZm9yIG1ha2luZyBhIHByb3Bvc2FsLgBIQm91bnR5VmFsdWVNaW5pbXVtWQFAAOh2SBcAAAAAAAAAAAAAAARwIE1pbmltdW0gdmFsdWUgZm9yIGEgYm91bnR5LgBIRGF0YURlcG9zaXRQZXJCeXRlWQFAoIYBAAAAAAAAAAAAAAAAAARhASBUaGUgYW1vdW50IGhlbGQgb24gZGVwb3NpdCBwZXIgYnl0ZSB3aXRoaW4gdGhlIHRpcCByZXBvcnQgcmVhc29uIG9yIGJvdW50eSBkZXNjcmlwdGlvbi4ATE1heGltdW1SZWFzb25MZW5ndGg4EABAAAAMiCBNYXhpbXVtIGFjY2VwdGFibGUgcmVhc29uIGxlbmd0aC4AZQEgQmVuY2htYXJrcyBkZXBlbmQgb24gdGhpcyB2YWx1ZSwgYmUgc3VyZSB0byB1cGRhdGUgd2VpZ2h0cyBmaWxlIHdoZW4gY2hhbmdpbmcgdGhpcyB2YWx1ZQABLQ4AAABBAAA0Q2hpbGRCb3VudGllcwE0Q2hpbGRCb3VudGllcxxAQ2hpbGRCb3VudHlDb3VudAEAOBAAAAAACG0BIERFUFJFQ0FURUQ6IFJlcGxhY2VkIHdpdGggYFBhcmVudFRvdGFsQ2hpbGRCb3VudGllc2Agc3RvcmFnZSBpdGVtIGtlZXBpbmcgZGVkaWNhdGVkIGNvdW50c1UBIGZvciBlYWNoIHBhcmVudCBib3VudHkuIE51bWJlciBvZiB0b3RhbCBjaGlsZCBib3VudGllcy4gV2lsbCBiZSByZW1vdmVkIGluIE1heSAyMDI1LgBMUGFyZW50Q2hpbGRCb3VudGllcwEBBAU4OBAAAAAACMwgTnVtYmVyIG9mIGFjdGl2ZSBjaGlsZCBib3VudGllcyBwZXIgcGFyZW50IGJvdW50eS7gIE1hcCBvZiBwYXJlbnQgYm91bnR5IGluZGV4IHRvIG51bWJlciBvZiBjaGlsZCBib3VudGllcy4AYFBhcmVudFRvdGFsQ2hpbGRCb3VudGllcwEBBAU4OBAAAAAABEEBIE51bWJlciBvZiB0b3RhbCBjaGlsZCBib3VudGllcyBwZXIgcGFyZW50IGJvdW50eSwgaW5jbHVkaW5nIGNvbXBsZXRlZCBib3VudGllcy4ANENoaWxkQm91bnRpZXMAAQgFBdAxDgQABJQgQ2hpbGQgYm91bnRpZXMgdGhhdCBoYXZlIGJlZW4gYWRkZWQuAGRDaGlsZEJvdW50eURlc2NyaXB0aW9uc1YxAAEIBQXQKQ4EAAwpASBUaGUgZGVzY3JpcHRpb24gb2YgZWFjaCBjaGlsZC1ib3VudHkuIEluZGV4ZWQgYnkgYChwYXJlbnRfaWQsIGNoaWxkX2lkKWAuAG0BIFRoaXMgaXRlbSByZXBsYWNlcyB0aGUgYENoaWxkQm91bnR5RGVzY3JpcHRpb25zYCBzdG9yYWdlIGl0ZW0gZnJvbSB0aGUgVjAgc3RvcmFnZSB2ZXJzaW9uLgBQVjBUb1YxQ2hpbGRCb3VudHlJZHMAAQQFONAEABRdASBUaGUgbWFwcGluZyBvZiB0aGUgY2hpbGQgYm91bnR5IGlkcyBmcm9tIHN0b3JhZ2UgdmVyc2lvbiBgVjBgIHRvIHRoZSBuZXcgYFYxYCB2ZXJzaW9uLgBtASBUaGUgYFYwYCBpZHMgYmFzZWQgb24gdG90YWwgY2hpbGQgYm91bnR5IGNvdW50IFtgQ2hpbGRCb3VudHlDb3VudGBdYC4gVGhlIGBWMWAgdmVyc2lvbiBpZHNBASBiYXNlZCBvbiB0aGUgY2hpbGQgYm91bnR5IGNvdW50IHBlciBwYXJlbnQgYm91bnR5IFtgUGFyZW50VG90YWxDaGlsZEJvdW50aWVzYF0uZQEgVGhlIGl0ZW0gaW50ZW5kZWQgc29sZWx5IGZvciBjbGllbnQgY29udmVuaWVuY2UgYW5kIG5vdCB1c2VkIGluIHRoZSBwYWxsZXQncyBjb3JlIGxvZ2ljLgBMQ2hpbGRyZW5DdXJhdG9yRmVlcwEBBAU4WQFAAAAAAAAAAAAAAAAAAAAAAAQBASBUaGUgY3VtdWxhdGl2ZSBjaGlsZC1ib3VudHkgY3VyYXRvciBmZWUgZm9yIGVhY2ggcGFyZW50IGJvdW50eS4AASEFAAFJCQAIZE1heEFjdGl2ZUNoaWxkQm91bnR5Q291bnQ4EGQAAAAEHQEgTWF4aW11bSBudW1iZXIgb2YgY2hpbGQgYm91bnRpZXMgdGhhdCBjYW4gYmUgYWRkZWQgdG8gYSBwYXJlbnQgYm91bnR5LgBcQ2hpbGRCb3VudHlWYWx1ZU1pbmltdW1ZAUAA5AtUAgAAAAAAAAAAAAAABIggTWluaW11bSB2YWx1ZSBmb3IgYSBjaGlsZC1ib3VudHkuAAE5DgAAAEIAACRBc3NldFJhdGUBJEFzc2V0UmF0ZQRYQ29udmVyc2lvblJhdGVUb05hdGl2ZQABBALpBCkFBAAMHQEgTWFwcyBhbiBhc3NldCB0byBpdHMgZml4ZWQgcG9pbnQgcmVwcmVzZW50YXRpb24gaW4gdGhlIG5hdGl2ZSBiYWxhbmNlLgBNASBFLmcuIGBuYXRpdmVfYW1vdW50ID0gYXNzZXRfYW1vdW50ICogQ29udmVyc2lvblJhdGVUb05hdGl2ZTo6PFQ+OjpnZXQoYXNzZXRfa2luZClgAAElBQABTQkAAAE9DgAEJEFzc2V0S2luZOkEBEUBIFRoZSB0eXBlIGZvciBhc3NldCBraW5kcyBmb3Igd2hpY2ggdGhlIGNvbnZlcnNpb24gcmF0ZSB0byBuYXRpdmUgYmFsYW5jZSBpcyBzZXQuAEMAAEhNdWx0aUFzc2V0Qm91bnRpZXMBSE11bHRpQXNzZXRCb3VudGllcxwsQm91bnR5Q291bnQBADgQAAAAAATAIE51bWJlciBvZiBib3VudHkgcHJvcG9zYWxzIHRoYXQgaGF2ZSBiZWVuIG1hZGUuACBCb3VudGllcwABBAU4QQ4EAAR4IEJvdW50aWVzIHRoYXQgaGF2ZSBiZWVuIG1hZGUuADRDaGlsZEJvdW50aWVzAAEIBQXQTQ4EAAyUIENoaWxkIGJvdW50aWVzIHRoYXQgaGF2ZSBiZWVuIGFkZGVkLgDIIEluZGV4ZWQgYnkgYChwYXJlbnRfYm91bnR5X2lkLCBjaGlsZF9ib3VudHlfaWQpYC4AWENoaWxkQm91bnRpZXNQZXJQYXJlbnQBAQQFODgQAAAAAAzMIE51bWJlciBvZiBhY3RpdmUgY2hpbGQgYm91bnRpZXMgcGVyIHBhcmVudCBib3VudHkuAHwgSW5kZXhlZCBieSBgcGFyZW50X2JvdW50eV9pZGAuAGxUb3RhbENoaWxkQm91bnRpZXNQZXJQYXJlbnQBAQQFODgQAAAAAAxBASBOdW1iZXIgb2YgdG90YWwgY2hpbGQgYm91bnRpZXMgcGVyIHBhcmVudCBib3VudHksIGluY2x1ZGluZyBjb21wbGV0ZWQgYm91bnRpZXMuAHwgSW5kZXhlZCBieSBgcGFyZW50X2JvdW50eV9pZGAuAGxDaGlsZEJvdW50aWVzVmFsdWVQZXJQYXJlbnQBAQQFOFkBQAAAAAAAAAAAAAAAAAAAAAAQbQEgVGhlIGN1bXVsYXRpdmUgY2hpbGQtYm91bnR5IHZhbHVlIGZvciBlYWNoIHBhcmVudCBib3VudHkuIFRvIGJlIHN1YnRyYWN0ZWQgZnJvbSB0aGUgcGFyZW50kCBib3VudHkgcGF5b3V0IHdoZW4gYXdhcmRpbmcgYm91bnR5LgB8IEluZGV4ZWQgYnkgYHBhcmVudF9ib3VudHlfaWRgLgA4Q3VyYXRvckRlcG9zaXQAAQgFBVEOVQ4EACxlASBUaGUgY29uc2lkZXJhdGlvbiBjb3N0IGluY3VycmVkIGJ5IHRoZSBjaGlsZC0vYm91bnR5IGN1cmF0b3IgZm9yIGNvbW1pdHRpbmcgdG8gdGhlIHJvbGUuAHEBIERldGVybWluZWQgYnkgW2BwYWxsZXQ6OkNvbmZpZzo6Q29uc2lkZXJhdGlvbmBdLiBJdCBpcyBjcmVhdGVkIHdoZW4gdGhlIGN1cmF0b3IgYWNjZXB0cyB0aGVFASByb2xlLCBhbmQgaXMgZWl0aGVyIGJ1cm5lZCBpZiB0aGUgY3VyYXRvciBtaXNiZWhhdmVzIG9yIGNvbnN1bWVkIHVwb24gc3VjY2Vzc2Z1bIQgY29tcGxldGlvbiBvZiB0aGUgY2hpbGQtL2JvdW50eS4AEQEgTm90ZTogSWYgdGhlIHBhcmVudCBjdXJhdG9yIGlzIGFsc28gYXNzaWduZWQgdG8gdGhlIGNoaWxkLWJvdW50eSwgIA0BIHRoZSBjb25zaWRlcmF0aW9uIGNvc3QgaXMgY2hhcmdlZCBvbmx5IG9uY2Ug4oCUIHdoZW4gdGhlIGN1cmF0b3IgIKAgYWNjZXB0cyB0aGUgcm9sZSBmb3IgdGhlIHBhcmVudCBib3VudHkuAMggSW5kZXhlZCBieSBgKHBhcmVudF9ib3VudHlfaWQsIGNoaWxkX2JvdW50eV9pZClgLgABLQUAAVEJAAxIQm91bnR5VmFsdWVNaW5pbXVtWQFAAMgXqAQAAAAAAAAAAAAAAARwIE1pbmltdW0gdmFsdWUgZm9yIGEgYm91bnR5LgBcQ2hpbGRCb3VudHlWYWx1ZU1pbmltdW1ZAUAAlDV3AAAAAAAAAAAAAAAABIggTWluaW11bSB2YWx1ZSBmb3IgYSBjaGlsZC1ib3VudHkuAGRNYXhBY3RpdmVDaGlsZEJvdW50eUNvdW50OBBkAAAABB0BIE1heGltdW0gbnVtYmVyIG9mIGNoaWxkIGJvdW50aWVzIHRoYXQgY2FuIGJlIGFkZGVkIHRvIGEgcGFyZW50IGJvdW50eS4AAVkOAAgkQXNzZXRLaW5k6QQIQQEgVHlwZSBwYXJhbWV0ZXIgcmVwcmVzZW50aW5nIHRoZSBhc3NldCBraW5kcyB1c2VkIHRvIGZ1bmQsIHJlZnVuZCBhbmQgc3BlbmQgZnJvbSggYm91bnRpZXMuLEJlbmVmaWNpYXJ57QQEQQEgVHlwZSBwYXJhbWV0ZXIgdXNlZCB0byBpZGVudGlmeSB0aGUgYmVuZWZpY2lhcmllcyBlbGlnaWJsZSB0byByZWNlaXZlIHBheW1lbnRzLgBEAABIU3RhdGVUcmllTWlncmF0aW9uAUhTdGF0ZVRyaWVNaWdyYXRpb24MQE1pZ3JhdGlvblByb2Nlc3MBAD0FOAAAAAAAAAAAAAAAAAAAEFAgTWlncmF0aW9uIHByb2dyZXNzLgBdASBUaGlzIHN0b3JlcyB0aGUgc25hcHNob3Qgb2YgdGhlIGxhc3QgbWlncmF0ZWQga2V5cy4gSXQgY2FuIGJlIHNldCBpbnRvIG1vdGlvbiBhbmQgbW92ZdQgZm9yd2FyZCBieSBhbnkgb2YgdGhlIG1lYW5zIHByb3ZpZGVkIGJ5IHRoaXMgcGFsbGV0LgAoQXV0b0xpbWl0cwEANQUEAAzUIFRoZSBsaW1pdHMgdGhhdCBhcmUgaW1wb3NlZCBvbiBhdXRvbWF0aWMgbWlncmF0aW9ucy4A1CBJZiBzZXQgdG8gTm9uZSwgdGhlbiBubyBhdXRvbWF0aWMgbWlncmF0aW9uIGhhcHBlbnMuAGBTaWduZWRNaWdyYXRpb25NYXhMaW1pdHMAADkFBAAM4CBUaGUgbWF4aW11bSBsaW1pdHMgdGhhdCB0aGUgc2lnbmVkIG1pZ3JhdGlvbiBjb3VsZCB1c2UuALQgSWYgbm90IHNldCwgbm8gc2lnbmVkIHN1Ym1pc3Npb24gaXMgYWxsb3dlZC4AATEFAAFVCQAEJE1heEtleUxlbjgQAAIAAFS0IE1heGltYWwgbnVtYmVyIG9mIGJ5dGVzIHRoYXQgYSBrZXkgY2FuIGhhdmUuALAgRlJBTUUgaXRzZWxmIGRvZXMgbm90IGxpbWl0IHRoZSBrZXkgbGVuZ3RoLgEBIFRoZSBjb25jcmV0ZSB2YWx1ZSBtdXN0IHRoZXJlZm9yZSBkZXBlbmQgb24geW91ciBzdG9yYWdlIHVzYWdlLlkBIEEgW2BmcmFtZV9zdXBwb3J0OjpzdG9yYWdlOjpTdG9yYWdlTk1hcGBdIGZvciBleGFtcGxlIGNhbiBoYXZlIGFuIGFyYml0cmFyeSBudW1iZXIgb2ZFASBrZXlzIHdoaWNoIGFyZSB0aGVuIGhhc2hlZCBhbmQgY29uY2F0ZW5hdGVkLCByZXN1bHRpbmcgaW4gYXJiaXRyYXJpbHkgbG9uZyBrZXlzLgBBASBVc2UgdGhlICpzdGF0ZSBtaWdyYXRpb24gUlBDKiB0byByZXRyaWV2ZSB0aGUgbGVuZ3RoIG9mIHRoZSBsb25nZXN0IGtleSBpbiB5b3VyAQEgc3RvcmFnZTogPGh0dHBzOi8vZ2l0aHViLmNvbS9wYXJpdHl0ZWNoL3N1YnN0cmF0ZS9pc3N1ZXMvMTE2NDI+ACkBIFRoZSBtaWdyYXRpb24gd2lsbCBoYWx0IHdpdGggYSBgSGFsdGVkYCBldmVudCBpZiB0aGlzIHZhbHVlIGlzIHRvbyBzbWFsbC5JASBTaW5jZSB0aGVyZSBpcyBubyByZWFsIHBlbmFsdHkgZnJvbSBvdmVyLWVzdGltYXRpbmcsIGl0IGlzIGFkdmlzZWQgdG8gdXNlIGEgbGFyZ2WAIHZhbHVlLiBUaGUgZGVmYXVsdCBpcyA1MTIgYnl0ZS4AgCBTb21lIGtleSBsZW5ndGhzIGZvciByZWZlcmVuY2U60CAtIFtgZnJhbWVfc3VwcG9ydDo6c3RvcmFnZTo6U3RvcmFnZVZhbHVlYF06IDMyIGJ5dGXIIC0gW2BmcmFtZV9zdXBwb3J0OjpzdG9yYWdlOjpTdG9yYWdlTWFwYF06IDY0IGJ5dGXgIC0gW2BmcmFtZV9zdXBwb3J0OjpzdG9yYWdlOjpTdG9yYWdlRG91YmxlTWFwYF06IDk2IGJ5dGUASCBGb3IgbW9yZSBpbmZvIHNlZUUBIDxodHRwczovL3d3dy5zaGF3bnRhYnJpemkuY29tL2Jsb2cvaW50ZXJhY3Rpbmctd2l0aC10aGUtc3Vic3RyYXRlLXJwYy1lbmRwb2ludC8+AAFdCQAAAEYAADxOb21pbmF0aW9uUG9vbHMBPE5vbWluYXRpb25Qb29sc1RAVG90YWxWYWx1ZUxvY2tlZAEAWQFAAAAAAAAAAAAAAAAAAAAAABSMIFRoZSBzdW0gb2YgZnVuZHMgYWNyb3NzIGFsbCBwb29scy4AcQEgVGhpcyBtaWdodCBiZSBsb3dlciBidXQgbmV2ZXIgaGlnaGVyIHRoYW4gdGhlIHN1bSBvZiBgdG90YWxfYmFsYW5jZWAgb2YgYWxsIFtgUG9vbE1lbWJlcnNgXVkBIGJlY2F1c2UgY2FsbGluZyBgcG9vbF93aXRoZHJhd191bmJvbmRlZGAgbWlnaHQgZGVjcmVhc2UgdGhlIHRvdGFsIHN0YWtlIG9mIHRoZSBwb29sJ3MpASBgYm9uZGVkX2FjY291bnRgIHdpdGhvdXQgYWRqdXN0aW5nIHRoZSBwYWxsZXQtaW50ZXJuYWwgYFVuYm9uZGluZ1Bvb2xgJ3MuACxNaW5Kb2luQm9uZAEAWQFAAAAAAAAAAAAAAAAAAAAAAAScIE1pbmltdW0gYW1vdW50IHRvIGJvbmQgdG8gam9pbiBhIHBvb2wuADRNaW5DcmVhdGVCb25kAQBZAUAAAAAAAAAAAAAAAAAAAAAAHKAgTWluaW11bSBib25kIHJlcXVpcmVkIHRvIGNyZWF0ZSBhIHBvb2wuAGUBIFRoaXMgaXMgdGhlIGFtb3VudCB0aGF0IHRoZSBkZXBvc2l0b3IgbXVzdCBwdXQgYXMgdGhlaXIgaW5pdGlhbCBzdGFrZSBpbiB0aGUgcG9vbCwgYXMgYW6IIGluZGljYXRpb24gb2YgInNraW4gaW4gdGhlIGdhbWUiLgBpASBUaGlzIGlzIHRoZSB2YWx1ZSB0aGF0IHdpbGwgYWx3YXlzIGV4aXN0IGluIHRoZSBzdGFraW5nIGxlZGdlciBvZiB0aGUgcG9vbCBib25kZWQgYWNjb3VudIAgd2hpbGUgYWxsIG90aGVyIGFjY291bnRzIGxlYXZlLgAgTWF4UG9vbHMAADgEAAhpASBNYXhpbXVtIG51bWJlciBvZiBub21pbmF0aW9uIHBvb2xzIHRoYXQgY2FuIGV4aXN0LiBJZiBgTm9uZWAsIHRoZW4gYW4gdW5ib3VuZGVkIG51bWJlciBvZkQgcG9vbHMgY2FuIGV4aXN0LgA4TWF4UG9vbE1lbWJlcnMAADgEAAhJASBNYXhpbXVtIG51bWJlciBvZiBtZW1iZXJzIHRoYXQgY2FuIGV4aXN0IGluIHRoZSBzeXN0ZW0uIElmIGBOb25lYCwgdGhlbiB0aGUgY291bnS4IG1lbWJlcnMgYXJlIG5vdCBib3VuZCBvbiBhIHN5c3RlbSB3aWRlIGJhc2lzLgBUTWF4UG9vbE1lbWJlcnNQZXJQb29sAAA4BAAIQQEgTWF4aW11bSBudW1iZXIgb2YgbWVtYmVycyB0aGF0IG1heSBiZWxvbmcgdG8gcG9vbC4gSWYgYE5vbmVgLCB0aGVuIHRoZSBjb3VudCBvZqggbWVtYmVycyBpcyBub3QgYm91bmQgb24gYSBwZXIgcG9vbCBiYXNpcy4ATEdsb2JhbE1heENvbW1pc3Npb24AAKEBBAAMaQEgVGhlIG1heGltdW0gY29tbWlzc2lvbiB0aGF0IGNhbiBiZSBjaGFyZ2VkIGJ5IGEgcG9vbC4gVXNlZCBvbiBjb21taXNzaW9uIHBheW91dHMgdG8gYm91bmQlASBwb29sIGNvbW1pc3Npb25zIHRoYXQgYXJlID4gYEdsb2JhbE1heENvbW1pc3Npb25gLCBuZWNlc3NhcnkgaWYgYSBmdXR1cmUNASBgR2xvYmFsTWF4Q29tbWlzc2lvbmAgaXMgbG93ZXIgdGhhbiBzb21lIGN1cnJlbnQgcG9vbCBjb21taXNzaW9ucy4ALFBvb2xNZW1iZXJzAAEEBQRdDgQADEAgQWN0aXZlIG1lbWJlcnMuANAgVFdPWC1OT1RFOiBTQUZFIHNpbmNlIGBBY2NvdW50SWRgIGlzIGEgc2VjdXJlIGhhc2guAFRDb3VudGVyRm9yUG9vbE1lbWJlcnMBADgQAAAAAASsQ291bnRlciBmb3IgdGhlIHJlbGF0ZWQgY291bnRlZCBzdG9yYWdlIG1hcAAsQm9uZGVkUG9vbHMAAQQFOGkOBAAEaCBTdG9yYWdlIGZvciBib25kZWQgcG9vbHMuAFRDb3VudGVyRm9yQm9uZGVkUG9vbHMBADgQAAAAAASsQ291bnRlciBmb3IgdGhlIHJlbGF0ZWQgY291bnRlZCBzdG9yYWdlIG1hcAAsUmV3YXJkUG9vbHMAAQQFOHkOBAAIdQEgUmV3YXJkIHBvb2xzLiBUaGlzIGlzIHdoZXJlIHRoZXJlIHJld2FyZHMgZm9yIGVhY2ggcG9vbCBhY2N1bXVsYXRlLiBXaGVuIGEgbWVtYmVycyBwYXlvdXQgaXNZASBjbGFpbWVkLCB0aGUgYmFsYW5jZSBjb21lcyBvdXQgb2YgdGhlIHJld2FyZCBwb29sLiBLZXllZCBieSB0aGUgYm9uZGVkIHBvb2xzIGFjY291bnQuAFRDb3VudGVyRm9yUmV3YXJkUG9vbHMBADgQAAAAAASsQ291bnRlciBmb3IgdGhlIHJlbGF0ZWQgY291bnRlZCBzdG9yYWdlIG1hcAA8U3ViUG9vbHNTdG9yYWdlAAEEBTh9DgQACBkBIEdyb3VwcyBvZiB1bmJvbmRpbmcgcG9vbHMuIEVhY2ggZ3JvdXAgb2YgdW5ib25kaW5nIHBvb2xzIGJlbG9uZ3MgdG8gYSkBIGJvbmRlZCBwb29sLCBoZW5jZSB0aGUgbmFtZSBzdWItcG9vbHMuIEtleWVkIGJ5IHRoZSBib25kZWQgcG9vbHMgYWNjb3VudC4AZENvdW50ZXJGb3JTdWJQb29sc1N0b3JhZ2UBADgQAAAAAASsQ291bnRlciBmb3IgdGhlIHJlbGF0ZWQgY291bnRlZCBzdG9yYWdlIG1hcAAgTWV0YWRhdGEBAQQFOEUBBAAEXCBNZXRhZGF0YSBmb3IgdGhlIHBvb2wuAEhDb3VudGVyRm9yTWV0YWRhdGEBADgQAAAAAASsQ291bnRlciBmb3IgdGhlIHJlbGF0ZWQgY291bnRlZCBzdG9yYWdlIG1hcAAoTGFzdFBvb2xJZAEAOBAAAAAABNAgRXZlciBpbmNyZWFzaW5nIG51bWJlciBvZiBhbGwgcG9vbHMgY3JlYXRlZCBzbyBmYXIuAExSZXZlcnNlUG9vbElkTG9va3VwAAEEBQQ4BAAQ3CBBIHJldmVyc2UgbG9va3VwIGZyb20gdGhlIHBvb2wncyBhY2NvdW50IGlkIHRvIGl0cyBpZC4AdQEgVGhpcyBpcyBvbmx5IHVzZWQgZm9yIHNsYXNoaW5nIGFuZCBvbiBhdXRvbWF0aWMgd2l0aGRyYXcgdXBkYXRlLiBJbiBhbGwgb3RoZXIgaW5zdGFuY2VzLCB0aGUlASBwb29sIGlkIGlzIHVzZWQsIGFuZCB0aGUgYWNjb3VudHMgYXJlIGRldGVybWluaXN0aWNhbGx5IGRlcml2ZWQgZnJvbSBpdC4AdENvdW50ZXJGb3JSZXZlcnNlUG9vbElkTG9va3VwAQA4EAAAAAAErENvdW50ZXIgZm9yIHRoZSByZWxhdGVkIGNvdW50ZWQgc3RvcmFnZSBtYXAAQENsYWltUGVybWlzc2lvbnMBAQQFBGUFBAIEAQEgTWFwIGZyb20gYSBwb29sIG1lbWJlciBhY2NvdW50IHRvIHRoZWlyIG9wdGVkIGNsYWltIHBlcm1pc3Npb24uAAFJBQABYQkADCBQYWxsZXRJZFELIHB5L25vcGxzBIQgVGhlIG5vbWluYXRpb24gcG9vbCdzIHBhbGxldCBpZC4ASE1heFBvaW50c1RvQmFsYW5jZQwECjAdASBUaGUgbWF4aW11bSBwb29sIHBvaW50cy10by1iYWxhbmNlIHJhdGlvIHRoYXQgYW4gYG9wZW5gIHBvb2wgY2FuIGhhdmUuAFUBIFRoaXMgaXMgaW1wb3J0YW50IGluIHRoZSBldmVudCBzbGFzaGluZyB0YWtlcyBwbGFjZSBhbmQgdGhlIHBvb2wncyBwb2ludHMtdG8tYmFsYW5jZXwgcmF0aW8gYmVjb21lcyBkaXNwcm9wb3J0aW9uYWwuAGUBIE1vcmVvdmVyLCB0aGlzIHJlbGF0ZXMgdG8gdGhlIGBSZXdhcmRDb3VudGVyYCB0eXBlIGFzIHdlbGwsIGFzIHRoZSBhcml0aG1ldGljIG9wZXJhdGlvbnNVASBhcmUgYSBmdW5jdGlvbiBvZiBudW1iZXIgb2YgcG9pbnRzLCBhbmQgYnkgc2V0dGluZyB0aGlzIHZhbHVlIHRvIGUuZy4gMTAsIHlvdSBlbnN1cmVlASB0aGF0IHRoZSB0b3RhbCBudW1iZXIgb2YgcG9pbnRzIGluIHRoZSBzeXN0ZW0gYXJlIGF0IG1vc3QgMTAgdGltZXMgdGhlIHRvdGFsX2lzc3VhbmNlIG9mnCB0aGUgY2hhaW4sIGluIHRoZSBhYnNvbHV0ZSB3b3JzZSBjYXNlLgBJASBGb3IgYSB2YWx1ZSBvZiAxMCwgdGhlIHRocmVzaG9sZCB3b3VsZCBiZSBhIHBvb2wgcG9pbnRzLXRvLWJhbGFuY2UgcmF0aW8gb2YgMTA6MS4xASBTdWNoIGEgc2NlbmFyaW8gd291bGQgYWxzbyBiZSB0aGUgZXF1aXZhbGVudCBvZiB0aGUgcG9vbCBiZWluZyA5MCUgc2xhc2hlZC4AME1heFVuYm9uZGluZzgQIAAAAAQ9ASBUaGUgbWF4aW11bSBudW1iZXIgb2Ygc2ltdWx0YW5lb3VzIHVuYm9uZGluZyBjaHVua3MgdGhhdCBjYW4gZXhpc3QgcGVyIG1lbWJlci4AAZUOAAQ0UmV3YXJkQ291bnRlcikFMKggVGhlIHR5cGUgdGhhdCBpcyB1c2VkIGZvciByZXdhcmQgY291bnRlci4ANQEgVGhlIGFyaXRobWV0aWMgb2YgdGhlIHJld2FyZCBjb3VudGVyIG1pZ2h0IHNhdHVyYXRlIGJhc2VkIG9uIHRoZSBzaXplIG9mIHRoZWUBIGBDdXJyZW5jeTo6QmFsYW5jZWAuIElmIHRoaXMgaGFwcGVucywgb3BlcmF0aW9ucyBmYWlscy4gTm9uZXRoZWxlc3MsIHRoaXMgdHlwZSBzaG91bGQgYmVlASBjaG9zZW4gc3VjaCB0aGF0IHRoaXMgZmFpbHVyZSBhbG1vc3QgbmV2ZXIgaGFwcGVucywgYXMgaWYgaXQgaGFwcGVucywgdGhlIHBvb2wgYmFzaWNhbGx5ZQEgbmVlZHMgdG8gYmUgZGlzbWFudGxlZCAob3IgYWxsIHBvb2xzIG1pZ3JhdGVkIHRvIGEgbGFyZ2VyIGBSZXdhcmRDb3VudGVyYCB0eXBlLCB3aGljaCBpczwgYSBQSVRBIHRvIGRvKS4AYQEgU2VlIHRoZSBpbmxpbmUgY29kZSBkb2NzIG9mIGBNZW1iZXI6OnBlbmRpbmdfcmV3YXJkc2AgYW5kIGBSZXdhcmRQb29sOjp1cGRhdGVfcmVjb3JkZWRgZQEgZm9yIGV4YW1wbGUgYW5hbHlzaXMuIEEgW2BzcF9ydW50aW1lOjpGaXhlZFUxMjhgXSBzaG91bGQgYmUgZmluZSBmb3IgY2hhaW5zIHdpdGggYmFsYW5jZVEBIHR5cGVzIHNpbWlsYXIgdG8gdGhhdCBvZiBQb2xrYWRvdCBhbmQgS3VzYW1hLCBpbiB0aGUgYWJzZW5jZSBvZiBzZXZlcmUgc2xhc2hpbmcgKG9yPQEgcHJldmVudGVkIHZpYSBhIHJlYXNvbmFibGUgYE1heFBvaW50c1RvQmFsYW5jZWApLCBmb3IgbWFueSBtYW55IHllYXJzIHRvIGNvbWUuAFAAACRWb3Rlckxpc3QBJFZvdGVyTGlzdBwkTGlzdE5vZGVzAAEEBQSdDgQADIAgQSBzaW5nbGUgbm9kZSwgd2l0aGluIHNvbWUgYmFnLgAFASBOb2RlcyBzdG9yZSBsaW5rcyBmb3J3YXJkIGFuZCBiYWNrIHdpdGhpbiB0aGVpciByZXNwZWN0aXZlIGJhZ3MuAExDb3VudGVyRm9yTGlzdE5vZGVzAQA4EAAAAAAErENvdW50ZXIgZm9yIHRoZSByZWxhdGVkIGNvdW50ZWQgc3RvcmFnZSBtYXAAIExpc3RCYWdzAAEEBSihDgQADGQgQSBiYWcgc3RvcmVkIGluIHN0b3JhZ2UuABkBIFN0b3JlcyBhIGBCYWdgIHN0cnVjdCwgd2hpY2ggc3RvcmVzIGhlYWQgYW5kIHRhaWwgcG9pbnRlcnMgdG8gaXRzZWxmLgBQTmV4dE5vZGVBdXRvUmViYWdnZWQAAAQEAAgFASBQb2ludGVyIHRoYXQgcmVtZW1iZXJzIHRoZSBuZXh0IG5vZGUgdGhhdCB3aWxsIGJlIGF1dG8tcmViYWdnZWQuAQEgV2hlbiBgTm9uZWAsIHRoZSBuZXh0IHNjYW4gd2lsbCBzdGFydCBmcm9tIHRoZSBsaXN0IGhlYWQgYWdhaW4uABBMb2NrAAAQBAAQhCBMb2NrIGFsbCB1cGRhdGVzIHRvIHRoaXMgcGFsbGV0LgA5ASBJZiBhbnkgbm9kZXMgbmVlZHMgdXBkYXRpbmcsIHJlbW92YWwgb3IgYWRkaXRpb24gZHVlIHRvIGEgdGVtcG9yYXJ5IGxvY2ssIHRoZXQgW2BDYWxsOjpyZWJhZ2BdIGNhbiBiZSB1c2VkLgAwUGVuZGluZ1JlYmFnAAEEBQQQBAA4HQEgQWNjb3VudHMgdGhhdCBmYWlsZWQgdG8gYmUgaW5zZXJ0ZWQgaW50byB0aGUgYmFncy1saXN0IGR1ZSB0byBsb2NraW5nLlkBIFRoZXNlIGFjY291bnRzIHdpbGwgYmUgcHJvY2Vzc2VkIHdpdGggcHJpb3JpdHkgaW4gYG9uX2lkbGVgIG9yIHZpYSBgcmViYWdgIGV4dHJpbnNpYy4ATQEgTm90ZTogVGhpcyBzdG9yYWdlIGlzIGludGVudGlvbmFsbHkgdW5ib3VuZGVkLiBUaGUgZm9sbG93aW5nIGZhY3RvcnMgbWFrZSBib3VuZGluZzQgdW5uZWNlc3Nhcnk6UQEgMS4gVGhlIHN0b3JhZ2UgdXNhZ2UgaXMgdGVtcG9yYXJ5IC0gYWNjb3VudHMgYXJlIHByb2Nlc3NlZCBhbmQgcmVtb3ZlZCBpbiBgb25faWRsZWBFASAyLiBUaGUgcGFsbGV0IGlzIG9ubHkgbG9ja2VkIGR1cmluZyBzbmFwc2hvdCBnZW5lcmF0aW9uLCB3aGljaCBpcyB3ZWlnaHQtbGltaXRlZG0BIDMuIFByb2Nlc3NpbmcgaGFwcGVucyBhdCBtdWx0aXBsZSBhY2NvdW50cyBwZXIgYmxvY2ssIGNsZWFyaW5nIGV2ZW4gbGFyZ2UgYmFja2xvZ3MgcXVpY2tseUEBIDQuIEFuIGFydGlmaWNpYWwgbGltaXQgY291bGQgYmUgZXhoYXVzdGVkIGJ5IGFuIGF0dGFja2VyLCBwcmV2ZW50aW5nIGxlZ2l0aW1hdGUBASAgICBhdXRvLXJlYmFnZ2luZyBmcm9tIHB1dHRpbmcgYWNjb3VudHMgaW4gdGhlIGNvcnJlY3QgcG9zaXRpb24AaQEgV2UgZG9uJ3Qgc3RvcmUgdGhlIHNjb3JlIGhlcmUgLSBpdCdzIGFsd2F5cyBmZXRjaGVkIGZyb20gYFNjb3JlUHJvdmlkZXJgIHdoZW4gcHJvY2Vzc2luZyxpASBlbnN1cmluZyB3ZSB1c2UgdGhlIG1vc3QgdXAtdG8tZGF0ZSBzY29yZSAoYWNjb3VudHMgbWF5IGhhdmUgYmVlbiBzbGFzaGVkLCByZXdhcmRlZCwgZXRjLnQgd2hpbGUgd2FpdGluZyBpbiB0aGUgcXVldWUpLgBYQ291bnRlckZvclBlbmRpbmdSZWJhZwEAOBAAAAAABKxDb3VudGVyIGZvciB0aGUgcmVsYXRlZCBjb3VudGVkIHN0b3JhZ2UgbWFwAAF9BQABaQkACDRCYWdUaHJlc2hvbGRzpQ4JGSEDAOQLVAIAAADznoCXAgAAAKixl+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//////////6zQIFRoZSBsaXN0IG9mIHRocmVzaG9sZHMgc2VwYXJhdGluZyB0aGUgdmFyaW91cyBiYWdzLgBJASBJZHMgYXJlIHNlcGFyYXRlZCBpbnRvIHVuc29ydGVkIGJhZ3MgYWNjb3JkaW5nIHRvIHRoZWlyIHNjb3JlLiBUaGlzIHNwZWNpZmllcyB0aGVhASB0aHJlc2hvbGRzIHNlcGFyYXRpbmcgdGhlIGJhZ3MuIEFuIGlkJ3MgYmFnIGlzIHRoZSBsYXJnZXN0IGJhZyBmb3Igd2hpY2ggdGhlIGlkJ3Mgc2NvcmW4IGlzIGxlc3MgdGhhbiBvciBlcXVhbCB0byBpdHMgdXBwZXIgdGhyZXNob2xkLgBlASBXaGVuIGlkcyBhcmUgaXRlcmF0ZWQsIGhpZ2hlciBiYWdzIGFyZSBpdGVyYXRlZCBjb21wbGV0ZWx5IGJlZm9yZSBsb3dlciBiYWdzLiBUaGlzIG1lYW5zWQEgdGhhdCBpdGVyYXRpb24gaXMgX3NlbWktc29ydGVkXzogaWRzIG9mIGhpZ2hlciBzY29yZSB0ZW5kIHRvIGNvbWUgYmVmb3JlIGlkcyBvZiBsb3dlci0BIHNjb3JlLCBidXQgcGVlciBpZHMgd2l0aGluIGEgcGFydGljdWxhciBiYWcgYXJlIHNvcnRlZCBpbiBpbnNlcnRpb24gb3JkZXIuAGggIyBFeHByZXNzaW5nIHRoZSBjb25zdGFudABNASBUaGlzIGNvbnN0YW50IG11c3QgYmUgc29ydGVkIGluIHN0cmljdGx5IGluY3JlYXNpbmcgb3JkZXIuIER1cGxpY2F0ZSBpdGVtcyBhcmUgbm90LCBwZXJtaXR0ZWQuAEEBIFRoZXJlIGlzIGFuIGltcGxpZWQgdXBwZXIgbGltaXQgb2YgYFNjb3JlOjpNQVhgOyB0aGF0IHZhbHVlIGRvZXMgbm90IG5lZWQgdG8gYmUhASBzcGVjaWZpZWQgd2l0aGluIHRoZSBiYWcuIEZvciBhbnkgdHdvIHRocmVzaG9sZCBsaXN0cywgaWYgb25lIGVuZHMgd2l0aDEBIGBTY29yZTo6TUFYYCwgdGhlIG90aGVyIG9uZSBkb2VzIG5vdCwgYW5kIHRoZXkgYXJlIG90aGVyd2lzZSBlcXVhbCwgdGhlIHR3b3wgbGlzdHMgd2lsbCBiZWhhdmUgaWRlbnRpY2FsbHkuADggIyBDYWxjdWxhdGlvbgBVASBJdCBpcyByZWNvbW1lbmRlZCB0byBnZW5lcmF0ZSB0aGUgc2V0IG9mIHRocmVzaG9sZHMgaW4gYSBnZW9tZXRyaWMgc2VyaWVzLCBzdWNoIHRoYXRBASB0aGVyZSBleGlzdHMgc29tZSBjb25zdGFudCByYXRpbyBzdWNoIHRoYXQgYHRocmVzaG9sZFtrICsgMV0gPT0gKHRocmVzaG9sZFtrXSAq0CBjb25zdGFudF9yYXRpbykubWF4KHRocmVzaG9sZFtrXSArIDEpYCBmb3IgYWxsIGBrYC4AWQEgVGhlIGhlbHBlcnMgaW4gdGhlIGAvdXRpbHMvZnJhbWUvZ2VuZXJhdGUtYmFnc2AgbW9kdWxlIGNhbiBzaW1wbGlmeSB0aGlzIGNhbGN1bGF0aW9uLgAsICMgRXhhbXBsZXMAUQEgLSBJZiBgQmFnVGhyZXNob2xkczo6Z2V0KCkuaXNfZW1wdHkoKWAsIHRoZW4gYWxsIGlkcyBhcmUgcHV0IGludG8gdGhlIHNhbWUgYmFnLCBhbmSwICAgaXRlcmF0aW9uIGlzIHN0cmljdGx5IGluIGluc2VydGlvbiBvcmRlci5hASAtIElmIGBCYWdUaHJlc2hvbGRzOjpnZXQoKS5sZW4oKSA9PSA2NGAsIGFuZCB0aGUgdGhyZXNob2xkcyBhcmUgZGV0ZXJtaW5lZCBhY2NvcmRpbmcgdG8RASAgIHRoZSBwcm9jZWR1cmUgZ2l2ZW4gYWJvdmUsIHRoZW4gdGhlIGNvbnN0YW50IHJhdGlvIGlzIGVxdWFsIHRvIDIuZQEgLSBJZiBgQmFnVGhyZXNob2xkczo6Z2V0KCkubGVuKCkgPT0gMjAwYCwgYW5kIHRoZSB0aHJlc2hvbGRzIGFyZSBkZXRlcm1pbmVkIGFjY29yZGluZyB0b1kBICAgdGhlIHByb2NlZHVyZSBnaXZlbiBhYm92ZSwgdGhlbiB0aGUgY29uc3RhbnQgcmF0aW8gaXMgYXBwcm94aW1hdGVseSBlcXVhbCB0byAxLjI0OC5hASAtIElmIHRoZSB0aHJlc2hvbGQgbGlzdCBiZWdpbnMgYFsxLCAyLCAzLCAuLi5dYCwgdGhlbiBhbiBpZCB3aXRoIHNjb3JlIDAgb3IgMSB3aWxsIGZhbGzwICAgaW50byBiYWcgMCwgYW4gaWQgd2l0aCBzY29yZSAyIHdpbGwgZmFsbCBpbnRvIGJhZyAxLCBldGMuADAgIyBNaWdyYXRpb24AYQEgSW4gdGhlIGV2ZW50IHRoYXQgdGhpcyBsaXN0IGV2ZXIgY2hhbmdlcywgYSBjb3B5IG9mIHRoZSBvbGQgYmFncyBsaXN0IG11c3QgYmUgcmV0YWluZWQuXQEgV2l0aCB0aGF0IGBMaXN0OjptaWdyYXRlYCBjYW4gYmUgY2FsbGVkLCB3aGljaCB3aWxsIHBlcmZvcm0gdGhlIGFwcHJvcHJpYXRlIG1pZ3JhdGlvbi4AUE1heEF1dG9SZWJhZ1BlckJsb2NrOBAKAAAAEDUBIE1heGltdW0gbnVtYmVyIG9mIGFjY291bnRzIHRoYXQgbWF5IGJlIHJlLWJhZ2dlZCBhdXRvbWF0aWNhbGx5IGluIGBvbl9pZGxlYC4AUQEgQSB2YWx1ZSBvZiBgMGAgKG9idGFpbmVkIGJ5IGNvbmZpZ3VyaW5nIGB0eXBlIE1heEF1dG9SZWJhZ1BlckJsb2NrID0gKCk7YCkgZGlzYWJsZXM0IHRoZSBmZWF0dXJlLgABqQ4ABBRTY29yZSgECQEgVGhlIHR5cGUgdXNlZCB0byBkaWN0YXRlIGEgbm9kZSBwb3NpdGlvbiByZWxhdGl2ZSB0byBvdGhlciBub2Rlcy4EdN1wLaRvd9es939aSNSvfRJGUJ0hzbEm6LrFaBPEop4Yc2NvcmVzBAx3aG8EsQ4YsCBHZXQgdGhlIGN1cnJlbnQgYHNjb3JlYCBvZiBhIGdpdmVuIGFjY291bnQuAGEBIFJldHVybnMgYChjdXJyZW50LCByZWFsX3Njb3JlKWAsIHRoZSBmb3JtZXIgYmVpbmcgdGhlIGN1cnJlbnQgc2NvcmUgdGhhdCB0aGlzIHBhbGxldCBpc1kBIGF3YXJlIG9mLCB3aGljaCBtYXkgb3IgbWF5IG5vdCBiZSB1cCB0byBkYXRlLCBhbmQgdGhlIGxhdHRlciBiZWluZyB0aGUgcmVhbCBzY29yZSwgYXMwIHByb3ZpZGVkIGJ5HQEgSWYgdGhlIHR3byBkaWZmZXIsIGl0IG1lYW5zIHRoaXMgbm9kZSBpcyBlbGlnaWJsZSBmb3IgW2BDYWxsOjpyZWJhZ2BdLgBSAABARGVsZWdhdGVkU3Rha2luZwFARGVsZWdhdGVkU3Rha2luZxAoRGVsZWdhdG9ycwABBAUEtQ4EABCkIE1hcCBvZiBEZWxlZ2F0b3JzIHRvIHRoZWlyIGBEZWxlZ2F0aW9uYC4AYQEgSW1wbGVtZW50YXRpb24gbm90ZTogV2UgYXJlIG5vdCB1c2luZyBhIGRvdWJsZSBtYXAgd2l0aCBgZGVsZWdhdG9yYCBhbmQgYGFnZW50YCBhY2NvdW50YQEgYXMga2V5cyBzaW5jZSB3ZSB3YW50IHRvIHJlc3RyaWN0IGRlbGVnYXRvcnMgdG8gZGVsZWdhdGUgb25seSB0byBvbmUgYWNjb3VudCBhdCBhIHRpbWUuAFBDb3VudGVyRm9yRGVsZWdhdG9ycwEAOBAAAAAABKxDb3VudGVyIGZvciB0aGUgcmVsYXRlZCBjb3VudGVkIHN0b3JhZ2UgbWFwABhBZ2VudHMAAQQFBLkOBAAEiCBNYXAgb2YgYEFnZW50YCB0byB0aGVpciBgTGVkZ2VyYC4AQENvdW50ZXJGb3JBZ2VudHMBADgQAAAAAASsQ291bnRlciBmb3IgdGhlIHJlbGF0ZWQgY291bnRlZCBzdG9yYWdlIG1hcAAAAW0JAAggUGFsbGV0SWRRCyBweS9kbHN0awSQIEluamVjdGVkIGlkZW50aWZpZXIgZm9yIHRoZSBwYWxsZXQuAExTbGFzaFJld2FyZEZyYWN0aW9uoQEQgJaYAARRASBGcmFjdGlvbiBvZiB0aGUgc2xhc2ggdGhhdCBpcyByZXdhcmRlZCB0byB0aGUgY2FsbGVyIG9mIHBlbmRpbmcgc2xhc2ggdG8gdGhlIGFnZW50LgABvQ4AAABTAAA8U3Rha2luZ1JjQ2xpZW50ATxTdGFraW5nUmNDbGllbnQMXEluY29tcGxldGVTZXNzaW9uUmVwb3J0AACFBQQABB0BIEFuIGluY29tcGxldGUgaW5jb21pbmcgc2Vzc2lvbiByZXBvcnQgdGhhdCB3ZSBoYXZlIG5vdCBhY3RlZCB1cG9uIHlldC4AcExhc3RTZXNzaW9uUmVwb3J0RW5kaW5nSW5kZXgAADgEACD8IFRoZSBsYXN0IHNlc3Npb24gcmVwb3J0J3MgYGVuZF9pbmRleGAgdGhhdCB3ZSBoYXZlIGFjdGVkIHVwb24uAGEBIFRoaXMgYWxsb3dzIHRoaXMgcGFsbGV0IHRvIGVuc3VyZSBhIHNlcXVlbnRpYWxseSBpbmNyZWFzaW5nIHNlcXVlbmNlIG9mIHNlc3Npb24gcmVwb3J0c0wgcGFzc2VkIHRvIHN0YWtpbmcuAF0BIE5vdGUgdGhhdCB3aXRoIHRoZSBYQ00gYmVpbmcgdGhlIGJhY2tib25lIG9mIGNvbW11bmljYXRpb24sIHdlIGhhdmUgYSBndWFyYW50ZWUgb24gdGhlYQEgb3JkZXJpbmcgb2YgbWVzc2FnZXMuIEFzIGxvbmcgYXMgdGhlIFJDIHNlbmRzIHNlc3Npb24gcmVwb3J0cyBpbiBvcmRlciwgd2UgX2V2ZW50dWFsbHlfwCByZWNlaXZlIHRoZW0gaW4gdGhlIHNhbWUgY29ycmVjdCBvcmRlciBhcyB3ZWxsLgBQT3V0Z29pbmdWYWxpZGF0b3JTZXQAAMEOBAAQ2CBBIHZhbGlkYXRvciBzZXQgdGhhdCBpcyBvdXRnb2luZywgYW5kIHNob3VsZCBiZSBzZW50LgB1ASBUaGlzIHdpbGwgYmUgYXR0ZW1wdGVkIHRvIGJlIHNlbnQsIHBvc3NpYmx5IG9uIGV2ZXJ5IGBvbl9pbml0aWFsaXplYCBjYWxsLCB1bnRpbCBpdCBpcyBzZW50LPQgb3IgdGhlIHNlY29uZCB2YWx1ZSByZWFjaGVzIHplcm8sIGF0IHdoaWNoIHBvaW50IHdlIGRyb3AgaXQuAAGBBQABcQkABChLZXlEZXBvc2l0WQFAAOh2SBcAAAAAAAAAAAAAAAQtASBEZXBvc2l0IGhlbGQgd2hlbiBhIHZhbGlkYXRvciBzZXRzIHNlc3Npb24ga2V5cy4gUmVsZWFzZWQgb24gYHB1cmdlX2tleXNgLgAByQ4AAABUAABITXVsdGlCbG9ja0VsZWN0aW9uAUhNdWx0aUJsb2NrRWxlY3Rpb24cFFJvdW5kAQA4EAAAAAAYrCBJbnRlcm5hbCBjb3VudGVyIGZvciB0aGUgbnVtYmVyIG9mIHJvdW5kcy4AVQEgVGhpcyBpcyB1c2VmdWwgZm9yIGRlLWR1cGxpY2F0aW9uIG9mIHRyYW5zYWN0aW9ucyBzdWJtaXR0ZWQgdG8gdGhlIHBvb2wsIGFuZCBnZW5lcmFsbCBkaWFnbm9zdGljcyBvZiB0aGUgcGFsbGV0LgBNASBUaGlzIGlzIG1lcmVseSBpbmNyZW1lbnRlZCBvbmNlIHBlciBldmVyeSB0aW1lIHRoYXQgYW4gdXBzdHJlYW0gYGVsZWN0YCBpcyBjYWxsZWQuADBDdXJyZW50UGhhc2UBAK0FBAAEPCBDdXJyZW50IHBoYXNlLgA4RGVzaXJlZFRhcmdldHMAAQQFODgEAATMIERlc2lyZWQgbnVtYmVyIG9mIHRhcmdldHMgdG8gZWxlY3QgZm9yIHRoaXMgcm91bmQuAEhQYWdlZFZvdGVyU25hcHNob3QAAQgFBdDNDgQABAEBIFBhZ2luYXRlZCB2b3RlciBzbmFwc2hvdC4gQXQgbW9zdCBbYFQ6OlBhZ2VzYF0ga2V5cyB3aWxsIGV4aXN0LgBYUGFnZWRWb3RlclNuYXBzaG90SGFzaAABCAUF0EAEAAwxASBTYW1lIGFzIFtgUGFnZWRWb3RlclNuYXBzaG90YF0sIGJ1dCBpdCB3aWxsIHN0b3JlIHRoZSBoYXNoIG9mIHRoZSBzbmFwc2hvdC4A/CBUaGUgaGFzaCBpcyBnZW5lcmF0ZWQgdXNpbmcgW2BmcmFtZV9zeXN0ZW06OkNvbmZpZzo6SGFzaGluZ2BdLgBMUGFnZWRUYXJnZXRTbmFwc2hvdAABCAUF0N0OBAAMbCBQYWdpbmF0ZWQgdGFyZ2V0IHNuYXBzaG90LgBZASBGb3IgdGhlIHRpbWUgYmVpbmcsIHNpbmNlIHdlIGFzc3VtZSBvbmUgcGFnZXMgb2YgdGFyZ2V0cywgYXQgbW9zdCBPTkUga2V5IHdpbGwgZXhpc3QuAFxQYWdlZFRhcmdldFNuYXBzaG90SGFzaAABCAUF0EAEAAw1ASBTYW1lIGFzIFtgUGFnZWRUYXJnZXRTbmFwc2hvdGBdLCBidXQgaXQgd2lsbCBzdG9yZSB0aGUgaGFzaCBvZiB0aGUgc25hcHNob3QuAPwgVGhlIGhhc2ggaXMgZ2VuZXJhdGVkIHVzaW5nIFtgZnJhbWVfc3lzdGVtOjpDb25maWc6Okhhc2hpbmdgXS4AAaUFAAF5CQAYNFVuc2lnbmVkUGhhc2U4EJYAAAAEgCBEdXJhdGlvbiBvZiB0aGUgdW5zaWduZWQgcGhhc2UuACxTaWduZWRQaGFzZTgQLAEAAAR4IER1cmF0aW9uIG9mIHRoZSBzaWduZWQgcGhhc2UuAFRTaWduZWRWYWxpZGF0aW9uUGhhc2U4EAACAAAQpCBEdXJhdGlvbiBvZiB0aGUgc2luZ2VkIHZhbGlkYXRpb24gcGhhc2UuAFUBIFRoZSBkdXJhdGlvbiBvZiB0aGlzIHNob3VsZCBub3QgYmUgbGVzcyB0aGFuIGBUOjpQYWdlc2AsIGFuZCB0aGVyZSBpcyBubyBwb2ludCBpbiBpdAEBIGJlaW5nIG1vcmUgdGhhbiBgU2lnbmVkUGhhc2U6Ok1heFN1Ym1pc3Npb246OmdldCgpICogVDo6UGFnZXNgLgBUVm90ZXJTbmFwc2hvdFBlckJsb2NrOBDAAgAABMggVGhlIG51bWJlciBvZiBzbmFwc2hvdCB2b3RlcnMgdG8gZmV0Y2ggcGVyIGJsb2NrLgBYVGFyZ2V0U25hcHNob3RQZXJCbG9jazgQ0AcAAATMIFRoZSBudW1iZXIgb2Ygc25hcHNob3QgdGFyZ2V0cyB0byBmZXRjaCBwZXIgYmxvY2suABRQYWdlczgQIAAAABhUIFRoZSBudW1iZXIgb2YgcGFnZXMuAAEBIFRoZSBzbmFwc2hvdCBpcyBjcmVhdGVkIHdpdGggdGhpcyBtYW55IGtleXMgaW4gdGhlIHN0b3JhZ2UgbWFwLgBRASBUaGUgc29sdXRpb25zIG1heSBjb250YWluIGF0IE1PU1QgdGhpcyBtYW55IHBhZ2VzLCBidXQgbGVzcyBwYWdlcyBhcmUgYWNjZXB0YWJsZSBhcxggd2VsbC4AAeEOAAAAVQAAaE11bHRpQmxvY2tFbGVjdGlvblZlcmlmaWVyAWhNdWx0aUJsb2NrRWxlY3Rpb25WZXJpZmllchw8UXVldWVkU29sdXRpb25YAAEIBQXQtQUEABw9ASBUaGUgYFhgIHZhcmlhbnQgb2YgdGhlIGN1cnJlbnQgcXVldWVkIHNvbHV0aW9uLiBNaWdodCBiZSB0aGUgdmFsaWQgb25lIG9yIG5vdC4AaQEgVGhlIHR3byB2YXJpYW50cyBvZiB0aGlzIHN0b3JhZ2UgaXRlbSBpcyB0byBhdm9pZCB0aGUgbmVlZCBvZiBjb3B5aW5nLiBSZWNhbGwgdGhhdCBvbmNlIGFxASBgVmVyaWZ5aW5nU29sdXRpb25gIGlzIGJlaW5nIHByb2Nlc3NlZCwgaXQgbmVlZHMgdG8gd3JpdGUgaXRzIHBhcnRpYWwgc3VwcG9ydHMgKnNvbWV3aGVyZSouaQEgV3JpdGluZyB0aGVzZXMgc3VwcG9ydHMgb24gdG9wIG9mIGEgKmdvb2QqIHF1ZXVlZCBzdXBwb3J0cyBpcyB3cm9uZywgc2luY2Ugd2UgbWlnaHQgYmFpbC51ASBXcml0aW5nIHRoZW0gdG8gYSBidWdnZXIgYW5kIGNvcHlpbmcgYXQgdGhlIG5lZCBpcyBzbGlnaHRseSBiZXR0ZXIsIGJ1dCBleHBlbnNpdmUuIFRoaXMgZmxhZ3wgc3lzdGVtIGlzIGJlc3Qgb2YgYm90aCB3b3JsZHMuADxRdWV1ZWRTb2x1dGlvblkAAQgFBdC1BQQABD0BIFRoZSBgWWAgdmFyaWFudCBvZiB0aGUgY3VycmVudCBxdWV1ZWQgc29sdXRpb24uIE1pZ2h0IGJlIHRoZSB2YWxpZCBvbmUgb3Igbm90LgBIUXVldWVkVmFsaWRWYXJpYW50AQEEBTjlDgQBCF0BIFBvaW50ZXIgdG8gdGhlIHZhcmlhbnQgb2YgW2BRdWV1ZWRTb2x1dGlvblhgXSBvciBbYFF1ZXVlZFNvbHV0aW9uWWBdIHRoYXQgaXMgY3VycmVudGx5HCB2YWxpZC4AWFF1ZXVlZFNvbHV0aW9uQmFja2luZ3MAAQgFBdDpDgQAINQgVGhlIGAoYW1vdW50LCBjb3VudClgIG9mIGJhY2tpbmdzLCBkaXZpZGVkIHBlciBwYWdlLgBxASBUaGlzIGlzIHN0b3JlZCBiZWNhdXNlIGluIHRoZSBsYXN0IGJsb2NrIG9mIHZlcmlmaWNhdGlvbiB3ZSBuZWVkIHRoZW0gdG8gY29tcHV0ZSB0aGUgc2NvcmUsmCBhbmQgY2hlY2sgYE1heEJhY2tlcnNQZXJXaW5uZXJGaW5hbGAuAHEBIFRoaXMgY2FuIG9ubHkgZXZlciBsaXZlIGZvciB0aGUgaW52YWxpZCB2YXJpYW50IG9mIHRoZSBzb2x1dGlvbi4gT25jZSBpdCBpcyB2YWxpZCwgd2UgZG9uJ3QVASBuZWVkIHRoaXMgaW5mb3JtYXRpb24gYW55bW9yZTsgdGhlIHNjb3JlIGlzIGFscmVhZHkgY29tcHV0ZWQgb25jZSBpbvQgW2BRdWV1ZWRTb2x1dGlvblNjb3JlYF0sIGFuZCB0aGUgYmFja2luZyBjb3VudHMgYXJlIGNoZWNrZWQuAExRdWV1ZWRTb2x1dGlvblNjb3JlAAEEBTjVBQQADNggVGhlIHNjb3JlIG9mIHRoZSB2YWxpZCB2YXJpYW50IG9mIFtgUXVldWVkU29sdXRpb25gXS4AuCBUaGlzIG9ubHkgZXZlciBsaXZlcyBmb3IgdGhlIGB2YWxpZGAgdmFyaWFudC4AME1pbmltdW1TY29yZQAA1QUEAARVASBUaGUgbWluaW11bSBzY29yZSB0aGF0IGVhY2ggc29sdXRpb24gbXVzdCBhdHRhaW4gaW4gb3JkZXIgdG8gYmUgY29uc2lkZXJlZCBmZWFzaWJsZS4ANFN0YXR1c1N0b3JhZ2UBAPkOBAEEdCBTdG9yYWdlIGl0ZW0gZm9yIFtgU3RhdHVzYF0uAAHZBQABfQkADGBNYXhCYWNrZXJzUGVyV2lubmVyRmluYWw4EORXAAAUHQEgTWF4aW11bSBudW1iZXIgb2YgYmFja2VycywgcGVyIHdpbm5lciwgYW1vbmcgYWxsIHBhZ2VzIG9mIGFuIGVsZWN0aW9uLgAFASBUaGlzIGNhbiBvbmx5IGJlIGNoZWNrZWQgYXQgdGhlIHZlcnkgZmluYWwgc3RlcCBvZiB2ZXJpZmljYXRpb24uAF0BIE5PVEU6IGF0IHRoZSBtb21lbnQsIHdlIGRvbid0IGNoZWNrIHRoaXMsIGFuZCBpdCBpcyBpbiBwbGFjZSBmb3IgZnV0dXJlIGNvbXBhdGliaWxpdHkuAExNYXhCYWNrZXJzUGVyV2lubmVyOBDAAgAABMQgTWF4aW11bSBudW1iZXIgb2YgYmFja2VycywgcGVyIHdpbm5lciwgcGVyIHBhZ2UuAERNYXhXaW5uZXJzUGVyUGFnZTgQ6AMAAAhhASBNYXhpbXVtIG51bWJlciBvZiBzdXBwb3J0cyAoYWthLiB3aW5uZXJzL3ZhbGlkYXRvcnMvdGFyZ2V0cykgdGhhdCBjYW4gYmUgcmVwcmVzZW50ZWQgaW5MIGEgcGFnZSBvZiByZXN1bHRzLgAAAABWAABoTXVsdGlCbG9ja0VsZWN0aW9uVW5zaWduZWQAAd0FAAAAAAAAVwAAYE11bHRpQmxvY2tFbGVjdGlvblNpZ25lZAFgTXVsdGlCbG9ja0VsZWN0aW9uU2lnbmVkEDRJbnZ1bG5lcmFibGVzAQDVDgQAJBUBIEFjY291bnRzIHdoaXRlbGlzdGVkIGJ5IGdvdmVybmFuY2UgdG8gYWx3YXlzIHN1Ym1pdCB0aGVpciBzb2x1dGlvbnMuAHAgVGhleSBhcmUgZGlmZmVyZW50IGluIHRoYXQ6APwgKiBUaGV5IGFsd2F5cyBwYXkgYSBmaXhlZCBkZXBvc2l0IGZvciBzdWJtaXNzaW9uLCBzcGVjaWZpZWQgYnn0ICAgW2BDb25maWc6OkludnVsbmVyYWJsZURlcG9zaXRgXS4gVGhleSBwYXkgbm8gcGFnZSBkZXBvc2l0LmkBICogSWYgX2VqZWN0ZWRfIGJ5IGJldHRlciBzb2x1dGlvbiBmcm9tIFtgU29ydGVkU2NvcmVzYF0sIHRoZXkgd2lsbCBnZXQgdGhlaXIgZnVsbCBkZXBvc2l0ICAgIGJhY2suCQEgKiBUaGV5IGFsd2F5cyBnZXQgdGhlaXIgdHgtZmVlIGJhY2sgZXZlbiBpZiB0aGV5IGFyZSBfZGlzY2FyZGVkXy4AMFNvcnRlZFNjb3JlcwEBBAU4/Q4EAAAARFN1Ym1pc3Npb25TdG9yYWdlAAEMBQUFCQ/pBQQABOwgVHJpcGxlIG1hcCBmcm9tIChyb3VuZCwgYWNjb3VudCwgcGFnZSkgdG8gYSBzb2x1dGlvbiBwYWdlLgBkU3VibWlzc2lvbk1ldGFkYXRhU3RvcmFnZQABCAUFqQwNDwQAENggTWFwIGZyb20gYWNjb3VudCB0byB0aGUgbWV0YWRhdGEgb2YgdGhlaXIgc3VibWlzc2lvbi4AcQEgaW52YXJpYW50OiBmb3IgYW55IEtleTEgb2YgdHlwZSBgQWNjb3VudElkYCBpbiBbYFN1Ym1pc3Npb25zYF0sIHRoaXMgc3RvcmFnZSBtYXAgYWxzbyBoYXMgYRwgdmFsdWUuAAG1BgABjQkAAAEZDwAABHcLZVBCaAvPBTnSBN9Z0yiJr6YLyclMjiR27ZuqqTAFLGRlcG9zaXRfZm9yCAx3aG8EFHBhZ2VzOFkBFBEBIEdldCB0aGUgZGVwb3NpdCBhbW91bnQgdGhhdCB3aWxsIGJlIGhlbGQgZm9yIGEgc29sdXRpb24gb2YgYHBhZ2VzYC4AQQEgVGhpcyBhbGxvd3MgYW4gb2ZmY2hhaW4gYXBwbGljYXRpb24gdG8ga25vdyB3aGF0IFtgQ29uZmlnOjpEZXBvc2l0UGVyUGFnZWBdIGFuZGUBIFtgQ29uZmlnOjpEZXBvc2l0QmFzZWBdIGFyZSBkb2luZyB1bmRlciB0aGUgaG9vZC4gSXQgYWxzbyB0YWtlcyBpbnRvIGFjY291bnQgaWYgYHdob2AgaXNoIFtgSW52dWxuZXJhYmxlc2BdIG9yIG5vdC4AWAAAHFN0YWtpbmcBHFN0YWtpbmfQOFZhbGlkYXRvckNvdW50AQA4EAAAAAAEnCBUaGUgaWRlYWwgbnVtYmVyIG9mIGFjdGl2ZSB2YWxpZGF0b3JzLgAYQm9uZGVkAAEEBQQEBAAMAQEgTWFwIGZyb20gYWxsIGxvY2tlZCAic3Rhc2giIGFjY291bnRzIHRvIHRoZSBjb250cm9sbGVyIGFjY291bnQuANAgVFdPWC1OT1RFOiBTQUZFIHNpbmNlIGBBY2NvdW50SWRgIGlzIGEgc2VjdXJlIGhhc2guAEBNaW5Ob21pbmF0b3JCb25kAQBZAUAAAAAAAAAAAAAAAAAAAAAABCEBIFRoZSBtaW5pbXVtIGFjdGl2ZSBib25kIHRvIGJlY29tZSBhbmQgbWFpbnRhaW4gdGhlIHJvbGUgb2YgYSBub21pbmF0b3IuAEBNaW5WYWxpZGF0b3JCb25kAQBZAUAAAAAAAAAAAAAAAAAAAAAABCEBIFRoZSBtaW5pbXVtIGFjdGl2ZSBib25kIHRvIGJlY29tZSBhbmQgbWFpbnRhaW4gdGhlIHJvbGUgb2YgYSB2YWxpZGF0b3IuAEhNaW5pbXVtQWN0aXZlU3Rha2UBAFkBQAAAAAAAAAAAAAAAAAAAAAAEEQEgVGhlIG1pbmltdW0gYWN0aXZlIG5vbWluYXRvciBzdGFrZSBvZiB0aGUgbGFzdCBzdWNjZXNzZnVsIGVsZWN0aW9uLgA0TWluQ29tbWlzc2lvbgEAoQEQAAAAAAzoIFRoZSBtaW5pbXVtIGFtb3VudCBvZiBjb21taXNzaW9uIHRoYXQgdmFsaWRhdG9ycyBjYW4gc2V0LgCAIElmIHNldCB0byBgMGAsIG5vIGxpbWl0IGV4aXN0cy4ANE1heENvbW1pc3Npb24BAKEBEADKmjsMwCBUaGUgbWF4aW11bSBjb21taXNzaW9uIHRoYXQgdmFsaWRhdG9ycyBjYW4gc2V0LgAZASBJZiBub3Qgc2V0LCBkZWZhdWx0cyB0byBgUGVyYmlsbDo6b25lKClgICgxMDAlKSwgaS5lLiBubyB1cHBlciBsaW1pdC4ATERpc2FibGVNaW50aW5nR3VhcmQAADgEABw9ASBTYWZldHkgZ3VhcmQ6IHRoZSBlcmEgZnJvbSB3aGljaCBsZWdhY3kgbWludGluZyBpcyBwZXJtYW5lbnRseSBkaXNhYmxlZCBvbiB0aGUVASBwYXlvdXQgc2lkZS4gKipJcnJldmVyc2libGUqKiDigJQgb25jZSBzZXQsIHNob3VsZCBuZXZlciBiZSBjbGVhcmVkLgAxASBTZXBhcmF0ZSBmcm9tIFtgQ29uZmlnOjpEaXNhYmxlTWludGluZ2BdIHdoaWNoIGNvbnRyb2xzIHRoZSBgZW5kX2VyYWAgcGF0aC41ASBUaGlzIHN0b3JhZ2UgZ3VhcmRzIGFnYWluc3QgbWludGluZyBkdXJpbmcgcGF5b3V0IGZvciBlcmFzIHRoYXQgd2VyZSBjcmVhdGVkSQEgaW4gREFQIG1vZGUuIFNldCBhdXRvbWF0aWNhbGx5IGJ5IGBlbmRfZXJhX2RhcGAgb24gZmlyc3Qgc3VjY2Vzc2Z1bCBwb3Qgc25hcHNob3QuGQEgSW4gbGVnYWN5IG1vZGUgKEt1c2FtYSksIHRoaXMgaXMgbmV2ZXIgc2V0IGFuZCB0aGUgZ3VhcmQgaXMgaW5hY3RpdmUuAEBPcHRpbXVtU2VsZlN0YWtlAQBZAUAAAAAAAAAAAAAAAAAAAAAAELQgT3B0aW11bSBzZWxmLXN0YWtlIHRocmVzaG9sZCBmb3IgdmFsaWRhdG9ycy4AIQEgQmVsb3cgdGhpcyB0aHJlc2hvbGQsIHRoZSBpbmNlbnRpdmUgd2VpZ2h0IGdyb3dzIGFzIGBzcXJ0KHNlbGZfc3Rha2UpYC7oIEFib3ZlIGl0LCBncm93dGggaXMgZGFtcGVuZWQgYnkgW2BTZWxmU3Rha2VTbG9wZUZhY3RvcmBdLgBASGFyZENhcFNlbGZTdGFrZQEAWQFAAAAAAAAAAAAAAAAAAAAAAAywIEhhcmQgY2FwIG9uIGVmZmVjdGl2ZSB2YWxpZGF0b3Igc2VsZi1zdGFrZS4ANQEgU2VsZi1zdGFrZSBhYm92ZSB0aGlzIHZhbHVlIHJlY2VpdmVzIG5vIGFkZGl0aW9uYWwgcmV3YXJkIGJlbmVmaXQgKHBsYXRlYXUpLgBQU2VsZlN0YWtlU2xvcGVGYWN0b3IBAKEBEAAAAAAMZQEgU2xvcGUgZmFjdG9yIGNvbnRyb2xsaW5nIHRoZSBkaXNjb3VyYWdlbWVudCByYXRlIGZvciBzZWxmLXN0YWtlIGJldHdlZW4gb3B0aW11bSBhbmQgY2FwLgBFASBWYWx1ZSBiZXR3ZWVuIDAgYW5kIDE6IGs9MSBtZWFucyBubyBkaXNjb3VyYWdlbWVudCwgaz0wIG1lYW5zIGltbWVkaWF0ZSBwbGF0ZWF1LgBwRXJhc1ZhbGlkYXRvckluY2VudGl2ZUJ1ZGdldAEBBAU4WQFAAAAAAAAAAAAAAAAAAAAAAAxBASBUaGUgdG90YWwgdmFsaWRhdG9yIGluY2VudGl2ZSBidWRnZXQgZm9yIHRoZSBnaXZlbiBlcmEsIHNuYXBzaG90dGVkIGF0IGVyYSBlbmQuAFUBIFRoaXMgaXMgdGhlIHNpbWlsYXIgdG8gW2BFcmFzVmFsaWRhdG9yUmV3YXJkYF0gYnV0IGZvciB0aGUgc2VsZi1zdGFrZSBpbmNlbnRpdmUgcG90LgB8RXJhc1N1bVZhbGlkYXRvckluY2VudGl2ZVdlaWdodAEBBAU4WQFAAAAAAAAAAAAAAAAAAAAAAAzYIFN1bSBvZiBhbGwgdmFsaWRhdG9ycycgaW5jZW50aXZlIHdlaWdodHMgZm9yIHRoZSBlcmEuANQgRGlyZWN0bHkgbGlua2VkIHRvIFtgRXJhc1ZhbGlkYXRvckluY2VudGl2ZVdlaWdodGBdLgBwRXJhc1ZhbGlkYXRvckluY2VudGl2ZVdlaWdodAABCAUFqQxZAQQACLwgSW5kaXZpZHVhbCB2YWxpZGF0b3IgaW5jZW50aXZlIHdlaWdodCBwZXIgZXJhLi0BIEVhY2ggdmFsaWRhdG9yJ3Mgc2hhcmUgb2YgdGhlIGluY2VudGl2ZSBwb3QgPSBgdGhlaXJfd2VpZ2h0IC8gc3VtX3dlaWdodGAuAFhBcmVOb21pbmF0b3JzU2xhc2hhYmxlAQBdAQQBHKQgV2hldGhlciBub21pbmF0b3JzIGFyZSBzbGFzaGFibGUgb3Igbm90LgBtASAtIFdoZW4gc2V0IHRvIGB0cnVlYCAoZGVmYXVsdCksIG5vbWluYXRvcnMgYXJlIHNsYXNoZWQgYWxvbmcgd2l0aCB2YWxpZGF0b3JzIGFuZCBtdXN0IHdhaXQpASAgIHRoZSBmdWxsIFtgQ29uZmlnOjpCb25kaW5nRHVyYXRpb25gXSBiZWZvcmUgd2l0aGRyYXdpbmcgdW5ib25kZWQgZnVuZHMuFQEgLSBXaGVuIHNldCB0byBgZmFsc2VgLCBub21pbmF0b3JzIGFyZSBub3Qgc2xhc2hlZCwgYW5kIGNhbiB1bmJvbmQgaW4NASAgIFtgQ29uZmlnOjpOb21pbmF0b3JGYXN0VW5ib25kRHVyYXRpb25gXSBlcmFzIGluc3RlYWQgb2YgdGhlIGZ1bGxZASAgIFtgQ29uZmlnOjpCb25kaW5nRHVyYXRpb25gXSAoc2VlIFtgU3Rha2luZ0ludGVyZmFjZTo6bm9taW5hdG9yX2JvbmRpbmdfZHVyYXRpb25gXSkuAFxFcmFzTm9taW5hdG9yc1NsYXNoYWJsZQABBAU4XQEEABzYIFBlci1lcmEgc25hcHNob3Qgb2Ygd2hldGhlciBub21pbmF0b3JzIGFyZSBzbGFzaGFibGUuAGUBIFRoaXMgaXMgY29waWVkIGZyb20gW2BBcmVOb21pbmF0b3JzU2xhc2hhYmxlYF0gYXQgdGhlIHN0YXJ0IG9mIGVhY2ggZXJhLiBXaGVuIHByb2Nlc3NpbmdRASBvZmZlbmNlcywgd2UgdXNlIHRoZSB2YWx1ZSBmcm9tIHRoaXMgc3RvcmFnZSBmb3IgdGhlIG9mZmVuY2UgZXJhIHRvIGVuc3VyZSB0aGF0IHRoZTkBIHNsYXNoaW5nIHJ1bGVzIGF0IHRoZSB0aW1lIG9mIHRoZSBvZmZlbmNlIGFyZSBhcHBsaWVkLCBub3QgdGhlIGN1cnJlbnQgcnVsZXMuAGUBIElmIGFuIGVudHJ5IGRvZXMgbm90IGV4aXN0IGZvciBhbiBlcmEsIG5vbWluYXRvcnMgYXJlIGFzc3VtZWQgdG8gYmUgc2xhc2hhYmxlIChkZWZhdWx0KS4AGExlZGdlcgABBAIEHQ8EABBFASBNYXAgZnJvbSBhbGwgKHVubG9ja2VkKSAiY29udHJvbGxlciIgYWNjb3VudHMgdG8gdGhlIGluZm8gcmVnYXJkaW5nIHRoZSBzdGFraW5nLgB1ASBOb3RlOiBBbGwgdGhlIHJlYWRzIGFuZCBtdXRhdGlvbnMgdG8gdGhpcyBzdG9yYWdlICpNVVNUKiBiZSBkb25lIHRocm91Z2ggdGhlIG1ldGhvZHMgZXhwb3NlZOggYnkgW2BTdGFraW5nTGVkZ2VyYF0gdG8gZW5zdXJlIGRhdGEgYW5kIGxvY2sgY29uc2lzdGVuY3kuABRQYXllZQABBAUEwQYEAAzkIFdoZXJlIHRoZSByZXdhcmQgcGF5bWVudCBzaG91bGQgYmUgbWFkZS4gS2V5ZWQgYnkgc3Rhc2guANAgVFdPWC1OT1RFOiBTQUZFIHNpbmNlIGBBY2NvdW50SWRgIGlzIGEgc2VjdXJlIGhhc2guAChWYWxpZGF0b3JzAQEEBQTFBggAAAxFASBUaGUgbWFwIGZyb20gKHdhbm5hYmUpIHZhbGlkYXRvciBzdGFzaCBrZXkgdG8gdGhlIHByZWZlcmVuY2VzIG9mIHRoYXQgdmFsaWRhdG9yLgDQIFRXT1gtTk9URTogU0FGRSBzaW5jZSBgQWNjb3VudElkYCBpcyBhIHNlY3VyZSBoYXNoLgBQQ291bnRlckZvclZhbGlkYXRvcnMBADgQAAAAAASsQ291bnRlciBmb3IgdGhlIHJlbGF0ZWQgY291bnRlZCBzdG9yYWdlIG1hcABITWF4VmFsaWRhdG9yc0NvdW50AAA4BAAMMQEgVGhlIG1heGltdW0gdmFsaWRhdG9yIGNvdW50IGJlZm9yZSB3ZSBzdG9wIGFsbG93aW5nIG5ldyB2YWxpZGF0b3JzIHRvIGpvaW4uANAgV2hlbiB0aGlzIHZhbHVlIGlzIG5vdCBzZXQsIG5vIGxpbWl0cyBhcmUgZW5mb3JjZWQuAEBMYXN0VmFsaWRhdG9yRXJhAAEEBQQ4BAAwZQEgVHJhY2tzIHRoZSBsYXN0IGVyYSBpbiB3aGljaCBhbiBhY2NvdW50IHdhcyBhY3RpdmUgYXMgYSB2YWxpZGF0b3IgKGluY2x1ZGVkIGluIHRoZSBlcmEnc1AgZXhwb3N1cmUvc25hcHNob3QpLgBZASBUaGlzIGlzIHVzZWQgdG8gZW5mb3JjZSB0aGF0IGFjY291bnRzIHdobyB3ZXJlIHJlY2VudGx5IHZhbGlkYXRvcnMgbXVzdCB3YWl0IHRoZSBmdWxsYQEgW2BDb25maWc6OkJvbmRpbmdEdXJhdGlvbmBdIGJlZm9yZSB0aGVpciBmdW5kcyBjYW4gYmUgd2l0aGRyYXduLCBldmVuIGlmIHRoZXkgc3dpdGNoIHRvvCBub21pbmF0b3Igcm9sZS4gVGhpcyBwcmV2ZW50cyB2YWxpZGF0b3JzIGZyb206rCAxLiBDb21taXR0aW5nIGEgc2xhc2hhYmxlIG9mZmVuY2UgaW4gZXJhIE58IDIuIFN3aXRjaGluZyB0byBub21pbmF0b3Igcm9sZWUBIDMuIFVzaW5nIHRoZSBzaG9ydGVyIG5vbWluYXRvciB1bmJvbmRpbmcgZHVyYXRpb24gdG8gd2l0aGRyYXcgZnVuZHMgYmVmb3JlIGJlaW5nIHNsYXNoZWQAWQEgVXBkYXRlZCB3aGVuIGVyYSBzbmFwc2hvdHMgYXJlIGNyZWF0ZWQgKGluIGBFcmFzU3Rha2Vyc1BhZ2VkYC9gRXJhc1N0YWtlcnNPdmVydmlld2ApLvggQ2xlYW5lZCB1cCB3aGVuIHRoZSBzdGFzaCBpcyBraWxsZWQgKGZ1bGx5IHdpdGhkcmF3bi9yZWFwZWQpLgAoTm9taW5hdG9ycwABBAUEIQ8EAEx1ASBUaGUgbWFwIGZyb20gbm9taW5hdG9yIHN0YXNoIGtleSB0byB0aGVpciBub21pbmF0aW9uIHByZWZlcmVuY2VzLCBuYW1lbHkgdGhlIHZhbGlkYXRvcnMgdGhhdFggdGhleSB3aXNoIHRvIHN1cHBvcnQuADkBIE5vdGUgdGhhdCB0aGUga2V5cyBvZiB0aGlzIHN0b3JhZ2UgbWFwIG1pZ2h0IGJlY29tZSBub24tZGVjb2RhYmxlIGluIGNhc2UgdGhlLQEgYWNjb3VudCdzIFtgTm9taW5hdGlvbnNRdW90YTo6TWF4Tm9taW5hdGlvbnNgXSBjb25maWd1cmF0aW9uIGlzIGRlY3JlYXNlZC6QIEluIHRoaXMgcmFyZSBjYXNlLCB0aGVzZSBub21pbmF0b3JzZQEgYXJlIHN0aWxsIGV4aXN0ZW50IGluIHN0b3JhZ2UsIHRoZWlyIGtleSBpcyBjb3JyZWN0IGFuZCByZXRyaWV2YWJsZSAoaS5lLiBgY29udGFpbnNfa2V5YHEBIGluZGljYXRlcyB0aGF0IHRoZXkgZXhpc3QpLCBidXQgdGhlaXIgdmFsdWUgY2Fubm90IGJlIGRlY29kZWQuIFRoZXJlZm9yZSwgdGhlIG5vbi1kZWNvZGFibGVtASBub21pbmF0b3JzIHdpbGwgZWZmZWN0aXZlbHkgbm90LWV4aXN0LCB1bnRpbCB0aGV5IHJlLXN1Ym1pdCB0aGVpciBwcmVmZXJlbmNlcyBzdWNoIHRoYXQgaXQBASBpcyB3aXRoaW4gdGhlIGJvdW5kcyBvZiB0aGUgbmV3bHkgc2V0IGBDb25maWc6Ok1heE5vbWluYXRpb25zYC4AYQEgVGhpcyBpbXBsaWVzIHRoYXQgYDo6aXRlcl9rZXlzKCkuY291bnQoKWAgYW5kIGA6Oml0ZXIoKS5jb3VudCgpYCBtaWdodCByZXR1cm4gZGlmZmVyZW50bQEgdmFsdWVzIGZvciB0aGlzIG1hcC4gTW9yZW92ZXIsIHRoZSBtYWluIGA6OmNvdW50KClgIGlzIGFsaWduZWQgd2l0aCB0aGUgZm9ybWVyLCBuYW1lbHkgdGhlbCBudW1iZXIgb2Yga2V5cyB0aGF0IGV4aXN0LgBtASBMYXN0bHksIGlmIGFueSBvZiB0aGUgbm9taW5hdG9ycyBiZWNvbWUgbm9uLWRlY29kYWJsZSwgdGhleSBjYW4gYmUgY2hpbGxlZCBpbW1lZGlhdGVseSB2aWG4IFtgQ2FsbDo6Y2hpbGxfb3RoZXJgXSBkaXNwYXRjaGFibGUgYnkgYW55b25lLgDQIFRXT1gtTk9URTogU0FGRSBzaW5jZSBgQWNjb3VudElkYCBpcyBhIHNlY3VyZSBoYXNoLgBQQ291bnRlckZvck5vbWluYXRvcnMBADgQAAAAAASsQ291bnRlciBmb3IgdGhlIHJlbGF0ZWQgY291bnRlZCBzdG9yYWdlIG1hcAA4VmlydHVhbFN0YWtlcnMAAQQFBBAEABjIIFN0YWtlcnMgd2hvc2UgZnVuZHMgYXJlIG1hbmFnZWQgYnkgb3RoZXIgcGFsbGV0cy4AdQEgVGhpcyBwYWxsZXQgZG9lcyBub3QgYXBwbHkgYW55IGxvY2tzIG9uIHRoZW0sIHRoZXJlZm9yZSB0aGV5IGFyZSBvbmx5IHZpcnR1YWxseSBib25kZWQuIFRoZXltASBhcmUgZXhwZWN0ZWQgdG8gYmUga2V5bGVzcyBhY2NvdW50cyBhbmQgaGVuY2Ugc2hvdWxkIG5vdCBiZSBhbGxvd2VkIHRvIG11dGF0ZSB0aGVpciBsZWRnZXJxASBkaXJlY3RseSB2aWEgdGhpcyBwYWxsZXQuIEluc3RlYWQsIHRoZXNlIGFjY291bnRzIGFyZSBtYW5hZ2VkIGJ5IG90aGVyIHBhbGxldHMgYW5kIGFjY2Vzc2VkKQEgdmlhIGxvdyBsZXZlbCBhcGlzLiBXZSBrZWVwIHRyYWNrIG9mIHRoZW0gdG8gZG8gbWluaW1hbCBpbnRlZ3JpdHkgY2hlY2tzLgBgQ291bnRlckZvclZpcnR1YWxTdGFrZXJzAQA4EAAAAAAErENvdW50ZXIgZm9yIHRoZSByZWxhdGVkIGNvdW50ZWQgc3RvcmFnZSBtYXAASE1heE5vbWluYXRvcnNDb3VudAAAOAQADDEBIFRoZSBtYXhpbXVtIG5vbWluYXRvciBjb3VudCBiZWZvcmUgd2Ugc3RvcCBhbGxvd2luZyBuZXcgdmFsaWRhdG9ycyB0byBqb2luLgDQIFdoZW4gdGhpcyB2YWx1ZSBpcyBub3Qgc2V0LCBubyBsaW1pdHMgYXJlIGVuZm9yY2VkLgAoQ3VycmVudEVyYQAAOAQAEHwgVGhlIGN1cnJlbnQgcGxhbm5lZCBlcmEgaW5kZXguAGUBIFRoaXMgaXMgdGhlIGxhdGVzdCBwbGFubmVkIGVyYSwgZGVwZW5kaW5nIG9uIGhvdyB0aGUgU2Vzc2lvbiBwYWxsZXQgcXVldWVzIHRoZSB2YWxpZGF0b3KAIHNldCwgaXQgbWlnaHQgYmUgYWN0aXZlIG9yIG5vdC4AJEFjdGl2ZUVyYQAAJQ8EABDYIFRoZSBhY3RpdmUgZXJhIGluZm9ybWF0aW9uLCBpdCBob2xkcyBpbmRleCBhbmQgc3RhcnQuAFkBIFRoZSBhY3RpdmUgZXJhIGlzIHRoZSBlcmEgYmVpbmcgY3VycmVudGx5IHJld2FyZGVkLiBWYWxpZGF0b3Igc2V0IG9mIHRoaXMgZXJhIG11c3QgYmWYIGVxdWFsIHRvIHdoYXQgaXMgUkMncyBzZXNzaW9uIHBhbGxldC4AKEJvbmRlZEVyYXMBACkPBAAQJQEgQSBtYXBwaW5nIGZyb20gc3RpbGwtYm9uZGVkIGVyYXMgdG8gdGhlIGZpcnN0IHNlc3Npb24gaW5kZXggb2YgdGhhdCBlcmEuAMggTXVzdCBjb250YWlucyBpbmZvcm1hdGlvbiBmb3IgZXJhcyBmb3IgdGhlIHJhbmdlOrwgYFthY3RpdmVfZXJhIC0gYm91bmRpbmdfZHVyYXRpb247IGFjdGl2ZV9lcmFdYABMRXJhc1N0YWtlcnNPdmVydmlldwABCAUFqQwtDwQAMLggU3VtbWFyeSBvZiB2YWxpZGF0b3IgZXhwb3N1cmUgYXQgYSBnaXZlbiBlcmEuAHEBIFRoaXMgY29udGFpbnMgdGhlIHRvdGFsIHN0YWtlIGluIHN1cHBvcnQgb2YgdGhlIHZhbGlkYXRvciBhbmQgdGhlaXIgb3duIHN0YWtlLiBJbiBhZGRpdGlvbix1ASBpdCBjYW4gYWxzbyBiZSB1c2VkIHRvIGdldCB0aGUgbnVtYmVyIG9mIG5vbWluYXRvcnMgYmFja2luZyB0aGlzIHZhbGlkYXRvciBhbmQgdGhlIG51bWJlciBvZmkBIGV4cG9zdXJlIHBhZ2VzIHRoZXkgYXJlIGRpdmlkZWQgaW50by4gVGhlIHBhZ2UgY291bnQgaXMgdXNlZnVsIHRvIGRldGVybWluZSB0aGUgbnVtYmVyIG9mrCBwYWdlcyBvZiByZXdhcmRzIHRoYXQgbmVlZHMgdG8gYmUgY2xhaW1lZC4AYQEgVGhpcyBpcyBrZXllZCBmaXJzdCBieSB0aGUgZXJhIGluZGV4IHRvIGFsbG93IGJ1bGsgZGVsZXRpb24gYW5kIHRoZW4gdGhlIHN0YXNoIGFjY291bnQuoCBTaG91bGQgb25seSBiZSBhY2Nlc3NlZCB0aHJvdWdoIGBFcmFzYC4AzCBJcyBpdCByZW1vdmVkIGFmdGVyIFtgQ29uZmlnOjpIaXN0b3J5RGVwdGhgXSBlcmFzLkEBIElmIHN0YWtlcnMgaGFzbid0IGJlZW4gc2V0IG9yIGhhcyBiZWVuIHJlbW92ZWQgdGhlbiBlbXB0eSBvdmVydmlldyBpcyByZXR1cm5lZC4AQEVyYXNTdGFrZXJzUGFnZWQAAQwFBQUJDzEPBAAYwCBQYWdpbmF0ZWQgZXhwb3N1cmUgb2YgYSB2YWxpZGF0b3IgYXQgZ2l2ZW4gZXJhLgBxASBUaGlzIGlzIGtleWVkIGZpcnN0IGJ5IHRoZSBlcmEgaW5kZXggdG8gYWxsb3cgYnVsayBkZWxldGlvbiwgdGhlbiBzdGFzaCBhY2NvdW50IGFuZCBmaW5hbGx5yCB0aGUgcGFnZS4gU2hvdWxkIG9ubHkgYmUgYWNjZXNzZWQgdGhyb3VnaCBgRXJhc2AuANQgVGhpcyBpcyBjbGVhcmVkIGFmdGVyIFtgQ29uZmlnOjpIaXN0b3J5RGVwdGhgXSBlcmFzLgA4Q2xhaW1lZFJld2FyZHMBAQgFBakMQQ8EABjcIEhpc3Rvcnkgb2YgY2xhaW1lZCBwYWdlZCByZXdhcmRzIGJ5IGVyYSBhbmQgdmFsaWRhdG9yLgBpASBUaGlzIGlzIGtleWVkIGJ5IGVyYSBhbmQgdmFsaWRhdG9yIHN0YXNoIHdoaWNoIG1hcHMgdG8gdGhlIHNldCBvZiBwYWdlIGluZGV4ZXMgd2hpY2ggaGF2ZTggYmVlbiBjbGFpbWVkLgDMIEl0IGlzIHJlbW92ZWQgYWZ0ZXIgW2BDb25maWc6Okhpc3RvcnlEZXB0aGBdIGVyYXMuAEhFcmFzVmFsaWRhdG9yUHJlZnMBAQgFBakMxQYIAAAUBQEgRXhwb3N1cmUgb2YgdmFsaWRhdG9yIGF0IGVyYSB3aXRoIHRoZSBwcmVmZXJlbmNlcyBvZiB2YWxpZGF0b3JzLgBhASBUaGlzIGlzIGtleWVkIGZpcnN0IGJ5IHRoZSBlcmEgaW5kZXggdG8gYWxsb3cgYnVsayBkZWxldGlvbiBhbmQgdGhlbiB0aGUgc3Rhc2ggYWNjb3VudC4AzCBJcyBpdCByZW1vdmVkIGFmdGVyIFtgQ29uZmlnOjpIaXN0b3J5RGVwdGhgXSBlcmFzLgBMRXJhc1ZhbGlkYXRvclJld2FyZAABBAU4WQEEABQ1ASBUaGUgdG90YWwgc3Rha2VyIHJld2FyZCBidWRnZXQgZm9yIGVhY2ggZXJhIHdpdGhpbiBbYENvbmZpZzo6SGlzdG9yeURlcHRoYF0uAGQgU2V0IGF0IGVyYSBmaW5hbGl6YXRpb246WQEgLSBpbiBub24tbWludGluZyBtb2RlIHRoaXMgaXMgdGhlIHNuYXBzaG90IG9mIHRoZSBlcmEgcG90IGJhbGFuY2UgYmVmb3JlIGFueSBwYXlvdXRzLjEBIC0gaW4gbGVnYWN5IG1vZGUgaXQgY29tZXMgZnJvbSBgRXJhUGF5b3V0YCwgd2l0aCByZXdhcmRzIG1pbnRlZCBvbiB0aGUgZmx5LgBARXJhc1Jld2FyZFBvaW50cwEBBAU4RQ8UAAAAAAAI0CBSZXdhcmRzIGZvciB0aGUgbGFzdCBbYENvbmZpZzo6SGlzdG9yeURlcHRoYF0gZXJhcy4lASBJZiByZXdhcmQgaGFzbid0IGJlZW4gc2V0IG9yIGhhcyBiZWVuIHJlbW92ZWQgdGhlbiAwIHJld2FyZCBpcyByZXR1cm5lZC4AOEVyYXNUb3RhbFN0YWtlAQEEBThZAUAAAAAAAAAAAAAAAAAAAAAACBEBIFRoZSB0b3RhbCBhbW91bnQgc3Rha2VkIGZvciB0aGUgbGFzdCBbYENvbmZpZzo6SGlzdG9yeURlcHRoYF0gZXJhcy4dASBJZiB0b3RhbCBoYXNuJ3QgYmVlbiBzZXQgb3IgaGFzIGJlZW4gcmVtb3ZlZCB0aGVuIDAgc3Rha2UgaXMgcmV0dXJuZWQuACBGb3JjZUVyYQEAlQkEAARUIE1vZGUgb2YgZXJhIGZvcmNpbmcuAEBNYXhTdGFrZWRSZXdhcmRzAADRBgQAEBkBIE1heGltdW0gc3Rha2VkIHJld2FyZHMsIGkuZS4gdGhlIHBlcmNlbnRhZ2Ugb2YgdGhlIGVyYSBpbmZsYXRpb24gdGhhdGwgaXMgdXNlZCBmb3Igc3Rha2UgcmV3YXJkcy4A9CBPbmx5IHVzZWQgaW4gbGVnYWN5IG1pbnRpbmcgbW9kZSAoYERpc2FibGVNaW50aW5nID0gZmFsc2VgKS4ATFNsYXNoUmV3YXJkRnJhY3Rpb24BAKEBEAAAAAAM+CBUaGUgcGVyY2VudGFnZSBvZiB0aGUgc2xhc2ggdGhhdCBpcyBkaXN0cmlidXRlZCB0byByZXBvcnRlcnMuAOQgVGhlIHJlc3Qgb2YgdGhlIHNsYXNoZWQgdmFsdWUgaXMgaGFuZGxlZCBieSB0aGUgYFNsYXNoYC4ATENhbmNlbGVkU2xhc2hQYXlvdXQBAFkBQAAAAAAAAAAAAAAAAAAAAAAIFQEgVGhlIGFtb3VudCBvZiBjdXJyZW5jeSBnaXZlbiB0byByZXBvcnRlcnMgb2YgYSBzbGFzaCBldmVudCB3aGljaCB3YXPsIGNhbmNlbGVkIGJ5IGV4dHJhb3JkaW5hcnkgY2lyY3Vtc3RhbmNlcyAoZS5nLiBnb3Zlcm5hbmNlKS4AME9mZmVuY2VRdWV1ZQABCAUFqQxRDwQAKE0BIFN0b3JlcyByZXBvcnRlZCBvZmZlbmNlcyBpbiBhIHF1ZXVlIHVudGlsIHRoZXkgYXJlIHByb2Nlc3NlZCBpbiBzdWJzZXF1ZW50IGJsb2Nrcy4AZQEgRWFjaCBvZmZlbmNlIGlzIHJlY29yZGVkIHVuZGVyIHRoZSBjb3JyZXNwb25kaW5nIGVyYSBpbmRleCBhbmQgdGhlIG9mZmVuZGluZyB2YWxpZGF0b3Inc3EBIGFjY291bnQuIElmIGFuIG9mZmVuY2Ugc3BhbnMgbXVsdGlwbGUgcGFnZXMsIG9ubHkgb25lIHBhZ2UgaXMgcHJvY2Vzc2VkIGF0IGEgdGltZS4gT2ZmZW5jZXM9ASBhcmUgaGFuZGxlZCBzZXF1ZW50aWFsbHksIHdpdGggdGhlaXIgYXNzb2NpYXRlZCBzbGFzaGVzIGNvbXB1dGVkIGFuZCBzdG9yZWQgaW5RASBgVW5hcHBsaWVkU2xhc2hlc2AuIFRoZXNlIHNsYXNoZXMgYXJlIHRoZW4gYXBwbGllZCBpbiBhIGZ1dHVyZSBlcmEgYXMgZGV0ZXJtaW5lZCBieVggYFNsYXNoRGVmZXJEdXJhdGlvbmAuAFEBIEFueSBvZmZlbmNlcyB0aWVkIHRvIGFuIGVyYSBvbGRlciB0aGFuIGBCb25kaW5nRHVyYXRpb25gIGFyZSBhdXRvbWF0aWNhbGx5IGRyb3BwZWQu0CBQcm9jZXNzaW5nIGFsd2F5cyBwcmlvcml0aXplcyB0aGUgb2xkZXN0IGVyYSBmaXJzdC4AQE9mZmVuY2VRdWV1ZUVyYXMAAFUPBAAwdQEgVHJhY2tzIHRoZSBlcmFzIHRoYXQgY29udGFpbiBvZmZlbmNlcyBpbiBgT2ZmZW5jZVF1ZXVlYCwgc29ydGVkIGZyb20gKiplYXJsaWVzdCB0byBsYXRlc3QqKi4ATQEgLSBUaGlzIGVuc3VyZXMgZWZmaWNpZW50IHJldHJpZXZhbCBvZiB0aGUgb2xkZXN0IG9mZmVuY2Ugd2l0aG91dCBpdGVyYXRpbmcgdGhyb3VnaEAgYE9mZmVuY2VRdWV1ZWAuZQEgLSBXaGVuIGEgbmV3IG9mZmVuY2UgaXMgYWRkZWQgdG8gYE9mZmVuY2VRdWV1ZWAsIGl0cyBlcmEgaXMgKippbnNlcnRlZCBpbiBzb3J0ZWQgb3JkZXIqKmAgaWYgbm90IGFscmVhZHkgcHJlc2VudC5BASAtIFdoZW4gYWxsIG9mZmVuY2VzIGZvciBhbiBlcmEgYXJlIHByb2Nlc3NlZCwgaXQgaXMgKipyZW1vdmVkKiogZnJvbSB0aGlzIGxpc3QuFQEgLSBUaGUgbWF4aW11bSBsZW5ndGggb2YgdGhpcyB2ZWN0b3IgaXMgYm91bmRlZCBieSBgQm9uZGluZ0R1cmF0aW9uICt0ICAgT0ZGRU5DRV9RVUVVRV9FUkFTX0JPVU5EYC4AcQEgVGhpcyBlbGltaW5hdGVzIHRoZSBuZWVkIGZvciBleHBlbnNpdmUgaXRlcmF0aW9uIGFuZCBzb3J0aW5nIHdoZW4gZmV0Y2hpbmcgdGhlIG5leHQgb2ZmZW5jZTAgdG8gcHJvY2Vzcy4ARFByb2Nlc3NpbmdPZmZlbmNlAABZDwQAMB0BIFRyYWNrcyB0aGUgY3VycmVudGx5IHByb2Nlc3NlZCBvZmZlbmNlIHJlY29yZCBmcm9tIHRoZSBgT2ZmZW5jZVF1ZXVlYC4ATQEgLSBXaGVuIHByb2Nlc3Npbmcgb2ZmZW5jZXMsIGFuIG9mZmVuY2UgcmVjb3JkIGlzICoqcG9wcGVkKiogZnJvbSB0aGUgb2xkZXN0IGVyYSBpboggICBgT2ZmZW5jZVF1ZXVlYCBhbmQgc3RvcmVkIGhlcmUudQEgLSBUaGUgZnVuY3Rpb24gYHByb2Nlc3Nfb2ZmZW5jZWAgcmVhZHMgZnJvbSB0aGlzIHN0b3JhZ2UsIHByb2Nlc3Npbmcgb25lIHBhZ2Ugb2YgZXhwb3N1cmUgYXQoICAgYSB0aW1lLmUBIC0gQWZ0ZXIgcHJvY2Vzc2luZyBhIHBhZ2UsIHRoZSBgZXhwb3N1cmVfcGFnZWAgY291bnQgaXMgKipkZWNyZW1lbnRlZCoqIHVudGlsIGl0IHJlYWNoZXMgICAgemVyby4lASAtIE9uY2UgZnVsbHkgcHJvY2Vzc2VkLCB0aGUgb2ZmZW5jZSByZWNvcmQgaXMgcmVtb3ZlZCBmcm9tIHRoaXMgc3RvcmFnZS4AZQEgVGhpcyBlbnN1cmVzIHRoYXQgb2ZmZW5jZXMgYXJlIHByb2Nlc3NlZCBpbmNyZW1lbnRhbGx5LCBwcmV2ZW50aW5nIGV4Y2Vzc2l2ZSBjb21wdXRhdGlvbvwgaW4gYSBzaW5nbGUgYmxvY2sgd2hpbGUgbWFpbnRhaW5pbmcgY29ycmVjdCBzbGFzaGluZyBiZWhhdmlvci4AQFVuYXBwbGllZFNsYXNoZXMAAQgFBV0PYQ8EAATEIEFsbCB1bmFwcGxpZWQgc2xhc2hlcyB0aGF0IGFyZSBxdWV1ZWQgZm9yIGxhdGVyLgBAQ2FuY2VsbGVkU2xhc2hlcwEBBAU4aQ8EABRRASBDYW5jZWxsZWQgc2xhc2hlcyBieSBlcmEgYW5kIHZhbGlkYXRvciB3aXRoIG1heGltdW0gc2xhc2ggZnJhY3Rpb24gdG8gYmUgY2FuY2VsbGVkLgBFASBXaGVuIHNsYXNoZXMgYXJlIGNhbmNlbGxlZCBieSBnb3Zlcm5hbmNlLCB0aGlzIHN0b3JlcyB0aGUgZXJhIGFuZCB0aGUgdmFsaWRhdG9yc1UBIHdob3NlIHNsYXNoZXMgc2hvdWxkIGJlIGNhbmNlbGxlZCwgYWxvbmcgd2l0aCB0aGUgbWF4aW11bSBzbGFzaCBmcmFjdGlvbiB0aGF0IHNob3VsZIQgYmUgY2FuY2VsbGVkIGZvciBlYWNoIHZhbGlkYXRvci4ATFZhbGlkYXRvclNsYXNoSW5FcmEAAQgFBakMbQ8EAAhFASBBbGwgc2xhc2hpbmcgZXZlbnRzIG9uIHZhbGlkYXRvcnMsIG1hcHBlZCBieSBlcmEgdG8gdGhlIGhpZ2hlc3Qgc2xhc2ggcHJvcG9ydGlvbnAgYW5kIHNsYXNoIHZhbHVlIG9mIHRoZSBlcmEuADhDaGlsbFRocmVzaG9sZAAA0QYEAAxRASBUaGUgdGhyZXNob2xkIGZvciB3aGVuIHVzZXJzIGNhbiBzdGFydCBjYWxsaW5nIGBjaGlsbF9vdGhlcmAgZm9yIG90aGVyIHZhbGlkYXRvcnMgL1kBIG5vbWluYXRvcnMuIFRoZSB0aHJlc2hvbGQgaXMgY29tcGFyZWQgdG8gdGhlIGFjdHVhbCBudW1iZXIgb2YgdmFsaWRhdG9ycyAvIG5vbWluYXRvcnMpASAoYENvdW50Rm9yKmApIGluIHRoZSBzeXN0ZW0gY29tcGFyZWQgdG8gdGhlIGNvbmZpZ3VyZWQgbWF4IChgTWF4KkNvdW50YCkuAExWb3RlclNuYXBzaG90U3RhdHVzAQBxDwQCEIAgVm90ZXIgc25hcHNob3QgcHJvZ3Jlc3Mgc3RhdHVzLgBpASBJZiB0aGUgc3RhdHVzIGlzIGBPbmdvaW5nYCwgaXQga2VlcHMgYSBjdXJzb3Igb2YgdGhlIGxhc3Qgdm90ZXIgcmV0cmlldmVkIHRvIHByb2NlZWQgd2hlboQgY3JlYXRpbmcgdGhlIG5leHQgc25hcHNob3QgcGFnZS4AQE5leHRFbGVjdGlvblBhZ2UAADgEABgBASBLZWVwcyB0cmFjayBvZiBhbiBvbmdvaW5nIG11bHRpLXBhZ2UgZWxlY3Rpb24gc29sdXRpb24gcmVxdWVzdC4AZQEgSWYgYFNvbWUoXylgYCwgaXQgaXMgdGhlIG5leHQgcGFnZSB0aGF0IHdlIGludGVuZCB0byBlbGVjdC4gSWYgYE5vbmVgLCB3ZSBhcmUgbm90IGluIHRoZUggZWxlY3Rpb24gcHJvY2Vzcy4AOQEgVGhpcyBpcyBvbmx5IHNldCBpbiBtdWx0aS1ibG9jayBlbGVjdGlvbnMuIFNob3VsZCBhbHdheXMgYmUgYE5vbmVgIG90aGVyd2lzZS4AQEVsZWN0YWJsZVN0YXNoZXMBAHUPBAAEUQEgQSBib3VuZGVkIGxpc3Qgb2YgdGhlICJlbGVjdGFibGUiIHN0YXNoZXMgdGhhdCByZXN1bHRlZCBmcm9tIGEgc3VjY2Vzc2Z1bCBlbGVjdGlvbi4APEVyYVBydW5pbmdTdGF0ZQABBAU4eQ8EAARFASBUcmFja3MgdGhlIGN1cnJlbnQgc3RlcCBvZiBlcmEgcHJ1bmluZyBwcm9jZXNzIGZvciBlYWNoIGVyYSBiZWluZyBsYXppbHkgcHJ1bmVkLgABvQYAAZEJADAwSGlzdG9yeURlcHRoOBBUAAAANIwgTnVtYmVyIG9mIGVyYXMgdG8ga2VlcCBpbiBoaXN0b3J5LgDoIEZvbGxvd2luZyBpbmZvcm1hdGlvbiBpcyBrZXB0IGZvciBlcmFzIGluIGBbY3VycmVudF9lcmEgLSkBIEhpc3RvcnlEZXB0aCwgY3VycmVudF9lcmFdYDogYEVyYXNWYWxpZGF0b3JQcmVmc2AsIGBFcmFzVmFsaWRhdG9yUmV3YXJkYCzgIGBFcmFzUmV3YXJkUG9pbnRzYCwgYEVyYXNUb3RhbFN0YWtlYCwgYENsYWltZWRSZXdhcmRzYCysIGBFcmFzU3Rha2Vyc1BhZ2VkYCwgYEVyYXNTdGFrZXJzT3ZlcnZpZXdgLgDkIE11c3QgYmUgbW9yZSB0aGFuIHRoZSBudW1iZXIgb2YgZXJhcyBkZWxheWVkIGJ5IHNlc3Npb24u+CBJLmUuIGFjdGl2ZSBlcmEgbXVzdCBhbHdheXMgYmUgaW4gaGlzdG9yeS4gSS5lLiBgYWN0aXZlX2VyYSA+xCBjdXJyZW50X2VyYSAtIGhpc3RvcnlfZGVwdGhgIG11c3QgYmUgZ3VhcmFudGVlZC4AEQEgSWYgbWlncmF0aW5nIGFuIGV4aXN0aW5nIHBhbGxldCBmcm9tIHN0b3JhZ2UgdmFsdWUgdG8gY29uZmlnIHZhbHVlLOwgdGhpcyBzaG91bGQgYmUgc2V0IHRvIHNhbWUgdmFsdWUgb3IgZ3JlYXRlciBhcyBpbiBzdG9yYWdlLgA4U2Vzc2lvbnNQZXJFcmE4EAYAAAAELQEgTnVtYmVyIG9mIHNlc3Npb25zIHBlciBlcmEsIGFzIHBlciB0aGUgcHJlZmVyZW5jZXMgb2YgdGhlICoqcmVsYXkgY2hhaW4qKi4ARFBsYW5uaW5nRXJhT2Zmc2V0OBAGAAAAOFEBIE51bWJlciBvZiBzZXNzaW9ucyBiZWZvcmUgdGhlIGVuZCBvZiBhbiBlcmEgd2hlbiB0aGUgZWxlY3Rpb24gZm9yIHRoZSBuZXh0IGVyYSB3aWxsHCBzdGFydC4AXQEgLSBUaGlzIGRldGVybWluZXMgaG93IG1hbnkgc2Vzc2lvbnMgKipiZWZvcmUqKiB0aGUgbGFzdCBzZXNzaW9uIG9mIHRoZSBlcmEgdGhlIHN0YWtpbmeEICAgZWxlY3Rpb24gcHJvY2VzcyBzaG91bGQgYmVnaW4uTQEgLSBUaGUgdmFsdWUgaXMgYm91bmRlZCBiZXR3ZWVuICoqMSoqIChlbGVjdGlvbiBzdGFydHMgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgbGFzdF0BICAgc2Vzc2lvbikgYW5kIGBTZXNzaW9uc1BlckVyYWAgKGVsZWN0aW9uIHN0YXJ0cyBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBmaXJzdCBzZXNzaW9uPCAgIG9mIHRoZSBlcmEpLgA0ICMjIyBFeGFtcGxlOkkBIC0gSWYgYFNlc3Npb25zUGVyRXJhID0gNmAgYW5kIGBQbGFubmluZ0VyYU9mZnNldCA9IDFgLCB0aGUgZWxlY3Rpb24gc3RhcnRzIGF0IHRoZZAgICBiZWdpbm5pbmcgb2Ygc2Vzc2lvbiBgNiAtIDEgPSA1YC5dASAtIElmIGBQbGFubmluZ0VyYU9mZnNldCA9IDZgLCB0aGUgZWxlY3Rpb24gc3RhcnRzIGF0IHRoZSBiZWdpbm5pbmcgb2Ygc2Vzc2lvbiBgNiAtIDYgPeggICAwYCwgbWVhbmluZyBpdCBzdGFydHMgYXQgdGhlIHZlcnkgYmVnaW5uaW5nIG9mIHRoZSBlcmEuADxCb25kaW5nRHVyYXRpb244EBwAAAAU5CBOdW1iZXIgb2YgZXJhcyB0aGF0IHN0YWtlZCBmdW5kcyBtdXN0IHJlbWFpbiBib25kZWQgZm9yLgBNASBUaGlzIGlzIHRoZSBib25kaW5nIGR1cmF0aW9uIGZvciB2YWxpZGF0b3JzLiBOb21pbmF0b3JzIG1heSBoYXZlIGEgc2hvcnRlciBib25kaW5nAQEgZHVyYXRpb24gd2hlbiBbYEFyZU5vbWluYXRvcnNTbGFzaGFibGVgXSBpcyBzZXQgdG8gYGZhbHNlYCAoc2VlzCBbYFN0YWtpbmdJbnRlcmZhY2U6Om5vbWluYXRvcl9ib25kaW5nX2R1cmF0aW9uYF0pLgBsTm9taW5hdG9yRmFzdFVuYm9uZER1cmF0aW9uOBAcAAAAIC0BIE51bWJlciBvZiBlcmFzIG5vbWluYXRvcnMgbXVzdCB3YWl0IHRvIHVuYm9uZCB3aGVuIHRoZXkgYXJlIG5vdCBzbGFzaGFibGUuAEUBIFRoaXMgZHVyYXRpb24gaXMgdXNlZCBmb3Igbm9taW5hdG9ycyB3aGVuIFtgQXJlTm9taW5hdG9yc1NsYXNoYWJsZWBdIGlzIGBmYWxzZWAuXQEgV2hlbiBub21pbmF0b3JzIGFyZSBzbGFzaGFibGUsIHRoZXkgdXNlIHRoZSBmdWxsIFtgQ29uZmlnOjpCb25kaW5nRHVyYXRpb25gXSB0byBlbnN1cmXQIHNsYXNoZXMgY2FuIGJlIGFwcGxpZWQgZHVyaW5nIHRoZSB1bmJvbmRpbmcgcGVyaW9kLgA9ASBTZXR0aW5nIHRoaXMgdG8gYSBsb3dlciB2YWx1ZSAoZS5nLiwgMSBlcmEpIGFsbG93cyBmb3IgZmFzdGVyIHdpdGhkcmF3YWxzIHdoZW60IG5vbWluYXRvcnMgYXJlIG5vdCBzdWJqZWN0IHRvIHNsYXNoaW5nIHJpc2suAEhTbGFzaERlZmVyRHVyYXRpb244EBsAAAAQAQEgTnVtYmVyIG9mIGVyYXMgdGhhdCBzbGFzaGVzIGFyZSBkZWZlcnJlZCBieSwgYWZ0ZXIgY29tcHV0YXRpb24uAA0BIFRoaXMgc2hvdWxkIGJlIGxlc3MgdGhhbiB0aGUgYm9uZGluZyBkdXJhdGlvbi4gU2V0IHRvIDAgaWYgc2xhc2hlcxUBIHNob3VsZCBiZSBhcHBsaWVkIGltbWVkaWF0ZWx5LCB3aXRob3V0IG9wcG9ydHVuaXR5IGZvciBpbnRlcnZlbnRpb24uADhEaXNhYmxlTWludGluZ10BBAEoKQEgV2hlbiBgdHJ1ZWAsIHN0YWtpbmcgZG9lcyBub3QgbWludC4gSXQgZXhwZWN0cyBhbiBleHRlcm5hbCBzb3VyY2UgdG8gZnVuZBkBIHRoZSBnZW5lcmFsIHJld2FyZCBwb3QuIEF0IGVyYSBib3VuZGFyeSwgcmV3YXJkcyBhcmUgc25hcHNob3R0ZWQgZnJvbZAgdGhlIHBvdC4gYEVyYVBheW91dGAgaXMgbm90IGNhbGxlZC4AMQEgV2hlbiBgZmFsc2VgLCBzdGFraW5nIHVzZXMgdGhlIGxlZ2FjeSBwYXRoOiBgRXJhUGF5b3V0YCBjb21wdXRlcyBpbmZsYXRpb24ssCB0b2tlbnMgYXJlIG1pbnRlZCBvbi10aGUtZmx5IGR1cmluZyBwYXlvdXQuACEBICoqSXJyZXZlcnNpYmxlKio6IG9uY2Ugc2V0IHRvIGB0cnVlYCwgbXVzdCBuZXZlciBiZSBzd2l0Y2hlZCBiYWNrLiBFcmFzMQEgY3JlYXRlZCBpbiBub24tbWludGluZyBtb2RlIGhhdmUgZnVuZGVkIHJld2FyZCBwb3RzIOKAlCBzd2l0Y2hpbmcgdG8gbGVnYWN5yCB3b3VsZCBvcnBoYW4gdGhvc2UgcG90cyBhbmQgY2F1c2UgZG91YmxlLW1pbnRpbmcuAExNYXhFeHBvc3VyZVBhZ2VTaXplOBAAAgAALLAgVGhlIG1heGltdW0gc2l6ZSBvZiBlYWNoIGBUOjpFeHBvc3VyZVBhZ2VgLgApASBBbiBgRXhwb3N1cmVQYWdlYCBpcyB3ZWFrbHkgYm91bmRlZCB0byBhIG1heGltdW0gb2YgYE1heEV4cG9zdXJlUGFnZVNpemVgMCBub21pbmF0b3JzLgAhASBGb3Igb2xkZXIgbm9uLXBhZ2VkIGV4cG9zdXJlLCBhIHJld2FyZCBwYXlvdXQgd2FzIHJlc3RyaWN0ZWQgdG8gdGhlIHRvcCEBIGBNYXhFeHBvc3VyZVBhZ2VTaXplYCBub21pbmF0b3JzLiBUaGlzIGlzIHRvIGxpbWl0IHRoZSBpL28gY29zdCBmb3IgdGhlSCBub21pbmF0b3IgcGF5b3V0LgA9ASBOb3RlOiBgTWF4RXhwb3N1cmVQYWdlU2l6ZWAgaXMgdXNlZCB0byBib3VuZCBgQ2xhaW1lZFJld2FyZHNgIGFuZCBpcyB1bnNhZmUgdG+sIHJlZHVjZSB3aXRob3V0IGhhbmRsaW5nIGl0IGluIGEgbWlncmF0aW9uLgA8TWF4VmFsaWRhdG9yU2V0OBDoAwAAEBUBIFRoZSBhYnNvbHV0ZSBtYXhpbXVtIG9mIHdpbm5lciB2YWxpZGF0b3JzIHRoaXMgcGFsbGV0IHNob3VsZCByZXR1cm4uAEEBIEFzIHRoaXMgcGFsbGV0IHN1cHBvcnRzIG11bHRpLWJsb2NrIGVsZWN0aW9uLCB0aGUgc2V0IG9mIHdpbm5lciB2YWxpZGF0b3JzICpwZXKMIGVsZWN0aW9uKiBpcyBib3VuZGVkIGJ5IHRoaXMgdHlwZS4ASE1heFVubG9ja2luZ0NodW5rczgQIAAAACgFASBUaGUgbWF4aW11bSBudW1iZXIgb2YgYHVubG9ja2luZ2AgY2h1bmtzIGEgW2BTdGFraW5nTGVkZ2VyYF0gY2FuCQEgaGF2ZS4gRWZmZWN0aXZlbHkgZGV0ZXJtaW5lcyBob3cgbWFueSB1bmlxdWUgZXJhcyBhIHN0YWtlciBtYXkgYmU4IHVuYm9uZGluZyBpbi4A+CBOb3RlOiBgTWF4VW5sb2NraW5nQ2h1bmtzYCBpcyB1c2VkIGFzIHRoZSB1cHBlciBib3VuZCBmb3IgdGhlAQEgYEJvdW5kZWRWZWNgIGl0ZW0gYFN0YWtpbmdMZWRnZXIudW5sb2NraW5nYC4gU2V0dGluZyB0aGlzIHZhbHVlBQEgbG93ZXIgdGhhbiB0aGUgZXhpc3RpbmcgdmFsdWUgY2FuIGxlYWQgdG8gaW5jb25zaXN0ZW5jaWVzIGluIHRoZQkBIGBTdGFraW5nTGVkZ2VyYCBhbmQgd2lsbCBuZWVkIHRvIGJlIGhhbmRsZWQgcHJvcGVybHkgaW4gYSBydW50aW1lBQEgbWlncmF0aW9uLiBUaGUgdGVzdCBgcmVkdWNpbmdfbWF4X3VubG9ja2luZ19jaHVua3NfYWJydXB0YCBzaG93czQgdGhpcyBlZmZlY3QuADhNYXhFcmFEdXJhdGlvbiggAIq5BwAAAAAouCBNYXhpbXVtIGFsbG93ZWQgZXJhIGR1cmF0aW9uIGluIG1pbGxpc2Vjb25kcy4AUQEgVGhpcyBwcm92aWRlcyBhIGRlZmVuc2l2ZSB1cHBlciBib3VuZCB0byBjYXAgdGhlIGVmZmVjdGl2ZSBlcmEgZHVyYXRpb24sIHByZXZlbnRpbmdhASBleGNlc3NpdmVseSBsb25nIGVyYXMgZnJvbSBjYXVzaW5nIHJ1bmF3YXkgaW5mbGF0aW9uIChlLmcuLCBkdWUgdG8gYnVncykuIElmIHRoZSBhY3R1YWwVASBlcmEgZHVyYXRpb24gZXhjZWVkcyB0aGlzIHZhbHVlLCBpdCB3aWxsIGJlIGNsYW1wZWQgdG8gdGhpcyBtYXhpbXVtLgABASBFeGFtcGxlOiBGb3IgYW4gaWRlYWwgZXJhIGR1cmF0aW9uIG9mIDI0IGhvdXJzICg4Niw0MDAsMDAwIG1zKSywIHRoaXMgY2FuIGJlIHNldCB0byA2MDQsODAwLDAwMCBtcyAoNyBkYXlzKS4A9CBPbmx5IHVzZWQgaW4gbGVnYWN5IG1pbnRpbmcgbW9kZSAoYERpc2FibGVNaW50aW5nID0gZmFsc2VgKS4APE1heFBydW5pbmdJdGVtczgQZAAAABQVASBNYXhpbXVtIG51bWJlciBvZiBzdG9yYWdlIGl0ZW1zIHRoYXQgY2FuIGJlIHBydW5lZCBpbiBhIHNpbmdsZSBjYWxsLgBZASBUaGlzIGNvbnRyb2xzIGhvdyBtYW55IHN0b3JhZ2UgaXRlbXMgY2FuIGJlIGRlbGV0ZWQgaW4gZWFjaCBjYWxsIHRvIGBwcnVuZV9lcmFfc3RlcGAuTQEgVGhpcyBzaG91bGQgYmUgc2V0IHRvIGEgY29uc2VydmF0aXZlIHZhbHVlIChlLmcuLCAxMDAtNTAwIGl0ZW1zKSB0byBlbnN1cmUgcHJ1bmluZ1UBIGRvZXNuJ3QgY29uc3VtZSB0b28gbXVjaCBibG9jayBzcGFjZS4gVGhlIGFjdHVhbCB3ZWlnaHQgaXMgZGV0ZXJtaW5lZCBieSBiZW5jaG1hcmtzLgABfQ8ABDxDdXJyZW5jeUJhbGFuY2VZAQhRASBKdXN0IHRoZSBgQ3VycmVuY3k6OkJhbGFuY2VgIHR5cGU7IHdlIGhhdmUgdGhpcyBpdGVtIHRvIGFsbG93IHVzIHRvIGNvbnN0cmFpbiBpdCB0bzQgYEZyb208dTY0PmAuDF8+SQf3FqyJtjR9Fezs7cpyM4a8T1TMqYl2XoRLnwxoLHBvdF9hY2NvdW50BAxwb3SBDwQEvCBSZXNvbHZlIHRoZSBhY2NvdW50IElEIGZvciBhIGdpdmVuIHJld2FyZCBwb3QuAF8+SQf3FqyJtjR9Fezs7covGyMER8lg8/hD+M+xpwbKLHBvdF9iYWxhbmNlBAxwb3SBD1kBBLAgQ3VycmVudCBiYWxhbmNlIGhlbGQgaW4gYSBnaXZlbiByZXdhcmQgcG90LgBfPkkH9xasibY0fRXs7O3KVuubFKa89l5XnV0Aswk7bFRlcmFfcmV3YXJkX2FsbG9jYXRpb24EDGVyYTiJDwwlASBQZXItZXJhIHJld2FyZCBhbGxvY2F0aW9uIChzdGFrZXIgcmV3YXJkcyArIHZhbGlkYXRvciBpbmNlbnRpdmUgYnVkZ2V0KS4A+CBCb3RoIGZpZWxkcyBhcmUgemVybyBmb3IgZXJhcyBjcmVhdGVkIGluIGxlZ2FjeSBtaW50aW5nIG1vZGUuAFkAAERNZW1iZXJzU3Vic2NyaWJlcgFETWVtYmVyc1N1YnNjcmliZXIUJFJpbmdSb290cwABCAICjQ+RDwQAELggUmVjZW50IHJpbmcgcm9vdHMgcmVjZWl2ZWQgZnJvbSB0aGUgbm90aWZpZXIuBQEgTWFwcyAoaWRlbnRpZmllciwgcmluZ19pbmRleCkgdG8gYSBzbGlkaW5nIHdpbmRvdyBvZiByaW5nIHJvb3RzLikBIFByb29mcyBidWlsdCBhZ2FpbnN0IGFueSByb290IGluIHRoZSB3aW5kb3cgYXJlIGFjY2VwdGVkLiBUaGUgb2xkZXN0IHJvb3TwIGlzIGV2aWN0ZWQgd2hlbiB0aGUgd2luZG93IHJlYWNoZXMgYE1heFJlY2VudFJvb3RzUGVyUmluZ2AuAFBSaW5nQ29sbGVjdGlvblN0YXRlcwEBBAIInQ8oAAAAAAAAAAAAAARBASBTdGF0ZSBvZiBlYWNoIHJpbmcgY29sbGVjdGlvbiBpbmNsdWRpbmcgcmluZ3MgY291bnQgYW5kIG1pc3NpbmcgcmluZ3MgdHJhY2tpbmcuAFxSaW5nQ29sbGVjdGlvbkV4cG9uZW50cwABBAIIDQcEABjkIFJpbmcgZXhwb25lbnQgcmVjb3JkZWQgcGVyIGNvbGxlY3Rpb24gYXQgaW5pdGlhbGl6YXRpb24uAEUBIFRoZSBzdWJzY3JpYmVyIG5lZWRzIHRoZSBleHBvbmVudCB0byBkZXJpdmUgdGhlIGNyeXB0bydzIGBDb25maWdgIHdoZW4gdmVyaWZ5aW5nSQEgcHJvb2ZzLCBzaW5jZSByaW5nIHJvb3RzIG9uIHRoZWlyIG93biBkbyBub3QgY2FycnkgdGhhdCBpbmZvcm1hdGlvbi4gVGhlIGVudHJ5IGlzRQEgd3JpdHRlbiBieSBgaW5pdGlhbGl6ZV9yaW5nX3Jvb3RzYCBhbmQgaXMgcmVhZCBkdXJpbmcgcHJvb2YgdmVyaWZpY2F0aW9uIHZpYSB0aGVkIGBNZW1iZXJzaGlwUHJvdmVyYCBpbXBsLgAwU3Vic2NyaXB0aW9uAQCxDwQABHQgQ3VycmVudCBzdWJzY3JpcHRpb24gc3RhdHVzLgA8UHJvY2Vzc2luZ1N0YXRlAQC1D2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEHQEgU3RhdGUgZm9yIHRyYWNraW5nIHVwZGF0ZXMgcHJvY2Vzc2luZyB0aW1lc3RhbXBzIGFuZCBzZXF1ZW5jZSBudW1iZXJzLgABCQcAAaEJADBEUmluZ1Jvb3RzTm90aWZpZXK5DxgBAQCxD0UIpCBFbmRwb2ludCBjb25maWd1cmF0aW9uIGZvciB0aGUgbm90aWZpZXIusCBJbmNsdWRlcyB0aGUgWENNIGxvY2F0aW9uIGFuZCBwYWxsZXQgaW5kZXguAChTZWxmUGFyYUlkOBDoAwAABCEBIFRoaXMgY2hhaW4ncyBwYXJhY2hhaW4gSUQsIGluY2x1ZGVkIGluIHJlcGxheSByZXF1ZXN0cyB0byB0aGUgbm90aWZpZXIuAHBNYXhNaXNzaW5nUm9vdHNQZXJDb2xsZWN0aW9uOBD/AAAABNQgTWF4aW11bSBudW1iZXIgb2YgbWlzc2luZyByaW5nIHJvb3RzIHBlciBjb2xsZWN0aW9uLgBwTWF4RGVsZXRlZFJpbmdzUGVyQ29sbGVjdGlvbjgQZAAAAAj8IE1heGltdW0gbnVtYmVyIG9mIGRlbGV0ZWQgcmluZyBpbmRpY2VzIHRyYWNrZWQgcGVyIGNvbGxlY3Rpb24uzCBQcmV2ZW50cyBmYWxzZWx5IG1hcmtpbmcgZGVsZXRlZCByaW5ncyBhcyBtaXNzaW5nLgBkTWF4UmluZ1Jvb3RzUGVyQ29sbGVjdGlvbjgQZAAAAAi0IE1heGltdW0gbnVtYmVyIG9mIHJpbmcgcm9vdHMgcGVyIGNvbGxlY3Rpb24u7CBVc2VkIHRvIGJvdW5kIGBjbGVhcmAgb3BlcmF0aW9ucyBkdXJpbmcgcmUtaW5pdGlhbGl6YXRpb24uADhNYXhDb2xsZWN0aW9uczgQCgAAAATgIE1heGltdW0gbnVtYmVyIG9mIHJpbmcgY29sbGVjdGlvbnMgdGhhdCBjYW4gYmUgdHJhY2tlZC4AVFJlcGxheUNvb2xkb3duU2Vjb25kcyggPAAAAAAAAAAIVQEgQ29vbGRvd24gcGVyaW9kIChpbiBzZWNvbmRzKSBhZnRlciByZWNlaXZpbmcgYSBiYXRjaCBiZWZvcmUgc2VuZGluZyByZXBsYXkgcmVxdWVzdHMu2CBBbGxvd3MgdGltZSBmb3IgbXVsdGktcGFydCBiYXRjaGVzIHRvIGFycml2ZSB2aWEgWENNLgBITWF4VXBkYXRlc1BlckJhdGNoOBAKAAAAFDUBIE1heGltdW0gbnVtYmVyIG9mIHJpbmcgcm9vdCB1cGRhdGVzIHRoYXQgY2FuIGJlIHByb2Nlc3NlZCBpbiBhIHNpbmdsZSBiYXRjaC4AKQEgKipJbXBvcnRhbnQ6KiogVGhpcyB2YWx1ZSBNVVNUIGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0aGUgbm90aWZpZXInc+wgYE1heFVwZGF0ZXNQZXJCYXRjaGAuIElmIHRoZSBub3RpZmllciBzZW5kcyBiYXRjaGVzIGxhcmdlch0BIHRoYW4gdGhpcyBsaW1pdCwgZGVjb2Rpbmcgd2lsbCBmYWlsIHNpbGVudGx5IGFuZCB1cGRhdGVzIHdpbGwgYmUgbG9zdC4AWFJlcGxheVdhcm5pbmdUaHJlc2hvbGQ4EAUAAAAEZQEgTnVtYmVyIG9mIHJlcGxheSByZXF1ZXN0IGF0dGVtcHRzIGZvciBhIGdpdmVuIHJpbmcgaW5kZXggYmVmb3JlIGVtaXR0aW5nIHdhcm5pbmcgZXZlbnRzLgBYUmVwbGF5QWJhbmRvblRocmVzaG9sZDgQCgAAAAgFASBUaHJlc2hvbGQgZm9yIGFiYW5kb25pbmcgcmVwbGF5IGF0dGVtcHRzIGZvciBhIGdpdmVuIHJpbmcgaW5kZXguGQEgQWZ0ZXIgdGhpcyBtYW55IGF0dGVtcHRzLCB0aGUgbWlzc2luZyBpbmRleCBpcyByZW1vdmVkIGZyb20gdHJhY2tpbmcuAFRNYXhSZWNlbnRSb290c1BlclJpbmc4EAMAAAAQJQEgTWF4aW11bSBudW1iZXIgb2YgcmVjZW50IHJpbmcgcm9vdHMgc3RvcmVkIHBlciAoY29sbGVjdGlvbiwgcmluZ19pbmRleCkuLQEgV2hlbiBhIHJpbmcgcm9vdCBpcyB1cGRhdGVkLCB0aGUgbmV3IHJvb3QgaXMgcHVzaGVkIGludG8gYSBzbGlkaW5nIHdpbmRvdzslASBwcm9vZnMgYnVpbHQgYWdhaW5zdCBhbnkgcm9vdCBpbiB0aGUgd2luZG93IHN0aWxsIHZlcmlmeS4gT2xkZXN0IHJvb3QgaXOEIGV2aWN0ZWQgd2hlbiB0aGUgd2luZG93IGlzIGZ1bGwuAFhPZmZjaGFpbldvcmtlckludGVydmFsOBABAAAABMwgQmxvY2sgaW50ZXJ2YWwgYmV0d2VlbiBvZmZjaGFpbiB3b3JrZXIgZXhlY3V0aW9ucy4AAb0PAAAAYQAANEFsaWFzQWNjb3VudHMBNEFsaWFzQWNjb3VudHMMOEFsaWFzVG9BY2NvdW50AAEIAgLBDwQEAAjAIE1hcHMgKGNvbGxlY3Rpb24sIGNvbnRleHR1YWxfYWxpYXMpIHRvIGFjY291bnQuUQEgVXNlcyBgRG91YmxlTWFwYCBiZWNhdXNlIHRoZSBzYW1lIGFsaWFzIHZhbHVlIGNvdWxkIGV4aXN0IGluIGRpZmZlcmVudCBjb2xsZWN0aW9ucy4AOEFjY291bnRUb0FsaWFzAAEEAgQJBAQABCUBIE1hcHMgYWNjb3VudCB0byBmdWxsIGFsaWFzIGluZm8gKGNvbGxlY3Rpb24gKyByZXZpc2VkIGNvbnRleHR1YWwgYWxpYXMpLgAgQWxpYXNGZWUAAFkBBAAQ7CBQR0FTIGZlZSBidXJuZWQgb24gZWFjaCBhbGlhcyByZWdpc3RyYXRpb24gLyBhY2NvdW50IHN3YXAuAA0BIFNldCBieSBbYENvbmZpZzo6RmVlTWFuYWdlck9yaWdpbmBdIHZpYSBbYFBhbGxldDo6c2V0X2FsaWFzX2ZlZWBdLhUBIFdoaWxlIHVuc2V0LCBhbGlhcyByZWdpc3RyYXRpb25zIGZhaWwgd2l0aCBbYEVycm9yOjpBbGlhc0ZlZVVuc2V0YF0uAAEtBwABpQkAGExQcm9vZlZhbGlkaXR5V2luZG93KCAsAQAAAAAAAAzoIFRpbWUgdG9sZXJhbmNlIChpbiBzZWNvbmRzKSBmb3IgcHJvb2YtYmFzZWQgdHJhbnNhY3Rpb25zLkkBIFByb29mcyBhcmUgdmFsaWQgZnJvbSBgcHJvb2ZfdmFsaWRfYXRgIHRvIGBwcm9vZl92YWxpZF9hdCArIFByb29mVmFsaWRpdHlXaW5kb3dgLmwgTXVzdCBiZSBncmVhdGVyIHRoYW4gemVyby4ASENsZWFudXBHcmFjZVBlcmlvZCggEA4AAAAAAAAQKQEgR3JhY2UgcGVyaW9kIChpbiBzZWNvbmRzKSBiZWZvcmUgYSBzdGFsZSBhbGlhcyBtYXBwaW5nIGNhbiBiZSBjbGVhbmVkIHVwLhkBIEFmdGVyIGEgcmluZyByZXZpc2lvbiBjaGFuZ2VzLCBhbGlhcyBob2xkZXJzIGhhdmUgdGhpcyBsb25nIHRvIHVwZGF0ZS0BIHZpYSBgcmVwcm92ZV9hbGlhc19hY2NvdW50YCBiZWZvcmUgYW55b25lIGNhbiBjYWxsIGBjbGVhbl91cF9zdGFsZV9hbGlhc2AubCBNdXN0IGJlIGdyZWF0ZXIgdGhhbiB6ZXJvLgBYUGVvcGxlTGl0ZVJpbmdFeHBvbmVudA0HBAkEfCBSaW5nIGV4cG9uZW50IGZvciBQZW9wbGUgTGl0ZS4ASFBlb3BsZVJpbmdFeHBvbmVudA0HBAkEaCBSaW5nIGV4cG9uZW50IGZvciBQZW9wbGUuAGhQZW9wbGVDb2xsZWN0aW9uSWRlbnRpZmllcgiAcG9wOnBvbGthZG90Lm5ldHdvcmsvcGVvcGxlICAgICAAAHhQZW9wbGVMaXRlQ29sbGVjdGlvbklkZW50aWZpZXIIgHBvcDpwb2xrYWRvdC5uZXR3b3JrL3Blb3BsZS1saXRlAAABxQ8AAABiAAAQUGdhcwEQUGdhcwREQ2xhaW1lZEdhc0FsaWFzZXMAAQgGAskPEAQAEAkBIEFsaWFzZXMgdGhhdCBoYXZlIGJlZW4gdXNlZCB0byBjbGFpbSBQR0FTLCBrZXllZCBieSAoZGF5LCBhbGlhcykuQQEgYERheWAgdXNlcyBiaWctZW5kaWFuIGVuY29kaW5nIHdpdGggYElkZW50aXR5YCBoYXNoaW5nIHNvIGl0ZXJhdGlvbiB5aWVsZHMgZGF5czkBIGluIGFzY2VuZGluZyBvcmRlciwgYWxsb3dpbmcgdGhlIG9mZmNoYWluIHdvcmtlciB0byBmaW5kIHRoZSBvbGRlc3Qgc3RhbGUgZGF5SCB3aXRob3V0IHNjYW5uaW5nLgABNQcAAakJABQsUGdhc0Fzc2V0SWQ4EACUNXcEgCBUaGUgYXNzZXQgSUQgb2YgdGhlIFBHQVMgdG9rZW4uADxQZ2FzQ2xhaW1BbW91bnRZAUAAdDukCwAAAAAAAAAAAAAABJQgVGhlIGFtb3VudCBvZiBQR0FTIG1pbnRlZCBwZXIgY2xhaW0uAGxNYXhDbGFpbXNQZXJQZXJpb2RQZXJQZXJzb244EGQAAAAEKQEgTWF4aW11bSBudW1iZXIgb2YgUEdBUyBjbGFpbXMgYSBmdWxsIHBlcnNvbiBtYXkgcGVyZm9ybSBwZXIgcGVyaW9kIChkYXkpLgB8TWF4Q2xhaW1zUGVyUGVyaW9kUGVyTGl0ZVBlcnNvbjgQKAAAABApASBNYXhpbXVtIG51bWJlciBvZiBQR0FTIGNsYWltcyBhIGxpdGUgcGVyc29uIG1heSBwZXJmb3JtIHBlciBwZXJpb2QgKGRheSkuAGEBIFR5cGljYWxseSBsb3dlciB0aGFuIFtgTWF4Q2xhaW1zUGVyUGVyaW9kUGVyUGVyc29uYF0oU2VsZjo6TWF4Q2xhaW1zUGVyUGVyaW9kUGVyUGVyc29uKS0BIHNpbmNlIGxpdGUgcGVyc29uaG9vZCBvZmZlcnMgd2Vha2VyIHN5YmlsIHJlc2lzdGFuY2UgdGhhbiBmdWxsIHBlcnNvbmhvb2QuAIBNYXhQZ2FzQ2xhaW1SZWNvcmRDbGVhbnVwUGVyQ2FsbDgQFAAAAAQ5ASBNYXhpbXVtIG51bWJlciBvZiBQR0FTIGNsYWltIHJlY29yZHMgdGhhdCBjYW4gYmUgY2xlYW5lZCB1cCBpbiBhIHNpbmdsZSBjYWxsLgABzQ8AAABjAAAYUmV2aXZlARhSZXZpdmU4MFByaXN0aW5lQ29kZQABBAZAGAQADMwgQSBtYXBwaW5nIGZyb20gYSBjb250cmFjdCdzIGNvZGUgaGFzaCB0byBpdHMgY29kZS4hASBUaGUgY29kZSdzIHNpemUgaXMgYm91bmRlZCBieSBbYGNyYXRlOjpsaW1pdHM6OkJMT0JfQllURVNgXSBmb3IgUFZNIGFuZPggW2ByZXZtOjpwcmltaXRpdmVzOjplaXAxNzA6Ok1BWF9DT0RFX1NJWkVgXSBmb3IgRVZNIGJ5dGVjb2RlLgAoQ29kZUluZm9PZgABBAZA0Q8EAATgIEEgbWFwcGluZyBmcm9tIGEgY29udHJhY3QncyBjb2RlIGhhc2ggdG8gaXRzIGNvZGUgaW5mby4ANEFjY291bnRJbmZvT2YAAQQGPQfZDwQABPwgVGhlIGRhdGEgYXNzb2NpYXRlZCB0byBhIGNvbnRyYWN0IG9yIGV4dGVybmFsbHkgb3duZWQgYWNjb3VudC4APE5hdGl2ZURlcG9zaXRPZgEBCAYG5Q9ZAUAAAAAAAAAAAAAAAAAAAAAAKB0BIE5hdGl2ZSBjdXJyZW5jeSBzdG9yYWdlIGRlcG9zaXQgY29udHJpYnV0ZWQgYnkgYSB1c2VyIGludG8gYSBjb250cmFjdC4AMQEgQm91bmRzIGhvdyBtdWNoIG5hdGl2ZSB2YWx1ZSB0aGUgdXNlciBjYW4gcmVjZWl2ZSBiYWNrIGZyb20gdGhhdCBjb250cmFjdCdzRCBzdG9yYWdlIGRlcG9zaXQuAKAgS2V5czogYChob2xkZXIsIGNvbnRyaWJ1dG9yKSAtPiBhbW91bnRgaQEgLSBgaG9sZGVyYDogYWNjb3VudCBvbiB3aGljaCB0aGUgZGVwb3NpdCBpcyBoZWxkIChhIGNvbnRyYWN0LCBvciB0aGUgcGFsbGV0J3Mgb3duIGFjY291bnR0ICAgZm9yIGNvZGUtdXBsb2FkIGRlcG9zaXRzKS51ASAtIGBjb250cmlidXRvcmA6IHVzZXIgdGhhdCBmdW5kZWQgdGhlIGRlcG9zaXQuIFJlY2VpdmVzIHRoZSBuYXRpdmUgcG9ydGlvbiBvbiByZWZ1bmQsIGNhcHBlZHAgICBhdCB0aGlzIGVudHJ5J3MgYGFtb3VudGAuADxJbW11dGFibGVEYXRhT2YAAQQGPQfpDwQABNAgVGhlIGltbXV0YWJsZSBkYXRhIGFzc29jaWF0ZWQgd2l0aCBhIGdpdmVuIGFjY291bnQuADREZWxldGlvblF1ZXVlAAEEBTjtDwQAFLggVGVybWluYXRlZCBjb250cmFjdHMgdGhhdCBhd2FpdCBsYXp5IGNsZWFudXAuAEUBIEVhY2ggZW50cnkgcGFpcnMgYSBjaGlsZCB0cmllIElEIHdpdGggdGhlIGNvbnRyYWN0IGFjY291bnQgc28gdGhhdCBgb25faWRsZWAgY2FuWQEgZHJhaW4gYm90aCB0aGUgY2hpbGQgdHJpZSBhbmQgYW55IFtgTmF0aXZlRGVwb3NpdE9mYF0gZW50cmllcyB0aGF0IG5hbWVkIHRoZSBjb250cmFjdEUBIGFzIGBob2xkZXJgLiBCb3RoIGNhbiBiZSBhcmJpdHJhcmlseSBsYXJnZSwgc28gY2xlYW51cCBydW5zIGxhemlseSBpbiBgb25faWRsZWAuAFBEZWxldGlvblF1ZXVlQ291bnRlcgEA8Q8gAAAAAAAAAAAITQEgQSBwYWlyIG9mIG1vbm90b25pYyBjb3VudGVycyB1c2VkIHRvIHRyYWNrIHRoZSBsYXRlc3QgY29udHJhY3QgbWFya2VkIGZvciBkZWxldGlvbqggYW5kIHRoZSBsYXRlc3QgZGVsZXRlZCBjb250cmFjdCBpbiBxdWV1ZS4APE9yaWdpbmFsQWNjb3VudAABBAY9BwQEABjYIE1hcCBhIEV0aGVyZXVtIGFkZHJlc3MgdG8gaXRzIG9yaWdpbmFsIGBBY2NvdW50SWQzMmAuAEUBIFdoZW4gZGVyaXZpbmcgYSBgSDE2MGAgZnJvbSBhbiBgQWNjb3VudElkMzJgIHdlIHVzZSBhIGhhc2ggZnVuY3Rpb24uIEluIG9yZGVyIHRvMQEgcmVjb25zdHJ1Y3QgdGhlIG9yaWdpbmFsIGFjY291bnQgd2UgbmVlZCB0byBzdG9yZSB0aGUgcmV2ZXJzZSBtYXBwaW5nIGhlcmUuGQEgUmVnaXN0ZXIgeW91ciBgQWNjb3VudElkMzJgIHVzaW5nIFtgUGFsbGV0OjptYXBfYWNjb3VudGBdIGluIG9yZGVyIHRvZCB1c2UgaXQgd2l0aCB0aGlzIHBhbGxldC4ANEV0aGVyZXVtQmxvY2sBAPUPEQ0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQdASBUaGUgY3VycmVudCBFdGhlcmV1bSBibG9jayB0aGF0IGlzIHN0b3JlZCBpbiB0aGUgYG9uX2ZpbmFsaXplYCBtZXRob2QuABwgIyBOb3RlACkBIFRoaXMgY291bGQgYmUgZnVydGhlciBvcHRpbWl6ZWQgaW50byB0aGUgZnV0dXJlIHRvIHN0b3JlIG9ubHkgdGhlIG1pbmltdW0dASBpbmZvcm1hdGlvbiBuZWVkZWQgdG8gcmVjb25zdHJ1Y3QgdGhlIEV0aGVyZXVtIGJsb2NrIGF0IHRoZSBSUEMgbGV2ZWwuAD0BIFNpbmNlIHRoZSBibG9jayBpcyBjb252ZW5pZW50IHRvIGhhdmUgYXJvdW5kLCBhbmQgdGhlIGV4dHJhIGRldGFpbHMgYXJlIGNhcHBlZD0BIGJ5IGEgZmV3IGhhc2hlcyBhbmQgdGhlIHZlY3RvciBvZiB0cmFuc2FjdGlvbiBoYXNoZXMsIHdlIHN0b3JlIHRoZSBibG9jayBoZXJlLgAkQmxvY2tIYXNoAQEEBjhAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADJQgTWFwcGluZyBmb3IgYmxvY2sgbnVtYmVyIGFuZCBoYXNoZXMuAHEBIFRoZSBtYXhpbXVtIG51bWJlciBvZiBlbGVtZW50cyBzdG9yZWQgaXMgY2FwcGVkIGJ5IHRoZSBibG9jayBoYXNoIGNvdW50IGBCTE9DS19IQVNIX0NPVU5UYC4APFJlY2VpcHRJbmZvRGF0YQEAYRAEABj0IFRoZSBkZXRhaWxzIG5lZWRlZCB0byByZWNvbnN0cnVjdCB0aGUgcmVjZWlwdCBpbmZvIG9mZmNoYWluLgApASBUaGlzIGNvbnRhaW5zIHZhbHVhYmxlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBnYXMgdXNlZCBieSB0aGUgdHJhbnNhY3Rpb24uAB0BIE5PVEU6IFRoZSBpdGVtIGlzIHVuYm91bmQgYW5kIHNob3VsZCB0aGVyZWZvcmUgbmV2ZXIgYmUgcmVhZCBvbiBjaGFpbi7QIEl0IGNvdWxkIG90aGVyd2lzZSBpbmZsYXRlIHRoZSBQb1Ygc2l6ZSBvZiBhIGJsb2NrLgBERXRoQmxvY2tCdWlsZGVySVIBAGkQEQYAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAABCl1OgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABJAgSW5jcmVtZW50YWwgZXRoZXJldW0gYmxvY2sgYnVpbGRlci4AaEV0aEJsb2NrQnVpbGRlckZpcnN0VmFsdWVzAQBxEAQAEOQgVGhlIGZpcnN0IHRyYW5zYWN0aW9uIGFuZCByZWNlaXB0IG9mIHRoZSBldGhlcmV1bSBibG9jay4APQEgVGhlc2UgdmFsdWVzIGFyZSBtb3ZlZCBvdXQgb2YgdGhlIGBFdGhCbG9ja0J1aWxkZXJJUmAgdG8gYXZvaWQgc2VyaWFsaXppbmcgYW5kPQEgZGVzZXJpYWxpemluZyB0aGVtIG9uIGV2ZXJ5IHRyYW5zYWN0aW9uLiBJbnN0ZWFkLCB0aGV5IGFyZSBsb2FkZWQgd2hlbiBuZWVkZWQuADxEZWJ1Z1NldHRpbmdzT2YBAHUQEAAAAAAEMQEgRGVidWdnaW5nIHNldHRpbmdzIHRoYXQgY2FuIGJlIGNvbmZpZ3VyZWQgd2hlbiBEZWJ1Z0VuYWJsZWQgY29uZmlnIGlzIHRydWUuAAE5BwABrQkALDhEZXBvc2l0UGVyQnl0ZVkBQKCGAQAAAAAAAAAAAAAAAAAUEQEgVGhlIGFtb3VudCBvZiBiYWxhbmNlIGEgY2FsbGVyIGhhcyB0byBwYXkgZm9yIGVhY2ggYnl0ZSBvZiBzdG9yYWdlLgAcICMgTm90ZQA1ASBJdCBpcyBzYWZlIHRvIGNoYW5nZSB0aGlzIHZhbHVlIG9uIGEgbGl2ZSBjaGFpbiBhcyBhbGwgcmVmdW5kcyBhcmUgcHJvIHJhdGEuADhEZXBvc2l0UGVySXRlbVkBQACUNXcAAAAAAAAAAAAAAAAUBQEgVGhlIGFtb3VudCBvZiBiYWxhbmNlIGEgY2FsbGVyIGhhcyB0byBwYXkgZm9yIGVhY2ggc3RvcmFnZSBpdGVtLgAcICMgTm90ZQA1ASBJdCBpcyBzYWZlIHRvIGNoYW5nZSB0aGlzIHZhbHVlIG9uIGEgbGl2ZSBjaGFpbiBhcyBhbGwgcmVmdW5kcyBhcmUgcHJvIHJhdGEuAFxEZXBvc2l0UGVyQ2hpbGRUcmllSXRlbVkBQAAtMQEAAAAAAAAAAAAAAAAkMQEgVGhlIGFtb3VudCBvZiBiYWxhbmNlIGEgY2FsbGVyIGhhcyB0byBwYXkgZm9yIGVhY2ggY2hpbGQgdHJpZSBzdG9yYWdlIGl0ZW0uADkBIFRob3NlIGFyZSB0aGUgaXRlbXMgY3JlYXRlZCBieSBhIGNvbnRyYWN0LiBJbiBTb2xpZGl0eSBlYWNoIHZhbHVlIGlzIGEgc2luZ2xlOQEgc3RvcmFnZSBpdGVtLiBUaGlzIGlzIHdoeSB3ZSBuZWVkIHRvIHNldCBhIGxvd2VyIHZhbHVlIGhlcmUgdGhhbiBmb3IgdGhlIG1haW7cIHRyaWUgaXRlbXMuIE90aGVyd2lzZSB0aGUgc3RvcmFnZSBkZXBvc2l0IGlzIHRvbyBoaWdoLgAcICMgTm90ZQA1ASBJdCBpcyBzYWZlIHRvIGNoYW5nZSB0aGlzIHZhbHVlIG9uIGEgbGl2ZSBjaGFpbiBhcyBhbGwgcmVmdW5kcyBhcmUgcHJvIHJhdGEuAHBDb2RlSGFzaExvY2t1cERlcG9zaXRQZXJjZW50oQEQAKPhEQxFASBUaGUgcGVyY2VudGFnZSBvZiB0aGUgc3RvcmFnZSBkZXBvc2l0IHRoYXQgc2hvdWxkIGJlIGhlbGQgZm9yIHVzaW5nIGEgY29kZSBoYXNoLlEBIEluc3RhbnRpYXRpbmcgYSBjb250cmFjdCwgcHJvdGVjdHMgdGhlIGNvZGUgZnJvbSBiZWluZyByZW1vdmVkLiBJbiBvcmRlciB0byBwcmV2ZW50JQEgYWJ1c2UgdGhlc2UgYWN0aW9ucyBhcmUgcHJvdGVjdGVkIHdpdGggYSBwZXJjZW50YWdlIG9mIHRoZSBjb2RlIGRlcG9zaXQuAEBBbGxvd0VWTUJ5dGVjb2RlXQEEAQTQIEFsbG93IEVWTSBieXRlY29kZSB0byBiZSB1cGxvYWRlZCBhbmQgaW5zdGFudGlhdGVkLgAcQ2hhaW5JZCggQRsPGQAAAAAQAQEgVGhlIFtFSVAtMTU1XShodHRwczovL2VpcHMuZXRoZXJldW0ub3JnL0VJUFMvZWlwLTE1NSkgY2hhaW4gSUQuAAUBIFRoaXMgaXMgYSB1bmlxdWUgaWRlbnRpZmllciBhc3NpZ25lZCB0byBlYWNoIGJsb2NrY2hhaW4gbmV0d29yayxsIHByZXZlbnRpbmcgcmVwbGF5IGF0dGFja3MuAEBOYXRpdmVUb0V0aFJhdGlvOBAA4fUFBFEBIFRoZSByYXRpbyBiZXR3ZWVuIHRoZSBkZWNpbWFsIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBuYXRpdmUgdG9rZW4gYW5kIHRoZSBFVEggdG9rZW4uAFRNYXhFdGhFeHRyaW5zaWNXZWlnaHQpBUAAALLTWVvwBgAAAAAAAAAAME0BIFRoZSBmcmFjdGlvbiB0aGUgbWF4aW11bSBleHRyaW5zaWMgd2VpZ2h0IGBldGhfdHJhbnNhY3RgIGV4dHJpbnNpY3MgYXJlIGNhcHBlZCB0by4AUQEgVGhpcyBpcyBub3QgYSBzZWN1cml0eSBtZWFzdXJlIGJ1dCBhIHJlcXVpcmVtZW50IGR1ZSB0byBob3cgd2UgbWFwIGdhcyB0byBgKFdlaWdodCxdASBTdG9yYWdlRGVwb3NpdClgLiBUaGUgbWFwcGluZyBtaWdodCBkZXJpdmUgYSBgV2VpZ2h0YCB0aGF0IGlzIHRvbyBsYXJnZSB0byBmaXQgaW50byBhbvwgZXh0cmluc2ljLiBJbiB0aGlzIGNhc2Ugd2UgY2FwIGl0IHRvIHRoZSBsaW1pdCBzcGVjaWZpZWQgaGVyZS4AZQEgYGV0aF90cmFuc2FjdGAgdHJhbnNhY3Rpb25zIHRoYXQgdXNlIG1vcmUgd2VpZ2h0IHRoYW4gc3BlY2lmaWVkIHdpbGwgZmFpbCB3aXRoIGFuIG91dCBvZkkBIGdhcyBlcnJvciBkdXJpbmcgZXhlY3V0aW9uLiBMYXJnZXIgZnJhY3Rpb25zIHdpbGwgYWxsb3cgbW9yZSB0cmFuc2FjdGlvbnMgdG8gcnVuLk0BIFNtYWxsZXIgdmFsdWVzIHdhc3RlIGxlc3MgYmxvY2sgc3BhY2U6IENob29zZSBhcyBzbWFsbCBhcyBwb3NzaWJsZSBhbmQgYXMgbGFyZ2UgYXMsIG5lY2Vzc2FyeS4ARCAgRGVmYXVsdDogYDAuNWAuADBEZWJ1Z0VuYWJsZWRdAQQABC0BIEFsbG93cyBkZWJ1Zy1tb2RlIGNvbmZpZ3VyYXRpb24sIHN1Y2ggYXMgZW5hYmxpbmcgdW5saW1pdGVkIGNvbnRyYWN0IHNpemUuABxBdXRvTWFwXQEEARgxASBXaGVuIGVuYWJsZWQsIGFjY291bnRzIGFyZSBhdXRvbWF0aWNhbGx5IG1hcHBlZCBvbiBjcmVhdGlvbiBhbmQgdW5tYXBwZWQgb25FASBraWxsIHZpYSBbYEF1dG9NYXBwZXJgXS4gVGhpcyByZW1vdmVzIHRoZSBuZWVkIGZvciBleHBsaWNpdCBgbWFwX2FjY291bnRgIGNhbGxzLgA5ASBSZXF1aXJlcyBgZnJhbWVfc3lzdGVtOjpDb25maWc6Ok9uTmV3QWNjb3VudGAgYW5kIGBPbktpbGxlZEFjY291bnRgIHRvIGJlIHNldB0BIHRvIFtgQXV0b01hcHBlcmBdLiBXaGVuIGVuYWJsZWQsIHRoZSBgbWFwX2FjY291bnRgIGFuZCBgdW5tYXBfYWNjb3VudGBwIGRpc3BhdGNoYWJsZXMgYXJlIGRpc2FibGVkLgAgR2FzU2NhbGU4EKCGAQBEHQEgVGhpcyBkZXRlcm1pbmVzIHRoZSByZWxhdGl2ZSBzY2FsZSBvZiBvdXIgZ2FzIHByaWNlIGFuZCBnYXMgZXN0aW1hdGVzLgBVASBCeSBkZWZhdWx0LCB0aGUgZ2FzIHByaWNlIChpbiB3ZWkpIGlzIGBGZWVJbmZvOjpuZXh0X2ZlZV9tdWx0aXBsaWVyKClgIG11bHRpcGxpZWQgYnldASBgTmF0aXZlVG9FdGhSYXRpb2AuIGBHYXNTY2FsZWAgYWxsb3dzIHRvIHNjYWxlIHRoaXMgdmFsdWU6IHRoZSBhY3R1YWwgZ2FzIHByaWNlIGlzIHRoZbAgZGVmYXVsdCBnYXMgcHJpY2UgbXVsdGlwbGllZCBieSBgR2FzU2NhbGVgLgBZASBBcyBhIGNvbnNlcXVlbmNlLCBnYXMgY29zdCAoZ2FzIGVzdGltYXRlcyBhbmQgYWN0dWFsIGdhcyB1c2FnZSBkdXJpbmcgdHJhbnNhY3Rpb24pIGlzUQEgc2NhbGVkIGRvd24gYnkgdGhlIHNhbWUgZmFjdG9yLiBUaHVzLCB0aGUgdG90YWwgdHJhbnNhY3Rpb24gY29zdCBpcyBub3QgYWZmZWN0ZWQgYnltASBgR2FzU2NhbGVgIOKAk8KgYXBhcnQgZnJvbSByb3VuZGluZyBkaWZmZXJlbmNlczogdGhlIHRyYW5zYWN0aW9uIGNvc3QgaXMgYWx3YXlzIGEgbXVsdGlwbGVhASBvZiB0aGUgZ2FzIHByaWNlIGFuZCBpcyBkZXJpdmVkIGJ5IHJvdW5kZWQgdXAsIHNvIHRoYXQgd2l0aCBoaWdoZXIgYEdhc1NjYWxlc2AgdGhpcyBjYW4RASBsZWFkIHRvIGhpZ2hlciBnYXMgY29zdCBhcyB0aGUgcm91bmRpbmcgZGlmZmVyZW5jZSB3b3VsZCBiZSBsYXJnZXIuAGUBIFRoZSBtYWluIHB1cnBvc2Ugb2YgY2hhbmdpbmcgdGhlIGBHYXNTY2FsZWAgaXMgdG8gdHVuZSB0aGUgZ2FzIGNvc3Qgc28gdGhhdCBpdCBpcyBjbG9zZXJJASB0byBzdGFuZGFyZCBFVk0gZ2FzIGNvc3QgYW5kIGNvbnRyYWN0cyB3aWxsIG5vdCBydW4gb3V0IG9mIGdhcyB3aGVuIHRvb2xzIG9yIGNvZGV4IGFzc3VtZSBoYXJkIGNvZGVkIGdhcyBsaW1pdHMuAJggUmVxdWlyZW1lbnQ6IGBHYXNTY2FsZWAgbXVzdCBub3QgYmUgMAABeRAABCxSdW50aW1lQ2FsbCAEbCBUaGUgb3ZlcmFyY2hpbmcgY2FsbCB0eXBlLgBkAABEQXNzZXRzUHJlY29tcGlsZXMBREFzc2V0c1ByZWNvbXBpbGVzDDhOZXh0QXNzZXRJbmRleAEAOBAAAAAACMwgVGhlIG5leHQgYXZhaWxhYmxlIGFzc2V0IGluZGV4IGZvciBmb3JlaWduIGFzc2V0cy4ZASBUaGlzIGlzIGluY3JlbWVudGVkIGVhY2ggdGltZSBhIG5ldyBmb3JlaWduIGFzc2V0IG1hcHBpbmcgaXMgY3JlYXRlZC4AaEFzc2V0SW5kZXhUb0ZvcmVpZ25Bc3NldElkAAEEBjgdAgQABFEBIE1hcHBpbmcgYW4gYXNzZXQgaW5kZXggKGRlcml2ZWQgZnJvbSB0aGUgcHJlY29tcGlsZSBhZGRyZXNzKSB0byBhIGBGb3JlaWduQXNzZXRJZGAuAGhGb3JlaWduQXNzZXRJZFRvQXNzZXRJbmRleAABBAIdAjgEAARdASBNYXBwaW5nIGEgYEZvcmVpZ25Bc3NldElkYCB0byBhbiBhc3NldCBpbmRleCAodXNlZCBmb3IgZGVyaXZpbmcgcHJlY29tcGlsZSBhZGRyZXNzZXMpLgAAAAAABDhGb3JlaWduQXNzZXRJZB0CCCkBIFRoZSBmb3JlaWduIGFzc2V0IElEIHR5cGUuIFRoaXMgbXVzdCBtYXRjaCB0aGUgYEFzc2V0SWRgIHR5cGUgdXNlZCBieSB0aGW0IGBwYWxsZXRfYXNzZXRzYCBpbnN0YW5jZSBmb3IgZm9yZWlnbiBhc3NldHMuAGUAAFxBc3NldHNQcmVjb21waWxlc1Blcm1pdAFcQXNzZXRzUHJlY29tcGlsZXNQZXJtaXQEGE5vbmNlcwEBCAICfRBFB4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABx4IE5vbmNlcyBmb3IgcGVybWl0IHNpZ25hdHVyZXMu2CBNYXBwaW5nOiAodmVyaWZ5aW5nX2NvbnRyYWN0LCBvd25lcl9hZGRyZXNzKSA9PiBub25jZQA1ASBVc2VzIEJsYWtlMl8xMjhDb25jYXQgZm9yIHRoZSBmaXJzdCBrZXkgdG8gcHJldmVudCBzdG9yYWdlIGNvbGxpc2lvbiBhdHRhY2tzIQEgd2hlbiB0aGUgdmVyaWZ5aW5nX2NvbnRyYWN0IGFkZHJlc3MgY291bGQgYmUgaW5mbHVlbmNlZCBieSBhbiBhdHRhY2tlci4AMQEgTm90ZTogRUlQLTI2MTIgc3BlY2lmaWVzIHVpbnQyNTYgbm9uY2UuIFdlIHN0b3JlIGFzIFUyNTYgZm9yIGNvbXBhdGliaWxpdHkuAAAABBxDaGFpbklkKCBBGw8ZAAAAAAS8IFRoZSBjaGFpbiBJRCB1c2VkIGluIEVJUC03MTIgZG9tYWluIHNlcGFyYXRvci4AAYEQAAAAZgAASFZlc3RpbmdQcmVjb21waWxlcwAAAAAAAABnBEkBIE1pbmltYWwgcGFsbGV0IHByb3ZpZGluZyBhIGBQYWxsZXQ8VD5gIHR5cGUgZm9yIHRoZSBGUkFNRSBiZW5jaG1hcmtpbmcgbWFjaGluZXJ5LgAwRG90bnNHYXRld2F5ATBEb3Ruc0dhdGV3YXkUREFsaWFzUmVnaXN0cmF0aW9uAAEEAgiFEAQABPQgVHJhY2tzIHdoaWNoIGFsaWFzZXMgaGF2ZSByZWdpc3RlcmVkIG5hbWVzIHZpYSB0aGlzIGdhdGV3YXkuADBBY2NvdW50QWxpYXMAAQQCBAgEAAwBASBSZXZlcnNlIGxvb2t1cCBmcm9tIGEgcmVnaXN0ZXJpbmcgYWNjb3VudCB0byB0aGUgYWxpYXMgaXQgdXNlZC4AIQEgUG9wdWxhdGVkIGFsb25nc2lkZSBbYEFsaWFzUmVnaXN0cmF0aW9uYF0gaW4gW2BQYWxsZXQ6OnJlZ2lzdGVyX25hbWVgXS4AUEF0dGVzdGF0aW9uQWxsb3dhbmNlAQEEAgQ4EAAAAAAEBQEgTnVtYmVyIG9mIHVzZXJuYW1lIHJlc2VydmF0aW9ucyBhbiBhdHRlc3RlciBpcyBhbGxvd2VkIHRvIGdyYW50LgA4TGl0ZUxhYmVsT3duZXIAAQQCUQcEBAAM/CBSZWNvcmRzIHdoaWNoIGFjY291bnQgb3ducyBlYWNoIHJlc2VydmVkIGxpdGUtcGVyc29uIGxhYmVsLCBzbyEBIFtgUGFsbGV0OjpyZWdpc3Rlcl9uYW1lYF0gY2FuIHZlcmlmeSB0aGF0IGEgYExpbms6OkxpdGVVc2VybmFtZWAgdGFyZ2V0XCBiZWxvbmdzIHRvIHRoZSBjYWxsZXIuAEREaXNwYXRjaGVyQWRkcmVzcwAAPQcEAAw1ASBBZGRyZXNzIG9mIHRoZSBgUm9vdEdhdGV3YXlEaXNwYXRjaGVyYCBjb250cmFjdC4gTXVzdCBiZSBzZXQgKHZpYSBnZW5lc2lzIG9yHQEgW2BQYWxsZXQ6OnNldF9kaXNwYXRjaGVyX2FkZHJlc3NgXSkgYmVmb3JlIFtgUGFsbGV0OjpyZXNlcnZlX25hbWVgXSBvcpwgW2BQYWxsZXQ6OnJlZ2lzdGVyX25hbWVgXSBjYW4gc3VjY2VlZC4AAU0HAAGxCQAMVE1heENvbnRyYWN0Q2FsbFdlaWdodBUBKAcA6HZIFwIAgAAMMQEgTWF4aW11bSB3ZWlnaHQgYnVkZ2V0IGZvciBhIHNpbmdsZSBjb250cmFjdCBjYWxsLiBUaGUgZXh0cmluc2ljIHByZS1jaGFyZ2VzMQEgcGFsbGV0IG92ZXJoZWFkICsgdGhpcyBidWRnZXQgYW5kIHJlZnVuZHMgdW51c2VkIHdlaWdodCBiYXNlZCBvbiB0aGUgYWN0dWFsoCB3ZWlnaHQgcmVwb3J0ZWQgYnkgdGhlIGNvbnRyYWN0IGNhbGxlci4ASE1heFZhbGlkaXR5U2Vjb25kcygggPQDAAAAAAAInCBTaWduYXR1cmUgdmFsaWRpdHkgd2luZG93LCBpbiBzZWNvbmRzLiUBIEEgc2lnbmF0dXJlIGlzIGFjY2VwdGVkIG9ubHkgaWYgYG5vdyA8PSBzaWduZWRfYXQgKyBNYXhWYWxpZGl0eVNlY29uZHNgLgBQTWF4RnV0dXJlU2tld1NlY29uZHMoIB4AAAAAAAAACMggQ2xvY2stc2tldyB0b2xlcmFuY2UgZm9yIGBzaWduZWRfYXRgLCBpbiBzZWNvbmRzLi0BIEEgc2lnbmF0dXJlIGlzIGFjY2VwdGVkIG9ubHkgaWYgYHNpZ25lZF9hdCA8PSBub3cgKyBNYXhGdXR1cmVTa2V3U2Vjb25kc2AuAAGNEAAEUEF0dGVzdGF0aW9uU2lnbmF0dXJlvQQEDQEgU2lnbmF0dXJlIHR5cGUgdXNlZCBieSBjYW5kaWRhdGVzIHRvIGNvbnNlbnQgdG8gbmFtZSByZXNlcnZhdGlvbnMuAJgAAERPcmlnaW5SZXN0cmljdGlvbgFET3JpZ2luUmVzdHJpY3Rpb24EGFVzYWdlcwABBAJlB5UQBAAEjCBUaGUgY3VycmVudCB1c2FnZSBmb3IgZWFjaCBlbnRpdHkuAAFhBwABtQkAAAGZEAAEQFJlc3RyaWN0ZWRFbnRpdHllByRRASBUaGUgdHlwZSB0aGF0IHJlcHJlc2VudCB0aGUgZW50aXRpZXMgdHJhY2tlZCwgaXRzIGFsbG93YW5jZSBhbmQgdGhlIGNvbnZlcnNpb24gZnJvbawgb3JpZ2luIGlzIGJvdW5kZWQgaW4gW2BSZXN0cmljdGVkRW50aXR5YF0uAB0BIFRoaXMgaXMgdGhlIGNhbm9uaWNhbCBvcmlnaW4gZnJvbSB0aGUgcG9pbnQgb2YgdmlldyBvZiB1c2FnZSB0cmFja2luZy6MIEVhY2ggZW50aXR5IGlzIHRyYWNrZWQgc2VwYXJhdGVseS4ASQEgVGhpcyBpcyBkaWZmZXJlbnQgZnJvbSBvcmlnaW4gYXMgYSBtdWx0aXBsZSBvcmlnaW4gY2FuIHJlcHJlc2VudCBhIHNpbmdsZSBlbnRpdHkuYQEgRm9yIGV4YW1wbGUsIGltYWdpbmUgYSBEQU8gb3JpZ2luIHdpdGggYSBwZXJjZW50YWdlIG9mIHZvdGVycywgd2Ugd2FudCB0byB0cmFjayB0aGUgREFPrCBlbnRpdHkgcmVnYXJkbGVzcyBvZiB0aGUgdm90ZXIgcGVyY2VudGFnZS4AmQAAEFN1ZG8BEFN1ZG8EDEtleQAABAQABIQgVGhlIGBBY2NvdW50SWRgIG9mIHRoZSBzdWRvIGtleS4AAWkHAAG5CQAAAZ0QAAQsUnVudGltZUNhbGwgBEggQSBzdWRvLWFibGUgY2FsbC4A+wAANFBnYXNBbGxvd2FuY2UAAAG9CQAAAAAA/AAAFEFoT3BzARRBaE9wcww4UmNMZWFzZVJlc2VydmUAAQwFBQWhEFkBBAA4BQEgQW1vdW50IG9mIGJhbGFuY2UgdGhhdCB3YXMgcmVzZXJ2ZWQgZm9yIHdpbm5pbmcgYSBsZWFzZSBhdWN0aW9uLgBlASBgdW5yZXNlcnZlX2xlYXNlX2RlcG9zaXRgIGNhbiBiZSBwZXJtaXNzaW9ubGVzc2x5IGNhbGxlZCBvbmNlIHRoZSBibG9jayBudW1iZXIgcGFzc2VkIHRvVQEgdW5yZXNlcnZlIHRoZSBkZXBvc2l0LiBJdCBpcyBpbXBsaWNpdGx5IGNhbGxlZCBieSBgd2l0aGRyYXdfY3Jvd2Rsb2FuX2NvbnRyaWJ1dGlvbmAuCCAgaQEgVGhlIGFjY291bnQgaGVyZSBjYW4gZWl0aGVyIGJlIGEgY3Jvd2Rsb2FuIGFjY291bnQgb3IgYSBzb2xvIGJpZGRlci4gSWYgaXQgaXMgYSBjcm93ZGxvYW5pASBhY2NvdW50LCB0aGVuIHRoZSBzdW1tZWQgdXAgY29udHJpYnV0aW9ucyBmb3IgaXQgaW4gdGhlIGNvbnRyaWJ1dGlvbnMgbWFwIHdpbGwgZXF1YXRlIHRoZVwgcmVzZXJ2ZWQgYmFsYW5jZSBoZXJlLgBkIFRoZSBrZXlzIGFyZSBhcyBmb2xsb3dzOuggLSBCbG9jayBudW1iZXIgYWZ0ZXIgd2hpY2ggdGhlIGRlcG9zaXQgY2FuIGJlIHVucmVzZXJ2ZWQuhCAtIFRoZSBwYXJhX2lkIG9mIHRoZSBsZWFzZSBzbG90LtQgLSBUaGUgYWNjb3VudCB0aGF0IHdpbGwgaGF2ZSB0aGUgYmFsYW5jZSB1bnJlc2VydmVkLoAgLSBUaGUgYmFsYW5jZSB0byBiZSB1bnJlc2VydmVkLgBcUmNDcm93ZGxvYW5Db250cmlidXRpb24AAQwFBQWhEMkFBAAw/CBBbW91bnQgb2YgYmFsYW5jZSB0aGF0IGEgY29udHJpYnV0b3IgbWFkZSB0b3dhcmRzIGEgY3Jvd2Rsb2FuLgBdASBgd2l0aGRyYXdfY3Jvd2Rsb2FuX2NvbnRyaWJ1dGlvbmAgY2FuIGJlIHBlcm1pc3Npb25sZXNzbHkgY2FsbGVkIG9uY2UgdGhlIGJsb2NrIG51bWJlctQgcGFzc2VkIHRvIHVubG9jayB0aGUgYmFsYW5jZSBmb3IgYSBzcGVjaWZpYyBhY2NvdW50LgBkIFRoZSBrZXlzIGFyZSBhcyBmb2xsb3dzOuAgLSBCbG9jayBudW1iZXIgYWZ0ZXIgd2hpY2ggdGhlIGJhbGFuY2UgY2FuIGJlIHVubG9ja2VkLoAgLSBUaGUgcGFyYV9pZCBvZiB0aGUgY3Jvd2Rsb2FuLqggLSBUaGUgYWNjb3VudCB0aGF0IG1hZGUgdGhlIGNvbnRyaWJ1dGlvbi4AQQEgVGhlIHZhbHVlIGlzIChmdW5kX3BvdCwgYmFsYW5jZSkuIFRoZSBjb250cmlidXRpb24gcG90IGlzIHRoZSBzZWNvbmQga2V5IGluIHRoZYwgYFJjQ3Jvd2Rsb2FuQ29udHJpYnV0aW9uYCBzdG9yYWdlLgBIUmNDcm93ZGxvYW5SZXNlcnZlAAEMBQUFoRBZAQQAJMggVGhlIHJlc2VydmUgdGhhdCB3YXMgdGFrZW4gdG8gY3JlYXRlIGEgY3Jvd2Rsb2FuLgARASBUaGlzIGlzIG5vcm1hbGx5IDUwMCBET1QgYW5kIGNhbiBiZSByZWZ1bmRlZCBhcyBsYXN0IHN0ZXAgYWZ0ZXIgYWxs9CBgUmNDcm93ZGxvYW5Db250cmlidXRpb25gcyBvZiB0aGlzIGxvYW4gaGF2ZSBiZWVuIHdpdGhkcmF3bi4AGCBLZXlzOsggLSBCbG9jayBudW1iZXIgYWZ0ZXIgd2hpY2ggdGhpcyBjYW4gYmUgdW5yZXNlcnZlZHwgLSBUaGUgcGFyYV9pZCBvZiB0aGUgY3Jvd2Rsb2Fu0CAtIFRoZSBhY2NvdW50IHRoYXQgd2lsbCBoYXZlIHRoZSBiYWxhbmNlIHVucmVzZXJ2ZWQAAW0HAAHBCQAAAaUQAAQcQXNzZXRJZB0CBKggQXNzZXQgSUQgdHlwZSBvZiB0aGUgYEZ1bmdpYmxlc2AgYWRhcHRlci4A/gAACAQFACC9BAQASAAECAwQFBgcICQoLDA0ODxAREhYQXV0aG9yaXplVmFsdWVUcmFuc2ZlcnUHEDRBdXRob3JpemVDYWxsfQcQGEFzUGdhc4EHECxBc1JpbmdBbGlhc40HEDhBc0RvdG5zR2F0ZXdheZkHEDxSZXN0cmljdE9yaWdpbnOlBxBIQ2hlY2tOb25aZXJvU2VuZGVyqQcQQENoZWNrU3BlY1ZlcnNpb26tBzg4Q2hlY2tUeFZlcnNpb26xBzgwQ2hlY2tHZW5lc2lztQdAOENoZWNrTW9ydGFsaXR5uQdAKENoZWNrTm9uY2XBBxAsQ2hlY2tXZWlnaHTFBxBQQ2hhcmdlQXNzZXRUeFBheW1lbnTJBxBIUHJldmFsaWRhdGVBdHRlc3RzzQcQRENoZWNrTWV0YWRhdGFIYXNo0QdBBzBFdGhTZXRPcmlnaW7ZBxBQU3RvcmFnZVdlaWdodFJlY2xhaW0QEGwcQXVyYUFwaQg0c2xvdF9kdXJhdGlvbgCpEAyQIFJldHVybnMgdGhlIHNsb3QgZHVyYXRpb24gZm9yIEF1cmEuACUBIEN1cnJlbnRseSwgb25seSB0aGUgdmFsdWUgcHJvdmlkZWQgYnkgdGhpcyB0eXBlIGF0IGdlbmVzaXMgd2lsbCBiZSB1c2VkLgAsYXV0aG9yaXRpZXMAmQsEnCBSZXR1cm4gdGhlIGN1cnJlbnQgc2V0IG9mIGF1dGhvcml0aWVzLgAEuCBBUEkgbmVjZXNzYXJ5IGZvciBibG9jayBhdXRob3JzaGlwIHdpdGggYXVyYS4EAFBSZWxheVBhcmVudE9mZnNldEFwaQRMcmVsYXlfcGFyZW50X29mZnNldAA4BPQgRmV0Y2ggdGhlIHNsb3Qgb2Zmc2V0IHRoYXQgaXMgZXhwZWN0ZWQgZnJvbSB0aGUgcmVsYXkgY2hhaW4uABAFASBBUEkgdG8gdGVsbCB0aGUgbm9kZSBzaWRlIGhvdyB0aGUgcmVsYXkgcGFyZW50IHNob3VsZCBiZSBjaG9zZW4uAGkBIEEgbGFyZ2VyIG9mZnNldCBpbmRpY2F0ZXMgdGhhdCB0aGUgcmVsYXkgcGFyZW50IHNob3VsZCBub3QgYmUgdGhlIHRpcCBvZiB0aGUgcmVsYXkgY2hhaW4sMQEgYnV0IGBOYCBibG9ja3MgYmVoaW5kIHRoZSB0aXAuIFRoaXMgb2Zmc2V0IGlzIHRoZW4gZW5mb3JjZWQgYnkgdGhlIHJ1bnRpbWUuBABgQXVyYVVuaW5jbHVkZWRTZWdtZW50QXBpBDhjYW5fYnVpbGRfdXBvbgg0aW5jbHVkZWRfaGFzaEAQc2xvdJ0LXQEoOQEgV2hldGhlciBpdCBpcyBsZWdhbCB0byBleHRlbmQgdGhlIGNoYWluLCBhc3N1bWluZyB0aGUgZ2l2ZW4gYmxvY2sgaXMgdGhlIG1vc3Q1ASByZWNlbnRseSBpbmNsdWRlZCBvbmUgYXMtb2YgdGhlIHJlbGF5IHBhcmVudCB0aGF0IHdpbGwgYmUgYnVpbHQgYWdhaW5zdCwgYW5kcCB0aGUgZ2l2ZW4gcmVsYXkgY2hhaW4gc2xvdC4AUQEgVGhpcyBzaG91bGQgYmUgY29uc2lzdGVudCB3aXRoIHRoZSBsb2dpYyB0aGUgcnVudGltZSB1c2VzIHdoZW4gdmFsaWRhdGluZyBibG9ja3MgdG84IGF2b2lkIGlzc3Vlcy4AYQEgV2hlbiB0aGUgdW5pbmNsdWRlZCBzZWdtZW50IGlzIGVtcHR5LCBpLmUuIGBpbmNsdWRlZF9oYXNoID09IGF0YCwgd2hlcmUgYXQgaXMgdGhlIGJsb2NrYQEgd2hvc2Ugc3RhdGUgd2UgYXJlIHF1ZXJ5aW5nIGFnYWluc3QsIHRoaXMgbXVzdCBhbHdheXMgcmV0dXJuIGB0cnVlYCBhcyBsb25nIGFzIHRoZSBzbG90vCBpcyBtb3JlIHJlY2VudCB0aGFuIHRoZSBpbmNsdWRlZCBibG9jayBpdHNlbGYuADQ1ASBUaGlzIHJ1bnRpbWUgQVBJIGlzIHVzZWQgdG8gaW5mb3JtIHBvdGVudGlhbCBibG9jayBhdXRob3JzIHdoZXRoZXIgdGhleSB3aWxsJQEgaGF2ZSB0aGUgcmlnaHQgdG8gYXV0aG9yIGF0IGEgc2xvdCwgYXNzdW1pbmcgdGhleSBoYXZlIGNsYWltZWQgdGhlIHNsb3QuAHUBIEluIHBhcnRpY3VsYXIsIHRoaXMgQVBJIGFsbG93cyBBdXJhLWJhc2VkIHBhcmFjaGFpbnMgdG8gcmVndWxhdGUgdGhlaXIgInVuaW5jbHVkZWQgc2VnbWVudCIsbQEgd2hpY2ggaXMgdGhlIHNlY3Rpb24gb2YgdGhlIGhlYWQgb2YgdGhlIGNoYWluIHdoaWNoIGhhcyBub3QgeWV0IGJlZW4gbWFkZSBhdmFpbGFibGUgaW4gdGhlNCByZWxheSBjaGFpbi4AYQEgV2hlbiB0aGUgdW5pbmNsdWRlZCBzZWdtZW50IGlzIHNob3J0LCBBdXJhIGNoYWlucyB3aWxsIGFsbG93IGF1dGhvcnMgdG8gY3JlYXRlIG11bHRpcGxlXQEgYmxvY2tzIHBlciBzbG90IGluIG9yZGVyIHRvIGJ1aWxkIGEgYmFja2xvZy4gV2hlbiBpdCBpcyBzYXR1cmF0ZWQsIHRoaXMgQVBJIHdpbGwgbGltaXSoIHRoZSBhbW91bnQgb2YgYmxvY2tzIHRoYXQgY2FuIGJlIGNyZWF0ZWQuACQgQ2hhbmdlczqRASAtIFZlcnNpb24gMjogVXBkYXRlIHRvIGBjYW5fYnVpbGRfdXBvbmAgdG8gdGFrZSBhIHJlbGF5IGNoYWluIGBTbG90YCBpbnN0ZWFkIG9mIGEgcGFyYWNoYWluIGBTbG90YC4IABBDb3JlDBx2ZXJzaW9uAPUJBJAgUmV0dXJucyB0aGUgdmVyc2lvbiBvZiB0aGUgcnVudGltZS4ANGV4ZWN1dGVfYmxvY2sEFGJsb2NrrRAQBGQgRXhlY3V0ZSB0aGUgZ2l2ZW4gYmxvY2suAEBpbml0aWFsaXplX2Jsb2NrBBhoZWFkZXJguRAEQQEgSW5pdGlhbGl6ZSBhIGJsb2NrIHdpdGggdGhlIGdpdmVuIGhlYWRlciBhbmQgcmV0dXJuIHRoZSBydW50aW1lIGV4ZWN1dGl2ZSBtb2RlLgAEIQEgVGhlIGBDb3JlYCBydW50aW1lIGFwaSB0aGF0IGV2ZXJ5IFN1YnN0cmF0ZSBydW50aW1lIG5lZWRzIHRvIGltcGxlbWVudC4UACBNZXRhZGF0YQwgbWV0YWRhdGEAvRAEjCBSZXR1cm5zIHRoZSBtZXRhZGF0YSBvZiBhIHJ1bnRpbWUuAExtZXRhZGF0YV9hdF92ZXJzaW9uBBx2ZXJzaW9uOMEQEKQgUmV0dXJucyB0aGUgbWV0YWRhdGEgYXQgYSBnaXZlbiB2ZXJzaW9uLgAFASBJZiB0aGUgZ2l2ZW4gYHZlcnNpb25gIGlzbid0IHN1cHBvcnRlZCwgdGhpcyB3aWxsIHJldHVybiBgTm9uZWAudQEgVXNlIFtgU2VsZjo6bWV0YWRhdGFfdmVyc2lvbnNgXSB0byBmaW5kIG91dCBhYm91dCBzdXBwb3J0ZWQgbWV0YWRhdGEgdmVyc2lvbiBvZiB0aGUgcnVudGltZS4ARG1ldGFkYXRhX3ZlcnNpb25zAF0EDKQgUmV0dXJucyB0aGUgc3VwcG9ydGVkIG1ldGFkYXRhIHZlcnNpb25zLgDAIFRoaXMgY2FuIGJlIHVzZWQgdG8gY2FsbCBgbWV0YWRhdGFfYXRfdmVyc2lvbmAuAAQBASBUaGUgYE1ldGFkYXRhYCBhcGkgdHJhaXQgdGhhdCByZXR1cm5zIG1ldGFkYXRhIGZvciB0aGUgcnVudGltZS4IADBCbG9ja0J1aWxkZXIQPGFwcGx5X2V4dHJpbnNpYwQkZXh0cmluc2ljDQrFEBBsIEFwcGx5IHRoZSBnaXZlbiBleHRyaW5zaWMuADkBIFJldHVybnMgYW4gaW5jbHVzaW9uIG91dGNvbWUgd2hpY2ggc3BlY2lmaWVzIGlmIHRoaXMgZXh0cmluc2ljIGlzIGluY2x1ZGVkIGluTCB0aGlzIGJsb2NrIG9yIG5vdC4AOGZpbmFsaXplX2Jsb2NrAGAEaCBGaW5pc2ggdGhlIGN1cnJlbnQgYmxvY2suAExpbmhlcmVudF9leHRyaW5zaWNzBCBpbmhlcmVudNUQIQoEPQEgR2VuZXJhdGUgaW5oZXJlbnQgZXh0cmluc2ljcy4gVGhlIGluaGVyZW50IGRhdGEgd2lsbCB2YXJ5IGZyb20gY2hhaW4gdG8gY2hhaW4uADxjaGVja19pbmhlcmVudHMIFGJsb2NrrRAQZGF0YdUQ5RAEVQEgQ2hlY2sgdGhhdCB0aGUgaW5oZXJlbnRzIGFyZSB2YWxpZC4gVGhlIGluaGVyZW50IGRhdGEgd2lsbCB2YXJ5IGZyb20gY2hhaW4gdG8gY2hhaW4uAARxASBUaGUgYEJsb2NrQnVpbGRlcmAgYXBpIHRyYWl0IHRoYXQgcHJvdmlkZXMgdGhlIHJlcXVpcmVkIGZ1bmN0aW9uYWxpdHkgZm9yIGJ1aWxkaW5nIGEgYmxvY2suGABYVGFnZ2VkVHJhbnNhY3Rpb25RdWV1ZQRQdmFsaWRhdGVfdHJhbnNhY3Rpb24MGHNvdXJjZekQCHR4DQooYmxvY2tfaGFzaEDtECRoIFZhbGlkYXRlIHRoZSB0cmFuc2FjdGlvbi4AZQEgVGhpcyBtZXRob2QgaXMgaW52b2tlZCBieSB0aGUgdHJhbnNhY3Rpb24gcG9vbCB0byBsZWFybiBkZXRhaWxzIGFib3V0IGdpdmVuIHRyYW5zYWN0aW9uLkUBIFRoZSBpbXBsZW1lbnRhdGlvbiBzaG91bGQgbWFrZSBzdXJlIHRvIHZlcmlmeSB0aGUgY29ycmVjdG5lc3Mgb2YgdGhlIHRyYW5zYWN0aW9uTQEgYWdhaW5zdCBjdXJyZW50IHN0YXRlLiBUaGUgZ2l2ZW4gYGJsb2NrX2hhc2hgIGNvcnJlc3BvbmRzIHRvIHRoZSBoYXNoIG9mIHRoZSBibG9ja3wgdGhhdCBpcyB1c2VkIGFzIGN1cnJlbnQgc3RhdGUuAEUBIE5vdGUgdGhhdCB0aGlzIGNhbGwgbWF5IGJlIHBlcmZvcm1lZCBieSB0aGUgcG9vbCBtdWx0aXBsZSB0aW1lcyBhbmQgdHJhbnNhY3Rpb25zpCBtaWdodCBiZSB2ZXJpZmllZCBpbiBhbnkgcG9zc2libGUgb3JkZXIuAARNASBUaGUgYFRhZ2dlZFRyYW5zYWN0aW9uUXVldWVgIGFwaSB0cmFpdCBmb3IgaW50ZXJmZXJpbmcgd2l0aCB0aGUgdHJhbnNhY3Rpb24gcXVldWUuDABET2ZmY2hhaW5Xb3JrZXJBcGkEPG9mZmNoYWluX3dvcmtlcgQYaGVhZGVyYBAEyCBTdGFydHMgdGhlIG9mZi1jaGFpbiB0YXNrIGZvciBnaXZlbiBibG9jayBoZWFkZXIuAARkIFRoZSBvZmZjaGFpbiB3b3JrZXIgYXBpLggALFNlc3Npb25LZXlzCFRnZW5lcmF0ZV9zZXNzaW9uX2tleXMIFG93bmVyGBBzZWVkTQH1EBwVASBHZW5lcmF0ZSBhIHNldCBvZiBzZXNzaW9uIGtleXMgd2l0aCBvcHRpb25hbGx5IHVzaW5nIHRoZSBnaXZlbiBzZWVkLgkBIFRoZSBrZXlzIHNob3VsZCBiZSBzdG9yZWQgd2l0aGluIHRoZSBrZXlzdG9yZSBleHBvc2VkIHZpYSBydW50aW1lPCBleHRlcm5hbGl0aWVzLgCwIFRoZSBzZWVkIG5lZWRzIHRvIGJlIGEgdmFsaWQgYHV0ZjhgIHN0cmluZy4A0CBSZXR1cm5zIHRoZSBjb25jYXRlbmF0ZWQgU0NBTEUgZW5jb2RlZCBwdWJsaWMga2V5cy4ATGRlY29kZV9zZXNzaW9uX2tleXMEHGVuY29kZWQY+RAMmCBEZWNvZGUgdGhlIGdpdmVuIHB1YmxpYyBzZXNzaW9uIGtleXMuANwgUmV0dXJucyB0aGUgbGlzdCBvZiBwdWJsaWMgcmF3IHB1YmxpYyBrZXlzICsga2V5IHR5cGUuAARoIFNlc3Npb24ga2V5cyBydW50aW1lIGFwaS4IAExSdW50aW1lVmlld0Z1bmN0aW9uBFRleGVjdXRlX3ZpZXdfZnVuY3Rpb24IIHF1ZXJ5X2lkBREUaW5wdXQYCREEfCBFeGVjdXRlIGEgdmlldyBmdW5jdGlvbiBxdWVyeS4ABKQgUnVudGltZSBBUEkgZm9yIGV4ZWN1dGluZyB2aWV3IGZ1bmN0aW9ucwQAPEFjY291bnROb25jZUFwaQQ0YWNjb3VudF9ub25jZQQcYWNjb3VudAQ4BMAgR2V0IGN1cnJlbnQgYWNjb3VudCBub25jZSBvZiBnaXZlbiBgQWNjb3VudElkYC4ABIAgVGhlIEFQSSB0byBxdWVyeSBhY2NvdW50IG5vbmNlLgQAVFRyYW5zYWN0aW9uUGF5bWVudEFwaRAocXVlcnlfaW5mbwgMdXh0DQoMbGVuOBERAABEcXVlcnlfZmVlX2RldGFpbHMIDHV4dA0KDGxlbjgVEQAATHF1ZXJ5X3dlaWdodF90b19mZWUEGHdlaWdodBUBWQEAAExxdWVyeV9sZW5ndGhfdG9fZmVlBBhsZW5ndGg4WQEAAAAQAGRUcmFuc2FjdGlvblBheW1lbnRDYWxsQXBpEDxxdWVyeV9jYWxsX2luZm8IEGNhbGwgDGxlbjgREQRJASBRdWVyeSBpbmZvcm1hdGlvbiBvZiBhIGRpc3BhdGNoIGNsYXNzLCB3ZWlnaHQsIGFuZCBmZWUgb2YgYSBnaXZlbiBlbmNvZGVkIGBDYWxsYC4AWHF1ZXJ5X2NhbGxfZmVlX2RldGFpbHMIEGNhbGwgDGxlbjgVEQS0IFF1ZXJ5IGZlZSBkZXRhaWxzIG9mIGEgZ2l2ZW4gZW5jb2RlZCBgQ2FsbGAuAExxdWVyeV93ZWlnaHRfdG9fZmVlBBh3ZWlnaHQVAVkBBAEBIFF1ZXJ5IHRoZSBvdXRwdXQgb2YgdGhlIGN1cnJlbnQgYFdlaWdodFRvRmVlYCBnaXZlbiBzb21lIGlucHV0LgBMcXVlcnlfbGVuZ3RoX3RvX2ZlZQQYbGVuZ3RoOFkBBAEBIFF1ZXJ5IHRoZSBvdXRwdXQgb2YgdGhlIGN1cnJlbnQgYExlbmd0aFRvRmVlYCBnaXZlbiBzb21lIGlucHV0LgAADAA0WGNtUGF5bWVudEFwaRB8cXVlcnlfYWNjZXB0YWJsZV9wYXltZW50X2Fzc2V0cwQseGNtX3ZlcnNpb244IREUtCBSZXR1cm5zIGEgbGlzdCBvZiBhY2NlcHRhYmxlIHBheW1lbnQgYXNzZXRzLgAwICMgQXJndW1lbnRzAGggKiBgeGNtX3ZlcnNpb25gOiBWZXJzaW9uLgBAcXVlcnlfeGNtX3dlaWdodAQcbWVzc2FnZVECLREUqCBSZXR1cm5zIGEgd2VpZ2h0IG5lZWRlZCB0byBleGVjdXRlIGEgWENNLgAwICMgQXJndW1lbnRzAHQgKiBgbWVzc2FnZWA6IGBWZXJzaW9uZWRYY21gLgBkcXVlcnlfd2VpZ2h0X3RvX2Fzc2V0X2ZlZQgYd2VpZ2h0FQEUYXNzZXTBAzERGOggQ29udmVydHMgYSB3ZWlnaHQgaW50byBhIGZlZSBmb3IgdGhlIHNwZWNpZmllZCBgQXNzZXRJZGAuADAgIyBBcmd1bWVudHMAiCAqIGB3ZWlnaHRgOiBjb252ZXJ0aWJsZSBgV2VpZ2h0YC58ICogYGFzc2V0YDogYFZlcnNpb25lZEFzc2V0SWRgLgBMcXVlcnlfZGVsaXZlcnlfZmVlcwwsZGVzdGluYXRpb27JARxtZXNzYWdlUQIgYXNzZXRfaWTBAzURKGAgUXVlcnkgZGVsaXZlcnkgZmVlcyBWMi4AHQEgR2V0IGRlbGl2ZXJ5IGZlZXMgZm9yIHNlbmRpbmcgYSBzcGVjaWZpYyBgbWVzc2FnZWAgdG8gYSBgZGVzdGluYXRpb25gLvQgVGhlc2UgYWx3YXlzIGNvbWUgaW4gYSBzcGVjaWZpYyBhc3NldCwgZGVmaW5lZCBieSB0aGUgY2hhaW4uADAgIyBBcmd1bWVudHOBASAqIGBtZXNzYWdlYDogVGhlIG1lc3NhZ2UgdGhhdCdsbCBiZSBzZW50LCBuZWNlc3NhcnkgYmVjYXVzZSBtb3N0IGRlbGl2ZXJ5IGZlZXMgYXJlIGJhc2VkIG9uIHRoZVwgICBzaXplIG9mIHRoZSBtZXNzYWdlLmEBICogYGRlc3RpbmF0aW9uYDogVGhlIGRlc3RpbmF0aW9uIHRvIHNlbmQgdGhlIG1lc3NhZ2UgdG8uIERpZmZlcmVudCBkZXN0aW5hdGlvbnMgbWF5IHVzZcAgICBkaWZmZXJlbnQgc2VuZGVycyB0aGF0IGNoYXJnZSBkaWZmZXJlbnQgZmVlcy4ALHAgQSB0cmFpdCBvZiBYQ00gcGF5bWVudCBBUEkuAKggQVBJIHByb3ZpZGVzIGZ1bmN0aW9uYWxpdHkgZm9yIG9idGFpbmluZzoAxCAqIHRoZSB3ZWlnaHQgcmVxdWlyZWQgdG8gZXhlY3V0ZSBhbiBYQ00gbWVzc2FnZSwFASAqIGEgbGlzdCBvZiBhY2NlcHRhYmxlIGBBc3NldElkYHMgZm9yIG1lc3NhZ2UgZXhlY3V0aW9uIHBheW1lbnQsAQEgKiB0aGUgY29zdCBvZiB0aGUgd2VpZ2h0IGluIHRoZSBzcGVjaWZpZWQgYWNjZXB0YWJsZSBgQXNzZXRJZGAuoCAqIHRoZSBmZWVzIGZvciBhbiBYQ00gbWVzc2FnZSBkZWxpdmVyeS4A8CBUbyBkZXRlcm1pbmUgdGhlIGV4ZWN1dGlvbiB3ZWlnaHQgb2YgdGhlIGNhbGxzIHJlcXVpcmVkIGZvcnUBIFtgeGNtOjpsYXRlc3Q6Okluc3RydWN0aW9uOjpUcmFuc2FjdGBdIGluc3RydWN0aW9uLCBgVHJhbnNhY3Rpb25QYXltZW50Q2FsbEFwaWAgY2FuIGJlIHVzZWQuCAAkRHJ5UnVuQXBpCDBkcnlfcnVuX2NhbGwMGG9yaWdpbvEDEGNhbGwgTHJlc3VsdF94Y21zX3ZlcnNpb244OREERCBEcnkgcnVuIGNhbGwgVjIuACxkcnlfcnVuX3hjbQg8b3JpZ2luX2xvY2F0aW9uyQEMeGNtkQNZEQRQIERyeSBydW4gWENNIHByb2dyYW0AJLEBIEFQSSBmb3IgZHJ5LXJ1bm5pbmcgZXh0cmluc2ljcyBhbmQgWENNIHByb2dyYW1zIHRvIGdldCB0aGUgcHJvZ3JhbXMgdGhhdCBuZWVkIHRvIGJlIHBhc3NlZCB0byB0aGUgZmVlcyBBUEkuAIEBIEFsbCBjYWxscyByZXR1cm4gYSB2ZWN0b3Igb2YgdHVwbGVzIChsb2NhdGlvbiwgeGNtKSB3aGVyZSBlYWNoICJ4Y20iIGlzIGV4ZWN1dGVkIGluICJsb2NhdGlvbiIu5CBJZiB0aGVyZSdzIGxvY2FsIGV4ZWN1dGlvbiwgdGhlIGxvY2F0aW9uIHdpbGwgYmUgIkhlcmUiLh0BIFRoaXMgdmVjdG9yIGNhbiBiZSB1c2VkIHRvIGNhbGN1bGF0ZSBib3RoIGV4ZWN1dGlvbiBhbmQgZGVsaXZlcnkgZmVlcy4AmQEgQ2FsbHMgb3IgWENNcyBtaWdodCBmYWlsIHdoZW4gZXhlY3V0ZWQsIHRoaXMgZG9lc24ndCBtZWFuIHRoZSByZXN1bHQgb2YgdGhlc2UgY2FsbHMgd2lsbCBiZSBhbiBgRXJyYC5lASBJbiB0aG9zZSBjYXNlcywgdGhlcmUgbWlnaHQgc3RpbGwgYmUgYSB2YWxpZCByZXN1bHQsIHdpdGggdGhlIGV4ZWN1dGlvbiBlcnJvciBpbnNpZGUgaXQuZQEgVGhlIG9ubHkgcmVhc29ucyB3aHkgdGhlc2UgY2FsbHMgbWlnaHQgcmV0dXJuIGFuIGVycm9yIGFyZSBsaXN0ZWQgaW4gdGhlIFtgRXJyb3JgXSBlbnVtLggAUExvY2F0aW9uVG9BY2NvdW50QXBpBEBjb252ZXJ0X2xvY2F0aW9uBCBsb2NhdGlvbskBYREEkCBDb252ZXJ0cyBgTG9jYXRpb25gIHRvIGBBY2NvdW50SWRgLgAEDQEgQVBJIGZvciB1c2VmdWwgY29udmVyc2lvbnMgYmV0d2VlbiBYQ00gYExvY2F0aW9uYCBhbmQgYEFjY291bnRJZGAuBAA8VHJ1c3RlZFF1ZXJ5QXBpCEhpc190cnVzdGVkX3Jlc2VydmUIFGFzc2V0aREgbG9jYXRpb27JAW0RFPAgUmV0dXJucyBpZiB0aGUgbG9jYXRpb24gaXMgYSB0cnVzdGVkIHJlc2VydmUgZm9yIHRoZSBhc3NldC4AMCAjIEFyZ3VtZW50c3QgKiBgYXNzZXRgOiBgVmVyc2lvbmVkQXNzZXRgLowgKiBgbG9jYXRpb25gOiBgVmVyc2lvbmVkTG9jYXRpb25gLgBUaXNfdHJ1c3RlZF90ZWxlcG9ydGVyCBRhc3NldGkRIGxvY2F0aW9uyQFtERTgIFJldHVybnMgaWYgdGhlIGFzc2V0IGNhbiBiZSB0ZWxlcG9ydGVkIHRvIHRoZSBsb2NhdGlvbi4AMCAjIEFyZ3VtZW50c3QgKiBgYXNzZXRgOiBgVmVyc2lvbmVkQXNzZXRgLowgKiBgbG9jYXRpb25gOiBgVmVyc2lvbmVkTG9jYXRpb25gLgAE7CBBUEkgZm9yIHF1ZXJ5aW5nIHRydXN0ZWQgcmVzZXJ2ZXMgYW5kIHRydXN0ZWQgdGVsZXBvcnRlcnMuBABUQXV0aG9yaXplZEFsaWFzZXJzQXBpCExhdXRob3JpemVkX2FsaWFzZXJzBBh0YXJnZXTJAXURBPQgUmV0dXJucyBsb2NhdGlvbnMgYWxsb3dlZCB0byBhbGlhcyBpbnRvIGFuZCBhY3QgYXMgYHRhcmdldGAuAExpc19hdXRob3JpemVkX2FsaWFzCBhvcmlnaW7JARh0YXJnZXTJAX0RBB0BIFJldHVybnMgd2hldGhlciBgb3JpZ2luYCBpcyBhbGxvd2VkIHRvIGFsaWFzIGludG8gYW5kIGFjdCBhcyBgdGFyZ2V0YC4ABKAgQVBJIGZvciBxdWVyeWluZyBYQ00gYXV0aG9yaXplZCBhbGlhc2VzBAAwRnVuZ2libGVzQXBpBFhxdWVyeV9hY2NvdW50X2JhbGFuY2VzBBxhY2NvdW50BIERBOwgUmV0dXJucyB0aGUgbGlzdCBvZiBhbGwgW2BBc3NldGBdIHRoYXQgYW4gYEFjY291bnRJZGAgaGFzLgAE2CBUaGUgQVBJIGZvciBxdWVyeWluZyBhY2NvdW50J3MgYmFsYW5jZXMgZnJvbSBydW50aW1lLggAUENvbGxlY3RDb2xsYXRpb25JbmZvBFhjb2xsZWN0X2NvbGxhdGlvbl9pbmZvBBhoZWFkZXJgiREQnCBDb2xsZWN0IGluZm9ybWF0aW9uIGFib3V0IGEgY29sbGF0aW9uLgD0IFRoZSBnaXZlbiBgaGVhZGVyYCBpcyB0aGUgaGVhZGVyIG9mIHRoZSBidWlsdCBibG9jayBmb3IgdGhhdKggd2UgYXJlIGNvbGxlY3RpbmcgdGhlIGNvbGxhdGlvbiBpbmZvIGZvci4AFNggUnVudGltZSBhcGkgdG8gY29sbGVjdCBpbmZvcm1hdGlvbiBhYm91dCBhIGNvbGxhdGlvbi4ARCBWZXJzaW9uIGhpc3Rvcnk6AQEgLSBWZXJzaW9uIDI6IENoYW5nZWQgW2BTZWxmOjpjb2xsZWN0X2NvbGxhdGlvbl9pbmZvYF0gc2lnbmF0dXJlNQEgLSBWZXJzaW9uIDM6IFNpZ25hbHMgdG8gdGhlIG5vZGUgdG8gdXNlIHZlcnNpb24gMSBvZiBbYFBhcmFjaGFpbkJsb2NrRGF0YWBdLgwAOEdlbmVzaXNCdWlsZGVyDCxidWlsZF9zdGF0ZQQQanNvbhiVEShlASBCdWlsZCBgUnVudGltZUdlbmVzaXNDb25maWdgIGZyb20gYSBKU09OIGJsb2Igbm90IHVzaW5nIGFueSBkZWZhdWx0cyBhbmQgc3RvcmUgaXQgaW4gdGhlJCBzdG9yYWdlLgApASBJbiB0aGUgY2FzZSBvZiBhIEZSQU1FLWJhc2VkIHJ1bnRpbWUsIHRoaXMgZnVuY3Rpb24gZGVzZXJpYWxpemVzIHRoZSBmdWxsVQEgYFJ1bnRpbWVHZW5lc2lzQ29uZmlnYCBmcm9tIHRoZSBnaXZlbiBKU09OIGJsb2IgYW5kIHB1dHMgaXQgaW50byB0aGUgc3RvcmFnZS4gSWYgdGhlVQEgcHJvdmlkZWQgSlNPTiBibG9iIGlzIGluY29ycmVjdCBvciBpbmNvbXBsZXRlIG9yIHRoZSBkZXNlcmlhbGl6YXRpb24gZmFpbHMsIGFuIGVycm9yNCBpcyByZXR1cm5lZC4AXQEgUGxlYXNlIG5vdGUgdGhhdCBwcm92aWRlZCBKU09OIGJsb2IgbXVzdCBjb250YWluIGFsbCBgUnVudGltZUdlbmVzaXNDb25maWdgIGZpZWxkcywgbm9cIGRlZmF1bHRzIHdpbGwgYmUgdXNlZC4AKGdldF9wcmVzZXQECGlkmRFNAThhASBSZXR1cm5zIGEgSlNPTiBibG9iIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBidWlsdC1pbiBgUnVudGltZUdlbmVzaXNDb25maWdgIGlkZW50aWZpZWQgYnkYIGBpZGAuAFUBIElmIGBpZGAgaXMgYE5vbmVgIHRoZSBmdW5jdGlvbiBzaG91bGQgcmV0dXJuIEpTT04gYmxvYiByZXByZXNlbnRhdGlvbiBvZiB0aGUgZGVmYXVsdEkBIGBSdW50aW1lR2VuZXNpc0NvbmZpZ2Agc3RydWN0IG9mIHRoZSBydW50aW1lLiBJbXBsZW1lbnRhdGlvbiBtdXN0IHByb3ZpZGUgZGVmYXVsdGAgYFJ1bnRpbWVHZW5lc2lzQ29uZmlnYC4AIQEgT3RoZXJ3aXNlIGZ1bmN0aW9uIHJldHVybnMgYSBKU09OIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBidWlsdC1pbiwgbmFtZWRRASBgUnVudGltZUdlbmVzaXNDb25maWdgIHByZXNldCBpZGVudGlmaWVkIGJ5IGBpZGAsIG9yIGBOb25lYCBpZiBzdWNoIHByZXNldCBkb2VzIG5vdGEBIGV4aXN0LiBSZXR1cm5lZCBgVmVjPHU4PmAgY29udGFpbnMgYnl0ZXMgb2YgSlNPTiBibG9iIChwYXRjaCkgd2hpY2ggY29tcHJpc2VzIGEgbGlzdCBvZk0BIChwb3RlbnRpYWxseSBuZXN0ZWQpIGtleS12YWx1ZSBwYWlycyB0aGF0IGFyZSBpbnRlbmRlZCBmb3IgY3VzdG9taXppbmcgdGhlIGRlZmF1bHRlASBydW50aW1lIGdlbmVzaXMgY29uZmlnLiBUaGUgcGF0Y2ggc2hhbGwgYmUgbWVyZ2VkIChyZmM3Mzg2KSB3aXRoIHRoZSBKU09OIHJlcHJlc2VudGF0aW9uYQEgb2YgdGhlIGRlZmF1bHQgYFJ1bnRpbWVHZW5lc2lzQ29uZmlnYCB0byBjcmVhdGUgYSBjb21wcmVoZW5zaXZlIGdlbmVzaXMgY29uZmlnIHRoYXQgY2FuhCBiZSB1c2VkIGluIGBidWlsZF9zdGF0ZWAgbWV0aG9kLgAwcHJlc2V0X25hbWVzAJ0REFEBIFJldHVybnMgYSBsaXN0IG9mIGlkZW50aWZpZXJzIGZvciBhdmFpbGFibGUgYnVpbHRpbiBgUnVudGltZUdlbmVzaXNDb25maWdgIHByZXNldHMuAGEBIFRoZSBwcmVzZXRzIGZyb20gdGhlIGxpc3QgY2FuIGJlIHF1ZXJpZWQgd2l0aCBbYEdlbmVzaXNCdWlsZGVyOjpnZXRfcHJlc2V0YF0gbWV0aG9kLiBJZgEBIG5vIG5hbWVkIHByZXNldHMgYXJlIHByb3ZpZGVkIGJ5IHRoZSBydW50aW1lIHRoZSBsaXN0IGlzIGVtcHR5LgAE8CBBUEkgdG8gaW50ZXJhY3Qgd2l0aCBgUnVudGltZUdlbmVzaXNDb25maWdgIGZvciB0aGUgcnVudGltZQQASEFzc2V0Q29udmVyc2lvbkFwaQyMcXVvdGVfcHJpY2VfdG9rZW5zX2Zvcl9leGFjdF90b2tlbnMQGGFzc2V0MR0CGGFzc2V0Mh0CGGFtb3VudFkBLGluY2x1ZGVfZmVlXQFlBBD8IFByb3ZpZGVzIGEgcXVvdGUgZm9yIFtgUGFsbGV0Ojpzd2FwX3Rva2Vuc19mb3JfZXhhY3RfdG9rZW5zYF0uADkBIE5vdGUgdGhhdCB0aGUgcHJpY2UgbWF5IGhhdmUgY2hhbmdlZCBieSB0aGUgdGltZSB0aGUgdHJhbnNhY3Rpb24gaXMgZXhlY3V0ZWQurCAoVXNlIGBhbW91bnRfaW5fbWF4YCB0byBjb250cm9sIHNsaXBwYWdlLikAjHF1b3RlX3ByaWNlX2V4YWN0X3Rva2Vuc19mb3JfdG9rZW5zEBhhc3NldDEdAhhhc3NldDIdAhhhbW91bnRZASxpbmNsdWRlX2ZlZV0BZQQQ/CBQcm92aWRlcyBhIHF1b3RlIGZvciBbYFBhbGxldDo6c3dhcF9leGFjdF90b2tlbnNfZm9yX3Rva2Vuc2BdLgA5ASBOb3RlIHRoYXQgdGhlIHByaWNlIG1heSBoYXZlIGNoYW5nZWQgYnkgdGhlIHRpbWUgdGhlIHRyYW5zYWN0aW9uIGlzIGV4ZWN1dGVkLrAgKFVzZSBgYW1vdW50X291dF9taW5gIHRvIGNvbnRyb2wgc2xpcHBhZ2UuKQAwZ2V0X3Jlc2VydmVzCBhhc3NldDEdAhhhc3NldDIdAqERBAUBIFJldHVybnMgdGhlIHNpemUgb2YgdGhlIGxpcXVpZGl0eSBwb29sIGZvciB0aGUgZ2l2ZW4gYXNzZXQgcGFpci4ACCEBIFRoaXMgcnVudGltZSBhcGkgYWxsb3dzIHBlb3BsZSB0byBxdWVyeSB0aGUgc2l6ZSBvZiB0aGUgbGlxdWlkaXR5IHBvb2xzcCBhbmQgcXVvdGUgcHJpY2VzIGZvciBzd2Fwcy4EAEBHZXRQYXJhY2hhaW5JbmZvBDBwYXJhY2hhaW5faWQAoASwIFJldHJpZXZlIHRoZSBwYXJhY2hhaW4gaWQgdXNlZCBmb3IgcnVudGltZS4ABA0BIFJ1bnRpbWUgYXBpIHVzZWQgdG8gYWNjZXNzIGdlbmVyYWwgaW5mbyBhYm91dCBhIHBhcmFjaGFpbiBydW50aW1lLgQASE5vbWluYXRpb25Qb29sc0FwaSg8cGVuZGluZ19yZXdhcmRzBAx3aG8EWQEENQEgUmV0dXJucyB0aGUgcGVuZGluZyByZXdhcmRzIGZvciB0aGUgbWVtYmVyIHRoYXQgdGhlIEFjY291bnRJZCB3YXMgZ2l2ZW4gZm9yLgBEcG9pbnRzX3RvX2JhbGFuY2UIHHBvb2xfaWQ4GHBvaW50c1kBWQEE9CBSZXR1cm5zIHRoZSBlcXVpdmFsZW50IGJhbGFuY2Ugb2YgYHBvaW50c2AgZm9yIGEgZ2l2ZW4gcG9vbC4ARGJhbGFuY2VfdG9fcG9pbnRzCBxwb29sX2lkOCRuZXdfZnVuZHNZAVkBBPwgUmV0dXJucyB0aGUgZXF1aXZhbGVudCBwb2ludHMgb2YgYG5ld19mdW5kc2AgZm9yIGEgZ2l2ZW4gcG9vbC4ASHBvb2xfcGVuZGluZ19zbGFzaAQccG9vbF9pZDhZAQSwIFJldHVybnMgdGhlIHBlbmRpbmcgc2xhc2ggZm9yIGEgZ2l2ZW4gcG9vbC4AUG1lbWJlcl9wZW5kaW5nX3NsYXNoBBhtZW1iZXIEWQEQzCBSZXR1cm5zIHRoZSBwZW5kaW5nIHNsYXNoIGZvciBhIGdpdmVuIHBvb2wgbWVtYmVyLgBNASBJZiBwZW5kaW5nIHNsYXNoIG9mIHRoZSBtZW1iZXIgZXhjZWVkcyBgRXhpc3RlbnRpYWxEZXBvc2l0YCwgaXQgY2FuIGJlIHJlcG9ydGVkIG9uHCBjaGFpbi4AdHBvb2xfbmVlZHNfZGVsZWdhdGVfbWlncmF0aW9uBBxwb29sX2lkOF0BIOQgUmV0dXJucyB0cnVlIGlmIHRoZSBwb29sIHdpdGggYHBvb2xfaWRgIG5lZWRzIG1pZ3JhdGlvbi4ASQEgVGhpcyBjYW4gaGFwcGVuIHdoZW4gdGhlIGBwYWxsZXQtbm9taW5hdGlvbi1wb29sc2AgaGFzIHN3aXRjaGVkIHRvIHVzaW5nIHN0cmF0ZWd5QQEgW2BEZWxlZ2F0ZVN0YWtlYF0ocGFsbGV0X25vbWluYXRpb25fcG9vbHM6OmFkYXB0ZXI6OkRlbGVnYXRlU3Rha2UpIGJ1dCB0aGUgcG9vbOggc3RpbGwgaGFzIGZ1bmRzIHRoYXQgd2VyZSBzdGFrZWQgdXNpbmcgdGhlIG9sZGVyIHN0cmF0ZWd5GQEgW1RyYW5zZmVyU3Rha2VdKHBhbGxldF9ub21pbmF0aW9uX3Bvb2xzOjphZGFwdGVyOjpUcmFuc2ZlclN0YWtlKS4gVXNliQEgW2BtaWdyYXRlX3Bvb2xfdG9fZGVsZWdhdGVfc3Rha2VgXShwYWxsZXRfbm9taW5hdGlvbl9wb29sczo6Q2FsbDo6bWlncmF0ZV9wb29sX3RvX2RlbGVnYXRlX3N0YWtlKVQgdG8gbWlncmF0ZSB0aGUgcG9vbC4AfG1lbWJlcl9uZWVkc19kZWxlZ2F0ZV9taWdyYXRpb24EGG1lbWJlcgRdARwpASBSZXR1cm5zIHRydWUgaWYgdGhlIGRlbGVnYXRlZCBmdW5kcyBvZiB0aGUgcG9vbCBgbWVtYmVyYCBuZWVkcyBtaWdyYXRpb24uANggT25jZSBhIHBvb2wgaGFzIHN1Y2Nlc3NmdWxseSBtaWdyYXRlZCB0byB0aGUgc3RyYXRlZ3lVASBbYERlbGVnYXRlU3Rha2VgXShwYWxsZXRfbm9taW5hdGlvbl9wb29sczo6YWRhcHRlcjo6RGVsZWdhdGVTdGFrZSksIHRoZSBmdW5kcyBvZiB0aGUZASBtZW1iZXIgY2FuIGJlIG1pZ3JhdGVkIGZyb20gcG9vbCBhY2NvdW50IHRvIHRoZSBtZW1iZXIncyBhY2NvdW50LiBVc2UpASBbYG1pZ3JhdGVfZGVsZWdhdGlvbmBdKHBhbGxldF9ub21pbmF0aW9uX3Bvb2xzOjpDYWxsOjptaWdyYXRlX2RlbGVnYXRpb24ppCB0byBtaWdyYXRlIHRoZSBmdW5kcyBvZiB0aGUgcG9vbCBtZW1iZXIuAFBtZW1iZXJfdG90YWxfYmFsYW5jZQQMd2hvBFkBBGUBIFJldHVybnMgdGhlIHRvdGFsIGNvbnRyaWJ1dGlvbiBvZiBhIHBvb2wgbWVtYmVyIGluY2x1ZGluZyBhbnkgYmFsYW5jZSB0aGF0IGlzIHVuYm9uZGluZy4AMHBvb2xfYmFsYW5jZQQccG9vbF9pZDhZAQScIFRvdGFsIGJhbGFuY2UgY29udHJpYnV0ZWQgdG8gdGhlIHBvb2wuADRwb29sX2FjY291bnRzBBxwb29sX2lkOOUPBC0BIFJldHVybnMgdGhlIGJvbmRlZCBhY2NvdW50IGFuZCByZXdhcmQgYWNjb3VudCBhc3NvY2lhdGVkIHdpdGggdGhlIHBvb2xfaWQuAAT4IFJ1bnRpbWUgYXBpIGZvciBhY2Nlc3NpbmcgaW5mb3JtYXRpb24gYWJvdXQgbm9taW5hdGlvbiBwb29scy4EAChTdGFraW5nQXBpDERub21pbmF0aW9uc19xdW90YQQcYmFsYW5jZVkBOAQRASBSZXR1cm5zIHRoZSBub21pbmF0aW9ucyBxdW90YSBmb3IgYSBub21pbmF0b3Igd2l0aCBhIGdpdmVuIGJhbGFuY2UuAFxlcmFzX3N0YWtlcnNfcGFnZV9jb3VudAgMZXJhOBxhY2NvdW50BDgEOQEgUmV0dXJucyB0aGUgcGFnZSBjb3VudCBvZiBleHBvc3VyZXMgZm9yIGEgdmFsaWRhdG9yIGBhY2NvdW50YCBpbiBhIGdpdmVuIGVyYS4APHBlbmRpbmdfcmV3YXJkcwgMZXJhOBxhY2NvdW50BF0BBEUBIFJldHVybnMgdHJ1ZSBpZiBhIHZhbGlkYXRvciBgYWNjb3VudGAgaGFzIHBhZ2VzIHRvIGJlIGNsYWltZWQgZm9yIHRoZSBnaXZlbiBlcmEuAAAEACRJbmZsYXRpb24ElGV4cGVyaW1lbnRhbF9pc3N1YW5jZV9wcmVkaWN0aW9uX2luZm8ApREQ1CBSZXR1cm4gdGhlIGN1cnJlbnQgZXN0aW1hdGVzIG9mIHRoZSBpc3N1YW5jZSBhbW91bnQuAFEBIFRoaXMgaXMgbWFya2VkIGFzIGV4cGVyaW1lbnRhbCBpbiBsaWdodCBvZiBSRkMjODkuIE5vbmV0aGVsZXNzLCBpdHMgdXNhZ2UgaXMgaGlnaGx5JQEgcmVjb21tZW5kZWQgb3ZlciB0cnlpbmcgdG8gcmVhZC1zdG9yYWdlLCBvciByZS1jcmVhdGUgdGhlIG9uY2hhaW4gbG9naWMuAAAEACRSZXZpdmVBcGlsJGV0aF9ibG9jawD1Dwx8IFJldHVybnMgdGhlIGN1cnJlbnQgRVRIIGJsb2NrLgC4IFRoaXMgaXMgb25lIGJsb2NrIGJlaGluZCB0aGUgc3Vic3RyYXRlIGJsb2NrLgA4ZXRoX2Jsb2NrX2hhc2gEGG51bWJlckUHFQUE3CBSZXR1cm5zIHRoZSBFVEggYmxvY2sgaGFzaCBmb3IgdGhlIGdpdmVuIGJsb2NrIG51bWJlci4AQGV0aF9yZWNlaXB0X2RhdGEAYRAUEQEgVGhlIGRldGFpbHMgbmVlZGVkIHRvIHJlY29uc3RydWN0IHRoZSByZWNlaXB0IGluZm9ybWF0aW9uIG9mZmNoYWluLgAcICMgTm90ZQBVASBFYWNoIGVudHJ5IGNvcnJlc3BvbmRzIHRvIHRoZSBhcHByb3ByaWF0ZSBFdGhlcmV1bSB0cmFuc2FjdGlvbiBpbiB0aGUgY3VycmVudCBibG9jay4APGJsb2NrX2dhc19saW1pdABFBwR0IFJldHVybnMgdGhlIGJsb2NrIGdhcyBsaW1pdC4AbG1heF9leHRyaW5zaWNfd2VpZ2h0X2luX2dhcwBFBwTwIFJldHVybnMgdGhlIGJsb2NrIGdhcyBsaW1pdCBhcyBjYWxjdWxhdGVkIGZyb20gdGhlIHdlaWdodHMuABxiYWxhbmNlBBxhZGRyZXNzPQdFBwQxASBSZXR1cm5zIHRoZSBmcmVlIGJhbGFuY2Ugb2YgdGhlIGdpdmVuIGBbSDE2MF1gIGFkZHJlc3MsIHVzaW5nIEVWTSBkZWNpbWFscy4AJGdhc19wcmljZQBFBwRcIFJldHVybnMgdGhlIGdhcyBwcmljZS4AFG5vbmNlBBxhZGRyZXNzPQc4BMQgUmV0dXJucyB0aGUgbm9uY2Ugb2YgdGhlIGdpdmVuIGBbSDE2MF1gIGFkZHJlc3MuABBjYWxsGBhvcmlnaW4EEGRlc3Q9BxR2YWx1ZVkBJGdhc19saW1pdBEBVHN0b3JhZ2VfZGVwb3NpdF9saW1pdGUEKGlucHV0X2RhdGEYrREM9CBQZXJmb3JtIGEgY2FsbCBmcm9tIGEgc3BlY2lmaWVkIGFjY291bnQgdG8gYSBnaXZlbiBjb250cmFjdC4AiCBTZWUgW2BjcmF0ZTo6UGFsbGV0OjpiYXJlX2NhbGxgXS4ALGluc3RhbnRpYXRlHBhvcmlnaW4EFHZhbHVlWQEkZ2FzX2xpbWl0EQFUc3RvcmFnZV9kZXBvc2l0X2xpbWl0ZQQQY29kZcEREGRhdGEYEHNhbHRBB8URDHAgSW5zdGFudGlhdGUgYSBuZXcgY29udHJhY3QuAKQgU2VlIGBbY3JhdGU6OlBhbGxldDo6YmFyZV9pbnN0YW50aWF0ZV1gLgAwZXRoX3RyYW5zYWN0BAh0eNER7REQaCBQZXJmb3JtIGFuIEV0aGVyZXVtIGNhbGwuAJQgRGVwcmVjYXRlZCB1c2UgYHYyYCB2ZXJzaW9uIGluc3RlYWQusCBTZWUgW2BjcmF0ZTo6UGFsbGV0OjpkcnlfcnVuX2V0aF90cmFuc2FjdGBdAGBldGhfdHJhbnNhY3Rfd2l0aF9jb25maWcICHR40REYY29uZmln+RHtEQxoIFBlcmZvcm0gYW4gRXRoZXJldW0gY2FsbC4AsCBTZWUgW2BjcmF0ZTo6UGFsbGV0OjpkcnlfcnVuX2V0aF90cmFuc2FjdGBdAEBldGhfZXN0aW1hdGVfZ2FzCAh0eNERGGNvbmZpZ/kRLRIU6CBFc3RpbWF0ZXMgdGhlIGFtb3VudCBvZiBnYXMgdGhhdCBhIHRyYW5zYWN0aW9ucyByZXF1aXJlcy4AXQEgVGhpcyBmdW5jdGlvbiBlc3RpbWF0ZXMgdGhlIGdhcyBvZiB0aGUgdHJhbnNhY3Rpb24gYWNjb3JkaW5nIHRvIHRoZSBzYW1lIGJpbmFyeSBzZWFyY2hZASBhbGdvcml0aG0gdGhhdCdzIGltcGxlbWVudGVkIGluIEdldGguIEl0IHN0b3BzIHdoZW4gd2l0aCBhbiBhY2NlcHRhYmxlIGVycm9yIHJhdGlvIG9mtCAxLjUlIHNvIHRoYXQgdGhlIGFsZ29yaXRobSB0ZXJtaW5hdGVzIGVhcmx5LgBcZXRoX3ByZV9kaXNwYXRjaF93ZWlnaHQECHR4GDESBE0BIFJldHVybiB0aGUgcHJlLWRpc3BhdGNoIHdlaWdodCBib29rZWQgZm9yIHRoZSBzaWduZWQgRXRoZXJldW0gdHJhbnNhY3Rpb24gcGF5bG9hZC4ALHVwbG9hZF9jb2RlDBhvcmlnaW4EEGNvZGUYVHN0b3JhZ2VfZGVwb3NpdF9saW1pdGUENRIM6CBVcGxvYWQgbmV3IGNvZGUgd2l0aG91dCBpbnN0YW50aWF0aW5nIGEgY29udHJhY3QgZnJvbSBpdC4ApCBTZWUgW2BjcmF0ZTo6UGFsbGV0OjpiYXJlX3VwbG9hZF9jb2RlYF0uACxnZXRfc3RvcmFnZQgcYWRkcmVzcz0HDGtleQg9EhS8IFF1ZXJ5IGEgZ2l2ZW4gc3RvcmFnZSBrZXkgaW4gYSBnaXZlbiBjb250cmFjdC4ATQEgUmV0dXJucyBgT2soU29tZShWZWM8dTg+KSlgIGlmIHRoZSBzdG9yYWdlIHZhbHVlIGV4aXN0cyB1bmRlciB0aGUgZ2l2ZW4ga2V5IGluIHRoZWEBIHNwZWNpZmllZCBhY2NvdW50IGFuZCBgT2soTm9uZSlgIGlmIGl0IGRvZXNuJ3QuIElmIHRoZSBhY2NvdW50IHNwZWNpZmllZCBieSB0aGUgYWRkcmVzcwkBIGRvZXNuJ3QgZXhpc3QsIG9yIGRvZXNuJ3QgaGF2ZSBhIGNvbnRyYWN0IHRoZW4gYEVycmAgaXMgcmV0dXJuZWQuAExnZXRfc3RvcmFnZV92YXJfa2V5CBxhZGRyZXNzPQcMa2V5GD0SFPggUXVlcnkgYSBnaXZlbiB2YXJpYWJsZS1zaXplZCBzdG9yYWdlIGtleSBpbiBhIGdpdmVuIGNvbnRyYWN0LgBNASBSZXR1cm5zIGBPayhTb21lKFZlYzx1OD4pKWAgaWYgdGhlIHN0b3JhZ2UgdmFsdWUgZXhpc3RzIHVuZGVyIHRoZSBnaXZlbiBrZXkgaW4gdGhlYQEgc3BlY2lmaWVkIGFjY291bnQgYW5kIGBPayhOb25lKWAgaWYgaXQgZG9lc24ndC4gSWYgdGhlIGFjY291bnQgc3BlY2lmaWVkIGJ5IHRoZSBhZGRyZXNzCQEgZG9lc24ndCBleGlzdCwgb3IgZG9lc24ndCBoYXZlIGEgY29udHJhY3QgdGhlbiBgRXJyYCBpcyByZXR1cm5lZC4ALHRyYWNlX2Jsb2NrCBRibG9jawkKGGNvbmZpZ0USYRIYBQEgVHJhY2VzIHRoZSBleGVjdXRpb24gb2YgYW4gZW50aXJlIGJsb2NrIGFuZCByZXR1cm5zIGNhbGwgdHJhY2VzLgBBASBUaGlzIGlzIGludGVuZGVkIHRvIGJlIGNhbGxlZCB0aHJvdWdoIGBzdGF0ZV9jYWxsYCB0byByZXBsYXkgdGhlIGJsb2NrIGZyb20gdGhlOCBwYXJlbnQgYmxvY2suAMggU2VlIGV0aC1ycGMgYGRlYnVnX3RyYWNlQmxvY2tCeU51bWJlcmAgZm9yIHVzYWdlLgAgdHJhY2VfdHgMFGJsb2NrCQogdHhfaW5kZXg4GGNvbmZpZ0USwRIY/CBUcmFjZXMgdGhlIGV4ZWN1dGlvbiBvZiBhIHNwZWNpZmljIHRyYW5zYWN0aW9uIHdpdGhpbiBhIGJsb2NrLgBBASBUaGlzIGlzIGludGVuZGVkIHRvIGJlIGNhbGxlZCB0aHJvdWdoIGBzdGF0ZV9jYWxsYCB0byByZXBsYXkgdGhlIGJsb2NrIGZyb20gdGhljCBwYXJlbnQgaGFzaCB1cCB0byB0aGUgdHJhbnNhY3Rpb24uAMAgU2VlIGV0aC1ycGMgYGRlYnVnX3RyYWNlVHJhbnNhY3Rpb25gIGZvciB1c2FnZS4AKHRyYWNlX2NhbGwICHR40REYY29uZmlnRRLFEgzAIERyeSBydW4gYW5kIHJldHVybiB0aGUgdHJhY2Ugb2YgdGhlIGdpdmVuIGNhbGwuAKQgU2VlIGV0aC1ycGMgYGRlYnVnX3RyYWNlQ2FsbGAgZm9yIHVzYWdlLgBYdHJhY2VfY2FsbF93aXRoX2NvbmZpZwwIdHjRESx0cmFjZXJfdHlwZUUSGGNvbmZpZ8kSxRIUOQEgRHJ5IHJ1biBhbmQgcmV0dXJuIHRoZSB0cmFjZSBvZiB0aGUgZ2l2ZW4gY2FsbCB3aXRoIGFkZGl0aW9uYWwgY29uZmlndXJhdGlvbi4AQQEgTGlrZSBbYFNlbGY6OnRyYWNlX2NhbGxgXSwgYnV0IGFjY2VwdHMgYSBbYFRyYWNpbmdDb25maWdgXSB0aGF0IGNhbiBjYXJyeSBzdGF0ZUUBIG92ZXJyaWRlcyBhbmQgZnV0dXJlIGV4dGVuc2liaWxpdHkuIFRoZSBjb25maWcgbXVzdCBiZSB0aGUgKipsYXN0IGFyZ3VtZW50KiogZm9yBQEgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkg4oCUIHNlZSBbYFRyYWNpbmdDb25maWdgXSBkb2N1bWVudGF0aW9uLgAwYmxvY2tfYXV0aG9yAD0HBPggVGhlIGFkZHJlc3Mgb2YgdGhlIHZhbGlkYXRvciB0aGF0IHByb2R1Y2VkIHRoZSBjdXJyZW50IGJsb2NrLgAcYWRkcmVzcwQoYWNjb3VudF9pZAQ9BwTMIEdldCB0aGUgSDE2MCBhZGRyZXNzIGFzc29jaWF0ZWQgdG8gdGhpcyBhY2NvdW50IGlkAChhY2NvdW50X2lkBBxhZGRyZXNzPQcEBNAgR2V0IHRoZSBhY2NvdW50IGlkIGFzc29jaWF0ZWQgdG8gdGhpcyBIMTYwIGFkZHJlc3MuAFxydW50aW1lX3BhbGxldHNfYWRkcmVzcwA9BwT0IFRoZSBhZGRyZXNzIHVzZWQgdG8gY2FsbCB0aGUgcnVudGltZSdzIHBhbGxldHMgZGlzcGF0Y2hhYmxlcwAQY29kZQQcYWRkcmVzcz0HGAQRASBUaGUgY29kZSBhdCB0aGUgc3BlY2lmaWVkIGFkZHJlc3MgdGFraW5nIHByZS1jb21waWxlcyBpbnRvIGFjY291bnQuAFRuZXdfYmFsYW5jZV93aXRoX2R1c3QEHGJhbGFuY2VFB80SBA0BIENvbnN0cnVjdCB0aGUgbmV3IGJhbGFuY2UgYW5kIGR1c3QgY29tcG9uZW50cyBvZiB0aGlzIEVWTSBiYWxhbmNlLgAEvCBUaGUgQVBJIHVzZWQgdG8gZHJ5LXJ1biBjb250cmFjdCBpbnRlcmFjdGlvbnMuBAAg9QfZEgA=";
|
|
1
|
+
const binMeta = "bWV0YRDdEgAMKHNwX3J1bnRpbWUwbXVsdGlhZGRyZXNzME11bHRpQWRkcmVzcwgkQWNjb3VudElkAQQwQWNjb3VudEluZGV4ARABFAhJZAQABAEkQWNjb3VudElkAAAAFEluZGV4BAAUATBBY2NvdW50SW5kZXgAAQAMUmF3BAAYARxWZWM8dTg+AAIAJEFkZHJlc3MzMgQACAEgW3U4OyAzMl0AAwAkQWRkcmVzczIwBAAcASBbdTg7IDIwXQAEAAAEDBxzcF9jb3JlGGNyeXB0byxBY2NvdW50SWQzMgAABAAIASBbdTg7IDMyXQAACAAAAyAAAAAMAAwAAAUDABAAAAQAABQAAAYQABgAAAIMABwAAAMUAAAADAAgCFxhc3NldF9odWJfcGFzZW9fcnVudGltZSxSdW50aW1lQ2FsbAAB3BhTeXN0ZW0EACQBrQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8U3lzdGVtLCBSdW50aW1lPgAAADxQYXJhY2hhaW5TeXN0ZW0EAEQB0QFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8UGFyYWNoYWluU3lzdGVtLCBSdW50aW1lPgABACRUaW1lc3RhbXAEALQBuQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8VGltZXN0YW1wLCBSdW50aW1lPgADADRQYXJhY2hhaW5JbmZvBAC8AckBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFBhcmFjaGFpbkluZm8sIFJ1bnRpbWU+AAQAIFByZWltYWdlBADAAbUBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFByZWltYWdlLCBSdW50aW1lPgAFACRTY2hlZHVsZXIEAMgBuQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8U2NoZWR1bGVyLCBSdW50aW1lPgAGAChQYXJhbWV0ZXJzBADUAb0Bc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFBhcmFtZXRlcnMsIFJ1bnRpbWU+AAcAUE11bHRpQmxvY2tNaWdyYXRpb25zBAApAQHlAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxNdWx0aUJsb2NrTWlncmF0aW9ucywgUnVudGltZT4ACAAgQmFsYW5jZXMEAFEBAbUBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPEJhbGFuY2VzLCBSdW50aW1lPgAKABxWZXN0aW5nBABpAQGxAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxWZXN0aW5nLCBSdW50aW1lPgAOABhDbGFpbXMEAHEBAa0Bc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPENsYWltcywgUnVudGltZT4ADwAMRGFwBACVAQGhAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxEYXAsIFJ1bnRpbWU+ABAARENvbGxhdG9yU2VsZWN0aW9uBACxAQHZAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxDb2xsYXRvclNlbGVjdGlvbiwgUnVudGltZT4AFQAcU2Vzc2lvbgQAtQEBsQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8U2Vzc2lvbiwgUnVudGltZT4AFgAkWGNtcFF1ZXVlBADBAQG5AXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxYY21wUXVldWUsIFJ1bnRpbWU+AB4ALFBvbGthZG90WGNtBADFAQHBAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxQb2xrYWRvdFhjbSwgUnVudGltZT4AHwAoQ3VtdWx1c1hjbQQAxQMBvQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8Q3VtdWx1c1hjbSwgUnVudGltZT4AIABEVG9LdXNhbWFYY21Sb3V0ZXIEAMkDAdkBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFRvS3VzYW1hWGNtUm91dGVyLCBSdW50aW1lPgAiADBNZXNzYWdlUXVldWUEAM0DAcUBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPE1lc3NhZ2VRdWV1ZSwgUnVudGltZT4AIwBgU25vd2JyaWRnZVN5c3RlbUZyb250ZW5kBADVAwH1AXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxTbm93YnJpZGdlU3lzdGVtRnJvbnRlbmQsIFJ1bnRpbWU+ACQAHFV0aWxpdHkEAOUDAbEBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFV0aWxpdHksIFJ1bnRpbWU+ACgAIE11bHRpc2lnBAApBAG1AXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxNdWx0aXNpZywgUnVudGltZT4AKQAUUHJveHkEADUEAakBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFByb3h5LCBSdW50aW1lPgAqABxJbmRpY2VzBABBBAGxAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxJbmRpY2VzLCBSdW50aW1lPgArABhBc3NldHMEAEUEAa0Bc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPEFzc2V0cywgUnVudGltZT4AMgAcVW5pcXVlcwQAUQQBsQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8VW5pcXVlcywgUnVudGltZT4AMwAQTmZ0cwQAaQQBpQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8TmZ0cywgUnVudGltZT4ANAA0Rm9yZWlnbkFzc2V0cwQAyQQByQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8Rm9yZWlnbkFzc2V0cywgUnVudGltZT4ANQAoUG9vbEFzc2V0cwQA2QQBvQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8UG9vbEFzc2V0cywgUnVudGltZT4ANgA8QXNzZXRDb252ZXJzaW9uBADdBAHRAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxBc3NldENvbnZlcnNpb24sIFJ1bnRpbWU+ADcAIFRyZWFzdXJ5BADlBAG1AXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxUcmVhc3VyeSwgUnVudGltZT4APABAQ29udmljdGlvblZvdGluZwQA8QQB1QFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8Q29udmljdGlvblZvdGluZywgUnVudGltZT4APQAkUmVmZXJlbmRhBAAFBQG5AXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxSZWZlcmVuZGEsIFJ1bnRpbWU+AD4AJFdoaXRlbGlzdAQAGQUBuQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8V2hpdGVsaXN0LCBSdW50aW1lPgBAACBCb3VudGllcwQAHQUBtQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8Qm91bnRpZXMsIFJ1bnRpbWU+AEEANENoaWxkQm91bnRpZXMEACEFAckBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPENoaWxkQm91bnRpZXMsIFJ1bnRpbWU+AEIAJEFzc2V0UmF0ZQQAJQUBuQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8QXNzZXRSYXRlLCBSdW50aW1lPgBDAEhNdWx0aUFzc2V0Qm91bnRpZXMEAC0FAd0Bc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPE11bHRpQXNzZXRCb3VudGllcywgUnVudGltZT4ARABIU3RhdGVUcmllTWlncmF0aW9uBAAxBQHdAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxTdGF0ZVRyaWVNaWdyYXRpb24sIFJ1bnRpbWU+AEYAPE5vbWluYXRpb25Qb29scwQASQUB0QFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8Tm9taW5hdGlvblBvb2xzLCBSdW50aW1lPgBQACRWb3Rlckxpc3QEAH0FAbkBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFZvdGVyTGlzdCwgUnVudGltZT4AUgA8U3Rha2luZ1JjQ2xpZW50BACBBQHRAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxTdGFraW5nUmNDbGllbnQsIFJ1bnRpbWU+AFQASE11bHRpQmxvY2tFbGVjdGlvbgQApQUB3QFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8TXVsdGlCbG9ja0VsZWN0aW9uLCBSdW50aW1lPgBVAGhNdWx0aUJsb2NrRWxlY3Rpb25WZXJpZmllcgQA2QUB/QFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8TXVsdGlCbG9ja0VsZWN0aW9uVmVyaWZpZXIsIFJ1bnRpbWU+AFYAaE11bHRpQmxvY2tFbGVjdGlvblVuc2lnbmVkBADdBQH9AXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxNdWx0aUJsb2NrRWxlY3Rpb25VbnNpZ25lZCwgUnVudGltZT4AVwBgTXVsdGlCbG9ja0VsZWN0aW9uU2lnbmVkBAC1BgH1AXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxNdWx0aUJsb2NrRWxlY3Rpb25TaWduZWQsIFJ1bnRpbWU+AFgAHFN0YWtpbmcEAL0GAbEBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFN0YWtpbmcsIFJ1bnRpbWU+AFkARE1lbWJlcnNTdWJzY3JpYmVyBAAJBwHZAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxNZW1iZXJzU3Vic2NyaWJlciwgUnVudGltZT4AYQA0QWxpYXNBY2NvdW50cwQALQcByQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8QWxpYXNBY2NvdW50cywgUnVudGltZT4AYgAQUGdhcwQANQcBpQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8UGdhcywgUnVudGltZT4AYwAYUmV2aXZlBAA5BwGtAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxSZXZpdmUsIFJ1bnRpbWU+AGQAMERvdG5zR2F0ZXdheQQATQcBxQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8RG90bnNHYXRld2F5LCBSdW50aW1lPgCYAERPcmlnaW5SZXN0cmljdGlvbgQAYQcB2QFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8T3JpZ2luUmVzdHJpY3Rpb24sIFJ1bnRpbWU+AJkAEFN1ZG8EAGkHAaUBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFN1ZG8sIFJ1bnRpbWU+APsAFEFoT3BzBABtBwGpAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxBaE9wcywgUnVudGltZT4A/gAAJAwwZnJhbWVfc3lzdGVtGHBhbGxldBBDYWxsBARUAAEwGHJlbWFyawQBGHJlbWFyaxgBHFZlYzx1OD4AAAxoTWFrZSBzb21lIG9uLWNoYWluIHJlbWFyay4AiENhbiBiZSBleGVjdXRlZCBieSBldmVyeSBgb3JpZ2luYC44c2V0X2hlYXBfcGFnZXMEARRwYWdlcygBDHU2NAABBPhTZXQgdGhlIG51bWJlciBvZiBwYWdlcyBpbiB0aGUgV2ViQXNzZW1ibHkgZW52aXJvbm1lbnQncyBoZWFwLiBzZXRfY29kZQQBEGNvZGUYARxWZWM8dTg+AAIEZFNldCB0aGUgbmV3IHJ1bnRpbWUgY29kZS5cc2V0X2NvZGVfd2l0aG91dF9jaGVja3MEARBjb2RlGAEcVmVjPHU4PgADEBkBU2V0IHRoZSBuZXcgcnVudGltZSBjb2RlIHdpdGhvdXQgZG9pbmcgYW55IGNoZWNrcyBvZiB0aGUgZ2l2ZW4gYGNvZGVgLgBRAU5vdGUgdGhhdCBydW50aW1lIHVwZ3JhZGVzIHdpbGwgbm90IHJ1biBpZiB0aGlzIGlzIGNhbGxlZCB3aXRoIGEgbm90LWluY3JlYXNpbmcgc3BlYyB2ZXJzaW9uISxzZXRfc3RvcmFnZQQBFGl0ZW1zLAE0VmVjPEtleVZhbHVlPgAEBGhTZXQgc29tZSBpdGVtcyBvZiBzdG9yYWdlLjBraWxsX3N0b3JhZ2UEARBrZXlzNAEgVmVjPEtleT4ABQR0S2lsbCBzb21lIGl0ZW1zIGZyb20gc3RvcmFnZS4sa2lsbF9wcmVmaXgIARhwcmVmaXgYAQxLZXkAARxzdWJrZXlzOAEMdTMyAAYQEQFLaWxsIGFsbCBzdG9yYWdlIGl0ZW1zIHdpdGggYSBrZXkgdGhhdCBzdGFydHMgd2l0aCB0aGUgZ2l2ZW4gcHJlZml4LgA5ASoqTk9URToqKiBXZSByZWx5IG9uIHRoZSBSb290IG9yaWdpbiB0byBwcm92aWRlIHVzIHRoZSBudW1iZXIgb2Ygc3Via2V5cyB1bmRlcj0BdGhlIHByZWZpeCB3ZSBhcmUgcmVtb3ZpbmcgdG8gYWNjdXJhdGVseSBjYWxjdWxhdGUgdGhlIHdlaWdodCBvZiB0aGlzIGZ1bmN0aW9uLkRyZW1hcmtfd2l0aF9ldmVudAQBGHJlbWFyaxgBHFZlYzx1OD4ABwSkTWFrZSBzb21lIG9uLWNoYWluIHJlbWFyayBhbmQgZW1pdCBldmVudC4cZG9fdGFzawQBEHRhc2s8AThUOjpSdW50aW1lVGFzawAIAERhdXRob3JpemVfdXBncmFkZQQBJGNvZGVfaGFzaEABHFQ6Okhhc2gACRBhAUF1dGhvcml6ZSBhbiB1cGdyYWRlIHRvIGEgZ2l2ZW4gYGNvZGVfaGFzaGAgZm9yIHRoZSBydW50aW1lLiBUaGUgcnVudGltZSBjYW4gYmUgc3VwcGxpZWQYbGF0ZXIuAHxUaGlzIGNhbGwgcmVxdWlyZXMgUm9vdCBvcmlnaW4ugGF1dGhvcml6ZV91cGdyYWRlX3dpdGhvdXRfY2hlY2tzBAEkY29kZV9oYXNoQAEcVDo6SGFzaAAKIGEBQXV0aG9yaXplIGFuIHVwZ3JhZGUgdG8gYSBnaXZlbiBgY29kZV9oYXNoYCBmb3IgdGhlIHJ1bnRpbWUuIFRoZSBydW50aW1lIGNhbiBiZSBzdXBwbGllZBhsYXRlci4AXQFXQVJOSU5HOiBUaGlzIGF1dGhvcml6ZXMgYW4gdXBncmFkZSB0aGF0IHdpbGwgdGFrZSBwbGFjZSB3aXRob3V0IGFueSBzYWZldHkgY2hlY2tzLCBmb3JZAWV4YW1wbGUgdGhhdCB0aGUgc3BlYyBuYW1lIHJlbWFpbnMgdGhlIHNhbWUgYW5kIHRoYXQgdGhlIHZlcnNpb24gbnVtYmVyIGluY3JlYXNlcy4gTm908HJlY29tbWVuZGVkIGZvciBub3JtYWwgdXNlLiBVc2UgYGF1dGhvcml6ZV91cGdyYWRlYCBpbnN0ZWFkLgB8VGhpcyBjYWxsIHJlcXVpcmVzIFJvb3Qgb3JpZ2luLmBhcHBseV9hdXRob3JpemVkX3VwZ3JhZGUEARBjb2RlGAEcVmVjPHU4PgALJFUBUHJvdmlkZSB0aGUgcHJlaW1hZ2UgKHJ1bnRpbWUgYmluYXJ5KSBgY29kZWAgZm9yIGFuIHVwZ3JhZGUgdGhhdCBoYXMgYmVlbiBhdXRob3JpemVkLgBJAUlmIHRoZSBhdXRob3JpemF0aW9uIHJlcXVpcmVkIGEgdmVyc2lvbiBjaGVjaywgdGhpcyBjYWxsIHdpbGwgZW5zdXJlIHRoZSBzcGVjIG5hbWXocmVtYWlucyB1bmNoYW5nZWQgYW5kIHRoYXQgdGhlIHNwZWMgdmVyc2lvbiBoYXMgaW5jcmVhc2VkLgBZAURlcGVuZGluZyBvbiB0aGUgcnVudGltZSdzIGBPblNldENvZGVgIGNvbmZpZ3VyYXRpb24sIHRoaXMgZnVuY3Rpb24gbWF5IGRpcmVjdGx5IGFwcGx5EQF0aGUgbmV3IGBjb2RlYCBpbiB0aGUgc2FtZSBibG9jayBvciBhdHRlbXB0IHRvIHNjaGVkdWxlIHRoZSB1cGdyYWRlLgBgQWxsIG9yaWdpbnMgYXJlIGFsbG93ZWQuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLigAAAUGACwAAAIwADAAAAQIGBgANAAAAhgAOAAABQUAPAhcYXNzZXRfaHViX3Bhc2VvX3J1bnRpbWUsUnVudGltZVRhc2sAAQAAQAg8cHJpbWl0aXZlX3R5cGVzEEgyNTYAAAQACAEgW3U4OyAzMl0AAEQMfGN1bXVsdXNfcGFsbGV0X3BhcmFjaGFpbl9zeXN0ZW0YcGFsbGV0EENhbGwEBFQAAQhMc2V0X3ZhbGlkYXRpb25fZGF0YQgBEGRhdGFIAWhCYXNpY1BhcmFjaGFpbkluaGVyZW50RGF0YQABVGluYm91bmRfbWVzc2FnZXNfZGF0YYABTEluYm91bmRNZXNzYWdlc0RhdGEAACSAU2V0IHRoZSBjdXJyZW50IHZhbGlkYXRpb24gZGF0YS4AQQFUaGlzIHNob3VsZCBiZSBpbnZva2VkIGV4YWN0bHkgb25jZSBwZXIgYmxvY2suIEl0IHdpbGwgcGFuaWMgYXQgdGhlIGZpbmFsaXphdGlvbohwaGFzZSBpZiB0aGUgY2FsbCB3YXMgbm90IGludm9rZWQuANBUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBgSW5oZXJlbnRgACEBQXMgYSBzaWRlIGVmZmVjdCwgdGhpcyBmdW5jdGlvbiB1cGdyYWRlcyB0aGUgY3VycmVudCB2YWxpZGF0aW9uIGZ1bmN0aW9uhGlmIHRoZSBhcHByb3ByaWF0ZSB0aW1lIGhhcyBjb21lLmBzdWRvX3NlbmRfdXB3YXJkX21lc3NhZ2UEARxtZXNzYWdlGAE0VXB3YXJkTWVzc2FnZQABAAQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy5IDHxjdW11bHVzX3BhbGxldF9wYXJhY2hhaW5fc3lzdGVtSHBhcmFjaGFpbl9pbmhlcmVudGhCYXNpY1BhcmFjaGFpbkluaGVyZW50RGF0YQAAEAE8dmFsaWRhdGlvbl9kYXRhTAFcUGVyc2lzdGVkVmFsaWRhdGlvbkRhdGEAAURyZWxheV9jaGFpbl9zdGF0ZVQBVHNwX3RyaWU6OlN0b3JhZ2VQcm9vZgABYHJlbGF5X3BhcmVudF9kZXNjZW5kYW50c1wBQFZlYzxSZWxheUhlYWRlcj4AAUBjb2xsYXRvcl9wZWVyX2lkeAFYT3B0aW9uPEFwcHJvdmVkUGVlcklkPgAATAxMcG9sa2Fkb3RfcHJpbWl0aXZlcwh2OVxQZXJzaXN0ZWRWYWxpZGF0aW9uRGF0YQgESAFABE4BOAAQASxwYXJlbnRfaGVhZFABIEhlYWREYXRhAAFMcmVsYXlfcGFyZW50X251bWJlcjgBBE4AAWRyZWxheV9wYXJlbnRfc3RvcmFnZV9yb290QAEESAABMG1heF9wb3Zfc2l6ZTgBDHUzMgAAUAx0cG9sa2Fkb3RfcGFyYWNoYWluX3ByaW1pdGl2ZXMocHJpbWl0aXZlcyBIZWFkRGF0YQAABAAYARxWZWM8dTg+AABUDBxzcF90cmllNHN0b3JhZ2VfcHJvb2YwU3RvcmFnZVByb29mAAAEASh0cmllX25vZGVzWAFEQlRyZWVTZXQ8VmVjPHU4Pj4AAFgEIEJUcmVlU2V0BARUARgABAA0AAAAXAAAAmAAYBAoc3BfcnVudGltZRxnZW5lcmljGGhlYWRlchhIZWFkZXIIGE51bWJlcgE4EEhhc2gAABQBLHBhcmVudF9oYXNoQAEwSGFzaDo6T3V0cHV0AAEYbnVtYmVyZAEYTnVtYmVyAAEoc3RhdGVfcm9vdEABMEhhc2g6Ok91dHB1dAABPGV4dHJpbnNpY3Nfcm9vdEABMEhhc2g6Ok91dHB1dAABGGRpZ2VzdGgBGERpZ2VzdAAAZAAABjgAaBAoc3BfcnVudGltZRxnZW5lcmljGGRpZ2VzdBhEaWdlc3QAAAQBEGxvZ3NsATxWZWM8RGlnZXN0SXRlbT4AAGwAAAJwAHAQKHNwX3J1bnRpbWUcZ2VuZXJpYxhkaWdlc3QoRGlnZXN0SXRlbQABFChQcmVSdW50aW1lCAB0AURDb25zZW5zdXNFbmdpbmVJZAAAGAEcVmVjPHU4PgAGACRDb25zZW5zdXMIAHQBRENvbnNlbnN1c0VuZ2luZUlkAAAYARxWZWM8dTg+AAQAEFNlYWwIAHQBRENvbnNlbnN1c0VuZ2luZUlkAAAYARxWZWM8dTg+AAUAFE90aGVyBAAYARxWZWM8dTg+AAAAZFJ1bnRpbWVFbnZpcm9ubWVudFVwZGF0ZWQACAAAdAAAAwQAAAAMAHgEGE9wdGlvbgQEVAF8AQgQTm9uZQAAABBTb21lBAB8AAABAAB8DExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBDARTAAAEABgBGFZlYzxUPgAAgAx8Y3VtdWx1c19wYWxsZXRfcGFyYWNoYWluX3N5c3RlbUhwYXJhY2hhaW5faW5oZXJlbnRMSW5ib3VuZE1lc3NhZ2VzRGF0YQAACAFEZG93bndhcmRfbWVzc2FnZXOEAXxBYnJpZGdlZEluYm91bmREb3dud2FyZE1lc3NhZ2VzAAFMaG9yaXpvbnRhbF9tZXNzYWdlc5gBbEFicmlkZ2VkSW5ib3VuZEhybXBNZXNzYWdlcwAAhAx8Y3VtdWx1c19wYWxsZXRfcGFyYWNoYWluX3N5c3RlbUhwYXJhY2hhaW5faW5oZXJlbnSEQWJyaWRnZWRJbmJvdW5kTWVzc2FnZXNDb2xsZWN0aW9uBBxNZXNzYWdlAYgACAE0ZnVsbF9tZXNzYWdlc4wBMFZlYzxNZXNzYWdlPgABPGhhc2hlZF9tZXNzYWdlc5ABfFZlYzxNZXNzYWdlOjpDb21wcmVzc2VkTWVzc2FnZT4AAIgIYHBvbGthZG90X2NvcmVfcHJpbWl0aXZlc1hJbmJvdW5kRG93bndhcmRNZXNzYWdlBCxCbG9ja051bWJlcgE4AAgBHHNlbnRfYXQ4ASxCbG9ja051bWJlcgABDG1zZxgBPERvd253YXJkTWVzc2FnZQAAjAAAAogAkAAAApQAlAiUY3VtdWx1c19wcmltaXRpdmVzX3BhcmFjaGFpbl9pbmhlcmVudDRIYXNoZWRNZXNzYWdlAAAIARxzZW50X2F0OAFUUmVsYXlDaGFpbkJsb2NrTnVtYmVyAAEgbXNnX2hhc2hAATRzcF9jb3JlOjpIMjU2AACYDHxjdW11bHVzX3BhbGxldF9wYXJhY2hhaW5fc3lzdGVtSHBhcmFjaGFpbl9pbmhlcmVudIRBYnJpZGdlZEluYm91bmRNZXNzYWdlc0NvbGxlY3Rpb24EHE1lc3NhZ2UBnAAIATRmdWxsX21lc3NhZ2VzqAEwVmVjPE1lc3NhZ2U+AAE8aGFzaGVkX21lc3NhZ2VzrAF8VmVjPE1lc3NhZ2U6OkNvbXByZXNzZWRNZXNzYWdlPgAAnAAABAigpACgDHRwb2xrYWRvdF9wYXJhY2hhaW5fcHJpbWl0aXZlcyhwcmltaXRpdmVzCElkAAAEADgBDHUzMgAApAhgcG9sa2Fkb3RfY29yZV9wcmltaXRpdmVzSEluYm91bmRIcm1wTWVzc2FnZQQsQmxvY2tOdW1iZXIBOAAIARxzZW50X2F0OAEsQmxvY2tOdW1iZXIAARBkYXRhGAFMYWxsb2M6OnZlYzo6VmVjPHU4PgAAqAAAApwArAAAArAAsAAABAiglAC0DEBwYWxsZXRfdGltZXN0YW1wGHBhbGxldBBDYWxsBARUAAEEDHNldAQBDG5vd7gBJFQ6Ok1vbWVudAAATFRTZXQgdGhlIGN1cnJlbnQgdGltZS4AVQFUaGlzIGNhbGwgc2hvdWxkIGJlIGludm9rZWQgZXhhY3RseSBvbmNlIHBlciBibG9jay4gSXQgd2lsbCBwYW5pYyBhdCB0aGUgZmluYWxpemF0aW9u1HBoYXNlLCBpZiB0aGlzIGNhbGwgaGFzbid0IGJlZW4gaW52b2tlZCBieSB0aGF0IHRpbWUuAEEBVGhlIHRpbWVzdGFtcCBzaG91bGQgYmUgZ3JlYXRlciB0aGFuIHRoZSBwcmV2aW91cyBvbmUgYnkgdGhlIGFtb3VudCBzcGVjaWZpZWQgYnloW2BDb25maWc6Ok1pbmltdW1QZXJpb2RgXS4AxFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9Ob25lXy4AUQFUaGlzIGRpc3BhdGNoIGNsYXNzIGlzIF9NYW5kYXRvcnlfIHRvIGVuc3VyZSBpdCBnZXRzIGV4ZWN1dGVkIGluIHRoZSBibG9jay4gQmUgYXdhcmVRAXRoYXQgY2hhbmdpbmcgdGhlIGNvbXBsZXhpdHkgb2YgdGhpcyBjYWxsIGNvdWxkIHJlc3VsdCBleGhhdXN0aW5nIHRoZSByZXNvdXJjZXMgaW4gYYRibG9jayB0byBleGVjdXRlIGFueSBvdGhlciBjYWxscy4ANCMjIENvbXBsZXhpdHkxAS0gYE8oMSlgIChOb3RlIHRoYXQgaW1wbGVtZW50YXRpb25zIG9mIGBPblRpbWVzdGFtcFNldGAgbXVzdCBhbHNvIGJlIGBPKDEpYClVAS0gMSBzdG9yYWdlIHJlYWQgYW5kIDEgc3RvcmFnZSBtdXRhdGlvbiAoY29kZWMgYE8oMSlgIGJlY2F1c2Ugb2YgYERpZFVwZGF0ZTo6dGFrZWAgaW5AICBgb25fZmluYWxpemVgKdQtIDEgZXZlbnQgaGFuZGxlciBgb25fdGltZXN0YW1wX3NldGAuIE11c3QgYmUgYE8oMSlgLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy64AAAGKAC8DFhzdGFnaW5nX3BhcmFjaGFpbl9pbmZvGHBhbGxldBBDYWxsBARUAAEABA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLsAMPHBhbGxldF9wcmVpbWFnZRhwYWxsZXQQQ2FsbAQEVAABFDRub3RlX3ByZWltYWdlBAEUYnl0ZXMYARxWZWM8dTg+AAAQdFJlZ2lzdGVyIGEgcHJlaW1hZ2Ugb24tY2hhaW4uAFUBSWYgdGhlIHByZWltYWdlIHdhcyBwcmV2aW91c2x5IHJlcXVlc3RlZCwgbm8gZmVlcyBvciBkZXBvc2l0cyBhcmUgdGFrZW4gZm9yIHByb3ZpZGluZ1UBdGhlIHByZWltYWdlLiBPdGhlcndpc2UsIGEgZGVwb3NpdCBpcyB0YWtlbiBwcm9wb3J0aW9uYWwgdG8gdGhlIHNpemUgb2YgdGhlIHByZWltYWdlLjx1bm5vdGVfcHJlaW1hZ2UEARBoYXNoQAEcVDo6SGFzaAABGNxDbGVhciBhbiB1bnJlcXVlc3RlZCBwcmVpbWFnZSBmcm9tIHRoZSBydW50aW1lIHN0b3JhZ2UuAPxJZiBgbGVuYCBpcyBwcm92aWRlZCwgdGhlbiBpdCB3aWxsIGJlIGEgbXVjaCBjaGVhcGVyIG9wZXJhdGlvbi4AAQEtIGBoYXNoYDogVGhlIGhhc2ggb2YgdGhlIHByZWltYWdlIHRvIGJlIHJlbW92ZWQgZnJvbSB0aGUgc3RvcmUuuC0gYGxlbmA6IFRoZSBsZW5ndGggb2YgdGhlIHByZWltYWdlIG9mIGBoYXNoYC5AcmVxdWVzdF9wcmVpbWFnZQQBEGhhc2hAARxUOjpIYXNoAAIQQQFSZXF1ZXN0IGEgcHJlaW1hZ2UgYmUgdXBsb2FkZWQgdG8gdGhlIGNoYWluIHdpdGhvdXQgcGF5aW5nIGFueSBmZWVzIG9yIGRlcG9zaXRzLgBVAUlmIHRoZSBwcmVpbWFnZSByZXF1ZXN0cyBoYXMgYWxyZWFkeSBiZWVuIHByb3ZpZGVkIG9uLWNoYWluLCB3ZSB1bnJlc2VydmUgYW55IGRlcG9zaXQ5AWEgdXNlciBtYXkgaGF2ZSBwYWlkLCBhbmQgdGFrZSB0aGUgY29udHJvbCBvZiB0aGUgcHJlaW1hZ2Ugb3V0IG9mIHRoZWlyIGhhbmRzLkh1bnJlcXVlc3RfcHJlaW1hZ2UEARBoYXNoQAEcVDo6SGFzaAADDLxDbGVhciBhIHByZXZpb3VzbHkgbWFkZSByZXF1ZXN0IGZvciBhIHByZWltYWdlLgAtAU5PVEU6IFRISVMgTVVTVCBOT1QgQkUgQ0FMTEVEIE9OIGBoYXNoYCBNT1JFIFRJTUVTIFRIQU4gYHJlcXVlc3RfcHJlaW1hZ2VgLjhlbnN1cmVfdXBkYXRlZAQBGGhhc2hlc8QBMFZlYzxUOjpIYXNoPgAEDLxFbnN1cmUgdGhhdCB0aGUgYnVsayBvZiBwcmUtaW1hZ2VzIGlzIHVwZ3JhZGVkLgA9AVRoZSBjYWxsZXIgcGF5cyBubyBmZWUgaWYgYXQgbGVhc3QgOTAlIG9mIHByZS1pbWFnZXMgd2VyZSBzdWNjZXNzZnVsbHkgdXBkYXRlZC4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuxAAAAkAAyAxAcGFsbGV0X3NjaGVkdWxlchhwYWxsZXQQQ2FsbAQEVAABKCBzY2hlZHVsZRABEHdoZW44AURCbG9ja051bWJlckZvcjxUPgABOG1heWJlX3BlcmlvZGljzAGsT3B0aW9uPHNjaGVkdWxlOjpQZXJpb2Q8QmxvY2tOdW1iZXJGb3I8VD4+PgABIHByaW9yaXR5DAFIc2NoZWR1bGU6OlByaW9yaXR5AAEQY2FsbCABfEJveDw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4AAARwQW5vbnltb3VzbHkgc2NoZWR1bGUgYSB0YXNrLhhjYW5jZWwIARB3aGVuOAFEQmxvY2tOdW1iZXJGb3I8VD4AARRpbmRleDgBDHUzMgABEGEBQ2FuY2VsIGEgc2NoZWR1bGVkIHRhc2sgKG5hbWVkIG9yIGFub255bW91cyksIGJ5IHByb3ZpZGluZyB0aGUgYmxvY2sgaXQgaXMgc2NoZWR1bGVkIGZvchkBZXhlY3V0aW9uIGluLCBhcyB3ZWxsIGFzIHRoZSBpbmRleCBvZiB0aGUgdGFzayBpbiB0aGF0IGJsb2NrJ3MgYWdlbmRhLgA1AUluIHRoZSBjYXNlIG9mIGEgbmFtZWQgdGFzaywgaXQgd2lsbCByZW1vdmUgaXQgZnJvbSB0aGUgbG9va3VwIHRhYmxlIGFzIHdlbGwuOHNjaGVkdWxlX25hbWVkFAEIaWQIASBUYXNrTmFtZQABEHdoZW44AURCbG9ja051bWJlckZvcjxUPgABOG1heWJlX3BlcmlvZGljzAGsT3B0aW9uPHNjaGVkdWxlOjpQZXJpb2Q8QmxvY2tOdW1iZXJGb3I8VD4+PgABIHByaW9yaXR5DAFIc2NoZWR1bGU6OlByaW9yaXR5AAEQY2FsbCABfEJveDw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4AAgRYU2NoZWR1bGUgYSBuYW1lZCB0YXNrLjBjYW5jZWxfbmFtZWQEAQhpZAgBIFRhc2tOYW1lAAMEeENhbmNlbCBhIG5hbWVkIHNjaGVkdWxlZCB0YXNrLjhzY2hlZHVsZV9hZnRlchABFGFmdGVyOAFEQmxvY2tOdW1iZXJGb3I8VD4AAThtYXliZV9wZXJpb2RpY8wBrE9wdGlvbjxzY2hlZHVsZTo6UGVyaW9kPEJsb2NrTnVtYmVyRm9yPFQ+Pj4AASBwcmlvcml0eQwBSHNjaGVkdWxlOjpQcmlvcml0eQABEGNhbGwgAXxCb3g8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AAQEqEFub255bW91c2x5IHNjaGVkdWxlIGEgdGFzayBhZnRlciBhIGRlbGF5LlBzY2hlZHVsZV9uYW1lZF9hZnRlchQBCGlkCAEgVGFza05hbWUAARRhZnRlcjgBREJsb2NrTnVtYmVyRm9yPFQ+AAE4bWF5YmVfcGVyaW9kaWPMAaxPcHRpb248c2NoZWR1bGU6OlBlcmlvZDxCbG9ja051bWJlckZvcjxUPj4+AAEgcHJpb3JpdHkMAUhzY2hlZHVsZTo6UHJpb3JpdHkAARBjYWxsIAF8Qm94PDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgAFBJBTY2hlZHVsZSBhIG5hbWVkIHRhc2sgYWZ0ZXIgYSBkZWxheS4kc2V0X3JldHJ5DAEQdGFza9ABeFRhc2tBZGRyZXNzPEJsb2NrTnVtYmVyRm9yPFQ+PgABHHJldHJpZXMMAQh1OAABGHBlcmlvZDgBREJsb2NrTnVtYmVyRm9yPFQ+AAY4WQFTZXQgYSByZXRyeSBjb25maWd1cmF0aW9uIGZvciBhIHRhc2sgc28gdGhhdCwgaW4gY2FzZSBpdHMgc2NoZWR1bGVkIHJ1biBmYWlscywgaXQgd2lsbFUBYmUgcmV0cmllZCBhZnRlciBgcGVyaW9kYCBibG9ja3MsIGZvciBhIHRvdGFsIGFtb3VudCBvZiBgcmV0cmllc2AgcmV0cmllcyBvciB1bnRpbCBpdCRzdWNjZWVkcy4AVQFUYXNrcyB3aGljaCBuZWVkIHRvIGJlIHNjaGVkdWxlZCBmb3IgYSByZXRyeSBhcmUgc3RpbGwgc3ViamVjdCB0byB3ZWlnaHQgbWV0ZXJpbmcgYW5kUQFhZ2VuZGEgc3BhY2UsIHNhbWUgYXMgYSByZWd1bGFyIHRhc2suIElmIGEgcGVyaW9kaWMgdGFzayBmYWlscywgaXQgd2lsbCBiZSBzY2hlZHVsZWSQbm9ybWFsbHkgd2hpbGUgdGhlIHRhc2sgaXMgcmV0cnlpbmcuAFEBVGFza3Mgc2NoZWR1bGVkIGFzIGEgcmVzdWx0IG9mIGEgcmV0cnkgZm9yIGEgcGVyaW9kaWMgdGFzayBhcmUgdW5uYW1lZCwgbm9uLXBlcmlvZGljPQFjbG9uZXMgb2YgdGhlIG9yaWdpbmFsIHRhc2suIFRoZWlyIHJldHJ5IGNvbmZpZ3VyYXRpb24gd2lsbCBiZSBkZXJpdmVkIGZyb20gdGhlTQFvcmlnaW5hbCB0YXNrJ3MgY29uZmlndXJhdGlvbiwgYnV0IHdpbGwgaGF2ZSBhIGxvd2VyIHZhbHVlIGZvciBgcmVtYWluaW5nYCB0aGFuIHRoZWRvcmlnaW5hbCBgdG90YWxfcmV0cmllc2AuAC0BVGhpcyBjYWxsICoqY2Fubm90KiogYmUgdXNlZCB0byBzZXQgYSByZXRyeSBjb25maWd1cmF0aW9uIGZvciBhIG5hbWVkIHRhc2suPHNldF9yZXRyeV9uYW1lZAwBCGlkCAEgVGFza05hbWUAARxyZXRyaWVzDAEIdTgAARhwZXJpb2Q4AURCbG9ja051bWJlckZvcjxUPgAHOF0BU2V0IGEgcmV0cnkgY29uZmlndXJhdGlvbiBmb3IgYSBuYW1lZCB0YXNrIHNvIHRoYXQsIGluIGNhc2UgaXRzIHNjaGVkdWxlZCBydW4gZmFpbHMsIGl0XQF3aWxsIGJlIHJldHJpZWQgYWZ0ZXIgYHBlcmlvZGAgYmxvY2tzLCBmb3IgYSB0b3RhbCBhbW91bnQgb2YgYHJldHJpZXNgIHJldHJpZXMgb3IgdW50aWwwaXQgc3VjY2VlZHMuAFUBVGFza3Mgd2hpY2ggbmVlZCB0byBiZSBzY2hlZHVsZWQgZm9yIGEgcmV0cnkgYXJlIHN0aWxsIHN1YmplY3QgdG8gd2VpZ2h0IG1ldGVyaW5nIGFuZFEBYWdlbmRhIHNwYWNlLCBzYW1lIGFzIGEgcmVndWxhciB0YXNrLiBJZiBhIHBlcmlvZGljIHRhc2sgZmFpbHMsIGl0IHdpbGwgYmUgc2NoZWR1bGVkkG5vcm1hbGx5IHdoaWxlIHRoZSB0YXNrIGlzIHJldHJ5aW5nLgBRAVRhc2tzIHNjaGVkdWxlZCBhcyBhIHJlc3VsdCBvZiBhIHJldHJ5IGZvciBhIHBlcmlvZGljIHRhc2sgYXJlIHVubmFtZWQsIG5vbi1wZXJpb2RpYz0BY2xvbmVzIG9mIHRoZSBvcmlnaW5hbCB0YXNrLiBUaGVpciByZXRyeSBjb25maWd1cmF0aW9uIHdpbGwgYmUgZGVyaXZlZCBmcm9tIHRoZU0Bb3JpZ2luYWwgdGFzaydzIGNvbmZpZ3VyYXRpb24sIGJ1dCB3aWxsIGhhdmUgYSBsb3dlciB2YWx1ZSBmb3IgYHJlbWFpbmluZ2AgdGhhbiB0aGVkb3JpZ2luYWwgYHRvdGFsX3JldHJpZXNgLgANAVRoaXMgaXMgdGhlIG9ubHkgd2F5IHRvIHNldCBhIHJldHJ5IGNvbmZpZ3VyYXRpb24gZm9yIGEgbmFtZWQgdGFzay4wY2FuY2VsX3JldHJ5BAEQdGFza9ABeFRhc2tBZGRyZXNzPEJsb2NrTnVtYmVyRm9yPFQ+PgAIBKhSZW1vdmVzIHRoZSByZXRyeSBjb25maWd1cmF0aW9uIG9mIGEgdGFzay5IY2FuY2VsX3JldHJ5X25hbWVkBAEIaWQIASBUYXNrTmFtZQAJBLxDYW5jZWwgdGhlIHJldHJ5IGNvbmZpZ3VyYXRpb24gb2YgYSBuYW1lZCB0YXNrLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy7MBBhPcHRpb24EBFQB0AEIEE5vbmUAAAAQU29tZQQA0AAAAQAA0AAABAg4OADUDERwYWxsZXRfcGFyYW1ldGVycxhwYWxsZXQQQ2FsbAQEVAABBDRzZXRfcGFyYW1ldGVyBAEka2V5X3ZhbHVl2AFQVDo6UnVudGltZVBhcmFtZXRlcnMAABB0U2V0IHRoZSB2YWx1ZSBvZiBhIHBhcmFtZXRlci4AVQFUaGUgZGlzcGF0Y2ggb3JpZ2luIG9mIHRoaXMgY2FsbCBtdXN0IGJlIGBBZG1pbk9yaWdpbmAgZm9yIHRoZSBnaXZlbiBga2V5YC4gVmFsdWVzIGJliGRlbGV0ZWQgYnkgc2V0dGluZyB0aGVtIHRvIGBOb25lYC4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMu2AhcYXNzZXRfaHViX3Bhc2VvX3J1bnRpbWVEUnVudGltZVBhcmFtZXRlcnMAAQw8U3Rha2luZ0VsZWN0aW9uBADcAbBkeW5hbWljX3BhcmFtczo6c3Rha2luZ19lbGVjdGlvbjo6UGFyYW1ldGVycwAAACRTY2hlZHVsZXIEAAUBAZRkeW5hbWljX3BhcmFtczo6c2NoZWR1bGVyOjpQYXJhbWV0ZXJzAAEAME1lc3NhZ2VRdWV1ZQQAGQEBpGR5bmFtaWNfcGFyYW1zOjptZXNzYWdlX3F1ZXVlOjpQYXJhbWV0ZXJzAAIAANwQXGFzc2V0X2h1Yl9wYXNlb19ydW50aW1lOGR5bmFtaWNfcGFyYW1zQHN0YWtpbmdfZWxlY3Rpb24oUGFyYW1ldGVycwABHCxTaWduZWRQaGFzZQgA4AEsU2lnbmVkUGhhc2UAAOQBTE9wdGlvbjxCbG9ja051bWJlcj4AAABQTWF4U2lnbmVkU3VibWlzc2lvbnMIAOgBUE1heFNpZ25lZFN1Ym1pc3Npb25zAADkASxPcHRpb248dTMyPgABADRVbnNpZ25lZFBoYXNlCADsATRVbnNpZ25lZFBoYXNlAADkAUxPcHRpb248QmxvY2tOdW1iZXI+AAIAKE1pbmVyUGFnZXMIAPABKE1pbmVyUGFnZXMAAOQBLE9wdGlvbjx1MzI+AAMARE1heEVsZWN0aW5nVm90ZXJzCAD0AURNYXhFbGVjdGluZ1ZvdGVycwAA5AEsT3B0aW9uPHUzMj4ABABYVGFyZ2V0U25hcHNob3RQZXJCbG9jawgA+AFYVGFyZ2V0U25hcHNob3RQZXJCbG9jawAA5AEsT3B0aW9uPHUzMj4ABQA4TWF4RXJhRHVyYXRpb24IAPwBOE1heEVyYUR1cmF0aW9uAAABAQEsT3B0aW9uPHU2ND4ABgAA4BBcYXNzZXRfaHViX3Bhc2VvX3J1bnRpbWU4ZHluYW1pY19wYXJhbXNAc3Rha2luZ19lbGVjdGlvbixTaWduZWRQaGFzZQAAAADkBBhPcHRpb24EBFQBOAEIEE5vbmUAAAAQU29tZQQAOAAAAQAA6BBcYXNzZXRfaHViX3Bhc2VvX3J1bnRpbWU4ZHluYW1pY19wYXJhbXNAc3Rha2luZ19lbGVjdGlvblBNYXhTaWduZWRTdWJtaXNzaW9ucwAAAADsEFxhc3NldF9odWJfcGFzZW9fcnVudGltZThkeW5hbWljX3BhcmFtc0BzdGFraW5nX2VsZWN0aW9uNFVuc2lnbmVkUGhhc2UAAAAA8BBcYXNzZXRfaHViX3Bhc2VvX3J1bnRpbWU4ZHluYW1pY19wYXJhbXNAc3Rha2luZ19lbGVjdGlvbihNaW5lclBhZ2VzAAAAAPQQXGFzc2V0X2h1Yl9wYXNlb19ydW50aW1lOGR5bmFtaWNfcGFyYW1zQHN0YWtpbmdfZWxlY3Rpb25ETWF4RWxlY3RpbmdWb3RlcnMAAAAA+BBcYXNzZXRfaHViX3Bhc2VvX3J1bnRpbWU4ZHluYW1pY19wYXJhbXNAc3Rha2luZ19lbGVjdGlvblhUYXJnZXRTbmFwc2hvdFBlckJsb2NrAAAAAPwQXGFzc2V0X2h1Yl9wYXNlb19ydW50aW1lOGR5bmFtaWNfcGFyYW1zQHN0YWtpbmdfZWxlY3Rpb244TWF4RXJhRHVyYXRpb24AAAAAAQEEGE9wdGlvbgQEVAEoAQgQTm9uZQAAABBTb21lBAAoAAABAAAFARBcYXNzZXRfaHViX3Bhc2VvX3J1bnRpbWU4ZHluYW1pY19wYXJhbXMkc2NoZWR1bGVyKFBhcmFtZXRlcnMAAQhQTWF4U2NoZWR1bGVkUGVyQmxvY2sIAAkBAVBNYXhTY2hlZHVsZWRQZXJCbG9jawAA5AEsT3B0aW9uPHUzMj4AAAA0TWF4aW11bVdlaWdodAgADQEBNE1heGltdW1XZWlnaHQAABEBAThPcHRpb248V2VpZ2h0PgABAAAJARBcYXNzZXRfaHViX3Bhc2VvX3J1bnRpbWU4ZHluYW1pY19wYXJhbXMkc2NoZWR1bGVyUE1heFNjaGVkdWxlZFBlckJsb2NrAAAAAA0BEFxhc3NldF9odWJfcGFzZW9fcnVudGltZThkeW5hbWljX3BhcmFtcyRzY2hlZHVsZXI0TWF4aW11bVdlaWdodAAAAAARAQQYT3B0aW9uBARUARUBAQgQTm9uZQAAABBTb21lBAAVAQAAAQAAFQEMKHNwX3dlaWdodHMkd2VpZ2h0X3YyGFdlaWdodAAACAEgcmVmX3RpbWW4AQx1NjQAAShwcm9vZl9zaXpluAEMdTY0AAAZARBcYXNzZXRfaHViX3Bhc2VvX3J1bnRpbWU4ZHluYW1pY19wYXJhbXM0bWVzc2FnZV9xdWV1ZShQYXJhbWV0ZXJzAAEIPE1heE9uSW5pdFdlaWdodAgAHQEBPE1heE9uSW5pdFdlaWdodAAAIQEBWE9wdGlvbjxPcHRpb248V2VpZ2h0Pj4AAAA8TWF4T25JZGxlV2VpZ2h0CAAlAQE8TWF4T25JZGxlV2VpZ2h0AAAhAQFYT3B0aW9uPE9wdGlvbjxXZWlnaHQ+PgABAAAdARBcYXNzZXRfaHViX3Bhc2VvX3J1bnRpbWU4ZHluYW1pY19wYXJhbXM0bWVzc2FnZV9xdWV1ZTxNYXhPbkluaXRXZWlnaHQAAAAAIQEEGE9wdGlvbgQEVAERAQEIEE5vbmUAAAAQU29tZQQAEQEAAAEAACUBEFxhc3NldF9odWJfcGFzZW9fcnVudGltZThkeW5hbWljX3BhcmFtczRtZXNzYWdlX3F1ZXVlPE1heE9uSWRsZVdlaWdodAAAAAApAQxEcGFsbGV0X21pZ3JhdGlvbnMYcGFsbGV0EENhbGwEBFQAARBAZm9yY2Vfc2V0X2N1cnNvcgQBGGN1cnNvci0BAUxPcHRpb248Q3Vyc29yT2Y8VD4+AAAUXQFBbGxvd3Mgcm9vdCB0byBzZXQgYSBjdXJzb3IgdG8gZm9yY2VmdWxseSBzdGFydCwgc3RvcCBvciBmb3J3YXJkIHRoZSBtaWdyYXRpb24gcHJvY2Vzcy4ASQFTaG91bGQgbm9ybWFsbHkgbm90IGJlIG5lZWRlZCBhbmQgaXMgb25seSBpbiBwbGFjZSBhcyBlbWVyZ2VuY3kgbWVhc3VyZS4gTm90ZSB0aGF0BQFyZXN0YXJ0aW5nIHRoZSBtaWdyYXRpb24gcHJvY2VzcyBpbiB0aGlzIG1hbm5lciB3aWxsIG5vdCBjYWxsIHRoZS0BW2BNaWdyYXRpb25TdGF0dXNIYW5kbGVyOjpzdGFydGVkYF0gaG9vayBvciBlbWl0IGFuIGBVcGdyYWRlU3RhcnRlZGAgZXZlbnQuXGZvcmNlX3NldF9hY3RpdmVfY3Vyc29yDAEUaW5kZXg4AQx1MzIAATBpbm5lcl9jdXJzb3I9AQFYT3B0aW9uPFJhd0N1cnNvck9mPFQ+PgABKHN0YXJ0ZWRfYXTkAWRPcHRpb248QmxvY2tOdW1iZXJGb3I8VD4+AAEYWQFBbGxvd3Mgcm9vdCB0byBzZXQgYW4gYWN0aXZlIGN1cnNvciB0byBmb3JjZWZ1bGx5IHN0YXJ0L2ZvcndhcmQgdGhlIG1pZ3JhdGlvbiBwcm9jZXNzLgBFAVRoaXMgaXMgYW4gZWRnZS1jYXNlIHZlcnNpb24gb2YgW2BTZWxmOjpmb3JjZV9zZXRfY3Vyc29yYF0gdGhhdCBhbGxvd3MgdG8gc2V0IHRoZWEBYHN0YXJ0ZWRfYXRgIHZhbHVlIHRvIHRoZSBuZXh0IGJsb2NrIG51bWJlci4gT3RoZXJ3aXNlIHRoaXMgd291bGQgbm90IGJlIHBvc3NpYmxlLCBzaW5jZUUBYGZvcmNlX3NldF9jdXJzb3JgIHRha2VzIGFuIGFic29sdXRlIGJsb2NrIG51bWJlci4gU2V0dGluZyBgc3RhcnRlZF9hdGAgdG8gYE5vbmVgAQFpbmRpY2F0ZXMgdGhhdCB0aGUgY3VycmVudCBibG9jayBudW1iZXIgcGx1cyBvbmUgc2hvdWxkIGJlIHVzZWQuSGZvcmNlX29uYm9hcmRfbWJtcwACEKBGb3JjZXMgdGhlIG9uYm9hcmRpbmcgb2YgdGhlIG1pZ3JhdGlvbnMuAF0BVGhpcyBwcm9jZXNzIGhhcHBlbnMgYXV0b21hdGljYWxseSBvbiBhIHJ1bnRpbWUgdXBncmFkZS4gSXQgaXMgaW4gcGxhY2UgYXMgYW4gZW1lcmdlbmN5/G1lYXN1cmVtZW50LiBUaGUgY3Vyc29yIG5lZWRzIHRvIGJlIGBOb25lYCBmb3IgdGhpcyB0byBzdWNjZWVkLjhjbGVhcl9oaXN0b3JpYwQBIHNlbGVjdG9yQQEBoEhpc3RvcmljQ2xlYW51cFNlbGVjdG9yPElkZW50aWZpZXJPZjxUPj4AAxRoQ2xlYXJzIHRoZSBgSGlzdG9yaWNgIHNldC4ADQFgbWFwX2N1cnNvcmAgbXVzdCBiZSBzZXQgdG8gdGhlIGxhc3QgdmFsdWUgdGhhdCB3YXMgcmV0dXJuZWQgYnkgdGhlXQFgSGlzdG9yaWNDbGVhcmVkYCBldmVudC4gVGhlIGZpcnN0IHRpbWUgYE5vbmVgIGNhbiBiZSB1c2VkLiBgbGltaXRgIG11c3QgYmUgY2hvc2VuIGluIGGod2F5IHRoYXQgd2lsbCByZXN1bHQgaW4gYSBzZW5zaWJsZSB3ZWlnaHQuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLi0BBBhPcHRpb24EBFQBMQEBCBBOb25lAAAAEFNvbWUEADEBAAABAAAxAQhEcGFsbGV0X21pZ3JhdGlvbnM8TWlncmF0aW9uQ3Vyc29yCBhDdXJzb3IBNQEsQmxvY2tOdW1iZXIBOAEIGEFjdGl2ZQQAOQEBhEFjdGl2ZUN1cnNvcjxDdXJzb3IsIEJsb2NrTnVtYmVyPgAAABRTdHVjawABAAA1AQxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQwEUwAABAAYARhWZWM8VD4AADkBCERwYWxsZXRfbWlncmF0aW9uczBBY3RpdmVDdXJzb3IIGEN1cnNvcgE1ASxCbG9ja051bWJlcgE4AAwBFGluZGV4OAEMdTMyAAEwaW5uZXJfY3Vyc29yPQEBOE9wdGlvbjxDdXJzb3I+AAEoc3RhcnRlZF9hdDgBLEJsb2NrTnVtYmVyAAA9AQQYT3B0aW9uBARUATUBAQgQTm9uZQAAABBTb21lBAA1AQAAAQAAQQEIRHBhbGxldF9taWdyYXRpb25zXEhpc3RvcmljQ2xlYW51cFNlbGVjdG9yBAhJZAFFAQEIIFNwZWNpZmljBABJAQEcVmVjPElkPgAAACBXaWxkY2FyZAgBFGxpbWl05AEsT3B0aW9uPHUzMj4AATxwcmV2aW91c19jdXJzb3JNAQE8T3B0aW9uPFZlYzx1OD4+AAEAAEUBDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBDARTAAAEABgBGFZlYzxUPgAASQEAAAJFAQBNAQQYT3B0aW9uBARUARgBCBBOb25lAAAAEFNvbWUEABgAAAEAAFEBDDxwYWxsZXRfYmFsYW5jZXMYcGFsbGV0EENhbGwIBFQABEkAASRQdHJhbnNmZXJfYWxsb3dfZGVhdGgIARBkZXN0AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARR2YWx1ZVUBAShUOjpCYWxhbmNlAAAc1FRyYW5zZmVyIHNvbWUgbGlxdWlkIGZyZWUgYmFsYW5jZSB0byBhbm90aGVyIGFjY291bnQuADUBYHRyYW5zZmVyX2FsbG93X2RlYXRoYCB3aWxsIHNldCB0aGUgYEZyZWVCYWxhbmNlYCBvZiB0aGUgc2VuZGVyIGFuZCByZWNlaXZlci4RAUlmIHRoZSBzZW5kZXIncyBhY2NvdW50IGlzIGJlbG93IHRoZSBleGlzdGVudGlhbCBkZXBvc2l0IGFzIGEgcmVzdWx0sG9mIHRoZSB0cmFuc2ZlciwgdGhlIGFjY291bnQgd2lsbCBiZSByZWFwZWQuABUBVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgYFNpZ25lZGAgYnkgdGhlIHRyYW5zYWN0b3IuOGZvcmNlX3RyYW5zZmVyDAEYc291cmNlAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARBkZXN0AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARR2YWx1ZVUBAShUOjpCYWxhbmNlAAIIYQFFeGFjdGx5IGFzIGB0cmFuc2Zlcl9hbGxvd19kZWF0aGAsIGV4Y2VwdCB0aGUgb3JpZ2luIG11c3QgYmUgcm9vdCBhbmQgdGhlIHNvdXJjZSBhY2NvdW50RG1heSBiZSBzcGVjaWZpZWQuTHRyYW5zZmVyX2tlZXBfYWxpdmUIARBkZXN0AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARR2YWx1ZVUBAShUOjpCYWxhbmNlAAMYWQFTYW1lIGFzIHRoZSBbYHRyYW5zZmVyX2FsbG93X2RlYXRoYF0gY2FsbCwgYnV0IHdpdGggYSBjaGVjayB0aGF0IHRoZSB0cmFuc2ZlciB3aWxsIG5vdGBraWxsIHRoZSBvcmlnaW4gYWNjb3VudC4A6Dk5JSBvZiB0aGUgdGltZSB5b3Ugd2FudCBbYHRyYW5zZmVyX2FsbG93X2RlYXRoYF0gaW5zdGVhZC4A8FtgdHJhbnNmZXJfYWxsb3dfZGVhdGhgXTogc3RydWN0LlBhbGxldC5odG1sI21ldGhvZC50cmFuc2ZlcjB0cmFuc2Zlcl9hbGwIARBkZXN0AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AAShrZWVwX2FsaXZlXQEBEGJvb2wABDwFAVRyYW5zZmVyIHRoZSBlbnRpcmUgdHJhbnNmZXJhYmxlIGJhbGFuY2UgZnJvbSB0aGUgY2FsbGVyIGFjY291bnQuAFkBTk9URTogVGhpcyBmdW5jdGlvbiBvbmx5IGF0dGVtcHRzIHRvIHRyYW5zZmVyIF90cmFuc2ZlcmFibGVfIGJhbGFuY2VzLiBUaGlzIG1lYW5zIHRoYXRhAWFueSBsb2NrZWQsIHJlc2VydmVkLCBvciBleGlzdGVudGlhbCBkZXBvc2l0cyAod2hlbiBga2VlcF9hbGl2ZWAgaXMgYHRydWVgKSwgd2lsbCBub3QgYmVdAXRyYW5zZmVycmVkIGJ5IHRoaXMgZnVuY3Rpb24uIFRvIGVuc3VyZSB0aGF0IHRoaXMgZnVuY3Rpb24gcmVzdWx0cyBpbiBhIGtpbGxlZCBhY2NvdW50LEUBeW91IG1pZ2h0IG5lZWQgdG8gcHJlcGFyZSB0aGUgYWNjb3VudCBieSByZW1vdmluZyBhbnkgcmVmZXJlbmNlIGNvdW50ZXJzLCBzdG9yYWdlQGRlcG9zaXRzLCBldGMuLi4AwFRoZSBkaXNwYXRjaCBvcmlnaW4gb2YgdGhpcyBjYWxsIG11c3QgYmUgU2lnbmVkLgCgLSBgZGVzdGA6IFRoZSByZWNpcGllbnQgb2YgdGhlIHRyYW5zZmVyLlkBLSBga2VlcF9hbGl2ZWA6IEEgYm9vbGVhbiB0byBkZXRlcm1pbmUgaWYgdGhlIGB0cmFuc2Zlcl9hbGxgIG9wZXJhdGlvbiBzaG91bGQgc2VuZCBhbGxNASAgb2YgdGhlIGZ1bmRzIHRoZSBhY2NvdW50IGhhcywgY2F1c2luZyB0aGUgc2VuZGVyIGFjY291bnQgdG8gYmUga2lsbGVkIChmYWxzZSksIG9yWQEgIHRyYW5zZmVyIGV2ZXJ5dGhpbmcgZXhjZXB0IGF0IGxlYXN0IHRoZSBleGlzdGVudGlhbCBkZXBvc2l0LCB3aGljaCB3aWxsIGd1YXJhbnRlZSB0b5wgIGtlZXAgdGhlIHNlbmRlciBhY2NvdW50IGFsaXZlICh0cnVlKS48Zm9yY2VfdW5yZXNlcnZlCAEMd2hvAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARhhbW91bnRZAQEoVDo6QmFsYW5jZQAFDLBVbnJlc2VydmUgc29tZSBiYWxhbmNlIGZyb20gYSB1c2VyIGJ5IGZvcmNlLgBsQ2FuIG9ubHkgYmUgY2FsbGVkIGJ5IFJPT1QuQHVwZ3JhZGVfYWNjb3VudHMEAQx3aG9hAQFEVmVjPFQ6OkFjY291bnRJZD4ABiBwVXBncmFkZSBhIHNwZWNpZmllZCBhY2NvdW50LgB0LSBgb3JpZ2luYDogTXVzdCBiZSBgU2lnbmVkYC6QLSBgd2hvYDogVGhlIGFjY291bnQgdG8gYmUgdXBncmFkZWQuAFUBVGhpcyB3aWxsIHdhaXZlIHRoZSB0cmFuc2FjdGlvbiBmZWUgaWYgYXQgbGVhc3QgYWxsIGJ1dCAxMCUgb2YgdGhlIGFjY291bnRzIG5lZWRlZCB0b0EBYmUgdXBncmFkZWQuIChXZSBsZXQgc29tZSBub3QgaGF2ZSB0byBiZSB1cGdyYWRlZCBqdXN0IGluIG9yZGVyIHRvIGFsbG93IGZvciB0aGVYcG9zc2liaWxpdHkgb2YgY2h1cm4pLkRmb3JjZV9zZXRfYmFsYW5jZQgBDHdobwABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEgbmV3X2ZyZWVVAQEoVDo6QmFsYW5jZQAIDKxTZXQgdGhlIHJlZ3VsYXIgYmFsYW5jZSBvZiBhIGdpdmVuIGFjY291bnQuALBUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgaXMgYHJvb3RgLmxmb3JjZV9hZGp1c3RfdG90YWxfaXNzdWFuY2UIASRkaXJlY3Rpb25lAQFMQWRqdXN0bWVudERpcmVjdGlvbgABFGRlbHRhVQEBKFQ6OkJhbGFuY2UACRS4QWRqdXN0IHRoZSB0b3RhbCBpc3N1YW5jZSBpbiBhIHNhdHVyYXRpbmcgd2F5LgD8Q2FuIG9ubHkgYmUgY2FsbGVkIGJ5IHJvb3QgYW5kIGFsd2F5cyBuZWVkcyBhIHBvc2l0aXZlIGBkZWx0YWAuACQjIEV4YW1wbGUQYnVybggBFHZhbHVlVQEBKFQ6OkJhbGFuY2UAAShrZWVwX2FsaXZlXQEBEGJvb2wAChz8QnVybiB0aGUgc3BlY2lmaWVkIGxpcXVpZCBmcmVlIGJhbGFuY2UgZnJvbSB0aGUgb3JpZ2luIGFjY291bnQuACUBSWYgdGhlIG9yaWdpbidzIGFjY291bnQgZW5kcyB1cCBiZWxvdyB0aGUgZXhpc3RlbnRpYWwgZGVwb3NpdCBhcyBhIHJlc3VsdAkBb2YgdGhlIGJ1cm4gYW5kIGBrZWVwX2FsaXZlYCBpcyBmYWxzZSwgdGhlIGFjY291bnQgd2lsbCBiZSByZWFwZWQuAFEBVW5saWtlIHNlbmRpbmcgZnVuZHMgdG8gYSBfYnVybl8gYWRkcmVzcywgd2hpY2ggbWVyZWx5IG1ha2VzIHRoZSBmdW5kcyBpbmFjY2Vzc2libGUsIQF0aGlzIGBidXJuYCBvcGVyYXRpb24gd2lsbCByZWR1Y2UgdG90YWwgaXNzdWFuY2UgYnkgdGhlIGFtb3VudCBfYnVybmVkXy4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuVQEAAAZZAQBZAQAABQcAXQEAAAUAAGEBAAACBABlAQw8cGFsbGV0X2JhbGFuY2VzFHR5cGVzTEFkanVzdG1lbnREaXJlY3Rpb24AAQggSW5jcmVhc2UAAAAgRGVjcmVhc2UAAQAAaQEMOHBhbGxldF92ZXN0aW5nGHBhbGxldBBDYWxsBARUAAEYEHZlc3QAACS4VW5sb2NrIGFueSB2ZXN0ZWQgZnVuZHMgb2YgdGhlIHNlbmRlciBhY2NvdW50LgBdAVRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfIGFuZCB0aGUgc2VuZGVyIG11c3QgaGF2ZSBmdW5kcyBzdGlsbGRsb2NrZWQgdW5kZXIgdGhpcyBwYWxsZXQuANBFbWl0cyBlaXRoZXIgYFZlc3RpbmdDb21wbGV0ZWRgIG9yIGBWZXN0aW5nVXBkYXRlZGAuADQjIyBDb21wbGV4aXR5JC0gYE8oMSlgLih2ZXN0X290aGVyBAEYdGFyZ2V0AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AASy4VW5sb2NrIGFueSB2ZXN0ZWQgZnVuZHMgb2YgYSBgdGFyZ2V0YCBhY2NvdW50LgDMVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uAFEBLSBgdGFyZ2V0YDogVGhlIGFjY291bnQgd2hvc2UgdmVzdGVkIGZ1bmRzIHNob3VsZCBiZSB1bmxvY2tlZC4gTXVzdCBoYXZlIGZ1bmRzIHN0aWxsZGxvY2tlZCB1bmRlciB0aGlzIHBhbGxldC4A0EVtaXRzIGVpdGhlciBgVmVzdGluZ0NvbXBsZXRlZGAgb3IgYFZlc3RpbmdVcGRhdGVkYC4ANCMjIENvbXBsZXhpdHkkLSBgTygxKWAuPHZlc3RlZF90cmFuc2ZlcggBGHRhcmdldAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEgc2NoZWR1bGVtAQGwVmVzdGluZ0luZm88QmFsYW5jZU9mPFQ+LCBCbG9ja051bWJlckZvcjxUPj4AAjRkQ3JlYXRlIGEgdmVzdGVkIHRyYW5zZmVyLgDMVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uAMwtIGB0YXJnZXRgOiBUaGUgYWNjb3VudCByZWNlaXZpbmcgdGhlIHZlc3RlZCBmdW5kcy7wLSBgc2NoZWR1bGVgOiBUaGUgdmVzdGluZyBzY2hlZHVsZSBhdHRhY2hlZCB0byB0aGUgdHJhbnNmZXIuAFxFbWl0cyBgVmVzdGluZ0NyZWF0ZWRgLgD8Tk9URTogVGhpcyB3aWxsIHVubG9jayBhbGwgc2NoZWR1bGVzIHRocm91Z2ggdGhlIGN1cnJlbnQgYmxvY2suADQjIyBDb21wbGV4aXR5JC0gYE8oMSlgLlRmb3JjZV92ZXN0ZWRfdHJhbnNmZXIMARhzb3VyY2UAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGHRhcmdldAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEgc2NoZWR1bGVtAQGwVmVzdGluZ0luZm88QmFsYW5jZU9mPFQ+LCBCbG9ja051bWJlckZvcjxUPj4AAzhgRm9yY2UgYSB2ZXN0ZWQgdHJhbnNmZXIuAMRUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfUm9vdF8uAOgtIGBzb3VyY2VgOiBUaGUgYWNjb3VudCB3aG9zZSBmdW5kcyBzaG91bGQgYmUgdHJhbnNmZXJyZWQuEQEtIGB0YXJnZXRgOiBUaGUgYWNjb3VudCB0aGF0IHNob3VsZCBiZSB0cmFuc2ZlcnJlZCB0aGUgdmVzdGVkIGZ1bmRzLvAtIGBzY2hlZHVsZWA6IFRoZSB2ZXN0aW5nIHNjaGVkdWxlIGF0dGFjaGVkIHRvIHRoZSB0cmFuc2Zlci4AXEVtaXRzIGBWZXN0aW5nQ3JlYXRlZGAuAPxOT1RFOiBUaGlzIHdpbGwgdW5sb2NrIGFsbCBzY2hlZHVsZXMgdGhyb3VnaCB0aGUgY3VycmVudCBibG9jay4ANCMjIENvbXBsZXhpdHkkLSBgTygxKWAuPG1lcmdlX3NjaGVkdWxlcwgBPHNjaGVkdWxlMV9pbmRleDgBDHUzMgABPHNjaGVkdWxlMl9pbmRleDgBDHUzMgAEVF0BTWVyZ2UgdHdvIHZlc3Rpbmcgc2NoZWR1bGVzIHRvZ2V0aGVyLCBjcmVhdGluZyBhIG5ldyB2ZXN0aW5nIHNjaGVkdWxlIHRoYXQgdW5sb2NrcyBvdmVyVQF0aGUgaGlnaGVzdCBwb3NzaWJsZSBzdGFydCBhbmQgZW5kIGJsb2Nrcy4gSWYgYm90aCBzY2hlZHVsZXMgaGF2ZSBhbHJlYWR5IHN0YXJ0ZWQgdGhlWQFjdXJyZW50IGJsb2NrIHdpbGwgYmUgdXNlZCBhcyB0aGUgc2NoZWR1bGUgc3RhcnQ7IHdpdGggdGhlIGNhdmVhdCB0aGF0IGlmIG9uZSBzY2hlZHVsZV0BaXMgZmluaXNoZWQgYnkgdGhlIGN1cnJlbnQgYmxvY2ssIHRoZSBvdGhlciB3aWxsIGJlIHRyZWF0ZWQgYXMgdGhlIG5ldyBtZXJnZWQgc2NoZWR1bGUsLHVubW9kaWZpZWQuAPhOT1RFOiBJZiBgc2NoZWR1bGUxX2luZGV4ID09IHNjaGVkdWxlMl9pbmRleGAgdGhpcyBpcyBhIG5vLW9wLkEBTk9URTogVGhpcyB3aWxsIHVubG9jayBhbGwgc2NoZWR1bGVzIHRocm91Z2ggdGhlIGN1cnJlbnQgYmxvY2sgcHJpb3IgdG8gbWVyZ2luZy5hAU5PVEU6IElmIGJvdGggc2NoZWR1bGVzIGhhdmUgZW5kZWQgYnkgdGhlIGN1cnJlbnQgYmxvY2ssIG5vIG5ldyBzY2hlZHVsZSB3aWxsIGJlIGNyZWF0ZWRkYW5kIGJvdGggd2lsbCBiZSByZW1vdmVkLgBsTWVyZ2VkIHNjaGVkdWxlIGF0dHJpYnV0ZXM6NQEtIGBzdGFydGluZ19ibG9ja2A6IGBNQVgoc2NoZWR1bGUxLnN0YXJ0aW5nX2Jsb2NrLCBzY2hlZHVsZWQyLnN0YXJ0aW5nX2Jsb2NrLEggIGN1cnJlbnRfYmxvY2spYC4hAS0gYGVuZGluZ19ibG9ja2A6IGBNQVgoc2NoZWR1bGUxLmVuZGluZ19ibG9jaywgc2NoZWR1bGUyLmVuZGluZ19ibG9jaylgLlkBLSBgbG9ja2VkYDogYHNjaGVkdWxlMS5sb2NrZWRfYXQoY3VycmVudF9ibG9jaykgKyBzY2hlZHVsZTIubG9ja2VkX2F0KGN1cnJlbnRfYmxvY2spYC4AzFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLgDoLSBgc2NoZWR1bGUxX2luZGV4YDogaW5kZXggb2YgdGhlIGZpcnN0IHNjaGVkdWxlIHRvIG1lcmdlLuwtIGBzY2hlZHVsZTJfaW5kZXhgOiBpbmRleCBvZiB0aGUgc2Vjb25kIHNjaGVkdWxlIHRvIG1lcmdlLnRmb3JjZV9yZW1vdmVfdmVzdGluZ19zY2hlZHVsZQgBGHRhcmdldAABjDxUOjpMb29rdXAgYXMgU3RhdGljTG9va3VwPjo6U291cmNlAAE4c2NoZWR1bGVfaW5kZXg4AQx1MzIABRh8Rm9yY2UgcmVtb3ZlIGEgdmVzdGluZyBzY2hlZHVsZQDEVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1Jvb3RfLgDILSBgdGFyZ2V0YDogQW4gYWNjb3VudCB0aGF0IGhhcyBhIHZlc3Rpbmcgc2NoZWR1bGUVAS0gYHNjaGVkdWxlX2luZGV4YDogVGhlIHZlc3Rpbmcgc2NoZWR1bGUgaW5kZXggdGhhdCBzaG91bGQgYmUgcmVtb3ZlZAQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy5tAQw4cGFsbGV0X3Zlc3RpbmcwdmVzdGluZ19pbmZvLFZlc3RpbmdJbmZvCBxCYWxhbmNlAVkBLEJsb2NrTnVtYmVyATgADAEYbG9ja2VkWQEBHEJhbGFuY2UAASRwZXJfYmxvY2tZAQEcQmFsYW5jZQABOHN0YXJ0aW5nX2Jsb2NrOAEsQmxvY2tOdW1iZXIAAHEBEFxwb2xrYWRvdF9ydW50aW1lX2NvbW1vbhhjbGFpbXMYcGFsbGV0EENhbGwEBFQAARQUY2xhaW0IARBkZXN0BAEwVDo6QWNjb3VudElkAAFIZXRoZXJldW1fc2lnbmF0dXJldQEBOEVjZHNhU2lnbmF0dXJlAABgiE1ha2UgYSBjbGFpbSB0byBjb2xsZWN0IHlvdXIgRE9Ucy4AxFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9Ob25lXy4AUFVuc2lnbmVkIFZhbGlkYXRpb246BQFBIGNhbGwgdG8gY2xhaW0gaXMgZGVlbWVkIHZhbGlkIGlmIHRoZSBzaWduYXR1cmUgcHJvdmlkZWQgbWF0Y2hlc3x0aGUgZXhwZWN0ZWQgc2lnbmVkIG1lc3NhZ2Ugb2Y6AGg+IEV0aGVyZXVtIFNpZ25lZCBNZXNzYWdlOpQ+IChjb25maWd1cmVkIHByZWZpeCBzdHJpbmcpKGFkZHJlc3MpAKRhbmQgYGFkZHJlc3NgIG1hdGNoZXMgdGhlIGBkZXN0YCBhY2NvdW50LgAsUGFyYW1ldGVyczrYLSBgZGVzdGA6IFRoZSBkZXN0aW5hdGlvbiBhY2NvdW50IHRvIHBheW91dCB0aGUgY2xhaW0uXQEtIGBldGhlcmV1bV9zaWduYXR1cmVgOiBUaGUgc2lnbmF0dXJlIG9mIGFuIGV0aGVyZXVtIHNpZ25lZCBtZXNzYWdlIG1hdGNoaW5nIHRoZSBmb3JtYXRIICBkZXNjcmliZWQgYWJvdmUuACA8d2VpZ2h0PvxUaGUgd2VpZ2h0IG9mIHRoaXMgY2FsbCBpcyBpbnZhcmlhbnQgb3ZlciB0aGUgaW5wdXQgcGFyYW1ldGVycy7gV2VpZ2h0IGluY2x1ZGVzIGxvZ2ljIHRvIHZhbGlkYXRlIHVuc2lnbmVkIGBjbGFpbWAgY2FsbC4AWFRvdGFsIENvbXBsZXhpdHk6IE8oMSkkPC93ZWlnaHQ+KG1pbnRfY2xhaW0QAQx3aG99AQE8RXRoZXJldW1BZGRyZXNzAAEUdmFsdWVZAQEwQmFsYW5jZU9mPFQ+AAFAdmVzdGluZ19zY2hlZHVsZYEBAdxPcHRpb248KEJhbGFuY2VPZjxUPiwgQmFsYW5jZU9mPFQ+LCBCbG9ja051bWJlckZvcjxUPik+AAEkc3RhdGVtZW50iQEBVE9wdGlvbjxTdGF0ZW1lbnRLaW5kPgABPIRNaW50IGEgbmV3IGNsYWltIHRvIGNvbGxlY3QgRE9Ucy4AxFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9Sb290Xy4ALFBhcmFtZXRlcnM68C0gYHdob2A6IFRoZSBFdGhlcmV1bSBhZGRyZXNzIGFsbG93ZWQgdG8gY29sbGVjdCB0aGlzIGNsYWltLswtIGB2YWx1ZWA6IFRoZSBudW1iZXIgb2YgRE9UcyB0aGF0IHdpbGwgYmUgY2xhaW1lZC4JAS0gYHZlc3Rpbmdfc2NoZWR1bGVgOiBBbiBvcHRpb25hbCB2ZXN0aW5nIHNjaGVkdWxlIGZvciB0aGVzZSBET1RzLgAgPHdlaWdodD78VGhlIHdlaWdodCBvZiB0aGlzIGNhbGwgaXMgaW52YXJpYW50IG92ZXIgdGhlIGlucHV0IHBhcmFtZXRlcnMuHQFXZSBhc3N1bWUgd29yc3QgY2FzZSB0aGF0IGJvdGggdmVzdGluZyBhbmQgc3RhdGVtZW50IGlzIGJlaW5nIGluc2VydGVkLgBYVG90YWwgQ29tcGxleGl0eTogTygxKSQ8L3dlaWdodD4wY2xhaW1fYXR0ZXN0DAEQZGVzdAQBMFQ6OkFjY291bnRJZAABSGV0aGVyZXVtX3NpZ25hdHVyZXUBAThFY2RzYVNpZ25hdHVyZQABJHN0YXRlbWVudBgBHFZlYzx1OD4AAmzkTWFrZSBhIGNsYWltIHRvIGNvbGxlY3QgeW91ciBET1RzIGJ5IHNpZ25pbmcgYSBzdGF0ZW1lbnQuAMRUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfTm9uZV8uAFBVbnNpZ25lZCBWYWxpZGF0aW9uOikBQSBjYWxsIHRvIGBjbGFpbV9hdHRlc3RgIGlzIGRlZW1lZCB2YWxpZCBpZiB0aGUgc2lnbmF0dXJlIHByb3ZpZGVkIG1hdGNoZXN8dGhlIGV4cGVjdGVkIHNpZ25lZCBtZXNzYWdlIG9mOgBoPiBFdGhlcmV1bSBTaWduZWQgTWVzc2FnZTrAPiAoY29uZmlndXJlZCBwcmVmaXggc3RyaW5nKShhZGRyZXNzKShzdGF0ZW1lbnQpAEkBYW5kIGBhZGRyZXNzYCBtYXRjaGVzIHRoZSBgZGVzdGAgYWNjb3VudDsgdGhlIGBzdGF0ZW1lbnRgIG11c3QgbWF0Y2ggdGhhdCB3aGljaCBpc8BleHBlY3RlZCBhY2NvcmRpbmcgdG8geW91ciBwdXJjaGFzZSBhcnJhbmdlbWVudC4ALFBhcmFtZXRlcnM62C0gYGRlc3RgOiBUaGUgZGVzdGluYXRpb24gYWNjb3VudCB0byBwYXlvdXQgdGhlIGNsYWltLl0BLSBgZXRoZXJldW1fc2lnbmF0dXJlYDogVGhlIHNpZ25hdHVyZSBvZiBhbiBldGhlcmV1bSBzaWduZWQgbWVzc2FnZSBtYXRjaGluZyB0aGUgZm9ybWF0SCAgZGVzY3JpYmVkIGFib3ZlLjkBLSBgc3RhdGVtZW50YDogVGhlIGlkZW50aXR5IG9mIHRoZSBzdGF0ZW1lbnQgd2hpY2ggaXMgYmVpbmcgYXR0ZXN0ZWQgdG8gaW4gdGhlMCAgc2lnbmF0dXJlLgAgPHdlaWdodD78VGhlIHdlaWdodCBvZiB0aGlzIGNhbGwgaXMgaW52YXJpYW50IG92ZXIgdGhlIGlucHV0IHBhcmFtZXRlcnMu/FdlaWdodCBpbmNsdWRlcyBsb2dpYyB0byB2YWxpZGF0ZSB1bnNpZ25lZCBgY2xhaW1fYXR0ZXN0YCBjYWxsLgBYVG90YWwgQ29tcGxleGl0eTogTygxKSQ8L3dlaWdodD4YYXR0ZXN0BAEkc3RhdGVtZW50GAEcVmVjPHU4PgADTPRBdHRlc3QgdG8gYSBzdGF0ZW1lbnQsIG5lZWRlZCB0byBmaW5hbGl6ZSB0aGUgY2xhaW1zIHByb2Nlc3MuABkBV0FSTklORzogSW5zZWN1cmUgdW5sZXNzIHlvdXIgY2hhaW4gaW5jbHVkZXMgYFByZXZhbGlkYXRlQXR0ZXN0c2AgYXMgYVxgVHJhbnNhY3Rpb25FeHRlbnNpb25gLgBQVW5zaWduZWQgVmFsaWRhdGlvbjopAUEgY2FsbCB0byBhdHRlc3QgaXMgZGVlbWVkIHZhbGlkIGlmIHRoZSBzZW5kZXIgaGFzIGEgYFByZWNsYWltYCByZWdpc3RlcmVk9GFuZCBwcm92aWRlcyBhIGBzdGF0ZW1lbnRgIHdoaWNoIGlzIGV4cGVjdGVkIGZvciB0aGUgYWNjb3VudC4ALFBhcmFtZXRlcnM6OQEtIGBzdGF0ZW1lbnRgOiBUaGUgaWRlbnRpdHkgb2YgdGhlIHN0YXRlbWVudCB3aGljaCBpcyBiZWluZyBhdHRlc3RlZCB0byBpbiB0aGUwICBzaWduYXR1cmUuACA8d2VpZ2h0PvxUaGUgd2VpZ2h0IG9mIHRoaXMgY2FsbCBpcyBpbnZhcmlhbnQgb3ZlciB0aGUgaW5wdXQgcGFyYW1ldGVycy7wV2VpZ2h0IGluY2x1ZGVzIGxvZ2ljIHRvIGRvIHByZS12YWxpZGF0aW9uIG9uIGBhdHRlc3RgIGNhbGwuAFhUb3RhbCBDb21wbGV4aXR5OiBPKDEpJDwvd2VpZ2h0Pihtb3ZlX2NsYWltDAEMb2xkfQEBPEV0aGVyZXVtQWRkcmVzcwABDG5ld30BATxFdGhlcmV1bUFkZHJlc3MAAThtYXliZV9wcmVjbGFpbZEBAVBPcHRpb248VDo6QWNjb3VudElkPgAEAAQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy51AQxccG9sa2Fkb3RfcnVudGltZV9jb21tb24YY2xhaW1zOEVjZHNhU2lnbmF0dXJlAAAEAHkBASBbdTg7IDY1XQAAeQEAAANBAAAADAB9AQxccG9sa2Fkb3RfcnVudGltZV9jb21tb24YY2xhaW1zPEV0aGVyZXVtQWRkcmVzcwAABAAcASBbdTg7IDIwXQAAgQEEGE9wdGlvbgQEVAGFAQEIEE5vbmUAAAAQU29tZQQAhQEAAAEAAIUBAAAEDFkBWQE4AIkBBBhPcHRpb24EBFQBjQEBCBBOb25lAAAAEFNvbWUEAI0BAAABAACNAQxccG9sa2Fkb3RfcnVudGltZV9jb21tb24YY2xhaW1zNFN0YXRlbWVudEtpbmQAAQgcUmVndWxhcgAAABBTYWZ0AAEAAJEBBBhPcHRpb24EBFQBBAEIEE5vbmUAAAAQU29tZQQABAAAAQAAlQEMKHBhbGxldF9kYXAYcGFsbGV0EENhbGwEBFQAAQRUc2V0X2J1ZGdldF9hbGxvY2F0aW9uBAE8bmV3X2FsbG9jYXRpb25zmQEBTEJ1ZGdldEFsbG9jYXRpb25NYXAAABB4U2V0IHRoZSBidWRnZXQgYWxsb2NhdGlvbiBtYXAuADkBRWFjaCBrZXkgbXVzdCBtYXRjaCBhIHJlZ2lzdGVyZWQgYEJ1ZGdldFJlY2lwaWVudGAuIFRoZSBzdW0gb2YgYWxsIHBlcmNlbnRhZ2VzJQFtdXN0IGJlIGV4YWN0bHkgMTAwJS4gUmVjaXBpZW50cyBub3QgaW5jbHVkZWQgaW4gdGhlIG1hcCByZWNlaXZlIG5vdGhpbmcuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLpkBDExib3VuZGVkX2NvbGxlY3Rpb25zRGJvdW5kZWRfYnRyZWVfbWFwPEJvdW5kZWRCVHJlZU1hcAwESwGdAQRWAaEBBFMAAAQApQEBOEJUcmVlTWFwPEssIFY+AACdAQxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQwEUwAABAAYARhWZWM8VD4AAKEBDDRzcF9hcml0aG1ldGljKHBlcl90aGluZ3McUGVyYmlsbAAABAA4AQx1MzIAAKUBBCBCVHJlZU1hcAgESwGdAQRWAaEBAAQAqQEAAACpAQAAAq0BAK0BAAAECJ0BoQEAsQEMZHBhbGxldF9jb2xsYXRvcl9zZWxlY3Rpb24YcGFsbGV0EENhbGwEBFQAASREc2V0X2ludnVsbmVyYWJsZXMEAQxuZXdhAQFEVmVjPFQ6OkFjY291bnRJZD4AADQxAVNldCB0aGUgbGlzdCBvZiBpbnZ1bG5lcmFibGUgKGZpeGVkKSBjb2xsYXRvcnMuIFRoZXNlIGNvbGxhdG9ycyBtdXN0IGRvIHNvbWXQcHJlcGFyYXRpb24sIG5hbWVseSB0byBoYXZlIHJlZ2lzdGVyZWQgc2Vzc2lvbiBrZXlzLgBZAVRoZSBjYWxsIHdpbGwgcmVtb3ZlIGFueSBhY2NvdW50cyB0aGF0IGhhdmUgbm90IHJlZ2lzdGVyZWQga2V5cyBmcm9tIHRoZSBzZXQuIFRoYXQgaXMsXQFpdCBpcyBub24tYXRvbWljOyB0aGUgY2FsbGVyIGFjY2VwdHMgYWxsIGBBY2NvdW50SWRgcyBwYXNzZWQgaW4gYG5ld2AgX2luZGl2aWR1YWxseV8gYXMxAWFjY2VwdGFibGUgSW52dWxuZXJhYmxlcywgYW5kIGlzIG5vdCBwcm9wb3NpbmcgYSBfc2V0XyBvZiBuZXcgSW52dWxuZXJhYmxlcy4AWQFUaGlzIGNhbGwgZG9lcyBub3QgbWFpbnRhaW4gbXV0dWFsIGV4Y2x1c2l2aXR5IG9mIGBJbnZ1bG5lcmFibGVzYCBhbmQgYENhbmRpZGF0ZXNgLiBJdGEBaXMgcmVjb21tZW5kZWQgdG8gdXNlIGEgYmF0Y2ggb2YgYGFkZF9pbnZ1bG5lcmFibGVgIGFuZCBgcmVtb3ZlX2ludnVsbmVyYWJsZWAgaW5zdGVhZC4gQVEBYGJhdGNoX2FsbGAgY2FuIGFsc28gYmUgdXNlZCB0byBlbmZvcmNlIGF0b21pY2l0eS4gSWYgYW55IGNhbmRpZGF0ZXMgYXJlIGluY2x1ZGVkIGluTQFgbmV3YCwgdGhleSBzaG91bGQgYmUgcmVtb3ZlZCB3aXRoIGByZW1vdmVfaW52dWxuZXJhYmxlX2NhbmRpZGF0ZWAgYWZ0ZXIgZXhlY3V0aW9uLgCUTXVzdCBiZSBjYWxsZWQgYnkgdGhlIGBVcGRhdGVPcmlnaW5gLlhzZXRfZGVzaXJlZF9jYW5kaWRhdGVzBAEMbWF4OAEMdTMyAAEUVQFTZXQgdGhlIGlkZWFsIG51bWJlciBvZiBub24taW52dWxuZXJhYmxlIGNvbGxhdG9ycy4gSWYgbG93ZXJpbmcgdGhpcyBudW1iZXIsIHRoZW4gdGhlYQFudW1iZXIgb2YgcnVubmluZyBjb2xsYXRvcnMgY291bGQgYmUgaGlnaGVyIHRoYW4gdGhpcyBmaWd1cmUuIEFzaWRlIGZyb20gdGhhdCBlZGdlIGNhc2UsNQF0aGVyZSBzaG91bGQgYmUgbm8gb3RoZXIgd2F5IHRvIGhhdmUgbW9yZSBjYW5kaWRhdGVzIHRoYW4gdGhlIGRlc2lyZWQgbnVtYmVyLgDQVGhlIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgdGhlIGBVcGRhdGVPcmlnaW5gLkhzZXRfY2FuZGlkYWN5X2JvbmQEARBib25kWQEBMEJhbGFuY2VPZjxUPgACHHhTZXQgdGhlIGNhbmRpZGFjeSBib25kIGFtb3VudC4AUQFJZiB0aGUgY2FuZGlkYWN5IGJvbmQgaXMgaW5jcmVhc2VkIGJ5IHRoaXMgY2FsbCwgYWxsIGN1cnJlbnQgY2FuZGlkYXRlcyB3aGljaCBoYXZlIGFNAWRlcG9zaXQgbG93ZXIgdGhhbiB0aGUgbmV3IGJvbmQgd2lsbCBiZSBraWNrZWQgZnJvbSB0aGUgbGlzdCBhbmQgZ2V0IHRoZWlyIGRlcG9zaXRzFGJhY2suANBUaGUgb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSB0aGUgYFVwZGF0ZU9yaWdpbmAuVHJlZ2lzdGVyX2FzX2NhbmRpZGF0ZQADEEEBUmVnaXN0ZXIgdGhpcyBhY2NvdW50IGFzIGEgY29sbGF0b3IgY2FuZGlkYXRlLiBUaGUgYWNjb3VudCBtdXN0IChhKSBhbHJlYWR5IGhhdmUdAXJlZ2lzdGVyZWQgc2Vzc2lvbiBrZXlzIGFuZCAoYikgYmUgYWJsZSB0byByZXNlcnZlIHRoZSBgQ2FuZGlkYWN5Qm9uZGAuANxUaGlzIGNhbGwgaXMgbm90IGF2YWlsYWJsZSB0byBgSW52dWxuZXJhYmxlYCBjb2xsYXRvcnMuMGxlYXZlX2ludGVudAAEFFUBRGVyZWdpc3RlciBgb3JpZ2luYCBhcyBhIGNvbGxhdG9yIGNhbmRpZGF0ZS4gTm90ZSB0aGF0IHRoZSBjb2xsYXRvciBjYW4gb25seSBsZWF2ZSBvbg0Bc2Vzc2lvbiBjaGFuZ2UuIFRoZSBgQ2FuZGlkYWN5Qm9uZGAgd2lsbCBiZSB1bnJlc2VydmVkIGltbWVkaWF0ZWx5LgAZAVRoaXMgY2FsbCB3aWxsIGZhaWwgaWYgdGhlIHRvdGFsIG51bWJlciBvZiBjYW5kaWRhdGVzIHdvdWxkIGRyb3AgYmVsb3dcYE1pbkVsaWdpYmxlQ29sbGF0b3JzYC5AYWRkX2ludnVsbmVyYWJsZQQBDHdobwQBMFQ6OkFjY291bnRJZAAFEEUBQWRkIGEgbmV3IGFjY291bnQgYHdob2AgdG8gdGhlIGxpc3Qgb2YgYEludnVsbmVyYWJsZXNgIGNvbGxhdG9ycy4gYHdob2AgbXVzdCBoYXZlHQFyZWdpc3RlcmVkIHNlc3Npb24ga2V5cy4gSWYgYHdob2AgaXMgYSBjYW5kaWRhdGUsIHRoZXkgd2lsbCBiZSByZW1vdmVkLgDQVGhlIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgdGhlIGBVcGRhdGVPcmlnaW5gLkxyZW1vdmVfaW52dWxuZXJhYmxlBAEMd2hvBAEwVDo6QWNjb3VudElkAAYQYQFSZW1vdmUgYW4gYWNjb3VudCBgd2hvYCBmcm9tIHRoZSBsaXN0IG9mIGBJbnZ1bG5lcmFibGVzYCBjb2xsYXRvcnMuIGBJbnZ1bG5lcmFibGVzYCBtdXN0KGJlIHNvcnRlZC4A0FRoZSBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIHRoZSBgVXBkYXRlT3JpZ2luYC4sdXBkYXRlX2JvbmQEASxuZXdfZGVwb3NpdFkBATBCYWxhbmNlT2Y8VD4ABxxdAVVwZGF0ZSB0aGUgY2FuZGlkYWN5IGJvbmQgb2YgY29sbGF0b3IgY2FuZGlkYXRlIGBvcmlnaW5gIHRvIGEgbmV3IGFtb3VudCBgbmV3X2RlcG9zaXRgLgBBAVNldHRpbmcgYSBgbmV3X2RlcG9zaXRgIHRoYXQgaXMgbG93ZXIgdGhhbiB0aGUgY3VycmVudCBkZXBvc2l0IHdoaWxlIGBvcmlnaW5gIGlz4G9jY3VweWluZyBhIHRvcC1gRGVzaXJlZENhbmRpZGF0ZXNgIHNsb3QgaXMgbm90IGFsbG93ZWQuAFkBVGhpcyBjYWxsIHdpbGwgZmFpbCBpZiBgb3JpZ2luYCBpcyBub3QgYSBjb2xsYXRvciBjYW5kaWRhdGUsIHRoZSB1cGRhdGVkIGJvbmQgaXMgbG93ZXIZAXRoYW4gdGhlIG1pbmltdW0gY2FuZGlkYWN5IGJvbmQsIGFuZC9vciB0aGUgYW1vdW50IGNhbm5vdCBiZSByZXNlcnZlZC5MdGFrZV9jYW5kaWRhdGVfc2xvdAgBHGRlcG9zaXRZAQEwQmFsYW5jZU9mPFQ+AAEYdGFyZ2V0BAEwVDo6QWNjb3VudElkAAgcTQFUaGUgY2FsbGVyIGBvcmlnaW5gIHJlcGxhY2VzIGEgY2FuZGlkYXRlIGB0YXJnZXRgIGluIHRoZSBjb2xsYXRvciBjYW5kaWRhdGUgbGlzdCBieVUBcmVzZXJ2aW5nIGBkZXBvc2l0YC4gVGhlIGFtb3VudCBgZGVwb3NpdGAgcmVzZXJ2ZWQgYnkgdGhlIGNhbGxlciBtdXN0IGJlIGdyZWF0ZXIgdGhhbuB0aGUgZXhpc3RpbmcgYm9uZCBvZiB0aGUgdGFyZ2V0IGl0IGlzIHRyeWluZyB0byByZXBsYWNlLgBZAVRoaXMgY2FsbCB3aWxsIGZhaWwgaWYgdGhlIGNhbGxlciBpcyBhbHJlYWR5IGEgY29sbGF0b3IgY2FuZGlkYXRlIG9yIGludnVsbmVyYWJsZSwgdGhlVQFjYWxsZXIgZG9lcyBub3QgaGF2ZSByZWdpc3RlcmVkIHNlc3Npb24ga2V5cywgdGhlIHRhcmdldCBpcyBub3QgYSBjb2xsYXRvciBjYW5kaWRhdGUsvGFuZC9vciB0aGUgYGRlcG9zaXRgIGFtb3VudCBjYW5ub3QgYmUgcmVzZXJ2ZWQuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLrUBDDhwYWxsZXRfc2Vzc2lvbhhwYWxsZXQQQ2FsbAQEVAABCCBzZXRfa2V5cwgBEGtleXO5AQEcVDo6S2V5cwABFHByb29mGAEcVmVjPHU4PgAALORTZXRzIHRoZSBzZXNzaW9uIGtleShzKSBvZiB0aGUgZnVuY3Rpb24gY2FsbGVyIHRvIGBrZXlzYC4AHQFBbGxvd3MgYW4gYWNjb3VudCB0byBzZXQgaXRzIHNlc3Npb24ga2V5IHByaW9yIHRvIGJlY29taW5nIGEgdmFsaWRhdG9yLsBUaGlzIGRvZXNuJ3QgdGFrZSBlZmZlY3QgdW50aWwgdGhlIG5leHQgc2Vzc2lvbi4AAQEtIGBvcmlnaW5gOiBUaGUgZGlzcGF0Y2ggb3JpZ2luIG9mIHRoaXMgZnVuY3Rpb24gbXVzdCBiZSBzaWduZWQuVQEtIGBrZXlzYDogVGhlIG5ldyBzZXNzaW9uIGtleXMgdG8gc2V0LiBUaGVzZSBhcmUgdGhlIHB1YmxpYyBrZXlzIG9mIGFsbCBzZXNzaW9ucyBrZXlzXCAgc2V0dXAgaW4gdGhlIHJ1bnRpbWUuQQEtIGBwcm9vZmA6IFRoZSBwcm9vZiB0aGF0IGBvcmlnaW5gIGhhcyBhY2Nlc3MgdG8gdGhlIHByaXZhdGUga2V5cyBvZiBga2V5c2AuIFNlZU0BICBbYGltcGxfb3BhcXVlX2tleXNgXShzcF9ydW50aW1lOjppbXBsX29wYXF1ZV9rZXlzKSBmb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGU8ICBwcm9vZiBmb3JtYXQuKHB1cmdlX2tleXMAASDIUmVtb3ZlcyBhbnkgc2Vzc2lvbiBrZXkocykgb2YgdGhlIGZ1bmN0aW9uIGNhbGxlci4AwFRoaXMgZG9lc24ndCB0YWtlIGVmZmVjdCB1bnRpbCB0aGUgbmV4dCBzZXNzaW9uLgBVAVRoZSBkaXNwYXRjaCBvcmlnaW4gb2YgdGhpcyBmdW5jdGlvbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIGFjY291bnQgbXVzdCBiZSBlaXRoZXIgYmVdAWNvbnZlcnRpYmxlIHRvIGEgdmFsaWRhdG9yIElEIHVzaW5nIHRoZSBjaGFpbidzIHR5cGljYWwgYWRkcmVzc2luZyBzeXN0ZW0gKHRoaXMgdXN1YWxseVEBbWVhbnMgYmVpbmcgYSBjb250cm9sbGVyIGFjY291bnQpIG9yIGRpcmVjdGx5IGNvbnZlcnRpYmxlIGludG8gYSB2YWxpZGF0b3IgSUQgKHdoaWNolHVzdWFsbHkgbWVhbnMgYmVpbmcgYSBzdGFzaCBhY2NvdW50KS4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuuQEIXGFzc2V0X2h1Yl9wYXNlb19ydW50aW1lLFNlc3Npb25LZXlzAAAEARBhdXJhvQEBxDxBdXJhIGFzICRjcmF0ZTo6Qm91bmRUb1J1bnRpbWVBcHBQdWJsaWM+OjpQdWJsaWMAAL0BEERzcF9jb25zZW5zdXNfYXVyYRxzcjI1NTE5LGFwcF9zcjI1NTE5GFB1YmxpYwAABAAIATxzcjI1NTE5OjpQdWJsaWMAAMEBDGRjdW11bHVzX3BhbGxldF94Y21wX3F1ZXVlGHBhbGxldBBDYWxsBARUAAEUVHN1c3BlbmRfeGNtX2V4ZWN1dGlvbgABDEkBU3VzcGVuZHMgYWxsIFhDTSBleGVjdXRpb25zIGZvciB0aGUgWENNUCBxdWV1ZSwgcmVnYXJkbGVzcyBvZiB0aGUgc2VuZGVyJ3Mgb3JpZ2luLgCkLSBgb3JpZ2luYDogTXVzdCBwYXNzIGBDb250cm9sbGVyT3JpZ2luYC5QcmVzdW1lX3hjbV9leGVjdXRpb24AAhS4UmVzdW1lcyBhbGwgWENNIGV4ZWN1dGlvbnMgZm9yIHRoZSBYQ01QIHF1ZXVlLgA9AU5vdGUgdGhhdCB0aGlzIGZ1bmN0aW9uIGRvZXNuJ3QgY2hhbmdlIHRoZSBzdGF0dXMgb2YgdGhlIGluL291dCBib3VuZCBjaGFubmVscy4ApC0gYG9yaWdpbmA6IE11c3QgcGFzcyBgQ29udHJvbGxlck9yaWdpbmAuYHVwZGF0ZV9zdXNwZW5kX3RocmVzaG9sZAQBDG5ldzgBDHUzMgADFEkBT3ZlcndyaXRlcyB0aGUgbnVtYmVyIG9mIHBhZ2VzIHdoaWNoIG11c3QgYmUgaW4gdGhlIHF1ZXVlIGZvciB0aGUgb3RoZXIgc2lkZSB0byBiZXh0b2xkIHRvIHN1c3BlbmQgdGhlaXIgc2VuZGluZy4AdC0gYG9yaWdpbmA6IE11c3QgcGFzcyBgUm9vdGAu6C0gYG5ld2A6IERlc2lyZWQgdmFsdWUgZm9yIGBRdWV1ZUNvbmZpZ0RhdGEuc3VzcGVuZF92YWx1ZWBUdXBkYXRlX2Ryb3BfdGhyZXNob2xkBAEMbmV3OAEMdTMyAAQURQFPdmVyd3JpdGVzIHRoZSBudW1iZXIgb2YgcGFnZXMgd2hpY2ggbXVzdCBiZSBpbiB0aGUgcXVldWUgYWZ0ZXIgd2hpY2ggd2UgZHJvcCBhbnmIZnVydGhlciBtZXNzYWdlcyBmcm9tIHRoZSBjaGFubmVsLgB0LSBgb3JpZ2luYDogTXVzdCBwYXNzIGBSb290YC7sLSBgbmV3YDogRGVzaXJlZCB2YWx1ZSBmb3IgYFF1ZXVlQ29uZmlnRGF0YS5kcm9wX3RocmVzaG9sZGBcdXBkYXRlX3Jlc3VtZV90aHJlc2hvbGQEAQxuZXc4AQx1MzIABRRNAU92ZXJ3cml0ZXMgdGhlIG51bWJlciBvZiBwYWdlcyB3aGljaCB0aGUgcXVldWUgbXVzdCBiZSByZWR1Y2VkIHRvIGJlZm9yZSBpdCBzaWduYWxzAQF0aGF0IG1lc3NhZ2Ugc2VuZGluZyBtYXkgcmVjb21tZW5jZSBhZnRlciBpdCBoYXMgYmVlbiBzdXNwZW5kZWQuAHQtIGBvcmlnaW5gOiBNdXN0IHBhc3MgYFJvb3RgLvQtIGBuZXdgOiBEZXNpcmVkIHZhbHVlIGZvciBgUXVldWVDb25maWdEYXRhLnJlc3VtZV90aHJlc2hvbGRgBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLsUBDChwYWxsZXRfeGNtGHBhbGxldBBDYWxsBARUAAFEEHNlbmQIARBkZXN0yQEBWEJveDxWZXJzaW9uZWRMb2NhdGlvbj4AARxtZXNzYWdlUQIBVEJveDxWZXJzaW9uZWRYY208KCk+PgAAADx0ZWxlcG9ydF9hc3NldHMQARBkZXN0yQEBWEJveDxWZXJzaW9uZWRMb2NhdGlvbj4AASxiZW5lZmljaWFyeckBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAEYYXNzZXRzjQMBUEJveDxWZXJzaW9uZWRBc3NldHM+AAE4ZmVlX2Fzc2V0X2l0ZW04AQx1MzIAAUgRAVRlbGVwb3J0IHNvbWUgYXNzZXRzIGZyb20gdGhlIGxvY2FsIGNoYWluIHRvIHNvbWUgZGVzdGluYXRpb24gY2hhaW4uAB0BKipUaGlzIGZ1bmN0aW9uIGlzIGRlcHJlY2F0ZWQ6IFVzZSBgbGltaXRlZF90ZWxlcG9ydF9hc3NldHNgIGluc3RlYWQuKioAUQFGZWUgcGF5bWVudCBvbiB0aGUgZGVzdGluYXRpb24gc2lkZSBpcyBtYWRlIGZyb20gdGhlIGFzc2V0IGluIHRoZSBgYXNzZXRzYCB2ZWN0b3Igb2ZhAWluZGV4IGBmZWVfYXNzZXRfaXRlbWAuIFRoZSB3ZWlnaHQgbGltaXQgZm9yIGZlZXMgaXMgbm90IHByb3ZpZGVkIGFuZCB0aHVzIGlzIHVubGltaXRlZCy0d2l0aCBhbGwgZmVlcyB0YWtlbiBhcyBuZWVkZWQgZnJvbSB0aGUgYXNzZXQuACkBLSBgb3JpZ2luYDogTXVzdCBiZSBjYXBhYmxlIG9mIHdpdGhkcmF3aW5nIHRoZSBgYXNzZXRzYCBhbmQgZXhlY3V0aW5nIFhDTS4lAS0gYGRlc3RgOiBEZXN0aW5hdGlvbiBjb250ZXh0IGZvciB0aGUgYXNzZXRzLiBXaWxsIHR5cGljYWxseSBiZSBgW1BhcmVudCxhASAgUGFyYWNoYWluKC4uKV1gIHRvIHNlbmQgZnJvbSBwYXJhY2hhaW4gdG8gcGFyYWNoYWluLCBvciBgW1BhcmFjaGFpbiguLildYCB0byBzZW5kIGZyb21UICByZWxheSB0byBwYXJhY2hhaW4uVQEtIGBiZW5lZmljaWFyeWA6IEEgYmVuZWZpY2lhcnkgbG9jYXRpb24gZm9yIHRoZSBhc3NldHMgaW4gdGhlIGNvbnRleHQgb2YgYGRlc3RgLiBXaWxsmCAgZ2VuZXJhbGx5IGJlIGFuIGBBY2NvdW50SWQzMmAgdmFsdWUuWQEtIGBhc3NldHNgOiBUaGUgYXNzZXRzIHRvIGJlIHdpdGhkcmF3bi4gVGhpcyBzaG91bGQgaW5jbHVkZSB0aGUgYXNzZXRzIHVzZWQgdG8gcGF5IHRoZWggIGZlZSBvbiB0aGUgYGRlc3RgIGNoYWluLk0BLSBgZmVlX2Fzc2V0X2l0ZW1gOiBUaGUgaW5kZXggaW50byBgYXNzZXRzYCBvZiB0aGUgaXRlbSB3aGljaCBzaG91bGQgYmUgdXNlZCB0byBwYXkcICBmZWVzLlxyZXNlcnZlX3RyYW5zZmVyX2Fzc2V0cxABEGRlc3TJAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgABLGJlbmVmaWNpYXJ5yQEBWEJveDxWZXJzaW9uZWRMb2NhdGlvbj4AARhhc3NldHONAwFQQm94PFZlcnNpb25lZEFzc2V0cz4AAThmZWVfYXNzZXRfaXRlbTgBDHUzMgACeF0BVHJhbnNmZXIgc29tZSBhc3NldHMgZnJvbSB0aGUgbG9jYWwgY2hhaW4gdG8gdGhlIGRlc3RpbmF0aW9uIGNoYWluIHRocm91Z2ggdGhlaXIgbG9jYWwseGRlc3RpbmF0aW9uIG9yIHJlbW90ZSByZXNlcnZlLgA9AWBhc3NldHNgIG11c3QgaGF2ZSBzYW1lIHJlc2VydmUgbG9jYXRpb24gYW5kIG1heSBub3QgYmUgdGVsZXBvcnRhYmxlIHRvIGBkZXN0YC5NASAtIGBhc3NldHNgIGhhdmUgbG9jYWwgcmVzZXJ2ZTogdHJhbnNmZXIgYXNzZXRzIHRvIHNvdmVyZWlnbiBhY2NvdW50IG9mIGRlc3RpbmF0aW9uTQEgICBjaGFpbiBhbmQgZm9yd2FyZCBhIG5vdGlmaWNhdGlvbiBYQ00gdG8gYGRlc3RgIHRvIG1pbnQgYW5kIGRlcG9zaXQgcmVzZXJ2ZS1iYXNlZGwgICBhc3NldHMgdG8gYGJlbmVmaWNpYXJ5YC5VASAtIGBhc3NldHNgIGhhdmUgZGVzdGluYXRpb24gcmVzZXJ2ZTogYnVybiBsb2NhbCBhc3NldHMgYW5kIGZvcndhcmQgYSBub3RpZmljYXRpb24gdG9ZASAgIGBkZXN0YCBjaGFpbiB0byB3aXRoZHJhdyB0aGUgcmVzZXJ2ZSBhc3NldHMgZnJvbSB0aGlzIGNoYWluJ3Mgc292ZXJlaWduIGFjY291bnQgYW5khCAgIGRlcG9zaXQgdGhlbSB0byBgYmVuZWZpY2lhcnlgLmEBIC0gYGFzc2V0c2AgaGF2ZSByZW1vdGUgcmVzZXJ2ZTogYnVybiBsb2NhbCBhc3NldHMsIGZvcndhcmQgWENNIHRvIHJlc2VydmUgY2hhaW4gdG8gbW92ZWEBICAgcmVzZXJ2ZXMgZnJvbSB0aGlzIGNoYWluJ3MgU0EgdG8gYGRlc3RgIGNoYWluJ3MgU0EsIGFuZCBmb3J3YXJkIGFub3RoZXIgWENNIHRvIGBkZXN0YPQgICB0byBtaW50IGFuZCBkZXBvc2l0IHJlc2VydmUtYmFzZWQgYXNzZXRzIHRvIGBiZW5lZmljaWFyeWAuAD0BKipUaGlzIGZ1bmN0aW9uIGlzIGRlcHJlY2F0ZWQ6IFVzZSBgbGltaXRlZF9yZXNlcnZlX3RyYW5zZmVyX2Fzc2V0c2AgaW5zdGVhZC4qKgBRAUZlZSBwYXltZW50IG9uIHRoZSBkZXN0aW5hdGlvbiBzaWRlIGlzIG1hZGUgZnJvbSB0aGUgYXNzZXQgaW4gdGhlIGBhc3NldHNgIHZlY3RvciBvZmEBaW5kZXggYGZlZV9hc3NldF9pdGVtYC4gVGhlIHdlaWdodCBsaW1pdCBmb3IgZmVlcyBpcyBub3QgcHJvdmlkZWQgYW5kIHRodXMgaXMgdW5saW1pdGVkLLR3aXRoIGFsbCBmZWVzIHRha2VuIGFzIG5lZWRlZCBmcm9tIHRoZSBhc3NldC4AKQEtIGBvcmlnaW5gOiBNdXN0IGJlIGNhcGFibGUgb2Ygd2l0aGRyYXdpbmcgdGhlIGBhc3NldHNgIGFuZCBleGVjdXRpbmcgWENNLiUBLSBgZGVzdGA6IERlc3RpbmF0aW9uIGNvbnRleHQgZm9yIHRoZSBhc3NldHMuIFdpbGwgdHlwaWNhbGx5IGJlIGBbUGFyZW50LGEBICBQYXJhY2hhaW4oLi4pXWAgdG8gc2VuZCBmcm9tIHBhcmFjaGFpbiB0byBwYXJhY2hhaW4sIG9yIGBbUGFyYWNoYWluKC4uKV1gIHRvIHNlbmQgZnJvbVQgIHJlbGF5IHRvIHBhcmFjaGFpbi5VAS0gYGJlbmVmaWNpYXJ5YDogQSBiZW5lZmljaWFyeSBsb2NhdGlvbiBmb3IgdGhlIGFzc2V0cyBpbiB0aGUgY29udGV4dCBvZiBgZGVzdGAuIFdpbGyYICBnZW5lcmFsbHkgYmUgYW4gYEFjY291bnRJZDMyYCB2YWx1ZS5ZAS0gYGFzc2V0c2A6IFRoZSBhc3NldHMgdG8gYmUgd2l0aGRyYXduLiBUaGlzIHNob3VsZCBpbmNsdWRlIHRoZSBhc3NldHMgdXNlZCB0byBwYXkgdGhlyCAgZmVlIG9uIHRoZSBgZGVzdGAgKGFuZCBwb3NzaWJseSByZXNlcnZlKSBjaGFpbnMuTQEtIGBmZWVfYXNzZXRfaXRlbWA6IFRoZSBpbmRleCBpbnRvIGBhc3NldHNgIG9mIHRoZSBpdGVtIHdoaWNoIHNob3VsZCBiZSB1c2VkIHRvIHBheRwgIGZlZXMuHGV4ZWN1dGUIARxtZXNzYWdlkQMBtEJveDxWZXJzaW9uZWRYY208PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+PgABKG1heF93ZWlnaHQVAQEYV2VpZ2h0AAMg0EV4ZWN1dGUgYW4gWENNIG1lc3NhZ2UgZnJvbSBhIGxvY2FsLCBzaWduZWQsIG9yaWdpbi4ATQFBbiBldmVudCBpcyBkZXBvc2l0ZWQgaW5kaWNhdGluZyB3aGV0aGVyIGBtc2dgIGNvdWxkIGJlIGV4ZWN1dGVkIGNvbXBsZXRlbHkgb3Igb25seShwYXJ0aWFsbHkuAF0BTm8gbW9yZSB0aGFuIGBtYXhfd2VpZ2h0YCB3aWxsIGJlIHVzZWQgaW4gaXRzIGF0dGVtcHRlZCBleGVjdXRpb24uIElmIHRoaXMgaXMgbGVzcyB0aGFuQQF0aGUgbWF4aW11bSBhbW91bnQgb2Ygd2VpZ2h0IHRoYXQgdGhlIG1lc3NhZ2UgY291bGQgdGFrZSB0byBiZSBleGVjdXRlZCwgdGhlbiBub3xleGVjdXRpb24gYXR0ZW1wdCB3aWxsIGJlIG1hZGUuRGZvcmNlX3hjbV92ZXJzaW9uCAEgbG9jYXRpb24dAgE0Qm94PExvY2F0aW9uPgABHHZlcnNpb244AShYY21WZXJzaW9uAAQYSQFFeHRvbGwgdGhhdCBhIHBhcnRpY3VsYXIgZGVzdGluYXRpb24gY2FuIGJlIGNvbW11bmljYXRlZCB3aXRoIHRocm91Z2ggYSBwYXJ0aWN1bGFyPHZlcnNpb24gb2YgWENNLgDcLSBgb3JpZ2luYDogTXVzdCBiZSBhbiBvcmlnaW4gc3BlY2lmaWVkIGJ5IEFkbWluT3JpZ2luLtgtIGBsb2NhdGlvbmA6IFRoZSBkZXN0aW5hdGlvbiB0aGF0IGlzIGJlaW5nIGRlc2NyaWJlZC4RAS0gYHhjbV92ZXJzaW9uYDogVGhlIGxhdGVzdCB2ZXJzaW9uIG9mIFhDTSB0aGF0IGBsb2NhdGlvbmAgc3VwcG9ydHMuZGZvcmNlX2RlZmF1bHRfeGNtX3ZlcnNpb24EAURtYXliZV94Y21fdmVyc2lvbuQBSE9wdGlvbjxYY21WZXJzaW9uPgAFFFkBU2V0IGEgc2FmZSBYQ00gdmVyc2lvbiAodGhlIHZlcnNpb24gdGhhdCBYQ00gc2hvdWxkIGJlIGVuY29kZWQgd2l0aCBpZiB0aGUgbW9zdCByZWNlbnS0dmVyc2lvbiBhIGRlc3RpbmF0aW9uIGNhbiBhY2NlcHQgaXMgdW5rbm93bikuANwtIGBvcmlnaW5gOiBNdXN0IGJlIGFuIG9yaWdpbiBzcGVjaWZpZWQgYnkgQWRtaW5PcmlnaW4uOQEtIGBtYXliZV94Y21fdmVyc2lvbmA6IFRoZSBkZWZhdWx0IFhDTSBlbmNvZGluZyB2ZXJzaW9uLCBvciBgTm9uZWAgdG8gZGlzYWJsZS54Zm9yY2Vfc3Vic2NyaWJlX3ZlcnNpb25fbm90aWZ5BAEgbG9jYXRpb27JAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgAGEDkBQXNrIGEgbG9jYXRpb24gdG8gbm90aWZ5IHVzIHJlZ2FyZGluZyB0aGVpciBYQ00gdmVyc2lvbiBhbmQgYW55IGNoYW5nZXMgdG8gaXQuANwtIGBvcmlnaW5gOiBNdXN0IGJlIGFuIG9yaWdpbiBzcGVjaWZpZWQgYnkgQWRtaW5PcmlnaW4uWQEtIGBsb2NhdGlvbmA6IFRoZSBsb2NhdGlvbiB0byB3aGljaCB3ZSBzaG91bGQgc3Vic2NyaWJlIGZvciBYQ00gdmVyc2lvbiBub3RpZmljYXRpb25zLoBmb3JjZV91bnN1YnNjcmliZV92ZXJzaW9uX25vdGlmeQQBIGxvY2F0aW9uyQEBWEJveDxWZXJzaW9uZWRMb2NhdGlvbj4ABxhJAVJlcXVpcmUgdGhhdCBhIHBhcnRpY3VsYXIgZGVzdGluYXRpb24gc2hvdWxkIG5vIGxvbmdlciBub3RpZnkgdXMgcmVnYXJkaW5nIGFueSBYQ01AdmVyc2lvbiBjaGFuZ2VzLgDcLSBgb3JpZ2luYDogTXVzdCBiZSBhbiBvcmlnaW4gc3BlY2lmaWVkIGJ5IEFkbWluT3JpZ2luLj0BLSBgbG9jYXRpb25gOiBUaGUgbG9jYXRpb24gdG8gd2hpY2ggd2UgYXJlIGN1cnJlbnRseSBzdWJzY3JpYmVkIGZvciBYQ00gdmVyc2lvbqggIG5vdGlmaWNhdGlvbnMgd2hpY2ggd2Ugbm8gbG9uZ2VyIGRlc2lyZS58bGltaXRlZF9yZXNlcnZlX3RyYW5zZmVyX2Fzc2V0cxQBEGRlc3TJAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgABLGJlbmVmaWNpYXJ5yQEBWEJveDxWZXJzaW9uZWRMb2NhdGlvbj4AARhhc3NldHONAwFQQm94PFZlcnNpb25lZEFzc2V0cz4AAThmZWVfYXNzZXRfaXRlbTgBDHUzMgABMHdlaWdodF9saW1pdMUCASxXZWlnaHRMaW1pdAAIeF0BVHJhbnNmZXIgc29tZSBhc3NldHMgZnJvbSB0aGUgbG9jYWwgY2hhaW4gdG8gdGhlIGRlc3RpbmF0aW9uIGNoYWluIHRocm91Z2ggdGhlaXIgbG9jYWwseGRlc3RpbmF0aW9uIG9yIHJlbW90ZSByZXNlcnZlLgA9AWBhc3NldHNgIG11c3QgaGF2ZSBzYW1lIHJlc2VydmUgbG9jYXRpb24gYW5kIG1heSBub3QgYmUgdGVsZXBvcnRhYmxlIHRvIGBkZXN0YC5NASAtIGBhc3NldHNgIGhhdmUgbG9jYWwgcmVzZXJ2ZTogdHJhbnNmZXIgYXNzZXRzIHRvIHNvdmVyZWlnbiBhY2NvdW50IG9mIGRlc3RpbmF0aW9uTQEgICBjaGFpbiBhbmQgZm9yd2FyZCBhIG5vdGlmaWNhdGlvbiBYQ00gdG8gYGRlc3RgIHRvIG1pbnQgYW5kIGRlcG9zaXQgcmVzZXJ2ZS1iYXNlZGwgICBhc3NldHMgdG8gYGJlbmVmaWNpYXJ5YC5VASAtIGBhc3NldHNgIGhhdmUgZGVzdGluYXRpb24gcmVzZXJ2ZTogYnVybiBsb2NhbCBhc3NldHMgYW5kIGZvcndhcmQgYSBub3RpZmljYXRpb24gdG9ZASAgIGBkZXN0YCBjaGFpbiB0byB3aXRoZHJhdyB0aGUgcmVzZXJ2ZSBhc3NldHMgZnJvbSB0aGlzIGNoYWluJ3Mgc292ZXJlaWduIGFjY291bnQgYW5khCAgIGRlcG9zaXQgdGhlbSB0byBgYmVuZWZpY2lhcnlgLmEBIC0gYGFzc2V0c2AgaGF2ZSByZW1vdGUgcmVzZXJ2ZTogYnVybiBsb2NhbCBhc3NldHMsIGZvcndhcmQgWENNIHRvIHJlc2VydmUgY2hhaW4gdG8gbW92ZWEBICAgcmVzZXJ2ZXMgZnJvbSB0aGlzIGNoYWluJ3MgU0EgdG8gYGRlc3RgIGNoYWluJ3MgU0EsIGFuZCBmb3J3YXJkIGFub3RoZXIgWENNIHRvIGBkZXN0YPQgICB0byBtaW50IGFuZCBkZXBvc2l0IHJlc2VydmUtYmFzZWQgYXNzZXRzIHRvIGBiZW5lZmljaWFyeWAuAFEBRmVlIHBheW1lbnQgb24gdGhlIGRlc3RpbmF0aW9uIHNpZGUgaXMgbWFkZSBmcm9tIHRoZSBhc3NldCBpbiB0aGUgYGFzc2V0c2AgdmVjdG9yIG9mYQFpbmRleCBgZmVlX2Fzc2V0X2l0ZW1gLCB1cCB0byBlbm91Z2ggdG8gcGF5IGZvciBgd2VpZ2h0X2xpbWl0YCBvZiB3ZWlnaHQuIElmIG1vcmUgd2VpZ2h0WQFpcyBuZWVkZWQgdGhhbiBgd2VpZ2h0X2xpbWl0YCwgdGhlbiB0aGUgb3BlcmF0aW9uIHdpbGwgZmFpbCBhbmQgdGhlIHNlbnQgYXNzZXRzIG1heSBiZSBhdCByaXNrLgApAS0gYG9yaWdpbmA6IE11c3QgYmUgY2FwYWJsZSBvZiB3aXRoZHJhd2luZyB0aGUgYGFzc2V0c2AgYW5kIGV4ZWN1dGluZyBYQ00uJQEtIGBkZXN0YDogRGVzdGluYXRpb24gY29udGV4dCBmb3IgdGhlIGFzc2V0cy4gV2lsbCB0eXBpY2FsbHkgYmUgYFtQYXJlbnQsYQEgIFBhcmFjaGFpbiguLildYCB0byBzZW5kIGZyb20gcGFyYWNoYWluIHRvIHBhcmFjaGFpbiwgb3IgYFtQYXJhY2hhaW4oLi4pXWAgdG8gc2VuZCBmcm9tVCAgcmVsYXkgdG8gcGFyYWNoYWluLlUBLSBgYmVuZWZpY2lhcnlgOiBBIGJlbmVmaWNpYXJ5IGxvY2F0aW9uIGZvciB0aGUgYXNzZXRzIGluIHRoZSBjb250ZXh0IG9mIGBkZXN0YC4gV2lsbJggIGdlbmVyYWxseSBiZSBhbiBgQWNjb3VudElkMzJgIHZhbHVlLlkBLSBgYXNzZXRzYDogVGhlIGFzc2V0cyB0byBiZSB3aXRoZHJhd24uIFRoaXMgc2hvdWxkIGluY2x1ZGUgdGhlIGFzc2V0cyB1c2VkIHRvIHBheSB0aGXIICBmZWUgb24gdGhlIGBkZXN0YCAoYW5kIHBvc3NpYmx5IHJlc2VydmUpIGNoYWlucy5NAS0gYGZlZV9hc3NldF9pdGVtYDogVGhlIGluZGV4IGludG8gYGFzc2V0c2Agb2YgdGhlIGl0ZW0gd2hpY2ggc2hvdWxkIGJlIHVzZWQgdG8gcGF5HCAgZmVlcy5FAS0gYHdlaWdodF9saW1pdGA6IFRoZSByZW1vdGUtc2lkZSB3ZWlnaHQgbGltaXQsIGlmIGFueSwgZm9yIHRoZSBYQ00gZmVlIHB1cmNoYXNlLlxsaW1pdGVkX3RlbGVwb3J0X2Fzc2V0cxQBEGRlc3TJAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgABLGJlbmVmaWNpYXJ5yQEBWEJveDxWZXJzaW9uZWRMb2NhdGlvbj4AARhhc3NldHONAwFQQm94PFZlcnNpb25lZEFzc2V0cz4AAThmZWVfYXNzZXRfaXRlbTgBDHUzMgABMHdlaWdodF9saW1pdMUCASxXZWlnaHRMaW1pdAAJSBEBVGVsZXBvcnQgc29tZSBhc3NldHMgZnJvbSB0aGUgbG9jYWwgY2hhaW4gdG8gc29tZSBkZXN0aW5hdGlvbiBjaGFpbi4AUQFGZWUgcGF5bWVudCBvbiB0aGUgZGVzdGluYXRpb24gc2lkZSBpcyBtYWRlIGZyb20gdGhlIGFzc2V0IGluIHRoZSBgYXNzZXRzYCB2ZWN0b3Igb2ZhAWluZGV4IGBmZWVfYXNzZXRfaXRlbWAsIHVwIHRvIGVub3VnaCB0byBwYXkgZm9yIGB3ZWlnaHRfbGltaXRgIG9mIHdlaWdodC4gSWYgbW9yZSB3ZWlnaHRZAWlzIG5lZWRlZCB0aGFuIGB3ZWlnaHRfbGltaXRgLCB0aGVuIHRoZSBvcGVyYXRpb24gd2lsbCBmYWlsIGFuZCB0aGUgc2VudCBhc3NldHMgbWF5IGJlIGF0IHJpc2suACkBLSBgb3JpZ2luYDogTXVzdCBiZSBjYXBhYmxlIG9mIHdpdGhkcmF3aW5nIHRoZSBgYXNzZXRzYCBhbmQgZXhlY3V0aW5nIFhDTS4lAS0gYGRlc3RgOiBEZXN0aW5hdGlvbiBjb250ZXh0IGZvciB0aGUgYXNzZXRzLiBXaWxsIHR5cGljYWxseSBiZSBgW1BhcmVudCxhASAgUGFyYWNoYWluKC4uKV1gIHRvIHNlbmQgZnJvbSBwYXJhY2hhaW4gdG8gcGFyYWNoYWluLCBvciBgW1BhcmFjaGFpbiguLildYCB0byBzZW5kIGZyb21UICByZWxheSB0byBwYXJhY2hhaW4uVQEtIGBiZW5lZmljaWFyeWA6IEEgYmVuZWZpY2lhcnkgbG9jYXRpb24gZm9yIHRoZSBhc3NldHMgaW4gdGhlIGNvbnRleHQgb2YgYGRlc3RgLiBXaWxsmCAgZ2VuZXJhbGx5IGJlIGFuIGBBY2NvdW50SWQzMmAgdmFsdWUuWQEtIGBhc3NldHNgOiBUaGUgYXNzZXRzIHRvIGJlIHdpdGhkcmF3bi4gVGhpcyBzaG91bGQgaW5jbHVkZSB0aGUgYXNzZXRzIHVzZWQgdG8gcGF5IHRoZWggIGZlZSBvbiB0aGUgYGRlc3RgIGNoYWluLk0BLSBgZmVlX2Fzc2V0X2l0ZW1gOiBUaGUgaW5kZXggaW50byBgYXNzZXRzYCBvZiB0aGUgaXRlbSB3aGljaCBzaG91bGQgYmUgdXNlZCB0byBwYXkcICBmZWVzLkUBLSBgd2VpZ2h0X2xpbWl0YDogVGhlIHJlbW90ZS1zaWRlIHdlaWdodCBsaW1pdCwgaWYgYW55LCBmb3IgdGhlIFhDTSBmZWUgcHVyY2hhc2UuQGZvcmNlX3N1c3BlbnNpb24EASRzdXNwZW5kZWRdAQEQYm9vbAAKEPRTZXQgb3IgdW5zZXQgdGhlIGdsb2JhbCBzdXNwZW5zaW9uIHN0YXRlIG9mIHRoZSBYQ00gZXhlY3V0b3IuANwtIGBvcmlnaW5gOiBNdXN0IGJlIGFuIG9yaWdpbiBzcGVjaWZpZWQgYnkgQWRtaW5PcmlnaW4u0C0gYHN1c3BlbmRlZGA6IGB0cnVlYCB0byBzdXNwZW5kLCBgZmFsc2VgIHRvIHJlc3VtZS48dHJhbnNmZXJfYXNzZXRzFAEQZGVzdMkBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAEsYmVuZWZpY2lhcnnJAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgABGGFzc2V0c40DAVBCb3g8VmVyc2lvbmVkQXNzZXRzPgABOGZlZV9hc3NldF9pdGVtOAEMdTMyAAEwd2VpZ2h0X2xpbWl0xQIBLFdlaWdodExpbWl0AAuEXQFUcmFuc2ZlciBzb21lIGFzc2V0cyBmcm9tIHRoZSBsb2NhbCBjaGFpbiB0byB0aGUgZGVzdGluYXRpb24gY2hhaW4gdGhyb3VnaCB0aGVpciBsb2NhbCzQZGVzdGluYXRpb24gb3IgcmVtb3RlIHJlc2VydmUsIG9yIHRocm91Z2ggdGVsZXBvcnRzLgBRAUZlZSBwYXltZW50IG9uIHRoZSBkZXN0aW5hdGlvbiBzaWRlIGlzIG1hZGUgZnJvbSB0aGUgYXNzZXQgaW4gdGhlIGBhc3NldHNgIHZlY3RvciBvZjUBaW5kZXggYGZlZV9hc3NldF9pdGVtYCAoaGVuY2UgcmVmZXJyZWQgdG8gYXMgYGZlZXNgKSwgdXAgdG8gZW5vdWdoIHRvIHBheSBmb3JBAWB3ZWlnaHRfbGltaXRgIG9mIHdlaWdodC4gSWYgbW9yZSB3ZWlnaHQgaXMgbmVlZGVkIHRoYW4gYHdlaWdodF9saW1pdGAsIHRoZW4gdGhl3G9wZXJhdGlvbiB3aWxsIGZhaWwgYW5kIHRoZSBzZW50IGFzc2V0cyBtYXkgYmUgYXQgcmlzay4AYQFgYXNzZXRzYCAoZXhjbHVkaW5nIGBmZWVzYCkgbXVzdCBoYXZlIHNhbWUgcmVzZXJ2ZSBsb2NhdGlvbiBvciBvdGhlcndpc2UgYmUgdGVsZXBvcnRhYmxlsHRvIGBkZXN0YCwgbm8gbGltaXRhdGlvbnMgaW1wb3NlZCBvbiBgZmVlc2AuTQEgLSBmb3IgbG9jYWwgcmVzZXJ2ZTogdHJhbnNmZXIgYXNzZXRzIHRvIHNvdmVyZWlnbiBhY2NvdW50IG9mIGRlc3RpbmF0aW9uIGNoYWluIGFuZE0BICAgZm9yd2FyZCBhIG5vdGlmaWNhdGlvbiBYQ00gdG8gYGRlc3RgIHRvIG1pbnQgYW5kIGRlcG9zaXQgcmVzZXJ2ZS1iYXNlZCBhc3NldHMgdG9EICAgYGJlbmVmaWNpYXJ5YC5hASAtIGZvciBkZXN0aW5hdGlvbiByZXNlcnZlOiBidXJuIGxvY2FsIGFzc2V0cyBhbmQgZm9yd2FyZCBhIG5vdGlmaWNhdGlvbiB0byBgZGVzdGAgY2hhaW5ZASAgIHRvIHdpdGhkcmF3IHRoZSByZXNlcnZlIGFzc2V0cyBmcm9tIHRoaXMgY2hhaW4ncyBzb3ZlcmVpZ24gYWNjb3VudCBhbmQgZGVwb3NpdCB0aGVtUCAgIHRvIGBiZW5lZmljaWFyeWAuXQEgLSBmb3IgcmVtb3RlIHJlc2VydmU6IGJ1cm4gbG9jYWwgYXNzZXRzLCBmb3J3YXJkIFhDTSB0byByZXNlcnZlIGNoYWluIHRvIG1vdmUgcmVzZXJ2ZXNdASAgIGZyb20gdGhpcyBjaGFpbidzIFNBIHRvIGBkZXN0YCBjaGFpbidzIFNBLCBhbmQgZm9yd2FyZCBhbm90aGVyIFhDTSB0byBgZGVzdGAgdG8gbWludNQgICBhbmQgZGVwb3NpdCByZXNlcnZlLWJhc2VkIGFzc2V0cyB0byBgYmVuZWZpY2lhcnlgLlEBIC0gZm9yIHRlbGVwb3J0czogYnVybiBsb2NhbCBhc3NldHMgYW5kIGZvcndhcmQgWENNIHRvIGBkZXN0YCBjaGFpbiB0byBtaW50L3RlbGVwb3J0sCAgIGFzc2V0cyBhbmQgZGVwb3NpdCB0aGVtIHRvIGBiZW5lZmljaWFyeWAuACkBLSBgb3JpZ2luYDogTXVzdCBiZSBjYXBhYmxlIG9mIHdpdGhkcmF3aW5nIHRoZSBgYXNzZXRzYCBhbmQgZXhlY3V0aW5nIFhDTS4tAS0gYGRlc3RgOiBEZXN0aW5hdGlvbiBjb250ZXh0IGZvciB0aGUgYXNzZXRzLiBXaWxsIHR5cGljYWxseSBiZSBgWDIoUGFyZW50LFUBICBQYXJhY2hhaW4oLi4pKWAgdG8gc2VuZCBmcm9tIHBhcmFjaGFpbiB0byBwYXJhY2hhaW4sIG9yIGBYMShQYXJhY2hhaW4oLi4pKWAgdG8gc2VuZGggIGZyb20gcmVsYXkgdG8gcGFyYWNoYWluLlUBLSBgYmVuZWZpY2lhcnlgOiBBIGJlbmVmaWNpYXJ5IGxvY2F0aW9uIGZvciB0aGUgYXNzZXRzIGluIHRoZSBjb250ZXh0IG9mIGBkZXN0YC4gV2lsbJggIGdlbmVyYWxseSBiZSBhbiBgQWNjb3VudElkMzJgIHZhbHVlLlkBLSBgYXNzZXRzYDogVGhlIGFzc2V0cyB0byBiZSB3aXRoZHJhd24uIFRoaXMgc2hvdWxkIGluY2x1ZGUgdGhlIGFzc2V0cyB1c2VkIHRvIHBheSB0aGXIICBmZWUgb24gdGhlIGBkZXN0YCAoYW5kIHBvc3NpYmx5IHJlc2VydmUpIGNoYWlucy5NAS0gYGZlZV9hc3NldF9pdGVtYDogVGhlIGluZGV4IGludG8gYGFzc2V0c2Agb2YgdGhlIGl0ZW0gd2hpY2ggc2hvdWxkIGJlIHVzZWQgdG8gcGF5HCAgZmVlcy5FAS0gYHdlaWdodF9saW1pdGA6IFRoZSByZW1vdGUtc2lkZSB3ZWlnaHQgbGltaXQsIGlmIGFueSwgZm9yIHRoZSBYQ00gZmVlIHB1cmNoYXNlLjBjbGFpbV9hc3NldHMIARhhc3NldHONAwFQQm94PFZlcnNpb25lZEFzc2V0cz4AASxiZW5lZmljaWFyeckBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAwYVQFDbGFpbXMgYXNzZXRzIHRyYXBwZWQgb24gdGhpcyBwYWxsZXQgYmVjYXVzZSBvZiBsZWZ0b3ZlciBhc3NldHMgZHVyaW5nIFhDTSBleGVjdXRpb24uAKwtIGBvcmlnaW5gOiBBbnlvbmUgY2FuIGNhbGwgdGhpcyBleHRyaW5zaWMuXQEtIGBhc3NldHNgOiBUaGUgZXhhY3QgYXNzZXRzIHRoYXQgd2VyZSB0cmFwcGVkLiBVc2UgdGhlIHZlcnNpb24gdG8gc3BlY2lmeSB3aGF0IHZlcnNpb26Yd2FzIHRoZSBsYXRlc3Qgd2hlbiB0aGV5IHdlcmUgdHJhcHBlZC5FAS0gYGJlbmVmaWNpYXJ5YDogVGhlIGxvY2F0aW9uL2FjY291bnQgd2hlcmUgdGhlIGNsYWltZWQgYXNzZXRzIHdpbGwgYmUgZGVwb3NpdGVkLox0cmFuc2Zlcl9hc3NldHNfdXNpbmdfdHlwZV9hbmRfdGhlbhwBEGRlc3TJAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgABGGFzc2V0c40DAVBCb3g8VmVyc2lvbmVkQXNzZXRzPgABUGFzc2V0c190cmFuc2Zlcl90eXBlvQMBREJveDxUcmFuc2ZlclR5cGU+AAE4cmVtb3RlX2ZlZXNfaWTBAwFUQm94PFZlcnNpb25lZEFzc2V0SWQ+AAFIZmVlc190cmFuc2Zlcl90eXBlvQMBREJveDxUcmFuc2ZlclR5cGU+AAFIY3VzdG9tX3hjbV9vbl9kZXN0UQIBVEJveDxWZXJzaW9uZWRYY208KCk+PgABMHdlaWdodF9saW1pdMUCASxXZWlnaHRMaW1pdAANwFUBVHJhbnNmZXIgYXNzZXRzIGZyb20gdGhlIGxvY2FsIGNoYWluIHRvIHRoZSBkZXN0aW5hdGlvbiBjaGFpbiB1c2luZyBleHBsaWNpdCB0cmFuc2Zlcmh0eXBlcyBmb3IgYXNzZXRzIGFuZCBmZWVzLgBZAWBhc3NldHNgIG11c3QgaGF2ZSBzYW1lIHJlc2VydmUgbG9jYXRpb24gb3IgbWF5IGJlIHRlbGVwb3J0YWJsZSB0byBgZGVzdGAuIENhbGxlciBtdXN07HByb3ZpZGUgdGhlIGBhc3NldHNfdHJhbnNmZXJfdHlwZWAgdG8gYmUgdXNlZCBmb3IgYGFzc2V0c2A6UQEgLSBgVHJhbnNmZXJUeXBlOjpMb2NhbFJlc2VydmVgOiB0cmFuc2ZlciBhc3NldHMgdG8gc292ZXJlaWduIGFjY291bnQgb2YgZGVzdGluYXRpb25NASAgIGNoYWluIGFuZCBmb3J3YXJkIGEgbm90aWZpY2F0aW9uIFhDTSB0byBgZGVzdGAgdG8gbWludCBhbmQgZGVwb3NpdCByZXNlcnZlLWJhc2VkbCAgIGFzc2V0cyB0byBgYmVuZWZpY2lhcnlgLlkBIC0gYFRyYW5zZmVyVHlwZTo6RGVzdGluYXRpb25SZXNlcnZlYDogYnVybiBsb2NhbCBhc3NldHMgYW5kIGZvcndhcmQgYSBub3RpZmljYXRpb24gdG9ZASAgIGBkZXN0YCBjaGFpbiB0byB3aXRoZHJhdyB0aGUgcmVzZXJ2ZSBhc3NldHMgZnJvbSB0aGlzIGNoYWluJ3Mgc292ZXJlaWduIGFjY291bnQgYW5khCAgIGRlcG9zaXQgdGhlbSB0byBgYmVuZWZpY2lhcnlgLlkBIC0gYFRyYW5zZmVyVHlwZTo6UmVtb3RlUmVzZXJ2ZShyZXNlcnZlKWA6IGJ1cm4gbG9jYWwgYXNzZXRzLCBmb3J3YXJkIFhDTSB0byBgcmVzZXJ2ZWBhASAgIGNoYWluIHRvIG1vdmUgcmVzZXJ2ZXMgZnJvbSB0aGlzIGNoYWluJ3MgU0EgdG8gYGRlc3RgIGNoYWluJ3MgU0EsIGFuZCBmb3J3YXJkIGFub3RoZXJVASAgIFhDTSB0byBgZGVzdGAgdG8gbWludCBhbmQgZGVwb3NpdCByZXNlcnZlLWJhc2VkIGFzc2V0cyB0byBgYmVuZWZpY2lhcnlgLiBUeXBpY2FsbHmUICAgdGhlIHJlbW90ZSBgcmVzZXJ2ZWAgaXMgQXNzZXQgSHViLkUBIC0gYFRyYW5zZmVyVHlwZTo6VGVsZXBvcnRgOiBidXJuIGxvY2FsIGFzc2V0cyBhbmQgZm9yd2FyZCBYQ00gdG8gYGRlc3RgIGNoYWluIHRv6CAgIG1pbnQvdGVsZXBvcnQgYXNzZXRzIGFuZCBkZXBvc2l0IHRoZW0gdG8gYGJlbmVmaWNpYXJ5YC4AVQFPbiB0aGUgZGVzdGluYXRpb24gY2hhaW4sIGFzIHdlbGwgYXMgYW55IGludGVybWVkaWFyeSBob3BzLCBgQnV5RXhlY3V0aW9uYCBpcyB1c2VkIHRvIQFidXkgZXhlY3V0aW9uIHVzaW5nIHRyYW5zZmVycmVkIGBhc3NldHNgIGlkZW50aWZpZWQgYnkgYHJlbW90ZV9mZWVzX2lkYC5ZAU1ha2Ugc3VyZSBlbm91Z2ggb2YgdGhlIHNwZWNpZmllZCBgcmVtb3RlX2ZlZXNfaWRgIGFzc2V0IGlzIGluY2x1ZGVkIGluIHRoZSBnaXZlbiBsaXN0YQFvZiBgYXNzZXRzYC4gYHJlbW90ZV9mZWVzX2lkYCBzaG91bGQgYmUgZW5vdWdoIHRvIHBheSBmb3IgYHdlaWdodF9saW1pdGAuIElmIG1vcmUgd2VpZ2h0WQFpcyBuZWVkZWQgdGhhbiBgd2VpZ2h0X2xpbWl0YCwgdGhlbiB0aGUgb3BlcmF0aW9uIHdpbGwgZmFpbCBhbmQgdGhlIHNlbnQgYXNzZXRzIG1heSBiZSBhdCByaXNrLgBFAWByZW1vdGVfZmVlc19pZGAgbWF5IHVzZSBkaWZmZXJlbnQgdHJhbnNmZXIgdHlwZSB0aGFuIHJlc3Qgb2YgYGFzc2V0c2AgYW5kIGNhbiBiZZxzcGVjaWZpZWQgdGhyb3VnaCBgZmVlc190cmFuc2Zlcl90eXBlYC4AYQFUaGUgY2FsbGVyIG5lZWRzIHRvIHNwZWNpZnkgd2hhdCBzaG91bGQgaGFwcGVuIHRvIHRoZSB0cmFuc2ZlcnJlZCBhc3NldHMgb25jZSB0aGV5IHJlYWNoQQF0aGUgYGRlc3RgIGNoYWluLiBUaGlzIGlzIGRvbmUgdGhyb3VnaCB0aGUgYGN1c3RvbV94Y21fb25fZGVzdGAgcGFyYW1ldGVyLCB3aGljaPxjb250YWlucyB0aGUgaW5zdHJ1Y3Rpb25zIHRvIGV4ZWN1dGUgb24gYGRlc3RgIGFzIGEgZmluYWwgc3RlcC58ICBUaGlzIGlzIHVzdWFsbHkgYXMgc2ltcGxlIGFzOlEBICBgWGNtKHZlYyFbRGVwb3NpdEFzc2V0IHsgYXNzZXRzOiBXaWxkKEFsbENvdW50ZWQoYXNzZXRzLmxlbigpKSksIGJlbmVmaWNpYXJ5IH1dKWAsMQEgIGJ1dCBjb3VsZCBiZSBzb21ldGhpbmcgbW9yZSBleG90aWMgbGlrZSBzZW5kaW5nIHRoZSBgYXNzZXRzYCBldmVuIGZ1cnRoZXIuACkBLSBgb3JpZ2luYDogTXVzdCBiZSBjYXBhYmxlIG9mIHdpdGhkcmF3aW5nIHRoZSBgYXNzZXRzYCBhbmQgZXhlY3V0aW5nIFhDTS4lAS0gYGRlc3RgOiBEZXN0aW5hdGlvbiBjb250ZXh0IGZvciB0aGUgYXNzZXRzLiBXaWxsIHR5cGljYWxseSBiZSBgW1BhcmVudCxhASAgUGFyYWNoYWluKC4uKV1gIHRvIHNlbmQgZnJvbSBwYXJhY2hhaW4gdG8gcGFyYWNoYWluLCBvciBgW1BhcmFjaGFpbiguLildYCB0byBzZW5kIGZyb209ASAgcmVsYXkgdG8gcGFyYWNoYWluLCBvciBgKHBhcmVudHM6IDIsIChHbG9iYWxDb25zZW5zdXMoLi4pLCAuLikpYCB0byBzZW5kIGZyb230ICBwYXJhY2hhaW4gYWNyb3NzIGEgYnJpZGdlIHRvIGFub3RoZXIgZWNvc3lzdGVtIGRlc3RpbmF0aW9uLlkBLSBgYXNzZXRzYDogVGhlIGFzc2V0cyB0byBiZSB3aXRoZHJhd24uIFRoaXMgc2hvdWxkIGluY2x1ZGUgdGhlIGFzc2V0cyB1c2VkIHRvIHBheSB0aGXIICBmZWUgb24gdGhlIGBkZXN0YCAoYW5kIHBvc3NpYmx5IHJlc2VydmUpIGNoYWlucy49AS0gYGFzc2V0c190cmFuc2Zlcl90eXBlYDogVGhlIFhDTSBgVHJhbnNmZXJUeXBlYCB1c2VkIHRvIHRyYW5zZmVyIHRoZSBgYXNzZXRzYC4hAS0gYHJlbW90ZV9mZWVzX2lkYDogT25lIG9mIHRoZSBpbmNsdWRlZCBgYXNzZXRzYCB0byBiZSB1c2VkIHRvIHBheSBmZWVzLkkBLSBgZmVlc190cmFuc2Zlcl90eXBlYDogVGhlIFhDTSBgVHJhbnNmZXJUeXBlYCB1c2VkIHRvIHRyYW5zZmVyIHRoZSBgZmVlc2AgYXNzZXRzLlkBLSBgY3VzdG9tX3hjbV9vbl9kZXN0YDogVGhlIFhDTSB0byBiZSBleGVjdXRlZCBvbiBgZGVzdGAgY2hhaW4gYXMgdGhlIGxhc3Qgc3RlcCBvZiB0aGVZASAgdHJhbnNmZXIsIHdoaWNoIGFsc28gZGV0ZXJtaW5lcyB3aGF0IGhhcHBlbnMgdG8gdGhlIGFzc2V0cyBvbiB0aGUgZGVzdGluYXRpb24gY2hhaW4uRQEtIGB3ZWlnaHRfbGltaXRgOiBUaGUgcmVtb3RlLXNpZGUgd2VpZ2h0IGxpbWl0LCBpZiBhbnksIGZvciB0aGUgWENNIGZlZSBwdXJjaGFzZS5QYWRkX2F1dGhvcml6ZWRfYWxpYXMIARxhbGlhc2VyyQEBWEJveDxWZXJzaW9uZWRMb2NhdGlvbj4AARxleHBpcmVzAQEBLE9wdGlvbjx1NjQ+AA4sXQFBdXRob3JpemUgYW5vdGhlciBgYWxpYXNlcmAgbG9jYXRpb24gdG8gYWxpYXMgaW50byB0aGUgbG9jYWwgYG9yaWdpbmAgbWFraW5nIHRoaXMgY2FsbC4pAVRoZSBgYWxpYXNlcmAgaXMgb25seSBhdXRob3JpemVkIHVudGlsIHRoZSBwcm92aWRlZCBgZXhwaXJ5YCBibG9jayBudW1iZXIuSQFUaGUgY2FsbCBjYW4gYWxzbyBiZSB1c2VkIGZvciBhIHByZXZpb3VzbHkgYXV0aG9yaXplZCBhbGlhcyBpbiBvcmRlciB0byB1cGRhdGUgaXRzWGBleHBpcnlgIGJsb2NrIG51bWJlci4AUQFVc3VhbGx5IHVzZWZ1bCB0byBhbGxvdyB5b3VyIGxvY2FsIGFjY291bnQgdG8gYmUgYWxpYXNlZCBpbnRvIGZyb20gYSByZW1vdGUgbG9jYXRpb270YWxzbyB1bmRlciB5b3VyIGNvbnRyb2wgKGxpa2UgeW91ciBhY2NvdW50IG9uIGFub3RoZXIgY2hhaW4pLgBRAVdBUk5JTkc6IG1ha2Ugc3VyZSB0aGUgY2FsbGVyIGBvcmlnaW5gICh5b3UpIHRydXN0cyB0aGUgYGFsaWFzZXJgIGxvY2F0aW9uIHRvIGFjdCBpblkBdGhlaXIveW91ciBuYW1lLiBPbmNlIGF1dGhvcml6ZWQgdXNpbmcgdGhpcyBjYWxsLCB0aGUgYGFsaWFzZXJgIGNhbiBmcmVlbHkgaW1wZXJzb25hdGXUYG9yaWdpbmAgaW4gWENNIHByb2dyYW1zIGV4ZWN1dGVkIG9uIHRoZSBsb2NhbCBjaGFpbi5ccmVtb3ZlX2F1dGhvcml6ZWRfYWxpYXMEARxhbGlhc2VyyQEBWEJveDxWZXJzaW9uZWRMb2NhdGlvbj4ADwhdAVJlbW92ZSBhIHByZXZpb3VzbHkgYXV0aG9yaXplZCBgYWxpYXNlcmAgZnJvbSB0aGUgbGlzdCBvZiBsb2NhdGlvbnMgdGhhdCBjYW4gYWxpYXMgaW50b5B0aGUgbG9jYWwgYG9yaWdpbmAgbWFraW5nIHRoaXMgY2FsbC50cmVtb3ZlX2FsbF9hdXRob3JpemVkX2FsaWFzZXMAEAhJAVJlbW92ZSBhbGwgcHJldmlvdXNseSBhdXRob3JpemVkIGBhbGlhc2VyYHMgdGhhdCBjYW4gYWxpYXMgaW50byB0aGUgbG9jYWwgYG9yaWdpbmBEbWFraW5nIHRoaXMgY2FsbC4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuyQEIDHhjbURWZXJzaW9uZWRMb2NhdGlvbgABDAhWMwQAzQEBRHYzOjpNdWx0aUxvY2F0aW9uAAMACFY0BADpAQEwdjQ6OkxvY2F0aW9uAAQACFY1BAAdAgEwdjU6OkxvY2F0aW9uAAUAAM0BECxzdGFnaW5nX3hjbQh2MzRtdWx0aWxvY2F0aW9uNE11bHRpTG9jYXRpb24AAAgBHHBhcmVudHMMAQh1OAABIGludGVyaW9y0QEBJEp1bmN0aW9ucwAA0QEQDHhjbQh2MyRqdW5jdGlvbnMkSnVuY3Rpb25zAAEkEEhlcmUAAAAIWDEEANUBASBKdW5jdGlvbgABAAhYMggA1QEBIEp1bmN0aW9uAADVAQEgSnVuY3Rpb24AAgAIWDMMANUBASBKdW5jdGlvbgAA1QEBIEp1bmN0aW9uAADVAQEgSnVuY3Rpb24AAwAIWDQQANUBASBKdW5jdGlvbgAA1QEBIEp1bmN0aW9uAADVAQEgSnVuY3Rpb24AANUBASBKdW5jdGlvbgAEAAhYNRQA1QEBIEp1bmN0aW9uAADVAQEgSnVuY3Rpb24AANUBASBKdW5jdGlvbgAA1QEBIEp1bmN0aW9uAADVAQEgSnVuY3Rpb24ABQAIWDYYANUBASBKdW5jdGlvbgAA1QEBIEp1bmN0aW9uAADVAQEgSnVuY3Rpb24AANUBASBKdW5jdGlvbgAA1QEBIEp1bmN0aW9uAADVAQEgSnVuY3Rpb24ABgAIWDccANUBASBKdW5jdGlvbgAA1QEBIEp1bmN0aW9uAADVAQEgSnVuY3Rpb24AANUBASBKdW5jdGlvbgAA1QEBIEp1bmN0aW9uAADVAQEgSnVuY3Rpb24AANUBASBKdW5jdGlvbgAHAAhYOCAA1QEBIEp1bmN0aW9uAADVAQEgSnVuY3Rpb24AANUBASBKdW5jdGlvbgAA1QEBIEp1bmN0aW9uAADVAQEgSnVuY3Rpb24AANUBASBKdW5jdGlvbgAA1QEBIEp1bmN0aW9uAADVAQEgSnVuY3Rpb24ACAAA1QEQDHhjbQh2MyBqdW5jdGlvbiBKdW5jdGlvbgABKCRQYXJhY2hhaW4EAGQBDHUzMgAAACxBY2NvdW50SWQzMggBHG5ldHdvcmvZAQFET3B0aW9uPE5ldHdvcmtJZD4AAQhpZAgBIFt1ODsgMzJdAAEAOEFjY291bnRJbmRleDY0CAEcbmV0d29ya9kBAURPcHRpb248TmV0d29ya0lkPgABFGluZGV4uAEMdTY0AAIAMEFjY291bnRLZXkyMAgBHG5ldHdvcmvZAQFET3B0aW9uPE5ldHdvcmtJZD4AAQxrZXkcASBbdTg7IDIwXQADADhQYWxsZXRJbnN0YW5jZQQADAEIdTgABAAwR2VuZXJhbEluZGV4BABVAQEQdTEyOAAFAChHZW5lcmFsS2V5CAEYbGVuZ3RoDAEIdTgAARBkYXRhCAEgW3U4OyAzMl0ABgAkT25seUNoaWxkAAcAJFBsdXJhbGl0eQgBCGlk4QEBGEJvZHlJZAABEHBhcnTlAQEgQm9keVBhcnQACAA8R2xvYmFsQ29uc2Vuc3VzBADdAQEkTmV0d29ya0lkAAkAANkBBBhPcHRpb24EBFQB3QEBCBBOb25lAAAAEFNvbWUEAN0BAAABAADdARAMeGNtCHYzIGp1bmN0aW9uJE5ldHdvcmtJZAABLCRCeUdlbmVzaXMEAAgBIFt1ODsgMzJdAAAAGEJ5Rm9yawgBMGJsb2NrX251bWJlcigBDHU2NAABKGJsb2NrX2hhc2gIASBbdTg7IDMyXQABACBQb2xrYWRvdAACABhLdXNhbWEAAwAcV2VzdGVuZAAEABhSb2NvY28ABQAYV29jb2NvAAYAIEV0aGVyZXVtBAEgY2hhaW5faWS4AQx1NjQABwAsQml0Y29pbkNvcmUACAAsQml0Y29pbkNhc2gACQBAUG9sa2Fkb3RCdWxsZXRpbgAKAADhARAMeGNtCHYzIGp1bmN0aW9uGEJvZHlJZAABKBBVbml0AAAAHE1vbmlrZXIEAHQBHFt1ODsgNF0AAQAUSW5kZXgEAGQBDHUzMgACACRFeGVjdXRpdmUAAwAkVGVjaG5pY2FsAAQALExlZ2lzbGF0aXZlAAUAIEp1ZGljaWFsAAYAHERlZmVuc2UABwA4QWRtaW5pc3RyYXRpb24ACAAgVHJlYXN1cnkACQAA5QEQDHhjbQh2MyBqdW5jdGlvbiBCb2R5UGFydAABFBRWb2ljZQAAABxNZW1iZXJzBAEUY291bnRkAQx1MzIAAQAgRnJhY3Rpb24IAQxub21kAQx1MzIAARRkZW5vbWQBDHUzMgACAERBdExlYXN0UHJvcG9ydGlvbggBDG5vbWQBDHUzMgABFGRlbm9tZAEMdTMyAAMASE1vcmVUaGFuUHJvcG9ydGlvbggBDG5vbWQBDHUzMgABFGRlbm9tZAEMdTMyAAQAAOkBECxzdGFnaW5nX3hjbQh2NCBsb2NhdGlvbiBMb2NhdGlvbgAACAEccGFyZW50cwwBCHU4AAEgaW50ZXJpb3LtAQEkSnVuY3Rpb25zAADtARAsc3RhZ2luZ194Y20IdjQkanVuY3Rpb25zJEp1bmN0aW9ucwABJBBIZXJlAAAACFgxBADxAQFIQXJjPFtKdW5jdGlvbjsgMV0+AAEACFgyBAABAgFIQXJjPFtKdW5jdGlvbjsgMl0+AAIACFgzBAAFAgFIQXJjPFtKdW5jdGlvbjsgM10+AAMACFg0BAAJAgFIQXJjPFtKdW5jdGlvbjsgNF0+AAQACFg1BAANAgFIQXJjPFtKdW5jdGlvbjsgNV0+AAUACFg2BAARAgFIQXJjPFtKdW5jdGlvbjsgNl0+AAYACFg3BAAVAgFIQXJjPFtKdW5jdGlvbjsgN10+AAcACFg4BAAZAgFIQXJjPFtKdW5jdGlvbjsgOF0+AAgAAPEBAAADAQAAAPUBAPUBECxzdGFnaW5nX3hjbQh2NCBqdW5jdGlvbiBKdW5jdGlvbgABKCRQYXJhY2hhaW4EAGQBDHUzMgAAACxBY2NvdW50SWQzMggBHG5ldHdvcmv5AQFET3B0aW9uPE5ldHdvcmtJZD4AAQhpZAgBIFt1ODsgMzJdAAEAOEFjY291bnRJbmRleDY0CAEcbmV0d29ya/kBAURPcHRpb248TmV0d29ya0lkPgABFGluZGV4uAEMdTY0AAIAMEFjY291bnRLZXkyMAgBHG5ldHdvcmv5AQFET3B0aW9uPE5ldHdvcmtJZD4AAQxrZXkcASBbdTg7IDIwXQADADhQYWxsZXRJbnN0YW5jZQQADAEIdTgABAAwR2VuZXJhbEluZGV4BABVAQEQdTEyOAAFAChHZW5lcmFsS2V5CAEYbGVuZ3RoDAEIdTgAARBkYXRhCAEgW3U4OyAzMl0ABgAkT25seUNoaWxkAAcAJFBsdXJhbGl0eQgBCGlk4QEBGEJvZHlJZAABEHBhcnTlAQEgQm9keVBhcnQACAA8R2xvYmFsQ29uc2Vuc3VzBAD9AQEkTmV0d29ya0lkAAkAAPkBBBhPcHRpb24EBFQB/QEBCBBOb25lAAAAEFNvbWUEAP0BAAABAAD9ARAsc3RhZ2luZ194Y20IdjQganVuY3Rpb24kTmV0d29ya0lkAAEsJEJ5R2VuZXNpcwQACAEgW3U4OyAzMl0AAAAYQnlGb3JrCAEwYmxvY2tfbnVtYmVyKAEMdTY0AAEoYmxvY2tfaGFzaAgBIFt1ODsgMzJdAAEAIFBvbGthZG90AAIAGEt1c2FtYQADABxXZXN0ZW5kAAQAGFJvY29jbwAFABhXb2NvY28ABgAgRXRoZXJldW0EASBjaGFpbl9pZLgBDHU2NAAHACxCaXRjb2luQ29yZQAIACxCaXRjb2luQ2FzaAAJAEBQb2xrYWRvdEJ1bGxldGluAAoAAAECAAADAgAAAPUBAAUCAAADAwAAAPUBAAkCAAADBAAAAPUBAA0CAAADBQAAAPUBABECAAADBgAAAPUBABUCAAADBwAAAPUBABkCAAADCAAAAPUBAB0CECxzdGFnaW5nX3hjbQh2NSBsb2NhdGlvbiBMb2NhdGlvbgAACAEccGFyZW50cwwBCHU4AAEgaW50ZXJpb3IhAgEkSnVuY3Rpb25zAAAhAhAsc3RhZ2luZ194Y20IdjUkanVuY3Rpb25zJEp1bmN0aW9ucwABJBBIZXJlAAAACFgxBAAlAgFIQXJjPFtKdW5jdGlvbjsgMV0+AAEACFgyBAA1AgFIQXJjPFtKdW5jdGlvbjsgMl0+AAIACFgzBAA5AgFIQXJjPFtKdW5jdGlvbjsgM10+AAMACFg0BAA9AgFIQXJjPFtKdW5jdGlvbjsgNF0+AAQACFg1BABBAgFIQXJjPFtKdW5jdGlvbjsgNV0+AAUACFg2BABFAgFIQXJjPFtKdW5jdGlvbjsgNl0+AAYACFg3BABJAgFIQXJjPFtKdW5jdGlvbjsgN10+AAcACFg4BABNAgFIQXJjPFtKdW5jdGlvbjsgOF0+AAgAACUCAAADAQAAACkCACkCECxzdGFnaW5nX3hjbQh2NSBqdW5jdGlvbiBKdW5jdGlvbgABKCRQYXJhY2hhaW4EAGQBDHUzMgAAACxBY2NvdW50SWQzMggBHG5ldHdvcmstAgFET3B0aW9uPE5ldHdvcmtJZD4AAQhpZAgBIFt1ODsgMzJdAAEAOEFjY291bnRJbmRleDY0CAEcbmV0d29yay0CAURPcHRpb248TmV0d29ya0lkPgABFGluZGV4uAEMdTY0AAIAMEFjY291bnRLZXkyMAgBHG5ldHdvcmstAgFET3B0aW9uPE5ldHdvcmtJZD4AAQxrZXkcASBbdTg7IDIwXQADADhQYWxsZXRJbnN0YW5jZQQADAEIdTgABAAwR2VuZXJhbEluZGV4BABVAQEQdTEyOAAFAChHZW5lcmFsS2V5CAEYbGVuZ3RoDAEIdTgAARBkYXRhCAEgW3U4OyAzMl0ABgAkT25seUNoaWxkAAcAJFBsdXJhbGl0eQgBCGlk4QEBGEJvZHlJZAABEHBhcnTlAQEgQm9keVBhcnQACAA8R2xvYmFsQ29uc2Vuc3VzBAAxAgEkTmV0d29ya0lkAAkAAC0CBBhPcHRpb24EBFQBMQIBCBBOb25lAAAAEFNvbWUEADECAAABAAAxAhAsc3RhZ2luZ194Y20IdjUganVuY3Rpb24kTmV0d29ya0lkAAEgJEJ5R2VuZXNpcwQACAEgW3U4OyAzMl0AAAAYQnlGb3JrCAEwYmxvY2tfbnVtYmVyKAEMdTY0AAEoYmxvY2tfaGFzaAgBIFt1ODsgMzJdAAEAIFBvbGthZG90AAIAGEt1c2FtYQADACBFdGhlcmV1bQQBIGNoYWluX2lkuAEMdTY0AAcALEJpdGNvaW5Db3JlAAgALEJpdGNvaW5DYXNoAAkAQFBvbGthZG90QnVsbGV0aW4ACgAANQIAAAMCAAAAKQIAOQIAAAMDAAAAKQIAPQIAAAMEAAAAKQIAQQIAAAMFAAAAKQIARQIAAAMGAAAAKQIASQIAAAMHAAAAKQIATQIAAAMIAAAAKQIAUQIIDHhjbTBWZXJzaW9uZWRYY20ELFJ1bnRpbWVDYWxsAAEMCFYzBABVAgFQdjM6OlhjbTxSdW50aW1lQ2FsbD4AAwAIVjQEAMkCAVB2NDo6WGNtPFJ1bnRpbWVDYWxsPgAEAAhWNQQAFQMBUHY1OjpYY208UnVudGltZUNhbGw+AAUAAFUCDAx4Y20IdjMMWGNtBBBDYWxsAAAEAFkCAVhWZWM8SW5zdHJ1Y3Rpb248Q2FsbD4+AABZAgAAAl0CAF0CDAx4Y20IdjMsSW5zdHJ1Y3Rpb24EEENhbGwAAcA0V2l0aGRyYXdBc3NldAQAYQIBLE11bHRpQXNzZXRzAAAAVFJlc2VydmVBc3NldERlcG9zaXRlZAQAYQIBLE11bHRpQXNzZXRzAAEAWFJlY2VpdmVUZWxlcG9ydGVkQXNzZXQEAGECASxNdWx0aUFzc2V0cwACADRRdWVyeVJlc3BvbnNlEAEgcXVlcnlfaWS4ARxRdWVyeUlkAAEgcmVzcG9uc2WBAgEgUmVzcG9uc2UAAShtYXhfd2VpZ2h0FQEBGFdlaWdodAABHHF1ZXJpZXKpAgFUT3B0aW9uPE11bHRpTG9jYXRpb24+AAMANFRyYW5zZmVyQXNzZXQIARhhc3NldHNhAgEsTXVsdGlBc3NldHMAASxiZW5lZmljaWFyec0BATRNdWx0aUxvY2F0aW9uAAQAUFRyYW5zZmVyUmVzZXJ2ZUFzc2V0DAEYYXNzZXRzYQIBLE11bHRpQXNzZXRzAAEQZGVzdM0BATRNdWx0aUxvY2F0aW9uAAEMeGNtVQIBHFhjbTwoKT4ABQAgVHJhbnNhY3QMASxvcmlnaW5fa2luZK0CAShPcmlnaW5LaW5kAAFYcmVxdWlyZV93ZWlnaHRfYXRfbW9zdBUBARhXZWlnaHQAARBjYWxssQIBTERvdWJsZUVuY29kZWQ8Q2FsbD4ABgBkSHJtcE5ld0NoYW5uZWxPcGVuUmVxdWVzdAwBGHNlbmRlcmQBDHUzMgABQG1heF9tZXNzYWdlX3NpemVkAQx1MzIAATBtYXhfY2FwYWNpdHlkAQx1MzIABwBMSHJtcENoYW5uZWxBY2NlcHRlZAQBJHJlY2lwaWVudGQBDHUzMgAIAEhIcm1wQ2hhbm5lbENsb3NpbmcMASRpbml0aWF0b3JkAQx1MzIAARhzZW5kZXJkAQx1MzIAASRyZWNpcGllbnRkAQx1MzIACQAsQ2xlYXJPcmlnaW4ACgA0RGVzY2VuZE9yaWdpbgQA0QEBVEludGVyaW9yTXVsdGlMb2NhdGlvbgALACxSZXBvcnRFcnJvcgQAtQIBRFF1ZXJ5UmVzcG9uc2VJbmZvAAwAMERlcG9zaXRBc3NldAgBGGFzc2V0c7kCAUBNdWx0aUFzc2V0RmlsdGVyAAEsYmVuZWZpY2lhcnnNAQE0TXVsdGlMb2NhdGlvbgANAExEZXBvc2l0UmVzZXJ2ZUFzc2V0DAEYYXNzZXRzuQIBQE11bHRpQXNzZXRGaWx0ZXIAARBkZXN0zQEBNE11bHRpTG9jYXRpb24AAQx4Y21VAgEcWGNtPCgpPgAOADRFeGNoYW5nZUFzc2V0DAEQZ2l2ZbkCAUBNdWx0aUFzc2V0RmlsdGVyAAEQd2FudGECASxNdWx0aUFzc2V0cwABHG1heGltYWxdAQEQYm9vbAAPAFxJbml0aWF0ZVJlc2VydmVXaXRoZHJhdwwBGGFzc2V0c7kCAUBNdWx0aUFzc2V0RmlsdGVyAAEccmVzZXJ2Zc0BATRNdWx0aUxvY2F0aW9uAAEMeGNtVQIBHFhjbTwoKT4AEABASW5pdGlhdGVUZWxlcG9ydAwBGGFzc2V0c7kCAUBNdWx0aUFzc2V0RmlsdGVyAAEQZGVzdM0BATRNdWx0aUxvY2F0aW9uAAEMeGNtVQIBHFhjbTwoKT4AEQA0UmVwb3J0SG9sZGluZwgBNHJlc3BvbnNlX2luZm+1AgFEUXVlcnlSZXNwb25zZUluZm8AARhhc3NldHO5AgFATXVsdGlBc3NldEZpbHRlcgASADBCdXlFeGVjdXRpb24IARBmZWVzaQIBKE11bHRpQXNzZXQAATB3ZWlnaHRfbGltaXTFAgEsV2VpZ2h0TGltaXQAEwA0UmVmdW5kU3VycGx1cwAUADxTZXRFcnJvckhhbmRsZXIEAFUCASRYY208Q2FsbD4AFQAsU2V0QXBwZW5kaXgEAFUCASRYY208Q2FsbD4AFgAoQ2xlYXJFcnJvcgAXAChDbGFpbUFzc2V0CAEYYXNzZXRzYQIBLE11bHRpQXNzZXRzAAEYdGlja2V0zQEBNE11bHRpTG9jYXRpb24AGAAQVHJhcAQAuAEMdTY0ABkAQFN1YnNjcmliZVZlcnNpb24IASBxdWVyeV9pZLgBHFF1ZXJ5SWQAAUxtYXhfcmVzcG9uc2Vfd2VpZ2h0FQEBGFdlaWdodAAaAEhVbnN1YnNjcmliZVZlcnNpb24AGwAkQnVybkFzc2V0BABhAgEsTXVsdGlBc3NldHMAHAAsRXhwZWN0QXNzZXQEAGECASxNdWx0aUFzc2V0cwAdADBFeHBlY3RPcmlnaW4EAKkCAVRPcHRpb248TXVsdGlMb2NhdGlvbj4AHgAsRXhwZWN0RXJyb3IEAIUCAVBPcHRpb248KHUzMiwgRXJyb3IpPgAfAFBFeHBlY3RUcmFuc2FjdFN0YXR1cwQAoQIBOE1heWJlRXJyb3JDb2RlACAALFF1ZXJ5UGFsbGV0CAEsbW9kdWxlX25hbWUYARxWZWM8dTg+AAE0cmVzcG9uc2VfaW5mb7UCAURRdWVyeVJlc3BvbnNlSW5mbwAhADBFeHBlY3RQYWxsZXQUARRpbmRleGQBDHUzMgABEG5hbWUYARxWZWM8dTg+AAEsbW9kdWxlX25hbWUYARxWZWM8dTg+AAEsY3JhdGVfbWFqb3JkAQx1MzIAATxtaW5fY3JhdGVfbWlub3JkAQx1MzIAIgBQUmVwb3J0VHJhbnNhY3RTdGF0dXMEALUCAURRdWVyeVJlc3BvbnNlSW5mbwAjAExDbGVhclRyYW5zYWN0U3RhdHVzACQAPFVuaXZlcnNhbE9yaWdpbgQA1QEBIEp1bmN0aW9uACUANEV4cG9ydE1lc3NhZ2UMARxuZXR3b3Jr3QEBJE5ldHdvcmtJZAABLGRlc3RpbmF0aW9u0QEBVEludGVyaW9yTXVsdGlMb2NhdGlvbgABDHhjbVUCARxYY208KCk+ACYAJExvY2tBc3NldAgBFGFzc2V0aQIBKE11bHRpQXNzZXQAASB1bmxvY2tlcs0BATRNdWx0aUxvY2F0aW9uACcALFVubG9ja0Fzc2V0CAEUYXNzZXRpAgEoTXVsdGlBc3NldAABGHRhcmdldM0BATRNdWx0aUxvY2F0aW9uACgAOE5vdGVVbmxvY2thYmxlCAEUYXNzZXRpAgEoTXVsdGlBc3NldAABFG93bmVyzQEBNE11bHRpTG9jYXRpb24AKQA0UmVxdWVzdFVubG9jawgBFGFzc2V0aQIBKE11bHRpQXNzZXQAARhsb2NrZXLNAQE0TXVsdGlMb2NhdGlvbgAqACxTZXRGZWVzTW9kZQQBMGppdF93aXRoZHJhd10BARBib29sACsAIFNldFRvcGljBAAIASBbdTg7IDMyXQAsAChDbGVhclRvcGljAC0ALEFsaWFzT3JpZ2luBADNAQE0TXVsdGlMb2NhdGlvbgAuADxVbnBhaWRFeGVjdXRpb24IATB3ZWlnaHRfbGltaXTFAgEsV2VpZ2h0TGltaXQAATBjaGVja19vcmlnaW6pAgFUT3B0aW9uPE11bHRpTG9jYXRpb24+AC8AAGECEAx4Y20IdjMobXVsdGlhc3NldCxNdWx0aUFzc2V0cwAABABlAgE8VmVjPE11bHRpQXNzZXQ+AABlAgAAAmkCAGkCEAx4Y20IdjMobXVsdGlhc3NldChNdWx0aUFzc2V0AAAIAQhpZG0CARxBc3NldElkAAEMZnVucQIBLEZ1bmdpYmlsaXR5AABtAhAMeGNtCHYzKG11bHRpYXNzZXQcQXNzZXRJZAABCCBDb25jcmV0ZQQAzQEBNE11bHRpTG9jYXRpb24AAAAgQWJzdHJhY3QEAAgBIFt1ODsgMzJdAAEAAHECEAx4Y20IdjMobXVsdGlhc3NldCxGdW5naWJpbGl0eQABCCBGdW5naWJsZQQAVQEBEHUxMjgAAAAsTm9uRnVuZ2libGUEAHUCATRBc3NldEluc3RhbmNlAAEAAHUCEAx4Y20IdjMobXVsdGlhc3NldDRBc3NldEluc3RhbmNlAAEYJFVuZGVmaW5lZAAAABRJbmRleAQAVQEBEHUxMjgAAQAYQXJyYXk0BAB0ARxbdTg7IDRdAAIAGEFycmF5OAQAeQIBHFt1ODsgOF0AAwAcQXJyYXkxNgQAfQIBIFt1ODsgMTZdAAQAHEFycmF5MzIEAAgBIFt1ODsgMzJdAAUAAHkCAAADCAAAAAwAfQIAAAMQAAAADACBAgwMeGNtCHYzIFJlc3BvbnNlAAEYEE51bGwAAAAYQXNzZXRzBABhAgEsTXVsdGlBc3NldHMAAQA8RXhlY3V0aW9uUmVzdWx0BACFAgFQT3B0aW9uPCh1MzIsIEVycm9yKT4AAgAcVmVyc2lvbgQAOAE4c3VwZXI6OlZlcnNpb24AAwAsUGFsbGV0c0luZm8EAJECAZhCb3VuZGVkVmVjPFBhbGxldEluZm8sIE1heFBhbGxldHNJbmZvPgAEADhEaXNwYXRjaFJlc3VsdAQAoQIBOE1heWJlRXJyb3JDb2RlAAUAAIUCBBhPcHRpb24EBFQBiQIBCBBOb25lAAAAEFNvbWUEAIkCAAABAACJAgAABAg4jQIAjQIQDHhjbQh2Mxh0cmFpdHMURXJyb3IAAaAgT3ZlcmZsb3cAAAA0VW5pbXBsZW1lbnRlZAABAGBVbnRydXN0ZWRSZXNlcnZlTG9jYXRpb24AAgBkVW50cnVzdGVkVGVsZXBvcnRMb2NhdGlvbgADADBMb2NhdGlvbkZ1bGwABABUTG9jYXRpb25Ob3RJbnZlcnRpYmxlAAUAJEJhZE9yaWdpbgAGADxJbnZhbGlkTG9jYXRpb24ABwA0QXNzZXROb3RGb3VuZAAIAFRGYWlsZWRUb1RyYW5zYWN0QXNzZXQACQA8Tm90V2l0aGRyYXdhYmxlAAoASExvY2F0aW9uQ2Fubm90SG9sZAALAFRFeGNlZWRzTWF4TWVzc2FnZVNpemUADABYRGVzdGluYXRpb25VbnN1cHBvcnRlZAANACRUcmFuc3BvcnQADgAoVW5yb3V0YWJsZQAPADBVbmtub3duQ2xhaW0AEAA4RmFpbGVkVG9EZWNvZGUAEQBATWF4V2VpZ2h0SW52YWxpZAASADhOb3RIb2xkaW5nRmVlcwATADBUb29FeHBlbnNpdmUAFAAQVHJhcAQAKAEMdTY0ABUAQEV4cGVjdGF0aW9uRmFsc2UAFgA4UGFsbGV0Tm90Rm91bmQAFwAwTmFtZU1pc21hdGNoABgATFZlcnNpb25JbmNvbXBhdGlibGUAGQBQSG9sZGluZ1dvdWxkT3ZlcmZsb3cAGgAsRXhwb3J0RXJyb3IAGwA4UmVhbmNob3JGYWlsZWQAHAAYTm9EZWFsAB0AKEZlZXNOb3RNZXQAHgAkTG9ja0Vycm9yAB8AME5vUGVybWlzc2lvbgAgAChVbmFuY2hvcmVkACEAOE5vdERlcG9zaXRhYmxlACIATFVuaGFuZGxlZFhjbVZlcnNpb24AIwBIV2VpZ2h0TGltaXRSZWFjaGVkBAAVAQEYV2VpZ2h0ACQAHEJhcnJpZXIAJQBMV2VpZ2h0Tm90Q29tcHV0YWJsZQAmAERFeGNlZWRzU3RhY2tMaW1pdAAnAACRAgxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAZUCBFMAAAQAnQIBGFZlYzxUPgAAlQIMDHhjbQh2MyhQYWxsZXRJbmZvAAAYARRpbmRleGQBDHUzMgABEG5hbWWZAgGAQm91bmRlZFZlYzx1OCwgTWF4UGFsbGV0TmFtZUxlbj4AASxtb2R1bGVfbmFtZZkCAYBCb3VuZGVkVmVjPHU4LCBNYXhQYWxsZXROYW1lTGVuPgABFG1ham9yZAEMdTMyAAEUbWlub3JkAQx1MzIAARRwYXRjaGQBDHUzMgAAmQIMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AACdAgAAApUCAKECDAx4Y20IdjM4TWF5YmVFcnJvckNvZGUAAQwcU3VjY2VzcwAAABRFcnJvcgQApQIBjEJvdW5kZWRWZWM8dTgsIE1heERpc3BhdGNoRXJyb3JMZW4+AAEAOFRydW5jYXRlZEVycm9yBAClAgGMQm91bmRlZFZlYzx1OCwgTWF4RGlzcGF0Y2hFcnJvckxlbj4AAgAApQIMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AACpAgQYT3B0aW9uBARUAc0BAQgQTm9uZQAAABBTb21lBADNAQAAAQAArQIMDHhjbQh2MyhPcmlnaW5LaW5kAAEQGE5hdGl2ZQAAAEBTb3ZlcmVpZ25BY2NvdW50AAEAJFN1cGVydXNlcgACAAxYY20AAwAAsQIMDHhjbThkb3VibGVfZW5jb2RlZDREb3VibGVFbmNvZGVkBARUAAAEARxlbmNvZGVkGAEcVmVjPHU4PgAAtQIMDHhjbQh2M0RRdWVyeVJlc3BvbnNlSW5mbwAADAEsZGVzdGluYXRpb27NAQE0TXVsdGlMb2NhdGlvbgABIHF1ZXJ5X2lkuAEcUXVlcnlJZAABKG1heF93ZWlnaHQVAQEYV2VpZ2h0AAC5AhAMeGNtCHYzKG11bHRpYXNzZXRATXVsdGlBc3NldEZpbHRlcgABCCBEZWZpbml0ZQQAYQIBLE11bHRpQXNzZXRzAAAAEFdpbGQEAL0CAThXaWxkTXVsdGlBc3NldAABAAC9AhAMeGNtCHYzKG11bHRpYXNzZXQ4V2lsZE11bHRpQXNzZXQAARAMQWxsAAAAFEFsbE9mCAEIaWRtAgEcQXNzZXRJZAABDGZ1bsECATxXaWxkRnVuZ2liaWxpdHkAAQAoQWxsQ291bnRlZAQAZAEMdTMyAAIAMEFsbE9mQ291bnRlZAwBCGlkbQIBHEFzc2V0SWQAAQxmdW7BAgE8V2lsZEZ1bmdpYmlsaXR5AAEUY291bnRkAQx1MzIAAwAAwQIQDHhjbQh2MyhtdWx0aWFzc2V0PFdpbGRGdW5naWJpbGl0eQABCCBGdW5naWJsZQAAACxOb25GdW5naWJsZQABAADFAgwMeGNtCHYzLFdlaWdodExpbWl0AAEIJFVubGltaXRlZAAAABxMaW1pdGVkBAAVAQEYV2VpZ2h0AAEAAMkCDCxzdGFnaW5nX3hjbQh2NAxYY20EEENhbGwAAAQAzQIBWFZlYzxJbnN0cnVjdGlvbjxDYWxsPj4AAM0CAAAC0QIA0QIMLHN0YWdpbmdfeGNtCHY0LEluc3RydWN0aW9uBBBDYWxsAAHANFdpdGhkcmF3QXNzZXQEANUCARhBc3NldHMAAABUUmVzZXJ2ZUFzc2V0RGVwb3NpdGVkBADVAgEYQXNzZXRzAAEAWFJlY2VpdmVUZWxlcG9ydGVkQXNzZXQEANUCARhBc3NldHMAAgA0UXVlcnlSZXNwb25zZRABIHF1ZXJ5X2lkuAEcUXVlcnlJZAABIHJlc3BvbnNl7QIBIFJlc3BvbnNlAAEobWF4X3dlaWdodBUBARhXZWlnaHQAARxxdWVyaWVyAQMBQE9wdGlvbjxMb2NhdGlvbj4AAwA0VHJhbnNmZXJBc3NldAgBGGFzc2V0c9UCARhBc3NldHMAASxiZW5lZmljaWFyeekBASBMb2NhdGlvbgAEAFBUcmFuc2ZlclJlc2VydmVBc3NldAwBGGFzc2V0c9UCARhBc3NldHMAARBkZXN06QEBIExvY2F0aW9uAAEMeGNtyQIBHFhjbTwoKT4ABQAgVHJhbnNhY3QMASxvcmlnaW5fa2luZK0CAShPcmlnaW5LaW5kAAFYcmVxdWlyZV93ZWlnaHRfYXRfbW9zdBUBARhXZWlnaHQAARBjYWxssQIBTERvdWJsZUVuY29kZWQ8Q2FsbD4ABgBkSHJtcE5ld0NoYW5uZWxPcGVuUmVxdWVzdAwBGHNlbmRlcmQBDHUzMgABQG1heF9tZXNzYWdlX3NpemVkAQx1MzIAATBtYXhfY2FwYWNpdHlkAQx1MzIABwBMSHJtcENoYW5uZWxBY2NlcHRlZAQBJHJlY2lwaWVudGQBDHUzMgAIAEhIcm1wQ2hhbm5lbENsb3NpbmcMASRpbml0aWF0b3JkAQx1MzIAARhzZW5kZXJkAQx1MzIAASRyZWNpcGllbnRkAQx1MzIACQAsQ2xlYXJPcmlnaW4ACgA0RGVzY2VuZE9yaWdpbgQA7QEBQEludGVyaW9yTG9jYXRpb24ACwAsUmVwb3J0RXJyb3IEAAUDAURRdWVyeVJlc3BvbnNlSW5mbwAMADBEZXBvc2l0QXNzZXQIARhhc3NldHMJAwEsQXNzZXRGaWx0ZXIAASxiZW5lZmljaWFyeekBASBMb2NhdGlvbgANAExEZXBvc2l0UmVzZXJ2ZUFzc2V0DAEYYXNzZXRzCQMBLEFzc2V0RmlsdGVyAAEQZGVzdOkBASBMb2NhdGlvbgABDHhjbckCARxYY208KCk+AA4ANEV4Y2hhbmdlQXNzZXQMARBnaXZlCQMBLEFzc2V0RmlsdGVyAAEQd2FudNUCARhBc3NldHMAARxtYXhpbWFsXQEBEGJvb2wADwBcSW5pdGlhdGVSZXNlcnZlV2l0aGRyYXcMARhhc3NldHMJAwEsQXNzZXRGaWx0ZXIAARxyZXNlcnZl6QEBIExvY2F0aW9uAAEMeGNtyQIBHFhjbTwoKT4AEABASW5pdGlhdGVUZWxlcG9ydAwBGGFzc2V0cwkDASxBc3NldEZpbHRlcgABEGRlc3TpAQEgTG9jYXRpb24AAQx4Y23JAgEcWGNtPCgpPgARADRSZXBvcnRIb2xkaW5nCAE0cmVzcG9uc2VfaW5mbwUDAURRdWVyeVJlc3BvbnNlSW5mbwABGGFzc2V0cwkDASxBc3NldEZpbHRlcgASADBCdXlFeGVjdXRpb24IARBmZWVz3QIBFEFzc2V0AAEwd2VpZ2h0X2xpbWl0xQIBLFdlaWdodExpbWl0ABMANFJlZnVuZFN1cnBsdXMAFAA8U2V0RXJyb3JIYW5kbGVyBADJAgEkWGNtPENhbGw+ABUALFNldEFwcGVuZGl4BADJAgEkWGNtPENhbGw+ABYAKENsZWFyRXJyb3IAFwAoQ2xhaW1Bc3NldAgBGGFzc2V0c9UCARhBc3NldHMAARh0aWNrZXTpAQEgTG9jYXRpb24AGAAQVHJhcAQAuAEMdTY0ABkAQFN1YnNjcmliZVZlcnNpb24IASBxdWVyeV9pZLgBHFF1ZXJ5SWQAAUxtYXhfcmVzcG9uc2Vfd2VpZ2h0FQEBGFdlaWdodAAaAEhVbnN1YnNjcmliZVZlcnNpb24AGwAkQnVybkFzc2V0BADVAgEYQXNzZXRzABwALEV4cGVjdEFzc2V0BADVAgEYQXNzZXRzAB0AMEV4cGVjdE9yaWdpbgQAAQMBQE9wdGlvbjxMb2NhdGlvbj4AHgAsRXhwZWN0RXJyb3IEAIUCAVBPcHRpb248KHUzMiwgRXJyb3IpPgAfAFBFeHBlY3RUcmFuc2FjdFN0YXR1cwQAoQIBOE1heWJlRXJyb3JDb2RlACAALFF1ZXJ5UGFsbGV0CAEsbW9kdWxlX25hbWUYARxWZWM8dTg+AAE0cmVzcG9uc2VfaW5mbwUDAURRdWVyeVJlc3BvbnNlSW5mbwAhADBFeHBlY3RQYWxsZXQUARRpbmRleGQBDHUzMgABEG5hbWUYARxWZWM8dTg+AAEsbW9kdWxlX25hbWUYARxWZWM8dTg+AAEsY3JhdGVfbWFqb3JkAQx1MzIAATxtaW5fY3JhdGVfbWlub3JkAQx1MzIAIgBQUmVwb3J0VHJhbnNhY3RTdGF0dXMEAAUDAURRdWVyeVJlc3BvbnNlSW5mbwAjAExDbGVhclRyYW5zYWN0U3RhdHVzACQAPFVuaXZlcnNhbE9yaWdpbgQA9QEBIEp1bmN0aW9uACUANEV4cG9ydE1lc3NhZ2UMARxuZXR3b3Jr/QEBJE5ldHdvcmtJZAABLGRlc3RpbmF0aW9u7QEBQEludGVyaW9yTG9jYXRpb24AAQx4Y23JAgEcWGNtPCgpPgAmACRMb2NrQXNzZXQIARRhc3NldN0CARRBc3NldAABIHVubG9ja2Vy6QEBIExvY2F0aW9uACcALFVubG9ja0Fzc2V0CAEUYXNzZXTdAgEUQXNzZXQAARh0YXJnZXTpAQEgTG9jYXRpb24AKAA4Tm90ZVVubG9ja2FibGUIARRhc3NldN0CARRBc3NldAABFG93bmVy6QEBIExvY2F0aW9uACkANFJlcXVlc3RVbmxvY2sIARRhc3NldN0CARRBc3NldAABGGxvY2tlcukBASBMb2NhdGlvbgAqACxTZXRGZWVzTW9kZQQBMGppdF93aXRoZHJhd10BARBib29sACsAIFNldFRvcGljBAAIASBbdTg7IDMyXQAsAChDbGVhclRvcGljAC0ALEFsaWFzT3JpZ2luBADpAQEgTG9jYXRpb24ALgA8VW5wYWlkRXhlY3V0aW9uCAEwd2VpZ2h0X2xpbWl0xQIBLFdlaWdodExpbWl0AAEwY2hlY2tfb3JpZ2luAQMBQE9wdGlvbjxMb2NhdGlvbj4ALwAA1QIQLHN0YWdpbmdfeGNtCHY0FGFzc2V0GEFzc2V0cwAABADZAgEoVmVjPEFzc2V0PgAA2QIAAALdAgDdAhAsc3RhZ2luZ194Y20IdjQUYXNzZXQUQXNzZXQAAAgBCGlk4QIBHEFzc2V0SWQAAQxmdW7lAgEsRnVuZ2liaWxpdHkAAOECECxzdGFnaW5nX3hjbQh2NBRhc3NldBxBc3NldElkAAAEAOkBASBMb2NhdGlvbgAA5QIQLHN0YWdpbmdfeGNtCHY0FGFzc2V0LEZ1bmdpYmlsaXR5AAEIIEZ1bmdpYmxlBABVAQEQdTEyOAAAACxOb25GdW5naWJsZQQA6QIBNEFzc2V0SW5zdGFuY2UAAQAA6QIQLHN0YWdpbmdfeGNtCHY0FGFzc2V0NEFzc2V0SW5zdGFuY2UAARgkVW5kZWZpbmVkAAAAFEluZGV4BABVAQEQdTEyOAABABhBcnJheTQEAHQBHFt1ODsgNF0AAgAYQXJyYXk4BAB5AgEcW3U4OyA4XQADABxBcnJheTE2BAB9AgEgW3U4OyAxNl0ABAAcQXJyYXkzMgQACAEgW3U4OyAzMl0ABQAA7QIMLHN0YWdpbmdfeGNtCHY0IFJlc3BvbnNlAAEYEE51bGwAAAAYQXNzZXRzBADVAgEYQXNzZXRzAAEAPEV4ZWN1dGlvblJlc3VsdAQAhQIBUE9wdGlvbjwodTMyLCBFcnJvcik+AAIAHFZlcnNpb24EADgBOHN1cGVyOjpWZXJzaW9uAAMALFBhbGxldHNJbmZvBADxAgGYQm91bmRlZFZlYzxQYWxsZXRJbmZvLCBNYXhQYWxsZXRzSW5mbz4ABAA4RGlzcGF0Y2hSZXN1bHQEAKECAThNYXliZUVycm9yQ29kZQAFAADxAgxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAfUCBFMAAAQA/QIBGFZlYzxUPgAA9QIMLHN0YWdpbmdfeGNtCHY0KFBhbGxldEluZm8AABgBFGluZGV4ZAEMdTMyAAEQbmFtZfkCAYBCb3VuZGVkVmVjPHU4LCBNYXhQYWxsZXROYW1lTGVuPgABLG1vZHVsZV9uYW1l+QIBgEJvdW5kZWRWZWM8dTgsIE1heFBhbGxldE5hbWVMZW4+AAEUbWFqb3JkAQx1MzIAARRtaW5vcmQBDHUzMgABFHBhdGNoZAEMdTMyAAD5AgxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQwEUwAABAAYARhWZWM8VD4AAP0CAAAC9QIAAQMEGE9wdGlvbgQEVAHpAQEIEE5vbmUAAAAQU29tZQQA6QEAAAEAAAUDDCxzdGFnaW5nX3hjbQh2NERRdWVyeVJlc3BvbnNlSW5mbwAADAEsZGVzdGluYXRpb27pAQEgTG9jYXRpb24AASBxdWVyeV9pZLgBHFF1ZXJ5SWQAAShtYXhfd2VpZ2h0FQEBGFdlaWdodAAACQMQLHN0YWdpbmdfeGNtCHY0FGFzc2V0LEFzc2V0RmlsdGVyAAEIIERlZmluaXRlBADVAgEYQXNzZXRzAAAAEFdpbGQEAA0DASRXaWxkQXNzZXQAAQAADQMQLHN0YWdpbmdfeGNtCHY0FGFzc2V0JFdpbGRBc3NldAABEAxBbGwAAAAUQWxsT2YIAQhpZOECARxBc3NldElkAAEMZnVuEQMBPFdpbGRGdW5naWJpbGl0eQABAChBbGxDb3VudGVkBABkAQx1MzIAAgAwQWxsT2ZDb3VudGVkDAEIaWThAgEcQXNzZXRJZAABDGZ1bhEDATxXaWxkRnVuZ2liaWxpdHkAARRjb3VudGQBDHUzMgADAAARAxAsc3RhZ2luZ194Y20IdjQUYXNzZXQ8V2lsZEZ1bmdpYmlsaXR5AAEIIEZ1bmdpYmxlAAAALE5vbkZ1bmdpYmxlAAEAABUDDCxzdGFnaW5nX3hjbQh2NQxYY20EEENhbGwAAAQAGQMBWFZlYzxJbnN0cnVjdGlvbjxDYWxsPj4AABkDAAACHQMAHQMMLHN0YWdpbmdfeGNtCHY1LEluc3RydWN0aW9uBBBDYWxsAAHQNFdpdGhkcmF3QXNzZXQEACEDARhBc3NldHMAAABUUmVzZXJ2ZUFzc2V0RGVwb3NpdGVkBAAhAwEYQXNzZXRzAAEAWFJlY2VpdmVUZWxlcG9ydGVkQXNzZXQEACEDARhBc3NldHMAAgA0UXVlcnlSZXNwb25zZRABIHF1ZXJ5X2lkuAEcUXVlcnlJZAABIHJlc3BvbnNlOQMBIFJlc3BvbnNlAAEobWF4X3dlaWdodBUBARhXZWlnaHQAARxxdWVyaWVyWQMBQE9wdGlvbjxMb2NhdGlvbj4AAwA0VHJhbnNmZXJBc3NldAgBGGFzc2V0cyEDARhBc3NldHMAASxiZW5lZmljaWFyeR0CASBMb2NhdGlvbgAEAFBUcmFuc2ZlclJlc2VydmVBc3NldAwBGGFzc2V0cyEDARhBc3NldHMAARBkZXN0HQIBIExvY2F0aW9uAAEMeGNtFQMBHFhjbTwoKT4ABQAgVHJhbnNhY3QMASxvcmlnaW5fa2luZK0CAShPcmlnaW5LaW5kAAFMZmFsbGJhY2tfbWF4X3dlaWdodBEBAThPcHRpb248V2VpZ2h0PgABEGNhbGyxAgFMRG91YmxlRW5jb2RlZDxDYWxsPgAGAGRIcm1wTmV3Q2hhbm5lbE9wZW5SZXF1ZXN0DAEYc2VuZGVyZAEMdTMyAAFAbWF4X21lc3NhZ2Vfc2l6ZWQBDHUzMgABMG1heF9jYXBhY2l0eWQBDHUzMgAHAExIcm1wQ2hhbm5lbEFjY2VwdGVkBAEkcmVjaXBpZW50ZAEMdTMyAAgASEhybXBDaGFubmVsQ2xvc2luZwwBJGluaXRpYXRvcmQBDHUzMgABGHNlbmRlcmQBDHUzMgABJHJlY2lwaWVudGQBDHUzMgAJACxDbGVhck9yaWdpbgAKADREZXNjZW5kT3JpZ2luBAAhAgFASW50ZXJpb3JMb2NhdGlvbgALACxSZXBvcnRFcnJvcgQAXQMBRFF1ZXJ5UmVzcG9uc2VJbmZvAAwAMERlcG9zaXRBc3NldAgBGGFzc2V0c2EDASxBc3NldEZpbHRlcgABLGJlbmVmaWNpYXJ5HQIBIExvY2F0aW9uAA0ATERlcG9zaXRSZXNlcnZlQXNzZXQMARhhc3NldHNhAwEsQXNzZXRGaWx0ZXIAARBkZXN0HQIBIExvY2F0aW9uAAEMeGNtFQMBHFhjbTwoKT4ADgA0RXhjaGFuZ2VBc3NldAwBEGdpdmVhAwEsQXNzZXRGaWx0ZXIAARB3YW50IQMBGEFzc2V0cwABHG1heGltYWxdAQEQYm9vbAAPAFxJbml0aWF0ZVJlc2VydmVXaXRoZHJhdwwBGGFzc2V0c2EDASxBc3NldEZpbHRlcgABHHJlc2VydmUdAgEgTG9jYXRpb24AAQx4Y20VAwEcWGNtPCgpPgAQAEBJbml0aWF0ZVRlbGVwb3J0DAEYYXNzZXRzYQMBLEFzc2V0RmlsdGVyAAEQZGVzdB0CASBMb2NhdGlvbgABDHhjbRUDARxYY208KCk+ABEANFJlcG9ydEhvbGRpbmcIATRyZXNwb25zZV9pbmZvXQMBRFF1ZXJ5UmVzcG9uc2VJbmZvAAEYYXNzZXRzYQMBLEFzc2V0RmlsdGVyABIAMEJ1eUV4ZWN1dGlvbggBEGZlZXMpAwEUQXNzZXQAATB3ZWlnaHRfbGltaXTFAgEsV2VpZ2h0TGltaXQAEwA0UmVmdW5kU3VycGx1cwAUADxTZXRFcnJvckhhbmRsZXIEABUDASRYY208Q2FsbD4AFQAsU2V0QXBwZW5kaXgEABUDASRYY208Q2FsbD4AFgAoQ2xlYXJFcnJvcgAXAChDbGFpbUFzc2V0CAEYYXNzZXRzIQMBGEFzc2V0cwABGHRpY2tldB0CASBMb2NhdGlvbgAYABBUcmFwBAC4AQx1NjQAGQBAU3Vic2NyaWJlVmVyc2lvbggBIHF1ZXJ5X2lkuAEcUXVlcnlJZAABTG1heF9yZXNwb25zZV93ZWlnaHQVAQEYV2VpZ2h0ABoASFVuc3Vic2NyaWJlVmVyc2lvbgAbACRCdXJuQXNzZXQEACEDARhBc3NldHMAHAAsRXhwZWN0QXNzZXQEACEDARhBc3NldHMAHQAwRXhwZWN0T3JpZ2luBABZAwFAT3B0aW9uPExvY2F0aW9uPgAeACxFeHBlY3RFcnJvcgQAPQMBUE9wdGlvbjwodTMyLCBFcnJvcik+AB8AUEV4cGVjdFRyYW5zYWN0U3RhdHVzBAChAgE4TWF5YmVFcnJvckNvZGUAIAAsUXVlcnlQYWxsZXQIASxtb2R1bGVfbmFtZRgBHFZlYzx1OD4AATRyZXNwb25zZV9pbmZvXQMBRFF1ZXJ5UmVzcG9uc2VJbmZvACEAMEV4cGVjdFBhbGxldBQBFGluZGV4ZAEMdTMyAAEQbmFtZRgBHFZlYzx1OD4AASxtb2R1bGVfbmFtZRgBHFZlYzx1OD4AASxjcmF0ZV9tYWpvcmQBDHUzMgABPG1pbl9jcmF0ZV9taW5vcmQBDHUzMgAiAFBSZXBvcnRUcmFuc2FjdFN0YXR1cwQAXQMBRFF1ZXJ5UmVzcG9uc2VJbmZvACMATENsZWFyVHJhbnNhY3RTdGF0dXMAJAA8VW5pdmVyc2FsT3JpZ2luBAApAgEgSnVuY3Rpb24AJQA0RXhwb3J0TWVzc2FnZQwBHG5ldHdvcmsxAgEkTmV0d29ya0lkAAEsZGVzdGluYXRpb24hAgFASW50ZXJpb3JMb2NhdGlvbgABDHhjbRUDARxYY208KCk+ACYAJExvY2tBc3NldAgBFGFzc2V0KQMBFEFzc2V0AAEgdW5sb2NrZXIdAgEgTG9jYXRpb24AJwAsVW5sb2NrQXNzZXQIARRhc3NldCkDARRBc3NldAABGHRhcmdldB0CASBMb2NhdGlvbgAoADhOb3RlVW5sb2NrYWJsZQgBFGFzc2V0KQMBFEFzc2V0AAEUb3duZXIdAgEgTG9jYXRpb24AKQA0UmVxdWVzdFVubG9jawgBFGFzc2V0KQMBFEFzc2V0AAEYbG9ja2VyHQIBIExvY2F0aW9uACoALFNldEZlZXNNb2RlBAEwaml0X3dpdGhkcmF3XQEBEGJvb2wAKwAgU2V0VG9waWMEAAgBIFt1ODsgMzJdACwAKENsZWFyVG9waWMALQAsQWxpYXNPcmlnaW4EAB0CASBMb2NhdGlvbgAuADxVbnBhaWRFeGVjdXRpb24IATB3ZWlnaHRfbGltaXTFAgEsV2VpZ2h0TGltaXQAATBjaGVja19vcmlnaW5ZAwFAT3B0aW9uPExvY2F0aW9uPgAvABxQYXlGZWVzBAEUYXNzZXQpAwEUQXNzZXQAMABASW5pdGlhdGVUcmFuc2ZlchQBLGRlc3RpbmF0aW9uHQIBIExvY2F0aW9uAAEscmVtb3RlX2ZlZXNtAwFsT3B0aW9uPEFzc2V0VHJhbnNmZXJGaWx0ZXI+AAE8cHJlc2VydmVfb3JpZ2luXQEBEGJvb2wAARhhc3NldHN1AwHgQm91bmRlZFZlYzxBc3NldFRyYW5zZmVyRmlsdGVyLCBNYXhBc3NldFRyYW5zZmVyRmlsdGVycz4AAShyZW1vdGVfeGNtFQMBHFhjbTwoKT4AMQBERXhlY3V0ZVdpdGhPcmlnaW4IAURkZXNjZW5kYW50X29yaWdpbn0DAWBPcHRpb248SW50ZXJpb3JMb2NhdGlvbj4AAQx4Y20VAwEkWGNtPENhbGw+ADIAIFNldEhpbnRzBAEUaGludHOBAwGEQm91bmRlZFZlYzxIaW50LCBIaW50TnVtVmFyaWFudHM+ADMAACEDECxzdGFnaW5nX3hjbQh2NRRhc3NldBhBc3NldHMAAAQAJQMBKFZlYzxBc3NldD4AACUDAAACKQMAKQMQLHN0YWdpbmdfeGNtCHY1FGFzc2V0FEFzc2V0AAAIAQhpZC0DARxBc3NldElkAAEMZnVuMQMBLEZ1bmdpYmlsaXR5AAAtAxAsc3RhZ2luZ194Y20IdjUUYXNzZXQcQXNzZXRJZAAABAAdAgEgTG9jYXRpb24AADEDECxzdGFnaW5nX3hjbQh2NRRhc3NldCxGdW5naWJpbGl0eQABCCBGdW5naWJsZQQAVQEBEHUxMjgAAAAsTm9uRnVuZ2libGUEADUDATRBc3NldEluc3RhbmNlAAEAADUDECxzdGFnaW5nX3hjbQh2NRRhc3NldDRBc3NldEluc3RhbmNlAAEYJFVuZGVmaW5lZAAAABRJbmRleAQAVQEBEHUxMjgAAQAYQXJyYXk0BAB0ARxbdTg7IDRdAAIAGEFycmF5OAQAeQIBHFt1ODsgOF0AAwAcQXJyYXkxNgQAfQIBIFt1ODsgMTZdAAQAHEFycmF5MzIEAAgBIFt1ODsgMzJdAAUAADkDDCxzdGFnaW5nX3hjbQh2NSBSZXNwb25zZQABGBBOdWxsAAAAGEFzc2V0cwQAIQMBGEFzc2V0cwABADxFeGVjdXRpb25SZXN1bHQEAD0DAVBPcHRpb248KHUzMiwgRXJyb3IpPgACABxWZXJzaW9uBAA4AThzdXBlcjo6VmVyc2lvbgADACxQYWxsZXRzSW5mbwQASQMBmEJvdW5kZWRWZWM8UGFsbGV0SW5mbywgTWF4UGFsbGV0c0luZm8+AAQAOERpc3BhdGNoUmVzdWx0BAChAgE4TWF5YmVFcnJvckNvZGUABQAAPQMEGE9wdGlvbgQEVAFBAwEIEE5vbmUAAAAQU29tZQQAQQMAAAEAAEEDAAAECDhFAwBFAxAMeGNtCHY1GHRyYWl0cxRFcnJvcgABpCBPdmVyZmxvdwAAADRVbmltcGxlbWVudGVkAAEAYFVudHJ1c3RlZFJlc2VydmVMb2NhdGlvbgACAGRVbnRydXN0ZWRUZWxlcG9ydExvY2F0aW9uAAMAMExvY2F0aW9uRnVsbAAEAFRMb2NhdGlvbk5vdEludmVydGlibGUABQAkQmFkT3JpZ2luAAYAPEludmFsaWRMb2NhdGlvbgAHADRBc3NldE5vdEZvdW5kAAgAVEZhaWxlZFRvVHJhbnNhY3RBc3NldAAJADxOb3RXaXRoZHJhd2FibGUACgBITG9jYXRpb25DYW5ub3RIb2xkAAsAVEV4Y2VlZHNNYXhNZXNzYWdlU2l6ZQAMAFhEZXN0aW5hdGlvblVuc3VwcG9ydGVkAA0AJFRyYW5zcG9ydAAOAChVbnJvdXRhYmxlAA8AMFVua25vd25DbGFpbQAQADhGYWlsZWRUb0RlY29kZQARAEBNYXhXZWlnaHRJbnZhbGlkABIAOE5vdEhvbGRpbmdGZWVzABMAMFRvb0V4cGVuc2l2ZQAUABBUcmFwBAAoAQx1NjQAFQBARXhwZWN0YXRpb25GYWxzZQAWADhQYWxsZXROb3RGb3VuZAAXADBOYW1lTWlzbWF0Y2gAGABMVmVyc2lvbkluY29tcGF0aWJsZQAZAFBIb2xkaW5nV291bGRPdmVyZmxvdwAaACxFeHBvcnRFcnJvcgAbADhSZWFuY2hvckZhaWxlZAAcABhOb0RlYWwAHQAoRmVlc05vdE1ldAAeACRMb2NrRXJyb3IAHwAwTm9QZXJtaXNzaW9uACAAKFVuYW5jaG9yZWQAIQA4Tm90RGVwb3NpdGFibGUAIgA0VG9vTWFueUFzc2V0cwAjAExVbmhhbmRsZWRYY21WZXJzaW9uACQASFdlaWdodExpbWl0UmVhY2hlZAQAFQEBGFdlaWdodAAlABxCYXJyaWVyACYATFdlaWdodE5vdENvbXB1dGFibGUAJwBERXhjZWVkc1N0YWNrTGltaXQAKAAASQMMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAFNAwRTAAAEAFUDARhWZWM8VD4AAE0DDCxzdGFnaW5nX3hjbQh2NShQYWxsZXRJbmZvAAAYARRpbmRleGQBDHUzMgABEG5hbWVRAwGAQm91bmRlZFZlYzx1OCwgTWF4UGFsbGV0TmFtZUxlbj4AASxtb2R1bGVfbmFtZVEDAYBCb3VuZGVkVmVjPHU4LCBNYXhQYWxsZXROYW1lTGVuPgABFG1ham9yZAEMdTMyAAEUbWlub3JkAQx1MzIAARRwYXRjaGQBDHUzMgAAUQMMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AABVAwAAAk0DAFkDBBhPcHRpb24EBFQBHQIBCBBOb25lAAAAEFNvbWUEAB0CAAABAABdAwwsc3RhZ2luZ194Y20IdjVEUXVlcnlSZXNwb25zZUluZm8AAAwBLGRlc3RpbmF0aW9uHQIBIExvY2F0aW9uAAEgcXVlcnlfaWS4ARxRdWVyeUlkAAEobWF4X3dlaWdodBUBARhXZWlnaHQAAGEDECxzdGFnaW5nX3hjbQh2NRRhc3NldCxBc3NldEZpbHRlcgABCCBEZWZpbml0ZQQAIQMBGEFzc2V0cwAAABBXaWxkBABlAwEkV2lsZEFzc2V0AAEAAGUDECxzdGFnaW5nX3hjbQh2NRRhc3NldCRXaWxkQXNzZXQAARAMQWxsAAAAFEFsbE9mCAEIaWQtAwEcQXNzZXRJZAABDGZ1bmkDATxXaWxkRnVuZ2liaWxpdHkAAQAoQWxsQ291bnRlZAQAZAEMdTMyAAIAMEFsbE9mQ291bnRlZAwBCGlkLQMBHEFzc2V0SWQAAQxmdW5pAwE8V2lsZEZ1bmdpYmlsaXR5AAEUY291bnRkAQx1MzIAAwAAaQMQLHN0YWdpbmdfeGNtCHY1FGFzc2V0PFdpbGRGdW5naWJpbGl0eQABCCBGdW5naWJsZQAAACxOb25GdW5naWJsZQABAABtAwQYT3B0aW9uBARUAXEDAQgQTm9uZQAAABBTb21lBABxAwAAAQAAcQMQLHN0YWdpbmdfeGNtCHY1FGFzc2V0TEFzc2V0VHJhbnNmZXJGaWx0ZXIAAQwgVGVsZXBvcnQEAGEDASxBc3NldEZpbHRlcgAAADhSZXNlcnZlRGVwb3NpdAQAYQMBLEFzc2V0RmlsdGVyAAEAPFJlc2VydmVXaXRoZHJhdwQAYQMBLEFzc2V0RmlsdGVyAAIAAHUDDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBcQMEUwAABAB5AwEYVmVjPFQ+AAB5AwAAAnEDAH0DBBhPcHRpb24EBFQBIQIBCBBOb25lAAAAEFNvbWUEACECAAABAACBAwxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAYUDBFMAAAQAiQMBGFZlYzxUPgAAhQMMLHN0YWdpbmdfeGNtCHY1EEhpbnQAAQQwQXNzZXRDbGFpbWVyBAEgbG9jYXRpb24dAgEgTG9jYXRpb24AAAAAiQMAAAKFAwCNAwgMeGNtPFZlcnNpb25lZEFzc2V0cwABDAhWMwQAYQIBPHYzOjpNdWx0aUFzc2V0cwADAAhWNAQA1QIBKHY0OjpBc3NldHMABAAIVjUEACEDASh2NTo6QXNzZXRzAAUAAJEDCAx4Y20wVmVyc2lvbmVkWGNtBCxSdW50aW1lQ2FsbAABDAhWMwQAlQMBUHYzOjpYY208UnVudGltZUNhbGw+AAMACFY0BAClAwFQdjQ6OlhjbTxSdW50aW1lQ2FsbD4ABAAIVjUEALEDAVB2NTo6WGNtPFJ1bnRpbWVDYWxsPgAFAACVAwwMeGNtCHYzDFhjbQQQQ2FsbAAABACZAwFYVmVjPEluc3RydWN0aW9uPENhbGw+PgAAmQMAAAKdAwCdAwwMeGNtCHYzLEluc3RydWN0aW9uBBBDYWxsAAHANFdpdGhkcmF3QXNzZXQEAGECASxNdWx0aUFzc2V0cwAAAFRSZXNlcnZlQXNzZXREZXBvc2l0ZWQEAGECASxNdWx0aUFzc2V0cwABAFhSZWNlaXZlVGVsZXBvcnRlZEFzc2V0BABhAgEsTXVsdGlBc3NldHMAAgA0UXVlcnlSZXNwb25zZRABIHF1ZXJ5X2lkuAEcUXVlcnlJZAABIHJlc3BvbnNlgQIBIFJlc3BvbnNlAAEobWF4X3dlaWdodBUBARhXZWlnaHQAARxxdWVyaWVyqQIBVE9wdGlvbjxNdWx0aUxvY2F0aW9uPgADADRUcmFuc2ZlckFzc2V0CAEYYXNzZXRzYQIBLE11bHRpQXNzZXRzAAEsYmVuZWZpY2lhcnnNAQE0TXVsdGlMb2NhdGlvbgAEAFBUcmFuc2ZlclJlc2VydmVBc3NldAwBGGFzc2V0c2ECASxNdWx0aUFzc2V0cwABEGRlc3TNAQE0TXVsdGlMb2NhdGlvbgABDHhjbVUCARxYY208KCk+AAUAIFRyYW5zYWN0DAEsb3JpZ2luX2tpbmStAgEoT3JpZ2luS2luZAABWHJlcXVpcmVfd2VpZ2h0X2F0X21vc3QVAQEYV2VpZ2h0AAEQY2FsbKEDAUxEb3VibGVFbmNvZGVkPENhbGw+AAYAZEhybXBOZXdDaGFubmVsT3BlblJlcXVlc3QMARhzZW5kZXJkAQx1MzIAAUBtYXhfbWVzc2FnZV9zaXplZAEMdTMyAAEwbWF4X2NhcGFjaXR5ZAEMdTMyAAcATEhybXBDaGFubmVsQWNjZXB0ZWQEASRyZWNpcGllbnRkAQx1MzIACABISHJtcENoYW5uZWxDbG9zaW5nDAEkaW5pdGlhdG9yZAEMdTMyAAEYc2VuZGVyZAEMdTMyAAEkcmVjaXBpZW50ZAEMdTMyAAkALENsZWFyT3JpZ2luAAoANERlc2NlbmRPcmlnaW4EANEBAVRJbnRlcmlvck11bHRpTG9jYXRpb24ACwAsUmVwb3J0RXJyb3IEALUCAURRdWVyeVJlc3BvbnNlSW5mbwAMADBEZXBvc2l0QXNzZXQIARhhc3NldHO5AgFATXVsdGlBc3NldEZpbHRlcgABLGJlbmVmaWNpYXJ5zQEBNE11bHRpTG9jYXRpb24ADQBMRGVwb3NpdFJlc2VydmVBc3NldAwBGGFzc2V0c7kCAUBNdWx0aUFzc2V0RmlsdGVyAAEQZGVzdM0BATRNdWx0aUxvY2F0aW9uAAEMeGNtVQIBHFhjbTwoKT4ADgA0RXhjaGFuZ2VBc3NldAwBEGdpdmW5AgFATXVsdGlBc3NldEZpbHRlcgABEHdhbnRhAgEsTXVsdGlBc3NldHMAARxtYXhpbWFsXQEBEGJvb2wADwBcSW5pdGlhdGVSZXNlcnZlV2l0aGRyYXcMARhhc3NldHO5AgFATXVsdGlBc3NldEZpbHRlcgABHHJlc2VydmXNAQE0TXVsdGlMb2NhdGlvbgABDHhjbVUCARxYY208KCk+ABAAQEluaXRpYXRlVGVsZXBvcnQMARhhc3NldHO5AgFATXVsdGlBc3NldEZpbHRlcgABEGRlc3TNAQE0TXVsdGlMb2NhdGlvbgABDHhjbVUCARxYY208KCk+ABEANFJlcG9ydEhvbGRpbmcIATRyZXNwb25zZV9pbmZvtQIBRFF1ZXJ5UmVzcG9uc2VJbmZvAAEYYXNzZXRzuQIBQE11bHRpQXNzZXRGaWx0ZXIAEgAwQnV5RXhlY3V0aW9uCAEQZmVlc2kCAShNdWx0aUFzc2V0AAEwd2VpZ2h0X2xpbWl0xQIBLFdlaWdodExpbWl0ABMANFJlZnVuZFN1cnBsdXMAFAA8U2V0RXJyb3JIYW5kbGVyBACVAwEkWGNtPENhbGw+ABUALFNldEFwcGVuZGl4BACVAwEkWGNtPENhbGw+ABYAKENsZWFyRXJyb3IAFwAoQ2xhaW1Bc3NldAgBGGFzc2V0c2ECASxNdWx0aUFzc2V0cwABGHRpY2tldM0BATRNdWx0aUxvY2F0aW9uABgAEFRyYXAEALgBDHU2NAAZAEBTdWJzY3JpYmVWZXJzaW9uCAEgcXVlcnlfaWS4ARxRdWVyeUlkAAFMbWF4X3Jlc3BvbnNlX3dlaWdodBUBARhXZWlnaHQAGgBIVW5zdWJzY3JpYmVWZXJzaW9uABsAJEJ1cm5Bc3NldAQAYQIBLE11bHRpQXNzZXRzABwALEV4cGVjdEFzc2V0BABhAgEsTXVsdGlBc3NldHMAHQAwRXhwZWN0T3JpZ2luBACpAgFUT3B0aW9uPE11bHRpTG9jYXRpb24+AB4ALEV4cGVjdEVycm9yBACFAgFQT3B0aW9uPCh1MzIsIEVycm9yKT4AHwBQRXhwZWN0VHJhbnNhY3RTdGF0dXMEAKECAThNYXliZUVycm9yQ29kZQAgACxRdWVyeVBhbGxldAgBLG1vZHVsZV9uYW1lGAEcVmVjPHU4PgABNHJlc3BvbnNlX2luZm+1AgFEUXVlcnlSZXNwb25zZUluZm8AIQAwRXhwZWN0UGFsbGV0FAEUaW5kZXhkAQx1MzIAARBuYW1lGAEcVmVjPHU4PgABLG1vZHVsZV9uYW1lGAEcVmVjPHU4PgABLGNyYXRlX21ham9yZAEMdTMyAAE8bWluX2NyYXRlX21pbm9yZAEMdTMyACIAUFJlcG9ydFRyYW5zYWN0U3RhdHVzBAC1AgFEUXVlcnlSZXNwb25zZUluZm8AIwBMQ2xlYXJUcmFuc2FjdFN0YXR1cwAkADxVbml2ZXJzYWxPcmlnaW4EANUBASBKdW5jdGlvbgAlADRFeHBvcnRNZXNzYWdlDAEcbmV0d29ya90BASROZXR3b3JrSWQAASxkZXN0aW5hdGlvbtEBAVRJbnRlcmlvck11bHRpTG9jYXRpb24AAQx4Y21VAgEcWGNtPCgpPgAmACRMb2NrQXNzZXQIARRhc3NldGkCAShNdWx0aUFzc2V0AAEgdW5sb2NrZXLNAQE0TXVsdGlMb2NhdGlvbgAnACxVbmxvY2tBc3NldAgBFGFzc2V0aQIBKE11bHRpQXNzZXQAARh0YXJnZXTNAQE0TXVsdGlMb2NhdGlvbgAoADhOb3RlVW5sb2NrYWJsZQgBFGFzc2V0aQIBKE11bHRpQXNzZXQAARRvd25lcs0BATRNdWx0aUxvY2F0aW9uACkANFJlcXVlc3RVbmxvY2sIARRhc3NldGkCAShNdWx0aUFzc2V0AAEYbG9ja2VyzQEBNE11bHRpTG9jYXRpb24AKgAsU2V0RmVlc01vZGUEATBqaXRfd2l0aGRyYXddAQEQYm9vbAArACBTZXRUb3BpYwQACAEgW3U4OyAzMl0ALAAoQ2xlYXJUb3BpYwAtACxBbGlhc09yaWdpbgQAzQEBNE11bHRpTG9jYXRpb24ALgA8VW5wYWlkRXhlY3V0aW9uCAEwd2VpZ2h0X2xpbWl0xQIBLFdlaWdodExpbWl0AAEwY2hlY2tfb3JpZ2luqQIBVE9wdGlvbjxNdWx0aUxvY2F0aW9uPgAvAAChAwwMeGNtOGRvdWJsZV9lbmNvZGVkNERvdWJsZUVuY29kZWQEBFQAAAQBHGVuY29kZWQYARxWZWM8dTg+AAClAwwsc3RhZ2luZ194Y20IdjQMWGNtBBBDYWxsAAAEAKkDAVhWZWM8SW5zdHJ1Y3Rpb248Q2FsbD4+AACpAwAAAq0DAK0DDCxzdGFnaW5nX3hjbQh2NCxJbnN0cnVjdGlvbgQQQ2FsbAABwDRXaXRoZHJhd0Fzc2V0BADVAgEYQXNzZXRzAAAAVFJlc2VydmVBc3NldERlcG9zaXRlZAQA1QIBGEFzc2V0cwABAFhSZWNlaXZlVGVsZXBvcnRlZEFzc2V0BADVAgEYQXNzZXRzAAIANFF1ZXJ5UmVzcG9uc2UQASBxdWVyeV9pZLgBHFF1ZXJ5SWQAASByZXNwb25zZe0CASBSZXNwb25zZQABKG1heF93ZWlnaHQVAQEYV2VpZ2h0AAEccXVlcmllcgEDAUBPcHRpb248TG9jYXRpb24+AAMANFRyYW5zZmVyQXNzZXQIARhhc3NldHPVAgEYQXNzZXRzAAEsYmVuZWZpY2lhcnnpAQEgTG9jYXRpb24ABABQVHJhbnNmZXJSZXNlcnZlQXNzZXQMARhhc3NldHPVAgEYQXNzZXRzAAEQZGVzdOkBASBMb2NhdGlvbgABDHhjbckCARxYY208KCk+AAUAIFRyYW5zYWN0DAEsb3JpZ2luX2tpbmStAgEoT3JpZ2luS2luZAABWHJlcXVpcmVfd2VpZ2h0X2F0X21vc3QVAQEYV2VpZ2h0AAEQY2FsbKEDAUxEb3VibGVFbmNvZGVkPENhbGw+AAYAZEhybXBOZXdDaGFubmVsT3BlblJlcXVlc3QMARhzZW5kZXJkAQx1MzIAAUBtYXhfbWVzc2FnZV9zaXplZAEMdTMyAAEwbWF4X2NhcGFjaXR5ZAEMdTMyAAcATEhybXBDaGFubmVsQWNjZXB0ZWQEASRyZWNpcGllbnRkAQx1MzIACABISHJtcENoYW5uZWxDbG9zaW5nDAEkaW5pdGlhdG9yZAEMdTMyAAEYc2VuZGVyZAEMdTMyAAEkcmVjaXBpZW50ZAEMdTMyAAkALENsZWFyT3JpZ2luAAoANERlc2NlbmRPcmlnaW4EAO0BAUBJbnRlcmlvckxvY2F0aW9uAAsALFJlcG9ydEVycm9yBAAFAwFEUXVlcnlSZXNwb25zZUluZm8ADAAwRGVwb3NpdEFzc2V0CAEYYXNzZXRzCQMBLEFzc2V0RmlsdGVyAAEsYmVuZWZpY2lhcnnpAQEgTG9jYXRpb24ADQBMRGVwb3NpdFJlc2VydmVBc3NldAwBGGFzc2V0cwkDASxBc3NldEZpbHRlcgABEGRlc3TpAQEgTG9jYXRpb24AAQx4Y23JAgEcWGNtPCgpPgAOADRFeGNoYW5nZUFzc2V0DAEQZ2l2ZQkDASxBc3NldEZpbHRlcgABEHdhbnTVAgEYQXNzZXRzAAEcbWF4aW1hbF0BARBib29sAA8AXEluaXRpYXRlUmVzZXJ2ZVdpdGhkcmF3DAEYYXNzZXRzCQMBLEFzc2V0RmlsdGVyAAEccmVzZXJ2ZekBASBMb2NhdGlvbgABDHhjbckCARxYY208KCk+ABAAQEluaXRpYXRlVGVsZXBvcnQMARhhc3NldHMJAwEsQXNzZXRGaWx0ZXIAARBkZXN06QEBIExvY2F0aW9uAAEMeGNtyQIBHFhjbTwoKT4AEQA0UmVwb3J0SG9sZGluZwgBNHJlc3BvbnNlX2luZm8FAwFEUXVlcnlSZXNwb25zZUluZm8AARhhc3NldHMJAwEsQXNzZXRGaWx0ZXIAEgAwQnV5RXhlY3V0aW9uCAEQZmVlc90CARRBc3NldAABMHdlaWdodF9saW1pdMUCASxXZWlnaHRMaW1pdAATADRSZWZ1bmRTdXJwbHVzABQAPFNldEVycm9ySGFuZGxlcgQApQMBJFhjbTxDYWxsPgAVACxTZXRBcHBlbmRpeAQApQMBJFhjbTxDYWxsPgAWAChDbGVhckVycm9yABcAKENsYWltQXNzZXQIARhhc3NldHPVAgEYQXNzZXRzAAEYdGlja2V06QEBIExvY2F0aW9uABgAEFRyYXAEALgBDHU2NAAZAEBTdWJzY3JpYmVWZXJzaW9uCAEgcXVlcnlfaWS4ARxRdWVyeUlkAAFMbWF4X3Jlc3BvbnNlX3dlaWdodBUBARhXZWlnaHQAGgBIVW5zdWJzY3JpYmVWZXJzaW9uABsAJEJ1cm5Bc3NldAQA1QIBGEFzc2V0cwAcACxFeHBlY3RBc3NldAQA1QIBGEFzc2V0cwAdADBFeHBlY3RPcmlnaW4EAAEDAUBPcHRpb248TG9jYXRpb24+AB4ALEV4cGVjdEVycm9yBACFAgFQT3B0aW9uPCh1MzIsIEVycm9yKT4AHwBQRXhwZWN0VHJhbnNhY3RTdGF0dXMEAKECAThNYXliZUVycm9yQ29kZQAgACxRdWVyeVBhbGxldAgBLG1vZHVsZV9uYW1lGAEcVmVjPHU4PgABNHJlc3BvbnNlX2luZm8FAwFEUXVlcnlSZXNwb25zZUluZm8AIQAwRXhwZWN0UGFsbGV0FAEUaW5kZXhkAQx1MzIAARBuYW1lGAEcVmVjPHU4PgABLG1vZHVsZV9uYW1lGAEcVmVjPHU4PgABLGNyYXRlX21ham9yZAEMdTMyAAE8bWluX2NyYXRlX21pbm9yZAEMdTMyACIAUFJlcG9ydFRyYW5zYWN0U3RhdHVzBAAFAwFEUXVlcnlSZXNwb25zZUluZm8AIwBMQ2xlYXJUcmFuc2FjdFN0YXR1cwAkADxVbml2ZXJzYWxPcmlnaW4EAPUBASBKdW5jdGlvbgAlADRFeHBvcnRNZXNzYWdlDAEcbmV0d29ya/0BASROZXR3b3JrSWQAASxkZXN0aW5hdGlvbu0BAUBJbnRlcmlvckxvY2F0aW9uAAEMeGNtyQIBHFhjbTwoKT4AJgAkTG9ja0Fzc2V0CAEUYXNzZXTdAgEUQXNzZXQAASB1bmxvY2tlcukBASBMb2NhdGlvbgAnACxVbmxvY2tBc3NldAgBFGFzc2V03QIBFEFzc2V0AAEYdGFyZ2V06QEBIExvY2F0aW9uACgAOE5vdGVVbmxvY2thYmxlCAEUYXNzZXTdAgEUQXNzZXQAARRvd25lcukBASBMb2NhdGlvbgApADRSZXF1ZXN0VW5sb2NrCAEUYXNzZXTdAgEUQXNzZXQAARhsb2NrZXLpAQEgTG9jYXRpb24AKgAsU2V0RmVlc01vZGUEATBqaXRfd2l0aGRyYXddAQEQYm9vbAArACBTZXRUb3BpYwQACAEgW3U4OyAzMl0ALAAoQ2xlYXJUb3BpYwAtACxBbGlhc09yaWdpbgQA6QEBIExvY2F0aW9uAC4APFVucGFpZEV4ZWN1dGlvbggBMHdlaWdodF9saW1pdMUCASxXZWlnaHRMaW1pdAABMGNoZWNrX29yaWdpbgEDAUBPcHRpb248TG9jYXRpb24+AC8AALEDDCxzdGFnaW5nX3hjbQh2NQxYY20EEENhbGwAAAQAtQMBWFZlYzxJbnN0cnVjdGlvbjxDYWxsPj4AALUDAAACuQMAuQMMLHN0YWdpbmdfeGNtCHY1LEluc3RydWN0aW9uBBBDYWxsAAHQNFdpdGhkcmF3QXNzZXQEACEDARhBc3NldHMAAABUUmVzZXJ2ZUFzc2V0RGVwb3NpdGVkBAAhAwEYQXNzZXRzAAEAWFJlY2VpdmVUZWxlcG9ydGVkQXNzZXQEACEDARhBc3NldHMAAgA0UXVlcnlSZXNwb25zZRABIHF1ZXJ5X2lkuAEcUXVlcnlJZAABIHJlc3BvbnNlOQMBIFJlc3BvbnNlAAEobWF4X3dlaWdodBUBARhXZWlnaHQAARxxdWVyaWVyWQMBQE9wdGlvbjxMb2NhdGlvbj4AAwA0VHJhbnNmZXJBc3NldAgBGGFzc2V0cyEDARhBc3NldHMAASxiZW5lZmljaWFyeR0CASBMb2NhdGlvbgAEAFBUcmFuc2ZlclJlc2VydmVBc3NldAwBGGFzc2V0cyEDARhBc3NldHMAARBkZXN0HQIBIExvY2F0aW9uAAEMeGNtFQMBHFhjbTwoKT4ABQAgVHJhbnNhY3QMASxvcmlnaW5fa2luZK0CAShPcmlnaW5LaW5kAAFMZmFsbGJhY2tfbWF4X3dlaWdodBEBAThPcHRpb248V2VpZ2h0PgABEGNhbGyhAwFMRG91YmxlRW5jb2RlZDxDYWxsPgAGAGRIcm1wTmV3Q2hhbm5lbE9wZW5SZXF1ZXN0DAEYc2VuZGVyZAEMdTMyAAFAbWF4X21lc3NhZ2Vfc2l6ZWQBDHUzMgABMG1heF9jYXBhY2l0eWQBDHUzMgAHAExIcm1wQ2hhbm5lbEFjY2VwdGVkBAEkcmVjaXBpZW50ZAEMdTMyAAgASEhybXBDaGFubmVsQ2xvc2luZwwBJGluaXRpYXRvcmQBDHUzMgABGHNlbmRlcmQBDHUzMgABJHJlY2lwaWVudGQBDHUzMgAJACxDbGVhck9yaWdpbgAKADREZXNjZW5kT3JpZ2luBAAhAgFASW50ZXJpb3JMb2NhdGlvbgALACxSZXBvcnRFcnJvcgQAXQMBRFF1ZXJ5UmVzcG9uc2VJbmZvAAwAMERlcG9zaXRBc3NldAgBGGFzc2V0c2EDASxBc3NldEZpbHRlcgABLGJlbmVmaWNpYXJ5HQIBIExvY2F0aW9uAA0ATERlcG9zaXRSZXNlcnZlQXNzZXQMARhhc3NldHNhAwEsQXNzZXRGaWx0ZXIAARBkZXN0HQIBIExvY2F0aW9uAAEMeGNtFQMBHFhjbTwoKT4ADgA0RXhjaGFuZ2VBc3NldAwBEGdpdmVhAwEsQXNzZXRGaWx0ZXIAARB3YW50IQMBGEFzc2V0cwABHG1heGltYWxdAQEQYm9vbAAPAFxJbml0aWF0ZVJlc2VydmVXaXRoZHJhdwwBGGFzc2V0c2EDASxBc3NldEZpbHRlcgABHHJlc2VydmUdAgEgTG9jYXRpb24AAQx4Y20VAwEcWGNtPCgpPgAQAEBJbml0aWF0ZVRlbGVwb3J0DAEYYXNzZXRzYQMBLEFzc2V0RmlsdGVyAAEQZGVzdB0CASBMb2NhdGlvbgABDHhjbRUDARxYY208KCk+ABEANFJlcG9ydEhvbGRpbmcIATRyZXNwb25zZV9pbmZvXQMBRFF1ZXJ5UmVzcG9uc2VJbmZvAAEYYXNzZXRzYQMBLEFzc2V0RmlsdGVyABIAMEJ1eUV4ZWN1dGlvbggBEGZlZXMpAwEUQXNzZXQAATB3ZWlnaHRfbGltaXTFAgEsV2VpZ2h0TGltaXQAEwA0UmVmdW5kU3VycGx1cwAUADxTZXRFcnJvckhhbmRsZXIEALEDASRYY208Q2FsbD4AFQAsU2V0QXBwZW5kaXgEALEDASRYY208Q2FsbD4AFgAoQ2xlYXJFcnJvcgAXAChDbGFpbUFzc2V0CAEYYXNzZXRzIQMBGEFzc2V0cwABGHRpY2tldB0CASBMb2NhdGlvbgAYABBUcmFwBAC4AQx1NjQAGQBAU3Vic2NyaWJlVmVyc2lvbggBIHF1ZXJ5X2lkuAEcUXVlcnlJZAABTG1heF9yZXNwb25zZV93ZWlnaHQVAQEYV2VpZ2h0ABoASFVuc3Vic2NyaWJlVmVyc2lvbgAbACRCdXJuQXNzZXQEACEDARhBc3NldHMAHAAsRXhwZWN0QXNzZXQEACEDARhBc3NldHMAHQAwRXhwZWN0T3JpZ2luBABZAwFAT3B0aW9uPExvY2F0aW9uPgAeACxFeHBlY3RFcnJvcgQAPQMBUE9wdGlvbjwodTMyLCBFcnJvcik+AB8AUEV4cGVjdFRyYW5zYWN0U3RhdHVzBAChAgE4TWF5YmVFcnJvckNvZGUAIAAsUXVlcnlQYWxsZXQIASxtb2R1bGVfbmFtZRgBHFZlYzx1OD4AATRyZXNwb25zZV9pbmZvXQMBRFF1ZXJ5UmVzcG9uc2VJbmZvACEAMEV4cGVjdFBhbGxldBQBFGluZGV4ZAEMdTMyAAEQbmFtZRgBHFZlYzx1OD4AASxtb2R1bGVfbmFtZRgBHFZlYzx1OD4AASxjcmF0ZV9tYWpvcmQBDHUzMgABPG1pbl9jcmF0ZV9taW5vcmQBDHUzMgAiAFBSZXBvcnRUcmFuc2FjdFN0YXR1cwQAXQMBRFF1ZXJ5UmVzcG9uc2VJbmZvACMATENsZWFyVHJhbnNhY3RTdGF0dXMAJAA8VW5pdmVyc2FsT3JpZ2luBAApAgEgSnVuY3Rpb24AJQA0RXhwb3J0TWVzc2FnZQwBHG5ldHdvcmsxAgEkTmV0d29ya0lkAAEsZGVzdGluYXRpb24hAgFASW50ZXJpb3JMb2NhdGlvbgABDHhjbRUDARxYY208KCk+ACYAJExvY2tBc3NldAgBFGFzc2V0KQMBFEFzc2V0AAEgdW5sb2NrZXIdAgEgTG9jYXRpb24AJwAsVW5sb2NrQXNzZXQIARRhc3NldCkDARRBc3NldAABGHRhcmdldB0CASBMb2NhdGlvbgAoADhOb3RlVW5sb2NrYWJsZQgBFGFzc2V0KQMBFEFzc2V0AAEUb3duZXIdAgEgTG9jYXRpb24AKQA0UmVxdWVzdFVubG9jawgBFGFzc2V0KQMBFEFzc2V0AAEYbG9ja2VyHQIBIExvY2F0aW9uACoALFNldEZlZXNNb2RlBAEwaml0X3dpdGhkcmF3XQEBEGJvb2wAKwAgU2V0VG9waWMEAAgBIFt1ODsgMzJdACwAKENsZWFyVG9waWMALQAsQWxpYXNPcmlnaW4EAB0CASBMb2NhdGlvbgAuADxVbnBhaWRFeGVjdXRpb24IATB3ZWlnaHRfbGltaXTFAgEsV2VpZ2h0TGltaXQAATBjaGVja19vcmlnaW5ZAwFAT3B0aW9uPExvY2F0aW9uPgAvABxQYXlGZWVzBAEUYXNzZXQpAwEUQXNzZXQAMABASW5pdGlhdGVUcmFuc2ZlchQBLGRlc3RpbmF0aW9uHQIBIExvY2F0aW9uAAEscmVtb3RlX2ZlZXNtAwFsT3B0aW9uPEFzc2V0VHJhbnNmZXJGaWx0ZXI+AAE8cHJlc2VydmVfb3JpZ2luXQEBEGJvb2wAARhhc3NldHN1AwHgQm91bmRlZFZlYzxBc3NldFRyYW5zZmVyRmlsdGVyLCBNYXhBc3NldFRyYW5zZmVyRmlsdGVycz4AAShyZW1vdGVfeGNtFQMBHFhjbTwoKT4AMQBERXhlY3V0ZVdpdGhPcmlnaW4IAURkZXNjZW5kYW50X29yaWdpbn0DAWBPcHRpb248SW50ZXJpb3JMb2NhdGlvbj4AAQx4Y22xAwEkWGNtPENhbGw+ADIAIFNldEhpbnRzBAEUaGludHOBAwGEQm91bmRlZFZlYzxIaW50LCBIaW50TnVtVmFyaWFudHM+ADMAAL0DEFBzdGFnaW5nX3hjbV9leGVjdXRvchh0cmFpdHM4YXNzZXRfdHJhbnNmZXIwVHJhbnNmZXJUeXBlAAEQIFRlbGVwb3J0AAAAMExvY2FsUmVzZXJ2ZQABAEhEZXN0aW5hdGlvblJlc2VydmUAAgA0UmVtb3RlUmVzZXJ2ZQQAyQEBRFZlcnNpb25lZExvY2F0aW9uAAMAAMEDCAx4Y21AVmVyc2lvbmVkQXNzZXRJZAABDAhWMwQAbQIBLHYzOjpBc3NldElkAAMACFY0BADhAgEsdjQ6OkFzc2V0SWQABAAIVjUEAC0DASx2NTo6QXNzZXRJZAAFAADFAwxIY3VtdWx1c19wYWxsZXRfeGNtGHBhbGxldBBDYWxsBARUAAEABA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLskDDHBwYWxsZXRfeGNtX2JyaWRnZV9odWJfcm91dGVyGHBhbGxldBBDYWxsCARUAARJAAEEUHJlcG9ydF9icmlkZ2Vfc3RhdHVzCAEkYnJpZGdlX2lkQAEQSDI1NgABMGlzX2Nvbmdlc3RlZF0BARBib29sAAAEqE5vdGlmaWNhdGlvbiBhYm91dCBjb25nZXN0ZWQgYnJpZGdlIHF1ZXVlLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy7NAwxQcGFsbGV0X21lc3NhZ2VfcXVldWUYcGFsbGV0EENhbGwEBFQAAQgkcmVhcF9wYWdlCAE4bWVzc2FnZV9vcmlnaW7RAwFITWVzc2FnZU9yaWdpbk9mPFQ+AAEocGFnZV9pbmRleDgBJFBhZ2VJbmRleAAABD0BUmVtb3ZlIGEgcGFnZSB3aGljaCBoYXMgbm8gbW9yZSBtZXNzYWdlcyByZW1haW5pbmcgdG8gYmUgcHJvY2Vzc2VkIG9yIGlzIHN0YWxlLkhleGVjdXRlX292ZXJ3ZWlnaHQQAThtZXNzYWdlX29yaWdpbtEDAUhNZXNzYWdlT3JpZ2luT2Y8VD4AARBwYWdlOAEkUGFnZUluZGV4AAEUaW5kZXg4ARxUOjpTaXplAAEwd2VpZ2h0X2xpbWl0FQEBGFdlaWdodAABNHhFeGVjdXRlIGFuIG92ZXJ3ZWlnaHQgbWVzc2FnZS4ATQFUZW1wb3JhcnkgcHJvY2Vzc2luZyBlcnJvcnMgd2lsbCBiZSBwcm9wYWdhdGVkIHdoZXJlYXMgcGVybWFuZW50IGVycm9ycyBhcmUgdHJlYXRlZFRhcyBzdWNjZXNzIGNvbmRpdGlvbi4AdC0gYG9yaWdpbmA6IE11c3QgYmUgYFNpZ25lZGAuNQEtIGBtZXNzYWdlX29yaWdpbmA6IFRoZSBvcmlnaW4gZnJvbSB3aGljaCB0aGUgbWVzc2FnZSB0byBiZSBleGVjdXRlZCBhcnJpdmVkLj0BLSBgcGFnZWA6IFRoZSBwYWdlIGluIHRoZSBxdWV1ZSBpbiB3aGljaCB0aGUgbWVzc2FnZSB0byBiZSBleGVjdXRlZCBpcyBzaXR0aW5nLgkBLSBgaW5kZXhgOiBUaGUgaW5kZXggaW50byB0aGUgcXVldWUgb2YgdGhlIG1lc3NhZ2UgdG8gYmUgZXhlY3V0ZWQuWQEtIGB3ZWlnaHRfbGltaXRgOiBUaGUgbWF4aW11bSBhbW91bnQgb2Ygd2VpZ2h0IGFsbG93ZWQgdG8gYmUgY29uc3VtZWQgaW4gdGhlIGV4ZWN1dGlvbkQgIG9mIHRoZSBtZXNzYWdlLgD0QmVuY2htYXJrIGNvbXBsZXhpdHkgY29uc2lkZXJhdGlvbnM6IE8oaW5kZXggKyB3ZWlnaHRfbGltaXQpLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy7RAwhcY3VtdWx1c19wcmltaXRpdmVzX2NvcmVYQWdncmVnYXRlTWVzc2FnZU9yaWdpbgABDBBIZXJlAAAAGFBhcmVudAABABxTaWJsaW5nBACgARhQYXJhSWQAAgAA1QMMhHNub3dicmlkZ2VfcGFsbGV0X3N5c3RlbV9mcm9udGVuZBhwYWxsZXQQQ2FsbAQEVAABDEhzZXRfb3BlcmF0aW5nX21vZGUEARBtb2Rl2QMBNE9wZXJhdGluZ01vZGUAAAToU2V0IHRoZSBvcGVyYXRpbmcgbW9kZSBmb3IgZXhwb3J0aW5nIG1lc3NhZ2VzIHRvIEV0aGVyZXVtLjhyZWdpc3Rlcl90b2tlbgwBIGFzc2V0X2lkyQEBWEJveDxWZXJzaW9uZWRMb2NhdGlvbj4AASBtZXRhZGF0Yd0DATRBc3NldE1ldGFkYXRhAAEkZmVlX2Fzc2V0KQMBFEFzc2V0AAEcSQFJbml0aWF0ZXMgdGhlIHJlZ2lzdHJhdGlvbiBmb3IgYSBQb2xrYWRvdC1uYXRpdmUgdG9rZW4gYXMgYSB3cmFwcGVkIEVSQzIwIHRva2VuIG9uJEV0aGVyZXVtLowtIGBhc3NldF9pZGA6IExvY2F0aW9uIG9mIHRoZSBhc3NldEEBLSBgbWV0YWRhdGFgOiBNZXRhZGF0YSB0byBpbmNsdWRlIGluIHRoZSBpbnN0YW50aWF0ZWQgRVJDMjAgY29udHJhY3Qgb24gRXRoZXJldW0AXQFBbGwgb3JpZ2lucyBhcmUgYWxsb3dlZCwgaG93ZXZlciBgYXNzZXRfaWRgIG11c3QgYmUgYSBsb2NhdGlvbiBuZXN0ZWQgd2l0aGluIHRoZSBvcmlnaW5EY29uc2Vuc3VzIHN5c3RlbS4cYWRkX3RpcAgBKG1lc3NhZ2VfaWThAwEkTWVzc2FnZUlkAAEUYXNzZXQpAwEUQXNzZXQAAghFAUFkZCBhbiBhZGRpdGlvbmFsIHJlbGF5ZXIgdGlwIGZvciBhIGNvbW1pdHRlZCBtZXNzYWdlIGlkZW50aWZpZWQgYnkgYG1lc3NhZ2VfaWRgLqBUaGUgdGlwIGFzc2V0IHdpbGwgYmUgc3dhcHBlZCBmb3IgZXRoZXIuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLtkDDDxzbm93YnJpZGdlX2NvcmU4b3BlcmF0aW5nX21vZGVIQmFzaWNPcGVyYXRpbmdNb2RlAAEIGE5vcm1hbAAAABhIYWx0ZWQAAQAA3QMIPHNub3dicmlkZ2VfY29yZTRBc3NldE1ldGFkYXRhAAAMARBuYW1lnQEBwEJvdW5kZWRWZWM8dTgsIENvbnN0VTMyPE1FVEFEQVRBX0ZJRUxEX01BWF9MRU4+PgABGHN5bWJvbJ0BAcBCb3VuZGVkVmVjPHU4LCBDb25zdFUzMjxNRVRBREFUQV9GSUVMRF9NQVhfTEVOPj4AASBkZWNpbWFscwwBCHU4AADhAww8c25vd2JyaWRnZV9jb3JlGHJld2FyZCRNZXNzYWdlSWQAAQgcSW5ib3VuZAQAKAEMdTY0AAAAIE91dGJvdW5kBAAoAQx1NjQAAQAA5QMMOHBhbGxldF91dGlsaXR5GHBhbGxldBBDYWxsBARUAAEgFGJhdGNoBAEUY2FsbHPpAwF8VmVjPDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgAASHxTZW5kIGEgYmF0Y2ggb2YgZGlzcGF0Y2ggY2FsbHMuALBNYXkgYmUgY2FsbGVkIGZyb20gYW55IG9yaWdpbiBleGNlcHQgYE5vbmVgLgBdAS0gYGNhbGxzYDogVGhlIGNhbGxzIHRvIGJlIGRpc3BhdGNoZWQgZnJvbSB0aGUgc2FtZSBvcmlnaW4uIFRoZSBudW1iZXIgb2YgY2FsbCBtdXN0IG5vdDkBICBleGNlZWQgdGhlIGNvbnN0YW50OiBgYmF0Y2hlZF9jYWxsc19saW1pdGAgKGF2YWlsYWJsZSBpbiBjb25zdGFudCBtZXRhZGF0YSkuAFUBSWYgb3JpZ2luIGlzIHJvb3QgdGhlbiB0aGUgY2FsbHMgYXJlIGRpc3BhdGNoZWQgd2l0aG91dCBjaGVja2luZyBvcmlnaW4gZmlsdGVyLiAoVGhpc+xpbmNsdWRlcyBieXBhc3NpbmcgYGZyYW1lX3N5c3RlbTo6Q29uZmlnOjpCYXNlQ2FsbEZpbHRlcmApLgA0IyMgQ29tcGxleGl0edAtIE8oQykgd2hlcmUgQyBpcyB0aGUgbnVtYmVyIG9mIGNhbGxzIHRvIGJlIGJhdGNoZWQuAFUBVGhpcyB3aWxsIHJldHVybiBgT2tgIGluIGFsbCBjaXJjdW1zdGFuY2VzLiBUbyBkZXRlcm1pbmUgdGhlIHN1Y2Nlc3Mgb2YgdGhlIGJhdGNoLCBhbjEBZXZlbnQgaXMgZGVwb3NpdGVkLiBJZiBhIGNhbGwgZmFpbGVkIGFuZCB0aGUgYmF0Y2ggd2FzIGludGVycnVwdGVkLCB0aGVuIHRoZVUBYEJhdGNoSW50ZXJydXB0ZWRgIGV2ZW50IGlzIGRlcG9zaXRlZCwgYWxvbmcgd2l0aCB0aGUgbnVtYmVyIG9mIHN1Y2Nlc3NmdWwgY2FsbHMgbWFkZU0BYW5kIHRoZSBlcnJvciBvZiB0aGUgZmFpbGVkIGNhbGwuIElmIGFsbCB3ZXJlIHN1Y2Nlc3NmdWwsIHRoZW4gdGhlIGBCYXRjaENvbXBsZXRlZGBMZXZlbnQgaXMgZGVwb3NpdGVkLjRhc19kZXJpdmF0aXZlCAEUaW5kZXjtAwEMdTE2AAEQY2FsbCABfEJveDw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4AATTcU2VuZCBhIGNhbGwgdGhyb3VnaCBhbiBpbmRleGVkIHBzZXVkb255bSBvZiB0aGUgc2VuZGVyLgBVAUZpbHRlciBmcm9tIG9yaWdpbiBhcmUgcGFzc2VkIGFsb25nLiBUaGUgY2FsbCB3aWxsIGJlIGRpc3BhdGNoZWQgd2l0aCBhbiBvcmlnaW4gd2hpY2i8dXNlIHRoZSBzYW1lIGZpbHRlciBhcyB0aGUgb3JpZ2luIG9mIHRoaXMgY2FsbC4ARQFOT1RFOiBJZiB5b3UgbmVlZCB0byBlbnN1cmUgdGhhdCBhbnkgYWNjb3VudC1iYXNlZCBmaWx0ZXJpbmcgaXMgbm90IGhvbm9yZWQgKGkuZS5hAWJlY2F1c2UgeW91IGV4cGVjdCBgcHJveHlgIHRvIGhhdmUgYmVlbiB1c2VkIHByaW9yIGluIHRoZSBjYWxsIHN0YWNrIGFuZCB5b3UgZG8gbm90IHdhbnRRAXRoZSBjYWxsIHJlc3RyaWN0aW9ucyB0byBhcHBseSB0byBhbnkgc3ViLWFjY291bnRzKSwgdGhlbiB1c2UgYGFzX211bHRpX3RocmVzaG9sZF8xYHxpbiB0aGUgTXVsdGlzaWcgcGFsbGV0IGluc3RlYWQuAPROT1RFOiBQcmlvciB0byB2ZXJzaW9uICoxMiwgdGhpcyB3YXMgY2FsbGVkIGBhc19saW1pdGVkX3N1YmAuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4kYmF0Y2hfYWxsBAEUY2FsbHPpAwF8VmVjPDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgACNOxTZW5kIGEgYmF0Y2ggb2YgZGlzcGF0Y2ggY2FsbHMgYW5kIGF0b21pY2FsbHkgZXhlY3V0ZSB0aGVtLiEBVGhlIHdob2xlIHRyYW5zYWN0aW9uIHdpbGwgcm9sbGJhY2sgYW5kIGZhaWwgaWYgYW55IG9mIHRoZSBjYWxscyBmYWlsZWQuALBNYXkgYmUgY2FsbGVkIGZyb20gYW55IG9yaWdpbiBleGNlcHQgYE5vbmVgLgBdAS0gYGNhbGxzYDogVGhlIGNhbGxzIHRvIGJlIGRpc3BhdGNoZWQgZnJvbSB0aGUgc2FtZSBvcmlnaW4uIFRoZSBudW1iZXIgb2YgY2FsbCBtdXN0IG5vdDkBICBleGNlZWQgdGhlIGNvbnN0YW50OiBgYmF0Y2hlZF9jYWxsc19saW1pdGAgKGF2YWlsYWJsZSBpbiBjb25zdGFudCBtZXRhZGF0YSkuAFUBSWYgb3JpZ2luIGlzIHJvb3QgdGhlbiB0aGUgY2FsbHMgYXJlIGRpc3BhdGNoZWQgd2l0aG91dCBjaGVja2luZyBvcmlnaW4gZmlsdGVyLiAoVGhpc+xpbmNsdWRlcyBieXBhc3NpbmcgYGZyYW1lX3N5c3RlbTo6Q29uZmlnOjpCYXNlQ2FsbEZpbHRlcmApLgA0IyMgQ29tcGxleGl0edAtIE8oQykgd2hlcmUgQyBpcyB0aGUgbnVtYmVyIG9mIGNhbGxzIHRvIGJlIGJhdGNoZWQuLGRpc3BhdGNoX2FzCAEkYXNfb3JpZ2lu8QMBVEJveDxUOjpQYWxsZXRzT3JpZ2luPgABEGNhbGwgAXxCb3g8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AAMYyERpc3BhdGNoZXMgYSBmdW5jdGlvbiBjYWxsIHdpdGggYSBwcm92aWRlZCBvcmlnaW4uAMRUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfUm9vdF8uADQjIyBDb21wbGV4aXR5HC0gTygxKS4sZm9yY2VfYmF0Y2gEARRjYWxsc+kDAXxWZWM8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AAQ0fFNlbmQgYSBiYXRjaCBvZiBkaXNwYXRjaCBjYWxscy7UVW5saWtlIGBiYXRjaGAsIGl0IGFsbG93cyBlcnJvcnMgYW5kIHdvbid0IGludGVycnVwdC4AsE1heSBiZSBjYWxsZWQgZnJvbSBhbnkgb3JpZ2luIGV4Y2VwdCBgTm9uZWAuAF0BLSBgY2FsbHNgOiBUaGUgY2FsbHMgdG8gYmUgZGlzcGF0Y2hlZCBmcm9tIHRoZSBzYW1lIG9yaWdpbi4gVGhlIG51bWJlciBvZiBjYWxsIG11c3Qgbm90OQEgIGV4Y2VlZCB0aGUgY29uc3RhbnQ6IGBiYXRjaGVkX2NhbGxzX2xpbWl0YCAoYXZhaWxhYmxlIGluIGNvbnN0YW50IG1ldGFkYXRhKS4ATQFJZiBvcmlnaW4gaXMgcm9vdCB0aGVuIHRoZSBjYWxscyBhcmUgZGlzcGF0Y2ggd2l0aG91dCBjaGVja2luZyBvcmlnaW4gZmlsdGVyLiAoVGhpc+xpbmNsdWRlcyBieXBhc3NpbmcgYGZyYW1lX3N5c3RlbTo6Q29uZmlnOjpCYXNlQ2FsbEZpbHRlcmApLgA0IyMgQ29tcGxleGl0edAtIE8oQykgd2hlcmUgQyBpcyB0aGUgbnVtYmVyIG9mIGNhbGxzIHRvIGJlIGJhdGNoZWQuLHdpdGhfd2VpZ2h0CAEQY2FsbCABfEJveDw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4AARh3ZWlnaHQVAQEYV2VpZ2h0AAUYxERpc3BhdGNoIGEgZnVuY3Rpb24gY2FsbCB3aXRoIGEgc3BlY2lmaWVkIHdlaWdodC4ALQFUaGlzIGZ1bmN0aW9uIGRvZXMgbm90IGNoZWNrIHRoZSB3ZWlnaHQgb2YgdGhlIGNhbGwsIGFuZCBpbnN0ZWFkIGFsbG93cyB0aGW4Um9vdCBvcmlnaW4gdG8gc3BlY2lmeSB0aGUgd2VpZ2h0IG9mIHRoZSBjYWxsLgDEVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1Jvb3RfLhxpZl9lbHNlCAEQbWFpbiABfEJveDw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4AASBmYWxsYmFjayABfEJveDw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4ABlwVAURpc3BhdGNoIGEgZmFsbGJhY2sgY2FsbCBpbiB0aGUgZXZlbnQgdGhlIG1haW4gY2FsbCBmYWlscyB0byBleGVjdXRlLrBNYXkgYmUgY2FsbGVkIGZyb20gYW55IG9yaWdpbiBleGNlcHQgYE5vbmVgLgDkVGhpcyBmdW5jdGlvbiBmaXJzdCBhdHRlbXB0cyB0byBkaXNwYXRjaCB0aGUgYG1haW5gIGNhbGwu1ElmIHRoZSBgbWFpbmAgY2FsbCBmYWlscywgdGhlIGBmYWxsYmFja2AgaXMgYXR0ZW10ZWQuFQFpZiB0aGUgZmFsbGJhY2sgaXMgc3VjY2Vzc2Z1bGx5IGRpc3BhdGNoZWQsIHRoZSB3ZWlnaHRzIG9mIGJvdGggY2FsbHMlAWFyZSBhY2N1bXVsYXRlZCBhbmQgYW4gZXZlbnQgY29udGFpbmluZyB0aGUgbWFpbiBjYWxsIGVycm9yIGlzIGRlcG9zaXRlZC4A3EluIHRoZSBldmVudCBvZiBhIGZhbGxiYWNrIGZhaWx1cmUgdGhlIHdob2xlIGNhbGwgZmFpbHNod2l0aCB0aGUgd2VpZ2h0cyByZXR1cm5lZC4AQQEtIGBtYWluYDogVGhlIG1haW4gY2FsbCB0byBiZSBkaXNwYXRjaGVkLiBUaGlzIGlzIHRoZSBwcmltYXJ5IGFjdGlvbiB0byBleGVjdXRlLj0BLSBgZmFsbGJhY2tgOiBUaGUgZmFsbGJhY2sgY2FsbCB0byBiZSBkaXNwYXRjaGVkIGluIGNhc2UgdGhlIGBtYWluYCBjYWxsIGZhaWxzLgBEIyMgRGlzcGF0Y2ggTG9naWNBAS0gSWYgdGhlIG9yaWdpbiBpcyBgcm9vdGAsIGJvdGggdGhlIG1haW4gYW5kIGZhbGxiYWNrIGNhbGxzIGFyZSBleGVjdXRlZCB3aXRob3V0eCAgYXBwbHlpbmcgYW55IG9yaWdpbiBmaWx0ZXJzLkkBLSBJZiB0aGUgb3JpZ2luIGlzIG5vdCBgcm9vdGAsIHRoZSBvcmlnaW4gZmlsdGVyIGlzIGFwcGxpZWQgdG8gYm90aCB0aGUgYG1haW5gIGFuZEwgIGBmYWxsYmFja2AgY2FsbHMuACwjIyBVc2UgQ2FzZVkBLSBTb21lIHVzZSBjYXNlcyBtaWdodCBpbnZvbHZlIHN1Ym1pdHRpbmcgYSBgYmF0Y2hgIHR5cGUgY2FsbCBpbiBlaXRoZXIgbWFpbiwgZmFsbGJhY2soICBvciBib3RoLlBkaXNwYXRjaF9hc19mYWxsaWJsZQgBJGFzX29yaWdpbvEDAVRCb3g8VDo6UGFsbGV0c09yaWdpbj4AARBjYWxsIAF8Qm94PDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgAHFMhEaXNwYXRjaGVzIGEgZnVuY3Rpb24gY2FsbCB3aXRoIGEgcHJvdmlkZWQgb3JpZ2luLgBRAUFsbW9zdCB0aGUgc2FtZSBhcyBbYFBhbGxldDo6ZGlzcGF0Y2hfYXNgXSBidXQgZm9yd2FyZHMgYW55IGVycm9yIG9mIHRoZSBpbm5lciBjYWxsLgDEVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1Jvb3RfLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy7pAwAAAiAA7QMAAAUEAPEDCFxhc3NldF9odWJfcGFzZW9fcnVudGltZTBPcmlnaW5DYWxsZXIAASAYc3lzdGVtBAD1AwF0ZnJhbWVfc3lzdGVtOjpPcmlnaW48UnVudGltZT4AAAAsUG9sa2Fkb3RYY20EAPkDAUhwYWxsZXRfeGNtOjpPcmlnaW4AHwAoQ3VtdWx1c1hjbQQA/QMBaGN1bXVsdXNfcGFsbGV0X3hjbTo6T3JpZ2luACAAHE9yaWdpbnMEAAEEAXRwYWxsZXRfY3VzdG9tX29yaWdpbnM6Ok9yaWdpbgA/ADRBbGlhc0FjY291bnRzBAAFBAGMaW5kaXZfcGFsbGV0X2FsaWFzX2FjY291bnRzOjpPcmlnaW4AYgAQUGdhcwQAEQQBZGluZGl2X3BhbGxldF9wZ2FzOjpPcmlnaW4AYwAYUmV2aXZlBAAdBAF4cGFsbGV0X3Jldml2ZTo6T3JpZ2luPFJ1bnRpbWU+AGQAMERvdG5zR2F0ZXdheQQAJQQBiGluZGl2X3BhbGxldF9kb3Ruc19nYXRld2F5OjpPcmlnaW4AmAAA9QMMNGZyYW1lX3N1cHBvcnQgZGlzcGF0Y2gkUmF3T3JpZ2luBCRBY2NvdW50SWQBBAEQEFJvb3QAAAAYU2lnbmVkBAAEASRBY2NvdW50SWQAAQAQTm9uZQACAChBdXRob3JpemVkAAMAAPkDDChwYWxsZXRfeGNtGHBhbGxldBhPcmlnaW4AAQgMWGNtBAAdAgEgTG9jYXRpb24AAAAgUmVzcG9uc2UEAB0CASBMb2NhdGlvbgABAAD9AwxIY3VtdWx1c19wYWxsZXRfeGNtGHBhbGxldBhPcmlnaW4AAQgUUmVsYXkAAABAU2libGluZ1BhcmFjaGFpbgQAoAEYUGFyYUlkAAEAAAEEFFxhc3NldF9odWJfcGFzZW9fcnVudGltZShnb3Zlcm5hbmNlHG9yaWdpbnNUcGFsbGV0X2N1c3RvbV9vcmlnaW5zGE9yaWdpbgABPDBTdGFraW5nQWRtaW4AAAAkVHJlYXN1cmVyAAEAPEZlbGxvd3NoaXBBZG1pbgACADBHZW5lcmFsQWRtaW4AAwAwQXVjdGlvbkFkbWluAAQAKExlYXNlQWRtaW4ABQBMUmVmZXJlbmR1bUNhbmNlbGxlcgAGAEBSZWZlcmVuZHVtS2lsbGVyAAcALFNtYWxsVGlwcGVyAAgAJEJpZ1RpcHBlcgAJADBTbWFsbFNwZW5kZXIACgA0TWVkaXVtU3BlbmRlcgALAChCaWdTcGVuZGVyAAwARFdoaXRlbGlzdGVkQ2FsbGVyAA0ANFdpc2hGb3JDaGFuZ2UADgAABQQMbGluZGl2X3BhbGxldF9hbGlhc19hY2NvdW50cxhwYWxsZXQYT3JpZ2luAAEEJFJpbmdBbGlhcwQACQQBQEFsaWFzQWNjb3VudEluZm8AAAAACQQMbGluZGl2X3BhbGxldF9hbGlhc19hY2NvdW50cxR0eXBlc0BBbGlhc0FjY291bnRJbmZvAAAQAShjb2xsZWN0aW9uCAEoSWRlbnRpZmllcgABIHJldmlzaW9uOAE0UmV2aXNpb25JbmRleAABEHJpbmc4ASRSaW5nSW5kZXgAAQhjYQ0EATxDb250ZXh0dWFsQWxpYXMAAA0EEDRpbmRpdl9zdXBwb3J0GHRyYWl0cxxyZWFsaXR5PENvbnRleHR1YWxBbGlhcwAACAEUYWxpYXMIARRBbGlhcwABHGNvbnRleHQIARxDb250ZXh0AAARBAxEaW5kaXZfcGFsbGV0X3BnYXMYcGFsbGV0GE9yaWdpbgABBChDbGFpbUFsaWFzDAEUYWxpYXMIARRBbGlhcwABDGRheRUEAQxEYXkAAShjb2xsZWN0aW9uGQQBOFBnYXNDb2xsZWN0aW9uAAAAABUEDDRpbmRpdl9zdXBwb3J0FHV0aWxzMEJpZ0VuZGlhblUzMgADBAAAAAwEGQFBIHUzMiBlbmNvZGVkIGluIGJpZy1lbmRpYW4gZm9ybWF0IGZvciBjb3JyZWN0IGxleGljb2dyYXBoaWMgb3JkZXJpbmcuGQQMRGluZGl2X3BhbGxldF9wZ2FzJGV4dGVuc2lvbjhQZ2FzQ29sbGVjdGlvbgABCBhQZW9wbGUAAAAoTGl0ZVBlb3BsZQABAAAdBAw0cGFsbGV0X3Jldml2ZRhwYWxsZXQYT3JpZ2luBARUASEEAQQ4RXRoVHJhbnNhY3Rpb24EAAQBMFQ6OkFjY291bnRJZAAAAAAhBAhcYXNzZXRfaHViX3Bhc2VvX3J1bnRpbWUcUnVudGltZQAAAAAlBAxoaW5kaXZfcGFsbGV0X2RvdG5zX2dhdGV3YXkYcGFsbGV0GE9yaWdpbgABBEhQZXJzb25SZWdpc3RyYXRpb24EAAgBFEFsaWFzAAAAACkEDDxwYWxsZXRfbXVsdGlzaWcYcGFsbGV0EENhbGwEBFQAARRQYXNfbXVsdGlfdGhyZXNob2xkXzEIAURvdGhlcl9zaWduYXRvcmllc2EBAURWZWM8VDo6QWNjb3VudElkPgABEGNhbGwgAXxCb3g8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AAAwUQFJbW1lZGlhdGVseSBkaXNwYXRjaCBhIG11bHRpLXNpZ25hdHVyZSBjYWxsIHVzaW5nIGEgc2luZ2xlIGFwcHJvdmFsIGZyb20gdGhlIGNhbGxlci4AzFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLgA9AS0gYG90aGVyX3NpZ25hdG9yaWVzYDogVGhlIGFjY291bnRzIChvdGhlciB0aGFuIHRoZSBzZW5kZXIpIHdobyBhcmUgcGFydCBvZiB0aGUBAW11bHRpLXNpZ25hdHVyZSwgYnV0IGRvIG5vdCBwYXJ0aWNpcGF0ZSBpbiB0aGUgYXBwcm92YWwgcHJvY2Vzcy6ILSBgY2FsbGA6IFRoZSBjYWxsIHRvIGJlIGV4ZWN1dGVkLgC4UmVzdWx0IGlzIGVxdWl2YWxlbnQgdG8gdGhlIGRpc3BhdGNoZWQgcmVzdWx0LgA0IyMgQ29tcGxleGl0eRkBTyhaICsgQykgd2hlcmUgWiBpcyB0aGUgbGVuZ3RoIG9mIHRoZSBjYWxsIGFuZCBDIGl0cyBleGVjdXRpb24gd2VpZ2h0LiBhc19tdWx0aRQBJHRocmVzaG9sZO0DAQx1MTYAAURvdGhlcl9zaWduYXRvcmllc2EBAURWZWM8VDo6QWNjb3VudElkPgABPG1heWJlX3RpbWVwb2ludC0EAZBPcHRpb248VGltZXBvaW50PEJsb2NrTnVtYmVyRm9yPFQ+Pj4AARBjYWxsIAF8Qm94PDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgABKG1heF93ZWlnaHQVAQEYV2VpZ2h0AAGoVQFSZWdpc3RlciBhcHByb3ZhbCBmb3IgYSBkaXNwYXRjaCB0byBiZSBtYWRlIGZyb20gYSBkZXRlcm1pbmlzdGljIGNvbXBvc2l0ZSBhY2NvdW50IGlm+GFwcHJvdmVkIGJ5IGEgdG90YWwgb2YgYHRocmVzaG9sZCAtIDFgIG9mIGBvdGhlcl9zaWduYXRvcmllc2AuAD0BKipJZiB0aGUgYXBwcm92YWwgdGhyZXNob2xkIGlzIG1ldCAoaW5jbHVkaW5nIHRoZSBzZW5kZXIncyBhcHByb3ZhbCksIHRoaXMgd2lsbEUBaW1tZWRpYXRlbHkgZXhlY3V0ZSB0aGUgY2FsbC4qKiBUaGlzIGlzIHRoZSBvbmx5IHdheSB0byBleGVjdXRlIGEgbXVsdGlzaWcgY2FsbCAtwGBhcHByb3ZlX2FzX211bHRpYCB3aWxsIG5ldmVyIHRyaWdnZXIgZXhlY3V0aW9uLgAtAVBheW1lbnQ6IGBEZXBvc2l0QmFzZWAgd2lsbCBiZSByZXNlcnZlZCBpZiB0aGlzIGlzIHRoZSBmaXJzdCBhcHByb3ZhbCwgcGx1cz0BYHRocmVzaG9sZGAgdGltZXMgYERlcG9zaXRGYWN0b3JgLiBJdCBpcyByZXR1cm5lZCBvbmNlIHRoaXMgZGlzcGF0Y2ggaGFwcGVucyBvcjRpcyBjYW5jZWxsZWQuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4AVQEtIGB0aHJlc2hvbGRgOiBUaGUgdG90YWwgbnVtYmVyIG9mIGFwcHJvdmFscyBmb3IgdGhpcyBkaXNwYXRjaCBiZWZvcmUgaXQgaXMgZXhlY3V0ZWQuQQEtIGBvdGhlcl9zaWduYXRvcmllc2A6IFRoZSBhY2NvdW50cyAob3RoZXIgdGhhbiB0aGUgc2VuZGVyKSB3aG8gY2FuIGFwcHJvdmUgdGhpc2xkaXNwYXRjaC4gTWF5IG5vdCBiZSBlbXB0eS5ZAS0gYG1heWJlX3RpbWVwb2ludGA6IElmIHRoaXMgaXMgdGhlIGZpcnN0IGFwcHJvdmFsLCB0aGVuIHRoaXMgbXVzdCBiZSBgTm9uZWAuIElmIGl0IGlzUQFub3QgdGhlIGZpcnN0IGFwcHJvdmFsLCB0aGVuIGl0IG11c3QgYmUgYFNvbWVgLCB3aXRoIHRoZSB0aW1lcG9pbnQgKGJsb2NrIG51bWJlciBhbmTUdHJhbnNhY3Rpb24gaW5kZXgpIG9mIHRoZSBmaXJzdCBhcHByb3ZhbCB0cmFuc2FjdGlvbi6ILSBgY2FsbGA6IFRoZSBjYWxsIHRvIGJlIGV4ZWN1dGVkLgBNAU5PVEU6IEZvciBpbnRlcm1lZGlhdGUgYXBwcm92YWxzIChub3QgdGhlIGZpbmFsIGFwcHJvdmFsKSwgeW91IHNob3VsZCBnZW5lcmFsbHkgdXNlRQFgYXBwcm92ZV9hc19tdWx0aWAgaW5zdGVhZCwgc2luY2UgaXQgb25seSByZXF1aXJlcyBhIGhhc2ggb2YgdGhlIGNhbGwgYW5kIGlzIG1vcmUoZWZmaWNpZW50LgBZAVJlc3VsdCBpcyBlcXVpdmFsZW50IHRvIHRoZSBkaXNwYXRjaGVkIHJlc3VsdCBpZiBgdGhyZXNob2xkYCBpcyBleGFjdGx5IGAxYC4gT3RoZXJ3aXNlVQFvbiBzdWNjZXNzLCByZXN1bHQgaXMgYE9rYCBhbmQgdGhlIHJlc3VsdCBmcm9tIHRoZSBpbnRlcmlvciBjYWxsLCBpZiBpdCB3YXMgZXhlY3V0ZWQs3G1heSBiZSBmb3VuZCBpbiB0aGUgZGVwb3NpdGVkIGBNdWx0aXNpZ0V4ZWN1dGVkYCBldmVudC4ANCMjIENvbXBsZXhpdHlQLSBgTyhTICsgWiArIENhbGwpYC7MLSBVcCB0byBvbmUgYmFsYW5jZS1yZXNlcnZlIG9yIHVucmVzZXJ2ZSBvcGVyYXRpb24uPQEtIE9uZSBwYXNzdGhyb3VnaCBvcGVyYXRpb24sIG9uZSBpbnNlcnQsIGJvdGggYE8oUylgIHdoZXJlIGBTYCBpcyB0aGUgbnVtYmVyIG9mRQEgIHNpZ25hdG9yaWVzLiBgU2AgaXMgY2FwcGVkIGJ5IGBNYXhTaWduYXRvcmllc2AsIHdpdGggd2VpZ2h0IGJlaW5nIHByb3BvcnRpb25hbC4hAS0gT25lIGNhbGwgZW5jb2RlICYgaGFzaCwgYm90aCBvZiBjb21wbGV4aXR5IGBPKFopYCB3aGVyZSBgWmAgaXMgdHgtbGVuLrwtIE9uZSBlbmNvZGUgJiBoYXNoLCBib3RoIG9mIGNvbXBsZXhpdHkgYE8oUylgLtQtIFVwIHRvIG9uZSBiaW5hcnkgc2VhcmNoIGFuZCBpbnNlcnQgKGBPKGxvZ1MgKyBTKWApLvgtIEkvTzogMSByZWFkIGBPKFMpYCwgdXAgdG8gMSBtdXRhdGUgYE8oUylgLiBVcCB0byBvbmUgcmVtb3ZlLjAtIE9uZSBldmVudC5sLSBUaGUgd2VpZ2h0IG9mIHRoZSBgY2FsbGAuTQEtIFN0b3JhZ2U6IGluc2VydHMgb25lIGl0ZW0sIHZhbHVlIHNpemUgYm91bmRlZCBieSBgTWF4U2lnbmF0b3JpZXNgLCB3aXRoIGEgZGVwb3NpdBkBICB0YWtlbiBmb3IgaXRzIGxpZmV0aW1lIG9mIGBEZXBvc2l0QmFzZSArIHRocmVzaG9sZCAqIERlcG9zaXRGYWN0b3JgLkBhcHByb3ZlX2FzX211bHRpFAEkdGhyZXNob2xk7QMBDHUxNgABRG90aGVyX3NpZ25hdG9yaWVzYQEBRFZlYzxUOjpBY2NvdW50SWQ+AAE8bWF5YmVfdGltZXBvaW50LQQBkE9wdGlvbjxUaW1lcG9pbnQ8QmxvY2tOdW1iZXJGb3I8VD4+PgABJGNhbGxfaGFzaAgBIFt1ODsgMzJdAAEobWF4X3dlaWdodBUBARhXZWlnaHQAAphVAVJlZ2lzdGVyIGFwcHJvdmFsIGZvciBhIGRpc3BhdGNoIHRvIGJlIG1hZGUgZnJvbSBhIGRldGVybWluaXN0aWMgY29tcG9zaXRlIGFjY291bnQgaWb4YXBwcm92ZWQgYnkgYSB0b3RhbCBvZiBgdGhyZXNob2xkIC0gMWAgb2YgYG90aGVyX3NpZ25hdG9yaWVzYC4AOQEqKlRoaXMgZnVuY3Rpb24gd2lsbCBORVZFUiBleGVjdXRlIHRoZSBjYWxsLCBldmVuIGlmIHRoZSBhcHByb3ZhbCB0aHJlc2hvbGQgaXNRAXJlYWNoZWQuKiogSXQgb25seSByZWdpc3RlcnMgYXBwcm92YWwuIFRvIGFjdHVhbGx5IGV4ZWN1dGUgdGhlIGNhbGwsIGBhc19tdWx0aWAgbXVzdPBiZSBjYWxsZWQgd2l0aCB0aGUgZnVsbCBjYWxsIGRhdGEgYnkgYW55IG9mIHRoZSBzaWduYXRvcmllcy4ATQFUaGlzIGZ1bmN0aW9uIGlzIG1vcmUgZWZmaWNpZW50IHRoYW4gYGFzX211bHRpYCBmb3IgaW50ZXJtZWRpYXRlIGFwcHJvdmFscyBzaW5jZSBpdNBvbmx5IHJlcXVpcmVzIHRoZSBjYWxsIGhhc2gsIG5vdCB0aGUgZnVsbCBjYWxsIGRhdGEuAC0BUGF5bWVudDogYERlcG9zaXRCYXNlYCB3aWxsIGJlIHJlc2VydmVkIGlmIHRoaXMgaXMgdGhlIGZpcnN0IGFwcHJvdmFsLCBwbHVzPQFgdGhyZXNob2xkYCB0aW1lcyBgRGVwb3NpdEZhY3RvcmAuIEl0IGlzIHJldHVybmVkIG9uY2UgdGhpcyBkaXNwYXRjaCBoYXBwZW5zIG9yNGlzIGNhbmNlbGxlZC4AzFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLgBVAS0gYHRocmVzaG9sZGA6IFRoZSB0b3RhbCBudW1iZXIgb2YgYXBwcm92YWxzIGZvciB0aGlzIGRpc3BhdGNoIGJlZm9yZSBpdCBpcyBleGVjdXRlZC5BAS0gYG90aGVyX3NpZ25hdG9yaWVzYDogVGhlIGFjY291bnRzIChvdGhlciB0aGFuIHRoZSBzZW5kZXIpIHdobyBjYW4gYXBwcm92ZSB0aGlzbGRpc3BhdGNoLiBNYXkgbm90IGJlIGVtcHR5LlkBLSBgbWF5YmVfdGltZXBvaW50YDogSWYgdGhpcyBpcyB0aGUgZmlyc3QgYXBwcm92YWwsIHRoZW4gdGhpcyBtdXN0IGJlIGBOb25lYC4gSWYgaXQgaXNRAW5vdCB0aGUgZmlyc3QgYXBwcm92YWwsIHRoZW4gaXQgbXVzdCBiZSBgU29tZWAsIHdpdGggdGhlIHRpbWVwb2ludCAoYmxvY2sgbnVtYmVyIGFuZNR0cmFuc2FjdGlvbiBpbmRleCkgb2YgdGhlIGZpcnN0IGFwcHJvdmFsIHRyYW5zYWN0aW9uLswtIGBjYWxsX2hhc2hgOiBUaGUgaGFzaCBvZiB0aGUgY2FsbCB0byBiZSBleGVjdXRlZC4APQFOT1RFOiBUbyBleGVjdXRlIHRoZSBjYWxsIGFmdGVyIGFwcHJvdmFscyBhcmUgZ2F0aGVyZWQsIGFueSBzaWduYXRvcnkgbXVzdCBjYWxsKQFgYXNfbXVsdGlgIHdpdGggdGhlIGZ1bGwgY2FsbCBkYXRhLiBUaGlzIGZ1bmN0aW9uIGNhbm5vdCBleGVjdXRlIHRoZSBjYWxsLgA0IyMgQ29tcGxleGl0eSQtIGBPKFMpYC7MLSBVcCB0byBvbmUgYmFsYW5jZS1yZXNlcnZlIG9yIHVucmVzZXJ2ZSBvcGVyYXRpb24uPQEtIE9uZSBwYXNzdGhyb3VnaCBvcGVyYXRpb24sIG9uZSBpbnNlcnQsIGJvdGggYE8oUylgIHdoZXJlIGBTYCBpcyB0aGUgbnVtYmVyIG9mRQEgIHNpZ25hdG9yaWVzLiBgU2AgaXMgY2FwcGVkIGJ5IGBNYXhTaWduYXRvcmllc2AsIHdpdGggd2VpZ2h0IGJlaW5nIHByb3BvcnRpb25hbC68LSBPbmUgZW5jb2RlICYgaGFzaCwgYm90aCBvZiBjb21wbGV4aXR5IGBPKFMpYC7ULSBVcCB0byBvbmUgYmluYXJ5IHNlYXJjaCBhbmQgaW5zZXJ0IChgTyhsb2dTICsgUylgKS74LSBJL086IDEgcmVhZCBgTyhTKWAsIHVwIHRvIDEgbXV0YXRlIGBPKFMpYC4gVXAgdG8gb25lIHJlbW92ZS4wLSBPbmUgZXZlbnQuTQEtIFN0b3JhZ2U6IGluc2VydHMgb25lIGl0ZW0sIHZhbHVlIHNpemUgYm91bmRlZCBieSBgTWF4U2lnbmF0b3JpZXNgLCB3aXRoIGEgZGVwb3NpdBkBICB0YWtlbiBmb3IgaXRzIGxpZmV0aW1lIG9mIGBEZXBvc2l0QmFzZSArIHRocmVzaG9sZCAqIERlcG9zaXRGYWN0b3JgLjxjYW5jZWxfYXNfbXVsdGkQASR0aHJlc2hvbGTtAwEMdTE2AAFEb3RoZXJfc2lnbmF0b3JpZXNhAQFEVmVjPFQ6OkFjY291bnRJZD4AASR0aW1lcG9pbnQxBAFwVGltZXBvaW50PEJsb2NrTnVtYmVyRm9yPFQ+PgABJGNhbGxfaGFzaAgBIFt1ODsgMzJdAANUVQFDYW5jZWwgYSBwcmUtZXhpc3RpbmcsIG9uLWdvaW5nIG11bHRpc2lnIHRyYW5zYWN0aW9uLiBBbnkgZGVwb3NpdCByZXNlcnZlZCBwcmV2aW91c2x5xGZvciB0aGlzIG9wZXJhdGlvbiB3aWxsIGJlIHVucmVzZXJ2ZWQgb24gc3VjY2Vzcy4AzFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLgBVAS0gYHRocmVzaG9sZGA6IFRoZSB0b3RhbCBudW1iZXIgb2YgYXBwcm92YWxzIGZvciB0aGlzIGRpc3BhdGNoIGJlZm9yZSBpdCBpcyBleGVjdXRlZC5BAS0gYG90aGVyX3NpZ25hdG9yaWVzYDogVGhlIGFjY291bnRzIChvdGhlciB0aGFuIHRoZSBzZW5kZXIpIHdobyBjYW4gYXBwcm92ZSB0aGlzbGRpc3BhdGNoLiBNYXkgbm90IGJlIGVtcHR5Ll0BLSBgdGltZXBvaW50YDogVGhlIHRpbWVwb2ludCAoYmxvY2sgbnVtYmVyIGFuZCB0cmFuc2FjdGlvbiBpbmRleCkgb2YgdGhlIGZpcnN0IGFwcHJvdmFseHRyYW5zYWN0aW9uIGZvciB0aGlzIGRpc3BhdGNoLswtIGBjYWxsX2hhc2hgOiBUaGUgaGFzaCBvZiB0aGUgY2FsbCB0byBiZSBleGVjdXRlZC4ANCMjIENvbXBsZXhpdHkkLSBgTyhTKWAuzC0gVXAgdG8gb25lIGJhbGFuY2UtcmVzZXJ2ZSBvciB1bnJlc2VydmUgb3BlcmF0aW9uLj0BLSBPbmUgcGFzc3Rocm91Z2ggb3BlcmF0aW9uLCBvbmUgaW5zZXJ0LCBib3RoIGBPKFMpYCB3aGVyZSBgU2AgaXMgdGhlIG51bWJlciBvZkUBICBzaWduYXRvcmllcy4gYFNgIGlzIGNhcHBlZCBieSBgTWF4U2lnbmF0b3JpZXNgLCB3aXRoIHdlaWdodCBiZWluZyBwcm9wb3J0aW9uYWwuvC0gT25lIGVuY29kZSAmIGhhc2gsIGJvdGggb2YgY29tcGxleGl0eSBgTyhTKWAuMC0gT25lIGV2ZW50LoQtIEkvTzogMSByZWFkIGBPKFMpYCwgb25lIHJlbW92ZS5wLSBTdG9yYWdlOiByZW1vdmVzIG9uZSBpdGVtLjBwb2tlX2RlcG9zaXQMASR0aHJlc2hvbGTtAwEMdTE2AAFEb3RoZXJfc2lnbmF0b3JpZXNhAQFEVmVjPFQ6OkFjY291bnRJZD4AASRjYWxsX2hhc2gIASBbdTg7IDMyXQAENPRQb2tlIHRoZSBkZXBvc2l0IHJlc2VydmVkIGZvciBhbiBleGlzdGluZyBtdWx0aXNpZyBvcGVyYXRpb24uAGEBVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8gYW5kIG11c3QgYmUgdGhlIG9yaWdpbmFsIGRlcG9zaXRvciBvZlx0aGUgbXVsdGlzaWcgb3BlcmF0aW9uLgABAVRoZSB0cmFuc2FjdGlvbiBmZWUgaXMgd2FpdmVkIGlmIHRoZSBkZXBvc2l0IGFtb3VudCBoYXMgY2hhbmdlZC4AGQEtIGB0aHJlc2hvbGRgOiBUaGUgdG90YWwgbnVtYmVyIG9mIGFwcHJvdmFscyBuZWVkZWQgZm9yIHRoaXMgbXVsdGlzaWcuPQEtIGBvdGhlcl9zaWduYXRvcmllc2A6IFRoZSBhY2NvdW50cyAob3RoZXIgdGhhbiB0aGUgc2VuZGVyKSB3aG8gYXJlIHBhcnQgb2YgdGhlLCAgbXVsdGlzaWcuBQEtIGBjYWxsX2hhc2hgOiBUaGUgaGFzaCBvZiB0aGUgY2FsbCB0aGlzIGRlcG9zaXQgaXMgcmVzZXJ2ZWQgZm9yLgCMRW1pdHMgYERlcG9zaXRQb2tlZGAgaWYgc3VjY2Vzc2Z1bC4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuLQQEGE9wdGlvbgQEVAExBAEIEE5vbmUAAAAQU29tZQQAMQQAAAEAADEECDxwYWxsZXRfbXVsdGlzaWckVGltZXBvaW50BCxCbG9ja051bWJlcgE4AAgBGGhlaWdodDgBLEJsb2NrTnVtYmVyAAEUaW5kZXg4AQx1MzIAADUEDDBwYWxsZXRfcHJveHkYcGFsbGV0EENhbGwEBFQAASwUcHJveHkMARByZWFsAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AAUBmb3JjZV9wcm94eV90eXBlOQQBUE9wdGlvbjxUOjpQcm94eVR5cGU+AAEQY2FsbCABfEJveDw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4AACRNAURpc3BhdGNoIHRoZSBnaXZlbiBgY2FsbGAgZnJvbSBhbiBhY2NvdW50IHRoYXQgdGhlIHNlbmRlciBpcyBhdXRob3Jpc2VkIGZvciB0aHJvdWdoMGBhZGRfcHJveHlgLgDMVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uACxQYXJhbWV0ZXJzOg0BLSBgcmVhbGA6IFRoZSBhY2NvdW50IHRoYXQgdGhlIHByb3h5IHdpbGwgbWFrZSBhIGNhbGwgb24gYmVoYWxmIG9mLmEBLSBgZm9yY2VfcHJveHlfdHlwZWA6IFNwZWNpZnkgdGhlIGV4YWN0IHByb3h5IHR5cGUgdG8gYmUgdXNlZCBhbmQgY2hlY2tlZCBmb3IgdGhpcyBjYWxsLtAtIGBjYWxsYDogVGhlIGNhbGwgdG8gYmUgbWFkZSBieSB0aGUgYHJlYWxgIGFjY291bnQuJGFkZF9wcm94eQwBIGRlbGVnYXRlAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AAShwcm94eV90eXBlPQQBMFQ6OlByb3h5VHlwZQABFGRlbGF5OAFEQmxvY2tOdW1iZXJGb3I8VD4AASRFAVJlZ2lzdGVyIGEgcHJveHkgYWNjb3VudCBmb3IgdGhlIHNlbmRlciB0aGF0IGlzIGFibGUgdG8gbWFrZSBjYWxscyBvbiBpdHMgYmVoYWxmLgDMVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uACxQYXJhbWV0ZXJzOhEBLSBgcHJveHlgOiBUaGUgYWNjb3VudCB0aGF0IHRoZSBgY2FsbGVyYCB3b3VsZCBsaWtlIHRvIG1ha2UgYSBwcm94eS78LSBgcHJveHlfdHlwZWA6IFRoZSBwZXJtaXNzaW9ucyBhbGxvd2VkIGZvciB0aGlzIHByb3h5IGFjY291bnQuTQEtIGBkZWxheWA6IFRoZSBhbm5vdW5jZW1lbnQgcGVyaW9kIHJlcXVpcmVkIG9mIHRoZSBpbml0aWFsIHByb3h5LiBXaWxsIGdlbmVyYWxseSBiZRR6ZXJvLjByZW1vdmVfcHJveHkMASBkZWxlZ2F0ZQABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEocHJveHlfdHlwZT0EATBUOjpQcm94eVR5cGUAARRkZWxheTgBREJsb2NrTnVtYmVyRm9yPFQ+AAIcqFVucmVnaXN0ZXIgYSBwcm94eSBhY2NvdW50IGZvciB0aGUgc2VuZGVyLgDMVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uACxQYXJhbWV0ZXJzOiUBLSBgcHJveHlgOiBUaGUgYWNjb3VudCB0aGF0IHRoZSBgY2FsbGVyYCB3b3VsZCBsaWtlIHRvIHJlbW92ZSBhcyBhIHByb3h5LkEBLSBgcHJveHlfdHlwZWA6IFRoZSBwZXJtaXNzaW9ucyBjdXJyZW50bHkgZW5hYmxlZCBmb3IgdGhlIHJlbW92ZWQgcHJveHkgYWNjb3VudC44cmVtb3ZlX3Byb3hpZXMAAxi0VW5yZWdpc3RlciBhbGwgcHJveHkgYWNjb3VudHMgZm9yIHRoZSBzZW5kZXIuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4AXQFXQVJOSU5HOiBUaGlzIG1heSBiZSBjYWxsZWQgb24gYWNjb3VudHMgY3JlYXRlZCBieSBgY3JlYXRlX3B1cmVgLCBob3dldmVyIGlmIGRvbmUsIHRoZW5ZAXRoZSB1bnJlc2VydmVkIGZlZXMgd2lsbCBiZSBpbmFjY2Vzc2libGUuICoqQWxsIGFjY2VzcyB0byB0aGlzIGFjY291bnQgd2lsbCBiZSBsb3N0LioqLGNyZWF0ZV9wdXJlDAEocHJveHlfdHlwZT0EATBUOjpQcm94eVR5cGUAARRkZWxheTgBREJsb2NrTnVtYmVyRm9yPFQ+AAEUaW5kZXjtAwEMdTE2AARIOQFTcGF3biBhIGZyZXNoIG5ldyBhY2NvdW50IHRoYXQgaXMgZ3VhcmFudGVlZCB0byBiZSBvdGhlcndpc2UgaW5hY2Nlc3NpYmxlLCBhbmT8aW5pdGlhbGl6ZSBpdCB3aXRoIGEgcHJveHkgb2YgYHByb3h5X3R5cGVgIGZvciBgb3JpZ2luYCBzZW5kZXIuAGxSZXF1aXJlcyBhIGBTaWduZWRgIG9yaWdpbi4AUQEtIGBwcm94eV90eXBlYDogVGhlIHR5cGUgb2YgdGhlIHByb3h5IHRoYXQgdGhlIHNlbmRlciB3aWxsIGJlIHJlZ2lzdGVyZWQgYXMgb3ZlciB0aGVNAW5ldyBhY2NvdW50LiBUaGlzIHdpbGwgYWxtb3N0IGFsd2F5cyBiZSB0aGUgbW9zdCBwZXJtaXNzaXZlIGBQcm94eVR5cGVgIHBvc3NpYmxlIHRveGFsbG93IGZvciBtYXhpbXVtIGZsZXhpYmlsaXR5LlEBLSBgaW5kZXhgOiBBIGRpc2FtYmlndWF0aW9uIGluZGV4LCBpbiBjYXNlIHRoaXMgaXMgY2FsbGVkIG11bHRpcGxlIHRpbWVzIGluIHRoZSBzYW1lXQF0cmFuc2FjdGlvbiAoZS5nLiB3aXRoIGB1dGlsaXR5OjpiYXRjaGApLiBVbmxlc3MgeW91J3JlIHVzaW5nIGBiYXRjaGAgeW91IHByb2JhYmx5IGp1c3RAd2FudCB0byB1c2UgYDBgLk0BLSBgZGVsYXlgOiBUaGUgYW5ub3VuY2VtZW50IHBlcmlvZCByZXF1aXJlZCBvZiB0aGUgaW5pdGlhbCBwcm94eS4gV2lsbCBnZW5lcmFsbHkgYmUUemVyby4AUQFGYWlscyB3aXRoIGBEdXBsaWNhdGVgIGlmIHRoaXMgaGFzIGFscmVhZHkgYmVlbiBjYWxsZWQgaW4gdGhpcyB0cmFuc2FjdGlvbiwgZnJvbSB0aGWYc2FtZSBzZW5kZXIsIHdpdGggdGhlIHNhbWUgcGFyYW1ldGVycy4A5EZhaWxzIGlmIHRoZXJlIGFyZSBpbnN1ZmZpY2llbnQgZnVuZHMgdG8gcGF5IGZvciBkZXBvc2l0LiRraWxsX3B1cmUUARxzcGF3bmVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AAShwcm94eV90eXBlPQQBMFQ6OlByb3h5VHlwZQABFGluZGV47QMBDHUxNgABGGhlaWdodGQBREJsb2NrTnVtYmVyRm9yPFQ+AAEkZXh0X2luZGV4ZAEMdTMyAAVAoFJlbW92ZXMgYSBwcmV2aW91c2x5IHNwYXduZWQgcHVyZSBwcm94eS4ASQFXQVJOSU5HOiAqKkFsbCBhY2Nlc3MgdG8gdGhpcyBhY2NvdW50IHdpbGwgYmUgbG9zdC4qKiBBbnkgZnVuZHMgaGVsZCBpbiBpdCB3aWxsIGJlNGluYWNjZXNzaWJsZS4AWQFSZXF1aXJlcyBhIGBTaWduZWRgIG9yaWdpbiwgYW5kIHRoZSBzZW5kZXIgYWNjb3VudCBtdXN0IGhhdmUgYmVlbiBjcmVhdGVkIGJ5IGEgY2FsbCB0b7BgY3JlYXRlX3B1cmVgIHdpdGggY29ycmVzcG9uZGluZyBwYXJhbWV0ZXJzLgBVAS0gYHNwYXduZXJgOiBUaGUgYWNjb3VudCB0aGF0IG9yaWdpbmFsbHkgY2FsbGVkIGBjcmVhdGVfcHVyZWAgdG8gY3JlYXRlIHRoaXMgYWNjb3VudC5VAS0gYGluZGV4YDogVGhlIGRpc2FtYmlndWF0aW9uIGluZGV4IG9yaWdpbmFsbHkgcGFzc2VkIHRvIGBjcmVhdGVfcHVyZWAuIFByb2JhYmx5IGAwYC4JAS0gYHByb3h5X3R5cGVgOiBUaGUgcHJveHkgdHlwZSBvcmlnaW5hbGx5IHBhc3NlZCB0byBgY3JlYXRlX3B1cmVgLkUBLSBgaGVpZ2h0YDogVGhlIGhlaWdodCBvZiB0aGUgY2hhaW4gd2hlbiB0aGUgY2FsbCB0byBgY3JlYXRlX3B1cmVgIHdhcyBwcm9jZXNzZWQuUQEtIGBleHRfaW5kZXhgOiBUaGUgZXh0cmluc2ljIGluZGV4IGluIHdoaWNoIHRoZSBjYWxsIHRvIGBjcmVhdGVfcHVyZWAgd2FzIHByb2Nlc3NlZC4ANQFGYWlscyB3aXRoIGBOb1Blcm1pc3Npb25gIGluIGNhc2UgdGhlIGNhbGxlciBpcyBub3QgYSBwcmV2aW91c2x5IGNyZWF0ZWQgcHVyZfhhY2NvdW50IHdob3NlIGBjcmVhdGVfcHVyZWAgY2FsbCBoYXMgY29ycmVzcG9uZGluZyBwYXJhbWV0ZXJzLiBhbm5vdW5jZQgBEHJlYWwAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABJGNhbGxfaGFzaEABNENhbGxIYXNoT2Y8VD4ABjwFAVB1Ymxpc2ggdGhlIGhhc2ggb2YgYSBwcm94eS1jYWxsIHRoYXQgd2lsbCBiZSBtYWRlIGluIHRoZSBmdXR1cmUuAF0BVGhpcyBtdXN0IGJlIGNhbGxlZCBzb21lIG51bWJlciBvZiBibG9ja3MgYmVmb3JlIHRoZSBjb3JyZXNwb25kaW5nIGBwcm94eWAgaXMgYXR0ZW1wdGVkJQFpZiB0aGUgZGVsYXkgYXNzb2NpYXRlZCB3aXRoIHRoZSBwcm94eSByZWxhdGlvbnNoaXAgaXMgZ3JlYXRlciB0aGFuIHplcm8uABEBTm8gbW9yZSB0aGFuIGBNYXhQZW5kaW5nYCBhbm5vdW5jZW1lbnRzIG1heSBiZSBtYWRlIGF0IGFueSBvbmUgdGltZS4ACQFUaGlzIHdpbGwgdGFrZSBhIGRlcG9zaXQgb2YgYEFubm91bmNlbWVudERlcG9zaXRGYWN0b3JgIGFzIHdlbGwgYXMZAWBBbm5vdW5jZW1lbnREZXBvc2l0QmFzZWAgaWYgdGhlcmUgYXJlIG5vIG90aGVyIHBlbmRpbmcgYW5ub3VuY2VtZW50cy4AJQFUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXyBhbmQgYSBwcm94eSBvZiBgcmVhbGAuACxQYXJhbWV0ZXJzOg0BLSBgcmVhbGA6IFRoZSBhY2NvdW50IHRoYXQgdGhlIHByb3h5IHdpbGwgbWFrZSBhIGNhbGwgb24gYmVoYWxmIG9mLhUBLSBgY2FsbF9oYXNoYDogVGhlIGhhc2ggb2YgdGhlIGNhbGwgdG8gYmUgbWFkZSBieSB0aGUgYHJlYWxgIGFjY291bnQuTHJlbW92ZV9hbm5vdW5jZW1lbnQIARByZWFsAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AASRjYWxsX2hhc2hAATRDYWxsSGFzaE9mPFQ+AAcocFJlbW92ZSBhIGdpdmVuIGFubm91bmNlbWVudC4AWQFNYXkgYmUgY2FsbGVkIGJ5IGEgcHJveHkgYWNjb3VudCB0byByZW1vdmUgYSBjYWxsIHRoZXkgcHJldmlvdXNseSBhbm5vdW5jZWQgYW5kIHJldHVybjB0aGUgZGVwb3NpdC4AzFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLgAsUGFyYW1ldGVyczoNAS0gYHJlYWxgOiBUaGUgYWNjb3VudCB0aGF0IHRoZSBwcm94eSB3aWxsIG1ha2UgYSBjYWxsIG9uIGJlaGFsZiBvZi4VAS0gYGNhbGxfaGFzaGA6IFRoZSBoYXNoIG9mIHRoZSBjYWxsIHRvIGJlIG1hZGUgYnkgdGhlIGByZWFsYCBhY2NvdW50LkxyZWplY3RfYW5ub3VuY2VtZW50CAEgZGVsZWdhdGUAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABJGNhbGxfaGFzaEABNENhbGxIYXNoT2Y8VD4ACCiwUmVtb3ZlIHRoZSBnaXZlbiBhbm5vdW5jZW1lbnQgb2YgYSBkZWxlZ2F0ZS4AYQFNYXkgYmUgY2FsbGVkIGJ5IGEgdGFyZ2V0IChwcm94aWVkKSBhY2NvdW50IHRvIHJlbW92ZSBhIGNhbGwgdGhhdCBvbmUgb2YgdGhlaXIgZGVsZWdhdGVzJQEoYGRlbGVnYXRlYCkgaGFzIGFubm91bmNlZCB0aGV5IHdhbnQgdG8gZXhlY3V0ZS4gVGhlIGRlcG9zaXQgaXMgcmV0dXJuZWQuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4ALFBhcmFtZXRlcnM69C0gYGRlbGVnYXRlYDogVGhlIGFjY291bnQgdGhhdCBwcmV2aW91c2x5IGFubm91bmNlZCB0aGUgY2FsbC68LSBgY2FsbF9oYXNoYDogVGhlIGhhc2ggb2YgdGhlIGNhbGwgdG8gYmUgbWFkZS48cHJveHlfYW5ub3VuY2VkEAEgZGVsZWdhdGUAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABEHJlYWwAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABQGZvcmNlX3Byb3h5X3R5cGU5BAFQT3B0aW9uPFQ6OlByb3h5VHlwZT4AARBjYWxsIAF8Qm94PDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgAJLE0BRGlzcGF0Y2ggdGhlIGdpdmVuIGBjYWxsYCBmcm9tIGFuIGFjY291bnQgdGhhdCB0aGUgc2VuZGVyIGlzIGF1dGhvcml6ZWQgZm9yIHRocm91Z2gwYGFkZF9wcm94eWAuAKhSZW1vdmVzIGFueSBjb3JyZXNwb25kaW5nIGFubm91bmNlbWVudChzKS4AzFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLgAsUGFyYW1ldGVyczoNAS0gYHJlYWxgOiBUaGUgYWNjb3VudCB0aGF0IHRoZSBwcm94eSB3aWxsIG1ha2UgYSBjYWxsIG9uIGJlaGFsZiBvZi5hAS0gYGZvcmNlX3Byb3h5X3R5cGVgOiBTcGVjaWZ5IHRoZSBleGFjdCBwcm94eSB0eXBlIHRvIGJlIHVzZWQgYW5kIGNoZWNrZWQgZm9yIHRoaXMgY2FsbC7QLSBgY2FsbGA6IFRoZSBjYWxsIHRvIGJlIG1hZGUgYnkgdGhlIGByZWFsYCBhY2NvdW50LjBwb2tlX2RlcG9zaXQACiBJAVBva2UgLyBBZGp1c3QgZGVwb3NpdHMgbWFkZSBmb3IgcHJveGllcyBhbmQgYW5ub3VuY2VtZW50cyBiYXNlZCBvbiBjdXJyZW50IHZhbHVlcy4NAVRoaXMgY2FuIGJlIHVzZWQgYnkgYWNjb3VudHMgdG8gcG9zc2libHkgbG93ZXIgdGhlaXIgbG9ja2VkIGFtb3VudC4AzFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLgABAVRoZSB0cmFuc2FjdGlvbiBmZWUgaXMgd2FpdmVkIGlmIHRoZSBkZXBvc2l0IGFtb3VudCBoYXMgY2hhbmdlZC4AjEVtaXRzIGBEZXBvc2l0UG9rZWRgIGlmIHN1Y2Nlc3NmdWwuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLjkEBBhPcHRpb24EBFQBPQQBCBBOb25lAAAAEFNvbWUEAD0EAAABAAA9BAhcYXNzZXRfaHViX3Bhc2VvX3J1bnRpbWUkUHJveHlUeXBlAAE4DEFueQAAACxOb25UcmFuc2ZlcgABACxDYW5jZWxQcm94eQACABhBc3NldHMAAwAoQXNzZXRPd25lcgAEADBBc3NldE1hbmFnZXIABQAgQ29sbGF0b3IABgAoR292ZXJuYW5jZQAHABxTdGFraW5nAAgAPE5vbWluYXRpb25Qb29scwAJABxBdWN0aW9uAAoAQFBhcmFSZWdpc3RyYXRpb24ACwA8U3Rha2luZ09wZXJhdG9yAAwAIFNhZmVTdWRvAGQAAEEEDDhwYWxsZXRfaW5kaWNlcxhwYWxsZXQQQ2FsbAQEVAABGBRjbGFpbQQBFGluZGV4OAE8VDo6QWNjb3VudEluZGV4AAAwmEFzc2lnbiBhbiBwcmV2aW91c2x5IHVuYXNzaWduZWQgaW5kZXguANxQYXltZW50OiBgRGVwb3NpdGAgaXMgcmVzZXJ2ZWQgZnJvbSB0aGUgc2VuZGVyIGFjY291bnQuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4A8C0gYGluZGV4YDogdGhlIGluZGV4IHRvIGJlIGNsYWltZWQuIFRoaXMgbXVzdCBub3QgYmUgaW4gdXNlLgCQRW1pdHMgYEluZGV4QXNzaWduZWRgIGlmIHN1Y2Nlc3NmdWwuADQjIyBDb21wbGV4aXR5JC0gYE8oMSlgLiB0cmFuc2ZlcggBDG5ldwABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEUaW5kZXg4ATxUOjpBY2NvdW50SW5kZXgAATBdAUFzc2lnbiBhbiBpbmRleCBhbHJlYWR5IG93bmVkIGJ5IHRoZSBzZW5kZXIgdG8gYW5vdGhlciBhY2NvdW50LiBUaGUgYmFsYW5jZSByZXNlcnZhdGlvbrhpcyBlZmZlY3RpdmVseSB0cmFuc2ZlcnJlZCB0byB0aGUgbmV3IGFjY291bnQuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4AJQEtIGBpbmRleGA6IHRoZSBpbmRleCB0byBiZSByZS1hc3NpZ25lZC4gVGhpcyBtdXN0IGJlIG93bmVkIGJ5IHRoZSBzZW5kZXIuXQEtIGBuZXdgOiB0aGUgbmV3IG93bmVyIG9mIHRoZSBpbmRleC4gVGhpcyBmdW5jdGlvbiBpcyBhIG5vLW9wIGlmIGl0IGlzIGVxdWFsIHRvIHNlbmRlci4AkEVtaXRzIGBJbmRleEFzc2lnbmVkYCBpZiBzdWNjZXNzZnVsLgA0IyMgQ29tcGxleGl0eSQtIGBPKDEpYC4QZnJlZQQBFGluZGV4OAE8VDo6QWNjb3VudEluZGV4AAIwlEZyZWUgdXAgYW4gaW5kZXggb3duZWQgYnkgdGhlIHNlbmRlci4AXQFQYXltZW50OiBBbnkgcHJldmlvdXMgZGVwb3NpdCBwbGFjZWQgZm9yIHRoZSBpbmRleCBpcyB1bnJlc2VydmVkIGluIHRoZSBzZW5kZXIgYWNjb3VudC4AVQFUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXyBhbmQgdGhlIHNlbmRlciBtdXN0IG93biB0aGUgaW5kZXguAA0BLSBgaW5kZXhgOiB0aGUgaW5kZXggdG8gYmUgZnJlZWQuIFRoaXMgbXVzdCBiZSBvd25lZCBieSB0aGUgc2VuZGVyLgCERW1pdHMgYEluZGV4RnJlZWRgIGlmIHN1Y2Nlc3NmdWwuADQjIyBDb21wbGV4aXR5JC0gYE8oMSlgLjhmb3JjZV90cmFuc2ZlcgwBDG5ldwABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEUaW5kZXg4ATxUOjpBY2NvdW50SW5kZXgAARhmcmVlemVdAQEQYm9vbAADNFUBRm9yY2UgYW4gaW5kZXggdG8gYW4gYWNjb3VudC4gVGhpcyBkb2Vzbid0IHJlcXVpcmUgYSBkZXBvc2l0LiBJZiB0aGUgaW5kZXggaXMgYWxyZWFkeehoZWxkLCB0aGVuIGFueSBkZXBvc2l0IGlzIHJlaW1idXJzZWQgdG8gaXRzIGN1cnJlbnQgb3duZXIuAMRUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfUm9vdF8uAKQtIGBpbmRleGA6IHRoZSBpbmRleCB0byBiZSAocmUtKWFzc2lnbmVkLl0BLSBgbmV3YDogdGhlIG5ldyBvd25lciBvZiB0aGUgaW5kZXguIFRoaXMgZnVuY3Rpb24gaXMgYSBuby1vcCBpZiBpdCBpcyBlcXVhbCB0byBzZW5kZXIuQQEtIGBmcmVlemVgOiBpZiBzZXQgdG8gYHRydWVgLCB3aWxsIGZyZWV6ZSB0aGUgaW5kZXggc28gaXQgY2Fubm90IGJlIHRyYW5zZmVycmVkLgCQRW1pdHMgYEluZGV4QXNzaWduZWRgIGlmIHN1Y2Nlc3NmdWwuADQjIyBDb21wbGV4aXR5JC0gYE8oMSlgLhhmcmVlemUEARRpbmRleDgBPFQ6OkFjY291bnRJbmRleAAEMEEBRnJlZXplIGFuIGluZGV4IHNvIGl0IHdpbGwgYWx3YXlzIHBvaW50IHRvIHRoZSBzZW5kZXIgYWNjb3VudC4gVGhpcyBjb25zdW1lcyB0aGUgZGVwb3NpdC4AWQFUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXyBhbmQgdGhlIHNpZ25pbmcgYWNjb3VudCBtdXN0IGhhdmUgYWxub24tZnJvemVuIGFjY291bnQgYGluZGV4YC4ArC0gYGluZGV4YDogdGhlIGluZGV4IHRvIGJlIGZyb3plbiBpbiBwbGFjZS4AiEVtaXRzIGBJbmRleEZyb3plbmAgaWYgc3VjY2Vzc2Z1bC4ANCMjIENvbXBsZXhpdHkkLSBgTygxKWAuMHBva2VfZGVwb3NpdAQBFGluZGV4OAE8VDo6QWNjb3VudEluZGV4AAUonFBva2UgdGhlIGRlcG9zaXQgcmVzZXJ2ZWQgZm9yIGFuIGluZGV4LgBZAVRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfIGFuZCB0aGUgc2lnbmluZyBhY2NvdW50IG11c3QgaGF2ZSBhbG5vbi1mcm96ZW4gYWNjb3VudCBgaW5kZXhgLgBZAVRoZSB0cmFuc2FjdGlvbiBmZWVzIGlzIHdhaXZlZCBpZiB0aGUgZGVwb3NpdCBpcyBjaGFuZ2VkIGFmdGVyIHBva2luZy9yZWNvbnNpZGVyYXRpb24uAPwtIGBpbmRleGA6IHRoZSBpbmRleCB3aG9zZSBkZXBvc2l0IGlzIHRvIGJlIHBva2VkL3JlY29uc2lkZXJlZC4AjEVtaXRzIGBEZXBvc2l0UG9rZWRgIGlmIHN1Y2Nlc3NmdWwuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLkUEDDRwYWxsZXRfYXNzZXRzGHBhbGxldBBDYWxsCARUAARJAAGIGGNyZWF0ZQwBCGlkZAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABFGFkbWluAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AASxtaW5fYmFsYW5jZVkBAShUOjpCYWxhbmNlAABM6Elzc3VlIGEgbmV3IGNsYXNzIG9mIGZ1bmdpYmxlIGFzc2V0cyBmcm9tIGEgcHVibGljIG9yaWdpbi4AJQFUaGlzIG5ldyBhc3NldCBjbGFzcyBoYXMgbm8gYXNzZXRzIGluaXRpYWxseSBhbmQgaXRzIG93bmVyIGlzIHRoZSBvcmlnaW4uAGEBVGhlIG9yaWdpbiBtdXN0IGNvbmZvcm0gdG8gdGhlIGNvbmZpZ3VyZWQgYENyZWF0ZU9yaWdpbmAgYW5kIGhhdmUgc3VmZmljaWVudCBmdW5kcyBmcmVlLgC8RnVuZHMgb2Ygc2VuZGVyIGFyZSByZXNlcnZlZCBieSBgQXNzZXREZXBvc2l0YC4ALFBhcmFtZXRlcnM6WQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBuZXcgYXNzZXQuIFRoaXMgbXVzdCBub3QgYmUgY3VycmVudGx5IGluIHVzZSB0byBpZGVudGlmeTEBYW4gZXhpc3RpbmcgYXNzZXQuIElmIFtgTmV4dEFzc2V0SWRgXSBpcyBzZXQsIHRoZW4gdGhpcyBtdXN0IGJlIGVxdWFsIHRvIGl0LlkBLSBgYWRtaW5gOiBUaGUgYWRtaW4gb2YgdGhpcyBjbGFzcyBvZiBhc3NldHMuIFRoZSBhZG1pbiBpcyB0aGUgaW5pdGlhbCBhZGRyZXNzIG9mIGVhY2icbWVtYmVyIG9mIHRoZSBhc3NldCBjbGFzcydzIGFkbWluIHRlYW0uTQEtIGBtaW5fYmFsYW5jZWA6IFRoZSBtaW5pbXVtIGJhbGFuY2Ugb2YgdGhpcyBuZXcgYXNzZXQgdGhhdCBhbnkgc2luZ2xlIGFjY291bnQgbXVzdD0BaGF2ZS4gSWYgYW4gYWNjb3VudCdzIGJhbGFuY2UgaXMgcmVkdWNlZCBiZWxvdyB0aGlzLCB0aGVuIGl0IGNvbGxhcHNlcyB0byB6ZXJvLgCYRW1pdHMgYENyZWF0ZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4AOFdlaWdodDogYE8oMSlgMGZvcmNlX2NyZWF0ZRABCGlkZAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABFG93bmVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AATRpc19zdWZmaWNpZW50XQEBEGJvb2wAASxtaW5fYmFsYW5jZVUBAShUOjpCYWxhbmNlAAFM+Elzc3VlIGEgbmV3IGNsYXNzIG9mIGZ1bmdpYmxlIGFzc2V0cyBmcm9tIGEgcHJpdmlsZWdlZCBvcmlnaW4uALRUaGlzIG5ldyBhc3NldCBjbGFzcyBoYXMgbm8gYXNzZXRzIGluaXRpYWxseS4ApFRoZSBvcmlnaW4gbXVzdCBjb25mb3JtIHRvIGBGb3JjZU9yaWdpbmAuAJxVbmxpa2UgYGNyZWF0ZWAsIG5vIGZ1bmRzIGFyZSByZXNlcnZlZC4AWQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBuZXcgYXNzZXQuIFRoaXMgbXVzdCBub3QgYmUgY3VycmVudGx5IGluIHVzZSB0byBpZGVudGlmeTEBYW4gZXhpc3RpbmcgYXNzZXQuIElmIFtgTmV4dEFzc2V0SWRgXSBpcyBzZXQsIHRoZW4gdGhpcyBtdXN0IGJlIGVxdWFsIHRvIGl0LlkBLSBgb3duZXJgOiBUaGUgb3duZXIgb2YgdGhpcyBjbGFzcyBvZiBhc3NldHMuIFRoZSBvd25lciBoYXMgZnVsbCBzdXBlcnVzZXIgcGVybWlzc2lvbnMlAW92ZXIgdGhpcyBhc3NldCwgYnV0IG1heSBsYXRlciBjaGFuZ2UgYW5kIGNvbmZpZ3VyZSB0aGUgcGVybWlzc2lvbnMgdXNpbmeQYHRyYW5zZmVyX293bmVyc2hpcGAgYW5kIGBzZXRfdGVhbWAuTQEtIGBtaW5fYmFsYW5jZWA6IFRoZSBtaW5pbXVtIGJhbGFuY2Ugb2YgdGhpcyBuZXcgYXNzZXQgdGhhdCBhbnkgc2luZ2xlIGFjY291bnQgbXVzdD0BaGF2ZS4gSWYgYW4gYWNjb3VudCdzIGJhbGFuY2UgaXMgcmVkdWNlZCBiZWxvdyB0aGlzLCB0aGVuIGl0IGNvbGxhcHNlcyB0byB6ZXJvLgCsRW1pdHMgYEZvcmNlQ3JlYXRlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLgA4V2VpZ2h0OiBgTygxKWA0c3RhcnRfZGVzdHJveQQBCGlkZAFMVDo6QXNzZXRJZFBhcmFtZXRlcgACMNxTdGFydCB0aGUgcHJvY2VzcyBvZiBkZXN0cm95aW5nIGEgZnVuZ2libGUgYXNzZXQgY2xhc3MuAFkBYHN0YXJ0X2Rlc3Ryb3lgIGlzIHRoZSBmaXJzdCBpbiBhIHNlcmllcyBvZiBleHRyaW5zaWNzIHRoYXQgc2hvdWxkIGJlIGNhbGxlZCwgdG8gYWxsb3d4ZGVzdHJ1Y3Rpb24gb2YgYW4gYXNzZXQgY2xhc3MuAFEBVGhlIG9yaWdpbiBtdXN0IGNvbmZvcm0gdG8gYEZvcmNlT3JpZ2luYCBvciBtdXN0IGJlIGBTaWduZWRgIGJ5IHRoZSBhc3NldCdzIGBvd25lcmAuAE0BLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgZGVzdHJveWVkLiBUaGlzIG11c3QgaWRlbnRpZnkgYW4gZXhpc3RpbmcgICBhc3NldC4ASQFJdCB3aWxsIGZhaWwgd2l0aCBlaXRoZXIgW2BFcnJvcjo6Q29udGFpbnNIb2xkc2BdIG9yIFtgRXJyb3I6OkNvbnRhaW5zRnJlZXplc2BdIGlmuGFuIGFjY291bnQgY29udGFpbnMgaG9sZHMgb3IgZnJlZXplcyBpbiBwbGFjZS5AZGVzdHJveV9hY2NvdW50cwQBCGlkZAFMVDo6QXNzZXRJZFBhcmFtZXRlcgADMMxEZXN0cm95IGFsbCBhY2NvdW50cyBhc3NvY2lhdGVkIHdpdGggYSBnaXZlbiBhc3NldC4AXQFgZGVzdHJveV9hY2NvdW50c2Agc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGFmdGVyIGBzdGFydF9kZXN0cm95YCBoYXMgYmVlbiBjYWxsZWQsIGFuZCB0aGWEYXNzZXQgaXMgaW4gYSBgRGVzdHJveWluZ2Agc3RhdGUuAF0BRHVlIHRvIHdlaWdodCByZXN0cmljdGlvbnMsIHRoaXMgZnVuY3Rpb24gbWF5IG5lZWQgdG8gYmUgY2FsbGVkIG11bHRpcGxlIHRpbWVzIHRvIGZ1bGx5MQFkZXN0cm95IGFsbCBhY2NvdW50cy4gSXQgd2lsbCBkZXN0cm95IGBSZW1vdmVJdGVtc0xpbWl0YCBhY2NvdW50cyBhdCBhIHRpbWUuAE0BLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgZGVzdHJveWVkLiBUaGlzIG11c3QgaWRlbnRpZnkgYW4gZXhpc3RpbmcgICBhc3NldC4A1EVhY2ggY2FsbCBlbWl0cyB0aGUgYEV2ZW50OjpEZXN0cm95ZWRBY2NvdW50c2AgZXZlbnQuRGRlc3Ryb3lfYXBwcm92YWxzBAEIaWRkAUxUOjpBc3NldElkUGFyYW1ldGVyAAQwYQFEZXN0cm95IGFsbCBhcHByb3ZhbHMgYXNzb2NpYXRlZCB3aXRoIGEgZ2l2ZW4gYXNzZXQgdXAgdG8gdGhlIG1heCAoVDo6UmVtb3ZlSXRlbXNMaW1pdCkuAGEBYGRlc3Ryb3lfYXBwcm92YWxzYCBzaG91bGQgb25seSBiZSBjYWxsZWQgYWZ0ZXIgYHN0YXJ0X2Rlc3Ryb3lgIGhhcyBiZWVuIGNhbGxlZCwgYW5kIHRoZYRhc3NldCBpcyBpbiBhIGBEZXN0cm95aW5nYCBzdGF0ZS4AXQFEdWUgdG8gd2VpZ2h0IHJlc3RyaWN0aW9ucywgdGhpcyBmdW5jdGlvbiBtYXkgbmVlZCB0byBiZSBjYWxsZWQgbXVsdGlwbGUgdGltZXMgdG8gZnVsbHk5AWRlc3Ryb3kgYWxsIGFwcHJvdmFscy4gSXQgd2lsbCBkZXN0cm95IGBSZW1vdmVJdGVtc0xpbWl0YCBhcHByb3ZhbHMgYXQgYSB0aW1lLgBNAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIGRlc3Ryb3llZC4gVGhpcyBtdXN0IGlkZW50aWZ5IGFuIGV4aXN0aW5nICAgYXNzZXQuANhFYWNoIGNhbGwgZW1pdHMgdGhlIGBFdmVudDo6RGVzdHJveWVkQXBwcm92YWxzYCBldmVudC44ZmluaXNoX2Rlc3Ryb3kEAQhpZGQBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIABSjEQ29tcGxldGUgZGVzdHJveWluZyBhc3NldCBhbmQgdW5yZXNlcnZlIGN1cnJlbmN5LgBVAWBmaW5pc2hfZGVzdHJveWAgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGFmdGVyIGBzdGFydF9kZXN0cm95YCBoYXMgYmVlbiBjYWxsZWQsIGFuZCB0aGVZAWFzc2V0IGlzIGluIGEgYERlc3Ryb3lpbmdgIHN0YXRlLiBBbGwgYWNjb3VudHMgb3IgYXBwcm92YWxzIHNob3VsZCBiZSBkZXN0cm95ZWQgYmVmb3JlFGhhbmQuAE0BLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgZGVzdHJveWVkLiBUaGlzIG11c3QgaWRlbnRpZnkgYW4gZXhpc3RpbmcgICBhc3NldC4A4EVhY2ggc3VjY2Vzc2Z1bCBjYWxsIGVtaXRzIHRoZSBgRXZlbnQ6OkRlc3Ryb3llZGAgZXZlbnQuEG1pbnQMAQhpZGQBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAASxiZW5lZmljaWFyeQABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYYW1vdW50VQEBKFQ6OkJhbGFuY2UABjCITWludCBhc3NldHMgb2YgYSBwYXJ0aWN1bGFyIGNsYXNzLgA5AVRoZSBvcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgbXVzdCBiZSB0aGUgSXNzdWVyIG9mIHRoZSBhc3NldCBgaWRgLgD8LSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gaGF2ZSBzb21lIGFtb3VudCBtaW50ZWQuDQEtIGBiZW5lZmljaWFyeWA6IFRoZSBhY2NvdW50IHRvIGJlIGNyZWRpdGVkIHdpdGggdGhlIG1pbnRlZCBhc3NldHMuxC0gYGFtb3VudGA6IFRoZSBhbW91bnQgb2YgdGhlIGFzc2V0IHRvIGJlIG1pbnRlZC4AlEVtaXRzIGBJc3N1ZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4AOFdlaWdodDogYE8oMSlgVQFNb2RlczogUHJlLWV4aXN0aW5nIGJhbGFuY2Ugb2YgYGJlbmVmaWNpYXJ5YDsgQWNjb3VudCBwcmUtZXhpc3RlbmNlIG9mIGBiZW5lZmljaWFyeWAuEGJ1cm4MAQhpZGQBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAAQx3aG8AAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGFtb3VudFUBAShUOjpCYWxhbmNlAAc8RQFSZWR1Y2UgdGhlIGJhbGFuY2Ugb2YgYHdob2AgYnkgYXMgbXVjaCBhcyBwb3NzaWJsZSB1cCB0byBgYW1vdW50YCBhc3NldHMgb2YgYGlkYC4ANQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBNYW5hZ2VyIG9mIHRoZSBhc3NldCBgaWRgLgDQQmFpbHMgd2l0aCBgTm9BY2NvdW50YCBpZiB0aGUgYHdob2AgaXMgYWxyZWFkeSBkZWFkLgD8LSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gaGF2ZSBzb21lIGFtb3VudCBidXJuZWQuoC0gYHdob2A6IFRoZSBhY2NvdW50IHRvIGJlIGRlYml0ZWQgZnJvbS4pAS0gYGFtb3VudGA6IFRoZSBtYXhpbXVtIGFtb3VudCBieSB3aGljaCBgd2hvYCdzIGJhbGFuY2Ugc2hvdWxkIGJlIHJlZHVjZWQuAFEBRW1pdHMgYEJ1cm5lZGAgd2l0aCB0aGUgYWN0dWFsIGFtb3VudCBidXJuZWQuIElmIHRoaXMgdGFrZXMgdGhlIGJhbGFuY2UgdG8gYmVsb3cgdGhlOQFtaW5pbXVtIGZvciB0aGUgYXNzZXQsIHRoZW4gdGhlIGFtb3VudCBidXJuZWQgaXMgaW5jcmVhc2VkIHRvIHRha2UgaXQgdG8gemVyby4AOFdlaWdodDogYE8oMSlgCQFNb2RlczogUG9zdC1leGlzdGVuY2Ugb2YgYHdob2A7IFByZSAmIHBvc3QgWm9tYmllLXN0YXR1cyBvZiBgd2hvYC4gdHJhbnNmZXIMAQhpZGQBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARh0YXJnZXQAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGFtb3VudFUBAShUOjpCYWxhbmNlAAhI0E1vdmUgc29tZSBhc3NldHMgZnJvbSB0aGUgc2VuZGVyIGFjY291bnQgdG8gYW5vdGhlci4AWE9yaWdpbiBtdXN0IGJlIFNpZ25lZC4AEQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBoYXZlIHNvbWUgYW1vdW50IHRyYW5zZmVycmVkLpwtIGB0YXJnZXRgOiBUaGUgYWNjb3VudCB0byBiZSBjcmVkaXRlZC5RAS0gYGFtb3VudGA6IFRoZSBhbW91bnQgYnkgd2hpY2ggdGhlIHNlbmRlcidzIGJhbGFuY2Ugb2YgYXNzZXRzIHNob3VsZCBiZSByZWR1Y2VkIGFuZGEBYHRhcmdldGAncyBiYWxhbmNlIGluY3JlYXNlZC4gVGhlIGFtb3VudCBhY3R1YWxseSB0cmFuc2ZlcnJlZCBtYXkgYmUgc2xpZ2h0bHkgZ3JlYXRlciBpbl0BdGhlIGNhc2UgdGhhdCB0aGUgdHJhbnNmZXIgd291bGQgb3RoZXJ3aXNlIHRha2UgdGhlIHNlbmRlciBiYWxhbmNlIGFib3ZlIHplcm8gYnV0IGJlbG93vHRoZSBtaW5pbXVtIGJhbGFuY2UuIE11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8uAGEBRW1pdHMgYFRyYW5zZmVycmVkYCB3aXRoIHRoZSBhY3R1YWwgYW1vdW50IHRyYW5zZmVycmVkLiBJZiB0aGlzIHRha2VzIHRoZSBzb3VyY2UgYmFsYW5jZV0BdG8gYmVsb3cgdGhlIG1pbmltdW0gZm9yIHRoZSBhc3NldCwgdGhlbiB0aGUgYW1vdW50IHRyYW5zZmVycmVkIGlzIGluY3JlYXNlZCB0byB0YWtlIGl0IHRvIHplcm8uADhXZWlnaHQ6IGBPKDEpYFEBTW9kZXM6IFByZS1leGlzdGVuY2Ugb2YgYHRhcmdldGA7IFBvc3QtZXhpc3RlbmNlIG9mIHNlbmRlcjsgQWNjb3VudCBwcmUtZXhpc3RlbmNlIG9mJGB0YXJnZXRgLkx0cmFuc2Zlcl9rZWVwX2FsaXZlDAEIaWRkAUxUOjpBc3NldElkUGFyYW1ldGVyAAEYdGFyZ2V0AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARhhbW91bnRVAQEoVDo6QmFsYW5jZQAJSFkBTW92ZSBzb21lIGFzc2V0cyBmcm9tIHRoZSBzZW5kZXIgYWNjb3VudCB0byBhbm90aGVyLCBrZWVwaW5nIHRoZSBzZW5kZXIgYWNjb3VudCBhbGl2ZS4AWE9yaWdpbiBtdXN0IGJlIFNpZ25lZC4AEQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBoYXZlIHNvbWUgYW1vdW50IHRyYW5zZmVycmVkLpwtIGB0YXJnZXRgOiBUaGUgYWNjb3VudCB0byBiZSBjcmVkaXRlZC5RAS0gYGFtb3VudGA6IFRoZSBhbW91bnQgYnkgd2hpY2ggdGhlIHNlbmRlcidzIGJhbGFuY2Ugb2YgYXNzZXRzIHNob3VsZCBiZSByZWR1Y2VkIGFuZGEBYHRhcmdldGAncyBiYWxhbmNlIGluY3JlYXNlZC4gVGhlIGFtb3VudCBhY3R1YWxseSB0cmFuc2ZlcnJlZCBtYXkgYmUgc2xpZ2h0bHkgZ3JlYXRlciBpbl0BdGhlIGNhc2UgdGhhdCB0aGUgdHJhbnNmZXIgd291bGQgb3RoZXJ3aXNlIHRha2UgdGhlIHNlbmRlciBiYWxhbmNlIGFib3ZlIHplcm8gYnV0IGJlbG93vHRoZSBtaW5pbXVtIGJhbGFuY2UuIE11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8uAGEBRW1pdHMgYFRyYW5zZmVycmVkYCB3aXRoIHRoZSBhY3R1YWwgYW1vdW50IHRyYW5zZmVycmVkLiBJZiB0aGlzIHRha2VzIHRoZSBzb3VyY2UgYmFsYW5jZV0BdG8gYmVsb3cgdGhlIG1pbmltdW0gZm9yIHRoZSBhc3NldCwgdGhlbiB0aGUgYW1vdW50IHRyYW5zZmVycmVkIGlzIGluY3JlYXNlZCB0byB0YWtlIGl0IHRvIHplcm8uADhXZWlnaHQ6IGBPKDEpYFEBTW9kZXM6IFByZS1leGlzdGVuY2Ugb2YgYHRhcmdldGA7IFBvc3QtZXhpc3RlbmNlIG9mIHNlbmRlcjsgQWNjb3VudCBwcmUtZXhpc3RlbmNlIG9mJGB0YXJnZXRgLjhmb3JjZV90cmFuc2ZlchABCGlkZAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABGHNvdXJjZQABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEQZGVzdAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYYW1vdW50VQEBKFQ6OkJhbGFuY2UACky0TW92ZSBzb21lIGFzc2V0cyBmcm9tIG9uZSBhY2NvdW50IHRvIGFub3RoZXIuAC0BT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgQWRtaW4gb2YgdGhlIGFzc2V0IGBpZGAuABEBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gaGF2ZSBzb21lIGFtb3VudCB0cmFuc2ZlcnJlZC6YLSBgc291cmNlYDogVGhlIGFjY291bnQgdG8gYmUgZGViaXRlZC6ULSBgZGVzdGA6IFRoZSBhY2NvdW50IHRvIGJlIGNyZWRpdGVkLlkBLSBgYW1vdW50YDogVGhlIGFtb3VudCBieSB3aGljaCB0aGUgYHNvdXJjZWAncyBiYWxhbmNlIG9mIGFzc2V0cyBzaG91bGQgYmUgcmVkdWNlZCBhbmRZAWBkZXN0YCdzIGJhbGFuY2UgaW5jcmVhc2VkLiBUaGUgYW1vdW50IGFjdHVhbGx5IHRyYW5zZmVycmVkIG1heSBiZSBzbGlnaHRseSBncmVhdGVyIGluTQF0aGUgY2FzZSB0aGF0IHRoZSB0cmFuc2ZlciB3b3VsZCBvdGhlcndpc2UgdGFrZSB0aGUgYHNvdXJjZWAgYmFsYW5jZSBhYm92ZSB6ZXJvIGJ1dNRiZWxvdyB0aGUgbWluaW11bSBiYWxhbmNlLiBNdXN0IGJlIGdyZWF0ZXIgdGhhbiB6ZXJvLgBhAUVtaXRzIGBUcmFuc2ZlcnJlZGAgd2l0aCB0aGUgYWN0dWFsIGFtb3VudCB0cmFuc2ZlcnJlZC4gSWYgdGhpcyB0YWtlcyB0aGUgc291cmNlIGJhbGFuY2VdAXRvIGJlbG93IHRoZSBtaW5pbXVtIGZvciB0aGUgYXNzZXQsIHRoZW4gdGhlIGFtb3VudCB0cmFuc2ZlcnJlZCBpcyBpbmNyZWFzZWQgdG8gdGFrZSBpdCB0byB6ZXJvLgA4V2VpZ2h0OiBgTygxKWBRAU1vZGVzOiBQcmUtZXhpc3RlbmNlIG9mIGBkZXN0YDsgUG9zdC1leGlzdGVuY2Ugb2YgYHNvdXJjZWA7IEFjY291bnQgcHJlLWV4aXN0ZW5jZSBvZhxgZGVzdGAuGGZyZWV6ZQgBCGlkZAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABDHdobwABUEFjY291bnRJZExvb2t1cE9mPFQ+AAswVQFEaXNhbGxvdyBmdXJ0aGVyIHVucHJpdmlsZWdlZCB0cmFuc2ZlcnMgb2YgYW4gYXNzZXQgYGlkYCBmcm9tIGFuIGFjY291bnQgYHdob2AuIGB3aG9gTQFtdXN0IGFscmVhZHkgZXhpc3QgYXMgYW4gZW50cnkgaW4gYEFjY291bnRgcyBvZiB0aGUgYXNzZXQuIElmIHlvdSB3YW50IHRvIGZyZWV6ZSBhbvRhY2NvdW50IHRoYXQgZG9lcyBub3QgaGF2ZSBhbiBlbnRyeSwgdXNlIGB0b3VjaF9vdGhlcmAgZmlyc3QuADUBT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgRnJlZXplciBvZiB0aGUgYXNzZXQgYGlkYC4AxC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIGZyb3plbi6ILSBgd2hvYDogVGhlIGFjY291bnQgdG8gYmUgZnJvemVuLgA8RW1pdHMgYEZyb3plbmAuADhXZWlnaHQ6IGBPKDEpYBB0aGF3CAEIaWRkAUxUOjpBc3NldElkUGFyYW1ldGVyAAEMd2hvAAFQQWNjb3VudElkTG9va3VwT2Y8VD4ADCjoQWxsb3cgdW5wcml2aWxlZ2VkIHRyYW5zZmVycyB0byBhbmQgZnJvbSBhbiBhY2NvdW50IGFnYWluLgAtAU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEFkbWluIG9mIHRoZSBhc3NldCBgaWRgLgDELSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgZnJvemVuLpAtIGB3aG9gOiBUaGUgYWNjb3VudCB0byBiZSB1bmZyb3plbi4APEVtaXRzIGBUaGF3ZWRgLgA4V2VpZ2h0OiBgTygxKWAwZnJlZXplX2Fzc2V0BAEIaWRkAUxUOjpBc3NldElkUGFyYW1ldGVyAA0k8ERpc2FsbG93IGZ1cnRoZXIgdW5wcml2aWxlZ2VkIHRyYW5zZmVycyBmb3IgdGhlIGFzc2V0IGNsYXNzLgA1AU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEZyZWV6ZXIgb2YgdGhlIGFzc2V0IGBpZGAuAMQtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBiZSBmcm96ZW4uADxFbWl0cyBgRnJvemVuYC4AOFdlaWdodDogYE8oMSlgKHRoYXdfYXNzZXQEAQhpZGQBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIADiTEQWxsb3cgdW5wcml2aWxlZ2VkIHRyYW5zZmVycyBmb3IgdGhlIGFzc2V0IGFnYWluLgAtAU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEFkbWluIG9mIHRoZSBhc3NldCBgaWRgLgDELSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgdGhhd2VkLgA8RW1pdHMgYFRoYXdlZGAuADhXZWlnaHQ6IGBPKDEpYEh0cmFuc2Zlcl9vd25lcnNoaXAIAQhpZGQBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARRvd25lcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AA8odENoYW5nZSB0aGUgT3duZXIgb2YgYW4gYXNzZXQuAC0BT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgT3duZXIgb2YgdGhlIGFzc2V0IGBpZGAuAJAtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldC6cLSBgb3duZXJgOiBUaGUgbmV3IE93bmVyIG9mIHRoaXMgYXNzZXQuAFRFbWl0cyBgT3duZXJDaGFuZ2VkYC4AOFdlaWdodDogYE8oMSlgIHNldF90ZWFtEAEIaWRkAUxUOjpBc3NldElkUGFyYW1ldGVyAAEYaXNzdWVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARRhZG1pbgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEcZnJlZXplcgABUEFjY291bnRJZExvb2t1cE9mPFQ+ABAwxENoYW5nZSB0aGUgSXNzdWVyLCBBZG1pbiBhbmQgRnJlZXplciBvZiBhbiBhc3NldC4ALQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBPd25lciBvZiB0aGUgYXNzZXQgYGlkYC4AxC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIGZyb3plbi6kLSBgaXNzdWVyYDogVGhlIG5ldyBJc3N1ZXIgb2YgdGhpcyBhc3NldC6cLSBgYWRtaW5gOiBUaGUgbmV3IEFkbWluIG9mIHRoaXMgYXNzZXQurC0gYGZyZWV6ZXJgOiBUaGUgbmV3IEZyZWV6ZXIgb2YgdGhpcyBhc3NldC4AUEVtaXRzIGBUZWFtQ2hhbmdlZGAuADhXZWlnaHQ6IGBPKDEpYDBzZXRfbWV0YWRhdGEQAQhpZGQBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARBuYW1lGAEcVmVjPHU4PgABGHN5bWJvbBgBHFZlYzx1OD4AASBkZWNpbWFscwwBCHU4ABFAeFNldCB0aGUgbWV0YWRhdGEgZm9yIGFuIGFzc2V0LgAtAU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIE93bmVyIG9mIHRoZSBhc3NldCBgaWRgLgDYRnVuZHMgb2Ygc2VuZGVyIGFyZSByZXNlcnZlZCBhY2NvcmRpbmcgdG8gdGhlIGZvcm11bGE6UQFgTWV0YWRhdGFEZXBvc2l0QmFzZSArIE1ldGFkYXRhRGVwb3NpdFBlckJ5dGUgKiAobmFtZS5sZW4gKyBzeW1ib2wubGVuKWAgdGFraW5nIGludG+MYWNjb3VudCBhbnkgYWxyZWFkeSByZXNlcnZlZCBmdW5kcy4AuC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIHVwZGF0ZS5NAS0gYG5hbWVgOiBUaGUgdXNlciBmcmllbmRseSBuYW1lIG9mIHRoaXMgYXNzZXQuIExpbWl0ZWQgaW4gbGVuZ3RoIGJ5IGBTdHJpbmdMaW1pdGAuTQEtIGBzeW1ib2xgOiBUaGUgZXhjaGFuZ2Ugc3ltYm9sIGZvciB0aGlzIGFzc2V0LiBMaW1pdGVkIGluIGxlbmd0aCBieSBgU3RyaW5nTGltaXRgLi0BLSBgZGVjaW1hbHNgOiBUaGUgbnVtYmVyIG9mIGRlY2ltYWxzIHRoaXMgYXNzZXQgdXNlcyB0byByZXByZXNlbnQgb25lIHVuaXQuAFBFbWl0cyBgTWV0YWRhdGFTZXRgLgA4V2VpZ2h0OiBgTygxKWA4Y2xlYXJfbWV0YWRhdGEEAQhpZGQBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAEiyAQ2xlYXIgdGhlIG1ldGFkYXRhIGZvciBhbiBhc3NldC4ALQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBPd25lciBvZiB0aGUgYXNzZXQgYGlkYC4ApEFueSBkZXBvc2l0IGlzIGZyZWVkIGZvciB0aGUgYXNzZXQgb3duZXIuALQtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBjbGVhci4AYEVtaXRzIGBNZXRhZGF0YUNsZWFyZWRgLgA4V2VpZ2h0OiBgTygxKWBIZm9yY2Vfc2V0X21ldGFkYXRhFAEIaWRkAUxUOjpBc3NldElkUGFyYW1ldGVyAAEQbmFtZRgBHFZlYzx1OD4AARhzeW1ib2wYARxWZWM8dTg+AAEgZGVjaW1hbHMMAQh1OAABJGlzX2Zyb3plbl0BARBib29sABM4uEZvcmNlIHRoZSBtZXRhZGF0YSBmb3IgYW4gYXNzZXQgdG8gc29tZSB2YWx1ZS4AbE9yaWdpbiBtdXN0IGJlIEZvcmNlT3JpZ2luLgBoQW55IGRlcG9zaXQgaXMgbGVmdCBhbG9uZS4AuC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIHVwZGF0ZS5NAS0gYG5hbWVgOiBUaGUgdXNlciBmcmllbmRseSBuYW1lIG9mIHRoaXMgYXNzZXQuIExpbWl0ZWQgaW4gbGVuZ3RoIGJ5IGBTdHJpbmdMaW1pdGAuTQEtIGBzeW1ib2xgOiBUaGUgZXhjaGFuZ2Ugc3ltYm9sIGZvciB0aGlzIGFzc2V0LiBMaW1pdGVkIGluIGxlbmd0aCBieSBgU3RyaW5nTGltaXRgLi0BLSBgZGVjaW1hbHNgOiBUaGUgbnVtYmVyIG9mIGRlY2ltYWxzIHRoaXMgYXNzZXQgdXNlcyB0byByZXByZXNlbnQgb25lIHVuaXQuAFBFbWl0cyBgTWV0YWRhdGFTZXRgLgBRAVdlaWdodDogYE8oTiArIFMpYCB3aGVyZSBOIGFuZCBTIGFyZSB0aGUgbGVuZ3RoIG9mIHRoZSBuYW1lIGFuZCBzeW1ib2wgcmVzcGVjdGl2ZWx5LlBmb3JjZV9jbGVhcl9tZXRhZGF0YQQBCGlkZAFMVDo6QXNzZXRJZFBhcmFtZXRlcgAULIBDbGVhciB0aGUgbWV0YWRhdGEgZm9yIGFuIGFzc2V0LgBsT3JpZ2luIG11c3QgYmUgRm9yY2VPcmlnaW4uAGBBbnkgZGVwb3NpdCBpcyByZXR1cm5lZC4AtC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGNsZWFyLgBgRW1pdHMgYE1ldGFkYXRhQ2xlYXJlZGAuADhXZWlnaHQ6IGBPKDEpYEhmb3JjZV9hc3NldF9zdGF0dXMgAQhpZGQBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARRvd25lcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYaXNzdWVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARRhZG1pbgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEcZnJlZXplcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEsbWluX2JhbGFuY2VVAQEoVDo6QmFsYW5jZQABNGlzX3N1ZmZpY2llbnRdAQEQYm9vbAABJGlzX2Zyb3plbl0BARBib29sABVYmEFsdGVyIHRoZSBhdHRyaWJ1dGVzIG9mIGEgZ2l2ZW4gYXNzZXQuAHRPcmlnaW4gbXVzdCBiZSBgRm9yY2VPcmlnaW5gLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQunC0gYG93bmVyYDogVGhlIG5ldyBPd25lciBvZiB0aGlzIGFzc2V0LqQtIGBpc3N1ZXJgOiBUaGUgbmV3IElzc3VlciBvZiB0aGlzIGFzc2V0LpwtIGBhZG1pbmA6IFRoZSBuZXcgQWRtaW4gb2YgdGhpcyBhc3NldC6sLSBgZnJlZXplcmA6IFRoZSBuZXcgRnJlZXplciBvZiB0aGlzIGFzc2V0Lk0BLSBgbWluX2JhbGFuY2VgOiBUaGUgbWluaW11bSBiYWxhbmNlIG9mIHRoaXMgbmV3IGFzc2V0IHRoYXQgYW55IHNpbmdsZSBhY2NvdW50IG11c3Q9AWhhdmUuIElmIGFuIGFjY291bnQncyBiYWxhbmNlIGlzIHJlZHVjZWQgYmVsb3cgdGhpcywgdGhlbiBpdCBjb2xsYXBzZXMgdG8gemVyby5RAS0gYGlzX3N1ZmZpY2llbnRgOiBXaGV0aGVyIGEgbm9uLXplcm8gYmFsYW5jZSBvZiB0aGlzIGFzc2V0IGlzIGRlcG9zaXQgb2Ygc3VmZmljaWVudE0BdmFsdWUgdG8gYWNjb3VudCBmb3IgdGhlIHN0YXRlIGJsb2F0IGFzc29jaWF0ZWQgd2l0aCBpdHMgYmFsYW5jZSBzdG9yYWdlLiBJZiBzZXQgdG9VAWB0cnVlYCwgdGhlbiBub24temVybyBiYWxhbmNlcyBtYXkgYmUgc3RvcmVkIHdpdGhvdXQgYSBgY29uc3VtZXJgIHJlZmVyZW5jZSAoYW5kIHRodXNNAWFuIEVEIGluIHRoZSBCYWxhbmNlcyBwYWxsZXQgb3Igd2hhdGV2ZXIgZWxzZSBpcyB1c2VkIHRvIGNvbnRyb2wgdXNlci1hY2NvdW50IHN0YXRlIGdyb3d0aCkuPQEtIGBpc19mcm96ZW5gOiBXaGV0aGVyIHRoaXMgYXNzZXQgY2xhc3MgaXMgZnJvemVuIGV4Y2VwdCBmb3IgcGVybWlzc2lvbmVkL2FkbWluNGluc3RydWN0aW9ucy4A6EVtaXRzIGBBc3NldFN0YXR1c0NoYW5nZWRgIHdpdGggdGhlIGlkZW50aXR5IG9mIHRoZSBhc3NldC4AOFdlaWdodDogYE8oMSlgQGFwcHJvdmVfdHJhbnNmZXIMAQhpZGQBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAASBkZWxlZ2F0ZQABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYYW1vdW50VQEBKFQ6OkJhbGFuY2UAFlAtAUFwcHJvdmUgYW4gYW1vdW50IG9mIGFzc2V0IGZvciB0cmFuc2ZlciBieSBhIGRlbGVnYXRlZCB0aGlyZC1wYXJ0eSBhY2NvdW50LgBYT3JpZ2luIG11c3QgYmUgU2lnbmVkLgBNAUVuc3VyZXMgdGhhdCBgQXBwcm92YWxEZXBvc2l0YCB3b3J0aCBvZiBgQ3VycmVuY3lgIGlzIHJlc2VydmVkIGZyb20gc2lnbmluZyBhY2NvdW50VQFmb3IgdGhlIHB1cnBvc2Ugb2YgaG9sZGluZyB0aGUgYXBwcm92YWwuIElmIHNvbWUgbm9uLXplcm8gYW1vdW50IG9mIGFzc2V0cyBpcyBhbHJlYWR5SQFhcHByb3ZlZCBmcm9tIHNpZ25pbmcgYWNjb3VudCB0byBgZGVsZWdhdGVgLCB0aGVuIGl0IGlzIHRvcHBlZCB1cCBvciB1bnJlc2VydmVkIHRvVG1lZXQgdGhlIHJpZ2h0IHZhbHVlLgBFAU5PVEU6IFRoZSBzaWduaW5nIGFjY291bnQgZG9lcyBub3QgbmVlZCB0byBvd24gYGFtb3VudGAgb2YgYXNzZXRzIGF0IHRoZSBwb2ludCBvZkRtYWtpbmcgdGhpcyBjYWxsLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQuDQEtIGBkZWxlZ2F0ZWA6IFRoZSBhY2NvdW50IHRvIGRlbGVnYXRlIHBlcm1pc3Npb24gdG8gdHJhbnNmZXIgYXNzZXQuSQEtIGBhbW91bnRgOiBUaGUgYW1vdW50IG9mIGFzc2V0IHRoYXQgbWF5IGJlIHRyYW5zZmVycmVkIGJ5IGBkZWxlZ2F0ZWAuIElmIHRoZXJlIGlz4GFscmVhZHkgYW4gYXBwcm92YWwgaW4gcGxhY2UsIHRoZW4gdGhpcyBhY3RzIGFkZGl0aXZlbHkuAJBFbWl0cyBgQXBwcm92ZWRUcmFuc2ZlcmAgb24gc3VjY2Vzcy4AOFdlaWdodDogYE8oMSlgPGNhbmNlbF9hcHByb3ZhbAgBCGlkZAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABIGRlbGVnYXRlAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AFzRJAUNhbmNlbCBhbGwgb2Ygc29tZSBhc3NldCBhcHByb3ZlZCBmb3IgZGVsZWdhdGVkIHRyYW5zZmVyIGJ5IGEgdGhpcmQtcGFydHkgYWNjb3VudC4APQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZXJlIG11c3QgYmUgYW4gYXBwcm92YWwgaW4gcGxhY2UgYmV0d2VlbiBzaWduZXIgYW5kLGBkZWxlZ2F0ZWAuAEkBVW5yZXNlcnZlcyBhbnkgZGVwb3NpdCBwcmV2aW91c2x5IHJlc2VydmVkIGJ5IGBhcHByb3ZlX3RyYW5zZmVyYCBmb3IgdGhlIGFwcHJvdmFsLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQuBQEtIGBkZWxlZ2F0ZWA6IFRoZSBhY2NvdW50IGRlbGVnYXRlZCBwZXJtaXNzaW9uIHRvIHRyYW5zZmVyIGFzc2V0LgCURW1pdHMgYEFwcHJvdmFsQ2FuY2VsbGVkYCBvbiBzdWNjZXNzLgA4V2VpZ2h0OiBgTygxKWBUZm9yY2VfY2FuY2VsX2FwcHJvdmFsDAEIaWRkAUxUOjpBc3NldElkUGFyYW1ldGVyAAEUb3duZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABIGRlbGVnYXRlAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AGDRJAUNhbmNlbCBhbGwgb2Ygc29tZSBhc3NldCBhcHByb3ZlZCBmb3IgZGVsZWdhdGVkIHRyYW5zZmVyIGJ5IGEgdGhpcmQtcGFydHkgYWNjb3VudC4ASQFPcmlnaW4gbXVzdCBiZSBlaXRoZXIgRm9yY2VPcmlnaW4gb3IgU2lnbmVkIG9yaWdpbiB3aXRoIHRoZSBzaWduZXIgYmVpbmcgdGhlIEFkbWluaGFjY291bnQgb2YgdGhlIGFzc2V0IGBpZGAuAEkBVW5yZXNlcnZlcyBhbnkgZGVwb3NpdCBwcmV2aW91c2x5IHJlc2VydmVkIGJ5IGBhcHByb3ZlX3RyYW5zZmVyYCBmb3IgdGhlIGFwcHJvdmFsLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQuBQEtIGBkZWxlZ2F0ZWA6IFRoZSBhY2NvdW50IGRlbGVnYXRlZCBwZXJtaXNzaW9uIHRvIHRyYW5zZmVyIGFzc2V0LgCURW1pdHMgYEFwcHJvdmFsQ2FuY2VsbGVkYCBvbiBzdWNjZXNzLgA4V2VpZ2h0OiBgTygxKWBEdHJhbnNmZXJfYXBwcm92ZWQQAQhpZGQBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARRvd25lcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEsZGVzdGluYXRpb24AAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGFtb3VudFUBAShUOjpCYWxhbmNlABlITQFUcmFuc2ZlciBzb21lIGFzc2V0IGJhbGFuY2UgZnJvbSBhIHByZXZpb3VzbHkgZGVsZWdhdGVkIGFjY291bnQgdG8gc29tZSB0aGlyZC1wYXJ0eSBhY2NvdW50LgBJAU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlcmUgbXVzdCBiZSBhbiBhcHByb3ZhbCBpbiBwbGFjZSBieSB0aGUgYG93bmVyYCB0byB0aGUcc2lnbmVyLgBZAUlmIHRoZSBlbnRpcmUgYW1vdW50IGFwcHJvdmVkIGZvciB0cmFuc2ZlciBpcyB0cmFuc2ZlcnJlZCwgdGhlbiBhbnkgZGVwb3NpdCBwcmV2aW91c2x5tHJlc2VydmVkIGJ5IGBhcHByb3ZlX3RyYW5zZmVyYCBpcyB1bnJlc2VydmVkLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQuYQEtIGBvd25lcmA6IFRoZSBhY2NvdW50IHdoaWNoIHByZXZpb3VzbHkgYXBwcm92ZWQgZm9yIGEgdHJhbnNmZXIgb2YgYXQgbGVhc3QgYGFtb3VudGAgYW5kvGZyb20gd2hpY2ggdGhlIGFzc2V0IGJhbGFuY2Ugd2lsbCBiZSB3aXRoZHJhd24uYQEtIGBkZXN0aW5hdGlvbmA6IFRoZSBhY2NvdW50IHRvIHdoaWNoIHRoZSBhc3NldCBiYWxhbmNlIG9mIGBhbW91bnRgIHdpbGwgYmUgdHJhbnNmZXJyZWQutC0gYGFtb3VudGA6IFRoZSBhbW91bnQgb2YgYXNzZXRzIHRvIHRyYW5zZmVyLgCcRW1pdHMgYFRyYW5zZmVycmVkQXBwcm92ZWRgIG9uIHN1Y2Nlc3MuADhXZWlnaHQ6IGBPKDEpYBR0b3VjaAQBCGlkZAFMVDo6QXNzZXRJZFBhcmFtZXRlcgAaJMBDcmVhdGUgYW4gYXNzZXQgYWNjb3VudCBmb3Igbm9uLXByb3ZpZGVyIGFzc2V0cy4AwEEgZGVwb3NpdCB3aWxsIGJlIHRha2VuIGZyb20gdGhlIHNpZ25lciBhY2NvdW50LgBdAS0gYG9yaWdpbmA6IE11c3QgYmUgU2lnbmVkOyB0aGUgc2lnbmVyIGFjY291bnQgbXVzdCBoYXZlIHN1ZmZpY2llbnQgZnVuZHMgZm9yIGEgZGVwb3NpdDggIHRvIGJlIHRha2VuLgkBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgZm9yIHRoZSBhY2NvdW50IHRvIGJlIGNyZWF0ZWQuAJhFbWl0cyBgVG91Y2hlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLhhyZWZ1bmQIAQhpZGQBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAAShhbGxvd19idXJuXQEBEGJvb2wAGzRZAVJldHVybiB0aGUgZGVwb3NpdCAoaWYgYW55KSBvZiBhbiBhc3NldCBhY2NvdW50IG9yIGEgY29uc3VtZXIgcmVmZXJlbmNlIChpZiBhbnkpIG9mIGFuIGFjY291bnQuAGhUaGUgb3JpZ2luIG11c3QgYmUgU2lnbmVkLgA9AS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IGZvciB3aGljaCB0aGUgY2FsbGVyIHdvdWxkIGxpa2UgdGhlIGRlcG9zaXQsICByZWZ1bmRlZC5dAS0gYGFsbG93X2J1cm5gOiBJZiBgdHJ1ZWAgdGhlbiBhc3NldHMgbWF5IGJlIGRlc3Ryb3llZCBpbiBvcmRlciB0byBjb21wbGV0ZSB0aGUgcmVmdW5kLgBJAUl0IHdpbGwgZmFpbCB3aXRoIGVpdGhlciBbYEVycm9yOjpDb250YWluc0hvbGRzYF0gb3IgW2BFcnJvcjo6Q29udGFpbnNGcmVlemVzYF0gaWbUdGhlIGFzc2V0IGFjY291bnQgY29udGFpbnMgaG9sZHMgb3IgZnJlZXplcyBpbiBwbGFjZS4AnEVtaXRzIGBSZWZ1bmRlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLjxzZXRfbWluX2JhbGFuY2UIAQhpZGQBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAASxtaW5fYmFsYW5jZVkBAShUOjpCYWxhbmNlABwwlFNldHMgdGhlIG1pbmltdW0gYmFsYW5jZSBvZiBhbiBhc3NldC4AIQFPbmx5IHdvcmtzIGlmIHRoZXJlIGFyZW4ndCBhbnkgYWNjb3VudHMgdGhhdCBhcmUgaG9sZGluZyB0aGUgYXNzZXQgb3IgaWbgdGhlIG5ldyB2YWx1ZSBvZiBgbWluX2JhbGFuY2VgIGlzIGxlc3MgdGhhbiB0aGUgb2xkIG9uZS4A/E9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBoYXMgdG8gYmUgdGhlIE93bmVyIG9mIHRoZSxhc3NldCBgaWRgLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQuwC0gYG1pbl9iYWxhbmNlYDogVGhlIG5ldyB2YWx1ZSBvZiBgbWluX2JhbGFuY2VgLgDURW1pdHMgYEFzc2V0TWluQmFsYW5jZUNoYW5nZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4sdG91Y2hfb3RoZXIIAQhpZGQBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAAQx3aG8AAVBBY2NvdW50SWRMb29rdXBPZjxUPgAdLIhDcmVhdGUgYW4gYXNzZXQgYWNjb3VudCBmb3IgYHdob2AuAMBBIGRlcG9zaXQgd2lsbCBiZSB0YWtlbiBmcm9tIHRoZSBzaWduZXIgYWNjb3VudC4AXQEtIGBvcmlnaW5gOiBNdXN0IGJlIFNpZ25lZDsgdGhlIHNpZ25lciBhY2NvdW50IG11c3QgaGF2ZSBzdWZmaWNpZW50IGZ1bmRzIGZvciBhIGRlcG9zaXQ4ICB0byBiZSB0YWtlbi5hAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IGZvciB0aGUgYWNjb3VudCB0byBiZSBjcmVhdGVkLCB0aGUgYXNzZXQgc3RhdHVzIG11c3QoICBiZSBsaXZlLowtIGB3aG9gOiBUaGUgYWNjb3VudCB0byBiZSBjcmVhdGVkLgCYRW1pdHMgYFRvdWNoZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4wcmVmdW5kX290aGVyCAEIaWRkAUxUOjpBc3NldElkUGFyYW1ldGVyAAEMd2hvAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AHjRdAVJldHVybiB0aGUgZGVwb3NpdCAoaWYgYW55KSBvZiBhIHRhcmdldCBhc3NldCBhY2NvdW50LiBVc2VmdWwgaWYgeW91IGFyZSB0aGUgZGVwb3NpdG9yLgBdAVRoZSBvcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIGVpdGhlciB0aGUgYWNjb3VudCBvd25lciwgZGVwb3NpdG9yLCBvciBhc3NldCBgQWRtaW5gLiBJbmEBb3JkZXIgdG8gYnVybiBhIG5vbi16ZXJvIGJhbGFuY2Ugb2YgdGhlIGFzc2V0LCB0aGUgY2FsbGVyIG11c3QgYmUgdGhlIGFjY291bnQgYW5kIHNob3VsZDR1c2UgYHJlZnVuZGAuABkBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgZm9yIHRoZSBhY2NvdW50IGhvbGRpbmcgYSBkZXBvc2l0LnwtIGB3aG9gOiBUaGUgYWNjb3VudCB0byByZWZ1bmQuAEkBSXQgd2lsbCBmYWlsIHdpdGggZWl0aGVyIFtgRXJyb3I6OkNvbnRhaW5zSG9sZHNgXSBvciBbYEVycm9yOjpDb250YWluc0ZyZWV6ZXNgXSBpZtR0aGUgYXNzZXQgYWNjb3VudCBjb250YWlucyBob2xkcyBvciBmcmVlemVzIGluIHBsYWNlLgCcRW1pdHMgYFJlZnVuZGVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuFGJsb2NrCAEIaWRkAUxUOjpBc3NldElkUGFyYW1ldGVyAAEMd2hvAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AHyhZAURpc2FsbG93IGZ1cnRoZXIgdW5wcml2aWxlZ2VkIHRyYW5zZmVycyBvZiBhbiBhc3NldCBgaWRgIHRvIGFuZCBmcm9tIGFuIGFjY291bnQgYHdob2AuADUBT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgRnJlZXplciBvZiB0aGUgYXNzZXQgYGlkYC4AuC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFjY291bnQncyBhc3NldC6ULSBgd2hvYDogVGhlIGFjY291bnQgdG8gYmUgdW5ibG9ja2VkLgBARW1pdHMgYEJsb2NrZWRgLgA4V2VpZ2h0OiBgTygxKWAwdHJhbnNmZXJfYWxsDAEIaWRkAUxUOjpBc3NldElkUGFyYW1ldGVyAAEQZGVzdAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEoa2VlcF9hbGl2ZV0BARBib29sACBAHQFUcmFuc2ZlciB0aGUgZW50aXJlIHRyYW5zZmVyYWJsZSBiYWxhbmNlIGZyb20gdGhlIGNhbGxlciBhc3NldCBhY2NvdW50LgBZAU5PVEU6IFRoaXMgZnVuY3Rpb24gb25seSBhdHRlbXB0cyB0byB0cmFuc2ZlciBfdHJhbnNmZXJhYmxlXyBiYWxhbmNlcy4gVGhpcyBtZWFucyB0aGF0PQFhbnkgaGVsZCwgZnJvemVuLCBvciBtaW5pbXVtIGJhbGFuY2UgKHdoZW4gYGtlZXBfYWxpdmVgIGlzIGB0cnVlYCksIHdpbGwgbm90IGJlXQF0cmFuc2ZlcnJlZCBieSB0aGlzIGZ1bmN0aW9uLiBUbyBlbnN1cmUgdGhhdCB0aGlzIGZ1bmN0aW9uIHJlc3VsdHMgaW4gYSBraWxsZWQgYWNjb3VudCxFAXlvdSBtaWdodCBuZWVkIHRvIHByZXBhcmUgdGhlIGFjY291bnQgYnkgcmVtb3ZpbmcgYW55IHJlZmVyZW5jZSBjb3VudGVycywgc3RvcmFnZUBkZXBvc2l0cywgZXRjLi4uAMBUaGUgZGlzcGF0Y2ggb3JpZ2luIG9mIHRoaXMgY2FsbCBtdXN0IGJlIFNpZ25lZC4AGQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCBmb3IgdGhlIGFjY291bnQgaG9sZGluZyBhIGRlcG9zaXQuoC0gYGRlc3RgOiBUaGUgcmVjaXBpZW50IG9mIHRoZSB0cmFuc2Zlci5ZAS0gYGtlZXBfYWxpdmVgOiBBIGJvb2xlYW4gdG8gZGV0ZXJtaW5lIGlmIHRoZSBgdHJhbnNmZXJfYWxsYCBvcGVyYXRpb24gc2hvdWxkIHNlbmQgYWxsTQEgIG9mIHRoZSBmdW5kcyB0aGUgYXNzZXQgYWNjb3VudCBoYXMsIGNhdXNpbmcgdGhlIHNlbmRlciBhc3NldCBhY2NvdW50IHRvIGJlIGtpbGxlZEUBICAoZmFsc2UpLCBvciB0cmFuc2ZlciBldmVyeXRoaW5nIGV4Y2VwdCBhdCBsZWFzdCB0aGUgbWluaW11bSBiYWxhbmNlLCB3aGljaCB3aWxs6CAgZ3VhcmFudGVlIHRvIGtlZXAgdGhlIHNlbmRlciBhc3NldCBhY2NvdW50IGFsaXZlICh0cnVlKS4wc2V0X3Jlc2VydmVzCAEIaWRkAUxUOjpBc3NldElkUGFyYW1ldGVyAAEgcmVzZXJ2ZXNJBAHIQm91bmRlZFZlYzxUOjpSZXNlcnZlRGF0YSwgQ29uc3RVMzI8TUFYX1JFU0VSVkVTPj4AISTEU2V0cyB0aGUgdHJ1c3RlZCByZXNlcnZlIGluZm9ybWF0aW9uIG9mIGFuIGFzc2V0LgBVAU9yaWdpbiBtdXN0IGJlIHRoZSBPd25lciBvZiB0aGUgYXNzZXQgYGlkYC4gVGhlIG9yaWdpbiBtdXN0IGNvbmZvcm0gdG8gdGhlIGNvbmZpZ3VyZWQlAWBDcmVhdGVPcmlnaW5gIG9yIGJlIHRoZSBzaWduZWQgYG93bmVyYCBjb25maWd1cmVkIGR1cmluZyBhc3NldCBjcmVhdGlvbi4AkC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0LvAtIGByZXNlcnZlc2A6IFRoZSBmdWxsIGxpc3Qgb2YgdHJ1c3RlZCByZXNlcnZlcyBpbmZvcm1hdGlvbi4A1EVtaXRzIGBBc3NldE1pbkJhbGFuY2VDaGFuZ2VkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLkkEDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBEARTAAAEAE0EARhWZWM8VD4AAE0EAAACEABRBAw4cGFsbGV0X3VuaXF1ZXMYcGFsbGV0EENhbGwIBFQABEkAAWgYY3JlYXRlCAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABFGFkbWluAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AAEAJAUlzc3VlIGEgbmV3IGNvbGxlY3Rpb24gb2Ygbm9uLWZ1bmdpYmxlIGl0ZW1zIGZyb20gYSBwdWJsaWMgb3JpZ2luLgAdAVRoaXMgbmV3IGNvbGxlY3Rpb24gaGFzIG5vIGl0ZW1zIGluaXRpYWxseSBhbmQgaXRzIG93bmVyIGlzIHRoZSBvcmlnaW4uAGEBVGhlIG9yaWdpbiBtdXN0IGNvbmZvcm0gdG8gdGhlIGNvbmZpZ3VyZWQgYENyZWF0ZU9yaWdpbmAgYW5kIGhhdmUgc3VmZmljaWVudCBmdW5kcyBmcmVlLgCsYEl0ZW1EZXBvc2l0YCBmdW5kcyBvZiBzZW5kZXIgYXJlIHJlc2VydmVkLgAsUGFyYW1ldGVyczphAS0gYGNvbGxlY3Rpb25gOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgbmV3IGNvbGxlY3Rpb24uIFRoaXMgbXVzdCBub3QgYmUgY3VycmVudGx5IGluIHVzZS5FAS0gYGFkbWluYDogVGhlIGFkbWluIG9mIHRoaXMgY29sbGVjdGlvbi4gVGhlIGFkbWluIGlzIHRoZSBpbml0aWFsIGFkZHJlc3Mgb2YgZWFjaJhtZW1iZXIgb2YgdGhlIGNvbGxlY3Rpb24ncyBhZG1pbiB0ZWFtLgCYRW1pdHMgYENyZWF0ZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4AOFdlaWdodDogYE8oMSlgMGZvcmNlX2NyZWF0ZQwBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARRvd25lcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEwZnJlZV9ob2xkaW5nXQEBEGJvb2wAAUQZAUlzc3VlIGEgbmV3IGNvbGxlY3Rpb24gb2Ygbm9uLWZ1bmdpYmxlIGl0ZW1zIGZyb20gYSBwcml2aWxlZ2VkIG9yaWdpbi4ArFRoaXMgbmV3IGNvbGxlY3Rpb24gaGFzIG5vIGl0ZW1zIGluaXRpYWxseS4ApFRoZSBvcmlnaW4gbXVzdCBjb25mb3JtIHRvIGBGb3JjZU9yaWdpbmAuAJxVbmxpa2UgYGNyZWF0ZWAsIG5vIGZ1bmRzIGFyZSByZXNlcnZlZC4ASQEtIGBjb2xsZWN0aW9uYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIG5ldyBpdGVtLiBUaGlzIG11c3Qgbm90IGJlIGN1cnJlbnRseSBpbiB1c2UuOQEtIGBvd25lcmA6IFRoZSBvd25lciBvZiB0aGlzIGNvbGxlY3Rpb24gb2YgaXRlbXMuIFRoZSBvd25lciBoYXMgZnVsbCBzdXBlcnVzZXI0ICBwZXJtaXNzaW9ucyEBb3ZlciB0aGlzIGl0ZW0sIGJ1dCBtYXkgbGF0ZXIgY2hhbmdlIGFuZCBjb25maWd1cmUgdGhlIHBlcm1pc3Npb25zIHVzaW5nkGB0cmFuc2Zlcl9vd25lcnNoaXBgIGFuZCBgc2V0X3RlYW1gLgCsRW1pdHMgYEZvcmNlQ3JlYXRlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLgA4V2VpZ2h0OiBgTygxKWAcZGVzdHJveQgBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARx3aXRuZXNzVQQBOERlc3Ryb3lXaXRuZXNzAAI8nERlc3Ryb3kgYSBjb2xsZWN0aW9uIG9mIGZ1bmdpYmxlIGl0ZW1zLgBdAVRoZSBvcmlnaW4gbXVzdCBjb25mb3JtIHRvIGBGb3JjZU9yaWdpbmAgb3IgbXVzdCBiZSBgU2lnbmVkYCBhbmQgdGhlIHNlbmRlciBtdXN0IGJlIHRoZWhvd25lciBvZiB0aGUgYGNvbGxlY3Rpb25gLgAFAS0gYGNvbGxlY3Rpb25gOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgY29sbGVjdGlvbiB0byBiZSBkZXN0cm95ZWQuMQEtIGB3aXRuZXNzYDogSW5mb3JtYXRpb24gb24gdGhlIGl0ZW1zIG1pbnRlZCBpbiB0aGUgY29sbGVjdGlvbi4gVGhpcyBtdXN0IGJlIGNvcnJlY3QuAKBFbWl0cyBgRGVzdHJveWVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuAGRXZWlnaHQ6IGBPKG4gKyBtKWAgd2hlcmU6VC0gYG4gPSB3aXRuZXNzLml0ZW1zYHgtIGBtID0gd2l0bmVzcy5pdGVtX21ldGFkYXRhc2BoLSBgYSA9IHdpdG5lc3MuYXR0cmlidXRlc2AQbWludAwBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAEUb3duZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgADLKBNaW50IGFuIGl0ZW0gb2YgYSBwYXJ0aWN1bGFyIGNvbGxlY3Rpb24uAEEBVGhlIG9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBtdXN0IGJlIHRoZSBJc3N1ZXIgb2YgdGhlIGBjb2xsZWN0aW9uYC4A4C0gYGNvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiBvZiB0aGUgaXRlbSB0byBiZSBtaW50ZWQuyC0gYGl0ZW1gOiBUaGUgaXRlbSB2YWx1ZSBvZiB0aGUgaXRlbSB0byBiZSBtaW50ZWQu2C0gYGJlbmVmaWNpYXJ5YDogVGhlIGluaXRpYWwgb3duZXIgb2YgdGhlIG1pbnRlZCBpdGVtLgCURW1pdHMgYElzc3VlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLgA4V2VpZ2h0OiBgTygxKWAQYnVybgwBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAEsY2hlY2tfb3duZXJZBAFwT3B0aW9uPEFjY291bnRJZExvb2t1cE9mPFQ+PgAEPFhEZXN0cm95IGEgc2luZ2xlIGl0ZW0uAPRPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzaWduaW5nIGFjY291bnQgbXVzdCBiZSBlaXRoZXI6gC0gdGhlIEFkbWluIG9mIHRoZSBgY29sbGVjdGlvbmA7aC0gdGhlIE93bmVyIG9mIHRoZSBgaXRlbWA7AOAtIGBjb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gb2YgdGhlIGl0ZW0gdG8gYmUgYnVybmVkLrAtIGBpdGVtYDogVGhlIGl0ZW0gb2YgdGhlIGl0ZW0gdG8gYmUgYnVybmVkLlEBLSBgY2hlY2tfb3duZXJgOiBJZiBgU29tZWAgdGhlbiB0aGUgb3BlcmF0aW9uIHdpbGwgZmFpbCB3aXRoIGBXcm9uZ093bmVyYCB1bmxlc3MgdGhleCAgaXRlbSBpcyBvd25lZCBieSB0aGlzIHZhbHVlLgC0RW1pdHMgYEJ1cm5lZGAgd2l0aCB0aGUgYWN0dWFsIGFtb3VudCBidXJuZWQuADhXZWlnaHQ6IGBPKDEpYHxNb2RlczogYGNoZWNrX293bmVyLmlzX3NvbWUoKWAuIHRyYW5zZmVyDAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAARBkZXN0AAFQQWNjb3VudElkTG9va3VwT2Y8VD4ABUTATW92ZSBhbiBpdGVtIGZyb20gdGhlIHNlbmRlciBhY2NvdW50IHRvIGFub3RoZXIuALRUaGlzIHJlc2V0cyB0aGUgYXBwcm92ZWQgYWNjb3VudCBvZiB0aGUgaXRlbS4A9E9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNpZ25pbmcgYWNjb3VudCBtdXN0IGJlIGVpdGhlcjqALSB0aGUgQWRtaW4gb2YgdGhlIGBjb2xsZWN0aW9uYDtoLSB0aGUgT3duZXIgb2YgdGhlIGBpdGVtYDs1AS0gdGhlIGFwcHJvdmVkIGRlbGVnYXRlIGZvciB0aGUgYGl0ZW1gIChpbiB0aGlzIGNhc2UsIHRoZSBhcHByb3ZhbCBpcyByZXNldCkuAChBcmd1bWVudHM69C0gYGNvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiBvZiB0aGUgaXRlbSB0byBiZSB0cmFuc2ZlcnJlZC7ELSBgaXRlbWA6IFRoZSBpdGVtIG9mIHRoZSBpdGVtIHRvIGJlIHRyYW5zZmVycmVkLtwtIGBkZXN0YDogVGhlIGFjY291bnQgdG8gcmVjZWl2ZSBvd25lcnNoaXAgb2YgdGhlIGl0ZW0uAFBFbWl0cyBgVHJhbnNmZXJyZWRgLgA4V2VpZ2h0OiBgTygxKWAkcmVkZXBvc2l0CAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABFGl0ZW1zXQQBOFZlYzxUOjpJdGVtSWQ+AAZEmFJlZXZhbHVhdGUgdGhlIGRlcG9zaXRzIG9uIHNvbWUgaXRlbXMuADUBT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgT3duZXIgb2YgdGhlIGBjb2xsZWN0aW9uYC4AsC0gYGNvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiB0byBiZSBmcm96ZW4uKQEtIGBpdGVtc2A6IFRoZSBpdGVtcyBvZiB0aGUgY29sbGVjdGlvbiB3aG9zZSBkZXBvc2l0cyB3aWxsIGJlIHJlZXZhbHVhdGVkLgAtAU5PVEU6IFRoaXMgZXhpc3RzIGFzIGEgYmVzdC1lZmZvcnQgZnVuY3Rpb24uIEFueSBpdGVtcyB3aGljaCBhcmUgdW5rbm93biBvcjkBaW4gdGhlIGNhc2UgdGhhdCB0aGUgb3duZXIgYWNjb3VudCBkb2VzIG5vdCBoYXZlIHJlc2VydmFibGUgZnVuZHMgdG8gcGF5IGZvciBhTQFkZXBvc2l0IGluY3JlYXNlIGFyZSBpZ25vcmVkLiBHZW5lcmFsbHkgdGhlIG93bmVyIGlzbid0IGdvaW5nIHRvIGNhbGwgdGhpcyBvbiBpdGVtc1UBd2hvc2UgZXhpc3RpbmcgZGVwb3NpdCBpcyBsZXNzIHRoYW4gdGhlIHJlZnJlc2hlZCBkZXBvc2l0IGFzIGl0IHdvdWxkIG9ubHkgY29zdCB0aGVtLHhzbyBpdCdzIG9mIGxpdHRsZSBjb25zZXF1ZW5jZS4AWQFJdCB3aWxsIHN0aWxsIHJldHVybiBhbiBlcnJvciBpbiB0aGUgY2FzZSB0aGF0IHRoZSBjb2xsZWN0aW9uIGlzIHVua25vd24gb2YgdGhlIHNpZ25lcnBpcyBub3QgcGVybWl0dGVkIHRvIGNhbGwgaXQuAGBXZWlnaHQ6IGBPKGl0ZW1zLmxlbigpKWAYZnJlZXplCAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAByjIRGlzYWxsb3cgZnVydGhlciB1bnByaXZpbGVnZWQgdHJhbnNmZXIgb2YgYW4gaXRlbS4APQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBGcmVlemVyIG9mIHRoZSBgY29sbGVjdGlvbmAuAOAtIGBjb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gb2YgdGhlIGl0ZW0gdG8gYmUgZnJvemVuLrAtIGBpdGVtYDogVGhlIGl0ZW0gb2YgdGhlIGl0ZW0gdG8gYmUgZnJvemVuLgA8RW1pdHMgYEZyb3plbmAuADhXZWlnaHQ6IGBPKDEpYBB0aGF3CAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQACCioUmUtYWxsb3cgdW5wcml2aWxlZ2VkIHRyYW5zZmVyIG9mIGFuIGl0ZW0uAD0BT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgRnJlZXplciBvZiB0aGUgYGNvbGxlY3Rpb25gLgDgLSBgY29sbGVjdGlvbmA6IFRoZSBjb2xsZWN0aW9uIG9mIHRoZSBpdGVtIHRvIGJlIHRoYXdlZC6wLSBgaXRlbWA6IFRoZSBpdGVtIG9mIHRoZSBpdGVtIHRvIGJlIHRoYXdlZC4APEVtaXRzIGBUaGF3ZWRgLgA4V2VpZ2h0OiBgTygxKWBEZnJlZXplX2NvbGxlY3Rpb24EAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAkk/ERpc2FsbG93IGZ1cnRoZXIgdW5wcml2aWxlZ2VkIHRyYW5zZmVycyBmb3IgYSB3aG9sZSBjb2xsZWN0aW9uLgA9AU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEZyZWV6ZXIgb2YgdGhlIGBjb2xsZWN0aW9uYC4AsC0gYGNvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiB0byBiZSBmcm96ZW4uAGRFbWl0cyBgQ29sbGVjdGlvbkZyb3plbmAuADhXZWlnaHQ6IGBPKDEpYDx0aGF3X2NvbGxlY3Rpb24EAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAok3FJlLWFsbG93IHVucHJpdmlsZWdlZCB0cmFuc2ZlcnMgZm9yIGEgd2hvbGUgY29sbGVjdGlvbi4ANQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBBZG1pbiBvZiB0aGUgYGNvbGxlY3Rpb25gLgCwLSBgY29sbGVjdGlvbmA6IFRoZSBjb2xsZWN0aW9uIHRvIGJlIHRoYXdlZC4AZEVtaXRzIGBDb2xsZWN0aW9uVGhhd2VkYC4AOFdlaWdodDogYE8oMSlgSHRyYW5zZmVyX293bmVyc2hpcAgBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAASRuZXdfb3duZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgALLIRDaGFuZ2UgdGhlIE93bmVyIG9mIGEgY29sbGVjdGlvbi4ANQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBPd25lciBvZiB0aGUgYGNvbGxlY3Rpb25gLgD0LSBgY29sbGVjdGlvbmA6IFRoZSBjb2xsZWN0aW9uIHdob3NlIG93bmVyIHNob3VsZCBiZSBjaGFuZ2VkLgkBLSBgb3duZXJgOiBUaGUgbmV3IE93bmVyIG9mIHRoaXMgY29sbGVjdGlvbi4gVGhleSBtdXN0IGhhdmUgY2FsbGVkSQEgIGBzZXRfYWNjZXB0X293bmVyc2hpcGAgd2l0aCBgY29sbGVjdGlvbmAgaW4gb3JkZXIgZm9yIHRoaXMgb3BlcmF0aW9uIHRvIHN1Y2NlZWQuAFRFbWl0cyBgT3duZXJDaGFuZ2VkYC4AOFdlaWdodDogYE8oMSlgIHNldF90ZWFtEAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABGGlzc3VlcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEUYWRtaW4AAVBBY2NvdW50SWRMb29rdXBPZjxUPgABHGZyZWV6ZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgAMMNRDaGFuZ2UgdGhlIElzc3VlciwgQWRtaW4gYW5kIEZyZWV6ZXIgb2YgYSBjb2xsZWN0aW9uLgA1AU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIE93bmVyIG9mIHRoZSBgY29sbGVjdGlvbmAuAPAtIGBjb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gd2hvc2UgdGVhbSBzaG91bGQgYmUgY2hhbmdlZC64LSBgaXNzdWVyYDogVGhlIG5ldyBJc3N1ZXIgb2YgdGhpcyBjb2xsZWN0aW9uLrAtIGBhZG1pbmA6IFRoZSBuZXcgQWRtaW4gb2YgdGhpcyBjb2xsZWN0aW9uLsAtIGBmcmVlemVyYDogVGhlIG5ldyBGcmVlemVyIG9mIHRoaXMgY29sbGVjdGlvbi4AUEVtaXRzIGBUZWFtQ2hhbmdlZGAuADhXZWlnaHQ6IGBPKDEpYEBhcHByb3ZlX3RyYW5zZmVyDAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAASBkZWxlZ2F0ZQABUEFjY291bnRJZExvb2t1cE9mPFQ+AA04FQFBcHByb3ZlIGFuIGl0ZW0gdG8gYmUgdHJhbnNmZXJyZWQgYnkgYSBkZWxlZ2F0ZWQgdGhpcmQtcGFydHkgYWNjb3VudC4ATQFUaGUgb3JpZ2luIG11c3QgY29uZm9ybSB0byBgRm9yY2VPcmlnaW5gIG9yIG11c3QgYmUgYFNpZ25lZGAgYW5kIHRoZSBzZW5kZXIgbXVzdCBiZfhlaXRoZXIgdGhlIG93bmVyIG9mIHRoZSBgaXRlbWAgb3IgdGhlIGFkbWluIG9mIHRoZSBjb2xsZWN0aW9uLgBFAS0gYGNvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiBvZiB0aGUgaXRlbSB0byBiZSBhcHByb3ZlZCBmb3IgZGVsZWdhdGVkIHRyYW5zZmVyLhUBLSBgaXRlbWA6IFRoZSBpdGVtIG9mIHRoZSBpdGVtIHRvIGJlIGFwcHJvdmVkIGZvciBkZWxlZ2F0ZWQgdHJhbnNmZXIuGQEtIGBkZWxlZ2F0ZWA6IFRoZSBhY2NvdW50IHRvIGRlbGVnYXRlIHBlcm1pc3Npb24gdG8gdHJhbnNmZXIgdGhlIGl0ZW0uABkBSW1wb3J0YW50IE5PVEU6IFRoZSBgYXBwcm92ZWRgIGFjY291bnQgZ2V0cyByZXNldCBhZnRlciBlYWNoIHRyYW5zZmVyLgCQRW1pdHMgYEFwcHJvdmVkVHJhbnNmZXJgIG9uIHN1Y2Nlc3MuADhXZWlnaHQ6IGBPKDEpYDxjYW5jZWxfYXBwcm92YWwMAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAABUG1heWJlX2NoZWNrX2RlbGVnYXRlWQQBcE9wdGlvbjxBY2NvdW50SWRMb29rdXBPZjxUPj4ADkARAUNhbmNlbCB0aGUgcHJpb3IgYXBwcm92YWwgZm9yIHRoZSB0cmFuc2ZlciBvZiBhbiBpdGVtIGJ5IGEgZGVsZWdhdGUuAFhPcmlnaW4gbXVzdCBiZSBlaXRoZXI6VC0gdGhlIGBGb3JjZWAgb3JpZ2luO/wtIGBTaWduZWRgIHdpdGggdGhlIHNpZ25lciBiZWluZyB0aGUgQWRtaW4gb2YgdGhlIGBjb2xsZWN0aW9uYDvkLSBgU2lnbmVkYCB3aXRoIHRoZSBzaWduZXIgYmVpbmcgdGhlIE93bmVyIG9mIHRoZSBgaXRlbWA7AChBcmd1bWVudHM6PQEtIGBjb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gb2YgdGhlIGl0ZW0gb2Ygd2hvc2UgYXBwcm92YWwgd2lsbCBiZSBjYW5jZWxsZWQuDQEtIGBpdGVtYDogVGhlIGl0ZW0gb2YgdGhlIGl0ZW0gb2Ygd2hvc2UgYXBwcm92YWwgd2lsbCBiZSBjYW5jZWxsZWQuUQEtIGBtYXliZV9jaGVja19kZWxlZ2F0ZWA6IElmIGBTb21lYCB3aWxsIGVuc3VyZSB0aGF0IHRoZSBnaXZlbiBhY2NvdW50IGlzIHRoZSBvbmUgdG+wICB3aGljaCBwZXJtaXNzaW9uIG9mIHRyYW5zZmVyIGlzIGRlbGVnYXRlZC4AlEVtaXRzIGBBcHByb3ZhbENhbmNlbGxlZGAgb24gc3VjY2Vzcy4AOFdlaWdodDogYE8oMSlgRGZvcmNlX2l0ZW1fc3RhdHVzHAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABFG93bmVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARhpc3N1ZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABFGFkbWluAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARxmcmVlemVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AATBmcmVlX2hvbGRpbmddAQEQYm9vbAABJGlzX2Zyb3plbl0BARBib29sAA9AlEFsdGVyIHRoZSBhdHRyaWJ1dGVzIG9mIGEgZ2l2ZW4gaXRlbS4AdE9yaWdpbiBtdXN0IGJlIGBGb3JjZU9yaWdpbmAuAKwtIGBjb2xsZWN0aW9uYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGl0ZW0umC0gYG93bmVyYDogVGhlIG5ldyBPd25lciBvZiB0aGlzIGl0ZW0uoC0gYGlzc3VlcmA6IFRoZSBuZXcgSXNzdWVyIG9mIHRoaXMgaXRlbS6YLSBgYWRtaW5gOiBUaGUgbmV3IEFkbWluIG9mIHRoaXMgaXRlbS6oLSBgZnJlZXplcmA6IFRoZSBuZXcgRnJlZXplciBvZiB0aGlzIGl0ZW0uUQEtIGBmcmVlX2hvbGRpbmdgOiBXaGV0aGVyIGEgZGVwb3NpdCBpcyB0YWtlbiBmb3IgaG9sZGluZyBhbiBpdGVtIG9mIHRoaXMgY29sbGVjdGlvbi45AS0gYGlzX2Zyb3plbmA6IFdoZXRoZXIgdGhpcyBjb2xsZWN0aW9uIGlzIGZyb3plbiBleGNlcHQgZm9yIHBlcm1pc3Npb25lZC9hZG1pbjRpbnN0cnVjdGlvbnMuAOBFbWl0cyBgSXRlbVN0YXR1c0NoYW5nZWRgIHdpdGggdGhlIGlkZW50aXR5IG9mIHRoZSBpdGVtLgA4V2VpZ2h0OiBgTygxKWA0c2V0X2F0dHJpYnV0ZRABKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAAShtYXliZV9pdGVt5AFET3B0aW9uPFQ6Okl0ZW1JZD4AAQxrZXmdAQFsQm91bmRlZFZlYzx1OCwgVDo6S2V5TGltaXQ+AAEUdmFsdWV8AXRCb3VuZGVkVmVjPHU4LCBUOjpWYWx1ZUxpbWl0PgAQRKhTZXQgYW4gYXR0cmlidXRlIGZvciBhIGNvbGxlY3Rpb24gb3IgaXRlbS4AXQFPcmlnaW4gbXVzdCBiZSBlaXRoZXIgYEZvcmNlT3JpZ2luYCBvciBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBPd25lciBvZiB0aGU0YGNvbGxlY3Rpb25gLgBRAUlmIHRoZSBvcmlnaW4gaXMgU2lnbmVkLCB0aGVuIGZ1bmRzIG9mIHNpZ25lciBhcmUgcmVzZXJ2ZWQgYWNjb3JkaW5nIHRvIHRoZSBmb3JtdWxhOikBYE1ldGFkYXRhRGVwb3NpdEJhc2UgKyBEZXBvc2l0UGVyQnl0ZSAqIChrZXkubGVuICsgdmFsdWUubGVuKWAgdGFraW5nIGludG+MYWNjb3VudCBhbnkgYWxyZWFkeSByZXNlcnZlZCBmdW5kcy4AOQEtIGBjb2xsZWN0aW9uYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGNvbGxlY3Rpb24gd2hvc2UgaXRlbSdzIG1ldGFkYXRhIHRvIHNldC4FAS0gYG1heWJlX2l0ZW1gOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgaXRlbSB3aG9zZSBtZXRhZGF0YSB0byBzZXQuiC0gYGtleWA6IFRoZSBrZXkgb2YgdGhlIGF0dHJpYnV0ZS7MLSBgdmFsdWVgOiBUaGUgdmFsdWUgdG8gd2hpY2ggdG8gc2V0IHRoZSBhdHRyaWJ1dGUuAFRFbWl0cyBgQXR0cmlidXRlU2V0YC4AOFdlaWdodDogYE8oMSlgPGNsZWFyX2F0dHJpYnV0ZQwBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAAShtYXliZV9pdGVt5AFET3B0aW9uPFQ6Okl0ZW1JZD4AAQxrZXmdAQFsQm91bmRlZFZlYzx1OCwgVDo6S2V5TGltaXQ+ABE4sENsZWFyIGFuIGF0dHJpYnV0ZSBmb3IgYSBjb2xsZWN0aW9uIG9yIGl0ZW0uAF0BT3JpZ2luIG11c3QgYmUgZWl0aGVyIGBGb3JjZU9yaWdpbmAgb3IgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgT3duZXIgb2YgdGhlNGBjb2xsZWN0aW9uYC4AwEFueSBkZXBvc2l0IGlzIGZyZWVkIGZvciB0aGUgY29sbGVjdGlvbidzIG93bmVyLgBBAS0gYGNvbGxlY3Rpb25gOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgY29sbGVjdGlvbiB3aG9zZSBpdGVtJ3MgbWV0YWRhdGEgdG8gY2xlYXIuDQEtIGBtYXliZV9pdGVtYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGl0ZW0gd2hvc2UgbWV0YWRhdGEgdG8gY2xlYXIuiC0gYGtleWA6IFRoZSBrZXkgb2YgdGhlIGF0dHJpYnV0ZS4AZEVtaXRzIGBBdHRyaWJ1dGVDbGVhcmVkYC4AOFdlaWdodDogYE8oMSlgMHNldF9tZXRhZGF0YRABKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAEQZGF0YWEEAXhCb3VuZGVkVmVjPHU4LCBUOjpTdHJpbmdMaW1pdD4AASRpc19mcm96ZW5dAQEQYm9vbAASRHRTZXQgdGhlIG1ldGFkYXRhIGZvciBhbiBpdGVtLgBdAU9yaWdpbiBtdXN0IGJlIGVpdGhlciBgRm9yY2VPcmlnaW5gIG9yIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIE93bmVyIG9mIHRoZTRgY29sbGVjdGlvbmAuAFEBSWYgdGhlIG9yaWdpbiBpcyBTaWduZWQsIHRoZW4gZnVuZHMgb2Ygc2lnbmVyIGFyZSByZXNlcnZlZCBhY2NvcmRpbmcgdG8gdGhlIGZvcm11bGE69GBNZXRhZGF0YURlcG9zaXRCYXNlICsgRGVwb3NpdFBlckJ5dGUgKiBkYXRhLmxlbmAgdGFraW5nIGludG+MYWNjb3VudCBhbnkgYWxyZWFkeSByZXNlcnZlZCBmdW5kcy4AOQEtIGBjb2xsZWN0aW9uYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGNvbGxlY3Rpb24gd2hvc2UgaXRlbSdzIG1ldGFkYXRhIHRvIHNldC7sLSBgaXRlbWA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBpdGVtIHdob3NlIG1ldGFkYXRhIHRvIHNldC5NAS0gYGRhdGFgOiBUaGUgZ2VuZXJhbCBpbmZvcm1hdGlvbiBvZiB0aGlzIGl0ZW0uIExpbWl0ZWQgaW4gbGVuZ3RoIGJ5IGBTdHJpbmdMaW1pdGAuNQEtIGBpc19mcm96ZW5gOiBXaGV0aGVyIHRoZSBtZXRhZGF0YSBzaG91bGQgYmUgZnJvemVuIGFnYWluc3QgZnVydGhlciBjaGFuZ2VzLgBQRW1pdHMgYE1ldGFkYXRhU2V0YC4AOFdlaWdodDogYE8oMSlgOGNsZWFyX21ldGFkYXRhCAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAEzR8Q2xlYXIgdGhlIG1ldGFkYXRhIGZvciBhbiBpdGVtLgBdAU9yaWdpbiBtdXN0IGJlIGVpdGhlciBgRm9yY2VPcmlnaW5gIG9yIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIE93bmVyIG9mIHRoZRxgaXRlbWAuAMBBbnkgZGVwb3NpdCBpcyBmcmVlZCBmb3IgdGhlIGNvbGxlY3Rpb24ncyBvd25lci4AQQEtIGBjb2xsZWN0aW9uYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGNvbGxlY3Rpb24gd2hvc2UgaXRlbSdzIG1ldGFkYXRhIHRvIGNsZWFyLvQtIGBpdGVtYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGl0ZW0gd2hvc2UgbWV0YWRhdGEgdG8gY2xlYXIuAGBFbWl0cyBgTWV0YWRhdGFDbGVhcmVkYC4AOFdlaWdodDogYE8oMSlgXHNldF9jb2xsZWN0aW9uX21ldGFkYXRhDAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGRhdGFhBAF4Qm91bmRlZFZlYzx1OCwgVDo6U3RyaW5nTGltaXQ+AAEkaXNfZnJvemVuXQEBEGJvb2wAFECIU2V0IHRoZSBtZXRhZGF0YSBmb3IgYSBjb2xsZWN0aW9uLgBVAU9yaWdpbiBtdXN0IGJlIGVpdGhlciBgRm9yY2VPcmlnaW5gIG9yIGBTaWduZWRgIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgT3duZXIgb2ZEdGhlIGBjb2xsZWN0aW9uYC4AWQFJZiB0aGUgb3JpZ2luIGlzIGBTaWduZWRgLCB0aGVuIGZ1bmRzIG9mIHNpZ25lciBhcmUgcmVzZXJ2ZWQgYWNjb3JkaW5nIHRvIHRoZSBmb3JtdWxhOvRgTWV0YWRhdGFEZXBvc2l0QmFzZSArIERlcG9zaXRQZXJCeXRlICogZGF0YS5sZW5gIHRha2luZyBpbnRvjGFjY291bnQgYW55IGFscmVhZHkgcmVzZXJ2ZWQgZnVuZHMuABEBLSBgY29sbGVjdGlvbmA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBpdGVtIHdob3NlIG1ldGFkYXRhIHRvIHVwZGF0ZS5NAS0gYGRhdGFgOiBUaGUgZ2VuZXJhbCBpbmZvcm1hdGlvbiBvZiB0aGlzIGl0ZW0uIExpbWl0ZWQgaW4gbGVuZ3RoIGJ5IGBTdHJpbmdMaW1pdGAuNQEtIGBpc19mcm96ZW5gOiBXaGV0aGVyIHRoZSBtZXRhZGF0YSBzaG91bGQgYmUgZnJvemVuIGFnYWluc3QgZnVydGhlciBjaGFuZ2VzLgB4RW1pdHMgYENvbGxlY3Rpb25NZXRhZGF0YVNldGAuADhXZWlnaHQ6IGBPKDEpYGRjbGVhcl9jb2xsZWN0aW9uX21ldGFkYXRhBAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAAVMJBDbGVhciB0aGUgbWV0YWRhdGEgZm9yIGEgY29sbGVjdGlvbi4AVQFPcmlnaW4gbXVzdCBiZSBlaXRoZXIgYEZvcmNlT3JpZ2luYCBvciBgU2lnbmVkYCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIE93bmVyIG9mRHRoZSBgY29sbGVjdGlvbmAuAMBBbnkgZGVwb3NpdCBpcyBmcmVlZCBmb3IgdGhlIGNvbGxlY3Rpb24ncyBvd25lci4AJQEtIGBjb2xsZWN0aW9uYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGNvbGxlY3Rpb24gd2hvc2UgbWV0YWRhdGEgdG8gY2xlYXIuAIhFbWl0cyBgQ29sbGVjdGlvbk1ldGFkYXRhQ2xlYXJlZGAuADhXZWlnaHQ6IGBPKDEpYFBzZXRfYWNjZXB0X293bmVyc2hpcAQBQG1heWJlX2NvbGxlY3Rpb27kAVxPcHRpb248VDo6Q29sbGVjdGlvbklkPgAWKBEBU2V0IChvciByZXNldCkgdGhlIGFjY2VwdGFuY2Ugb2Ygb3duZXJzaGlwIGZvciBhIHBhcnRpY3VsYXIgYWNjb3VudC4AYQFPcmlnaW4gbXVzdCBiZSBgU2lnbmVkYCBhbmQgaWYgYG1heWJlX2NvbGxlY3Rpb25gIGlzIGBTb21lYCwgdGhlbiB0aGUgc2lnbmVyIG11c3QgaGF2ZSBhTHByb3ZpZGVyIHJlZmVyZW5jZS4AUQEtIGBtYXliZV9jb2xsZWN0aW9uYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGNvbGxlY3Rpb24gd2hvc2Ugb3duZXJzaGlwIHRoZSBzaWduZXIgaXNhASAgd2lsbGluZyB0byBhY2NlcHQsIG9yIGlmIGBOb25lYCwgYW4gaW5kaWNhdGlvbiB0aGF0IHRoZSBzaWduZXIgaXMgd2lsbGluZyB0byBhY2NlcHQgbm9cICBvd25lcnNoaXAgdHJhbnNmZXJhbC4AjEVtaXRzIGBPd25lcnNoaXBBY2NlcHRhbmNlQ2hhbmdlZGAuZHNldF9jb2xsZWN0aW9uX21heF9zdXBwbHkIAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEobWF4X3N1cHBseTgBDHUzMgAXLOBTZXQgdGhlIG1heGltdW0gYW1vdW50IG9mIGl0ZW1zIGEgY29sbGVjdGlvbiBjb3VsZCBoYXZlLgBVAU9yaWdpbiBtdXN0IGJlIGVpdGhlciBgRm9yY2VPcmlnaW5gIG9yIGBTaWduZWRgIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgT3duZXIgb2ZEdGhlIGBjb2xsZWN0aW9uYC4A5E5vdGU6IFRoaXMgZnVuY3Rpb24gY2FuIG9ubHkgc3VjY2VlZCBvbmNlIHBlciBjb2xsZWN0aW9uLgDsLSBgY29sbGVjdGlvbmA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBjb2xsZWN0aW9uIHRvIGNoYW5nZS4RAS0gYG1heF9zdXBwbHlgOiBUaGUgbWF4aW11bSBhbW91bnQgb2YgaXRlbXMgYSBjb2xsZWN0aW9uIGNvdWxkIGhhdmUuANRFbWl0cyBgQ29sbGVjdGlvbk1heFN1cHBseVNldGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLiRzZXRfcHJpY2UQAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAABFHByaWNlZQQBXE9wdGlvbjxJdGVtUHJpY2U8VCwgST4+AAFEd2hpdGVsaXN0ZWRfYnV5ZXJZBAFwT3B0aW9uPEFjY291bnRJZExvb2t1cE9mPFQ+PgAYLJRTZXQgKG9yIHJlc2V0KSB0aGUgcHJpY2UgZm9yIGFuIGl0ZW0uAAEBT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCBtdXN0IGJlIHRoZSBvd25lciBvZiB0aGUgYXNzZXQgYGl0ZW1gLgCsLSBgY29sbGVjdGlvbmA6IFRoZSBjb2xsZWN0aW9uIG9mIHRoZSBpdGVtLqAtIGBpdGVtYDogVGhlIGl0ZW0gdG8gc2V0IHRoZSBwcmljZSBmb3IuDQEtIGBwcmljZWA6IFRoZSBwcmljZSBmb3IgdGhlIGl0ZW0uIFBhc3MgYE5vbmVgLCB0byByZXNldCB0aGUgcHJpY2Uu9C0gYGJ1eWVyYDogUmVzdHJpY3RzIHRoZSBidXkgb3BlcmF0aW9uIHRvIGEgc3BlY2lmaWMgYWNjb3VudC4A7EVtaXRzIGBJdGVtUHJpY2VTZXRgIG9uIHN1Y2Nlc3MgaWYgdGhlIHByaWNlIGlzIG5vdCBgTm9uZWAu7EVtaXRzIGBJdGVtUHJpY2VSZW1vdmVkYCBvbiBzdWNjZXNzIGlmIHRoZSBwcmljZSBpcyBgTm9uZWAuIGJ1eV9pdGVtDAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAASRiaWRfcHJpY2VZAQE8SXRlbVByaWNlPFQsIEk+ABkkqEFsbG93cyB0byBidXkgYW4gaXRlbSBpZiBpdCdzIHVwIGZvciBzYWxlLgD4T3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCBtdXN0IG5vdCBiZSB0aGUgb3duZXIgb2YgdGhlIGBpdGVtYC4ArC0gYGNvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiBvZiB0aGUgaXRlbS6sLSBgaXRlbWA6IFRoZSBpdGVtIHRoZSBzZW5kZXIgd2FudHMgdG8gYnV5LtgtIGBiaWRfcHJpY2VgOiBUaGUgcHJpY2UgdGhlIHNlbmRlciBpcyB3aWxsaW5nIHRvIHBheS4AeEVtaXRzIGBJdGVtQm91Z2h0YCBvbiBzdWNjZXNzLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy5VBAw4cGFsbGV0X3VuaXF1ZXMUdHlwZXM4RGVzdHJveVdpdG5lc3MAAAwBFGl0ZW1zZAEMdTMyAAE4aXRlbV9tZXRhZGF0YXNkAQx1MzIAAShhdHRyaWJ1dGVzZAEMdTMyAABZBAQYT3B0aW9uBARUAQABCBBOb25lAAAAEFNvbWUEAAAAAAEAAF0EAAACOABhBAxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQwEUwAABAAYARhWZWM8VD4AAGUEBBhPcHRpb24EBFQBWQEBCBBOb25lAAAAEFNvbWUEAFkBAAABAABpBAwscGFsbGV0X25mdHMYcGFsbGV0EENhbGwIBFQABEkAAZwYY3JlYXRlCAEUYWRtaW4AAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGNvbmZpZ20EAWRDb2xsZWN0aW9uQ29uZmlnRm9yPFQsIEk+AAA8CQFJc3N1ZSBhIG5ldyBjb2xsZWN0aW9uIG9mIG5vbi1mdW5naWJsZSBpdGVtcyBmcm9tIGEgcHVibGljIG9yaWdpbi4AHQFUaGlzIG5ldyBjb2xsZWN0aW9uIGhhcyBubyBpdGVtcyBpbml0aWFsbHkgYW5kIGl0cyBvd25lciBpcyB0aGUgb3JpZ2luLgAlAVRoZSBvcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgbXVzdCBoYXZlIHN1ZmZpY2llbnQgZnVuZHMgZnJlZS4AxGBDb2xsZWN0aW9uRGVwb3NpdGAgZnVuZHMgb2Ygc2VuZGVyIGFyZSByZXNlcnZlZC4ALFBhcmFtZXRlcnM6RQEtIGBhZG1pbmA6IFRoZSBhZG1pbiBvZiB0aGlzIGNvbGxlY3Rpb24uIFRoZSBhZG1pbiBpcyB0aGUgaW5pdGlhbCBhZGRyZXNzIG9mIGVhY2iYbWVtYmVyIG9mIHRoZSBjb2xsZWN0aW9uJ3MgYWRtaW4gdGVhbS4AmEVtaXRzIGBDcmVhdGVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuADhXZWlnaHQ6IGBPKDEpYDBmb3JjZV9jcmVhdGUIARRvd25lcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYY29uZmlnbQQBZENvbGxlY3Rpb25Db25maWdGb3I8VCwgST4AATwZAUlzc3VlIGEgbmV3IGNvbGxlY3Rpb24gb2Ygbm9uLWZ1bmdpYmxlIGl0ZW1zIGZyb20gYSBwcml2aWxlZ2VkIG9yaWdpbi4ArFRoaXMgbmV3IGNvbGxlY3Rpb24gaGFzIG5vIGl0ZW1zIGluaXRpYWxseS4ApFRoZSBvcmlnaW4gbXVzdCBjb25mb3JtIHRvIGBGb3JjZU9yaWdpbmAuAJxVbmxpa2UgYGNyZWF0ZWAsIG5vIGZ1bmRzIGFyZSByZXNlcnZlZC4AOQEtIGBvd25lcmA6IFRoZSBvd25lciBvZiB0aGlzIGNvbGxlY3Rpb24gb2YgaXRlbXMuIFRoZSBvd25lciBoYXMgZnVsbCBzdXBlcnVzZXJZASAgcGVybWlzc2lvbnMgb3ZlciB0aGlzIGl0ZW0sIGJ1dCBtYXkgbGF0ZXIgY2hhbmdlIGFuZCBjb25maWd1cmUgdGhlIHBlcm1pc3Npb25zIHVzaW5nmCAgYHRyYW5zZmVyX293bmVyc2hpcGAgYW5kIGBzZXRfdGVhbWAuAKxFbWl0cyBgRm9yY2VDcmVhdGVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuADhXZWlnaHQ6IGBPKDEpYBxkZXN0cm95CAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABHHdpdG5lc3OJBAE4RGVzdHJveVdpdG5lc3MAAkScRGVzdHJveSBhIGNvbGxlY3Rpb24gb2YgZnVuZ2libGUgaXRlbXMuAF0BVGhlIG9yaWdpbiBtdXN0IGNvbmZvcm0gdG8gYEZvcmNlT3JpZ2luYCBvciBtdXN0IGJlIGBTaWduZWRgIGFuZCB0aGUgc2VuZGVyIG11c3QgYmUgdGhlaG93bmVyIG9mIHRoZSBgY29sbGVjdGlvbmAuANxOT1RFOiBUaGUgY29sbGVjdGlvbiBtdXN0IGhhdmUgMCBpdGVtcyB0byBiZSBkZXN0cm95ZWQuAAUBLSBgY29sbGVjdGlvbmA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBjb2xsZWN0aW9uIHRvIGJlIGRlc3Ryb3llZC4xAS0gYHdpdG5lc3NgOiBJbmZvcm1hdGlvbiBvbiB0aGUgaXRlbXMgbWludGVkIGluIHRoZSBjb2xsZWN0aW9uLiBUaGlzIG11c3QgYmUgY29ycmVjdC4AoEVtaXRzIGBEZXN0cm95ZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4AdFdlaWdodDogYE8obSArIGMgKyBhKWAgd2hlcmU6eC0gYG0gPSB3aXRuZXNzLml0ZW1fbWV0YWRhdGFzYHAtIGBjID0gd2l0bmVzcy5pdGVtX2NvbmZpZ3NgaC0gYGEgPSB3aXRuZXNzLmF0dHJpYnV0ZXNgEG1pbnQQAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAABHG1pbnRfdG8AAVBBY2NvdW50SWRMb29rdXBPZjxUPgABMHdpdG5lc3NfZGF0YY0EAdhPcHRpb248TWludFdpdG5lc3M8VDo6SXRlbUlkLCBEZXBvc2l0QmFsYW5jZU9mPFQsIEk+Pj4AA0CgTWludCBhbiBpdGVtIG9mIGEgcGFydGljdWxhciBjb2xsZWN0aW9uLgBRAVRoZSBvcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgbXVzdCBjb21wbHkgd2l0aCB0aGUgYG1pbnRfc2V0dGluZ3NgIHJ1bGVzLgDgLSBgY29sbGVjdGlvbmA6IFRoZSBjb2xsZWN0aW9uIG9mIHRoZSBpdGVtIHRvIGJlIG1pbnRlZC6gLSBgaXRlbWA6IEFuIGlkZW50aWZpZXIgb2YgdGhlIG5ldyBpdGVtLuAtIGBtaW50X3RvYDogQWNjb3VudCBpbnRvIHdoaWNoIHRoZSBpdGVtIHdpbGwgYmUgbWludGVkLkUBLSBgd2l0bmVzc19kYXRhYDogV2hlbiB0aGUgbWludCB0eXBlIGlzIGBIb2xkZXJPZihjb2xsZWN0aW9uX2lkKWAsIHRoZW4gdGhlIG93bmVkWQEgIGl0ZW1faWQgZnJvbSB0aGF0IGNvbGxlY3Rpb24gbmVlZHMgdG8gYmUgcHJvdmlkZWQgd2l0aGluIHRoZSB3aXRuZXNzIGRhdGEgb2JqZWN0LiBJZmEBICB0aGUgbWludCBwcmljZSBpcyBzZXQsIHRoZW4gaXQgc2hvdWxkIGJlIGFkZGl0aW9uYWxseSBjb25maXJtZWQgaW4gdGhlIGB3aXRuZXNzX2RhdGFgLgBRAU5vdGU6IHRoZSBkZXBvc2l0IHdpbGwgYmUgdGFrZW4gZnJvbSB0aGUgYG9yaWdpbmAgYW5kIG5vdCB0aGUgYG93bmVyYCBvZiB0aGUgYGl0ZW1gLgCURW1pdHMgYElzc3VlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLgA4V2VpZ2h0OiBgTygxKWAoZm9yY2VfbWludBABKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAEcbWludF90bwABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEsaXRlbV9jb25maWeVBAEoSXRlbUNvbmZpZwAENAUBTWludCBhbiBpdGVtIG9mIGEgcGFydGljdWxhciBjb2xsZWN0aW9uIGZyb20gYSBwcml2aWxlZ2VkIG9yaWdpbi4AXQFUaGUgb3JpZ2luIG11c3QgY29uZm9ybSB0byBgRm9yY2VPcmlnaW5gIG9yIG11c3QgYmUgYFNpZ25lZGAgYW5kIHRoZSBzZW5kZXIgbXVzdCBiZSB0aGVsSXNzdWVyIG9mIHRoZSBgY29sbGVjdGlvbmAuAOAtIGBjb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gb2YgdGhlIGl0ZW0gdG8gYmUgbWludGVkLqAtIGBpdGVtYDogQW4gaWRlbnRpZmllciBvZiB0aGUgbmV3IGl0ZW0u4C0gYG1pbnRfdG9gOiBBY2NvdW50IGludG8gd2hpY2ggdGhlIGl0ZW0gd2lsbCBiZSBtaW50ZWQuqC0gYGl0ZW1fY29uZmlnYDogQSBjb25maWcgb2YgdGhlIG5ldyBpdGVtLgCURW1pdHMgYElzc3VlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLgA4V2VpZ2h0OiBgTygxKWAQYnVybggBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAUsWERlc3Ryb3kgYSBzaW5nbGUgaXRlbS4AXQFUaGUgb3JpZ2luIG11c3QgY29uZm9ybSB0byBgRm9yY2VPcmlnaW5gIG9yIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2lnbmluZyBhY2NvdW50IG11c3RsYmUgdGhlIG93bmVyIG9mIHRoZSBgaXRlbWAuAOAtIGBjb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gb2YgdGhlIGl0ZW0gdG8gYmUgYnVybmVkLoAtIGBpdGVtYDogVGhlIGl0ZW0gdG8gYmUgYnVybmVkLgA8RW1pdHMgYEJ1cm5lZGAuADhXZWlnaHQ6IGBPKDEpYCB0cmFuc2ZlcgwBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAEQZGVzdAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAY4wE1vdmUgYW4gaXRlbSBmcm9tIHRoZSBzZW5kZXIgYWNjb3VudCB0byBhbm90aGVyLgD0T3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2lnbmluZyBhY2NvdW50IG11c3QgYmUgZWl0aGVyOmgtIHRoZSBPd25lciBvZiB0aGUgYGl0ZW1gOzUBLSB0aGUgYXBwcm92ZWQgZGVsZWdhdGUgZm9yIHRoZSBgaXRlbWAgKGluIHRoaXMgY2FzZSwgdGhlIGFwcHJvdmFsIGlzIHJlc2V0KS4AKEFyZ3VtZW50czr0LSBgY29sbGVjdGlvbmA6IFRoZSBjb2xsZWN0aW9uIG9mIHRoZSBpdGVtIHRvIGJlIHRyYW5zZmVycmVkLpQtIGBpdGVtYDogVGhlIGl0ZW0gdG8gYmUgdHJhbnNmZXJyZWQu3C0gYGRlc3RgOiBUaGUgYWNjb3VudCB0byByZWNlaXZlIG93bmVyc2hpcCBvZiB0aGUgaXRlbS4AUEVtaXRzIGBUcmFuc2ZlcnJlZGAuADhXZWlnaHQ6IGBPKDEpYCRyZWRlcG9zaXQIAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEUaXRlbXNdBAE4VmVjPFQ6Okl0ZW1JZD4AB0ScUmUtZXZhbHVhdGUgdGhlIGRlcG9zaXRzIG9uIHNvbWUgaXRlbXMuADUBT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgT3duZXIgb2YgdGhlIGBjb2xsZWN0aW9uYC4A+C0gYGNvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiBvZiB0aGUgaXRlbXMgdG8gYmUgcmVldmFsdWF0ZWQuKQEtIGBpdGVtc2A6IFRoZSBpdGVtcyBvZiB0aGUgY29sbGVjdGlvbiB3aG9zZSBkZXBvc2l0cyB3aWxsIGJlIHJlZXZhbHVhdGVkLgAtAU5PVEU6IFRoaXMgZXhpc3RzIGFzIGEgYmVzdC1lZmZvcnQgZnVuY3Rpb24uIEFueSBpdGVtcyB3aGljaCBhcmUgdW5rbm93biBvcjkBaW4gdGhlIGNhc2UgdGhhdCB0aGUgb3duZXIgYWNjb3VudCBkb2VzIG5vdCBoYXZlIHJlc2VydmFibGUgZnVuZHMgdG8gcGF5IGZvciBhTQFkZXBvc2l0IGluY3JlYXNlIGFyZSBpZ25vcmVkLiBHZW5lcmFsbHkgdGhlIG93bmVyIGlzbid0IGdvaW5nIHRvIGNhbGwgdGhpcyBvbiBpdGVtc1UBd2hvc2UgZXhpc3RpbmcgZGVwb3NpdCBpcyBsZXNzIHRoYW4gdGhlIHJlZnJlc2hlZCBkZXBvc2l0IGFzIGl0IHdvdWxkIG9ubHkgY29zdCB0aGVtLHhzbyBpdCdzIG9mIGxpdHRsZSBjb25zZXF1ZW5jZS4AWQFJdCB3aWxsIHN0aWxsIHJldHVybiBhbiBlcnJvciBpbiB0aGUgY2FzZSB0aGF0IHRoZSBjb2xsZWN0aW9uIGlzIHVua25vd24gb3IgdGhlIHNpZ25lcnBpcyBub3QgcGVybWl0dGVkIHRvIGNhbGwgaXQuAGBXZWlnaHQ6IGBPKGl0ZW1zLmxlbigpKWBIbG9ja19pdGVtX3RyYW5zZmVyCAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQACCjIRGlzYWxsb3cgZnVydGhlciB1bnByaXZpbGVnZWQgdHJhbnNmZXIgb2YgYW4gaXRlbS4APQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBGcmVlemVyIG9mIHRoZSBgY29sbGVjdGlvbmAuAOQtIGBjb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gb2YgdGhlIGl0ZW0gdG8gYmUgY2hhbmdlZC64LSBgaXRlbWA6IFRoZSBpdGVtIHRvIGJlY29tZSBub24tdHJhbnNmZXJhYmxlLgBsRW1pdHMgYEl0ZW1UcmFuc2ZlckxvY2tlZGAuADhXZWlnaHQ6IGBPKDEpYFB1bmxvY2tfaXRlbV90cmFuc2ZlcggBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAkoqFJlLWFsbG93IHVucHJpdmlsZWdlZCB0cmFuc2ZlciBvZiBhbiBpdGVtLgA9AU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEZyZWV6ZXIgb2YgdGhlIGBjb2xsZWN0aW9uYC4A5C0gYGNvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiBvZiB0aGUgaXRlbSB0byBiZSBjaGFuZ2VkLqgtIGBpdGVtYDogVGhlIGl0ZW0gdG8gYmVjb21lIHRyYW5zZmVyYWJsZS4AdEVtaXRzIGBJdGVtVHJhbnNmZXJVbmxvY2tlZGAuADhXZWlnaHQ6IGBPKDEpYDxsb2NrX2NvbGxlY3Rpb24IAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAE0bG9ja19zZXR0aW5nc3EEAUhDb2xsZWN0aW9uU2V0dGluZ3MACjDYRGlzYWxsb3dzIHNwZWNpZmllZCBzZXR0aW5ncyBmb3IgdGhlIHdob2xlIGNvbGxlY3Rpb24uADUBT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgT3duZXIgb2YgdGhlIGBjb2xsZWN0aW9uYC4AsC0gYGNvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiB0byBiZSBsb2NrZWQutC0gYGxvY2tfc2V0dGluZ3NgOiBUaGUgc2V0dGluZ3MgdG8gYmUgbG9ja2VkLgAdAU5vdGU6IGl0J3MgcG9zc2libGUgdG8gb25seSBsb2NrKHNldCkgdGhlIHNldHRpbmcsIGJ1dCBub3QgdG8gdW5zZXQgaXQuAGRFbWl0cyBgQ29sbGVjdGlvbkxvY2tlZGAuADhXZWlnaHQ6IGBPKDEpYEh0cmFuc2Zlcl9vd25lcnNoaXAIAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEkbmV3X293bmVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4ACyyEQ2hhbmdlIHRoZSBPd25lciBvZiBhIGNvbGxlY3Rpb24uADUBT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgT3duZXIgb2YgdGhlIGBjb2xsZWN0aW9uYC4A9C0gYGNvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiB3aG9zZSBvd25lciBzaG91bGQgYmUgY2hhbmdlZC4JAS0gYG93bmVyYDogVGhlIG5ldyBPd25lciBvZiB0aGlzIGNvbGxlY3Rpb24uIFRoZXkgbXVzdCBoYXZlIGNhbGxlZEkBICBgc2V0X2FjY2VwdF9vd25lcnNoaXBgIHdpdGggYGNvbGxlY3Rpb25gIGluIG9yZGVyIGZvciB0aGlzIG9wZXJhdGlvbiB0byBzdWNjZWVkLgBURW1pdHMgYE93bmVyQ2hhbmdlZGAuADhXZWlnaHQ6IGBPKDEpYCBzZXRfdGVhbRABKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARhpc3N1ZXJZBAFwT3B0aW9uPEFjY291bnRJZExvb2t1cE9mPFQ+PgABFGFkbWluWQQBcE9wdGlvbjxBY2NvdW50SWRMb29rdXBPZjxUPj4AARxmcmVlemVyWQQBcE9wdGlvbjxBY2NvdW50SWRMb29rdXBPZjxUPj4ADEDUQ2hhbmdlIHRoZSBJc3N1ZXIsIEFkbWluIGFuZCBGcmVlemVyIG9mIGEgY29sbGVjdGlvbi4AXQFPcmlnaW4gbXVzdCBiZSBlaXRoZXIgYEZvcmNlT3JpZ2luYCBvciBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBPd25lciBvZiB0aGU0YGNvbGxlY3Rpb25gLgBRAU5vdGU6IGJ5IHNldHRpbmcgdGhlIHJvbGUgdG8gYE5vbmVgIG9ubHkgdGhlIGBGb3JjZU9yaWdpbmAgd2lsbCBiZSBhYmxlIHRvIGNoYW5nZSBpdGRhZnRlciB0byBgU29tZShhY2NvdW50KWAuAPAtIGBjb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gd2hvc2UgdGVhbSBzaG91bGQgYmUgY2hhbmdlZC64LSBgaXNzdWVyYDogVGhlIG5ldyBJc3N1ZXIgb2YgdGhpcyBjb2xsZWN0aW9uLrAtIGBhZG1pbmA6IFRoZSBuZXcgQWRtaW4gb2YgdGhpcyBjb2xsZWN0aW9uLsAtIGBmcmVlemVyYDogVGhlIG5ldyBGcmVlemVyIG9mIHRoaXMgY29sbGVjdGlvbi4AUEVtaXRzIGBUZWFtQ2hhbmdlZGAuADhXZWlnaHQ6IGBPKDEpYFhmb3JjZV9jb2xsZWN0aW9uX293bmVyCAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABFG93bmVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4ADSiEQ2hhbmdlIHRoZSBPd25lciBvZiBhIGNvbGxlY3Rpb24uAHRPcmlnaW4gbXVzdCBiZSBgRm9yY2VPcmlnaW5gLgDELSBgY29sbGVjdGlvbmA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBjb2xsZWN0aW9uLrAtIGBvd25lcmA6IFRoZSBuZXcgT3duZXIgb2YgdGhpcyBjb2xsZWN0aW9uLgBURW1pdHMgYE93bmVyQ2hhbmdlZGAuADhXZWlnaHQ6IGBPKDEpYFxmb3JjZV9jb2xsZWN0aW9uX2NvbmZpZwgBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARhjb25maWdtBAFkQ29sbGVjdGlvbkNvbmZpZ0ZvcjxULCBJPgAOKIhDaGFuZ2UgdGhlIGNvbmZpZyBvZiBhIGNvbGxlY3Rpb24uAHRPcmlnaW4gbXVzdCBiZSBgRm9yY2VPcmlnaW5gLgDELSBgY29sbGVjdGlvbmA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBjb2xsZWN0aW9uLrgtIGBjb25maWdgOiBUaGUgbmV3IGNvbmZpZyBvZiB0aGlzIGNvbGxlY3Rpb24uAIBFbWl0cyBgQ29sbGVjdGlvbkNvbmZpZ0NoYW5nZWRgLgA4V2VpZ2h0OiBgTygxKWBAYXBwcm92ZV90cmFuc2ZlchABKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAEgZGVsZWdhdGUAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABOG1heWJlX2RlYWRsaW5l5AFwT3B0aW9uPEJsb2NrTnVtYmVyRm9yPFQsIEk+PgAPOBUBQXBwcm92ZSBhbiBpdGVtIHRvIGJlIHRyYW5zZmVycmVkIGJ5IGEgZGVsZWdhdGVkIHRoaXJkLXBhcnR5IGFjY291bnQuAF0BT3JpZ2luIG11c3QgYmUgZWl0aGVyIGBGb3JjZU9yaWdpbmAgb3IgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgT3duZXIgb2YgdGhlHGBpdGVtYC4ARQEtIGBjb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gb2YgdGhlIGl0ZW0gdG8gYmUgYXBwcm92ZWQgZm9yIGRlbGVnYXRlZCB0cmFuc2Zlci7kLSBgaXRlbWA6IFRoZSBpdGVtIHRvIGJlIGFwcHJvdmVkIGZvciBkZWxlZ2F0ZWQgdHJhbnNmZXIuGQEtIGBkZWxlZ2F0ZWA6IFRoZSBhY2NvdW50IHRvIGRlbGVnYXRlIHBlcm1pc3Npb24gdG8gdHJhbnNmZXIgdGhlIGl0ZW0uSQEtIGBtYXliZV9kZWFkbGluZWA6IE9wdGlvbmFsIGRlYWRsaW5lIGZvciB0aGUgYXBwcm92YWwuIFNwZWNpZmllZCBieSBwcm92aWRpbmcgdGhl2AludW1iZXIgb2YgYmxvY2tzIGFmdGVyIHdoaWNoIHRoZSBhcHByb3ZhbCB3aWxsIGV4cGlyZQCQRW1pdHMgYFRyYW5zZmVyQXBwcm92ZWRgIG9uIHN1Y2Nlc3MuADhXZWlnaHQ6IGBPKDEpYDxjYW5jZWxfYXBwcm92YWwMAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAABIGRlbGVnYXRlAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AEDjkQ2FuY2VsIG9uZSBvZiB0aGUgdHJhbnNmZXIgYXBwcm92YWxzIGZvciBhIHNwZWNpZmljIGl0ZW0uAFhPcmlnaW4gbXVzdCBiZSBlaXRoZXI6VC0gdGhlIGBGb3JjZWAgb3JpZ2luO+QtIGBTaWduZWRgIHdpdGggdGhlIHNpZ25lciBiZWluZyB0aGUgT3duZXIgb2YgdGhlIGBpdGVtYDsAKEFyZ3VtZW50czo9AS0gYGNvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiBvZiB0aGUgaXRlbSBvZiB3aG9zZSBhcHByb3ZhbCB3aWxsIGJlIGNhbmNlbGxlZC4lAS0gYGl0ZW1gOiBUaGUgaXRlbSBvZiB0aGUgY29sbGVjdGlvbiBvZiB3aG9zZSBhcHByb3ZhbCB3aWxsIGJlIGNhbmNlbGxlZC4BAS0gYGRlbGVnYXRlYDogVGhlIGFjY291bnQgdGhhdCBpcyBnb2luZyB0byBsb29zZSB0aGVpciBhcHByb3ZhbC4AlEVtaXRzIGBBcHByb3ZhbENhbmNlbGxlZGAgb24gc3VjY2Vzcy4AOFdlaWdodDogYE8oMSlgcGNsZWFyX2FsbF90cmFuc2Zlcl9hcHByb3ZhbHMIAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAARNLBDYW5jZWwgYWxsIHRoZSBhcHByb3ZhbHMgb2YgYSBzcGVjaWZpYyBpdGVtLgBYT3JpZ2luIG11c3QgYmUgZWl0aGVyOlQtIHRoZSBgRm9yY2VgIG9yaWdpbjvkLSBgU2lnbmVkYCB3aXRoIHRoZSBzaWduZXIgYmVpbmcgdGhlIE93bmVyIG9mIHRoZSBgaXRlbWA7AChBcmd1bWVudHM6OQEtIGBjb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gb2YgdGhlIGl0ZW0gb2Ygd2hvc2UgYXBwcm92YWxzIHdpbGwgYmUgY2xlYXJlZC4hAS0gYGl0ZW1gOiBUaGUgaXRlbSBvZiB0aGUgY29sbGVjdGlvbiBvZiB3aG9zZSBhcHByb3ZhbHMgd2lsbCBiZSBjbGVhcmVkLgCkRW1pdHMgYEFsbEFwcHJvdmFsc0NhbmNlbGxlZGAgb24gc3VjY2Vzcy4AOFdlaWdodDogYE8oMSlgUGxvY2tfaXRlbV9wcm9wZXJ0aWVzEAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAATRsb2NrX21ldGFkYXRhXQEBEGJvb2wAATxsb2NrX2F0dHJpYnV0ZXNdAQEQYm9vbAASROhEaXNhbGxvd3MgY2hhbmdpbmcgdGhlIG1ldGFkYXRhIG9yIGF0dHJpYnV0ZXMgb2YgdGhlIGl0ZW0uAEEBT3JpZ2luIG11c3QgYmUgZWl0aGVyIGBGb3JjZU9yaWdpbmAgb3IgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgQWRtaW5Qb2YgdGhlIGBjb2xsZWN0aW9uYC4AtC0gYGNvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiBpZiB0aGUgYGl0ZW1gLnwtIGBpdGVtYDogQW4gaXRlbSB0byBiZSBsb2NrZWQuDQEtIGBsb2NrX21ldGFkYXRhYDogU3BlY2lmaWVzIHdoZXRoZXIgdGhlIG1ldGFkYXRhIHNob3VsZCBiZSBsb2NrZWQuYQEtIGBsb2NrX2F0dHJpYnV0ZXNgOiBTcGVjaWZpZXMgd2hldGhlciB0aGUgYXR0cmlidXRlcyBpbiB0aGUgYENvbGxlY3Rpb25Pd25lcmAgbmFtZXNwYWNlTCAgc2hvdWxkIGJlIGxvY2tlZC4AXQFOb3RlOiBgbG9ja19hdHRyaWJ1dGVzYCBhZmZlY3RzIHRoZSBhdHRyaWJ1dGVzIGluIHRoZSBgQ29sbGVjdGlvbk93bmVyYCBuYW1lc3BhY2Ugb25seS5FAVdoZW4gdGhlIG1ldGFkYXRhIG9yIGF0dHJpYnV0ZXMgYXJlIGxvY2tlZCwgaXQgd29uJ3QgYmUgcG9zc2libGUgdGhlIHVubG9jayB0aGVtLgB0RW1pdHMgYEl0ZW1Qcm9wZXJ0aWVzTG9ja2VkYC4AOFdlaWdodDogYE8oMSlgNHNldF9hdHRyaWJ1dGUUAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEobWF5YmVfaXRlbeQBRE9wdGlvbjxUOjpJdGVtSWQ+AAEkbmFtZXNwYWNlmQQBgEF0dHJpYnV0ZU5hbWVzcGFjZTxUOjpBY2NvdW50SWQ+AAEMa2V5fAFsQm91bmRlZFZlYzx1OCwgVDo6S2V5TGltaXQ+AAEUdmFsdWVFAQF0Qm91bmRlZFZlYzx1OCwgVDo6VmFsdWVMaW1pdD4AE1ioU2V0IGFuIGF0dHJpYnV0ZSBmb3IgYSBjb2xsZWN0aW9uIG9yIGl0ZW0uAAEBT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCBtdXN0IGNvbmZvcm0gdG8gdGhlIG5hbWVzcGFjZSBydWxlc2V0Oj0BLSBgQ29sbGVjdGlvbk93bmVyYCBuYW1lc3BhY2UgY291bGQgYmUgbW9kaWZpZWQgYnkgdGhlIGBjb2xsZWN0aW9uYCBBZG1pbiBvbmx5O1kBLSBgSXRlbU93bmVyYCBuYW1lc3BhY2UgY291bGQgYmUgbW9kaWZpZWQgYnkgdGhlIGBtYXliZV9pdGVtYCBvd25lciBvbmx5LiBgbWF5YmVfaXRlbWB0ICBzaG91bGQgYmUgc2V0IGluIHRoYXQgY2FzZTtVAS0gYEFjY291bnQoQWNjb3VudElkKWAgbmFtZXNwYWNlIGNvdWxkIGJlIG1vZGlmaWVkIG9ubHkgd2hlbiB0aGUgYG9yaWdpbmAgd2FzIGdpdmVuIGFYICBwZXJtaXNzaW9uIHRvIGRvIHNvOwDwVGhlIGZ1bmRzIG9mIGBvcmlnaW5gIGFyZSByZXNlcnZlZCBhY2NvcmRpbmcgdG8gdGhlIGZvcm11bGE6LQFgQXR0cmlidXRlRGVwb3NpdEJhc2UgKyBEZXBvc2l0UGVyQnl0ZSAqIChrZXkubGVuICsgdmFsdWUubGVuKWAgdGFraW5nIGludG+MYWNjb3VudCBhbnkgYWxyZWFkeSByZXNlcnZlZCBmdW5kcy4AOQEtIGBjb2xsZWN0aW9uYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGNvbGxlY3Rpb24gd2hvc2UgaXRlbSdzIG1ldGFkYXRhIHRvIHNldC4FAS0gYG1heWJlX2l0ZW1gOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgaXRlbSB3aG9zZSBtZXRhZGF0YSB0byBzZXQulC0gYG5hbWVzcGFjZWA6IEF0dHJpYnV0ZSdzIG5hbWVzcGFjZS6ILSBga2V5YDogVGhlIGtleSBvZiB0aGUgYXR0cmlidXRlLswtIGB2YWx1ZWA6IFRoZSB2YWx1ZSB0byB3aGljaCB0byBzZXQgdGhlIGF0dHJpYnV0ZS4AVEVtaXRzIGBBdHRyaWJ1dGVTZXRgLgA4V2VpZ2h0OiBgTygxKWBMZm9yY2Vfc2V0X2F0dHJpYnV0ZRgBGHNldF9hc5EBAVBPcHRpb248VDo6QWNjb3VudElkPgABKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAAShtYXliZV9pdGVt5AFET3B0aW9uPFQ6Okl0ZW1JZD4AASRuYW1lc3BhY2WZBAGAQXR0cmlidXRlTmFtZXNwYWNlPFQ6OkFjY291bnRJZD4AAQxrZXl8AWxCb3VuZGVkVmVjPHU4LCBUOjpLZXlMaW1pdD4AARR2YWx1ZUUBAXRCb3VuZGVkVmVjPHU4LCBUOjpWYWx1ZUxpbWl0PgAURMBGb3JjZS1zZXQgYW4gYXR0cmlidXRlIGZvciBhIGNvbGxlY3Rpb24gb3IgaXRlbS4AdE9yaWdpbiBtdXN0IGJlIGBGb3JjZU9yaWdpbmAuADkBSWYgdGhlIGF0dHJpYnV0ZSBhbHJlYWR5IGV4aXN0cyBhbmQgaXQgd2FzIHNldCBieSBhbm90aGVyIGFjY291bnQsIHRoZSBkZXBvc2l0nHdpbGwgYmUgcmV0dXJuZWQgdG8gdGhlIHByZXZpb3VzIG93bmVyLgC8LSBgc2V0X2FzYDogQW4gb3B0aW9uYWwgb3duZXIgb2YgdGhlIGF0dHJpYnV0ZS45AS0gYGNvbGxlY3Rpb25gOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgY29sbGVjdGlvbiB3aG9zZSBpdGVtJ3MgbWV0YWRhdGEgdG8gc2V0LgUBLSBgbWF5YmVfaXRlbWA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBpdGVtIHdob3NlIG1ldGFkYXRhIHRvIHNldC6ULSBgbmFtZXNwYWNlYDogQXR0cmlidXRlJ3MgbmFtZXNwYWNlLogtIGBrZXlgOiBUaGUga2V5IG9mIHRoZSBhdHRyaWJ1dGUuzC0gYHZhbHVlYDogVGhlIHZhbHVlIHRvIHdoaWNoIHRvIHNldCB0aGUgYXR0cmlidXRlLgBURW1pdHMgYEF0dHJpYnV0ZVNldGAuADhXZWlnaHQ6IGBPKDEpYDxjbGVhcl9hdHRyaWJ1dGUQAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEobWF5YmVfaXRlbeQBRE9wdGlvbjxUOjpJdGVtSWQ+AAEkbmFtZXNwYWNlmQQBgEF0dHJpYnV0ZU5hbWVzcGFjZTxUOjpBY2NvdW50SWQ+AAEMa2V5fAFsQm91bmRlZFZlYzx1OCwgVDo6S2V5TGltaXQ+ABU8sENsZWFyIGFuIGF0dHJpYnV0ZSBmb3IgYSBjb2xsZWN0aW9uIG9yIGl0ZW0uAF0BT3JpZ2luIG11c3QgYmUgZWl0aGVyIGBGb3JjZU9yaWdpbmAgb3IgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgT3duZXIgb2YgdGhlKGF0dHJpYnV0ZS4AwEFueSBkZXBvc2l0IGlzIGZyZWVkIGZvciB0aGUgY29sbGVjdGlvbidzIG93bmVyLgBBAS0gYGNvbGxlY3Rpb25gOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgY29sbGVjdGlvbiB3aG9zZSBpdGVtJ3MgbWV0YWRhdGEgdG8gY2xlYXIuDQEtIGBtYXliZV9pdGVtYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGl0ZW0gd2hvc2UgbWV0YWRhdGEgdG8gY2xlYXIulC0gYG5hbWVzcGFjZWA6IEF0dHJpYnV0ZSdzIG5hbWVzcGFjZS6ILSBga2V5YDogVGhlIGtleSBvZiB0aGUgYXR0cmlidXRlLgBkRW1pdHMgYEF0dHJpYnV0ZUNsZWFyZWRgLgA4V2VpZ2h0OiBgTygxKWBcYXBwcm92ZV9pdGVtX2F0dHJpYnV0ZXMMAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAABIGRlbGVnYXRlAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AFiQtAUFwcHJvdmUgaXRlbSdzIGF0dHJpYnV0ZXMgdG8gYmUgY2hhbmdlZCBieSBhIGRlbGVnYXRlZCB0aGlyZC1wYXJ0eSBhY2NvdW50LgDkT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCBtdXN0IGJlIGFuIG93bmVyIG9mIHRoZSBgaXRlbWAuAKQtIGBjb2xsZWN0aW9uYDogQSBjb2xsZWN0aW9uIG9mIHRoZSBpdGVtLqQtIGBpdGVtYDogVGhlIGl0ZW0gdGhhdCBob2xkcyBhdHRyaWJ1dGVzLkkBLSBgZGVsZWdhdGVgOiBUaGUgYWNjb3VudCB0byBkZWxlZ2F0ZSBwZXJtaXNzaW9uIHRvIGNoYW5nZSBhdHRyaWJ1dGVzIG9mIHRoZSBpdGVtLgC8RW1pdHMgYEl0ZW1BdHRyaWJ1dGVzQXBwcm92YWxBZGRlZGAgb24gc3VjY2Vzcy58Y2FuY2VsX2l0ZW1fYXR0cmlidXRlc19hcHByb3ZhbBABKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAEgZGVsZWdhdGUAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABHHdpdG5lc3OdBAF8Q2FuY2VsQXR0cmlidXRlc0FwcHJvdmFsV2l0bmVzcwAXKBEBQ2FuY2VsIHRoZSBwcmV2aW91c2x5IHByb3ZpZGVkIGFwcHJvdmFsIHRvIGNoYW5nZSBpdGVtJ3MgYXR0cmlidXRlcy4RAUFsbCB0aGUgcHJldmlvdXNseSBzZXQgYXR0cmlidXRlcyBieSB0aGUgYGRlbGVnYXRlYCB3aWxsIGJlIHJlbW92ZWQuAORPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIG11c3QgYmUgYW4gb3duZXIgb2YgdGhlIGBpdGVtYC4A9C0gYGNvbGxlY3Rpb25gOiBDb2xsZWN0aW9uIHRoYXQgdGhlIGl0ZW0gaXMgY29udGFpbmVkIHdpdGhpbi6kLSBgaXRlbWA6IFRoZSBpdGVtIHRoYXQgaG9sZHMgYXR0cmlidXRlcy7gLSBgZGVsZWdhdGVgOiBUaGUgcHJldmlvdXNseSBhcHByb3ZlZCBhY2NvdW50IHRvIHJlbW92ZS4AxEVtaXRzIGBJdGVtQXR0cmlidXRlc0FwcHJvdmFsUmVtb3ZlZGAgb24gc3VjY2Vzcy4wc2V0X21ldGFkYXRhDAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAARBkYXRhRQEBeEJvdW5kZWRWZWM8dTgsIFQ6OlN0cmluZ0xpbWl0PgAYQHRTZXQgdGhlIG1ldGFkYXRhIGZvciBhbiBpdGVtLgBdAU9yaWdpbiBtdXN0IGJlIGVpdGhlciBgRm9yY2VPcmlnaW5gIG9yIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEFkbWluIG9mIHRoZTRgY29sbGVjdGlvbmAuAFEBSWYgdGhlIG9yaWdpbiBpcyBTaWduZWQsIHRoZW4gZnVuZHMgb2Ygc2lnbmVyIGFyZSByZXNlcnZlZCBhY2NvcmRpbmcgdG8gdGhlIGZvcm11bGE69GBNZXRhZGF0YURlcG9zaXRCYXNlICsgRGVwb3NpdFBlckJ5dGUgKiBkYXRhLmxlbmAgdGFraW5nIGludG+MYWNjb3VudCBhbnkgYWxyZWFkeSByZXNlcnZlZCBmdW5kcy4AOQEtIGBjb2xsZWN0aW9uYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGNvbGxlY3Rpb24gd2hvc2UgaXRlbSdzIG1ldGFkYXRhIHRvIHNldC7sLSBgaXRlbWA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBpdGVtIHdob3NlIG1ldGFkYXRhIHRvIHNldC5NAS0gYGRhdGFgOiBUaGUgZ2VuZXJhbCBpbmZvcm1hdGlvbiBvZiB0aGlzIGl0ZW0uIExpbWl0ZWQgaW4gbGVuZ3RoIGJ5IGBTdHJpbmdMaW1pdGAuAGBFbWl0cyBgSXRlbU1ldGFkYXRhU2V0YC4AOFdlaWdodDogYE8oMSlgOGNsZWFyX21ldGFkYXRhCAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAGTR8Q2xlYXIgdGhlIG1ldGFkYXRhIGZvciBhbiBpdGVtLgBdAU9yaWdpbiBtdXN0IGJlIGVpdGhlciBgRm9yY2VPcmlnaW5gIG9yIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEFkbWluIG9mIHRoZTRgY29sbGVjdGlvbmAuAMBBbnkgZGVwb3NpdCBpcyBmcmVlZCBmb3IgdGhlIGNvbGxlY3Rpb24ncyBvd25lci4AQQEtIGBjb2xsZWN0aW9uYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGNvbGxlY3Rpb24gd2hvc2UgaXRlbSdzIG1ldGFkYXRhIHRvIGNsZWFyLvQtIGBpdGVtYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGl0ZW0gd2hvc2UgbWV0YWRhdGEgdG8gY2xlYXIuAHBFbWl0cyBgSXRlbU1ldGFkYXRhQ2xlYXJlZGAuADhXZWlnaHQ6IGBPKDEpYFxzZXRfY29sbGVjdGlvbl9tZXRhZGF0YQgBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBkYXRhRQEBeEJvdW5kZWRWZWM8dTgsIFQ6OlN0cmluZ0xpbWl0PgAaPIhTZXQgdGhlIG1ldGFkYXRhIGZvciBhIGNvbGxlY3Rpb24uAFUBT3JpZ2luIG11c3QgYmUgZWl0aGVyIGBGb3JjZU9yaWdpbmAgb3IgYFNpZ25lZGAgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBBZG1pbiBvZkR0aGUgYGNvbGxlY3Rpb25gLgBZAUlmIHRoZSBvcmlnaW4gaXMgYFNpZ25lZGAsIHRoZW4gZnVuZHMgb2Ygc2lnbmVyIGFyZSByZXNlcnZlZCBhY2NvcmRpbmcgdG8gdGhlIGZvcm11bGE69GBNZXRhZGF0YURlcG9zaXRCYXNlICsgRGVwb3NpdFBlckJ5dGUgKiBkYXRhLmxlbmAgdGFraW5nIGludG+MYWNjb3VudCBhbnkgYWxyZWFkeSByZXNlcnZlZCBmdW5kcy4AEQEtIGBjb2xsZWN0aW9uYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGl0ZW0gd2hvc2UgbWV0YWRhdGEgdG8gdXBkYXRlLk0BLSBgZGF0YWA6IFRoZSBnZW5lcmFsIGluZm9ybWF0aW9uIG9mIHRoaXMgaXRlbS4gTGltaXRlZCBpbiBsZW5ndGggYnkgYFN0cmluZ0xpbWl0YC4AeEVtaXRzIGBDb2xsZWN0aW9uTWV0YWRhdGFTZXRgLgA4V2VpZ2h0OiBgTygxKWBkY2xlYXJfY29sbGVjdGlvbl9tZXRhZGF0YQQBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAGzCQQ2xlYXIgdGhlIG1ldGFkYXRhIGZvciBhIGNvbGxlY3Rpb24uAFUBT3JpZ2luIG11c3QgYmUgZWl0aGVyIGBGb3JjZU9yaWdpbmAgb3IgYFNpZ25lZGAgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBBZG1pbiBvZkR0aGUgYGNvbGxlY3Rpb25gLgDAQW55IGRlcG9zaXQgaXMgZnJlZWQgZm9yIHRoZSBjb2xsZWN0aW9uJ3Mgb3duZXIuACUBLSBgY29sbGVjdGlvbmA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBjb2xsZWN0aW9uIHdob3NlIG1ldGFkYXRhIHRvIGNsZWFyLgCIRW1pdHMgYENvbGxlY3Rpb25NZXRhZGF0YUNsZWFyZWRgLgA4V2VpZ2h0OiBgTygxKWBQc2V0X2FjY2VwdF9vd25lcnNoaXAEAUBtYXliZV9jb2xsZWN0aW9u5AFcT3B0aW9uPFQ6OkNvbGxlY3Rpb25JZD4AHCgRAVNldCAob3IgcmVzZXQpIHRoZSBhY2NlcHRhbmNlIG9mIG93bmVyc2hpcCBmb3IgYSBwYXJ0aWN1bGFyIGFjY291bnQuAGEBT3JpZ2luIG11c3QgYmUgYFNpZ25lZGAgYW5kIGlmIGBtYXliZV9jb2xsZWN0aW9uYCBpcyBgU29tZWAsIHRoZW4gdGhlIHNpZ25lciBtdXN0IGhhdmUgYUxwcm92aWRlciByZWZlcmVuY2UuAFEBLSBgbWF5YmVfY29sbGVjdGlvbmA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBjb2xsZWN0aW9uIHdob3NlIG93bmVyc2hpcCB0aGUgc2lnbmVyIGlzYQEgIHdpbGxpbmcgdG8gYWNjZXB0LCBvciBpZiBgTm9uZWAsIGFuIGluZGljYXRpb24gdGhhdCB0aGUgc2lnbmVyIGlzIHdpbGxpbmcgdG8gYWNjZXB0IG5vXCAgb3duZXJzaGlwIHRyYW5zZmVyYWwuAIxFbWl0cyBgT3duZXJzaGlwQWNjZXB0YW5jZUNoYW5nZWRgLmRzZXRfY29sbGVjdGlvbl9tYXhfc3VwcGx5CAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABKG1heF9zdXBwbHk4AQx1MzIAHSTgU2V0IHRoZSBtYXhpbXVtIG51bWJlciBvZiBpdGVtcyBhIGNvbGxlY3Rpb24gY291bGQgaGF2ZS4AVQFPcmlnaW4gbXVzdCBiZSBlaXRoZXIgYEZvcmNlT3JpZ2luYCBvciBgU2lnbmVkYCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIE93bmVyIG9mRHRoZSBgY29sbGVjdGlvbmAuAOwtIGBjb2xsZWN0aW9uYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGNvbGxlY3Rpb24gdG8gY2hhbmdlLhEBLSBgbWF4X3N1cHBseWA6IFRoZSBtYXhpbXVtIG51bWJlciBvZiBpdGVtcyBhIGNvbGxlY3Rpb24gY291bGQgaGF2ZS4A1EVtaXRzIGBDb2xsZWN0aW9uTWF4U3VwcGx5U2V0YCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuUHVwZGF0ZV9taW50X3NldHRpbmdzCAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABNG1pbnRfc2V0dGluZ3N5BAEVAU1pbnRTZXR0aW5nczxCYWxhbmNlT2Y8VCwgST4sIEJsb2NrTnVtYmVyRm9yPFQsIEk+LCBUOjoKQ29sbGVjdGlvbklkPgAeJFRVcGRhdGUgbWludCBzZXR0aW5ncy4ATQFPcmlnaW4gbXVzdCBiZSBlaXRoZXIgYEZvcmNlT3JpZ2luYCBvciBgU2lnbmVkYCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIElzc3VlclBvZiB0aGUgYGNvbGxlY3Rpb25gLgDsLSBgY29sbGVjdGlvbmA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBjb2xsZWN0aW9uIHRvIGNoYW5nZS6kLSBgbWludF9zZXR0aW5nc2A6IFRoZSBuZXcgbWludCBzZXR0aW5ncy4A8EVtaXRzIGBDb2xsZWN0aW9uTWludFNldHRpbmdzVXBkYXRlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLiRzZXRfcHJpY2UQAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAABFHByaWNlZQQBXE9wdGlvbjxJdGVtUHJpY2U8VCwgST4+AAFEd2hpdGVsaXN0ZWRfYnV5ZXJZBAFwT3B0aW9uPEFjY291bnRJZExvb2t1cE9mPFQ+PgAfLJRTZXQgKG9yIHJlc2V0KSB0aGUgcHJpY2UgZm9yIGFuIGl0ZW0uAOhPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIG11c3QgYmUgdGhlIG93bmVyIG9mIHRoZSBgaXRlbWAuAKwtIGBjb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gb2YgdGhlIGl0ZW0uoC0gYGl0ZW1gOiBUaGUgaXRlbSB0byBzZXQgdGhlIHByaWNlIGZvci4NAS0gYHByaWNlYDogVGhlIHByaWNlIGZvciB0aGUgaXRlbS4gUGFzcyBgTm9uZWAsIHRvIHJlc2V0IHRoZSBwcmljZS70LSBgYnV5ZXJgOiBSZXN0cmljdHMgdGhlIGJ1eSBvcGVyYXRpb24gdG8gYSBzcGVjaWZpYyBhY2NvdW50LgDsRW1pdHMgYEl0ZW1QcmljZVNldGAgb24gc3VjY2VzcyBpZiB0aGUgcHJpY2UgaXMgbm90IGBOb25lYC7sRW1pdHMgYEl0ZW1QcmljZVJlbW92ZWRgIG9uIHN1Y2Nlc3MgaWYgdGhlIHByaWNlIGlzIGBOb25lYC4gYnV5X2l0ZW0MAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAABJGJpZF9wcmljZVkBATxJdGVtUHJpY2U8VCwgST4AICSoQWxsb3dzIHRvIGJ1eSBhbiBpdGVtIGlmIGl0J3MgdXAgZm9yIHNhbGUuAPhPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIG11c3Qgbm90IGJlIHRoZSBvd25lciBvZiB0aGUgYGl0ZW1gLgCsLSBgY29sbGVjdGlvbmA6IFRoZSBjb2xsZWN0aW9uIG9mIHRoZSBpdGVtLqwtIGBpdGVtYDogVGhlIGl0ZW0gdGhlIHNlbmRlciB3YW50cyB0byBidXku2C0gYGJpZF9wcmljZWA6IFRoZSBwcmljZSB0aGUgc2VuZGVyIGlzIHdpbGxpbmcgdG8gcGF5LgB4RW1pdHMgYEl0ZW1Cb3VnaHRgIG9uIHN1Y2Nlc3MuIHBheV90aXBzBAEQdGlwc6EEAZxCb3VuZGVkVmVjPEl0ZW1UaXBPZjxULCBJPiwgVDo6TWF4VGlwcz4AIRxcQWxsb3dzIHRvIHBheSB0aGUgdGlwcy4AWE9yaWdpbiBtdXN0IGJlIFNpZ25lZC4AVC0gYHRpcHNgOiBUaXBzIGFycmF5LgCYRW1pdHMgYFRpcFNlbnRgIG9uIGV2ZXJ5IHRpcCB0cmFuc2Zlci4sY3JlYXRlX3N3YXAYAUhvZmZlcmVkX2NvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAATBvZmZlcmVkX2l0ZW04ASRUOjpJdGVtSWQAAUhkZXNpcmVkX2NvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAAUhtYXliZV9kZXNpcmVkX2l0ZW3kAURPcHRpb248VDo6SXRlbUlkPgABLG1heWJlX3ByaWNlrQQBrE9wdGlvbjxQcmljZVdpdGhEaXJlY3Rpb248SXRlbVByaWNlPFQsIEk+Pj4AASBkdXJhdGlvbjgBUEJsb2NrTnVtYmVyRm9yPFQsIEk+ACJAUQFSZWdpc3RlciBhIG5ldyBhdG9taWMgc3dhcCwgZGVjbGFyaW5nIGFuIGludGVudGlvbiB0byBzZW5kIGFuIGBpdGVtYCBpbiBleGNoYW5nZSBmb3L8YGRlc2lyZWRfaXRlbWAgZnJvbSBvcmlnaW4gdG8gdGFyZ2V0IG9uIHRoZSBjdXJyZW50IGJsb2NrY2hhaW4uTQFUaGUgdGFyZ2V0IGNhbiBleGVjdXRlIHRoZSBzd2FwIGR1cmluZyB0aGUgc3BlY2lmaWVkIGBkdXJhdGlvbmAgb2YgYmxvY2tzIChpZiBzZXQpLvBBZGRpdGlvbmFsbHksIHRoZSBwcmljZSBjb3VsZCBiZSBzZXQgZm9yIHRoZSBkZXNpcmVkIGBpdGVtYC4A5E9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgbXVzdCBiZSBhbiBvd25lciBvZiB0aGUgYGl0ZW1gLgCsLSBgY29sbGVjdGlvbmA6IFRoZSBjb2xsZWN0aW9uIG9mIHRoZSBpdGVtLqgtIGBpdGVtYDogVGhlIGl0ZW0gYW4gb3duZXIgd2FudHMgdG8gZ2l2ZS7sLSBgZGVzaXJlZF9jb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gb2YgdGhlIGRlc2lyZWQgaXRlbS70LSBgZGVzaXJlZF9pdGVtYDogVGhlIGRlc2lyZWQgaXRlbSBhbiBvd25lciB3YW50cyB0byByZWNlaXZlLmEBLSBgbWF5YmVfcHJpY2VgOiBUaGUgcHJpY2UgYW4gb3duZXIgaXMgd2lsbGluZyB0byBwYXkgb3IgcmVjZWl2ZSBmb3IgdGhlIGRlc2lyZWQgYGl0ZW1gLkkBLSBgZHVyYXRpb25gOiBBIGRlYWRsaW5lIGZvciB0aGUgc3dhcC4gU3BlY2lmaWVkIGJ5IHByb3ZpZGluZyB0aGUgbnVtYmVyIG9mIGJsb2Nrc4gJYWZ0ZXIgd2hpY2ggdGhlIHN3YXAgd2lsbCBleHBpcmUuAHxFbWl0cyBgU3dhcENyZWF0ZWRgIG9uIHN1Y2Nlc3MuLGNhbmNlbF9zd2FwCAFIb2ZmZXJlZF9jb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEwb2ZmZXJlZF9pdGVtOAEkVDo6SXRlbUlkACMkWENhbmNlbCBhbiBhdG9taWMgc3dhcC4AWE9yaWdpbiBtdXN0IGJlIFNpZ25lZC4VAU9yaWdpbiBtdXN0IGJlIGFuIG93bmVyIG9mIHRoZSBgaXRlbWAgaWYgdGhlIGRlYWRsaW5lIGhhc24ndCBleHBpcmVkLgCsLSBgY29sbGVjdGlvbmA6IFRoZSBjb2xsZWN0aW9uIG9mIHRoZSBpdGVtLqgtIGBpdGVtYDogVGhlIGl0ZW0gYW4gb3duZXIgd2FudHMgdG8gZ2l2ZS4AhEVtaXRzIGBTd2FwQ2FuY2VsbGVkYCBvbiBzdWNjZXNzLihjbGFpbV9zd2FwFAE8c2VuZF9jb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEkc2VuZF9pdGVtOAEkVDo6SXRlbUlkAAFIcmVjZWl2ZV9jb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEwcmVjZWl2ZV9pdGVtOAEkVDo6SXRlbUlkAAE0d2l0bmVzc19wcmljZa0EAaxPcHRpb248UHJpY2VXaXRoRGlyZWN0aW9uPEl0ZW1QcmljZTxULCBJPj4+ACQwVENsYWltIGFuIGF0b21pYyBzd2FwLjkBVGhpcyBtZXRob2QgZXhlY3V0ZXMgYSBwZW5kaW5nIHN3YXAsIHRoYXQgd2FzIGNyZWF0ZWQgYnkgYSBjb3VudGVycGFydCBiZWZvcmUuAORPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIG11c3QgYmUgYW4gb3duZXIgb2YgdGhlIGBpdGVtYC4A7C0gYHNlbmRfY29sbGVjdGlvbmA6IFRoZSBjb2xsZWN0aW9uIG9mIHRoZSBpdGVtIHRvIGJlIHNlbnQujC0gYHNlbmRfaXRlbWA6IFRoZSBpdGVtIHRvIGJlIHNlbnQuCQEtIGByZWNlaXZlX2NvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiBvZiB0aGUgaXRlbSB0byBiZSByZWNlaXZlZC6oLSBgcmVjZWl2ZV9pdGVtYDogVGhlIGl0ZW0gdG8gYmUgcmVjZWl2ZWQu5C0gYHdpdG5lc3NfcHJpY2VgOiBBIHByaWNlIHRoYXQgd2FzIHByZXZpb3VzbHkgYWdyZWVkIG9uLgB8RW1pdHMgYFN3YXBDbGFpbWVkYCBvbiBzdWNjZXNzLjxtaW50X3ByZV9zaWduZWQMASRtaW50X2RhdGG5BAFoQm94PFByZVNpZ25lZE1pbnRPZjxULCBJPj4AASRzaWduYXR1cmW9BAFQVDo6T2ZmY2hhaW5TaWduYXR1cmUAARhzaWduZXIEATBUOjpBY2NvdW50SWQAJTTITWludCBhbiBpdGVtIGJ5IHByb3ZpZGluZyB0aGUgcHJlLXNpZ25lZCBhcHByb3ZhbC4AWE9yaWdpbiBtdXN0IGJlIFNpZ25lZC4AXQEtIGBtaW50X2RhdGFgOiBUaGUgcHJlLXNpZ25lZCBhcHByb3ZhbCB0aGF0IGNvbnNpc3RzIG9mIHRoZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgaXRlbSxRASAgaXRzIG1ldGFkYXRhLCBhdHRyaWJ1dGVzLCB3aG8gY2FuIG1pbnQgaXQgKGBOb25lYCBmb3IgYW55b25lKSBhbmQgdW50aWwgd2hhdCBibG9jayQgIG51bWJlci7ILSBgc2lnbmF0dXJlYDogVGhlIHNpZ25hdHVyZSBvZiB0aGUgYGRhdGFgIG9iamVjdC45AS0gYHNpZ25lcmA6IFRoZSBgZGF0YWAgb2JqZWN0J3Mgc2lnbmVyLiBTaG91bGQgYmUgYW4gSXNzdWVyIG9mIHRoZSBjb2xsZWN0aW9uLgBoRW1pdHMgYElzc3VlZGAgb24gc3VjY2Vzcy7URW1pdHMgYEF0dHJpYnV0ZVNldGAgaWYgdGhlIGF0dHJpYnV0ZXMgd2VyZSBwcm92aWRlZC7YRW1pdHMgYEl0ZW1NZXRhZGF0YVNldGAgaWYgdGhlIG1ldGFkYXRhIHdhcyBub3QgZW1wdHkuZHNldF9hdHRyaWJ1dGVzX3ByZV9zaWduZWQMARBkYXRhxQQBbFByZVNpZ25lZEF0dHJpYnV0ZXNPZjxULCBJPgABJHNpZ25hdHVyZb0EAVBUOjpPZmZjaGFpblNpZ25hdHVyZQABGHNpZ25lcgQBMFQ6OkFjY291bnRJZAAmNAEBU2V0IGF0dHJpYnV0ZXMgZm9yIGFuIGl0ZW0gYnkgcHJvdmlkaW5nIHRoZSBwcmUtc2lnbmVkIGFwcHJvdmFsLgD4T3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCBtdXN0IGJlIGFuIG93bmVyIG9mIHRoZSBgZGF0YS5pdGVtYC4ASQEtIGBkYXRhYDogVGhlIHByZS1zaWduZWQgYXBwcm92YWwgdGhhdCBjb25zaXN0cyBvZiB0aGUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGl0ZW0szCAgYXR0cmlidXRlcyB0byB1cGRhdGUgYW5kIHVudGlsIHdoYXQgYmxvY2sgbnVtYmVyLsgtIGBzaWduYXR1cmVgOiBUaGUgc2lnbmF0dXJlIG9mIHRoZSBgZGF0YWAgb2JqZWN0LlEBLSBgc2lnbmVyYDogVGhlIGBkYXRhYCBvYmplY3QncyBzaWduZXIuIFNob3VsZCBiZSBhbiBBZG1pbiBvZiB0aGUgY29sbGVjdGlvbiBmb3IgdGhleCAgYENvbGxlY3Rpb25Pd25lcmAgbmFtZXNwYWNlLgDERW1pdHMgYEF0dHJpYnV0ZVNldGAgZm9yIGVhY2ggcHJvdmlkZWQgYXR0cmlidXRlLhkBRW1pdHMgYEl0ZW1BdHRyaWJ1dGVzQXBwcm92YWxBZGRlZGAgaWYgdGhlIGFwcHJvdmFsIHdhc24ndCBzZXQgYmVmb3JlLqhFbWl0cyBgUHJlU2lnbmVkQXR0cmlidXRlc1NldGAgb24gc3VjY2Vzcy4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMubQQMLHBhbGxldF9uZnRzFHR5cGVzQENvbGxlY3Rpb25Db25maWcMFFByaWNlAVkBLEJsb2NrTnVtYmVyATgwQ29sbGVjdGlvbklkATgADAEgc2V0dGluZ3NxBAFIQ29sbGVjdGlvblNldHRpbmdzAAEobWF4X3N1cHBseeQBLE9wdGlvbjx1MzI+AAE0bWludF9zZXR0aW5nc3kEAbhNaW50U2V0dGluZ3M8UHJpY2UsIEJsb2NrTnVtYmVyLCBDb2xsZWN0aW9uSWQ+AABxBAwscGFsbGV0X25mdHMUdHlwZXMgQml0RmxhZ3MEBFQBdQQABAAoAURDb2xsZWN0aW9uU2V0dGluZwAAdQQMLHBhbGxldF9uZnRzFHR5cGVzRENvbGxlY3Rpb25TZXR0aW5nAAEURFRyYW5zZmVyYWJsZUl0ZW1zAAEAQFVubG9ja2VkTWV0YWRhdGEAAgBIVW5sb2NrZWRBdHRyaWJ1dGVzAAQARFVubG9ja2VkTWF4U3VwcGx5AAgAPERlcG9zaXRSZXF1aXJlZAAQAAB5BAwscGFsbGV0X25mdHMUdHlwZXMwTWludFNldHRpbmdzDBRQcmljZQFZASxCbG9ja051bWJlcgE4MENvbGxlY3Rpb25JZAE4ABQBJG1pbnRfdHlwZX0EAVhNaW50VHlwZTxDb2xsZWN0aW9uSWQ+AAEUcHJpY2VlBAE0T3B0aW9uPFByaWNlPgABLHN0YXJ0X2Jsb2Nr5AFMT3B0aW9uPEJsb2NrTnVtYmVyPgABJGVuZF9ibG9ja+QBTE9wdGlvbjxCbG9ja051bWJlcj4AAVRkZWZhdWx0X2l0ZW1fc2V0dGluZ3OBBAEwSXRlbVNldHRpbmdzAAB9BAwscGFsbGV0X25mdHMUdHlwZXMgTWludFR5cGUEMENvbGxlY3Rpb25JZAE4AQwYSXNzdWVyAAAAGFB1YmxpYwABACBIb2xkZXJPZgQAOAEwQ29sbGVjdGlvbklkAAIAAIEEDCxwYWxsZXRfbmZ0cxR0eXBlcyBCaXRGbGFncwQEVAGFBAAEACgBLEl0ZW1TZXR0aW5nAACFBAwscGFsbGV0X25mdHMUdHlwZXMsSXRlbVNldHRpbmcAAQwwVHJhbnNmZXJhYmxlAAEAQFVubG9ja2VkTWV0YWRhdGEAAgBIVW5sb2NrZWRBdHRyaWJ1dGVzAAQAAIkEDCxwYWxsZXRfbmZ0cxR0eXBlczhEZXN0cm95V2l0bmVzcwAADAE4aXRlbV9tZXRhZGF0YXNkAQx1MzIAATBpdGVtX2NvbmZpZ3NkAQx1MzIAAShhdHRyaWJ1dGVzZAEMdTMyAACNBAQYT3B0aW9uBARUAZEEAQgQTm9uZQAAABBTb21lBACRBAAAAQAAkQQMLHBhbGxldF9uZnRzFHR5cGVzLE1pbnRXaXRuZXNzCBhJdGVtSWQBOBxCYWxhbmNlAVkBAAgBKG93bmVkX2l0ZW3kAThPcHRpb248SXRlbUlkPgABKG1pbnRfcHJpY2VlBAE8T3B0aW9uPEJhbGFuY2U+AACVBAwscGFsbGV0X25mdHMUdHlwZXMoSXRlbUNvbmZpZwAABAEgc2V0dGluZ3OBBAEwSXRlbVNldHRpbmdzAACZBAwscGFsbGV0X25mdHMUdHlwZXNIQXR0cmlidXRlTmFtZXNwYWNlBCRBY2NvdW50SWQBBAEQGFBhbGxldAAAADxDb2xsZWN0aW9uT3duZXIAAQAkSXRlbU93bmVyAAIAHEFjY291bnQEAAQBJEFjY291bnRJZAADAACdBAwscGFsbGV0X25mdHMUdHlwZXN8Q2FuY2VsQXR0cmlidXRlc0FwcHJvdmFsV2l0bmVzcwAABAFIYWNjb3VudF9hdHRyaWJ1dGVzOAEMdTMyAAChBAxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAaUEBFMAAAQAqQQBGFZlYzxUPgAApQQMLHBhbGxldF9uZnRzFHR5cGVzHEl0ZW1UaXAQMENvbGxlY3Rpb25JZAE4GEl0ZW1JZAE4JEFjY291bnRJZAEEGEFtb3VudAFZAQAQAShjb2xsZWN0aW9uOAEwQ29sbGVjdGlvbklkAAEQaXRlbTgBGEl0ZW1JZAABIHJlY2VpdmVyBAEkQWNjb3VudElkAAEYYW1vdW50WQEBGEFtb3VudAAAqQQAAAKlBACtBAQYT3B0aW9uBARUAbEEAQgQTm9uZQAAABBTb21lBACxBAAAAQAAsQQMLHBhbGxldF9uZnRzFHR5cGVzSFByaWNlV2l0aERpcmVjdGlvbgQYQW1vdW50AVkBAAgBGGFtb3VudFkBARhBbW91bnQAASRkaXJlY3Rpb261BAE4UHJpY2VEaXJlY3Rpb24AALUEDCxwYWxsZXRfbmZ0cxR0eXBlczhQcmljZURpcmVjdGlvbgABCBBTZW5kAAAAHFJlY2VpdmUAAQAAuQQMLHBhbGxldF9uZnRzFHR5cGVzNFByZVNpZ25lZE1pbnQUMENvbGxlY3Rpb25JZAE4GEl0ZW1JZAE4JEFjY291bnRJZAEEIERlYWRsaW5lATgcQmFsYW5jZQFZAQAcAShjb2xsZWN0aW9uOAEwQ29sbGVjdGlvbklkAAEQaXRlbTgBGEl0ZW1JZAABKGF0dHJpYnV0ZXMsAVxWZWM8KFZlYzx1OD4sIFZlYzx1OD4pPgABIG1ldGFkYXRhGAEcVmVjPHU4PgABMG9ubHlfYWNjb3VudJEBAURPcHRpb248QWNjb3VudElkPgABIGRlYWRsaW5lOAEgRGVhZGxpbmUAAShtaW50X3ByaWNlZQQBPE9wdGlvbjxCYWxhbmNlPgAAvQQIKHNwX3J1bnRpbWU4TXVsdGlTaWduYXR1cmUAARAcRWQyNTUxOQQAwQQBSGVkMjU1MTk6OlNpZ25hdHVyZQAAABxTcjI1NTE5BADBBAFIc3IyNTUxOTo6U2lnbmF0dXJlAAEAFEVjZHNhBAB5AQFAZWNkc2E6OlNpZ25hdHVyZQACAAxFdGgEAHkBAVhlY2RzYTo6S2VjY2FrU2lnbmF0dXJlAAMAAMEEAAADQAAAAAwAxQQMLHBhbGxldF9uZnRzFHR5cGVzTFByZVNpZ25lZEF0dHJpYnV0ZXMQMENvbGxlY3Rpb25JZAE4GEl0ZW1JZAE4JEFjY291bnRJZAEEIERlYWRsaW5lATgAFAEoY29sbGVjdGlvbjgBMENvbGxlY3Rpb25JZAABEGl0ZW04ARhJdGVtSWQAAShhdHRyaWJ1dGVzLAFcVmVjPChWZWM8dTg+LCBWZWM8dTg+KT4AASRuYW1lc3BhY2WZBAF0QXR0cmlidXRlTmFtZXNwYWNlPEFjY291bnRJZD4AASBkZWFkbGluZTgBIERlYWRsaW5lAADJBAw0cGFsbGV0X2Fzc2V0cxhwYWxsZXQQQ2FsbAgEVAAESQABiBhjcmVhdGUMAQhpZB0CAUxUOjpBc3NldElkUGFyYW1ldGVyAAEUYWRtaW4AAVBBY2NvdW50SWRMb29rdXBPZjxUPgABLG1pbl9iYWxhbmNlWQEBKFQ6OkJhbGFuY2UAAEzoSXNzdWUgYSBuZXcgY2xhc3Mgb2YgZnVuZ2libGUgYXNzZXRzIGZyb20gYSBwdWJsaWMgb3JpZ2luLgAlAVRoaXMgbmV3IGFzc2V0IGNsYXNzIGhhcyBubyBhc3NldHMgaW5pdGlhbGx5IGFuZCBpdHMgb3duZXIgaXMgdGhlIG9yaWdpbi4AYQFUaGUgb3JpZ2luIG11c3QgY29uZm9ybSB0byB0aGUgY29uZmlndXJlZCBgQ3JlYXRlT3JpZ2luYCBhbmQgaGF2ZSBzdWZmaWNpZW50IGZ1bmRzIGZyZWUuALxGdW5kcyBvZiBzZW5kZXIgYXJlIHJlc2VydmVkIGJ5IGBBc3NldERlcG9zaXRgLgAsUGFyYW1ldGVyczpZAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIG5ldyBhc3NldC4gVGhpcyBtdXN0IG5vdCBiZSBjdXJyZW50bHkgaW4gdXNlIHRvIGlkZW50aWZ5MQFhbiBleGlzdGluZyBhc3NldC4gSWYgW2BOZXh0QXNzZXRJZGBdIGlzIHNldCwgdGhlbiB0aGlzIG11c3QgYmUgZXF1YWwgdG8gaXQuWQEtIGBhZG1pbmA6IFRoZSBhZG1pbiBvZiB0aGlzIGNsYXNzIG9mIGFzc2V0cy4gVGhlIGFkbWluIGlzIHRoZSBpbml0aWFsIGFkZHJlc3Mgb2YgZWFjaJxtZW1iZXIgb2YgdGhlIGFzc2V0IGNsYXNzJ3MgYWRtaW4gdGVhbS5NAS0gYG1pbl9iYWxhbmNlYDogVGhlIG1pbmltdW0gYmFsYW5jZSBvZiB0aGlzIG5ldyBhc3NldCB0aGF0IGFueSBzaW5nbGUgYWNjb3VudCBtdXN0PQFoYXZlLiBJZiBhbiBhY2NvdW50J3MgYmFsYW5jZSBpcyByZWR1Y2VkIGJlbG93IHRoaXMsIHRoZW4gaXQgY29sbGFwc2VzIHRvIHplcm8uAJhFbWl0cyBgQ3JlYXRlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLgA4V2VpZ2h0OiBgTygxKWAwZm9yY2VfY3JlYXRlEAEIaWQdAgFMVDo6QXNzZXRJZFBhcmFtZXRlcgABFG93bmVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AATRpc19zdWZmaWNpZW50XQEBEGJvb2wAASxtaW5fYmFsYW5jZVUBAShUOjpCYWxhbmNlAAFM+Elzc3VlIGEgbmV3IGNsYXNzIG9mIGZ1bmdpYmxlIGFzc2V0cyBmcm9tIGEgcHJpdmlsZWdlZCBvcmlnaW4uALRUaGlzIG5ldyBhc3NldCBjbGFzcyBoYXMgbm8gYXNzZXRzIGluaXRpYWxseS4ApFRoZSBvcmlnaW4gbXVzdCBjb25mb3JtIHRvIGBGb3JjZU9yaWdpbmAuAJxVbmxpa2UgYGNyZWF0ZWAsIG5vIGZ1bmRzIGFyZSByZXNlcnZlZC4AWQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBuZXcgYXNzZXQuIFRoaXMgbXVzdCBub3QgYmUgY3VycmVudGx5IGluIHVzZSB0byBpZGVudGlmeTEBYW4gZXhpc3RpbmcgYXNzZXQuIElmIFtgTmV4dEFzc2V0SWRgXSBpcyBzZXQsIHRoZW4gdGhpcyBtdXN0IGJlIGVxdWFsIHRvIGl0LlkBLSBgb3duZXJgOiBUaGUgb3duZXIgb2YgdGhpcyBjbGFzcyBvZiBhc3NldHMuIFRoZSBvd25lciBoYXMgZnVsbCBzdXBlcnVzZXIgcGVybWlzc2lvbnMlAW92ZXIgdGhpcyBhc3NldCwgYnV0IG1heSBsYXRlciBjaGFuZ2UgYW5kIGNvbmZpZ3VyZSB0aGUgcGVybWlzc2lvbnMgdXNpbmeQYHRyYW5zZmVyX293bmVyc2hpcGAgYW5kIGBzZXRfdGVhbWAuTQEtIGBtaW5fYmFsYW5jZWA6IFRoZSBtaW5pbXVtIGJhbGFuY2Ugb2YgdGhpcyBuZXcgYXNzZXQgdGhhdCBhbnkgc2luZ2xlIGFjY291bnQgbXVzdD0BaGF2ZS4gSWYgYW4gYWNjb3VudCdzIGJhbGFuY2UgaXMgcmVkdWNlZCBiZWxvdyB0aGlzLCB0aGVuIGl0IGNvbGxhcHNlcyB0byB6ZXJvLgCsRW1pdHMgYEZvcmNlQ3JlYXRlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLgA4V2VpZ2h0OiBgTygxKWA0c3RhcnRfZGVzdHJveQQBCGlkHQIBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAAjDcU3RhcnQgdGhlIHByb2Nlc3Mgb2YgZGVzdHJveWluZyBhIGZ1bmdpYmxlIGFzc2V0IGNsYXNzLgBZAWBzdGFydF9kZXN0cm95YCBpcyB0aGUgZmlyc3QgaW4gYSBzZXJpZXMgb2YgZXh0cmluc2ljcyB0aGF0IHNob3VsZCBiZSBjYWxsZWQsIHRvIGFsbG93eGRlc3RydWN0aW9uIG9mIGFuIGFzc2V0IGNsYXNzLgBRAVRoZSBvcmlnaW4gbXVzdCBjb25mb3JtIHRvIGBGb3JjZU9yaWdpbmAgb3IgbXVzdCBiZSBgU2lnbmVkYCBieSB0aGUgYXNzZXQncyBgb3duZXJgLgBNAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIGRlc3Ryb3llZC4gVGhpcyBtdXN0IGlkZW50aWZ5IGFuIGV4aXN0aW5nICAgYXNzZXQuAEkBSXQgd2lsbCBmYWlsIHdpdGggZWl0aGVyIFtgRXJyb3I6OkNvbnRhaW5zSG9sZHNgXSBvciBbYEVycm9yOjpDb250YWluc0ZyZWV6ZXNgXSBpZrhhbiBhY2NvdW50IGNvbnRhaW5zIGhvbGRzIG9yIGZyZWV6ZXMgaW4gcGxhY2UuQGRlc3Ryb3lfYWNjb3VudHMEAQhpZB0CAUxUOjpBc3NldElkUGFyYW1ldGVyAAMwzERlc3Ryb3kgYWxsIGFjY291bnRzIGFzc29jaWF0ZWQgd2l0aCBhIGdpdmVuIGFzc2V0LgBdAWBkZXN0cm95X2FjY291bnRzYCBzaG91bGQgb25seSBiZSBjYWxsZWQgYWZ0ZXIgYHN0YXJ0X2Rlc3Ryb3lgIGhhcyBiZWVuIGNhbGxlZCwgYW5kIHRoZYRhc3NldCBpcyBpbiBhIGBEZXN0cm95aW5nYCBzdGF0ZS4AXQFEdWUgdG8gd2VpZ2h0IHJlc3RyaWN0aW9ucywgdGhpcyBmdW5jdGlvbiBtYXkgbmVlZCB0byBiZSBjYWxsZWQgbXVsdGlwbGUgdGltZXMgdG8gZnVsbHkxAWRlc3Ryb3kgYWxsIGFjY291bnRzLiBJdCB3aWxsIGRlc3Ryb3kgYFJlbW92ZUl0ZW1zTGltaXRgIGFjY291bnRzIGF0IGEgdGltZS4ATQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBiZSBkZXN0cm95ZWQuIFRoaXMgbXVzdCBpZGVudGlmeSBhbiBleGlzdGluZyAgIGFzc2V0LgDURWFjaCBjYWxsIGVtaXRzIHRoZSBgRXZlbnQ6OkRlc3Ryb3llZEFjY291bnRzYCBldmVudC5EZGVzdHJveV9hcHByb3ZhbHMEAQhpZB0CAUxUOjpBc3NldElkUGFyYW1ldGVyAAQwYQFEZXN0cm95IGFsbCBhcHByb3ZhbHMgYXNzb2NpYXRlZCB3aXRoIGEgZ2l2ZW4gYXNzZXQgdXAgdG8gdGhlIG1heCAoVDo6UmVtb3ZlSXRlbXNMaW1pdCkuAGEBYGRlc3Ryb3lfYXBwcm92YWxzYCBzaG91bGQgb25seSBiZSBjYWxsZWQgYWZ0ZXIgYHN0YXJ0X2Rlc3Ryb3lgIGhhcyBiZWVuIGNhbGxlZCwgYW5kIHRoZYRhc3NldCBpcyBpbiBhIGBEZXN0cm95aW5nYCBzdGF0ZS4AXQFEdWUgdG8gd2VpZ2h0IHJlc3RyaWN0aW9ucywgdGhpcyBmdW5jdGlvbiBtYXkgbmVlZCB0byBiZSBjYWxsZWQgbXVsdGlwbGUgdGltZXMgdG8gZnVsbHk5AWRlc3Ryb3kgYWxsIGFwcHJvdmFscy4gSXQgd2lsbCBkZXN0cm95IGBSZW1vdmVJdGVtc0xpbWl0YCBhcHByb3ZhbHMgYXQgYSB0aW1lLgBNAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIGRlc3Ryb3llZC4gVGhpcyBtdXN0IGlkZW50aWZ5IGFuIGV4aXN0aW5nICAgYXNzZXQuANhFYWNoIGNhbGwgZW1pdHMgdGhlIGBFdmVudDo6RGVzdHJveWVkQXBwcm92YWxzYCBldmVudC44ZmluaXNoX2Rlc3Ryb3kEAQhpZB0CAUxUOjpBc3NldElkUGFyYW1ldGVyAAUoxENvbXBsZXRlIGRlc3Ryb3lpbmcgYXNzZXQgYW5kIHVucmVzZXJ2ZSBjdXJyZW5jeS4AVQFgZmluaXNoX2Rlc3Ryb3lgIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBhZnRlciBgc3RhcnRfZGVzdHJveWAgaGFzIGJlZW4gY2FsbGVkLCBhbmQgdGhlWQFhc3NldCBpcyBpbiBhIGBEZXN0cm95aW5nYCBzdGF0ZS4gQWxsIGFjY291bnRzIG9yIGFwcHJvdmFscyBzaG91bGQgYmUgZGVzdHJveWVkIGJlZm9yZRRoYW5kLgBNAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIGRlc3Ryb3llZC4gVGhpcyBtdXN0IGlkZW50aWZ5IGFuIGV4aXN0aW5nICAgYXNzZXQuAOBFYWNoIHN1Y2Nlc3NmdWwgY2FsbCBlbWl0cyB0aGUgYEV2ZW50OjpEZXN0cm95ZWRgIGV2ZW50LhBtaW50DAEIaWQdAgFMVDo6QXNzZXRJZFBhcmFtZXRlcgABLGJlbmVmaWNpYXJ5AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARhhbW91bnRVAQEoVDo6QmFsYW5jZQAGMIhNaW50IGFzc2V0cyBvZiBhIHBhcnRpY3VsYXIgY2xhc3MuADkBVGhlIG9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBtdXN0IGJlIHRoZSBJc3N1ZXIgb2YgdGhlIGFzc2V0IGBpZGAuAPwtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBoYXZlIHNvbWUgYW1vdW50IG1pbnRlZC4NAS0gYGJlbmVmaWNpYXJ5YDogVGhlIGFjY291bnQgdG8gYmUgY3JlZGl0ZWQgd2l0aCB0aGUgbWludGVkIGFzc2V0cy7ELSBgYW1vdW50YDogVGhlIGFtb3VudCBvZiB0aGUgYXNzZXQgdG8gYmUgbWludGVkLgCURW1pdHMgYElzc3VlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLgA4V2VpZ2h0OiBgTygxKWBVAU1vZGVzOiBQcmUtZXhpc3RpbmcgYmFsYW5jZSBvZiBgYmVuZWZpY2lhcnlgOyBBY2NvdW50IHByZS1leGlzdGVuY2Ugb2YgYGJlbmVmaWNpYXJ5YC4QYnVybgwBCGlkHQIBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAAQx3aG8AAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGFtb3VudFUBAShUOjpCYWxhbmNlAAc8RQFSZWR1Y2UgdGhlIGJhbGFuY2Ugb2YgYHdob2AgYnkgYXMgbXVjaCBhcyBwb3NzaWJsZSB1cCB0byBgYW1vdW50YCBhc3NldHMgb2YgYGlkYC4ANQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBNYW5hZ2VyIG9mIHRoZSBhc3NldCBgaWRgLgDQQmFpbHMgd2l0aCBgTm9BY2NvdW50YCBpZiB0aGUgYHdob2AgaXMgYWxyZWFkeSBkZWFkLgD8LSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gaGF2ZSBzb21lIGFtb3VudCBidXJuZWQuoC0gYHdob2A6IFRoZSBhY2NvdW50IHRvIGJlIGRlYml0ZWQgZnJvbS4pAS0gYGFtb3VudGA6IFRoZSBtYXhpbXVtIGFtb3VudCBieSB3aGljaCBgd2hvYCdzIGJhbGFuY2Ugc2hvdWxkIGJlIHJlZHVjZWQuAFEBRW1pdHMgYEJ1cm5lZGAgd2l0aCB0aGUgYWN0dWFsIGFtb3VudCBidXJuZWQuIElmIHRoaXMgdGFrZXMgdGhlIGJhbGFuY2UgdG8gYmVsb3cgdGhlOQFtaW5pbXVtIGZvciB0aGUgYXNzZXQsIHRoZW4gdGhlIGFtb3VudCBidXJuZWQgaXMgaW5jcmVhc2VkIHRvIHRha2UgaXQgdG8gemVyby4AOFdlaWdodDogYE8oMSlgCQFNb2RlczogUG9zdC1leGlzdGVuY2Ugb2YgYHdob2A7IFByZSAmIHBvc3QgWm9tYmllLXN0YXR1cyBvZiBgd2hvYC4gdHJhbnNmZXIMAQhpZB0CAUxUOjpBc3NldElkUGFyYW1ldGVyAAEYdGFyZ2V0AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARhhbW91bnRVAQEoVDo6QmFsYW5jZQAISNBNb3ZlIHNvbWUgYXNzZXRzIGZyb20gdGhlIHNlbmRlciBhY2NvdW50IHRvIGFub3RoZXIuAFhPcmlnaW4gbXVzdCBiZSBTaWduZWQuABEBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gaGF2ZSBzb21lIGFtb3VudCB0cmFuc2ZlcnJlZC6cLSBgdGFyZ2V0YDogVGhlIGFjY291bnQgdG8gYmUgY3JlZGl0ZWQuUQEtIGBhbW91bnRgOiBUaGUgYW1vdW50IGJ5IHdoaWNoIHRoZSBzZW5kZXIncyBiYWxhbmNlIG9mIGFzc2V0cyBzaG91bGQgYmUgcmVkdWNlZCBhbmRhAWB0YXJnZXRgJ3MgYmFsYW5jZSBpbmNyZWFzZWQuIFRoZSBhbW91bnQgYWN0dWFsbHkgdHJhbnNmZXJyZWQgbWF5IGJlIHNsaWdodGx5IGdyZWF0ZXIgaW5dAXRoZSBjYXNlIHRoYXQgdGhlIHRyYW5zZmVyIHdvdWxkIG90aGVyd2lzZSB0YWtlIHRoZSBzZW5kZXIgYmFsYW5jZSBhYm92ZSB6ZXJvIGJ1dCBiZWxvd7x0aGUgbWluaW11bSBiYWxhbmNlLiBNdXN0IGJlIGdyZWF0ZXIgdGhhbiB6ZXJvLgBhAUVtaXRzIGBUcmFuc2ZlcnJlZGAgd2l0aCB0aGUgYWN0dWFsIGFtb3VudCB0cmFuc2ZlcnJlZC4gSWYgdGhpcyB0YWtlcyB0aGUgc291cmNlIGJhbGFuY2VdAXRvIGJlbG93IHRoZSBtaW5pbXVtIGZvciB0aGUgYXNzZXQsIHRoZW4gdGhlIGFtb3VudCB0cmFuc2ZlcnJlZCBpcyBpbmNyZWFzZWQgdG8gdGFrZSBpdCB0byB6ZXJvLgA4V2VpZ2h0OiBgTygxKWBRAU1vZGVzOiBQcmUtZXhpc3RlbmNlIG9mIGB0YXJnZXRgOyBQb3N0LWV4aXN0ZW5jZSBvZiBzZW5kZXI7IEFjY291bnQgcHJlLWV4aXN0ZW5jZSBvZiRgdGFyZ2V0YC5MdHJhbnNmZXJfa2VlcF9hbGl2ZQwBCGlkHQIBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARh0YXJnZXQAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGFtb3VudFUBAShUOjpCYWxhbmNlAAlIWQFNb3ZlIHNvbWUgYXNzZXRzIGZyb20gdGhlIHNlbmRlciBhY2NvdW50IHRvIGFub3RoZXIsIGtlZXBpbmcgdGhlIHNlbmRlciBhY2NvdW50IGFsaXZlLgBYT3JpZ2luIG11c3QgYmUgU2lnbmVkLgARAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGhhdmUgc29tZSBhbW91bnQgdHJhbnNmZXJyZWQunC0gYHRhcmdldGA6IFRoZSBhY2NvdW50IHRvIGJlIGNyZWRpdGVkLlEBLSBgYW1vdW50YDogVGhlIGFtb3VudCBieSB3aGljaCB0aGUgc2VuZGVyJ3MgYmFsYW5jZSBvZiBhc3NldHMgc2hvdWxkIGJlIHJlZHVjZWQgYW5kYQFgdGFyZ2V0YCdzIGJhbGFuY2UgaW5jcmVhc2VkLiBUaGUgYW1vdW50IGFjdHVhbGx5IHRyYW5zZmVycmVkIG1heSBiZSBzbGlnaHRseSBncmVhdGVyIGluXQF0aGUgY2FzZSB0aGF0IHRoZSB0cmFuc2ZlciB3b3VsZCBvdGhlcndpc2UgdGFrZSB0aGUgc2VuZGVyIGJhbGFuY2UgYWJvdmUgemVybyBidXQgYmVsb3e8dGhlIG1pbmltdW0gYmFsYW5jZS4gTXVzdCBiZSBncmVhdGVyIHRoYW4gemVyby4AYQFFbWl0cyBgVHJhbnNmZXJyZWRgIHdpdGggdGhlIGFjdHVhbCBhbW91bnQgdHJhbnNmZXJyZWQuIElmIHRoaXMgdGFrZXMgdGhlIHNvdXJjZSBiYWxhbmNlXQF0byBiZWxvdyB0aGUgbWluaW11bSBmb3IgdGhlIGFzc2V0LCB0aGVuIHRoZSBhbW91bnQgdHJhbnNmZXJyZWQgaXMgaW5jcmVhc2VkIHRvIHRha2UgaXQgdG8gemVyby4AOFdlaWdodDogYE8oMSlgUQFNb2RlczogUHJlLWV4aXN0ZW5jZSBvZiBgdGFyZ2V0YDsgUG9zdC1leGlzdGVuY2Ugb2Ygc2VuZGVyOyBBY2NvdW50IHByZS1leGlzdGVuY2Ugb2YkYHRhcmdldGAuOGZvcmNlX3RyYW5zZmVyEAEIaWQdAgFMVDo6QXNzZXRJZFBhcmFtZXRlcgABGHNvdXJjZQABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEQZGVzdAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYYW1vdW50VQEBKFQ6OkJhbGFuY2UACky0TW92ZSBzb21lIGFzc2V0cyBmcm9tIG9uZSBhY2NvdW50IHRvIGFub3RoZXIuAC0BT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgQWRtaW4gb2YgdGhlIGFzc2V0IGBpZGAuABEBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gaGF2ZSBzb21lIGFtb3VudCB0cmFuc2ZlcnJlZC6YLSBgc291cmNlYDogVGhlIGFjY291bnQgdG8gYmUgZGViaXRlZC6ULSBgZGVzdGA6IFRoZSBhY2NvdW50IHRvIGJlIGNyZWRpdGVkLlkBLSBgYW1vdW50YDogVGhlIGFtb3VudCBieSB3aGljaCB0aGUgYHNvdXJjZWAncyBiYWxhbmNlIG9mIGFzc2V0cyBzaG91bGQgYmUgcmVkdWNlZCBhbmRZAWBkZXN0YCdzIGJhbGFuY2UgaW5jcmVhc2VkLiBUaGUgYW1vdW50IGFjdHVhbGx5IHRyYW5zZmVycmVkIG1heSBiZSBzbGlnaHRseSBncmVhdGVyIGluTQF0aGUgY2FzZSB0aGF0IHRoZSB0cmFuc2ZlciB3b3VsZCBvdGhlcndpc2UgdGFrZSB0aGUgYHNvdXJjZWAgYmFsYW5jZSBhYm92ZSB6ZXJvIGJ1dNRiZWxvdyB0aGUgbWluaW11bSBiYWxhbmNlLiBNdXN0IGJlIGdyZWF0ZXIgdGhhbiB6ZXJvLgBhAUVtaXRzIGBUcmFuc2ZlcnJlZGAgd2l0aCB0aGUgYWN0dWFsIGFtb3VudCB0cmFuc2ZlcnJlZC4gSWYgdGhpcyB0YWtlcyB0aGUgc291cmNlIGJhbGFuY2VdAXRvIGJlbG93IHRoZSBtaW5pbXVtIGZvciB0aGUgYXNzZXQsIHRoZW4gdGhlIGFtb3VudCB0cmFuc2ZlcnJlZCBpcyBpbmNyZWFzZWQgdG8gdGFrZSBpdCB0byB6ZXJvLgA4V2VpZ2h0OiBgTygxKWBRAU1vZGVzOiBQcmUtZXhpc3RlbmNlIG9mIGBkZXN0YDsgUG9zdC1leGlzdGVuY2Ugb2YgYHNvdXJjZWA7IEFjY291bnQgcHJlLWV4aXN0ZW5jZSBvZhxgZGVzdGAuGGZyZWV6ZQgBCGlkHQIBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAAQx3aG8AAVBBY2NvdW50SWRMb29rdXBPZjxUPgALMFUBRGlzYWxsb3cgZnVydGhlciB1bnByaXZpbGVnZWQgdHJhbnNmZXJzIG9mIGFuIGFzc2V0IGBpZGAgZnJvbSBhbiBhY2NvdW50IGB3aG9gLiBgd2hvYE0BbXVzdCBhbHJlYWR5IGV4aXN0IGFzIGFuIGVudHJ5IGluIGBBY2NvdW50YHMgb2YgdGhlIGFzc2V0LiBJZiB5b3Ugd2FudCB0byBmcmVlemUgYW70YWNjb3VudCB0aGF0IGRvZXMgbm90IGhhdmUgYW4gZW50cnksIHVzZSBgdG91Y2hfb3RoZXJgIGZpcnN0LgA1AU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEZyZWV6ZXIgb2YgdGhlIGFzc2V0IGBpZGAuAMQtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBiZSBmcm96ZW4uiC0gYHdob2A6IFRoZSBhY2NvdW50IHRvIGJlIGZyb3plbi4APEVtaXRzIGBGcm96ZW5gLgA4V2VpZ2h0OiBgTygxKWAQdGhhdwgBCGlkHQIBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAAQx3aG8AAVBBY2NvdW50SWRMb29rdXBPZjxUPgAMKOhBbGxvdyB1bnByaXZpbGVnZWQgdHJhbnNmZXJzIHRvIGFuZCBmcm9tIGFuIGFjY291bnQgYWdhaW4uAC0BT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgQWRtaW4gb2YgdGhlIGFzc2V0IGBpZGAuAMQtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBiZSBmcm96ZW4ukC0gYHdob2A6IFRoZSBhY2NvdW50IHRvIGJlIHVuZnJvemVuLgA8RW1pdHMgYFRoYXdlZGAuADhXZWlnaHQ6IGBPKDEpYDBmcmVlemVfYXNzZXQEAQhpZB0CAUxUOjpBc3NldElkUGFyYW1ldGVyAA0k8ERpc2FsbG93IGZ1cnRoZXIgdW5wcml2aWxlZ2VkIHRyYW5zZmVycyBmb3IgdGhlIGFzc2V0IGNsYXNzLgA1AU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEZyZWV6ZXIgb2YgdGhlIGFzc2V0IGBpZGAuAMQtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBiZSBmcm96ZW4uADxFbWl0cyBgRnJvemVuYC4AOFdlaWdodDogYE8oMSlgKHRoYXdfYXNzZXQEAQhpZB0CAUxUOjpBc3NldElkUGFyYW1ldGVyAA4kxEFsbG93IHVucHJpdmlsZWdlZCB0cmFuc2ZlcnMgZm9yIHRoZSBhc3NldCBhZ2Fpbi4ALQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBBZG1pbiBvZiB0aGUgYXNzZXQgYGlkYC4AxC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIHRoYXdlZC4APEVtaXRzIGBUaGF3ZWRgLgA4V2VpZ2h0OiBgTygxKWBIdHJhbnNmZXJfb3duZXJzaGlwCAEIaWQdAgFMVDo6QXNzZXRJZFBhcmFtZXRlcgABFG93bmVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4ADyh0Q2hhbmdlIHRoZSBPd25lciBvZiBhbiBhc3NldC4ALQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBPd25lciBvZiB0aGUgYXNzZXQgYGlkYC4AkC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0LpwtIGBvd25lcmA6IFRoZSBuZXcgT3duZXIgb2YgdGhpcyBhc3NldC4AVEVtaXRzIGBPd25lckNoYW5nZWRgLgA4V2VpZ2h0OiBgTygxKWAgc2V0X3RlYW0QAQhpZB0CAUxUOjpBc3NldElkUGFyYW1ldGVyAAEYaXNzdWVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARRhZG1pbgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEcZnJlZXplcgABUEFjY291bnRJZExvb2t1cE9mPFQ+ABAwxENoYW5nZSB0aGUgSXNzdWVyLCBBZG1pbiBhbmQgRnJlZXplciBvZiBhbiBhc3NldC4ALQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBPd25lciBvZiB0aGUgYXNzZXQgYGlkYC4AxC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIGZyb3plbi6kLSBgaXNzdWVyYDogVGhlIG5ldyBJc3N1ZXIgb2YgdGhpcyBhc3NldC6cLSBgYWRtaW5gOiBUaGUgbmV3IEFkbWluIG9mIHRoaXMgYXNzZXQurC0gYGZyZWV6ZXJgOiBUaGUgbmV3IEZyZWV6ZXIgb2YgdGhpcyBhc3NldC4AUEVtaXRzIGBUZWFtQ2hhbmdlZGAuADhXZWlnaHQ6IGBPKDEpYDBzZXRfbWV0YWRhdGEQAQhpZB0CAUxUOjpBc3NldElkUGFyYW1ldGVyAAEQbmFtZRgBHFZlYzx1OD4AARhzeW1ib2wYARxWZWM8dTg+AAEgZGVjaW1hbHMMAQh1OAARQHhTZXQgdGhlIG1ldGFkYXRhIGZvciBhbiBhc3NldC4ALQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBPd25lciBvZiB0aGUgYXNzZXQgYGlkYC4A2EZ1bmRzIG9mIHNlbmRlciBhcmUgcmVzZXJ2ZWQgYWNjb3JkaW5nIHRvIHRoZSBmb3JtdWxhOlEBYE1ldGFkYXRhRGVwb3NpdEJhc2UgKyBNZXRhZGF0YURlcG9zaXRQZXJCeXRlICogKG5hbWUubGVuICsgc3ltYm9sLmxlbilgIHRha2luZyBpbnRvjGFjY291bnQgYW55IGFscmVhZHkgcmVzZXJ2ZWQgZnVuZHMuALgtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byB1cGRhdGUuTQEtIGBuYW1lYDogVGhlIHVzZXIgZnJpZW5kbHkgbmFtZSBvZiB0aGlzIGFzc2V0LiBMaW1pdGVkIGluIGxlbmd0aCBieSBgU3RyaW5nTGltaXRgLk0BLSBgc3ltYm9sYDogVGhlIGV4Y2hhbmdlIHN5bWJvbCBmb3IgdGhpcyBhc3NldC4gTGltaXRlZCBpbiBsZW5ndGggYnkgYFN0cmluZ0xpbWl0YC4tAS0gYGRlY2ltYWxzYDogVGhlIG51bWJlciBvZiBkZWNpbWFscyB0aGlzIGFzc2V0IHVzZXMgdG8gcmVwcmVzZW50IG9uZSB1bml0LgBQRW1pdHMgYE1ldGFkYXRhU2V0YC4AOFdlaWdodDogYE8oMSlgOGNsZWFyX21ldGFkYXRhBAEIaWQdAgFMVDo6QXNzZXRJZFBhcmFtZXRlcgASLIBDbGVhciB0aGUgbWV0YWRhdGEgZm9yIGFuIGFzc2V0LgAtAU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIE93bmVyIG9mIHRoZSBhc3NldCBgaWRgLgCkQW55IGRlcG9zaXQgaXMgZnJlZWQgZm9yIHRoZSBhc3NldCBvd25lci4AtC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGNsZWFyLgBgRW1pdHMgYE1ldGFkYXRhQ2xlYXJlZGAuADhXZWlnaHQ6IGBPKDEpYEhmb3JjZV9zZXRfbWV0YWRhdGEUAQhpZB0CAUxUOjpBc3NldElkUGFyYW1ldGVyAAEQbmFtZRgBHFZlYzx1OD4AARhzeW1ib2wYARxWZWM8dTg+AAEgZGVjaW1hbHMMAQh1OAABJGlzX2Zyb3plbl0BARBib29sABM4uEZvcmNlIHRoZSBtZXRhZGF0YSBmb3IgYW4gYXNzZXQgdG8gc29tZSB2YWx1ZS4AbE9yaWdpbiBtdXN0IGJlIEZvcmNlT3JpZ2luLgBoQW55IGRlcG9zaXQgaXMgbGVmdCBhbG9uZS4AuC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIHVwZGF0ZS5NAS0gYG5hbWVgOiBUaGUgdXNlciBmcmllbmRseSBuYW1lIG9mIHRoaXMgYXNzZXQuIExpbWl0ZWQgaW4gbGVuZ3RoIGJ5IGBTdHJpbmdMaW1pdGAuTQEtIGBzeW1ib2xgOiBUaGUgZXhjaGFuZ2Ugc3ltYm9sIGZvciB0aGlzIGFzc2V0LiBMaW1pdGVkIGluIGxlbmd0aCBieSBgU3RyaW5nTGltaXRgLi0BLSBgZGVjaW1hbHNgOiBUaGUgbnVtYmVyIG9mIGRlY2ltYWxzIHRoaXMgYXNzZXQgdXNlcyB0byByZXByZXNlbnQgb25lIHVuaXQuAFBFbWl0cyBgTWV0YWRhdGFTZXRgLgBRAVdlaWdodDogYE8oTiArIFMpYCB3aGVyZSBOIGFuZCBTIGFyZSB0aGUgbGVuZ3RoIG9mIHRoZSBuYW1lIGFuZCBzeW1ib2wgcmVzcGVjdGl2ZWx5LlBmb3JjZV9jbGVhcl9tZXRhZGF0YQQBCGlkHQIBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAFCyAQ2xlYXIgdGhlIG1ldGFkYXRhIGZvciBhbiBhc3NldC4AbE9yaWdpbiBtdXN0IGJlIEZvcmNlT3JpZ2luLgBgQW55IGRlcG9zaXQgaXMgcmV0dXJuZWQuALQtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBjbGVhci4AYEVtaXRzIGBNZXRhZGF0YUNsZWFyZWRgLgA4V2VpZ2h0OiBgTygxKWBIZm9yY2VfYXNzZXRfc3RhdHVzIAEIaWQdAgFMVDo6QXNzZXRJZFBhcmFtZXRlcgABFG93bmVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARhpc3N1ZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABFGFkbWluAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARxmcmVlemVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AASxtaW5fYmFsYW5jZVUBAShUOjpCYWxhbmNlAAE0aXNfc3VmZmljaWVudF0BARBib29sAAEkaXNfZnJvemVuXQEBEGJvb2wAFViYQWx0ZXIgdGhlIGF0dHJpYnV0ZXMgb2YgYSBnaXZlbiBhc3NldC4AdE9yaWdpbiBtdXN0IGJlIGBGb3JjZU9yaWdpbmAuAJAtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldC6cLSBgb3duZXJgOiBUaGUgbmV3IE93bmVyIG9mIHRoaXMgYXNzZXQupC0gYGlzc3VlcmA6IFRoZSBuZXcgSXNzdWVyIG9mIHRoaXMgYXNzZXQunC0gYGFkbWluYDogVGhlIG5ldyBBZG1pbiBvZiB0aGlzIGFzc2V0LqwtIGBmcmVlemVyYDogVGhlIG5ldyBGcmVlemVyIG9mIHRoaXMgYXNzZXQuTQEtIGBtaW5fYmFsYW5jZWA6IFRoZSBtaW5pbXVtIGJhbGFuY2Ugb2YgdGhpcyBuZXcgYXNzZXQgdGhhdCBhbnkgc2luZ2xlIGFjY291bnQgbXVzdD0BaGF2ZS4gSWYgYW4gYWNjb3VudCdzIGJhbGFuY2UgaXMgcmVkdWNlZCBiZWxvdyB0aGlzLCB0aGVuIGl0IGNvbGxhcHNlcyB0byB6ZXJvLlEBLSBgaXNfc3VmZmljaWVudGA6IFdoZXRoZXIgYSBub24temVybyBiYWxhbmNlIG9mIHRoaXMgYXNzZXQgaXMgZGVwb3NpdCBvZiBzdWZmaWNpZW50TQF2YWx1ZSB0byBhY2NvdW50IGZvciB0aGUgc3RhdGUgYmxvYXQgYXNzb2NpYXRlZCB3aXRoIGl0cyBiYWxhbmNlIHN0b3JhZ2UuIElmIHNldCB0b1UBYHRydWVgLCB0aGVuIG5vbi16ZXJvIGJhbGFuY2VzIG1heSBiZSBzdG9yZWQgd2l0aG91dCBhIGBjb25zdW1lcmAgcmVmZXJlbmNlIChhbmQgdGh1c00BYW4gRUQgaW4gdGhlIEJhbGFuY2VzIHBhbGxldCBvciB3aGF0ZXZlciBlbHNlIGlzIHVzZWQgdG8gY29udHJvbCB1c2VyLWFjY291bnQgc3RhdGUgZ3Jvd3RoKS49AS0gYGlzX2Zyb3plbmA6IFdoZXRoZXIgdGhpcyBhc3NldCBjbGFzcyBpcyBmcm96ZW4gZXhjZXB0IGZvciBwZXJtaXNzaW9uZWQvYWRtaW40aW5zdHJ1Y3Rpb25zLgDoRW1pdHMgYEFzc2V0U3RhdHVzQ2hhbmdlZGAgd2l0aCB0aGUgaWRlbnRpdHkgb2YgdGhlIGFzc2V0LgA4V2VpZ2h0OiBgTygxKWBAYXBwcm92ZV90cmFuc2ZlcgwBCGlkHQIBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAASBkZWxlZ2F0ZQABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYYW1vdW50VQEBKFQ6OkJhbGFuY2UAFlAtAUFwcHJvdmUgYW4gYW1vdW50IG9mIGFzc2V0IGZvciB0cmFuc2ZlciBieSBhIGRlbGVnYXRlZCB0aGlyZC1wYXJ0eSBhY2NvdW50LgBYT3JpZ2luIG11c3QgYmUgU2lnbmVkLgBNAUVuc3VyZXMgdGhhdCBgQXBwcm92YWxEZXBvc2l0YCB3b3J0aCBvZiBgQ3VycmVuY3lgIGlzIHJlc2VydmVkIGZyb20gc2lnbmluZyBhY2NvdW50VQFmb3IgdGhlIHB1cnBvc2Ugb2YgaG9sZGluZyB0aGUgYXBwcm92YWwuIElmIHNvbWUgbm9uLXplcm8gYW1vdW50IG9mIGFzc2V0cyBpcyBhbHJlYWR5SQFhcHByb3ZlZCBmcm9tIHNpZ25pbmcgYWNjb3VudCB0byBgZGVsZWdhdGVgLCB0aGVuIGl0IGlzIHRvcHBlZCB1cCBvciB1bnJlc2VydmVkIHRvVG1lZXQgdGhlIHJpZ2h0IHZhbHVlLgBFAU5PVEU6IFRoZSBzaWduaW5nIGFjY291bnQgZG9lcyBub3QgbmVlZCB0byBvd24gYGFtb3VudGAgb2YgYXNzZXRzIGF0IHRoZSBwb2ludCBvZkRtYWtpbmcgdGhpcyBjYWxsLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQuDQEtIGBkZWxlZ2F0ZWA6IFRoZSBhY2NvdW50IHRvIGRlbGVnYXRlIHBlcm1pc3Npb24gdG8gdHJhbnNmZXIgYXNzZXQuSQEtIGBhbW91bnRgOiBUaGUgYW1vdW50IG9mIGFzc2V0IHRoYXQgbWF5IGJlIHRyYW5zZmVycmVkIGJ5IGBkZWxlZ2F0ZWAuIElmIHRoZXJlIGlz4GFscmVhZHkgYW4gYXBwcm92YWwgaW4gcGxhY2UsIHRoZW4gdGhpcyBhY3RzIGFkZGl0aXZlbHkuAJBFbWl0cyBgQXBwcm92ZWRUcmFuc2ZlcmAgb24gc3VjY2Vzcy4AOFdlaWdodDogYE8oMSlgPGNhbmNlbF9hcHByb3ZhbAgBCGlkHQIBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAASBkZWxlZ2F0ZQABUEFjY291bnRJZExvb2t1cE9mPFQ+ABc0SQFDYW5jZWwgYWxsIG9mIHNvbWUgYXNzZXQgYXBwcm92ZWQgZm9yIGRlbGVnYXRlZCB0cmFuc2ZlciBieSBhIHRoaXJkLXBhcnR5IGFjY291bnQuAD0BT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGVyZSBtdXN0IGJlIGFuIGFwcHJvdmFsIGluIHBsYWNlIGJldHdlZW4gc2lnbmVyIGFuZCxgZGVsZWdhdGVgLgBJAVVucmVzZXJ2ZXMgYW55IGRlcG9zaXQgcHJldmlvdXNseSByZXNlcnZlZCBieSBgYXBwcm92ZV90cmFuc2ZlcmAgZm9yIHRoZSBhcHByb3ZhbC4AkC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0LgUBLSBgZGVsZWdhdGVgOiBUaGUgYWNjb3VudCBkZWxlZ2F0ZWQgcGVybWlzc2lvbiB0byB0cmFuc2ZlciBhc3NldC4AlEVtaXRzIGBBcHByb3ZhbENhbmNlbGxlZGAgb24gc3VjY2Vzcy4AOFdlaWdodDogYE8oMSlgVGZvcmNlX2NhbmNlbF9hcHByb3ZhbAwBCGlkHQIBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARRvd25lcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEgZGVsZWdhdGUAAVBBY2NvdW50SWRMb29rdXBPZjxUPgAYNEkBQ2FuY2VsIGFsbCBvZiBzb21lIGFzc2V0IGFwcHJvdmVkIGZvciBkZWxlZ2F0ZWQgdHJhbnNmZXIgYnkgYSB0aGlyZC1wYXJ0eSBhY2NvdW50LgBJAU9yaWdpbiBtdXN0IGJlIGVpdGhlciBGb3JjZU9yaWdpbiBvciBTaWduZWQgb3JpZ2luIHdpdGggdGhlIHNpZ25lciBiZWluZyB0aGUgQWRtaW5oYWNjb3VudCBvZiB0aGUgYXNzZXQgYGlkYC4ASQFVbnJlc2VydmVzIGFueSBkZXBvc2l0IHByZXZpb3VzbHkgcmVzZXJ2ZWQgYnkgYGFwcHJvdmVfdHJhbnNmZXJgIGZvciB0aGUgYXBwcm92YWwuAJAtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldC4FAS0gYGRlbGVnYXRlYDogVGhlIGFjY291bnQgZGVsZWdhdGVkIHBlcm1pc3Npb24gdG8gdHJhbnNmZXIgYXNzZXQuAJRFbWl0cyBgQXBwcm92YWxDYW5jZWxsZWRgIG9uIHN1Y2Nlc3MuADhXZWlnaHQ6IGBPKDEpYER0cmFuc2Zlcl9hcHByb3ZlZBABCGlkHQIBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARRvd25lcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEsZGVzdGluYXRpb24AAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGFtb3VudFUBAShUOjpCYWxhbmNlABlITQFUcmFuc2ZlciBzb21lIGFzc2V0IGJhbGFuY2UgZnJvbSBhIHByZXZpb3VzbHkgZGVsZWdhdGVkIGFjY291bnQgdG8gc29tZSB0aGlyZC1wYXJ0eSBhY2NvdW50LgBJAU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlcmUgbXVzdCBiZSBhbiBhcHByb3ZhbCBpbiBwbGFjZSBieSB0aGUgYG93bmVyYCB0byB0aGUcc2lnbmVyLgBZAUlmIHRoZSBlbnRpcmUgYW1vdW50IGFwcHJvdmVkIGZvciB0cmFuc2ZlciBpcyB0cmFuc2ZlcnJlZCwgdGhlbiBhbnkgZGVwb3NpdCBwcmV2aW91c2x5tHJlc2VydmVkIGJ5IGBhcHByb3ZlX3RyYW5zZmVyYCBpcyB1bnJlc2VydmVkLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQuYQEtIGBvd25lcmA6IFRoZSBhY2NvdW50IHdoaWNoIHByZXZpb3VzbHkgYXBwcm92ZWQgZm9yIGEgdHJhbnNmZXIgb2YgYXQgbGVhc3QgYGFtb3VudGAgYW5kvGZyb20gd2hpY2ggdGhlIGFzc2V0IGJhbGFuY2Ugd2lsbCBiZSB3aXRoZHJhd24uYQEtIGBkZXN0aW5hdGlvbmA6IFRoZSBhY2NvdW50IHRvIHdoaWNoIHRoZSBhc3NldCBiYWxhbmNlIG9mIGBhbW91bnRgIHdpbGwgYmUgdHJhbnNmZXJyZWQutC0gYGFtb3VudGA6IFRoZSBhbW91bnQgb2YgYXNzZXRzIHRvIHRyYW5zZmVyLgCcRW1pdHMgYFRyYW5zZmVycmVkQXBwcm92ZWRgIG9uIHN1Y2Nlc3MuADhXZWlnaHQ6IGBPKDEpYBR0b3VjaAQBCGlkHQIBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAGiTAQ3JlYXRlIGFuIGFzc2V0IGFjY291bnQgZm9yIG5vbi1wcm92aWRlciBhc3NldHMuAMBBIGRlcG9zaXQgd2lsbCBiZSB0YWtlbiBmcm9tIHRoZSBzaWduZXIgYWNjb3VudC4AXQEtIGBvcmlnaW5gOiBNdXN0IGJlIFNpZ25lZDsgdGhlIHNpZ25lciBhY2NvdW50IG11c3QgaGF2ZSBzdWZmaWNpZW50IGZ1bmRzIGZvciBhIGRlcG9zaXQ4ICB0byBiZSB0YWtlbi4JAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IGZvciB0aGUgYWNjb3VudCB0byBiZSBjcmVhdGVkLgCYRW1pdHMgYFRvdWNoZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4YcmVmdW5kCAEIaWQdAgFMVDo6QXNzZXRJZFBhcmFtZXRlcgABKGFsbG93X2J1cm5dAQEQYm9vbAAbNFkBUmV0dXJuIHRoZSBkZXBvc2l0IChpZiBhbnkpIG9mIGFuIGFzc2V0IGFjY291bnQgb3IgYSBjb25zdW1lciByZWZlcmVuY2UgKGlmIGFueSkgb2YgYW4gYWNjb3VudC4AaFRoZSBvcmlnaW4gbXVzdCBiZSBTaWduZWQuAD0BLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgZm9yIHdoaWNoIHRoZSBjYWxsZXIgd291bGQgbGlrZSB0aGUgZGVwb3NpdCwgIHJlZnVuZGVkLl0BLSBgYWxsb3dfYnVybmA6IElmIGB0cnVlYCB0aGVuIGFzc2V0cyBtYXkgYmUgZGVzdHJveWVkIGluIG9yZGVyIHRvIGNvbXBsZXRlIHRoZSByZWZ1bmQuAEkBSXQgd2lsbCBmYWlsIHdpdGggZWl0aGVyIFtgRXJyb3I6OkNvbnRhaW5zSG9sZHNgXSBvciBbYEVycm9yOjpDb250YWluc0ZyZWV6ZXNgXSBpZtR0aGUgYXNzZXQgYWNjb3VudCBjb250YWlucyBob2xkcyBvciBmcmVlemVzIGluIHBsYWNlLgCcRW1pdHMgYFJlZnVuZGVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuPHNldF9taW5fYmFsYW5jZQgBCGlkHQIBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAASxtaW5fYmFsYW5jZVkBAShUOjpCYWxhbmNlABwwlFNldHMgdGhlIG1pbmltdW0gYmFsYW5jZSBvZiBhbiBhc3NldC4AIQFPbmx5IHdvcmtzIGlmIHRoZXJlIGFyZW4ndCBhbnkgYWNjb3VudHMgdGhhdCBhcmUgaG9sZGluZyB0aGUgYXNzZXQgb3IgaWbgdGhlIG5ldyB2YWx1ZSBvZiBgbWluX2JhbGFuY2VgIGlzIGxlc3MgdGhhbiB0aGUgb2xkIG9uZS4A/E9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBoYXMgdG8gYmUgdGhlIE93bmVyIG9mIHRoZSxhc3NldCBgaWRgLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQuwC0gYG1pbl9iYWxhbmNlYDogVGhlIG5ldyB2YWx1ZSBvZiBgbWluX2JhbGFuY2VgLgDURW1pdHMgYEFzc2V0TWluQmFsYW5jZUNoYW5nZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4sdG91Y2hfb3RoZXIIAQhpZB0CAUxUOjpBc3NldElkUGFyYW1ldGVyAAEMd2hvAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AHSyIQ3JlYXRlIGFuIGFzc2V0IGFjY291bnQgZm9yIGB3aG9gLgDAQSBkZXBvc2l0IHdpbGwgYmUgdGFrZW4gZnJvbSB0aGUgc2lnbmVyIGFjY291bnQuAF0BLSBgb3JpZ2luYDogTXVzdCBiZSBTaWduZWQ7IHRoZSBzaWduZXIgYWNjb3VudCBtdXN0IGhhdmUgc3VmZmljaWVudCBmdW5kcyBmb3IgYSBkZXBvc2l0OCAgdG8gYmUgdGFrZW4uYQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCBmb3IgdGhlIGFjY291bnQgdG8gYmUgY3JlYXRlZCwgdGhlIGFzc2V0IHN0YXR1cyBtdXN0KCAgYmUgbGl2ZS6MLSBgd2hvYDogVGhlIGFjY291bnQgdG8gYmUgY3JlYXRlZC4AmEVtaXRzIGBUb3VjaGVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuMHJlZnVuZF9vdGhlcggBCGlkHQIBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAAQx3aG8AAVBBY2NvdW50SWRMb29rdXBPZjxUPgAeNF0BUmV0dXJuIHRoZSBkZXBvc2l0IChpZiBhbnkpIG9mIGEgdGFyZ2V0IGFzc2V0IGFjY291bnQuIFVzZWZ1bCBpZiB5b3UgYXJlIHRoZSBkZXBvc2l0b3IuAF0BVGhlIG9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgZWl0aGVyIHRoZSBhY2NvdW50IG93bmVyLCBkZXBvc2l0b3IsIG9yIGFzc2V0IGBBZG1pbmAuIEluYQFvcmRlciB0byBidXJuIGEgbm9uLXplcm8gYmFsYW5jZSBvZiB0aGUgYXNzZXQsIHRoZSBjYWxsZXIgbXVzdCBiZSB0aGUgYWNjb3VudCBhbmQgc2hvdWxkNHVzZSBgcmVmdW5kYC4AGQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCBmb3IgdGhlIGFjY291bnQgaG9sZGluZyBhIGRlcG9zaXQufC0gYHdob2A6IFRoZSBhY2NvdW50IHRvIHJlZnVuZC4ASQFJdCB3aWxsIGZhaWwgd2l0aCBlaXRoZXIgW2BFcnJvcjo6Q29udGFpbnNIb2xkc2BdIG9yIFtgRXJyb3I6OkNvbnRhaW5zRnJlZXplc2BdIGlm1HRoZSBhc3NldCBhY2NvdW50IGNvbnRhaW5zIGhvbGRzIG9yIGZyZWV6ZXMgaW4gcGxhY2UuAJxFbWl0cyBgUmVmdW5kZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4UYmxvY2sIAQhpZB0CAUxUOjpBc3NldElkUGFyYW1ldGVyAAEMd2hvAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AHyhZAURpc2FsbG93IGZ1cnRoZXIgdW5wcml2aWxlZ2VkIHRyYW5zZmVycyBvZiBhbiBhc3NldCBgaWRgIHRvIGFuZCBmcm9tIGFuIGFjY291bnQgYHdob2AuADUBT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgRnJlZXplciBvZiB0aGUgYXNzZXQgYGlkYC4AuC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFjY291bnQncyBhc3NldC6ULSBgd2hvYDogVGhlIGFjY291bnQgdG8gYmUgdW5ibG9ja2VkLgBARW1pdHMgYEJsb2NrZWRgLgA4V2VpZ2h0OiBgTygxKWAwdHJhbnNmZXJfYWxsDAEIaWQdAgFMVDo6QXNzZXRJZFBhcmFtZXRlcgABEGRlc3QAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABKGtlZXBfYWxpdmVdAQEQYm9vbAAgQB0BVHJhbnNmZXIgdGhlIGVudGlyZSB0cmFuc2ZlcmFibGUgYmFsYW5jZSBmcm9tIHRoZSBjYWxsZXIgYXNzZXQgYWNjb3VudC4AWQFOT1RFOiBUaGlzIGZ1bmN0aW9uIG9ubHkgYXR0ZW1wdHMgdG8gdHJhbnNmZXIgX3RyYW5zZmVyYWJsZV8gYmFsYW5jZXMuIFRoaXMgbWVhbnMgdGhhdD0BYW55IGhlbGQsIGZyb3plbiwgb3IgbWluaW11bSBiYWxhbmNlICh3aGVuIGBrZWVwX2FsaXZlYCBpcyBgdHJ1ZWApLCB3aWxsIG5vdCBiZV0BdHJhbnNmZXJyZWQgYnkgdGhpcyBmdW5jdGlvbi4gVG8gZW5zdXJlIHRoYXQgdGhpcyBmdW5jdGlvbiByZXN1bHRzIGluIGEga2lsbGVkIGFjY291bnQsRQF5b3UgbWlnaHQgbmVlZCB0byBwcmVwYXJlIHRoZSBhY2NvdW50IGJ5IHJlbW92aW5nIGFueSByZWZlcmVuY2UgY291bnRlcnMsIHN0b3JhZ2VAZGVwb3NpdHMsIGV0Yy4uLgDAVGhlIGRpc3BhdGNoIG9yaWdpbiBvZiB0aGlzIGNhbGwgbXVzdCBiZSBTaWduZWQuABkBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgZm9yIHRoZSBhY2NvdW50IGhvbGRpbmcgYSBkZXBvc2l0LqAtIGBkZXN0YDogVGhlIHJlY2lwaWVudCBvZiB0aGUgdHJhbnNmZXIuWQEtIGBrZWVwX2FsaXZlYDogQSBib29sZWFuIHRvIGRldGVybWluZSBpZiB0aGUgYHRyYW5zZmVyX2FsbGAgb3BlcmF0aW9uIHNob3VsZCBzZW5kIGFsbE0BICBvZiB0aGUgZnVuZHMgdGhlIGFzc2V0IGFjY291bnQgaGFzLCBjYXVzaW5nIHRoZSBzZW5kZXIgYXNzZXQgYWNjb3VudCB0byBiZSBraWxsZWRFASAgKGZhbHNlKSwgb3IgdHJhbnNmZXIgZXZlcnl0aGluZyBleGNlcHQgYXQgbGVhc3QgdGhlIG1pbmltdW0gYmFsYW5jZSwgd2hpY2ggd2lsbOggIGd1YXJhbnRlZSB0byBrZWVwIHRoZSBzZW5kZXIgYXNzZXQgYWNjb3VudCBhbGl2ZSAodHJ1ZSkuMHNldF9yZXNlcnZlcwgBCGlkHQIBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAASByZXNlcnZlc80EAchCb3VuZGVkVmVjPFQ6OlJlc2VydmVEYXRhLCBDb25zdFUzMjxNQVhfUkVTRVJWRVM+PgAhJMRTZXRzIHRoZSB0cnVzdGVkIHJlc2VydmUgaW5mb3JtYXRpb24gb2YgYW4gYXNzZXQuAFUBT3JpZ2luIG11c3QgYmUgdGhlIE93bmVyIG9mIHRoZSBhc3NldCBgaWRgLiBUaGUgb3JpZ2luIG11c3QgY29uZm9ybSB0byB0aGUgY29uZmlndXJlZCUBYENyZWF0ZU9yaWdpbmAgb3IgYmUgdGhlIHNpZ25lZCBgb3duZXJgIGNvbmZpZ3VyZWQgZHVyaW5nIGFzc2V0IGNyZWF0aW9uLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQu8C0gYHJlc2VydmVzYDogVGhlIGZ1bGwgbGlzdCBvZiB0cnVzdGVkIHJlc2VydmVzIGluZm9ybWF0aW9uLgDURW1pdHMgYEFzc2V0TWluQmFsYW5jZUNoYW5nZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuzQQMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAHRBARTAAAEANUEARhWZWM8VD4AANEEDDRhc3NldHNfY29tbW9uYGxvY2FsX2FuZF9mb3JlaWduX2Fzc2V0c1xGb3JlaWduQXNzZXRSZXNlcnZlRGF0YQAACAEccmVzZXJ2ZR0CASBMb2NhdGlvbgABMHRlbGVwb3J0YWJsZV0BARBib29sAADVBAAAAtEEANkEDDRwYWxsZXRfYXNzZXRzGHBhbGxldBBDYWxsCARUAARJAAGIGGNyZWF0ZQwBCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABFGFkbWluAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AASxtaW5fYmFsYW5jZVkBAShUOjpCYWxhbmNlAABM6Elzc3VlIGEgbmV3IGNsYXNzIG9mIGZ1bmdpYmxlIGFzc2V0cyBmcm9tIGEgcHVibGljIG9yaWdpbi4AJQFUaGlzIG5ldyBhc3NldCBjbGFzcyBoYXMgbm8gYXNzZXRzIGluaXRpYWxseSBhbmQgaXRzIG93bmVyIGlzIHRoZSBvcmlnaW4uAGEBVGhlIG9yaWdpbiBtdXN0IGNvbmZvcm0gdG8gdGhlIGNvbmZpZ3VyZWQgYENyZWF0ZU9yaWdpbmAgYW5kIGhhdmUgc3VmZmljaWVudCBmdW5kcyBmcmVlLgC8RnVuZHMgb2Ygc2VuZGVyIGFyZSByZXNlcnZlZCBieSBgQXNzZXREZXBvc2l0YC4ALFBhcmFtZXRlcnM6WQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBuZXcgYXNzZXQuIFRoaXMgbXVzdCBub3QgYmUgY3VycmVudGx5IGluIHVzZSB0byBpZGVudGlmeTEBYW4gZXhpc3RpbmcgYXNzZXQuIElmIFtgTmV4dEFzc2V0SWRgXSBpcyBzZXQsIHRoZW4gdGhpcyBtdXN0IGJlIGVxdWFsIHRvIGl0LlkBLSBgYWRtaW5gOiBUaGUgYWRtaW4gb2YgdGhpcyBjbGFzcyBvZiBhc3NldHMuIFRoZSBhZG1pbiBpcyB0aGUgaW5pdGlhbCBhZGRyZXNzIG9mIGVhY2icbWVtYmVyIG9mIHRoZSBhc3NldCBjbGFzcydzIGFkbWluIHRlYW0uTQEtIGBtaW5fYmFsYW5jZWA6IFRoZSBtaW5pbXVtIGJhbGFuY2Ugb2YgdGhpcyBuZXcgYXNzZXQgdGhhdCBhbnkgc2luZ2xlIGFjY291bnQgbXVzdD0BaGF2ZS4gSWYgYW4gYWNjb3VudCdzIGJhbGFuY2UgaXMgcmVkdWNlZCBiZWxvdyB0aGlzLCB0aGVuIGl0IGNvbGxhcHNlcyB0byB6ZXJvLgCYRW1pdHMgYENyZWF0ZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4AOFdlaWdodDogYE8oMSlgMGZvcmNlX2NyZWF0ZRABCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABFG93bmVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AATRpc19zdWZmaWNpZW50XQEBEGJvb2wAASxtaW5fYmFsYW5jZVUBAShUOjpCYWxhbmNlAAFM+Elzc3VlIGEgbmV3IGNsYXNzIG9mIGZ1bmdpYmxlIGFzc2V0cyBmcm9tIGEgcHJpdmlsZWdlZCBvcmlnaW4uALRUaGlzIG5ldyBhc3NldCBjbGFzcyBoYXMgbm8gYXNzZXRzIGluaXRpYWxseS4ApFRoZSBvcmlnaW4gbXVzdCBjb25mb3JtIHRvIGBGb3JjZU9yaWdpbmAuAJxVbmxpa2UgYGNyZWF0ZWAsIG5vIGZ1bmRzIGFyZSByZXNlcnZlZC4AWQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBuZXcgYXNzZXQuIFRoaXMgbXVzdCBub3QgYmUgY3VycmVudGx5IGluIHVzZSB0byBpZGVudGlmeTEBYW4gZXhpc3RpbmcgYXNzZXQuIElmIFtgTmV4dEFzc2V0SWRgXSBpcyBzZXQsIHRoZW4gdGhpcyBtdXN0IGJlIGVxdWFsIHRvIGl0LlkBLSBgb3duZXJgOiBUaGUgb3duZXIgb2YgdGhpcyBjbGFzcyBvZiBhc3NldHMuIFRoZSBvd25lciBoYXMgZnVsbCBzdXBlcnVzZXIgcGVybWlzc2lvbnMlAW92ZXIgdGhpcyBhc3NldCwgYnV0IG1heSBsYXRlciBjaGFuZ2UgYW5kIGNvbmZpZ3VyZSB0aGUgcGVybWlzc2lvbnMgdXNpbmeQYHRyYW5zZmVyX293bmVyc2hpcGAgYW5kIGBzZXRfdGVhbWAuTQEtIGBtaW5fYmFsYW5jZWA6IFRoZSBtaW5pbXVtIGJhbGFuY2Ugb2YgdGhpcyBuZXcgYXNzZXQgdGhhdCBhbnkgc2luZ2xlIGFjY291bnQgbXVzdD0BaGF2ZS4gSWYgYW4gYWNjb3VudCdzIGJhbGFuY2UgaXMgcmVkdWNlZCBiZWxvdyB0aGlzLCB0aGVuIGl0IGNvbGxhcHNlcyB0byB6ZXJvLgCsRW1pdHMgYEZvcmNlQ3JlYXRlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLgA4V2VpZ2h0OiBgTygxKWA0c3RhcnRfZGVzdHJveQQBCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgACMNxTdGFydCB0aGUgcHJvY2VzcyBvZiBkZXN0cm95aW5nIGEgZnVuZ2libGUgYXNzZXQgY2xhc3MuAFkBYHN0YXJ0X2Rlc3Ryb3lgIGlzIHRoZSBmaXJzdCBpbiBhIHNlcmllcyBvZiBleHRyaW5zaWNzIHRoYXQgc2hvdWxkIGJlIGNhbGxlZCwgdG8gYWxsb3d4ZGVzdHJ1Y3Rpb24gb2YgYW4gYXNzZXQgY2xhc3MuAFEBVGhlIG9yaWdpbiBtdXN0IGNvbmZvcm0gdG8gYEZvcmNlT3JpZ2luYCBvciBtdXN0IGJlIGBTaWduZWRgIGJ5IHRoZSBhc3NldCdzIGBvd25lcmAuAE0BLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgZGVzdHJveWVkLiBUaGlzIG11c3QgaWRlbnRpZnkgYW4gZXhpc3RpbmcgICBhc3NldC4ASQFJdCB3aWxsIGZhaWwgd2l0aCBlaXRoZXIgW2BFcnJvcjo6Q29udGFpbnNIb2xkc2BdIG9yIFtgRXJyb3I6OkNvbnRhaW5zRnJlZXplc2BdIGlmuGFuIGFjY291bnQgY29udGFpbnMgaG9sZHMgb3IgZnJlZXplcyBpbiBwbGFjZS5AZGVzdHJveV9hY2NvdW50cwQBCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgADMMxEZXN0cm95IGFsbCBhY2NvdW50cyBhc3NvY2lhdGVkIHdpdGggYSBnaXZlbiBhc3NldC4AXQFgZGVzdHJveV9hY2NvdW50c2Agc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGFmdGVyIGBzdGFydF9kZXN0cm95YCBoYXMgYmVlbiBjYWxsZWQsIGFuZCB0aGWEYXNzZXQgaXMgaW4gYSBgRGVzdHJveWluZ2Agc3RhdGUuAF0BRHVlIHRvIHdlaWdodCByZXN0cmljdGlvbnMsIHRoaXMgZnVuY3Rpb24gbWF5IG5lZWQgdG8gYmUgY2FsbGVkIG11bHRpcGxlIHRpbWVzIHRvIGZ1bGx5MQFkZXN0cm95IGFsbCBhY2NvdW50cy4gSXQgd2lsbCBkZXN0cm95IGBSZW1vdmVJdGVtc0xpbWl0YCBhY2NvdW50cyBhdCBhIHRpbWUuAE0BLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgZGVzdHJveWVkLiBUaGlzIG11c3QgaWRlbnRpZnkgYW4gZXhpc3RpbmcgICBhc3NldC4A1EVhY2ggY2FsbCBlbWl0cyB0aGUgYEV2ZW50OjpEZXN0cm95ZWRBY2NvdW50c2AgZXZlbnQuRGRlc3Ryb3lfYXBwcm92YWxzBAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAQwYQFEZXN0cm95IGFsbCBhcHByb3ZhbHMgYXNzb2NpYXRlZCB3aXRoIGEgZ2l2ZW4gYXNzZXQgdXAgdG8gdGhlIG1heCAoVDo6UmVtb3ZlSXRlbXNMaW1pdCkuAGEBYGRlc3Ryb3lfYXBwcm92YWxzYCBzaG91bGQgb25seSBiZSBjYWxsZWQgYWZ0ZXIgYHN0YXJ0X2Rlc3Ryb3lgIGhhcyBiZWVuIGNhbGxlZCwgYW5kIHRoZYRhc3NldCBpcyBpbiBhIGBEZXN0cm95aW5nYCBzdGF0ZS4AXQFEdWUgdG8gd2VpZ2h0IHJlc3RyaWN0aW9ucywgdGhpcyBmdW5jdGlvbiBtYXkgbmVlZCB0byBiZSBjYWxsZWQgbXVsdGlwbGUgdGltZXMgdG8gZnVsbHk5AWRlc3Ryb3kgYWxsIGFwcHJvdmFscy4gSXQgd2lsbCBkZXN0cm95IGBSZW1vdmVJdGVtc0xpbWl0YCBhcHByb3ZhbHMgYXQgYSB0aW1lLgBNAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIGRlc3Ryb3llZC4gVGhpcyBtdXN0IGlkZW50aWZ5IGFuIGV4aXN0aW5nICAgYXNzZXQuANhFYWNoIGNhbGwgZW1pdHMgdGhlIGBFdmVudDo6RGVzdHJveWVkQXBwcm92YWxzYCBldmVudC44ZmluaXNoX2Rlc3Ryb3kEAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIABSjEQ29tcGxldGUgZGVzdHJveWluZyBhc3NldCBhbmQgdW5yZXNlcnZlIGN1cnJlbmN5LgBVAWBmaW5pc2hfZGVzdHJveWAgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGFmdGVyIGBzdGFydF9kZXN0cm95YCBoYXMgYmVlbiBjYWxsZWQsIGFuZCB0aGVZAWFzc2V0IGlzIGluIGEgYERlc3Ryb3lpbmdgIHN0YXRlLiBBbGwgYWNjb3VudHMgb3IgYXBwcm92YWxzIHNob3VsZCBiZSBkZXN0cm95ZWQgYmVmb3JlFGhhbmQuAE0BLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgZGVzdHJveWVkLiBUaGlzIG11c3QgaWRlbnRpZnkgYW4gZXhpc3RpbmcgICBhc3NldC4A4EVhY2ggc3VjY2Vzc2Z1bCBjYWxsIGVtaXRzIHRoZSBgRXZlbnQ6OkRlc3Ryb3llZGAgZXZlbnQuEG1pbnQMAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAASxiZW5lZmljaWFyeQABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYYW1vdW50VQEBKFQ6OkJhbGFuY2UABjCITWludCBhc3NldHMgb2YgYSBwYXJ0aWN1bGFyIGNsYXNzLgA5AVRoZSBvcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgbXVzdCBiZSB0aGUgSXNzdWVyIG9mIHRoZSBhc3NldCBgaWRgLgD8LSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gaGF2ZSBzb21lIGFtb3VudCBtaW50ZWQuDQEtIGBiZW5lZmljaWFyeWA6IFRoZSBhY2NvdW50IHRvIGJlIGNyZWRpdGVkIHdpdGggdGhlIG1pbnRlZCBhc3NldHMuxC0gYGFtb3VudGA6IFRoZSBhbW91bnQgb2YgdGhlIGFzc2V0IHRvIGJlIG1pbnRlZC4AlEVtaXRzIGBJc3N1ZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4AOFdlaWdodDogYE8oMSlgVQFNb2RlczogUHJlLWV4aXN0aW5nIGJhbGFuY2Ugb2YgYGJlbmVmaWNpYXJ5YDsgQWNjb3VudCBwcmUtZXhpc3RlbmNlIG9mIGBiZW5lZmljaWFyeWAuEGJ1cm4MAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAAQx3aG8AAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGFtb3VudFUBAShUOjpCYWxhbmNlAAc8RQFSZWR1Y2UgdGhlIGJhbGFuY2Ugb2YgYHdob2AgYnkgYXMgbXVjaCBhcyBwb3NzaWJsZSB1cCB0byBgYW1vdW50YCBhc3NldHMgb2YgYGlkYC4ANQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBNYW5hZ2VyIG9mIHRoZSBhc3NldCBgaWRgLgDQQmFpbHMgd2l0aCBgTm9BY2NvdW50YCBpZiB0aGUgYHdob2AgaXMgYWxyZWFkeSBkZWFkLgD8LSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gaGF2ZSBzb21lIGFtb3VudCBidXJuZWQuoC0gYHdob2A6IFRoZSBhY2NvdW50IHRvIGJlIGRlYml0ZWQgZnJvbS4pAS0gYGFtb3VudGA6IFRoZSBtYXhpbXVtIGFtb3VudCBieSB3aGljaCBgd2hvYCdzIGJhbGFuY2Ugc2hvdWxkIGJlIHJlZHVjZWQuAFEBRW1pdHMgYEJ1cm5lZGAgd2l0aCB0aGUgYWN0dWFsIGFtb3VudCBidXJuZWQuIElmIHRoaXMgdGFrZXMgdGhlIGJhbGFuY2UgdG8gYmVsb3cgdGhlOQFtaW5pbXVtIGZvciB0aGUgYXNzZXQsIHRoZW4gdGhlIGFtb3VudCBidXJuZWQgaXMgaW5jcmVhc2VkIHRvIHRha2UgaXQgdG8gemVyby4AOFdlaWdodDogYE8oMSlgCQFNb2RlczogUG9zdC1leGlzdGVuY2Ugb2YgYHdob2A7IFByZSAmIHBvc3QgWm9tYmllLXN0YXR1cyBvZiBgd2hvYC4gdHJhbnNmZXIMAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARh0YXJnZXQAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGFtb3VudFUBAShUOjpCYWxhbmNlAAhI0E1vdmUgc29tZSBhc3NldHMgZnJvbSB0aGUgc2VuZGVyIGFjY291bnQgdG8gYW5vdGhlci4AWE9yaWdpbiBtdXN0IGJlIFNpZ25lZC4AEQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBoYXZlIHNvbWUgYW1vdW50IHRyYW5zZmVycmVkLpwtIGB0YXJnZXRgOiBUaGUgYWNjb3VudCB0byBiZSBjcmVkaXRlZC5RAS0gYGFtb3VudGA6IFRoZSBhbW91bnQgYnkgd2hpY2ggdGhlIHNlbmRlcidzIGJhbGFuY2Ugb2YgYXNzZXRzIHNob3VsZCBiZSByZWR1Y2VkIGFuZGEBYHRhcmdldGAncyBiYWxhbmNlIGluY3JlYXNlZC4gVGhlIGFtb3VudCBhY3R1YWxseSB0cmFuc2ZlcnJlZCBtYXkgYmUgc2xpZ2h0bHkgZ3JlYXRlciBpbl0BdGhlIGNhc2UgdGhhdCB0aGUgdHJhbnNmZXIgd291bGQgb3RoZXJ3aXNlIHRha2UgdGhlIHNlbmRlciBiYWxhbmNlIGFib3ZlIHplcm8gYnV0IGJlbG93vHRoZSBtaW5pbXVtIGJhbGFuY2UuIE11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8uAGEBRW1pdHMgYFRyYW5zZmVycmVkYCB3aXRoIHRoZSBhY3R1YWwgYW1vdW50IHRyYW5zZmVycmVkLiBJZiB0aGlzIHRha2VzIHRoZSBzb3VyY2UgYmFsYW5jZV0BdG8gYmVsb3cgdGhlIG1pbmltdW0gZm9yIHRoZSBhc3NldCwgdGhlbiB0aGUgYW1vdW50IHRyYW5zZmVycmVkIGlzIGluY3JlYXNlZCB0byB0YWtlIGl0IHRvIHplcm8uADhXZWlnaHQ6IGBPKDEpYFEBTW9kZXM6IFByZS1leGlzdGVuY2Ugb2YgYHRhcmdldGA7IFBvc3QtZXhpc3RlbmNlIG9mIHNlbmRlcjsgQWNjb3VudCBwcmUtZXhpc3RlbmNlIG9mJGB0YXJnZXRgLkx0cmFuc2Zlcl9rZWVwX2FsaXZlDAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAEYdGFyZ2V0AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARhhbW91bnRVAQEoVDo6QmFsYW5jZQAJSFkBTW92ZSBzb21lIGFzc2V0cyBmcm9tIHRoZSBzZW5kZXIgYWNjb3VudCB0byBhbm90aGVyLCBrZWVwaW5nIHRoZSBzZW5kZXIgYWNjb3VudCBhbGl2ZS4AWE9yaWdpbiBtdXN0IGJlIFNpZ25lZC4AEQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBoYXZlIHNvbWUgYW1vdW50IHRyYW5zZmVycmVkLpwtIGB0YXJnZXRgOiBUaGUgYWNjb3VudCB0byBiZSBjcmVkaXRlZC5RAS0gYGFtb3VudGA6IFRoZSBhbW91bnQgYnkgd2hpY2ggdGhlIHNlbmRlcidzIGJhbGFuY2Ugb2YgYXNzZXRzIHNob3VsZCBiZSByZWR1Y2VkIGFuZGEBYHRhcmdldGAncyBiYWxhbmNlIGluY3JlYXNlZC4gVGhlIGFtb3VudCBhY3R1YWxseSB0cmFuc2ZlcnJlZCBtYXkgYmUgc2xpZ2h0bHkgZ3JlYXRlciBpbl0BdGhlIGNhc2UgdGhhdCB0aGUgdHJhbnNmZXIgd291bGQgb3RoZXJ3aXNlIHRha2UgdGhlIHNlbmRlciBiYWxhbmNlIGFib3ZlIHplcm8gYnV0IGJlbG93vHRoZSBtaW5pbXVtIGJhbGFuY2UuIE11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8uAGEBRW1pdHMgYFRyYW5zZmVycmVkYCB3aXRoIHRoZSBhY3R1YWwgYW1vdW50IHRyYW5zZmVycmVkLiBJZiB0aGlzIHRha2VzIHRoZSBzb3VyY2UgYmFsYW5jZV0BdG8gYmVsb3cgdGhlIG1pbmltdW0gZm9yIHRoZSBhc3NldCwgdGhlbiB0aGUgYW1vdW50IHRyYW5zZmVycmVkIGlzIGluY3JlYXNlZCB0byB0YWtlIGl0IHRvIHplcm8uADhXZWlnaHQ6IGBPKDEpYFEBTW9kZXM6IFByZS1leGlzdGVuY2Ugb2YgYHRhcmdldGA7IFBvc3QtZXhpc3RlbmNlIG9mIHNlbmRlcjsgQWNjb3VudCBwcmUtZXhpc3RlbmNlIG9mJGB0YXJnZXRgLjhmb3JjZV90cmFuc2ZlchABCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABGHNvdXJjZQABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEQZGVzdAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYYW1vdW50VQEBKFQ6OkJhbGFuY2UACky0TW92ZSBzb21lIGFzc2V0cyBmcm9tIG9uZSBhY2NvdW50IHRvIGFub3RoZXIuAC0BT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgQWRtaW4gb2YgdGhlIGFzc2V0IGBpZGAuABEBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gaGF2ZSBzb21lIGFtb3VudCB0cmFuc2ZlcnJlZC6YLSBgc291cmNlYDogVGhlIGFjY291bnQgdG8gYmUgZGViaXRlZC6ULSBgZGVzdGA6IFRoZSBhY2NvdW50IHRvIGJlIGNyZWRpdGVkLlkBLSBgYW1vdW50YDogVGhlIGFtb3VudCBieSB3aGljaCB0aGUgYHNvdXJjZWAncyBiYWxhbmNlIG9mIGFzc2V0cyBzaG91bGQgYmUgcmVkdWNlZCBhbmRZAWBkZXN0YCdzIGJhbGFuY2UgaW5jcmVhc2VkLiBUaGUgYW1vdW50IGFjdHVhbGx5IHRyYW5zZmVycmVkIG1heSBiZSBzbGlnaHRseSBncmVhdGVyIGluTQF0aGUgY2FzZSB0aGF0IHRoZSB0cmFuc2ZlciB3b3VsZCBvdGhlcndpc2UgdGFrZSB0aGUgYHNvdXJjZWAgYmFsYW5jZSBhYm92ZSB6ZXJvIGJ1dNRiZWxvdyB0aGUgbWluaW11bSBiYWxhbmNlLiBNdXN0IGJlIGdyZWF0ZXIgdGhhbiB6ZXJvLgBhAUVtaXRzIGBUcmFuc2ZlcnJlZGAgd2l0aCB0aGUgYWN0dWFsIGFtb3VudCB0cmFuc2ZlcnJlZC4gSWYgdGhpcyB0YWtlcyB0aGUgc291cmNlIGJhbGFuY2VdAXRvIGJlbG93IHRoZSBtaW5pbXVtIGZvciB0aGUgYXNzZXQsIHRoZW4gdGhlIGFtb3VudCB0cmFuc2ZlcnJlZCBpcyBpbmNyZWFzZWQgdG8gdGFrZSBpdCB0byB6ZXJvLgA4V2VpZ2h0OiBgTygxKWBRAU1vZGVzOiBQcmUtZXhpc3RlbmNlIG9mIGBkZXN0YDsgUG9zdC1leGlzdGVuY2Ugb2YgYHNvdXJjZWA7IEFjY291bnQgcHJlLWV4aXN0ZW5jZSBvZhxgZGVzdGAuGGZyZWV6ZQgBCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABDHdobwABUEFjY291bnRJZExvb2t1cE9mPFQ+AAswVQFEaXNhbGxvdyBmdXJ0aGVyIHVucHJpdmlsZWdlZCB0cmFuc2ZlcnMgb2YgYW4gYXNzZXQgYGlkYCBmcm9tIGFuIGFjY291bnQgYHdob2AuIGB3aG9gTQFtdXN0IGFscmVhZHkgZXhpc3QgYXMgYW4gZW50cnkgaW4gYEFjY291bnRgcyBvZiB0aGUgYXNzZXQuIElmIHlvdSB3YW50IHRvIGZyZWV6ZSBhbvRhY2NvdW50IHRoYXQgZG9lcyBub3QgaGF2ZSBhbiBlbnRyeSwgdXNlIGB0b3VjaF9vdGhlcmAgZmlyc3QuADUBT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgRnJlZXplciBvZiB0aGUgYXNzZXQgYGlkYC4AxC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIGZyb3plbi6ILSBgd2hvYDogVGhlIGFjY291bnQgdG8gYmUgZnJvemVuLgA8RW1pdHMgYEZyb3plbmAuADhXZWlnaHQ6IGBPKDEpYBB0aGF3CAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAEMd2hvAAFQQWNjb3VudElkTG9va3VwT2Y8VD4ADCjoQWxsb3cgdW5wcml2aWxlZ2VkIHRyYW5zZmVycyB0byBhbmQgZnJvbSBhbiBhY2NvdW50IGFnYWluLgAtAU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEFkbWluIG9mIHRoZSBhc3NldCBgaWRgLgDELSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgZnJvemVuLpAtIGB3aG9gOiBUaGUgYWNjb3VudCB0byBiZSB1bmZyb3plbi4APEVtaXRzIGBUaGF3ZWRgLgA4V2VpZ2h0OiBgTygxKWAwZnJlZXplX2Fzc2V0BAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAA0k8ERpc2FsbG93IGZ1cnRoZXIgdW5wcml2aWxlZ2VkIHRyYW5zZmVycyBmb3IgdGhlIGFzc2V0IGNsYXNzLgA1AU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEZyZWV6ZXIgb2YgdGhlIGFzc2V0IGBpZGAuAMQtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBiZSBmcm96ZW4uADxFbWl0cyBgRnJvemVuYC4AOFdlaWdodDogYE8oMSlgKHRoYXdfYXNzZXQEAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIADiTEQWxsb3cgdW5wcml2aWxlZ2VkIHRyYW5zZmVycyBmb3IgdGhlIGFzc2V0IGFnYWluLgAtAU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEFkbWluIG9mIHRoZSBhc3NldCBgaWRgLgDELSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgdGhhd2VkLgA8RW1pdHMgYFRoYXdlZGAuADhXZWlnaHQ6IGBPKDEpYEh0cmFuc2Zlcl9vd25lcnNoaXAIAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARRvd25lcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AA8odENoYW5nZSB0aGUgT3duZXIgb2YgYW4gYXNzZXQuAC0BT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgT3duZXIgb2YgdGhlIGFzc2V0IGBpZGAuAJAtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldC6cLSBgb3duZXJgOiBUaGUgbmV3IE93bmVyIG9mIHRoaXMgYXNzZXQuAFRFbWl0cyBgT3duZXJDaGFuZ2VkYC4AOFdlaWdodDogYE8oMSlgIHNldF90ZWFtEAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAEYaXNzdWVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARRhZG1pbgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEcZnJlZXplcgABUEFjY291bnRJZExvb2t1cE9mPFQ+ABAwxENoYW5nZSB0aGUgSXNzdWVyLCBBZG1pbiBhbmQgRnJlZXplciBvZiBhbiBhc3NldC4ALQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBPd25lciBvZiB0aGUgYXNzZXQgYGlkYC4AxC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIGZyb3plbi6kLSBgaXNzdWVyYDogVGhlIG5ldyBJc3N1ZXIgb2YgdGhpcyBhc3NldC6cLSBgYWRtaW5gOiBUaGUgbmV3IEFkbWluIG9mIHRoaXMgYXNzZXQurC0gYGZyZWV6ZXJgOiBUaGUgbmV3IEZyZWV6ZXIgb2YgdGhpcyBhc3NldC4AUEVtaXRzIGBUZWFtQ2hhbmdlZGAuADhXZWlnaHQ6IGBPKDEpYDBzZXRfbWV0YWRhdGEQAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARBuYW1lGAEcVmVjPHU4PgABGHN5bWJvbBgBHFZlYzx1OD4AASBkZWNpbWFscwwBCHU4ABFAeFNldCB0aGUgbWV0YWRhdGEgZm9yIGFuIGFzc2V0LgAtAU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIE93bmVyIG9mIHRoZSBhc3NldCBgaWRgLgDYRnVuZHMgb2Ygc2VuZGVyIGFyZSByZXNlcnZlZCBhY2NvcmRpbmcgdG8gdGhlIGZvcm11bGE6UQFgTWV0YWRhdGFEZXBvc2l0QmFzZSArIE1ldGFkYXRhRGVwb3NpdFBlckJ5dGUgKiAobmFtZS5sZW4gKyBzeW1ib2wubGVuKWAgdGFraW5nIGludG+MYWNjb3VudCBhbnkgYWxyZWFkeSByZXNlcnZlZCBmdW5kcy4AuC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIHVwZGF0ZS5NAS0gYG5hbWVgOiBUaGUgdXNlciBmcmllbmRseSBuYW1lIG9mIHRoaXMgYXNzZXQuIExpbWl0ZWQgaW4gbGVuZ3RoIGJ5IGBTdHJpbmdMaW1pdGAuTQEtIGBzeW1ib2xgOiBUaGUgZXhjaGFuZ2Ugc3ltYm9sIGZvciB0aGlzIGFzc2V0LiBMaW1pdGVkIGluIGxlbmd0aCBieSBgU3RyaW5nTGltaXRgLi0BLSBgZGVjaW1hbHNgOiBUaGUgbnVtYmVyIG9mIGRlY2ltYWxzIHRoaXMgYXNzZXQgdXNlcyB0byByZXByZXNlbnQgb25lIHVuaXQuAFBFbWl0cyBgTWV0YWRhdGFTZXRgLgA4V2VpZ2h0OiBgTygxKWA4Y2xlYXJfbWV0YWRhdGEEAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAEiyAQ2xlYXIgdGhlIG1ldGFkYXRhIGZvciBhbiBhc3NldC4ALQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBPd25lciBvZiB0aGUgYXNzZXQgYGlkYC4ApEFueSBkZXBvc2l0IGlzIGZyZWVkIGZvciB0aGUgYXNzZXQgb3duZXIuALQtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBjbGVhci4AYEVtaXRzIGBNZXRhZGF0YUNsZWFyZWRgLgA4V2VpZ2h0OiBgTygxKWBIZm9yY2Vfc2V0X21ldGFkYXRhFAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAEQbmFtZRgBHFZlYzx1OD4AARhzeW1ib2wYARxWZWM8dTg+AAEgZGVjaW1hbHMMAQh1OAABJGlzX2Zyb3plbl0BARBib29sABM4uEZvcmNlIHRoZSBtZXRhZGF0YSBmb3IgYW4gYXNzZXQgdG8gc29tZSB2YWx1ZS4AbE9yaWdpbiBtdXN0IGJlIEZvcmNlT3JpZ2luLgBoQW55IGRlcG9zaXQgaXMgbGVmdCBhbG9uZS4AuC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIHVwZGF0ZS5NAS0gYG5hbWVgOiBUaGUgdXNlciBmcmllbmRseSBuYW1lIG9mIHRoaXMgYXNzZXQuIExpbWl0ZWQgaW4gbGVuZ3RoIGJ5IGBTdHJpbmdMaW1pdGAuTQEtIGBzeW1ib2xgOiBUaGUgZXhjaGFuZ2Ugc3ltYm9sIGZvciB0aGlzIGFzc2V0LiBMaW1pdGVkIGluIGxlbmd0aCBieSBgU3RyaW5nTGltaXRgLi0BLSBgZGVjaW1hbHNgOiBUaGUgbnVtYmVyIG9mIGRlY2ltYWxzIHRoaXMgYXNzZXQgdXNlcyB0byByZXByZXNlbnQgb25lIHVuaXQuAFBFbWl0cyBgTWV0YWRhdGFTZXRgLgBRAVdlaWdodDogYE8oTiArIFMpYCB3aGVyZSBOIGFuZCBTIGFyZSB0aGUgbGVuZ3RoIG9mIHRoZSBuYW1lIGFuZCBzeW1ib2wgcmVzcGVjdGl2ZWx5LlBmb3JjZV9jbGVhcl9tZXRhZGF0YQQBCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgAULIBDbGVhciB0aGUgbWV0YWRhdGEgZm9yIGFuIGFzc2V0LgBsT3JpZ2luIG11c3QgYmUgRm9yY2VPcmlnaW4uAGBBbnkgZGVwb3NpdCBpcyByZXR1cm5lZC4AtC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGNsZWFyLgBgRW1pdHMgYE1ldGFkYXRhQ2xlYXJlZGAuADhXZWlnaHQ6IGBPKDEpYEhmb3JjZV9hc3NldF9zdGF0dXMgAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARRvd25lcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYaXNzdWVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARRhZG1pbgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEcZnJlZXplcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEsbWluX2JhbGFuY2VVAQEoVDo6QmFsYW5jZQABNGlzX3N1ZmZpY2llbnRdAQEQYm9vbAABJGlzX2Zyb3plbl0BARBib29sABVYmEFsdGVyIHRoZSBhdHRyaWJ1dGVzIG9mIGEgZ2l2ZW4gYXNzZXQuAHRPcmlnaW4gbXVzdCBiZSBgRm9yY2VPcmlnaW5gLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQunC0gYG93bmVyYDogVGhlIG5ldyBPd25lciBvZiB0aGlzIGFzc2V0LqQtIGBpc3N1ZXJgOiBUaGUgbmV3IElzc3VlciBvZiB0aGlzIGFzc2V0LpwtIGBhZG1pbmA6IFRoZSBuZXcgQWRtaW4gb2YgdGhpcyBhc3NldC6sLSBgZnJlZXplcmA6IFRoZSBuZXcgRnJlZXplciBvZiB0aGlzIGFzc2V0Lk0BLSBgbWluX2JhbGFuY2VgOiBUaGUgbWluaW11bSBiYWxhbmNlIG9mIHRoaXMgbmV3IGFzc2V0IHRoYXQgYW55IHNpbmdsZSBhY2NvdW50IG11c3Q9AWhhdmUuIElmIGFuIGFjY291bnQncyBiYWxhbmNlIGlzIHJlZHVjZWQgYmVsb3cgdGhpcywgdGhlbiBpdCBjb2xsYXBzZXMgdG8gemVyby5RAS0gYGlzX3N1ZmZpY2llbnRgOiBXaGV0aGVyIGEgbm9uLXplcm8gYmFsYW5jZSBvZiB0aGlzIGFzc2V0IGlzIGRlcG9zaXQgb2Ygc3VmZmljaWVudE0BdmFsdWUgdG8gYWNjb3VudCBmb3IgdGhlIHN0YXRlIGJsb2F0IGFzc29jaWF0ZWQgd2l0aCBpdHMgYmFsYW5jZSBzdG9yYWdlLiBJZiBzZXQgdG9VAWB0cnVlYCwgdGhlbiBub24temVybyBiYWxhbmNlcyBtYXkgYmUgc3RvcmVkIHdpdGhvdXQgYSBgY29uc3VtZXJgIHJlZmVyZW5jZSAoYW5kIHRodXNNAWFuIEVEIGluIHRoZSBCYWxhbmNlcyBwYWxsZXQgb3Igd2hhdGV2ZXIgZWxzZSBpcyB1c2VkIHRvIGNvbnRyb2wgdXNlci1hY2NvdW50IHN0YXRlIGdyb3d0aCkuPQEtIGBpc19mcm96ZW5gOiBXaGV0aGVyIHRoaXMgYXNzZXQgY2xhc3MgaXMgZnJvemVuIGV4Y2VwdCBmb3IgcGVybWlzc2lvbmVkL2FkbWluNGluc3RydWN0aW9ucy4A6EVtaXRzIGBBc3NldFN0YXR1c0NoYW5nZWRgIHdpdGggdGhlIGlkZW50aXR5IG9mIHRoZSBhc3NldC4AOFdlaWdodDogYE8oMSlgQGFwcHJvdmVfdHJhbnNmZXIMAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAASBkZWxlZ2F0ZQABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYYW1vdW50VQEBKFQ6OkJhbGFuY2UAFlAtAUFwcHJvdmUgYW4gYW1vdW50IG9mIGFzc2V0IGZvciB0cmFuc2ZlciBieSBhIGRlbGVnYXRlZCB0aGlyZC1wYXJ0eSBhY2NvdW50LgBYT3JpZ2luIG11c3QgYmUgU2lnbmVkLgBNAUVuc3VyZXMgdGhhdCBgQXBwcm92YWxEZXBvc2l0YCB3b3J0aCBvZiBgQ3VycmVuY3lgIGlzIHJlc2VydmVkIGZyb20gc2lnbmluZyBhY2NvdW50VQFmb3IgdGhlIHB1cnBvc2Ugb2YgaG9sZGluZyB0aGUgYXBwcm92YWwuIElmIHNvbWUgbm9uLXplcm8gYW1vdW50IG9mIGFzc2V0cyBpcyBhbHJlYWR5SQFhcHByb3ZlZCBmcm9tIHNpZ25pbmcgYWNjb3VudCB0byBgZGVsZWdhdGVgLCB0aGVuIGl0IGlzIHRvcHBlZCB1cCBvciB1bnJlc2VydmVkIHRvVG1lZXQgdGhlIHJpZ2h0IHZhbHVlLgBFAU5PVEU6IFRoZSBzaWduaW5nIGFjY291bnQgZG9lcyBub3QgbmVlZCB0byBvd24gYGFtb3VudGAgb2YgYXNzZXRzIGF0IHRoZSBwb2ludCBvZkRtYWtpbmcgdGhpcyBjYWxsLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQuDQEtIGBkZWxlZ2F0ZWA6IFRoZSBhY2NvdW50IHRvIGRlbGVnYXRlIHBlcm1pc3Npb24gdG8gdHJhbnNmZXIgYXNzZXQuSQEtIGBhbW91bnRgOiBUaGUgYW1vdW50IG9mIGFzc2V0IHRoYXQgbWF5IGJlIHRyYW5zZmVycmVkIGJ5IGBkZWxlZ2F0ZWAuIElmIHRoZXJlIGlz4GFscmVhZHkgYW4gYXBwcm92YWwgaW4gcGxhY2UsIHRoZW4gdGhpcyBhY3RzIGFkZGl0aXZlbHkuAJBFbWl0cyBgQXBwcm92ZWRUcmFuc2ZlcmAgb24gc3VjY2Vzcy4AOFdlaWdodDogYE8oMSlgPGNhbmNlbF9hcHByb3ZhbAgBCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABIGRlbGVnYXRlAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AFzRJAUNhbmNlbCBhbGwgb2Ygc29tZSBhc3NldCBhcHByb3ZlZCBmb3IgZGVsZWdhdGVkIHRyYW5zZmVyIGJ5IGEgdGhpcmQtcGFydHkgYWNjb3VudC4APQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZXJlIG11c3QgYmUgYW4gYXBwcm92YWwgaW4gcGxhY2UgYmV0d2VlbiBzaWduZXIgYW5kLGBkZWxlZ2F0ZWAuAEkBVW5yZXNlcnZlcyBhbnkgZGVwb3NpdCBwcmV2aW91c2x5IHJlc2VydmVkIGJ5IGBhcHByb3ZlX3RyYW5zZmVyYCBmb3IgdGhlIGFwcHJvdmFsLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQuBQEtIGBkZWxlZ2F0ZWA6IFRoZSBhY2NvdW50IGRlbGVnYXRlZCBwZXJtaXNzaW9uIHRvIHRyYW5zZmVyIGFzc2V0LgCURW1pdHMgYEFwcHJvdmFsQ2FuY2VsbGVkYCBvbiBzdWNjZXNzLgA4V2VpZ2h0OiBgTygxKWBUZm9yY2VfY2FuY2VsX2FwcHJvdmFsDAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAEUb3duZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABIGRlbGVnYXRlAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AGDRJAUNhbmNlbCBhbGwgb2Ygc29tZSBhc3NldCBhcHByb3ZlZCBmb3IgZGVsZWdhdGVkIHRyYW5zZmVyIGJ5IGEgdGhpcmQtcGFydHkgYWNjb3VudC4ASQFPcmlnaW4gbXVzdCBiZSBlaXRoZXIgRm9yY2VPcmlnaW4gb3IgU2lnbmVkIG9yaWdpbiB3aXRoIHRoZSBzaWduZXIgYmVpbmcgdGhlIEFkbWluaGFjY291bnQgb2YgdGhlIGFzc2V0IGBpZGAuAEkBVW5yZXNlcnZlcyBhbnkgZGVwb3NpdCBwcmV2aW91c2x5IHJlc2VydmVkIGJ5IGBhcHByb3ZlX3RyYW5zZmVyYCBmb3IgdGhlIGFwcHJvdmFsLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQuBQEtIGBkZWxlZ2F0ZWA6IFRoZSBhY2NvdW50IGRlbGVnYXRlZCBwZXJtaXNzaW9uIHRvIHRyYW5zZmVyIGFzc2V0LgCURW1pdHMgYEFwcHJvdmFsQ2FuY2VsbGVkYCBvbiBzdWNjZXNzLgA4V2VpZ2h0OiBgTygxKWBEdHJhbnNmZXJfYXBwcm92ZWQQAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARRvd25lcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEsZGVzdGluYXRpb24AAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGFtb3VudFUBAShUOjpCYWxhbmNlABlITQFUcmFuc2ZlciBzb21lIGFzc2V0IGJhbGFuY2UgZnJvbSBhIHByZXZpb3VzbHkgZGVsZWdhdGVkIGFjY291bnQgdG8gc29tZSB0aGlyZC1wYXJ0eSBhY2NvdW50LgBJAU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlcmUgbXVzdCBiZSBhbiBhcHByb3ZhbCBpbiBwbGFjZSBieSB0aGUgYG93bmVyYCB0byB0aGUcc2lnbmVyLgBZAUlmIHRoZSBlbnRpcmUgYW1vdW50IGFwcHJvdmVkIGZvciB0cmFuc2ZlciBpcyB0cmFuc2ZlcnJlZCwgdGhlbiBhbnkgZGVwb3NpdCBwcmV2aW91c2x5tHJlc2VydmVkIGJ5IGBhcHByb3ZlX3RyYW5zZmVyYCBpcyB1bnJlc2VydmVkLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQuYQEtIGBvd25lcmA6IFRoZSBhY2NvdW50IHdoaWNoIHByZXZpb3VzbHkgYXBwcm92ZWQgZm9yIGEgdHJhbnNmZXIgb2YgYXQgbGVhc3QgYGFtb3VudGAgYW5kvGZyb20gd2hpY2ggdGhlIGFzc2V0IGJhbGFuY2Ugd2lsbCBiZSB3aXRoZHJhd24uYQEtIGBkZXN0aW5hdGlvbmA6IFRoZSBhY2NvdW50IHRvIHdoaWNoIHRoZSBhc3NldCBiYWxhbmNlIG9mIGBhbW91bnRgIHdpbGwgYmUgdHJhbnNmZXJyZWQutC0gYGFtb3VudGA6IFRoZSBhbW91bnQgb2YgYXNzZXRzIHRvIHRyYW5zZmVyLgCcRW1pdHMgYFRyYW5zZmVycmVkQXBwcm92ZWRgIG9uIHN1Y2Nlc3MuADhXZWlnaHQ6IGBPKDEpYBR0b3VjaAQBCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgAaJMBDcmVhdGUgYW4gYXNzZXQgYWNjb3VudCBmb3Igbm9uLXByb3ZpZGVyIGFzc2V0cy4AwEEgZGVwb3NpdCB3aWxsIGJlIHRha2VuIGZyb20gdGhlIHNpZ25lciBhY2NvdW50LgBdAS0gYG9yaWdpbmA6IE11c3QgYmUgU2lnbmVkOyB0aGUgc2lnbmVyIGFjY291bnQgbXVzdCBoYXZlIHN1ZmZpY2llbnQgZnVuZHMgZm9yIGEgZGVwb3NpdDggIHRvIGJlIHRha2VuLgkBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgZm9yIHRoZSBhY2NvdW50IHRvIGJlIGNyZWF0ZWQuAJhFbWl0cyBgVG91Y2hlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLhhyZWZ1bmQIAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAAShhbGxvd19idXJuXQEBEGJvb2wAGzRZAVJldHVybiB0aGUgZGVwb3NpdCAoaWYgYW55KSBvZiBhbiBhc3NldCBhY2NvdW50IG9yIGEgY29uc3VtZXIgcmVmZXJlbmNlIChpZiBhbnkpIG9mIGFuIGFjY291bnQuAGhUaGUgb3JpZ2luIG11c3QgYmUgU2lnbmVkLgA9AS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IGZvciB3aGljaCB0aGUgY2FsbGVyIHdvdWxkIGxpa2UgdGhlIGRlcG9zaXQsICByZWZ1bmRlZC5dAS0gYGFsbG93X2J1cm5gOiBJZiBgdHJ1ZWAgdGhlbiBhc3NldHMgbWF5IGJlIGRlc3Ryb3llZCBpbiBvcmRlciB0byBjb21wbGV0ZSB0aGUgcmVmdW5kLgBJAUl0IHdpbGwgZmFpbCB3aXRoIGVpdGhlciBbYEVycm9yOjpDb250YWluc0hvbGRzYF0gb3IgW2BFcnJvcjo6Q29udGFpbnNGcmVlemVzYF0gaWbUdGhlIGFzc2V0IGFjY291bnQgY29udGFpbnMgaG9sZHMgb3IgZnJlZXplcyBpbiBwbGFjZS4AnEVtaXRzIGBSZWZ1bmRlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLjxzZXRfbWluX2JhbGFuY2UIAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAASxtaW5fYmFsYW5jZVkBAShUOjpCYWxhbmNlABwwlFNldHMgdGhlIG1pbmltdW0gYmFsYW5jZSBvZiBhbiBhc3NldC4AIQFPbmx5IHdvcmtzIGlmIHRoZXJlIGFyZW4ndCBhbnkgYWNjb3VudHMgdGhhdCBhcmUgaG9sZGluZyB0aGUgYXNzZXQgb3IgaWbgdGhlIG5ldyB2YWx1ZSBvZiBgbWluX2JhbGFuY2VgIGlzIGxlc3MgdGhhbiB0aGUgb2xkIG9uZS4A/E9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBoYXMgdG8gYmUgdGhlIE93bmVyIG9mIHRoZSxhc3NldCBgaWRgLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQuwC0gYG1pbl9iYWxhbmNlYDogVGhlIG5ldyB2YWx1ZSBvZiBgbWluX2JhbGFuY2VgLgDURW1pdHMgYEFzc2V0TWluQmFsYW5jZUNoYW5nZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4sdG91Y2hfb3RoZXIIAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAAQx3aG8AAVBBY2NvdW50SWRMb29rdXBPZjxUPgAdLIhDcmVhdGUgYW4gYXNzZXQgYWNjb3VudCBmb3IgYHdob2AuAMBBIGRlcG9zaXQgd2lsbCBiZSB0YWtlbiBmcm9tIHRoZSBzaWduZXIgYWNjb3VudC4AXQEtIGBvcmlnaW5gOiBNdXN0IGJlIFNpZ25lZDsgdGhlIHNpZ25lciBhY2NvdW50IG11c3QgaGF2ZSBzdWZmaWNpZW50IGZ1bmRzIGZvciBhIGRlcG9zaXQ4ICB0byBiZSB0YWtlbi5hAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IGZvciB0aGUgYWNjb3VudCB0byBiZSBjcmVhdGVkLCB0aGUgYXNzZXQgc3RhdHVzIG11c3QoICBiZSBsaXZlLowtIGB3aG9gOiBUaGUgYWNjb3VudCB0byBiZSBjcmVhdGVkLgCYRW1pdHMgYFRvdWNoZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4wcmVmdW5kX290aGVyCAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAEMd2hvAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AHjRdAVJldHVybiB0aGUgZGVwb3NpdCAoaWYgYW55KSBvZiBhIHRhcmdldCBhc3NldCBhY2NvdW50LiBVc2VmdWwgaWYgeW91IGFyZSB0aGUgZGVwb3NpdG9yLgBdAVRoZSBvcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIGVpdGhlciB0aGUgYWNjb3VudCBvd25lciwgZGVwb3NpdG9yLCBvciBhc3NldCBgQWRtaW5gLiBJbmEBb3JkZXIgdG8gYnVybiBhIG5vbi16ZXJvIGJhbGFuY2Ugb2YgdGhlIGFzc2V0LCB0aGUgY2FsbGVyIG11c3QgYmUgdGhlIGFjY291bnQgYW5kIHNob3VsZDR1c2UgYHJlZnVuZGAuABkBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgZm9yIHRoZSBhY2NvdW50IGhvbGRpbmcgYSBkZXBvc2l0LnwtIGB3aG9gOiBUaGUgYWNjb3VudCB0byByZWZ1bmQuAEkBSXQgd2lsbCBmYWlsIHdpdGggZWl0aGVyIFtgRXJyb3I6OkNvbnRhaW5zSG9sZHNgXSBvciBbYEVycm9yOjpDb250YWluc0ZyZWV6ZXNgXSBpZtR0aGUgYXNzZXQgYWNjb3VudCBjb250YWlucyBob2xkcyBvciBmcmVlemVzIGluIHBsYWNlLgCcRW1pdHMgYFJlZnVuZGVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuFGJsb2NrCAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAEMd2hvAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AHyhZAURpc2FsbG93IGZ1cnRoZXIgdW5wcml2aWxlZ2VkIHRyYW5zZmVycyBvZiBhbiBhc3NldCBgaWRgIHRvIGFuZCBmcm9tIGFuIGFjY291bnQgYHdob2AuADUBT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgRnJlZXplciBvZiB0aGUgYXNzZXQgYGlkYC4AuC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFjY291bnQncyBhc3NldC6ULSBgd2hvYDogVGhlIGFjY291bnQgdG8gYmUgdW5ibG9ja2VkLgBARW1pdHMgYEJsb2NrZWRgLgA4V2VpZ2h0OiBgTygxKWAwdHJhbnNmZXJfYWxsDAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAEQZGVzdAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEoa2VlcF9hbGl2ZV0BARBib29sACBAHQFUcmFuc2ZlciB0aGUgZW50aXJlIHRyYW5zZmVyYWJsZSBiYWxhbmNlIGZyb20gdGhlIGNhbGxlciBhc3NldCBhY2NvdW50LgBZAU5PVEU6IFRoaXMgZnVuY3Rpb24gb25seSBhdHRlbXB0cyB0byB0cmFuc2ZlciBfdHJhbnNmZXJhYmxlXyBiYWxhbmNlcy4gVGhpcyBtZWFucyB0aGF0PQFhbnkgaGVsZCwgZnJvemVuLCBvciBtaW5pbXVtIGJhbGFuY2UgKHdoZW4gYGtlZXBfYWxpdmVgIGlzIGB0cnVlYCksIHdpbGwgbm90IGJlXQF0cmFuc2ZlcnJlZCBieSB0aGlzIGZ1bmN0aW9uLiBUbyBlbnN1cmUgdGhhdCB0aGlzIGZ1bmN0aW9uIHJlc3VsdHMgaW4gYSBraWxsZWQgYWNjb3VudCxFAXlvdSBtaWdodCBuZWVkIHRvIHByZXBhcmUgdGhlIGFjY291bnQgYnkgcmVtb3ZpbmcgYW55IHJlZmVyZW5jZSBjb3VudGVycywgc3RvcmFnZUBkZXBvc2l0cywgZXRjLi4uAMBUaGUgZGlzcGF0Y2ggb3JpZ2luIG9mIHRoaXMgY2FsbCBtdXN0IGJlIFNpZ25lZC4AGQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCBmb3IgdGhlIGFjY291bnQgaG9sZGluZyBhIGRlcG9zaXQuoC0gYGRlc3RgOiBUaGUgcmVjaXBpZW50IG9mIHRoZSB0cmFuc2Zlci5ZAS0gYGtlZXBfYWxpdmVgOiBBIGJvb2xlYW4gdG8gZGV0ZXJtaW5lIGlmIHRoZSBgdHJhbnNmZXJfYWxsYCBvcGVyYXRpb24gc2hvdWxkIHNlbmQgYWxsTQEgIG9mIHRoZSBmdW5kcyB0aGUgYXNzZXQgYWNjb3VudCBoYXMsIGNhdXNpbmcgdGhlIHNlbmRlciBhc3NldCBhY2NvdW50IHRvIGJlIGtpbGxlZEUBICAoZmFsc2UpLCBvciB0cmFuc2ZlciBldmVyeXRoaW5nIGV4Y2VwdCBhdCBsZWFzdCB0aGUgbWluaW11bSBiYWxhbmNlLCB3aGljaCB3aWxs6CAgZ3VhcmFudGVlIHRvIGtlZXAgdGhlIHNlbmRlciBhc3NldCBhY2NvdW50IGFsaXZlICh0cnVlKS4wc2V0X3Jlc2VydmVzCAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAEgcmVzZXJ2ZXNJBAHIQm91bmRlZFZlYzxUOjpSZXNlcnZlRGF0YSwgQ29uc3RVMzI8TUFYX1JFU0VSVkVTPj4AISTEU2V0cyB0aGUgdHJ1c3RlZCByZXNlcnZlIGluZm9ybWF0aW9uIG9mIGFuIGFzc2V0LgBVAU9yaWdpbiBtdXN0IGJlIHRoZSBPd25lciBvZiB0aGUgYXNzZXQgYGlkYC4gVGhlIG9yaWdpbiBtdXN0IGNvbmZvcm0gdG8gdGhlIGNvbmZpZ3VyZWQlAWBDcmVhdGVPcmlnaW5gIG9yIGJlIHRoZSBzaWduZWQgYG93bmVyYCBjb25maWd1cmVkIGR1cmluZyBhc3NldCBjcmVhdGlvbi4AkC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0LvAtIGByZXNlcnZlc2A6IFRoZSBmdWxsIGxpc3Qgb2YgdHJ1c3RlZCByZXNlcnZlcyBpbmZvcm1hdGlvbi4A1EVtaXRzIGBBc3NldE1pbkJhbGFuY2VDaGFuZ2VkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLt0EDFxwYWxsZXRfYXNzZXRfY29udmVyc2lvbhhwYWxsZXQQQ2FsbAQEVAABGCxjcmVhdGVfcG9vbAgBGGFzc2V0MR0CAURCb3g8VDo6QXNzZXRLaW5kPgABGGFzc2V0Mh0CAURCb3g8VDo6QXNzZXRLaW5kPgAAEBkBQ3JlYXRlcyBhbiBlbXB0eSBsaXF1aWRpdHkgcG9vbCBhbmQgYW4gYXNzb2NpYXRlZCBuZXcgYGxwX3Rva2VuYCBhc3NldAEBKHRoZSBpZCBvZiB3aGljaCBpcyByZXR1cm5lZCBpbiB0aGUgYEV2ZW50OjpQb29sQ3JlYXRlZGAgZXZlbnQpLgARAU9uY2UgYSBwb29sIGlzIGNyZWF0ZWQsIHNvbWVvbmUgbWF5IFtgUGFsbGV0OjphZGRfbGlxdWlkaXR5YF0gdG8gaXQuNGFkZF9saXF1aWRpdHkcARhhc3NldDEdAgFEQm94PFQ6OkFzc2V0S2luZD4AARhhc3NldDIdAgFEQm94PFQ6OkFzc2V0S2luZD4AATxhbW91bnQxX2Rlc2lyZWRZAQEoVDo6QmFsYW5jZQABPGFtb3VudDJfZGVzaXJlZFkBAShUOjpCYWxhbmNlAAEsYW1vdW50MV9taW5ZAQEoVDo6QmFsYW5jZQABLGFtb3VudDJfbWluWQEBKFQ6OkJhbGFuY2UAARxtaW50X3RvBAEwVDo6QWNjb3VudElkAAE45FByb3ZpZGUgbGlxdWlkaXR5IGludG8gdGhlIHBvb2wgb2YgYGFzc2V0MWAgYW5kIGBhc3NldDJgLg0BTk9URTogYW4gb3B0aW1hbCBhbW91bnQgb2YgYXNzZXQxIGFuZCBhc3NldDIgd2lsbCBiZSBjYWxjdWxhdGVkIGFuZCEBbWlnaHQgYmUgZGlmZmVyZW50IHRoYW4gdGhlIHByb3ZpZGVkIGBhbW91bnQxX2Rlc2lyZWRgL2BhbW91bnQyX2Rlc2lyZWRg/HRodXMgeW91IHNob3VsZCBwcm92aWRlIHRoZSBtaW4gYW1vdW50IHlvdSdyZSBoYXBweSB0byBwcm92aWRlLshQYXJhbXMgYGFtb3VudDFfbWluYC9gYW1vdW50Ml9taW5gIHJlcHJlc2VudCB0aGF0LkkBYG1pbnRfdG9gIHdpbGwgYmUgc2VudCB0aGUgbGlxdWlkaXR5IHRva2VucyB0aGF0IHJlcHJlc2VudCB0aGlzIHNoYXJlIG9mIHRoZSBwb29sLgBdAU5PVEU6IHdoZW4gZW5jb3VudGVyaW5nIGFuIGluY29ycmVjdCBleGNoYW5nZSByYXRlIGFuZCBub24td2l0aGRyYXdhYmxlIHBvb2wgbGlxdWlkaXR5LNxiYXRjaCBhbiBhdG9taWMgY2FsbCB3aXRoIFtgUGFsbGV0OjphZGRfbGlxdWlkaXR5YF0gYW5kUQFbYFBhbGxldDo6c3dhcF9leGFjdF90b2tlbnNfZm9yX3Rva2Vuc2BdIG9yIFtgUGFsbGV0Ojpzd2FwX3Rva2Vuc19mb3JfZXhhY3RfdG9rZW5zYF0lAWNhbGxzIHRvIHJlbmRlciB0aGUgbGlxdWlkaXR5IHdpdGhkcmF3YWJsZSBhbmQgcmVjdGlmeSB0aGUgZXhjaGFuZ2UgcmF0ZS4A2E9uY2UgbGlxdWlkaXR5IGlzIGFkZGVkLCBzb21lb25lIG1heSBzdWNjZXNzZnVsbHkgY2FsbKRbYFBhbGxldDo6c3dhcF9leGFjdF90b2tlbnNfZm9yX3Rva2Vuc2BdLkByZW1vdmVfbGlxdWlkaXR5GAEYYXNzZXQxHQIBREJveDxUOjpBc3NldEtpbmQ+AAEYYXNzZXQyHQIBREJveDxUOjpBc3NldEtpbmQ+AAE0bHBfdG9rZW5fYnVyblkBAShUOjpCYWxhbmNlAAFMYW1vdW50MV9taW5fcmVjZWl2ZVkBAShUOjpCYWxhbmNlAAFMYW1vdW50Ml9taW5fcmVjZWl2ZVkBAShUOjpCYWxhbmNlAAEsd2l0aGRyYXdfdG8EATBUOjpBY2NvdW50SWQAAgxNAUFsbG93cyB5b3UgdG8gcmVtb3ZlIGxpcXVpZGl0eSBieSBwcm92aWRpbmcgdGhlIGBscF90b2tlbl9idXJuYCB0b2tlbnMgdGhhdCB3aWxsIGJlUQFidXJuZWQgaW4gdGhlIHByb2Nlc3MuIFdpdGggdGhlIHVzYWdlIG9mIGBhbW91bnQxX21pbl9yZWNlaXZlYC9gYW1vdW50Ml9taW5fcmVjZWl2ZWA1AWl0J3MgcG9zc2libGUgdG8gY29udHJvbCB0aGUgbWluIGFtb3VudCBvZiByZXR1cm5lZCB0b2tlbnMgeW91J3JlIGhhcHB5IHdpdGgucHN3YXBfZXhhY3RfdG9rZW5zX2Zvcl90b2tlbnMUARBwYXRo4QQBWFZlYzxCb3g8VDo6QXNzZXRLaW5kPj4AASRhbW91bnRfaW5ZAQEoVDo6QmFsYW5jZQABOGFtb3VudF9vdXRfbWluWQEBKFQ6OkJhbGFuY2UAARxzZW5kX3RvBAEwVDo6QWNjb3VudElkAAEoa2VlcF9hbGl2ZV0BARBib29sAAMYwFN3YXAgdGhlIGV4YWN0IGFtb3VudCBvZiBgYXNzZXQxYCBpbnRvIGBhc3NldDJgLi0BYGFtb3VudF9vdXRfbWluYCBwYXJhbSBhbGxvd3MgeW91IHRvIHNwZWNpZnkgdGhlIG1pbiBhbW91bnQgb2YgdGhlIGBhc3NldDJgYHlvdSdyZSBoYXBweSB0byByZWNlaXZlLgBZAVtgQXNzZXRDb252ZXJzaW9uQXBpOjpxdW90ZV9wcmljZV9leGFjdF90b2tlbnNfZm9yX3Rva2Vuc2BdIHJ1bnRpbWUgY2FsbCBjYW4gYmUgY2FsbGVkMGZvciBhIHF1b3RlLnBzd2FwX3Rva2Vuc19mb3JfZXhhY3RfdG9rZW5zFAEQcGF0aOEEAVhWZWM8Qm94PFQ6OkFzc2V0S2luZD4+AAEoYW1vdW50X291dFkBAShUOjpCYWxhbmNlAAE0YW1vdW50X2luX21heFkBAShUOjpCYWxhbmNlAAEcc2VuZF90bwQBMFQ6OkFjY291bnRJZAABKGtlZXBfYWxpdmVdAQEQYm9vbAAEGAEBU3dhcCBhbnkgYW1vdW50IG9mIGBhc3NldDFgIHRvIGdldCB0aGUgZXhhY3QgYW1vdW50IG9mIGBhc3NldDJgLhkBYGFtb3VudF9pbl9tYXhgIHBhcmFtIGFsbG93cyB0byBzcGVjaWZ5IHRoZSBtYXggYW1vdW50IG9mIHRoZSBgYXNzZXQxYGB5b3UncmUgaGFwcHkgdG8gcHJvdmlkZS4AWQFbYEFzc2V0Q29udmVyc2lvbkFwaTo6cXVvdGVfcHJpY2VfdG9rZW5zX2Zvcl9leGFjdF90b2tlbnNgXSBydW50aW1lIGNhbGwgY2FuIGJlIGNhbGxlZDBmb3IgYSBxdW90ZS4UdG91Y2gIARhhc3NldDEdAgFEQm94PFQ6OkFzc2V0S2luZD4AARhhc3NldDIdAgFEQm94PFQ6OkFzc2V0S2luZD4ABSxNAVRvdWNoIGFuIGV4aXN0aW5nIHBvb2wgdG8gZnVsZmlsbCBwcmVyZXF1aXNpdGVzIGJlZm9yZSBwcm92aWRpbmcgbGlxdWlkaXR5LCBzdWNoIGFzSQFlbnN1cmluZyB0aGF0IHRoZSBwb29sJ3MgYWNjb3VudHMgYXJlIGluIHBsYWNlLiBJdCBpcyB0eXBpY2FsbHkgdXNlZnVsIHdoZW4gYSBwb29sVQFjcmVhdG9yIHJlbW92ZXMgdGhlIHBvb2wncyBhY2NvdW50cyBhbmQgZG9lcyBub3QgcHJvdmlkZSBhIGxpcXVpZGl0eS4gVGhpcyBhY3Rpb24gbWF5VQFpbnZvbHZlIGhvbGRpbmcgYXNzZXRzIGZyb20gdGhlIGNhbGxlciBhcyBhIGRlcG9zaXQgZm9yIGNyZWF0aW5nIHRoZSBwb29sJ3MgYWNjb3VudHMuAGhUaGUgb3JpZ2luIG11c3QgYmUgU2lnbmVkLgApAS0gYGFzc2V0MWA6IFRoZSBhc3NldCBJRCBvZiBhbiBleGlzdGluZyBwb29sIHdpdGggYSBwYWlyIChhc3NldDEsIGFzc2V0MikuKQEtIGBhc3NldDJgOiBUaGUgYXNzZXQgSUQgb2YgYW4gZXhpc3RpbmcgcG9vbCB3aXRoIGEgcGFpciAoYXNzZXQxLCBhc3NldDIpLgCYRW1pdHMgYFRvdWNoZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4EcFBhbGxldCdzIGNhbGxhYmxlIGZ1bmN0aW9ucy7hBAAAAh0CAOUEDDxwYWxsZXRfdHJlYXN1cnkYcGFsbGV0EENhbGwIBFQABEkAARgsc3BlbmRfbG9jYWwIARhhbW91bnRVAQE8QmFsYW5jZU9mPFQsIEk+AAEsYmVuZWZpY2lhcnkAAVBBY2NvdW50SWRMb29rdXBPZjxUPgADRLhQcm9wb3NlIGFuZCBhcHByb3ZlIGEgc3BlbmQgb2YgdHJlYXN1cnkgZnVuZHMuAEgjIyBEaXNwYXRjaCBPcmlnaW4ARQFNdXN0IGJlIFtgQ29uZmlnOjpTcGVuZE9yaWdpbmBdIHdpdGggdGhlIGBTdWNjZXNzYCB2YWx1ZSBiZWluZyBhdCBsZWFzdCBgYW1vdW50YC4ALCMjIyBEZXRhaWxzRQFOT1RFOiBGb3IgcmVjb3JkLWtlZXBpbmcgcHVycG9zZXMsIHRoZSBwcm9wb3NlciBpcyBkZWVtZWQgdG8gYmUgZXF1aXZhbGVudCB0byB0aGUwYmVuZWZpY2lhcnkuADgjIyMgUGFyYW1ldGVyc0EBLSBgYW1vdW50YDogVGhlIGFtb3VudCB0byBiZSB0cmFuc2ZlcnJlZCBmcm9tIHRoZSB0cmVhc3VyeSB0byB0aGUgYGJlbmVmaWNpYXJ5YC7oLSBgYmVuZWZpY2lhcnlgOiBUaGUgZGVzdGluYXRpb24gYWNjb3VudCBmb3IgdGhlIHRyYW5zZmVyLgAkIyMgRXZlbnRzALRFbWl0cyBbYEV2ZW50OjpTcGVuZEFwcHJvdmVkYF0gaWYgc3VjY2Vzc2Z1bC48cmVtb3ZlX2FwcHJvdmFsBAEscHJvcG9zYWxfaWRkATRQcm9wb3NhbEluZGV4AARULQFGb3JjZSBhIHByZXZpb3VzbHkgYXBwcm92ZWQgcHJvcG9zYWwgdG8gYmUgcmVtb3ZlZCBmcm9tIHRoZSBhcHByb3ZhbCBxdWV1ZS4ASCMjIERpc3BhdGNoIE9yaWdpbgCETXVzdCBiZSBbYENvbmZpZzo6UmVqZWN0T3JpZ2luYF0uACgjIyBEZXRhaWxzAMBUaGUgb3JpZ2luYWwgZGVwb3NpdCB3aWxsIG5vIGxvbmdlciBiZSByZXR1cm5lZC4AOCMjIyBQYXJhbWV0ZXJzoC0gYHByb3Bvc2FsX2lkYDogVGhlIGluZGV4IG9mIGEgcHJvcG9zYWwAOCMjIyBDb21wbGV4aXR5rC0gTyhBKSB3aGVyZSBgQWAgaXMgdGhlIG51bWJlciBvZiBhcHByb3ZhbHMAKCMjIyBFcnJvcnNFAS0gW2BFcnJvcjo6UHJvcG9zYWxOb3RBcHByb3ZlZGBdOiBUaGUgYHByb3Bvc2FsX2lkYCBzdXBwbGllZCB3YXMgbm90IGZvdW5kIGluIHRoZVEBICBhcHByb3ZhbCBxdWV1ZSwgaS5lLiwgdGhlIHByb3Bvc2FsIGhhcyBub3QgYmVlbiBhcHByb3ZlZC4gVGhpcyBjb3VsZCBhbHNvIG1lYW4gdGhlWQEgIHByb3Bvc2FsIGRvZXMgbm90IGV4aXN0IGFsdG9nZXRoZXIsIHRodXMgdGhlcmUgaXMgbm8gd2F5IGl0IHdvdWxkIGhhdmUgYmVlbiBhcHByb3ZlZFQgIGluIHRoZSBmaXJzdCBwbGFjZS4Uc3BlbmQQAShhc3NldF9raW5k6QQBREJveDxUOjpBc3NldEtpbmQ+AAEYYW1vdW50VQEBUEFzc2V0QmFsYW5jZU9mPFQsIEk+AAEsYmVuZWZpY2lhcnntBAF4Qm94PEJlbmVmaWNpYXJ5TG9va3VwT2Y8VCwgST4+AAEodmFsaWRfZnJvbeQBcE9wdGlvbjxCbG9ja051bWJlckZvcjxULCBJPj4ABWi4UHJvcG9zZSBhbmQgYXBwcm92ZSBhIHNwZW5kIG9mIHRyZWFzdXJ5IGZ1bmRzLgBIIyMgRGlzcGF0Y2ggT3JpZ2luAB0BTXVzdCBiZSBbYENvbmZpZzo6U3BlbmRPcmlnaW5gXSB3aXRoIHRoZSBgU3VjY2Vzc2AgdmFsdWUgYmVpbmcgYXQgbGVhc3RVAWBhbW91bnRgIG9mIGBhc3NldF9raW5kYCBpbiB0aGUgbmF0aXZlIGFzc2V0LiBUaGUgYW1vdW50IG9mIGBhc3NldF9raW5kYCBpcyBjb252ZXJ0ZWTUZm9yIGFzc2VydGlvbiB1c2luZyB0aGUgW2BDb25maWc6OkJhbGFuY2VDb252ZXJ0ZXJgXS4AKCMjIERldGFpbHMASQFDcmVhdGUgYW4gYXBwcm92ZWQgc3BlbmQgZm9yIHRyYW5zZmVycmluZyBhIHNwZWNpZmljIGBhbW91bnRgIG9mIGBhc3NldF9raW5kYCB0byBhYQFkZXNpZ25hdGVkIGJlbmVmaWNpYXJ5LiBUaGUgc3BlbmQgbXVzdCBiZSBjbGFpbWVkIHVzaW5nIHRoZSBgcGF5b3V0YCBkaXNwYXRjaGFibGUgd2l0aGludHRoZSBbYENvbmZpZzo6UGF5b3V0UGVyaW9kYF0uADgjIyMgUGFyYW1ldGVycxUBLSBgYXNzZXRfa2luZGA6IEFuIGluZGljYXRvciBvZiB0aGUgc3BlY2lmaWMgYXNzZXQgY2xhc3MgdG8gYmUgc3BlbnQuQQEtIGBhbW91bnRgOiBUaGUgYW1vdW50IHRvIGJlIHRyYW5zZmVycmVkIGZyb20gdGhlIHRyZWFzdXJ5IHRvIHRoZSBgYmVuZWZpY2lhcnlgLrgtIGBiZW5lZmljaWFyeWA6IFRoZSBiZW5lZmljaWFyeSBvZiB0aGUgc3BlbmQuVQEtIGB2YWxpZF9mcm9tYDogVGhlIGJsb2NrIG51bWJlciBmcm9tIHdoaWNoIHRoZSBzcGVuZCBjYW4gYmUgY2xhaW1lZC4gSXQgY2FuIHJlZmVyIHRvGQEgIHRoZSBwYXN0IGlmIHRoZSByZXN1bHRpbmcgc3BlbmQgaGFzIG5vdCB5ZXQgZXhwaXJlZCBhY2NvcmRpbmcgdG8gdGhlRQEgIFtgQ29uZmlnOjpQYXlvdXRQZXJpb2RgXS4gSWYgYE5vbmVgLCB0aGUgc3BlbmQgY2FuIGJlIGNsYWltZWQgaW1tZWRpYXRlbHkgYWZ0ZXIsICBhcHByb3ZhbC4AJCMjIEV2ZW50cwDIRW1pdHMgW2BFdmVudDo6QXNzZXRTcGVuZEFwcHJvdmVkYF0gaWYgc3VjY2Vzc2Z1bC4YcGF5b3V0BAEUaW5kZXg4AShTcGVuZEluZGV4AAZMOENsYWltIGEgc3BlbmQuAEgjIyBEaXNwYXRjaCBPcmlnaW4AOE11c3QgYmUgc2lnbmVkACgjIyBEZXRhaWxzAFUBU3BlbmRzIG11c3QgYmUgY2xhaW1lZCB3aXRoaW4gc29tZSB0ZW1wb3JhbCBib3VuZHMuIEEgc3BlbmQgbWF5IGJlIGNsYWltZWQgd2l0aGluIG9uZdRbYENvbmZpZzo6UGF5b3V0UGVyaW9kYF0gZnJvbSB0aGUgYHZhbGlkX2Zyb21gIGJsb2NrLlUBSW4gY2FzZSBvZiBhIHBheW91dCBmYWlsdXJlLCB0aGUgc3BlbmQgc3RhdHVzIG11c3QgYmUgdXBkYXRlZCB3aXRoIHRoZSBgY2hlY2tfc3RhdHVzYNxkaXNwYXRjaGFibGUgYmVmb3JlIHJldHJ5aW5nIHdpdGggdGhlIGN1cnJlbnQgZnVuY3Rpb24uADgjIyMgUGFyYW1ldGVyc2wtIGBpbmRleGA6IFRoZSBzcGVuZCBpbmRleC4AJCMjIEV2ZW50cwCQRW1pdHMgW2BFdmVudDo6UGFpZGBdIGlmIHN1Y2Nlc3NmdWwuMGNoZWNrX3N0YXR1cwQBFGluZGV4OAEoU3BlbmRJbmRleAAHTCkBQ2hlY2sgdGhlIHN0YXR1cyBvZiB0aGUgc3BlbmQgYW5kIHJlbW92ZSBpdCBmcm9tIHRoZSBzdG9yYWdlIGlmIHByb2Nlc3NlZC4ASCMjIERpc3BhdGNoIE9yaWdpbgA8TXVzdCBiZSBzaWduZWQuACgjIyBEZXRhaWxzAAEBVGhlIHN0YXR1cyBjaGVjayBpcyBhIHByZXJlcXVpc2l0ZSBmb3IgcmV0cnlpbmcgYSBmYWlsZWQgcGF5b3V0LkkBSWYgYSBzcGVuZCBoYXMgZWl0aGVyIHN1Y2NlZWRlZCBvciBleHBpcmVkLCBpdCBpcyByZW1vdmVkIGZyb20gdGhlIHN0b3JhZ2UgYnkgdGhpc+xmdW5jdGlvbi4gSW4gc3VjaCBpbnN0YW5jZXMsIHRyYW5zYWN0aW9uIGZlZXMgYXJlIHJlZnVuZGVkLgA4IyMjIFBhcmFtZXRlcnNsLSBgaW5kZXhgOiBUaGUgc3BlbmQgaW5kZXguACQjIyBFdmVudHMA+EVtaXRzIFtgRXZlbnQ6OlBheW1lbnRGYWlsZWRgXSBpZiB0aGUgc3BlbmQgcGF5b3V0IGhhcyBmYWlsZWQuAQFFbWl0cyBbYEV2ZW50OjpTcGVuZFByb2Nlc3NlZGBdIGlmIHRoZSBzcGVuZCBwYXlvdXQgaGFzIHN1Y2NlZWQuKHZvaWRfc3BlbmQEARRpbmRleDgBKFNwZW5kSW5kZXgACEB8Vm9pZCBwcmV2aW91c2x5IGFwcHJvdmVkIHNwZW5kLgBIIyMgRGlzcGF0Y2ggT3JpZ2luAIRNdXN0IGJlIFtgQ29uZmlnOjpSZWplY3RPcmlnaW5gXS4AKCMjIERldGFpbHMAHQFBIHNwZW5kIHZvaWQgaXMgb25seSBwb3NzaWJsZSBpZiB0aGUgcGF5b3V0IGhhcyBub3QgYmVlbiBhdHRlbXB0ZWQgeWV0LgA4IyMjIFBhcmFtZXRlcnNsLSBgaW5kZXhgOiBUaGUgc3BlbmQgaW5kZXguACQjIyBFdmVudHMAwEVtaXRzIFtgRXZlbnQ6OkFzc2V0U3BlbmRWb2lkZWRgXSBpZiBzdWNjZXNzZnVsLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy7pBAxccG9sa2Fkb3RfcnVudGltZV9jb21tb24UaW1wbHNcVmVyc2lvbmVkTG9jYXRhYmxlQXNzZXQAAQwIVjMIASBsb2NhdGlvbs0BAUR4Y206OnYzOjpMb2NhdGlvbgABIGFzc2V0X2lkbQIBQHhjbTo6djM6OkFzc2V0SWQAAwAIVjQIASBsb2NhdGlvbukBAUR4Y206OnY0OjpMb2NhdGlvbgABIGFzc2V0X2lk4QIBQHhjbTo6djQ6OkFzc2V0SWQABAAIVjUIASBsb2NhdGlvbh0CAUR4Y206OnY1OjpMb2NhdGlvbgABIGFzc2V0X2lkLQMBQHhjbTo6djU6OkFzc2V0SWQABQAA7QQMRHBhcmFjaGFpbnNfY29tbW9uDHBheWRWZXJzaW9uZWRMb2NhdGFibGVBY2NvdW50AAEICFY0CAEgbG9jYXRpb27pAQFEeGNtOjp2NDo6TG9jYXRpb24AAShhY2NvdW50X2lk6QEBRHhjbTo6djQ6OkxvY2F0aW9uAAQACFY1CAEgbG9jYXRpb24dAgFEeGNtOjp2NTo6TG9jYXRpb24AAShhY2NvdW50X2lkHQIBRHhjbTo6djU6OkxvY2F0aW9uAAUAAPEEDGBwYWxsZXRfY29udmljdGlvbl92b3RpbmcYcGFsbGV0EENhbGwIBFQABEkAARgQdm90ZQgBKHBvbGxfaW5kZXhkAURQb2xsSW5kZXhPZjxULCBJPgABEHZvdGX1BAFwQWNjb3VudFZvdGU8QmFsYW5jZU9mPFQsIEk+PgAAJBkBVm90ZSBpbiBhIHBvbGwuIElmIGB2b3RlLmlzX2F5ZSgpYCwgdGhlIHZvdGUgaXMgdG8gZW5hY3QgdGhlIHByb3Bvc2FsO7hvdGhlcndpc2UgaXQgaXMgYSB2b3RlIHRvIGtlZXAgdGhlIHN0YXR1cyBxdW8uAMhUaGUgZGlzcGF0Y2ggb3JpZ2luIG9mIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLgDILSBgcG9sbF9pbmRleGA6IFRoZSBpbmRleCBvZiB0aGUgcG9sbCB0byB2b3RlIGZvci6ELSBgdm90ZWA6IFRoZSB2b3RlIGNvbmZpZ3VyYXRpb24uABUBV2VpZ2h0OiBgTyhSKWAgd2hlcmUgUiBpcyB0aGUgbnVtYmVyIG9mIHBvbGxzIHRoZSB2b3RlciBoYXMgdm90ZWQgb24uIGRlbGVnYXRlEAEUY2xhc3PtAwE0Q2xhc3NPZjxULCBJPgABCHRvAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AAShjb252aWN0aW9u/QQBKENvbnZpY3Rpb24AARxiYWxhbmNlWQEBPEJhbGFuY2VPZjxULCBJPgABXE0BRGVsZWdhdGUgdGhlIHZvdGluZyBwb3dlciAod2l0aCBzb21lIGdpdmVuIGNvbnZpY3Rpb24pIG9mIHRoZSBzZW5kaW5nIGFjY291bnQgZm9yIGFocGFydGljdWxhciBjbGFzcyBvZiBwb2xscy4AVQFUaGUgYmFsYW5jZSBkZWxlZ2F0ZWQgaXMgbG9ja2VkIGZvciBhcyBsb25nIGFzIGl0J3MgZGVsZWdhdGVkLCBhbmQgdGhlcmVhZnRlciBmb3IgdGhlyHRpbWUgYXBwcm9wcmlhdGUgZm9yIHRoZSBjb252aWN0aW9uJ3MgbG9jayBwZXJpb2QuAF0BVGhlIGRpc3BhdGNoIG9yaWdpbiBvZiB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXywgYW5kIHRoZSBzaWduaW5nIGFjY291bnQgbXVzdCBlaXRoZXI6dCAgLSBiZSBkZWxlZ2F0aW5nIGFscmVhZHk7IG9yRQEgIC0gaGF2ZSBubyB2b3RpbmcgYWN0aXZpdHkgKGlmIHRoZXJlIGlzLCB0aGVuIGl0IHdpbGwgbmVlZCB0byBiZSByZW1vdmVkIHRocm91Z2hMICAgIGByZW1vdmVfdm90ZWApLgBFAS0gYHRvYDogVGhlIGFjY291bnQgd2hvc2Ugdm90aW5nIHRoZSBgdGFyZ2V0YCBhY2NvdW50J3Mgdm90aW5nIHBvd2VyIHdpbGwgZm9sbG93Ll0BLSBgY2xhc3NgOiBUaGUgY2xhc3Mgb2YgcG9sbHMgdG8gZGVsZWdhdGUuIFRvIGRlbGVnYXRlIG11bHRpcGxlIGNsYXNzZXMsIG11bHRpcGxlIGNhbGxzgCAgdG8gdGhpcyBmdW5jdGlvbiBhcmUgcmVxdWlyZWQuVQEtIGBjb252aWN0aW9uYDogVGhlIGNvbnZpY3Rpb24gdGhhdCB3aWxsIGJlIGF0dGFjaGVkIHRvIHRoZSBkZWxlZ2F0ZWQgdm90ZXMuIFdoZW4gdGhlQQEgIGFjY291bnQgaXMgdW5kZWxlZ2F0ZWQsIHRoZSBmdW5kcyB3aWxsIGJlIGxvY2tlZCBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgcGVyaW9kLmEBLSBgYmFsYW5jZWA6IFRoZSBhbW91bnQgb2YgdGhlIGFjY291bnQncyBiYWxhbmNlIHRvIGJlIHVzZWQgaW4gZGVsZWdhdGluZy4gVGhpcyBtdXN0IG5vdLQgIGJlIG1vcmUgdGhhbiB0aGUgYWNjb3VudCdzIGN1cnJlbnQgYmFsYW5jZS4ASEVtaXRzIGBEZWxlZ2F0ZWRgLgAlAVdlaWdodDogYE8oUilgIHdoZXJlIFIgaXMgdGhlIG51bWJlciBvZiBwb2xscyB0aGUgdm90ZXIgZGVsZWdhdGluZyB0byBoYXNNASAgdm90ZWQgb24uIFdlaWdodCBpcyBpbml0aWFsbHkgY2hhcmdlZCBhcyBpZiBtYXhpbXVtIHZvdGVzLCBidXQgaXMgcmVmdW5kZWQgbGF0ZXIuKHVuZGVsZWdhdGUEARRjbGFzc+0DATRDbGFzc09mPFQsIEk+AAI4TQFVbmRlbGVnYXRlIHRoZSB2b3RpbmcgcG93ZXIgb2YgdGhlIHNlbmRpbmcgYWNjb3VudCBmb3IgYSBwYXJ0aWN1bGFyIGNsYXNzIG9mIHBvbGxzLgBdAVRva2VucyBtYXkgYmUgdW5sb2NrZWQgZm9sbG93aW5nIG9uY2UgYW4gYW1vdW50IG9mIHRpbWUgY29uc2lzdGVudCB3aXRoIHRoZSBsb2NrIHBlcmlvZAkBb2YgdGhlIGNvbnZpY3Rpb24gd2l0aCB3aGljaCB0aGUgZGVsZWdhdGlvbiB3YXMgaXNzdWVkIGhhcyBwYXNzZWQuAEUBVGhlIGRpc3BhdGNoIG9yaWdpbiBvZiB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXyBhbmQgdGhlIHNpZ25pbmcgYWNjb3VudCBtdXN0IGJlVGN1cnJlbnRseSBkZWxlZ2F0aW5nLgDwLSBgY2xhc3NgOiBUaGUgY2xhc3Mgb2YgcG9sbHMgdG8gcmVtb3ZlIHRoZSBkZWxlZ2F0aW9uIGZyb20uAFBFbWl0cyBgVW5kZWxlZ2F0ZWRgLgAlAVdlaWdodDogYE8oUilgIHdoZXJlIFIgaXMgdGhlIG51bWJlciBvZiBwb2xscyB0aGUgdm90ZXIgZGVsZWdhdGluZyB0byBoYXNNASAgdm90ZWQgb24uIFdlaWdodCBpcyBpbml0aWFsbHkgY2hhcmdlZCBhcyBpZiBtYXhpbXVtIHZvdGVzLCBidXQgaXMgcmVmdW5kZWQgbGF0ZXIuGHVubG9jawgBFGNsYXNz7QMBNENsYXNzT2Y8VCwgST4AARh0YXJnZXQAAVBBY2NvdW50SWRMb29rdXBPZjxUPgADJF0BUmVtb3ZlIHRoZSBsb2NrIGNhdXNlZCBieSBwcmlvciB2b3RpbmcvZGVsZWdhdGluZyB3aGljaCBoYXMgZXhwaXJlZCB3aXRoaW4gYSBwYXJ0aWN1bGFyGGNsYXNzLgDIVGhlIGRpc3BhdGNoIG9yaWdpbiBvZiB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4AoC0gYGNsYXNzYDogVGhlIGNsYXNzIG9mIHBvbGxzIHRvIHVubG9jay64LSBgdGFyZ2V0YDogVGhlIGFjY291bnQgdG8gcmVtb3ZlIHRoZSBsb2NrIG9uLgC8V2VpZ2h0OiBgTyhSKWAgd2l0aCBSIG51bWJlciBvZiB2b3RlIG9mIHRhcmdldC4scmVtb3ZlX3ZvdGUIARRjbGFzcwEFAVRPcHRpb248Q2xhc3NPZjxULCBJPj4AARRpbmRleDgBRFBvbGxJbmRleE9mPFQsIEk+AAR0ZFJlbW92ZSBhIHZvdGUgZm9yIGEgcG9sbC4ADElmOnAtIHRoZSBwb2xsIHdhcyBjYW5jZWxsZWQsIG9yZC0gdGhlIHBvbGwgaXMgb25nb2luZywgb3J4LSB0aGUgcG9sbCBoYXMgZW5kZWQgc3VjaCB0aGF0/CAgLSB0aGUgdm90ZSBvZiB0aGUgYWNjb3VudCB3YXMgaW4gb3Bwb3NpdGlvbiB0byB0aGUgcmVzdWx0OyBvctQgIC0gdGhlcmUgd2FzIG5vIGNvbnZpY3Rpb24gdG8gdGhlIGFjY291bnQncyB2b3RlOyBvcoQgIC0gdGhlIGFjY291bnQgbWFkZSBhIHNwbGl0IHZvdGVdAS4uLnRoZW4gdGhlIHZvdGUgaXMgcmVtb3ZlZCBjbGVhbmx5IGFuZCBhIGZvbGxvd2luZyBjYWxsIHRvIGB1bmxvY2tgIG1heSByZXN1bHQgaW4gbW9yZVhmdW5kcyBiZWluZyBhdmFpbGFibGUuAJBJZiwgaG93ZXZlciwgdGhlIHBvbGwgaGFzIGVuZGVkIGFuZDrsLSBpdCBmaW5pc2hlZCBjb3JyZXNwb25kaW5nIHRvIHRoZSB2b3RlIG9mIHRoZSBhY2NvdW50LCBhbmTcLSB0aGUgYWNjb3VudCBtYWRlIGEgc3RhbmRhcmQgdm90ZSB3aXRoIGNvbnZpY3Rpb24sIGFuZLwtIHRoZSBsb2NrIHBlcmlvZCBvZiB0aGUgY29udmljdGlvbiBpcyBub3Qgb3ZlclkBLi4udGhlbiB0aGUgbG9jayB3aWxsIGJlIGFnZ3JlZ2F0ZWQgaW50byB0aGUgb3ZlcmFsbCBhY2NvdW50J3MgbG9jaywgd2hpY2ggbWF5IGludm9sdmVZASpvdmVybG9ja2luZyogKHdoZXJlIHRoZSB0d28gbG9ja3MgYXJlIGNvbWJpbmVkIGludG8gYSBzaW5nbGUgbG9jayB0aGF0IGlzIHRoZSBtYXhpbXVt5G9mIGJvdGggdGhlIGFtb3VudCBsb2NrZWQgYW5kIHRoZSB0aW1lIGlzIGl0IGxvY2tlZCBmb3IpLgBJAVRoZSBkaXNwYXRjaCBvcmlnaW4gb2YgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8sIGFuZCB0aGUgc2lnbmVyIG11c3QgaGF2ZSBhIHZvdGVwcmVnaXN0ZXJlZCBmb3IgcG9sbCBgaW5kZXhgLgDcLSBgaW5kZXhgOiBUaGUgaW5kZXggb2YgcG9sbCBvZiB0aGUgdm90ZSB0byBiZSByZW1vdmVkLlUBLSBgY2xhc3NgOiBPcHRpb25hbCBwYXJhbWV0ZXIsIGlmIGdpdmVuIGl0IGluZGljYXRlcyB0aGUgY2xhc3Mgb2YgdGhlIHBvbGwuIEZvciBwb2xsc/AgIHdoaWNoIGhhdmUgZmluaXNoZWQgb3IgYXJlIGNhbmNlbGxlZCwgdGhpcyBtdXN0IGJlIGBTb21lYC4ARQFXZWlnaHQ6IGBPKFIgKyBsb2cgUilgIHdoZXJlIFIgaXMgdGhlIG51bWJlciBvZiBwb2xscyB0aGF0IGB0YXJnZXRgIGhhcyB2b3RlZCBvbi7YICBXZWlnaHQgaXMgY2FsY3VsYXRlZCBmb3IgdGhlIG1heGltdW0gbnVtYmVyIG9mIHZvdGUuRHJlbW92ZV9vdGhlcl92b3RlDAEYdGFyZ2V0AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARRjbGFzc+0DATRDbGFzc09mPFQsIEk+AAEUaW5kZXg4AURQb2xsSW5kZXhPZjxULCBJPgAFQGRSZW1vdmUgYSB2b3RlIGZvciBhIHBvbGwuAE0BSWYgdGhlIGB0YXJnZXRgIGlzIGVxdWFsIHRvIHRoZSBzaWduZXIsIHRoZW4gdGhpcyBmdW5jdGlvbiBpcyBleGFjdGx5IGVxdWl2YWxlbnQgdG8tAWByZW1vdmVfdm90ZWAuIElmIG5vdCBlcXVhbCB0byB0aGUgc2lnbmVyLCB0aGVuIHRoZSB2b3RlIG11c3QgaGF2ZSBleHBpcmVkLCUBZWl0aGVyIGJlY2F1c2UgdGhlIHBvbGwgd2FzIGNhbmNlbGxlZCwgYmVjYXVzZSB0aGUgdm90ZXIgbG9zdCB0aGUgcG9sbCBvcphiZWNhdXNlIHRoZSBjb252aWN0aW9uIHBlcmlvZCBpcyBvdmVyLgDIVGhlIGRpc3BhdGNoIG9yaWdpbiBvZiB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4AYQEtIGB0YXJnZXRgOiBUaGUgYWNjb3VudCBvZiB0aGUgdm90ZSB0byBiZSByZW1vdmVkOyB0aGlzIGFjY291bnQgbXVzdCBoYXZlIHZvdGVkIGZvciBwb2xsKCAgYGluZGV4YC7cLSBgaW5kZXhgOiBUaGUgaW5kZXggb2YgcG9sbCBvZiB0aGUgdm90ZSB0byBiZSByZW1vdmVkLoQtIGBjbGFzc2A6IFRoZSBjbGFzcyBvZiB0aGUgcG9sbC4ARQFXZWlnaHQ6IGBPKFIgKyBsb2cgUilgIHdoZXJlIFIgaXMgdGhlIG51bWJlciBvZiBwb2xscyB0aGF0IGB0YXJnZXRgIGhhcyB2b3RlZCBvbi7YICBXZWlnaHQgaXMgY2FsY3VsYXRlZCBmb3IgdGhlIG1heGltdW0gbnVtYmVyIG9mIHZvdGUuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLvUEDGBwYWxsZXRfY29udmljdGlvbl92b3RpbmcQdm90ZSxBY2NvdW50Vm90ZQQcQmFsYW5jZQFZAQEMIFN0YW5kYXJkCAEQdm90ZfkEARBWb3RlAAEcYmFsYW5jZVkBARxCYWxhbmNlAAAAFFNwbGl0CAEMYXllWQEBHEJhbGFuY2UAAQxuYXlZAQEcQmFsYW5jZQABADBTcGxpdEFic3RhaW4MAQxheWVZAQEcQmFsYW5jZQABDG5heVkBARxCYWxhbmNlAAEcYWJzdGFpblkBARxCYWxhbmNlAAIAAPkEDGBwYWxsZXRfY29udmljdGlvbl92b3RpbmcQdm90ZRBWb3RlAAAEAAwAAAD9BAxgcGFsbGV0X2NvbnZpY3Rpb25fdm90aW5nKGNvbnZpY3Rpb24oQ29udmljdGlvbgABHBBOb25lAAAAIExvY2tlZDF4AAEAIExvY2tlZDJ4AAIAIExvY2tlZDN4AAMAIExvY2tlZDR4AAQAIExvY2tlZDV4AAUAIExvY2tlZDZ4AAYAAAEFBBhPcHRpb24EBFQB7QMBCBBOb25lAAAAEFNvbWUEAO0DAAABAAAFBQxAcGFsbGV0X3JlZmVyZW5kYRhwYWxsZXQQQ2FsbAgEVAAESQABJBhzdWJtaXQMATxwcm9wb3NhbF9vcmlnaW7xAwFcQm94PFBhbGxldHNPcmlnaW5PZjxUPj4AASBwcm9wb3NhbAkFAUxCb3VuZGVkQ2FsbE9mPFQsIEk+AAFAZW5hY3RtZW50X21vbWVudBEFAYhEaXNwYXRjaFRpbWU8QmxvY2tOdW1iZXJGb3I8VCwgST4+AAAksFByb3Bvc2UgYSByZWZlcmVuZHVtIG9uIGEgcHJpdmlsZWdlZCBhY3Rpb24uAFkBLSBgb3JpZ2luYDogbXVzdCBiZSBgU3VibWl0T3JpZ2luYCBhbmQgdGhlIGFjY291bnQgbXVzdCBoYXZlIGBTdWJtaXNzaW9uRGVwb3NpdGAgZnVuZHMwICBhdmFpbGFibGUuLQEtIGBwcm9wb3NhbF9vcmlnaW5gOiBUaGUgb3JpZ2luIGZyb20gd2hpY2ggdGhlIHByb3Bvc2FsIHNob3VsZCBiZSBleGVjdXRlZC5sLSBgcHJvcG9zYWxgOiBUaGUgcHJvcG9zYWwuFQEtIGBlbmFjdG1lbnRfbW9tZW50YDogVGhlIG1vbWVudCB0aGF0IHRoZSBwcm9wb3NhbCBzaG91bGQgYmUgZW5hY3RlZC4ASEVtaXRzIGBTdWJtaXR0ZWRgLlhwbGFjZV9kZWNpc2lvbl9kZXBvc2l0BAEUaW5kZXg4ATxSZWZlcmVuZHVtSW5kZXgAASCsUG9zdCB0aGUgRGVjaXNpb24gRGVwb3NpdCBmb3IgYSByZWZlcmVuZHVtLgA5AS0gYG9yaWdpbmA6IG11c3QgYmUgYFNpZ25lZGAgYW5kIHRoZSBhY2NvdW50IG11c3QgaGF2ZSBmdW5kcyBhdmFpbGFibGUgZm9yIHRoZaAgIHJlZmVyZW5kdW0ncyB0cmFjaydzIERlY2lzaW9uIERlcG9zaXQuUQEtIGBpbmRleGA6IFRoZSBpbmRleCBvZiB0aGUgc3VibWl0dGVkIHJlZmVyZW5kdW0gd2hvc2UgRGVjaXNpb24gRGVwb3NpdCBpcyB5ZXQgdG8gYmUkICBwb3N0ZWQuAHhFbWl0cyBgRGVjaXNpb25EZXBvc2l0UGxhY2VkYC5ccmVmdW5kX2RlY2lzaW9uX2RlcG9zaXQEARRpbmRleDgBPFJlZmVyZW5kdW1JbmRleAACHCkBUmVmdW5kIHRoZSBEZWNpc2lvbiBEZXBvc2l0IGZvciBhIGNsb3NlZCByZWZlcmVuZHVtIGJhY2sgdG8gdGhlIGRlcG9zaXRvci4AnC0gYG9yaWdpbmA6IG11c3QgYmUgYFNpZ25lZGAgb3IgYFJvb3RgLk0BLSBgaW5kZXhgOiBUaGUgaW5kZXggb2YgYSBjbG9zZWQgcmVmZXJlbmR1bSB3aG9zZSBEZWNpc2lvbiBEZXBvc2l0IGhhcyBub3QgeWV0IGJlZW4sICByZWZ1bmRlZC4AgEVtaXRzIGBEZWNpc2lvbkRlcG9zaXRSZWZ1bmRlZGAuGGNhbmNlbAQBFGluZGV4OAE8UmVmZXJlbmR1bUluZGV4AAMYdENhbmNlbCBhbiBvbmdvaW5nIHJlZmVyZW5kdW0uAJwtIGBvcmlnaW5gOiBtdXN0IGJlIHRoZSBgQ2FuY2VsT3JpZ2luYC7cLSBgaW5kZXhgOiBUaGUgaW5kZXggb2YgdGhlIHJlZmVyZW5kdW0gdG8gYmUgY2FuY2VsbGVkLgBIRW1pdHMgYENhbmNlbGxlZGAuEGtpbGwEARRpbmRleDgBPFJlZmVyZW5kdW1JbmRleAAEGNBDYW5jZWwgYW4gb25nb2luZyByZWZlcmVuZHVtIGFuZCBzbGFzaCB0aGUgZGVwb3NpdHMuAJQtIGBvcmlnaW5gOiBtdXN0IGJlIHRoZSBgS2lsbE9yaWdpbmAu3C0gYGluZGV4YDogVGhlIGluZGV4IG9mIHRoZSByZWZlcmVuZHVtIHRvIGJlIGNhbmNlbGxlZC4AkEVtaXRzIGBLaWxsZWRgIGFuZCBgRGVwb3NpdFNsYXNoZWRgLkBudWRnZV9yZWZlcmVuZHVtBAEUaW5kZXg4ATxSZWZlcmVuZHVtSW5kZXgABRAdAUFkdmFuY2UgYSByZWZlcmVuZHVtIG9udG8gaXRzIG5leHQgbG9naWNhbCBzdGF0ZS4gT25seSB1c2VkIGludGVybmFsbHkuAGwtIGBvcmlnaW5gOiBtdXN0IGJlIGBSb290YC6kLSBgaW5kZXhgOiB0aGUgcmVmZXJlbmR1bSB0byBiZSBhZHZhbmNlZC5Ib25lX2Zld2VyX2RlY2lkaW5nBAEUdHJhY2vtAwE8VHJhY2tJZE9mPFQsIEk+AAYkCQFBZHZhbmNlIGEgdHJhY2sgb250byBpdHMgbmV4dCBsb2dpY2FsIHN0YXRlLiBPbmx5IHVzZWQgaW50ZXJuYWxseS4AbC0gYG9yaWdpbmA6IG11c3QgYmUgYFJvb3RgLpAtIGB0cmFja2A6IHRoZSB0cmFjayB0byBiZSBhZHZhbmNlZC4AUQFBY3Rpb24gaXRlbSBmb3Igd2hlbiB0aGVyZSBpcyBub3cgb25lIGZld2VyIHJlZmVyZW5kdW0gaW4gdGhlIGRlY2lkaW5nIHBoYXNlIGFuZCB0aGUVAWBEZWNpZGluZ0NvdW50YCBpcyBub3QgeWV0IHVwZGF0ZWQuIFRoaXMgbWVhbnMgdGhhdCB3ZSBzaG91bGQgZWl0aGVyOiUBLSBiZWdpbiBkZWNpZGluZyBhbm90aGVyIHJlZmVyZW5kdW0gKGFuZCBsZWF2ZSBgRGVjaWRpbmdDb3VudGAgYWxvbmUpOyBvcnAtIGRlY3JlbWVudCBgRGVjaWRpbmdDb3VudGAuZHJlZnVuZF9zdWJtaXNzaW9uX2RlcG9zaXQEARRpbmRleDgBPFJlZmVyZW5kdW1JbmRleAAHHDEBUmVmdW5kIHRoZSBTdWJtaXNzaW9uIERlcG9zaXQgZm9yIGEgY2xvc2VkIHJlZmVyZW5kdW0gYmFjayB0byB0aGUgZGVwb3NpdG9yLgCcLSBgb3JpZ2luYDogbXVzdCBiZSBgU2lnbmVkYCBvciBgUm9vdGAuVQEtIGBpbmRleGA6IFRoZSBpbmRleCBvZiBhIGNsb3NlZCByZWZlcmVuZHVtIHdob3NlIFN1Ym1pc3Npb24gRGVwb3NpdCBoYXMgbm90IHlldCBiZWVuLCAgcmVmdW5kZWQuAIhFbWl0cyBgU3VibWlzc2lvbkRlcG9zaXRSZWZ1bmRlZGAuMHNldF9tZXRhZGF0YQgBFGluZGV4OAE8UmVmZXJlbmR1bUluZGV4AAEobWF5YmVfaGFzaBUFATxPcHRpb248VDo6SGFzaD4ACByYU2V0IG9yIGNsZWFyIG1ldGFkYXRhIG9mIGEgcmVmZXJlbmR1bS4ALFBhcmFtZXRlcnM6RQEtIGBvcmlnaW5gOiBNdXN0IGJlIGBTaWduZWRgIGJ5IGEgY3JlYXRvciBvZiBhIHJlZmVyZW5kdW0gb3IgYnkgYW55b25lIHRvIGNsZWFyIGGQICBtZXRhZGF0YSBvZiBhIGZpbmlzaGVkIHJlZmVyZW5kdW0uDQEtIGBpbmRleGA6ICBUaGUgaW5kZXggb2YgYSByZWZlcmVuZHVtIHRvIHNldCBvciBjbGVhciBtZXRhZGF0YSBmb3IuUQEtIGBtYXliZV9oYXNoYDogVGhlIGhhc2ggb2YgYW4gb24tY2hhaW4gc3RvcmVkIHByZWltYWdlLiBgTm9uZWAgdG8gY2xlYXIgYSBtZXRhZGF0YS4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuCQUQNGZyYW1lX3N1cHBvcnQYdHJhaXRzJHByZWltYWdlcxxCb3VuZGVkCARUASAESAENBQEMGExlZ2FjeQQBEGhhc2hAASRIOjpPdXRwdXQAAAAYSW5saW5lBABhBAE0Qm91bmRlZElubGluZQABABhMb29rdXAIARBoYXNoQAEkSDo6T3V0cHV0AAEMbGVuOAEMdTMyAAIAAA0FDChzcF9ydW50aW1lGHRyYWl0cyxCbGFrZVR3bzI1NgAAAAARBRA0ZnJhbWVfc3VwcG9ydBh0cmFpdHMgc2NoZWR1bGUwRGlzcGF0Y2hUaW1lBCxCbG9ja051bWJlcgE4AQgIQXQEADgBLEJsb2NrTnVtYmVyAAAAFEFmdGVyBAA4ASxCbG9ja051bWJlcgABAAAVBQQYT3B0aW9uBARUAUABCBBOb25lAAAAEFNvbWUEAEAAAAEAABkFDEBwYWxsZXRfd2hpdGVsaXN0GHBhbGxldBBDYWxsBARUAAEQOHdoaXRlbGlzdF9jYWxsBAEkY2FsbF9oYXNoQAEcVDo6SGFzaAAAAFxyZW1vdmVfd2hpdGVsaXN0ZWRfY2FsbAQBJGNhbGxfaGFzaEABHFQ6Okhhc2gAAQBkZGlzcGF0Y2hfd2hpdGVsaXN0ZWRfY2FsbAwBJGNhbGxfaGFzaEABHFQ6Okhhc2gAAUBjYWxsX2VuY29kZWRfbGVuOAEMdTMyAAFMY2FsbF93ZWlnaHRfd2l0bmVzcxUBARhXZWlnaHQAAgCcZGlzcGF0Y2hfd2hpdGVsaXN0ZWRfY2FsbF93aXRoX3ByZWltYWdlBAEQY2FsbCABfEJveDw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4AAwAEDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuHQUMPHBhbGxldF9ib3VudGllcxhwYWxsZXQQQ2FsbAgEVAAESQABLDhwcm9wb3NlX2JvdW50eQgBFHZhbHVlVQEBPEJhbGFuY2VPZjxULCBJPgABLGRlc2NyaXB0aW9uGAEcVmVjPHU4PgAAMFRQcm9wb3NlIGEgbmV3IGJvdW50eS4AzFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLgBRAVBheW1lbnQ6IGBUaXBSZXBvcnREZXBvc2l0QmFzZWAgd2lsbCBiZSByZXNlcnZlZCBmcm9tIHRoZSBvcmlnaW4gYWNjb3VudCwgYXMgd2VsbCBhc1EBYERhdGFEZXBvc2l0UGVyQnl0ZWAgZm9yIGVhY2ggYnl0ZSBpbiBgcmVhc29uYC4gSXQgd2lsbCBiZSB1bnJlc2VydmVkIHVwb24gYXBwcm92YWwsZG9yIHNsYXNoZWQgd2hlbiByZWplY3RlZC4A+C0gYGN1cmF0b3JgOiBUaGUgY3VyYXRvciBhY2NvdW50IHdob20gd2lsbCBtYW5hZ2UgdGhpcyBib3VudHkuZC0gYGZlZWA6IFRoZSBjdXJhdG9yIGZlZS4lAS0gYHZhbHVlYDogVGhlIHRvdGFsIHBheW1lbnQgYW1vdW50IG9mIHRoaXMgYm91bnR5LCBjdXJhdG9yIGZlZSBpbmNsdWRlZC7ALSBgZGVzY3JpcHRpb25gOiBUaGUgZGVzY3JpcHRpb24gb2YgdGhpcyBib3VudHkuOGFwcHJvdmVfYm91bnR5BAEkYm91bnR5X2lkZAEsQm91bnR5SW5kZXgAARxdAUFwcHJvdmUgYSBib3VudHkgcHJvcG9zYWwuIEF0IGEgbGF0ZXIgdGltZSwgdGhlIGJvdW50eSB3aWxsIGJlIGZ1bmRlZCBhbmQgYmVjb21lIGFjdGl2ZahhbmQgdGhlIG9yaWdpbmFsIGRlcG9zaXQgd2lsbCBiZSByZXR1cm5lZC4ApE1heSBvbmx5IGJlIGNhbGxlZCBmcm9tIGBUOjpTcGVuZE9yaWdpbmAuADQjIyBDb21wbGV4aXR5HC0gTygxKS48cHJvcG9zZV9jdXJhdG9yDAEkYm91bnR5X2lkZAEsQm91bnR5SW5kZXgAARxjdXJhdG9yAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AAQxmZWVVAQE8QmFsYW5jZU9mPFQsIEk+AAIYlFByb3Bvc2UgYSBjdXJhdG9yIHRvIGEgZnVuZGVkIGJvdW50eS4ApE1heSBvbmx5IGJlIGNhbGxlZCBmcm9tIGBUOjpTcGVuZE9yaWdpbmAuADQjIyBDb21wbGV4aXR5HC0gTygxKS5AdW5hc3NpZ25fY3VyYXRvcgQBJGJvdW50eV9pZGQBLEJvdW50eUluZGV4AANEfFVuYXNzaWduIGN1cmF0b3IgZnJvbSBhIGJvdW50eS4AHQFUaGlzIGZ1bmN0aW9uIGNhbiBvbmx5IGJlIGNhbGxlZCBieSB0aGUgYFJlamVjdE9yaWdpbmAgYSBzaWduZWQgb3JpZ2luLgA9AUlmIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGJ5IHRoZSBgUmVqZWN0T3JpZ2luYCwgd2UgYXNzdW1lIHRoYXQgdGhlIGN1cmF0b3IgaXMxAW1hbGljaW91cyBvciBpbmFjdGl2ZS4gQXMgYSByZXN1bHQsIHdlIHdpbGwgc2xhc2ggdGhlIGN1cmF0b3Igd2hlbiBwb3NzaWJsZS4AYQFJZiB0aGUgb3JpZ2luIGlzIHRoZSBjdXJhdG9yLCB3ZSB0YWtlIHRoaXMgYXMgYSBzaWduIHRoZXkgYXJlIHVuYWJsZSB0byBkbyB0aGVpciBqb2IgYW5kXQF0aGV5IHdpbGxpbmdseSBnaXZlIHVwLiBXZSBjb3VsZCBzbGFzaCB0aGVtLCBidXQgZm9yIG5vdyB3ZSBhbGxvdyB0aGVtIHRvIHJlY292ZXIgdGhlaXI1AWRlcG9zaXQgYW5kIGV4aXQgd2l0aG91dCBpc3N1ZS4gKFdlIG1heSB3YW50IHRvIGNoYW5nZSB0aGlzIGlmIGl0IGlzIGFidXNlZC4pAF0BRmluYWxseSwgdGhlIG9yaWdpbiBjYW4gYmUgYW55b25lIGlmIGFuZCBvbmx5IGlmIHRoZSBjdXJhdG9yIGlzICJpbmFjdGl2ZSIuIFRoaXMgYWxsb3dzYQFhbnlvbmUgaW4gdGhlIGNvbW11bml0eSB0byBjYWxsIG91dCB0aGF0IGEgY3VyYXRvciBpcyBub3QgZG9pbmcgdGhlaXIgZHVlIGRpbGlnZW5jZSwgYW5kOQF3ZSBzaG91bGQgcGljayBhIG5ldyBjdXJhdG9yLiBJbiB0aGlzIGNhc2UgdGhlIGN1cmF0b3Igc2hvdWxkIGFsc28gYmUgc2xhc2hlZC4ANCMjIENvbXBsZXhpdHkcLSBPKDEpLjhhY2NlcHRfY3VyYXRvcgQBJGJvdW50eV9pZGQBLEJvdW50eUluZGV4AAQclEFjY2VwdCB0aGUgY3VyYXRvciByb2xlIGZvciBhIGJvdW50eS4pAUEgZGVwb3NpdCB3aWxsIGJlIHJlc2VydmVkIGZyb20gY3VyYXRvciBhbmQgcmVmdW5kIHVwb24gc3VjY2Vzc2Z1bCBwYXlvdXQuAJBNYXkgb25seSBiZSBjYWxsZWQgZnJvbSB0aGUgY3VyYXRvci4ANCMjIENvbXBsZXhpdHkcLSBPKDEpLjBhd2FyZF9ib3VudHkIASRib3VudHlfaWRkASxCb3VudHlJbmRleAABLGJlbmVmaWNpYXJ5AAFQQWNjb3VudElkTG9va3VwT2Y8VD4ABShZAUF3YXJkIGJvdW50eSB0byBhIGJlbmVmaWNpYXJ5IGFjY291bnQuIFRoZSBiZW5lZmljaWFyeSB3aWxsIGJlIGFibGUgdG8gY2xhaW0gdGhlIGZ1bmRzOGFmdGVyIGEgZGVsYXkuABUBVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgdGhlIGN1cmF0b3Igb2YgdGhpcyBib3VudHkuAIgtIGBib3VudHlfaWRgOiBCb3VudHkgSUQgdG8gYXdhcmQuGQEtIGBiZW5lZmljaWFyeWA6IFRoZSBiZW5lZmljaWFyeSBhY2NvdW50IHdob20gd2lsbCByZWNlaXZlIHRoZSBwYXlvdXQuADQjIyBDb21wbGV4aXR5HC0gTygxKS4wY2xhaW1fYm91bnR5BAEkYm91bnR5X2lkZAEsQm91bnR5SW5kZXgABiDsQ2xhaW0gdGhlIHBheW91dCBmcm9tIGFuIGF3YXJkZWQgYm91bnR5IGFmdGVyIHBheW91dCBkZWxheS4AJQFUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSB0aGUgYmVuZWZpY2lhcnkgb2YgdGhpcyBib3VudHkuAIgtIGBib3VudHlfaWRgOiBCb3VudHkgSUQgdG8gY2xhaW0uADQjIyBDb21wbGV4aXR5HC0gTygxKS4wY2xvc2VfYm91bnR5BAEkYm91bnR5X2lkZAEsQm91bnR5SW5kZXgAByQ5AUNhbmNlbCBhIHByb3Bvc2VkIG9yIGFjdGl2ZSBib3VudHkuIEFsbCB0aGUgZnVuZHMgd2lsbCBiZSBzZW50IHRvIHRyZWFzdXJ5IGFuZMx0aGUgY3VyYXRvciBkZXBvc2l0IHdpbGwgYmUgdW5yZXNlcnZlZCBpZiBwb3NzaWJsZS4AyE9ubHkgYFQ6OlJlamVjdE9yaWdpbmAgaXMgYWJsZSB0byBjYW5jZWwgYSBib3VudHkuAIwtIGBib3VudHlfaWRgOiBCb3VudHkgSUQgdG8gY2FuY2VsLgA0IyMgQ29tcGxleGl0eRwtIE8oMSkuUGV4dGVuZF9ib3VudHlfZXhwaXJ5CAEkYm91bnR5X2lkZAEsQm91bnR5SW5kZXgAARhyZW1hcmsYARxWZWM8dTg+AAgkrEV4dGVuZCB0aGUgZXhwaXJ5IHRpbWUgb2YgYW4gYWN0aXZlIGJvdW50eS4AFQFUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSB0aGUgY3VyYXRvciBvZiB0aGlzIGJvdW50eS4AjC0gYGJvdW50eV9pZGA6IEJvdW50eSBJRCB0byBleHRlbmQujC0gYHJlbWFya2A6IGFkZGl0aW9uYWwgaW5mb3JtYXRpb24uADQjIyBDb21wbGV4aXR5HC0gTygxKS5sYXBwcm92ZV9ib3VudHlfd2l0aF9jdXJhdG9yDAEkYm91bnR5X2lkZAEsQm91bnR5SW5kZXgAARxjdXJhdG9yAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AAQxmZWVVAQE8QmFsYW5jZU9mPFQsIEk+AAks1EFwcHJvdmUgYm91bnRyeSBhbmQgcHJvcG9zZSBhIGN1cmF0b3Igc2ltdWx0YW5lb3VzbHkuVQFUaGlzIGNhbGwgaXMgYSBzaG9ydGN1dCB0byBjYWxsaW5nIGBhcHByb3ZlX2JvdW50eWAgYW5kIGBwcm9wb3NlX2N1cmF0b3JgIHNlcGFyYXRlbHkuAKRNYXkgb25seSBiZSBjYWxsZWQgZnJvbSBgVDo6U3BlbmRPcmlnaW5gLgCQLSBgYm91bnR5X2lkYDogQm91bnR5IElEIHRvIGFwcHJvdmUu+C0gYGN1cmF0b3JgOiBUaGUgY3VyYXRvciBhY2NvdW50IHdob20gd2lsbCBtYW5hZ2UgdGhpcyBib3VudHkuZC0gYGZlZWA6IFRoZSBjdXJhdG9yIGZlZS4ANCMjIENvbXBsZXhpdHkcLSBPKDEpLjBwb2tlX2RlcG9zaXQEASRib3VudHlfaWRkASxCb3VudHlJbmRleAAKPORQb2tlIHRoZSBkZXBvc2l0IHJlc2VydmVkIGZvciBjcmVhdGluZyBhIGJvdW50eSBwcm9wb3NhbC4A9FRoaXMgY2FuIGJlIHVzZWQgYnkgYWNjb3VudHMgdG8gdXBkYXRlIHRoZWlyIHJlc2VydmVkIGFtb3VudC4AzFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLgAsUGFyYW1ldGVyczr0LSBgYm91bnR5X2lkYDogVGhlIGJvdW50eSBpZCBmb3Igd2hpY2ggdG8gYWRqdXN0IHRoZSBkZXBvc2l0LgA5AUlmIHRoZSBkZXBvc2l0IGlzIHVwZGF0ZWQsIHRoZSBkaWZmZXJlbmNlIHdpbGwgYmUgcmVzZXJ2ZWQvdW5yZXNlcnZlZCBmcm9tIHRoZUxwcm9wb3NlcidzIGFjY291bnQuACkBVGhlIHRyYW5zYWN0aW9uIGlzIG1hZGUgZnJlZSBpZiB0aGUgZGVwb3NpdCBpcyB1cGRhdGVkIGFuZCBwYWlkIG90aGVyd2lzZS4AvEVtaXRzIGBEZXBvc2l0UG9rZWRgIGlmIHRoZSBkZXBvc2l0IGlzIHVwZGF0ZWQuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLiEFDFRwYWxsZXRfY2hpbGRfYm91bnRpZXMYcGFsbGV0EENhbGwEBFQAARxAYWRkX2NoaWxkX2JvdW50eQwBQHBhcmVudF9ib3VudHlfaWRkASxCb3VudHlJbmRleAABFHZhbHVlVQEBMEJhbGFuY2VPZjxUPgABLGRlc2NyaXB0aW9uGAEcVmVjPHU4PgAATFxBZGQgYSBuZXcgY2hpbGQtYm91bnR5LgD8VGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgdGhlIGN1cmF0b3Igb2YgcGFyZW503GJvdW50eSBhbmQgdGhlIHBhcmVudCBib3VudHkgbXVzdCBiZSBpbiAiYWN0aXZlIiBzdGF0ZS4ABQFDaGlsZC1ib3VudHkgZ2V0cyBhZGRlZCBzdWNjZXNzZnVsbHkgJiBmdW5kIGdldHMgdHJhbnNmZXJyZWQgZnJvbQkBcGFyZW50IGJvdW50eSB0byBjaGlsZC1ib3VudHkgYWNjb3VudCwgaWYgcGFyZW50IGJvdW50eSBoYXMgZW5vdWdobGZ1bmRzLCBlbHNlIHRoZSBjYWxsIGZhaWxzLgANAVVwcGVyIGJvdW5kIHRvIG1heGltdW0gbnVtYmVyIG9mIGFjdGl2ZSAgY2hpbGQgYm91bnRpZXMgdGhhdCBjYW4gYmWoYWRkZWQgYXJlIG1hbmFnZWQgdmlhIHJ1bnRpbWUgdHJhaXQgY29uZmlnmFtgQ29uZmlnOjpNYXhBY3RpdmVDaGlsZEJvdW50eUNvdW50YF0uAAEBSWYgdGhlIGNhbGwgaXMgc3VjY2VzcywgdGhlIHN0YXR1cyBvZiBjaGlsZC1ib3VudHkgaXMgdXBkYXRlZCB0byAiQWRkZWQiLgBNAS0gYHBhcmVudF9ib3VudHlfaWRgOiBJbmRleCBvZiBwYXJlbnQgYm91bnR5IGZvciB3aGljaCBjaGlsZC1ib3VudHkgaXMgYmVpbmcgYWRkZWQusC0gYHZhbHVlYDogVmFsdWUgZm9yIGV4ZWN1dGluZyB0aGUgcHJvcG9zYWwu3C0gYGRlc2NyaXB0aW9uYDogVGV4dCBkZXNjcmlwdGlvbiBmb3IgdGhlIGNoaWxkLWJvdW50eS48cHJvcG9zZV9jdXJhdG9yEAFAcGFyZW50X2JvdW50eV9pZGQBLEJvdW50eUluZGV4AAE8Y2hpbGRfYm91bnR5X2lkZAEsQm91bnR5SW5kZXgAARxjdXJhdG9yAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AAQxmZWVVAQEwQmFsYW5jZU9mPFQ+AAE8oFByb3Bvc2UgY3VyYXRvciBmb3IgZnVuZGVkIGNoaWxkLWJvdW50eS4ADQFUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBjdXJhdG9yIG9mIHBhcmVudCBib3VudHkuABEBUGFyZW50IGJvdW50eSBtdXN0IGJlIGluIGFjdGl2ZSBzdGF0ZSwgZm9yIHRoaXMgY2hpbGQtYm91bnR5IGNhbGwgdG8Ud29yay4ADQFDaGlsZC1ib3VudHkgbXVzdCBiZSBpbiAiQWRkZWQiIHN0YXRlLCBmb3IgcHJvY2Vzc2luZyB0aGUgY2FsbC4gQW5kBQFzdGF0ZSBvZiBjaGlsZC1ib3VudHkgaXMgbW92ZWQgdG8gIkN1cmF0b3JQcm9wb3NlZCIgb24gc3VjY2Vzc2Z1bEBjYWxsIGNvbXBsZXRpb24uALQtIGBwYXJlbnRfYm91bnR5X2lkYDogSW5kZXggb2YgcGFyZW50IGJvdW50eS6sLSBgY2hpbGRfYm91bnR5X2lkYDogSW5kZXggb2YgY2hpbGQgYm91bnR5LrQtIGBjdXJhdG9yYDogQWRkcmVzcyBvZiBjaGlsZC1ib3VudHkgY3VyYXRvci7sLSBgZmVlYDogcGF5bWVudCBmZWUgdG8gY2hpbGQtYm91bnR5IGN1cmF0b3IgZm9yIGV4ZWN1dGlvbi44YWNjZXB0X2N1cmF0b3IIAUBwYXJlbnRfYm91bnR5X2lkZAEsQm91bnR5SW5kZXgAATxjaGlsZF9ib3VudHlfaWRkASxCb3VudHlJbmRleAACTLRBY2NlcHQgdGhlIGN1cmF0b3Igcm9sZSBmb3IgdGhlIGNoaWxkLWJvdW50eS4A9FRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIHRoZSBjdXJhdG9yIG9mIHRoaXM0Y2hpbGQtYm91bnR5LgDsQSBkZXBvc2l0IHdpbGwgYmUgcmVzZXJ2ZWQgZnJvbSB0aGUgY3VyYXRvciBhbmQgcmVmdW5kIHVwb26Ic3VjY2Vzc2Z1bCBwYXlvdXQgb3IgY2FuY2VsbGF0aW9uLgD4RmVlIGZvciBjdXJhdG9yIGlzIGRlZHVjdGVkIGZyb20gY3VyYXRvciBmZWUgb2YgcGFyZW50IGJvdW50eS4AEQFQYXJlbnQgYm91bnR5IG11c3QgYmUgaW4gYWN0aXZlIHN0YXRlLCBmb3IgdGhpcyBjaGlsZC1ib3VudHkgY2FsbCB0bxR3b3JrLgANAUNoaWxkLWJvdW50eSBtdXN0IGJlIGluICJDdXJhdG9yUHJvcG9zZWQiIHN0YXRlLCBmb3IgcHJvY2Vzc2luZyB0aGUJAWNhbGwuIEFuZCBzdGF0ZSBvZiBjaGlsZC1ib3VudHkgaXMgbW92ZWQgdG8gIkFjdGl2ZSIgb24gc3VjY2Vzc2Z1bEBjYWxsIGNvbXBsZXRpb24uALQtIGBwYXJlbnRfYm91bnR5X2lkYDogSW5kZXggb2YgcGFyZW50IGJvdW50eS6sLSBgY2hpbGRfYm91bnR5X2lkYDogSW5kZXggb2YgY2hpbGQgYm91bnR5LkB1bmFzc2lnbl9jdXJhdG9yCAFAcGFyZW50X2JvdW50eV9pZGQBLEJvdW50eUluZGV4AAE8Y2hpbGRfYm91bnR5X2lkZAEsQm91bnR5SW5kZXgAA4iUVW5hc3NpZ24gY3VyYXRvciBmcm9tIGEgY2hpbGQtYm91bnR5LgAJAVRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBjYW4gYmUgZWl0aGVyIGBSZWplY3RPcmlnaW5gLCBvctx0aGUgY3VyYXRvciBvZiB0aGUgcGFyZW50IGJvdW50eSwgb3IgYW55IHNpZ25lZCBvcmlnaW4uAPhGb3IgdGhlIG9yaWdpbiBvdGhlciB0aGFuIFQ6OlJlamVjdE9yaWdpbiBhbmQgdGhlIGNoaWxkLWJvdW50eQEBY3VyYXRvciwgcGFyZW50IGJvdW50eSBtdXN0IGJlIGluIGFjdGl2ZSBzdGF0ZSwgZm9yIHRoaXMgY2FsbCB0bwkBd29yay4gV2UgYWxsb3cgY2hpbGQtYm91bnR5IGN1cmF0b3IgYW5kIFQ6OlJlamVjdE9yaWdpbiB0byBleGVjdXRlyHRoaXMgY2FsbCBpcnJlc3BlY3RpdmUgb2YgdGhlIHBhcmVudCBib3VudHkgc3RhdGUuANxJZiB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBieSB0aGUgYFJlamVjdE9yaWdpbmAgb3IgdGhlBQFwYXJlbnQgYm91bnR5IGN1cmF0b3IsIHdlIGFzc3VtZSB0aGF0IHRoZSBjaGlsZC1ib3VudHkgY3VyYXRvciBpcw0BbWFsaWNpb3VzIG9yIGluYWN0aXZlLiBBcyBhIHJlc3VsdCwgY2hpbGQtYm91bnR5IGN1cmF0b3IgZGVwb3NpdCBpcyBzbGFzaGVkLgAFAUlmIHRoZSBvcmlnaW4gaXMgdGhlIGNoaWxkLWJvdW50eSBjdXJhdG9yLCB3ZSB0YWtlIHRoaXMgYXMgYSBzaWduCQF0aGF0IHRoZXkgYXJlIHVuYWJsZSB0byBkbyB0aGVpciBqb2IsIGFuZCBhcmUgd2lsbGluZ2x5IGdpdmluZyB1cC4JAVdlIGNvdWxkIHNsYXNoIHRoZSBkZXBvc2l0LCBidXQgZm9yIG5vdyB3ZSBhbGxvdyB0aGVtIHRvIHVucmVzZXJ2ZREBdGhlaXIgZGVwb3NpdCBhbmQgZXhpdCB3aXRob3V0IGlzc3VlLiAoV2UgbWF5IHdhbnQgdG8gY2hhbmdlIHRoaXMgaWY4aXQgaXMgYWJ1c2VkLikABQFGaW5hbGx5LCB0aGUgb3JpZ2luIGNhbiBiZSBhbnlvbmUgaWZmIHRoZSBjaGlsZC1ib3VudHkgY3VyYXRvciBpcwkBImluYWN0aXZlIi4gRXhwaXJ5IHVwZGF0ZSBkdWUgb2YgcGFyZW50IGJvdW50eSBpcyB1c2VkIHRvIGVzdGltYXRlnGluYWN0aXZlIHN0YXRlIG9mIGNoaWxkLWJvdW50eSBjdXJhdG9yLgANAVRoaXMgYWxsb3dzIGFueW9uZSBpbiB0aGUgY29tbXVuaXR5IHRvIGNhbGwgb3V0IHRoYXQgYSBjaGlsZC1ib3VudHkJAWN1cmF0b3IgaXMgbm90IGRvaW5nIHRoZWlyIGR1ZSBkaWxpZ2VuY2UsIGFuZCB3ZSBzaG91bGQgcGljayBhIG5ld/hvbmUuIEluIHRoaXMgY2FzZSB0aGUgY2hpbGQtYm91bnR5IGN1cmF0b3IgZGVwb3NpdCBpcyBzbGFzaGVkLgABAVN0YXRlIG9mIGNoaWxkLWJvdW50eSBpcyBtb3ZlZCB0byBBZGRlZCBzdGF0ZSBvbiBzdWNjZXNzZnVsIGNhbGwsY29tcGxldGlvbi4AtC0gYHBhcmVudF9ib3VudHlfaWRgOiBJbmRleCBvZiBwYXJlbnQgYm91bnR5LqwtIGBjaGlsZF9ib3VudHlfaWRgOiBJbmRleCBvZiBjaGlsZCBib3VudHkuSGF3YXJkX2NoaWxkX2JvdW50eQwBQHBhcmVudF9ib3VudHlfaWRkASxCb3VudHlJbmRleAABPGNoaWxkX2JvdW50eV9pZGQBLEJvdW50eUluZGV4AAEsYmVuZWZpY2lhcnkAAVBBY2NvdW50SWRMb29rdXBPZjxUPgAERJBBd2FyZCBjaGlsZC1ib3VudHkgdG8gYSBiZW5lZmljaWFyeS4A+FRoZSBiZW5lZmljaWFyeSB3aWxsIGJlIGFibGUgdG8gY2xhaW0gdGhlIGZ1bmRzIGFmdGVyIGEgZGVsYXkuAPxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSB0aGUgcGFyZW50IGN1cmF0b3Igb3J0Y3VyYXRvciBvZiB0aGlzIGNoaWxkLWJvdW50eS4AEQFQYXJlbnQgYm91bnR5IG11c3QgYmUgaW4gYWN0aXZlIHN0YXRlLCBmb3IgdGhpcyBjaGlsZC1ib3VudHkgY2FsbCB0bxR3b3JrLgAJAUNoaWxkLWJvdW50eSBtdXN0IGJlIGluIGFjdGl2ZSBzdGF0ZSwgZm9yIHByb2Nlc3NpbmcgdGhlIGNhbGwuIEFuZBEBc3RhdGUgb2YgY2hpbGQtYm91bnR5IGlzIG1vdmVkIHRvICJQZW5kaW5nUGF5b3V0IiBvbiBzdWNjZXNzZnVsIGNhbGwsY29tcGxldGlvbi4AtC0gYHBhcmVudF9ib3VudHlfaWRgOiBJbmRleCBvZiBwYXJlbnQgYm91bnR5LqwtIGBjaGlsZF9ib3VudHlfaWRgOiBJbmRleCBvZiBjaGlsZCBib3VudHkulC0gYGJlbmVmaWNpYXJ5YDogQmVuZWZpY2lhcnkgYWNjb3VudC5IY2xhaW1fY2hpbGRfYm91bnR5CAFAcGFyZW50X2JvdW50eV9pZGQBLEJvdW50eUluZGV4AAE8Y2hpbGRfYm91bnR5X2lkZAEsQm91bnR5SW5kZXgABUAFAUNsYWltIHRoZSBwYXlvdXQgZnJvbSBhbiBhd2FyZGVkIGNoaWxkLWJvdW50eSBhZnRlciBwYXlvdXQgZGVsYXkuAOxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbWF5IGJlIGFueSBzaWduZWQgb3JpZ2luLgAFAUNhbGwgd29ya3MgaW5kZXBlbmRlbnQgb2YgcGFyZW50IGJvdW50eSBzdGF0ZSwgTm8gbmVlZCBmb3IgcGFyZW50dGJvdW50eSB0byBiZSBpbiBhY3RpdmUgc3RhdGUuABEBVGhlIEJlbmVmaWNpYXJ5IGlzIHBhaWQgb3V0IHdpdGggYWdyZWVkIGJvdW50eSB2YWx1ZS4gQ3VyYXRvciBmZWUgaXOUcGFpZCAmIGN1cmF0b3IgZGVwb3NpdCBpcyB1bnJlc2VydmVkLgAFAUNoaWxkLWJvdW50eSBtdXN0IGJlIGluICJQZW5kaW5nUGF5b3V0IiBzdGF0ZSwgZm9yIHByb2Nlc3NpbmcgdGhl/GNhbGwuIEFuZCBpbnN0YW5jZSBvZiBjaGlsZC1ib3VudHkgaXMgcmVtb3ZlZCBmcm9tIHRoZSBzdGF0ZSBvbmxzdWNjZXNzZnVsIGNhbGwgY29tcGxldGlvbi4AtC0gYHBhcmVudF9ib3VudHlfaWRgOiBJbmRleCBvZiBwYXJlbnQgYm91bnR5LqwtIGBjaGlsZF9ib3VudHlfaWRgOiBJbmRleCBvZiBjaGlsZCBib3VudHkuSGNsb3NlX2NoaWxkX2JvdW50eQgBQHBhcmVudF9ib3VudHlfaWRkASxCb3VudHlJbmRleAABPGNoaWxkX2JvdW50eV9pZGQBLEJvdW50eUluZGV4AAZYEQFDYW5jZWwgYSBwcm9wb3NlZCBvciBhY3RpdmUgY2hpbGQtYm91bnR5LiBDaGlsZC1ib3VudHkgYWNjb3VudCBmdW5kcwkBYXJlIHRyYW5zZmVycmVkIHRvIHBhcmVudCBib3VudHkgYWNjb3VudC4gVGhlIGNoaWxkLWJvdW50eSBjdXJhdG9ymGRlcG9zaXQgbWF5IGJlIHVucmVzZXJ2ZWQgaWYgcG9zc2libGUuAAkBVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgZWl0aGVyIHBhcmVudCBjdXJhdG9yIG9ySGBUOjpSZWplY3RPcmlnaW5gLgDwSWYgdGhlIHN0YXRlIG9mIGNoaWxkLWJvdW50eSBpcyBgQWN0aXZlYCwgY3VyYXRvciBkZXBvc2l0IGlzLHVucmVzZXJ2ZWQuAPRJZiB0aGUgc3RhdGUgb2YgY2hpbGQtYm91bnR5IGlzIGBQZW5kaW5nUGF5b3V0YCwgY2FsbCBmYWlscyAmeHJldHVybnMgYFBlbmRpbmdQYXlvdXRgIGVycm9yLgANAUZvciB0aGUgb3JpZ2luIG90aGVyIHRoYW4gVDo6UmVqZWN0T3JpZ2luLCBwYXJlbnQgYm91bnR5IG11c3QgYmUgaW7wYWN0aXZlIHN0YXRlLCBmb3IgdGhpcyBjaGlsZC1ib3VudHkgY2FsbCB0byB3b3JrLiBGb3Igb3JpZ2lukFQ6OlJlamVjdE9yaWdpbiBleGVjdXRpb24gaXMgZm9yY2VkLgABAUluc3RhbmNlIG9mIGNoaWxkLWJvdW50eSBpcyByZW1vdmVkIGZyb20gdGhlIHN0YXRlIG9uIHN1Y2Nlc3NmdWxAY2FsbCBjb21wbGV0aW9uLgC0LSBgcGFyZW50X2JvdW50eV9pZGA6IEluZGV4IG9mIHBhcmVudCBib3VudHkurC0gYGNoaWxkX2JvdW50eV9pZGA6IEluZGV4IG9mIGNoaWxkIGJvdW50eS4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuJQUMRHBhbGxldF9hc3NldF9yYXRlGHBhbGxldBBDYWxsBARUAAEMGGNyZWF0ZQgBKGFzc2V0X2tpbmTpBAFEQm94PFQ6OkFzc2V0S2luZD4AARByYXRlKQUBJEZpeGVkVTEyOAAAEA0BSW5pdGlhbGl6ZSBhIGNvbnZlcnNpb24gcmF0ZSB0byBuYXRpdmUgYmFsYW5jZSBmb3IgdGhlIGdpdmVuIGFzc2V0LgA0IyMgQ29tcGxleGl0eRgtIE8oMSkYdXBkYXRlCAEoYXNzZXRfa2luZOkEAURCb3g8VDo6QXNzZXRLaW5kPgABEHJhdGUpBQEkRml4ZWRVMTI4AAEQBQFVcGRhdGUgdGhlIGNvbnZlcnNpb24gcmF0ZSB0byBuYXRpdmUgYmFsYW5jZSBmb3IgdGhlIGdpdmVuIGFzc2V0LgA0IyMgQ29tcGxleGl0eRgtIE8oMSkYcmVtb3ZlBAEoYXNzZXRfa2luZOkEAURCb3g8VDo6QXNzZXRLaW5kPgACECUBUmVtb3ZlIGFuIGV4aXN0aW5nIGNvbnZlcnNpb24gcmF0ZSB0byBuYXRpdmUgYmFsYW5jZSBmb3IgdGhlIGdpdmVuIGFzc2V0LgA0IyMgQ29tcGxleGl0eRgtIE8oMSkEDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuKQUMNHNwX2FyaXRobWV0aWMsZml4ZWRfcG9pbnQkRml4ZWRVMTI4AAAEAFkBARB1MTI4AAAtBQxscGFsbGV0X211bHRpX2Fzc2V0X2JvdW50aWVzGHBhbGxldBBDYWxsCARUAARJAAEkLGZ1bmRfYm91bnR5EAEoYXNzZXRfa2luZOkEAURCb3g8VDo6QXNzZXRLaW5kPgABFHZhbHVlVQEBKFQ6OkJhbGFuY2UAARxjdXJhdG9yAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AASBtZXRhZGF0YUABHFQ6Okhhc2gAAGgpAUZ1bmQgYSBuZXcgYm91bnR5IHdpdGggYSBwcm9wb3NlZCBjdXJhdG9yLCBpbml0aWF0aW5nIHRoZSBwYXltZW50IGZyb20gdGhluGZ1bmRpbmcgc291cmNlIHRvIHRoZSBib3VudHkgYWNjb3VudC9sb2NhdGlvbi4ASCMjIERpc3BhdGNoIE9yaWdpbgAdAU11c3QgYmUgW2BDb25maWc6OlNwZW5kT3JpZ2luYF0gd2l0aCB0aGUgYFN1Y2Nlc3NgIHZhbHVlIGJlaW5nIGF0IGxlYXN0QQF0aGUgYm91bnR5IHZhbHVlIGNvbnZlcnRlZCB0byBuYXRpdmUgYmFsYW5jZSB1c2luZyBbYENvbmZpZzo6QmFsYW5jZUNvbnZlcnRlcmBdLjUBVGhlIGNvbnZlcnRlZCBuYXRpdmUgYW1vdW50IGlzIHZhbGlkYXRlZCBhZ2FpbnN0IHRoZSBtYXhpbXVtIHNwZW5kYWJsZSBhbW91bnSQcmV0dXJuZWQgYnkgW2BDb25maWc6OlNwZW5kT3JpZ2luYF0uACgjIyBEZXRhaWxzACEBLSBUaGUgYFNwZW5kT3JpZ2luYCBtdXN0IGhhdmUgc3VmZmljaWVudCBwZXJtaXNzaW9ucyB0byBmdW5kIHRoZSBib3VudHkuWQEtIFRoZSBib3VudHkgYHZhbHVlYCAoaW4gYXNzZXQgYmFsYW5jZSkgaXMgY29udmVydGVkIHRvIG5hdGl2ZSBiYWxhbmNlIGZvciB2YWxpZGF0aW9uLikBLSBJbiBjYXNlIG9mIGEgZnVuZGluZyBmYWlsdXJlLCB0aGUgYm91bnR5IHN0YXR1cyBtdXN0IGJlIHVwZGF0ZWQgd2l0aCB0aGUBASAgYGNoZWNrX3N0YXR1c2AgY2FsbCBiZWZvcmUgcmV0cnlpbmcgd2l0aCBgcmV0cnlfcGF5bWVudGAgY2FsbC4AOCMjIyBQYXJhbWV0ZXJzGQEtIGBhc3NldF9raW5kYDogQW4gaW5kaWNhdG9yIG9mIHRoZSBzcGVjaWZpYyBhc3NldCBjbGFzcyB0byBiZSBmdW5kZWQuzC0gYHZhbHVlYDogVGhlIHRvdGFsIHBheW1lbnQgYW1vdW50IG9mIHRoaXMgYm91bnR5LpwtIGBjdXJhdG9yYDogQWRkcmVzcyBvZiBib3VudHkgY3VyYXRvci4tAS0gYG1ldGFkYXRhYDogVGhlIGhhc2ggb2YgYW4gb24tY2hhaW4gc3RvcmVkIHByZWltYWdlIHdpdGggYm91bnR5IG1ldGFkYXRhLgAkIyMgRXZlbnRzAAUBRW1pdHMgW2BFdmVudDo6Qm91bnR5Q3JlYXRlZGBdIGFuZCBbYEV2ZW50OjpQYWlkYF0gaWYgc3VjY2Vzc2Z1bC5EZnVuZF9jaGlsZF9ib3VudHkQAUBwYXJlbnRfYm91bnR5X2lkZAEsQm91bnR5SW5kZXgAARR2YWx1ZVUBAShUOjpCYWxhbmNlAAEgbWV0YWRhdGFAARxUOjpIYXNoAAEcY3VyYXRvclkEAXBPcHRpb248QWNjb3VudElkTG9va3VwT2Y8VD4+AAFgXQFGdW5kIGEgbmV3IGNoaWxkLWJvdW50eSB3aXRoIGEgcHJvcG9zZWQgY3VyYXRvciwgaW5pdGlhdGluZyB0aGUgcGF5bWVudCBmcm9tIHRoZSBwYXJlbnSwYm91bnR5IHRvIHRoZSBjaGlsZC1ib3VudHkgYWNjb3VudC9sb2NhdGlvbi4ASCMjIERpc3BhdGNoIE9yaWdpbgCUTXVzdCBiZSBzaWduZWQgYnkgdGhlIHBhcmVudCBjdXJhdG9yLgAoIyMgRGV0YWlscwBFAS0gSWYgYGN1cmF0b3JgIGlzIG5vdCBwcm92aWRlZCwgdGhlIGNoaWxkLWJvdW50eSB3aWxsIGRlZmF1bHQgdG8gdXNpbmcgdGhlIHBhcmVudDUBICBjdXJhdG9yLCBhbGxvd2luZyB0aGUgcGFyZW50IGN1cmF0b3IgdG8gaW1tZWRpYXRlbHkgY2FsbCBgY2hlY2tfc3RhdHVzYCBhbmSwICBgYXdhcmRfYm91bnR5YCB0byBwYXlvdXQgdGhlIGNoaWxkLWJvdW50eS5FAS0gSW4gY2FzZSBvZiBhIGZ1bmRpbmcgZmFpbHVyZSwgdGhlIGNoaWxkLS9ib3VudHkgc3RhdHVzIG11c3QgYmUgdXBkYXRlZCB3aXRoIHRoZQEBICBgY2hlY2tfc3RhdHVzYCBjYWxsIGJlZm9yZSByZXRyeWluZyB3aXRoIGByZXRyeV9wYXltZW50YCBjYWxsLgA4IyMjIFBhcmFtZXRlcnNNAS0gYHBhcmVudF9ib3VudHlfaWRgOiBJbmRleCBvZiBwYXJlbnQgYm91bnR5IGZvciB3aGljaCBjaGlsZC1ib3VudHkgaXMgYmVpbmcgYWRkZWQuzC0gYHZhbHVlYDogVGhlIHBheW1lbnQgYW1vdW50IG9mIHRoaXMgY2hpbGQtYm91bnR5LkUBLSBgbWV0YWRhdGFgOiBUaGUgaGFzaCBvZiBhbiBvbi1jaGFpbiBzdG9yZWQgcHJlaW1hZ2Ugd2l0aCBjaGlsZC1ib3VudHkgbWV0YWRhdGEutC0gYGN1cmF0b3JgOiBBZGRyZXNzIG9mIGNoaWxkLWJvdW50eSBjdXJhdG9yLgAkIyMgRXZlbnRzABkBRW1pdHMgW2BFdmVudDo6Q2hpbGRCb3VudHlDcmVhdGVkYF0gYW5kIFtgRXZlbnQ6OlBhaWRgXSBpZiBzdWNjZXNzZnVsLjxwcm9wb3NlX2N1cmF0b3IMAUBwYXJlbnRfYm91bnR5X2lkZAEsQm91bnR5SW5kZXgAATxjaGlsZF9ib3VudHlfaWTkAUxPcHRpb248Qm91bnR5SW5kZXg+AAEcY3VyYXRvcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAJUMQFQcm9wb3NlIGEgbmV3IGN1cmF0b3IgZm9yIGEgY2hpbGQtL2JvdW50eSBhZnRlciB0aGUgcHJldmlvdXMgd2FzIHVuYXNzaWduZWQuAEgjIyBEaXNwYXRjaCBPcmlnaW4AQQFNdXN0IGJlIHNpZ25lZCBieSBgVDo6U3BlbmRPcmlnaW5gIGZvciBhIGJvdW50eSwgb3IgYnkgdGhlIHBhcmVudCBib3VudHkgY3VyYXRvckxmb3IgYSBjaGlsZC1ib3VudHkuACgjIyBEZXRhaWxzAPQtIFRoZSBjaGlsZC0vYm91bnR5IG11c3QgYmUgaW4gdGhlIGBDdXJhdG9yVW5hc3NpZ25lZGAgc3RhdGUuRQEtIEZvciBhIGJvdW50eSwgdGhlIGBTcGVuZE9yaWdpbmAgbXVzdCBoYXZlIHN1ZmZpY2llbnQgcGVybWlzc2lvbnMgdG8gcHJvcG9zZSB0aGUoICBjdXJhdG9yLgA4IyMjIFBhcmFtZXRlcnOYLSBgcGFyZW50X2JvdW50eV9pZGA6IEluZGV4IG9mIGJvdW50eS6sLSBgY2hpbGRfYm91bnR5X2lkYDogSW5kZXggb2YgY2hpbGQtYm91bnR5LswtIGBjdXJhdG9yYDogQWNjb3VudCB0byBiZSBwcm9wb3NlZCBhcyB0aGUgY3VyYXRvci4AJCMjIEV2ZW50cwC8RW1pdHMgW2BFdmVudDo6Q3VyYXRvclByb3Bvc2VkYF0gaWYgc3VjY2Vzc2Z1bC44YWNjZXB0X2N1cmF0b3IIAUBwYXJlbnRfYm91bnR5X2lkZAEsQm91bnR5SW5kZXgAATxjaGlsZF9ib3VudHlfaWTkAUxPcHRpb248Qm91bnR5SW5kZXg+AANMsEFjY2VwdCB0aGUgY3VyYXRvciByb2xlIGZvciBhIGNoaWxkLS9ib3VudHkuAEgjIyBEaXNwYXRjaCBPcmlnaW4AnE11c3QgYmUgc2lnbmVkIGJ5IHRoZSBwcm9wb3NlZCBjdXJhdG9yLgAoIyMgRGV0YWlscwDILSBUaGUgY2hpbGQtL2JvdW50eSBtdXN0IGJlIGluIHRoZSBgRnVuZGVkYCBzdGF0ZS7wLSBUaGUgY3VyYXRvciBtdXN0IGFjY2VwdCB0aGUgcm9sZSBieSBjYWxsaW5nIHRoaXMgZnVuY3Rpb24uSQEtIEEgZGVwb3NpdCB3aWxsIGJlIHJlc2VydmVkIGZyb20gdGhlIGN1cmF0b3IgYW5kIHJlZnVuZGVkIHVwb24gc3VjY2Vzc2Z1bCBwYXlvdXQuADgjIyMgUGFyYW1ldGVyc7QtIGBwYXJlbnRfYm91bnR5X2lkYDogSW5kZXggb2YgcGFyZW50IGJvdW50eS6sLSBgY2hpbGRfYm91bnR5X2lkYDogSW5kZXggb2YgY2hpbGQtYm91bnR5LgAkIyMgRXZlbnRzAMhFbWl0cyBbYEV2ZW50OjpCb3VudHlCZWNhbWVBY3RpdmVgXSBpZiBzdWNjZXNzZnVsLkB1bmFzc2lnbl9jdXJhdG9yCAFAcGFyZW50X2JvdW50eV9pZGQBLEJvdW50eUluZGV4AAE8Y2hpbGRfYm91bnR5X2lk5AFMT3B0aW9uPEJvdW50eUluZGV4PgAEZJhVbmFzc2lnbiBjdXJhdG9yIGZyb20gYSBjaGlsZC0vYm91bnR5LgBIIyMgRGlzcGF0Y2ggT3JpZ2luAFEBVGhpcyBmdW5jdGlvbiBjYW4gb25seSBiZSBjYWxsZWQgYnkgdGhlIGBSZWplY3RPcmlnaW5gIG9yIHRoZSBjaGlsZC0vYm91bnR5IGN1cmF0b3IuACgjIyBEZXRhaWxzAGEBLSBJZiB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBieSB0aGUgYFJlamVjdE9yaWdpbmAsIG9yIGJ5IHRoZSBwYXJlbnQgY3VyYXRvciBpbiB0aGUgY2FzZVkBICBvZiBhIGNoaWxkIGJvdW50eSwgd2UgYXNzdW1lIHRoYXQgdGhlIGN1cmF0b3IgaXMgbWFsaWNpb3VzIG9yIGluYWN0aXZlLiBBcyBhIHJlc3VsdCyoICB3ZSB3aWxsIHNsYXNoIHRoZSBjdXJhdG9yIHdoZW4gcG9zc2libGUuXQEtIElmIHRoZSBvcmlnaW4gaXMgdGhlIGNoaWxkLS9ib3VudHkgY3VyYXRvciwgd2UgdGFrZSB0aGlzIGFzIGEgc2lnbiB0aGV5IGFyZSB1bmFibGUgdG9RASAgZG8gdGhlaXIgam9iIGFuZCB0aGV5IHdpbGxpbmdseSBnaXZlIHVwLiBXZSBjb3VsZCBzbGFzaCB0aGVtLCBidXQgZm9yIG5vdyB3ZSBhbGxvd1kBICB0aGVtIHRvIHJlY292ZXIgdGhlaXIgZGVwb3NpdCBhbmQgZXhpdCB3aXRob3V0IGlzc3VlLiAoV2UgbWF5IHdhbnQgdG8gY2hhbmdlIHRoaXMgaWZAICBpdCBpcyBhYnVzZWQpLj0BLSBJZiBzdWNjZXNzZnVsLCB0aGUgY2hpbGQtL2JvdW50eSBzdGF0dXMgaXMgdXBkYXRlZCB0byBgQ3VyYXRvclVuYXNzaWduZWRgLiBUb0UBICByZWFjdGl2YXRlIHRoZSBib3VudHksIGEgbmV3IGN1cmF0b3IgbXVzdCBiZSBwcm9wb3NlZCBhbmQgbXVzdCBhY2NlcHQgdGhlIHJvbGUuADgjIyMgUGFyYW1ldGVyc7QtIGBwYXJlbnRfYm91bnR5X2lkYDogSW5kZXggb2YgcGFyZW50IGJvdW50eS6sLSBgY2hpbGRfYm91bnR5X2lkYDogSW5kZXggb2YgY2hpbGQtYm91bnR5LgAkIyMgRXZlbnRzAMRFbWl0cyBbYEV2ZW50OjpDdXJhdG9yVW5hc3NpZ25lZGBdIGlmIHN1Y2Nlc3NmdWwuMGF3YXJkX2JvdW50eQwBQHBhcmVudF9ib3VudHlfaWRkASxCb3VudHlJbmRleAABPGNoaWxkX2JvdW50eV9pZOQBTE9wdGlvbjxCb3VudHlJbmRleD4AASxiZW5lZmljaWFyee0EAWRCZW5lZmljaWFyeUxvb2t1cE9mPFQsIEk+AAVg7EF3YXJkcyB0aGUgY2hpbGQtL2JvdW50eSB0byBhIGJlbmVmaWNpYXJ5IGFjY291bnQvbG9jYXRpb24sHQFpbml0aWF0aW5nIHRoZSBwYXlvdXQgcGF5bWVudHMgdG8gYm90aCB0aGUgYmVuZWZpY2lhcnkgYW5kIHRoZSBjdXJhdG9yLgBIIyMgRGlzcGF0Y2ggT3JpZ2luAFEBVGhpcyBmdW5jdGlvbiBjYW4gb25seSBiZSBjYWxsZWQgYnkgdGhlIGBSZWplY3RPcmlnaW5gIG9yIHRoZSBjaGlsZC0vYm91bnR5IGN1cmF0b3IuACgjIyBEZXRhaWxzAMgtIFRoZSBjaGlsZC0vYm91bnR5IG11c3QgYmUgaW4gdGhlIGBBY3RpdmVgIHN0YXRlLj0BLSBpZiBhd2FyZGluZyBhIHBhcmVudCBib3VudHkgaXQgbXVzdCBub3QgaGF2ZSBhY3RpdmUgb3IgZnVuZGVkIGNoaWxkIGJvdW50aWVzLlkBLSBJbml0aWF0ZXMgcGF5b3V0IHBheW1lbnQgZnJvbSB0aGUgY2hpbGQtL2JvdW50eSB0byB0aGUgYmVuZWZpY2lhcnkgYWNjb3VudC9sb2NhdGlvbi4lAS0gSWYgc3VjY2Vzc2Z1bCB0aGUgY2hpbGQtL2JvdW50eSBzdGF0dXMgaXMgdXBkYXRlZCB0byBgUGF5b3V0QXR0ZW1wdGVkYC4xAS0gSW4gY2FzZSBvZiBhIHBheW91dCBmYWlsdXJlLCB0aGUgY2hpbGQtL2JvdW50eSBzdGF0dXMgbXVzdCBiZSB1cGRhdGVkIHdpdGj4YGNoZWNrX3N0YXR1c2AgY2FsbCBiZWZvcmUgcmV0cnlpbmcgd2l0aCBgcmV0cnlfcGF5bWVudGAgY2FsbC4AOCMjIyBQYXJhbWV0ZXJztC0gYHBhcmVudF9ib3VudHlfaWRgOiBJbmRleCBvZiBwYXJlbnQgYm91bnR5LqwtIGBjaGlsZF9ib3VudHlfaWRgOiBJbmRleCBvZiBjaGlsZC1ib3VudHkuCQEtIGBiZW5lZmljaWFyeWA6IEFjY291bnQvbG9jYXRpb24gdG8gYmUgYXdhcmRlZCB0aGUgY2hpbGQtL2JvdW50eS4AJCMjIEV2ZW50cwAFAUVtaXRzIFtgRXZlbnQ6OkJvdW50eUF3YXJkZWRgXSBhbmQgW2BFdmVudDo6UGFpZGBdIGlmIHN1Y2Nlc3NmdWwuMGNsb3NlX2JvdW50eQgBQHBhcmVudF9ib3VudHlfaWRkASxCb3VudHlJbmRleAABPGNoaWxkX2JvdW50eV9pZOQBTE9wdGlvbjxCb3VudHlJbmRleD4ABlxhAUNhbmNlbCBhbiBhY3RpdmUgY2hpbGQtL2JvdW50eS4gQSBwYXltZW50IHRvIHNlbmQgYWxsIHRoZSBmdW5kcyB0byB0aGUgZnVuZGluZyBzb3VyY2UgaXMwaW5pdGlhbGl6ZWQuAEgjIyBEaXNwYXRjaCBPcmlnaW4AUQFUaGlzIGZ1bmN0aW9uIGNhbiBvbmx5IGJlIGNhbGxlZCBieSB0aGUgYFJlamVjdE9yaWdpbmAgb3IgdGhlIHBhcmVudCBib3VudHkgY3VyYXRvci4AKCMjIERldGFpbHMAPQEtIElmIHRoZSBjaGlsZC0vYm91bnR5IGlzIGluIHRoZSBgRnVuZGVkYCBzdGF0ZSwgYSByZWZ1bmQgcGF5bWVudCBpcyBpbml0aWF0ZWQuWQEtIElmIHRoZSBjaGlsZC0vYm91bnR5IGlzIGluIHRoZSBgQWN0aXZlYCBzdGF0ZSwgYSByZWZ1bmQgcGF5bWVudCBpcyBpbml0aWF0ZWQgYW5kIHRoZREBICBjaGlsZC0vYm91bnR5IHN0YXR1cyBpcyB1cGRhdGVkIHdpdGggdGhlIGN1cmF0b3IgYWNjb3VudC9sb2NhdGlvbi5BAS0gSWYgdGhlIGNoaWxkLS9ib3VudHkgaXMgaW4gdGhlIGZ1bmRpbmcgb3IgcGF5b3V0IHBoYXNlLCBpdCBjYW5ub3QgYmUgY2FuY2VsZWQuQQEtIEluIGNhc2Ugb2YgYSByZWZ1bmQgZmFpbHVyZSwgdGhlIGNoaWxkLS9ib3VudHkgc3RhdHVzIG11c3QgYmUgdXBkYXRlZCB3aXRoIHRoZfhgY2hlY2tfc3RhdHVzYCBjYWxsIGJlZm9yZSByZXRyeWluZyB3aXRoIGByZXRyeV9wYXltZW50YCBjYWxsLgA4IyMjIFBhcmFtZXRlcnO0LSBgcGFyZW50X2JvdW50eV9pZGA6IEluZGV4IG9mIHBhcmVudCBib3VudHkurC0gYGNoaWxkX2JvdW50eV9pZGA6IEluZGV4IG9mIGNoaWxkLWJvdW50eS4AJCMjIEV2ZW50cwAJAUVtaXRzIFtgRXZlbnQ6OkJvdW50eUNhbmNlbGVkYF0gYW5kIFtgRXZlbnQ6OlBhaWRgXSBpZiBzdWNjZXNzZnVsLjBjaGVja19zdGF0dXMIAUBwYXJlbnRfYm91bnR5X2lkZAEsQm91bnR5SW5kZXgAATxjaGlsZF9ib3VudHlfaWTkAUxPcHRpb248Qm91bnR5SW5kZXg+AAdk3ENoZWNrIGFuZCB1cGRhdGUgdGhlIHBheW1lbnQgc3RhdHVzIG9mIGEgY2hpbGQtL2JvdW50eS4ASCMjIERpc3BhdGNoIE9yaWdpbgA8TXVzdCBiZSBzaWduZWQuACgjIyBEZXRhaWxzAFUBLSBJZiB0aGUgY2hpbGQtL2JvdW50eSBzdGF0dXMgaXMgYEZ1bmRpbmdBdHRlbXB0ZWRgLCBpdCBjaGVja3MgaWYgdGhlIGZ1bmRpbmcgcGF5bWVudA0BICBoYXMgc3VjY2VlZGVkLiBJZiBzdWNjZXNzZnVsLCB0aGUgYm91bnR5IHN0YXR1cyBiZWNvbWVzIGBGdW5kZWRgLl0BLSBJZiB0aGUgY2hpbGQtL2JvdW50eSBzdGF0dXMgaXMgYFJlZnVuZEF0dGVtcHRlZGAsIGl0IGNoZWNrcyBpZiB0aGUgcmVmdW5kIHBheW1lbnQgaGFzGQEgIHN1Y2NlZWRlZC4gSWYgc3VjY2Vzc2Z1bCwgdGhlIGNoaWxkLS9ib3VudHkgaXMgcmVtb3ZlZCBmcm9tIHN0b3JhZ2UuXQEtIElmIHRoZSBjaGlsZC0vYm91bnR5IHN0YXR1cyBpcyBgUGF5b3V0QXR0ZW1wdGVkYCwgaXQgY2hlY2tzIGlmIHRoZSBwYXlvdXQgcGF5bWVudCBoYXMZASAgc3VjY2VlZGVkLiBJZiBzdWNjZXNzZnVsLCB0aGUgY2hpbGQtL2JvdW50eSBpcyByZW1vdmVkIGZyb20gc3RvcmFnZS4AOCMjIyBQYXJhbWV0ZXJztC0gYHBhcmVudF9ib3VudHlfaWRgOiBJbmRleCBvZiBwYXJlbnQgYm91bnR5LqwtIGBjaGlsZF9ib3VudHlfaWRgOiBJbmRleCBvZiBjaGlsZC1ib3VudHkuACQjIyBFdmVudHMAXQFFbWl0cyBbYEV2ZW50OjpCb3VudHlCZWNhbWVBY3RpdmVgXSBpZiB0aGUgY2hpbGQvYm91bnR5IHN0YXR1cyB0cmFuc2l0aW9ucyB0byBgQWN0aXZlYC4lAUVtaXRzIFtgRXZlbnQ6OkJvdW50eVJlZnVuZFByb2Nlc3NlZGBdIGlmIHRoZSByZWZ1bmQgcGF5bWVudCBoYXMgc3VjY2VlZC4lAUVtaXRzIFtgRXZlbnQ6OkJvdW50eVBheW91dFByb2Nlc3NlZGBdIGlmIHRoZSBwYXlvdXQgcGF5bWVudCBoYXMgc3VjY2VlZC5VAUVtaXRzIFtgRXZlbnQ6OlBheW1lbnRGYWlsZWRgXSBpZiB0aGUgZnVuZGluZywgcmVmdW5kIG91ciBwYXltZW50IHBheW1lbnQgaGFzIGZhaWxlZC40cmV0cnlfcGF5bWVudAgBQHBhcmVudF9ib3VudHlfaWRkASxCb3VudHlJbmRleAABPGNoaWxkX2JvdW50eV9pZOQBTE9wdGlvbjxCb3VudHlJbmRleD4ACFi0UmV0cnkgdGhlIGZ1bmRpbmcsIHJlZnVuZCBvciBwYXlvdXQgcGF5bWVudHMuAEgjIyBEaXNwYXRjaCBPcmlnaW4APE11c3QgYmUgc2lnbmVkLgAoIyMgRGV0YWlscwBhAS0gSWYgdGhlIGNoaWxkLS9ib3VudHkgc3RhdHVzIGlzIGBGdW5kaW5nQXR0ZW1wdGVkYCwgaXQgcmV0cmllcyB0aGUgZnVuZGluZyBwYXltZW50IGZyb23QICBmdW5kaW5nIHNvdXJjZSB0aGUgY2hpbGQtL2JvdW50eSBhY2NvdW50L2xvY2F0aW9uLlkBLSBJZiB0aGUgY2hpbGQtL2JvdW50eSBzdGF0dXMgaXMgYFJlZnVuZEF0dGVtcHRlZGAsIGl0IHJldHJpZXMgdGhlIHJlZnVuZCBwYXltZW50IGZyb23sICB0aGUgY2hpbGQtL2JvdW50eSBhY2NvdW50L2xvY2F0aW9uIHRvIHRoZSBmdW5kaW5nIHNvdXJjZS5ZAS0gSWYgdGhlIGNoaWxkLS9ib3VudHkgc3RhdHVzIGlzIGBQYXlvdXRBdHRlbXB0ZWRgLCBpdCByZXRyaWVzIHRoZSBwYXlvdXQgcGF5bWVudCBmcm9tJQEgIHRoZSBjaGlsZC0vYm91bnR5IGFjY291bnQvbG9jYXRpb24gdG8gdGhlIGJlbmVmaWNpYXJ5IGFjY291bnQvbG9jYXRpb24uADgjIyMgUGFyYW1ldGVyc7QtIGBwYXJlbnRfYm91bnR5X2lkYDogSW5kZXggb2YgcGFyZW50IGJvdW50eS6sLSBgY2hpbGRfYm91bnR5X2lkYDogSW5kZXggb2YgY2hpbGQtYm91bnR5LgAkIyMgRXZlbnRzADUBRW1pdHMgW2BFdmVudDo6UGFpZGBdIGlmIHRoZSBmdW5kaW5nLCByZWZ1bmQgb3IgcGF5b3V0IHBheW1lbnQgaGFzIGluaXRpYXRlZC4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuMQUMbHBhbGxldF9zdGF0ZV90cmllX21pZ3JhdGlvbhhwYWxsZXQQQ2FsbAQEVAABGFhjb250cm9sX2F1dG9fbWlncmF0aW9uBAEwbWF5YmVfY29uZmlnNQUBXE9wdGlvbjxNaWdyYXRpb25MaW1pdHM+AAAMgENvbnRyb2wgdGhlIGF1dG9tYXRpYyBtaWdyYXRpb24uAA0BVGhlIGRpc3BhdGNoIG9yaWdpbiBvZiB0aGlzIGNhbGwgbXVzdCBiZSBbYENvbmZpZzo6Q29udHJvbE9yaWdpbmBdLkBjb250aW51ZV9taWdyYXRlDAEYbGltaXRzOQUBPE1pZ3JhdGlvbkxpbWl0cwABPHJlYWxfc2l6ZV91cHBlcjgBDHUzMgABMHdpdG5lc3NfdGFzaz0FAUBNaWdyYXRpb25UYXNrPFQ+AAFUuENvbnRpbnVlIHRoZSBtaWdyYXRpb24gZm9yIHRoZSBnaXZlbiBgbGltaXRzYC4A7FRoZSBkaXNwYXRjaCBvcmlnaW4gb2YgdGhpcyBjYWxsIGNhbiBiZSBhbnkgc2lnbmVkIGFjY291bnQuAF0BVGhpcyB0cmFuc2FjdGlvbiBoYXMgTk8gTU9ORVRBUlkgSU5DRU5USVZFUy4gY2FsbGluZyBpdCB3aWxsIG5vdCByZXdhcmQgYW55b25lLiBBbGJlaXQs7FVwb24gc3VjY2Vzc2Z1bCBleGVjdXRpb24sIHRoZSB0cmFuc2FjdGlvbiBmZWUgaXMgcmV0dXJuZWQuAEEBVGhlIChwb3RlbnRpYWxseSBvdmVyLWVzdGltYXRlZCkgb2YgdGhlIGJ5dGUgbGVuZ3RoIG9mIGFsbCB0aGUgZGF0YSByZWFkIG11c3QgYmVZAXByb3ZpZGVkIGZvciB1cC1mcm9udCBmZWUtcGF5bWVudCBhbmQgd2VpZ2hpbmcuIEluIGVzc2VuY2UsIHRoZSBjYWxsZXIgaXMgZ3VhcmFudGVlaW5nSQF0aGF0IGV4ZWN1dGluZyB0aGUgY3VycmVudCBgTWlncmF0aW9uVGFza2Agd2l0aCB0aGUgZ2l2ZW4gYGxpbWl0c2Agd2lsbCBub3QgZXhjZWVklGByZWFsX3NpemVfdXBwZXJgIGJ5dGVzIG9mIHJlYWQgZGF0YS4ARQFUaGUgYHdpdG5lc3NfdGFza2AgaXMgbWVyZWx5IGEgaGVscGVyIHRvIHByZXZlbnQgdGhlIGNhbGxlciBmcm9tIGJlaW5nIHNsYXNoZWQgb3JdAWdlbmVyYWxseSB0cmlnZ2VyIGEgbWlncmF0aW9uIHRoYXQgdGhleSBkbyBub3QgaW50ZW5kLiBUaGlzIHBhcmFtZXRlciBpcyBqdXN0IGEgbWVzc2FnZT0BZnJvbSBjYWxsZXIsIHNheWluZyB0aGF0IHRoZXkgYmVsaWV2ZWQgYHdpdG5lc3NfdGFza2Agd2FzIHRoZSBsYXN0IHN0YXRlIG9mIHRoZVkBbWlncmF0aW9uLCBhbmQgdGhleSBvbmx5IHdpc2ggZm9yIHRoZWlyIHRyYW5zYWN0aW9uIHRvIGRvIGFueXRoaW5nLCBpZiB0aGlzIGFzc3VtcHRpb24RAWhvbGRzLiBJbiBjYXNlIGB3aXRuZXNzX3Rhc2tgIGRvZXMgbm90IG1hdGNoLCB0aGUgdHJhbnNhY3Rpb24gZmFpbHMuADkBQmFzZWQgb24gdGhlIGRvY3VtZW50YXRpb24gb2YgW2BNaWdyYXRpb25UYXNrOjptaWdyYXRlX3VudGlsX2V4aGF1c3Rpb25gXSwgdGhlTQFyZWNvbW1lbmRlZCB3YXkgb2YgZG9pbmcgdGhpcyBpcyB0byBwYXNzIGEgYGxpbWl0YCB0aGF0IG9ubHkgYm91bmRzIGBjb3VudGAsIGFzIHRoZZxgc2l6ZWAgbGltaXQgY2FuIGFsd2F5cyBiZSBvdmVyd3JpdHRlbi5IbWlncmF0ZV9jdXN0b21fdG9wCAEQa2V5czQBMFZlYzxWZWM8dTg+PgABMHdpdG5lc3Nfc2l6ZTgBDHUzMgACEAkBTWlncmF0ZSB0aGUgbGlzdCBvZiB0b3Aga2V5cyBieSBpdGVyYXRpbmcgZWFjaCBvZiB0aGVtIG9uZSBieSBvbmUuAFUBVGhpcyBkb2VzIG5vdCBhZmZlY3QgdGhlIGdsb2JhbCBtaWdyYXRpb24gcHJvY2VzcyB0cmFja2VyIChbYE1pZ3JhdGlvblByb2Nlc3NgXSksIGFuZPxzaG91bGQgb25seSBiZSB1c2VkIGluIGNhc2UgYW55IGtleXMgYXJlIGxlZnRvdmVyIGR1ZSB0byBhIGJ1Zy5QbWlncmF0ZV9jdXN0b21fY2hpbGQMARByb290GAEcVmVjPHU4PgABKGNoaWxkX2tleXM0ATBWZWM8VmVjPHU4Pj4AASh0b3RhbF9zaXplOAEMdTMyAAMYEQFNaWdyYXRlIHRoZSBsaXN0IG9mIGNoaWxkIGtleXMgYnkgaXRlcmF0aW5nIGVhY2ggb2YgdGhlbSBvbmUgYnkgb25lLgANAUFsbCBvZiB0aGUgZ2l2ZW4gY2hpbGQga2V5cyBtdXN0IGJlIHByZXNlbnQgdW5kZXIgb25lIGBjaGlsZF9yb290YC4AVQFUaGlzIGRvZXMgbm90IGFmZmVjdCB0aGUgZ2xvYmFsIG1pZ3JhdGlvbiBwcm9jZXNzIHRyYWNrZXIgKFtgTWlncmF0aW9uUHJvY2Vzc2BdKSwgYW5k/HNob3VsZCBvbmx5IGJlIHVzZWQgaW4gY2FzZSBhbnkga2V5cyBhcmUgbGVmdG92ZXIgZHVlIHRvIGEgYnVnLlRzZXRfc2lnbmVkX21heF9saW1pdHMEARhsaW1pdHM5BQE8TWlncmF0aW9uTGltaXRzAAQEuFNldCB0aGUgbWF4aW11bSBsaW1pdCBvZiB0aGUgc2lnbmVkIG1pZ3JhdGlvbi5IZm9yY2Vfc2V0X3Byb2dyZXNzCAEwcHJvZ3Jlc3NfdG9wQQUBNFByb2dyZXNzT2Y8VD4AAThwcm9ncmVzc19jaGlsZEEFATRQcm9ncmVzc09mPFQ+AAUkyEZvcmNlZnVsbHkgc2V0IHRoZSBwcm9ncmVzcyB0aGUgcnVubmluZyBtaWdyYXRpb24uAF0BVGhpcyBpcyBvbmx5IHVzZWZ1bCBpbiBvbmUgY2FzZTogdGhlIG5leHQga2V5IHRvIG1pZ3JhdGUgaXMgdG9vIGJpZyB0byBiZSBtaWdyYXRlZCB3aXRoVQFhIHNpZ25lZCBhY2NvdW50LCBpbiBhIHBhcmFjaGFpbiBjb250ZXh0LCBhbmQgd2Ugc2ltcGx5IHdhbnQgdG8gc2tpcCBpdC4gQSByZWFzb25hYmxlYQFleGFtcGxlIG9mIHRoaXMgd291bGQgYmUgYDpjb2RlOmAsIHdoaWNoIGlzIGJvdGggdmVyeSBleHBlbnNpdmUgdG8gbWlncmF0ZSwgYW5kIGNvbW1vbmx5pHVzZWQsIHNvIHByb2JhYmx5IGl0IGlzIGFscmVhZHkgbWlncmF0ZWQuAF0BSW4gY2FzZSB5b3UgbWVzcyB0aGluZ3MgdXAsIHlvdSBjYW4gYWxzbywgaW4gcHJpbmNpcGxlLCB1c2UgdGhpcyB0byByZXNldCB0aGUgbWlncmF0aW9uIHByb2Nlc3MuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLjUFBBhPcHRpb24EBFQBOQUBCBBOb25lAAAAEFNvbWUEADkFAAABAAA5BQxscGFsbGV0X3N0YXRlX3RyaWVfbWlncmF0aW9uGHBhbGxldDxNaWdyYXRpb25MaW1pdHMAAAgBEHNpemU4AQx1MzIAARBpdGVtOAEMdTMyAAA9BQxscGFsbGV0X3N0YXRlX3RyaWVfbWlncmF0aW9uGHBhbGxldDRNaWdyYXRpb25UYXNrBARUAAAUATBwcm9ncmVzc190b3BBBQE0UHJvZ3Jlc3NPZjxUPgABOHByb2dyZXNzX2NoaWxkQQUBNFByb2dyZXNzT2Y8VD4AARBzaXplOAEMdTMyAAEkdG9wX2l0ZW1zOAEMdTMyAAEsY2hpbGRfaXRlbXM4AQx1MzIAAEEFDGxwYWxsZXRfc3RhdGVfdHJpZV9taWdyYXRpb24YcGFsbGV0IFByb2dyZXNzBCRNYXhLZXlMZW4AAQwcVG9TdGFydAAAABxMYXN0S2V5BABFBQFkQm91bmRlZFZlYzx1OCwgTWF4S2V5TGVuPgABACBDb21wbGV0ZQACAABFBQxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQwEUwAABAAYARhWZWM8VD4AAEkFDFxwYWxsZXRfbm9taW5hdGlvbl9wb29scxhwYWxsZXQQQ2FsbAQEVAABaBBqb2luCAEYYW1vdW50VQEBMEJhbGFuY2VPZjxUPgABHHBvb2xfaWQ4ARhQb29sSWQAAEBFAVN0YWtlIGZ1bmRzIHdpdGggYSBwb29sLiBUaGUgYW1vdW50IHRvIGJvbmQgaXMgZGVsZWdhdGVkIChvciB0cmFuc2ZlcnJlZCBiYXNlZCBvbk0BW2BhZGFwdGVyOjpTdGFrZVN0cmF0ZWd5VHlwZWBdKSBmcm9tIHRoZSBtZW1iZXIgdG8gdGhlIHBvb2wgYWNjb3VudCBhbmQgaW1tZWRpYXRlbHloaW5jcmVhc2VzIHRoZSBwb29sJ3MgYm9uZC4AKQFUaGUgbWV0aG9kIG9mIHRyYW5zZmVycmluZyB0aGUgYW1vdW50IHRvIHRoZSBwb29sIGFjY291bnQgaXMgZGV0ZXJtaW5lZCBieQEBW2BhZGFwdGVyOjpTdGFrZVN0cmF0ZWd5VHlwZWBdLiBJZiB0aGUgcG9vbCBpcyBjb25maWd1cmVkIHRvIHVzZTEBW2BhZGFwdGVyOjpTdGFrZVN0cmF0ZWd5VHlwZTo6RGVsZWdhdGVgXSwgdGhlIGZ1bmRzIHJlbWFpbiBpbiB0aGUgYWNjb3VudCBvZjEBdGhlIGBvcmlnaW5gLCB3aGlsZSB0aGUgcG9vbCBnYWlucyB0aGUgcmlnaHQgdG8gdXNlIHRoZXNlIGZ1bmRzIGZvciBzdGFraW5nLgAYIyBOb3RlAMwqIEFuIGFjY291bnQgY2FuIG9ubHkgYmUgYSBtZW1iZXIgb2YgYSBzaW5nbGUgcG9vbC7YKiBBbiBhY2NvdW50IGNhbm5vdCBqb2luIHRoZSBzYW1lIHBvb2wgbXVsdGlwbGUgdGltZXMuQQEqIFRoaXMgY2FsbCB3aWxsICpub3QqIGR1c3QgdGhlIG1lbWJlciBhY2NvdW50LCBzbyB0aGUgbWVtYmVyIG11c3QgaGF2ZSBhdCBsZWFzdMggIGBleGlzdGVudGlhbCBkZXBvc2l0ICsgYW1vdW50YCBpbiB0aGVpciBhY2NvdW50LtAqIE9ubHkgYSBwb29sIHdpdGggW2BQb29sU3RhdGU6Ok9wZW5gXSBjYW4gYmUgam9pbmVkKGJvbmRfZXh0cmEEARRleHRyYU0FAVxCb25kRXh0cmE8QmFsYW5jZU9mPFQ+PgABHEUBQm9uZCBgZXh0cmFgIG1vcmUgZnVuZHMgZnJvbSBgb3JpZ2luYCBpbnRvIHRoZSBwb29sIHRvIHdoaWNoIHRoZXkgYWxyZWFkeSBiZWxvbmcuAEkBQWRkaXRpb25hbCBmdW5kcyBjYW4gY29tZSBmcm9tIGVpdGhlciB0aGUgZnJlZSBiYWxhbmNlIG9mIHRoZSBhY2NvdW50LCBvZiBmcm9tIHRoZZxhY2N1bXVsYXRlZCByZXdhcmRzLCBzZWUgW2BCb25kRXh0cmFgXS4APQFCb25kaW5nIGV4dHJhIGZ1bmRzIGltcGxpZXMgYW4gYXV0b21hdGljIHBheW91dCBvZiBhbGwgcGVuZGluZyByZXdhcmRzIGFzIHdlbGwuCQFTZWUgYGJvbmRfZXh0cmFfb3RoZXJgIHRvIGJvbmQgcGVuZGluZyByZXdhcmRzIG9mIGBvdGhlcmAgbWVtYmVycy4wY2xhaW1fcGF5b3V0AAIgVQFBIGJvbmRlZCBtZW1iZXIgY2FuIHVzZSB0aGlzIHRvIGNsYWltIHRoZWlyIHBheW91dCBiYXNlZCBvbiB0aGUgcmV3YXJkcyB0aGF0IHRoZSBwb29sYQFoYXMgYWNjdW11bGF0ZWQgc2luY2UgdGhlaXIgbGFzdCBjbGFpbWVkIHBheW91dCAoT1Igc2luY2Ugam9pbmluZyBpZiB0aGlzIGlzIHRoZWlyIGZpcnN0PQF0aW1lIGNsYWltaW5nIHJld2FyZHMpLiBUaGUgcGF5b3V0IHdpbGwgYmUgdHJhbnNmZXJyZWQgdG8gdGhlIG1lbWJlcidzIGFjY291bnQuAEkBVGhlIG1lbWJlciB3aWxsIGVhcm4gcmV3YXJkcyBwcm8gcmF0YSBiYXNlZCBvbiB0aGUgbWVtYmVycyBzdGFrZSB2cyB0aGUgc3VtIG9mIHRoZdBtZW1iZXJzIGluIHRoZSBwb29scyBzdGFrZS4gUmV3YXJkcyBkbyBub3QgImV4cGlyZSIuAEEBU2VlIGBjbGFpbV9wYXlvdXRfb3RoZXJgIHRvIGNsYWltIHJld2FyZHMgb24gYmVoYWxmIG9mIHNvbWUgYG90aGVyYCBwb29sIG1lbWJlci4YdW5ib25kCAE4bWVtYmVyX2FjY291bnQAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABQHVuYm9uZGluZ19wb2ludHNVAQEwQmFsYW5jZU9mPFQ+AAN8RQFVbmJvbmQgdXAgdG8gYHVuYm9uZGluZ19wb2ludHNgIG9mIHRoZSBgbWVtYmVyX2FjY291bnRgJ3MgZnVuZHMgZnJvbSB0aGUgcG9vbC4gSXRFAWltcGxpY2l0bHkgY29sbGVjdHMgdGhlIHJld2FyZHMgb25lIGxhc3QgdGltZSwgc2luY2Ugbm90IGRvaW5nIHNvIHdvdWxkIG1lYW4gc29tZWxyZXdhcmRzIHdvdWxkIGJlIGZvcmZlaXRlZC4ATQFVbmRlciBjZXJ0YWluIGNvbmRpdGlvbnMsIHRoaXMgY2FsbCBjYW4gYmUgZGlzcGF0Y2hlZCBwZXJtaXNzaW9ubGVzc2x5IChpLmUuIGJ5IGFueSRhY2NvdW50KS4ArCMgQ29uZGl0aW9ucyBmb3IgYSBwZXJtaXNzaW9ubGVzcyBkaXNwYXRjaC4AXQEqIFRoZSBwb29sIGlzIGJsb2NrZWQgYW5kIHRoZSBjYWxsZXIgaXMgZWl0aGVyIHRoZSByb290IG9yIGJvdW5jZXIuIFRoaXMgaXMgcmVmZXJlZWQgdG8wICBhcyBhIGtpY2su9CogVGhlIHBvb2wgaXMgZGVzdHJveWluZyBhbmQgdGhlIG1lbWJlciBpcyBub3QgdGhlIGRlcG9zaXRvci5VASogVGhlIHBvb2wgaXMgZGVzdHJveWluZywgdGhlIG1lbWJlciBpcyB0aGUgZGVwb3NpdG9yIGFuZCBubyBvdGhlciBtZW1iZXJzIGFyZSBpbiB0aGUcICBwb29sLgARASMjIENvbmRpdGlvbnMgZm9yIHBlcm1pc3Npb25lZCBkaXNwYXRjaCAoaS5lLiB0aGUgY2FsbGVyIGlzIGFsc28gdGhlSGBtZW1iZXJfYWNjb3VudGApOgCIKiBUaGUgY2FsbGVyIGlzIG5vdCB0aGUgZGVwb3NpdG9yLlUBKiBUaGUgY2FsbGVyIGlzIHRoZSBkZXBvc2l0b3IsIHRoZSBwb29sIGlzIGRlc3Ryb3lpbmcgYW5kIG5vIG90aGVyIG1lbWJlcnMgYXJlIGluIHRoZRwgIHBvb2wuABgjIE5vdGUAHQFJZiB0aGVyZSBhcmUgdG9vIG1hbnkgdW5sb2NraW5nIGNodW5rcyB0byB1bmJvbmQgd2l0aCB0aGUgcG9vbCBhY2NvdW50LFEBW2BDYWxsOjpwb29sX3dpdGhkcmF3X3VuYm9uZGVkYF0gY2FuIGJlIGNhbGxlZCB0byB0cnkgYW5kIG1pbmltaXplIHVubG9ja2luZyBjaHVua3MuWQFUaGUgW2BTdGFraW5nSW50ZXJmYWNlOjp1bmJvbmRgXSB3aWxsIGltcGxpY2l0bHkgY2FsbCBbYENhbGw6OnBvb2xfd2l0aGRyYXdfdW5ib25kZWRgXVUBdG8gdHJ5IHRvIGZyZWUgY2h1bmtzIGlmIG5lY2Vzc2FyeSAoaWUuIGlmIHVuYm91bmQgd2FzIGNhbGxlZCBhbmQgbm8gdW5sb2NraW5nIGNodW5rc2EBYXJlIGF2YWlsYWJsZSkuIEhvd2V2ZXIsIGl0IG1heSBub3QgYmUgcG9zc2libGUgdG8gcmVsZWFzZSB0aGUgY3VycmVudCB1bmxvY2tpbmcgY2h1bmtzLF0BaW4gd2hpY2ggY2FzZSwgdGhlIHJlc3VsdCBvZiB0aGlzIGNhbGwgd2lsbCBsaWtlbHkgYmUgdGhlIGBOb01vcmVDaHVua3NgIGVycm9yIGZyb20gdGhlPHN0YWtpbmcgc3lzdGVtLlhwb29sX3dpdGhkcmF3X3VuYm9uZGVkCAEccG9vbF9pZDgBGFBvb2xJZAABSG51bV9zbGFzaGluZ19zcGFuczgBDHUzMgAEGFUBQ2FsbCBgd2l0aGRyYXdfdW5ib25kZWRgIGZvciB0aGUgcG9vbHMgYWNjb3VudC4gVGhpcyBjYWxsIGNhbiBiZSBtYWRlIGJ5IGFueSBhY2NvdW50LgBBAVRoaXMgaXMgdXNlZnVsIGlmIHRoZXJlIGFyZSB0b28gbWFueSB1bmxvY2tpbmcgY2h1bmtzIHRvIGNhbGwgYHVuYm9uZGAsIGFuZCBzb21lYQFjYW4gYmUgY2xlYXJlZCBieSB3aXRoZHJhd2luZy4gSW4gdGhlIGNhc2UgdGhlcmUgYXJlIHRvbyBtYW55IHVubG9ja2luZyBjaHVua3MsIHRoZSB1c2VyUQF3b3VsZCBwcm9iYWJseSBzZWUgYW4gZXJyb3IgbGlrZSBgTm9Nb3JlQ2h1bmtzYCBlbWl0dGVkIGZyb20gdGhlIHN0YWtpbmcgc3lzdGVtIHdoZW5cdGhleSBhdHRlbXB0IHRvIHVuYm9uZC5Ed2l0aGRyYXdfdW5ib25kZWQIAThtZW1iZXJfYWNjb3VudAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAFIbnVtX3NsYXNoaW5nX3NwYW5zOAEMdTMyAAVYVQFXaXRoZHJhdyB1bmJvbmRlZCBmdW5kcyBmcm9tIGBtZW1iZXJfYWNjb3VudGAuIElmIG5vIGJvbmRlZCBmdW5kcyBjYW4gYmUgdW5ib25kZWQsIGFuSGVycm9yIGlzIHJldHVybmVkLgBNAVVuZGVyIGNlcnRhaW4gY29uZGl0aW9ucywgdGhpcyBjYWxsIGNhbiBiZSBkaXNwYXRjaGVkIHBlcm1pc3Npb25sZXNzbHkgKGkuZS4gYnkgYW55JGFjY291bnQpLgCoIyBDb25kaXRpb25zIGZvciBhIHBlcm1pc3Npb25sZXNzIGRpc3BhdGNoAAkBKiBUaGUgcG9vbCBpcyBpbiBkZXN0cm95IG1vZGUgYW5kIHRoZSB0YXJnZXQgaXMgbm90IHRoZSBkZXBvc2l0b3IuMQEqIFRoZSB0YXJnZXQgaXMgdGhlIGRlcG9zaXRvciBhbmQgdGhleSBhcmUgdGhlIG9ubHkgbWVtYmVyIGluIHRoZSBzdWIgcG9vbHMuDQEqIFRoZSBwb29sIGlzIGJsb2NrZWQgYW5kIHRoZSBjYWxsZXIgaXMgZWl0aGVyIHRoZSByb290IG9yIGJvdW5jZXIuAJgjIENvbmRpdGlvbnMgZm9yIHBlcm1pc3Npb25lZCBkaXNwYXRjaADoKiBUaGUgY2FsbGVyIGlzIHRoZSB0YXJnZXQgYW5kIHRoZXkgYXJlIG5vdCB0aGUgZGVwb3NpdG9yLgAYIyBOb3RlAPQtIElmIHRoZSB0YXJnZXQgaXMgdGhlIGRlcG9zaXRvciwgdGhlIHBvb2wgd2lsbCBiZSBkZXN0cm95ZWQuYQEtIElmIHRoZSBwb29sIGhhcyBhbnkgcGVuZGluZyBzbGFzaCwgd2UgYWxzbyB0cnkgdG8gc2xhc2ggdGhlIG1lbWJlciBiZWZvcmUgbGV0dGluZyB0aGVtXQF3aXRoZHJhdy4gVGhpcyBjYWxjdWxhdGlvbiBhZGRzIHNvbWUgd2VpZ2h0IG92ZXJoZWFkIGFuZCBpcyBvbmx5IGRlZmVuc2l2ZS4gSW4gcmVhbGl0eSxVAXBvb2wgc2xhc2hlcyBtdXN0IGhhdmUgYmVlbiBhbHJlYWR5IGFwcGxpZWQgdmlhIHBlcm1pc3Npb25sZXNzIFtgQ2FsbDo6YXBwbHlfc2xhc2hgXS4YY3JlYXRlEAEYYW1vdW50VQEBMEJhbGFuY2VPZjxUPgABEHJvb3QAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABJG5vbWluYXRvcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEcYm91bmNlcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAZEdENyZWF0ZSBhIG5ldyBkZWxlZ2F0aW9uIHBvb2wuACwjIEFyZ3VtZW50cwBVASogYGFtb3VudGAgLSBUaGUgYW1vdW50IG9mIGZ1bmRzIHRvIGRlbGVnYXRlIHRvIHRoZSBwb29sLiBUaGlzIGFsc28gYWN0cyBvZiBhIHNvcnQgb2ZNASAgZGVwb3NpdCBzaW5jZSB0aGUgcG9vbHMgY3JlYXRvciBjYW5ub3QgZnVsbHkgdW5ib25kIGZ1bmRzIHVudGlsIHRoZSBwb29sIGlzIGJlaW5nMCAgZGVzdHJveWVkLlEBKiBgaW5kZXhgIC0gQSBkaXNhbWJpZ3VhdGlvbiBpbmRleCBmb3IgY3JlYXRpbmcgdGhlIGFjY291bnQuIExpa2VseSBvbmx5IHVzZWZ1bCB3aGVuwCAgY3JlYXRpbmcgbXVsdGlwbGUgcG9vbHMgaW4gdGhlIHNhbWUgZXh0cmluc2ljLtQqIGByb290YCAtIFRoZSBhY2NvdW50IHRvIHNldCBhcyBbYFBvb2xSb2xlczo6cm9vdGBdLg0BKiBgbm9taW5hdG9yYCAtIFRoZSBhY2NvdW50IHRvIHNldCBhcyB0aGUgW2BQb29sUm9sZXM6Om5vbWluYXRvcmBdLvwqIGBib3VuY2VyYCAtIFRoZSBhY2NvdW50IHRvIHNldCBhcyB0aGUgW2BQb29sUm9sZXM6OmJvdW5jZXJgXS4AGCMgTm90ZQBhAUluIGFkZGl0aW9uIHRvIGBhbW91bnRgLCB0aGUgY2FsbGVyIHdpbGwgdHJhbnNmZXIgdGhlIGV4aXN0ZW50aWFsIGRlcG9zaXQ7IHNvIHRoZSBjYWxsZXINAW5lZWRzIGF0IGhhdmUgYXQgbGVhc3QgYGFtb3VudCArIGV4aXN0ZW50aWFsX2RlcG9zaXRgIHRyYW5zZmVyYWJsZS5MY3JlYXRlX3dpdGhfcG9vbF9pZBQBGGFtb3VudFUBATBCYWxhbmNlT2Y8VD4AARByb290AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AASRub21pbmF0b3IAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABHGJvdW5jZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABHHBvb2xfaWQ4ARhQb29sSWQABxjsQ3JlYXRlIGEgbmV3IGRlbGVnYXRpb24gcG9vbCB3aXRoIGEgcHJldmlvdXNseSB1c2VkIHBvb2wgaWQALCMgQXJndW1lbnRzAJhzYW1lIGFzIGBjcmVhdGVgIHdpdGggdGhlIGluY2x1c2lvbiBvZngqIGBwb29sX2lkYCAtIGBBIHZhbGlkIFBvb2xJZC4gbm9taW5hdGUIARxwb29sX2lkOAEYUG9vbElkAAEodmFsaWRhdG9yc2EBAURWZWM8VDo6QWNjb3VudElkPgAIMHxOb21pbmF0ZSBvbiBiZWhhbGYgb2YgdGhlIHBvb2wuAEUBVGhlIGRpc3BhdGNoIG9yaWdpbiBvZiB0aGlzIGNhbGwgbXVzdCBiZSBzaWduZWQgYnkgdGhlIHBvb2wgbm9taW5hdG9yIG9yIHRoZSBwb29sKHJvb3Qgcm9sZS4ARQFUaGlzIGRpcmVjdGx5IGZvcndhcmRzIHRoZSBjYWxsIHRvIGFuIGltcGxlbWVudGF0aW9uIG9mIGBTdGFraW5nSW50ZXJmYWNlYCAoZS5nLixFAWBwYWxsZXQtc3Rha2luZ2ApIHRocm91Z2ggW2BDb25maWc6OlN0YWtlQWRhcHRlcmBdLCBvbiBiZWhhbGYgb2YgdGhlIGJvbmRlZCBwb29sLgAYIyBOb3RlAFkBSW4gYWRkaXRpb24gdG8gYSBgcm9vdGAgb3IgYG5vbWluYXRvcmAgcm9sZSBvZiBgb3JpZ2luYCwgdGhlIHBvb2wncyBkZXBvc2l0b3IgbmVlZHMgdG8NAWhhdmUgYXQgbGVhc3QgYGRlcG9zaXRvcl9taW5fYm9uZGAgaW4gdGhlIHBvb2wgdG8gc3RhcnQgbm9taW5hdGluZy4kc2V0X3N0YXRlCAEccG9vbF9pZDgBGFBvb2xJZAABFHN0YXRlUQUBJFBvb2xTdGF0ZQAJKHRTZXQgYSBuZXcgc3RhdGUgZm9yIHRoZSBwb29sLgBVAUlmIGEgcG9vbCBpcyBhbHJlYWR5IGluIHRoZSBgRGVzdHJveWluZ2Agc3RhdGUsIHRoZW4gdW5kZXIgbm8gY29uZGl0aW9uIGNhbiBpdHMgc3RhdGU0Y2hhbmdlIGFnYWluLgDAVGhlIGRpc3BhdGNoIG9yaWdpbiBvZiB0aGlzIGNhbGwgbXVzdCBiZSBlaXRoZXI6ANwxLiBzaWduZWQgYnkgdGhlIGJvdW5jZXIsIG9yIHRoZSByb290IHJvbGUgb2YgdGhlIHBvb2wsXQEyLiBpZiB0aGUgcG9vbCBjb25kaXRpb25zIHRvIGJlIG9wZW4gYXJlIE5PVCBtZXQgKGFzIGRlc2NyaWJlZCBieSBgb2tfdG9fYmVfb3BlbmApLCBhbmQ5ASAgIHRoZW4gdGhlIHN0YXRlIG9mIHRoZSBwb29sIGNhbiBiZSBwZXJtaXNzaW9ubGVzc2x5IGNoYW5nZWQgdG8gYERlc3Ryb3lpbmdgLjBzZXRfbWV0YWRhdGEIARxwb29sX2lkOAEYUG9vbElkAAEgbWV0YWRhdGEYARxWZWM8dTg+AAoQgFNldCBhIG5ldyBtZXRhZGF0YSBmb3IgdGhlIHBvb2wuAF0BVGhlIGRpc3BhdGNoIG9yaWdpbiBvZiB0aGlzIGNhbGwgbXVzdCBiZSBzaWduZWQgYnkgdGhlIGJvdW5jZXIsIG9yIHRoZSByb290IHJvbGUgb2YgdGhlFHBvb2wuLHNldF9jb25maWdzGAE0bWluX2pvaW5fYm9uZFUFAVhDb25maWdPcDxCYWxhbmNlT2Y8VD4+AAE8bWluX2NyZWF0ZV9ib25kVQUBWENvbmZpZ09wPEJhbGFuY2VPZjxUPj4AASRtYXhfcG9vbHNZBQE0Q29uZmlnT3A8dTMyPgABLG1heF9tZW1iZXJzWQUBNENvbmZpZ09wPHUzMj4AAVBtYXhfbWVtYmVyc19wZXJfcG9vbFkFATRDb25maWdPcDx1MzI+AAFUZ2xvYmFsX21heF9jb21taXNzaW9uXQUBRENvbmZpZ09wPFBlcmJpbGw+AAssQQFVcGRhdGUgY29uZmlndXJhdGlvbnMgZm9yIHRoZSBub21pbmF0aW9uIHBvb2xzLiBUaGUgb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZWBbYENvbmZpZzo6QWRtaW5PcmlnaW5gXS4ALCMgQXJndW1lbnRzAKAqIGBtaW5fam9pbl9ib25kYCAtIFNldCBbYE1pbkpvaW5Cb25kYF0usCogYG1pbl9jcmVhdGVfYm9uZGAgLSBTZXQgW2BNaW5DcmVhdGVCb25kYF0uhCogYG1heF9wb29sc2AgLSBTZXQgW2BNYXhQb29sc2BdLqQqIGBtYXhfbWVtYmVyc2AgLSBTZXQgW2BNYXhQb29sTWVtYmVyc2BdLuQqIGBtYXhfbWVtYmVyc19wZXJfcG9vbGAgLSBTZXQgW2BNYXhQb29sTWVtYmVyc1BlclBvb2xgXS7gKiBgZ2xvYmFsX21heF9jb21taXNzaW9uYCAtIFNldCBbYEdsb2JhbE1heENvbW1pc3Npb25gXS4wdXBkYXRlX3JvbGVzEAEccG9vbF9pZDgBGFBvb2xJZAABIG5ld19yb290YQUBWENvbmZpZ09wPFQ6OkFjY291bnRJZD4AATRuZXdfbm9taW5hdG9yYQUBWENvbmZpZ09wPFQ6OkFjY291bnRJZD4AASxuZXdfYm91bmNlcmEFAVhDb25maWdPcDxUOjpBY2NvdW50SWQ+AAwcdFVwZGF0ZSB0aGUgcm9sZXMgb2YgdGhlIHBvb2wuAD0BVGhlIHJvb3QgaXMgdGhlIG9ubHkgZW50aXR5IHRoYXQgY2FuIGNoYW5nZSBhbnkgb2YgdGhlIHJvbGVzLCBpbmNsdWRpbmcgaXRzZWxmLLhleGNsdWRpbmcgdGhlIGRlcG9zaXRvciwgd2hvIGNhbiBuZXZlciBjaGFuZ2UuAFEBSXQgZW1pdHMgYW4gZXZlbnQsIG5vdGlmeWluZyBVSXMgb2YgdGhlIHJvbGUgY2hhbmdlLiBUaGlzIGV2ZW50IGlzIHF1aXRlIHJlbGV2YW50IHRvHQFtb3N0IHBvb2wgbWVtYmVycyBhbmQgdGhleSBzaG91bGQgYmUgaW5mb3JtZWQgb2YgY2hhbmdlcyB0byBwb29sIHJvbGVzLhRjaGlsbAQBHHBvb2xfaWQ4ARhQb29sSWQADURwQ2hpbGwgb24gYmVoYWxmIG9mIHRoZSBwb29sLgBBAVRoZSBkaXNwYXRjaCBvcmlnaW4gb2YgdGhpcyBjYWxsIGNhbiBiZSBzaWduZWQgYnkgdGhlIHBvb2wgbm9taW5hdG9yIG9yIHRoZSBwb29soHJvb3Qgcm9sZSwgc2FtZSBhcyBbYFBhbGxldDo6bm9taW5hdGVgXS4ARQFUaGlzIGRpcmVjdGx5IGZvcndhcmRzIHRoZSBjYWxsIHRvIGFuIGltcGxlbWVudGF0aW9uIG9mIGBTdGFraW5nSW50ZXJmYWNlYCAoZS5nLixFAWBwYWxsZXQtc3Rha2luZ2ApIHRocm91Z2ggW2BDb25maWc6OlN0YWtlQWRhcHRlcmBdLCBvbiBiZWhhbGYgb2YgdGhlIGJvbmRlZCBwb29sLgBNAVVuZGVyIGNlcnRhaW4gY29uZGl0aW9ucywgdGhpcyBjYWxsIGNhbiBiZSBkaXNwYXRjaGVkIHBlcm1pc3Npb25sZXNzbHkgKGkuZS4gYnkgYW55JGFjY291bnQpLgCsIyBDb25kaXRpb25zIGZvciBhIHBlcm1pc3Npb25sZXNzIGRpc3BhdGNoOlUBKiBXaGVuIHBvb2wgZGVwb3NpdG9yIGhhcyBsZXNzIHRoYW4gYE1pbk5vbWluYXRvckJvbmRgIHN0YWtlZCwgb3RoZXJ3aXNlIHBvb2wgbWVtYmVyc1wgIGFyZSB1bmFibGUgdG8gdW5ib25kLgCcIyBDb25kaXRpb25zIGZvciBwZXJtaXNzaW9uZWQgZGlzcGF0Y2g6tCogVGhlIGNhbGxlciBpcyB0aGUgcG9vbCdzIG5vbWluYXRvciBvciByb290LkBib25kX2V4dHJhX290aGVyCAEYbWVtYmVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARRleHRyYU0FAVxCb25kRXh0cmE8QmFsYW5jZU9mPFQ+PgAOJFUBYG9yaWdpbmAgYm9uZHMgZnVuZHMgZnJvbSBgZXh0cmFgIGZvciBzb21lIHBvb2wgbWVtYmVyIGBtZW1iZXJgIGludG8gdGhlaXIgcmVzcGVjdGl2ZRhwb29scy4ASQFgb3JpZ2luYCBjYW4gYm9uZCBleHRyYSBmdW5kcyBmcm9tIGZyZWUgYmFsYW5jZSBvciBwZW5kaW5nIHJld2FyZHMgd2hlbiBgb3JpZ2luID09HG90aGVyYC4ARQFJbiB0aGUgY2FzZSBvZiBgb3JpZ2luICE9IG90aGVyYCwgYG9yaWdpbmAgY2FuIG9ubHkgYm9uZCBleHRyYSBwZW5kaW5nIHJld2FyZHMgb2YVAWBvdGhlcmAgbWVtYmVycyBhc3N1bWluZyBzZXRfY2xhaW1fcGVybWlzc2lvbiBmb3IgdGhlIGdpdmVuIG1lbWJlciBpc8BgUGVybWlzc2lvbmxlc3NDb21wb3VuZGAgb3IgYFBlcm1pc3Npb25sZXNzQWxsYC5Qc2V0X2NsYWltX3Blcm1pc3Npb24EAShwZXJtaXNzaW9uZQUBPENsYWltUGVybWlzc2lvbgAPHEkBQWxsb3dzIGEgcG9vbCBtZW1iZXIgdG8gc2V0IGEgY2xhaW0gcGVybWlzc2lvbiB0byBhbGxvdyBvciBkaXNhbGxvdyBwZXJtaXNzaW9ubGVzc2Bib25kaW5nIGFuZCB3aXRoZHJhd2luZy4ALCMgQXJndW1lbnRzAHgqIGBvcmlnaW5gIC0gTWVtYmVyIG9mIGEgcG9vbC64KiBgcGVybWlzc2lvbmAgLSBUaGUgcGVybWlzc2lvbiB0byBiZSBhcHBsaWVkLkhjbGFpbV9wYXlvdXRfb3RoZXIEARRvdGhlcgQBMFQ6OkFjY291bnRJZAAQEAEBYG9yaWdpbmAgY2FuIGNsYWltIHBheW91dHMgb24gc29tZSBwb29sIG1lbWJlciBgb3RoZXJgJ3MgYmVoYWxmLgBVAVBvb2wgbWVtYmVyIGBvdGhlcmAgbXVzdCBoYXZlIGEgYFBlcm1pc3Npb25sZXNzV2l0aGRyYXdgIG9yIGBQZXJtaXNzaW9ubGVzc0FsbGAgY2xhaW2ocGVybWlzc2lvbiBmb3IgdGhpcyBjYWxsIHRvIGJlIHN1Y2Nlc3NmdWwuOHNldF9jb21taXNzaW9uCAEccG9vbF9pZDgBGFBvb2xJZAABOG5ld19jb21taXNzaW9uaQUBfE9wdGlvbjwoUGVyYmlsbCwgVDo6QWNjb3VudElkKT4AERR0U2V0IHRoZSBjb21taXNzaW9uIG9mIGEgcG9vbC5VAUJvdGggYSBjb21taXNzaW9uIHBlcmNlbnRhZ2UgYW5kIGEgY29tbWlzc2lvbiBwYXllZSBtdXN0IGJlIHByb3ZpZGVkIGluIHRoZSBgY3VycmVudGBdAXR1cGxlLiBXaGVyZSBhIGBjdXJyZW50YCBvZiBgTm9uZWAgaXMgcHJvdmlkZWQsIGFueSBjdXJyZW50IGNvbW1pc3Npb24gd2lsbCBiZSByZW1vdmVkLgBNAS0gSWYgYSBgTm9uZWAgaXMgc3VwcGxpZWQgdG8gYG5ld19jb21taXNzaW9uYCwgZXhpc3RpbmcgY29tbWlzc2lvbiB3aWxsIGJlIHJlbW92ZWQuSHNldF9jb21taXNzaW9uX21heAgBHHBvb2xfaWQ4ARhQb29sSWQAAThtYXhfY29tbWlzc2lvbqEBARxQZXJiaWxsABIUlFNldCB0aGUgbWF4aW11bSBjb21taXNzaW9uIG9mIGEgcG9vbC4AOQEtIEluaXRpYWwgbWF4IGNhbiBiZSBzZXQgdG8gYW55IGBQZXJiaWxsYCwgYW5kIG9ubHkgc21hbGxlciB2YWx1ZXMgdGhlcmVhZnRlci41AS0gQ3VycmVudCBjb21taXNzaW9uIHdpbGwgYmUgbG93ZXJlZCBpbiB0aGUgZXZlbnQgaXQgaXMgaGlnaGVyIHRoYW4gYSBuZXcgbWF4NCAgY29tbWlzc2lvbi5oc2V0X2NvbW1pc3Npb25fY2hhbmdlX3JhdGUIARxwb29sX2lkOAEYUG9vbElkAAEsY2hhbmdlX3JhdGVxBQGcQ29tbWlzc2lvbkNoYW5nZVJhdGU8QmxvY2tOdW1iZXJGb3I8VD4+ABMQqFNldCB0aGUgY29tbWlzc2lvbiBjaGFuZ2UgcmF0ZSBmb3IgYSBwb29sLgA9AUluaXRpYWwgY2hhbmdlIHJhdGUgaXMgbm90IGJvdW5kZWQsIHdoZXJlYXMgc3Vic2VxdWVudCB1cGRhdGVzIGNhbiBvbmx5IGJlIG1vcmV0cmVzdHJpY3RpdmUgdGhhbiB0aGUgY3VycmVudC5AY2xhaW1fY29tbWlzc2lvbgQBHHBvb2xfaWQ4ARhQb29sSWQAFEBkQ2xhaW0gcGVuZGluZyBjb21taXNzaW9uLgA9AVRoZSBgcm9vdGAgcm9sZSBvZiB0aGUgcG9vbCBpcyBfYWx3YXlzXyBhbGxvd2VkIHRvIGNsYWltIHRoZSBwb29sJ3MgY29tbWlzc2lvbi4AVQFJZiB0aGUgcG9vbCBoYXMgc2V0IGBDb21taXNzaW9uQ2xhaW1QZXJtaXNzaW9uOjpQZXJtaXNzaW9ubGVzc2AsIHRoZW4gYW55IGFjY291bnQgY2Fu2HRyaWdnZXIgdGhlIHByb2Nlc3Mgb2YgY2xhaW1pbmcgdGhlIHBvb2wncyBjb21taXNzaW9uLgBBAUlmIHRoZSBwb29sIGhhcyBzZXQgaXRzIGBDb21taXNzaW9uQ2xhaW1QZXJtaXNzaW9uYCB0byBgQWNjb3VudChhY2MpYCwgdGhlbiBvbmx5IGFjY291bnRzMCogYGFjY2AsIGFuZGQqIHRoZSBwb29sJ3Mgcm9vdCBhY2NvdW50ALhtYXkgY2FsbCB0aGlzIGV4dHJpbnNpYyBvbiBiZWhhbGYgb2YgdGhlIHBvb2wuAC0BUGVuZGluZyBjb21taXNzaW9ucyBhcmUgcGFpZCBvdXQgYW5kIGFkZGVkIHRvIHRoZSB0b3RhbCBjbGFpbWVkIGNvbW1pc3Npb24uuFRoZSB0b3RhbCBwZW5kaW5nIGNvbW1pc3Npb24gaXMgcmVzZXQgdG8gemVyby5MYWRqdXN0X3Bvb2xfZGVwb3NpdAQBHHBvb2xfaWQ4ARhQb29sSWQAFRzsVG9wIHVwIHRoZSBkZWZpY2l0IG9yIHdpdGhkcmF3IHRoZSBleGNlc3MgRUQgZnJvbSB0aGUgcG9vbC4AUQFXaGVuIGEgcG9vbCBpcyBjcmVhdGVkLCB0aGUgcG9vbCBkZXBvc2l0b3IgdHJhbnNmZXJzIEVEIHRvIHRoZSByZXdhcmQgYWNjb3VudCBvZiB0aGVVAXBvb2wuIEVEIGlzIHN1YmplY3QgdG8gY2hhbmdlIGFuZCBvdmVyIHRpbWUsIHRoZSBkZXBvc2l0IGluIHRoZSByZXdhcmQgYWNjb3VudCBtYXkgYmVRAWluc3VmZmljaWVudCB0byBjb3ZlciB0aGUgRUQgZGVmaWNpdCBvZiB0aGUgcG9vbCBvciB2aWNlLXZlcnNhIHdoZXJlIHRoZXJlIGlzIGV4Y2VzczEBZGVwb3NpdCB0byB0aGUgcG9vbC4gVGhpcyBjYWxsIGFsbG93cyBhbnlvbmUgdG8gYWRqdXN0IHRoZSBFRCBkZXBvc2l0IG9mIHRoZfRwb29sIGJ5IGVpdGhlciB0b3BwaW5nIHVwIHRoZSBkZWZpY2l0IG9yIGNsYWltaW5nIHRoZSBleGNlc3MufHNldF9jb21taXNzaW9uX2NsYWltX3Blcm1pc3Npb24IARxwb29sX2lkOAEYUG9vbElkAAEocGVybWlzc2lvbnUFAbxPcHRpb248Q29tbWlzc2lvbkNsYWltUGVybWlzc2lvbjxUOjpBY2NvdW50SWQ+PgAWEMxTZXQgb3IgcmVtb3ZlIGEgcG9vbCdzIGNvbW1pc3Npb24gY2xhaW0gcGVybWlzc2lvbi4AYQFEZXRlcm1pbmVzIHdobyBjYW4gY2xhaW0gdGhlIHBvb2wncyBwZW5kaW5nIGNvbW1pc3Npb24uIE9ubHkgdGhlIGBSb290YCByb2xlIG9mIHRoZSBwb29syGlzIGFibGUgdG8gY29uZmlndXJlIGNvbW1pc3Npb24gY2xhaW0gcGVybWlzc2lvbnMuLGFwcGx5X3NsYXNoBAE4bWVtYmVyX2FjY291bnQAAVBBY2NvdW50SWRMb29rdXBPZjxUPgAXJIhBcHBseSBhIHBlbmRpbmcgc2xhc2ggb24gYSBtZW1iZXIuACUBRmFpbHMgdW5sZXNzIFtgY3JhdGU6OnBhbGxldDo6Q29uZmlnOjpTdGFrZUFkYXB0ZXJgXSBpcyBvZiBzdHJhdGVneSB0eXBlOqRbYGFkYXB0ZXI6OlN0YWtlU3RyYXRlZ3lUeXBlOjpEZWxlZ2F0ZWBdLgBdAVRoZSBwZW5kaW5nIHNsYXNoIGFtb3VudCBvZiB0aGUgbWVtYmVyIG11c3QgYmUgZXF1YWwgb3IgbW9yZSB0aGFuIGBFeGlzdGVudGlhbERlcG9zaXRgLlEBVGhpcyBjYWxsIGNhbiBiZSBkaXNwYXRjaGVkIHBlcm1pc3Npb25sZXNzbHkgKGkuZS4gYnkgYW55IGFjY291bnQpLiBJZiB0aGUgZXhlY3V0aW9uSQFpcyBzdWNjZXNzZnVsLCBmZWUgaXMgcmVmdW5kZWQgYW5kIGNhbGxlciBtYXkgYmUgcmV3YXJkZWQgd2l0aCBhIHBhcnQgb2YgdGhlIHNsYXNoDQFiYXNlZCBvbiB0aGUgW2BjcmF0ZTo6cGFsbGV0OjpDb25maWc6OlN0YWtlQWRhcHRlcmBdIGNvbmZpZ3VyYXRpb24uSG1pZ3JhdGVfZGVsZWdhdGlvbgQBOG1lbWJlcl9hY2NvdW50AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AGCQdAU1pZ3JhdGVzIGRlbGVnYXRlZCBmdW5kcyBmcm9tIHRoZSBwb29sIGFjY291bnQgdG8gdGhlIGBtZW1iZXJfYWNjb3VudGAuACUBRmFpbHMgdW5sZXNzIFtgY3JhdGU6OnBhbGxldDo6Q29uZmlnOjpTdGFrZUFkYXB0ZXJgXSBpcyBvZiBzdHJhdGVneSB0eXBlOqRbYGFkYXB0ZXI6OlN0YWtlU3RyYXRlZ3lUeXBlOjpEZWxlZ2F0ZWBdLgApAVRoaXMgaXMgYSBwZXJtaXNzaW9uLWxlc3MgY2FsbCBhbmQgcmVmdW5kcyBhbnkgZmVlIGlmIGNsYWltIGlzIHN1Y2Nlc3NmdWwuAF0BSWYgdGhlIHBvb2wgaGFzIG1pZ3JhdGVkIHRvIGRlbGVnYXRpb24gYmFzZWQgc3Rha2luZywgdGhlIHN0YWtlZCB0b2tlbnMgb2YgcG9vbCBtZW1iZXJzKQFjYW4gYmUgbW92ZWQgYW5kIGhlbGQgaW4gdGhlaXIgb3duIGFjY291bnQuIFNlZSBbYGFkYXB0ZXI6OkRlbGVnYXRlU3Rha2VgXXhtaWdyYXRlX3Bvb2xfdG9fZGVsZWdhdGVfc3Rha2UEARxwb29sX2lkOAEYUG9vbElkABkk9E1pZ3JhdGUgcG9vbCBmcm9tIFtgYWRhcHRlcjo6U3Rha2VTdHJhdGVneVR5cGU6OlRyYW5zZmVyYF0gdG+kW2BhZGFwdGVyOjpTdGFrZVN0cmF0ZWd5VHlwZTo6RGVsZWdhdGVgXS4AJQFGYWlscyB1bmxlc3MgW2BjcmF0ZTo6cGFsbGV0OjpDb25maWc6OlN0YWtlQWRhcHRlcmBdIGlzIG9mIHN0cmF0ZWd5IHR5cGU6pFtgYWRhcHRlcjo6U3Rha2VTdHJhdGVneVR5cGU6OkRlbGVnYXRlYF0uAEEBVGhpcyBjYWxsIGNhbiBiZSBkaXNwYXRjaGVkIHBlcm1pc3Npb25sZXNzbHksIGFuZCByZWZ1bmRzIGFueSBmZWUgaWYgc3VjY2Vzc2Z1bC4ASQFJZiB0aGUgcG9vbCBoYXMgYWxyZWFkeSBtaWdyYXRlZCB0byBkZWxlZ2F0aW9uIGJhc2VkIHN0YWtpbmcsIHRoaXMgY2FsbCB3aWxsIGZhaWwuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLk0FCFxwYWxsZXRfbm9taW5hdGlvbl9wb29scyRCb25kRXh0cmEEHEJhbGFuY2UBWQEBCCxGcmVlQmFsYW5jZQQAWQEBHEJhbGFuY2UAAAAcUmV3YXJkcwABAABRBQhccGFsbGV0X25vbWluYXRpb25fcG9vbHMkUG9vbFN0YXRlAAEMEE9wZW4AAAAcQmxvY2tlZAABAChEZXN0cm95aW5nAAIAAFUFCFxwYWxsZXRfbm9taW5hdGlvbl9wb29scyBDb25maWdPcAQEVAFZAQEMEE5vb3AAAAAMU2V0BABZAQEEVAABABhSZW1vdmUAAgAAWQUIXHBhbGxldF9ub21pbmF0aW9uX3Bvb2xzIENvbmZpZ09wBARUATgBDBBOb29wAAAADFNldAQAOAEEVAABABhSZW1vdmUAAgAAXQUIXHBhbGxldF9ub21pbmF0aW9uX3Bvb2xzIENvbmZpZ09wBARUAaEBAQwQTm9vcAAAAAxTZXQEAKEBAQRUAAEAGFJlbW92ZQACAABhBQhccGFsbGV0X25vbWluYXRpb25fcG9vbHMgQ29uZmlnT3AEBFQBBAEMEE5vb3AAAAAMU2V0BAAEAQRUAAEAGFJlbW92ZQACAABlBQhccGFsbGV0X25vbWluYXRpb25fcG9vbHM8Q2xhaW1QZXJtaXNzaW9uAAEQMFBlcm1pc3Npb25lZAAAAFhQZXJtaXNzaW9ubGVzc0NvbXBvdW5kAAEAWFBlcm1pc3Npb25sZXNzV2l0aGRyYXcAAgBEUGVybWlzc2lvbmxlc3NBbGwAAwAAaQUEGE9wdGlvbgQEVAFtBQEIEE5vbmUAAAAQU29tZQQAbQUAAAEAAG0FAAAECKEBBABxBQhccGFsbGV0X25vbWluYXRpb25fcG9vbHNQQ29tbWlzc2lvbkNoYW5nZVJhdGUELEJsb2NrTnVtYmVyATgACAEwbWF4X2luY3JlYXNloQEBHFBlcmJpbGwAASRtaW5fZGVsYXk4ASxCbG9ja051bWJlcgAAdQUEGE9wdGlvbgQEVAF5BQEIEE5vbmUAAAAQU29tZQQAeQUAAAEAAHkFCFxwYWxsZXRfbm9taW5hdGlvbl9wb29sc2RDb21taXNzaW9uQ2xhaW1QZXJtaXNzaW9uBCRBY2NvdW50SWQBBAEIOFBlcm1pc3Npb25sZXNzAAAAHEFjY291bnQEAAQBJEFjY291bnRJZAABAAB9BQxAcGFsbGV0X2JhZ3NfbGlzdBhwYWxsZXQQQ2FsbAgEVAAESQABDBRyZWJhZwQBKGRpc2xvY2F0ZWQAAVBBY2NvdW50SWRMb29rdXBPZjxUPgAAKFkBRGVjbGFyZSB0aGF0IHNvbWUgYGRpc2xvY2F0ZWRgIGFjY291bnQgaGFzLCB0aHJvdWdoIHJld2FyZHMgb3IgcGVuYWx0aWVzLCBzdWZmaWNpZW50bHlRAWNoYW5nZWQgaXRzIHNjb3JlIHRoYXQgaXQgc2hvdWxkIHByb3Blcmx5IGZhbGwgaW50byBhIGRpZmZlcmVudCBiYWcgdGhhbiBpdHMgY3VycmVudBBvbmUuAB0BQW55b25lIGNhbiBjYWxsIHRoaXMgZnVuY3Rpb24gYWJvdXQgYW55IHBvdGVudGlhbGx5IGRpc2xvY2F0ZWQgYWNjb3VudC4ASQFXaWxsIGFsd2F5cyB1cGRhdGUgdGhlIHN0b3JlZCBzY29yZSBvZiBgZGlzbG9jYXRlZGAgdG8gdGhlIGNvcnJlY3Qgc2NvcmUsIGJhc2VkIG9uQGBTY29yZVByb3ZpZGVyYC4A1ElmIGBkaXNsb2NhdGVkYCBkb2VzIG5vdCBleGlzdHMsIGl0IHJldHVybnMgYW4gZXJyb3IuPHB1dF9pbl9mcm9udF9vZgQBHGxpZ2h0ZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABKNBNb3ZlIHRoZSBjYWxsZXIncyBJZCBkaXJlY3RseSBpbiBmcm9udCBvZiBgbGlnaHRlcmAuAFkBVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8gYW5kIGNhbiBvbmx5IGJlIGNhbGxlZCBieSB0aGUgSWQgb2Y1AXRoZSBhY2NvdW50IGdvaW5nIGluIGZyb250IG9mIGBsaWdodGVyYC4gRmVlIGlzIHBheWVkIGJ5IHRoZSBvcmlnaW4gdW5kZXIgYWxsOGNpcmN1bXN0YW5jZXMuADhPbmx5IHdvcmtzIGlmOgCULSBib3RoIG5vZGVzIGFyZSB3aXRoaW4gdGhlIHNhbWUgYmFnLNAtIGFuZCBgb3JpZ2luYCBoYXMgYSBncmVhdGVyIGBTY29yZWAgdGhhbiBgbGlnaHRlcmAuVHB1dF9pbl9mcm9udF9vZl9vdGhlcggBHGhlYXZpZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABHGxpZ2h0ZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgACDBEBU2FtZSBhcyBbYFBhbGxldDo6cHV0X2luX2Zyb250X29mYF0sIGJ1dCBpdCBjYW4gYmUgY2FsbGVkIGJ5IGFueW9uZS4AyEZlZSBpcyBwYWlkIGJ5IHRoZSBvcmlnaW4gdW5kZXIgYWxsIGNpcmN1bXN0YW5jZXMuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLoEFDHhwYWxsZXRfc3Rha2luZ19hc3luY19yY19jbGllbnQYcGFsbGV0EENhbGwEBFQAARBQcmVsYXlfc2Vzc2lvbl9yZXBvcnQEARhyZXBvcnSFBQFsU2Vzc2lvblJlcG9ydDxUOjpBY2NvdW50SWQ+AAAEBQFDYWxsZWQgdG8gaW5kaWNhdGUgdGhlIHN0YXJ0IG9mIGEgbmV3IHNlc3Npb24gb24gdGhlIHJlbGF5IGNoYWluLlxyZWxheV9uZXdfb2ZmZW5jZV9wYWdlZAQBIG9mZmVuY2VzmQUBqFZlYzwoU2Vzc2lvbkluZGV4LCBPZmZlbmNlPFQ6OkFjY291bnRJZD4pPgABACBzZXRfa2V5cwwBEGtleXMYARxWZWM8dTg+AAEUcHJvb2YYARxWZWM8dTg+AAGUbWF4X2RlbGl2ZXJ5X2FuZF9yZW1vdGVfZXhlY3V0aW9uX2ZlZWUEAVBPcHRpb248QmFsYW5jZU9mPFQ+PgAKfFUBU2V0IHNlc3Npb24ga2V5cyBmb3IgYSB2YWxpZGF0b3IuIEtleXMgYXJlIHZhbGlkYXRlZCBvbiBBc3NldEh1YiBhbmQgZm9yd2FyZGVkIHRvIFJDLgBVAU9uIHRoZSBmaXJzdCBjYWxsLCBhIGRlcG9zaXQgb2YgYEtleURlcG9zaXRgIGlzIGhlbGQgZnJvbSB0aGUgc3Rhc2guIFN1YnNlcXVlbnQgY2FsbHP0ZG8gbm90IGNoYXJnZSBhZ2Fpbi4gVGhlIGRlcG9zaXQgaXMgcmVsZWFzZWQgb24gYHB1cmdlX2tleXNgLgBsKipWYWxpZGF0aW9uIG9uIEFzc2V0SHViOioqTQEtIEtleXMgYXJlIGRlY29kZWQgYXMgYFQ6OlJlbGF5Q2hhaW5TZXNzaW9uS2V5c2AgdG8gZW5zdXJlIHRoZXkgbWF0Y2ggUkMncyBleHBlY3RlZCQgIGZvcm1hdC4xAS0gT3duZXJzaGlwIHByb29mIGlzIHZhbGlkYXRlZCB1c2luZyBgT3BhcXVlS2V5czo6b3duZXJzaGlwX3Byb29mX2lzX3ZhbGlkYC4AQQFJZiB2YWxpZGF0aW9uIHBhc3Nlcywgb25seSB0aGUgdmFsaWRhdGVkIGtleXMgYXJlIHNlbnQgdG8gUkMgKHdpdGggZW1wdHkgcHJvb2YpLIBzaW5jZSBSQyB0cnVzdHMgQUgncyB2YWxpZGF0aW9uLgAkKipGZWVzOioqVQFUaGUgYWN0dWFsIGNvc3Qgb2YgdGhpcyBjYWxsIGlzIGhpZ2hlciB0aGFuIHdoYXQgdGhlIHdlaWdodC1iYXNlZCBmZWUgZXN0aW1hdGUgc2hvd3MuUQFJbiBhZGRpdGlvbiB0byB0aGUgbG9jYWwgdHJhbnNhY3Rpb24gd2VpZ2h0IGZlZSwgdGhlIHN0YXNoIGFjY291bnQgaXMgY2hhcmdlZCBhbiBYQ01JAWZlZSAoZGVsaXZlcnkgKyBSQyBleGVjdXRpb24gY29zdCkgdmlhIGBYY21FeGVjdXRvcjo6Y2hhcmdlX2ZlZXNgLiBUaGUgcmVsYXkgY2hhaW49AXVzZXMgYFVucGFpZEV4ZWN1dGlvbmAsIHNvIHRoZSBmdWxsIHJlbW90ZSBjb3N0IGlzIGNoYXJnZWQgdXBmcm9udCBvbiBBc3NldEh1Yi4ALQFXaGVuIGNhbGxlZCB2aWEgYSBzdGFraW5nIHByb3h5LCB0aGUgcHJveHkgcGF5cyB0aGUgdHJhbnNhY3Rpb24gd2VpZ2h0IGZlZSzYd2hpbGUgdGhlIHN0YXNoIChkZWxlZ2F0aW5nIGFjY291bnQpIHBheXMgdGhlIFhDTSBmZWUuAEgqKk1heCBGZWUgTGltaXQ6KipFAVVzZXJzIGNhbiBvcHRpb25hbGx5IHNwZWNpZnkgYG1heF9kZWxpdmVyeV9hbmRfcmVtb3RlX2V4ZWN1dGlvbl9mZWVgIHRvIGxpbWl0IHRoZV0BZGVsaXZlcnkgKyBSQyBleGVjdXRpb24gZmVlLiBUaGlzIGRvZXMgbm90IGluY2x1ZGUgdGhlIGxvY2FsIHRyYW5zYWN0aW9uIHdlaWdodCBmZWUuIElmXQF0aGUgZmVlIGV4Y2VlZHMgdGhpcyBsaW1pdCwgdGhlIG9wZXJhdGlvbiBmYWlscyB3aXRoIGBGZWVzRXhjZWVkZWRNYXhgLiBQYXNzIGBOb25lYCBmb3JMdW5saW1pdGVkIChubyBjYXApLgBZAU5PVEU6IHVubGlrZSB0aGUgY3VycmVudCBmbG93IGZvciBuZXcgdmFsaWRhdG9ycyBvbiBSQyAoYm9uZCAtPiBzZXRfa2V5cyAtPiB2YWxpZGF0ZSksVQF1c2VycyBvbiBBc3NldCBIdWIgTVVTVCBjYWxsIGJvbmQgYW5kIHZhbGlkYXRlIEJFRk9SRSBjYWxsaW5nIHNldF9rZXlzLiBBdHRlbXB0aW5nIHRvJQFzZXQga2V5cyBiZWZvcmUgZGVjbGFyaW5nIGludGVudCB0byB2YWxpZGF0ZSB3aWxsIGZhaWwgd2l0aCBOb3RWYWxpZGF0b3IuKHB1cmdlX2tleXMEAZRtYXhfZGVsaXZlcnlfYW5kX3JlbW90ZV9leGVjdXRpb25fZmVlZQQBUE9wdGlvbjxCYWxhbmNlT2Y8VD4+AAtoAQFSZW1vdmUgc2Vzc2lvbiBrZXlzIGZvciBhIHZhbGlkYXRvciBhbmQgcmVsZWFzZSB0aGUga2V5IGRlcG9zaXQuAKhUaGlzIHB1cmdlcyB0aGUga2V5cyBmcm9tIHRoZSBSZWxheSBDaGFpbi4ARQFVbmxpa2UgYHNldF9rZXlzYCwgdGhpcyBkb2VzIG5vdCByZXF1aXJlIHRoZSBjYWxsZXIgdG8gYmUgYSByZWdpc3RlcmVkIHZhbGlkYXRvci5JAVRoaXMgaXMgaW50ZW50aW9uYWw6IGEgdmFsaWRhdG9yIHdobyBoYXMgY2hpbGxlZCAoc3RvcHBlZCB2YWxpZGF0aW5nKSBzaG91bGQgc3RpbGw5AWJlIGFibGUgdG8gcHVyZ2UgdGhlaXIgc2Vzc2lvbiBrZXlzLiBUaGlzIG1hdGNoZXMgdGhlIGJlaGF2aW9yIG9mIHRoZSBvcmlnaW5hbPBgcGFsbGV0LXNlc3Npb246OnB1cmdlX2tleXNgIHdoaWNoIGFsbG93cyBhbnlvbmUgdG8gY2FsbCBpdC4AOQFUaGUgUmVsYXkgQ2hhaW4gd2lsbCByZWplY3QgdGhlIGNhbGwgd2l0aCBgTm9LZXlzYCBlcnJvciBpZiB0aGUgYWNjb3VudCBoYXMgbm8ka2V5cyBzZXQuACQqKkZlZXM6KipVAVRoZSBhY3R1YWwgY29zdCBvZiB0aGlzIGNhbGwgaXMgaGlnaGVyIHRoYW4gd2hhdCB0aGUgd2VpZ2h0LWJhc2VkIGZlZSBlc3RpbWF0ZSBzaG93cy5FAUluIGFkZGl0aW9uIHRvIHRoZSBsb2NhbCB0cmFuc2FjdGlvbiB3ZWlnaHQgZmVlLCB0aGUgY2FsbGVyIGlzIGNoYXJnZWQgYW4gWENNIGZlZU0BKGRlbGl2ZXJ5ICsgUkMgZXhlY3V0aW9uIGNvc3QpIHZpYSBgWGNtRXhlY3V0b3I6OmNoYXJnZV9mZWVzYC4gVGhlIHJlbGF5IGNoYWluIHVzZXMpAWBVbnBhaWRFeGVjdXRpb25gLCBzbyB0aGUgZnVsbCByZW1vdGUgY29zdCBpcyBjaGFyZ2VkIHVwZnJvbnQgb24gQXNzZXRIdWIuAC0BV2hlbiBjYWxsZWQgdmlhIGEgc3Rha2luZyBwcm94eSwgdGhlIHByb3h5IHBheXMgdGhlIHRyYW5zYWN0aW9uIHdlaWdodCBmZWUsuHdoaWxlIHRoZSBkZWxlZ2F0aW5nIGFjY291bnQgcGF5cyB0aGUgWENNIGZlZS4ASCoqTWF4IEZlZSBMaW1pdDoqKkUBVXNlcnMgY2FuIG9wdGlvbmFsbHkgc3BlY2lmeSBgbWF4X2RlbGl2ZXJ5X2FuZF9yZW1vdGVfZXhlY3V0aW9uX2ZlZWAgdG8gbGltaXQgdGhlXQFkZWxpdmVyeSArIFJDIGV4ZWN1dGlvbiBmZWUuIFRoaXMgZG9lcyBub3QgaW5jbHVkZSB0aGUgbG9jYWwgdHJhbnNhY3Rpb24gd2VpZ2h0IGZlZS4gSWZdAXRoZSBmZWUgZXhjZWVkcyB0aGlzIGxpbWl0LCB0aGUgb3BlcmF0aW9uIGZhaWxzIHdpdGggYEZlZXNFeGNlZWRlZE1heGAuIFBhc3MgYE5vbmVgIGZvckx1bmxpbWl0ZWQgKG5vIGNhcCkuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLoUFCHhwYWxsZXRfc3Rha2luZ19hc3luY19yY19jbGllbnQ0U2Vzc2lvblJlcG9ydAQkQWNjb3VudElkAQQAEAEkZW5kX2luZGV4OAEwU2Vzc2lvbkluZGV4AAFAdmFsaWRhdG9yX3BvaW50c4kFAVRWZWM8KEFjY291bnRJZCwgdTMyKT4AAVBhY3RpdmF0aW9uX3RpbWVzdGFtcJEFAUhPcHRpb248KHU2NCwgdTMyKT4AASBsZWZ0b3Zlcl0BARBib29sAACJBQAAAo0FAI0FAAAECAQ4AJEFBBhPcHRpb24EBFQBlQUBCBBOb25lAAAAEFNvbWUEAJUFAAABAACVBQAABAgoOACZBQAAAp0FAJ0FAAAECDihBQChBQh4cGFsbGV0X3N0YWtpbmdfYXN5bmNfcmNfY2xpZW50HE9mZmVuY2UEJEFjY291bnRJZAEEAAwBIG9mZmVuZGVyBAEkQWNjb3VudElkAAEkcmVwb3J0ZXJzYQEBOFZlYzxBY2NvdW50SWQ+AAE4c2xhc2hfZnJhY3Rpb26hAQEcUGVyYmlsbAAApQUMkHBhbGxldF9lbGVjdGlvbl9wcm92aWRlcl9tdWx0aV9ibG9jaxhwYWxsZXQQQ2FsbAQEVAABCBhtYW5hZ2UEAQhvcKkFAUxNYW5hZ2VyT3BlcmF0aW9uPFQ+AAAUTE1hbmFnZSB0aGlzIHBhbGxldC4A6FRoZSBvcmlnaW4gb2YgdGhpcyBjYWxsIG11c3QgYmUgW2BDb25maWc6Ok1hbmFnZXJPcmlnaW5gXS4ACQFTZWUgW2BNYW5hZ2VyT3BlcmF0aW9uYF0gZm9yIHZhcmlvdXMgb3BlcmF0aW9ucyB0aGF0IGFyZSBwb3NzaWJsZS4UYWRtaW4EAQhvcLEFAURBZG1pbk9wZXJhdGlvbjxUPgABAAQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy6pBQiQcGFsbGV0X2VsZWN0aW9uX3Byb3ZpZGVyX211bHRpX2Jsb2NrQE1hbmFnZXJPcGVyYXRpb24EBFQAAQxARm9yY2VSb3RhdGVSb3VuZAAAADRGb3JjZVNldFBoYXNlBACtBQEgUGhhc2U8VD4AAQBERW1lcmdlbmN5RmFsbGJhY2sAAgAArQUMkHBhbGxldF9lbGVjdGlvbl9wcm92aWRlcl9tdWx0aV9ibG9jaxR0eXBlcxRQaGFzZQQEVAABIAxPZmYAAAAYU2lnbmVkBAA4AURCbG9ja051bWJlckZvcjxUPgABAEBTaWduZWRWYWxpZGF0aW9uBAA4AURCbG9ja051bWJlckZvcjxUPgACACBVbnNpZ25lZAQAOAFEQmxvY2tOdW1iZXJGb3I8VD4AAwAgU25hcHNob3QEADgBJFBhZ2VJbmRleAAEABBEb25lAAUAGEV4cG9ydAQAOAEkUGFnZUluZGV4AAYAJEVtZXJnZW5jeQAHAACxBQiQcGFsbGV0X2VsZWN0aW9uX3Byb3ZpZGVyX211bHRpX2Jsb2NrOEFkbWluT3BlcmF0aW9uBARUAAEIUEVtZXJnZW5jeVNldFNvbHV0aW9uCAC1BQGEQm94PEJvdW5kZWRTdXBwb3J0c09mPFBhbGxldDxUPj4+AADVBQE0RWxlY3Rpb25TY29yZQAAAFBTZXRNaW5VbnRydXN0ZWRTY29yZQQA1QUBNEVsZWN0aW9uU2NvcmUAAQAAtQUIfGZyYW1lX2VsZWN0aW9uX3Byb3ZpZGVyX3N1cHBvcnQ8Qm91bmRlZFN1cHBvcnRzDCRBY2NvdW50SWQBBBhCT3V0ZXIAGEJJbm5lcgAABAC5BQEJAUJvdW5kZWRWZWM8KEFjY291bnRJZCwgQm91bmRlZFN1cHBvcnQ8QWNjb3VudElkLCBCSW5uZXI+KSwgQk91dGVyPgAAuQUMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAG9BQRTAAAEANEFARhWZWM8VD4AAL0FAAAECATBBQDBBQh8ZnJhbWVfZWxlY3Rpb25fcHJvdmlkZXJfc3VwcG9ydDhCb3VuZGVkU3VwcG9ydAgkQWNjb3VudElkAQQUQm91bmQAAAgBFHRvdGFsWQEBPEV4dGVuZGVkQmFsYW5jZQABGHZvdGVyc8UFAbxCb3VuZGVkVmVjPChBY2NvdW50SWQsIEV4dGVuZGVkQmFsYW5jZSksIEJvdW5kPgAAxQUMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAHJBQRTAAAEAM0FARhWZWM8VD4AAMkFAAAECARZAQDNBQAAAskFANEFAAACvQUA1QUIRHNwX25wb3NfZWxlY3Rpb25zNEVsZWN0aW9uU2NvcmUAAAwBNG1pbmltYWxfc3Rha2VZAQE8RXh0ZW5kZWRCYWxhbmNlAAEkc3VtX3N0YWtlWQEBPEV4dGVuZGVkQmFsYW5jZQABRHN1bV9zdGFrZV9zcXVhcmVkWQEBPEV4dGVuZGVkQmFsYW5jZQAA2QUUkHBhbGxldF9lbGVjdGlvbl9wcm92aWRlcl9tdWx0aV9ibG9jayB2ZXJpZmllchRpbXBscxhwYWxsZXQQQ2FsbAQEVAABAAQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy7dBRCQcGFsbGV0X2VsZWN0aW9uX3Byb3ZpZGVyX211bHRpX2Jsb2NrIHVuc2lnbmVkGHBhbGxldBBDYWxsBARUAAEEPHN1Ym1pdF91bnNpZ25lZAQBOHBhZ2VkX3NvbHV0aW9u4QUBlEJveDxQYWdlZFJhd1NvbHV0aW9uPFQ6Ok1pbmVyQ29uZmlnPj4AADxwU3VibWl0IGFuIHVuc2lnbmVkIHNvbHV0aW9uLgBVAVRoaXMgd29ya3MgdmVyeSBtdWNoIGxpa2UgYW4gaW5oZXJlbnQsIGFzIG9ubHkgdGhlIHZhbGlkYXRvcnMgYXJlIHBlcm1pdHRlZCB0byBzdWJtaXRZAWFueXRoaW5nLiBCeSBkZWZhdWx0IHZhbGlkYXRvcnMgd2lsbCBjb21wdXRlIHRoaXMgY2FsbCBpbiB0aGVpciBgb2ZmY2hhaW5fd29ya2VyYCBob29rbGFuZCB0cnkgYW5kIHN1Ym1pdCBpdCBiYWNrLgBFAVRoaXMgaXMgZGlmZmVyZW50IGZyb20gc2lnbmVkIHBhZ2Ugc3VibWlzc2lvbiBtYWlubHkgaW4gdGhhdCB0aGUgc29sdXRpb24gcGFnZSBpc1B2ZXJpZmllZCBvbiB0aGUgZmx5LgA9AVRoZSBgcGFnZWRfc29sdXRpb25gIG1heSBjb250YWluIGF0IG1vc3QgW2BDb25maWc6Ok1pbmVyUGFnZXNgXSBwYWdlcy4gVGhleSBhcmUNAWludGVycHJldGVkIGFzIG1zcCAtPiBsc3AsIGFzIHBlciBbYGNyYXRlOjpQYWxsZXQ6Om1zcF9yYW5nZV9mb3JgXS4AXQFGb3IgZXhhbXBsZSwgaWYgYFBhZ2VzID0gNGAsIGFuZCBgTWluZXJQYWdlcyA9IDJgLCBvdXIgZnVsbCBzbmFwc2hvdCByYW5nZSB3b3VsZCBiZSBbMCxVATEsIDIsIDNdLCB3aXRoIDMgYmVpbmcgbXNwLiBCdXQsIGluIHRoaXMgY2FzZSwgdGhlbiB0aGUgYHBhZ2VkX3Jhd19zb2x1dGlvbi5wYWdlc2AgaXPcZXhwZWN0ZWQgdG8gY29ycmVzcG9uZCB0byBgW3NuYXBzaG90KDIpLCBzbmFwc2hvdCgzKV1gLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy7hBQyQcGFsbGV0X2VsZWN0aW9uX3Byb3ZpZGVyX211bHRpX2Jsb2NrFHR5cGVzQFBhZ2VkUmF3U29sdXRpb24EBFQAAAwBOHNvbHV0aW9uX3BhZ2Vz5QUBSFZlYzxTb2x1dGlvbk9mPFQ+PgABFHNjb3Jl1QUBNEVsZWN0aW9uU2NvcmUAARRyb3VuZDgBDHUzMgAA5QUAAALpBQDpBQxcYXNzZXRfaHViX3Bhc2VvX3J1bnRpbWUcc3Rha2luZ1ROcG9zQ29tcGFjdFNvbHV0aW9uMTYAAEABGHZvdGVzMe0FAAABGHZvdGVzMvkFAAABGHZvdGVzMw0GAAABGHZvdGVzNBkGAAABGHZvdGVzNSUGAAABGHZvdGVzNjEGAAABGHZvdGVzNz0GAAABGHZvdGVzOEkGAAABGHZvdGVzOVUGAAABHHZvdGVzMTBhBgAAARx2b3RlczExbQYAAAEcdm90ZXMxMnkGAAABHHZvdGVzMTOFBgAAARx2b3RlczE0kQYAAAEcdm90ZXMxNZ0GAAABHHZvdGVzMTapBgAAAO0FAAAC8QUA8QUAAAQIZPUFAPUFAAAG7QMA+QUAAAL9BQD9BQAABAxkAQb1BQABBgAABAj1BQUGAAUGAAAGCQYACQYMNHNwX2FyaXRobWV0aWMocGVyX3RoaW5ncxhQZXJVMTYAAAQA7QMBDHUxNgAADQYAAAIRBgARBgAABAxkFQb1BQAVBgAAAwIAAAABBgAZBgAAAh0GAB0GAAAEDGQhBvUFACEGAAADAwAAAAEGACUGAAACKQYAKQYAAAQMZC0G9QUALQYAAAMEAAAAAQYAMQYAAAI1BgA1BgAABAxkOQb1BQA5BgAAAwUAAAABBgA9BgAAAkEGAEEGAAAEDGRFBvUFAEUGAAADBgAAAAEGAEkGAAACTQYATQYAAAQMZFEG9QUAUQYAAAMHAAAAAQYAVQYAAAJZBgBZBgAABAxkXQb1BQBdBgAAAwgAAAABBgBhBgAAAmUGAGUGAAAEDGRpBvUFAGkGAAADCQAAAAEGAG0GAAACcQYAcQYAAAQMZHUG9QUAdQYAAAMKAAAAAQYAeQYAAAJ9BgB9BgAABAxkgQb1BQCBBgAAAwsAAAABBgCFBgAAAokGAIkGAAAEDGSNBvUFAI0GAAADDAAAAAEGAJEGAAAClQYAlQYAAAQMZJkG9QUAmQYAAAMNAAAAAQYAnQYAAAKhBgChBgAABAxkpQb1BQClBgAAAw4AAAABBgCpBgAAAq0GAK0GAAAEDGSxBvUFALEGAAADDwAAAAEGALUGEJBwYWxsZXRfZWxlY3Rpb25fcHJvdmlkZXJfbXVsdGlfYmxvY2sYc2lnbmVkGHBhbGxldBBDYWxsBARUAAEUIHJlZ2lzdGVyBAE0Y2xhaW1lZF9zY29yZdUFATRFbGVjdGlvblNjb3JlAAAExFJlZ2lzdGVyIG9uZXNlbGYgZm9yIGFuIHVwY29taW5nIHNpZ25lZCBlbGVjdGlvbi4sc3VibWl0X3BhZ2UIARBwYWdlOAEkUGFnZUluZGV4AAE4bWF5YmVfc29sdXRpb265BgGcT3B0aW9uPEJveDxTb2x1dGlvbk9mPFQ6Ok1pbmVyQ29uZmlnPj4+AAEgjFN1Ym1pdCBhIHNpbmdsZSBwYWdlIG9mIGEgc29sdXRpb24uALBNdXN0IGFsd2F5cyBjb21lIGFmdGVyIFtgUGFsbGV0OjpyZWdpc3RlcmBdLgDgYG1heWJlX3NvbHV0aW9uYCBjYW4gYmUgc2V0IHRvIGBOb25lYCB0byBlcmFzZSB0aGUgcGFnZS4ANQFDb2xsZWN0cyBkZXBvc2l0cyBmcm9tIHRoZSBzaWduZWQgb3JpZ2luIGJhc2VkIG9uIFtgQ29uZmlnOjpEZXBvc2l0QmFzZWBdIGFuZGxbYENvbmZpZzo6RGVwb3NpdFBlclBhZ2VgXS4QYmFpbAACFFRSZXRyYWN0IGEgc3VibWlzc2lvbi4ATQFBIHBvcnRpb24gb2YgdGhlIGRlcG9zaXQgbWF5IGJlIHJldHVybmVkLCBiYXNlZCBvbiB0aGUgW2BDb25maWc6OkVqZWN0R3JhY2VSYXRpb2BdLgDEVGhpcyB3aWxsIGZ1bGx5IHJlbW92ZSB0aGUgc29sdXRpb24gZnJvbSBzdG9yYWdlLlBjbGVhcl9vbGRfcm91bmRfZGF0YQgBFHJvdW5kOAEMdTMyAAE0d2l0bmVzc19wYWdlczgBDHUzMgADGMBDbGVhciB0aGUgZGF0YSBvZiBhIHN1Ym1pdHRlciBmb3JtIGFuIG9sZCByb3VuZC4AMQFUaGUgZGlzcGF0Y2ggb3JpZ2luIG9mIHRoaXMgY2FsbCBtdXN0IGJlIHNpZ25lZCwgYW5kIHRoZSBvcmlnaW5hbCBzdWJtaXR0ZXIuAF0BVGhpcyBjYW4gb25seSBiZSBjYWxsZWQgZm9yIHN1Ym1pc3Npb25zIHRoYXQgZW5kIHVwIGJlaW5nIGRpc2NhcmRlZCwgYXMgaW4gdGhleSBhcmUgbm90xHByb2Nlc3NlZCBhbmQgdGhleSBlbmQgdXAgbGluZ2VyaW5nIGluIHRoZSBxdWV1ZS5Ec2V0X2ludnVsbmVyYWJsZXMEAQxpbnZhAQFEVmVjPFQ6OkFjY291bnRJZD4ABAxoU2V0IHRoZSBpbnZ1bG5lcmFibGUgbGlzdC4AEQFEaXNwYXRjaCBvcmlnaW4gbXVzdCB0aGUgdGhlIHNhbWUgYXMgW2BjcmF0ZTo6Q29uZmlnOjpBZG1pbk9yaWdpbmBdLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy65BgQYT3B0aW9uBARUAekFAQgQTm9uZQAAABBTb21lBADpBQAAAQAAvQYQUHBhbGxldF9zdGFraW5nX2FzeW5jGHBhbGxldBhwYWxsZXQQQ2FsbAQEVAABiBBib25kCAEUdmFsdWVVAQEwQmFsYW5jZU9mPFQ+AAEUcGF5ZWXBBgF8UmV3YXJkRGVzdGluYXRpb248VDo6QWNjb3VudElkPgAAMGEBVGFrZSB0aGUgb3JpZ2luIGFjY291bnQgYXMgYSBzdGFzaCBhbmQgbG9jayB1cCBgdmFsdWVgIG9mIGl0cyBiYWxhbmNlLiBgY29udHJvbGxlcmAgd2lsbIBiZSB0aGUgYWNjb3VudCB0aGF0IGNvbnRyb2xzIGl0LgAtAWB2YWx1ZWAgbXVzdCBiZSBtb3JlIHRoYW4gdGhlIGBtaW5pbXVtX2JhbGFuY2VgIHNwZWNpZmllZCBieSBgVDo6Q3VycmVuY3lgLgAhAVRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfIGJ5IHRoZSBzdGFzaCBhY2NvdW50LgA8RW1pdHMgYEJvbmRlZGAuAE0BTk9URTogVHdvIG9mIHRoZSBzdG9yYWdlIHdyaXRlcyAoYFNlbGY6OmJvbmRlZGAsIGBTZWxmOjpwYXllZWApIGFyZSBfbmV2ZXJfIGNsZWFuZWRZAXVubGVzcyB0aGUgYG9yaWdpbmAgZmFsbHMgYmVsb3cgX2V4aXN0ZW50aWFsIGRlcG9zaXRfIChvciBlcXVhbCB0byAwKSBhbmQgZ2V0cyByZW1vdmVkIGFzIGR1c3QuKGJvbmRfZXh0cmEEAThtYXhfYWRkaXRpb25hbFUBATBCYWxhbmNlT2Y8VD4AAShhAUFkZCBzb21lIGV4dHJhIGFtb3VudCB0aGF0IGhhdmUgYXBwZWFyZWQgaW4gdGhlIHN0YXNoIGBmcmVlX2JhbGFuY2VgIGludG8gdGhlIGJhbGFuY2UgdXAwZm9yIHN0YWtpbmcuAFEBVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8gYnkgdGhlIHN0YXNoLCBub3QgdGhlIGNvbnRyb2xsZXIuAE0BVXNlIHRoaXMgaWYgdGhlcmUgYXJlIGFkZGl0aW9uYWwgZnVuZHMgaW4geW91ciBzdGFzaCBhY2NvdW50IHRoYXQgeW91IHdpc2ggdG8gYm9uZC5VAVVubGlrZSBbYGJvbmRgXShTZWxmOjpib25kKSBvciBbYHVuYm9uZGBdKFNlbGY6OnVuYm9uZCkgdGhpcyBmdW5jdGlvbiBkb2VzIG5vdCBpbXBvc2W8YW55IGxpbWl0YXRpb24gb24gdGhlIGFtb3VudCB0aGF0IGNhbiBiZSBhZGRlZC4APEVtaXRzIGBCb25kZWRgLhh1bmJvbmQEARR2YWx1ZVUBATBCYWxhbmNlT2Y8VD4AAkxRAVNjaGVkdWxlIGEgcG9ydGlvbiBvZiB0aGUgc3Rhc2ggdG8gYmUgdW5sb2NrZWQgcmVhZHkgZm9yIHRyYW5zZmVyIG91dCBhZnRlciB0aGUgYm9uZPxwZXJpb2QgZW5kcy4gSWYgdGhpcyBsZWF2ZXMgYW4gYW1vdW50IGFjdGl2ZWx5IGJvbmRlZCBsZXNzIHRoYW4hAVtgYXNzZXQ6OmV4aXN0ZW50aWFsX2RlcG9zaXRgXSwgdGhlbiBpdCBpcyBpbmNyZWFzZWQgdG8gdGhlIGZ1bGwgYW1vdW50LgBRAVRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfIGJ5IHRoZSBjb250cm9sbGVyLCBub3QgdGhlIHN0YXNoLgBFAU9uY2UgdGhlIHVubG9jayBwZXJpb2QgaXMgZG9uZSwgeW91IGNhbiBjYWxsIGB3aXRoZHJhd191bmJvbmRlZGAgdG8gYWN0dWFsbHkgbW92Zbx0aGUgZnVuZHMgb3V0IG9mIG1hbmFnZW1lbnQgcmVhZHkgZm9yIHRyYW5zZmVyLgAxAU5vIG1vcmUgdGhhbiBhIGxpbWl0ZWQgbnVtYmVyIG9mIHVubG9ja2luZyBjaHVua3MgKHNlZSBgTWF4VW5sb2NraW5nQ2h1bmtzYClBAWNhbiBjby1leGlzdHMgYXQgdGhlIHNhbWUgdGltZS4gSWYgdGhlcmUgYXJlIG5vIHVubG9ja2luZyBjaHVua3Mgc2xvdHMgYXZhaWxhYmxlRQFbYENhbGw6OndpdGhkcmF3X3VuYm9uZGVkYF0gaXMgY2FsbGVkIHRvIHJlbW92ZSBzb21lIG9mIHRoZSBjaHVua3MgKGlmIHBvc3NpYmxlKS4AOQFJZiBhIHVzZXIgZW5jb3VudGVycyB0aGUgYEluc3VmZmljaWVudEJvbmRgIGVycm9yIHdoZW4gY2FsbGluZyB0aGlzIGV4dHJpbnNpYywZAXRoZXkgc2hvdWxkIGNhbGwgYGNoaWxsYCBmaXJzdCBpbiBvcmRlciB0byBmcmVlIHVwIHRoZWlyIGJvbmRlZCBmdW5kcy4AREVtaXRzIGBVbmJvbmRlZGAuAJRTZWUgYWxzbyBbYENhbGw6OndpdGhkcmF3X3VuYm9uZGVkYF0uRHdpdGhkcmF3X3VuYm9uZGVkBAFIbnVtX3NsYXNoaW5nX3NwYW5zOAEMdTMyAANMKQFSZW1vdmUgYW55IHN0YWtlIHRoYXQgaGFzIGJlZW4gZnVsbHkgdW5ib25kZWQgYW5kIGlzIHJlYWR5IGZvciB3aXRoZHJhd2FsLgBVAVN0YWtlIGlzIGNvbnNpZGVyZWQgZnVsbHkgdW5ib25kZWQgb25jZSBbYENvbmZpZzo6Qm9uZGluZ0R1cmF0aW9uYF0gaGFzIGVsYXBzZWQgc2luY2VdAXRoZSB1bmJvbmRpbmcgd2FzIGluaXRpYXRlZC4gSW4gcmFyZSBjYXNlc+KAlHN1Y2ggYXMgd2hlbiBvZmZlbmNlcyBmb3IgdGhlIHVuYm9uZGVkIGVyYVUBaGF2ZSBiZWVuIHJlcG9ydGVkIGJ1dCBub3QgeWV0IHByb2Nlc3NlZOKAlHdpdGhkcmF3YWwgaXMgcmVzdHJpY3RlZCB0byBlcmFzIGZvciB3aGljaIRhbGwgb2ZmZW5jZXMgaGF2ZSBiZWVuIHByb2Nlc3NlZC4AJQFUaGUgdW5sb2NrZWQgc3Rha2Ugd2lsbCBiZSByZXR1cm5lZCBhcyBmcmVlIGJhbGFuY2UgaW4gdGhlIHN0YXNoIGFjY291bnQuABUBVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8gYnkgdGhlIGNvbnRyb2xsZXIuAEhFbWl0cyBgV2l0aGRyYXduYC4AaFNlZSBhbHNvIFtgQ2FsbDo6dW5ib25kYF0uADQjIyBQYXJhbWV0ZXJzAFkBLSBgbnVtX3NsYXNoaW5nX3NwYW5zYDogKipEZXByZWNhdGVkKiouIFJldGFpbmVkIG9ubHkgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHk7IHRoaXNoICBwYXJhbWV0ZXIgaGFzIG5vIGVmZmVjdC4gdmFsaWRhdGUEARRwcmVmc8UGAThWYWxpZGF0b3JQcmVmcwAEFOREZWNsYXJlIHRoZSBkZXNpcmUgdG8gdmFsaWRhdGUgZm9yIHRoZSBvcmlnaW4gY29udHJvbGxlci4A2EVmZmVjdHMgd2lsbCBiZSBmZWx0IGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIG5leHQgZXJhLgBRAVRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfIGJ5IHRoZSBjb250cm9sbGVyLCBub3QgdGhlIHN0YXNoLiBub21pbmF0ZQQBHHRhcmdldHPNBgFkVmVjPEFjY291bnRJZExvb2t1cE9mPFQ+PgAFFA0BRGVjbGFyZSB0aGUgZGVzaXJlIHRvIG5vbWluYXRlIGB0YXJnZXRzYCBmb3IgdGhlIG9yaWdpbiBjb250cm9sbGVyLgDYRWZmZWN0cyB3aWxsIGJlIGZlbHQgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgbmV4dCBlcmEuAFEBVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8gYnkgdGhlIGNvbnRyb2xsZXIsIG5vdCB0aGUgc3Rhc2guFGNoaWxsAAYoxERlY2xhcmUgbm8gZGVzaXJlIHRvIGVpdGhlciB2YWxpZGF0ZSBvciBub21pbmF0ZS4A2EVmZmVjdHMgd2lsbCBiZSBmZWx0IGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIG5leHQgZXJhLgBRAVRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfIGJ5IHRoZSBjb250cm9sbGVyLCBub3QgdGhlIHN0YXNoLgA0IyMgQ29tcGxleGl0eeQtIEluZGVwZW5kZW50IG9mIHRoZSBhcmd1bWVudHMuIEluc2lnbmlmaWNhbnQgY29tcGxleGl0eS5QLSBDb250YWlucyBvbmUgcmVhZC7ELSBXcml0ZXMgYXJlIGxpbWl0ZWQgdG8gdGhlIGBvcmlnaW5gIGFjY291bnQga2V5LiRzZXRfcGF5ZWUEARRwYXllZcEGAXxSZXdhcmREZXN0aW5hdGlvbjxUOjpBY2NvdW50SWQ+AAcUtChSZS0pc2V0IHRoZSBwYXltZW50IHRhcmdldCBmb3IgYSBjb250cm9sbGVyLgBRAUVmZmVjdHMgd2lsbCBiZSBmZWx0IGluc3RhbnRseSAoYXMgc29vbiBhcyB0aGlzIGZ1bmN0aW9uIGlzIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkpLgBRAVRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfIGJ5IHRoZSBjb250cm9sbGVyLCBub3QgdGhlIHN0YXNoLjhzZXRfY29udHJvbGxlcgAIIEUBKFJlLSlzZXRzIHRoZSBjb250cm9sbGVyIG9mIGEgc3Rhc2ggdG8gdGhlIHN0YXNoIGl0c2VsZi4gVGhpcyBmdW5jdGlvbiBwcmV2aW91c2x5TQFhY2NlcHRlZCBhIGBjb250cm9sbGVyYCBhcmd1bWVudCB0byBzZXQgdGhlIGNvbnRyb2xsZXIgdG8gYW4gYWNjb3VudCBvdGhlciB0aGFuIHRoZVkBc3Rhc2ggaXRzZWxmLiBUaGlzIGZ1bmN0aW9uYWxpdHkgaGFzIG5vdyBiZWVuIHJlbW92ZWQsIG5vdyBvbmx5IHNldHRpbmcgdGhlIGNvbnRyb2xsZXKMdG8gdGhlIHN0YXNoLCBpZiBpdCBpcyBub3QgYWxyZWFkeS4AUQFFZmZlY3RzIHdpbGwgYmUgZmVsdCBpbnN0YW50bHkgKGFzIHNvb24gYXMgdGhpcyBmdW5jdGlvbiBpcyBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5KS4AUQFUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXyBieSB0aGUgc3Rhc2gsIG5vdCB0aGUgY29udHJvbGxlci5Mc2V0X3ZhbGlkYXRvcl9jb3VudAQBDG5ld2QBDHUzMgAJDJBTZXRzIHRoZSBpZGVhbCBudW1iZXIgb2YgdmFsaWRhdG9ycy4AhFRoZSBkaXNwYXRjaCBvcmlnaW4gbXVzdCBiZSBSb290LmBpbmNyZWFzZV92YWxpZGF0b3JfY291bnQEAShhZGRpdGlvbmFsZAEMdTMyAAoQ6EluY3JlbWVudHMgdGhlIGlkZWFsIG51bWJlciBvZiB2YWxpZGF0b3JzIHVwIHRvIG1heGltdW0gb2ZUYFQ6Ok1heFZhbGlkYXRvclNldGAuAIRUaGUgZGlzcGF0Y2ggb3JpZ2luIG11c3QgYmUgUm9vdC5Uc2NhbGVfdmFsaWRhdG9yX2NvdW50BAEYZmFjdG9y0QYBHFBlcmNlbnQACxARAVNjYWxlIHVwIHRoZSBpZGVhbCBudW1iZXIgb2YgdmFsaWRhdG9ycyBieSBhIGZhY3RvciB1cCB0byBtYXhpbXVtIG9mVGBUOjpNYXhWYWxpZGF0b3JTZXRgLgCEVGhlIGRpc3BhdGNoIG9yaWdpbiBtdXN0IGJlIFJvb3QuNGZvcmNlX25vX2VyYXMADCSsRm9yY2UgdGhlcmUgdG8gYmUgbm8gbmV3IGVyYXMgaW5kZWZpbml0ZWx5LgCEVGhlIGRpc3BhdGNoIG9yaWdpbiBtdXN0IGJlIFJvb3QuACQjIFdhcm5pbmcAGQFUaGUgZWxlY3Rpb24gcHJvY2VzcyBzdGFydHMgbXVsdGlwbGUgYmxvY2tzIGJlZm9yZSB0aGUgZW5kIG9mIHRoZSBlcmEuOQFUaHVzIHRoZSBlbGVjdGlvbiBwcm9jZXNzIG1heSBiZSBvbmdvaW5nIHdoZW4gdGhpcyBpcyBjYWxsZWQuIEluIHRoaXMgY2FzZSB0aGXcZWxlY3Rpb24gd2lsbCBjb250aW51ZSB1bnRpbCB0aGUgbmV4dCBlcmEgaXMgdHJpZ2dlcmVkLjRmb3JjZV9uZXdfZXJhAA0oSQFGb3JjZSB0aGVyZSB0byBiZSBhIG5ldyBlcmEgYXQgdGhlIGVuZCBvZiB0aGUgbmV4dCBzZXNzaW9uLiBBZnRlciB0aGlzLCBpdCB3aWxsIGJlnHJlc2V0IHRvIG5vcm1hbCAobm9uLWZvcmNlZCkgYmVoYXZpb3VyLgCEVGhlIGRpc3BhdGNoIG9yaWdpbiBtdXN0IGJlIFJvb3QuACQjIFdhcm5pbmcAGQFUaGUgZWxlY3Rpb24gcHJvY2VzcyBzdGFydHMgbXVsdGlwbGUgYmxvY2tzIGJlZm9yZSB0aGUgZW5kIG9mIHRoZSBlcmEuSQFJZiB0aGlzIGlzIGNhbGxlZCBqdXN0IGJlZm9yZSBhIG5ldyBlcmEgaXMgdHJpZ2dlcmVkLCB0aGUgZWxlY3Rpb24gcHJvY2VzcyBtYXkgbm90jGhhdmUgZW5vdWdoIGJsb2NrcyB0byBnZXQgYSByZXN1bHQuNGZvcmNlX3Vuc3Rha2UIARRzdGFzaAQBMFQ6OkFjY291bnRJZAABSG51bV9zbGFzaGluZ19zcGFuczgBDHUzMgAPIAkBRm9yY2UgYSBjdXJyZW50IHN0YWtlciB0byBiZWNvbWUgY29tcGxldGVseSB1bnN0YWtlZCwgaW1tZWRpYXRlbHkuAIRUaGUgZGlzcGF0Y2ggb3JpZ2luIG11c3QgYmUgUm9vdC40IyMgUGFyYW1ldGVycwCwLSBgc3Rhc2hgOiBUaGUgc3Rhc2ggYWNjb3VudCB0byBiZSB1bnN0YWtlZC49AS0gYG51bV9zbGFzaGluZ19zcGFuc2A6ICoqRGVwcmVjYXRlZCoqLiBUaGlzIHBhcmFtZXRlciBpcyByZXRhaW5lZCBmb3IgYmFja3dhcmSsY29tcGF0aWJpbGl0eS4gSXQgbm8gbG9uZ2VyIGhhcyBhbnkgZWZmZWN0LlBmb3JjZV9uZXdfZXJhX2Fsd2F5cwAQJAEBRm9yY2UgdGhlcmUgdG8gYmUgYSBuZXcgZXJhIGF0IHRoZSBlbmQgb2Ygc2Vzc2lvbnMgaW5kZWZpbml0ZWx5LgCEVGhlIGRpc3BhdGNoIG9yaWdpbiBtdXN0IGJlIFJvb3QuACQjIFdhcm5pbmcAGQFUaGUgZWxlY3Rpb24gcHJvY2VzcyBzdGFydHMgbXVsdGlwbGUgYmxvY2tzIGJlZm9yZSB0aGUgZW5kIG9mIHRoZSBlcmEuSQFJZiB0aGlzIGlzIGNhbGxlZCBqdXN0IGJlZm9yZSBhIG5ldyBlcmEgaXMgdHJpZ2dlcmVkLCB0aGUgZWxlY3Rpb24gcHJvY2VzcyBtYXkgbm90jGhhdmUgZW5vdWdoIGJsb2NrcyB0byBnZXQgYSByZXN1bHQuVGNhbmNlbF9kZWZlcnJlZF9zbGFzaAgBDGVyYTgBIEVyYUluZGV4AAFEdmFsaWRhdG9yX3NsYXNoZXPVBgFwVmVjPChUOjpBY2NvdW50SWQsIFBlcmJpbGwpPgARLAkBQ2FuY2VscyBzY2hlZHVsZWQgc2xhc2hlcyBmb3IgYSBnaXZlbiBlcmEgYmVmb3JlIHRoZXkgYXJlIGFwcGxpZWQuAGEBVGhpcyBmdW5jdGlvbiBhbGxvd3MgYFQ6OkFkbWluT3JpZ2luYCB0byBjYW5jZWwgcGVuZGluZyBzbGFzaGVzIGZvciBzcGVjaWZpZWQgdmFsaWRhdG9yc0kBaW4gYSBnaXZlbiBlcmEuIFRoZSBjYW5jZWxsZWQgc2xhc2hlcyBhcmUgc3RvcmVkIGFuZCB3aWxsIGJlIGNoZWNrZWQgd2hlbiBhcHBseWluZyBzbGFzaGVzLgA0IyMgUGFyYW1ldGVyc1UBLSBgZXJhYDogVGhlIHN0YWtpbmcgZXJhIGZvciB3aGljaCBzbGFzaGVzIHNob3VsZCBiZSBjYW5jZWxsZWQuIFRoaXMgaXMgdGhlIGVyYSB3aGVyZTUBICB0aGUgc2xhc2ggd291bGQgYmUgYXBwbGllZCwgbm90IHRoZSBlcmEgaW4gd2hpY2ggdGhlIG9mZmVuY2Ugd2FzIGNvbW1pdHRlZC5ZAS0gYHZhbGlkYXRvcl9zbGFzaGVzYDogQSBsaXN0IG9mIHZhbGlkYXRvciBzdGFzaCBhY2NvdW50cyBhbmQgdGhlaXIgc2xhc2ggZnJhY3Rpb25zIHRvPCAgYmUgY2FuY2VsbGVkLjhwYXlvdXRfc3Rha2VycwgBPHZhbGlkYXRvcl9zdGFzaAQBMFQ6OkFjY291bnRJZAABDGVyYTgBIEVyYUluZGV4ABI0GQFQYXkgb3V0IG5leHQgcGFnZSBvZiB0aGUgc3Rha2VycyBiZWhpbmQgYSB2YWxpZGF0b3IgZm9yIHRoZSBnaXZlbiBlcmEuAOgtIGB2YWxpZGF0b3Jfc3Rhc2hgIGlzIHRoZSBzdGFzaCBhY2NvdW50IG9mIHRoZSB2YWxpZGF0b3IuMQEtIGBlcmFgIG1heSBiZSBhbnkgZXJhIGJldHdlZW4gYFtjdXJyZW50X2VyYSAtIGhpc3RvcnlfZGVwdGg7IGN1cnJlbnRfZXJhXWAuAFUBVGhlIG9yaWdpbiBvZiB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4gQW55IGFjY291bnQgY2FuIGNhbGwgdGhpcyBmdW5jdGlvbiwgZXZlbiBpZnRpdCBpcyBub3Qgb25lIG9mIHRoZSBzdGFrZXJzLgBJAVRoZSByZXdhcmQgcGF5b3V0IGNvdWxkIGJlIHBhZ2VkIGluIGNhc2UgdGhlcmUgYXJlIHRvbyBtYW55IG5vbWluYXRvcnMgYmFja2luZyB0aGVdAWB2YWxpZGF0b3Jfc3Rhc2hgLiBUaGlzIGNhbGwgd2lsbCBwYXlvdXQgdW5wYWlkIHBhZ2VzIGluIGFuIGFzY2VuZGluZyBvcmRlci4gVG8gY2xhaW0gYbRzcGVjaWZpYyBwYWdlLCB1c2UgYHBheW91dF9zdGFrZXJzX2J5X3BhZ2VgLmAA8ElmIGFsbCBwYWdlcyBhcmUgY2xhaW1lZCwgaXQgcmV0dXJucyBhbiBlcnJvciBgSW52YWxpZFBhZ2VgLhhyZWJvbmQEARR2YWx1ZVUBATBCYWxhbmNlT2Y8VD4AEwzcUmVib25kIGEgcG9ydGlvbiBvZiB0aGUgc3Rhc2ggc2NoZWR1bGVkIHRvIGJlIHVubG9ja2VkLgDUVGhlIGRpc3BhdGNoIG9yaWdpbiBtdXN0IGJlIHNpZ25lZCBieSB0aGUgY29udHJvbGxlci4ocmVhcF9zdGFzaAgBFHN0YXNoBAEwVDo6QWNjb3VudElkAAFIbnVtX3NsYXNoaW5nX3NwYW5zOAEMdTMyABRIXQFSZW1vdmUgYWxsIGRhdGEgc3RydWN0dXJlcyBjb25jZXJuaW5nIGEgc3Rha2VyL3N0YXNoIG9uY2UgaXQgaXMgYXQgYSBzdGF0ZSB3aGVyZSBpdCBjYW4FAWJlIGNvbnNpZGVyZWQgYGR1c3RgIGluIHRoZSBzdGFraW5nIHN5c3RlbS4gVGhlIHJlcXVpcmVtZW50cyBhcmU6AC0BMS4gdGhlIGB0b3RhbF9iYWxhbmNlYCBvZiB0aGUgc3Rhc2ggaXMgYmVsb3cgYG1pbl9jaGlsbGVkX2JvbmRgIG9yIGlzIHplcm8uOQEyLiBvciwgdGhlIGBsZWRnZXIudG90YWxgIG9mIHRoZSBzdGFzaCBpcyBiZWxvdyBgbWluX2NoaWxsZWRfYm9uZGAgb3IgaXMgemVyby4AVQFUaGUgZm9ybWVyIGNhbiBoYXBwZW4gaW4gY2FzZXMgbGlrZSBhIHNsYXNoOyB0aGUgbGF0dGVyIHdoZW4gYSBmdWxseSB1bmJvbmRlZCBhY2NvdW50CQFpcyBzdGlsbCByZWNlaXZpbmcgc3Rha2luZyByZXdhcmRzIGluIGBSZXdhcmREZXN0aW5hdGlvbjo6U3Rha2VkYC4AMQFJdCBjYW4gYmUgY2FsbGVkIGJ5IGFueW9uZSwgYXMgbG9uZyBhcyBgc3Rhc2hgIG1lZXRzIHRoZSBhYm92ZSByZXF1aXJlbWVudHMuANxSZWZ1bmRzIHRoZSB0cmFuc2FjdGlvbiBmZWVzIHVwb24gc3VjY2Vzc2Z1bCBleGVjdXRpb24uADQjIyBQYXJhbWV0ZXJzAKgtIGBzdGFzaGA6IFRoZSBzdGFzaCBhY2NvdW50IHRvIGJlIHJlYXBlZC49AS0gYG51bV9zbGFzaGluZ19zcGFuc2A6ICoqRGVwcmVjYXRlZCoqLiBUaGlzIHBhcmFtZXRlciBpcyByZXRhaW5lZCBmb3IgYmFja3dhcmSsY29tcGF0aWJpbGl0eS4gSXQgbm8gbG9uZ2VyIGhhcyBhbnkgZWZmZWN0LhBraWNrBAEMd2hvzQYBZFZlYzxBY2NvdW50SWRMb29rdXBPZjxUPj4AFSzgUmVtb3ZlIHRoZSBnaXZlbiBub21pbmF0aW9ucyBmcm9tIHRoZSBjYWxsaW5nIHZhbGlkYXRvci4A2EVmZmVjdHMgd2lsbCBiZSBmZWx0IGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIG5leHQgZXJhLgBRAVRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfIGJ5IHRoZSBjb250cm9sbGVyLCBub3QgdGhlIHN0YXNoLgBNAS0gYHdob2A6IEEgbGlzdCBvZiBub21pbmF0b3Igc3Rhc2ggYWNjb3VudHMgd2hvIGFyZSBub21pbmF0aW5nIHRoaXMgdmFsaWRhdG9yIHdoaWNowCAgc2hvdWxkIG5vIGxvbmdlciBiZSBub21pbmF0aW5nIHRoaXMgdmFsaWRhdG9yLgBVAU5vdGU6IE1ha2luZyB0aGlzIGNhbGwgb25seSBtYWtlcyBzZW5zZSBpZiB5b3UgZmlyc3Qgc2V0IHRoZSB2YWxpZGF0b3IgcHJlZmVyZW5jZXMgdG94YmxvY2sgYW55IGZ1cnRoZXIgbm9taW5hdGlvbnMuTHNldF9zdGFraW5nX2NvbmZpZ3MgAUhtaW5fbm9taW5hdG9yX2JvbmTdBgFYQ29uZmlnT3A8QmFsYW5jZU9mPFQ+PgABSG1pbl92YWxpZGF0b3JfYm9uZN0GAVhDb25maWdPcDxCYWxhbmNlT2Y8VD4+AAFMbWF4X25vbWluYXRvcl9jb3VudOEGATRDb25maWdPcDx1MzI+AAFMbWF4X3ZhbGlkYXRvcl9jb3VudOEGATRDb25maWdPcDx1MzI+AAE8Y2hpbGxfdGhyZXNob2xk5QYBRENvbmZpZ09wPFBlcmNlbnQ+AAE4bWluX2NvbW1pc3Npb27pBgFEQ29uZmlnT3A8UGVyYmlsbD4AAUhtYXhfc3Rha2VkX3Jld2FyZHPlBgFEQ29uZmlnT3A8UGVyY2VudD4AAWBhcmVfbm9taW5hdG9yc19zbGFzaGFibGXtBgE4Q29uZmlnT3A8Ym9vbD4AFkSsVXBkYXRlIHRoZSB2YXJpb3VzIHN0YWtpbmcgY29uZmlndXJhdGlvbnMgLgAlASogYG1pbl9ub21pbmF0b3JfYm9uZGA6IFRoZSBtaW5pbXVtIGFjdGl2ZSBib25kIG5lZWRlZCB0byBiZSBhIG5vbWluYXRvci4lASogYG1pbl92YWxpZGF0b3JfYm9uZGA6IFRoZSBtaW5pbXVtIGFjdGl2ZSBib25kIG5lZWRlZCB0byBiZSBhIHZhbGlkYXRvci5VASogYG1heF9ub21pbmF0b3JfY291bnRgOiBUaGUgbWF4IG51bWJlciBvZiB1c2VycyB3aG8gY2FuIGJlIGEgbm9taW5hdG9yIGF0IG9uY2UuIFdoZW6YICBzZXQgdG8gYE5vbmVgLCBubyBsaW1pdCBpcyBlbmZvcmNlZC5VASogYG1heF92YWxpZGF0b3JfY291bnRgOiBUaGUgbWF4IG51bWJlciBvZiB1c2VycyB3aG8gY2FuIGJlIGEgdmFsaWRhdG9yIGF0IG9uY2UuIFdoZW6YICBzZXQgdG8gYE5vbmVgLCBubyBsaW1pdCBpcyBlbmZvcmNlZC5ZASogYGNoaWxsX3RocmVzaG9sZGA6IFRoZSByYXRpbyBvZiBgbWF4X25vbWluYXRvcl9jb3VudGAgb3IgYG1heF92YWxpZGF0b3JfY291bnRgIHdoaWNoGQEgIHNob3VsZCBiZSBmaWxsZWQgaW4gb3JkZXIgZm9yIHRoZSBgY2hpbGxfb3RoZXJgIHRyYW5zYWN0aW9uIHRvIHdvcmsuYQEqIGBtaW5fY29tbWlzc2lvbmA6IFRoZSBtaW5pbXVtIGFtb3VudCBvZiBjb21taXNzaW9uIHRoYXQgZWFjaCB2YWxpZGF0b3JzIG11c3QgbWFpbnRhaW4uVQEgIFRoaXMgaXMgY2hlY2tlZCBvbmx5IHVwb24gY2FsbGluZyBgdmFsaWRhdGVgLiBFeGlzdGluZyB2YWxpZGF0b3JzIGFyZSBub3QgYWZmZWN0ZWQuAMRSdW50aW1lT3JpZ2luIG11c3QgYmUgUm9vdCB0byBjYWxsIHRoaXMgZnVuY3Rpb24uADUBTk9URTogRXhpc3Rpbmcgbm9taW5hdG9ycyBhbmQgdmFsaWRhdG9ycyB3aWxsIG5vdCBiZSBhZmZlY3RlZCBieSB0aGlzIHVwZGF0ZS4RAXRvIGtpY2sgcGVvcGxlIHVuZGVyIHRoZSBuZXcgbGltaXRzLCBgY2hpbGxfb3RoZXJgIHNob3VsZCBiZSBjYWxsZWQuLGNoaWxsX290aGVyBAEUc3Rhc2gEATBUOjpBY2NvdW50SWQAF2hBAURlY2xhcmUgYSBgY29udHJvbGxlcmAgdG8gc3RvcCBwYXJ0aWNpcGF0aW5nIGFzIGVpdGhlciBhIHZhbGlkYXRvciBvciBub21pbmF0b3IuANhFZmZlY3RzIHdpbGwgYmUgZmVsdCBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBuZXh0IGVyYS4AQQFUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXywgYnV0IGNhbiBiZSBjYWxsZWQgYnkgYW55b25lLgBZAUlmIHRoZSBjYWxsZXIgaXMgdGhlIHNhbWUgYXMgdGhlIGNvbnRyb2xsZXIgYmVpbmcgdGFyZ2V0ZWQsIHRoZW4gbm8gZnVydGhlciBjaGVja3MgYXJl2GVuZm9yY2VkLCBhbmQgdGhpcyBmdW5jdGlvbiBiZWhhdmVzIGp1c3QgbGlrZSBgY2hpbGxgLgBdAUlmIHRoZSBjYWxsZXIgaXMgZGlmZmVyZW50IHRoYW4gdGhlIGNvbnRyb2xsZXIgYmVpbmcgdGFyZ2V0ZWQsIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczBtdXN0IGJlIG1ldDoAHQEqIGBjb250cm9sbGVyYCBtdXN0IGJlbG9uZyB0byBhIG5vbWluYXRvciB3aG8gaGFzIGJlY29tZSBub24tZGVjb2RhYmxlLAAMT3I6AD0BKiBBIGBDaGlsbFRocmVzaG9sZGAgbXVzdCBiZSBzZXQgYW5kIGNoZWNrZWQgd2hpY2ggZGVmaW5lcyBob3cgY2xvc2UgdG8gdGhlIG1heFUBICBub21pbmF0b3JzIG9yIHZhbGlkYXRvcnMgd2UgbXVzdCByZWFjaCBiZWZvcmUgdXNlcnMgY2FuIHN0YXJ0IGNoaWxsaW5nIG9uZS1hbm90aGVyLlkBKiBBIGBNYXhOb21pbmF0b3JDb3VudGAgYW5kIGBNYXhWYWxpZGF0b3JDb3VudGAgbXVzdCBiZSBzZXQgd2hpY2ggaXMgdXNlZCB0byBkZXRlcm1pbmWQICBob3cgY2xvc2Ugd2UgYXJlIHRvIHRoZSB0aHJlc2hvbGQuXQEqIEEgYE1pbk5vbWluYXRvckJvbmRgIGFuZCBgTWluVmFsaWRhdG9yQm9uZGAgbXVzdCBiZSBzZXQgYW5kIGNoZWNrZWQsIHdoaWNoIGRldGVybWluZXNRASAgaWYgdGhpcyBpcyBhIHBlcnNvbiB0aGF0IHNob3VsZCBiZSBjaGlsbGVkIGJlY2F1c2UgdGhleSBoYXZlIG5vdCBtZXQgdGhlIHRocmVzaG9sZEAgIGJvbmQgcmVxdWlyZWQuAFUBVGhpcyBjYW4gYmUgaGVscGZ1bCBpZiBib25kIHJlcXVpcmVtZW50cyBhcmUgdXBkYXRlZCwgYW5kIHdlIG5lZWQgdG8gcmVtb3ZlIG9sZCB1c2Vyc5h3aG8gZG8gbm90IHNhdGlzZnkgdGhlc2UgcmVxdWlyZW1lbnRzLmhmb3JjZV9hcHBseV9taW5fY29tbWlzc2lvbgQBPHZhbGlkYXRvcl9zdGFzaAQBMFQ6OkFjY291bnRJZAAYEDkBQ2xhbXBzIGEgdmFsaWRhdG9yJ3MgY29tbWlzc2lvbiB0byB0aGUgYFtNaW5Db21taXNzaW9uLCBNYXhDb21taXNzaW9uXWAgcmFuZ2UuADkBTmFtZWQgYGZvcmNlX2FwcGx5X21pbl9jb21taXNzaW9uYCBmb3IgbGVnYWN5IHJlYXNvbnMg4oCUIGl0IGFsc28gZW5mb3JjZXMgdGhljG1heGltdW0uIEFueSBhY2NvdW50IGNhbiBjYWxsIHRoaXMuSHNldF9taW5fY29tbWlzc2lvbgQBDG5ld6EBARxQZXJiaWxsABkQJQFTZXRzIHRoZSBtaW5pbXVtIGFtb3VudCBvZiBjb21taXNzaW9uIHRoYXQgZWFjaCB2YWxpZGF0b3JzIG11c3QgbWFpbnRhaW4uAFkBVGhpcyBjYWxsIGhhcyBsb3dlciBwcml2aWxlZ2UgcmVxdWlyZW1lbnRzIHRoYW4gYHNldF9zdGFraW5nX2NvbmZpZ2AgYW5kIGNhbiBiZSBjYWxsZWTMYnkgdGhlIGBUOjpBZG1pbk9yaWdpbmAuIFJvb3QgY2FuIGFsd2F5cyBjYWxsIHRoaXMuWHBheW91dF9zdGFrZXJzX2J5X3BhZ2UMATx2YWxpZGF0b3Jfc3Rhc2gEATBUOjpBY2NvdW50SWQAAQxlcmE4ASBFcmFJbmRleAABEHBhZ2U4ARBQYWdlABpUMQFQYXkgb3V0IGEgcGFnZSBvZiB0aGUgc3Rha2VycyBiZWhpbmQgYSB2YWxpZGF0b3IgZm9yIHRoZSBnaXZlbiBlcmEgYW5kIHBhZ2UuAOgtIGB2YWxpZGF0b3Jfc3Rhc2hgIGlzIHRoZSBzdGFzaCBhY2NvdW50IG9mIHRoZSB2YWxpZGF0b3IuMQEtIGBlcmFgIG1heSBiZSBhbnkgZXJhIGJldHdlZW4gYFtjdXJyZW50X2VyYSAtIGhpc3RvcnlfZGVwdGg7IGN1cnJlbnRfZXJhXWAuMQEtIGBwYWdlYCBpcyB0aGUgcGFnZSBpbmRleCBvZiBub21pbmF0b3JzIHRvIHBheSBvdXQgd2l0aCB2YWx1ZSBiZXR3ZWVuIDAgYW5ksCAgYG51bV9ub21pbmF0b3JzIC8gVDo6TWF4RXhwb3N1cmVQYWdlU2l6ZWAuAFUBVGhlIG9yaWdpbiBvZiB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4gQW55IGFjY291bnQgY2FuIGNhbGwgdGhpcyBmdW5jdGlvbiwgZXZlbiBpZnRpdCBpcyBub3Qgb25lIG9mIHRoZSBzdGFrZXJzLgA9AUlmIGEgdmFsaWRhdG9yIGhhcyBtb3JlIHRoYW4gW2BDb25maWc6Ok1heEV4cG9zdXJlUGFnZVNpemVgXSBub21pbmF0b3JzIGJhY2tpbmcpAXRoZW0sIHRoZW4gdGhlIGxpc3Qgb2Ygbm9taW5hdG9ycyBpcyBwYWdlZCwgd2l0aCBlYWNoIHBhZ2UgYmVpbmcgY2FwcGVkIGF0VQFbYENvbmZpZzo6TWF4RXhwb3N1cmVQYWdlU2l6ZWBdLiBJZiBhIHZhbGlkYXRvciBoYXMgbW9yZSB0aGFuIG9uZSBwYWdlIG9mIG5vbWluYXRvcnMsSQF0aGUgY2FsbCBuZWVkcyB0byBiZSBtYWRlIGZvciBlYWNoIHBhZ2Ugc2VwYXJhdGVseSBpbiBvcmRlciBmb3IgYWxsIHRoZSBub21pbmF0b3JzVQFiYWNraW5nIGEgdmFsaWRhdG9yIHRvIHJlY2VpdmUgdGhlIHJld2FyZC4gVGhlIG5vbWluYXRvcnMgYXJlIG5vdCBzb3J0ZWQgYWNyb3NzIHBhZ2VzYQFhbmQgc28gaXQgc2hvdWxkIG5vdCBiZSBhc3N1bWVkIHRoZSBoaWdoZXN0IHN0YWtlciB3b3VsZCBiZSBvbiB0aGUgdG9wbW9zdCBwYWdlIGFuZCB2aWNlSQF2ZXJzYS4gSWYgcmV3YXJkcyBhcmUgbm90IGNsYWltZWQgaW4gW2BDb25maWc6Okhpc3RvcnlEZXB0aGBdIGVyYXMsIHRoZXkgYXJlIGxvc3QuAEkBVGhlIHZhbGlkYXRvcidzIG93biByZXdhcmQgKGNvbW1pc3Npb24gKyBvd24tc3Rha2Ugc2hhcmUpIGlzIHByb3JhdGVkIGFjcm9zcyBwYWdlc0kBcHJvcG9ydGlvbmFsIHRvIGVhY2ggcGFnZSdzIHN0YWtlLiBUaGUgZnVsbCB2YWxpZGF0b3IgcmV3YXJkIGlzIHRoZSBzdW0gYWNyb3NzIGFsbBhwYWdlcy4wdXBkYXRlX3BheWVlBAEoY29udHJvbGxlcgQBMFQ6OkFjY291bnRJZAAbGOBNaWdyYXRlcyBhbiBhY2NvdW50J3MgYFJld2FyZERlc3RpbmF0aW9uOjpDb250cm9sbGVyYCB0b6RgUmV3YXJkRGVzdGluYXRpb246OkFjY291bnQoY29udHJvbGxlcilgLgBRAUVmZmVjdHMgd2lsbCBiZSBmZWx0IGluc3RhbnRseSAoYXMgc29vbiBhcyB0aGlzIGZ1bmN0aW9uIGlzIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkpLgAxAVRoaXMgd2lsbCB3YWl2ZSB0aGUgdHJhbnNhY3Rpb24gZmVlIGlmIHRoZSBgcGF5ZWVgIGlzIHN1Y2Nlc3NmdWxseSBtaWdyYXRlZC5oZGVwcmVjYXRlX2NvbnRyb2xsZXJfYmF0Y2gEASxjb250cm9sbGVyc/EGAfRCb3VuZGVkVmVjPFQ6OkFjY291bnRJZCwgVDo6TWF4Q29udHJvbGxlcnNJbkRlcHJlY2F0aW9uQmF0Y2g+ABwcXQFVcGRhdGVzIGEgYmF0Y2ggb2YgY29udHJvbGxlciBhY2NvdW50cyB0byB0aGVpciBjb3JyZXNwb25kaW5nIHN0YXNoIGFjY291bnQgaWYgdGhleSBhcmVhAW5vdCB0aGUgc2FtZS4gSWdub3JlcyBhbnkgY29udHJvbGxlciBhY2NvdW50cyB0aGF0IGRvIG5vdCBleGlzdCwgYW5kIGRvZXMgbm90IG9wZXJhdGUgaWa4dGhlIHN0YXNoIGFuZCBjb250cm9sbGVyIGFyZSBhbHJlYWR5IHRoZSBzYW1lLgBRAUVmZmVjdHMgd2lsbCBiZSBmZWx0IGluc3RhbnRseSAoYXMgc29vbiBhcyB0aGlzIGZ1bmN0aW9uIGlzIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkpLgC0VGhlIGRpc3BhdGNoIG9yaWdpbiBtdXN0IGJlIGBUOjpBZG1pbk9yaWdpbmAuOHJlc3RvcmVfbGVkZ2VyEAEUc3Rhc2gEATBUOjpBY2NvdW50SWQAAUBtYXliZV9jb250cm9sbGVykQEBUE9wdGlvbjxUOjpBY2NvdW50SWQ+AAEsbWF5YmVfdG90YWxlBAFQT3B0aW9uPEJhbGFuY2VPZjxUPj4AATxtYXliZV91bmxvY2tpbmf1BgEVAU9wdGlvbjxCb3VuZGVkVmVjPFVubG9ja0NodW5rPEJhbGFuY2VPZjxUPj4sIFQ6OgpNYXhVbmxvY2tpbmdDaHVua3M+PgAdLAUBUmVzdG9yZXMgdGhlIHN0YXRlIG9mIGEgbGVkZ2VyIHdoaWNoIGlzIGluIGFuIGluY29uc2lzdGVudCBzdGF0ZS4A3FRoZSByZXF1aXJlbWVudHMgdG8gcmVzdG9yZSBhIGxlZGdlciBhcmUgdGhlIGZvbGxvd2luZzpkKiBUaGUgc3Rhc2ggaXMgYm9uZGVkOyBvcg0BKiBUaGUgc3Rhc2ggaXMgbm90IGJvbmRlZCBidXQgaXQgaGFzIGEgc3Rha2luZyBsb2NrIGxlZnQgYmVoaW5kOyBvciUBKiBJZiB0aGUgc3Rhc2ggaGFzIGFuIGFzc29jaWF0ZWQgbGVkZ2VyIGFuZCBpdHMgc3RhdGUgaXMgaW5jb25zaXN0ZW50OyBvch0BKiBJZiB0aGUgbGVkZ2VyIGlzIG5vdCBjb3JydXB0ZWQgKmJ1dCogaXRzIHN0YWtpbmcgbG9jayBpcyBvdXQgb2Ygc3luYy4AYQFUaGUgYG1heWJlXypgIGlucHV0IHBhcmFtZXRlcnMgd2lsbCBvdmVyd3JpdGUgdGhlIGNvcnJlc3BvbmRpbmcgZGF0YSBhbmQgbWV0YWRhdGEgb2YgdGhlWQFsZWRnZXIgYXNzb2NpYXRlZCB3aXRoIHRoZSBzdGFzaC4gSWYgdGhlIGlucHV0IHBhcmFtZXRlcnMgYXJlIG5vdCBzZXQsIHRoZSBsZWRnZXIgd2lsbJBiZSByZXNldCB2YWx1ZXMgZnJvbSBvbi1jaGFpbiBzdGF0ZS5AbWlncmF0ZV9jdXJyZW5jeQQBFHN0YXNoBAEwVDo6QWNjb3VudElkAB4c2E1pZ3JhdGVzIHBlcm1pc3Npb25sZXNzbHkgYSBzdGFzaCBmcm9tIGxvY2tzIHRvIGhvbGRzLgBJAVRoaXMgcmVtb3ZlcyB0aGUgb2xkIGxvY2sgb24gdGhlIHN0YWtlIGFuZCBjcmVhdGVzIGEgaG9sZCBvbiBpdCBhdG9taWNhbGx5LiBJZiBhbGxhAXN0YWtlIGNhbm5vdCBiZSBoZWxkLCB0aGUgYmVzdCBlZmZvcnQgaXMgbWFkZSB0byBob2xkIGFzIG11Y2ggYXMgcG9zc2libGUuIFRoZSByZW1haW5pbmeEc3Rha2UgaXMgcmVtb3ZlZCBmcm9tIHRoZSBsZWRnZXIuAMRUaGUgZmVlIGlzIHdhaXZlZCBpZiB0aGUgbWlncmF0aW9uIGlzIHN1Y2Nlc3NmdWwuLGFwcGx5X3NsYXNoCAEkc2xhc2hfZXJhOAEgRXJhSW5kZXgAASRzbGFzaF9rZXkFBwFwKFQ6OkFjY291bnRJZCwgUGVyYmlsbCwgdTMyKQAfiB0BTWFudWFsbHkgYW5kIHBlcm1pc3Npb25sZXNzbHkgYXBwbGllcyBhIGRlZmVycmVkIHNsYXNoIGZvciBhIGdpdmVuIGVyYS4AXQFOb3JtYWxseSwgc2xhc2hlcyBhcmUgYXV0b21hdGljYWxseSBhcHBsaWVkIHNob3J0bHkgYWZ0ZXIgdGhlIHN0YXJ0IG9mIHRoZSBgc2xhc2hfZXJhYC5ZAVRoZSBhdXRvbWF0aWMgYXBwbGljYXRpb24gb2Ygc2xhc2hlcyBpcyBoYW5kbGVkIGJ5IHRoZSBwYWxsZXQncyBpbnRlcm5hbCBsb2dpYywgYW5kIGl0zHRyaWVzIHRvIGFwcGx5IG9uZSBzbGFzaCBwYWdlIHBlciBibG9jayBvZiB0aGUgZXJhLlUBSWYgZm9yIHNvbWUgcmVhc29uLCBvbmUgZXJhIGlzIG5vdCBlbm91Z2ggZm9yIGFwcGx5aW5nIGFsbCBzbGFzaCBwYWdlcywgdGhlIHJlbWFpbmluZ9xzbGFzaGVzIG5lZWQgdG8gYmUgbWFudWFsbHkgKHBlcm1pc3Npb25sZXNzbHkpIGFwcGxpZWQuAEkBRm9yIGEgZ2l2ZW4gZXJhIHgsIGlmIGF0IGVyYSB4KzEsIHNsYXNoZXMgYXJlIHN0aWxsIHVuYXBwbGllZCwgYWxsIHdpdGhkcmF3YWxzIGdldCEBYmxvY2tlZCwgYW5kIHRoZXNlIG5lZWQgdG8gYmUgbWFudWFsbHkgYXBwbGllZCBieSBjYWxsaW5nIHRoaXMgZnVuY3Rpb24uTQFUaGlzIGZ1bmN0aW9uIGV4aXN0cyBhcyBhICoqZmFsbGJhY2sgbWVjaGFuaXNtKiogZm9yIHRoaXMgZXh0cmVtZSBzaXR1YXRpb24sIGJ1dCB3ZcxuZXZlciBleHBlY3QgdG8gZW5jb3VudGVyIHRoaXMgaW4gbm9ybWFsIHNjZW5hcmlvcy4AYQFUaGUgcGFyYW1ldGVycyBmb3IgdGhpcyBjYWxsIGNhbiBiZSBxdWVyaWVkIGJ5IGxvb2tpbmcgYXQgdGhlIGBVbmFwcGxpZWRTbGFzaGVzYCBzdG9yYWdljGZvciBlcmFzIG9sZGVyIHRoYW4gdGhlIGFjdGl2ZSBlcmEuADQjIyBQYXJhbWV0ZXJzVQEtIGBzbGFzaF9lcmFgOiBUaGUgYXBwbGljYXRpb24gZXJhIChgb2ZmZW5jZV9lcmEgKyBTbGFzaERlZmVyRHVyYXRpb25gKSwgaS5lLiB0aGUga2V5cCAgaW50byBbYFVuYXBwbGllZFNsYXNoZXNgXS4lAS0gYHNsYXNoX2tleWA6IEEgdW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSBzbGFzaCwgcmVwcmVzZW50ZWQgYXMgYSB0dXBsZTr4ICAtIGBzdGFzaGA6IFRoZSBzdGFzaCBhY2NvdW50IG9mIHRoZSB2YWxpZGF0b3IgYmVpbmcgc2xhc2hlZC4FASAgLSBgc2xhc2hfZnJhY3Rpb25gOiBUaGUgZnJhY3Rpb24gb2YgdGhlIHN0YWtlIHRoYXQgd2FzIHNsYXNoZWQuBQEgIC0gYHBhZ2VfaW5kZXhgOiBUaGUgaW5kZXggb2YgdGhlIGV4cG9zdXJlIHBhZ2UgYmVpbmcgcHJvY2Vzc2VkLgAsIyMgQmVoYXZpb3LoLSBUaGUgZnVuY3Rpb24gaXMgKipwZXJtaXNzaW9ubGVzcyoq4oCUYW55b25lIGNhbiBjYWxsIGl0LvAtIFRoZSBgc2xhc2hfZXJhYCAqKm11c3QgYmUgdGhlIGN1cnJlbnQgZXJhIG9yIGEgcGFzdCBlcmEqKi5sSWYgaXQgaXMgaW4gdGhlIGZ1dHVyZSwgdGhliCAgY2FsbCBmYWlscyB3aXRoIGBFcmFOb3RTdGFydGVkYC7kLSBUaGUgZmVlIGlzIHdhaXZlZCBpZiB0aGUgc2xhc2ggaXMgc3VjY2Vzc2Z1bGx5IGFwcGxpZWQuAFQjIyBGdXR1cmUgSW1wcm92ZW1lbnRhAS0gSW1wbGVtZW50IGFuICoqb2ZmLWNoYWluIHdvcmtlciAoT0NXKSB0YXNrKiogdG8gYXV0b21hdGljYWxseSBhcHBseSBzbGFzaGVzIHdoZW4gdGhlcmW4ICBpcyB1bnVzZWQgYmxvY2sgc3BhY2UsIGltcHJvdmluZyBlZmZpY2llbmN5LjhwcnVuZV9lcmFfc3RlcAQBDGVyYTgBIEVyYUluZGV4ACAsYQFQZXJmb3JtIG9uZSBzdGVwIG9mIGVyYSBwcnVuaW5nIHRvIHByZXZlbnQgUG9WIHNpemUgZXhoYXVzdGlvbiBmcm9tIHVuYm91bmRlZCBkZWxldGlvbnMuADEBVGhpcyBleHRyaW5zaWMgZW5hYmxlcyBwZXJtaXNzaW9ubGVzcyBsYXp5IHBydW5pbmcgb2YgZXJhIGRhdGEgYnkgcGVyZm9ybWluZy0BaW5jcmVtZW50YWwgZGVsZXRpb24gb2Ygc3RvcmFnZSBpdGVtcy4gRWFjaCBjYWxsIHByb2Nlc3NlcyBhIGxpbWl0ZWQgbnVtYmVyJQFvZiBpdGVtcyBiYXNlZCBvbiBhdmFpbGFibGUgYmxvY2sgd2VpZ2h0IHRvIGF2b2lkIGV4Y2VlZGluZyBibG9jayBsaW1pdHMuADUBUmV0dXJucyBgUGF5czo6Tm9gIHdoZW4gd29yayBpcyBwZXJmb3JtZWQgdG8gaW5jZW50aXZpemUgcmVndWxhciBtYWludGVuYW5jZS4FAUFueW9uZSBjYW4gY2FsbCB0aGlzIHRvIGhlbHAgbWFpbnRhaW4gdGhlIGNoYWluJ3Mgc3RvcmFnZSBoZWFsdGguAA0BVGhlIGVyYSBtdXN0IGJlIGVsaWdpYmxlIGZvciBwcnVuaW5nIChvbGRlciB0aGFuIEhpc3RvcnlEZXB0aCArIDEpLjkBQ2hlY2sgYEVyYVBydW5pbmdTdGF0ZWAgc3RvcmFnZSB0byBzZWUgaWYgYW4gZXJhIG5lZWRzIHBydW5pbmcgYmVmb3JlIGNhbGxpbmcuSHNldF9tYXhfY29tbWlzc2lvbgQBDG5ld6EBARxQZXJiaWxsACEM0FNldHMgdGhlIG1heGltdW0gY29tbWlzc2lvbiB0aGF0IHZhbGlkYXRvcnMgY2FuIHNldC4AtFRoZSBkaXNwYXRjaCBvcmlnaW4gbXVzdCBiZSBgVDo6QWRtaW5PcmlnaW5gLqRzZXRfdmFsaWRhdG9yX3NlbGZfc3Rha2VfaW5jZW50aXZlX2NvbmZpZwwBSG9wdGltdW1fc2VsZl9zdGFrZd0GAVhDb25maWdPcDxCYWxhbmNlT2Y8VD4+AAFMaGFyZF9jYXBfc2VsZl9zdGFrZd0GAVhDb25maWdPcDxCYWxhbmNlT2Y8VD4+AAFcc2VsZl9zdGFrZV9zbG9wZV9mYWN0b3LpBgFEQ29uZmlnT3A8UGVyYmlsbD4AIhTgQ29uZmlndXJlIHRoZSB2YWxpZGF0b3Igc2VsZi1zdGFrZSBpbmNlbnRpdmUgcGFyYW1ldGVycy4AtFRoZSBkaXNwYXRjaCBvcmlnaW4gbXVzdCBiZSBgVDo6QWRtaW5PcmlnaW5gLgABAUNoYW5nZXMgdGFrZSBlZmZlY3QgaW4gdGhlIG5leHQgZXJhIHdoZW4gcmV3YXJkcyBhcmUgY2FsY3VsYXRlZC4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuwQYIUHBhbGxldF9zdGFraW5nX2FzeW5jRFJld2FyZERlc3RpbmF0aW9uBCRBY2NvdW50SWQBBAEUGFN0YWtlZAAAABRTdGFzaAABAChDb250cm9sbGVyAAIAHEFjY291bnQEAAQBJEFjY291bnRJZAADABBOb25lAAQAAMUGCFBwYWxsZXRfc3Rha2luZ19hc3luYzhWYWxpZGF0b3JQcmVmcwAACAEoY29tbWlzc2lvbskGARxQZXJiaWxsAAEcYmxvY2tlZF0BARBib29sAADJBgAABqEBAM0GAAACAADRBgw0c3BfYXJpdGhtZXRpYyhwZXJfdGhpbmdzHFBlcmNlbnQAAAQADAEIdTgAANUGAAAC2QYA2QYAAAQIBKEBAN0GEFBwYWxsZXRfc3Rha2luZ19hc3luYxhwYWxsZXQYcGFsbGV0IENvbmZpZ09wBARUAVkBAQwQTm9vcAAAAAxTZXQEAFkBAQRUAAEAGFJlbW92ZQACAADhBhBQcGFsbGV0X3N0YWtpbmdfYXN5bmMYcGFsbGV0GHBhbGxldCBDb25maWdPcAQEVAE4AQwQTm9vcAAAAAxTZXQEADgBBFQAAQAYUmVtb3ZlAAIAAOUGEFBwYWxsZXRfc3Rha2luZ19hc3luYxhwYWxsZXQYcGFsbGV0IENvbmZpZ09wBARUAdEGAQwQTm9vcAAAAAxTZXQEANEGAQRUAAEAGFJlbW92ZQACAADpBhBQcGFsbGV0X3N0YWtpbmdfYXN5bmMYcGFsbGV0GHBhbGxldCBDb25maWdPcAQEVAGhAQEMEE5vb3AAAAAMU2V0BAChAQEEVAABABhSZW1vdmUAAgAA7QYQUHBhbGxldF9zdGFraW5nX2FzeW5jGHBhbGxldBhwYWxsZXQgQ29uZmlnT3AEBFQBXQEBDBBOb29wAAAADFNldAQAXQEBBFQAAQAYUmVtb3ZlAAIAAPEGDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBBARTAAAEAGEBARhWZWM8VD4AAPUGBBhPcHRpb24EBFQB+QYBCBBOb25lAAAAEFNvbWUEAPkGAAABAAD5BgxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAf0GBFMAAAQAAQcBGFZlYzxUPgAA/QYMUHBhbGxldF9zdGFraW5nX2FzeW5jGGxlZGdlcixVbmxvY2tDaHVuawQcQmFsYW5jZQFZAQAIARR2YWx1ZVUBARxCYWxhbmNlAAEMZXJhZAEgRXJhSW5kZXgAAAEHAAAC/QYABQcAAAQMBKEBOAAJBwx8aW5kaXZfcGFsbGV0X21lbWJlcnNfc3Vic2NyaWJlchhwYWxsZXQQQ2FsbAQEVAABEFRpbml0aWFsaXplX3Jpbmdfcm9vdHMIATRyaW5nX2V4cG9uZW50DQcBMFJpbmdFeHBvbmVudAABFHJvb3RzEQcBXFJpbmdSb290VXBkYXRlc0JhdGNoPFQ+AAAgRQFTdG9yZXMgdGhlIGluaXRpYWwgcmluZyByb290cyByZWNlaXZlZCBmcm9tIHRoZSBub3RpZmllciB1cG9uIHN1YnNjcmlwdGlvbiBzdGFydC5BAUFjY2VwdHMgbXVsdGktcGFydCBjb250aW51YXRpb25zIChzYW1lIHNlcXVlbmNlKS4gUmVqZWN0cyBjYWxscyB3aXRoIGEgZGlmZmVyZW50UQFzZXF1ZW5jZSB3aGlsZSBzdWJzY3JpcHRpb24gaXMgYEFjdGl2ZWAg4oCUIGEgc3Vic2NyaXB0aW9uIG11c3QgYmUgdGVybWluYXRlZCBmaXJzdC4dAUNhbiBvbmx5IGJlIGNhbGxlZCBieSBub3RpZmllciBYQ00gb3JpZ2luICh2aWEgYEVuc3VyZU5vdGlmaWVyT3JpZ2luYCkuADQjIyBQYXJhbWV0ZXJzgC0gYG9yaWdpbmA6IE5vdGlmaWVyIFhDTSBvcmlnaW4unC0gYHJvb3RzYDogSW5pdGlhbCBiYXRjaCBvZiByaW5nIHJvb3RzLlBwcm9jZXNzX3JpbmdfdXBkYXRlcwQBFGJhdGNoEQcBXFJpbmdSb290VXBkYXRlc0JhdGNoPFQ+AAEU2FByb2Nlc3MgcmluZyByb290cyB1cGRhdGVzIHJlY2VpdmVkIGZyb20gdGhlIG5vdGlmaWVyLgA0IyMgUGFyYW1ldGVyc9QtIGBvcmlnaW5gOiBNdXN0IGJlIHRoZSBYQ00gb3JpZ2luIGZyb20gdGhlIG5vdGlmaWVyLsQtIGBiYXRjaGA6IEJhdGNoIG9mIHJpbmcgcm9vdCB1cGRhdGVzIHRvIHByb2Nlc3MuWHRlcm1pbmF0ZV9zdWJzY3JpcHRpb24AAihwVGVybWluYXRlcyB0aGUgc3Vic2NyaXB0aW9uLgAtAUFjY2VwdHMgZWl0aGVyIG5vdGlmaWVyIG9yaWdpbiAoYEVuc3VyZU5vdGlmaWVyT3JpZ2luYCkgb3IgbG9jYWwgZ292ZXJuYW5jZRUBb3JpZ2luIChgRW5zdXJlVGVybWluYXRpb25PcmlnaW5gKS4gV2hlbiBjYWxsZWQgbG9jYWxseSwgc2VuZHMgYW4gWENNLQF1bnN1YnNjcmliZSBtZXNzYWdlIHRvIHRoZSBub3RpZmllci4gV2hlbiBjYWxsZWQgZnJvbSB0aGUgbm90aWZpZXIgKGUuZy4gb24NAWdvdmVybmFuY2UgdW5zdWJzY3JpYmUpLCBubyBYQ00gaXMgc2VudCBiYWNrLiBJZGVtcG90ZW50IGlmIGFscmVhZHksdGVybWluYXRlZC4ANCMjIFBhcmFtZXRlcnPoLSBgb3JpZ2luYDogTm90aWZpZXIgWENNIG9yaWdpbiBvciByb290L2dvdmVybmFuY2Ugb3JpZ2luLlByZXBsYXlfbWlzc2luZ19yb290cwgBKGlkZW50aWZpZXIIAShJZGVudGlmaWVyAAEcaW5kaWNlcykHAdhCb3VuZGVkVmVjPFJpbmdJbmRleCwgVDo6TWF4TWlzc2luZ1Jvb3RzUGVyQ29sbGVjdGlvbj4AAxT0U2VuZHMgcmVwbGF5IHJlcXVlc3RzIHRvIHRoZSBub3RpZmllciBmb3IgbWlzc2luZyByaW5nIHJvb3RzLgAhAVN1Ym1pdHRlZCBieSB0aGUgb2ZmY2hhaW4gd29ya2VyIGFzIGFuIGF1dGhvcml6ZWQgdHJhbnNhY3Rpb24uIFZhbGlkYXRlcykBdGhhdCB0aGUgc3Vic2NyaXB0aW9uIGlzIGFjdGl2ZSBhbmQgdGhhdCB0aGUgcHJvdmlkZWQgaW5kaWNlcyBhcmUgYWN0dWFsbHmsbWlzc2luZyBiZWZvcmUgc2VuZGluZyBYQ00gcmVwbGF5IHJlcXVlc3RzLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy4NBxA0aW5kaXZfc3VwcG9ydBh0cmFpdHMccmVhbGl0eTBSaW5nRXhwb25lbnQAAQwQUjJlOQAJABRSMmUxMAAKABRSMmUxNAAOAAARBww0aW5kaXZfc3VwcG9ydGxtZW1iZXJzX25vdGlmaWVyX3N1YnNjcmliZXJQUmluZ1Jvb3RVcGRhdGVzQmF0Y2gEBFQAABQBKGlkZW50aWZpZXIIAShJZGVudGlmaWVyAAEgc2VxdWVuY2UoAThTZXF1ZW5jZU51bWJlcgABLHNvdXJjZV90aW1lKAEMdTY0AAEcdXBkYXRlcxUHAdBCb3VuZGVkVmVjPFJpbmdSb290VXBkYXRlPFQ+LCBUOjpNYXhVcGRhdGVzUGVyQmF0Y2g+AAE8bmV4dF9yaW5nX2luZGV4OAEMdTMyAAAVBwxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUARkHBFMAAAQAJQcBGFZlYzxUPgAAGQcMNGluZGl2X3N1cHBvcnRsbWVtYmVyc19ub3RpZmllcl9zdWJzY3JpYmVyOFJpbmdSb290VXBkYXRlBARUAAAIAShyaW5nX2luZGV4OAEkUmluZ0luZGV4AAEIb3AdBwFgUmluZ1Jvb3RPcDxNZW1iZXJzT2Y8VD4+AAAdBww0aW5kaXZfc3VwcG9ydGxtZW1iZXJzX25vdGlmaWVyX3N1YnNjcmliZXIoUmluZ1Jvb3RPcAQEUgEhBwEIFEJ1aWx0CAEgcmV2aXNpb244ATRSZXZpc2lvbkluZGV4AAEQcm9vdCEHAQRSAAAAHERlbGV0ZWQAAQAAIQcMKHZlcmlmaWFibGUQcmluZ0RNZW1iZXJzQ29tbWl0bWVudAADAAMAAAwAJQcAAAIZBwApBwxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUATgEUwAABABdBAEYVmVjPFQ+AAAtBwxsaW5kaXZfcGFsbGV0X2FsaWFzX2FjY291bnRzGHBhbGxldBBDYWxsBARUAAEUTHVuc2V0X2FsaWFzX2FjY291bnQAARCgUmVtb3ZlIHRoZSBhbGlhcyBtYXBwaW5nIGZvciB0aGUgc2lnbmVyLgA1AVRoZSBvcmlnaW4gbXVzdCBiZSBzaWduZWQgYnkgdGhlIGFjY291bnQgY3VycmVudGx5IGJvdW5kIHRvIGEgcmluZyBhbGlhcy4gVGhlmG1hcHBpbmcgaXMgcmVtb3ZlZCBpbiBib3RoIGRpcmVjdGlvbnMuRHNldF9hbGlhc19hY2NvdW50GAEUcHJvb2YxBwEoUHJvb2ZPZjxUPgABKGNvbGxlY3Rpb24IAShJZGVudGlmaWVyAAEocmluZ19pbmRleDgBJFJpbmdJbmRleAABNHJpbmdfcmV2aXNpb244ATRSZXZpc2lvbkluZGV4AAEcY29udGV4dAgBHENvbnRleHQAAThwcm9vZl92YWxpZF9hdCgBDHU2NAADMOhMaW5rIGFuIGFjY291bnQgdG8gYSByaW5nIGFsaWFzLCBvbiBwYXltZW50IG9mIGEgUEdBUyBmZWUuADUBVGhlIG9yaWdpbiBtdXN0IGJlIHNpZ25lZDsgdGhlIHNpZ25lciBiZWNvbWVzIHRoZSBib3VuZCBhY2NvdW50LiBUaGUgUEdBUyBmZWU5AShbYEFsaWFzRmVlYF0pIGlzIGJ1cm5lZCBmcm9tIHRoZSBzaWduZXIncyBQR0FTIGJhbGFuY2UuIFRoZSBhbGlhcyBtdXN0IHZlcmlmeUEBYWdhaW5zdCB0aGUgc3VwcGxpZWQgYGNvbGxlY3Rpb25gL2ByaW5nX2luZGV4YC9gcmluZ19yZXZpc2lvbmAgaW4gYGNvbnRleHRgLiBUaGW8Y29sbGVjdGlvbiBtdXN0IHN0aWxsIGJlIFBlb3BsZSBvciBQZW9wbGUgTGl0ZS4ASQFJZiBhIGRpZmZlcmVudCBhY2NvdW50IGlzIGFscmVhZHkgYm91bmQgdG8gdGhlIHNhbWUgYWxpYXMgdW5kZXIgdGhpcyBjb250ZXh0LCB0aGF0+G1hcHBpbmcgaXMgZHJvcHBlZCBhbmQgdGhlIHN3YXAgaXMgcGFpZCBmb3IgYnkgdGhlIG5ldyBzaWduZXIuACkBUmUtcHJvdmluZyB0aGUgc2FtZSBhbGlhcyB1bmRlciBhIGZyZXNoZXIgcmluZyByZXZpc2lvbiBzaG91bGQgaW5zdGVhZCB1c2XEW2BQYWxsZXQ6OnJlcHJvdmVfYWxpYXNfYWNjb3VudGBdLCB3aGljaCBpcyBmcmVlLlRyZXByb3ZlX2FsaWFzX2FjY291bnQQARRwcm9vZjEHAShQcm9vZk9mPFQ+AAEocmluZ19pbmRleDgBJFJpbmdJbmRleAABNHJpbmdfcmV2aXNpb244ATRSZXZpc2lvbkluZGV4AAE4cHJvb2ZfdmFsaWRfYXQoAQx1NjQABBxhAVJlLXByb3ZlIHRoZSBob2xkZXIncyBhbGlhcyBhZ2FpbnN0IGEgZnJlc2hlciByaW5nIHJldmlzaW9uLCBmcmVlIG9mIGNoYXJnZSBpbiBjYXNlIG9mIGFYc3VjY2Vzc2Z1bCBvcGVyYXRpb25zLgARAVRoZSBvcmlnaW4gbXVzdCBiZSBzaWduZWQgYW5kIG11c3QgYWxyZWFkeSBob2xkIGEgYWxpYXMgbWFwcGluZy4gVGhlGQFwcm9vZiBpcyB2ZXJpZmllZCBhZ2FpbnN0IHRoZSBzdG9yZWQgY29udGV4dDsgdGhlIHJlc3VsdGluZyBhbGlhcyBtdXN0EQFtYXRjaCB0aGUgc3RvcmVkIGFsaWFzLiBPbmx5IHRoZSBgcmV2aXNpb25gIGFuZCBgcmluZ2AgZmllbGRzIG9mIHRoZREBc3RvcmVkIG1hcHBpbmcgY2hhbmdlOyBjb2xsZWN0aW9uLCBjb250ZXh0LCBhbmQgYWxpYXMgYXJlIHByZXNlcnZlZC40c2V0X2FsaWFzX2ZlZQQBDGZlZVkBATBCYWxhbmNlT2Y8VD4ABRToU2V0IHRoZSBQR0FTIGZlZSBjaGFyZ2VkIGJ5IFtgUGFsbGV0OjpzZXRfYWxpYXNfYWNjb3VudGBdLgAVAU9yaWdpbiBtdXN0IGJlIFtgQ29uZmlnOjpGZWVNYW5hZ2VyT3JpZ2luYF0uIFRoZSBuZXcgZmVlIHJlcGxhY2VzIHRoZfxwcmV2aW91cyB2YWx1ZSAoaWYgYW55KS4gVGhlcmUgaXMgbm8gbWluaW11bSDigJQgc2V0IHRvIHplcm8gdG/kZWZmZWN0aXZlbHkgZGlzYWJsZSB0aGUgYnVybiB3aGlsZSBrZWVwaW5nIHRoZSBwYXRoIG9wZW4uUGNsZWFuX3VwX3N0YWxlX2FsaWFzCAEoY29sbGVjdGlvbggBKElkZW50aWZpZXIAAQhjYQ0EATxDb250ZXh0dWFsQWxpYXMAAiSkUmVtb3ZlIGEgc3RhbGUgYWxpYXMgPC0+IGFjY291bnQgbWFwcGluZy4AuEFueW9uZSBjYW4gY2FsbCB0aGlzLiBBIG1hcHBpbmcgaXMgc3RhbGUgd2hlbjpJATEuIFRoZSByaW5nIHJldmlzaW9uIG5vIGxvbmdlciBtYXRjaGVzIHRoZSBhY2NvdW50IGFsaWFzIChpLmUuLCByaW5nIHdhcyByZWJ1aWx0KS64Mi4gVGhlIGFjY291bnQgYWxpYXMgcmVmZXJzIHRvIGEgZGVsZXRlZCByaW5nLgA9AUZvciAoMSksIHRoZSBtYXBwaW5nIGlzIG9ubHkgY29uc2lkZXJlZCBzdGFsZSBhZnRlciBhIGdyYWNlIHBlcmlvZCBoYXMgZWxhcHNlZC4ACQFUaGUgdHJhbnNhY3Rpb24gZmVlIGlzIHJlZnVuZGVkIG9uIHN1Y2Nlc3MgdG8gaW5jZW50aXZpemUgY2xlYW51cC4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuMQcMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AAA1BwxEaW5kaXZfcGFsbGV0X3BnYXMYcGFsbGV0EENhbGwEBFQAAQwoY2xhaW1fcGdhcwgBKHNsb3RfaW5kZXg4AQx1MzIAARh0YXJnZXQEATBUOjpBY2NvdW50SWQAACSQTWludCBQR0FTIGZvciBhIHZlcmlmaWVkIGNsYWltIHNsb3QuAAkBTXVzdCBiZSBzdWJtaXR0ZWQgd2l0aCB0aGUgW2BBc1BnYXNgXSB0cmFuc2FjdGlvbiBleHRlbnNpb24sIHdoaWNoUQF2ZXJpZmllcyB0aGUgcmluZy1WUkYgcHJvb2YgYW5kIHByb2R1Y2VzIGFuIFtgT3JpZ2luOjpDbGFpbUFsaWFzYF0uIFRoZSBvdXRlciBvcmlnaW5VAW11c3QgYmUgYE5vbmVgICh0aGUgZXh0ZW5zaW9uIHJlcGxhY2VzIGl0IHdpdGggdGhlIGxvY2FsIG9yaWdpbik7IGFueSBvdGhlciBvcmlnaW4gaXMkcmVqZWN0ZWQuAFkBYHNsb3RfaW5kZXhgIGlzIHBhcnQgb2YgdGhlIGNhbGwgcGF5bG9hZCBzbyB0aGUgZXh0ZW5zaW9uIGNhbiBkZXJpdmUgdGhlIGNsYWltIGNvbnRleHRRAW9uLWNoYWluIGFuZCBzbyB0aGUgcHJvb2YgYmluZHMgdG8gdGhlIHJlcXVlc3RlZCBzbG90IHZpYSB0aGUgaW5oZXJpdGVkIGltcGxpY2F0aW9uLkRjcmVhdGVfcGdhc19hc3NldAABCFUBQ3JlYXRlIHRoZSBQR0FTIGFzc2V0LiBUaGlzIGlzIGEgcGVybWlzc2lvbmxlc3MgYXV0aG9yaXplZCBjYWxsIHRoYXQgY2FuIG9ubHkgc3VjY2VlZKRpZiB0aGUgUEdBUyBhc3NldCBkb2VzIG5vdCBhbHJlYWR5IGV4aXN0LmBjbGVhbl9wZ2FzX2NsYWltX3JlY29yZHMIASRkYXlfaW5kZXg4AQx1MzIAASxmaXJzdF9hbGlhcwgBFEFsaWFzAAIk5FJlbW92ZSBvbGQgUEdBUyBjbGFpbSByZWNvcmRzIGZvciBhIHNwZWNpZmljIGBkYXlfaW5kZXhgLgAFAVRoaXMgaXMgYW4gYXV0aG9yaXplZCBleHRyaW5zaWMgc3VibWl0dGVkIGJ5IHRoZSBvZmZjaGFpbiB3b3JrZXIuNQFPbmx5IHJlY29yZHMgZnJvbSBkYXlzIHRoYXQgaGF2ZSBmdWxseSBlbGFwc2VkIChvdXRzaWRlIHRoZSBncmFjZSB3aW5kb3cpIGNhbikBYmUgY2xlYW5lZC4gVXAgdG8gW2BDb25maWc6Ok1heFBnYXNDbGFpbVJlY29yZENsZWFudXBQZXJDYWxsYF0gZW50cmllcyBhcmVEcmVtb3ZlZCBwZXIgY2FsbC4AYQFgZmlyc3RfYWxpYXNgIGlzIHRoZSBmaXJzdCBhbGlhcyBjdXJyZW50bHkgc3RvcmVkIGZvciBgZGF5X2luZGV4YCBhbmQgaXMgaW5jbHVkZWQgaW4gdGhlgHRhZ3MgZm9yIHRyYW5zYWN0aW9uIHVuaXF1ZW5lc3MuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLjkHDDRwYWxsZXRfcmV2aXZlGHBhbGxldBBDYWxsBARUAAE4MGV0aF90cmFuc2FjdAQBHHBheWxvYWQYARxWZWM8dTg+AAAwLQFBIHJhdyBFVk0gdHJhbnNhY3Rpb24sIHR5cGljYWxseSBkaXNwYXRjaGVkIGJ5IGFuIEV0aGVyZXVtIEpTT04tUlBDIHNlcnZlci4AMCMgUGFyYW1ldGVycwDsKiBgcGF5bG9hZGA6IFRoZSBlbmNvZGVkIFtgY3JhdGU6OmV2bTo6VHJhbnNhY3Rpb25TaWduZWRgXS4AGCMgTm90ZQBRAVRoaXMgY2FsbCBjYW5ub3QgYmUgZGlzcGF0Y2hlZCBkaXJlY3RseTsgYXR0ZW1wdGluZyB0byBkbyBzbyB3aWxsIHJlc3VsdCBpbiBhIGZhaWxlZFEBdHJhbnNhY3Rpb24uIEl0IHNlcnZlcyBhcyBhIHdyYXBwZXIgZm9yIGFuIEV0aGVyZXVtIHRyYW5zYWN0aW9uLiBXaGVuIHN1Ym1pdHRlZCwgdGhlWQFydW50aW1lIGNvbnZlcnRzIGl0IGludG8gYSBbYHNwX3J1bnRpbWU6OmdlbmVyaWM6OkNoZWNrZWRFeHRyaW5zaWNgXSBieSByZWNvdmVyaW5nIHRoZZhzaWduZXIgYW5kIHZhbGlkYXRpbmcgdGhlIHRyYW5zYWN0aW9uLhBjYWxsFAEQZGVzdD0HARBIMTYwAAEUdmFsdWVVAQEwQmFsYW5jZU9mPFQ+AAEwd2VpZ2h0X2xpbWl0FQEBGFdlaWdodAABVHN0b3JhZ2VfZGVwb3NpdF9saW1pdFUBATBCYWxhbmNlT2Y8VD4AARBkYXRhGAEcVmVjPHU4PgABQAUBTWFrZXMgYSBjYWxsIHRvIGFuIGFjY291bnQsIG9wdGlvbmFsbHkgdHJhbnNmZXJyaW5nIHNvbWUgYmFsYW5jZS4AMCMgUGFyYW1ldGVycwCoKiBgZGVzdGA6IEFkZHJlc3Mgb2YgdGhlIGNvbnRyYWN0IHRvIGNhbGwu/CogYHZhbHVlYDogVGhlIGJhbGFuY2UgdG8gdHJhbnNmZXIgZnJvbSB0aGUgYG9yaWdpbmAgdG8gYGRlc3RgLi0BKiBgd2VpZ2h0X2xpbWl0YDogVGhlIHdlaWdodCBsaW1pdCBlbmZvcmNlZCB3aGVuIGV4ZWN1dGluZyB0aGUgY29uc3RydWN0b3IuVQEqIGBzdG9yYWdlX2RlcG9zaXRfbGltaXRgOiBUaGUgbWF4aW11bSBhbW91bnQgb2YgYmFsYW5jZSB0aGF0IGNhbiBiZSBjaGFyZ2VkIGZyb20gdGhlpCAgY2FsbGVyIHRvIHBheSBmb3IgdGhlIHN0b3JhZ2UgY29uc3VtZWQuxCogYGRhdGFgOiBUaGUgaW5wdXQgZGF0YSB0byBwYXNzIHRvIHRoZSBjb250cmFjdC4AJQEqIElmIHRoZSBhY2NvdW50IGlzIGEgc21hcnQtY29udHJhY3QgYWNjb3VudCwgdGhlIGFzc29jaWF0ZWQgY29kZSB3aWxsIGJlrGV4ZWN1dGVkIGFuZCBhbnkgdmFsdWUgd2lsbCBiZSB0cmFuc2ZlcnJlZC4VASogSWYgdGhlIGFjY291bnQgaXMgYSByZWd1bGFyIGFjY291bnQsIGFueSB2YWx1ZSB3aWxsIGJlIHRyYW5zZmVycmVkLkUBKiBJZiBubyBhY2NvdW50IGV4aXN0cyBhbmQgdGhlIGNhbGwgdmFsdWUgaXMgbm90IGxlc3MgdGhhbiBgZXhpc3RlbnRpYWxfZGVwb3NpdGAsEQFhIHJlZ3VsYXIgYWNjb3VudCB3aWxsIGJlIGNyZWF0ZWQgYW5kIGFueSB2YWx1ZSB3aWxsIGJlIHRyYW5zZmVycmVkLixpbnN0YW50aWF0ZRgBFHZhbHVlVQEBMEJhbGFuY2VPZjxUPgABMHdlaWdodF9saW1pdBUBARhXZWlnaHQAAVRzdG9yYWdlX2RlcG9zaXRfbGltaXRVAQEwQmFsYW5jZU9mPFQ+AAEkY29kZV9oYXNoQAE0c3BfY29yZTo6SDI1NgABEGRhdGEYARxWZWM8dTg+AAEQc2FsdEEHAUBPcHRpb248W3U4OyAzMl0+AAIU9Eluc3RhbnRpYXRlcyBhIGNvbnRyYWN0IGZyb20gYSBwcmV2aW91c2x5IGRlcGxveWVkIHZtIGJpbmFyeS4ANQFUaGlzIGZ1bmN0aW9uIGlzIGlkZW50aWNhbCB0byBbYFNlbGY6Omluc3RhbnRpYXRlX3dpdGhfY29kZWBdIGJ1dCB3aXRob3V0IHRoZUEBY29kZSBkZXBsb3ltZW50IHN0ZXAuIEluc3RlYWQsIHRoZSBgY29kZV9oYXNoYCBvZiBhbiBvbi1jaGFpbiBkZXBsb3llZCB2bSBiaW5hcnlEbXVzdCBiZSBzdXBwbGllZC5UaW5zdGFudGlhdGVfd2l0aF9jb2RlGAEUdmFsdWVVAQEwQmFsYW5jZU9mPFQ+AAEwd2VpZ2h0X2xpbWl0FQEBGFdlaWdodAABVHN0b3JhZ2VfZGVwb3NpdF9saW1pdFUBATBCYWxhbmNlT2Y8VD4AARBjb2RlGAEcVmVjPHU4PgABEGRhdGEYARxWZWM8dTg+AAEQc2FsdEEHAUBPcHRpb248W3U4OyAzMl0+AANsMQFJbnN0YW50aWF0ZXMgYSBuZXcgY29udHJhY3QgZnJvbSB0aGUgc3VwcGxpZWQgYGNvZGVgIG9wdGlvbmFsbHkgdHJhbnNmZXJyaW5nNHNvbWUgYmFsYW5jZS4AIQFUaGlzIGRpc3BhdGNoYWJsZSBoYXMgdGhlIHNhbWUgZWZmZWN0IGFzIGNhbGxpbmcgW2BTZWxmOjp1cGxvYWRfY29kZWBdICs9AVtgU2VsZjo6aW5zdGFudGlhdGVgXS4gQnVuZGxpbmcgdGhlbSB0b2dldGhlciBwcm92aWRlcyBlZmZpY2llbmN5IGdhaW5zLiBQbGVhc2XYYWxzbyBjaGVjayB0aGUgZG9jdW1lbnRhdGlvbiBvZiBbYFNlbGY6OnVwbG9hZF9jb2RlYF0uADAjIFBhcmFtZXRlcnMATQEqIGB2YWx1ZWA6IFRoZSBiYWxhbmNlIHRvIHRyYW5zZmVyIGZyb20gdGhlIGBvcmlnaW5gIHRvIHRoZSBuZXdseSBjcmVhdGVkIGNvbnRyYWN0Li0BKiBgd2VpZ2h0X2xpbWl0YDogVGhlIHdlaWdodCBsaW1pdCBlbmZvcmNlZCB3aGVuIGV4ZWN1dGluZyB0aGUgY29uc3RydWN0b3IuVQEqIGBzdG9yYWdlX2RlcG9zaXRfbGltaXRgOiBUaGUgbWF4aW11bSBhbW91bnQgb2YgYmFsYW5jZSB0aGF0IGNhbiBiZSBjaGFyZ2VkL3Jlc2VydmVkyCAgZnJvbSB0aGUgY2FsbGVyIHRvIHBheSBmb3IgdGhlIHN0b3JhZ2UgY29uc3VtZWQuzCogYGNvZGVgOiBUaGUgY29udHJhY3QgY29kZSB0byBkZXBsb3kgaW4gcmF3IGJ5dGVzLvQqIGBkYXRhYDogVGhlIGlucHV0IGRhdGEgdG8gcGFzcyB0byB0aGUgY29udHJhY3QgY29uc3RydWN0b3IuPQEqIGBzYWx0YDogVXNlZCBmb3IgdGhlIGFkZHJlc3MgZGVyaXZhdGlvbi4gSWYgYFNvbWVgIGlzIHN1cHBsaWVkIHRoZW4gYENSRUFURTJg1AlzZW1hbnRpY3MgYXJlIHVzZWQuIElmIGBOb25lYCB0aGVuIGBDUkFURTFgIGlzIHVzZWQuAACUSW5zdGFudGlhdGlvbiBpcyBleGVjdXRlZCBhcyBmb2xsb3dzOgA5AS0gVGhlIHN1cHBsaWVkIGBjb2RlYCBpcyBkZXBsb3llZCwgYW5kIGEgYGNvZGVfaGFzaGAgaXMgY3JlYXRlZCBmb3IgdGhhdCBjb2RlLlkBLSBJZiB0aGUgYGNvZGVfaGFzaGAgYWxyZWFkeSBleGlzdHMgb24gdGhlIGNoYWluIHRoZSB1bmRlcmx5aW5nIGBjb2RlYCB3aWxsIGJlIHNoYXJlZC5JAS0gVGhlIGRlc3RpbmF0aW9uIGFkZHJlc3MgaXMgY29tcHV0ZWQgYmFzZWQgb24gdGhlIHNlbmRlciwgY29kZV9oYXNoIGFuZCB0aGUgc2FsdC4BAS0gVGhlIHNtYXJ0LWNvbnRyYWN0IGFjY291bnQgaXMgY3JlYXRlZCBhdCB0aGUgY29tcHV0ZWQgYWRkcmVzcy7ALSBUaGUgYHZhbHVlYCBpcyB0cmFuc2ZlcnJlZCB0byB0aGUgbmV3IGFjY291bnQuQQEtIFRoZSBgZGVwbG95YCBmdW5jdGlvbiBpcyBleGVjdXRlZCBpbiB0aGUgY29udGV4dCBvZiB0aGUgbmV3bHktY3JlYXRlZCBhY2NvdW50LmRldGhfaW5zdGFudGlhdGVfd2l0aF9jb2RlIAEUdmFsdWVFBwEQVTI1NgABMHdlaWdodF9saW1pdBUBARhXZWlnaHQAATRldGhfZ2FzX2xpbWl0RQcBEFUyNTYAARBjb2RlGAEcVmVjPHU4PgABEGRhdGEYARxWZWM8dTg+AAFMdHJhbnNhY3Rpb25fZW5jb2RlZBgBHFZlYzx1OD4AAUxlZmZlY3RpdmVfZ2FzX3ByaWNlRQcBEFUyNTYAASxlbmNvZGVkX2xlbjgBDHUzMgAKVD0BU2FtZSBhcyBbYFNlbGY6Omluc3RhbnRpYXRlX3dpdGhfY29kZWBdLCBidXQgaW50ZW5kZWQgdG8gYmUgZGlzcGF0Y2hlZCAqKm9ubHkqKuhieSBhbiBFVk0gdHJhbnNhY3Rpb24gdGhyb3VnaCB0aGUgRVZNIGNvbXBhdGliaWxpdHkgbGF5ZXIuADAjIFBhcmFtZXRlcnMATQEqIGB2YWx1ZWA6IFRoZSBiYWxhbmNlIHRvIHRyYW5zZmVyIGZyb20gdGhlIGBvcmlnaW5gIHRvIHRoZSBuZXdseSBjcmVhdGVkIGNvbnRyYWN0LlUBKiBgd2VpZ2h0X2xpbWl0YDogVGhlIGdhcyBsaW1pdCB1c2VkIHRvIGRlcml2ZSB0aGUgdHJhbnNhY3Rpb24gd2VpZ2h0IGZvciB0cmFuc2FjdGlvbiQgIHBheW1lbnRdASogYGV0aF9nYXNfbGltaXRgOiBUaGUgRXRoZXJldW0gZ2FzIGxpbWl0IGdvdmVybmluZyB0aGUgcmVzb3VyY2UgdXNhZ2Ugb2YgdGhlIGV4ZWN1dGlvbswqIGBjb2RlYDogVGhlIGNvbnRyYWN0IGNvZGUgdG8gZGVwbG95IGluIHJhdyBieXRlcy70KiBgZGF0YWA6IFRoZSBpbnB1dCBkYXRhIHRvIHBhc3MgdG8gdGhlIGNvbnRyYWN0IGNvbnN0cnVjdG9yLjUBKiBgdHJhbnNhY3Rpb25fZW5jb2RlZGA6IFRoZSBSTFAgZW5jb2Rpbmcgb2YgdGhlIHNpZ25lZCBFdGhlcmV1bSB0cmFuc2FjdGlvbixdASAgcmVwcmVzZW50ZWQgYXMgW2NyYXRlOjpldm06OlRyYW5zYWN0aW9uU2lnbmVkXSwgcHJvdmlkZWQgYnkgdGhlIEV0aGVyZXVtIHdhbGxldC4gVGhpc9QgIGlzIHVzZWQgZm9yIGJ1aWxkaW5nIHRoZSBFdGhlcmV1bSB0cmFuc2FjdGlvbiByb290LsQqIGVmZmVjdGl2ZV9nYXNfcHJpY2U6IHRoZSBwcmljZSBvZiBhIHVuaXQgb2YgZ2FzBQEqIGVuY29kZWQgbGVuOiB0aGUgYnl0ZSBjb2RlIHNpemUgb2YgdGhlIGBldGhfdHJhbnNhY3RgIGV4dHJpbnNpYwA5AUNhbGxpbmcgdGhpcyBkaXNwYXRjaGFibGUgZW5zdXJlcyB0aGF0IHRoZSBvcmlnaW4ncyBub25jZSBpcyBidW1wZWQgb25seSBvbmNlLGEBdmlhIHRoZSBgQ2hlY2tOb25jZWAgdHJhbnNhY3Rpb24gZXh0ZW5zaW9uLiBJbiBjb250cmFzdCwgW2BTZWxmOjppbnN0YW50aWF0ZV93aXRoX2NvZGVgXU0BYWxzbyBidW1wcyB0aGUgbm9uY2UgYWZ0ZXIgY29udHJhY3QgaW5zdGFudGlhdGlvbiwgc2luY2UgaXQgbWF5IGJlIGludm9rZWQgbXVsdGlwbGWYdGltZXMgd2l0aGluIGEgYmF0Y2ggY2FsbCB0cmFuc2FjdGlvbi4gZXRoX2NhbGwgARBkZXN0PQcBEEgxNjAAARR2YWx1ZUUHARBVMjU2AAEwd2VpZ2h0X2xpbWl0FQEBGFdlaWdodAABNGV0aF9nYXNfbGltaXRFBwEQVTI1NgABEGRhdGEYARxWZWM8dTg+AAFMdHJhbnNhY3Rpb25fZW5jb2RlZBgBHFZlYzx1OD4AAUxlZmZlY3RpdmVfZ2FzX3ByaWNlRQcBEFUyNTYAASxlbmNvZGVkX2xlbjgBDHUzMgALQPhTYW1lIGFzIFtgU2VsZjo6Y2FsbGBdLCBidXQgaW50ZW5kZWQgdG8gYmUgZGlzcGF0Y2hlZCAqKm9ubHkqKuhieSBhbiBFVk0gdHJhbnNhY3Rpb24gdGhyb3VnaCB0aGUgRVZNIGNvbXBhdGliaWxpdHkgbGF5ZXIuADAjIFBhcmFtZXRlcnMA6CogYGRlc3RgOiBUaGUgRXRoZXJldW0gYWRkcmVzcyBvZiB0aGUgYWNjb3VudCB0byBiZSBjYWxsZWRNASogYHZhbHVlYDogVGhlIGJhbGFuY2UgdG8gdHJhbnNmZXIgZnJvbSB0aGUgYG9yaWdpbmAgdG8gdGhlIG5ld2x5IGNyZWF0ZWQgY29udHJhY3QuVQEqIGB3ZWlnaHRfbGltaXRgOiBUaGUgZ2FzIGxpbWl0IHVzZWQgdG8gZGVyaXZlIHRoZSB0cmFuc2FjdGlvbiB3ZWlnaHQgZm9yIHRyYW5zYWN0aW9uJCAgcGF5bWVudF0BKiBgZXRoX2dhc19saW1pdGA6IFRoZSBFdGhlcmV1bSBnYXMgbGltaXQgZ292ZXJuaW5nIHRoZSByZXNvdXJjZSB1c2FnZSBvZiB0aGUgZXhlY3V0aW9u9CogYGRhdGFgOiBUaGUgaW5wdXQgZGF0YSB0byBwYXNzIHRvIHRoZSBjb250cmFjdCBjb25zdHJ1Y3Rvci41ASogYHRyYW5zYWN0aW9uX2VuY29kZWRgOiBUaGUgUkxQIGVuY29kaW5nIG9mIHRoZSBzaWduZWQgRXRoZXJldW0gdHJhbnNhY3Rpb24sXQEgIHJlcHJlc2VudGVkIGFzIFtjcmF0ZTo6ZXZtOjpUcmFuc2FjdGlvblNpZ25lZF0sIHByb3ZpZGVkIGJ5IHRoZSBFdGhlcmV1bSB3YWxsZXQuIFRoaXPUICBpcyB1c2VkIGZvciBidWlsZGluZyB0aGUgRXRoZXJldW0gdHJhbnNhY3Rpb24gcm9vdC7EKiBlZmZlY3RpdmVfZ2FzX3ByaWNlOiB0aGUgcHJpY2Ugb2YgYSB1bml0IG9mIGdhcwUBKiBlbmNvZGVkIGxlbjogdGhlIGJ5dGUgY29kZSBzaXplIG9mIHRoZSBgZXRoX3RyYW5zYWN0YCBleHRyaW5zaWNIZXRoX3N1YnN0cmF0ZV9jYWxsCAEQY2FsbCABfEJveDw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4AAUx0cmFuc2FjdGlvbl9lbmNvZGVkGAEcVmVjPHU4PgAMKPxFeGVjdXRlcyBhIFN1YnN0cmF0ZSBydW50aW1lIGNhbGwgZnJvbSBhbiBFdGhlcmV1bSB0cmFuc2FjdGlvbi4ARQFUaGlzIGRpc3BhdGNoYWJsZSBpcyBpbnRlbmRlZCB0byBiZSBjYWxsZWQgKipvbmx5KiogdGhyb3VnaCB0aGUgRVZNIGNvbXBhdGliaWxpdHkZAWxheWVyLiBUaGUgcHJvdmlkZWQgY2FsbCB3aWxsIGJlIGRpc3BhdGNoZWQgdXNpbmcgYFJhd09yaWdpbjo6U2lnbmVkYC4AMCMgUGFyYW1ldGVycwDkKiBgb3JpZ2luYDogTXVzdCBiZSBhbiBbYE9yaWdpbjo6RXRoVHJhbnNhY3Rpb25gXSBvcmlnaW4uwCogYGNhbGxgOiBUaGUgU3Vic3RyYXRlIHJ1bnRpbWUgY2FsbCB0byBleGVjdXRlLhkBKiBgdHJhbnNhY3Rpb25fZW5jb2RlZGA6IFRoZSBSTFAgZW5jb2Rpbmcgb2YgdGhlIEV0aGVyZXVtIHRyYW5zYWN0aW9uLCx1cGxvYWRfY29kZQgBEGNvZGUYARxWZWM8dTg+AAFUc3RvcmFnZV9kZXBvc2l0X2xpbWl0VQEBMEJhbGFuY2VPZjxUPgAEOOxVcGxvYWQgbmV3IGBjb2RlYCB3aXRob3V0IGluc3RhbnRpYXRpbmcgYSBjb250cmFjdCBmcm9tIGl0LgAhAUlmIHRoZSBjb2RlIGRvZXMgbm90IGFscmVhZHkgZXhpc3QgYSBkZXBvc2l0IGlzIHJlc2VydmVkIGZyb20gdGhlIGNhbGxlcg0BVGhlIHNpemUgb2YgdGhlIHJlc2VydmUgZGVwZW5kcyBvbiB0aGUgc2l6ZSBvZiB0aGUgc3VwcGxpZWQgYGNvZGVgLgAYIyBOb3RlAFkBQW55b25lIGNhbiBpbnN0YW50aWF0ZSBhIGNvbnRyYWN0IGZyb20gYW55IHVwbG9hZGVkIGNvZGUgYW5kIHRodXMgcHJldmVudCBpdHMgcmVtb3ZhbC5BAVRvIGF2b2lkIHRoaXMgc2l0dWF0aW9uIGEgY29uc3RydWN0b3IgY291bGQgZW1wbG95IGFjY2VzcyBjb250cm9sIHNvIHRoYXQgaXQgY2FuOQFvbmx5IGJlIGluc3RhbnRpYXRlZCBieSBwZXJtaXNzaW9uZWQgZW50aXRpZXMuIFRoZSBzYW1lIGlzIHRydWUgd2hlbiB1cGxvYWRpbmegdGhyb3VnaCBbYFNlbGY6Omluc3RhbnRpYXRlX3dpdGhfY29kZWBdLgBFAUlmIHRoZSByZWZjb3VudCBvZiB0aGUgY29kZSByZWFjaGVzIHplcm8gYWZ0ZXIgdGVybWluYXRpbmcgdGhlIGxhc3QgY29udHJhY3QgdGhhdPRyZWZlcmVuY2VzIHRoaXMgY29kZSwgdGhlIGNvZGUgd2lsbCBiZSByZW1vdmVkIGF1dG9tYXRpY2FsbHkuLHJlbW92ZV9jb2RlBAEkY29kZV9oYXNoQAE0c3BfY29yZTo6SDI1NgAFEDUBUmVtb3ZlIHRoZSBjb2RlIHN0b3JlZCB1bmRlciBgY29kZV9oYXNoYCBhbmQgcmVmdW5kIHRoZSBkZXBvc2l0IHRvIGl0cyBvd25lci4ARQFBIGNvZGUgY2FuIG9ubHkgYmUgcmVtb3ZlZCBieSBpdHMgb3JpZ2luYWwgdXBsb2FkZXIgKGl0cyBvd25lcikgYW5kIG9ubHkgaWYgaXQgaXNkbm90IHVzZWQgYnkgYW55IGNvbnRyYWN0LiBzZXRfY29kZQgBEGRlc3Q9BwEQSDE2MAABJGNvZGVfaGFzaEABNHNwX2NvcmU6OkgyNTYABigJAVByaXZpbGVnZWQgZnVuY3Rpb24gdGhhdCBjaGFuZ2VzIHRoZSBjb2RlIG9mIGFuIGV4aXN0aW5nIGNvbnRyYWN0LgBFAVRoaXMgdGFrZXMgY2FyZSBvZiB1cGRhdGluZyByZWZjb3VudHMgYW5kIGFsbCBvdGhlciBuZWNlc3Nhcnkgb3BlcmF0aW9ucy4gUmV0dXJuc+hhbiBlcnJvciBpZiBlaXRoZXIgdGhlIGBjb2RlX2hhc2hgIG9yIGBkZXN0YCBkbyBub3QgZXhpc3QuABgjIE5vdGUAMQFUaGlzIGRvZXMgKipub3QqKiBjaGFuZ2UgdGhlIGFkZHJlc3Mgb2YgdGhlIGNvbnRyYWN0IGluIHF1ZXN0aW9uLiBUaGlzIG1lYW5zPQF0aGF0IHRoZSBjb250cmFjdCBhZGRyZXNzIGlzIG5vIGxvbmdlciBkZXJpdmVkIGZyb20gaXRzIGNvZGUgaGFzaCBhZnRlciBjYWxsaW5nSHRoaXMgZGlzcGF0Y2hhYmxlLixtYXBfYWNjb3VudAAHHEEBUmVnaXN0ZXIgdGhlIGNhbGxlcnMgYWNjb3VudCBpZCBzbyB0aGF0IGl0IGNhbiBiZSB1c2VkIGluIGNvbnRyYWN0IGludGVyYWN0aW9ucy4AXQFUaGlzIHdpbGwgZXJyb3IgaWYgdGhlIG9yaWdpbiBpcyBhbHJlYWR5IG1hcHBlZCBvciBpcyBhIGV0aCBuYXRpdmUgYEFkZHJlc3MyMGAuIEl0IHdpbGwdAXRha2UgYSBkZXBvc2l0IHRoYXQgY2FuIGJlIHJlbGVhc2VkIGJ5IGNhbGxpbmcgW2BTZWxmOjp1bm1hcF9hY2NvdW50YF0uADkBTm9vcCB3aGVuIFtgQ29uZmlnOjpBdXRvTWFwYF0gaXMgZW5hYmxlZCwgYXMgYWNjb3VudHMgYXJlIGF1dG9tYXRpY2FsbHkgbWFwcGVkfG9uIGNyZWF0aW9uIHZpYSBbYEF1dG9NYXBwZXJgXS5IYmF0Y2hfbWFwX2FjY291bnRzBAEgYWNjb3VudHNhAQFEVmVjPFQ6OkFjY291bnRJZD4ADQRZAU1hcCBtYW55IGFjY291bnRzIGFuZCBtYWtlIHRoZSBUWCBmcmVlIGlmIGF0IGxlYXN0IDkwJSB3ZXJlIHVubWFwcGVkIG9yIGhlbGQgZGVwb3NpdHMuNHVubWFwX2FjY291bnQACBz8VW5yZWdpc3RlciB0aGUgY2FsbGVycyBhY2NvdW50IGlkIGluIG9yZGVyIHRvIGZyZWUgdGhlIGRlcG9zaXQuAEEBVGhlcmUgaXMgbm8gcmVhc29uIHRvIGV2ZXIgY2FsbCB0aGlzIGZ1bmN0aW9uIG90aGVyIHRoYW4gZnJlZWluZyB1cCB0aGUgZGVwb3NpdC74VGhpcyBpcyBvbmx5IHVzZWZ1bCB3aGVuIHRoZSBhY2NvdW50IHNob3VsZCBubyBsb25nZXIgYmUgdXNlZC4AUQFEaXNhYmxlZCB3aGVuIFtgQ29uZmlnOjpBdXRvTWFwYF0gaXMgZW5hYmxlZCwgYXMgYWNjb3VudHMgYXJlIGF1dG9tYXRpY2FsbHkgdW5tYXBwZWRsb24ga2lsbCB2aWEgW2BBdXRvTWFwcGVyYF0ucGRpc3BhdGNoX2FzX2ZhbGxiYWNrX2FjY291bnQEARBjYWxsIAF8Qm94PDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgAJFB0BRGlzcGF0Y2ggYW4gYGNhbGxgIHdpdGggdGhlIG9yaWdpbiBzZXQgdG8gdGhlIGNhbGxlcnMgZmFsbGJhY2sgYWRkcmVzcy4AYQFFdmVyeSBgQWNjb3VudElkMzJgIGNhbiBjb250cm9sIGl0cyBjb3JyZXNwb25kaW5nIGZhbGxiYWNrIGFjY291bnQuIFRoZSBmYWxsYmFjayBhY2NvdW50QQFpcyB0aGUgYEFjY291bnRJZDIwYCB3aXRoIHRoZSBsYXN0IDEyIGJ5dGVzIHNldCB0byBgMHhFRWAuIFRoaXMgaXMgZXNzZW50aWFsbHkgYVUBcmVjb3ZlcnkgZnVuY3Rpb24gaW4gY2FzZSBhbiBgQWNjb3VudElkMjBgIHdhcyB1c2VkIHdpdGhvdXQgY3JlYXRpbmcgYSBtYXBwaW5nIGZpcnN0LgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy49Bwg8cHJpbWl0aXZlX3R5cGVzEEgxNjAAAAQAHAEgW3U4OyAyMF0AAEEHBBhPcHRpb24EBFQBCAEIEE5vbmUAAAAQU29tZQQACAAAAQAARQcIPHByaW1pdGl2ZV90eXBlcxBVMjU2AAAEAEkHASBbdTY0OyA0XQAASQcAAAMEAAAAKABNBwxoaW5kaXZfcGFsbGV0X2RvdG5zX2dhdGV3YXkYcGFsbGV0EENhbGwEBFQAARQwcmVzZXJ2ZV9uYW1lGAEkY2FuZGlkYXRlBAEwVDo6QWNjb3VudElkAAFMY2FuZGlkYXRlX3NpZ25hdHVyZb0EAVxUOjpBdHRlc3RhdGlvblNpZ25hdHVyZQABKGxpdGVfbGFiZWxRBwEkQmFzZUxhYmVsAAEgY2hhdF9rZXlVBwEcQ2hhdEtleQABTHJlc2VydmVkX2Jhc2VfbGFiZWxZBwFET3B0aW9uPEJhc2VMYWJlbD4AASRzaWduZWRfYXQoAQx1NjQAAGxJAVJlc2VydmVzIGEgbGl0ZS1wZXJzb24gbGFiZWwgb24gYERvdG5zUG9wQ29udHJvbGxlcmAgKHZpYSBgUm9vdEdhdGV3YXlEaXNwYXRjaGVyYClJAWZvciBhIExpdGUgUGVyc29uLCBhbmQgb3B0aW9uYWxseSBlbnF1ZXVlcyBhIHJlc2VydmF0aW9uIGZvciBhIGJhc2UgbGFiZWwgdGhlIHVzZXKgaW50ZW5kcyB0byBjbGFpbSBhcyBhIEZ1bGwgUGVyc29uIGxhdGVyLgANAVRoZSBjYWxsZXIgbXVzdCBiZSBhbiBhdHRlc3RlciB3aXRoIGF2YWlsYWJsZSBhbGxvd2FuY2UuIFRoZSB1c2VyJ3MpAXNpZ25hdHVyZSBwcm92ZXMgdGhlaXIgY29uc2VudCB0byB0aGUgcmVzZXJ2YXRpb24gd2l0aCB0aGlzIHNwZWNpZmljIGxhYmVsNGFuZCBhdHRlc3Rlci4AMCMgUGFyYW1ldGVyc10BLSBgY2FuZGlkYXRlYDogdGhlIExpdGUgUGVyc29uJ3MgYWNjb3VudCBmb3Igd2hvbSB0aGUgbGFiZWwgaXMgYmVpbmcgcmVzZXJ2ZWQuIEFsc28gdGhliCAgc2lnbmVyIG9mIGBjYW5kaWRhdGVfc2lnbmF0dXJlYC70LSBgY2FuZGlkYXRlX3NpZ25hdHVyZWA6IHNpZ25hdHVyZSBvdmVyIHRoZSBieXRlcyByZXR1cm5lZCBieWUBICBgUGFsbGV0Ojpjb25zdHJ1Y3RfcmVzZXJ2YXRpb25fbWVzc2FnZWAg4oCUIGEgU0NBTEUtZW5jb2RlZCB0dXBsZSBiaW5kaW5nIHRoZSBhdHRlc3RlcixZASAgY2FuZGlkYXRlLCB0aGUgY2FuZGlkYXRlJ3MgY2hvc2VuICpiYXNlKiB1c2VybmFtZSwgYW5kIGNoYXQga2V5LiBUaGUgZGlnaXQgc3VmZml4IG9mOQEgIGBsaXRlX2xhYmVsYCBpcyAqKm5vdCoqIHBhcnQgb2YgdGhlIHNpZ25lZCBtZXNzYWdlICh0aGUgZGlnaXRzIGFyZSBhbGxvY2F0ZWRJASAgc2VydmVyLXNpZGUgYWZ0ZXIgdGhlIGNhbmRpZGF0ZSBzaWducywgc28gdGhlIGNhbmRpZGF0ZSBjYW5ub3QgY29tbWl0IHRvIHRoZW0gYXRAICBzaWduaW5nIHRpbWUpLjUBLSBgbGl0ZV9sYWJlbGA6IHRoZSBsaXRlLXBlcnNvbiBsYWJlbC4gTXVzdCBiZSBgPGRucy1zdGVtPi48MisgZGlnaXRzPmAgKGUuZy5JASAgYGFsaWNlLjQyYCksIG1hdGNoaW5nIGBTdHJpbmdVdGlscy5pc0xpdGVQZXJzb25MYWJlbGAgaW4gdGhlIGNvbnRyYWN0cy4gT25seSB0aGVZASAgYDxkbnMtc3RlbT5gIHBvcnRpb24gZW50ZXJzIHRoZSBzaWduZWQgbWVzc2FnZTsgdGhlIGRpZ2l0cyByaWRlIGFsb25nIGFzIGFuIHVuc2lnbmVkEQEgIGV4dHJpbnNpYyBhcmd1bWVudCB1c2VkIGZvciB0aGUgY29udHJhY3QgY2FsbGRhdGEgYW5kIHN0b3JhZ2Uga2V5LtAtIGBjaGF0X2tleWA6IDY1LWJ5dGUgcHVibGljIGtleSB1c2VkIGZvciBFQ0RIIGNoYXQuWQEtIGByZXNlcnZlZF9iYXNlX2xhYmVsYDogb3B0aW9uYWwgYmFzZSBsYWJlbCByZXNlcnZlZCBmb3IgdGhlIGNhbmRpZGF0ZSB0byBsYXRlciBjbGFpbfggIGFzIGEgRnVsbCBQZXJzb24uIE11c3QgYmUgYSBzaW5nbGUgRE5TIGxhYmVsIChlLmcuIGBhbGljZWApLlkBLSBgc2lnbmVkX2F0YDogVW5peC10aW1lIHNlY29uZCBhdCB3aGljaCB0aGUgY2FuZGlkYXRlIHNpZ25lZCB0aGUgcmVzZXJ2YXRpb24gbWVzc2FnZS5ZASAgVGhlIHNpZ25hdHVyZSBpcyBhY2NlcHRlZCBvbmx5IGlmIGBzaWduZWRfYXQgPD0gbm93ICsgTWF4RnV0dXJlU2tld1NlY29uZHNgIGFuZCBgbm93SQEgIDw9IHNpZ25lZF9hdCArIE1heFZhbGlkaXR5U2Vjb25kc2AsIHdoZXJlIGBub3dgIGNvbWVzIGZyb20gW2BDb25maWc6OlVuaXhUaW1lYF0uNHJlZ2lzdGVyX25hbWUMAQx3aG8EATBUOjpBY2NvdW50SWQAARRsYWJlbFEHASRCYXNlTGFiZWwAARBsaW5rXQcBEExpbmsAAUhNAVJlZ2lzdGVycyBhIGZ1bGwtcGVyc29uIGxhYmVsIG9uIGBEb3Ruc1BvcENvbnRyb2xsZXJgICh2aWEgYFJvb3RHYXRld2F5RGlzcGF0Y2hlcmApaGZvciBhIGZ1bGx5IHByb3ZlbiBwZXJzb24uAF0BVGhlIG9yaWdpbiBtdXN0IGJlIFtgT3JpZ2luOjpQZXJzb25SZWdpc3RyYXRpb25gXSwgcHJvZHVjZWQgYnkgW2BBc0RvdG5zR2F0ZXdheWBdIGFmdGVyRQFpdCB2ZXJpZmllcyB0aGUgcmluZyBtZW1iZXJzaGlwIHByb29mIGFuZCB0aGUgb2ZmLWNoYWluIHNpZ25hdHVyZSBmcm9tIGB3aG9gLiBBbGz8YXV0aGVudGljYXRpb24sIGZvcm1hdCBhbmQgcmVwbGF5IGNoZWNrcyBsaXZlIGluIHRoZSBleHRlbnNpb24uADAjIFBhcmFtZXRlcnNNAS0gYHdob2A6IHRoZSBhY2NvdW50IHRoYXQgb3ducyB0aGUgZnVsbC1wZXJzb24gbGFiZWw7IGl0cyBFVk0tbWFwcGVkIGFkZHJlc3MgaXMgdGhlOQEgIHJlY2lwaWVudCBvbiB0aGUgYERvdG5zUG9wQ29udHJvbGxlcmAgY29udHJhY3QuIE11c3QgbWF0Y2ggdGhlIGB3aG9gIGFscmVhZHmYICBhdXRoZW50aWNhdGVkIGJ5IFtgQXNEb3Ruc0dhdGV3YXlgXS5VAS0gYGxhYmVsYDogdGhlIGZ1bGwtcGVyc29uIGxhYmVsLiBNdXN0IGJlIGEgc2luZ2xlIEROUyBsYWJlbCAoZS5nLiBgYWxpY2VgKSwgbWF0Y2hpbme8ICBgU3RyaW5nVXRpbHMuaXNTaW5nbGVMYWJlbGAgaW4gdGhlIGNvbnRyYWN0cy5BAS0gYGxpbmtgOiBob3cgdGhlIGZ1bGwtcGVyc29uIGxhYmVsIHJlbGF0ZXMgdG8gYSBwcmUtZXhpc3RpbmcgbGl0ZS1wZXJzb24gbGFiZWw6VQEgIC0gYExpbms6OkxpdGVVc2VybmFtZShsaXRlX2xhYmVsKWAg4oCUIGxpbmtzIHRvIGFuIGV4aXN0aW5nIGxpdGUtcGVyc29uIGxhYmVsIChtdXN0XQEgICAgbWF0Y2ggdGhlIGxpdGUgZm9ybWF0IGA8ZG5zLXN0ZW0+LjwyKyBkaWdpdHM+YCk7IHRoZSBjaGF0IGtleSBpcyBpbmhlcml0ZWQgZnJvbSB0aGU8ICAgIGxpdGUgZW50cnkuSQEgIC0gYExpbms6Ok5vbmUoY2hhdF9rZXkpYCDigJQgc3RhbmRhbG9uZSByZWdpc3RyYXRpb24gd2l0aCBhIGZyZXNoIEVDREggY2hhdCBrZXkueGluY3JlYXNlX2F0dGVzdGF0aW9uX2FsbG93YW5jZQgBHGFjY291bnQEATBUOjpBY2NvdW50SWQAARRjb3VudDgBDHUzMgACDNBHcmFudHMgYXR0ZXN0YXRpb24gYWxsb3dhbmNlIHRvIGFuIGF0dGVzdGVyIGFjY291bnQuAMRUaGUgb3JpZ2luIG11c3QgYmUgYEF0dGVzdGF0aW9uQWxsb3dhbmNlTWFuYWdlcmAubGNsZWFyX2F0dGVzdGF0aW9uX2FsbG93YW5jZQQBHGFjY291bnQEATBUOjpBY2NvdW50SWQAAwzkQ2xlYXJzIGFsbCBhdHRlc3RhdGlvbiBhbGxvd2FuY2UgZm9yIGFuIGF0dGVzdGVyIGFjY291bnQuAMRUaGUgb3JpZ2luIG11c3QgYmUgYEF0dGVzdGF0aW9uQWxsb3dhbmNlTWFuYWdlcmAuWHNldF9kaXNwYXRjaGVyX2FkZHJlc3MEARxhZGRyZXNzPQcBEEgxNjAABAzIU2V0cyB0aGUgYFJvb3RHYXRld2F5RGlzcGF0Y2hlcmAgY29udHJhY3QgYWRkcmVzcy4AKQFUaGUgb3JpZ2luIG11c3QgYmUgYERpc3BhdGNoZXJBZGRyZXNzTWFuYWdlcmAuIE92ZXJ3cml0ZXMgYW55IHByaW9yIHZhbHVlLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy5RBwxoaW5kaXZfcGFsbGV0X2RvdG5zX2dhdGV3YXkUdHlwZXMkQmFzZUxhYmVsAAAEAJ0BAXBCb3VuZGVkVmVjPHU4LCBDb25zdFUzMjwzMj4+AABVBwxoaW5kaXZfcGFsbGV0X2RvdG5zX2dhdGV3YXkUdHlwZXMcQ2hhdEtleQAABAB5AQEgW3U4OyA2NV0AAFkHBBhPcHRpb24EBFQBUQcBCBBOb25lAAAAEFNvbWUEAFEHAAABAABdBwxoaW5kaXZfcGFsbGV0X2RvdG5zX2dhdGV3YXkUdHlwZXMQTGluawABCDBMaXRlVXNlcm5hbWUEAFEHASRCYXNlTGFiZWwAAAAQTm9uZQQAVQcBHENoYXRLZXkAAQAAYQcMfGluZGl2X3BhbGxldF9vcmlnaW5fcmVzdHJpY3Rpb24YcGFsbGV0EENhbGwEBFQAAQQsY2xlYW5fdXNhZ2UEARhlbnRpdHllBwFMVDo6UmVzdHJpY3RlZEVudGl0eQABCEkBQWxsb3cgdG8gY2xlYW4gdXNhZ2UgYXNzb2NpYXRlZCB3aXRoIGFuIGVudGl0eSB3aGVuIGl0IGlzIHplcm8gb3Igd2hlbiB0aGVyZSBpcyBub5Bsb25nZXIgYW55IGFsbG93YW5jZSBmb3IgdGhlIG9yaWdpbi4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuZQcIXGFzc2V0X2h1Yl9wYXNlb19ydW50aW1lQFJlc3RyaWN0ZWRFbnRpdHkAAQRcRG90bnNQZXJzb25SZWdpc3RyYXRpb24EAAgBcGluZGl2X3N1cHBvcnQ6OnRyYWl0czo6QWxpYXMAAAAAaQcMLHBhbGxldF9zdWRvGHBhbGxldBBDYWxsBARUAAEUEHN1ZG8EARBjYWxsIAF8Qm94PDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgAABDUBQXV0aGVudGljYXRlcyB0aGUgc3VkbyBrZXkgYW5kIGRpc3BhdGNoZXMgYSBmdW5jdGlvbiBjYWxsIHdpdGggYFJvb3RgIG9yaWdpbi5Uc3Vkb191bmNoZWNrZWRfd2VpZ2h0CAEQY2FsbCABfEJveDw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4AARh3ZWlnaHQVAQEYV2VpZ2h0AAEUNQFBdXRoZW50aWNhdGVzIHRoZSBzdWRvIGtleSBhbmQgZGlzcGF0Y2hlcyBhIGZ1bmN0aW9uIGNhbGwgd2l0aCBgUm9vdGAgb3JpZ2luLi0BVGhpcyBmdW5jdGlvbiBkb2VzIG5vdCBjaGVjayB0aGUgd2VpZ2h0IG9mIHRoZSBjYWxsLCBhbmQgaW5zdGVhZCBhbGxvd3MgdGhlsFN1ZG8gdXNlciB0byBzcGVjaWZ5IHRoZSB3ZWlnaHQgb2YgdGhlIGNhbGwuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4cc2V0X2tleQQBDG5ldwABUEFjY291bnRJZExvb2t1cE9mPFQ+AAIIXQFBdXRoZW50aWNhdGVzIHRoZSBjdXJyZW50IHN1ZG8ga2V5IGFuZCBzZXRzIHRoZSBnaXZlbiBBY2NvdW50SWQgKGBuZXdgKSBhcyB0aGUgbmV3IHN1ZG8Qa2V5LhxzdWRvX2FzCAEMd2hvAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARBjYWxsIAF8Qm94PDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgADEE0BQXV0aGVudGljYXRlcyB0aGUgc3VkbyBrZXkgYW5kIGRpc3BhdGNoZXMgYSBmdW5jdGlvbiBjYWxsIHdpdGggYFNpZ25lZGAgb3JpZ2luIGZyb21AYSBnaXZlbiBhY2NvdW50LgDMVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uKHJlbW92ZV9rZXkABAyEUGVybWFuZW50bHkgcmVtb3ZlcyB0aGUgc3VkbyBrZXkuAGwqKlRoaXMgY2Fubm90IGJlIHVuLWRvbmUuKioEDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMubQcMNHBhbGxldF9haF9vcHMYcGFsbGV0EENhbGwEBFQAARRcdW5yZXNlcnZlX2xlYXNlX2RlcG9zaXQMARRibG9jazgBREJsb2NrTnVtYmVyRm9yPFQ+AAEkZGVwb3NpdG9ykQEBUE9wdGlvbjxUOjpBY2NvdW50SWQ+AAEccGFyYV9pZKABGFBhcmFJZAAAIPhVbnJlc2VydmUgdGhlIGRlcG9zaXQgdGhhdCB3YXMgdGFrZW4gZm9yIGNyZWF0aW5nIGEgY3Jvd2Rsb2FuLgBdAVRoaXMgY2FuIGJlIGNhbGxlZCBieSBhbnkgc2lnbmVkIG9yaWdpbi4gSXQgdW5yZXNlcnZlcyB0aGUgbGVhc2UgZGVwb3NpdCBvbiB0aGUgYWNjb3VudFkBdGhhdCB3b24gdGhlIGxlYXNlIGF1Y3Rpb24uIEl0IGNhbiBiZSB1bnJlc2VydmVkIG9uY2UgYWxsIGxlYXNlcyBleHBpcmVkLiBOb3RlIHRoYXQgaXRRAXdpbGwgYmUgY2FsbGVkIGF1dG9tYXRpY2FsbHkgZnJvbSBgd2l0aGRyYXdfY3Jvd2Rsb2FuX2NvbnRyaWJ1dGlvbmAgZm9yIHRoZSBtYXRjaGluZ0hjcm93ZGxvYW4gYWNjb3VudC4AUQFTb2xvIGJpZGRlciBhY2NvdW50cyB0aGF0IHdvbiBsZWFzZSBhdWN0aW9ucyBjYW4gdXNlIHRoaXMgdG8gdW5yZXNlcnZlIHRoZWlyIGFtb3VudC58d2l0aGRyYXdfY3Jvd2Rsb2FuX2NvbnRyaWJ1dGlvbgwBFGJsb2NrOAFEQmxvY2tOdW1iZXJGb3I8VD4AASRkZXBvc2l0b3KRAQFQT3B0aW9uPFQ6OkFjY291bnRJZD4AARxwYXJhX2lkoAEYUGFyYUlkAAEcyFdpdGhkcmF3IHRoZSBjb250cmlidXRpb24gb2YgYSBmaW5pc2hlZCBjcm93ZGxvYW4uANBBIGNyb3dkbG9hbiBjb250cmlidXRpb24gY2FuIGJlIHdpdGhkcmF3biBpZiBlaXRoZXI61C0gVGhlIGNyb3dkbG9hbiBmYWlsZWQgdG8gaW4gYW4gYXVjdGlvbiBhbmQgdGltZWQgb3V0nC0gV29uIGFuIGF1Y3Rpb24gYW5kIGFsbCBsZWFzZXMgZXhwaXJlZACMQ2FuIGJlIGNhbGxlZCBieSBhbnkgc2lnbmVkIG9yaWdpbi5sdW5yZXNlcnZlX2Nyb3dkbG9hbl9yZXNlcnZlDAEUYmxvY2s4AURCbG9ja051bWJlckZvcjxUPgABJGRlcG9zaXRvcpEBAVBPcHRpb248VDo6QWNjb3VudElkPgABHHBhcmFfaWSgARhQYXJhSWQAAiD4VW5yZXNlcnZlIHRoZSBkZXBvc2l0IHRoYXQgd2FzIHRha2VuIGZvciBjcmVhdGluZyBhIGNyb3dkbG9hbi4AfFRoaXMgY2FuIGJlIGNhbGxlZCBvbmNlIGVpdGhlcjrYLSBUaGUgY3Jvd2Rsb2FuIGZhaWxlZCB0byB3aW4gYW4gYXVjdGlvbiBhbmQgdGltZWQgb3V0IQEtIFdvbiBhbiBhdWN0aW9uLCBhbGwgbGVhc2VzIGV4cGlyZWQgYW5kIGFsbCBjb250cmlidXRpb25zIGFyZSB3aXRoZHJhd24AWQFDYW4gYmUgY2FsbGVkIGJ5IGFueSBzaWduZWQgb3JpZ2luLiBUaGUgY29uZGl0aW9uIHRoYXQgYWxsIGNvbnRyaWJ1dGlvbnMgYXJlIHdpdGhkcmF3buBpcyBpbiBwbGFjZSBzaW5jZSB0aGUgcmVzZXJ2ZSBhY3RzIGFzIGEgc3RvcmFnZSBkZXBvc2l0Lox0cmFuc2Zlcl90b19wb3N0X21pZ3JhdGlvbl90cmVhc3VyeQQBIGFzc2V0X2lkHQIB+EJveDw8VDo6RnVuZ2libGVzIGFzIEZ1bmdpYmxlc0luc3BlY3Q8VDo6QWNjb3VudElkPj46OkFzc2V0SWQ+AAMQSQFUcmFuc2ZlciB0aGUgYmFsYW5jZSBmcm9tIHRoZSBwcmUtbWlncmF0aW9uIHRyZWFzdXJ5IGFjY291bnQgdG8gdGhlIHBvc3QtbWlncmF0aW9uRHRyZWFzdXJ5IGFjY291bnQuAPhUaGlzIGNhbGwgY2FuIG9ubHkgYmUgY2FsbGVkIGFmdGVyIHRoZSBtaWdyYXRpb24gaXMgY29tcGxldGVkLsR0cmFuc2xhdGVfcGFyYV9zb3ZlcmVpZ25fY2hpbGRfdG9fc2libGluZ19kZXJpdmVkEAEccGFyYV9pZO0DAQx1MTYAATxkZXJpdmF0aW9uX3BhdGhxBwEgVmVjPHUxNj4AASxvbGRfYWNjb3VudAQBMFQ6OkFjY291bnRJZAABLG5ld19hY2NvdW50BAEwVDo6QWNjb3VudElkAAQsPQFUcmFuc2xhdGUgcmVjdXJzaXZlbHkgZGVyaXZlZCBwYXJhY2hhaW4gc292ZXJlaWduIGNoaWxkIGFjY291bnQgdG8gaXRzIHNpYmxpbmcuAGEBVXNlcyB0aGUgc2FtZSBkZXJpdmF0aW9uIHBhdGggb24gdGhlIHNpYmxpbmcuIFRoZSBvbGQgYW5kIG5ldyBhY2NvdW50IGFyZ3VtZW50cyBhcmUgb25seUEBd2l0bmVzcyBkYXRhIHRvIGVuc3VyZSBjb3JyZWN0IHVzYWdlLiBDYW4gb25seSBiZSBjYWxsZWQgYnkgdGhlIGBNaWdyYXRlT3JpZ2luYC4AOFRoaXMgbWlncmF0ZXM6UC0gTmF0aXZlIERPVCBiYWxhbmNlqC0gQWxsIGFzc2V0cyBsaXN0ZWQgaW4gYFQ6OlJlbGV2YW50QXNzZXRzYEQtIFN0YWtlZCBiYWxhbmNlcwBJAVRoaW5ncyBsaWtlIG5vbi1yZWxldmFudCBhc3NldHMgb3IgdmVzdGVkIHRyYW5zZmVycyBtYXkgcmVtYWluIG9uIHRoZSBvbGQgYWNjb3VudC4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMucQcAAALtAwB1BwyAaW5kaXZfcGFsbGV0X3ZhbHVlX3RyYW5zZmVyX2F1dGgkZXh0ZW5zaW9uWEF1dGhvcml6ZVZhbHVlVHJhbnNmZXIIBFQABFAAAAQAeQcBjE9wdGlvbjxzcF9jb3JlOjplZDI1NTE5OjpTaWduYXR1cmU+AAB5BwQYT3B0aW9uBARUAcEEAQgQTm9uZQAAABBTb21lBADBBAAAAQAAfQcQMGZyYW1lX3N5c3RlbShleHRlbnNpb25zOGF1dGhvcml6ZV9jYWxsNEF1dGhvcml6ZUNhbGwEBFQAAAAAgQcMRGluZGl2X3BhbGxldF9wZ2FzJGV4dGVuc2lvbhhBc1BnYXMEBFQAAAQAhQcBVE9wdGlvbjxBc1BnYXNJbmZvPFQ+PgAAhQcEGE9wdGlvbgQEVAGJBwEIEE5vbmUAAAAQU29tZQQAiQcAAAEAAIkHDERpbmRpdl9wYWxsZXRfcGdhcyRleHRlbnNpb24oQXNQZ2FzSW5mbwQEVAABBBRDbGFpbRQBFHByb29mMQcBKFByb29mT2Y8VD4AAShyaW5nX2luZGV4OAEkUmluZ0luZGV4AAEgcmV2aXNpb244ATRSZXZpc2lvbkluZGV4AAEoY29sbGVjdGlvbhkEAThQZ2FzQ29sbGVjdGlvbgABDGRheTgBDHUzMgAAAACNBwxsaW5kaXZfcGFsbGV0X2FsaWFzX2FjY291bnRzJGV4dGVuc2lvbixBc1JpbmdBbGlhcwQEVAAABACRBwFoT3B0aW9uPEFzUmluZ0FsaWFzSW5mbzxUPj4AAJEHBBhPcHRpb24EBFQBlQcBCBBOb25lAAAAEFNvbWUEAJUHAAABAACVBwxsaW5kaXZfcGFsbGV0X2FsaWFzX2FjY291bnRzJGV4dGVuc2lvbjxBc1JpbmdBbGlhc0luZm8EBFQAAQQsV2l0aEFjY291bnQEADgBIFQ6Ok5vbmNlAAAAAJkHDGhpbmRpdl9wYWxsZXRfZG90bnNfZ2F0ZXdheSRleHRlbnNpb244QXNEb3Ruc0dhdGV3YXkEBFQAAAQAnQcBdE9wdGlvbjxBc0RvdG5zR2F0ZXdheUluZm88VD4+AACdBwQYT3B0aW9uBARUAaEHAQgQTm9uZQAAABBTb21lBAChBwAAAQAAoQcMaGluZGl2X3BhbGxldF9kb3Ruc19nYXRld2F5JGV4dGVuc2lvbkhBc0RvdG5zR2F0ZXdheUluZm8EBFQAAQRAUmVnaXN0ZXJGdWxsTmFtZQwBFHByb29mMQcBKFByb29mT2Y8VD4AAShyaW5nX2luZGV4OAEkUmluZ0luZGV4AAEkc2lnbmF0dXJlvQQBXFQ6OkF0dGVzdGF0aW9uU2lnbmF0dXJlAAAAAKUHCHxpbmRpdl9wYWxsZXRfb3JpZ2luX3Jlc3RyaWN0aW9uOFJlc3RyaWN0T3JpZ2luBARUAAAEAF0BARBib29sAACpBxAwZnJhbWVfc3lzdGVtKGV4dGVuc2lvbnNUY2hlY2tfbm9uX3plcm9fc2VuZGVySENoZWNrTm9uWmVyb1NlbmRlcgQEVAAAAACtBxAwZnJhbWVfc3lzdGVtKGV4dGVuc2lvbnNIY2hlY2tfc3BlY192ZXJzaW9uQENoZWNrU3BlY1ZlcnNpb24EBFQAAAAAsQcQMGZyYW1lX3N5c3RlbShleHRlbnNpb25zQGNoZWNrX3R4X3ZlcnNpb244Q2hlY2tUeFZlcnNpb24EBFQAAAAAtQcQMGZyYW1lX3N5c3RlbShleHRlbnNpb25zNGNoZWNrX2dlbmVzaXMwQ2hlY2tHZW5lc2lzBARUAAAAALkHEDBmcmFtZV9zeXN0ZW0oZXh0ZW5zaW9uczxjaGVja19tb3J0YWxpdHk4Q2hlY2tNb3J0YWxpdHkEBFQAAAQAvQcBDEVyYQAAvQcQKHNwX3J1bnRpbWUcZ2VuZXJpYwxlcmEMRXJhAAEBBCBJbW1vcnRhbAAAABxNb3J0YWwxBAAMAAABABxNb3J0YWwyBAAMAAACABxNb3J0YWwzBAAMAAADABxNb3J0YWw0BAAMAAAEABxNb3J0YWw1BAAMAAAFABxNb3J0YWw2BAAMAAAGABxNb3J0YWw3BAAMAAAHABxNb3J0YWw4BAAMAAAIABxNb3J0YWw5BAAMAAAJACBNb3J0YWwxMAQADAAACgAgTW9ydGFsMTEEAAwAAAsAIE1vcnRhbDEyBAAMAAAMACBNb3J0YWwxMwQADAAADQAgTW9ydGFsMTQEAAwAAA4AIE1vcnRhbDE1BAAMAAAPACBNb3J0YWwxNgQADAAAEAAgTW9ydGFsMTcEAAwAABEAIE1vcnRhbDE4BAAMAAASACBNb3J0YWwxOQQADAAAEwAgTW9ydGFsMjAEAAwAABQAIE1vcnRhbDIxBAAMAAAVACBNb3J0YWwyMgQADAAAFgAgTW9ydGFsMjMEAAwAABcAIE1vcnRhbDI0BAAMAAAYACBNb3J0YWwyNQQADAAAGQAgTW9ydGFsMjYEAAwAABoAIE1vcnRhbDI3BAAMAAAbACBNb3J0YWwyOAQADAAAHAAgTW9ydGFsMjkEAAwAAB0AIE1vcnRhbDMwBAAMAAAeACBNb3J0YWwzMQQADAAAHwAgTW9ydGFsMzIEAAwAACAAIE1vcnRhbDMzBAAMAAAhACBNb3J0YWwzNAQADAAAIgAgTW9ydGFsMzUEAAwAACMAIE1vcnRhbDM2BAAMAAAkACBNb3J0YWwzNwQADAAAJQAgTW9ydGFsMzgEAAwAACYAIE1vcnRhbDM5BAAMAAAnACBNb3J0YWw0MAQADAAAKAAgTW9ydGFsNDEEAAwAACkAIE1vcnRhbDQyBAAMAAAqACBNb3J0YWw0MwQADAAAKwAgTW9ydGFsNDQEAAwAACwAIE1vcnRhbDQ1BAAMAAAtACBNb3J0YWw0NgQADAAALgAgTW9ydGFsNDcEAAwAAC8AIE1vcnRhbDQ4BAAMAAAwACBNb3J0YWw0OQQADAAAMQAgTW9ydGFsNTAEAAwAADIAIE1vcnRhbDUxBAAMAAAzACBNb3J0YWw1MgQADAAANAAgTW9ydGFsNTMEAAwAADUAIE1vcnRhbDU0BAAMAAA2ACBNb3J0YWw1NQQADAAANwAgTW9ydGFsNTYEAAwAADgAIE1vcnRhbDU3BAAMAAA5ACBNb3J0YWw1OAQADAAAOgAgTW9ydGFsNTkEAAwAADsAIE1vcnRhbDYwBAAMAAA8ACBNb3J0YWw2MQQADAAAPQAgTW9ydGFsNjIEAAwAAD4AIE1vcnRhbDYzBAAMAAA/ACBNb3J0YWw2NAQADAAAQAAgTW9ydGFsNjUEAAwAAEEAIE1vcnRhbDY2BAAMAABCACBNb3J0YWw2NwQADAAAQwAgTW9ydGFsNjgEAAwAAEQAIE1vcnRhbDY5BAAMAABFACBNb3J0YWw3MAQADAAARgAgTW9ydGFsNzEEAAwAAEcAIE1vcnRhbDcyBAAMAABIACBNb3J0YWw3MwQADAAASQAgTW9ydGFsNzQEAAwAAEoAIE1vcnRhbDc1BAAMAABLACBNb3J0YWw3NgQADAAATAAgTW9ydGFsNzcEAAwAAE0AIE1vcnRhbDc4BAAMAABOACBNb3J0YWw3OQQADAAATwAgTW9ydGFsODAEAAwAAFAAIE1vcnRhbDgxBAAMAABRACBNb3J0YWw4MgQADAAAUgAgTW9ydGFsODMEAAwAAFMAIE1vcnRhbDg0BAAMAABUACBNb3J0YWw4NQQADAAAVQAgTW9ydGFsODYEAAwAAFYAIE1vcnRhbDg3BAAMAABXACBNb3J0YWw4OAQADAAAWAAgTW9ydGFsODkEAAwAAFkAIE1vcnRhbDkwBAAMAABaACBNb3J0YWw5MQQADAAAWwAgTW9ydGFsOTIEAAwAAFwAIE1vcnRhbDkzBAAMAABdACBNb3J0YWw5NAQADAAAXgAgTW9ydGFsOTUEAAwAAF8AIE1vcnRhbDk2BAAMAABgACBNb3J0YWw5NwQADAAAYQAgTW9ydGFsOTgEAAwAAGIAIE1vcnRhbDk5BAAMAABjACRNb3J0YWwxMDAEAAwAAGQAJE1vcnRhbDEwMQQADAAAZQAkTW9ydGFsMTAyBAAMAABmACRNb3J0YWwxMDMEAAwAAGcAJE1vcnRhbDEwNAQADAAAaAAkTW9ydGFsMTA1BAAMAABpACRNb3J0YWwxMDYEAAwAAGoAJE1vcnRhbDEwNwQADAAAawAkTW9ydGFsMTA4BAAMAABsACRNb3J0YWwxMDkEAAwAAG0AJE1vcnRhbDExMAQADAAAbgAkTW9ydGFsMTExBAAMAABvACRNb3J0YWwxMTIEAAwAAHAAJE1vcnRhbDExMwQADAAAcQAkTW9ydGFsMTE0BAAMAAByACRNb3J0YWwxMTUEAAwAAHMAJE1vcnRhbDExNgQADAAAdAAkTW9ydGFsMTE3BAAMAAB1ACRNb3J0YWwxMTgEAAwAAHYAJE1vcnRhbDExOQQADAAAdwAkTW9ydGFsMTIwBAAMAAB4ACRNb3J0YWwxMjEEAAwAAHkAJE1vcnRhbDEyMgQADAAAegAkTW9ydGFsMTIzBAAMAAB7ACRNb3J0YWwxMjQEAAwAAHwAJE1vcnRhbDEyNQQADAAAfQAkTW9ydGFsMTI2BAAMAAB+ACRNb3J0YWwxMjcEAAwAAH8AJE1vcnRhbDEyOAQADAAAgAAkTW9ydGFsMTI5BAAMAACBACRNb3J0YWwxMzAEAAwAAIIAJE1vcnRhbDEzMQQADAAAgwAkTW9ydGFsMTMyBAAMAACEACRNb3J0YWwxMzMEAAwAAIUAJE1vcnRhbDEzNAQADAAAhgAkTW9ydGFsMTM1BAAMAACHACRNb3J0YWwxMzYEAAwAAIgAJE1vcnRhbDEzNwQADAAAiQAkTW9ydGFsMTM4BAAMAACKACRNb3J0YWwxMzkEAAwAAIsAJE1vcnRhbDE0MAQADAAAjAAkTW9ydGFsMTQxBAAMAACNACRNb3J0YWwxNDIEAAwAAI4AJE1vcnRhbDE0MwQADAAAjwAkTW9ydGFsMTQ0BAAMAACQACRNb3J0YWwxNDUEAAwAAJEAJE1vcnRhbDE0NgQADAAAkgAkTW9ydGFsMTQ3BAAMAACTACRNb3J0YWwxNDgEAAwAAJQAJE1vcnRhbDE0OQQADAAAlQAkTW9ydGFsMTUwBAAMAACWACRNb3J0YWwxNTEEAAwAAJcAJE1vcnRhbDE1MgQADAAAmAAkTW9ydGFsMTUzBAAMAACZACRNb3J0YWwxNTQEAAwAAJoAJE1vcnRhbDE1NQQADAAAmwAkTW9ydGFsMTU2BAAMAACcACRNb3J0YWwxNTcEAAwAAJ0AJE1vcnRhbDE1OAQADAAAngAkTW9ydGFsMTU5BAAMAACfACRNb3J0YWwxNjAEAAwAAKAAJE1vcnRhbDE2MQQADAAAoQAkTW9ydGFsMTYyBAAMAACiACRNb3J0YWwxNjMEAAwAAKMAJE1vcnRhbDE2NAQADAAApAAkTW9ydGFsMTY1BAAMAAClACRNb3J0YWwxNjYEAAwAAKYAJE1vcnRhbDE2NwQADAAApwAkTW9ydGFsMTY4BAAMAACoACRNb3J0YWwxNjkEAAwAAKkAJE1vcnRhbDE3MAQADAAAqgAkTW9ydGFsMTcxBAAMAACrACRNb3J0YWwxNzIEAAwAAKwAJE1vcnRhbDE3MwQADAAArQAkTW9ydGFsMTc0BAAMAACuACRNb3J0YWwxNzUEAAwAAK8AJE1vcnRhbDE3NgQADAAAsAAkTW9ydGFsMTc3BAAMAACxACRNb3J0YWwxNzgEAAwAALIAJE1vcnRhbDE3OQQADAAAswAkTW9ydGFsMTgwBAAMAAC0ACRNb3J0YWwxODEEAAwAALUAJE1vcnRhbDE4MgQADAAAtgAkTW9ydGFsMTgzBAAMAAC3ACRNb3J0YWwxODQEAAwAALgAJE1vcnRhbDE4NQQADAAAuQAkTW9ydGFsMTg2BAAMAAC6ACRNb3J0YWwxODcEAAwAALsAJE1vcnRhbDE4OAQADAAAvAAkTW9ydGFsMTg5BAAMAAC9ACRNb3J0YWwxOTAEAAwAAL4AJE1vcnRhbDE5MQQADAAAvwAkTW9ydGFsMTkyBAAMAADAACRNb3J0YWwxOTMEAAwAAMEAJE1vcnRhbDE5NAQADAAAwgAkTW9ydGFsMTk1BAAMAADDACRNb3J0YWwxOTYEAAwAAMQAJE1vcnRhbDE5NwQADAAAxQAkTW9ydGFsMTk4BAAMAADGACRNb3J0YWwxOTkEAAwAAMcAJE1vcnRhbDIwMAQADAAAyAAkTW9ydGFsMjAxBAAMAADJACRNb3J0YWwyMDIEAAwAAMoAJE1vcnRhbDIwMwQADAAAywAkTW9ydGFsMjA0BAAMAADMACRNb3J0YWwyMDUEAAwAAM0AJE1vcnRhbDIwNgQADAAAzgAkTW9ydGFsMjA3BAAMAADPACRNb3J0YWwyMDgEAAwAANAAJE1vcnRhbDIwOQQADAAA0QAkTW9ydGFsMjEwBAAMAADSACRNb3J0YWwyMTEEAAwAANMAJE1vcnRhbDIxMgQADAAA1AAkTW9ydGFsMjEzBAAMAADVACRNb3J0YWwyMTQEAAwAANYAJE1vcnRhbDIxNQQADAAA1wAkTW9ydGFsMjE2BAAMAADYACRNb3J0YWwyMTcEAAwAANkAJE1vcnRhbDIxOAQADAAA2gAkTW9ydGFsMjE5BAAMAADbACRNb3J0YWwyMjAEAAwAANwAJE1vcnRhbDIyMQQADAAA3QAkTW9ydGFsMjIyBAAMAADeACRNb3J0YWwyMjMEAAwAAN8AJE1vcnRhbDIyNAQADAAA4AAkTW9ydGFsMjI1BAAMAADhACRNb3J0YWwyMjYEAAwAAOIAJE1vcnRhbDIyNwQADAAA4wAkTW9ydGFsMjI4BAAMAADkACRNb3J0YWwyMjkEAAwAAOUAJE1vcnRhbDIzMAQADAAA5gAkTW9ydGFsMjMxBAAMAADnACRNb3J0YWwyMzIEAAwAAOgAJE1vcnRhbDIzMwQADAAA6QAkTW9ydGFsMjM0BAAMAADqACRNb3J0YWwyMzUEAAwAAOsAJE1vcnRhbDIzNgQADAAA7AAkTW9ydGFsMjM3BAAMAADtACRNb3J0YWwyMzgEAAwAAO4AJE1vcnRhbDIzOQQADAAA7wAkTW9ydGFsMjQwBAAMAADwACRNb3J0YWwyNDEEAAwAAPEAJE1vcnRhbDI0MgQADAAA8gAkTW9ydGFsMjQzBAAMAADzACRNb3J0YWwyNDQEAAwAAPQAJE1vcnRhbDI0NQQADAAA9QAkTW9ydGFsMjQ2BAAMAAD2ACRNb3J0YWwyNDcEAAwAAPcAJE1vcnRhbDI0OAQADAAA+AAkTW9ydGFsMjQ5BAAMAAD5ACRNb3J0YWwyNTAEAAwAAPoAJE1vcnRhbDI1MQQADAAA+wAkTW9ydGFsMjUyBAAMAAD8ACRNb3J0YWwyNTMEAAwAAP0AJE1vcnRhbDI1NAQADAAA/gAkTW9ydGFsMjU1BAAMAAD/AADBBxAwZnJhbWVfc3lzdGVtKGV4dGVuc2lvbnMsY2hlY2tfbm9uY2UoQ2hlY2tOb25jZQQEVAAABABkASBUOjpOb25jZQAAxQcQMGZyYW1lX3N5c3RlbShleHRlbnNpb25zMGNoZWNrX3dlaWdodCxDaGVja1dlaWdodAQEVAAAAADJBwiIcGFsbGV0X2Fzc2V0X2NvbnZlcnNpb25fdHhfcGF5bWVudFBDaGFyZ2VBc3NldFR4UGF5bWVudAQEVAAACAEMdGlwVQEBMEJhbGFuY2VPZjxUPgABIGFzc2V0X2lkWQMBSE9wdGlvbjxUOjpBc3NldElkPgAAzQcMXHBvbGthZG90X3J1bnRpbWVfY29tbW9uGGNsYWltc0hQcmV2YWxpZGF0ZUF0dGVzdHMEBFQAAAAA0QcIdGZyYW1lX21ldGFkYXRhX2hhc2hfZXh0ZW5zaW9uRENoZWNrTWV0YWRhdGFIYXNoBARUAAAEARBtb2Rl1QcBEE1vZGUAANUHCHRmcmFtZV9tZXRhZGF0YV9oYXNoX2V4dGVuc2lvbhBNb2RlAAEIIERpc2FibGVkAAAAHEVuYWJsZWQAAQAA2QcQNHBhbGxldF9yZXZpdmUMZXZtMHR4X2V4dGVuc2lvbiRTZXRPcmlnaW4EBFQAAAAA3QcIMGZyYW1lX3N5c3RlbSxBY2NvdW50SW5mbwgUTm9uY2UBOCxBY2NvdW50RGF0YQHhBwAUARRub25jZTgBFE5vbmNlAAEkY29uc3VtZXJzOAEgUmVmQ291bnQAASRwcm92aWRlcnM4ASBSZWZDb3VudAABLHN1ZmZpY2llbnRzOAEgUmVmQ291bnQAARBkYXRh4QcBLEFjY291bnREYXRhAADhBww8cGFsbGV0X2JhbGFuY2VzFHR5cGVzLEFjY291bnREYXRhBBxCYWxhbmNlAVkBABABEGZyZWVZAQEcQmFsYW5jZQABIHJlc2VydmVkWQEBHEJhbGFuY2UAARhmcm96ZW5ZAQEcQmFsYW5jZQABFGZsYWdz5QcBKEV4dHJhRmxhZ3MAAOUHDDxwYWxsZXRfYmFsYW5jZXMUdHlwZXMoRXh0cmFGbGFncwAABABZAQEQdTEyOAAA6QcMNGZyYW1lX3N1cHBvcnQgZGlzcGF0Y2hAUGVyRGlzcGF0Y2hDbGFzcwQEVAEVAQAMARhub3JtYWwVAQEEVAABLG9wZXJhdGlvbmFsFQEBBFQAASRtYW5kYXRvcnkVAQEEVAAA7QcAAALxBwDxBwgwZnJhbWVfc3lzdGVtLEV2ZW50UmVjb3JkCARFAfUHBFQBQAAMARRwaGFzZcUJARRQaGFzZQABFGV2ZW509QcBBEUAARh0b3BpY3PEARhWZWM8VD4AAPUHCFxhc3NldF9odWJfcGFzZW9fcnVudGltZTBSdW50aW1lRXZlbnQAAegYU3lzdGVtBAD5BwFwZnJhbWVfc3lzdGVtOjpFdmVudDxSdW50aW1lPgAAADxQYXJhY2hhaW5TeXN0ZW0EACEIAbxjdW11bHVzX3BhbGxldF9wYXJhY2hhaW5fc3lzdGVtOjpFdmVudDxSdW50aW1lPgABACBQcmVpbWFnZQQAJQgBfHBhbGxldF9wcmVpbWFnZTo6RXZlbnQ8UnVudGltZT4ABQAkU2NoZWR1bGVyBAApCAGAcGFsbGV0X3NjaGVkdWxlcjo6RXZlbnQ8UnVudGltZT4ABgAoUGFyYW1ldGVycwQAMQgBhHBhbGxldF9wYXJhbWV0ZXJzOjpFdmVudDxSdW50aW1lPgAHAFBNdWx0aUJsb2NrTWlncmF0aW9ucwQAWQgBhHBhbGxldF9taWdyYXRpb25zOjpFdmVudDxSdW50aW1lPgAIACBCYWxhbmNlcwQAXQgBfHBhbGxldF9iYWxhbmNlczo6RXZlbnQ8UnVudGltZT4ACgBIVHJhbnNhY3Rpb25QYXltZW50BACVCAGocGFsbGV0X3RyYW5zYWN0aW9uX3BheW1lbnQ6OkV2ZW50PFJ1bnRpbWU+AAsAOEFzc2V0VHhQYXltZW50BACZCAHIcGFsbGV0X2Fzc2V0X2NvbnZlcnNpb25fdHhfcGF5bWVudDo6RXZlbnQ8UnVudGltZT4ADQAcVmVzdGluZwQAnQgBeHBhbGxldF92ZXN0aW5nOjpFdmVudDxSdW50aW1lPgAOABhDbGFpbXMEAKEIAXRwYWxsZXRfY2xhaW1zOjpFdmVudDxSdW50aW1lPgAPAAxEYXAEAKUIAWhwYWxsZXRfZGFwOjpFdmVudDxSdW50aW1lPgAQAERDb2xsYXRvclNlbGVjdGlvbgQArQgBpHBhbGxldF9jb2xsYXRvcl9zZWxlY3Rpb246OkV2ZW50PFJ1bnRpbWU+ABUAHFNlc3Npb24EALEIAXhwYWxsZXRfc2Vzc2lvbjo6RXZlbnQ8UnVudGltZT4AFgAkWGNtcFF1ZXVlBAC1CAGkY3VtdWx1c19wYWxsZXRfeGNtcF9xdWV1ZTo6RXZlbnQ8UnVudGltZT4AHgAsUG9sa2Fkb3RYY20EALkIAWhwYWxsZXRfeGNtOjpFdmVudDxSdW50aW1lPgAfAChDdW11bHVzWGNtBADJCAGIY3VtdWx1c19wYWxsZXRfeGNtOjpFdmVudDxSdW50aW1lPgAgAERUb0t1c2FtYVhjbVJvdXRlcgQAzQgBWQFwYWxsZXRfeGNtX2JyaWRnZV9odWJfcm91dGVyOjpFdmVudDxSdW50aW1lLCBwYWxsZXRfeGNtX2JyaWRnZV9odWJfcm91dGVyCjo6SW5zdGFuY2UxPgAiADBNZXNzYWdlUXVldWUEANEIAZBwYWxsZXRfbWVzc2FnZV9xdWV1ZTo6RXZlbnQ8UnVudGltZT4AIwBgU25vd2JyaWRnZVN5c3RlbUZyb250ZW5kBADZCAHEc25vd2JyaWRnZV9wYWxsZXRfc3lzdGVtX2Zyb250ZW5kOjpFdmVudDxSdW50aW1lPgAkABxVdGlsaXR5BADdCAFUcGFsbGV0X3V0aWxpdHk6OkV2ZW50ACgAIE11bHRpc2lnBADhCAF8cGFsbGV0X211bHRpc2lnOjpFdmVudDxSdW50aW1lPgApABRQcm94eQQA5QgBcHBhbGxldF9wcm94eTo6RXZlbnQ8UnVudGltZT4AKgAcSW5kaWNlcwQA7QgBeHBhbGxldF9pbmRpY2VzOjpFdmVudDxSdW50aW1lPgArABhBc3NldHMEAPEIAdxwYWxsZXRfYXNzZXRzOjpFdmVudDxSdW50aW1lLCBwYWxsZXRfYXNzZXRzOjpJbnN0YW5jZTE+ADIAHFVuaXF1ZXMEAPUIAXhwYWxsZXRfdW5pcXVlczo6RXZlbnQ8UnVudGltZT4AMwAQTmZ0cwQA+QgBbHBhbGxldF9uZnRzOjpFdmVudDxSdW50aW1lPgA0ADRGb3JlaWduQXNzZXRzBAABCQHccGFsbGV0X2Fzc2V0czo6RXZlbnQ8UnVudGltZSwgcGFsbGV0X2Fzc2V0czo6SW5zdGFuY2UyPgA1AChQb29sQXNzZXRzBAAFCQHccGFsbGV0X2Fzc2V0czo6RXZlbnQ8UnVudGltZSwgcGFsbGV0X2Fzc2V0czo6SW5zdGFuY2UzPgA2ADxBc3NldENvbnZlcnNpb24EAAkJAZxwYWxsZXRfYXNzZXRfY29udmVyc2lvbjo6RXZlbnQ8UnVudGltZT4ANwA0QXNzZXRzRnJlZXplcgQAHQkBHQFwYWxsZXRfYXNzZXRzX2ZyZWV6ZXI6OkV2ZW50PFJ1bnRpbWUsIHBhbGxldF9hc3NldHNfZnJlZXplcjo6SW5zdGFuY2UxPgA4ADBBc3NldHNIb2xkZXIEACEJARUBcGFsbGV0X2Fzc2V0c19ob2xkZXI6OkV2ZW50PFJ1bnRpbWUsIHBhbGxldF9hc3NldHNfaG9sZGVyOjpJbnN0YW5jZTE+ADkAIFRyZWFzdXJ5BAAlCQF8cGFsbGV0X3RyZWFzdXJ5OjpFdmVudDxSdW50aW1lPgA8AEBDb252aWN0aW9uVm90aW5nBAApCQGgcGFsbGV0X2NvbnZpY3Rpb25fdm90aW5nOjpFdmVudDxSdW50aW1lPgA9ACRSZWZlcmVuZGEEAC0JAYBwYWxsZXRfcmVmZXJlbmRhOjpFdmVudDxSdW50aW1lPgA+ACRXaGl0ZWxpc3QEADUJAYBwYWxsZXRfd2hpdGVsaXN0OjpFdmVudDxSdW50aW1lPgBAACBCb3VudGllcwQARQkBfHBhbGxldF9ib3VudGllczo6RXZlbnQ8UnVudGltZT4AQQA0Q2hpbGRCb3VudGllcwQASQkBlHBhbGxldF9jaGlsZF9ib3VudGllczo6RXZlbnQ8UnVudGltZT4AQgAkQXNzZXRSYXRlBABNCQGEcGFsbGV0X2Fzc2V0X3JhdGU6OkV2ZW50PFJ1bnRpbWU+AEMASE11bHRpQXNzZXRCb3VudGllcwQAUQkBrHBhbGxldF9tdWx0aV9hc3NldF9ib3VudGllczo6RXZlbnQ8UnVudGltZT4ARABIU3RhdGVUcmllTWlncmF0aW9uBABVCQGscGFsbGV0X3N0YXRlX3RyaWVfbWlncmF0aW9uOjpFdmVudDxSdW50aW1lPgBGADxOb21pbmF0aW9uUG9vbHMEAGEJAZxwYWxsZXRfbm9taW5hdGlvbl9wb29sczo6RXZlbnQ8UnVudGltZT4AUAAkVm90ZXJMaXN0BABpCQH0cGFsbGV0X2JhZ3NfbGlzdDo6RXZlbnQ8UnVudGltZSwgcGFsbGV0X2JhZ3NfbGlzdDo6SW5zdGFuY2UxPgBSAEBEZWxlZ2F0ZWRTdGFraW5nBABtCQGgcGFsbGV0X2RlbGVnYXRlZF9zdGFraW5nOjpFdmVudDxSdW50aW1lPgBTADxTdGFraW5nUmNDbGllbnQEAHEJAbhwYWxsZXRfc3Rha2luZ19hc3luY19yY19jbGllbnQ6OkV2ZW50PFJ1bnRpbWU+AFQASE11bHRpQmxvY2tFbGVjdGlvbgQAeQkB0HBhbGxldF9lbGVjdGlvbl9wcm92aWRlcl9tdWx0aV9ibG9jazo6RXZlbnQ8UnVudGltZT4AVQBoTXVsdGlCbG9ja0VsZWN0aW9uVmVyaWZpZXIEAH0JAfhwYWxsZXRfZWxlY3Rpb25fcHJvdmlkZXJfbXVsdGlfYmxvY2s6OnZlcmlmaWVyOjpFdmVudDxSdW50aW1lPgBWAGBNdWx0aUJsb2NrRWxlY3Rpb25TaWduZWQEAI0JAfBwYWxsZXRfZWxlY3Rpb25fcHJvdmlkZXJfbXVsdGlfYmxvY2s6OnNpZ25lZDo6RXZlbnQ8UnVudGltZT4AWAAcU3Rha2luZwQAkQkBkHBhbGxldF9zdGFraW5nX2FzeW5jOjpFdmVudDxSdW50aW1lPgBZAERNZW1iZXJzU3Vic2NyaWJlcgQAoQkBvGluZGl2X3BhbGxldF9tZW1iZXJzX3N1YnNjcmliZXI6OkV2ZW50PFJ1bnRpbWU+AGEANEFsaWFzQWNjb3VudHMEAKUJAaxpbmRpdl9wYWxsZXRfYWxpYXNfYWNjb3VudHM6OkV2ZW50PFJ1bnRpbWU+AGIAEFBnYXMEAKkJAYRpbmRpdl9wYWxsZXRfcGdhczo6RXZlbnQ8UnVudGltZT4AYwAYUmV2aXZlBACtCQF0cGFsbGV0X3Jldml2ZTo6RXZlbnQ8UnVudGltZT4AZAAwRG90bnNHYXRld2F5BACxCQGoaW5kaXZfcGFsbGV0X2RvdG5zX2dhdGV3YXk6OkV2ZW50PFJ1bnRpbWU+AJgARE9yaWdpblJlc3RyaWN0aW9uBAC1CQG8aW5kaXZfcGFsbGV0X29yaWdpbl9yZXN0cmljdGlvbjo6RXZlbnQ8UnVudGltZT4AmQAQU3VkbwQAuQkBbHBhbGxldF9zdWRvOjpFdmVudDxSdW50aW1lPgD7ADRQZ2FzQWxsb3dhbmNlBAC9CQGUcGFsbGV0X3BnYXNfYWxsb3dhbmNlOjpFdmVudDxSdW50aW1lPgD8ABRBaE9wcwQAwQkBdHBhbGxldF9haF9vcHM6OkV2ZW50PFJ1bnRpbWU+AP4AAPkHDDBmcmFtZV9zeXN0ZW0YcGFsbGV0FEV2ZW50BARUAAEsQEV4dHJpbnNpY1N1Y2Nlc3MEATRkaXNwYXRjaF9pbmZv/QcBRERpc3BhdGNoRXZlbnRJbmZvAAAEkEFuIGV4dHJpbnNpYyBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5LjxFeHRyaW5zaWNGYWlsZWQIAThkaXNwYXRjaF9lcnJvcgkIATREaXNwYXRjaEVycm9yAAE0ZGlzcGF0Y2hfaW5mb/0HAUREaXNwYXRjaEV2ZW50SW5mbwABBFBBbiBleHRyaW5zaWMgZmFpbGVkLixDb2RlVXBkYXRlZAQBEGhhc2hAARxUOjpIYXNoAAIE0GA6Y29kZWAgd2FzIHVwZGF0ZWQgdG8gdGhlIGNvZGUgd2l0aCB0aGUgZ2l2ZW4gaGFzaC4oTmV3QWNjb3VudAQBHGFjY291bnQEATBUOjpBY2NvdW50SWQAAwRoQSBuZXcgYWNjb3VudCB3YXMgY3JlYXRlZC40S2lsbGVkQWNjb3VudAQBHGFjY291bnQEATBUOjpBY2NvdW50SWQABARYQW4gYWNjb3VudCB3YXMgcmVhcGVkLiBSZW1hcmtlZAgBGHNlbmRlcgQBMFQ6OkFjY291bnRJZAABEGhhc2hAARxUOjpIYXNoAAUEcE9uIG9uLWNoYWluIHJlbWFyayBoYXBwZW5lZC4sVGFza1N0YXJ0ZWQEARB0YXNrPAE4VDo6UnVudGltZVRhc2sABgSAQSBbYFRhc2tgXSBoYXMgc3RhcnRlZCBleGVjdXRpbmc0VGFza0NvbXBsZXRlZAQBEHRhc2s8AThUOjpSdW50aW1lVGFzawAHBIhBIFtgVGFza2BdIGhhcyBmaW5pc2hlZCBleGVjdXRpbmcuKFRhc2tGYWlsZWQIARB0YXNrPAE4VDo6UnVudGltZVRhc2sAAQxlcnIJCAE0RGlzcGF0Y2hFcnJvcgAIBIxBIFtgVGFza2BdIGZhaWxlZCBkdXJpbmcgZXhlY3V0aW9uLkRVcGdyYWRlQXV0aG9yaXplZAgBJGNvZGVfaGFzaEABHFQ6Okhhc2gAATRjaGVja192ZXJzaW9uXQEBEGJvb2wACQRoQW4gdXBncmFkZSB3YXMgYXV0aG9yaXplZC6AUmVqZWN0ZWRJbnZhbGlkQXV0aG9yaXplZFVwZ3JhZGUIASRjb2RlX2hhc2hAARxUOjpIYXNoAAEUZXJyb3IJCAE0RGlzcGF0Y2hFcnJvcgAKBBEBQW4gaW52YWxpZCBhdXRob3JpemVkIHVwZ3JhZGUgd2FzIHJlamVjdGVkIHdoaWxlIHRyeWluZyB0byBhcHBseSBpdC4EcEV2ZW50IGZvciB0aGUgU3lzdGVtIHBhbGxldC79BwgwZnJhbWVfc3lzdGVtRERpc3BhdGNoRXZlbnRJbmZvAAAMARh3ZWlnaHQVAQEYV2VpZ2h0AAEUY2xhc3MBCAE0RGlzcGF0Y2hDbGFzcwABIHBheXNfZmVlBQgBEFBheXMAAAEIDDRmcmFtZV9zdXBwb3J0IGRpc3BhdGNoNERpc3BhdGNoQ2xhc3MAAQwYTm9ybWFsAAAALE9wZXJhdGlvbmFsAAEAJE1hbmRhdG9yeQACAAAFCAw0ZnJhbWVfc3VwcG9ydCBkaXNwYXRjaBBQYXlzAAEIDFllcwAAAAhObwABAAAJCAgoc3BfcnVudGltZTREaXNwYXRjaEVycm9yAAE8FE90aGVyAAAAMENhbm5vdExvb2t1cAABACRCYWRPcmlnaW4AAgAYTW9kdWxlBAANCAEsTW9kdWxlRXJyb3IAAwBEQ29uc3VtZXJSZW1haW5pbmcABAAsTm9Qcm92aWRlcnMABQBAVG9vTWFueUNvbnN1bWVycwAGABRUb2tlbgQAEQgBKFRva2VuRXJyb3IABwAoQXJpdGhtZXRpYwQAFQgBPEFyaXRobWV0aWNFcnJvcgAIADRUcmFuc2FjdGlvbmFsBAAZCAFIVHJhbnNhY3Rpb25hbEVycm9yAAkAJEV4aGF1c3RlZAAKAChDb3JydXB0aW9uAAsALFVuYXZhaWxhYmxlAAwAOFJvb3ROb3RBbGxvd2VkAA0AEFRyaWUEAB0IASRUcmllRXJyb3IADgAADQgIKHNwX3J1bnRpbWUsTW9kdWxlRXJyb3IAAAgBFGluZGV4DAEIdTgAARRlcnJvcnQBjFt1ODsgTUFYX01PRFVMRV9FUlJPUl9FTkNPREVEX1NJWkVdAAARCAgoc3BfcnVudGltZShUb2tlbkVycm9yAAEoQEZ1bmRzVW5hdmFpbGFibGUAAAAwT25seVByb3ZpZGVyAAEAMEJlbG93TWluaW11bQACADBDYW5ub3RDcmVhdGUAAwAwVW5rbm93bkFzc2V0AAQAGEZyb3plbgAFACxVbnN1cHBvcnRlZAAGAEBDYW5ub3RDcmVhdGVIb2xkAAcANE5vdEV4cGVuZGFibGUACAAcQmxvY2tlZAAJAAAVCAg0c3BfYXJpdGhtZXRpYzxBcml0aG1ldGljRXJyb3IAAQwkVW5kZXJmbG93AAAAIE92ZXJmbG93AAEAOERpdmlzaW9uQnlaZXJvAAIAABkICChzcF9ydW50aW1lSFRyYW5zYWN0aW9uYWxFcnJvcgABCDBMaW1pdFJlYWNoZWQAAAAcTm9MYXllcgABAAAdCAwoc3BfcnVudGltZTBwcm92aW5nX3RyaWUkVHJpZUVycm9yAAE4QEludmFsaWRTdGF0ZVJvb3QAAABISW5jb21wbGV0ZURhdGFiYXNlAAEAUFZhbHVlQXRJbmNvbXBsZXRlS2V5AAIAMERlY29kZXJFcnJvcgADACxJbnZhbGlkSGFzaAAEADBEdXBsaWNhdGVLZXkABQA4RXh0cmFuZW91c05vZGUABgA8RXh0cmFuZW91c1ZhbHVlAAcAXEV4dHJhbmVvdXNIYXNoUmVmZXJlbmNlAAgAVEludmFsaWRDaGlsZFJlZmVyZW5jZQAJADRWYWx1ZU1pc21hdGNoAAoAPEluY29tcGxldGVQcm9vZgALADBSb290TWlzbWF0Y2gADAAsRGVjb2RlRXJyb3IADQAAIQgMfGN1bXVsdXNfcGFsbGV0X3BhcmFjaGFpbl9zeXN0ZW0YcGFsbGV0FEV2ZW50BARUAAEYYFZhbGlkYXRpb25GdW5jdGlvblN0b3JlZAAABNBUaGUgdmFsaWRhdGlvbiBmdW5jdGlvbiBoYXMgYmVlbiBzY2hlZHVsZWQgdG8gYXBwbHkuZFZhbGlkYXRpb25GdW5jdGlvbkFwcGxpZWQEAVRyZWxheV9jaGFpbl9ibG9ja19udW04AVRSZWxheUNoYWluQmxvY2tOdW1iZXIAAQRFAVRoZSB2YWxpZGF0aW9uIGZ1bmN0aW9uIHdhcyBhcHBsaWVkIGFzIG9mIHRoZSBjb250YWluZWQgcmVsYXkgY2hhaW4gYmxvY2sgbnVtYmVyLmxWYWxpZGF0aW9uRnVuY3Rpb25EaXNjYXJkZWQAAgSwVGhlIHJlbGF5LWNoYWluIGFib3J0ZWQgdGhlIHVwZ3JhZGUgcHJvY2Vzcy5gRG93bndhcmRNZXNzYWdlc1JlY2VpdmVkBAEUY291bnQ4AQx1MzIAAwQBAVNvbWUgZG93bndhcmQgbWVzc2FnZXMgaGF2ZSBiZWVuIHJlY2VpdmVkIGFuZCB3aWxsIGJlIHByb2Nlc3NlZC5kRG93bndhcmRNZXNzYWdlc1Byb2Nlc3NlZAgBLHdlaWdodF91c2VkFQEBGFdlaWdodAABIGRtcV9oZWFkQAFEcmVsYXlfY2hhaW46Okhhc2gABATgRG93bndhcmQgbWVzc2FnZXMgd2VyZSBwcm9jZXNzZWQgdXNpbmcgdGhlIGdpdmVuIHdlaWdodC5EVXB3YXJkTWVzc2FnZVNlbnQEATBtZXNzYWdlX2hhc2hBBwE8T3B0aW9uPFhjbUhhc2g+AAUEuEFuIHVwd2FyZCBtZXNzYWdlIHdhcyBzZW50IHRvIHRoZSByZWxheSBjaGFpbi4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXQlCAw8cGFsbGV0X3ByZWltYWdlGHBhbGxldBRFdmVudAQEVAABDBROb3RlZAQBEGhhc2hAARxUOjpIYXNoAAAEaEEgcHJlaW1hZ2UgaGFzIGJlZW4gbm90ZWQuJFJlcXVlc3RlZAQBEGhhc2hAARxUOjpIYXNoAAEEeEEgcHJlaW1hZ2UgaGFzIGJlZW4gcmVxdWVzdGVkLhxDbGVhcmVkBAEQaGFzaEABHFQ6Okhhc2gAAgRsQSBwcmVpbWFnZSBoYXMgYmVuIGNsZWFyZWQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0KQgMQHBhbGxldF9zY2hlZHVsZXIYcGFsbGV0FEV2ZW50BARUAAEoJFNjaGVkdWxlZAgBEHdoZW44AURCbG9ja051bWJlckZvcjxUPgABFGluZGV4OAEMdTMyAAAEUFNjaGVkdWxlZCBzb21lIHRhc2suIENhbmNlbGVkCAEQd2hlbjgBREJsb2NrTnVtYmVyRm9yPFQ+AAEUaW5kZXg4AQx1MzIAAQRMQ2FuY2VsZWQgc29tZSB0YXNrLihEaXNwYXRjaGVkDAEQdGFza9ABeFRhc2tBZGRyZXNzPEJsb2NrTnVtYmVyRm9yPFQ+PgABCGlkQQcBQE9wdGlvbjxUYXNrTmFtZT4AARhyZXN1bHQtCAE4RGlzcGF0Y2hSZXN1bHQAAgRURGlzcGF0Y2hlZCBzb21lIHRhc2suIFJldHJ5U2V0EAEQdGFza9ABeFRhc2tBZGRyZXNzPEJsb2NrTnVtYmVyRm9yPFQ+PgABCGlkQQcBQE9wdGlvbjxUYXNrTmFtZT4AARhwZXJpb2Q4AURCbG9ja051bWJlckZvcjxUPgABHHJldHJpZXMMAQh1OAADBKBTZXQgYSByZXRyeSBjb25maWd1cmF0aW9uIGZvciBzb21lIHRhc2suOFJldHJ5Q2FuY2VsbGVkCAEQdGFza9ABeFRhc2tBZGRyZXNzPEJsb2NrTnVtYmVyRm9yPFQ+PgABCGlkQQcBQE9wdGlvbjxUYXNrTmFtZT4ABASsQ2FuY2VsIGEgcmV0cnkgY29uZmlndXJhdGlvbiBmb3Igc29tZSB0YXNrLjxDYWxsVW5hdmFpbGFibGUIARB0YXNr0AF4VGFza0FkZHJlc3M8QmxvY2tOdW1iZXJGb3I8VD4+AAEIaWRBBwFAT3B0aW9uPFRhc2tOYW1lPgAFBCkBVGhlIGNhbGwgZm9yIHRoZSBwcm92aWRlZCBoYXNoIHdhcyBub3QgZm91bmQgc28gdGhlIHRhc2sgaGFzIGJlZW4gYWJvcnRlZC44UGVyaW9kaWNGYWlsZWQIARB0YXNr0AF4VGFza0FkZHJlc3M8QmxvY2tOdW1iZXJGb3I8VD4+AAEIaWRBBwFAT3B0aW9uPFRhc2tOYW1lPgAGBD0BVGhlIGdpdmVuIHRhc2sgd2FzIHVuYWJsZSB0byBiZSByZW5ld2VkIHNpbmNlIHRoZSBhZ2VuZGEgaXMgZnVsbCBhdCB0aGF0IGJsb2NrLixSZXRyeUZhaWxlZAgBEHRhc2vQAXhUYXNrQWRkcmVzczxCbG9ja051bWJlckZvcjxUPj4AAQhpZEEHAUBPcHRpb248VGFza05hbWU+AAcIXQFUaGUgZ2l2ZW4gdGFzayB3YXMgdW5hYmxlIHRvIGJlIHJldHJpZWQgc2luY2UgdGhlIGFnZW5kYSBpcyBmdWxsIGF0IHRoYXQgYmxvY2sgb3IgdGhlcmWcd2FzIG5vdCBlbm91Z2ggd2VpZ2h0IHRvIHJlc2NoZWR1bGUgaXQuVFBlcm1hbmVudGx5T3ZlcndlaWdodAgBEHRhc2vQAXhUYXNrQWRkcmVzczxCbG9ja051bWJlckZvcjxUPj4AAQhpZEEHAUBPcHRpb248VGFza05hbWU+AAgE8FRoZSBnaXZlbiB0YXNrIGNhbiBuZXZlciBiZSBleGVjdXRlZCBzaW5jZSBpdCBpcyBvdmVyd2VpZ2h0LkBBZ2VuZGFJbmNvbXBsZXRlBAEQd2hlbjgBREJsb2NrTnVtYmVyRm9yPFQ+AAkEhEFnZW5kYSBpcyBpbmNvbXBsZXRlIGZyb20gYHdoZW5gLgQwRXZlbnRzIHR5cGUuLQgEGFJlc3VsdAgEVAEQBEUBCQgBCAhPawQAEAAAAAAMRXJyBAAJCAAAAQAAMQgMRHBhbGxldF9wYXJhbWV0ZXJzGHBhbGxldBRFdmVudAQEVAABBBxVcGRhdGVkDAEMa2V5NQgBxDxUOjpSdW50aW1lUGFyYW1ldGVycyBhcyBBZ2dyZWdhdGVkS2V5VmFsdWU+OjpLZXkEZFRoZSBrZXkgdGhhdCB3YXMgdXBkYXRlZC4BJG9sZF92YWx1ZUUIAexPcHRpb248PFQ6OlJ1bnRpbWVQYXJhbWV0ZXJzIGFzIEFnZ3JlZ2F0ZWRLZXlWYWx1ZT46OlZhbHVlPgR8VGhlIG9sZCB2YWx1ZSBiZWZvcmUgdGhpcyBjYWxsLgEkbmV3X3ZhbHVlRQgB7E9wdGlvbjw8VDo6UnVudGltZVBhcmFtZXRlcnMgYXMgQWdncmVnYXRlZEtleVZhbHVlPjo6VmFsdWU+BHhUaGUgbmV3IHZhbHVlIGFmdGVyIHRoaXMgY2FsbC4ADFBBIFBhcmFtZXRlciB3YXMgc2V0LgC8SXMgYWxzbyBlbWl0dGVkIHdoZW4gdGhlIHZhbHVlIHdhcyBub3QgY2hhbmdlZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXQ1CAhcYXNzZXRfaHViX3Bhc2VvX3J1bnRpbWVQUnVudGltZVBhcmFtZXRlcnNLZXkAAQw8U3Rha2luZ0VsZWN0aW9uBAA5CAHFATxkeW5hbWljX3BhcmFtczo6c3Rha2luZ19lbGVjdGlvbjo6UGFyYW1ldGVycyBhcyBmcmFtZV9zdXBwb3J0Ojp0cmFpdHMKOjpkeW5hbWljX3BhcmFtczo6QWdncmVnYXRlZEtleVZhbHVlPjo6S2V5AAAAJFNjaGVkdWxlcgQAPQgBqQE8ZHluYW1pY19wYXJhbXM6OnNjaGVkdWxlcjo6UGFyYW1ldGVycyBhcyBmcmFtZV9zdXBwb3J0Ojp0cmFpdHM6OgpkeW5hbWljX3BhcmFtczo6QWdncmVnYXRlZEtleVZhbHVlPjo6S2V5AAEAME1lc3NhZ2VRdWV1ZQQAQQgBuQE8ZHluYW1pY19wYXJhbXM6Om1lc3NhZ2VfcXVldWU6OlBhcmFtZXRlcnMgYXMgZnJhbWVfc3VwcG9ydDo6dHJhaXRzOjoKZHluYW1pY19wYXJhbXM6OkFnZ3JlZ2F0ZWRLZXlWYWx1ZT46OktleQACAAA5CBBcYXNzZXRfaHViX3Bhc2VvX3J1bnRpbWU4ZHluYW1pY19wYXJhbXNAc3Rha2luZ19lbGVjdGlvbjRQYXJhbWV0ZXJzS2V5AAEcLFNpZ25lZFBoYXNlBADgASxTaWduZWRQaGFzZQAAAFBNYXhTaWduZWRTdWJtaXNzaW9ucwQA6AFQTWF4U2lnbmVkU3VibWlzc2lvbnMAAQA0VW5zaWduZWRQaGFzZQQA7AE0VW5zaWduZWRQaGFzZQACAChNaW5lclBhZ2VzBADwAShNaW5lclBhZ2VzAAMARE1heEVsZWN0aW5nVm90ZXJzBAD0AURNYXhFbGVjdGluZ1ZvdGVycwAEAFhUYXJnZXRTbmFwc2hvdFBlckJsb2NrBAD4AVhUYXJnZXRTbmFwc2hvdFBlckJsb2NrAAUAOE1heEVyYUR1cmF0aW9uBAD8AThNYXhFcmFEdXJhdGlvbgAGAAA9CBBcYXNzZXRfaHViX3Bhc2VvX3J1bnRpbWU4ZHluYW1pY19wYXJhbXMkc2NoZWR1bGVyNFBhcmFtZXRlcnNLZXkAAQhQTWF4U2NoZWR1bGVkUGVyQmxvY2sEAAkBAVBNYXhTY2hlZHVsZWRQZXJCbG9jawAAADRNYXhpbXVtV2VpZ2h0BAANAQE0TWF4aW11bVdlaWdodAABAABBCBBcYXNzZXRfaHViX3Bhc2VvX3J1bnRpbWU4ZHluYW1pY19wYXJhbXM0bWVzc2FnZV9xdWV1ZTRQYXJhbWV0ZXJzS2V5AAEIPE1heE9uSW5pdFdlaWdodAQAHQEBPE1heE9uSW5pdFdlaWdodAAAADxNYXhPbklkbGVXZWlnaHQEACUBATxNYXhPbklkbGVXZWlnaHQAAQAARQgEGE9wdGlvbgQEVAFJCAEIEE5vbmUAAAAQU29tZQQASQgAAAEAAEkICFxhc3NldF9odWJfcGFzZW9fcnVudGltZVhSdW50aW1lUGFyYW1ldGVyc1ZhbHVlAAEMPFN0YWtpbmdFbGVjdGlvbgQATQgBzQE8ZHluYW1pY19wYXJhbXM6OnN0YWtpbmdfZWxlY3Rpb246OlBhcmFtZXRlcnMgYXMgZnJhbWVfc3VwcG9ydDo6dHJhaXRzCjo6ZHluYW1pY19wYXJhbXM6OkFnZ3JlZ2F0ZWRLZXlWYWx1ZT46OlZhbHVlAAAAJFNjaGVkdWxlcgQAUQgBsQE8ZHluYW1pY19wYXJhbXM6OnNjaGVkdWxlcjo6UGFyYW1ldGVycyBhcyBmcmFtZV9zdXBwb3J0Ojp0cmFpdHM6OgpkeW5hbWljX3BhcmFtczo6QWdncmVnYXRlZEtleVZhbHVlPjo6VmFsdWUAAQAwTWVzc2FnZVF1ZXVlBABVCAHBATxkeW5hbWljX3BhcmFtczo6bWVzc2FnZV9xdWV1ZTo6UGFyYW1ldGVycyBhcyBmcmFtZV9zdXBwb3J0Ojp0cmFpdHM6OgpkeW5hbWljX3BhcmFtczo6QWdncmVnYXRlZEtleVZhbHVlPjo6VmFsdWUAAgAATQgQXGFzc2V0X2h1Yl9wYXNlb19ydW50aW1lOGR5bmFtaWNfcGFyYW1zQHN0YWtpbmdfZWxlY3Rpb248UGFyYW1ldGVyc1ZhbHVlAAEcLFNpZ25lZFBoYXNlBAA4ASxCbG9ja051bWJlcgAAAFBNYXhTaWduZWRTdWJtaXNzaW9ucwQAOAEMdTMyAAEANFVuc2lnbmVkUGhhc2UEADgBLEJsb2NrTnVtYmVyAAIAKE1pbmVyUGFnZXMEADgBDHUzMgADAERNYXhFbGVjdGluZ1ZvdGVycwQAOAEMdTMyAAQAWFRhcmdldFNuYXBzaG90UGVyQmxvY2sEADgBDHUzMgAFADhNYXhFcmFEdXJhdGlvbgQAKAEMdTY0AAYAAFEIEFxhc3NldF9odWJfcGFzZW9fcnVudGltZThkeW5hbWljX3BhcmFtcyRzY2hlZHVsZXI8UGFyYW1ldGVyc1ZhbHVlAAEIUE1heFNjaGVkdWxlZFBlckJsb2NrBAA4AQx1MzIAAAA0TWF4aW11bVdlaWdodAQAFQEBGFdlaWdodAABAABVCBBcYXNzZXRfaHViX3Bhc2VvX3J1bnRpbWU4ZHluYW1pY19wYXJhbXM0bWVzc2FnZV9xdWV1ZTxQYXJhbWV0ZXJzVmFsdWUAAQg8TWF4T25Jbml0V2VpZ2h0BAARAQE4T3B0aW9uPFdlaWdodD4AAAA8TWF4T25JZGxlV2VpZ2h0BAARAQE4T3B0aW9uPFdlaWdodD4AAQAAWQgMRHBhbGxldF9taWdyYXRpb25zGHBhbGxldBRFdmVudAQEVAABIDhVcGdyYWRlU3RhcnRlZAQBKG1pZ3JhdGlvbnM4AQx1MzIQ0FRoZSBudW1iZXIgb2YgbWlncmF0aW9ucyB0aGF0IHRoaXMgdXBncmFkZSBjb250YWlucy4AQQFUaGlzIGNhbiBiZSB1c2VkIHRvIGRlc2lnbiBhIHByb2dyZXNzIGluZGljYXRvciBpbiBjb21iaW5hdGlvbiB3aXRoIGNvdW50aW5nIHRoZcxgTWlncmF0aW9uQ29tcGxldGVkYCBhbmQgYE1pZ3JhdGlvblNraXBwZWRgIGV2ZW50cy4ADGhBIFJ1bnRpbWUgdXBncmFkZSBzdGFydGVkLgD4SXRzIGVuZCBpcyBpbmRpY2F0ZWQgYnkgYFVwZ3JhZGVDb21wbGV0ZWRgIG9yIGBVcGdyYWRlRmFpbGVkYC5AVXBncmFkZUNvbXBsZXRlZAABDJhUaGUgY3VycmVudCBydW50aW1lIHVwZ3JhZGUgY29tcGxldGVkLgAdAVRoaXMgaW1wbGllcyB0aGF0IGFsbCBvZiBpdHMgbWlncmF0aW9ucyBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5IGFzIHdlbGwuNFVwZ3JhZGVGYWlsZWQAAgxcUnVudGltZSB1cGdyYWRlIGZhaWxlZC4A6FRoaXMgaXMgdmVyeSBiYWQgYW5kIHdpbGwgcmVxdWlyZSBnb3Zlcm5hbmNlIGludGVydmVudGlvbi5ATWlncmF0aW9uU2tpcHBlZAQBFGluZGV4OAEMdTMyBCkBVGhlIGluZGV4IG9mIHRoZSBza2lwcGVkIG1pZ3JhdGlvbiB3aXRoaW4gdGhlIFtgQ29uZmlnOjpNaWdyYXRpb25zYF0gbGlzdC4DBAkBQSBtaWdyYXRpb24gd2FzIHNraXBwZWQgc2luY2UgaXQgd2FzIGFscmVhZHkgZXhlY3V0ZWQgaW4gdGhlIHBhc3QuRE1pZ3JhdGlvbkFkdmFuY2VkCAEUaW5kZXg4AQx1MzIECQFUaGUgaW5kZXggb2YgdGhlIG1pZ3JhdGlvbiB3aXRoaW4gdGhlIFtgQ29uZmlnOjpNaWdyYXRpb25zYF0gbGlzdC4BEHRvb2s4AURCbG9ja051bWJlckZvcjxUPgTUVGhlIG51bWJlciBvZiBibG9ja3MgdGhhdCB0aGlzIG1pZ3JhdGlvbiB0b29rIHNvIGZhci4EBFxBIG1pZ3JhdGlvbiBwcm9ncmVzc2VkLkhNaWdyYXRpb25Db21wbGV0ZWQIARRpbmRleDgBDHUzMgQJAVRoZSBpbmRleCBvZiB0aGUgbWlncmF0aW9uIHdpdGhpbiB0aGUgW2BDb25maWc6Ok1pZ3JhdGlvbnNgXSBsaXN0LgEQdG9vazgBREJsb2NrTnVtYmVyRm9yPFQ+BNRUaGUgbnVtYmVyIG9mIGJsb2NrcyB0aGF0IHRoaXMgbWlncmF0aW9uIHRvb2sgc28gZmFyLgUEWEEgTWlncmF0aW9uIGNvbXBsZXRlZC48TWlncmF0aW9uRmFpbGVkCAEUaW5kZXg4AQx1MzIECQFUaGUgaW5kZXggb2YgdGhlIG1pZ3JhdGlvbiB3aXRoaW4gdGhlIFtgQ29uZmlnOjpNaWdyYXRpb25zYF0gbGlzdC4BEHRvb2s4AURCbG9ja051bWJlckZvcjxUPgTUVGhlIG51bWJlciBvZiBibG9ja3MgdGhhdCB0aGlzIG1pZ3JhdGlvbiB0b29rIHNvIGZhci4GDExBIE1pZ3JhdGlvbiBmYWlsZWQuAE0BVGhpcyBpbXBsaWVzIHRoYXQgdGhlIHdob2xlIHVwZ3JhZGUgZmFpbGVkIGFuZCBnb3Zlcm5hbmNlIGludGVydmVudGlvbiBpcyByZXF1aXJlZC48SGlzdG9yaWNDbGVhcmVkBAEsbmV4dF9jdXJzb3JNAQE8T3B0aW9uPFZlYzx1OD4+BOhTaG91bGQgYmUgcGFzc2VkIHRvIGBjbGVhcl9oaXN0b3JpY2AgaW4gYSBzdWNjZXNzaXZlIGNhbGwuBwTIVGhlIHNldCBvZiBoaXN0b3JpY2FsIG1pZ3JhdGlvbnMgaGFzIGJlZW4gY2xlYXJlZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXRdCAw8cGFsbGV0X2JhbGFuY2VzGHBhbGxldBRFdmVudAgEVAAESQABeBxFbmRvd2VkCAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAABMGZyZWVfYmFsYW5jZVkBAShUOjpCYWxhbmNlAAAEuEFuIGFjY291bnQgd2FzIGNyZWF0ZWQgd2l0aCBzb21lIGZyZWUgYmFsYW5jZS4gRHVzdExvc3QIARxhY2NvdW50BAEwVDo6QWNjb3VudElkAAEYYW1vdW50WQEBKFQ6OkJhbGFuY2UAAQg9AUFuIGFjY291bnQgd2FzIHJlbW92ZWQgd2hvc2UgYmFsYW5jZSB3YXMgbm9uLXplcm8gYnV0IGJlbG93IEV4aXN0ZW50aWFsRGVwb3NpdCx4cmVzdWx0aW5nIGluIGFuIG91dHJpZ2h0IGxvc3MuIFRyYW5zZmVyDAEQZnJvbQQBMFQ6OkFjY291bnRJZAABCHRvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50WQEBKFQ6OkJhbGFuY2UAAgRMVHJhbnNmZXIgc3VjY2VlZGVkLihCYWxhbmNlU2V0CAEMd2hvBAEwVDo6QWNjb3VudElkAAEQZnJlZVkBAShUOjpCYWxhbmNlAAMEaEEgYmFsYW5jZSB3YXMgc2V0IGJ5IHJvb3QuIFJlc2VydmVkCAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50WQEBKFQ6OkJhbGFuY2UABATgU29tZSBiYWxhbmNlIHdhcyByZXNlcnZlZCAobW92ZWQgZnJvbSBmcmVlIHRvIHJlc2VydmVkKS4oVW5yZXNlcnZlZAgBDHdobwQBMFQ6OkFjY291bnRJZAABGGFtb3VudFkBAShUOjpCYWxhbmNlAAUE6FNvbWUgYmFsYW5jZSB3YXMgdW5yZXNlcnZlZCAobW92ZWQgZnJvbSByZXNlcnZlZCB0byBmcmVlKS5IUmVzZXJ2ZVJlcGF0cmlhdGVkEAEQZnJvbQQBMFQ6OkFjY291bnRJZAABCHRvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50WQEBKFQ6OkJhbGFuY2UAAUhkZXN0aW5hdGlvbl9zdGF0dXNhCAEYU3RhdHVzAAYITQFTb21lIGJhbGFuY2Ugd2FzIG1vdmVkIGZyb20gdGhlIHJlc2VydmUgb2YgdGhlIGZpcnN0IGFjY291bnQgdG8gdGhlIHNlY29uZCBhY2NvdW50LthGaW5hbCBhcmd1bWVudCBpbmRpY2F0ZXMgdGhlIGRlc3RpbmF0aW9uIGJhbGFuY2UgdHlwZS4cRGVwb3NpdAgBDHdobwQBMFQ6OkFjY291bnRJZAABGGFtb3VudFkBAShUOjpCYWxhbmNlAAcE2FNvbWUgYW1vdW50IHdhcyBkZXBvc2l0ZWQgKGUuZy4gZm9yIHRyYW5zYWN0aW9uIGZlZXMpLiBXaXRoZHJhdwgBDHdobwQBMFQ6OkFjY291bnRJZAABGGFtb3VudFkBAShUOjpCYWxhbmNlAAgEHQFTb21lIGFtb3VudCB3YXMgd2l0aGRyYXduIGZyb20gdGhlIGFjY291bnQgKGUuZy4gZm9yIHRyYW5zYWN0aW9uIGZlZXMpLhxTbGFzaGVkCAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50WQEBKFQ6OkJhbGFuY2UACQQBAVNvbWUgYW1vdW50IHdhcyByZW1vdmVkIGZyb20gdGhlIGFjY291bnQgKGUuZy4gZm9yIG1pc2JlaGF2aW9yKS4YTWludGVkCAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50WQEBKFQ6OkJhbGFuY2UACgScU29tZSBhbW91bnQgd2FzIG1pbnRlZCBpbnRvIGFuIGFjY291bnQuME1pbnRlZENyZWRpdAQBGGFtb3VudFkBAShUOjpCYWxhbmNlAAsE4FNvbWUgY3JlZGl0IHdhcyBiYWxhbmNlZCBhbmQgYWRkZWQgdG8gdGhlIFRvdGFsSXNzdWFuY2UuGEJ1cm5lZAgBDHdobwQBMFQ6OkFjY291bnRJZAABGGFtb3VudFkBAShUOjpCYWxhbmNlAAwEnFNvbWUgYW1vdW50IHdhcyBidXJuZWQgZnJvbSBhbiBhY2NvdW50LihCdXJuZWREZWJ0BAEYYW1vdW50WQEBKFQ6OkJhbGFuY2UADQTMU29tZSBkZWJ0IGhhcyBiZWVuIGRyb3BwZWQgZnJvbSB0aGUgVG90YWwgSXNzdWFuY2UuJFN1c3BlbmRlZAgBDHdobwQBMFQ6OkFjY291bnRJZAABGGFtb3VudFkBAShUOjpCYWxhbmNlAA4EFQFTb21lIGFtb3VudCB3YXMgc3VzcGVuZGVkIGZyb20gYW4gYWNjb3VudCAoaXQgY2FuIGJlIHJlc3RvcmVkIGxhdGVyKS4gUmVzdG9yZWQIAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnRZAQEoVDo6QmFsYW5jZQAPBKRTb21lIGFtb3VudCB3YXMgcmVzdG9yZWQgaW50byBhbiBhY2NvdW50LiBVcGdyYWRlZAQBDHdobwQBMFQ6OkFjY291bnRJZAAQBGBBbiBhY2NvdW50IHdhcyB1cGdyYWRlZC4YSXNzdWVkBAEYYW1vdW50WQEBKFQ6OkJhbGFuY2UAEQQtAVRvdGFsIGlzc3VhbmNlIHdhcyBpbmNyZWFzZWQgYnkgYGFtb3VudGAsIGNyZWF0aW5nIGEgY3JlZGl0IHRvIGJlIGJhbGFuY2VkLiRSZXNjaW5kZWQEARhhbW91bnRZAQEoVDo6QmFsYW5jZQASBCUBVG90YWwgaXNzdWFuY2Ugd2FzIGRlY3JlYXNlZCBieSBgYW1vdW50YCwgY3JlYXRpbmcgYSBkZWJ0IHRvIGJlIGJhbGFuY2VkLhhMb2NrZWQIAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnRZAQEoVDo6QmFsYW5jZQATBGBTb21lIGJhbGFuY2Ugd2FzIGxvY2tlZC4gVW5sb2NrZWQIAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnRZAQEoVDo6QmFsYW5jZQAUBGhTb21lIGJhbGFuY2Ugd2FzIHVubG9ja2VkLhhGcm96ZW4IAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnRZAQEoVDo6QmFsYW5jZQAVBGBTb21lIGJhbGFuY2Ugd2FzIGZyb3plbi4YVGhhd2VkCAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50WQEBKFQ6OkJhbGFuY2UAFgRgU29tZSBiYWxhbmNlIHdhcyB0aGF3ZWQuTFRvdGFsSXNzdWFuY2VGb3JjZWQIAQxvbGRZAQEoVDo6QmFsYW5jZQABDG5ld1kBAShUOjpCYWxhbmNlABcErFRoZSBgVG90YWxJc3N1YW5jZWAgd2FzIGZvcmNlZnVsbHkgY2hhbmdlZC4QSGVsZAwBGHJlYXNvbmUIAVBUOjpSdW50aW1lSG9sZFJlYXNvbgABDHdobwQBMFQ6OkFjY291bnRJZAABGGFtb3VudFkBAShUOjpCYWxhbmNlABgEgFNvbWUgYmFsYW5jZSB3YXMgcGxhY2VkIG9uIGhvbGQuKEJ1cm5lZEhlbGQMARhyZWFzb25lCAFQVDo6UnVudGltZUhvbGRSZWFzb24AAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnRZAQEoVDo6QmFsYW5jZQAZBKBIZWxkIGJhbGFuY2Ugd2FzIGJ1cm5lZCBmcm9tIGFuIGFjY291bnQuOFRyYW5zZmVyT25Ib2xkEAEYcmVhc29uZQgBUFQ6OlJ1bnRpbWVIb2xkUmVhc29uAAEYc291cmNlBAEwVDo6QWNjb3VudElkAAEQZGVzdAQBMFQ6OkFjY291bnRJZAABGGFtb3VudFkBAShUOjpCYWxhbmNlABoEFQFBIHRyYW5zZmVyIG9mIGBhbW91bnRgIG9uIGhvbGQgZnJvbSBgc291cmNlYCB0byBgZGVzdGAgd2FzIGluaXRpYXRlZC48VHJhbnNmZXJBbmRIb2xkEAEYcmVhc29uZQgBUFQ6OlJ1bnRpbWVIb2xkUmVhc29uAAEYc291cmNlBAEwVDo6QWNjb3VudElkAAEQZGVzdAQBMFQ6OkFjY291bnRJZAABLHRyYW5zZmVycmVkWQEBKFQ6OkJhbGFuY2UAGwQJAVRoZSBgdHJhbnNmZXJyZWRgIGJhbGFuY2UgaXMgcGxhY2VkIG9uIGhvbGQgYXQgdGhlIGBkZXN0YCBhY2NvdW50LiBSZWxlYXNlZAwBGHJlYXNvbmUIAVBUOjpSdW50aW1lSG9sZFJlYXNvbgABDHdobwQBMFQ6OkFjY291bnRJZAABGGFtb3VudFkBAShUOjpCYWxhbmNlABwEkFNvbWUgYmFsYW5jZSB3YXMgcmVsZWFzZWQgZnJvbSBob2xkLihVbmV4cGVjdGVkBACRCAE4VW5leHBlY3RlZEtpbmQAHQSwQW4gdW5leHBlY3RlZC9kZWZlbnNpdmUgZXZlbnQgd2FzIHRyaWdnZXJlZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXRhCBQ0ZnJhbWVfc3VwcG9ydBh0cmFpdHMYdG9rZW5zEG1pc2M0QmFsYW5jZVN0YXR1cwABCBBGcmVlAAAAIFJlc2VydmVkAAEAAGUICFxhc3NldF9odWJfcGFzZW9fcnVudGltZURSdW50aW1lSG9sZFJlYXNvbgABKCBQcmVpbWFnZQQAaQgBbHBhbGxldF9wcmVpbWFnZTo6SG9sZFJlYXNvbgAFABxTZXNzaW9uBABtCAFocGFsbGV0X3Nlc3Npb246OkhvbGRSZWFzb24AFgAsUG9sa2Fkb3RYY20EAHEIAVhwYWxsZXRfeGNtOjpIb2xkUmVhc29uAB8ASE11bHRpQXNzZXRCb3VudGllcwQAdQgBnHBhbGxldF9tdWx0aV9hc3NldF9ib3VudGllczo6SG9sZFJlYXNvbgBEAEhTdGF0ZVRyaWVNaWdyYXRpb24EAHkIAZxwYWxsZXRfc3RhdGVfdHJpZV9taWdyYXRpb246OkhvbGRSZWFzb24ARgBARGVsZWdhdGVkU3Rha2luZwQAfQgBkHBhbGxldF9kZWxlZ2F0ZWRfc3Rha2luZzo6SG9sZFJlYXNvbgBTADxTdGFraW5nUmNDbGllbnQEAIEIAahwYWxsZXRfc3Rha2luZ19hc3luY19yY19jbGllbnQ6OkhvbGRSZWFzb24AVABgTXVsdGlCbG9ja0VsZWN0aW9uU2lnbmVkBACFCAHgcGFsbGV0X2VsZWN0aW9uX3Byb3ZpZGVyX211bHRpX2Jsb2NrOjpzaWduZWQ6OkhvbGRSZWFzb24AWAAcU3Rha2luZwQAiQgBgHBhbGxldF9zdGFraW5nX2FzeW5jOjpIb2xkUmVhc29uAFkAGFJldml2ZQQAjQgBZHBhbGxldF9yZXZpdmU6OkhvbGRSZWFzb24AZAAAaQgMPHBhbGxldF9wcmVpbWFnZRhwYWxsZXQoSG9sZFJlYXNvbgABBCBQcmVpbWFnZQAAAABtCAw4cGFsbGV0X3Nlc3Npb24YcGFsbGV0KEhvbGRSZWFzb24AAQQQS2V5cwAAAABxCAwocGFsbGV0X3hjbRhwYWxsZXQoSG9sZFJlYXNvbgABBDhBdXRob3JpemVBbGlhcwAAAAB1CAxscGFsbGV0X211bHRpX2Fzc2V0X2JvdW50aWVzGHBhbGxldChIb2xkUmVhc29uBARJAAEEOEN1cmF0b3JEZXBvc2l0AAAAAHkIDGxwYWxsZXRfc3RhdGVfdHJpZV9taWdyYXRpb24YcGFsbGV0KEhvbGRSZWFzb24AAQQ8U2xhc2hGb3JNaWdyYXRlAAAAAH0IDGBwYWxsZXRfZGVsZWdhdGVkX3N0YWtpbmcYcGFsbGV0KEhvbGRSZWFzb24AAQREU3Rha2luZ0RlbGVnYXRpb24AAAAAgQgMeHBhbGxldF9zdGFraW5nX2FzeW5jX3JjX2NsaWVudBhwYWxsZXQoSG9sZFJlYXNvbgABBBBLZXlzAAAAAIUIEJBwYWxsZXRfZWxlY3Rpb25fcHJvdmlkZXJfbXVsdGlfYmxvY2sYc2lnbmVkGHBhbGxldChIb2xkUmVhc29uAAEEQFNpZ25lZFN1Ym1pc3Npb24AAAAAiQgQUHBhbGxldF9zdGFraW5nX2FzeW5jGHBhbGxldBhwYWxsZXQoSG9sZFJlYXNvbgABBBxTdGFraW5nAAAAAI0IDDRwYWxsZXRfcmV2aXZlGHBhbGxldChIb2xkUmVhc29uAAEMYENvZGVVcGxvYWREZXBvc2l0UmVzZXJ2ZQAAAFRTdG9yYWdlRGVwb3NpdFJlc2VydmUAAQA4QWRkcmVzc01hcHBpbmcAAgAAkQgMPHBhbGxldF9iYWxhbmNlcxhwYWxsZXQ4VW5leHBlY3RlZEtpbmQAAQg4QmFsYW5jZVVwZGF0ZWQAAABURmFpbGVkVG9NdXRhdGVBY2NvdW50AAEAAJUIDGhwYWxsZXRfdHJhbnNhY3Rpb25fcGF5bWVudBhwYWxsZXQURXZlbnQEBFQAAQRIVHJhbnNhY3Rpb25GZWVQYWlkDAEMd2hvBAEwVDo6QWNjb3VudElkAAEoYWN0dWFsX2ZlZVkBATBCYWxhbmNlT2Y8VD4AAQx0aXBZAQEwQmFsYW5jZU9mPFQ+AAAIWQFBIHRyYW5zYWN0aW9uIGZlZSBgYWN0dWFsX2ZlZWAsIG9mIHdoaWNoIGB0aXBgIHdhcyBhZGRlZCB0byB0aGUgbWluaW11bSBpbmNsdXNpb24gZmVlLFxoYXMgYmVlbiBwYWlkIGJ5IGB3aG9gLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldJkIDIhwYWxsZXRfYXNzZXRfY29udmVyc2lvbl90eF9wYXltZW50GHBhbGxldBRFdmVudAQEVAABCDhBc3NldFR4RmVlUGFpZBABDHdobwQBMFQ6OkFjY291bnRJZAABKGFjdHVhbF9mZWVZAQEwQmFsYW5jZU9mPFQ+AAEMdGlwWQEBMEJhbGFuY2VPZjxUPgABIGFzc2V0X2lkHQIBKFQ6OkFzc2V0SWQAAAhZAUEgdHJhbnNhY3Rpb24gZmVlIGBhY3R1YWxfZmVlYCwgb2Ygd2hpY2ggYHRpcGAgd2FzIGFkZGVkIHRvIHRoZSBtaW5pbXVtIGluY2x1c2lvbiBmZWUsuGhhcyBiZWVuIHBhaWQgYnkgYHdob2AgaW4gYW4gYXNzZXQgYGFzc2V0X2lkYC5EQXNzZXRSZWZ1bmRGYWlsZWQEAUhuYXRpdmVfYW1vdW50X2tlcHRZAQEwQmFsYW5jZU9mPFQ+AAEE9EEgc3dhcCBvZiB0aGUgcmVmdW5kIGluIG5hdGl2ZSBjdXJyZW5jeSBiYWNrIHRvIGFzc2V0IGZhaWxlZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXSdCAw4cGFsbGV0X3Zlc3RpbmcYcGFsbGV0FEV2ZW50BARUAAEMOFZlc3RpbmdDcmVhdGVkCAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAABOHNjaGVkdWxlX2luZGV4OAEMdTMyAAAEkEEgdmVzdGluZyBzY2hlZHVsZSBoYXMgYmVlbiBjcmVhdGVkLjhWZXN0aW5nVXBkYXRlZAgBHGFjY291bnQEATBUOjpBY2NvdW50SWQAASB1bnZlc3RlZFkBATBCYWxhbmNlT2Y8VD4AAQhRAVRoZSBhbW91bnQgdmVzdGVkIGhhcyBiZWVuIHVwZGF0ZWQuIFRoaXMgY291bGQgaW5kaWNhdGUgYSBjaGFuZ2UgaW4gZnVuZHMgYXZhaWxhYmxlLiUBVGhlIGJhbGFuY2UgZ2l2ZW4gaXMgdGhlIGFtb3VudCB3aGljaCBpcyBsZWZ0IHVudmVzdGVkIChhbmQgdGh1cyBsb2NrZWQpLkBWZXN0aW5nQ29tcGxldGVkBAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAACBJxBbiBcW2FjY291bnRcXSBoYXMgYmVjb21lIGZ1bGx5IHZlc3RlZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXShCBBccG9sa2Fkb3RfcnVudGltZV9jb21tb24YY2xhaW1zGHBhbGxldBRFdmVudAQEVAABBBxDbGFpbWVkDAEMd2hvBAEwVDo6QWNjb3VudElkAAFAZXRoZXJldW1fYWRkcmVzc30BATxFdGhlcmV1bUFkZHJlc3MAARhhbW91bnRZAQEwQmFsYW5jZU9mPFQ+AAAEaFNvbWVvbmUgY2xhaW1lZCBzb21lIERPVHMuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0pQgMKHBhbGxldF9kYXAYcGFsbGV0FEV2ZW50BARUAAEQOElzc3VhbmNlTWludGVkCAEwdG90YWxfbWludGVkWQEBMEJhbGFuY2VPZjxUPgSEVG90YWwgYW1vdW50IG1pbnRlZCBpbiB0aGlzIGRyaXAuAThlbGFwc2VkX21pbGxpcygBDHU2NASIRWxhcHNlZCB0aW1lIChtcykgc2luY2UgbGFzdCBkcmlwLgAE3EluZmxhdGlvbiBkcmlwcGVkIGFuZCBkaXN0cmlidXRlZCB0byBidWRnZXQgcmVjaXBpZW50cy5cQnVkZ2V0QWxsb2NhdGlvblVwZGF0ZWQEASxhbGxvY2F0aW9uc5kBAUxCdWRnZXRBbGxvY2F0aW9uTWFwBHhUaGUgbmV3IGJ1ZGdldCBhbGxvY2F0aW9uIG1hcC4BBLRCdWRnZXQgYWxsb2NhdGlvbiB3YXMgdXBkYXRlZCB2aWEgZ292ZXJuYW5jZS44U3RhZ2luZ0RyYWluZWQEARhhbW91bnRZAQEwQmFsYW5jZU9mPFQ+BDxBbW91bnQgZHJhaW5lZC4CBAEBRnVuZHMgd2VyZSBkcmFpbmVkIGZyb20gdGhlIHN0YWdpbmcgYWNjb3VudCBpbnRvIHRoZSBEQVAgYnVmZmVyLihVbmV4cGVjdGVkBACpCAE4VW5leHBlY3RlZEtpbmQAAwSwQW4gdW5leHBlY3RlZC9kZWZlbnNpdmUgZXZlbnQgd2FzIHRyaWdnZXJlZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXSpCAwocGFsbGV0X2RhcBhwYWxsZXQ4VW5leHBlY3RlZEtpbmQAAQgoTWludEZhaWxlZAAAADhFbGFwc2VkQ2xhbXBlZAgBOGFjdHVhbF9lbGFwc2VkKAEMdTY0AAEcY2VpbGluZygBDHU2NAABAACtCAxkcGFsbGV0X2NvbGxhdG9yX3NlbGVjdGlvbhhwYWxsZXQURXZlbnQEBFQAAShATmV3SW52dWxuZXJhYmxlcwQBNGludnVsbmVyYWJsZXNhAQFEVmVjPFQ6OkFjY291bnRJZD4AAARsTmV3IEludnVsbmVyYWJsZXMgd2VyZSBzZXQuREludnVsbmVyYWJsZUFkZGVkBAEoYWNjb3VudF9pZAQBMFQ6OkFjY291bnRJZAABBHRBIG5ldyBJbnZ1bG5lcmFibGUgd2FzIGFkZGVkLkxJbnZ1bG5lcmFibGVSZW1vdmVkBAEoYWNjb3VudF9pZAQBMFQ6OkFjY291bnRJZAACBHBBbiBJbnZ1bG5lcmFibGUgd2FzIHJlbW92ZWQuUE5ld0Rlc2lyZWRDYW5kaWRhdGVzBAFIZGVzaXJlZF9jYW5kaWRhdGVzOAEMdTMyAAMEpFRoZSBudW1iZXIgb2YgZGVzaXJlZCBjYW5kaWRhdGVzIHdhcyBzZXQuQE5ld0NhbmRpZGFjeUJvbmQEASxib25kX2Ftb3VudFkBATBCYWxhbmNlT2Y8VD4ABARsVGhlIGNhbmRpZGFjeSBib25kIHdhcyBzZXQuOENhbmRpZGF0ZUFkZGVkCAEoYWNjb3VudF9pZAQBMFQ6OkFjY291bnRJZAABHGRlcG9zaXRZAQEwQmFsYW5jZU9mPFQ+AAUEXEEgbmV3IGNhbmRpZGF0ZSBqb2luZWQuUENhbmRpZGF0ZUJvbmRVcGRhdGVkCAEoYWNjb3VudF9pZAQBMFQ6OkFjY291bnRJZAABHGRlcG9zaXRZAQEwQmFsYW5jZU9mPFQ+AAYEcEJvbmQgb2YgYSBjYW5kaWRhdGUgdXBkYXRlZC5AQ2FuZGlkYXRlUmVtb3ZlZAQBKGFjY291bnRfaWQEATBUOjpBY2NvdW50SWQABwRgQSBjYW5kaWRhdGUgd2FzIHJlbW92ZWQuRENhbmRpZGF0ZVJlcGxhY2VkDAEMb2xkBAEwVDo6QWNjb3VudElkAAEMbmV3BAEwVDo6QWNjb3VudElkAAEcZGVwb3NpdFkBATBCYWxhbmNlT2Y8VD4ACAT0QW4gYWNjb3VudCB3YXMgcmVwbGFjZWQgaW4gdGhlIGNhbmRpZGF0ZSBsaXN0IGJ5IGFub3RoZXIgb25lLmhJbnZhbGlkSW52dWxuZXJhYmxlU2tpcHBlZAQBKGFjY291bnRfaWQEATBUOjpBY2NvdW50SWQACQhVAUFuIGFjY291bnQgd2FzIHVuYWJsZSB0byBiZSBhZGRlZCB0byB0aGUgSW52dWxuZXJhYmxlcyBiZWNhdXNlIHRoZXkgZGlkIG5vdCBoYXZlIGtleXPIcmVnaXN0ZXJlZC4gT3RoZXIgSW52dWxuZXJhYmxlcyBtYXkgaGF2ZSBiZWVuIHNldC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXSxCAw4cGFsbGV0X3Nlc3Npb24YcGFsbGV0FEV2ZW50BARUAAEQKE5ld1Nlc3Npb24EATRzZXNzaW9uX2luZGV4OAEwU2Vzc2lvbkluZGV4AAAIOQFOZXcgc2Vzc2lvbiBoYXMgaGFwcGVuZWQuIE5vdGUgdGhhdCB0aGUgYXJndW1lbnQgaXMgdGhlIHNlc3Npb24gaW5kZXgsIG5vdCB0aGWcYmxvY2sgbnVtYmVyIGFzIHRoZSB0eXBlIG1pZ2h0IHN1Z2dlc3QuJE5ld1F1ZXVlZAABCEkBVGhlIGBOZXdTZXNzaW9uYCBldmVudCBpbiB0aGUgY3VycmVudCBibG9jayBhbHNvIGltcGxpZXMgYSBuZXcgdmFsaWRhdG9yIHNldCB0byBiZRxxdWV1ZWQuRFZhbGlkYXRvckRpc2FibGVkBAEkdmFsaWRhdG9yBAE4VDo6VmFsaWRhdG9ySWQAAgRwVmFsaWRhdG9yIGhhcyBiZWVuIGRpc2FibGVkLkhWYWxpZGF0b3JSZWVuYWJsZWQEASR2YWxpZGF0b3IEAThUOjpWYWxpZGF0b3JJZAADBHhWYWxpZGF0b3IgaGFzIGJlZW4gcmUtZW5hYmxlZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXS1CAxkY3VtdWx1c19wYWxsZXRfeGNtcF9xdWV1ZRhwYWxsZXQURXZlbnQEBFQAAQQ8WGNtcE1lc3NhZ2VTZW50BAEwbWVzc2FnZV9oYXNoCAEcWGNtSGFzaAAABMBBbiBIUk1QIG1lc3NhZ2Ugd2FzIHNlbnQgdG8gYSBzaWJsaW5nIHBhcmFjaGFpbi4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXS5CAwocGFsbGV0X3hjbRhwYWxsZXQURXZlbnQEBFQAAXQkQXR0ZW1wdGVkBAEcb3V0Y29tZb0IAVB4Y206OmxhdGVzdDo6T3V0Y29tZQAABKhFeGVjdXRpb24gb2YgYW4gWENNIG1lc3NhZ2Ugd2FzIGF0dGVtcHRlZC4QU2VudBABGG9yaWdpbh0CASBMb2NhdGlvbgABLGRlc3RpbmF0aW9uHQIBIExvY2F0aW9uAAEcbWVzc2FnZRUDARxYY208KCk+AAEobWVzc2FnZV9pZAgBHFhjbUhhc2gAAQRgQW4gWENNIG1lc3NhZ2Ugd2FzIHNlbnQuKFNlbmRGYWlsZWQQARhvcmlnaW4dAgEgTG9jYXRpb24AASxkZXN0aW5hdGlvbh0CASBMb2NhdGlvbgABFGVycm9yxQgBJFNlbmRFcnJvcgABKG1lc3NhZ2VfaWQIARxYY21IYXNoAAIEeEFuIFhDTSBtZXNzYWdlIGZhaWxlZCB0byBzZW5kLjxQcm9jZXNzWGNtRXJyb3IMARhvcmlnaW4dAgEgTG9jYXRpb24AARRlcnJvckUDASBYY21FcnJvcgABKG1lc3NhZ2VfaWQIARxYY21IYXNoAAMEhEFuIFhDTSBtZXNzYWdlIGZhaWxlZCB0byBwcm9jZXNzLkhVbmV4cGVjdGVkUmVzcG9uc2UIARhvcmlnaW4dAgEgTG9jYXRpb24AASBxdWVyeV9pZCgBHFF1ZXJ5SWQABAxZAVF1ZXJ5IHJlc3BvbnNlIHJlY2VpdmVkIHdoaWNoIGRvZXMgbm90IG1hdGNoIGEgcmVnaXN0ZXJlZCBxdWVyeS4gVGhpcyBtYXkgYmUgYmVjYXVzZSBhVQFtYXRjaGluZyBxdWVyeSB3YXMgbmV2ZXIgcmVnaXN0ZXJlZCwgaXQgbWF5IGJlIGJlY2F1c2UgaXQgaXMgYSBkdXBsaWNhdGUgcmVzcG9uc2UsIG9ycGJlY2F1c2UgdGhlIHF1ZXJ5IHRpbWVkIG91dC40UmVzcG9uc2VSZWFkeQgBIHF1ZXJ5X2lkKAEcUXVlcnlJZAABIHJlc3BvbnNlOQMBIFJlc3BvbnNlAAUIXQFRdWVyeSByZXNwb25zZSBoYXMgYmVlbiByZWNlaXZlZCBhbmQgaXMgcmVhZHkgZm9yIHRha2luZyB3aXRoIGB0YWtlX3Jlc3BvbnNlYC4gVGhlcmUgaXOAbm8gcmVnaXN0ZXJlZCBub3RpZmljYXRpb24gY2FsbC4gTm90aWZpZWQMASBxdWVyeV9pZCgBHFF1ZXJ5SWQAATBwYWxsZXRfaW5kZXgMAQh1OAABKGNhbGxfaW5kZXgMAQh1OAAGCFkBUXVlcnkgcmVzcG9uc2UgaGFzIGJlZW4gcmVjZWl2ZWQgYW5kIHF1ZXJ5IGlzIHJlbW92ZWQuIFRoZSByZWdpc3RlcmVkIG5vdGlmaWNhdGlvbiBoYXOoYmVlbiBkaXNwYXRjaGVkIGFuZCBleGVjdXRlZCBzdWNjZXNzZnVsbHkuQE5vdGlmeU92ZXJ3ZWlnaHQUASBxdWVyeV9pZCgBHFF1ZXJ5SWQAATBwYWxsZXRfaW5kZXgMAQh1OAABKGNhbGxfaW5kZXgMAQh1OAABNGFjdHVhbF93ZWlnaHQVAQEYV2VpZ2h0AAFMbWF4X2J1ZGdldGVkX3dlaWdodBUBARhXZWlnaHQABwxJAVF1ZXJ5IHJlc3BvbnNlIGhhcyBiZWVuIHJlY2VpdmVkIGFuZCBxdWVyeSBpcyByZW1vdmVkLiBUaGUgcmVnaXN0ZXJlZCBub3RpZmljYXRpb25ZAWNvdWxkIG5vdCBiZSBkaXNwYXRjaGVkIGJlY2F1c2UgdGhlIGRpc3BhdGNoIHdlaWdodCBpcyBncmVhdGVyIHRoYW4gdGhlIG1heGltdW0gd2VpZ2h05G9yaWdpbmFsbHkgYnVkZ2V0ZWQgYnkgdGhpcyBydW50aW1lIGZvciB0aGUgcXVlcnkgcmVzdWx0LkxOb3RpZnlEaXNwYXRjaEVycm9yDAEgcXVlcnlfaWQoARxRdWVyeUlkAAEwcGFsbGV0X2luZGV4DAEIdTgAAShjYWxsX2luZGV4DAEIdTgACAhVAVF1ZXJ5IHJlc3BvbnNlIGhhcyBiZWVuIHJlY2VpdmVkIGFuZCBxdWVyeSBpcyByZW1vdmVkLiBUaGVyZSB3YXMgYSBnZW5lcmFsIGVycm9yIHdpdGiIZGlzcGF0Y2hpbmcgdGhlIG5vdGlmaWNhdGlvbiBjYWxsLkhOb3RpZnlEZWNvZGVGYWlsZWQMASBxdWVyeV9pZCgBHFF1ZXJ5SWQAATBwYWxsZXRfaW5kZXgMAQh1OAABKGNhbGxfaW5kZXgMAQh1OAAJDFEBUXVlcnkgcmVzcG9uc2UgaGFzIGJlZW4gcmVjZWl2ZWQgYW5kIHF1ZXJ5IGlzIHJlbW92ZWQuIFRoZSBkaXNwYXRjaCB3YXMgdW5hYmxlIHRvIGJlWQFkZWNvZGVkIGludG8gYSBgQ2FsbGA7IHRoaXMgbWlnaHQgYmUgZHVlIHRvIGRpc3BhdGNoIGZ1bmN0aW9uIGhhdmluZyBhIHNpZ25hdHVyZSB3aGljaJRpcyBub3QgYChvcmlnaW4sIFF1ZXJ5SWQsIFJlc3BvbnNlKWAuQEludmFsaWRSZXNwb25kZXIMARhvcmlnaW4dAgEgTG9jYXRpb24AASBxdWVyeV9pZCgBHFF1ZXJ5SWQAAURleHBlY3RlZF9sb2NhdGlvblkDAUBPcHRpb248TG9jYXRpb24+AAoMWQFFeHBlY3RlZCBxdWVyeSByZXNwb25zZSBoYXMgYmVlbiByZWNlaXZlZCBidXQgdGhlIG9yaWdpbiBsb2NhdGlvbiBvZiB0aGUgcmVzcG9uc2UgZG9lc1UBbm90IG1hdGNoIHRoYXQgZXhwZWN0ZWQuIFRoZSBxdWVyeSByZW1haW5zIHJlZ2lzdGVyZWQgZm9yIGEgbGF0ZXIsIHZhbGlkLCByZXNwb25zZSB0b2xiZSByZWNlaXZlZCBhbmQgYWN0ZWQgdXBvbi5cSW52YWxpZFJlc3BvbmRlclZlcnNpb24IARhvcmlnaW4dAgEgTG9jYXRpb24AASBxdWVyeV9pZCgBHFF1ZXJ5SWQACxxRAUV4cGVjdGVkIHF1ZXJ5IHJlc3BvbnNlIGhhcyBiZWVuIHJlY2VpdmVkIGJ1dCB0aGUgZXhwZWN0ZWQgb3JpZ2luIGxvY2F0aW9uIHBsYWNlZCBpbk0Bc3RvcmFnZSBieSB0aGlzIHJ1bnRpbWUgcHJldmlvdXNseSBjYW5ub3QgYmUgZGVjb2RlZC4gVGhlIHF1ZXJ5IHJlbWFpbnMgcmVnaXN0ZXJlZC4AQQFUaGlzIGlzIHVuZXhwZWN0ZWQgKHNpbmNlIGEgbG9jYXRpb24gcGxhY2VkIGluIHN0b3JhZ2UgaW4gYSBwcmV2aW91c2x5IGV4ZWN1dGluZ00BcnVudGltZSBzaG91bGQgYmUgcmVhZGFibGUgcHJpb3IgdG8gcXVlcnkgdGltZW91dCkgYW5kIGRhbmdlcm91cyBzaW5jZSB0aGUgcG9zc2libHlZAXZhbGlkIHJlc3BvbnNlIHdpbGwgYmUgZHJvcHBlZC4gTWFudWFsIGdvdmVybmFuY2UgaW50ZXJ2ZW50aW9uIGlzIHByb2JhYmx5IGdvaW5nIHRvIGJlHG5lZWRlZC40UmVzcG9uc2VUYWtlbgQBIHF1ZXJ5X2lkKAEcUXVlcnlJZAAMBMhSZWNlaXZlZCBxdWVyeSByZXNwb25zZSBoYXMgYmVlbiByZWFkIGFuZCByZW1vdmVkLjRBc3NldHNUcmFwcGVkDAEQaGFzaEABEEgyNTYAARhvcmlnaW4dAgEgTG9jYXRpb24AARhhc3NldHONAwE8VmVyc2lvbmVkQXNzZXRzAA0EuFNvbWUgYXNzZXRzIGhhdmUgYmVlbiBwbGFjZWQgaW4gYW4gYXNzZXQgdHJhcC5UVmVyc2lvbkNoYW5nZU5vdGlmaWVkEAEsZGVzdGluYXRpb24dAgEgTG9jYXRpb24AARhyZXN1bHQ4AShYY21WZXJzaW9uAAEQY29zdCEDARhBc3NldHMAAShtZXNzYWdlX2lkCAEcWGNtSGFzaAAODCUBQW4gWENNIHZlcnNpb24gY2hhbmdlIG5vdGlmaWNhdGlvbiBtZXNzYWdlIGhhcyBiZWVuIGF0dGVtcHRlZCB0byBiZSBzZW50LgDgVGhlIGNvc3Qgb2Ygc2VuZGluZyBpdCAoYm9ybmUgYnkgdGhlIGNoYWluKSBpcyBpbmNsdWRlZC5cU3VwcG9ydGVkVmVyc2lvbkNoYW5nZWQIASBsb2NhdGlvbh0CASBMb2NhdGlvbgABHHZlcnNpb244AShYY21WZXJzaW9uAA8IOQFUaGUgc3VwcG9ydGVkIHZlcnNpb24gb2YgYSBsb2NhdGlvbiBoYXMgYmVlbiBjaGFuZ2VkLiBUaGlzIG1pZ2h0IGJlIHRocm91Z2ggYW7AYXV0b21hdGljIG5vdGlmaWNhdGlvbiBvciBhIG1hbnVhbCBpbnRlcnZlbnRpb24uUE5vdGlmeVRhcmdldFNlbmRGYWlsDAEgbG9jYXRpb24dAgEgTG9jYXRpb24AASBxdWVyeV9pZCgBHFF1ZXJ5SWQAARRlcnJvckUDASBYY21FcnJvcgAQCFkBQSBnaXZlbiBsb2NhdGlvbiB3aGljaCBoYWQgYSB2ZXJzaW9uIGNoYW5nZSBzdWJzY3JpcHRpb24gd2FzIGRyb3BwZWQgb3dpbmcgdG8gYW4gZXJyb3J8c2VuZGluZyB0aGUgbm90aWZpY2F0aW9uIHRvIGl0LmROb3RpZnlUYXJnZXRNaWdyYXRpb25GYWlsCAEgbG9jYXRpb27JAQFEVmVyc2lvbmVkTG9jYXRpb24AASBxdWVyeV9pZCgBHFF1ZXJ5SWQAEQhZAUEgZ2l2ZW4gbG9jYXRpb24gd2hpY2ggaGFkIGEgdmVyc2lvbiBjaGFuZ2Ugc3Vic2NyaXB0aW9uIHdhcyBkcm9wcGVkIG93aW5nIHRvIGFuIGVycm9ytG1pZ3JhdGluZyB0aGUgbG9jYXRpb24gdG8gb3VyIG5ldyBYQ00gZm9ybWF0LlRJbnZhbGlkUXVlcmllclZlcnNpb24IARhvcmlnaW4dAgEgTG9jYXRpb24AASBxdWVyeV9pZCgBHFF1ZXJ5SWQAEhxVAUV4cGVjdGVkIHF1ZXJ5IHJlc3BvbnNlIGhhcyBiZWVuIHJlY2VpdmVkIGJ1dCB0aGUgZXhwZWN0ZWQgcXVlcmllciBsb2NhdGlvbiBwbGFjZWQgaW5NAXN0b3JhZ2UgYnkgdGhpcyBydW50aW1lIHByZXZpb3VzbHkgY2Fubm90IGJlIGRlY29kZWQuIFRoZSBxdWVyeSByZW1haW5zIHJlZ2lzdGVyZWQuAEEBVGhpcyBpcyB1bmV4cGVjdGVkIChzaW5jZSBhIGxvY2F0aW9uIHBsYWNlZCBpbiBzdG9yYWdlIGluIGEgcHJldmlvdXNseSBleGVjdXRpbmdNAXJ1bnRpbWUgc2hvdWxkIGJlIHJlYWRhYmxlIHByaW9yIHRvIHF1ZXJ5IHRpbWVvdXQpIGFuZCBkYW5nZXJvdXMgc2luY2UgdGhlIHBvc3NpYmx5WQF2YWxpZCByZXNwb25zZSB3aWxsIGJlIGRyb3BwZWQuIE1hbnVhbCBnb3Zlcm5hbmNlIGludGVydmVudGlvbiBpcyBwcm9iYWJseSBnb2luZyB0byBiZRxuZWVkZWQuOEludmFsaWRRdWVyaWVyEAEYb3JpZ2luHQIBIExvY2F0aW9uAAEgcXVlcnlfaWQoARxRdWVyeUlkAAFAZXhwZWN0ZWRfcXVlcmllch0CASBMb2NhdGlvbgABUG1heWJlX2FjdHVhbF9xdWVyaWVyWQMBQE9wdGlvbjxMb2NhdGlvbj4AEwxdAUV4cGVjdGVkIHF1ZXJ5IHJlc3BvbnNlIGhhcyBiZWVuIHJlY2VpdmVkIGJ1dCB0aGUgcXVlcmllciBsb2NhdGlvbiBvZiB0aGUgcmVzcG9uc2UgZG9lc1EBbm90IG1hdGNoIHRoZSBleHBlY3RlZC4gVGhlIHF1ZXJ5IHJlbWFpbnMgcmVnaXN0ZXJlZCBmb3IgYSBsYXRlciwgdmFsaWQsIHJlc3BvbnNlIHRvbGJlIHJlY2VpdmVkIGFuZCBhY3RlZCB1cG9uLlBWZXJzaW9uTm90aWZ5U3RhcnRlZAwBLGRlc3RpbmF0aW9uHQIBIExvY2F0aW9uAAEQY29zdCEDARhBc3NldHMAAShtZXNzYWdlX2lkCAEcWGNtSGFzaAAUCFkBQSByZW1vdGUgaGFzIHJlcXVlc3RlZCBYQ00gdmVyc2lvbiBjaGFuZ2Ugbm90aWZpY2F0aW9uIGZyb20gdXMgYW5kIHdlIGhhdmUgaG9ub3JlZCBpdC4dAUEgdmVyc2lvbiBpbmZvcm1hdGlvbiBtZXNzYWdlIGlzIHNlbnQgdG8gdGhlbSBhbmQgaXRzIGNvc3QgaXMgaW5jbHVkZWQuWFZlcnNpb25Ob3RpZnlSZXF1ZXN0ZWQMASxkZXN0aW5hdGlvbh0CASBMb2NhdGlvbgABEGNvc3QhAwEYQXNzZXRzAAEobWVzc2FnZV9pZAgBHFhjbUhhc2gAFQQ9AVdlIGhhdmUgcmVxdWVzdGVkIHRoYXQgYSByZW1vdGUgY2hhaW4gc2VuZCB1cyBYQ00gdmVyc2lvbiBjaGFuZ2Ugbm90aWZpY2F0aW9ucy5gVmVyc2lvbk5vdGlmeVVucmVxdWVzdGVkDAEsZGVzdGluYXRpb24dAgEgTG9jYXRpb24AARBjb3N0IQMBGEFzc2V0cwABKG1lc3NhZ2VfaWQIARxYY21IYXNoABYIJQFXZSBoYXZlIHJlcXVlc3RlZCB0aGF0IGEgcmVtb3RlIGNoYWluIHN0b3BzIHNlbmRpbmcgdXMgWENNIHZlcnNpb24gY2hhbmdlOG5vdGlmaWNhdGlvbnMuIEZlZXNQYWlkCAEYcGF5aW5nHQIBIExvY2F0aW9uAAEQZmVlcyEDARhBc3NldHMAFwQxAUZlZXMgd2VyZSBwYWlkIGZyb20gYSBsb2NhdGlvbiBmb3IgYW4gb3BlcmF0aW9uIChvZnRlbiBmb3IgdXNpbmcgYFNlbmRYY21gKS40QXNzZXRzQ2xhaW1lZAwBEGhhc2hAARBIMjU2AAEYb3JpZ2luHQIBIExvY2F0aW9uAAEYYXNzZXRzjQMBPFZlcnNpb25lZEFzc2V0cwAYBMBTb21lIGFzc2V0cyBoYXZlIGJlZW4gY2xhaW1lZCBmcm9tIGFuIGFzc2V0IHRyYXBgVmVyc2lvbk1pZ3JhdGlvbkZpbmlzaGVkBAEcdmVyc2lvbjgBKFhjbVZlcnNpb24AGQSEQSBYQ00gdmVyc2lvbiBtaWdyYXRpb24gZmluaXNoZWQuPEFsaWFzQXV0aG9yaXplZAwBHGFsaWFzZXIdAgEgTG9jYXRpb24AARh0YXJnZXQdAgEgTG9jYXRpb24AARhleHBpcnkBAQEsT3B0aW9uPHU2ND4AGghdAUFuIGBhbGlhc2VyYCBsb2NhdGlvbiB3YXMgYXV0aG9yaXplZCBieSBgdGFyZ2V0YCB0byBhbGlhcyBpdCwgYXV0aG9yaXphdGlvbiB2YWxpZCB1bnRpbFhgZXhwaXJ5YCBibG9jayBudW1iZXIuZEFsaWFzQXV0aG9yaXphdGlvblJlbW92ZWQIARxhbGlhc2VyHQIBIExvY2F0aW9uAAEYdGFyZ2V0HQIBIExvY2F0aW9uABsEzGB0YXJnZXRgIHJlbW92ZWQgYWxpYXMgYXV0aG9yaXphdGlvbiBmb3IgYGFsaWFzZXJgLnBBbGlhc2VzQXV0aG9yaXphdGlvbnNSZW1vdmVkBAEYdGFyZ2V0HQIBIExvY2F0aW9uABwEqGB0YXJnZXRgIHJlbW92ZWQgYWxsIGFsaWFzIGF1dGhvcml6YXRpb25zLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldL0IECxzdGFnaW5nX3hjbQh2NRh0cmFpdHMcT3V0Y29tZQABDCBDb21wbGV0ZQQBEHVzZWQVAQEYV2VpZ2h0AAAAKEluY29tcGxldGUIARB1c2VkFQEBGFdlaWdodAABFGVycm9ywQgBQEluc3RydWN0aW9uRXJyb3IAAQAURXJyb3IEAMEIAUBJbnN0cnVjdGlvbkVycm9yAAIAAMEIECxzdGFnaW5nX3hjbQh2NRh0cmFpdHNASW5zdHJ1Y3Rpb25FcnJvcgAACAEUaW5kZXgMAUBJbnN0cnVjdGlvbkluZGV4AAEUZXJyb3JFAwEURXJyb3IAAMUIEAx4Y20IdjMYdHJhaXRzJFNlbmRFcnJvcgABHDROb3RBcHBsaWNhYmxlAAAAJFRyYW5zcG9ydAABAChVbnJvdXRhYmxlAAIAWERlc3RpbmF0aW9uVW5zdXBwb3J0ZWQAAwBURXhjZWVkc01heE1lc3NhZ2VTaXplAAQAPE1pc3NpbmdBcmd1bWVudAAFABBGZWVzAAYAAMkIDEhjdW11bHVzX3BhbGxldF94Y20YcGFsbGV0FEV2ZW50BARUAAEMNEludmFsaWRGb3JtYXQEAAgBIFt1ODsgMzJdAAAIgERvd253YXJkIG1lc3NhZ2UgaXMgaW52YWxpZCBYQ00uIFxbIGlkIFxdSFVuc3VwcG9ydGVkVmVyc2lvbgQACAEgW3U4OyAzMl0AAQi8RG93bndhcmQgbWVzc2FnZSBpcyB1bnN1cHBvcnRlZCB2ZXJzaW9uIG9mIFhDTS4gXFsgaWQgXF1ARXhlY3V0ZWREb3dud2FyZAgACAEgW3U4OyAzMl0AAL0IARxPdXRjb21lAAIIxERvd253YXJkIG1lc3NhZ2UgZXhlY3V0ZWQgd2l0aCB0aGUgZ2l2ZW4gb3V0Y29tZS5EXFsgaWQsIG91dGNvbWUgXF0EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXTNCAxwcGFsbGV0X3hjbV9icmlkZ2VfaHViX3JvdXRlchhwYWxsZXQURXZlbnQIBFQABEkAAQhoRGVsaXZlcnlGZWVGYWN0b3JEZWNyZWFzZWQEASRuZXdfdmFsdWUpBQEkRml4ZWRVMTI4BJROZXcgdmFsdWUgb2YgdGhlIGBEZWxpdmVyeUZlZUZhY3RvcmAuAAScRGVsaXZlcnkgZmVlIGZhY3RvciBoYXMgYmVlbiBkZWNyZWFzZWQuaERlbGl2ZXJ5RmVlRmFjdG9ySW5jcmVhc2VkBAEkbmV3X3ZhbHVlKQUBJEZpeGVkVTEyOASUTmV3IHZhbHVlIG9mIHRoZSBgRGVsaXZlcnlGZWVGYWN0b3JgLgEEnERlbGl2ZXJ5IGZlZSBmYWN0b3IgaGFzIGJlZW4gaW5jcmVhc2VkLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldNEIDFBwYWxsZXRfbWVzc2FnZV9xdWV1ZRhwYWxsZXQURXZlbnQEBFQAARBAUHJvY2Vzc2luZ0ZhaWxlZAwBCGlkQAEQSDI1NgSUVGhlIGBibGFrZTJfMjU2YCBoYXNoIG9mIHRoZSBtZXNzYWdlLgEYb3JpZ2lu0QMBSE1lc3NhZ2VPcmlnaW5PZjxUPgRkVGhlIHF1ZXVlIG9mIHRoZSBtZXNzYWdlLgEUZXJyb3LVCAFMUHJvY2Vzc01lc3NhZ2VFcnJvchBgVGhlIGVycm9yIHRoYXQgb2NjdXJyZWQuAEkBVGhpcyBlcnJvciBpcyBwcmV0dHkgb3BhcXVlLiBNb3JlIGZpbmUtZ3JhaW5lZCBlcnJvcnMgbmVlZCB0byBiZSBlbWl0dGVkIGFzIGV2ZW50c2hieSB0aGUgYE1lc3NhZ2VQcm9jZXNzb3JgLgAEVQFNZXNzYWdlIGRpc2NhcmRlZCBkdWUgdG8gYW4gZXJyb3IgaW4gdGhlIGBNZXNzYWdlUHJvY2Vzc29yYCAodXN1YWxseSBhIGZvcm1hdCBlcnJvcikuJFByb2Nlc3NlZBABCGlkQAEQSDI1NgSUVGhlIGBibGFrZTJfMjU2YCBoYXNoIG9mIHRoZSBtZXNzYWdlLgEYb3JpZ2lu0QMBSE1lc3NhZ2VPcmlnaW5PZjxUPgRkVGhlIHF1ZXVlIG9mIHRoZSBtZXNzYWdlLgEsd2VpZ2h0X3VzZWQVAQEYV2VpZ2h0BMBIb3cgbXVjaCB3ZWlnaHQgd2FzIHVzZWQgdG8gcHJvY2VzcyB0aGUgbWVzc2FnZS4BHHN1Y2Nlc3NdAQEQYm9vbBiIV2hldGhlciB0aGUgbWVzc2FnZSB3YXMgcHJvY2Vzc2VkLgBJAU5vdGUgdGhhdCB0aGlzIGRvZXMgbm90IG1lYW4gdGhhdCB0aGUgdW5kZXJseWluZyBgTWVzc2FnZVByb2Nlc3NvcmAgd2FzIGludGVybmFsbHk1AXN1Y2Nlc3NmdWwuIEl0ICpzb2xlbHkqIG1lYW5zIHRoYXQgdGhlIE1RIHBhbGxldCB3aWxsIHRyZWF0IHRoaXMgYXMgYSBzdWNjZXNzTQFjb25kaXRpb24gYW5kIGRpc2NhcmQgdGhlIG1lc3NhZ2UuIEFueSBpbnRlcm5hbCBlcnJvciBuZWVkcyB0byBiZSBlbWl0dGVkIGFzIGV2ZW50c2hieSB0aGUgYE1lc3NhZ2VQcm9jZXNzb3JgLgEEVE1lc3NhZ2UgaXMgcHJvY2Vzc2VkLkhPdmVyd2VpZ2h0RW5xdWV1ZWQQAQhpZAgBIFt1ODsgMzJdBJRUaGUgYGJsYWtlMl8yNTZgIGhhc2ggb2YgdGhlIG1lc3NhZ2UuARhvcmlnaW7RAwFITWVzc2FnZU9yaWdpbk9mPFQ+BGRUaGUgcXVldWUgb2YgdGhlIG1lc3NhZ2UuAShwYWdlX2luZGV4OAEkUGFnZUluZGV4BGBUaGUgcGFnZSBvZiB0aGUgbWVzc2FnZS4BNG1lc3NhZ2VfaW5kZXg4ARxUOjpTaXplBKRUaGUgaW5kZXggb2YgdGhlIG1lc3NhZ2Ugd2l0aGluIHRoZSBwYWdlLgIEjE1lc3NhZ2UgcGxhY2VkIGluIG92ZXJ3ZWlnaHQgcXVldWUuKFBhZ2VSZWFwZWQIARhvcmlnaW7RAwFITWVzc2FnZU9yaWdpbk9mPFQ+BFhUaGUgcXVldWUgb2YgdGhlIHBhZ2UuARRpbmRleDgBJFBhZ2VJbmRleARYVGhlIGluZGV4IG9mIHRoZSBwYWdlLgMEVFRoaXMgcGFnZSB3YXMgcmVhcGVkLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldNUIEDRmcmFtZV9zdXBwb3J0GHRyYWl0cyBtZXNzYWdlc0xQcm9jZXNzTWVzc2FnZUVycm9yAAEYJEJhZEZvcm1hdAAAABxDb3JydXB0AAEALFVuc3VwcG9ydGVkAAIAKE92ZXJ3ZWlnaHQEABUBARhXZWlnaHQAAwAUWWllbGQABABEU3RhY2tMaW1pdFJlYWNoZWQABQAA2QgMhHNub3dicmlkZ2VfcGFsbGV0X3N5c3RlbV9mcm9udGVuZBhwYWxsZXQURXZlbnQEBFQAAQgsTWVzc2FnZVNlbnQQARhvcmlnaW4dAgEgTG9jYXRpb24AASxkZXN0aW5hdGlvbh0CASBMb2NhdGlvbgABHG1lc3NhZ2UVAwEcWGNtPCgpPgABKG1lc3NhZ2VfaWQIARxYY21IYXNoAAAEPEFuIFhDTSB3YXMgc2VudGhFeHBvcnRPcGVyYXRpbmdNb2RlQ2hhbmdlZAQBEG1vZGXZAwE0T3BlcmF0aW5nTW9kZQABBERTZXQgT3BlcmF0aW5nTW9kZQR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldN0IDDhwYWxsZXRfdXRpbGl0eRhwYWxsZXQURXZlbnQAASBAQmF0Y2hJbnRlcnJ1cHRlZAgBFGluZGV4OAEMdTMyAAEUZXJyb3IJCAE0RGlzcGF0Y2hFcnJvcgAACFUBQmF0Y2ggb2YgZGlzcGF0Y2hlcyBkaWQgbm90IGNvbXBsZXRlIGZ1bGx5LiBJbmRleCBvZiBmaXJzdCBmYWlsaW5nIGRpc3BhdGNoIGdpdmVuLCBhc0h3ZWxsIGFzIHRoZSBlcnJvci44QmF0Y2hDb21wbGV0ZWQAAQTIQmF0Y2ggb2YgZGlzcGF0Y2hlcyBjb21wbGV0ZWQgZnVsbHkgd2l0aCBubyBlcnJvci5gQmF0Y2hDb21wbGV0ZWRXaXRoRXJyb3JzAAIEtEJhdGNoIG9mIGRpc3BhdGNoZXMgY29tcGxldGVkIGJ1dCBoYXMgZXJyb3JzLjRJdGVtQ29tcGxldGVkAAMEHQFBIHNpbmdsZSBpdGVtIHdpdGhpbiBhIEJhdGNoIG9mIGRpc3BhdGNoZXMgaGFzIGNvbXBsZXRlZCB3aXRoIG5vIGVycm9yLihJdGVtRmFpbGVkBAEUZXJyb3IJCAE0RGlzcGF0Y2hFcnJvcgAEBBEBQSBzaW5nbGUgaXRlbSB3aXRoaW4gYSBCYXRjaCBvZiBkaXNwYXRjaGVzIGhhcyBjb21wbGV0ZWQgd2l0aCBlcnJvci4wRGlzcGF0Y2hlZEFzBAEYcmVzdWx0LQgBOERpc3BhdGNoUmVzdWx0AAUEWEEgY2FsbCB3YXMgZGlzcGF0Y2hlZC5ESWZFbHNlTWFpblN1Y2Nlc3MABgRkTWFpbiBjYWxsIHdhcyBkaXNwYXRjaGVkLlBJZkVsc2VGYWxsYmFja0NhbGxlZAQBKG1haW5fZXJyb3IJCAE0RGlzcGF0Y2hFcnJvcgAHBIRUaGUgZmFsbGJhY2sgY2FsbCB3YXMgZGlzcGF0Y2hlZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXThCAw8cGFsbGV0X211bHRpc2lnGHBhbGxldBRFdmVudAQEVAABFCxOZXdNdWx0aXNpZwwBJGFwcHJvdmluZwQBMFQ6OkFjY291bnRJZAABIG11bHRpc2lnBAEwVDo6QWNjb3VudElkAAEkY2FsbF9oYXNoCAEgQ2FsbEhhc2gAAASMQSBuZXcgbXVsdGlzaWcgb3BlcmF0aW9uIGhhcyBiZWd1bi5ATXVsdGlzaWdBcHByb3ZhbBABJGFwcHJvdmluZwQBMFQ6OkFjY291bnRJZAABJHRpbWVwb2ludDEEAXBUaW1lcG9pbnQ8QmxvY2tOdW1iZXJGb3I8VD4+AAEgbXVsdGlzaWcEATBUOjpBY2NvdW50SWQAASRjYWxsX2hhc2gIASBDYWxsSGFzaAABBMhBIG11bHRpc2lnIG9wZXJhdGlvbiBoYXMgYmVlbiBhcHByb3ZlZCBieSBzb21lb25lLkBNdWx0aXNpZ0V4ZWN1dGVkFAEkYXBwcm92aW5nBAEwVDo6QWNjb3VudElkAAEkdGltZXBvaW50MQQBcFRpbWVwb2ludDxCbG9ja051bWJlckZvcjxUPj4AASBtdWx0aXNpZwQBMFQ6OkFjY291bnRJZAABJGNhbGxfaGFzaAgBIENhbGxIYXNoAAEYcmVzdWx0LQgBOERpc3BhdGNoUmVzdWx0AAIEnEEgbXVsdGlzaWcgb3BlcmF0aW9uIGhhcyBiZWVuIGV4ZWN1dGVkLkRNdWx0aXNpZ0NhbmNlbGxlZBABKGNhbmNlbGxpbmcEATBUOjpBY2NvdW50SWQAASR0aW1lcG9pbnQxBAFwVGltZXBvaW50PEJsb2NrTnVtYmVyRm9yPFQ+PgABIG11bHRpc2lnBAEwVDo6QWNjb3VudElkAAEkY2FsbF9oYXNoCAEgQ2FsbEhhc2gAAwSgQSBtdWx0aXNpZyBvcGVyYXRpb24gaGFzIGJlZW4gY2FuY2VsbGVkLjBEZXBvc2l0UG9rZWQQAQx3aG8EATBUOjpBY2NvdW50SWQAASRjYWxsX2hhc2gIASBDYWxsSGFzaAABLG9sZF9kZXBvc2l0WQEBMEJhbGFuY2VPZjxUPgABLG5ld19kZXBvc2l0WQEBMEJhbGFuY2VPZjxUPgAEBPBUaGUgZGVwb3NpdCBmb3IgYSBtdWx0aXNpZyBvcGVyYXRpb24gaGFzIGJlZW4gdXBkYXRlZC9wb2tlZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXTlCAwwcGFsbGV0X3Byb3h5GHBhbGxldBRFdmVudAQEVAABHDRQcm94eUV4ZWN1dGVkBAEYcmVzdWx0LQgBOERpc3BhdGNoUmVzdWx0AAAEvEEgcHJveHkgd2FzIGV4ZWN1dGVkIGNvcnJlY3RseSwgd2l0aCB0aGUgZ2l2ZW4uLFB1cmVDcmVhdGVkGAEQcHVyZQQBMFQ6OkFjY291bnRJZAABDHdobwQBMFQ6OkFjY291bnRJZAABKHByb3h5X3R5cGU9BAEwVDo6UHJveHlUeXBlAAFQZGlzYW1iaWd1YXRpb25faW5kZXjtAwEMdTE2AAEIYXQ4AURCbG9ja051bWJlckZvcjxUPgABPGV4dHJpbnNpY19pbmRleDgBDHUzMgABCNxBIHB1cmUgYWNjb3VudCBoYXMgYmVlbiBjcmVhdGVkIGJ5IG5ldyBwcm94eSB3aXRoIGdpdmVukGRpc2FtYmlndWF0aW9uIGluZGV4IGFuZCBwcm94eSB0eXBlLihQdXJlS2lsbGVkEAEQcHVyZQQBMFQ6OkFjY291bnRJZAABHHNwYXduZXIEATBUOjpBY2NvdW50SWQAAShwcm94eV90eXBlPQQBMFQ6OlByb3h5VHlwZQABUGRpc2FtYmlndWF0aW9uX2luZGV47QMBDHUxNgACBJxBIHB1cmUgcHJveHkgd2FzIGtpbGxlZCBieSBpdHMgc3Bhd25lci4kQW5ub3VuY2VkDAEQcmVhbAQBMFQ6OkFjY291bnRJZAABFHByb3h5BAEwVDo6QWNjb3VudElkAAEkY2FsbF9oYXNoQAE0Q2FsbEhhc2hPZjxUPgADBOBBbiBhbm5vdW5jZW1lbnQgd2FzIHBsYWNlZCB0byBtYWtlIGEgY2FsbCBpbiB0aGUgZnV0dXJlLihQcm94eUFkZGVkEAEkZGVsZWdhdG9yBAEwVDo6QWNjb3VudElkAAEkZGVsZWdhdGVlBAEwVDo6QWNjb3VudElkAAEocHJveHlfdHlwZT0EATBUOjpQcm94eVR5cGUAARRkZWxheTgBREJsb2NrTnVtYmVyRm9yPFQ+AAQESEEgcHJveHkgd2FzIGFkZGVkLjBQcm94eVJlbW92ZWQQASRkZWxlZ2F0b3IEATBUOjpBY2NvdW50SWQAASRkZWxlZ2F0ZWUEATBUOjpBY2NvdW50SWQAAShwcm94eV90eXBlPQQBMFQ6OlByb3h5VHlwZQABFGRlbGF5OAFEQmxvY2tOdW1iZXJGb3I8VD4ABQRQQSBwcm94eSB3YXMgcmVtb3ZlZC4wRGVwb3NpdFBva2VkEAEMd2hvBAEwVDo6QWNjb3VudElkAAEQa2luZOkIASxEZXBvc2l0S2luZAABLG9sZF9kZXBvc2l0WQEBMEJhbGFuY2VPZjxUPgABLG5ld19kZXBvc2l0WQEBMEJhbGFuY2VPZjxUPgAGBAkBQSBkZXBvc2l0IHN0b3JlZCBmb3IgcHJveGllcyBvciBhbm5vdW5jZW1lbnRzIHdhcyBwb2tlZCAvIHVwZGF0ZWQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV06QgIMHBhbGxldF9wcm94eSxEZXBvc2l0S2luZAABCBxQcm94aWVzAAAANEFubm91bmNlbWVudHMAAQAA7QgMOHBhbGxldF9pbmRpY2VzGHBhbGxldBRFdmVudAQEVAABEDRJbmRleEFzc2lnbmVkCAEMd2hvBAEwVDo6QWNjb3VudElkAAEUaW5kZXg4ATxUOjpBY2NvdW50SW5kZXgAAAR0QSBhY2NvdW50IGluZGV4IHdhcyBhc3NpZ25lZC4oSW5kZXhGcmVlZAQBFGluZGV4OAE8VDo6QWNjb3VudEluZGV4AAEEvEEgYWNjb3VudCBpbmRleCBoYXMgYmVlbiBmcmVlZCB1cCAodW5hc3NpZ25lZCkuLEluZGV4RnJvemVuCAEUaW5kZXg4ATxUOjpBY2NvdW50SW5kZXgAAQx3aG8EATBUOjpBY2NvdW50SWQAAgToQSBhY2NvdW50IGluZGV4IGhhcyBiZWVuIGZyb3plbiB0byBpdHMgY3VycmVudCBhY2NvdW50IElELjBEZXBvc2l0UG9rZWQQAQx3aG8EATBUOjpBY2NvdW50SWQAARRpbmRleDgBPFQ6OkFjY291bnRJbmRleAABLG9sZF9kZXBvc2l0WQEBMEJhbGFuY2VPZjxUPgABLG5ld19kZXBvc2l0WQEBMEJhbGFuY2VPZjxUPgADBOhBIGRlcG9zaXQgdG8gcmVzZXJ2ZSBhbiBpbmRleCBoYXMgYmVlbiBwb2tlZC9yZWNvbnNpZGVyZWQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV08QgMNHBhbGxldF9hc3NldHMYcGFsbGV0FEV2ZW50CARUAARJAAGAHENyZWF0ZWQMASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAARxjcmVhdG9yBAEwVDo6QWNjb3VudElkAAEUb3duZXIEATBUOjpBY2NvdW50SWQAAAR0U29tZSBhc3NldCBjbGFzcyB3YXMgY3JlYXRlZC4YSXNzdWVkDAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEUb3duZXIEATBUOjpBY2NvdW50SWQAARhhbW91bnRZAQEoVDo6QmFsYW5jZQABBGBTb21lIGFzc2V0cyB3ZXJlIGlzc3VlZC4sVHJhbnNmZXJyZWQQASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAARBmcm9tBAEwVDo6QWNjb3VudElkAAEIdG8EATBUOjpBY2NvdW50SWQAARhhbW91bnRZAQEoVDo6QmFsYW5jZQACBHRTb21lIGFzc2V0cyB3ZXJlIHRyYW5zZmVycmVkLhhCdXJuZWQMASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAABHGJhbGFuY2VZAQEoVDo6QmFsYW5jZQADBGxTb21lIGFzc2V0cyB3ZXJlIGRlc3Ryb3llZC4sVGVhbUNoYW5nZWQQASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAARhpc3N1ZXIEATBUOjpBY2NvdW50SWQAARRhZG1pbgQBMFQ6OkFjY291bnRJZAABHGZyZWV6ZXIEATBUOjpBY2NvdW50SWQABARwVGhlIG1hbmFnZW1lbnQgdGVhbSBjaGFuZ2VkLjBPd25lckNoYW5nZWQIASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAAFBEhUaGUgb3duZXIgY2hhbmdlZC4YRnJvemVuCAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEMd2hvBAEwVDo6QWNjb3VudElkAAYEeFNvbWUgYWNjb3VudCBgd2hvYCB3YXMgZnJvemVuLhhUaGF3ZWQIASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAAQx3aG8EATBUOjpBY2NvdW50SWQABwR4U29tZSBhY2NvdW50IGB3aG9gIHdhcyB0aGF3ZWQuLEFzc2V0RnJvemVuBAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAgEhFNvbWUgYXNzZXQgYGFzc2V0X2lkYCB3YXMgZnJvemVuLixBc3NldFRoYXdlZAQBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAAJBIRTb21lIGFzc2V0IGBhc3NldF9pZGAgd2FzIHRoYXdlZC5EQWNjb3VudHNEZXN0cm95ZWQMASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAAUhhY2NvdW50c19kZXN0cm95ZWQ4AQx1MzIAAUhhY2NvdW50c19yZW1haW5pbmc4AQx1MzIACgSgQWNjb3VudHMgd2VyZSBkZXN0cm95ZWQgZm9yIGdpdmVuIGFzc2V0LkhBcHByb3ZhbHNEZXN0cm95ZWQMASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAAUxhcHByb3ZhbHNfZGVzdHJveWVkOAEMdTMyAAFMYXBwcm92YWxzX3JlbWFpbmluZzgBDHUzMgALBKRBcHByb3ZhbHMgd2VyZSBkZXN0cm95ZWQgZm9yIGdpdmVuIGFzc2V0LkhEZXN0cnVjdGlvblN0YXJ0ZWQEASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQADATQQW4gYXNzZXQgY2xhc3MgaXMgaW4gdGhlIHByb2Nlc3Mgb2YgYmVpbmcgZGVzdHJveWVkLiREZXN0cm95ZWQEASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQADQR0QW4gYXNzZXQgY2xhc3Mgd2FzIGRlc3Ryb3llZC4wRm9yY2VDcmVhdGVkCAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEUb3duZXIEATBUOjpBY2NvdW50SWQADgSMU29tZSBhc3NldCBjbGFzcyB3YXMgZm9yY2UtY3JlYXRlZC4sTWV0YWRhdGFTZXQUASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAARBuYW1lGAEcVmVjPHU4PgABGHN5bWJvbBgBHFZlYzx1OD4AASBkZWNpbWFscwwBCHU4AAEkaXNfZnJvemVuXQEBEGJvb2wADwScTmV3IG1ldGFkYXRhIGhhcyBiZWVuIHNldCBmb3IgYW4gYXNzZXQuPE1ldGFkYXRhQ2xlYXJlZAQBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAAQBJxNZXRhZGF0YSBoYXMgYmVlbiBjbGVhcmVkIGZvciBhbiBhc3NldC5AQXBwcm92ZWRUcmFuc2ZlchABIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABGHNvdXJjZQQBMFQ6OkFjY291bnRJZAABIGRlbGVnYXRlBAEwVDo6QWNjb3VudElkAAEYYW1vdW50WQEBKFQ6OkJhbGFuY2UAEQQxAShBZGRpdGlvbmFsKSBmdW5kcyBoYXZlIGJlZW4gYXBwcm92ZWQgZm9yIHRyYW5zZmVyIHRvIGEgZGVzdGluYXRpb24gYWNjb3VudC5EQXBwcm92YWxDYW5jZWxsZWQMASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAABIGRlbGVnYXRlBAEwVDo6QWNjb3VudElkABIE8EFuIGFwcHJvdmFsIGZvciBhY2NvdW50IGBkZWxlZ2F0ZWAgd2FzIGNhbmNlbGxlZCBieSBgb3duZXJgLkxUcmFuc2ZlcnJlZEFwcHJvdmVkFAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEUb3duZXIEATBUOjpBY2NvdW50SWQAASBkZWxlZ2F0ZQQBMFQ6OkFjY291bnRJZAABLGRlc3RpbmF0aW9uBAEwVDo6QWNjb3VudElkAAEYYW1vdW50WQEBKFQ6OkJhbGFuY2UAEwgxAUFuIGBhbW91bnRgIHdhcyB0cmFuc2ZlcnJlZCBpbiBpdHMgZW50aXJldHkgZnJvbSBgb3duZXJgIHRvIGBkZXN0aW5hdGlvbmAgYnlgdGhlIGFwcHJvdmVkIGBkZWxlZ2F0ZWAuSEFzc2V0U3RhdHVzQ2hhbmdlZAQBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAAUBPhBbiBhc3NldCBoYXMgaGFkIGl0cyBhdHRyaWJ1dGVzIGNoYW5nZWQgYnkgdGhlIGBGb3JjZWAgb3JpZ2luLlhBc3NldE1pbkJhbGFuY2VDaGFuZ2VkCAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAE8bmV3X21pbl9iYWxhbmNlWQEBKFQ6OkJhbGFuY2UAFQQBAVRoZSBtaW5fYmFsYW5jZSBvZiBhbiBhc3NldCBoYXMgYmVlbiB1cGRhdGVkIGJ5IHRoZSBhc3NldCBvd25lci4cVG91Y2hlZAwBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABDHdobwQBMFQ6OkFjY291bnRJZAABJGRlcG9zaXRvcgQBMFQ6OkFjY291bnRJZAAWBPxTb21lIGFjY291bnQgYHdob2Agd2FzIGNyZWF0ZWQgd2l0aCBhIGRlcG9zaXQgZnJvbSBgZGVwb3NpdG9yYC4cQmxvY2tlZAgBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABDHdobwQBMFQ6OkFjY291bnRJZAAXBHxTb21lIGFjY291bnQgYHdob2Agd2FzIGJsb2NrZWQuJERlcG9zaXRlZAwBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABDHdobwQBMFQ6OkFjY291bnRJZAABGGFtb3VudFkBAShUOjpCYWxhbmNlABgE3FNvbWUgYXNzZXRzIHdlcmUgZGVwb3NpdGVkIChlLmcuIGZvciB0cmFuc2FjdGlvbiBmZWVzKS4kV2l0aGRyYXduDAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50WQEBKFQ6OkJhbGFuY2UAGQQhAVNvbWUgYXNzZXRzIHdlcmUgd2l0aGRyYXduIGZyb20gdGhlIGFjY291bnQgKGUuZy4gZm9yIHRyYW5zYWN0aW9uIGZlZXMpLjxSZXNlcnZlc1VwZGF0ZWQIASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAASByZXNlcnZlc00EAUxWZWM8VDo6UmVzZXJ2ZURhdGE+ABoE2FJlc2VydmUgaW5mb3JtYXRpb24gd2FzIHNldCBvciB1cGRhdGVkIGZvciBgYXNzZXRfaWRgLjxSZXNlcnZlc1JlbW92ZWQEASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAGwS8UmVzZXJ2ZSBpbmZvcm1hdGlvbiB3YXMgcmVtb3ZlZCBmb3IgYGFzc2V0X2lkYC4wSXNzdWVkQ3JlZGl0CAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEYYW1vdW50WQEBKFQ6OkJhbGFuY2UAHATEU29tZSBhc3NldHMgd2VyZSBpc3N1ZWQgYXMgQ3JlZGl0IChubyBvd25lciB5ZXQpLjBCdXJuZWRDcmVkaXQIASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAARhhbW91bnRZAQEoVDo6QmFsYW5jZQAdBIRTb21lIGFzc2V0cyBDcmVkaXQgd2FzIGRlc3Ryb3llZC4oSXNzdWVkRGVidAgBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABGGFtb3VudFkBAShUOjpCYWxhbmNlAB4EvFNvbWUgYXNzZXRzIHdlcmUgYnVybmVkIGFuZCBhIERlYnQgd2FzIGNyZWF0ZWQuKEJ1cm5lZERlYnQIASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAARhhbW91bnRZAQEoVDo6QmFsYW5jZQAfBMxTb21lIGFzc2V0cyBEZWJ0IHdhcyBkZXN0cm95ZWQgKGFuZCBhc3NldHMgaXNzdWVkKS4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXT1CAw4cGFsbGV0X3VuaXF1ZXMYcGFsbGV0FEV2ZW50CARUAARJAAFsHENyZWF0ZWQMAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEcY3JlYXRvcgQBMFQ6OkFjY291bnRJZAABFG93bmVyBAEwVDo6QWNjb3VudElkAAAEbEEgYGNvbGxlY3Rpb25gIHdhcyBjcmVhdGVkLjBGb3JjZUNyZWF0ZWQIAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEUb3duZXIEATBUOjpBY2NvdW50SWQAAQSEQSBgY29sbGVjdGlvbmAgd2FzIGZvcmNlLWNyZWF0ZWQuJERlc3Ryb3llZAQBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAAgR0QSBgY29sbGVjdGlvbmAgd2FzIGRlc3Ryb3llZC4YSXNzdWVkDAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAADBFRBbiBgaXRlbWAgd2FzIGlzc3VlZC4sVHJhbnNmZXJyZWQQAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAABEGZyb20EATBUOjpBY2NvdW50SWQAAQh0bwQBMFQ6OkFjY291bnRJZAAEBGhBbiBgaXRlbWAgd2FzIHRyYW5zZmVycmVkLhhCdXJuZWQMAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAABFG93bmVyBAEwVDo6QWNjb3VudElkAAUEYEFuIGBpdGVtYCB3YXMgZGVzdHJveWVkLhhGcm96ZW4IAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAAGBFxTb21lIGBpdGVtYCB3YXMgZnJvemVuLhhUaGF3ZWQIAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAAHBFxTb21lIGBpdGVtYCB3YXMgdGhhd2VkLkBDb2xsZWN0aW9uRnJvemVuBAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAAIBHRTb21lIGBjb2xsZWN0aW9uYCB3YXMgZnJvemVuLkBDb2xsZWN0aW9uVGhhd2VkBAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAAJBHRTb21lIGBjb2xsZWN0aW9uYCB3YXMgdGhhd2VkLjBPd25lckNoYW5nZWQIAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEkbmV3X293bmVyBAEwVDo6QWNjb3VudElkAAoESFRoZSBvd25lciBjaGFuZ2VkLixUZWFtQ2hhbmdlZBABKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARhpc3N1ZXIEATBUOjpBY2NvdW50SWQAARRhZG1pbgQBMFQ6OkFjY291bnRJZAABHGZyZWV6ZXIEATBUOjpBY2NvdW50SWQACwRwVGhlIG1hbmFnZW1lbnQgdGVhbSBjaGFuZ2VkLkBBcHByb3ZlZFRyYW5zZmVyEAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAABIGRlbGVnYXRlBAEwVDo6QWNjb3VudElkAAwIMQFBbiBgaXRlbWAgb2YgYSBgY29sbGVjdGlvbmAgaGFzIGJlZW4gYXBwcm92ZWQgYnkgdGhlIGBvd25lcmAgZm9yIHRyYW5zZmVyIGJ5NGEgYGRlbGVnYXRlYC5EQXBwcm92YWxDYW5jZWxsZWQQAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAABFG93bmVyBAEwVDo6QWNjb3VudElkAAEgZGVsZWdhdGUEATBUOjpBY2NvdW50SWQADQgZAUFuIGFwcHJvdmFsIGZvciBhIGBkZWxlZ2F0ZWAgYWNjb3VudCB0byB0cmFuc2ZlciB0aGUgYGl0ZW1gIG9mIGFuIGl0ZW2oYGNvbGxlY3Rpb25gIHdhcyBjYW5jZWxsZWQgYnkgaXRzIGBvd25lcmAuREl0ZW1TdGF0dXNDaGFuZ2VkBAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAAOBBEBQSBgY29sbGVjdGlvbmAgaGFzIGhhZCBpdHMgYXR0cmlidXRlcyBjaGFuZ2VkIGJ5IHRoZSBgRm9yY2VgIG9yaWdpbi5UQ29sbGVjdGlvbk1ldGFkYXRhU2V0DAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGRhdGFhBAF4Qm91bmRlZFZlYzx1OCwgVDo6U3RyaW5nTGltaXQ+AAEkaXNfZnJvemVuXQEBEGJvb2wADwS0TmV3IG1ldGFkYXRhIGhhcyBiZWVuIHNldCBmb3IgYSBgY29sbGVjdGlvbmAuZENvbGxlY3Rpb25NZXRhZGF0YUNsZWFyZWQEAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkABAEtE1ldGFkYXRhIGhhcyBiZWVuIGNsZWFyZWQgZm9yIGEgYGNvbGxlY3Rpb25gLixNZXRhZGF0YVNldBABKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAEQZGF0YWEEAXhCb3VuZGVkVmVjPHU4LCBUOjpTdHJpbmdMaW1pdD4AASRpc19mcm96ZW5dAQEQYm9vbAARBJhOZXcgbWV0YWRhdGEgaGFzIGJlZW4gc2V0IGZvciBhbiBpdGVtLjxNZXRhZGF0YUNsZWFyZWQIAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAASBJhNZXRhZGF0YSBoYXMgYmVlbiBjbGVhcmVkIGZvciBhbiBpdGVtLixSZWRlcG9zaXRlZAgBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAAUBzdWNjZXNzZnVsX2l0ZW1zXQQBOFZlYzxUOjpJdGVtSWQ+ABMEmE1ldGFkYXRhIGhhcyBiZWVuIGNsZWFyZWQgZm9yIGFuIGl0ZW0uMEF0dHJpYnV0ZVNldBABKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAAShtYXliZV9pdGVt5AFET3B0aW9uPFQ6Okl0ZW1JZD4AAQxrZXmdAQFsQm91bmRlZFZlYzx1OCwgVDo6S2V5TGltaXQ+AAEUdmFsdWV8AXRCb3VuZGVkVmVjPHU4LCBUOjpWYWx1ZUxpbWl0PgAUBAUBTmV3IGF0dHJpYnV0ZSBtZXRhZGF0YSBoYXMgYmVlbiBzZXQgZm9yIGEgYGNvbGxlY3Rpb25gIG9yIGBpdGVtYC5AQXR0cmlidXRlQ2xlYXJlZAwBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAAShtYXliZV9pdGVt5AFET3B0aW9uPFQ6Okl0ZW1JZD4AAQxrZXmdAQFsQm91bmRlZFZlYzx1OCwgVDo6S2V5TGltaXQ+ABUEBQFBdHRyaWJ1dGUgbWV0YWRhdGEgaGFzIGJlZW4gY2xlYXJlZCBmb3IgYSBgY29sbGVjdGlvbmAgb3IgYGl0ZW1gLmhPd25lcnNoaXBBY2NlcHRhbmNlQ2hhbmdlZAgBDHdobwQBMFQ6OkFjY291bnRJZAABQG1heWJlX2NvbGxlY3Rpb27kAVxPcHRpb248VDo6Q29sbGVjdGlvbklkPgAWBMBPd25lcnNoaXAgYWNjZXB0YW5jZSBoYXMgY2hhbmdlZCBmb3IgYW4gYWNjb3VudC5YQ29sbGVjdGlvbk1heFN1cHBseVNldAgBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAAShtYXhfc3VwcGx5OAEMdTMyABcEpE1heCBzdXBwbHkgaGFzIGJlZW4gc2V0IGZvciBhIGNvbGxlY3Rpb24uMEl0ZW1QcmljZVNldBABKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAEUcHJpY2VZAQE8SXRlbVByaWNlPFQsIEk+AAFEd2hpdGVsaXN0ZWRfYnV5ZXKRAQFQT3B0aW9uPFQ6OkFjY291bnRJZD4AGASMVGhlIHByaWNlIHdhcyBzZXQgZm9yIHRoZSBpbnN0YW5jZS5ASXRlbVByaWNlUmVtb3ZlZAgBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkABkEnFRoZSBwcmljZSBmb3IgdGhlIGluc3RhbmNlIHdhcyByZW1vdmVkLihJdGVtQm91Z2h0FAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAARRwcmljZVkBATxJdGVtUHJpY2U8VCwgST4AARhzZWxsZXIEATBUOjpBY2NvdW50SWQAARRidXllcgQBMFQ6OkFjY291bnRJZAAaBExBbiBpdGVtIHdhcyBib3VnaHQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0+QgMLHBhbGxldF9uZnRzGHBhbGxldBRFdmVudAgEVAAESQABmBxDcmVhdGVkDAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABHGNyZWF0b3IEATBUOjpBY2NvdW50SWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAAABGxBIGBjb2xsZWN0aW9uYCB3YXMgY3JlYXRlZC4wRm9yY2VDcmVhdGVkCAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABFG93bmVyBAEwVDo6QWNjb3VudElkAAEEhEEgYGNvbGxlY3Rpb25gIHdhcyBmb3JjZS1jcmVhdGVkLiREZXN0cm95ZWQEAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAIEdEEgYGNvbGxlY3Rpb25gIHdhcyBkZXN0cm95ZWQuGElzc3VlZAwBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAEUb3duZXIEATBUOjpBY2NvdW50SWQAAwRUQW4gYGl0ZW1gIHdhcyBpc3N1ZWQuLFRyYW5zZmVycmVkEAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAARBmcm9tBAEwVDo6QWNjb3VudElkAAEIdG8EATBUOjpBY2NvdW50SWQABARoQW4gYGl0ZW1gIHdhcyB0cmFuc2ZlcnJlZC4YQnVybmVkDAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAAFBGBBbiBgaXRlbWAgd2FzIGRlc3Ryb3llZC5ISXRlbVRyYW5zZmVyTG9ja2VkCAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQABgSIQW4gYGl0ZW1gIGJlY2FtZSBub24tdHJhbnNmZXJhYmxlLlBJdGVtVHJhbnNmZXJVbmxvY2tlZAgBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAcEeEFuIGBpdGVtYCBiZWNhbWUgdHJhbnNmZXJhYmxlLlBJdGVtUHJvcGVydGllc0xvY2tlZBABKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAE0bG9ja19tZXRhZGF0YV0BARBib29sAAE8bG9ja19hdHRyaWJ1dGVzXQEBEGJvb2wACASoYGl0ZW1gIG1ldGFkYXRhIG9yIGF0dHJpYnV0ZXMgd2VyZSBsb2NrZWQuQENvbGxlY3Rpb25Mb2NrZWQEAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAkEdFNvbWUgYGNvbGxlY3Rpb25gIHdhcyBsb2NrZWQuME93bmVyQ2hhbmdlZAgBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAASRuZXdfb3duZXIEATBUOjpBY2NvdW50SWQACgRIVGhlIG93bmVyIGNoYW5nZWQuLFRlYW1DaGFuZ2VkEAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABGGlzc3VlcpEBAVBPcHRpb248VDo6QWNjb3VudElkPgABFGFkbWlukQEBUE9wdGlvbjxUOjpBY2NvdW50SWQ+AAEcZnJlZXplcpEBAVBPcHRpb248VDo6QWNjb3VudElkPgALBHBUaGUgbWFuYWdlbWVudCB0ZWFtIGNoYW5nZWQuQFRyYW5zZmVyQXBwcm92ZWQUAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAABFG93bmVyBAEwVDo6QWNjb3VudElkAAEgZGVsZWdhdGUEATBUOjpBY2NvdW50SWQAASBkZWFkbGluZeQBcE9wdGlvbjxCbG9ja051bWJlckZvcjxULCBJPj4ADAgxAUFuIGBpdGVtYCBvZiBhIGBjb2xsZWN0aW9uYCBoYXMgYmVlbiBhcHByb3ZlZCBieSB0aGUgYG93bmVyYCBmb3IgdHJhbnNmZXIgYnk0YSBgZGVsZWdhdGVgLkRBcHByb3ZhbENhbmNlbGxlZBABKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAEUb3duZXIEATBUOjpBY2NvdW50SWQAASBkZWxlZ2F0ZQQBMFQ6OkFjY291bnRJZAANCBkBQW4gYXBwcm92YWwgZm9yIGEgYGRlbGVnYXRlYCBhY2NvdW50IHRvIHRyYW5zZmVyIHRoZSBgaXRlbWAgb2YgYW4gaXRlbahgY29sbGVjdGlvbmAgd2FzIGNhbmNlbGxlZCBieSBpdHMgYG93bmVyYC5UQWxsQXBwcm92YWxzQ2FuY2VsbGVkDAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAAOBJxBbGwgYXBwcm92YWxzIG9mIGFuIGl0ZW0gZ290IGNhbmNlbGxlZC5cQ29sbGVjdGlvbkNvbmZpZ0NoYW5nZWQEAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAA8EAQFBIGBjb2xsZWN0aW9uYCBoYXMgaGFkIGl0cyBjb25maWcgY2hhbmdlZCBieSB0aGUgYEZvcmNlYCBvcmlnaW4uVENvbGxlY3Rpb25NZXRhZGF0YVNldAgBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBkYXRhRQEBeEJvdW5kZWRWZWM8dTgsIFQ6OlN0cmluZ0xpbWl0PgAQBLROZXcgbWV0YWRhdGEgaGFzIGJlZW4gc2V0IGZvciBhIGBjb2xsZWN0aW9uYC5kQ29sbGVjdGlvbk1ldGFkYXRhQ2xlYXJlZAQBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAEQS0TWV0YWRhdGEgaGFzIGJlZW4gY2xlYXJlZCBmb3IgYSBgY29sbGVjdGlvbmAuPEl0ZW1NZXRhZGF0YVNldAwBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAEQZGF0YUUBAXhCb3VuZGVkVmVjPHU4LCBUOjpTdHJpbmdMaW1pdD4AEgSYTmV3IG1ldGFkYXRhIGhhcyBiZWVuIHNldCBmb3IgYW4gaXRlbS5MSXRlbU1ldGFkYXRhQ2xlYXJlZAgBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkABMEmE1ldGFkYXRhIGhhcyBiZWVuIGNsZWFyZWQgZm9yIGFuIGl0ZW0uLFJlZGVwb3NpdGVkCAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABQHN1Y2Nlc3NmdWxfaXRlbXNdBAE4VmVjPFQ6Okl0ZW1JZD4AFAQhAVRoZSBkZXBvc2l0IGZvciBhIHNldCBvZiBgaXRlbWBzIHdpdGhpbiBhIGBjb2xsZWN0aW9uYCBoYXMgYmVlbiB1cGRhdGVkLjBBdHRyaWJ1dGVTZXQUAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEobWF5YmVfaXRlbeQBRE9wdGlvbjxUOjpJdGVtSWQ+AAEMa2V5fAFsQm91bmRlZFZlYzx1OCwgVDo6S2V5TGltaXQ+AAEUdmFsdWVFAQF0Qm91bmRlZFZlYzx1OCwgVDo6VmFsdWVMaW1pdD4AASRuYW1lc3BhY2WZBAGAQXR0cmlidXRlTmFtZXNwYWNlPFQ6OkFjY291bnRJZD4AFQQFAU5ldyBhdHRyaWJ1dGUgbWV0YWRhdGEgaGFzIGJlZW4gc2V0IGZvciBhIGBjb2xsZWN0aW9uYCBvciBgaXRlbWAuQEF0dHJpYnV0ZUNsZWFyZWQQAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEobWF5YmVfaXRlbeQBRE9wdGlvbjxUOjpJdGVtSWQ+AAEMa2V5fAFsQm91bmRlZFZlYzx1OCwgVDo6S2V5TGltaXQ+AAEkbmFtZXNwYWNlmQQBgEF0dHJpYnV0ZU5hbWVzcGFjZTxUOjpBY2NvdW50SWQ+ABYEBQFBdHRyaWJ1dGUgbWV0YWRhdGEgaGFzIGJlZW4gY2xlYXJlZCBmb3IgYSBgY29sbGVjdGlvbmAgb3IgYGl0ZW1gLmxJdGVtQXR0cmlidXRlc0FwcHJvdmFsQWRkZWQMAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAABIGRlbGVnYXRlBAEwVDo6QWNjb3VudElkABcEzEEgbmV3IGFwcHJvdmFsIHRvIG1vZGlmeSBpdGVtIGF0dHJpYnV0ZXMgd2FzIGFkZGVkLnRJdGVtQXR0cmlidXRlc0FwcHJvdmFsUmVtb3ZlZAwBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAEgZGVsZWdhdGUEATBUOjpBY2NvdW50SWQAGATUQSBuZXcgYXBwcm92YWwgdG8gbW9kaWZ5IGl0ZW0gYXR0cmlidXRlcyB3YXMgcmVtb3ZlZC5oT3duZXJzaGlwQWNjZXB0YW5jZUNoYW5nZWQIAQx3aG8EATBUOjpBY2NvdW50SWQAAUBtYXliZV9jb2xsZWN0aW9u5AFcT3B0aW9uPFQ6OkNvbGxlY3Rpb25JZD4AGQTAT3duZXJzaGlwIGFjY2VwdGFuY2UgaGFzIGNoYW5nZWQgZm9yIGFuIGFjY291bnQuWENvbGxlY3Rpb25NYXhTdXBwbHlTZXQIAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEobWF4X3N1cHBseTgBDHUzMgAaBKRNYXggc3VwcGx5IGhhcyBiZWVuIHNldCBmb3IgYSBjb2xsZWN0aW9uLnRDb2xsZWN0aW9uTWludFNldHRpbmdzVXBkYXRlZAQBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAGwSsTWludCBzZXR0aW5ncyBmb3IgYSBjb2xsZWN0aW9uIGhhZCBjaGFuZ2VkLmxOZXh0Q29sbGVjdGlvbklkSW5jcmVtZW50ZWQEARxuZXh0X2lk5AFcT3B0aW9uPFQ6OkNvbGxlY3Rpb25JZD4AHAQBAUV2ZW50IGdldHMgZW1pdHRlZCB3aGVuIHRoZSBgTmV4dENvbGxlY3Rpb25JZGAgZ2V0cyBpbmNyZW1lbnRlZC4wSXRlbVByaWNlU2V0EAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAARRwcmljZVkBATxJdGVtUHJpY2U8VCwgST4AAUR3aGl0ZWxpc3RlZF9idXllcpEBAVBPcHRpb248VDo6QWNjb3VudElkPgAdBHxUaGUgcHJpY2Ugd2FzIHNldCBmb3IgdGhlIGl0ZW0uQEl0ZW1QcmljZVJlbW92ZWQIAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAAeBIxUaGUgcHJpY2UgZm9yIHRoZSBpdGVtIHdhcyByZW1vdmVkLihJdGVtQm91Z2h0FAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAARRwcmljZVkBATxJdGVtUHJpY2U8VCwgST4AARhzZWxsZXIEATBUOjpBY2NvdW50SWQAARRidXllcgQBMFQ6OkFjY291bnRJZAAfBExBbiBpdGVtIHdhcyBib3VnaHQuHFRpcFNlbnQUAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAABGHNlbmRlcgQBMFQ6OkFjY291bnRJZAABIHJlY2VpdmVyBAEwVDo6QWNjb3VudElkAAEYYW1vdW50WQEBWERlcG9zaXRCYWxhbmNlT2Y8VCwgST4AIAQ8QSB0aXAgd2FzIHNlbnQuLFN3YXBDcmVhdGVkGAFIb2ZmZXJlZF9jb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEwb2ZmZXJlZF9pdGVtOAEkVDo6SXRlbUlkAAFIZGVzaXJlZF9jb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEwZGVzaXJlZF9pdGVt5AFET3B0aW9uPFQ6Okl0ZW1JZD4AARRwcmljZa0EAaxPcHRpb248UHJpY2VXaXRoRGlyZWN0aW9uPEl0ZW1QcmljZTxULCBJPj4+AAEgZGVhZGxpbmU4AVBCbG9ja051bWJlckZvcjxULCBJPgAhBIhBbiBgaXRlbWAgc3dhcCBpbnRlbnQgd2FzIGNyZWF0ZWQuNFN3YXBDYW5jZWxsZWQYAUhvZmZlcmVkX2NvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAATBvZmZlcmVkX2l0ZW04ASRUOjpJdGVtSWQAAUhkZXNpcmVkX2NvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAATBkZXNpcmVkX2l0ZW3kAURPcHRpb248VDo6SXRlbUlkPgABFHByaWNlrQQBrE9wdGlvbjxQcmljZVdpdGhEaXJlY3Rpb248SXRlbVByaWNlPFQsIEk+Pj4AASBkZWFkbGluZTgBUEJsb2NrTnVtYmVyRm9yPFQsIEk+ACIEXFRoZSBzd2FwIHdhcyBjYW5jZWxsZWQuLFN3YXBDbGFpbWVkIAE8c2VudF9jb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEkc2VudF9pdGVtOAEkVDo6SXRlbUlkAAE8c2VudF9pdGVtX293bmVyBAEwVDo6QWNjb3VudElkAAFMcmVjZWl2ZWRfY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABNHJlY2VpdmVkX2l0ZW04ASRUOjpJdGVtSWQAAUxyZWNlaXZlZF9pdGVtX293bmVyBAEwVDo6QWNjb3VudElkAAEUcHJpY2WtBAGsT3B0aW9uPFByaWNlV2l0aERpcmVjdGlvbjxJdGVtUHJpY2U8VCwgST4+PgABIGRlYWRsaW5lOAFQQmxvY2tOdW1iZXJGb3I8VCwgST4AIwRoVGhlIHN3YXAgaGFzIGJlZW4gY2xhaW1lZC5YUHJlU2lnbmVkQXR0cmlidXRlc1NldAwBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAEkbmFtZXNwYWNlmQQBgEF0dHJpYnV0ZU5hbWVzcGFjZTxUOjpBY2NvdW50SWQ+ACQE/E5ldyBhdHRyaWJ1dGVzIGhhdmUgYmVlbiBzZXQgZm9yIGFuIGBpdGVtYCBvZiB0aGUgYGNvbGxlY3Rpb25gLkhQYWxsZXRBdHRyaWJ1dGVTZXQQAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbeQBRE9wdGlvbjxUOjpJdGVtSWQ+AAEkYXR0cmlidXRl/QgBhFBhbGxldEF0dHJpYnV0ZXM8VDo6Q29sbGVjdGlvbklkPgABFHZhbHVlRQEBdEJvdW5kZWRWZWM8dTgsIFQ6OlZhbHVlTGltaXQ+ACUITQFBIG5ldyBhdHRyaWJ1dGUgaW4gdGhlIGBQYWxsZXRgIG5hbWVzcGFjZSB3YXMgc2V0IGZvciB0aGUgYGNvbGxlY3Rpb25gIG9yIGFuIGBpdGVtYGR3aXRoaW4gdGhhdCBgY29sbGVjdGlvbmAuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0/QgMLHBhbGxldF9uZnRzFHR5cGVzQFBhbGxldEF0dHJpYnV0ZXMEMENvbGxlY3Rpb25JZAE4AQgsVXNlZFRvQ2xhaW0EADgBMENvbGxlY3Rpb25JZAAAAEBUcmFuc2ZlckRpc2FibGVkAAEAAAEJDDRwYWxsZXRfYXNzZXRzGHBhbGxldBRFdmVudAgEVAAESQABgBxDcmVhdGVkDAEgYXNzZXRfaWQdAgEoVDo6QXNzZXRJZAABHGNyZWF0b3IEATBUOjpBY2NvdW50SWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAAABHRTb21lIGFzc2V0IGNsYXNzIHdhcyBjcmVhdGVkLhhJc3N1ZWQMASBhc3NldF9pZB0CAShUOjpBc3NldElkAAEUb3duZXIEATBUOjpBY2NvdW50SWQAARhhbW91bnRZAQEoVDo6QmFsYW5jZQABBGBTb21lIGFzc2V0cyB3ZXJlIGlzc3VlZC4sVHJhbnNmZXJyZWQQASBhc3NldF9pZB0CAShUOjpBc3NldElkAAEQZnJvbQQBMFQ6OkFjY291bnRJZAABCHRvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50WQEBKFQ6OkJhbGFuY2UAAgR0U29tZSBhc3NldHMgd2VyZSB0cmFuc2ZlcnJlZC4YQnVybmVkDAEgYXNzZXRfaWQdAgEoVDo6QXNzZXRJZAABFG93bmVyBAEwVDo6QWNjb3VudElkAAEcYmFsYW5jZVkBAShUOjpCYWxhbmNlAAMEbFNvbWUgYXNzZXRzIHdlcmUgZGVzdHJveWVkLixUZWFtQ2hhbmdlZBABIGFzc2V0X2lkHQIBKFQ6OkFzc2V0SWQAARhpc3N1ZXIEATBUOjpBY2NvdW50SWQAARRhZG1pbgQBMFQ6OkFjY291bnRJZAABHGZyZWV6ZXIEATBUOjpBY2NvdW50SWQABARwVGhlIG1hbmFnZW1lbnQgdGVhbSBjaGFuZ2VkLjBPd25lckNoYW5nZWQIASBhc3NldF9pZB0CAShUOjpBc3NldElkAAEUb3duZXIEATBUOjpBY2NvdW50SWQABQRIVGhlIG93bmVyIGNoYW5nZWQuGEZyb3plbggBIGFzc2V0X2lkHQIBKFQ6OkFzc2V0SWQAAQx3aG8EATBUOjpBY2NvdW50SWQABgR4U29tZSBhY2NvdW50IGB3aG9gIHdhcyBmcm96ZW4uGFRoYXdlZAgBIGFzc2V0X2lkHQIBKFQ6OkFzc2V0SWQAAQx3aG8EATBUOjpBY2NvdW50SWQABwR4U29tZSBhY2NvdW50IGB3aG9gIHdhcyB0aGF3ZWQuLEFzc2V0RnJvemVuBAEgYXNzZXRfaWQdAgEoVDo6QXNzZXRJZAAIBIRTb21lIGFzc2V0IGBhc3NldF9pZGAgd2FzIGZyb3plbi4sQXNzZXRUaGF3ZWQEASBhc3NldF9pZB0CAShUOjpBc3NldElkAAkEhFNvbWUgYXNzZXQgYGFzc2V0X2lkYCB3YXMgdGhhd2VkLkRBY2NvdW50c0Rlc3Ryb3llZAwBIGFzc2V0X2lkHQIBKFQ6OkFzc2V0SWQAAUhhY2NvdW50c19kZXN0cm95ZWQ4AQx1MzIAAUhhY2NvdW50c19yZW1haW5pbmc4AQx1MzIACgSgQWNjb3VudHMgd2VyZSBkZXN0cm95ZWQgZm9yIGdpdmVuIGFzc2V0LkhBcHByb3ZhbHNEZXN0cm95ZWQMASBhc3NldF9pZB0CAShUOjpBc3NldElkAAFMYXBwcm92YWxzX2Rlc3Ryb3llZDgBDHUzMgABTGFwcHJvdmFsc19yZW1haW5pbmc4AQx1MzIACwSkQXBwcm92YWxzIHdlcmUgZGVzdHJveWVkIGZvciBnaXZlbiBhc3NldC5IRGVzdHJ1Y3Rpb25TdGFydGVkBAEgYXNzZXRfaWQdAgEoVDo6QXNzZXRJZAAMBNBBbiBhc3NldCBjbGFzcyBpcyBpbiB0aGUgcHJvY2VzcyBvZiBiZWluZyBkZXN0cm95ZWQuJERlc3Ryb3llZAQBIGFzc2V0X2lkHQIBKFQ6OkFzc2V0SWQADQR0QW4gYXNzZXQgY2xhc3Mgd2FzIGRlc3Ryb3llZC4wRm9yY2VDcmVhdGVkCAEgYXNzZXRfaWQdAgEoVDo6QXNzZXRJZAABFG93bmVyBAEwVDo6QWNjb3VudElkAA4EjFNvbWUgYXNzZXQgY2xhc3Mgd2FzIGZvcmNlLWNyZWF0ZWQuLE1ldGFkYXRhU2V0FAEgYXNzZXRfaWQdAgEoVDo6QXNzZXRJZAABEG5hbWUYARxWZWM8dTg+AAEYc3ltYm9sGAEcVmVjPHU4PgABIGRlY2ltYWxzDAEIdTgAASRpc19mcm96ZW5dAQEQYm9vbAAPBJxOZXcgbWV0YWRhdGEgaGFzIGJlZW4gc2V0IGZvciBhbiBhc3NldC48TWV0YWRhdGFDbGVhcmVkBAEgYXNzZXRfaWQdAgEoVDo6QXNzZXRJZAAQBJxNZXRhZGF0YSBoYXMgYmVlbiBjbGVhcmVkIGZvciBhbiBhc3NldC5AQXBwcm92ZWRUcmFuc2ZlchABIGFzc2V0X2lkHQIBKFQ6OkFzc2V0SWQAARhzb3VyY2UEATBUOjpBY2NvdW50SWQAASBkZWxlZ2F0ZQQBMFQ6OkFjY291bnRJZAABGGFtb3VudFkBAShUOjpCYWxhbmNlABEEMQEoQWRkaXRpb25hbCkgZnVuZHMgaGF2ZSBiZWVuIGFwcHJvdmVkIGZvciB0cmFuc2ZlciB0byBhIGRlc3RpbmF0aW9uIGFjY291bnQuREFwcHJvdmFsQ2FuY2VsbGVkDAEgYXNzZXRfaWQdAgEoVDo6QXNzZXRJZAABFG93bmVyBAEwVDo6QWNjb3VudElkAAEgZGVsZWdhdGUEATBUOjpBY2NvdW50SWQAEgTwQW4gYXBwcm92YWwgZm9yIGFjY291bnQgYGRlbGVnYXRlYCB3YXMgY2FuY2VsbGVkIGJ5IGBvd25lcmAuTFRyYW5zZmVycmVkQXBwcm92ZWQUASBhc3NldF9pZB0CAShUOjpBc3NldElkAAEUb3duZXIEATBUOjpBY2NvdW50SWQAASBkZWxlZ2F0ZQQBMFQ6OkFjY291bnRJZAABLGRlc3RpbmF0aW9uBAEwVDo6QWNjb3VudElkAAEYYW1vdW50WQEBKFQ6OkJhbGFuY2UAEwgxAUFuIGBhbW91bnRgIHdhcyB0cmFuc2ZlcnJlZCBpbiBpdHMgZW50aXJldHkgZnJvbSBgb3duZXJgIHRvIGBkZXN0aW5hdGlvbmAgYnlgdGhlIGFwcHJvdmVkIGBkZWxlZ2F0ZWAuSEFzc2V0U3RhdHVzQ2hhbmdlZAQBIGFzc2V0X2lkHQIBKFQ6OkFzc2V0SWQAFAT4QW4gYXNzZXQgaGFzIGhhZCBpdHMgYXR0cmlidXRlcyBjaGFuZ2VkIGJ5IHRoZSBgRm9yY2VgIG9yaWdpbi5YQXNzZXRNaW5CYWxhbmNlQ2hhbmdlZAgBIGFzc2V0X2lkHQIBKFQ6OkFzc2V0SWQAATxuZXdfbWluX2JhbGFuY2VZAQEoVDo6QmFsYW5jZQAVBAEBVGhlIG1pbl9iYWxhbmNlIG9mIGFuIGFzc2V0IGhhcyBiZWVuIHVwZGF0ZWQgYnkgdGhlIGFzc2V0IG93bmVyLhxUb3VjaGVkDAEgYXNzZXRfaWQdAgEoVDo6QXNzZXRJZAABDHdobwQBMFQ6OkFjY291bnRJZAABJGRlcG9zaXRvcgQBMFQ6OkFjY291bnRJZAAWBPxTb21lIGFjY291bnQgYHdob2Agd2FzIGNyZWF0ZWQgd2l0aCBhIGRlcG9zaXQgZnJvbSBgZGVwb3NpdG9yYC4cQmxvY2tlZAgBIGFzc2V0X2lkHQIBKFQ6OkFzc2V0SWQAAQx3aG8EATBUOjpBY2NvdW50SWQAFwR8U29tZSBhY2NvdW50IGB3aG9gIHdhcyBibG9ja2VkLiREZXBvc2l0ZWQMASBhc3NldF9pZB0CAShUOjpBc3NldElkAAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50WQEBKFQ6OkJhbGFuY2UAGATcU29tZSBhc3NldHMgd2VyZSBkZXBvc2l0ZWQgKGUuZy4gZm9yIHRyYW5zYWN0aW9uIGZlZXMpLiRXaXRoZHJhd24MASBhc3NldF9pZB0CAShUOjpBc3NldElkAAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50WQEBKFQ6OkJhbGFuY2UAGQQhAVNvbWUgYXNzZXRzIHdlcmUgd2l0aGRyYXduIGZyb20gdGhlIGFjY291bnQgKGUuZy4gZm9yIHRyYW5zYWN0aW9uIGZlZXMpLjxSZXNlcnZlc1VwZGF0ZWQIASBhc3NldF9pZB0CAShUOjpBc3NldElkAAEgcmVzZXJ2ZXPVBAFMVmVjPFQ6OlJlc2VydmVEYXRhPgAaBNhSZXNlcnZlIGluZm9ybWF0aW9uIHdhcyBzZXQgb3IgdXBkYXRlZCBmb3IgYGFzc2V0X2lkYC48UmVzZXJ2ZXNSZW1vdmVkBAEgYXNzZXRfaWQdAgEoVDo6QXNzZXRJZAAbBLxSZXNlcnZlIGluZm9ybWF0aW9uIHdhcyByZW1vdmVkIGZvciBgYXNzZXRfaWRgLjBJc3N1ZWRDcmVkaXQIASBhc3NldF9pZB0CAShUOjpBc3NldElkAAEYYW1vdW50WQEBKFQ6OkJhbGFuY2UAHATEU29tZSBhc3NldHMgd2VyZSBpc3N1ZWQgYXMgQ3JlZGl0IChubyBvd25lciB5ZXQpLjBCdXJuZWRDcmVkaXQIASBhc3NldF9pZB0CAShUOjpBc3NldElkAAEYYW1vdW50WQEBKFQ6OkJhbGFuY2UAHQSEU29tZSBhc3NldHMgQ3JlZGl0IHdhcyBkZXN0cm95ZWQuKElzc3VlZERlYnQIASBhc3NldF9pZB0CAShUOjpBc3NldElkAAEYYW1vdW50WQEBKFQ6OkJhbGFuY2UAHgS8U29tZSBhc3NldHMgd2VyZSBidXJuZWQgYW5kIGEgRGVidCB3YXMgY3JlYXRlZC4oQnVybmVkRGVidAgBIGFzc2V0X2lkHQIBKFQ6OkFzc2V0SWQAARhhbW91bnRZAQEoVDo6QmFsYW5jZQAfBMxTb21lIGFzc2V0cyBEZWJ0IHdhcyBkZXN0cm95ZWQgKGFuZCBhc3NldHMgaXNzdWVkKS4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXQFCQw0cGFsbGV0X2Fzc2V0cxhwYWxsZXQURXZlbnQIBFQABEkAAYAcQ3JlYXRlZAwBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABHGNyZWF0b3IEATBUOjpBY2NvdW50SWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAAABHRTb21lIGFzc2V0IGNsYXNzIHdhcyBjcmVhdGVkLhhJc3N1ZWQMASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAABGGFtb3VudFkBAShUOjpCYWxhbmNlAAEEYFNvbWUgYXNzZXRzIHdlcmUgaXNzdWVkLixUcmFuc2ZlcnJlZBABIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABEGZyb20EATBUOjpBY2NvdW50SWQAAQh0bwQBMFQ6OkFjY291bnRJZAABGGFtb3VudFkBAShUOjpCYWxhbmNlAAIEdFNvbWUgYXNzZXRzIHdlcmUgdHJhbnNmZXJyZWQuGEJ1cm5lZAwBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABFG93bmVyBAEwVDo6QWNjb3VudElkAAEcYmFsYW5jZVkBAShUOjpCYWxhbmNlAAMEbFNvbWUgYXNzZXRzIHdlcmUgZGVzdHJveWVkLixUZWFtQ2hhbmdlZBABIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABGGlzc3VlcgQBMFQ6OkFjY291bnRJZAABFGFkbWluBAEwVDo6QWNjb3VudElkAAEcZnJlZXplcgQBMFQ6OkFjY291bnRJZAAEBHBUaGUgbWFuYWdlbWVudCB0ZWFtIGNoYW5nZWQuME93bmVyQ2hhbmdlZAgBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABFG93bmVyBAEwVDo6QWNjb3VudElkAAUESFRoZSBvd25lciBjaGFuZ2VkLhhGcm96ZW4IASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAAQx3aG8EATBUOjpBY2NvdW50SWQABgR4U29tZSBhY2NvdW50IGB3aG9gIHdhcyBmcm96ZW4uGFRoYXdlZAgBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABDHdobwQBMFQ6OkFjY291bnRJZAAHBHhTb21lIGFjY291bnQgYHdob2Agd2FzIHRoYXdlZC4sQXNzZXRGcm96ZW4EASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQACASEU29tZSBhc3NldCBgYXNzZXRfaWRgIHdhcyBmcm96ZW4uLEFzc2V0VGhhd2VkBAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAkEhFNvbWUgYXNzZXQgYGFzc2V0X2lkYCB3YXMgdGhhd2VkLkRBY2NvdW50c0Rlc3Ryb3llZAwBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABSGFjY291bnRzX2Rlc3Ryb3llZDgBDHUzMgABSGFjY291bnRzX3JlbWFpbmluZzgBDHUzMgAKBKBBY2NvdW50cyB3ZXJlIGRlc3Ryb3llZCBmb3IgZ2l2ZW4gYXNzZXQuSEFwcHJvdmFsc0Rlc3Ryb3llZAwBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABTGFwcHJvdmFsc19kZXN0cm95ZWQ4AQx1MzIAAUxhcHByb3ZhbHNfcmVtYWluaW5nOAEMdTMyAAsEpEFwcHJvdmFscyB3ZXJlIGRlc3Ryb3llZCBmb3IgZ2l2ZW4gYXNzZXQuSERlc3RydWN0aW9uU3RhcnRlZAQBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAAMBNBBbiBhc3NldCBjbGFzcyBpcyBpbiB0aGUgcHJvY2VzcyBvZiBiZWluZyBkZXN0cm95ZWQuJERlc3Ryb3llZAQBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAANBHRBbiBhc3NldCBjbGFzcyB3YXMgZGVzdHJveWVkLjBGb3JjZUNyZWF0ZWQIASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAAOBIxTb21lIGFzc2V0IGNsYXNzIHdhcyBmb3JjZS1jcmVhdGVkLixNZXRhZGF0YVNldBQBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABEG5hbWUYARxWZWM8dTg+AAEYc3ltYm9sGAEcVmVjPHU4PgABIGRlY2ltYWxzDAEIdTgAASRpc19mcm96ZW5dAQEQYm9vbAAPBJxOZXcgbWV0YWRhdGEgaGFzIGJlZW4gc2V0IGZvciBhbiBhc3NldC48TWV0YWRhdGFDbGVhcmVkBAEgYXNzZXRfaWQ4AShUOjpBc3NldElkABAEnE1ldGFkYXRhIGhhcyBiZWVuIGNsZWFyZWQgZm9yIGFuIGFzc2V0LkBBcHByb3ZlZFRyYW5zZmVyEAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEYc291cmNlBAEwVDo6QWNjb3VudElkAAEgZGVsZWdhdGUEATBUOjpBY2NvdW50SWQAARhhbW91bnRZAQEoVDo6QmFsYW5jZQARBDEBKEFkZGl0aW9uYWwpIGZ1bmRzIGhhdmUgYmVlbiBhcHByb3ZlZCBmb3IgdHJhbnNmZXIgdG8gYSBkZXN0aW5hdGlvbiBhY2NvdW50LkRBcHByb3ZhbENhbmNlbGxlZAwBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABFG93bmVyBAEwVDo6QWNjb3VudElkAAEgZGVsZWdhdGUEATBUOjpBY2NvdW50SWQAEgTwQW4gYXBwcm92YWwgZm9yIGFjY291bnQgYGRlbGVnYXRlYCB3YXMgY2FuY2VsbGVkIGJ5IGBvd25lcmAuTFRyYW5zZmVycmVkQXBwcm92ZWQUASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAABIGRlbGVnYXRlBAEwVDo6QWNjb3VudElkAAEsZGVzdGluYXRpb24EATBUOjpBY2NvdW50SWQAARhhbW91bnRZAQEoVDo6QmFsYW5jZQATCDEBQW4gYGFtb3VudGAgd2FzIHRyYW5zZmVycmVkIGluIGl0cyBlbnRpcmV0eSBmcm9tIGBvd25lcmAgdG8gYGRlc3RpbmF0aW9uYCBieWB0aGUgYXBwcm92ZWQgYGRlbGVnYXRlYC5IQXNzZXRTdGF0dXNDaGFuZ2VkBAEgYXNzZXRfaWQ4AShUOjpBc3NldElkABQE+EFuIGFzc2V0IGhhcyBoYWQgaXRzIGF0dHJpYnV0ZXMgY2hhbmdlZCBieSB0aGUgYEZvcmNlYCBvcmlnaW4uWEFzc2V0TWluQmFsYW5jZUNoYW5nZWQIASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAATxuZXdfbWluX2JhbGFuY2VZAQEoVDo6QmFsYW5jZQAVBAEBVGhlIG1pbl9iYWxhbmNlIG9mIGFuIGFzc2V0IGhhcyBiZWVuIHVwZGF0ZWQgYnkgdGhlIGFzc2V0IG93bmVyLhxUb3VjaGVkDAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEMd2hvBAEwVDo6QWNjb3VudElkAAEkZGVwb3NpdG9yBAEwVDo6QWNjb3VudElkABYE/FNvbWUgYWNjb3VudCBgd2hvYCB3YXMgY3JlYXRlZCB3aXRoIGEgZGVwb3NpdCBmcm9tIGBkZXBvc2l0b3JgLhxCbG9ja2VkCAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEMd2hvBAEwVDo6QWNjb3VudElkABcEfFNvbWUgYWNjb3VudCBgd2hvYCB3YXMgYmxvY2tlZC4kRGVwb3NpdGVkDAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50WQEBKFQ6OkJhbGFuY2UAGATcU29tZSBhc3NldHMgd2VyZSBkZXBvc2l0ZWQgKGUuZy4gZm9yIHRyYW5zYWN0aW9uIGZlZXMpLiRXaXRoZHJhd24MASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnRZAQEoVDo6QmFsYW5jZQAZBCEBU29tZSBhc3NldHMgd2VyZSB3aXRoZHJhd24gZnJvbSB0aGUgYWNjb3VudCAoZS5nLiBmb3IgdHJhbnNhY3Rpb24gZmVlcykuPFJlc2VydmVzVXBkYXRlZAgBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABIHJlc2VydmVzTQQBTFZlYzxUOjpSZXNlcnZlRGF0YT4AGgTYUmVzZXJ2ZSBpbmZvcm1hdGlvbiB3YXMgc2V0IG9yIHVwZGF0ZWQgZm9yIGBhc3NldF9pZGAuPFJlc2VydmVzUmVtb3ZlZAQBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAAbBLxSZXNlcnZlIGluZm9ybWF0aW9uIHdhcyByZW1vdmVkIGZvciBgYXNzZXRfaWRgLjBJc3N1ZWRDcmVkaXQIASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAARhhbW91bnRZAQEoVDo6QmFsYW5jZQAcBMRTb21lIGFzc2V0cyB3ZXJlIGlzc3VlZCBhcyBDcmVkaXQgKG5vIG93bmVyIHlldCkuMEJ1cm5lZENyZWRpdAgBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABGGFtb3VudFkBAShUOjpCYWxhbmNlAB0EhFNvbWUgYXNzZXRzIENyZWRpdCB3YXMgZGVzdHJveWVkLihJc3N1ZWREZWJ0CAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEYYW1vdW50WQEBKFQ6OkJhbGFuY2UAHgS8U29tZSBhc3NldHMgd2VyZSBidXJuZWQgYW5kIGEgRGVidCB3YXMgY3JlYXRlZC4oQnVybmVkRGVidAgBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABGGFtb3VudFkBAShUOjpCYWxhbmNlAB8EzFNvbWUgYXNzZXRzIERlYnQgd2FzIGRlc3Ryb3llZCAoYW5kIGFzc2V0cyBpc3N1ZWQpLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldAkJDFxwYWxsZXRfYXNzZXRfY29udmVyc2lvbhhwYWxsZXQURXZlbnQEBFQAARgsUG9vbENyZWF0ZWQQARxjcmVhdG9yBAEwVDo6QWNjb3VudElkBIhUaGUgYWNjb3VudCB0aGF0IGNyZWF0ZWQgdGhlIHBvb2wuARxwb29sX2lkDQkBJFQ6OlBvb2xJZAhJAVRoZSBwb29sIGlkIGFzc29jaWF0ZWQgd2l0aCB0aGUgcG9vbC4gTm90ZSB0aGF0IHRoZSBvcmRlciBvZiB0aGUgYXNzZXRzIG1heSBub3QgYmX0dGhlIHNhbWUgYXMgdGhlIG9yZGVyIHNwZWNpZmllZCBpbiB0aGUgY3JlYXRlIHBvb2wgZXh0cmluc2ljLgEwcG9vbF9hY2NvdW50BAEwVDo6QWNjb3VudElkBGxUaGUgYWNjb3VudCBJRCBvZiB0aGUgcG9vbC4BIGxwX3Rva2VuOAE4VDo6UG9vbEFzc2V0SWQIQQFUaGUgaWQgb2YgdGhlIGxpcXVpZGl0eSB0b2tlbnMgdGhhdCB3aWxsIGJlIG1pbnRlZCB3aGVuIGFzc2V0cyBhcmUgYWRkZWQgdG8gdGhpcxRwb29sLgAEHQFBIHN1Y2Nlc3NmdWwgY2FsbCBvZiB0aGUgYENyZWF0ZVBvb2xgIGV4dHJpbnNpYyB3aWxsIGNyZWF0ZSB0aGlzIGV2ZW50LjhMaXF1aWRpdHlBZGRlZBwBDHdobwQBMFQ6OkFjY291bnRJZAS4VGhlIGFjY291bnQgdGhhdCB0aGUgbGlxdWlkaXR5IHdhcyB0YWtlbiBmcm9tLgEcbWludF90bwQBMFQ6OkFjY291bnRJZATUVGhlIGFjY291bnQgdGhhdCB0aGUgbGlxdWlkaXR5IHRva2VucyB3ZXJlIG1pbnRlZCB0by4BHHBvb2xfaWQNCQEkVDo6UG9vbElkBOBUaGUgcG9vbCBpZCBvZiB0aGUgcG9vbCB0aGF0IHRoZSBsaXF1aWRpdHkgd2FzIGFkZGVkIHRvLgFAYW1vdW50MV9wcm92aWRlZFkBAShUOjpCYWxhbmNlBORUaGUgYW1vdW50IG9mIHRoZSBmaXJzdCBhc3NldCB0aGF0IHdhcyBhZGRlZCB0byB0aGUgcG9vbC4BQGFtb3VudDJfcHJvdmlkZWRZAQEoVDo6QmFsYW5jZQToVGhlIGFtb3VudCBvZiB0aGUgc2Vjb25kIGFzc2V0IHRoYXQgd2FzIGFkZGVkIHRvIHRoZSBwb29sLgEgbHBfdG9rZW44AThUOjpQb29sQXNzZXRJZAScVGhlIGlkIG9mIHRoZSBscCB0b2tlbiB0aGF0IHdhcyBtaW50ZWQuATxscF90b2tlbl9taW50ZWRZAQEoVDo6QmFsYW5jZQTQVGhlIGFtb3VudCBvZiBscCB0b2tlbnMgdGhhdCB3ZXJlIG1pbnRlZCBvZiB0aGF0IGlkLgEEJQFBIHN1Y2Nlc3NmdWwgY2FsbCBvZiB0aGUgYEFkZExpcXVpZGl0eWAgZXh0cmluc2ljIHdpbGwgY3JlYXRlIHRoaXMgZXZlbnQuQExpcXVpZGl0eVJlbW92ZWQgAQx3aG8EATBUOjpBY2NvdW50SWQE3FRoZSBhY2NvdW50IHRoYXQgdGhlIGxpcXVpZGl0eSB0b2tlbnMgd2VyZSBidXJuZWQgZnJvbS4BLHdpdGhkcmF3X3RvBAEwVDo6QWNjb3VudElkBMBUaGUgYWNjb3VudCB0aGF0IHRoZSBhc3NldHMgd2VyZSB0cmFuc2ZlcnJlZCB0by4BHHBvb2xfaWQNCQEkVDo6UG9vbElkBMBUaGUgcG9vbCBpZCB0aGF0IHRoZSBsaXF1aWRpdHkgd2FzIHJlbW92ZWQgZnJvbS4BHGFtb3VudDFZAQEoVDo6QmFsYW5jZQT0VGhlIGFtb3VudCBvZiB0aGUgZmlyc3QgYXNzZXQgdGhhdCB3YXMgcmVtb3ZlZCBmcm9tIHRoZSBwb29sLgEcYW1vdW50MlkBAShUOjpCYWxhbmNlBPhUaGUgYW1vdW50IG9mIHRoZSBzZWNvbmQgYXNzZXQgdGhhdCB3YXMgcmVtb3ZlZCBmcm9tIHRoZSBwb29sLgEgbHBfdG9rZW44AThUOjpQb29sQXNzZXRJZAScVGhlIGlkIG9mIHRoZSBscCB0b2tlbiB0aGF0IHdhcyBidXJuZWQuATxscF90b2tlbl9idXJuZWRZAQEoVDo6QmFsYW5jZQTQVGhlIGFtb3VudCBvZiBscCB0b2tlbnMgdGhhdCB3ZXJlIGJ1cm5lZCBvZiB0aGF0IGlkLgE4d2l0aGRyYXdhbF9mZWURCQEcUGVybWlsbAR0TGlxdWlkaXR5IHdpdGhkcmF3YWwgZmVlICglKS4CBDEBQSBzdWNjZXNzZnVsIGNhbGwgb2YgdGhlIGBSZW1vdmVMaXF1aWRpdHlgIGV4dHJpbnNpYyB3aWxsIGNyZWF0ZSB0aGlzIGV2ZW50LjBTd2FwRXhlY3V0ZWQUAQx3aG8EATBUOjpBY2NvdW50SWQEtFdoaWNoIGFjY291bnQgd2FzIHRoZSBpbnN0aWdhdG9yIG9mIHRoZSBzd2FwLgEcc2VuZF90bwQBMFQ6OkFjY291bnRJZATAVGhlIGFjY291bnQgdGhhdCB0aGUgYXNzZXRzIHdlcmUgdHJhbnNmZXJyZWQgdG8uASRhbW91bnRfaW5ZAQEoVDo6QmFsYW5jZQS8VGhlIGFtb3VudCBvZiB0aGUgZmlyc3QgYXNzZXQgdGhhdCB3YXMgc3dhcHBlZC4BKGFtb3VudF9vdXRZAQEoVDo6QmFsYW5jZQTEVGhlIGFtb3VudCBvZiB0aGUgc2Vjb25kIGFzc2V0IHRoYXQgd2FzIHJlY2VpdmVkLgEQcGF0aBUJAThCYWxhbmNlUGF0aDxUPgj8VGhlIHJvdXRlIG9mIGFzc2V0IElEcyB3aXRoIGFtb3VudHMgdGhhdCB0aGUgc3dhcCB3ZW50IHRocm91Z2gu7EUuZy4gKEEsIGFtb3VudF9pbikgLT4gKERvdCwgYW1vdW50X291dCkgLT4gKEIsIGFtb3VudF9vdXQpAwg1AUFzc2V0cyBoYXZlIGJlZW4gY29udmVydGVkIGZyb20gb25lIHRvIGFub3RoZXIuIEJvdGggYFN3YXBFeGFjdFRva2VuRm9yVG9rZW5g2GFuZCBgU3dhcFRva2VuRm9yRXhhY3RUb2tlbmAgd2lsbCBnZW5lcmF0ZSB0aGlzIGV2ZW50LkhTd2FwQ3JlZGl0RXhlY3V0ZWQMASRhbW91bnRfaW5ZAQEoVDo6QmFsYW5jZQS8VGhlIGFtb3VudCBvZiB0aGUgZmlyc3QgYXNzZXQgdGhhdCB3YXMgc3dhcHBlZC4BKGFtb3VudF9vdXRZAQEoVDo6QmFsYW5jZQTEVGhlIGFtb3VudCBvZiB0aGUgc2Vjb25kIGFzc2V0IHRoYXQgd2FzIHJlY2VpdmVkLgEQcGF0aBUJAThCYWxhbmNlUGF0aDxUPgj8VGhlIHJvdXRlIG9mIGFzc2V0IElEcyB3aXRoIGFtb3VudHMgdGhhdCB0aGUgc3dhcCB3ZW50IHRocm91Z2gu7EUuZy4gKEEsIGFtb3VudF9pbikgLT4gKERvdCwgYW1vdW50X291dCkgLT4gKEIsIGFtb3VudF9vdXQpBAS8QXNzZXRzIGhhdmUgYmVlbiBjb252ZXJ0ZWQgZnJvbSBvbmUgdG8gYW5vdGhlci4cVG91Y2hlZAgBHHBvb2xfaWQNCQEkVDo6UG9vbElkBExUaGUgSUQgb2YgdGhlIHBvb2wuAQx3aG8EATBUOjpBY2NvdW50SWQEhFRoZSBhY2NvdW50IGluaXRpYXRpbmcgdGhlIHRvdWNoLgUEDQFQb29sIGhhcyBiZWVuIHRvdWNoZWQgaW4gb3JkZXIgdG8gZnVsZmlsbCBvcGVyYXRpb25hbCByZXF1aXJlbWVudHMuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0DQkAAAQIHQIdAgARCQw0c3BfYXJpdGhtZXRpYyhwZXJfdGhpbmdzHFBlcm1pbGwAAAQAOAEMdTMyAAAVCQAAAhkJABkJAAAECB0CWQEAHQkMVHBhbGxldF9hc3NldHNfZnJlZXplchhwYWxsZXQURXZlbnQIBFQABEkAAQgYRnJvemVuDAEMd2hvBAEwVDo6QWNjb3VudElkAAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEYYW1vdW50WQEBKFQ6OkJhbGFuY2UAAAAYVGhhd2VkDAEMd2hvBAEwVDo6QWNjb3VudElkAAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEYYW1vdW50WQEBKFQ6OkJhbGFuY2UAAQAEfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXQhCQxQcGFsbGV0X2Fzc2V0c19ob2xkZXIYcGFsbGV0FEV2ZW50CARUAARJAAEMEEhlbGQQAQx3aG8EATBUOjpBY2NvdW50SWQAASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAARhyZWFzb25lCAFQVDo6UnVudGltZUhvbGRSZWFzb24AARhhbW91bnRZAQEoVDo6QmFsYW5jZQAABMRgd2hvYHMgYmFsYW5jZSBvbiBob2xkIHdhcyBpbmNyZWFzZWQgYnkgYGFtb3VudGAuIFJlbGVhc2VkEAEMd2hvBAEwVDo6QWNjb3VudElkAAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEYcmVhc29uZQgBUFQ6OlJ1bnRpbWVIb2xkUmVhc29uAAEYYW1vdW50WQEBKFQ6OkJhbGFuY2UAAQTEYHdob2BzIGJhbGFuY2Ugb24gaG9sZCB3YXMgZGVjcmVhc2VkIGJ5IGBhbW91bnRgLhhCdXJuZWQQAQx3aG8EATBUOjpBY2NvdW50SWQAASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAARhyZWFzb25lCAFQVDo6UnVudGltZUhvbGRSZWFzb24AARhhbW91bnRZAQEoVDo6QmFsYW5jZQACBLhgd2hvYHMgYmFsYW5jZSBvbiBob2xkIHdhcyBidXJuZWQgYnkgYGFtb3VudGAuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0JQkMPHBhbGxldF90cmVhc3VyeRhwYWxsZXQURXZlbnQIBFQABEkAATAgU3BlbmRpbmcEAUBidWRnZXRfcmVtYWluaW5nWQEBPEJhbGFuY2VPZjxULCBJPgAABORXZSBoYXZlIGVuZGVkIGEgc3BlbmQgcGVyaW9kIGFuZCB3aWxsIG5vdyBhbGxvY2F0ZSBmdW5kcy4cQXdhcmRlZAwBOHByb3Bvc2FsX2luZGV4OAE0UHJvcG9zYWxJbmRleAABFGF3YXJkWQEBPEJhbGFuY2VPZjxULCBJPgABHGFjY291bnQEATBUOjpBY2NvdW50SWQAAQR8U29tZSBmdW5kcyBoYXZlIGJlZW4gYWxsb2NhdGVkLhRCdXJudAQBLGJ1cm50X2Z1bmRzWQEBPEJhbGFuY2VPZjxULCBJPgACBIhTb21lIG9mIG91ciBmdW5kcyBoYXZlIGJlZW4gYnVybnQuIFJvbGxvdmVyBAFAcm9sbG92ZXJfYmFsYW5jZVkBATxCYWxhbmNlT2Y8VCwgST4AAwQtAVNwZW5kaW5nIGhhcyBmaW5pc2hlZDsgdGhpcyBpcyB0aGUgYW1vdW50IHRoYXQgcm9sbHMgb3ZlciB1bnRpbCBuZXh0IHNwZW5kLhxEZXBvc2l0BAEUdmFsdWVZAQE8QmFsYW5jZU9mPFQsIEk+AAQEfFNvbWUgZnVuZHMgaGF2ZSBiZWVuIGRlcG9zaXRlZC40U3BlbmRBcHByb3ZlZAwBOHByb3Bvc2FsX2luZGV4OAE0UHJvcG9zYWxJbmRleAABGGFtb3VudFkBATxCYWxhbmNlT2Y8VCwgST4AASxiZW5lZmljaWFyeQQBMFQ6OkFjY291bnRJZAAFBJxBIG5ldyBzcGVuZCBwcm9wb3NhbCBoYXMgYmVlbiBhcHByb3ZlZC48VXBkYXRlZEluYWN0aXZlCAEscmVhY3RpdmF0ZWRZAQE8QmFsYW5jZU9mPFQsIEk+AAEsZGVhY3RpdmF0ZWRZAQE8QmFsYW5jZU9mPFQsIEk+AAYEzFRoZSBpbmFjdGl2ZSBmdW5kcyBvZiB0aGUgcGFsbGV0IGhhdmUgYmVlbiB1cGRhdGVkLkhBc3NldFNwZW5kQXBwcm92ZWQYARRpbmRleDgBKFNwZW5kSW5kZXgAAShhc3NldF9raW5k6QQBMFQ6OkFzc2V0S2luZAABGGFtb3VudFkBAVBBc3NldEJhbGFuY2VPZjxULCBJPgABLGJlbmVmaWNpYXJ57QQBOFQ6OkJlbmVmaWNpYXJ5AAEodmFsaWRfZnJvbTgBUEJsb2NrTnVtYmVyRm9yPFQsIEk+AAEkZXhwaXJlX2F0OAFQQmxvY2tOdW1iZXJGb3I8VCwgST4ABwS0QSBuZXcgYXNzZXQgc3BlbmQgcHJvcG9zYWwgaGFzIGJlZW4gYXBwcm92ZWQuQEFzc2V0U3BlbmRWb2lkZWQEARRpbmRleDgBKFNwZW5kSW5kZXgACAR0QW4gYXBwcm92ZWQgc3BlbmQgd2FzIHZvaWRlZC4QUGFpZAgBFGluZGV4OAEoU3BlbmRJbmRleAABKHBheW1lbnRfaWQoAWQ8VDo6UGF5bWFzdGVyIGFzIFBheT46OklkAAkETEEgcGF5bWVudCBoYXBwZW5lZC40UGF5bWVudEZhaWxlZAgBFGluZGV4OAEoU3BlbmRJbmRleAABKHBheW1lbnRfaWQoAWQ8VDo6UGF5bWFzdGVyIGFzIFBheT46OklkAAoEkEEgcGF5bWVudCBmYWlsZWQgYW5kIGNhbiBiZSByZXRyaWVkLjhTcGVuZFByb2Nlc3NlZAQBFGluZGV4OAEoU3BlbmRJbmRleAALCE0BQSBzcGVuZCB3YXMgcHJvY2Vzc2VkIGFuZCByZW1vdmVkIGZyb20gdGhlIHN0b3JhZ2UuIEl0IG1pZ2h0IGhhdmUgYmVlbiBzdWNjZXNzZnVsbHlwcGFpZCBvciBpdCBtYXkgaGF2ZSBleHBpcmVkLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldCkJDGBwYWxsZXRfY29udmljdGlvbl92b3RpbmcYcGFsbGV0FEV2ZW50CARUAARJAAEUJERlbGVnYXRlZAwABAEwVDo6QWNjb3VudElkAAAEATBUOjpBY2NvdW50SWQAAO0DATRDbGFzc09mPFQsIEk+AAAEHQFBbiBhY2NvdW50IGhhcyBkZWxlZ2F0ZWQgdGhlaXIgdm90ZSB0byBhbm90aGVyIGFjY291bnQuIFxbd2hvLCB0YXJnZXRcXSxVbmRlbGVnYXRlZAgABAEwVDo6QWNjb3VudElkAADtAwE0Q2xhc3NPZjxULCBJPgABBPRBbiBcW2FjY291bnRcXSBoYXMgY2FuY2VsbGVkIGEgcHJldmlvdXMgZGVsZWdhdGlvbiBvcGVyYXRpb24uFFZvdGVkDAEMd2hvBAEwVDo6QWNjb3VudElkAAEQdm90ZfUEAXBBY2NvdW50Vm90ZTxCYWxhbmNlT2Y8VCwgST4+AAEocG9sbF9pbmRleDgBRFBvbGxJbmRleE9mPFQsIEk+AAIEUEFuIGFjY291bnQgaGFzIHZvdGVkLFZvdGVSZW1vdmVkDAEMd2hvBAEwVDo6QWNjb3VudElkAAEQdm90ZfUEAXBBY2NvdW50Vm90ZTxCYWxhbmNlT2Y8VCwgST4+AAEocG9sbF9pbmRleDgBRFBvbGxJbmRleE9mPFQsIEk+AAMEXEEgdm90ZSBoYXMgYmVlbiByZW1vdmVkMFZvdGVVbmxvY2tlZAgBDHdobwQBMFQ6OkFjY291bnRJZAABFGNsYXNz7QMBNENsYXNzT2Y8VCwgST4ABARFAVRoZSBsb2NrdXAgcGVyaW9kIG9mIGEgY29udmljdGlvbiB2b3RlIGV4cGlyZWQsIGFuZCB0aGUgZnVuZHMgaGF2ZSBiZWVuIHVubG9ja2VkLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldC0JDEBwYWxsZXRfcmVmZXJlbmRhGHBhbGxldBRFdmVudAgEVAAESQABQCRTdWJtaXR0ZWQMARRpbmRleDgBPFJlZmVyZW5kdW1JbmRleARgSW5kZXggb2YgdGhlIHJlZmVyZW5kdW0uARR0cmFja+0DATxUcmFja0lkT2Y8VCwgST4EJQFUaGUgdHJhY2sgKGFuZCBieSBleHRlbnNpb24gcHJvcG9zYWwgZGlzcGF0Y2ggb3JpZ2luKSBvZiB0aGlzIHJlZmVyZW5kdW0uASBwcm9wb3NhbAkFAUxCb3VuZGVkQ2FsbE9mPFQsIEk+BIBUaGUgcHJvcG9zYWwgZm9yIHRoZSByZWZlcmVuZHVtLgAEgEEgcmVmZXJlbmR1bSBoYXMgYmVlbiBzdWJtaXR0ZWQuVERlY2lzaW9uRGVwb3NpdFBsYWNlZAwBFGluZGV4OAE8UmVmZXJlbmR1bUluZGV4BGBJbmRleCBvZiB0aGUgcmVmZXJlbmR1bS4BDHdobwQBMFQ6OkFjY291bnRJZASMVGhlIGFjY291bnQgd2hvIHBsYWNlZCB0aGUgZGVwb3NpdC4BGGFtb3VudFkBATxCYWxhbmNlT2Y8VCwgST4EhFRoZSBhbW91bnQgcGxhY2VkIGJ5IHRoZSBhY2NvdW50LgEElFRoZSBkZWNpc2lvbiBkZXBvc2l0IGhhcyBiZWVuIHBsYWNlZC5cRGVjaXNpb25EZXBvc2l0UmVmdW5kZWQMARRpbmRleDgBPFJlZmVyZW5kdW1JbmRleARgSW5kZXggb2YgdGhlIHJlZmVyZW5kdW0uAQx3aG8EATBUOjpBY2NvdW50SWQEjFRoZSBhY2NvdW50IHdobyBwbGFjZWQgdGhlIGRlcG9zaXQuARhhbW91bnRZAQE8QmFsYW5jZU9mPFQsIEk+BIRUaGUgYW1vdW50IHBsYWNlZCBieSB0aGUgYWNjb3VudC4CBJxUaGUgZGVjaXNpb24gZGVwb3NpdCBoYXMgYmVlbiByZWZ1bmRlZC44RGVwb3NpdFNsYXNoZWQIAQx3aG8EATBUOjpBY2NvdW50SWQEjFRoZSBhY2NvdW50IHdobyBwbGFjZWQgdGhlIGRlcG9zaXQuARhhbW91bnRZAQE8QmFsYW5jZU9mPFQsIEk+BIRUaGUgYW1vdW50IHBsYWNlZCBieSB0aGUgYWNjb3VudC4DBGxBIGRlcG9zaXQgaGFzIGJlZW4gc2xhc2hlZC48RGVjaXNpb25TdGFydGVkEAEUaW5kZXg4ATxSZWZlcmVuZHVtSW5kZXgEYEluZGV4IG9mIHRoZSByZWZlcmVuZHVtLgEUdHJhY2vtAwE8VHJhY2tJZE9mPFQsIEk+BCUBVGhlIHRyYWNrIChhbmQgYnkgZXh0ZW5zaW9uIHByb3Bvc2FsIGRpc3BhdGNoIG9yaWdpbikgb2YgdGhpcyByZWZlcmVuZHVtLgEgcHJvcG9zYWwJBQFMQm91bmRlZENhbGxPZjxULCBJPgSAVGhlIHByb3Bvc2FsIGZvciB0aGUgcmVmZXJlbmR1bS4BFHRhbGx5MQkBIFQ6OlRhbGx5BLhUaGUgY3VycmVudCB0YWxseSBvZiB2b3RlcyBpbiB0aGlzIHJlZmVyZW5kdW0uBAS8QSByZWZlcmVuZHVtIGhhcyBtb3ZlZCBpbnRvIHRoZSBkZWNpZGluZyBwaGFzZS44Q29uZmlybVN0YXJ0ZWQEARRpbmRleDgBPFJlZmVyZW5kdW1JbmRleARgSW5kZXggb2YgdGhlIHJlZmVyZW5kdW0uBQA4Q29uZmlybUFib3J0ZWQEARRpbmRleDgBPFJlZmVyZW5kdW1JbmRleARgSW5kZXggb2YgdGhlIHJlZmVyZW5kdW0uBgAkQ29uZmlybWVkCAEUaW5kZXg4ATxSZWZlcmVuZHVtSW5kZXgEYEluZGV4IG9mIHRoZSByZWZlcmVuZHVtLgEUdGFsbHkxCQEgVDo6VGFsbHkEsFRoZSBmaW5hbCB0YWxseSBvZiB2b3RlcyBpbiB0aGlzIHJlZmVyZW5kdW0uBwQhAUEgcmVmZXJlbmR1bSBoYXMgZW5kZWQgaXRzIGNvbmZpcm1hdGlvbiBwaGFzZSBhbmQgaXMgcmVhZHkgZm9yIGFwcHJvdmFsLiBBcHByb3ZlZAQBFGluZGV4OAE8UmVmZXJlbmR1bUluZGV4BGBJbmRleCBvZiB0aGUgcmVmZXJlbmR1bS4IBA0BQSByZWZlcmVuZHVtIGhhcyBiZWVuIGFwcHJvdmVkIGFuZCBpdHMgcHJvcG9zYWwgaGFzIGJlZW4gc2NoZWR1bGVkLiBSZWplY3RlZAgBFGluZGV4OAE8UmVmZXJlbmR1bUluZGV4BGBJbmRleCBvZiB0aGUgcmVmZXJlbmR1bS4BFHRhbGx5MQkBIFQ6OlRhbGx5BLBUaGUgZmluYWwgdGFsbHkgb2Ygdm90ZXMgaW4gdGhpcyByZWZlcmVuZHVtLgkErEEgcHJvcG9zYWwgaGFzIGJlZW4gcmVqZWN0ZWQgYnkgcmVmZXJlbmR1bS4gVGltZWRPdXQIARRpbmRleDgBPFJlZmVyZW5kdW1JbmRleARgSW5kZXggb2YgdGhlIHJlZmVyZW5kdW0uARR0YWxseTEJASBUOjpUYWxseQSwVGhlIGZpbmFsIHRhbGx5IG9mIHZvdGVzIGluIHRoaXMgcmVmZXJlbmR1bS4KBNhBIHJlZmVyZW5kdW0gaGFzIGJlZW4gdGltZWQgb3V0IHdpdGhvdXQgYmVpbmcgZGVjaWRlZC4kQ2FuY2VsbGVkCAEUaW5kZXg4ATxSZWZlcmVuZHVtSW5kZXgEYEluZGV4IG9mIHRoZSByZWZlcmVuZHVtLgEUdGFsbHkxCQEgVDo6VGFsbHkEsFRoZSBmaW5hbCB0YWxseSBvZiB2b3RlcyBpbiB0aGlzIHJlZmVyZW5kdW0uCwSAQSByZWZlcmVuZHVtIGhhcyBiZWVuIGNhbmNlbGxlZC4YS2lsbGVkCAEUaW5kZXg4ATxSZWZlcmVuZHVtSW5kZXgEYEluZGV4IG9mIHRoZSByZWZlcmVuZHVtLgEUdGFsbHkxCQEgVDo6VGFsbHkEsFRoZSBmaW5hbCB0YWxseSBvZiB2b3RlcyBpbiB0aGlzIHJlZmVyZW5kdW0uDAR0QSByZWZlcmVuZHVtIGhhcyBiZWVuIGtpbGxlZC5kU3VibWlzc2lvbkRlcG9zaXRSZWZ1bmRlZAwBFGluZGV4OAE8UmVmZXJlbmR1bUluZGV4BGBJbmRleCBvZiB0aGUgcmVmZXJlbmR1bS4BDHdobwQBMFQ6OkFjY291bnRJZASMVGhlIGFjY291bnQgd2hvIHBsYWNlZCB0aGUgZGVwb3NpdC4BGGFtb3VudFkBATxCYWxhbmNlT2Y8VCwgST4EhFRoZSBhbW91bnQgcGxhY2VkIGJ5IHRoZSBhY2NvdW50Lg0EpFRoZSBzdWJtaXNzaW9uIGRlcG9zaXQgaGFzIGJlZW4gcmVmdW5kZWQuLE1ldGFkYXRhU2V0CAEUaW5kZXg4ATxSZWZlcmVuZHVtSW5kZXgEYEluZGV4IG9mIHRoZSByZWZlcmVuZHVtLgEQaGFzaEABHFQ6Okhhc2gEOFByZWltYWdlIGhhc2guDgScTWV0YWRhdGEgZm9yIGEgcmVmZXJlbmR1bSBoYXMgYmVlbiBzZXQuPE1ldGFkYXRhQ2xlYXJlZAgBFGluZGV4OAE8UmVmZXJlbmR1bUluZGV4BGBJbmRleCBvZiB0aGUgcmVmZXJlbmR1bS4BEGhhc2hAARxUOjpIYXNoBDhQcmVpbWFnZSBoYXNoLg8ErE1ldGFkYXRhIGZvciBhIHJlZmVyZW5kdW0gaGFzIGJlZW4gY2xlYXJlZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXQxCQxgcGFsbGV0X2NvbnZpY3Rpb25fdm90aW5nFHR5cGVzFFRhbGx5CBRWb3RlcwFZARRUb3RhbAAADAEQYXllc1kBARRWb3RlcwABEG5heXNZAQEUVm90ZXMAARxzdXBwb3J0WQEBFFZvdGVzAAA1CQxAcGFsbGV0X3doaXRlbGlzdBhwYWxsZXQURXZlbnQEBFQAAQw8Q2FsbFdoaXRlbGlzdGVkBAEkY2FsbF9oYXNoQAEcVDo6SGFzaAAAAFhXaGl0ZWxpc3RlZENhbGxSZW1vdmVkBAEkY2FsbF9oYXNoQAEcVDo6SGFzaAABAGRXaGl0ZWxpc3RlZENhbGxEaXNwYXRjaGVkCAEkY2FsbF9oYXNoQAEcVDo6SGFzaAABGHJlc3VsdDkJAWhEaXNwYXRjaFJlc3VsdFdpdGhQb3N0SW5mbwACAAR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldDkJBBhSZXN1bHQIBFQBPQkERQFBCQEICE9rBAA9CQAAAAAMRXJyBABBCQAAAQAAPQkMNGZyYW1lX3N1cHBvcnQgZGlzcGF0Y2hAUG9zdERpc3BhdGNoSW5mbwAACAE0YWN0dWFsX3dlaWdodBEBAThPcHRpb248V2VpZ2h0PgABIHBheXNfZmVlBQgBEFBheXMAAEEJCChzcF9ydW50aW1lZERpc3BhdGNoRXJyb3JXaXRoUG9zdEluZm8EEEluZm8BPQkACAEkcG9zdF9pbmZvPQkBEEluZm8AARRlcnJvcgkIATREaXNwYXRjaEVycm9yAABFCQw8cGFsbGV0X2JvdW50aWVzGHBhbGxldBRFdmVudAgEVAAESQABMDhCb3VudHlQcm9wb3NlZAQBFGluZGV4OAEsQm91bnR5SW5kZXgAAARQTmV3IGJvdW50eSBwcm9wb3NhbC44Qm91bnR5UmVqZWN0ZWQIARRpbmRleDgBLEJvdW50eUluZGV4AAEQYm9uZFkBATxCYWxhbmNlT2Y8VCwgST4AAQTMQSBib3VudHkgcHJvcG9zYWwgd2FzIHJlamVjdGVkOyBmdW5kcyB3ZXJlIHNsYXNoZWQuSEJvdW50eUJlY2FtZUFjdGl2ZQQBFGluZGV4OAEsQm91bnR5SW5kZXgAAgS4QSBib3VudHkgcHJvcG9zYWwgaXMgZnVuZGVkIGFuZCBiZWNhbWUgYWN0aXZlLjRCb3VudHlBd2FyZGVkCAEUaW5kZXg4ASxCb3VudHlJbmRleAABLGJlbmVmaWNpYXJ5BAEwVDo6QWNjb3VudElkAAMElEEgYm91bnR5IGlzIGF3YXJkZWQgdG8gYSBiZW5lZmljaWFyeS40Qm91bnR5Q2xhaW1lZAwBFGluZGV4OAEsQm91bnR5SW5kZXgAARhwYXlvdXRZAQE8QmFsYW5jZU9mPFQsIEk+AAEsYmVuZWZpY2lhcnkEATBUOjpBY2NvdW50SWQABASMQSBib3VudHkgaXMgY2xhaW1lZCBieSBiZW5lZmljaWFyeS44Qm91bnR5Q2FuY2VsZWQEARRpbmRleDgBLEJvdW50eUluZGV4AAUEWEEgYm91bnR5IGlzIGNhbmNlbGxlZC44Qm91bnR5RXh0ZW5kZWQEARRpbmRleDgBLEJvdW50eUluZGV4AAYEcEEgYm91bnR5IGV4cGlyeSBpcyBleHRlbmRlZC44Qm91bnR5QXBwcm92ZWQEARRpbmRleDgBLEJvdW50eUluZGV4AAcEVEEgYm91bnR5IGlzIGFwcHJvdmVkLjxDdXJhdG9yUHJvcG9zZWQIASRib3VudHlfaWQ4ASxCb3VudHlJbmRleAABHGN1cmF0b3IEATBUOjpBY2NvdW50SWQACAR0QSBib3VudHkgY3VyYXRvciBpcyBwcm9wb3NlZC5EQ3VyYXRvclVuYXNzaWduZWQEASRib3VudHlfaWQ4ASxCb3VudHlJbmRleAAJBHxBIGJvdW50eSBjdXJhdG9yIGlzIHVuYXNzaWduZWQuPEN1cmF0b3JBY2NlcHRlZAgBJGJvdW50eV9pZDgBLEJvdW50eUluZGV4AAEcY3VyYXRvcgQBMFQ6OkFjY291bnRJZAAKBHRBIGJvdW50eSBjdXJhdG9yIGlzIGFjY2VwdGVkLjBEZXBvc2l0UG9rZWQQASRib3VudHlfaWQ4ASxCb3VudHlJbmRleAABIHByb3Bvc2VyBAEwVDo6QWNjb3VudElkAAEsb2xkX2RlcG9zaXRZAQE8QmFsYW5jZU9mPFQsIEk+AAEsbmV3X2RlcG9zaXRZAQE8QmFsYW5jZU9mPFQsIEk+AAsEgEEgYm91bnR5IGRlcG9zaXQgaGFzIGJlZW4gcG9rZWQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0SQkMVHBhbGxldF9jaGlsZF9ib3VudGllcxhwYWxsZXQURXZlbnQEBFQAARAUQWRkZWQIARRpbmRleDgBLEJvdW50eUluZGV4AAEsY2hpbGRfaW5kZXg4ASxCb3VudHlJbmRleAAABGBBIGNoaWxkLWJvdW50eSBpcyBhZGRlZC4cQXdhcmRlZAwBFGluZGV4OAEsQm91bnR5SW5kZXgAASxjaGlsZF9pbmRleDgBLEJvdW50eUluZGV4AAEsYmVuZWZpY2lhcnkEATBUOjpBY2NvdW50SWQAAQSsQSBjaGlsZC1ib3VudHkgaXMgYXdhcmRlZCB0byBhIGJlbmVmaWNpYXJ5LhxDbGFpbWVkEAEUaW5kZXg4ASxCb3VudHlJbmRleAABLGNoaWxkX2luZGV4OAEsQm91bnR5SW5kZXgAARhwYXlvdXRZAQEwQmFsYW5jZU9mPFQ+AAEsYmVuZWZpY2lhcnkEATBUOjpBY2NvdW50SWQAAgSkQSBjaGlsZC1ib3VudHkgaXMgY2xhaW1lZCBieSBiZW5lZmljaWFyeS4gQ2FuY2VsZWQIARRpbmRleDgBLEJvdW50eUluZGV4AAEsY2hpbGRfaW5kZXg4ASxCb3VudHlJbmRleAADBHBBIGNoaWxkLWJvdW50eSBpcyBjYW5jZWxsZWQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0TQkMRHBhbGxldF9hc3NldF9yYXRlGHBhbGxldBRFdmVudAQEVAABDEBBc3NldFJhdGVDcmVhdGVkCAEoYXNzZXRfa2luZOkEATBUOjpBc3NldEtpbmQAARByYXRlKQUBJEZpeGVkVTEyOAAAAEBBc3NldFJhdGVSZW1vdmVkBAEoYXNzZXRfa2luZOkEATBUOjpBc3NldEtpbmQAAQBAQXNzZXRSYXRlVXBkYXRlZAwBKGFzc2V0X2tpbmTpBAEwVDo6QXNzZXRLaW5kAAEMb2xkKQUBJEZpeGVkVTEyOAABDG5ldykFASRGaXhlZFUxMjgAAgAEfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXRRCQxscGFsbGV0X211bHRpX2Fzc2V0X2JvdW50aWVzGHBhbGxldBRFdmVudAgEVAAESQABMDRCb3VudHlDcmVhdGVkBAEUaW5kZXg4ASxCb3VudHlJbmRleAAABOBBIG5ldyBib3VudHkgd2FzIGNyZWF0ZWQgYW5kIGZ1bmRpbmcgaGFzIGJlZW4gaW5pdGlhdGVkLkhDaGlsZEJvdW50eUNyZWF0ZWQIARRpbmRleDgBLEJvdW50eUluZGV4AAEsY2hpbGRfaW5kZXg4ASxCb3VudHlJbmRleAABBPhBIG5ldyBjaGlsZC1ib3VudHkgd2FzIGNyZWF0ZWQgYW5kIGZ1bmRpbmcgaGFzIGJlZW4gaW5pdGlhdGVkLkhCb3VudHlCZWNhbWVBY3RpdmUMARRpbmRleDgBLEJvdW50eUluZGV4AAEsY2hpbGRfaW5kZXjkAUxPcHRpb248Qm91bnR5SW5kZXg+AAEcY3VyYXRvcgQBMFQ6OkFjY291bnRJZAACBOhUaGUgY3VyYXRvciBhY2NlcHRlZCByb2xlIGFuZCBjaGlsZC0vYm91bnR5IGJlY2FtZSBhY3RpdmUuNEJvdW50eUF3YXJkZWQMARRpbmRleDgBLEJvdW50eUluZGV4AAEsY2hpbGRfaW5kZXjkAUxPcHRpb248Qm91bnR5SW5kZXg+AAEsYmVuZWZpY2lhcnntBAE4VDo6QmVuZWZpY2lhcnkAAwS0QSBjaGlsZC0vYm91bnR5IHdhcyBhd2FyZGVkIHRvIGEgYmVuZWZpY2lhcnkuVEJvdW50eVBheW91dFByb2Nlc3NlZBQBFGluZGV4OAEsQm91bnR5SW5kZXgAASxjaGlsZF9pbmRleOQBTE9wdGlvbjxCb3VudHlJbmRleD4AAShhc3NldF9raW5k6QQBMFQ6OkFzc2V0S2luZAABFHZhbHVlWQEBKFQ6OkJhbGFuY2UAASxiZW5lZmljaWFyee0EAThUOjpCZW5lZmljaWFyeQAEBPRQYXlvdXQgcGF5bWVudCB0byB0aGUgYmVuZWZpY2lhcnkgaGFzIGNvbmNsdWRlZCBzdWNjZXNzZnVsbHkuWEJvdW50eUZ1bmRpbmdQcm9jZXNzZWQIARRpbmRleDgBLEJvdW50eUluZGV4AAEsY2hpbGRfaW5kZXjkAUxPcHRpb248Qm91bnR5SW5kZXg+AAUErEZ1bmRpbmcgcGF5bWVudCBoYXMgY29uY2x1ZGVkIHN1Y2Nlc3NmdWxseS5UQm91bnR5UmVmdW5kUHJvY2Vzc2VkCAEUaW5kZXg4ASxCb3VudHlJbmRleAABLGNoaWxkX2luZGV45AFMT3B0aW9uPEJvdW50eUluZGV4PgAGBKhSZWZ1bmQgcGF5bWVudCBoYXMgY29uY2x1ZGVkIHN1Y2Nlc3NmdWxseS44Qm91bnR5Q2FuY2VsZWQIARRpbmRleDgBLEJvdW50eUluZGV4AAEsY2hpbGRfaW5kZXjkAUxPcHRpb248Qm91bnR5SW5kZXg+AAcEeEEgY2hpbGQtL2JvdW50eSB3YXMgY2FuY2VsbGVkLkRDdXJhdG9yVW5hc3NpZ25lZAgBFGluZGV4OAEsQm91bnR5SW5kZXgAASxjaGlsZF9pbmRleOQBTE9wdGlvbjxCb3VudHlJbmRleD4ACAScQSBjaGlsZC0vYm91bnR5IGN1cmF0b3Igd2FzIHVuYXNzaWduZWQuPEN1cmF0b3JQcm9wb3NlZAwBFGluZGV4OAEsQm91bnR5SW5kZXgAASxjaGlsZF9pbmRleOQBTE9wdGlvbjxCb3VudHlJbmRleD4AARxjdXJhdG9yBAEwVDo6QWNjb3VudElkAAkElEEgY2hpbGQtL2JvdW50eSBjdXJhdG9yIHdhcyBwcm9wb3NlZC40UGF5bWVudEZhaWxlZAwBFGluZGV4OAEsQm91bnR5SW5kZXgAASxjaGlsZF9pbmRleOQBTE9wdGlvbjxCb3VudHlJbmRleD4AAShwYXltZW50X2lkKAFEUGF5bWVudElkT2Y8VCwgST4ACgSQQSBwYXltZW50IGZhaWxlZCBhbmQgY2FuIGJlIHJldHJpZWQuEFBhaWQMARRpbmRleDgBLEJvdW50eUluZGV4AAEsY2hpbGRfaW5kZXjkAUxPcHRpb248Qm91bnR5SW5kZXg+AAEocGF5bWVudF9pZCgBRFBheW1lbnRJZE9mPFQsIEk+AAsEmEEgcGF5bWVudCBoYXBwZW5lZCBhbmQgY2FuIGJlIGNoZWNrZWQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0VQkMbHBhbGxldF9zdGF0ZV90cmllX21pZ3JhdGlvbhhwYWxsZXQURXZlbnQEBFQAARAgTWlncmF0ZWQMAQx0b3A4AQx1MzIAARRjaGlsZDgBDHUzMgABHGNvbXB1dGVZCQFATWlncmF0aW9uQ29tcHV0ZQAACDkBR2l2ZW4gbnVtYmVyIG9mIGAodG9wLCBjaGlsZClgIGtleXMgd2VyZSBtaWdyYXRlZCByZXNwZWN0aXZlbHksIHdpdGggdGhlIGdpdmVuKGBjb21wdXRlYC4cU2xhc2hlZAgBDHdobwQBMFQ6OkFjY291bnRJZAABGGFtb3VudFkBATBCYWxhbmNlT2Y8VD4AAQS0U29tZSBhY2NvdW50IGdvdCBzbGFzaGVkIGJ5IHRoZSBnaXZlbiBhbW91bnQuVEF1dG9NaWdyYXRpb25GaW5pc2hlZAACBIRUaGUgYXV0byBtaWdyYXRpb24gdGFzayBmaW5pc2hlZC4YSGFsdGVkBAEUZXJyb3JdCQEgRXJyb3I8VD4AAwTsTWlncmF0aW9uIGdvdCBoYWx0ZWQgZHVlIHRvIGFuIGVycm9yIG9yIG1pc3MtY29uZmlndXJhdGlvbi4EcElubmVyIGV2ZW50cyBvZiB0aGlzIHBhbGxldC5ZCQxscGFsbGV0X3N0YXRlX3RyaWVfbWlncmF0aW9uGHBhbGxldEBNaWdyYXRpb25Db21wdXRlAAEIGFNpZ25lZAAAABBBdXRvAAEAAF0JDGxwYWxsZXRfc3RhdGVfdHJpZV9taWdyYXRpb24YcGFsbGV0FEVycm9yBARUAAEYPE1heFNpZ25lZExpbWl0cwAABIBNYXggc2lnbmVkIGxpbWl0cyBub3QgcmVzcGVjdGVkLihLZXlUb29Mb25nAAEctEEga2V5IHdhcyBsb25nZXIgdGhhbiB0aGUgY29uZmlndXJlZCBtYXhpbXVtLgARAVRoaXMgbWVhbnMgdGhhdCB0aGUgbWlncmF0aW9uIGhhbHRlZCBhdCB0aGUgY3VycmVudCBbYFByb2dyZXNzYF0gYW5kAQFjYW4gYmUgcmVzdW1lZCB3aXRoIGEgbGFyZ2VyIFtgY3JhdGU6OkNvbmZpZzo6TWF4S2V5TGVuYF0gdmFsdWUuIQFSZXRyeWluZyB3aXRoIHRoZSBzYW1lIFtgY3JhdGU6OkNvbmZpZzo6TWF4S2V5TGVuYF0gdmFsdWUgd2lsbCBub3Qgd29yay5FAVRoZSB2YWx1ZSBzaG91bGQgb25seSBiZSBpbmNyZWFzZWQgdG8gYXZvaWQgYSBzdG9yYWdlIG1pZ3JhdGlvbiBmb3IgdGhlIGN1cnJlbnRseZBzdG9yZWQgW2BjcmF0ZTo6UHJvZ3Jlc3M6Okxhc3RLZXlgXS44Tm90RW5vdWdoRnVuZHMAAgSUc3VibWl0dGVyIGRvZXMgbm90IGhhdmUgZW5vdWdoIGZ1bmRzLihCYWRXaXRuZXNzAAMEaEJhZCB3aXRuZXNzIGRhdGEgcHJvdmlkZWQuZFNpZ25lZE1pZ3JhdGlvbk5vdEFsbG93ZWQABAQlAVNpZ25lZCBtaWdyYXRpb24gaXMgbm90IGFsbG93ZWQgYmVjYXVzZSB0aGUgbWF4aW11bSBsaW1pdCBpcyBub3Qgc2V0IHlldC4wQmFkQ2hpbGRSb290AAUEYEJhZCBjaGlsZCByb290IHByb3ZpZGVkLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC5hCQxccGFsbGV0X25vbWluYXRpb25fcG9vbHMYcGFsbGV0FEV2ZW50BARUAAFcHENyZWF0ZWQIASRkZXBvc2l0b3IEATBUOjpBY2NvdW50SWQAARxwb29sX2lkOAEYUG9vbElkAAAEYEEgcG9vbCBoYXMgYmVlbiBjcmVhdGVkLhhCb25kZWQQARhtZW1iZXIEATBUOjpBY2NvdW50SWQAARxwb29sX2lkOAEYUG9vbElkAAEYYm9uZGVkWQEBMEJhbGFuY2VPZjxUPgABGGpvaW5lZF0BARBib29sAAEElEEgbWVtYmVyIGhhcyBiZWNhbWUgYm9uZGVkIGluIGEgcG9vbC4cUGFpZE91dAwBGG1lbWJlcgQBMFQ6OkFjY291bnRJZAABHHBvb2xfaWQ4ARhQb29sSWQAARhwYXlvdXRZAQEwQmFsYW5jZU9mPFQ+AAIEjEEgcGF5b3V0IGhhcyBiZWVuIG1hZGUgdG8gYSBtZW1iZXIuIFVuYm9uZGVkFAEYbWVtYmVyBAEwVDo6QWNjb3VudElkAAEccG9vbF9pZDgBGFBvb2xJZAABHGJhbGFuY2VZAQEwQmFsYW5jZU9mPFQ+AAEYcG9pbnRzWQEBMEJhbGFuY2VPZjxUPgABDGVyYTgBIEVyYUluZGV4AAMsmEEgbWVtYmVyIGhhcyB1bmJvbmRlZCBmcm9tIHRoZWlyIHBvb2wuADkBLSBgYmFsYW5jZWAgaXMgdGhlIGNvcnJlc3BvbmRpbmcgYmFsYW5jZSBvZiB0aGUgbnVtYmVyIG9mIHBvaW50cyB0aGF0IGhhcyBiZWVuVQEgIHJlcXVlc3RlZCB0byBiZSB1bmJvbmRlZCAodGhlIGFyZ3VtZW50IG9mIHRoZSBgdW5ib25kYCB0cmFuc2FjdGlvbikgZnJvbSB0aGUgYm9uZGVkHCAgcG9vbC5FAS0gYHBvaW50c2AgaXMgdGhlIG51bWJlciBvZiBwb2ludHMgdGhhdCBhcmUgaXNzdWVkIGFzIGEgcmVzdWx0IG9mIGBiYWxhbmNlYCBiZWluZ8BkaXNzb2x2ZWQgaW50byB0aGUgY29ycmVzcG9uZGluZyB1bmJvbmRpbmcgcG9vbC7kLSBgZXJhYCBpcyB0aGUgZXJhIGluIHdoaWNoIHRoZSBiYWxhbmNlIHdpbGwgYmUgdW5ib25kZWQuVQFJbiB0aGUgYWJzZW5jZSBvZiBzbGFzaGluZywgdGhlc2UgdmFsdWVzIHdpbGwgbWF0Y2guIEluIHRoZSBwcmVzZW5jZSBvZiBzbGFzaGluZywgdGhlTQFudW1iZXIgb2YgcG9pbnRzIHRoYXQgYXJlIGlzc3VlZCBpbiB0aGUgdW5ib25kaW5nIHBvb2wgd2lsbCBiZSBsZXNzIHRoYW4gdGhlIGFtb3VudGRyZXF1ZXN0ZWQgdG8gYmUgdW5ib25kZWQuJFdpdGhkcmF3bhABGG1lbWJlcgQBMFQ6OkFjY291bnRJZAABHHBvb2xfaWQ4ARhQb29sSWQAARxiYWxhbmNlWQEBMEJhbGFuY2VPZjxUPgABGHBvaW50c1kBATBCYWxhbmNlT2Y8VD4ABBicQSBtZW1iZXIgaGFzIHdpdGhkcmF3biBmcm9tIHRoZWlyIHBvb2wuACEBVGhlIGdpdmVuIG51bWJlciBvZiBgcG9pbnRzYCBoYXZlIGJlZW4gZGlzc29sdmVkIGluIHJldHVybiBvZiBgYmFsYW5jZWAuAFkBU2ltaWxhciB0byBgVW5ib25kZWRgIGV2ZW50LCBpbiB0aGUgYWJzZW5jZSBvZiBzbGFzaGluZywgdGhlIHJhdGlvIG9mIHBvaW50IHRvIGJhbGFuY2Uod2lsbCBiZSAxLiREZXN0cm95ZWQEARxwb29sX2lkOAEYUG9vbElkAAUEaEEgcG9vbCBoYXMgYmVlbiBkZXN0cm95ZWQuMFN0YXRlQ2hhbmdlZAgBHHBvb2xfaWQ4ARhQb29sSWQAASRuZXdfc3RhdGVRBQEkUG9vbFN0YXRlAAYEfFRoZSBzdGF0ZSBvZiBhIHBvb2wgaGFzIGNoYW5nZWQ0TWVtYmVyUmVtb3ZlZAwBHHBvb2xfaWQ4ARhQb29sSWQAARhtZW1iZXIEATBUOjpBY2NvdW50SWQAAUByZWxlYXNlZF9iYWxhbmNlWQEBMEJhbGFuY2VPZjxUPgAHFJhBIG1lbWJlciBoYXMgYmVlbiByZW1vdmVkIGZyb20gYSBwb29sLgBRAVRoZSByZW1vdmFsIGNhbiBiZSB2b2x1bnRhcnkgKHdpdGhkcmF3biBhbGwgdW5ib25kZWQgZnVuZHMpIG9yIGludm9sdW50YXJ5IChraWNrZWQpLkkBQW55IGZ1bmRzIHRoYXQgYXJlIHN0aWxsIGRlbGVnYXRlZCAoaS5lLiBkYW5nbGluZyBkZWxlZ2F0aW9uKSBhcmUgcmVsZWFzZWQgYW5kIGFyZYhyZXByZXNlbnRlZCBieSBgcmVsZWFzZWRfYmFsYW5jZWAuMFJvbGVzVXBkYXRlZAwBEHJvb3SRAQFQT3B0aW9uPFQ6OkFjY291bnRJZD4AARxib3VuY2VykQEBUE9wdGlvbjxUOjpBY2NvdW50SWQ+AAEkbm9taW5hdG9ykQEBUE9wdGlvbjxUOjpBY2NvdW50SWQ+AAgIVQFUaGUgcm9sZXMgb2YgYSBwb29sIGhhdmUgYmVlbiB1cGRhdGVkIHRvIHRoZSBnaXZlbiBuZXcgcm9sZXMuIE5vdGUgdGhhdCB0aGUgZGVwb3NpdG9yRGNhbiBuZXZlciBjaGFuZ2UuLFBvb2xTbGFzaGVkCAEccG9vbF9pZDgBGFBvb2xJZAABHGJhbGFuY2VZAQEwQmFsYW5jZU9mPFQ+AAkEDQFUaGUgYWN0aXZlIGJhbGFuY2Ugb2YgcG9vbCBgcG9vbF9pZGAgaGFzIGJlZW4gc2xhc2hlZCB0byBgYmFsYW5jZWAuUFVuYm9uZGluZ1Bvb2xTbGFzaGVkDAEccG9vbF9pZDgBGFBvb2xJZAABDGVyYTgBIEVyYUluZGV4AAEcYmFsYW5jZVkBATBCYWxhbmNlT2Y8VD4ACgQlAVRoZSB1bmJvbmQgcG9vbCBhdCBgZXJhYCBvZiBwb29sIGBwb29sX2lkYCBoYXMgYmVlbiBzbGFzaGVkIHRvIGBiYWxhbmNlYC5UUG9vbENvbW1pc3Npb25VcGRhdGVkCAEccG9vbF9pZDgBGFBvb2xJZAABHGN1cnJlbnRpBQF8T3B0aW9uPChQZXJiaWxsLCBUOjpBY2NvdW50SWQpPgALBLRBIHBvb2wncyBjb21taXNzaW9uIHNldHRpbmcgaGFzIGJlZW4gY2hhbmdlZC5gUG9vbE1heENvbW1pc3Npb25VcGRhdGVkCAEccG9vbF9pZDgBGFBvb2xJZAABOG1heF9jb21taXNzaW9uoQEBHFBlcmJpbGwADATUQSBwb29sJ3MgbWF4aW11bSBjb21taXNzaW9uIHNldHRpbmcgaGFzIGJlZW4gY2hhbmdlZC58UG9vbENvbW1pc3Npb25DaGFuZ2VSYXRlVXBkYXRlZAgBHHBvb2xfaWQ4ARhQb29sSWQAASxjaGFuZ2VfcmF0ZXEFAZxDb21taXNzaW9uQ2hhbmdlUmF0ZTxCbG9ja051bWJlckZvcjxUPj4ADQTMQSBwb29sJ3MgY29tbWlzc2lvbiBgY2hhbmdlX3JhdGVgIGhhcyBiZWVuIGNoYW5nZWQukFBvb2xDb21taXNzaW9uQ2xhaW1QZXJtaXNzaW9uVXBkYXRlZAgBHHBvb2xfaWQ4ARhQb29sSWQAAShwZXJtaXNzaW9udQUBvE9wdGlvbjxDb21taXNzaW9uQ2xhaW1QZXJtaXNzaW9uPFQ6OkFjY291bnRJZD4+AA4EyFBvb2wgY29tbWlzc2lvbiBjbGFpbSBwZXJtaXNzaW9uIGhhcyBiZWVuIHVwZGF0ZWQuVFBvb2xDb21taXNzaW9uQ2xhaW1lZAgBHHBvb2xfaWQ4ARhQb29sSWQAAShjb21taXNzaW9uWQEBMEJhbGFuY2VPZjxUPgAPBIRQb29sIGNvbW1pc3Npb24gaGFzIGJlZW4gY2xhaW1lZC5kTWluQmFsYW5jZURlZmljaXRBZGp1c3RlZAgBHHBvb2xfaWQ4ARhQb29sSWQAARhhbW91bnRZAQEwQmFsYW5jZU9mPFQ+ABAEyFRvcHBlZCB1cCBkZWZpY2l0IGluIGZyb3plbiBFRCBvZiB0aGUgcmV3YXJkIHBvb2wuYE1pbkJhbGFuY2VFeGNlc3NBZGp1c3RlZAgBHHBvb2xfaWQ4ARhQb29sSWQAARhhbW91bnRZAQEwQmFsYW5jZU9mPFQ+ABEEvENsYWltZWQgZXhjZXNzIGZyb3plbiBFRCBvZiBhZiB0aGUgcmV3YXJkIHBvb2wucE1lbWJlckNsYWltUGVybWlzc2lvblVwZGF0ZWQIARhtZW1iZXIEATBUOjpBY2NvdW50SWQAAShwZXJtaXNzaW9uZQUBPENsYWltUGVybWlzc2lvbgASBMhBIHBvb2wgbWVtYmVyJ3MgY2xhaW0gcGVybWlzc2lvbiBoYXMgYmVlbiB1cGRhdGVkLjxNZXRhZGF0YVVwZGF0ZWQIARxwb29sX2lkOAEYUG9vbElkAAEYY2FsbGVyBAEwVDo6QWNjb3VudElkABMEeEEgcG9vbCdzIG1ldGFkYXRhIHdhcyB1cGRhdGVkLkhQb29sTm9taW5hdGlvbk1hZGUIARxwb29sX2lkOAEYUG9vbElkAAEYY2FsbGVyBAEwVDo6QWNjb3VudElkABQIWQFBIHBvb2wncyBub21pbmF0aW5nIGFjY291bnQgKG9yIHRoZSBwb29sJ3Mgcm9vdCBhY2NvdW50KSBoYXMgbm9taW5hdGVkIGEgdmFsaWRhdG9yIHNldFhvbiBiZWhhbGYgb2YgdGhlIHBvb2wuUFBvb2xOb21pbmF0b3JDaGlsbGVkCAEccG9vbF9pZDgBGFBvb2xJZAABGGNhbGxlcgQBMFQ6OkFjY291bnRJZAAVBLhUaGUgcG9vbCBpcyBjaGlsbGVkIGkuZS4gbm8gbG9uZ2VyIG5vbWluYXRpbmcuTEdsb2JhbFBhcmFtc1VwZGF0ZWQYATRtaW5fam9pbl9ib25kWQEBMEJhbGFuY2VPZjxUPgABPG1pbl9jcmVhdGVfYm9uZFkBATBCYWxhbmNlT2Y8VD4AASRtYXhfcG9vbHPkASxPcHRpb248dTMyPgABLG1heF9tZW1iZXJz5AEsT3B0aW9uPHUzMj4AAVBtYXhfbWVtYmVyc19wZXJfcG9vbOQBLE9wdGlvbjx1MzI+AAFUZ2xvYmFsX21heF9jb21taXNzaW9uZQkBPE9wdGlvbjxQZXJiaWxsPgAWBAEBR2xvYmFsIHBhcmFtZXRlcnMgcmVndWxhdGluZyBub21pbmF0aW9uIHBvb2xzIGhhdmUgYmVlbiB1cGRhdGVkLgRYRXZlbnRzIG9mIHRoaXMgcGFsbGV0LmUJBBhPcHRpb24EBFQBoQEBCBBOb25lAAAAEFNvbWUEAKEBAAABAABpCQxAcGFsbGV0X2JhZ3NfbGlzdBhwYWxsZXQURXZlbnQIBFQABEkAAQggUmViYWdnZWQMAQx3aG8EATBUOjpBY2NvdW50SWQAARBmcm9tKAEgVDo6U2NvcmUAAQh0bygBIFQ6OlNjb3JlAAAEpE1vdmVkIGFuIGFjY291bnQgZnJvbSBvbmUgYmFnIHRvIGFub3RoZXIuMFNjb3JlVXBkYXRlZAgBDHdobwQBMFQ6OkFjY291bnRJZAABJG5ld19zY29yZSgBIFQ6OlNjb3JlAAEE2FVwZGF0ZWQgdGhlIHNjb3JlIG9mIHNvbWUgYWNjb3VudCB0byB0aGUgZ2l2ZW4gYW1vdW50LgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldG0JDGBwYWxsZXRfZGVsZWdhdGVkX3N0YWtpbmcYcGFsbGV0FEV2ZW50BARUAAEQJERlbGVnYXRlZAwBFGFnZW50BAEwVDo6QWNjb3VudElkAAEkZGVsZWdhdG9yBAEwVDo6QWNjb3VudElkAAEYYW1vdW50WQEBMEJhbGFuY2VPZjxUPgAABHxGdW5kcyBkZWxlZ2F0ZWQgYnkgYSBkZWxlZ2F0b3IuIFJlbGVhc2VkDAEUYWdlbnQEATBUOjpBY2NvdW50SWQAASRkZWxlZ2F0b3IEATBUOjpBY2NvdW50SWQAARhhbW91bnRZAQEwQmFsYW5jZU9mPFQ+AAEEeEZ1bmRzIHJlbGVhc2VkIHRvIGEgZGVsZWdhdG9yLhxTbGFzaGVkDAEUYWdlbnQEATBUOjpBY2NvdW50SWQAASRkZWxlZ2F0b3IEATBUOjpBY2NvdW50SWQAARhhbW91bnRZAQEwQmFsYW5jZU9mPFQ+AAIEfEZ1bmRzIHNsYXNoZWQgZnJvbSBhIGRlbGVnYXRvci5ITWlncmF0ZWREZWxlZ2F0aW9uDAEUYWdlbnQEATBUOjpBY2NvdW50SWQAASRkZWxlZ2F0b3IEATBUOjpBY2NvdW50SWQAARhhbW91bnRZAQEwQmFsYW5jZU9mPFQ+AAMExFVuY2xhaW1lZCBkZWxlZ2F0aW9uIGZ1bmRzIG1pZ3JhdGVkIHRvIGRlbGVnYXRvci4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXRxCQx4cGFsbGV0X3N0YWtpbmdfYXN5bmNfcmNfY2xpZW50GHBhbGxldBRFdmVudAQEVAABEFRTZXNzaW9uUmVwb3J0UmVjZWl2ZWQQASRlbmRfaW5kZXg4ATBTZXNzaW9uSW5kZXgAAVBhY3RpdmF0aW9uX3RpbWVzdGFtcJEFAUhPcHRpb248KHU2NCwgdTMyKT4AAVx2YWxpZGF0b3JfcG9pbnRzX2NvdW50czgBDHUzMgABIGxlZnRvdmVyXQEBEGJvb2wAAASMQSBzYWlkIHNlc3Npb24gcmVwb3J0IHdhcyByZWNlaXZlZC48T2ZmZW5jZVJlY2VpdmVkCAE0c2xhc2hfc2Vzc2lvbjgBMFNlc3Npb25JbmRleAABOG9mZmVuY2VzX2NvdW50OAEMdTMyAAEEbEEgbmV3IG9mZmVuY2Ugd2FzIHJlcG9ydGVkLiBGZWVzUGFpZAgBDHdobwQBMFQ6OkFjY291bnRJZAABEGZlZXNZAQEwQmFsYW5jZU9mPFQ+AAIMAQFGZWVzIHdlcmUgY2hhcmdlZCBmb3IgYSB1c2VyIG9wZXJhdGlvbiAoc2V0X2tleXMgb3IgcHVyZ2Vfa2V5cykuABkBVGhlIGZlZSBpbmNsdWRlcyBib3RoIFhDTSBkZWxpdmVyeSBmZWUgYW5kIHJlbGF5IGNoYWluIGV4ZWN1dGlvbiBjb3N0LihVbmV4cGVjdGVkBAB1CQE4VW5leHBlY3RlZEtpbmQAAwgNAVNvbWV0aGluZyBvY2N1cnJlZCB0aGF0IHNob3VsZCBuZXZlciBoYXBwZW4gdW5kZXIgbm9ybWFsIG9wZXJhdGlvbi68TG9nZ2VkIGFzIGFuIGV2ZW50IGZvciBmYWlsLXNhZmUgb2JzZXJ2YWJpbGl0eS4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXR1CQx4cGFsbGV0X3N0YWtpbmdfYXN5bmNfcmNfY2xpZW50GHBhbGxldDhVbmV4cGVjdGVkS2luZAABGHBTZXNzaW9uUmVwb3J0SW50ZWdyaXR5RmFpbGVkAAAAbFZhbGlkYXRvclNldEludGVncml0eUZhaWxlZAABADhTZXNzaW9uU2tpcHBlZAACAFxTZXNzaW9uQWxyZWFkeVByb2Nlc3NlZAADAFhWYWxpZGF0b3JTZXRTZW5kRmFpbGVkAAQATFZhbGlkYXRvclNldERyb3BwZWQABQAAeQkMkHBhbGxldF9lbGVjdGlvbl9wcm92aWRlcl9tdWx0aV9ibG9jaxhwYWxsZXQURXZlbnQEBFQAARREUGhhc2VUcmFuc2l0aW9uZWQIARBmcm9trQUBIFBoYXNlPFQ+BEB0aGUgc291cmNlIHBoYXNlAQh0b60FASBQaGFzZTxUPgRAVGhlIHRhcmdldCBwaGFzZQAIXQFBIHBoYXNlIHRyYW5zaXRpb24gaGFwcGVuZWQuIE9ubHkgY2hlY2tzIG1ham9yIGNoYW5nZXMgaW4gdGhlIHZhcmlhbnRzLCBub3QgbWlub3IgaW5uZXIcdmFsdWVzLnhVbmV4cGVjdGVkVGFyZ2V0U25hcHNob3RGYWlsZWQAAQSAVGFyZ2V0IHNuYXBzaG90IGNyZWF0aW9uIGZhaWxlZC50VW5leHBlY3RlZFZvdGVyU25hcHNob3RGYWlsZWQAAgR8Vm90ZXIgc25hcHNob3QgY3JlYXRpb24gZmFpbGVkLpBVbmV4cGVjdGVkUGhhc2VUcmFuc2l0aW9uT3V0T2ZXZWlnaHQQARBmcm9trQUBIFBoYXNlPFQ+AAEIdG+tBQEgUGhhc2U8VD4AASByZXF1aXJlZBUBARhXZWlnaHQAAQxoYWQVAQEYV2VpZ2h0AAME+FBoYXNlIHRyYW5zaXRpb24gY291bGQgbm90IHByb2NlZWQgZHVlIHRvIGJlaW5nIG91dCBvZiB3ZWlnaHQudFVuZXhwZWN0ZWRQaGFzZVRyYW5zaXRpb25IYWx0CAEgcmVxdWlyZWQVAQEYV2VpZ2h0AAEMaGFkFQEBGFdlaWdodAAEBBUBUGhhc2UgdHJhbnNpdGlvbiBjb3VsZCBub3QgZXZlbiBiZWdpbiBiZWNhc2V1IG9mIGJlaW5nIG91dCBvZiB3ZWlnaHQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0fQkUkHBhbGxldF9lbGVjdGlvbl9wcm92aWRlcl9tdWx0aV9ibG9jayB2ZXJpZmllchRpbXBscxhwYWxsZXQURXZlbnQEBFQAAQxIVmVyaWZpY2F0aW9uRmFpbGVkCAA4ASRQYWdlSW5kZXgAAIEJAUBGZWFzaWJpbGl0eUVycm9yAAAQoEEgdmVyaWZpY2F0aW9uIGZhaWxlZCBhdCB0aGUgZ2l2ZW4gcGFnZS4AVQFOT1RFOiBpZiB0aGUgaW5kZXggaXMgMCwgdGhlbiB0aGlzIGNvdWxkIG1lYW4gZWl0aGVyIHRoZSBmZWFzaWJpbGl0eSBvZiB0aGUgbGFzdCBwYWdlBQF3YXMgd3JvbmcsIG9yIHRoZSBmaW5hbCBjaGVja3Mgb2YgYGZpbmFsaXplX3ZlcmlmaWNhdGlvbmAgZmFpbGVkLiBWZXJpZmllZAgAOAEkUGFnZUluZGV4AAA4AQx1MzIAAQhZAVRoZSBnaXZlbiBwYWdlIG9mIGEgc29sdXRpb24gaGFzIGJlZW4gdmVyaWZpZWQsIHdpdGggdGhlIGdpdmVuIG51bWJlciBvZiB3aW5uZXJzIGJlaW5nMGZvdW5kIGluIGl0LhhRdWV1ZWQIANUFATRFbGVjdGlvblNjb3JlAACJCQFUT3B0aW9uPEVsZWN0aW9uU2NvcmU+AAIEHQFBIHNvbHV0aW9uIHdpdGggdGhlIGdpdmVuIHNjb3JlIGhhcyByZXBsYWNlZCBvdXIgY3VycmVudCBiZXN0IHNvbHV0aW9uLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldIEJDJBwYWxsZXRfZWxlY3Rpb25fcHJvdmlkZXJfbXVsdGlfYmxvY2sgdmVyaWZpZXJARmVhc2liaWxpdHlFcnJvcgABLEBXcm9uZ1dpbm5lckNvdW50AAAATFNuYXBzaG90VW5hdmFpbGFibGUAAQAsSW52YWxpZFZvdGUAAgAwSW52YWxpZFZvdGVyAAMANEludmFsaWRXaW5uZXIABAAwSW52YWxpZFNjb3JlAAUAMEludmFsaWRSb3VuZAAGACxTY29yZVRvb0xvdwAHAFBGYWlsZWRUb0JvdW5kU3VwcG9ydAAIADBOcG9zRWxlY3Rpb24EAIUJAWBzcF9ucG9zX2VsZWN0aW9uczo6RXJyb3IACQAoSW5jb21wbGV0ZQAKAACFCQhEc3BfbnBvc19lbGVjdGlvbnMURXJyb3IAAShYU29sdXRpb25XZWlnaHRPdmVyZmxvdwAAAFhTb2x1dGlvblRhcmdldE92ZXJmbG93AAEAUFNvbHV0aW9uSW52YWxpZEluZGV4AAIAYFNvbHV0aW9uSW52YWxpZFBhZ2VJbmRleAADADxBcml0aG1ldGljRXJyb3IABABISW52YWxpZFN1cHBvcnRFZGdlAAUANFRvb01hbnlWb3RlcnMABgA4Qm91bmRzRXhjZWVkZWQABwA4RHVwbGljYXRlVm90ZXIACAA8RHVwbGljYXRlVGFyZ2V0AAkAAIkJBBhPcHRpb24EBFQB1QUBCBBOb25lAAAAEFNvbWUEANUFAAABAACNCRCQcGFsbGV0X2VsZWN0aW9uX3Byb3ZpZGVyX211bHRpX2Jsb2NrGHNpZ25lZBhwYWxsZXQURXZlbnQEBFQAARwoUmVnaXN0ZXJlZAwAOAEMdTMyAAAEATBUOjpBY2NvdW50SWQAANUFATRFbGVjdGlvblNjb3JlAAAEUQFVcGNvbWluZyBzdWJtaXNzaW9uIGhhcyBiZWVuIHJlZ2lzdGVyZWQgZm9yIHRoZSBnaXZlbiBhY2NvdW50LCB3aXRoIHRoZSBnaXZlbiBzY29yZS4YU3RvcmVkDAA4AQx1MzIAAAQBMFQ6OkFjY291bnRJZAAAOAEkUGFnZUluZGV4AAEEXQFBIHBhZ2Ugb2Ygc29sdXRpb24gc29sdXRpb24gd2l0aCB0aGUgZ2l2ZW4gaW5kZXggaGFzIGJlZW4gc3RvcmVkIGZvciB0aGUgZ2l2ZW4gYWNjb3VudC4gUmV3YXJkZWQMADgBDHUzMgAABAEwVDo6QWNjb3VudElkAABZAQEwQmFsYW5jZU9mPFQ+AAIE6FRoZSBnaXZlbiBhY2NvdW50IGhhcyBiZWVuIHJld2FyZGVkIHdpdGggdGhlIGdpdmVuIGFtb3VudC4cU2xhc2hlZAwAOAEMdTMyAAAEATBUOjpBY2NvdW50SWQAAFkBATBCYWxhbmNlT2Y8VD4AAwTkVGhlIGdpdmVuIGFjY291bnQgaGFzIGJlZW4gc2xhc2hlZCB3aXRoIHRoZSBnaXZlbiBhbW91bnQuHEVqZWN0ZWQIADgBDHUzMgAABAEwVDo6QWNjb3VudElkAAQE1FRoZSBnaXZlbiBzb2x1dGlvbiwgZm9yIHRoZSBnaXZlbiByb3VuZCwgd2FzIGVqZWN0ZWQuJERpc2NhcmRlZAgAOAEMdTMyAAAEATBUOjpBY2NvdW50SWQABQSUVGhlIGdpdmVuIGFjY291bnQgaGFzIGJlZW4gZGlzY2FyZGVkLhhCYWlsZWQIADgBDHUzMgAABAEwVDo6QWNjb3VudElkAAYEdFRoZSBnaXZlbiBhY2NvdW50IGhhcyBiYWlsZWQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0kQkQUHBhbGxldF9zdGFraW5nX2FzeW5jGHBhbGxldBhwYWxsZXQURXZlbnQEBFQAAWwcRXJhUGFpZAwBJGVyYV9pbmRleDgBIEVyYUluZGV4AAFAdmFsaWRhdG9yX3BheW91dFkBATBCYWxhbmNlT2Y8VD4AASRyZW1haW5kZXJZAQEwQmFsYW5jZU9mPFQ+AAAUcFRoZSBlcmEgcGF5b3V0IGhhcyBiZWVuIHNldC4ADQFJbiBub24tbWludGluZyBtb2RlLCBgdmFsaWRhdG9yX3BheW91dGAgaXMgdGhlIHN0YWtlciByZXdhcmQgYnVkZ2V0BQFzbmFwc2hvdHRlZCBmcm9tIHRoZSBnZW5lcmFsIHBvdCwgYW5kIGByZW1haW5kZXJgIGlzIGFsd2F5cyB6ZXJvLiEBSW4gbGVnYWN5IG1pbnRpbmcgbW9kZSwgYm90aCBmaWVsZHMgcmVmbGVjdCB0aGUgYEVyYVBheW91dGAgY29tcHV0YXRpb24uIFJld2FyZGVkDAEUc3Rhc2gEATBUOjpBY2NvdW50SWQAARBkZXN0wQYBfFJld2FyZERlc3RpbmF0aW9uPFQ6OkFjY291bnRJZD4AARhhbW91bnRZAQEwQmFsYW5jZU9mPFQ+AAEEDQFUaGUgbm9taW5hdG9yIGhhcyBiZWVuIHJld2FyZGVkIGJ5IHRoaXMgYW1vdW50IHRvIHRoaXMgZGVzdGluYXRpb24uHFNsYXNoZWQIARhzdGFrZXIEATBUOjpBY2NvdW50SWQAARhhbW91bnRZAQEwQmFsYW5jZU9mPFQ+AAIEHQFBIHN0YWtlciAodmFsaWRhdG9yIG9yIG5vbWluYXRvcikgaGFzIGJlZW4gc2xhc2hlZCBieSB0aGUgZ2l2ZW4gYW1vdW50LmhPbGRTbGFzaGluZ1JlcG9ydERpc2NhcmRlZAQBNHNlc3Npb25faW5kZXg4ATBTZXNzaW9uSW5kZXgAAwgZAUFuIG9sZCBzbGFzaGluZyByZXBvcnQgZnJvbSBhIHByaW9yIGVyYSB3YXMgZGlzY2FyZGVkIGJlY2F1c2UgaXQgY291bGREbm90IGJlIHByb2Nlc3NlZC4YQm9uZGVkCAEUc3Rhc2gEATBUOjpBY2NvdW50SWQAARhhbW91bnRZAQEwQmFsYW5jZU9mPFQ+AAQQ0EFuIGFjY291bnQgaGFzIGJvbmRlZCB0aGlzIGFtb3VudC4gXFtzdGFzaCwgYW1vdW50XF0ATQFOT1RFOiBUaGlzIGV2ZW50IGlzIG9ubHkgZW1pdHRlZCB3aGVuIGZ1bmRzIGFyZSBib25kZWQgdmlhIGEgZGlzcGF0Y2hhYmxlLiBOb3RhYmx5LCEBaXQgd2lsbCBub3QgYmUgZW1pdHRlZCBmb3Igc3Rha2luZyByZXdhcmRzIHdoZW4gdGhleSBhcmUgYWRkZWQgdG8gc3Rha2UuIFVuYm9uZGVkCAEUc3Rhc2gEATBUOjpBY2NvdW50SWQAARhhbW91bnRZAQEwQmFsYW5jZU9mPFQ+AAUEkEFuIGFjY291bnQgaGFzIHVuYm9uZGVkIHRoaXMgYW1vdW50LiRXaXRoZHJhd24IARRzdGFzaAQBMFQ6OkFjY291bnRJZAABGGFtb3VudFkBATBCYWxhbmNlT2Y8VD4ABghZAUFuIGFjY291bnQgaGFzIGNhbGxlZCBgd2l0aGRyYXdfdW5ib25kZWRgIGFuZCByZW1vdmVkIHVuYm9uZGluZyBjaHVua3Mgd29ydGggYEJhbGFuY2VgZGZyb20gdGhlIHVubG9ja2luZyBxdWV1ZS40U3Rha2VyUmVtb3ZlZAQBFHN0YXNoBAEwVDo6QWNjb3VudElkAAcIVQFBIHN1YnNlcXVlbnQgZXZlbnQgb2YgYFdpdGhkcmF3bmAsIGluZGljYXRpbmcgdGhhdCBgc3Rhc2hgIHdhcyBmdWxseSByZW1vdmVkIGZyb20gdGhlHHN5c3RlbS4YS2lja2VkCAEkbm9taW5hdG9yBAEwVDo6QWNjb3VudElkAAEUc3Rhc2gEATBUOjpBY2NvdW50SWQACAS0QSBub21pbmF0b3IgaGFzIGJlZW4ga2lja2VkIGZyb20gYSB2YWxpZGF0b3IuHENoaWxsZWQEARRzdGFzaAQBMFQ6OkFjY291bnRJZAAJBCEBQW4gYWNjb3VudCBoYXMgc3RvcHBlZCBwYXJ0aWNpcGF0aW5nIGFzIGVpdGhlciBhIHZhbGlkYXRvciBvciBub21pbmF0b3IuNFBheW91dFN0YXJ0ZWQQASRlcmFfaW5kZXg4ASBFcmFJbmRleAABPHZhbGlkYXRvcl9zdGFzaAQBMFQ6OkFjY291bnRJZAABEHBhZ2U4ARBQYWdlAAEQbmV4dOQBME9wdGlvbjxQYWdlPgAKBFkBQSBQYWdlIG9mIHN0YWtlcnMgcmV3YXJkcyBhcmUgZ2V0dGluZyBwYWlkLiBgbmV4dGAgaXMgYE5vbmVgIGlmIGFsbCBwYWdlcyBhcmUgY2xhaW1lZC5EVmFsaWRhdG9yUHJlZnNTZXQIARRzdGFzaAQBMFQ6OkFjY291bnRJZAABFHByZWZzxQYBOFZhbGlkYXRvclByZWZzAAsEmEEgdmFsaWRhdG9yIGhhcyBzZXQgdGhlaXIgcHJlZmVyZW5jZXMuaFNuYXBzaG90Vm90ZXJzU2l6ZUV4Y2VlZGVkBAEQc2l6ZTgBDHUzMgAMBGhWb3RlcnMgc2l6ZSBsaW1pdCByZWFjaGVkLmxTbmFwc2hvdFRhcmdldHNTaXplRXhjZWVkZWQEARBzaXplOAEMdTMyAA0EbFRhcmdldHMgc2l6ZSBsaW1pdCByZWFjaGVkLiBGb3JjZUVyYQQBEG1vZGWVCQEcRm9yY2luZwAOAGRDb250cm9sbGVyQmF0Y2hEZXByZWNhdGVkBAEgZmFpbHVyZXM4AQx1MzIADwSkUmVwb3J0IG9mIGEgY29udHJvbGxlciBiYXRjaCBkZXByZWNhdGlvbi5AQ3VycmVuY3lNaWdyYXRlZAgBFHN0YXNoBAEwVDo6QWNjb3VudElkAAE4Zm9yY2Vfd2l0aGRyYXdZAQEwQmFsYW5jZU9mPFQ+ABAIVQFTdGFraW5nIGJhbGFuY2UgbWlncmF0ZWQgZnJvbSBsb2NrcyB0byBob2xkcywgd2l0aCBhbnkgYmFsYW5jZSB0aGF0IGNvdWxkIG5vdCBiZSBoZWxkTGlzIGZvcmNlIHdpdGhkcmF3bi5YUGFnZWRFbGVjdGlvblByb2NlZWRlZAgBEHBhZ2U4ASRQYWdlSW5kZXgAARhyZXN1bHSZCQFAUmVzdWx0PHUzMiwgdTMyPgARJEEBQSBwYWdlIGZyb20gYSBtdWx0aS1wYWdlIGVsZWN0aW9uIHdhcyBmZXRjaGVkLiBBIG51bWJlciBvZiB0aGVzZSBhcmUgZm9sbG93ZWQgYnlEYFN0YWtlcnNFbGVjdGVkYC4A8GBPayhjb3VudClgIGluZGljYXRlcyB0aGUgZ2l2ZSBudW1iZXIgb2Ygc3Rhc2hlcyB3ZXJlIGFkZGVkLgUBYEVycihpbmRleClgIGluZGljYXRlcyB0aGF0IHRoZSBzdGFzaGVzIGFmdGVyIGluZGV4IHdlcmUgZHJvcHBlZC5BAWBFcnIoMClgIGluZGljYXRlcyB0aGF0IGFuIGVycm9yIGhhcHBlbmVkIGJ1dCBubyBzdGFzaGVzIHdlcmUgZHJvcHBlZCBub3IgYWRkZWQuAFEBVGhlIGVycm9yIGluZGljYXRlcyB0aGF0IGEgbnVtYmVyIG9mIHZhbGlkYXRvcnMgd2VyZSBkcm9wcGVkIGR1ZSB0byBleGNlc3Mgc2l6ZSwgYnV0jHRoZSBvdmVyYWxsIGVsZWN0aW9uIHdpbGwgY29udGludWUuPE9mZmVuY2VSZXBvcnRlZAwBLG9mZmVuY2VfZXJhOAEgRXJhSW5kZXgAASR2YWxpZGF0b3IEATBUOjpBY2NvdW50SWQAASBmcmFjdGlvbqEBARxQZXJiaWxsABIITQFBbiBvZmZlbmNlIGZvciB0aGUgZ2l2ZW4gdmFsaWRhdG9yLCBmb3IgdGhlIGdpdmVuIHBlcmNlbnRhZ2Ugb2YgdGhlaXIgc3Rha2UsIGF0IHRoZWxnaXZlbiBlcmEgYXMgYmVlbiByZXBvcnRlZC40U2xhc2hDb21wdXRlZBABLG9mZmVuY2VfZXJhOAEgRXJhSW5kZXgAASRzbGFzaF9lcmE4ASBFcmFJbmRleAABIG9mZmVuZGVyBAEwVDo6QWNjb3VudElkAAEQcGFnZTgBDHUzMgATBDEBQW4gb2ZmZW5jZSBoYXMgYmVlbiBwcm9jZXNzZWQgYW5kIHRoZSBjb3JyZXNwb25kaW5nIHNsYXNoIGhhcyBiZWVuIGNvbXB1dGVkLjhTbGFzaENhbmNlbGxlZAgBJHNsYXNoX2VyYTgBIEVyYUluZGV4AAEkdmFsaWRhdG9yBAEwVDo6QWNjb3VudElkABQEmEFuIHVuYXBwbGllZCBzbGFzaCBoYXMgYmVlbiBjYW5jZWxsZWQuOFNlc3Npb25Sb3RhdGVkDAFAc3RhcnRpbmdfc2Vzc2lvbjgBMFNlc3Npb25JbmRleAABKGFjdGl2ZV9lcmE4ASBFcmFJbmRleAABLHBsYW5uZWRfZXJhOAEgRXJhSW5kZXgAFRCIU2Vzc2lvbiBjaGFuZ2UgaGFzIGJlZW4gdHJpZ2dlcmVkLgBZAUlmIHBsYW5uZWRfZXJhIGlzIG9uZSBlcmEgYWhlYWQgb2YgYWN0aXZlX2VyYSwgaXQgaW1wbGllcyBuZXcgZXJhIGlzIGJlaW5nIHBsYW5uZWQgYW5kUGVsZWN0aW9uIGlzIG9uZ29pbmcuKFVuZXhwZWN0ZWQEAJ0JAURVbmV4cGVjdGVkS2luZDxUPgAWCA0BU29tZXRoaW5nIG9jY3VycmVkIHRoYXQgc2hvdWxkIG5ldmVyIGhhcHBlbiB1bmRlciBub3JtYWwgb3BlcmF0aW9uLrxMb2dnZWQgYXMgYW4gZXZlbnQgZm9yIGZhaWwtc2FmZSBvYnNlcnZhYmlsaXR5LjRPZmZlbmNlVG9vT2xkDAEsb2ZmZW5jZV9lcmE4ASBFcmFJbmRleAABJHZhbGlkYXRvcgQBMFQ6OkFjY291bnRJZAABIGZyYWN0aW9uoQEBHFBlcmJpbGwAFwQ9AUFuIG9mZmVuY2Ugd2FzIHJlcG9ydGVkIHRoYXQgd2FzIHRvbyBvbGQgdG8gYmUgcHJvY2Vzc2VkLCBhbmQgdGh1cyB3YXMgZHJvcHBlZC4kRXJhUHJ1bmVkBAEUaW5kZXg4ASBFcmFJbmRleAAYBKxBbiBvbGQgZXJhIHdpdGggdGhlIGdpdmVuIGluZGV4IHdhcyBwcnVuZWQuWFZhbGlkYXRvckluY2VudGl2ZVBhaWQQAQxlcmE4ASBFcmFJbmRleAABPHZhbGlkYXRvcl9zdGFzaAQBMFQ6OkFjY291bnRJZAABEGRlc3TBBgF8UmV3YXJkRGVzdGluYXRpb248VDo6QWNjb3VudElkPgABGGFtb3VudFkBATBCYWxhbmNlT2Y8VD4AGQT0VGhlIHZhbGlkYXRvciBoYXMgYmVlbiBwYWlkIHRoZWlyIHNlbGYtc3Rha2UgaW5jZW50aXZlIGJvbnVzLmxWYWxpZGF0b3JJbmNlbnRpdmVDb25maWdTZXQMAUhvcHRpbXVtX3NlbGZfc3Rha2VZAQEwQmFsYW5jZU9mPFQ+AAFMaGFyZF9jYXBfc2VsZl9zdGFrZVkBATBCYWxhbmNlT2Y8VD4AATBzbG9wZV9mYWN0b3KhAQEcUGVyYmlsbAAaBPhWYWxpZGF0b3Igc2VsZi1zdGFrZSBpbmNlbnRpdmUgY29uZmlndXJhdGlvbiBoYXMgYmVlbiB1cGRhdGVkLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldJUJCFBwYWxsZXRfc3Rha2luZ19hc3luYxxGb3JjaW5nAAEQKE5vdEZvcmNpbmcAAAAgRm9yY2VOZXcAAQAkRm9yY2VOb25lAAIALEZvcmNlQWx3YXlzAAMAAJkJBBhSZXN1bHQIBFQBOARFATgBCAhPawQAOAAAAAAMRXJyBAA4AAABAACdCRBQcGFsbGV0X3N0YWtpbmdfYXN5bmMYcGFsbGV0GHBhbGxldDhVbmV4cGVjdGVkS2luZAQEVAABGGBFcmFEdXJhdGlvbkJvdW5kRXhjZWVkZWQAAABoVW5rbm93blZhbGlkYXRvckFjdGl2YXRpb24AAQBgUGFnZWRFbGVjdGlvbk91dE9mV2VpZ2h0DAEQcGFnZTgBJFBhZ2VJbmRleAABIHJlcXVpcmVkFQEBGFdlaWdodAABDGhhZBUBARhXZWlnaHQAAgAwTWlzc2luZ1BheWVlCAEMZXJhOAEgRXJhSW5kZXgAARRzdGFzaAQBMFQ6OkFjY291bnRJZAADAIBWYWxpZGF0b3JJbmNlbnRpdmVXZWlnaHRNaXNtYXRjaAQBDGVyYTgBIEVyYUluZGV4AAQAgFZhbGlkYXRvckluY2VudGl2ZVRyYW5zZmVyRmFpbGVkBAEMZXJhOAEgRXJhSW5kZXgABQAAoQkMfGluZGl2X3BhbGxldF9tZW1iZXJzX3N1YnNjcmliZXIYcGFsbGV0FEV2ZW50BARUAAEYUFJpbmdSb290c0luaXRpYWxpemVkCAEUY291bnQ4AQx1MzIEhE51bWJlciBvZiByaW5nIHJvb3RzIGluaXRpYWxpemVkLgEgc2VxdWVuY2UoAThTZXF1ZW5jZU51bWJlcgSwU2VxdWVuY2UgbnVtYmVyIG9mIHRoZSBpbml0aWFsaXphdGlvbiBiYXRjaC4ABMxSaW5nIHJvb3RzIGhhdmUgYmVlbiBpbml0aWFsaXplZCBmcm9tIHRoZSBub3RpZmllci5AUmluZ1Jvb3RzVXBkYXRlZAgBFGNvdW50OAEMdTMyBHBOdW1iZXIgb2YgdXBkYXRlcyBwcm9jZXNzZWQuASBzZXF1ZW5jZSgBOFNlcXVlbmNlTnVtYmVyBHRTZXF1ZW5jZSBudW1iZXIgb2YgdGhlIGJhdGNoLgEEmFJpbmcgcm9vdCB1cGRhdGVzIGhhdmUgYmVlbiBwcm9jZXNzZWQuWFN1YnNjcmlwdGlvblRlcm1pbmF0ZWQEAURub3RpZmllcl9ub3RpZmllZF0BARBib29sBNBXaGV0aGVyIHRoZSB1bnN1YnNjcmliZSBYQ00gd2FzIHN1Y2Nlc3NmdWxseSBxdWV1ZWQuAgSEU3Vic2NyaXB0aW9uIGhhcyBiZWVuIHRlcm1pbmF0ZWQuUE1pc3NpbmdSaW5nc0RldGVjdGVkCAEoaWRlbnRpZmllcggBKElkZW50aWZpZXIEbFJpbmcgY29sbGVjdGlvbiBpZGVudGlmaWVyLgEUY291bnQ4AQx1MzIEuE51bWJlciBvZiBuZXdseSBkZXRlY3RlZCBtaXNzaW5nIHJpbmcgaW5kaWNlcy4DBOBOZXcgbWlzc2luZyByaW5nIHJvb3RzIGRldGVjdGVkIGR1cmluZyBiYXRjaCBwcm9jZXNzaW5nLkRSZXBsYXlSZXF1ZXN0U2VudAgBKGlkZW50aWZpZXIIAShJZGVudGlmaWVyBGxSaW5nIGNvbGxlY3Rpb24gaWRlbnRpZmllci4BNGluZGljZXNfY291bnQ4AQx1MzIEoE51bWJlciBvZiBtaXNzaW5nIGluZGljZXMgaW4gdGhpcyBjaHVuay4EBLRSZXBsYXkgcmVxdWVzdCBzdWNjZXNzZnVsbHkgc2VudCB0byBub3RpZmllci5gRGVsZXRlZEluZGljZXNBdENhcGFjaXR5BAEoaWRlbnRpZmllcggBKElkZW50aWZpZXIEbFJpbmcgY29sbGVjdGlvbiBpZGVudGlmaWVyLgUEDQFNaXNzaW5nIHJpbmcgc2NhbiBza2lwcGVkIGJlY2F1c2UgZGVsZXRlZF9pbmRpY2VzIHJlYWNoZWQgY2FwYWNpdHkuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0pQkMbGluZGl2X3BhbGxldF9hbGlhc19hY2NvdW50cxhwYWxsZXQURXZlbnQEBFQAARA8QWxpYXNBY2NvdW50U2V0DAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZARwVGhlIGFjY291bnQgdGhhdCB3YXMgbGlua2VkLgEoY29sbGVjdGlvbggBKElkZW50aWZpZXIEaFRoZSBjb2xsZWN0aW9uIGlkZW50aWZpZXIuARRhbGlhcwgBFEFsaWFzBFRUaGUgY29udGV4dHVhbCBhbGlhcy4ABKRBbiBhbGlhcyBhY2NvdW50IGhhcyBiZWVuIHNldCBvciB1cGRhdGVkLkRBbGlhc0FjY291bnRVbnNldAQBHGFjY291bnQEATBUOjpBY2NvdW50SWQEeFRoZSBhY2NvdW50IHRoYXQgd2FzIHVubGlua2VkLgEEiEFuIGFsaWFzIGFjY291bnQgaGFzIGJlZW4gcmVtb3ZlZC5MU3RhbGVBbGlhc0NsZWFuZWRVcAwBHGFjY291bnQEATBUOjpBY2NvdW50SWQEeFRoZSBhY2NvdW50IHRoYXQgd2FzIHVubGlua2VkLgEoY29sbGVjdGlvbggBKElkZW50aWZpZXIEaFRoZSBjb2xsZWN0aW9uIGlkZW50aWZpZXIuARRhbGlhcwgBFEFsaWFzBFRUaGUgY29udGV4dHVhbCBhbGlhcy4CBJRBIHN0YWxlIGFsaWFzIG1hcHBpbmcgd2FzIGNsZWFuZWQgdXAuLEFsaWFzRmVlU2V0BAEMZmVlWQEBMEJhbGFuY2VPZjxUPgADBMRUaGUgUEdBUyBmZWUgZm9yIGFsaWFzIHJlZ2lzdHJhdGlvbnMgd2FzIGNoYW5nZWQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0qQkMRGluZGl2X3BhbGxldF9wZ2FzGHBhbGxldBRFdmVudAQEVAABDCxQZ2FzQ2xhaW1lZBQBFGFsaWFzCAEUQWxpYXMAARh0YXJnZXQEATBUOjpBY2NvdW50SWQAARhhbW91bnRZAQEhATw8VCBhcyBDb25maWc+OjpGdW5naWJsZXMgYXMgZnVuZ2libGVzOjpJbnNwZWN0PFQ6OkFjY291bnRJZD4+OjoKQmFsYW5jZQABKGNvbGxlY3Rpb24ZBAE4UGdhc0NvbGxlY3Rpb24AAQxkYXk4AQx1MzIAAAR0UEdBUyB3YXMgY2xhaW1lZCBieSBhIHBlcnNvbi5AUGdhc0Fzc2V0Q3JlYXRlZAABBGxUaGUgUEdBUyBhc3NldCB3YXMgY3JlYXRlZC5cUGdhc0NsYWltUmVjb3Jkc0NsZWFuZWQIASRkYXlfaW5kZXg4AQx1MzIAARRjb3VudDgBDHUzMgACBJxPbGQgUEdBUyBjbGFpbSByZWNvcmRzIHdlcmUgY2xlYW5lZCB1cC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXStCQw0cGFsbGV0X3Jldml2ZRhwYWxsZXQURXZlbnQEBFQAAQw8Q29udHJhY3RFbWl0dGVkDAEgY29udHJhY3Q9BwEQSDE2MASQVGhlIGNvbnRyYWN0IHRoYXQgZW1pdHRlZCB0aGUgZXZlbnQuARBkYXRhGAEcVmVjPHU4Pgg1AURhdGEgc3VwcGxpZWQgYnkgdGhlIGNvbnRyYWN0LiBNZXRhZGF0YSBnZW5lcmF0ZWQgZHVyaW5nIGNvbnRyYWN0IGNvbXBpbGF0aW9uXGlzIG5lZWRlZCB0byBkZWNvZGUgaXQuARh0b3BpY3PEASRWZWM8SDI1Nj4IpEEgbGlzdCBvZiB0b3BpY3MgdXNlZCB0byBpbmRleCB0aGUgZXZlbnQu7E51bWJlciBvZiB0b3BpY3MgaXMgY2FwcGVkIGJ5IFtgbGltaXRzOjpOVU1fRVZFTlRfVE9QSUNTYF0uAAScQSBjdXN0b20gZXZlbnQgZW1pdHRlZCBieSB0aGUgY29udHJhY3QuMEluc3RhbnRpYXRlZAgBIGRlcGxveWVyPQcBEEgxNjAAASBjb250cmFjdD0HARBIMTYwAAEE3ENvbnRyYWN0IGRlcGxveWVkIGJ5IGRlcGxveWVyIGF0IHRoZSBzcGVjaWZpZWQgYWRkcmVzcy5IRXRoRXh0cmluc2ljUmV2ZXJ0BAE4ZGlzcGF0Y2hfZXJyb3IJCAE0RGlzcGF0Y2hFcnJvcgACGLRFbWl0dGVkIHdoZW4gYW4gRXRoZXJldW0gdHJhbnNhY3Rpb24gcmV2ZXJ0cy4AKQFFdGhlcmV1bSB0cmFuc2FjdGlvbnMgYWx3YXlzIGNvbXBsZXRlIHN1Y2Nlc3NmdWxseSBhdCB0aGUgZXh0cmluc2ljIGxldmVsLNhhcyBldmVuIHJldmVydGVkIGNhbGxzIG11c3Qgc3RvcmUgdGhlaXIgYFJlY2VpcHRJbmZvYC4lAVRvIGRpc3Rpbmd1aXNoIHJldmVydGVkIGNhbGxzIGZyb20gc3VjY2Vzc2Z1bCBvbmVzLCB0aGlzIGV2ZW50IGlzIGVtaXR0ZWSEZm9yIGZhaWxlZCBFdGhlcmV1bSB0cmFuc2FjdGlvbnMuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0sQkMaGluZGl2X3BhbGxldF9kb3Ruc19nYXRld2F5GHBhbGxldBRFdmVudAQEVAABFDBOYW1lUmVzZXJ2ZWQUASRjYW5kaWRhdGUEATBUOjpBY2NvdW50SWQEmFRoZSBjYW5kaWRhdGUgd2hvc2UgbmFtZSB3YXMgcmVzZXJ2ZWQuASBhdHRlc3RlcgQBMFQ6OkFjY291bnRJZASsVGhlIGF0dGVzdGVyIHdobyBwZXJmb3JtZWQgdGhlIHJlc2VydmF0aW9uLgEobGl0ZV9sYWJlbFEHASRCYXNlTGFiZWwEuFRoZSBsaXRlLXBlcnNvbiBsYWJlbCAoYDxkbnMtc3RlbT4uPGRpZ2l0cz5gKS4BIGNoYXRfa2V5VQcBHENoYXRLZXkE5FRoZSBFQ0RIIGNoYXQga2V5IHN0b3JlZCBhbG9uZ3NpZGUgdGhlIGxpdGUtcGVyc29uIGxhYmVsLgFMcmVzZXJ2ZWRfYmFzZV9sYWJlbFkHAURPcHRpb248QmFzZUxhYmVsPgQFAVRoZSBvcHRpb25hbCBiYXNlIGxhYmVsIHJlc2VydmVkIGZvciBmdXR1cmUgZnVsbC1wZXJzb24gY2xhaW1pbmcuAATwQSB1c2VybmFtZSBoYXMgYmVlbiByZXNlcnZlZCBmb3IgYSBjYW5kaWRhdGUgYnkgYW4gYXR0ZXN0ZXIuOE5hbWVSZWdpc3RlcmVkEAEUYWxpYXMIARRBbGlhcwSYVGhlIGFsaWFzIGRlcml2ZWQgZnJvbSB0aGUgcmluZyBwcm9vZi4BHGFjY291bnQEATBUOjpBY2NvdW50SWQEsFRoZSBhY2NvdW50IHRoYXQgaW5pdGlhdGVkIHRoZSByZWdpc3RyYXRpb24uARRsYWJlbFEHASRCYXNlTGFiZWwEhFRoZSByZWdpc3RlcmVkIGZ1bGwtcGVyc29uIGxhYmVsLgEQbGlua10HARBMaW5rBORIb3cgdGhlIGZ1bGwtcGVyc29uIGxhYmVsIHJlbGF0ZXMgdG8gYSBsaXRlLXBlcnNvbiBsYWJlbC4BBNBBIHVzZXJuYW1lIGhhcyBiZWVuIHJlZ2lzdGVyZWQgYnkgYSB2ZXJpZmllZCBwZXJzb24udEF0dGVzdGF0aW9uQWxsb3dhbmNlSW5jcmVhc2VkCAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZARUVGhlIGF0dGVzdGVyIGFjY291bnQuARRjb3VudDgBDHUzMgSEVGhlIG51bWJlciBvZiBhdHRlc3RhdGlvbnMgYWRkZWQuAgTMQXR0ZXN0YXRpb24gYWxsb3dhbmNlIHdhcyBpbmNyZWFzZWQgZm9yIGFuIGFjY291bnQueEFsbEF0dGVzdGF0aW9uQWxsb3dhbmNlQ2xlYXJlZAQBIGF0dGVzdGVyBAEwVDo6QWNjb3VudElkBFRUaGUgYXR0ZXN0ZXIgYWNjb3VudC4DBPBBbGwgYXR0ZXN0YXRpb24gYWxsb3dhbmNlIGhhcyBiZWVuIHJlbW92ZWQgZm9yIHRoZSBhdHRlc3Rlci5QRGlzcGF0Y2hlckFkZHJlc3NTZXQEARxhZGRyZXNzPQcBEEgxNjAEZFRoZSBuZXcgY29udHJhY3QgYWRkcmVzcy4EBNRUaGUgYFJvb3RHYXRld2F5RGlzcGF0Y2hlcmAgY29udHJhY3QgYWRkcmVzcyB3YXMgc2V0LgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldLUJDHxpbmRpdl9wYWxsZXRfb3JpZ2luX3Jlc3RyaWN0aW9uGHBhbGxldBRFdmVudAQEVAABBDBVc2FnZUNsZWFuZWQEARhlbnRpdHllBwFMVDo6UmVzdHJpY3RlZEVudGl0eQAABHxVc2FnZSBmb3IgYW4gZW50aXR5IGlzIGNsZWFuZWQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0uQkMLHBhbGxldF9zdWRvGHBhbGxldBRFdmVudAQEVAABEBRTdWRpZAQBLHN1ZG9fcmVzdWx0LQgBOERpc3BhdGNoUmVzdWx0BLRUaGUgcmVzdWx0IG9mIHRoZSBjYWxsIG1hZGUgYnkgdGhlIHN1ZG8gdXNlci4ABHBBIHN1ZG8gY2FsbCBqdXN0IHRvb2sgcGxhY2UuKEtleUNoYW5nZWQIAQxvbGSRAQFQT3B0aW9uPFQ6OkFjY291bnRJZD4EtFRoZSBvbGQgc3VkbyBrZXkgKGlmIG9uZSB3YXMgcHJldmlvdXNseSBzZXQpLgEMbmV3BAEwVDo6QWNjb3VudElkBIhUaGUgbmV3IHN1ZG8ga2V5IChpZiBvbmUgd2FzIHNldCkuAQR4VGhlIHN1ZG8ga2V5IGhhcyBiZWVuIHVwZGF0ZWQuKEtleVJlbW92ZWQAAgSAVGhlIGtleSB3YXMgcGVybWFuZW50bHkgcmVtb3ZlZC4oU3Vkb0FzRG9uZQQBLHN1ZG9fcmVzdWx0LQgBOERpc3BhdGNoUmVzdWx0BLRUaGUgcmVzdWx0IG9mIHRoZSBjYWxsIG1hZGUgYnkgdGhlIHN1ZG8gdXNlci4DBMhBIFtzdWRvX2FzXShQYWxsZXQ6OnN1ZG9fYXMpIGNhbGwganVzdCB0b29rIHBsYWNlLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldL0JDFRwYWxsZXRfcGdhc19hbGxvd2FuY2UYcGFsbGV0FEV2ZW50BARUAAEELFBHQVNGZWVQYWlkCAEMd2hvBAEwVDo6QWNjb3VudElkAAEoYWN0dWFsX2ZlZVkBATBCYWxhbmNlT2Y8VD4AAAhFAUEgdHJhbnNhY3Rpb24gZmVlIGBhY3R1YWxfZmVlYCBoYXMgYmVlbiBwYWlkIGJ5IGB3aG9gIGluIFBHQVMgYW5kIGJ1cm5lZC4gTWlycm9yc+hbYHBhbGxldF90cmFuc2FjdGlvbl9wYXltZW50OjpFdmVudDo6VHJhbnNhY3Rpb25GZWVQYWlkYF0uBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0wQkMNHBhbGxldF9haF9vcHMYcGFsbGV0FEV2ZW50BARUAAEQXExlYXNlVW5yZXNlcnZlUmVtYWluaW5nDAEkZGVwb3NpdG9yBAEwVDo6QWNjb3VudElkAAEccGFyYV9pZKABGFBhcmFJZAABJHJlbWFpbmluZ1kBATBCYWxhbmNlT2Y8VD4AAAQRAVNvbWUgbGVhc2UgcmVzZXJ2ZSBjb3VsZCBub3QgYmUgdW5yZXNlcnZlZCBhbmQgbmVlZHMgbWFudWFsIGNsZWFudXAubENyb3dkbG9hblVucmVzZXJ2ZVJlbWFpbmluZwwBJGRlcG9zaXRvcgQBMFQ6OkFjY291bnRJZAABHHBhcmFfaWSgARhQYXJhSWQAASRyZW1haW5pbmdZAQEwQmFsYW5jZU9mPFQ+AAEEVQFTb21lIGFtb3VudCBmb3IgYSBjcm93ZGxvYW4gcmVzZXJ2ZSBjb3VsZCBub3QgYmUgdW5yZXNlcnZlZCBhbmQgbmVlZHMgbWFudWFsIGNsZWFudXAuRFNvdmVyZWlnbk1pZ3JhdGVkEAEccGFyYV9pZO0DAQx1MTYEvFRoZSBwYXJhY2hhaW4gSUQgdGhhdCBoYWQgaXRzIGFjY291bnQgbWlncmF0ZWQuARBmcm9tBAEwVDo6QWNjb3VudElkBKRUaGUgb2xkIGFjY291bnQgdGhhdCB3YXMgbWlncmF0ZWQgb3V0IG9mLgEIdG8EATBUOjpBY2NvdW50SWQEnFRoZSBuZXcgYWNjb3VudCB0aGF0IHdhcyBtaWdyYXRlZCBpbnRvLgE8ZGVyaXZhdGlvbl9wYXRocQcBIFZlYzx1MTY+BOxUaGUgZGVyaXZhdGlvbiBwYXRoIHRoYXQgd2FzIHVzZWQgdG8gdHJhbnNsYXRlIHRoZSBhY2NvdW50LgIIJQFBIHNvdmVyZWlnbiBwYXJhY2hhaW4gYWNjb3VudCBoYXMgYmVlbiBtaWdyYXRlZCBmcm9tIGl0cyBjaGlsZCB0byBzaWJsaW5nPHJlcHJlc2VudGF0aW9uLjBGYWlsZWRUb0JvbmQIARxhY2NvdW50BAEwVDo6QWNjb3VudElkAAEYYW1vdW50WQEBMEJhbGFuY2VPZjxUPgADBJhGYWlsZWQgdG8gcmUtYm9uZCBzb21lIG1pZ3JhdGVkIGZ1bmRzLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldMUJCDBmcmFtZV9zeXN0ZW0UUGhhc2UAAQw4QXBwbHlFeHRyaW5zaWMEADgBDHUzMgAAADBGaW5hbGl6YXRpb24AAQA4SW5pdGlhbGl6YXRpb24AAgAAyQkAAALQAM0JCDBmcmFtZV9zeXN0ZW1YTGFzdFJ1bnRpbWVVcGdyYWRlSW5mbwAACAEwc3BlY192ZXJzaW9uZAFMY29kZWM6OkNvbXBhY3Q8dTMyPgABJHNwZWNfbmFtZdEJAURDb3c8J3N0YXRpYywgc3RyPgAA0QkEDENvdwQEVAHVCQAEANUJAAAA1QkAAAUCANkJCDBmcmFtZV9zeXN0ZW1gQ29kZVVwZ3JhZGVBdXRob3JpemF0aW9uBARUAAAIASRjb2RlX2hhc2hAARxUOjpIYXNoAAE0Y2hlY2tfdmVyc2lvbl0BARBib29sAADdCQwwZnJhbWVfc3lzdGVtGGxpbWl0czBCbG9ja1dlaWdodHMAAAwBKGJhc2VfYmxvY2sVAQEYV2VpZ2h0AAEkbWF4X2Jsb2NrFQEBGFdlaWdodAABJHBlcl9jbGFzc+EJAYRQZXJEaXNwYXRjaENsYXNzPFdlaWdodHNQZXJDbGFzcz4AAOEJDDRmcmFtZV9zdXBwb3J0IGRpc3BhdGNoQFBlckRpc3BhdGNoQ2xhc3MEBFQB5QkADAEYbm9ybWFs5QkBBFQAASxvcGVyYXRpb25hbOUJAQRUAAEkbWFuZGF0b3J55QkBBFQAAOUJDDBmcmFtZV9zeXN0ZW0YbGltaXRzPFdlaWdodHNQZXJDbGFzcwAAEAE4YmFzZV9leHRyaW5zaWMVAQEYV2VpZ2h0AAE0bWF4X2V4dHJpbnNpYxEBAThPcHRpb248V2VpZ2h0PgABJG1heF90b3RhbBEBAThPcHRpb248V2VpZ2h0PgABIHJlc2VydmVkEQEBOE9wdGlvbjxXZWlnaHQ+AADpCQwwZnJhbWVfc3lzdGVtGGxpbWl0cyxCbG9ja0xlbmd0aAAACAEMbWF47QkBVFBlckRpc3BhdGNoQ2xhc3M8dTMyPgABPG1heF9oZWFkZXJfc2l6ZeQBLE9wdGlvbjx1MzI+AADtCQw0ZnJhbWVfc3VwcG9ydCBkaXNwYXRjaEBQZXJEaXNwYXRjaENsYXNzBARUATgADAEYbm9ybWFsOAEEVAABLG9wZXJhdGlvbmFsOAEEVAABJG1hbmRhdG9yeTgBBFQAAPEJCChzcF93ZWlnaHRzPFJ1bnRpbWVEYldlaWdodAAACAEQcmVhZCgBDHU2NAABFHdyaXRlKAEMdTY0AAD1CQgoc3BfdmVyc2lvbjhSdW50aW1lVmVyc2lvbgAAIAEkc3BlY19uYW1l0QkBRENvdzwnc3RhdGljLCBzdHI+AAEkaW1wbF9uYW1l0QkBRENvdzwnc3RhdGljLCBzdHI+AAFEYXV0aG9yaW5nX3ZlcnNpb244AQx1MzIAATBzcGVjX3ZlcnNpb244AQx1MzIAATBpbXBsX3ZlcnNpb244AQx1MzIAARBhcGlz+QkBHEFwaXNWZWMAAUx0cmFuc2FjdGlvbl92ZXJzaW9uOAEMdTMyAAE4c3lzdGVtX3ZlcnNpb24MAQh1OAAA+QkEDENvdwQEVAH9CQAEAP0JAAAA/QkAAAIBCgABCgAABAh5AjgABQoMMGZyYW1lX3N5c3RlbRhwYWxsZXQURXJyb3IEBFQAASw8SW52YWxpZFNwZWNOYW1lAAAIEQFUaGUgbmFtZSBvZiBzcGVjaWZpY2F0aW9uIGRvZXMgbm90IG1hdGNoIGJldHdlZW4gdGhlIGN1cnJlbnQgcnVudGltZVBhbmQgdGhlIG5ldyBydW50aW1lLmhTcGVjVmVyc2lvbk5lZWRzVG9JbmNyZWFzZQABCEEBVGhlIHNwZWNpZmljYXRpb24gdmVyc2lvbiBpcyBub3QgYWxsb3dlZCB0byBkZWNyZWFzZSBiZXR3ZWVuIHRoZSBjdXJyZW50IHJ1bnRpbWVQYW5kIHRoZSBuZXcgcnVudGltZS50RmFpbGVkVG9FeHRyYWN0UnVudGltZVZlcnNpb24AAgzsRmFpbGVkIHRvIGV4dHJhY3QgdGhlIHJ1bnRpbWUgdmVyc2lvbiBmcm9tIHRoZSBuZXcgcnVudGltZS4ACQFFaXRoZXIgY2FsbGluZyBgQ29yZV92ZXJzaW9uYCBvciBkZWNvZGluZyBgUnVudGltZVZlcnNpb25gIGZhaWxlZC5MTm9uRGVmYXVsdENvbXBvc2l0ZQADBPxTdWljaWRlIGNhbGxlZCB3aGVuIHRoZSBhY2NvdW50IGhhcyBub24tZGVmYXVsdCBjb21wb3NpdGUgZGF0YS48Tm9uWmVyb1JlZkNvdW50AAQENQFUaGVyZSBpcyBhIG5vbi16ZXJvIHJlZmVyZW5jZSBjb3VudCBwcmV2ZW50aW5nIHRoZSBhY2NvdW50IGZyb20gYmVpbmcgcHVyZ2VkLjBDYWxsRmlsdGVyZWQABQTQVGhlIG9yaWdpbiBmaWx0ZXIgcHJldmVudCB0aGUgY2FsbCB0byBiZSBkaXNwYXRjaGVkLmxNdWx0aUJsb2NrTWlncmF0aW9uc09uZ29pbmcABgRVAUEgbXVsdGktYmxvY2sgbWlncmF0aW9uIGlzIG9uZ29pbmcgYW5kIHByZXZlbnRzIHRoZSBjdXJyZW50IGNvZGUgZnJvbSBiZWluZyByZXBsYWNlZC4sSW52YWxpZFRhc2sABwSQVGhlIHNwZWNpZmllZCBbYFRhc2tgXSBpcyBub3QgdmFsaWQuKEZhaWxlZFRhc2sACAS8VGhlIHNwZWNpZmllZCBbYFRhc2tgXSBmYWlsZWQgZHVyaW5nIGV4ZWN1dGlvbi5ETm90aGluZ0F1dGhvcml6ZWQACQRYTm8gdXBncmFkZSBhdXRob3JpemVkLjBVbmF1dGhvcml6ZWQACgSUVGhlIHN1Ym1pdHRlZCBjb2RlIGlzIG5vdCBhdXRob3JpemVkLgRsRXJyb3IgZm9yIHRoZSBTeXN0ZW0gcGFsbGV0CQoQKHNwX3J1bnRpbWUcZ2VuZXJpYxRibG9jaxRCbG9jawgYSGVhZGVyAWAkRXh0cmluc2ljAQ0KAAgBGGhlYWRlcmABGEhlYWRlcgABKGV4dHJpbnNpY3MhCgE4VmVjPEV4dHJpbnNpYz4AAA0KEChzcF9ydW50aW1lHGdlbmVyaWNMdW5jaGVja2VkX2V4dHJpbnNpY0hVbmNoZWNrZWRFeHRyaW5zaWMQHEFkZHJlc3MBABBDYWxsASAkU2lnbmF0dXJlAb0EFEV4dHJhAREKAAQAGAAAABEKCHRjdW11bHVzX3BhbGxldF93ZWlnaHRfcmVjbGFpbVBTdG9yYWdlV2VpZ2h0UmVjbGFpbQgEVAAEUwEVCgAEABUKAQRTAAAVCgAABCwZCqUHqQetB7EHtQe5B8EHxQfJBx0KABkKAAAEFHUHfQeBB40HmQcAHQoAAAQMzQfRB9kHACEKAAACDQoAJQoMfGN1bXVsdXNfcGFsbGV0X3BhcmFjaGFpbl9zeXN0ZW0wYmxvY2tfd2VpZ2h0PEJsb2NrV2VpZ2h0TW9kZQQEVAABDCBGdWxsQ29yZQQBHGNvbnRleHQ4AURCbG9ja051bWJlckZvcjxUPgAAAERQb3RlbnRpYWxGdWxsQ29yZQwBHGNvbnRleHQ4AURCbG9ja051bWJlckZvcjxUPgABXGZpcnN0X3RyYW5zYWN0aW9uX2luZGV45AEsT3B0aW9uPHUzMj4AATR0YXJnZXRfd2VpZ2h0FQEBGFdlaWdodAABADhGcmFjdGlvbk9mQ29yZQgBHGNvbnRleHQ4AURCbG9ja051bWJlckZvcjxUPgABXGZpcnN0X3RyYW5zYWN0aW9uX2luZGV45AEsT3B0aW9uPHUzMj4AAgAAKQoAAAItCgAtCgx8Y3VtdWx1c19wYWxsZXRfcGFyYWNoYWluX3N5c3RlbUh1bmluY2x1ZGVkX3NlZ21lbnQgQW5jZXN0b3IEBEgBQAAMATh1c2VkX2JhbmR3aWR0aDEKATRVc2VkQmFuZHdpZHRoAAE4cGFyYV9oZWFkX2hhc2gVBQEkT3B0aW9uPEg+AAFgY29uc3VtZWRfZ29fYWhlYWRfc2lnbmFsRQoBjE9wdGlvbjxyZWxheV9jaGFpbjo6VXBncmFkZUdvQWhlYWQ+AAAxCgx8Y3VtdWx1c19wYWxsZXRfcGFyYWNoYWluX3N5c3RlbUh1bmluY2x1ZGVkX3NlZ21lbnQ0VXNlZEJhbmR3aWR0aAAADAE0dW1wX21zZ19jb3VudDgBDHUzMgABPHVtcF90b3RhbF9ieXRlczgBDHUzMgABNGhybXBfb3V0Z29pbmc1CgGMQlRyZWVNYXA8UGFyYUlkLCBIcm1wQ2hhbm5lbFVwZGF0ZT4AADUKBCBCVHJlZU1hcAgESwGgBFYBOQoABAA9CgAAADkKDHxjdW11bHVzX3BhbGxldF9wYXJhY2hhaW5fc3lzdGVtSHVuaW5jbHVkZWRfc2VnbWVudERIcm1wQ2hhbm5lbFVwZGF0ZQAACAEkbXNnX2NvdW50OAEMdTMyAAEsdG90YWxfYnl0ZXM4AQx1MzIAAD0KAAACQQoAQQoAAAQIoDkKAEUKBBhPcHRpb24EBFQBSQoBCBBOb25lAAAAEFNvbWUEAEkKAAABAABJCgxMcG9sa2Fkb3RfcHJpbWl0aXZlcwh2OThVcGdyYWRlR29BaGVhZAABCBRBYm9ydAAAABxHb0FoZWFkAAEAAE0KDHxjdW11bHVzX3BhbGxldF9wYXJhY2hhaW5fc3lzdGVtSHVuaW5jbHVkZWRfc2VnbWVudDhTZWdtZW50VHJhY2tlcgQESAFAAAwBOHVzZWRfYmFuZHdpZHRoMQoBNFVzZWRCYW5kd2lkdGgAAThocm1wX3dhdGVybWFya+QBgE9wdGlvbjxyZWxheV9jaGFpbjo6QmxvY2tOdW1iZXI+AAFgY29uc3VtZWRfZ29fYWhlYWRfc2lnbmFsRQoBjE9wdGlvbjxyZWxheV9jaGFpbjo6VXBncmFkZUdvQWhlYWQ+AABRCgQYT3B0aW9uBARUAVUKAQgQTm9uZQAAABBTb21lBABVCgAAAQAAVQoMTHBvbGthZG90X3ByaW1pdGl2ZXMIdjlIVXBncmFkZVJlc3RyaWN0aW9uAAEEHFByZXNlbnQAAAAAWQoMfGN1bXVsdXNfcGFsbGV0X3BhcmFjaGFpbl9zeXN0ZW1QcmVsYXlfc3RhdGVfc25hcHNob3RYTWVzc2FnaW5nU3RhdGVTbmFwc2hvdAAAEAEwZG1xX21xY19oZWFkQAFEcmVsYXlfY2hhaW46Okhhc2gAAZxyZWxheV9kaXNwYXRjaF9xdWV1ZV9yZW1haW5pbmdfY2FwYWNpdHldCgGMUmVsYXlEaXNwYXRjaFF1ZXVlUmVtYWluaW5nQ2FwYWNpdHkAAUBpbmdyZXNzX2NoYW5uZWxzYQoBiFZlYzwoUGFyYUlkLCBBYnJpZGdlZEhybXBDaGFubmVsKT4AATxlZ3Jlc3NfY2hhbm5lbHNhCgGIVmVjPChQYXJhSWQsIEFicmlkZ2VkSHJtcENoYW5uZWwpPgAAXQoMfGN1bXVsdXNfcGFsbGV0X3BhcmFjaGFpbl9zeXN0ZW1QcmVsYXlfc3RhdGVfc25hcHNob3SMUmVsYXlEaXNwYXRjaFF1ZXVlUmVtYWluaW5nQ2FwYWNpdHkAAAgBPHJlbWFpbmluZ19jb3VudDgBDHUzMgABOHJlbWFpbmluZ19zaXplOAEMdTMyAABhCgAAAmUKAGUKAAAECKBpCgBpCgxMcG9sa2Fkb3RfcHJpbWl0aXZlcwh2OUxBYnJpZGdlZEhybXBDaGFubmVsAAAYATBtYXhfY2FwYWNpdHk4AQx1MzIAAThtYXhfdG90YWxfc2l6ZTgBDHUzMgABQG1heF9tZXNzYWdlX3NpemU4AQx1MzIAASRtc2dfY291bnQ4AQx1MzIAASh0b3RhbF9zaXplOAEMdTMyAAEgbXFjX2hlYWQVBQEwT3B0aW9uPEhhc2g+AABtCgxMcG9sa2Fkb3RfcHJpbWl0aXZlcwh2OWRBYnJpZGdlZEhvc3RDb25maWd1cmF0aW9uAAAoATRtYXhfY29kZV9zaXplOAEMdTMyAAFIbWF4X2hlYWRfZGF0YV9zaXplOAEMdTMyAAFYbWF4X3Vwd2FyZF9xdWV1ZV9jb3VudDgBDHUzMgABVG1heF91cHdhcmRfcXVldWVfc2l6ZTgBDHUzMgABXG1heF91cHdhcmRfbWVzc2FnZV9zaXplOAEMdTMyAAGQbWF4X3Vwd2FyZF9tZXNzYWdlX251bV9wZXJfY2FuZGlkYXRlOAEMdTMyAAGIaHJtcF9tYXhfbWVzc2FnZV9udW1fcGVyX2NhbmRpZGF0ZTgBDHUzMgABbHZhbGlkYXRpb25fdXBncmFkZV9jb29sZG93bjgBLEJsb2NrTnVtYmVyAAFgdmFsaWRhdGlvbl91cGdyYWRlX2RlbGF5OAEsQmxvY2tOdW1iZXIAAVBhc3luY19iYWNraW5nX3BhcmFtc3EKAUhBc3luY0JhY2tpbmdQYXJhbXMAAHEKEExwb2xrYWRvdF9wcmltaXRpdmVzCHY5NGFzeW5jX2JhY2tpbmdIQXN5bmNCYWNraW5nUGFyYW1zAAAIAUxtYXhfY2FuZGlkYXRlX2RlcHRoOAEMdTMyAAFQYWxsb3dlZF9hbmNlc3RyeV9sZW44AQx1MzIAAHUKCJRjdW11bHVzX3ByaW1pdGl2ZXNfcGFyYWNoYWluX2luaGVyZW50RE1lc3NhZ2VRdWV1ZUNoYWluAAAEAEABJFJlbGF5SGFzaAAAeQoEIEJUcmVlTWFwCARLAaAEVgF1CgAEAH0KAAAAfQoAAAKBCgCBCgAABAigdQoAhQoMfGN1bXVsdXNfcGFsbGV0X3BhcmFjaGFpbl9zeXN0ZW1IcGFyYWNoYWluX2luaGVyZW50QEluYm91bmRNZXNzYWdlSWQAAAgBHHNlbnRfYXQ4ASxCbG9ja051bWJlcgABLHJldmVyc2VfaWR4OAEMdTMyAACJCgAAAo0KAI0KCGBwb2xrYWRvdF9jb3JlX3ByaW1pdGl2ZXNMT3V0Ym91bmRIcm1wTWVzc2FnZQQISWQBoAAIASRyZWNpcGllbnSgAQhJZAABEGRhdGEYAUxhbGxvYzo6dmVjOjpWZWM8dTg+AACRCgh8Y3VtdWx1c19wYWxsZXRfcGFyYWNoYWluX3N5c3RlbSxQb1ZNZXNzYWdlcwAAGAFocmVsYXlfc3RvcmFnZV9yb290X29yX2hhc2hAAURyZWxheV9jaGFpbjo6SGFzaAABNGNvcmVfc2VsZWN0b3IMAQh1OAABMGJ1bmRsZV9pbmRleAwBCHU4AAE0dW1wX21zZ19jb3VudDgBDHUzMgABTGhybXBfb3V0Ym91bmRfY291bnQ4AQx1MzIAAWBocm1wX291dGJvdW5kX3JlY2lwaWVudHOVCgEsVmVjPFBhcmFJZD4AAJUKAAACoACZCgx8Y3VtdWx1c19wYWxsZXRfcGFyYWNoYWluX3N5c3RlbRhwYWxsZXQURXJyb3IEBFQAARhMT3ZlcmxhcHBpbmdVcGdyYWRlcwAABBkBQXR0ZW1wdCB0byB1cGdyYWRlIHZhbGlkYXRpb24gZnVuY3Rpb24gd2hpbGUgZXhpc3RpbmcgdXBncmFkZSBwZW5kaW5nLlBQcm9oaWJpdGVkQnlQb2xrYWRvdAABBE0BUG9sa2Fkb3QgY3VycmVudGx5IHByb2hpYml0cyB0aGlzIHBhcmFjaGFpbiBmcm9tIHVwZ3JhZGluZyBpdHMgdmFsaWRhdGlvbiBmdW5jdGlvbi4YVG9vQmlnAAIIRQFUaGUgc3VwcGxpZWQgdmFsaWRhdGlvbiBmdW5jdGlvbiBoYXMgY29tcGlsZWQgaW50byBhIGJsb2IgbGFyZ2VyIHRoYW4gUG9sa2Fkb3QgaXM8d2lsbGluZyB0byBydW4uaFZhbGlkYXRpb25EYXRhTm90QXZhaWxhYmxlAAMEHQFUaGUgaW5oZXJlbnQgd2hpY2ggc3VwcGxpZXMgdGhlIHZhbGlkYXRpb24gZGF0YSBkaWQgbm90IHJ1biB0aGlzIGJsb2NrLnRIb3N0Q29uZmlndXJhdGlvbk5vdEF2YWlsYWJsZQAEBCkBVGhlIGluaGVyZW50IHdoaWNoIHN1cHBsaWVzIHRoZSBob3N0IGNvbmZpZ3VyYXRpb24gZGlkIG5vdCBydW4gdGhpcyBibG9jay4wTm90U2NoZWR1bGVkAAUE2E5vIHZhbGlkYXRpb24gZnVuY3Rpb24gdXBncmFkZSBpcyBjdXJyZW50bHkgc2NoZWR1bGVkLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC6dCgg8cGFsbGV0X3ByZWltYWdlQE9sZFJlcXVlc3RTdGF0dXMIJEFjY291bnRJZAEEHEJhbGFuY2UBWQEBCCxVbnJlcXVlc3RlZAgBHGRlcG9zaXTJBQFQKEFjY291bnRJZCwgQmFsYW5jZSkAAQxsZW44AQx1MzIAAAAkUmVxdWVzdGVkDAEcZGVwb3NpdKEKAXBPcHRpb248KEFjY291bnRJZCwgQmFsYW5jZSk+AAEUY291bnQ4AQx1MzIAAQxsZW7kASxPcHRpb248dTMyPgABAAChCgQYT3B0aW9uBARUAckFAQgQTm9uZQAAABBTb21lBADJBQAAAQAApQoIPHBhbGxldF9wcmVpbWFnZTRSZXF1ZXN0U3RhdHVzCCRBY2NvdW50SWQBBBhUaWNrZXQBqQoBCCxVbnJlcXVlc3RlZAgBGHRpY2tldK0KAUwoQWNjb3VudElkLCBUaWNrZXQpAAEMbGVuOAEMdTMyAAAAJFJlcXVlc3RlZAwBMG1heWJlX3RpY2tldLEKAWxPcHRpb248KEFjY291bnRJZCwgVGlja2V0KT4AARRjb3VudDgBDHUzMgABJG1heWJlX2xlbuQBLE9wdGlvbjx1MzI+AAEAAKkKFDRmcmFtZV9zdXBwb3J0GHRyYWl0cxh0b2tlbnMgZnVuZ2libGVESG9sZENvbnNpZGVyYXRpb24UBEEABEYABFIABEQACEZwAAAEAFkBAShGOjpCYWxhbmNlAACtCgAABAgEqQoAsQoEGE9wdGlvbgQEVAGtCgEIEE5vbmUAAAAQU29tZQQArQoAAAEAALUKAAAECEA4ALkKDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBDARTAAAEABgBGFZlYzxUPgAAvQoMPHBhbGxldF9wcmVpbWFnZRhwYWxsZXQURXJyb3IEBFQAASAYVG9vQmlnAAAEoFByZWltYWdlIGlzIHRvbyBsYXJnZSB0byBzdG9yZSBvbi1jaGFpbi4wQWxyZWFkeU5vdGVkAAEEpFByZWltYWdlIGhhcyBhbHJlYWR5IGJlZW4gbm90ZWQgb24tY2hhaW4uNE5vdEF1dGhvcml6ZWQAAgTIVGhlIHVzZXIgaXMgbm90IGF1dGhvcml6ZWQgdG8gcGVyZm9ybSB0aGlzIGFjdGlvbi4gTm90Tm90ZWQAAwT8VGhlIHByZWltYWdlIGNhbm5vdCBiZSByZW1vdmVkIHNpbmNlIGl0IGhhcyBub3QgeWV0IGJlZW4gbm90ZWQuJFJlcXVlc3RlZAAEBAkBQSBwcmVpbWFnZSBtYXkgbm90IGJlIHJlbW92ZWQgd2hlbiB0aGVyZSBhcmUgb3V0c3RhbmRpbmcgcmVxdWVzdHMuME5vdFJlcXVlc3RlZAAFBC0BVGhlIHByZWltYWdlIHJlcXVlc3QgY2Fubm90IGJlIHJlbW92ZWQgc2luY2Ugbm8gb3V0c3RhbmRpbmcgcmVxdWVzdHMgZXhpc3QuHFRvb01hbnkABgRVAU1vcmUgdGhhbiBgTUFYX0hBU0hfVVBHUkFERV9CVUxLX0NPVU5UYCBoYXNoZXMgd2VyZSByZXF1ZXN0ZWQgdG8gYmUgdXBncmFkZWQgYXQgb25jZS4YVG9vRmV3AAcE5FRvbyBmZXcgaGFzaGVzIHdlcmUgcmVxdWVzdGVkIHRvIGJlIHVwZ3JhZGVkIChpLmUuIHplcm8pLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC7BCgxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAcUKBFMAAAQAzQoBGFZlYzxUPgAAxQoEGE9wdGlvbgQEVAHJCgEIEE5vbmUAAAAQU29tZQQAyQoAAAEAAMkKCEBwYWxsZXRfc2NoZWR1bGVyJFNjaGVkdWxlZBQQTmFtZQEIEENhbGwBCQUsQmxvY2tOdW1iZXIBODRQYWxsZXRzT3JpZ2luAfEDJEFjY291bnRJZAEEABQBIG1heWJlX2lkQQcBME9wdGlvbjxOYW1lPgABIHByaW9yaXR5DAFIc2NoZWR1bGU6OlByaW9yaXR5AAEQY2FsbAkFARBDYWxsAAE4bWF5YmVfcGVyaW9kaWPMAZRPcHRpb248c2NoZWR1bGU6OlBlcmlvZDxCbG9ja051bWJlcj4+AAEYb3JpZ2lu8QMBNFBhbGxldHNPcmlnaW4AAM0KAAACxQoA0QoIQHBhbGxldF9zY2hlZHVsZXIsUmV0cnlDb25maWcEGFBlcmlvZAE4AAwBNHRvdGFsX3JldHJpZXMMAQh1OAABJHJlbWFpbmluZwwBCHU4AAEYcGVyaW9kOAEYUGVyaW9kAADVCgxAcGFsbGV0X3NjaGVkdWxlchhwYWxsZXQURXJyb3IEBFQAARRARmFpbGVkVG9TY2hlZHVsZQAABGRGYWlsZWQgdG8gc2NoZWR1bGUgYSBjYWxsIE5vdEZvdW5kAAEEfENhbm5vdCBmaW5kIHRoZSBzY2hlZHVsZWQgY2FsbC5cVGFyZ2V0QmxvY2tOdW1iZXJJblBhc3QAAgSkR2l2ZW4gdGFyZ2V0IGJsb2NrIG51bWJlciBpcyBpbiB0aGUgcGFzdC5IUmVzY2hlZHVsZU5vQ2hhbmdlAAME8FJlc2NoZWR1bGUgZmFpbGVkIGJlY2F1c2UgaXQgZG9lcyBub3QgY2hhbmdlIHNjaGVkdWxlZCB0aW1lLhROYW1lZAAEBNBBdHRlbXB0IHRvIHVzZSBhIG5vbi1uYW1lZCBmdW5jdGlvbiBvbiBhIG5hbWVkIHRhc2suBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LtkKDERwYWxsZXRfbWlncmF0aW9ucxhwYWxsZXQURXJyb3IEBFQAAQQcT25nb2luZwAABOhUaGUgb3BlcmF0aW9uIGNhbm5vdCBjb21wbGV0ZSBzaW5jZSBzb21lIE1CTXMgYXJlIG9uZ29pbmcuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0Lt0KCERwYWxsZXRfbWlncmF0aW9uczBNYm1Jc09uZ29pbmcAAQwMWWVzAAAACE5vAAEAFFN0dWNrAAIAAOEKBBhPcHRpb24EBFQB5QoBCBBOb25lAAAAEFNvbWUEAOUKAAABAADlCghEcGFsbGV0X21pZ3JhdGlvbnMsTWJtUHJvZ3Jlc3MAABABRGN1cnJlbnRfbWlncmF0aW9uOAEMdTMyAAFAdG90YWxfbWlncmF0aW9uczgBDHUzMgABXGN1cnJlbnRfbWlncmF0aW9uX3N0ZXBzOAEMdTMyAAFsY3VycmVudF9taWdyYXRpb25fbWF4X3N0ZXBz5AEsT3B0aW9uPHUzMj4AAOkKCERwYWxsZXRfbWlncmF0aW9ucyRNYm1TdGF0dXMAAAwBHG9uZ29pbmfdCgEwTWJtSXNPbmdvaW5nAAEgcHJvZ3Jlc3PhCgFMT3B0aW9uPE1ibVByb2dyZXNzPgABIHByZWZpeGVzNAEwVmVjPFZlYzx1OD4+AADtCgxMYm91bmRlZF9jb2xsZWN0aW9uc0B3ZWFrX2JvdW5kZWRfdmVjOFdlYWtCb3VuZGVkVmVjCARUAfEKBFMAAAQA+QoBGFZlYzxUPgAA8QoMPHBhbGxldF9iYWxhbmNlcxR0eXBlcyxCYWxhbmNlTG9jawQcQmFsYW5jZQFZAQAMAQhpZHkCAThMb2NrSWRlbnRpZmllcgABGGFtb3VudFkBARxCYWxhbmNlAAEccmVhc29uc/UKARxSZWFzb25zAAD1Cgw8cGFsbGV0X2JhbGFuY2VzFHR5cGVzHFJlYXNvbnMAAQwMRmVlAAAAEE1pc2MAAQAMQWxsAAIAAPkKAAAC8QoA/QoMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEBCwRTAAAEAAULARhWZWM8VD4AAAELDDxwYWxsZXRfYmFsYW5jZXMUdHlwZXMsUmVzZXJ2ZURhdGEIRFJlc2VydmVJZGVudGlmaWVyAXkCHEJhbGFuY2UBWQEACAEIaWR5AgFEUmVzZXJ2ZUlkZW50aWZpZXIAARhhbW91bnRZAQEcQmFsYW5jZQAABQsAAAIBCwAJCwxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQ0LBFMAAAQAEQsBGFZlYzxUPgAADQsUNGZyYW1lX3N1cHBvcnQYdHJhaXRzGHRva2VucxBtaXNjIElkQW1vdW50CAhJZAFlCBxCYWxhbmNlAVkBAAgBCGlkZQgBCElkAAEYYW1vdW50WQEBHEJhbGFuY2UAABELAAACDQsAFQsMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEZCwRTAAAEACkLARhWZWM8VD4AABkLFDRmcmFtZV9zdXBwb3J0GHRyYWl0cxh0b2tlbnMQbWlzYyBJZEFtb3VudAgISWQBHQscQmFsYW5jZQFZAQAIAQhpZB0LAQhJZAABGGFtb3VudFkBARxCYWxhbmNlAAAdCwhcYXNzZXRfaHViX3Bhc2VvX3J1bnRpbWVMUnVudGltZUZyZWV6ZVJlYXNvbgABCDxOb21pbmF0aW9uUG9vbHMEACELAZRwYWxsZXRfbm9taW5hdGlvbl9wb29sczo6RnJlZXplUmVhc29uAFAAGFJldml2ZQQAJQsBbHBhbGxldF9yZXZpdmU6OkZyZWV6ZVJlYXNvbgBkAAAhCwxccGFsbGV0X25vbWluYXRpb25fcG9vbHMYcGFsbGV0MEZyZWV6ZVJlYXNvbgABBDhQb29sTWluQmFsYW5jZQAAAAAlCww0cGFsbGV0X3Jldml2ZRhwYWxsZXQwRnJlZXplUmVhc29uAAEEOFBHYXNNaW5CYWxhbmNlAAAAACkLAAACGQsALQsMPHBhbGxldF9iYWxhbmNlcxhwYWxsZXQURXJyb3IIBFQABEkAATA4VmVzdGluZ0JhbGFuY2UAAAScVmVzdGluZyBiYWxhbmNlIHRvbyBoaWdoIHRvIHNlbmQgdmFsdWUuVExpcXVpZGl0eVJlc3RyaWN0aW9ucwABBMhBY2NvdW50IGxpcXVpZGl0eSByZXN0cmljdGlvbnMgcHJldmVudCB3aXRoZHJhd2FsLkxJbnN1ZmZpY2llbnRCYWxhbmNlAAIEeEJhbGFuY2UgdG9vIGxvdyB0byBzZW5kIHZhbHVlLkhFeGlzdGVudGlhbERlcG9zaXQAAwTsVmFsdWUgdG9vIGxvdyB0byBjcmVhdGUgYWNjb3VudCBkdWUgdG8gZXhpc3RlbnRpYWwgZGVwb3NpdC40RXhwZW5kYWJpbGl0eQAEBJBUcmFuc2Zlci9wYXltZW50IHdvdWxkIGtpbGwgYWNjb3VudC5cRXhpc3RpbmdWZXN0aW5nU2NoZWR1bGUABQTMQSB2ZXN0aW5nIHNjaGVkdWxlIGFscmVhZHkgZXhpc3RzIGZvciB0aGlzIGFjY291bnQuLERlYWRBY2NvdW50AAYEjEJlbmVmaWNpYXJ5IGFjY291bnQgbXVzdCBwcmUtZXhpc3QuPFRvb01hbnlSZXNlcnZlcwAHBLhOdW1iZXIgb2YgbmFtZWQgcmVzZXJ2ZXMgZXhjZWVkIGBNYXhSZXNlcnZlc2AuMFRvb01hbnlIb2xkcwAIBPhOdW1iZXIgb2YgaG9sZHMgZXhjZWVkIGBWYXJpYW50Q291bnRPZjxUOjpSdW50aW1lSG9sZFJlYXNvbj5gLjhUb29NYW55RnJlZXplcwAJBJhOdW1iZXIgb2YgZnJlZXplcyBleGNlZWQgYE1heEZyZWV6ZXNgLkxJc3N1YW5jZURlYWN0aXZhdGVkAAoEAQFUaGUgaXNzdWFuY2UgY2Fubm90IGJlIG1vZGlmaWVkIHNpbmNlIGl0IGlzIGFscmVhZHkgZGVhY3RpdmF0ZWQuJERlbHRhWmVybwALBGRUaGUgZGVsdGEgY2Fubm90IGJlIHplcm8uBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LjELCGhwYWxsZXRfdHJhbnNhY3Rpb25fcGF5bWVudCBSZWxlYXNlcwABCCRWMUFuY2llbnQAAAAIVjIAAQAANQsQNGZyYW1lX3N1cHBvcnQYdHJhaXRzHHN0b3JhZ2UYTm9Ecm9wBARUATkLAAQAOQsBBFQAADkLGDRmcmFtZV9zdXBwb3J0GHRyYWl0cxh0b2tlbnMgZnVuZ2libGUkaW1iYWxhbmNlJEltYmFsYW5jZQwEQgFZARhPbkRyb3AAOE9wcG9zaXRlT25Ecm9wAAAEARhhbW91bnRZAQEEQgAAPQsMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAFtAQRTAAAEAEELARhWZWM8VD4AAEELAAACbQEARQsIOHBhbGxldF92ZXN0aW5nIFJlbGVhc2VzAAEICFYwAAAACFYxAAEAAEkLDDhwYWxsZXRfdmVzdGluZxhwYWxsZXQURXJyb3IEBFQAARQoTm90VmVzdGluZwAABIRUaGUgYWNjb3VudCBnaXZlbiBpcyBub3QgdmVzdGluZy5UQXRNYXhWZXN0aW5nU2NoZWR1bGVzAAEIJQFUaGUgYWNjb3VudCBhbHJlYWR5IGhhcyBgTWF4VmVzdGluZ1NjaGVkdWxlc2AgY291bnQgb2Ygc2NoZWR1bGVzIGFuZCB0aHVzUQFjYW5ub3QgYWRkIGFub3RoZXIgb25lLiBDb25zaWRlciBtZXJnaW5nIGV4aXN0aW5nIHNjaGVkdWxlcyBpbiBvcmRlciB0byBhZGQgYW5vdGhlci4kQW1vdW50TG93AAIEBQFBbW91bnQgYmVpbmcgdHJhbnNmZXJyZWQgaXMgdG9vIGxvdyB0byBjcmVhdGUgYSB2ZXN0aW5nIHNjaGVkdWxlLmBTY2hlZHVsZUluZGV4T3V0T2ZCb3VuZHMAAwTQQW4gaW5kZXggd2FzIG91dCBvZiBib3VuZHMgb2YgdGhlIHZlc3Rpbmcgc2NoZWR1bGVzLlRJbnZhbGlkU2NoZWR1bGVQYXJhbXMABAQNAUZhaWxlZCB0byBjcmVhdGUgYSBuZXcgc2NoZWR1bGUgYmVjYXVzZSBzb21lIHBhcmFtZXRlciB3YXMgaW52YWxpZC4EdEVycm9yIGZvciB0aGUgdmVzdGluZyBwYWxsZXQuTQsQXHBvbGthZG90X3J1bnRpbWVfY29tbW9uGGNsYWltcxhwYWxsZXQURXJyb3IEBFQAARhgSW52YWxpZEV0aGVyZXVtU2lnbmF0dXJlAAAEbEludmFsaWQgRXRoZXJldW0gc2lnbmF0dXJlLkBTaWduZXJIYXNOb0NsYWltAAEEeEV0aGVyZXVtIGFkZHJlc3MgaGFzIG5vIGNsYWltLkBTZW5kZXJIYXNOb0NsYWltAAIEsEFjY291bnQgSUQgc2VuZGluZyB0cmFuc2FjdGlvbiBoYXMgbm8gY2xhaW0uMFBvdFVuZGVyZmxvdwADCEkBVGhlcmUncyBub3QgZW5vdWdoIGluIHRoZSBwb3QgdG8gcGF5IG91dCBzb21lIHVudmVzdGVkIGFtb3VudC4gR2VuZXJhbGx5IGltcGxpZXMgYTBsb2dpYyBlcnJvci5ASW52YWxpZFN0YXRlbWVudAAEBJBBIG5lZWRlZCBzdGF0ZW1lbnQgd2FzIG5vdCBpbmNsdWRlZC5MVmVzdGVkQmFsYW5jZUV4aXN0cwAFBKRUaGUgYWNjb3VudCBhbHJlYWR5IGhhcyBhIHZlc3RlZCBiYWxhbmNlLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC5RCwg0ZnJhbWVfc3VwcG9ydCBQYWxsZXRJZAAABAB5AgEcW3U4OyA4XQAAVQsMKHBhbGxldF9kYXAYcGFsbGV0FEVycm9yBARUAAEIQFVua25vd25CdWRnZXRLZXkAAAQdAUEga2V5IGluIHRoZSBidWRnZXQgYWxsb2NhdGlvbiBkb2VzIG5vdCBtYXRjaCBhbnkgcmVnaXN0ZXJlZCByZWNpcGllbnQuOEJ1ZGdldE5vdEV4YWN0AAEE5EJ1ZGdldCBhbGxvY2F0aW9uIHBlcmNlbnRhZ2VzIGRvIG5vdCBzdW0gdG8gZXhhY3RseSAxMDAlLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC5ZCwAAAl0LAF0LAAAEDJ0BBKEBAGELDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBBARTAAAEAGEBARhWZWM8VD4AAGULDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBaQsEUwAABABtCwEYVmVjPFQ+AABpCwxkcGFsbGV0X2NvbGxhdG9yX3NlbGVjdGlvbhhwYWxsZXQ0Q2FuZGlkYXRlSW5mbwgkQWNjb3VudElkAQQcQmFsYW5jZQFZAQAIAQx3aG8EASRBY2NvdW50SWQAARxkZXBvc2l0WQEBHEJhbGFuY2UAAG0LAAACaQsAcQsMZHBhbGxldF9jb2xsYXRvcl9zZWxlY3Rpb24YcGFsbGV0FEVycm9yBARUAAFERFRvb01hbnlDYW5kaWRhdGVzAAAEjFRoZSBwYWxsZXQgaGFzIHRvbyBtYW55IGNhbmRpZGF0ZXMuXFRvb0Zld0VsaWdpYmxlQ29sbGF0b3JzAAEErExlYXZpbmcgd291bGQgcmVzdWx0IGluIHRvbyBmZXcgY2FuZGlkYXRlcy5AQWxyZWFkeUNhbmRpZGF0ZQACBHxBY2NvdW50IGlzIGFscmVhZHkgYSBjYW5kaWRhdGUuME5vdENhbmRpZGF0ZQADBGxBY2NvdW50IGlzIG5vdCBhIGNhbmRpZGF0ZS5QVG9vTWFueUludnVsbmVyYWJsZXMABASEVGhlcmUgYXJlIHRvbyBtYW55IEludnVsbmVyYWJsZXMuTEFscmVhZHlJbnZ1bG5lcmFibGUABQSMQWNjb3VudCBpcyBhbHJlYWR5IGFuIEludnVsbmVyYWJsZS48Tm90SW52dWxuZXJhYmxlAAYEfEFjY291bnQgaXMgbm90IGFuIEludnVsbmVyYWJsZS5cTm9Bc3NvY2lhdGVkVmFsaWRhdG9ySWQABwScQWNjb3VudCBoYXMgbm8gYXNzb2NpYXRlZCB2YWxpZGF0b3IgSUQuWFZhbGlkYXRvck5vdFJlZ2lzdGVyZWQACASMVmFsaWRhdG9yIElEIGlzIG5vdCB5ZXQgcmVnaXN0ZXJlZC5sSW5zZXJ0VG9DYW5kaWRhdGVMaXN0RmFpbGVkAAkEnENvdWxkIG5vdCBpbnNlcnQgaW4gdGhlIGNhbmRpZGF0ZSBsaXN0LnRSZW1vdmVGcm9tQ2FuZGlkYXRlTGlzdEZhaWxlZAAKBKRDb3VsZCBub3QgcmVtb3ZlIGZyb20gdGhlIGNhbmRpZGF0ZSBsaXN0LjREZXBvc2l0VG9vTG93AAsE9E5ldyBkZXBvc2l0IGFtb3VudCB3b3VsZCBiZSBiZWxvdyB0aGUgbWluaW11bSBjYW5kaWRhY3kgYm9uZC5kVXBkYXRlQ2FuZGlkYXRlTGlzdEZhaWxlZAAMBJBDb3VsZCBub3QgdXBkYXRlIHRoZSBjYW5kaWRhdGUgbGlzdC5ASW5zdWZmaWNpZW50Qm9uZAANBCkBRGVwb3NpdCBhbW91bnQgaXMgdG9vIGxvdyB0byB0YWtlIHRoZSB0YXJnZXQncyBzbG90IGluIHRoZSBjYW5kaWRhdGUgbGlzdC5QVGFyZ2V0SXNOb3RDYW5kaWRhdGUADgQtAVRoZSB0YXJnZXQgYWNjb3VudCB0byBiZSByZXBsYWNlZCBpbiB0aGUgY2FuZGlkYXRlIGxpc3QgaXMgbm90IGEgY2FuZGlkYXRlLkBJZGVudGljYWxEZXBvc2l0AA8EDQFUaGUgdXBkYXRlZCBkZXBvc2l0IGFtb3VudCBpcyBlcXVhbCB0byB0aGUgYW1vdW50IGFscmVhZHkgcmVzZXJ2ZWQuQEludmFsaWRVbnJlc2VydmUAEAQ9AUNhbm5vdCBsb3dlciBjYW5kaWRhY3kgYm9uZCB3aGlsZSBvY2N1cHlpbmcgYSBmdXR1cmUgY29sbGF0b3Igc2xvdCBpbiB0aGUgbGlzdC4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQudQsAAAJ5CwB5CwAABAgEuQEAfQsAAAKBCwCBCwAABAg4hQsAhQsMKHNwX3N0YWtpbmccb2ZmZW5jZTxPZmZlbmNlU2V2ZXJpdHkAAAQAoQEBHFBlcmJpbGwAAIkLAAAECI0LGACNCwwcc3BfY29yZRhjcnlwdG8kS2V5VHlwZUlkAAAEAHQBHFt1ODsgNF0AAJELDDhwYWxsZXRfc2Vzc2lvbhhwYWxsZXQURXJyb3IEBFQAARQwSW52YWxpZFByb29mAAAEYEludmFsaWQgb3duZXJzaGlwIHByb29mLlxOb0Fzc29jaWF0ZWRWYWxpZGF0b3JJZAABBJxObyBhc3NvY2lhdGVkIHZhbGlkYXRvciBJRCBmb3IgYWNjb3VudC40RHVwbGljYXRlZEtleQACBGRSZWdpc3RlcmVkIGR1cGxpY2F0ZSBrZXkuGE5vS2V5cwADBKRObyBrZXlzIGFyZSBhc3NvY2lhdGVkIHdpdGggdGhpcyBhY2NvdW50LiROb0FjY291bnQABAQZAUtleSBzZXR0aW5nIGFjY291bnQgaXMgbm90IGxpdmUsIHNvIGl0J3MgaW1wb3NzaWJsZSB0byBhc3NvY2lhdGUga2V5cy4EdEVycm9yIGZvciB0aGUgc2Vzc2lvbiBwYWxsZXQulQsMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAG9AQRTAAAEAJkLARhWZWM8VD4AAJkLAAACvQEAnQsISHNwX2NvbnNlbnN1c19zbG90cxBTbG90AAAEACgBDHU2NAAAoQsAAAQInQs4AKULDExib3VuZGVkX2NvbGxlY3Rpb25zRGJvdW5kZWRfYnRyZWVfc2V0PEJvdW5kZWRCVHJlZVNldAgEVAGgBFMAAAQAqQsBLEJUcmVlU2V0PFQ+AACpCwQgQlRyZWVTZXQEBFQBoAAEAJUKAAAArQsMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAGxCwRTAAAEAL0LARhWZWM8VD4AALELCGRjdW11bHVzX3BhbGxldF94Y21wX3F1ZXVlWE91dGJvdW5kQ2hhbm5lbERldGFpbHMAABgBJHJlY2lwaWVudKABGFBhcmFJZAABFHN0YXRltQsBNE91dGJvdW5kU3RhdGUAATRzaWduYWxzX2V4aXN0XQEBEGJvb2wAASxmaXJzdF9pbmRleO0DAQx1MTYAAShsYXN0X2luZGV47QMBDHUxNgABFGZsYWdzuQsBUE91dGJvdW5kQ2hhbm5lbEZsYWdzAAC1CwhkY3VtdWx1c19wYWxsZXRfeGNtcF9xdWV1ZTRPdXRib3VuZFN0YXRlAAEICE9rAAAAJFN1c3BlbmRlZAABAAC5CwhkY3VtdWx1c19wYWxsZXRfeGNtcF9xdWV1ZVBPdXRib3VuZENoYW5uZWxGbGFncwAABAEQYml0czgBDHUzMgAAvQsAAAKxCwDBCwAABAig7QMAxQsMTGJvdW5kZWRfY29sbGVjdGlvbnNAd2Vha19ib3VuZGVkX3ZlYzhXZWFrQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AADJCwhkY3VtdWx1c19wYWxsZXRfeGNtcF9xdWV1ZTxRdWV1ZUNvbmZpZ0RhdGEAAAwBRHN1c3BlbmRfdGhyZXNob2xkOAEMdTMyAAE4ZHJvcF90aHJlc2hvbGQ4AQx1MzIAAUByZXN1bWVfdGhyZXNob2xkOAEMdTMyAADNCwxkY3VtdWx1c19wYWxsZXRfeGNtcF9xdWV1ZRhwYWxsZXQURXJyb3IEBFQAARQ4QmFkUXVldWVDb25maWcAAAQRAVNldHRpbmcgdGhlIHF1ZXVlIGNvbmZpZyBmYWlsZWQgc2luY2Ugb25lIG9mIGl0cyB2YWx1ZXMgd2FzIGludmFsaWQuQEFscmVhZHlTdXNwZW5kZWQAAQSMVGhlIGV4ZWN1dGlvbiBpcyBhbHJlYWR5IHN1c3BlbmRlZC44QWxyZWFkeVJlc3VtZWQAAgSEVGhlIGV4ZWN1dGlvbiBpcyBhbHJlYWR5IHJlc3VtZWQudFRvb01hbnlBY3RpdmVPdXRib3VuZENoYW5uZWxzAAMEsFRoZXJlIGFyZSB0b28gbWFueSBhY3RpdmUgb3V0Ym91bmQgY2hhbm5lbHMuGFRvb0JpZwAEBFxUaGUgbWVzc2FnZSBpcyB0b28gYmlnLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC7RCwwocGFsbGV0X3hjbRhwYWxsZXQsUXVlcnlTdGF0dXMELEJsb2NrTnVtYmVyATgBDBxQZW5kaW5nEAEkcmVzcG9uZGVyyQEBRFZlcnNpb25lZExvY2F0aW9uAAFMbWF5YmVfbWF0Y2hfcXVlcmllctULAWRPcHRpb248VmVyc2lvbmVkTG9jYXRpb24+AAEwbWF5YmVfbm90aWZ52QsBQE9wdGlvbjwodTgsIHU4KT4AARx0aW1lb3V0OAEsQmxvY2tOdW1iZXIAAAA8VmVyc2lvbk5vdGlmaWVyCAEYb3JpZ2luyQEBRFZlcnNpb25lZExvY2F0aW9uAAEkaXNfYWN0aXZlXQEBEGJvb2wAAQAUUmVhZHkIASByZXNwb25zZeELAURWZXJzaW9uZWRSZXNwb25zZQABCGF0OAEsQmxvY2tOdW1iZXIAAgAA1QsEGE9wdGlvbgQEVAHJAQEIEE5vbmUAAAAQU29tZQQAyQEAAAEAANkLBBhPcHRpb24EBFQB3QsBCBBOb25lAAAAEFNvbWUEAN0LAAABAADdCwAABAgMDADhCwgMeGNtRFZlcnNpb25lZFJlc3BvbnNlAAEMCFYzBACBAgEwdjM6OlJlc3BvbnNlAAMACFY0BADtAgEwdjQ6OlJlc3BvbnNlAAQACFY1BAA5AwEwdjU6OlJlc3BvbnNlAAUAAOULAAAECDjJAQDpCwAABAwoFQE4AO0LDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQB8QsEUwAABAD1CwEYVmVjPFQ+AADxCwAABAjJATgA9QsAAALxCwD5CwwocGFsbGV0X3hjbRhwYWxsZXRUVmVyc2lvbk1pZ3JhdGlvblN0YWdlAAEQXE1pZ3JhdGVTdXBwb3J0ZWRWZXJzaW9uAAAAXE1pZ3JhdGVWZXJzaW9uTm90aWZpZXJzAAEAUE5vdGlmeUN1cnJlbnRUYXJnZXRzBABNAQE8T3B0aW9uPFZlYzx1OD4+AAIAaE1pZ3JhdGVBbmROb3RpZnlPbGRUYXJnZXRzAAMAAP0LAAAEDDgEwQMAAQwMKHBhbGxldF94Y20YcGFsbGV0aFJlbW90ZUxvY2tlZEZ1bmdpYmxlUmVjb3JkCEhDb25zdW1lcklkZW50aWZpZXIBEDBNYXhDb25zdW1lcnMAABABGGFtb3VudFkBARB1MTI4AAEUb3duZXLJAQFEVmVyc2lvbmVkTG9jYXRpb24AARhsb2NrZXLJAQFEVmVyc2lvbmVkTG9jYXRpb24AASRjb25zdW1lcnMFDAHQQm91bmRlZFZlYzwoQ29uc3VtZXJJZGVudGlmaWVyLCB1MTI4KSwgTWF4Q29uc3VtZXJzPgAABQwMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEJDARTAAAEAA0MARhWZWM8VD4AAAkMAAAECBBZAQANDAAAAgkMABEMDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBFQwEUwAABAAZDAEYVmVjPFQ+AAAVDAAABAhZAckBABkMAAACFQwAHQwIKHBhbGxldF94Y21YQXV0aG9yaXplZEFsaWFzZXNFbnRyeQgYVGlja2V0ASEMDE1BWAElDAAIASBhbGlhc2VycykMAXhCb3VuZGVkVmVjPE9yaWdpbkFsaWFzZXIsIE1BWD4AARh0aWNrZXQhDAEYVGlja2V0AAAhDBQ0ZnJhbWVfc3VwcG9ydBh0cmFpdHMYdG9rZW5zIGZ1bmdpYmxlREhvbGRDb25zaWRlcmF0aW9uFARBAARGAARSAAREAAhGcAAABABZAQEoRjo6QmFsYW5jZQAAJQwMKHBhbGxldF94Y20YcGFsbGV0UE1heEF1dGhvcml6ZWRBbGlhc2VzAAAAACkMDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBLQwEUwAABAAxDAEYVmVjPFQ+AAAtDAxAeGNtX3J1bnRpbWVfYXBpc0hhdXRob3JpemVkX2FsaWFzZXM0T3JpZ2luQWxpYXNlcgAACAEgbG9jYXRpb27JAQFEVmVyc2lvbmVkTG9jYXRpb24AARhleHBpcnkBAQEsT3B0aW9uPHU2ND4AADEMAAACLQwANQwMKHBhbGxldF94Y20YcGFsbGV0FEVycm9yBARUAAFwLFVucmVhY2hhYmxlAAAIXQFUaGUgZGVzaXJlZCBkZXN0aW5hdGlvbiB3YXMgdW5yZWFjaGFibGUsIGdlbmVyYWxseSBiZWNhdXNlIHRoZXJlIGlzIGEgbm8gd2F5IG9mIHJvdXRpbmcYdG8gaXQuLFNlbmRGYWlsdXJlAAEIQQFUaGVyZSB3YXMgc29tZSBvdGhlciBpc3N1ZSAoaS5lLiBub3QgdG8gZG8gd2l0aCByb3V0aW5nKSBpbiBzZW5kaW5nIHRoZSBtZXNzYWdlLshQZXJoYXBzIGEgbGFjayBvZiBzcGFjZSBmb3IgYnVmZmVyaW5nIHRoZSBtZXNzYWdlLiBGaWx0ZXJlZAACBJxUaGUgbWVzc2FnZSBleGVjdXRpb24gZmFpbHMgdGhlIGZpbHRlci5IVW53ZWlnaGFibGVNZXNzYWdlAAMEtFRoZSBtZXNzYWdlJ3Mgd2VpZ2h0IGNvdWxkIG5vdCBiZSBkZXRlcm1pbmVkLmBEZXN0aW5hdGlvbk5vdEludmVydGlibGUABATcVGhlIGRlc3RpbmF0aW9uIGBMb2NhdGlvbmAgcHJvdmlkZWQgY2Fubm90IGJlIGludmVydGVkLhRFbXB0eQAFBIBUaGUgYXNzZXRzIHRvIGJlIHNlbnQgYXJlIGVtcHR5LjhDYW5ub3RSZWFuY2hvcgAGBDUBQ291bGQgbm90IHJlLWFuY2hvciB0aGUgYXNzZXRzIHRvIGRlY2xhcmUgdGhlIGZlZXMgZm9yIHRoZSBkZXN0aW5hdGlvbiBjaGFpbi40VG9vTWFueUFzc2V0cwAHBMRUb28gbWFueSBhc3NldHMgaGF2ZSBiZWVuIGF0dGVtcHRlZCBmb3IgdHJhbnNmZXIuNEludmFsaWRPcmlnaW4ACAR4T3JpZ2luIGlzIGludmFsaWQgZm9yIHNlbmRpbmcuKEJhZFZlcnNpb24ACQQhAVRoZSB2ZXJzaW9uIG9mIHRoZSBgVmVyc2lvbmVkYCB2YWx1ZSB1c2VkIGlzIG5vdCBhYmxlIHRvIGJlIGludGVycHJldGVkLixCYWRMb2NhdGlvbgAKCEEBVGhlIGdpdmVuIGxvY2F0aW9uIGNvdWxkIG5vdCBiZSB1c2VkIChlLmcuIGJlY2F1c2UgaXQgY2Fubm90IGJlIGV4cHJlc3NlZCBpbiB0aGVgZGVzaXJlZCB2ZXJzaW9uIG9mIFhDTSkuOE5vU3Vic2NyaXB0aW9uAAsEvFRoZSByZWZlcmVuY2VkIHN1YnNjcmlwdGlvbiBjb3VsZCBub3QgYmUgZm91bmQuREFscmVhZHlTdWJzY3JpYmVkAAwEEQFUaGUgbG9jYXRpb24gaXMgaW52YWxpZCBzaW5jZSBpdCBhbHJlYWR5IGhhcyBhIHN1YnNjcmlwdGlvbiBmcm9tIHVzLlhDYW5ub3RDaGVja091dFRlbGVwb3J0AA0EKQFDb3VsZCBub3QgY2hlY2stb3V0IHRoZSBhc3NldHMgZm9yIHRlbGVwb3J0YXRpb24gdG8gdGhlIGRlc3RpbmF0aW9uIGNoYWluLihMb3dCYWxhbmNlAA4EQQFUaGUgb3duZXIgZG9lcyBub3Qgb3duIChhbGwpIG9mIHRoZSBhc3NldCB0aGF0IHRoZXkgd2lzaCB0byBkbyB0aGUgb3BlcmF0aW9uIG9uLjBUb29NYW55TG9ja3MADwTAVGhlIGFzc2V0IG93bmVyIGhhcyB0b28gbWFueSBsb2NrcyBvbiB0aGUgYXNzZXQuTEFjY291bnROb3RTb3ZlcmVpZ24AEAQxAVRoZSBnaXZlbiBhY2NvdW50IGlzIG5vdCBhbiBpZGVudGlmaWFibGUgc292ZXJlaWduIGFjY291bnQgZm9yIGFueSBsb2NhdGlvbi4oRmVlc05vdE1ldAARBCkBVGhlIG9wZXJhdGlvbiByZXF1aXJlZCBmZWVzIHRvIGJlIHBhaWQgd2hpY2ggdGhlIGluaXRpYXRvciBjb3VsZCBub3QgbWVldC4wTG9ja05vdEZvdW5kABIE9EEgcmVtb3RlIGxvY2sgd2l0aCB0aGUgY29ycmVzcG9uZGluZyBkYXRhIGNvdWxkIG5vdCBiZSBmb3VuZC4USW5Vc2UAEwRJAVRoZSB1bmxvY2sgb3BlcmF0aW9uIGNhbm5vdCBzdWNjZWVkIGJlY2F1c2UgdGhlcmUgYXJlIHN0aWxsIGNvbnN1bWVycyBvZiB0aGUgbG9jay5oSW52YWxpZEFzc2V0VW5rbm93blJlc2VydmUAFQTwSW52YWxpZCBhc3NldCwgcmVzZXJ2ZSBjaGFpbiBjb3VsZCBub3QgYmUgZGV0ZXJtaW5lZCBmb3IgaXQueEludmFsaWRBc3NldFVuc3VwcG9ydGVkUmVzZXJ2ZQAWBEUBSW52YWxpZCBhc3NldCwgZG8gbm90IHN1cHBvcnQgcmVtb3RlIGFzc2V0IHJlc2VydmVzIHdpdGggZGlmZmVyZW50IGZlZXMgcmVzZXJ2ZXMuPFRvb01hbnlSZXNlcnZlcwAXBEkBVG9vIG1hbnkgYXNzZXRzIHdpdGggZGlmZmVyZW50IHJlc2VydmUgbG9jYXRpb25zIGhhdmUgYmVlbiBhdHRlbXB0ZWQgZm9yIHRyYW5zZmVyLmBMb2NhbEV4ZWN1dGlvbkluY29tcGxldGUAGAR8TG9jYWwgWENNIGV4ZWN1dGlvbiBpbmNvbXBsZXRlLmBUb29NYW55QXV0aG9yaXplZEFsaWFzZXMAGQS4VG9vIG1hbnkgbG9jYXRpb25zIGF1dGhvcml6ZWQgdG8gYWxpYXMgb3JpZ2luLjRFeHBpcmVzSW5QYXN0ABoEjEV4cGlyeSBibG9jayBudW1iZXIgaXMgaW4gdGhlIHBhc3QuNEFsaWFzTm90Rm91bmQAGwTQVGhlIGFsaWFzIHRvIHJlbW92ZSBhdXRob3JpemF0aW9uIGZvciB3YXMgbm90IGZvdW5kLoRMb2NhbEV4ZWN1dGlvbkluY29tcGxldGVXaXRoRXJyb3IIARRpbmRleAwBQEluc3RydWN0aW9uSW5kZXgAARRlcnJvcjkMAThFeGVjdXRpb25FcnJvcgAcCDUBTG9jYWwgWENNIGV4ZWN1dGlvbiBpbmNvbXBsZXRlIHdpdGggdGhlIGFjdHVhbCBYQ00gZXJyb3IgYW5kIHRoZSBpbmRleCBvZiB0aGWIaW5zdHJ1Y3Rpb24gdGhhdCBjYXVzZWQgdGhlIGVycm9yLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC45DAwocGFsbGV0X3hjbRhlcnJvcnM4RXhlY3V0aW9uRXJyb3IAAaQgT3ZlcmZsb3cAAAA0VW5pbXBsZW1lbnRlZAABAGBVbnRydXN0ZWRSZXNlcnZlTG9jYXRpb24AAgBkVW50cnVzdGVkVGVsZXBvcnRMb2NhdGlvbgADADBMb2NhdGlvbkZ1bGwABABUTG9jYXRpb25Ob3RJbnZlcnRpYmxlAAUAJEJhZE9yaWdpbgAGADxJbnZhbGlkTG9jYXRpb24ABwA0QXNzZXROb3RGb3VuZAAIAFRGYWlsZWRUb1RyYW5zYWN0QXNzZXQACQA8Tm90V2l0aGRyYXdhYmxlAAoASExvY2F0aW9uQ2Fubm90SG9sZAALAFRFeGNlZWRzTWF4TWVzc2FnZVNpemUADABYRGVzdGluYXRpb25VbnN1cHBvcnRlZAANACRUcmFuc3BvcnQADgAoVW5yb3V0YWJsZQAPADBVbmtub3duQ2xhaW0AEAA4RmFpbGVkVG9EZWNvZGUAEQBATWF4V2VpZ2h0SW52YWxpZAASADhOb3RIb2xkaW5nRmVlcwATADBUb29FeHBlbnNpdmUAFAAQVHJhcAAVAEBFeHBlY3RhdGlvbkZhbHNlABYAOFBhbGxldE5vdEZvdW5kABcAME5hbWVNaXNtYXRjaAAYAExWZXJzaW9uSW5jb21wYXRpYmxlABkAUEhvbGRpbmdXb3VsZE92ZXJmbG93ABoALEV4cG9ydEVycm9yABsAOFJlYW5jaG9yRmFpbGVkABwAGE5vRGVhbAAdAChGZWVzTm90TWV0AB4AJExvY2tFcnJvcgAfADBOb1Blcm1pc3Npb24AIAAoVW5hbmNob3JlZAAhADhOb3REZXBvc2l0YWJsZQAiADRUb29NYW55QXNzZXRzACMATFVuaGFuZGxlZFhjbVZlcnNpb24AJABIV2VpZ2h0TGltaXRSZWFjaGVkACUAHEJhcnJpZXIAJgBMV2VpZ2h0Tm90Q29tcHV0YWJsZQAnAERFeGNlZWRzU3RhY2tMaW1pdAAoAAA9DAhgYnBfeGNtX2JyaWRnZV9odWJfcm91dGVyLEJyaWRnZVN0YXRlAAAIAUxkZWxpdmVyeV9mZWVfZmFjdG9yKQUBJEZpeGVkVTEyOAABMGlzX2Nvbmdlc3RlZF0BARBib29sAABBDAhQcGFsbGV0X21lc3NhZ2VfcXVldWUkQm9va1N0YXRlBDRNZXNzYWdlT3JpZ2luAdEDABgBFGJlZ2luOAEkUGFnZUluZGV4AAEMZW5kOAEkUGFnZUluZGV4AAEUY291bnQ4ASRQYWdlSW5kZXgAAUByZWFkeV9uZWlnaGJvdXJzRQwBhE9wdGlvbjxOZWlnaGJvdXJzPE1lc3NhZ2VPcmlnaW4+PgABNG1lc3NhZ2VfY291bnQoAQx1NjQAARBzaXplKAEMdTY0AABFDAQYT3B0aW9uBARUAUkMAQgQTm9uZQAAABBTb21lBABJDAAAAQAASQwIUHBhbGxldF9tZXNzYWdlX3F1ZXVlKE5laWdoYm91cnMENE1lc3NhZ2VPcmlnaW4B0QMACAEQcHJldtEDATRNZXNzYWdlT3JpZ2luAAEQbmV4dNEDATRNZXNzYWdlT3JpZ2luAABNDAAABAjRAzgAUQwIUHBhbGxldF9tZXNzYWdlX3F1ZXVlEFBhZ2UIEFNpemUBOCBIZWFwU2l6ZQAAGAEkcmVtYWluaW5nOAEQU2l6ZQABOHJlbWFpbmluZ19zaXplOAEQU2l6ZQABLGZpcnN0X2luZGV4OAEQU2l6ZQABFGZpcnN0OAEQU2l6ZQABEGxhc3Q4ARBTaXplAAEQaGVhcFUMAZxCb3VuZGVkVmVjPHU4LCBJbnRvVTMyPEhlYXBTaXplLCBTaXplPj4AAFUMDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBDARTAAAEABgBGFZlYzxUPgAAWQwMUHBhbGxldF9tZXNzYWdlX3F1ZXVlGHBhbGxldBRFcnJvcgQEVAABJCxOb3RSZWFwYWJsZQAACEkBUGFnZSBpcyBub3QgcmVhcGFibGUgYmVjYXVzZSBpdCBoYXMgaXRlbXMgcmVtYWluaW5nIHRvIGJlIHByb2Nlc3NlZCBhbmQgaXMgbm90IG9sZBxlbm91Z2guGE5vUGFnZQABBIRQYWdlIHRvIGJlIHJlYXBlZCBkb2VzIG5vdCBleGlzdC4kTm9NZXNzYWdlAAIEqFRoZSByZWZlcmVuY2VkIG1lc3NhZ2UgY291bGQgbm90IGJlIGZvdW5kLkBBbHJlYWR5UHJvY2Vzc2VkAAMEAQFUaGUgbWVzc2FnZSB3YXMgYWxyZWFkeSBwcm9jZXNzZWQgYW5kIGNhbm5vdCBiZSBwcm9jZXNzZWQgYWdhaW4uGFF1ZXVlZAAEBKxUaGUgbWVzc2FnZSBpcyBxdWV1ZWQgZm9yIGZ1dHVyZSBleGVjdXRpb24uSEluc3VmZmljaWVudFdlaWdodAAFBBkBVGhlcmUgaXMgdGVtcG9yYXJpbHkgbm90IGVub3VnaCB3ZWlnaHQgdG8gY29udGludWUgc2VydmljaW5nIG1lc3NhZ2VzLmBUZW1wb3JhcmlseVVucHJvY2Vzc2FibGUABhCoVGhpcyBtZXNzYWdlIGlzIHRlbXBvcmFyaWx5IHVucHJvY2Vzc2FibGUuAFkBU3VjaCBlcnJvcnMgYXJlIGV4cGVjdGVkLCBidXQgbm90IGd1YXJhbnRlZWQsIHRvIHJlc29sdmUgdGhlbXNlbHZlcyBldmVudHVhbGx5IHRocm91Z2gkcmV0cnlpbmcuLFF1ZXVlUGF1c2VkAAcM7FRoZSBxdWV1ZSBpcyBwYXVzZWQgYW5kIG5vIG1lc3NhZ2UgY2FuIGJlIGV4ZWN1dGVkIGZyb20gaXQuAB0BVGhpcyBjYW4gY2hhbmdlIGF0IGFueSB0aW1lIGFuZCBtYXkgcmVzb2x2ZSBpbiB0aGUgZnV0dXJlIGJ5IHJlLXRyeWluZy5MUmVjdXJzaXZlRGlzYWxsb3dlZAAIBDEBQW5vdGhlciBjYWxsIGlzIGluIHByb2dyZXNzIGFuZCBuZWVkcyB0byBmaW5pc2ggYmVmb3JlIHRoaXMgY2FsbCBjYW4gaGFwcGVuLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC5dDAyEc25vd2JyaWRnZV9wYWxsZXRfc3lzdGVtX2Zyb250ZW5kGHBhbGxldBRFcnJvcgQEVAABNGhVbnN1cHBvcnRlZExvY2F0aW9uVmVyc2lvbgAABIhDb252ZXJ0IHZlcnNpb25lZCBsb2NhdGlvbiBmYWlsdXJlREludmFsaWRBc3NldE93bmVyAAEEGQFDaGVjayBsb2NhdGlvbiBmYWlsdXJlLCBzaG91bGQgc3RhcnQgZnJvbSB0aGUgZGlzcGF0Y2ggb3JpZ2luIGFzIG93bmVyLFNlbmRGYWlsdXJlAAIEYFNlbmQgeGNtIG1lc3NhZ2UgZmFpbHVyZShGZWVzTm90TWV0AAMEaFdpdGhkcmF3IGZlZSBhc3NldCBmYWlsdXJlYExvY2F0aW9uQ29udmVyc2lvbkZhaWxlZAAEBJhDb252ZXJ0IHRvIHJlYW5jaG9yZWQgbG9jYXRpb24gZmFpbHVyZRhIYWx0ZWQABQRgTWVzc2FnZSBleHBvcnQgaXMgaGFsdGVkLFVucmVhY2hhYmxlAAYIXQFUaGUgZGVzaXJlZCBkZXN0aW5hdGlvbiB3YXMgdW5yZWFjaGFibGUsIGdlbmVyYWxseSBiZWNhdXNlIHRoZXJlIGlzIGEgbm8gd2F5IG9mIHJvdXRpbmcYdG8gaXQuQFVuc3VwcG9ydGVkQXNzZXQABwS4VGhlIGFzc2V0IHByb3ZpZGVkIGZvciB0aGUgdGlwIGlzIHVuc3VwcG9ydGVkLjRXaXRoZHJhd0Vycm9yAAgEZFVuYWJsZSB0byB3aXRoZHJhdyBhc3NldC44SW52YWxpZEFjY291bnQACQS0QWNjb3VudCBjb3VsZCBub3QgYmUgY29udmVydGVkIHRvIGEgbG9jYXRpb24uJFN3YXBFcnJvcgAKBMhQcm92aWRlZCB0aXAgYXNzZXQgY291bGQgbm90IGJlIHN3YXBwZWQgZm9yIGV0aGVyLiRCdXJuRXJyb3IACwRoRXRoZXIgY291bGQgbm90IGJlIGJ1cm5lZC40VGlwQW1vdW50WmVybwAMBGRUaGUgdGlwIHByb3ZpZGVkIGlzIHplcm8uBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LmEMDDhwYWxsZXRfdXRpbGl0eRhwYWxsZXQURXJyb3IEBFQAAQQwVG9vTWFueUNhbGxzAAAEXFRvbyBtYW55IGNhbGxzIGJhdGNoZWQuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LmUMAAAECAQIAGkMCDxwYWxsZXRfbXVsdGlzaWcgTXVsdGlzaWcQLEJsb2NrTnVtYmVyATgcQmFsYW5jZQFZASRBY2NvdW50SWQBBDBNYXhBcHByb3ZhbHMAABABEHdoZW4xBAFYVGltZXBvaW50PEJsb2NrTnVtYmVyPgABHGRlcG9zaXRZAQEcQmFsYW5jZQABJGRlcG9zaXRvcgQBJEFjY291bnRJZAABJGFwcHJvdmFsc20MAYxCb3VuZGVkVmVjPEFjY291bnRJZCwgTWF4QXBwcm92YWxzPgAAbQwMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEEBFMAAAQAYQEBGFZlYzxUPgAAcQwMPHBhbGxldF9tdWx0aXNpZxhwYWxsZXQURXJyb3IEBFQAAThATWluaW11bVRocmVzaG9sZAAABHxUaHJlc2hvbGQgbXVzdCBiZSAyIG9yIGdyZWF0ZXIuPEFscmVhZHlBcHByb3ZlZAABBKxDYWxsIGlzIGFscmVhZHkgYXBwcm92ZWQgYnkgdGhpcyBzaWduYXRvcnkuRE5vQXBwcm92YWxzTmVlZGVkAAIEnENhbGwgZG9lc24ndCBuZWVkIGFueSAobW9yZSkgYXBwcm92YWxzLkRUb29GZXdTaWduYXRvcmllcwADBKhUaGVyZSBhcmUgdG9vIGZldyBzaWduYXRvcmllcyBpbiB0aGUgbGlzdC5IVG9vTWFueVNpZ25hdG9yaWVzAAQErFRoZXJlIGFyZSB0b28gbWFueSBzaWduYXRvcmllcyBpbiB0aGUgbGlzdC5UU2lnbmF0b3JpZXNPdXRPZk9yZGVyAAUEDQFUaGUgc2lnbmF0b3JpZXMgd2VyZSBwcm92aWRlZCBvdXQgb2Ygb3JkZXI7IHRoZXkgc2hvdWxkIGJlIG9yZGVyZWQuTFNlbmRlckluU2lnbmF0b3JpZXMABgQNAVRoZSBzZW5kZXIgd2FzIGNvbnRhaW5lZCBpbiB0aGUgb3RoZXIgc2lnbmF0b3JpZXM7IGl0IHNob3VsZG4ndCBiZS4gTm90Rm91bmQABwSgTXVsdGlzaWcgb3BlcmF0aW9uIG5vdCBmb3VuZCBpbiBzdG9yYWdlLiBOb3RPd25lcgAICFEBT25seSB0aGUgYWNjb3VudCB0aGF0IG9yaWdpbmFsbHkgY3JlYXRlZCB0aGUgbXVsdGlzaWcgaXMgYWJsZSB0byBjYW5jZWwgaXQgb3IgdXBkYXRlNGl0cyBkZXBvc2l0cy4sTm9UaW1lcG9pbnQACQQdAU5vIHRpbWVwb2ludCB3YXMgZ2l2ZW4sIHlldCB0aGUgbXVsdGlzaWcgb3BlcmF0aW9uIGlzIGFscmVhZHkgdW5kZXJ3YXkuOFdyb25nVGltZXBvaW50AAoELQFBIGRpZmZlcmVudCB0aW1lcG9pbnQgd2FzIGdpdmVuIHRvIHRoZSBtdWx0aXNpZyBvcGVyYXRpb24gdGhhdCBpcyB1bmRlcndheS5MVW5leHBlY3RlZFRpbWVwb2ludAALBPRBIHRpbWVwb2ludCB3YXMgZ2l2ZW4sIHlldCBubyBtdWx0aXNpZyBvcGVyYXRpb24gaXMgdW5kZXJ3YXkuPE1heFdlaWdodFRvb0xvdwAMBNBUaGUgbWF4aW11bSB3ZWlnaHQgaW5mb3JtYXRpb24gcHJvdmlkZWQgd2FzIHRvbyBsb3cuNEFscmVhZHlTdG9yZWQADQSgVGhlIGRhdGEgdG8gYmUgc3RvcmVkIGlzIGFscmVhZHkgc3RvcmVkLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC51DAAABAh5DFkBAHkMDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBfQwEUwAABACBDAEYVmVjPFQ+AAB9DAgwcGFsbGV0X3Byb3h5PFByb3h5RGVmaW5pdGlvbgwkQWNjb3VudElkAQQkUHJveHlUeXBlAT0ELEJsb2NrTnVtYmVyATgADAEgZGVsZWdhdGUEASRBY2NvdW50SWQAAShwcm94eV90eXBlPQQBJFByb3h5VHlwZQABFGRlbGF5OAEsQmxvY2tOdW1iZXIAAIEMAAACfQwAhQwAAAQIiQxZAQCJDAxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAY0MBFMAAAQAkQwBGFZlYzxUPgAAjQwIMHBhbGxldF9wcm94eTBBbm5vdW5jZW1lbnQMJEFjY291bnRJZAEEEEhhc2gBQCxCbG9ja051bWJlcgE4AAwBEHJlYWwEASRBY2NvdW50SWQAASRjYWxsX2hhc2hAARBIYXNoAAEYaGVpZ2h0OAEsQmxvY2tOdW1iZXIAAJEMAAACjQwAlQwMMHBhbGxldF9wcm94eRhwYWxsZXQURXJyb3IEBFQAASAcVG9vTWFueQAABCEBVGhlcmUgYXJlIHRvbyBtYW55IHByb3hpZXMgcmVnaXN0ZXJlZCBvciB0b28gbWFueSBhbm5vdW5jZW1lbnRzIHBlbmRpbmcuIE5vdEZvdW5kAAEEdFByb3h5IHJlZ2lzdHJhdGlvbiBub3QgZm91bmQuIE5vdFByb3h5AAIEzFNlbmRlciBpcyBub3QgYSBwcm94eSBvZiB0aGUgYWNjb3VudCB0byBiZSBwcm94aWVkLixVbnByb3h5YWJsZQADBCEBQSBjYWxsIHdoaWNoIGlzIGluY29tcGF0aWJsZSB3aXRoIHRoZSBwcm94eSB0eXBlJ3MgZmlsdGVyIHdhcyBhdHRlbXB0ZWQuJER1cGxpY2F0ZQAEBGxBY2NvdW50IGlzIGFscmVhZHkgYSBwcm94eS4wTm9QZXJtaXNzaW9uAAUEFQFDYWxsIG1heSBub3QgYmUgbWFkZSBieSBwcm94eSBiZWNhdXNlIGl0IG1heSBlc2NhbGF0ZSBpdHMgcHJpdmlsZWdlcy4sVW5hbm5vdW5jZWQABgTQQW5ub3VuY2VtZW50LCBpZiBtYWRlIGF0IGFsbCwgd2FzIG1hZGUgdG9vIHJlY2VudGx5LixOb1NlbGZQcm94eQAHBGRDYW5ub3QgYWRkIHNlbGYgYXMgcHJveHkuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LpkMAAAEDARZAV0BAJ0MDDhwYWxsZXRfaW5kaWNlcxhwYWxsZXQURXJyb3IEBFQAARQsTm90QXNzaWduZWQAAASMVGhlIGluZGV4IHdhcyBub3QgYWxyZWFkeSBhc3NpZ25lZC4gTm90T3duZXIAAQSkVGhlIGluZGV4IGlzIGFzc2lnbmVkIHRvIGFub3RoZXIgYWNjb3VudC4USW5Vc2UAAgRwVGhlIGluZGV4IHdhcyBub3QgYXZhaWxhYmxlLixOb3RUcmFuc2ZlcgADBMhUaGUgc291cmNlIGFuZCBkZXN0aW5hdGlvbiBhY2NvdW50cyBhcmUgaWRlbnRpY2FsLiRQZXJtYW5lbnQABATQVGhlIGluZGV4IGlzIHBlcm1hbmVudCBhbmQgbWF5IG5vdCBiZSBmcmVlZC9jaGFuZ2VkLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC6hDAw0cGFsbGV0X2Fzc2V0cxR0eXBlczBBc3NldERldGFpbHMMHEJhbGFuY2UBWQEkQWNjb3VudElkAQQ4RGVwb3NpdEJhbGFuY2UBWQEAMAEUb3duZXIEASRBY2NvdW50SWQAARhpc3N1ZXIEASRBY2NvdW50SWQAARRhZG1pbgQBJEFjY291bnRJZAABHGZyZWV6ZXIEASRBY2NvdW50SWQAARhzdXBwbHlZAQEcQmFsYW5jZQABHGRlcG9zaXRZAQE4RGVwb3NpdEJhbGFuY2UAASxtaW5fYmFsYW5jZVkBARxCYWxhbmNlAAE0aXNfc3VmZmljaWVudF0BARBib29sAAEgYWNjb3VudHM4AQx1MzIAASxzdWZmaWNpZW50czgBDHUzMgABJGFwcHJvdmFsczgBDHUzMgABGHN0YXR1c6UMASxBc3NldFN0YXR1cwAApQwMNHBhbGxldF9hc3NldHMUdHlwZXMsQXNzZXRTdGF0dXMAAQwQTGl2ZQAAABhGcm96ZW4AAQAoRGVzdHJveWluZwACAACpDAAABAg4BACtDAw0cGFsbGV0X2Fzc2V0cxR0eXBlczBBc3NldEFjY291bnQQHEJhbGFuY2UBWQE4RGVwb3NpdEJhbGFuY2UBWQEURXh0cmEBECRBY2NvdW50SWQBBAAQARxiYWxhbmNlWQEBHEJhbGFuY2UAARhzdGF0dXOxDAE0QWNjb3VudFN0YXR1cwABGHJlYXNvbrUMAahFeGlzdGVuY2VSZWFzb248RGVwb3NpdEJhbGFuY2UsIEFjY291bnRJZD4AARRleHRyYRABFEV4dHJhAACxDAw0cGFsbGV0X2Fzc2V0cxR0eXBlczRBY2NvdW50U3RhdHVzAAEMGExpcXVpZAAAABhGcm96ZW4AAQAcQmxvY2tlZAACAAC1DAw0cGFsbGV0X2Fzc2V0cxR0eXBlczxFeGlzdGVuY2VSZWFzb24IHEJhbGFuY2UBWQEkQWNjb3VudElkAQQBFCBDb25zdW1lcgAAAChTdWZmaWNpZW50AAEALERlcG9zaXRIZWxkBABZAQEcQmFsYW5jZQACADxEZXBvc2l0UmVmdW5kZWQAAwAsRGVwb3NpdEZyb20IAAQBJEFjY291bnRJZAAAWQEBHEJhbGFuY2UABAAAuQwAAAQMOAQEAL0MDDRwYWxsZXRfYXNzZXRzFHR5cGVzIEFwcHJvdmFsCBxCYWxhbmNlAVkBOERlcG9zaXRCYWxhbmNlAVkBAAgBGGFtb3VudFkBARxCYWxhbmNlAAEcZGVwb3NpdFkBAThEZXBvc2l0QmFsYW5jZQAAwQwMNHBhbGxldF9hc3NldHMUdHlwZXM0QXNzZXRNZXRhZGF0YQg4RGVwb3NpdEJhbGFuY2UBWQE0Qm91bmRlZFN0cmluZwHFDAAUARxkZXBvc2l0WQEBOERlcG9zaXRCYWxhbmNlAAEQbmFtZcUMATRCb3VuZGVkU3RyaW5nAAEYc3ltYm9sxQwBNEJvdW5kZWRTdHJpbmcAASBkZWNpbWFscwwBCHU4AAEkaXNfZnJvemVuXQEBEGJvb2wAAMUMDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBDARTAAAEABgBGFZlYzxUPgAAyQwMNHBhbGxldF9hc3NldHMYcGFsbGV0FEVycm9yCARUAARJAAFgKEJhbGFuY2VMb3cAAAQVAUFjY291bnQgYmFsYW5jZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0aGUgdHJhbnNmZXIgYW1vdW50LiROb0FjY291bnQAAQSQVGhlIGFjY291bnQgdG8gYWx0ZXIgZG9lcyBub3QgZXhpc3QuME5vUGVybWlzc2lvbgACBOhUaGUgc2lnbmluZyBhY2NvdW50IGhhcyBubyBwZXJtaXNzaW9uIHRvIGRvIHRoZSBvcGVyYXRpb24uHFVua25vd24AAwR4VGhlIGdpdmVuIGFzc2V0IElEIGlzIHVua25vd24uGEZyb3plbgAEBHRUaGUgb3JpZ2luIGFjY291bnQgaXMgZnJvemVuLhRJblVzZQAFBHhUaGUgYXNzZXQgSUQgaXMgYWxyZWFkeSB0YWtlbi4oQmFkV2l0bmVzcwAGBGxJbnZhbGlkIHdpdG5lc3MgZGF0YSBnaXZlbi44TWluQmFsYW5jZVplcm8ABwSMTWluaW11bSBiYWxhbmNlIHNob3VsZCBiZSBub24temVyby5MVW5hdmFpbGFibGVDb25zdW1lcgAIDFkBVW5hYmxlIHRvIGluY3JlbWVudCB0aGUgY29uc3VtZXIgcmVmZXJlbmNlIGNvdW50ZXJzIG9uIHRoZSBhY2NvdW50LiBFaXRoZXIgbm8gcHJvdmlkZXJNAXJlZmVyZW5jZSBleGlzdHMgdG8gYWxsb3cgYSBub24temVybyBiYWxhbmNlIG9mIGEgbm9uLXNlbGYtc3VmZmljaWVudCBhc3NldCwgb3Igb25l8GZld2VyIHRoZW4gdGhlIG1heGltdW0gbnVtYmVyIG9mIGNvbnN1bWVycyBoYXMgYmVlbiByZWFjaGVkLixCYWRNZXRhZGF0YQAJBFxJbnZhbGlkIG1ldGFkYXRhIGdpdmVuLihVbmFwcHJvdmVkAAoExE5vIGFwcHJvdmFsIGV4aXN0cyB0aGF0IHdvdWxkIGFsbG93IHRoZSB0cmFuc2Zlci4gV291bGREaWUACwQ1AVRoZSBzb3VyY2UgYWNjb3VudCB3b3VsZCBub3Qgc3Vydml2ZSB0aGUgdHJhbnNmZXIgYW5kIGl0IG5lZWRzIHRvIHN0YXkgYWxpdmUuNEFscmVhZHlFeGlzdHMADASEVGhlIGFzc2V0LWFjY291bnQgYWxyZWFkeSBleGlzdHMuJE5vRGVwb3NpdAANBNRUaGUgYXNzZXQtYWNjb3VudCBkb2Vzbid0IGhhdmUgYW4gYXNzb2NpYXRlZCBkZXBvc2l0LiRXb3VsZEJ1cm4ADgTEVGhlIG9wZXJhdGlvbiB3b3VsZCByZXN1bHQgaW4gZnVuZHMgYmVpbmcgYnVybmVkLiRMaXZlQXNzZXQADwhZAVRoZSBhc3NldCBpcyBhIGxpdmUgYXNzZXQgYW5kIGlzIGFjdGl2ZWx5IGJlaW5nIHVzZWQuIFVzdWFsbHkgZW1pdCBmb3Igb3BlcmF0aW9ucyBzdWNoHQFhcyBgc3RhcnRfZGVzdHJveWAgd2hpY2ggcmVxdWlyZSB0aGUgYXNzZXQgdG8gYmUgaW4gYSBkZXN0cm95aW5nIHN0YXRlLjBBc3NldE5vdExpdmUAEATIVGhlIGFzc2V0IGlzIG5vdCBsaXZlLCBhbmQgbGlrZWx5IGJlaW5nIGRlc3Ryb3llZC48SW5jb3JyZWN0U3RhdHVzABEEsFRoZSBhc3NldCBzdGF0dXMgaXMgbm90IHRoZSBleHBlY3RlZCBzdGF0dXMuJE5vdEZyb3plbgASBNhUaGUgYXNzZXQgc2hvdWxkIGJlIGZyb3plbiBiZWZvcmUgdGhlIGdpdmVuIG9wZXJhdGlvbi44Q2FsbGJhY2tGYWlsZWQAEwSEQ2FsbGJhY2sgYWN0aW9uIHJlc3VsdGVkIGluIGVycm9yKEJhZEFzc2V0SWQAFATIVGhlIGFzc2V0IElEIG11c3QgYmUgZXF1YWwgdG8gdGhlIFtgTmV4dEFzc2V0SWRgXS48Q29udGFpbnNGcmVlemVzABUETQFUaGUgYXNzZXQgY2Fubm90IGJlIGRlc3Ryb3llZCBiZWNhdXNlIHNvbWUgYWNjb3VudHMgZm9yIHRoaXMgYXNzZXQgY29udGFpbiBmcmVlemVzLjRDb250YWluc0hvbGRzABYERQFUaGUgYXNzZXQgY2Fubm90IGJlIGRlc3Ryb3llZCBiZWNhdXNlIHNvbWUgYWNjb3VudHMgZm9yIHRoaXMgYXNzZXQgY29udGFpbiBob2xkcy48VG9vTWFueVJlc2VydmVzABcEgFRyaWVkIHNldHRpbmcgdG9vIG1hbnkgcmVzZXJ2ZXMuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0Ls0MBBhPcHRpb24EBFQBoQwBCBBOb25lAAAAEFNvbWUEAKEMAAABAADRDAQYT3B0aW9uBARUAcEMAQgQTm9uZQAAABBTb21lBADBDAAAAQAA1QwMOHBhbGxldF91bmlxdWVzFHR5cGVzRENvbGxlY3Rpb25EZXRhaWxzCCRBY2NvdW50SWQBBDhEZXBvc2l0QmFsYW5jZQFZAQAoARRvd25lcgQBJEFjY291bnRJZAABGGlzc3VlcgQBJEFjY291bnRJZAABFGFkbWluBAEkQWNjb3VudElkAAEcZnJlZXplcgQBJEFjY291bnRJZAABNHRvdGFsX2RlcG9zaXRZAQE4RGVwb3NpdEJhbGFuY2UAATBmcmVlX2hvbGRpbmddAQEQYm9vbAABFGl0ZW1zOAEMdTMyAAE4aXRlbV9tZXRhZGF0YXM4AQx1MzIAAShhdHRyaWJ1dGVzOAEMdTMyAAEkaXNfZnJvemVuXQEBEGJvb2wAANkMAAAEDAQ4OADdDAw4cGFsbGV0X3VuaXF1ZXMUdHlwZXMsSXRlbURldGFpbHMIJEFjY291bnRJZAEEOERlcG9zaXRCYWxhbmNlAVkBABABFG93bmVyBAEkQWNjb3VudElkAAEgYXBwcm92ZWSRAQFET3B0aW9uPEFjY291bnRJZD4AASRpc19mcm96ZW5dAQEQYm9vbAABHGRlcG9zaXRZAQE4RGVwb3NpdEJhbGFuY2UAAOEMDDhwYWxsZXRfdW5pcXVlcxR0eXBlc0hDb2xsZWN0aW9uTWV0YWRhdGEIOERlcG9zaXRCYWxhbmNlAVkBLFN0cmluZ0xpbWl0AAAMARxkZXBvc2l0WQEBOERlcG9zaXRCYWxhbmNlAAEQZGF0YWEEAWxCb3VuZGVkVmVjPHU4LCBTdHJpbmdMaW1pdD4AASRpc19mcm96ZW5dAQEQYm9vbAAA5QwMOHBhbGxldF91bmlxdWVzFHR5cGVzMEl0ZW1NZXRhZGF0YQg4RGVwb3NpdEJhbGFuY2UBWQEsU3RyaW5nTGltaXQAAAwBHGRlcG9zaXRZAQE4RGVwb3NpdEJhbGFuY2UAARBkYXRhYQQBbEJvdW5kZWRWZWM8dTgsIFN0cmluZ0xpbWl0PgABJGlzX2Zyb3plbl0BARBib29sAADpDAAABAw45J0BAO0MAAAECHxZAQDxDAAABAhZAZEBAPUMDDhwYWxsZXRfdW5pcXVlcxhwYWxsZXQURXJyb3IIBFQABEkAAVgwTm9QZXJtaXNzaW9uAAAE6FRoZSBzaWduaW5nIGFjY291bnQgaGFzIG5vIHBlcm1pc3Npb24gdG8gZG8gdGhlIG9wZXJhdGlvbi5EVW5rbm93bkNvbGxlY3Rpb24AAQR0VGhlIGdpdmVuIGl0ZW0gSUQgaXMgdW5rbm93bi40QWxyZWFkeUV4aXN0cwACBLhUaGUgaXRlbSBJRCBoYXMgYWxyZWFkeSBiZWVuIHVzZWQgZm9yIGFuIGl0ZW0uKFdyb25nT3duZXIAAwToVGhlIG93bmVyIHR1cm5lZCBvdXQgdG8gYmUgZGlmZmVyZW50IHRvIHdoYXQgd2FzIGV4cGVjdGVkLihCYWRXaXRuZXNzAAQEbEludmFsaWQgd2l0bmVzcyBkYXRhIGdpdmVuLhRJblVzZQAFBHRUaGUgaXRlbSBJRCBpcyBhbHJlYWR5IHRha2VuLhhGcm96ZW4ABgSEVGhlIGl0ZW0gb3IgY29sbGVjdGlvbiBpcyBmcm96ZW4uNFdyb25nRGVsZWdhdGUABwT0VGhlIGRlbGVnYXRlIHR1cm5lZCBvdXQgdG8gYmUgZGlmZmVyZW50IHRvIHdoYXQgd2FzIGV4cGVjdGVkLihOb0RlbGVnYXRlAAgEeFRoZXJlIGlzIG5vIGRlbGVnYXRlIGFwcHJvdmVkLihVbmFwcHJvdmVkAAkExE5vIGFwcHJvdmFsIGV4aXN0cyB0aGF0IHdvdWxkIGFsbG93IHRoZSB0cmFuc2Zlci4oVW5hY2NlcHRlZAAKBCUBVGhlIG5hbWVkIG93bmVyIGhhcyBub3Qgc2lnbmVkIG93bmVyc2hpcCBvZiB0aGUgY29sbGVjdGlvbiBpcyBhY2NlcHRhYmxlLhhMb2NrZWQACwRMVGhlIGl0ZW0gaXMgbG9ja2VkLkBNYXhTdXBwbHlSZWFjaGVkAAwEbEFsbCBpdGVtcyBoYXZlIGJlZW4gbWludGVkLkxNYXhTdXBwbHlBbHJlYWR5U2V0AA0EkFRoZSBtYXggc3VwcGx5IGhhcyBhbHJlYWR5IGJlZW4gc2V0LkRNYXhTdXBwbHlUb29TbWFsbAAOBEEBVGhlIHByb3ZpZGVkIG1heCBzdXBwbHkgaXMgbGVzcyB0byB0aGUgYW1vdW50IG9mIGl0ZW1zIGEgY29sbGVjdGlvbiBhbHJlYWR5IGhhcy4sVW5rbm93bkl0ZW0ADwR0VGhlIGdpdmVuIGl0ZW0gSUQgaXMgdW5rbm93bi4oTm90Rm9yU2FsZQAQBFRJdGVtIGlzIG5vdCBmb3Igc2FsZS4kQmlkVG9vTG93ABEEcFRoZSBwcm92aWRlZCBiaWQgaXMgdG9vIGxvdy4oTm9NZXRhZGF0YQASBFRObyBtZXRhZGF0YSBpcyBmb3VuZC40V3JvbmdNZXRhZGF0YQATBKBXcm9uZyBtZXRhZGF0YSBrZXkvdmFsdWUgYnl0ZXMgc3VwcGxpZWQuREF0dHJpYnV0ZU5vdEZvdW5kABQEaEFuIGF0dHJpYnV0ZSBpcyBub3QgZm91bmQuOFdyb25nQXR0cmlidXRlABUEpFdyb25nIGF0dHJpYnV0ZSBrZXkvdmFsdWUgYnl0ZXMgc3VwcGxpZWQuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LvkMDCxwYWxsZXRfbmZ0cxR0eXBlc0RDb2xsZWN0aW9uRGV0YWlscwgkQWNjb3VudElkAQQ4RGVwb3NpdEJhbGFuY2UBWQEAGAEUb3duZXIEASRBY2NvdW50SWQAATRvd25lcl9kZXBvc2l0WQEBOERlcG9zaXRCYWxhbmNlAAEUaXRlbXM4AQx1MzIAAThpdGVtX21ldGFkYXRhczgBDHUzMgABMGl0ZW1fY29uZmlnczgBDHUzMgABKGF0dHJpYnV0ZXM4AQx1MzIAAP0MDCxwYWxsZXRfbmZ0cxR0eXBlcyBCaXRGbGFncwQEVAEBDQAEAAwBOENvbGxlY3Rpb25Sb2xlAAABDQwscGFsbGV0X25mdHMUdHlwZXM4Q29sbGVjdGlvblJvbGUAAQwYSXNzdWVyAAEAHEZyZWV6ZXIAAgAUQWRtaW4ABAAABQ0MLHBhbGxldF9uZnRzFHR5cGVzLEl0ZW1EZXRhaWxzDCRBY2NvdW50SWQBBBxEZXBvc2l0AQkNJEFwcHJvdmFscwENDQAMARRvd25lcgQBJEFjY291bnRJZAABJGFwcHJvdmFscw0NASRBcHByb3ZhbHMAARxkZXBvc2l0CQ0BHERlcG9zaXQAAAkNDCxwYWxsZXRfbmZ0cxR0eXBlcyxJdGVtRGVwb3NpdAg4RGVwb3NpdEJhbGFuY2UBWQEkQWNjb3VudElkAQQACAEcYWNjb3VudAQBJEFjY291bnRJZAABGGFtb3VudFkBAThEZXBvc2l0QmFsYW5jZQAADQ0MTGJvdW5kZWRfY29sbGVjdGlvbnNEYm91bmRlZF9idHJlZV9tYXA8Qm91bmRlZEJUcmVlTWFwDARLAQQEVgHkBFMAAAQAEQ0BOEJUcmVlTWFwPEssIFY+AAARDQQgQlRyZWVNYXAIBEsBBARWAeQABAAVDQAAABUNAAACGQ0AGQ0AAAQIBOQAHQ0MLHBhbGxldF9uZnRzFHR5cGVzSENvbGxlY3Rpb25NZXRhZGF0YQgcRGVwb3NpdAFZASxTdHJpbmdMaW1pdAAACAEcZGVwb3NpdFkBARxEZXBvc2l0AAEQZGF0YUUBAWxCb3VuZGVkVmVjPHU4LCBTdHJpbmdMaW1pdD4AACENDCxwYWxsZXRfbmZ0cxR0eXBlczBJdGVtTWV0YWRhdGEIHERlcG9zaXQBJQ0sU3RyaW5nTGltaXQAAAgBHGRlcG9zaXQlDQEcRGVwb3NpdAABEGRhdGFFAQFsQm91bmRlZFZlYzx1OCwgU3RyaW5nTGltaXQ+AAAlDQwscGFsbGV0X25mdHMUdHlwZXNMSXRlbU1ldGFkYXRhRGVwb3NpdAg4RGVwb3NpdEJhbGFuY2UBWQEkQWNjb3VudElkAQQACAEcYWNjb3VudJEBAURPcHRpb248QWNjb3VudElkPgABGGFtb3VudFkBAThEZXBvc2l0QmFsYW5jZQAAKQ0AAAQQOOSZBHwALQ0AAAQIRQExDQAxDQwscGFsbGV0X25mdHMUdHlwZXNAQXR0cmlidXRlRGVwb3NpdAg4RGVwb3NpdEJhbGFuY2UBWQEkQWNjb3VudElkAQQACAEcYWNjb3VudJEBAURPcHRpb248QWNjb3VudElkPgABGGFtb3VudFkBAThEZXBvc2l0QmFsYW5jZQAANQ0MTGJvdW5kZWRfY29sbGVjdGlvbnNEYm91bmRlZF9idHJlZV9zZXQ8Qm91bmRlZEJUcmVlU2V0CARUAQQEUwAABAA5DQEsQlRyZWVTZXQ8VD4AADkNBCBCVHJlZVNldAQEVAEEAAQAYQEAAAA9DQwscGFsbGV0X25mdHMUdHlwZXMsUGVuZGluZ1N3YXAQMENvbGxlY3Rpb25JZAE4GEl0ZW1JZAE4WEl0ZW1QcmljZVdpdGhEaXJlY3Rpb24BsQQgRGVhZGxpbmUBOAAQAUhkZXNpcmVkX2NvbGxlY3Rpb244ATBDb2xsZWN0aW9uSWQAATBkZXNpcmVkX2l0ZW3kAThPcHRpb248SXRlbUlkPgABFHByaWNlrQQBeE9wdGlvbjxJdGVtUHJpY2VXaXRoRGlyZWN0aW9uPgABIGRlYWRsaW5lOAEgRGVhZGxpbmUAAEENDCxwYWxsZXRfbmZ0cxR0eXBlcyBCaXRGbGFncwQEVAFFDQAEACgBNFBhbGxldEZlYXR1cmUAAEUNDCxwYWxsZXRfbmZ0cxR0eXBlczRQYWxsZXRGZWF0dXJlAAEQHFRyYWRpbmcAAQAoQXR0cmlidXRlcwACACRBcHByb3ZhbHMABAAUU3dhcHMACAAASQ0MLHBhbGxldF9uZnRzGHBhbGxldBRFcnJvcggEVAAESQABtDBOb1Blcm1pc3Npb24AAAToVGhlIHNpZ25pbmcgYWNjb3VudCBoYXMgbm8gcGVybWlzc2lvbiB0byBkbyB0aGUgb3BlcmF0aW9uLkRVbmtub3duQ29sbGVjdGlvbgABBHRUaGUgZ2l2ZW4gaXRlbSBJRCBpcyB1bmtub3duLjRBbHJlYWR5RXhpc3RzAAIEuFRoZSBpdGVtIElEIGhhcyBhbHJlYWR5IGJlZW4gdXNlZCBmb3IgYW4gaXRlbS48QXBwcm92YWxFeHBpcmVkAAMEOQFUaGUgYXBwcm92YWwgaGFkIGEgZGVhZGxpbmUgdGhhdCBleHBpcmVkLCBzbyB0aGUgYXBwcm92YWwgaXNuJ3QgdmFsaWQgYW55bW9yZS4oV3JvbmdPd25lcgAEBOhUaGUgb3duZXIgdHVybmVkIG91dCB0byBiZSBkaWZmZXJlbnQgdG8gd2hhdCB3YXMgZXhwZWN0ZWQuKEJhZFdpdG5lc3MABQQVAVRoZSB3aXRuZXNzIGRhdGEgZ2l2ZW4gZG9lcyBub3QgbWF0Y2ggdGhlIGN1cnJlbnQgc3RhdGUgb2YgdGhlIGNoYWluLkRDb2xsZWN0aW9uSWRJblVzZQAGBHxDb2xsZWN0aW9uIElEIGlzIGFscmVhZHkgdGFrZW4uUEl0ZW1zTm9uVHJhbnNmZXJhYmxlAAcEyEl0ZW1zIHdpdGhpbiB0aGF0IGNvbGxlY3Rpb24gYXJlIG5vbi10cmFuc2ZlcmFibGUuLE5vdERlbGVnYXRlAAgEnFRoZSBwcm92aWRlZCBhY2NvdW50IGlzIG5vdCBhIGRlbGVnYXRlLjRXcm9uZ0RlbGVnYXRlAAkE9FRoZSBkZWxlZ2F0ZSB0dXJuZWQgb3V0IHRvIGJlIGRpZmZlcmVudCB0byB3aGF0IHdhcyBleHBlY3RlZC4oVW5hcHByb3ZlZAAKBMRObyBhcHByb3ZhbCBleGlzdHMgdGhhdCB3b3VsZCBhbGxvdyB0aGUgdHJhbnNmZXIuKFVuYWNjZXB0ZWQACwQZAVRoZSBuYW1lZCBvd25lciBoYXMgbm90IHNpZ25lZCBvd25lcnNoaXAgYWNjZXB0YW5jZSBvZiB0aGUgY29sbGVjdGlvbi4oSXRlbUxvY2tlZAAMBJhUaGUgaXRlbSBpcyBsb2NrZWQgKG5vbi10cmFuc2ZlcmFibGUpLlBMb2NrZWRJdGVtQXR0cmlidXRlcwANBHRJdGVtJ3MgYXR0cmlidXRlcyBhcmUgbG9ja2VkLmhMb2NrZWRDb2xsZWN0aW9uQXR0cmlidXRlcwAOBIxDb2xsZWN0aW9uJ3MgYXR0cmlidXRlcyBhcmUgbG9ja2VkLkhMb2NrZWRJdGVtTWV0YWRhdGEADwRoSXRlbSdzIG1ldGFkYXRhIGlzIGxvY2tlZC5gTG9ja2VkQ29sbGVjdGlvbk1ldGFkYXRhABAEgENvbGxlY3Rpb24ncyBtZXRhZGF0YSBpcyBsb2NrZWQuQE1heFN1cHBseVJlYWNoZWQAEQRsQWxsIGl0ZW1zIGhhdmUgYmVlbiBtaW50ZWQuPE1heFN1cHBseUxvY2tlZAASBLhUaGUgbWF4IHN1cHBseSBpcyBsb2NrZWQgYW5kIGNhbid0IGJlIGNoYW5nZWQuRE1heFN1cHBseVRvb1NtYWxsABMESQFUaGUgcHJvdmlkZWQgbWF4IHN1cHBseSBpcyBsZXNzIHRoYW4gdGhlIG51bWJlciBvZiBpdGVtcyBhIGNvbGxlY3Rpb24gYWxyZWFkeSBoYXMuLFVua25vd25JdGVtABQEdFRoZSBnaXZlbiBpdGVtIElEIGlzIHVua25vd24uLFVua25vd25Td2FwABUETFN3YXAgZG9lc24ndCBleGlzdC5ATWV0YWRhdGFOb3RGb3VuZAAWBIxUaGUgZ2l2ZW4gaXRlbSBoYXMgbm8gbWV0YWRhdGEgc2V0LkRBdHRyaWJ1dGVOb3RGb3VuZAAXBJhUaGUgcHJvdmlkZWQgYXR0cmlidXRlIGNhbid0IGJlIGZvdW5kLihOb3RGb3JTYWxlABgEVEl0ZW0gaXMgbm90IGZvciBzYWxlLiRCaWRUb29Mb3cAGQRwVGhlIHByb3ZpZGVkIGJpZCBpcyB0b28gbG93LlBSZWFjaGVkQXBwcm92YWxMaW1pdAAaBKBUaGUgaXRlbSBoYXMgcmVhY2hlZCBpdHMgYXBwcm92YWwgbGltaXQuPERlYWRsaW5lRXhwaXJlZAAbBIRUaGUgZGVhZGxpbmUgaGFzIGFscmVhZHkgZXhwaXJlZC40V3JvbmdEdXJhdGlvbgAcBDEBVGhlIGR1cmF0aW9uIHByb3ZpZGVkIHNob3VsZCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gYE1heERlYWRsaW5lRHVyYXRpb25gLjhNZXRob2REaXNhYmxlZAAdBKhUaGUgbWV0aG9kIGlzIGRpc2FibGVkIGJ5IHN5c3RlbSBzZXR0aW5ncy4wV3JvbmdTZXR0aW5nAB4EiFRoZSBwcm92aWRlZCBzZXR0aW5nIGNhbid0IGJlIHNldC5YSW5jb25zaXN0ZW50SXRlbUNvbmZpZwAfBBUBSXRlbSdzIGNvbmZpZyBhbHJlYWR5IGV4aXN0cyBhbmQgc2hvdWxkIGJlIGVxdWFsIHRvIHRoZSBwcm92aWRlZCBvbmUuIE5vQ29uZmlnACAEyENvbmZpZyBmb3IgYSBjb2xsZWN0aW9uIG9yIGFuIGl0ZW0gY2FuJ3QgYmUgZm91bmQuPFJvbGVzTm90Q2xlYXJlZAAhBHBTb21lIHJvbGVzIHdlcmUgbm90IGNsZWFyZWQuOE1pbnROb3RTdGFydGVkACIEZE1pbnQgaGFzIG5vdCBzdGFydGVkIHlldC4kTWludEVuZGVkACMEXE1pbnQgaGFzIGFscmVhZHkgZW5kZWQuOEFscmVhZHlDbGFpbWVkACQEwFRoZSBwcm92aWRlZCBJdGVtIHdhcyBhbHJlYWR5IHVzZWQgZm9yIGNsYWltaW5nLjRJbmNvcnJlY3REYXRhACUEfFRoZSBwcm92aWRlZCBkYXRhIGlzIGluY29ycmVjdC4sV3JvbmdPcmlnaW4AJgSsVGhlIGV4dHJpbnNpYyB3YXMgc2VudCBieSB0aGUgd3Jvbmcgb3JpZ2luLjhXcm9uZ1NpZ25hdHVyZQAnBJBUaGUgcHJvdmlkZWQgc2lnbmF0dXJlIGlzIGluY29ycmVjdC5ESW5jb3JyZWN0TWV0YWRhdGEAKASgVGhlIHByb3ZpZGVkIG1ldGFkYXRhIG1pZ2h0IGJlIHRvbyBsb25nLmRNYXhBdHRyaWJ1dGVzTGltaXRSZWFjaGVkACkEnENhbid0IHNldCBtb3JlIGF0dHJpYnV0ZXMgcGVyIG9uZSBjYWxsLjhXcm9uZ05hbWVzcGFjZQAqBNBUaGUgcHJvdmlkZWQgbmFtZXNwYWNlIGlzbid0IHN1cHBvcnRlZCBpbiB0aGlzIGNhbGwuSENvbGxlY3Rpb25Ob3RFbXB0eQArBIxDYW4ndCBkZWxldGUgbm9uLWVtcHR5IGNvbGxlY3Rpb25zLjxXaXRuZXNzUmVxdWlyZWQALASQVGhlIHdpdG5lc3MgZGF0YSBzaG91bGQgYmUgcHJvdmlkZWQuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0Lk0NAAAECB0CBABRDQAABAwdAgQEAFUNDDRwYWxsZXRfYXNzZXRzFHR5cGVzNEFzc2V0TWV0YWRhdGEIOERlcG9zaXRCYWxhbmNlAVkBNEJvdW5kZWRTdHJpbmcBWQ0AFAEcZGVwb3NpdFkBAThEZXBvc2l0QmFsYW5jZQABEG5hbWVZDQE0Qm91bmRlZFN0cmluZwABGHN5bWJvbFkNATRCb3VuZGVkU3RyaW5nAAEgZGVjaW1hbHMMAQh1OAABJGlzX2Zyb3plbl0BARBib29sAABZDQxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQwEUwAABAAYARhWZWM8VD4AAF0NDDRwYWxsZXRfYXNzZXRzGHBhbGxldBRFcnJvcggEVAAESQABYChCYWxhbmNlTG93AAAEFQFBY2NvdW50IGJhbGFuY2UgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gdGhlIHRyYW5zZmVyIGFtb3VudC4kTm9BY2NvdW50AAEEkFRoZSBhY2NvdW50IHRvIGFsdGVyIGRvZXMgbm90IGV4aXN0LjBOb1Blcm1pc3Npb24AAgToVGhlIHNpZ25pbmcgYWNjb3VudCBoYXMgbm8gcGVybWlzc2lvbiB0byBkbyB0aGUgb3BlcmF0aW9uLhxVbmtub3duAAMEeFRoZSBnaXZlbiBhc3NldCBJRCBpcyB1bmtub3duLhhGcm96ZW4ABAR0VGhlIG9yaWdpbiBhY2NvdW50IGlzIGZyb3plbi4USW5Vc2UABQR4VGhlIGFzc2V0IElEIGlzIGFscmVhZHkgdGFrZW4uKEJhZFdpdG5lc3MABgRsSW52YWxpZCB3aXRuZXNzIGRhdGEgZ2l2ZW4uOE1pbkJhbGFuY2VaZXJvAAcEjE1pbmltdW0gYmFsYW5jZSBzaG91bGQgYmUgbm9uLXplcm8uTFVuYXZhaWxhYmxlQ29uc3VtZXIACAxZAVVuYWJsZSB0byBpbmNyZW1lbnQgdGhlIGNvbnN1bWVyIHJlZmVyZW5jZSBjb3VudGVycyBvbiB0aGUgYWNjb3VudC4gRWl0aGVyIG5vIHByb3ZpZGVyTQFyZWZlcmVuY2UgZXhpc3RzIHRvIGFsbG93IGEgbm9uLXplcm8gYmFsYW5jZSBvZiBhIG5vbi1zZWxmLXN1ZmZpY2llbnQgYXNzZXQsIG9yIG9uZfBmZXdlciB0aGVuIHRoZSBtYXhpbXVtIG51bWJlciBvZiBjb25zdW1lcnMgaGFzIGJlZW4gcmVhY2hlZC4sQmFkTWV0YWRhdGEACQRcSW52YWxpZCBtZXRhZGF0YSBnaXZlbi4oVW5hcHByb3ZlZAAKBMRObyBhcHByb3ZhbCBleGlzdHMgdGhhdCB3b3VsZCBhbGxvdyB0aGUgdHJhbnNmZXIuIFdvdWxkRGllAAsENQFUaGUgc291cmNlIGFjY291bnQgd291bGQgbm90IHN1cnZpdmUgdGhlIHRyYW5zZmVyIGFuZCBpdCBuZWVkcyB0byBzdGF5IGFsaXZlLjRBbHJlYWR5RXhpc3RzAAwEhFRoZSBhc3NldC1hY2NvdW50IGFscmVhZHkgZXhpc3RzLiROb0RlcG9zaXQADQTUVGhlIGFzc2V0LWFjY291bnQgZG9lc24ndCBoYXZlIGFuIGFzc29jaWF0ZWQgZGVwb3NpdC4kV291bGRCdXJuAA4ExFRoZSBvcGVyYXRpb24gd291bGQgcmVzdWx0IGluIGZ1bmRzIGJlaW5nIGJ1cm5lZC4kTGl2ZUFzc2V0AA8IWQFUaGUgYXNzZXQgaXMgYSBsaXZlIGFzc2V0IGFuZCBpcyBhY3RpdmVseSBiZWluZyB1c2VkLiBVc3VhbGx5IGVtaXQgZm9yIG9wZXJhdGlvbnMgc3VjaB0BYXMgYHN0YXJ0X2Rlc3Ryb3lgIHdoaWNoIHJlcXVpcmUgdGhlIGFzc2V0IHRvIGJlIGluIGEgZGVzdHJveWluZyBzdGF0ZS4wQXNzZXROb3RMaXZlABAEyFRoZSBhc3NldCBpcyBub3QgbGl2ZSwgYW5kIGxpa2VseSBiZWluZyBkZXN0cm95ZWQuPEluY29ycmVjdFN0YXR1cwARBLBUaGUgYXNzZXQgc3RhdHVzIGlzIG5vdCB0aGUgZXhwZWN0ZWQgc3RhdHVzLiROb3RGcm96ZW4AEgTYVGhlIGFzc2V0IHNob3VsZCBiZSBmcm96ZW4gYmVmb3JlIHRoZSBnaXZlbiBvcGVyYXRpb24uOENhbGxiYWNrRmFpbGVkABMEhENhbGxiYWNrIGFjdGlvbiByZXN1bHRlZCBpbiBlcnJvcihCYWRBc3NldElkABQEyFRoZSBhc3NldCBJRCBtdXN0IGJlIGVxdWFsIHRvIHRoZSBbYE5leHRBc3NldElkYF0uPENvbnRhaW5zRnJlZXplcwAVBE0BVGhlIGFzc2V0IGNhbm5vdCBiZSBkZXN0cm95ZWQgYmVjYXVzZSBzb21lIGFjY291bnRzIGZvciB0aGlzIGFzc2V0IGNvbnRhaW4gZnJlZXplcy40Q29udGFpbnNIb2xkcwAWBEUBVGhlIGFzc2V0IGNhbm5vdCBiZSBkZXN0cm95ZWQgYmVjYXVzZSBzb21lIGFjY291bnRzIGZvciB0aGlzIGFzc2V0IGNvbnRhaW4gaG9sZHMuPFRvb01hbnlSZXNlcnZlcwAXBIBUcmllZCBzZXR0aW5nIHRvbyBtYW55IHJlc2VydmVzLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC5hDQQYT3B0aW9uBARUAVUNAQgQTm9uZQAAABBTb21lBABVDQAAAQAAZQ0MNHBhbGxldF9hc3NldHMUdHlwZXM0QXNzZXRNZXRhZGF0YQg4RGVwb3NpdEJhbGFuY2UBWQE0Qm91bmRlZFN0cmluZwFpDQAUARxkZXBvc2l0WQEBOERlcG9zaXRCYWxhbmNlAAEQbmFtZWkNATRCb3VuZGVkU3RyaW5nAAEYc3ltYm9saQ0BNEJvdW5kZWRTdHJpbmcAASBkZWNpbWFscwwBCHU4AAEkaXNfZnJvemVuXQEBEGJvb2wAAGkNDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBDARTAAAEABgBGFZlYzxUPgAAbQ0MNHBhbGxldF9hc3NldHMYcGFsbGV0FEVycm9yCARUAARJAAFgKEJhbGFuY2VMb3cAAAQVAUFjY291bnQgYmFsYW5jZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0aGUgdHJhbnNmZXIgYW1vdW50LiROb0FjY291bnQAAQSQVGhlIGFjY291bnQgdG8gYWx0ZXIgZG9lcyBub3QgZXhpc3QuME5vUGVybWlzc2lvbgACBOhUaGUgc2lnbmluZyBhY2NvdW50IGhhcyBubyBwZXJtaXNzaW9uIHRvIGRvIHRoZSBvcGVyYXRpb24uHFVua25vd24AAwR4VGhlIGdpdmVuIGFzc2V0IElEIGlzIHVua25vd24uGEZyb3plbgAEBHRUaGUgb3JpZ2luIGFjY291bnQgaXMgZnJvemVuLhRJblVzZQAFBHhUaGUgYXNzZXQgSUQgaXMgYWxyZWFkeSB0YWtlbi4oQmFkV2l0bmVzcwAGBGxJbnZhbGlkIHdpdG5lc3MgZGF0YSBnaXZlbi44TWluQmFsYW5jZVplcm8ABwSMTWluaW11bSBiYWxhbmNlIHNob3VsZCBiZSBub24temVyby5MVW5hdmFpbGFibGVDb25zdW1lcgAIDFkBVW5hYmxlIHRvIGluY3JlbWVudCB0aGUgY29uc3VtZXIgcmVmZXJlbmNlIGNvdW50ZXJzIG9uIHRoZSBhY2NvdW50LiBFaXRoZXIgbm8gcHJvdmlkZXJNAXJlZmVyZW5jZSBleGlzdHMgdG8gYWxsb3cgYSBub24temVybyBiYWxhbmNlIG9mIGEgbm9uLXNlbGYtc3VmZmljaWVudCBhc3NldCwgb3Igb25l8GZld2VyIHRoZW4gdGhlIG1heGltdW0gbnVtYmVyIG9mIGNvbnN1bWVycyBoYXMgYmVlbiByZWFjaGVkLixCYWRNZXRhZGF0YQAJBFxJbnZhbGlkIG1ldGFkYXRhIGdpdmVuLihVbmFwcHJvdmVkAAoExE5vIGFwcHJvdmFsIGV4aXN0cyB0aGF0IHdvdWxkIGFsbG93IHRoZSB0cmFuc2Zlci4gV291bGREaWUACwQ1AVRoZSBzb3VyY2UgYWNjb3VudCB3b3VsZCBub3Qgc3Vydml2ZSB0aGUgdHJhbnNmZXIgYW5kIGl0IG5lZWRzIHRvIHN0YXkgYWxpdmUuNEFscmVhZHlFeGlzdHMADASEVGhlIGFzc2V0LWFjY291bnQgYWxyZWFkeSBleGlzdHMuJE5vRGVwb3NpdAANBNRUaGUgYXNzZXQtYWNjb3VudCBkb2Vzbid0IGhhdmUgYW4gYXNzb2NpYXRlZCBkZXBvc2l0LiRXb3VsZEJ1cm4ADgTEVGhlIG9wZXJhdGlvbiB3b3VsZCByZXN1bHQgaW4gZnVuZHMgYmVpbmcgYnVybmVkLiRMaXZlQXNzZXQADwhZAVRoZSBhc3NldCBpcyBhIGxpdmUgYXNzZXQgYW5kIGlzIGFjdGl2ZWx5IGJlaW5nIHVzZWQuIFVzdWFsbHkgZW1pdCBmb3Igb3BlcmF0aW9ucyBzdWNoHQFhcyBgc3RhcnRfZGVzdHJveWAgd2hpY2ggcmVxdWlyZSB0aGUgYXNzZXQgdG8gYmUgaW4gYSBkZXN0cm95aW5nIHN0YXRlLjBBc3NldE5vdExpdmUAEATIVGhlIGFzc2V0IGlzIG5vdCBsaXZlLCBhbmQgbGlrZWx5IGJlaW5nIGRlc3Ryb3llZC48SW5jb3JyZWN0U3RhdHVzABEEsFRoZSBhc3NldCBzdGF0dXMgaXMgbm90IHRoZSBleHBlY3RlZCBzdGF0dXMuJE5vdEZyb3plbgASBNhUaGUgYXNzZXQgc2hvdWxkIGJlIGZyb3plbiBiZWZvcmUgdGhlIGdpdmVuIG9wZXJhdGlvbi44Q2FsbGJhY2tGYWlsZWQAEwSEQ2FsbGJhY2sgYWN0aW9uIHJlc3VsdGVkIGluIGVycm9yKEJhZEFzc2V0SWQAFATIVGhlIGFzc2V0IElEIG11c3QgYmUgZXF1YWwgdG8gdGhlIFtgTmV4dEFzc2V0SWRgXS48Q29udGFpbnNGcmVlemVzABUETQFUaGUgYXNzZXQgY2Fubm90IGJlIGRlc3Ryb3llZCBiZWNhdXNlIHNvbWUgYWNjb3VudHMgZm9yIHRoaXMgYXNzZXQgY29udGFpbiBmcmVlemVzLjRDb250YWluc0hvbGRzABYERQFUaGUgYXNzZXQgY2Fubm90IGJlIGRlc3Ryb3llZCBiZWNhdXNlIHNvbWUgYWNjb3VudHMgZm9yIHRoaXMgYXNzZXQgY29udGFpbiBob2xkcy48VG9vTWFueVJlc2VydmVzABcEgFRyaWVkIHNldHRpbmcgdG9vIG1hbnkgcmVzZXJ2ZXMuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LnENBBhPcHRpb24EBFQBZQ0BCBBOb25lAAAAEFNvbWUEAGUNAAABAAB1DQxccGFsbGV0X2Fzc2V0X2NvbnZlcnNpb24UdHlwZXMgUG9vbEluZm8ELFBvb2xBc3NldElkATgABAEgbHBfdG9rZW44ASxQb29sQXNzZXRJZAAAeQ0MXHBhbGxldF9hc3NldF9jb252ZXJzaW9uGHBhbGxldBRFcnJvcgQEVAABYEBJbnZhbGlkQXNzZXRQYWlyAAAEuFByb3ZpZGVkIGFzc2V0IHBhaXIgaXMgbm90IHN1cHBvcnRlZCBmb3IgcG9vbC4oUG9vbEV4aXN0cwABBFBQb29sIGFscmVhZHkgZXhpc3RzLkhXcm9uZ0Rlc2lyZWRBbW91bnQAAgR0RGVzaXJlZCBhbW91bnQgY2FuJ3QgYmUgemVyby5gQW1vdW50T25lTGVzc1RoYW5NaW5pbWFsAAMISQFQcm92aWRlZCBhbW91bnQgc2hvdWxkIGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0aGUgZXhpc3RlbnRpYWwgZGVwb3NpdC9hc3NldCdzPG1pbmltYWwgYW1vdW50LmBBbW91bnRUd29MZXNzVGhhbk1pbmltYWwABAhJAVByb3ZpZGVkIGFtb3VudCBzaG91bGQgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHRoZSBleGlzdGVudGlhbCBkZXBvc2l0L2Fzc2V0J3M8bWluaW1hbCBhbW91bnQuaFJlc2VydmVMZWZ0TGVzc1RoYW5NaW5pbWFsAAUITQFSZXNlcnZlIG5lZWRzIHRvIGFsd2F5cyBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gdGhlIGV4aXN0ZW50aWFsIGRlcG9zaXQvYXNzZXQnczxtaW5pbWFsIGFtb3VudC5AQW1vdW50T3V0VG9vSGlnaAAGBMhEZXNpcmVkIGFtb3VudCBjYW4ndCBiZSBlcXVhbCB0byB0aGUgcG9vbCByZXNlcnZlLjBQb29sTm90Rm91bmQABwRcVGhlIHBvb2wgZG9lc24ndCBleGlzdC4gT3ZlcmZsb3cACARUQW4gb3ZlcmZsb3cgaGFwcGVuZWQugEFzc2V0T25lRGVwb3NpdERpZE5vdE1lZXRNaW5pbXVtAAkEKQFUaGUgbWluaW1hbCBhbW91bnQgcmVxdWlyZW1lbnQgZm9yIHRoZSBmaXJzdCB0b2tlbiBpbiB0aGUgcGFpciB3YXNuJ3QgbWV0LoBBc3NldFR3b0RlcG9zaXREaWROb3RNZWV0TWluaW11bQAKBC0BVGhlIG1pbmltYWwgYW1vdW50IHJlcXVpcmVtZW50IGZvciB0aGUgc2Vjb25kIHRva2VuIGluIHRoZSBwYWlyIHdhc24ndCBtZXQujEFzc2V0T25lV2l0aGRyYXdhbERpZE5vdE1lZXRNaW5pbXVtAAsEKQFUaGUgbWluaW1hbCBhbW91bnQgcmVxdWlyZW1lbnQgZm9yIHRoZSBmaXJzdCB0b2tlbiBpbiB0aGUgcGFpciB3YXNuJ3QgbWV0LoxBc3NldFR3b1dpdGhkcmF3YWxEaWROb3RNZWV0TWluaW11bQAMBC0BVGhlIG1pbmltYWwgYW1vdW50IHJlcXVpcmVtZW50IGZvciB0aGUgc2Vjb25kIHRva2VuIGluIHRoZSBwYWlyIHdhc24ndCBtZXQucE9wdGltYWxBbW91bnRMZXNzVGhhbkRlc2lyZWQADQS8T3B0aW1hbCBjYWxjdWxhdGVkIGFtb3VudCBpcyBsZXNzIHRoYW4gZGVzaXJlZC5sSW5zdWZmaWNpZW50TGlxdWlkaXR5TWludGVkAA4EeEluc3VmZmljaWVudCBsaXF1aWRpdHkgbWludGVkLjRaZXJvTGlxdWlkaXR5AA8EiFJlcXVlc3RlZCBsaXF1aWRpdHkgY2FuJ3QgYmUgemVyby4oWmVyb0Ftb3VudAAQBFRBbW91bnQgY2FuJ3QgYmUgemVyby6MUHJvdmlkZWRNaW5pbXVtTm90U3VmZmljaWVudEZvclN3YXAAEQTsQ2FsY3VsYXRlZCBhbW91bnQgb3V0IGlzIGxlc3MgdGhhbiBwcm92aWRlZCBtaW5pbXVtIGFtb3VudC6MUHJvdmlkZWRNYXhpbXVtTm90U3VmZmljaWVudEZvclN3YXAAEgTMUHJvdmlkZWQgbWF4aW11bSBhbW91bnQgaXMgbm90IHN1ZmZpY2llbnQgZm9yIHN3YXAuLEludmFsaWRQYXRoABME1FRoZSBwcm92aWRlZCBwYXRoIG11c3QgY29uc2lzdHMgb2YgMiBhc3NldHMgYXQgbGVhc3QuNE5vblVuaXF1ZVBhdGgAFATEVGhlIHByb3ZpZGVkIHBhdGggbXVzdCBjb25zaXN0cyBvZiB1bmlxdWUgYXNzZXRzLlBJbmNvcnJlY3RQb29sQXNzZXRJZAAVBOxJdCB3YXMgbm90IHBvc3NpYmxlIHRvIGdldCBvciBpbmNyZW1lbnQgdGhlIElkIG9mIHRoZSBwb29sLjBCZWxvd01pbmltdW0AFgTwVGhlIGRlc3RpbmF0aW9uIGFjY291bnQgY2Fubm90IGV4aXN0IHdpdGggdGhlIHN3YXBwZWQgZnVuZHMuJFBvb2xFbXB0eQAXBDEBVGhlIHBvb2wgZXhpc3RzIGJ1dCBoYXMgbm8gbGlxdWlkaXR5IChhdCBsZWFzdCBvbmUgb2YgdGhlIHJlc2VydmVzIGlzIHplcm8pLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC59DQQYUmVzdWx0CARUAYENBEUBeQ0BCAhPawQAgQ0AAAAADEVycgQAeQ0AAAEAAIENAAAECFkBWQEAhQ0MVHBhbGxldF9hc3NldHNfZnJlZXplchhwYWxsZXQURXJyb3IIBFQABEkAAQQ4VG9vTWFueUZyZWV6ZXMAAAToTnVtYmVyIG9mIGZyZWV6ZXMgb24gYW4gYWNjb3VudCB3b3VsZCBleGNlZWQgYE1heEZyZWV6ZXNgLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC6JDQxQcGFsbGV0X2Fzc2V0c19ob2xkZXIYcGFsbGV0FEVycm9yCARUAARJAAEEMFRvb01hbnlIb2xkcwAABDEBTnVtYmVyIG9mIGhvbGRzIG9uIGFuIGFjY291bnQgd291bGQgZXhjZWVkIHRoZSBjb3VudCBvZiBgUnVudGltZUhvbGRSZWFzb25gLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC6NDQg8cGFsbGV0X3RyZWFzdXJ5IFByb3Bvc2FsCCRBY2NvdW50SWQBBBxCYWxhbmNlAVkBABABIHByb3Bvc2VyBAEkQWNjb3VudElkAAEUdmFsdWVZAQEcQmFsYW5jZQABLGJlbmVmaWNpYXJ5BAEkQWNjb3VudElkAAEQYm9uZFkBARxCYWxhbmNlAACRDQxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUATgEUwAABABdBAEYVmVjPFQ+AACVDQg8cGFsbGV0X3RyZWFzdXJ5LFNwZW5kU3RhdHVzFCRBc3NldEtpbmQB6QQwQXNzZXRCYWxhbmNlAVkBLEJlbmVmaWNpYXJ5Ae0ELEJsb2NrTnVtYmVyATgkUGF5bWVudElkASgAGAEoYXNzZXRfa2luZOkEASRBc3NldEtpbmQAARhhbW91bnRZAQEwQXNzZXRCYWxhbmNlAAEsYmVuZWZpY2lhcnntBAEsQmVuZWZpY2lhcnkAASh2YWxpZF9mcm9tOAEsQmxvY2tOdW1iZXIAASRleHBpcmVfYXQ4ASxCbG9ja051bWJlcgABGHN0YXR1c5kNAVxQYXltZW50U3RhdGU8UGF5bWVudElkPgAAmQ0IPHBhbGxldF90cmVhc3VyeTBQYXltZW50U3RhdGUECElkASgBDBxQZW5kaW5nAAAAJEF0dGVtcHRlZAQBCGlkKAEISWQAAQAYRmFpbGVkAAIAAJ0NDDxwYWxsZXRfdHJlYXN1cnkYcGFsbGV0FEVycm9yCARUAARJAAEsMEludmFsaWRJbmRleAAABKxObyBwcm9wb3NhbCwgYm91bnR5IG9yIHNwZW5kIGF0IHRoYXQgaW5kZXguQFRvb01hbnlBcHByb3ZhbHMAAQSAVG9vIG1hbnkgYXBwcm92YWxzIGluIHRoZSBxdWV1ZS5YSW5zdWZmaWNpZW50UGVybWlzc2lvbgACCEUBVGhlIHNwZW5kIG9yaWdpbiBpcyB2YWxpZCBidXQgdGhlIGFtb3VudCBpdCBpcyBhbGxvd2VkIHRvIHNwZW5kIGlzIGxvd2VyIHRoYW4gdGhlTGFtb3VudCB0byBiZSBzcGVudC5MUHJvcG9zYWxOb3RBcHByb3ZlZAADBHxQcm9wb3NhbCBoYXMgbm90IGJlZW4gYXBwcm92ZWQuWEZhaWxlZFRvQ29udmVydEJhbGFuY2UABARRAVRoZSBiYWxhbmNlIG9mIHRoZSBhc3NldCBraW5kIGlzIG5vdCBjb252ZXJ0aWJsZSB0byB0aGUgYmFsYW5jZSBvZiB0aGUgbmF0aXZlIGFzc2V0LjBTcGVuZEV4cGlyZWQABQSwVGhlIHNwZW5kIGhhcyBleHBpcmVkIGFuZCBjYW5ub3QgYmUgY2xhaW1lZC4sRWFybHlQYXlvdXQABgSkVGhlIHNwZW5kIGlzIG5vdCB5ZXQgZWxpZ2libGUgZm9yIHBheW91dC5AQWxyZWFkeUF0dGVtcHRlZAAHBJxUaGUgcGF5bWVudCBoYXMgYWxyZWFkeSBiZWVuIGF0dGVtcHRlZC4sUGF5b3V0RXJyb3IACATMVGhlcmUgd2FzIHNvbWUgaXNzdWUgd2l0aCB0aGUgbWVjaGFuaXNtIG9mIHBheW1lbnQuME5vdEF0dGVtcHRlZAAJBKRUaGUgcGF5b3V0IHdhcyBub3QgeWV0IGF0dGVtcHRlZC9jbGFpbWVkLjBJbmNvbmNsdXNpdmUACgTEVGhlIHBheW1lbnQgaGFzIG5laXRoZXIgZmFpbGVkIG5vciBzdWNjZWVkZWQgeWV0LgR4RXJyb3IgZm9yIHRoZSB0cmVhc3VyeSBwYWxsZXQuoQ0AAAQIBO0DAKUNDGBwYWxsZXRfY29udmljdGlvbl92b3RpbmcQdm90ZRhWb3RpbmcUHEJhbGFuY2UBWQEkQWNjb3VudElkAQQsQmxvY2tOdW1iZXIBOCRQb2xsSW5kZXgBOCBNYXhWb3RlcwABCBxDYXN0aW5nBACpDQHIQ2FzdGluZzxCYWxhbmNlLCBCbG9ja051bWJlciwgUG9sbEluZGV4LCBNYXhWb3Rlcz4AAAAoRGVsZWdhdGluZwQAwQ0BrERlbGVnYXRpbmc8QmFsYW5jZSwgQWNjb3VudElkLCBCbG9ja051bWJlcj4AAQAAqQ0MYHBhbGxldF9jb252aWN0aW9uX3ZvdGluZxB2b3RlHENhc3RpbmcQHEJhbGFuY2UBWQEsQmxvY2tOdW1iZXIBOCRQb2xsSW5kZXgBOCBNYXhWb3RlcwAADAEUdm90ZXOtDQHcQm91bmRlZFZlYzwoUG9sbEluZGV4LCBBY2NvdW50Vm90ZTxCYWxhbmNlPiksIE1heFZvdGVzPgABLGRlbGVnYXRpb25zuQ0BUERlbGVnYXRpb25zPEJhbGFuY2U+AAEUcHJpb3K9DQF8UHJpb3JMb2NrPEJsb2NrTnVtYmVyLCBCYWxhbmNlPgAArQ0MTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAGxDQRTAAAEALUNARhWZWM8VD4AALENAAAECDj1BAC1DQAAArENALkNDGBwYWxsZXRfY29udmljdGlvbl92b3RpbmcUdHlwZXMsRGVsZWdhdGlvbnMEHEJhbGFuY2UBWQEACAEUdm90ZXNZAQEcQmFsYW5jZQABHGNhcGl0YWxZAQEcQmFsYW5jZQAAvQ0MYHBhbGxldF9jb252aWN0aW9uX3ZvdGluZxB2b3RlJFByaW9yTG9jawgsQmxvY2tOdW1iZXIBOBxCYWxhbmNlAVkBAAgAOAEsQmxvY2tOdW1iZXIAAFkBARxCYWxhbmNlAADBDQxgcGFsbGV0X2NvbnZpY3Rpb25fdm90aW5nEHZvdGUoRGVsZWdhdGluZwwcQmFsYW5jZQFZASRBY2NvdW50SWQBBCxCbG9ja051bWJlcgE4ABQBHGJhbGFuY2VZAQEcQmFsYW5jZQABGHRhcmdldAQBJEFjY291bnRJZAABKGNvbnZpY3Rpb279BAEoQ29udmljdGlvbgABLGRlbGVnYXRpb25zuQ0BUERlbGVnYXRpb25zPEJhbGFuY2U+AAEUcHJpb3K9DQF8UHJpb3JMb2NrPEJsb2NrTnVtYmVyLCBCYWxhbmNlPgAAxQ0MTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAHJDQRTAAAEAM0NARhWZWM8VD4AAMkNAAAECO0DWQEAzQ0AAALJDQDRDQxgcGFsbGV0X2NvbnZpY3Rpb25fdm90aW5nGHBhbGxldBRFcnJvcggEVAAESQABMChOb3RPbmdvaW5nAAAEUFBvbGwgaXMgbm90IG9uZ29pbmcuIE5vdFZvdGVyAAEErFRoZSBnaXZlbiBhY2NvdW50IGRpZCBub3Qgdm90ZSBvbiB0aGUgcG9sbC4wTm9QZXJtaXNzaW9uAAIEyFRoZSBhY3RvciBoYXMgbm8gcGVybWlzc2lvbiB0byBjb25kdWN0IHRoZSBhY3Rpb24uPE5vUGVybWlzc2lvbllldAADBFkBVGhlIGFjdG9yIGhhcyBubyBwZXJtaXNzaW9uIHRvIGNvbmR1Y3QgdGhlIGFjdGlvbiByaWdodCBub3cgYnV0IHdpbGwgZG8gaW4gdGhlIGZ1dHVyZS5EQWxyZWFkeURlbGVnYXRpbmcABASIVGhlIGFjY291bnQgaXMgYWxyZWFkeSBkZWxlZ2F0aW5nLjRBbHJlYWR5Vm90aW5nAAUIVQFUaGUgYWNjb3VudCBjdXJyZW50bHkgaGFzIHZvdGVzIGF0dGFjaGVkIHRvIGl0IGFuZCB0aGUgb3BlcmF0aW9uIGNhbm5vdCBzdWNjZWVkIHVudGlsoHRoZXNlIGFyZSByZW1vdmVkIHRocm91Z2ggYHJlbW92ZV92b3RlYC5ESW5zdWZmaWNpZW50RnVuZHMABgT8VG9vIGhpZ2ggYSBiYWxhbmNlIHdhcyBwcm92aWRlZCB0aGF0IHRoZSBhY2NvdW50IGNhbm5vdCBhZmZvcmQuNE5vdERlbGVnYXRpbmcABwSgVGhlIGFjY291bnQgaXMgbm90IGN1cnJlbnRseSBkZWxlZ2F0aW5nLiBOb25zZW5zZQAIBJREZWxlZ2F0aW9uIHRvIG9uZXNlbGYgbWFrZXMgbm8gc2Vuc2UuPE1heFZvdGVzUmVhY2hlZAAJBIBNYXhpbXVtIG51bWJlciBvZiB2b3RlcyByZWFjaGVkLixDbGFzc05lZWRlZAAKBDkBVGhlIGNsYXNzIG11c3QgYmUgc3VwcGxpZWQgc2luY2UgaXQgaXMgbm90IGVhc2lseSBkZXRlcm1pbmFibGUgZnJvbSB0aGUgc3RhdGUuIEJhZENsYXNzAAsEhFRoZSBjbGFzcyBJRCBzdXBwbGllZCBpcyBpbnZhbGlkLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC7VDQxAcGFsbGV0X3JlZmVyZW5kYRR0eXBlczhSZWZlcmVuZHVtSW5mbyAcVHJhY2tJZAHtAzRSdW50aW1lT3JpZ2luAfEDGE1vbWVudAE4EENhbGwBCQUcQmFsYW5jZQFZARRUYWxseQExCSRBY2NvdW50SWQBBDxTY2hlZHVsZUFkZHJlc3MB0AEYHE9uZ29pbmcEANkNAY0BUmVmZXJlbmR1bVN0YXR1czxUcmFja0lkLCBSdW50aW1lT3JpZ2luLCBNb21lbnQsIENhbGwsIEJhbGFuY2UsIFRhbGx5LApBY2NvdW50SWQsIFNjaGVkdWxlQWRkcmVzcyw+AAAAIEFwcHJvdmVkDAA4ARhNb21lbnQAAOENAYxPcHRpb248RGVwb3NpdDxBY2NvdW50SWQsIEJhbGFuY2U+PgAA4Q0BjE9wdGlvbjxEZXBvc2l0PEFjY291bnRJZCwgQmFsYW5jZT4+AAEAIFJlamVjdGVkDAA4ARhNb21lbnQAAOENAYxPcHRpb248RGVwb3NpdDxBY2NvdW50SWQsIEJhbGFuY2U+PgAA4Q0BjE9wdGlvbjxEZXBvc2l0PEFjY291bnRJZCwgQmFsYW5jZT4+AAIAJENhbmNlbGxlZAwAOAEYTW9tZW50AADhDQGMT3B0aW9uPERlcG9zaXQ8QWNjb3VudElkLCBCYWxhbmNlPj4AAOENAYxPcHRpb248RGVwb3NpdDxBY2NvdW50SWQsIEJhbGFuY2U+PgADACBUaW1lZE91dAwAOAEYTW9tZW50AADhDQGMT3B0aW9uPERlcG9zaXQ8QWNjb3VudElkLCBCYWxhbmNlPj4AAOENAYxPcHRpb248RGVwb3NpdDxBY2NvdW50SWQsIEJhbGFuY2U+PgAEABhLaWxsZWQEADgBGE1vbWVudAAFAADZDQxAcGFsbGV0X3JlZmVyZW5kYRR0eXBlc0BSZWZlcmVuZHVtU3RhdHVzIBxUcmFja0lkAe0DNFJ1bnRpbWVPcmlnaW4B8QMYTW9tZW50ATgQQ2FsbAEJBRxCYWxhbmNlAVkBFFRhbGx5ATEJJEFjY291bnRJZAEEPFNjaGVkdWxlQWRkcmVzcwHQACwBFHRyYWNr7QMBHFRyYWNrSWQAARhvcmlnaW7xAwE0UnVudGltZU9yaWdpbgABIHByb3Bvc2FsCQUBEENhbGwAASRlbmFjdG1lbnQRBQFQRGlzcGF0Y2hUaW1lPE1vbWVudD4AASRzdWJtaXR0ZWQ4ARhNb21lbnQAAUhzdWJtaXNzaW9uX2RlcG9zaXTdDQFsRGVwb3NpdDxBY2NvdW50SWQsIEJhbGFuY2U+AAFAZGVjaXNpb25fZGVwb3NpdOENAYxPcHRpb248RGVwb3NpdDxBY2NvdW50SWQsIEJhbGFuY2U+PgABIGRlY2lkaW5n5Q0BeE9wdGlvbjxEZWNpZGluZ1N0YXR1czxNb21lbnQ+PgABFHRhbGx5MQkBFFRhbGx5AAEgaW5fcXVldWVdAQEQYm9vbAABFGFsYXJt7Q0BhE9wdGlvbjwoTW9tZW50LCBTY2hlZHVsZUFkZHJlc3MpPgAA3Q0MQHBhbGxldF9yZWZlcmVuZGEUdHlwZXMcRGVwb3NpdAgkQWNjb3VudElkAQQcQmFsYW5jZQFZAQAIAQx3aG8EASRBY2NvdW50SWQAARhhbW91bnRZAQEcQmFsYW5jZQAA4Q0EGE9wdGlvbgQEVAHdDQEIEE5vbmUAAAAQU29tZQQA3Q0AAAEAAOUNBBhPcHRpb24EBFQB6Q0BCBBOb25lAAAAEFNvbWUEAOkNAAABAADpDQxAcGFsbGV0X3JlZmVyZW5kYRR0eXBlczhEZWNpZGluZ1N0YXR1cwQsQmxvY2tOdW1iZXIBOAAIARRzaW5jZTgBLEJsb2NrTnVtYmVyAAEoY29uZmlybWluZ+QBTE9wdGlvbjxCbG9ja051bWJlcj4AAO0NBBhPcHRpb24EBFQB8Q0BCBBOb25lAAAAEFNvbWUEAPENAAABAADxDQAABAg40AD1DQxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAfkNBFMAAAQA/Q0BGFZlYzxUPgAA+Q0AAAQIOFkBAP0NAAAC+Q0AAQ4AAAIFDgAFDgAABAjtAwkOAAkODEBwYWxsZXRfcmVmZXJlbmRhFHR5cGVzMFRyYWNrRGV0YWlscwwcQmFsYW5jZQFZARhNb21lbnQBOBBOYW1lAdUJACQBEG5hbWXVCQEQTmFtZQABMG1heF9kZWNpZGluZzgBDHUzMgABQGRlY2lzaW9uX2RlcG9zaXRZAQEcQmFsYW5jZQABOHByZXBhcmVfcGVyaW9kOAEYTW9tZW50AAE8ZGVjaXNpb25fcGVyaW9kOAEYTW9tZW50AAE4Y29uZmlybV9wZXJpb2Q4ARhNb21lbnQAAVBtaW5fZW5hY3RtZW50X3BlcmlvZDgBGE1vbWVudAABMG1pbl9hcHByb3ZhbA0OARRDdXJ2ZQABLG1pbl9zdXBwb3J0DQ4BFEN1cnZlAAANDgxAcGFsbGV0X3JlZmVyZW5kYRR0eXBlcxRDdXJ2ZQABDEBMaW5lYXJEZWNyZWFzaW5nDAEYbGVuZ3RooQEBHFBlcmJpbGwAARRmbG9vcqEBARxQZXJiaWxsAAEQY2VpbKEBARxQZXJiaWxsAAAARFN0ZXBwZWREZWNyZWFzaW5nEAEUYmVnaW6hAQEcUGVyYmlsbAABDGVuZKEBARxQZXJiaWxsAAEQc3RlcKEBARxQZXJiaWxsAAEYcGVyaW9koQEBHFBlcmJpbGwAAQAoUmVjaXByb2NhbAwBGGZhY3RvchEOASBGaXhlZEk2NAABIHhfb2Zmc2V0EQ4BIEZpeGVkSTY0AAEgeV9vZmZzZXQRDgEgRml4ZWRJNjQAAgAAEQ4MNHNwX2FyaXRobWV0aWMsZml4ZWRfcG9pbnQgRml4ZWRJNjQAAAQAFQ4BDGk2NAAAFQ4AAAUMABkODEBwYWxsZXRfcmVmZXJlbmRhGHBhbGxldBRFcnJvcggEVAAESQABOChOb3RPbmdvaW5nAAAEaFJlZmVyZW5kdW0gaXMgbm90IG9uZ29pbmcuKEhhc0RlcG9zaXQAAQS4UmVmZXJlbmR1bSdzIGRlY2lzaW9uIGRlcG9zaXQgaXMgYWxyZWFkeSBwYWlkLiBCYWRUcmFjawACBJxUaGUgdHJhY2sgaWRlbnRpZmllciBnaXZlbiB3YXMgaW52YWxpZC4QRnVsbAADBDEBVGhlcmUgYXJlIGFscmVhZHkgYSBmdWxsIGNvbXBsZW1lbnQgb2YgcmVmZXJlbmRhIGluIHByb2dyZXNzIGZvciB0aGlzIHRyYWNrLihRdWV1ZUVtcHR5AAQEgFRoZSBxdWV1ZSBvZiB0aGUgdHJhY2sgaXMgZW1wdHkuNEJhZFJlZmVyZW5kdW0ABQTkVGhlIHJlZmVyZW5kdW0gaW5kZXggcHJvdmlkZWQgaXMgaW52YWxpZCBpbiB0aGlzIGNvbnRleHQuLE5vdGhpbmdUb0RvAAYErFRoZXJlIHdhcyBub3RoaW5nIHRvIGRvIGluIHRoZSBhZHZhbmNlbWVudC4cTm9UcmFjawAHBKBObyB0cmFjayBleGlzdHMgZm9yIHRoZSBwcm9wb3NhbCBvcmlnaW4uKFVuZmluaXNoZWQACAQBAUFueSBkZXBvc2l0IGNhbm5vdCBiZSByZWZ1bmRlZCB1bnRpbCBhZnRlciB0aGUgZGVjaXNpb24gaXMgb3Zlci4wTm9QZXJtaXNzaW9uAAkEqFRoZSBkZXBvc2l0IHJlZnVuZGVyIGlzIG5vdCB0aGUgZGVwb3NpdG9yLiROb0RlcG9zaXQACgTMVGhlIGRlcG9zaXQgY2Fubm90IGJlIHJlZnVuZGVkIHNpbmNlIG5vbmUgd2FzIG1hZGUuJEJhZFN0YXR1cwALBNBUaGUgcmVmZXJlbmR1bSBzdGF0dXMgaXMgaW52YWxpZCBmb3IgdGhpcyBvcGVyYXRpb24uQFByZWltYWdlTm90RXhpc3QADARwVGhlIHByZWltYWdlIGRvZXMgbm90IGV4aXN0LoRQcmVpbWFnZVN0b3JlZFdpdGhEaWZmZXJlbnRMZW5ndGgADQQVAVRoZSBwcmVpbWFnZSBpcyBzdG9yZWQgd2l0aCBhIGRpZmZlcmVudCBsZW5ndGggdGhhbiB0aGUgb25lIHByb3ZpZGVkLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC4dDgxAcGFsbGV0X3doaXRlbGlzdBhwYWxsZXQURXJyb3IEBFQAARRMVW5hdmFpbGFibGVQcmVJbWFnZQAABMhUaGUgcHJlaW1hZ2Ugb2YgdGhlIGNhbGwgaGFzaCBjb3VsZCBub3QgYmUgbG9hZGVkLjxVbmRlY29kYWJsZUNhbGwAAQR4VGhlIGNhbGwgY291bGQgbm90IGJlIGRlY29kZWQuYEludmFsaWRDYWxsV2VpZ2h0V2l0bmVzcwACBOxUaGUgd2VpZ2h0IG9mIHRoZSBkZWNvZGVkIGNhbGwgd2FzIGhpZ2hlciB0aGFuIHRoZSB3aXRuZXNzLlBDYWxsSXNOb3RXaGl0ZWxpc3RlZAADBHRUaGUgY2FsbCB3YXMgbm90IHdoaXRlbGlzdGVkLlhDYWxsQWxyZWFkeVdoaXRlbGlzdGVkAAQEoFRoZSBjYWxsIHdhcyBhbHJlYWR5IHdoaXRlbGlzdGVkOyBOby1PcC4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuIQ4IPHBhbGxldF9ib3VudGllcxhCb3VudHkMJEFjY291bnRJZAEEHEJhbGFuY2UBWQEsQmxvY2tOdW1iZXIBOAAYASBwcm9wb3NlcgQBJEFjY291bnRJZAABFHZhbHVlWQEBHEJhbGFuY2UAAQxmZWVZAQEcQmFsYW5jZQABPGN1cmF0b3JfZGVwb3NpdFkBARxCYWxhbmNlAAEQYm9uZFkBARxCYWxhbmNlAAEYc3RhdHVzJQ4BkEJvdW50eVN0YXR1czxBY2NvdW50SWQsIEJsb2NrTnVtYmVyPgAAJQ4IPHBhbGxldF9ib3VudGllczBCb3VudHlTdGF0dXMIJEFjY291bnRJZAEELEJsb2NrTnVtYmVyATgBHCBQcm9wb3NlZAAAACBBcHByb3ZlZAABABhGdW5kZWQAAgA8Q3VyYXRvclByb3Bvc2VkBAEcY3VyYXRvcgQBJEFjY291bnRJZAADABhBY3RpdmUIARxjdXJhdG9yBAEkQWNjb3VudElkAAEodXBkYXRlX2R1ZTgBLEJsb2NrTnVtYmVyAAQANFBlbmRpbmdQYXlvdXQMARxjdXJhdG9yBAEkQWNjb3VudElkAAEsYmVuZWZpY2lhcnkEASRBY2NvdW50SWQAASR1bmxvY2tfYXQ4ASxCbG9ja051bWJlcgAFAExBcHByb3ZlZFdpdGhDdXJhdG9yBAEcY3VyYXRvcgQBJEFjY291bnRJZAAGAAApDgxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQwEUwAABAAYARhWZWM8VD4AAC0ODDxwYWxsZXRfYm91bnRpZXMYcGFsbGV0FEVycm9yCARUAARJAAEwcEluc3VmZmljaWVudFByb3Bvc2Vyc0JhbGFuY2UAAAR4UHJvcG9zZXIncyBiYWxhbmNlIGlzIHRvbyBsb3cuMEludmFsaWRJbmRleAABBJBObyBwcm9wb3NhbCBvciBib3VudHkgYXQgdGhhdCBpbmRleC4wUmVhc29uVG9vQmlnAAIEhFRoZSByZWFzb24gZ2l2ZW4gaXMganVzdCB0b28gYmlnLkBVbmV4cGVjdGVkU3RhdHVzAAMEgFRoZSBib3VudHkgc3RhdHVzIGlzIHVuZXhwZWN0ZWQuOFJlcXVpcmVDdXJhdG9yAAQEXFJlcXVpcmUgYm91bnR5IGN1cmF0b3IuMEludmFsaWRWYWx1ZQAFBFRJbnZhbGlkIGJvdW50eSB2YWx1ZS4oSW52YWxpZEZlZQAGBExJbnZhbGlkIGJvdW50eSBmZWUuNFBlbmRpbmdQYXlvdXQABwhsQSBib3VudHkgcGF5b3V0IGlzIHBlbmRpbmcu+FRvIGNhbmNlbCB0aGUgYm91bnR5LCB5b3UgbXVzdCB1bmFzc2lnbiBhbmQgc2xhc2ggdGhlIGN1cmF0b3IuJFByZW1hdHVyZQAIBEUBVGhlIGJvdW50aWVzIGNhbm5vdCBiZSBjbGFpbWVkL2Nsb3NlZCBiZWNhdXNlIGl0J3Mgc3RpbGwgaW4gdGhlIGNvdW50ZG93biBwZXJpb2QuUEhhc0FjdGl2ZUNoaWxkQm91bnR5AAkEBQFUaGUgYm91bnR5IGNhbm5vdCBiZSBjbG9zZWQgYmVjYXVzZSBpdCBoYXMgYWN0aXZlIGNoaWxkIGJvdW50aWVzLjRUb29NYW55UXVldWVkAAoEmFRvbyBtYW55IGFwcHJvdmFscyBhcmUgYWxyZWFkeSBxdWV1ZWQuLE5vdFByb3Bvc2VyAAsEnFVzZXIgaXMgbm90IHRoZSBwcm9wb3NlciBvZiB0aGUgYm91bnR5LgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC4xDghUcGFsbGV0X2NoaWxkX2JvdW50aWVzLENoaWxkQm91bnR5DCRBY2NvdW50SWQBBBxCYWxhbmNlAVkBLEJsb2NrTnVtYmVyATgAFAE0cGFyZW50X2JvdW50eTgBLEJvdW50eUluZGV4AAEUdmFsdWVZAQEcQmFsYW5jZQABDGZlZVkBARxCYWxhbmNlAAE8Y3VyYXRvcl9kZXBvc2l0WQEBHEJhbGFuY2UAARhzdGF0dXM1DgGkQ2hpbGRCb3VudHlTdGF0dXM8QWNjb3VudElkLCBCbG9ja051bWJlcj4AADUOCFRwYWxsZXRfY2hpbGRfYm91bnRpZXNEQ2hpbGRCb3VudHlTdGF0dXMIJEFjY291bnRJZAEELEJsb2NrTnVtYmVyATgBEBRBZGRlZAAAADxDdXJhdG9yUHJvcG9zZWQEARxjdXJhdG9yBAEkQWNjb3VudElkAAEAGEFjdGl2ZQQBHGN1cmF0b3IEASRBY2NvdW50SWQAAgA0UGVuZGluZ1BheW91dAwBHGN1cmF0b3IEASRBY2NvdW50SWQAASxiZW5lZmljaWFyeQQBJEFjY291bnRJZAABJHVubG9ja19hdDgBLEJsb2NrTnVtYmVyAAMAADkODFRwYWxsZXRfY2hpbGRfYm91bnRpZXMYcGFsbGV0FEVycm9yBARUAAEMVFBhcmVudEJvdW50eU5vdEFjdGl2ZQAABKRUaGUgcGFyZW50IGJvdW50eSBpcyBub3QgaW4gYWN0aXZlIHN0YXRlLmRJbnN1ZmZpY2llbnRCb3VudHlCYWxhbmNlAAEE5FRoZSBib3VudHkgYmFsYW5jZSBpcyBub3QgZW5vdWdoIHRvIGFkZCBuZXcgY2hpbGQtYm91bnR5LlBUb29NYW55Q2hpbGRCb3VudGllcwACBA0BTnVtYmVyIG9mIGNoaWxkIGJvdW50aWVzIGV4Y2VlZHMgbGltaXQgYE1heEFjdGl2ZUNoaWxkQm91bnR5Q291bnRgLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC49DgxEcGFsbGV0X2Fzc2V0X3JhdGUYcGFsbGV0FEVycm9yBARUAAEMQFVua25vd25Bc3NldEtpbmQAAAR4VGhlIGdpdmVuIGFzc2V0IElEIGlzIHVua25vd24uNEFscmVhZHlFeGlzdHMAAQRRAVRoZSBnaXZlbiBhc3NldCBJRCBhbHJlYWR5IGhhcyBhbiBhc3NpZ25lZCBjb252ZXJzaW9uIHJhdGUgYW5kIGNhbm5vdCBiZSByZS1jcmVhdGVkLiBPdmVyZmxvdwACBMxPdmVyZmxvdyBvY3VycmVkIHdoZW4gY2FsY3VsYXRpbmcgdGhlIGludmVyc2UgcmF0ZS4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuQQ4IbHBhbGxldF9tdWx0aV9hc3NldF9ib3VudGllcxhCb3VudHkYJEFjY291bnRJZAEEHEJhbGFuY2UBWQEkQXNzZXRLaW5kAekEEEhhc2gBQCRQYXltZW50SWQBKCxCZW5lZmljaWFyeQHtBAAQAShhc3NldF9raW5k6QQBJEFzc2V0S2luZAABFHZhbHVlWQEBHEJhbGFuY2UAASBtZXRhZGF0YUABEEhhc2gAARhzdGF0dXNFDgG8Qm91bnR5U3RhdHVzPEFjY291bnRJZCwgUGF5bWVudElkLCBCZW5lZmljaWFyeT4AAEUOCGxwYWxsZXRfbXVsdGlfYXNzZXRfYm91bnRpZXMwQm91bnR5U3RhdHVzDCRBY2NvdW50SWQBBCRQYXltZW50SWQBKCxCZW5lZmljaWFyeQHtBAEYQEZ1bmRpbmdBdHRlbXB0ZWQIARxjdXJhdG9yBAEkQWNjb3VudElkAAE4cGF5bWVudF9zdGF0dXNJDgFcUGF5bWVudFN0YXRlPFBheW1lbnRJZD4AAAAYRnVuZGVkBAEcY3VyYXRvcgQBJEFjY291bnRJZAABAERDdXJhdG9yVW5hc3NpZ25lZAACABhBY3RpdmUEARxjdXJhdG9yBAEkQWNjb3VudElkAAMAPFJlZnVuZEF0dGVtcHRlZAgBHGN1cmF0b3KRAQFET3B0aW9uPEFjY291bnRJZD4AAThwYXltZW50X3N0YXR1c0kOAVxQYXltZW50U3RhdGU8UGF5bWVudElkPgAEADxQYXlvdXRBdHRlbXB0ZWQMARxjdXJhdG9yBAEkQWNjb3VudElkAAEsYmVuZWZpY2lhcnntBAEsQmVuZWZpY2lhcnkAAThwYXltZW50X3N0YXR1c0kOAVxQYXltZW50U3RhdGU8UGF5bWVudElkPgAFAABJDghscGFsbGV0X211bHRpX2Fzc2V0X2JvdW50aWVzMFBheW1lbnRTdGF0ZQQISWQBKAEQHFBlbmRpbmcAAAAkQXR0ZW1wdGVkBAEIaWQoAQhJZAABABhGYWlsZWQAAgAkU3VjY2VlZGVkAAMAAE0OCGxwYWxsZXRfbXVsdGlfYXNzZXRfYm91bnRpZXMsQ2hpbGRCb3VudHkUJEFjY291bnRJZAEEHEJhbGFuY2UBWQEQSGFzaAFAJFBheW1lbnRJZAEoLEJlbmVmaWNpYXJ5Ae0EABABNHBhcmVudF9ib3VudHk4ASxCb3VudHlJbmRleAABFHZhbHVlWQEBHEJhbGFuY2UAASBtZXRhZGF0YUABEEhhc2gAARhzdGF0dXNFDgG8Qm91bnR5U3RhdHVzPEFjY291bnRJZCwgUGF5bWVudElkLCBCZW5lZmljaWFyeT4AAFEOAAAECDjkAFUOFDRmcmFtZV9zdXBwb3J0GHRyYWl0cxh0b2tlbnMgZnVuZ2libGVESG9sZENvbnNpZGVyYXRpb24UBEEABEYABFIABEQACEZwAAAEAFkBAShGOjpCYWxhbmNlAABZDgxscGFsbGV0X211bHRpX2Fzc2V0X2JvdW50aWVzGHBhbGxldBRFcnJvcggEVAAESQABSDBJbnZhbGlkSW5kZXgAAAR8Tm8gY2hpbGQtL2JvdW50eSBhdCB0aGF0IGluZGV4LjBSZWFzb25Ub29CaWcAAQSEVGhlIHJlYXNvbiBnaXZlbiBpcyBqdXN0IHRvbyBiaWcuMEludmFsaWRWYWx1ZQACBHBJbnZhbGlkIGNoaWxkLS9ib3VudHkgdmFsdWUuWEZhaWxlZFRvQ29udmVydEJhbGFuY2UAAwhdAVRoZSBiYWxhbmNlIG9mIHRoZSBhc3NldCBraW5kIGlzIG5vdCBjb252ZXJ0aWJsZSB0byB0aGUgYmFsYW5jZSBvZiB0aGUgbmF0aXZlIGFzc2V0IGZvcoRhc3NlcnRpbmcgdGhlIG9yaWdpbiBwZXJtaXNzaW9ucy5AVW5leHBlY3RlZFN0YXR1cwAEBJxUaGUgY2hpbGQtL2JvdW50eSBzdGF0dXMgaXMgdW5leHBlY3RlZC44UmVxdWlyZUN1cmF0b3IABQR4UmVxdWlyZSBjaGlsZC0vYm91bnR5IGN1cmF0b3IuWEluc3VmZmljaWVudFBlcm1pc3Npb24ABghFAVRoZSBzcGVuZCBvcmlnaW4gaXMgdmFsaWQgYnV0IHRoZSBhbW91bnQgaXQgaXMgYWxsb3dlZCB0byBzcGVuZCBpcyBsb3dlciB0aGFuIHRoZURyZXF1ZXN0ZWQgYW1vdW50LjBGdW5kaW5nRXJyb3IABwS8VGhlcmUgd2FzIGlzc3VlIHdpdGggZnVuZGluZyB0aGUgY2hpbGQtL2JvdW50eS4sUmVmdW5kRXJyb3IACATEVGhlcmUgd2FzIGlzc3VlIHdpdGggcmVmdW5kaW5nIHRoZSBjaGlsZC0vYm91bnR5LixQYXlvdXRFcnJvcgAJAExGdW5kaW5nSW5jb25jbHVzaXZlAAoEsENoaWxkLS9ib3VudHkgZnVuZGluZyBoYXMgbm90IGNvbmNsdWRlZCB5ZXQuSFJlZnVuZEluY29uY2x1c2l2ZQALBKxDaGlsZC0vYm91bnR5IHJlZnVuZCBoYXMgbm90IGNvbmNsdWRlZCB5ZXQuSFBheW91dEluY29uY2x1c2l2ZQAMBKxDaGlsZC0vYm91bnR5IHBheW91dCBoYXMgbm90IGNvbmNsdWRlZCB5ZXQuVEZhaWxlZFRvQ29udmVydFNvdXJjZQANCFUBVGhlIGNoaWxkLS9ib3VudHkgb3IgZnVuZGluZyBzb3VyY2UgYWNjb3VudCBjb3VsZCBub3QgYmUgZGVyaXZlZCBmcm9tIHRoZSBpbmRleGVzIGFuZCxhc3NldCBraW5kLlBIYXNBY3RpdmVDaGlsZEJvdW50eQAOBCEBVGhlIHBhcmVudCBib3VudHkgY2Fubm90IGJlIGNsb3NlZCBiZWNhdXNlIGl0IGhhcyBhY3RpdmUgY2hpbGQgYm91bnRpZXMuUFRvb01hbnlDaGlsZEJvdW50aWVzAA8EDQFOdW1iZXIgb2YgY2hpbGQgYm91bnRpZXMgZXhjZWVkcyBsaW1pdCBgTWF4QWN0aXZlQ2hpbGRCb3VudHlDb3VudGAuXEluc3VmZmljaWVudEJvdW50eVZhbHVlABAE+FRoZSBwYXJlbnQgYm91bnR5IHZhbHVlIGlzIG5vdCBlbm91Z2ggdG8gYWRkIG5ldyBjaGlsZC1ib3VudHkuQFByZWltYWdlTm90RXhpc3QAEQRwVGhlIHByZWltYWdlIGRvZXMgbm90IGV4aXN0LgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC5dDghccGFsbGV0X25vbWluYXRpb25fcG9vbHMoUG9vbE1lbWJlcgQEVAAAEAEccG9vbF9pZDgBGFBvb2xJZAABGHBvaW50c1kBATBCYWxhbmNlT2Y8VD4AAXBsYXN0X3JlY29yZGVkX3Jld2FyZF9jb3VudGVyKQUBQFQ6OlJld2FyZENvdW50ZXIAATh1bmJvbmRpbmdfZXJhc2EOAeBCb3VuZGVkQlRyZWVNYXA8RXJhSW5kZXgsIEJhbGFuY2VPZjxUPiwgVDo6TWF4VW5ib25kaW5nPgAAYQ4MTGJvdW5kZWRfY29sbGVjdGlvbnNEYm91bmRlZF9idHJlZV9tYXA8Qm91bmRlZEJUcmVlTWFwDARLATgEVgFZAQRTAAAEAGUOAThCVHJlZU1hcDxLLCBWPgAAZQ4EIEJUcmVlTWFwCARLATgEVgFZAQAEAP0NAAAAaQ4IXHBhbGxldF9ub21pbmF0aW9uX3Bvb2xzPEJvbmRlZFBvb2xJbm5lcgQEVAAAFAEoY29tbWlzc2lvbm0OATRDb21taXNzaW9uPFQ+AAE4bWVtYmVyX2NvdW50ZXI4AQx1MzIAARhwb2ludHNZAQEwQmFsYW5jZU9mPFQ+AAEUcm9sZXN1DgFcUG9vbFJvbGVzPFQ6OkFjY291bnRJZD4AARRzdGF0ZVEFASRQb29sU3RhdGUAAG0OCFxwYWxsZXRfbm9taW5hdGlvbl9wb29scyhDb21taXNzaW9uBARUAAAUARxjdXJyZW50aQUBfE9wdGlvbjwoUGVyYmlsbCwgVDo6QWNjb3VudElkKT4AAQxtYXhlCQE8T3B0aW9uPFBlcmJpbGw+AAEsY2hhbmdlX3JhdGVxDgG8T3B0aW9uPENvbW1pc3Npb25DaGFuZ2VSYXRlPEJsb2NrTnVtYmVyRm9yPFQ+Pj4AATR0aHJvdHRsZV9mcm9t5AFkT3B0aW9uPEJsb2NrTnVtYmVyRm9yPFQ+PgABQGNsYWltX3Blcm1pc3Npb251BQG8T3B0aW9uPENvbW1pc3Npb25DbGFpbVBlcm1pc3Npb248VDo6QWNjb3VudElkPj4AAHEOBBhPcHRpb24EBFQBcQUBCBBOb25lAAAAEFNvbWUEAHEFAAABAAB1DghccGFsbGV0X25vbWluYXRpb25fcG9vbHMkUG9vbFJvbGVzBCRBY2NvdW50SWQBBAAQASRkZXBvc2l0b3IEASRBY2NvdW50SWQAARByb290kQEBRE9wdGlvbjxBY2NvdW50SWQ+AAEkbm9taW5hdG9ykQEBRE9wdGlvbjxBY2NvdW50SWQ+AAEcYm91bmNlcpEBAURPcHRpb248QWNjb3VudElkPgAAeQ4IXHBhbGxldF9ub21pbmF0aW9uX3Bvb2xzKFJld2FyZFBvb2wEBFQAABQBcGxhc3RfcmVjb3JkZWRfcmV3YXJkX2NvdW50ZXIpBQFAVDo6UmV3YXJkQ291bnRlcgABbGxhc3RfcmVjb3JkZWRfdG90YWxfcGF5b3V0c1kBATBCYWxhbmNlT2Y8VD4AAVR0b3RhbF9yZXdhcmRzX2NsYWltZWRZAQEwQmFsYW5jZU9mPFQ+AAFgdG90YWxfY29tbWlzc2lvbl9wZW5kaW5nWQEBMEJhbGFuY2VPZjxUPgABYHRvdGFsX2NvbW1pc3Npb25fY2xhaW1lZFkBATBCYWxhbmNlT2Y8VD4AAH0OCFxwYWxsZXRfbm9taW5hdGlvbl9wb29scyBTdWJQb29scwQEVAAACAEYbm9fZXJhgQ4BNFVuYm9uZFBvb2w8VD4AASB3aXRoX2VyYYUOAQEBQm91bmRlZEJUcmVlTWFwPEVyYUluZGV4LCBVbmJvbmRQb29sPFQ+LCBUb3RhbFVuYm9uZGluZ1Bvb2xzPFQ+PgAAgQ4IXHBhbGxldF9ub21pbmF0aW9uX3Bvb2xzKFVuYm9uZFBvb2wEBFQAAAgBGHBvaW50c1kBATBCYWxhbmNlT2Y8VD4AARxiYWxhbmNlWQEBMEJhbGFuY2VPZjxUPgAAhQ4MTGJvdW5kZWRfY29sbGVjdGlvbnNEYm91bmRlZF9idHJlZV9tYXA8Qm91bmRlZEJUcmVlTWFwDARLATgEVgGBDgRTAAAEAIkOAThCVHJlZU1hcDxLLCBWPgAAiQ4EIEJUcmVlTWFwCARLATgEVgGBDgAEAI0OAAAAjQ4AAAKRDgCRDgAABAg4gQ4AlQ4MXHBhbGxldF9ub21pbmF0aW9uX3Bvb2xzGHBhbGxldBRFcnJvcgQEVAABmDBQb29sTm90Rm91bmQAAASIQSAoYm9uZGVkKSBwb29sIGlkIGRvZXMgbm90IGV4aXN0LkhQb29sTWVtYmVyTm90Rm91bmQAAQRsQW4gYWNjb3VudCBpcyBub3QgYSBtZW1iZXIuSFJld2FyZFBvb2xOb3RGb3VuZAACBCEBQSByZXdhcmQgcG9vbCBkb2VzIG5vdCBleGlzdC4gSW4gYWxsIGNhc2VzIHRoaXMgaXMgYSBzeXN0ZW0gbG9naWMgZXJyb3IuQFN1YlBvb2xzTm90Rm91bmQAAwRoQSBzdWIgcG9vbCBkb2VzIG5vdCBleGlzdC5kQWNjb3VudEJlbG9uZ3NUb090aGVyUG9vbAAECE0BQW4gYWNjb3VudCBpcyBhbHJlYWR5IGRlbGVnYXRpbmcgaW4gYW5vdGhlciBwb29sLiBBbiBhY2NvdW50IG1heSBvbmx5IGJlbG9uZyB0byBvbmU8cG9vbCBhdCBhIHRpbWUuOEZ1bGx5VW5ib25kaW5nAAUIPQFUaGUgbWVtYmVyIGlzIGZ1bGx5IHVuYm9uZGVkIChhbmQgdGh1cyBjYW5ub3QgYWNjZXNzIHRoZSBib25kZWQgYW5kIHJld2FyZCBwb29sqGFueW1vcmUgdG8sIGZvciBleGFtcGxlLCBjb2xsZWN0IHJld2FyZHMpLkRNYXhVbmJvbmRpbmdMaW1pdAAGBAkBVGhlIG1lbWJlciBjYW5ub3QgdW5ib25kIGZ1cnRoZXIgY2h1bmtzIGR1ZSB0byByZWFjaGluZyB0aGUgbGltaXQuRENhbm5vdFdpdGhkcmF3QW55AAcETQFOb25lIG9mIHRoZSBmdW5kcyBjYW4gYmUgd2l0aGRyYXduIHlldCBiZWNhdXNlIHRoZSBib25kaW5nIGR1cmF0aW9uIGhhcyBub3QgcGFzc2VkLkRNaW5pbXVtQm9uZE5vdE1ldAAIFCkBVGhlIGFtb3VudCBkb2VzIG5vdCBtZWV0IHRoZSBtaW5pbXVtIGJvbmQgdG8gZWl0aGVyIGpvaW4gb3IgY3JlYXRlIGEgcG9vbC4AVQFUaGUgZGVwb3NpdG9yIGNhbiBuZXZlciB1bmJvbmQgdG8gYSB2YWx1ZSBsZXNzIHRoYW4gYFBhbGxldDo6ZGVwb3NpdG9yX21pbl9ib25kYC4gVGhlXQFjYWxsZXIgZG9lcyBub3QgaGF2ZSBub21pbmF0aW5nIHBlcm1pc3Npb25zIGZvciB0aGUgcG9vbC4gTWVtYmVycyBjYW4gbmV2ZXIgdW5ib25kIHRvIGFodmFsdWUgYmVsb3cgYE1pbkpvaW5Cb25kYC4wT3ZlcmZsb3dSaXNrAAkEIQFUaGUgdHJhbnNhY3Rpb24gY291bGQgbm90IGJlIGV4ZWN1dGVkIGR1ZSB0byBvdmVyZmxvdyByaXNrIGZvciB0aGUgcG9vbC40Tm90RGVzdHJveWluZwAKCF0BQSBwb29sIG11c3QgYmUgaW4gW2BQb29sU3RhdGU6OkRlc3Ryb3lpbmdgXSBpbiBvcmRlciBmb3IgdGhlIGRlcG9zaXRvciB0byB1bmJvbmQgb3IgZm9yuG90aGVyIG1lbWJlcnMgdG8gYmUgcGVybWlzc2lvbmxlc3NseSB1bmJvbmRlZC4wTm90Tm9taW5hdG9yAAsE9FRoZSBjYWxsZXIgZG9lcyBub3QgaGF2ZSBub21pbmF0aW5nIHBlcm1pc3Npb25zIGZvciB0aGUgcG9vbC5UTm90S2lja2VyT3JEZXN0cm95aW5nAAwEPQFFaXRoZXIgYSkgdGhlIGNhbGxlciBjYW5ub3QgbWFrZSBhIHZhbGlkIGtpY2sgb3IgYikgdGhlIHBvb2wgaXMgbm90IGRlc3Ryb3lpbmcuHE5vdE9wZW4ADQRwVGhlIHBvb2wgaXMgbm90IG9wZW4gdG8gam9pbiBNYXhQb29scwAOBIRUaGUgc3lzdGVtIGlzIG1heGVkIG91dCBvbiBwb29scy44TWF4UG9vbE1lbWJlcnMADwScVG9vIG1hbnkgbWVtYmVycyBpbiB0aGUgcG9vbCBvciBzeXN0ZW0uRENhbk5vdENoYW5nZVN0YXRlABAEiFRoZSBwb29scyBzdGF0ZSBjYW5ub3QgYmUgY2hhbmdlZC5URG9lc05vdEhhdmVQZXJtaXNzaW9uABEEuFRoZSBjYWxsZXIgZG9lcyBub3QgaGF2ZSBhZGVxdWF0ZSBwZXJtaXNzaW9ucy5UTWV0YWRhdGFFeGNlZWRzTWF4TGVuABIErE1ldGFkYXRhIGV4Y2VlZHMgW2BDb25maWc6Ok1heE1ldGFkYXRhTGVuYF0kRGVmZW5zaXZlBACZDgE4RGVmZW5zaXZlRXJyb3IAEwgxAVNvbWUgZXJyb3Igb2NjdXJyZWQgdGhhdCBzaG91bGQgbmV2ZXIgaGFwcGVuLiBUaGlzIHNob3VsZCBiZSByZXBvcnRlZCB0byB0aGUwbWFpbnRhaW5lcnMunFBhcnRpYWxVbmJvbmROb3RBbGxvd2VkUGVybWlzc2lvbmxlc3NseQAUBLxQYXJ0aWFsIHVuYm9uZGluZyBub3cgYWxsb3dlZCBwZXJtaXNzaW9ubGVzc2x5LlxNYXhDb21taXNzaW9uUmVzdHJpY3RlZAAVBB0BVGhlIHBvb2wncyBtYXggY29tbWlzc2lvbiBjYW5ub3QgYmUgc2V0IGhpZ2hlciB0aGFuIHRoZSBleGlzdGluZyB2YWx1ZS5gQ29tbWlzc2lvbkV4Y2VlZHNNYXhpbXVtABYE7FRoZSBzdXBwbGllZCBjb21taXNzaW9uIGV4Y2VlZHMgdGhlIG1heCBhbGxvd2VkIGNvbW1pc3Npb24ueENvbW1pc3Npb25FeGNlZWRzR2xvYmFsTWF4aW11bQAXBOhUaGUgc3VwcGxpZWQgY29tbWlzc2lvbiBleGNlZWRzIGdsb2JhbCBtYXhpbXVtIGNvbW1pc3Npb24uZENvbW1pc3Npb25DaGFuZ2VUaHJvdHRsZWQAGAQJAU5vdCBlbm91Z2ggYmxvY2tzIGhhdmUgc3VycGFzc2VkIHNpbmNlIHRoZSBsYXN0IGNvbW1pc3Npb24gdXBkYXRlLnhDb21taXNzaW9uQ2hhbmdlUmF0ZU5vdEFsbG93ZWQAGQQBAVRoZSBzdWJtaXR0ZWQgY2hhbmdlcyB0byBjb21taXNzaW9uIGNoYW5nZSByYXRlIGFyZSBub3QgYWxsb3dlZC5MTm9QZW5kaW5nQ29tbWlzc2lvbgAaBKBUaGVyZSBpcyBubyBwZW5kaW5nIGNvbW1pc3Npb24gdG8gY2xhaW0uWE5vQ29tbWlzc2lvbkN1cnJlbnRTZXQAGwSMTm8gY29tbWlzc2lvbiBjdXJyZW50IGhhcyBiZWVuIHNldC4sUG9vbElkSW5Vc2UAHARkUG9vbCBpZCBjdXJyZW50bHkgaW4gdXNlLjRJbnZhbGlkUG9vbElkAB0EnFBvb2wgaWQgcHJvdmlkZWQgaXMgbm90IGNvcnJlY3QvdXNhYmxlLkxCb25kRXh0cmFSZXN0cmljdGVkAB4E/EJvbmRpbmcgZXh0cmEgaXMgcmVzdHJpY3RlZCB0byB0aGUgZXhhY3QgcGVuZGluZyByZXdhcmQgYW1vdW50LjxOb3RoaW5nVG9BZGp1c3QAHwSwTm8gaW1iYWxhbmNlIGluIHRoZSBFRCBkZXBvc2l0IGZvciB0aGUgcG9vbC44Tm90aGluZ1RvU2xhc2gAIATMTm8gc2xhc2ggcGVuZGluZyB0aGF0IGNhbiBiZSBhcHBsaWVkIHRvIHRoZSBtZW1iZXIuLFNsYXNoVG9vTG93ACEEqFRoZSBzbGFzaCBhbW91bnQgaXMgdG9vIGxvdyB0byBiZSBhcHBsaWVkLjxBbHJlYWR5TWlncmF0ZWQAIgQVAVRoZSBwb29sIG9yIG1lbWJlciBkZWxlZ2F0aW9uIGhhcyBhbHJlYWR5IG1pZ3JhdGVkIHRvIGRlbGVnYXRlIHN0YWtlLixOb3RNaWdyYXRlZAAjBBUBVGhlIHBvb2wgb3IgbWVtYmVyIGRlbGVnYXRpb24gaGFzIG5vdCBtaWdyYXRlZCB5ZXQgdG8gZGVsZWdhdGUgc3Rha2UuME5vdFN1cHBvcnRlZAAkBPBUaGlzIGNhbGwgaXMgbm90IGFsbG93ZWQgaW4gdGhlIGN1cnJlbnQgc3RhdGUgb2YgdGhlIHBhbGxldC4oUmVzdHJpY3RlZAAlCFEBQWNjb3VudCBpcyByZXN0cmljdGVkIGZyb20gcGFydGljaXBhdGlvbiBpbiBwb29scy4gVGhpcyBtYXkgaGFwcGVuIGlmIHRoZSBhY2NvdW50IGlzfHN0YWtpbmcgaW4gYW5vdGhlciB3YXkgYWxyZWFkeS4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQumQ4MXHBhbGxldF9ub21pbmF0aW9uX3Bvb2xzGHBhbGxldDhEZWZlbnNpdmVFcnJvcgABHGhOb3RFbm91Z2hTcGFjZUluVW5ib25kUG9vbAAAADBQb29sTm90Rm91bmQAAQBIUmV3YXJkUG9vbE5vdEZvdW5kAAIAQFN1YlBvb2xzTm90Rm91bmQAAwBwQm9uZGVkU3Rhc2hLaWxsZWRQcmVtYXR1cmVseQAEAFREZWxlZ2F0aW9uVW5zdXBwb3J0ZWQABQA8U2xhc2hOb3RBcHBsaWVkAAYAAJ0ODEBwYWxsZXRfYmFnc19saXN0EGxpc3QQTm9kZQgEVAAESQAAFAEIaWQEATBUOjpBY2NvdW50SWQAARBwcmV2kQEBUE9wdGlvbjxUOjpBY2NvdW50SWQ+AAEQbmV4dJEBAVBPcHRpb248VDo6QWNjb3VudElkPgABJGJhZ191cHBlcigBIFQ6OlNjb3JlAAEUc2NvcmUoASBUOjpTY29yZQAAoQ4MQHBhbGxldF9iYWdzX2xpc3QQbGlzdAxCYWcIBFQABEkAAAgBEGhlYWSRAQFQT3B0aW9uPFQ6OkFjY291bnRJZD4AARB0YWlskQEBUE9wdGlvbjxUOjpBY2NvdW50SWQ+AAClDgAAAigAqQ4MQHBhbGxldF9iYWdzX2xpc3QYcGFsbGV0FEVycm9yCARUAARJAAEIEExpc3QEAK0OASRMaXN0RXJyb3IAAAS0QSBlcnJvciBpbiB0aGUgbGlzdCBpbnRlcmZhY2UgaW1wbGVtZW50YXRpb24uGExvY2tlZAABBNhDb3VsZCBub3QgdXBkYXRlIGEgbm9kZSwgYmVjYXVzZSB0aGUgcGFsbGV0IGlzIGxvY2tlZC4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQurQ4MQHBhbGxldF9iYWdzX2xpc3QQbGlzdCRMaXN0RXJyb3IAARQkRHVwbGljYXRlAAAAKE5vdEhlYXZpZXIAAQAwTm90SW5TYW1lQmFnAAIAME5vZGVOb3RGb3VuZAADABhMb2NrZWQABAAAsQ4AAAQIAQEBAQC1DgxgcGFsbGV0X2RlbGVnYXRlZF9zdGFraW5nFHR5cGVzKERlbGVnYXRpb24EBFQAAAgBFGFnZW50BAEwVDo6QWNjb3VudElkAAEYYW1vdW50WQEBMEJhbGFuY2VPZjxUPgAAuQ4MYHBhbGxldF9kZWxlZ2F0ZWRfc3Rha2luZxR0eXBlcyxBZ2VudExlZGdlcgQEVAAAEAEUcGF5ZWUEATBUOjpBY2NvdW50SWQAATx0b3RhbF9kZWxlZ2F0ZWRVAQEwQmFsYW5jZU9mPFQ+AAFUdW5jbGFpbWVkX3dpdGhkcmF3YWxzVQEBMEJhbGFuY2VPZjxUPgABNHBlbmRpbmdfc2xhc2hVAQEwQmFsYW5jZU9mPFQ+AAC9DgxgcGFsbGV0X2RlbGVnYXRlZF9zdGFraW5nGHBhbGxldBRFcnJvcgQEVAABMChOb3RBbGxvd2VkAAAEqFRoZSBhY2NvdW50IGNhbm5vdCBwZXJmb3JtIHRoaXMgb3BlcmF0aW9uLjhBbHJlYWR5U3Rha2luZwABBLhBbiBleGlzdGluZyBzdGFrZXIgY2Fubm90IHBlcmZvcm0gdGhpcyBhY3Rpb24uYEludmFsaWRSZXdhcmREZXN0aW5hdGlvbgACBNRSZXdhcmQgRGVzdGluYXRpb24gY2Fubm90IGJlIHNhbWUgYXMgYEFnZW50YCBhY2NvdW50LkRJbnZhbGlkRGVsZWdhdGlvbgADFIhEZWxlZ2F0aW9uIGNvbmRpdGlvbnMgYXJlIG5vdCBtZXQuAExQb3NzaWJsZSBpc3N1ZXMgYXJlbDEpIENhbm5vdCBkZWxlZ2F0ZSB0byBzZWxmLKQyKSBDYW5ub3QgZGVsZWdhdGUgdG8gbXVsdGlwbGUgZGVsZWdhdGVzLjhOb3RFbm91Z2hGdW5kcwAEBAEBVGhlIGFjY291bnQgZG9lcyBub3QgaGF2ZSBlbm91Z2ggZnVuZHMgdG8gcGVyZm9ybSB0aGUgb3BlcmF0aW9uLiBOb3RBZ2VudAAFBIBOb3QgYW4gZXhpc3RpbmcgYEFnZW50YCBhY2NvdW50LjBOb3REZWxlZ2F0b3IABgRgTm90IGEgRGVsZWdhdG9yIGFjY291bnQuIEJhZFN0YXRlAAcEiFNvbWUgY29ycnVwdGlvbiBpbiBpbnRlcm5hbCBzdGF0ZS44VW5hcHBsaWVkU2xhc2gACATcVW5hcHBsaWVkIHBlbmRpbmcgc2xhc2ggcmVzdHJpY3RzIG9wZXJhdGlvbiBvbiBgQWdlbnRgLjhOb3RoaW5nVG9TbGFzaAAJBKxgQWdlbnRgIGhhcyBubyBwZW5kaW5nIHNsYXNoIHRvIGJlIGFwcGxpZWQuOFdpdGhkcmF3RmFpbGVkAAoEsEZhaWxlZCB0byB3aXRoZHJhdyBhbW91bnQgZnJvbSBDb3JlIFN0YWtpbmcuME5vdFN1cHBvcnRlZAALBJxPcGVyYXRpb24gbm90IHN1cHBvcnRlZCBieSB0aGlzIHBhbGxldC4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuwQ4AAAQIxQ44AMUOCHhwYWxsZXRfc3Rha2luZ19hc3luY19yY19jbGllbnRIVmFsaWRhdG9yU2V0UmVwb3J0BCRBY2NvdW50SWQBBAAQAURuZXdfdmFsaWRhdG9yX3NldGEBAThWZWM8QWNjb3VudElkPgABCGlkOAEMdTMyAAEscHJ1bmVfdXBfdG/kAVBPcHRpb248U2Vzc2lvbkluZGV4PgABIGxlZnRvdmVyXQEBEGJvb2wAAMkODHhwYWxsZXRfc3Rha2luZ19hc3luY19yY19jbGllbnQYcGFsbGV0FEVycm9yBARUAAEUNFhjbVNlbmRGYWlsZWQAAAS4RmFpbGVkIHRvIHNlbmQgWENNIG1lc3NhZ2UgdG8gdGhlIFJlbGF5IENoYWluLjBOb3RWYWxpZGF0b3IAARTEVGhlIG9yaWdpbiBhY2NvdW50IGlzIG5vdCBhIHJlZ2lzdGVyZWQgdmFsaWRhdG9yLgBZAU9ubHkgYWNjb3VudHMgdGhhdCBoYXZlIGNhbGxlZCBgdmFsaWRhdGUoKWAgY2FuIHNldCBvciBwdXJnZSBzZXNzaW9uIGtleXMuIFdoZW4gY2FsbGVkSQF2aWEgYSBzdGFraW5nIHByb3h5LCB0aGUgb3JpZ2luIGlzIHRoZSBkZWxlZ2F0aW5nIGFjY291bnQgKHN0YXNoKSwgd2hpY2ggbXVzdCBiZSBhVHJlZ2lzdGVyZWQgdmFsaWRhdG9yLixJbnZhbGlkS2V5cwACBEUBVGhlIHNlc3Npb24ga2V5cyBjb3VsZCBub3QgYmUgZGVjb2RlZCBhcyB0aGUgZXhwZWN0ZWQgUmVsYXlDaGFpblNlc3Npb25LZXlzIHR5cGUuMEludmFsaWRQcm9vZgADBLRJbnZhbGlkIG93bmVyc2hpcCBwcm9vZiBmb3IgdGhlIHNlc3Npb24ga2V5cy48RmVlc0V4Y2VlZGVkTWF4AAQEtERlbGl2ZXJ5IGZlZXMgZXhjZWVkZWQgdGhlIHNwZWNpZmllZCBtYXhpbXVtLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC7NDgxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAdEOBFMAAAQA2Q4BGFZlYzxUPgAA0Q4AAAQMBCjVDgDVDgxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQQEUwAABABhAQEYVmVjPFQ+AADZDgAAAtEOAN0ODExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBBARTAAAEAGEBARhWZWM8VD4AAOEODJBwYWxsZXRfZWxlY3Rpb25fcHJvdmlkZXJfbXVsdGlfYmxvY2sYcGFsbGV0FEVycm9yBARUAAEMIEZhbGxiYWNrAAAEhFRyaWdnZXJpbmcgdGhlIGBGYWxsYmFja2AgZmFpbGVkLjxVbmV4cGVjdGVkUGhhc2UAAQRAVW5leHBlY3RlZCBwaGFzZSBTbmFwc2hvdAACBGRTbmFwc2hvdCB3YXMgdW5hdmFpbGFibGUuBA0BRXJyb3Igb2YgdGhlIHBhbGxldCB0aGF0IGNhbiBiZSByZXR1cm5lZCBpbiByZXNwb25zZSB0byBkaXNwYXRjaGVzLuUOEJBwYWxsZXRfZWxlY3Rpb25fcHJvdmlkZXJfbXVsdGlfYmxvY2sgdmVyaWZpZXIUaW1wbHM0VmFsaWRTb2x1dGlvbgABCARYAAAABFkAAQAA6Q4MTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAHtDgRTAAAEAPUOARhWZWM8VD4AAO0OAAAECATxDgDxDhCQcGFsbGV0X2VsZWN0aW9uX3Byb3ZpZGVyX211bHRpX2Jsb2NrIHZlcmlmaWVyFGltcGxzPFBhcnRpYWxCYWNraW5ncwAACAEUdG90YWxZAQE8RXh0ZW5kZWRCYWxhbmNlAAEcYmFja2VyczgBDHUzMgAA9Q4AAALtDgD5DhCQcGFsbGV0X2VsZWN0aW9uX3Byb3ZpZGVyX211bHRpX2Jsb2NrIHZlcmlmaWVyFGltcGxzGFN0YXR1cwABCBxPbmdvaW5nBAA4ASRQYWdlSW5kZXgAAAAcTm90aGluZwABAAD9DgxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQEPBFMAAAQABQ8BGFZlYzxUPgAAAQ8AAAQIBNUFAAUPAAACAQ8ACQ8AAAQMOAQ4AA0PDJBwYWxsZXRfZWxlY3Rpb25fcHJvdmlkZXJfbXVsdGlfYmxvY2sYc2lnbmVkSFN1Ym1pc3Npb25NZXRhZGF0YQQEVAAAFAEcZGVwb3NpdFkBATBCYWxhbmNlT2Y8VD4AAQxmZWVZAQEwQmFsYW5jZU9mPFQ+AAEYcmV3YXJkWQEBMEJhbGFuY2VPZjxUPgABNGNsYWltZWRfc2NvcmXVBQE0RWxlY3Rpb25TY29yZQABFHBhZ2VzEQ8BaEJvdW5kZWRWZWM8Ym9vbCwgVDo6UGFnZXM+AAARDwxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAV0BBFMAAAQAFQ8BGFZlYzxUPgAAFQ8AAAJdAQAZDxCQcGFsbGV0X2VsZWN0aW9uX3Byb3ZpZGVyX211bHRpX2Jsb2NrGHNpZ25lZBhwYWxsZXQURXJyb3IEBFQAASQ4UGhhc2VOb3RTaWduZWQAAARgVGhlIHBoYXNlIGlzIG5vdCBzaWduZWQuJER1cGxpY2F0ZQABBHhUaGUgc3VibWlzc2lvbiBpcyBhIGR1cGxpY2F0ZS4kUXVldWVGdWxsAAIESFRoZSBxdWV1ZSBpcyBmdWxsLjBCYWRQYWdlSW5kZXgAAwSAVGhlIHBhZ2UgaW5kZXggaXMgb3V0IG9mIGJvdW5kcy40Tm90UmVnaXN0ZXJlZAAEBHhUaGUgYWNjb3VudCBpcyBub3QgcmVnaXN0ZXJlZC4wTm9TdWJtaXNzaW9uAAUEUE5vIHN1Ym1pc3Npb24gZm91bmQuMFJvdW5kTm90T3ZlcgAGBFhSb3VuZCBpcyBub3QgeWV0IG92ZXIuOEJhZFdpdG5lc3NEYXRhAAcEaEJhZCB3aXRuZXNzIGRhdGEgcHJvdmlkZWQuUFRvb01hbnlJbnZ1bG5lcmFibGVzAAgEsFRvbyBtYW55IGludnVsbmVyYWJsZSBhY2NvdW50cyBhcmUgcHJvdmlkZWQsBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0Lh0PDFBwYWxsZXRfc3Rha2luZ19hc3luYxhsZWRnZXI0U3Rha2luZ0xlZGdlcgQEVAAAEAEUc3Rhc2gEATBUOjpBY2NvdW50SWQAARR0b3RhbFUBATBCYWxhbmNlT2Y8VD4AARhhY3RpdmVVAQEwQmFsYW5jZU9mPFQ+AAEkdW5sb2NraW5n+QYB8EJvdW5kZWRWZWM8VW5sb2NrQ2h1bms8QmFsYW5jZU9mPFQ+PiwgVDo6TWF4VW5sb2NraW5nQ2h1bmtzPgAAIQ8IUHBhbGxldF9zdGFraW5nX2FzeW5jLE5vbWluYXRpb25zBARUAAAMARx0YXJnZXRz1Q4BtEJvdW5kZWRWZWM8VDo6QWNjb3VudElkLCBNYXhOb21pbmF0aW9uc09mPFQ+PgABMHN1Ym1pdHRlZF9pbjgBIEVyYUluZGV4AAEoc3VwcHJlc3NlZF0BARBib29sAAAlDwhQcGFsbGV0X3N0YWtpbmdfYXN5bmM0QWN0aXZlRXJhSW5mbwAACAEUaW5kZXg4ASBFcmFJbmRleAABFHN0YXJ0AQEBLE9wdGlvbjx1NjQ+AAApDwxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAdAEUwAABADJCQEYVmVjPFQ+AAAtDwgoc3Bfc3Rha2luZ1RQYWdlZEV4cG9zdXJlTWV0YWRhdGEEHEJhbGFuY2UBWQEAEAEUdG90YWxVAQEcQmFsYW5jZQABDG93blUBARxCYWxhbmNlAAE8bm9taW5hdG9yX2NvdW50OAEMdTMyAAEocGFnZV9jb3VudDgBEFBhZ2UAADEPEFBwYWxsZXRfc3Rha2luZ19hc3luYxhwYWxsZXQYcGFsbGV0TEJvdW5kZWRFeHBvc3VyZVBhZ2UEBFQAAAQANQ8BoEV4cG9zdXJlUGFnZTxUOjpBY2NvdW50SWQsIEJhbGFuY2VPZjxUPj4AADUPCChzcF9zdGFraW5nMEV4cG9zdXJlUGFnZQgkQWNjb3VudElkAQQcQmFsYW5jZQFZAQAIAShwYWdlX3RvdGFsVQEBHEJhbGFuY2UAARhvdGhlcnM5DwGsVmVjPEluZGl2aWR1YWxFeHBvc3VyZTxBY2NvdW50SWQsIEJhbGFuY2U+PgAAOQ8AAAI9DwA9Dwgoc3Bfc3Rha2luZ0hJbmRpdmlkdWFsRXhwb3N1cmUIJEFjY291bnRJZAEEHEJhbGFuY2UBWQEACAEMd2hvBAEkQWNjb3VudElkAAEUdmFsdWVVAQEcQmFsYW5jZQAAQQ8MTGJvdW5kZWRfY29sbGVjdGlvbnNAd2Vha19ib3VuZGVkX3ZlYzhXZWFrQm91bmRlZFZlYwgEVAE4BFMAAAQAXQQBGFZlYzxUPgAARQ8IUHBhbGxldF9zdGFraW5nX2FzeW5jPEVyYVJld2FyZFBvaW50cwQEVAAACAEUdG90YWw4ASxSZXdhcmRQb2ludAABKGluZGl2aWR1YWxJDwH4Qm91bmRlZEJUcmVlTWFwPFQ6OkFjY291bnRJZCwgUmV3YXJkUG9pbnQsIFQ6Ok1heFZhbGlkYXRvclNldD4AAEkPDExib3VuZGVkX2NvbGxlY3Rpb25zRGJvdW5kZWRfYnRyZWVfbWFwPEJvdW5kZWRCVHJlZU1hcAwESwEEBFYBOARTAAAEAE0PAThCVHJlZU1hcDxLLCBWPgAATQ8EIEJUcmVlTWFwCARLAQQEVgE4AAQAiQUAAABRDwxQcGFsbGV0X3N0YWtpbmdfYXN5bmMgc2xhc2hpbmc0T2ZmZW5jZVJlY29yZAQkQWNjb3VudElkAQQAFAEgcmVwb3J0ZXKRAQFET3B0aW9uPEFjY291bnRJZD4AATByZXBvcnRlZF9lcmE4ASBFcmFJbmRleAABNGV4cG9zdXJlX3BhZ2U4AQx1MzIAAThzbGFzaF9mcmFjdGlvbqEBARxQZXJiaWxsAAFQcHJpb3Jfc2xhc2hfZnJhY3Rpb26hAQEcUGVyYmlsbAAAVQ8MTGJvdW5kZWRfY29sbGVjdGlvbnNAd2Vha19ib3VuZGVkX3ZlYzhXZWFrQm91bmRlZFZlYwgEVAE4BFMAAAQAXQQBGFZlYzxUPgAAWQ8AAAQMOARRDwBdDwAABAg4BQcAYQ8IUHBhbGxldF9zdGFraW5nX2FzeW5jOFVuYXBwbGllZFNsYXNoBARUAAAUASR2YWxpZGF0b3IEATBUOjpBY2NvdW50SWQAAQxvd25ZAQEwQmFsYW5jZU9mPFQ+AAEYb3RoZXJzZQ8BEQFXZWFrQm91bmRlZFZlYzwoVDo6QWNjb3VudElkLCBCYWxhbmNlT2Y8VD4pLCBUOjpNYXhFeHBvc3VyZVBhZ2VTaXplPgABIHJlcG9ydGVykQEBUE9wdGlvbjxUOjpBY2NvdW50SWQ+AAEYcGF5b3V0WQEBMEJhbGFuY2VPZjxUPgAAZQ8MTGJvdW5kZWRfY29sbGVjdGlvbnNAd2Vha19ib3VuZGVkX3ZlYzhXZWFrQm91bmRlZFZlYwgEVAHJBQRTAAAEAM0FARhWZWM8VD4AAGkPDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQB2QYEUwAABADVBgEYVmVjPFQ+AABtDwAABAihAVkBAHEPCFBwYWxsZXRfc3Rha2luZ19hc3luYzhTbmFwc2hvdFN0YXR1cwQkQWNjb3VudElkAQQBDBxPbmdvaW5nBAAEASRBY2NvdW50SWQAAAAgQ29uc3VtZWQAAQAcV2FpdGluZwACAAB1DwxMYm91bmRlZF9jb2xsZWN0aW9uc0Rib3VuZGVkX2J0cmVlX3NldDxCb3VuZGVkQlRyZWVTZXQIBFQBBARTAAAEADkNASxCVHJlZVNldDxUPgAAeQ8QUHBhbGxldF9zdGFraW5nX2FzeW5jGHBhbGxldBhwYWxsZXQsUHJ1bmluZ1N0ZXAAASRARXJhc1N0YWtlcnNQYWdlZAAAAExFcmFzU3Rha2Vyc092ZXJ2aWV3AAEASEVyYXNWYWxpZGF0b3JQcmVmcwACADhDbGFpbWVkUmV3YXJkcwADAExFcmFzVmFsaWRhdG9yUmV3YXJkAAQAQEVyYXNSZXdhcmRQb2ludHMABQBMU2luZ2xlRW50cnlDbGVhbnVwcwAGAExWYWxpZGF0b3JTbGFzaEluRXJhAAcAcEVyYXNWYWxpZGF0b3JJbmNlbnRpdmVXZWlnaHQACAAAfQ8QUHBhbGxldF9zdGFraW5nX2FzeW5jGHBhbGxldBhwYWxsZXQURXJyb3IEBFQAAZg0Tm90Q29udHJvbGxlcgAABGROb3QgYSBjb250cm9sbGVyIGFjY291bnQuIE5vdFN0YXNoAAEEUE5vdCBhIHN0YXNoIGFjY291bnQuNEFscmVhZHlCb25kZWQAAgRgU3Rhc2ggaXMgYWxyZWFkeSBib25kZWQuNEFscmVhZHlQYWlyZWQAAwR0Q29udHJvbGxlciBpcyBhbHJlYWR5IHBhaXJlZC4wRW1wdHlUYXJnZXRzAAQEYFRhcmdldHMgY2Fubm90IGJlIGVtcHR5LjhEdXBsaWNhdGVJbmRleAAFBEBEdXBsaWNhdGUgaW5kZXguSEludmFsaWRTbGFzaFJlY29yZAAGBFxTbGFzaCByZWNvcmQgbm90IGZvdW5kLkBJbnN1ZmZpY2llbnRCb25kAAcMNQFDYW5ub3QgYm9uZCwgbm9taW5hdGUgb3IgdmFsaWRhdGUgd2l0aCB2YWx1ZSBsZXNzIHRoYW4gdGhlIG1pbmltdW0gZGVmaW5lZCBieT0BZ292ZXJuYW5jZSAoc2VlIGBNaW5WYWxpZGF0b3JCb25kYCBhbmQgYE1pbk5vbWluYXRvckJvbmRgKS4gSWYgdW5ib25kaW5nIGlzIHRoZRUBaW50ZW50aW9uLCBgY2hpbGxgIGZpcnN0IHRvIHJlbW92ZSBvbmUncyByb2xlIGFzIHZhbGlkYXRvci9ub21pbmF0b3IuME5vTW9yZUNodW5rcwAIBJBDYW4gbm90IHNjaGVkdWxlIG1vcmUgdW5sb2NrIGNodW5rcy40Tm9VbmxvY2tDaHVuawAJBKBDYW4gbm90IHJlYm9uZCB3aXRob3V0IHVubG9ja2luZyBjaHVua3MuMEZ1bmRlZFRhcmdldAAKBMhBdHRlbXB0aW5nIHRvIHRhcmdldCBhIHN0YXNoIHRoYXQgc3RpbGwgaGFzIGZ1bmRzLkhJbnZhbGlkRXJhVG9SZXdhcmQACwRYSW52YWxpZCBlcmEgdG8gcmV3YXJkLmhJbnZhbGlkTnVtYmVyT2ZOb21pbmF0aW9ucwAMBHhJbnZhbGlkIG51bWJlciBvZiBub21pbmF0aW9ucy44QWxyZWFkeUNsYWltZWQADQQJAVJld2FyZHMgZm9yIHRoaXMgZXJhIGhhdmUgYWxyZWFkeSBiZWVuIGNsYWltZWQgZm9yIHRoaXMgdmFsaWRhdG9yLixJbnZhbGlkUGFnZQAOBIRObyBub21pbmF0b3JzIGV4aXN0IG9uIHRoaXMgcGFnZS5USW5jb3JyZWN0SGlzdG9yeURlcHRoAA8EwEluY29ycmVjdCBwcmV2aW91cyBoaXN0b3J5IGRlcHRoIGlucHV0IHByb3ZpZGVkLiBCYWRTdGF0ZQAQBDkBSW50ZXJuYWwgc3RhdGUgaGFzIGJlY29tZSBzb21laG93IGNvcnJ1cHRlZCBhbmQgdGhlIG9wZXJhdGlvbiBjYW5ub3QgY29udGludWUuOFRvb01hbnlUYXJnZXRzABEElFRvbyBtYW55IG5vbWluYXRpb24gdGFyZ2V0cyBzdXBwbGllZC4kQmFkVGFyZ2V0ABIEPQFBIG5vbWluYXRpb24gdGFyZ2V0IHdhcyBzdXBwbGllZCB0aGF0IHdhcyBibG9ja2VkIG9yIG90aGVyd2lzZSBub3QgYSB2YWxpZGF0b3IuQENhbm5vdENoaWxsT3RoZXIAEwRVAVRoZSB1c2VyIGhhcyBlbm91Z2ggYm9uZCBhbmQgdGh1cyBjYW5ub3QgYmUgY2hpbGxlZCBmb3JjZWZ1bGx5IGJ5IGFuIGV4dGVybmFsIHBlcnNvbi5EVG9vTWFueU5vbWluYXRvcnMAFAhNAVRoZXJlIGFyZSB0b28gbWFueSBub21pbmF0b3JzIGluIHRoZSBzeXN0ZW0uIEdvdmVybmFuY2UgbmVlZHMgdG8gYWRqdXN0IHRoZSBzdGFraW5ntHNldHRpbmdzIHRvIGtlZXAgdGhpbmdzIHNhZmUgZm9yIHRoZSBydW50aW1lLkRUb29NYW55VmFsaWRhdG9ycwAVCFUBVGhlcmUgYXJlIHRvbyBtYW55IHZhbGlkYXRvciBjYW5kaWRhdGVzIGluIHRoZSBzeXN0ZW0uIEdvdmVybmFuY2UgbmVlZHMgdG8gYWRqdXN0IHRoZdRzdGFraW5nIHNldHRpbmdzIHRvIGtlZXAgdGhpbmdzIHNhZmUgZm9yIHRoZSBydW50aW1lLkBDb21taXNzaW9uVG9vTG93ABYE4ENvbW1pc3Npb24gaXMgdG9vIGxvdy4gTXVzdCBiZSBhdCBsZWFzdCBgTWluQ29tbWlzc2lvbmAuLEJvdW5kTm90TWV0ABcEWFNvbWUgYm91bmQgaXMgbm90IG1ldC5QQ29udHJvbGxlckRlcHJlY2F0ZWQAGAQBAVVzZWQgd2hlbiBhdHRlbXB0aW5nIHRvIHVzZSBkZXByZWNhdGVkIGNvbnRyb2xsZXIgYWNjb3VudCBsb2dpYy5MQ2Fubm90UmVzdG9yZUxlZGdlcgAZBFhDYW5ub3QgcmVzZXQgYSBsZWRnZXIubFJld2FyZERlc3RpbmF0aW9uUmVzdHJpY3RlZAAaBKxQcm92aWRlZCByZXdhcmQgZGVzdGluYXRpb24gaXMgbm90IGFsbG93ZWQuOE5vdEVub3VnaEZ1bmRzABsEnE5vdCBlbm91Z2ggZnVuZHMgYXZhaWxhYmxlIHRvIHdpdGhkcmF3LlxWaXJ0dWFsU3Rha2VyTm90QWxsb3dlZAAcBKhPcGVyYXRpb24gbm90IGFsbG93ZWQgZm9yIHZpcnR1YWwgc3Rha2Vycy48Q2Fubm90UmVhcFN0YXNoAB0E9FN0YXNoIGNvdWxkIG5vdCBiZSByZWFwZWQgYXMgb3RoZXIgcGFsbGV0IG1pZ2h0IGRlcGVuZCBvbiBpdC48QWxyZWFkeU1pZ3JhdGVkAB4ECQFUaGUgc3Rha2Ugb2YgdGhpcyBhY2NvdW50IGlzIGFscmVhZHkgbWlncmF0ZWQgdG8gYEZ1bmdpYmxlYCBob2xkcy40RXJhTm90U3RhcnRlZAAfBFBFcmEgbm90IHlldCBzdGFydGVkLihSZXN0cmljdGVkACAIWQFBY2NvdW50IGlzIHJlc3RyaWN0ZWQgZnJvbSBwYXJ0aWNpcGF0aW9uIGluIHN0YWtpbmcuIFRoaXMgbWF5IGhhcHBlbiBpZiB0aGUgYWNjb3VudCBpc8RzdGFraW5nIGluIGFub3RoZXIgd2F5IGFscmVhZHksIHN1Y2ggYXMgdmlhIHBvb2wudFVuYXBwbGllZFNsYXNoZXNJblByZXZpb3VzRXJhACEILQFVbmFwcGxpZWQgc2xhc2hlcyBpbiB0aGUgcmVjZW50bHkgY29uY2x1ZGVkIGVyYSBpcyBibG9ja2luZyB0aGlzIG9wZXJhdGlvbi6YU2VlIGBDYWxsOjphcHBseV9zbGFzaGAgdG8gYXBwbHkgdGhlbS44RXJhTm90UHJ1bmFibGUAIgSQVGhlIGVyYSBpcyBub3QgZWxpZ2libGUgZm9yIHBydW5pbmcuOENhbmNlbGxlZFNsYXNoACMEzFRoZSBzbGFzaCBoYXMgYmVlbiBjYW5jZWxsZWQgYW5kIGNhbm5vdCBiZSBhcHBsaWVkLkRDb21taXNzaW9uVG9vSGlnaAAkBPhDb21taXNzaW9uIGlzIGhpZ2hlciB0aGFuIHRoZSBhbGxvd2VkIG1heGltdW0gYE1heENvbW1pc3Npb25gLlRPcHRpbXVtR3JlYXRlclRoYW5DYXAAJQTMT3B0aW11bSBzZWxmLXN0YWtlIGNhbm5vdCBiZSBncmVhdGVyIHRoYW4gaGFyZCBjYXAuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LoEPCFBwYWxsZXRfc3Rha2luZ19hc3luYyRSZXdhcmRQb3QAAQgcR2VuZXJhbAQAhQ8BKFJld2FyZEtpbmQAAAAMRXJhCAA4ASBFcmFJbmRleAAAhQ8BKFJld2FyZEtpbmQAAQAAhQ8IUHBhbGxldF9zdGFraW5nX2FzeW5jKFJld2FyZEtpbmQAAQg0U3Rha2VyUmV3YXJkcwAAAEhWYWxpZGF0b3JTZWxmU3Rha2UAAQAAiQ8MUHBhbGxldF9zdGFraW5nX2FzeW5jGHJld2FyZExFcmFSZXdhcmRBbGxvY2F0aW9uBBxCYWxhbmNlAVkBAAgBOHN0YWtlcl9yZXdhcmRzWQEBHEJhbGFuY2UAAUx2YWxpZGF0b3JfaW5jZW50aXZlWQEBHEJhbGFuY2UAAI0PAAAECAg4AJEPDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBlQ8EUwAABACZDwEYVmVjPFQ+AACVDwx8aW5kaXZfcGFsbGV0X21lbWJlcnNfc3Vic2NyaWJlchR0eXBlc1BSaW5nQ29tbWl0bWVudFJlY29yZAQEVAAAEAEQcm9vdCEHATBNZW1iZXJzT2Y8VD4AASByZXZpc2lvbjgBNFJldmlzaW9uSW5kZXgAASxzb3VyY2VfdGltZSgBDHU2NAABPHNvdXJjZV9zZXF1ZW5jZSgBOFNlcXVlbmNlTnVtYmVyAACZDwAAApUPAJ0PDHxpbmRpdl9wYWxsZXRfbWVtYmVyc19zdWJzY3JpYmVyFHR5cGVzTFJpbmdDb2xsZWN0aW9uU3RhdGUIKE1heE1pc3NpbmcAKE1heERlbGV0ZWQAABABKHJpbmdfY291bnQ4AQx1MzIAATxuZXh0X3JpbmdfaW5kZXg4AQx1MzIAATxtaXNzaW5nX2luZGljZXOhDwGsQm91bmRlZEJUcmVlTWFwPFJpbmdJbmRleCwgdTMyLCBNYXhNaXNzaW5nPgABPGRlbGV0ZWRfaW5kaWNlc6kPAZhCb3VuZGVkQlRyZWVTZXQ8UmluZ0luZGV4LCBNYXhEZWxldGVkPgAAoQ8MTGJvdW5kZWRfY29sbGVjdGlvbnNEYm91bmRlZF9idHJlZV9tYXA8Qm91bmRlZEJUcmVlTWFwDARLATgEVgE4BFMAAAQApQ8BOEJUcmVlTWFwPEssIFY+AAClDwQgQlRyZWVNYXAIBEsBOARWATgABADJCQAAAKkPDExib3VuZGVkX2NvbGxlY3Rpb25zRGJvdW5kZWRfYnRyZWVfc2V0PEJvdW5kZWRCVHJlZVNldAgEVAE4BFMAAAQArQ8BLEJUcmVlU2V0PFQ+AACtDwQgQlRyZWVTZXQEBFQBOAAEAF0EAAAAsQ8MfGluZGl2X3BhbGxldF9tZW1iZXJzX3N1YnNjcmliZXIUdHlwZXNIU3Vic2NyaXB0aW9uU3RhdHVzAAEMIEluYWN0aXZlAAAAGEFjdGl2ZQQBXGluaXRpYWxpemVkX2F0X3NlcXVlbmNlKAE4U2VxdWVuY2VOdW1iZXIAAQAoVGVybWluYXRlZAACAAC1Dwx8aW5kaXZfcGFsbGV0X21lbWJlcnNfc3Vic2NyaWJlchR0eXBlc1hVcGRhdGVzUHJvY2Vzc2luZ1N0YXRlAAAMAVxsYXN0X3Byb2Nlc3NlZF9zZXF1ZW5jZSgBOFNlcXVlbmNlTnVtYmVyAAFgbGFzdF9iYXRjaF9yZWNlaXZlZF90aW1lKAEMdTY0AAFgbGFzdF9yZXBsYXlfcmVxdWVzdF90aW1lKAEMdTY0AAC5Dwx8aW5kaXZfcGFsbGV0X21lbWJlcnNfc3Vic2NyaWJlchR0eXBlc0BOb3RpZmllckVuZHBvaW50AAAIASBsb2NhdGlvbh0CASBMb2NhdGlvbgABMHBhbGxldF9pbmRleAwBCHU4AAC9Dwx8aW5kaXZfcGFsbGV0X21lbWJlcnNfc3Vic2NyaWJlchhwYWxsZXQURXJyb3IEBFQAASQ0WGNtU2VuZEZhaWxlZAAABGBYQ00gbWVzc2FnZSBzZW5kIGZhaWxlZC5QU3Vic2NyaXB0aW9uSW5hY3RpdmUAAQSMU3Vic2NyaXB0aW9uIGlzIGN1cnJlbnRseSBpbmFjdGl2ZS5YU3Vic2NyaXB0aW9uVGVybWluYXRlZAACBJBTdWJzY3JpcHRpb24gaXMgaW4gdGVybWluYXRlZCBzdGF0ZS5kU3Vic2NyaXB0aW9uQWxyZWFkeUFjdGl2ZQADBC0BU3Vic2NyaXB0aW9uIGlzIGFjdGl2ZSB3aXRoIGEgZGlmZmVyZW50IHNlcXVlbmNlOyBtdXN0IGJlIHRlcm1pbmF0ZWQgZmlyc3QuSENvbGxlY3Rpb25Ob3RGb3VuZAAEBNBDb2xsZWN0aW9uIHdpdGggdGhlIGdpdmVuIGlkZW50aWZpZXIgaXMgbm90IHRyYWNrZWQuGE5vUm9vdAAFBLRObyByaW5nIHJvb3Qgc3RvcmVkIGZvciB0aGUgZ2l2ZW4gcmluZyBpbmRleC4wSW52YWxpZFByb29mAAYE0FByb29mIGZhaWxlZCB0byB2ZXJpZnkgYWdhaW5zdCBhbnkgc3RvcmVkIHJpbmcgcm9vdC5MSW52YWxpZFJpbmdFeHBvbmVudAAHBAUBU3RvcmVkIHJpbmcgZXhwb25lbnQgZG9lcyBub3QgY29udmVydCBpbnRvIHRoZSBjcnlwdG8ncyBjYXBhY2l0eS5AUmV2aXNpb25Ob3RGb3VuZAAIBPxSZXF1ZXN0ZWQgcmV2aXNpb24gaXMgbm90IHByZXNlbnQgaW4gdGhlIHN0b3JlZCBzbGlkaW5nIHdpbmRvdy4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuwQ8AAAQICA0EAMUPDGxpbmRpdl9wYWxsZXRfYWxpYXNfYWNjb3VudHMYcGFsbGV0FEVycm9yBARUAAE4REludmFsaWRDb2xsZWN0aW9uAAAEfFRoZSBjb2xsZWN0aW9uIGlzIG5vdCBhY2NlcHRlZC4wQWNjb3VudEluVXNlAAEEyFRoZSBhY2NvdW50IGlzIGFscmVhZHkgaW4gdXNlIHVuZGVyIGFub3RoZXIgYWxpYXMuOEludmFsaWRBY2NvdW50AAIEZFRoZSBhY2NvdW50IGlzIG5vdCBrbm93bi5YQWxpYXNBY2NvdW50QWxyZWFkeVNldAADBMBBbGlhcyA8LT4gQWNjb3VudCBpcyBhbHJlYWR5IHNldCBhbmQgdXAgdG8gZGF0ZS44VGltZU91dE9mUmFuZ2UABAR4Q2FsbCBpcyB0b28gbGF0ZSBvciB0b28gZWFybHkuNEFsaWFzTm90U3RhbGUABQRFAVRoZSBhbGlhcyBtYXBwaW5nIGlzIG5vdCBzdGFsZTsgdGhlIHJldmlzaW9uIHN0aWxsIG1hdGNoZXMgdGhlIGN1cnJlbnQgcmluZyByb290LjxDbGVhbnVwVG9vRWFybHkABghBAVRoZSBjbGVhbnVwIGdyYWNlIHBlcmlvZCBoYXMgbm90IGVsYXBzZWQgeWV0OyB0aGUgYWxpYXMgaG9sZGVyIHN0aWxsIGhhcyB0aW1lIHRvHHVwZGF0ZS5ESW5jb25zaXN0ZW50U3RhdGUABwRVAVN0b3JhZ2UgaXMgaW4gYW4gaW5jb25zaXN0ZW50IHN0YXRlLiBUaGlzIHNob3VsZCBuZXZlciBoYXBwZW4gdW5kZXIgbm9ybWFsIG9wZXJhdGlvbi40QWxpYXNGZWVVbnNldAAIBOhUaGUgUEdBUyBmZWUgZm9yIGFsaWFzIHJlZ2lzdHJhdGlvbnMgaGFzIG5vdCBiZWVuIHNldCB5ZXQuPFJlcHJvdmVNaXNtYXRjaAAJCB0BVGhlIHByb29mIHBhc3NlZCB0byBgcmVwcm92ZV9hbGlhc19hY2NvdW50YCBwcm9kdWNlZCBhbiBhbGlhcyAvIGNvbnRleHTYdGhhdCBkb2VzIG5vdCBtYXRjaCB0aGUgc3RvcmVkIG1hcHBpbmcgZm9yIHRoZSBzaWduZXIuQFJpbmdSb290Tm90Rm91bmQACgQFAU5vIHJpbmcgcm9vdCB3YXMgZm91bmQgZm9yIHRoZSByZXF1ZXN0ZWQgY29sbGVjdGlvbiAvIHJpbmcgaW5kZXguNFN0YWxlUmV2aXNpb24ACwQBAVRoZSByZXF1ZXN0ZWQgcmluZyByZXZpc2lvbiBpcyBubyBsb25nZXIgYWNjZXB0ZWQgZm9yIHRoaXMgcmluZy4gQmFkUHJvb2YADASMUmluZy1WUkYgcHJvb2YgdmVyaWZpY2F0aW9uIGZhaWxlZC5MSW52YWxpZFJpbmdDYXBhY2l0eQANBPBUaGUgY29uZmlndXJlZCByaW5nIGNhcGFjaXR5IGlzIGludmFsaWQgZm9yIHRoaXMgY29sbGVjdGlvbi4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuyQ8AAAQIFQQIAM0PDERpbmRpdl9wYWxsZXRfcGdhcxhwYWxsZXQURXJyb3IEBFQAARA4QWxyZWFkeUNsYWltZWQAAAT4VGhpcyBhbGlhcyBoYXMgYWxyZWFkeSBiZWVuIHVzZWQgdG8gY2xhaW0gUEdBUyBpbiB0aGlzIHBlcmlvZC44UGdhc01pbnRGYWlsZWQAAQTAVGhlIFBHQVMgYXNzZXQgZG9lcyBub3QgZXhpc3Qgb3IgbWludGluZyBmYWlsZWQuPE5vUmVjb3Jkc0ZvckRheQACBDEBYGNsZWFuX3BnYXNfY2xhaW1fcmVjb3Jkc2Agd2FzIGNhbGxlZCB3aXRoIGEgZGF5IHRoYXQgaGFzIG5vIHN0b3JlZCByZWNvcmRzLkhGaXJzdEFsaWFzTWlzbWF0Y2gAAwhVAVRoZSBgZmlyc3RfYWxpYXNgIHBhc3NlZCB0byBgY2xlYW5fcGdhc19jbGFpbV9yZWNvcmRzYCBkb2VzIG5vdCBtYXRjaCB0aGUgZmlyc3QgYWxpYXOIY3VycmVudGx5IHN0b3JlZCB1bmRlciB0aGUgcHJlZml4LgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC7RDww0cGFsbGV0X3Jldml2ZQh2bSBDb2RlSW5mbwQEVAAAGAEUb3duZXIEAThBY2NvdW50SWRPZjxUPgABHGRlcG9zaXRVAQEwQmFsYW5jZU9mPFQ+AAEgcmVmY291bnS4AQx1NjQAASBjb2RlX2xlbjgBDHUzMgABJGNvZGVfdHlwZdUPATBCeXRlY29kZVR5cGUAAURiZWhhdmlvdXJfdmVyc2lvbjgBDHUzMgAA1Q8MNHBhbGxldF9yZXZpdmUIdm0wQnl0ZWNvZGVUeXBlAAEIDFB2bQAAAAxFdm0AAQAA2Q8MNHBhbGxldF9yZXZpdmUcc3RvcmFnZSxBY2NvdW50SW5mbwQEVAAACAEwYWNjb3VudF90eXBl3Q8BOEFjY291bnRUeXBlPFQ+AAEQZHVzdDgBDHUzMgAA3Q8MNHBhbGxldF9yZXZpdmUcc3RvcmFnZSxBY2NvdW50VHlwZQQEVAABCCBDb250cmFjdAQA4Q8BPENvbnRyYWN0SW5mbzxUPgAAAAxFT0EAAQAA4Q8MNHBhbGxldF9yZXZpdmUcc3RvcmFnZTBDb250cmFjdEluZm8EBFQAACABHHRyaWVfaWRhBAEYVHJpZUlkAAEkY29kZV9oYXNoQAE0c3BfY29yZTo6SDI1NgABNHN0b3JhZ2VfYnl0ZXM4AQx1MzIAATRzdG9yYWdlX2l0ZW1zOAEMdTMyAAFQc3RvcmFnZV9ieXRlX2RlcG9zaXRZAQEwQmFsYW5jZU9mPFQ+AAFQc3RvcmFnZV9pdGVtX2RlcG9zaXRZAQEwQmFsYW5jZU9mPFQ+AAFQc3RvcmFnZV9iYXNlX2RlcG9zaXRZAQEwQmFsYW5jZU9mPFQ+AAFIaW1tdXRhYmxlX2RhdGFfbGVuOAEMdTMyAADlDwAABAgEBADpDwxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQwEUwAABAAYARhWZWM8VD4AAO0PDDRwYWxsZXRfcmV2aXZlHHN0b3JhZ2VERGVsZXRpb25RdWV1ZUl0ZW0EBFQAAAgBHHRyaWVfaWRhBAEYVHJpZUlkAAEoYWNjb3VudF9pZAQBOEFjY291bnRJZE9mPFQ+AADxDww0cGFsbGV0X3Jldml2ZRxzdG9yYWdlUERlbGV0aW9uUXVldWVNYW5hZ2VyBARUAAAIAThpbnNlcnRfY291bnRlcjgBDHUzMgABOGRlbGV0ZV9jb3VudGVyOAEMdTMyAAD1DxQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpNHJwY190eXBlc19nZW4UQmxvY2sAAGwBQGJhc2VfZmVlX3Blcl9nYXNFBwEQVTI1NgABNGJsb2JfZ2FzX3VzZWRFBwEQVTI1NgABKGRpZmZpY3VsdHlFBwEQVTI1NgABPGV4Y2Vzc19ibG9iX2dhc0UHARBVMjU2AAEoZXh0cmFfZGF0YfkPARRCeXRlcwABJGdhc19saW1pdEUHARBVMjU2AAEgZ2FzX3VzZWRFBwEQVTI1NgABEGhhc2hAARBIMjU2AAEobG9nc19ibG9vbf0PASBCeXRlczI1NgABFG1pbmVyPQcBHEFkZHJlc3MAASBtaXhfaGFzaEABEEgyNTYAARRub25jZQUQARhCeXRlczgAARhudW1iZXJFBwEQVTI1NgABYHBhcmVudF9iZWFjb25fYmxvY2tfcm9vdBUFATBPcHRpb248SDI1Nj4AASxwYXJlbnRfaGFzaEABEEgyNTYAATRyZWNlaXB0c19yb290QAEQSDI1NgABNHJlcXVlc3RzX2hhc2gVBQEwT3B0aW9uPEgyNTY+AAEwc2hhXzNfdW5jbGVzQAEQSDI1NgABEHNpemVFBwEQVTI1NgABKHN0YXRlX3Jvb3RAARBIMjU2AAEkdGltZXN0YW1wRQcBEFUyNTYAAUB0b3RhbF9kaWZmaWN1bHR5CRABME9wdGlvbjxVMjU2PgABMHRyYW5zYWN0aW9ucw0QAWBIYXNoZXNPclRyYW5zYWN0aW9uSW5mb3MAAUR0cmFuc2FjdGlvbnNfcm9vdEABEEgyNTYAARh1bmNsZXPEASRWZWM8SDI1Nj4AASx3aXRoZHJhd2Fsc1kQATxWZWM8V2l0aGRyYXdhbD4AAUB3aXRoZHJhd2Fsc19yb290QAEQSDI1NgAA+Q8UNHBhbGxldF9yZXZpdmUMZXZtDGFwaRBieXRlFEJ5dGVzAAAEABgBHFZlYzx1OD4AAP0PFDRwYWxsZXRfcmV2aXZlDGV2bQxhcGkQYnl0ZSBCeXRlczI1NgAABAABEAEkW3U4OyAyNTZdAAABEAAAAwABAAAMAAUQFDRwYWxsZXRfcmV2aXZlDGV2bQxhcGkQYnl0ZRhCeXRlczgAAAQAeQIBHFt1ODsgOF0AAAkQBBhPcHRpb24EBFQBRQcBCBBOb25lAAAAEFNvbWUEAEUHAAABAAANEBQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpNHJwY190eXBlc19nZW5gSGFzaGVzT3JUcmFuc2FjdGlvbkluZm9zAAEIGEhhc2hlcwQAxAEkVmVjPEgyNTY+AAAAQFRyYW5zYWN0aW9uSW5mb3MEABEQAVBWZWM8VHJhbnNhY3Rpb25JbmZvPgABAAAREAAAAhUQABUQFDRwYWxsZXRfcmV2aXZlDGV2bQxhcGk0cnBjX3R5cGVzX2dlbjxUcmFuc2FjdGlvbkluZm8AABgBKGJsb2NrX2hhc2hAARBIMjU2AAEwYmxvY2tfbnVtYmVyRQcBEFUyNTYAARBmcm9tPQcBHEFkZHJlc3MAARBoYXNoQAEQSDI1NgABRHRyYW5zYWN0aW9uX2luZGV4RQcBEFUyNTYAAUh0cmFuc2FjdGlvbl9zaWduZWQZEAFEVHJhbnNhY3Rpb25TaWduZWQAABkQFDRwYWxsZXRfcmV2aXZlDGV2bQxhcGk0cnBjX3R5cGVzX2dlbkRUcmFuc2FjdGlvblNpZ25lZAABFFRUcmFuc2FjdGlvbjc3MDJTaWduZWQEAB0QAVRUcmFuc2FjdGlvbjc3MDJTaWduZWQAAABUVHJhbnNhY3Rpb240ODQ0U2lnbmVkBAA1EAFUVHJhbnNhY3Rpb240ODQ0U2lnbmVkAAEAVFRyYW5zYWN0aW9uMTU1OVNpZ25lZAQAPRABVFRyYW5zYWN0aW9uMTU1OVNpZ25lZAACAFRUcmFuc2FjdGlvbjI5MzBTaWduZWQEAEkQAVRUcmFuc2FjdGlvbjI5MzBTaWduZWQAAwBcVHJhbnNhY3Rpb25MZWdhY3lTaWduZWQEAFEQAVxUcmFuc2FjdGlvbkxlZ2FjeVNpZ25lZAAEAAAdEBQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpNHJwY190eXBlc19nZW5UVHJhbnNhY3Rpb243NzAyU2lnbmVkAAAUAWR0cmFuc2FjdGlvbl83NzAyX3Vuc2lnbmVkIRABXFRyYW5zYWN0aW9uNzcwMlVuc2lnbmVkAAEEckUHARBVMjU2AAEEc0UHARBVMjU2AAEEdgkQATBPcHRpb248VTI1Nj4AASB5X3Bhcml0eUUHARBVMjU2AAAhEBQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpNHJwY190eXBlc19nZW5cVHJhbnNhY3Rpb243NzAyVW5zaWduZWQAACwBLGFjY2Vzc19saXN0JRABKEFjY2Vzc0xpc3QAAUhhdXRob3JpemF0aW9uX2xpc3QtEAFsVmVjPEF1dGhvcml6YXRpb25MaXN0RW50cnk+AAEgY2hhaW5faWRFBwEQVTI1NgABDGdhc0UHARBVMjU2AAEUaW5wdXT5DwEUQnl0ZXMAATxtYXhfZmVlX3Blcl9nYXNFBwEQVTI1NgABYG1heF9wcmlvcml0eV9mZWVfcGVyX2dhc0UHARBVMjU2AAEUbm9uY2VFBwEQVTI1NgABCHRvPQcBHEFkZHJlc3MAARhyI3R5cGUMASxUeXBlRWlwNzcwMgABFHZhbHVlRQcBEFUyNTYAACUQAAACKRAAKRAUNHBhbGxldF9yZXZpdmUMZXZtDGFwaTRycGNfdHlwZXNfZ2VuPEFjY2Vzc0xpc3RFbnRyeQAACAEcYWRkcmVzcz0HARxBZGRyZXNzAAEwc3RvcmFnZV9rZXlzxAEkVmVjPEgyNTY+AAAtEAAAAjEQADEQFDRwYWxsZXRfcmV2aXZlDGV2bQxhcGk0cnBjX3R5cGVzX2dlblhBdXRob3JpemF0aW9uTGlzdEVudHJ5AAAYASBjaGFpbl9pZEUHARBVMjU2AAEcYWRkcmVzcz0HARxBZGRyZXNzAAEUbm9uY2VFBwEQVTI1NgABIHlfcGFyaXR5RQcBEFUyNTYAAQRyRQcBEFUyNTYAAQRzRQcBEFUyNTYAADUQFDRwYWxsZXRfcmV2aXZlDGV2bQxhcGk0cnBjX3R5cGVzX2dlblRUcmFuc2FjdGlvbjQ4NDRTaWduZWQAABABZHRyYW5zYWN0aW9uXzQ4NDRfdW5zaWduZWQ5EAFcVHJhbnNhY3Rpb240ODQ0VW5zaWduZWQAAQRyRQcBEFUyNTYAAQRzRQcBEFUyNTYAASB5X3Bhcml0eUUHARBVMjU2AAA5EBQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpNHJwY190eXBlc19nZW5cVHJhbnNhY3Rpb240ODQ0VW5zaWduZWQAADABLGFjY2Vzc19saXN0JRABKEFjY2Vzc0xpc3QAAVRibG9iX3ZlcnNpb25lZF9oYXNoZXPEASRWZWM8SDI1Nj4AASBjaGFpbl9pZEUHARBVMjU2AAEMZ2FzRQcBEFUyNTYAARRpbnB1dPkPARRCeXRlcwABUG1heF9mZWVfcGVyX2Jsb2JfZ2FzRQcBEFUyNTYAATxtYXhfZmVlX3Blcl9nYXNFBwEQVTI1NgABYG1heF9wcmlvcml0eV9mZWVfcGVyX2dhc0UHARBVMjU2AAEUbm9uY2VFBwEQVTI1NgABCHRvPQcBHEFkZHJlc3MAARhyI3R5cGUMASxUeXBlRWlwNDg0NAABFHZhbHVlRQcBEFUyNTYAAD0QFDRwYWxsZXRfcmV2aXZlDGV2bQxhcGk0cnBjX3R5cGVzX2dlblRUcmFuc2FjdGlvbjE1NTlTaWduZWQAABQBZHRyYW5zYWN0aW9uXzE1NTlfdW5zaWduZWRBEAFcVHJhbnNhY3Rpb24xNTU5VW5zaWduZWQAAQRyRQcBEFUyNTYAAQRzRQcBEFUyNTYAAQR2CRABME9wdGlvbjxVMjU2PgABIHlfcGFyaXR5RQcBEFUyNTYAAEEQFDRwYWxsZXRfcmV2aXZlDGV2bQxhcGk0cnBjX3R5cGVzX2dlblxUcmFuc2FjdGlvbjE1NTlVbnNpZ25lZAAALAEsYWNjZXNzX2xpc3QlEAEoQWNjZXNzTGlzdAABIGNoYWluX2lkRQcBEFUyNTYAAQxnYXNFBwEQVTI1NgABJGdhc19wcmljZUUHARBVMjU2AAEUaW5wdXT5DwEUQnl0ZXMAATxtYXhfZmVlX3Blcl9nYXNFBwEQVTI1NgABYG1heF9wcmlvcml0eV9mZWVfcGVyX2dhc0UHARBVMjU2AAEUbm9uY2VFBwEQVTI1NgABCHRvRRABPE9wdGlvbjxBZGRyZXNzPgABGHIjdHlwZQwBLFR5cGVFaXAxNTU5AAEUdmFsdWVFBwEQVTI1NgAARRAEGE9wdGlvbgQEVAE9BwEIEE5vbmUAAAAQU29tZQQAPQcAAAEAAEkQFDRwYWxsZXRfcmV2aXZlDGV2bQxhcGk0cnBjX3R5cGVzX2dlblRUcmFuc2FjdGlvbjI5MzBTaWduZWQAABQBZHRyYW5zYWN0aW9uXzI5MzBfdW5zaWduZWRNEAFcVHJhbnNhY3Rpb24yOTMwVW5zaWduZWQAAQRyRQcBEFUyNTYAAQRzRQcBEFUyNTYAAQR2CRABME9wdGlvbjxVMjU2PgABIHlfcGFyaXR5RQcBEFUyNTYAAE0QFDRwYWxsZXRfcmV2aXZlDGV2bQxhcGk0cnBjX3R5cGVzX2dlblxUcmFuc2FjdGlvbjI5MzBVbnNpZ25lZAAAJAEsYWNjZXNzX2xpc3QlEAEoQWNjZXNzTGlzdAABIGNoYWluX2lkRQcBEFUyNTYAAQxnYXNFBwEQVTI1NgABJGdhc19wcmljZUUHARBVMjU2AAEUaW5wdXT5DwEUQnl0ZXMAARRub25jZUUHARBVMjU2AAEIdG9FEAE8T3B0aW9uPEFkZHJlc3M+AAEYciN0eXBlDAEsVHlwZUVpcDI5MzAAARR2YWx1ZUUHARBVMjU2AABREBQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpNHJwY190eXBlc19nZW5cVHJhbnNhY3Rpb25MZWdhY3lTaWduZWQAABABbHRyYW5zYWN0aW9uX2xlZ2FjeV91bnNpZ25lZFUQAWRUcmFuc2FjdGlvbkxlZ2FjeVVuc2lnbmVkAAEEckUHARBVMjU2AAEEc0UHARBVMjU2AAEEdkUHARBVMjU2AABVEBQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpNHJwY190eXBlc19nZW5kVHJhbnNhY3Rpb25MZWdhY3lVbnNpZ25lZAAAIAEgY2hhaW5faWQJEAEwT3B0aW9uPFUyNTY+AAEMZ2FzRQcBEFUyNTYAASRnYXNfcHJpY2VFBwEQVTI1NgABFGlucHV0+Q8BFEJ5dGVzAAEUbm9uY2VFBwEQVTI1NgABCHRvRRABPE9wdGlvbjxBZGRyZXNzPgABGHIjdHlwZQwBKFR5cGVMZWdhY3kAARR2YWx1ZUUHARBVMjU2AABZEAAAAl0QAF0QFDRwYWxsZXRfcmV2aXZlDGV2bQxhcGk0cnBjX3R5cGVzX2dlbihXaXRoZHJhd2FsAAAQARxhZGRyZXNzPQcBHEFkZHJlc3MAARhhbW91bnRFBwEQVTI1NgABFGluZGV4RQcBEFUyNTYAATx2YWxpZGF0b3JfaW5kZXhFBwEQVTI1NgAAYRAAAAJlEABlEBA0cGFsbGV0X3Jldml2ZQxldm0oYmxvY2tfaGFzaDhSZWNlaXB0R2FzSW5mbwAACAEgZ2FzX3VzZWRFBwEQVTI1NgABTGVmZmVjdGl2ZV9nYXNfcHJpY2VFBwEQVTI1NgAAaRAUNHBhbGxldF9yZXZpdmUMZXZtKGJsb2NrX2hhc2g0YmxvY2tfYnVpbGRlclhFdGhlcmV1bUJsb2NrQnVpbGRlcklSBARUAAAgAWB0cmFuc2FjdGlvbl9yb290X2J1aWxkZXJtEAFgSW5jcmVtZW50YWxIYXNoQnVpbGRlcklSAAFUcmVjZWlwdHNfcm9vdF9idWlsZGVybRABYEluY3JlbWVudGFsSGFzaEJ1aWxkZXJJUgABQGJhc2VfZmVlX3Blcl9nYXNFBwEQVTI1NgABPGJsb2NrX2dhc19saW1pdEUHARBVMjU2AAEgZ2FzX3VzZWRFBwEQVTI1NgABKGxvZ3NfYmxvb20BEAFYW3U4OyBCTE9PTV9TSVpFX0JZVEVTXQABJHR4X2hhc2hlc8QBJFZlYzxIMjU2PgABIGdhc19pbmZvYRABTFZlYzxSZWNlaXB0R2FzSW5mbz4AAG0QFDRwYWxsZXRfcmV2aXZlDGV2bShibG9ja19oYXNoMGhhc2hfYnVpbGRlcmBJbmNyZW1lbnRhbEhhc2hCdWlsZGVySVIAACgBDGtleRgBHFZlYzx1OD4AASh2YWx1ZV90eXBlDAEIdTgAATRidWlsZGVyX3ZhbHVlGAEcVmVjPHU4PgABFHN0YWNrNAEwVmVjPFZlYzx1OD4+AAEsc3RhdGVfbWFza3NxBwEgVmVjPHUxNj4AASh0cmVlX21hc2tzcQcBIFZlYzx1MTY+AAEoaGFzaF9tYXNrc3EHASBWZWM8dTE2PgABSHN0b3JlZF9pbl9kYXRhYmFzZV0BARBib29sAAEccmxwX2J1ZhgBHFZlYzx1OD4AARRpbmRleCgBDHU2NAAAcRAEGE9wdGlvbgQEVAEwAQgQTm9uZQAAABBTb21lBAAwAAABAAB1EAw0cGFsbGV0X3Jldml2ZRRkZWJ1ZzREZWJ1Z1NldHRpbmdzAAAQAXRhbGxvd191bmxpbWl0ZWRfY29udHJhY3Rfc2l6ZV0BARBib29sAAE8YnlwYXNzX2VpcF8zNjA3XQEBEGJvb2wAASBwdm1fbG9nc10BARBib29sAAFkZGlzYWJsZV9leGVjdXRpb25fdHJhY2luZ10BARBib29sAAB5EAw0cGFsbGV0X3Jldml2ZRhwYWxsZXQURXJyb3IEBFQAAeg8SW52YWxpZFNjaGVkdWxlAAEEGQFJbnZhbGlkIHNjaGVkdWxlIHN1cHBsaWVkLCBlLmcuIHdpdGggemVybyB3ZWlnaHQgb2YgYSBiYXNpYyBvcGVyYXRpb24uQEludmFsaWRDYWxsRmxhZ3MAAgQ1AUludmFsaWQgY29tYmluYXRpb24gb2YgZmxhZ3Mgc3VwcGxpZWQgdG8gYHNlYWxfY2FsbGAgb3IgYHNlYWxfZGVsZWdhdGVfY2FsbGAuIE91dE9mR2FzAAMEuFRoZSBleGVjdXRlZCBjb250cmFjdCBleGhhdXN0ZWQgaXRzIGdhcyBsaW1pdC44VHJhbnNmZXJGYWlsZWQABAg1AVBlcmZvcm1pbmcgdGhlIHJlcXVlc3RlZCB0cmFuc2ZlciBmYWlsZWQuIFByb2JhYmx5IGJlY2F1c2UgdGhlcmUgaXNuJ3QgZW5vdWdolGZyZWUgYmFsYW5jZSBpbiB0aGUgc2VuZGVyJ3MgYWNjb3VudC5MTWF4Q2FsbERlcHRoUmVhY2hlZAAFCCEBUGVyZm9ybWluZyBhIGNhbGwgd2FzIGRlbmllZCBiZWNhdXNlIHRoZSBjYWxsaW5nIGRlcHRoIHJlYWNoZWQgdGhlIGxpbWl0lG9mIHdoYXQgaXMgc3BlY2lmaWVkIGluIHRoZSBzY2hlZHVsZS5AQ29udHJhY3ROb3RGb3VuZAAGBLxObyBjb250cmFjdCB3YXMgZm91bmQgYXQgdGhlIHNwZWNpZmllZCBhZGRyZXNzLjBDb2RlTm90Rm91bmQABwTETm8gY29kZSBjb3VsZCBiZSBmb3VuZCBhdCB0aGUgc3VwcGxpZWQgY29kZSBoYXNoLkBDb2RlSW5mb05vdEZvdW5kAAgE2E5vIGNvZGUgaW5mbyBjb3VsZCBiZSBmb3VuZCBhdCB0aGUgc3VwcGxpZWQgY29kZSBoYXNoLixPdXRPZkJvdW5kcwAJBCUBQSBidWZmZXIgb3V0c2lkZSBvZiBzYW5kYm94IG1lbW9yeSB3YXMgcGFzc2VkIHRvIGEgY29udHJhY3QgQVBJIGZ1bmN0aW9uLjhEZWNvZGluZ0ZhaWxlZAAKBCkBSW5wdXQgcGFzc2VkIHRvIGEgY29udHJhY3QgQVBJIGZ1bmN0aW9uIGZhaWxlZCB0byBkZWNvZGUgYXMgZXhwZWN0ZWQgdHlwZS48Q29udHJhY3RUcmFwcGVkAAsEiENvbnRyYWN0IHRyYXBwZWQgZHVyaW5nIGV4ZWN1dGlvbi40VmFsdWVUb29MYXJnZQAMBPRFdmVudCBib2R5IG9yIHN0b3JhZ2UgaXRlbSBleGNlZWRzIFtgbGltaXRzOjpTVE9SQUdFX0JZVEVTYF0uYFRlcm1pbmF0ZWRXaGlsZVJlZW50cmFudAANCBkBVGVybWluYXRpb24gb2YgYSBjb250cmFjdCBpcyBub3QgYWxsb3dlZCB3aGlsZSB0aGUgY29udHJhY3QgaXMgYWxyZWFkeeBvbiB0aGUgY2FsbCBzdGFjay4gQ2FuIGJlIHRyaWdnZXJlZCBieSBgc2VhbF90ZXJtaW5hdGVgLjhJbnB1dEZvcndhcmRlZAAOBEEBYHNlYWxfY2FsbGAgZm9yd2FyZGVkIHRoaXMgY29udHJhY3RzIGlucHV0LiBJdCB0aGVyZWZvcmUgaXMgbm8gbG9uZ2VyIGF2YWlsYWJsZS40VG9vTWFueVRvcGljcwAPBB0BVGhlIGFtb3VudCBvZiB0b3BpY3MgcGFzc2VkIHRvIGBzZWFsX2RlcG9zaXRfZXZlbnRzYCBleGNlZWRzIHRoZSBsaW1pdC5ERHVwbGljYXRlQ29udHJhY3QAEgTIQSBjb250cmFjdCB3aXRoIHRoZSBzYW1lIEFjY291bnRJZCBhbHJlYWR5IGV4aXN0cy5cVGVybWluYXRlZEluQ29uc3RydWN0b3IAEwy4QSBjb250cmFjdCBzZWxmIGRlc3RydWN0ZWQgaW4gaXRzIGNvbnN0cnVjdG9yLgDQVGhpcyBjYW4gYmUgdHJpZ2dlcmVkIGJ5IGEgY2FsbCB0byBgc2VhbF90ZXJtaW5hdGVgLkBSZWVudHJhbmNlRGVuaWVkABQEDQFBIGNhbGwgdHJpZWQgdG8gaW52b2tlIGEgY29udHJhY3QgdGhhdCBpcyBmbGFnZ2VkIGFzIG5vbi1yZWVudHJhbnQuPFJlZW50ZXJlZFBhbGxldAAVBC0BQSBjb250cmFjdCBjYWxsZWQgaW50byB0aGUgcnVudGltZSB3aGljaCB0aGVuIGNhbGxlZCBiYWNrIGludG8gdGhpcyBwYWxsZXQuRFN0YXRlQ2hhbmdlRGVuaWVkABYETQFBIGNvbnRyYWN0IGF0dGVtcHRlZCB0byBpbnZva2UgYSBzdGF0ZSBtb2RpZnlpbmcgQVBJIHdoaWxlIGJlaW5nIGluIHJlYWQtb25seSBtb2RlLnBTdG9yYWdlRGVwb3NpdE5vdEVub3VnaEZ1bmRzABcEIQFPcmlnaW4gZG9lc24ndCBoYXZlIGVub3VnaCBiYWxhbmNlIHRvIHBheSB0aGUgcmVxdWlyZWQgc3RvcmFnZSBkZXBvc2l0cy5wU3RvcmFnZURlcG9zaXRMaW1pdEV4aGF1c3RlZAAYBA0BTW9yZSBzdG9yYWdlIHdhcyBjcmVhdGVkIHRoYW4gYWxsb3dlZCBieSB0aGUgc3RvcmFnZSBkZXBvc2l0IGxpbWl0LiRDb2RlSW5Vc2UAGQRJAUNvZGUgcmVtb3ZhbCB3YXMgZGVuaWVkIGJlY2F1c2UgdGhlIGNvZGUgaXMgc3RpbGwgaW4gdXNlIGJ5IGF0IGxlYXN0IG9uZSBjb250cmFjdC5AQ29udHJhY3RSZXZlcnRlZAAaECUBVGhlIGNvbnRyYWN0IHJhbiB0byBjb21wbGV0aW9uIGJ1dCBkZWNpZGVkIHRvIHJldmVydCBpdHMgc3RvcmFnZSBjaGFuZ2VzLkkBUGxlYXNlIG5vdGUgdGhhdCB0aGlzIGVycm9yIGlzIG9ubHkgcmV0dXJuZWQgZnJvbSBleHRyaW5zaWNzLiBXaGVuIGNhbGxlZCBkaXJlY3RseV0Bb3IgdmlhIFJQQyBhbiBgT2tgIHdpbGwgYmUgcmV0dXJuZWQuIEluIHRoaXMgY2FzZSB0aGUgY2FsbGVyIG5lZWRzIHRvIGluc3BlY3QgdGhlIGZsYWdzxHRvIGRldGVybWluZSB3aGV0aGVyIGEgcmV2ZXJzaW9uIGhhcyB0YWtlbiBwbGFjZS4wQ29kZVJlamVjdGVkABsQGQFUaGUgY29udHJhY3QgZmFpbGVkIHRvIGNvbXBpbGUgb3IgaXMgbWlzc2luZyB0aGUgY29ycmVjdCBlbnRyeSBwb2ludHMuAFEBQSBtb3JlIGRldGFpbGVkIGVycm9yIGNhbiBiZSBmb3VuZCBvbiB0aGUgbm9kZSBjb25zb2xlIGlmIGRlYnVnIG1lc3NhZ2VzIGFyZSBlbmFibGVknGJ5IHN1cHBseWluZyBgLWxydW50aW1lOjpyZXZpdmU9ZGVidWdgLjBCbG9iVG9vTGFyZ2UAHAQNAVRoZSBjb2RlIGJsb2Igc3VwcGxpZWQgaXMgbGFyZ2VyIHRoYW4gW2BsaW1pdHM6OmNvZGU6OkJMT0JfQllURVNgXS5QU3RhdGljTWVtb3J5VG9vTGFyZ2UAHQTgVGhlIGNvbnRyYWN0IGRlY2xhcmVzIHRvbyBtdWNoIG1lbW9yeSAocm8gKyBydyArIHN0YWNrKS5IQmFzaWNCbG9ja1Rvb0xhcmdlAB4E/FRoZSBwcm9ncmFtIGNvbnRhaW5zIGEgYmFzaWMgYmxvY2sgdGhhdCBpcyBsYXJnZXIgdGhhbiBhbGxvd2VkLkhJbnZhbGlkSW5zdHJ1Y3Rpb24AHwSwVGhlIHByb2dyYW0gY29udGFpbnMgYW4gaW52YWxpZCBpbnN0cnVjdGlvbi54TWF4RGVsZWdhdGVEZXBlbmRlbmNpZXNSZWFjaGVkACAEFQFUaGUgY29udHJhY3QgaGFzIHJlYWNoZWQgaXRzIG1heGltdW0gbnVtYmVyIG9mIGRlbGVnYXRlIGRlcGVuZGVuY2llcy5oRGVsZWdhdGVEZXBlbmRlbmN5Tm90Rm91bmQAIQQVAVRoZSBkZXBlbmRlbmN5IHdhcyBub3QgZm91bmQgaW4gdGhlIGNvbnRyYWN0J3MgZGVsZWdhdGUgZGVwZW5kZW5jaWVzLnxEZWxlZ2F0ZURlcGVuZGVuY3lBbHJlYWR5RXhpc3RzACIE+FRoZSBjb250cmFjdCBhbHJlYWR5IGRlcGVuZHMgb24gdGhlIGdpdmVuIGRlbGVnYXRlIGRlcGVuZGVuY3kuhENhbm5vdEFkZFNlbGZBc0RlbGVnYXRlRGVwZW5kZW5jeQAjBCkBQ2FuIG5vdCBhZGQgYSBkZWxlZ2F0ZSBkZXBlbmRlbmN5IHRvIHRoZSBjb2RlIGhhc2ggb2YgdGhlIGNvbnRyYWN0IGl0c2VsZi5UT3V0T2ZUcmFuc2llbnRTdG9yYWdlACQErENhbiBub3QgYWRkIG1vcmUgZGF0YSB0byB0cmFuc2llbnQgc3RvcmFnZS44SW52YWxpZFN5c2NhbGwAJQRVAVRoZSBjb250cmFjdCB0cmllZCB0byBjYWxsIGEgc3lzY2FsbCB3aGljaCBkb2VzIG5vdCBleGlzdCAoYXQgaXRzIGN1cnJlbnQgYXBpIGxldmVsKS5MSW52YWxpZFN0b3JhZ2VGbGFncwAmBAUBSW52YWxpZCBzdG9yYWdlIGZsYWdzIHdlcmUgcGFzc2VkIHRvIG9uZSBvZiB0aGUgc3RvcmFnZSBzeXNjYWxscy48RXhlY3V0aW9uRmFpbGVkACcEKQFQb2xrYVZNIGZhaWxlZCBkdXJpbmcgY29kZSBleGVjdXRpb24uIFByb2JhYmx5IGR1ZSB0byBhIG1hbGZvcm1lZCBwcm9ncmFtLlxCYWxhbmNlQ29udmVyc2lvbkZhaWxlZAAoBJhGYWlsZWQgdG8gY29udmVydCBhIFUyNTYgdG8gYSBCYWxhbmNlLlhJbnZhbGlkSW1tdXRhYmxlQWNjZXNzACoIMQFJbW11dGFibGUgZGF0YSBjYW4gb25seSBiZSBzZXQgZHVyaW5nIGRlcGxveXMgYW5kIG9ubHkgYmUgcmVhZCBkdXJpbmcgY2FsbHMuNQFBZGRpdGlvbmFsbHksIGl0IGlzIG9ubHkgdmFsaWQgdG8gc2V0IHRoZSBkYXRhIG9uY2UgYW5kIGl0IG11c3Qgbm90IGJlIGVtcHR5LjxBY2NvdW50VW5tYXBwZWQAKwxRAUFuIGBBY2NvdW50SUQzMmAgYWNjb3VudCB0cmllZCB0byBpbnRlcmFjdCB3aXRoIHRoZSBwYWxsZXQgd2l0aG91dCBoYXZpbmcgYSBtYXBwaW5nLgApAUNhbGwgW2BQYWxsZXQ6Om1hcF9hY2NvdW50YF0gaW4gb3JkZXIgdG8gY3JlYXRlIGEgbWFwcGluZyBmb3IgdGhlIGFjY291bnQuUEFjY291bnRBbHJlYWR5TWFwcGVkACwEvFRyaWVkIHRvIG1hcCBhbiBhY2NvdW50IHRoYXQgaXMgYWxyZWFkeSBtYXBwZWQuZEludmFsaWRHZW5lcmljVHJhbnNhY3Rpb24ALQTYVGhlIHRyYW5zYWN0aW9uIHVzZWQgdG8gZHJ5LXJ1biBhIGNvbnRyYWN0IGlzIGludmFsaWQuXFJlZmNvdW50T3Zlck9yVW5kZXJmbG93AC4EyFRoZSByZWZjb3VudCBvZiBhIGNvZGUgZWl0aGVyIG92ZXIgb3IgdW5kZXJmbG93ZWQucFVuc3VwcG9ydGVkUHJlY29tcGlsZUFkZHJlc3MALwR8VW5zdXBwb3J0ZWQgcHJlY29tcGlsZSBhZGRyZXNzLkBDYWxsRGF0YVRvb0xhcmdlADAEwFRoZSBjYWxsZGF0YSBleGNlZWRzIFtgbGltaXRzOjpDQUxMREFUQV9CWVRFU2BdLkhSZXR1cm5EYXRhVG9vTGFyZ2UAMQTMVGhlIHJldHVybiBkYXRhIGV4Y2VlZHMgW2BsaW1pdHM6OkNBTExEQVRBX0JZVEVTYF0uLEludmFsaWRKdW1wADIEOQFJbnZhbGlkIGp1bXAgZGVzdGluYXRpb24uIER5bmFtaWMganVtcHMgcG9pbnRzIHRvIGludmFsaWQgbm90IGp1bXBkZXN0IG9wY29kZS44U3RhY2tVbmRlcmZsb3cAMwS4QXR0ZW1wdGluZyB0byBwb3AgYSB2YWx1ZSBmcm9tIGFuIGVtcHR5IHN0YWNrLjRTdGFja092ZXJmbG93ADQEtEF0dGVtcHRpbmcgdG8gcHVzaCBhIHZhbHVlIG9udG8gYSBmdWxsIHN0YWNrLjRUeEZlZU92ZXJkcmF3ADUMEQFUb28gbXVjaCBkZXBvc2l0IHdhcyBkcmF3biBmcm9tIHRoZSBzaGFyZWQgdHhmZWUgYW5kIGRlcG9zaXQgY3JlZGl0LgAxAVRoaXMgaGFwcGVucyBpZiB0aGUgcGFzc2VkIGBnYXNgIGluc2lkZSB0aGUgZXRoZXJldW0gdHJhbnNhY3Rpb24gaXMgdG9vIGxvdy5oRXZtQ29uc3RydWN0b3JOb25FbXB0eURhdGEANgzcV2hlbiBjYWxsaW5nIGFuIEVWTSBjb25zdHJ1Y3RvciBgZGF0YWAgaGFzIHRvIGJlIGVtcHR5LgBZAUVWTSBjb25zdHJ1Y3RvcnMgZG8gbm90IGFjY2VwdCBkYXRhLiBUaGVpciBpbnB1dCBkYXRhIGlzIHBhcnQgb2YgdGhlIGNvZGUgYmxvYiBpdHNlbGYuWEV2bUNvbnN0cnVjdGVkRnJvbUhhc2gANxDEVHJpZWQgdG8gY29uc3RydWN0IGFuIEVWTSBjb250cmFjdCB2aWEgY29kZSBoYXNoLgAhAUVWTSBjb250cmFjdHMgY2FuIG9ubHkgYmUgaW5zdGFudGlhdGVkIHZpYSBjb2RlIHVwbG9hZCBhcyBubyBpbml0Y29kZSBpc0BzdG9yZWQgb24tY2hhaW4ubFN0b3JhZ2VSZWZ1bmROb3RFbm91Z2hGdW5kcwA4DCEBVGhlIGNvbnRyYWN0IGRvZXMgbm90IGhhdmUgZW5vdWdoIGJhbGFuY2UgdG8gcmVmdW5kIHRoZSBzdG9yYWdlIGRlcG9zaXQuAD0BVGhpcyBpcyBhIGJ1ZyBhbmQgc2hvdWxkIG5ldmVyIGhhcHBlbi4gSXQgbWVhbnMgdGhlIGFjY291bnRpbmcgZ290IG91dCBvZiBzeW5jLkxTdG9yYWdlUmVmdW5kTG9ja2VkADkQXQFUaGlzIG1lYW5zIHRoZXJlIGFyZSBsb2NrcyBvbiB0aGUgY29udHJhY3RzIHN0b3JhZ2UgZGVwb3NpdCB0aGF0IHByZXZlbnRzIHJlZnVuZGluZyBpdC4APQFUaGlzIHdvdWxkIGJlIHRoZSBjYXNlIGlmIHRoZSBjb250cmFjdCB1c2VkIGl0cyBzdG9yYWdlIGRlcG9zaXRzIGZvciBnb3Zlcm5hbmNl9G9yIG90aGVyIHBhbGxldHMgdGhhdCBhbGxvdyBjcmVhdGluZyBsb2NrcyBvdmVyIGhlbGQgYmFsYW5jZS5gUHJlY29tcGlsZURlbGVnYXRlRGVuaWVkAEAQ/ENhbGxlZCBhIHByZS1jb21waWxlIHRoYXQgaXMgbm90IGFsbG93ZWQgdG8gYmUgZGVsZWdhdGUgY2FsbGVkLgAlAVNvbWUgcHJlLWNvbXBpbGUgZnVuY3Rpb25zIHdpbGwgdHJhcCB0aGUgY2FsbGVyIGNvbnRleHQgaWYgYmVpbmcgZGVsZWdhdGXQY2FsbGVkIG9yIGlmIHRoZWlyIGNhbGxlciB3YXMgYmVpbmcgZGVsZWdhdGUgY2FsbGVkLkxFY2RzYVJlY292ZXJ5RmFpbGVkAEEEPQFFQ0RTQSBwdWJsaWMga2V5IHJlY292ZXJ5IGZhaWxlZC4gTW9zdCBwcm9iYWJseSB3cm9uZyByZWNvdmVyeSBpZCBvciBzaWduYXR1cmUuSEF1dG9NYXBwaW5nRW5hYmxlZABCBOBNYW51YWwgbWFwcGluZyBpcyBkaXNhYmxlZCB3aGVuIGF1dG8tbWFwcGluZyBpcyBlbmFibGVkLlRQZW5kaW5nRGVwb3NpdENsZWFudXAAQwwRAUEgY29udHJhY3QgY2Fubm90IGJlIGNyZWF0ZWQgYXQgdGhpcyBhZGRyZXNzOiBpdCBzdGlsbCBoYXMgdW5jbGVhcmVkTQFbYE5hdGl2ZURlcG9zaXRPZmBdIGVudHJpZXMgZnJvbSBhIHByZXZpb3VzbHkgdGVybWluYXRlZCBjb250cmFjdCB0aGF0IHRoZSBkZWxldGlvbmhxdWV1ZSBoYXMgbm90IHlldCBkcmFpbmVkLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC59EAAABAg9Bz0HAIEQEGRwYWxsZXRfYXNzZXRzX3ByZWNvbXBpbGVzGHBlcm1pdBhwYWxsZXQURXJyb3IEBFQAASBASW52YWxpZFNpZ25hdHVyZQAABIBUaGUgcGVybWl0IHNpZ25hdHVyZSBpcyBpbnZhbGlkLjhTaWduZXJNaXNtYXRjaAABBJBUaGUgc2lnbmVyIGRvZXMgbm90IG1hdGNoIHRoZSBvd25lci40UGVybWl0RXhwaXJlZAACBKRUaGUgcGVybWl0IGhhcyBleHBpcmVkIChkZWFkbGluZSBwYXNzZWQpLlhTaWduYXR1cmVTVmFsdWVUb29IaWdoAAMEAQFUaGUgc2lnbmF0dXJlJ3MgYHNgIHZhbHVlIGlzIHRvbyBoaWdoIChtYWxsZWFiaWxpdHkgcHJvdGVjdGlvbikuNEludmFsaWRWVmFsdWUABASUVGhlIHNpZ25hdHVyZSdzIGB2YCB2YWx1ZSBpcyBpbnZhbGlkLjROb25jZU92ZXJmbG93AAUEzE5vbmNlIG92ZXJmbG93IC0gYWNjb3VudCBoYXMgdXNlZCB0b28gbWFueSBwZXJtaXRzLjBJbnZhbGlkT3duZXIABgTIVGhlIG93bmVyIGFkZHJlc3MgaXMgaW52YWxpZCAoZS5nLiwgemVybyBhZGRyZXNzKS44SW52YWxpZFNwZW5kZXIABwTQVGhlIHNwZW5kZXIgYWRkcmVzcyBpcyBpbnZhbGlkIChlLmcuLCB6ZXJvIGFkZHJlc3MpLgSIRXJyb3IgdHlwZXMgZm9yIHRoZSBwZXJtaXQgcGFsbGV0LoUQDGhpbmRpdl9wYWxsZXRfZG90bnNfZ2F0ZXdheRR0eXBlc0hSZWdpc3RyYXRpb25SZWNvcmQEBFQAAAgBKGNvbGxlY3Rpb26JEAEoQ29sbGVjdGlvbgABHGFjY291bnQEATBUOjpBY2NvdW50SWQAAIkQDGhpbmRpdl9wYWxsZXRfZG90bnNfZ2F0ZXdheRR0eXBlcyhDb2xsZWN0aW9uAAEIGFBlb3BsZQAAAChQZW9wbGVMaXRlAAEAAI0QDGhpbmRpdl9wYWxsZXRfZG90bnNfZ2F0ZXdheRhwYWxsZXQURXJyb3IEBFQAAShEQWxyZWFkeVJlZ2lzdGVyZWQAAASgVGhlIGFsaWFzIGhhcyBhbHJlYWR5IHJlZ2lzdGVyZWQgYSBuYW1lLkhDb250cmFjdENhbGxGYWlsZWQAAQj8VGhlIGNvbnRyYWN0IGNhbGwgZmFpbGVkIChub24tcmV2ZXJ0OiBvdXQtb2YtZ2FzLCBsb3ctbGV2ZWwsIG9yUHVuZGVjb2RhYmxlIHJldmVydCkuOENvbnRyYWN0UmV2ZXJ0BACREAFARGlzcGF0Y2hlclJldmVydAACCBEBQ29udHJhY3QgcmV2ZXJ0ZWQgd2l0aCBhIHR5cGVkIGVycm9yIGZyb20gYFJvb3RHYXRld2F5RGlzcGF0Y2hlcmAgb3KgdGhlIGBEb3Ruc1BvcENvbnRyb2xsZXJgIGl0IGZvcndhcmRzIHRvLixJbnZhbGlkTmFtZQADCPRUaGUgbmFtZSBpcyBpbnZhbGlkIChlbXB0eSBvciB0b28gbG9uZywgb3IgZG9lcyBub3QgbWF0Y2ggdGhlgHJlcXVpcmVkIEROUy9saXRlLWxhYmVsIGZvcm1hdCkuWE5vQXR0ZXN0YXRpb25BbGxvd2FuY2UABATQVGhlIGF0dGVzdGVyIGhhcyBubyBhdHRlc3RhdGlvbiBhbGxvd2FuY2UgcmVtYWluaW5nLmxJbnZhbGlkQXR0ZXN0YXRpb25TaWduYXR1cmUABQSUVGhlIGNhbmRpZGF0ZSdzIHNpZ25hdHVyZSBpcyBpbnZhbGlkLmxSZXNlcnZhdGlvblNpZ25hdHVyZUV4cGlyZWQABgQdAVRoZSByZXNlcnZhdGlvbiBzaWduYXR1cmUgaXMgb2xkZXIgdGhhbiBbYENvbmZpZzo6TWF4VmFsaWRpdHlTZWNvbmRzYF0ueFJlc2VydmF0aW9uU2lnbmF0dXJlRnJvbUZ1dHVyZQAHCPxUaGUgcmVzZXJ2YXRpb24gc2lnbmF0dXJlIGNsYWltcyB0byBoYXZlIGJlZW4gY3JlYXRlZCBtb3JlIHRoYW7MW2BDb25maWc6Ok1heFZhbGlkaXR5U2Vjb25kc2BdIGFoZWFkIG9mIGNoYWluIHRpbWUuRE5vdExpdGVMYWJlbE93bmVyAAgICQFUaGUgYExpbms6OkxpdGVVc2VybmFtZWAgdGFyZ2V0IGlzIG5vdCBvd25lZCBieSB0aGUgY2FsbGVyIChvciBoYXN4bm8gb24tY2hhaW4gb3duZXJzaGlwIHJlY29yZCkuXERpc3BhdGNoZXJBZGRyZXNzTm90U2V0AAkE+FRoZSBgUm9vdEdhdGV3YXlEaXNwYXRjaGVyYCBjb250cmFjdCBhZGRyZXNzIGhhcyBub3QgYmVlbiBzZXQuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LpEQDGhpbmRpdl9wYWxsZXRfZG90bnNfZ2F0ZXdheRR0eXBlc0BEaXNwYXRjaGVyUmV2ZXJ0AAEgHE5vdFJvb3QAAAAoTm90R2F0ZXdheQABAEBJbnZhbGlkTGl0ZUxhYmVsAAIAQEludmFsaWRCYXNlTGFiZWwAAwBMTm9BY3RpdmVSZXNlcnZhdGlvbgAEACRRdWV1ZUZ1bGwABQA8QWxyZWFkeVJlc2VydmVkAAYAJE5vdEhvbGRlcgAHAACVEAx8aW5kaXZfcGFsbGV0X29yaWdpbl9yZXN0cmljdGlvbhhwYWxsZXQUVXNhZ2UIHEJhbGFuY2UBWQEsQmxvY2tOdW1iZXIBOAAIARB1c2VkWQEBHEJhbGFuY2UAASBhdF9ibG9jazgBLEJsb2NrTnVtYmVyAACZEAx8aW5kaXZfcGFsbGV0X29yaWdpbl9yZXN0cmljdGlvbhhwYWxsZXQURXJyb3IEBFQAAQgcTm9Vc2FnZQAABIBUaGUgb3JpZ2luIGhhcyBubyB1c2FnZSB0cmFja2VkLhxOb3RaZXJvAAEEWFRoZSB1c2FnZSBpcyBub3QgemVyby4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQunRAMLHBhbGxldF9zdWRvGHBhbGxldBRFcnJvcgQEVAABBCxSZXF1aXJlU3VkbwAABIBTZW5kZXIgbXVzdCBiZSB0aGUgU3VkbyBhY2NvdW50LgRoRXJyb3IgZm9yIHRoZSBTdWRvIHBhbGxldC6hEAAABAw4oAQApRAMNHBhbGxldF9haF9vcHMYcGFsbGV0FEVycm9yBARUAAE8OE5vTGVhc2VSZXNlcnZlAAAEuEVpdGhlciBubyBsZWFzZSBkZXBvc2l0IG9yIGFscmVhZHkgdW5yZXNlcnZlZC5cTm9Dcm93ZGxvYW5Db250cmlidXRpb24AAQTYRWl0aGVyIG5vIGNyb3dkbG9hbiBjb250cmlidXRpb24gb3IgYWxyZWFkeSB3aXRoZHJhd24uSE5vQ3Jvd2Rsb2FuUmVzZXJ2ZQACBMhFaXRoZXIgbm8gY3Jvd2Rsb2FuIHJlc2VydmUgb3IgYWxyZWFkeSB1bnJlc2VydmVkLpRGYWlsZWRUb1dpdGhkcmF3Q3Jvd2Rsb2FuQ29udHJpYnV0aW9uAAMEqEZhaWxlZCB0byB3aXRoZHJhdyBjcm93ZGxvYW4gY29udHJpYnV0aW9uLhhOb3RZZXQABASAQmxvY2sgbnVtYmVyIGlzIG5vdCB5ZXQgcmVhY2hlZC5YQ29udHJpYnV0aW9uc1JlbWFpbmluZwAFBJBOb3QgYWxsIGNvbnRyaWJ1dGlvbnMgYXJlIHdpdGhkcmF3bi5cV3JvbmdEZXJpdmVkVHJhbnNsYXRpb24ABgSUVGhlIGFjY291bnQgaXMgbm90IGEgZGVyaXZlZCBhY2NvdW50LjBOb3RTb3ZlcmVpZ24ABwQlAUFjY291bnQgY2Fubm90IGJlIG1pZ3JhdGVkIHNpbmNlIGl0IGlzIG5vdCBhIHNvdmVyZWlnbiBwYXJhY2hhaW4gYWNjb3VudC40SW50ZXJuYWxFcnJvcgAIBIhJbnRlcm5hbCBlcnJvciwgcGxlYXNlIGJ1ZyByZXBvcnQuVE1pZ3JhdGlvbk5vdENvbXBsZXRlZAAJBKRUaGUgQXNzZXQgSHViIG1pZ3JhdGlvbiBpcyBub3QgY29tcGxldGVkLixaZXJvQmFsYW5jZQAKBFBUaGUgYmFsYW5jZSBpcyB6ZXJvLkBGYWlsZWRUb1RyYW5zZmVyAAsEbEZhaWxlZCB0byB0cmFuc2ZlciBiYWxhbmNlLkRBbHJlYWR5VHJhbnNsYXRlZAAMBKBUaGUgYWNjb3VudCBoYXMgYWxyZWFkeSBiZWVuIHRyYW5zbGF0ZWQuVFRvb0xvbmdEZXJpdmF0aW9uUGF0aAANBIBUaGUgZGVyaXZhdGlvbiBwYXRoIGlzIHRvbyBsb25nLlBGYWlsZWRUb0ZvcmNlVW5zdGFrZQAOBGBGYWlsZWQgdG8gZm9yY2UgdW5zdGFrZS4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuqRAISHNwX2NvbnNlbnN1c19zbG90czBTbG90RHVyYXRpb24AAAQAKAEMdTY0AACtEBAoc3BfcnVudGltZRxnZW5lcmljFGJsb2NrJExhenlCbG9jawgYSGVhZGVyAWAkRXh0cmluc2ljAQ0KAAgBGGhlYWRlcmABGEhlYWRlcgABKGV4dHJpbnNpY3OxEAFQVmVjPE9wYXF1ZUV4dHJpbnNpYz4AALEQAAACtRAAtRAIKHNwX3J1bnRpbWU8T3BhcXVlRXh0cmluc2ljAAAEABgBHFZlYzx1OD4AALkQCChzcF9ydW50aW1lWEV4dHJpbnNpY0luY2x1c2lvbk1vZGUAAQg0QWxsRXh0cmluc2ljcwAAADRPbmx5SW5oZXJlbnRzAAEAAL0QCBxzcF9jb3JlOE9wYXF1ZU1ldGFkYXRhAAAEABgBHFZlYzx1OD4AAMEQBBhPcHRpb24EBFQBvRABCBBOb25lAAAAEFNvbWUEAL0QAAABAADFEAQYUmVzdWx0CARUAS0IBEUByRABCAhPawQALQgAAAAADEVycgQAyRAAAAEAAMkQDChzcF9ydW50aW1lUHRyYW5zYWN0aW9uX3ZhbGlkaXR5YFRyYW5zYWN0aW9uVmFsaWRpdHlFcnJvcgABCBxJbnZhbGlkBADNEAFISW52YWxpZFRyYW5zYWN0aW9uAAAAHFVua25vd24EANEQAUhVbmtub3duVHJhbnNhY3Rpb24AAQAAzRAMKHNwX3J1bnRpbWVQdHJhbnNhY3Rpb25fdmFsaWRpdHlISW52YWxpZFRyYW5zYWN0aW9uAAE0EENhbGwAAAAcUGF5bWVudAABABhGdXR1cmUAAgAUU3RhbGUAAwAgQmFkUHJvb2YABABEQW5jaWVudEJpcnRoQmxvY2sABQBERXhoYXVzdHNSZXNvdXJjZXMABgAYQ3VzdG9tBAAMAQh1OAAHADBCYWRNYW5kYXRvcnkACABMTWFuZGF0b3J5VmFsaWRhdGlvbgAJACRCYWRTaWduZXIACgBUSW5kZXRlcm1pbmF0ZUltcGxpY2l0AAsANFVua25vd25PcmlnaW4ADAAA0RAMKHNwX3J1bnRpbWVQdHJhbnNhY3Rpb25fdmFsaWRpdHlIVW5rbm93blRyYW5zYWN0aW9uAAEMMENhbm5vdExvb2t1cAAAAExOb1Vuc2lnbmVkVmFsaWRhdG9yAAEAGEN1c3RvbQQADAEIdTgAAgAA1RAIMHNwX2luaGVyZW50czBJbmhlcmVudERhdGEAAAQBEGRhdGHZEAGUQlRyZWVNYXA8SW5oZXJlbnRJZGVudGlmaWVyLCBWZWM8dTg+PgAA2RAEIEJUcmVlTWFwCARLAXkCBFYBGAAEAN0QAAAA3RAAAALhEADhEAAABAh5AhgA5RAIMHNwX2luaGVyZW50c1BDaGVja0luaGVyZW50c1Jlc3VsdAAADAEQb2theV0BARBib29sAAEsZmF0YWxfZXJyb3JdAQEQYm9vbAABGGVycm9yc9UQATBJbmhlcmVudERhdGEAAOkQDChzcF9ydW50aW1lUHRyYW5zYWN0aW9uX3ZhbGlkaXR5RFRyYW5zYWN0aW9uU291cmNlAAEMHEluQmxvY2sAAAAUTG9jYWwAAQAgRXh0ZXJuYWwAAgAA7RAEGFJlc3VsdAgEVAHxEARFAckQAQgIT2sEAPEQAAAAAAxFcnIEAMkQAAABAADxEAwoc3BfcnVudGltZVB0cmFuc2FjdGlvbl92YWxpZGl0eUBWYWxpZFRyYW5zYWN0aW9uAAAUASBwcmlvcml0eSgBTFRyYW5zYWN0aW9uUHJpb3JpdHkAASByZXF1aXJlczQBTFZlYzxUcmFuc2FjdGlvblRhZz4AASBwcm92aWRlczQBTFZlYzxUcmFuc2FjdGlvblRhZz4AASRsb25nZXZpdHkoAVBUcmFuc2FjdGlvbkxvbmdldml0eQABJHByb3BhZ2F0ZV0BARBib29sAAD1EAwoc3Bfc2Vzc2lvbixydW50aW1lX2FwaWhPcGFxdWVHZW5lcmF0ZWRTZXNzaW9uS2V5cwAACAEQa2V5cxgBHFZlYzx1OD4AARRwcm9vZhgBHFZlYzx1OD4AAPkQBBhPcHRpb24EBFQB/RABCBBOb25lAAAAEFNvbWUEAP0QAAABAAD9EAAAAgERAAERAAAECBiNCwAFEQw0ZnJhbWVfc3VwcG9ydDh2aWV3X2Z1bmN0aW9uczhWaWV3RnVuY3Rpb25JZAAACAEYcHJlZml4fQIBIFt1ODsgMTZdAAEYc3VmZml4fQIBIFt1ODsgMTZdAAAJEQQYUmVzdWx0CARUARgERQENEQEICE9rBAAYAAAAAAxFcnIEAA0RAAABAAANEQw0ZnJhbWVfc3VwcG9ydDh2aWV3X2Z1bmN0aW9uc2RWaWV3RnVuY3Rpb25EaXNwYXRjaEVycm9yAAEMOE5vdEltcGxlbWVudGVkAAAAIE5vdEZvdW5kBAAFEQE4Vmlld0Z1bmN0aW9uSWQAAQAUQ29kZWMAAgAAEREMaHBhbGxldF90cmFuc2FjdGlvbl9wYXltZW50FHR5cGVzTFJ1bnRpbWVEaXNwYXRjaEluZm8IHEJhbGFuY2UBWQEYV2VpZ2h0ARUBAAwBGHdlaWdodBUBARhXZWlnaHQAARRjbGFzcwEIATREaXNwYXRjaENsYXNzAAEscGFydGlhbF9mZWVZAQEcQmFsYW5jZQAAFREMaHBhbGxldF90cmFuc2FjdGlvbl9wYXltZW50FHR5cGVzKEZlZURldGFpbHMEHEJhbGFuY2UBWQEACAE0aW5jbHVzaW9uX2ZlZRkRAXRPcHRpb248SW5jbHVzaW9uRmVlPEJhbGFuY2U+PgABDHRpcFkBARxCYWxhbmNlAAAZEQQYT3B0aW9uBARUAR0RAQgQTm9uZQAAABBTb21lBAAdEQAAAQAAHREMaHBhbGxldF90cmFuc2FjdGlvbl9wYXltZW50FHR5cGVzMEluY2x1c2lvbkZlZQQcQmFsYW5jZQFZAQAMASBiYXNlX2ZlZVkBARxCYWxhbmNlAAEcbGVuX2ZlZVkBARxCYWxhbmNlAAFMYWRqdXN0ZWRfd2VpZ2h0X2ZlZVkBARxCYWxhbmNlAAAhEQQYUmVzdWx0CARUASURBEUBKREBCAhPawQAJREAAAAADEVycgQAKREAAAEAACURAAACwQMAKREMQHhjbV9ydW50aW1lX2FwaXMQZmVlcxRFcnJvcgABGDRVbmltcGxlbWVudGVkAAAAZFZlcnNpb25lZENvbnZlcnNpb25GYWlsZWQAAQBMV2VpZ2h0Tm90Q29tcHV0YWJsZQACAExVbmhhbmRsZWRYY21WZXJzaW9uAAMANEFzc2V0Tm90Rm91bmQABAAoVW5yb3V0YWJsZQAFAAAtEQQYUmVzdWx0CARUARUBBEUBKREBCAhPawQAFQEAAAAADEVycgQAKREAAAEAADERBBhSZXN1bHQIBFQBWQEERQEpEQEICE9rBABZAQAAAAAMRXJyBAApEQAAAQAANREEGFJlc3VsdAgEVAGNAwRFASkRAQgIT2sEAI0DAAAAAAxFcnIEACkRAAABAAA5EQQYUmVzdWx0CARUAT0RBEUBVREBCAhPawQAPREAAAAADEVycgQAVREAAAEAAD0RDEB4Y21fcnVudGltZV9hcGlzHGRyeV9ydW5EQ2FsbERyeVJ1bkVmZmVjdHMEFEV2ZW50AfUHABABQGV4ZWN1dGlvbl9yZXN1bHQ5CQFoRGlzcGF0Y2hSZXN1bHRXaXRoUG9zdEluZm8AAThlbWl0dGVkX2V2ZW50c0ERAShWZWM8RXZlbnQ+AAEkbG9jYWxfeGNtRREBYE9wdGlvbjxWZXJzaW9uZWRYY208KCk+PgABOGZvcndhcmRlZF94Y21zSREBvFZlYzwoVmVyc2lvbmVkTG9jYXRpb24sIFZlYzxWZXJzaW9uZWRYY208KCk+Pik+AABBEQAAAvUHAEURBBhPcHRpb24EBFQBUQIBCBBOb25lAAAAEFNvbWUEAFECAAABAABJEQAAAk0RAE0RAAAECMkBUREAUREAAAJRAgBVEQxAeGNtX3J1bnRpbWVfYXBpcxxkcnlfcnVuFEVycm9yAAEINFVuaW1wbGVtZW50ZWQAAABkVmVyc2lvbmVkQ29udmVyc2lvbkZhaWxlZAABAABZEQQYUmVzdWx0CARUAV0RBEUBVREBCAhPawQAXREAAAAADEVycgQAVREAAAEAAF0RDEB4Y21fcnVudGltZV9hcGlzHGRyeV9ydW5AWGNtRHJ5UnVuRWZmZWN0cwQURXZlbnQB9QcADAFAZXhlY3V0aW9uX3Jlc3VsdL0IARxPdXRjb21lAAE4ZW1pdHRlZF9ldmVudHNBEQEoVmVjPEV2ZW50PgABOGZvcndhcmRlZF94Y21zSREBvFZlYzwoVmVyc2lvbmVkTG9jYXRpb24sIFZlYzxWZXJzaW9uZWRYY208KCk+Pik+AABhEQQYUmVzdWx0CARUAQQERQFlEQEICE9rBAAEAAAAAAxFcnIEAGURAAABAABlEQxAeGNtX3J1bnRpbWVfYXBpcyxjb252ZXJzaW9ucxRFcnJvcgABCCxVbnN1cHBvcnRlZAAAAGRWZXJzaW9uZWRDb252ZXJzaW9uRmFpbGVkAAEAAGkRCAx4Y204VmVyc2lvbmVkQXNzZXQAAQwIVjMEAGkCATh2Mzo6TXVsdGlBc3NldAADAAhWNAQA3QIBJHY0OjpBc3NldAAEAAhWNQQAKQMBJHY1OjpBc3NldAAFAABtEQQYUmVzdWx0CARUAV0BBEUBcREBCAhPawQAXQEAAAAADEVycgQAcREAAAEAAHERDEB4Y21fcnVudGltZV9hcGlzNHRydXN0ZWRfcXVlcnkURXJyb3IAAQh4VmVyc2lvbmVkQXNzZXRDb252ZXJzaW9uRmFpbGVkAAAAhFZlcnNpb25lZExvY2F0aW9uQ29udmVyc2lvbkZhaWxlZAABAAB1EQQYUmVzdWx0CARUATEMBEUBeREBCAhPawQAMQwAAAAADEVycgQAeREAAAEAAHkRDEB4Y21fcnVudGltZV9hcGlzSGF1dGhvcml6ZWRfYWxpYXNlcxRFcnJvcgABBHxMb2NhdGlvblZlcnNpb25Db252ZXJzaW9uRmFpbGVkAAAAAH0RBBhSZXN1bHQIBFQBXQEERQF5EQEICE9rBABdAQAAAAAMRXJyBAB5EQAAAQAAgREEGFJlc3VsdAgEVAGNAwRFAYURAQgIT2sEAI0DAAAAAAxFcnIEAIURAAABAACFEQw0YXNzZXRzX2NvbW1vbixydW50aW1lX2FwaVBGdW5naWJsZXNBY2Nlc3NFcnJvcgABCFxBc3NldElkQ29udmVyc2lvbkZhaWxlZAAAAHxBbW91bnRUb0JhbGFuY2VDb252ZXJzaW9uRmFpbGVkAAEAAIkRCFxjdW11bHVzX3ByaW1pdGl2ZXNfY29yZTRDb2xsYXRpb25JbmZvAAAYATx1cHdhcmRfbWVzc2FnZXM0AUhWZWM8VXB3YXJkTWVzc2FnZT4AAUxob3Jpem9udGFsX21lc3NhZ2VziQoBYFZlYzxPdXRib3VuZEhybXBNZXNzYWdlPgABTG5ld192YWxpZGF0aW9uX2NvZGWNEQGMT3B0aW9uPHJlbGF5X2NoYWluOjpWYWxpZGF0aW9uQ29kZT4AAWxwcm9jZXNzZWRfZG93bndhcmRfbWVzc2FnZXM4AQx1MzIAAThocm1wX3dhdGVybWFyazgBYHJlbGF5X2NoYWluOjpCbG9ja051bWJlcgABJGhlYWRfZGF0YVABIEhlYWREYXRhAACNEQQYT3B0aW9uBARUAZERAQgQTm9uZQAAABBTb21lBACREQAAAQAAkREMdHBvbGthZG90X3BhcmFjaGFpbl9wcmltaXRpdmVzKHByaW1pdGl2ZXM4VmFsaWRhdGlvbkNvZGUAAAQAGAEcVmVjPHU4PgAAlREEGFJlc3VsdAgEVAEQBEUB1QkBCAhPawQAEAAAAAAMRXJyBADVCQAAAQAAmREEGE9wdGlvbgQEVAHVCQEIEE5vbmUAAAAQU29tZQQA1QkAAAEAAJ0RAAAC1QkAoREEGE9wdGlvbgQEVAGBDQEIEE5vbmUAAAAQU29tZQQAgQ0AAAEAAKURDGBzeXN0ZW1fcGFyYWNoYWluc19jb21tb24QYXBpczRJbmZsYXRpb25JbmZvAAAIASBpc3N1YW5jZakRAVxzcF9ydW50aW1lOjpQZXJxdWludGlsbAABJG5leHRfbWludIENAfAocG9sa2Fkb3RfcHJpbWl0aXZlczo6QmFsYW5jZSwgcG9sa2Fkb3RfcHJpbWl0aXZlczo6QmFsYW5jZSkAAKkRDDRzcF9hcml0aG1ldGljKHBlcl90aGluZ3MsUGVycXVpbnRpbGwAAAQAKAEMdTY0AACtEQw0cGFsbGV0X3Jldml2ZShwcmltaXRpdmVzOENvbnRyYWN0UmVzdWx0CARSAbERHEJhbGFuY2UBWQEAGAE8d2VpZ2h0X2NvbnN1bWVkFQEBGFdlaWdodAABPHdlaWdodF9yZXF1aXJlZBUBARhXZWlnaHQAATxzdG9yYWdlX2RlcG9zaXS5EQFcU3RvcmFnZURlcG9zaXQ8QmFsYW5jZT4AAUxtYXhfc3RvcmFnZV9kZXBvc2l0uREBXFN0b3JhZ2VEZXBvc2l0PEJhbGFuY2U+AAEwZ2FzX2NvbnN1bWVkWQEBHEJhbGFuY2UAARhyZXN1bHS9EQFgUmVzdWx0PFIsIERpc3BhdGNoRXJyb3I+AACxEQw0cGFsbGV0X3Jldml2ZShwcmltaXRpdmVzPEV4ZWNSZXR1cm5WYWx1ZQAACAEUZmxhZ3O1EQEsUmV0dXJuRmxhZ3MAARBkYXRhGAEcVmVjPHU4PgAAtREMSHBhbGxldF9yZXZpdmVfdWFwaRRmbGFncyxSZXR1cm5GbGFncwAABAEQYml0czgBDHUzMgAAuREMNHBhbGxldF9yZXZpdmUocHJpbWl0aXZlczhTdG9yYWdlRGVwb3NpdAQcQmFsYW5jZQFZAQEIGFJlZnVuZAQAWQEBHEJhbGFuY2UAAAAYQ2hhcmdlBABZAQEcQmFsYW5jZQABAAC9EQQYUmVzdWx0CARUAbERBEUBCQgBCAhPawQAsREAAAAADEVycgQACQgAAAEAAMERDDRwYWxsZXRfcmV2aXZlKHByaW1pdGl2ZXMQQ29kZQABCBhVcGxvYWQEABgBHFZlYzx1OD4AAAAgRXhpc3RpbmcEAEABNHNwX2NvcmU6OkgyNTYAAQAAxREMNHBhbGxldF9yZXZpdmUocHJpbWl0aXZlczhDb250cmFjdFJlc3VsdAgEUgHJERxCYWxhbmNlAVkBABgBPHdlaWdodF9jb25zdW1lZBUBARhXZWlnaHQAATx3ZWlnaHRfcmVxdWlyZWQVAQEYV2VpZ2h0AAE8c3RvcmFnZV9kZXBvc2l0uREBXFN0b3JhZ2VEZXBvc2l0PEJhbGFuY2U+AAFMbWF4X3N0b3JhZ2VfZGVwb3NpdLkRAVxTdG9yYWdlRGVwb3NpdDxCYWxhbmNlPgABMGdhc19jb25zdW1lZFkBARxCYWxhbmNlAAEYcmVzdWx0zREBYFJlc3VsdDxSLCBEaXNwYXRjaEVycm9yPgAAyREMNHBhbGxldF9yZXZpdmUocHJpbWl0aXZlc1hJbnN0YW50aWF0ZVJldHVyblZhbHVlAAAIARhyZXN1bHSxEQE8RXhlY1JldHVyblZhbHVlAAEQYWRkcj0HARBIMTYwAADNEQQYUmVzdWx0CARUAckRBEUBCQgBCAhPawQAyREAAAAADEVycgQACQgAAAEAANERFDRwYWxsZXRfcmV2aXZlDGV2bQxhcGk0cnBjX3R5cGVzX2dlbkhHZW5lcmljVHJhbnNhY3Rpb24AAEABLGFjY2Vzc19saXN01REBSE9wdGlvbjxBY2Nlc3NMaXN0PgABSGF1dGhvcml6YXRpb25fbGlzdC0QAWxWZWM8QXV0aG9yaXphdGlvbkxpc3RFbnRyeT4AAVRibG9iX3ZlcnNpb25lZF9oYXNoZXPEASRWZWM8SDI1Nj4AARRibG9ic9kRAShWZWM8Qnl0ZXM+AAEgY2hhaW5faWQJEAEwT3B0aW9uPFUyNTY+AAEQZnJvbUUQATxPcHRpb248QWRkcmVzcz4AAQxnYXMJEAEwT3B0aW9uPFUyNTY+AAEkZ2FzX3ByaWNlCRABME9wdGlvbjxVMjU2PgABFGlucHV03REBLElucHV0T3JEYXRhAAFQbWF4X2ZlZV9wZXJfYmxvYl9nYXMJEAEwT3B0aW9uPFUyNTY+AAE8bWF4X2ZlZV9wZXJfZ2FzCRABME9wdGlvbjxVMjU2PgABYG1heF9wcmlvcml0eV9mZWVfcGVyX2dhcwkQATBPcHRpb248VTI1Nj4AARRub25jZQkQATBPcHRpb248VTI1Nj4AAQh0b0UQATxPcHRpb248QWRkcmVzcz4AARhyI3R5cGXlEQEwT3B0aW9uPEJ5dGU+AAEUdmFsdWUJEAEwT3B0aW9uPFUyNTY+AADVEQQYT3B0aW9uBARUASUQAQgQTm9uZQAAABBTb21lBAAlEAAAAQAA2REAAAL5DwDdERQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpNHJwY190eXBlc19nZW4sSW5wdXRPckRhdGEAAAgBFGlucHV04REBNE9wdGlvbjxCeXRlcz4AARBkYXRh4REBNE9wdGlvbjxCeXRlcz4AAOERBBhPcHRpb24EBFQB+Q8BCBBOb25lAAAAEFNvbWUEAPkPAAABAADlEQQYT3B0aW9uBARUAekRAQgQTm9uZQAAABBTb21lBADpEQAAAQAA6REUNHBhbGxldF9yZXZpdmUMZXZtDGFwaRBieXRlEEJ5dGUAAAQADAEIdTgAAO0RBBhSZXN1bHQIBFQB8REERQH1EQEICE9rBADxEQAAAAAMRXJyBAD1EQAAAQAA8REMNHBhbGxldF9yZXZpdmUocHJpbWl0aXZlczxFdGhUcmFuc2FjdEluZm8EHEJhbGFuY2UBWQEAFAE8d2VpZ2h0X3JlcXVpcmVkFQEBGFdlaWdodAABPHN0b3JhZ2VfZGVwb3NpdFkBARxCYWxhbmNlAAFMbWF4X3N0b3JhZ2VfZGVwb3NpdFkBARxCYWxhbmNlAAEcZXRoX2dhc0UHARBVMjU2AAEQZGF0YRgBHFZlYzx1OD4AAPURDDRwYWxsZXRfcmV2aXZlKHByaW1pdGl2ZXNARXRoVHJhbnNhY3RFcnJvcgABCBBEYXRhBAAYARxWZWM8dTg+AAAAHE1lc3NhZ2UEANUJARhTdHJpbmcAAQAA+REUNHBhbGxldF9yZXZpdmUMZXZtDGFwaSRycGNfdHlwZXMwRHJ5UnVuQ29uZmlnBBhNb21lbnQBKAAMAUh0aW1lc3RhbXBfb3ZlcnJpZGUBAQE4T3B0aW9uPE1vbWVudD4AAVhwZXJmb3JtX2JhbGFuY2VfY2hlY2tz/REBME9wdGlvbjxib29sPgABPHN0YXRlX292ZXJyaWRlcwESAWBPcHRpb248U3RhdGVPdmVycmlkZVNldD4AAP0RBBhPcHRpb24EBFQBXQEBCBBOb25lAAAAEFNvbWUEAF0BAAABAAABEgQYT3B0aW9uBARUAQUSAQgQTm9uZQAAABBTb21lBAAFEgAAAQAABRIUNHBhbGxldF9yZXZpdmUMZXZtDGFwaTRycGNfdHlwZXNfZ2VuQFN0YXRlT3ZlcnJpZGVTZXQAAAQACRIBgEJUcmVlTWFwPEFkZHJlc3MsIFN0YXRlT3ZlcnJpZGU+AAAJEgQgQlRyZWVNYXAIBEsBPQcEVgENEgAEACUSAAAADRIUNHBhbGxldF9yZXZpdmUMZXZtDGFwaTRycGNfdHlwZXNfZ2VuNFN0YXRlT3ZlcnJpZGUAABQBHGJhbGFuY2UJEAEwT3B0aW9uPFUyNTY+AAEUbm9uY2UJEAEwT3B0aW9uPFUyNTY+AAEQY29kZeERATRPcHRpb248Qnl0ZXM+AAEcc3RvcmFnZRESAVxPcHRpb248U3RvcmFnZU92ZXJyaWRlPgABaG1vdmVfcHJlY29tcGlsZV90b19hZGRyZXNzRRABPE9wdGlvbjxBZGRyZXNzPgAAERIEGE9wdGlvbgQEVAEVEgEIEE5vbmUAAAAQU29tZQQAFRIAAAEAABUSFDRwYWxsZXRfcmV2aXZlDGV2bQxhcGk0cnBjX3R5cGVzX2dlbjxTdG9yYWdlT3ZlcnJpZGUAAQgUU3RhdGUEABkSAVBCVHJlZU1hcDxIMjU2LCBIMjU2PgAAACRTdGF0ZURpZmYEABkSAVBCVHJlZU1hcDxIMjU2LCBIMjU2PgABAAAZEgQgQlRyZWVNYXAIBEsBQARWAUAABAAdEgAAAB0SAAACIRIAIRIAAAQIQEAAJRIAAAIpEgApEgAABAg9Bw0SAC0SBBhSZXN1bHQIBFQBRQcERQH1EQEICE9rBABFBwAAAAAMRXJyBAD1EQAAAQAAMRIEGFJlc3VsdAgEVAEVAQRFAfURAQgIT2sEABUBAAAAAAxFcnIEAPURAAABAAA1EgQYUmVzdWx0CARUATkSBEUBCQgBCAhPawQAORIAAAAADEVycgQACQgAAAEAADkSDDRwYWxsZXRfcmV2aXZlKHByaW1pdGl2ZXNUQ29kZVVwbG9hZFJldHVyblZhbHVlBBxCYWxhbmNlAVkBAAgBJGNvZGVfaGFzaEABNHNwX2NvcmU6OkgyNTYAARxkZXBvc2l0WQEBHEJhbGFuY2UAAD0SBBhSZXN1bHQIBFQBTQEERQFBEgEICE9rBABNAQAAAAAMRXJyBABBEgAAAQAAQRIMNHBhbGxldF9yZXZpdmUocHJpbWl0aXZlc0xDb250cmFjdEFjY2Vzc0Vycm9yAAEMLERvZXNudEV4aXN0AAAAREtleURlY29kaW5nRmFpbGVkAAEASFN0b3JhZ2VXcml0ZUZhaWxlZAQACQgBNERpc3BhdGNoRXJyb3IAAgAARRIUNHBhbGxldF9yZXZpdmUMZXZtDGFwaTxkZWJ1Z19ycGNfdHlwZXMoVHJhY2VyVHlwZQABDChDYWxsVHJhY2VyBABJEgFgT3B0aW9uPENhbGxUcmFjZXJDb25maWc+AAAAOFByZXN0YXRlVHJhY2VyBABREgFwT3B0aW9uPFByZXN0YXRlVHJhY2VyQ29uZmlnPgABADxFeGVjdXRpb25UcmFjZXIEAFkSAXRPcHRpb248RXhlY3V0aW9uVHJhY2VyQ29uZmlnPgACAABJEgQYT3B0aW9uBARUAU0SAQgQTm9uZQAAABBTb21lBABNEgAAAQAATRIUNHBhbGxldF9yZXZpdmUMZXZtDGFwaTxkZWJ1Z19ycGNfdHlwZXNAQ2FsbFRyYWNlckNvbmZpZwAACAEkd2l0aF9sb2dzXQEBEGJvb2wAATRvbmx5X3RvcF9jYWxsXQEBEGJvb2wAAFESBBhPcHRpb24EBFQBVRIBCBBOb25lAAAAEFNvbWUEAFUSAAABAABVEhQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpPGRlYnVnX3JwY190eXBlc1BQcmVzdGF0ZVRyYWNlckNvbmZpZwAADAEkZGlmZl9tb2RlXQEBEGJvb2wAATxkaXNhYmxlX3N0b3JhZ2VdAQEQYm9vbAABMGRpc2FibGVfY29kZV0BARBib29sAABZEgQYT3B0aW9uBARUAV0SAQgQTm9uZQAAABBTb21lBABdEgAAAQAAXRIUNHBhbGxldF9yZXZpdmUMZXZtDGFwaTxkZWJ1Z19ycGNfdHlwZXNURXhlY3V0aW9uVHJhY2VyQ29uZmlnAAAcATRlbmFibGVfbWVtb3J5XQEBEGJvb2wAATRkaXNhYmxlX3N0YWNrXQEBEGJvb2wAATxkaXNhYmxlX3N0b3JhZ2VdAQEQYm9vbAABSGVuYWJsZV9yZXR1cm5fZGF0YV0BARBib29sAAFcZGlzYWJsZV9zeXNjYWxsX2RldGFpbHNdAQEQYm9vbAABFGxpbWl0AQEBLE9wdGlvbjx1NjQ+AAFEbWVtb3J5X3dvcmRfbGltaXQ4AQx1MzIAAGESAAACZRIAZRIAAAQIOGkSAGkSFDRwYWxsZXRfcmV2aXZlDGV2bQxhcGk8ZGVidWdfcnBjX3R5cGVzFFRyYWNlAAEMEENhbGwEAG0SASRDYWxsVHJhY2UAAAAgUHJlc3RhdGUEAIESATRQcmVzdGF0ZVRyYWNlAAEAJEV4ZWN1dGlvbgQAoRIBOEV4ZWN1dGlvblRyYWNlAAIAAG0SFDRwYWxsZXRfcmV2aXZlDGV2bQxhcGk8ZGVidWdfcnBjX3R5cGVzJENhbGxUcmFjZQAANAEQZnJvbT0HARBIMTYwAAEMZ2FzKAEMdTY0AAEgZ2FzX3VzZWQoAQx1NjQAAQh0bz0HARBIMTYwAAEUaW5wdXT5DwEUQnl0ZXMAARhvdXRwdXT5DwEUQnl0ZXMAARRlcnJvcpkRAThPcHRpb248U3RyaW5nPgABNHJldmVydF9yZWFzb26ZEQE4T3B0aW9uPFN0cmluZz4AARRjYWxsc3ESAThWZWM8Q2FsbFRyYWNlPgABEGxvZ3N1EgEwVmVjPENhbGxMb2c+AAEUdmFsdWUJEAEwT3B0aW9uPFUyNTY+AAEkY2FsbF90eXBlfRIBIENhbGxUeXBlAAFAY2hpbGRfY2FsbF9jb3VudDgBDHUzMgAAcRIAAAJtEgB1EgAAAnkSAHkSFDRwYWxsZXRfcmV2aXZlDGV2bQxhcGk8ZGVidWdfcnBjX3R5cGVzHENhbGxMb2cAABABHGFkZHJlc3M9BwEQSDE2MAABGHRvcGljc8QBJFZlYzxIMjU2PgABEGRhdGH5DwEUQnl0ZXMAASBwb3NpdGlvbjgBDHUzMgAAfRIUNHBhbGxldF9yZXZpdmUMZXZtDGFwaTxkZWJ1Z19ycGNfdHlwZXMgQ2FsbFR5cGUAARgQQ2FsbAAAAChTdGF0aWNDYWxsAAEAMERlbGVnYXRlQ2FsbAACABhDcmVhdGUAAwAcQ3JlYXRlMgAEADBTZWxmZGVzdHJ1Y3QABQAAgRIUNHBhbGxldF9yZXZpdmUMZXZtDGFwaTxkZWJ1Z19ycGNfdHlwZXM0UHJlc3RhdGVUcmFjZQABCCBQcmVzdGF0ZQQAhRIBhEJUcmVlTWFwPEgxNjAsIFByZXN0YXRlVHJhY2VJbmZvPgAAACBEaWZmTW9kZQgBDHByZYUSAYRCVHJlZU1hcDxIMTYwLCBQcmVzdGF0ZVRyYWNlSW5mbz4AARBwb3N0hRIBhEJUcmVlTWFwPEgxNjAsIFByZXN0YXRlVHJhY2VJbmZvPgABAACFEgQgQlRyZWVNYXAIBEsBPQcEVgGJEgAEAJkSAAAAiRIUNHBhbGxldF9yZXZpdmUMZXZtDGFwaTxkZWJ1Z19ycGNfdHlwZXNEUHJlc3RhdGVUcmFjZUluZm8AABABHGJhbGFuY2UJEAEwT3B0aW9uPFUyNTY+AAEUbm9uY2XkASxPcHRpb248dTMyPgABEGNvZGXhEQE0T3B0aW9uPEJ5dGVzPgABHHN0b3JhZ2WNEgF4QlRyZWVNYXA8Qnl0ZXMsIE9wdGlvbjxCeXRlcz4+AACNEgQgQlRyZWVNYXAIBEsB+Q8EVgHhEQAEAJESAAAAkRIAAAKVEgCVEgAABAj5D+ERAJkSAAACnRIAnRIAAAQIPQeJEgChEhQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpPGRlYnVnX3JwY190eXBlczhFeGVjdXRpb25UcmFjZQAAGAEMZ2FzKAEMdTY0AAE8d2VpZ2h0X2NvbnN1bWVkFQEBGFdlaWdodAABQGJhc2VfY2FsbF93ZWlnaHQVAQEYV2VpZ2h0AAEYZmFpbGVkXQEBEGJvb2wAATByZXR1cm5fdmFsdWX5DwEUQnl0ZXMAASxzdHJ1Y3RfbG9nc6USAUhWZWM8RXhlY3V0aW9uU3RlcD4AAKUSAAACqRIAqRIUNHBhbGxldF9yZXZpdmUMZXZtDGFwaTxkZWJ1Z19ycGNfdHlwZXM0RXhlY3V0aW9uU3RlcAAAHAEMZ2FzuAEMdTY0AAEgZ2FzX2Nvc3S4AQx1NjQAASx3ZWlnaHRfY29zdBUBARhXZWlnaHQAARRkZXB0aO0DAQx1MTYAASxyZXR1cm5fZGF0YfkPARRCeXRlcwABFGVycm9ymREBOE9wdGlvbjxTdHJpbmc+AAEQa2luZK0SAURFeGVjdXRpb25TdGVwS2luZAAArRIUNHBhbGxldF9yZXZpdmUMZXZtDGFwaTxkZWJ1Z19ycGNfdHlwZXNERXhlY3V0aW9uU3RlcEtpbmQAAQgkRVZNT3Bjb2RlFAEIcGNkAQx1MzIAAQhvcAwBCHU4AAEUc3RhY2vZEQEoVmVjPEJ5dGVzPgABGG1lbW9yedkRAShWZWM8Qnl0ZXM+AAEcc3RvcmFnZbESAchPcHRpb248YWxsb2M6OmNvbGxlY3Rpb25zOjpCVHJlZU1hcDxCeXRlcywgQnl0ZXM+PgAAAChQVk1TeXNjYWxsDAEIb3AMAQh1OAABEGFyZ3OlDgEgVmVjPHU2ND4AASByZXR1cm5lZAEBASxPcHRpb248dTY0PgABAACxEgQYT3B0aW9uBARUAbUSAQgQTm9uZQAAABBTb21lBAC1EgAAAQAAtRIEIEJUcmVlTWFwCARLAfkPBFYB+Q8ABAC5EgAAALkSAAACvRIAvRIAAAQI+Q/5DwDBEgQYT3B0aW9uBARUAWkSAQgQTm9uZQAAABBTb21lBABpEgAAAQAAxRIEGFJlc3VsdAgEVAFpEgRFAfURAQgIT2sEAGkSAAAAAAxFcnIEAPURAAABAADJEhQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpJHJwY190eXBlczRUcmFjaW5nQ29uZmlnAAAEATxzdGF0ZV9vdmVycmlkZXMBEgFgT3B0aW9uPFN0YXRlT3ZlcnJpZGVTZXQ+AADNEgQYUmVzdWx0CARUAdESBEUB1RIBCAhPawQA0RIAAAAADEVycgQA1RIAAAEAANESAAAECFkBOADVEgw0cGFsbGV0X3Jldml2ZShwcmltaXRpdmVzWEJhbGFuY2VDb252ZXJzaW9uRXJyb3IAAQgUVmFsdWUAAAAQRHVzdAABAADZEghcYXNzZXRfaHViX3Bhc2VvX3J1bnRpbWUwUnVudGltZUVycm9yAAHQGFN5c3RlbQQABQoBcGZyYW1lX3N5c3RlbTo6RXJyb3I8UnVudGltZT4AAAA8UGFyYWNoYWluU3lzdGVtBACZCgG8Y3VtdWx1c19wYWxsZXRfcGFyYWNoYWluX3N5c3RlbTo6RXJyb3I8UnVudGltZT4AAQAgUHJlaW1hZ2UEAL0KAXxwYWxsZXRfcHJlaW1hZ2U6OkVycm9yPFJ1bnRpbWU+AAUAJFNjaGVkdWxlcgQA1QoBgHBhbGxldF9zY2hlZHVsZXI6OkVycm9yPFJ1bnRpbWU+AAYAUE11bHRpQmxvY2tNaWdyYXRpb25zBADZCgGEcGFsbGV0X21pZ3JhdGlvbnM6OkVycm9yPFJ1bnRpbWU+AAgAIEJhbGFuY2VzBAAtCwF8cGFsbGV0X2JhbGFuY2VzOjpFcnJvcjxSdW50aW1lPgAKABxWZXN0aW5nBABJCwF4cGFsbGV0X3Zlc3Rpbmc6OkVycm9yPFJ1bnRpbWU+AA4AGENsYWltcwQATQsBdHBhbGxldF9jbGFpbXM6OkVycm9yPFJ1bnRpbWU+AA8ADERhcAQAVQsBaHBhbGxldF9kYXA6OkVycm9yPFJ1bnRpbWU+ABAARENvbGxhdG9yU2VsZWN0aW9uBABxCwGkcGFsbGV0X2NvbGxhdG9yX3NlbGVjdGlvbjo6RXJyb3I8UnVudGltZT4AFQAcU2Vzc2lvbgQAkQsBeHBhbGxldF9zZXNzaW9uOjpFcnJvcjxSdW50aW1lPgAWACRYY21wUXVldWUEAM0LAaRjdW11bHVzX3BhbGxldF94Y21wX3F1ZXVlOjpFcnJvcjxSdW50aW1lPgAeACxQb2xrYWRvdFhjbQQANQwBaHBhbGxldF94Y206OkVycm9yPFJ1bnRpbWU+AB8AME1lc3NhZ2VRdWV1ZQQAWQwBkHBhbGxldF9tZXNzYWdlX3F1ZXVlOjpFcnJvcjxSdW50aW1lPgAjAGBTbm93YnJpZGdlU3lzdGVtRnJvbnRlbmQEAF0MAcRzbm93YnJpZGdlX3BhbGxldF9zeXN0ZW1fZnJvbnRlbmQ6OkVycm9yPFJ1bnRpbWU+ACQAHFV0aWxpdHkEAGEMAXhwYWxsZXRfdXRpbGl0eTo6RXJyb3I8UnVudGltZT4AKAAgTXVsdGlzaWcEAHEMAXxwYWxsZXRfbXVsdGlzaWc6OkVycm9yPFJ1bnRpbWU+ACkAFFByb3h5BACVDAFwcGFsbGV0X3Byb3h5OjpFcnJvcjxSdW50aW1lPgAqABxJbmRpY2VzBACdDAF4cGFsbGV0X2luZGljZXM6OkVycm9yPFJ1bnRpbWU+ACsAGEFzc2V0cwQAyQwB3HBhbGxldF9hc3NldHM6OkVycm9yPFJ1bnRpbWUsIHBhbGxldF9hc3NldHM6Okluc3RhbmNlMT4AMgAcVW5pcXVlcwQA9QwBeHBhbGxldF91bmlxdWVzOjpFcnJvcjxSdW50aW1lPgAzABBOZnRzBABJDQFscGFsbGV0X25mdHM6OkVycm9yPFJ1bnRpbWU+ADQANEZvcmVpZ25Bc3NldHMEAF0NAdxwYWxsZXRfYXNzZXRzOjpFcnJvcjxSdW50aW1lLCBwYWxsZXRfYXNzZXRzOjpJbnN0YW5jZTI+ADUAKFBvb2xBc3NldHMEAG0NAdxwYWxsZXRfYXNzZXRzOjpFcnJvcjxSdW50aW1lLCBwYWxsZXRfYXNzZXRzOjpJbnN0YW5jZTM+ADYAPEFzc2V0Q29udmVyc2lvbgQAeQ0BnHBhbGxldF9hc3NldF9jb252ZXJzaW9uOjpFcnJvcjxSdW50aW1lPgA3ADRBc3NldHNGcmVlemVyBACFDQEdAXBhbGxldF9hc3NldHNfZnJlZXplcjo6RXJyb3I8UnVudGltZSwgcGFsbGV0X2Fzc2V0c19mcmVlemVyOjpJbnN0YW5jZTE+ADgAMEFzc2V0c0hvbGRlcgQAiQ0BFQFwYWxsZXRfYXNzZXRzX2hvbGRlcjo6RXJyb3I8UnVudGltZSwgcGFsbGV0X2Fzc2V0c19ob2xkZXI6Okluc3RhbmNlMT4AOQAgVHJlYXN1cnkEAJ0NAXxwYWxsZXRfdHJlYXN1cnk6OkVycm9yPFJ1bnRpbWU+ADwAQENvbnZpY3Rpb25Wb3RpbmcEANENAaBwYWxsZXRfY29udmljdGlvbl92b3Rpbmc6OkVycm9yPFJ1bnRpbWU+AD0AJFJlZmVyZW5kYQQAGQ4BgHBhbGxldF9yZWZlcmVuZGE6OkVycm9yPFJ1bnRpbWU+AD4AJFdoaXRlbGlzdAQAHQ4BgHBhbGxldF93aGl0ZWxpc3Q6OkVycm9yPFJ1bnRpbWU+AEAAIEJvdW50aWVzBAAtDgF8cGFsbGV0X2JvdW50aWVzOjpFcnJvcjxSdW50aW1lPgBBADRDaGlsZEJvdW50aWVzBAA5DgGUcGFsbGV0X2NoaWxkX2JvdW50aWVzOjpFcnJvcjxSdW50aW1lPgBCACRBc3NldFJhdGUEAD0OAYRwYWxsZXRfYXNzZXRfcmF0ZTo6RXJyb3I8UnVudGltZT4AQwBITXVsdGlBc3NldEJvdW50aWVzBABZDgGscGFsbGV0X211bHRpX2Fzc2V0X2JvdW50aWVzOjpFcnJvcjxSdW50aW1lPgBEAEhTdGF0ZVRyaWVNaWdyYXRpb24EAF0JAaxwYWxsZXRfc3RhdGVfdHJpZV9taWdyYXRpb246OkVycm9yPFJ1bnRpbWU+AEYAPE5vbWluYXRpb25Qb29scwQAlQ4BnHBhbGxldF9ub21pbmF0aW9uX3Bvb2xzOjpFcnJvcjxSdW50aW1lPgBQACRWb3Rlckxpc3QEAKkOAfRwYWxsZXRfYmFnc19saXN0OjpFcnJvcjxSdW50aW1lLCBwYWxsZXRfYmFnc19saXN0OjpJbnN0YW5jZTE+AFIAQERlbGVnYXRlZFN0YWtpbmcEAL0OAaBwYWxsZXRfZGVsZWdhdGVkX3N0YWtpbmc6OkVycm9yPFJ1bnRpbWU+AFMAPFN0YWtpbmdSY0NsaWVudAQAyQ4BuHBhbGxldF9zdGFraW5nX2FzeW5jX3JjX2NsaWVudDo6RXJyb3I8UnVudGltZT4AVABITXVsdGlCbG9ja0VsZWN0aW9uBADhDgHQcGFsbGV0X2VsZWN0aW9uX3Byb3ZpZGVyX211bHRpX2Jsb2NrOjpFcnJvcjxSdW50aW1lPgBVAGBNdWx0aUJsb2NrRWxlY3Rpb25TaWduZWQEABkPAfBwYWxsZXRfZWxlY3Rpb25fcHJvdmlkZXJfbXVsdGlfYmxvY2s6OnNpZ25lZDo6RXJyb3I8UnVudGltZT4AWAAcU3Rha2luZwQAfQ8BkHBhbGxldF9zdGFraW5nX2FzeW5jOjpFcnJvcjxSdW50aW1lPgBZAERNZW1iZXJzU3Vic2NyaWJlcgQAvQ8BvGluZGl2X3BhbGxldF9tZW1iZXJzX3N1YnNjcmliZXI6OkVycm9yPFJ1bnRpbWU+AGEANEFsaWFzQWNjb3VudHMEAMUPAaxpbmRpdl9wYWxsZXRfYWxpYXNfYWNjb3VudHM6OkVycm9yPFJ1bnRpbWU+AGIAEFBnYXMEAM0PAYRpbmRpdl9wYWxsZXRfcGdhczo6RXJyb3I8UnVudGltZT4AYwAYUmV2aXZlBAB5EAF0cGFsbGV0X3Jldml2ZTo6RXJyb3I8UnVudGltZT4AZABcQXNzZXRzUHJlY29tcGlsZXNQZXJtaXQEAIEQAeRwYWxsZXRfYXNzZXRzX3ByZWNvbXBpbGVzOjpwZXJtaXQ6OnBhbGxldDo6RXJyb3I8UnVudGltZT4AZgAwRG90bnNHYXRld2F5BACNEAGoaW5kaXZfcGFsbGV0X2RvdG5zX2dhdGV3YXk6OkVycm9yPFJ1bnRpbWU+AJgARE9yaWdpblJlc3RyaWN0aW9uBACZEAG8aW5kaXZfcGFsbGV0X29yaWdpbl9yZXN0cmljdGlvbjo6RXJyb3I8UnVudGltZT4AmQAQU3VkbwQAnRABbHBhbGxldF9zdWRvOjpFcnJvcjxSdW50aW1lPgD7ABRBaE9wcwQApRABdHBhbGxldF9haF9vcHM6OkVycm9yPFJ1bnRpbWU+AP4AABUBGFN5c3RlbQEYU3lzdGVtUBxBY2NvdW50AQEEAgTdB0EBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAE6CBUaGUgZnVsbCBhY2NvdW50IGluZm9ybWF0aW9uIGZvciBhIHBhcnRpY3VsYXIgYWNjb3VudCBJRC4AOEV4dHJpbnNpY0NvdW50AAA4BAAEuCBUb3RhbCBleHRyaW5zaWNzIGNvdW50IGZvciB0aGUgY3VycmVudCBibG9jay4AQEluaGVyZW50c0FwcGxpZWQBAF0BBAAEpCBXaGV0aGVyIGFsbCBpbmhlcmVudHMgaGF2ZSBiZWVuIGFwcGxpZWQuACxCbG9ja1dlaWdodAEA6QcYAAAAAAAABIggVGhlIGN1cnJlbnQgd2VpZ2h0IGZvciB0aGUgYmxvY2suACRCbG9ja1NpemUAADgEAAywIFRvdGFsIHNpemUgKGluIGJ5dGVzKSBvZiB0aGUgY3VycmVudCBibG9jay4AyCBUcmFja3MgdGhlIHNpemUgb2YgdGhlIGhlYWRlciBhbmQgYWxsIGV4dHJpbnNpY3MuACRCbG9ja0hhc2gBAQQFOECAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEmCBNYXAgb2YgYmxvY2sgbnVtYmVycyB0byBibG9jayBoYXNoZXMuADRFeHRyaW5zaWNEYXRhAQEEBTgYBAAEPQEgRXh0cmluc2ljcyBkYXRhIGZvciB0aGUgY3VycmVudCBibG9jayAobWFwcyBhbiBleHRyaW5zaWMncyBpbmRleCB0byBpdHMgZGF0YSkuABhOdW1iZXIBADgQAAAAAAQJASBUaGUgY3VycmVudCBibG9jayBudW1iZXIgYmVpbmcgcHJvY2Vzc2VkLiBTZXQgYnkgYGV4ZWN1dGVfYmxvY2tgLgAoUGFyZW50SGFzaAEAQIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARwIEhhc2ggb2YgdGhlIHByZXZpb3VzIGJsb2NrLgAYRGlnZXN0AQBoBAAE8CBEaWdlc3Qgb2YgdGhlIGN1cnJlbnQgYmxvY2ssIGFsc28gcGFydCBvZiB0aGUgYmxvY2sgaGVhZGVyLgAYRXZlbnRzAQDtBwQAHKAgRXZlbnRzIGRlcG9zaXRlZCBmb3IgdGhlIGN1cnJlbnQgYmxvY2suAB0BIE5PVEU6IFRoZSBpdGVtIGlzIHVuYm91bmQgYW5kIHNob3VsZCB0aGVyZWZvcmUgbmV2ZXIgYmUgcmVhZCBvbiBjaGFpbi7QIEl0IGNvdWxkIG90aGVyd2lzZSBpbmZsYXRlIHRoZSBQb1Ygc2l6ZSBvZiBhIGJsb2NrLgAtASBFdmVudHMgaGF2ZSBhIGxhcmdlIGluLW1lbW9yeSBzaXplLiBCb3ggdGhlIGV2ZW50cyB0byBub3QgZ28gb3V0LW9mLW1lbW9yefwganVzdCBpbiBjYXNlIHNvbWVvbmUgc3RpbGwgcmVhZHMgdGhlbSBmcm9tIHdpdGhpbiB0aGUgcnVudGltZS4AKEV2ZW50Q291bnQBADgQAAAAAAS4IFRoZSBudW1iZXIgb2YgZXZlbnRzIGluIHRoZSBgRXZlbnRzPFQ+YCBsaXN0LgAsRXZlbnRUb3BpY3MBAQQCQMkJBAAoJQEgTWFwcGluZyBiZXR3ZWVuIGEgdG9waWMgKHJlcHJlc2VudGVkIGJ5IFQ6Okhhc2gpIGFuZCBhIHZlY3RvciBvZiBpbmRleGVzlCBvZiBldmVudHMgaW4gdGhlIGA8RXZlbnRzPFQ+PmAgbGlzdC4AUQEgQWxsIHRvcGljIHZlY3RvcnMgaGF2ZSBkZXRlcm1pbmlzdGljIHN0b3JhZ2UgbG9jYXRpb25zIGRlcGVuZGluZyBvbiB0aGUgdG9waWMuIFRoaXNFASBhbGxvd3MgbGlnaHQtY2xpZW50cyB0byBsZXZlcmFnZSB0aGUgY2hhbmdlcyB0cmllIHN0b3JhZ2UgdHJhY2tpbmcgbWVjaGFuaXNtIGFuZOQgaW4gY2FzZSBvZiBjaGFuZ2VzIGZldGNoIHRoZSBsaXN0IG9mIGV2ZW50cyBvZiBpbnRlcmVzdC4AWQEgVGhlIHZhbHVlIGhhcyB0aGUgdHlwZSBgKEJsb2NrTnVtYmVyRm9yPFQ+LCBFdmVudEluZGV4KWAgYmVjYXVzZSBpZiB3ZSB1c2VkIG9ubHkganVzdE0BIHRoZSBgRXZlbnRJbmRleGAgdGhlbiBpbiBjYXNlIGlmIHRoZSB0b3BpYyBoYXMgdGhlIHNhbWUgY29udGVudHMgb24gdGhlIG5leHQgYmxvY2sBASBubyBub3RpZmljYXRpb24gd2lsbCBiZSB0cmlnZ2VyZWQgdGh1cyB0aGUgZXZlbnQgbWlnaHQgYmUgbG9zdC4ASExhc3RSdW50aW1lVXBncmFkZQAAzQkEAARVASBTdG9yZXMgdGhlIGBzcGVjX3ZlcnNpb25gIGFuZCBgc3BlY19uYW1lYCBvZiB3aGVuIHRoZSBsYXN0IHJ1bnRpbWUgdXBncmFkZSBoYXBwZW5lZC4AREJsb2Nrc1RpbGxVcGdyYWRlAAAMBAAE7CBOdW1iZXIgb2YgYmxvY2tzIHRpbGwgdGhlIHBlbmRpbmcgY29kZSB1cGdyYWRlIGlzIGFwcGxpZWQuAFRVcGdyYWRlZFRvVTMyUmVmQ291bnQBAF0BBAAETQEgVHJ1ZSBpZiB3ZSBoYXZlIHVwZ3JhZGVkIHNvIHRoYXQgYHR5cGUgUmVmQ291bnRgIGlzIGB1MzJgLiBGYWxzZSAoZGVmYXVsdCkgaWYgbm90LgBgVXBncmFkZWRUb1RyaXBsZVJlZkNvdW50AQBdAQQACF0BIFRydWUgaWYgd2UgaGF2ZSB1cGdyYWRlZCBzbyB0aGF0IEFjY291bnRJbmZvIGNvbnRhaW5zIHRocmVlIHR5cGVzIG9mIGBSZWZDb3VudGAuIEZhbHNlSCAoZGVmYXVsdCkgaWYgbm90LgA4RXhlY3V0aW9uUGhhc2UAAMUJBAAEiCBUaGUgZXhlY3V0aW9uIHBoYXNlIG9mIHRoZSBibG9jay4AREF1dGhvcml6ZWRVcGdyYWRlAADZCQQABLggYFNvbWVgIGlmIGEgY29kZSB1cGdyYWRlIGhhcyBiZWVuIGF1dGhvcml6ZWQuAGBFeHRyaW5zaWNXZWlnaHRSZWNsYWltZWQBABUBCAAAHKAgVGhlIHdlaWdodCByZWNsYWltZWQgZm9yIHRoZSBleHRyaW5zaWMuACEBIFRoaXMgaW5mb3JtYXRpb24gaXMgYXZhaWxhYmxlIHVudGlsIHRoZSBlbmQgb2YgdGhlIGV4dHJpbnNpYyBleGVjdXRpb24uIQEgTW9yZSBwcmVjaXNlbHkgdGhpcyBpbmZvcm1hdGlvbiBpcyByZW1vdmVkIGluIGBub3RlX2FwcGxpZWRfZXh0cmluc2ljYC4AcQEgTG9naWMgZG9pbmcgc29tZSBwb3N0IGRpc3BhdGNoIHdlaWdodCByZWR1Y3Rpb24gbXVzdCB1cGRhdGUgdGhpcyBzdG9yYWdlIHRvIGF2b2lkIGR1cGxpY2F0ZSwgcmVkdWN0aW9uLgABJAAB+QcAGDBCbG9ja1dlaWdodHPdCYkBBwDyBSoBAAsAIEqp0QECAIACAmXNHQABC8Am+390AQIAAAIBCwBo5c+LAQIAIAIBAAACZc0dAAELwN5fWboBAgBgAgELACBKqdEBAgCAAgEHALhk2UUCAGAAAmXNHQAAAAAE0CBCbG9jayAmIGV4dHJpbnNpY3Mgd2VpZ2h0czogYmFzZSB2YWx1ZXMgYW5kIGxpbWl0cy4ALEJsb2NrTGVuZ3Ro6Qk0AABEAAAAUAAAAFAAAASoIFRoZSBtYXhpbXVtIGxlbmd0aCBvZiBhIGJsb2NrIChpbiBieXRlcykuADhCbG9ja0hhc2hDb3VudDgQABAAAARVASBNYXhpbXVtIG51bWJlciBvZiBibG9jayBudW1iZXIgdG8gYmxvY2sgaGFzaCBtYXBwaW5ncyB0byBrZWVwIChvbGRlc3QgcHJ1bmVkIGZpcnN0KS4AIERiV2VpZ2h08QlAQHh9AQAAAAAA4fUFAAAAAAQJASBUaGUgd2VpZ2h0IG9mIHJ1bnRpbWUgZGF0YWJhc2Ugb3BlcmF0aW9ucyB0aGUgcnVudGltZSBjYW4gaW52b2tlLgAcVmVyc2lvbvUJ2QU8YXNzZXQtaHViLXBhc2VvPGFzc2V0LWh1Yi1wYXNlbwEAAAAhlB4AAAAAAGzdcY1cxTJi1AEAAAAE5wUhoNPS+AEAAADXvdiicsoNZQIAAADfastomQdgmwUAAAA345f8fJH15AIAAABA/jrUAfiVmgYAAADSvJiX7tCPFQMAAAD3iyeL5T9FTAIAAACrPAVyKR/riwIAAADM2d5jlsiZygEAAAC8nYmQT1uSPwEAAAA3yLsTUKmiqAQAAADz/xTVq1JwWQMAAABv9S7oWObFvQIAAACRscixYyjrkgIAAACf+1BapzjWnAEAAAAmCb6DrERo3AEAAAASyOPU1+Bt4AEAAADekrigQmub9gIAAADqk+Pxbz1pYgMAAAD7xXe510fv1gEAAACKgEelOoJ37AEAAACi3balhHe/YwEAAAAXprwNAGKuswEAAAAY71ijtnuncAEAAADFH/H6P10MygEAAACMQD5cSp/UQgEAAAAQAAAAAQSEIEdldCB0aGUgY2hhaW4ncyBpbi1jb2RlIHZlcnNpb24uAChTUzU4UHJlZml47QMIAAAUqCBUaGUgZGVzaWduYXRlZCBTUzU4IHByZWZpeCBvZiB0aGlzIGNoYWluLgA5ASBUaGlzIHJlcGxhY2VzIHRoZSAic3M1OEZvcm1hdCIgcHJvcGVydHkgZGVjbGFyZWQgaW4gdGhlIGNoYWluIHNwZWMuIFJlYXNvbiBpczEBIHRoYXQgdGhlIHJ1bnRpbWUgc2hvdWxkIGtub3cgYWJvdXQgdGhlIHByZWZpeCBpbiBvcmRlciB0byBtYWtlIHVzZSBvZiBpdCBhc3AgYW4gaWRlbnRpZmllciBvZiB0aGUgY2hhaW4uAAEFCgAcLFJ1bnRpbWVDYWxsIASMIFRoZSBhZ2dyZWdhdGVkIGBSdW50aW1lQ2FsbGAgdHlwZS4UTm9uY2U4BEkBIFRoaXMgc3RvcmVzIHRoZSBudW1iZXIgb2YgcHJldmlvdXMgdHJhbnNhY3Rpb25zIGFzc29jaWF0ZWQgd2l0aCBhIHNlbmRlciBhY2NvdW50LhBIYXNoQASYIFRoZSBvdXRwdXQgb2YgdGhlIGBIYXNoaW5nYCBmdW5jdGlvbi4cSGFzaGluZw0FBCEBIFRoZSBoYXNoaW5nIHN5c3RlbSAoYWxnb3JpdGhtKSBiZWluZyB1c2VkIGluIHRoZSBydW50aW1lIChlLmcuIEJsYWtlMikuJEFjY291bnRJZAQEyCBUaGUgdXNlciBhY2NvdW50IGlkZW50aWZpZXIgdHlwZSBmb3IgdGhlIHJ1bnRpbWUuFEJsb2NrCQoIYQEgVGhlIEJsb2NrIHR5cGUgdXNlZCBieSB0aGUgcnVudGltZS4gVGhpcyBpcyB1c2VkIGJ5IGBjb25zdHJ1Y3RfcnVudGltZWAgdG8gcmV0cmlldmUgdGhlzCBleHRyaW5zaWNzIG9yIG90aGVyIGJsb2NrIHNwZWNpZmljIGRhdGEgYXMgbmVlZGVkLixBY2NvdW50RGF0YeEHCGEBIERhdGEgdG8gYmUgYXNzb2NpYXRlZCB3aXRoIGFuIGFjY291bnQgKG90aGVyIHRoYW4gbm9uY2UvdHJhbnNhY3Rpb24gY291bnRlciwgd2hpY2ggdGhpc2QgcGFsbGV0IGRvZXMgcmVnYXJkbGVzcykuAAAAADxQYXJhY2hhaW5TeXN0ZW0BPFBhcmFjaGFpblN5c3RlbXw8QmxvY2tXZWlnaHRNb2RlAAAlCgQAGHwgVGhlIGN1cnJlbnQgYmxvY2sgd2VpZ2h0IG1vZGUuAHUBIFRoaXMgaXMgdXNlZCB0byBkZXRlcm1pbmUgd2hhdCBpcyB0aGUgbWF4aW11bSBhbGxvd2VkIGJsb2NrIHdlaWdodCwgZm9yIG1vcmUgaW5mb3JtYXRpb24gc2VlSCBbYGJsb2NrX3dlaWdodGBdLgAlASBLaWxsZWQgaW4gW2BTZWxmOjpvbl9pbml0aWFsaXplYF0gYW5kIHNldCBieSB0aGUgW2BibG9ja193ZWlnaHRgXSBsb2dpYy4ARFByZXZpb3VzQ29yZUNvdW50AAD1BQQADAUBIFRoZSBjb3JlIGNvdW50IGF2YWlsYWJsZSB0byB0aGUgcGFyYWNoYWluIGluIHRoZSBwcmV2aW91cyBibG9jay4AdQEgVGhpcyBpcyBtYWlubHkgdXNlZCBmb3Igb2ZmY2hhaW4gZnVuY3Rpb25hbGl0eSB0byBjYWxjdWxhdGUgdGhlIGNvcnJlY3QgdGFyZ2V0IGJsb2NrIHdlaWdodC4ARFVuaW5jbHVkZWRTZWdtZW50AQApCgQAGEkBIExhdGVzdCBpbmNsdWRlZCBibG9jayBkZXNjZW5kYW50cyB0aGUgcnVudGltZSBhY2NlcHRlZC4gSW4gb3RoZXIgd29yZHMsIHRoZXNlIGFyZWEBIGFuY2VzdG9ycyBvZiB0aGUgY3VycmVudGx5IGV4ZWN1dGluZyBibG9jayB3aGljaCBoYXZlIG5vdCBiZWVuIGluY2x1ZGVkIGluIHRoZSBvYnNlcnZlZEwgcmVsYXktY2hhaW4gc3RhdGUuAHUBIFRoZSBzZWdtZW50IGxlbmd0aCBpcyBsaW1pdGVkIGJ5IHRoZSBjYXBhY2l0eSByZXR1cm5lZCBmcm9tIHRoZSBbYENvbnNlbnN1c0hvb2tgXSBjb25maWd1cmVkPCBpbiB0aGUgcGFsbGV0LgBsQWdncmVnYXRlZFVuaW5jbHVkZWRTZWdtZW50AABNCgQADGkBIFN0b3JhZ2UgZmllbGQgdGhhdCBrZWVwcyB0cmFjayBvZiBiYW5kd2lkdGggdXNlZCBieSB0aGUgdW5pbmNsdWRlZCBzZWdtZW50IGFsb25nIHdpdGggdGhlLQEgbGF0ZXN0IEhSTVAgd2F0ZXJtYXJrLiBVc2VkIGZvciBsaW1pdGluZyB0aGUgYWNjZXB0YW5jZSBvZiBuZXcgYmxvY2tzIHdpdGiQIHJlc3BlY3QgdG8gcmVsYXkgY2hhaW4gY29uc3RyYWludHMuAFRQZW5kaW5nVmFsaWRhdGlvbkNvZGUBABgEABhZASBJbiBjYXNlIG9mIGEgc2NoZWR1bGVkIHVwZ3JhZGUsIHRoaXMgc3RvcmFnZSBmaWVsZCBjb250YWlucyB0aGUgdmFsaWRhdGlvbiBjb2RlIHRvIGJlJCBhcHBsaWVkLgA9ASBBcyBzb29uIGFzIHRoZSByZWxheSBjaGFpbiBnaXZlcyB1cyB0aGUgZ28tYWhlYWQgc2lnbmFsLCB3ZSB3aWxsIG92ZXJ3cml0ZSB0aGVlASBbYDpwZW5kaW5nX2NvZGVgXVtzcF9jb3JlOjpzdG9yYWdlOjp3ZWxsX2tub3duX2tleXM6OlBFTkRJTkdfQ09ERV0gd2hpY2ggd2lsbCByZXN1bHQgdGhldQEgbmV4dCBibG9jayB0byBiZSBwcm9jZXNzZWQgd2l0aCB0aGUgbmV3IHZhbGlkYXRpb24gY29kZS4gVGhpcyBjb25jbHVkZXMgdGhlIHVwZ3JhZGUgcHJvY2Vzcy4ARE5ld1ZhbGlkYXRpb25Db2RlAAAYBAAUXQEgVmFsaWRhdGlvbiBjb2RlIHRoYXQgaXMgc2V0IGJ5IHRoZSBwYXJhY2hhaW4gYW5kIGlzIHRvIGJlIGNvbW11bmljYXRlZCB0byBjb2xsYXRvciBhbmR4IGNvbnNlcXVlbnRseSB0aGUgcmVsYXktY2hhaW4uAGUBIFRoaXMgd2lsbCBiZSBjbGVhcmVkIGluIGBvbl9pbml0aWFsaXplYCBvZiBlYWNoIG5ldyBibG9jayBpZiBubyBvdGhlciBwYWxsZXQgYWxyZWFkeSBzZXQsIHRoZSB2YWx1ZS4AOFZhbGlkYXRpb25EYXRhAABMBAAM0CBUaGUgW2BQZXJzaXN0ZWRWYWxpZGF0aW9uRGF0YWBdIHNldCBmb3IgdGhpcyBibG9jay4AcQEgVGhpcyB2YWx1ZSBpcyBleHBlY3RlZCB0byBiZSBzZXQgb25seSBvbmNlIGJ5IHRoZSBbYFBhbGxldDo6c2V0X3ZhbGlkYXRpb25fZGF0YWBdIGluaGVyZW50LgBQRGlkU2V0VmFsaWRhdGlvbkNvZGUBAF0BBAAE4CBXZXJlIHRoZSB2YWxpZGF0aW9uIGRhdGEgc2V0IHRvIG5vdGlmeSB0aGUgcmVsYXkgY2hhaW4/AGRMYXN0UmVsYXlDaGFpbkJsb2NrTnVtYmVyAQA4EAAAAAAMHQEgVGhlIHJlbGF5IGNoYWluIGJsb2NrIG51bWJlciBhc3NvY2lhdGVkIHdpdGggdGhlIGxhc3QgcGFyYWNoYWluIGJsb2NrLgCIIFRoaXMgaXMgdXBkYXRlZCBpbiBgb25fZmluYWxpemVgLgBgVXBncmFkZVJlc3RyaWN0aW9uU2lnbmFsAQBRCgQAHHUBIEFuIG9wdGlvbiB3aGljaCBpbmRpY2F0ZXMgaWYgdGhlIHJlbGF5LWNoYWluIHJlc3RyaWN0cyBzaWduYWxsaW5nIGEgdmFsaWRhdGlvbiBjb2RlIHVwZ3JhZGUuYQEgSW4gb3RoZXIgd29yZHMsIGlmIHRoaXMgaXMgYFNvbWVgIGFuZCBbYE5ld1ZhbGlkYXRpb25Db2RlYF0gaXMgYFNvbWVgIHRoZW4gdGhlIHByb2R1Y2VkbCBjYW5kaWRhdGUgd2lsbCBiZSBpbnZhbGlkLgBxASBUaGlzIHN0b3JhZ2UgaXRlbSBpcyBhIG1pcnJvciBvZiB0aGUgY29ycmVzcG9uZGluZyB2YWx1ZSBmb3IgdGhlIGN1cnJlbnQgcGFyYWNoYWluIGZyb20gdGhlbQEgcmVsYXktY2hhaW4uIFRoaXMgdmFsdWUgaXMgZXBoZW1lcmFsIHdoaWNoIG1lYW5zIGl0IGRvZXNuJ3QgaGl0IHRoZSBzdG9yYWdlLiBUaGlzIHZhbHVlIGlzYCBzZXQgYWZ0ZXIgdGhlIGluaGVyZW50LgA4VXBncmFkZUdvQWhlYWQBAEUKBAAU3CBPcHRpb25hbCB1cGdyYWRlIGdvLWFoZWFkIHNpZ25hbCBmcm9tIHRoZSByZWxheS1jaGFpbi4AcQEgVGhpcyBzdG9yYWdlIGl0ZW0gaXMgYSBtaXJyb3Igb2YgdGhlIGNvcnJlc3BvbmRpbmcgdmFsdWUgZm9yIHRoZSBjdXJyZW50IHBhcmFjaGFpbiBmcm9tIHRoZW0BIHJlbGF5LWNoYWluLiBUaGlzIHZhbHVlIGlzIGVwaGVtZXJhbCB3aGljaCBtZWFucyBpdCBkb2Vzbid0IGhpdCB0aGUgc3RvcmFnZS4gVGhpcyB2YWx1ZSBpc2Agc2V0IGFmdGVyIHRoZSBpbmhlcmVudC4APFJlbGF5U3RhdGVQcm9vZgAAVAQAGMQgVGhlIHN0YXRlIHByb29mIGZvciB0aGUgbGFzdCByZWxheSBwYXJlbnQgYmxvY2suAG0BIFRoaXMgZmllbGQgaXMgbWVhbnQgdG8gYmUgdXBkYXRlZCBlYWNoIGJsb2NrIHdpdGggdGhlIHZhbGlkYXRpb24gZGF0YSBpbmhlcmVudC4gVGhlcmVmb3JlLE0BIGJlZm9yZSBwcm9jZXNzaW5nIG9mIHRoZSBpbmhlcmVudCwgZS5nLiBpbiBgb25faW5pdGlhbGl6ZWAgdGhpcyBkYXRhIG1heSBiZSBzdGFsZS4ArCBUaGlzIGRhdGEgaXMgYWxzbyBhYnNlbnQgZnJvbSB0aGUgZ2VuZXNpcy4AWFJlbGV2YW50TWVzc2FnaW5nU3RhdGUAAFkKBAAcZQEgVGhlIHNuYXBzaG90IG9mIHNvbWUgc3RhdGUgcmVsYXRlZCB0byBtZXNzYWdpbmcgcmVsZXZhbnQgdG8gdGhlIGN1cnJlbnQgcGFyYWNoYWluIGFzIHBlckggdGhlIHJlbGF5IHBhcmVudC4AbQEgVGhpcyBmaWVsZCBpcyBtZWFudCB0byBiZSB1cGRhdGVkIGVhY2ggYmxvY2sgd2l0aCB0aGUgdmFsaWRhdGlvbiBkYXRhIGluaGVyZW50LiBUaGVyZWZvcmUsTQEgYmVmb3JlIHByb2Nlc3Npbmcgb2YgdGhlIGluaGVyZW50LCBlLmcuIGluIGBvbl9pbml0aWFsaXplYCB0aGlzIGRhdGEgbWF5IGJlIHN0YWxlLgCsIFRoaXMgZGF0YSBpcyBhbHNvIGFic2VudCBmcm9tIHRoZSBnZW5lc2lzLgBESG9zdENvbmZpZ3VyYXRpb24AAG0KBAAYKQEgVGhlIHBhcmFjaGFpbiBob3N0IGNvbmZpZ3VyYXRpb24gdGhhdCB3YXMgb2J0YWluZWQgZnJvbSB0aGUgcmVsYXkgcGFyZW50LgBtASBUaGlzIGZpZWxkIGlzIG1lYW50IHRvIGJlIHVwZGF0ZWQgZWFjaCBibG9jayB3aXRoIHRoZSB2YWxpZGF0aW9uIGRhdGEgaW5oZXJlbnQuIFRoZXJlZm9yZSxNASBiZWZvcmUgcHJvY2Vzc2luZyBvZiB0aGUgaW5oZXJlbnQsIGUuZy4gaW4gYG9uX2luaXRpYWxpemVgIHRoaXMgZGF0YSBtYXkgYmUgc3RhbGUuAKwgVGhpcyBkYXRhIGlzIGFsc28gYWJzZW50IGZyb20gdGhlIGdlbmVzaXMuADhMYXN0RG1xTXFjSGVhZAEAdQqAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAQ9CBUaGUgbGFzdCBkb3dud2FyZCBtZXNzYWdlIHF1ZXVlIGNoYWluIGhlYWQgd2UgaGF2ZSBvYnNlcnZlZC4AZQEgVGhpcyB2YWx1ZSBpcyBsb2FkZWQgYmVmb3JlIGFuZCBzYXZlZCBhZnRlciBwcm9jZXNzaW5nIGluYm91bmQgZG93bndhcmQgbWVzc2FnZXMgY2FycmllZGAgYnkgdGhlIHN5c3RlbSBpbmhlcmVudC4AQExhc3RIcm1wTXFjSGVhZHMBAHkKBAAQSQEgVGhlIG1lc3NhZ2UgcXVldWUgY2hhaW4gaGVhZHMgd2UgaGF2ZSBvYnNlcnZlZCBwZXIgZWFjaCBjaGFubmVsIGluY29taW5nIGNoYW5uZWwuAGUBIFRoaXMgdmFsdWUgaXMgbG9hZGVkIGJlZm9yZSBhbmQgc2F2ZWQgYWZ0ZXIgcHJvY2Vzc2luZyBpbmJvdW5kIGRvd253YXJkIG1lc3NhZ2VzIGNhcnJpZWRgIGJ5IHRoZSBzeXN0ZW0gaW5oZXJlbnQuAGRQcm9jZXNzZWREb3dud2FyZE1lc3NhZ2VzAQA4EAAAAAAMyCBOdW1iZXIgb2YgZG93bndhcmQgbWVzc2FnZXMgcHJvY2Vzc2VkIGluIGEgYmxvY2suAOwgVGhpcyB3aWxsIGJlIGNsZWFyZWQgaW4gYG9uX2luaXRpYWxpemVgIG9mIGVhY2ggbmV3IGJsb2NrLgBwTGFzdFByb2Nlc3NlZERvd253YXJkTWVzc2FnZQAAhQoEAAyUIFRoZSBsYXN0IHByb2Nlc3NlZCBkb3dud2FyZCBtZXNzYWdlLgBdASBXZSBuZWVkIHRvIGtlZXAgdHJhY2sgb2YgdGhpcyB0byBmaWx0ZXIgdGhlIG1lc3NhZ2VzIHRoYXQgaGF2ZSBiZWVuIGFscmVhZHkgcHJvY2Vzc2VkLgA0SHJtcFdhdGVybWFyawEAOBAAAAAABKAgSFJNUCB3YXRlcm1hcmsgdGhhdCB3YXMgc2V0IGluIGEgYmxvY2suAGBMYXN0UHJvY2Vzc2VkSHJtcE1lc3NhZ2UAAIUKBAAMhCBUaGUgbGFzdCBwcm9jZXNzZWQgSFJNUCBtZXNzYWdlLgBdASBXZSBuZWVkIHRvIGtlZXAgdHJhY2sgb2YgdGhpcyB0byBmaWx0ZXIgdGhlIG1lc3NhZ2VzIHRoYXQgaGF2ZSBiZWVuIGFscmVhZHkgcHJvY2Vzc2VkLgBQSHJtcE91dGJvdW5kTWVzc2FnZXMBAIkKBAAMpCBIUk1QIG1lc3NhZ2VzIHRoYXQgd2VyZSBzZW50IGluIGEgYmxvY2suAOwgVGhpcyB3aWxsIGJlIGNsZWFyZWQgaW4gYG9uX2luaXRpYWxpemVgIG9mIGVhY2ggbmV3IGJsb2NrLgA4VXB3YXJkTWVzc2FnZXMBADQEAAysIFVwd2FyZCBtZXNzYWdlcyB0aGF0IHdlcmUgc2VudCBpbiBhIGJsb2NrLgDwIFRoaXMgd2lsbCBiZSBjbGVhcmVkIGluIGBvbl9pbml0aWFsaXplYCBmb3IgZWFjaCBuZXcgYmxvY2suAFRQZW5kaW5nVXB3YXJkTWVzc2FnZXMBADQEAAQxASBVcHdhcmQgbWVzc2FnZXMgdGhhdCBhcmUgc3RpbGwgcGVuZGluZyBhbmQgbm90IHlldCBzZW50IHRvIHRoZSByZWxheSBjaGFpbi4AUFBlbmRpbmdVcHdhcmRTaWduYWxzAQA0BAAMLQEgVXB3YXJkIHNpZ25hbHMgdGhhdCBhcmUgc3RpbGwgcGVuZGluZyBhbmQgbm90IHlldCBzZW50IHRvIHRoZSByZWxheSBjaGFpbi4A2CBUaGlzIHdpbGwgYmUgY2xlYXJlZCBpbiBgb25fZmluYWxpemVgIGZvciBlYWNoIGJsb2NrLgBMUGVuZGluZ0FwcHJvdmVkUGVlcgAAfAQABDkBIFRoZSBhcHByb3ZlZCBwZWVyIGlkIHRvIGJlIHNlbnQgYXMgYSBVTVAgc2lnbmFsIG9uIHRoZSBsYXN0IGJsb2NrIG9mIHRoZSBQb1YuAFxVcHdhcmREZWxpdmVyeUZlZUZhY3RvcgEAKQVAAABkp7O24A0AAAAAAAAAAATkIFRoZSBmYWN0b3IgdG8gbXVsdGlwbHkgdGhlIGJhc2UgZGVsaXZlcnkgZmVlIGJ5IGZvciBVTVAuAIRBbm5vdW5jZWRIcm1wTWVzc2FnZXNQZXJDYW5kaWRhdGUBADgQAAAAAAhlASBUaGUgbnVtYmVyIG9mIEhSTVAgbWVzc2FnZXMgd2Ugb2JzZXJ2ZWQgaW4gYG9uX2luaXRpYWxpemVgIGFuZCB0aHVzIHVzZWQgdGhhdCBudW1iZXIgZm9y8CBhbm5vdW5jaW5nIHRoZSB3ZWlnaHQgb2YgYG9uX2luaXRpYWxpemVgIGFuZCBgb25fZmluYWxpemVgLgBoUmVzZXJ2ZWRYY21wV2VpZ2h0T3ZlcnJpZGUAABUBBAAIXQEgVGhlIHdlaWdodCB3ZSByZXNlcnZlIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIGJsb2NrIGZvciBwcm9jZXNzaW5nIFhDTVAgbWVzc2FnZXMuIFRoaXO4IG92ZXJyaWRlcyB0aGUgYW1vdW50IHNldCBpbiB0aGUgQ29uZmlnIHRyYWl0LgBkUmVzZXJ2ZWREbXBXZWlnaHRPdmVycmlkZQAAFQEEAAhZASBUaGUgd2VpZ2h0IHdlIHJlc2VydmUgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgYmxvY2sgZm9yIHByb2Nlc3NpbmcgRE1QIG1lc3NhZ2VzLiBUaGlzuCBvdmVycmlkZXMgdGhlIGFtb3VudCBzZXQgaW4gdGhlIENvbmZpZyB0cmFpdC4AYEN1c3RvbVZhbGlkYXRpb25IZWFkRGF0YQAAGAQADCkBIEEgY3VzdG9tIGhlYWQgZGF0YSB0aGF0IHNob3VsZCBiZSByZXR1cm5lZCBhcyByZXN1bHQgb2YgYHZhbGlkYXRlX2Jsb2NrYC4AEQEgU2VlIGBQYWxsZXQ6OnNldF9jdXN0b21fdmFsaWRhdGlvbl9oZWFkX2RhdGFgIGZvciBtb3JlIGluZm9ybWF0aW9uLgBIUG9WTWVzc2FnZXNUcmFja2VyAACRCgQADFUBIFRyYWNrcyBjdW11bGF0aXZlIGBVTVBgIGFuZCBgSFJNUGAgbWVzc2FnZXMgc2VudCBhY3Jvc3MgYmxvY2tzIGluIHRoZSBjdXJyZW50IGBQb1ZgLgB1ASBBY3Jvc3MgZGlmZmVyZW50IGNhbmRpZGF0ZXMvUG9WcyB0aGUgYnVkZ2V0cyBhcmUgdHJhY2tlZCBieSBbYEFnZ3JlZ2F0ZWRVbmluY2x1ZGVkU2VnbWVudGBdLgABRAABIQgABChTZWxmUGFyYUlkoBDoAwAABLggUmV0dXJucyB0aGUgcGFyYWNoYWluIElEIHdlIGFyZSBydW5uaW5nIHdpdGguAAGZCgAAAAEAACRUaW1lc3RhbXABJFRpbWVzdGFtcAgMTm93AQAoIAAAAAAAAAAABKAgVGhlIGN1cnJlbnQgdGltZSBmb3IgdGhlIGN1cnJlbnQgYmxvY2suACREaWRVcGRhdGUBAF0BBAAQ2CBXaGV0aGVyIHRoZSB0aW1lc3RhbXAgaGFzIGJlZW4gdXBkYXRlZCBpbiB0aGlzIGJsb2NrLgBVASBUaGlzIHZhbHVlIGlzIHVwZGF0ZWQgdG8gYHRydWVgIHVwb24gc3VjY2Vzc2Z1bCBzdWJtaXNzaW9uIG9mIGEgdGltZXN0YW1wIGJ5IGEgbm9kZS5FASBJdCBpcyB0aGVuIGNoZWNrZWQgYXQgdGhlIGVuZCBvZiBlYWNoIGJsb2NrIGV4ZWN1dGlvbiBpbiB0aGUgYG9uX2ZpbmFsaXplYCBob29rLgABtAAABDRNaW5pbXVtUGVyaW9kKCAAAAAAAAAAABiMIFRoZSBtaW5pbXVtIHBlcmlvZCBiZXR3ZWVuIGJsb2Nrcy4ATQEgQmUgYXdhcmUgdGhhdCB0aGlzIGlzIGRpZmZlcmVudCB0byB0aGUgKmV4cGVjdGVkKiBwZXJpb2QgdGhhdCB0aGUgYmxvY2sgcHJvZHVjdGlvbkkBIGFwcGFyYXR1cyBwcm92aWRlcy4gWW91ciBjaG9zZW4gY29uc2Vuc3VzIHN5c3RlbSB3aWxsIGdlbmVyYWxseSB3b3JrIHdpdGggdGhpcyB0b2EBIGRldGVybWluZSBhIHNlbnNpYmxlIGJsb2NrIHRpbWUuIEZvciBleGFtcGxlLCBpbiB0aGUgQXVyYSBwYWxsZXQgaXQgd2lsbCBiZSBkb3VibGUgdGhpc3AgcGVyaW9kIG9uIGRlZmF1bHQgc2V0dGluZ3MuAAAEGE1vbWVudCgEmCBUeXBlIHVzZWQgZm9yIGV4cHJlc3NpbmcgYSB0aW1lc3RhbXAuAAMAADRQYXJhY2hhaW5JbmZvATRQYXJhY2hhaW5JbmZvBCxQYXJhY2hhaW5JZAEAoBBkAAAAAAABvAAAAAAAAAQAACBQcmVpbWFnZQEgUHJlaW1hZ2UMJFN0YXR1c0ZvcgABBAZAnQoEAASQIFRoZSByZXF1ZXN0IHN0YXR1cyBvZiBhIGdpdmVuIGhhc2guAkBSZXF1ZXN0U3RhdHVzRm9yAEBSZXF1ZXN0U3RhdHVzRm9yAAEEBkClCgQABJAgVGhlIHJlcXVlc3Qgc3RhdHVzIG9mIGEgZ2l2ZW4gaGFzaC4ALFByZWltYWdlRm9yAAEEBrUKuQoEAAAAAcAAASUIAAABvQoAAAAFAAAkU2NoZWR1bGVyASRTY2hlZHVsZXIQPEluY29tcGxldGVTaW5jZQAAOAQABPQgQmxvY2sgbnVtYmVyIGF0IHdoaWNoIHRoZSBhZ2VuZGEgYmVnYW4gaW5jb21wbGV0ZSBleGVjdXRpb24uABhBZ2VuZGEBAQQFOMEKBAAETQEgSXRlbXMgdG8gYmUgZXhlY3V0ZWQsIGluZGV4ZWQgYnkgdGhlIGJsb2NrIG51bWJlciB0aGF0IHRoZXkgc2hvdWxkIGJlIGV4ZWN1dGVkIG9uLgAcUmV0cmllcwABBALQ0QoEAAQhASBSZXRyeSBjb25maWd1cmF0aW9ucyBmb3IgaXRlbXMgdG8gYmUgZXhlY3V0ZWQsIGluZGV4ZWQgYnkgdGFzayBhZGRyZXNzLgAYTG9va3VwAAEEBQjQBAAQ+CBMb29rdXAgZnJvbSBhIG5hbWUgdG8gdGhlIGJsb2NrIG51bWJlciBhbmQgaW5kZXggb2YgdGhlIHRhc2suAFkBIEZvciB2MyAtPiB2NCB0aGUgcHJldmlvdXNseSB1bmJvdW5kZWQgaWRlbnRpdGllcyBhcmUgQmxha2UyLTI1NiBoYXNoZWQgdG8gZm9ybSB0aGUgdjQwIGlkZW50aXRpZXMuAAHIAAEpCAAINE1heGltdW1XZWlnaHQVASwLAIBuh3QBAgAAAgQpASBUaGUgbWF4aW11bSB3ZWlnaHQgdGhhdCBtYXkgYmUgc2NoZWR1bGVkIHBlciBibG9jayBmb3IgYW55IGRpc3BhdGNoYWJsZXMuAFBNYXhTY2hlZHVsZWRQZXJCbG9jazgQMgAAABQdASBUaGUgbWF4aW11bSBudW1iZXIgb2Ygc2NoZWR1bGVkIGNhbGxzIGluIHRoZSBxdWV1ZSBmb3IgYSBzaW5nbGUgYmxvY2suABggTk9URTpRASArIERlcGVuZGVudCBwYWxsZXRzJyBiZW5jaG1hcmtzIG1pZ2h0IHJlcXVpcmUgYSBoaWdoZXIgbGltaXQgZm9yIHRoZSBzZXR0aW5nLiBTZXQgYcQgaGlnaGVyIGxpbWl0IHVuZGVyIGBydW50aW1lLWJlbmNobWFya3NgIGZlYXR1cmUuAAHVCgAELFJ1bnRpbWVDYWxsIARoIFRoZSBhZ2dyZWdhdGVkIGNhbGwgdHlwZS4ABgAAKFBhcmFtZXRlcnMBKFBhcmFtZXRlcnMEKFBhcmFtZXRlcnMAAQQCNQhJCAQABEwgU3RvcmVkIHBhcmFtZXRlcnMuAAHUAAExCAAAAAAABwAAUE11bHRpQmxvY2tNaWdyYXRpb25zAVBNdWx0aUJsb2NrTWlncmF0aW9ucwgYQ3Vyc29yAAAxAQQADNggVGhlIGN1cnJlbnRseSBhY3RpdmUgbWlncmF0aW9uIHRvIHJ1biBhbmQgaXRzIGN1cnNvci4AvCBgTm9uZWAgaW5kaWNhdGVzIHRoYXQgbm8gbWlncmF0aW9uIGlzIHJ1bm5pbmcuACBIaXN0b3JpYwABBAVFARAEABC0IFNldCBvZiBhbGwgc3VjY2Vzc2Z1bGx5IGV4ZWN1dGVkIG1pZ3JhdGlvbnMuAHEBIFRoaXMgaXMgdXNlZCBhcyBibGFja2xpc3QsIHRvIG5vdCByZS1leGVjdXRlIG1pZ3JhdGlvbnMgdGhhdCBoYXZlIG5vdCBiZWVuIHJlbW92ZWQgZnJvbSB0aGUxASBjb2RlYmFzZSB5ZXQuIEdvdmVybmFuY2UgY2FuIHJlZ3VsYXJseSBjbGVhciB0aGlzIG91dCB2aWEgYGNsZWFyX2hpc3RvcmljYC4AASkBAAFZCAAIMEN1cnNvck1heExlbjgQAAABABCkIFRoZSBtYXhpbWFsIGxlbmd0aCBvZiBhbiBlbmNvZGVkIGN1cnNvci4AZQEgQSBnb29kIGRlZmF1bHQgbmVlZHMgdG8gc2VsZWN0ZWQgc3VjaCB0aGF0IG5vIG1pZ3JhdGlvbiB3aWxsIGV2ZXIgaGF2ZSBhIGN1cnNvciB3aXRoIE1FTAkBIGFib3ZlIHRoaXMgbGltaXQuIFRoaXMgaXMgc3RhdGljYWxseSBjaGVja2VkIGluIGBpbnRlZ3JpdHlfdGVzdGAuAEBJZGVudGlmaWVyTWF4TGVuOBAAAQAAELQgVGhlIG1heGltYWwgbGVuZ3RoIG9mIGFuIGVuY29kZWQgaWRlbnRpZmllci4AVQEgQSBnb29kIGRlZmF1bHQgbmVlZHMgdG8gc2VsZWN0ZWQgc3VjaCB0aGF0IG5vIG1pZ3JhdGlvbiB3aWxsIGV2ZXIgaGF2ZSBhbiBpZGVudGlmaWVyLQEgd2l0aCBNRUwgYWJvdmUgdGhpcyBsaW1pdC4gVGhpcyBpcyBzdGF0aWNhbGx5IGNoZWNrZWQgaW4gYGludGVncml0eV90ZXN0YC4AAdkKAAAQCyAZms41ZNCWTixNSpukaZRNvP9qbOGk0LJ8b8wC0kw4b25nb2luZ19zdGF0dXMA3QoEqCBSZXR1cm5zIHRoZSBvbmdvaW5nIHN0YXR1cyBvZiBtaWdyYXRpb25zLgALIBmazjVk0JZOLE1Km6RpXr13bLFdm5EuJ41NLWLFoSBwcm9ncmVzcwDhChAJASBSZXR1cm5zIHByb2dyZXNzIGluZm9ybWF0aW9uIGFib3V0IHRoZSBjdXJyZW50IG1pZ3JhdGlvbiwgaWYgYW55LgBRASBUaGlzIGZ1bmN0aW9uIHByb3ZpZGVzIGRldGFpbGVkIGluZm9ybWF0aW9uIGFib3V0IHRoZSBjdXJyZW50IG1pZ3JhdGlvbidzIHByb2dyZXNzLB0BIGluY2x1ZGluZyB0aGUgbnVtYmVyIG9mIHN0ZXBzIGNvbXBsZXRlZCBhbmQgdGhlIG1heGltdW0gYWxsb3dlZCBzdGVwcy4ACyAZms41ZNCWTixNSpukaUavS87G81p7u+6dn8EJW+FEYWZmZWN0ZWRfcHJlZml4ZXMANAwBASBSZXR1cm5zIHRoZSBzdG9yYWdlIHByZWZpeGVzIGFmZmVjdGVkIGJ5IHRoZSBjdXJyZW50IG1pZ3JhdGlvbi4AGQEgQ2FuIGJlIGVtcHR5IGlmIHRoZSBtaWdyYXRpb24gZG9lcyBub3Qga25vdyBvciB0aGVyZSBhcmUgbm8gcHJlZml4ZXMuAAsgGZrONWTQlk4sTUqbpGmqTCigbxmIRb0bsp7GIF3dGHN0YXR1cwDpCgTwIFJldHVybnMgdGhlIGNvbXByZWhlbnNpdmUgc3RhdHVzIG9mIG11bHRpLWJsb2NrIG1pZ3JhdGlvbnMuAAgAADRXZWlnaHRSZWNsYWltAAAAAAAAAAkIgQEgUGFsbGV0IHRvIHVzZSBhbG9uZ3NpZGUgdGhlIHRyYW5zYWN0aW9uIGV4dGVuc2lvbiBbYFN0b3JhZ2VXZWlnaHRSZWNsYWltYF0sIHRoZSBwYWxsZXQgcHJvdmlkZXOMIHdlaWdodCBpbmZvcm1hdGlvbiBhbmQgYmVuY2htYXJrcy4AIEJhbGFuY2VzASBCYWxhbmNlcxw0VG90YWxJc3N1YW5jZQEAWQFAAAAAAAAAAAAAAAAAAAAAAASYIFRoZSB0b3RhbCB1bml0cyBpc3N1ZWQgaW4gdGhlIHN5c3RlbS4AQEluYWN0aXZlSXNzdWFuY2UBAFkBQAAAAAAAAAAAAAAAAAAAAAAECQEgVGhlIHRvdGFsIHVuaXRzIG9mIG91dHN0YW5kaW5nIGRlYWN0aXZhdGVkIGJhbGFuY2UgaW4gdGhlIHN5c3RlbS4AHEFjY291bnQBAQQCBOEHAQEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACAYAkBIFRoZSBCYWxhbmNlcyBwYWxsZXQgZXhhbXBsZSBvZiBzdG9yaW5nIHRoZSBiYWxhbmNlIG9mIGFuIGFjY291bnQuACggIyBFeGFtcGxlADQgYGBgbm9jb21waWxlsCAgaW1wbCBwYWxsZXRfYmFsYW5jZXM6OkNvbmZpZyBmb3IgUnVudGltZSB7GQIgICAgdHlwZSBBY2NvdW50U3RvcmUgPSBTdG9yYWdlTWFwU2hpbTxTZWxmOjpBY2NvdW50PFJ1bnRpbWU+LCBmcmFtZV9zeXN0ZW06OlByb3ZpZGVyPFJ1bnRpbWU+LCBBY2NvdW50SWQsIFNlbGY6OkFjY291bnREYXRhPEJhbGFuY2U+PgwgIH0QIGBgYAAVASBZb3UgY2FuIGFsc28gc3RvcmUgdGhlIGJhbGFuY2Ugb2YgYW4gYWNjb3VudCBpbiB0aGUgYFN5c3RlbWAgcGFsbGV0LgAoICMgRXhhbXBsZQA0IGBgYG5vY29tcGlsZbAgIGltcGwgcGFsbGV0X2JhbGFuY2VzOjpDb25maWcgZm9yIFJ1bnRpbWUge3QgICB0eXBlIEFjY291bnRTdG9yZSA9IFN5c3RlbQwgIH0QIGBgYABRASBCdXQgdGhpcyBjb21lcyB3aXRoIHRyYWRlb2Zmcywgc3RvcmluZyBhY2NvdW50IGJhbGFuY2VzIGluIHRoZSBzeXN0ZW0gcGFsbGV0IHN0b3Jlc20BIGBmcmFtZV9zeXN0ZW1gIGRhdGEgYWxvbmdzaWRlIHRoZSBhY2NvdW50IGRhdGEgY29udHJhcnkgdG8gc3RvcmluZyBhY2NvdW50IGJhbGFuY2VzIGluIHRoZSkBIGBCYWxhbmNlc2AgcGFsbGV0LCB3aGljaCB1c2VzIGEgYFN0b3JhZ2VNYXBgIHRvIHN0b3JlIGJhbGFuY2VzIGRhdGEgb25seS5BASBOT1RFOiBUaGlzIGlzIG9ubHkgdXNlZCBpbiB0aGUgY2FzZSB0aGF0IHRoaXMgcGFsbGV0IGlzIHVzZWQgdG8gc3RvcmUgYmFsYW5jZXMuABRMb2NrcwEBBAIE7QoEABC4IEFueSBsaXF1aWRpdHkgbG9ja3Mgb24gc29tZSBhY2NvdW50IGJhbGFuY2VzLiUBIE5PVEU6IFNob3VsZCBvbmx5IGJlIGFjY2Vzc2VkIHdoZW4gc2V0dGluZywgY2hhbmdpbmcgYW5kIGZyZWVpbmcgYSBsb2NrLgCtASBVc2Ugb2YgbG9ja3MgaXMgZGVwcmVjYXRlZCBpbiBmYXZvdXIgb2YgZnJlZXplcy4gU2VlIGBodHRwczovL2dpdGh1Yi5jb20vcGFyaXR5dGVjaC9zdWJzdHJhdGUvcHVsbC8xMjk1MS9gACBSZXNlcnZlcwEBBAIE/QoEAAykIE5hbWVkIHJlc2VydmVzIG9uIHNvbWUgYWNjb3VudCBiYWxhbmNlcy4AsQEgVXNlIG9mIHJlc2VydmVzIGlzIGRlcHJlY2F0ZWQgaW4gZmF2b3VyIG9mIGhvbGRzLiBTZWUgYGh0dHBzOi8vZ2l0aHViLmNvbS9wYXJpdHl0ZWNoL3N1YnN0cmF0ZS9wdWxsLzEyOTUxL2AAFEhvbGRzAQEEAgQJCwQABGwgSG9sZHMgb24gYWNjb3VudCBiYWxhbmNlcy4AHEZyZWV6ZXMBAQQCBBULBAAEiCBGcmVlemUgbG9ja3Mgb24gYWNjb3VudCBiYWxhbmNlcy4AAVEBAAFdCAAQSEV4aXN0ZW50aWFsRGVwb3NpdFkBQADh9QUAAAAAAAAAAAAAAAAgQQEgVGhlIG1pbmltdW0gYW1vdW50IHJlcXVpcmVkIHRvIGtlZXAgYW4gYWNjb3VudCBvcGVuLiBNVVNUIEJFIEdSRUFURVIgVEhBTiBaRVJPIQBZASBJZiB5b3UgKnJlYWxseSogbmVlZCBpdCB0byBiZSB6ZXJvLCB5b3UgY2FuIGVuYWJsZSB0aGUgZmVhdHVyZSBgaW5zZWN1cmVfemVyb19lZGAgZm9yYQEgdGhpcyBwYWxsZXQuIEhvd2V2ZXIsIHlvdSBkbyBzbyBhdCB5b3VyIG93biByaXNrOiB0aGlzIHdpbGwgb3BlbiB1cCBhIG1ham9yIERvUyB2ZWN0b3IuWQEgSW4gY2FzZSB5b3UgaGF2ZSBtdWx0aXBsZSBzb3VyY2VzIG9mIHByb3ZpZGVyIHJlZmVyZW5jZXMsIHlvdSBtYXkgYWxzbyBnZXQgdW5leHBlY3RlZIwgYmVoYXZpb3VyIGlmIHlvdSBzZXQgdGhpcyB0byB6ZXJvLgDwIEJvdHRvbSBsaW5lOiBEbyB5b3Vyc2VsZiBhIGZhdm91ciBhbmQgbWFrZSBpdCBhdCBsZWFzdCBvbmUhACBNYXhMb2NrczgQMgAAABD0IFRoZSBtYXhpbXVtIG51bWJlciBvZiBsb2NrcyB0aGF0IHNob3VsZCBleGlzdCBvbiBhbiBhY2NvdW50LtwgTm90IHN0cmljdGx5IGVuZm9yY2VkLCBidXQgdXNlZCBmb3Igd2VpZ2h0IGVzdGltYXRpb24uAK0BIFVzZSBvZiBsb2NrcyBpcyBkZXByZWNhdGVkIGluIGZhdm91ciBvZiBmcmVlemVzLiBTZWUgYGh0dHBzOi8vZ2l0aHViLmNvbS9wYXJpdHl0ZWNoL3N1YnN0cmF0ZS9wdWxsLzEyOTUxL2AALE1heFJlc2VydmVzOBAyAAAADA0BIFRoZSBtYXhpbXVtIG51bWJlciBvZiBuYW1lZCByZXNlcnZlcyB0aGF0IGNhbiBleGlzdCBvbiBhbiBhY2NvdW50LgCxASBVc2Ugb2YgcmVzZXJ2ZXMgaXMgZGVwcmVjYXRlZCBpbiBmYXZvdXIgb2YgaG9sZHMuIFNlZSBgaHR0cHM6Ly9naXRodWIuY29tL3Bhcml0eXRlY2gvc3Vic3RyYXRlL3B1bGwvMTI5NTEvYAAoTWF4RnJlZXplczgQAgAAAARhASBUaGUgbWF4aW11bSBudW1iZXIgb2YgaW5kaXZpZHVhbCBmcmVlemUgbG9ja3MgdGhhdCBjYW4gZXhpc3Qgb24gYW4gYWNjb3VudCBhdCBhbnkgdGltZS4AAS0LABBEUnVudGltZUhvbGRSZWFzb25lCAR0IFRoZSBvdmVyYXJjaGluZyBob2xkIHJlYXNvbi4cQmFsYW5jZVkBBGwgVGhlIGJhbGFuY2Ugb2YgYW4gYWNjb3VudC5EUmVzZXJ2ZUlkZW50aWZpZXJ5AgxoIFRoZSBJRCB0eXBlIGZvciByZXNlcnZlcy4AsQEgVXNlIG9mIHJlc2VydmVzIGlzIGRlcHJlY2F0ZWQgaW4gZmF2b3VyIG9mIGhvbGRzLiBTZWUgYGh0dHBzOi8vZ2l0aHViLmNvbS9wYXJpdHl0ZWNoL3N1YnN0cmF0ZS9wdWxsLzEyOTUxL2BARnJlZXplSWRlbnRpZmllch0LBGQgVGhlIElEIHR5cGUgZm9yIGZyZWV6ZXMuAAoAAEhUcmFuc2FjdGlvblBheW1lbnQBSFRyYW5zYWN0aW9uUGF5bWVudAxETmV4dEZlZU11bHRpcGxpZXIBACkFQAAAZKeztuANAAAAAAAAAAAAADhTdG9yYWdlVmVyc2lvbgEAMQsEAAAAPFR4UGF5bWVudENyZWRpdAAANQsEAAzwIFRoZSBgT25DaGFyZ2VUcmFuc2FjdGlvbmAgc3RvcmVzIHRoZSB3aXRoZHJhd24gdHggZmVlIGhlcmUuADUBIFVzZSBgd2l0aGRyYXdfdHhmZWVgIGFuZCBgcmVtYWluaW5nX3R4ZmVlYCB0byBhY2Nlc3MgZnJvbSBvdXRzaWRlIHRoZSBjcmF0ZS4AAAGVCAAEYE9wZXJhdGlvbmFsRmVlTXVsdGlwbGllcgwEBVRZASBBIGZlZSBtdWx0aXBsaWVyIGZvciBgT3BlcmF0aW9uYWxgIGV4dHJpbnNpY3MgdG8gY29tcHV0ZSAidmlydHVhbCB0aXAiIHRvIGJvb3N0IHRoZWlyLCBgcHJpb3JpdHlgAFEBIFRoaXMgdmFsdWUgaXMgbXVsdGlwbGllZCBieSB0aGUgYGZpbmFsX2ZlZWAgdG8gb2J0YWluIGEgInZpcnR1YWwgdGlwIiB0aGF0IGlzIGxhdGVy9CBhZGRlZCB0byBhIHRpcCBjb21wb25lbnQgaW4gcmVndWxhciBgcHJpb3JpdHlgIGNhbGN1bGF0aW9ucy5NASBJdCBtZWFucyB0aGF0IGEgYE5vcm1hbGAgdHJhbnNhY3Rpb24gY2FuIGZyb250LXJ1biBhIHNpbWlsYXJseS1zaXplZCBgT3BlcmF0aW9uYWxgQQEgZXh0cmluc2ljICh3aXRoIG5vIHRpcCksIGJ5IGluY2x1ZGluZyBhIHRpcCB2YWx1ZSBncmVhdGVyIHRoYW4gdGhlIHZpcnR1YWwgdGlwLgA8IGBgYHJ1c3QsaWdub3JlQCAvLyBGb3IgYE5vcm1hbGCMIGxldCBwcmlvcml0eSA9IHByaW9yaXR5X2NhbGModGlwKTsAVCAvLyBGb3IgYE9wZXJhdGlvbmFsYBEBIGxldCB2aXJ0dWFsX3RpcCA9IChpbmNsdXNpb25fZmVlICsgdGlwKSAqIE9wZXJhdGlvbmFsRmVlTXVsdGlwbGllcjvEIGxldCBwcmlvcml0eSA9IHByaW9yaXR5X2NhbGModGlwICsgdmlydHVhbF90aXApOxAgYGBgAFEBIE5vdGUgdGhhdCBzaW5jZSB3ZSB1c2UgYGZpbmFsX2ZlZWAgdGhlIG11bHRpcGxpZXIgYXBwbGllcyBhbHNvIHRvIHRoZSByZWd1bGFyIGB0aXBgXQEgc2VudCB3aXRoIHRoZSB0cmFuc2FjdGlvbi4gU28sIG5vdCBvbmx5IGRvZXMgdGhlIHRyYW5zYWN0aW9uIGdldCBhIHByaW9yaXR5IGJ1bXAgYmFzZWRhASBvbiB0aGUgYGluY2x1c2lvbl9mZWVgLCBidXQgd2UgYWxzbyBhbXBsaWZ5IHRoZSBpbXBhY3Qgb2YgdGlwcyBhcHBsaWVkIHRvIGBPcGVyYXRpb25hbGA4IHRyYW5zYWN0aW9ucy4AAAAACwAAOEFzc2V0VHhQYXltZW50AAABmQgAAAAAAA0AABxWZXN0aW5nARxWZXN0aW5nCBxWZXN0aW5nAAEEAgQ9CwQABNggSW5mb3JtYXRpb24gcmVnYXJkaW5nIHRoZSB2ZXN0aW5nIG9mIGEgZ2l2ZW4gYWNjb3VudC4AOFN0b3JhZ2VWZXJzaW9uAQBFCwQADHwgU3RvcmFnZSB2ZXJzaW9uIG9mIHRoZSBwYWxsZXQuADEBIE5ldyBuZXR3b3JrcyBzdGFydCB3aXRoIGxhdGVzdCB2ZXJzaW9uLCBhcyBkZXRlcm1pbmVkIGJ5IHRoZSBnZW5lc2lzIGJ1aWxkLgABaQEAAZ0IAAhETWluVmVzdGVkVHJhbnNmZXJZAUAA4fUFAAAAAAAAAAAAAAAABOggVGhlIG1pbmltdW0gYW1vdW50IHRyYW5zZmVycmVkIHRvIGNhbGwgYHZlc3RlZF90cmFuc2ZlcmAuAExNYXhWZXN0aW5nU2NoZWR1bGVzOBAcAAAAAAABSQsAAAAOAAAYQ2xhaW1zARhDbGFpbXMUGENsYWltcwABBAZ9AVkBBAAAABRUb3RhbAEAWQFAAAAAAAAAAAAAAAAAAAAAAAAAHFZlc3RpbmcAAQQGfQGFAQQAEHggVmVzdGluZyBzY2hlZHVsZSBmb3IgYSBjbGFpbS4NASBGaXJzdCBiYWxhbmNlIGlzIHRoZSB0b3RhbCBhbW91bnQgdGhhdCBzaG91bGQgYmUgaGVsZCBmb3IgdmVzdGluZy7kIFNlY29uZCBiYWxhbmNlIGlzIGhvdyBtdWNoIHNob3VsZCBiZSB1bmxvY2tlZCBwZXIgYmxvY2suzCBUaGUgYmxvY2sgbnVtYmVyIGlzIHdoZW4gdGhlIHZlc3Rpbmcgc2hvdWxkIHN0YXJ0LgAcU2lnbmluZwABBAZ9AY0BBAAEwCBUaGUgc3RhdGVtZW50IGtpbmQgdGhhdCBtdXN0IGJlIHNpZ25lZCwgaWYgYW55LgAkUHJlY2xhaW1zAAEEBgR9AQQABC0BIFByZS1jbGFpbWVkIEV0aGVyZXVtIGFjY291bnRzLCBieSB0aGUgQWNjb3VudCBJRCB0aGF0IHRoZXkgYXJlIGNsYWltZWQgdG8uAAFxAQABoQgABBhQcmVmaXgYiIRQYXkgRE9UcyB0byB0aGUgUG9sa2Fkb3QgYWNjb3VudDoAAAFNCwAAAA8AAAxEYXABDERhcAhAQnVkZ2V0QWxsb2NhdGlvbgEAmQEEABC8IEJ1ZGdldCBhbGxvY2F0aW9uIG1hcDogYEJ1ZGdldEtleSAtPiBQZXJiaWxsYC4ANQEgS2V5cyBtdXN0IGNvcnJlc3BvbmQgdG8gcmVnaXN0ZXJlZCBgQnVkZ2V0UmVjaXBpZW50c2AuIFN1bSBvZiB2YWx1ZXMgbXVzdCBiZSkBIGV4YWN0bHkgYFBlcmJpbGw6Om9uZSgpYCAoMTAwJSkuIFJlY2lwaWVudHMgbm90IGluY2x1ZGVkIHJlY2VpdmUgbm90aGluZy4AVExhc3RJc3N1YW5jZVRpbWVzdGFtcAEAKCAAAAAAAAAAABCoIFRpbWVzdGFtcCAobXMpIG9mIHRoZSBsYXN0IGlzc3VhbmNlIGRyaXAuALAgT24gZXhpc3RpbmcgY2hhaW5zLCB0aGlzIG11c3QgYmUgc2VlZGVkIHZpYTkBIFtgbWlncmF0aW9uczo6TWlncmF0ZVYxVG9WMmBdIHRvIHByZXZlbnQgaW5jb3JyZWN0IG1pbnRpbmcgb24gdGhlIGZpcnN0IGRyaXAuAAGVAQABpQgADCBQYWxsZXRJZFELIGRhcC9idWZmBMQgVGhlIHBhbGxldCBJRCB1c2VkIHRvIGRlcml2ZSB0aGUgYnVmZmVyIGFjY291bnQuADxJc3N1YW5jZUNhZGVuY2UoIGDqAAAAAAAAGMggTWluaW11bSBlbGFwc2VkIHRpbWUgKG1zKSBiZXR3ZWVuIGlzc3VhbmNlIGRyaXBzLgBkIC0gYDBgID0gZHJpcCBldmVyeSBibG9ja7QgLSBgNjBfMDAwYCA9IGRyaXAgZXZlcnkgbWludXRlIChSZWNvbW1lbmRlZCkAoCBTaG91bGQgYmUgc21hbGwgcmVsYXRpdmUgdG8gZXJhIGxlbmd0aC4ARE1heEVsYXBzZWRQZXJEcmlwKCDAJwkAAAAAABQdASBTYWZldHkgY2VpbGluZzogbWF4aW11bSBlbGFwc2VkIHRpbWUgKG1zKSBjb25zaWRlcmVkIGluIGEgc2luZ2xlIGRyaXAuABUBIElmIG1vcmUgdGltZSBoYXMgcGFzc2VkIHRoYW4gdGhpcywgZWxhcHNlZCBpcyBjbGFtcGVkIHRvIHRoaXMgdmFsdWUuGQEgUHJldmVudHMgYWNjaWRlbnRhbCBvdmVyLW1pbnRpbmcgZnJvbSBidWdzLCBtaXNjb25maWd1cmF0aW9uLCBvciBsb25nYCBwZXJpb2RzIHdpdGhvdXQgYmxvY2tzLgABVQsAAAjNFDEPhSb1BNuNmFSNi+42hlr7SN7NdkcDLDTwUTR5RURidWRnZXRfcmVjaXBpZW50cwBZCxAdASBBbGwgcmVnaXN0ZXJlZCBidWRnZXQgcmVjaXBpZW50cyB3aXRoIHRoZWlyIGN1cnJlbnQgYWxsb2NhdGlvbiBzaGFyZXMuAB0BIFRoZSBgUGVyYmlsbGAgaXMgdGFrZW4gZnJvbSBgQnVkZ2V0QWxsb2NhdGlvbmA7IHJlY2lwaWVudHMgYWJzZW50IGZyb22cIHRoZSBtYXAgYXBwZWFyIHdpdGggYFBlcmJpbGw6Onplcm8oKWAuAM0UMQ+FJvUE242YVI2L7japZ2sG/fgSxL9xSQ7M7Z09HHN0YWdpbmcABAwVASBBY2NvdW50IHRoYXQgaG9sZHMgYnVybmVkL3NsYXNoZWQgZnVuZHMgYmVmb3JlIHRoZXkgYXJlIGRyYWluZWQgaW50bxkBIHRoZSBEQVAgYnVmZmVyIGJ5IGBvbl9pZGxlYC4gRXhwb3NlZCB0byBjbGllbnRzIHNvIHRoZXkgZG9uJ3QgaGF2ZSB0b5ggcmUtZGVyaXZlIHRoZSBzdWItYWNjb3VudCB0aGVtc2VsdmVzLgAQAAAoQXV0aG9yc2hpcAEoQXV0aG9yc2hpcAQYQXV0aG9yAAAEBAAEZCBBdXRob3Igb2YgY3VycmVudCBibG9jay4AAAAAAAAAFAAARENvbGxhdG9yU2VsZWN0aW9uAURDb2xsYXRvclNlbGVjdGlvbhQ0SW52dWxuZXJhYmxlcwEAYQsEAAQRASBUaGUgaW52dWxuZXJhYmxlLCBwZXJtaXNzaW9uZWQgY29sbGF0b3JzLiBUaGlzIGxpc3QgbXVzdCBiZSBzb3J0ZWQuADRDYW5kaWRhdGVMaXN0AQBlCwQAFGkBIFRoZSAoY29tbXVuaXR5LCBsaW1pdGVkKSBjb2xsYXRpb24gY2FuZGlkYXRlcy4gYENhbmRpZGF0ZXNgIGFuZCBgSW52dWxuZXJhYmxlc2Agc2hvdWxkIGJlUCBtdXR1YWxseSBleGNsdXNpdmUuAHUBIFRoaXMgbGlzdCBpcyBzb3J0ZWQgaW4gYXNjZW5kaW5nIG9yZGVyIGJ5IGRlcG9zaXQgYW5kIHdoZW4gdGhlIGRlcG9zaXRzIGFyZSBlcXVhbCwgdGhlIGxlYXN0oCByZWNlbnRseSB1cGRhdGVkIGlzIGNvbnNpZGVyZWQgZ3JlYXRlci4ARExhc3RBdXRob3JlZEJsb2NrAQEEBQQ4EAAAAAAEhCBMYXN0IGJsb2NrIGF1dGhvcmVkIGJ5IGNvbGxhdG9yLgBERGVzaXJlZENhbmRpZGF0ZXMBADgQAAAAAAx4IERlc2lyZWQgbnVtYmVyIG9mIGNhbmRpZGF0ZXMuAHUBIFRoaXMgc2hvdWxkIGlkZWFsbHkgYWx3YXlzIGJlIGxlc3MgdGhhbiBbYENvbmZpZzo6TWF4Q2FuZGlkYXRlc2BdIGZvciB3ZWlnaHRzIHRvIGJlIGNvcnJlY3QuADRDYW5kaWRhY3lCb25kAQBZAUAAAAAAAAAAAAAAAAAAAAAADLggRml4ZWQgYW1vdW50IHRvIGRlcG9zaXQgdG8gYmVjb21lIGEgY29sbGF0b3IuAEEBIFdoZW4gYSBjb2xsYXRvciBjYWxscyBgbGVhdmVfaW50ZW50YCB0aGV5IGltbWVkaWF0ZWx5IHJlY2VpdmUgdGhlIGRlcG9zaXQgYmFjay4AAbEBAAGtCAAYFFBvdElkUQsgUG90U3Rha2UE9CBBY2NvdW50IElkZW50aWZpZXIgZnJvbSB3aGljaCB0aGUgaW50ZXJuYWwgUG90IGlzIGdlbmVyYXRlZC4ANE1heENhbmRpZGF0ZXM4EGQAAAAMyCBNYXhpbXVtIG51bWJlciBvZiBjYW5kaWRhdGVzIHRoYXQgd2Ugc2hvdWxkIGhhdmUuAMwgVGhpcyBkb2VzIG5vdCB0YWtlIGludG8gYWNjb3VudCB0aGUgaW52dWxuZXJhYmxlcy4AUE1pbkVsaWdpYmxlQ29sbGF0b3JzOBAEAAAADFUBIE1pbmltdW0gbnVtYmVyIGVsaWdpYmxlIGNvbGxhdG9ycy4gU2hvdWxkIGFsd2F5cyBiZSBncmVhdGVyIHRoYW4gemVyby4gVGhpcyBpbmNsdWRlc1EBIEludnVsbmVyYWJsZSBjb2xsYXRvcnMuIFRoaXMgZW5zdXJlcyB0aGF0IHRoZXJlIHdpbGwgYWx3YXlzIGJlIG9uZSBjb2xsYXRvciB3aG8gY2FuRCBwcm9kdWNlIGEgYmxvY2suAEBNYXhJbnZ1bG5lcmFibGVzOBAUAAAABIQgTWF4aW11bSBudW1iZXIgb2YgaW52dWxuZXJhYmxlcy4ANEtpY2tUaHJlc2hvbGQ4EBAOAAAAACxwb3RfYWNjb3VudASAbW9kbFBvdFN0YWtlAAAAAAAAAAAAAAAAAAAAAAAAAAAEoCBHZXRzIHRoaXMgcGFsbGV0J3MgZGVyaXZlZCBwb3QgYWNjb3VudC4AAXELAAQsVmFsaWRhdG9ySWQEBHQgQSBzdGFibGUgSUQgZm9yIGEgdmFsaWRhdG9yLgAVAAAcU2Vzc2lvbgEcU2Vzc2lvbiAoVmFsaWRhdG9ycwEAYQEEAAR8IFRoZSBjdXJyZW50IHNldCBvZiB2YWxpZGF0b3JzLgAwQ3VycmVudEluZGV4AQA4EAAAAAAEeCBDdXJyZW50IGluZGV4IG9mIHRoZSBzZXNzaW9uLgA0UXVldWVkQ2hhbmdlZAEAXQEEAAg5ASBUcnVlIGlmIHRoZSB1bmRlcmx5aW5nIGVjb25vbWljIGlkZW50aXRpZXMgb3Igd2VpZ2h0aW5nIGJlaGluZCB0aGUgdmFsaWRhdG9yc6QgaGFzIGNoYW5nZWQgaW4gdGhlIHF1ZXVlZCB2YWxpZGF0b3Igc2V0LgAoUXVldWVkS2V5cwEAdQsEAAg9ASBUaGUgcXVldWVkIGtleXMgZm9yIHRoZSBuZXh0IHNlc3Npb24uIFdoZW4gdGhlIG5leHQgc2Vzc2lvbiBiZWdpbnMsIHRoZXNlIGtleXPgIHdpbGwgYmUgdXNlZCB0byBkZXRlcm1pbmUgdGhlIHZhbGlkYXRvcidzIHNlc3Npb24ga2V5cy4ASERpc2FibGVkVmFsaWRhdG9ycwEAfQsEABSAIEluZGljZXMgb2YgZGlzYWJsZWQgdmFsaWRhdG9ycy4APQEgVGhlIHZlYyBpcyBhbHdheXMga2VwdCBzb3J0ZWQgc28gdGhhdCB3ZSBjYW4gZmluZCB3aGV0aGVyIGEgZ2l2ZW4gdmFsaWRhdG9yIGlzPQEgZGlzYWJsZWQgdXNpbmcgYmluYXJ5IHNlYXJjaC4gSXQgZ2V0cyBjbGVhcmVkIHdoZW4gYG9uX3Nlc3Npb25fZW5kaW5nYCByZXR1cm5zZCBhIG5ldyBzZXQgb2YgaWRlbnRpdGllcy4AIE5leHRLZXlzAAEEBQS5AQQABJwgVGhlIG5leHQgc2Vzc2lvbiBrZXlzIGZvciBhIHZhbGlkYXRvci4AIEtleU93bmVyAAEEBYkLBAQABAkBIFRoZSBvd25lciBvZiBhIGtleS4gVGhlIGtleSBpcyB0aGUgYEtleVR5cGVJZGAgKyB0aGUgZW5jb2RlZCBrZXkuAERFeHRlcm5hbGx5U2V0S2V5cwABBAUEEAQAEDEBIEFjY291bnRzIHdob3NlIGtleXMgd2VyZSBzZXQgdmlhIGBTZXNzaW9uSW50ZXJmYWNlYCAoZXh0ZXJuYWwgcGF0aCkgd2l0aG91dDkBIGluY3JlbWVudGluZyB0aGUgY29uc3VtZXIgcmVmZXJlbmNlIG9yIHBsYWNpbmcgYSBrZXkgZGVwb3NpdC4gYGRvX3B1cmdlX2tleXNgOQEgb25seSBkZWNyZW1lbnRzIGNvbnN1bWVycyBmb3IgYWNjb3VudHMgdGhhdCB3ZXJlIHJlZ2lzdGVyZWQgdGhyb3VnaCB0aGUgbG9jYWxAIHNlc3Npb24gcGFsbGV0LgABtQEAAbEIAAQoS2V5RGVwb3NpdFkBQAAAAAAAAAAAAAAAAAAAAAAEpCBUaGUgYW1vdW50IHRvIGJlIGhlbGQgd2hlbiBzZXR0aW5nIGtleXMuAAGRCwAILFZhbGlkYXRvcklkBAR0IEEgc3RhYmxlIElEIGZvciBhIHZhbGlkYXRvci4QS2V5c7kBBCggVGhlIGtleXMuABYAABBBdXJhARBBdXJhCCxBdXRob3JpdGllcwEAlQsEAARsIFRoZSBjdXJyZW50IGF1dGhvcml0eSBzZXQuACxDdXJyZW50U2xvdAEAnQsgAAAAAAAAAAAMgCBUaGUgY3VycmVudCBzbG90IG9mIHRoaXMgYmxvY2suAJQgVGhpcyB3aWxsIGJlIHNldCBpbiBgb25faW5pdGlhbGl6ZWAuAAAABDBTbG90RHVyYXRpb24oIOAuAAAAAAAAFA0BIFRoZSBzbG90IGR1cmF0aW9uIEF1cmEgc2hvdWxkIHJ1biB3aXRoLCBleHByZXNzZWQgaW4gbWlsbGlzZWNvbmRzLgAhASBUaGUgZWZmZWN0aXZlIHZhbHVlIG9mIHRoaXMgdHlwZSBjYW4gYmUgY2hhbmdlZCB3aXRoIGEgcnVudGltZSB1cGdyYWRlLgA1ASBGb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgZWl0aGVyIHVzZSBbYE1pbmltdW1QZXJpb2RUaW1lc1R3b2BdIG9yIGEgY29uc3QuAAAELEF1dGhvcml0eUlkvQEEmCBUaGUgaWRlbnRpZmllciB0eXBlIGZvciBhbiBhdXRob3JpdHkuABcAABxBdXJhRXh0ARxBdXJhRXh0CCxBdXRob3JpdGllcwEAlQsEABSUIFNlcnZlcyBhcyBjYWNoZSBmb3IgdGhlIGF1dGhvcml0aWVzLgBxASBUaGUgYXV0aG9yaXRpZXMgaW4gQXVSYSBhcmUgb3ZlcndyaXR0ZW4gaW4gYG9uX2luaXRpYWxpemVgIHdoZW4gd2Ugc3dpdGNoIHRvIGEgbmV3IHNlc3Npb24sXQEgYnV0IHdlIHJlcXVpcmUgdGhlIG9sZCBhdXRob3JpdGllcyB0byB2ZXJpZnkgdGhlIHNlYWwgd2hlbiB2YWxpZGF0aW5nIGEgUG9WLiBUaGlzIHdpbGwNASBhbHdheXMgYmUgdXBkYXRlZCB0byB0aGUgbGF0ZXN0IEF1UmEgYXV0aG9yaXRpZXMgaW4gYG9uX2ZpbmFsaXplYC4ANFJlbGF5U2xvdEluZm8AAKELBAAQCQEgQ3VycmVudCByZWxheSBjaGFpbiBzbG90IHBhaXJlZCB3aXRoIGEgbnVtYmVyIG9mIGF1dGhvcmVkIGJsb2Nrcy4AZQEgVGhpcyBpcyB1cGRhdGVkIGluIFtgRml4ZWRWZWxvY2l0eUNvbnNlbnN1c0hvb2s6Om9uX3N0YXRlX3Byb29mYF0gd2l0aCB0aGUgY3VycmVudCByZWxhedwgY2hhaW4gc2xvdCBhcyBwcm92aWRlZCBieSB0aGUgcmVsYXkgY2hhaW4gc3RhdGUgcHJvb2YuAAAAAAAAABgAACRYY21wUXVldWUBJFhjbXBRdWV1ZRxQSW5ib3VuZFhjbXBTdXNwZW5kZWQBAKULBAAgDQEgVGhlIHN1c3BlbmRlZCBpbmJvdW5kIFhDTVAgY2hhbm5lbHMuIEFsbCBvdGhlcnMgYXJlIG5vdCBzdXNwZW5kZWQuAHEBIFRoaXMgaXMgYSBgU3RvcmFnZVZhbHVlYCBpbnN0ZWFkIG9mIGEgYFN0b3JhZ2VNYXBgIHNpbmNlIHdlIGV4cGVjdCBtdWx0aXBsZSByZWFkcyBwZXIgYmxvY2tpASB0byBkaWZmZXJlbnQga2V5cyB3aXRoIGEgb25lIGJ5dGUgcGF5bG9hZC4gVGhlIGFjY2VzcyB0byBgQm91bmRlZEJUcmVlU2V0YCB3aWxsIGJlIGNhY2hlZBUBIHdpdGhpbiB0aGUgYmxvY2sgYW5kIHRoZXJlZm9yZSBvbmx5IGluY2x1ZGVkIG9uY2UgaW4gdGhlIHByb29mIHNpemUuAGUBIE5PVEU6IFRoZSBQb1YgYmVuY2htYXJraW5nIGNhbm5vdCBrbm93IHRoaXMgYW5kIHdpbGwgb3Zlci1lc3RpbWF0ZSwgYnV0IHRoZSBhY3R1YWwgcHJvb2ZEIHdpbGwgYmUgc21hbGxlci4ASE91dGJvdW5kWGNtcFN0YXR1cwEArQsEABhdASBUaGUgbm9uLWVtcHR5IFhDTVAgY2hhbm5lbHMgaW4gb3JkZXIgb2YgYmVjb21pbmcgbm9uLWVtcHR5LCBhbmQgdGhlIGluZGV4IG9mIHRoZSBmaXJzdFEBIGFuZCBsYXN0IG91dGJvdW5kIG1lc3NhZ2UuIElmIHRoZSB0d28gaW5kaWNlcyBhcmUgZXF1YWwsIHRoZW4gaXQgaW5kaWNhdGVzIGFuIGVtcHR5WQEgcXVldWUgYW5kIHRoZXJlIG11c3QgYmUgYSBub24tYE9rYCBgT3V0Ym91bmRTdGF0dXNgLiBXZSBhc3N1bWUgcXVldWVzIGdyb3cgbm8gZ3JlYXRlclkBIHRoYW4gNjU1MzUgaXRlbXMuIFF1ZXVlIGluZGljZXMgZm9yIG5vcm1hbCBtZXNzYWdlcyBiZWdpbiBhdCBvbmU7IHplcm8gaXMgcmVzZXJ2ZWQgaW4RASBjYXNlIG9mIHRoZSBuZWVkIHRvIHNlbmQgYSBoaWdoLXByaW9yaXR5IHNpZ25hbCBtZXNzYWdlIHRoaXMgYmxvY2suCQEgVGhlIGJvb2wgaXMgdHJ1ZSBpZiB0aGVyZSBpcyBhIHNpZ25hbCBtZXNzYWdlIHdhaXRpbmcgdG8gYmUgc2VudC4AUE91dGJvdW5kWGNtcE1lc3NhZ2VzAQEIAgXBC8ULBAAEvCBUaGUgbWVzc2FnZXMgb3V0Ym91bmQgaW4gYSBnaXZlbiBYQ01QIGNoYW5uZWwuADhTaWduYWxNZXNzYWdlcwEBBAKgxQsEAASgIEFueSBzaWduYWwgbWVzc2FnZXMgd2FpdGluZyB0byBiZSBzZW50LgAsUXVldWVDb25maWcBAMkLMCAAAAAwAAAACAAAAAQVASBUaGUgY29uZmlndXJhdGlvbiB3aGljaCBjb250cm9scyB0aGUgZHluYW1pY3Mgb2YgdGhlIG91dGJvdW5kIHF1ZXVlLgA4UXVldWVTdXNwZW5kZWQBAF0BBAAEQQEgV2hldGhlciBvciBub3QgdGhlIFhDTVAgcXVldWUgaXMgc3VzcGVuZGVkIGZyb20gZXhlY3V0aW5nIGluY29taW5nIFhDTXMgb3Igbm90LgBERGVsaXZlcnlGZWVGYWN0b3IBAQQFoCkFQAAAZKeztuANAAAAAAAAAAAExCBUaGUgZmFjdG9yIHRvIG11bHRpcGx5IHRoZSBiYXNlIGRlbGl2ZXJ5IGZlZSBieS4AAcEBAAG1CAAMTE1heEluYm91bmRTdXNwZW5kZWQ4EOgDAAAUSQEgVGhlIG1heGltdW0gbnVtYmVyIG9mIGluYm91bmQgWENNUCBjaGFubmVscyB0aGF0IGNhbiBiZSBzdXNwZW5kZWQgc2ltdWx0YW5lb3VzbHkuAF0BIEFueSBmdXJ0aGVyIGNoYW5uZWwgc3VzcGVuc2lvbnMgd2lsbCBmYWlsIGFuZCBtZXNzYWdlcyBtYXkgZ2V0IGRyb3BwZWQgd2l0aG91dCBmdXJ0aGVyRQEgbm90aWNlLiBDaG9vc2luZyBhIGhpZ2ggdmFsdWUgKDEwMDApIGlzIG9rYXk7IHRoZSB0cmFkZS1vZmYgdGhhdCBpcyBkZXNjcmliZWQgaW7YIFtgSW5ib3VuZFhjbXBTdXNwZW5kZWRgXSBzdGlsbCBhcHBsaWVzIGF0IHRoYXQgc2NhbGUuAGRNYXhBY3RpdmVPdXRib3VuZENoYW5uZWxzOBCAAAAAIGUBIE1heGltYWwgbnVtYmVyIG9mIG91dGJvdW5kIFhDTVAgY2hhbm5lbHMgdGhhdCBjYW4gaGF2ZSBtZXNzYWdlcyBxdWV1ZWQgYXQgdGhlIHNhbWUgdGltZS4AVQEgSWYgdGhpcyBpcyByZWFjaGVkLCB0aGVuIG5vIGZ1cnRoZXIgbWVzc2FnZXMgY2FuIGJlIHNlbnQgdG8gY2hhbm5lbHMgdGhhdCBkbyBub3QgeWV0XQEgaGF2ZSBhIG1lc3NhZ2UgcXVldWVkLiBUaGlzIHNob3VsZCBiZSBzZXQgdG8gdGhlIGV4cGVjdGVkIG1heGltdW0gb2Ygb3V0Ym91bmQgY2hhbm5lbHNhASB3aGljaCBpcyBkZXRlcm1pbmVkIGJ5IFtgU2VsZjo6Q2hhbm5lbEluZm9gXS4gSXQgaXMgaW1wb3J0YW50IHRvIHNldCB0aGlzIGxhcmdlIGVub3VnaCxdASBzaW5jZSBvdGhlcndpc2UgdGhlIGNvbmdlc3Rpb24gY29udHJvbCBwcm90b2NvbCB3aWxsIG5vdCB3b3JrIGFzIGludGVuZGVkIGFuZCBtZXNzYWdlc1EBIG1heSBiZSBkcm9wcGVkLiBUaGlzIHZhbHVlIGluY3JlYXNlcyB0aGUgUG9WIGFuZCBzaG91bGQgdGhlcmVmb3JlIG5vdCBiZSBwaWNrZWQgdG9vTQEgaGlnaC4gR292ZXJuYW5jZSBuZWVkcyB0byBwYXkgYXR0ZW50aW9uIHRvIG5vdCBvcGVuIG1vcmUgY2hhbm5lbHMgdGhhbiB0aGlzIHZhbHVlLgAsTWF4UGFnZVNpemU4EACcAQAUuCBUaGUgbWF4aW1hbCBwYWdlIHNpemUgZm9yIEhSTVAgbWVzc2FnZSBwYWdlcy4AYQEgQSBsb3dlciBsaW1pdCBjYW4gYmUgc2V0IGR5bmFtaWNhbGx5LCBidXQgdGhpcyBpcyB0aGUgaGFyZC1saW1pdCBmb3IgdGhlIFBvViB3b3JzdCBjYXNlVQEgYmVuY2htYXJraW5nLiBUaGUgbGltaXQgZm9yIHRoZSBzaXplIG9mIGEgbWVzc2FnZSBpcyBzbGlnaHRseSBiZWxvdyB0aGlzLCBzaW5jZSBzb21luCBvdmVyaGVhZCBpcyBpbmN1cnJlZCBmb3IgZW5jb2RpbmcgdGhlIGZvcm1hdC4AAc0LAAAAHgAALFBvbGthZG90WGNtASxQb2xrYWRvdFhjbTwwUXVlcnlDb3VudGVyAQAoIAAAAAAAAAAABIggVGhlIGxhdGVzdCBhdmFpbGFibGUgcXVlcnkgaW5kZXguABxRdWVyaWVzAAEEAijRCwQABFQgVGhlIG9uZ29pbmcgcXVlcmllcy4AKEFzc2V0VHJhcHMBAQQGQDgQAAAAABBoIFRoZSBleGlzdGluZyBhc3NldCB0cmFwcy4AYQEgS2V5IGlzIHRoZSBibGFrZTIgMjU2IGhhc2ggb2YgKG9yaWdpbiwgdmVyc2lvbmVkIGBBc3NldHNgKSBwYWlyLiBWYWx1ZSBpcyB0aGUgbnVtYmVyIG9mHQEgdGltZXMgdGhpcyBwYWlyIGhhcyBiZWVuIHRyYXBwZWQgKHVzdWFsbHkganVzdCAxIGlmIGl0IGV4aXN0cyBhdCBhbGwpLgA4U2FmZVhjbVZlcnNpb24AADgEAAhhASBEZWZhdWx0IHZlcnNpb24gdG8gZW5jb2RlIFhDTSB3aGVuIGxhdGVzdCB2ZXJzaW9uIG9mIGRlc3RpbmF0aW9uIGlzIHVua25vd24uIElmIGBOb25lYCw9ASB0aGVuIHRoZSBkZXN0aW5hdGlvbnMgd2hvc2UgWENNIHZlcnNpb24gaXMgdW5rbm93biBhcmUgY29uc2lkZXJlZCB1bnJlYWNoYWJsZS4AQFN1cHBvcnRlZFZlcnNpb24AAQgFAuULOAQABPAgVGhlIExhdGVzdCB2ZXJzaW9ucyB0aGF0IHdlIGtub3cgdmFyaW91cyBsb2NhdGlvbnMgc3VwcG9ydC4AQFZlcnNpb25Ob3RpZmllcnMAAQgFAuULKAQABAUBIEFsbCBsb2NhdGlvbnMgdGhhdCB3ZSBoYXZlIHJlcXVlc3RlZCB2ZXJzaW9uIG5vdGlmaWNhdGlvbnMgZnJvbS4AUFZlcnNpb25Ob3RpZnlUYXJnZXRzAAEIBQLlC+kLBAAIcQEgVGhlIHRhcmdldCBsb2NhdGlvbnMgdGhhdCBhcmUgc3Vic2NyaWJlZCB0byBvdXIgdmVyc2lvbiBjaGFuZ2VzLCBhcyB3ZWxsIGFzIHRoZSBtb3N0IHJlY2VudJQgb2Ygb3VyIHZlcnNpb25zIHdlIGluZm9ybWVkIHRoZW0gb2YuAFRWZXJzaW9uRGlzY292ZXJ5UXVldWUBAO0LBAAMZQEgRGVzdGluYXRpb25zIHdob3NlIGxhdGVzdCBYQ00gdmVyc2lvbiB3ZSB3b3VsZCBsaWtlIHRvIGtub3cuIER1cGxpY2F0ZXMgbm90IGFsbG93ZWQsIGFuZHEBIHRoZSBgdTMyYCBjb3VudGVyIGlzIHRoZSBudW1iZXIgb2YgdGltZXMgdGhhdCBhIHNlbmQgdG8gdGhlIGRlc3RpbmF0aW9uIGhhcyBiZWVuIGF0dGVtcHRlZCyMIHdoaWNoIGlzIHVzZWQgYXMgYSBwcmlvcml0aXphdGlvbi4AQEN1cnJlbnRNaWdyYXRpb24AAPkLBAAEnCBUaGUgY3VycmVudCBtaWdyYXRpb24ncyBzdGFnZSwgaWYgYW55LgBUUmVtb3RlTG9ja2VkRnVuZ2libGVzAAEMBQIC/QsBDAQABPAgRnVuZ2libGUgYXNzZXRzIHdoaWNoIHdlIGtub3cgYXJlIGxvY2tlZCBvbiBhIHJlbW90ZSBjaGFpbi4APExvY2tlZEZ1bmdpYmxlcwABBAIEEQwEAATgIEZ1bmdpYmxlIGFzc2V0cyB3aGljaCB3ZSBrbm93IGFyZSBsb2NrZWQgb24gdGhpcyBjaGFpbi4AVFhjbUV4ZWN1dGlvblN1c3BlbmRlZAEAXQEEAAS0IEdsb2JhbCBzdXNwZW5zaW9uIHN0YXRlIG9mIHRoZSBYQ00gZXhlY3V0b3IuADxTaG91bGRSZWNvcmRYY20BAF0BBAAcWQEgV2hldGhlciBvciBub3QgaW5jb21pbmcgWENNcyAoYm90aCBleGVjdXRlZCBsb2NhbGx5IGFuZCByZWNlaXZlZCkgc2hvdWxkIGJlIHJlY29yZGVkLsQgT25seSBvbmUgWENNIHByb2dyYW0gd2lsbCBiZSByZWNvcmRlZCBhdCBhIHRpbWUuKQEgVGhpcyBpcyBtZWFudCB0byBiZSB1c2VkIGluIHJ1bnRpbWUgQVBJcywgYW5kIGl0J3MgYWR2aXNlZCBpdCBzdGF5cyBmYWxzZQ0BIGZvciBhbGwgb3RoZXIgdXNlIGNhc2VzLCBzbyBhcyB0byBub3QgZGVncmFkZSByZWd1bGFyIHBlcmZvcm1hbmNlLgBZASBPbmx5IHJlbGV2YW50IGlmIHRoaXMgcGFsbGV0IGlzIGJlaW5nIHVzZWQgYXMgdGhlIFtgeGNtX2V4ZWN1dG9yOjp0cmFpdHM6OlJlY29yZFhjbWBdyCBpbXBsZW1lbnRhdGlvbiBpbiB0aGUgWENNIGV4ZWN1dG9yIGNvbmZpZ3VyYXRpb24uACxSZWNvcmRlZFhjbQAAFQMEABhJASBJZiBbYFNob3VsZFJlY29yZFhjbWBdIGlzIHNldCB0byB0cnVlLCB0aGVuIHRoZSBsYXN0IFhDTSBwcm9ncmFtIGV4ZWN1dGVkIGxvY2FsbHlUIHdpbGwgYmUgc3RvcmVkIGhlcmUuKQEgUnVudGltZSBBUElzIGNhbiBmZXRjaCB0aGUgWENNIHRoYXQgd2FzIGV4ZWN1dGVkIGJ5IGFjY2Vzc2luZyB0aGlzIHZhbHVlLgBZASBPbmx5IHJlbGV2YW50IGlmIHRoaXMgcGFsbGV0IGlzIGJlaW5nIHVzZWQgYXMgdGhlIFtgeGNtX2V4ZWN1dG9yOjp0cmFpdHM6OlJlY29yZFhjbWBdyCBpbXBsZW1lbnRhdGlvbiBpbiB0aGUgWENNIGV4ZWN1dG9yIGNvbmZpZ3VyYXRpb24uAERBdXRob3JpemVkQWxpYXNlcwABBALJAR0MBAAMZQEgTWFwIG9mIGF1dGhvcml6ZWQgYWxpYXNlcnMgb2YgbG9jYWwgb3JpZ2lucy4gRWFjaCBsb2NhbCBsb2NhdGlvbiBjYW4gYXV0aG9yaXplIGEgbGlzdCBvZlkBIG90aGVyIGxvY2F0aW9ucyB0byBhbGlhcyBpbnRvIGl0LiBFYWNoIGFsaWFzZXIgaXMgb25seSB2YWxpZCB1bnRpbCBpdHMgaW5uZXIgYGV4cGlyeWA4IGJsb2NrIG51bWJlci4AAcUBCAECuQFUaGlzIGV4dHJpbnNpYyB1c2VzIGBXZWlnaHRMaW1pdDo6VW5saW1pdGVkYCwgcGxlYXNlIG1pZ3JhdGUgdG8gYGxpbWl0ZWRfdGVsZXBvcnRfYXNzZXRzYCBvciBgdHJhbnNmZXJfYXNzZXRzYAACAtkBVGhpcyBleHRyaW5zaWMgdXNlcyBgV2VpZ2h0TGltaXQ6OlVubGltaXRlZGAsIHBsZWFzZSBtaWdyYXRlIHRvIGBsaW1pdGVkX3Jlc2VydmVfdHJhbnNmZXJfYXNzZXRzYCBvciBgdHJhbnNmZXJfYXNzZXRzYAABuQgAEERVbml2ZXJzYWxMb2NhdGlvbiECGAIJAgChDwSEIFRoaXMgY2hhaW4ncyBVbml2ZXJzYWwgTG9jYXRpb24uAFBBZHZlcnRpc2VkWGNtVmVyc2lvbjgQBQAAAAglASBUaGUgbGF0ZXN0IHN1cHBvcnRlZCB2ZXJzaW9uIHRoYXQgd2UgYWR2ZXJ0aXNlLiBHZW5lcmFsbHkganVzdCBzZXQgaXQgdG+EIGBwYWxsZXRfeGNtOjpDdXJyZW50WGNtVmVyc2lvbmAuAChNYXhMb2NrZXJzOBAIAAAABBkBIFRoZSBtYXhpbXVtIG51bWJlciBvZiBsb2NhbCBYQ00gbG9ja3MgdGhhdCBhIHNpbmdsZSBhY2NvdW50IG1heSBoYXZlLgBYTWF4UmVtb3RlTG9ja0NvbnN1bWVyczgQAAAAAAT8IFRoZSBtYXhpbXVtIG51bWJlciBvZiBjb25zdW1lcnMgYSBzaW5nbGUgcmVtb3RlIGxvY2sgbWF5IGhhdmUuAAE1DAQYArxVc2UgYExvY2FsRXhlY3V0aW9uSW5jb21wbGV0ZVdpdGhFcnJvcmAgaW5zdGVhZAEYMjAuMC4wCCxSdW50aW1lQ2FsbCAEZCBUaGUgcnVudGltZSBgQ2FsbGAgdHlwZS5wUmVtb3RlTG9ja0NvbnN1bWVySWRlbnRpZmllchAExCBUaGUgSUQgdHlwZSBmb3IgbG9jYWwgY29uc3VtZXJzIG9mIHJlbW90ZSBsb2Nrcy4AHwAAKEN1bXVsdXNYY20AAcUDAAHJCAAAAAAAIAAARFRvS3VzYW1hWGNtUm91dGVyAURUb0t1c2FtYVhjbVJvdXRlcgQYQnJpZGdlAQA9DEQAAGSns7bgDQAAAAAAAAAAABxoIEJyaWRnZSB0aGF0IHdlIGFyZSB1c2luZy4AcQEgKipicmlkZ2VzLXYxKiogYXNzdW1wdGlvbnM6IGFsbCBvdXRib3VuZCBtZXNzYWdlcyB0aHJvdWdoIHRoaXMgcm91dGVyIGFyZSB1c2luZyBzaW5nbGUgbGFuZW0BIGFuZCB0byBzaW5nbGUgcmVtb3RlIGNvbnNlbnN1cy4gSWYgdGhlcmUgaXMgc29tZSBvdGhlciByZW1vdGUgY29uc2Vuc3VzIHRoYXQgdXNlcyB0aGUgc2FtZWEBIGJyaWRnZSBodWIsIHRoZSBzZXBhcmF0ZSBwYWxsZXQgaW5zdGFuY2Ugc2hhbGwgYmUgdXNlZCwgSW4gYHYyYCB3ZSdsbCBoYXZlIGFsbCByZXF1aXJlZHEBIHByaW1pdGl2ZXMgKGxhbmUtaWQgYWthIGJyaWRnZS1pZCwgZGVyaXZlZCBmcm9tIFhDTSBsb2NhdGlvbnMpIHRvIHN1cHBvcnQgbXVsdGlwbGUgIGJyaWRnZXN0IGJ5IHRoZSBzYW1lIHBhbGxldCBpbnN0YW5jZS4AAckDAAHNCAAAAAAAIgAAME1lc3NhZ2VRdWV1ZQEwTWVzc2FnZVF1ZXVlDDBCb29rU3RhdGVGb3IBAQQF0QNBDHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATMIFRoZSBpbmRleCBvZiB0aGUgZmlyc3QgYW5kIGxhc3QgKG5vbi1lbXB0eSkgcGFnZXMuACxTZXJ2aWNlSGVhZAAA0QMEAAS8IFRoZSBvcmlnaW4gYXQgd2hpY2ggd2Ugc2hvdWxkIGJlZ2luIHNlcnZpY2luZy4AFFBhZ2VzAAEIBQVNDFEMBAAEiCBUaGUgbWFwIG9mIHBhZ2UgaW5kaWNlcyB0byBwYWdlcy4AAc0DAAHRCAAQIEhlYXBTaXplOBAAAAEAFD0BIFRoZSBzaXplIG9mIHRoZSBwYWdlOyB0aGlzIGltcGxpZXMgdGhlIG1heGltdW0gbWVzc2FnZSBzaXplIHdoaWNoIGNhbiBiZSBzZW50LgBZASBBIGdvb2QgdmFsdWUgZGVwZW5kcyBvbiB0aGUgZXhwZWN0ZWQgbWVzc2FnZSBzaXplcywgdGhlaXIgd2VpZ2h0cywgdGhlIHdlaWdodCB0aGF0IGlzXQEgYXZhaWxhYmxlIGZvciBwcm9jZXNzaW5nIHRoZW0gYW5kIHRoZSBtYXhpbWFsIG5lZWRlZCBtZXNzYWdlIHNpemUuIFRoZSBtYXhpbWFsIG1lc3NhZ2URASBzaXplIGlzIHNsaWdodGx5IGxvd2VyIHRoYW4gdGhpcyBhcyBkZWZpbmVkIGJ5IFtgTWF4TWVzc2FnZUxlbk9mYF0uACBNYXhTdGFsZTgQCAAAAAxdASBUaGUgbWF4aW11bSBudW1iZXIgb2Ygc3RhbGUgcGFnZXMgKGkuZS4gb2Ygb3ZlcndlaWdodCBtZXNzYWdlcykgYWxsb3dlZCBiZWZvcmUgY3VsbGluZ1EBIGNhbiBoYXBwZW4uIE9uY2UgdGhlcmUgYXJlIG1vcmUgc3RhbGUgcGFnZXMgdGhhbiB0aGlzLCB0aGVuIGhpc3RvcmljYWwgcGFnZXMgbWF5IGJl/CBkcm9wcGVkLCBldmVuIGlmIHRoZXkgY29udGFpbiB1bnByb2Nlc3NlZCBvdmVyd2VpZ2h0IG1lc3NhZ2VzLgA0U2VydmljZVdlaWdodBEBLAEHABCl1OgCAEABGEEBIFRoZSBhbW91bnQgb2Ygd2VpZ2h0IChpZiBhbnkpIHdoaWNoIHNob3VsZCBiZSBwcm92aWRlZCB0byB0aGUgbWVzc2FnZSBxdWV1ZSBmb3KoIHNlcnZpY2luZyBlbnF1ZXVlZCBpdGVtcyBgb25faW5pdGlhbGl6ZWAuAPwgVGhpcyBtYXkgYmUgbGVnaXRpbWF0ZWx5IGBOb25lYCBpbiB0aGUgY2FzZSB0aGF0IHlvdSB3aWxsIGNhbGxdASBgU2VydmljZVF1ZXVlczo6c2VydmljZV9xdWV1ZXNgIG1hbnVhbGx5IG9yIHNldCBbYFNlbGY6OklkbGVNYXhTZXJ2aWNlV2VpZ2h0YF0gdG8gaGF2ZVQgaXQgcnVuIGluIGBvbl9pZGxlYC4AUElkbGVNYXhTZXJ2aWNlV2VpZ2h0EQEsAQcAEKXU6AIAQAEUXQEgVGhlIG1heGltdW0gYW1vdW50IG9mIHdlaWdodCAoaWYgYW55KSB0byBiZSB1c2VkIGZyb20gcmVtYWluaW5nIHdlaWdodCBgb25faWRsZWAgd2hpY2hBASBzaG91bGQgYmUgcHJvdmlkZWQgdG8gdGhlIG1lc3NhZ2UgcXVldWUgZm9yIHNlcnZpY2luZyBlbnF1ZXVlZCBpdGVtcyBgb25faWRsZWAuPQEgVXNlZnVsIGZvciBwYXJhY2hhaW5zIHRvIHByb2Nlc3MgbWVzc2FnZXMgYXQgdGhlIHNhbWUgYmxvY2sgdGhleSBhcmUgcmVjZWl2ZWQuACkBIElmIGBOb25lYCwgaXQgd2lsbCBub3QgY2FsbCBgU2VydmljZVF1ZXVlczo6c2VydmljZV9xdWV1ZXNgIGluIGBvbl9pZGxlYC4AAVkMAAQQU2l6ZTgEVCBQYWdlL2hlYXAgc2l6ZSB0eXBlLgAjAABgU25vd2JyaWRnZVN5c3RlbUZyb250ZW5kAWBTbm93YnJpZGdlU3lzdGVtRnJvbnRlbmQETEV4cG9ydE9wZXJhdGluZ01vZGUBANkDBAAE2CBUaGUgY3VycmVudCBvcGVyYXRpbmcgbW9kZSBmb3IgZXhwb3J0aW5nIHRvIEV0aGVyZXVtLgAB1QMAAdkIAAABXQwAAAAkAAAcVXRpbGl0eQAB5QMAAd0IAARMYmF0Y2hlZF9jYWxsc19saW1pdDgQqioAAASoIFRoZSBsaW1pdCBvbiB0aGUgbnVtYmVyIG9mIGJhdGNoZWQgY2FsbHMuAAFhDAAILFJ1bnRpbWVDYWxsIARsIFRoZSBvdmVyYXJjaGluZyBjYWxsIHR5cGUuNFBhbGxldHNPcmlnaW7xAwTwIFRoZSBjYWxsZXIgb3JpZ2luLCBvdmVyYXJjaGluZyB0eXBlIG9mIGFsbCBwYWxsZXRzIG9yaWdpbnMuACgAACBNdWx0aXNpZwEgTXVsdGlzaWcEJE11bHRpc2lncwABCAUCZQxpDAQABJQgVGhlIHNldCBvZiBvcGVuIG11bHRpc2lnIG9wZXJhdGlvbnMuAAEpBAAB4QgADCxEZXBvc2l0QmFzZVkBQADbu3cAAAAAAAAAAAAAAAAYWQEgVGhlIGJhc2UgYW1vdW50IG9mIGN1cnJlbmN5IG5lZWRlZCB0byByZXNlcnZlIGZvciBjcmVhdGluZyBhIG11bHRpc2lnIGV4ZWN1dGlvbiBvciB0b4Qgc3RvcmUgYSBkaXNwYXRjaCBjYWxsIGZvciBsYXRlci4AAQEgVGhpcyBpcyBoZWxkIGZvciBhbiBhZGRpdGlvbmFsIHN0b3JhZ2UgaXRlbSB3aG9zZSB2YWx1ZSBzaXplIGlzMQEgYDQgKyBzaXplb2YoKEJsb2NrTnVtYmVyLCBCYWxhbmNlLCBBY2NvdW50SWQpKWAgYnl0ZXMgYW5kIHdob3NlIGtleSBzaXplIGlzgCBgMzIgKyBzaXplb2YoQWNjb3VudElkKWAgYnl0ZXMuADREZXBvc2l0RmFjdG9yWQFAANQwAAAAAAAAAAAAAAAAAAxVASBUaGUgYW1vdW50IG9mIGN1cnJlbmN5IG5lZWRlZCBwZXIgdW5pdCB0aHJlc2hvbGQgd2hlbiBjcmVhdGluZyBhIG11bHRpc2lnIGV4ZWN1dGlvbi4AJQEgVGhpcyBpcyBoZWxkIGZvciBhZGRpbmcgMzIgYnl0ZXMgbW9yZSBpbnRvIGEgcHJlLWV4aXN0aW5nIHN0b3JhZ2UgdmFsdWUuADhNYXhTaWduYXRvcmllczgQZAAAAATsIFRoZSBtYXhpbXVtIGFtb3VudCBvZiBzaWduYXRvcmllcyBhbGxvd2VkIGluIHRoZSBtdWx0aXNpZy4AAXEMAAQsUnVudGltZUNhbGwgBGwgVGhlIG92ZXJhcmNoaW5nIGNhbGwgdHlwZS4AKQAAFFByb3h5ARRQcm94eQgcUHJveGllcwEBBAUEdQxEAAAAAAAAAAAAAAAAAAAAAAAIRQEgVGhlIHNldCBvZiBhY2NvdW50IHByb3hpZXMuIE1hcHMgdGhlIGFjY291bnQgd2hpY2ggaGFzIGRlbGVnYXRlZCB0byB0aGUgYWNjb3VudHMhASB3aGljaCBhcmUgYmVpbmcgZGVsZWdhdGVkIHRvLCB0b2dldGhlciB3aXRoIHRoZSBhbW91bnQgaGVsZCBvbiBkZXBvc2l0LgA0QW5ub3VuY2VtZW50cwEBBAUEhQxEAAAAAAAAAAAAAAAAAAAAAAAErCBUaGUgYW5ub3VuY2VtZW50cyBtYWRlIGJ5IHRoZSBwcm94eSAoa2V5KS4AATUEAAHlCAAYQFByb3h5RGVwb3NpdEJhc2VZAUAAnXJ3AAAAAAAAAAAAAAAAEBEBIFRoZSBiYXNlIGFtb3VudCBvZiBjdXJyZW5jeSBuZWVkZWQgdG8gcmVzZXJ2ZSBmb3IgY3JlYXRpbmcgYSBwcm94eS4AAQEgVGhpcyBpcyBoZWxkIGZvciBhbiBhZGRpdGlvbmFsIHN0b3JhZ2UgaXRlbSB3aG9zZSB2YWx1ZSBzaXplIGlzJQEgYHNpemVvZihCYWxhbmNlKWAgYnl0ZXMgYW5kIHdob3NlIGtleSBzaXplIGlzIGBzaXplb2YoQWNjb3VudElkKWAgYnl0ZXMuAEhQcm94eURlcG9zaXRGYWN0b3JZAUCgWjIAAAAAAAAAAAAAAAAAFLwgVGhlIGFtb3VudCBvZiBjdXJyZW5jeSBuZWVkZWQgcGVyIHByb3h5IGFkZGVkLgA1ASBUaGlzIGlzIGhlbGQgZm9yIGFkZGluZyAzMiBieXRlcyBwbHVzIGFuIGluc3RhbmNlIG9mIGBQcm94eVR5cGVgIG1vcmUgaW50byBhYQEgcHJlLWV4aXN0aW5nIHN0b3JhZ2UgdmFsdWUuIFRodXMsIHdoZW4gY29uZmlndXJpbmcgYFByb3h5RGVwb3NpdEZhY3RvcmAgb25lIHNob3VsZCB0YWtl9CBpbnRvIGFjY291bnQgYDMyICsgcHJveHlfdHlwZS5lbmNvZGUoKS5sZW4oKWAgYnl0ZXMgb2YgZGF0YS4AKE1heFByb3hpZXM4ECAAAAAE8CBUaGUgbWF4aW11bSBhbW91bnQgb2YgcHJveGllcyBhbGxvd2VkIGZvciBhIHNpbmdsZSBhY2NvdW50LgAoTWF4UGVuZGluZzgQIAAAAARFASBUaGUgbWF4aW11bSBhbW91bnQgb2YgdGltZS1kZWxheWVkIGFubm91bmNlbWVudHMgdGhhdCBhcmUgYWxsb3dlZCB0byBiZSBwZW5kaW5nLgBcQW5ub3VuY2VtZW50RGVwb3NpdEJhc2VZAUAA0n53AAAAAAAAAAAAAAAAEDEBIFRoZSBiYXNlIGFtb3VudCBvZiBjdXJyZW5jeSBuZWVkZWQgdG8gcmVzZXJ2ZSBmb3IgY3JlYXRpbmcgYW4gYW5ub3VuY2VtZW50LgBJASBUaGlzIGlzIGhlbGQgd2hlbiBhIG5ldyBzdG9yYWdlIGl0ZW0gaG9sZGluZyBhIGBCYWxhbmNlYCBpcyBjcmVhdGVkICh0eXBpY2FsbHkgMTYgIGJ5dGVzKS4AZEFubm91bmNlbWVudERlcG9zaXRGYWN0b3JZAUBAtWQAAAAAAAAAAAAAAAAAENQgVGhlIGFtb3VudCBvZiBjdXJyZW5jeSBuZWVkZWQgcGVyIGFubm91bmNlbWVudCBtYWRlLgBZASBUaGlzIGlzIGhlbGQgZm9yIGFkZGluZyBhbiBgQWNjb3VudElkYCwgYEhhc2hgIGFuZCBgQmxvY2tOdW1iZXJgICh0eXBpY2FsbHkgNjggYnl0ZXMpjCBpbnRvIGEgcHJlLWV4aXN0aW5nIHN0b3JhZ2UgdmFsdWUuAAGVDAAILFJ1bnRpbWVDYWxsIARsIFRoZSBvdmVyYXJjaGluZyBjYWxsIHR5cGUuJFByb3h5VHlwZT0EEFUBIEEga2luZCBvZiBwcm94eTsgc3BlY2lmaWVkIHdpdGggdGhlIHByb3h5IGFuZCBwYXNzZWQgaW4gdG8gdGhlIGBJc1Byb3h5YWJsZWAgZmlsdGVyLlEBIFRoZSBpbnN0YW5jZSBmaWx0ZXIgZGV0ZXJtaW5lcyB3aGV0aGVyIGEgZ2l2ZW4gY2FsbCBtYXkgYmUgcHJveGllZCB1bmRlciB0aGlzIHR5cGUuAE0BIElNUE9SVEFOVDogYERlZmF1bHRgIG11c3QgYmUgcHJvdmlkZWQgYW5kIE1VU1QgQkUgdGhlIHRoZSAqbW9zdCBwZXJtaXNzaXZlKiB2YWx1ZS4IGAnXg0Zyeg71jA+gO6+jI8vFFIjZKhqnE3sDv7UO/BdEY2hlY2tfcGVybWlzc2lvbnMIEGNhbGwgKHByb3h5X3R5cGU9BF0BBPQgQ2hlY2sgaWYgYSBgUnVudGltZUNhbGxgIGlzIGFsbG93ZWQgZm9yIGEgZ2l2ZW4gYFByb3h5VHlwZWAuABgJ14NGcnoO9YwPoDuvoyMXFLBgfWKvCjs7CtLF1VxYLGlzX3N1cGVyc2V0CCB0b19jaGVjaz0EHGFnYWluc3Q9BF0BBPQgQ2hlY2sgaWYgb25lIGBQcm94eVR5cGVgIGlzIGEgc3Vic2V0IG9mIGFub3RoZXIgYFByb3h5VHlwZWAuACoAABxJbmRpY2VzARxJbmRpY2VzBCBBY2NvdW50cwABBAI4mQwEAASIIFRoZSBsb29rdXAgZnJvbSBpbmRleCB0byBhY2NvdW50LgABQQQAAe0IAAQcRGVwb3NpdFkBQADSfncAAAAAAAAAAAAAAAAErCBUaGUgZGVwb3NpdCBuZWVkZWQgZm9yIHJlc2VydmluZyBhbiBpbmRleC4AAZ0MAAQwQWNjb3VudEluZGV4OAhVASBUeXBlIHVzZWQgZm9yIHN0b3JpbmcgYW4gYWNjb3VudCdzIGluZGV4OyBpbXBsaWVzIHRoZSBtYXhpbXVtIG51bWJlciBvZiBhY2NvdW50cyB0aGVEIHN5c3RlbSBjYW4gaG9sZC4AKwAAGEFzc2V0cwEYQXNzZXRzGBRBc3NldAABBAI4oQwEAARUIERldGFpbHMgb2YgYW4gYXNzZXQuABxBY2NvdW50AAEIAgKpDK0MBAAE5CBUaGUgaG9sZGluZ3Mgb2YgYSBzcGVjaWZpYyBhY2NvdW50IGZvciBhIHNwZWNpZmljIGFzc2V0LgAkQXBwcm92YWxzAAEMAgICuQy9DAQADFkBIEFwcHJvdmVkIGJhbGFuY2UgdHJhbnNmZXJzLiBGaXJzdCBiYWxhbmNlIGlzIHRoZSBhbW91bnQgYXBwcm92ZWQgZm9yIHRyYW5zZmVyLiBTZWNvbmToIGlzIHRoZSBhbW91bnQgb2YgYFQ6OkN1cnJlbmN5YCByZXNlcnZlZCBmb3Igc3RvcmluZyB0aGlzLkkBIEZpcnN0IGtleSBpcyB0aGUgYXNzZXQgSUQsIHNlY29uZCBrZXkgaXMgdGhlIG93bmVyIGFuZCB0aGlyZCBrZXkgaXMgdGhlIGRlbGVnYXRlLgAgTWV0YWRhdGEBAQQCOMEMUAAAAAAAAAAAAAAAAAAAAAAAAAAABFggTWV0YWRhdGEgb2YgYW4gYXNzZXQuACBSZXNlcnZlcwEBBAI4SQQEAAT8IE1hcHMgYW4gYXNzZXQgdG8gYSBsaXN0IG9mIGl0cyBjb25maWd1cmVkIHJlc2VydmUgaW5mb3JtYXRpb24uACxOZXh0QXNzZXRJZAAAOAQAJG0BIFRoZSBhc3NldCBJRCBlbmZvcmNlZCBmb3IgdGhlIG5leHQgYXNzZXQgY3JlYXRpb24sIGlmIGFueSBwcmVzZW50LiBPdGhlcndpc2UsIHRoaXMgc3RvcmFnZVAgaXRlbSBoYXMgbm8gZWZmZWN0LgBlASBUaGlzIGNhbiBiZSB1c2VmdWwgZm9yIHNldHRpbmcgdXAgY29uc3RyYWludHMgZm9yIElEcyBvZiB0aGUgbmV3IGFzc2V0cy4gRm9yIGV4YW1wbGUsIGJ5aQEgcHJvdmlkaW5nIGFuIGluaXRpYWwgW2BOZXh0QXNzZXRJZGBdIGFuZCB1c2luZyB0aGUgW2BjcmF0ZTo6QXV0b0luY0Fzc2V0SWRgXSBjYWxsYmFjaywgYW7oIGF1dG8taW5jcmVtZW50IG1vZGVsIGNhbiBiZSBhcHBsaWVkIHRvIGFsbCBuZXcgYXNzZXQgSURzLgAhASBUaGUgaW5pdGlhbCBuZXh0IGFzc2V0IElEIGNhbiBiZSBzZXQgdXNpbmcgdGhlIFtgR2VuZXNpc0NvbmZpZ2BdIG9yIHRoZSEBIFtTZXROZXh0QXNzZXRJZF0oYG1pZ3JhdGlvbjo6bmV4dF9hc3NldF9pZDo6U2V0TmV4dEFzc2V0SWRgKSBtaWdyYXRpb24uAAFFBAAB8QgAHEBSZW1vdmVJdGVtc0xpbWl0OBDoAwAADFEBIE1heCBudW1iZXIgb2YgaXRlbXMgdG8gZGVzdHJveSBwZXIgYGRlc3Ryb3lfYWNjb3VudHNgIGFuZCBgZGVzdHJveV9hcHByb3ZhbHNgIGNhbGwuADkBIE11c3QgYmUgY29uZmlndXJlZCB0byByZXN1bHQgaW4gYSB3ZWlnaHQgdGhhdCBtYWtlcyBlYWNoIGNhbGwgZml0IGluIGEgYmxvY2suADBBc3NldERlcG9zaXRZAUDAfld4AAAAAAAAAAAAAAAABPggVGhlIGJhc2ljIGFtb3VudCBvZiBmdW5kcyB0aGF0IG11c3QgYmUgcmVzZXJ2ZWQgZm9yIGFuIGFzc2V0LgBMQXNzZXRBY2NvdW50RGVwb3NpdFkBQAD+TXcAAAAAAAAAAAAAAAAIRQEgVGhlIGFtb3VudCBvZiBmdW5kcyB0aGF0IG11c3QgYmUgcmVzZXJ2ZWQgZm9yIGEgbm9uLXByb3ZpZGVyIGFzc2V0IGFjY291bnQgdG8gYmUwIG1haW50YWluZWQuAExNZXRhZGF0YURlcG9zaXRCYXNlWQFAgFaddwAAAAAAAAAAAAAAAARRASBUaGUgYmFzaWMgYW1vdW50IG9mIGZ1bmRzIHRoYXQgbXVzdCBiZSByZXNlcnZlZCB3aGVuIGFkZGluZyBtZXRhZGF0YSB0byB5b3VyIGFzc2V0LgBYTWV0YWRhdGFEZXBvc2l0UGVyQnl0ZVkBQKCGAQAAAAAAAAAAAAAAAAAIVQEgVGhlIGFkZGl0aW9uYWwgZnVuZHMgdGhhdCBtdXN0IGJlIHJlc2VydmVkIGZvciB0aGUgbnVtYmVyIG9mIGJ5dGVzIHlvdSBzdG9yZSBpbiB5b3VyKCBtZXRhZGF0YS4APEFwcHJvdmFsRGVwb3NpdFkBQADh9QUAAAAAAAAAAAAAAAAEIQEgVGhlIGFtb3VudCBvZiBmdW5kcyB0aGF0IG11c3QgYmUgcmVzZXJ2ZWQgd2hlbiBjcmVhdGluZyBhIG5ldyBhcHByb3ZhbC4ALFN0cmluZ0xpbWl0OBAyAAAABOAgVGhlIG1heGltdW0gbGVuZ3RoIG9mIGEgbmFtZSBvciBzeW1ib2wgc3RvcmVkIG9uLWNoYWluLgAByQwAFBxCYWxhbmNlWQEEnCBUaGUgdW5pdHMgaW4gd2hpY2ggd2UgcmVjb3JkIGJhbGFuY2VzLhxBc3NldElkOASMIElkZW50aWZpZXIgZm9yIHRoZSBjbGFzcyBvZiBhc3NldC5AQXNzZXRJZFBhcmFtZXRlcmQcWQEgV3JhcHBlciBhcm91bmQgYFNlbGY6OkFzc2V0SWRgIHRvIHVzZSBpbiBkaXNwYXRjaGFibGUgY2FsbCBzaWduYXR1cmVzLiBBbGxvd3MgdGhlIHVzZVEBIG9mIGNvbXBhY3QgZW5jb2RpbmcgaW4gaW5zdGFuY2VzIG9mIHRoZSBwYWxsZXQsIHdoaWNoIHdpbGwgcHJldmVudCBicmVha2luZyBjaGFuZ2VzBQEgcmVzdWx0aW5nIGZyb20gdGhlIHJlbW92YWwgb2YgYEhhc0NvbXBhY3RgIGZyb20gYFNlbGY6OkFzc2V0SWRgLgBZASBUaGlzIHR5cGUgaW5jbHVkZXMgdGhlIGBGcm9tPFNlbGY6OkFzc2V0SWQ+YCBib3VuZCwgc2luY2UgdGlnaHRseSBjb3VwbGVkIHBhbGxldHMgbWF5RQEgd2FudCB0byBjb252ZXJ0IGFuIGBBc3NldElkYCBpbnRvIGEgcGFyYW1ldGVyIGZvciBjYWxsaW5nIGRpc3BhdGNoYWJsZSBmdW5jdGlvbnMoIGRpcmVjdGx5LixSZXNlcnZlRGF0YRAE6CBJbmZvcm1hdGlvbiBhYm91dCByZXNlcnZlIGxvY2F0aW9ucyBmb3IgYSBjbGFzcyBvZiBhc3NldC4URXh0cmEQBPggQWRkaXRpb25hbCBkYXRhIHRvIGJlIHN0b3JlZCB3aXRoIGFuIGFjY291bnQncyBhc3NldCBiYWxhbmNlLhBoKlnVGrnkioyMxBj/lwjSpwKXrQtL3T2kt0YpplpuXDRhc3NldF9kZXRhaWxzBAhpZDjNDASoIFByb3ZpZGUgdGhlIGFzc2V0IGRldGFpbHMgZm9yIGFzc2V0IGBpZGAuAGgqWdUaueSKjIzEGP+XCNJTGsfiG3axIedh5HNBmhsCKGJhbGFuY2Vfb2YIDHdobwQIaWQ4ZQQEtCBQcm92aWRlIHRoZSBiYWxhbmNlIG9mIGB3aG9gIGZvciBhc3NldCBgaWRgLgBoKlnVGrnkioyMxBj/lwjSLodmpA0badYVG9gB5XVQXjBnZXRfbWV0YWRhdGEECGlkONEMBMAgUHJvdmlkZSB0aGUgY29uZmlndXJlZCBtZXRhZGF0YSBmb3IgYXNzZXQgYGlkYC4AaCpZ1Rq55IqMjMQY/5cI0mT2Pykj45goJDFjga4eaYZEZ2V0X3Jlc2VydmVzX2RhdGEECGlkOE0EBNQgUHJvdmlkZSB0aGUgY29uZmlndXJlZCByZXNlcnZlcyBkYXRhIGZvciBhc3NldCBgaWRgLgAyAAAcVW5pcXVlcwEcVW5pcXVlcygUQ2xhc3MAAQQCONUMBAAEZCBEZXRhaWxzIG9mIGEgY29sbGVjdGlvbi4ATE93bmVyc2hpcEFjY2VwdGFuY2UAAQQCBDgEAAQpASBUaGUgY29sbGVjdGlvbiwgaWYgYW55LCBvZiB3aGljaCBhbiBhY2NvdW50IGlzIHdpbGxpbmcgdG8gdGFrZSBvd25lcnNoaXAuABxBY2NvdW50AAEMAgIC2QwQBAAIWQEgVGhlIGl0ZW1zIGhlbGQgYnkgYW55IGdpdmVuIGFjY291bnQ7IHNldCBvdXQgdGhpcyB3YXkgc28gdGhhdCBpdGVtcyBvd25lZCBieSBhIHNpbmdsZWwgYWNjb3VudCBjYW4gYmUgZW51bWVyYXRlZC4AMENsYXNzQWNjb3VudAABCAICjQUQBAAIaQEgVGhlIGNvbGxlY3Rpb25zIG93bmVkIGJ5IGFueSBnaXZlbiBhY2NvdW50OyBzZXQgb3V0IHRoaXMgd2F5IHNvIHRoYXQgY29sbGVjdGlvbnMgb3duZWQgYnmQIGEgc2luZ2xlIGFjY291bnQgY2FuIGJlIGVudW1lcmF0ZWQuABRBc3NldAABCAIC0N0MBAAE0CBUaGUgaXRlbXMgaW4gZXhpc3RlbmNlIGFuZCB0aGVpciBvd25lcnNoaXAgZGV0YWlscy4APENsYXNzTWV0YWRhdGFPZgABBAI44QwEAARoIE1ldGFkYXRhIG9mIGEgY29sbGVjdGlvbi4ASEluc3RhbmNlTWV0YWRhdGFPZgABCAIC0OUMBAAEVCBNZXRhZGF0YSBvZiBhbiBpdGVtLgAkQXR0cmlidXRlAAEMAgIC6QztDAQABHAgQXR0cmlidXRlcyBvZiBhIGNvbGxlY3Rpb24uACxJdGVtUHJpY2VPZgABCAIC0PEMBAAEcCBQcmljZSBvZiBhbiBhc3NldCBpbnN0YW5jZS4ATENvbGxlY3Rpb25NYXhTdXBwbHkAAQQCODgEAATwIEtlZXBzIHRyYWNrIG9mIHRoZSBudW1iZXIgb2YgaXRlbXMgYSBjb2xsZWN0aW9uIG1pZ2h0IGhhdmUuAAFRBAAB9QgAIERDb2xsZWN0aW9uRGVwb3NpdFkBQADodkgXAAAAAAAAAAAAAAAEAQEgVGhlIGJhc2ljIGFtb3VudCBvZiBmdW5kcyB0aGF0IG11c3QgYmUgcmVzZXJ2ZWQgZm9yIGNvbGxlY3Rpb24uACxJdGVtRGVwb3NpdFkBQADh9QUAAAAAAAAAAAAAAAAE9CBUaGUgYmFzaWMgYW1vdW50IG9mIGZ1bmRzIHRoYXQgbXVzdCBiZSByZXNlcnZlZCBmb3IgYW4gaXRlbS4ATE1ldGFkYXRhRGVwb3NpdEJhc2VZAUCgavp3AAAAAAAAAAAAAAAABE0BIFRoZSBiYXNpYyBhbW91bnQgb2YgZnVuZHMgdGhhdCBtdXN0IGJlIHJlc2VydmVkIHdoZW4gYWRkaW5nIG1ldGFkYXRhIHRvIHlvdXIgaXRlbS4AUEF0dHJpYnV0ZURlcG9zaXRCYXNlWQFAAJQ1dwAAAAAAAAAAAAAAAARVASBUaGUgYmFzaWMgYW1vdW50IG9mIGZ1bmRzIHRoYXQgbXVzdCBiZSByZXNlcnZlZCB3aGVuIGFkZGluZyBhbiBhdHRyaWJ1dGUgdG8gYW4gaXRlbS4AOERlcG9zaXRQZXJCeXRlWQFAoIYBAAAAAAAAAAAAAAAAAAhZASBUaGUgYWRkaXRpb25hbCBmdW5kcyB0aGF0IG11c3QgYmUgcmVzZXJ2ZWQgZm9yIHRoZSBudW1iZXIgb2YgYnl0ZXMgc3RvcmUgaW4gbWV0YWRhdGEswCBlaXRoZXIgIm5vcm1hbCIgbWV0YWRhdGEgb3IgYXR0cmlidXRlIG1ldGFkYXRhLgAsU3RyaW5nTGltaXQ4EIAAAAAEsCBUaGUgbWF4aW11bSBsZW5ndGggb2YgZGF0YSBzdG9yZWQgb24tY2hhaW4uACBLZXlMaW1pdDgQIAAAAASgIFRoZSBtYXhpbXVtIGxlbmd0aCBvZiBhbiBhdHRyaWJ1dGUga2V5LgAoVmFsdWVMaW1pdDgQQAAAAASoIFRoZSBtYXhpbXVtIGxlbmd0aCBvZiBhbiBhdHRyaWJ1dGUgdmFsdWUuAAH1DAAIMENvbGxlY3Rpb25JZDgEnCBJZGVudGlmaWVyIGZvciB0aGUgY29sbGVjdGlvbiBvZiBpdGVtLhhJdGVtSWQ4BPQgVGhlIHR5cGUgdXNlZCB0byBpZGVudGlmeSBhIHVuaXF1ZSBpdGVtIHdpdGhpbiBhIGNvbGxlY3Rpb24uADMAABBOZnRzARBOZnRzPChDb2xsZWN0aW9uAAEEAjj5DAQABGQgRGV0YWlscyBvZiBhIGNvbGxlY3Rpb24uAExPd25lcnNoaXBBY2NlcHRhbmNlAAEEAgQ4BAAEKQEgVGhlIGNvbGxlY3Rpb24sIGlmIGFueSwgb2Ygd2hpY2ggYW4gYWNjb3VudCBpcyB3aWxsaW5nIHRvIHRha2Ugb3duZXJzaGlwLgAcQWNjb3VudAABDAICAtkMEAQACFkBIFRoZSBpdGVtcyBoZWxkIGJ5IGFueSBnaXZlbiBhY2NvdW50OyBzZXQgb3V0IHRoaXMgd2F5IHNvIHRoYXQgaXRlbXMgb3duZWQgYnkgYSBzaW5nbGVsIGFjY291bnQgY2FuIGJlIGVudW1lcmF0ZWQuAERDb2xsZWN0aW9uQWNjb3VudAABCAICjQUQBAAIaQEgVGhlIGNvbGxlY3Rpb25zIG93bmVkIGJ5IGFueSBnaXZlbiBhY2NvdW50OyBzZXQgb3V0IHRoaXMgd2F5IHNvIHRoYXQgY29sbGVjdGlvbnMgb3duZWQgYnmQIGEgc2luZ2xlIGFjY291bnQgY2FuIGJlIGVudW1lcmF0ZWQuAEBDb2xsZWN0aW9uUm9sZU9mAAEIAgKpDP0MBAAI0CBUaGUgaXRlbXMgaW4gZXhpc3RlbmNlIGFuZCB0aGVpciBvd25lcnNoaXAgZGV0YWlscy6gIFN0b3JlcyBjb2xsZWN0aW9uIHJvbGVzIGFzIHBlciBhY2NvdW50LgAQSXRlbQABCAIC0AUNBAAE0CBUaGUgaXRlbXMgaW4gZXhpc3RlbmNlIGFuZCB0aGVpciBvd25lcnNoaXAgZGV0YWlscy4AUENvbGxlY3Rpb25NZXRhZGF0YU9mAAEEAjgdDQQABGggTWV0YWRhdGEgb2YgYSBjb2xsZWN0aW9uLgA4SXRlbU1ldGFkYXRhT2YAAQgCAtAhDQQABFQgTWV0YWRhdGEgb2YgYW4gaXRlbS4AJEF0dHJpYnV0ZQABEAICAgIpDS0NBAAEcCBBdHRyaWJ1dGVzIG9mIGEgY29sbGVjdGlvbi4ALEl0ZW1QcmljZU9mAAEIAgLQ8QwEAARQIEEgcHJpY2Ugb2YgYW4gaXRlbS4AZEl0ZW1BdHRyaWJ1dGVzQXBwcm92YWxzT2YBAQgCAtA1DQQABGggSXRlbSBhdHRyaWJ1dGUgYXBwcm92YWxzLgBATmV4dENvbGxlY3Rpb25JZAAAOAQACDEBIFN0b3JlcyB0aGUgYENvbGxlY3Rpb25JZGAgdGhhdCBpcyBnb2luZyB0byBiZSB1c2VkIGZvciB0aGUgbmV4dCBjb2xsZWN0aW9uLvAgVGhpcyBnZXRzIGluY3JlbWVudGVkIHdoZW5ldmVyIGEgbmV3IGNvbGxlY3Rpb24gaXMgY3JlYXRlZC4ANFBlbmRpbmdTd2FwT2YAAQgCAtA9DQQABHwgSGFuZGxlcyBhbGwgdGhlIHBlbmRpbmcgc3dhcHMuAEhDb2xsZWN0aW9uQ29uZmlnT2YAAQQCOG0EBAAEYCBDb25maWcgb2YgYSBjb2xsZWN0aW9uLgAwSXRlbUNvbmZpZ09mAAEIAgLQlQQEAARMIENvbmZpZyBvZiBhbiBpdGVtLgABaQQAAfkIADhEQ29sbGVjdGlvbkRlcG9zaXRZAUBA8ft3AAAAAAAAAAAAAAAABAEBIFRoZSBiYXNpYyBhbW91bnQgb2YgZnVuZHMgdGhhdCBtdXN0IGJlIHJlc2VydmVkIGZvciBjb2xsZWN0aW9uLgAsSXRlbURlcG9zaXRZAUAQMgEDAAAAAAAAAAAAAAAABPQgVGhlIGJhc2ljIGFtb3VudCBvZiBmdW5kcyB0aGF0IG11c3QgYmUgcmVzZXJ2ZWQgZm9yIGFuIGl0ZW0uAExNZXRhZGF0YURlcG9zaXRCYXNlWQFAEHH/CwAAAAAAAAAAAAAAAARNASBUaGUgYmFzaWMgYW1vdW50IG9mIGZ1bmRzIHRoYXQgbXVzdCBiZSByZXNlcnZlZCB3aGVuIGFkZGluZyBtZXRhZGF0YSB0byB5b3VyIGl0ZW0uAFBBdHRyaWJ1dGVEZXBvc2l0QmFzZVkBQADC6wsAAAAAAAAAAAAAAAAEVQEgVGhlIGJhc2ljIGFtb3VudCBvZiBmdW5kcyB0aGF0IG11c3QgYmUgcmVzZXJ2ZWQgd2hlbiBhZGRpbmcgYW4gYXR0cmlidXRlIHRvIGFuIGl0ZW0uADhEZXBvc2l0UGVyQnl0ZVkBQKCGAQAAAAAAAAAAAAAAAAAIWQEgVGhlIGFkZGl0aW9uYWwgZnVuZHMgdGhhdCBtdXN0IGJlIHJlc2VydmVkIGZvciB0aGUgbnVtYmVyIG9mIGJ5dGVzIHN0b3JlIGluIG1ldGFkYXRhLMAgZWl0aGVyICJub3JtYWwiIG1ldGFkYXRhIG9yIGF0dHJpYnV0ZSBtZXRhZGF0YS4ALFN0cmluZ0xpbWl0OBAAAQAABLAgVGhlIG1heGltdW0gbGVuZ3RoIG9mIGRhdGEgc3RvcmVkIG9uLWNoYWluLgAgS2V5TGltaXQ4EEAAAAAEoCBUaGUgbWF4aW11bSBsZW5ndGggb2YgYW4gYXR0cmlidXRlIGtleS4AKFZhbHVlTGltaXQ4EAABAAAEqCBUaGUgbWF4aW11bSBsZW5ndGggb2YgYW4gYXR0cmlidXRlIHZhbHVlLgA4QXBwcm92YWxzTGltaXQ4EBQAAAAEqCBUaGUgbWF4aW11bSBhcHByb3ZhbHMgYW4gaXRlbSBjb3VsZCBoYXZlLgBwSXRlbUF0dHJpYnV0ZXNBcHByb3ZhbHNMaW1pdDgQHgAAAATUIFRoZSBtYXhpbXVtIGF0dHJpYnV0ZXMgYXBwcm92YWxzIGFuIGl0ZW0gY291bGQgaGF2ZS4AHE1heFRpcHM4EAoAAAAEqCBUaGUgbWF4IG51bWJlciBvZiB0aXBzIGEgdXNlciBjb3VsZCBzZW5kLgBMTWF4RGVhZGxpbmVEdXJhdGlvbjgQABpPAASoIFRoZSBtYXggZHVyYXRpb24gaW4gYmxvY2tzIGZvciBkZWFkbGluZXMuAFBNYXhBdHRyaWJ1dGVzUGVyQ2FsbDgQCgAAAATgIFRoZSBtYXggbnVtYmVyIG9mIGF0dHJpYnV0ZXMgYSB1c2VyIGNvdWxkIHNldCBwZXIgY2FsbC4AIEZlYXR1cmVzQQ0gAAAAAAAAAAAEkCBEaXNhYmxlcyBzb21lIG9mIHBhbGxldCdzIGZlYXR1cmVzLgABSQ0ADDBDb2xsZWN0aW9uSWQ4JJwgSWRlbnRpZmllciBmb3IgdGhlIGNvbGxlY3Rpb24gb2YgaXRlbS4ASQEgU0FGRVRZOiBUaGUgZnVuY3Rpb25zIGluIHRoZSBgSW5jcmVtZW50YWJsZWAgdHJhaXQgYXJlIGZhbGxpYmxlLiBJZiB0aGUgZnVuY3Rpb25zQQEgb2YgdGhlIGltcGxlbWVudGF0aW9uIGJvdGggcmV0dXJuIGBOb25lYCwgdGhlIGF1dG9tYXRpYyBDb2xsZWN0aW9uSWQgZ2VuZXJhdGlvbikBIHNob3VsZCBub3QgYmUgdXNlZC4gU28gdGhlIGBjcmVhdGVgIGFuZCBgZm9yY2VfY3JlYXRlYCBleHRyaW5zaWNzIGFuZCB0aGVNASBgY3JlYXRlX2NvbGxlY3Rpb25gIGZ1bmN0aW9uIHdpbGwgcmV0dXJuIGFuIGBVbmtub3duQ29sbGVjdGlvbmAgRXJyb3IuIEluc3RlYWQgdXNlQQEgdGhlIGBjcmVhdGVfY29sbGVjdGlvbl93aXRoX2lkYCBmdW5jdGlvbi4gSG93ZXZlciwgaWYgdGhlIGBJbmNyZW1lbnRhYmxlYCB0cmFpdEkBIGltcGxlbWVudGF0aW9uIGhhcyBhbiBpbmNyZW1lbnRhbCBvcmRlciwgdGhlIGBjcmVhdGVfY29sbGVjdGlvbl93aXRoX2lkYCBmdW5jdGlvbvwgc2hvdWxkIG5vdCBiZSB1c2VkIGFzIGl0IGNhbiBjbGFpbSBhIHZhbHVlIGluIHRoZSBJRCBzZXF1ZW5jZS4YSXRlbUlkOAT0IFRoZSB0eXBlIHVzZWQgdG8gaWRlbnRpZnkgYSB1bmlxdWUgaXRlbSB3aXRoaW4gYSBjb2xsZWN0aW9uLkRPZmZjaGFpblNpZ25hdHVyZb0EDGggT2ZmLUNoYWluIHNpZ25hdHVyZSB0eXBlLgAJASBDYW4gdmVyaWZ5IHdoZXRoZXIgYW4gYFNlbGY6Ok9mZmNoYWluUHVibGljYCBjcmVhdGVkIGEgc2lnbmF0dXJlLgA0AAA0Rm9yZWlnbkFzc2V0cwE0Rm9yZWlnbkFzc2V0cxgUQXNzZXQAAQQCHQKhDAQABFQgRGV0YWlscyBvZiBhbiBhc3NldC4AHEFjY291bnQAAQgCAk0NrQwEAATkIFRoZSBob2xkaW5ncyBvZiBhIHNwZWNpZmljIGFjY291bnQgZm9yIGEgc3BlY2lmaWMgYXNzZXQuACRBcHByb3ZhbHMAAQwCAgJRDb0MBAAMWQEgQXBwcm92ZWQgYmFsYW5jZSB0cmFuc2ZlcnMuIEZpcnN0IGJhbGFuY2UgaXMgdGhlIGFtb3VudCBhcHByb3ZlZCBmb3IgdHJhbnNmZXIuIFNlY29uZOggaXMgdGhlIGFtb3VudCBvZiBgVDo6Q3VycmVuY3lgIHJlc2VydmVkIGZvciBzdG9yaW5nIHRoaXMuSQEgRmlyc3Qga2V5IGlzIHRoZSBhc3NldCBJRCwgc2Vjb25kIGtleSBpcyB0aGUgb3duZXIgYW5kIHRoaXJkIGtleSBpcyB0aGUgZGVsZWdhdGUuACBNZXRhZGF0YQEBBAIdAlUNUAAAAAAAAAAAAAAAAAAAAAAAAAAABFggTWV0YWRhdGEgb2YgYW4gYXNzZXQuACBSZXNlcnZlcwEBBAIdAs0EBAAE/CBNYXBzIGFuIGFzc2V0IHRvIGEgbGlzdCBvZiBpdHMgY29uZmlndXJlZCByZXNlcnZlIGluZm9ybWF0aW9uLgAsTmV4dEFzc2V0SWQAAB0CBAAkbQEgVGhlIGFzc2V0IElEIGVuZm9yY2VkIGZvciB0aGUgbmV4dCBhc3NldCBjcmVhdGlvbiwgaWYgYW55IHByZXNlbnQuIE90aGVyd2lzZSwgdGhpcyBzdG9yYWdlUCBpdGVtIGhhcyBubyBlZmZlY3QuAGUBIFRoaXMgY2FuIGJlIHVzZWZ1bCBmb3Igc2V0dGluZyB1cCBjb25zdHJhaW50cyBmb3IgSURzIG9mIHRoZSBuZXcgYXNzZXRzLiBGb3IgZXhhbXBsZSwgYnlpASBwcm92aWRpbmcgYW4gaW5pdGlhbCBbYE5leHRBc3NldElkYF0gYW5kIHVzaW5nIHRoZSBbYGNyYXRlOjpBdXRvSW5jQXNzZXRJZGBdIGNhbGxiYWNrLCBhbuggYXV0by1pbmNyZW1lbnQgbW9kZWwgY2FuIGJlIGFwcGxpZWQgdG8gYWxsIG5ldyBhc3NldCBJRHMuACEBIFRoZSBpbml0aWFsIG5leHQgYXNzZXQgSUQgY2FuIGJlIHNldCB1c2luZyB0aGUgW2BHZW5lc2lzQ29uZmlnYF0gb3IgdGhlIQEgW1NldE5leHRBc3NldElkXShgbWlncmF0aW9uOjpuZXh0X2Fzc2V0X2lkOjpTZXROZXh0QXNzZXRJZGApIG1pZ3JhdGlvbi4AAckEAAEBCQAcQFJlbW92ZUl0ZW1zTGltaXQ4EOgDAAAMUQEgTWF4IG51bWJlciBvZiBpdGVtcyB0byBkZXN0cm95IHBlciBgZGVzdHJveV9hY2NvdW50c2AgYW5kIGBkZXN0cm95X2FwcHJvdmFsc2AgY2FsbC4AOQEgTXVzdCBiZSBjb25maWd1cmVkIHRvIHJlc3VsdCBpbiBhIHdlaWdodCB0aGF0IG1ha2VzIGVhY2ggY2FsbCBmaXQgaW4gYSBibG9jay4AMEFzc2V0RGVwb3NpdFkBQMB+V3gAAAAAAAAAAAAAAAAE+CBUaGUgYmFzaWMgYW1vdW50IG9mIGZ1bmRzIHRoYXQgbXVzdCBiZSByZXNlcnZlZCBmb3IgYW4gYXNzZXQuAExBc3NldEFjY291bnREZXBvc2l0WQFAAP5NdwAAAAAAAAAAAAAAAAhFASBUaGUgYW1vdW50IG9mIGZ1bmRzIHRoYXQgbXVzdCBiZSByZXNlcnZlZCBmb3IgYSBub24tcHJvdmlkZXIgYXNzZXQgYWNjb3VudCB0byBiZTAgbWFpbnRhaW5lZC4ATE1ldGFkYXRhRGVwb3NpdEJhc2VZAUCAVp13AAAAAAAAAAAAAAAABFEBIFRoZSBiYXNpYyBhbW91bnQgb2YgZnVuZHMgdGhhdCBtdXN0IGJlIHJlc2VydmVkIHdoZW4gYWRkaW5nIG1ldGFkYXRhIHRvIHlvdXIgYXNzZXQuAFhNZXRhZGF0YURlcG9zaXRQZXJCeXRlWQFAoIYBAAAAAAAAAAAAAAAAAAhVASBUaGUgYWRkaXRpb25hbCBmdW5kcyB0aGF0IG11c3QgYmUgcmVzZXJ2ZWQgZm9yIHRoZSBudW1iZXIgb2YgYnl0ZXMgeW91IHN0b3JlIGluIHlvdXIoIG1ldGFkYXRhLgA8QXBwcm92YWxEZXBvc2l0WQFAAOH1BQAAAAAAAAAAAAAAAAQhASBUaGUgYW1vdW50IG9mIGZ1bmRzIHRoYXQgbXVzdCBiZSByZXNlcnZlZCB3aGVuIGNyZWF0aW5nIGEgbmV3IGFwcHJvdmFsLgAsU3RyaW5nTGltaXQ4EDIAAAAE4CBUaGUgbWF4aW11bSBsZW5ndGggb2YgYSBuYW1lIG9yIHN5bWJvbCBzdG9yZWQgb24tY2hhaW4uAAFdDQAUHEJhbGFuY2VZAQScIFRoZSB1bml0cyBpbiB3aGljaCB3ZSByZWNvcmQgYmFsYW5jZXMuHEFzc2V0SWQdAgSMIElkZW50aWZpZXIgZm9yIHRoZSBjbGFzcyBvZiBhc3NldC5AQXNzZXRJZFBhcmFtZXRlch0CHFkBIFdyYXBwZXIgYXJvdW5kIGBTZWxmOjpBc3NldElkYCB0byB1c2UgaW4gZGlzcGF0Y2hhYmxlIGNhbGwgc2lnbmF0dXJlcy4gQWxsb3dzIHRoZSB1c2VRASBvZiBjb21wYWN0IGVuY29kaW5nIGluIGluc3RhbmNlcyBvZiB0aGUgcGFsbGV0LCB3aGljaCB3aWxsIHByZXZlbnQgYnJlYWtpbmcgY2hhbmdlcwUBIHJlc3VsdGluZyBmcm9tIHRoZSByZW1vdmFsIG9mIGBIYXNDb21wYWN0YCBmcm9tIGBTZWxmOjpBc3NldElkYC4AWQEgVGhpcyB0eXBlIGluY2x1ZGVzIHRoZSBgRnJvbTxTZWxmOjpBc3NldElkPmAgYm91bmQsIHNpbmNlIHRpZ2h0bHkgY291cGxlZCBwYWxsZXRzIG1heUUBIHdhbnQgdG8gY29udmVydCBhbiBgQXNzZXRJZGAgaW50byBhIHBhcmFtZXRlciBmb3IgY2FsbGluZyBkaXNwYXRjaGFibGUgZnVuY3Rpb25zKCBkaXJlY3RseS4sUmVzZXJ2ZURhdGHRBAToIEluZm9ybWF0aW9uIGFib3V0IHJlc2VydmUgbG9jYXRpb25zIGZvciBhIGNsYXNzIG9mIGFzc2V0LhRFeHRyYRAE+CBBZGRpdGlvbmFsIGRhdGEgdG8gYmUgc3RvcmVkIHdpdGggYW4gYWNjb3VudCdzIGFzc2V0IGJhbGFuY2UuEDDmSlYCb0tePC0ZYoOpoX2nApetC0vdPaS3RimmWm5cNGFzc2V0X2RldGFpbHMECGlkHQLNDASoIFByb3ZpZGUgdGhlIGFzc2V0IGRldGFpbHMgZm9yIGFzc2V0IGBpZGAuADDmSlYCb0tePC0ZYoOpoX1TGsfiG3axIedh5HNBmhsCKGJhbGFuY2Vfb2YIDHdobwQIaWQdAmUEBLQgUHJvdmlkZSB0aGUgYmFsYW5jZSBvZiBgd2hvYCBmb3IgYXNzZXQgYGlkYC4AMOZKVgJvS148LRlig6mhfS6HZqQNG2nWFRvYAeV1UF4wZ2V0X21ldGFkYXRhBAhpZB0CYQ0EwCBQcm92aWRlIHRoZSBjb25maWd1cmVkIG1ldGFkYXRhIGZvciBhc3NldCBgaWRgLgAw5kpWAm9LXjwtGWKDqaF9ZPY/KSPjmCgkMWOBrh5phkRnZXRfcmVzZXJ2ZXNfZGF0YQQIaWQdAtUEBNQgUHJvdmlkZSB0aGUgY29uZmlndXJlZCByZXNlcnZlcyBkYXRhIGZvciBhc3NldCBgaWRgLgA1AAAoUG9vbEFzc2V0cwEoUG9vbEFzc2V0cxgUQXNzZXQAAQQCOKEMBAAEVCBEZXRhaWxzIG9mIGFuIGFzc2V0LgAcQWNjb3VudAABCAICqQytDAQABOQgVGhlIGhvbGRpbmdzIG9mIGEgc3BlY2lmaWMgYWNjb3VudCBmb3IgYSBzcGVjaWZpYyBhc3NldC4AJEFwcHJvdmFscwABDAICArkMvQwEAAxZASBBcHByb3ZlZCBiYWxhbmNlIHRyYW5zZmVycy4gRmlyc3QgYmFsYW5jZSBpcyB0aGUgYW1vdW50IGFwcHJvdmVkIGZvciB0cmFuc2Zlci4gU2Vjb25k6CBpcyB0aGUgYW1vdW50IG9mIGBUOjpDdXJyZW5jeWAgcmVzZXJ2ZWQgZm9yIHN0b3JpbmcgdGhpcy5JASBGaXJzdCBrZXkgaXMgdGhlIGFzc2V0IElELCBzZWNvbmQga2V5IGlzIHRoZSBvd25lciBhbmQgdGhpcmQga2V5IGlzIHRoZSBkZWxlZ2F0ZS4AIE1ldGFkYXRhAQEEAjhlDVAAAAAAAAAAAAAAAAAAAAAAAAAAAARYIE1ldGFkYXRhIG9mIGFuIGFzc2V0LgAgUmVzZXJ2ZXMBAQQCOEkEBAAE/CBNYXBzIGFuIGFzc2V0IHRvIGEgbGlzdCBvZiBpdHMgY29uZmlndXJlZCByZXNlcnZlIGluZm9ybWF0aW9uLgAsTmV4dEFzc2V0SWQAADgEACRtASBUaGUgYXNzZXQgSUQgZW5mb3JjZWQgZm9yIHRoZSBuZXh0IGFzc2V0IGNyZWF0aW9uLCBpZiBhbnkgcHJlc2VudC4gT3RoZXJ3aXNlLCB0aGlzIHN0b3JhZ2VQIGl0ZW0gaGFzIG5vIGVmZmVjdC4AZQEgVGhpcyBjYW4gYmUgdXNlZnVsIGZvciBzZXR0aW5nIHVwIGNvbnN0cmFpbnRzIGZvciBJRHMgb2YgdGhlIG5ldyBhc3NldHMuIEZvciBleGFtcGxlLCBieWkBIHByb3ZpZGluZyBhbiBpbml0aWFsIFtgTmV4dEFzc2V0SWRgXSBhbmQgdXNpbmcgdGhlIFtgY3JhdGU6OkF1dG9JbmNBc3NldElkYF0gY2FsbGJhY2ssIGFu6CBhdXRvLWluY3JlbWVudCBtb2RlbCBjYW4gYmUgYXBwbGllZCB0byBhbGwgbmV3IGFzc2V0IElEcy4AIQEgVGhlIGluaXRpYWwgbmV4dCBhc3NldCBJRCBjYW4gYmUgc2V0IHVzaW5nIHRoZSBbYEdlbmVzaXNDb25maWdgXSBvciB0aGUhASBbU2V0TmV4dEFzc2V0SWRdKGBtaWdyYXRpb246Om5leHRfYXNzZXRfaWQ6OlNldE5leHRBc3NldElkYCkgbWlncmF0aW9uLgAB2QQAAQUJABxAUmVtb3ZlSXRlbXNMaW1pdDgQ6AMAAAxRASBNYXggbnVtYmVyIG9mIGl0ZW1zIHRvIGRlc3Ryb3kgcGVyIGBkZXN0cm95X2FjY291bnRzYCBhbmQgYGRlc3Ryb3lfYXBwcm92YWxzYCBjYWxsLgA5ASBNdXN0IGJlIGNvbmZpZ3VyZWQgdG8gcmVzdWx0IGluIGEgd2VpZ2h0IHRoYXQgbWFrZXMgZWFjaCBjYWxsIGZpdCBpbiBhIGJsb2NrLgAwQXNzZXREZXBvc2l0WQFAAAAAAAAAAAAAAAAAAAAAAAT4IFRoZSBiYXNpYyBhbW91bnQgb2YgZnVuZHMgdGhhdCBtdXN0IGJlIHJlc2VydmVkIGZvciBhbiBhc3NldC4ATEFzc2V0QWNjb3VudERlcG9zaXRZAUAA/k13AAAAAAAAAAAAAAAACEUBIFRoZSBhbW91bnQgb2YgZnVuZHMgdGhhdCBtdXN0IGJlIHJlc2VydmVkIGZvciBhIG5vbi1wcm92aWRlciBhc3NldCBhY2NvdW50IHRvIGJlMCBtYWludGFpbmVkLgBMTWV0YWRhdGFEZXBvc2l0QmFzZVkBQAAAAAAAAAAAAAAAAAAAAAAEUQEgVGhlIGJhc2ljIGFtb3VudCBvZiBmdW5kcyB0aGF0IG11c3QgYmUgcmVzZXJ2ZWQgd2hlbiBhZGRpbmcgbWV0YWRhdGEgdG8geW91ciBhc3NldC4AWE1ldGFkYXRhRGVwb3NpdFBlckJ5dGVZAUAAAAAAAAAAAAAAAAAAAAAACFUBIFRoZSBhZGRpdGlvbmFsIGZ1bmRzIHRoYXQgbXVzdCBiZSByZXNlcnZlZCBmb3IgdGhlIG51bWJlciBvZiBieXRlcyB5b3Ugc3RvcmUgaW4geW91ciggbWV0YWRhdGEuADxBcHByb3ZhbERlcG9zaXRZAUAA4fUFAAAAAAAAAAAAAAAABCEBIFRoZSBhbW91bnQgb2YgZnVuZHMgdGhhdCBtdXN0IGJlIHJlc2VydmVkIHdoZW4gY3JlYXRpbmcgYSBuZXcgYXBwcm92YWwuACxTdHJpbmdMaW1pdDgQMgAAAATgIFRoZSBtYXhpbXVtIGxlbmd0aCBvZiBhIG5hbWUgb3Igc3ltYm9sIHN0b3JlZCBvbi1jaGFpbi4AAW0NABQcQmFsYW5jZVkBBJwgVGhlIHVuaXRzIGluIHdoaWNoIHdlIHJlY29yZCBiYWxhbmNlcy4cQXNzZXRJZDgEjCBJZGVudGlmaWVyIGZvciB0aGUgY2xhc3Mgb2YgYXNzZXQuQEFzc2V0SWRQYXJhbWV0ZXI4HFkBIFdyYXBwZXIgYXJvdW5kIGBTZWxmOjpBc3NldElkYCB0byB1c2UgaW4gZGlzcGF0Y2hhYmxlIGNhbGwgc2lnbmF0dXJlcy4gQWxsb3dzIHRoZSB1c2VRASBvZiBjb21wYWN0IGVuY29kaW5nIGluIGluc3RhbmNlcyBvZiB0aGUgcGFsbGV0LCB3aGljaCB3aWxsIHByZXZlbnQgYnJlYWtpbmcgY2hhbmdlcwUBIHJlc3VsdGluZyBmcm9tIHRoZSByZW1vdmFsIG9mIGBIYXNDb21wYWN0YCBmcm9tIGBTZWxmOjpBc3NldElkYC4AWQEgVGhpcyB0eXBlIGluY2x1ZGVzIHRoZSBgRnJvbTxTZWxmOjpBc3NldElkPmAgYm91bmQsIHNpbmNlIHRpZ2h0bHkgY291cGxlZCBwYWxsZXRzIG1heUUBIHdhbnQgdG8gY29udmVydCBhbiBgQXNzZXRJZGAgaW50byBhIHBhcmFtZXRlciBmb3IgY2FsbGluZyBkaXNwYXRjaGFibGUgZnVuY3Rpb25zKCBkaXJlY3RseS4sUmVzZXJ2ZURhdGEQBOggSW5mb3JtYXRpb24gYWJvdXQgcmVzZXJ2ZSBsb2NhdGlvbnMgZm9yIGEgY2xhc3Mgb2YgYXNzZXQuFEV4dHJhEAT4IEFkZGl0aW9uYWwgZGF0YSB0byBiZSBzdG9yZWQgd2l0aCBhbiBhY2NvdW50J3MgYXNzZXQgYmFsYW5jZS4QTbBrocpvGLHtsG/wgtJECacCl60LS909pLdGKaZablw0YXNzZXRfZGV0YWlscwQIaWQ4zQwEqCBQcm92aWRlIHRoZSBhc3NldCBkZXRhaWxzIGZvciBhc3NldCBgaWRgLgBNsGuhym8Yse2wb/CC0kQJUxrH4ht2sSHnYeRzQZobAihiYWxhbmNlX29mCAx3aG8ECGlkOGUEBLQgUHJvdmlkZSB0aGUgYmFsYW5jZSBvZiBgd2hvYCBmb3IgYXNzZXQgYGlkYC4ATbBrocpvGLHtsG/wgtJECS6HZqQNG2nWFRvYAeV1UF4wZ2V0X21ldGFkYXRhBAhpZDhxDQTAIFByb3ZpZGUgdGhlIGNvbmZpZ3VyZWQgbWV0YWRhdGEgZm9yIGFzc2V0IGBpZGAuAE2wa6HKbxix7bBv8ILSRAlk9j8pI+OYKCQxY4GuHmmGRGdldF9yZXNlcnZlc19kYXRhBAhpZDhNBATUIFByb3ZpZGUgdGhlIGNvbmZpZ3VyZWQgcmVzZXJ2ZXMgZGF0YSBmb3IgYXNzZXQgYGlkYC4ANgAAPEFzc2V0Q29udmVyc2lvbgE8QXNzZXRDb252ZXJzaW9uCBRQb29scwABBAINCXUNBAAIaQEgTWFwIGZyb20gYFBvb2xBc3NldElkYCB0byBgUG9vbEluZm9gLiBUaGlzIGVzdGFibGlzaGVzIHdoZXRoZXIgYSBwb29sIGhhcyBiZWVuIG9mZmljaWFsbHk9ASBjcmVhdGVkIHJhdGhlciB0aGFuIHBlb3BsZSBzZW5kaW5nIHRva2VucyBkaXJlY3RseSB0byBhIHBvb2wncyBwdWJsaWMgYWNjb3VudC4APE5leHRQb29sQXNzZXRJZAAAOAQACCUBIFN0b3JlcyB0aGUgYFBvb2xBc3NldElkYCB0aGF0IGlzIGdvaW5nIHRvIGJlIHVzZWQgZm9yIHRoZSBuZXh0IGxwIHRva2VuLuQgVGhpcyBnZXRzIGluY3JlbWVudGVkIHdoZW5ldmVyIGEgbmV3IGxwIHBvb2wgaXMgY3JlYXRlZC4AAd0EAAEJCQAcFExQRmVlEQkQuAsAAAQdASBUaGUgZnJhY3Rpb24gb2YgZXZlcnkgc3dhcCB0aGF0IHRoZSBsaXF1aWRpdHkgcHJvdmlkZXJzIHRha2UgYXMgYSBmZWUuADBQb29sU2V0dXBGZWVZAUBALZPvAAAAAAAAAAAAAAAABIggQSBvbmUtdGltZSBmZWUgdG8gc2V0dXAgdGhlIHBvb2wuAERQb29sU2V0dXBGZWVBc3NldB0CCAEABDkBIEFzc2V0IGNsYXNzIGZyb20gW2BDb25maWc6OkFzc2V0c2BdIHVzZWQgdG8gcGF5IHRoZSBbYENvbmZpZzo6UG9vbFNldHVwRmVlYF0uAFhMaXF1aWRpdHlXaXRoZHJhd2FsRmVlEQkQAAAAAASEIEEgZmVlIHRvIHdpdGhkcmF3IHRoZSBsaXF1aWRpdHkuAEBNaW50TWluTGlxdWlkaXR5WQFAZAAAAAAAAAAAAAAAAAAAAAQ9ASBUaGUgbWluaW11bSBMUCB0b2tlbiBhbW91bnQgdGhhdCBjb3VsZCBiZSBtaW50ZWQuIEFtZWxpb3JhdGVzIHJvdW5kaW5nIGVycm9ycy4ARE1heFN3YXBQYXRoTGVuZ3RoOBADAAAABIggVGhlIG1heCBudW1iZXIgb2YgaG9wcyBpbiBhIHN3YXAuACBQYWxsZXRJZFELIHB5L2FzY29uBPQgVGhlIHBhbGxldCdzIGlkLCB1c2VkIGZvciBkZXJpdmluZyBpdHMgc292ZXJlaWduIGFjY291bnQgSUQuAAF5DQAIJEFzc2V0S2luZB0CCF0BIFR5cGUgb2YgYXNzZXQgY2xhc3MsIHNvdXJjZWQgZnJvbSBbYENvbmZpZzo6QXNzZXRzYF0sIHV0aWxpemVkIHRvIG9mZmVyIGxpcXVpZGl0eSB0byBhGCBwb29sLhhQb29sSWQNCQRsIExpcXVpZGl0eSBwb29sIGlkZW50aWZpZXIuDLUmBtqA0CqzdEKDaaXyRvFLWmdWZt7//dMa0S/bqv/jMGdldF9yZXNlcnZlcwgYYXNzZXQxHQIYYXNzZXQyHQJ9DQi8IFJldHVybnMgdGhlIGJhbGFuY2Ugb2YgZWFjaCBhc3NldCBpbiB0aGUgcG9vbC5VASBUaGUgdHVwbGUgcmVzdWx0IGlzIGluIHRoZSBvcmRlciByZXF1ZXN0ZWQgKG5vdCBuZWNlc3NhcmlseSB0aGUgc2FtZSBhcyBwb29sIG9yZGVyKS4AtSYG2oDQKrN0QoNppfJG8Xjng3C91VyYZEm8bNVQEAuMcXVvdGVfcHJpY2VfZXhhY3RfdG9rZW5zX2Zvcl90b2tlbnMQGGFzc2V0MR0CGGFzc2V0Mh0CGGFtb3VudFkBLGluY2x1ZGVfZmVlXQFlBBwRASBHZXRzIGEgcXVvdGUgZm9yIHN3YXBwaW5nIGFuIGV4YWN0IGFtb3VudCBvZiBgYXNzZXQxYCBmb3IgYGFzc2V0MmAuADUBIElmIGBpbmNsdWRlX2ZlZWAgaXMgdHJ1ZSwgdGhlIHF1b3RlIHdpbGwgaW5jbHVkZSB0aGUgbGlxdWlkaXR5IHByb3ZpZGVyIGZlZS4RASBJZiB0aGUgcG9vbCBkb2VzIG5vdCBleGlzdCBvciBoYXMgbm8gbGlxdWlkaXR5LCBgTm9uZWAgaXMgcmV0dXJuZWQuOQEgTm90ZSB0aGF0IHRoZSBwcmljZSBtYXkgaGF2ZSBjaGFuZ2VkIGJ5IHRoZSB0aW1lIHRoZSB0cmFuc2FjdGlvbiBpcyBleGVjdXRlZC6wIChVc2UgYGFtb3VudF9vdXRfbWluYCB0byBjb250cm9sIHNsaXBwYWdlLimoIFJldHVybnMgYFNvbWUocXVvdGVkX2Ftb3VudClgIG9uIHN1Y2Nlc3MuALUmBtqA0CqzdEKDaaXyRvEoeQ/vmy3jX0SNPsNzk2mNjHF1b3RlX3ByaWNlX3Rva2Vuc19mb3JfZXhhY3RfdG9rZW5zEBhhc3NldDEdAhhhc3NldDIdAhhhbW91bnRZASxpbmNsdWRlX2ZlZV0BZQQcQQEgR2V0cyBhIHF1b3RlIGZvciBzd2FwcGluZyBgYW1vdW50YCBvZiBgYXNzZXQxYCBmb3IgYW4gZXhhY3QgYW1vdW50IG9mIGBhc3NldDJgLgA1ASBJZiBgaW5jbHVkZV9mZWVgIGlzIHRydWUsIHRoZSBxdW90ZSB3aWxsIGluY2x1ZGUgdGhlIGxpcXVpZGl0eSBwcm92aWRlciBmZWUuEQEgSWYgdGhlIHBvb2wgZG9lcyBub3QgZXhpc3Qgb3IgaGFzIG5vIGxpcXVpZGl0eSwgYE5vbmVgIGlzIHJldHVybmVkLjkBIE5vdGUgdGhhdCB0aGUgcHJpY2UgbWF5IGhhdmUgY2hhbmdlZCBieSB0aGUgdGltZSB0aGUgdHJhbnNhY3Rpb24gaXMgZXhlY3V0ZWQurCAoVXNlIGBhbW91bnRfaW5fbWF4YCB0byBjb250cm9sIHNsaXBwYWdlLimoIFJldHVybnMgYFNvbWUocXVvdGVkX2Ftb3VudClgIG9uIHN1Y2Nlc3MuADcAADRBc3NldHNGcmVlemVyATRBc3NldHNGcmVlemVyCBxGcmVlemVzAQEIAgKpDBULBAAEFQEgQSBtYXAgdGhhdCBzdG9yZXMgZnJlZXplcyBhcHBsaWVkIG9uIGFuIGFjY291bnQgZm9yIGEgZ2l2ZW4gQXNzZXRJZC4AOEZyb3plbkJhbGFuY2VzAAEIAgKpDFkBBAAEZQEgQSBtYXAgdGhhdCBzdG9yZXMgdGhlIGN1cnJlbnQgdG90YWwgZnJvemVuIGJhbGFuY2UgZm9yIGV2ZXJ5IGFjY291bnQgb24gYSBnaXZlbiBBc3NldElkLgAAAR0JAAABhQ0ABExSdW50aW1lRnJlZXplUmVhc29uHQsEfCBUaGUgb3ZlcmFyY2hpbmcgZnJlZXplIHJlYXNvbi4AOAAAMEFzc2V0c0hvbGRlcgEwQXNzZXRzSG9sZGVyCBRIb2xkcwEBCAICqQwJCwQABA0BIEEgbWFwIHRoYXQgc3RvcmVzIGhvbGRzIGFwcGxpZWQgb24gYW4gYWNjb3VudCBmb3IgYSBnaXZlbiBBc3NldElkLgA4QmFsYW5jZXNPbkhvbGQAAQgCAqkMWQEEAARpASBBIG1hcCB0aGF0IHN0b3JlcyB0aGUgY3VycmVudCB0b3RhbCBiYWxhbmNlIG9uIGhvbGQgZm9yIGV2ZXJ5IGFjY291bnQgb24gYSBnaXZlbiBBc3NldElkLgAAASEJAAABiQ0ABERSdW50aW1lSG9sZFJlYXNvbmUIBHwgVGhlIG92ZXJhcmNoaW5nIGZyZWV6ZSByZWFzb24uADkAACBUcmVhc3VyeQEgVHJlYXN1cnkcNFByb3Bvc2FsQ291bnQBADgQAAAAABBBASBERVBSRUNBVEVEOiBhc3NvY2lhdGVkIHdpdGggYHNwZW5kX2xvY2FsYCBjYWxsIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gTWF5IDIwMjUuaQEgUmVmZXIgdG8gPGh0dHBzOi8vZ2l0aHViLmNvbS9wYXJpdHl0ZWNoL3BvbGthZG90LXNkay9wdWxsLzU5NjE+IGZvciBtaWdyYXRpb24gdG8gYHNwZW5kYC4ApCBOdW1iZXIgb2YgcHJvcG9zYWxzIHRoYXQgaGF2ZSBiZWVuIG1hZGUuACRQcm9wb3NhbHMAAQQFOI0NBAAQQQEgREVQUkVDQVRFRDogYXNzb2NpYXRlZCB3aXRoIGBzcGVuZF9sb2NhbGAgY2FsbCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIE1heSAyMDI1LmkBIFJlZmVyIHRvIDxodHRwczovL2dpdGh1Yi5jb20vcGFyaXR5dGVjaC9wb2xrYWRvdC1zZGsvcHVsbC81OTYxPiBmb3IgbWlncmF0aW9uIHRvIGBzcGVuZGAuAHwgUHJvcG9zYWxzIHRoYXQgaGF2ZSBiZWVuIG1hZGUuACxEZWFjdGl2YXRlZAEAWQFAAAAAAAAAAAAAAAAAAAAAAATwIFRoZSBhbW91bnQgd2hpY2ggaGFzIGJlZW4gcmVwb3J0ZWQgYXMgaW5hY3RpdmUgdG8gQ3VycmVuY3kuACRBcHByb3ZhbHMBAJENBAAQQQEgREVQUkVDQVRFRDogYXNzb2NpYXRlZCB3aXRoIGBzcGVuZF9sb2NhbGAgY2FsbCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIE1heSAyMDI1LmkBIFJlZmVyIHRvIDxodHRwczovL2dpdGh1Yi5jb20vcGFyaXR5dGVjaC9wb2xrYWRvdC1zZGsvcHVsbC81OTYxPiBmb3IgbWlncmF0aW9uIHRvIGBzcGVuZGAuAPggUHJvcG9zYWwgaW5kaWNlcyB0aGF0IGhhdmUgYmVlbiBhcHByb3ZlZCBidXQgbm90IHlldCBhd2FyZGVkLgAoU3BlbmRDb3VudAEAOBAAAAAABKQgVGhlIGNvdW50IG9mIHNwZW5kcyB0aGF0IGhhdmUgYmVlbiBtYWRlLgAYU3BlbmRzAAEEBTiVDQQABNAgU3BlbmRzIHRoYXQgaGF2ZSBiZWVuIGFwcHJvdmVkIGFuZCBiZWluZyBwcm9jZXNzZWQuADxMYXN0U3BlbmRQZXJpb2QAADgEAATUIFRoZSBibG9ja251bWJlciBmb3IgdGhlIGxhc3QgdHJpZ2dlcmVkIHNwZW5kIHBlcmlvZC4AAeUECAMClQFUaGUgYHNwZW5kX2xvY2FsYCBjYWxsIHdpbGwgYmUgcmVtb3ZlZCBieSBNYXkgMjAyNS4gTWlncmF0ZSB0byB0aGUgbmV3IGZsb3cgYW5kIHVzZSB0aGUgYHNwZW5kYCBjYWxsLgAEArUBVGhlIGByZW1vdmVfYXBwcm92YWxgIGNhbGwgd2lsbCBiZSByZW1vdmVkIGJ5IE1heSAyMDI1LiBJdCBhc3NvY2lhdGVkIHdpdGggdGhlIGRlcHJlY2F0ZWQgYHNwZW5kX2xvY2FsYCBjYWxsLgABJQkAGCxTcGVuZFBlcmlvZDgQwKgAAASIIFBlcmlvZCBiZXR3ZWVuIHN1Y2Nlc3NpdmUgc3BlbmRzLgAQQnVybhEJEAAAAAAEEQEgUGVyY2VudGFnZSBvZiBzcGFyZSBmdW5kcyAoaWYgYW55KSB0aGF0IGFyZSBidXJudCBwZXIgc3BlbmQgcGVyaW9kLgAgUGFsbGV0SWRRCyBweS90cnNyeQQZASBUaGUgdHJlYXN1cnkncyBwYWxsZXQgaWQsIHVzZWQgZm9yIGRlcml2aW5nIGl0cyBzb3ZlcmVpZ24gYWNjb3VudCBJRC4AME1heEFwcHJvdmFsczgQZAAAABhBASBERVBSRUNBVEVEOiBhc3NvY2lhdGVkIHdpdGggYHNwZW5kX2xvY2FsYCBjYWxsIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gTWF5IDIwMjUuaQEgUmVmZXIgdG8gPGh0dHBzOi8vZ2l0aHViLmNvbS9wYXJpdHl0ZWNoL3BvbGthZG90LXNkay9wdWxsLzU5NjE+IGZvciBtaWdyYXRpb24gdG8gYHNwZW5kYC4AFQEgVGhlIG1heGltdW0gbnVtYmVyIG9mIGFwcHJvdmFscyB0aGF0IGNhbiB3YWl0IGluIHRoZSBzcGVuZGluZyBxdWV1ZS4ATQEgTk9URTogVGhpcyBwYXJhbWV0ZXIgaXMgYWxzbyB1c2VkIHdpdGhpbiB0aGUgQm91bnRpZXMgUGFsbGV0IGV4dGVuc2lvbiBpZiBlbmFibGVkLgAwUGF5b3V0UGVyaW9kOBAA4QAABBkBIFRoZSBwZXJpb2QgZHVyaW5nIHdoaWNoIGFuIGFwcHJvdmVkIHRyZWFzdXJ5IHNwZW5kIGhhcyB0byBiZSBjbGFpbWVkLgAscG90X2FjY291bnQEgG1vZGxweS90cnNyeQAAAAAAAAAAAAAAAAAAAAAAAAAABKAgR2V0cyB0aGlzIHBhbGxldCdzIGRlcml2ZWQgcG90IGFjY291bnQuAAGdDQAIJEFzc2V0S2luZOkEBC0BIFR5cGUgcGFyYW1ldGVyIHJlcHJlc2VudGluZyB0aGUgYXNzZXQga2luZHMgdG8gYmUgc3BlbnQgZnJvbSB0aGUgdHJlYXN1cnkuLEJlbmVmaWNpYXJ57QQEXQEgVHlwZSBwYXJhbWV0ZXIgdXNlZCB0byBpZGVudGlmeSB0aGUgYmVuZWZpY2lhcmllcyBlbGlnaWJsZSB0byByZWNlaXZlIHRyZWFzdXJ5IHNwZW5kcy4APAAAQENvbnZpY3Rpb25Wb3RpbmcBQENvbnZpY3Rpb25Wb3RpbmcIJFZvdGluZ0ZvcgEBCAUFoQ2lDdgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIdQEgQWxsIHZvdGluZyBmb3IgYSBwYXJ0aWN1bGFyIHZvdGVyIGluIGEgcGFydGljdWxhciB2b3RpbmcgY2xhc3MuIFdlIHN0b3JlIHRoZSBiYWxhbmNlIGZvciB0aGWcIG51bWJlciBvZiB2b3RlcyB0aGF0IHdlIGhhdmUgcmVjb3JkZWQuADRDbGFzc0xvY2tzRm9yAQEEBQTFDQQADGkBIFRoZSB2b3RpbmcgY2xhc3NlcyB3aGljaCBoYXZlIGEgbm9uLXplcm8gbG9jayByZXF1aXJlbWVudCBhbmQgdGhlIGxvY2sgYW1vdW50cyB3aGljaCB0aGV5bQEgcmVxdWlyZS4gVGhlIGFjdHVhbCBhbW91bnQgbG9ja2VkIG9uIGJlaGFsZiBvZiB0aGlzIHBhbGxldCBzaG91bGQgYWx3YXlzIGJlIHRoZSBtYXhpbXVtIG9mLCB0aGlzIGxpc3QuAAHxBAABKQkACCBNYXhWb3RlczgQAAIAABDwIFRoZSBtYXhpbXVtIG51bWJlciBvZiBjb25jdXJyZW50IHZvdGVzIGFuIGFjY291bnQgbWF5IGhhdmUuAFUBIEFsc28gdXNlZCB0byBjb21wdXRlIHdlaWdodCwgYW4gb3Zlcmx5IGxhcmdlIHZhbHVlIGNhbiBsZWFkIHRvIGV4dHJpbnNpY3Mgd2l0aCBsYXJnZcAgd2VpZ2h0IGVzdGltYXRpb246IHNlZSBgZGVsZWdhdGVgIGZvciBpbnN0YW5jZS4ARFZvdGVMb2NraW5nUGVyaW9kOBDAiQEAEJAgVGhlIG1pbmltdW0gcGVyaW9kIG9mIHZvdGUgbG9ja2luZy4AZQEgSXQgc2hvdWxkIGJlIG5vIHNob3J0ZXIgdGhhbiBlbmFjdG1lbnQgcGVyaW9kIHRvIGVuc3VyZSB0aGF0IGluIHRoZSBjYXNlIG9mIGFuIGFwcHJvdmFsLEkBIHRob3NlIHN1Y2Nlc3NmdWwgdm90ZXJzIGFyZSBsb2NrZWQgaW50byB0aGUgY29uc2VxdWVuY2VzIHRoYXQgdGhlaXIgdm90ZXMgZW50YWlsLgAB0Q0AAAA9AAAkUmVmZXJlbmRhASRSZWZlcmVuZGEUPFJlZmVyZW5kdW1Db3VudAEAOBAAAAAABDEBIFRoZSBuZXh0IGZyZWUgcmVmZXJlbmR1bSBpbmRleCwgYWthIHRoZSBudW1iZXIgb2YgcmVmZXJlbmRhIHN0YXJ0ZWQgc28gZmFyLgBEUmVmZXJlbmR1bUluZm9Gb3IAAQQCONUNBAAEtCBJbmZvcm1hdGlvbiBjb25jZXJuaW5nIGFueSBnaXZlbiByZWZlcmVuZHVtLgAoVHJhY2tRdWV1ZQEBBAXtA/UNBAAQXQEgVGhlIHNvcnRlZCBsaXN0IG9mIHJlZmVyZW5kYSByZWFkeSB0byBiZSBkZWNpZGVkIGJ1dCBub3QgeWV0IGJlaW5nIGRlY2lkZWQsIG9yZGVyZWQgYnl8IGNvbnZpY3Rpb24td2VpZ2h0ZWQgYXBwcm92YWxzLgBBASBUaGlzIHNob3VsZCBiZSBlbXB0eSBpZiBgRGVjaWRpbmdDb3VudGAgaXMgbGVzcyB0aGFuIGBUcmFja0luZm86Om1heF9kZWNpZGluZ2AuADREZWNpZGluZ0NvdW50AQEEBe0DOBAAAAAABMQgVGhlIG51bWJlciBvZiByZWZlcmVuZGEgYmVpbmcgZGVjaWRlZCBjdXJyZW50bHkuAChNZXRhZGF0YU9mAAEEAjhABAAYBQEgVGhlIG1ldGFkYXRhIGlzIGEgZ2VuZXJhbCBpbmZvcm1hdGlvbiBjb25jZXJuaW5nIHRoZSByZWZlcmVuZHVtLkkBIFRoZSBgSGFzaGAgcmVmZXJzIHRvIHRoZSBwcmVpbWFnZSBvZiB0aGUgYFByZWltYWdlc2AgcHJvdmlkZXIgd2hpY2ggY2FuIGJlIGEgSlNPToggZHVtcCBvciBJUEZTIGhhc2ggb2YgYSBKU09OIGZpbGUuAHUBIENvbnNpZGVyIGEgZ2FyYmFnZSBjb2xsZWN0aW9uIGZvciBhIG1ldGFkYXRhIG9mIGZpbmlzaGVkIHJlZmVyZW5kdW1zIHRvIGB1bnJlcXVlc3RgIChyZW1vdmUpRCBsYXJnZSBwcmVpbWFnZXMuAAEFBQABLQkAFERTdWJtaXNzaW9uRGVwb3NpdFkBQADodkgXAAAAAAAAAAAAAAAENQEgVGhlIG1pbmltdW0gYW1vdW50IHRvIGJlIHVzZWQgYXMgYSBkZXBvc2l0IGZvciBhIHB1YmxpYyByZWZlcmVuZHVtIHByb3Bvc2FsLgAkTWF4UXVldWVkOBBkAAAABOQgTWF4aW11bSBzaXplIG9mIHRoZSByZWZlcmVuZHVtIHF1ZXVlIGZvciBhIHNpbmdsZSB0cmFjay4ARFVuZGVjaWRpbmdUaW1lb3V0OBDAqAAACFUBIFRoZSBudW1iZXIgb2YgYmxvY2tzIGFmdGVyIHN1Ym1pc3Npb24gdGhhdCBhIHJlZmVyZW5kdW0gbXVzdCBiZWdpbiBiZWluZyBkZWNpZGVkIGJ5LuQgT25jZSB0aGlzIHBhc3NlcywgdGhlbiBhbnlvbmUgbWF5IGNhbmNlbCB0aGUgcmVmZXJlbmR1bS4ANEFsYXJtSW50ZXJ2YWw4EAEAAAAMXQEgUXVhbnRpemF0aW9uIGxldmVsIGZvciB0aGUgcmVmZXJlbmR1bSB3YWtldXAgc2NoZWR1bGVyLiBBIGhpZ2hlciBudW1iZXIgd2lsbCByZXN1bHQgaW5dASBmZXdlciBzdG9yYWdlIHJlYWRzL3dyaXRlcyBuZWVkZWQgZm9yIHNtYWxsZXIgdm90ZXJzLCBidXQgYWxzbyByZXN1bHQgaW4gZGVsYXlzIHRvIHRoZVUBIGF1dG9tYXRpYyByZWZlcmVuZHVtIHN0YXR1cyBjaGFuZ2VzLiBFeHBsaWNpdCBzZXJ2aWNpbmcgaW5zdHJ1Y3Rpb25zIGFyZSB1bmFmZmVjdGVkLgAYVHJhY2tzAQ4VGkAAAGRyb290AAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAACAxqR+jQMAAAAAAAAAAACwBAAAACcGAEA4AABAOAAAApDXPg0AAAAAV0PeEwAAAABUQ94TAAAAAAAAypo7AAAAAABlzR0BAGR3aGl0ZWxpc3RlZF9jYWxsZXIAAAAAAAAAZAAAAABAehDzWgAAAAAAAAAAAAAsAQAAACcGAGQAAABkAAAAAuyXJRAAAAAAe1c8FwAAAABCOS8SAAAAAAIOAIQAAAAAANbmHwEAAAAAOWJ5AgAAAAACAGR3aXNoX2Zvcl9jaGFuZ2UAAAAAAAAAAAAACgAAAACA9CDmtQAAAAAAAAAAAACwBAAAACcGAEA4AABkAAAAApDXPg0AAAAAV0PeEwAAAABUQ94TAAAAAAAAypo7AAAAAABlzR0KAGRzdGFraW5nX2FkbWluAAAAAAAAAAAAAAAACgAAAAAgPYh5LQAAAAAAAAAAAACwBAAAACcGAAgHAABkAAAAAMlDMCQAZc0dAMqaOwJdb3gAAAAAAOgu7QAAAAAAjGiJ//////8LAGR0cmVhc3VyZXIAAAAAAAAAAAAAAAAAAAAAAgAAAACgMalf4wAAAAAAAAAAAACwBAAAACcGAMCJAQBAOAAAApDXPg0AAAAAV0PeEwAAAABUQ94TAAAAAAAAypo7gJaYAABlzR0MAGRsZWFzZV9hZG1pbgAAAAAAAAAAAAAAAAAACgAAAAAgPYh5LQAAAAAAAAAAAACwBAAAACcGAAgHAABkAAAAAMlDMCQAZc0dAMqaOwJdb3gAAAAAAOgu7QAAAAAAjGiJ//////8NAGRmZWxsb3dzaGlwX2FkbWluAAAAAAAAAAAACgAAAAAgPYh5LQAAAAAAAAAAAACwBAAAACcGAAgHAABkAAAAAMlDMCQAZc0dAMqaOwJdb3gAAAAAAOgu7QAAAAAAjGiJ//////8OAGRnZW5lcmFsX2FkbWluAAAAAAAAAAAAAAAACgAAAAAgPYh5LQAAAAAAAAAAAACwBAAAACcGAAgHAABkAAAAApDXPg0AAAAAV0PeEwAAAABUQ94TAAAAAAJZovQCAAAAAKMpawUAAAAALmtK/f////8PAGRhdWN0aW9uX2FkbWluAAAAAAAAAAAAAAAACgAAAAAgPYh5LQAAAAAAAAAAAACwBAAAACcGAAgHAABkAAAAApDXPg0AAAAAV0PeEwAAAABUQ94TAAAAAAJZovQCAAAAAKMpawUAAAAALmtK/f////8UAGRyZWZlcmVuZHVtX2NhbmNlbGxlcgAAAAAA9AEAAAAgPYh5LQAAAAAAAAAAAACwBAAAwIkBAAgHAABkAAAAAMlDMCQAZc0dAMqaOwJdb3gAAAAAAOgu7QAAAAAAjGiJ//////8VAGRyZWZlcmVuZHVtX2tpbGxlcgAAAAAAAAAA6AMAAABAY1K/xgEAAAAAAAAAAACwBAAAACcGAAgHAABkAAAAAMlDMCQAZc0dAMqaOwJdb3gAAAAAAOgu7QAAAAAAjGiJ//////8eAGRzbWFsbF90aXBwZXIAAAAAAAAAAAAAAAAAyAAAAADkC1QCAAAAAAAAAAAAAAAKAAAAwIkBAGQAAAAKAAAAAEmRSRUAZc0dAMqaOwL5uhgAAAAAACpNMQAAAAAAa1nn//////8fAGRiaWdfdGlwcGVyAAAAAAAAAAAAAAAAAAAAZAAAAADodkgXAAAAAAAAAAAAAABkAAAAwIkBAFgCAABkAAAAAEmRSRUAZc0dAMqaOwJpTz8AAAAAADWWfQAAAAAA5TTB//////8gAGRzbWFsbF9zcGVuZGVyAAAAAAAAAAAAAAAABQAAAACgck4YCQAAAAAAAAAAAABgCQAAACcGAIBwAABAOAAAAMlDMCQAZc0dAMqaOwIKszoAAAAAAFOtdQAAAAAANwsSAAAAAAAhAGRtZWRpdW1fc3BlbmRlcgAAAAAAAAAAAAAAMgAAAAAgSqnRAQAAAAAAAAAAAABgCQAAACcGAADhAABAOAAAAFsB9jAAZc0dAMqaOwIgnmkAAAAAAE930gAAAAAA/hzk//////8iAGRiaWdfc3BlbmRlcgAAAAAAAAAAAAAAAAAAAwAAAAAgPYh5LQAAAAAAAAAAAABgCQAAACcGAMCJAQBAOAAAAADKmjsAZc0dAMqaOwLNWGIAAAAAAFskxQAAAAAANVkRAAAAAAAMSCBBIGxpc3Qgb2YgdHJhY2tzLgBdASBOb3RlOiBpZiB0aGUgdHJhY2tzIGFyZSBkeW5hbWljLCB0aGUgdmFsdWUgaW4gdGhlIHN0YXRpYyBtZXRhZGF0YSBtaWdodCBiZSBpbmFjY3VyYXRlLgABGQ4ADCxSdW50aW1lQ2FsbCAAFFZvdGVzWQEEzCBUaGUgY291bnRpbmcgdHlwZSBmb3Igdm90ZXMuIFVzdWFsbHkganVzdCBiYWxhbmNlLhRUYWxseTEJBEwgVGhlIHRhbGx5aW5nIHR5cGUuAD4AABxPcmlnaW5zAAAAAAAAAD8AACRXaGl0ZWxpc3QBJFdoaXRlbGlzdAQ8V2hpdGVsaXN0ZWRDYWxsAAEEBUAQBAAAAAEZBQABNQkAAAEdDgAELFJ1bnRpbWVDYWxsIARsIFRoZSBvdmVyYXJjaGluZyBjYWxsIHR5cGUuAEAAACBCb3VudGllcwEgQm91bnRpZXMQLEJvdW50eUNvdW50AQA4EAAAAAAEwCBOdW1iZXIgb2YgYm91bnR5IHByb3Bvc2FscyB0aGF0IGhhdmUgYmVlbiBtYWRlLgAgQm91bnRpZXMAAQQFOCEOBAAEeCBCb3VudGllcyB0aGF0IGhhdmUgYmVlbiBtYWRlLgBIQm91bnR5RGVzY3JpcHRpb25zAAEEBTgpDgQABIAgVGhlIGRlc2NyaXB0aW9uIG9mIGVhY2ggYm91bnR5LgA8Qm91bnR5QXBwcm92YWxzAQCRDQQABOwgQm91bnR5IGluZGljZXMgdGhhdCBoYXZlIGJlZW4gYXBwcm92ZWQgYnV0IG5vdCB5ZXQgZnVuZGVkLgABHQUAAUUJACREQm91bnR5RGVwb3NpdEJhc2VZAUAAjgwBAAAAAAAAAAAAAAAABOggVGhlIGFtb3VudCBoZWxkIG9uIGRlcG9zaXQgZm9yIHBsYWNpbmcgYSBib3VudHkgcHJvcG9zYWwuAGBCb3VudHlEZXBvc2l0UGF5b3V0RGVsYXk4EAAAAAAEWQEgVGhlIGRlbGF5IHBlcmlvZCBmb3Igd2hpY2ggYSBib3VudHkgYmVuZWZpY2lhcnkgbmVlZCB0byB3YWl0IGJlZm9yZSBjbGFpbSB0aGUgcGF5b3V0LgBIQm91bnR5VXBkYXRlUGVyaW9kOBAABBcDGPQgVGhlIHRpbWUgbGltaXQgZm9yIGEgY3VyYXRvciB0byBhY3QgYmVmb3JlIGEgYm91bnR5IGV4cGlyZXMuAFUBIFRoZSBwZXJpb2QgdGhhdCBzdGFydHMgd2hlbiBhIGN1cmF0b3IgaXMgYXBwcm92ZWQsIGR1cmluZyB3aGljaCB0aGV5IG11c3QgZXhlY3V0ZSBvclUBIHVwZGF0ZSB0aGUgYm91bnR5IHZpYSBgZXh0ZW5kX2JvdW50eV9leHBpcnlgLiBJZiBtaXNzZWQsIHRoZSBib3VudHkgZXhwaXJlcywgYW5kIHRoZVUBIGN1cmF0b3IgbWF5IGJlIHNsYXNoZWQuIElmIGBCbG9ja051bWJlckZvcjo6TUFYYCwgYm91bnRpZXMgc3RheSBhY3RpdmUgaW5kZWZpbml0ZWx5LLggcmVtb3ZpbmcgdGhlIG5lZWQgZm9yIGBleHRlbmRfYm91bnR5X2V4cGlyeWAuAGBDdXJhdG9yRGVwb3NpdE11bHRpcGxpZXIRCRAgoQcAEBkBIFRoZSBjdXJhdG9yIGRlcG9zaXQgaXMgY2FsY3VsYXRlZCBhcyBhIHBlcmNlbnRhZ2Ugb2YgdGhlIGN1cmF0b3IgZmVlLgA5ASBUaGlzIGRlcG9zaXQgaGFzIG9wdGlvbmFsIHVwcGVyIGFuZCBsb3dlciBib3VuZHMgd2l0aCBgQ3VyYXRvckRlcG9zaXRNYXhgIGFuZFQgYEN1cmF0b3JEZXBvc2l0TWluYC4AREN1cmF0b3JEZXBvc2l0TWF4ZQREAQAgSqnRAQAAAAAAAAAAAAAESQEgTWF4aW11bSBhbW91bnQgb2YgZnVuZHMgdGhhdCBzaG91bGQgYmUgcGxhY2VkIGluIGEgZGVwb3NpdCBmb3IgbWFraW5nIGEgcHJvcG9zYWwuAERDdXJhdG9yRGVwb3NpdE1pbmUERAEA6HZIFwAAAAAAAAAAAAAABEkBIE1pbmltdW0gYW1vdW50IG9mIGZ1bmRzIHRoYXQgc2hvdWxkIGJlIHBsYWNlZCBpbiBhIGRlcG9zaXQgZm9yIG1ha2luZyBhIHByb3Bvc2FsLgBIQm91bnR5VmFsdWVNaW5pbXVtWQFAAOh2SBcAAAAAAAAAAAAAAARwIE1pbmltdW0gdmFsdWUgZm9yIGEgYm91bnR5LgBIRGF0YURlcG9zaXRQZXJCeXRlWQFAoIYBAAAAAAAAAAAAAAAAAARhASBUaGUgYW1vdW50IGhlbGQgb24gZGVwb3NpdCBwZXIgYnl0ZSB3aXRoaW4gdGhlIHRpcCByZXBvcnQgcmVhc29uIG9yIGJvdW50eSBkZXNjcmlwdGlvbi4ATE1heGltdW1SZWFzb25MZW5ndGg4EABAAAAMiCBNYXhpbXVtIGFjY2VwdGFibGUgcmVhc29uIGxlbmd0aC4AZQEgQmVuY2htYXJrcyBkZXBlbmQgb24gdGhpcyB2YWx1ZSwgYmUgc3VyZSB0byB1cGRhdGUgd2VpZ2h0cyBmaWxlIHdoZW4gY2hhbmdpbmcgdGhpcyB2YWx1ZQABLQ4AAABBAAA0Q2hpbGRCb3VudGllcwE0Q2hpbGRCb3VudGllcxxAQ2hpbGRCb3VudHlDb3VudAEAOBAAAAAACG0BIERFUFJFQ0FURUQ6IFJlcGxhY2VkIHdpdGggYFBhcmVudFRvdGFsQ2hpbGRCb3VudGllc2Agc3RvcmFnZSBpdGVtIGtlZXBpbmcgZGVkaWNhdGVkIGNvdW50c1UBIGZvciBlYWNoIHBhcmVudCBib3VudHkuIE51bWJlciBvZiB0b3RhbCBjaGlsZCBib3VudGllcy4gV2lsbCBiZSByZW1vdmVkIGluIE1heSAyMDI1LgBMUGFyZW50Q2hpbGRCb3VudGllcwEBBAU4OBAAAAAACMwgTnVtYmVyIG9mIGFjdGl2ZSBjaGlsZCBib3VudGllcyBwZXIgcGFyZW50IGJvdW50eS7gIE1hcCBvZiBwYXJlbnQgYm91bnR5IGluZGV4IHRvIG51bWJlciBvZiBjaGlsZCBib3VudGllcy4AYFBhcmVudFRvdGFsQ2hpbGRCb3VudGllcwEBBAU4OBAAAAAABEEBIE51bWJlciBvZiB0b3RhbCBjaGlsZCBib3VudGllcyBwZXIgcGFyZW50IGJvdW50eSwgaW5jbHVkaW5nIGNvbXBsZXRlZCBib3VudGllcy4ANENoaWxkQm91bnRpZXMAAQgFBdAxDgQABJQgQ2hpbGQgYm91bnRpZXMgdGhhdCBoYXZlIGJlZW4gYWRkZWQuAGRDaGlsZEJvdW50eURlc2NyaXB0aW9uc1YxAAEIBQXQKQ4EAAwpASBUaGUgZGVzY3JpcHRpb24gb2YgZWFjaCBjaGlsZC1ib3VudHkuIEluZGV4ZWQgYnkgYChwYXJlbnRfaWQsIGNoaWxkX2lkKWAuAG0BIFRoaXMgaXRlbSByZXBsYWNlcyB0aGUgYENoaWxkQm91bnR5RGVzY3JpcHRpb25zYCBzdG9yYWdlIGl0ZW0gZnJvbSB0aGUgVjAgc3RvcmFnZSB2ZXJzaW9uLgBQVjBUb1YxQ2hpbGRCb3VudHlJZHMAAQQFONAEABRdASBUaGUgbWFwcGluZyBvZiB0aGUgY2hpbGQgYm91bnR5IGlkcyBmcm9tIHN0b3JhZ2UgdmVyc2lvbiBgVjBgIHRvIHRoZSBuZXcgYFYxYCB2ZXJzaW9uLgBtASBUaGUgYFYwYCBpZHMgYmFzZWQgb24gdG90YWwgY2hpbGQgYm91bnR5IGNvdW50IFtgQ2hpbGRCb3VudHlDb3VudGBdYC4gVGhlIGBWMWAgdmVyc2lvbiBpZHNBASBiYXNlZCBvbiB0aGUgY2hpbGQgYm91bnR5IGNvdW50IHBlciBwYXJlbnQgYm91bnR5IFtgUGFyZW50VG90YWxDaGlsZEJvdW50aWVzYF0uZQEgVGhlIGl0ZW0gaW50ZW5kZWQgc29sZWx5IGZvciBjbGllbnQgY29udmVuaWVuY2UgYW5kIG5vdCB1c2VkIGluIHRoZSBwYWxsZXQncyBjb3JlIGxvZ2ljLgBMQ2hpbGRyZW5DdXJhdG9yRmVlcwEBBAU4WQFAAAAAAAAAAAAAAAAAAAAAAAQBASBUaGUgY3VtdWxhdGl2ZSBjaGlsZC1ib3VudHkgY3VyYXRvciBmZWUgZm9yIGVhY2ggcGFyZW50IGJvdW50eS4AASEFAAFJCQAIZE1heEFjdGl2ZUNoaWxkQm91bnR5Q291bnQ4EGQAAAAEHQEgTWF4aW11bSBudW1iZXIgb2YgY2hpbGQgYm91bnRpZXMgdGhhdCBjYW4gYmUgYWRkZWQgdG8gYSBwYXJlbnQgYm91bnR5LgBcQ2hpbGRCb3VudHlWYWx1ZU1pbmltdW1ZAUAA5AtUAgAAAAAAAAAAAAAABIggTWluaW11bSB2YWx1ZSBmb3IgYSBjaGlsZC1ib3VudHkuAAE5DgAAAEIAACRBc3NldFJhdGUBJEFzc2V0UmF0ZQRYQ29udmVyc2lvblJhdGVUb05hdGl2ZQABBALpBCkFBAAMHQEgTWFwcyBhbiBhc3NldCB0byBpdHMgZml4ZWQgcG9pbnQgcmVwcmVzZW50YXRpb24gaW4gdGhlIG5hdGl2ZSBiYWxhbmNlLgBNASBFLmcuIGBuYXRpdmVfYW1vdW50ID0gYXNzZXRfYW1vdW50ICogQ29udmVyc2lvblJhdGVUb05hdGl2ZTo6PFQ+OjpnZXQoYXNzZXRfa2luZClgAAElBQABTQkAAAE9DgAEJEFzc2V0S2luZOkEBEUBIFRoZSB0eXBlIGZvciBhc3NldCBraW5kcyBmb3Igd2hpY2ggdGhlIGNvbnZlcnNpb24gcmF0ZSB0byBuYXRpdmUgYmFsYW5jZSBpcyBzZXQuAEMAAEhNdWx0aUFzc2V0Qm91bnRpZXMBSE11bHRpQXNzZXRCb3VudGllcxwsQm91bnR5Q291bnQBADgQAAAAAATAIE51bWJlciBvZiBib3VudHkgcHJvcG9zYWxzIHRoYXQgaGF2ZSBiZWVuIG1hZGUuACBCb3VudGllcwABBAU4QQ4EAAR4IEJvdW50aWVzIHRoYXQgaGF2ZSBiZWVuIG1hZGUuADRDaGlsZEJvdW50aWVzAAEIBQXQTQ4EAAyUIENoaWxkIGJvdW50aWVzIHRoYXQgaGF2ZSBiZWVuIGFkZGVkLgDIIEluZGV4ZWQgYnkgYChwYXJlbnRfYm91bnR5X2lkLCBjaGlsZF9ib3VudHlfaWQpYC4AWENoaWxkQm91bnRpZXNQZXJQYXJlbnQBAQQFODgQAAAAAAzMIE51bWJlciBvZiBhY3RpdmUgY2hpbGQgYm91bnRpZXMgcGVyIHBhcmVudCBib3VudHkuAHwgSW5kZXhlZCBieSBgcGFyZW50X2JvdW50eV9pZGAuAGxUb3RhbENoaWxkQm91bnRpZXNQZXJQYXJlbnQBAQQFODgQAAAAAAxBASBOdW1iZXIgb2YgdG90YWwgY2hpbGQgYm91bnRpZXMgcGVyIHBhcmVudCBib3VudHksIGluY2x1ZGluZyBjb21wbGV0ZWQgYm91bnRpZXMuAHwgSW5kZXhlZCBieSBgcGFyZW50X2JvdW50eV9pZGAuAGxDaGlsZEJvdW50aWVzVmFsdWVQZXJQYXJlbnQBAQQFOFkBQAAAAAAAAAAAAAAAAAAAAAAQbQEgVGhlIGN1bXVsYXRpdmUgY2hpbGQtYm91bnR5IHZhbHVlIGZvciBlYWNoIHBhcmVudCBib3VudHkuIFRvIGJlIHN1YnRyYWN0ZWQgZnJvbSB0aGUgcGFyZW50kCBib3VudHkgcGF5b3V0IHdoZW4gYXdhcmRpbmcgYm91bnR5LgB8IEluZGV4ZWQgYnkgYHBhcmVudF9ib3VudHlfaWRgLgA4Q3VyYXRvckRlcG9zaXQAAQgFBVEOVQ4EACxlASBUaGUgY29uc2lkZXJhdGlvbiBjb3N0IGluY3VycmVkIGJ5IHRoZSBjaGlsZC0vYm91bnR5IGN1cmF0b3IgZm9yIGNvbW1pdHRpbmcgdG8gdGhlIHJvbGUuAHEBIERldGVybWluZWQgYnkgW2BwYWxsZXQ6OkNvbmZpZzo6Q29uc2lkZXJhdGlvbmBdLiBJdCBpcyBjcmVhdGVkIHdoZW4gdGhlIGN1cmF0b3IgYWNjZXB0cyB0aGVFASByb2xlLCBhbmQgaXMgZWl0aGVyIGJ1cm5lZCBpZiB0aGUgY3VyYXRvciBtaXNiZWhhdmVzIG9yIGNvbnN1bWVkIHVwb24gc3VjY2Vzc2Z1bIQgY29tcGxldGlvbiBvZiB0aGUgY2hpbGQtL2JvdW50eS4AEQEgTm90ZTogSWYgdGhlIHBhcmVudCBjdXJhdG9yIGlzIGFsc28gYXNzaWduZWQgdG8gdGhlIGNoaWxkLWJvdW50eSwgIA0BIHRoZSBjb25zaWRlcmF0aW9uIGNvc3QgaXMgY2hhcmdlZCBvbmx5IG9uY2Ug4oCUIHdoZW4gdGhlIGN1cmF0b3IgIKAgYWNjZXB0cyB0aGUgcm9sZSBmb3IgdGhlIHBhcmVudCBib3VudHkuAMggSW5kZXhlZCBieSBgKHBhcmVudF9ib3VudHlfaWQsIGNoaWxkX2JvdW50eV9pZClgLgABLQUAAVEJAAxIQm91bnR5VmFsdWVNaW5pbXVtWQFAAMgXqAQAAAAAAAAAAAAAAARwIE1pbmltdW0gdmFsdWUgZm9yIGEgYm91bnR5LgBcQ2hpbGRCb3VudHlWYWx1ZU1pbmltdW1ZAUAAlDV3AAAAAAAAAAAAAAAABIggTWluaW11bSB2YWx1ZSBmb3IgYSBjaGlsZC1ib3VudHkuAGRNYXhBY3RpdmVDaGlsZEJvdW50eUNvdW50OBBkAAAABB0BIE1heGltdW0gbnVtYmVyIG9mIGNoaWxkIGJvdW50aWVzIHRoYXQgY2FuIGJlIGFkZGVkIHRvIGEgcGFyZW50IGJvdW50eS4AAVkOAAgkQXNzZXRLaW5k6QQIQQEgVHlwZSBwYXJhbWV0ZXIgcmVwcmVzZW50aW5nIHRoZSBhc3NldCBraW5kcyB1c2VkIHRvIGZ1bmQsIHJlZnVuZCBhbmQgc3BlbmQgZnJvbSggYm91bnRpZXMuLEJlbmVmaWNpYXJ57QQEQQEgVHlwZSBwYXJhbWV0ZXIgdXNlZCB0byBpZGVudGlmeSB0aGUgYmVuZWZpY2lhcmllcyBlbGlnaWJsZSB0byByZWNlaXZlIHBheW1lbnRzLgBEAABIU3RhdGVUcmllTWlncmF0aW9uAUhTdGF0ZVRyaWVNaWdyYXRpb24MQE1pZ3JhdGlvblByb2Nlc3MBAD0FOAAAAAAAAAAAAAAAAAAAEFAgTWlncmF0aW9uIHByb2dyZXNzLgBdASBUaGlzIHN0b3JlcyB0aGUgc25hcHNob3Qgb2YgdGhlIGxhc3QgbWlncmF0ZWQga2V5cy4gSXQgY2FuIGJlIHNldCBpbnRvIG1vdGlvbiBhbmQgbW92ZdQgZm9yd2FyZCBieSBhbnkgb2YgdGhlIG1lYW5zIHByb3ZpZGVkIGJ5IHRoaXMgcGFsbGV0LgAoQXV0b0xpbWl0cwEANQUEAAzUIFRoZSBsaW1pdHMgdGhhdCBhcmUgaW1wb3NlZCBvbiBhdXRvbWF0aWMgbWlncmF0aW9ucy4A1CBJZiBzZXQgdG8gTm9uZSwgdGhlbiBubyBhdXRvbWF0aWMgbWlncmF0aW9uIGhhcHBlbnMuAGBTaWduZWRNaWdyYXRpb25NYXhMaW1pdHMAADkFBAAM4CBUaGUgbWF4aW11bSBsaW1pdHMgdGhhdCB0aGUgc2lnbmVkIG1pZ3JhdGlvbiBjb3VsZCB1c2UuALQgSWYgbm90IHNldCwgbm8gc2lnbmVkIHN1Ym1pc3Npb24gaXMgYWxsb3dlZC4AATEFAAFVCQAEJE1heEtleUxlbjgQAAIAAFS0IE1heGltYWwgbnVtYmVyIG9mIGJ5dGVzIHRoYXQgYSBrZXkgY2FuIGhhdmUuALAgRlJBTUUgaXRzZWxmIGRvZXMgbm90IGxpbWl0IHRoZSBrZXkgbGVuZ3RoLgEBIFRoZSBjb25jcmV0ZSB2YWx1ZSBtdXN0IHRoZXJlZm9yZSBkZXBlbmQgb24geW91ciBzdG9yYWdlIHVzYWdlLlkBIEEgW2BmcmFtZV9zdXBwb3J0OjpzdG9yYWdlOjpTdG9yYWdlTk1hcGBdIGZvciBleGFtcGxlIGNhbiBoYXZlIGFuIGFyYml0cmFyeSBudW1iZXIgb2ZFASBrZXlzIHdoaWNoIGFyZSB0aGVuIGhhc2hlZCBhbmQgY29uY2F0ZW5hdGVkLCByZXN1bHRpbmcgaW4gYXJiaXRyYXJpbHkgbG9uZyBrZXlzLgBBASBVc2UgdGhlICpzdGF0ZSBtaWdyYXRpb24gUlBDKiB0byByZXRyaWV2ZSB0aGUgbGVuZ3RoIG9mIHRoZSBsb25nZXN0IGtleSBpbiB5b3VyAQEgc3RvcmFnZTogPGh0dHBzOi8vZ2l0aHViLmNvbS9wYXJpdHl0ZWNoL3N1YnN0cmF0ZS9pc3N1ZXMvMTE2NDI+ACkBIFRoZSBtaWdyYXRpb24gd2lsbCBoYWx0IHdpdGggYSBgSGFsdGVkYCBldmVudCBpZiB0aGlzIHZhbHVlIGlzIHRvbyBzbWFsbC5JASBTaW5jZSB0aGVyZSBpcyBubyByZWFsIHBlbmFsdHkgZnJvbSBvdmVyLWVzdGltYXRpbmcsIGl0IGlzIGFkdmlzZWQgdG8gdXNlIGEgbGFyZ2WAIHZhbHVlLiBUaGUgZGVmYXVsdCBpcyA1MTIgYnl0ZS4AgCBTb21lIGtleSBsZW5ndGhzIGZvciByZWZlcmVuY2U60CAtIFtgZnJhbWVfc3VwcG9ydDo6c3RvcmFnZTo6U3RvcmFnZVZhbHVlYF06IDMyIGJ5dGXIIC0gW2BmcmFtZV9zdXBwb3J0OjpzdG9yYWdlOjpTdG9yYWdlTWFwYF06IDY0IGJ5dGXgIC0gW2BmcmFtZV9zdXBwb3J0OjpzdG9yYWdlOjpTdG9yYWdlRG91YmxlTWFwYF06IDk2IGJ5dGUASCBGb3IgbW9yZSBpbmZvIHNlZUUBIDxodHRwczovL3d3dy5zaGF3bnRhYnJpemkuY29tL2Jsb2cvaW50ZXJhY3Rpbmctd2l0aC10aGUtc3Vic3RyYXRlLXJwYy1lbmRwb2ludC8+AAFdCQAAAEYAADxOb21pbmF0aW9uUG9vbHMBPE5vbWluYXRpb25Qb29sc1RAVG90YWxWYWx1ZUxvY2tlZAEAWQFAAAAAAAAAAAAAAAAAAAAAABSMIFRoZSBzdW0gb2YgZnVuZHMgYWNyb3NzIGFsbCBwb29scy4AcQEgVGhpcyBtaWdodCBiZSBsb3dlciBidXQgbmV2ZXIgaGlnaGVyIHRoYW4gdGhlIHN1bSBvZiBgdG90YWxfYmFsYW5jZWAgb2YgYWxsIFtgUG9vbE1lbWJlcnNgXVkBIGJlY2F1c2UgY2FsbGluZyBgcG9vbF93aXRoZHJhd191bmJvbmRlZGAgbWlnaHQgZGVjcmVhc2UgdGhlIHRvdGFsIHN0YWtlIG9mIHRoZSBwb29sJ3MpASBgYm9uZGVkX2FjY291bnRgIHdpdGhvdXQgYWRqdXN0aW5nIHRoZSBwYWxsZXQtaW50ZXJuYWwgYFVuYm9uZGluZ1Bvb2xgJ3MuACxNaW5Kb2luQm9uZAEAWQFAAAAAAAAAAAAAAAAAAAAAAAScIE1pbmltdW0gYW1vdW50IHRvIGJvbmQgdG8gam9pbiBhIHBvb2wuADRNaW5DcmVhdGVCb25kAQBZAUAAAAAAAAAAAAAAAAAAAAAAHKAgTWluaW11bSBib25kIHJlcXVpcmVkIHRvIGNyZWF0ZSBhIHBvb2wuAGUBIFRoaXMgaXMgdGhlIGFtb3VudCB0aGF0IHRoZSBkZXBvc2l0b3IgbXVzdCBwdXQgYXMgdGhlaXIgaW5pdGlhbCBzdGFrZSBpbiB0aGUgcG9vbCwgYXMgYW6IIGluZGljYXRpb24gb2YgInNraW4gaW4gdGhlIGdhbWUiLgBpASBUaGlzIGlzIHRoZSB2YWx1ZSB0aGF0IHdpbGwgYWx3YXlzIGV4aXN0IGluIHRoZSBzdGFraW5nIGxlZGdlciBvZiB0aGUgcG9vbCBib25kZWQgYWNjb3VudIAgd2hpbGUgYWxsIG90aGVyIGFjY291bnRzIGxlYXZlLgAgTWF4UG9vbHMAADgEAAhpASBNYXhpbXVtIG51bWJlciBvZiBub21pbmF0aW9uIHBvb2xzIHRoYXQgY2FuIGV4aXN0LiBJZiBgTm9uZWAsIHRoZW4gYW4gdW5ib3VuZGVkIG51bWJlciBvZkQgcG9vbHMgY2FuIGV4aXN0LgA4TWF4UG9vbE1lbWJlcnMAADgEAAhJASBNYXhpbXVtIG51bWJlciBvZiBtZW1iZXJzIHRoYXQgY2FuIGV4aXN0IGluIHRoZSBzeXN0ZW0uIElmIGBOb25lYCwgdGhlbiB0aGUgY291bnS4IG1lbWJlcnMgYXJlIG5vdCBib3VuZCBvbiBhIHN5c3RlbSB3aWRlIGJhc2lzLgBUTWF4UG9vbE1lbWJlcnNQZXJQb29sAAA4BAAIQQEgTWF4aW11bSBudW1iZXIgb2YgbWVtYmVycyB0aGF0IG1heSBiZWxvbmcgdG8gcG9vbC4gSWYgYE5vbmVgLCB0aGVuIHRoZSBjb3VudCBvZqggbWVtYmVycyBpcyBub3QgYm91bmQgb24gYSBwZXIgcG9vbCBiYXNpcy4ATEdsb2JhbE1heENvbW1pc3Npb24AAKEBBAAMaQEgVGhlIG1heGltdW0gY29tbWlzc2lvbiB0aGF0IGNhbiBiZSBjaGFyZ2VkIGJ5IGEgcG9vbC4gVXNlZCBvbiBjb21taXNzaW9uIHBheW91dHMgdG8gYm91bmQlASBwb29sIGNvbW1pc3Npb25zIHRoYXQgYXJlID4gYEdsb2JhbE1heENvbW1pc3Npb25gLCBuZWNlc3NhcnkgaWYgYSBmdXR1cmUNASBgR2xvYmFsTWF4Q29tbWlzc2lvbmAgaXMgbG93ZXIgdGhhbiBzb21lIGN1cnJlbnQgcG9vbCBjb21taXNzaW9ucy4ALFBvb2xNZW1iZXJzAAEEBQRdDgQADEAgQWN0aXZlIG1lbWJlcnMuANAgVFdPWC1OT1RFOiBTQUZFIHNpbmNlIGBBY2NvdW50SWRgIGlzIGEgc2VjdXJlIGhhc2guAFRDb3VudGVyRm9yUG9vbE1lbWJlcnMBADgQAAAAAASsQ291bnRlciBmb3IgdGhlIHJlbGF0ZWQgY291bnRlZCBzdG9yYWdlIG1hcAAsQm9uZGVkUG9vbHMAAQQFOGkOBAAEaCBTdG9yYWdlIGZvciBib25kZWQgcG9vbHMuAFRDb3VudGVyRm9yQm9uZGVkUG9vbHMBADgQAAAAAASsQ291bnRlciBmb3IgdGhlIHJlbGF0ZWQgY291bnRlZCBzdG9yYWdlIG1hcAAsUmV3YXJkUG9vbHMAAQQFOHkOBAAIdQEgUmV3YXJkIHBvb2xzLiBUaGlzIGlzIHdoZXJlIHRoZXJlIHJld2FyZHMgZm9yIGVhY2ggcG9vbCBhY2N1bXVsYXRlLiBXaGVuIGEgbWVtYmVycyBwYXlvdXQgaXNZASBjbGFpbWVkLCB0aGUgYmFsYW5jZSBjb21lcyBvdXQgb2YgdGhlIHJld2FyZCBwb29sLiBLZXllZCBieSB0aGUgYm9uZGVkIHBvb2xzIGFjY291bnQuAFRDb3VudGVyRm9yUmV3YXJkUG9vbHMBADgQAAAAAASsQ291bnRlciBmb3IgdGhlIHJlbGF0ZWQgY291bnRlZCBzdG9yYWdlIG1hcAA8U3ViUG9vbHNTdG9yYWdlAAEEBTh9DgQACBkBIEdyb3VwcyBvZiB1bmJvbmRpbmcgcG9vbHMuIEVhY2ggZ3JvdXAgb2YgdW5ib25kaW5nIHBvb2xzIGJlbG9uZ3MgdG8gYSkBIGJvbmRlZCBwb29sLCBoZW5jZSB0aGUgbmFtZSBzdWItcG9vbHMuIEtleWVkIGJ5IHRoZSBib25kZWQgcG9vbHMgYWNjb3VudC4AZENvdW50ZXJGb3JTdWJQb29sc1N0b3JhZ2UBADgQAAAAAASsQ291bnRlciBmb3IgdGhlIHJlbGF0ZWQgY291bnRlZCBzdG9yYWdlIG1hcAAgTWV0YWRhdGEBAQQFOEUBBAAEXCBNZXRhZGF0YSBmb3IgdGhlIHBvb2wuAEhDb3VudGVyRm9yTWV0YWRhdGEBADgQAAAAAASsQ291bnRlciBmb3IgdGhlIHJlbGF0ZWQgY291bnRlZCBzdG9yYWdlIG1hcAAoTGFzdFBvb2xJZAEAOBAAAAAABNAgRXZlciBpbmNyZWFzaW5nIG51bWJlciBvZiBhbGwgcG9vbHMgY3JlYXRlZCBzbyBmYXIuAExSZXZlcnNlUG9vbElkTG9va3VwAAEEBQQ4BAAQ3CBBIHJldmVyc2UgbG9va3VwIGZyb20gdGhlIHBvb2wncyBhY2NvdW50IGlkIHRvIGl0cyBpZC4AdQEgVGhpcyBpcyBvbmx5IHVzZWQgZm9yIHNsYXNoaW5nIGFuZCBvbiBhdXRvbWF0aWMgd2l0aGRyYXcgdXBkYXRlLiBJbiBhbGwgb3RoZXIgaW5zdGFuY2VzLCB0aGUlASBwb29sIGlkIGlzIHVzZWQsIGFuZCB0aGUgYWNjb3VudHMgYXJlIGRldGVybWluaXN0aWNhbGx5IGRlcml2ZWQgZnJvbSBpdC4AdENvdW50ZXJGb3JSZXZlcnNlUG9vbElkTG9va3VwAQA4EAAAAAAErENvdW50ZXIgZm9yIHRoZSByZWxhdGVkIGNvdW50ZWQgc3RvcmFnZSBtYXAAQENsYWltUGVybWlzc2lvbnMBAQQFBGUFBAIEAQEgTWFwIGZyb20gYSBwb29sIG1lbWJlciBhY2NvdW50IHRvIHRoZWlyIG9wdGVkIGNsYWltIHBlcm1pc3Npb24uAAFJBQABYQkADCBQYWxsZXRJZFELIHB5L25vcGxzBIQgVGhlIG5vbWluYXRpb24gcG9vbCdzIHBhbGxldCBpZC4ASE1heFBvaW50c1RvQmFsYW5jZQwECjAdASBUaGUgbWF4aW11bSBwb29sIHBvaW50cy10by1iYWxhbmNlIHJhdGlvIHRoYXQgYW4gYG9wZW5gIHBvb2wgY2FuIGhhdmUuAFUBIFRoaXMgaXMgaW1wb3J0YW50IGluIHRoZSBldmVudCBzbGFzaGluZyB0YWtlcyBwbGFjZSBhbmQgdGhlIHBvb2wncyBwb2ludHMtdG8tYmFsYW5jZXwgcmF0aW8gYmVjb21lcyBkaXNwcm9wb3J0aW9uYWwuAGUBIE1vcmVvdmVyLCB0aGlzIHJlbGF0ZXMgdG8gdGhlIGBSZXdhcmRDb3VudGVyYCB0eXBlIGFzIHdlbGwsIGFzIHRoZSBhcml0aG1ldGljIG9wZXJhdGlvbnNVASBhcmUgYSBmdW5jdGlvbiBvZiBudW1iZXIgb2YgcG9pbnRzLCBhbmQgYnkgc2V0dGluZyB0aGlzIHZhbHVlIHRvIGUuZy4gMTAsIHlvdSBlbnN1cmVlASB0aGF0IHRoZSB0b3RhbCBudW1iZXIgb2YgcG9pbnRzIGluIHRoZSBzeXN0ZW0gYXJlIGF0IG1vc3QgMTAgdGltZXMgdGhlIHRvdGFsX2lzc3VhbmNlIG9mnCB0aGUgY2hhaW4sIGluIHRoZSBhYnNvbHV0ZSB3b3JzZSBjYXNlLgBJASBGb3IgYSB2YWx1ZSBvZiAxMCwgdGhlIHRocmVzaG9sZCB3b3VsZCBiZSBhIHBvb2wgcG9pbnRzLXRvLWJhbGFuY2UgcmF0aW8gb2YgMTA6MS4xASBTdWNoIGEgc2NlbmFyaW8gd291bGQgYWxzbyBiZSB0aGUgZXF1aXZhbGVudCBvZiB0aGUgcG9vbCBiZWluZyA5MCUgc2xhc2hlZC4AME1heFVuYm9uZGluZzgQIAAAAAQ9ASBUaGUgbWF4aW11bSBudW1iZXIgb2Ygc2ltdWx0YW5lb3VzIHVuYm9uZGluZyBjaHVua3MgdGhhdCBjYW4gZXhpc3QgcGVyIG1lbWJlci4AAZUOAAQ0UmV3YXJkQ291bnRlcikFMKggVGhlIHR5cGUgdGhhdCBpcyB1c2VkIGZvciByZXdhcmQgY291bnRlci4ANQEgVGhlIGFyaXRobWV0aWMgb2YgdGhlIHJld2FyZCBjb3VudGVyIG1pZ2h0IHNhdHVyYXRlIGJhc2VkIG9uIHRoZSBzaXplIG9mIHRoZWUBIGBDdXJyZW5jeTo6QmFsYW5jZWAuIElmIHRoaXMgaGFwcGVucywgb3BlcmF0aW9ucyBmYWlscy4gTm9uZXRoZWxlc3MsIHRoaXMgdHlwZSBzaG91bGQgYmVlASBjaG9zZW4gc3VjaCB0aGF0IHRoaXMgZmFpbHVyZSBhbG1vc3QgbmV2ZXIgaGFwcGVucywgYXMgaWYgaXQgaGFwcGVucywgdGhlIHBvb2wgYmFzaWNhbGx5ZQEgbmVlZHMgdG8gYmUgZGlzbWFudGxlZCAob3IgYWxsIHBvb2xzIG1pZ3JhdGVkIHRvIGEgbGFyZ2VyIGBSZXdhcmRDb3VudGVyYCB0eXBlLCB3aGljaCBpczwgYSBQSVRBIHRvIGRvKS4AYQEgU2VlIHRoZSBpbmxpbmUgY29kZSBkb2NzIG9mIGBNZW1iZXI6OnBlbmRpbmdfcmV3YXJkc2AgYW5kIGBSZXdhcmRQb29sOjp1cGRhdGVfcmVjb3JkZWRgZQEgZm9yIGV4YW1wbGUgYW5hbHlzaXMuIEEgW2BzcF9ydW50aW1lOjpGaXhlZFUxMjhgXSBzaG91bGQgYmUgZmluZSBmb3IgY2hhaW5zIHdpdGggYmFsYW5jZVEBIHR5cGVzIHNpbWlsYXIgdG8gdGhhdCBvZiBQb2xrYWRvdCBhbmQgS3VzYW1hLCBpbiB0aGUgYWJzZW5jZSBvZiBzZXZlcmUgc2xhc2hpbmcgKG9yPQEgcHJldmVudGVkIHZpYSBhIHJlYXNvbmFibGUgYE1heFBvaW50c1RvQmFsYW5jZWApLCBmb3IgbWFueSBtYW55IHllYXJzIHRvIGNvbWUuAFAAACRWb3Rlckxpc3QBJFZvdGVyTGlzdBwkTGlzdE5vZGVzAAEEBQSdDgQADIAgQSBzaW5nbGUgbm9kZSwgd2l0aGluIHNvbWUgYmFnLgAFASBOb2RlcyBzdG9yZSBsaW5rcyBmb3J3YXJkIGFuZCBiYWNrIHdpdGhpbiB0aGVpciByZXNwZWN0aXZlIGJhZ3MuAExDb3VudGVyRm9yTGlzdE5vZGVzAQA4EAAAAAAErENvdW50ZXIgZm9yIHRoZSByZWxhdGVkIGNvdW50ZWQgc3RvcmFnZSBtYXAAIExpc3RCYWdzAAEEBSihDgQADGQgQSBiYWcgc3RvcmVkIGluIHN0b3JhZ2UuABkBIFN0b3JlcyBhIGBCYWdgIHN0cnVjdCwgd2hpY2ggc3RvcmVzIGhlYWQgYW5kIHRhaWwgcG9pbnRlcnMgdG8gaXRzZWxmLgBQTmV4dE5vZGVBdXRvUmViYWdnZWQAAAQEAAgFASBQb2ludGVyIHRoYXQgcmVtZW1iZXJzIHRoZSBuZXh0IG5vZGUgdGhhdCB3aWxsIGJlIGF1dG8tcmViYWdnZWQuAQEgV2hlbiBgTm9uZWAsIHRoZSBuZXh0IHNjYW4gd2lsbCBzdGFydCBmcm9tIHRoZSBsaXN0IGhlYWQgYWdhaW4uABBMb2NrAAAQBAAQhCBMb2NrIGFsbCB1cGRhdGVzIHRvIHRoaXMgcGFsbGV0LgA5ASBJZiBhbnkgbm9kZXMgbmVlZHMgdXBkYXRpbmcsIHJlbW92YWwgb3IgYWRkaXRpb24gZHVlIHRvIGEgdGVtcG9yYXJ5IGxvY2ssIHRoZXQgW2BDYWxsOjpyZWJhZ2BdIGNhbiBiZSB1c2VkLgAwUGVuZGluZ1JlYmFnAAEEBQQQBAA4HQEgQWNjb3VudHMgdGhhdCBmYWlsZWQgdG8gYmUgaW5zZXJ0ZWQgaW50byB0aGUgYmFncy1saXN0IGR1ZSB0byBsb2NraW5nLlkBIFRoZXNlIGFjY291bnRzIHdpbGwgYmUgcHJvY2Vzc2VkIHdpdGggcHJpb3JpdHkgaW4gYG9uX2lkbGVgIG9yIHZpYSBgcmViYWdgIGV4dHJpbnNpYy4ATQEgTm90ZTogVGhpcyBzdG9yYWdlIGlzIGludGVudGlvbmFsbHkgdW5ib3VuZGVkLiBUaGUgZm9sbG93aW5nIGZhY3RvcnMgbWFrZSBib3VuZGluZzQgdW5uZWNlc3Nhcnk6UQEgMS4gVGhlIHN0b3JhZ2UgdXNhZ2UgaXMgdGVtcG9yYXJ5IC0gYWNjb3VudHMgYXJlIHByb2Nlc3NlZCBhbmQgcmVtb3ZlZCBpbiBgb25faWRsZWBFASAyLiBUaGUgcGFsbGV0IGlzIG9ubHkgbG9ja2VkIGR1cmluZyBzbmFwc2hvdCBnZW5lcmF0aW9uLCB3aGljaCBpcyB3ZWlnaHQtbGltaXRlZG0BIDMuIFByb2Nlc3NpbmcgaGFwcGVucyBhdCBtdWx0aXBsZSBhY2NvdW50cyBwZXIgYmxvY2ssIGNsZWFyaW5nIGV2ZW4gbGFyZ2UgYmFja2xvZ3MgcXVpY2tseUEBIDQuIEFuIGFydGlmaWNpYWwgbGltaXQgY291bGQgYmUgZXhoYXVzdGVkIGJ5IGFuIGF0dGFja2VyLCBwcmV2ZW50aW5nIGxlZ2l0aW1hdGUBASAgICBhdXRvLXJlYmFnZ2luZyBmcm9tIHB1dHRpbmcgYWNjb3VudHMgaW4gdGhlIGNvcnJlY3QgcG9zaXRpb24AaQEgV2UgZG9uJ3Qgc3RvcmUgdGhlIHNjb3JlIGhlcmUgLSBpdCdzIGFsd2F5cyBmZXRjaGVkIGZyb20gYFNjb3JlUHJvdmlkZXJgIHdoZW4gcHJvY2Vzc2luZyxpASBlbnN1cmluZyB3ZSB1c2UgdGhlIG1vc3QgdXAtdG8tZGF0ZSBzY29yZSAoYWNjb3VudHMgbWF5IGhhdmUgYmVlbiBzbGFzaGVkLCByZXdhcmRlZCwgZXRjLnQgd2hpbGUgd2FpdGluZyBpbiB0aGUgcXVldWUpLgBYQ291bnRlckZvclBlbmRpbmdSZWJhZwEAOBAAAAAABKxDb3VudGVyIGZvciB0aGUgcmVsYXRlZCBjb3VudGVkIHN0b3JhZ2UgbWFwAAF9BQABaQkACDRCYWdUaHJlc2hvbGRzpQ4JGSEDAOQLVAIAAADznoCXAgAAAKixl+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//////////6zQIFRoZSBsaXN0IG9mIHRocmVzaG9sZHMgc2VwYXJhdGluZyB0aGUgdmFyaW91cyBiYWdzLgBJASBJZHMgYXJlIHNlcGFyYXRlZCBpbnRvIHVuc29ydGVkIGJhZ3MgYWNjb3JkaW5nIHRvIHRoZWlyIHNjb3JlLiBUaGlzIHNwZWNpZmllcyB0aGVhASB0aHJlc2hvbGRzIHNlcGFyYXRpbmcgdGhlIGJhZ3MuIEFuIGlkJ3MgYmFnIGlzIHRoZSBsYXJnZXN0IGJhZyBmb3Igd2hpY2ggdGhlIGlkJ3Mgc2NvcmW4IGlzIGxlc3MgdGhhbiBvciBlcXVhbCB0byBpdHMgdXBwZXIgdGhyZXNob2xkLgBlASBXaGVuIGlkcyBhcmUgaXRlcmF0ZWQsIGhpZ2hlciBiYWdzIGFyZSBpdGVyYXRlZCBjb21wbGV0ZWx5IGJlZm9yZSBsb3dlciBiYWdzLiBUaGlzIG1lYW5zWQEgdGhhdCBpdGVyYXRpb24gaXMgX3NlbWktc29ydGVkXzogaWRzIG9mIGhpZ2hlciBzY29yZSB0ZW5kIHRvIGNvbWUgYmVmb3JlIGlkcyBvZiBsb3dlci0BIHNjb3JlLCBidXQgcGVlciBpZHMgd2l0aGluIGEgcGFydGljdWxhciBiYWcgYXJlIHNvcnRlZCBpbiBpbnNlcnRpb24gb3JkZXIuAGggIyBFeHByZXNzaW5nIHRoZSBjb25zdGFudABNASBUaGlzIGNvbnN0YW50IG11c3QgYmUgc29ydGVkIGluIHN0cmljdGx5IGluY3JlYXNpbmcgb3JkZXIuIER1cGxpY2F0ZSBpdGVtcyBhcmUgbm90LCBwZXJtaXR0ZWQuAEEBIFRoZXJlIGlzIGFuIGltcGxpZWQgdXBwZXIgbGltaXQgb2YgYFNjb3JlOjpNQVhgOyB0aGF0IHZhbHVlIGRvZXMgbm90IG5lZWQgdG8gYmUhASBzcGVjaWZpZWQgd2l0aGluIHRoZSBiYWcuIEZvciBhbnkgdHdvIHRocmVzaG9sZCBsaXN0cywgaWYgb25lIGVuZHMgd2l0aDEBIGBTY29yZTo6TUFYYCwgdGhlIG90aGVyIG9uZSBkb2VzIG5vdCwgYW5kIHRoZXkgYXJlIG90aGVyd2lzZSBlcXVhbCwgdGhlIHR3b3wgbGlzdHMgd2lsbCBiZWhhdmUgaWRlbnRpY2FsbHkuADggIyBDYWxjdWxhdGlvbgBVASBJdCBpcyByZWNvbW1lbmRlZCB0byBnZW5lcmF0ZSB0aGUgc2V0IG9mIHRocmVzaG9sZHMgaW4gYSBnZW9tZXRyaWMgc2VyaWVzLCBzdWNoIHRoYXRBASB0aGVyZSBleGlzdHMgc29tZSBjb25zdGFudCByYXRpbyBzdWNoIHRoYXQgYHRocmVzaG9sZFtrICsgMV0gPT0gKHRocmVzaG9sZFtrXSAq0CBjb25zdGFudF9yYXRpbykubWF4KHRocmVzaG9sZFtrXSArIDEpYCBmb3IgYWxsIGBrYC4AWQEgVGhlIGhlbHBlcnMgaW4gdGhlIGAvdXRpbHMvZnJhbWUvZ2VuZXJhdGUtYmFnc2AgbW9kdWxlIGNhbiBzaW1wbGlmeSB0aGlzIGNhbGN1bGF0aW9uLgAsICMgRXhhbXBsZXMAUQEgLSBJZiBgQmFnVGhyZXNob2xkczo6Z2V0KCkuaXNfZW1wdHkoKWAsIHRoZW4gYWxsIGlkcyBhcmUgcHV0IGludG8gdGhlIHNhbWUgYmFnLCBhbmSwICAgaXRlcmF0aW9uIGlzIHN0cmljdGx5IGluIGluc2VydGlvbiBvcmRlci5hASAtIElmIGBCYWdUaHJlc2hvbGRzOjpnZXQoKS5sZW4oKSA9PSA2NGAsIGFuZCB0aGUgdGhyZXNob2xkcyBhcmUgZGV0ZXJtaW5lZCBhY2NvcmRpbmcgdG8RASAgIHRoZSBwcm9jZWR1cmUgZ2l2ZW4gYWJvdmUsIHRoZW4gdGhlIGNvbnN0YW50IHJhdGlvIGlzIGVxdWFsIHRvIDIuZQEgLSBJZiBgQmFnVGhyZXNob2xkczo6Z2V0KCkubGVuKCkgPT0gMjAwYCwgYW5kIHRoZSB0aHJlc2hvbGRzIGFyZSBkZXRlcm1pbmVkIGFjY29yZGluZyB0b1kBICAgdGhlIHByb2NlZHVyZSBnaXZlbiBhYm92ZSwgdGhlbiB0aGUgY29uc3RhbnQgcmF0aW8gaXMgYXBwcm94aW1hdGVseSBlcXVhbCB0byAxLjI0OC5hASAtIElmIHRoZSB0aHJlc2hvbGQgbGlzdCBiZWdpbnMgYFsxLCAyLCAzLCAuLi5dYCwgdGhlbiBhbiBpZCB3aXRoIHNjb3JlIDAgb3IgMSB3aWxsIGZhbGzwICAgaW50byBiYWcgMCwgYW4gaWQgd2l0aCBzY29yZSAyIHdpbGwgZmFsbCBpbnRvIGJhZyAxLCBldGMuADAgIyBNaWdyYXRpb24AYQEgSW4gdGhlIGV2ZW50IHRoYXQgdGhpcyBsaXN0IGV2ZXIgY2hhbmdlcywgYSBjb3B5IG9mIHRoZSBvbGQgYmFncyBsaXN0IG11c3QgYmUgcmV0YWluZWQuXQEgV2l0aCB0aGF0IGBMaXN0OjptaWdyYXRlYCBjYW4gYmUgY2FsbGVkLCB3aGljaCB3aWxsIHBlcmZvcm0gdGhlIGFwcHJvcHJpYXRlIG1pZ3JhdGlvbi4AUE1heEF1dG9SZWJhZ1BlckJsb2NrOBAKAAAAEDUBIE1heGltdW0gbnVtYmVyIG9mIGFjY291bnRzIHRoYXQgbWF5IGJlIHJlLWJhZ2dlZCBhdXRvbWF0aWNhbGx5IGluIGBvbl9pZGxlYC4AUQEgQSB2YWx1ZSBvZiBgMGAgKG9idGFpbmVkIGJ5IGNvbmZpZ3VyaW5nIGB0eXBlIE1heEF1dG9SZWJhZ1BlckJsb2NrID0gKCk7YCkgZGlzYWJsZXM0IHRoZSBmZWF0dXJlLgABqQ4ABBRTY29yZSgECQEgVGhlIHR5cGUgdXNlZCB0byBkaWN0YXRlIGEgbm9kZSBwb3NpdGlvbiByZWxhdGl2ZSB0byBvdGhlciBub2Rlcy4EdN1wLaRvd9es939aSNSvfRJGUJ0hzbEm6LrFaBPEop4Yc2NvcmVzBAx3aG8EsQ4YsCBHZXQgdGhlIGN1cnJlbnQgYHNjb3JlYCBvZiBhIGdpdmVuIGFjY291bnQuAGEBIFJldHVybnMgYChjdXJyZW50LCByZWFsX3Njb3JlKWAsIHRoZSBmb3JtZXIgYmVpbmcgdGhlIGN1cnJlbnQgc2NvcmUgdGhhdCB0aGlzIHBhbGxldCBpc1kBIGF3YXJlIG9mLCB3aGljaCBtYXkgb3IgbWF5IG5vdCBiZSB1cCB0byBkYXRlLCBhbmQgdGhlIGxhdHRlciBiZWluZyB0aGUgcmVhbCBzY29yZSwgYXMwIHByb3ZpZGVkIGJ5HQEgSWYgdGhlIHR3byBkaWZmZXIsIGl0IG1lYW5zIHRoaXMgbm9kZSBpcyBlbGlnaWJsZSBmb3IgW2BDYWxsOjpyZWJhZ2BdLgBSAABARGVsZWdhdGVkU3Rha2luZwFARGVsZWdhdGVkU3Rha2luZxAoRGVsZWdhdG9ycwABBAUEtQ4EABCkIE1hcCBvZiBEZWxlZ2F0b3JzIHRvIHRoZWlyIGBEZWxlZ2F0aW9uYC4AYQEgSW1wbGVtZW50YXRpb24gbm90ZTogV2UgYXJlIG5vdCB1c2luZyBhIGRvdWJsZSBtYXAgd2l0aCBgZGVsZWdhdG9yYCBhbmQgYGFnZW50YCBhY2NvdW50YQEgYXMga2V5cyBzaW5jZSB3ZSB3YW50IHRvIHJlc3RyaWN0IGRlbGVnYXRvcnMgdG8gZGVsZWdhdGUgb25seSB0byBvbmUgYWNjb3VudCBhdCBhIHRpbWUuAFBDb3VudGVyRm9yRGVsZWdhdG9ycwEAOBAAAAAABKxDb3VudGVyIGZvciB0aGUgcmVsYXRlZCBjb3VudGVkIHN0b3JhZ2UgbWFwABhBZ2VudHMAAQQFBLkOBAAEiCBNYXAgb2YgYEFnZW50YCB0byB0aGVpciBgTGVkZ2VyYC4AQENvdW50ZXJGb3JBZ2VudHMBADgQAAAAAASsQ291bnRlciBmb3IgdGhlIHJlbGF0ZWQgY291bnRlZCBzdG9yYWdlIG1hcAAAAW0JAAggUGFsbGV0SWRRCyBweS9kbHN0awSQIEluamVjdGVkIGlkZW50aWZpZXIgZm9yIHRoZSBwYWxsZXQuAExTbGFzaFJld2FyZEZyYWN0aW9uoQEQgJaYAARRASBGcmFjdGlvbiBvZiB0aGUgc2xhc2ggdGhhdCBpcyByZXdhcmRlZCB0byB0aGUgY2FsbGVyIG9mIHBlbmRpbmcgc2xhc2ggdG8gdGhlIGFnZW50LgABvQ4AAABTAAA8U3Rha2luZ1JjQ2xpZW50ATxTdGFraW5nUmNDbGllbnQMXEluY29tcGxldGVTZXNzaW9uUmVwb3J0AACFBQQABB0BIEFuIGluY29tcGxldGUgaW5jb21pbmcgc2Vzc2lvbiByZXBvcnQgdGhhdCB3ZSBoYXZlIG5vdCBhY3RlZCB1cG9uIHlldC4AcExhc3RTZXNzaW9uUmVwb3J0RW5kaW5nSW5kZXgAADgEACD8IFRoZSBsYXN0IHNlc3Npb24gcmVwb3J0J3MgYGVuZF9pbmRleGAgdGhhdCB3ZSBoYXZlIGFjdGVkIHVwb24uAGEBIFRoaXMgYWxsb3dzIHRoaXMgcGFsbGV0IHRvIGVuc3VyZSBhIHNlcXVlbnRpYWxseSBpbmNyZWFzaW5nIHNlcXVlbmNlIG9mIHNlc3Npb24gcmVwb3J0c0wgcGFzc2VkIHRvIHN0YWtpbmcuAF0BIE5vdGUgdGhhdCB3aXRoIHRoZSBYQ00gYmVpbmcgdGhlIGJhY2tib25lIG9mIGNvbW11bmljYXRpb24sIHdlIGhhdmUgYSBndWFyYW50ZWUgb24gdGhlYQEgb3JkZXJpbmcgb2YgbWVzc2FnZXMuIEFzIGxvbmcgYXMgdGhlIFJDIHNlbmRzIHNlc3Npb24gcmVwb3J0cyBpbiBvcmRlciwgd2UgX2V2ZW50dWFsbHlfwCByZWNlaXZlIHRoZW0gaW4gdGhlIHNhbWUgY29ycmVjdCBvcmRlciBhcyB3ZWxsLgBQT3V0Z29pbmdWYWxpZGF0b3JTZXQAAMEOBAAQ2CBBIHZhbGlkYXRvciBzZXQgdGhhdCBpcyBvdXRnb2luZywgYW5kIHNob3VsZCBiZSBzZW50LgB1ASBUaGlzIHdpbGwgYmUgYXR0ZW1wdGVkIHRvIGJlIHNlbnQsIHBvc3NpYmx5IG9uIGV2ZXJ5IGBvbl9pbml0aWFsaXplYCBjYWxsLCB1bnRpbCBpdCBpcyBzZW50LPQgb3IgdGhlIHNlY29uZCB2YWx1ZSByZWFjaGVzIHplcm8sIGF0IHdoaWNoIHBvaW50IHdlIGRyb3AgaXQuAAGBBQABcQkABChLZXlEZXBvc2l0WQFAAOh2SBcAAAAAAAAAAAAAAAQtASBEZXBvc2l0IGhlbGQgd2hlbiBhIHZhbGlkYXRvciBzZXRzIHNlc3Npb24ga2V5cy4gUmVsZWFzZWQgb24gYHB1cmdlX2tleXNgLgAByQ4AAABUAABITXVsdGlCbG9ja0VsZWN0aW9uAUhNdWx0aUJsb2NrRWxlY3Rpb24cFFJvdW5kAQA4EAAAAAAYrCBJbnRlcm5hbCBjb3VudGVyIGZvciB0aGUgbnVtYmVyIG9mIHJvdW5kcy4AVQEgVGhpcyBpcyB1c2VmdWwgZm9yIGRlLWR1cGxpY2F0aW9uIG9mIHRyYW5zYWN0aW9ucyBzdWJtaXR0ZWQgdG8gdGhlIHBvb2wsIGFuZCBnZW5lcmFsbCBkaWFnbm9zdGljcyBvZiB0aGUgcGFsbGV0LgBNASBUaGlzIGlzIG1lcmVseSBpbmNyZW1lbnRlZCBvbmNlIHBlciBldmVyeSB0aW1lIHRoYXQgYW4gdXBzdHJlYW0gYGVsZWN0YCBpcyBjYWxsZWQuADBDdXJyZW50UGhhc2UBAK0FBAAEPCBDdXJyZW50IHBoYXNlLgA4RGVzaXJlZFRhcmdldHMAAQQFODgEAATMIERlc2lyZWQgbnVtYmVyIG9mIHRhcmdldHMgdG8gZWxlY3QgZm9yIHRoaXMgcm91bmQuAEhQYWdlZFZvdGVyU25hcHNob3QAAQgFBdDNDgQABAEBIFBhZ2luYXRlZCB2b3RlciBzbmFwc2hvdC4gQXQgbW9zdCBbYFQ6OlBhZ2VzYF0ga2V5cyB3aWxsIGV4aXN0LgBYUGFnZWRWb3RlclNuYXBzaG90SGFzaAABCAUF0EAEAAwxASBTYW1lIGFzIFtgUGFnZWRWb3RlclNuYXBzaG90YF0sIGJ1dCBpdCB3aWxsIHN0b3JlIHRoZSBoYXNoIG9mIHRoZSBzbmFwc2hvdC4A/CBUaGUgaGFzaCBpcyBnZW5lcmF0ZWQgdXNpbmcgW2BmcmFtZV9zeXN0ZW06OkNvbmZpZzo6SGFzaGluZ2BdLgBMUGFnZWRUYXJnZXRTbmFwc2hvdAABCAUF0N0OBAAMbCBQYWdpbmF0ZWQgdGFyZ2V0IHNuYXBzaG90LgBZASBGb3IgdGhlIHRpbWUgYmVpbmcsIHNpbmNlIHdlIGFzc3VtZSBvbmUgcGFnZXMgb2YgdGFyZ2V0cywgYXQgbW9zdCBPTkUga2V5IHdpbGwgZXhpc3QuAFxQYWdlZFRhcmdldFNuYXBzaG90SGFzaAABCAUF0EAEAAw1ASBTYW1lIGFzIFtgUGFnZWRUYXJnZXRTbmFwc2hvdGBdLCBidXQgaXQgd2lsbCBzdG9yZSB0aGUgaGFzaCBvZiB0aGUgc25hcHNob3QuAPwgVGhlIGhhc2ggaXMgZ2VuZXJhdGVkIHVzaW5nIFtgZnJhbWVfc3lzdGVtOjpDb25maWc6Okhhc2hpbmdgXS4AAaUFAAF5CQAYNFVuc2lnbmVkUGhhc2U4EJYAAAAEgCBEdXJhdGlvbiBvZiB0aGUgdW5zaWduZWQgcGhhc2UuACxTaWduZWRQaGFzZTgQLAEAAAR4IER1cmF0aW9uIG9mIHRoZSBzaWduZWQgcGhhc2UuAFRTaWduZWRWYWxpZGF0aW9uUGhhc2U4EAACAAAQpCBEdXJhdGlvbiBvZiB0aGUgc2luZ2VkIHZhbGlkYXRpb24gcGhhc2UuAFUBIFRoZSBkdXJhdGlvbiBvZiB0aGlzIHNob3VsZCBub3QgYmUgbGVzcyB0aGFuIGBUOjpQYWdlc2AsIGFuZCB0aGVyZSBpcyBubyBwb2ludCBpbiBpdAEBIGJlaW5nIG1vcmUgdGhhbiBgU2lnbmVkUGhhc2U6Ok1heFN1Ym1pc3Npb246OmdldCgpICogVDo6UGFnZXNgLgBUVm90ZXJTbmFwc2hvdFBlckJsb2NrOBDAAgAABMggVGhlIG51bWJlciBvZiBzbmFwc2hvdCB2b3RlcnMgdG8gZmV0Y2ggcGVyIGJsb2NrLgBYVGFyZ2V0U25hcHNob3RQZXJCbG9jazgQ0AcAAATMIFRoZSBudW1iZXIgb2Ygc25hcHNob3QgdGFyZ2V0cyB0byBmZXRjaCBwZXIgYmxvY2suABRQYWdlczgQIAAAABhUIFRoZSBudW1iZXIgb2YgcGFnZXMuAAEBIFRoZSBzbmFwc2hvdCBpcyBjcmVhdGVkIHdpdGggdGhpcyBtYW55IGtleXMgaW4gdGhlIHN0b3JhZ2UgbWFwLgBRASBUaGUgc29sdXRpb25zIG1heSBjb250YWluIGF0IE1PU1QgdGhpcyBtYW55IHBhZ2VzLCBidXQgbGVzcyBwYWdlcyBhcmUgYWNjZXB0YWJsZSBhcxggd2VsbC4AAeEOAAAAVQAAaE11bHRpQmxvY2tFbGVjdGlvblZlcmlmaWVyAWhNdWx0aUJsb2NrRWxlY3Rpb25WZXJpZmllchw8UXVldWVkU29sdXRpb25YAAEIBQXQtQUEABw9ASBUaGUgYFhgIHZhcmlhbnQgb2YgdGhlIGN1cnJlbnQgcXVldWVkIHNvbHV0aW9uLiBNaWdodCBiZSB0aGUgdmFsaWQgb25lIG9yIG5vdC4AaQEgVGhlIHR3byB2YXJpYW50cyBvZiB0aGlzIHN0b3JhZ2UgaXRlbSBpcyB0byBhdm9pZCB0aGUgbmVlZCBvZiBjb3B5aW5nLiBSZWNhbGwgdGhhdCBvbmNlIGFxASBgVmVyaWZ5aW5nU29sdXRpb25gIGlzIGJlaW5nIHByb2Nlc3NlZCwgaXQgbmVlZHMgdG8gd3JpdGUgaXRzIHBhcnRpYWwgc3VwcG9ydHMgKnNvbWV3aGVyZSouaQEgV3JpdGluZyB0aGVzZXMgc3VwcG9ydHMgb24gdG9wIG9mIGEgKmdvb2QqIHF1ZXVlZCBzdXBwb3J0cyBpcyB3cm9uZywgc2luY2Ugd2UgbWlnaHQgYmFpbC51ASBXcml0aW5nIHRoZW0gdG8gYSBidWdnZXIgYW5kIGNvcHlpbmcgYXQgdGhlIG5lZCBpcyBzbGlnaHRseSBiZXR0ZXIsIGJ1dCBleHBlbnNpdmUuIFRoaXMgZmxhZ3wgc3lzdGVtIGlzIGJlc3Qgb2YgYm90aCB3b3JsZHMuADxRdWV1ZWRTb2x1dGlvblkAAQgFBdC1BQQABD0BIFRoZSBgWWAgdmFyaWFudCBvZiB0aGUgY3VycmVudCBxdWV1ZWQgc29sdXRpb24uIE1pZ2h0IGJlIHRoZSB2YWxpZCBvbmUgb3Igbm90LgBIUXVldWVkVmFsaWRWYXJpYW50AQEEBTjlDgQBCF0BIFBvaW50ZXIgdG8gdGhlIHZhcmlhbnQgb2YgW2BRdWV1ZWRTb2x1dGlvblhgXSBvciBbYFF1ZXVlZFNvbHV0aW9uWWBdIHRoYXQgaXMgY3VycmVudGx5HCB2YWxpZC4AWFF1ZXVlZFNvbHV0aW9uQmFja2luZ3MAAQgFBdDpDgQAINQgVGhlIGAoYW1vdW50LCBjb3VudClgIG9mIGJhY2tpbmdzLCBkaXZpZGVkIHBlciBwYWdlLgBxASBUaGlzIGlzIHN0b3JlZCBiZWNhdXNlIGluIHRoZSBsYXN0IGJsb2NrIG9mIHZlcmlmaWNhdGlvbiB3ZSBuZWVkIHRoZW0gdG8gY29tcHV0ZSB0aGUgc2NvcmUsmCBhbmQgY2hlY2sgYE1heEJhY2tlcnNQZXJXaW5uZXJGaW5hbGAuAHEBIFRoaXMgY2FuIG9ubHkgZXZlciBsaXZlIGZvciB0aGUgaW52YWxpZCB2YXJpYW50IG9mIHRoZSBzb2x1dGlvbi4gT25jZSBpdCBpcyB2YWxpZCwgd2UgZG9uJ3QVASBuZWVkIHRoaXMgaW5mb3JtYXRpb24gYW55bW9yZTsgdGhlIHNjb3JlIGlzIGFscmVhZHkgY29tcHV0ZWQgb25jZSBpbvQgW2BRdWV1ZWRTb2x1dGlvblNjb3JlYF0sIGFuZCB0aGUgYmFja2luZyBjb3VudHMgYXJlIGNoZWNrZWQuAExRdWV1ZWRTb2x1dGlvblNjb3JlAAEEBTjVBQQADNggVGhlIHNjb3JlIG9mIHRoZSB2YWxpZCB2YXJpYW50IG9mIFtgUXVldWVkU29sdXRpb25gXS4AuCBUaGlzIG9ubHkgZXZlciBsaXZlcyBmb3IgdGhlIGB2YWxpZGAgdmFyaWFudC4AME1pbmltdW1TY29yZQAA1QUEAARVASBUaGUgbWluaW11bSBzY29yZSB0aGF0IGVhY2ggc29sdXRpb24gbXVzdCBhdHRhaW4gaW4gb3JkZXIgdG8gYmUgY29uc2lkZXJlZCBmZWFzaWJsZS4ANFN0YXR1c1N0b3JhZ2UBAPkOBAEEdCBTdG9yYWdlIGl0ZW0gZm9yIFtgU3RhdHVzYF0uAAHZBQABfQkADGBNYXhCYWNrZXJzUGVyV2lubmVyRmluYWw4EORXAAAUHQEgTWF4aW11bSBudW1iZXIgb2YgYmFja2VycywgcGVyIHdpbm5lciwgYW1vbmcgYWxsIHBhZ2VzIG9mIGFuIGVsZWN0aW9uLgAFASBUaGlzIGNhbiBvbmx5IGJlIGNoZWNrZWQgYXQgdGhlIHZlcnkgZmluYWwgc3RlcCBvZiB2ZXJpZmljYXRpb24uAF0BIE5PVEU6IGF0IHRoZSBtb21lbnQsIHdlIGRvbid0IGNoZWNrIHRoaXMsIGFuZCBpdCBpcyBpbiBwbGFjZSBmb3IgZnV0dXJlIGNvbXBhdGliaWxpdHkuAExNYXhCYWNrZXJzUGVyV2lubmVyOBDAAgAABMQgTWF4aW11bSBudW1iZXIgb2YgYmFja2VycywgcGVyIHdpbm5lciwgcGVyIHBhZ2UuAERNYXhXaW5uZXJzUGVyUGFnZTgQ6AMAAAhhASBNYXhpbXVtIG51bWJlciBvZiBzdXBwb3J0cyAoYWthLiB3aW5uZXJzL3ZhbGlkYXRvcnMvdGFyZ2V0cykgdGhhdCBjYW4gYmUgcmVwcmVzZW50ZWQgaW5MIGEgcGFnZSBvZiByZXN1bHRzLgAAAABWAABoTXVsdGlCbG9ja0VsZWN0aW9uVW5zaWduZWQAAd0FAAAAAAAAVwAAYE11bHRpQmxvY2tFbGVjdGlvblNpZ25lZAFgTXVsdGlCbG9ja0VsZWN0aW9uU2lnbmVkEDRJbnZ1bG5lcmFibGVzAQDVDgQAJBUBIEFjY291bnRzIHdoaXRlbGlzdGVkIGJ5IGdvdmVybmFuY2UgdG8gYWx3YXlzIHN1Ym1pdCB0aGVpciBzb2x1dGlvbnMuAHAgVGhleSBhcmUgZGlmZmVyZW50IGluIHRoYXQ6APwgKiBUaGV5IGFsd2F5cyBwYXkgYSBmaXhlZCBkZXBvc2l0IGZvciBzdWJtaXNzaW9uLCBzcGVjaWZpZWQgYnn0ICAgW2BDb25maWc6OkludnVsbmVyYWJsZURlcG9zaXRgXS4gVGhleSBwYXkgbm8gcGFnZSBkZXBvc2l0LmkBICogSWYgX2VqZWN0ZWRfIGJ5IGJldHRlciBzb2x1dGlvbiBmcm9tIFtgU29ydGVkU2NvcmVzYF0sIHRoZXkgd2lsbCBnZXQgdGhlaXIgZnVsbCBkZXBvc2l0ICAgIGJhY2suCQEgKiBUaGV5IGFsd2F5cyBnZXQgdGhlaXIgdHgtZmVlIGJhY2sgZXZlbiBpZiB0aGV5IGFyZSBfZGlzY2FyZGVkXy4AMFNvcnRlZFNjb3JlcwEBBAU4/Q4EAAAARFN1Ym1pc3Npb25TdG9yYWdlAAEMBQUFCQ/pBQQABOwgVHJpcGxlIG1hcCBmcm9tIChyb3VuZCwgYWNjb3VudCwgcGFnZSkgdG8gYSBzb2x1dGlvbiBwYWdlLgBkU3VibWlzc2lvbk1ldGFkYXRhU3RvcmFnZQABCAUFqQwNDwQAENggTWFwIGZyb20gYWNjb3VudCB0byB0aGUgbWV0YWRhdGEgb2YgdGhlaXIgc3VibWlzc2lvbi4AcQEgaW52YXJpYW50OiBmb3IgYW55IEtleTEgb2YgdHlwZSBgQWNjb3VudElkYCBpbiBbYFN1Ym1pc3Npb25zYF0sIHRoaXMgc3RvcmFnZSBtYXAgYWxzbyBoYXMgYRwgdmFsdWUuAAG1BgABjQkAAAEZDwAABHcLZVBCaAvPBTnSBN9Z0yiJr6YLyclMjiR27ZuqqTAFLGRlcG9zaXRfZm9yCAx3aG8EFHBhZ2VzOFkBFBEBIEdldCB0aGUgZGVwb3NpdCBhbW91bnQgdGhhdCB3aWxsIGJlIGhlbGQgZm9yIGEgc29sdXRpb24gb2YgYHBhZ2VzYC4AQQEgVGhpcyBhbGxvd3MgYW4gb2ZmY2hhaW4gYXBwbGljYXRpb24gdG8ga25vdyB3aGF0IFtgQ29uZmlnOjpEZXBvc2l0UGVyUGFnZWBdIGFuZGUBIFtgQ29uZmlnOjpEZXBvc2l0QmFzZWBdIGFyZSBkb2luZyB1bmRlciB0aGUgaG9vZC4gSXQgYWxzbyB0YWtlcyBpbnRvIGFjY291bnQgaWYgYHdob2AgaXNoIFtgSW52dWxuZXJhYmxlc2BdIG9yIG5vdC4AWAAAHFN0YWtpbmcBHFN0YWtpbmfQOFZhbGlkYXRvckNvdW50AQA4EAAAAAAEnCBUaGUgaWRlYWwgbnVtYmVyIG9mIGFjdGl2ZSB2YWxpZGF0b3JzLgAYQm9uZGVkAAEEBQQEBAAMAQEgTWFwIGZyb20gYWxsIGxvY2tlZCAic3Rhc2giIGFjY291bnRzIHRvIHRoZSBjb250cm9sbGVyIGFjY291bnQuANAgVFdPWC1OT1RFOiBTQUZFIHNpbmNlIGBBY2NvdW50SWRgIGlzIGEgc2VjdXJlIGhhc2guAEBNaW5Ob21pbmF0b3JCb25kAQBZAUAAAAAAAAAAAAAAAAAAAAAABCEBIFRoZSBtaW5pbXVtIGFjdGl2ZSBib25kIHRvIGJlY29tZSBhbmQgbWFpbnRhaW4gdGhlIHJvbGUgb2YgYSBub21pbmF0b3IuAEBNaW5WYWxpZGF0b3JCb25kAQBZAUAAAAAAAAAAAAAAAAAAAAAABCEBIFRoZSBtaW5pbXVtIGFjdGl2ZSBib25kIHRvIGJlY29tZSBhbmQgbWFpbnRhaW4gdGhlIHJvbGUgb2YgYSB2YWxpZGF0b3IuAEhNaW5pbXVtQWN0aXZlU3Rha2UBAFkBQAAAAAAAAAAAAAAAAAAAAAAEEQEgVGhlIG1pbmltdW0gYWN0aXZlIG5vbWluYXRvciBzdGFrZSBvZiB0aGUgbGFzdCBzdWNjZXNzZnVsIGVsZWN0aW9uLgA0TWluQ29tbWlzc2lvbgEAoQEQAAAAAAzoIFRoZSBtaW5pbXVtIGFtb3VudCBvZiBjb21taXNzaW9uIHRoYXQgdmFsaWRhdG9ycyBjYW4gc2V0LgCAIElmIHNldCB0byBgMGAsIG5vIGxpbWl0IGV4aXN0cy4ANE1heENvbW1pc3Npb24BAKEBEADKmjsMwCBUaGUgbWF4aW11bSBjb21taXNzaW9uIHRoYXQgdmFsaWRhdG9ycyBjYW4gc2V0LgAZASBJZiBub3Qgc2V0LCBkZWZhdWx0cyB0byBgUGVyYmlsbDo6b25lKClgICgxMDAlKSwgaS5lLiBubyB1cHBlciBsaW1pdC4ATERpc2FibGVNaW50aW5nR3VhcmQAADgEABw9ASBTYWZldHkgZ3VhcmQ6IHRoZSBlcmEgZnJvbSB3aGljaCBsZWdhY3kgbWludGluZyBpcyBwZXJtYW5lbnRseSBkaXNhYmxlZCBvbiB0aGUVASBwYXlvdXQgc2lkZS4gKipJcnJldmVyc2libGUqKiDigJQgb25jZSBzZXQsIHNob3VsZCBuZXZlciBiZSBjbGVhcmVkLgAxASBTZXBhcmF0ZSBmcm9tIFtgQ29uZmlnOjpEaXNhYmxlTWludGluZ2BdIHdoaWNoIGNvbnRyb2xzIHRoZSBgZW5kX2VyYWAgcGF0aC41ASBUaGlzIHN0b3JhZ2UgZ3VhcmRzIGFnYWluc3QgbWludGluZyBkdXJpbmcgcGF5b3V0IGZvciBlcmFzIHRoYXQgd2VyZSBjcmVhdGVkSQEgaW4gREFQIG1vZGUuIFNldCBhdXRvbWF0aWNhbGx5IGJ5IGBlbmRfZXJhX2RhcGAgb24gZmlyc3Qgc3VjY2Vzc2Z1bCBwb3Qgc25hcHNob3QuGQEgSW4gbGVnYWN5IG1vZGUgKEt1c2FtYSksIHRoaXMgaXMgbmV2ZXIgc2V0IGFuZCB0aGUgZ3VhcmQgaXMgaW5hY3RpdmUuAEBPcHRpbXVtU2VsZlN0YWtlAQBZAUAAAAAAAAAAAAAAAAAAAAAAELQgT3B0aW11bSBzZWxmLXN0YWtlIHRocmVzaG9sZCBmb3IgdmFsaWRhdG9ycy4AIQEgQmVsb3cgdGhpcyB0aHJlc2hvbGQsIHRoZSBpbmNlbnRpdmUgd2VpZ2h0IGdyb3dzIGFzIGBzcXJ0KHNlbGZfc3Rha2UpYC7oIEFib3ZlIGl0LCBncm93dGggaXMgZGFtcGVuZWQgYnkgW2BTZWxmU3Rha2VTbG9wZUZhY3RvcmBdLgBASGFyZENhcFNlbGZTdGFrZQEAWQFAAAAAAAAAAAAAAAAAAAAAAAywIEhhcmQgY2FwIG9uIGVmZmVjdGl2ZSB2YWxpZGF0b3Igc2VsZi1zdGFrZS4ANQEgU2VsZi1zdGFrZSBhYm92ZSB0aGlzIHZhbHVlIHJlY2VpdmVzIG5vIGFkZGl0aW9uYWwgcmV3YXJkIGJlbmVmaXQgKHBsYXRlYXUpLgBQU2VsZlN0YWtlU2xvcGVGYWN0b3IBAKEBEAAAAAAMZQEgU2xvcGUgZmFjdG9yIGNvbnRyb2xsaW5nIHRoZSBkaXNjb3VyYWdlbWVudCByYXRlIGZvciBzZWxmLXN0YWtlIGJldHdlZW4gb3B0aW11bSBhbmQgY2FwLgBFASBWYWx1ZSBiZXR3ZWVuIDAgYW5kIDE6IGs9MSBtZWFucyBubyBkaXNjb3VyYWdlbWVudCwgaz0wIG1lYW5zIGltbWVkaWF0ZSBwbGF0ZWF1LgBwRXJhc1ZhbGlkYXRvckluY2VudGl2ZUJ1ZGdldAEBBAU4WQFAAAAAAAAAAAAAAAAAAAAAAAxBASBUaGUgdG90YWwgdmFsaWRhdG9yIGluY2VudGl2ZSBidWRnZXQgZm9yIHRoZSBnaXZlbiBlcmEsIHNuYXBzaG90dGVkIGF0IGVyYSBlbmQuAFUBIFRoaXMgaXMgdGhlIHNpbWlsYXIgdG8gW2BFcmFzVmFsaWRhdG9yUmV3YXJkYF0gYnV0IGZvciB0aGUgc2VsZi1zdGFrZSBpbmNlbnRpdmUgcG90LgB8RXJhc1N1bVZhbGlkYXRvckluY2VudGl2ZVdlaWdodAEBBAU4WQFAAAAAAAAAAAAAAAAAAAAAAAzYIFN1bSBvZiBhbGwgdmFsaWRhdG9ycycgaW5jZW50aXZlIHdlaWdodHMgZm9yIHRoZSBlcmEuANQgRGlyZWN0bHkgbGlua2VkIHRvIFtgRXJhc1ZhbGlkYXRvckluY2VudGl2ZVdlaWdodGBdLgBwRXJhc1ZhbGlkYXRvckluY2VudGl2ZVdlaWdodAABCAUFqQxZAQQACLwgSW5kaXZpZHVhbCB2YWxpZGF0b3IgaW5jZW50aXZlIHdlaWdodCBwZXIgZXJhLi0BIEVhY2ggdmFsaWRhdG9yJ3Mgc2hhcmUgb2YgdGhlIGluY2VudGl2ZSBwb3QgPSBgdGhlaXJfd2VpZ2h0IC8gc3VtX3dlaWdodGAuAFhBcmVOb21pbmF0b3JzU2xhc2hhYmxlAQBdAQQBHKQgV2hldGhlciBub21pbmF0b3JzIGFyZSBzbGFzaGFibGUgb3Igbm90LgBtASAtIFdoZW4gc2V0IHRvIGB0cnVlYCAoZGVmYXVsdCksIG5vbWluYXRvcnMgYXJlIHNsYXNoZWQgYWxvbmcgd2l0aCB2YWxpZGF0b3JzIGFuZCBtdXN0IHdhaXQpASAgIHRoZSBmdWxsIFtgQ29uZmlnOjpCb25kaW5nRHVyYXRpb25gXSBiZWZvcmUgd2l0aGRyYXdpbmcgdW5ib25kZWQgZnVuZHMuFQEgLSBXaGVuIHNldCB0byBgZmFsc2VgLCBub21pbmF0b3JzIGFyZSBub3Qgc2xhc2hlZCwgYW5kIGNhbiB1bmJvbmQgaW4NASAgIFtgQ29uZmlnOjpOb21pbmF0b3JGYXN0VW5ib25kRHVyYXRpb25gXSBlcmFzIGluc3RlYWQgb2YgdGhlIGZ1bGxZASAgIFtgQ29uZmlnOjpCb25kaW5nRHVyYXRpb25gXSAoc2VlIFtgU3Rha2luZ0ludGVyZmFjZTo6bm9taW5hdG9yX2JvbmRpbmdfZHVyYXRpb25gXSkuAFxFcmFzTm9taW5hdG9yc1NsYXNoYWJsZQABBAU4XQEEABzYIFBlci1lcmEgc25hcHNob3Qgb2Ygd2hldGhlciBub21pbmF0b3JzIGFyZSBzbGFzaGFibGUuAGUBIFRoaXMgaXMgY29waWVkIGZyb20gW2BBcmVOb21pbmF0b3JzU2xhc2hhYmxlYF0gYXQgdGhlIHN0YXJ0IG9mIGVhY2ggZXJhLiBXaGVuIHByb2Nlc3NpbmdRASBvZmZlbmNlcywgd2UgdXNlIHRoZSB2YWx1ZSBmcm9tIHRoaXMgc3RvcmFnZSBmb3IgdGhlIG9mZmVuY2UgZXJhIHRvIGVuc3VyZSB0aGF0IHRoZTkBIHNsYXNoaW5nIHJ1bGVzIGF0IHRoZSB0aW1lIG9mIHRoZSBvZmZlbmNlIGFyZSBhcHBsaWVkLCBub3QgdGhlIGN1cnJlbnQgcnVsZXMuAGUBIElmIGFuIGVudHJ5IGRvZXMgbm90IGV4aXN0IGZvciBhbiBlcmEsIG5vbWluYXRvcnMgYXJlIGFzc3VtZWQgdG8gYmUgc2xhc2hhYmxlIChkZWZhdWx0KS4AGExlZGdlcgABBAIEHQ8EABBFASBNYXAgZnJvbSBhbGwgKHVubG9ja2VkKSAiY29udHJvbGxlciIgYWNjb3VudHMgdG8gdGhlIGluZm8gcmVnYXJkaW5nIHRoZSBzdGFraW5nLgB1ASBOb3RlOiBBbGwgdGhlIHJlYWRzIGFuZCBtdXRhdGlvbnMgdG8gdGhpcyBzdG9yYWdlICpNVVNUKiBiZSBkb25lIHRocm91Z2ggdGhlIG1ldGhvZHMgZXhwb3NlZOggYnkgW2BTdGFraW5nTGVkZ2VyYF0gdG8gZW5zdXJlIGRhdGEgYW5kIGxvY2sgY29uc2lzdGVuY3kuABRQYXllZQABBAUEwQYEAAzkIFdoZXJlIHRoZSByZXdhcmQgcGF5bWVudCBzaG91bGQgYmUgbWFkZS4gS2V5ZWQgYnkgc3Rhc2guANAgVFdPWC1OT1RFOiBTQUZFIHNpbmNlIGBBY2NvdW50SWRgIGlzIGEgc2VjdXJlIGhhc2guAChWYWxpZGF0b3JzAQEEBQTFBggAAAxFASBUaGUgbWFwIGZyb20gKHdhbm5hYmUpIHZhbGlkYXRvciBzdGFzaCBrZXkgdG8gdGhlIHByZWZlcmVuY2VzIG9mIHRoYXQgdmFsaWRhdG9yLgDQIFRXT1gtTk9URTogU0FGRSBzaW5jZSBgQWNjb3VudElkYCBpcyBhIHNlY3VyZSBoYXNoLgBQQ291bnRlckZvclZhbGlkYXRvcnMBADgQAAAAAASsQ291bnRlciBmb3IgdGhlIHJlbGF0ZWQgY291bnRlZCBzdG9yYWdlIG1hcABITWF4VmFsaWRhdG9yc0NvdW50AAA4BAAMMQEgVGhlIG1heGltdW0gdmFsaWRhdG9yIGNvdW50IGJlZm9yZSB3ZSBzdG9wIGFsbG93aW5nIG5ldyB2YWxpZGF0b3JzIHRvIGpvaW4uANAgV2hlbiB0aGlzIHZhbHVlIGlzIG5vdCBzZXQsIG5vIGxpbWl0cyBhcmUgZW5mb3JjZWQuAEBMYXN0VmFsaWRhdG9yRXJhAAEEBQQ4BAAwZQEgVHJhY2tzIHRoZSBsYXN0IGVyYSBpbiB3aGljaCBhbiBhY2NvdW50IHdhcyBhY3RpdmUgYXMgYSB2YWxpZGF0b3IgKGluY2x1ZGVkIGluIHRoZSBlcmEnc1AgZXhwb3N1cmUvc25hcHNob3QpLgBZASBUaGlzIGlzIHVzZWQgdG8gZW5mb3JjZSB0aGF0IGFjY291bnRzIHdobyB3ZXJlIHJlY2VudGx5IHZhbGlkYXRvcnMgbXVzdCB3YWl0IHRoZSBmdWxsYQEgW2BDb25maWc6OkJvbmRpbmdEdXJhdGlvbmBdIGJlZm9yZSB0aGVpciBmdW5kcyBjYW4gYmUgd2l0aGRyYXduLCBldmVuIGlmIHRoZXkgc3dpdGNoIHRvvCBub21pbmF0b3Igcm9sZS4gVGhpcyBwcmV2ZW50cyB2YWxpZGF0b3JzIGZyb206rCAxLiBDb21taXR0aW5nIGEgc2xhc2hhYmxlIG9mZmVuY2UgaW4gZXJhIE58IDIuIFN3aXRjaGluZyB0byBub21pbmF0b3Igcm9sZWUBIDMuIFVzaW5nIHRoZSBzaG9ydGVyIG5vbWluYXRvciB1bmJvbmRpbmcgZHVyYXRpb24gdG8gd2l0aGRyYXcgZnVuZHMgYmVmb3JlIGJlaW5nIHNsYXNoZWQAWQEgVXBkYXRlZCB3aGVuIGVyYSBzbmFwc2hvdHMgYXJlIGNyZWF0ZWQgKGluIGBFcmFzU3Rha2Vyc1BhZ2VkYC9gRXJhc1N0YWtlcnNPdmVydmlld2ApLvggQ2xlYW5lZCB1cCB3aGVuIHRoZSBzdGFzaCBpcyBraWxsZWQgKGZ1bGx5IHdpdGhkcmF3bi9yZWFwZWQpLgAoTm9taW5hdG9ycwABBAUEIQ8EAEx1ASBUaGUgbWFwIGZyb20gbm9taW5hdG9yIHN0YXNoIGtleSB0byB0aGVpciBub21pbmF0aW9uIHByZWZlcmVuY2VzLCBuYW1lbHkgdGhlIHZhbGlkYXRvcnMgdGhhdFggdGhleSB3aXNoIHRvIHN1cHBvcnQuADkBIE5vdGUgdGhhdCB0aGUga2V5cyBvZiB0aGlzIHN0b3JhZ2UgbWFwIG1pZ2h0IGJlY29tZSBub24tZGVjb2RhYmxlIGluIGNhc2UgdGhlLQEgYWNjb3VudCdzIFtgTm9taW5hdGlvbnNRdW90YTo6TWF4Tm9taW5hdGlvbnNgXSBjb25maWd1cmF0aW9uIGlzIGRlY3JlYXNlZC6QIEluIHRoaXMgcmFyZSBjYXNlLCB0aGVzZSBub21pbmF0b3JzZQEgYXJlIHN0aWxsIGV4aXN0ZW50IGluIHN0b3JhZ2UsIHRoZWlyIGtleSBpcyBjb3JyZWN0IGFuZCByZXRyaWV2YWJsZSAoaS5lLiBgY29udGFpbnNfa2V5YHEBIGluZGljYXRlcyB0aGF0IHRoZXkgZXhpc3QpLCBidXQgdGhlaXIgdmFsdWUgY2Fubm90IGJlIGRlY29kZWQuIFRoZXJlZm9yZSwgdGhlIG5vbi1kZWNvZGFibGVtASBub21pbmF0b3JzIHdpbGwgZWZmZWN0aXZlbHkgbm90LWV4aXN0LCB1bnRpbCB0aGV5IHJlLXN1Ym1pdCB0aGVpciBwcmVmZXJlbmNlcyBzdWNoIHRoYXQgaXQBASBpcyB3aXRoaW4gdGhlIGJvdW5kcyBvZiB0aGUgbmV3bHkgc2V0IGBDb25maWc6Ok1heE5vbWluYXRpb25zYC4AYQEgVGhpcyBpbXBsaWVzIHRoYXQgYDo6aXRlcl9rZXlzKCkuY291bnQoKWAgYW5kIGA6Oml0ZXIoKS5jb3VudCgpYCBtaWdodCByZXR1cm4gZGlmZmVyZW50bQEgdmFsdWVzIGZvciB0aGlzIG1hcC4gTW9yZW92ZXIsIHRoZSBtYWluIGA6OmNvdW50KClgIGlzIGFsaWduZWQgd2l0aCB0aGUgZm9ybWVyLCBuYW1lbHkgdGhlbCBudW1iZXIgb2Yga2V5cyB0aGF0IGV4aXN0LgBtASBMYXN0bHksIGlmIGFueSBvZiB0aGUgbm9taW5hdG9ycyBiZWNvbWUgbm9uLWRlY29kYWJsZSwgdGhleSBjYW4gYmUgY2hpbGxlZCBpbW1lZGlhdGVseSB2aWG4IFtgQ2FsbDo6Y2hpbGxfb3RoZXJgXSBkaXNwYXRjaGFibGUgYnkgYW55b25lLgDQIFRXT1gtTk9URTogU0FGRSBzaW5jZSBgQWNjb3VudElkYCBpcyBhIHNlY3VyZSBoYXNoLgBQQ291bnRlckZvck5vbWluYXRvcnMBADgQAAAAAASsQ291bnRlciBmb3IgdGhlIHJlbGF0ZWQgY291bnRlZCBzdG9yYWdlIG1hcAA4VmlydHVhbFN0YWtlcnMAAQQFBBAEABjIIFN0YWtlcnMgd2hvc2UgZnVuZHMgYXJlIG1hbmFnZWQgYnkgb3RoZXIgcGFsbGV0cy4AdQEgVGhpcyBwYWxsZXQgZG9lcyBub3QgYXBwbHkgYW55IGxvY2tzIG9uIHRoZW0sIHRoZXJlZm9yZSB0aGV5IGFyZSBvbmx5IHZpcnR1YWxseSBib25kZWQuIFRoZXltASBhcmUgZXhwZWN0ZWQgdG8gYmUga2V5bGVzcyBhY2NvdW50cyBhbmQgaGVuY2Ugc2hvdWxkIG5vdCBiZSBhbGxvd2VkIHRvIG11dGF0ZSB0aGVpciBsZWRnZXJxASBkaXJlY3RseSB2aWEgdGhpcyBwYWxsZXQuIEluc3RlYWQsIHRoZXNlIGFjY291bnRzIGFyZSBtYW5hZ2VkIGJ5IG90aGVyIHBhbGxldHMgYW5kIGFjY2Vzc2VkKQEgdmlhIGxvdyBsZXZlbCBhcGlzLiBXZSBrZWVwIHRyYWNrIG9mIHRoZW0gdG8gZG8gbWluaW1hbCBpbnRlZ3JpdHkgY2hlY2tzLgBgQ291bnRlckZvclZpcnR1YWxTdGFrZXJzAQA4EAAAAAAErENvdW50ZXIgZm9yIHRoZSByZWxhdGVkIGNvdW50ZWQgc3RvcmFnZSBtYXAASE1heE5vbWluYXRvcnNDb3VudAAAOAQADDEBIFRoZSBtYXhpbXVtIG5vbWluYXRvciBjb3VudCBiZWZvcmUgd2Ugc3RvcCBhbGxvd2luZyBuZXcgdmFsaWRhdG9ycyB0byBqb2luLgDQIFdoZW4gdGhpcyB2YWx1ZSBpcyBub3Qgc2V0LCBubyBsaW1pdHMgYXJlIGVuZm9yY2VkLgAoQ3VycmVudEVyYQAAOAQAEHwgVGhlIGN1cnJlbnQgcGxhbm5lZCBlcmEgaW5kZXguAGUBIFRoaXMgaXMgdGhlIGxhdGVzdCBwbGFubmVkIGVyYSwgZGVwZW5kaW5nIG9uIGhvdyB0aGUgU2Vzc2lvbiBwYWxsZXQgcXVldWVzIHRoZSB2YWxpZGF0b3KAIHNldCwgaXQgbWlnaHQgYmUgYWN0aXZlIG9yIG5vdC4AJEFjdGl2ZUVyYQAAJQ8EABDYIFRoZSBhY3RpdmUgZXJhIGluZm9ybWF0aW9uLCBpdCBob2xkcyBpbmRleCBhbmQgc3RhcnQuAFkBIFRoZSBhY3RpdmUgZXJhIGlzIHRoZSBlcmEgYmVpbmcgY3VycmVudGx5IHJld2FyZGVkLiBWYWxpZGF0b3Igc2V0IG9mIHRoaXMgZXJhIG11c3QgYmWYIGVxdWFsIHRvIHdoYXQgaXMgUkMncyBzZXNzaW9uIHBhbGxldC4AKEJvbmRlZEVyYXMBACkPBAAQJQEgQSBtYXBwaW5nIGZyb20gc3RpbGwtYm9uZGVkIGVyYXMgdG8gdGhlIGZpcnN0IHNlc3Npb24gaW5kZXggb2YgdGhhdCBlcmEuAMggTXVzdCBjb250YWlucyBpbmZvcm1hdGlvbiBmb3IgZXJhcyBmb3IgdGhlIHJhbmdlOrwgYFthY3RpdmVfZXJhIC0gYm91bmRpbmdfZHVyYXRpb247IGFjdGl2ZV9lcmFdYABMRXJhc1N0YWtlcnNPdmVydmlldwABCAUFqQwtDwQAMLggU3VtbWFyeSBvZiB2YWxpZGF0b3IgZXhwb3N1cmUgYXQgYSBnaXZlbiBlcmEuAHEBIFRoaXMgY29udGFpbnMgdGhlIHRvdGFsIHN0YWtlIGluIHN1cHBvcnQgb2YgdGhlIHZhbGlkYXRvciBhbmQgdGhlaXIgb3duIHN0YWtlLiBJbiBhZGRpdGlvbix1ASBpdCBjYW4gYWxzbyBiZSB1c2VkIHRvIGdldCB0aGUgbnVtYmVyIG9mIG5vbWluYXRvcnMgYmFja2luZyB0aGlzIHZhbGlkYXRvciBhbmQgdGhlIG51bWJlciBvZmkBIGV4cG9zdXJlIHBhZ2VzIHRoZXkgYXJlIGRpdmlkZWQgaW50by4gVGhlIHBhZ2UgY291bnQgaXMgdXNlZnVsIHRvIGRldGVybWluZSB0aGUgbnVtYmVyIG9mrCBwYWdlcyBvZiByZXdhcmRzIHRoYXQgbmVlZHMgdG8gYmUgY2xhaW1lZC4AYQEgVGhpcyBpcyBrZXllZCBmaXJzdCBieSB0aGUgZXJhIGluZGV4IHRvIGFsbG93IGJ1bGsgZGVsZXRpb24gYW5kIHRoZW4gdGhlIHN0YXNoIGFjY291bnQuoCBTaG91bGQgb25seSBiZSBhY2Nlc3NlZCB0aHJvdWdoIGBFcmFzYC4AzCBJcyBpdCByZW1vdmVkIGFmdGVyIFtgQ29uZmlnOjpIaXN0b3J5RGVwdGhgXSBlcmFzLkEBIElmIHN0YWtlcnMgaGFzbid0IGJlZW4gc2V0IG9yIGhhcyBiZWVuIHJlbW92ZWQgdGhlbiBlbXB0eSBvdmVydmlldyBpcyByZXR1cm5lZC4AQEVyYXNTdGFrZXJzUGFnZWQAAQwFBQUJDzEPBAAYwCBQYWdpbmF0ZWQgZXhwb3N1cmUgb2YgYSB2YWxpZGF0b3IgYXQgZ2l2ZW4gZXJhLgBxASBUaGlzIGlzIGtleWVkIGZpcnN0IGJ5IHRoZSBlcmEgaW5kZXggdG8gYWxsb3cgYnVsayBkZWxldGlvbiwgdGhlbiBzdGFzaCBhY2NvdW50IGFuZCBmaW5hbGx5yCB0aGUgcGFnZS4gU2hvdWxkIG9ubHkgYmUgYWNjZXNzZWQgdGhyb3VnaCBgRXJhc2AuANQgVGhpcyBpcyBjbGVhcmVkIGFmdGVyIFtgQ29uZmlnOjpIaXN0b3J5RGVwdGhgXSBlcmFzLgA4Q2xhaW1lZFJld2FyZHMBAQgFBakMQQ8EABjcIEhpc3Rvcnkgb2YgY2xhaW1lZCBwYWdlZCByZXdhcmRzIGJ5IGVyYSBhbmQgdmFsaWRhdG9yLgBpASBUaGlzIGlzIGtleWVkIGJ5IGVyYSBhbmQgdmFsaWRhdG9yIHN0YXNoIHdoaWNoIG1hcHMgdG8gdGhlIHNldCBvZiBwYWdlIGluZGV4ZXMgd2hpY2ggaGF2ZTggYmVlbiBjbGFpbWVkLgDMIEl0IGlzIHJlbW92ZWQgYWZ0ZXIgW2BDb25maWc6Okhpc3RvcnlEZXB0aGBdIGVyYXMuAEhFcmFzVmFsaWRhdG9yUHJlZnMBAQgFBakMxQYIAAAUBQEgRXhwb3N1cmUgb2YgdmFsaWRhdG9yIGF0IGVyYSB3aXRoIHRoZSBwcmVmZXJlbmNlcyBvZiB2YWxpZGF0b3JzLgBhASBUaGlzIGlzIGtleWVkIGZpcnN0IGJ5IHRoZSBlcmEgaW5kZXggdG8gYWxsb3cgYnVsayBkZWxldGlvbiBhbmQgdGhlbiB0aGUgc3Rhc2ggYWNjb3VudC4AzCBJcyBpdCByZW1vdmVkIGFmdGVyIFtgQ29uZmlnOjpIaXN0b3J5RGVwdGhgXSBlcmFzLgBMRXJhc1ZhbGlkYXRvclJld2FyZAABBAU4WQEEABQ1ASBUaGUgdG90YWwgc3Rha2VyIHJld2FyZCBidWRnZXQgZm9yIGVhY2ggZXJhIHdpdGhpbiBbYENvbmZpZzo6SGlzdG9yeURlcHRoYF0uAGQgU2V0IGF0IGVyYSBmaW5hbGl6YXRpb246WQEgLSBpbiBub24tbWludGluZyBtb2RlIHRoaXMgaXMgdGhlIHNuYXBzaG90IG9mIHRoZSBlcmEgcG90IGJhbGFuY2UgYmVmb3JlIGFueSBwYXlvdXRzLjEBIC0gaW4gbGVnYWN5IG1vZGUgaXQgY29tZXMgZnJvbSBgRXJhUGF5b3V0YCwgd2l0aCByZXdhcmRzIG1pbnRlZCBvbiB0aGUgZmx5LgBARXJhc1Jld2FyZFBvaW50cwEBBAU4RQ8UAAAAAAAI0CBSZXdhcmRzIGZvciB0aGUgbGFzdCBbYENvbmZpZzo6SGlzdG9yeURlcHRoYF0gZXJhcy4lASBJZiByZXdhcmQgaGFzbid0IGJlZW4gc2V0IG9yIGhhcyBiZWVuIHJlbW92ZWQgdGhlbiAwIHJld2FyZCBpcyByZXR1cm5lZC4AOEVyYXNUb3RhbFN0YWtlAQEEBThZAUAAAAAAAAAAAAAAAAAAAAAACBEBIFRoZSB0b3RhbCBhbW91bnQgc3Rha2VkIGZvciB0aGUgbGFzdCBbYENvbmZpZzo6SGlzdG9yeURlcHRoYF0gZXJhcy4dASBJZiB0b3RhbCBoYXNuJ3QgYmVlbiBzZXQgb3IgaGFzIGJlZW4gcmVtb3ZlZCB0aGVuIDAgc3Rha2UgaXMgcmV0dXJuZWQuACBGb3JjZUVyYQEAlQkEAARUIE1vZGUgb2YgZXJhIGZvcmNpbmcuAEBNYXhTdGFrZWRSZXdhcmRzAADRBgQAEBkBIE1heGltdW0gc3Rha2VkIHJld2FyZHMsIGkuZS4gdGhlIHBlcmNlbnRhZ2Ugb2YgdGhlIGVyYSBpbmZsYXRpb24gdGhhdGwgaXMgdXNlZCBmb3Igc3Rha2UgcmV3YXJkcy4A9CBPbmx5IHVzZWQgaW4gbGVnYWN5IG1pbnRpbmcgbW9kZSAoYERpc2FibGVNaW50aW5nID0gZmFsc2VgKS4ATFNsYXNoUmV3YXJkRnJhY3Rpb24BAKEBEAAAAAAM+CBUaGUgcGVyY2VudGFnZSBvZiB0aGUgc2xhc2ggdGhhdCBpcyBkaXN0cmlidXRlZCB0byByZXBvcnRlcnMuAOQgVGhlIHJlc3Qgb2YgdGhlIHNsYXNoZWQgdmFsdWUgaXMgaGFuZGxlZCBieSB0aGUgYFNsYXNoYC4ATENhbmNlbGVkU2xhc2hQYXlvdXQBAFkBQAAAAAAAAAAAAAAAAAAAAAAIFQEgVGhlIGFtb3VudCBvZiBjdXJyZW5jeSBnaXZlbiB0byByZXBvcnRlcnMgb2YgYSBzbGFzaCBldmVudCB3aGljaCB3YXPsIGNhbmNlbGVkIGJ5IGV4dHJhb3JkaW5hcnkgY2lyY3Vtc3RhbmNlcyAoZS5nLiBnb3Zlcm5hbmNlKS4AME9mZmVuY2VRdWV1ZQABCAUFqQxRDwQAKE0BIFN0b3JlcyByZXBvcnRlZCBvZmZlbmNlcyBpbiBhIHF1ZXVlIHVudGlsIHRoZXkgYXJlIHByb2Nlc3NlZCBpbiBzdWJzZXF1ZW50IGJsb2Nrcy4AZQEgRWFjaCBvZmZlbmNlIGlzIHJlY29yZGVkIHVuZGVyIHRoZSBjb3JyZXNwb25kaW5nIGVyYSBpbmRleCBhbmQgdGhlIG9mZmVuZGluZyB2YWxpZGF0b3Inc3EBIGFjY291bnQuIElmIGFuIG9mZmVuY2Ugc3BhbnMgbXVsdGlwbGUgcGFnZXMsIG9ubHkgb25lIHBhZ2UgaXMgcHJvY2Vzc2VkIGF0IGEgdGltZS4gT2ZmZW5jZXM9ASBhcmUgaGFuZGxlZCBzZXF1ZW50aWFsbHksIHdpdGggdGhlaXIgYXNzb2NpYXRlZCBzbGFzaGVzIGNvbXB1dGVkIGFuZCBzdG9yZWQgaW5RASBgVW5hcHBsaWVkU2xhc2hlc2AuIFRoZXNlIHNsYXNoZXMgYXJlIHRoZW4gYXBwbGllZCBpbiBhIGZ1dHVyZSBlcmEgYXMgZGV0ZXJtaW5lZCBieVggYFNsYXNoRGVmZXJEdXJhdGlvbmAuAFEBIEFueSBvZmZlbmNlcyB0aWVkIHRvIGFuIGVyYSBvbGRlciB0aGFuIGBCb25kaW5nRHVyYXRpb25gIGFyZSBhdXRvbWF0aWNhbGx5IGRyb3BwZWQu0CBQcm9jZXNzaW5nIGFsd2F5cyBwcmlvcml0aXplcyB0aGUgb2xkZXN0IGVyYSBmaXJzdC4AQE9mZmVuY2VRdWV1ZUVyYXMAAFUPBAAwdQEgVHJhY2tzIHRoZSBlcmFzIHRoYXQgY29udGFpbiBvZmZlbmNlcyBpbiBgT2ZmZW5jZVF1ZXVlYCwgc29ydGVkIGZyb20gKiplYXJsaWVzdCB0byBsYXRlc3QqKi4ATQEgLSBUaGlzIGVuc3VyZXMgZWZmaWNpZW50IHJldHJpZXZhbCBvZiB0aGUgb2xkZXN0IG9mZmVuY2Ugd2l0aG91dCBpdGVyYXRpbmcgdGhyb3VnaEAgYE9mZmVuY2VRdWV1ZWAuZQEgLSBXaGVuIGEgbmV3IG9mZmVuY2UgaXMgYWRkZWQgdG8gYE9mZmVuY2VRdWV1ZWAsIGl0cyBlcmEgaXMgKippbnNlcnRlZCBpbiBzb3J0ZWQgb3JkZXIqKmAgaWYgbm90IGFscmVhZHkgcHJlc2VudC5BASAtIFdoZW4gYWxsIG9mZmVuY2VzIGZvciBhbiBlcmEgYXJlIHByb2Nlc3NlZCwgaXQgaXMgKipyZW1vdmVkKiogZnJvbSB0aGlzIGxpc3QuFQEgLSBUaGUgbWF4aW11bSBsZW5ndGggb2YgdGhpcyB2ZWN0b3IgaXMgYm91bmRlZCBieSBgQm9uZGluZ0R1cmF0aW9uICt0ICAgT0ZGRU5DRV9RVUVVRV9FUkFTX0JPVU5EYC4AcQEgVGhpcyBlbGltaW5hdGVzIHRoZSBuZWVkIGZvciBleHBlbnNpdmUgaXRlcmF0aW9uIGFuZCBzb3J0aW5nIHdoZW4gZmV0Y2hpbmcgdGhlIG5leHQgb2ZmZW5jZTAgdG8gcHJvY2Vzcy4ARFByb2Nlc3NpbmdPZmZlbmNlAABZDwQAMB0BIFRyYWNrcyB0aGUgY3VycmVudGx5IHByb2Nlc3NlZCBvZmZlbmNlIHJlY29yZCBmcm9tIHRoZSBgT2ZmZW5jZVF1ZXVlYC4ATQEgLSBXaGVuIHByb2Nlc3Npbmcgb2ZmZW5jZXMsIGFuIG9mZmVuY2UgcmVjb3JkIGlzICoqcG9wcGVkKiogZnJvbSB0aGUgb2xkZXN0IGVyYSBpboggICBgT2ZmZW5jZVF1ZXVlYCBhbmQgc3RvcmVkIGhlcmUudQEgLSBUaGUgZnVuY3Rpb24gYHByb2Nlc3Nfb2ZmZW5jZWAgcmVhZHMgZnJvbSB0aGlzIHN0b3JhZ2UsIHByb2Nlc3Npbmcgb25lIHBhZ2Ugb2YgZXhwb3N1cmUgYXQoICAgYSB0aW1lLmUBIC0gQWZ0ZXIgcHJvY2Vzc2luZyBhIHBhZ2UsIHRoZSBgZXhwb3N1cmVfcGFnZWAgY291bnQgaXMgKipkZWNyZW1lbnRlZCoqIHVudGlsIGl0IHJlYWNoZXMgICAgemVyby4lASAtIE9uY2UgZnVsbHkgcHJvY2Vzc2VkLCB0aGUgb2ZmZW5jZSByZWNvcmQgaXMgcmVtb3ZlZCBmcm9tIHRoaXMgc3RvcmFnZS4AZQEgVGhpcyBlbnN1cmVzIHRoYXQgb2ZmZW5jZXMgYXJlIHByb2Nlc3NlZCBpbmNyZW1lbnRhbGx5LCBwcmV2ZW50aW5nIGV4Y2Vzc2l2ZSBjb21wdXRhdGlvbvwgaW4gYSBzaW5nbGUgYmxvY2sgd2hpbGUgbWFpbnRhaW5pbmcgY29ycmVjdCBzbGFzaGluZyBiZWhhdmlvci4AQFVuYXBwbGllZFNsYXNoZXMAAQgFBV0PYQ8EAATEIEFsbCB1bmFwcGxpZWQgc2xhc2hlcyB0aGF0IGFyZSBxdWV1ZWQgZm9yIGxhdGVyLgBAQ2FuY2VsbGVkU2xhc2hlcwEBBAU4aQ8EABRRASBDYW5jZWxsZWQgc2xhc2hlcyBieSBlcmEgYW5kIHZhbGlkYXRvciB3aXRoIG1heGltdW0gc2xhc2ggZnJhY3Rpb24gdG8gYmUgY2FuY2VsbGVkLgBFASBXaGVuIHNsYXNoZXMgYXJlIGNhbmNlbGxlZCBieSBnb3Zlcm5hbmNlLCB0aGlzIHN0b3JlcyB0aGUgZXJhIGFuZCB0aGUgdmFsaWRhdG9yc1UBIHdob3NlIHNsYXNoZXMgc2hvdWxkIGJlIGNhbmNlbGxlZCwgYWxvbmcgd2l0aCB0aGUgbWF4aW11bSBzbGFzaCBmcmFjdGlvbiB0aGF0IHNob3VsZIQgYmUgY2FuY2VsbGVkIGZvciBlYWNoIHZhbGlkYXRvci4ATFZhbGlkYXRvclNsYXNoSW5FcmEAAQgFBakMbQ8EAAhFASBBbGwgc2xhc2hpbmcgZXZlbnRzIG9uIHZhbGlkYXRvcnMsIG1hcHBlZCBieSBlcmEgdG8gdGhlIGhpZ2hlc3Qgc2xhc2ggcHJvcG9ydGlvbnAgYW5kIHNsYXNoIHZhbHVlIG9mIHRoZSBlcmEuADhDaGlsbFRocmVzaG9sZAAA0QYEAAxRASBUaGUgdGhyZXNob2xkIGZvciB3aGVuIHVzZXJzIGNhbiBzdGFydCBjYWxsaW5nIGBjaGlsbF9vdGhlcmAgZm9yIG90aGVyIHZhbGlkYXRvcnMgL1kBIG5vbWluYXRvcnMuIFRoZSB0aHJlc2hvbGQgaXMgY29tcGFyZWQgdG8gdGhlIGFjdHVhbCBudW1iZXIgb2YgdmFsaWRhdG9ycyAvIG5vbWluYXRvcnMpASAoYENvdW50Rm9yKmApIGluIHRoZSBzeXN0ZW0gY29tcGFyZWQgdG8gdGhlIGNvbmZpZ3VyZWQgbWF4IChgTWF4KkNvdW50YCkuAExWb3RlclNuYXBzaG90U3RhdHVzAQBxDwQCEIAgVm90ZXIgc25hcHNob3QgcHJvZ3Jlc3Mgc3RhdHVzLgBpASBJZiB0aGUgc3RhdHVzIGlzIGBPbmdvaW5nYCwgaXQga2VlcHMgYSBjdXJzb3Igb2YgdGhlIGxhc3Qgdm90ZXIgcmV0cmlldmVkIHRvIHByb2NlZWQgd2hlboQgY3JlYXRpbmcgdGhlIG5leHQgc25hcHNob3QgcGFnZS4AQE5leHRFbGVjdGlvblBhZ2UAADgEABgBASBLZWVwcyB0cmFjayBvZiBhbiBvbmdvaW5nIG11bHRpLXBhZ2UgZWxlY3Rpb24gc29sdXRpb24gcmVxdWVzdC4AZQEgSWYgYFNvbWUoXylgYCwgaXQgaXMgdGhlIG5leHQgcGFnZSB0aGF0IHdlIGludGVuZCB0byBlbGVjdC4gSWYgYE5vbmVgLCB3ZSBhcmUgbm90IGluIHRoZUggZWxlY3Rpb24gcHJvY2Vzcy4AOQEgVGhpcyBpcyBvbmx5IHNldCBpbiBtdWx0aS1ibG9jayBlbGVjdGlvbnMuIFNob3VsZCBhbHdheXMgYmUgYE5vbmVgIG90aGVyd2lzZS4AQEVsZWN0YWJsZVN0YXNoZXMBAHUPBAAEUQEgQSBib3VuZGVkIGxpc3Qgb2YgdGhlICJlbGVjdGFibGUiIHN0YXNoZXMgdGhhdCByZXN1bHRlZCBmcm9tIGEgc3VjY2Vzc2Z1bCBlbGVjdGlvbi4APEVyYVBydW5pbmdTdGF0ZQABBAU4eQ8EAARFASBUcmFja3MgdGhlIGN1cnJlbnQgc3RlcCBvZiBlcmEgcHJ1bmluZyBwcm9jZXNzIGZvciBlYWNoIGVyYSBiZWluZyBsYXppbHkgcHJ1bmVkLgABvQYAAZEJADAwSGlzdG9yeURlcHRoOBBUAAAANIwgTnVtYmVyIG9mIGVyYXMgdG8ga2VlcCBpbiBoaXN0b3J5LgDoIEZvbGxvd2luZyBpbmZvcm1hdGlvbiBpcyBrZXB0IGZvciBlcmFzIGluIGBbY3VycmVudF9lcmEgLSkBIEhpc3RvcnlEZXB0aCwgY3VycmVudF9lcmFdYDogYEVyYXNWYWxpZGF0b3JQcmVmc2AsIGBFcmFzVmFsaWRhdG9yUmV3YXJkYCzgIGBFcmFzUmV3YXJkUG9pbnRzYCwgYEVyYXNUb3RhbFN0YWtlYCwgYENsYWltZWRSZXdhcmRzYCysIGBFcmFzU3Rha2Vyc1BhZ2VkYCwgYEVyYXNTdGFrZXJzT3ZlcnZpZXdgLgDkIE11c3QgYmUgbW9yZSB0aGFuIHRoZSBudW1iZXIgb2YgZXJhcyBkZWxheWVkIGJ5IHNlc3Npb24u+CBJLmUuIGFjdGl2ZSBlcmEgbXVzdCBhbHdheXMgYmUgaW4gaGlzdG9yeS4gSS5lLiBgYWN0aXZlX2VyYSA+xCBjdXJyZW50X2VyYSAtIGhpc3RvcnlfZGVwdGhgIG11c3QgYmUgZ3VhcmFudGVlZC4AEQEgSWYgbWlncmF0aW5nIGFuIGV4aXN0aW5nIHBhbGxldCBmcm9tIHN0b3JhZ2UgdmFsdWUgdG8gY29uZmlnIHZhbHVlLOwgdGhpcyBzaG91bGQgYmUgc2V0IHRvIHNhbWUgdmFsdWUgb3IgZ3JlYXRlciBhcyBpbiBzdG9yYWdlLgA4U2Vzc2lvbnNQZXJFcmE4EAYAAAAELQEgTnVtYmVyIG9mIHNlc3Npb25zIHBlciBlcmEsIGFzIHBlciB0aGUgcHJlZmVyZW5jZXMgb2YgdGhlICoqcmVsYXkgY2hhaW4qKi4ARFBsYW5uaW5nRXJhT2Zmc2V0OBAGAAAAOFEBIE51bWJlciBvZiBzZXNzaW9ucyBiZWZvcmUgdGhlIGVuZCBvZiBhbiBlcmEgd2hlbiB0aGUgZWxlY3Rpb24gZm9yIHRoZSBuZXh0IGVyYSB3aWxsHCBzdGFydC4AXQEgLSBUaGlzIGRldGVybWluZXMgaG93IG1hbnkgc2Vzc2lvbnMgKipiZWZvcmUqKiB0aGUgbGFzdCBzZXNzaW9uIG9mIHRoZSBlcmEgdGhlIHN0YWtpbmeEICAgZWxlY3Rpb24gcHJvY2VzcyBzaG91bGQgYmVnaW4uTQEgLSBUaGUgdmFsdWUgaXMgYm91bmRlZCBiZXR3ZWVuICoqMSoqIChlbGVjdGlvbiBzdGFydHMgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgbGFzdF0BICAgc2Vzc2lvbikgYW5kIGBTZXNzaW9uc1BlckVyYWAgKGVsZWN0aW9uIHN0YXJ0cyBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBmaXJzdCBzZXNzaW9uPCAgIG9mIHRoZSBlcmEpLgA0ICMjIyBFeGFtcGxlOkkBIC0gSWYgYFNlc3Npb25zUGVyRXJhID0gNmAgYW5kIGBQbGFubmluZ0VyYU9mZnNldCA9IDFgLCB0aGUgZWxlY3Rpb24gc3RhcnRzIGF0IHRoZZAgICBiZWdpbm5pbmcgb2Ygc2Vzc2lvbiBgNiAtIDEgPSA1YC5dASAtIElmIGBQbGFubmluZ0VyYU9mZnNldCA9IDZgLCB0aGUgZWxlY3Rpb24gc3RhcnRzIGF0IHRoZSBiZWdpbm5pbmcgb2Ygc2Vzc2lvbiBgNiAtIDYgPeggICAwYCwgbWVhbmluZyBpdCBzdGFydHMgYXQgdGhlIHZlcnkgYmVnaW5uaW5nIG9mIHRoZSBlcmEuADxCb25kaW5nRHVyYXRpb244EBwAAAAU5CBOdW1iZXIgb2YgZXJhcyB0aGF0IHN0YWtlZCBmdW5kcyBtdXN0IHJlbWFpbiBib25kZWQgZm9yLgBNASBUaGlzIGlzIHRoZSBib25kaW5nIGR1cmF0aW9uIGZvciB2YWxpZGF0b3JzLiBOb21pbmF0b3JzIG1heSBoYXZlIGEgc2hvcnRlciBib25kaW5nAQEgZHVyYXRpb24gd2hlbiBbYEFyZU5vbWluYXRvcnNTbGFzaGFibGVgXSBpcyBzZXQgdG8gYGZhbHNlYCAoc2VlzCBbYFN0YWtpbmdJbnRlcmZhY2U6Om5vbWluYXRvcl9ib25kaW5nX2R1cmF0aW9uYF0pLgBsTm9taW5hdG9yRmFzdFVuYm9uZER1cmF0aW9uOBAcAAAAIC0BIE51bWJlciBvZiBlcmFzIG5vbWluYXRvcnMgbXVzdCB3YWl0IHRvIHVuYm9uZCB3aGVuIHRoZXkgYXJlIG5vdCBzbGFzaGFibGUuAEUBIFRoaXMgZHVyYXRpb24gaXMgdXNlZCBmb3Igbm9taW5hdG9ycyB3aGVuIFtgQXJlTm9taW5hdG9yc1NsYXNoYWJsZWBdIGlzIGBmYWxzZWAuXQEgV2hlbiBub21pbmF0b3JzIGFyZSBzbGFzaGFibGUsIHRoZXkgdXNlIHRoZSBmdWxsIFtgQ29uZmlnOjpCb25kaW5nRHVyYXRpb25gXSB0byBlbnN1cmXQIHNsYXNoZXMgY2FuIGJlIGFwcGxpZWQgZHVyaW5nIHRoZSB1bmJvbmRpbmcgcGVyaW9kLgA9ASBTZXR0aW5nIHRoaXMgdG8gYSBsb3dlciB2YWx1ZSAoZS5nLiwgMSBlcmEpIGFsbG93cyBmb3IgZmFzdGVyIHdpdGhkcmF3YWxzIHdoZW60IG5vbWluYXRvcnMgYXJlIG5vdCBzdWJqZWN0IHRvIHNsYXNoaW5nIHJpc2suAEhTbGFzaERlZmVyRHVyYXRpb244EBsAAAAQAQEgTnVtYmVyIG9mIGVyYXMgdGhhdCBzbGFzaGVzIGFyZSBkZWZlcnJlZCBieSwgYWZ0ZXIgY29tcHV0YXRpb24uAA0BIFRoaXMgc2hvdWxkIGJlIGxlc3MgdGhhbiB0aGUgYm9uZGluZyBkdXJhdGlvbi4gU2V0IHRvIDAgaWYgc2xhc2hlcxUBIHNob3VsZCBiZSBhcHBsaWVkIGltbWVkaWF0ZWx5LCB3aXRob3V0IG9wcG9ydHVuaXR5IGZvciBpbnRlcnZlbnRpb24uADhEaXNhYmxlTWludGluZ10BBAEoKQEgV2hlbiBgdHJ1ZWAsIHN0YWtpbmcgZG9lcyBub3QgbWludC4gSXQgZXhwZWN0cyBhbiBleHRlcm5hbCBzb3VyY2UgdG8gZnVuZBkBIHRoZSBnZW5lcmFsIHJld2FyZCBwb3QuIEF0IGVyYSBib3VuZGFyeSwgcmV3YXJkcyBhcmUgc25hcHNob3R0ZWQgZnJvbZAgdGhlIHBvdC4gYEVyYVBheW91dGAgaXMgbm90IGNhbGxlZC4AMQEgV2hlbiBgZmFsc2VgLCBzdGFraW5nIHVzZXMgdGhlIGxlZ2FjeSBwYXRoOiBgRXJhUGF5b3V0YCBjb21wdXRlcyBpbmZsYXRpb24ssCB0b2tlbnMgYXJlIG1pbnRlZCBvbi10aGUtZmx5IGR1cmluZyBwYXlvdXQuACEBICoqSXJyZXZlcnNpYmxlKio6IG9uY2Ugc2V0IHRvIGB0cnVlYCwgbXVzdCBuZXZlciBiZSBzd2l0Y2hlZCBiYWNrLiBFcmFzMQEgY3JlYXRlZCBpbiBub24tbWludGluZyBtb2RlIGhhdmUgZnVuZGVkIHJld2FyZCBwb3RzIOKAlCBzd2l0Y2hpbmcgdG8gbGVnYWN5yCB3b3VsZCBvcnBoYW4gdGhvc2UgcG90cyBhbmQgY2F1c2UgZG91YmxlLW1pbnRpbmcuAExNYXhFeHBvc3VyZVBhZ2VTaXplOBAAAgAALLAgVGhlIG1heGltdW0gc2l6ZSBvZiBlYWNoIGBUOjpFeHBvc3VyZVBhZ2VgLgApASBBbiBgRXhwb3N1cmVQYWdlYCBpcyB3ZWFrbHkgYm91bmRlZCB0byBhIG1heGltdW0gb2YgYE1heEV4cG9zdXJlUGFnZVNpemVgMCBub21pbmF0b3JzLgAhASBGb3Igb2xkZXIgbm9uLXBhZ2VkIGV4cG9zdXJlLCBhIHJld2FyZCBwYXlvdXQgd2FzIHJlc3RyaWN0ZWQgdG8gdGhlIHRvcCEBIGBNYXhFeHBvc3VyZVBhZ2VTaXplYCBub21pbmF0b3JzLiBUaGlzIGlzIHRvIGxpbWl0IHRoZSBpL28gY29zdCBmb3IgdGhlSCBub21pbmF0b3IgcGF5b3V0LgA9ASBOb3RlOiBgTWF4RXhwb3N1cmVQYWdlU2l6ZWAgaXMgdXNlZCB0byBib3VuZCBgQ2xhaW1lZFJld2FyZHNgIGFuZCBpcyB1bnNhZmUgdG+sIHJlZHVjZSB3aXRob3V0IGhhbmRsaW5nIGl0IGluIGEgbWlncmF0aW9uLgA8TWF4VmFsaWRhdG9yU2V0OBDoAwAAEBUBIFRoZSBhYnNvbHV0ZSBtYXhpbXVtIG9mIHdpbm5lciB2YWxpZGF0b3JzIHRoaXMgcGFsbGV0IHNob3VsZCByZXR1cm4uAEEBIEFzIHRoaXMgcGFsbGV0IHN1cHBvcnRzIG11bHRpLWJsb2NrIGVsZWN0aW9uLCB0aGUgc2V0IG9mIHdpbm5lciB2YWxpZGF0b3JzICpwZXKMIGVsZWN0aW9uKiBpcyBib3VuZGVkIGJ5IHRoaXMgdHlwZS4ASE1heFVubG9ja2luZ0NodW5rczgQIAAAACgFASBUaGUgbWF4aW11bSBudW1iZXIgb2YgYHVubG9ja2luZ2AgY2h1bmtzIGEgW2BTdGFraW5nTGVkZ2VyYF0gY2FuCQEgaGF2ZS4gRWZmZWN0aXZlbHkgZGV0ZXJtaW5lcyBob3cgbWFueSB1bmlxdWUgZXJhcyBhIHN0YWtlciBtYXkgYmU4IHVuYm9uZGluZyBpbi4A+CBOb3RlOiBgTWF4VW5sb2NraW5nQ2h1bmtzYCBpcyB1c2VkIGFzIHRoZSB1cHBlciBib3VuZCBmb3IgdGhlAQEgYEJvdW5kZWRWZWNgIGl0ZW0gYFN0YWtpbmdMZWRnZXIudW5sb2NraW5nYC4gU2V0dGluZyB0aGlzIHZhbHVlBQEgbG93ZXIgdGhhbiB0aGUgZXhpc3RpbmcgdmFsdWUgY2FuIGxlYWQgdG8gaW5jb25zaXN0ZW5jaWVzIGluIHRoZQkBIGBTdGFraW5nTGVkZ2VyYCBhbmQgd2lsbCBuZWVkIHRvIGJlIGhhbmRsZWQgcHJvcGVybHkgaW4gYSBydW50aW1lBQEgbWlncmF0aW9uLiBUaGUgdGVzdCBgcmVkdWNpbmdfbWF4X3VubG9ja2luZ19jaHVua3NfYWJydXB0YCBzaG93czQgdGhpcyBlZmZlY3QuADhNYXhFcmFEdXJhdGlvbiggAIq5BwAAAAAouCBNYXhpbXVtIGFsbG93ZWQgZXJhIGR1cmF0aW9uIGluIG1pbGxpc2Vjb25kcy4AUQEgVGhpcyBwcm92aWRlcyBhIGRlZmVuc2l2ZSB1cHBlciBib3VuZCB0byBjYXAgdGhlIGVmZmVjdGl2ZSBlcmEgZHVyYXRpb24sIHByZXZlbnRpbmdhASBleGNlc3NpdmVseSBsb25nIGVyYXMgZnJvbSBjYXVzaW5nIHJ1bmF3YXkgaW5mbGF0aW9uIChlLmcuLCBkdWUgdG8gYnVncykuIElmIHRoZSBhY3R1YWwVASBlcmEgZHVyYXRpb24gZXhjZWVkcyB0aGlzIHZhbHVlLCBpdCB3aWxsIGJlIGNsYW1wZWQgdG8gdGhpcyBtYXhpbXVtLgABASBFeGFtcGxlOiBGb3IgYW4gaWRlYWwgZXJhIGR1cmF0aW9uIG9mIDI0IGhvdXJzICg4Niw0MDAsMDAwIG1zKSywIHRoaXMgY2FuIGJlIHNldCB0byA2MDQsODAwLDAwMCBtcyAoNyBkYXlzKS4A9CBPbmx5IHVzZWQgaW4gbGVnYWN5IG1pbnRpbmcgbW9kZSAoYERpc2FibGVNaW50aW5nID0gZmFsc2VgKS4APE1heFBydW5pbmdJdGVtczgQZAAAABQVASBNYXhpbXVtIG51bWJlciBvZiBzdG9yYWdlIGl0ZW1zIHRoYXQgY2FuIGJlIHBydW5lZCBpbiBhIHNpbmdsZSBjYWxsLgBZASBUaGlzIGNvbnRyb2xzIGhvdyBtYW55IHN0b3JhZ2UgaXRlbXMgY2FuIGJlIGRlbGV0ZWQgaW4gZWFjaCBjYWxsIHRvIGBwcnVuZV9lcmFfc3RlcGAuTQEgVGhpcyBzaG91bGQgYmUgc2V0IHRvIGEgY29uc2VydmF0aXZlIHZhbHVlIChlLmcuLCAxMDAtNTAwIGl0ZW1zKSB0byBlbnN1cmUgcHJ1bmluZ1UBIGRvZXNuJ3QgY29uc3VtZSB0b28gbXVjaCBibG9jayBzcGFjZS4gVGhlIGFjdHVhbCB3ZWlnaHQgaXMgZGV0ZXJtaW5lZCBieSBiZW5jaG1hcmtzLgABfQ8ABDxDdXJyZW5jeUJhbGFuY2VZAQhRASBKdXN0IHRoZSBgQ3VycmVuY3k6OkJhbGFuY2VgIHR5cGU7IHdlIGhhdmUgdGhpcyBpdGVtIHRvIGFsbG93IHVzIHRvIGNvbnN0cmFpbiBpdCB0bzQgYEZyb208dTY0PmAuDF8+SQf3FqyJtjR9Fezs7cpyM4a8T1TMqYl2XoRLnwxoLHBvdF9hY2NvdW50BAxwb3SBDwQEvCBSZXNvbHZlIHRoZSBhY2NvdW50IElEIGZvciBhIGdpdmVuIHJld2FyZCBwb3QuAF8+SQf3FqyJtjR9Fezs7covGyMER8lg8/hD+M+xpwbKLHBvdF9iYWxhbmNlBAxwb3SBD1kBBLAgQ3VycmVudCBiYWxhbmNlIGhlbGQgaW4gYSBnaXZlbiByZXdhcmQgcG90LgBfPkkH9xasibY0fRXs7O3KVuubFKa89l5XnV0Aswk7bFRlcmFfcmV3YXJkX2FsbG9jYXRpb24EDGVyYTiJDwwlASBQZXItZXJhIHJld2FyZCBhbGxvY2F0aW9uIChzdGFrZXIgcmV3YXJkcyArIHZhbGlkYXRvciBpbmNlbnRpdmUgYnVkZ2V0KS4A+CBCb3RoIGZpZWxkcyBhcmUgemVybyBmb3IgZXJhcyBjcmVhdGVkIGluIGxlZ2FjeSBtaW50aW5nIG1vZGUuAFkAAERNZW1iZXJzU3Vic2NyaWJlcgFETWVtYmVyc1N1YnNjcmliZXIUJFJpbmdSb290cwABCAICjQ+RDwQAELggUmVjZW50IHJpbmcgcm9vdHMgcmVjZWl2ZWQgZnJvbSB0aGUgbm90aWZpZXIuBQEgTWFwcyAoaWRlbnRpZmllciwgcmluZ19pbmRleCkgdG8gYSBzbGlkaW5nIHdpbmRvdyBvZiByaW5nIHJvb3RzLikBIFByb29mcyBidWlsdCBhZ2FpbnN0IGFueSByb290IGluIHRoZSB3aW5kb3cgYXJlIGFjY2VwdGVkLiBUaGUgb2xkZXN0IHJvb3TwIGlzIGV2aWN0ZWQgd2hlbiB0aGUgd2luZG93IHJlYWNoZXMgYE1heFJlY2VudFJvb3RzUGVyUmluZ2AuAFBSaW5nQ29sbGVjdGlvblN0YXRlcwEBBAIInQ8oAAAAAAAAAAAAAARBASBTdGF0ZSBvZiBlYWNoIHJpbmcgY29sbGVjdGlvbiBpbmNsdWRpbmcgcmluZ3MgY291bnQgYW5kIG1pc3NpbmcgcmluZ3MgdHJhY2tpbmcuAFxSaW5nQ29sbGVjdGlvbkV4cG9uZW50cwABBAIIDQcEABjkIFJpbmcgZXhwb25lbnQgcmVjb3JkZWQgcGVyIGNvbGxlY3Rpb24gYXQgaW5pdGlhbGl6YXRpb24uAEUBIFRoZSBzdWJzY3JpYmVyIG5lZWRzIHRoZSBleHBvbmVudCB0byBkZXJpdmUgdGhlIGNyeXB0bydzIGBDb25maWdgIHdoZW4gdmVyaWZ5aW5nSQEgcHJvb2ZzLCBzaW5jZSByaW5nIHJvb3RzIG9uIHRoZWlyIG93biBkbyBub3QgY2FycnkgdGhhdCBpbmZvcm1hdGlvbi4gVGhlIGVudHJ5IGlzRQEgd3JpdHRlbiBieSBgaW5pdGlhbGl6ZV9yaW5nX3Jvb3RzYCBhbmQgaXMgcmVhZCBkdXJpbmcgcHJvb2YgdmVyaWZpY2F0aW9uIHZpYSB0aGVkIGBNZW1iZXJzaGlwUHJvdmVyYCBpbXBsLgAwU3Vic2NyaXB0aW9uAQCxDwQABHQgQ3VycmVudCBzdWJzY3JpcHRpb24gc3RhdHVzLgA8UHJvY2Vzc2luZ1N0YXRlAQC1D2AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEHQEgU3RhdGUgZm9yIHRyYWNraW5nIHVwZGF0ZXMgcHJvY2Vzc2luZyB0aW1lc3RhbXBzIGFuZCBzZXF1ZW5jZSBudW1iZXJzLgABCQcAAaEJADBEUmluZ1Jvb3RzTm90aWZpZXK5DxgBAQCxD0UIpCBFbmRwb2ludCBjb25maWd1cmF0aW9uIGZvciB0aGUgbm90aWZpZXIusCBJbmNsdWRlcyB0aGUgWENNIGxvY2F0aW9uIGFuZCBwYWxsZXQgaW5kZXguAChTZWxmUGFyYUlkOBDoAwAABCEBIFRoaXMgY2hhaW4ncyBwYXJhY2hhaW4gSUQsIGluY2x1ZGVkIGluIHJlcGxheSByZXF1ZXN0cyB0byB0aGUgbm90aWZpZXIuAHBNYXhNaXNzaW5nUm9vdHNQZXJDb2xsZWN0aW9uOBD/AAAABNQgTWF4aW11bSBudW1iZXIgb2YgbWlzc2luZyByaW5nIHJvb3RzIHBlciBjb2xsZWN0aW9uLgBwTWF4RGVsZXRlZFJpbmdzUGVyQ29sbGVjdGlvbjgQZAAAAAj8IE1heGltdW0gbnVtYmVyIG9mIGRlbGV0ZWQgcmluZyBpbmRpY2VzIHRyYWNrZWQgcGVyIGNvbGxlY3Rpb24uzCBQcmV2ZW50cyBmYWxzZWx5IG1hcmtpbmcgZGVsZXRlZCByaW5ncyBhcyBtaXNzaW5nLgBkTWF4UmluZ1Jvb3RzUGVyQ29sbGVjdGlvbjgQZAAAAAi0IE1heGltdW0gbnVtYmVyIG9mIHJpbmcgcm9vdHMgcGVyIGNvbGxlY3Rpb24u7CBVc2VkIHRvIGJvdW5kIGBjbGVhcmAgb3BlcmF0aW9ucyBkdXJpbmcgcmUtaW5pdGlhbGl6YXRpb24uADhNYXhDb2xsZWN0aW9uczgQCgAAAATgIE1heGltdW0gbnVtYmVyIG9mIHJpbmcgY29sbGVjdGlvbnMgdGhhdCBjYW4gYmUgdHJhY2tlZC4AVFJlcGxheUNvb2xkb3duU2Vjb25kcyggPAAAAAAAAAAIVQEgQ29vbGRvd24gcGVyaW9kIChpbiBzZWNvbmRzKSBhZnRlciByZWNlaXZpbmcgYSBiYXRjaCBiZWZvcmUgc2VuZGluZyByZXBsYXkgcmVxdWVzdHMu2CBBbGxvd3MgdGltZSBmb3IgbXVsdGktcGFydCBiYXRjaGVzIHRvIGFycml2ZSB2aWEgWENNLgBITWF4VXBkYXRlc1BlckJhdGNoOBAKAAAAFDUBIE1heGltdW0gbnVtYmVyIG9mIHJpbmcgcm9vdCB1cGRhdGVzIHRoYXQgY2FuIGJlIHByb2Nlc3NlZCBpbiBhIHNpbmdsZSBiYXRjaC4AKQEgKipJbXBvcnRhbnQ6KiogVGhpcyB2YWx1ZSBNVVNUIGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0aGUgbm90aWZpZXInc+wgYE1heFVwZGF0ZXNQZXJCYXRjaGAuIElmIHRoZSBub3RpZmllciBzZW5kcyBiYXRjaGVzIGxhcmdlch0BIHRoYW4gdGhpcyBsaW1pdCwgZGVjb2Rpbmcgd2lsbCBmYWlsIHNpbGVudGx5IGFuZCB1cGRhdGVzIHdpbGwgYmUgbG9zdC4AWFJlcGxheVdhcm5pbmdUaHJlc2hvbGQ4EAUAAAAEZQEgTnVtYmVyIG9mIHJlcGxheSByZXF1ZXN0IGF0dGVtcHRzIGZvciBhIGdpdmVuIHJpbmcgaW5kZXggYmVmb3JlIGVtaXR0aW5nIHdhcm5pbmcgZXZlbnRzLgBYUmVwbGF5QWJhbmRvblRocmVzaG9sZDgQCgAAAAgFASBUaHJlc2hvbGQgZm9yIGFiYW5kb25pbmcgcmVwbGF5IGF0dGVtcHRzIGZvciBhIGdpdmVuIHJpbmcgaW5kZXguGQEgQWZ0ZXIgdGhpcyBtYW55IGF0dGVtcHRzLCB0aGUgbWlzc2luZyBpbmRleCBpcyByZW1vdmVkIGZyb20gdHJhY2tpbmcuAFRNYXhSZWNlbnRSb290c1BlclJpbmc4EAMAAAAQJQEgTWF4aW11bSBudW1iZXIgb2YgcmVjZW50IHJpbmcgcm9vdHMgc3RvcmVkIHBlciAoY29sbGVjdGlvbiwgcmluZ19pbmRleCkuLQEgV2hlbiBhIHJpbmcgcm9vdCBpcyB1cGRhdGVkLCB0aGUgbmV3IHJvb3QgaXMgcHVzaGVkIGludG8gYSBzbGlkaW5nIHdpbmRvdzslASBwcm9vZnMgYnVpbHQgYWdhaW5zdCBhbnkgcm9vdCBpbiB0aGUgd2luZG93IHN0aWxsIHZlcmlmeS4gT2xkZXN0IHJvb3QgaXOEIGV2aWN0ZWQgd2hlbiB0aGUgd2luZG93IGlzIGZ1bGwuAFhPZmZjaGFpbldvcmtlckludGVydmFsOBABAAAABMwgQmxvY2sgaW50ZXJ2YWwgYmV0d2VlbiBvZmZjaGFpbiB3b3JrZXIgZXhlY3V0aW9ucy4AAb0PAAAAYQAANEFsaWFzQWNjb3VudHMBNEFsaWFzQWNjb3VudHMMOEFsaWFzVG9BY2NvdW50AAEIAgLBDwQEAAjAIE1hcHMgKGNvbGxlY3Rpb24sIGNvbnRleHR1YWxfYWxpYXMpIHRvIGFjY291bnQuUQEgVXNlcyBgRG91YmxlTWFwYCBiZWNhdXNlIHRoZSBzYW1lIGFsaWFzIHZhbHVlIGNvdWxkIGV4aXN0IGluIGRpZmZlcmVudCBjb2xsZWN0aW9ucy4AOEFjY291bnRUb0FsaWFzAAEEAgQJBAQABCUBIE1hcHMgYWNjb3VudCB0byBmdWxsIGFsaWFzIGluZm8gKGNvbGxlY3Rpb24gKyByZXZpc2VkIGNvbnRleHR1YWwgYWxpYXMpLgAgQWxpYXNGZWUAAFkBBAAQ7CBQR0FTIGZlZSBidXJuZWQgb24gZWFjaCBhbGlhcyByZWdpc3RyYXRpb24gLyBhY2NvdW50IHN3YXAuAA0BIFNldCBieSBbYENvbmZpZzo6RmVlTWFuYWdlck9yaWdpbmBdIHZpYSBbYFBhbGxldDo6c2V0X2FsaWFzX2ZlZWBdLhUBIFdoaWxlIHVuc2V0LCBhbGlhcyByZWdpc3RyYXRpb25zIGZhaWwgd2l0aCBbYEVycm9yOjpBbGlhc0ZlZVVuc2V0YF0uAAEtBwABpQkAGExQcm9vZlZhbGlkaXR5V2luZG93KCAsAQAAAAAAAAzoIFRpbWUgdG9sZXJhbmNlIChpbiBzZWNvbmRzKSBmb3IgcHJvb2YtYmFzZWQgdHJhbnNhY3Rpb25zLkkBIFByb29mcyBhcmUgdmFsaWQgZnJvbSBgcHJvb2ZfdmFsaWRfYXRgIHRvIGBwcm9vZl92YWxpZF9hdCArIFByb29mVmFsaWRpdHlXaW5kb3dgLmwgTXVzdCBiZSBncmVhdGVyIHRoYW4gemVyby4ASENsZWFudXBHcmFjZVBlcmlvZCggEA4AAAAAAAAQKQEgR3JhY2UgcGVyaW9kIChpbiBzZWNvbmRzKSBiZWZvcmUgYSBzdGFsZSBhbGlhcyBtYXBwaW5nIGNhbiBiZSBjbGVhbmVkIHVwLhkBIEFmdGVyIGEgcmluZyByZXZpc2lvbiBjaGFuZ2VzLCBhbGlhcyBob2xkZXJzIGhhdmUgdGhpcyBsb25nIHRvIHVwZGF0ZS0BIHZpYSBgcmVwcm92ZV9hbGlhc19hY2NvdW50YCBiZWZvcmUgYW55b25lIGNhbiBjYWxsIGBjbGVhbl91cF9zdGFsZV9hbGlhc2AubCBNdXN0IGJlIGdyZWF0ZXIgdGhhbiB6ZXJvLgBYUGVvcGxlTGl0ZVJpbmdFeHBvbmVudA0HBAkEfCBSaW5nIGV4cG9uZW50IGZvciBQZW9wbGUgTGl0ZS4ASFBlb3BsZVJpbmdFeHBvbmVudA0HBAkEaCBSaW5nIGV4cG9uZW50IGZvciBQZW9wbGUuAGhQZW9wbGVDb2xsZWN0aW9uSWRlbnRpZmllcgiAcG9wOnBvbGthZG90Lm5ldHdvcmsvcGVvcGxlICAgICAAAHhQZW9wbGVMaXRlQ29sbGVjdGlvbklkZW50aWZpZXIIgHBvcDpwb2xrYWRvdC5uZXR3b3JrL3Blb3BsZS1saXRlAAABxQ8AAABiAAAQUGdhcwEQUGdhcwREQ2xhaW1lZEdhc0FsaWFzZXMAAQgGAskPEAQAEAkBIEFsaWFzZXMgdGhhdCBoYXZlIGJlZW4gdXNlZCB0byBjbGFpbSBQR0FTLCBrZXllZCBieSAoZGF5LCBhbGlhcykuQQEgYERheWAgdXNlcyBiaWctZW5kaWFuIGVuY29kaW5nIHdpdGggYElkZW50aXR5YCBoYXNoaW5nIHNvIGl0ZXJhdGlvbiB5aWVsZHMgZGF5czkBIGluIGFzY2VuZGluZyBvcmRlciwgYWxsb3dpbmcgdGhlIG9mZmNoYWluIHdvcmtlciB0byBmaW5kIHRoZSBvbGRlc3Qgc3RhbGUgZGF5SCB3aXRob3V0IHNjYW5uaW5nLgABNQcAAakJABQsUGdhc0Fzc2V0SWQ4EACUNXcEgCBUaGUgYXNzZXQgSUQgb2YgdGhlIFBHQVMgdG9rZW4uADxQZ2FzQ2xhaW1BbW91bnRZAUAAdDukCwAAAAAAAAAAAAAABJQgVGhlIGFtb3VudCBvZiBQR0FTIG1pbnRlZCBwZXIgY2xhaW0uAGxNYXhDbGFpbXNQZXJQZXJpb2RQZXJQZXJzb244EGQAAAAEKQEgTWF4aW11bSBudW1iZXIgb2YgUEdBUyBjbGFpbXMgYSBmdWxsIHBlcnNvbiBtYXkgcGVyZm9ybSBwZXIgcGVyaW9kIChkYXkpLgB8TWF4Q2xhaW1zUGVyUGVyaW9kUGVyTGl0ZVBlcnNvbjgQKAAAABApASBNYXhpbXVtIG51bWJlciBvZiBQR0FTIGNsYWltcyBhIGxpdGUgcGVyc29uIG1heSBwZXJmb3JtIHBlciBwZXJpb2QgKGRheSkuAGEBIFR5cGljYWxseSBsb3dlciB0aGFuIFtgTWF4Q2xhaW1zUGVyUGVyaW9kUGVyUGVyc29uYF0oU2VsZjo6TWF4Q2xhaW1zUGVyUGVyaW9kUGVyUGVyc29uKS0BIHNpbmNlIGxpdGUgcGVyc29uaG9vZCBvZmZlcnMgd2Vha2VyIHN5YmlsIHJlc2lzdGFuY2UgdGhhbiBmdWxsIHBlcnNvbmhvb2QuAIBNYXhQZ2FzQ2xhaW1SZWNvcmRDbGVhbnVwUGVyQ2FsbDgQFAAAAAQ5ASBNYXhpbXVtIG51bWJlciBvZiBQR0FTIGNsYWltIHJlY29yZHMgdGhhdCBjYW4gYmUgY2xlYW5lZCB1cCBpbiBhIHNpbmdsZSBjYWxsLgABzQ8AAABjAAAYUmV2aXZlARhSZXZpdmU4MFByaXN0aW5lQ29kZQABBAZAGAQADMwgQSBtYXBwaW5nIGZyb20gYSBjb250cmFjdCdzIGNvZGUgaGFzaCB0byBpdHMgY29kZS4hASBUaGUgY29kZSdzIHNpemUgaXMgYm91bmRlZCBieSBbYGNyYXRlOjpsaW1pdHM6OkJMT0JfQllURVNgXSBmb3IgUFZNIGFuZPggW2ByZXZtOjpwcmltaXRpdmVzOjplaXAxNzA6Ok1BWF9DT0RFX1NJWkVgXSBmb3IgRVZNIGJ5dGVjb2RlLgAoQ29kZUluZm9PZgABBAZA0Q8EAATgIEEgbWFwcGluZyBmcm9tIGEgY29udHJhY3QncyBjb2RlIGhhc2ggdG8gaXRzIGNvZGUgaW5mby4ANEFjY291bnRJbmZvT2YAAQQGPQfZDwQABPwgVGhlIGRhdGEgYXNzb2NpYXRlZCB0byBhIGNvbnRyYWN0IG9yIGV4dGVybmFsbHkgb3duZWQgYWNjb3VudC4APE5hdGl2ZURlcG9zaXRPZgEBCAYG5Q9ZAUAAAAAAAAAAAAAAAAAAAAAAKB0BIE5hdGl2ZSBjdXJyZW5jeSBzdG9yYWdlIGRlcG9zaXQgY29udHJpYnV0ZWQgYnkgYSB1c2VyIGludG8gYSBjb250cmFjdC4AMQEgQm91bmRzIGhvdyBtdWNoIG5hdGl2ZSB2YWx1ZSB0aGUgdXNlciBjYW4gcmVjZWl2ZSBiYWNrIGZyb20gdGhhdCBjb250cmFjdCdzRCBzdG9yYWdlIGRlcG9zaXQuAKAgS2V5czogYChob2xkZXIsIGNvbnRyaWJ1dG9yKSAtPiBhbW91bnRgaQEgLSBgaG9sZGVyYDogYWNjb3VudCBvbiB3aGljaCB0aGUgZGVwb3NpdCBpcyBoZWxkIChhIGNvbnRyYWN0LCBvciB0aGUgcGFsbGV0J3Mgb3duIGFjY291bnR0ICAgZm9yIGNvZGUtdXBsb2FkIGRlcG9zaXRzKS51ASAtIGBjb250cmlidXRvcmA6IHVzZXIgdGhhdCBmdW5kZWQgdGhlIGRlcG9zaXQuIFJlY2VpdmVzIHRoZSBuYXRpdmUgcG9ydGlvbiBvbiByZWZ1bmQsIGNhcHBlZHAgICBhdCB0aGlzIGVudHJ5J3MgYGFtb3VudGAuADxJbW11dGFibGVEYXRhT2YAAQQGPQfpDwQABNAgVGhlIGltbXV0YWJsZSBkYXRhIGFzc29jaWF0ZWQgd2l0aCBhIGdpdmVuIGFjY291bnQuADREZWxldGlvblF1ZXVlAAEEBTjtDwQAFLggVGVybWluYXRlZCBjb250cmFjdHMgdGhhdCBhd2FpdCBsYXp5IGNsZWFudXAuAEUBIEVhY2ggZW50cnkgcGFpcnMgYSBjaGlsZCB0cmllIElEIHdpdGggdGhlIGNvbnRyYWN0IGFjY291bnQgc28gdGhhdCBgb25faWRsZWAgY2FuWQEgZHJhaW4gYm90aCB0aGUgY2hpbGQgdHJpZSBhbmQgYW55IFtgTmF0aXZlRGVwb3NpdE9mYF0gZW50cmllcyB0aGF0IG5hbWVkIHRoZSBjb250cmFjdEUBIGFzIGBob2xkZXJgLiBCb3RoIGNhbiBiZSBhcmJpdHJhcmlseSBsYXJnZSwgc28gY2xlYW51cCBydW5zIGxhemlseSBpbiBgb25faWRsZWAuAFBEZWxldGlvblF1ZXVlQ291bnRlcgEA8Q8gAAAAAAAAAAAITQEgQSBwYWlyIG9mIG1vbm90b25pYyBjb3VudGVycyB1c2VkIHRvIHRyYWNrIHRoZSBsYXRlc3QgY29udHJhY3QgbWFya2VkIGZvciBkZWxldGlvbqggYW5kIHRoZSBsYXRlc3QgZGVsZXRlZCBjb250cmFjdCBpbiBxdWV1ZS4APE9yaWdpbmFsQWNjb3VudAABBAY9BwQEABjYIE1hcCBhIEV0aGVyZXVtIGFkZHJlc3MgdG8gaXRzIG9yaWdpbmFsIGBBY2NvdW50SWQzMmAuAEUBIFdoZW4gZGVyaXZpbmcgYSBgSDE2MGAgZnJvbSBhbiBgQWNjb3VudElkMzJgIHdlIHVzZSBhIGhhc2ggZnVuY3Rpb24uIEluIG9yZGVyIHRvMQEgcmVjb25zdHJ1Y3QgdGhlIG9yaWdpbmFsIGFjY291bnQgd2UgbmVlZCB0byBzdG9yZSB0aGUgcmV2ZXJzZSBtYXBwaW5nIGhlcmUuGQEgUmVnaXN0ZXIgeW91ciBgQWNjb3VudElkMzJgIHVzaW5nIFtgUGFsbGV0OjptYXBfYWNjb3VudGBdIGluIG9yZGVyIHRvZCB1c2UgaXQgd2l0aCB0aGlzIHBhbGxldC4ANEV0aGVyZXVtQmxvY2sBAPUPEQ0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACQdASBUaGUgY3VycmVudCBFdGhlcmV1bSBibG9jayB0aGF0IGlzIHN0b3JlZCBpbiB0aGUgYG9uX2ZpbmFsaXplYCBtZXRob2QuABwgIyBOb3RlACkBIFRoaXMgY291bGQgYmUgZnVydGhlciBvcHRpbWl6ZWQgaW50byB0aGUgZnV0dXJlIHRvIHN0b3JlIG9ubHkgdGhlIG1pbmltdW0dASBpbmZvcm1hdGlvbiBuZWVkZWQgdG8gcmVjb25zdHJ1Y3QgdGhlIEV0aGVyZXVtIGJsb2NrIGF0IHRoZSBSUEMgbGV2ZWwuAD0BIFNpbmNlIHRoZSBibG9jayBpcyBjb252ZW5pZW50IHRvIGhhdmUgYXJvdW5kLCBhbmQgdGhlIGV4dHJhIGRldGFpbHMgYXJlIGNhcHBlZD0BIGJ5IGEgZmV3IGhhc2hlcyBhbmQgdGhlIHZlY3RvciBvZiB0cmFuc2FjdGlvbiBoYXNoZXMsIHdlIHN0b3JlIHRoZSBibG9jayBoZXJlLgAkQmxvY2tIYXNoAQEEBjhAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADJQgTWFwcGluZyBmb3IgYmxvY2sgbnVtYmVyIGFuZCBoYXNoZXMuAHEBIFRoZSBtYXhpbXVtIG51bWJlciBvZiBlbGVtZW50cyBzdG9yZWQgaXMgY2FwcGVkIGJ5IHRoZSBibG9jayBoYXNoIGNvdW50IGBCTE9DS19IQVNIX0NPVU5UYC4APFJlY2VpcHRJbmZvRGF0YQEAYRAEABj0IFRoZSBkZXRhaWxzIG5lZWRlZCB0byByZWNvbnN0cnVjdCB0aGUgcmVjZWlwdCBpbmZvIG9mZmNoYWluLgApASBUaGlzIGNvbnRhaW5zIHZhbHVhYmxlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBnYXMgdXNlZCBieSB0aGUgdHJhbnNhY3Rpb24uAB0BIE5PVEU6IFRoZSBpdGVtIGlzIHVuYm91bmQgYW5kIHNob3VsZCB0aGVyZWZvcmUgbmV2ZXIgYmUgcmVhZCBvbiBjaGFpbi7QIEl0IGNvdWxkIG90aGVyd2lzZSBpbmZsYXRlIHRoZSBQb1Ygc2l6ZSBvZiBhIGJsb2NrLgBERXRoQmxvY2tCdWlsZGVySVIBAGkQEQYAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAABCl1OgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD//////////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABJAgSW5jcmVtZW50YWwgZXRoZXJldW0gYmxvY2sgYnVpbGRlci4AaEV0aEJsb2NrQnVpbGRlckZpcnN0VmFsdWVzAQBxEAQAEOQgVGhlIGZpcnN0IHRyYW5zYWN0aW9uIGFuZCByZWNlaXB0IG9mIHRoZSBldGhlcmV1bSBibG9jay4APQEgVGhlc2UgdmFsdWVzIGFyZSBtb3ZlZCBvdXQgb2YgdGhlIGBFdGhCbG9ja0J1aWxkZXJJUmAgdG8gYXZvaWQgc2VyaWFsaXppbmcgYW5kPQEgZGVzZXJpYWxpemluZyB0aGVtIG9uIGV2ZXJ5IHRyYW5zYWN0aW9uLiBJbnN0ZWFkLCB0aGV5IGFyZSBsb2FkZWQgd2hlbiBuZWVkZWQuADxEZWJ1Z1NldHRpbmdzT2YBAHUQEAAAAAAEMQEgRGVidWdnaW5nIHNldHRpbmdzIHRoYXQgY2FuIGJlIGNvbmZpZ3VyZWQgd2hlbiBEZWJ1Z0VuYWJsZWQgY29uZmlnIGlzIHRydWUuAAE5BwABrQkALDhEZXBvc2l0UGVyQnl0ZVkBQKCGAQAAAAAAAAAAAAAAAAAUEQEgVGhlIGFtb3VudCBvZiBiYWxhbmNlIGEgY2FsbGVyIGhhcyB0byBwYXkgZm9yIGVhY2ggYnl0ZSBvZiBzdG9yYWdlLgAcICMgTm90ZQA1ASBJdCBpcyBzYWZlIHRvIGNoYW5nZSB0aGlzIHZhbHVlIG9uIGEgbGl2ZSBjaGFpbiBhcyBhbGwgcmVmdW5kcyBhcmUgcHJvIHJhdGEuADhEZXBvc2l0UGVySXRlbVkBQACUNXcAAAAAAAAAAAAAAAAUBQEgVGhlIGFtb3VudCBvZiBiYWxhbmNlIGEgY2FsbGVyIGhhcyB0byBwYXkgZm9yIGVhY2ggc3RvcmFnZSBpdGVtLgAcICMgTm90ZQA1ASBJdCBpcyBzYWZlIHRvIGNoYW5nZSB0aGlzIHZhbHVlIG9uIGEgbGl2ZSBjaGFpbiBhcyBhbGwgcmVmdW5kcyBhcmUgcHJvIHJhdGEuAFxEZXBvc2l0UGVyQ2hpbGRUcmllSXRlbVkBQAAtMQEAAAAAAAAAAAAAAAAkMQEgVGhlIGFtb3VudCBvZiBiYWxhbmNlIGEgY2FsbGVyIGhhcyB0byBwYXkgZm9yIGVhY2ggY2hpbGQgdHJpZSBzdG9yYWdlIGl0ZW0uADkBIFRob3NlIGFyZSB0aGUgaXRlbXMgY3JlYXRlZCBieSBhIGNvbnRyYWN0LiBJbiBTb2xpZGl0eSBlYWNoIHZhbHVlIGlzIGEgc2luZ2xlOQEgc3RvcmFnZSBpdGVtLiBUaGlzIGlzIHdoeSB3ZSBuZWVkIHRvIHNldCBhIGxvd2VyIHZhbHVlIGhlcmUgdGhhbiBmb3IgdGhlIG1haW7cIHRyaWUgaXRlbXMuIE90aGVyd2lzZSB0aGUgc3RvcmFnZSBkZXBvc2l0IGlzIHRvbyBoaWdoLgAcICMgTm90ZQA1ASBJdCBpcyBzYWZlIHRvIGNoYW5nZSB0aGlzIHZhbHVlIG9uIGEgbGl2ZSBjaGFpbiBhcyBhbGwgcmVmdW5kcyBhcmUgcHJvIHJhdGEuAHBDb2RlSGFzaExvY2t1cERlcG9zaXRQZXJjZW50oQEQAKPhEQxFASBUaGUgcGVyY2VudGFnZSBvZiB0aGUgc3RvcmFnZSBkZXBvc2l0IHRoYXQgc2hvdWxkIGJlIGhlbGQgZm9yIHVzaW5nIGEgY29kZSBoYXNoLlEBIEluc3RhbnRpYXRpbmcgYSBjb250cmFjdCwgcHJvdGVjdHMgdGhlIGNvZGUgZnJvbSBiZWluZyByZW1vdmVkLiBJbiBvcmRlciB0byBwcmV2ZW50JQEgYWJ1c2UgdGhlc2UgYWN0aW9ucyBhcmUgcHJvdGVjdGVkIHdpdGggYSBwZXJjZW50YWdlIG9mIHRoZSBjb2RlIGRlcG9zaXQuAEBBbGxvd0VWTUJ5dGVjb2RlXQEEAQTQIEFsbG93IEVWTSBieXRlY29kZSB0byBiZSB1cGxvYWRlZCBhbmQgaW5zdGFudGlhdGVkLgAcQ2hhaW5JZCggQRsPGQAAAAAQAQEgVGhlIFtFSVAtMTU1XShodHRwczovL2VpcHMuZXRoZXJldW0ub3JnL0VJUFMvZWlwLTE1NSkgY2hhaW4gSUQuAAUBIFRoaXMgaXMgYSB1bmlxdWUgaWRlbnRpZmllciBhc3NpZ25lZCB0byBlYWNoIGJsb2NrY2hhaW4gbmV0d29yayxsIHByZXZlbnRpbmcgcmVwbGF5IGF0dGFja3MuAEBOYXRpdmVUb0V0aFJhdGlvOBAA4fUFBFEBIFRoZSByYXRpbyBiZXR3ZWVuIHRoZSBkZWNpbWFsIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBuYXRpdmUgdG9rZW4gYW5kIHRoZSBFVEggdG9rZW4uAFRNYXhFdGhFeHRyaW5zaWNXZWlnaHQpBUAAALLTWVvwBgAAAAAAAAAAME0BIFRoZSBmcmFjdGlvbiB0aGUgbWF4aW11bSBleHRyaW5zaWMgd2VpZ2h0IGBldGhfdHJhbnNhY3RgIGV4dHJpbnNpY3MgYXJlIGNhcHBlZCB0by4AUQEgVGhpcyBpcyBub3QgYSBzZWN1cml0eSBtZWFzdXJlIGJ1dCBhIHJlcXVpcmVtZW50IGR1ZSB0byBob3cgd2UgbWFwIGdhcyB0byBgKFdlaWdodCxdASBTdG9yYWdlRGVwb3NpdClgLiBUaGUgbWFwcGluZyBtaWdodCBkZXJpdmUgYSBgV2VpZ2h0YCB0aGF0IGlzIHRvbyBsYXJnZSB0byBmaXQgaW50byBhbvwgZXh0cmluc2ljLiBJbiB0aGlzIGNhc2Ugd2UgY2FwIGl0IHRvIHRoZSBsaW1pdCBzcGVjaWZpZWQgaGVyZS4AZQEgYGV0aF90cmFuc2FjdGAgdHJhbnNhY3Rpb25zIHRoYXQgdXNlIG1vcmUgd2VpZ2h0IHRoYW4gc3BlY2lmaWVkIHdpbGwgZmFpbCB3aXRoIGFuIG91dCBvZkkBIGdhcyBlcnJvciBkdXJpbmcgZXhlY3V0aW9uLiBMYXJnZXIgZnJhY3Rpb25zIHdpbGwgYWxsb3cgbW9yZSB0cmFuc2FjdGlvbnMgdG8gcnVuLk0BIFNtYWxsZXIgdmFsdWVzIHdhc3RlIGxlc3MgYmxvY2sgc3BhY2U6IENob29zZSBhcyBzbWFsbCBhcyBwb3NzaWJsZSBhbmQgYXMgbGFyZ2UgYXMsIG5lY2Vzc2FyeS4ARCAgRGVmYXVsdDogYDAuNWAuADBEZWJ1Z0VuYWJsZWRdAQQABC0BIEFsbG93cyBkZWJ1Zy1tb2RlIGNvbmZpZ3VyYXRpb24sIHN1Y2ggYXMgZW5hYmxpbmcgdW5saW1pdGVkIGNvbnRyYWN0IHNpemUuABxBdXRvTWFwXQEEARgxASBXaGVuIGVuYWJsZWQsIGFjY291bnRzIGFyZSBhdXRvbWF0aWNhbGx5IG1hcHBlZCBvbiBjcmVhdGlvbiBhbmQgdW5tYXBwZWQgb25FASBraWxsIHZpYSBbYEF1dG9NYXBwZXJgXS4gVGhpcyByZW1vdmVzIHRoZSBuZWVkIGZvciBleHBsaWNpdCBgbWFwX2FjY291bnRgIGNhbGxzLgA5ASBSZXF1aXJlcyBgZnJhbWVfc3lzdGVtOjpDb25maWc6Ok9uTmV3QWNjb3VudGAgYW5kIGBPbktpbGxlZEFjY291bnRgIHRvIGJlIHNldB0BIHRvIFtgQXV0b01hcHBlcmBdLiBXaGVuIGVuYWJsZWQsIHRoZSBgbWFwX2FjY291bnRgIGFuZCBgdW5tYXBfYWNjb3VudGBwIGRpc3BhdGNoYWJsZXMgYXJlIGRpc2FibGVkLgAgR2FzU2NhbGU4EKCGAQBEHQEgVGhpcyBkZXRlcm1pbmVzIHRoZSByZWxhdGl2ZSBzY2FsZSBvZiBvdXIgZ2FzIHByaWNlIGFuZCBnYXMgZXN0aW1hdGVzLgBVASBCeSBkZWZhdWx0LCB0aGUgZ2FzIHByaWNlIChpbiB3ZWkpIGlzIGBGZWVJbmZvOjpuZXh0X2ZlZV9tdWx0aXBsaWVyKClgIG11bHRpcGxpZWQgYnldASBgTmF0aXZlVG9FdGhSYXRpb2AuIGBHYXNTY2FsZWAgYWxsb3dzIHRvIHNjYWxlIHRoaXMgdmFsdWU6IHRoZSBhY3R1YWwgZ2FzIHByaWNlIGlzIHRoZbAgZGVmYXVsdCBnYXMgcHJpY2UgbXVsdGlwbGllZCBieSBgR2FzU2NhbGVgLgBZASBBcyBhIGNvbnNlcXVlbmNlLCBnYXMgY29zdCAoZ2FzIGVzdGltYXRlcyBhbmQgYWN0dWFsIGdhcyB1c2FnZSBkdXJpbmcgdHJhbnNhY3Rpb24pIGlzUQEgc2NhbGVkIGRvd24gYnkgdGhlIHNhbWUgZmFjdG9yLiBUaHVzLCB0aGUgdG90YWwgdHJhbnNhY3Rpb24gY29zdCBpcyBub3QgYWZmZWN0ZWQgYnltASBgR2FzU2NhbGVgIOKAk8KgYXBhcnQgZnJvbSByb3VuZGluZyBkaWZmZXJlbmNlczogdGhlIHRyYW5zYWN0aW9uIGNvc3QgaXMgYWx3YXlzIGEgbXVsdGlwbGVhASBvZiB0aGUgZ2FzIHByaWNlIGFuZCBpcyBkZXJpdmVkIGJ5IHJvdW5kZWQgdXAsIHNvIHRoYXQgd2l0aCBoaWdoZXIgYEdhc1NjYWxlc2AgdGhpcyBjYW4RASBsZWFkIHRvIGhpZ2hlciBnYXMgY29zdCBhcyB0aGUgcm91bmRpbmcgZGlmZmVyZW5jZSB3b3VsZCBiZSBsYXJnZXIuAGUBIFRoZSBtYWluIHB1cnBvc2Ugb2YgY2hhbmdpbmcgdGhlIGBHYXNTY2FsZWAgaXMgdG8gdHVuZSB0aGUgZ2FzIGNvc3Qgc28gdGhhdCBpdCBpcyBjbG9zZXJJASB0byBzdGFuZGFyZCBFVk0gZ2FzIGNvc3QgYW5kIGNvbnRyYWN0cyB3aWxsIG5vdCBydW4gb3V0IG9mIGdhcyB3aGVuIHRvb2xzIG9yIGNvZGV4IGFzc3VtZSBoYXJkIGNvZGVkIGdhcyBsaW1pdHMuAJggUmVxdWlyZW1lbnQ6IGBHYXNTY2FsZWAgbXVzdCBub3QgYmUgMAABeRAABCxSdW50aW1lQ2FsbCAEbCBUaGUgb3ZlcmFyY2hpbmcgY2FsbCB0eXBlLgBkAABEQXNzZXRzUHJlY29tcGlsZXMBREFzc2V0c1ByZWNvbXBpbGVzDDhOZXh0QXNzZXRJbmRleAEAOBAAAAAACMwgVGhlIG5leHQgYXZhaWxhYmxlIGFzc2V0IGluZGV4IGZvciBmb3JlaWduIGFzc2V0cy4ZASBUaGlzIGlzIGluY3JlbWVudGVkIGVhY2ggdGltZSBhIG5ldyBmb3JlaWduIGFzc2V0IG1hcHBpbmcgaXMgY3JlYXRlZC4AaEFzc2V0SW5kZXhUb0ZvcmVpZ25Bc3NldElkAAEEBjgdAgQABFEBIE1hcHBpbmcgYW4gYXNzZXQgaW5kZXggKGRlcml2ZWQgZnJvbSB0aGUgcHJlY29tcGlsZSBhZGRyZXNzKSB0byBhIGBGb3JlaWduQXNzZXRJZGAuAGhGb3JlaWduQXNzZXRJZFRvQXNzZXRJbmRleAABBAIdAjgEAARdASBNYXBwaW5nIGEgYEZvcmVpZ25Bc3NldElkYCB0byBhbiBhc3NldCBpbmRleCAodXNlZCBmb3IgZGVyaXZpbmcgcHJlY29tcGlsZSBhZGRyZXNzZXMpLgAAAAAABDhGb3JlaWduQXNzZXRJZB0CCCkBIFRoZSBmb3JlaWduIGFzc2V0IElEIHR5cGUuIFRoaXMgbXVzdCBtYXRjaCB0aGUgYEFzc2V0SWRgIHR5cGUgdXNlZCBieSB0aGW0IGBwYWxsZXRfYXNzZXRzYCBpbnN0YW5jZSBmb3IgZm9yZWlnbiBhc3NldHMuAGUAAFxBc3NldHNQcmVjb21waWxlc1Blcm1pdAFcQXNzZXRzUHJlY29tcGlsZXNQZXJtaXQEGE5vbmNlcwEBCAICfRBFB4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABx4IE5vbmNlcyBmb3IgcGVybWl0IHNpZ25hdHVyZXMu2CBNYXBwaW5nOiAodmVyaWZ5aW5nX2NvbnRyYWN0LCBvd25lcl9hZGRyZXNzKSA9PiBub25jZQA1ASBVc2VzIEJsYWtlMl8xMjhDb25jYXQgZm9yIHRoZSBmaXJzdCBrZXkgdG8gcHJldmVudCBzdG9yYWdlIGNvbGxpc2lvbiBhdHRhY2tzIQEgd2hlbiB0aGUgdmVyaWZ5aW5nX2NvbnRyYWN0IGFkZHJlc3MgY291bGQgYmUgaW5mbHVlbmNlZCBieSBhbiBhdHRhY2tlci4AMQEgTm90ZTogRUlQLTI2MTIgc3BlY2lmaWVzIHVpbnQyNTYgbm9uY2UuIFdlIHN0b3JlIGFzIFUyNTYgZm9yIGNvbXBhdGliaWxpdHkuAAAABBxDaGFpbklkKCBBGw8ZAAAAAAS8IFRoZSBjaGFpbiBJRCB1c2VkIGluIEVJUC03MTIgZG9tYWluIHNlcGFyYXRvci4AAYEQAAAAZgAASFZlc3RpbmdQcmVjb21waWxlcwAAAAAAAABnBEkBIE1pbmltYWwgcGFsbGV0IHByb3ZpZGluZyBhIGBQYWxsZXQ8VD5gIHR5cGUgZm9yIHRoZSBGUkFNRSBiZW5jaG1hcmtpbmcgbWFjaGluZXJ5LgAwRG90bnNHYXRld2F5ATBEb3Ruc0dhdGV3YXkUREFsaWFzUmVnaXN0cmF0aW9uAAEEAgiFEAQABPQgVHJhY2tzIHdoaWNoIGFsaWFzZXMgaGF2ZSByZWdpc3RlcmVkIG5hbWVzIHZpYSB0aGlzIGdhdGV3YXkuADBBY2NvdW50QWxpYXMAAQQCBAgEAAwBASBSZXZlcnNlIGxvb2t1cCBmcm9tIGEgcmVnaXN0ZXJpbmcgYWNjb3VudCB0byB0aGUgYWxpYXMgaXQgdXNlZC4AIQEgUG9wdWxhdGVkIGFsb25nc2lkZSBbYEFsaWFzUmVnaXN0cmF0aW9uYF0gaW4gW2BQYWxsZXQ6OnJlZ2lzdGVyX25hbWVgXS4AUEF0dGVzdGF0aW9uQWxsb3dhbmNlAQEEAgQ4EAAAAAAEBQEgTnVtYmVyIG9mIHVzZXJuYW1lIHJlc2VydmF0aW9ucyBhbiBhdHRlc3RlciBpcyBhbGxvd2VkIHRvIGdyYW50LgA4TGl0ZUxhYmVsT3duZXIAAQQCUQcEBAAM/CBSZWNvcmRzIHdoaWNoIGFjY291bnQgb3ducyBlYWNoIHJlc2VydmVkIGxpdGUtcGVyc29uIGxhYmVsLCBzbyEBIFtgUGFsbGV0OjpyZWdpc3Rlcl9uYW1lYF0gY2FuIHZlcmlmeSB0aGF0IGEgYExpbms6OkxpdGVVc2VybmFtZWAgdGFyZ2V0XCBiZWxvbmdzIHRvIHRoZSBjYWxsZXIuAEREaXNwYXRjaGVyQWRkcmVzcwAAPQcEAAw1ASBBZGRyZXNzIG9mIHRoZSBgUm9vdEdhdGV3YXlEaXNwYXRjaGVyYCBjb250cmFjdC4gTXVzdCBiZSBzZXQgKHZpYSBnZW5lc2lzIG9yHQEgW2BQYWxsZXQ6OnNldF9kaXNwYXRjaGVyX2FkZHJlc3NgXSkgYmVmb3JlIFtgUGFsbGV0OjpyZXNlcnZlX25hbWVgXSBvcpwgW2BQYWxsZXQ6OnJlZ2lzdGVyX25hbWVgXSBjYW4gc3VjY2VlZC4AAU0HAAGxCQAMVE1heENvbnRyYWN0Q2FsbFdlaWdodBUBKAcA6HZIFwIAgAAMMQEgTWF4aW11bSB3ZWlnaHQgYnVkZ2V0IGZvciBhIHNpbmdsZSBjb250cmFjdCBjYWxsLiBUaGUgZXh0cmluc2ljIHByZS1jaGFyZ2VzMQEgcGFsbGV0IG92ZXJoZWFkICsgdGhpcyBidWRnZXQgYW5kIHJlZnVuZHMgdW51c2VkIHdlaWdodCBiYXNlZCBvbiB0aGUgYWN0dWFsoCB3ZWlnaHQgcmVwb3J0ZWQgYnkgdGhlIGNvbnRyYWN0IGNhbGxlci4ASE1heFZhbGlkaXR5U2Vjb25kcygggPQDAAAAAAAInCBTaWduYXR1cmUgdmFsaWRpdHkgd2luZG93LCBpbiBzZWNvbmRzLiUBIEEgc2lnbmF0dXJlIGlzIGFjY2VwdGVkIG9ubHkgaWYgYG5vdyA8PSBzaWduZWRfYXQgKyBNYXhWYWxpZGl0eVNlY29uZHNgLgBQTWF4RnV0dXJlU2tld1NlY29uZHMoIB4AAAAAAAAACMggQ2xvY2stc2tldyB0b2xlcmFuY2UgZm9yIGBzaWduZWRfYXRgLCBpbiBzZWNvbmRzLi0BIEEgc2lnbmF0dXJlIGlzIGFjY2VwdGVkIG9ubHkgaWYgYHNpZ25lZF9hdCA8PSBub3cgKyBNYXhGdXR1cmVTa2V3U2Vjb25kc2AuAAGNEAAEUEF0dGVzdGF0aW9uU2lnbmF0dXJlvQQEDQEgU2lnbmF0dXJlIHR5cGUgdXNlZCBieSBjYW5kaWRhdGVzIHRvIGNvbnNlbnQgdG8gbmFtZSByZXNlcnZhdGlvbnMuAJgAAERPcmlnaW5SZXN0cmljdGlvbgFET3JpZ2luUmVzdHJpY3Rpb24EGFVzYWdlcwABBAJlB5UQBAAEjCBUaGUgY3VycmVudCB1c2FnZSBmb3IgZWFjaCBlbnRpdHkuAAFhBwABtQkAAAGZEAAEQFJlc3RyaWN0ZWRFbnRpdHllByRRASBUaGUgdHlwZSB0aGF0IHJlcHJlc2VudCB0aGUgZW50aXRpZXMgdHJhY2tlZCwgaXRzIGFsbG93YW5jZSBhbmQgdGhlIGNvbnZlcnNpb24gZnJvbawgb3JpZ2luIGlzIGJvdW5kZWQgaW4gW2BSZXN0cmljdGVkRW50aXR5YF0uAB0BIFRoaXMgaXMgdGhlIGNhbm9uaWNhbCBvcmlnaW4gZnJvbSB0aGUgcG9pbnQgb2YgdmlldyBvZiB1c2FnZSB0cmFja2luZy6MIEVhY2ggZW50aXR5IGlzIHRyYWNrZWQgc2VwYXJhdGVseS4ASQEgVGhpcyBpcyBkaWZmZXJlbnQgZnJvbSBvcmlnaW4gYXMgYSBtdWx0aXBsZSBvcmlnaW4gY2FuIHJlcHJlc2VudCBhIHNpbmdsZSBlbnRpdHkuYQEgRm9yIGV4YW1wbGUsIGltYWdpbmUgYSBEQU8gb3JpZ2luIHdpdGggYSBwZXJjZW50YWdlIG9mIHZvdGVycywgd2Ugd2FudCB0byB0cmFjayB0aGUgREFPrCBlbnRpdHkgcmVnYXJkbGVzcyBvZiB0aGUgdm90ZXIgcGVyY2VudGFnZS4AmQAAEFN1ZG8BEFN1ZG8EDEtleQAABAQABIQgVGhlIGBBY2NvdW50SWRgIG9mIHRoZSBzdWRvIGtleS4AAWkHAAG5CQAAAZ0QAAQsUnVudGltZUNhbGwgBEggQSBzdWRvLWFibGUgY2FsbC4A+wAANFBnYXNBbGxvd2FuY2UAAAG9CQAAAAAA/AAAFEFoT3BzARRBaE9wcww4UmNMZWFzZVJlc2VydmUAAQwFBQWhEFkBBAA4BQEgQW1vdW50IG9mIGJhbGFuY2UgdGhhdCB3YXMgcmVzZXJ2ZWQgZm9yIHdpbm5pbmcgYSBsZWFzZSBhdWN0aW9uLgBlASBgdW5yZXNlcnZlX2xlYXNlX2RlcG9zaXRgIGNhbiBiZSBwZXJtaXNzaW9ubGVzc2x5IGNhbGxlZCBvbmNlIHRoZSBibG9jayBudW1iZXIgcGFzc2VkIHRvVQEgdW5yZXNlcnZlIHRoZSBkZXBvc2l0LiBJdCBpcyBpbXBsaWNpdGx5IGNhbGxlZCBieSBgd2l0aGRyYXdfY3Jvd2Rsb2FuX2NvbnRyaWJ1dGlvbmAuCCAgaQEgVGhlIGFjY291bnQgaGVyZSBjYW4gZWl0aGVyIGJlIGEgY3Jvd2Rsb2FuIGFjY291bnQgb3IgYSBzb2xvIGJpZGRlci4gSWYgaXQgaXMgYSBjcm93ZGxvYW5pASBhY2NvdW50LCB0aGVuIHRoZSBzdW1tZWQgdXAgY29udHJpYnV0aW9ucyBmb3IgaXQgaW4gdGhlIGNvbnRyaWJ1dGlvbnMgbWFwIHdpbGwgZXF1YXRlIHRoZVwgcmVzZXJ2ZWQgYmFsYW5jZSBoZXJlLgBkIFRoZSBrZXlzIGFyZSBhcyBmb2xsb3dzOuggLSBCbG9jayBudW1iZXIgYWZ0ZXIgd2hpY2ggdGhlIGRlcG9zaXQgY2FuIGJlIHVucmVzZXJ2ZWQuhCAtIFRoZSBwYXJhX2lkIG9mIHRoZSBsZWFzZSBzbG90LtQgLSBUaGUgYWNjb3VudCB0aGF0IHdpbGwgaGF2ZSB0aGUgYmFsYW5jZSB1bnJlc2VydmVkLoAgLSBUaGUgYmFsYW5jZSB0byBiZSB1bnJlc2VydmVkLgBcUmNDcm93ZGxvYW5Db250cmlidXRpb24AAQwFBQWhEMkFBAAw/CBBbW91bnQgb2YgYmFsYW5jZSB0aGF0IGEgY29udHJpYnV0b3IgbWFkZSB0b3dhcmRzIGEgY3Jvd2Rsb2FuLgBdASBgd2l0aGRyYXdfY3Jvd2Rsb2FuX2NvbnRyaWJ1dGlvbmAgY2FuIGJlIHBlcm1pc3Npb25sZXNzbHkgY2FsbGVkIG9uY2UgdGhlIGJsb2NrIG51bWJlctQgcGFzc2VkIHRvIHVubG9jayB0aGUgYmFsYW5jZSBmb3IgYSBzcGVjaWZpYyBhY2NvdW50LgBkIFRoZSBrZXlzIGFyZSBhcyBmb2xsb3dzOuAgLSBCbG9jayBudW1iZXIgYWZ0ZXIgd2hpY2ggdGhlIGJhbGFuY2UgY2FuIGJlIHVubG9ja2VkLoAgLSBUaGUgcGFyYV9pZCBvZiB0aGUgY3Jvd2Rsb2FuLqggLSBUaGUgYWNjb3VudCB0aGF0IG1hZGUgdGhlIGNvbnRyaWJ1dGlvbi4AQQEgVGhlIHZhbHVlIGlzIChmdW5kX3BvdCwgYmFsYW5jZSkuIFRoZSBjb250cmlidXRpb24gcG90IGlzIHRoZSBzZWNvbmQga2V5IGluIHRoZYwgYFJjQ3Jvd2Rsb2FuQ29udHJpYnV0aW9uYCBzdG9yYWdlLgBIUmNDcm93ZGxvYW5SZXNlcnZlAAEMBQUFoRBZAQQAJMggVGhlIHJlc2VydmUgdGhhdCB3YXMgdGFrZW4gdG8gY3JlYXRlIGEgY3Jvd2Rsb2FuLgARASBUaGlzIGlzIG5vcm1hbGx5IDUwMCBET1QgYW5kIGNhbiBiZSByZWZ1bmRlZCBhcyBsYXN0IHN0ZXAgYWZ0ZXIgYWxs9CBgUmNDcm93ZGxvYW5Db250cmlidXRpb25gcyBvZiB0aGlzIGxvYW4gaGF2ZSBiZWVuIHdpdGhkcmF3bi4AGCBLZXlzOsggLSBCbG9jayBudW1iZXIgYWZ0ZXIgd2hpY2ggdGhpcyBjYW4gYmUgdW5yZXNlcnZlZHwgLSBUaGUgcGFyYV9pZCBvZiB0aGUgY3Jvd2Rsb2Fu0CAtIFRoZSBhY2NvdW50IHRoYXQgd2lsbCBoYXZlIHRoZSBiYWxhbmNlIHVucmVzZXJ2ZWQAAW0HAAHBCQAAAaUQAAQcQXNzZXRJZB0CBKggQXNzZXQgSUQgdHlwZSBvZiB0aGUgYEZ1bmdpYmxlc2AgYWRhcHRlci4A/gAACAQFACC9BAQASAAECAwQFBgcICQoLDA0ODxAREhYQXV0aG9yaXplVmFsdWVUcmFuc2ZlcnUHEDRBdXRob3JpemVDYWxsfQcQGEFzUGdhc4EHECxBc1JpbmdBbGlhc40HEDhBc0RvdG5zR2F0ZXdheZkHEDxSZXN0cmljdE9yaWdpbnOlBxBIQ2hlY2tOb25aZXJvU2VuZGVyqQcQQENoZWNrU3BlY1ZlcnNpb26tBzg4Q2hlY2tUeFZlcnNpb26xBzgwQ2hlY2tHZW5lc2lztQdAOENoZWNrTW9ydGFsaXR5uQdAKENoZWNrTm9uY2XBBxAsQ2hlY2tXZWlnaHTFBxBQQ2hhcmdlQXNzZXRUeFBheW1lbnTJBxBIUHJldmFsaWRhdGVBdHRlc3RzzQcQRENoZWNrTWV0YWRhdGFIYXNo0QdBBzBFdGhTZXRPcmlnaW7ZBxBQU3RvcmFnZVdlaWdodFJlY2xhaW0QEGwcQXVyYUFwaQg0c2xvdF9kdXJhdGlvbgCpEAyQIFJldHVybnMgdGhlIHNsb3QgZHVyYXRpb24gZm9yIEF1cmEuACUBIEN1cnJlbnRseSwgb25seSB0aGUgdmFsdWUgcHJvdmlkZWQgYnkgdGhpcyB0eXBlIGF0IGdlbmVzaXMgd2lsbCBiZSB1c2VkLgAsYXV0aG9yaXRpZXMAmQsEnCBSZXR1cm4gdGhlIGN1cnJlbnQgc2V0IG9mIGF1dGhvcml0aWVzLgAEuCBBUEkgbmVjZXNzYXJ5IGZvciBibG9jayBhdXRob3JzaGlwIHdpdGggYXVyYS4EAFBSZWxheVBhcmVudE9mZnNldEFwaQRMcmVsYXlfcGFyZW50X29mZnNldAA4BPQgRmV0Y2ggdGhlIHNsb3Qgb2Zmc2V0IHRoYXQgaXMgZXhwZWN0ZWQgZnJvbSB0aGUgcmVsYXkgY2hhaW4uABAFASBBUEkgdG8gdGVsbCB0aGUgbm9kZSBzaWRlIGhvdyB0aGUgcmVsYXkgcGFyZW50IHNob3VsZCBiZSBjaG9zZW4uAGkBIEEgbGFyZ2VyIG9mZnNldCBpbmRpY2F0ZXMgdGhhdCB0aGUgcmVsYXkgcGFyZW50IHNob3VsZCBub3QgYmUgdGhlIHRpcCBvZiB0aGUgcmVsYXkgY2hhaW4sMQEgYnV0IGBOYCBibG9ja3MgYmVoaW5kIHRoZSB0aXAuIFRoaXMgb2Zmc2V0IGlzIHRoZW4gZW5mb3JjZWQgYnkgdGhlIHJ1bnRpbWUuBABgQXVyYVVuaW5jbHVkZWRTZWdtZW50QXBpBDhjYW5fYnVpbGRfdXBvbgg0aW5jbHVkZWRfaGFzaEAQc2xvdJ0LXQEoOQEgV2hldGhlciBpdCBpcyBsZWdhbCB0byBleHRlbmQgdGhlIGNoYWluLCBhc3N1bWluZyB0aGUgZ2l2ZW4gYmxvY2sgaXMgdGhlIG1vc3Q1ASByZWNlbnRseSBpbmNsdWRlZCBvbmUgYXMtb2YgdGhlIHJlbGF5IHBhcmVudCB0aGF0IHdpbGwgYmUgYnVpbHQgYWdhaW5zdCwgYW5kcCB0aGUgZ2l2ZW4gcmVsYXkgY2hhaW4gc2xvdC4AUQEgVGhpcyBzaG91bGQgYmUgY29uc2lzdGVudCB3aXRoIHRoZSBsb2dpYyB0aGUgcnVudGltZSB1c2VzIHdoZW4gdmFsaWRhdGluZyBibG9ja3MgdG84IGF2b2lkIGlzc3Vlcy4AYQEgV2hlbiB0aGUgdW5pbmNsdWRlZCBzZWdtZW50IGlzIGVtcHR5LCBpLmUuIGBpbmNsdWRlZF9oYXNoID09IGF0YCwgd2hlcmUgYXQgaXMgdGhlIGJsb2NrYQEgd2hvc2Ugc3RhdGUgd2UgYXJlIHF1ZXJ5aW5nIGFnYWluc3QsIHRoaXMgbXVzdCBhbHdheXMgcmV0dXJuIGB0cnVlYCBhcyBsb25nIGFzIHRoZSBzbG90vCBpcyBtb3JlIHJlY2VudCB0aGFuIHRoZSBpbmNsdWRlZCBibG9jayBpdHNlbGYuADQ1ASBUaGlzIHJ1bnRpbWUgQVBJIGlzIHVzZWQgdG8gaW5mb3JtIHBvdGVudGlhbCBibG9jayBhdXRob3JzIHdoZXRoZXIgdGhleSB3aWxsJQEgaGF2ZSB0aGUgcmlnaHQgdG8gYXV0aG9yIGF0IGEgc2xvdCwgYXNzdW1pbmcgdGhleSBoYXZlIGNsYWltZWQgdGhlIHNsb3QuAHUBIEluIHBhcnRpY3VsYXIsIHRoaXMgQVBJIGFsbG93cyBBdXJhLWJhc2VkIHBhcmFjaGFpbnMgdG8gcmVndWxhdGUgdGhlaXIgInVuaW5jbHVkZWQgc2VnbWVudCIsbQEgd2hpY2ggaXMgdGhlIHNlY3Rpb24gb2YgdGhlIGhlYWQgb2YgdGhlIGNoYWluIHdoaWNoIGhhcyBub3QgeWV0IGJlZW4gbWFkZSBhdmFpbGFibGUgaW4gdGhlNCByZWxheSBjaGFpbi4AYQEgV2hlbiB0aGUgdW5pbmNsdWRlZCBzZWdtZW50IGlzIHNob3J0LCBBdXJhIGNoYWlucyB3aWxsIGFsbG93IGF1dGhvcnMgdG8gY3JlYXRlIG11bHRpcGxlXQEgYmxvY2tzIHBlciBzbG90IGluIG9yZGVyIHRvIGJ1aWxkIGEgYmFja2xvZy4gV2hlbiBpdCBpcyBzYXR1cmF0ZWQsIHRoaXMgQVBJIHdpbGwgbGltaXSoIHRoZSBhbW91bnQgb2YgYmxvY2tzIHRoYXQgY2FuIGJlIGNyZWF0ZWQuACQgQ2hhbmdlczqRASAtIFZlcnNpb24gMjogVXBkYXRlIHRvIGBjYW5fYnVpbGRfdXBvbmAgdG8gdGFrZSBhIHJlbGF5IGNoYWluIGBTbG90YCBpbnN0ZWFkIG9mIGEgcGFyYWNoYWluIGBTbG90YC4IABBDb3JlDBx2ZXJzaW9uAPUJBJAgUmV0dXJucyB0aGUgdmVyc2lvbiBvZiB0aGUgcnVudGltZS4ANGV4ZWN1dGVfYmxvY2sEFGJsb2NrrRAQBGQgRXhlY3V0ZSB0aGUgZ2l2ZW4gYmxvY2suAEBpbml0aWFsaXplX2Jsb2NrBBhoZWFkZXJguRAEQQEgSW5pdGlhbGl6ZSBhIGJsb2NrIHdpdGggdGhlIGdpdmVuIGhlYWRlciBhbmQgcmV0dXJuIHRoZSBydW50aW1lIGV4ZWN1dGl2ZSBtb2RlLgAEIQEgVGhlIGBDb3JlYCBydW50aW1lIGFwaSB0aGF0IGV2ZXJ5IFN1YnN0cmF0ZSBydW50aW1lIG5lZWRzIHRvIGltcGxlbWVudC4UACBNZXRhZGF0YQwgbWV0YWRhdGEAvRAEjCBSZXR1cm5zIHRoZSBtZXRhZGF0YSBvZiBhIHJ1bnRpbWUuAExtZXRhZGF0YV9hdF92ZXJzaW9uBBx2ZXJzaW9uOMEQEKQgUmV0dXJucyB0aGUgbWV0YWRhdGEgYXQgYSBnaXZlbiB2ZXJzaW9uLgAFASBJZiB0aGUgZ2l2ZW4gYHZlcnNpb25gIGlzbid0IHN1cHBvcnRlZCwgdGhpcyB3aWxsIHJldHVybiBgTm9uZWAudQEgVXNlIFtgU2VsZjo6bWV0YWRhdGFfdmVyc2lvbnNgXSB0byBmaW5kIG91dCBhYm91dCBzdXBwb3J0ZWQgbWV0YWRhdGEgdmVyc2lvbiBvZiB0aGUgcnVudGltZS4ARG1ldGFkYXRhX3ZlcnNpb25zAF0EDKQgUmV0dXJucyB0aGUgc3VwcG9ydGVkIG1ldGFkYXRhIHZlcnNpb25zLgDAIFRoaXMgY2FuIGJlIHVzZWQgdG8gY2FsbCBgbWV0YWRhdGFfYXRfdmVyc2lvbmAuAAQBASBUaGUgYE1ldGFkYXRhYCBhcGkgdHJhaXQgdGhhdCByZXR1cm5zIG1ldGFkYXRhIGZvciB0aGUgcnVudGltZS4IADBCbG9ja0J1aWxkZXIQPGFwcGx5X2V4dHJpbnNpYwQkZXh0cmluc2ljDQrFEBBsIEFwcGx5IHRoZSBnaXZlbiBleHRyaW5zaWMuADkBIFJldHVybnMgYW4gaW5jbHVzaW9uIG91dGNvbWUgd2hpY2ggc3BlY2lmaWVzIGlmIHRoaXMgZXh0cmluc2ljIGlzIGluY2x1ZGVkIGluTCB0aGlzIGJsb2NrIG9yIG5vdC4AOGZpbmFsaXplX2Jsb2NrAGAEaCBGaW5pc2ggdGhlIGN1cnJlbnQgYmxvY2suAExpbmhlcmVudF9leHRyaW5zaWNzBCBpbmhlcmVudNUQIQoEPQEgR2VuZXJhdGUgaW5oZXJlbnQgZXh0cmluc2ljcy4gVGhlIGluaGVyZW50IGRhdGEgd2lsbCB2YXJ5IGZyb20gY2hhaW4gdG8gY2hhaW4uADxjaGVja19pbmhlcmVudHMIFGJsb2NrrRAQZGF0YdUQ5RAEVQEgQ2hlY2sgdGhhdCB0aGUgaW5oZXJlbnRzIGFyZSB2YWxpZC4gVGhlIGluaGVyZW50IGRhdGEgd2lsbCB2YXJ5IGZyb20gY2hhaW4gdG8gY2hhaW4uAARxASBUaGUgYEJsb2NrQnVpbGRlcmAgYXBpIHRyYWl0IHRoYXQgcHJvdmlkZXMgdGhlIHJlcXVpcmVkIGZ1bmN0aW9uYWxpdHkgZm9yIGJ1aWxkaW5nIGEgYmxvY2suGABYVGFnZ2VkVHJhbnNhY3Rpb25RdWV1ZQRQdmFsaWRhdGVfdHJhbnNhY3Rpb24MGHNvdXJjZekQCHR4DQooYmxvY2tfaGFzaEDtECRoIFZhbGlkYXRlIHRoZSB0cmFuc2FjdGlvbi4AZQEgVGhpcyBtZXRob2QgaXMgaW52b2tlZCBieSB0aGUgdHJhbnNhY3Rpb24gcG9vbCB0byBsZWFybiBkZXRhaWxzIGFib3V0IGdpdmVuIHRyYW5zYWN0aW9uLkUBIFRoZSBpbXBsZW1lbnRhdGlvbiBzaG91bGQgbWFrZSBzdXJlIHRvIHZlcmlmeSB0aGUgY29ycmVjdG5lc3Mgb2YgdGhlIHRyYW5zYWN0aW9uTQEgYWdhaW5zdCBjdXJyZW50IHN0YXRlLiBUaGUgZ2l2ZW4gYGJsb2NrX2hhc2hgIGNvcnJlc3BvbmRzIHRvIHRoZSBoYXNoIG9mIHRoZSBibG9ja3wgdGhhdCBpcyB1c2VkIGFzIGN1cnJlbnQgc3RhdGUuAEUBIE5vdGUgdGhhdCB0aGlzIGNhbGwgbWF5IGJlIHBlcmZvcm1lZCBieSB0aGUgcG9vbCBtdWx0aXBsZSB0aW1lcyBhbmQgdHJhbnNhY3Rpb25zpCBtaWdodCBiZSB2ZXJpZmllZCBpbiBhbnkgcG9zc2libGUgb3JkZXIuAARNASBUaGUgYFRhZ2dlZFRyYW5zYWN0aW9uUXVldWVgIGFwaSB0cmFpdCBmb3IgaW50ZXJmZXJpbmcgd2l0aCB0aGUgdHJhbnNhY3Rpb24gcXVldWUuDABET2ZmY2hhaW5Xb3JrZXJBcGkEPG9mZmNoYWluX3dvcmtlcgQYaGVhZGVyYBAEyCBTdGFydHMgdGhlIG9mZi1jaGFpbiB0YXNrIGZvciBnaXZlbiBibG9jayBoZWFkZXIuAARkIFRoZSBvZmZjaGFpbiB3b3JrZXIgYXBpLggALFNlc3Npb25LZXlzCFRnZW5lcmF0ZV9zZXNzaW9uX2tleXMIFG93bmVyGBBzZWVkTQH1EBwVASBHZW5lcmF0ZSBhIHNldCBvZiBzZXNzaW9uIGtleXMgd2l0aCBvcHRpb25hbGx5IHVzaW5nIHRoZSBnaXZlbiBzZWVkLgkBIFRoZSBrZXlzIHNob3VsZCBiZSBzdG9yZWQgd2l0aGluIHRoZSBrZXlzdG9yZSBleHBvc2VkIHZpYSBydW50aW1lPCBleHRlcm5hbGl0aWVzLgCwIFRoZSBzZWVkIG5lZWRzIHRvIGJlIGEgdmFsaWQgYHV0ZjhgIHN0cmluZy4A0CBSZXR1cm5zIHRoZSBjb25jYXRlbmF0ZWQgU0NBTEUgZW5jb2RlZCBwdWJsaWMga2V5cy4ATGRlY29kZV9zZXNzaW9uX2tleXMEHGVuY29kZWQY+RAMmCBEZWNvZGUgdGhlIGdpdmVuIHB1YmxpYyBzZXNzaW9uIGtleXMuANwgUmV0dXJucyB0aGUgbGlzdCBvZiBwdWJsaWMgcmF3IHB1YmxpYyBrZXlzICsga2V5IHR5cGUuAARoIFNlc3Npb24ga2V5cyBydW50aW1lIGFwaS4IAExSdW50aW1lVmlld0Z1bmN0aW9uBFRleGVjdXRlX3ZpZXdfZnVuY3Rpb24IIHF1ZXJ5X2lkBREUaW5wdXQYCREEfCBFeGVjdXRlIGEgdmlldyBmdW5jdGlvbiBxdWVyeS4ABKQgUnVudGltZSBBUEkgZm9yIGV4ZWN1dGluZyB2aWV3IGZ1bmN0aW9ucwQAPEFjY291bnROb25jZUFwaQQ0YWNjb3VudF9ub25jZQQcYWNjb3VudAQ4BMAgR2V0IGN1cnJlbnQgYWNjb3VudCBub25jZSBvZiBnaXZlbiBgQWNjb3VudElkYC4ABIAgVGhlIEFQSSB0byBxdWVyeSBhY2NvdW50IG5vbmNlLgQAVFRyYW5zYWN0aW9uUGF5bWVudEFwaRAocXVlcnlfaW5mbwgMdXh0DQoMbGVuOBERAABEcXVlcnlfZmVlX2RldGFpbHMIDHV4dA0KDGxlbjgVEQAATHF1ZXJ5X3dlaWdodF90b19mZWUEGHdlaWdodBUBWQEAAExxdWVyeV9sZW5ndGhfdG9fZmVlBBhsZW5ndGg4WQEAAAAQAGRUcmFuc2FjdGlvblBheW1lbnRDYWxsQXBpEDxxdWVyeV9jYWxsX2luZm8IEGNhbGwgDGxlbjgREQRJASBRdWVyeSBpbmZvcm1hdGlvbiBvZiBhIGRpc3BhdGNoIGNsYXNzLCB3ZWlnaHQsIGFuZCBmZWUgb2YgYSBnaXZlbiBlbmNvZGVkIGBDYWxsYC4AWHF1ZXJ5X2NhbGxfZmVlX2RldGFpbHMIEGNhbGwgDGxlbjgVEQS0IFF1ZXJ5IGZlZSBkZXRhaWxzIG9mIGEgZ2l2ZW4gZW5jb2RlZCBgQ2FsbGAuAExxdWVyeV93ZWlnaHRfdG9fZmVlBBh3ZWlnaHQVAVkBBAEBIFF1ZXJ5IHRoZSBvdXRwdXQgb2YgdGhlIGN1cnJlbnQgYFdlaWdodFRvRmVlYCBnaXZlbiBzb21lIGlucHV0LgBMcXVlcnlfbGVuZ3RoX3RvX2ZlZQQYbGVuZ3RoOFkBBAEBIFF1ZXJ5IHRoZSBvdXRwdXQgb2YgdGhlIGN1cnJlbnQgYExlbmd0aFRvRmVlYCBnaXZlbiBzb21lIGlucHV0LgAADAA0WGNtUGF5bWVudEFwaRB8cXVlcnlfYWNjZXB0YWJsZV9wYXltZW50X2Fzc2V0cwQseGNtX3ZlcnNpb244IREUtCBSZXR1cm5zIGEgbGlzdCBvZiBhY2NlcHRhYmxlIHBheW1lbnQgYXNzZXRzLgAwICMgQXJndW1lbnRzAGggKiBgeGNtX3ZlcnNpb25gOiBWZXJzaW9uLgBAcXVlcnlfeGNtX3dlaWdodAQcbWVzc2FnZVECLREUqCBSZXR1cm5zIGEgd2VpZ2h0IG5lZWRlZCB0byBleGVjdXRlIGEgWENNLgAwICMgQXJndW1lbnRzAHQgKiBgbWVzc2FnZWA6IGBWZXJzaW9uZWRYY21gLgBkcXVlcnlfd2VpZ2h0X3RvX2Fzc2V0X2ZlZQgYd2VpZ2h0FQEUYXNzZXTBAzERGOggQ29udmVydHMgYSB3ZWlnaHQgaW50byBhIGZlZSBmb3IgdGhlIHNwZWNpZmllZCBgQXNzZXRJZGAuADAgIyBBcmd1bWVudHMAiCAqIGB3ZWlnaHRgOiBjb252ZXJ0aWJsZSBgV2VpZ2h0YC58ICogYGFzc2V0YDogYFZlcnNpb25lZEFzc2V0SWRgLgBMcXVlcnlfZGVsaXZlcnlfZmVlcwwsZGVzdGluYXRpb27JARxtZXNzYWdlUQIgYXNzZXRfaWTBAzURKGAgUXVlcnkgZGVsaXZlcnkgZmVlcyBWMi4AHQEgR2V0IGRlbGl2ZXJ5IGZlZXMgZm9yIHNlbmRpbmcgYSBzcGVjaWZpYyBgbWVzc2FnZWAgdG8gYSBgZGVzdGluYXRpb25gLvQgVGhlc2UgYWx3YXlzIGNvbWUgaW4gYSBzcGVjaWZpYyBhc3NldCwgZGVmaW5lZCBieSB0aGUgY2hhaW4uADAgIyBBcmd1bWVudHOBASAqIGBtZXNzYWdlYDogVGhlIG1lc3NhZ2UgdGhhdCdsbCBiZSBzZW50LCBuZWNlc3NhcnkgYmVjYXVzZSBtb3N0IGRlbGl2ZXJ5IGZlZXMgYXJlIGJhc2VkIG9uIHRoZVwgICBzaXplIG9mIHRoZSBtZXNzYWdlLmEBICogYGRlc3RpbmF0aW9uYDogVGhlIGRlc3RpbmF0aW9uIHRvIHNlbmQgdGhlIG1lc3NhZ2UgdG8uIERpZmZlcmVudCBkZXN0aW5hdGlvbnMgbWF5IHVzZcAgICBkaWZmZXJlbnQgc2VuZGVycyB0aGF0IGNoYXJnZSBkaWZmZXJlbnQgZmVlcy4ALHAgQSB0cmFpdCBvZiBYQ00gcGF5bWVudCBBUEkuAKggQVBJIHByb3ZpZGVzIGZ1bmN0aW9uYWxpdHkgZm9yIG9idGFpbmluZzoAxCAqIHRoZSB3ZWlnaHQgcmVxdWlyZWQgdG8gZXhlY3V0ZSBhbiBYQ00gbWVzc2FnZSwFASAqIGEgbGlzdCBvZiBhY2NlcHRhYmxlIGBBc3NldElkYHMgZm9yIG1lc3NhZ2UgZXhlY3V0aW9uIHBheW1lbnQsAQEgKiB0aGUgY29zdCBvZiB0aGUgd2VpZ2h0IGluIHRoZSBzcGVjaWZpZWQgYWNjZXB0YWJsZSBgQXNzZXRJZGAuoCAqIHRoZSBmZWVzIGZvciBhbiBYQ00gbWVzc2FnZSBkZWxpdmVyeS4A8CBUbyBkZXRlcm1pbmUgdGhlIGV4ZWN1dGlvbiB3ZWlnaHQgb2YgdGhlIGNhbGxzIHJlcXVpcmVkIGZvcnUBIFtgeGNtOjpsYXRlc3Q6Okluc3RydWN0aW9uOjpUcmFuc2FjdGBdIGluc3RydWN0aW9uLCBgVHJhbnNhY3Rpb25QYXltZW50Q2FsbEFwaWAgY2FuIGJlIHVzZWQuCAAkRHJ5UnVuQXBpCDBkcnlfcnVuX2NhbGwMGG9yaWdpbvEDEGNhbGwgTHJlc3VsdF94Y21zX3ZlcnNpb244OREERCBEcnkgcnVuIGNhbGwgVjIuACxkcnlfcnVuX3hjbQg8b3JpZ2luX2xvY2F0aW9uyQEMeGNtkQNZEQRQIERyeSBydW4gWENNIHByb2dyYW0AJLEBIEFQSSBmb3IgZHJ5LXJ1bm5pbmcgZXh0cmluc2ljcyBhbmQgWENNIHByb2dyYW1zIHRvIGdldCB0aGUgcHJvZ3JhbXMgdGhhdCBuZWVkIHRvIGJlIHBhc3NlZCB0byB0aGUgZmVlcyBBUEkuAIEBIEFsbCBjYWxscyByZXR1cm4gYSB2ZWN0b3Igb2YgdHVwbGVzIChsb2NhdGlvbiwgeGNtKSB3aGVyZSBlYWNoICJ4Y20iIGlzIGV4ZWN1dGVkIGluICJsb2NhdGlvbiIu5CBJZiB0aGVyZSdzIGxvY2FsIGV4ZWN1dGlvbiwgdGhlIGxvY2F0aW9uIHdpbGwgYmUgIkhlcmUiLh0BIFRoaXMgdmVjdG9yIGNhbiBiZSB1c2VkIHRvIGNhbGN1bGF0ZSBib3RoIGV4ZWN1dGlvbiBhbmQgZGVsaXZlcnkgZmVlcy4AmQEgQ2FsbHMgb3IgWENNcyBtaWdodCBmYWlsIHdoZW4gZXhlY3V0ZWQsIHRoaXMgZG9lc24ndCBtZWFuIHRoZSByZXN1bHQgb2YgdGhlc2UgY2FsbHMgd2lsbCBiZSBhbiBgRXJyYC5lASBJbiB0aG9zZSBjYXNlcywgdGhlcmUgbWlnaHQgc3RpbGwgYmUgYSB2YWxpZCByZXN1bHQsIHdpdGggdGhlIGV4ZWN1dGlvbiBlcnJvciBpbnNpZGUgaXQuZQEgVGhlIG9ubHkgcmVhc29ucyB3aHkgdGhlc2UgY2FsbHMgbWlnaHQgcmV0dXJuIGFuIGVycm9yIGFyZSBsaXN0ZWQgaW4gdGhlIFtgRXJyb3JgXSBlbnVtLggAUExvY2F0aW9uVG9BY2NvdW50QXBpBEBjb252ZXJ0X2xvY2F0aW9uBCBsb2NhdGlvbskBYREEkCBDb252ZXJ0cyBgTG9jYXRpb25gIHRvIGBBY2NvdW50SWRgLgAEDQEgQVBJIGZvciB1c2VmdWwgY29udmVyc2lvbnMgYmV0d2VlbiBYQ00gYExvY2F0aW9uYCBhbmQgYEFjY291bnRJZGAuBAA8VHJ1c3RlZFF1ZXJ5QXBpCEhpc190cnVzdGVkX3Jlc2VydmUIFGFzc2V0aREgbG9jYXRpb27JAW0RFPAgUmV0dXJucyBpZiB0aGUgbG9jYXRpb24gaXMgYSB0cnVzdGVkIHJlc2VydmUgZm9yIHRoZSBhc3NldC4AMCAjIEFyZ3VtZW50c3QgKiBgYXNzZXRgOiBgVmVyc2lvbmVkQXNzZXRgLowgKiBgbG9jYXRpb25gOiBgVmVyc2lvbmVkTG9jYXRpb25gLgBUaXNfdHJ1c3RlZF90ZWxlcG9ydGVyCBRhc3NldGkRIGxvY2F0aW9uyQFtERTgIFJldHVybnMgaWYgdGhlIGFzc2V0IGNhbiBiZSB0ZWxlcG9ydGVkIHRvIHRoZSBsb2NhdGlvbi4AMCAjIEFyZ3VtZW50c3QgKiBgYXNzZXRgOiBgVmVyc2lvbmVkQXNzZXRgLowgKiBgbG9jYXRpb25gOiBgVmVyc2lvbmVkTG9jYXRpb25gLgAE7CBBUEkgZm9yIHF1ZXJ5aW5nIHRydXN0ZWQgcmVzZXJ2ZXMgYW5kIHRydXN0ZWQgdGVsZXBvcnRlcnMuBABUQXV0aG9yaXplZEFsaWFzZXJzQXBpCExhdXRob3JpemVkX2FsaWFzZXJzBBh0YXJnZXTJAXURBPQgUmV0dXJucyBsb2NhdGlvbnMgYWxsb3dlZCB0byBhbGlhcyBpbnRvIGFuZCBhY3QgYXMgYHRhcmdldGAuAExpc19hdXRob3JpemVkX2FsaWFzCBhvcmlnaW7JARh0YXJnZXTJAX0RBB0BIFJldHVybnMgd2hldGhlciBgb3JpZ2luYCBpcyBhbGxvd2VkIHRvIGFsaWFzIGludG8gYW5kIGFjdCBhcyBgdGFyZ2V0YC4ABKAgQVBJIGZvciBxdWVyeWluZyBYQ00gYXV0aG9yaXplZCBhbGlhc2VzBAAwRnVuZ2libGVzQXBpBFhxdWVyeV9hY2NvdW50X2JhbGFuY2VzBBxhY2NvdW50BIERBOwgUmV0dXJucyB0aGUgbGlzdCBvZiBhbGwgW2BBc3NldGBdIHRoYXQgYW4gYEFjY291bnRJZGAgaGFzLgAE2CBUaGUgQVBJIGZvciBxdWVyeWluZyBhY2NvdW50J3MgYmFsYW5jZXMgZnJvbSBydW50aW1lLggAUENvbGxlY3RDb2xsYXRpb25JbmZvBFhjb2xsZWN0X2NvbGxhdGlvbl9pbmZvBBhoZWFkZXJgiREQnCBDb2xsZWN0IGluZm9ybWF0aW9uIGFib3V0IGEgY29sbGF0aW9uLgD0IFRoZSBnaXZlbiBgaGVhZGVyYCBpcyB0aGUgaGVhZGVyIG9mIHRoZSBidWlsdCBibG9jayBmb3IgdGhhdKggd2UgYXJlIGNvbGxlY3RpbmcgdGhlIGNvbGxhdGlvbiBpbmZvIGZvci4AFNggUnVudGltZSBhcGkgdG8gY29sbGVjdCBpbmZvcm1hdGlvbiBhYm91dCBhIGNvbGxhdGlvbi4ARCBWZXJzaW9uIGhpc3Rvcnk6AQEgLSBWZXJzaW9uIDI6IENoYW5nZWQgW2BTZWxmOjpjb2xsZWN0X2NvbGxhdGlvbl9pbmZvYF0gc2lnbmF0dXJlNQEgLSBWZXJzaW9uIDM6IFNpZ25hbHMgdG8gdGhlIG5vZGUgdG8gdXNlIHZlcnNpb24gMSBvZiBbYFBhcmFjaGFpbkJsb2NrRGF0YWBdLgwAOEdlbmVzaXNCdWlsZGVyDCxidWlsZF9zdGF0ZQQQanNvbhiVEShlASBCdWlsZCBgUnVudGltZUdlbmVzaXNDb25maWdgIGZyb20gYSBKU09OIGJsb2Igbm90IHVzaW5nIGFueSBkZWZhdWx0cyBhbmQgc3RvcmUgaXQgaW4gdGhlJCBzdG9yYWdlLgApASBJbiB0aGUgY2FzZSBvZiBhIEZSQU1FLWJhc2VkIHJ1bnRpbWUsIHRoaXMgZnVuY3Rpb24gZGVzZXJpYWxpemVzIHRoZSBmdWxsVQEgYFJ1bnRpbWVHZW5lc2lzQ29uZmlnYCBmcm9tIHRoZSBnaXZlbiBKU09OIGJsb2IgYW5kIHB1dHMgaXQgaW50byB0aGUgc3RvcmFnZS4gSWYgdGhlVQEgcHJvdmlkZWQgSlNPTiBibG9iIGlzIGluY29ycmVjdCBvciBpbmNvbXBsZXRlIG9yIHRoZSBkZXNlcmlhbGl6YXRpb24gZmFpbHMsIGFuIGVycm9yNCBpcyByZXR1cm5lZC4AXQEgUGxlYXNlIG5vdGUgdGhhdCBwcm92aWRlZCBKU09OIGJsb2IgbXVzdCBjb250YWluIGFsbCBgUnVudGltZUdlbmVzaXNDb25maWdgIGZpZWxkcywgbm9cIGRlZmF1bHRzIHdpbGwgYmUgdXNlZC4AKGdldF9wcmVzZXQECGlkmRFNAThhASBSZXR1cm5zIGEgSlNPTiBibG9iIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBidWlsdC1pbiBgUnVudGltZUdlbmVzaXNDb25maWdgIGlkZW50aWZpZWQgYnkYIGBpZGAuAFUBIElmIGBpZGAgaXMgYE5vbmVgIHRoZSBmdW5jdGlvbiBzaG91bGQgcmV0dXJuIEpTT04gYmxvYiByZXByZXNlbnRhdGlvbiBvZiB0aGUgZGVmYXVsdEkBIGBSdW50aW1lR2VuZXNpc0NvbmZpZ2Agc3RydWN0IG9mIHRoZSBydW50aW1lLiBJbXBsZW1lbnRhdGlvbiBtdXN0IHByb3ZpZGUgZGVmYXVsdGAgYFJ1bnRpbWVHZW5lc2lzQ29uZmlnYC4AIQEgT3RoZXJ3aXNlIGZ1bmN0aW9uIHJldHVybnMgYSBKU09OIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBidWlsdC1pbiwgbmFtZWRRASBgUnVudGltZUdlbmVzaXNDb25maWdgIHByZXNldCBpZGVudGlmaWVkIGJ5IGBpZGAsIG9yIGBOb25lYCBpZiBzdWNoIHByZXNldCBkb2VzIG5vdGEBIGV4aXN0LiBSZXR1cm5lZCBgVmVjPHU4PmAgY29udGFpbnMgYnl0ZXMgb2YgSlNPTiBibG9iIChwYXRjaCkgd2hpY2ggY29tcHJpc2VzIGEgbGlzdCBvZk0BIChwb3RlbnRpYWxseSBuZXN0ZWQpIGtleS12YWx1ZSBwYWlycyB0aGF0IGFyZSBpbnRlbmRlZCBmb3IgY3VzdG9taXppbmcgdGhlIGRlZmF1bHRlASBydW50aW1lIGdlbmVzaXMgY29uZmlnLiBUaGUgcGF0Y2ggc2hhbGwgYmUgbWVyZ2VkIChyZmM3Mzg2KSB3aXRoIHRoZSBKU09OIHJlcHJlc2VudGF0aW9uYQEgb2YgdGhlIGRlZmF1bHQgYFJ1bnRpbWVHZW5lc2lzQ29uZmlnYCB0byBjcmVhdGUgYSBjb21wcmVoZW5zaXZlIGdlbmVzaXMgY29uZmlnIHRoYXQgY2FuhCBiZSB1c2VkIGluIGBidWlsZF9zdGF0ZWAgbWV0aG9kLgAwcHJlc2V0X25hbWVzAJ0REFEBIFJldHVybnMgYSBsaXN0IG9mIGlkZW50aWZpZXJzIGZvciBhdmFpbGFibGUgYnVpbHRpbiBgUnVudGltZUdlbmVzaXNDb25maWdgIHByZXNldHMuAGEBIFRoZSBwcmVzZXRzIGZyb20gdGhlIGxpc3QgY2FuIGJlIHF1ZXJpZWQgd2l0aCBbYEdlbmVzaXNCdWlsZGVyOjpnZXRfcHJlc2V0YF0gbWV0aG9kLiBJZgEBIG5vIG5hbWVkIHByZXNldHMgYXJlIHByb3ZpZGVkIGJ5IHRoZSBydW50aW1lIHRoZSBsaXN0IGlzIGVtcHR5LgAE8CBBUEkgdG8gaW50ZXJhY3Qgd2l0aCBgUnVudGltZUdlbmVzaXNDb25maWdgIGZvciB0aGUgcnVudGltZQQASEFzc2V0Q29udmVyc2lvbkFwaQyMcXVvdGVfcHJpY2VfdG9rZW5zX2Zvcl9leGFjdF90b2tlbnMQGGFzc2V0MR0CGGFzc2V0Mh0CGGFtb3VudFkBLGluY2x1ZGVfZmVlXQFlBBD8IFByb3ZpZGVzIGEgcXVvdGUgZm9yIFtgUGFsbGV0Ojpzd2FwX3Rva2Vuc19mb3JfZXhhY3RfdG9rZW5zYF0uADkBIE5vdGUgdGhhdCB0aGUgcHJpY2UgbWF5IGhhdmUgY2hhbmdlZCBieSB0aGUgdGltZSB0aGUgdHJhbnNhY3Rpb24gaXMgZXhlY3V0ZWQurCAoVXNlIGBhbW91bnRfaW5fbWF4YCB0byBjb250cm9sIHNsaXBwYWdlLikAjHF1b3RlX3ByaWNlX2V4YWN0X3Rva2Vuc19mb3JfdG9rZW5zEBhhc3NldDEdAhhhc3NldDIdAhhhbW91bnRZASxpbmNsdWRlX2ZlZV0BZQQQ/CBQcm92aWRlcyBhIHF1b3RlIGZvciBbYFBhbGxldDo6c3dhcF9leGFjdF90b2tlbnNfZm9yX3Rva2Vuc2BdLgA5ASBOb3RlIHRoYXQgdGhlIHByaWNlIG1heSBoYXZlIGNoYW5nZWQgYnkgdGhlIHRpbWUgdGhlIHRyYW5zYWN0aW9uIGlzIGV4ZWN1dGVkLrAgKFVzZSBgYW1vdW50X291dF9taW5gIHRvIGNvbnRyb2wgc2xpcHBhZ2UuKQAwZ2V0X3Jlc2VydmVzCBhhc3NldDEdAhhhc3NldDIdAqERBAUBIFJldHVybnMgdGhlIHNpemUgb2YgdGhlIGxpcXVpZGl0eSBwb29sIGZvciB0aGUgZ2l2ZW4gYXNzZXQgcGFpci4ACCEBIFRoaXMgcnVudGltZSBhcGkgYWxsb3dzIHBlb3BsZSB0byBxdWVyeSB0aGUgc2l6ZSBvZiB0aGUgbGlxdWlkaXR5IHBvb2xzcCBhbmQgcXVvdGUgcHJpY2VzIGZvciBzd2Fwcy4EAEBHZXRQYXJhY2hhaW5JbmZvBDBwYXJhY2hhaW5faWQAoASwIFJldHJpZXZlIHRoZSBwYXJhY2hhaW4gaWQgdXNlZCBmb3IgcnVudGltZS4ABA0BIFJ1bnRpbWUgYXBpIHVzZWQgdG8gYWNjZXNzIGdlbmVyYWwgaW5mbyBhYm91dCBhIHBhcmFjaGFpbiBydW50aW1lLgQASE5vbWluYXRpb25Qb29sc0FwaSg8cGVuZGluZ19yZXdhcmRzBAx3aG8EWQEENQEgUmV0dXJucyB0aGUgcGVuZGluZyByZXdhcmRzIGZvciB0aGUgbWVtYmVyIHRoYXQgdGhlIEFjY291bnRJZCB3YXMgZ2l2ZW4gZm9yLgBEcG9pbnRzX3RvX2JhbGFuY2UIHHBvb2xfaWQ4GHBvaW50c1kBWQEE9CBSZXR1cm5zIHRoZSBlcXVpdmFsZW50IGJhbGFuY2Ugb2YgYHBvaW50c2AgZm9yIGEgZ2l2ZW4gcG9vbC4ARGJhbGFuY2VfdG9fcG9pbnRzCBxwb29sX2lkOCRuZXdfZnVuZHNZAVkBBPwgUmV0dXJucyB0aGUgZXF1aXZhbGVudCBwb2ludHMgb2YgYG5ld19mdW5kc2AgZm9yIGEgZ2l2ZW4gcG9vbC4ASHBvb2xfcGVuZGluZ19zbGFzaAQccG9vbF9pZDhZAQSwIFJldHVybnMgdGhlIHBlbmRpbmcgc2xhc2ggZm9yIGEgZ2l2ZW4gcG9vbC4AUG1lbWJlcl9wZW5kaW5nX3NsYXNoBBhtZW1iZXIEWQEQzCBSZXR1cm5zIHRoZSBwZW5kaW5nIHNsYXNoIGZvciBhIGdpdmVuIHBvb2wgbWVtYmVyLgBNASBJZiBwZW5kaW5nIHNsYXNoIG9mIHRoZSBtZW1iZXIgZXhjZWVkcyBgRXhpc3RlbnRpYWxEZXBvc2l0YCwgaXQgY2FuIGJlIHJlcG9ydGVkIG9uHCBjaGFpbi4AdHBvb2xfbmVlZHNfZGVsZWdhdGVfbWlncmF0aW9uBBxwb29sX2lkOF0BIOQgUmV0dXJucyB0cnVlIGlmIHRoZSBwb29sIHdpdGggYHBvb2xfaWRgIG5lZWRzIG1pZ3JhdGlvbi4ASQEgVGhpcyBjYW4gaGFwcGVuIHdoZW4gdGhlIGBwYWxsZXQtbm9taW5hdGlvbi1wb29sc2AgaGFzIHN3aXRjaGVkIHRvIHVzaW5nIHN0cmF0ZWd5QQEgW2BEZWxlZ2F0ZVN0YWtlYF0ocGFsbGV0X25vbWluYXRpb25fcG9vbHM6OmFkYXB0ZXI6OkRlbGVnYXRlU3Rha2UpIGJ1dCB0aGUgcG9vbOggc3RpbGwgaGFzIGZ1bmRzIHRoYXQgd2VyZSBzdGFrZWQgdXNpbmcgdGhlIG9sZGVyIHN0cmF0ZWd5GQEgW1RyYW5zZmVyU3Rha2VdKHBhbGxldF9ub21pbmF0aW9uX3Bvb2xzOjphZGFwdGVyOjpUcmFuc2ZlclN0YWtlKS4gVXNliQEgW2BtaWdyYXRlX3Bvb2xfdG9fZGVsZWdhdGVfc3Rha2VgXShwYWxsZXRfbm9taW5hdGlvbl9wb29sczo6Q2FsbDo6bWlncmF0ZV9wb29sX3RvX2RlbGVnYXRlX3N0YWtlKVQgdG8gbWlncmF0ZSB0aGUgcG9vbC4AfG1lbWJlcl9uZWVkc19kZWxlZ2F0ZV9taWdyYXRpb24EGG1lbWJlcgRdARwpASBSZXR1cm5zIHRydWUgaWYgdGhlIGRlbGVnYXRlZCBmdW5kcyBvZiB0aGUgcG9vbCBgbWVtYmVyYCBuZWVkcyBtaWdyYXRpb24uANggT25jZSBhIHBvb2wgaGFzIHN1Y2Nlc3NmdWxseSBtaWdyYXRlZCB0byB0aGUgc3RyYXRlZ3lVASBbYERlbGVnYXRlU3Rha2VgXShwYWxsZXRfbm9taW5hdGlvbl9wb29sczo6YWRhcHRlcjo6RGVsZWdhdGVTdGFrZSksIHRoZSBmdW5kcyBvZiB0aGUZASBtZW1iZXIgY2FuIGJlIG1pZ3JhdGVkIGZyb20gcG9vbCBhY2NvdW50IHRvIHRoZSBtZW1iZXIncyBhY2NvdW50LiBVc2UpASBbYG1pZ3JhdGVfZGVsZWdhdGlvbmBdKHBhbGxldF9ub21pbmF0aW9uX3Bvb2xzOjpDYWxsOjptaWdyYXRlX2RlbGVnYXRpb24ppCB0byBtaWdyYXRlIHRoZSBmdW5kcyBvZiB0aGUgcG9vbCBtZW1iZXIuAFBtZW1iZXJfdG90YWxfYmFsYW5jZQQMd2hvBFkBBGUBIFJldHVybnMgdGhlIHRvdGFsIGNvbnRyaWJ1dGlvbiBvZiBhIHBvb2wgbWVtYmVyIGluY2x1ZGluZyBhbnkgYmFsYW5jZSB0aGF0IGlzIHVuYm9uZGluZy4AMHBvb2xfYmFsYW5jZQQccG9vbF9pZDhZAQScIFRvdGFsIGJhbGFuY2UgY29udHJpYnV0ZWQgdG8gdGhlIHBvb2wuADRwb29sX2FjY291bnRzBBxwb29sX2lkOOUPBC0BIFJldHVybnMgdGhlIGJvbmRlZCBhY2NvdW50IGFuZCByZXdhcmQgYWNjb3VudCBhc3NvY2lhdGVkIHdpdGggdGhlIHBvb2xfaWQuAAT4IFJ1bnRpbWUgYXBpIGZvciBhY2Nlc3NpbmcgaW5mb3JtYXRpb24gYWJvdXQgbm9taW5hdGlvbiBwb29scy4EAChTdGFraW5nQXBpDERub21pbmF0aW9uc19xdW90YQQcYmFsYW5jZVkBOAQRASBSZXR1cm5zIHRoZSBub21pbmF0aW9ucyBxdW90YSBmb3IgYSBub21pbmF0b3Igd2l0aCBhIGdpdmVuIGJhbGFuY2UuAFxlcmFzX3N0YWtlcnNfcGFnZV9jb3VudAgMZXJhOBxhY2NvdW50BDgEOQEgUmV0dXJucyB0aGUgcGFnZSBjb3VudCBvZiBleHBvc3VyZXMgZm9yIGEgdmFsaWRhdG9yIGBhY2NvdW50YCBpbiBhIGdpdmVuIGVyYS4APHBlbmRpbmdfcmV3YXJkcwgMZXJhOBxhY2NvdW50BF0BBEUBIFJldHVybnMgdHJ1ZSBpZiBhIHZhbGlkYXRvciBgYWNjb3VudGAgaGFzIHBhZ2VzIHRvIGJlIGNsYWltZWQgZm9yIHRoZSBnaXZlbiBlcmEuAAAEACRJbmZsYXRpb24ElGV4cGVyaW1lbnRhbF9pc3N1YW5jZV9wcmVkaWN0aW9uX2luZm8ApREQ1CBSZXR1cm4gdGhlIGN1cnJlbnQgZXN0aW1hdGVzIG9mIHRoZSBpc3N1YW5jZSBhbW91bnQuAFEBIFRoaXMgaXMgbWFya2VkIGFzIGV4cGVyaW1lbnRhbCBpbiBsaWdodCBvZiBSRkMjODkuIE5vbmV0aGVsZXNzLCBpdHMgdXNhZ2UgaXMgaGlnaGx5JQEgcmVjb21tZW5kZWQgb3ZlciB0cnlpbmcgdG8gcmVhZC1zdG9yYWdlLCBvciByZS1jcmVhdGUgdGhlIG9uY2hhaW4gbG9naWMuAAAEACRSZXZpdmVBcGlsJGV0aF9ibG9jawD1Dwx8IFJldHVybnMgdGhlIGN1cnJlbnQgRVRIIGJsb2NrLgC4IFRoaXMgaXMgb25lIGJsb2NrIGJlaGluZCB0aGUgc3Vic3RyYXRlIGJsb2NrLgA4ZXRoX2Jsb2NrX2hhc2gEGG51bWJlckUHFQUE3CBSZXR1cm5zIHRoZSBFVEggYmxvY2sgaGFzaCBmb3IgdGhlIGdpdmVuIGJsb2NrIG51bWJlci4AQGV0aF9yZWNlaXB0X2RhdGEAYRAUEQEgVGhlIGRldGFpbHMgbmVlZGVkIHRvIHJlY29uc3RydWN0IHRoZSByZWNlaXB0IGluZm9ybWF0aW9uIG9mZmNoYWluLgAcICMgTm90ZQBVASBFYWNoIGVudHJ5IGNvcnJlc3BvbmRzIHRvIHRoZSBhcHByb3ByaWF0ZSBFdGhlcmV1bSB0cmFuc2FjdGlvbiBpbiB0aGUgY3VycmVudCBibG9jay4APGJsb2NrX2dhc19saW1pdABFBwR0IFJldHVybnMgdGhlIGJsb2NrIGdhcyBsaW1pdC4AbG1heF9leHRyaW5zaWNfd2VpZ2h0X2luX2dhcwBFBwTwIFJldHVybnMgdGhlIGJsb2NrIGdhcyBsaW1pdCBhcyBjYWxjdWxhdGVkIGZyb20gdGhlIHdlaWdodHMuABxiYWxhbmNlBBxhZGRyZXNzPQdFBwQxASBSZXR1cm5zIHRoZSBmcmVlIGJhbGFuY2Ugb2YgdGhlIGdpdmVuIGBbSDE2MF1gIGFkZHJlc3MsIHVzaW5nIEVWTSBkZWNpbWFscy4AJGdhc19wcmljZQBFBwRcIFJldHVybnMgdGhlIGdhcyBwcmljZS4AFG5vbmNlBBxhZGRyZXNzPQc4BMQgUmV0dXJucyB0aGUgbm9uY2Ugb2YgdGhlIGdpdmVuIGBbSDE2MF1gIGFkZHJlc3MuABBjYWxsGBhvcmlnaW4EEGRlc3Q9BxR2YWx1ZVkBJGdhc19saW1pdBEBVHN0b3JhZ2VfZGVwb3NpdF9saW1pdGUEKGlucHV0X2RhdGEYrREM9CBQZXJmb3JtIGEgY2FsbCBmcm9tIGEgc3BlY2lmaWVkIGFjY291bnQgdG8gYSBnaXZlbiBjb250cmFjdC4AiCBTZWUgW2BjcmF0ZTo6UGFsbGV0OjpiYXJlX2NhbGxgXS4ALGluc3RhbnRpYXRlHBhvcmlnaW4EFHZhbHVlWQEkZ2FzX2xpbWl0EQFUc3RvcmFnZV9kZXBvc2l0X2xpbWl0ZQQQY29kZcEREGRhdGEYEHNhbHRBB8URDHAgSW5zdGFudGlhdGUgYSBuZXcgY29udHJhY3QuAKQgU2VlIGBbY3JhdGU6OlBhbGxldDo6YmFyZV9pbnN0YW50aWF0ZV1gLgAwZXRoX3RyYW5zYWN0BAh0eNER7REQaCBQZXJmb3JtIGFuIEV0aGVyZXVtIGNhbGwuAJQgRGVwcmVjYXRlZCB1c2UgYHYyYCB2ZXJzaW9uIGluc3RlYWQusCBTZWUgW2BjcmF0ZTo6UGFsbGV0OjpkcnlfcnVuX2V0aF90cmFuc2FjdGBdAGBldGhfdHJhbnNhY3Rfd2l0aF9jb25maWcICHR40REYY29uZmln+RHtEQxoIFBlcmZvcm0gYW4gRXRoZXJldW0gY2FsbC4AsCBTZWUgW2BjcmF0ZTo6UGFsbGV0OjpkcnlfcnVuX2V0aF90cmFuc2FjdGBdAEBldGhfZXN0aW1hdGVfZ2FzCAh0eNERGGNvbmZpZ/kRLRIU6CBFc3RpbWF0ZXMgdGhlIGFtb3VudCBvZiBnYXMgdGhhdCBhIHRyYW5zYWN0aW9ucyByZXF1aXJlcy4AXQEgVGhpcyBmdW5jdGlvbiBlc3RpbWF0ZXMgdGhlIGdhcyBvZiB0aGUgdHJhbnNhY3Rpb24gYWNjb3JkaW5nIHRvIHRoZSBzYW1lIGJpbmFyeSBzZWFyY2hZASBhbGdvcml0aG0gdGhhdCdzIGltcGxlbWVudGVkIGluIEdldGguIEl0IHN0b3BzIHdoZW4gd2l0aCBhbiBhY2NlcHRhYmxlIGVycm9yIHJhdGlvIG9mtCAxLjUlIHNvIHRoYXQgdGhlIGFsZ29yaXRobSB0ZXJtaW5hdGVzIGVhcmx5LgBcZXRoX3ByZV9kaXNwYXRjaF93ZWlnaHQECHR4GDESBE0BIFJldHVybiB0aGUgcHJlLWRpc3BhdGNoIHdlaWdodCBib29rZWQgZm9yIHRoZSBzaWduZWQgRXRoZXJldW0gdHJhbnNhY3Rpb24gcGF5bG9hZC4ALHVwbG9hZF9jb2RlDBhvcmlnaW4EEGNvZGUYVHN0b3JhZ2VfZGVwb3NpdF9saW1pdGUENRIM6CBVcGxvYWQgbmV3IGNvZGUgd2l0aG91dCBpbnN0YW50aWF0aW5nIGEgY29udHJhY3QgZnJvbSBpdC4ApCBTZWUgW2BjcmF0ZTo6UGFsbGV0OjpiYXJlX3VwbG9hZF9jb2RlYF0uACxnZXRfc3RvcmFnZQgcYWRkcmVzcz0HDGtleQg9EhS8IFF1ZXJ5IGEgZ2l2ZW4gc3RvcmFnZSBrZXkgaW4gYSBnaXZlbiBjb250cmFjdC4ATQEgUmV0dXJucyBgT2soU29tZShWZWM8dTg+KSlgIGlmIHRoZSBzdG9yYWdlIHZhbHVlIGV4aXN0cyB1bmRlciB0aGUgZ2l2ZW4ga2V5IGluIHRoZWEBIHNwZWNpZmllZCBhY2NvdW50IGFuZCBgT2soTm9uZSlgIGlmIGl0IGRvZXNuJ3QuIElmIHRoZSBhY2NvdW50IHNwZWNpZmllZCBieSB0aGUgYWRkcmVzcwkBIGRvZXNuJ3QgZXhpc3QsIG9yIGRvZXNuJ3QgaGF2ZSBhIGNvbnRyYWN0IHRoZW4gYEVycmAgaXMgcmV0dXJuZWQuAExnZXRfc3RvcmFnZV92YXJfa2V5CBxhZGRyZXNzPQcMa2V5GD0SFPggUXVlcnkgYSBnaXZlbiB2YXJpYWJsZS1zaXplZCBzdG9yYWdlIGtleSBpbiBhIGdpdmVuIGNvbnRyYWN0LgBNASBSZXR1cm5zIGBPayhTb21lKFZlYzx1OD4pKWAgaWYgdGhlIHN0b3JhZ2UgdmFsdWUgZXhpc3RzIHVuZGVyIHRoZSBnaXZlbiBrZXkgaW4gdGhlYQEgc3BlY2lmaWVkIGFjY291bnQgYW5kIGBPayhOb25lKWAgaWYgaXQgZG9lc24ndC4gSWYgdGhlIGFjY291bnQgc3BlY2lmaWVkIGJ5IHRoZSBhZGRyZXNzCQEgZG9lc24ndCBleGlzdCwgb3IgZG9lc24ndCBoYXZlIGEgY29udHJhY3QgdGhlbiBgRXJyYCBpcyByZXR1cm5lZC4ALHRyYWNlX2Jsb2NrCBRibG9jawkKGGNvbmZpZ0USYRIYBQEgVHJhY2VzIHRoZSBleGVjdXRpb24gb2YgYW4gZW50aXJlIGJsb2NrIGFuZCByZXR1cm5zIGNhbGwgdHJhY2VzLgBBASBUaGlzIGlzIGludGVuZGVkIHRvIGJlIGNhbGxlZCB0aHJvdWdoIGBzdGF0ZV9jYWxsYCB0byByZXBsYXkgdGhlIGJsb2NrIGZyb20gdGhlOCBwYXJlbnQgYmxvY2suAMggU2VlIGV0aC1ycGMgYGRlYnVnX3RyYWNlQmxvY2tCeU51bWJlcmAgZm9yIHVzYWdlLgAgdHJhY2VfdHgMFGJsb2NrCQogdHhfaW5kZXg4GGNvbmZpZ0USwRIY/CBUcmFjZXMgdGhlIGV4ZWN1dGlvbiBvZiBhIHNwZWNpZmljIHRyYW5zYWN0aW9uIHdpdGhpbiBhIGJsb2NrLgBBASBUaGlzIGlzIGludGVuZGVkIHRvIGJlIGNhbGxlZCB0aHJvdWdoIGBzdGF0ZV9jYWxsYCB0byByZXBsYXkgdGhlIGJsb2NrIGZyb20gdGhljCBwYXJlbnQgaGFzaCB1cCB0byB0aGUgdHJhbnNhY3Rpb24uAMAgU2VlIGV0aC1ycGMgYGRlYnVnX3RyYWNlVHJhbnNhY3Rpb25gIGZvciB1c2FnZS4AKHRyYWNlX2NhbGwICHR40REYY29uZmlnRRLFEgzAIERyeSBydW4gYW5kIHJldHVybiB0aGUgdHJhY2Ugb2YgdGhlIGdpdmVuIGNhbGwuAKQgU2VlIGV0aC1ycGMgYGRlYnVnX3RyYWNlQ2FsbGAgZm9yIHVzYWdlLgBYdHJhY2VfY2FsbF93aXRoX2NvbmZpZwwIdHjRESx0cmFjZXJfdHlwZUUSGGNvbmZpZ8kSxRIUOQEgRHJ5IHJ1biBhbmQgcmV0dXJuIHRoZSB0cmFjZSBvZiB0aGUgZ2l2ZW4gY2FsbCB3aXRoIGFkZGl0aW9uYWwgY29uZmlndXJhdGlvbi4AQQEgTGlrZSBbYFNlbGY6OnRyYWNlX2NhbGxgXSwgYnV0IGFjY2VwdHMgYSBbYFRyYWNpbmdDb25maWdgXSB0aGF0IGNhbiBjYXJyeSBzdGF0ZUUBIG92ZXJyaWRlcyBhbmQgZnV0dXJlIGV4dGVuc2liaWxpdHkuIFRoZSBjb25maWcgbXVzdCBiZSB0aGUgKipsYXN0IGFyZ3VtZW50KiogZm9yBQEgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkg4oCUIHNlZSBbYFRyYWNpbmdDb25maWdgXSBkb2N1bWVudGF0aW9uLgAwYmxvY2tfYXV0aG9yAD0HBPggVGhlIGFkZHJlc3Mgb2YgdGhlIHZhbGlkYXRvciB0aGF0IHByb2R1Y2VkIHRoZSBjdXJyZW50IGJsb2NrLgAcYWRkcmVzcwQoYWNjb3VudF9pZAQ9BwTMIEdldCB0aGUgSDE2MCBhZGRyZXNzIGFzc29jaWF0ZWQgdG8gdGhpcyBhY2NvdW50IGlkAChhY2NvdW50X2lkBBxhZGRyZXNzPQcEBNAgR2V0IHRoZSBhY2NvdW50IGlkIGFzc29jaWF0ZWQgdG8gdGhpcyBIMTYwIGFkZHJlc3MuAFxydW50aW1lX3BhbGxldHNfYWRkcmVzcwA9BwT0IFRoZSBhZGRyZXNzIHVzZWQgdG8gY2FsbCB0aGUgcnVudGltZSdzIHBhbGxldHMgZGlzcGF0Y2hhYmxlcwAQY29kZQQcYWRkcmVzcz0HGAQRASBUaGUgY29kZSBhdCB0aGUgc3BlY2lmaWVkIGFkZHJlc3MgdGFraW5nIHByZS1jb21waWxlcyBpbnRvIGFjY291bnQuAFRuZXdfYmFsYW5jZV93aXRoX2R1c3QEHGJhbGFuY2VFB80SBA0BIENvbnN0cnVjdCB0aGUgbmV3IGJhbGFuY2UgYW5kIGR1c3QgY29tcG9uZW50cyBvZiB0aGlzIEVWTSBiYWxhbmNlLgAEvCBUaGUgQVBJIHVzZWQgdG8gZHJ5LXJ1biBjb250cmFjdCBpbnRlcmFjdGlvbnMuBAAg9QfZEgA=";
|
|
2
2
|
|
|
3
3
|
export { binMeta as default };
|