@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.
Files changed (89) hide show
  1. package/README.md +0 -4
  2. package/chains/devnet-asset-hub/.papi/polkadot-api.json +1 -1
  3. package/chains/devnet-asset-hub/generated/dist/{devnet_asset_hub_metadata-ECXPhx7J.js → devnet_asset_hub_metadata-DPRqW8eH.js} +1 -1
  4. package/chains/devnet-asset-hub/generated/dist/index.js +2 -2
  5. package/chains/devnet-individuality/.papi/polkadot-api.json +1 -1
  6. package/chains/devnet-individuality/generated/dist/{devnet_individuality_metadata-D_Q26UoG.js → devnet_individuality_metadata-Bn9N9BNx.js} +1 -1
  7. package/chains/devnet-individuality/generated/dist/index.js +2 -2
  8. package/chains/kusama-asset-hub/.papi/polkadot-api.json +1 -1
  9. package/chains/kusama-asset-hub/generated/dist/common-types.d.ts +502 -390
  10. package/chains/kusama-asset-hub/generated/dist/descriptors-DISR3KIi.js +25 -0
  11. package/chains/kusama-asset-hub/generated/dist/index.d.ts +1 -1
  12. package/chains/kusama-asset-hub/generated/dist/index.js +5 -6
  13. package/chains/kusama-asset-hub/generated/dist/kusama_asset_hub.d.ts +464 -300
  14. package/chains/kusama-asset-hub/generated/dist/kusama_asset_hub_metadata-DXHUHPNj.js +3 -0
  15. package/chains/kusama-asset-hub/generated/dist/metadataTypes-D7CQu3b0.js +3 -0
  16. package/chains/kusama-asset-hub/generated/dist/metadataTypes.d.ts +1 -1
  17. package/chains/paseo-asset-hub/.papi/polkadot-api.json +1 -1
  18. package/chains/paseo-asset-hub/generated/dist/common-types.d.ts +154 -157
  19. package/chains/paseo-asset-hub/generated/dist/{descriptors-DhUtfABq.js → descriptors-CimFu30S.js} +1 -1
  20. package/chains/paseo-asset-hub/generated/dist/index.js +4 -4
  21. package/chains/paseo-asset-hub/generated/dist/metadataTypes-Bo4aVwWD.js +3 -0
  22. package/chains/paseo-asset-hub/generated/dist/metadataTypes.d.ts +1 -1
  23. package/chains/paseo-asset-hub/generated/dist/paseo_asset_hub.d.ts +73 -87
  24. 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
  25. package/chains/paseo-bulletin/.papi/polkadot-api.json +1 -1
  26. package/chains/paseo-bulletin/generated/dist/index.js +2 -2
  27. package/chains/{summit-bulletin/generated/dist/summit_bulletin_metadata-B9gNyCCl.js → paseo-bulletin/generated/dist/paseo_bulletin_metadata-B5YIN1Ow.js} +1 -1
  28. package/chains/paseo-individuality/.papi/polkadot-api.json +1 -1
  29. package/chains/paseo-individuality/generated/dist/common-types.d.ts +142 -68
  30. package/chains/paseo-individuality/generated/dist/{descriptors-BPDSgyWs.js → descriptors-SCgI2-0R.js} +1 -1
  31. package/chains/paseo-individuality/generated/dist/index.js +4 -4
  32. package/chains/{summit-individuality/generated/dist/metadataTypes.d.ts → paseo-individuality/generated/dist/metadataTypes-B1qG4QkU.js} +3 -2
  33. package/chains/paseo-individuality/generated/dist/metadataTypes.d.ts +1 -1
  34. package/chains/paseo-individuality/generated/dist/paseo_individuality.d.ts +93 -38
  35. package/chains/paseo-individuality/generated/dist/paseo_individuality_metadata-DRo0inTN.js +3 -0
  36. package/chains/polkadot-asset-hub/.papi/polkadot-api.json +1 -1
  37. package/chains/polkadot-asset-hub/generated/dist/common-types.d.ts +343 -155
  38. package/chains/polkadot-asset-hub/generated/dist/descriptors-BwnkDiaI.js +25 -0
  39. package/chains/polkadot-asset-hub/generated/dist/index.d.ts +1 -1
  40. package/chains/polkadot-asset-hub/generated/dist/index.js +5 -6
  41. package/chains/polkadot-asset-hub/generated/dist/metadataTypes--EQ8pxh1.js +3 -0
  42. package/chains/polkadot-asset-hub/generated/dist/metadataTypes.d.ts +1 -1
  43. package/chains/polkadot-asset-hub/generated/dist/polkadot_asset_hub.d.ts +375 -86
  44. package/chains/polkadot-asset-hub/generated/dist/polkadot_asset_hub_metadata-CN_MTTeF.js +3 -0
  45. package/package.json +1 -13
  46. package/chains/kusama-asset-hub/generated/dist/descriptors-DgSoa2t9.js +0 -25
  47. package/chains/kusama-asset-hub/generated/dist/kusama_asset_hub_metadata-DMsyqc9c.js +0 -3
  48. package/chains/kusama-asset-hub/generated/dist/metadataTypes-c7k6GZcy.js +0 -3
  49. package/chains/paseo-asset-hub/generated/dist/metadataTypes-D0TOPqAM.js +0 -3
  50. package/chains/paseo-asset-hub/generated/dist/paseo_asset_hub_metadata-BeiFoQh7.js +0 -3
  51. package/chains/paseo-bulletin/generated/dist/paseo_bulletin_metadata-B9gNyCCl.js +0 -3
  52. package/chains/paseo-individuality/generated/dist/metadataTypes-B3fJT8lX.js +0 -3
  53. package/chains/paseo-individuality/generated/dist/paseo_individuality_metadata-CoVMbneS.js +0 -3
  54. package/chains/polkadot-asset-hub/generated/dist/descriptors-CoscEQ9e.js +0 -25
  55. package/chains/polkadot-asset-hub/generated/dist/metadataTypes-Dk55glaU.js +0 -3
  56. package/chains/polkadot-asset-hub/generated/dist/polkadot_asset_hub_metadata-BEYst3UH.js +0 -3
  57. package/chains/summit-asset-hub/.papi/polkadot-api.json +0 -12
  58. package/chains/summit-asset-hub/generated/dist/common-types.d.ts +0 -16940
  59. package/chains/summit-asset-hub/generated/dist/common.d.ts +0 -1
  60. package/chains/summit-asset-hub/generated/dist/descriptors-B8WL4bSQ.js +0 -25
  61. package/chains/summit-asset-hub/generated/dist/descriptors.d.ts +0 -1
  62. package/chains/summit-asset-hub/generated/dist/index.d.ts +0 -10
  63. package/chains/summit-asset-hub/generated/dist/index.js +0 -116
  64. package/chains/summit-asset-hub/generated/dist/metadataTypes-D0TOPqAM.js +0 -3
  65. package/chains/summit-asset-hub/generated/dist/metadataTypes.d.ts +0 -2
  66. package/chains/summit-asset-hub/generated/dist/summit_asset_hub.d.ts +0 -16379
  67. package/chains/summit-asset-hub/generated/dist/summit_asset_hub_metadata.d.ts +0 -2
  68. package/chains/summit-bulletin/.papi/polkadot-api.json +0 -12
  69. package/chains/summit-bulletin/generated/dist/common-types.d.ts +0 -4594
  70. package/chains/summit-bulletin/generated/dist/common.d.ts +0 -1
  71. package/chains/summit-bulletin/generated/dist/descriptors-BDn18GWW.js +0 -25
  72. package/chains/summit-bulletin/generated/dist/descriptors.d.ts +0 -1
  73. package/chains/summit-bulletin/generated/dist/index.d.ts +0 -10
  74. package/chains/summit-bulletin/generated/dist/index.js +0 -88
  75. package/chains/summit-bulletin/generated/dist/metadataTypes-GA7L2eXx.js +0 -3
  76. package/chains/summit-bulletin/generated/dist/metadataTypes.d.ts +0 -2
  77. package/chains/summit-bulletin/generated/dist/summit_bulletin.d.ts +0 -3976
  78. package/chains/summit-bulletin/generated/dist/summit_bulletin_metadata.d.ts +0 -2
  79. package/chains/summit-individuality/.papi/polkadot-api.json +0 -12
  80. package/chains/summit-individuality/generated/dist/common-types.d.ts +0 -10638
  81. package/chains/summit-individuality/generated/dist/common.d.ts +0 -1
  82. package/chains/summit-individuality/generated/dist/descriptors-DlbXAv0U.js +0 -25
  83. package/chains/summit-individuality/generated/dist/descriptors.d.ts +0 -1
  84. package/chains/summit-individuality/generated/dist/index.d.ts +0 -10
  85. package/chains/summit-individuality/generated/dist/index.js +0 -87
  86. package/chains/summit-individuality/generated/dist/metadataTypes-B3fJT8lX.js +0 -3
  87. package/chains/summit-individuality/generated/dist/summit_individuality.d.ts +0 -10192
  88. package/chains/summit-individuality/generated/dist/summit_individuality_metadata-CoVMbneS.js +0 -3
  89. package/chains/summit-individuality/generated/dist/summit_individuality_metadata.d.ts +0 -2
@@ -0,0 +1,3 @@
1
+ const binMeta = "bWV0YRDpEgAMKHNwX3J1bnRpbWUwbXVsdGlhZGRyZXNzME11bHRpQWRkcmVzcwgkQWNjb3VudElkAQQwQWNjb3VudEluZGV4ARABFAhJZAQABAEkQWNjb3VudElkAAAAFEluZGV4BAAUATBBY2NvdW50SW5kZXgAAQAMUmF3BAAYARxWZWM8dTg+AAIAJEFkZHJlc3MzMgQACAEgW3U4OyAzMl0AAwAkQWRkcmVzczIwBAAcASBbdTg7IDIwXQAEAAAEDBxzcF9jb3JlGGNyeXB0byxBY2NvdW50SWQzMgAABAAIASBbdTg7IDMyXQAACAAAAyAAAAAMAAwAAAUDABAAAAQAABQAAAYQABgAAAIMABwAAAMUAAAADAAgCGBhc3NldF9odWJfa3VzYW1hX3J1bnRpbWUsUnVudGltZUNhbGwAAcwYU3lzdGVtBAAkAa0Bc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFN5c3RlbSwgUnVudGltZT4AAAA8UGFyYWNoYWluU3lzdGVtBABEAdEBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFBhcmFjaGFpblN5c3RlbSwgUnVudGltZT4AAQAkVGltZXN0YW1wBAC0AbkBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFRpbWVzdGFtcCwgUnVudGltZT4AAwA0UGFyYWNoYWluSW5mbwQAvAHJAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxQYXJhY2hhaW5JbmZvLCBSdW50aW1lPgAEAFBNdWx0aUJsb2NrTWlncmF0aW9ucwQAwAHlAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxNdWx0aUJsb2NrTWlncmF0aW9ucywgUnVudGltZT4ABQAgUHJlaW1hZ2UEAOwBtQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8UHJlaW1hZ2UsIFJ1bnRpbWU+AAYAJFNjaGVkdWxlcgQA9AG5AXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxTY2hlZHVsZXIsIFJ1bnRpbWU+AAcAKFBhcmFtZXRlcnMEAAEBAb0Bc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFBhcmFtZXRlcnMsIFJ1bnRpbWU+AAgAIEJhbGFuY2VzBACNAQG1AXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxCYWxhbmNlcywgUnVudGltZT4ACgAcVmVzdGluZwQApQEBsQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8VmVzdGluZywgUnVudGltZT4ADgAYQ2xhaW1zBACtAQGtAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxDbGFpbXMsIFJ1bnRpbWU+AA8ARENvbGxhdG9yU2VsZWN0aW9uBADNAQHZAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxDb2xsYXRvclNlbGVjdGlvbiwgUnVudGltZT4AFQAcU2Vzc2lvbgQA0QEBsQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8U2Vzc2lvbiwgUnVudGltZT4AFgAkWGNtcFF1ZXVlBADdAQG5AXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxYY21wUXVldWUsIFJ1bnRpbWU+AB4ALFBvbGthZG90WGNtBADhAQHBAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxQb2xrYWRvdFhjbSwgUnVudGltZT4AHwAoQ3VtdWx1c1hjbQQA4QMBvQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8Q3VtdWx1c1hjbSwgUnVudGltZT4AIABMVG9Qb2xrYWRvdFhjbVJvdXRlcgQA5QMB4QFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8VG9Qb2xrYWRvdFhjbVJvdXRlciwgUnVudGltZT4AIgAwTWVzc2FnZVF1ZXVlBADpAwHFAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxNZXNzYWdlUXVldWUsIFJ1bnRpbWU+ACMAHFV0aWxpdHkEAPEDAbEBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFV0aWxpdHksIFJ1bnRpbWU+ACgAIE11bHRpc2lnBAAZBAG1AXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxNdWx0aXNpZywgUnVudGltZT4AKQAUUHJveHkEACUEAakBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFByb3h5LCBSdW50aW1lPgAqAFRSZW1vdGVQcm94eVJlbGF5Q2hhaW4EADEEAekBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFJlbW90ZVByb3h5UmVsYXlDaGFpbiwgUnVudGltZT4AKwAcSW5kaWNlcwQAOQQBsQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8SW5kaWNlcywgUnVudGltZT4ALAAYQXNzZXRzBAA9BAGtAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxBc3NldHMsIFJ1bnRpbWU+ADIAHFVuaXF1ZXMEAEkEAbEBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFVuaXF1ZXMsIFJ1bnRpbWU+ADMAEE5mdHMEAGUEAaUBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPE5mdHMsIFJ1bnRpbWU+ADQANEZvcmVpZ25Bc3NldHMEAMUEAckBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPEZvcmVpZ25Bc3NldHMsIFJ1bnRpbWU+ADUAUE5mdEZyYWN0aW9uYWxpemF0aW9uBADVBAHlAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxOZnRGcmFjdGlvbmFsaXphdGlvbiwgUnVudGltZT4ANgAoUG9vbEFzc2V0cwQA2QQBvQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8UG9vbEFzc2V0cywgUnVudGltZT4ANwA8QXNzZXRDb252ZXJzaW9uBADdBAHRAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxBc3NldENvbnZlcnNpb24sIFJ1bnRpbWU+ADgAIFJlY292ZXJ5BADlBAG1AXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxSZWNvdmVyeSwgUnVudGltZT4AOQAcU29jaWV0eQQA9QQBsQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8U29jaWV0eSwgUnVudGltZT4AOgAYUmV2aXZlBAD5BAGtAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxSZXZpdmUsIFJ1bnRpbWU+ADwASFN0YXRlVHJpZU1pZ3JhdGlvbgQADQUB3QFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8U3RhdGVUcmllTWlncmF0aW9uLCBSdW50aW1lPgBGADxOb21pbmF0aW9uUG9vbHMEACUFAdEBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPE5vbWluYXRpb25Qb29scywgUnVudGltZT4AUAAkVm90ZXJMaXN0BABdBQG5AXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxWb3Rlckxpc3QsIFJ1bnRpbWU+AFIAPFN0YWtpbmdSY0NsaWVudAQAYQUB0QFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8U3Rha2luZ1JjQ2xpZW50LCBSdW50aW1lPgBUAEhNdWx0aUJsb2NrRWxlY3Rpb24EAIUFAd0Bc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPE11bHRpQmxvY2tFbGVjdGlvbiwgUnVudGltZT4AVQBoTXVsdGlCbG9ja0VsZWN0aW9uVmVyaWZpZXIEALkFAf0Bc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPE11bHRpQmxvY2tFbGVjdGlvblZlcmlmaWVyLCBSdW50aW1lPgBWAGhNdWx0aUJsb2NrRWxlY3Rpb25VbnNpZ25lZAQAvQUB/QFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8TXVsdGlCbG9ja0VsZWN0aW9uVW5zaWduZWQsIFJ1bnRpbWU+AFcAYE11bHRpQmxvY2tFbGVjdGlvblNpZ25lZAQA9QYB9QFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8TXVsdGlCbG9ja0VsZWN0aW9uU2lnbmVkLCBSdW50aW1lPgBYABxTdGFraW5nBAD9BgGxAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxTdGFraW5nLCBSdW50aW1lPgBZACBUcmVhc3VyeQQASQcBtQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8VHJlYXN1cnksIFJ1bnRpbWU+AFoAQENvbnZpY3Rpb25Wb3RpbmcEAFUHAdUBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPENvbnZpY3Rpb25Wb3RpbmcsIFJ1bnRpbWU+AFsAJFJlZmVyZW5kYQQAaQcBuQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8UmVmZXJlbmRhLCBSdW50aW1lPgBcACRXaGl0ZWxpc3QEAH0HAbkBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFdoaXRlbGlzdCwgUnVudGltZT4AXgAgQm91bnRpZXMEAIEHAbUBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPEJvdW50aWVzLCBSdW50aW1lPgBfADRDaGlsZEJvdW50aWVzBACFBwHJAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxDaGlsZEJvdW50aWVzLCBSdW50aW1lPgBgACRBc3NldFJhdGUEAIkHAbkBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPEFzc2V0UmF0ZSwgUnVudGltZT4AYQBITXVsdGlBc3NldEJvdW50aWVzBACRBwHdAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxNdWx0aUFzc2V0Qm91bnRpZXMsIFJ1bnRpbWU+AGIAFEFoT3BzBACVBwGpAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxBaE9wcywgUnVudGltZT4A/gAAJAwwZnJhbWVfc3lzdGVtGHBhbGxldBBDYWxsBARUAAEwGHJlbWFyawQBGHJlbWFyaxgBHFZlYzx1OD4AAAxoTWFrZSBzb21lIG9uLWNoYWluIHJlbWFyay4AiENhbiBiZSBleGVjdXRlZCBieSBldmVyeSBgb3JpZ2luYC44c2V0X2hlYXBfcGFnZXMEARRwYWdlcygBDHU2NAABBPhTZXQgdGhlIG51bWJlciBvZiBwYWdlcyBpbiB0aGUgV2ViQXNzZW1ibHkgZW52aXJvbm1lbnQncyBoZWFwLiBzZXRfY29kZQQBEGNvZGUYARxWZWM8dTg+AAIEZFNldCB0aGUgbmV3IHJ1bnRpbWUgY29kZS5cc2V0X2NvZGVfd2l0aG91dF9jaGVja3MEARBjb2RlGAEcVmVjPHU4PgADEBkBU2V0IHRoZSBuZXcgcnVudGltZSBjb2RlIHdpdGhvdXQgZG9pbmcgYW55IGNoZWNrcyBvZiB0aGUgZ2l2ZW4gYGNvZGVgLgBRAU5vdGUgdGhhdCBydW50aW1lIHVwZ3JhZGVzIHdpbGwgbm90IHJ1biBpZiB0aGlzIGlzIGNhbGxlZCB3aXRoIGEgbm90LWluY3JlYXNpbmcgc3BlYyB2ZXJzaW9uISxzZXRfc3RvcmFnZQQBFGl0ZW1zLAE0VmVjPEtleVZhbHVlPgAEBGhTZXQgc29tZSBpdGVtcyBvZiBzdG9yYWdlLjBraWxsX3N0b3JhZ2UEARBrZXlzNAEgVmVjPEtleT4ABQR0S2lsbCBzb21lIGl0ZW1zIGZyb20gc3RvcmFnZS4sa2lsbF9wcmVmaXgIARhwcmVmaXgYAQxLZXkAARxzdWJrZXlzOAEMdTMyAAYQEQFLaWxsIGFsbCBzdG9yYWdlIGl0ZW1zIHdpdGggYSBrZXkgdGhhdCBzdGFydHMgd2l0aCB0aGUgZ2l2ZW4gcHJlZml4LgA5ASoqTk9URToqKiBXZSByZWx5IG9uIHRoZSBSb290IG9yaWdpbiB0byBwcm92aWRlIHVzIHRoZSBudW1iZXIgb2Ygc3Via2V5cyB1bmRlcj0BdGhlIHByZWZpeCB3ZSBhcmUgcmVtb3ZpbmcgdG8gYWNjdXJhdGVseSBjYWxjdWxhdGUgdGhlIHdlaWdodCBvZiB0aGlzIGZ1bmN0aW9uLkRyZW1hcmtfd2l0aF9ldmVudAQBGHJlbWFyaxgBHFZlYzx1OD4ABwSkTWFrZSBzb21lIG9uLWNoYWluIHJlbWFyayBhbmQgZW1pdCBldmVudC4cZG9fdGFzawQBEHRhc2s8AThUOjpSdW50aW1lVGFzawAIAERhdXRob3JpemVfdXBncmFkZQQBJGNvZGVfaGFzaEABHFQ6Okhhc2gACRBhAUF1dGhvcml6ZSBhbiB1cGdyYWRlIHRvIGEgZ2l2ZW4gYGNvZGVfaGFzaGAgZm9yIHRoZSBydW50aW1lLiBUaGUgcnVudGltZSBjYW4gYmUgc3VwcGxpZWQYbGF0ZXIuAHxUaGlzIGNhbGwgcmVxdWlyZXMgUm9vdCBvcmlnaW4ugGF1dGhvcml6ZV91cGdyYWRlX3dpdGhvdXRfY2hlY2tzBAEkY29kZV9oYXNoQAEcVDo6SGFzaAAKIGEBQXV0aG9yaXplIGFuIHVwZ3JhZGUgdG8gYSBnaXZlbiBgY29kZV9oYXNoYCBmb3IgdGhlIHJ1bnRpbWUuIFRoZSBydW50aW1lIGNhbiBiZSBzdXBwbGllZBhsYXRlci4AXQFXQVJOSU5HOiBUaGlzIGF1dGhvcml6ZXMgYW4gdXBncmFkZSB0aGF0IHdpbGwgdGFrZSBwbGFjZSB3aXRob3V0IGFueSBzYWZldHkgY2hlY2tzLCBmb3JZAWV4YW1wbGUgdGhhdCB0aGUgc3BlYyBuYW1lIHJlbWFpbnMgdGhlIHNhbWUgYW5kIHRoYXQgdGhlIHZlcnNpb24gbnVtYmVyIGluY3JlYXNlcy4gTm908HJlY29tbWVuZGVkIGZvciBub3JtYWwgdXNlLiBVc2UgYGF1dGhvcml6ZV91cGdyYWRlYCBpbnN0ZWFkLgB8VGhpcyBjYWxsIHJlcXVpcmVzIFJvb3Qgb3JpZ2luLmBhcHBseV9hdXRob3JpemVkX3VwZ3JhZGUEARBjb2RlGAEcVmVjPHU4PgALJFUBUHJvdmlkZSB0aGUgcHJlaW1hZ2UgKHJ1bnRpbWUgYmluYXJ5KSBgY29kZWAgZm9yIGFuIHVwZ3JhZGUgdGhhdCBoYXMgYmVlbiBhdXRob3JpemVkLgBJAUlmIHRoZSBhdXRob3JpemF0aW9uIHJlcXVpcmVkIGEgdmVyc2lvbiBjaGVjaywgdGhpcyBjYWxsIHdpbGwgZW5zdXJlIHRoZSBzcGVjIG5hbWXocmVtYWlucyB1bmNoYW5nZWQgYW5kIHRoYXQgdGhlIHNwZWMgdmVyc2lvbiBoYXMgaW5jcmVhc2VkLgBZAURlcGVuZGluZyBvbiB0aGUgcnVudGltZSdzIGBPblNldENvZGVgIGNvbmZpZ3VyYXRpb24sIHRoaXMgZnVuY3Rpb24gbWF5IGRpcmVjdGx5IGFwcGx5EQF0aGUgbmV3IGBjb2RlYCBpbiB0aGUgc2FtZSBibG9jayBvciBhdHRlbXB0IHRvIHNjaGVkdWxlIHRoZSB1cGdyYWRlLgBgQWxsIG9yaWdpbnMgYXJlIGFsbG93ZWQuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLigAAAUGACwAAAIwADAAAAQIGBgANAAAAhgAOAAABQUAPAhgYXNzZXRfaHViX2t1c2FtYV9ydW50aW1lLFJ1bnRpbWVUYXNrAAEAAEAIPHByaW1pdGl2ZV90eXBlcxBIMjU2AAAEAAgBIFt1ODsgMzJdAABEDHxjdW11bHVzX3BhbGxldF9wYXJhY2hhaW5fc3lzdGVtGHBhbGxldBBDYWxsBARUAAEITHNldF92YWxpZGF0aW9uX2RhdGEIARBkYXRhSAFoQmFzaWNQYXJhY2hhaW5JbmhlcmVudERhdGEAAVRpbmJvdW5kX21lc3NhZ2VzX2RhdGGAAUxJbmJvdW5kTWVzc2FnZXNEYXRhAAAkgFNldCB0aGUgY3VycmVudCB2YWxpZGF0aW9uIGRhdGEuAEEBVGhpcyBzaG91bGQgYmUgaW52b2tlZCBleGFjdGx5IG9uY2UgcGVyIGJsb2NrLiBJdCB3aWxsIHBhbmljIGF0IHRoZSBmaW5hbGl6YXRpb26IcGhhc2UgaWYgdGhlIGNhbGwgd2FzIG5vdCBpbnZva2VkLgDQVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgYEluaGVyZW50YAAhAUFzIGEgc2lkZSBlZmZlY3QsIHRoaXMgZnVuY3Rpb24gdXBncmFkZXMgdGhlIGN1cnJlbnQgdmFsaWRhdGlvbiBmdW5jdGlvboRpZiB0aGUgYXBwcm9wcmlhdGUgdGltZSBoYXMgY29tZS5gc3Vkb19zZW5kX3Vwd2FyZF9tZXNzYWdlBAEcbWVzc2FnZRgBNFVwd2FyZE1lc3NhZ2UAAQAEDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuSAx8Y3VtdWx1c19wYWxsZXRfcGFyYWNoYWluX3N5c3RlbUhwYXJhY2hhaW5faW5oZXJlbnRoQmFzaWNQYXJhY2hhaW5JbmhlcmVudERhdGEAABABPHZhbGlkYXRpb25fZGF0YUwBXFBlcnNpc3RlZFZhbGlkYXRpb25EYXRhAAFEcmVsYXlfY2hhaW5fc3RhdGVUAVRzcF90cmllOjpTdG9yYWdlUHJvb2YAAWByZWxheV9wYXJlbnRfZGVzY2VuZGFudHNcAUBWZWM8UmVsYXlIZWFkZXI+AAFAY29sbGF0b3JfcGVlcl9pZHgBWE9wdGlvbjxBcHByb3ZlZFBlZXJJZD4AAEwMTHBvbGthZG90X3ByaW1pdGl2ZXMIdjlcUGVyc2lzdGVkVmFsaWRhdGlvbkRhdGEIBEgBQAROATgAEAEscGFyZW50X2hlYWRQASBIZWFkRGF0YQABTHJlbGF5X3BhcmVudF9udW1iZXI4AQROAAFkcmVsYXlfcGFyZW50X3N0b3JhZ2Vfcm9vdEABBEgAATBtYXhfcG92X3NpemU4AQx1MzIAAFAMdHBvbGthZG90X3BhcmFjaGFpbl9wcmltaXRpdmVzKHByaW1pdGl2ZXMgSGVhZERhdGEAAAQAGAEcVmVjPHU4PgAAVAwcc3BfdHJpZTRzdG9yYWdlX3Byb29mMFN0b3JhZ2VQcm9vZgAABAEodHJpZV9ub2Rlc1gBREJUcmVlU2V0PFZlYzx1OD4+AABYBCBCVHJlZVNldAQEVAEYAAQANAAAAFwAAAJgAGAQKHNwX3J1bnRpbWUcZ2VuZXJpYxhoZWFkZXIYSGVhZGVyCBhOdW1iZXIBOBBIYXNoAAAUASxwYXJlbnRfaGFzaEABMEhhc2g6Ok91dHB1dAABGG51bWJlcmQBGE51bWJlcgABKHN0YXRlX3Jvb3RAATBIYXNoOjpPdXRwdXQAATxleHRyaW5zaWNzX3Jvb3RAATBIYXNoOjpPdXRwdXQAARhkaWdlc3RoARhEaWdlc3QAAGQAAAY4AGgQKHNwX3J1bnRpbWUcZ2VuZXJpYxhkaWdlc3QYRGlnZXN0AAAEARBsb2dzbAE8VmVjPERpZ2VzdEl0ZW0+AABsAAACcABwEChzcF9ydW50aW1lHGdlbmVyaWMYZGlnZXN0KERpZ2VzdEl0ZW0AARQoUHJlUnVudGltZQgAdAFEQ29uc2Vuc3VzRW5naW5lSWQAABgBHFZlYzx1OD4ABgAkQ29uc2Vuc3VzCAB0AURDb25zZW5zdXNFbmdpbmVJZAAAGAEcVmVjPHU4PgAEABBTZWFsCAB0AURDb25zZW5zdXNFbmdpbmVJZAAAGAEcVmVjPHU4PgAFABRPdGhlcgQAGAEcVmVjPHU4PgAAAGRSdW50aW1lRW52aXJvbm1lbnRVcGRhdGVkAAgAAHQAAAMEAAAADAB4BBhPcHRpb24EBFQBfAEIEE5vbmUAAAAQU29tZQQAfAAAAQAAfAxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQwEUwAABAAYARhWZWM8VD4AAIAMfGN1bXVsdXNfcGFsbGV0X3BhcmFjaGFpbl9zeXN0ZW1IcGFyYWNoYWluX2luaGVyZW50TEluYm91bmRNZXNzYWdlc0RhdGEAAAgBRGRvd253YXJkX21lc3NhZ2VzhAF8QWJyaWRnZWRJbmJvdW5kRG93bndhcmRNZXNzYWdlcwABTGhvcml6b250YWxfbWVzc2FnZXOYAWxBYnJpZGdlZEluYm91bmRIcm1wTWVzc2FnZXMAAIQMfGN1bXVsdXNfcGFsbGV0X3BhcmFjaGFpbl9zeXN0ZW1IcGFyYWNoYWluX2luaGVyZW50hEFicmlkZ2VkSW5ib3VuZE1lc3NhZ2VzQ29sbGVjdGlvbgQcTWVzc2FnZQGIAAgBNGZ1bGxfbWVzc2FnZXOMATBWZWM8TWVzc2FnZT4AATxoYXNoZWRfbWVzc2FnZXOQAXxWZWM8TWVzc2FnZTo6Q29tcHJlc3NlZE1lc3NhZ2U+AACICGBwb2xrYWRvdF9jb3JlX3ByaW1pdGl2ZXNYSW5ib3VuZERvd253YXJkTWVzc2FnZQQsQmxvY2tOdW1iZXIBOAAIARxzZW50X2F0OAEsQmxvY2tOdW1iZXIAAQxtc2cYATxEb3dud2FyZE1lc3NhZ2UAAIwAAAKIAJAAAAKUAJQIlGN1bXVsdXNfcHJpbWl0aXZlc19wYXJhY2hhaW5faW5oZXJlbnQ0SGFzaGVkTWVzc2FnZQAACAEcc2VudF9hdDgBVFJlbGF5Q2hhaW5CbG9ja051bWJlcgABIG1zZ19oYXNoQAE0c3BfY29yZTo6SDI1NgAAmAx8Y3VtdWx1c19wYWxsZXRfcGFyYWNoYWluX3N5c3RlbUhwYXJhY2hhaW5faW5oZXJlbnSEQWJyaWRnZWRJbmJvdW5kTWVzc2FnZXNDb2xsZWN0aW9uBBxNZXNzYWdlAZwACAE0ZnVsbF9tZXNzYWdlc6gBMFZlYzxNZXNzYWdlPgABPGhhc2hlZF9tZXNzYWdlc6wBfFZlYzxNZXNzYWdlOjpDb21wcmVzc2VkTWVzc2FnZT4AAJwAAAQIoKQAoAx0cG9sa2Fkb3RfcGFyYWNoYWluX3ByaW1pdGl2ZXMocHJpbWl0aXZlcwhJZAAABAA4AQx1MzIAAKQIYHBvbGthZG90X2NvcmVfcHJpbWl0aXZlc0hJbmJvdW5kSHJtcE1lc3NhZ2UELEJsb2NrTnVtYmVyATgACAEcc2VudF9hdDgBLEJsb2NrTnVtYmVyAAEQZGF0YRgBTGFsbG9jOjp2ZWM6OlZlYzx1OD4AAKgAAAKcAKwAAAKwALAAAAQIoJQAtAxAcGFsbGV0X3RpbWVzdGFtcBhwYWxsZXQQQ2FsbAQEVAABBAxzZXQEAQxub3e4ASRUOjpNb21lbnQAAExUU2V0IHRoZSBjdXJyZW50IHRpbWUuAFUBVGhpcyBjYWxsIHNob3VsZCBiZSBpbnZva2VkIGV4YWN0bHkgb25jZSBwZXIgYmxvY2suIEl0IHdpbGwgcGFuaWMgYXQgdGhlIGZpbmFsaXphdGlvbtRwaGFzZSwgaWYgdGhpcyBjYWxsIGhhc24ndCBiZWVuIGludm9rZWQgYnkgdGhhdCB0aW1lLgBBAVRoZSB0aW1lc3RhbXAgc2hvdWxkIGJlIGdyZWF0ZXIgdGhhbiB0aGUgcHJldmlvdXMgb25lIGJ5IHRoZSBhbW91bnQgc3BlY2lmaWVkIGJ5aFtgQ29uZmlnOjpNaW5pbXVtUGVyaW9kYF0uAMRUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfTm9uZV8uAFEBVGhpcyBkaXNwYXRjaCBjbGFzcyBpcyBfTWFuZGF0b3J5XyB0byBlbnN1cmUgaXQgZ2V0cyBleGVjdXRlZCBpbiB0aGUgYmxvY2suIEJlIGF3YXJlUQF0aGF0IGNoYW5naW5nIHRoZSBjb21wbGV4aXR5IG9mIHRoaXMgY2FsbCBjb3VsZCByZXN1bHQgZXhoYXVzdGluZyB0aGUgcmVzb3VyY2VzIGluIGGEYmxvY2sgdG8gZXhlY3V0ZSBhbnkgb3RoZXIgY2FsbHMuADQjIyBDb21wbGV4aXR5MQEtIGBPKDEpYCAoTm90ZSB0aGF0IGltcGxlbWVudGF0aW9ucyBvZiBgT25UaW1lc3RhbXBTZXRgIG11c3QgYWxzbyBiZSBgTygxKWApVQEtIDEgc3RvcmFnZSByZWFkIGFuZCAxIHN0b3JhZ2UgbXV0YXRpb24gKGNvZGVjIGBPKDEpYCBiZWNhdXNlIG9mIGBEaWRVcGRhdGU6OnRha2VgIGluQCAgYG9uX2ZpbmFsaXplYCnULSAxIGV2ZW50IGhhbmRsZXIgYG9uX3RpbWVzdGFtcF9zZXRgLiBNdXN0IGJlIGBPKDEpYC4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuuAAABigAvAxYc3RhZ2luZ19wYXJhY2hhaW5faW5mbxhwYWxsZXQQQ2FsbAQEVAABAAQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy7ADERwYWxsZXRfbWlncmF0aW9ucxhwYWxsZXQQQ2FsbAQEVAABEEBmb3JjZV9zZXRfY3Vyc29yBAEYY3Vyc29yxAFMT3B0aW9uPEN1cnNvck9mPFQ+PgAAFF0BQWxsb3dzIHJvb3QgdG8gc2V0IGEgY3Vyc29yIHRvIGZvcmNlZnVsbHkgc3RhcnQsIHN0b3Agb3IgZm9yd2FyZCB0aGUgbWlncmF0aW9uIHByb2Nlc3MuAEkBU2hvdWxkIG5vcm1hbGx5IG5vdCBiZSBuZWVkZWQgYW5kIGlzIG9ubHkgaW4gcGxhY2UgYXMgZW1lcmdlbmN5IG1lYXN1cmUuIE5vdGUgdGhhdAUBcmVzdGFydGluZyB0aGUgbWlncmF0aW9uIHByb2Nlc3MgaW4gdGhpcyBtYW5uZXIgd2lsbCBub3QgY2FsbCB0aGUtAVtgTWlncmF0aW9uU3RhdHVzSGFuZGxlcjo6c3RhcnRlZGBdIGhvb2sgb3IgZW1pdCBhbiBgVXBncmFkZVN0YXJ0ZWRgIGV2ZW50Llxmb3JjZV9zZXRfYWN0aXZlX2N1cnNvcgwBFGluZGV4OAEMdTMyAAEwaW5uZXJfY3Vyc29y1AFYT3B0aW9uPFJhd0N1cnNvck9mPFQ+PgABKHN0YXJ0ZWRfYXTYAWRPcHRpb248QmxvY2tOdW1iZXJGb3I8VD4+AAEYWQFBbGxvd3Mgcm9vdCB0byBzZXQgYW4gYWN0aXZlIGN1cnNvciB0byBmb3JjZWZ1bGx5IHN0YXJ0L2ZvcndhcmQgdGhlIG1pZ3JhdGlvbiBwcm9jZXNzLgBFAVRoaXMgaXMgYW4gZWRnZS1jYXNlIHZlcnNpb24gb2YgW2BTZWxmOjpmb3JjZV9zZXRfY3Vyc29yYF0gdGhhdCBhbGxvd3MgdG8gc2V0IHRoZWEBYHN0YXJ0ZWRfYXRgIHZhbHVlIHRvIHRoZSBuZXh0IGJsb2NrIG51bWJlci4gT3RoZXJ3aXNlIHRoaXMgd291bGQgbm90IGJlIHBvc3NpYmxlLCBzaW5jZUUBYGZvcmNlX3NldF9jdXJzb3JgIHRha2VzIGFuIGFic29sdXRlIGJsb2NrIG51bWJlci4gU2V0dGluZyBgc3RhcnRlZF9hdGAgdG8gYE5vbmVgAQFpbmRpY2F0ZXMgdGhhdCB0aGUgY3VycmVudCBibG9jayBudW1iZXIgcGx1cyBvbmUgc2hvdWxkIGJlIHVzZWQuSGZvcmNlX29uYm9hcmRfbWJtcwACEKBGb3JjZXMgdGhlIG9uYm9hcmRpbmcgb2YgdGhlIG1pZ3JhdGlvbnMuAF0BVGhpcyBwcm9jZXNzIGhhcHBlbnMgYXV0b21hdGljYWxseSBvbiBhIHJ1bnRpbWUgdXBncmFkZS4gSXQgaXMgaW4gcGxhY2UgYXMgYW4gZW1lcmdlbmN5/G1lYXN1cmVtZW50LiBUaGUgY3Vyc29yIG5lZWRzIHRvIGJlIGBOb25lYCBmb3IgdGhpcyB0byBzdWNjZWVkLjhjbGVhcl9oaXN0b3JpYwQBIHNlbGVjdG9y3AGgSGlzdG9yaWNDbGVhbnVwU2VsZWN0b3I8SWRlbnRpZmllck9mPFQ+PgADFGhDbGVhcnMgdGhlIGBIaXN0b3JpY2Agc2V0LgANAWBtYXBfY3Vyc29yYCBtdXN0IGJlIHNldCB0byB0aGUgbGFzdCB2YWx1ZSB0aGF0IHdhcyByZXR1cm5lZCBieSB0aGVdAWBIaXN0b3JpY0NsZWFyZWRgIGV2ZW50LiBUaGUgZmlyc3QgdGltZSBgTm9uZWAgY2FuIGJlIHVzZWQuIGBsaW1pdGAgbXVzdCBiZSBjaG9zZW4gaW4gYah3YXkgdGhhdCB3aWxsIHJlc3VsdCBpbiBhIHNlbnNpYmxlIHdlaWdodC4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuxAQYT3B0aW9uBARUAcgBCBBOb25lAAAAEFNvbWUEAMgAAAEAAMgIRHBhbGxldF9taWdyYXRpb25zPE1pZ3JhdGlvbkN1cnNvcggYQ3Vyc29yAcwsQmxvY2tOdW1iZXIBOAEIGEFjdGl2ZQQA0AGEQWN0aXZlQ3Vyc29yPEN1cnNvciwgQmxvY2tOdW1iZXI+AAAAFFN0dWNrAAEAAMwMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AADQCERwYWxsZXRfbWlncmF0aW9uczBBY3RpdmVDdXJzb3IIGEN1cnNvcgHMLEJsb2NrTnVtYmVyATgADAEUaW5kZXg4AQx1MzIAATBpbm5lcl9jdXJzb3LUAThPcHRpb248Q3Vyc29yPgABKHN0YXJ0ZWRfYXQ4ASxCbG9ja051bWJlcgAA1AQYT3B0aW9uBARUAcwBCBBOb25lAAAAEFNvbWUEAMwAAAEAANgEGE9wdGlvbgQEVAE4AQgQTm9uZQAAABBTb21lBAA4AAABAADcCERwYWxsZXRfbWlncmF0aW9uc1xIaXN0b3JpY0NsZWFudXBTZWxlY3RvcgQISWQB4AEIIFNwZWNpZmljBADkARxWZWM8SWQ+AAAAIFdpbGRjYXJkCAEUbGltaXTYASxPcHRpb248dTMyPgABPHByZXZpb3VzX2N1cnNvcugBPE9wdGlvbjxWZWM8dTg+PgABAADgDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBDARTAAAEABgBGFZlYzxUPgAA5AAAAuAA6AQYT3B0aW9uBARUARgBCBBOb25lAAAAEFNvbWUEABgAAAEAAOwMPHBhbGxldF9wcmVpbWFnZRhwYWxsZXQQQ2FsbAQEVAABFDRub3RlX3ByZWltYWdlBAEUYnl0ZXMYARxWZWM8dTg+AAAQdFJlZ2lzdGVyIGEgcHJlaW1hZ2Ugb24tY2hhaW4uAFUBSWYgdGhlIHByZWltYWdlIHdhcyBwcmV2aW91c2x5IHJlcXVlc3RlZCwgbm8gZmVlcyBvciBkZXBvc2l0cyBhcmUgdGFrZW4gZm9yIHByb3ZpZGluZ1UBdGhlIHByZWltYWdlLiBPdGhlcndpc2UsIGEgZGVwb3NpdCBpcyB0YWtlbiBwcm9wb3J0aW9uYWwgdG8gdGhlIHNpemUgb2YgdGhlIHByZWltYWdlLjx1bm5vdGVfcHJlaW1hZ2UEARBoYXNoQAEcVDo6SGFzaAABGNxDbGVhciBhbiB1bnJlcXVlc3RlZCBwcmVpbWFnZSBmcm9tIHRoZSBydW50aW1lIHN0b3JhZ2UuAPxJZiBgbGVuYCBpcyBwcm92aWRlZCwgdGhlbiBpdCB3aWxsIGJlIGEgbXVjaCBjaGVhcGVyIG9wZXJhdGlvbi4AAQEtIGBoYXNoYDogVGhlIGhhc2ggb2YgdGhlIHByZWltYWdlIHRvIGJlIHJlbW92ZWQgZnJvbSB0aGUgc3RvcmUuuC0gYGxlbmA6IFRoZSBsZW5ndGggb2YgdGhlIHByZWltYWdlIG9mIGBoYXNoYC5AcmVxdWVzdF9wcmVpbWFnZQQBEGhhc2hAARxUOjpIYXNoAAIQQQFSZXF1ZXN0IGEgcHJlaW1hZ2UgYmUgdXBsb2FkZWQgdG8gdGhlIGNoYWluIHdpdGhvdXQgcGF5aW5nIGFueSBmZWVzIG9yIGRlcG9zaXRzLgBVAUlmIHRoZSBwcmVpbWFnZSByZXF1ZXN0cyBoYXMgYWxyZWFkeSBiZWVuIHByb3ZpZGVkIG9uLWNoYWluLCB3ZSB1bnJlc2VydmUgYW55IGRlcG9zaXQ5AWEgdXNlciBtYXkgaGF2ZSBwYWlkLCBhbmQgdGFrZSB0aGUgY29udHJvbCBvZiB0aGUgcHJlaW1hZ2Ugb3V0IG9mIHRoZWlyIGhhbmRzLkh1bnJlcXVlc3RfcHJlaW1hZ2UEARBoYXNoQAEcVDo6SGFzaAADDLxDbGVhciBhIHByZXZpb3VzbHkgbWFkZSByZXF1ZXN0IGZvciBhIHByZWltYWdlLgAtAU5PVEU6IFRISVMgTVVTVCBOT1QgQkUgQ0FMTEVEIE9OIGBoYXNoYCBNT1JFIFRJTUVTIFRIQU4gYHJlcXVlc3RfcHJlaW1hZ2VgLjhlbnN1cmVfdXBkYXRlZAQBGGhhc2hlc/ABMFZlYzxUOjpIYXNoPgAEDLxFbnN1cmUgdGhhdCB0aGUgYnVsayBvZiBwcmUtaW1hZ2VzIGlzIHVwZ3JhZGVkLgA9AVRoZSBjYWxsZXIgcGF5cyBubyBmZWUgaWYgYXQgbGVhc3QgOTAlIG9mIHByZS1pbWFnZXMgd2VyZSBzdWNjZXNzZnVsbHkgdXBkYXRlZC4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMu8AAAAkAA9AxAcGFsbGV0X3NjaGVkdWxlchhwYWxsZXQQQ2FsbAQEVAABKCBzY2hlZHVsZRABEHdoZW44AURCbG9ja051bWJlckZvcjxUPgABOG1heWJlX3BlcmlvZGlj+AGsT3B0aW9uPHNjaGVkdWxlOjpQZXJpb2Q8QmxvY2tOdW1iZXJGb3I8VD4+PgABIHByaW9yaXR5DAFIc2NoZWR1bGU6OlByaW9yaXR5AAEQY2FsbCABfEJveDw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4AAARwQW5vbnltb3VzbHkgc2NoZWR1bGUgYSB0YXNrLhhjYW5jZWwIARB3aGVuOAFEQmxvY2tOdW1iZXJGb3I8VD4AARRpbmRleDgBDHUzMgABEGEBQ2FuY2VsIGEgc2NoZWR1bGVkIHRhc2sgKG5hbWVkIG9yIGFub255bW91cyksIGJ5IHByb3ZpZGluZyB0aGUgYmxvY2sgaXQgaXMgc2NoZWR1bGVkIGZvchkBZXhlY3V0aW9uIGluLCBhcyB3ZWxsIGFzIHRoZSBpbmRleCBvZiB0aGUgdGFzayBpbiB0aGF0IGJsb2NrJ3MgYWdlbmRhLgA1AUluIHRoZSBjYXNlIG9mIGEgbmFtZWQgdGFzaywgaXQgd2lsbCByZW1vdmUgaXQgZnJvbSB0aGUgbG9va3VwIHRhYmxlIGFzIHdlbGwuOHNjaGVkdWxlX25hbWVkFAEIaWQIASBUYXNrTmFtZQABEHdoZW44AURCbG9ja051bWJlckZvcjxUPgABOG1heWJlX3BlcmlvZGlj+AGsT3B0aW9uPHNjaGVkdWxlOjpQZXJpb2Q8QmxvY2tOdW1iZXJGb3I8VD4+PgABIHByaW9yaXR5DAFIc2NoZWR1bGU6OlByaW9yaXR5AAEQY2FsbCABfEJveDw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4AAgRYU2NoZWR1bGUgYSBuYW1lZCB0YXNrLjBjYW5jZWxfbmFtZWQEAQhpZAgBIFRhc2tOYW1lAAMEeENhbmNlbCBhIG5hbWVkIHNjaGVkdWxlZCB0YXNrLjhzY2hlZHVsZV9hZnRlchABFGFmdGVyOAFEQmxvY2tOdW1iZXJGb3I8VD4AAThtYXliZV9wZXJpb2RpY/gBrE9wdGlvbjxzY2hlZHVsZTo6UGVyaW9kPEJsb2NrTnVtYmVyRm9yPFQ+Pj4AASBwcmlvcml0eQwBSHNjaGVkdWxlOjpQcmlvcml0eQABEGNhbGwgAXxCb3g8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AAQEqEFub255bW91c2x5IHNjaGVkdWxlIGEgdGFzayBhZnRlciBhIGRlbGF5LlBzY2hlZHVsZV9uYW1lZF9hZnRlchQBCGlkCAEgVGFza05hbWUAARRhZnRlcjgBREJsb2NrTnVtYmVyRm9yPFQ+AAE4bWF5YmVfcGVyaW9kaWP4AaxPcHRpb248c2NoZWR1bGU6OlBlcmlvZDxCbG9ja051bWJlckZvcjxUPj4+AAEgcHJpb3JpdHkMAUhzY2hlZHVsZTo6UHJpb3JpdHkAARBjYWxsIAF8Qm94PDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgAFBJBTY2hlZHVsZSBhIG5hbWVkIHRhc2sgYWZ0ZXIgYSBkZWxheS4kc2V0X3JldHJ5DAEQdGFza/wBeFRhc2tBZGRyZXNzPEJsb2NrTnVtYmVyRm9yPFQ+PgABHHJldHJpZXMMAQh1OAABGHBlcmlvZDgBREJsb2NrTnVtYmVyRm9yPFQ+AAY4WQFTZXQgYSByZXRyeSBjb25maWd1cmF0aW9uIGZvciBhIHRhc2sgc28gdGhhdCwgaW4gY2FzZSBpdHMgc2NoZWR1bGVkIHJ1biBmYWlscywgaXQgd2lsbFUBYmUgcmV0cmllZCBhZnRlciBgcGVyaW9kYCBibG9ja3MsIGZvciBhIHRvdGFsIGFtb3VudCBvZiBgcmV0cmllc2AgcmV0cmllcyBvciB1bnRpbCBpdCRzdWNjZWVkcy4AVQFUYXNrcyB3aGljaCBuZWVkIHRvIGJlIHNjaGVkdWxlZCBmb3IgYSByZXRyeSBhcmUgc3RpbGwgc3ViamVjdCB0byB3ZWlnaHQgbWV0ZXJpbmcgYW5kUQFhZ2VuZGEgc3BhY2UsIHNhbWUgYXMgYSByZWd1bGFyIHRhc2suIElmIGEgcGVyaW9kaWMgdGFzayBmYWlscywgaXQgd2lsbCBiZSBzY2hlZHVsZWSQbm9ybWFsbHkgd2hpbGUgdGhlIHRhc2sgaXMgcmV0cnlpbmcuAFEBVGFza3Mgc2NoZWR1bGVkIGFzIGEgcmVzdWx0IG9mIGEgcmV0cnkgZm9yIGEgcGVyaW9kaWMgdGFzayBhcmUgdW5uYW1lZCwgbm9uLXBlcmlvZGljPQFjbG9uZXMgb2YgdGhlIG9yaWdpbmFsIHRhc2suIFRoZWlyIHJldHJ5IGNvbmZpZ3VyYXRpb24gd2lsbCBiZSBkZXJpdmVkIGZyb20gdGhlTQFvcmlnaW5hbCB0YXNrJ3MgY29uZmlndXJhdGlvbiwgYnV0IHdpbGwgaGF2ZSBhIGxvd2VyIHZhbHVlIGZvciBgcmVtYWluaW5nYCB0aGFuIHRoZWRvcmlnaW5hbCBgdG90YWxfcmV0cmllc2AuAC0BVGhpcyBjYWxsICoqY2Fubm90KiogYmUgdXNlZCB0byBzZXQgYSByZXRyeSBjb25maWd1cmF0aW9uIGZvciBhIG5hbWVkIHRhc2suPHNldF9yZXRyeV9uYW1lZAwBCGlkCAEgVGFza05hbWUAARxyZXRyaWVzDAEIdTgAARhwZXJpb2Q4AURCbG9ja051bWJlckZvcjxUPgAHOF0BU2V0IGEgcmV0cnkgY29uZmlndXJhdGlvbiBmb3IgYSBuYW1lZCB0YXNrIHNvIHRoYXQsIGluIGNhc2UgaXRzIHNjaGVkdWxlZCBydW4gZmFpbHMsIGl0XQF3aWxsIGJlIHJldHJpZWQgYWZ0ZXIgYHBlcmlvZGAgYmxvY2tzLCBmb3IgYSB0b3RhbCBhbW91bnQgb2YgYHJldHJpZXNgIHJldHJpZXMgb3IgdW50aWwwaXQgc3VjY2VlZHMuAFUBVGFza3Mgd2hpY2ggbmVlZCB0byBiZSBzY2hlZHVsZWQgZm9yIGEgcmV0cnkgYXJlIHN0aWxsIHN1YmplY3QgdG8gd2VpZ2h0IG1ldGVyaW5nIGFuZFEBYWdlbmRhIHNwYWNlLCBzYW1lIGFzIGEgcmVndWxhciB0YXNrLiBJZiBhIHBlcmlvZGljIHRhc2sgZmFpbHMsIGl0IHdpbGwgYmUgc2NoZWR1bGVkkG5vcm1hbGx5IHdoaWxlIHRoZSB0YXNrIGlzIHJldHJ5aW5nLgBRAVRhc2tzIHNjaGVkdWxlZCBhcyBhIHJlc3VsdCBvZiBhIHJldHJ5IGZvciBhIHBlcmlvZGljIHRhc2sgYXJlIHVubmFtZWQsIG5vbi1wZXJpb2RpYz0BY2xvbmVzIG9mIHRoZSBvcmlnaW5hbCB0YXNrLiBUaGVpciByZXRyeSBjb25maWd1cmF0aW9uIHdpbGwgYmUgZGVyaXZlZCBmcm9tIHRoZU0Bb3JpZ2luYWwgdGFzaydzIGNvbmZpZ3VyYXRpb24sIGJ1dCB3aWxsIGhhdmUgYSBsb3dlciB2YWx1ZSBmb3IgYHJlbWFpbmluZ2AgdGhhbiB0aGVkb3JpZ2luYWwgYHRvdGFsX3JldHJpZXNgLgANAVRoaXMgaXMgdGhlIG9ubHkgd2F5IHRvIHNldCBhIHJldHJ5IGNvbmZpZ3VyYXRpb24gZm9yIGEgbmFtZWQgdGFzay4wY2FuY2VsX3JldHJ5BAEQdGFza/wBeFRhc2tBZGRyZXNzPEJsb2NrTnVtYmVyRm9yPFQ+PgAIBKhSZW1vdmVzIHRoZSByZXRyeSBjb25maWd1cmF0aW9uIG9mIGEgdGFzay5IY2FuY2VsX3JldHJ5X25hbWVkBAEIaWQIASBUYXNrTmFtZQAJBLxDYW5jZWwgdGhlIHJldHJ5IGNvbmZpZ3VyYXRpb24gb2YgYSBuYW1lZCB0YXNrLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy74BBhPcHRpb24EBFQB/AEIEE5vbmUAAAAQU29tZQQA/AAAAQAA/AAABAg4OAABAQxEcGFsbGV0X3BhcmFtZXRlcnMYcGFsbGV0EENhbGwEBFQAAQQ0c2V0X3BhcmFtZXRlcgQBJGtleV92YWx1ZQUBAVBUOjpSdW50aW1lUGFyYW1ldGVycwAAEHRTZXQgdGhlIHZhbHVlIG9mIGEgcGFyYW1ldGVyLgBVAVRoZSBkaXNwYXRjaCBvcmlnaW4gb2YgdGhpcyBjYWxsIG11c3QgYmUgYEFkbWluT3JpZ2luYCBmb3IgdGhlIGdpdmVuIGBrZXlgLiBWYWx1ZXMgYmWIZGVsZXRlZCBieSBzZXR0aW5nIHRoZW0gdG8gYE5vbmVgLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy4FAQhgYXNzZXRfaHViX2t1c2FtYV9ydW50aW1lRFJ1bnRpbWVQYXJhbWV0ZXJzAAEUIElzc3VhbmNlBAAJAQGQZHluYW1pY19wYXJhbXM6Omlzc3VhbmNlOjpQYXJhbWV0ZXJzAAAAIFRyZWFzdXJ5BAAlAQGQZHluYW1pY19wYXJhbXM6OnRyZWFzdXJ5OjpQYXJhbWV0ZXJzAAEAPFN0YWtpbmdFbGVjdGlvbgQARQEBsGR5bmFtaWNfcGFyYW1zOjpzdGFraW5nX2VsZWN0aW9uOjpQYXJhbWV0ZXJzAAIAJFNjaGVkdWxlcgQAaQEBlGR5bmFtaWNfcGFyYW1zOjpzY2hlZHVsZXI6OlBhcmFtZXRlcnMAAwAwTWVzc2FnZVF1ZXVlBAB9AQGkZHluYW1pY19wYXJhbXM6Om1lc3NhZ2VfcXVldWU6OlBhcmFtZXRlcnMABAAACQEQYGFzc2V0X2h1Yl9rdXNhbWFfcnVudGltZThkeW5hbWljX3BhcmFtcyBpc3N1YW5jZShQYXJhbWV0ZXJzAAEQME1pbkluZmxhdGlvbggADQEBME1pbkluZmxhdGlvbgAAEQEBTE9wdGlvbjxQZXJxdWludGlsbD4AAAAwTWF4SW5mbGF0aW9uCAAZAQEwTWF4SW5mbGF0aW9uAAARAQFMT3B0aW9uPFBlcnF1aW50aWxsPgABAChJZGVhbFN0YWtlCAAdAQEoSWRlYWxTdGFrZQAAEQEBTE9wdGlvbjxQZXJxdWludGlsbD4AAgAcRmFsbG9mZggAIQEBHEZhbGxvZmYAABEBAUxPcHRpb248UGVycXVpbnRpbGw+AAMAAA0BEGBhc3NldF9odWJfa3VzYW1hX3J1bnRpbWU4ZHluYW1pY19wYXJhbXMgaXNzdWFuY2UwTWluSW5mbGF0aW9uAAAAABEBBBhPcHRpb24EBFQBFQEBCBBOb25lAAAAEFNvbWUEABUBAAABAAAVAQw0c3BfYXJpdGhtZXRpYyhwZXJfdGhpbmdzLFBlcnF1aW50aWxsAAAEACgBDHU2NAAAGQEQYGFzc2V0X2h1Yl9rdXNhbWFfcnVudGltZThkeW5hbWljX3BhcmFtcyBpc3N1YW5jZTBNYXhJbmZsYXRpb24AAAAAHQEQYGFzc2V0X2h1Yl9rdXNhbWFfcnVudGltZThkeW5hbWljX3BhcmFtcyBpc3N1YW5jZShJZGVhbFN0YWtlAAAAACEBEGBhc3NldF9odWJfa3VzYW1hX3J1bnRpbWU4ZHluYW1pY19wYXJhbXMgaXNzdWFuY2UcRmFsbG9mZgAAAAAlARBgYXNzZXRfaHViX2t1c2FtYV9ydW50aW1lOGR5bmFtaWNfcGFyYW1zIHRyZWFzdXJ5KFBhcmFtZXRlcnMAAQgsQnVyblBvcnRpb24IACkBASxCdXJuUG9ydGlvbgAALQEBPE9wdGlvbjxQZXJtaWxsPgAAADxCdXJuRGVzdGluYXRpb24IADUBATxCdXJuRGVzdGluYXRpb24AADkBAbxPcHRpb248Y3JhdGU6OnRyZWFzdXJ5OjpCdXJuRGVzdGluYXRpb25BY2NvdW50PgABAAApARBgYXNzZXRfaHViX2t1c2FtYV9ydW50aW1lOGR5bmFtaWNfcGFyYW1zIHRyZWFzdXJ5LEJ1cm5Qb3J0aW9uAAAAAC0BBBhPcHRpb24EBFQBMQEBCBBOb25lAAAAEFNvbWUEADEBAAABAAAxAQw0c3BfYXJpdGhtZXRpYyhwZXJfdGhpbmdzHFBlcm1pbGwAAAQAOAEMdTMyAAA1ARBgYXNzZXRfaHViX2t1c2FtYV9ydW50aW1lOGR5bmFtaWNfcGFyYW1zIHRyZWFzdXJ5PEJ1cm5EZXN0aW5hdGlvbgAAAAA5AQQYT3B0aW9uBARUAT0BAQgQTm9uZQAAABBTb21lBAA9AQAAAQAAPQEMYGFzc2V0X2h1Yl9rdXNhbWFfcnVudGltZSB0cmVhc3VyeVhCdXJuRGVzdGluYXRpb25BY2NvdW50AAAEAEEBAaxPcHRpb248cG9sa2Fkb3RfY29yZV9wcmltaXRpdmVzOjpBY2NvdW50SWQ+AABBAQQYT3B0aW9uBARUAQQBCBBOb25lAAAAEFNvbWUEAAQAAAEAAEUBEGBhc3NldF9odWJfa3VzYW1hX3J1bnRpbWU4ZHluYW1pY19wYXJhbXNAc3Rha2luZ19lbGVjdGlvbihQYXJhbWV0ZXJzAAEcLFNpZ25lZFBoYXNlCABJAQEsU2lnbmVkUGhhc2UAANgBTE9wdGlvbjxCbG9ja051bWJlcj4AAABQTWF4U2lnbmVkU3VibWlzc2lvbnMIAE0BAVBNYXhTaWduZWRTdWJtaXNzaW9ucwAA2AEsT3B0aW9uPHUzMj4AAQA0VW5zaWduZWRQaGFzZQgAUQEBNFVuc2lnbmVkUGhhc2UAANgBTE9wdGlvbjxCbG9ja051bWJlcj4AAgAoTWluZXJQYWdlcwgAVQEBKE1pbmVyUGFnZXMAANgBLE9wdGlvbjx1MzI+AAMARE1heEVsZWN0aW5nVm90ZXJzCABZAQFETWF4RWxlY3RpbmdWb3RlcnMAANgBLE9wdGlvbjx1MzI+AAQAWFRhcmdldFNuYXBzaG90UGVyQmxvY2sIAF0BAVhUYXJnZXRTbmFwc2hvdFBlckJsb2NrAADYASxPcHRpb248dTMyPgAFADhNYXhFcmFEdXJhdGlvbggAYQEBOE1heEVyYUR1cmF0aW9uAABlAQEsT3B0aW9uPHU2ND4ABgAASQEQYGFzc2V0X2h1Yl9rdXNhbWFfcnVudGltZThkeW5hbWljX3BhcmFtc0BzdGFraW5nX2VsZWN0aW9uLFNpZ25lZFBoYXNlAAAAAE0BEGBhc3NldF9odWJfa3VzYW1hX3J1bnRpbWU4ZHluYW1pY19wYXJhbXNAc3Rha2luZ19lbGVjdGlvblBNYXhTaWduZWRTdWJtaXNzaW9ucwAAAABRARBgYXNzZXRfaHViX2t1c2FtYV9ydW50aW1lOGR5bmFtaWNfcGFyYW1zQHN0YWtpbmdfZWxlY3Rpb240VW5zaWduZWRQaGFzZQAAAABVARBgYXNzZXRfaHViX2t1c2FtYV9ydW50aW1lOGR5bmFtaWNfcGFyYW1zQHN0YWtpbmdfZWxlY3Rpb24oTWluZXJQYWdlcwAAAABZARBgYXNzZXRfaHViX2t1c2FtYV9ydW50aW1lOGR5bmFtaWNfcGFyYW1zQHN0YWtpbmdfZWxlY3Rpb25ETWF4RWxlY3RpbmdWb3RlcnMAAAAAXQEQYGFzc2V0X2h1Yl9rdXNhbWFfcnVudGltZThkeW5hbWljX3BhcmFtc0BzdGFraW5nX2VsZWN0aW9uWFRhcmdldFNuYXBzaG90UGVyQmxvY2sAAAAAYQEQYGFzc2V0X2h1Yl9rdXNhbWFfcnVudGltZThkeW5hbWljX3BhcmFtc0BzdGFraW5nX2VsZWN0aW9uOE1heEVyYUR1cmF0aW9uAAAAAGUBBBhPcHRpb24EBFQBKAEIEE5vbmUAAAAQU29tZQQAKAAAAQAAaQEQYGFzc2V0X2h1Yl9rdXNhbWFfcnVudGltZThkeW5hbWljX3BhcmFtcyRzY2hlZHVsZXIoUGFyYW1ldGVycwABCFBNYXhTY2hlZHVsZWRQZXJCbG9jawgAbQEBUE1heFNjaGVkdWxlZFBlckJsb2NrAADYASxPcHRpb248dTMyPgAAADRNYXhpbXVtV2VpZ2h0CABxAQE0TWF4aW11bVdlaWdodAAAdQEBOE9wdGlvbjxXZWlnaHQ+AAEAAG0BEGBhc3NldF9odWJfa3VzYW1hX3J1bnRpbWU4ZHluYW1pY19wYXJhbXMkc2NoZWR1bGVyUE1heFNjaGVkdWxlZFBlckJsb2NrAAAAAHEBEGBhc3NldF9odWJfa3VzYW1hX3J1bnRpbWU4ZHluYW1pY19wYXJhbXMkc2NoZWR1bGVyNE1heGltdW1XZWlnaHQAAAAAdQEEGE9wdGlvbgQEVAF5AQEIEE5vbmUAAAAQU29tZQQAeQEAAAEAAHkBDChzcF93ZWlnaHRzJHdlaWdodF92MhhXZWlnaHQAAAgBIHJlZl90aW1luAEMdTY0AAEocHJvb2Zfc2l6ZbgBDHU2NAAAfQEQYGFzc2V0X2h1Yl9rdXNhbWFfcnVudGltZThkeW5hbWljX3BhcmFtczRtZXNzYWdlX3F1ZXVlKFBhcmFtZXRlcnMAAQg8TWF4T25Jbml0V2VpZ2h0CACBAQE8TWF4T25Jbml0V2VpZ2h0AACFAQFYT3B0aW9uPE9wdGlvbjxXZWlnaHQ+PgAAADxNYXhPbklkbGVXZWlnaHQIAIkBATxNYXhPbklkbGVXZWlnaHQAAIUBAVhPcHRpb248T3B0aW9uPFdlaWdodD4+AAEAAIEBEGBhc3NldF9odWJfa3VzYW1hX3J1bnRpbWU4ZHluYW1pY19wYXJhbXM0bWVzc2FnZV9xdWV1ZTxNYXhPbkluaXRXZWlnaHQAAAAAhQEEGE9wdGlvbgQEVAF1AQEIEE5vbmUAAAAQU29tZQQAdQEAAAEAAIkBEGBhc3NldF9odWJfa3VzYW1hX3J1bnRpbWU4ZHluYW1pY19wYXJhbXM0bWVzc2FnZV9xdWV1ZTxNYXhPbklkbGVXZWlnaHQAAAAAjQEMPHBhbGxldF9iYWxhbmNlcxhwYWxsZXQQQ2FsbAgEVAAESQABJFB0cmFuc2Zlcl9hbGxvd19kZWF0aAgBEGRlc3QAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABFHZhbHVlkQEBKFQ6OkJhbGFuY2UAABzUVHJhbnNmZXIgc29tZSBsaXF1aWQgZnJlZSBiYWxhbmNlIHRvIGFub3RoZXIgYWNjb3VudC4ANQFgdHJhbnNmZXJfYWxsb3dfZGVhdGhgIHdpbGwgc2V0IHRoZSBgRnJlZUJhbGFuY2VgIG9mIHRoZSBzZW5kZXIgYW5kIHJlY2VpdmVyLhEBSWYgdGhlIHNlbmRlcidzIGFjY291bnQgaXMgYmVsb3cgdGhlIGV4aXN0ZW50aWFsIGRlcG9zaXQgYXMgYSByZXN1bHSwb2YgdGhlIHRyYW5zZmVyLCB0aGUgYWNjb3VudCB3aWxsIGJlIHJlYXBlZC4AFQFUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBgU2lnbmVkYCBieSB0aGUgdHJhbnNhY3Rvci44Zm9yY2VfdHJhbnNmZXIMARhzb3VyY2UAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABEGRlc3QAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABFHZhbHVlkQEBKFQ6OkJhbGFuY2UAAghhAUV4YWN0bHkgYXMgYHRyYW5zZmVyX2FsbG93X2RlYXRoYCwgZXhjZXB0IHRoZSBvcmlnaW4gbXVzdCBiZSByb290IGFuZCB0aGUgc291cmNlIGFjY291bnREbWF5IGJlIHNwZWNpZmllZC5MdHJhbnNmZXJfa2VlcF9hbGl2ZQgBEGRlc3QAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABFHZhbHVlkQEBKFQ6OkJhbGFuY2UAAxhZAVNhbWUgYXMgdGhlIFtgdHJhbnNmZXJfYWxsb3dfZGVhdGhgXSBjYWxsLCBidXQgd2l0aCBhIGNoZWNrIHRoYXQgdGhlIHRyYW5zZmVyIHdpbGwgbm90YGtpbGwgdGhlIG9yaWdpbiBhY2NvdW50LgDoOTklIG9mIHRoZSB0aW1lIHlvdSB3YW50IFtgdHJhbnNmZXJfYWxsb3dfZGVhdGhgXSBpbnN0ZWFkLgDwW2B0cmFuc2Zlcl9hbGxvd19kZWF0aGBdOiBzdHJ1Y3QuUGFsbGV0Lmh0bWwjbWV0aG9kLnRyYW5zZmVyMHRyYW5zZmVyX2FsbAgBEGRlc3QAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABKGtlZXBfYWxpdmWZAQEQYm9vbAAEPAUBVHJhbnNmZXIgdGhlIGVudGlyZSB0cmFuc2ZlcmFibGUgYmFsYW5jZSBmcm9tIHRoZSBjYWxsZXIgYWNjb3VudC4AWQFOT1RFOiBUaGlzIGZ1bmN0aW9uIG9ubHkgYXR0ZW1wdHMgdG8gdHJhbnNmZXIgX3RyYW5zZmVyYWJsZV8gYmFsYW5jZXMuIFRoaXMgbWVhbnMgdGhhdGEBYW55IGxvY2tlZCwgcmVzZXJ2ZWQsIG9yIGV4aXN0ZW50aWFsIGRlcG9zaXRzICh3aGVuIGBrZWVwX2FsaXZlYCBpcyBgdHJ1ZWApLCB3aWxsIG5vdCBiZV0BdHJhbnNmZXJyZWQgYnkgdGhpcyBmdW5jdGlvbi4gVG8gZW5zdXJlIHRoYXQgdGhpcyBmdW5jdGlvbiByZXN1bHRzIGluIGEga2lsbGVkIGFjY291bnQsRQF5b3UgbWlnaHQgbmVlZCB0byBwcmVwYXJlIHRoZSBhY2NvdW50IGJ5IHJlbW92aW5nIGFueSByZWZlcmVuY2UgY291bnRlcnMsIHN0b3JhZ2VAZGVwb3NpdHMsIGV0Yy4uLgDAVGhlIGRpc3BhdGNoIG9yaWdpbiBvZiB0aGlzIGNhbGwgbXVzdCBiZSBTaWduZWQuAKAtIGBkZXN0YDogVGhlIHJlY2lwaWVudCBvZiB0aGUgdHJhbnNmZXIuWQEtIGBrZWVwX2FsaXZlYDogQSBib29sZWFuIHRvIGRldGVybWluZSBpZiB0aGUgYHRyYW5zZmVyX2FsbGAgb3BlcmF0aW9uIHNob3VsZCBzZW5kIGFsbE0BICBvZiB0aGUgZnVuZHMgdGhlIGFjY291bnQgaGFzLCBjYXVzaW5nIHRoZSBzZW5kZXIgYWNjb3VudCB0byBiZSBraWxsZWQgKGZhbHNlKSwgb3JZASAgdHJhbnNmZXIgZXZlcnl0aGluZyBleGNlcHQgYXQgbGVhc3QgdGhlIGV4aXN0ZW50aWFsIGRlcG9zaXQsIHdoaWNoIHdpbGwgZ3VhcmFudGVlIHRvnCAga2VlcCB0aGUgc2VuZGVyIGFjY291bnQgYWxpdmUgKHRydWUpLjxmb3JjZV91bnJlc2VydmUIAQx3aG8AAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGFtb3VudJUBAShUOjpCYWxhbmNlAAUMsFVucmVzZXJ2ZSBzb21lIGJhbGFuY2UgZnJvbSBhIHVzZXIgYnkgZm9yY2UuAGxDYW4gb25seSBiZSBjYWxsZWQgYnkgUk9PVC5AdXBncmFkZV9hY2NvdW50cwQBDHdob50BAURWZWM8VDo6QWNjb3VudElkPgAGIHBVcGdyYWRlIGEgc3BlY2lmaWVkIGFjY291bnQuAHQtIGBvcmlnaW5gOiBNdXN0IGJlIGBTaWduZWRgLpAtIGB3aG9gOiBUaGUgYWNjb3VudCB0byBiZSB1cGdyYWRlZC4AVQFUaGlzIHdpbGwgd2FpdmUgdGhlIHRyYW5zYWN0aW9uIGZlZSBpZiBhdCBsZWFzdCBhbGwgYnV0IDEwJSBvZiB0aGUgYWNjb3VudHMgbmVlZGVkIHRvQQFiZSB1cGdyYWRlZC4gKFdlIGxldCBzb21lIG5vdCBoYXZlIHRvIGJlIHVwZ3JhZGVkIGp1c3QgaW4gb3JkZXIgdG8gYWxsb3cgZm9yIHRoZVhwb3NzaWJpbGl0eSBvZiBjaHVybikuRGZvcmNlX3NldF9iYWxhbmNlCAEMd2hvAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AASBuZXdfZnJlZZEBAShUOjpCYWxhbmNlAAgMrFNldCB0aGUgcmVndWxhciBiYWxhbmNlIG9mIGEgZ2l2ZW4gYWNjb3VudC4AsFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBpcyBgcm9vdGAubGZvcmNlX2FkanVzdF90b3RhbF9pc3N1YW5jZQgBJGRpcmVjdGlvbqEBAUxBZGp1c3RtZW50RGlyZWN0aW9uAAEUZGVsdGGRAQEoVDo6QmFsYW5jZQAJFLhBZGp1c3QgdGhlIHRvdGFsIGlzc3VhbmNlIGluIGEgc2F0dXJhdGluZyB3YXkuAPxDYW4gb25seSBiZSBjYWxsZWQgYnkgcm9vdCBhbmQgYWx3YXlzIG5lZWRzIGEgcG9zaXRpdmUgYGRlbHRhYC4AJCMgRXhhbXBsZRBidXJuCAEUdmFsdWWRAQEoVDo6QmFsYW5jZQABKGtlZXBfYWxpdmWZAQEQYm9vbAAKHPxCdXJuIHRoZSBzcGVjaWZpZWQgbGlxdWlkIGZyZWUgYmFsYW5jZSBmcm9tIHRoZSBvcmlnaW4gYWNjb3VudC4AJQFJZiB0aGUgb3JpZ2luJ3MgYWNjb3VudCBlbmRzIHVwIGJlbG93IHRoZSBleGlzdGVudGlhbCBkZXBvc2l0IGFzIGEgcmVzdWx0CQFvZiB0aGUgYnVybiBhbmQgYGtlZXBfYWxpdmVgIGlzIGZhbHNlLCB0aGUgYWNjb3VudCB3aWxsIGJlIHJlYXBlZC4AUQFVbmxpa2Ugc2VuZGluZyBmdW5kcyB0byBhIF9idXJuXyBhZGRyZXNzLCB3aGljaCBtZXJlbHkgbWFrZXMgdGhlIGZ1bmRzIGluYWNjZXNzaWJsZSwhAXRoaXMgYGJ1cm5gIG9wZXJhdGlvbiB3aWxsIHJlZHVjZSB0b3RhbCBpc3N1YW5jZSBieSB0aGUgYW1vdW50IF9idXJuZWRfLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy6RAQAABpUBAJUBAAAFBwCZAQAABQAAnQEAAAIEAKEBDDxwYWxsZXRfYmFsYW5jZXMUdHlwZXNMQWRqdXN0bWVudERpcmVjdGlvbgABCCBJbmNyZWFzZQAAACBEZWNyZWFzZQABAAClAQw4cGFsbGV0X3Zlc3RpbmcYcGFsbGV0EENhbGwEBFQAARgQdmVzdAAAJLhVbmxvY2sgYW55IHZlc3RlZCBmdW5kcyBvZiB0aGUgc2VuZGVyIGFjY291bnQuAF0BVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8gYW5kIHRoZSBzZW5kZXIgbXVzdCBoYXZlIGZ1bmRzIHN0aWxsZGxvY2tlZCB1bmRlciB0aGlzIHBhbGxldC4A0EVtaXRzIGVpdGhlciBgVmVzdGluZ0NvbXBsZXRlZGAgb3IgYFZlc3RpbmdVcGRhdGVkYC4ANCMjIENvbXBsZXhpdHkkLSBgTygxKWAuKHZlc3Rfb3RoZXIEARh0YXJnZXQAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABLLhVbmxvY2sgYW55IHZlc3RlZCBmdW5kcyBvZiBhIGB0YXJnZXRgIGFjY291bnQuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4AUQEtIGB0YXJnZXRgOiBUaGUgYWNjb3VudCB3aG9zZSB2ZXN0ZWQgZnVuZHMgc2hvdWxkIGJlIHVubG9ja2VkLiBNdXN0IGhhdmUgZnVuZHMgc3RpbGxkbG9ja2VkIHVuZGVyIHRoaXMgcGFsbGV0LgDQRW1pdHMgZWl0aGVyIGBWZXN0aW5nQ29tcGxldGVkYCBvciBgVmVzdGluZ1VwZGF0ZWRgLgA0IyMgQ29tcGxleGl0eSQtIGBPKDEpYC48dmVzdGVkX3RyYW5zZmVyCAEYdGFyZ2V0AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AASBzY2hlZHVsZakBAbBWZXN0aW5nSW5mbzxCYWxhbmNlT2Y8VD4sIEJsb2NrTnVtYmVyRm9yPFQ+PgACNGRDcmVhdGUgYSB2ZXN0ZWQgdHJhbnNmZXIuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4AzC0gYHRhcmdldGA6IFRoZSBhY2NvdW50IHJlY2VpdmluZyB0aGUgdmVzdGVkIGZ1bmRzLvAtIGBzY2hlZHVsZWA6IFRoZSB2ZXN0aW5nIHNjaGVkdWxlIGF0dGFjaGVkIHRvIHRoZSB0cmFuc2Zlci4AXEVtaXRzIGBWZXN0aW5nQ3JlYXRlZGAuAPxOT1RFOiBUaGlzIHdpbGwgdW5sb2NrIGFsbCBzY2hlZHVsZXMgdGhyb3VnaCB0aGUgY3VycmVudCBibG9jay4ANCMjIENvbXBsZXhpdHkkLSBgTygxKWAuVGZvcmNlX3Zlc3RlZF90cmFuc2ZlcgwBGHNvdXJjZQABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYdGFyZ2V0AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AASBzY2hlZHVsZakBAbBWZXN0aW5nSW5mbzxCYWxhbmNlT2Y8VD4sIEJsb2NrTnVtYmVyRm9yPFQ+PgADOGBGb3JjZSBhIHZlc3RlZCB0cmFuc2Zlci4AxFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9Sb290Xy4A6C0gYHNvdXJjZWA6IFRoZSBhY2NvdW50IHdob3NlIGZ1bmRzIHNob3VsZCBiZSB0cmFuc2ZlcnJlZC4RAS0gYHRhcmdldGA6IFRoZSBhY2NvdW50IHRoYXQgc2hvdWxkIGJlIHRyYW5zZmVycmVkIHRoZSB2ZXN0ZWQgZnVuZHMu8C0gYHNjaGVkdWxlYDogVGhlIHZlc3Rpbmcgc2NoZWR1bGUgYXR0YWNoZWQgdG8gdGhlIHRyYW5zZmVyLgBcRW1pdHMgYFZlc3RpbmdDcmVhdGVkYC4A/E5PVEU6IFRoaXMgd2lsbCB1bmxvY2sgYWxsIHNjaGVkdWxlcyB0aHJvdWdoIHRoZSBjdXJyZW50IGJsb2NrLgA0IyMgQ29tcGxleGl0eSQtIGBPKDEpYC48bWVyZ2Vfc2NoZWR1bGVzCAE8c2NoZWR1bGUxX2luZGV4OAEMdTMyAAE8c2NoZWR1bGUyX2luZGV4OAEMdTMyAARUXQFNZXJnZSB0d28gdmVzdGluZyBzY2hlZHVsZXMgdG9nZXRoZXIsIGNyZWF0aW5nIGEgbmV3IHZlc3Rpbmcgc2NoZWR1bGUgdGhhdCB1bmxvY2tzIG92ZXJVAXRoZSBoaWdoZXN0IHBvc3NpYmxlIHN0YXJ0IGFuZCBlbmQgYmxvY2tzLiBJZiBib3RoIHNjaGVkdWxlcyBoYXZlIGFscmVhZHkgc3RhcnRlZCB0aGVZAWN1cnJlbnQgYmxvY2sgd2lsbCBiZSB1c2VkIGFzIHRoZSBzY2hlZHVsZSBzdGFydDsgd2l0aCB0aGUgY2F2ZWF0IHRoYXQgaWYgb25lIHNjaGVkdWxlXQFpcyBmaW5pc2hlZCBieSB0aGUgY3VycmVudCBibG9jaywgdGhlIG90aGVyIHdpbGwgYmUgdHJlYXRlZCBhcyB0aGUgbmV3IG1lcmdlZCBzY2hlZHVsZSwsdW5tb2RpZmllZC4A+E5PVEU6IElmIGBzY2hlZHVsZTFfaW5kZXggPT0gc2NoZWR1bGUyX2luZGV4YCB0aGlzIGlzIGEgbm8tb3AuQQFOT1RFOiBUaGlzIHdpbGwgdW5sb2NrIGFsbCBzY2hlZHVsZXMgdGhyb3VnaCB0aGUgY3VycmVudCBibG9jayBwcmlvciB0byBtZXJnaW5nLmEBTk9URTogSWYgYm90aCBzY2hlZHVsZXMgaGF2ZSBlbmRlZCBieSB0aGUgY3VycmVudCBibG9jaywgbm8gbmV3IHNjaGVkdWxlIHdpbGwgYmUgY3JlYXRlZGRhbmQgYm90aCB3aWxsIGJlIHJlbW92ZWQuAGxNZXJnZWQgc2NoZWR1bGUgYXR0cmlidXRlczo1AS0gYHN0YXJ0aW5nX2Jsb2NrYDogYE1BWChzY2hlZHVsZTEuc3RhcnRpbmdfYmxvY2ssIHNjaGVkdWxlZDIuc3RhcnRpbmdfYmxvY2ssSCAgY3VycmVudF9ibG9jaylgLiEBLSBgZW5kaW5nX2Jsb2NrYDogYE1BWChzY2hlZHVsZTEuZW5kaW5nX2Jsb2NrLCBzY2hlZHVsZTIuZW5kaW5nX2Jsb2NrKWAuWQEtIGBsb2NrZWRgOiBgc2NoZWR1bGUxLmxvY2tlZF9hdChjdXJyZW50X2Jsb2NrKSArIHNjaGVkdWxlMi5sb2NrZWRfYXQoY3VycmVudF9ibG9jaylgLgDMVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uAOgtIGBzY2hlZHVsZTFfaW5kZXhgOiBpbmRleCBvZiB0aGUgZmlyc3Qgc2NoZWR1bGUgdG8gbWVyZ2Uu7C0gYHNjaGVkdWxlMl9pbmRleGA6IGluZGV4IG9mIHRoZSBzZWNvbmQgc2NoZWR1bGUgdG8gbWVyZ2UudGZvcmNlX3JlbW92ZV92ZXN0aW5nX3NjaGVkdWxlCAEYdGFyZ2V0AAGMPFQ6Okxvb2t1cCBhcyBTdGF0aWNMb29rdXA+OjpTb3VyY2UAAThzY2hlZHVsZV9pbmRleDgBDHUzMgAFGHxGb3JjZSByZW1vdmUgYSB2ZXN0aW5nIHNjaGVkdWxlAMRUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfUm9vdF8uAMgtIGB0YXJnZXRgOiBBbiBhY2NvdW50IHRoYXQgaGFzIGEgdmVzdGluZyBzY2hlZHVsZRUBLSBgc2NoZWR1bGVfaW5kZXhgOiBUaGUgdmVzdGluZyBzY2hlZHVsZSBpbmRleCB0aGF0IHNob3VsZCBiZSByZW1vdmVkBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLqkBDDhwYWxsZXRfdmVzdGluZzB2ZXN0aW5nX2luZm8sVmVzdGluZ0luZm8IHEJhbGFuY2UBlQEsQmxvY2tOdW1iZXIBOAAMARhsb2NrZWSVAQEcQmFsYW5jZQABJHBlcl9ibG9ja5UBARxCYWxhbmNlAAE4c3RhcnRpbmdfYmxvY2s4ASxCbG9ja051bWJlcgAArQEQXHBvbGthZG90X3J1bnRpbWVfY29tbW9uGGNsYWltcxhwYWxsZXQQQ2FsbAQEVAABFBRjbGFpbQgBEGRlc3QEATBUOjpBY2NvdW50SWQAAUhldGhlcmV1bV9zaWduYXR1cmWxAQE4RWNkc2FTaWduYXR1cmUAAGCITWFrZSBhIGNsYWltIHRvIGNvbGxlY3QgeW91ciBET1RzLgDEVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX05vbmVfLgBQVW5zaWduZWQgVmFsaWRhdGlvbjoFAUEgY2FsbCB0byBjbGFpbSBpcyBkZWVtZWQgdmFsaWQgaWYgdGhlIHNpZ25hdHVyZSBwcm92aWRlZCBtYXRjaGVzfHRoZSBleHBlY3RlZCBzaWduZWQgbWVzc2FnZSBvZjoAaD4gRXRoZXJldW0gU2lnbmVkIE1lc3NhZ2U6lD4gKGNvbmZpZ3VyZWQgcHJlZml4IHN0cmluZykoYWRkcmVzcykApGFuZCBgYWRkcmVzc2AgbWF0Y2hlcyB0aGUgYGRlc3RgIGFjY291bnQuACxQYXJhbWV0ZXJzOtgtIGBkZXN0YDogVGhlIGRlc3RpbmF0aW9uIGFjY291bnQgdG8gcGF5b3V0IHRoZSBjbGFpbS5dAS0gYGV0aGVyZXVtX3NpZ25hdHVyZWA6IFRoZSBzaWduYXR1cmUgb2YgYW4gZXRoZXJldW0gc2lnbmVkIG1lc3NhZ2UgbWF0Y2hpbmcgdGhlIGZvcm1hdEggIGRlc2NyaWJlZCBhYm92ZS4AIDx3ZWlnaHQ+/FRoZSB3ZWlnaHQgb2YgdGhpcyBjYWxsIGlzIGludmFyaWFudCBvdmVyIHRoZSBpbnB1dCBwYXJhbWV0ZXJzLuBXZWlnaHQgaW5jbHVkZXMgbG9naWMgdG8gdmFsaWRhdGUgdW5zaWduZWQgYGNsYWltYCBjYWxsLgBYVG90YWwgQ29tcGxleGl0eTogTygxKSQ8L3dlaWdodD4obWludF9jbGFpbRABDHdob7kBATxFdGhlcmV1bUFkZHJlc3MAARR2YWx1ZZUBATBCYWxhbmNlT2Y8VD4AAUB2ZXN0aW5nX3NjaGVkdWxlvQEB3E9wdGlvbjwoQmFsYW5jZU9mPFQ+LCBCYWxhbmNlT2Y8VD4sIEJsb2NrTnVtYmVyRm9yPFQ+KT4AASRzdGF0ZW1lbnTFAQFUT3B0aW9uPFN0YXRlbWVudEtpbmQ+AAE8hE1pbnQgYSBuZXcgY2xhaW0gdG8gY29sbGVjdCBET1RzLgDEVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1Jvb3RfLgAsUGFyYW1ldGVyczrwLSBgd2hvYDogVGhlIEV0aGVyZXVtIGFkZHJlc3MgYWxsb3dlZCB0byBjb2xsZWN0IHRoaXMgY2xhaW0uzC0gYHZhbHVlYDogVGhlIG51bWJlciBvZiBET1RzIHRoYXQgd2lsbCBiZSBjbGFpbWVkLgkBLSBgdmVzdGluZ19zY2hlZHVsZWA6IEFuIG9wdGlvbmFsIHZlc3Rpbmcgc2NoZWR1bGUgZm9yIHRoZXNlIERPVHMuACA8d2VpZ2h0PvxUaGUgd2VpZ2h0IG9mIHRoaXMgY2FsbCBpcyBpbnZhcmlhbnQgb3ZlciB0aGUgaW5wdXQgcGFyYW1ldGVycy4dAVdlIGFzc3VtZSB3b3JzdCBjYXNlIHRoYXQgYm90aCB2ZXN0aW5nIGFuZCBzdGF0ZW1lbnQgaXMgYmVpbmcgaW5zZXJ0ZWQuAFhUb3RhbCBDb21wbGV4aXR5OiBPKDEpJDwvd2VpZ2h0PjBjbGFpbV9hdHRlc3QMARBkZXN0BAEwVDo6QWNjb3VudElkAAFIZXRoZXJldW1fc2lnbmF0dXJlsQEBOEVjZHNhU2lnbmF0dXJlAAEkc3RhdGVtZW50GAEcVmVjPHU4PgACbORNYWtlIGEgY2xhaW0gdG8gY29sbGVjdCB5b3VyIERPVHMgYnkgc2lnbmluZyBhIHN0YXRlbWVudC4AxFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9Ob25lXy4AUFVuc2lnbmVkIFZhbGlkYXRpb246KQFBIGNhbGwgdG8gYGNsYWltX2F0dGVzdGAgaXMgZGVlbWVkIHZhbGlkIGlmIHRoZSBzaWduYXR1cmUgcHJvdmlkZWQgbWF0Y2hlc3x0aGUgZXhwZWN0ZWQgc2lnbmVkIG1lc3NhZ2Ugb2Y6AGg+IEV0aGVyZXVtIFNpZ25lZCBNZXNzYWdlOsA+IChjb25maWd1cmVkIHByZWZpeCBzdHJpbmcpKGFkZHJlc3MpKHN0YXRlbWVudCkASQFhbmQgYGFkZHJlc3NgIG1hdGNoZXMgdGhlIGBkZXN0YCBhY2NvdW50OyB0aGUgYHN0YXRlbWVudGAgbXVzdCBtYXRjaCB0aGF0IHdoaWNoIGlzwGV4cGVjdGVkIGFjY29yZGluZyB0byB5b3VyIHB1cmNoYXNlIGFycmFuZ2VtZW50LgAsUGFyYW1ldGVyczrYLSBgZGVzdGA6IFRoZSBkZXN0aW5hdGlvbiBhY2NvdW50IHRvIHBheW91dCB0aGUgY2xhaW0uXQEtIGBldGhlcmV1bV9zaWduYXR1cmVgOiBUaGUgc2lnbmF0dXJlIG9mIGFuIGV0aGVyZXVtIHNpZ25lZCBtZXNzYWdlIG1hdGNoaW5nIHRoZSBmb3JtYXRIICBkZXNjcmliZWQgYWJvdmUuOQEtIGBzdGF0ZW1lbnRgOiBUaGUgaWRlbnRpdHkgb2YgdGhlIHN0YXRlbWVudCB3aGljaCBpcyBiZWluZyBhdHRlc3RlZCB0byBpbiB0aGUwICBzaWduYXR1cmUuACA8d2VpZ2h0PvxUaGUgd2VpZ2h0IG9mIHRoaXMgY2FsbCBpcyBpbnZhcmlhbnQgb3ZlciB0aGUgaW5wdXQgcGFyYW1ldGVycy78V2VpZ2h0IGluY2x1ZGVzIGxvZ2ljIHRvIHZhbGlkYXRlIHVuc2lnbmVkIGBjbGFpbV9hdHRlc3RgIGNhbGwuAFhUb3RhbCBDb21wbGV4aXR5OiBPKDEpJDwvd2VpZ2h0PhhhdHRlc3QEASRzdGF0ZW1lbnQYARxWZWM8dTg+AANM9EF0dGVzdCB0byBhIHN0YXRlbWVudCwgbmVlZGVkIHRvIGZpbmFsaXplIHRoZSBjbGFpbXMgcHJvY2Vzcy4AGQFXQVJOSU5HOiBJbnNlY3VyZSB1bmxlc3MgeW91ciBjaGFpbiBpbmNsdWRlcyBgUHJldmFsaWRhdGVBdHRlc3RzYCBhcyBhXGBUcmFuc2FjdGlvbkV4dGVuc2lvbmAuAFBVbnNpZ25lZCBWYWxpZGF0aW9uOikBQSBjYWxsIHRvIGF0dGVzdCBpcyBkZWVtZWQgdmFsaWQgaWYgdGhlIHNlbmRlciBoYXMgYSBgUHJlY2xhaW1gIHJlZ2lzdGVyZWT0YW5kIHByb3ZpZGVzIGEgYHN0YXRlbWVudGAgd2hpY2ggaXMgZXhwZWN0ZWQgZm9yIHRoZSBhY2NvdW50LgAsUGFyYW1ldGVyczo5AS0gYHN0YXRlbWVudGA6IFRoZSBpZGVudGl0eSBvZiB0aGUgc3RhdGVtZW50IHdoaWNoIGlzIGJlaW5nIGF0dGVzdGVkIHRvIGluIHRoZTAgIHNpZ25hdHVyZS4AIDx3ZWlnaHQ+/FRoZSB3ZWlnaHQgb2YgdGhpcyBjYWxsIGlzIGludmFyaWFudCBvdmVyIHRoZSBpbnB1dCBwYXJhbWV0ZXJzLvBXZWlnaHQgaW5jbHVkZXMgbG9naWMgdG8gZG8gcHJlLXZhbGlkYXRpb24gb24gYGF0dGVzdGAgY2FsbC4AWFRvdGFsIENvbXBsZXhpdHk6IE8oMSkkPC93ZWlnaHQ+KG1vdmVfY2xhaW0MAQxvbGS5AQE8RXRoZXJldW1BZGRyZXNzAAEMbmV3uQEBPEV0aGVyZXVtQWRkcmVzcwABOG1heWJlX3ByZWNsYWltQQEBUE9wdGlvbjxUOjpBY2NvdW50SWQ+AAQABA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLrEBDFxwb2xrYWRvdF9ydW50aW1lX2NvbW1vbhhjbGFpbXM4RWNkc2FTaWduYXR1cmUAAAQAtQEBIFt1ODsgNjVdAAC1AQAAA0EAAAAMALkBDFxwb2xrYWRvdF9ydW50aW1lX2NvbW1vbhhjbGFpbXM8RXRoZXJldW1BZGRyZXNzAAAEABwBIFt1ODsgMjBdAAC9AQQYT3B0aW9uBARUAcEBAQgQTm9uZQAAABBTb21lBADBAQAAAQAAwQEAAAQMlQGVATgAxQEEGE9wdGlvbgQEVAHJAQEIEE5vbmUAAAAQU29tZQQAyQEAAAEAAMkBDFxwb2xrYWRvdF9ydW50aW1lX2NvbW1vbhhjbGFpbXM0U3RhdGVtZW50S2luZAABCBxSZWd1bGFyAAAAEFNhZnQAAQAAzQEMZHBhbGxldF9jb2xsYXRvcl9zZWxlY3Rpb24YcGFsbGV0EENhbGwEBFQAASREc2V0X2ludnVsbmVyYWJsZXMEAQxuZXedAQFEVmVjPFQ6OkFjY291bnRJZD4AADQxAVNldCB0aGUgbGlzdCBvZiBpbnZ1bG5lcmFibGUgKGZpeGVkKSBjb2xsYXRvcnMuIFRoZXNlIGNvbGxhdG9ycyBtdXN0IGRvIHNvbWXQcHJlcGFyYXRpb24sIG5hbWVseSB0byBoYXZlIHJlZ2lzdGVyZWQgc2Vzc2lvbiBrZXlzLgBZAVRoZSBjYWxsIHdpbGwgcmVtb3ZlIGFueSBhY2NvdW50cyB0aGF0IGhhdmUgbm90IHJlZ2lzdGVyZWQga2V5cyBmcm9tIHRoZSBzZXQuIFRoYXQgaXMsXQFpdCBpcyBub24tYXRvbWljOyB0aGUgY2FsbGVyIGFjY2VwdHMgYWxsIGBBY2NvdW50SWRgcyBwYXNzZWQgaW4gYG5ld2AgX2luZGl2aWR1YWxseV8gYXMxAWFjY2VwdGFibGUgSW52dWxuZXJhYmxlcywgYW5kIGlzIG5vdCBwcm9wb3NpbmcgYSBfc2V0XyBvZiBuZXcgSW52dWxuZXJhYmxlcy4AWQFUaGlzIGNhbGwgZG9lcyBub3QgbWFpbnRhaW4gbXV0dWFsIGV4Y2x1c2l2aXR5IG9mIGBJbnZ1bG5lcmFibGVzYCBhbmQgYENhbmRpZGF0ZXNgLiBJdGEBaXMgcmVjb21tZW5kZWQgdG8gdXNlIGEgYmF0Y2ggb2YgYGFkZF9pbnZ1bG5lcmFibGVgIGFuZCBgcmVtb3ZlX2ludnVsbmVyYWJsZWAgaW5zdGVhZC4gQVEBYGJhdGNoX2FsbGAgY2FuIGFsc28gYmUgdXNlZCB0byBlbmZvcmNlIGF0b21pY2l0eS4gSWYgYW55IGNhbmRpZGF0ZXMgYXJlIGluY2x1ZGVkIGluTQFgbmV3YCwgdGhleSBzaG91bGQgYmUgcmVtb3ZlZCB3aXRoIGByZW1vdmVfaW52dWxuZXJhYmxlX2NhbmRpZGF0ZWAgYWZ0ZXIgZXhlY3V0aW9uLgCUTXVzdCBiZSBjYWxsZWQgYnkgdGhlIGBVcGRhdGVPcmlnaW5gLlhzZXRfZGVzaXJlZF9jYW5kaWRhdGVzBAEMbWF4OAEMdTMyAAEUVQFTZXQgdGhlIGlkZWFsIG51bWJlciBvZiBub24taW52dWxuZXJhYmxlIGNvbGxhdG9ycy4gSWYgbG93ZXJpbmcgdGhpcyBudW1iZXIsIHRoZW4gdGhlYQFudW1iZXIgb2YgcnVubmluZyBjb2xsYXRvcnMgY291bGQgYmUgaGlnaGVyIHRoYW4gdGhpcyBmaWd1cmUuIEFzaWRlIGZyb20gdGhhdCBlZGdlIGNhc2UsNQF0aGVyZSBzaG91bGQgYmUgbm8gb3RoZXIgd2F5IHRvIGhhdmUgbW9yZSBjYW5kaWRhdGVzIHRoYW4gdGhlIGRlc2lyZWQgbnVtYmVyLgDQVGhlIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgdGhlIGBVcGRhdGVPcmlnaW5gLkhzZXRfY2FuZGlkYWN5X2JvbmQEARBib25klQEBMEJhbGFuY2VPZjxUPgACHHhTZXQgdGhlIGNhbmRpZGFjeSBib25kIGFtb3VudC4AUQFJZiB0aGUgY2FuZGlkYWN5IGJvbmQgaXMgaW5jcmVhc2VkIGJ5IHRoaXMgY2FsbCwgYWxsIGN1cnJlbnQgY2FuZGlkYXRlcyB3aGljaCBoYXZlIGFNAWRlcG9zaXQgbG93ZXIgdGhhbiB0aGUgbmV3IGJvbmQgd2lsbCBiZSBraWNrZWQgZnJvbSB0aGUgbGlzdCBhbmQgZ2V0IHRoZWlyIGRlcG9zaXRzFGJhY2suANBUaGUgb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSB0aGUgYFVwZGF0ZU9yaWdpbmAuVHJlZ2lzdGVyX2FzX2NhbmRpZGF0ZQADEEEBUmVnaXN0ZXIgdGhpcyBhY2NvdW50IGFzIGEgY29sbGF0b3IgY2FuZGlkYXRlLiBUaGUgYWNjb3VudCBtdXN0IChhKSBhbHJlYWR5IGhhdmUdAXJlZ2lzdGVyZWQgc2Vzc2lvbiBrZXlzIGFuZCAoYikgYmUgYWJsZSB0byByZXNlcnZlIHRoZSBgQ2FuZGlkYWN5Qm9uZGAuANxUaGlzIGNhbGwgaXMgbm90IGF2YWlsYWJsZSB0byBgSW52dWxuZXJhYmxlYCBjb2xsYXRvcnMuMGxlYXZlX2ludGVudAAEFFUBRGVyZWdpc3RlciBgb3JpZ2luYCBhcyBhIGNvbGxhdG9yIGNhbmRpZGF0ZS4gTm90ZSB0aGF0IHRoZSBjb2xsYXRvciBjYW4gb25seSBsZWF2ZSBvbg0Bc2Vzc2lvbiBjaGFuZ2UuIFRoZSBgQ2FuZGlkYWN5Qm9uZGAgd2lsbCBiZSB1bnJlc2VydmVkIGltbWVkaWF0ZWx5LgAZAVRoaXMgY2FsbCB3aWxsIGZhaWwgaWYgdGhlIHRvdGFsIG51bWJlciBvZiBjYW5kaWRhdGVzIHdvdWxkIGRyb3AgYmVsb3dcYE1pbkVsaWdpYmxlQ29sbGF0b3JzYC5AYWRkX2ludnVsbmVyYWJsZQQBDHdobwQBMFQ6OkFjY291bnRJZAAFEEUBQWRkIGEgbmV3IGFjY291bnQgYHdob2AgdG8gdGhlIGxpc3Qgb2YgYEludnVsbmVyYWJsZXNgIGNvbGxhdG9ycy4gYHdob2AgbXVzdCBoYXZlHQFyZWdpc3RlcmVkIHNlc3Npb24ga2V5cy4gSWYgYHdob2AgaXMgYSBjYW5kaWRhdGUsIHRoZXkgd2lsbCBiZSByZW1vdmVkLgDQVGhlIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgdGhlIGBVcGRhdGVPcmlnaW5gLkxyZW1vdmVfaW52dWxuZXJhYmxlBAEMd2hvBAEwVDo6QWNjb3VudElkAAYQYQFSZW1vdmUgYW4gYWNjb3VudCBgd2hvYCBmcm9tIHRoZSBsaXN0IG9mIGBJbnZ1bG5lcmFibGVzYCBjb2xsYXRvcnMuIGBJbnZ1bG5lcmFibGVzYCBtdXN0KGJlIHNvcnRlZC4A0FRoZSBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIHRoZSBgVXBkYXRlT3JpZ2luYC4sdXBkYXRlX2JvbmQEASxuZXdfZGVwb3NpdJUBATBCYWxhbmNlT2Y8VD4ABxxdAVVwZGF0ZSB0aGUgY2FuZGlkYWN5IGJvbmQgb2YgY29sbGF0b3IgY2FuZGlkYXRlIGBvcmlnaW5gIHRvIGEgbmV3IGFtb3VudCBgbmV3X2RlcG9zaXRgLgBBAVNldHRpbmcgYSBgbmV3X2RlcG9zaXRgIHRoYXQgaXMgbG93ZXIgdGhhbiB0aGUgY3VycmVudCBkZXBvc2l0IHdoaWxlIGBvcmlnaW5gIGlz4G9jY3VweWluZyBhIHRvcC1gRGVzaXJlZENhbmRpZGF0ZXNgIHNsb3QgaXMgbm90IGFsbG93ZWQuAFkBVGhpcyBjYWxsIHdpbGwgZmFpbCBpZiBgb3JpZ2luYCBpcyBub3QgYSBjb2xsYXRvciBjYW5kaWRhdGUsIHRoZSB1cGRhdGVkIGJvbmQgaXMgbG93ZXIZAXRoYW4gdGhlIG1pbmltdW0gY2FuZGlkYWN5IGJvbmQsIGFuZC9vciB0aGUgYW1vdW50IGNhbm5vdCBiZSByZXNlcnZlZC5MdGFrZV9jYW5kaWRhdGVfc2xvdAgBHGRlcG9zaXSVAQEwQmFsYW5jZU9mPFQ+AAEYdGFyZ2V0BAEwVDo6QWNjb3VudElkAAgcTQFUaGUgY2FsbGVyIGBvcmlnaW5gIHJlcGxhY2VzIGEgY2FuZGlkYXRlIGB0YXJnZXRgIGluIHRoZSBjb2xsYXRvciBjYW5kaWRhdGUgbGlzdCBieVUBcmVzZXJ2aW5nIGBkZXBvc2l0YC4gVGhlIGFtb3VudCBgZGVwb3NpdGAgcmVzZXJ2ZWQgYnkgdGhlIGNhbGxlciBtdXN0IGJlIGdyZWF0ZXIgdGhhbuB0aGUgZXhpc3RpbmcgYm9uZCBvZiB0aGUgdGFyZ2V0IGl0IGlzIHRyeWluZyB0byByZXBsYWNlLgBZAVRoaXMgY2FsbCB3aWxsIGZhaWwgaWYgdGhlIGNhbGxlciBpcyBhbHJlYWR5IGEgY29sbGF0b3IgY2FuZGlkYXRlIG9yIGludnVsbmVyYWJsZSwgdGhlVQFjYWxsZXIgZG9lcyBub3QgaGF2ZSByZWdpc3RlcmVkIHNlc3Npb24ga2V5cywgdGhlIHRhcmdldCBpcyBub3QgYSBjb2xsYXRvciBjYW5kaWRhdGUsvGFuZC9vciB0aGUgYGRlcG9zaXRgIGFtb3VudCBjYW5ub3QgYmUgcmVzZXJ2ZWQuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLtEBDDhwYWxsZXRfc2Vzc2lvbhhwYWxsZXQQQ2FsbAQEVAABCCBzZXRfa2V5cwgBEGtleXPVAQEcVDo6S2V5cwABFHByb29mGAEcVmVjPHU4PgAALORTZXRzIHRoZSBzZXNzaW9uIGtleShzKSBvZiB0aGUgZnVuY3Rpb24gY2FsbGVyIHRvIGBrZXlzYC4AHQFBbGxvd3MgYW4gYWNjb3VudCB0byBzZXQgaXRzIHNlc3Npb24ga2V5IHByaW9yIHRvIGJlY29taW5nIGEgdmFsaWRhdG9yLsBUaGlzIGRvZXNuJ3QgdGFrZSBlZmZlY3QgdW50aWwgdGhlIG5leHQgc2Vzc2lvbi4AAQEtIGBvcmlnaW5gOiBUaGUgZGlzcGF0Y2ggb3JpZ2luIG9mIHRoaXMgZnVuY3Rpb24gbXVzdCBiZSBzaWduZWQuVQEtIGBrZXlzYDogVGhlIG5ldyBzZXNzaW9uIGtleXMgdG8gc2V0LiBUaGVzZSBhcmUgdGhlIHB1YmxpYyBrZXlzIG9mIGFsbCBzZXNzaW9ucyBrZXlzXCAgc2V0dXAgaW4gdGhlIHJ1bnRpbWUuQQEtIGBwcm9vZmA6IFRoZSBwcm9vZiB0aGF0IGBvcmlnaW5gIGhhcyBhY2Nlc3MgdG8gdGhlIHByaXZhdGUga2V5cyBvZiBga2V5c2AuIFNlZU0BICBbYGltcGxfb3BhcXVlX2tleXNgXShzcF9ydW50aW1lOjppbXBsX29wYXF1ZV9rZXlzKSBmb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCB0aGU8ICBwcm9vZiBmb3JtYXQuKHB1cmdlX2tleXMAASDIUmVtb3ZlcyBhbnkgc2Vzc2lvbiBrZXkocykgb2YgdGhlIGZ1bmN0aW9uIGNhbGxlci4AwFRoaXMgZG9lc24ndCB0YWtlIGVmZmVjdCB1bnRpbCB0aGUgbmV4dCBzZXNzaW9uLgBVAVRoZSBkaXNwYXRjaCBvcmlnaW4gb2YgdGhpcyBmdW5jdGlvbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIGFjY291bnQgbXVzdCBiZSBlaXRoZXIgYmVdAWNvbnZlcnRpYmxlIHRvIGEgdmFsaWRhdG9yIElEIHVzaW5nIHRoZSBjaGFpbidzIHR5cGljYWwgYWRkcmVzc2luZyBzeXN0ZW0gKHRoaXMgdXN1YWxseVEBbWVhbnMgYmVpbmcgYSBjb250cm9sbGVyIGFjY291bnQpIG9yIGRpcmVjdGx5IGNvbnZlcnRpYmxlIGludG8gYSB2YWxpZGF0b3IgSUQgKHdoaWNolHVzdWFsbHkgbWVhbnMgYmVpbmcgYSBzdGFzaCBhY2NvdW50KS4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMu1QEIYGFzc2V0X2h1Yl9rdXNhbWFfcnVudGltZSxTZXNzaW9uS2V5cwAABAEQYXVyYdkBAcQ8QXVyYSBhcyAkY3JhdGU6OkJvdW5kVG9SdW50aW1lQXBwUHVibGljPjo6UHVibGljAADZARBEc3BfY29uc2Vuc3VzX2F1cmEcc3IyNTUxOSxhcHBfc3IyNTUxORhQdWJsaWMAAAQACAE8c3IyNTUxOTo6UHVibGljAADdAQxkY3VtdWx1c19wYWxsZXRfeGNtcF9xdWV1ZRhwYWxsZXQQQ2FsbAQEVAABFFRzdXNwZW5kX3hjbV9leGVjdXRpb24AAQxJAVN1c3BlbmRzIGFsbCBYQ00gZXhlY3V0aW9ucyBmb3IgdGhlIFhDTVAgcXVldWUsIHJlZ2FyZGxlc3Mgb2YgdGhlIHNlbmRlcidzIG9yaWdpbi4ApC0gYG9yaWdpbmA6IE11c3QgcGFzcyBgQ29udHJvbGxlck9yaWdpbmAuUHJlc3VtZV94Y21fZXhlY3V0aW9uAAIUuFJlc3VtZXMgYWxsIFhDTSBleGVjdXRpb25zIGZvciB0aGUgWENNUCBxdWV1ZS4APQFOb3RlIHRoYXQgdGhpcyBmdW5jdGlvbiBkb2Vzbid0IGNoYW5nZSB0aGUgc3RhdHVzIG9mIHRoZSBpbi9vdXQgYm91bmQgY2hhbm5lbHMuAKQtIGBvcmlnaW5gOiBNdXN0IHBhc3MgYENvbnRyb2xsZXJPcmlnaW5gLmB1cGRhdGVfc3VzcGVuZF90aHJlc2hvbGQEAQxuZXc4AQx1MzIAAxRJAU92ZXJ3cml0ZXMgdGhlIG51bWJlciBvZiBwYWdlcyB3aGljaCBtdXN0IGJlIGluIHRoZSBxdWV1ZSBmb3IgdGhlIG90aGVyIHNpZGUgdG8gYmV4dG9sZCB0byBzdXNwZW5kIHRoZWlyIHNlbmRpbmcuAHQtIGBvcmlnaW5gOiBNdXN0IHBhc3MgYFJvb3RgLugtIGBuZXdgOiBEZXNpcmVkIHZhbHVlIGZvciBgUXVldWVDb25maWdEYXRhLnN1c3BlbmRfdmFsdWVgVHVwZGF0ZV9kcm9wX3RocmVzaG9sZAQBDG5ldzgBDHUzMgAEFEUBT3ZlcndyaXRlcyB0aGUgbnVtYmVyIG9mIHBhZ2VzIHdoaWNoIG11c3QgYmUgaW4gdGhlIHF1ZXVlIGFmdGVyIHdoaWNoIHdlIGRyb3AgYW55iGZ1cnRoZXIgbWVzc2FnZXMgZnJvbSB0aGUgY2hhbm5lbC4AdC0gYG9yaWdpbmA6IE11c3QgcGFzcyBgUm9vdGAu7C0gYG5ld2A6IERlc2lyZWQgdmFsdWUgZm9yIGBRdWV1ZUNvbmZpZ0RhdGEuZHJvcF90aHJlc2hvbGRgXHVwZGF0ZV9yZXN1bWVfdGhyZXNob2xkBAEMbmV3OAEMdTMyAAUUTQFPdmVyd3JpdGVzIHRoZSBudW1iZXIgb2YgcGFnZXMgd2hpY2ggdGhlIHF1ZXVlIG11c3QgYmUgcmVkdWNlZCB0byBiZWZvcmUgaXQgc2lnbmFscwEBdGhhdCBtZXNzYWdlIHNlbmRpbmcgbWF5IHJlY29tbWVuY2UgYWZ0ZXIgaXQgaGFzIGJlZW4gc3VzcGVuZGVkLgB0LSBgb3JpZ2luYDogTXVzdCBwYXNzIGBSb290YC70LSBgbmV3YDogRGVzaXJlZCB2YWx1ZSBmb3IgYFF1ZXVlQ29uZmlnRGF0YS5yZXN1bWVfdGhyZXNob2xkYAQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy7hAQwocGFsbGV0X3hjbRhwYWxsZXQQQ2FsbAQEVAABRBBzZW5kCAEQZGVzdOUBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAEcbWVzc2FnZW0CAVRCb3g8VmVyc2lvbmVkWGNtPCgpPj4AAAA8dGVsZXBvcnRfYXNzZXRzEAEQZGVzdOUBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAEsYmVuZWZpY2lhcnnlAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgABGGFzc2V0c6kDAVBCb3g8VmVyc2lvbmVkQXNzZXRzPgABOGZlZV9hc3NldF9pdGVtOAEMdTMyAAFIEQFUZWxlcG9ydCBzb21lIGFzc2V0cyBmcm9tIHRoZSBsb2NhbCBjaGFpbiB0byBzb21lIGRlc3RpbmF0aW9uIGNoYWluLgAdASoqVGhpcyBmdW5jdGlvbiBpcyBkZXByZWNhdGVkOiBVc2UgYGxpbWl0ZWRfdGVsZXBvcnRfYXNzZXRzYCBpbnN0ZWFkLioqAFEBRmVlIHBheW1lbnQgb24gdGhlIGRlc3RpbmF0aW9uIHNpZGUgaXMgbWFkZSBmcm9tIHRoZSBhc3NldCBpbiB0aGUgYGFzc2V0c2AgdmVjdG9yIG9mYQFpbmRleCBgZmVlX2Fzc2V0X2l0ZW1gLiBUaGUgd2VpZ2h0IGxpbWl0IGZvciBmZWVzIGlzIG5vdCBwcm92aWRlZCBhbmQgdGh1cyBpcyB1bmxpbWl0ZWQstHdpdGggYWxsIGZlZXMgdGFrZW4gYXMgbmVlZGVkIGZyb20gdGhlIGFzc2V0LgApAS0gYG9yaWdpbmA6IE11c3QgYmUgY2FwYWJsZSBvZiB3aXRoZHJhd2luZyB0aGUgYGFzc2V0c2AgYW5kIGV4ZWN1dGluZyBYQ00uJQEtIGBkZXN0YDogRGVzdGluYXRpb24gY29udGV4dCBmb3IgdGhlIGFzc2V0cy4gV2lsbCB0eXBpY2FsbHkgYmUgYFtQYXJlbnQsYQEgIFBhcmFjaGFpbiguLildYCB0byBzZW5kIGZyb20gcGFyYWNoYWluIHRvIHBhcmFjaGFpbiwgb3IgYFtQYXJhY2hhaW4oLi4pXWAgdG8gc2VuZCBmcm9tVCAgcmVsYXkgdG8gcGFyYWNoYWluLlUBLSBgYmVuZWZpY2lhcnlgOiBBIGJlbmVmaWNpYXJ5IGxvY2F0aW9uIGZvciB0aGUgYXNzZXRzIGluIHRoZSBjb250ZXh0IG9mIGBkZXN0YC4gV2lsbJggIGdlbmVyYWxseSBiZSBhbiBgQWNjb3VudElkMzJgIHZhbHVlLlkBLSBgYXNzZXRzYDogVGhlIGFzc2V0cyB0byBiZSB3aXRoZHJhd24uIFRoaXMgc2hvdWxkIGluY2x1ZGUgdGhlIGFzc2V0cyB1c2VkIHRvIHBheSB0aGVoICBmZWUgb24gdGhlIGBkZXN0YCBjaGFpbi5NAS0gYGZlZV9hc3NldF9pdGVtYDogVGhlIGluZGV4IGludG8gYGFzc2V0c2Agb2YgdGhlIGl0ZW0gd2hpY2ggc2hvdWxkIGJlIHVzZWQgdG8gcGF5HCAgZmVlcy5ccmVzZXJ2ZV90cmFuc2Zlcl9hc3NldHMQARBkZXN05QEBWEJveDxWZXJzaW9uZWRMb2NhdGlvbj4AASxiZW5lZmljaWFyeeUBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAEYYXNzZXRzqQMBUEJveDxWZXJzaW9uZWRBc3NldHM+AAE4ZmVlX2Fzc2V0X2l0ZW04AQx1MzIAAnhdAVRyYW5zZmVyIHNvbWUgYXNzZXRzIGZyb20gdGhlIGxvY2FsIGNoYWluIHRvIHRoZSBkZXN0aW5hdGlvbiBjaGFpbiB0aHJvdWdoIHRoZWlyIGxvY2FsLHhkZXN0aW5hdGlvbiBvciByZW1vdGUgcmVzZXJ2ZS4APQFgYXNzZXRzYCBtdXN0IGhhdmUgc2FtZSByZXNlcnZlIGxvY2F0aW9uIGFuZCBtYXkgbm90IGJlIHRlbGVwb3J0YWJsZSB0byBgZGVzdGAuTQEgLSBgYXNzZXRzYCBoYXZlIGxvY2FsIHJlc2VydmU6IHRyYW5zZmVyIGFzc2V0cyB0byBzb3ZlcmVpZ24gYWNjb3VudCBvZiBkZXN0aW5hdGlvbk0BICAgY2hhaW4gYW5kIGZvcndhcmQgYSBub3RpZmljYXRpb24gWENNIHRvIGBkZXN0YCB0byBtaW50IGFuZCBkZXBvc2l0IHJlc2VydmUtYmFzZWRsICAgYXNzZXRzIHRvIGBiZW5lZmljaWFyeWAuVQEgLSBgYXNzZXRzYCBoYXZlIGRlc3RpbmF0aW9uIHJlc2VydmU6IGJ1cm4gbG9jYWwgYXNzZXRzIGFuZCBmb3J3YXJkIGEgbm90aWZpY2F0aW9uIHRvWQEgICBgZGVzdGAgY2hhaW4gdG8gd2l0aGRyYXcgdGhlIHJlc2VydmUgYXNzZXRzIGZyb20gdGhpcyBjaGFpbidzIHNvdmVyZWlnbiBhY2NvdW50IGFuZIQgICBkZXBvc2l0IHRoZW0gdG8gYGJlbmVmaWNpYXJ5YC5hASAtIGBhc3NldHNgIGhhdmUgcmVtb3RlIHJlc2VydmU6IGJ1cm4gbG9jYWwgYXNzZXRzLCBmb3J3YXJkIFhDTSB0byByZXNlcnZlIGNoYWluIHRvIG1vdmVhASAgIHJlc2VydmVzIGZyb20gdGhpcyBjaGFpbidzIFNBIHRvIGBkZXN0YCBjaGFpbidzIFNBLCBhbmQgZm9yd2FyZCBhbm90aGVyIFhDTSB0byBgZGVzdGD0ICAgdG8gbWludCBhbmQgZGVwb3NpdCByZXNlcnZlLWJhc2VkIGFzc2V0cyB0byBgYmVuZWZpY2lhcnlgLgA9ASoqVGhpcyBmdW5jdGlvbiBpcyBkZXByZWNhdGVkOiBVc2UgYGxpbWl0ZWRfcmVzZXJ2ZV90cmFuc2Zlcl9hc3NldHNgIGluc3RlYWQuKioAUQFGZWUgcGF5bWVudCBvbiB0aGUgZGVzdGluYXRpb24gc2lkZSBpcyBtYWRlIGZyb20gdGhlIGFzc2V0IGluIHRoZSBgYXNzZXRzYCB2ZWN0b3Igb2ZhAWluZGV4IGBmZWVfYXNzZXRfaXRlbWAuIFRoZSB3ZWlnaHQgbGltaXQgZm9yIGZlZXMgaXMgbm90IHByb3ZpZGVkIGFuZCB0aHVzIGlzIHVubGltaXRlZCy0d2l0aCBhbGwgZmVlcyB0YWtlbiBhcyBuZWVkZWQgZnJvbSB0aGUgYXNzZXQuACkBLSBgb3JpZ2luYDogTXVzdCBiZSBjYXBhYmxlIG9mIHdpdGhkcmF3aW5nIHRoZSBgYXNzZXRzYCBhbmQgZXhlY3V0aW5nIFhDTS4lAS0gYGRlc3RgOiBEZXN0aW5hdGlvbiBjb250ZXh0IGZvciB0aGUgYXNzZXRzLiBXaWxsIHR5cGljYWxseSBiZSBgW1BhcmVudCxhASAgUGFyYWNoYWluKC4uKV1gIHRvIHNlbmQgZnJvbSBwYXJhY2hhaW4gdG8gcGFyYWNoYWluLCBvciBgW1BhcmFjaGFpbiguLildYCB0byBzZW5kIGZyb21UICByZWxheSB0byBwYXJhY2hhaW4uVQEtIGBiZW5lZmljaWFyeWA6IEEgYmVuZWZpY2lhcnkgbG9jYXRpb24gZm9yIHRoZSBhc3NldHMgaW4gdGhlIGNvbnRleHQgb2YgYGRlc3RgLiBXaWxsmCAgZ2VuZXJhbGx5IGJlIGFuIGBBY2NvdW50SWQzMmAgdmFsdWUuWQEtIGBhc3NldHNgOiBUaGUgYXNzZXRzIHRvIGJlIHdpdGhkcmF3bi4gVGhpcyBzaG91bGQgaW5jbHVkZSB0aGUgYXNzZXRzIHVzZWQgdG8gcGF5IHRoZcggIGZlZSBvbiB0aGUgYGRlc3RgIChhbmQgcG9zc2libHkgcmVzZXJ2ZSkgY2hhaW5zLk0BLSBgZmVlX2Fzc2V0X2l0ZW1gOiBUaGUgaW5kZXggaW50byBgYXNzZXRzYCBvZiB0aGUgaXRlbSB3aGljaCBzaG91bGQgYmUgdXNlZCB0byBwYXkcICBmZWVzLhxleGVjdXRlCAEcbWVzc2FnZa0DAbRCb3g8VmVyc2lvbmVkWGNtPDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPj4AAShtYXhfd2VpZ2h0eQEBGFdlaWdodAADINBFeGVjdXRlIGFuIFhDTSBtZXNzYWdlIGZyb20gYSBsb2NhbCwgc2lnbmVkLCBvcmlnaW4uAE0BQW4gZXZlbnQgaXMgZGVwb3NpdGVkIGluZGljYXRpbmcgd2hldGhlciBgbXNnYCBjb3VsZCBiZSBleGVjdXRlZCBjb21wbGV0ZWx5IG9yIG9ubHkocGFydGlhbGx5LgBdAU5vIG1vcmUgdGhhbiBgbWF4X3dlaWdodGAgd2lsbCBiZSB1c2VkIGluIGl0cyBhdHRlbXB0ZWQgZXhlY3V0aW9uLiBJZiB0aGlzIGlzIGxlc3MgdGhhbkEBdGhlIG1heGltdW0gYW1vdW50IG9mIHdlaWdodCB0aGF0IHRoZSBtZXNzYWdlIGNvdWxkIHRha2UgdG8gYmUgZXhlY3V0ZWQsIHRoZW4gbm98ZXhlY3V0aW9uIGF0dGVtcHQgd2lsbCBiZSBtYWRlLkRmb3JjZV94Y21fdmVyc2lvbggBIGxvY2F0aW9uOQIBNEJveDxMb2NhdGlvbj4AARx2ZXJzaW9uOAEoWGNtVmVyc2lvbgAEGEkBRXh0b2xsIHRoYXQgYSBwYXJ0aWN1bGFyIGRlc3RpbmF0aW9uIGNhbiBiZSBjb21tdW5pY2F0ZWQgd2l0aCB0aHJvdWdoIGEgcGFydGljdWxhcjx2ZXJzaW9uIG9mIFhDTS4A3C0gYG9yaWdpbmA6IE11c3QgYmUgYW4gb3JpZ2luIHNwZWNpZmllZCBieSBBZG1pbk9yaWdpbi7YLSBgbG9jYXRpb25gOiBUaGUgZGVzdGluYXRpb24gdGhhdCBpcyBiZWluZyBkZXNjcmliZWQuEQEtIGB4Y21fdmVyc2lvbmA6IFRoZSBsYXRlc3QgdmVyc2lvbiBvZiBYQ00gdGhhdCBgbG9jYXRpb25gIHN1cHBvcnRzLmRmb3JjZV9kZWZhdWx0X3hjbV92ZXJzaW9uBAFEbWF5YmVfeGNtX3ZlcnNpb27YAUhPcHRpb248WGNtVmVyc2lvbj4ABRRZAVNldCBhIHNhZmUgWENNIHZlcnNpb24gKHRoZSB2ZXJzaW9uIHRoYXQgWENNIHNob3VsZCBiZSBlbmNvZGVkIHdpdGggaWYgdGhlIG1vc3QgcmVjZW50tHZlcnNpb24gYSBkZXN0aW5hdGlvbiBjYW4gYWNjZXB0IGlzIHVua25vd24pLgDcLSBgb3JpZ2luYDogTXVzdCBiZSBhbiBvcmlnaW4gc3BlY2lmaWVkIGJ5IEFkbWluT3JpZ2luLjkBLSBgbWF5YmVfeGNtX3ZlcnNpb25gOiBUaGUgZGVmYXVsdCBYQ00gZW5jb2RpbmcgdmVyc2lvbiwgb3IgYE5vbmVgIHRvIGRpc2FibGUueGZvcmNlX3N1YnNjcmliZV92ZXJzaW9uX25vdGlmeQQBIGxvY2F0aW9u5QEBWEJveDxWZXJzaW9uZWRMb2NhdGlvbj4ABhA5AUFzayBhIGxvY2F0aW9uIHRvIG5vdGlmeSB1cyByZWdhcmRpbmcgdGhlaXIgWENNIHZlcnNpb24gYW5kIGFueSBjaGFuZ2VzIHRvIGl0LgDcLSBgb3JpZ2luYDogTXVzdCBiZSBhbiBvcmlnaW4gc3BlY2lmaWVkIGJ5IEFkbWluT3JpZ2luLlkBLSBgbG9jYXRpb25gOiBUaGUgbG9jYXRpb24gdG8gd2hpY2ggd2Ugc2hvdWxkIHN1YnNjcmliZSBmb3IgWENNIHZlcnNpb24gbm90aWZpY2F0aW9ucy6AZm9yY2VfdW5zdWJzY3JpYmVfdmVyc2lvbl9ub3RpZnkEASBsb2NhdGlvbuUBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAcYSQFSZXF1aXJlIHRoYXQgYSBwYXJ0aWN1bGFyIGRlc3RpbmF0aW9uIHNob3VsZCBubyBsb25nZXIgbm90aWZ5IHVzIHJlZ2FyZGluZyBhbnkgWENNQHZlcnNpb24gY2hhbmdlcy4A3C0gYG9yaWdpbmA6IE11c3QgYmUgYW4gb3JpZ2luIHNwZWNpZmllZCBieSBBZG1pbk9yaWdpbi49AS0gYGxvY2F0aW9uYDogVGhlIGxvY2F0aW9uIHRvIHdoaWNoIHdlIGFyZSBjdXJyZW50bHkgc3Vic2NyaWJlZCBmb3IgWENNIHZlcnNpb26oICBub3RpZmljYXRpb25zIHdoaWNoIHdlIG5vIGxvbmdlciBkZXNpcmUufGxpbWl0ZWRfcmVzZXJ2ZV90cmFuc2Zlcl9hc3NldHMUARBkZXN05QEBWEJveDxWZXJzaW9uZWRMb2NhdGlvbj4AASxiZW5lZmljaWFyeeUBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAEYYXNzZXRzqQMBUEJveDxWZXJzaW9uZWRBc3NldHM+AAE4ZmVlX2Fzc2V0X2l0ZW04AQx1MzIAATB3ZWlnaHRfbGltaXThAgEsV2VpZ2h0TGltaXQACHhdAVRyYW5zZmVyIHNvbWUgYXNzZXRzIGZyb20gdGhlIGxvY2FsIGNoYWluIHRvIHRoZSBkZXN0aW5hdGlvbiBjaGFpbiB0aHJvdWdoIHRoZWlyIGxvY2FsLHhkZXN0aW5hdGlvbiBvciByZW1vdGUgcmVzZXJ2ZS4APQFgYXNzZXRzYCBtdXN0IGhhdmUgc2FtZSByZXNlcnZlIGxvY2F0aW9uIGFuZCBtYXkgbm90IGJlIHRlbGVwb3J0YWJsZSB0byBgZGVzdGAuTQEgLSBgYXNzZXRzYCBoYXZlIGxvY2FsIHJlc2VydmU6IHRyYW5zZmVyIGFzc2V0cyB0byBzb3ZlcmVpZ24gYWNjb3VudCBvZiBkZXN0aW5hdGlvbk0BICAgY2hhaW4gYW5kIGZvcndhcmQgYSBub3RpZmljYXRpb24gWENNIHRvIGBkZXN0YCB0byBtaW50IGFuZCBkZXBvc2l0IHJlc2VydmUtYmFzZWRsICAgYXNzZXRzIHRvIGBiZW5lZmljaWFyeWAuVQEgLSBgYXNzZXRzYCBoYXZlIGRlc3RpbmF0aW9uIHJlc2VydmU6IGJ1cm4gbG9jYWwgYXNzZXRzIGFuZCBmb3J3YXJkIGEgbm90aWZpY2F0aW9uIHRvWQEgICBgZGVzdGAgY2hhaW4gdG8gd2l0aGRyYXcgdGhlIHJlc2VydmUgYXNzZXRzIGZyb20gdGhpcyBjaGFpbidzIHNvdmVyZWlnbiBhY2NvdW50IGFuZIQgICBkZXBvc2l0IHRoZW0gdG8gYGJlbmVmaWNpYXJ5YC5hASAtIGBhc3NldHNgIGhhdmUgcmVtb3RlIHJlc2VydmU6IGJ1cm4gbG9jYWwgYXNzZXRzLCBmb3J3YXJkIFhDTSB0byByZXNlcnZlIGNoYWluIHRvIG1vdmVhASAgIHJlc2VydmVzIGZyb20gdGhpcyBjaGFpbidzIFNBIHRvIGBkZXN0YCBjaGFpbidzIFNBLCBhbmQgZm9yd2FyZCBhbm90aGVyIFhDTSB0byBgZGVzdGD0ICAgdG8gbWludCBhbmQgZGVwb3NpdCByZXNlcnZlLWJhc2VkIGFzc2V0cyB0byBgYmVuZWZpY2lhcnlgLgBRAUZlZSBwYXltZW50IG9uIHRoZSBkZXN0aW5hdGlvbiBzaWRlIGlzIG1hZGUgZnJvbSB0aGUgYXNzZXQgaW4gdGhlIGBhc3NldHNgIHZlY3RvciBvZmEBaW5kZXggYGZlZV9hc3NldF9pdGVtYCwgdXAgdG8gZW5vdWdoIHRvIHBheSBmb3IgYHdlaWdodF9saW1pdGAgb2Ygd2VpZ2h0LiBJZiBtb3JlIHdlaWdodFkBaXMgbmVlZGVkIHRoYW4gYHdlaWdodF9saW1pdGAsIHRoZW4gdGhlIG9wZXJhdGlvbiB3aWxsIGZhaWwgYW5kIHRoZSBzZW50IGFzc2V0cyBtYXkgYmUgYXQgcmlzay4AKQEtIGBvcmlnaW5gOiBNdXN0IGJlIGNhcGFibGUgb2Ygd2l0aGRyYXdpbmcgdGhlIGBhc3NldHNgIGFuZCBleGVjdXRpbmcgWENNLiUBLSBgZGVzdGA6IERlc3RpbmF0aW9uIGNvbnRleHQgZm9yIHRoZSBhc3NldHMuIFdpbGwgdHlwaWNhbGx5IGJlIGBbUGFyZW50LGEBICBQYXJhY2hhaW4oLi4pXWAgdG8gc2VuZCBmcm9tIHBhcmFjaGFpbiB0byBwYXJhY2hhaW4sIG9yIGBbUGFyYWNoYWluKC4uKV1gIHRvIHNlbmQgZnJvbVQgIHJlbGF5IHRvIHBhcmFjaGFpbi5VAS0gYGJlbmVmaWNpYXJ5YDogQSBiZW5lZmljaWFyeSBsb2NhdGlvbiBmb3IgdGhlIGFzc2V0cyBpbiB0aGUgY29udGV4dCBvZiBgZGVzdGAuIFdpbGyYICBnZW5lcmFsbHkgYmUgYW4gYEFjY291bnRJZDMyYCB2YWx1ZS5ZAS0gYGFzc2V0c2A6IFRoZSBhc3NldHMgdG8gYmUgd2l0aGRyYXduLiBUaGlzIHNob3VsZCBpbmNsdWRlIHRoZSBhc3NldHMgdXNlZCB0byBwYXkgdGhlyCAgZmVlIG9uIHRoZSBgZGVzdGAgKGFuZCBwb3NzaWJseSByZXNlcnZlKSBjaGFpbnMuTQEtIGBmZWVfYXNzZXRfaXRlbWA6IFRoZSBpbmRleCBpbnRvIGBhc3NldHNgIG9mIHRoZSBpdGVtIHdoaWNoIHNob3VsZCBiZSB1c2VkIHRvIHBheRwgIGZlZXMuRQEtIGB3ZWlnaHRfbGltaXRgOiBUaGUgcmVtb3RlLXNpZGUgd2VpZ2h0IGxpbWl0LCBpZiBhbnksIGZvciB0aGUgWENNIGZlZSBwdXJjaGFzZS5cbGltaXRlZF90ZWxlcG9ydF9hc3NldHMUARBkZXN05QEBWEJveDxWZXJzaW9uZWRMb2NhdGlvbj4AASxiZW5lZmljaWFyeeUBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAEYYXNzZXRzqQMBUEJveDxWZXJzaW9uZWRBc3NldHM+AAE4ZmVlX2Fzc2V0X2l0ZW04AQx1MzIAATB3ZWlnaHRfbGltaXThAgEsV2VpZ2h0TGltaXQACUgRAVRlbGVwb3J0IHNvbWUgYXNzZXRzIGZyb20gdGhlIGxvY2FsIGNoYWluIHRvIHNvbWUgZGVzdGluYXRpb24gY2hhaW4uAFEBRmVlIHBheW1lbnQgb24gdGhlIGRlc3RpbmF0aW9uIHNpZGUgaXMgbWFkZSBmcm9tIHRoZSBhc3NldCBpbiB0aGUgYGFzc2V0c2AgdmVjdG9yIG9mYQFpbmRleCBgZmVlX2Fzc2V0X2l0ZW1gLCB1cCB0byBlbm91Z2ggdG8gcGF5IGZvciBgd2VpZ2h0X2xpbWl0YCBvZiB3ZWlnaHQuIElmIG1vcmUgd2VpZ2h0WQFpcyBuZWVkZWQgdGhhbiBgd2VpZ2h0X2xpbWl0YCwgdGhlbiB0aGUgb3BlcmF0aW9uIHdpbGwgZmFpbCBhbmQgdGhlIHNlbnQgYXNzZXRzIG1heSBiZSBhdCByaXNrLgApAS0gYG9yaWdpbmA6IE11c3QgYmUgY2FwYWJsZSBvZiB3aXRoZHJhd2luZyB0aGUgYGFzc2V0c2AgYW5kIGV4ZWN1dGluZyBYQ00uJQEtIGBkZXN0YDogRGVzdGluYXRpb24gY29udGV4dCBmb3IgdGhlIGFzc2V0cy4gV2lsbCB0eXBpY2FsbHkgYmUgYFtQYXJlbnQsYQEgIFBhcmFjaGFpbiguLildYCB0byBzZW5kIGZyb20gcGFyYWNoYWluIHRvIHBhcmFjaGFpbiwgb3IgYFtQYXJhY2hhaW4oLi4pXWAgdG8gc2VuZCBmcm9tVCAgcmVsYXkgdG8gcGFyYWNoYWluLlUBLSBgYmVuZWZpY2lhcnlgOiBBIGJlbmVmaWNpYXJ5IGxvY2F0aW9uIGZvciB0aGUgYXNzZXRzIGluIHRoZSBjb250ZXh0IG9mIGBkZXN0YC4gV2lsbJggIGdlbmVyYWxseSBiZSBhbiBgQWNjb3VudElkMzJgIHZhbHVlLlkBLSBgYXNzZXRzYDogVGhlIGFzc2V0cyB0byBiZSB3aXRoZHJhd24uIFRoaXMgc2hvdWxkIGluY2x1ZGUgdGhlIGFzc2V0cyB1c2VkIHRvIHBheSB0aGVoICBmZWUgb24gdGhlIGBkZXN0YCBjaGFpbi5NAS0gYGZlZV9hc3NldF9pdGVtYDogVGhlIGluZGV4IGludG8gYGFzc2V0c2Agb2YgdGhlIGl0ZW0gd2hpY2ggc2hvdWxkIGJlIHVzZWQgdG8gcGF5HCAgZmVlcy5FAS0gYHdlaWdodF9saW1pdGA6IFRoZSByZW1vdGUtc2lkZSB3ZWlnaHQgbGltaXQsIGlmIGFueSwgZm9yIHRoZSBYQ00gZmVlIHB1cmNoYXNlLkBmb3JjZV9zdXNwZW5zaW9uBAEkc3VzcGVuZGVkmQEBEGJvb2wAChD0U2V0IG9yIHVuc2V0IHRoZSBnbG9iYWwgc3VzcGVuc2lvbiBzdGF0ZSBvZiB0aGUgWENNIGV4ZWN1dG9yLgDcLSBgb3JpZ2luYDogTXVzdCBiZSBhbiBvcmlnaW4gc3BlY2lmaWVkIGJ5IEFkbWluT3JpZ2luLtAtIGBzdXNwZW5kZWRgOiBgdHJ1ZWAgdG8gc3VzcGVuZCwgYGZhbHNlYCB0byByZXN1bWUuPHRyYW5zZmVyX2Fzc2V0cxQBEGRlc3TlAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgABLGJlbmVmaWNpYXJ55QEBWEJveDxWZXJzaW9uZWRMb2NhdGlvbj4AARhhc3NldHOpAwFQQm94PFZlcnNpb25lZEFzc2V0cz4AAThmZWVfYXNzZXRfaXRlbTgBDHUzMgABMHdlaWdodF9saW1pdOECASxXZWlnaHRMaW1pdAALhF0BVHJhbnNmZXIgc29tZSBhc3NldHMgZnJvbSB0aGUgbG9jYWwgY2hhaW4gdG8gdGhlIGRlc3RpbmF0aW9uIGNoYWluIHRocm91Z2ggdGhlaXIgbG9jYWws0GRlc3RpbmF0aW9uIG9yIHJlbW90ZSByZXNlcnZlLCBvciB0aHJvdWdoIHRlbGVwb3J0cy4AUQFGZWUgcGF5bWVudCBvbiB0aGUgZGVzdGluYXRpb24gc2lkZSBpcyBtYWRlIGZyb20gdGhlIGFzc2V0IGluIHRoZSBgYXNzZXRzYCB2ZWN0b3Igb2Y1AWluZGV4IGBmZWVfYXNzZXRfaXRlbWAgKGhlbmNlIHJlZmVycmVkIHRvIGFzIGBmZWVzYCksIHVwIHRvIGVub3VnaCB0byBwYXkgZm9yQQFgd2VpZ2h0X2xpbWl0YCBvZiB3ZWlnaHQuIElmIG1vcmUgd2VpZ2h0IGlzIG5lZWRlZCB0aGFuIGB3ZWlnaHRfbGltaXRgLCB0aGVuIHRoZdxvcGVyYXRpb24gd2lsbCBmYWlsIGFuZCB0aGUgc2VudCBhc3NldHMgbWF5IGJlIGF0IHJpc2suAGEBYGFzc2V0c2AgKGV4Y2x1ZGluZyBgZmVlc2ApIG11c3QgaGF2ZSBzYW1lIHJlc2VydmUgbG9jYXRpb24gb3Igb3RoZXJ3aXNlIGJlIHRlbGVwb3J0YWJsZbB0byBgZGVzdGAsIG5vIGxpbWl0YXRpb25zIGltcG9zZWQgb24gYGZlZXNgLk0BIC0gZm9yIGxvY2FsIHJlc2VydmU6IHRyYW5zZmVyIGFzc2V0cyB0byBzb3ZlcmVpZ24gYWNjb3VudCBvZiBkZXN0aW5hdGlvbiBjaGFpbiBhbmRNASAgIGZvcndhcmQgYSBub3RpZmljYXRpb24gWENNIHRvIGBkZXN0YCB0byBtaW50IGFuZCBkZXBvc2l0IHJlc2VydmUtYmFzZWQgYXNzZXRzIHRvRCAgIGBiZW5lZmljaWFyeWAuYQEgLSBmb3IgZGVzdGluYXRpb24gcmVzZXJ2ZTogYnVybiBsb2NhbCBhc3NldHMgYW5kIGZvcndhcmQgYSBub3RpZmljYXRpb24gdG8gYGRlc3RgIGNoYWluWQEgICB0byB3aXRoZHJhdyB0aGUgcmVzZXJ2ZSBhc3NldHMgZnJvbSB0aGlzIGNoYWluJ3Mgc292ZXJlaWduIGFjY291bnQgYW5kIGRlcG9zaXQgdGhlbVAgICB0byBgYmVuZWZpY2lhcnlgLl0BIC0gZm9yIHJlbW90ZSByZXNlcnZlOiBidXJuIGxvY2FsIGFzc2V0cywgZm9yd2FyZCBYQ00gdG8gcmVzZXJ2ZSBjaGFpbiB0byBtb3ZlIHJlc2VydmVzXQEgICBmcm9tIHRoaXMgY2hhaW4ncyBTQSB0byBgZGVzdGAgY2hhaW4ncyBTQSwgYW5kIGZvcndhcmQgYW5vdGhlciBYQ00gdG8gYGRlc3RgIHRvIG1pbnTUICAgYW5kIGRlcG9zaXQgcmVzZXJ2ZS1iYXNlZCBhc3NldHMgdG8gYGJlbmVmaWNpYXJ5YC5RASAtIGZvciB0ZWxlcG9ydHM6IGJ1cm4gbG9jYWwgYXNzZXRzIGFuZCBmb3J3YXJkIFhDTSB0byBgZGVzdGAgY2hhaW4gdG8gbWludC90ZWxlcG9ydLAgICBhc3NldHMgYW5kIGRlcG9zaXQgdGhlbSB0byBgYmVuZWZpY2lhcnlgLgApAS0gYG9yaWdpbmA6IE11c3QgYmUgY2FwYWJsZSBvZiB3aXRoZHJhd2luZyB0aGUgYGFzc2V0c2AgYW5kIGV4ZWN1dGluZyBYQ00uLQEtIGBkZXN0YDogRGVzdGluYXRpb24gY29udGV4dCBmb3IgdGhlIGFzc2V0cy4gV2lsbCB0eXBpY2FsbHkgYmUgYFgyKFBhcmVudCxVASAgUGFyYWNoYWluKC4uKSlgIHRvIHNlbmQgZnJvbSBwYXJhY2hhaW4gdG8gcGFyYWNoYWluLCBvciBgWDEoUGFyYWNoYWluKC4uKSlgIHRvIHNlbmRoICBmcm9tIHJlbGF5IHRvIHBhcmFjaGFpbi5VAS0gYGJlbmVmaWNpYXJ5YDogQSBiZW5lZmljaWFyeSBsb2NhdGlvbiBmb3IgdGhlIGFzc2V0cyBpbiB0aGUgY29udGV4dCBvZiBgZGVzdGAuIFdpbGyYICBnZW5lcmFsbHkgYmUgYW4gYEFjY291bnRJZDMyYCB2YWx1ZS5ZAS0gYGFzc2V0c2A6IFRoZSBhc3NldHMgdG8gYmUgd2l0aGRyYXduLiBUaGlzIHNob3VsZCBpbmNsdWRlIHRoZSBhc3NldHMgdXNlZCB0byBwYXkgdGhlyCAgZmVlIG9uIHRoZSBgZGVzdGAgKGFuZCBwb3NzaWJseSByZXNlcnZlKSBjaGFpbnMuTQEtIGBmZWVfYXNzZXRfaXRlbWA6IFRoZSBpbmRleCBpbnRvIGBhc3NldHNgIG9mIHRoZSBpdGVtIHdoaWNoIHNob3VsZCBiZSB1c2VkIHRvIHBheRwgIGZlZXMuRQEtIGB3ZWlnaHRfbGltaXRgOiBUaGUgcmVtb3RlLXNpZGUgd2VpZ2h0IGxpbWl0LCBpZiBhbnksIGZvciB0aGUgWENNIGZlZSBwdXJjaGFzZS4wY2xhaW1fYXNzZXRzCAEYYXNzZXRzqQMBUEJveDxWZXJzaW9uZWRBc3NldHM+AAEsYmVuZWZpY2lhcnnlAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgAMGFUBQ2xhaW1zIGFzc2V0cyB0cmFwcGVkIG9uIHRoaXMgcGFsbGV0IGJlY2F1c2Ugb2YgbGVmdG92ZXIgYXNzZXRzIGR1cmluZyBYQ00gZXhlY3V0aW9uLgCsLSBgb3JpZ2luYDogQW55b25lIGNhbiBjYWxsIHRoaXMgZXh0cmluc2ljLl0BLSBgYXNzZXRzYDogVGhlIGV4YWN0IGFzc2V0cyB0aGF0IHdlcmUgdHJhcHBlZC4gVXNlIHRoZSB2ZXJzaW9uIHRvIHNwZWNpZnkgd2hhdCB2ZXJzaW9umHdhcyB0aGUgbGF0ZXN0IHdoZW4gdGhleSB3ZXJlIHRyYXBwZWQuRQEtIGBiZW5lZmljaWFyeWA6IFRoZSBsb2NhdGlvbi9hY2NvdW50IHdoZXJlIHRoZSBjbGFpbWVkIGFzc2V0cyB3aWxsIGJlIGRlcG9zaXRlZC6MdHJhbnNmZXJfYXNzZXRzX3VzaW5nX3R5cGVfYW5kX3RoZW4cARBkZXN05QEBWEJveDxWZXJzaW9uZWRMb2NhdGlvbj4AARhhc3NldHOpAwFQQm94PFZlcnNpb25lZEFzc2V0cz4AAVBhc3NldHNfdHJhbnNmZXJfdHlwZdkDAURCb3g8VHJhbnNmZXJUeXBlPgABOHJlbW90ZV9mZWVzX2lk3QMBVEJveDxWZXJzaW9uZWRBc3NldElkPgABSGZlZXNfdHJhbnNmZXJfdHlwZdkDAURCb3g8VHJhbnNmZXJUeXBlPgABSGN1c3RvbV94Y21fb25fZGVzdG0CAVRCb3g8VmVyc2lvbmVkWGNtPCgpPj4AATB3ZWlnaHRfbGltaXThAgEsV2VpZ2h0TGltaXQADcBVAVRyYW5zZmVyIGFzc2V0cyBmcm9tIHRoZSBsb2NhbCBjaGFpbiB0byB0aGUgZGVzdGluYXRpb24gY2hhaW4gdXNpbmcgZXhwbGljaXQgdHJhbnNmZXJodHlwZXMgZm9yIGFzc2V0cyBhbmQgZmVlcy4AWQFgYXNzZXRzYCBtdXN0IGhhdmUgc2FtZSByZXNlcnZlIGxvY2F0aW9uIG9yIG1heSBiZSB0ZWxlcG9ydGFibGUgdG8gYGRlc3RgLiBDYWxsZXIgbXVzdOxwcm92aWRlIHRoZSBgYXNzZXRzX3RyYW5zZmVyX3R5cGVgIHRvIGJlIHVzZWQgZm9yIGBhc3NldHNgOlEBIC0gYFRyYW5zZmVyVHlwZTo6TG9jYWxSZXNlcnZlYDogdHJhbnNmZXIgYXNzZXRzIHRvIHNvdmVyZWlnbiBhY2NvdW50IG9mIGRlc3RpbmF0aW9uTQEgICBjaGFpbiBhbmQgZm9yd2FyZCBhIG5vdGlmaWNhdGlvbiBYQ00gdG8gYGRlc3RgIHRvIG1pbnQgYW5kIGRlcG9zaXQgcmVzZXJ2ZS1iYXNlZGwgICBhc3NldHMgdG8gYGJlbmVmaWNpYXJ5YC5ZASAtIGBUcmFuc2ZlclR5cGU6OkRlc3RpbmF0aW9uUmVzZXJ2ZWA6IGJ1cm4gbG9jYWwgYXNzZXRzIGFuZCBmb3J3YXJkIGEgbm90aWZpY2F0aW9uIHRvWQEgICBgZGVzdGAgY2hhaW4gdG8gd2l0aGRyYXcgdGhlIHJlc2VydmUgYXNzZXRzIGZyb20gdGhpcyBjaGFpbidzIHNvdmVyZWlnbiBhY2NvdW50IGFuZIQgICBkZXBvc2l0IHRoZW0gdG8gYGJlbmVmaWNpYXJ5YC5ZASAtIGBUcmFuc2ZlclR5cGU6OlJlbW90ZVJlc2VydmUocmVzZXJ2ZSlgOiBidXJuIGxvY2FsIGFzc2V0cywgZm9yd2FyZCBYQ00gdG8gYHJlc2VydmVgYQEgICBjaGFpbiB0byBtb3ZlIHJlc2VydmVzIGZyb20gdGhpcyBjaGFpbidzIFNBIHRvIGBkZXN0YCBjaGFpbidzIFNBLCBhbmQgZm9yd2FyZCBhbm90aGVyVQEgICBYQ00gdG8gYGRlc3RgIHRvIG1pbnQgYW5kIGRlcG9zaXQgcmVzZXJ2ZS1iYXNlZCBhc3NldHMgdG8gYGJlbmVmaWNpYXJ5YC4gVHlwaWNhbGx5lCAgIHRoZSByZW1vdGUgYHJlc2VydmVgIGlzIEFzc2V0IEh1Yi5FASAtIGBUcmFuc2ZlclR5cGU6OlRlbGVwb3J0YDogYnVybiBsb2NhbCBhc3NldHMgYW5kIGZvcndhcmQgWENNIHRvIGBkZXN0YCBjaGFpbiB0b+ggICBtaW50L3RlbGVwb3J0IGFzc2V0cyBhbmQgZGVwb3NpdCB0aGVtIHRvIGBiZW5lZmljaWFyeWAuAFUBT24gdGhlIGRlc3RpbmF0aW9uIGNoYWluLCBhcyB3ZWxsIGFzIGFueSBpbnRlcm1lZGlhcnkgaG9wcywgYEJ1eUV4ZWN1dGlvbmAgaXMgdXNlZCB0byEBYnV5IGV4ZWN1dGlvbiB1c2luZyB0cmFuc2ZlcnJlZCBgYXNzZXRzYCBpZGVudGlmaWVkIGJ5IGByZW1vdGVfZmVlc19pZGAuWQFNYWtlIHN1cmUgZW5vdWdoIG9mIHRoZSBzcGVjaWZpZWQgYHJlbW90ZV9mZWVzX2lkYCBhc3NldCBpcyBpbmNsdWRlZCBpbiB0aGUgZ2l2ZW4gbGlzdGEBb2YgYGFzc2V0c2AuIGByZW1vdGVfZmVlc19pZGAgc2hvdWxkIGJlIGVub3VnaCB0byBwYXkgZm9yIGB3ZWlnaHRfbGltaXRgLiBJZiBtb3JlIHdlaWdodFkBaXMgbmVlZGVkIHRoYW4gYHdlaWdodF9saW1pdGAsIHRoZW4gdGhlIG9wZXJhdGlvbiB3aWxsIGZhaWwgYW5kIHRoZSBzZW50IGFzc2V0cyBtYXkgYmUgYXQgcmlzay4ARQFgcmVtb3RlX2ZlZXNfaWRgIG1heSB1c2UgZGlmZmVyZW50IHRyYW5zZmVyIHR5cGUgdGhhbiByZXN0IG9mIGBhc3NldHNgIGFuZCBjYW4gYmWcc3BlY2lmaWVkIHRocm91Z2ggYGZlZXNfdHJhbnNmZXJfdHlwZWAuAGEBVGhlIGNhbGxlciBuZWVkcyB0byBzcGVjaWZ5IHdoYXQgc2hvdWxkIGhhcHBlbiB0byB0aGUgdHJhbnNmZXJyZWQgYXNzZXRzIG9uY2UgdGhleSByZWFjaEEBdGhlIGBkZXN0YCBjaGFpbi4gVGhpcyBpcyBkb25lIHRocm91Z2ggdGhlIGBjdXN0b21feGNtX29uX2Rlc3RgIHBhcmFtZXRlciwgd2hpY2j8Y29udGFpbnMgdGhlIGluc3RydWN0aW9ucyB0byBleGVjdXRlIG9uIGBkZXN0YCBhcyBhIGZpbmFsIHN0ZXAufCAgVGhpcyBpcyB1c3VhbGx5IGFzIHNpbXBsZSBhczpRASAgYFhjbSh2ZWMhW0RlcG9zaXRBc3NldCB7IGFzc2V0czogV2lsZChBbGxDb3VudGVkKGFzc2V0cy5sZW4oKSkpLCBiZW5lZmljaWFyeSB9XSlgLDEBICBidXQgY291bGQgYmUgc29tZXRoaW5nIG1vcmUgZXhvdGljIGxpa2Ugc2VuZGluZyB0aGUgYGFzc2V0c2AgZXZlbiBmdXJ0aGVyLgApAS0gYG9yaWdpbmA6IE11c3QgYmUgY2FwYWJsZSBvZiB3aXRoZHJhd2luZyB0aGUgYGFzc2V0c2AgYW5kIGV4ZWN1dGluZyBYQ00uJQEtIGBkZXN0YDogRGVzdGluYXRpb24gY29udGV4dCBmb3IgdGhlIGFzc2V0cy4gV2lsbCB0eXBpY2FsbHkgYmUgYFtQYXJlbnQsYQEgIFBhcmFjaGFpbiguLildYCB0byBzZW5kIGZyb20gcGFyYWNoYWluIHRvIHBhcmFjaGFpbiwgb3IgYFtQYXJhY2hhaW4oLi4pXWAgdG8gc2VuZCBmcm9tPQEgIHJlbGF5IHRvIHBhcmFjaGFpbiwgb3IgYChwYXJlbnRzOiAyLCAoR2xvYmFsQ29uc2Vuc3VzKC4uKSwgLi4pKWAgdG8gc2VuZCBmcm9t9CAgcGFyYWNoYWluIGFjcm9zcyBhIGJyaWRnZSB0byBhbm90aGVyIGVjb3N5c3RlbSBkZXN0aW5hdGlvbi5ZAS0gYGFzc2V0c2A6IFRoZSBhc3NldHMgdG8gYmUgd2l0aGRyYXduLiBUaGlzIHNob3VsZCBpbmNsdWRlIHRoZSBhc3NldHMgdXNlZCB0byBwYXkgdGhlyCAgZmVlIG9uIHRoZSBgZGVzdGAgKGFuZCBwb3NzaWJseSByZXNlcnZlKSBjaGFpbnMuPQEtIGBhc3NldHNfdHJhbnNmZXJfdHlwZWA6IFRoZSBYQ00gYFRyYW5zZmVyVHlwZWAgdXNlZCB0byB0cmFuc2ZlciB0aGUgYGFzc2V0c2AuIQEtIGByZW1vdGVfZmVlc19pZGA6IE9uZSBvZiB0aGUgaW5jbHVkZWQgYGFzc2V0c2AgdG8gYmUgdXNlZCB0byBwYXkgZmVlcy5JAS0gYGZlZXNfdHJhbnNmZXJfdHlwZWA6IFRoZSBYQ00gYFRyYW5zZmVyVHlwZWAgdXNlZCB0byB0cmFuc2ZlciB0aGUgYGZlZXNgIGFzc2V0cy5ZAS0gYGN1c3RvbV94Y21fb25fZGVzdGA6IFRoZSBYQ00gdG8gYmUgZXhlY3V0ZWQgb24gYGRlc3RgIGNoYWluIGFzIHRoZSBsYXN0IHN0ZXAgb2YgdGhlWQEgIHRyYW5zZmVyLCB3aGljaCBhbHNvIGRldGVybWluZXMgd2hhdCBoYXBwZW5zIHRvIHRoZSBhc3NldHMgb24gdGhlIGRlc3RpbmF0aW9uIGNoYWluLkUBLSBgd2VpZ2h0X2xpbWl0YDogVGhlIHJlbW90ZS1zaWRlIHdlaWdodCBsaW1pdCwgaWYgYW55LCBmb3IgdGhlIFhDTSBmZWUgcHVyY2hhc2UuUGFkZF9hdXRob3JpemVkX2FsaWFzCAEcYWxpYXNlcuUBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAEcZXhwaXJlc2UBASxPcHRpb248dTY0PgAOLF0BQXV0aG9yaXplIGFub3RoZXIgYGFsaWFzZXJgIGxvY2F0aW9uIHRvIGFsaWFzIGludG8gdGhlIGxvY2FsIGBvcmlnaW5gIG1ha2luZyB0aGlzIGNhbGwuKQFUaGUgYGFsaWFzZXJgIGlzIG9ubHkgYXV0aG9yaXplZCB1bnRpbCB0aGUgcHJvdmlkZWQgYGV4cGlyeWAgYmxvY2sgbnVtYmVyLkkBVGhlIGNhbGwgY2FuIGFsc28gYmUgdXNlZCBmb3IgYSBwcmV2aW91c2x5IGF1dGhvcml6ZWQgYWxpYXMgaW4gb3JkZXIgdG8gdXBkYXRlIGl0c1hgZXhwaXJ5YCBibG9jayBudW1iZXIuAFEBVXN1YWxseSB1c2VmdWwgdG8gYWxsb3cgeW91ciBsb2NhbCBhY2NvdW50IHRvIGJlIGFsaWFzZWQgaW50byBmcm9tIGEgcmVtb3RlIGxvY2F0aW9u9GFsc28gdW5kZXIgeW91ciBjb250cm9sIChsaWtlIHlvdXIgYWNjb3VudCBvbiBhbm90aGVyIGNoYWluKS4AUQFXQVJOSU5HOiBtYWtlIHN1cmUgdGhlIGNhbGxlciBgb3JpZ2luYCAoeW91KSB0cnVzdHMgdGhlIGBhbGlhc2VyYCBsb2NhdGlvbiB0byBhY3QgaW5ZAXRoZWlyL3lvdXIgbmFtZS4gT25jZSBhdXRob3JpemVkIHVzaW5nIHRoaXMgY2FsbCwgdGhlIGBhbGlhc2VyYCBjYW4gZnJlZWx5IGltcGVyc29uYXRl1GBvcmlnaW5gIGluIFhDTSBwcm9ncmFtcyBleGVjdXRlZCBvbiB0aGUgbG9jYWwgY2hhaW4uXHJlbW92ZV9hdXRob3JpemVkX2FsaWFzBAEcYWxpYXNlcuUBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AA8IXQFSZW1vdmUgYSBwcmV2aW91c2x5IGF1dGhvcml6ZWQgYGFsaWFzZXJgIGZyb20gdGhlIGxpc3Qgb2YgbG9jYXRpb25zIHRoYXQgY2FuIGFsaWFzIGludG+QdGhlIGxvY2FsIGBvcmlnaW5gIG1ha2luZyB0aGlzIGNhbGwudHJlbW92ZV9hbGxfYXV0aG9yaXplZF9hbGlhc2VzABAISQFSZW1vdmUgYWxsIHByZXZpb3VzbHkgYXV0aG9yaXplZCBgYWxpYXNlcmBzIHRoYXQgY2FuIGFsaWFzIGludG8gdGhlIGxvY2FsIGBvcmlnaW5gRG1ha2luZyB0aGlzIGNhbGwuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLuUBCAx4Y21EVmVyc2lvbmVkTG9jYXRpb24AAQwIVjMEAOkBAUR2Mzo6TXVsdGlMb2NhdGlvbgADAAhWNAQABQIBMHY0OjpMb2NhdGlvbgAEAAhWNQQAOQIBMHY1OjpMb2NhdGlvbgAFAADpARAsc3RhZ2luZ194Y20IdjM0bXVsdGlsb2NhdGlvbjRNdWx0aUxvY2F0aW9uAAAIARxwYXJlbnRzDAEIdTgAASBpbnRlcmlvcu0BASRKdW5jdGlvbnMAAO0BEAx4Y20IdjMkanVuY3Rpb25zJEp1bmN0aW9ucwABJBBIZXJlAAAACFgxBADxAQEgSnVuY3Rpb24AAQAIWDIIAPEBASBKdW5jdGlvbgAA8QEBIEp1bmN0aW9uAAIACFgzDADxAQEgSnVuY3Rpb24AAPEBASBKdW5jdGlvbgAA8QEBIEp1bmN0aW9uAAMACFg0EADxAQEgSnVuY3Rpb24AAPEBASBKdW5jdGlvbgAA8QEBIEp1bmN0aW9uAADxAQEgSnVuY3Rpb24ABAAIWDUUAPEBASBKdW5jdGlvbgAA8QEBIEp1bmN0aW9uAADxAQEgSnVuY3Rpb24AAPEBASBKdW5jdGlvbgAA8QEBIEp1bmN0aW9uAAUACFg2GADxAQEgSnVuY3Rpb24AAPEBASBKdW5jdGlvbgAA8QEBIEp1bmN0aW9uAADxAQEgSnVuY3Rpb24AAPEBASBKdW5jdGlvbgAA8QEBIEp1bmN0aW9uAAYACFg3HADxAQEgSnVuY3Rpb24AAPEBASBKdW5jdGlvbgAA8QEBIEp1bmN0aW9uAADxAQEgSnVuY3Rpb24AAPEBASBKdW5jdGlvbgAA8QEBIEp1bmN0aW9uAADxAQEgSnVuY3Rpb24ABwAIWDggAPEBASBKdW5jdGlvbgAA8QEBIEp1bmN0aW9uAADxAQEgSnVuY3Rpb24AAPEBASBKdW5jdGlvbgAA8QEBIEp1bmN0aW9uAADxAQEgSnVuY3Rpb24AAPEBASBKdW5jdGlvbgAA8QEBIEp1bmN0aW9uAAgAAPEBEAx4Y20IdjMganVuY3Rpb24gSnVuY3Rpb24AASgkUGFyYWNoYWluBABkAQx1MzIAAAAsQWNjb3VudElkMzIIARxuZXR3b3Jr9QEBRE9wdGlvbjxOZXR3b3JrSWQ+AAEIaWQIASBbdTg7IDMyXQABADhBY2NvdW50SW5kZXg2NAgBHG5ldHdvcmv1AQFET3B0aW9uPE5ldHdvcmtJZD4AARRpbmRleLgBDHU2NAACADBBY2NvdW50S2V5MjAIARxuZXR3b3Jr9QEBRE9wdGlvbjxOZXR3b3JrSWQ+AAEMa2V5HAEgW3U4OyAyMF0AAwA4UGFsbGV0SW5zdGFuY2UEAAwBCHU4AAQAMEdlbmVyYWxJbmRleAQAkQEBEHUxMjgABQAoR2VuZXJhbEtleQgBGGxlbmd0aAwBCHU4AAEQZGF0YQgBIFt1ODsgMzJdAAYAJE9ubHlDaGlsZAAHACRQbHVyYWxpdHkIAQhpZP0BARhCb2R5SWQAARBwYXJ0AQIBIEJvZHlQYXJ0AAgAPEdsb2JhbENvbnNlbnN1cwQA+QEBJE5ldHdvcmtJZAAJAAD1AQQYT3B0aW9uBARUAfkBAQgQTm9uZQAAABBTb21lBAD5AQAAAQAA+QEQDHhjbQh2MyBqdW5jdGlvbiROZXR3b3JrSWQAASwkQnlHZW5lc2lzBAAIASBbdTg7IDMyXQAAABhCeUZvcmsIATBibG9ja19udW1iZXIoAQx1NjQAAShibG9ja19oYXNoCAEgW3U4OyAzMl0AAQAgUG9sa2Fkb3QAAgAYS3VzYW1hAAMAHFdlc3RlbmQABAAYUm9jb2NvAAUAGFdvY29jbwAGACBFdGhlcmV1bQQBIGNoYWluX2lkuAEMdTY0AAcALEJpdGNvaW5Db3JlAAgALEJpdGNvaW5DYXNoAAkAQFBvbGthZG90QnVsbGV0aW4ACgAA/QEQDHhjbQh2MyBqdW5jdGlvbhhCb2R5SWQAASgQVW5pdAAAABxNb25pa2VyBAB0ARxbdTg7IDRdAAEAFEluZGV4BABkAQx1MzIAAgAkRXhlY3V0aXZlAAMAJFRlY2huaWNhbAAEACxMZWdpc2xhdGl2ZQAFACBKdWRpY2lhbAAGABxEZWZlbnNlAAcAOEFkbWluaXN0cmF0aW9uAAgAIFRyZWFzdXJ5AAkAAAECEAx4Y20IdjMganVuY3Rpb24gQm9keVBhcnQAARQUVm9pY2UAAAAcTWVtYmVycwQBFGNvdW50ZAEMdTMyAAEAIEZyYWN0aW9uCAEMbm9tZAEMdTMyAAEUZGVub21kAQx1MzIAAgBEQXRMZWFzdFByb3BvcnRpb24IAQxub21kAQx1MzIAARRkZW5vbWQBDHUzMgADAEhNb3JlVGhhblByb3BvcnRpb24IAQxub21kAQx1MzIAARRkZW5vbWQBDHUzMgAEAAAFAhAsc3RhZ2luZ194Y20IdjQgbG9jYXRpb24gTG9jYXRpb24AAAgBHHBhcmVudHMMAQh1OAABIGludGVyaW9yCQIBJEp1bmN0aW9ucwAACQIQLHN0YWdpbmdfeGNtCHY0JGp1bmN0aW9ucyRKdW5jdGlvbnMAASQQSGVyZQAAAAhYMQQADQIBSEFyYzxbSnVuY3Rpb247IDFdPgABAAhYMgQAHQIBSEFyYzxbSnVuY3Rpb247IDJdPgACAAhYMwQAIQIBSEFyYzxbSnVuY3Rpb247IDNdPgADAAhYNAQAJQIBSEFyYzxbSnVuY3Rpb247IDRdPgAEAAhYNQQAKQIBSEFyYzxbSnVuY3Rpb247IDVdPgAFAAhYNgQALQIBSEFyYzxbSnVuY3Rpb247IDZdPgAGAAhYNwQAMQIBSEFyYzxbSnVuY3Rpb247IDddPgAHAAhYOAQANQIBSEFyYzxbSnVuY3Rpb247IDhdPgAIAAANAgAAAwEAAAARAgARAhAsc3RhZ2luZ194Y20IdjQganVuY3Rpb24gSnVuY3Rpb24AASgkUGFyYWNoYWluBABkAQx1MzIAAAAsQWNjb3VudElkMzIIARxuZXR3b3JrFQIBRE9wdGlvbjxOZXR3b3JrSWQ+AAEIaWQIASBbdTg7IDMyXQABADhBY2NvdW50SW5kZXg2NAgBHG5ldHdvcmsVAgFET3B0aW9uPE5ldHdvcmtJZD4AARRpbmRleLgBDHU2NAACADBBY2NvdW50S2V5MjAIARxuZXR3b3JrFQIBRE9wdGlvbjxOZXR3b3JrSWQ+AAEMa2V5HAEgW3U4OyAyMF0AAwA4UGFsbGV0SW5zdGFuY2UEAAwBCHU4AAQAMEdlbmVyYWxJbmRleAQAkQEBEHUxMjgABQAoR2VuZXJhbEtleQgBGGxlbmd0aAwBCHU4AAEQZGF0YQgBIFt1ODsgMzJdAAYAJE9ubHlDaGlsZAAHACRQbHVyYWxpdHkIAQhpZP0BARhCb2R5SWQAARBwYXJ0AQIBIEJvZHlQYXJ0AAgAPEdsb2JhbENvbnNlbnN1cwQAGQIBJE5ldHdvcmtJZAAJAAAVAgQYT3B0aW9uBARUARkCAQgQTm9uZQAAABBTb21lBAAZAgAAAQAAGQIQLHN0YWdpbmdfeGNtCHY0IGp1bmN0aW9uJE5ldHdvcmtJZAABLCRCeUdlbmVzaXMEAAgBIFt1ODsgMzJdAAAAGEJ5Rm9yawgBMGJsb2NrX251bWJlcigBDHU2NAABKGJsb2NrX2hhc2gIASBbdTg7IDMyXQABACBQb2xrYWRvdAACABhLdXNhbWEAAwAcV2VzdGVuZAAEABhSb2NvY28ABQAYV29jb2NvAAYAIEV0aGVyZXVtBAEgY2hhaW5faWS4AQx1NjQABwAsQml0Y29pbkNvcmUACAAsQml0Y29pbkNhc2gACQBAUG9sa2Fkb3RCdWxsZXRpbgAKAAAdAgAAAwIAAAARAgAhAgAAAwMAAAARAgAlAgAAAwQAAAARAgApAgAAAwUAAAARAgAtAgAAAwYAAAARAgAxAgAAAwcAAAARAgA1AgAAAwgAAAARAgA5AhAsc3RhZ2luZ194Y20IdjUgbG9jYXRpb24gTG9jYXRpb24AAAgBHHBhcmVudHMMAQh1OAABIGludGVyaW9yPQIBJEp1bmN0aW9ucwAAPQIQLHN0YWdpbmdfeGNtCHY1JGp1bmN0aW9ucyRKdW5jdGlvbnMAASQQSGVyZQAAAAhYMQQAQQIBSEFyYzxbSnVuY3Rpb247IDFdPgABAAhYMgQAUQIBSEFyYzxbSnVuY3Rpb247IDJdPgACAAhYMwQAVQIBSEFyYzxbSnVuY3Rpb247IDNdPgADAAhYNAQAWQIBSEFyYzxbSnVuY3Rpb247IDRdPgAEAAhYNQQAXQIBSEFyYzxbSnVuY3Rpb247IDVdPgAFAAhYNgQAYQIBSEFyYzxbSnVuY3Rpb247IDZdPgAGAAhYNwQAZQIBSEFyYzxbSnVuY3Rpb247IDddPgAHAAhYOAQAaQIBSEFyYzxbSnVuY3Rpb247IDhdPgAIAABBAgAAAwEAAABFAgBFAhAsc3RhZ2luZ194Y20IdjUganVuY3Rpb24gSnVuY3Rpb24AASgkUGFyYWNoYWluBABkAQx1MzIAAAAsQWNjb3VudElkMzIIARxuZXR3b3JrSQIBRE9wdGlvbjxOZXR3b3JrSWQ+AAEIaWQIASBbdTg7IDMyXQABADhBY2NvdW50SW5kZXg2NAgBHG5ldHdvcmtJAgFET3B0aW9uPE5ldHdvcmtJZD4AARRpbmRleLgBDHU2NAACADBBY2NvdW50S2V5MjAIARxuZXR3b3JrSQIBRE9wdGlvbjxOZXR3b3JrSWQ+AAEMa2V5HAEgW3U4OyAyMF0AAwA4UGFsbGV0SW5zdGFuY2UEAAwBCHU4AAQAMEdlbmVyYWxJbmRleAQAkQEBEHUxMjgABQAoR2VuZXJhbEtleQgBGGxlbmd0aAwBCHU4AAEQZGF0YQgBIFt1ODsgMzJdAAYAJE9ubHlDaGlsZAAHACRQbHVyYWxpdHkIAQhpZP0BARhCb2R5SWQAARBwYXJ0AQIBIEJvZHlQYXJ0AAgAPEdsb2JhbENvbnNlbnN1cwQATQIBJE5ldHdvcmtJZAAJAABJAgQYT3B0aW9uBARUAU0CAQgQTm9uZQAAABBTb21lBABNAgAAAQAATQIQLHN0YWdpbmdfeGNtCHY1IGp1bmN0aW9uJE5ldHdvcmtJZAABICRCeUdlbmVzaXMEAAgBIFt1ODsgMzJdAAAAGEJ5Rm9yawgBMGJsb2NrX251bWJlcigBDHU2NAABKGJsb2NrX2hhc2gIASBbdTg7IDMyXQABACBQb2xrYWRvdAACABhLdXNhbWEAAwAgRXRoZXJldW0EASBjaGFpbl9pZLgBDHU2NAAHACxCaXRjb2luQ29yZQAIACxCaXRjb2luQ2FzaAAJAEBQb2xrYWRvdEJ1bGxldGluAAoAAFECAAADAgAAAEUCAFUCAAADAwAAAEUCAFkCAAADBAAAAEUCAF0CAAADBQAAAEUCAGECAAADBgAAAEUCAGUCAAADBwAAAEUCAGkCAAADCAAAAEUCAG0CCAx4Y20wVmVyc2lvbmVkWGNtBCxSdW50aW1lQ2FsbAABDAhWMwQAcQIBUHYzOjpYY208UnVudGltZUNhbGw+AAMACFY0BADlAgFQdjQ6OlhjbTxSdW50aW1lQ2FsbD4ABAAIVjUEADEDAVB2NTo6WGNtPFJ1bnRpbWVDYWxsPgAFAABxAgwMeGNtCHYzDFhjbQQQQ2FsbAAABAB1AgFYVmVjPEluc3RydWN0aW9uPENhbGw+PgAAdQIAAAJ5AgB5AgwMeGNtCHYzLEluc3RydWN0aW9uBBBDYWxsAAHANFdpdGhkcmF3QXNzZXQEAH0CASxNdWx0aUFzc2V0cwAAAFRSZXNlcnZlQXNzZXREZXBvc2l0ZWQEAH0CASxNdWx0aUFzc2V0cwABAFhSZWNlaXZlVGVsZXBvcnRlZEFzc2V0BAB9AgEsTXVsdGlBc3NldHMAAgA0UXVlcnlSZXNwb25zZRABIHF1ZXJ5X2lkuAEcUXVlcnlJZAABIHJlc3BvbnNlnQIBIFJlc3BvbnNlAAEobWF4X3dlaWdodHkBARhXZWlnaHQAARxxdWVyaWVyxQIBVE9wdGlvbjxNdWx0aUxvY2F0aW9uPgADADRUcmFuc2ZlckFzc2V0CAEYYXNzZXRzfQIBLE11bHRpQXNzZXRzAAEsYmVuZWZpY2lhcnnpAQE0TXVsdGlMb2NhdGlvbgAEAFBUcmFuc2ZlclJlc2VydmVBc3NldAwBGGFzc2V0c30CASxNdWx0aUFzc2V0cwABEGRlc3TpAQE0TXVsdGlMb2NhdGlvbgABDHhjbXECARxYY208KCk+AAUAIFRyYW5zYWN0DAEsb3JpZ2luX2tpbmTJAgEoT3JpZ2luS2luZAABWHJlcXVpcmVfd2VpZ2h0X2F0X21vc3R5AQEYV2VpZ2h0AAEQY2FsbM0CAUxEb3VibGVFbmNvZGVkPENhbGw+AAYAZEhybXBOZXdDaGFubmVsT3BlblJlcXVlc3QMARhzZW5kZXJkAQx1MzIAAUBtYXhfbWVzc2FnZV9zaXplZAEMdTMyAAEwbWF4X2NhcGFjaXR5ZAEMdTMyAAcATEhybXBDaGFubmVsQWNjZXB0ZWQEASRyZWNpcGllbnRkAQx1MzIACABISHJtcENoYW5uZWxDbG9zaW5nDAEkaW5pdGlhdG9yZAEMdTMyAAEYc2VuZGVyZAEMdTMyAAEkcmVjaXBpZW50ZAEMdTMyAAkALENsZWFyT3JpZ2luAAoANERlc2NlbmRPcmlnaW4EAO0BAVRJbnRlcmlvck11bHRpTG9jYXRpb24ACwAsUmVwb3J0RXJyb3IEANECAURRdWVyeVJlc3BvbnNlSW5mbwAMADBEZXBvc2l0QXNzZXQIARhhc3NldHPVAgFATXVsdGlBc3NldEZpbHRlcgABLGJlbmVmaWNpYXJ56QEBNE11bHRpTG9jYXRpb24ADQBMRGVwb3NpdFJlc2VydmVBc3NldAwBGGFzc2V0c9UCAUBNdWx0aUFzc2V0RmlsdGVyAAEQZGVzdOkBATRNdWx0aUxvY2F0aW9uAAEMeGNtcQIBHFhjbTwoKT4ADgA0RXhjaGFuZ2VBc3NldAwBEGdpdmXVAgFATXVsdGlBc3NldEZpbHRlcgABEHdhbnR9AgEsTXVsdGlBc3NldHMAARxtYXhpbWFsmQEBEGJvb2wADwBcSW5pdGlhdGVSZXNlcnZlV2l0aGRyYXcMARhhc3NldHPVAgFATXVsdGlBc3NldEZpbHRlcgABHHJlc2VydmXpAQE0TXVsdGlMb2NhdGlvbgABDHhjbXECARxYY208KCk+ABAAQEluaXRpYXRlVGVsZXBvcnQMARhhc3NldHPVAgFATXVsdGlBc3NldEZpbHRlcgABEGRlc3TpAQE0TXVsdGlMb2NhdGlvbgABDHhjbXECARxYY208KCk+ABEANFJlcG9ydEhvbGRpbmcIATRyZXNwb25zZV9pbmZv0QIBRFF1ZXJ5UmVzcG9uc2VJbmZvAAEYYXNzZXRz1QIBQE11bHRpQXNzZXRGaWx0ZXIAEgAwQnV5RXhlY3V0aW9uCAEQZmVlc4UCAShNdWx0aUFzc2V0AAEwd2VpZ2h0X2xpbWl04QIBLFdlaWdodExpbWl0ABMANFJlZnVuZFN1cnBsdXMAFAA8U2V0RXJyb3JIYW5kbGVyBABxAgEkWGNtPENhbGw+ABUALFNldEFwcGVuZGl4BABxAgEkWGNtPENhbGw+ABYAKENsZWFyRXJyb3IAFwAoQ2xhaW1Bc3NldAgBGGFzc2V0c30CASxNdWx0aUFzc2V0cwABGHRpY2tldOkBATRNdWx0aUxvY2F0aW9uABgAEFRyYXAEALgBDHU2NAAZAEBTdWJzY3JpYmVWZXJzaW9uCAEgcXVlcnlfaWS4ARxRdWVyeUlkAAFMbWF4X3Jlc3BvbnNlX3dlaWdodHkBARhXZWlnaHQAGgBIVW5zdWJzY3JpYmVWZXJzaW9uABsAJEJ1cm5Bc3NldAQAfQIBLE11bHRpQXNzZXRzABwALEV4cGVjdEFzc2V0BAB9AgEsTXVsdGlBc3NldHMAHQAwRXhwZWN0T3JpZ2luBADFAgFUT3B0aW9uPE11bHRpTG9jYXRpb24+AB4ALEV4cGVjdEVycm9yBAChAgFQT3B0aW9uPCh1MzIsIEVycm9yKT4AHwBQRXhwZWN0VHJhbnNhY3RTdGF0dXMEAL0CAThNYXliZUVycm9yQ29kZQAgACxRdWVyeVBhbGxldAgBLG1vZHVsZV9uYW1lGAEcVmVjPHU4PgABNHJlc3BvbnNlX2luZm/RAgFEUXVlcnlSZXNwb25zZUluZm8AIQAwRXhwZWN0UGFsbGV0FAEUaW5kZXhkAQx1MzIAARBuYW1lGAEcVmVjPHU4PgABLG1vZHVsZV9uYW1lGAEcVmVjPHU4PgABLGNyYXRlX21ham9yZAEMdTMyAAE8bWluX2NyYXRlX21pbm9yZAEMdTMyACIAUFJlcG9ydFRyYW5zYWN0U3RhdHVzBADRAgFEUXVlcnlSZXNwb25zZUluZm8AIwBMQ2xlYXJUcmFuc2FjdFN0YXR1cwAkADxVbml2ZXJzYWxPcmlnaW4EAPEBASBKdW5jdGlvbgAlADRFeHBvcnRNZXNzYWdlDAEcbmV0d29ya/kBASROZXR3b3JrSWQAASxkZXN0aW5hdGlvbu0BAVRJbnRlcmlvck11bHRpTG9jYXRpb24AAQx4Y21xAgEcWGNtPCgpPgAmACRMb2NrQXNzZXQIARRhc3NldIUCAShNdWx0aUFzc2V0AAEgdW5sb2NrZXLpAQE0TXVsdGlMb2NhdGlvbgAnACxVbmxvY2tBc3NldAgBFGFzc2V0hQIBKE11bHRpQXNzZXQAARh0YXJnZXTpAQE0TXVsdGlMb2NhdGlvbgAoADhOb3RlVW5sb2NrYWJsZQgBFGFzc2V0hQIBKE11bHRpQXNzZXQAARRvd25lcukBATRNdWx0aUxvY2F0aW9uACkANFJlcXVlc3RVbmxvY2sIARRhc3NldIUCAShNdWx0aUFzc2V0AAEYbG9ja2Vy6QEBNE11bHRpTG9jYXRpb24AKgAsU2V0RmVlc01vZGUEATBqaXRfd2l0aGRyYXeZAQEQYm9vbAArACBTZXRUb3BpYwQACAEgW3U4OyAzMl0ALAAoQ2xlYXJUb3BpYwAtACxBbGlhc09yaWdpbgQA6QEBNE11bHRpTG9jYXRpb24ALgA8VW5wYWlkRXhlY3V0aW9uCAEwd2VpZ2h0X2xpbWl04QIBLFdlaWdodExpbWl0AAEwY2hlY2tfb3JpZ2luxQIBVE9wdGlvbjxNdWx0aUxvY2F0aW9uPgAvAAB9AhAMeGNtCHYzKG11bHRpYXNzZXQsTXVsdGlBc3NldHMAAAQAgQIBPFZlYzxNdWx0aUFzc2V0PgAAgQIAAAKFAgCFAhAMeGNtCHYzKG11bHRpYXNzZXQoTXVsdGlBc3NldAAACAEIaWSJAgEcQXNzZXRJZAABDGZ1bo0CASxGdW5naWJpbGl0eQAAiQIQDHhjbQh2MyhtdWx0aWFzc2V0HEFzc2V0SWQAAQggQ29uY3JldGUEAOkBATRNdWx0aUxvY2F0aW9uAAAAIEFic3RyYWN0BAAIASBbdTg7IDMyXQABAACNAhAMeGNtCHYzKG11bHRpYXNzZXQsRnVuZ2liaWxpdHkAAQggRnVuZ2libGUEAJEBARB1MTI4AAAALE5vbkZ1bmdpYmxlBACRAgE0QXNzZXRJbnN0YW5jZQABAACRAhAMeGNtCHYzKG11bHRpYXNzZXQ0QXNzZXRJbnN0YW5jZQABGCRVbmRlZmluZWQAAAAUSW5kZXgEAJEBARB1MTI4AAEAGEFycmF5NAQAdAEcW3U4OyA0XQACABhBcnJheTgEAJUCARxbdTg7IDhdAAMAHEFycmF5MTYEAJkCASBbdTg7IDE2XQAEABxBcnJheTMyBAAIASBbdTg7IDMyXQAFAACVAgAAAwgAAAAMAJkCAAADEAAAAAwAnQIMDHhjbQh2MyBSZXNwb25zZQABGBBOdWxsAAAAGEFzc2V0cwQAfQIBLE11bHRpQXNzZXRzAAEAPEV4ZWN1dGlvblJlc3VsdAQAoQIBUE9wdGlvbjwodTMyLCBFcnJvcik+AAIAHFZlcnNpb24EADgBOHN1cGVyOjpWZXJzaW9uAAMALFBhbGxldHNJbmZvBACtAgGYQm91bmRlZFZlYzxQYWxsZXRJbmZvLCBNYXhQYWxsZXRzSW5mbz4ABAA4RGlzcGF0Y2hSZXN1bHQEAL0CAThNYXliZUVycm9yQ29kZQAFAAChAgQYT3B0aW9uBARUAaUCAQgQTm9uZQAAABBTb21lBAClAgAAAQAApQIAAAQIOKkCAKkCEAx4Y20IdjMYdHJhaXRzFEVycm9yAAGgIE92ZXJmbG93AAAANFVuaW1wbGVtZW50ZWQAAQBgVW50cnVzdGVkUmVzZXJ2ZUxvY2F0aW9uAAIAZFVudHJ1c3RlZFRlbGVwb3J0TG9jYXRpb24AAwAwTG9jYXRpb25GdWxsAAQAVExvY2F0aW9uTm90SW52ZXJ0aWJsZQAFACRCYWRPcmlnaW4ABgA8SW52YWxpZExvY2F0aW9uAAcANEFzc2V0Tm90Rm91bmQACABURmFpbGVkVG9UcmFuc2FjdEFzc2V0AAkAPE5vdFdpdGhkcmF3YWJsZQAKAEhMb2NhdGlvbkNhbm5vdEhvbGQACwBURXhjZWVkc01heE1lc3NhZ2VTaXplAAwAWERlc3RpbmF0aW9uVW5zdXBwb3J0ZWQADQAkVHJhbnNwb3J0AA4AKFVucm91dGFibGUADwAwVW5rbm93bkNsYWltABAAOEZhaWxlZFRvRGVjb2RlABEAQE1heFdlaWdodEludmFsaWQAEgA4Tm90SG9sZGluZ0ZlZXMAEwAwVG9vRXhwZW5zaXZlABQAEFRyYXAEACgBDHU2NAAVAEBFeHBlY3RhdGlvbkZhbHNlABYAOFBhbGxldE5vdEZvdW5kABcAME5hbWVNaXNtYXRjaAAYAExWZXJzaW9uSW5jb21wYXRpYmxlABkAUEhvbGRpbmdXb3VsZE92ZXJmbG93ABoALEV4cG9ydEVycm9yABsAOFJlYW5jaG9yRmFpbGVkABwAGE5vRGVhbAAdAChGZWVzTm90TWV0AB4AJExvY2tFcnJvcgAfADBOb1Blcm1pc3Npb24AIAAoVW5hbmNob3JlZAAhADhOb3REZXBvc2l0YWJsZQAiAExVbmhhbmRsZWRYY21WZXJzaW9uACMASFdlaWdodExpbWl0UmVhY2hlZAQAeQEBGFdlaWdodAAkABxCYXJyaWVyACUATFdlaWdodE5vdENvbXB1dGFibGUAJgBERXhjZWVkc1N0YWNrTGltaXQAJwAArQIMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAGxAgRTAAAEALkCARhWZWM8VD4AALECDAx4Y20IdjMoUGFsbGV0SW5mbwAAGAEUaW5kZXhkAQx1MzIAARBuYW1ltQIBgEJvdW5kZWRWZWM8dTgsIE1heFBhbGxldE5hbWVMZW4+AAEsbW9kdWxlX25hbWW1AgGAQm91bmRlZFZlYzx1OCwgTWF4UGFsbGV0TmFtZUxlbj4AARRtYWpvcmQBDHUzMgABFG1pbm9yZAEMdTMyAAEUcGF0Y2hkAQx1MzIAALUCDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBDARTAAAEABgBGFZlYzxUPgAAuQIAAAKxAgC9AgwMeGNtCHYzOE1heWJlRXJyb3JDb2RlAAEMHFN1Y2Nlc3MAAAAURXJyb3IEAMECAYxCb3VuZGVkVmVjPHU4LCBNYXhEaXNwYXRjaEVycm9yTGVuPgABADhUcnVuY2F0ZWRFcnJvcgQAwQIBjEJvdW5kZWRWZWM8dTgsIE1heERpc3BhdGNoRXJyb3JMZW4+AAIAAMECDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBDARTAAAEABgBGFZlYzxUPgAAxQIEGE9wdGlvbgQEVAHpAQEIEE5vbmUAAAAQU29tZQQA6QEAAAEAAMkCDAx4Y20IdjMoT3JpZ2luS2luZAABEBhOYXRpdmUAAABAU292ZXJlaWduQWNjb3VudAABACRTdXBlcnVzZXIAAgAMWGNtAAMAAM0CDAx4Y204ZG91YmxlX2VuY29kZWQ0RG91YmxlRW5jb2RlZAQEVAAABAEcZW5jb2RlZBgBHFZlYzx1OD4AANECDAx4Y20IdjNEUXVlcnlSZXNwb25zZUluZm8AAAwBLGRlc3RpbmF0aW9u6QEBNE11bHRpTG9jYXRpb24AASBxdWVyeV9pZLgBHFF1ZXJ5SWQAAShtYXhfd2VpZ2h0eQEBGFdlaWdodAAA1QIQDHhjbQh2MyhtdWx0aWFzc2V0QE11bHRpQXNzZXRGaWx0ZXIAAQggRGVmaW5pdGUEAH0CASxNdWx0aUFzc2V0cwAAABBXaWxkBADZAgE4V2lsZE11bHRpQXNzZXQAAQAA2QIQDHhjbQh2MyhtdWx0aWFzc2V0OFdpbGRNdWx0aUFzc2V0AAEQDEFsbAAAABRBbGxPZggBCGlkiQIBHEFzc2V0SWQAAQxmdW7dAgE8V2lsZEZ1bmdpYmlsaXR5AAEAKEFsbENvdW50ZWQEAGQBDHUzMgACADBBbGxPZkNvdW50ZWQMAQhpZIkCARxBc3NldElkAAEMZnVu3QIBPFdpbGRGdW5naWJpbGl0eQABFGNvdW50ZAEMdTMyAAMAAN0CEAx4Y20IdjMobXVsdGlhc3NldDxXaWxkRnVuZ2liaWxpdHkAAQggRnVuZ2libGUAAAAsTm9uRnVuZ2libGUAAQAA4QIMDHhjbQh2MyxXZWlnaHRMaW1pdAABCCRVbmxpbWl0ZWQAAAAcTGltaXRlZAQAeQEBGFdlaWdodAABAADlAgwsc3RhZ2luZ194Y20IdjQMWGNtBBBDYWxsAAAEAOkCAVhWZWM8SW5zdHJ1Y3Rpb248Q2FsbD4+AADpAgAAAu0CAO0CDCxzdGFnaW5nX3hjbQh2NCxJbnN0cnVjdGlvbgQQQ2FsbAABwDRXaXRoZHJhd0Fzc2V0BADxAgEYQXNzZXRzAAAAVFJlc2VydmVBc3NldERlcG9zaXRlZAQA8QIBGEFzc2V0cwABAFhSZWNlaXZlVGVsZXBvcnRlZEFzc2V0BADxAgEYQXNzZXRzAAIANFF1ZXJ5UmVzcG9uc2UQASBxdWVyeV9pZLgBHFF1ZXJ5SWQAASByZXNwb25zZQkDASBSZXNwb25zZQABKG1heF93ZWlnaHR5AQEYV2VpZ2h0AAEccXVlcmllch0DAUBPcHRpb248TG9jYXRpb24+AAMANFRyYW5zZmVyQXNzZXQIARhhc3NldHPxAgEYQXNzZXRzAAEsYmVuZWZpY2lhcnkFAgEgTG9jYXRpb24ABABQVHJhbnNmZXJSZXNlcnZlQXNzZXQMARhhc3NldHPxAgEYQXNzZXRzAAEQZGVzdAUCASBMb2NhdGlvbgABDHhjbeUCARxYY208KCk+AAUAIFRyYW5zYWN0DAEsb3JpZ2luX2tpbmTJAgEoT3JpZ2luS2luZAABWHJlcXVpcmVfd2VpZ2h0X2F0X21vc3R5AQEYV2VpZ2h0AAEQY2FsbM0CAUxEb3VibGVFbmNvZGVkPENhbGw+AAYAZEhybXBOZXdDaGFubmVsT3BlblJlcXVlc3QMARhzZW5kZXJkAQx1MzIAAUBtYXhfbWVzc2FnZV9zaXplZAEMdTMyAAEwbWF4X2NhcGFjaXR5ZAEMdTMyAAcATEhybXBDaGFubmVsQWNjZXB0ZWQEASRyZWNpcGllbnRkAQx1MzIACABISHJtcENoYW5uZWxDbG9zaW5nDAEkaW5pdGlhdG9yZAEMdTMyAAEYc2VuZGVyZAEMdTMyAAEkcmVjaXBpZW50ZAEMdTMyAAkALENsZWFyT3JpZ2luAAoANERlc2NlbmRPcmlnaW4EAAkCAUBJbnRlcmlvckxvY2F0aW9uAAsALFJlcG9ydEVycm9yBAAhAwFEUXVlcnlSZXNwb25zZUluZm8ADAAwRGVwb3NpdEFzc2V0CAEYYXNzZXRzJQMBLEFzc2V0RmlsdGVyAAEsYmVuZWZpY2lhcnkFAgEgTG9jYXRpb24ADQBMRGVwb3NpdFJlc2VydmVBc3NldAwBGGFzc2V0cyUDASxBc3NldEZpbHRlcgABEGRlc3QFAgEgTG9jYXRpb24AAQx4Y23lAgEcWGNtPCgpPgAOADRFeGNoYW5nZUFzc2V0DAEQZ2l2ZSUDASxBc3NldEZpbHRlcgABEHdhbnTxAgEYQXNzZXRzAAEcbWF4aW1hbJkBARBib29sAA8AXEluaXRpYXRlUmVzZXJ2ZVdpdGhkcmF3DAEYYXNzZXRzJQMBLEFzc2V0RmlsdGVyAAEccmVzZXJ2ZQUCASBMb2NhdGlvbgABDHhjbeUCARxYY208KCk+ABAAQEluaXRpYXRlVGVsZXBvcnQMARhhc3NldHMlAwEsQXNzZXRGaWx0ZXIAARBkZXN0BQIBIExvY2F0aW9uAAEMeGNt5QIBHFhjbTwoKT4AEQA0UmVwb3J0SG9sZGluZwgBNHJlc3BvbnNlX2luZm8hAwFEUXVlcnlSZXNwb25zZUluZm8AARhhc3NldHMlAwEsQXNzZXRGaWx0ZXIAEgAwQnV5RXhlY3V0aW9uCAEQZmVlc/kCARRBc3NldAABMHdlaWdodF9saW1pdOECASxXZWlnaHRMaW1pdAATADRSZWZ1bmRTdXJwbHVzABQAPFNldEVycm9ySGFuZGxlcgQA5QIBJFhjbTxDYWxsPgAVACxTZXRBcHBlbmRpeAQA5QIBJFhjbTxDYWxsPgAWAChDbGVhckVycm9yABcAKENsYWltQXNzZXQIARhhc3NldHPxAgEYQXNzZXRzAAEYdGlja2V0BQIBIExvY2F0aW9uABgAEFRyYXAEALgBDHU2NAAZAEBTdWJzY3JpYmVWZXJzaW9uCAEgcXVlcnlfaWS4ARxRdWVyeUlkAAFMbWF4X3Jlc3BvbnNlX3dlaWdodHkBARhXZWlnaHQAGgBIVW5zdWJzY3JpYmVWZXJzaW9uABsAJEJ1cm5Bc3NldAQA8QIBGEFzc2V0cwAcACxFeHBlY3RBc3NldAQA8QIBGEFzc2V0cwAdADBFeHBlY3RPcmlnaW4EAB0DAUBPcHRpb248TG9jYXRpb24+AB4ALEV4cGVjdEVycm9yBAChAgFQT3B0aW9uPCh1MzIsIEVycm9yKT4AHwBQRXhwZWN0VHJhbnNhY3RTdGF0dXMEAL0CAThNYXliZUVycm9yQ29kZQAgACxRdWVyeVBhbGxldAgBLG1vZHVsZV9uYW1lGAEcVmVjPHU4PgABNHJlc3BvbnNlX2luZm8hAwFEUXVlcnlSZXNwb25zZUluZm8AIQAwRXhwZWN0UGFsbGV0FAEUaW5kZXhkAQx1MzIAARBuYW1lGAEcVmVjPHU4PgABLG1vZHVsZV9uYW1lGAEcVmVjPHU4PgABLGNyYXRlX21ham9yZAEMdTMyAAE8bWluX2NyYXRlX21pbm9yZAEMdTMyACIAUFJlcG9ydFRyYW5zYWN0U3RhdHVzBAAhAwFEUXVlcnlSZXNwb25zZUluZm8AIwBMQ2xlYXJUcmFuc2FjdFN0YXR1cwAkADxVbml2ZXJzYWxPcmlnaW4EABECASBKdW5jdGlvbgAlADRFeHBvcnRNZXNzYWdlDAEcbmV0d29yaxkCASROZXR3b3JrSWQAASxkZXN0aW5hdGlvbgkCAUBJbnRlcmlvckxvY2F0aW9uAAEMeGNt5QIBHFhjbTwoKT4AJgAkTG9ja0Fzc2V0CAEUYXNzZXT5AgEUQXNzZXQAASB1bmxvY2tlcgUCASBMb2NhdGlvbgAnACxVbmxvY2tBc3NldAgBFGFzc2V0+QIBFEFzc2V0AAEYdGFyZ2V0BQIBIExvY2F0aW9uACgAOE5vdGVVbmxvY2thYmxlCAEUYXNzZXT5AgEUQXNzZXQAARRvd25lcgUCASBMb2NhdGlvbgApADRSZXF1ZXN0VW5sb2NrCAEUYXNzZXT5AgEUQXNzZXQAARhsb2NrZXIFAgEgTG9jYXRpb24AKgAsU2V0RmVlc01vZGUEATBqaXRfd2l0aGRyYXeZAQEQYm9vbAArACBTZXRUb3BpYwQACAEgW3U4OyAzMl0ALAAoQ2xlYXJUb3BpYwAtACxBbGlhc09yaWdpbgQABQIBIExvY2F0aW9uAC4APFVucGFpZEV4ZWN1dGlvbggBMHdlaWdodF9saW1pdOECASxXZWlnaHRMaW1pdAABMGNoZWNrX29yaWdpbh0DAUBPcHRpb248TG9jYXRpb24+AC8AAPECECxzdGFnaW5nX3hjbQh2NBRhc3NldBhBc3NldHMAAAQA9QIBKFZlYzxBc3NldD4AAPUCAAAC+QIA+QIQLHN0YWdpbmdfeGNtCHY0FGFzc2V0FEFzc2V0AAAIAQhpZP0CARxBc3NldElkAAEMZnVuAQMBLEZ1bmdpYmlsaXR5AAD9AhAsc3RhZ2luZ194Y20IdjQUYXNzZXQcQXNzZXRJZAAABAAFAgEgTG9jYXRpb24AAAEDECxzdGFnaW5nX3hjbQh2NBRhc3NldCxGdW5naWJpbGl0eQABCCBGdW5naWJsZQQAkQEBEHUxMjgAAAAsTm9uRnVuZ2libGUEAAUDATRBc3NldEluc3RhbmNlAAEAAAUDECxzdGFnaW5nX3hjbQh2NBRhc3NldDRBc3NldEluc3RhbmNlAAEYJFVuZGVmaW5lZAAAABRJbmRleAQAkQEBEHUxMjgAAQAYQXJyYXk0BAB0ARxbdTg7IDRdAAIAGEFycmF5OAQAlQIBHFt1ODsgOF0AAwAcQXJyYXkxNgQAmQIBIFt1ODsgMTZdAAQAHEFycmF5MzIEAAgBIFt1ODsgMzJdAAUAAAkDDCxzdGFnaW5nX3hjbQh2NCBSZXNwb25zZQABGBBOdWxsAAAAGEFzc2V0cwQA8QIBGEFzc2V0cwABADxFeGVjdXRpb25SZXN1bHQEAKECAVBPcHRpb248KHUzMiwgRXJyb3IpPgACABxWZXJzaW9uBAA4AThzdXBlcjo6VmVyc2lvbgADACxQYWxsZXRzSW5mbwQADQMBmEJvdW5kZWRWZWM8UGFsbGV0SW5mbywgTWF4UGFsbGV0c0luZm8+AAQAOERpc3BhdGNoUmVzdWx0BAC9AgE4TWF5YmVFcnJvckNvZGUABQAADQMMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAERAwRTAAAEABkDARhWZWM8VD4AABEDDCxzdGFnaW5nX3hjbQh2NChQYWxsZXRJbmZvAAAYARRpbmRleGQBDHUzMgABEG5hbWUVAwGAQm91bmRlZFZlYzx1OCwgTWF4UGFsbGV0TmFtZUxlbj4AASxtb2R1bGVfbmFtZRUDAYBCb3VuZGVkVmVjPHU4LCBNYXhQYWxsZXROYW1lTGVuPgABFG1ham9yZAEMdTMyAAEUbWlub3JkAQx1MzIAARRwYXRjaGQBDHUzMgAAFQMMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AAAZAwAAAhEDAB0DBBhPcHRpb24EBFQBBQIBCBBOb25lAAAAEFNvbWUEAAUCAAABAAAhAwwsc3RhZ2luZ194Y20IdjREUXVlcnlSZXNwb25zZUluZm8AAAwBLGRlc3RpbmF0aW9uBQIBIExvY2F0aW9uAAEgcXVlcnlfaWS4ARxRdWVyeUlkAAEobWF4X3dlaWdodHkBARhXZWlnaHQAACUDECxzdGFnaW5nX3hjbQh2NBRhc3NldCxBc3NldEZpbHRlcgABCCBEZWZpbml0ZQQA8QIBGEFzc2V0cwAAABBXaWxkBAApAwEkV2lsZEFzc2V0AAEAACkDECxzdGFnaW5nX3hjbQh2NBRhc3NldCRXaWxkQXNzZXQAARAMQWxsAAAAFEFsbE9mCAEIaWT9AgEcQXNzZXRJZAABDGZ1bi0DATxXaWxkRnVuZ2liaWxpdHkAAQAoQWxsQ291bnRlZAQAZAEMdTMyAAIAMEFsbE9mQ291bnRlZAwBCGlk/QIBHEFzc2V0SWQAAQxmdW4tAwE8V2lsZEZ1bmdpYmlsaXR5AAEUY291bnRkAQx1MzIAAwAALQMQLHN0YWdpbmdfeGNtCHY0FGFzc2V0PFdpbGRGdW5naWJpbGl0eQABCCBGdW5naWJsZQAAACxOb25GdW5naWJsZQABAAAxAwwsc3RhZ2luZ194Y20IdjUMWGNtBBBDYWxsAAAEADUDAVhWZWM8SW5zdHJ1Y3Rpb248Q2FsbD4+AAA1AwAAAjkDADkDDCxzdGFnaW5nX3hjbQh2NSxJbnN0cnVjdGlvbgQQQ2FsbAAB0DRXaXRoZHJhd0Fzc2V0BAA9AwEYQXNzZXRzAAAAVFJlc2VydmVBc3NldERlcG9zaXRlZAQAPQMBGEFzc2V0cwABAFhSZWNlaXZlVGVsZXBvcnRlZEFzc2V0BAA9AwEYQXNzZXRzAAIANFF1ZXJ5UmVzcG9uc2UQASBxdWVyeV9pZLgBHFF1ZXJ5SWQAASByZXNwb25zZVUDASBSZXNwb25zZQABKG1heF93ZWlnaHR5AQEYV2VpZ2h0AAEccXVlcmllcnUDAUBPcHRpb248TG9jYXRpb24+AAMANFRyYW5zZmVyQXNzZXQIARhhc3NldHM9AwEYQXNzZXRzAAEsYmVuZWZpY2lhcnk5AgEgTG9jYXRpb24ABABQVHJhbnNmZXJSZXNlcnZlQXNzZXQMARhhc3NldHM9AwEYQXNzZXRzAAEQZGVzdDkCASBMb2NhdGlvbgABDHhjbTEDARxYY208KCk+AAUAIFRyYW5zYWN0DAEsb3JpZ2luX2tpbmTJAgEoT3JpZ2luS2luZAABTGZhbGxiYWNrX21heF93ZWlnaHR1AQE4T3B0aW9uPFdlaWdodD4AARBjYWxszQIBTERvdWJsZUVuY29kZWQ8Q2FsbD4ABgBkSHJtcE5ld0NoYW5uZWxPcGVuUmVxdWVzdAwBGHNlbmRlcmQBDHUzMgABQG1heF9tZXNzYWdlX3NpemVkAQx1MzIAATBtYXhfY2FwYWNpdHlkAQx1MzIABwBMSHJtcENoYW5uZWxBY2NlcHRlZAQBJHJlY2lwaWVudGQBDHUzMgAIAEhIcm1wQ2hhbm5lbENsb3NpbmcMASRpbml0aWF0b3JkAQx1MzIAARhzZW5kZXJkAQx1MzIAASRyZWNpcGllbnRkAQx1MzIACQAsQ2xlYXJPcmlnaW4ACgA0RGVzY2VuZE9yaWdpbgQAPQIBQEludGVyaW9yTG9jYXRpb24ACwAsUmVwb3J0RXJyb3IEAHkDAURRdWVyeVJlc3BvbnNlSW5mbwAMADBEZXBvc2l0QXNzZXQIARhhc3NldHN9AwEsQXNzZXRGaWx0ZXIAASxiZW5lZmljaWFyeTkCASBMb2NhdGlvbgANAExEZXBvc2l0UmVzZXJ2ZUFzc2V0DAEYYXNzZXRzfQMBLEFzc2V0RmlsdGVyAAEQZGVzdDkCASBMb2NhdGlvbgABDHhjbTEDARxYY208KCk+AA4ANEV4Y2hhbmdlQXNzZXQMARBnaXZlfQMBLEFzc2V0RmlsdGVyAAEQd2FudD0DARhBc3NldHMAARxtYXhpbWFsmQEBEGJvb2wADwBcSW5pdGlhdGVSZXNlcnZlV2l0aGRyYXcMARhhc3NldHN9AwEsQXNzZXRGaWx0ZXIAARxyZXNlcnZlOQIBIExvY2F0aW9uAAEMeGNtMQMBHFhjbTwoKT4AEABASW5pdGlhdGVUZWxlcG9ydAwBGGFzc2V0c30DASxBc3NldEZpbHRlcgABEGRlc3Q5AgEgTG9jYXRpb24AAQx4Y20xAwEcWGNtPCgpPgARADRSZXBvcnRIb2xkaW5nCAE0cmVzcG9uc2VfaW5mb3kDAURRdWVyeVJlc3BvbnNlSW5mbwABGGFzc2V0c30DASxBc3NldEZpbHRlcgASADBCdXlFeGVjdXRpb24IARBmZWVzRQMBFEFzc2V0AAEwd2VpZ2h0X2xpbWl04QIBLFdlaWdodExpbWl0ABMANFJlZnVuZFN1cnBsdXMAFAA8U2V0RXJyb3JIYW5kbGVyBAAxAwEkWGNtPENhbGw+ABUALFNldEFwcGVuZGl4BAAxAwEkWGNtPENhbGw+ABYAKENsZWFyRXJyb3IAFwAoQ2xhaW1Bc3NldAgBGGFzc2V0cz0DARhBc3NldHMAARh0aWNrZXQ5AgEgTG9jYXRpb24AGAAQVHJhcAQAuAEMdTY0ABkAQFN1YnNjcmliZVZlcnNpb24IASBxdWVyeV9pZLgBHFF1ZXJ5SWQAAUxtYXhfcmVzcG9uc2Vfd2VpZ2h0eQEBGFdlaWdodAAaAEhVbnN1YnNjcmliZVZlcnNpb24AGwAkQnVybkFzc2V0BAA9AwEYQXNzZXRzABwALEV4cGVjdEFzc2V0BAA9AwEYQXNzZXRzAB0AMEV4cGVjdE9yaWdpbgQAdQMBQE9wdGlvbjxMb2NhdGlvbj4AHgAsRXhwZWN0RXJyb3IEAFkDAVBPcHRpb248KHUzMiwgRXJyb3IpPgAfAFBFeHBlY3RUcmFuc2FjdFN0YXR1cwQAvQIBOE1heWJlRXJyb3JDb2RlACAALFF1ZXJ5UGFsbGV0CAEsbW9kdWxlX25hbWUYARxWZWM8dTg+AAE0cmVzcG9uc2VfaW5mb3kDAURRdWVyeVJlc3BvbnNlSW5mbwAhADBFeHBlY3RQYWxsZXQUARRpbmRleGQBDHUzMgABEG5hbWUYARxWZWM8dTg+AAEsbW9kdWxlX25hbWUYARxWZWM8dTg+AAEsY3JhdGVfbWFqb3JkAQx1MzIAATxtaW5fY3JhdGVfbWlub3JkAQx1MzIAIgBQUmVwb3J0VHJhbnNhY3RTdGF0dXMEAHkDAURRdWVyeVJlc3BvbnNlSW5mbwAjAExDbGVhclRyYW5zYWN0U3RhdHVzACQAPFVuaXZlcnNhbE9yaWdpbgQARQIBIEp1bmN0aW9uACUANEV4cG9ydE1lc3NhZ2UMARxuZXR3b3JrTQIBJE5ldHdvcmtJZAABLGRlc3RpbmF0aW9uPQIBQEludGVyaW9yTG9jYXRpb24AAQx4Y20xAwEcWGNtPCgpPgAmACRMb2NrQXNzZXQIARRhc3NldEUDARRBc3NldAABIHVubG9ja2VyOQIBIExvY2F0aW9uACcALFVubG9ja0Fzc2V0CAEUYXNzZXRFAwEUQXNzZXQAARh0YXJnZXQ5AgEgTG9jYXRpb24AKAA4Tm90ZVVubG9ja2FibGUIARRhc3NldEUDARRBc3NldAABFG93bmVyOQIBIExvY2F0aW9uACkANFJlcXVlc3RVbmxvY2sIARRhc3NldEUDARRBc3NldAABGGxvY2tlcjkCASBMb2NhdGlvbgAqACxTZXRGZWVzTW9kZQQBMGppdF93aXRoZHJhd5kBARBib29sACsAIFNldFRvcGljBAAIASBbdTg7IDMyXQAsAChDbGVhclRvcGljAC0ALEFsaWFzT3JpZ2luBAA5AgEgTG9jYXRpb24ALgA8VW5wYWlkRXhlY3V0aW9uCAEwd2VpZ2h0X2xpbWl04QIBLFdlaWdodExpbWl0AAEwY2hlY2tfb3JpZ2ludQMBQE9wdGlvbjxMb2NhdGlvbj4ALwAcUGF5RmVlcwQBFGFzc2V0RQMBFEFzc2V0ADAAQEluaXRpYXRlVHJhbnNmZXIUASxkZXN0aW5hdGlvbjkCASBMb2NhdGlvbgABLHJlbW90ZV9mZWVziQMBbE9wdGlvbjxBc3NldFRyYW5zZmVyRmlsdGVyPgABPHByZXNlcnZlX29yaWdpbpkBARBib29sAAEYYXNzZXRzkQMB4EJvdW5kZWRWZWM8QXNzZXRUcmFuc2ZlckZpbHRlciwgTWF4QXNzZXRUcmFuc2ZlckZpbHRlcnM+AAEocmVtb3RlX3hjbTEDARxYY208KCk+ADEAREV4ZWN1dGVXaXRoT3JpZ2luCAFEZGVzY2VuZGFudF9vcmlnaW6ZAwFgT3B0aW9uPEludGVyaW9yTG9jYXRpb24+AAEMeGNtMQMBJFhjbTxDYWxsPgAyACBTZXRIaW50cwQBFGhpbnRznQMBhEJvdW5kZWRWZWM8SGludCwgSGludE51bVZhcmlhbnRzPgAzAAA9AxAsc3RhZ2luZ194Y20IdjUUYXNzZXQYQXNzZXRzAAAEAEEDAShWZWM8QXNzZXQ+AABBAwAAAkUDAEUDECxzdGFnaW5nX3hjbQh2NRRhc3NldBRBc3NldAAACAEIaWRJAwEcQXNzZXRJZAABDGZ1bk0DASxGdW5naWJpbGl0eQAASQMQLHN0YWdpbmdfeGNtCHY1FGFzc2V0HEFzc2V0SWQAAAQAOQIBIExvY2F0aW9uAABNAxAsc3RhZ2luZ194Y20IdjUUYXNzZXQsRnVuZ2liaWxpdHkAAQggRnVuZ2libGUEAJEBARB1MTI4AAAALE5vbkZ1bmdpYmxlBABRAwE0QXNzZXRJbnN0YW5jZQABAABRAxAsc3RhZ2luZ194Y20IdjUUYXNzZXQ0QXNzZXRJbnN0YW5jZQABGCRVbmRlZmluZWQAAAAUSW5kZXgEAJEBARB1MTI4AAEAGEFycmF5NAQAdAEcW3U4OyA0XQACABhBcnJheTgEAJUCARxbdTg7IDhdAAMAHEFycmF5MTYEAJkCASBbdTg7IDE2XQAEABxBcnJheTMyBAAIASBbdTg7IDMyXQAFAABVAwwsc3RhZ2luZ194Y20IdjUgUmVzcG9uc2UAARgQTnVsbAAAABhBc3NldHMEAD0DARhBc3NldHMAAQA8RXhlY3V0aW9uUmVzdWx0BABZAwFQT3B0aW9uPCh1MzIsIEVycm9yKT4AAgAcVmVyc2lvbgQAOAE4c3VwZXI6OlZlcnNpb24AAwAsUGFsbGV0c0luZm8EAGUDAZhCb3VuZGVkVmVjPFBhbGxldEluZm8sIE1heFBhbGxldHNJbmZvPgAEADhEaXNwYXRjaFJlc3VsdAQAvQIBOE1heWJlRXJyb3JDb2RlAAUAAFkDBBhPcHRpb24EBFQBXQMBCBBOb25lAAAAEFNvbWUEAF0DAAABAABdAwAABAg4YQMAYQMQDHhjbQh2NRh0cmFpdHMURXJyb3IAAaQgT3ZlcmZsb3cAAAA0VW5pbXBsZW1lbnRlZAABAGBVbnRydXN0ZWRSZXNlcnZlTG9jYXRpb24AAgBkVW50cnVzdGVkVGVsZXBvcnRMb2NhdGlvbgADADBMb2NhdGlvbkZ1bGwABABUTG9jYXRpb25Ob3RJbnZlcnRpYmxlAAUAJEJhZE9yaWdpbgAGADxJbnZhbGlkTG9jYXRpb24ABwA0QXNzZXROb3RGb3VuZAAIAFRGYWlsZWRUb1RyYW5zYWN0QXNzZXQACQA8Tm90V2l0aGRyYXdhYmxlAAoASExvY2F0aW9uQ2Fubm90SG9sZAALAFRFeGNlZWRzTWF4TWVzc2FnZVNpemUADABYRGVzdGluYXRpb25VbnN1cHBvcnRlZAANACRUcmFuc3BvcnQADgAoVW5yb3V0YWJsZQAPADBVbmtub3duQ2xhaW0AEAA4RmFpbGVkVG9EZWNvZGUAEQBATWF4V2VpZ2h0SW52YWxpZAASADhOb3RIb2xkaW5nRmVlcwATADBUb29FeHBlbnNpdmUAFAAQVHJhcAQAKAEMdTY0ABUAQEV4cGVjdGF0aW9uRmFsc2UAFgA4UGFsbGV0Tm90Rm91bmQAFwAwTmFtZU1pc21hdGNoABgATFZlcnNpb25JbmNvbXBhdGlibGUAGQBQSG9sZGluZ1dvdWxkT3ZlcmZsb3cAGgAsRXhwb3J0RXJyb3IAGwA4UmVhbmNob3JGYWlsZWQAHAAYTm9EZWFsAB0AKEZlZXNOb3RNZXQAHgAkTG9ja0Vycm9yAB8AME5vUGVybWlzc2lvbgAgAChVbmFuY2hvcmVkACEAOE5vdERlcG9zaXRhYmxlACIANFRvb01hbnlBc3NldHMAIwBMVW5oYW5kbGVkWGNtVmVyc2lvbgAkAEhXZWlnaHRMaW1pdFJlYWNoZWQEAHkBARhXZWlnaHQAJQAcQmFycmllcgAmAExXZWlnaHROb3RDb21wdXRhYmxlACcAREV4Y2VlZHNTdGFja0xpbWl0ACgAAGUDDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBaQMEUwAABABxAwEYVmVjPFQ+AABpAwwsc3RhZ2luZ194Y20IdjUoUGFsbGV0SW5mbwAAGAEUaW5kZXhkAQx1MzIAARBuYW1lbQMBgEJvdW5kZWRWZWM8dTgsIE1heFBhbGxldE5hbWVMZW4+AAEsbW9kdWxlX25hbWVtAwGAQm91bmRlZFZlYzx1OCwgTWF4UGFsbGV0TmFtZUxlbj4AARRtYWpvcmQBDHUzMgABFG1pbm9yZAEMdTMyAAEUcGF0Y2hkAQx1MzIAAG0DDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBDARTAAAEABgBGFZlYzxUPgAAcQMAAAJpAwB1AwQYT3B0aW9uBARUATkCAQgQTm9uZQAAABBTb21lBAA5AgAAAQAAeQMMLHN0YWdpbmdfeGNtCHY1RFF1ZXJ5UmVzcG9uc2VJbmZvAAAMASxkZXN0aW5hdGlvbjkCASBMb2NhdGlvbgABIHF1ZXJ5X2lkuAEcUXVlcnlJZAABKG1heF93ZWlnaHR5AQEYV2VpZ2h0AAB9AxAsc3RhZ2luZ194Y20IdjUUYXNzZXQsQXNzZXRGaWx0ZXIAAQggRGVmaW5pdGUEAD0DARhBc3NldHMAAAAQV2lsZAQAgQMBJFdpbGRBc3NldAABAACBAxAsc3RhZ2luZ194Y20IdjUUYXNzZXQkV2lsZEFzc2V0AAEQDEFsbAAAABRBbGxPZggBCGlkSQMBHEFzc2V0SWQAAQxmdW6FAwE8V2lsZEZ1bmdpYmlsaXR5AAEAKEFsbENvdW50ZWQEAGQBDHUzMgACADBBbGxPZkNvdW50ZWQMAQhpZEkDARxBc3NldElkAAEMZnVuhQMBPFdpbGRGdW5naWJpbGl0eQABFGNvdW50ZAEMdTMyAAMAAIUDECxzdGFnaW5nX3hjbQh2NRRhc3NldDxXaWxkRnVuZ2liaWxpdHkAAQggRnVuZ2libGUAAAAsTm9uRnVuZ2libGUAAQAAiQMEGE9wdGlvbgQEVAGNAwEIEE5vbmUAAAAQU29tZQQAjQMAAAEAAI0DECxzdGFnaW5nX3hjbQh2NRRhc3NldExBc3NldFRyYW5zZmVyRmlsdGVyAAEMIFRlbGVwb3J0BAB9AwEsQXNzZXRGaWx0ZXIAAAA4UmVzZXJ2ZURlcG9zaXQEAH0DASxBc3NldEZpbHRlcgABADxSZXNlcnZlV2l0aGRyYXcEAH0DASxBc3NldEZpbHRlcgACAACRAwxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAY0DBFMAAAQAlQMBGFZlYzxUPgAAlQMAAAKNAwCZAwQYT3B0aW9uBARUAT0CAQgQTm9uZQAAABBTb21lBAA9AgAAAQAAnQMMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAGhAwRTAAAEAKUDARhWZWM8VD4AAKEDDCxzdGFnaW5nX3hjbQh2NRBIaW50AAEEMEFzc2V0Q2xhaW1lcgQBIGxvY2F0aW9uOQIBIExvY2F0aW9uAAAAAKUDAAACoQMAqQMIDHhjbTxWZXJzaW9uZWRBc3NldHMAAQwIVjMEAH0CATx2Mzo6TXVsdGlBc3NldHMAAwAIVjQEAPECASh2NDo6QXNzZXRzAAQACFY1BAA9AwEodjU6OkFzc2V0cwAFAACtAwgMeGNtMFZlcnNpb25lZFhjbQQsUnVudGltZUNhbGwAAQwIVjMEALEDAVB2Mzo6WGNtPFJ1bnRpbWVDYWxsPgADAAhWNAQAwQMBUHY0OjpYY208UnVudGltZUNhbGw+AAQACFY1BADNAwFQdjU6OlhjbTxSdW50aW1lQ2FsbD4ABQAAsQMMDHhjbQh2MwxYY20EEENhbGwAAAQAtQMBWFZlYzxJbnN0cnVjdGlvbjxDYWxsPj4AALUDAAACuQMAuQMMDHhjbQh2MyxJbnN0cnVjdGlvbgQQQ2FsbAABwDRXaXRoZHJhd0Fzc2V0BAB9AgEsTXVsdGlBc3NldHMAAABUUmVzZXJ2ZUFzc2V0RGVwb3NpdGVkBAB9AgEsTXVsdGlBc3NldHMAAQBYUmVjZWl2ZVRlbGVwb3J0ZWRBc3NldAQAfQIBLE11bHRpQXNzZXRzAAIANFF1ZXJ5UmVzcG9uc2UQASBxdWVyeV9pZLgBHFF1ZXJ5SWQAASByZXNwb25zZZ0CASBSZXNwb25zZQABKG1heF93ZWlnaHR5AQEYV2VpZ2h0AAEccXVlcmllcsUCAVRPcHRpb248TXVsdGlMb2NhdGlvbj4AAwA0VHJhbnNmZXJBc3NldAgBGGFzc2V0c30CASxNdWx0aUFzc2V0cwABLGJlbmVmaWNpYXJ56QEBNE11bHRpTG9jYXRpb24ABABQVHJhbnNmZXJSZXNlcnZlQXNzZXQMARhhc3NldHN9AgEsTXVsdGlBc3NldHMAARBkZXN06QEBNE11bHRpTG9jYXRpb24AAQx4Y21xAgEcWGNtPCgpPgAFACBUcmFuc2FjdAwBLG9yaWdpbl9raW5kyQIBKE9yaWdpbktpbmQAAVhyZXF1aXJlX3dlaWdodF9hdF9tb3N0eQEBGFdlaWdodAABEGNhbGy9AwFMRG91YmxlRW5jb2RlZDxDYWxsPgAGAGRIcm1wTmV3Q2hhbm5lbE9wZW5SZXF1ZXN0DAEYc2VuZGVyZAEMdTMyAAFAbWF4X21lc3NhZ2Vfc2l6ZWQBDHUzMgABMG1heF9jYXBhY2l0eWQBDHUzMgAHAExIcm1wQ2hhbm5lbEFjY2VwdGVkBAEkcmVjaXBpZW50ZAEMdTMyAAgASEhybXBDaGFubmVsQ2xvc2luZwwBJGluaXRpYXRvcmQBDHUzMgABGHNlbmRlcmQBDHUzMgABJHJlY2lwaWVudGQBDHUzMgAJACxDbGVhck9yaWdpbgAKADREZXNjZW5kT3JpZ2luBADtAQFUSW50ZXJpb3JNdWx0aUxvY2F0aW9uAAsALFJlcG9ydEVycm9yBADRAgFEUXVlcnlSZXNwb25zZUluZm8ADAAwRGVwb3NpdEFzc2V0CAEYYXNzZXRz1QIBQE11bHRpQXNzZXRGaWx0ZXIAASxiZW5lZmljaWFyeekBATRNdWx0aUxvY2F0aW9uAA0ATERlcG9zaXRSZXNlcnZlQXNzZXQMARhhc3NldHPVAgFATXVsdGlBc3NldEZpbHRlcgABEGRlc3TpAQE0TXVsdGlMb2NhdGlvbgABDHhjbXECARxYY208KCk+AA4ANEV4Y2hhbmdlQXNzZXQMARBnaXZl1QIBQE11bHRpQXNzZXRGaWx0ZXIAARB3YW50fQIBLE11bHRpQXNzZXRzAAEcbWF4aW1hbJkBARBib29sAA8AXEluaXRpYXRlUmVzZXJ2ZVdpdGhkcmF3DAEYYXNzZXRz1QIBQE11bHRpQXNzZXRGaWx0ZXIAARxyZXNlcnZl6QEBNE11bHRpTG9jYXRpb24AAQx4Y21xAgEcWGNtPCgpPgAQAEBJbml0aWF0ZVRlbGVwb3J0DAEYYXNzZXRz1QIBQE11bHRpQXNzZXRGaWx0ZXIAARBkZXN06QEBNE11bHRpTG9jYXRpb24AAQx4Y21xAgEcWGNtPCgpPgARADRSZXBvcnRIb2xkaW5nCAE0cmVzcG9uc2VfaW5mb9ECAURRdWVyeVJlc3BvbnNlSW5mbwABGGFzc2V0c9UCAUBNdWx0aUFzc2V0RmlsdGVyABIAMEJ1eUV4ZWN1dGlvbggBEGZlZXOFAgEoTXVsdGlBc3NldAABMHdlaWdodF9saW1pdOECASxXZWlnaHRMaW1pdAATADRSZWZ1bmRTdXJwbHVzABQAPFNldEVycm9ySGFuZGxlcgQAsQMBJFhjbTxDYWxsPgAVACxTZXRBcHBlbmRpeAQAsQMBJFhjbTxDYWxsPgAWAChDbGVhckVycm9yABcAKENsYWltQXNzZXQIARhhc3NldHN9AgEsTXVsdGlBc3NldHMAARh0aWNrZXTpAQE0TXVsdGlMb2NhdGlvbgAYABBUcmFwBAC4AQx1NjQAGQBAU3Vic2NyaWJlVmVyc2lvbggBIHF1ZXJ5X2lkuAEcUXVlcnlJZAABTG1heF9yZXNwb25zZV93ZWlnaHR5AQEYV2VpZ2h0ABoASFVuc3Vic2NyaWJlVmVyc2lvbgAbACRCdXJuQXNzZXQEAH0CASxNdWx0aUFzc2V0cwAcACxFeHBlY3RBc3NldAQAfQIBLE11bHRpQXNzZXRzAB0AMEV4cGVjdE9yaWdpbgQAxQIBVE9wdGlvbjxNdWx0aUxvY2F0aW9uPgAeACxFeHBlY3RFcnJvcgQAoQIBUE9wdGlvbjwodTMyLCBFcnJvcik+AB8AUEV4cGVjdFRyYW5zYWN0U3RhdHVzBAC9AgE4TWF5YmVFcnJvckNvZGUAIAAsUXVlcnlQYWxsZXQIASxtb2R1bGVfbmFtZRgBHFZlYzx1OD4AATRyZXNwb25zZV9pbmZv0QIBRFF1ZXJ5UmVzcG9uc2VJbmZvACEAMEV4cGVjdFBhbGxldBQBFGluZGV4ZAEMdTMyAAEQbmFtZRgBHFZlYzx1OD4AASxtb2R1bGVfbmFtZRgBHFZlYzx1OD4AASxjcmF0ZV9tYWpvcmQBDHUzMgABPG1pbl9jcmF0ZV9taW5vcmQBDHUzMgAiAFBSZXBvcnRUcmFuc2FjdFN0YXR1cwQA0QIBRFF1ZXJ5UmVzcG9uc2VJbmZvACMATENsZWFyVHJhbnNhY3RTdGF0dXMAJAA8VW5pdmVyc2FsT3JpZ2luBADxAQEgSnVuY3Rpb24AJQA0RXhwb3J0TWVzc2FnZQwBHG5ldHdvcmv5AQEkTmV0d29ya0lkAAEsZGVzdGluYXRpb27tAQFUSW50ZXJpb3JNdWx0aUxvY2F0aW9uAAEMeGNtcQIBHFhjbTwoKT4AJgAkTG9ja0Fzc2V0CAEUYXNzZXSFAgEoTXVsdGlBc3NldAABIHVubG9ja2Vy6QEBNE11bHRpTG9jYXRpb24AJwAsVW5sb2NrQXNzZXQIARRhc3NldIUCAShNdWx0aUFzc2V0AAEYdGFyZ2V06QEBNE11bHRpTG9jYXRpb24AKAA4Tm90ZVVubG9ja2FibGUIARRhc3NldIUCAShNdWx0aUFzc2V0AAEUb3duZXLpAQE0TXVsdGlMb2NhdGlvbgApADRSZXF1ZXN0VW5sb2NrCAEUYXNzZXSFAgEoTXVsdGlBc3NldAABGGxvY2tlcukBATRNdWx0aUxvY2F0aW9uACoALFNldEZlZXNNb2RlBAEwaml0X3dpdGhkcmF3mQEBEGJvb2wAKwAgU2V0VG9waWMEAAgBIFt1ODsgMzJdACwAKENsZWFyVG9waWMALQAsQWxpYXNPcmlnaW4EAOkBATRNdWx0aUxvY2F0aW9uAC4APFVucGFpZEV4ZWN1dGlvbggBMHdlaWdodF9saW1pdOECASxXZWlnaHRMaW1pdAABMGNoZWNrX29yaWdpbsUCAVRPcHRpb248TXVsdGlMb2NhdGlvbj4ALwAAvQMMDHhjbThkb3VibGVfZW5jb2RlZDREb3VibGVFbmNvZGVkBARUAAAEARxlbmNvZGVkGAEcVmVjPHU4PgAAwQMMLHN0YWdpbmdfeGNtCHY0DFhjbQQQQ2FsbAAABADFAwFYVmVjPEluc3RydWN0aW9uPENhbGw+PgAAxQMAAALJAwDJAwwsc3RhZ2luZ194Y20IdjQsSW5zdHJ1Y3Rpb24EEENhbGwAAcA0V2l0aGRyYXdBc3NldAQA8QIBGEFzc2V0cwAAAFRSZXNlcnZlQXNzZXREZXBvc2l0ZWQEAPECARhBc3NldHMAAQBYUmVjZWl2ZVRlbGVwb3J0ZWRBc3NldAQA8QIBGEFzc2V0cwACADRRdWVyeVJlc3BvbnNlEAEgcXVlcnlfaWS4ARxRdWVyeUlkAAEgcmVzcG9uc2UJAwEgUmVzcG9uc2UAAShtYXhfd2VpZ2h0eQEBGFdlaWdodAABHHF1ZXJpZXIdAwFAT3B0aW9uPExvY2F0aW9uPgADADRUcmFuc2ZlckFzc2V0CAEYYXNzZXRz8QIBGEFzc2V0cwABLGJlbmVmaWNpYXJ5BQIBIExvY2F0aW9uAAQAUFRyYW5zZmVyUmVzZXJ2ZUFzc2V0DAEYYXNzZXRz8QIBGEFzc2V0cwABEGRlc3QFAgEgTG9jYXRpb24AAQx4Y23lAgEcWGNtPCgpPgAFACBUcmFuc2FjdAwBLG9yaWdpbl9raW5kyQIBKE9yaWdpbktpbmQAAVhyZXF1aXJlX3dlaWdodF9hdF9tb3N0eQEBGFdlaWdodAABEGNhbGy9AwFMRG91YmxlRW5jb2RlZDxDYWxsPgAGAGRIcm1wTmV3Q2hhbm5lbE9wZW5SZXF1ZXN0DAEYc2VuZGVyZAEMdTMyAAFAbWF4X21lc3NhZ2Vfc2l6ZWQBDHUzMgABMG1heF9jYXBhY2l0eWQBDHUzMgAHAExIcm1wQ2hhbm5lbEFjY2VwdGVkBAEkcmVjaXBpZW50ZAEMdTMyAAgASEhybXBDaGFubmVsQ2xvc2luZwwBJGluaXRpYXRvcmQBDHUzMgABGHNlbmRlcmQBDHUzMgABJHJlY2lwaWVudGQBDHUzMgAJACxDbGVhck9yaWdpbgAKADREZXNjZW5kT3JpZ2luBAAJAgFASW50ZXJpb3JMb2NhdGlvbgALACxSZXBvcnRFcnJvcgQAIQMBRFF1ZXJ5UmVzcG9uc2VJbmZvAAwAMERlcG9zaXRBc3NldAgBGGFzc2V0cyUDASxBc3NldEZpbHRlcgABLGJlbmVmaWNpYXJ5BQIBIExvY2F0aW9uAA0ATERlcG9zaXRSZXNlcnZlQXNzZXQMARhhc3NldHMlAwEsQXNzZXRGaWx0ZXIAARBkZXN0BQIBIExvY2F0aW9uAAEMeGNt5QIBHFhjbTwoKT4ADgA0RXhjaGFuZ2VBc3NldAwBEGdpdmUlAwEsQXNzZXRGaWx0ZXIAARB3YW508QIBGEFzc2V0cwABHG1heGltYWyZAQEQYm9vbAAPAFxJbml0aWF0ZVJlc2VydmVXaXRoZHJhdwwBGGFzc2V0cyUDASxBc3NldEZpbHRlcgABHHJlc2VydmUFAgEgTG9jYXRpb24AAQx4Y23lAgEcWGNtPCgpPgAQAEBJbml0aWF0ZVRlbGVwb3J0DAEYYXNzZXRzJQMBLEFzc2V0RmlsdGVyAAEQZGVzdAUCASBMb2NhdGlvbgABDHhjbeUCARxYY208KCk+ABEANFJlcG9ydEhvbGRpbmcIATRyZXNwb25zZV9pbmZvIQMBRFF1ZXJ5UmVzcG9uc2VJbmZvAAEYYXNzZXRzJQMBLEFzc2V0RmlsdGVyABIAMEJ1eUV4ZWN1dGlvbggBEGZlZXP5AgEUQXNzZXQAATB3ZWlnaHRfbGltaXThAgEsV2VpZ2h0TGltaXQAEwA0UmVmdW5kU3VycGx1cwAUADxTZXRFcnJvckhhbmRsZXIEAMEDASRYY208Q2FsbD4AFQAsU2V0QXBwZW5kaXgEAMEDASRYY208Q2FsbD4AFgAoQ2xlYXJFcnJvcgAXAChDbGFpbUFzc2V0CAEYYXNzZXRz8QIBGEFzc2V0cwABGHRpY2tldAUCASBMb2NhdGlvbgAYABBUcmFwBAC4AQx1NjQAGQBAU3Vic2NyaWJlVmVyc2lvbggBIHF1ZXJ5X2lkuAEcUXVlcnlJZAABTG1heF9yZXNwb25zZV93ZWlnaHR5AQEYV2VpZ2h0ABoASFVuc3Vic2NyaWJlVmVyc2lvbgAbACRCdXJuQXNzZXQEAPECARhBc3NldHMAHAAsRXhwZWN0QXNzZXQEAPECARhBc3NldHMAHQAwRXhwZWN0T3JpZ2luBAAdAwFAT3B0aW9uPExvY2F0aW9uPgAeACxFeHBlY3RFcnJvcgQAoQIBUE9wdGlvbjwodTMyLCBFcnJvcik+AB8AUEV4cGVjdFRyYW5zYWN0U3RhdHVzBAC9AgE4TWF5YmVFcnJvckNvZGUAIAAsUXVlcnlQYWxsZXQIASxtb2R1bGVfbmFtZRgBHFZlYzx1OD4AATRyZXNwb25zZV9pbmZvIQMBRFF1ZXJ5UmVzcG9uc2VJbmZvACEAMEV4cGVjdFBhbGxldBQBFGluZGV4ZAEMdTMyAAEQbmFtZRgBHFZlYzx1OD4AASxtb2R1bGVfbmFtZRgBHFZlYzx1OD4AASxjcmF0ZV9tYWpvcmQBDHUzMgABPG1pbl9jcmF0ZV9taW5vcmQBDHUzMgAiAFBSZXBvcnRUcmFuc2FjdFN0YXR1cwQAIQMBRFF1ZXJ5UmVzcG9uc2VJbmZvACMATENsZWFyVHJhbnNhY3RTdGF0dXMAJAA8VW5pdmVyc2FsT3JpZ2luBAARAgEgSnVuY3Rpb24AJQA0RXhwb3J0TWVzc2FnZQwBHG5ldHdvcmsZAgEkTmV0d29ya0lkAAEsZGVzdGluYXRpb24JAgFASW50ZXJpb3JMb2NhdGlvbgABDHhjbeUCARxYY208KCk+ACYAJExvY2tBc3NldAgBFGFzc2V0+QIBFEFzc2V0AAEgdW5sb2NrZXIFAgEgTG9jYXRpb24AJwAsVW5sb2NrQXNzZXQIARRhc3NldPkCARRBc3NldAABGHRhcmdldAUCASBMb2NhdGlvbgAoADhOb3RlVW5sb2NrYWJsZQgBFGFzc2V0+QIBFEFzc2V0AAEUb3duZXIFAgEgTG9jYXRpb24AKQA0UmVxdWVzdFVubG9jawgBFGFzc2V0+QIBFEFzc2V0AAEYbG9ja2VyBQIBIExvY2F0aW9uACoALFNldEZlZXNNb2RlBAEwaml0X3dpdGhkcmF3mQEBEGJvb2wAKwAgU2V0VG9waWMEAAgBIFt1ODsgMzJdACwAKENsZWFyVG9waWMALQAsQWxpYXNPcmlnaW4EAAUCASBMb2NhdGlvbgAuADxVbnBhaWRFeGVjdXRpb24IATB3ZWlnaHRfbGltaXThAgEsV2VpZ2h0TGltaXQAATBjaGVja19vcmlnaW4dAwFAT3B0aW9uPExvY2F0aW9uPgAvAADNAwwsc3RhZ2luZ194Y20IdjUMWGNtBBBDYWxsAAAEANEDAVhWZWM8SW5zdHJ1Y3Rpb248Q2FsbD4+AADRAwAAAtUDANUDDCxzdGFnaW5nX3hjbQh2NSxJbnN0cnVjdGlvbgQQQ2FsbAAB0DRXaXRoZHJhd0Fzc2V0BAA9AwEYQXNzZXRzAAAAVFJlc2VydmVBc3NldERlcG9zaXRlZAQAPQMBGEFzc2V0cwABAFhSZWNlaXZlVGVsZXBvcnRlZEFzc2V0BAA9AwEYQXNzZXRzAAIANFF1ZXJ5UmVzcG9uc2UQASBxdWVyeV9pZLgBHFF1ZXJ5SWQAASByZXNwb25zZVUDASBSZXNwb25zZQABKG1heF93ZWlnaHR5AQEYV2VpZ2h0AAEccXVlcmllcnUDAUBPcHRpb248TG9jYXRpb24+AAMANFRyYW5zZmVyQXNzZXQIARhhc3NldHM9AwEYQXNzZXRzAAEsYmVuZWZpY2lhcnk5AgEgTG9jYXRpb24ABABQVHJhbnNmZXJSZXNlcnZlQXNzZXQMARhhc3NldHM9AwEYQXNzZXRzAAEQZGVzdDkCASBMb2NhdGlvbgABDHhjbTEDARxYY208KCk+AAUAIFRyYW5zYWN0DAEsb3JpZ2luX2tpbmTJAgEoT3JpZ2luS2luZAABTGZhbGxiYWNrX21heF93ZWlnaHR1AQE4T3B0aW9uPFdlaWdodD4AARBjYWxsvQMBTERvdWJsZUVuY29kZWQ8Q2FsbD4ABgBkSHJtcE5ld0NoYW5uZWxPcGVuUmVxdWVzdAwBGHNlbmRlcmQBDHUzMgABQG1heF9tZXNzYWdlX3NpemVkAQx1MzIAATBtYXhfY2FwYWNpdHlkAQx1MzIABwBMSHJtcENoYW5uZWxBY2NlcHRlZAQBJHJlY2lwaWVudGQBDHUzMgAIAEhIcm1wQ2hhbm5lbENsb3NpbmcMASRpbml0aWF0b3JkAQx1MzIAARhzZW5kZXJkAQx1MzIAASRyZWNpcGllbnRkAQx1MzIACQAsQ2xlYXJPcmlnaW4ACgA0RGVzY2VuZE9yaWdpbgQAPQIBQEludGVyaW9yTG9jYXRpb24ACwAsUmVwb3J0RXJyb3IEAHkDAURRdWVyeVJlc3BvbnNlSW5mbwAMADBEZXBvc2l0QXNzZXQIARhhc3NldHN9AwEsQXNzZXRGaWx0ZXIAASxiZW5lZmljaWFyeTkCASBMb2NhdGlvbgANAExEZXBvc2l0UmVzZXJ2ZUFzc2V0DAEYYXNzZXRzfQMBLEFzc2V0RmlsdGVyAAEQZGVzdDkCASBMb2NhdGlvbgABDHhjbTEDARxYY208KCk+AA4ANEV4Y2hhbmdlQXNzZXQMARBnaXZlfQMBLEFzc2V0RmlsdGVyAAEQd2FudD0DARhBc3NldHMAARxtYXhpbWFsmQEBEGJvb2wADwBcSW5pdGlhdGVSZXNlcnZlV2l0aGRyYXcMARhhc3NldHN9AwEsQXNzZXRGaWx0ZXIAARxyZXNlcnZlOQIBIExvY2F0aW9uAAEMeGNtMQMBHFhjbTwoKT4AEABASW5pdGlhdGVUZWxlcG9ydAwBGGFzc2V0c30DASxBc3NldEZpbHRlcgABEGRlc3Q5AgEgTG9jYXRpb24AAQx4Y20xAwEcWGNtPCgpPgARADRSZXBvcnRIb2xkaW5nCAE0cmVzcG9uc2VfaW5mb3kDAURRdWVyeVJlc3BvbnNlSW5mbwABGGFzc2V0c30DASxBc3NldEZpbHRlcgASADBCdXlFeGVjdXRpb24IARBmZWVzRQMBFEFzc2V0AAEwd2VpZ2h0X2xpbWl04QIBLFdlaWdodExpbWl0ABMANFJlZnVuZFN1cnBsdXMAFAA8U2V0RXJyb3JIYW5kbGVyBADNAwEkWGNtPENhbGw+ABUALFNldEFwcGVuZGl4BADNAwEkWGNtPENhbGw+ABYAKENsZWFyRXJyb3IAFwAoQ2xhaW1Bc3NldAgBGGFzc2V0cz0DARhBc3NldHMAARh0aWNrZXQ5AgEgTG9jYXRpb24AGAAQVHJhcAQAuAEMdTY0ABkAQFN1YnNjcmliZVZlcnNpb24IASBxdWVyeV9pZLgBHFF1ZXJ5SWQAAUxtYXhfcmVzcG9uc2Vfd2VpZ2h0eQEBGFdlaWdodAAaAEhVbnN1YnNjcmliZVZlcnNpb24AGwAkQnVybkFzc2V0BAA9AwEYQXNzZXRzABwALEV4cGVjdEFzc2V0BAA9AwEYQXNzZXRzAB0AMEV4cGVjdE9yaWdpbgQAdQMBQE9wdGlvbjxMb2NhdGlvbj4AHgAsRXhwZWN0RXJyb3IEAFkDAVBPcHRpb248KHUzMiwgRXJyb3IpPgAfAFBFeHBlY3RUcmFuc2FjdFN0YXR1cwQAvQIBOE1heWJlRXJyb3JDb2RlACAALFF1ZXJ5UGFsbGV0CAEsbW9kdWxlX25hbWUYARxWZWM8dTg+AAE0cmVzcG9uc2VfaW5mb3kDAURRdWVyeVJlc3BvbnNlSW5mbwAhADBFeHBlY3RQYWxsZXQUARRpbmRleGQBDHUzMgABEG5hbWUYARxWZWM8dTg+AAEsbW9kdWxlX25hbWUYARxWZWM8dTg+AAEsY3JhdGVfbWFqb3JkAQx1MzIAATxtaW5fY3JhdGVfbWlub3JkAQx1MzIAIgBQUmVwb3J0VHJhbnNhY3RTdGF0dXMEAHkDAURRdWVyeVJlc3BvbnNlSW5mbwAjAExDbGVhclRyYW5zYWN0U3RhdHVzACQAPFVuaXZlcnNhbE9yaWdpbgQARQIBIEp1bmN0aW9uACUANEV4cG9ydE1lc3NhZ2UMARxuZXR3b3JrTQIBJE5ldHdvcmtJZAABLGRlc3RpbmF0aW9uPQIBQEludGVyaW9yTG9jYXRpb24AAQx4Y20xAwEcWGNtPCgpPgAmACRMb2NrQXNzZXQIARRhc3NldEUDARRBc3NldAABIHVubG9ja2VyOQIBIExvY2F0aW9uACcALFVubG9ja0Fzc2V0CAEUYXNzZXRFAwEUQXNzZXQAARh0YXJnZXQ5AgEgTG9jYXRpb24AKAA4Tm90ZVVubG9ja2FibGUIARRhc3NldEUDARRBc3NldAABFG93bmVyOQIBIExvY2F0aW9uACkANFJlcXVlc3RVbmxvY2sIARRhc3NldEUDARRBc3NldAABGGxvY2tlcjkCASBMb2NhdGlvbgAqACxTZXRGZWVzTW9kZQQBMGppdF93aXRoZHJhd5kBARBib29sACsAIFNldFRvcGljBAAIASBbdTg7IDMyXQAsAChDbGVhclRvcGljAC0ALEFsaWFzT3JpZ2luBAA5AgEgTG9jYXRpb24ALgA8VW5wYWlkRXhlY3V0aW9uCAEwd2VpZ2h0X2xpbWl04QIBLFdlaWdodExpbWl0AAEwY2hlY2tfb3JpZ2ludQMBQE9wdGlvbjxMb2NhdGlvbj4ALwAcUGF5RmVlcwQBFGFzc2V0RQMBFEFzc2V0ADAAQEluaXRpYXRlVHJhbnNmZXIUASxkZXN0aW5hdGlvbjkCASBMb2NhdGlvbgABLHJlbW90ZV9mZWVziQMBbE9wdGlvbjxBc3NldFRyYW5zZmVyRmlsdGVyPgABPHByZXNlcnZlX29yaWdpbpkBARBib29sAAEYYXNzZXRzkQMB4EJvdW5kZWRWZWM8QXNzZXRUcmFuc2ZlckZpbHRlciwgTWF4QXNzZXRUcmFuc2ZlckZpbHRlcnM+AAEocmVtb3RlX3hjbTEDARxYY208KCk+ADEAREV4ZWN1dGVXaXRoT3JpZ2luCAFEZGVzY2VuZGFudF9vcmlnaW6ZAwFgT3B0aW9uPEludGVyaW9yTG9jYXRpb24+AAEMeGNtzQMBJFhjbTxDYWxsPgAyACBTZXRIaW50cwQBFGhpbnRznQMBhEJvdW5kZWRWZWM8SGludCwgSGludE51bVZhcmlhbnRzPgAzAADZAxBQc3RhZ2luZ194Y21fZXhlY3V0b3IYdHJhaXRzOGFzc2V0X3RyYW5zZmVyMFRyYW5zZmVyVHlwZQABECBUZWxlcG9ydAAAADBMb2NhbFJlc2VydmUAAQBIRGVzdGluYXRpb25SZXNlcnZlAAIANFJlbW90ZVJlc2VydmUEAOUBAURWZXJzaW9uZWRMb2NhdGlvbgADAADdAwgMeGNtQFZlcnNpb25lZEFzc2V0SWQAAQwIVjMEAIkCASx2Mzo6QXNzZXRJZAADAAhWNAQA/QIBLHY0OjpBc3NldElkAAQACFY1BABJAwEsdjU6OkFzc2V0SWQABQAA4QMMSGN1bXVsdXNfcGFsbGV0X3hjbRhwYWxsZXQQQ2FsbAQEVAABAAQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy7lAwxwcGFsbGV0X3hjbV9icmlkZ2VfaHViX3JvdXRlchhwYWxsZXQQQ2FsbAgEVAAESQABBFByZXBvcnRfYnJpZGdlX3N0YXR1cwgBJGJyaWRnZV9pZEABEEgyNTYAATBpc19jb25nZXN0ZWSZAQEQYm9vbAAABKhOb3RpZmljYXRpb24gYWJvdXQgY29uZ2VzdGVkIGJyaWRnZSBxdWV1ZS4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMu6QMMUHBhbGxldF9tZXNzYWdlX3F1ZXVlGHBhbGxldBBDYWxsBARUAAEIJHJlYXBfcGFnZQgBOG1lc3NhZ2Vfb3JpZ2lu7QMBSE1lc3NhZ2VPcmlnaW5PZjxUPgABKHBhZ2VfaW5kZXg4ASRQYWdlSW5kZXgAAAQ9AVJlbW92ZSBhIHBhZ2Ugd2hpY2ggaGFzIG5vIG1vcmUgbWVzc2FnZXMgcmVtYWluaW5nIHRvIGJlIHByb2Nlc3NlZCBvciBpcyBzdGFsZS5IZXhlY3V0ZV9vdmVyd2VpZ2h0EAE4bWVzc2FnZV9vcmlnaW7tAwFITWVzc2FnZU9yaWdpbk9mPFQ+AAEQcGFnZTgBJFBhZ2VJbmRleAABFGluZGV4OAEcVDo6U2l6ZQABMHdlaWdodF9saW1pdHkBARhXZWlnaHQAATR4RXhlY3V0ZSBhbiBvdmVyd2VpZ2h0IG1lc3NhZ2UuAE0BVGVtcG9yYXJ5IHByb2Nlc3NpbmcgZXJyb3JzIHdpbGwgYmUgcHJvcGFnYXRlZCB3aGVyZWFzIHBlcm1hbmVudCBlcnJvcnMgYXJlIHRyZWF0ZWRUYXMgc3VjY2VzcyBjb25kaXRpb24uAHQtIGBvcmlnaW5gOiBNdXN0IGJlIGBTaWduZWRgLjUBLSBgbWVzc2FnZV9vcmlnaW5gOiBUaGUgb3JpZ2luIGZyb20gd2hpY2ggdGhlIG1lc3NhZ2UgdG8gYmUgZXhlY3V0ZWQgYXJyaXZlZC49AS0gYHBhZ2VgOiBUaGUgcGFnZSBpbiB0aGUgcXVldWUgaW4gd2hpY2ggdGhlIG1lc3NhZ2UgdG8gYmUgZXhlY3V0ZWQgaXMgc2l0dGluZy4JAS0gYGluZGV4YDogVGhlIGluZGV4IGludG8gdGhlIHF1ZXVlIG9mIHRoZSBtZXNzYWdlIHRvIGJlIGV4ZWN1dGVkLlkBLSBgd2VpZ2h0X2xpbWl0YDogVGhlIG1heGltdW0gYW1vdW50IG9mIHdlaWdodCBhbGxvd2VkIHRvIGJlIGNvbnN1bWVkIGluIHRoZSBleGVjdXRpb25EICBvZiB0aGUgbWVzc2FnZS4A9EJlbmNobWFyayBjb21wbGV4aXR5IGNvbnNpZGVyYXRpb25zOiBPKGluZGV4ICsgd2VpZ2h0X2xpbWl0KS4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMu7QMIXGN1bXVsdXNfcHJpbWl0aXZlc19jb3JlWEFnZ3JlZ2F0ZU1lc3NhZ2VPcmlnaW4AAQwQSGVyZQAAABhQYXJlbnQAAQAcU2libGluZwQAoAEYUGFyYUlkAAIAAPEDDDhwYWxsZXRfdXRpbGl0eRhwYWxsZXQQQ2FsbAQEVAABIBRiYXRjaAQBFGNhbGxz9QMBfFZlYzw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4AAEh8U2VuZCBhIGJhdGNoIG9mIGRpc3BhdGNoIGNhbGxzLgCwTWF5IGJlIGNhbGxlZCBmcm9tIGFueSBvcmlnaW4gZXhjZXB0IGBOb25lYC4AXQEtIGBjYWxsc2A6IFRoZSBjYWxscyB0byBiZSBkaXNwYXRjaGVkIGZyb20gdGhlIHNhbWUgb3JpZ2luLiBUaGUgbnVtYmVyIG9mIGNhbGwgbXVzdCBub3Q5ASAgZXhjZWVkIHRoZSBjb25zdGFudDogYGJhdGNoZWRfY2FsbHNfbGltaXRgIChhdmFpbGFibGUgaW4gY29uc3RhbnQgbWV0YWRhdGEpLgBVAUlmIG9yaWdpbiBpcyByb290IHRoZW4gdGhlIGNhbGxzIGFyZSBkaXNwYXRjaGVkIHdpdGhvdXQgY2hlY2tpbmcgb3JpZ2luIGZpbHRlci4gKFRoaXPsaW5jbHVkZXMgYnlwYXNzaW5nIGBmcmFtZV9zeXN0ZW06OkNvbmZpZzo6QmFzZUNhbGxGaWx0ZXJgKS4ANCMjIENvbXBsZXhpdHnQLSBPKEMpIHdoZXJlIEMgaXMgdGhlIG51bWJlciBvZiBjYWxscyB0byBiZSBiYXRjaGVkLgBVAVRoaXMgd2lsbCByZXR1cm4gYE9rYCBpbiBhbGwgY2lyY3Vtc3RhbmNlcy4gVG8gZGV0ZXJtaW5lIHRoZSBzdWNjZXNzIG9mIHRoZSBiYXRjaCwgYW4xAWV2ZW50IGlzIGRlcG9zaXRlZC4gSWYgYSBjYWxsIGZhaWxlZCBhbmQgdGhlIGJhdGNoIHdhcyBpbnRlcnJ1cHRlZCwgdGhlbiB0aGVVAWBCYXRjaEludGVycnVwdGVkYCBldmVudCBpcyBkZXBvc2l0ZWQsIGFsb25nIHdpdGggdGhlIG51bWJlciBvZiBzdWNjZXNzZnVsIGNhbGxzIG1hZGVNAWFuZCB0aGUgZXJyb3Igb2YgdGhlIGZhaWxlZCBjYWxsLiBJZiBhbGwgd2VyZSBzdWNjZXNzZnVsLCB0aGVuIHRoZSBgQmF0Y2hDb21wbGV0ZWRgTGV2ZW50IGlzIGRlcG9zaXRlZC40YXNfZGVyaXZhdGl2ZQgBFGluZGV4+QMBDHUxNgABEGNhbGwgAXxCb3g8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AAE03FNlbmQgYSBjYWxsIHRocm91Z2ggYW4gaW5kZXhlZCBwc2V1ZG9ueW0gb2YgdGhlIHNlbmRlci4AVQFGaWx0ZXIgZnJvbSBvcmlnaW4gYXJlIHBhc3NlZCBhbG9uZy4gVGhlIGNhbGwgd2lsbCBiZSBkaXNwYXRjaGVkIHdpdGggYW4gb3JpZ2luIHdoaWNovHVzZSB0aGUgc2FtZSBmaWx0ZXIgYXMgdGhlIG9yaWdpbiBvZiB0aGlzIGNhbGwuAEUBTk9URTogSWYgeW91IG5lZWQgdG8gZW5zdXJlIHRoYXQgYW55IGFjY291bnQtYmFzZWQgZmlsdGVyaW5nIGlzIG5vdCBob25vcmVkIChpLmUuYQFiZWNhdXNlIHlvdSBleHBlY3QgYHByb3h5YCB0byBoYXZlIGJlZW4gdXNlZCBwcmlvciBpbiB0aGUgY2FsbCBzdGFjayBhbmQgeW91IGRvIG5vdCB3YW50UQF0aGUgY2FsbCByZXN0cmljdGlvbnMgdG8gYXBwbHkgdG8gYW55IHN1Yi1hY2NvdW50cyksIHRoZW4gdXNlIGBhc19tdWx0aV90aHJlc2hvbGRfMWB8aW4gdGhlIE11bHRpc2lnIHBhbGxldCBpbnN0ZWFkLgD0Tk9URTogUHJpb3IgdG8gdmVyc2lvbiAqMTIsIHRoaXMgd2FzIGNhbGxlZCBgYXNfbGltaXRlZF9zdWJgLgDMVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uJGJhdGNoX2FsbAQBFGNhbGxz9QMBfFZlYzw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4AAjTsU2VuZCBhIGJhdGNoIG9mIGRpc3BhdGNoIGNhbGxzIGFuZCBhdG9taWNhbGx5IGV4ZWN1dGUgdGhlbS4hAVRoZSB3aG9sZSB0cmFuc2FjdGlvbiB3aWxsIHJvbGxiYWNrIGFuZCBmYWlsIGlmIGFueSBvZiB0aGUgY2FsbHMgZmFpbGVkLgCwTWF5IGJlIGNhbGxlZCBmcm9tIGFueSBvcmlnaW4gZXhjZXB0IGBOb25lYC4AXQEtIGBjYWxsc2A6IFRoZSBjYWxscyB0byBiZSBkaXNwYXRjaGVkIGZyb20gdGhlIHNhbWUgb3JpZ2luLiBUaGUgbnVtYmVyIG9mIGNhbGwgbXVzdCBub3Q5ASAgZXhjZWVkIHRoZSBjb25zdGFudDogYGJhdGNoZWRfY2FsbHNfbGltaXRgIChhdmFpbGFibGUgaW4gY29uc3RhbnQgbWV0YWRhdGEpLgBVAUlmIG9yaWdpbiBpcyByb290IHRoZW4gdGhlIGNhbGxzIGFyZSBkaXNwYXRjaGVkIHdpdGhvdXQgY2hlY2tpbmcgb3JpZ2luIGZpbHRlci4gKFRoaXPsaW5jbHVkZXMgYnlwYXNzaW5nIGBmcmFtZV9zeXN0ZW06OkNvbmZpZzo6QmFzZUNhbGxGaWx0ZXJgKS4ANCMjIENvbXBsZXhpdHnQLSBPKEMpIHdoZXJlIEMgaXMgdGhlIG51bWJlciBvZiBjYWxscyB0byBiZSBiYXRjaGVkLixkaXNwYXRjaF9hcwgBJGFzX29yaWdpbv0DAVRCb3g8VDo6UGFsbGV0c09yaWdpbj4AARBjYWxsIAF8Qm94PDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgADGMhEaXNwYXRjaGVzIGEgZnVuY3Rpb24gY2FsbCB3aXRoIGEgcHJvdmlkZWQgb3JpZ2luLgDEVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1Jvb3RfLgA0IyMgQ29tcGxleGl0eRwtIE8oMSkuLGZvcmNlX2JhdGNoBAEUY2FsbHP1AwF8VmVjPDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgAENHxTZW5kIGEgYmF0Y2ggb2YgZGlzcGF0Y2ggY2FsbHMu1FVubGlrZSBgYmF0Y2hgLCBpdCBhbGxvd3MgZXJyb3JzIGFuZCB3b24ndCBpbnRlcnJ1cHQuALBNYXkgYmUgY2FsbGVkIGZyb20gYW55IG9yaWdpbiBleGNlcHQgYE5vbmVgLgBdAS0gYGNhbGxzYDogVGhlIGNhbGxzIHRvIGJlIGRpc3BhdGNoZWQgZnJvbSB0aGUgc2FtZSBvcmlnaW4uIFRoZSBudW1iZXIgb2YgY2FsbCBtdXN0IG5vdDkBICBleGNlZWQgdGhlIGNvbnN0YW50OiBgYmF0Y2hlZF9jYWxsc19saW1pdGAgKGF2YWlsYWJsZSBpbiBjb25zdGFudCBtZXRhZGF0YSkuAE0BSWYgb3JpZ2luIGlzIHJvb3QgdGhlbiB0aGUgY2FsbHMgYXJlIGRpc3BhdGNoIHdpdGhvdXQgY2hlY2tpbmcgb3JpZ2luIGZpbHRlci4gKFRoaXPsaW5jbHVkZXMgYnlwYXNzaW5nIGBmcmFtZV9zeXN0ZW06OkNvbmZpZzo6QmFzZUNhbGxGaWx0ZXJgKS4ANCMjIENvbXBsZXhpdHnQLSBPKEMpIHdoZXJlIEMgaXMgdGhlIG51bWJlciBvZiBjYWxscyB0byBiZSBiYXRjaGVkLix3aXRoX3dlaWdodAgBEGNhbGwgAXxCb3g8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AAEYd2VpZ2h0eQEBGFdlaWdodAAFGMREaXNwYXRjaCBhIGZ1bmN0aW9uIGNhbGwgd2l0aCBhIHNwZWNpZmllZCB3ZWlnaHQuAC0BVGhpcyBmdW5jdGlvbiBkb2VzIG5vdCBjaGVjayB0aGUgd2VpZ2h0IG9mIHRoZSBjYWxsLCBhbmQgaW5zdGVhZCBhbGxvd3MgdGhluFJvb3Qgb3JpZ2luIHRvIHNwZWNpZnkgdGhlIHdlaWdodCBvZiB0aGUgY2FsbC4AxFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9Sb290Xy4caWZfZWxzZQgBEG1haW4gAXxCb3g8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AAEgZmFsbGJhY2sgAXxCb3g8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AAZcFQFEaXNwYXRjaCBhIGZhbGxiYWNrIGNhbGwgaW4gdGhlIGV2ZW50IHRoZSBtYWluIGNhbGwgZmFpbHMgdG8gZXhlY3V0ZS6wTWF5IGJlIGNhbGxlZCBmcm9tIGFueSBvcmlnaW4gZXhjZXB0IGBOb25lYC4A5FRoaXMgZnVuY3Rpb24gZmlyc3QgYXR0ZW1wdHMgdG8gZGlzcGF0Y2ggdGhlIGBtYWluYCBjYWxsLtRJZiB0aGUgYG1haW5gIGNhbGwgZmFpbHMsIHRoZSBgZmFsbGJhY2tgIGlzIGF0dGVtdGVkLhUBaWYgdGhlIGZhbGxiYWNrIGlzIHN1Y2Nlc3NmdWxseSBkaXNwYXRjaGVkLCB0aGUgd2VpZ2h0cyBvZiBib3RoIGNhbGxzJQFhcmUgYWNjdW11bGF0ZWQgYW5kIGFuIGV2ZW50IGNvbnRhaW5pbmcgdGhlIG1haW4gY2FsbCBlcnJvciBpcyBkZXBvc2l0ZWQuANxJbiB0aGUgZXZlbnQgb2YgYSBmYWxsYmFjayBmYWlsdXJlIHRoZSB3aG9sZSBjYWxsIGZhaWxzaHdpdGggdGhlIHdlaWdodHMgcmV0dXJuZWQuAEEBLSBgbWFpbmA6IFRoZSBtYWluIGNhbGwgdG8gYmUgZGlzcGF0Y2hlZC4gVGhpcyBpcyB0aGUgcHJpbWFyeSBhY3Rpb24gdG8gZXhlY3V0ZS49AS0gYGZhbGxiYWNrYDogVGhlIGZhbGxiYWNrIGNhbGwgdG8gYmUgZGlzcGF0Y2hlZCBpbiBjYXNlIHRoZSBgbWFpbmAgY2FsbCBmYWlscy4ARCMjIERpc3BhdGNoIExvZ2ljQQEtIElmIHRoZSBvcmlnaW4gaXMgYHJvb3RgLCBib3RoIHRoZSBtYWluIGFuZCBmYWxsYmFjayBjYWxscyBhcmUgZXhlY3V0ZWQgd2l0aG91dHggIGFwcGx5aW5nIGFueSBvcmlnaW4gZmlsdGVycy5JAS0gSWYgdGhlIG9yaWdpbiBpcyBub3QgYHJvb3RgLCB0aGUgb3JpZ2luIGZpbHRlciBpcyBhcHBsaWVkIHRvIGJvdGggdGhlIGBtYWluYCBhbmRMICBgZmFsbGJhY2tgIGNhbGxzLgAsIyMgVXNlIENhc2VZAS0gU29tZSB1c2UgY2FzZXMgbWlnaHQgaW52b2x2ZSBzdWJtaXR0aW5nIGEgYGJhdGNoYCB0eXBlIGNhbGwgaW4gZWl0aGVyIG1haW4sIGZhbGxiYWNrKCAgb3IgYm90aC5QZGlzcGF0Y2hfYXNfZmFsbGlibGUIASRhc19vcmlnaW79AwFUQm94PFQ6OlBhbGxldHNPcmlnaW4+AAEQY2FsbCABfEJveDw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4ABxTIRGlzcGF0Y2hlcyBhIGZ1bmN0aW9uIGNhbGwgd2l0aCBhIHByb3ZpZGVkIG9yaWdpbi4AUQFBbG1vc3QgdGhlIHNhbWUgYXMgW2BQYWxsZXQ6OmRpc3BhdGNoX2FzYF0gYnV0IGZvcndhcmRzIGFueSBlcnJvciBvZiB0aGUgaW5uZXIgY2FsbC4AxFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9Sb290Xy4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMu9QMAAAIgAPkDAAAFBAD9AwhgYXNzZXRfaHViX2t1c2FtYV9ydW50aW1lME9yaWdpbkNhbGxlcgABFBhzeXN0ZW0EAAEEAXRmcmFtZV9zeXN0ZW06Ok9yaWdpbjxSdW50aW1lPgAAACxQb2xrYWRvdFhjbQQABQQBSHBhbGxldF94Y206Ok9yaWdpbgAfAChDdW11bHVzWGNtBAAJBAFoY3VtdWx1c19wYWxsZXRfeGNtOjpPcmlnaW4AIAAYUmV2aXZlBAANBAF4cGFsbGV0X3Jldml2ZTo6T3JpZ2luPFJ1bnRpbWU+ADwAHE9yaWdpbnMEABUEAXRwYWxsZXRfY3VzdG9tX29yaWdpbnM6Ok9yaWdpbgBdAAABBAw0ZnJhbWVfc3VwcG9ydCBkaXNwYXRjaCRSYXdPcmlnaW4EJEFjY291bnRJZAEEARAQUm9vdAAAABhTaWduZWQEAAQBJEFjY291bnRJZAABABBOb25lAAIAKEF1dGhvcml6ZWQAAwAABQQMKHBhbGxldF94Y20YcGFsbGV0GE9yaWdpbgABCAxYY20EADkCASBMb2NhdGlvbgAAACBSZXNwb25zZQQAOQIBIExvY2F0aW9uAAEAAAkEDEhjdW11bHVzX3BhbGxldF94Y20YcGFsbGV0GE9yaWdpbgABCBRSZWxheQAAAEBTaWJsaW5nUGFyYWNoYWluBACgARhQYXJhSWQAAQAADQQMNHBhbGxldF9yZXZpdmUYcGFsbGV0GE9yaWdpbgQEVAERBAEEOEV0aFRyYW5zYWN0aW9uBAAEATBUOjpBY2NvdW50SWQAAAAAEQQIYGFzc2V0X2h1Yl9rdXNhbWFfcnVudGltZRxSdW50aW1lAAAAABUEFGBhc3NldF9odWJfa3VzYW1hX3J1bnRpbWUoZ292ZXJuYW5jZRxvcmlnaW5zVHBhbGxldF9jdXN0b21fb3JpZ2lucxhPcmlnaW4AAXAwU3Rha2luZ0FkbWluAAAAJFRyZWFzdXJlcgABADxGZWxsb3dzaGlwQWRtaW4AAgAwR2VuZXJhbEFkbWluAAMAMEF1Y3Rpb25BZG1pbgAEAChMZWFzZUFkbWluAAUATFJlZmVyZW5kdW1DYW5jZWxsZXIABgBAUmVmZXJlbmR1bUtpbGxlcgAHACxTbWFsbFRpcHBlcgAIACRCaWdUaXBwZXIACQAwU21hbGxTcGVuZGVyAAoANE1lZGl1bVNwZW5kZXIACwAoQmlnU3BlbmRlcgAMAERXaGl0ZWxpc3RlZENhbGxlcgANAExGZWxsb3dzaGlwSW5pdGlhdGVzAA4AHEZlbGxvd3MADwBERmVsbG93c2hpcEV4cGVydHMAEABERmVsbG93c2hpcE1hc3RlcnMAEQA4RmVsbG93c2hpcDFEYW4AEgA4RmVsbG93c2hpcDJEYW4AEwA4RmVsbG93c2hpcDNEYW4AFAA4RmVsbG93c2hpcDREYW4AFQA4RmVsbG93c2hpcDVEYW4AFgA4RmVsbG93c2hpcDZEYW4AFwA4RmVsbG93c2hpcDdEYW4AGAA4RmVsbG93c2hpcDhEYW4AGQA4RmVsbG93c2hpcDlEYW4AGgA0V2lzaEZvckNoYW5nZQAbAAAZBAw8cGFsbGV0X211bHRpc2lnGHBhbGxldBBDYWxsBARUAAEUUGFzX211bHRpX3RocmVzaG9sZF8xCAFEb3RoZXJfc2lnbmF0b3JpZXOdAQFEVmVjPFQ6OkFjY291bnRJZD4AARBjYWxsIAF8Qm94PDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgAAMFEBSW1tZWRpYXRlbHkgZGlzcGF0Y2ggYSBtdWx0aS1zaWduYXR1cmUgY2FsbCB1c2luZyBhIHNpbmdsZSBhcHByb3ZhbCBmcm9tIHRoZSBjYWxsZXIuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4APQEtIGBvdGhlcl9zaWduYXRvcmllc2A6IFRoZSBhY2NvdW50cyAob3RoZXIgdGhhbiB0aGUgc2VuZGVyKSB3aG8gYXJlIHBhcnQgb2YgdGhlAQFtdWx0aS1zaWduYXR1cmUsIGJ1dCBkbyBub3QgcGFydGljaXBhdGUgaW4gdGhlIGFwcHJvdmFsIHByb2Nlc3MuiC0gYGNhbGxgOiBUaGUgY2FsbCB0byBiZSBleGVjdXRlZC4AuFJlc3VsdCBpcyBlcXVpdmFsZW50IHRvIHRoZSBkaXNwYXRjaGVkIHJlc3VsdC4ANCMjIENvbXBsZXhpdHkZAU8oWiArIEMpIHdoZXJlIFogaXMgdGhlIGxlbmd0aCBvZiB0aGUgY2FsbCBhbmQgQyBpdHMgZXhlY3V0aW9uIHdlaWdodC4gYXNfbXVsdGkUASR0aHJlc2hvbGT5AwEMdTE2AAFEb3RoZXJfc2lnbmF0b3JpZXOdAQFEVmVjPFQ6OkFjY291bnRJZD4AATxtYXliZV90aW1lcG9pbnQdBAGQT3B0aW9uPFRpbWVwb2ludDxCbG9ja051bWJlckZvcjxUPj4+AAEQY2FsbCABfEJveDw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4AAShtYXhfd2VpZ2h0eQEBGFdlaWdodAABqFUBUmVnaXN0ZXIgYXBwcm92YWwgZm9yIGEgZGlzcGF0Y2ggdG8gYmUgbWFkZSBmcm9tIGEgZGV0ZXJtaW5pc3RpYyBjb21wb3NpdGUgYWNjb3VudCBpZvhhcHByb3ZlZCBieSBhIHRvdGFsIG9mIGB0aHJlc2hvbGQgLSAxYCBvZiBgb3RoZXJfc2lnbmF0b3JpZXNgLgA9ASoqSWYgdGhlIGFwcHJvdmFsIHRocmVzaG9sZCBpcyBtZXQgKGluY2x1ZGluZyB0aGUgc2VuZGVyJ3MgYXBwcm92YWwpLCB0aGlzIHdpbGxFAWltbWVkaWF0ZWx5IGV4ZWN1dGUgdGhlIGNhbGwuKiogVGhpcyBpcyB0aGUgb25seSB3YXkgdG8gZXhlY3V0ZSBhIG11bHRpc2lnIGNhbGwgLcBgYXBwcm92ZV9hc19tdWx0aWAgd2lsbCBuZXZlciB0cmlnZ2VyIGV4ZWN1dGlvbi4ALQFQYXltZW50OiBgRGVwb3NpdEJhc2VgIHdpbGwgYmUgcmVzZXJ2ZWQgaWYgdGhpcyBpcyB0aGUgZmlyc3QgYXBwcm92YWwsIHBsdXM9AWB0aHJlc2hvbGRgIHRpbWVzIGBEZXBvc2l0RmFjdG9yYC4gSXQgaXMgcmV0dXJuZWQgb25jZSB0aGlzIGRpc3BhdGNoIGhhcHBlbnMgb3I0aXMgY2FuY2VsbGVkLgDMVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uAFUBLSBgdGhyZXNob2xkYDogVGhlIHRvdGFsIG51bWJlciBvZiBhcHByb3ZhbHMgZm9yIHRoaXMgZGlzcGF0Y2ggYmVmb3JlIGl0IGlzIGV4ZWN1dGVkLkEBLSBgb3RoZXJfc2lnbmF0b3JpZXNgOiBUaGUgYWNjb3VudHMgKG90aGVyIHRoYW4gdGhlIHNlbmRlcikgd2hvIGNhbiBhcHByb3ZlIHRoaXNsZGlzcGF0Y2guIE1heSBub3QgYmUgZW1wdHkuWQEtIGBtYXliZV90aW1lcG9pbnRgOiBJZiB0aGlzIGlzIHRoZSBmaXJzdCBhcHByb3ZhbCwgdGhlbiB0aGlzIG11c3QgYmUgYE5vbmVgLiBJZiBpdCBpc1EBbm90IHRoZSBmaXJzdCBhcHByb3ZhbCwgdGhlbiBpdCBtdXN0IGJlIGBTb21lYCwgd2l0aCB0aGUgdGltZXBvaW50IChibG9jayBudW1iZXIgYW5k1HRyYW5zYWN0aW9uIGluZGV4KSBvZiB0aGUgZmlyc3QgYXBwcm92YWwgdHJhbnNhY3Rpb24uiC0gYGNhbGxgOiBUaGUgY2FsbCB0byBiZSBleGVjdXRlZC4ATQFOT1RFOiBGb3IgaW50ZXJtZWRpYXRlIGFwcHJvdmFscyAobm90IHRoZSBmaW5hbCBhcHByb3ZhbCksIHlvdSBzaG91bGQgZ2VuZXJhbGx5IHVzZUUBYGFwcHJvdmVfYXNfbXVsdGlgIGluc3RlYWQsIHNpbmNlIGl0IG9ubHkgcmVxdWlyZXMgYSBoYXNoIG9mIHRoZSBjYWxsIGFuZCBpcyBtb3JlKGVmZmljaWVudC4AWQFSZXN1bHQgaXMgZXF1aXZhbGVudCB0byB0aGUgZGlzcGF0Y2hlZCByZXN1bHQgaWYgYHRocmVzaG9sZGAgaXMgZXhhY3RseSBgMWAuIE90aGVyd2lzZVUBb24gc3VjY2VzcywgcmVzdWx0IGlzIGBPa2AgYW5kIHRoZSByZXN1bHQgZnJvbSB0aGUgaW50ZXJpb3IgY2FsbCwgaWYgaXQgd2FzIGV4ZWN1dGVkLNxtYXkgYmUgZm91bmQgaW4gdGhlIGRlcG9zaXRlZCBgTXVsdGlzaWdFeGVjdXRlZGAgZXZlbnQuADQjIyBDb21wbGV4aXR5UC0gYE8oUyArIFogKyBDYWxsKWAuzC0gVXAgdG8gb25lIGJhbGFuY2UtcmVzZXJ2ZSBvciB1bnJlc2VydmUgb3BlcmF0aW9uLj0BLSBPbmUgcGFzc3Rocm91Z2ggb3BlcmF0aW9uLCBvbmUgaW5zZXJ0LCBib3RoIGBPKFMpYCB3aGVyZSBgU2AgaXMgdGhlIG51bWJlciBvZkUBICBzaWduYXRvcmllcy4gYFNgIGlzIGNhcHBlZCBieSBgTWF4U2lnbmF0b3JpZXNgLCB3aXRoIHdlaWdodCBiZWluZyBwcm9wb3J0aW9uYWwuIQEtIE9uZSBjYWxsIGVuY29kZSAmIGhhc2gsIGJvdGggb2YgY29tcGxleGl0eSBgTyhaKWAgd2hlcmUgYFpgIGlzIHR4LWxlbi68LSBPbmUgZW5jb2RlICYgaGFzaCwgYm90aCBvZiBjb21wbGV4aXR5IGBPKFMpYC7ULSBVcCB0byBvbmUgYmluYXJ5IHNlYXJjaCBhbmQgaW5zZXJ0IChgTyhsb2dTICsgUylgKS74LSBJL086IDEgcmVhZCBgTyhTKWAsIHVwIHRvIDEgbXV0YXRlIGBPKFMpYC4gVXAgdG8gb25lIHJlbW92ZS4wLSBPbmUgZXZlbnQubC0gVGhlIHdlaWdodCBvZiB0aGUgYGNhbGxgLk0BLSBTdG9yYWdlOiBpbnNlcnRzIG9uZSBpdGVtLCB2YWx1ZSBzaXplIGJvdW5kZWQgYnkgYE1heFNpZ25hdG9yaWVzYCwgd2l0aCBhIGRlcG9zaXQZASAgdGFrZW4gZm9yIGl0cyBsaWZldGltZSBvZiBgRGVwb3NpdEJhc2UgKyB0aHJlc2hvbGQgKiBEZXBvc2l0RmFjdG9yYC5AYXBwcm92ZV9hc19tdWx0aRQBJHRocmVzaG9sZPkDAQx1MTYAAURvdGhlcl9zaWduYXRvcmllc50BAURWZWM8VDo6QWNjb3VudElkPgABPG1heWJlX3RpbWVwb2ludB0EAZBPcHRpb248VGltZXBvaW50PEJsb2NrTnVtYmVyRm9yPFQ+Pj4AASRjYWxsX2hhc2gIASBbdTg7IDMyXQABKG1heF93ZWlnaHR5AQEYV2VpZ2h0AAKYVQFSZWdpc3RlciBhcHByb3ZhbCBmb3IgYSBkaXNwYXRjaCB0byBiZSBtYWRlIGZyb20gYSBkZXRlcm1pbmlzdGljIGNvbXBvc2l0ZSBhY2NvdW50IGlm+GFwcHJvdmVkIGJ5IGEgdG90YWwgb2YgYHRocmVzaG9sZCAtIDFgIG9mIGBvdGhlcl9zaWduYXRvcmllc2AuADkBKipUaGlzIGZ1bmN0aW9uIHdpbGwgTkVWRVIgZXhlY3V0ZSB0aGUgY2FsbCwgZXZlbiBpZiB0aGUgYXBwcm92YWwgdGhyZXNob2xkIGlzUQFyZWFjaGVkLioqIEl0IG9ubHkgcmVnaXN0ZXJzIGFwcHJvdmFsLiBUbyBhY3R1YWxseSBleGVjdXRlIHRoZSBjYWxsLCBgYXNfbXVsdGlgIG11c3TwYmUgY2FsbGVkIHdpdGggdGhlIGZ1bGwgY2FsbCBkYXRhIGJ5IGFueSBvZiB0aGUgc2lnbmF0b3JpZXMuAE0BVGhpcyBmdW5jdGlvbiBpcyBtb3JlIGVmZmljaWVudCB0aGFuIGBhc19tdWx0aWAgZm9yIGludGVybWVkaWF0ZSBhcHByb3ZhbHMgc2luY2UgaXTQb25seSByZXF1aXJlcyB0aGUgY2FsbCBoYXNoLCBub3QgdGhlIGZ1bGwgY2FsbCBkYXRhLgAtAVBheW1lbnQ6IGBEZXBvc2l0QmFzZWAgd2lsbCBiZSByZXNlcnZlZCBpZiB0aGlzIGlzIHRoZSBmaXJzdCBhcHByb3ZhbCwgcGx1cz0BYHRocmVzaG9sZGAgdGltZXMgYERlcG9zaXRGYWN0b3JgLiBJdCBpcyByZXR1cm5lZCBvbmNlIHRoaXMgZGlzcGF0Y2ggaGFwcGVucyBvcjRpcyBjYW5jZWxsZWQuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4AVQEtIGB0aHJlc2hvbGRgOiBUaGUgdG90YWwgbnVtYmVyIG9mIGFwcHJvdmFscyBmb3IgdGhpcyBkaXNwYXRjaCBiZWZvcmUgaXQgaXMgZXhlY3V0ZWQuQQEtIGBvdGhlcl9zaWduYXRvcmllc2A6IFRoZSBhY2NvdW50cyAob3RoZXIgdGhhbiB0aGUgc2VuZGVyKSB3aG8gY2FuIGFwcHJvdmUgdGhpc2xkaXNwYXRjaC4gTWF5IG5vdCBiZSBlbXB0eS5ZAS0gYG1heWJlX3RpbWVwb2ludGA6IElmIHRoaXMgaXMgdGhlIGZpcnN0IGFwcHJvdmFsLCB0aGVuIHRoaXMgbXVzdCBiZSBgTm9uZWAuIElmIGl0IGlzUQFub3QgdGhlIGZpcnN0IGFwcHJvdmFsLCB0aGVuIGl0IG11c3QgYmUgYFNvbWVgLCB3aXRoIHRoZSB0aW1lcG9pbnQgKGJsb2NrIG51bWJlciBhbmTUdHJhbnNhY3Rpb24gaW5kZXgpIG9mIHRoZSBmaXJzdCBhcHByb3ZhbCB0cmFuc2FjdGlvbi7MLSBgY2FsbF9oYXNoYDogVGhlIGhhc2ggb2YgdGhlIGNhbGwgdG8gYmUgZXhlY3V0ZWQuAD0BTk9URTogVG8gZXhlY3V0ZSB0aGUgY2FsbCBhZnRlciBhcHByb3ZhbHMgYXJlIGdhdGhlcmVkLCBhbnkgc2lnbmF0b3J5IG11c3QgY2FsbCkBYGFzX211bHRpYCB3aXRoIHRoZSBmdWxsIGNhbGwgZGF0YS4gVGhpcyBmdW5jdGlvbiBjYW5ub3QgZXhlY3V0ZSB0aGUgY2FsbC4ANCMjIENvbXBsZXhpdHkkLSBgTyhTKWAuzC0gVXAgdG8gb25lIGJhbGFuY2UtcmVzZXJ2ZSBvciB1bnJlc2VydmUgb3BlcmF0aW9uLj0BLSBPbmUgcGFzc3Rocm91Z2ggb3BlcmF0aW9uLCBvbmUgaW5zZXJ0LCBib3RoIGBPKFMpYCB3aGVyZSBgU2AgaXMgdGhlIG51bWJlciBvZkUBICBzaWduYXRvcmllcy4gYFNgIGlzIGNhcHBlZCBieSBgTWF4U2lnbmF0b3JpZXNgLCB3aXRoIHdlaWdodCBiZWluZyBwcm9wb3J0aW9uYWwuvC0gT25lIGVuY29kZSAmIGhhc2gsIGJvdGggb2YgY29tcGxleGl0eSBgTyhTKWAu1C0gVXAgdG8gb25lIGJpbmFyeSBzZWFyY2ggYW5kIGluc2VydCAoYE8obG9nUyArIFMpYCku+C0gSS9POiAxIHJlYWQgYE8oUylgLCB1cCB0byAxIG11dGF0ZSBgTyhTKWAuIFVwIHRvIG9uZSByZW1vdmUuMC0gT25lIGV2ZW50Lk0BLSBTdG9yYWdlOiBpbnNlcnRzIG9uZSBpdGVtLCB2YWx1ZSBzaXplIGJvdW5kZWQgYnkgYE1heFNpZ25hdG9yaWVzYCwgd2l0aCBhIGRlcG9zaXQZASAgdGFrZW4gZm9yIGl0cyBsaWZldGltZSBvZiBgRGVwb3NpdEJhc2UgKyB0aHJlc2hvbGQgKiBEZXBvc2l0RmFjdG9yYC48Y2FuY2VsX2FzX211bHRpEAEkdGhyZXNob2xk+QMBDHUxNgABRG90aGVyX3NpZ25hdG9yaWVznQEBRFZlYzxUOjpBY2NvdW50SWQ+AAEkdGltZXBvaW50IQQBcFRpbWVwb2ludDxCbG9ja051bWJlckZvcjxUPj4AASRjYWxsX2hhc2gIASBbdTg7IDMyXQADVFUBQ2FuY2VsIGEgcHJlLWV4aXN0aW5nLCBvbi1nb2luZyBtdWx0aXNpZyB0cmFuc2FjdGlvbi4gQW55IGRlcG9zaXQgcmVzZXJ2ZWQgcHJldmlvdXNsecRmb3IgdGhpcyBvcGVyYXRpb24gd2lsbCBiZSB1bnJlc2VydmVkIG9uIHN1Y2Nlc3MuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4AVQEtIGB0aHJlc2hvbGRgOiBUaGUgdG90YWwgbnVtYmVyIG9mIGFwcHJvdmFscyBmb3IgdGhpcyBkaXNwYXRjaCBiZWZvcmUgaXQgaXMgZXhlY3V0ZWQuQQEtIGBvdGhlcl9zaWduYXRvcmllc2A6IFRoZSBhY2NvdW50cyAob3RoZXIgdGhhbiB0aGUgc2VuZGVyKSB3aG8gY2FuIGFwcHJvdmUgdGhpc2xkaXNwYXRjaC4gTWF5IG5vdCBiZSBlbXB0eS5dAS0gYHRpbWVwb2ludGA6IFRoZSB0aW1lcG9pbnQgKGJsb2NrIG51bWJlciBhbmQgdHJhbnNhY3Rpb24gaW5kZXgpIG9mIHRoZSBmaXJzdCBhcHByb3ZhbHh0cmFuc2FjdGlvbiBmb3IgdGhpcyBkaXNwYXRjaC7MLSBgY2FsbF9oYXNoYDogVGhlIGhhc2ggb2YgdGhlIGNhbGwgdG8gYmUgZXhlY3V0ZWQuADQjIyBDb21wbGV4aXR5JC0gYE8oUylgLswtIFVwIHRvIG9uZSBiYWxhbmNlLXJlc2VydmUgb3IgdW5yZXNlcnZlIG9wZXJhdGlvbi49AS0gT25lIHBhc3N0aHJvdWdoIG9wZXJhdGlvbiwgb25lIGluc2VydCwgYm90aCBgTyhTKWAgd2hlcmUgYFNgIGlzIHRoZSBudW1iZXIgb2ZFASAgc2lnbmF0b3JpZXMuIGBTYCBpcyBjYXBwZWQgYnkgYE1heFNpZ25hdG9yaWVzYCwgd2l0aCB3ZWlnaHQgYmVpbmcgcHJvcG9ydGlvbmFsLrwtIE9uZSBlbmNvZGUgJiBoYXNoLCBib3RoIG9mIGNvbXBsZXhpdHkgYE8oUylgLjAtIE9uZSBldmVudC6ELSBJL086IDEgcmVhZCBgTyhTKWAsIG9uZSByZW1vdmUucC0gU3RvcmFnZTogcmVtb3ZlcyBvbmUgaXRlbS4wcG9rZV9kZXBvc2l0DAEkdGhyZXNob2xk+QMBDHUxNgABRG90aGVyX3NpZ25hdG9yaWVznQEBRFZlYzxUOjpBY2NvdW50SWQ+AAEkY2FsbF9oYXNoCAEgW3U4OyAzMl0ABDT0UG9rZSB0aGUgZGVwb3NpdCByZXNlcnZlZCBmb3IgYW4gZXhpc3RpbmcgbXVsdGlzaWcgb3BlcmF0aW9uLgBhAVRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfIGFuZCBtdXN0IGJlIHRoZSBvcmlnaW5hbCBkZXBvc2l0b3Igb2ZcdGhlIG11bHRpc2lnIG9wZXJhdGlvbi4AAQFUaGUgdHJhbnNhY3Rpb24gZmVlIGlzIHdhaXZlZCBpZiB0aGUgZGVwb3NpdCBhbW91bnQgaGFzIGNoYW5nZWQuABkBLSBgdGhyZXNob2xkYDogVGhlIHRvdGFsIG51bWJlciBvZiBhcHByb3ZhbHMgbmVlZGVkIGZvciB0aGlzIG11bHRpc2lnLj0BLSBgb3RoZXJfc2lnbmF0b3JpZXNgOiBUaGUgYWNjb3VudHMgKG90aGVyIHRoYW4gdGhlIHNlbmRlcikgd2hvIGFyZSBwYXJ0IG9mIHRoZSwgIG11bHRpc2lnLgUBLSBgY2FsbF9oYXNoYDogVGhlIGhhc2ggb2YgdGhlIGNhbGwgdGhpcyBkZXBvc2l0IGlzIHJlc2VydmVkIGZvci4AjEVtaXRzIGBEZXBvc2l0UG9rZWRgIGlmIHN1Y2Nlc3NmdWwuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLh0EBBhPcHRpb24EBFQBIQQBCBBOb25lAAAAEFNvbWUEACEEAAABAAAhBAg8cGFsbGV0X211bHRpc2lnJFRpbWVwb2ludAQsQmxvY2tOdW1iZXIBOAAIARhoZWlnaHQ4ASxCbG9ja051bWJlcgABFGluZGV4OAEMdTMyAAAlBAwwcGFsbGV0X3Byb3h5GHBhbGxldBBDYWxsBARUAAEsFHByb3h5DAEQcmVhbAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAFAZm9yY2VfcHJveHlfdHlwZSkEAVBPcHRpb248VDo6UHJveHlUeXBlPgABEGNhbGwgAXxCb3g8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AAAkTQFEaXNwYXRjaCB0aGUgZ2l2ZW4gYGNhbGxgIGZyb20gYW4gYWNjb3VudCB0aGF0IHRoZSBzZW5kZXIgaXMgYXV0aG9yaXNlZCBmb3IgdGhyb3VnaDBgYWRkX3Byb3h5YC4AzFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLgAsUGFyYW1ldGVyczoNAS0gYHJlYWxgOiBUaGUgYWNjb3VudCB0aGF0IHRoZSBwcm94eSB3aWxsIG1ha2UgYSBjYWxsIG9uIGJlaGFsZiBvZi5hAS0gYGZvcmNlX3Byb3h5X3R5cGVgOiBTcGVjaWZ5IHRoZSBleGFjdCBwcm94eSB0eXBlIHRvIGJlIHVzZWQgYW5kIGNoZWNrZWQgZm9yIHRoaXMgY2FsbC7QLSBgY2FsbGA6IFRoZSBjYWxsIHRvIGJlIG1hZGUgYnkgdGhlIGByZWFsYCBhY2NvdW50LiRhZGRfcHJveHkMASBkZWxlZ2F0ZQABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEocHJveHlfdHlwZS0EATBUOjpQcm94eVR5cGUAARRkZWxheTgBREJsb2NrTnVtYmVyRm9yPFQ+AAEkRQFSZWdpc3RlciBhIHByb3h5IGFjY291bnQgZm9yIHRoZSBzZW5kZXIgdGhhdCBpcyBhYmxlIHRvIG1ha2UgY2FsbHMgb24gaXRzIGJlaGFsZi4AzFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLgAsUGFyYW1ldGVyczoRAS0gYHByb3h5YDogVGhlIGFjY291bnQgdGhhdCB0aGUgYGNhbGxlcmAgd291bGQgbGlrZSB0byBtYWtlIGEgcHJveHku/C0gYHByb3h5X3R5cGVgOiBUaGUgcGVybWlzc2lvbnMgYWxsb3dlZCBmb3IgdGhpcyBwcm94eSBhY2NvdW50Lk0BLSBgZGVsYXlgOiBUaGUgYW5ub3VuY2VtZW50IHBlcmlvZCByZXF1aXJlZCBvZiB0aGUgaW5pdGlhbCBwcm94eS4gV2lsbCBnZW5lcmFsbHkgYmUUemVyby4wcmVtb3ZlX3Byb3h5DAEgZGVsZWdhdGUAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABKHByb3h5X3R5cGUtBAEwVDo6UHJveHlUeXBlAAEUZGVsYXk4AURCbG9ja051bWJlckZvcjxUPgACHKhVbnJlZ2lzdGVyIGEgcHJveHkgYWNjb3VudCBmb3IgdGhlIHNlbmRlci4AzFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLgAsUGFyYW1ldGVyczolAS0gYHByb3h5YDogVGhlIGFjY291bnQgdGhhdCB0aGUgYGNhbGxlcmAgd291bGQgbGlrZSB0byByZW1vdmUgYXMgYSBwcm94eS5BAS0gYHByb3h5X3R5cGVgOiBUaGUgcGVybWlzc2lvbnMgY3VycmVudGx5IGVuYWJsZWQgZm9yIHRoZSByZW1vdmVkIHByb3h5IGFjY291bnQuOHJlbW92ZV9wcm94aWVzAAMYtFVucmVnaXN0ZXIgYWxsIHByb3h5IGFjY291bnRzIGZvciB0aGUgc2VuZGVyLgDMVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uAF0BV0FSTklORzogVGhpcyBtYXkgYmUgY2FsbGVkIG9uIGFjY291bnRzIGNyZWF0ZWQgYnkgYGNyZWF0ZV9wdXJlYCwgaG93ZXZlciBpZiBkb25lLCB0aGVuWQF0aGUgdW5yZXNlcnZlZCBmZWVzIHdpbGwgYmUgaW5hY2Nlc3NpYmxlLiAqKkFsbCBhY2Nlc3MgdG8gdGhpcyBhY2NvdW50IHdpbGwgYmUgbG9zdC4qKixjcmVhdGVfcHVyZQwBKHByb3h5X3R5cGUtBAEwVDo6UHJveHlUeXBlAAEUZGVsYXk4AURCbG9ja051bWJlckZvcjxUPgABFGluZGV4+QMBDHUxNgAESDkBU3Bhd24gYSBmcmVzaCBuZXcgYWNjb3VudCB0aGF0IGlzIGd1YXJhbnRlZWQgdG8gYmUgb3RoZXJ3aXNlIGluYWNjZXNzaWJsZSwgYW5k/GluaXRpYWxpemUgaXQgd2l0aCBhIHByb3h5IG9mIGBwcm94eV90eXBlYCBmb3IgYG9yaWdpbmAgc2VuZGVyLgBsUmVxdWlyZXMgYSBgU2lnbmVkYCBvcmlnaW4uAFEBLSBgcHJveHlfdHlwZWA6IFRoZSB0eXBlIG9mIHRoZSBwcm94eSB0aGF0IHRoZSBzZW5kZXIgd2lsbCBiZSByZWdpc3RlcmVkIGFzIG92ZXIgdGhlTQFuZXcgYWNjb3VudC4gVGhpcyB3aWxsIGFsbW9zdCBhbHdheXMgYmUgdGhlIG1vc3QgcGVybWlzc2l2ZSBgUHJveHlUeXBlYCBwb3NzaWJsZSB0b3hhbGxvdyBmb3IgbWF4aW11bSBmbGV4aWJpbGl0eS5RAS0gYGluZGV4YDogQSBkaXNhbWJpZ3VhdGlvbiBpbmRleCwgaW4gY2FzZSB0aGlzIGlzIGNhbGxlZCBtdWx0aXBsZSB0aW1lcyBpbiB0aGUgc2FtZV0BdHJhbnNhY3Rpb24gKGUuZy4gd2l0aCBgdXRpbGl0eTo6YmF0Y2hgKS4gVW5sZXNzIHlvdSdyZSB1c2luZyBgYmF0Y2hgIHlvdSBwcm9iYWJseSBqdXN0QHdhbnQgdG8gdXNlIGAwYC5NAS0gYGRlbGF5YDogVGhlIGFubm91bmNlbWVudCBwZXJpb2QgcmVxdWlyZWQgb2YgdGhlIGluaXRpYWwgcHJveHkuIFdpbGwgZ2VuZXJhbGx5IGJlFHplcm8uAFEBRmFpbHMgd2l0aCBgRHVwbGljYXRlYCBpZiB0aGlzIGhhcyBhbHJlYWR5IGJlZW4gY2FsbGVkIGluIHRoaXMgdHJhbnNhY3Rpb24sIGZyb20gdGhlmHNhbWUgc2VuZGVyLCB3aXRoIHRoZSBzYW1lIHBhcmFtZXRlcnMuAORGYWlscyBpZiB0aGVyZSBhcmUgaW5zdWZmaWNpZW50IGZ1bmRzIHRvIHBheSBmb3IgZGVwb3NpdC4ka2lsbF9wdXJlFAEcc3Bhd25lcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEocHJveHlfdHlwZS0EATBUOjpQcm94eVR5cGUAARRpbmRlePkDAQx1MTYAARhoZWlnaHRkAURCbG9ja051bWJlckZvcjxUPgABJGV4dF9pbmRleGQBDHUzMgAFQKBSZW1vdmVzIGEgcHJldmlvdXNseSBzcGF3bmVkIHB1cmUgcHJveHkuAEkBV0FSTklORzogKipBbGwgYWNjZXNzIHRvIHRoaXMgYWNjb3VudCB3aWxsIGJlIGxvc3QuKiogQW55IGZ1bmRzIGhlbGQgaW4gaXQgd2lsbCBiZTRpbmFjY2Vzc2libGUuAFkBUmVxdWlyZXMgYSBgU2lnbmVkYCBvcmlnaW4sIGFuZCB0aGUgc2VuZGVyIGFjY291bnQgbXVzdCBoYXZlIGJlZW4gY3JlYXRlZCBieSBhIGNhbGwgdG+wYGNyZWF0ZV9wdXJlYCB3aXRoIGNvcnJlc3BvbmRpbmcgcGFyYW1ldGVycy4AVQEtIGBzcGF3bmVyYDogVGhlIGFjY291bnQgdGhhdCBvcmlnaW5hbGx5IGNhbGxlZCBgY3JlYXRlX3B1cmVgIHRvIGNyZWF0ZSB0aGlzIGFjY291bnQuVQEtIGBpbmRleGA6IFRoZSBkaXNhbWJpZ3VhdGlvbiBpbmRleCBvcmlnaW5hbGx5IHBhc3NlZCB0byBgY3JlYXRlX3B1cmVgLiBQcm9iYWJseSBgMGAuCQEtIGBwcm94eV90eXBlYDogVGhlIHByb3h5IHR5cGUgb3JpZ2luYWxseSBwYXNzZWQgdG8gYGNyZWF0ZV9wdXJlYC5FAS0gYGhlaWdodGA6IFRoZSBoZWlnaHQgb2YgdGhlIGNoYWluIHdoZW4gdGhlIGNhbGwgdG8gYGNyZWF0ZV9wdXJlYCB3YXMgcHJvY2Vzc2VkLlEBLSBgZXh0X2luZGV4YDogVGhlIGV4dHJpbnNpYyBpbmRleCBpbiB3aGljaCB0aGUgY2FsbCB0byBgY3JlYXRlX3B1cmVgIHdhcyBwcm9jZXNzZWQuADUBRmFpbHMgd2l0aCBgTm9QZXJtaXNzaW9uYCBpbiBjYXNlIHRoZSBjYWxsZXIgaXMgbm90IGEgcHJldmlvdXNseSBjcmVhdGVkIHB1cmX4YWNjb3VudCB3aG9zZSBgY3JlYXRlX3B1cmVgIGNhbGwgaGFzIGNvcnJlc3BvbmRpbmcgcGFyYW1ldGVycy4gYW5ub3VuY2UIARByZWFsAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AASRjYWxsX2hhc2hAATRDYWxsSGFzaE9mPFQ+AAY8BQFQdWJsaXNoIHRoZSBoYXNoIG9mIGEgcHJveHktY2FsbCB0aGF0IHdpbGwgYmUgbWFkZSBpbiB0aGUgZnV0dXJlLgBdAVRoaXMgbXVzdCBiZSBjYWxsZWQgc29tZSBudW1iZXIgb2YgYmxvY2tzIGJlZm9yZSB0aGUgY29ycmVzcG9uZGluZyBgcHJveHlgIGlzIGF0dGVtcHRlZCUBaWYgdGhlIGRlbGF5IGFzc29jaWF0ZWQgd2l0aCB0aGUgcHJveHkgcmVsYXRpb25zaGlwIGlzIGdyZWF0ZXIgdGhhbiB6ZXJvLgARAU5vIG1vcmUgdGhhbiBgTWF4UGVuZGluZ2AgYW5ub3VuY2VtZW50cyBtYXkgYmUgbWFkZSBhdCBhbnkgb25lIHRpbWUuAAkBVGhpcyB3aWxsIHRha2UgYSBkZXBvc2l0IG9mIGBBbm5vdW5jZW1lbnREZXBvc2l0RmFjdG9yYCBhcyB3ZWxsIGFzGQFgQW5ub3VuY2VtZW50RGVwb3NpdEJhc2VgIGlmIHRoZXJlIGFyZSBubyBvdGhlciBwZW5kaW5nIGFubm91bmNlbWVudHMuACUBVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8gYW5kIGEgcHJveHkgb2YgYHJlYWxgLgAsUGFyYW1ldGVyczoNAS0gYHJlYWxgOiBUaGUgYWNjb3VudCB0aGF0IHRoZSBwcm94eSB3aWxsIG1ha2UgYSBjYWxsIG9uIGJlaGFsZiBvZi4VAS0gYGNhbGxfaGFzaGA6IFRoZSBoYXNoIG9mIHRoZSBjYWxsIHRvIGJlIG1hZGUgYnkgdGhlIGByZWFsYCBhY2NvdW50LkxyZW1vdmVfYW5ub3VuY2VtZW50CAEQcmVhbAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEkY2FsbF9oYXNoQAE0Q2FsbEhhc2hPZjxUPgAHKHBSZW1vdmUgYSBnaXZlbiBhbm5vdW5jZW1lbnQuAFkBTWF5IGJlIGNhbGxlZCBieSBhIHByb3h5IGFjY291bnQgdG8gcmVtb3ZlIGEgY2FsbCB0aGV5IHByZXZpb3VzbHkgYW5ub3VuY2VkIGFuZCByZXR1cm4wdGhlIGRlcG9zaXQuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4ALFBhcmFtZXRlcnM6DQEtIGByZWFsYDogVGhlIGFjY291bnQgdGhhdCB0aGUgcHJveHkgd2lsbCBtYWtlIGEgY2FsbCBvbiBiZWhhbGYgb2YuFQEtIGBjYWxsX2hhc2hgOiBUaGUgaGFzaCBvZiB0aGUgY2FsbCB0byBiZSBtYWRlIGJ5IHRoZSBgcmVhbGAgYWNjb3VudC5McmVqZWN0X2Fubm91bmNlbWVudAgBIGRlbGVnYXRlAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AASRjYWxsX2hhc2hAATRDYWxsSGFzaE9mPFQ+AAgosFJlbW92ZSB0aGUgZ2l2ZW4gYW5ub3VuY2VtZW50IG9mIGEgZGVsZWdhdGUuAGEBTWF5IGJlIGNhbGxlZCBieSBhIHRhcmdldCAocHJveGllZCkgYWNjb3VudCB0byByZW1vdmUgYSBjYWxsIHRoYXQgb25lIG9mIHRoZWlyIGRlbGVnYXRlcyUBKGBkZWxlZ2F0ZWApIGhhcyBhbm5vdW5jZWQgdGhleSB3YW50IHRvIGV4ZWN1dGUuIFRoZSBkZXBvc2l0IGlzIHJldHVybmVkLgDMVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uACxQYXJhbWV0ZXJzOvQtIGBkZWxlZ2F0ZWA6IFRoZSBhY2NvdW50IHRoYXQgcHJldmlvdXNseSBhbm5vdW5jZWQgdGhlIGNhbGwuvC0gYGNhbGxfaGFzaGA6IFRoZSBoYXNoIG9mIHRoZSBjYWxsIHRvIGJlIG1hZGUuPHByb3h5X2Fubm91bmNlZBABIGRlbGVnYXRlAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARByZWFsAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AAUBmb3JjZV9wcm94eV90eXBlKQQBUE9wdGlvbjxUOjpQcm94eVR5cGU+AAEQY2FsbCABfEJveDw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4ACSxNAURpc3BhdGNoIHRoZSBnaXZlbiBgY2FsbGAgZnJvbSBhbiBhY2NvdW50IHRoYXQgdGhlIHNlbmRlciBpcyBhdXRob3JpemVkIGZvciB0aHJvdWdoMGBhZGRfcHJveHlgLgCoUmVtb3ZlcyBhbnkgY29ycmVzcG9uZGluZyBhbm5vdW5jZW1lbnQocykuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4ALFBhcmFtZXRlcnM6DQEtIGByZWFsYDogVGhlIGFjY291bnQgdGhhdCB0aGUgcHJveHkgd2lsbCBtYWtlIGEgY2FsbCBvbiBiZWhhbGYgb2YuYQEtIGBmb3JjZV9wcm94eV90eXBlYDogU3BlY2lmeSB0aGUgZXhhY3QgcHJveHkgdHlwZSB0byBiZSB1c2VkIGFuZCBjaGVja2VkIGZvciB0aGlzIGNhbGwu0C0gYGNhbGxgOiBUaGUgY2FsbCB0byBiZSBtYWRlIGJ5IHRoZSBgcmVhbGAgYWNjb3VudC4wcG9rZV9kZXBvc2l0AAogSQFQb2tlIC8gQWRqdXN0IGRlcG9zaXRzIG1hZGUgZm9yIHByb3hpZXMgYW5kIGFubm91bmNlbWVudHMgYmFzZWQgb24gY3VycmVudCB2YWx1ZXMuDQFUaGlzIGNhbiBiZSB1c2VkIGJ5IGFjY291bnRzIHRvIHBvc3NpYmx5IGxvd2VyIHRoZWlyIGxvY2tlZCBhbW91bnQuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4AAQFUaGUgdHJhbnNhY3Rpb24gZmVlIGlzIHdhaXZlZCBpZiB0aGUgZGVwb3NpdCBhbW91bnQgaGFzIGNoYW5nZWQuAIxFbWl0cyBgRGVwb3NpdFBva2VkYCBpZiBzdWNjZXNzZnVsLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy4pBAQYT3B0aW9uBARUAS0EAQgQTm9uZQAAABBTb21lBAAtBAAAAQAALQQIYGFzc2V0X2h1Yl9rdXNhbWFfcnVudGltZSRQcm94eVR5cGUAATwMQW55AAAALE5vblRyYW5zZmVyAAEALENhbmNlbFByb3h5AAIAGEFzc2V0cwADAChBc3NldE93bmVyAAQAMEFzc2V0TWFuYWdlcgAFACBDb2xsYXRvcgAGAChHb3Zlcm5hbmNlAAcAHFN0YWtpbmcACAA8Tm9taW5hdGlvblBvb2xzAAkAHEF1Y3Rpb24ACgBAUGFyYVJlZ2lzdHJhdGlvbgALABxTb2NpZXR5AAwAMFNwb2tlc3BlcnNvbgANADxTdGFraW5nT3BlcmF0b3IADgAAMQQMTHBhbGxldF9yZW1vdGVfcHJveHkYcGFsbGV0EENhbGwIBFQABEkAAQwwcmVtb3RlX3Byb3h5EAEQcmVhbAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAFAZm9yY2VfcHJveHlfdHlwZSkEAVBPcHRpb248VDo6UHJveHlUeXBlPgABEGNhbGwgAbRCb3g8PFQgYXMgcGFsbGV0X3Byb3h5OjpDb25maWc+OjpSdW50aW1lQ2FsbD4AARRwcm9vZjUEAaxSZW1vdGVQcm94eVByb29mPFJlbW90ZUJsb2NrTnVtYmVyT2Y8VCwgST4+AAAoTQFEaXNwYXRjaCB0aGUgZ2l2ZW4gYGNhbGxgIGZyb20gYW4gYWNjb3VudCB0aGF0IHRoZSBzZW5kZXIgaXMgYXV0aG9yaXNlZCBvbiBhIHJlbW90ZRhjaGFpbi4AzFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLgAsUGFyYW1ldGVyczoNAS0gYHJlYWxgOiBUaGUgYWNjb3VudCB0aGF0IHRoZSBwcm94eSB3aWxsIG1ha2UgYSBjYWxsIG9uIGJlaGFsZiBvZi5hAS0gYGZvcmNlX3Byb3h5X3R5cGVgOiBTcGVjaWZ5IHRoZSBleGFjdCBwcm94eSB0eXBlIHRvIGJlIHVzZWQgYW5kIGNoZWNrZWQgZm9yIHRoaXMgY2FsbC7QLSBgY2FsbGA6IFRoZSBjYWxsIHRvIGJlIG1hZGUgYnkgdGhlIGByZWFsYCBhY2NvdW50LjEBLSBgcHJvb2ZgOiBUaGUgcHJvb2YgZnJvbSB0aGUgcmVtb3RlIGNoYWluIGFib3V0IHRoZSBleGlzdGVuY2Ugb2YgdGhlIHByb3h5LmxyZWdpc3Rlcl9yZW1vdGVfcHJveHlfcHJvb2YEARRwcm9vZjUEAaxSZW1vdGVQcm94eVByb29mPFJlbW90ZUJsb2NrTnVtYmVyT2Y8VCwgST4+AAF4IQFSZWdpc3RlciBhIGdpdmVuIHJlbW90ZSBwcm94eSBwcm9vZiBpbiB0aGUgY3VycmVudCBbYGRpc3BhdGNoX2NvbnRleHRgXS4ATQFUaGUgcmVnaXN0ZXJlZCByZW1vdGUgcHJvb2YgY2FuIHRoZW4gYmUgdXNlZCBsYXRlciBpbiB0aGUgc2FtZSBjb250ZXh0IHRvIGV4ZWN1dGUgYU0BcmVtb3RlIHByb3h5IGNhbGwuIFRoaXMgaXMgZm9yIGV4YW1wbGUgdXNlZnVsIHdoZW4gaGF2aW5nIGEgbXVsdGlzaWcgb3BlcmF0aW9uLiBUaGVhAW11bHRpc2lnIGNhbGwgY2FuIHVzZSBbYFNlbGY6OnJlbW90ZV9wcm94eV93aXRoX3JlZ2lzdGVyZWRfcHJvb2ZgXSB0byBnZXQgYW4gYXBwcm92YWwgYnlhAXRoZSBtZW1iZXJzIG9mIHRoZSBtdWx0aXNpZy4gVGhlIGZpbmFsIGV4ZWN1dGlvbiBvZiB0aGUgbXVsdGlzaWcgY2FsbCBzaG91bGQgYmUgYXQgbGVhc3QhAWEgYmF0Y2ggb2YgYHJlZ2lzdGVyX3JlbW90ZV9wcm94eV9wcm9vZmAgYW5kIHRoZSBtdWx0aXNpZyBjYWxsIHRoYXQgdXNlc2EBYHJlbW90ZV9wcm94eV93aXRoX3JlZ2lzdGVyZWRfcHJvb2ZgLiBUaGlzIHdheSB0aGUgZmluYWwgYXBwcm92ZXIgY2FuIHVzZSBhIHJlY2VudCBwcm9vZk0BdG8gcHJvdmUgdGhlIGV4aXN0ZW5jZSBvZiB0aGUgcmVtb3RlIHByb3h5LiBPdGhlcndpc2UgaXQgd291bGQgcmVxdWlyZSB0aGUgbXVsdGlzaWdBAW1lbWJlcnMgdG8gYXBwcm92ZSB0aGUgY2FsbCBpbiBbYENvbmZpZzo6TWF4U3RvcmFnZVJvb3RzVG9LZWVwYF0gYW1vdW50IG9mIHRpbWUuAFkBSXQgaXMgc3VwcG9ydGVkIHRvIHJlZ2lzdGVyIG11bHRpcGxlIHByb29mcywgYnV0IHRoZSBwcm9vZnMgbmVlZCB0byBiZSBjb25zdW1lZCBpbiB0aGU9AXJldmVyc2Ugb3JkZXIgYXMgdGhleSB3ZXJlIHJlZ2lzdGVyZWQuIEJhc2ljYWxseSB0aGlzIG1lYW5zIGxhc3QgaW4sIGZpcnN0IG91dC4AVQFUaGUgW2BkaXNwYXRjaF9jb250ZXh0YF0gc3BhbnMgdGhlIGVudGlyZSBsaWZldGltZSBvZiBhIHRyYW5zYWN0aW9uIGFuZCBldmVyeSBjYWxsIGluwHRoZSB0cmFuc2FjdGlvbiBnZXRzIGFjY2VzcyB0byB0aGUgc2FtZSBjb250ZXh0LgAkIyBFeGFtcGxlACRgYGBpZ25vcmUcYmF0Y2goW4AgICAgcmVnaXN0ZXJfcmVtb3RlX3Byb3h5X3Byb29mLPQgICAgYXNfbXVsdGlzaWcocmVtb3RlX3Byb3h5X3dpdGhfcmVnaXN0ZXJlZF9wcm9vZih0cmFuc2ZlcikpCF0pDGBgYABZAUFzIGBwcm9vZnNgIGNhbiBub3QgYmUgdmVyaWZpZWQgaW5kZWZpbml0ZWx5ICh0aGUgdGltZSB0aGUgc3RvcmFnZSByb290cyBhcmUgc3RvcmVkIGlzVQFsaW1pdGVkKSB0aGlzIGZ1bmN0aW9uIHByb3ZpZGVzIHRoZSBwb3NzaWJpbGl0eSB0byBwcm92aWRlIGEgImZyZXNoIHByb29mIiBhdCB0aW1lIG9mTQFkaXNwYXRjaC4gQXMgaW4gdGhlIGV4YW1wbGUgYWJvdmUsIHRoaXMgY291bGQgYmUgdXNlZnVsIGZvciBtdWx0aXNpZyBvcGVyYXRpb24gdGhhdFUBZGVwZW5kIG9uIG11bHRpcGxlIG1lbWJlcnMgdG8gYXBwcm92ZSBhIGNlcnRhaW4gYWN0aW9uLCB3aGljaCBjYW4gdGFrZSBtdWx0aXBsZSBkYXlzLohyZW1vdGVfcHJveHlfd2l0aF9yZWdpc3RlcmVkX3Byb29mDAEQcmVhbAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAFAZm9yY2VfcHJveHlfdHlwZSkEAVBPcHRpb248VDo6UHJveHlUeXBlPgABEGNhbGwgAbRCb3g8PFQgYXMgcGFsbGV0X3Byb3h5OjpDb25maWc+OjpSdW50aW1lQ2FsbD4AAixNAURpc3BhdGNoIHRoZSBnaXZlbiBgY2FsbGAgZnJvbSBhbiBhY2NvdW50IHRoYXQgdGhlIHNlbmRlciBpcyBhdXRob3Jpc2VkIG9uIGEgcmVtb3RlGGNoYWluLgAVAVRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLiBUaGUgZGlmZmVyZW5jZSB0byEBW2BTZWxmOjpyZW1vdGVfcHJveHlgXSBpcyB0aGF0IHRoZSBwcm9vZiBuZWVzIHRvIHJlZ2lzdGVyZWQgYmVmb3JlIHVzaW5nBQFbYFNlbGY6OnJlZ2lzdGVyX3JlbW90ZV9wcm94eV9wcm9vZmBdIChzZWUgZm9yIG1vcmUgaW5mb3JtYXRpb24pLgAsUGFyYW1ldGVyczoNAS0gYHJlYWxgOiBUaGUgYWNjb3VudCB0aGF0IHRoZSBwcm94eSB3aWxsIG1ha2UgYSBjYWxsIG9uIGJlaGFsZiBvZi5hAS0gYGZvcmNlX3Byb3h5X3R5cGVgOiBTcGVjaWZ5IHRoZSBleGFjdCBwcm94eSB0eXBlIHRvIGJlIHVzZWQgYW5kIGNoZWNrZWQgZm9yIHRoaXMgY2FsbC7QLSBgY2FsbGA6IFRoZSBjYWxsIHRvIGJlIG1hZGUgYnkgdGhlIGByZWFsYCBhY2NvdW50LgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy41BAxMcGFsbGV0X3JlbW90ZV9wcm94eRhwYWxsZXRAUmVtb3RlUHJveHlQcm9vZgREUmVtb3RlQmxvY2tOdW1iZXIBOAEEKFJlbGF5Q2hhaW4IARRwcm9vZjQBMFZlYzxWZWM8dTg+PgABFGJsb2NrOAFEUmVtb3RlQmxvY2tOdW1iZXIAAAAAOQQMOHBhbGxldF9pbmRpY2VzGHBhbGxldBBDYWxsBARUAAEYFGNsYWltBAEUaW5kZXg4ATxUOjpBY2NvdW50SW5kZXgAADCYQXNzaWduIGFuIHByZXZpb3VzbHkgdW5hc3NpZ25lZCBpbmRleC4A3FBheW1lbnQ6IGBEZXBvc2l0YCBpcyByZXNlcnZlZCBmcm9tIHRoZSBzZW5kZXIgYWNjb3VudC4AzFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLgDwLSBgaW5kZXhgOiB0aGUgaW5kZXggdG8gYmUgY2xhaW1lZC4gVGhpcyBtdXN0IG5vdCBiZSBpbiB1c2UuAJBFbWl0cyBgSW5kZXhBc3NpZ25lZGAgaWYgc3VjY2Vzc2Z1bC4ANCMjIENvbXBsZXhpdHkkLSBgTygxKWAuIHRyYW5zZmVyCAEMbmV3AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARRpbmRleDgBPFQ6OkFjY291bnRJbmRleAABMF0BQXNzaWduIGFuIGluZGV4IGFscmVhZHkgb3duZWQgYnkgdGhlIHNlbmRlciB0byBhbm90aGVyIGFjY291bnQuIFRoZSBiYWxhbmNlIHJlc2VydmF0aW9uuGlzIGVmZmVjdGl2ZWx5IHRyYW5zZmVycmVkIHRvIHRoZSBuZXcgYWNjb3VudC4AzFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLgAlAS0gYGluZGV4YDogdGhlIGluZGV4IHRvIGJlIHJlLWFzc2lnbmVkLiBUaGlzIG11c3QgYmUgb3duZWQgYnkgdGhlIHNlbmRlci5dAS0gYG5ld2A6IHRoZSBuZXcgb3duZXIgb2YgdGhlIGluZGV4LiBUaGlzIGZ1bmN0aW9uIGlzIGEgbm8tb3AgaWYgaXQgaXMgZXF1YWwgdG8gc2VuZGVyLgCQRW1pdHMgYEluZGV4QXNzaWduZWRgIGlmIHN1Y2Nlc3NmdWwuADQjIyBDb21wbGV4aXR5JC0gYE8oMSlgLhBmcmVlBAEUaW5kZXg4ATxUOjpBY2NvdW50SW5kZXgAAjCURnJlZSB1cCBhbiBpbmRleCBvd25lZCBieSB0aGUgc2VuZGVyLgBdAVBheW1lbnQ6IEFueSBwcmV2aW91cyBkZXBvc2l0IHBsYWNlZCBmb3IgdGhlIGluZGV4IGlzIHVucmVzZXJ2ZWQgaW4gdGhlIHNlbmRlciBhY2NvdW50LgBVAVRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfIGFuZCB0aGUgc2VuZGVyIG11c3Qgb3duIHRoZSBpbmRleC4ADQEtIGBpbmRleGA6IHRoZSBpbmRleCB0byBiZSBmcmVlZC4gVGhpcyBtdXN0IGJlIG93bmVkIGJ5IHRoZSBzZW5kZXIuAIRFbWl0cyBgSW5kZXhGcmVlZGAgaWYgc3VjY2Vzc2Z1bC4ANCMjIENvbXBsZXhpdHkkLSBgTygxKWAuOGZvcmNlX3RyYW5zZmVyDAEMbmV3AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARRpbmRleDgBPFQ6OkFjY291bnRJbmRleAABGGZyZWV6ZZkBARBib29sAAM0VQFGb3JjZSBhbiBpbmRleCB0byBhbiBhY2NvdW50LiBUaGlzIGRvZXNuJ3QgcmVxdWlyZSBhIGRlcG9zaXQuIElmIHRoZSBpbmRleCBpcyBhbHJlYWR56GhlbGQsIHRoZW4gYW55IGRlcG9zaXQgaXMgcmVpbWJ1cnNlZCB0byBpdHMgY3VycmVudCBvd25lci4AxFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9Sb290Xy4ApC0gYGluZGV4YDogdGhlIGluZGV4IHRvIGJlIChyZS0pYXNzaWduZWQuXQEtIGBuZXdgOiB0aGUgbmV3IG93bmVyIG9mIHRoZSBpbmRleC4gVGhpcyBmdW5jdGlvbiBpcyBhIG5vLW9wIGlmIGl0IGlzIGVxdWFsIHRvIHNlbmRlci5BAS0gYGZyZWV6ZWA6IGlmIHNldCB0byBgdHJ1ZWAsIHdpbGwgZnJlZXplIHRoZSBpbmRleCBzbyBpdCBjYW5ub3QgYmUgdHJhbnNmZXJyZWQuAJBFbWl0cyBgSW5kZXhBc3NpZ25lZGAgaWYgc3VjY2Vzc2Z1bC4ANCMjIENvbXBsZXhpdHkkLSBgTygxKWAuGGZyZWV6ZQQBFGluZGV4OAE8VDo6QWNjb3VudEluZGV4AAQwQQFGcmVlemUgYW4gaW5kZXggc28gaXQgd2lsbCBhbHdheXMgcG9pbnQgdG8gdGhlIHNlbmRlciBhY2NvdW50LiBUaGlzIGNvbnN1bWVzIHRoZSBkZXBvc2l0LgBZAVRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfIGFuZCB0aGUgc2lnbmluZyBhY2NvdW50IG11c3QgaGF2ZSBhbG5vbi1mcm96ZW4gYWNjb3VudCBgaW5kZXhgLgCsLSBgaW5kZXhgOiB0aGUgaW5kZXggdG8gYmUgZnJvemVuIGluIHBsYWNlLgCIRW1pdHMgYEluZGV4RnJvemVuYCBpZiBzdWNjZXNzZnVsLgA0IyMgQ29tcGxleGl0eSQtIGBPKDEpYC4wcG9rZV9kZXBvc2l0BAEUaW5kZXg4ATxUOjpBY2NvdW50SW5kZXgABSicUG9rZSB0aGUgZGVwb3NpdCByZXNlcnZlZCBmb3IgYW4gaW5kZXguAFkBVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8gYW5kIHRoZSBzaWduaW5nIGFjY291bnQgbXVzdCBoYXZlIGFsbm9uLWZyb3plbiBhY2NvdW50IGBpbmRleGAuAFkBVGhlIHRyYW5zYWN0aW9uIGZlZXMgaXMgd2FpdmVkIGlmIHRoZSBkZXBvc2l0IGlzIGNoYW5nZWQgYWZ0ZXIgcG9raW5nL3JlY29uc2lkZXJhdGlvbi4A/C0gYGluZGV4YDogdGhlIGluZGV4IHdob3NlIGRlcG9zaXQgaXMgdG8gYmUgcG9rZWQvcmVjb25zaWRlcmVkLgCMRW1pdHMgYERlcG9zaXRQb2tlZGAgaWYgc3VjY2Vzc2Z1bC4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuPQQMNHBhbGxldF9hc3NldHMYcGFsbGV0EENhbGwIBFQABEkAAYgYY3JlYXRlDAEIaWRkAUxUOjpBc3NldElkUGFyYW1ldGVyAAEUYWRtaW4AAVBBY2NvdW50SWRMb29rdXBPZjxUPgABLG1pbl9iYWxhbmNllQEBKFQ6OkJhbGFuY2UAAEzoSXNzdWUgYSBuZXcgY2xhc3Mgb2YgZnVuZ2libGUgYXNzZXRzIGZyb20gYSBwdWJsaWMgb3JpZ2luLgAlAVRoaXMgbmV3IGFzc2V0IGNsYXNzIGhhcyBubyBhc3NldHMgaW5pdGlhbGx5IGFuZCBpdHMgb3duZXIgaXMgdGhlIG9yaWdpbi4AYQFUaGUgb3JpZ2luIG11c3QgY29uZm9ybSB0byB0aGUgY29uZmlndXJlZCBgQ3JlYXRlT3JpZ2luYCBhbmQgaGF2ZSBzdWZmaWNpZW50IGZ1bmRzIGZyZWUuALxGdW5kcyBvZiBzZW5kZXIgYXJlIHJlc2VydmVkIGJ5IGBBc3NldERlcG9zaXRgLgAsUGFyYW1ldGVyczpZAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIG5ldyBhc3NldC4gVGhpcyBtdXN0IG5vdCBiZSBjdXJyZW50bHkgaW4gdXNlIHRvIGlkZW50aWZ5MQFhbiBleGlzdGluZyBhc3NldC4gSWYgW2BOZXh0QXNzZXRJZGBdIGlzIHNldCwgdGhlbiB0aGlzIG11c3QgYmUgZXF1YWwgdG8gaXQuWQEtIGBhZG1pbmA6IFRoZSBhZG1pbiBvZiB0aGlzIGNsYXNzIG9mIGFzc2V0cy4gVGhlIGFkbWluIGlzIHRoZSBpbml0aWFsIGFkZHJlc3Mgb2YgZWFjaJxtZW1iZXIgb2YgdGhlIGFzc2V0IGNsYXNzJ3MgYWRtaW4gdGVhbS5NAS0gYG1pbl9iYWxhbmNlYDogVGhlIG1pbmltdW0gYmFsYW5jZSBvZiB0aGlzIG5ldyBhc3NldCB0aGF0IGFueSBzaW5nbGUgYWNjb3VudCBtdXN0PQFoYXZlLiBJZiBhbiBhY2NvdW50J3MgYmFsYW5jZSBpcyByZWR1Y2VkIGJlbG93IHRoaXMsIHRoZW4gaXQgY29sbGFwc2VzIHRvIHplcm8uAJhFbWl0cyBgQ3JlYXRlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLgA4V2VpZ2h0OiBgTygxKWAwZm9yY2VfY3JlYXRlEAEIaWRkAUxUOjpBc3NldElkUGFyYW1ldGVyAAEUb3duZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABNGlzX3N1ZmZpY2llbnSZAQEQYm9vbAABLG1pbl9iYWxhbmNlkQEBKFQ6OkJhbGFuY2UAAUz4SXNzdWUgYSBuZXcgY2xhc3Mgb2YgZnVuZ2libGUgYXNzZXRzIGZyb20gYSBwcml2aWxlZ2VkIG9yaWdpbi4AtFRoaXMgbmV3IGFzc2V0IGNsYXNzIGhhcyBubyBhc3NldHMgaW5pdGlhbGx5LgCkVGhlIG9yaWdpbiBtdXN0IGNvbmZvcm0gdG8gYEZvcmNlT3JpZ2luYC4AnFVubGlrZSBgY3JlYXRlYCwgbm8gZnVuZHMgYXJlIHJlc2VydmVkLgBZAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIG5ldyBhc3NldC4gVGhpcyBtdXN0IG5vdCBiZSBjdXJyZW50bHkgaW4gdXNlIHRvIGlkZW50aWZ5MQFhbiBleGlzdGluZyBhc3NldC4gSWYgW2BOZXh0QXNzZXRJZGBdIGlzIHNldCwgdGhlbiB0aGlzIG11c3QgYmUgZXF1YWwgdG8gaXQuWQEtIGBvd25lcmA6IFRoZSBvd25lciBvZiB0aGlzIGNsYXNzIG9mIGFzc2V0cy4gVGhlIG93bmVyIGhhcyBmdWxsIHN1cGVydXNlciBwZXJtaXNzaW9ucyUBb3ZlciB0aGlzIGFzc2V0LCBidXQgbWF5IGxhdGVyIGNoYW5nZSBhbmQgY29uZmlndXJlIHRoZSBwZXJtaXNzaW9ucyB1c2luZ5BgdHJhbnNmZXJfb3duZXJzaGlwYCBhbmQgYHNldF90ZWFtYC5NAS0gYG1pbl9iYWxhbmNlYDogVGhlIG1pbmltdW0gYmFsYW5jZSBvZiB0aGlzIG5ldyBhc3NldCB0aGF0IGFueSBzaW5nbGUgYWNjb3VudCBtdXN0PQFoYXZlLiBJZiBhbiBhY2NvdW50J3MgYmFsYW5jZSBpcyByZWR1Y2VkIGJlbG93IHRoaXMsIHRoZW4gaXQgY29sbGFwc2VzIHRvIHplcm8uAKxFbWl0cyBgRm9yY2VDcmVhdGVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuADhXZWlnaHQ6IGBPKDEpYDRzdGFydF9kZXN0cm95BAEIaWRkAUxUOjpBc3NldElkUGFyYW1ldGVyAAIw3FN0YXJ0IHRoZSBwcm9jZXNzIG9mIGRlc3Ryb3lpbmcgYSBmdW5naWJsZSBhc3NldCBjbGFzcy4AWQFgc3RhcnRfZGVzdHJveWAgaXMgdGhlIGZpcnN0IGluIGEgc2VyaWVzIG9mIGV4dHJpbnNpY3MgdGhhdCBzaG91bGQgYmUgY2FsbGVkLCB0byBhbGxvd3hkZXN0cnVjdGlvbiBvZiBhbiBhc3NldCBjbGFzcy4AUQFUaGUgb3JpZ2luIG11c3QgY29uZm9ybSB0byBgRm9yY2VPcmlnaW5gIG9yIG11c3QgYmUgYFNpZ25lZGAgYnkgdGhlIGFzc2V0J3MgYG93bmVyYC4ATQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBiZSBkZXN0cm95ZWQuIFRoaXMgbXVzdCBpZGVudGlmeSBhbiBleGlzdGluZyAgIGFzc2V0LgBJAUl0IHdpbGwgZmFpbCB3aXRoIGVpdGhlciBbYEVycm9yOjpDb250YWluc0hvbGRzYF0gb3IgW2BFcnJvcjo6Q29udGFpbnNGcmVlemVzYF0gaWa4YW4gYWNjb3VudCBjb250YWlucyBob2xkcyBvciBmcmVlemVzIGluIHBsYWNlLkBkZXN0cm95X2FjY291bnRzBAEIaWRkAUxUOjpBc3NldElkUGFyYW1ldGVyAAMwzERlc3Ryb3kgYWxsIGFjY291bnRzIGFzc29jaWF0ZWQgd2l0aCBhIGdpdmVuIGFzc2V0LgBdAWBkZXN0cm95X2FjY291bnRzYCBzaG91bGQgb25seSBiZSBjYWxsZWQgYWZ0ZXIgYHN0YXJ0X2Rlc3Ryb3lgIGhhcyBiZWVuIGNhbGxlZCwgYW5kIHRoZYRhc3NldCBpcyBpbiBhIGBEZXN0cm95aW5nYCBzdGF0ZS4AXQFEdWUgdG8gd2VpZ2h0IHJlc3RyaWN0aW9ucywgdGhpcyBmdW5jdGlvbiBtYXkgbmVlZCB0byBiZSBjYWxsZWQgbXVsdGlwbGUgdGltZXMgdG8gZnVsbHkxAWRlc3Ryb3kgYWxsIGFjY291bnRzLiBJdCB3aWxsIGRlc3Ryb3kgYFJlbW92ZUl0ZW1zTGltaXRgIGFjY291bnRzIGF0IGEgdGltZS4ATQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBiZSBkZXN0cm95ZWQuIFRoaXMgbXVzdCBpZGVudGlmeSBhbiBleGlzdGluZyAgIGFzc2V0LgDURWFjaCBjYWxsIGVtaXRzIHRoZSBgRXZlbnQ6OkRlc3Ryb3llZEFjY291bnRzYCBldmVudC5EZGVzdHJveV9hcHByb3ZhbHMEAQhpZGQBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIABDBhAURlc3Ryb3kgYWxsIGFwcHJvdmFscyBhc3NvY2lhdGVkIHdpdGggYSBnaXZlbiBhc3NldCB1cCB0byB0aGUgbWF4IChUOjpSZW1vdmVJdGVtc0xpbWl0KS4AYQFgZGVzdHJveV9hcHByb3ZhbHNgIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBhZnRlciBgc3RhcnRfZGVzdHJveWAgaGFzIGJlZW4gY2FsbGVkLCBhbmQgdGhlhGFzc2V0IGlzIGluIGEgYERlc3Ryb3lpbmdgIHN0YXRlLgBdAUR1ZSB0byB3ZWlnaHQgcmVzdHJpY3Rpb25zLCB0aGlzIGZ1bmN0aW9uIG1heSBuZWVkIHRvIGJlIGNhbGxlZCBtdWx0aXBsZSB0aW1lcyB0byBmdWxseTkBZGVzdHJveSBhbGwgYXBwcm92YWxzLiBJdCB3aWxsIGRlc3Ryb3kgYFJlbW92ZUl0ZW1zTGltaXRgIGFwcHJvdmFscyBhdCBhIHRpbWUuAE0BLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgZGVzdHJveWVkLiBUaGlzIG11c3QgaWRlbnRpZnkgYW4gZXhpc3RpbmcgICBhc3NldC4A2EVhY2ggY2FsbCBlbWl0cyB0aGUgYEV2ZW50OjpEZXN0cm95ZWRBcHByb3ZhbHNgIGV2ZW50LjhmaW5pc2hfZGVzdHJveQQBCGlkZAFMVDo6QXNzZXRJZFBhcmFtZXRlcgAFKMRDb21wbGV0ZSBkZXN0cm95aW5nIGFzc2V0IGFuZCB1bnJlc2VydmUgY3VycmVuY3kuAFUBYGZpbmlzaF9kZXN0cm95YCBzaG91bGQgb25seSBiZSBjYWxsZWQgYWZ0ZXIgYHN0YXJ0X2Rlc3Ryb3lgIGhhcyBiZWVuIGNhbGxlZCwgYW5kIHRoZVkBYXNzZXQgaXMgaW4gYSBgRGVzdHJveWluZ2Agc3RhdGUuIEFsbCBhY2NvdW50cyBvciBhcHByb3ZhbHMgc2hvdWxkIGJlIGRlc3Ryb3llZCBiZWZvcmUUaGFuZC4ATQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBiZSBkZXN0cm95ZWQuIFRoaXMgbXVzdCBpZGVudGlmeSBhbiBleGlzdGluZyAgIGFzc2V0LgDgRWFjaCBzdWNjZXNzZnVsIGNhbGwgZW1pdHMgdGhlIGBFdmVudDo6RGVzdHJveWVkYCBldmVudC4QbWludAwBCGlkZAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABLGJlbmVmaWNpYXJ5AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARhhbW91bnSRAQEoVDo6QmFsYW5jZQAGMIhNaW50IGFzc2V0cyBvZiBhIHBhcnRpY3VsYXIgY2xhc3MuADkBVGhlIG9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBtdXN0IGJlIHRoZSBJc3N1ZXIgb2YgdGhlIGFzc2V0IGBpZGAuAPwtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBoYXZlIHNvbWUgYW1vdW50IG1pbnRlZC4NAS0gYGJlbmVmaWNpYXJ5YDogVGhlIGFjY291bnQgdG8gYmUgY3JlZGl0ZWQgd2l0aCB0aGUgbWludGVkIGFzc2V0cy7ELSBgYW1vdW50YDogVGhlIGFtb3VudCBvZiB0aGUgYXNzZXQgdG8gYmUgbWludGVkLgCURW1pdHMgYElzc3VlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLgA4V2VpZ2h0OiBgTygxKWBVAU1vZGVzOiBQcmUtZXhpc3RpbmcgYmFsYW5jZSBvZiBgYmVuZWZpY2lhcnlgOyBBY2NvdW50IHByZS1leGlzdGVuY2Ugb2YgYGJlbmVmaWNpYXJ5YC4QYnVybgwBCGlkZAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABDHdobwABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYYW1vdW50kQEBKFQ6OkJhbGFuY2UABzxFAVJlZHVjZSB0aGUgYmFsYW5jZSBvZiBgd2hvYCBieSBhcyBtdWNoIGFzIHBvc3NpYmxlIHVwIHRvIGBhbW91bnRgIGFzc2V0cyBvZiBgaWRgLgA1AU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIE1hbmFnZXIgb2YgdGhlIGFzc2V0IGBpZGAuANBCYWlscyB3aXRoIGBOb0FjY291bnRgIGlmIHRoZSBgd2hvYCBpcyBhbHJlYWR5IGRlYWQuAPwtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBoYXZlIHNvbWUgYW1vdW50IGJ1cm5lZC6gLSBgd2hvYDogVGhlIGFjY291bnQgdG8gYmUgZGViaXRlZCBmcm9tLikBLSBgYW1vdW50YDogVGhlIG1heGltdW0gYW1vdW50IGJ5IHdoaWNoIGB3aG9gJ3MgYmFsYW5jZSBzaG91bGQgYmUgcmVkdWNlZC4AUQFFbWl0cyBgQnVybmVkYCB3aXRoIHRoZSBhY3R1YWwgYW1vdW50IGJ1cm5lZC4gSWYgdGhpcyB0YWtlcyB0aGUgYmFsYW5jZSB0byBiZWxvdyB0aGU5AW1pbmltdW0gZm9yIHRoZSBhc3NldCwgdGhlbiB0aGUgYW1vdW50IGJ1cm5lZCBpcyBpbmNyZWFzZWQgdG8gdGFrZSBpdCB0byB6ZXJvLgA4V2VpZ2h0OiBgTygxKWAJAU1vZGVzOiBQb3N0LWV4aXN0ZW5jZSBvZiBgd2hvYDsgUHJlICYgcG9zdCBab21iaWUtc3RhdHVzIG9mIGB3aG9gLiB0cmFuc2ZlcgwBCGlkZAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABGHRhcmdldAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYYW1vdW50kQEBKFQ6OkJhbGFuY2UACEjQTW92ZSBzb21lIGFzc2V0cyBmcm9tIHRoZSBzZW5kZXIgYWNjb3VudCB0byBhbm90aGVyLgBYT3JpZ2luIG11c3QgYmUgU2lnbmVkLgARAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGhhdmUgc29tZSBhbW91bnQgdHJhbnNmZXJyZWQunC0gYHRhcmdldGA6IFRoZSBhY2NvdW50IHRvIGJlIGNyZWRpdGVkLlEBLSBgYW1vdW50YDogVGhlIGFtb3VudCBieSB3aGljaCB0aGUgc2VuZGVyJ3MgYmFsYW5jZSBvZiBhc3NldHMgc2hvdWxkIGJlIHJlZHVjZWQgYW5kYQFgdGFyZ2V0YCdzIGJhbGFuY2UgaW5jcmVhc2VkLiBUaGUgYW1vdW50IGFjdHVhbGx5IHRyYW5zZmVycmVkIG1heSBiZSBzbGlnaHRseSBncmVhdGVyIGluXQF0aGUgY2FzZSB0aGF0IHRoZSB0cmFuc2ZlciB3b3VsZCBvdGhlcndpc2UgdGFrZSB0aGUgc2VuZGVyIGJhbGFuY2UgYWJvdmUgemVybyBidXQgYmVsb3e8dGhlIG1pbmltdW0gYmFsYW5jZS4gTXVzdCBiZSBncmVhdGVyIHRoYW4gemVyby4AYQFFbWl0cyBgVHJhbnNmZXJyZWRgIHdpdGggdGhlIGFjdHVhbCBhbW91bnQgdHJhbnNmZXJyZWQuIElmIHRoaXMgdGFrZXMgdGhlIHNvdXJjZSBiYWxhbmNlXQF0byBiZWxvdyB0aGUgbWluaW11bSBmb3IgdGhlIGFzc2V0LCB0aGVuIHRoZSBhbW91bnQgdHJhbnNmZXJyZWQgaXMgaW5jcmVhc2VkIHRvIHRha2UgaXQgdG8gemVyby4AOFdlaWdodDogYE8oMSlgUQFNb2RlczogUHJlLWV4aXN0ZW5jZSBvZiBgdGFyZ2V0YDsgUG9zdC1leGlzdGVuY2Ugb2Ygc2VuZGVyOyBBY2NvdW50IHByZS1leGlzdGVuY2Ugb2YkYHRhcmdldGAuTHRyYW5zZmVyX2tlZXBfYWxpdmUMAQhpZGQBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARh0YXJnZXQAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGFtb3VudJEBAShUOjpCYWxhbmNlAAlIWQFNb3ZlIHNvbWUgYXNzZXRzIGZyb20gdGhlIHNlbmRlciBhY2NvdW50IHRvIGFub3RoZXIsIGtlZXBpbmcgdGhlIHNlbmRlciBhY2NvdW50IGFsaXZlLgBYT3JpZ2luIG11c3QgYmUgU2lnbmVkLgARAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGhhdmUgc29tZSBhbW91bnQgdHJhbnNmZXJyZWQunC0gYHRhcmdldGA6IFRoZSBhY2NvdW50IHRvIGJlIGNyZWRpdGVkLlEBLSBgYW1vdW50YDogVGhlIGFtb3VudCBieSB3aGljaCB0aGUgc2VuZGVyJ3MgYmFsYW5jZSBvZiBhc3NldHMgc2hvdWxkIGJlIHJlZHVjZWQgYW5kYQFgdGFyZ2V0YCdzIGJhbGFuY2UgaW5jcmVhc2VkLiBUaGUgYW1vdW50IGFjdHVhbGx5IHRyYW5zZmVycmVkIG1heSBiZSBzbGlnaHRseSBncmVhdGVyIGluXQF0aGUgY2FzZSB0aGF0IHRoZSB0cmFuc2ZlciB3b3VsZCBvdGhlcndpc2UgdGFrZSB0aGUgc2VuZGVyIGJhbGFuY2UgYWJvdmUgemVybyBidXQgYmVsb3e8dGhlIG1pbmltdW0gYmFsYW5jZS4gTXVzdCBiZSBncmVhdGVyIHRoYW4gemVyby4AYQFFbWl0cyBgVHJhbnNmZXJyZWRgIHdpdGggdGhlIGFjdHVhbCBhbW91bnQgdHJhbnNmZXJyZWQuIElmIHRoaXMgdGFrZXMgdGhlIHNvdXJjZSBiYWxhbmNlXQF0byBiZWxvdyB0aGUgbWluaW11bSBmb3IgdGhlIGFzc2V0LCB0aGVuIHRoZSBhbW91bnQgdHJhbnNmZXJyZWQgaXMgaW5jcmVhc2VkIHRvIHRha2UgaXQgdG8gemVyby4AOFdlaWdodDogYE8oMSlgUQFNb2RlczogUHJlLWV4aXN0ZW5jZSBvZiBgdGFyZ2V0YDsgUG9zdC1leGlzdGVuY2Ugb2Ygc2VuZGVyOyBBY2NvdW50IHByZS1leGlzdGVuY2Ugb2YkYHRhcmdldGAuOGZvcmNlX3RyYW5zZmVyEAEIaWRkAUxUOjpBc3NldElkUGFyYW1ldGVyAAEYc291cmNlAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARBkZXN0AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARhhbW91bnSRAQEoVDo6QmFsYW5jZQAKTLRNb3ZlIHNvbWUgYXNzZXRzIGZyb20gb25lIGFjY291bnQgdG8gYW5vdGhlci4ALQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBBZG1pbiBvZiB0aGUgYXNzZXQgYGlkYC4AEQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBoYXZlIHNvbWUgYW1vdW50IHRyYW5zZmVycmVkLpgtIGBzb3VyY2VgOiBUaGUgYWNjb3VudCB0byBiZSBkZWJpdGVkLpQtIGBkZXN0YDogVGhlIGFjY291bnQgdG8gYmUgY3JlZGl0ZWQuWQEtIGBhbW91bnRgOiBUaGUgYW1vdW50IGJ5IHdoaWNoIHRoZSBgc291cmNlYCdzIGJhbGFuY2Ugb2YgYXNzZXRzIHNob3VsZCBiZSByZWR1Y2VkIGFuZFkBYGRlc3RgJ3MgYmFsYW5jZSBpbmNyZWFzZWQuIFRoZSBhbW91bnQgYWN0dWFsbHkgdHJhbnNmZXJyZWQgbWF5IGJlIHNsaWdodGx5IGdyZWF0ZXIgaW5NAXRoZSBjYXNlIHRoYXQgdGhlIHRyYW5zZmVyIHdvdWxkIG90aGVyd2lzZSB0YWtlIHRoZSBgc291cmNlYCBiYWxhbmNlIGFib3ZlIHplcm8gYnV01GJlbG93IHRoZSBtaW5pbXVtIGJhbGFuY2UuIE11c3QgYmUgZ3JlYXRlciB0aGFuIHplcm8uAGEBRW1pdHMgYFRyYW5zZmVycmVkYCB3aXRoIHRoZSBhY3R1YWwgYW1vdW50IHRyYW5zZmVycmVkLiBJZiB0aGlzIHRha2VzIHRoZSBzb3VyY2UgYmFsYW5jZV0BdG8gYmVsb3cgdGhlIG1pbmltdW0gZm9yIHRoZSBhc3NldCwgdGhlbiB0aGUgYW1vdW50IHRyYW5zZmVycmVkIGlzIGluY3JlYXNlZCB0byB0YWtlIGl0IHRvIHplcm8uADhXZWlnaHQ6IGBPKDEpYFEBTW9kZXM6IFByZS1leGlzdGVuY2Ugb2YgYGRlc3RgOyBQb3N0LWV4aXN0ZW5jZSBvZiBgc291cmNlYDsgQWNjb3VudCBwcmUtZXhpc3RlbmNlIG9mHGBkZXN0YC4YZnJlZXplCAEIaWRkAUxUOjpBc3NldElkUGFyYW1ldGVyAAEMd2hvAAFQQWNjb3VudElkTG9va3VwT2Y8VD4ACzBVAURpc2FsbG93IGZ1cnRoZXIgdW5wcml2aWxlZ2VkIHRyYW5zZmVycyBvZiBhbiBhc3NldCBgaWRgIGZyb20gYW4gYWNjb3VudCBgd2hvYC4gYHdob2BNAW11c3QgYWxyZWFkeSBleGlzdCBhcyBhbiBlbnRyeSBpbiBgQWNjb3VudGBzIG9mIHRoZSBhc3NldC4gSWYgeW91IHdhbnQgdG8gZnJlZXplIGFu9GFjY291bnQgdGhhdCBkb2VzIG5vdCBoYXZlIGFuIGVudHJ5LCB1c2UgYHRvdWNoX290aGVyYCBmaXJzdC4ANQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBGcmVlemVyIG9mIHRoZSBhc3NldCBgaWRgLgDELSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgZnJvemVuLogtIGB3aG9gOiBUaGUgYWNjb3VudCB0byBiZSBmcm96ZW4uADxFbWl0cyBgRnJvemVuYC4AOFdlaWdodDogYE8oMSlgEHRoYXcIAQhpZGQBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAAQx3aG8AAVBBY2NvdW50SWRMb29rdXBPZjxUPgAMKOhBbGxvdyB1bnByaXZpbGVnZWQgdHJhbnNmZXJzIHRvIGFuZCBmcm9tIGFuIGFjY291bnQgYWdhaW4uAC0BT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgQWRtaW4gb2YgdGhlIGFzc2V0IGBpZGAuAMQtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBiZSBmcm96ZW4ukC0gYHdob2A6IFRoZSBhY2NvdW50IHRvIGJlIHVuZnJvemVuLgA8RW1pdHMgYFRoYXdlZGAuADhXZWlnaHQ6IGBPKDEpYDBmcmVlemVfYXNzZXQEAQhpZGQBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIADSTwRGlzYWxsb3cgZnVydGhlciB1bnByaXZpbGVnZWQgdHJhbnNmZXJzIGZvciB0aGUgYXNzZXQgY2xhc3MuADUBT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgRnJlZXplciBvZiB0aGUgYXNzZXQgYGlkYC4AxC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIGZyb3plbi4APEVtaXRzIGBGcm96ZW5gLgA4V2VpZ2h0OiBgTygxKWAodGhhd19hc3NldAQBCGlkZAFMVDo6QXNzZXRJZFBhcmFtZXRlcgAOJMRBbGxvdyB1bnByaXZpbGVnZWQgdHJhbnNmZXJzIGZvciB0aGUgYXNzZXQgYWdhaW4uAC0BT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgQWRtaW4gb2YgdGhlIGFzc2V0IGBpZGAuAMQtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBiZSB0aGF3ZWQuADxFbWl0cyBgVGhhd2VkYC4AOFdlaWdodDogYE8oMSlgSHRyYW5zZmVyX293bmVyc2hpcAgBCGlkZAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABFG93bmVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4ADyh0Q2hhbmdlIHRoZSBPd25lciBvZiBhbiBhc3NldC4ALQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBPd25lciBvZiB0aGUgYXNzZXQgYGlkYC4AkC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0LpwtIGBvd25lcmA6IFRoZSBuZXcgT3duZXIgb2YgdGhpcyBhc3NldC4AVEVtaXRzIGBPd25lckNoYW5nZWRgLgA4V2VpZ2h0OiBgTygxKWAgc2V0X3RlYW0QAQhpZGQBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARhpc3N1ZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABFGFkbWluAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARxmcmVlemVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AEDDEQ2hhbmdlIHRoZSBJc3N1ZXIsIEFkbWluIGFuZCBGcmVlemVyIG9mIGFuIGFzc2V0LgAtAU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIE93bmVyIG9mIHRoZSBhc3NldCBgaWRgLgDELSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgZnJvemVuLqQtIGBpc3N1ZXJgOiBUaGUgbmV3IElzc3VlciBvZiB0aGlzIGFzc2V0LpwtIGBhZG1pbmA6IFRoZSBuZXcgQWRtaW4gb2YgdGhpcyBhc3NldC6sLSBgZnJlZXplcmA6IFRoZSBuZXcgRnJlZXplciBvZiB0aGlzIGFzc2V0LgBQRW1pdHMgYFRlYW1DaGFuZ2VkYC4AOFdlaWdodDogYE8oMSlgMHNldF9tZXRhZGF0YRABCGlkZAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABEG5hbWUYARxWZWM8dTg+AAEYc3ltYm9sGAEcVmVjPHU4PgABIGRlY2ltYWxzDAEIdTgAEUB4U2V0IHRoZSBtZXRhZGF0YSBmb3IgYW4gYXNzZXQuAC0BT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgT3duZXIgb2YgdGhlIGFzc2V0IGBpZGAuANhGdW5kcyBvZiBzZW5kZXIgYXJlIHJlc2VydmVkIGFjY29yZGluZyB0byB0aGUgZm9ybXVsYTpRAWBNZXRhZGF0YURlcG9zaXRCYXNlICsgTWV0YWRhdGFEZXBvc2l0UGVyQnl0ZSAqIChuYW1lLmxlbiArIHN5bWJvbC5sZW4pYCB0YWtpbmcgaW50b4xhY2NvdW50IGFueSBhbHJlYWR5IHJlc2VydmVkIGZ1bmRzLgC4LSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gdXBkYXRlLk0BLSBgbmFtZWA6IFRoZSB1c2VyIGZyaWVuZGx5IG5hbWUgb2YgdGhpcyBhc3NldC4gTGltaXRlZCBpbiBsZW5ndGggYnkgYFN0cmluZ0xpbWl0YC5NAS0gYHN5bWJvbGA6IFRoZSBleGNoYW5nZSBzeW1ib2wgZm9yIHRoaXMgYXNzZXQuIExpbWl0ZWQgaW4gbGVuZ3RoIGJ5IGBTdHJpbmdMaW1pdGAuLQEtIGBkZWNpbWFsc2A6IFRoZSBudW1iZXIgb2YgZGVjaW1hbHMgdGhpcyBhc3NldCB1c2VzIHRvIHJlcHJlc2VudCBvbmUgdW5pdC4AUEVtaXRzIGBNZXRhZGF0YVNldGAuADhXZWlnaHQ6IGBPKDEpYDhjbGVhcl9tZXRhZGF0YQQBCGlkZAFMVDo6QXNzZXRJZFBhcmFtZXRlcgASLIBDbGVhciB0aGUgbWV0YWRhdGEgZm9yIGFuIGFzc2V0LgAtAU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIE93bmVyIG9mIHRoZSBhc3NldCBgaWRgLgCkQW55IGRlcG9zaXQgaXMgZnJlZWQgZm9yIHRoZSBhc3NldCBvd25lci4AtC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGNsZWFyLgBgRW1pdHMgYE1ldGFkYXRhQ2xlYXJlZGAuADhXZWlnaHQ6IGBPKDEpYEhmb3JjZV9zZXRfbWV0YWRhdGEUAQhpZGQBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARBuYW1lGAEcVmVjPHU4PgABGHN5bWJvbBgBHFZlYzx1OD4AASBkZWNpbWFscwwBCHU4AAEkaXNfZnJvemVumQEBEGJvb2wAEzi4Rm9yY2UgdGhlIG1ldGFkYXRhIGZvciBhbiBhc3NldCB0byBzb21lIHZhbHVlLgBsT3JpZ2luIG11c3QgYmUgRm9yY2VPcmlnaW4uAGhBbnkgZGVwb3NpdCBpcyBsZWZ0IGFsb25lLgC4LSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gdXBkYXRlLk0BLSBgbmFtZWA6IFRoZSB1c2VyIGZyaWVuZGx5IG5hbWUgb2YgdGhpcyBhc3NldC4gTGltaXRlZCBpbiBsZW5ndGggYnkgYFN0cmluZ0xpbWl0YC5NAS0gYHN5bWJvbGA6IFRoZSBleGNoYW5nZSBzeW1ib2wgZm9yIHRoaXMgYXNzZXQuIExpbWl0ZWQgaW4gbGVuZ3RoIGJ5IGBTdHJpbmdMaW1pdGAuLQEtIGBkZWNpbWFsc2A6IFRoZSBudW1iZXIgb2YgZGVjaW1hbHMgdGhpcyBhc3NldCB1c2VzIHRvIHJlcHJlc2VudCBvbmUgdW5pdC4AUEVtaXRzIGBNZXRhZGF0YVNldGAuAFEBV2VpZ2h0OiBgTyhOICsgUylgIHdoZXJlIE4gYW5kIFMgYXJlIHRoZSBsZW5ndGggb2YgdGhlIG5hbWUgYW5kIHN5bWJvbCByZXNwZWN0aXZlbHkuUGZvcmNlX2NsZWFyX21ldGFkYXRhBAEIaWRkAUxUOjpBc3NldElkUGFyYW1ldGVyABQsgENsZWFyIHRoZSBtZXRhZGF0YSBmb3IgYW4gYXNzZXQuAGxPcmlnaW4gbXVzdCBiZSBGb3JjZU9yaWdpbi4AYEFueSBkZXBvc2l0IGlzIHJldHVybmVkLgC0LSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gY2xlYXIuAGBFbWl0cyBgTWV0YWRhdGFDbGVhcmVkYC4AOFdlaWdodDogYE8oMSlgSGZvcmNlX2Fzc2V0X3N0YXR1cyABCGlkZAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABFG93bmVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARhpc3N1ZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABFGFkbWluAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARxmcmVlemVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AASxtaW5fYmFsYW5jZZEBAShUOjpCYWxhbmNlAAE0aXNfc3VmZmljaWVudJkBARBib29sAAEkaXNfZnJvemVumQEBEGJvb2wAFViYQWx0ZXIgdGhlIGF0dHJpYnV0ZXMgb2YgYSBnaXZlbiBhc3NldC4AdE9yaWdpbiBtdXN0IGJlIGBGb3JjZU9yaWdpbmAuAJAtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldC6cLSBgb3duZXJgOiBUaGUgbmV3IE93bmVyIG9mIHRoaXMgYXNzZXQupC0gYGlzc3VlcmA6IFRoZSBuZXcgSXNzdWVyIG9mIHRoaXMgYXNzZXQunC0gYGFkbWluYDogVGhlIG5ldyBBZG1pbiBvZiB0aGlzIGFzc2V0LqwtIGBmcmVlemVyYDogVGhlIG5ldyBGcmVlemVyIG9mIHRoaXMgYXNzZXQuTQEtIGBtaW5fYmFsYW5jZWA6IFRoZSBtaW5pbXVtIGJhbGFuY2Ugb2YgdGhpcyBuZXcgYXNzZXQgdGhhdCBhbnkgc2luZ2xlIGFjY291bnQgbXVzdD0BaGF2ZS4gSWYgYW4gYWNjb3VudCdzIGJhbGFuY2UgaXMgcmVkdWNlZCBiZWxvdyB0aGlzLCB0aGVuIGl0IGNvbGxhcHNlcyB0byB6ZXJvLlEBLSBgaXNfc3VmZmljaWVudGA6IFdoZXRoZXIgYSBub24temVybyBiYWxhbmNlIG9mIHRoaXMgYXNzZXQgaXMgZGVwb3NpdCBvZiBzdWZmaWNpZW50TQF2YWx1ZSB0byBhY2NvdW50IGZvciB0aGUgc3RhdGUgYmxvYXQgYXNzb2NpYXRlZCB3aXRoIGl0cyBiYWxhbmNlIHN0b3JhZ2UuIElmIHNldCB0b1UBYHRydWVgLCB0aGVuIG5vbi16ZXJvIGJhbGFuY2VzIG1heSBiZSBzdG9yZWQgd2l0aG91dCBhIGBjb25zdW1lcmAgcmVmZXJlbmNlIChhbmQgdGh1c00BYW4gRUQgaW4gdGhlIEJhbGFuY2VzIHBhbGxldCBvciB3aGF0ZXZlciBlbHNlIGlzIHVzZWQgdG8gY29udHJvbCB1c2VyLWFjY291bnQgc3RhdGUgZ3Jvd3RoKS49AS0gYGlzX2Zyb3plbmA6IFdoZXRoZXIgdGhpcyBhc3NldCBjbGFzcyBpcyBmcm96ZW4gZXhjZXB0IGZvciBwZXJtaXNzaW9uZWQvYWRtaW40aW5zdHJ1Y3Rpb25zLgDoRW1pdHMgYEFzc2V0U3RhdHVzQ2hhbmdlZGAgd2l0aCB0aGUgaWRlbnRpdHkgb2YgdGhlIGFzc2V0LgA4V2VpZ2h0OiBgTygxKWBAYXBwcm92ZV90cmFuc2ZlcgwBCGlkZAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABIGRlbGVnYXRlAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARhhbW91bnSRAQEoVDo6QmFsYW5jZQAWUC0BQXBwcm92ZSBhbiBhbW91bnQgb2YgYXNzZXQgZm9yIHRyYW5zZmVyIGJ5IGEgZGVsZWdhdGVkIHRoaXJkLXBhcnR5IGFjY291bnQuAFhPcmlnaW4gbXVzdCBiZSBTaWduZWQuAE0BRW5zdXJlcyB0aGF0IGBBcHByb3ZhbERlcG9zaXRgIHdvcnRoIG9mIGBDdXJyZW5jeWAgaXMgcmVzZXJ2ZWQgZnJvbSBzaWduaW5nIGFjY291bnRVAWZvciB0aGUgcHVycG9zZSBvZiBob2xkaW5nIHRoZSBhcHByb3ZhbC4gSWYgc29tZSBub24temVybyBhbW91bnQgb2YgYXNzZXRzIGlzIGFscmVhZHlJAWFwcHJvdmVkIGZyb20gc2lnbmluZyBhY2NvdW50IHRvIGBkZWxlZ2F0ZWAsIHRoZW4gaXQgaXMgdG9wcGVkIHVwIG9yIHVucmVzZXJ2ZWQgdG9UbWVldCB0aGUgcmlnaHQgdmFsdWUuAEUBTk9URTogVGhlIHNpZ25pbmcgYWNjb3VudCBkb2VzIG5vdCBuZWVkIHRvIG93biBgYW1vdW50YCBvZiBhc3NldHMgYXQgdGhlIHBvaW50IG9mRG1ha2luZyB0aGlzIGNhbGwuAJAtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldC4NAS0gYGRlbGVnYXRlYDogVGhlIGFjY291bnQgdG8gZGVsZWdhdGUgcGVybWlzc2lvbiB0byB0cmFuc2ZlciBhc3NldC5JAS0gYGFtb3VudGA6IFRoZSBhbW91bnQgb2YgYXNzZXQgdGhhdCBtYXkgYmUgdHJhbnNmZXJyZWQgYnkgYGRlbGVnYXRlYC4gSWYgdGhlcmUgaXPgYWxyZWFkeSBhbiBhcHByb3ZhbCBpbiBwbGFjZSwgdGhlbiB0aGlzIGFjdHMgYWRkaXRpdmVseS4AkEVtaXRzIGBBcHByb3ZlZFRyYW5zZmVyYCBvbiBzdWNjZXNzLgA4V2VpZ2h0OiBgTygxKWA8Y2FuY2VsX2FwcHJvdmFsCAEIaWRkAUxUOjpBc3NldElkUGFyYW1ldGVyAAEgZGVsZWdhdGUAAVBBY2NvdW50SWRMb29rdXBPZjxUPgAXNEkBQ2FuY2VsIGFsbCBvZiBzb21lIGFzc2V0IGFwcHJvdmVkIGZvciBkZWxlZ2F0ZWQgdHJhbnNmZXIgYnkgYSB0aGlyZC1wYXJ0eSBhY2NvdW50LgA9AU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlcmUgbXVzdCBiZSBhbiBhcHByb3ZhbCBpbiBwbGFjZSBiZXR3ZWVuIHNpZ25lciBhbmQsYGRlbGVnYXRlYC4ASQFVbnJlc2VydmVzIGFueSBkZXBvc2l0IHByZXZpb3VzbHkgcmVzZXJ2ZWQgYnkgYGFwcHJvdmVfdHJhbnNmZXJgIGZvciB0aGUgYXBwcm92YWwuAJAtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldC4FAS0gYGRlbGVnYXRlYDogVGhlIGFjY291bnQgZGVsZWdhdGVkIHBlcm1pc3Npb24gdG8gdHJhbnNmZXIgYXNzZXQuAJRFbWl0cyBgQXBwcm92YWxDYW5jZWxsZWRgIG9uIHN1Y2Nlc3MuADhXZWlnaHQ6IGBPKDEpYFRmb3JjZV9jYW5jZWxfYXBwcm92YWwMAQhpZGQBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARRvd25lcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEgZGVsZWdhdGUAAVBBY2NvdW50SWRMb29rdXBPZjxUPgAYNEkBQ2FuY2VsIGFsbCBvZiBzb21lIGFzc2V0IGFwcHJvdmVkIGZvciBkZWxlZ2F0ZWQgdHJhbnNmZXIgYnkgYSB0aGlyZC1wYXJ0eSBhY2NvdW50LgBJAU9yaWdpbiBtdXN0IGJlIGVpdGhlciBGb3JjZU9yaWdpbiBvciBTaWduZWQgb3JpZ2luIHdpdGggdGhlIHNpZ25lciBiZWluZyB0aGUgQWRtaW5oYWNjb3VudCBvZiB0aGUgYXNzZXQgYGlkYC4ASQFVbnJlc2VydmVzIGFueSBkZXBvc2l0IHByZXZpb3VzbHkgcmVzZXJ2ZWQgYnkgYGFwcHJvdmVfdHJhbnNmZXJgIGZvciB0aGUgYXBwcm92YWwuAJAtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldC4FAS0gYGRlbGVnYXRlYDogVGhlIGFjY291bnQgZGVsZWdhdGVkIHBlcm1pc3Npb24gdG8gdHJhbnNmZXIgYXNzZXQuAJRFbWl0cyBgQXBwcm92YWxDYW5jZWxsZWRgIG9uIHN1Y2Nlc3MuADhXZWlnaHQ6IGBPKDEpYER0cmFuc2Zlcl9hcHByb3ZlZBABCGlkZAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABFG93bmVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AASxkZXN0aW5hdGlvbgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYYW1vdW50kQEBKFQ6OkJhbGFuY2UAGUhNAVRyYW5zZmVyIHNvbWUgYXNzZXQgYmFsYW5jZSBmcm9tIGEgcHJldmlvdXNseSBkZWxlZ2F0ZWQgYWNjb3VudCB0byBzb21lIHRoaXJkLXBhcnR5IGFjY291bnQuAEkBT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGVyZSBtdXN0IGJlIGFuIGFwcHJvdmFsIGluIHBsYWNlIGJ5IHRoZSBgb3duZXJgIHRvIHRoZRxzaWduZXIuAFkBSWYgdGhlIGVudGlyZSBhbW91bnQgYXBwcm92ZWQgZm9yIHRyYW5zZmVyIGlzIHRyYW5zZmVycmVkLCB0aGVuIGFueSBkZXBvc2l0IHByZXZpb3VzbHm0cmVzZXJ2ZWQgYnkgYGFwcHJvdmVfdHJhbnNmZXJgIGlzIHVucmVzZXJ2ZWQuAJAtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldC5hAS0gYG93bmVyYDogVGhlIGFjY291bnQgd2hpY2ggcHJldmlvdXNseSBhcHByb3ZlZCBmb3IgYSB0cmFuc2ZlciBvZiBhdCBsZWFzdCBgYW1vdW50YCBhbmS8ZnJvbSB3aGljaCB0aGUgYXNzZXQgYmFsYW5jZSB3aWxsIGJlIHdpdGhkcmF3bi5hAS0gYGRlc3RpbmF0aW9uYDogVGhlIGFjY291bnQgdG8gd2hpY2ggdGhlIGFzc2V0IGJhbGFuY2Ugb2YgYGFtb3VudGAgd2lsbCBiZSB0cmFuc2ZlcnJlZC60LSBgYW1vdW50YDogVGhlIGFtb3VudCBvZiBhc3NldHMgdG8gdHJhbnNmZXIuAJxFbWl0cyBgVHJhbnNmZXJyZWRBcHByb3ZlZGAgb24gc3VjY2Vzcy4AOFdlaWdodDogYE8oMSlgFHRvdWNoBAEIaWRkAUxUOjpBc3NldElkUGFyYW1ldGVyABokwENyZWF0ZSBhbiBhc3NldCBhY2NvdW50IGZvciBub24tcHJvdmlkZXIgYXNzZXRzLgDAQSBkZXBvc2l0IHdpbGwgYmUgdGFrZW4gZnJvbSB0aGUgc2lnbmVyIGFjY291bnQuAF0BLSBgb3JpZ2luYDogTXVzdCBiZSBTaWduZWQ7IHRoZSBzaWduZXIgYWNjb3VudCBtdXN0IGhhdmUgc3VmZmljaWVudCBmdW5kcyBmb3IgYSBkZXBvc2l0OCAgdG8gYmUgdGFrZW4uCQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCBmb3IgdGhlIGFjY291bnQgdG8gYmUgY3JlYXRlZC4AmEVtaXRzIGBUb3VjaGVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuGHJlZnVuZAgBCGlkZAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABKGFsbG93X2J1cm6ZAQEQYm9vbAAbNFkBUmV0dXJuIHRoZSBkZXBvc2l0IChpZiBhbnkpIG9mIGFuIGFzc2V0IGFjY291bnQgb3IgYSBjb25zdW1lciByZWZlcmVuY2UgKGlmIGFueSkgb2YgYW4gYWNjb3VudC4AaFRoZSBvcmlnaW4gbXVzdCBiZSBTaWduZWQuAD0BLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgZm9yIHdoaWNoIHRoZSBjYWxsZXIgd291bGQgbGlrZSB0aGUgZGVwb3NpdCwgIHJlZnVuZGVkLl0BLSBgYWxsb3dfYnVybmA6IElmIGB0cnVlYCB0aGVuIGFzc2V0cyBtYXkgYmUgZGVzdHJveWVkIGluIG9yZGVyIHRvIGNvbXBsZXRlIHRoZSByZWZ1bmQuAEkBSXQgd2lsbCBmYWlsIHdpdGggZWl0aGVyIFtgRXJyb3I6OkNvbnRhaW5zSG9sZHNgXSBvciBbYEVycm9yOjpDb250YWluc0ZyZWV6ZXNgXSBpZtR0aGUgYXNzZXQgYWNjb3VudCBjb250YWlucyBob2xkcyBvciBmcmVlemVzIGluIHBsYWNlLgCcRW1pdHMgYFJlZnVuZGVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuPHNldF9taW5fYmFsYW5jZQgBCGlkZAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABLG1pbl9iYWxhbmNllQEBKFQ6OkJhbGFuY2UAHDCUU2V0cyB0aGUgbWluaW11bSBiYWxhbmNlIG9mIGFuIGFzc2V0LgAhAU9ubHkgd29ya3MgaWYgdGhlcmUgYXJlbid0IGFueSBhY2NvdW50cyB0aGF0IGFyZSBob2xkaW5nIHRoZSBhc3NldCBvciBpZuB0aGUgbmV3IHZhbHVlIG9mIGBtaW5fYmFsYW5jZWAgaXMgbGVzcyB0aGFuIHRoZSBvbGQgb25lLgD8T3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIGhhcyB0byBiZSB0aGUgT3duZXIgb2YgdGhlLGFzc2V0IGBpZGAuAJAtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldC7ALSBgbWluX2JhbGFuY2VgOiBUaGUgbmV3IHZhbHVlIG9mIGBtaW5fYmFsYW5jZWAuANRFbWl0cyBgQXNzZXRNaW5CYWxhbmNlQ2hhbmdlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLix0b3VjaF9vdGhlcggBCGlkZAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABDHdobwABUEFjY291bnRJZExvb2t1cE9mPFQ+AB0siENyZWF0ZSBhbiBhc3NldCBhY2NvdW50IGZvciBgd2hvYC4AwEEgZGVwb3NpdCB3aWxsIGJlIHRha2VuIGZyb20gdGhlIHNpZ25lciBhY2NvdW50LgBdAS0gYG9yaWdpbmA6IE11c3QgYmUgU2lnbmVkOyB0aGUgc2lnbmVyIGFjY291bnQgbXVzdCBoYXZlIHN1ZmZpY2llbnQgZnVuZHMgZm9yIGEgZGVwb3NpdDggIHRvIGJlIHRha2VuLmEBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgZm9yIHRoZSBhY2NvdW50IHRvIGJlIGNyZWF0ZWQsIHRoZSBhc3NldCBzdGF0dXMgbXVzdCggIGJlIGxpdmUujC0gYHdob2A6IFRoZSBhY2NvdW50IHRvIGJlIGNyZWF0ZWQuAJhFbWl0cyBgVG91Y2hlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLjByZWZ1bmRfb3RoZXIIAQhpZGQBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAAQx3aG8AAVBBY2NvdW50SWRMb29rdXBPZjxUPgAeNF0BUmV0dXJuIHRoZSBkZXBvc2l0IChpZiBhbnkpIG9mIGEgdGFyZ2V0IGFzc2V0IGFjY291bnQuIFVzZWZ1bCBpZiB5b3UgYXJlIHRoZSBkZXBvc2l0b3IuAF0BVGhlIG9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgZWl0aGVyIHRoZSBhY2NvdW50IG93bmVyLCBkZXBvc2l0b3IsIG9yIGFzc2V0IGBBZG1pbmAuIEluYQFvcmRlciB0byBidXJuIGEgbm9uLXplcm8gYmFsYW5jZSBvZiB0aGUgYXNzZXQsIHRoZSBjYWxsZXIgbXVzdCBiZSB0aGUgYWNjb3VudCBhbmQgc2hvdWxkNHVzZSBgcmVmdW5kYC4AGQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCBmb3IgdGhlIGFjY291bnQgaG9sZGluZyBhIGRlcG9zaXQufC0gYHdob2A6IFRoZSBhY2NvdW50IHRvIHJlZnVuZC4ASQFJdCB3aWxsIGZhaWwgd2l0aCBlaXRoZXIgW2BFcnJvcjo6Q29udGFpbnNIb2xkc2BdIG9yIFtgRXJyb3I6OkNvbnRhaW5zRnJlZXplc2BdIGlm1HRoZSBhc3NldCBhY2NvdW50IGNvbnRhaW5zIGhvbGRzIG9yIGZyZWV6ZXMgaW4gcGxhY2UuAJxFbWl0cyBgUmVmdW5kZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4UYmxvY2sIAQhpZGQBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAAQx3aG8AAVBBY2NvdW50SWRMb29rdXBPZjxUPgAfKFkBRGlzYWxsb3cgZnVydGhlciB1bnByaXZpbGVnZWQgdHJhbnNmZXJzIG9mIGFuIGFzc2V0IGBpZGAgdG8gYW5kIGZyb20gYW4gYWNjb3VudCBgd2hvYC4ANQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBGcmVlemVyIG9mIHRoZSBhc3NldCBgaWRgLgC4LSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYWNjb3VudCdzIGFzc2V0LpQtIGB3aG9gOiBUaGUgYWNjb3VudCB0byBiZSB1bmJsb2NrZWQuAEBFbWl0cyBgQmxvY2tlZGAuADhXZWlnaHQ6IGBPKDEpYDB0cmFuc2Zlcl9hbGwMAQhpZGQBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARBkZXN0AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AAShrZWVwX2FsaXZlmQEBEGJvb2wAIEAdAVRyYW5zZmVyIHRoZSBlbnRpcmUgdHJhbnNmZXJhYmxlIGJhbGFuY2UgZnJvbSB0aGUgY2FsbGVyIGFzc2V0IGFjY291bnQuAFkBTk9URTogVGhpcyBmdW5jdGlvbiBvbmx5IGF0dGVtcHRzIHRvIHRyYW5zZmVyIF90cmFuc2ZlcmFibGVfIGJhbGFuY2VzLiBUaGlzIG1lYW5zIHRoYXQ9AWFueSBoZWxkLCBmcm96ZW4sIG9yIG1pbmltdW0gYmFsYW5jZSAod2hlbiBga2VlcF9hbGl2ZWAgaXMgYHRydWVgKSwgd2lsbCBub3QgYmVdAXRyYW5zZmVycmVkIGJ5IHRoaXMgZnVuY3Rpb24uIFRvIGVuc3VyZSB0aGF0IHRoaXMgZnVuY3Rpb24gcmVzdWx0cyBpbiBhIGtpbGxlZCBhY2NvdW50LEUBeW91IG1pZ2h0IG5lZWQgdG8gcHJlcGFyZSB0aGUgYWNjb3VudCBieSByZW1vdmluZyBhbnkgcmVmZXJlbmNlIGNvdW50ZXJzLCBzdG9yYWdlQGRlcG9zaXRzLCBldGMuLi4AwFRoZSBkaXNwYXRjaCBvcmlnaW4gb2YgdGhpcyBjYWxsIG11c3QgYmUgU2lnbmVkLgAZAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IGZvciB0aGUgYWNjb3VudCBob2xkaW5nIGEgZGVwb3NpdC6gLSBgZGVzdGA6IFRoZSByZWNpcGllbnQgb2YgdGhlIHRyYW5zZmVyLlkBLSBga2VlcF9hbGl2ZWA6IEEgYm9vbGVhbiB0byBkZXRlcm1pbmUgaWYgdGhlIGB0cmFuc2Zlcl9hbGxgIG9wZXJhdGlvbiBzaG91bGQgc2VuZCBhbGxNASAgb2YgdGhlIGZ1bmRzIHRoZSBhc3NldCBhY2NvdW50IGhhcywgY2F1c2luZyB0aGUgc2VuZGVyIGFzc2V0IGFjY291bnQgdG8gYmUga2lsbGVkRQEgIChmYWxzZSksIG9yIHRyYW5zZmVyIGV2ZXJ5dGhpbmcgZXhjZXB0IGF0IGxlYXN0IHRoZSBtaW5pbXVtIGJhbGFuY2UsIHdoaWNoIHdpbGzoICBndWFyYW50ZWUgdG8ga2VlcCB0aGUgc2VuZGVyIGFzc2V0IGFjY291bnQgYWxpdmUgKHRydWUpLjBzZXRfcmVzZXJ2ZXMIAQhpZGQBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAASByZXNlcnZlc0EEAchCb3VuZGVkVmVjPFQ6OlJlc2VydmVEYXRhLCBDb25zdFUzMjxNQVhfUkVTRVJWRVM+PgAhJMRTZXRzIHRoZSB0cnVzdGVkIHJlc2VydmUgaW5mb3JtYXRpb24gb2YgYW4gYXNzZXQuAFUBT3JpZ2luIG11c3QgYmUgdGhlIE93bmVyIG9mIHRoZSBhc3NldCBgaWRgLiBUaGUgb3JpZ2luIG11c3QgY29uZm9ybSB0byB0aGUgY29uZmlndXJlZCUBYENyZWF0ZU9yaWdpbmAgb3IgYmUgdGhlIHNpZ25lZCBgb3duZXJgIGNvbmZpZ3VyZWQgZHVyaW5nIGFzc2V0IGNyZWF0aW9uLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQu8C0gYHJlc2VydmVzYDogVGhlIGZ1bGwgbGlzdCBvZiB0cnVzdGVkIHJlc2VydmVzIGluZm9ybWF0aW9uLgDURW1pdHMgYEFzc2V0TWluQmFsYW5jZUNoYW5nZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuQQQMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEQBFMAAAQARQQBGFZlYzxUPgAARQQAAAIQAEkEDDhwYWxsZXRfdW5pcXVlcxhwYWxsZXQQQ2FsbAgEVAAESQABaBhjcmVhdGUIAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEUYWRtaW4AAVBBY2NvdW50SWRMb29rdXBPZjxUPgAAQAkBSXNzdWUgYSBuZXcgY29sbGVjdGlvbiBvZiBub24tZnVuZ2libGUgaXRlbXMgZnJvbSBhIHB1YmxpYyBvcmlnaW4uAB0BVGhpcyBuZXcgY29sbGVjdGlvbiBoYXMgbm8gaXRlbXMgaW5pdGlhbGx5IGFuZCBpdHMgb3duZXIgaXMgdGhlIG9yaWdpbi4AYQFUaGUgb3JpZ2luIG11c3QgY29uZm9ybSB0byB0aGUgY29uZmlndXJlZCBgQ3JlYXRlT3JpZ2luYCBhbmQgaGF2ZSBzdWZmaWNpZW50IGZ1bmRzIGZyZWUuAKxgSXRlbURlcG9zaXRgIGZ1bmRzIG9mIHNlbmRlciBhcmUgcmVzZXJ2ZWQuACxQYXJhbWV0ZXJzOmEBLSBgY29sbGVjdGlvbmA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBuZXcgY29sbGVjdGlvbi4gVGhpcyBtdXN0IG5vdCBiZSBjdXJyZW50bHkgaW4gdXNlLkUBLSBgYWRtaW5gOiBUaGUgYWRtaW4gb2YgdGhpcyBjb2xsZWN0aW9uLiBUaGUgYWRtaW4gaXMgdGhlIGluaXRpYWwgYWRkcmVzcyBvZiBlYWNomG1lbWJlciBvZiB0aGUgY29sbGVjdGlvbidzIGFkbWluIHRlYW0uAJhFbWl0cyBgQ3JlYXRlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLgA4V2VpZ2h0OiBgTygxKWAwZm9yY2VfY3JlYXRlDAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABFG93bmVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AATBmcmVlX2hvbGRpbmeZAQEQYm9vbAABRBkBSXNzdWUgYSBuZXcgY29sbGVjdGlvbiBvZiBub24tZnVuZ2libGUgaXRlbXMgZnJvbSBhIHByaXZpbGVnZWQgb3JpZ2luLgCsVGhpcyBuZXcgY29sbGVjdGlvbiBoYXMgbm8gaXRlbXMgaW5pdGlhbGx5LgCkVGhlIG9yaWdpbiBtdXN0IGNvbmZvcm0gdG8gYEZvcmNlT3JpZ2luYC4AnFVubGlrZSBgY3JlYXRlYCwgbm8gZnVuZHMgYXJlIHJlc2VydmVkLgBJAS0gYGNvbGxlY3Rpb25gOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgbmV3IGl0ZW0uIFRoaXMgbXVzdCBub3QgYmUgY3VycmVudGx5IGluIHVzZS45AS0gYG93bmVyYDogVGhlIG93bmVyIG9mIHRoaXMgY29sbGVjdGlvbiBvZiBpdGVtcy4gVGhlIG93bmVyIGhhcyBmdWxsIHN1cGVydXNlcjQgIHBlcm1pc3Npb25zIQFvdmVyIHRoaXMgaXRlbSwgYnV0IG1heSBsYXRlciBjaGFuZ2UgYW5kIGNvbmZpZ3VyZSB0aGUgcGVybWlzc2lvbnMgdXNpbmeQYHRyYW5zZmVyX293bmVyc2hpcGAgYW5kIGBzZXRfdGVhbWAuAKxFbWl0cyBgRm9yY2VDcmVhdGVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuADhXZWlnaHQ6IGBPKDEpYBxkZXN0cm95CAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABHHdpdG5lc3NNBAE4RGVzdHJveVdpdG5lc3MAAjycRGVzdHJveSBhIGNvbGxlY3Rpb24gb2YgZnVuZ2libGUgaXRlbXMuAF0BVGhlIG9yaWdpbiBtdXN0IGNvbmZvcm0gdG8gYEZvcmNlT3JpZ2luYCBvciBtdXN0IGJlIGBTaWduZWRgIGFuZCB0aGUgc2VuZGVyIG11c3QgYmUgdGhlaG93bmVyIG9mIHRoZSBgY29sbGVjdGlvbmAuAAUBLSBgY29sbGVjdGlvbmA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBjb2xsZWN0aW9uIHRvIGJlIGRlc3Ryb3llZC4xAS0gYHdpdG5lc3NgOiBJbmZvcm1hdGlvbiBvbiB0aGUgaXRlbXMgbWludGVkIGluIHRoZSBjb2xsZWN0aW9uLiBUaGlzIG11c3QgYmUgY29ycmVjdC4AoEVtaXRzIGBEZXN0cm95ZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4AZFdlaWdodDogYE8obiArIG0pYCB3aGVyZTpULSBgbiA9IHdpdG5lc3MuaXRlbXNgeC0gYG0gPSB3aXRuZXNzLml0ZW1fbWV0YWRhdGFzYGgtIGBhID0gd2l0bmVzcy5hdHRyaWJ1dGVzYBBtaW50DAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAARRvd25lcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAMsoE1pbnQgYW4gaXRlbSBvZiBhIHBhcnRpY3VsYXIgY29sbGVjdGlvbi4AQQFUaGUgb3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIG11c3QgYmUgdGhlIElzc3VlciBvZiB0aGUgYGNvbGxlY3Rpb25gLgDgLSBgY29sbGVjdGlvbmA6IFRoZSBjb2xsZWN0aW9uIG9mIHRoZSBpdGVtIHRvIGJlIG1pbnRlZC7ILSBgaXRlbWA6IFRoZSBpdGVtIHZhbHVlIG9mIHRoZSBpdGVtIHRvIGJlIG1pbnRlZC7YLSBgYmVuZWZpY2lhcnlgOiBUaGUgaW5pdGlhbCBvd25lciBvZiB0aGUgbWludGVkIGl0ZW0uAJRFbWl0cyBgSXNzdWVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuADhXZWlnaHQ6IGBPKDEpYBBidXJuDAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAASxjaGVja19vd25lclEEAXBPcHRpb248QWNjb3VudElkTG9va3VwT2Y8VD4+AAQ8WERlc3Ryb3kgYSBzaW5nbGUgaXRlbS4A9E9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNpZ25pbmcgYWNjb3VudCBtdXN0IGJlIGVpdGhlcjqALSB0aGUgQWRtaW4gb2YgdGhlIGBjb2xsZWN0aW9uYDtoLSB0aGUgT3duZXIgb2YgdGhlIGBpdGVtYDsA4C0gYGNvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiBvZiB0aGUgaXRlbSB0byBiZSBidXJuZWQusC0gYGl0ZW1gOiBUaGUgaXRlbSBvZiB0aGUgaXRlbSB0byBiZSBidXJuZWQuUQEtIGBjaGVja19vd25lcmA6IElmIGBTb21lYCB0aGVuIHRoZSBvcGVyYXRpb24gd2lsbCBmYWlsIHdpdGggYFdyb25nT3duZXJgIHVubGVzcyB0aGV4ICBpdGVtIGlzIG93bmVkIGJ5IHRoaXMgdmFsdWUuALRFbWl0cyBgQnVybmVkYCB3aXRoIHRoZSBhY3R1YWwgYW1vdW50IGJ1cm5lZC4AOFdlaWdodDogYE8oMSlgfE1vZGVzOiBgY2hlY2tfb3duZXIuaXNfc29tZSgpYC4gdHJhbnNmZXIMAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAABEGRlc3QAAVBBY2NvdW50SWRMb29rdXBPZjxUPgAFRMBNb3ZlIGFuIGl0ZW0gZnJvbSB0aGUgc2VuZGVyIGFjY291bnQgdG8gYW5vdGhlci4AtFRoaXMgcmVzZXRzIHRoZSBhcHByb3ZlZCBhY2NvdW50IG9mIHRoZSBpdGVtLgD0T3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2lnbmluZyBhY2NvdW50IG11c3QgYmUgZWl0aGVyOoAtIHRoZSBBZG1pbiBvZiB0aGUgYGNvbGxlY3Rpb25gO2gtIHRoZSBPd25lciBvZiB0aGUgYGl0ZW1gOzUBLSB0aGUgYXBwcm92ZWQgZGVsZWdhdGUgZm9yIHRoZSBgaXRlbWAgKGluIHRoaXMgY2FzZSwgdGhlIGFwcHJvdmFsIGlzIHJlc2V0KS4AKEFyZ3VtZW50czr0LSBgY29sbGVjdGlvbmA6IFRoZSBjb2xsZWN0aW9uIG9mIHRoZSBpdGVtIHRvIGJlIHRyYW5zZmVycmVkLsQtIGBpdGVtYDogVGhlIGl0ZW0gb2YgdGhlIGl0ZW0gdG8gYmUgdHJhbnNmZXJyZWQu3C0gYGRlc3RgOiBUaGUgYWNjb3VudCB0byByZWNlaXZlIG93bmVyc2hpcCBvZiB0aGUgaXRlbS4AUEVtaXRzIGBUcmFuc2ZlcnJlZGAuADhXZWlnaHQ6IGBPKDEpYCRyZWRlcG9zaXQIAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEUaXRlbXNVBAE4VmVjPFQ6Okl0ZW1JZD4ABkSYUmVldmFsdWF0ZSB0aGUgZGVwb3NpdHMgb24gc29tZSBpdGVtcy4ANQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBPd25lciBvZiB0aGUgYGNvbGxlY3Rpb25gLgCwLSBgY29sbGVjdGlvbmA6IFRoZSBjb2xsZWN0aW9uIHRvIGJlIGZyb3plbi4pAS0gYGl0ZW1zYDogVGhlIGl0ZW1zIG9mIHRoZSBjb2xsZWN0aW9uIHdob3NlIGRlcG9zaXRzIHdpbGwgYmUgcmVldmFsdWF0ZWQuAC0BTk9URTogVGhpcyBleGlzdHMgYXMgYSBiZXN0LWVmZm9ydCBmdW5jdGlvbi4gQW55IGl0ZW1zIHdoaWNoIGFyZSB1bmtub3duIG9yOQFpbiB0aGUgY2FzZSB0aGF0IHRoZSBvd25lciBhY2NvdW50IGRvZXMgbm90IGhhdmUgcmVzZXJ2YWJsZSBmdW5kcyB0byBwYXkgZm9yIGFNAWRlcG9zaXQgaW5jcmVhc2UgYXJlIGlnbm9yZWQuIEdlbmVyYWxseSB0aGUgb3duZXIgaXNuJ3QgZ29pbmcgdG8gY2FsbCB0aGlzIG9uIGl0ZW1zVQF3aG9zZSBleGlzdGluZyBkZXBvc2l0IGlzIGxlc3MgdGhhbiB0aGUgcmVmcmVzaGVkIGRlcG9zaXQgYXMgaXQgd291bGQgb25seSBjb3N0IHRoZW0seHNvIGl0J3Mgb2YgbGl0dGxlIGNvbnNlcXVlbmNlLgBZAUl0IHdpbGwgc3RpbGwgcmV0dXJuIGFuIGVycm9yIGluIHRoZSBjYXNlIHRoYXQgdGhlIGNvbGxlY3Rpb24gaXMgdW5rbm93biBvZiB0aGUgc2lnbmVycGlzIG5vdCBwZXJtaXR0ZWQgdG8gY2FsbCBpdC4AYFdlaWdodDogYE8oaXRlbXMubGVuKCkpYBhmcmVlemUIAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAAHKMhEaXNhbGxvdyBmdXJ0aGVyIHVucHJpdmlsZWdlZCB0cmFuc2ZlciBvZiBhbiBpdGVtLgA9AU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEZyZWV6ZXIgb2YgdGhlIGBjb2xsZWN0aW9uYC4A4C0gYGNvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiBvZiB0aGUgaXRlbSB0byBiZSBmcm96ZW4usC0gYGl0ZW1gOiBUaGUgaXRlbSBvZiB0aGUgaXRlbSB0byBiZSBmcm96ZW4uADxFbWl0cyBgRnJvemVuYC4AOFdlaWdodDogYE8oMSlgEHRoYXcIAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAAIKKhSZS1hbGxvdyB1bnByaXZpbGVnZWQgdHJhbnNmZXIgb2YgYW4gaXRlbS4APQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBGcmVlemVyIG9mIHRoZSBgY29sbGVjdGlvbmAuAOAtIGBjb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gb2YgdGhlIGl0ZW0gdG8gYmUgdGhhd2VkLrAtIGBpdGVtYDogVGhlIGl0ZW0gb2YgdGhlIGl0ZW0gdG8gYmUgdGhhd2VkLgA8RW1pdHMgYFRoYXdlZGAuADhXZWlnaHQ6IGBPKDEpYERmcmVlemVfY29sbGVjdGlvbgQBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQACST8RGlzYWxsb3cgZnVydGhlciB1bnByaXZpbGVnZWQgdHJhbnNmZXJzIGZvciBhIHdob2xlIGNvbGxlY3Rpb24uAD0BT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgRnJlZXplciBvZiB0aGUgYGNvbGxlY3Rpb25gLgCwLSBgY29sbGVjdGlvbmA6IFRoZSBjb2xsZWN0aW9uIHRvIGJlIGZyb3plbi4AZEVtaXRzIGBDb2xsZWN0aW9uRnJvemVuYC4AOFdlaWdodDogYE8oMSlgPHRoYXdfY29sbGVjdGlvbgQBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQACiTcUmUtYWxsb3cgdW5wcml2aWxlZ2VkIHRyYW5zZmVycyBmb3IgYSB3aG9sZSBjb2xsZWN0aW9uLgA1AU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEFkbWluIG9mIHRoZSBgY29sbGVjdGlvbmAuALAtIGBjb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gdG8gYmUgdGhhd2VkLgBkRW1pdHMgYENvbGxlY3Rpb25UaGF3ZWRgLgA4V2VpZ2h0OiBgTygxKWBIdHJhbnNmZXJfb3duZXJzaGlwCAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABJG5ld19vd25lcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAsshENoYW5nZSB0aGUgT3duZXIgb2YgYSBjb2xsZWN0aW9uLgA1AU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIE93bmVyIG9mIHRoZSBgY29sbGVjdGlvbmAuAPQtIGBjb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gd2hvc2Ugb3duZXIgc2hvdWxkIGJlIGNoYW5nZWQuCQEtIGBvd25lcmA6IFRoZSBuZXcgT3duZXIgb2YgdGhpcyBjb2xsZWN0aW9uLiBUaGV5IG11c3QgaGF2ZSBjYWxsZWRJASAgYHNldF9hY2NlcHRfb3duZXJzaGlwYCB3aXRoIGBjb2xsZWN0aW9uYCBpbiBvcmRlciBmb3IgdGhpcyBvcGVyYXRpb24gdG8gc3VjY2VlZC4AVEVtaXRzIGBPd25lckNoYW5nZWRgLgA4V2VpZ2h0OiBgTygxKWAgc2V0X3RlYW0QAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEYaXNzdWVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARRhZG1pbgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEcZnJlZXplcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAww1ENoYW5nZSB0aGUgSXNzdWVyLCBBZG1pbiBhbmQgRnJlZXplciBvZiBhIGNvbGxlY3Rpb24uADUBT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgT3duZXIgb2YgdGhlIGBjb2xsZWN0aW9uYC4A8C0gYGNvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiB3aG9zZSB0ZWFtIHNob3VsZCBiZSBjaGFuZ2VkLrgtIGBpc3N1ZXJgOiBUaGUgbmV3IElzc3VlciBvZiB0aGlzIGNvbGxlY3Rpb24usC0gYGFkbWluYDogVGhlIG5ldyBBZG1pbiBvZiB0aGlzIGNvbGxlY3Rpb24uwC0gYGZyZWV6ZXJgOiBUaGUgbmV3IEZyZWV6ZXIgb2YgdGhpcyBjb2xsZWN0aW9uLgBQRW1pdHMgYFRlYW1DaGFuZ2VkYC4AOFdlaWdodDogYE8oMSlgQGFwcHJvdmVfdHJhbnNmZXIMAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAABIGRlbGVnYXRlAAFQQWNjb3VudElkTG9va3VwT2Y8VD4ADTgVAUFwcHJvdmUgYW4gaXRlbSB0byBiZSB0cmFuc2ZlcnJlZCBieSBhIGRlbGVnYXRlZCB0aGlyZC1wYXJ0eSBhY2NvdW50LgBNAVRoZSBvcmlnaW4gbXVzdCBjb25mb3JtIHRvIGBGb3JjZU9yaWdpbmAgb3IgbXVzdCBiZSBgU2lnbmVkYCBhbmQgdGhlIHNlbmRlciBtdXN0IGJl+GVpdGhlciB0aGUgb3duZXIgb2YgdGhlIGBpdGVtYCBvciB0aGUgYWRtaW4gb2YgdGhlIGNvbGxlY3Rpb24uAEUBLSBgY29sbGVjdGlvbmA6IFRoZSBjb2xsZWN0aW9uIG9mIHRoZSBpdGVtIHRvIGJlIGFwcHJvdmVkIGZvciBkZWxlZ2F0ZWQgdHJhbnNmZXIuFQEtIGBpdGVtYDogVGhlIGl0ZW0gb2YgdGhlIGl0ZW0gdG8gYmUgYXBwcm92ZWQgZm9yIGRlbGVnYXRlZCB0cmFuc2Zlci4ZAS0gYGRlbGVnYXRlYDogVGhlIGFjY291bnQgdG8gZGVsZWdhdGUgcGVybWlzc2lvbiB0byB0cmFuc2ZlciB0aGUgaXRlbS4AGQFJbXBvcnRhbnQgTk9URTogVGhlIGBhcHByb3ZlZGAgYWNjb3VudCBnZXRzIHJlc2V0IGFmdGVyIGVhY2ggdHJhbnNmZXIuAJBFbWl0cyBgQXBwcm92ZWRUcmFuc2ZlcmAgb24gc3VjY2Vzcy4AOFdlaWdodDogYE8oMSlgPGNhbmNlbF9hcHByb3ZhbAwBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAFQbWF5YmVfY2hlY2tfZGVsZWdhdGVRBAFwT3B0aW9uPEFjY291bnRJZExvb2t1cE9mPFQ+PgAOQBEBQ2FuY2VsIHRoZSBwcmlvciBhcHByb3ZhbCBmb3IgdGhlIHRyYW5zZmVyIG9mIGFuIGl0ZW0gYnkgYSBkZWxlZ2F0ZS4AWE9yaWdpbiBtdXN0IGJlIGVpdGhlcjpULSB0aGUgYEZvcmNlYCBvcmlnaW47/C0gYFNpZ25lZGAgd2l0aCB0aGUgc2lnbmVyIGJlaW5nIHRoZSBBZG1pbiBvZiB0aGUgYGNvbGxlY3Rpb25gO+QtIGBTaWduZWRgIHdpdGggdGhlIHNpZ25lciBiZWluZyB0aGUgT3duZXIgb2YgdGhlIGBpdGVtYDsAKEFyZ3VtZW50czo9AS0gYGNvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiBvZiB0aGUgaXRlbSBvZiB3aG9zZSBhcHByb3ZhbCB3aWxsIGJlIGNhbmNlbGxlZC4NAS0gYGl0ZW1gOiBUaGUgaXRlbSBvZiB0aGUgaXRlbSBvZiB3aG9zZSBhcHByb3ZhbCB3aWxsIGJlIGNhbmNlbGxlZC5RAS0gYG1heWJlX2NoZWNrX2RlbGVnYXRlYDogSWYgYFNvbWVgIHdpbGwgZW5zdXJlIHRoYXQgdGhlIGdpdmVuIGFjY291bnQgaXMgdGhlIG9uZSB0b7AgIHdoaWNoIHBlcm1pc3Npb24gb2YgdHJhbnNmZXIgaXMgZGVsZWdhdGVkLgCURW1pdHMgYEFwcHJvdmFsQ2FuY2VsbGVkYCBvbiBzdWNjZXNzLgA4V2VpZ2h0OiBgTygxKWBEZm9yY2VfaXRlbV9zdGF0dXMcAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEUb3duZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGlzc3VlcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEUYWRtaW4AAVBBY2NvdW50SWRMb29rdXBPZjxUPgABHGZyZWV6ZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABMGZyZWVfaG9sZGluZ5kBARBib29sAAEkaXNfZnJvemVumQEBEGJvb2wAD0CUQWx0ZXIgdGhlIGF0dHJpYnV0ZXMgb2YgYSBnaXZlbiBpdGVtLgB0T3JpZ2luIG11c3QgYmUgYEZvcmNlT3JpZ2luYC4ArC0gYGNvbGxlY3Rpb25gOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgaXRlbS6YLSBgb3duZXJgOiBUaGUgbmV3IE93bmVyIG9mIHRoaXMgaXRlbS6gLSBgaXNzdWVyYDogVGhlIG5ldyBJc3N1ZXIgb2YgdGhpcyBpdGVtLpgtIGBhZG1pbmA6IFRoZSBuZXcgQWRtaW4gb2YgdGhpcyBpdGVtLqgtIGBmcmVlemVyYDogVGhlIG5ldyBGcmVlemVyIG9mIHRoaXMgaXRlbS5RAS0gYGZyZWVfaG9sZGluZ2A6IFdoZXRoZXIgYSBkZXBvc2l0IGlzIHRha2VuIGZvciBob2xkaW5nIGFuIGl0ZW0gb2YgdGhpcyBjb2xsZWN0aW9uLjkBLSBgaXNfZnJvemVuYDogV2hldGhlciB0aGlzIGNvbGxlY3Rpb24gaXMgZnJvemVuIGV4Y2VwdCBmb3IgcGVybWlzc2lvbmVkL2FkbWluNGluc3RydWN0aW9ucy4A4EVtaXRzIGBJdGVtU3RhdHVzQ2hhbmdlZGAgd2l0aCB0aGUgaWRlbnRpdHkgb2YgdGhlIGl0ZW0uADhXZWlnaHQ6IGBPKDEpYDRzZXRfYXR0cmlidXRlEAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABKG1heWJlX2l0ZW3YAURPcHRpb248VDo6SXRlbUlkPgABDGtleVkEAWxCb3VuZGVkVmVjPHU4LCBUOjpLZXlMaW1pdD4AARR2YWx1ZXwBdEJvdW5kZWRWZWM8dTgsIFQ6OlZhbHVlTGltaXQ+ABBEqFNldCBhbiBhdHRyaWJ1dGUgZm9yIGEgY29sbGVjdGlvbiBvciBpdGVtLgBdAU9yaWdpbiBtdXN0IGJlIGVpdGhlciBgRm9yY2VPcmlnaW5gIG9yIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIE93bmVyIG9mIHRoZTRgY29sbGVjdGlvbmAuAFEBSWYgdGhlIG9yaWdpbiBpcyBTaWduZWQsIHRoZW4gZnVuZHMgb2Ygc2lnbmVyIGFyZSByZXNlcnZlZCBhY2NvcmRpbmcgdG8gdGhlIGZvcm11bGE6KQFgTWV0YWRhdGFEZXBvc2l0QmFzZSArIERlcG9zaXRQZXJCeXRlICogKGtleS5sZW4gKyB2YWx1ZS5sZW4pYCB0YWtpbmcgaW50b4xhY2NvdW50IGFueSBhbHJlYWR5IHJlc2VydmVkIGZ1bmRzLgA5AS0gYGNvbGxlY3Rpb25gOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgY29sbGVjdGlvbiB3aG9zZSBpdGVtJ3MgbWV0YWRhdGEgdG8gc2V0LgUBLSBgbWF5YmVfaXRlbWA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBpdGVtIHdob3NlIG1ldGFkYXRhIHRvIHNldC6ILSBga2V5YDogVGhlIGtleSBvZiB0aGUgYXR0cmlidXRlLswtIGB2YWx1ZWA6IFRoZSB2YWx1ZSB0byB3aGljaCB0byBzZXQgdGhlIGF0dHJpYnV0ZS4AVEVtaXRzIGBBdHRyaWJ1dGVTZXRgLgA4V2VpZ2h0OiBgTygxKWA8Y2xlYXJfYXR0cmlidXRlDAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABKG1heWJlX2l0ZW3YAURPcHRpb248VDo6SXRlbUlkPgABDGtleVkEAWxCb3VuZGVkVmVjPHU4LCBUOjpLZXlMaW1pdD4AETiwQ2xlYXIgYW4gYXR0cmlidXRlIGZvciBhIGNvbGxlY3Rpb24gb3IgaXRlbS4AXQFPcmlnaW4gbXVzdCBiZSBlaXRoZXIgYEZvcmNlT3JpZ2luYCBvciBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBPd25lciBvZiB0aGU0YGNvbGxlY3Rpb25gLgDAQW55IGRlcG9zaXQgaXMgZnJlZWQgZm9yIHRoZSBjb2xsZWN0aW9uJ3Mgb3duZXIuAEEBLSBgY29sbGVjdGlvbmA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBjb2xsZWN0aW9uIHdob3NlIGl0ZW0ncyBtZXRhZGF0YSB0byBjbGVhci4NAS0gYG1heWJlX2l0ZW1gOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgaXRlbSB3aG9zZSBtZXRhZGF0YSB0byBjbGVhci6ILSBga2V5YDogVGhlIGtleSBvZiB0aGUgYXR0cmlidXRlLgBkRW1pdHMgYEF0dHJpYnV0ZUNsZWFyZWRgLgA4V2VpZ2h0OiBgTygxKWAwc2V0X21ldGFkYXRhEAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAARBkYXRhXQQBeEJvdW5kZWRWZWM8dTgsIFQ6OlN0cmluZ0xpbWl0PgABJGlzX2Zyb3plbpkBARBib29sABJEdFNldCB0aGUgbWV0YWRhdGEgZm9yIGFuIGl0ZW0uAF0BT3JpZ2luIG11c3QgYmUgZWl0aGVyIGBGb3JjZU9yaWdpbmAgb3IgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgT3duZXIgb2YgdGhlNGBjb2xsZWN0aW9uYC4AUQFJZiB0aGUgb3JpZ2luIGlzIFNpZ25lZCwgdGhlbiBmdW5kcyBvZiBzaWduZXIgYXJlIHJlc2VydmVkIGFjY29yZGluZyB0byB0aGUgZm9ybXVsYTr0YE1ldGFkYXRhRGVwb3NpdEJhc2UgKyBEZXBvc2l0UGVyQnl0ZSAqIGRhdGEubGVuYCB0YWtpbmcgaW50b4xhY2NvdW50IGFueSBhbHJlYWR5IHJlc2VydmVkIGZ1bmRzLgA5AS0gYGNvbGxlY3Rpb25gOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgY29sbGVjdGlvbiB3aG9zZSBpdGVtJ3MgbWV0YWRhdGEgdG8gc2V0LuwtIGBpdGVtYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGl0ZW0gd2hvc2UgbWV0YWRhdGEgdG8gc2V0Lk0BLSBgZGF0YWA6IFRoZSBnZW5lcmFsIGluZm9ybWF0aW9uIG9mIHRoaXMgaXRlbS4gTGltaXRlZCBpbiBsZW5ndGggYnkgYFN0cmluZ0xpbWl0YC41AS0gYGlzX2Zyb3plbmA6IFdoZXRoZXIgdGhlIG1ldGFkYXRhIHNob3VsZCBiZSBmcm96ZW4gYWdhaW5zdCBmdXJ0aGVyIGNoYW5nZXMuAFBFbWl0cyBgTWV0YWRhdGFTZXRgLgA4V2VpZ2h0OiBgTygxKWA4Y2xlYXJfbWV0YWRhdGEIAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAATNHxDbGVhciB0aGUgbWV0YWRhdGEgZm9yIGFuIGl0ZW0uAF0BT3JpZ2luIG11c3QgYmUgZWl0aGVyIGBGb3JjZU9yaWdpbmAgb3IgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgT3duZXIgb2YgdGhlHGBpdGVtYC4AwEFueSBkZXBvc2l0IGlzIGZyZWVkIGZvciB0aGUgY29sbGVjdGlvbidzIG93bmVyLgBBAS0gYGNvbGxlY3Rpb25gOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgY29sbGVjdGlvbiB3aG9zZSBpdGVtJ3MgbWV0YWRhdGEgdG8gY2xlYXIu9C0gYGl0ZW1gOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgaXRlbSB3aG9zZSBtZXRhZGF0YSB0byBjbGVhci4AYEVtaXRzIGBNZXRhZGF0YUNsZWFyZWRgLgA4V2VpZ2h0OiBgTygxKWBcc2V0X2NvbGxlY3Rpb25fbWV0YWRhdGEMAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQZGF0YV0EAXhCb3VuZGVkVmVjPHU4LCBUOjpTdHJpbmdMaW1pdD4AASRpc19mcm96ZW6ZAQEQYm9vbAAUQIhTZXQgdGhlIG1ldGFkYXRhIGZvciBhIGNvbGxlY3Rpb24uAFUBT3JpZ2luIG11c3QgYmUgZWl0aGVyIGBGb3JjZU9yaWdpbmAgb3IgYFNpZ25lZGAgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBPd25lciBvZkR0aGUgYGNvbGxlY3Rpb25gLgBZAUlmIHRoZSBvcmlnaW4gaXMgYFNpZ25lZGAsIHRoZW4gZnVuZHMgb2Ygc2lnbmVyIGFyZSByZXNlcnZlZCBhY2NvcmRpbmcgdG8gdGhlIGZvcm11bGE69GBNZXRhZGF0YURlcG9zaXRCYXNlICsgRGVwb3NpdFBlckJ5dGUgKiBkYXRhLmxlbmAgdGFraW5nIGludG+MYWNjb3VudCBhbnkgYWxyZWFkeSByZXNlcnZlZCBmdW5kcy4AEQEtIGBjb2xsZWN0aW9uYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGl0ZW0gd2hvc2UgbWV0YWRhdGEgdG8gdXBkYXRlLk0BLSBgZGF0YWA6IFRoZSBnZW5lcmFsIGluZm9ybWF0aW9uIG9mIHRoaXMgaXRlbS4gTGltaXRlZCBpbiBsZW5ndGggYnkgYFN0cmluZ0xpbWl0YC41AS0gYGlzX2Zyb3plbmA6IFdoZXRoZXIgdGhlIG1ldGFkYXRhIHNob3VsZCBiZSBmcm96ZW4gYWdhaW5zdCBmdXJ0aGVyIGNoYW5nZXMuAHhFbWl0cyBgQ29sbGVjdGlvbk1ldGFkYXRhU2V0YC4AOFdlaWdodDogYE8oMSlgZGNsZWFyX2NvbGxlY3Rpb25fbWV0YWRhdGEEAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkABUwkENsZWFyIHRoZSBtZXRhZGF0YSBmb3IgYSBjb2xsZWN0aW9uLgBVAU9yaWdpbiBtdXN0IGJlIGVpdGhlciBgRm9yY2VPcmlnaW5gIG9yIGBTaWduZWRgIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgT3duZXIgb2ZEdGhlIGBjb2xsZWN0aW9uYC4AwEFueSBkZXBvc2l0IGlzIGZyZWVkIGZvciB0aGUgY29sbGVjdGlvbidzIG93bmVyLgAlAS0gYGNvbGxlY3Rpb25gOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgY29sbGVjdGlvbiB3aG9zZSBtZXRhZGF0YSB0byBjbGVhci4AiEVtaXRzIGBDb2xsZWN0aW9uTWV0YWRhdGFDbGVhcmVkYC4AOFdlaWdodDogYE8oMSlgUHNldF9hY2NlcHRfb3duZXJzaGlwBAFAbWF5YmVfY29sbGVjdGlvbtgBXE9wdGlvbjxUOjpDb2xsZWN0aW9uSWQ+ABYoEQFTZXQgKG9yIHJlc2V0KSB0aGUgYWNjZXB0YW5jZSBvZiBvd25lcnNoaXAgZm9yIGEgcGFydGljdWxhciBhY2NvdW50LgBhAU9yaWdpbiBtdXN0IGJlIGBTaWduZWRgIGFuZCBpZiBgbWF5YmVfY29sbGVjdGlvbmAgaXMgYFNvbWVgLCB0aGVuIHRoZSBzaWduZXIgbXVzdCBoYXZlIGFMcHJvdmlkZXIgcmVmZXJlbmNlLgBRAS0gYG1heWJlX2NvbGxlY3Rpb25gOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgY29sbGVjdGlvbiB3aG9zZSBvd25lcnNoaXAgdGhlIHNpZ25lciBpc2EBICB3aWxsaW5nIHRvIGFjY2VwdCwgb3IgaWYgYE5vbmVgLCBhbiBpbmRpY2F0aW9uIHRoYXQgdGhlIHNpZ25lciBpcyB3aWxsaW5nIHRvIGFjY2VwdCBub1wgIG93bmVyc2hpcCB0cmFuc2ZlcmFsLgCMRW1pdHMgYE93bmVyc2hpcEFjY2VwdGFuY2VDaGFuZ2VkYC5kc2V0X2NvbGxlY3Rpb25fbWF4X3N1cHBseQgBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAAShtYXhfc3VwcGx5OAEMdTMyABcs4FNldCB0aGUgbWF4aW11bSBhbW91bnQgb2YgaXRlbXMgYSBjb2xsZWN0aW9uIGNvdWxkIGhhdmUuAFUBT3JpZ2luIG11c3QgYmUgZWl0aGVyIGBGb3JjZU9yaWdpbmAgb3IgYFNpZ25lZGAgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBPd25lciBvZkR0aGUgYGNvbGxlY3Rpb25gLgDkTm90ZTogVGhpcyBmdW5jdGlvbiBjYW4gb25seSBzdWNjZWVkIG9uY2UgcGVyIGNvbGxlY3Rpb24uAOwtIGBjb2xsZWN0aW9uYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGNvbGxlY3Rpb24gdG8gY2hhbmdlLhEBLSBgbWF4X3N1cHBseWA6IFRoZSBtYXhpbXVtIGFtb3VudCBvZiBpdGVtcyBhIGNvbGxlY3Rpb24gY291bGQgaGF2ZS4A1EVtaXRzIGBDb2xsZWN0aW9uTWF4U3VwcGx5U2V0YCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuJHNldF9wcmljZRABKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAEUcHJpY2VhBAFcT3B0aW9uPEl0ZW1QcmljZTxULCBJPj4AAUR3aGl0ZWxpc3RlZF9idXllclEEAXBPcHRpb248QWNjb3VudElkTG9va3VwT2Y8VD4+ABgslFNldCAob3IgcmVzZXQpIHRoZSBwcmljZSBmb3IgYW4gaXRlbS4AAQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIG11c3QgYmUgdGhlIG93bmVyIG9mIHRoZSBhc3NldCBgaXRlbWAuAKwtIGBjb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gb2YgdGhlIGl0ZW0uoC0gYGl0ZW1gOiBUaGUgaXRlbSB0byBzZXQgdGhlIHByaWNlIGZvci4NAS0gYHByaWNlYDogVGhlIHByaWNlIGZvciB0aGUgaXRlbS4gUGFzcyBgTm9uZWAsIHRvIHJlc2V0IHRoZSBwcmljZS70LSBgYnV5ZXJgOiBSZXN0cmljdHMgdGhlIGJ1eSBvcGVyYXRpb24gdG8gYSBzcGVjaWZpYyBhY2NvdW50LgDsRW1pdHMgYEl0ZW1QcmljZVNldGAgb24gc3VjY2VzcyBpZiB0aGUgcHJpY2UgaXMgbm90IGBOb25lYC7sRW1pdHMgYEl0ZW1QcmljZVJlbW92ZWRgIG9uIHN1Y2Nlc3MgaWYgdGhlIHByaWNlIGlzIGBOb25lYC4gYnV5X2l0ZW0MAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAABJGJpZF9wcmljZZUBATxJdGVtUHJpY2U8VCwgST4AGSSoQWxsb3dzIHRvIGJ1eSBhbiBpdGVtIGlmIGl0J3MgdXAgZm9yIHNhbGUuAPhPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIG11c3Qgbm90IGJlIHRoZSBvd25lciBvZiB0aGUgYGl0ZW1gLgCsLSBgY29sbGVjdGlvbmA6IFRoZSBjb2xsZWN0aW9uIG9mIHRoZSBpdGVtLqwtIGBpdGVtYDogVGhlIGl0ZW0gdGhlIHNlbmRlciB3YW50cyB0byBidXku2C0gYGJpZF9wcmljZWA6IFRoZSBwcmljZSB0aGUgc2VuZGVyIGlzIHdpbGxpbmcgdG8gcGF5LgB4RW1pdHMgYEl0ZW1Cb3VnaHRgIG9uIHN1Y2Nlc3MuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLk0EDDhwYWxsZXRfdW5pcXVlcxR0eXBlczhEZXN0cm95V2l0bmVzcwAADAEUaXRlbXNkAQx1MzIAAThpdGVtX21ldGFkYXRhc2QBDHUzMgABKGF0dHJpYnV0ZXNkAQx1MzIAAFEEBBhPcHRpb24EBFQBAAEIEE5vbmUAAAAQU29tZQQAAAAAAQAAVQQAAAI4AFkEDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBDARTAAAEABgBGFZlYzxUPgAAXQQMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AABhBAQYT3B0aW9uBARUAZUBAQgQTm9uZQAAABBTb21lBACVAQAAAQAAZQQMLHBhbGxldF9uZnRzGHBhbGxldBBDYWxsCARUAARJAAGcGGNyZWF0ZQgBFGFkbWluAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARhjb25maWdpBAFkQ29sbGVjdGlvbkNvbmZpZ0ZvcjxULCBJPgAAPAkBSXNzdWUgYSBuZXcgY29sbGVjdGlvbiBvZiBub24tZnVuZ2libGUgaXRlbXMgZnJvbSBhIHB1YmxpYyBvcmlnaW4uAB0BVGhpcyBuZXcgY29sbGVjdGlvbiBoYXMgbm8gaXRlbXMgaW5pdGlhbGx5IGFuZCBpdHMgb3duZXIgaXMgdGhlIG9yaWdpbi4AJQFUaGUgb3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIG11c3QgaGF2ZSBzdWZmaWNpZW50IGZ1bmRzIGZyZWUuAMRgQ29sbGVjdGlvbkRlcG9zaXRgIGZ1bmRzIG9mIHNlbmRlciBhcmUgcmVzZXJ2ZWQuACxQYXJhbWV0ZXJzOkUBLSBgYWRtaW5gOiBUaGUgYWRtaW4gb2YgdGhpcyBjb2xsZWN0aW9uLiBUaGUgYWRtaW4gaXMgdGhlIGluaXRpYWwgYWRkcmVzcyBvZiBlYWNomG1lbWJlciBvZiB0aGUgY29sbGVjdGlvbidzIGFkbWluIHRlYW0uAJhFbWl0cyBgQ3JlYXRlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLgA4V2VpZ2h0OiBgTygxKWAwZm9yY2VfY3JlYXRlCAEUb3duZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGNvbmZpZ2kEAWRDb2xsZWN0aW9uQ29uZmlnRm9yPFQsIEk+AAE8GQFJc3N1ZSBhIG5ldyBjb2xsZWN0aW9uIG9mIG5vbi1mdW5naWJsZSBpdGVtcyBmcm9tIGEgcHJpdmlsZWdlZCBvcmlnaW4uAKxUaGlzIG5ldyBjb2xsZWN0aW9uIGhhcyBubyBpdGVtcyBpbml0aWFsbHkuAKRUaGUgb3JpZ2luIG11c3QgY29uZm9ybSB0byBgRm9yY2VPcmlnaW5gLgCcVW5saWtlIGBjcmVhdGVgLCBubyBmdW5kcyBhcmUgcmVzZXJ2ZWQuADkBLSBgb3duZXJgOiBUaGUgb3duZXIgb2YgdGhpcyBjb2xsZWN0aW9uIG9mIGl0ZW1zLiBUaGUgb3duZXIgaGFzIGZ1bGwgc3VwZXJ1c2VyWQEgIHBlcm1pc3Npb25zIG92ZXIgdGhpcyBpdGVtLCBidXQgbWF5IGxhdGVyIGNoYW5nZSBhbmQgY29uZmlndXJlIHRoZSBwZXJtaXNzaW9ucyB1c2luZ5ggIGB0cmFuc2Zlcl9vd25lcnNoaXBgIGFuZCBgc2V0X3RlYW1gLgCsRW1pdHMgYEZvcmNlQ3JlYXRlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLgA4V2VpZ2h0OiBgTygxKWAcZGVzdHJveQgBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARx3aXRuZXNzhQQBOERlc3Ryb3lXaXRuZXNzAAJEnERlc3Ryb3kgYSBjb2xsZWN0aW9uIG9mIGZ1bmdpYmxlIGl0ZW1zLgBdAVRoZSBvcmlnaW4gbXVzdCBjb25mb3JtIHRvIGBGb3JjZU9yaWdpbmAgb3IgbXVzdCBiZSBgU2lnbmVkYCBhbmQgdGhlIHNlbmRlciBtdXN0IGJlIHRoZWhvd25lciBvZiB0aGUgYGNvbGxlY3Rpb25gLgDcTk9URTogVGhlIGNvbGxlY3Rpb24gbXVzdCBoYXZlIDAgaXRlbXMgdG8gYmUgZGVzdHJveWVkLgAFAS0gYGNvbGxlY3Rpb25gOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgY29sbGVjdGlvbiB0byBiZSBkZXN0cm95ZWQuMQEtIGB3aXRuZXNzYDogSW5mb3JtYXRpb24gb24gdGhlIGl0ZW1zIG1pbnRlZCBpbiB0aGUgY29sbGVjdGlvbi4gVGhpcyBtdXN0IGJlIGNvcnJlY3QuAKBFbWl0cyBgRGVzdHJveWVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuAHRXZWlnaHQ6IGBPKG0gKyBjICsgYSlgIHdoZXJlOngtIGBtID0gd2l0bmVzcy5pdGVtX21ldGFkYXRhc2BwLSBgYyA9IHdpdG5lc3MuaXRlbV9jb25maWdzYGgtIGBhID0gd2l0bmVzcy5hdHRyaWJ1dGVzYBBtaW50EAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAARxtaW50X3RvAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AATB3aXRuZXNzX2RhdGGJBAHYT3B0aW9uPE1pbnRXaXRuZXNzPFQ6Okl0ZW1JZCwgRGVwb3NpdEJhbGFuY2VPZjxULCBJPj4+AANAoE1pbnQgYW4gaXRlbSBvZiBhIHBhcnRpY3VsYXIgY29sbGVjdGlvbi4AUQFUaGUgb3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIG11c3QgY29tcGx5IHdpdGggdGhlIGBtaW50X3NldHRpbmdzYCBydWxlcy4A4C0gYGNvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiBvZiB0aGUgaXRlbSB0byBiZSBtaW50ZWQuoC0gYGl0ZW1gOiBBbiBpZGVudGlmaWVyIG9mIHRoZSBuZXcgaXRlbS7gLSBgbWludF90b2A6IEFjY291bnQgaW50byB3aGljaCB0aGUgaXRlbSB3aWxsIGJlIG1pbnRlZC5FAS0gYHdpdG5lc3NfZGF0YWA6IFdoZW4gdGhlIG1pbnQgdHlwZSBpcyBgSG9sZGVyT2YoY29sbGVjdGlvbl9pZClgLCB0aGVuIHRoZSBvd25lZFkBICBpdGVtX2lkIGZyb20gdGhhdCBjb2xsZWN0aW9uIG5lZWRzIHRvIGJlIHByb3ZpZGVkIHdpdGhpbiB0aGUgd2l0bmVzcyBkYXRhIG9iamVjdC4gSWZhASAgdGhlIG1pbnQgcHJpY2UgaXMgc2V0LCB0aGVuIGl0IHNob3VsZCBiZSBhZGRpdGlvbmFsbHkgY29uZmlybWVkIGluIHRoZSBgd2l0bmVzc19kYXRhYC4AUQFOb3RlOiB0aGUgZGVwb3NpdCB3aWxsIGJlIHRha2VuIGZyb20gdGhlIGBvcmlnaW5gIGFuZCBub3QgdGhlIGBvd25lcmAgb2YgdGhlIGBpdGVtYC4AlEVtaXRzIGBJc3N1ZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4AOFdlaWdodDogYE8oMSlgKGZvcmNlX21pbnQQAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAABHG1pbnRfdG8AAVBBY2NvdW50SWRMb29rdXBPZjxUPgABLGl0ZW1fY29uZmlnkQQBKEl0ZW1Db25maWcABDQFAU1pbnQgYW4gaXRlbSBvZiBhIHBhcnRpY3VsYXIgY29sbGVjdGlvbiBmcm9tIGEgcHJpdmlsZWdlZCBvcmlnaW4uAF0BVGhlIG9yaWdpbiBtdXN0IGNvbmZvcm0gdG8gYEZvcmNlT3JpZ2luYCBvciBtdXN0IGJlIGBTaWduZWRgIGFuZCB0aGUgc2VuZGVyIG11c3QgYmUgdGhlbElzc3VlciBvZiB0aGUgYGNvbGxlY3Rpb25gLgDgLSBgY29sbGVjdGlvbmA6IFRoZSBjb2xsZWN0aW9uIG9mIHRoZSBpdGVtIHRvIGJlIG1pbnRlZC6gLSBgaXRlbWA6IEFuIGlkZW50aWZpZXIgb2YgdGhlIG5ldyBpdGVtLuAtIGBtaW50X3RvYDogQWNjb3VudCBpbnRvIHdoaWNoIHRoZSBpdGVtIHdpbGwgYmUgbWludGVkLqgtIGBpdGVtX2NvbmZpZ2A6IEEgY29uZmlnIG9mIHRoZSBuZXcgaXRlbS4AlEVtaXRzIGBJc3N1ZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4AOFdlaWdodDogYE8oMSlgEGJ1cm4IAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAAFLFhEZXN0cm95IGEgc2luZ2xlIGl0ZW0uAF0BVGhlIG9yaWdpbiBtdXN0IGNvbmZvcm0gdG8gYEZvcmNlT3JpZ2luYCBvciBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNpZ25pbmcgYWNjb3VudCBtdXN0bGJlIHRoZSBvd25lciBvZiB0aGUgYGl0ZW1gLgDgLSBgY29sbGVjdGlvbmA6IFRoZSBjb2xsZWN0aW9uIG9mIHRoZSBpdGVtIHRvIGJlIGJ1cm5lZC6ALSBgaXRlbWA6IFRoZSBpdGVtIHRvIGJlIGJ1cm5lZC4APEVtaXRzIGBCdXJuZWRgLgA4V2VpZ2h0OiBgTygxKWAgdHJhbnNmZXIMAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAABEGRlc3QAAVBBY2NvdW50SWRMb29rdXBPZjxUPgAGOMBNb3ZlIGFuIGl0ZW0gZnJvbSB0aGUgc2VuZGVyIGFjY291bnQgdG8gYW5vdGhlci4A9E9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNpZ25pbmcgYWNjb3VudCBtdXN0IGJlIGVpdGhlcjpoLSB0aGUgT3duZXIgb2YgdGhlIGBpdGVtYDs1AS0gdGhlIGFwcHJvdmVkIGRlbGVnYXRlIGZvciB0aGUgYGl0ZW1gIChpbiB0aGlzIGNhc2UsIHRoZSBhcHByb3ZhbCBpcyByZXNldCkuAChBcmd1bWVudHM69C0gYGNvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiBvZiB0aGUgaXRlbSB0byBiZSB0cmFuc2ZlcnJlZC6ULSBgaXRlbWA6IFRoZSBpdGVtIHRvIGJlIHRyYW5zZmVycmVkLtwtIGBkZXN0YDogVGhlIGFjY291bnQgdG8gcmVjZWl2ZSBvd25lcnNoaXAgb2YgdGhlIGl0ZW0uAFBFbWl0cyBgVHJhbnNmZXJyZWRgLgA4V2VpZ2h0OiBgTygxKWAkcmVkZXBvc2l0CAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABFGl0ZW1zVQQBOFZlYzxUOjpJdGVtSWQ+AAdEnFJlLWV2YWx1YXRlIHRoZSBkZXBvc2l0cyBvbiBzb21lIGl0ZW1zLgA1AU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIE93bmVyIG9mIHRoZSBgY29sbGVjdGlvbmAuAPgtIGBjb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gb2YgdGhlIGl0ZW1zIHRvIGJlIHJlZXZhbHVhdGVkLikBLSBgaXRlbXNgOiBUaGUgaXRlbXMgb2YgdGhlIGNvbGxlY3Rpb24gd2hvc2UgZGVwb3NpdHMgd2lsbCBiZSByZWV2YWx1YXRlZC4ALQFOT1RFOiBUaGlzIGV4aXN0cyBhcyBhIGJlc3QtZWZmb3J0IGZ1bmN0aW9uLiBBbnkgaXRlbXMgd2hpY2ggYXJlIHVua25vd24gb3I5AWluIHRoZSBjYXNlIHRoYXQgdGhlIG93bmVyIGFjY291bnQgZG9lcyBub3QgaGF2ZSByZXNlcnZhYmxlIGZ1bmRzIHRvIHBheSBmb3IgYU0BZGVwb3NpdCBpbmNyZWFzZSBhcmUgaWdub3JlZC4gR2VuZXJhbGx5IHRoZSBvd25lciBpc24ndCBnb2luZyB0byBjYWxsIHRoaXMgb24gaXRlbXNVAXdob3NlIGV4aXN0aW5nIGRlcG9zaXQgaXMgbGVzcyB0aGFuIHRoZSByZWZyZXNoZWQgZGVwb3NpdCBhcyBpdCB3b3VsZCBvbmx5IGNvc3QgdGhlbSx4c28gaXQncyBvZiBsaXR0bGUgY29uc2VxdWVuY2UuAFkBSXQgd2lsbCBzdGlsbCByZXR1cm4gYW4gZXJyb3IgaW4gdGhlIGNhc2UgdGhhdCB0aGUgY29sbGVjdGlvbiBpcyB1bmtub3duIG9yIHRoZSBzaWduZXJwaXMgbm90IHBlcm1pdHRlZCB0byBjYWxsIGl0LgBgV2VpZ2h0OiBgTyhpdGVtcy5sZW4oKSlgSGxvY2tfaXRlbV90cmFuc2ZlcggBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAgoyERpc2FsbG93IGZ1cnRoZXIgdW5wcml2aWxlZ2VkIHRyYW5zZmVyIG9mIGFuIGl0ZW0uAD0BT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgRnJlZXplciBvZiB0aGUgYGNvbGxlY3Rpb25gLgDkLSBgY29sbGVjdGlvbmA6IFRoZSBjb2xsZWN0aW9uIG9mIHRoZSBpdGVtIHRvIGJlIGNoYW5nZWQuuC0gYGl0ZW1gOiBUaGUgaXRlbSB0byBiZWNvbWUgbm9uLXRyYW5zZmVyYWJsZS4AbEVtaXRzIGBJdGVtVHJhbnNmZXJMb2NrZWRgLgA4V2VpZ2h0OiBgTygxKWBQdW5sb2NrX2l0ZW1fdHJhbnNmZXIIAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAAJKKhSZS1hbGxvdyB1bnByaXZpbGVnZWQgdHJhbnNmZXIgb2YgYW4gaXRlbS4APQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBGcmVlemVyIG9mIHRoZSBgY29sbGVjdGlvbmAuAOQtIGBjb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gb2YgdGhlIGl0ZW0gdG8gYmUgY2hhbmdlZC6oLSBgaXRlbWA6IFRoZSBpdGVtIHRvIGJlY29tZSB0cmFuc2ZlcmFibGUuAHRFbWl0cyBgSXRlbVRyYW5zZmVyVW5sb2NrZWRgLgA4V2VpZ2h0OiBgTygxKWA8bG9ja19jb2xsZWN0aW9uCAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABNGxvY2tfc2V0dGluZ3NtBAFIQ29sbGVjdGlvblNldHRpbmdzAAow2ERpc2FsbG93cyBzcGVjaWZpZWQgc2V0dGluZ3MgZm9yIHRoZSB3aG9sZSBjb2xsZWN0aW9uLgA1AU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIE93bmVyIG9mIHRoZSBgY29sbGVjdGlvbmAuALAtIGBjb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gdG8gYmUgbG9ja2VkLrQtIGBsb2NrX3NldHRpbmdzYDogVGhlIHNldHRpbmdzIHRvIGJlIGxvY2tlZC4AHQFOb3RlOiBpdCdzIHBvc3NpYmxlIHRvIG9ubHkgbG9jayhzZXQpIHRoZSBzZXR0aW5nLCBidXQgbm90IHRvIHVuc2V0IGl0LgBkRW1pdHMgYENvbGxlY3Rpb25Mb2NrZWRgLgA4V2VpZ2h0OiBgTygxKWBIdHJhbnNmZXJfb3duZXJzaGlwCAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABJG5ld19vd25lcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAsshENoYW5nZSB0aGUgT3duZXIgb2YgYSBjb2xsZWN0aW9uLgA1AU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIE93bmVyIG9mIHRoZSBgY29sbGVjdGlvbmAuAPQtIGBjb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gd2hvc2Ugb3duZXIgc2hvdWxkIGJlIGNoYW5nZWQuCQEtIGBvd25lcmA6IFRoZSBuZXcgT3duZXIgb2YgdGhpcyBjb2xsZWN0aW9uLiBUaGV5IG11c3QgaGF2ZSBjYWxsZWRJASAgYHNldF9hY2NlcHRfb3duZXJzaGlwYCB3aXRoIGBjb2xsZWN0aW9uYCBpbiBvcmRlciBmb3IgdGhpcyBvcGVyYXRpb24gdG8gc3VjY2VlZC4AVEVtaXRzIGBPd25lckNoYW5nZWRgLgA4V2VpZ2h0OiBgTygxKWAgc2V0X3RlYW0QAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEYaXNzdWVyUQQBcE9wdGlvbjxBY2NvdW50SWRMb29rdXBPZjxUPj4AARRhZG1pblEEAXBPcHRpb248QWNjb3VudElkTG9va3VwT2Y8VD4+AAEcZnJlZXplclEEAXBPcHRpb248QWNjb3VudElkTG9va3VwT2Y8VD4+AAxA1ENoYW5nZSB0aGUgSXNzdWVyLCBBZG1pbiBhbmQgRnJlZXplciBvZiBhIGNvbGxlY3Rpb24uAF0BT3JpZ2luIG11c3QgYmUgZWl0aGVyIGBGb3JjZU9yaWdpbmAgb3IgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgT3duZXIgb2YgdGhlNGBjb2xsZWN0aW9uYC4AUQFOb3RlOiBieSBzZXR0aW5nIHRoZSByb2xlIHRvIGBOb25lYCBvbmx5IHRoZSBgRm9yY2VPcmlnaW5gIHdpbGwgYmUgYWJsZSB0byBjaGFuZ2UgaXRkYWZ0ZXIgdG8gYFNvbWUoYWNjb3VudClgLgDwLSBgY29sbGVjdGlvbmA6IFRoZSBjb2xsZWN0aW9uIHdob3NlIHRlYW0gc2hvdWxkIGJlIGNoYW5nZWQuuC0gYGlzc3VlcmA6IFRoZSBuZXcgSXNzdWVyIG9mIHRoaXMgY29sbGVjdGlvbi6wLSBgYWRtaW5gOiBUaGUgbmV3IEFkbWluIG9mIHRoaXMgY29sbGVjdGlvbi7ALSBgZnJlZXplcmA6IFRoZSBuZXcgRnJlZXplciBvZiB0aGlzIGNvbGxlY3Rpb24uAFBFbWl0cyBgVGVhbUNoYW5nZWRgLgA4V2VpZ2h0OiBgTygxKWBYZm9yY2VfY29sbGVjdGlvbl9vd25lcggBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARRvd25lcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AA0ohENoYW5nZSB0aGUgT3duZXIgb2YgYSBjb2xsZWN0aW9uLgB0T3JpZ2luIG11c3QgYmUgYEZvcmNlT3JpZ2luYC4AxC0gYGNvbGxlY3Rpb25gOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgY29sbGVjdGlvbi6wLSBgb3duZXJgOiBUaGUgbmV3IE93bmVyIG9mIHRoaXMgY29sbGVjdGlvbi4AVEVtaXRzIGBPd25lckNoYW5nZWRgLgA4V2VpZ2h0OiBgTygxKWBcZm9yY2VfY29sbGVjdGlvbl9jb25maWcIAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEYY29uZmlnaQQBZENvbGxlY3Rpb25Db25maWdGb3I8VCwgST4ADiiIQ2hhbmdlIHRoZSBjb25maWcgb2YgYSBjb2xsZWN0aW9uLgB0T3JpZ2luIG11c3QgYmUgYEZvcmNlT3JpZ2luYC4AxC0gYGNvbGxlY3Rpb25gOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgY29sbGVjdGlvbi64LSBgY29uZmlnYDogVGhlIG5ldyBjb25maWcgb2YgdGhpcyBjb2xsZWN0aW9uLgCARW1pdHMgYENvbGxlY3Rpb25Db25maWdDaGFuZ2VkYC4AOFdlaWdodDogYE8oMSlgQGFwcHJvdmVfdHJhbnNmZXIQAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAABIGRlbGVnYXRlAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AAThtYXliZV9kZWFkbGluZdgBcE9wdGlvbjxCbG9ja051bWJlckZvcjxULCBJPj4ADzgVAUFwcHJvdmUgYW4gaXRlbSB0byBiZSB0cmFuc2ZlcnJlZCBieSBhIGRlbGVnYXRlZCB0aGlyZC1wYXJ0eSBhY2NvdW50LgBdAU9yaWdpbiBtdXN0IGJlIGVpdGhlciBgRm9yY2VPcmlnaW5gIG9yIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIE93bmVyIG9mIHRoZRxgaXRlbWAuAEUBLSBgY29sbGVjdGlvbmA6IFRoZSBjb2xsZWN0aW9uIG9mIHRoZSBpdGVtIHRvIGJlIGFwcHJvdmVkIGZvciBkZWxlZ2F0ZWQgdHJhbnNmZXIu5C0gYGl0ZW1gOiBUaGUgaXRlbSB0byBiZSBhcHByb3ZlZCBmb3IgZGVsZWdhdGVkIHRyYW5zZmVyLhkBLSBgZGVsZWdhdGVgOiBUaGUgYWNjb3VudCB0byBkZWxlZ2F0ZSBwZXJtaXNzaW9uIHRvIHRyYW5zZmVyIHRoZSBpdGVtLkkBLSBgbWF5YmVfZGVhZGxpbmVgOiBPcHRpb25hbCBkZWFkbGluZSBmb3IgdGhlIGFwcHJvdmFsLiBTcGVjaWZpZWQgYnkgcHJvdmlkaW5nIHRoZdgJbnVtYmVyIG9mIGJsb2NrcyBhZnRlciB3aGljaCB0aGUgYXBwcm92YWwgd2lsbCBleHBpcmUAkEVtaXRzIGBUcmFuc2ZlckFwcHJvdmVkYCBvbiBzdWNjZXNzLgA4V2VpZ2h0OiBgTygxKWA8Y2FuY2VsX2FwcHJvdmFsDAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAASBkZWxlZ2F0ZQABUEFjY291bnRJZExvb2t1cE9mPFQ+ABA45ENhbmNlbCBvbmUgb2YgdGhlIHRyYW5zZmVyIGFwcHJvdmFscyBmb3IgYSBzcGVjaWZpYyBpdGVtLgBYT3JpZ2luIG11c3QgYmUgZWl0aGVyOlQtIHRoZSBgRm9yY2VgIG9yaWdpbjvkLSBgU2lnbmVkYCB3aXRoIHRoZSBzaWduZXIgYmVpbmcgdGhlIE93bmVyIG9mIHRoZSBgaXRlbWA7AChBcmd1bWVudHM6PQEtIGBjb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gb2YgdGhlIGl0ZW0gb2Ygd2hvc2UgYXBwcm92YWwgd2lsbCBiZSBjYW5jZWxsZWQuJQEtIGBpdGVtYDogVGhlIGl0ZW0gb2YgdGhlIGNvbGxlY3Rpb24gb2Ygd2hvc2UgYXBwcm92YWwgd2lsbCBiZSBjYW5jZWxsZWQuAQEtIGBkZWxlZ2F0ZWA6IFRoZSBhY2NvdW50IHRoYXQgaXMgZ29pbmcgdG8gbG9vc2UgdGhlaXIgYXBwcm92YWwuAJRFbWl0cyBgQXBwcm92YWxDYW5jZWxsZWRgIG9uIHN1Y2Nlc3MuADhXZWlnaHQ6IGBPKDEpYHBjbGVhcl9hbGxfdHJhbnNmZXJfYXBwcm92YWxzCAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAETSwQ2FuY2VsIGFsbCB0aGUgYXBwcm92YWxzIG9mIGEgc3BlY2lmaWMgaXRlbS4AWE9yaWdpbiBtdXN0IGJlIGVpdGhlcjpULSB0aGUgYEZvcmNlYCBvcmlnaW475C0gYFNpZ25lZGAgd2l0aCB0aGUgc2lnbmVyIGJlaW5nIHRoZSBPd25lciBvZiB0aGUgYGl0ZW1gOwAoQXJndW1lbnRzOjkBLSBgY29sbGVjdGlvbmA6IFRoZSBjb2xsZWN0aW9uIG9mIHRoZSBpdGVtIG9mIHdob3NlIGFwcHJvdmFscyB3aWxsIGJlIGNsZWFyZWQuIQEtIGBpdGVtYDogVGhlIGl0ZW0gb2YgdGhlIGNvbGxlY3Rpb24gb2Ygd2hvc2UgYXBwcm92YWxzIHdpbGwgYmUgY2xlYXJlZC4ApEVtaXRzIGBBbGxBcHByb3ZhbHNDYW5jZWxsZWRgIG9uIHN1Y2Nlc3MuADhXZWlnaHQ6IGBPKDEpYFBsb2NrX2l0ZW1fcHJvcGVydGllcxABKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAE0bG9ja19tZXRhZGF0YZkBARBib29sAAE8bG9ja19hdHRyaWJ1dGVzmQEBEGJvb2wAEkToRGlzYWxsb3dzIGNoYW5naW5nIHRoZSBtZXRhZGF0YSBvciBhdHRyaWJ1dGVzIG9mIHRoZSBpdGVtLgBBAU9yaWdpbiBtdXN0IGJlIGVpdGhlciBgRm9yY2VPcmlnaW5gIG9yIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEFkbWluUG9mIHRoZSBgY29sbGVjdGlvbmAuALQtIGBjb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gaWYgdGhlIGBpdGVtYC58LSBgaXRlbWA6IEFuIGl0ZW0gdG8gYmUgbG9ja2VkLg0BLSBgbG9ja19tZXRhZGF0YWA6IFNwZWNpZmllcyB3aGV0aGVyIHRoZSBtZXRhZGF0YSBzaG91bGQgYmUgbG9ja2VkLmEBLSBgbG9ja19hdHRyaWJ1dGVzYDogU3BlY2lmaWVzIHdoZXRoZXIgdGhlIGF0dHJpYnV0ZXMgaW4gdGhlIGBDb2xsZWN0aW9uT3duZXJgIG5hbWVzcGFjZUwgIHNob3VsZCBiZSBsb2NrZWQuAF0BTm90ZTogYGxvY2tfYXR0cmlidXRlc2AgYWZmZWN0cyB0aGUgYXR0cmlidXRlcyBpbiB0aGUgYENvbGxlY3Rpb25Pd25lcmAgbmFtZXNwYWNlIG9ubHkuRQFXaGVuIHRoZSBtZXRhZGF0YSBvciBhdHRyaWJ1dGVzIGFyZSBsb2NrZWQsIGl0IHdvbid0IGJlIHBvc3NpYmxlIHRoZSB1bmxvY2sgdGhlbS4AdEVtaXRzIGBJdGVtUHJvcGVydGllc0xvY2tlZGAuADhXZWlnaHQ6IGBPKDEpYDRzZXRfYXR0cmlidXRlFAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABKG1heWJlX2l0ZW3YAURPcHRpb248VDo6SXRlbUlkPgABJG5hbWVzcGFjZZUEAYBBdHRyaWJ1dGVOYW1lc3BhY2U8VDo6QWNjb3VudElkPgABDGtleXwBbEJvdW5kZWRWZWM8dTgsIFQ6OktleUxpbWl0PgABFHZhbHVl4AF0Qm91bmRlZFZlYzx1OCwgVDo6VmFsdWVMaW1pdD4AE1ioU2V0IGFuIGF0dHJpYnV0ZSBmb3IgYSBjb2xsZWN0aW9uIG9yIGl0ZW0uAAEBT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCBtdXN0IGNvbmZvcm0gdG8gdGhlIG5hbWVzcGFjZSBydWxlc2V0Oj0BLSBgQ29sbGVjdGlvbk93bmVyYCBuYW1lc3BhY2UgY291bGQgYmUgbW9kaWZpZWQgYnkgdGhlIGBjb2xsZWN0aW9uYCBBZG1pbiBvbmx5O1kBLSBgSXRlbU93bmVyYCBuYW1lc3BhY2UgY291bGQgYmUgbW9kaWZpZWQgYnkgdGhlIGBtYXliZV9pdGVtYCBvd25lciBvbmx5LiBgbWF5YmVfaXRlbWB0ICBzaG91bGQgYmUgc2V0IGluIHRoYXQgY2FzZTtVAS0gYEFjY291bnQoQWNjb3VudElkKWAgbmFtZXNwYWNlIGNvdWxkIGJlIG1vZGlmaWVkIG9ubHkgd2hlbiB0aGUgYG9yaWdpbmAgd2FzIGdpdmVuIGFYICBwZXJtaXNzaW9uIHRvIGRvIHNvOwDwVGhlIGZ1bmRzIG9mIGBvcmlnaW5gIGFyZSByZXNlcnZlZCBhY2NvcmRpbmcgdG8gdGhlIGZvcm11bGE6LQFgQXR0cmlidXRlRGVwb3NpdEJhc2UgKyBEZXBvc2l0UGVyQnl0ZSAqIChrZXkubGVuICsgdmFsdWUubGVuKWAgdGFraW5nIGludG+MYWNjb3VudCBhbnkgYWxyZWFkeSByZXNlcnZlZCBmdW5kcy4AOQEtIGBjb2xsZWN0aW9uYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGNvbGxlY3Rpb24gd2hvc2UgaXRlbSdzIG1ldGFkYXRhIHRvIHNldC4FAS0gYG1heWJlX2l0ZW1gOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgaXRlbSB3aG9zZSBtZXRhZGF0YSB0byBzZXQulC0gYG5hbWVzcGFjZWA6IEF0dHJpYnV0ZSdzIG5hbWVzcGFjZS6ILSBga2V5YDogVGhlIGtleSBvZiB0aGUgYXR0cmlidXRlLswtIGB2YWx1ZWA6IFRoZSB2YWx1ZSB0byB3aGljaCB0byBzZXQgdGhlIGF0dHJpYnV0ZS4AVEVtaXRzIGBBdHRyaWJ1dGVTZXRgLgA4V2VpZ2h0OiBgTygxKWBMZm9yY2Vfc2V0X2F0dHJpYnV0ZRgBGHNldF9hc0EBAVBPcHRpb248VDo6QWNjb3VudElkPgABKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAAShtYXliZV9pdGVt2AFET3B0aW9uPFQ6Okl0ZW1JZD4AASRuYW1lc3BhY2WVBAGAQXR0cmlidXRlTmFtZXNwYWNlPFQ6OkFjY291bnRJZD4AAQxrZXl8AWxCb3VuZGVkVmVjPHU4LCBUOjpLZXlMaW1pdD4AARR2YWx1ZeABdEJvdW5kZWRWZWM8dTgsIFQ6OlZhbHVlTGltaXQ+ABREwEZvcmNlLXNldCBhbiBhdHRyaWJ1dGUgZm9yIGEgY29sbGVjdGlvbiBvciBpdGVtLgB0T3JpZ2luIG11c3QgYmUgYEZvcmNlT3JpZ2luYC4AOQFJZiB0aGUgYXR0cmlidXRlIGFscmVhZHkgZXhpc3RzIGFuZCBpdCB3YXMgc2V0IGJ5IGFub3RoZXIgYWNjb3VudCwgdGhlIGRlcG9zaXScd2lsbCBiZSByZXR1cm5lZCB0byB0aGUgcHJldmlvdXMgb3duZXIuALwtIGBzZXRfYXNgOiBBbiBvcHRpb25hbCBvd25lciBvZiB0aGUgYXR0cmlidXRlLjkBLSBgY29sbGVjdGlvbmA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBjb2xsZWN0aW9uIHdob3NlIGl0ZW0ncyBtZXRhZGF0YSB0byBzZXQuBQEtIGBtYXliZV9pdGVtYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGl0ZW0gd2hvc2UgbWV0YWRhdGEgdG8gc2V0LpQtIGBuYW1lc3BhY2VgOiBBdHRyaWJ1dGUncyBuYW1lc3BhY2UuiC0gYGtleWA6IFRoZSBrZXkgb2YgdGhlIGF0dHJpYnV0ZS7MLSBgdmFsdWVgOiBUaGUgdmFsdWUgdG8gd2hpY2ggdG8gc2V0IHRoZSBhdHRyaWJ1dGUuAFRFbWl0cyBgQXR0cmlidXRlU2V0YC4AOFdlaWdodDogYE8oMSlgPGNsZWFyX2F0dHJpYnV0ZRABKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAAShtYXliZV9pdGVt2AFET3B0aW9uPFQ6Okl0ZW1JZD4AASRuYW1lc3BhY2WVBAGAQXR0cmlidXRlTmFtZXNwYWNlPFQ6OkFjY291bnRJZD4AAQxrZXl8AWxCb3VuZGVkVmVjPHU4LCBUOjpLZXlMaW1pdD4AFTywQ2xlYXIgYW4gYXR0cmlidXRlIGZvciBhIGNvbGxlY3Rpb24gb3IgaXRlbS4AXQFPcmlnaW4gbXVzdCBiZSBlaXRoZXIgYEZvcmNlT3JpZ2luYCBvciBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBPd25lciBvZiB0aGUoYXR0cmlidXRlLgDAQW55IGRlcG9zaXQgaXMgZnJlZWQgZm9yIHRoZSBjb2xsZWN0aW9uJ3Mgb3duZXIuAEEBLSBgY29sbGVjdGlvbmA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBjb2xsZWN0aW9uIHdob3NlIGl0ZW0ncyBtZXRhZGF0YSB0byBjbGVhci4NAS0gYG1heWJlX2l0ZW1gOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgaXRlbSB3aG9zZSBtZXRhZGF0YSB0byBjbGVhci6ULSBgbmFtZXNwYWNlYDogQXR0cmlidXRlJ3MgbmFtZXNwYWNlLogtIGBrZXlgOiBUaGUga2V5IG9mIHRoZSBhdHRyaWJ1dGUuAGRFbWl0cyBgQXR0cmlidXRlQ2xlYXJlZGAuADhXZWlnaHQ6IGBPKDEpYFxhcHByb3ZlX2l0ZW1fYXR0cmlidXRlcwwBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAEgZGVsZWdhdGUAAVBBY2NvdW50SWRMb29rdXBPZjxUPgAWJC0BQXBwcm92ZSBpdGVtJ3MgYXR0cmlidXRlcyB0byBiZSBjaGFuZ2VkIGJ5IGEgZGVsZWdhdGVkIHRoaXJkLXBhcnR5IGFjY291bnQuAORPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIG11c3QgYmUgYW4gb3duZXIgb2YgdGhlIGBpdGVtYC4ApC0gYGNvbGxlY3Rpb25gOiBBIGNvbGxlY3Rpb24gb2YgdGhlIGl0ZW0upC0gYGl0ZW1gOiBUaGUgaXRlbSB0aGF0IGhvbGRzIGF0dHJpYnV0ZXMuSQEtIGBkZWxlZ2F0ZWA6IFRoZSBhY2NvdW50IHRvIGRlbGVnYXRlIHBlcm1pc3Npb24gdG8gY2hhbmdlIGF0dHJpYnV0ZXMgb2YgdGhlIGl0ZW0uALxFbWl0cyBgSXRlbUF0dHJpYnV0ZXNBcHByb3ZhbEFkZGVkYCBvbiBzdWNjZXNzLnxjYW5jZWxfaXRlbV9hdHRyaWJ1dGVzX2FwcHJvdmFsEAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAASBkZWxlZ2F0ZQABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEcd2l0bmVzc5kEAXxDYW5jZWxBdHRyaWJ1dGVzQXBwcm92YWxXaXRuZXNzABcoEQFDYW5jZWwgdGhlIHByZXZpb3VzbHkgcHJvdmlkZWQgYXBwcm92YWwgdG8gY2hhbmdlIGl0ZW0ncyBhdHRyaWJ1dGVzLhEBQWxsIHRoZSBwcmV2aW91c2x5IHNldCBhdHRyaWJ1dGVzIGJ5IHRoZSBgZGVsZWdhdGVgIHdpbGwgYmUgcmVtb3ZlZC4A5E9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgbXVzdCBiZSBhbiBvd25lciBvZiB0aGUgYGl0ZW1gLgD0LSBgY29sbGVjdGlvbmA6IENvbGxlY3Rpb24gdGhhdCB0aGUgaXRlbSBpcyBjb250YWluZWQgd2l0aGluLqQtIGBpdGVtYDogVGhlIGl0ZW0gdGhhdCBob2xkcyBhdHRyaWJ1dGVzLuAtIGBkZWxlZ2F0ZWA6IFRoZSBwcmV2aW91c2x5IGFwcHJvdmVkIGFjY291bnQgdG8gcmVtb3ZlLgDERW1pdHMgYEl0ZW1BdHRyaWJ1dGVzQXBwcm92YWxSZW1vdmVkYCBvbiBzdWNjZXNzLjBzZXRfbWV0YWRhdGEMAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAABEGRhdGHgAXhCb3VuZGVkVmVjPHU4LCBUOjpTdHJpbmdMaW1pdD4AGEB0U2V0IHRoZSBtZXRhZGF0YSBmb3IgYW4gaXRlbS4AXQFPcmlnaW4gbXVzdCBiZSBlaXRoZXIgYEZvcmNlT3JpZ2luYCBvciBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBBZG1pbiBvZiB0aGU0YGNvbGxlY3Rpb25gLgBRAUlmIHRoZSBvcmlnaW4gaXMgU2lnbmVkLCB0aGVuIGZ1bmRzIG9mIHNpZ25lciBhcmUgcmVzZXJ2ZWQgYWNjb3JkaW5nIHRvIHRoZSBmb3JtdWxhOvRgTWV0YWRhdGFEZXBvc2l0QmFzZSArIERlcG9zaXRQZXJCeXRlICogZGF0YS5sZW5gIHRha2luZyBpbnRvjGFjY291bnQgYW55IGFscmVhZHkgcmVzZXJ2ZWQgZnVuZHMuADkBLSBgY29sbGVjdGlvbmA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBjb2xsZWN0aW9uIHdob3NlIGl0ZW0ncyBtZXRhZGF0YSB0byBzZXQu7C0gYGl0ZW1gOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgaXRlbSB3aG9zZSBtZXRhZGF0YSB0byBzZXQuTQEtIGBkYXRhYDogVGhlIGdlbmVyYWwgaW5mb3JtYXRpb24gb2YgdGhpcyBpdGVtLiBMaW1pdGVkIGluIGxlbmd0aCBieSBgU3RyaW5nTGltaXRgLgBgRW1pdHMgYEl0ZW1NZXRhZGF0YVNldGAuADhXZWlnaHQ6IGBPKDEpYDhjbGVhcl9tZXRhZGF0YQgBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkABk0fENsZWFyIHRoZSBtZXRhZGF0YSBmb3IgYW4gaXRlbS4AXQFPcmlnaW4gbXVzdCBiZSBlaXRoZXIgYEZvcmNlT3JpZ2luYCBvciBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBBZG1pbiBvZiB0aGU0YGNvbGxlY3Rpb25gLgDAQW55IGRlcG9zaXQgaXMgZnJlZWQgZm9yIHRoZSBjb2xsZWN0aW9uJ3Mgb3duZXIuAEEBLSBgY29sbGVjdGlvbmA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBjb2xsZWN0aW9uIHdob3NlIGl0ZW0ncyBtZXRhZGF0YSB0byBjbGVhci70LSBgaXRlbWA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBpdGVtIHdob3NlIG1ldGFkYXRhIHRvIGNsZWFyLgBwRW1pdHMgYEl0ZW1NZXRhZGF0YUNsZWFyZWRgLgA4V2VpZ2h0OiBgTygxKWBcc2V0X2NvbGxlY3Rpb25fbWV0YWRhdGEIAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQZGF0YeABeEJvdW5kZWRWZWM8dTgsIFQ6OlN0cmluZ0xpbWl0PgAaPIhTZXQgdGhlIG1ldGFkYXRhIGZvciBhIGNvbGxlY3Rpb24uAFUBT3JpZ2luIG11c3QgYmUgZWl0aGVyIGBGb3JjZU9yaWdpbmAgb3IgYFNpZ25lZGAgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBBZG1pbiBvZkR0aGUgYGNvbGxlY3Rpb25gLgBZAUlmIHRoZSBvcmlnaW4gaXMgYFNpZ25lZGAsIHRoZW4gZnVuZHMgb2Ygc2lnbmVyIGFyZSByZXNlcnZlZCBhY2NvcmRpbmcgdG8gdGhlIGZvcm11bGE69GBNZXRhZGF0YURlcG9zaXRCYXNlICsgRGVwb3NpdFBlckJ5dGUgKiBkYXRhLmxlbmAgdGFraW5nIGludG+MYWNjb3VudCBhbnkgYWxyZWFkeSByZXNlcnZlZCBmdW5kcy4AEQEtIGBjb2xsZWN0aW9uYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGl0ZW0gd2hvc2UgbWV0YWRhdGEgdG8gdXBkYXRlLk0BLSBgZGF0YWA6IFRoZSBnZW5lcmFsIGluZm9ybWF0aW9uIG9mIHRoaXMgaXRlbS4gTGltaXRlZCBpbiBsZW5ndGggYnkgYFN0cmluZ0xpbWl0YC4AeEVtaXRzIGBDb2xsZWN0aW9uTWV0YWRhdGFTZXRgLgA4V2VpZ2h0OiBgTygxKWBkY2xlYXJfY29sbGVjdGlvbl9tZXRhZGF0YQQBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAGzCQQ2xlYXIgdGhlIG1ldGFkYXRhIGZvciBhIGNvbGxlY3Rpb24uAFUBT3JpZ2luIG11c3QgYmUgZWl0aGVyIGBGb3JjZU9yaWdpbmAgb3IgYFNpZ25lZGAgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBBZG1pbiBvZkR0aGUgYGNvbGxlY3Rpb25gLgDAQW55IGRlcG9zaXQgaXMgZnJlZWQgZm9yIHRoZSBjb2xsZWN0aW9uJ3Mgb3duZXIuACUBLSBgY29sbGVjdGlvbmA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBjb2xsZWN0aW9uIHdob3NlIG1ldGFkYXRhIHRvIGNsZWFyLgCIRW1pdHMgYENvbGxlY3Rpb25NZXRhZGF0YUNsZWFyZWRgLgA4V2VpZ2h0OiBgTygxKWBQc2V0X2FjY2VwdF9vd25lcnNoaXAEAUBtYXliZV9jb2xsZWN0aW9u2AFcT3B0aW9uPFQ6OkNvbGxlY3Rpb25JZD4AHCgRAVNldCAob3IgcmVzZXQpIHRoZSBhY2NlcHRhbmNlIG9mIG93bmVyc2hpcCBmb3IgYSBwYXJ0aWN1bGFyIGFjY291bnQuAGEBT3JpZ2luIG11c3QgYmUgYFNpZ25lZGAgYW5kIGlmIGBtYXliZV9jb2xsZWN0aW9uYCBpcyBgU29tZWAsIHRoZW4gdGhlIHNpZ25lciBtdXN0IGhhdmUgYUxwcm92aWRlciByZWZlcmVuY2UuAFEBLSBgbWF5YmVfY29sbGVjdGlvbmA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBjb2xsZWN0aW9uIHdob3NlIG93bmVyc2hpcCB0aGUgc2lnbmVyIGlzYQEgIHdpbGxpbmcgdG8gYWNjZXB0LCBvciBpZiBgTm9uZWAsIGFuIGluZGljYXRpb24gdGhhdCB0aGUgc2lnbmVyIGlzIHdpbGxpbmcgdG8gYWNjZXB0IG5vXCAgb3duZXJzaGlwIHRyYW5zZmVyYWwuAIxFbWl0cyBgT3duZXJzaGlwQWNjZXB0YW5jZUNoYW5nZWRgLmRzZXRfY29sbGVjdGlvbl9tYXhfc3VwcGx5CAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABKG1heF9zdXBwbHk4AQx1MzIAHSTgU2V0IHRoZSBtYXhpbXVtIG51bWJlciBvZiBpdGVtcyBhIGNvbGxlY3Rpb24gY291bGQgaGF2ZS4AVQFPcmlnaW4gbXVzdCBiZSBlaXRoZXIgYEZvcmNlT3JpZ2luYCBvciBgU2lnbmVkYCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIE93bmVyIG9mRHRoZSBgY29sbGVjdGlvbmAuAOwtIGBjb2xsZWN0aW9uYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGNvbGxlY3Rpb24gdG8gY2hhbmdlLhEBLSBgbWF4X3N1cHBseWA6IFRoZSBtYXhpbXVtIG51bWJlciBvZiBpdGVtcyBhIGNvbGxlY3Rpb24gY291bGQgaGF2ZS4A1EVtaXRzIGBDb2xsZWN0aW9uTWF4U3VwcGx5U2V0YCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuUHVwZGF0ZV9taW50X3NldHRpbmdzCAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABNG1pbnRfc2V0dGluZ3N1BAEVAU1pbnRTZXR0aW5nczxCYWxhbmNlT2Y8VCwgST4sIEJsb2NrTnVtYmVyRm9yPFQsIEk+LCBUOjoKQ29sbGVjdGlvbklkPgAeJFRVcGRhdGUgbWludCBzZXR0aW5ncy4ATQFPcmlnaW4gbXVzdCBiZSBlaXRoZXIgYEZvcmNlT3JpZ2luYCBvciBgU2lnbmVkYCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIElzc3VlclBvZiB0aGUgYGNvbGxlY3Rpb25gLgDsLSBgY29sbGVjdGlvbmA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBjb2xsZWN0aW9uIHRvIGNoYW5nZS6kLSBgbWludF9zZXR0aW5nc2A6IFRoZSBuZXcgbWludCBzZXR0aW5ncy4A8EVtaXRzIGBDb2xsZWN0aW9uTWludFNldHRpbmdzVXBkYXRlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLiRzZXRfcHJpY2UQAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAABFHByaWNlYQQBXE9wdGlvbjxJdGVtUHJpY2U8VCwgST4+AAFEd2hpdGVsaXN0ZWRfYnV5ZXJRBAFwT3B0aW9uPEFjY291bnRJZExvb2t1cE9mPFQ+PgAfLJRTZXQgKG9yIHJlc2V0KSB0aGUgcHJpY2UgZm9yIGFuIGl0ZW0uAOhPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIG11c3QgYmUgdGhlIG93bmVyIG9mIHRoZSBgaXRlbWAuAKwtIGBjb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gb2YgdGhlIGl0ZW0uoC0gYGl0ZW1gOiBUaGUgaXRlbSB0byBzZXQgdGhlIHByaWNlIGZvci4NAS0gYHByaWNlYDogVGhlIHByaWNlIGZvciB0aGUgaXRlbS4gUGFzcyBgTm9uZWAsIHRvIHJlc2V0IHRoZSBwcmljZS70LSBgYnV5ZXJgOiBSZXN0cmljdHMgdGhlIGJ1eSBvcGVyYXRpb24gdG8gYSBzcGVjaWZpYyBhY2NvdW50LgDsRW1pdHMgYEl0ZW1QcmljZVNldGAgb24gc3VjY2VzcyBpZiB0aGUgcHJpY2UgaXMgbm90IGBOb25lYC7sRW1pdHMgYEl0ZW1QcmljZVJlbW92ZWRgIG9uIHN1Y2Nlc3MgaWYgdGhlIHByaWNlIGlzIGBOb25lYC4gYnV5X2l0ZW0MAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAABJGJpZF9wcmljZZUBATxJdGVtUHJpY2U8VCwgST4AICSoQWxsb3dzIHRvIGJ1eSBhbiBpdGVtIGlmIGl0J3MgdXAgZm9yIHNhbGUuAPhPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIG11c3Qgbm90IGJlIHRoZSBvd25lciBvZiB0aGUgYGl0ZW1gLgCsLSBgY29sbGVjdGlvbmA6IFRoZSBjb2xsZWN0aW9uIG9mIHRoZSBpdGVtLqwtIGBpdGVtYDogVGhlIGl0ZW0gdGhlIHNlbmRlciB3YW50cyB0byBidXku2C0gYGJpZF9wcmljZWA6IFRoZSBwcmljZSB0aGUgc2VuZGVyIGlzIHdpbGxpbmcgdG8gcGF5LgB4RW1pdHMgYEl0ZW1Cb3VnaHRgIG9uIHN1Y2Nlc3MuIHBheV90aXBzBAEQdGlwc50EAZxCb3VuZGVkVmVjPEl0ZW1UaXBPZjxULCBJPiwgVDo6TWF4VGlwcz4AIRxcQWxsb3dzIHRvIHBheSB0aGUgdGlwcy4AWE9yaWdpbiBtdXN0IGJlIFNpZ25lZC4AVC0gYHRpcHNgOiBUaXBzIGFycmF5LgCYRW1pdHMgYFRpcFNlbnRgIG9uIGV2ZXJ5IHRpcCB0cmFuc2Zlci4sY3JlYXRlX3N3YXAYAUhvZmZlcmVkX2NvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAATBvZmZlcmVkX2l0ZW04ASRUOjpJdGVtSWQAAUhkZXNpcmVkX2NvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAAUhtYXliZV9kZXNpcmVkX2l0ZW3YAURPcHRpb248VDo6SXRlbUlkPgABLG1heWJlX3ByaWNlqQQBrE9wdGlvbjxQcmljZVdpdGhEaXJlY3Rpb248SXRlbVByaWNlPFQsIEk+Pj4AASBkdXJhdGlvbjgBUEJsb2NrTnVtYmVyRm9yPFQsIEk+ACJAUQFSZWdpc3RlciBhIG5ldyBhdG9taWMgc3dhcCwgZGVjbGFyaW5nIGFuIGludGVudGlvbiB0byBzZW5kIGFuIGBpdGVtYCBpbiBleGNoYW5nZSBmb3L8YGRlc2lyZWRfaXRlbWAgZnJvbSBvcmlnaW4gdG8gdGFyZ2V0IG9uIHRoZSBjdXJyZW50IGJsb2NrY2hhaW4uTQFUaGUgdGFyZ2V0IGNhbiBleGVjdXRlIHRoZSBzd2FwIGR1cmluZyB0aGUgc3BlY2lmaWVkIGBkdXJhdGlvbmAgb2YgYmxvY2tzIChpZiBzZXQpLvBBZGRpdGlvbmFsbHksIHRoZSBwcmljZSBjb3VsZCBiZSBzZXQgZm9yIHRoZSBkZXNpcmVkIGBpdGVtYC4A5E9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgbXVzdCBiZSBhbiBvd25lciBvZiB0aGUgYGl0ZW1gLgCsLSBgY29sbGVjdGlvbmA6IFRoZSBjb2xsZWN0aW9uIG9mIHRoZSBpdGVtLqgtIGBpdGVtYDogVGhlIGl0ZW0gYW4gb3duZXIgd2FudHMgdG8gZ2l2ZS7sLSBgZGVzaXJlZF9jb2xsZWN0aW9uYDogVGhlIGNvbGxlY3Rpb24gb2YgdGhlIGRlc2lyZWQgaXRlbS70LSBgZGVzaXJlZF9pdGVtYDogVGhlIGRlc2lyZWQgaXRlbSBhbiBvd25lciB3YW50cyB0byByZWNlaXZlLmEBLSBgbWF5YmVfcHJpY2VgOiBUaGUgcHJpY2UgYW4gb3duZXIgaXMgd2lsbGluZyB0byBwYXkgb3IgcmVjZWl2ZSBmb3IgdGhlIGRlc2lyZWQgYGl0ZW1gLkkBLSBgZHVyYXRpb25gOiBBIGRlYWRsaW5lIGZvciB0aGUgc3dhcC4gU3BlY2lmaWVkIGJ5IHByb3ZpZGluZyB0aGUgbnVtYmVyIG9mIGJsb2Nrc4gJYWZ0ZXIgd2hpY2ggdGhlIHN3YXAgd2lsbCBleHBpcmUuAHxFbWl0cyBgU3dhcENyZWF0ZWRgIG9uIHN1Y2Nlc3MuLGNhbmNlbF9zd2FwCAFIb2ZmZXJlZF9jb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEwb2ZmZXJlZF9pdGVtOAEkVDo6SXRlbUlkACMkWENhbmNlbCBhbiBhdG9taWMgc3dhcC4AWE9yaWdpbiBtdXN0IGJlIFNpZ25lZC4VAU9yaWdpbiBtdXN0IGJlIGFuIG93bmVyIG9mIHRoZSBgaXRlbWAgaWYgdGhlIGRlYWRsaW5lIGhhc24ndCBleHBpcmVkLgCsLSBgY29sbGVjdGlvbmA6IFRoZSBjb2xsZWN0aW9uIG9mIHRoZSBpdGVtLqgtIGBpdGVtYDogVGhlIGl0ZW0gYW4gb3duZXIgd2FudHMgdG8gZ2l2ZS4AhEVtaXRzIGBTd2FwQ2FuY2VsbGVkYCBvbiBzdWNjZXNzLihjbGFpbV9zd2FwFAE8c2VuZF9jb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEkc2VuZF9pdGVtOAEkVDo6SXRlbUlkAAFIcmVjZWl2ZV9jb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEwcmVjZWl2ZV9pdGVtOAEkVDo6SXRlbUlkAAE0d2l0bmVzc19wcmljZakEAaxPcHRpb248UHJpY2VXaXRoRGlyZWN0aW9uPEl0ZW1QcmljZTxULCBJPj4+ACQwVENsYWltIGFuIGF0b21pYyBzd2FwLjkBVGhpcyBtZXRob2QgZXhlY3V0ZXMgYSBwZW5kaW5nIHN3YXAsIHRoYXQgd2FzIGNyZWF0ZWQgYnkgYSBjb3VudGVycGFydCBiZWZvcmUuAORPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIG11c3QgYmUgYW4gb3duZXIgb2YgdGhlIGBpdGVtYC4A7C0gYHNlbmRfY29sbGVjdGlvbmA6IFRoZSBjb2xsZWN0aW9uIG9mIHRoZSBpdGVtIHRvIGJlIHNlbnQujC0gYHNlbmRfaXRlbWA6IFRoZSBpdGVtIHRvIGJlIHNlbnQuCQEtIGByZWNlaXZlX2NvbGxlY3Rpb25gOiBUaGUgY29sbGVjdGlvbiBvZiB0aGUgaXRlbSB0byBiZSByZWNlaXZlZC6oLSBgcmVjZWl2ZV9pdGVtYDogVGhlIGl0ZW0gdG8gYmUgcmVjZWl2ZWQu5C0gYHdpdG5lc3NfcHJpY2VgOiBBIHByaWNlIHRoYXQgd2FzIHByZXZpb3VzbHkgYWdyZWVkIG9uLgB8RW1pdHMgYFN3YXBDbGFpbWVkYCBvbiBzdWNjZXNzLjxtaW50X3ByZV9zaWduZWQMASRtaW50X2RhdGG1BAFoQm94PFByZVNpZ25lZE1pbnRPZjxULCBJPj4AASRzaWduYXR1cmW5BAFQVDo6T2ZmY2hhaW5TaWduYXR1cmUAARhzaWduZXIEATBUOjpBY2NvdW50SWQAJTTITWludCBhbiBpdGVtIGJ5IHByb3ZpZGluZyB0aGUgcHJlLXNpZ25lZCBhcHByb3ZhbC4AWE9yaWdpbiBtdXN0IGJlIFNpZ25lZC4AXQEtIGBtaW50X2RhdGFgOiBUaGUgcHJlLXNpZ25lZCBhcHByb3ZhbCB0aGF0IGNvbnNpc3RzIG9mIHRoZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgaXRlbSxRASAgaXRzIG1ldGFkYXRhLCBhdHRyaWJ1dGVzLCB3aG8gY2FuIG1pbnQgaXQgKGBOb25lYCBmb3IgYW55b25lKSBhbmQgdW50aWwgd2hhdCBibG9jayQgIG51bWJlci7ILSBgc2lnbmF0dXJlYDogVGhlIHNpZ25hdHVyZSBvZiB0aGUgYGRhdGFgIG9iamVjdC45AS0gYHNpZ25lcmA6IFRoZSBgZGF0YWAgb2JqZWN0J3Mgc2lnbmVyLiBTaG91bGQgYmUgYW4gSXNzdWVyIG9mIHRoZSBjb2xsZWN0aW9uLgBoRW1pdHMgYElzc3VlZGAgb24gc3VjY2Vzcy7URW1pdHMgYEF0dHJpYnV0ZVNldGAgaWYgdGhlIGF0dHJpYnV0ZXMgd2VyZSBwcm92aWRlZC7YRW1pdHMgYEl0ZW1NZXRhZGF0YVNldGAgaWYgdGhlIG1ldGFkYXRhIHdhcyBub3QgZW1wdHkuZHNldF9hdHRyaWJ1dGVzX3ByZV9zaWduZWQMARBkYXRhwQQBbFByZVNpZ25lZEF0dHJpYnV0ZXNPZjxULCBJPgABJHNpZ25hdHVyZbkEAVBUOjpPZmZjaGFpblNpZ25hdHVyZQABGHNpZ25lcgQBMFQ6OkFjY291bnRJZAAmNAEBU2V0IGF0dHJpYnV0ZXMgZm9yIGFuIGl0ZW0gYnkgcHJvdmlkaW5nIHRoZSBwcmUtc2lnbmVkIGFwcHJvdmFsLgD4T3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCBtdXN0IGJlIGFuIG93bmVyIG9mIHRoZSBgZGF0YS5pdGVtYC4ASQEtIGBkYXRhYDogVGhlIHByZS1zaWduZWQgYXBwcm92YWwgdGhhdCBjb25zaXN0cyBvZiB0aGUgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGl0ZW0szCAgYXR0cmlidXRlcyB0byB1cGRhdGUgYW5kIHVudGlsIHdoYXQgYmxvY2sgbnVtYmVyLsgtIGBzaWduYXR1cmVgOiBUaGUgc2lnbmF0dXJlIG9mIHRoZSBgZGF0YWAgb2JqZWN0LlEBLSBgc2lnbmVyYDogVGhlIGBkYXRhYCBvYmplY3QncyBzaWduZXIuIFNob3VsZCBiZSBhbiBBZG1pbiBvZiB0aGUgY29sbGVjdGlvbiBmb3IgdGhleCAgYENvbGxlY3Rpb25Pd25lcmAgbmFtZXNwYWNlLgDERW1pdHMgYEF0dHJpYnV0ZVNldGAgZm9yIGVhY2ggcHJvdmlkZWQgYXR0cmlidXRlLhkBRW1pdHMgYEl0ZW1BdHRyaWJ1dGVzQXBwcm92YWxBZGRlZGAgaWYgdGhlIGFwcHJvdmFsIHdhc24ndCBzZXQgYmVmb3JlLqhFbWl0cyBgUHJlU2lnbmVkQXR0cmlidXRlc1NldGAgb24gc3VjY2Vzcy4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuaQQMLHBhbGxldF9uZnRzFHR5cGVzQENvbGxlY3Rpb25Db25maWcMFFByaWNlAZUBLEJsb2NrTnVtYmVyATgwQ29sbGVjdGlvbklkATgADAEgc2V0dGluZ3NtBAFIQ29sbGVjdGlvblNldHRpbmdzAAEobWF4X3N1cHBsedgBLE9wdGlvbjx1MzI+AAE0bWludF9zZXR0aW5nc3UEAbhNaW50U2V0dGluZ3M8UHJpY2UsIEJsb2NrTnVtYmVyLCBDb2xsZWN0aW9uSWQ+AABtBAwscGFsbGV0X25mdHMUdHlwZXMgQml0RmxhZ3MEBFQBcQQABAAoAURDb2xsZWN0aW9uU2V0dGluZwAAcQQMLHBhbGxldF9uZnRzFHR5cGVzRENvbGxlY3Rpb25TZXR0aW5nAAEURFRyYW5zZmVyYWJsZUl0ZW1zAAEAQFVubG9ja2VkTWV0YWRhdGEAAgBIVW5sb2NrZWRBdHRyaWJ1dGVzAAQARFVubG9ja2VkTWF4U3VwcGx5AAgAPERlcG9zaXRSZXF1aXJlZAAQAAB1BAwscGFsbGV0X25mdHMUdHlwZXMwTWludFNldHRpbmdzDBRQcmljZQGVASxCbG9ja051bWJlcgE4MENvbGxlY3Rpb25JZAE4ABQBJG1pbnRfdHlwZXkEAVhNaW50VHlwZTxDb2xsZWN0aW9uSWQ+AAEUcHJpY2VhBAE0T3B0aW9uPFByaWNlPgABLHN0YXJ0X2Jsb2Nr2AFMT3B0aW9uPEJsb2NrTnVtYmVyPgABJGVuZF9ibG9ja9gBTE9wdGlvbjxCbG9ja051bWJlcj4AAVRkZWZhdWx0X2l0ZW1fc2V0dGluZ3N9BAEwSXRlbVNldHRpbmdzAAB5BAwscGFsbGV0X25mdHMUdHlwZXMgTWludFR5cGUEMENvbGxlY3Rpb25JZAE4AQwYSXNzdWVyAAAAGFB1YmxpYwABACBIb2xkZXJPZgQAOAEwQ29sbGVjdGlvbklkAAIAAH0EDCxwYWxsZXRfbmZ0cxR0eXBlcyBCaXRGbGFncwQEVAGBBAAEACgBLEl0ZW1TZXR0aW5nAACBBAwscGFsbGV0X25mdHMUdHlwZXMsSXRlbVNldHRpbmcAAQwwVHJhbnNmZXJhYmxlAAEAQFVubG9ja2VkTWV0YWRhdGEAAgBIVW5sb2NrZWRBdHRyaWJ1dGVzAAQAAIUEDCxwYWxsZXRfbmZ0cxR0eXBlczhEZXN0cm95V2l0bmVzcwAADAE4aXRlbV9tZXRhZGF0YXNkAQx1MzIAATBpdGVtX2NvbmZpZ3NkAQx1MzIAAShhdHRyaWJ1dGVzZAEMdTMyAACJBAQYT3B0aW9uBARUAY0EAQgQTm9uZQAAABBTb21lBACNBAAAAQAAjQQMLHBhbGxldF9uZnRzFHR5cGVzLE1pbnRXaXRuZXNzCBhJdGVtSWQBOBxCYWxhbmNlAZUBAAgBKG93bmVkX2l0ZW3YAThPcHRpb248SXRlbUlkPgABKG1pbnRfcHJpY2VhBAE8T3B0aW9uPEJhbGFuY2U+AACRBAwscGFsbGV0X25mdHMUdHlwZXMoSXRlbUNvbmZpZwAABAEgc2V0dGluZ3N9BAEwSXRlbVNldHRpbmdzAACVBAwscGFsbGV0X25mdHMUdHlwZXNIQXR0cmlidXRlTmFtZXNwYWNlBCRBY2NvdW50SWQBBAEQGFBhbGxldAAAADxDb2xsZWN0aW9uT3duZXIAAQAkSXRlbU93bmVyAAIAHEFjY291bnQEAAQBJEFjY291bnRJZAADAACZBAwscGFsbGV0X25mdHMUdHlwZXN8Q2FuY2VsQXR0cmlidXRlc0FwcHJvdmFsV2l0bmVzcwAABAFIYWNjb3VudF9hdHRyaWJ1dGVzOAEMdTMyAACdBAxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAaEEBFMAAAQApQQBGFZlYzxUPgAAoQQMLHBhbGxldF9uZnRzFHR5cGVzHEl0ZW1UaXAQMENvbGxlY3Rpb25JZAE4GEl0ZW1JZAE4JEFjY291bnRJZAEEGEFtb3VudAGVAQAQAShjb2xsZWN0aW9uOAEwQ29sbGVjdGlvbklkAAEQaXRlbTgBGEl0ZW1JZAABIHJlY2VpdmVyBAEkQWNjb3VudElkAAEYYW1vdW50lQEBGEFtb3VudAAApQQAAAKhBACpBAQYT3B0aW9uBARUAa0EAQgQTm9uZQAAABBTb21lBACtBAAAAQAArQQMLHBhbGxldF9uZnRzFHR5cGVzSFByaWNlV2l0aERpcmVjdGlvbgQYQW1vdW50AZUBAAgBGGFtb3VudJUBARhBbW91bnQAASRkaXJlY3Rpb26xBAE4UHJpY2VEaXJlY3Rpb24AALEEDCxwYWxsZXRfbmZ0cxR0eXBlczhQcmljZURpcmVjdGlvbgABCBBTZW5kAAAAHFJlY2VpdmUAAQAAtQQMLHBhbGxldF9uZnRzFHR5cGVzNFByZVNpZ25lZE1pbnQUMENvbGxlY3Rpb25JZAE4GEl0ZW1JZAE4JEFjY291bnRJZAEEIERlYWRsaW5lATgcQmFsYW5jZQGVAQAcAShjb2xsZWN0aW9uOAEwQ29sbGVjdGlvbklkAAEQaXRlbTgBGEl0ZW1JZAABKGF0dHJpYnV0ZXMsAVxWZWM8KFZlYzx1OD4sIFZlYzx1OD4pPgABIG1ldGFkYXRhGAEcVmVjPHU4PgABMG9ubHlfYWNjb3VudEEBAURPcHRpb248QWNjb3VudElkPgABIGRlYWRsaW5lOAEgRGVhZGxpbmUAAShtaW50X3ByaWNlYQQBPE9wdGlvbjxCYWxhbmNlPgAAuQQIKHNwX3J1bnRpbWU4TXVsdGlTaWduYXR1cmUAARAcRWQyNTUxOQQAvQQBSGVkMjU1MTk6OlNpZ25hdHVyZQAAABxTcjI1NTE5BAC9BAFIc3IyNTUxOTo6U2lnbmF0dXJlAAEAFEVjZHNhBAC1AQFAZWNkc2E6OlNpZ25hdHVyZQACAAxFdGgEALUBAVhlY2RzYTo6S2VjY2FrU2lnbmF0dXJlAAMAAL0EAAADQAAAAAwAwQQMLHBhbGxldF9uZnRzFHR5cGVzTFByZVNpZ25lZEF0dHJpYnV0ZXMQMENvbGxlY3Rpb25JZAE4GEl0ZW1JZAE4JEFjY291bnRJZAEEIERlYWRsaW5lATgAFAEoY29sbGVjdGlvbjgBMENvbGxlY3Rpb25JZAABEGl0ZW04ARhJdGVtSWQAAShhdHRyaWJ1dGVzLAFcVmVjPChWZWM8dTg+LCBWZWM8dTg+KT4AASRuYW1lc3BhY2WVBAF0QXR0cmlidXRlTmFtZXNwYWNlPEFjY291bnRJZD4AASBkZWFkbGluZTgBIERlYWRsaW5lAADFBAw0cGFsbGV0X2Fzc2V0cxhwYWxsZXQQQ2FsbAgEVAAESQABiBhjcmVhdGUMAQhpZDkCAUxUOjpBc3NldElkUGFyYW1ldGVyAAEUYWRtaW4AAVBBY2NvdW50SWRMb29rdXBPZjxUPgABLG1pbl9iYWxhbmNllQEBKFQ6OkJhbGFuY2UAAEzoSXNzdWUgYSBuZXcgY2xhc3Mgb2YgZnVuZ2libGUgYXNzZXRzIGZyb20gYSBwdWJsaWMgb3JpZ2luLgAlAVRoaXMgbmV3IGFzc2V0IGNsYXNzIGhhcyBubyBhc3NldHMgaW5pdGlhbGx5IGFuZCBpdHMgb3duZXIgaXMgdGhlIG9yaWdpbi4AYQFUaGUgb3JpZ2luIG11c3QgY29uZm9ybSB0byB0aGUgY29uZmlndXJlZCBgQ3JlYXRlT3JpZ2luYCBhbmQgaGF2ZSBzdWZmaWNpZW50IGZ1bmRzIGZyZWUuALxGdW5kcyBvZiBzZW5kZXIgYXJlIHJlc2VydmVkIGJ5IGBBc3NldERlcG9zaXRgLgAsUGFyYW1ldGVyczpZAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIG5ldyBhc3NldC4gVGhpcyBtdXN0IG5vdCBiZSBjdXJyZW50bHkgaW4gdXNlIHRvIGlkZW50aWZ5MQFhbiBleGlzdGluZyBhc3NldC4gSWYgW2BOZXh0QXNzZXRJZGBdIGlzIHNldCwgdGhlbiB0aGlzIG11c3QgYmUgZXF1YWwgdG8gaXQuWQEtIGBhZG1pbmA6IFRoZSBhZG1pbiBvZiB0aGlzIGNsYXNzIG9mIGFzc2V0cy4gVGhlIGFkbWluIGlzIHRoZSBpbml0aWFsIGFkZHJlc3Mgb2YgZWFjaJxtZW1iZXIgb2YgdGhlIGFzc2V0IGNsYXNzJ3MgYWRtaW4gdGVhbS5NAS0gYG1pbl9iYWxhbmNlYDogVGhlIG1pbmltdW0gYmFsYW5jZSBvZiB0aGlzIG5ldyBhc3NldCB0aGF0IGFueSBzaW5nbGUgYWNjb3VudCBtdXN0PQFoYXZlLiBJZiBhbiBhY2NvdW50J3MgYmFsYW5jZSBpcyByZWR1Y2VkIGJlbG93IHRoaXMsIHRoZW4gaXQgY29sbGFwc2VzIHRvIHplcm8uAJhFbWl0cyBgQ3JlYXRlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLgA4V2VpZ2h0OiBgTygxKWAwZm9yY2VfY3JlYXRlEAEIaWQ5AgFMVDo6QXNzZXRJZFBhcmFtZXRlcgABFG93bmVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AATRpc19zdWZmaWNpZW50mQEBEGJvb2wAASxtaW5fYmFsYW5jZZEBAShUOjpCYWxhbmNlAAFM+Elzc3VlIGEgbmV3IGNsYXNzIG9mIGZ1bmdpYmxlIGFzc2V0cyBmcm9tIGEgcHJpdmlsZWdlZCBvcmlnaW4uALRUaGlzIG5ldyBhc3NldCBjbGFzcyBoYXMgbm8gYXNzZXRzIGluaXRpYWxseS4ApFRoZSBvcmlnaW4gbXVzdCBjb25mb3JtIHRvIGBGb3JjZU9yaWdpbmAuAJxVbmxpa2UgYGNyZWF0ZWAsIG5vIGZ1bmRzIGFyZSByZXNlcnZlZC4AWQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBuZXcgYXNzZXQuIFRoaXMgbXVzdCBub3QgYmUgY3VycmVudGx5IGluIHVzZSB0byBpZGVudGlmeTEBYW4gZXhpc3RpbmcgYXNzZXQuIElmIFtgTmV4dEFzc2V0SWRgXSBpcyBzZXQsIHRoZW4gdGhpcyBtdXN0IGJlIGVxdWFsIHRvIGl0LlkBLSBgb3duZXJgOiBUaGUgb3duZXIgb2YgdGhpcyBjbGFzcyBvZiBhc3NldHMuIFRoZSBvd25lciBoYXMgZnVsbCBzdXBlcnVzZXIgcGVybWlzc2lvbnMlAW92ZXIgdGhpcyBhc3NldCwgYnV0IG1heSBsYXRlciBjaGFuZ2UgYW5kIGNvbmZpZ3VyZSB0aGUgcGVybWlzc2lvbnMgdXNpbmeQYHRyYW5zZmVyX293bmVyc2hpcGAgYW5kIGBzZXRfdGVhbWAuTQEtIGBtaW5fYmFsYW5jZWA6IFRoZSBtaW5pbXVtIGJhbGFuY2Ugb2YgdGhpcyBuZXcgYXNzZXQgdGhhdCBhbnkgc2luZ2xlIGFjY291bnQgbXVzdD0BaGF2ZS4gSWYgYW4gYWNjb3VudCdzIGJhbGFuY2UgaXMgcmVkdWNlZCBiZWxvdyB0aGlzLCB0aGVuIGl0IGNvbGxhcHNlcyB0byB6ZXJvLgCsRW1pdHMgYEZvcmNlQ3JlYXRlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLgA4V2VpZ2h0OiBgTygxKWA0c3RhcnRfZGVzdHJveQQBCGlkOQIBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAAjDcU3RhcnQgdGhlIHByb2Nlc3Mgb2YgZGVzdHJveWluZyBhIGZ1bmdpYmxlIGFzc2V0IGNsYXNzLgBZAWBzdGFydF9kZXN0cm95YCBpcyB0aGUgZmlyc3QgaW4gYSBzZXJpZXMgb2YgZXh0cmluc2ljcyB0aGF0IHNob3VsZCBiZSBjYWxsZWQsIHRvIGFsbG93eGRlc3RydWN0aW9uIG9mIGFuIGFzc2V0IGNsYXNzLgBRAVRoZSBvcmlnaW4gbXVzdCBjb25mb3JtIHRvIGBGb3JjZU9yaWdpbmAgb3IgbXVzdCBiZSBgU2lnbmVkYCBieSB0aGUgYXNzZXQncyBgb3duZXJgLgBNAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIGRlc3Ryb3llZC4gVGhpcyBtdXN0IGlkZW50aWZ5IGFuIGV4aXN0aW5nICAgYXNzZXQuAEkBSXQgd2lsbCBmYWlsIHdpdGggZWl0aGVyIFtgRXJyb3I6OkNvbnRhaW5zSG9sZHNgXSBvciBbYEVycm9yOjpDb250YWluc0ZyZWV6ZXNgXSBpZrhhbiBhY2NvdW50IGNvbnRhaW5zIGhvbGRzIG9yIGZyZWV6ZXMgaW4gcGxhY2UuQGRlc3Ryb3lfYWNjb3VudHMEAQhpZDkCAUxUOjpBc3NldElkUGFyYW1ldGVyAAMwzERlc3Ryb3kgYWxsIGFjY291bnRzIGFzc29jaWF0ZWQgd2l0aCBhIGdpdmVuIGFzc2V0LgBdAWBkZXN0cm95X2FjY291bnRzYCBzaG91bGQgb25seSBiZSBjYWxsZWQgYWZ0ZXIgYHN0YXJ0X2Rlc3Ryb3lgIGhhcyBiZWVuIGNhbGxlZCwgYW5kIHRoZYRhc3NldCBpcyBpbiBhIGBEZXN0cm95aW5nYCBzdGF0ZS4AXQFEdWUgdG8gd2VpZ2h0IHJlc3RyaWN0aW9ucywgdGhpcyBmdW5jdGlvbiBtYXkgbmVlZCB0byBiZSBjYWxsZWQgbXVsdGlwbGUgdGltZXMgdG8gZnVsbHkxAWRlc3Ryb3kgYWxsIGFjY291bnRzLiBJdCB3aWxsIGRlc3Ryb3kgYFJlbW92ZUl0ZW1zTGltaXRgIGFjY291bnRzIGF0IGEgdGltZS4ATQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBiZSBkZXN0cm95ZWQuIFRoaXMgbXVzdCBpZGVudGlmeSBhbiBleGlzdGluZyAgIGFzc2V0LgDURWFjaCBjYWxsIGVtaXRzIHRoZSBgRXZlbnQ6OkRlc3Ryb3llZEFjY291bnRzYCBldmVudC5EZGVzdHJveV9hcHByb3ZhbHMEAQhpZDkCAUxUOjpBc3NldElkUGFyYW1ldGVyAAQwYQFEZXN0cm95IGFsbCBhcHByb3ZhbHMgYXNzb2NpYXRlZCB3aXRoIGEgZ2l2ZW4gYXNzZXQgdXAgdG8gdGhlIG1heCAoVDo6UmVtb3ZlSXRlbXNMaW1pdCkuAGEBYGRlc3Ryb3lfYXBwcm92YWxzYCBzaG91bGQgb25seSBiZSBjYWxsZWQgYWZ0ZXIgYHN0YXJ0X2Rlc3Ryb3lgIGhhcyBiZWVuIGNhbGxlZCwgYW5kIHRoZYRhc3NldCBpcyBpbiBhIGBEZXN0cm95aW5nYCBzdGF0ZS4AXQFEdWUgdG8gd2VpZ2h0IHJlc3RyaWN0aW9ucywgdGhpcyBmdW5jdGlvbiBtYXkgbmVlZCB0byBiZSBjYWxsZWQgbXVsdGlwbGUgdGltZXMgdG8gZnVsbHk5AWRlc3Ryb3kgYWxsIGFwcHJvdmFscy4gSXQgd2lsbCBkZXN0cm95IGBSZW1vdmVJdGVtc0xpbWl0YCBhcHByb3ZhbHMgYXQgYSB0aW1lLgBNAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIGRlc3Ryb3llZC4gVGhpcyBtdXN0IGlkZW50aWZ5IGFuIGV4aXN0aW5nICAgYXNzZXQuANhFYWNoIGNhbGwgZW1pdHMgdGhlIGBFdmVudDo6RGVzdHJveWVkQXBwcm92YWxzYCBldmVudC44ZmluaXNoX2Rlc3Ryb3kEAQhpZDkCAUxUOjpBc3NldElkUGFyYW1ldGVyAAUoxENvbXBsZXRlIGRlc3Ryb3lpbmcgYXNzZXQgYW5kIHVucmVzZXJ2ZSBjdXJyZW5jeS4AVQFgZmluaXNoX2Rlc3Ryb3lgIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBhZnRlciBgc3RhcnRfZGVzdHJveWAgaGFzIGJlZW4gY2FsbGVkLCBhbmQgdGhlWQFhc3NldCBpcyBpbiBhIGBEZXN0cm95aW5nYCBzdGF0ZS4gQWxsIGFjY291bnRzIG9yIGFwcHJvdmFscyBzaG91bGQgYmUgZGVzdHJveWVkIGJlZm9yZRRoYW5kLgBNAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIGRlc3Ryb3llZC4gVGhpcyBtdXN0IGlkZW50aWZ5IGFuIGV4aXN0aW5nICAgYXNzZXQuAOBFYWNoIHN1Y2Nlc3NmdWwgY2FsbCBlbWl0cyB0aGUgYEV2ZW50OjpEZXN0cm95ZWRgIGV2ZW50LhBtaW50DAEIaWQ5AgFMVDo6QXNzZXRJZFBhcmFtZXRlcgABLGJlbmVmaWNpYXJ5AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARhhbW91bnSRAQEoVDo6QmFsYW5jZQAGMIhNaW50IGFzc2V0cyBvZiBhIHBhcnRpY3VsYXIgY2xhc3MuADkBVGhlIG9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBtdXN0IGJlIHRoZSBJc3N1ZXIgb2YgdGhlIGFzc2V0IGBpZGAuAPwtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBoYXZlIHNvbWUgYW1vdW50IG1pbnRlZC4NAS0gYGJlbmVmaWNpYXJ5YDogVGhlIGFjY291bnQgdG8gYmUgY3JlZGl0ZWQgd2l0aCB0aGUgbWludGVkIGFzc2V0cy7ELSBgYW1vdW50YDogVGhlIGFtb3VudCBvZiB0aGUgYXNzZXQgdG8gYmUgbWludGVkLgCURW1pdHMgYElzc3VlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLgA4V2VpZ2h0OiBgTygxKWBVAU1vZGVzOiBQcmUtZXhpc3RpbmcgYmFsYW5jZSBvZiBgYmVuZWZpY2lhcnlgOyBBY2NvdW50IHByZS1leGlzdGVuY2Ugb2YgYGJlbmVmaWNpYXJ5YC4QYnVybgwBCGlkOQIBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAAQx3aG8AAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGFtb3VudJEBAShUOjpCYWxhbmNlAAc8RQFSZWR1Y2UgdGhlIGJhbGFuY2Ugb2YgYHdob2AgYnkgYXMgbXVjaCBhcyBwb3NzaWJsZSB1cCB0byBgYW1vdW50YCBhc3NldHMgb2YgYGlkYC4ANQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBNYW5hZ2VyIG9mIHRoZSBhc3NldCBgaWRgLgDQQmFpbHMgd2l0aCBgTm9BY2NvdW50YCBpZiB0aGUgYHdob2AgaXMgYWxyZWFkeSBkZWFkLgD8LSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gaGF2ZSBzb21lIGFtb3VudCBidXJuZWQuoC0gYHdob2A6IFRoZSBhY2NvdW50IHRvIGJlIGRlYml0ZWQgZnJvbS4pAS0gYGFtb3VudGA6IFRoZSBtYXhpbXVtIGFtb3VudCBieSB3aGljaCBgd2hvYCdzIGJhbGFuY2Ugc2hvdWxkIGJlIHJlZHVjZWQuAFEBRW1pdHMgYEJ1cm5lZGAgd2l0aCB0aGUgYWN0dWFsIGFtb3VudCBidXJuZWQuIElmIHRoaXMgdGFrZXMgdGhlIGJhbGFuY2UgdG8gYmVsb3cgdGhlOQFtaW5pbXVtIGZvciB0aGUgYXNzZXQsIHRoZW4gdGhlIGFtb3VudCBidXJuZWQgaXMgaW5jcmVhc2VkIHRvIHRha2UgaXQgdG8gemVyby4AOFdlaWdodDogYE8oMSlgCQFNb2RlczogUG9zdC1leGlzdGVuY2Ugb2YgYHdob2A7IFByZSAmIHBvc3QgWm9tYmllLXN0YXR1cyBvZiBgd2hvYC4gdHJhbnNmZXIMAQhpZDkCAUxUOjpBc3NldElkUGFyYW1ldGVyAAEYdGFyZ2V0AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARhhbW91bnSRAQEoVDo6QmFsYW5jZQAISNBNb3ZlIHNvbWUgYXNzZXRzIGZyb20gdGhlIHNlbmRlciBhY2NvdW50IHRvIGFub3RoZXIuAFhPcmlnaW4gbXVzdCBiZSBTaWduZWQuABEBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gaGF2ZSBzb21lIGFtb3VudCB0cmFuc2ZlcnJlZC6cLSBgdGFyZ2V0YDogVGhlIGFjY291bnQgdG8gYmUgY3JlZGl0ZWQuUQEtIGBhbW91bnRgOiBUaGUgYW1vdW50IGJ5IHdoaWNoIHRoZSBzZW5kZXIncyBiYWxhbmNlIG9mIGFzc2V0cyBzaG91bGQgYmUgcmVkdWNlZCBhbmRhAWB0YXJnZXRgJ3MgYmFsYW5jZSBpbmNyZWFzZWQuIFRoZSBhbW91bnQgYWN0dWFsbHkgdHJhbnNmZXJyZWQgbWF5IGJlIHNsaWdodGx5IGdyZWF0ZXIgaW5dAXRoZSBjYXNlIHRoYXQgdGhlIHRyYW5zZmVyIHdvdWxkIG90aGVyd2lzZSB0YWtlIHRoZSBzZW5kZXIgYmFsYW5jZSBhYm92ZSB6ZXJvIGJ1dCBiZWxvd7x0aGUgbWluaW11bSBiYWxhbmNlLiBNdXN0IGJlIGdyZWF0ZXIgdGhhbiB6ZXJvLgBhAUVtaXRzIGBUcmFuc2ZlcnJlZGAgd2l0aCB0aGUgYWN0dWFsIGFtb3VudCB0cmFuc2ZlcnJlZC4gSWYgdGhpcyB0YWtlcyB0aGUgc291cmNlIGJhbGFuY2VdAXRvIGJlbG93IHRoZSBtaW5pbXVtIGZvciB0aGUgYXNzZXQsIHRoZW4gdGhlIGFtb3VudCB0cmFuc2ZlcnJlZCBpcyBpbmNyZWFzZWQgdG8gdGFrZSBpdCB0byB6ZXJvLgA4V2VpZ2h0OiBgTygxKWBRAU1vZGVzOiBQcmUtZXhpc3RlbmNlIG9mIGB0YXJnZXRgOyBQb3N0LWV4aXN0ZW5jZSBvZiBzZW5kZXI7IEFjY291bnQgcHJlLWV4aXN0ZW5jZSBvZiRgdGFyZ2V0YC5MdHJhbnNmZXJfa2VlcF9hbGl2ZQwBCGlkOQIBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARh0YXJnZXQAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGFtb3VudJEBAShUOjpCYWxhbmNlAAlIWQFNb3ZlIHNvbWUgYXNzZXRzIGZyb20gdGhlIHNlbmRlciBhY2NvdW50IHRvIGFub3RoZXIsIGtlZXBpbmcgdGhlIHNlbmRlciBhY2NvdW50IGFsaXZlLgBYT3JpZ2luIG11c3QgYmUgU2lnbmVkLgARAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGhhdmUgc29tZSBhbW91bnQgdHJhbnNmZXJyZWQunC0gYHRhcmdldGA6IFRoZSBhY2NvdW50IHRvIGJlIGNyZWRpdGVkLlEBLSBgYW1vdW50YDogVGhlIGFtb3VudCBieSB3aGljaCB0aGUgc2VuZGVyJ3MgYmFsYW5jZSBvZiBhc3NldHMgc2hvdWxkIGJlIHJlZHVjZWQgYW5kYQFgdGFyZ2V0YCdzIGJhbGFuY2UgaW5jcmVhc2VkLiBUaGUgYW1vdW50IGFjdHVhbGx5IHRyYW5zZmVycmVkIG1heSBiZSBzbGlnaHRseSBncmVhdGVyIGluXQF0aGUgY2FzZSB0aGF0IHRoZSB0cmFuc2ZlciB3b3VsZCBvdGhlcndpc2UgdGFrZSB0aGUgc2VuZGVyIGJhbGFuY2UgYWJvdmUgemVybyBidXQgYmVsb3e8dGhlIG1pbmltdW0gYmFsYW5jZS4gTXVzdCBiZSBncmVhdGVyIHRoYW4gemVyby4AYQFFbWl0cyBgVHJhbnNmZXJyZWRgIHdpdGggdGhlIGFjdHVhbCBhbW91bnQgdHJhbnNmZXJyZWQuIElmIHRoaXMgdGFrZXMgdGhlIHNvdXJjZSBiYWxhbmNlXQF0byBiZWxvdyB0aGUgbWluaW11bSBmb3IgdGhlIGFzc2V0LCB0aGVuIHRoZSBhbW91bnQgdHJhbnNmZXJyZWQgaXMgaW5jcmVhc2VkIHRvIHRha2UgaXQgdG8gemVyby4AOFdlaWdodDogYE8oMSlgUQFNb2RlczogUHJlLWV4aXN0ZW5jZSBvZiBgdGFyZ2V0YDsgUG9zdC1leGlzdGVuY2Ugb2Ygc2VuZGVyOyBBY2NvdW50IHByZS1leGlzdGVuY2Ugb2YkYHRhcmdldGAuOGZvcmNlX3RyYW5zZmVyEAEIaWQ5AgFMVDo6QXNzZXRJZFBhcmFtZXRlcgABGHNvdXJjZQABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEQZGVzdAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYYW1vdW50kQEBKFQ6OkJhbGFuY2UACky0TW92ZSBzb21lIGFzc2V0cyBmcm9tIG9uZSBhY2NvdW50IHRvIGFub3RoZXIuAC0BT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgQWRtaW4gb2YgdGhlIGFzc2V0IGBpZGAuABEBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gaGF2ZSBzb21lIGFtb3VudCB0cmFuc2ZlcnJlZC6YLSBgc291cmNlYDogVGhlIGFjY291bnQgdG8gYmUgZGViaXRlZC6ULSBgZGVzdGA6IFRoZSBhY2NvdW50IHRvIGJlIGNyZWRpdGVkLlkBLSBgYW1vdW50YDogVGhlIGFtb3VudCBieSB3aGljaCB0aGUgYHNvdXJjZWAncyBiYWxhbmNlIG9mIGFzc2V0cyBzaG91bGQgYmUgcmVkdWNlZCBhbmRZAWBkZXN0YCdzIGJhbGFuY2UgaW5jcmVhc2VkLiBUaGUgYW1vdW50IGFjdHVhbGx5IHRyYW5zZmVycmVkIG1heSBiZSBzbGlnaHRseSBncmVhdGVyIGluTQF0aGUgY2FzZSB0aGF0IHRoZSB0cmFuc2ZlciB3b3VsZCBvdGhlcndpc2UgdGFrZSB0aGUgYHNvdXJjZWAgYmFsYW5jZSBhYm92ZSB6ZXJvIGJ1dNRiZWxvdyB0aGUgbWluaW11bSBiYWxhbmNlLiBNdXN0IGJlIGdyZWF0ZXIgdGhhbiB6ZXJvLgBhAUVtaXRzIGBUcmFuc2ZlcnJlZGAgd2l0aCB0aGUgYWN0dWFsIGFtb3VudCB0cmFuc2ZlcnJlZC4gSWYgdGhpcyB0YWtlcyB0aGUgc291cmNlIGJhbGFuY2VdAXRvIGJlbG93IHRoZSBtaW5pbXVtIGZvciB0aGUgYXNzZXQsIHRoZW4gdGhlIGFtb3VudCB0cmFuc2ZlcnJlZCBpcyBpbmNyZWFzZWQgdG8gdGFrZSBpdCB0byB6ZXJvLgA4V2VpZ2h0OiBgTygxKWBRAU1vZGVzOiBQcmUtZXhpc3RlbmNlIG9mIGBkZXN0YDsgUG9zdC1leGlzdGVuY2Ugb2YgYHNvdXJjZWA7IEFjY291bnQgcHJlLWV4aXN0ZW5jZSBvZhxgZGVzdGAuGGZyZWV6ZQgBCGlkOQIBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAAQx3aG8AAVBBY2NvdW50SWRMb29rdXBPZjxUPgALMFUBRGlzYWxsb3cgZnVydGhlciB1bnByaXZpbGVnZWQgdHJhbnNmZXJzIG9mIGFuIGFzc2V0IGBpZGAgZnJvbSBhbiBhY2NvdW50IGB3aG9gLiBgd2hvYE0BbXVzdCBhbHJlYWR5IGV4aXN0IGFzIGFuIGVudHJ5IGluIGBBY2NvdW50YHMgb2YgdGhlIGFzc2V0LiBJZiB5b3Ugd2FudCB0byBmcmVlemUgYW70YWNjb3VudCB0aGF0IGRvZXMgbm90IGhhdmUgYW4gZW50cnksIHVzZSBgdG91Y2hfb3RoZXJgIGZpcnN0LgA1AU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEZyZWV6ZXIgb2YgdGhlIGFzc2V0IGBpZGAuAMQtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBiZSBmcm96ZW4uiC0gYHdob2A6IFRoZSBhY2NvdW50IHRvIGJlIGZyb3plbi4APEVtaXRzIGBGcm96ZW5gLgA4V2VpZ2h0OiBgTygxKWAQdGhhdwgBCGlkOQIBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAAQx3aG8AAVBBY2NvdW50SWRMb29rdXBPZjxUPgAMKOhBbGxvdyB1bnByaXZpbGVnZWQgdHJhbnNmZXJzIHRvIGFuZCBmcm9tIGFuIGFjY291bnQgYWdhaW4uAC0BT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgQWRtaW4gb2YgdGhlIGFzc2V0IGBpZGAuAMQtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBiZSBmcm96ZW4ukC0gYHdob2A6IFRoZSBhY2NvdW50IHRvIGJlIHVuZnJvemVuLgA8RW1pdHMgYFRoYXdlZGAuADhXZWlnaHQ6IGBPKDEpYDBmcmVlemVfYXNzZXQEAQhpZDkCAUxUOjpBc3NldElkUGFyYW1ldGVyAA0k8ERpc2FsbG93IGZ1cnRoZXIgdW5wcml2aWxlZ2VkIHRyYW5zZmVycyBmb3IgdGhlIGFzc2V0IGNsYXNzLgA1AU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEZyZWV6ZXIgb2YgdGhlIGFzc2V0IGBpZGAuAMQtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBiZSBmcm96ZW4uADxFbWl0cyBgRnJvemVuYC4AOFdlaWdodDogYE8oMSlgKHRoYXdfYXNzZXQEAQhpZDkCAUxUOjpBc3NldElkUGFyYW1ldGVyAA4kxEFsbG93IHVucHJpdmlsZWdlZCB0cmFuc2ZlcnMgZm9yIHRoZSBhc3NldCBhZ2Fpbi4ALQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBBZG1pbiBvZiB0aGUgYXNzZXQgYGlkYC4AxC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIHRoYXdlZC4APEVtaXRzIGBUaGF3ZWRgLgA4V2VpZ2h0OiBgTygxKWBIdHJhbnNmZXJfb3duZXJzaGlwCAEIaWQ5AgFMVDo6QXNzZXRJZFBhcmFtZXRlcgABFG93bmVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4ADyh0Q2hhbmdlIHRoZSBPd25lciBvZiBhbiBhc3NldC4ALQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBPd25lciBvZiB0aGUgYXNzZXQgYGlkYC4AkC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0LpwtIGBvd25lcmA6IFRoZSBuZXcgT3duZXIgb2YgdGhpcyBhc3NldC4AVEVtaXRzIGBPd25lckNoYW5nZWRgLgA4V2VpZ2h0OiBgTygxKWAgc2V0X3RlYW0QAQhpZDkCAUxUOjpBc3NldElkUGFyYW1ldGVyAAEYaXNzdWVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARRhZG1pbgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEcZnJlZXplcgABUEFjY291bnRJZExvb2t1cE9mPFQ+ABAwxENoYW5nZSB0aGUgSXNzdWVyLCBBZG1pbiBhbmQgRnJlZXplciBvZiBhbiBhc3NldC4ALQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBPd25lciBvZiB0aGUgYXNzZXQgYGlkYC4AxC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIGZyb3plbi6kLSBgaXNzdWVyYDogVGhlIG5ldyBJc3N1ZXIgb2YgdGhpcyBhc3NldC6cLSBgYWRtaW5gOiBUaGUgbmV3IEFkbWluIG9mIHRoaXMgYXNzZXQurC0gYGZyZWV6ZXJgOiBUaGUgbmV3IEZyZWV6ZXIgb2YgdGhpcyBhc3NldC4AUEVtaXRzIGBUZWFtQ2hhbmdlZGAuADhXZWlnaHQ6IGBPKDEpYDBzZXRfbWV0YWRhdGEQAQhpZDkCAUxUOjpBc3NldElkUGFyYW1ldGVyAAEQbmFtZRgBHFZlYzx1OD4AARhzeW1ib2wYARxWZWM8dTg+AAEgZGVjaW1hbHMMAQh1OAARQHhTZXQgdGhlIG1ldGFkYXRhIGZvciBhbiBhc3NldC4ALQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBPd25lciBvZiB0aGUgYXNzZXQgYGlkYC4A2EZ1bmRzIG9mIHNlbmRlciBhcmUgcmVzZXJ2ZWQgYWNjb3JkaW5nIHRvIHRoZSBmb3JtdWxhOlEBYE1ldGFkYXRhRGVwb3NpdEJhc2UgKyBNZXRhZGF0YURlcG9zaXRQZXJCeXRlICogKG5hbWUubGVuICsgc3ltYm9sLmxlbilgIHRha2luZyBpbnRvjGFjY291bnQgYW55IGFscmVhZHkgcmVzZXJ2ZWQgZnVuZHMuALgtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byB1cGRhdGUuTQEtIGBuYW1lYDogVGhlIHVzZXIgZnJpZW5kbHkgbmFtZSBvZiB0aGlzIGFzc2V0LiBMaW1pdGVkIGluIGxlbmd0aCBieSBgU3RyaW5nTGltaXRgLk0BLSBgc3ltYm9sYDogVGhlIGV4Y2hhbmdlIHN5bWJvbCBmb3IgdGhpcyBhc3NldC4gTGltaXRlZCBpbiBsZW5ndGggYnkgYFN0cmluZ0xpbWl0YC4tAS0gYGRlY2ltYWxzYDogVGhlIG51bWJlciBvZiBkZWNpbWFscyB0aGlzIGFzc2V0IHVzZXMgdG8gcmVwcmVzZW50IG9uZSB1bml0LgBQRW1pdHMgYE1ldGFkYXRhU2V0YC4AOFdlaWdodDogYE8oMSlgOGNsZWFyX21ldGFkYXRhBAEIaWQ5AgFMVDo6QXNzZXRJZFBhcmFtZXRlcgASLIBDbGVhciB0aGUgbWV0YWRhdGEgZm9yIGFuIGFzc2V0LgAtAU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIE93bmVyIG9mIHRoZSBhc3NldCBgaWRgLgCkQW55IGRlcG9zaXQgaXMgZnJlZWQgZm9yIHRoZSBhc3NldCBvd25lci4AtC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGNsZWFyLgBgRW1pdHMgYE1ldGFkYXRhQ2xlYXJlZGAuADhXZWlnaHQ6IGBPKDEpYEhmb3JjZV9zZXRfbWV0YWRhdGEUAQhpZDkCAUxUOjpBc3NldElkUGFyYW1ldGVyAAEQbmFtZRgBHFZlYzx1OD4AARhzeW1ib2wYARxWZWM8dTg+AAEgZGVjaW1hbHMMAQh1OAABJGlzX2Zyb3plbpkBARBib29sABM4uEZvcmNlIHRoZSBtZXRhZGF0YSBmb3IgYW4gYXNzZXQgdG8gc29tZSB2YWx1ZS4AbE9yaWdpbiBtdXN0IGJlIEZvcmNlT3JpZ2luLgBoQW55IGRlcG9zaXQgaXMgbGVmdCBhbG9uZS4AuC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIHVwZGF0ZS5NAS0gYG5hbWVgOiBUaGUgdXNlciBmcmllbmRseSBuYW1lIG9mIHRoaXMgYXNzZXQuIExpbWl0ZWQgaW4gbGVuZ3RoIGJ5IGBTdHJpbmdMaW1pdGAuTQEtIGBzeW1ib2xgOiBUaGUgZXhjaGFuZ2Ugc3ltYm9sIGZvciB0aGlzIGFzc2V0LiBMaW1pdGVkIGluIGxlbmd0aCBieSBgU3RyaW5nTGltaXRgLi0BLSBgZGVjaW1hbHNgOiBUaGUgbnVtYmVyIG9mIGRlY2ltYWxzIHRoaXMgYXNzZXQgdXNlcyB0byByZXByZXNlbnQgb25lIHVuaXQuAFBFbWl0cyBgTWV0YWRhdGFTZXRgLgBRAVdlaWdodDogYE8oTiArIFMpYCB3aGVyZSBOIGFuZCBTIGFyZSB0aGUgbGVuZ3RoIG9mIHRoZSBuYW1lIGFuZCBzeW1ib2wgcmVzcGVjdGl2ZWx5LlBmb3JjZV9jbGVhcl9tZXRhZGF0YQQBCGlkOQIBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAFCyAQ2xlYXIgdGhlIG1ldGFkYXRhIGZvciBhbiBhc3NldC4AbE9yaWdpbiBtdXN0IGJlIEZvcmNlT3JpZ2luLgBgQW55IGRlcG9zaXQgaXMgcmV0dXJuZWQuALQtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBjbGVhci4AYEVtaXRzIGBNZXRhZGF0YUNsZWFyZWRgLgA4V2VpZ2h0OiBgTygxKWBIZm9yY2VfYXNzZXRfc3RhdHVzIAEIaWQ5AgFMVDo6QXNzZXRJZFBhcmFtZXRlcgABFG93bmVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARhpc3N1ZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABFGFkbWluAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARxmcmVlemVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AASxtaW5fYmFsYW5jZZEBAShUOjpCYWxhbmNlAAE0aXNfc3VmZmljaWVudJkBARBib29sAAEkaXNfZnJvemVumQEBEGJvb2wAFViYQWx0ZXIgdGhlIGF0dHJpYnV0ZXMgb2YgYSBnaXZlbiBhc3NldC4AdE9yaWdpbiBtdXN0IGJlIGBGb3JjZU9yaWdpbmAuAJAtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldC6cLSBgb3duZXJgOiBUaGUgbmV3IE93bmVyIG9mIHRoaXMgYXNzZXQupC0gYGlzc3VlcmA6IFRoZSBuZXcgSXNzdWVyIG9mIHRoaXMgYXNzZXQunC0gYGFkbWluYDogVGhlIG5ldyBBZG1pbiBvZiB0aGlzIGFzc2V0LqwtIGBmcmVlemVyYDogVGhlIG5ldyBGcmVlemVyIG9mIHRoaXMgYXNzZXQuTQEtIGBtaW5fYmFsYW5jZWA6IFRoZSBtaW5pbXVtIGJhbGFuY2Ugb2YgdGhpcyBuZXcgYXNzZXQgdGhhdCBhbnkgc2luZ2xlIGFjY291bnQgbXVzdD0BaGF2ZS4gSWYgYW4gYWNjb3VudCdzIGJhbGFuY2UgaXMgcmVkdWNlZCBiZWxvdyB0aGlzLCB0aGVuIGl0IGNvbGxhcHNlcyB0byB6ZXJvLlEBLSBgaXNfc3VmZmljaWVudGA6IFdoZXRoZXIgYSBub24temVybyBiYWxhbmNlIG9mIHRoaXMgYXNzZXQgaXMgZGVwb3NpdCBvZiBzdWZmaWNpZW50TQF2YWx1ZSB0byBhY2NvdW50IGZvciB0aGUgc3RhdGUgYmxvYXQgYXNzb2NpYXRlZCB3aXRoIGl0cyBiYWxhbmNlIHN0b3JhZ2UuIElmIHNldCB0b1UBYHRydWVgLCB0aGVuIG5vbi16ZXJvIGJhbGFuY2VzIG1heSBiZSBzdG9yZWQgd2l0aG91dCBhIGBjb25zdW1lcmAgcmVmZXJlbmNlIChhbmQgdGh1c00BYW4gRUQgaW4gdGhlIEJhbGFuY2VzIHBhbGxldCBvciB3aGF0ZXZlciBlbHNlIGlzIHVzZWQgdG8gY29udHJvbCB1c2VyLWFjY291bnQgc3RhdGUgZ3Jvd3RoKS49AS0gYGlzX2Zyb3plbmA6IFdoZXRoZXIgdGhpcyBhc3NldCBjbGFzcyBpcyBmcm96ZW4gZXhjZXB0IGZvciBwZXJtaXNzaW9uZWQvYWRtaW40aW5zdHJ1Y3Rpb25zLgDoRW1pdHMgYEFzc2V0U3RhdHVzQ2hhbmdlZGAgd2l0aCB0aGUgaWRlbnRpdHkgb2YgdGhlIGFzc2V0LgA4V2VpZ2h0OiBgTygxKWBAYXBwcm92ZV90cmFuc2ZlcgwBCGlkOQIBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAASBkZWxlZ2F0ZQABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYYW1vdW50kQEBKFQ6OkJhbGFuY2UAFlAtAUFwcHJvdmUgYW4gYW1vdW50IG9mIGFzc2V0IGZvciB0cmFuc2ZlciBieSBhIGRlbGVnYXRlZCB0aGlyZC1wYXJ0eSBhY2NvdW50LgBYT3JpZ2luIG11c3QgYmUgU2lnbmVkLgBNAUVuc3VyZXMgdGhhdCBgQXBwcm92YWxEZXBvc2l0YCB3b3J0aCBvZiBgQ3VycmVuY3lgIGlzIHJlc2VydmVkIGZyb20gc2lnbmluZyBhY2NvdW50VQFmb3IgdGhlIHB1cnBvc2Ugb2YgaG9sZGluZyB0aGUgYXBwcm92YWwuIElmIHNvbWUgbm9uLXplcm8gYW1vdW50IG9mIGFzc2V0cyBpcyBhbHJlYWR5SQFhcHByb3ZlZCBmcm9tIHNpZ25pbmcgYWNjb3VudCB0byBgZGVsZWdhdGVgLCB0aGVuIGl0IGlzIHRvcHBlZCB1cCBvciB1bnJlc2VydmVkIHRvVG1lZXQgdGhlIHJpZ2h0IHZhbHVlLgBFAU5PVEU6IFRoZSBzaWduaW5nIGFjY291bnQgZG9lcyBub3QgbmVlZCB0byBvd24gYGFtb3VudGAgb2YgYXNzZXRzIGF0IHRoZSBwb2ludCBvZkRtYWtpbmcgdGhpcyBjYWxsLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQuDQEtIGBkZWxlZ2F0ZWA6IFRoZSBhY2NvdW50IHRvIGRlbGVnYXRlIHBlcm1pc3Npb24gdG8gdHJhbnNmZXIgYXNzZXQuSQEtIGBhbW91bnRgOiBUaGUgYW1vdW50IG9mIGFzc2V0IHRoYXQgbWF5IGJlIHRyYW5zZmVycmVkIGJ5IGBkZWxlZ2F0ZWAuIElmIHRoZXJlIGlz4GFscmVhZHkgYW4gYXBwcm92YWwgaW4gcGxhY2UsIHRoZW4gdGhpcyBhY3RzIGFkZGl0aXZlbHkuAJBFbWl0cyBgQXBwcm92ZWRUcmFuc2ZlcmAgb24gc3VjY2Vzcy4AOFdlaWdodDogYE8oMSlgPGNhbmNlbF9hcHByb3ZhbAgBCGlkOQIBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAASBkZWxlZ2F0ZQABUEFjY291bnRJZExvb2t1cE9mPFQ+ABc0SQFDYW5jZWwgYWxsIG9mIHNvbWUgYXNzZXQgYXBwcm92ZWQgZm9yIGRlbGVnYXRlZCB0cmFuc2ZlciBieSBhIHRoaXJkLXBhcnR5IGFjY291bnQuAD0BT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGVyZSBtdXN0IGJlIGFuIGFwcHJvdmFsIGluIHBsYWNlIGJldHdlZW4gc2lnbmVyIGFuZCxgZGVsZWdhdGVgLgBJAVVucmVzZXJ2ZXMgYW55IGRlcG9zaXQgcHJldmlvdXNseSByZXNlcnZlZCBieSBgYXBwcm92ZV90cmFuc2ZlcmAgZm9yIHRoZSBhcHByb3ZhbC4AkC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0LgUBLSBgZGVsZWdhdGVgOiBUaGUgYWNjb3VudCBkZWxlZ2F0ZWQgcGVybWlzc2lvbiB0byB0cmFuc2ZlciBhc3NldC4AlEVtaXRzIGBBcHByb3ZhbENhbmNlbGxlZGAgb24gc3VjY2Vzcy4AOFdlaWdodDogYE8oMSlgVGZvcmNlX2NhbmNlbF9hcHByb3ZhbAwBCGlkOQIBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARRvd25lcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEgZGVsZWdhdGUAAVBBY2NvdW50SWRMb29rdXBPZjxUPgAYNEkBQ2FuY2VsIGFsbCBvZiBzb21lIGFzc2V0IGFwcHJvdmVkIGZvciBkZWxlZ2F0ZWQgdHJhbnNmZXIgYnkgYSB0aGlyZC1wYXJ0eSBhY2NvdW50LgBJAU9yaWdpbiBtdXN0IGJlIGVpdGhlciBGb3JjZU9yaWdpbiBvciBTaWduZWQgb3JpZ2luIHdpdGggdGhlIHNpZ25lciBiZWluZyB0aGUgQWRtaW5oYWNjb3VudCBvZiB0aGUgYXNzZXQgYGlkYC4ASQFVbnJlc2VydmVzIGFueSBkZXBvc2l0IHByZXZpb3VzbHkgcmVzZXJ2ZWQgYnkgYGFwcHJvdmVfdHJhbnNmZXJgIGZvciB0aGUgYXBwcm92YWwuAJAtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldC4FAS0gYGRlbGVnYXRlYDogVGhlIGFjY291bnQgZGVsZWdhdGVkIHBlcm1pc3Npb24gdG8gdHJhbnNmZXIgYXNzZXQuAJRFbWl0cyBgQXBwcm92YWxDYW5jZWxsZWRgIG9uIHN1Y2Nlc3MuADhXZWlnaHQ6IGBPKDEpYER0cmFuc2Zlcl9hcHByb3ZlZBABCGlkOQIBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARRvd25lcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEsZGVzdGluYXRpb24AAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGFtb3VudJEBAShUOjpCYWxhbmNlABlITQFUcmFuc2ZlciBzb21lIGFzc2V0IGJhbGFuY2UgZnJvbSBhIHByZXZpb3VzbHkgZGVsZWdhdGVkIGFjY291bnQgdG8gc29tZSB0aGlyZC1wYXJ0eSBhY2NvdW50LgBJAU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlcmUgbXVzdCBiZSBhbiBhcHByb3ZhbCBpbiBwbGFjZSBieSB0aGUgYG93bmVyYCB0byB0aGUcc2lnbmVyLgBZAUlmIHRoZSBlbnRpcmUgYW1vdW50IGFwcHJvdmVkIGZvciB0cmFuc2ZlciBpcyB0cmFuc2ZlcnJlZCwgdGhlbiBhbnkgZGVwb3NpdCBwcmV2aW91c2x5tHJlc2VydmVkIGJ5IGBhcHByb3ZlX3RyYW5zZmVyYCBpcyB1bnJlc2VydmVkLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQuYQEtIGBvd25lcmA6IFRoZSBhY2NvdW50IHdoaWNoIHByZXZpb3VzbHkgYXBwcm92ZWQgZm9yIGEgdHJhbnNmZXIgb2YgYXQgbGVhc3QgYGFtb3VudGAgYW5kvGZyb20gd2hpY2ggdGhlIGFzc2V0IGJhbGFuY2Ugd2lsbCBiZSB3aXRoZHJhd24uYQEtIGBkZXN0aW5hdGlvbmA6IFRoZSBhY2NvdW50IHRvIHdoaWNoIHRoZSBhc3NldCBiYWxhbmNlIG9mIGBhbW91bnRgIHdpbGwgYmUgdHJhbnNmZXJyZWQutC0gYGFtb3VudGA6IFRoZSBhbW91bnQgb2YgYXNzZXRzIHRvIHRyYW5zZmVyLgCcRW1pdHMgYFRyYW5zZmVycmVkQXBwcm92ZWRgIG9uIHN1Y2Nlc3MuADhXZWlnaHQ6IGBPKDEpYBR0b3VjaAQBCGlkOQIBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAGiTAQ3JlYXRlIGFuIGFzc2V0IGFjY291bnQgZm9yIG5vbi1wcm92aWRlciBhc3NldHMuAMBBIGRlcG9zaXQgd2lsbCBiZSB0YWtlbiBmcm9tIHRoZSBzaWduZXIgYWNjb3VudC4AXQEtIGBvcmlnaW5gOiBNdXN0IGJlIFNpZ25lZDsgdGhlIHNpZ25lciBhY2NvdW50IG11c3QgaGF2ZSBzdWZmaWNpZW50IGZ1bmRzIGZvciBhIGRlcG9zaXQ4ICB0byBiZSB0YWtlbi4JAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IGZvciB0aGUgYWNjb3VudCB0byBiZSBjcmVhdGVkLgCYRW1pdHMgYFRvdWNoZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4YcmVmdW5kCAEIaWQ5AgFMVDo6QXNzZXRJZFBhcmFtZXRlcgABKGFsbG93X2J1cm6ZAQEQYm9vbAAbNFkBUmV0dXJuIHRoZSBkZXBvc2l0IChpZiBhbnkpIG9mIGFuIGFzc2V0IGFjY291bnQgb3IgYSBjb25zdW1lciByZWZlcmVuY2UgKGlmIGFueSkgb2YgYW4gYWNjb3VudC4AaFRoZSBvcmlnaW4gbXVzdCBiZSBTaWduZWQuAD0BLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgZm9yIHdoaWNoIHRoZSBjYWxsZXIgd291bGQgbGlrZSB0aGUgZGVwb3NpdCwgIHJlZnVuZGVkLl0BLSBgYWxsb3dfYnVybmA6IElmIGB0cnVlYCB0aGVuIGFzc2V0cyBtYXkgYmUgZGVzdHJveWVkIGluIG9yZGVyIHRvIGNvbXBsZXRlIHRoZSByZWZ1bmQuAEkBSXQgd2lsbCBmYWlsIHdpdGggZWl0aGVyIFtgRXJyb3I6OkNvbnRhaW5zSG9sZHNgXSBvciBbYEVycm9yOjpDb250YWluc0ZyZWV6ZXNgXSBpZtR0aGUgYXNzZXQgYWNjb3VudCBjb250YWlucyBob2xkcyBvciBmcmVlemVzIGluIHBsYWNlLgCcRW1pdHMgYFJlZnVuZGVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuPHNldF9taW5fYmFsYW5jZQgBCGlkOQIBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAASxtaW5fYmFsYW5jZZUBAShUOjpCYWxhbmNlABwwlFNldHMgdGhlIG1pbmltdW0gYmFsYW5jZSBvZiBhbiBhc3NldC4AIQFPbmx5IHdvcmtzIGlmIHRoZXJlIGFyZW4ndCBhbnkgYWNjb3VudHMgdGhhdCBhcmUgaG9sZGluZyB0aGUgYXNzZXQgb3IgaWbgdGhlIG5ldyB2YWx1ZSBvZiBgbWluX2JhbGFuY2VgIGlzIGxlc3MgdGhhbiB0aGUgb2xkIG9uZS4A/E9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBoYXMgdG8gYmUgdGhlIE93bmVyIG9mIHRoZSxhc3NldCBgaWRgLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQuwC0gYG1pbl9iYWxhbmNlYDogVGhlIG5ldyB2YWx1ZSBvZiBgbWluX2JhbGFuY2VgLgDURW1pdHMgYEFzc2V0TWluQmFsYW5jZUNoYW5nZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4sdG91Y2hfb3RoZXIIAQhpZDkCAUxUOjpBc3NldElkUGFyYW1ldGVyAAEMd2hvAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AHSyIQ3JlYXRlIGFuIGFzc2V0IGFjY291bnQgZm9yIGB3aG9gLgDAQSBkZXBvc2l0IHdpbGwgYmUgdGFrZW4gZnJvbSB0aGUgc2lnbmVyIGFjY291bnQuAF0BLSBgb3JpZ2luYDogTXVzdCBiZSBTaWduZWQ7IHRoZSBzaWduZXIgYWNjb3VudCBtdXN0IGhhdmUgc3VmZmljaWVudCBmdW5kcyBmb3IgYSBkZXBvc2l0OCAgdG8gYmUgdGFrZW4uYQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCBmb3IgdGhlIGFjY291bnQgdG8gYmUgY3JlYXRlZCwgdGhlIGFzc2V0IHN0YXR1cyBtdXN0KCAgYmUgbGl2ZS6MLSBgd2hvYDogVGhlIGFjY291bnQgdG8gYmUgY3JlYXRlZC4AmEVtaXRzIGBUb3VjaGVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuMHJlZnVuZF9vdGhlcggBCGlkOQIBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAAQx3aG8AAVBBY2NvdW50SWRMb29rdXBPZjxUPgAeNF0BUmV0dXJuIHRoZSBkZXBvc2l0IChpZiBhbnkpIG9mIGEgdGFyZ2V0IGFzc2V0IGFjY291bnQuIFVzZWZ1bCBpZiB5b3UgYXJlIHRoZSBkZXBvc2l0b3IuAF0BVGhlIG9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgZWl0aGVyIHRoZSBhY2NvdW50IG93bmVyLCBkZXBvc2l0b3IsIG9yIGFzc2V0IGBBZG1pbmAuIEluYQFvcmRlciB0byBidXJuIGEgbm9uLXplcm8gYmFsYW5jZSBvZiB0aGUgYXNzZXQsIHRoZSBjYWxsZXIgbXVzdCBiZSB0aGUgYWNjb3VudCBhbmQgc2hvdWxkNHVzZSBgcmVmdW5kYC4AGQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCBmb3IgdGhlIGFjY291bnQgaG9sZGluZyBhIGRlcG9zaXQufC0gYHdob2A6IFRoZSBhY2NvdW50IHRvIHJlZnVuZC4ASQFJdCB3aWxsIGZhaWwgd2l0aCBlaXRoZXIgW2BFcnJvcjo6Q29udGFpbnNIb2xkc2BdIG9yIFtgRXJyb3I6OkNvbnRhaW5zRnJlZXplc2BdIGlm1HRoZSBhc3NldCBhY2NvdW50IGNvbnRhaW5zIGhvbGRzIG9yIGZyZWV6ZXMgaW4gcGxhY2UuAJxFbWl0cyBgUmVmdW5kZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4UYmxvY2sIAQhpZDkCAUxUOjpBc3NldElkUGFyYW1ldGVyAAEMd2hvAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AHyhZAURpc2FsbG93IGZ1cnRoZXIgdW5wcml2aWxlZ2VkIHRyYW5zZmVycyBvZiBhbiBhc3NldCBgaWRgIHRvIGFuZCBmcm9tIGFuIGFjY291bnQgYHdob2AuADUBT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgRnJlZXplciBvZiB0aGUgYXNzZXQgYGlkYC4AuC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFjY291bnQncyBhc3NldC6ULSBgd2hvYDogVGhlIGFjY291bnQgdG8gYmUgdW5ibG9ja2VkLgBARW1pdHMgYEJsb2NrZWRgLgA4V2VpZ2h0OiBgTygxKWAwdHJhbnNmZXJfYWxsDAEIaWQ5AgFMVDo6QXNzZXRJZFBhcmFtZXRlcgABEGRlc3QAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABKGtlZXBfYWxpdmWZAQEQYm9vbAAgQB0BVHJhbnNmZXIgdGhlIGVudGlyZSB0cmFuc2ZlcmFibGUgYmFsYW5jZSBmcm9tIHRoZSBjYWxsZXIgYXNzZXQgYWNjb3VudC4AWQFOT1RFOiBUaGlzIGZ1bmN0aW9uIG9ubHkgYXR0ZW1wdHMgdG8gdHJhbnNmZXIgX3RyYW5zZmVyYWJsZV8gYmFsYW5jZXMuIFRoaXMgbWVhbnMgdGhhdD0BYW55IGhlbGQsIGZyb3plbiwgb3IgbWluaW11bSBiYWxhbmNlICh3aGVuIGBrZWVwX2FsaXZlYCBpcyBgdHJ1ZWApLCB3aWxsIG5vdCBiZV0BdHJhbnNmZXJyZWQgYnkgdGhpcyBmdW5jdGlvbi4gVG8gZW5zdXJlIHRoYXQgdGhpcyBmdW5jdGlvbiByZXN1bHRzIGluIGEga2lsbGVkIGFjY291bnQsRQF5b3UgbWlnaHQgbmVlZCB0byBwcmVwYXJlIHRoZSBhY2NvdW50IGJ5IHJlbW92aW5nIGFueSByZWZlcmVuY2UgY291bnRlcnMsIHN0b3JhZ2VAZGVwb3NpdHMsIGV0Yy4uLgDAVGhlIGRpc3BhdGNoIG9yaWdpbiBvZiB0aGlzIGNhbGwgbXVzdCBiZSBTaWduZWQuABkBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgZm9yIHRoZSBhY2NvdW50IGhvbGRpbmcgYSBkZXBvc2l0LqAtIGBkZXN0YDogVGhlIHJlY2lwaWVudCBvZiB0aGUgdHJhbnNmZXIuWQEtIGBrZWVwX2FsaXZlYDogQSBib29sZWFuIHRvIGRldGVybWluZSBpZiB0aGUgYHRyYW5zZmVyX2FsbGAgb3BlcmF0aW9uIHNob3VsZCBzZW5kIGFsbE0BICBvZiB0aGUgZnVuZHMgdGhlIGFzc2V0IGFjY291bnQgaGFzLCBjYXVzaW5nIHRoZSBzZW5kZXIgYXNzZXQgYWNjb3VudCB0byBiZSBraWxsZWRFASAgKGZhbHNlKSwgb3IgdHJhbnNmZXIgZXZlcnl0aGluZyBleGNlcHQgYXQgbGVhc3QgdGhlIG1pbmltdW0gYmFsYW5jZSwgd2hpY2ggd2lsbOggIGd1YXJhbnRlZSB0byBrZWVwIHRoZSBzZW5kZXIgYXNzZXQgYWNjb3VudCBhbGl2ZSAodHJ1ZSkuMHNldF9yZXNlcnZlcwgBCGlkOQIBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAASByZXNlcnZlc8kEAchCb3VuZGVkVmVjPFQ6OlJlc2VydmVEYXRhLCBDb25zdFUzMjxNQVhfUkVTRVJWRVM+PgAhJMRTZXRzIHRoZSB0cnVzdGVkIHJlc2VydmUgaW5mb3JtYXRpb24gb2YgYW4gYXNzZXQuAFUBT3JpZ2luIG11c3QgYmUgdGhlIE93bmVyIG9mIHRoZSBhc3NldCBgaWRgLiBUaGUgb3JpZ2luIG11c3QgY29uZm9ybSB0byB0aGUgY29uZmlndXJlZCUBYENyZWF0ZU9yaWdpbmAgb3IgYmUgdGhlIHNpZ25lZCBgb3duZXJgIGNvbmZpZ3VyZWQgZHVyaW5nIGFzc2V0IGNyZWF0aW9uLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQu8C0gYHJlc2VydmVzYDogVGhlIGZ1bGwgbGlzdCBvZiB0cnVzdGVkIHJlc2VydmVzIGluZm9ybWF0aW9uLgDURW1pdHMgYEFzc2V0TWluQmFsYW5jZUNoYW5nZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuyQQMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAHNBARTAAAEANEEARhWZWM8VD4AAM0EDDRhc3NldHNfY29tbW9uYGxvY2FsX2FuZF9mb3JlaWduX2Fzc2V0c1xGb3JlaWduQXNzZXRSZXNlcnZlRGF0YQAACAEccmVzZXJ2ZTkCASBMb2NhdGlvbgABMHRlbGVwb3J0YWJsZZkBARBib29sAADRBAAAAs0EANUEDHBwYWxsZXRfbmZ0X2ZyYWN0aW9uYWxpemF0aW9uGHBhbGxldBBDYWxsBARUAAEINGZyYWN0aW9uYWxpemUUAURuZnRfY29sbGVjdGlvbl9pZDgBSFQ6Ok5mdENvbGxlY3Rpb25JZAABGG5mdF9pZDgBIFQ6Ok5mdElkAAEgYXNzZXRfaWQ4ATBBc3NldElkT2Y8VD4AASxiZW5lZmljaWFyeQABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEkZnJhY3Rpb25zlQEBREFzc2V0QmFsYW5jZU9mPFQ+AABErExvY2sgdGhlIE5GVCBhbmQgbWludCBhIG5ldyBmdW5naWJsZSBhc3NldC4AxFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIFNpZ25lZC4BAVRoZSBvcmlnaW4gbXVzdCBiZSB0aGUgb3duZXIgb2YgdGhlIE5GVCB0aGV5IGFyZSB0cnlpbmcgdG8gbG9jay4AnGBEZXBvc2l0YCBmdW5kcyBvZiBzZW5kZXIgYXJlIHJlc2VydmVkLgAlAS0gYG5mdF9jb2xsZWN0aW9uX2lkYDogVGhlIElEIHVzZWQgdG8gaWRlbnRpZnkgdGhlIGNvbGxlY3Rpb24gb2YgdGhlIE5GVC6wSXMgdXNlZCB3aXRoaW4gdGhlIGNvbnRleHQgb2YgYHBhbGxldF9uZnRzYC4hAS0gYG5mdF9pZGA6IFRoZSBJRCB1c2VkIHRvIGlkZW50aWZ5IHRoZSBORlQgd2l0aGluIHRoZSBnaXZlbiBjb2xsZWN0aW9uLrBJcyB1c2VkIHdpdGhpbiB0aGUgY29udGV4dCBvZiBgcGFsbGV0X25mdHNgLuQtIGBhc3NldF9pZGA6IFRoZSBJRCBvZiB0aGUgbmV3IGFzc2V0LiBJdCBtdXN0IG5vdCBleGlzdC64SXMgdXNlZCB3aXRoaW4gdGhlIGNvbnRleHQgb2YgYHBhbGxldF9hc3NldHNgLh0BLSBgYmVuZWZpY2lhcnlgOiBUaGUgYWNjb3VudCB0aGF0IHdpbGwgcmVjZWl2ZSB0aGUgbmV3bHkgY3JlYXRlZCBhc3NldC4NAS0gYGZyYWN0aW9uc2A6IFRoZSB0b3RhbCBpc3N1YW5jZSBvZiB0aGUgbmV3bHkgY3JlYXRlZCBhc3NldCBjbGFzcy4AwEVtaXRzIGBOZnRGcmFjdGlvbmFsaXplZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLhR1bmlmeRABRG5mdF9jb2xsZWN0aW9uX2lkOAFIVDo6TmZ0Q29sbGVjdGlvbklkAAEYbmZ0X2lkOAEgVDo6TmZ0SWQAASBhc3NldF9pZDgBMEFzc2V0SWRPZjxUPgABLGJlbmVmaWNpYXJ5AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AAUBFAUJ1cm4gdGhlIHRvdGFsIGlzc3VhbmNlIG9mIHRoZSBmdW5naWJsZSBhc3NldCBhbmQgcmV0dXJuICh1bmxvY2spIHRoZSBsb2NrZWQgTkZULgDEVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgU2lnbmVkLgDQYERlcG9zaXRgIGZ1bmRzIHdpbGwgYmUgcmV0dXJuZWQgdG8gYGFzc2V0X2NyZWF0b3JgLgAlAS0gYG5mdF9jb2xsZWN0aW9uX2lkYDogVGhlIElEIHVzZWQgdG8gaWRlbnRpZnkgdGhlIGNvbGxlY3Rpb24gb2YgdGhlIE5GVC6wSXMgdXNlZCB3aXRoaW4gdGhlIGNvbnRleHQgb2YgYHBhbGxldF9uZnRzYC4hAS0gYG5mdF9pZGA6IFRoZSBJRCB1c2VkIHRvIGlkZW50aWZ5IHRoZSBORlQgd2l0aGluIHRoZSBnaXZlbiBjb2xsZWN0aW9uLrBJcyB1c2VkIHdpdGhpbiB0aGUgY29udGV4dCBvZiBgcGFsbGV0X25mdHNgLikBLSBgYXNzZXRfaWRgOiBUaGUgSUQgb2YgdGhlIGFzc2V0IGJlaW5nIHJldHVybmVkIGFuZCBkZXN0cm95ZWQuIE11c3QgbWF0Y2j8dGhlIG9yaWdpbmFsIElEIG9mIHRoZSBjcmVhdGVkIGFzc2V0LCBjb3JyZXNwb25kaW5nIHRvIHRoZSBORlQuuElzIHVzZWQgd2l0aGluIHRoZSBjb250ZXh0IG9mIGBwYWxsZXRfYXNzZXRzYC78LSBgYmVuZWZpY2lhcnlgOiBUaGUgYWNjb3VudCB0aGF0IHdpbGwgcmVjZWl2ZSB0aGUgdW5pZmllZCBORlQuAKRFbWl0cyBgTmZ0VW5pZmllZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy7ZBAw0cGFsbGV0X2Fzc2V0cxhwYWxsZXQQQ2FsbAgEVAAESQABiBhjcmVhdGUMAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARRhZG1pbgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEsbWluX2JhbGFuY2WVAQEoVDo6QmFsYW5jZQAATOhJc3N1ZSBhIG5ldyBjbGFzcyBvZiBmdW5naWJsZSBhc3NldHMgZnJvbSBhIHB1YmxpYyBvcmlnaW4uACUBVGhpcyBuZXcgYXNzZXQgY2xhc3MgaGFzIG5vIGFzc2V0cyBpbml0aWFsbHkgYW5kIGl0cyBvd25lciBpcyB0aGUgb3JpZ2luLgBhAVRoZSBvcmlnaW4gbXVzdCBjb25mb3JtIHRvIHRoZSBjb25maWd1cmVkIGBDcmVhdGVPcmlnaW5gIGFuZCBoYXZlIHN1ZmZpY2llbnQgZnVuZHMgZnJlZS4AvEZ1bmRzIG9mIHNlbmRlciBhcmUgcmVzZXJ2ZWQgYnkgYEFzc2V0RGVwb3NpdGAuACxQYXJhbWV0ZXJzOlkBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgbmV3IGFzc2V0LiBUaGlzIG11c3Qgbm90IGJlIGN1cnJlbnRseSBpbiB1c2UgdG8gaWRlbnRpZnkxAWFuIGV4aXN0aW5nIGFzc2V0LiBJZiBbYE5leHRBc3NldElkYF0gaXMgc2V0LCB0aGVuIHRoaXMgbXVzdCBiZSBlcXVhbCB0byBpdC5ZAS0gYGFkbWluYDogVGhlIGFkbWluIG9mIHRoaXMgY2xhc3Mgb2YgYXNzZXRzLiBUaGUgYWRtaW4gaXMgdGhlIGluaXRpYWwgYWRkcmVzcyBvZiBlYWNonG1lbWJlciBvZiB0aGUgYXNzZXQgY2xhc3MncyBhZG1pbiB0ZWFtLk0BLSBgbWluX2JhbGFuY2VgOiBUaGUgbWluaW11bSBiYWxhbmNlIG9mIHRoaXMgbmV3IGFzc2V0IHRoYXQgYW55IHNpbmdsZSBhY2NvdW50IG11c3Q9AWhhdmUuIElmIGFuIGFjY291bnQncyBiYWxhbmNlIGlzIHJlZHVjZWQgYmVsb3cgdGhpcywgdGhlbiBpdCBjb2xsYXBzZXMgdG8gemVyby4AmEVtaXRzIGBDcmVhdGVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuADhXZWlnaHQ6IGBPKDEpYDBmb3JjZV9jcmVhdGUQAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARRvd25lcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAE0aXNfc3VmZmljaWVudJkBARBib29sAAEsbWluX2JhbGFuY2WRAQEoVDo6QmFsYW5jZQABTPhJc3N1ZSBhIG5ldyBjbGFzcyBvZiBmdW5naWJsZSBhc3NldHMgZnJvbSBhIHByaXZpbGVnZWQgb3JpZ2luLgC0VGhpcyBuZXcgYXNzZXQgY2xhc3MgaGFzIG5vIGFzc2V0cyBpbml0aWFsbHkuAKRUaGUgb3JpZ2luIG11c3QgY29uZm9ybSB0byBgRm9yY2VPcmlnaW5gLgCcVW5saWtlIGBjcmVhdGVgLCBubyBmdW5kcyBhcmUgcmVzZXJ2ZWQuAFkBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgbmV3IGFzc2V0LiBUaGlzIG11c3Qgbm90IGJlIGN1cnJlbnRseSBpbiB1c2UgdG8gaWRlbnRpZnkxAWFuIGV4aXN0aW5nIGFzc2V0LiBJZiBbYE5leHRBc3NldElkYF0gaXMgc2V0LCB0aGVuIHRoaXMgbXVzdCBiZSBlcXVhbCB0byBpdC5ZAS0gYG93bmVyYDogVGhlIG93bmVyIG9mIHRoaXMgY2xhc3Mgb2YgYXNzZXRzLiBUaGUgb3duZXIgaGFzIGZ1bGwgc3VwZXJ1c2VyIHBlcm1pc3Npb25zJQFvdmVyIHRoaXMgYXNzZXQsIGJ1dCBtYXkgbGF0ZXIgY2hhbmdlIGFuZCBjb25maWd1cmUgdGhlIHBlcm1pc3Npb25zIHVzaW5nkGB0cmFuc2Zlcl9vd25lcnNoaXBgIGFuZCBgc2V0X3RlYW1gLk0BLSBgbWluX2JhbGFuY2VgOiBUaGUgbWluaW11bSBiYWxhbmNlIG9mIHRoaXMgbmV3IGFzc2V0IHRoYXQgYW55IHNpbmdsZSBhY2NvdW50IG11c3Q9AWhhdmUuIElmIGFuIGFjY291bnQncyBiYWxhbmNlIGlzIHJlZHVjZWQgYmVsb3cgdGhpcywgdGhlbiBpdCBjb2xsYXBzZXMgdG8gemVyby4ArEVtaXRzIGBGb3JjZUNyZWF0ZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4AOFdlaWdodDogYE8oMSlgNHN0YXJ0X2Rlc3Ryb3kEAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAAjDcU3RhcnQgdGhlIHByb2Nlc3Mgb2YgZGVzdHJveWluZyBhIGZ1bmdpYmxlIGFzc2V0IGNsYXNzLgBZAWBzdGFydF9kZXN0cm95YCBpcyB0aGUgZmlyc3QgaW4gYSBzZXJpZXMgb2YgZXh0cmluc2ljcyB0aGF0IHNob3VsZCBiZSBjYWxsZWQsIHRvIGFsbG93eGRlc3RydWN0aW9uIG9mIGFuIGFzc2V0IGNsYXNzLgBRAVRoZSBvcmlnaW4gbXVzdCBjb25mb3JtIHRvIGBGb3JjZU9yaWdpbmAgb3IgbXVzdCBiZSBgU2lnbmVkYCBieSB0aGUgYXNzZXQncyBgb3duZXJgLgBNAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIGRlc3Ryb3llZC4gVGhpcyBtdXN0IGlkZW50aWZ5IGFuIGV4aXN0aW5nICAgYXNzZXQuAEkBSXQgd2lsbCBmYWlsIHdpdGggZWl0aGVyIFtgRXJyb3I6OkNvbnRhaW5zSG9sZHNgXSBvciBbYEVycm9yOjpDb250YWluc0ZyZWV6ZXNgXSBpZrhhbiBhY2NvdW50IGNvbnRhaW5zIGhvbGRzIG9yIGZyZWV6ZXMgaW4gcGxhY2UuQGRlc3Ryb3lfYWNjb3VudHMEAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAAzDMRGVzdHJveSBhbGwgYWNjb3VudHMgYXNzb2NpYXRlZCB3aXRoIGEgZ2l2ZW4gYXNzZXQuAF0BYGRlc3Ryb3lfYWNjb3VudHNgIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBhZnRlciBgc3RhcnRfZGVzdHJveWAgaGFzIGJlZW4gY2FsbGVkLCBhbmQgdGhlhGFzc2V0IGlzIGluIGEgYERlc3Ryb3lpbmdgIHN0YXRlLgBdAUR1ZSB0byB3ZWlnaHQgcmVzdHJpY3Rpb25zLCB0aGlzIGZ1bmN0aW9uIG1heSBuZWVkIHRvIGJlIGNhbGxlZCBtdWx0aXBsZSB0aW1lcyB0byBmdWxseTEBZGVzdHJveSBhbGwgYWNjb3VudHMuIEl0IHdpbGwgZGVzdHJveSBgUmVtb3ZlSXRlbXNMaW1pdGAgYWNjb3VudHMgYXQgYSB0aW1lLgBNAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIGRlc3Ryb3llZC4gVGhpcyBtdXN0IGlkZW50aWZ5IGFuIGV4aXN0aW5nICAgYXNzZXQuANRFYWNoIGNhbGwgZW1pdHMgdGhlIGBFdmVudDo6RGVzdHJveWVkQWNjb3VudHNgIGV2ZW50LkRkZXN0cm95X2FwcHJvdmFscwQBCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgAEMGEBRGVzdHJveSBhbGwgYXBwcm92YWxzIGFzc29jaWF0ZWQgd2l0aCBhIGdpdmVuIGFzc2V0IHVwIHRvIHRoZSBtYXggKFQ6OlJlbW92ZUl0ZW1zTGltaXQpLgBhAWBkZXN0cm95X2FwcHJvdmFsc2Agc2hvdWxkIG9ubHkgYmUgY2FsbGVkIGFmdGVyIGBzdGFydF9kZXN0cm95YCBoYXMgYmVlbiBjYWxsZWQsIGFuZCB0aGWEYXNzZXQgaXMgaW4gYSBgRGVzdHJveWluZ2Agc3RhdGUuAF0BRHVlIHRvIHdlaWdodCByZXN0cmljdGlvbnMsIHRoaXMgZnVuY3Rpb24gbWF5IG5lZWQgdG8gYmUgY2FsbGVkIG11bHRpcGxlIHRpbWVzIHRvIGZ1bGx5OQFkZXN0cm95IGFsbCBhcHByb3ZhbHMuIEl0IHdpbGwgZGVzdHJveSBgUmVtb3ZlSXRlbXNMaW1pdGAgYXBwcm92YWxzIGF0IGEgdGltZS4ATQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBiZSBkZXN0cm95ZWQuIFRoaXMgbXVzdCBpZGVudGlmeSBhbiBleGlzdGluZyAgIGFzc2V0LgDYRWFjaCBjYWxsIGVtaXRzIHRoZSBgRXZlbnQ6OkRlc3Ryb3llZEFwcHJvdmFsc2AgZXZlbnQuOGZpbmlzaF9kZXN0cm95BAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAUoxENvbXBsZXRlIGRlc3Ryb3lpbmcgYXNzZXQgYW5kIHVucmVzZXJ2ZSBjdXJyZW5jeS4AVQFgZmluaXNoX2Rlc3Ryb3lgIHNob3VsZCBvbmx5IGJlIGNhbGxlZCBhZnRlciBgc3RhcnRfZGVzdHJveWAgaGFzIGJlZW4gY2FsbGVkLCBhbmQgdGhlWQFhc3NldCBpcyBpbiBhIGBEZXN0cm95aW5nYCBzdGF0ZS4gQWxsIGFjY291bnRzIG9yIGFwcHJvdmFscyBzaG91bGQgYmUgZGVzdHJveWVkIGJlZm9yZRRoYW5kLgBNAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIGRlc3Ryb3llZC4gVGhpcyBtdXN0IGlkZW50aWZ5IGFuIGV4aXN0aW5nICAgYXNzZXQuAOBFYWNoIHN1Y2Nlc3NmdWwgY2FsbCBlbWl0cyB0aGUgYEV2ZW50OjpEZXN0cm95ZWRgIGV2ZW50LhBtaW50DAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAEsYmVuZWZpY2lhcnkAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGFtb3VudJEBAShUOjpCYWxhbmNlAAYwiE1pbnQgYXNzZXRzIG9mIGEgcGFydGljdWxhciBjbGFzcy4AOQFUaGUgb3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIG11c3QgYmUgdGhlIElzc3VlciBvZiB0aGUgYXNzZXQgYGlkYC4A/C0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGhhdmUgc29tZSBhbW91bnQgbWludGVkLg0BLSBgYmVuZWZpY2lhcnlgOiBUaGUgYWNjb3VudCB0byBiZSBjcmVkaXRlZCB3aXRoIHRoZSBtaW50ZWQgYXNzZXRzLsQtIGBhbW91bnRgOiBUaGUgYW1vdW50IG9mIHRoZSBhc3NldCB0byBiZSBtaW50ZWQuAJRFbWl0cyBgSXNzdWVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuADhXZWlnaHQ6IGBPKDEpYFUBTW9kZXM6IFByZS1leGlzdGluZyBiYWxhbmNlIG9mIGBiZW5lZmljaWFyeWA7IEFjY291bnQgcHJlLWV4aXN0ZW5jZSBvZiBgYmVuZWZpY2lhcnlgLhBidXJuDAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAEMd2hvAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARhhbW91bnSRAQEoVDo6QmFsYW5jZQAHPEUBUmVkdWNlIHRoZSBiYWxhbmNlIG9mIGB3aG9gIGJ5IGFzIG11Y2ggYXMgcG9zc2libGUgdXAgdG8gYGFtb3VudGAgYXNzZXRzIG9mIGBpZGAuADUBT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgTWFuYWdlciBvZiB0aGUgYXNzZXQgYGlkYC4A0EJhaWxzIHdpdGggYE5vQWNjb3VudGAgaWYgdGhlIGB3aG9gIGlzIGFscmVhZHkgZGVhZC4A/C0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGhhdmUgc29tZSBhbW91bnQgYnVybmVkLqAtIGB3aG9gOiBUaGUgYWNjb3VudCB0byBiZSBkZWJpdGVkIGZyb20uKQEtIGBhbW91bnRgOiBUaGUgbWF4aW11bSBhbW91bnQgYnkgd2hpY2ggYHdob2AncyBiYWxhbmNlIHNob3VsZCBiZSByZWR1Y2VkLgBRAUVtaXRzIGBCdXJuZWRgIHdpdGggdGhlIGFjdHVhbCBhbW91bnQgYnVybmVkLiBJZiB0aGlzIHRha2VzIHRoZSBiYWxhbmNlIHRvIGJlbG93IHRoZTkBbWluaW11bSBmb3IgdGhlIGFzc2V0LCB0aGVuIHRoZSBhbW91bnQgYnVybmVkIGlzIGluY3JlYXNlZCB0byB0YWtlIGl0IHRvIHplcm8uADhXZWlnaHQ6IGBPKDEpYAkBTW9kZXM6IFBvc3QtZXhpc3RlbmNlIG9mIGB3aG9gOyBQcmUgJiBwb3N0IFpvbWJpZS1zdGF0dXMgb2YgYHdob2AuIHRyYW5zZmVyDAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAEYdGFyZ2V0AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARhhbW91bnSRAQEoVDo6QmFsYW5jZQAISNBNb3ZlIHNvbWUgYXNzZXRzIGZyb20gdGhlIHNlbmRlciBhY2NvdW50IHRvIGFub3RoZXIuAFhPcmlnaW4gbXVzdCBiZSBTaWduZWQuABEBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gaGF2ZSBzb21lIGFtb3VudCB0cmFuc2ZlcnJlZC6cLSBgdGFyZ2V0YDogVGhlIGFjY291bnQgdG8gYmUgY3JlZGl0ZWQuUQEtIGBhbW91bnRgOiBUaGUgYW1vdW50IGJ5IHdoaWNoIHRoZSBzZW5kZXIncyBiYWxhbmNlIG9mIGFzc2V0cyBzaG91bGQgYmUgcmVkdWNlZCBhbmRhAWB0YXJnZXRgJ3MgYmFsYW5jZSBpbmNyZWFzZWQuIFRoZSBhbW91bnQgYWN0dWFsbHkgdHJhbnNmZXJyZWQgbWF5IGJlIHNsaWdodGx5IGdyZWF0ZXIgaW5dAXRoZSBjYXNlIHRoYXQgdGhlIHRyYW5zZmVyIHdvdWxkIG90aGVyd2lzZSB0YWtlIHRoZSBzZW5kZXIgYmFsYW5jZSBhYm92ZSB6ZXJvIGJ1dCBiZWxvd7x0aGUgbWluaW11bSBiYWxhbmNlLiBNdXN0IGJlIGdyZWF0ZXIgdGhhbiB6ZXJvLgBhAUVtaXRzIGBUcmFuc2ZlcnJlZGAgd2l0aCB0aGUgYWN0dWFsIGFtb3VudCB0cmFuc2ZlcnJlZC4gSWYgdGhpcyB0YWtlcyB0aGUgc291cmNlIGJhbGFuY2VdAXRvIGJlbG93IHRoZSBtaW5pbXVtIGZvciB0aGUgYXNzZXQsIHRoZW4gdGhlIGFtb3VudCB0cmFuc2ZlcnJlZCBpcyBpbmNyZWFzZWQgdG8gdGFrZSBpdCB0byB6ZXJvLgA4V2VpZ2h0OiBgTygxKWBRAU1vZGVzOiBQcmUtZXhpc3RlbmNlIG9mIGB0YXJnZXRgOyBQb3N0LWV4aXN0ZW5jZSBvZiBzZW5kZXI7IEFjY291bnQgcHJlLWV4aXN0ZW5jZSBvZiRgdGFyZ2V0YC5MdHJhbnNmZXJfa2VlcF9hbGl2ZQwBCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABGHRhcmdldAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEYYW1vdW50kQEBKFQ6OkJhbGFuY2UACUhZAU1vdmUgc29tZSBhc3NldHMgZnJvbSB0aGUgc2VuZGVyIGFjY291bnQgdG8gYW5vdGhlciwga2VlcGluZyB0aGUgc2VuZGVyIGFjY291bnQgYWxpdmUuAFhPcmlnaW4gbXVzdCBiZSBTaWduZWQuABEBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gaGF2ZSBzb21lIGFtb3VudCB0cmFuc2ZlcnJlZC6cLSBgdGFyZ2V0YDogVGhlIGFjY291bnQgdG8gYmUgY3JlZGl0ZWQuUQEtIGBhbW91bnRgOiBUaGUgYW1vdW50IGJ5IHdoaWNoIHRoZSBzZW5kZXIncyBiYWxhbmNlIG9mIGFzc2V0cyBzaG91bGQgYmUgcmVkdWNlZCBhbmRhAWB0YXJnZXRgJ3MgYmFsYW5jZSBpbmNyZWFzZWQuIFRoZSBhbW91bnQgYWN0dWFsbHkgdHJhbnNmZXJyZWQgbWF5IGJlIHNsaWdodGx5IGdyZWF0ZXIgaW5dAXRoZSBjYXNlIHRoYXQgdGhlIHRyYW5zZmVyIHdvdWxkIG90aGVyd2lzZSB0YWtlIHRoZSBzZW5kZXIgYmFsYW5jZSBhYm92ZSB6ZXJvIGJ1dCBiZWxvd7x0aGUgbWluaW11bSBiYWxhbmNlLiBNdXN0IGJlIGdyZWF0ZXIgdGhhbiB6ZXJvLgBhAUVtaXRzIGBUcmFuc2ZlcnJlZGAgd2l0aCB0aGUgYWN0dWFsIGFtb3VudCB0cmFuc2ZlcnJlZC4gSWYgdGhpcyB0YWtlcyB0aGUgc291cmNlIGJhbGFuY2VdAXRvIGJlbG93IHRoZSBtaW5pbXVtIGZvciB0aGUgYXNzZXQsIHRoZW4gdGhlIGFtb3VudCB0cmFuc2ZlcnJlZCBpcyBpbmNyZWFzZWQgdG8gdGFrZSBpdCB0byB6ZXJvLgA4V2VpZ2h0OiBgTygxKWBRAU1vZGVzOiBQcmUtZXhpc3RlbmNlIG9mIGB0YXJnZXRgOyBQb3N0LWV4aXN0ZW5jZSBvZiBzZW5kZXI7IEFjY291bnQgcHJlLWV4aXN0ZW5jZSBvZiRgdGFyZ2V0YC44Zm9yY2VfdHJhbnNmZXIQAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAARhzb3VyY2UAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABEGRlc3QAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGFtb3VudJEBAShUOjpCYWxhbmNlAApMtE1vdmUgc29tZSBhc3NldHMgZnJvbSBvbmUgYWNjb3VudCB0byBhbm90aGVyLgAtAU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEFkbWluIG9mIHRoZSBhc3NldCBgaWRgLgARAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGhhdmUgc29tZSBhbW91bnQgdHJhbnNmZXJyZWQumC0gYHNvdXJjZWA6IFRoZSBhY2NvdW50IHRvIGJlIGRlYml0ZWQulC0gYGRlc3RgOiBUaGUgYWNjb3VudCB0byBiZSBjcmVkaXRlZC5ZAS0gYGFtb3VudGA6IFRoZSBhbW91bnQgYnkgd2hpY2ggdGhlIGBzb3VyY2VgJ3MgYmFsYW5jZSBvZiBhc3NldHMgc2hvdWxkIGJlIHJlZHVjZWQgYW5kWQFgZGVzdGAncyBiYWxhbmNlIGluY3JlYXNlZC4gVGhlIGFtb3VudCBhY3R1YWxseSB0cmFuc2ZlcnJlZCBtYXkgYmUgc2xpZ2h0bHkgZ3JlYXRlciBpbk0BdGhlIGNhc2UgdGhhdCB0aGUgdHJhbnNmZXIgd291bGQgb3RoZXJ3aXNlIHRha2UgdGhlIGBzb3VyY2VgIGJhbGFuY2UgYWJvdmUgemVybyBidXTUYmVsb3cgdGhlIG1pbmltdW0gYmFsYW5jZS4gTXVzdCBiZSBncmVhdGVyIHRoYW4gemVyby4AYQFFbWl0cyBgVHJhbnNmZXJyZWRgIHdpdGggdGhlIGFjdHVhbCBhbW91bnQgdHJhbnNmZXJyZWQuIElmIHRoaXMgdGFrZXMgdGhlIHNvdXJjZSBiYWxhbmNlXQF0byBiZWxvdyB0aGUgbWluaW11bSBmb3IgdGhlIGFzc2V0LCB0aGVuIHRoZSBhbW91bnQgdHJhbnNmZXJyZWQgaXMgaW5jcmVhc2VkIHRvIHRha2UgaXQgdG8gemVyby4AOFdlaWdodDogYE8oMSlgUQFNb2RlczogUHJlLWV4aXN0ZW5jZSBvZiBgZGVzdGA7IFBvc3QtZXhpc3RlbmNlIG9mIGBzb3VyY2VgOyBBY2NvdW50IHByZS1leGlzdGVuY2Ugb2YcYGRlc3RgLhhmcmVlemUIAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAAQx3aG8AAVBBY2NvdW50SWRMb29rdXBPZjxUPgALMFUBRGlzYWxsb3cgZnVydGhlciB1bnByaXZpbGVnZWQgdHJhbnNmZXJzIG9mIGFuIGFzc2V0IGBpZGAgZnJvbSBhbiBhY2NvdW50IGB3aG9gLiBgd2hvYE0BbXVzdCBhbHJlYWR5IGV4aXN0IGFzIGFuIGVudHJ5IGluIGBBY2NvdW50YHMgb2YgdGhlIGFzc2V0LiBJZiB5b3Ugd2FudCB0byBmcmVlemUgYW70YWNjb3VudCB0aGF0IGRvZXMgbm90IGhhdmUgYW4gZW50cnksIHVzZSBgdG91Y2hfb3RoZXJgIGZpcnN0LgA1AU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEZyZWV6ZXIgb2YgdGhlIGFzc2V0IGBpZGAuAMQtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBiZSBmcm96ZW4uiC0gYHdob2A6IFRoZSBhY2NvdW50IHRvIGJlIGZyb3plbi4APEVtaXRzIGBGcm96ZW5gLgA4V2VpZ2h0OiBgTygxKWAQdGhhdwgBCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABDHdobwABUEFjY291bnRJZExvb2t1cE9mPFQ+AAwo6EFsbG93IHVucHJpdmlsZWdlZCB0cmFuc2ZlcnMgdG8gYW5kIGZyb20gYW4gYWNjb3VudCBhZ2Fpbi4ALQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBBZG1pbiBvZiB0aGUgYXNzZXQgYGlkYC4AxC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIGZyb3plbi6QLSBgd2hvYDogVGhlIGFjY291bnQgdG8gYmUgdW5mcm96ZW4uADxFbWl0cyBgVGhhd2VkYC4AOFdlaWdodDogYE8oMSlgMGZyZWV6ZV9hc3NldAQBCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgANJPBEaXNhbGxvdyBmdXJ0aGVyIHVucHJpdmlsZWdlZCB0cmFuc2ZlcnMgZm9yIHRoZSBhc3NldCBjbGFzcy4ANQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBGcmVlemVyIG9mIHRoZSBhc3NldCBgaWRgLgDELSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gYmUgZnJvemVuLgA8RW1pdHMgYEZyb3plbmAuADhXZWlnaHQ6IGBPKDEpYCh0aGF3X2Fzc2V0BAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAA4kxEFsbG93IHVucHJpdmlsZWdlZCB0cmFuc2ZlcnMgZm9yIHRoZSBhc3NldCBhZ2Fpbi4ALQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBBZG1pbiBvZiB0aGUgYXNzZXQgYGlkYC4AxC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IHRvIGJlIHRoYXdlZC4APEVtaXRzIGBUaGF3ZWRgLgA4V2VpZ2h0OiBgTygxKWBIdHJhbnNmZXJfb3duZXJzaGlwCAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAEUb3duZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgAPKHRDaGFuZ2UgdGhlIE93bmVyIG9mIGFuIGFzc2V0LgAtAU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIE93bmVyIG9mIHRoZSBhc3NldCBgaWRgLgCQLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQunC0gYG93bmVyYDogVGhlIG5ldyBPd25lciBvZiB0aGlzIGFzc2V0LgBURW1pdHMgYE93bmVyQ2hhbmdlZGAuADhXZWlnaHQ6IGBPKDEpYCBzZXRfdGVhbRABCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABGGlzc3VlcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEUYWRtaW4AAVBBY2NvdW50SWRMb29rdXBPZjxUPgABHGZyZWV6ZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgAQMMRDaGFuZ2UgdGhlIElzc3VlciwgQWRtaW4gYW5kIEZyZWV6ZXIgb2YgYW4gYXNzZXQuAC0BT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgT3duZXIgb2YgdGhlIGFzc2V0IGBpZGAuAMQtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBiZSBmcm96ZW4upC0gYGlzc3VlcmA6IFRoZSBuZXcgSXNzdWVyIG9mIHRoaXMgYXNzZXQunC0gYGFkbWluYDogVGhlIG5ldyBBZG1pbiBvZiB0aGlzIGFzc2V0LqwtIGBmcmVlemVyYDogVGhlIG5ldyBGcmVlemVyIG9mIHRoaXMgYXNzZXQuAFBFbWl0cyBgVGVhbUNoYW5nZWRgLgA4V2VpZ2h0OiBgTygxKWAwc2V0X21ldGFkYXRhEAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAEQbmFtZRgBHFZlYzx1OD4AARhzeW1ib2wYARxWZWM8dTg+AAEgZGVjaW1hbHMMAQh1OAARQHhTZXQgdGhlIG1ldGFkYXRhIGZvciBhbiBhc3NldC4ALQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgc2hvdWxkIGJlIHRoZSBPd25lciBvZiB0aGUgYXNzZXQgYGlkYC4A2EZ1bmRzIG9mIHNlbmRlciBhcmUgcmVzZXJ2ZWQgYWNjb3JkaW5nIHRvIHRoZSBmb3JtdWxhOlEBYE1ldGFkYXRhRGVwb3NpdEJhc2UgKyBNZXRhZGF0YURlcG9zaXRQZXJCeXRlICogKG5hbWUubGVuICsgc3ltYm9sLmxlbilgIHRha2luZyBpbnRvjGFjY291bnQgYW55IGFscmVhZHkgcmVzZXJ2ZWQgZnVuZHMuALgtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byB1cGRhdGUuTQEtIGBuYW1lYDogVGhlIHVzZXIgZnJpZW5kbHkgbmFtZSBvZiB0aGlzIGFzc2V0LiBMaW1pdGVkIGluIGxlbmd0aCBieSBgU3RyaW5nTGltaXRgLk0BLSBgc3ltYm9sYDogVGhlIGV4Y2hhbmdlIHN5bWJvbCBmb3IgdGhpcyBhc3NldC4gTGltaXRlZCBpbiBsZW5ndGggYnkgYFN0cmluZ0xpbWl0YC4tAS0gYGRlY2ltYWxzYDogVGhlIG51bWJlciBvZiBkZWNpbWFscyB0aGlzIGFzc2V0IHVzZXMgdG8gcmVwcmVzZW50IG9uZSB1bml0LgBQRW1pdHMgYE1ldGFkYXRhU2V0YC4AOFdlaWdodDogYE8oMSlgOGNsZWFyX21ldGFkYXRhBAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyABIsgENsZWFyIHRoZSBtZXRhZGF0YSBmb3IgYW4gYXNzZXQuAC0BT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGUgc2VuZGVyIHNob3VsZCBiZSB0aGUgT3duZXIgb2YgdGhlIGFzc2V0IGBpZGAuAKRBbnkgZGVwb3NpdCBpcyBmcmVlZCBmb3IgdGhlIGFzc2V0IG93bmVyLgC0LSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgdG8gY2xlYXIuAGBFbWl0cyBgTWV0YWRhdGFDbGVhcmVkYC4AOFdlaWdodDogYE8oMSlgSGZvcmNlX3NldF9tZXRhZGF0YRQBCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABEG5hbWUYARxWZWM8dTg+AAEYc3ltYm9sGAEcVmVjPHU4PgABIGRlY2ltYWxzDAEIdTgAASRpc19mcm96ZW6ZAQEQYm9vbAATOLhGb3JjZSB0aGUgbWV0YWRhdGEgZm9yIGFuIGFzc2V0IHRvIHNvbWUgdmFsdWUuAGxPcmlnaW4gbXVzdCBiZSBGb3JjZU9yaWdpbi4AaEFueSBkZXBvc2l0IGlzIGxlZnQgYWxvbmUuALgtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byB1cGRhdGUuTQEtIGBuYW1lYDogVGhlIHVzZXIgZnJpZW5kbHkgbmFtZSBvZiB0aGlzIGFzc2V0LiBMaW1pdGVkIGluIGxlbmd0aCBieSBgU3RyaW5nTGltaXRgLk0BLSBgc3ltYm9sYDogVGhlIGV4Y2hhbmdlIHN5bWJvbCBmb3IgdGhpcyBhc3NldC4gTGltaXRlZCBpbiBsZW5ndGggYnkgYFN0cmluZ0xpbWl0YC4tAS0gYGRlY2ltYWxzYDogVGhlIG51bWJlciBvZiBkZWNpbWFscyB0aGlzIGFzc2V0IHVzZXMgdG8gcmVwcmVzZW50IG9uZSB1bml0LgBQRW1pdHMgYE1ldGFkYXRhU2V0YC4AUQFXZWlnaHQ6IGBPKE4gKyBTKWAgd2hlcmUgTiBhbmQgUyBhcmUgdGhlIGxlbmd0aCBvZiB0aGUgbmFtZSBhbmQgc3ltYm9sIHJlc3BlY3RpdmVseS5QZm9yY2VfY2xlYXJfbWV0YWRhdGEEAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAFCyAQ2xlYXIgdGhlIG1ldGFkYXRhIGZvciBhbiBhc3NldC4AbE9yaWdpbiBtdXN0IGJlIEZvcmNlT3JpZ2luLgBgQW55IGRlcG9zaXQgaXMgcmV0dXJuZWQuALQtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCB0byBjbGVhci4AYEVtaXRzIGBNZXRhZGF0YUNsZWFyZWRgLgA4V2VpZ2h0OiBgTygxKWBIZm9yY2VfYXNzZXRfc3RhdHVzIAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAEUb3duZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGlzc3VlcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEUYWRtaW4AAVBBY2NvdW50SWRMb29rdXBPZjxUPgABHGZyZWV6ZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABLG1pbl9iYWxhbmNlkQEBKFQ6OkJhbGFuY2UAATRpc19zdWZmaWNpZW50mQEBEGJvb2wAASRpc19mcm96ZW6ZAQEQYm9vbAAVWJhBbHRlciB0aGUgYXR0cmlidXRlcyBvZiBhIGdpdmVuIGFzc2V0LgB0T3JpZ2luIG11c3QgYmUgYEZvcmNlT3JpZ2luYC4AkC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0LpwtIGBvd25lcmA6IFRoZSBuZXcgT3duZXIgb2YgdGhpcyBhc3NldC6kLSBgaXNzdWVyYDogVGhlIG5ldyBJc3N1ZXIgb2YgdGhpcyBhc3NldC6cLSBgYWRtaW5gOiBUaGUgbmV3IEFkbWluIG9mIHRoaXMgYXNzZXQurC0gYGZyZWV6ZXJgOiBUaGUgbmV3IEZyZWV6ZXIgb2YgdGhpcyBhc3NldC5NAS0gYG1pbl9iYWxhbmNlYDogVGhlIG1pbmltdW0gYmFsYW5jZSBvZiB0aGlzIG5ldyBhc3NldCB0aGF0IGFueSBzaW5nbGUgYWNjb3VudCBtdXN0PQFoYXZlLiBJZiBhbiBhY2NvdW50J3MgYmFsYW5jZSBpcyByZWR1Y2VkIGJlbG93IHRoaXMsIHRoZW4gaXQgY29sbGFwc2VzIHRvIHplcm8uUQEtIGBpc19zdWZmaWNpZW50YDogV2hldGhlciBhIG5vbi16ZXJvIGJhbGFuY2Ugb2YgdGhpcyBhc3NldCBpcyBkZXBvc2l0IG9mIHN1ZmZpY2llbnRNAXZhbHVlIHRvIGFjY291bnQgZm9yIHRoZSBzdGF0ZSBibG9hdCBhc3NvY2lhdGVkIHdpdGggaXRzIGJhbGFuY2Ugc3RvcmFnZS4gSWYgc2V0IHRvVQFgdHJ1ZWAsIHRoZW4gbm9uLXplcm8gYmFsYW5jZXMgbWF5IGJlIHN0b3JlZCB3aXRob3V0IGEgYGNvbnN1bWVyYCByZWZlcmVuY2UgKGFuZCB0aHVzTQFhbiBFRCBpbiB0aGUgQmFsYW5jZXMgcGFsbGV0IG9yIHdoYXRldmVyIGVsc2UgaXMgdXNlZCB0byBjb250cm9sIHVzZXItYWNjb3VudCBzdGF0ZSBncm93dGgpLj0BLSBgaXNfZnJvemVuYDogV2hldGhlciB0aGlzIGFzc2V0IGNsYXNzIGlzIGZyb3plbiBleGNlcHQgZm9yIHBlcm1pc3Npb25lZC9hZG1pbjRpbnN0cnVjdGlvbnMuAOhFbWl0cyBgQXNzZXRTdGF0dXNDaGFuZ2VkYCB3aXRoIHRoZSBpZGVudGl0eSBvZiB0aGUgYXNzZXQuADhXZWlnaHQ6IGBPKDEpYEBhcHByb3ZlX3RyYW5zZmVyDAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAEgZGVsZWdhdGUAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABGGFtb3VudJEBAShUOjpCYWxhbmNlABZQLQFBcHByb3ZlIGFuIGFtb3VudCBvZiBhc3NldCBmb3IgdHJhbnNmZXIgYnkgYSBkZWxlZ2F0ZWQgdGhpcmQtcGFydHkgYWNjb3VudC4AWE9yaWdpbiBtdXN0IGJlIFNpZ25lZC4ATQFFbnN1cmVzIHRoYXQgYEFwcHJvdmFsRGVwb3NpdGAgd29ydGggb2YgYEN1cnJlbmN5YCBpcyByZXNlcnZlZCBmcm9tIHNpZ25pbmcgYWNjb3VudFUBZm9yIHRoZSBwdXJwb3NlIG9mIGhvbGRpbmcgdGhlIGFwcHJvdmFsLiBJZiBzb21lIG5vbi16ZXJvIGFtb3VudCBvZiBhc3NldHMgaXMgYWxyZWFkeUkBYXBwcm92ZWQgZnJvbSBzaWduaW5nIGFjY291bnQgdG8gYGRlbGVnYXRlYCwgdGhlbiBpdCBpcyB0b3BwZWQgdXAgb3IgdW5yZXNlcnZlZCB0b1RtZWV0IHRoZSByaWdodCB2YWx1ZS4ARQFOT1RFOiBUaGUgc2lnbmluZyBhY2NvdW50IGRvZXMgbm90IG5lZWQgdG8gb3duIGBhbW91bnRgIG9mIGFzc2V0cyBhdCB0aGUgcG9pbnQgb2ZEbWFraW5nIHRoaXMgY2FsbC4AkC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0Lg0BLSBgZGVsZWdhdGVgOiBUaGUgYWNjb3VudCB0byBkZWxlZ2F0ZSBwZXJtaXNzaW9uIHRvIHRyYW5zZmVyIGFzc2V0LkkBLSBgYW1vdW50YDogVGhlIGFtb3VudCBvZiBhc3NldCB0aGF0IG1heSBiZSB0cmFuc2ZlcnJlZCBieSBgZGVsZWdhdGVgLiBJZiB0aGVyZSBpc+BhbHJlYWR5IGFuIGFwcHJvdmFsIGluIHBsYWNlLCB0aGVuIHRoaXMgYWN0cyBhZGRpdGl2ZWx5LgCQRW1pdHMgYEFwcHJvdmVkVHJhbnNmZXJgIG9uIHN1Y2Nlc3MuADhXZWlnaHQ6IGBPKDEpYDxjYW5jZWxfYXBwcm92YWwIAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAASBkZWxlZ2F0ZQABUEFjY291bnRJZExvb2t1cE9mPFQ+ABc0SQFDYW5jZWwgYWxsIG9mIHNvbWUgYXNzZXQgYXBwcm92ZWQgZm9yIGRlbGVnYXRlZCB0cmFuc2ZlciBieSBhIHRoaXJkLXBhcnR5IGFjY291bnQuAD0BT3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCB0aGVyZSBtdXN0IGJlIGFuIGFwcHJvdmFsIGluIHBsYWNlIGJldHdlZW4gc2lnbmVyIGFuZCxgZGVsZWdhdGVgLgBJAVVucmVzZXJ2ZXMgYW55IGRlcG9zaXQgcHJldmlvdXNseSByZXNlcnZlZCBieSBgYXBwcm92ZV90cmFuc2ZlcmAgZm9yIHRoZSBhcHByb3ZhbC4AkC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0LgUBLSBgZGVsZWdhdGVgOiBUaGUgYWNjb3VudCBkZWxlZ2F0ZWQgcGVybWlzc2lvbiB0byB0cmFuc2ZlciBhc3NldC4AlEVtaXRzIGBBcHByb3ZhbENhbmNlbGxlZGAgb24gc3VjY2Vzcy4AOFdlaWdodDogYE8oMSlgVGZvcmNlX2NhbmNlbF9hcHByb3ZhbAwBCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABFG93bmVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AASBkZWxlZ2F0ZQABUEFjY291bnRJZExvb2t1cE9mPFQ+ABg0SQFDYW5jZWwgYWxsIG9mIHNvbWUgYXNzZXQgYXBwcm92ZWQgZm9yIGRlbGVnYXRlZCB0cmFuc2ZlciBieSBhIHRoaXJkLXBhcnR5IGFjY291bnQuAEkBT3JpZ2luIG11c3QgYmUgZWl0aGVyIEZvcmNlT3JpZ2luIG9yIFNpZ25lZCBvcmlnaW4gd2l0aCB0aGUgc2lnbmVyIGJlaW5nIHRoZSBBZG1pbmhhY2NvdW50IG9mIHRoZSBhc3NldCBgaWRgLgBJAVVucmVzZXJ2ZXMgYW55IGRlcG9zaXQgcHJldmlvdXNseSByZXNlcnZlZCBieSBgYXBwcm92ZV90cmFuc2ZlcmAgZm9yIHRoZSBhcHByb3ZhbC4AkC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0LgUBLSBgZGVsZWdhdGVgOiBUaGUgYWNjb3VudCBkZWxlZ2F0ZWQgcGVybWlzc2lvbiB0byB0cmFuc2ZlciBhc3NldC4AlEVtaXRzIGBBcHByb3ZhbENhbmNlbGxlZGAgb24gc3VjY2Vzcy4AOFdlaWdodDogYE8oMSlgRHRyYW5zZmVyX2FwcHJvdmVkEAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAEUb3duZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABLGRlc3RpbmF0aW9uAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARhhbW91bnSRAQEoVDo6QmFsYW5jZQAZSE0BVHJhbnNmZXIgc29tZSBhc3NldCBiYWxhbmNlIGZyb20gYSBwcmV2aW91c2x5IGRlbGVnYXRlZCBhY2NvdW50IHRvIHNvbWUgdGhpcmQtcGFydHkgYWNjb3VudC4ASQFPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZXJlIG11c3QgYmUgYW4gYXBwcm92YWwgaW4gcGxhY2UgYnkgdGhlIGBvd25lcmAgdG8gdGhlHHNpZ25lci4AWQFJZiB0aGUgZW50aXJlIGFtb3VudCBhcHByb3ZlZCBmb3IgdHJhbnNmZXIgaXMgdHJhbnNmZXJyZWQsIHRoZW4gYW55IGRlcG9zaXQgcHJldmlvdXNsebRyZXNlcnZlZCBieSBgYXBwcm92ZV90cmFuc2ZlcmAgaXMgdW5yZXNlcnZlZC4AkC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0LmEBLSBgb3duZXJgOiBUaGUgYWNjb3VudCB3aGljaCBwcmV2aW91c2x5IGFwcHJvdmVkIGZvciBhIHRyYW5zZmVyIG9mIGF0IGxlYXN0IGBhbW91bnRgIGFuZLxmcm9tIHdoaWNoIHRoZSBhc3NldCBiYWxhbmNlIHdpbGwgYmUgd2l0aGRyYXduLmEBLSBgZGVzdGluYXRpb25gOiBUaGUgYWNjb3VudCB0byB3aGljaCB0aGUgYXNzZXQgYmFsYW5jZSBvZiBgYW1vdW50YCB3aWxsIGJlIHRyYW5zZmVycmVkLrQtIGBhbW91bnRgOiBUaGUgYW1vdW50IG9mIGFzc2V0cyB0byB0cmFuc2Zlci4AnEVtaXRzIGBUcmFuc2ZlcnJlZEFwcHJvdmVkYCBvbiBzdWNjZXNzLgA4V2VpZ2h0OiBgTygxKWAUdG91Y2gEAQhpZDgBTFQ6OkFzc2V0SWRQYXJhbWV0ZXIAGiTAQ3JlYXRlIGFuIGFzc2V0IGFjY291bnQgZm9yIG5vbi1wcm92aWRlciBhc3NldHMuAMBBIGRlcG9zaXQgd2lsbCBiZSB0YWtlbiBmcm9tIHRoZSBzaWduZXIgYWNjb3VudC4AXQEtIGBvcmlnaW5gOiBNdXN0IGJlIFNpZ25lZDsgdGhlIHNpZ25lciBhY2NvdW50IG11c3QgaGF2ZSBzdWZmaWNpZW50IGZ1bmRzIGZvciBhIGRlcG9zaXQ4ICB0byBiZSB0YWtlbi4JAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IGZvciB0aGUgYWNjb3VudCB0byBiZSBjcmVhdGVkLgCYRW1pdHMgYFRvdWNoZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC4YcmVmdW5kCAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAEoYWxsb3dfYnVybpkBARBib29sABs0WQFSZXR1cm4gdGhlIGRlcG9zaXQgKGlmIGFueSkgb2YgYW4gYXNzZXQgYWNjb3VudCBvciBhIGNvbnN1bWVyIHJlZmVyZW5jZSAoaWYgYW55KSBvZiBhbiBhY2NvdW50LgBoVGhlIG9yaWdpbiBtdXN0IGJlIFNpZ25lZC4APQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCBmb3Igd2hpY2ggdGhlIGNhbGxlciB3b3VsZCBsaWtlIHRoZSBkZXBvc2l0LCAgcmVmdW5kZWQuXQEtIGBhbGxvd19idXJuYDogSWYgYHRydWVgIHRoZW4gYXNzZXRzIG1heSBiZSBkZXN0cm95ZWQgaW4gb3JkZXIgdG8gY29tcGxldGUgdGhlIHJlZnVuZC4ASQFJdCB3aWxsIGZhaWwgd2l0aCBlaXRoZXIgW2BFcnJvcjo6Q29udGFpbnNIb2xkc2BdIG9yIFtgRXJyb3I6OkNvbnRhaW5zRnJlZXplc2BdIGlm1HRoZSBhc3NldCBhY2NvdW50IGNvbnRhaW5zIGhvbGRzIG9yIGZyZWV6ZXMgaW4gcGxhY2UuAJxFbWl0cyBgUmVmdW5kZWRgIGV2ZW50IHdoZW4gc3VjY2Vzc2Z1bC48c2V0X21pbl9iYWxhbmNlCAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAEsbWluX2JhbGFuY2WVAQEoVDo6QmFsYW5jZQAcMJRTZXRzIHRoZSBtaW5pbXVtIGJhbGFuY2Ugb2YgYW4gYXNzZXQuACEBT25seSB3b3JrcyBpZiB0aGVyZSBhcmVuJ3QgYW55IGFjY291bnRzIHRoYXQgYXJlIGhvbGRpbmcgdGhlIGFzc2V0IG9yIGlm4HRoZSBuZXcgdmFsdWUgb2YgYG1pbl9iYWxhbmNlYCBpcyBsZXNzIHRoYW4gdGhlIG9sZCBvbmUuAPxPcmlnaW4gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBzZW5kZXIgaGFzIHRvIGJlIHRoZSBPd25lciBvZiB0aGUsYXNzZXQgYGlkYC4AkC0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0LsAtIGBtaW5fYmFsYW5jZWA6IFRoZSBuZXcgdmFsdWUgb2YgYG1pbl9iYWxhbmNlYC4A1EVtaXRzIGBBc3NldE1pbkJhbGFuY2VDaGFuZ2VkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuLHRvdWNoX290aGVyCAEIaWQ4AUxUOjpBc3NldElkUGFyYW1ldGVyAAEMd2hvAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AHSyIQ3JlYXRlIGFuIGFzc2V0IGFjY291bnQgZm9yIGB3aG9gLgDAQSBkZXBvc2l0IHdpbGwgYmUgdGFrZW4gZnJvbSB0aGUgc2lnbmVyIGFjY291bnQuAF0BLSBgb3JpZ2luYDogTXVzdCBiZSBTaWduZWQ7IHRoZSBzaWduZXIgYWNjb3VudCBtdXN0IGhhdmUgc3VmZmljaWVudCBmdW5kcyBmb3IgYSBkZXBvc2l0OCAgdG8gYmUgdGFrZW4uYQEtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldCBmb3IgdGhlIGFjY291bnQgdG8gYmUgY3JlYXRlZCwgdGhlIGFzc2V0IHN0YXR1cyBtdXN0KCAgYmUgbGl2ZS6MLSBgd2hvYDogVGhlIGFjY291bnQgdG8gYmUgY3JlYXRlZC4AmEVtaXRzIGBUb3VjaGVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuMHJlZnVuZF9vdGhlcggBCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABDHdobwABUEFjY291bnRJZExvb2t1cE9mPFQ+AB40XQFSZXR1cm4gdGhlIGRlcG9zaXQgKGlmIGFueSkgb2YgYSB0YXJnZXQgYXNzZXQgYWNjb3VudC4gVXNlZnVsIGlmIHlvdSBhcmUgdGhlIGRlcG9zaXRvci4AXQFUaGUgb3JpZ2luIG11c3QgYmUgU2lnbmVkIGFuZCBlaXRoZXIgdGhlIGFjY291bnQgb3duZXIsIGRlcG9zaXRvciwgb3IgYXNzZXQgYEFkbWluYC4gSW5hAW9yZGVyIHRvIGJ1cm4gYSBub24temVybyBiYWxhbmNlIG9mIHRoZSBhc3NldCwgdGhlIGNhbGxlciBtdXN0IGJlIHRoZSBhY2NvdW50IGFuZCBzaG91bGQ0dXNlIGByZWZ1bmRgLgAZAS0gYGlkYDogVGhlIGlkZW50aWZpZXIgb2YgdGhlIGFzc2V0IGZvciB0aGUgYWNjb3VudCBob2xkaW5nIGEgZGVwb3NpdC58LSBgd2hvYDogVGhlIGFjY291bnQgdG8gcmVmdW5kLgBJAUl0IHdpbGwgZmFpbCB3aXRoIGVpdGhlciBbYEVycm9yOjpDb250YWluc0hvbGRzYF0gb3IgW2BFcnJvcjo6Q29udGFpbnNGcmVlemVzYF0gaWbUdGhlIGFzc2V0IGFjY291bnQgY29udGFpbnMgaG9sZHMgb3IgZnJlZXplcyBpbiBwbGFjZS4AnEVtaXRzIGBSZWZ1bmRlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLhRibG9jawgBCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABDHdobwABUEFjY291bnRJZExvb2t1cE9mPFQ+AB8oWQFEaXNhbGxvdyBmdXJ0aGVyIHVucHJpdmlsZWdlZCB0cmFuc2ZlcnMgb2YgYW4gYXNzZXQgYGlkYCB0byBhbmQgZnJvbSBhbiBhY2NvdW50IGB3aG9gLgA1AU9yaWdpbiBtdXN0IGJlIFNpZ25lZCBhbmQgdGhlIHNlbmRlciBzaG91bGQgYmUgdGhlIEZyZWV6ZXIgb2YgdGhlIGFzc2V0IGBpZGAuALgtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhY2NvdW50J3MgYXNzZXQulC0gYHdob2A6IFRoZSBhY2NvdW50IHRvIGJlIHVuYmxvY2tlZC4AQEVtaXRzIGBCbG9ja2VkYC4AOFdlaWdodDogYE8oMSlgMHRyYW5zZmVyX2FsbAwBCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABEGRlc3QAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABKGtlZXBfYWxpdmWZAQEQYm9vbAAgQB0BVHJhbnNmZXIgdGhlIGVudGlyZSB0cmFuc2ZlcmFibGUgYmFsYW5jZSBmcm9tIHRoZSBjYWxsZXIgYXNzZXQgYWNjb3VudC4AWQFOT1RFOiBUaGlzIGZ1bmN0aW9uIG9ubHkgYXR0ZW1wdHMgdG8gdHJhbnNmZXIgX3RyYW5zZmVyYWJsZV8gYmFsYW5jZXMuIFRoaXMgbWVhbnMgdGhhdD0BYW55IGhlbGQsIGZyb3plbiwgb3IgbWluaW11bSBiYWxhbmNlICh3aGVuIGBrZWVwX2FsaXZlYCBpcyBgdHJ1ZWApLCB3aWxsIG5vdCBiZV0BdHJhbnNmZXJyZWQgYnkgdGhpcyBmdW5jdGlvbi4gVG8gZW5zdXJlIHRoYXQgdGhpcyBmdW5jdGlvbiByZXN1bHRzIGluIGEga2lsbGVkIGFjY291bnQsRQF5b3UgbWlnaHQgbmVlZCB0byBwcmVwYXJlIHRoZSBhY2NvdW50IGJ5IHJlbW92aW5nIGFueSByZWZlcmVuY2UgY291bnRlcnMsIHN0b3JhZ2VAZGVwb3NpdHMsIGV0Yy4uLgDAVGhlIGRpc3BhdGNoIG9yaWdpbiBvZiB0aGlzIGNhbGwgbXVzdCBiZSBTaWduZWQuABkBLSBgaWRgOiBUaGUgaWRlbnRpZmllciBvZiB0aGUgYXNzZXQgZm9yIHRoZSBhY2NvdW50IGhvbGRpbmcgYSBkZXBvc2l0LqAtIGBkZXN0YDogVGhlIHJlY2lwaWVudCBvZiB0aGUgdHJhbnNmZXIuWQEtIGBrZWVwX2FsaXZlYDogQSBib29sZWFuIHRvIGRldGVybWluZSBpZiB0aGUgYHRyYW5zZmVyX2FsbGAgb3BlcmF0aW9uIHNob3VsZCBzZW5kIGFsbE0BICBvZiB0aGUgZnVuZHMgdGhlIGFzc2V0IGFjY291bnQgaGFzLCBjYXVzaW5nIHRoZSBzZW5kZXIgYXNzZXQgYWNjb3VudCB0byBiZSBraWxsZWRFASAgKGZhbHNlKSwgb3IgdHJhbnNmZXIgZXZlcnl0aGluZyBleGNlcHQgYXQgbGVhc3QgdGhlIG1pbmltdW0gYmFsYW5jZSwgd2hpY2ggd2lsbOggIGd1YXJhbnRlZSB0byBrZWVwIHRoZSBzZW5kZXIgYXNzZXQgYWNjb3VudCBhbGl2ZSAodHJ1ZSkuMHNldF9yZXNlcnZlcwgBCGlkOAFMVDo6QXNzZXRJZFBhcmFtZXRlcgABIHJlc2VydmVzQQQByEJvdW5kZWRWZWM8VDo6UmVzZXJ2ZURhdGEsIENvbnN0VTMyPE1BWF9SRVNFUlZFUz4+ACEkxFNldHMgdGhlIHRydXN0ZWQgcmVzZXJ2ZSBpbmZvcm1hdGlvbiBvZiBhbiBhc3NldC4AVQFPcmlnaW4gbXVzdCBiZSB0aGUgT3duZXIgb2YgdGhlIGFzc2V0IGBpZGAuIFRoZSBvcmlnaW4gbXVzdCBjb25mb3JtIHRvIHRoZSBjb25maWd1cmVkJQFgQ3JlYXRlT3JpZ2luYCBvciBiZSB0aGUgc2lnbmVkIGBvd25lcmAgY29uZmlndXJlZCBkdXJpbmcgYXNzZXQgY3JlYXRpb24uAJAtIGBpZGA6IFRoZSBpZGVudGlmaWVyIG9mIHRoZSBhc3NldC7wLSBgcmVzZXJ2ZXNgOiBUaGUgZnVsbCBsaXN0IG9mIHRydXN0ZWQgcmVzZXJ2ZXMgaW5mb3JtYXRpb24uANRFbWl0cyBgQXNzZXRNaW5CYWxhbmNlQ2hhbmdlZGAgZXZlbnQgd2hlbiBzdWNjZXNzZnVsLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy7dBAxccGFsbGV0X2Fzc2V0X2NvbnZlcnNpb24YcGFsbGV0EENhbGwEBFQAARgsY3JlYXRlX3Bvb2wIARhhc3NldDE5AgFEQm94PFQ6OkFzc2V0S2luZD4AARhhc3NldDI5AgFEQm94PFQ6OkFzc2V0S2luZD4AABAZAUNyZWF0ZXMgYW4gZW1wdHkgbGlxdWlkaXR5IHBvb2wgYW5kIGFuIGFzc29jaWF0ZWQgbmV3IGBscF90b2tlbmAgYXNzZXQBASh0aGUgaWQgb2Ygd2hpY2ggaXMgcmV0dXJuZWQgaW4gdGhlIGBFdmVudDo6UG9vbENyZWF0ZWRgIGV2ZW50KS4AEQFPbmNlIGEgcG9vbCBpcyBjcmVhdGVkLCBzb21lb25lIG1heSBbYFBhbGxldDo6YWRkX2xpcXVpZGl0eWBdIHRvIGl0LjRhZGRfbGlxdWlkaXR5HAEYYXNzZXQxOQIBREJveDxUOjpBc3NldEtpbmQ+AAEYYXNzZXQyOQIBREJveDxUOjpBc3NldEtpbmQ+AAE8YW1vdW50MV9kZXNpcmVklQEBKFQ6OkJhbGFuY2UAATxhbW91bnQyX2Rlc2lyZWSVAQEoVDo6QmFsYW5jZQABLGFtb3VudDFfbWlulQEBKFQ6OkJhbGFuY2UAASxhbW91bnQyX21pbpUBAShUOjpCYWxhbmNlAAEcbWludF90bwQBMFQ6OkFjY291bnRJZAABOORQcm92aWRlIGxpcXVpZGl0eSBpbnRvIHRoZSBwb29sIG9mIGBhc3NldDFgIGFuZCBgYXNzZXQyYC4NAU5PVEU6IGFuIG9wdGltYWwgYW1vdW50IG9mIGFzc2V0MSBhbmQgYXNzZXQyIHdpbGwgYmUgY2FsY3VsYXRlZCBhbmQhAW1pZ2h0IGJlIGRpZmZlcmVudCB0aGFuIHRoZSBwcm92aWRlZCBgYW1vdW50MV9kZXNpcmVkYC9gYW1vdW50Ml9kZXNpcmVkYPx0aHVzIHlvdSBzaG91bGQgcHJvdmlkZSB0aGUgbWluIGFtb3VudCB5b3UncmUgaGFwcHkgdG8gcHJvdmlkZS7IUGFyYW1zIGBhbW91bnQxX21pbmAvYGFtb3VudDJfbWluYCByZXByZXNlbnQgdGhhdC5JAWBtaW50X3RvYCB3aWxsIGJlIHNlbnQgdGhlIGxpcXVpZGl0eSB0b2tlbnMgdGhhdCByZXByZXNlbnQgdGhpcyBzaGFyZSBvZiB0aGUgcG9vbC4AXQFOT1RFOiB3aGVuIGVuY291bnRlcmluZyBhbiBpbmNvcnJlY3QgZXhjaGFuZ2UgcmF0ZSBhbmQgbm9uLXdpdGhkcmF3YWJsZSBwb29sIGxpcXVpZGl0eSzcYmF0Y2ggYW4gYXRvbWljIGNhbGwgd2l0aCBbYFBhbGxldDo6YWRkX2xpcXVpZGl0eWBdIGFuZFEBW2BQYWxsZXQ6OnN3YXBfZXhhY3RfdG9rZW5zX2Zvcl90b2tlbnNgXSBvciBbYFBhbGxldDo6c3dhcF90b2tlbnNfZm9yX2V4YWN0X3Rva2Vuc2BdJQFjYWxscyB0byByZW5kZXIgdGhlIGxpcXVpZGl0eSB3aXRoZHJhd2FibGUgYW5kIHJlY3RpZnkgdGhlIGV4Y2hhbmdlIHJhdGUuANhPbmNlIGxpcXVpZGl0eSBpcyBhZGRlZCwgc29tZW9uZSBtYXkgc3VjY2Vzc2Z1bGx5IGNhbGykW2BQYWxsZXQ6OnN3YXBfZXhhY3RfdG9rZW5zX2Zvcl90b2tlbnNgXS5AcmVtb3ZlX2xpcXVpZGl0eRgBGGFzc2V0MTkCAURCb3g8VDo6QXNzZXRLaW5kPgABGGFzc2V0MjkCAURCb3g8VDo6QXNzZXRLaW5kPgABNGxwX3Rva2VuX2J1cm6VAQEoVDo6QmFsYW5jZQABTGFtb3VudDFfbWluX3JlY2VpdmWVAQEoVDo6QmFsYW5jZQABTGFtb3VudDJfbWluX3JlY2VpdmWVAQEoVDo6QmFsYW5jZQABLHdpdGhkcmF3X3RvBAEwVDo6QWNjb3VudElkAAIMTQFBbGxvd3MgeW91IHRvIHJlbW92ZSBsaXF1aWRpdHkgYnkgcHJvdmlkaW5nIHRoZSBgbHBfdG9rZW5fYnVybmAgdG9rZW5zIHRoYXQgd2lsbCBiZVEBYnVybmVkIGluIHRoZSBwcm9jZXNzLiBXaXRoIHRoZSB1c2FnZSBvZiBgYW1vdW50MV9taW5fcmVjZWl2ZWAvYGFtb3VudDJfbWluX3JlY2VpdmVgNQFpdCdzIHBvc3NpYmxlIHRvIGNvbnRyb2wgdGhlIG1pbiBhbW91bnQgb2YgcmV0dXJuZWQgdG9rZW5zIHlvdSdyZSBoYXBweSB3aXRoLnBzd2FwX2V4YWN0X3Rva2Vuc19mb3JfdG9rZW5zFAEQcGF0aOEEAVhWZWM8Qm94PFQ6OkFzc2V0S2luZD4+AAEkYW1vdW50X2lulQEBKFQ6OkJhbGFuY2UAAThhbW91bnRfb3V0X21pbpUBAShUOjpCYWxhbmNlAAEcc2VuZF90bwQBMFQ6OkFjY291bnRJZAABKGtlZXBfYWxpdmWZAQEQYm9vbAADGMBTd2FwIHRoZSBleGFjdCBhbW91bnQgb2YgYGFzc2V0MWAgaW50byBgYXNzZXQyYC4tAWBhbW91bnRfb3V0X21pbmAgcGFyYW0gYWxsb3dzIHlvdSB0byBzcGVjaWZ5IHRoZSBtaW4gYW1vdW50IG9mIHRoZSBgYXNzZXQyYGB5b3UncmUgaGFwcHkgdG8gcmVjZWl2ZS4AWQFbYEFzc2V0Q29udmVyc2lvbkFwaTo6cXVvdGVfcHJpY2VfZXhhY3RfdG9rZW5zX2Zvcl90b2tlbnNgXSBydW50aW1lIGNhbGwgY2FuIGJlIGNhbGxlZDBmb3IgYSBxdW90ZS5wc3dhcF90b2tlbnNfZm9yX2V4YWN0X3Rva2VucxQBEHBhdGjhBAFYVmVjPEJveDxUOjpBc3NldEtpbmQ+PgABKGFtb3VudF9vdXSVAQEoVDo6QmFsYW5jZQABNGFtb3VudF9pbl9tYXiVAQEoVDo6QmFsYW5jZQABHHNlbmRfdG8EATBUOjpBY2NvdW50SWQAAShrZWVwX2FsaXZlmQEBEGJvb2wABBgBAVN3YXAgYW55IGFtb3VudCBvZiBgYXNzZXQxYCB0byBnZXQgdGhlIGV4YWN0IGFtb3VudCBvZiBgYXNzZXQyYC4ZAWBhbW91bnRfaW5fbWF4YCBwYXJhbSBhbGxvd3MgdG8gc3BlY2lmeSB0aGUgbWF4IGFtb3VudCBvZiB0aGUgYGFzc2V0MWBgeW91J3JlIGhhcHB5IHRvIHByb3ZpZGUuAFkBW2BBc3NldENvbnZlcnNpb25BcGk6OnF1b3RlX3ByaWNlX3Rva2Vuc19mb3JfZXhhY3RfdG9rZW5zYF0gcnVudGltZSBjYWxsIGNhbiBiZSBjYWxsZWQwZm9yIGEgcXVvdGUuFHRvdWNoCAEYYXNzZXQxOQIBREJveDxUOjpBc3NldEtpbmQ+AAEYYXNzZXQyOQIBREJveDxUOjpBc3NldEtpbmQ+AAUsTQFUb3VjaCBhbiBleGlzdGluZyBwb29sIHRvIGZ1bGZpbGwgcHJlcmVxdWlzaXRlcyBiZWZvcmUgcHJvdmlkaW5nIGxpcXVpZGl0eSwgc3VjaCBhc0kBZW5zdXJpbmcgdGhhdCB0aGUgcG9vbCdzIGFjY291bnRzIGFyZSBpbiBwbGFjZS4gSXQgaXMgdHlwaWNhbGx5IHVzZWZ1bCB3aGVuIGEgcG9vbFUBY3JlYXRvciByZW1vdmVzIHRoZSBwb29sJ3MgYWNjb3VudHMgYW5kIGRvZXMgbm90IHByb3ZpZGUgYSBsaXF1aWRpdHkuIFRoaXMgYWN0aW9uIG1heVUBaW52b2x2ZSBob2xkaW5nIGFzc2V0cyBmcm9tIHRoZSBjYWxsZXIgYXMgYSBkZXBvc2l0IGZvciBjcmVhdGluZyB0aGUgcG9vbCdzIGFjY291bnRzLgBoVGhlIG9yaWdpbiBtdXN0IGJlIFNpZ25lZC4AKQEtIGBhc3NldDFgOiBUaGUgYXNzZXQgSUQgb2YgYW4gZXhpc3RpbmcgcG9vbCB3aXRoIGEgcGFpciAoYXNzZXQxLCBhc3NldDIpLikBLSBgYXNzZXQyYDogVGhlIGFzc2V0IElEIG9mIGFuIGV4aXN0aW5nIHBvb2wgd2l0aCBhIHBhaXIgKGFzc2V0MSwgYXNzZXQyKS4AmEVtaXRzIGBUb3VjaGVkYCBldmVudCB3aGVuIHN1Y2Nlc3NmdWwuBHBQYWxsZXQncyBjYWxsYWJsZSBmdW5jdGlvbnMu4QQAAAI5AgDlBAw8cGFsbGV0X3JlY292ZXJ5GHBhbGxldBBDYWxsBARUAAEgZGNvbnRyb2xfaW5oZXJpdGVkX2FjY291bnQIASRyZWNvdmVyZWQAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABEGNhbGwgAXxCb3g8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AAAU6EFsbG93cyB0aGUgaW5oZXJpdG9yIG9mIGEgcmVjb3ZlcmVkIGFjY291bnQgdG8gY29udHJvbCBpdC4AWQFUaGUgY29udHJvbGxlciBpcyBub3QgYWxsb3dlZCB0byBkaXNwYXRjaCBjYWxscyBvZiB0aGUgcmVjb3ZlcnkgcGFsbGV0LiBPdGhlcndpc2UgdGhleVUBY291bGQgbWVzcyB3aXRoIHRoZSByZWNvdmVyeSBjb25maWd1cmF0aW9uIGFuZCBwb3NzaWJseSBjYW5jZWwgb3Igc2xhc2ggYXR0ZW1wdHMgZnJvbXhoaWdoZXItcHJpb3JpdHkgZnJpZW5kIGdyb3Vwcy5AcmV2b2tlX2luaGVyaXRvcgABEMxSZXZva2UgdGhlIGluaGVyaXRvciBvZiB0aGUgY2FsbGluZyAobG9zdCkgYWNjb3VudC4AWQFUaGlzIHJlbW92ZXMgdGhlIGluaGVyaXRvciBlbnRyeSBhbmQgcmVmdW5kcyB0aGUgaW5oZXJpdG9yIGRlcG9zaXQuIENhbiBvbmx5IGJlIGNhbGxlZMxieSB0aGUgbG9zdCBhY2NvdW50IGl0c2VsZiBhZnRlciBpdCByZWdhaW5zIGFjY2Vzcy5Ec2V0X2ZyaWVuZF9ncm91cHMEATRmcmllbmRfZ3JvdXBz6QQBVFZlYzxGcmllbmRHcm91cE9mPFQ+PgACIA0BU2V0IHRoZSBmcmllbmQgZ3JvdXBzIG9mIHRoZSBjYWxsaW5nIGFjY291bnQgYmVmb3JlIGl0IGxvc3QgYWNjZXNzLgBNAUNhbm5vdCBiZSB1c2VkIHdoaWxlIHRoZXJlIGFyZSBvbmdvaW5nIHJlY292ZXJ5IGF0dGVtcHRzLiBUaGUgZnJpZW5kcyBvZiBlYWNoIGdyb3VwSQFNVVNUIGJlIHNvcnRlZCBhbmQgdW5pcXVlLiBUcnlpbmcgdG8gaW5zZXJ0IHR3byBmcmllbmQgZ3JvdXBzIHdpdGggdGhlIHNhbWUgc2V0IG9mgGZyaWVuZHMgd2lsbCByZXN1bHQgaW4gYW4gZXJyb3IuAF0BQSBgRnJpZW5kR3JvdXBzQ2hhbmdlZGAgZXZlbnQgaXMgZW1pdHRlZCBvbmx5IHdoZW4gdGhlIG5ldyBmcmllbmRzIGdyb3VwcyBkaWZmZXJlZCBmcm9tNHRoZSBvbGQgb25lcy5AaW5pdGlhdGVfYXR0ZW1wdAgBEGxvc3QAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABSGZyaWVuZF9ncm91cF9pbmRleDgBQEZyaWVuZEdyb3VwSW5kZXgAAyQxAUF0dGVtcHQgdG8gcmVjb3ZlciBhIGxvc3QgYWNjb3VudCBieSBhIGZyaWVuZCB3aXRoaW4gdGhlIGdpdmVuIGZyaWVuZCBncm91cC4APQFUaGUgaW5pdGlhdG9yJ3MgYXBwcm92YWwgaXMgcmVjb3JkZWQgYXV0b21hdGljYWxseSwgc28gdGhleSBkbyBub3QgbmVlZCB0byBjYWxsdGBhcHByb3ZlX2F0dGVtcHRgIHRoZW1zZWx2ZXMuAF0BT25jZSBhbiBhY2NvdW50IGhhcyBiZWVuIHJlY292ZXJlZCBieSBhIGZyaWVuZCBncm91cCwgbm8gZnJpZW5kIGdyb3VwIG9mIGVxdWFsIG9yIGxvd2VyWQFwcmlvcml0eSBjYW4gb3BlbiBhIG5ldyBhdHRlbXB0OiBpdCB3aWxsIGZhaWwgd2l0aCBbYEVycm9yOjpIaWdoZXJQcmlvcml0eVJlY292ZXJlZGBdLthPbmx5IGEgc3RyaWN0bHkgaGlnaGVyLXByaW9yaXR5IGdyb3VwIChsb3dlciBudW1lcmljYWwNAVtgRnJpZW5kR3JvdXA6OmluaGVyaXRhbmNlX3ByaW9yaXR5YF0pIGNhbiB0YWtlIG92ZXIgdGhlIGluaGVyaXRvci48YXBwcm92ZV9hdHRlbXB0CAEQbG9zdAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAFIZnJpZW5kX2dyb3VwX2luZGV4OAFARnJpZW5kR3JvdXBJbmRleAAEFKBBcHByb3ZlIHRoZSByZWNvdmVyeSBmb3IgYSBsb3N0IGFjY291bnQuAGEBTXVzdCBiZSBjYWxsZWQgYnkgYSBmcmllbmQgb2YgdGhlIGZyaWVuZCBncm91cCB0aGF0IHRoZSByZWNvdmVyeSBhdHRlbXB0IGJlbG9uZ3MgdG8gdGhhdCEBZGlkIG5vdCB5ZXQgdm90ZS4gVm90aW5nIGlzIG9ubHkgYWxsb3dlZCB1bnRpbCB0aGUgdGhyZXNob2xkIGlzIHJlYWNoZWQu+GBmaW5pc2hfYXR0ZW1wdGAgc2hvdWxkIGJlIGNhbGxlZCBhZnRlciB0aGUgbGFzdCBmcmllbmQgdm90ZWQuOGZpbmlzaF9hdHRlbXB0CAEQbG9zdAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAFIZnJpZW5kX2dyb3VwX2luZGV4OAFARnJpZW5kR3JvdXBJbmRleAAFDEkBRmluaXNoIGEgcmVjb3ZlcnkgYXR0ZW1wdCBhbmQgbWFrZSB0aGUgbG9zdCBhY2NvdW50IGFjY2Vzc2libGUgZnJvbSB0aGUgaW5oZXJpdG9yLgAhAUNhbiBiZSBjYWxsZWQgYnkgYW55b25lIHdobyBpcyB3aWxsaW5nIHRvIHBheSBmb3IgdGhlIGluaGVyaXRvciBkZXBvc2l0LjhjYW5jZWxfYXR0ZW1wdAgBEGxvc3QAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABSGZyaWVuZF9ncm91cF9pbmRleDgBQEZyaWVuZEdyb3VwSW5kZXgABhRhAVRoZSBsb3N0IGFjY291bnQgY2FuIGNhbmNlbCBhbiBhdHRlbXB0IGF0IGFueSBtb21lbnQ7IHRoZSBpbml0aWF0b3IsIG9ubHkgYWZ0ZXIgYSBkZWxheS4AWQFUaGlzIHdpbGwgcmVsZWFzZSB0aGUgc2VjdXJpdHkgZGVwb3NpdCBiYWNrIHRvIHRoZSBpbml0aWF0b3IuIFRoZSBjYW5jZWwgZGVsYXkgbXVzdCBiZVUBcmVzcGVjdGVkIGlmIHRoZSBpbml0aWF0b3IgY2FsbHMgaXQgdG8gcHJldmVudCBpdCBmcm9tIGZyb250LXJ1bm5pbmcgdGhlIGxvc3QgYWNjb3VudGhmcm9tIHNsYXNoaW5nIHRoZSBhdHRlbXB0LjRzbGFzaF9hdHRlbXB0BAFIZnJpZW5kX2dyb3VwX2luZGV4OAFARnJpZW5kR3JvdXBJbmRleAAHBEkBU2xhc2ggYSBtYWxpY2lvdXMgcmVjb3ZlcnkgYXR0ZW1wdCBhbmQgYnVybiB0aGUgc2VjdXJpdHkgZGVwb3NpdCBvZiB0aGUgaW5pdGlhdG9yLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy7pBAAAAu0EAO0ECDxwYWxsZXRfcmVjb3ZlcnksRnJpZW5kR3JvdXAMTFByb3ZpZGVkQmxvY2tOdW1iZXIBOCRBY2NvdW50SWQBBBxGcmllbmRzAfEEABgBHGZyaWVuZHPxBAEcRnJpZW5kcwABOGZyaWVuZHNfbmVlZGVkOAEMdTMyAAEkaW5oZXJpdG9yBAEkQWNjb3VudElkAAFEaW5oZXJpdGFuY2VfZGVsYXk4AUxQcm92aWRlZEJsb2NrTnVtYmVyAAFQaW5oZXJpdGFuY2VfcHJpb3JpdHk4AUxJbmhlcml0YW5jZVByaW9yaXR5AAEwY2FuY2VsX2RlbGF5OAFMUHJvdmlkZWRCbG9ja051bWJlcgAA8QQMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEEBFMAAAQAnQEBGFZlYzxUPgAA9QQMOHBhbGxldF9zb2NpZXR5GHBhbGxldBBDYWxsCARUAARJAAFYDGJpZAQBFHZhbHVllQEBPEJhbGFuY2VPZjxULCBJPgAAJNxBIHVzZXIgb3V0c2lkZSBvZiB0aGUgc29jaWV0eSBjYW4gbWFrZSBhIGJpZCBmb3IgZW50cnkuAGEBUGF5bWVudDogVGhlIGdyb3VwJ3MgQ2FuZGlkYXRlIERlcG9zaXQgd2lsbCBiZSByZXNlcnZlZCBmb3IgbWFraW5nIGEgYmlkLiBJdCBpcyByZXR1cm5lZOx3aGVuIHRoZSBiaWQgYmVjb21lcyBhIG1lbWJlciwgb3IgaWYgdGhlIGJpZCBjYWxscyBgdW5iaWRgLgDMVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uACxQYXJhbWV0ZXJzOlUBLSBgdmFsdWVgOiBBIG9uZSB0aW1lIHBheW1lbnQgdGhlIGJpZCB3b3VsZCBsaWtlIHRvIHJlY2VpdmUgd2hlbiBqb2luaW5nIHRoZSBzb2NpZXR5LhR1bmJpZAABHNRBIGJpZGRlciBjYW4gcmVtb3ZlIHRoZWlyIGJpZCBmb3IgZW50cnkgaW50byBzb2NpZXR5LvxCeSBkb2luZyBzbywgdGhleSB3aWxsIGhhdmUgdGhlaXIgY2FuZGlkYXRlIGRlcG9zaXQgcmV0dXJuZWQgb3KAdGhleSB3aWxsIHVudm91Y2ggdGhlaXIgdm91Y2hlci4A+FBheW1lbnQ6IFRoZSBiaWQgZGVwb3NpdCBpcyB1bnJlc2VydmVkIGlmIHRoZSB1c2VyIG1hZGUgYSBiaWQuAAEBVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8gYW5kIGEgYmlkZGVyLhR2b3VjaAwBDHdobwABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEUdmFsdWWVAQE8QmFsYW5jZU9mPFQsIEk+AAEMdGlwlQEBPEJhbGFuY2VPZjxULCBJPgACREEBQXMgYSBtZW1iZXIsIHZvdWNoIGZvciBzb21lb25lIHRvIGpvaW4gc29jaWV0eSBieSBwbGFjaW5nIGEgYmlkIG9uIHRoZWlyIGJlaGFsZi4AUQFUaGVyZSBpcyBubyBkZXBvc2l0IHJlcXVpcmVkIHRvIHZvdWNoIGZvciBhIG5ldyBiaWQsIGJ1dCBhIG1lbWJlciBjYW4gb25seSB2b3VjaCBmb3JZAW9uZSBiaWQgYXQgYSB0aW1lLiBJZiB0aGUgYmlkIGJlY29tZXMgYSBzdXNwZW5kZWQgY2FuZGlkYXRlIGFuZCB1bHRpbWF0ZWx5IHJlamVjdGVkIGJ5PQF0aGUgc3VzcGVuc2lvbiBqdWRnZW1lbnQgb3JpZ2luLCB0aGUgbWVtYmVyIHdpbGwgYmUgYmFubmVkIGZyb20gdm91Y2hpbmcgYWdhaW4uAFUBQXMgYSB2b3VjaGluZyBtZW1iZXIsIHlvdSBjYW4gY2xhaW0gYSB0aXAgaWYgdGhlIGNhbmRpZGF0ZSBpcyBhY2NlcHRlZC4gVGhpcyB0aXAgd2lsbE0BYmUgcGFpZCBhcyBhIHBvcnRpb24gb2YgdGhlIHJld2FyZCB0aGUgbWVtYmVyIHdpbGwgcmVjZWl2ZSBmb3Igam9pbmluZyB0aGUgc29jaWV0eS4AAQFUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXyBhbmQgYSBtZW1iZXIuACxQYXJhbWV0ZXJzOsgtIGB3aG9gOiBUaGUgdXNlciB3aG8geW91IHdvdWxkIGxpa2UgdG8gdm91Y2ggZm9yLk0BLSBgdmFsdWVgOiBUaGUgdG90YWwgcmV3YXJkIHRvIGJlIHBhaWQgYmV0d2VlbiB5b3UgYW5kIHRoZSBjYW5kaWRhdGUgaWYgdGhleSBiZWNvbWVgYSBtZW1iZXIgaW4gdGhlIHNvY2lldHkuRQEtIGB0aXBgOiBZb3VyIGN1dCBvZiB0aGUgdG90YWwgYHZhbHVlYCBwYXlvdXQgd2hlbiB0aGUgY2FuZGlkYXRlIGlzIGluZHVjdGVkIGludG8RAXRoZSBzb2NpZXR5LiBUaXBzIGxhcmdlciB0aGFuIGB2YWx1ZWAgd2lsbCBiZSBzYXR1cmF0ZWQgdXBvbiBwYXlvdXQuHHVudm91Y2gAAxwpAUFzIGEgdm91Y2hpbmcgbWVtYmVyLCB1bnZvdWNoIGEgYmlkLiBUaGlzIG9ubHkgd29ya3Mgd2hpbGUgdm91Y2hlZCB1c2VyIGlzkG9ubHkgYSBiaWRkZXIgKGFuZCBub3QgYSBjYW5kaWRhdGUpLgAlAVRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfIGFuZCBhIHZvdWNoaW5nIG1lbWJlci4ALFBhcmFtZXRlcnM6KQEtIGBwb3NgOiBQb3NpdGlvbiBpbiB0aGUgYEJpZHNgIHZlY3RvciBvZiB0aGUgYmlkIHdobyBzaG91bGQgYmUgdW52b3VjaGVkLhB2b3RlCAEkY2FuZGlkYXRlAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARxhcHByb3ZlmQEBEGJvb2wABCCEQXMgYSBtZW1iZXIsIHZvdGUgb24gYSBjYW5kaWRhdGUuAAEBVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8gYW5kIGEgbWVtYmVyLgAsUGFyYW1ldGVyczoJAS0gYGNhbmRpZGF0ZWA6IFRoZSBjYW5kaWRhdGUgdGhhdCB0aGUgbWVtYmVyIHdvdWxkIGxpa2UgdG8gYmlkIG9uLkUBLSBgYXBwcm92ZWA6IEEgYm9vbGVhbiB3aGljaCBzYXlzIGlmIHRoZSBjYW5kaWRhdGUgc2hvdWxkIGJlIGFwcHJvdmVkIChgdHJ1ZWApIG9yVCAgcmVqZWN0ZWQgKGBmYWxzZWApLjRkZWZlbmRlcl92b3RlBAEcYXBwcm92ZZkBARBib29sAAUciEFzIGEgbWVtYmVyLCB2b3RlIG9uIHRoZSBkZWZlbmRlci4AAQFUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXyBhbmQgYSBtZW1iZXIuACxQYXJhbWV0ZXJzOvAtIGBhcHByb3ZlYDogQSBib29sZWFuIHdoaWNoIHNheXMgaWYgdGhlIGNhbmRpZGF0ZSBzaG91bGQgYmWgYXBwcm92ZWQgKGB0cnVlYCkgb3IgcmVqZWN0ZWQgKGBmYWxzZWApLhhwYXlvdXQABihBAVRyYW5zZmVyIHRoZSBmaXJzdCBtYXR1cmVkIHBheW91dCBmb3IgdGhlIHNlbmRlciBhbmQgcmVtb3ZlIGl0IGZyb20gdGhlIHJlY29yZHMuAEEBTk9URTogVGhpcyBleHRyaW5zaWMgbmVlZHMgdG8gYmUgY2FsbGVkIG11bHRpcGxlIHRpbWVzIHRvIGNsYWltIG11bHRpcGxlIG1hdHVyZWQgcGF5b3V0cy4AHQFQYXltZW50OiBUaGUgbWVtYmVyIHdpbGwgcmVjZWl2ZSBhIHBheW1lbnQgZXF1YWwgdG8gdGhlaXIgZmlyc3QgbWF0dXJlZHRwYXlvdXQgdG8gdGhlaXIgZnJlZSBiYWxhbmNlLgARAVRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfIGFuZCBhIG1lbWJlciB3aXRoSHBheW91dHMgcmVtYWluaW5nLix3YWl2ZV9yZXBheQQBGGFtb3VudJUBATxCYWxhbmNlT2Y8VCwgST4ABwhNAVJlcGF5IHRoZSBwYXltZW50IHByZXZpb3VzbHkgZ2l2ZW4gdG8gdGhlIG1lbWJlciB3aXRoIHRoZSBzaWduZWQgb3JpZ2luLCByZW1vdmUgYW555HBlbmRpbmcgcGF5bWVudHMsIGFuZCBlbGV2YXRlIHRoZW0gZnJvbSByYW5rIDAgdG8gcmFuayAxLjRmb3VuZF9zb2NpZXR5GAEcZm91bmRlcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEsbWF4X21lbWJlcnM4AQx1MzIAAShtYXhfaW50YWtlOAEMdTMyAAEsbWF4X3N0cmlrZXM4AQx1MzIAAURjYW5kaWRhdGVfZGVwb3NpdJUBATxCYWxhbmNlT2Y8VCwgST4AARRydWxlcxgBHFZlYzx1OD4ACERIRm91bmQgdGhlIHNvY2lldHkuAOxUaGlzIGlzIGRvbmUgYXMgYSBkaXNjcmV0ZSBhY3Rpb24gaW4gb3JkZXIgdG8gYWxsb3cgZm9yIHRoZRUBcGFsbGV0IHRvIGJlIGluY2x1ZGVkIGludG8gYSBydW5uaW5nIGNoYWluIGFuZCBjYW4gb25seSBiZSBkb25lIG9uY2UuABkBVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgZnJvbSB0aGUgX0ZvdW5kZXJTZXRPcmlnaW5fLgAsUGFyYW1ldGVyczoVAS0gYGZvdW5kZXJgIC0gVGhlIGZpcnN0IG1lbWJlciBhbmQgaGVhZCBvZiB0aGUgbmV3bHkgZm91bmRlZCBzb2NpZXR5LhEBLSBgbWF4X21lbWJlcnNgIC0gVGhlIGluaXRpYWwgbWF4IG51bWJlciBvZiBtZW1iZXJzIGZvciB0aGUgc29jaWV0eS4RAS0gYG1heF9pbnRha2VgIC0gVGhlIG1heGltdW0gbnVtYmVyIG9mIGNhbmRpZGF0ZXMgcGVyIGludGFrZSBwZXJpb2QuSQEtIGBtYXhfc3RyaWtlc2A6IFRoZSBtYXhpbXVtIG51bWJlciBvZiBzdHJpa2VzIGEgbWVtYmVyIG1heSBnZXQgYmVmb3JlIHRoZXkgYmVjb21l2CAgc3VzcGVuZGVkIGFuZCBtYXkgb25seSBiZSByZWluc3RhdGVkIGJ5IHRoZSBmb3VuZGVyLlkBLSBgY2FuZGlkYXRlX2RlcG9zaXRgOiBUaGUgZGVwb3NpdCByZXF1aXJlZCB0byBtYWtlIGEgYmlkIGZvciBtZW1iZXJzaGlwIG9mIHRoZSBncm91cC7wLSBgcnVsZXNgIC0gVGhlIHJ1bGVzIG9mIHRoaXMgc29jaWV0eSBjb25jZXJuaW5nIG1lbWJlcnNoaXAuAEBDb21wbGV4aXR5OiBPKDEpIGRpc3NvbHZlAAkUsERpc3NvbHZlIHRoZSBzb2NpZXR5IGFuZCByZW1vdmUgYWxsIG1lbWJlcnMuAFkBVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgU2lnbmVkLCBhbmQgdGhlIHNpZ25pbmcgYWNjb3VudCBtdXN0IGJlIGJvdGhVAXRoZSBgRm91bmRlcmAgYW5kIHRoZSBgSGVhZGAuIFRoaXMgaW1wbGllcyB0aGF0IGl0IG1heSBvbmx5IGJlIGRvbmUgd2hlbiB0aGVyZSBpcyBvbmUcbWVtYmVyLlhqdWRnZV9zdXNwZW5kZWRfbWVtYmVyCAEMd2hvAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARxmb3JnaXZlmQEBEGJvb2wACjgpAUFsbG93IHN1c3BlbnNpb24ganVkZ2VtZW50IG9yaWdpbiB0byBtYWtlIGp1ZGdlbWVudCBvbiBhIHN1c3BlbmRlZCBtZW1iZXIuAFUBSWYgYSBzdXNwZW5kZWQgbWVtYmVyIGlzIGZvcmdpdmVuLCB3ZSBzaW1wbHkgYWRkIHRoZW0gYmFjayBhcyBhIG1lbWJlciwgbm90IGFmZmVjdGluZ8hhbnkgb2YgdGhlIGV4aXN0aW5nIHN0b3JhZ2UgaXRlbXMgZm9yIHRoYXQgbWVtYmVyLgBFAUlmIGEgc3VzcGVuZGVkIG1lbWJlciBpcyByZWplY3RlZCwgcmVtb3ZlIGFsbCBhc3NvY2lhdGVkIHN0b3JhZ2UgaXRlbXMsIGluY2x1ZGluZ/x0aGVpciBwYXlvdXRzLCBhbmQgcmVtb3ZlIGFueSB2b3VjaGVkIGJpZHMgdGhleSBjdXJyZW50bHkgaGF2ZS4ACQFUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBTaWduZWQgZnJvbSB0aGUgRm91bmRlci4ALFBhcmFtZXRlcnM6sC0gYHdob2AgLSBUaGUgc3VzcGVuZGVkIG1lbWJlciB0byBiZSBqdWRnZWQuVQEtIGBmb3JnaXZlYCAtIEEgYm9vbGVhbiByZXByZXNlbnRpbmcgd2hldGhlciB0aGUgc3VzcGVuc2lvbiBqdWRnZW1lbnQgb3JpZ2luIGZvcmdpdmVzzCAgKGB0cnVlYCkgb3IgcmVqZWN0cyAoYGZhbHNlYCkgYSBzdXNwZW5kZWQgbWVtYmVyLjhzZXRfcGFyYW1ldGVycxABLG1heF9tZW1iZXJzOAEMdTMyAAEobWF4X2ludGFrZTgBDHUzMgABLG1heF9zdHJpa2VzOAEMdTMyAAFEY2FuZGlkYXRlX2RlcG9zaXSVAQE8QmFsYW5jZU9mPFQsIEk+AAswYQFDaGFuZ2UgdGhlIG1heGltdW0gbnVtYmVyIG9mIG1lbWJlcnMgaW4gc29jaWV0eSBhbmQgdGhlIG1heGltdW0gbnVtYmVyIG9mIG5ldyBjYW5kaWRhdGVzaGluIGEgc2luZ2xlIGludGFrZSBwZXJpb2QuAAEBVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgU2lnbmVkIGJ5IHRoZSBGb3VuZGVyLgAsUGFyYW1ldGVyczpVAS0gYG1heF9tZW1iZXJzYCAtIFRoZSBtYXhpbXVtIG51bWJlciBvZiBtZW1iZXJzIGZvciB0aGUgc29jaWV0eS4gVGhpcyBtdXN0IGJlIG5vIGxlc3OUICB0aGFuIHRoZSBjdXJyZW50IG51bWJlciBvZiBtZW1iZXJzLhEBLSBgbWF4X2ludGFrZWAgLSBUaGUgbWF4aW11bSBudW1iZXIgb2YgY2FuZGlkYXRlcyBwZXIgaW50YWtlIHBlcmlvZC5JAS0gYG1heF9zdHJpa2VzYDogVGhlIG1heGltdW0gbnVtYmVyIG9mIHN0cmlrZXMgYSBtZW1iZXIgbWF5IGdldCBiZWZvcmUgdGhleSBiZWNvbWXYICBzdXNwZW5kZWQgYW5kIG1heSBvbmx5IGJlIHJlaW5zdGF0ZWQgYnkgdGhlIGZvdW5kZXIuWQEtIGBjYW5kaWRhdGVfZGVwb3NpdGA6IFRoZSBkZXBvc2l0IHJlcXVpcmVkIHRvIG1ha2UgYSBiaWQgZm9yIG1lbWJlcnNoaXAgb2YgdGhlIGdyb3VwLjhwdW5pc2hfc2tlcHRpYwAMCFUBUHVuaXNoIHRoZSBza2VwdGljIHdpdGggYSBzdHJpa2UgaWYgdGhleSBkaWQgbm90IHZvdGUgb24gYSBjYW5kaWRhdGUuIENhbGxhYmxlIGJ5IHRoZShjYW5kaWRhdGUuQGNsYWltX21lbWJlcnNoaXAADQgNAVRyYW5zZm9ybSBhbiBhcHByb3ZlZCBjYW5kaWRhdGUgaW50byBhIG1lbWJlci4gQ2FsbGFibGUgb25seSBieSB0aGX4dGhlIGNhbmRpZGF0ZSwgYW5kIG9ubHkgYWZ0ZXIgdGhlIHBlcmlvZCBmb3Igdm90aW5nIGhhcyBlbmRlZC5EYmVzdG93X21lbWJlcnNoaXAEASRjYW5kaWRhdGUEATBUOjpBY2NvdW50SWQADgxhAVRyYW5zZm9ybSBhbiBhcHByb3ZlZCBjYW5kaWRhdGUgaW50byBhIG1lbWJlci4gQ2FsbGFibGUgb25seSBieSB0aGUgU2lnbmVkIG9yaWdpbiBvZiB0aGVZAUZvdW5kZXIsIG9ubHkgYWZ0ZXIgdGhlIHBlcmlvZCBmb3Igdm90aW5nIGhhcyBlbmRlZCBhbmQgb25seSB3aGVuIHRoZSBjYW5kaWRhdGUgaXMgbm90RGNsZWFybHkgcmVqZWN0ZWQuOGtpY2tfY2FuZGlkYXRlBAEkY2FuZGlkYXRlBAEwVDo6QWNjb3VudElkAA8UXQFSZW1vdmUgdGhlIGNhbmRpZGF0ZSdzIGFwcGxpY2F0aW9uIGZyb20gdGhlIHNvY2lldHkuIENhbGxhYmxlIG9ubHkgYnkgdGhlIFNpZ25lZCBvcmlnaW5VAW9mIHRoZSBGb3VuZGVyLCBvbmx5IGFmdGVyIHRoZSBwZXJpb2QgZm9yIHZvdGluZyBoYXMgZW5kZWQsIGFuZCBvbmx5IHdoZW4gdGhleSBkbyBub3RYaGF2ZSBhIGNsZWFyIGFwcHJvdmFsLgC4QW55IGJpZCBkZXBvc2l0IGlzIGxvc3QgYW5kIHZvdWNoZXIgaXMgYmFubmVkLkByZXNpZ25fY2FuZGlkYWN5ABAMUQFSZW1vdmUgdGhlIGNhbmRpZGF0ZSdzIGFwcGxpY2F0aW9uIGZyb20gdGhlIHNvY2lldHkuIENhbGxhYmxlIG9ubHkgYnkgdGhlIGNhbmRpZGF0ZS4AuEFueSBiaWQgZGVwb3NpdCBpcyBsb3N0IGFuZCB2b3VjaGVyIGlzIGJhbm5lZC44ZHJvcF9jYW5kaWRhdGUEASRjYW5kaWRhdGUEATBUOjpBY2NvdW50SWQAERQtAVJlbW92ZSBhIGBjYW5kaWRhdGVgJ3MgZmFpbGVkIGFwcGxpY2F0aW9uIGZyb20gdGhlIHNvY2lldHkuIENhbGxhYmxlIGJ5IGFueRkBc2lnbmVkIG9yaWdpbiBidXQgb25seSBhdCB0aGUgZW5kIG9mIHRoZSBzdWJzZXF1ZW50IHJvdW5kIGFuZCBvbmx5IGZvcsBhIGNhbmRpZGF0ZSB3aXRoIG1vcmUgcmVqZWN0aW9ucyB0aGFuIGFwcHJvdmFscy4AyFRoZSBiaWQgZGVwb3NpdCBpcyBsb3N0IGFuZCB0aGUgdm91Y2hlciBpcyBiYW5uZWQuRGNsZWFudXBfY2FuZGlkYWN5CAEkY2FuZGlkYXRlBAEwVDo6QWNjb3VudElkAAEMbWF4OAEMdTMyABIM5FJlbW92ZSB1cCB0byBgbWF4YCBzdGFsZSB2b3RlcyBmb3IgdGhlIGdpdmVuIGBjYW5kaWRhdGVgLgBZAU1heSBiZSBjYWxsZWQgYnkgYW55IFNpZ25lZCBvcmlnaW4sIGJ1dCBvbmx5IGFmdGVyIHRoZSBjYW5kaWRhdGUncyBjYW5kaWRhY3kgaXMgZW5kZWQuRGNsZWFudXBfY2hhbGxlbmdlCAE8Y2hhbGxlbmdlX3JvdW5kOAEoUm91bmRJbmRleAABDG1heDgBDHUzMgATDD0BUmVtb3ZlIHVwIHRvIGBtYXhgIHN0YWxlIHZvdGVzIGZvciB0aGUgZGVmZW5kZXIgaW4gdGhlIGdpdmVuIGBjaGFsbGVuZ2Vfcm91bmRgLgBBAU1heSBiZSBjYWxsZWQgYnkgYW55IFNpZ25lZCBvcmlnaW4sIGJ1dCBvbmx5IGFmdGVyIHRoZSBjaGFsbGVuZ2Ugcm91bmQgaXMgZW5kZWQuMHBva2VfZGVwb3NpdAAUHJxQb2tlIHRoZSBkZXBvc2l0IHJlc2VydmVkIHdoZW4gYmlkZGluZy4AKQFUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXyBhbmQgbXVzdCBiZSB0aGUgYmlkZGVyLgBVAVRoZSB0cmFuc2FjdGlvbiBmZWUgaXMgd2FpdmVkIGlmIHRoZSBkZXBvc2l0IGlzIGNoYW5nZWQgYWZ0ZXIgcG9raW5nL3JlY29uc2lkZXJhdGlvbi4AjEVtaXRzIGBEZXBvc2l0UG9rZWRgIGlmIHN1Y2Nlc3NmdWwuLGtpY2tfbWVtYmVyBAEMd2hvAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AFRxJAUtpY2sgYSBtZW1iZXIgZnJvbSB0aGUgc29jaWV0eS4gQ2FsbGFibGUgb25seSBieSB0aGUgU2lnbmVkIG9yaWdpbiBvZiB0aGUgRm91bmRlci4ASQFUaGUgbWVtYmVyIGlzIGZ1bGx5IHJlbW92ZWQgKG5vdCBzdXNwZW5kZWQpLiBBbGwgdW5jbGFpbWVkIHBheW91dHMgYXJlIHNsYXNoZWQgYW5kcHJldHVybmVkIHRvIHRoZSBzb2NpZXR5IHBvdC4ALFBhcmFtZXRlcnM6iC0gYHdob2A6IFRoZSBtZW1iZXIgdG8gYmUgcmVtb3ZlZC4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMu+QQMNHBhbGxldF9yZXZpdmUYcGFsbGV0EENhbGwEBFQAATgwZXRoX3RyYW5zYWN0BAEccGF5bG9hZBgBHFZlYzx1OD4AADAtAUEgcmF3IEVWTSB0cmFuc2FjdGlvbiwgdHlwaWNhbGx5IGRpc3BhdGNoZWQgYnkgYW4gRXRoZXJldW0gSlNPTi1SUEMgc2VydmVyLgAwIyBQYXJhbWV0ZXJzAOwqIGBwYXlsb2FkYDogVGhlIGVuY29kZWQgW2BjcmF0ZTo6ZXZtOjpUcmFuc2FjdGlvblNpZ25lZGBdLgAYIyBOb3RlAFEBVGhpcyBjYWxsIGNhbm5vdCBiZSBkaXNwYXRjaGVkIGRpcmVjdGx5OyBhdHRlbXB0aW5nIHRvIGRvIHNvIHdpbGwgcmVzdWx0IGluIGEgZmFpbGVkUQF0cmFuc2FjdGlvbi4gSXQgc2VydmVzIGFzIGEgd3JhcHBlciBmb3IgYW4gRXRoZXJldW0gdHJhbnNhY3Rpb24uIFdoZW4gc3VibWl0dGVkLCB0aGVZAXJ1bnRpbWUgY29udmVydHMgaXQgaW50byBhIFtgc3BfcnVudGltZTo6Z2VuZXJpYzo6Q2hlY2tlZEV4dHJpbnNpY2BdIGJ5IHJlY292ZXJpbmcgdGhlmHNpZ25lciBhbmQgdmFsaWRhdGluZyB0aGUgdHJhbnNhY3Rpb24uEGNhbGwUARBkZXN0/QQBEEgxNjAAARR2YWx1ZZEBATBCYWxhbmNlT2Y8VD4AATB3ZWlnaHRfbGltaXR5AQEYV2VpZ2h0AAFUc3RvcmFnZV9kZXBvc2l0X2xpbWl0kQEBMEJhbGFuY2VPZjxUPgABEGRhdGEYARxWZWM8dTg+AAFABQFNYWtlcyBhIGNhbGwgdG8gYW4gYWNjb3VudCwgb3B0aW9uYWxseSB0cmFuc2ZlcnJpbmcgc29tZSBiYWxhbmNlLgAwIyBQYXJhbWV0ZXJzAKgqIGBkZXN0YDogQWRkcmVzcyBvZiB0aGUgY29udHJhY3QgdG8gY2FsbC78KiBgdmFsdWVgOiBUaGUgYmFsYW5jZSB0byB0cmFuc2ZlciBmcm9tIHRoZSBgb3JpZ2luYCB0byBgZGVzdGAuLQEqIGB3ZWlnaHRfbGltaXRgOiBUaGUgd2VpZ2h0IGxpbWl0IGVuZm9yY2VkIHdoZW4gZXhlY3V0aW5nIHRoZSBjb25zdHJ1Y3Rvci5VASogYHN0b3JhZ2VfZGVwb3NpdF9saW1pdGA6IFRoZSBtYXhpbXVtIGFtb3VudCBvZiBiYWxhbmNlIHRoYXQgY2FuIGJlIGNoYXJnZWQgZnJvbSB0aGWkICBjYWxsZXIgdG8gcGF5IGZvciB0aGUgc3RvcmFnZSBjb25zdW1lZC7EKiBgZGF0YWA6IFRoZSBpbnB1dCBkYXRhIHRvIHBhc3MgdG8gdGhlIGNvbnRyYWN0LgAlASogSWYgdGhlIGFjY291bnQgaXMgYSBzbWFydC1jb250cmFjdCBhY2NvdW50LCB0aGUgYXNzb2NpYXRlZCBjb2RlIHdpbGwgYmWsZXhlY3V0ZWQgYW5kIGFueSB2YWx1ZSB3aWxsIGJlIHRyYW5zZmVycmVkLhUBKiBJZiB0aGUgYWNjb3VudCBpcyBhIHJlZ3VsYXIgYWNjb3VudCwgYW55IHZhbHVlIHdpbGwgYmUgdHJhbnNmZXJyZWQuRQEqIElmIG5vIGFjY291bnQgZXhpc3RzIGFuZCB0aGUgY2FsbCB2YWx1ZSBpcyBub3QgbGVzcyB0aGFuIGBleGlzdGVudGlhbF9kZXBvc2l0YCwRAWEgcmVndWxhciBhY2NvdW50IHdpbGwgYmUgY3JlYXRlZCBhbmQgYW55IHZhbHVlIHdpbGwgYmUgdHJhbnNmZXJyZWQuLGluc3RhbnRpYXRlGAEUdmFsdWWRAQEwQmFsYW5jZU9mPFQ+AAEwd2VpZ2h0X2xpbWl0eQEBGFdlaWdodAABVHN0b3JhZ2VfZGVwb3NpdF9saW1pdJEBATBCYWxhbmNlT2Y8VD4AASRjb2RlX2hhc2hAATRzcF9jb3JlOjpIMjU2AAEQZGF0YRgBHFZlYzx1OD4AARBzYWx0AQUBQE9wdGlvbjxbdTg7IDMyXT4AAhT0SW5zdGFudGlhdGVzIGEgY29udHJhY3QgZnJvbSBhIHByZXZpb3VzbHkgZGVwbG95ZWQgdm0gYmluYXJ5LgA1AVRoaXMgZnVuY3Rpb24gaXMgaWRlbnRpY2FsIHRvIFtgU2VsZjo6aW5zdGFudGlhdGVfd2l0aF9jb2RlYF0gYnV0IHdpdGhvdXQgdGhlQQFjb2RlIGRlcGxveW1lbnQgc3RlcC4gSW5zdGVhZCwgdGhlIGBjb2RlX2hhc2hgIG9mIGFuIG9uLWNoYWluIGRlcGxveWVkIHZtIGJpbmFyeURtdXN0IGJlIHN1cHBsaWVkLlRpbnN0YW50aWF0ZV93aXRoX2NvZGUYARR2YWx1ZZEBATBCYWxhbmNlT2Y8VD4AATB3ZWlnaHRfbGltaXR5AQEYV2VpZ2h0AAFUc3RvcmFnZV9kZXBvc2l0X2xpbWl0kQEBMEJhbGFuY2VPZjxUPgABEGNvZGUYARxWZWM8dTg+AAEQZGF0YRgBHFZlYzx1OD4AARBzYWx0AQUBQE9wdGlvbjxbdTg7IDMyXT4AA2wxAUluc3RhbnRpYXRlcyBhIG5ldyBjb250cmFjdCBmcm9tIHRoZSBzdXBwbGllZCBgY29kZWAgb3B0aW9uYWxseSB0cmFuc2ZlcnJpbmc0c29tZSBiYWxhbmNlLgAhAVRoaXMgZGlzcGF0Y2hhYmxlIGhhcyB0aGUgc2FtZSBlZmZlY3QgYXMgY2FsbGluZyBbYFNlbGY6OnVwbG9hZF9jb2RlYF0gKz0BW2BTZWxmOjppbnN0YW50aWF0ZWBdLiBCdW5kbGluZyB0aGVtIHRvZ2V0aGVyIHByb3ZpZGVzIGVmZmljaWVuY3kgZ2FpbnMuIFBsZWFzZdhhbHNvIGNoZWNrIHRoZSBkb2N1bWVudGF0aW9uIG9mIFtgU2VsZjo6dXBsb2FkX2NvZGVgXS4AMCMgUGFyYW1ldGVycwBNASogYHZhbHVlYDogVGhlIGJhbGFuY2UgdG8gdHJhbnNmZXIgZnJvbSB0aGUgYG9yaWdpbmAgdG8gdGhlIG5ld2x5IGNyZWF0ZWQgY29udHJhY3QuLQEqIGB3ZWlnaHRfbGltaXRgOiBUaGUgd2VpZ2h0IGxpbWl0IGVuZm9yY2VkIHdoZW4gZXhlY3V0aW5nIHRoZSBjb25zdHJ1Y3Rvci5VASogYHN0b3JhZ2VfZGVwb3NpdF9saW1pdGA6IFRoZSBtYXhpbXVtIGFtb3VudCBvZiBiYWxhbmNlIHRoYXQgY2FuIGJlIGNoYXJnZWQvcmVzZXJ2ZWTIICBmcm9tIHRoZSBjYWxsZXIgdG8gcGF5IGZvciB0aGUgc3RvcmFnZSBjb25zdW1lZC7MKiBgY29kZWA6IFRoZSBjb250cmFjdCBjb2RlIHRvIGRlcGxveSBpbiByYXcgYnl0ZXMu9CogYGRhdGFgOiBUaGUgaW5wdXQgZGF0YSB0byBwYXNzIHRvIHRoZSBjb250cmFjdCBjb25zdHJ1Y3Rvci49ASogYHNhbHRgOiBVc2VkIGZvciB0aGUgYWRkcmVzcyBkZXJpdmF0aW9uLiBJZiBgU29tZWAgaXMgc3VwcGxpZWQgdGhlbiBgQ1JFQVRFMmDUCXNlbWFudGljcyBhcmUgdXNlZC4gSWYgYE5vbmVgIHRoZW4gYENSQVRFMWAgaXMgdXNlZC4AAJRJbnN0YW50aWF0aW9uIGlzIGV4ZWN1dGVkIGFzIGZvbGxvd3M6ADkBLSBUaGUgc3VwcGxpZWQgYGNvZGVgIGlzIGRlcGxveWVkLCBhbmQgYSBgY29kZV9oYXNoYCBpcyBjcmVhdGVkIGZvciB0aGF0IGNvZGUuWQEtIElmIHRoZSBgY29kZV9oYXNoYCBhbHJlYWR5IGV4aXN0cyBvbiB0aGUgY2hhaW4gdGhlIHVuZGVybHlpbmcgYGNvZGVgIHdpbGwgYmUgc2hhcmVkLkkBLSBUaGUgZGVzdGluYXRpb24gYWRkcmVzcyBpcyBjb21wdXRlZCBiYXNlZCBvbiB0aGUgc2VuZGVyLCBjb2RlX2hhc2ggYW5kIHRoZSBzYWx0LgEBLSBUaGUgc21hcnQtY29udHJhY3QgYWNjb3VudCBpcyBjcmVhdGVkIGF0IHRoZSBjb21wdXRlZCBhZGRyZXNzLsAtIFRoZSBgdmFsdWVgIGlzIHRyYW5zZmVycmVkIHRvIHRoZSBuZXcgYWNjb3VudC5BAS0gVGhlIGBkZXBsb3lgIGZ1bmN0aW9uIGlzIGV4ZWN1dGVkIGluIHRoZSBjb250ZXh0IG9mIHRoZSBuZXdseS1jcmVhdGVkIGFjY291bnQuZGV0aF9pbnN0YW50aWF0ZV93aXRoX2NvZGUgARR2YWx1ZQUFARBVMjU2AAEwd2VpZ2h0X2xpbWl0eQEBGFdlaWdodAABNGV0aF9nYXNfbGltaXQFBQEQVTI1NgABEGNvZGUYARxWZWM8dTg+AAEQZGF0YRgBHFZlYzx1OD4AAUx0cmFuc2FjdGlvbl9lbmNvZGVkGAEcVmVjPHU4PgABTGVmZmVjdGl2ZV9nYXNfcHJpY2UFBQEQVTI1NgABLGVuY29kZWRfbGVuOAEMdTMyAApUPQFTYW1lIGFzIFtgU2VsZjo6aW5zdGFudGlhdGVfd2l0aF9jb2RlYF0sIGJ1dCBpbnRlbmRlZCB0byBiZSBkaXNwYXRjaGVkICoqb25seSoq6GJ5IGFuIEVWTSB0cmFuc2FjdGlvbiB0aHJvdWdoIHRoZSBFVk0gY29tcGF0aWJpbGl0eSBsYXllci4AMCMgUGFyYW1ldGVycwBNASogYHZhbHVlYDogVGhlIGJhbGFuY2UgdG8gdHJhbnNmZXIgZnJvbSB0aGUgYG9yaWdpbmAgdG8gdGhlIG5ld2x5IGNyZWF0ZWQgY29udHJhY3QuVQEqIGB3ZWlnaHRfbGltaXRgOiBUaGUgZ2FzIGxpbWl0IHVzZWQgdG8gZGVyaXZlIHRoZSB0cmFuc2FjdGlvbiB3ZWlnaHQgZm9yIHRyYW5zYWN0aW9uJCAgcGF5bWVudF0BKiBgZXRoX2dhc19saW1pdGA6IFRoZSBFdGhlcmV1bSBnYXMgbGltaXQgZ292ZXJuaW5nIHRoZSByZXNvdXJjZSB1c2FnZSBvZiB0aGUgZXhlY3V0aW9uzCogYGNvZGVgOiBUaGUgY29udHJhY3QgY29kZSB0byBkZXBsb3kgaW4gcmF3IGJ5dGVzLvQqIGBkYXRhYDogVGhlIGlucHV0IGRhdGEgdG8gcGFzcyB0byB0aGUgY29udHJhY3QgY29uc3RydWN0b3IuNQEqIGB0cmFuc2FjdGlvbl9lbmNvZGVkYDogVGhlIFJMUCBlbmNvZGluZyBvZiB0aGUgc2lnbmVkIEV0aGVyZXVtIHRyYW5zYWN0aW9uLF0BICByZXByZXNlbnRlZCBhcyBbY3JhdGU6OmV2bTo6VHJhbnNhY3Rpb25TaWduZWRdLCBwcm92aWRlZCBieSB0aGUgRXRoZXJldW0gd2FsbGV0LiBUaGlz1CAgaXMgdXNlZCBmb3IgYnVpbGRpbmcgdGhlIEV0aGVyZXVtIHRyYW5zYWN0aW9uIHJvb3QuxCogZWZmZWN0aXZlX2dhc19wcmljZTogdGhlIHByaWNlIG9mIGEgdW5pdCBvZiBnYXMFASogZW5jb2RlZCBsZW46IHRoZSBieXRlIGNvZGUgc2l6ZSBvZiB0aGUgYGV0aF90cmFuc2FjdGAgZXh0cmluc2ljADkBQ2FsbGluZyB0aGlzIGRpc3BhdGNoYWJsZSBlbnN1cmVzIHRoYXQgdGhlIG9yaWdpbidzIG5vbmNlIGlzIGJ1bXBlZCBvbmx5IG9uY2UsYQF2aWEgdGhlIGBDaGVja05vbmNlYCB0cmFuc2FjdGlvbiBleHRlbnNpb24uIEluIGNvbnRyYXN0LCBbYFNlbGY6Omluc3RhbnRpYXRlX3dpdGhfY29kZWBdTQFhbHNvIGJ1bXBzIHRoZSBub25jZSBhZnRlciBjb250cmFjdCBpbnN0YW50aWF0aW9uLCBzaW5jZSBpdCBtYXkgYmUgaW52b2tlZCBtdWx0aXBsZZh0aW1lcyB3aXRoaW4gYSBiYXRjaCBjYWxsIHRyYW5zYWN0aW9uLiBldGhfY2FsbCABEGRlc3T9BAEQSDE2MAABFHZhbHVlBQUBEFUyNTYAATB3ZWlnaHRfbGltaXR5AQEYV2VpZ2h0AAE0ZXRoX2dhc19saW1pdAUFARBVMjU2AAEQZGF0YRgBHFZlYzx1OD4AAUx0cmFuc2FjdGlvbl9lbmNvZGVkGAEcVmVjPHU4PgABTGVmZmVjdGl2ZV9nYXNfcHJpY2UFBQEQVTI1NgABLGVuY29kZWRfbGVuOAEMdTMyAAtA+FNhbWUgYXMgW2BTZWxmOjpjYWxsYF0sIGJ1dCBpbnRlbmRlZCB0byBiZSBkaXNwYXRjaGVkICoqb25seSoq6GJ5IGFuIEVWTSB0cmFuc2FjdGlvbiB0aHJvdWdoIHRoZSBFVk0gY29tcGF0aWJpbGl0eSBsYXllci4AMCMgUGFyYW1ldGVycwDoKiBgZGVzdGA6IFRoZSBFdGhlcmV1bSBhZGRyZXNzIG9mIHRoZSBhY2NvdW50IHRvIGJlIGNhbGxlZE0BKiBgdmFsdWVgOiBUaGUgYmFsYW5jZSB0byB0cmFuc2ZlciBmcm9tIHRoZSBgb3JpZ2luYCB0byB0aGUgbmV3bHkgY3JlYXRlZCBjb250cmFjdC5VASogYHdlaWdodF9saW1pdGA6IFRoZSBnYXMgbGltaXQgdXNlZCB0byBkZXJpdmUgdGhlIHRyYW5zYWN0aW9uIHdlaWdodCBmb3IgdHJhbnNhY3Rpb24kICBwYXltZW50XQEqIGBldGhfZ2FzX2xpbWl0YDogVGhlIEV0aGVyZXVtIGdhcyBsaW1pdCBnb3Zlcm5pbmcgdGhlIHJlc291cmNlIHVzYWdlIG9mIHRoZSBleGVjdXRpb270KiBgZGF0YWA6IFRoZSBpbnB1dCBkYXRhIHRvIHBhc3MgdG8gdGhlIGNvbnRyYWN0IGNvbnN0cnVjdG9yLjUBKiBgdHJhbnNhY3Rpb25fZW5jb2RlZGA6IFRoZSBSTFAgZW5jb2Rpbmcgb2YgdGhlIHNpZ25lZCBFdGhlcmV1bSB0cmFuc2FjdGlvbixdASAgcmVwcmVzZW50ZWQgYXMgW2NyYXRlOjpldm06OlRyYW5zYWN0aW9uU2lnbmVkXSwgcHJvdmlkZWQgYnkgdGhlIEV0aGVyZXVtIHdhbGxldC4gVGhpc9QgIGlzIHVzZWQgZm9yIGJ1aWxkaW5nIHRoZSBFdGhlcmV1bSB0cmFuc2FjdGlvbiByb290LsQqIGVmZmVjdGl2ZV9nYXNfcHJpY2U6IHRoZSBwcmljZSBvZiBhIHVuaXQgb2YgZ2FzBQEqIGVuY29kZWQgbGVuOiB0aGUgYnl0ZSBjb2RlIHNpemUgb2YgdGhlIGBldGhfdHJhbnNhY3RgIGV4dHJpbnNpY0hldGhfc3Vic3RyYXRlX2NhbGwIARBjYWxsIAF8Qm94PDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgABTHRyYW5zYWN0aW9uX2VuY29kZWQYARxWZWM8dTg+AAwo/EV4ZWN1dGVzIGEgU3Vic3RyYXRlIHJ1bnRpbWUgY2FsbCBmcm9tIGFuIEV0aGVyZXVtIHRyYW5zYWN0aW9uLgBFAVRoaXMgZGlzcGF0Y2hhYmxlIGlzIGludGVuZGVkIHRvIGJlIGNhbGxlZCAqKm9ubHkqKiB0aHJvdWdoIHRoZSBFVk0gY29tcGF0aWJpbGl0eRkBbGF5ZXIuIFRoZSBwcm92aWRlZCBjYWxsIHdpbGwgYmUgZGlzcGF0Y2hlZCB1c2luZyBgUmF3T3JpZ2luOjpTaWduZWRgLgAwIyBQYXJhbWV0ZXJzAOQqIGBvcmlnaW5gOiBNdXN0IGJlIGFuIFtgT3JpZ2luOjpFdGhUcmFuc2FjdGlvbmBdIG9yaWdpbi7AKiBgY2FsbGA6IFRoZSBTdWJzdHJhdGUgcnVudGltZSBjYWxsIHRvIGV4ZWN1dGUuGQEqIGB0cmFuc2FjdGlvbl9lbmNvZGVkYDogVGhlIFJMUCBlbmNvZGluZyBvZiB0aGUgRXRoZXJldW0gdHJhbnNhY3Rpb24sLHVwbG9hZF9jb2RlCAEQY29kZRgBHFZlYzx1OD4AAVRzdG9yYWdlX2RlcG9zaXRfbGltaXSRAQEwQmFsYW5jZU9mPFQ+AAQ47FVwbG9hZCBuZXcgYGNvZGVgIHdpdGhvdXQgaW5zdGFudGlhdGluZyBhIGNvbnRyYWN0IGZyb20gaXQuACEBSWYgdGhlIGNvZGUgZG9lcyBub3QgYWxyZWFkeSBleGlzdCBhIGRlcG9zaXQgaXMgcmVzZXJ2ZWQgZnJvbSB0aGUgY2FsbGVyDQFUaGUgc2l6ZSBvZiB0aGUgcmVzZXJ2ZSBkZXBlbmRzIG9uIHRoZSBzaXplIG9mIHRoZSBzdXBwbGllZCBgY29kZWAuABgjIE5vdGUAWQFBbnlvbmUgY2FuIGluc3RhbnRpYXRlIGEgY29udHJhY3QgZnJvbSBhbnkgdXBsb2FkZWQgY29kZSBhbmQgdGh1cyBwcmV2ZW50IGl0cyByZW1vdmFsLkEBVG8gYXZvaWQgdGhpcyBzaXR1YXRpb24gYSBjb25zdHJ1Y3RvciBjb3VsZCBlbXBsb3kgYWNjZXNzIGNvbnRyb2wgc28gdGhhdCBpdCBjYW45AW9ubHkgYmUgaW5zdGFudGlhdGVkIGJ5IHBlcm1pc3Npb25lZCBlbnRpdGllcy4gVGhlIHNhbWUgaXMgdHJ1ZSB3aGVuIHVwbG9hZGluZ6B0aHJvdWdoIFtgU2VsZjo6aW5zdGFudGlhdGVfd2l0aF9jb2RlYF0uAEUBSWYgdGhlIHJlZmNvdW50IG9mIHRoZSBjb2RlIHJlYWNoZXMgemVybyBhZnRlciB0ZXJtaW5hdGluZyB0aGUgbGFzdCBjb250cmFjdCB0aGF09HJlZmVyZW5jZXMgdGhpcyBjb2RlLCB0aGUgY29kZSB3aWxsIGJlIHJlbW92ZWQgYXV0b21hdGljYWxseS4scmVtb3ZlX2NvZGUEASRjb2RlX2hhc2hAATRzcF9jb3JlOjpIMjU2AAUQNQFSZW1vdmUgdGhlIGNvZGUgc3RvcmVkIHVuZGVyIGBjb2RlX2hhc2hgIGFuZCByZWZ1bmQgdGhlIGRlcG9zaXQgdG8gaXRzIG93bmVyLgBFAUEgY29kZSBjYW4gb25seSBiZSByZW1vdmVkIGJ5IGl0cyBvcmlnaW5hbCB1cGxvYWRlciAoaXRzIG93bmVyKSBhbmQgb25seSBpZiBpdCBpc2Rub3QgdXNlZCBieSBhbnkgY29udHJhY3QuIHNldF9jb2RlCAEQZGVzdP0EARBIMTYwAAEkY29kZV9oYXNoQAE0c3BfY29yZTo6SDI1NgAGKAkBUHJpdmlsZWdlZCBmdW5jdGlvbiB0aGF0IGNoYW5nZXMgdGhlIGNvZGUgb2YgYW4gZXhpc3RpbmcgY29udHJhY3QuAEUBVGhpcyB0YWtlcyBjYXJlIG9mIHVwZGF0aW5nIHJlZmNvdW50cyBhbmQgYWxsIG90aGVyIG5lY2Vzc2FyeSBvcGVyYXRpb25zLiBSZXR1cm5z6GFuIGVycm9yIGlmIGVpdGhlciB0aGUgYGNvZGVfaGFzaGAgb3IgYGRlc3RgIGRvIG5vdCBleGlzdC4AGCMgTm90ZQAxAVRoaXMgZG9lcyAqKm5vdCoqIGNoYW5nZSB0aGUgYWRkcmVzcyBvZiB0aGUgY29udHJhY3QgaW4gcXVlc3Rpb24uIFRoaXMgbWVhbnM9AXRoYXQgdGhlIGNvbnRyYWN0IGFkZHJlc3MgaXMgbm8gbG9uZ2VyIGRlcml2ZWQgZnJvbSBpdHMgY29kZSBoYXNoIGFmdGVyIGNhbGxpbmdIdGhpcyBkaXNwYXRjaGFibGUuLG1hcF9hY2NvdW50AAccQQFSZWdpc3RlciB0aGUgY2FsbGVycyBhY2NvdW50IGlkIHNvIHRoYXQgaXQgY2FuIGJlIHVzZWQgaW4gY29udHJhY3QgaW50ZXJhY3Rpb25zLgBdAVRoaXMgd2lsbCBlcnJvciBpZiB0aGUgb3JpZ2luIGlzIGFscmVhZHkgbWFwcGVkIG9yIGlzIGEgZXRoIG5hdGl2ZSBgQWRkcmVzczIwYC4gSXQgd2lsbB0BdGFrZSBhIGRlcG9zaXQgdGhhdCBjYW4gYmUgcmVsZWFzZWQgYnkgY2FsbGluZyBbYFNlbGY6OnVubWFwX2FjY291bnRgXS4AOQFOb29wIHdoZW4gW2BDb25maWc6OkF1dG9NYXBgXSBpcyBlbmFibGVkLCBhcyBhY2NvdW50cyBhcmUgYXV0b21hdGljYWxseSBtYXBwZWR8b24gY3JlYXRpb24gdmlhIFtgQXV0b01hcHBlcmBdLkhiYXRjaF9tYXBfYWNjb3VudHMEASBhY2NvdW50c50BAURWZWM8VDo6QWNjb3VudElkPgANBFkBTWFwIG1hbnkgYWNjb3VudHMgYW5kIG1ha2UgdGhlIFRYIGZyZWUgaWYgYXQgbGVhc3QgOTAlIHdlcmUgdW5tYXBwZWQgb3IgaGVsZCBkZXBvc2l0cy40dW5tYXBfYWNjb3VudAAIHPxVbnJlZ2lzdGVyIHRoZSBjYWxsZXJzIGFjY291bnQgaWQgaW4gb3JkZXIgdG8gZnJlZSB0aGUgZGVwb3NpdC4AQQFUaGVyZSBpcyBubyByZWFzb24gdG8gZXZlciBjYWxsIHRoaXMgZnVuY3Rpb24gb3RoZXIgdGhhbiBmcmVlaW5nIHVwIHRoZSBkZXBvc2l0LvhUaGlzIGlzIG9ubHkgdXNlZnVsIHdoZW4gdGhlIGFjY291bnQgc2hvdWxkIG5vIGxvbmdlciBiZSB1c2VkLgBRAURpc2FibGVkIHdoZW4gW2BDb25maWc6OkF1dG9NYXBgXSBpcyBlbmFibGVkLCBhcyBhY2NvdW50cyBhcmUgYXV0b21hdGljYWxseSB1bm1hcHBlZGxvbiBraWxsIHZpYSBbYEF1dG9NYXBwZXJgXS5wZGlzcGF0Y2hfYXNfZmFsbGJhY2tfYWNjb3VudAQBEGNhbGwgAXxCb3g8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AAkUHQFEaXNwYXRjaCBhbiBgY2FsbGAgd2l0aCB0aGUgb3JpZ2luIHNldCB0byB0aGUgY2FsbGVycyBmYWxsYmFjayBhZGRyZXNzLgBhAUV2ZXJ5IGBBY2NvdW50SWQzMmAgY2FuIGNvbnRyb2wgaXRzIGNvcnJlc3BvbmRpbmcgZmFsbGJhY2sgYWNjb3VudC4gVGhlIGZhbGxiYWNrIGFjY291bnRBAWlzIHRoZSBgQWNjb3VudElkMjBgIHdpdGggdGhlIGxhc3QgMTIgYnl0ZXMgc2V0IHRvIGAweEVFYC4gVGhpcyBpcyBlc3NlbnRpYWxseSBhVQFyZWNvdmVyeSBmdW5jdGlvbiBpbiBjYXNlIGFuIGBBY2NvdW50SWQyMGAgd2FzIHVzZWQgd2l0aG91dCBjcmVhdGluZyBhIG1hcHBpbmcgZmlyc3QuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLv0ECDxwcmltaXRpdmVfdHlwZXMQSDE2MAAABAAcASBbdTg7IDIwXQAAAQUEGE9wdGlvbgQEVAEIAQgQTm9uZQAAABBTb21lBAAIAAABAAAFBQg8cHJpbWl0aXZlX3R5cGVzEFUyNTYAAAQACQUBIFt1NjQ7IDRdAAAJBQAAAwQAAAAoAA0FDGxwYWxsZXRfc3RhdGVfdHJpZV9taWdyYXRpb24YcGFsbGV0EENhbGwEBFQAARhYY29udHJvbF9hdXRvX21pZ3JhdGlvbgQBMG1heWJlX2NvbmZpZxEFAVxPcHRpb248TWlncmF0aW9uTGltaXRzPgAADIBDb250cm9sIHRoZSBhdXRvbWF0aWMgbWlncmF0aW9uLgANAVRoZSBkaXNwYXRjaCBvcmlnaW4gb2YgdGhpcyBjYWxsIG11c3QgYmUgW2BDb25maWc6OkNvbnRyb2xPcmlnaW5gXS5AY29udGludWVfbWlncmF0ZQwBGGxpbWl0cxUFATxNaWdyYXRpb25MaW1pdHMAATxyZWFsX3NpemVfdXBwZXI4AQx1MzIAATB3aXRuZXNzX3Rhc2sZBQFATWlncmF0aW9uVGFzazxUPgABVLhDb250aW51ZSB0aGUgbWlncmF0aW9uIGZvciB0aGUgZ2l2ZW4gYGxpbWl0c2AuAOxUaGUgZGlzcGF0Y2ggb3JpZ2luIG9mIHRoaXMgY2FsbCBjYW4gYmUgYW55IHNpZ25lZCBhY2NvdW50LgBdAVRoaXMgdHJhbnNhY3Rpb24gaGFzIE5PIE1PTkVUQVJZIElOQ0VOVElWRVMuIGNhbGxpbmcgaXQgd2lsbCBub3QgcmV3YXJkIGFueW9uZS4gQWxiZWl0LOxVcG9uIHN1Y2Nlc3NmdWwgZXhlY3V0aW9uLCB0aGUgdHJhbnNhY3Rpb24gZmVlIGlzIHJldHVybmVkLgBBAVRoZSAocG90ZW50aWFsbHkgb3Zlci1lc3RpbWF0ZWQpIG9mIHRoZSBieXRlIGxlbmd0aCBvZiBhbGwgdGhlIGRhdGEgcmVhZCBtdXN0IGJlWQFwcm92aWRlZCBmb3IgdXAtZnJvbnQgZmVlLXBheW1lbnQgYW5kIHdlaWdoaW5nLiBJbiBlc3NlbmNlLCB0aGUgY2FsbGVyIGlzIGd1YXJhbnRlZWluZ0kBdGhhdCBleGVjdXRpbmcgdGhlIGN1cnJlbnQgYE1pZ3JhdGlvblRhc2tgIHdpdGggdGhlIGdpdmVuIGBsaW1pdHNgIHdpbGwgbm90IGV4Y2VlZJRgcmVhbF9zaXplX3VwcGVyYCBieXRlcyBvZiByZWFkIGRhdGEuAEUBVGhlIGB3aXRuZXNzX3Rhc2tgIGlzIG1lcmVseSBhIGhlbHBlciB0byBwcmV2ZW50IHRoZSBjYWxsZXIgZnJvbSBiZWluZyBzbGFzaGVkIG9yXQFnZW5lcmFsbHkgdHJpZ2dlciBhIG1pZ3JhdGlvbiB0aGF0IHRoZXkgZG8gbm90IGludGVuZC4gVGhpcyBwYXJhbWV0ZXIgaXMganVzdCBhIG1lc3NhZ2U9AWZyb20gY2FsbGVyLCBzYXlpbmcgdGhhdCB0aGV5IGJlbGlldmVkIGB3aXRuZXNzX3Rhc2tgIHdhcyB0aGUgbGFzdCBzdGF0ZSBvZiB0aGVZAW1pZ3JhdGlvbiwgYW5kIHRoZXkgb25seSB3aXNoIGZvciB0aGVpciB0cmFuc2FjdGlvbiB0byBkbyBhbnl0aGluZywgaWYgdGhpcyBhc3N1bXB0aW9uEQFob2xkcy4gSW4gY2FzZSBgd2l0bmVzc190YXNrYCBkb2VzIG5vdCBtYXRjaCwgdGhlIHRyYW5zYWN0aW9uIGZhaWxzLgA5AUJhc2VkIG9uIHRoZSBkb2N1bWVudGF0aW9uIG9mIFtgTWlncmF0aW9uVGFzazo6bWlncmF0ZV91bnRpbF9leGhhdXN0aW9uYF0sIHRoZU0BcmVjb21tZW5kZWQgd2F5IG9mIGRvaW5nIHRoaXMgaXMgdG8gcGFzcyBhIGBsaW1pdGAgdGhhdCBvbmx5IGJvdW5kcyBgY291bnRgLCBhcyB0aGWcYHNpemVgIGxpbWl0IGNhbiBhbHdheXMgYmUgb3ZlcndyaXR0ZW4uSG1pZ3JhdGVfY3VzdG9tX3RvcAgBEGtleXM0ATBWZWM8VmVjPHU4Pj4AATB3aXRuZXNzX3NpemU4AQx1MzIAAhAJAU1pZ3JhdGUgdGhlIGxpc3Qgb2YgdG9wIGtleXMgYnkgaXRlcmF0aW5nIGVhY2ggb2YgdGhlbSBvbmUgYnkgb25lLgBVAVRoaXMgZG9lcyBub3QgYWZmZWN0IHRoZSBnbG9iYWwgbWlncmF0aW9uIHByb2Nlc3MgdHJhY2tlciAoW2BNaWdyYXRpb25Qcm9jZXNzYF0pLCBhbmT8c2hvdWxkIG9ubHkgYmUgdXNlZCBpbiBjYXNlIGFueSBrZXlzIGFyZSBsZWZ0b3ZlciBkdWUgdG8gYSBidWcuUG1pZ3JhdGVfY3VzdG9tX2NoaWxkDAEQcm9vdBgBHFZlYzx1OD4AAShjaGlsZF9rZXlzNAEwVmVjPFZlYzx1OD4+AAEodG90YWxfc2l6ZTgBDHUzMgADGBEBTWlncmF0ZSB0aGUgbGlzdCBvZiBjaGlsZCBrZXlzIGJ5IGl0ZXJhdGluZyBlYWNoIG9mIHRoZW0gb25lIGJ5IG9uZS4ADQFBbGwgb2YgdGhlIGdpdmVuIGNoaWxkIGtleXMgbXVzdCBiZSBwcmVzZW50IHVuZGVyIG9uZSBgY2hpbGRfcm9vdGAuAFUBVGhpcyBkb2VzIG5vdCBhZmZlY3QgdGhlIGdsb2JhbCBtaWdyYXRpb24gcHJvY2VzcyB0cmFja2VyIChbYE1pZ3JhdGlvblByb2Nlc3NgXSksIGFuZPxzaG91bGQgb25seSBiZSB1c2VkIGluIGNhc2UgYW55IGtleXMgYXJlIGxlZnRvdmVyIGR1ZSB0byBhIGJ1Zy5Uc2V0X3NpZ25lZF9tYXhfbGltaXRzBAEYbGltaXRzFQUBPE1pZ3JhdGlvbkxpbWl0cwAEBLhTZXQgdGhlIG1heGltdW0gbGltaXQgb2YgdGhlIHNpZ25lZCBtaWdyYXRpb24uSGZvcmNlX3NldF9wcm9ncmVzcwgBMHByb2dyZXNzX3RvcB0FATRQcm9ncmVzc09mPFQ+AAE4cHJvZ3Jlc3NfY2hpbGQdBQE0UHJvZ3Jlc3NPZjxUPgAFJMhGb3JjZWZ1bGx5IHNldCB0aGUgcHJvZ3Jlc3MgdGhlIHJ1bm5pbmcgbWlncmF0aW9uLgBdAVRoaXMgaXMgb25seSB1c2VmdWwgaW4gb25lIGNhc2U6IHRoZSBuZXh0IGtleSB0byBtaWdyYXRlIGlzIHRvbyBiaWcgdG8gYmUgbWlncmF0ZWQgd2l0aFUBYSBzaWduZWQgYWNjb3VudCwgaW4gYSBwYXJhY2hhaW4gY29udGV4dCwgYW5kIHdlIHNpbXBseSB3YW50IHRvIHNraXAgaXQuIEEgcmVhc29uYWJsZWEBZXhhbXBsZSBvZiB0aGlzIHdvdWxkIGJlIGA6Y29kZTpgLCB3aGljaCBpcyBib3RoIHZlcnkgZXhwZW5zaXZlIHRvIG1pZ3JhdGUsIGFuZCBjb21tb25seaR1c2VkLCBzbyBwcm9iYWJseSBpdCBpcyBhbHJlYWR5IG1pZ3JhdGVkLgBdAUluIGNhc2UgeW91IG1lc3MgdGhpbmdzIHVwLCB5b3UgY2FuIGFsc28sIGluIHByaW5jaXBsZSwgdXNlIHRoaXMgdG8gcmVzZXQgdGhlIG1pZ3JhdGlvbiBwcm9jZXNzLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy4RBQQYT3B0aW9uBARUARUFAQgQTm9uZQAAABBTb21lBAAVBQAAAQAAFQUMbHBhbGxldF9zdGF0ZV90cmllX21pZ3JhdGlvbhhwYWxsZXQ8TWlncmF0aW9uTGltaXRzAAAIARBzaXplOAEMdTMyAAEQaXRlbTgBDHUzMgAAGQUMbHBhbGxldF9zdGF0ZV90cmllX21pZ3JhdGlvbhhwYWxsZXQ0TWlncmF0aW9uVGFzawQEVAAAFAEwcHJvZ3Jlc3NfdG9wHQUBNFByb2dyZXNzT2Y8VD4AAThwcm9ncmVzc19jaGlsZB0FATRQcm9ncmVzc09mPFQ+AAEQc2l6ZTgBDHUzMgABJHRvcF9pdGVtczgBDHUzMgABLGNoaWxkX2l0ZW1zOAEMdTMyAAAdBQxscGFsbGV0X3N0YXRlX3RyaWVfbWlncmF0aW9uGHBhbGxldCBQcm9ncmVzcwQkTWF4S2V5TGVuAAEMHFRvU3RhcnQAAAAcTGFzdEtleQQAIQUBZEJvdW5kZWRWZWM8dTgsIE1heEtleUxlbj4AAQAgQ29tcGxldGUAAgAAIQUMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AAAlBQxccGFsbGV0X25vbWluYXRpb25fcG9vbHMYcGFsbGV0EENhbGwEBFQAAWgQam9pbggBGGFtb3VudJEBATBCYWxhbmNlT2Y8VD4AARxwb29sX2lkOAEYUG9vbElkAABARQFTdGFrZSBmdW5kcyB3aXRoIGEgcG9vbC4gVGhlIGFtb3VudCB0byBib25kIGlzIGRlbGVnYXRlZCAob3IgdHJhbnNmZXJyZWQgYmFzZWQgb25NAVtgYWRhcHRlcjo6U3Rha2VTdHJhdGVneVR5cGVgXSkgZnJvbSB0aGUgbWVtYmVyIHRvIHRoZSBwb29sIGFjY291bnQgYW5kIGltbWVkaWF0ZWx5aGluY3JlYXNlcyB0aGUgcG9vbCdzIGJvbmQuACkBVGhlIG1ldGhvZCBvZiB0cmFuc2ZlcnJpbmcgdGhlIGFtb3VudCB0byB0aGUgcG9vbCBhY2NvdW50IGlzIGRldGVybWluZWQgYnkBAVtgYWRhcHRlcjo6U3Rha2VTdHJhdGVneVR5cGVgXS4gSWYgdGhlIHBvb2wgaXMgY29uZmlndXJlZCB0byB1c2UxAVtgYWRhcHRlcjo6U3Rha2VTdHJhdGVneVR5cGU6OkRlbGVnYXRlYF0sIHRoZSBmdW5kcyByZW1haW4gaW4gdGhlIGFjY291bnQgb2YxAXRoZSBgb3JpZ2luYCwgd2hpbGUgdGhlIHBvb2wgZ2FpbnMgdGhlIHJpZ2h0IHRvIHVzZSB0aGVzZSBmdW5kcyBmb3Igc3Rha2luZy4AGCMgTm90ZQDMKiBBbiBhY2NvdW50IGNhbiBvbmx5IGJlIGEgbWVtYmVyIG9mIGEgc2luZ2xlIHBvb2wu2CogQW4gYWNjb3VudCBjYW5ub3Qgam9pbiB0aGUgc2FtZSBwb29sIG11bHRpcGxlIHRpbWVzLkEBKiBUaGlzIGNhbGwgd2lsbCAqbm90KiBkdXN0IHRoZSBtZW1iZXIgYWNjb3VudCwgc28gdGhlIG1lbWJlciBtdXN0IGhhdmUgYXQgbGVhc3TIICBgZXhpc3RlbnRpYWwgZGVwb3NpdCArIGFtb3VudGAgaW4gdGhlaXIgYWNjb3VudC7QKiBPbmx5IGEgcG9vbCB3aXRoIFtgUG9vbFN0YXRlOjpPcGVuYF0gY2FuIGJlIGpvaW5lZChib25kX2V4dHJhBAEUZXh0cmEpBQFcQm9uZEV4dHJhPEJhbGFuY2VPZjxUPj4AARxFAUJvbmQgYGV4dHJhYCBtb3JlIGZ1bmRzIGZyb20gYG9yaWdpbmAgaW50byB0aGUgcG9vbCB0byB3aGljaCB0aGV5IGFscmVhZHkgYmVsb25nLgBJAUFkZGl0aW9uYWwgZnVuZHMgY2FuIGNvbWUgZnJvbSBlaXRoZXIgdGhlIGZyZWUgYmFsYW5jZSBvZiB0aGUgYWNjb3VudCwgb2YgZnJvbSB0aGWcYWNjdW11bGF0ZWQgcmV3YXJkcywgc2VlIFtgQm9uZEV4dHJhYF0uAD0BQm9uZGluZyBleHRyYSBmdW5kcyBpbXBsaWVzIGFuIGF1dG9tYXRpYyBwYXlvdXQgb2YgYWxsIHBlbmRpbmcgcmV3YXJkcyBhcyB3ZWxsLgkBU2VlIGBib25kX2V4dHJhX290aGVyYCB0byBib25kIHBlbmRpbmcgcmV3YXJkcyBvZiBgb3RoZXJgIG1lbWJlcnMuMGNsYWltX3BheW91dAACIFUBQSBib25kZWQgbWVtYmVyIGNhbiB1c2UgdGhpcyB0byBjbGFpbSB0aGVpciBwYXlvdXQgYmFzZWQgb24gdGhlIHJld2FyZHMgdGhhdCB0aGUgcG9vbGEBaGFzIGFjY3VtdWxhdGVkIHNpbmNlIHRoZWlyIGxhc3QgY2xhaW1lZCBwYXlvdXQgKE9SIHNpbmNlIGpvaW5pbmcgaWYgdGhpcyBpcyB0aGVpciBmaXJzdD0BdGltZSBjbGFpbWluZyByZXdhcmRzKS4gVGhlIHBheW91dCB3aWxsIGJlIHRyYW5zZmVycmVkIHRvIHRoZSBtZW1iZXIncyBhY2NvdW50LgBJAVRoZSBtZW1iZXIgd2lsbCBlYXJuIHJld2FyZHMgcHJvIHJhdGEgYmFzZWQgb24gdGhlIG1lbWJlcnMgc3Rha2UgdnMgdGhlIHN1bSBvZiB0aGXQbWVtYmVycyBpbiB0aGUgcG9vbHMgc3Rha2UuIFJld2FyZHMgZG8gbm90ICJleHBpcmUiLgBBAVNlZSBgY2xhaW1fcGF5b3V0X290aGVyYCB0byBjbGFpbSByZXdhcmRzIG9uIGJlaGFsZiBvZiBzb21lIGBvdGhlcmAgcG9vbCBtZW1iZXIuGHVuYm9uZAgBOG1lbWJlcl9hY2NvdW50AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AAUB1bmJvbmRpbmdfcG9pbnRzkQEBMEJhbGFuY2VPZjxUPgADfEUBVW5ib25kIHVwIHRvIGB1bmJvbmRpbmdfcG9pbnRzYCBvZiB0aGUgYG1lbWJlcl9hY2NvdW50YCdzIGZ1bmRzIGZyb20gdGhlIHBvb2wuIEl0RQFpbXBsaWNpdGx5IGNvbGxlY3RzIHRoZSByZXdhcmRzIG9uZSBsYXN0IHRpbWUsIHNpbmNlIG5vdCBkb2luZyBzbyB3b3VsZCBtZWFuIHNvbWVscmV3YXJkcyB3b3VsZCBiZSBmb3JmZWl0ZWQuAE0BVW5kZXIgY2VydGFpbiBjb25kaXRpb25zLCB0aGlzIGNhbGwgY2FuIGJlIGRpc3BhdGNoZWQgcGVybWlzc2lvbmxlc3NseSAoaS5lLiBieSBhbnkkYWNjb3VudCkuAKwjIENvbmRpdGlvbnMgZm9yIGEgcGVybWlzc2lvbmxlc3MgZGlzcGF0Y2guAF0BKiBUaGUgcG9vbCBpcyBibG9ja2VkIGFuZCB0aGUgY2FsbGVyIGlzIGVpdGhlciB0aGUgcm9vdCBvciBib3VuY2VyLiBUaGlzIGlzIHJlZmVyZWVkIHRvMCAgYXMgYSBraWNrLvQqIFRoZSBwb29sIGlzIGRlc3Ryb3lpbmcgYW5kIHRoZSBtZW1iZXIgaXMgbm90IHRoZSBkZXBvc2l0b3IuVQEqIFRoZSBwb29sIGlzIGRlc3Ryb3lpbmcsIHRoZSBtZW1iZXIgaXMgdGhlIGRlcG9zaXRvciBhbmQgbm8gb3RoZXIgbWVtYmVycyBhcmUgaW4gdGhlHCAgcG9vbC4AEQEjIyBDb25kaXRpb25zIGZvciBwZXJtaXNzaW9uZWQgZGlzcGF0Y2ggKGkuZS4gdGhlIGNhbGxlciBpcyBhbHNvIHRoZUhgbWVtYmVyX2FjY291bnRgKToAiCogVGhlIGNhbGxlciBpcyBub3QgdGhlIGRlcG9zaXRvci5VASogVGhlIGNhbGxlciBpcyB0aGUgZGVwb3NpdG9yLCB0aGUgcG9vbCBpcyBkZXN0cm95aW5nIGFuZCBubyBvdGhlciBtZW1iZXJzIGFyZSBpbiB0aGUcICBwb29sLgAYIyBOb3RlAB0BSWYgdGhlcmUgYXJlIHRvbyBtYW55IHVubG9ja2luZyBjaHVua3MgdG8gdW5ib25kIHdpdGggdGhlIHBvb2wgYWNjb3VudCxRAVtgQ2FsbDo6cG9vbF93aXRoZHJhd191bmJvbmRlZGBdIGNhbiBiZSBjYWxsZWQgdG8gdHJ5IGFuZCBtaW5pbWl6ZSB1bmxvY2tpbmcgY2h1bmtzLlkBVGhlIFtgU3Rha2luZ0ludGVyZmFjZTo6dW5ib25kYF0gd2lsbCBpbXBsaWNpdGx5IGNhbGwgW2BDYWxsOjpwb29sX3dpdGhkcmF3X3VuYm9uZGVkYF1VAXRvIHRyeSB0byBmcmVlIGNodW5rcyBpZiBuZWNlc3NhcnkgKGllLiBpZiB1bmJvdW5kIHdhcyBjYWxsZWQgYW5kIG5vIHVubG9ja2luZyBjaHVua3NhAWFyZSBhdmFpbGFibGUpLiBIb3dldmVyLCBpdCBtYXkgbm90IGJlIHBvc3NpYmxlIHRvIHJlbGVhc2UgdGhlIGN1cnJlbnQgdW5sb2NraW5nIGNodW5rcyxdAWluIHdoaWNoIGNhc2UsIHRoZSByZXN1bHQgb2YgdGhpcyBjYWxsIHdpbGwgbGlrZWx5IGJlIHRoZSBgTm9Nb3JlQ2h1bmtzYCBlcnJvciBmcm9tIHRoZTxzdGFraW5nIHN5c3RlbS5YcG9vbF93aXRoZHJhd191bmJvbmRlZAgBHHBvb2xfaWQ4ARhQb29sSWQAAUhudW1fc2xhc2hpbmdfc3BhbnM4AQx1MzIABBhVAUNhbGwgYHdpdGhkcmF3X3VuYm9uZGVkYCBmb3IgdGhlIHBvb2xzIGFjY291bnQuIFRoaXMgY2FsbCBjYW4gYmUgbWFkZSBieSBhbnkgYWNjb3VudC4AQQFUaGlzIGlzIHVzZWZ1bCBpZiB0aGVyZSBhcmUgdG9vIG1hbnkgdW5sb2NraW5nIGNodW5rcyB0byBjYWxsIGB1bmJvbmRgLCBhbmQgc29tZWEBY2FuIGJlIGNsZWFyZWQgYnkgd2l0aGRyYXdpbmcuIEluIHRoZSBjYXNlIHRoZXJlIGFyZSB0b28gbWFueSB1bmxvY2tpbmcgY2h1bmtzLCB0aGUgdXNlclEBd291bGQgcHJvYmFibHkgc2VlIGFuIGVycm9yIGxpa2UgYE5vTW9yZUNodW5rc2AgZW1pdHRlZCBmcm9tIHRoZSBzdGFraW5nIHN5c3RlbSB3aGVuXHRoZXkgYXR0ZW1wdCB0byB1bmJvbmQuRHdpdGhkcmF3X3VuYm9uZGVkCAE4bWVtYmVyX2FjY291bnQAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABSG51bV9zbGFzaGluZ19zcGFuczgBDHUzMgAFWFUBV2l0aGRyYXcgdW5ib25kZWQgZnVuZHMgZnJvbSBgbWVtYmVyX2FjY291bnRgLiBJZiBubyBib25kZWQgZnVuZHMgY2FuIGJlIHVuYm9uZGVkLCBhbkhlcnJvciBpcyByZXR1cm5lZC4ATQFVbmRlciBjZXJ0YWluIGNvbmRpdGlvbnMsIHRoaXMgY2FsbCBjYW4gYmUgZGlzcGF0Y2hlZCBwZXJtaXNzaW9ubGVzc2x5IChpLmUuIGJ5IGFueSRhY2NvdW50KS4AqCMgQ29uZGl0aW9ucyBmb3IgYSBwZXJtaXNzaW9ubGVzcyBkaXNwYXRjaAAJASogVGhlIHBvb2wgaXMgaW4gZGVzdHJveSBtb2RlIGFuZCB0aGUgdGFyZ2V0IGlzIG5vdCB0aGUgZGVwb3NpdG9yLjEBKiBUaGUgdGFyZ2V0IGlzIHRoZSBkZXBvc2l0b3IgYW5kIHRoZXkgYXJlIHRoZSBvbmx5IG1lbWJlciBpbiB0aGUgc3ViIHBvb2xzLg0BKiBUaGUgcG9vbCBpcyBibG9ja2VkIGFuZCB0aGUgY2FsbGVyIGlzIGVpdGhlciB0aGUgcm9vdCBvciBib3VuY2VyLgCYIyBDb25kaXRpb25zIGZvciBwZXJtaXNzaW9uZWQgZGlzcGF0Y2gA6CogVGhlIGNhbGxlciBpcyB0aGUgdGFyZ2V0IGFuZCB0aGV5IGFyZSBub3QgdGhlIGRlcG9zaXRvci4AGCMgTm90ZQD0LSBJZiB0aGUgdGFyZ2V0IGlzIHRoZSBkZXBvc2l0b3IsIHRoZSBwb29sIHdpbGwgYmUgZGVzdHJveWVkLmEBLSBJZiB0aGUgcG9vbCBoYXMgYW55IHBlbmRpbmcgc2xhc2gsIHdlIGFsc28gdHJ5IHRvIHNsYXNoIHRoZSBtZW1iZXIgYmVmb3JlIGxldHRpbmcgdGhlbV0Bd2l0aGRyYXcuIFRoaXMgY2FsY3VsYXRpb24gYWRkcyBzb21lIHdlaWdodCBvdmVyaGVhZCBhbmQgaXMgb25seSBkZWZlbnNpdmUuIEluIHJlYWxpdHksVQFwb29sIHNsYXNoZXMgbXVzdCBoYXZlIGJlZW4gYWxyZWFkeSBhcHBsaWVkIHZpYSBwZXJtaXNzaW9ubGVzcyBbYENhbGw6OmFwcGx5X3NsYXNoYF0uGGNyZWF0ZRABGGFtb3VudJEBATBCYWxhbmNlT2Y8VD4AARByb290AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AASRub21pbmF0b3IAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABHGJvdW5jZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgAGRHRDcmVhdGUgYSBuZXcgZGVsZWdhdGlvbiBwb29sLgAsIyBBcmd1bWVudHMAVQEqIGBhbW91bnRgIC0gVGhlIGFtb3VudCBvZiBmdW5kcyB0byBkZWxlZ2F0ZSB0byB0aGUgcG9vbC4gVGhpcyBhbHNvIGFjdHMgb2YgYSBzb3J0IG9mTQEgIGRlcG9zaXQgc2luY2UgdGhlIHBvb2xzIGNyZWF0b3IgY2Fubm90IGZ1bGx5IHVuYm9uZCBmdW5kcyB1bnRpbCB0aGUgcG9vbCBpcyBiZWluZzAgIGRlc3Ryb3llZC5RASogYGluZGV4YCAtIEEgZGlzYW1iaWd1YXRpb24gaW5kZXggZm9yIGNyZWF0aW5nIHRoZSBhY2NvdW50LiBMaWtlbHkgb25seSB1c2VmdWwgd2hlbsAgIGNyZWF0aW5nIG11bHRpcGxlIHBvb2xzIGluIHRoZSBzYW1lIGV4dHJpbnNpYy7UKiBgcm9vdGAgLSBUaGUgYWNjb3VudCB0byBzZXQgYXMgW2BQb29sUm9sZXM6OnJvb3RgXS4NASogYG5vbWluYXRvcmAgLSBUaGUgYWNjb3VudCB0byBzZXQgYXMgdGhlIFtgUG9vbFJvbGVzOjpub21pbmF0b3JgXS78KiBgYm91bmNlcmAgLSBUaGUgYWNjb3VudCB0byBzZXQgYXMgdGhlIFtgUG9vbFJvbGVzOjpib3VuY2VyYF0uABgjIE5vdGUAYQFJbiBhZGRpdGlvbiB0byBgYW1vdW50YCwgdGhlIGNhbGxlciB3aWxsIHRyYW5zZmVyIHRoZSBleGlzdGVudGlhbCBkZXBvc2l0OyBzbyB0aGUgY2FsbGVyDQFuZWVkcyBhdCBoYXZlIGF0IGxlYXN0IGBhbW91bnQgKyBleGlzdGVudGlhbF9kZXBvc2l0YCB0cmFuc2ZlcmFibGUuTGNyZWF0ZV93aXRoX3Bvb2xfaWQUARhhbW91bnSRAQEwQmFsYW5jZU9mPFQ+AAEQcm9vdAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEkbm9taW5hdG9yAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARxib3VuY2VyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARxwb29sX2lkOAEYUG9vbElkAAcY7ENyZWF0ZSBhIG5ldyBkZWxlZ2F0aW9uIHBvb2wgd2l0aCBhIHByZXZpb3VzbHkgdXNlZCBwb29sIGlkACwjIEFyZ3VtZW50cwCYc2FtZSBhcyBgY3JlYXRlYCB3aXRoIHRoZSBpbmNsdXNpb24gb2Z4KiBgcG9vbF9pZGAgLSBgQSB2YWxpZCBQb29sSWQuIG5vbWluYXRlCAEccG9vbF9pZDgBGFBvb2xJZAABKHZhbGlkYXRvcnOdAQFEVmVjPFQ6OkFjY291bnRJZD4ACDB8Tm9taW5hdGUgb24gYmVoYWxmIG9mIHRoZSBwb29sLgBFAVRoZSBkaXNwYXRjaCBvcmlnaW4gb2YgdGhpcyBjYWxsIG11c3QgYmUgc2lnbmVkIGJ5IHRoZSBwb29sIG5vbWluYXRvciBvciB0aGUgcG9vbChyb290IHJvbGUuAEUBVGhpcyBkaXJlY3RseSBmb3J3YXJkcyB0aGUgY2FsbCB0byBhbiBpbXBsZW1lbnRhdGlvbiBvZiBgU3Rha2luZ0ludGVyZmFjZWAgKGUuZy4sRQFgcGFsbGV0LXN0YWtpbmdgKSB0aHJvdWdoIFtgQ29uZmlnOjpTdGFrZUFkYXB0ZXJgXSwgb24gYmVoYWxmIG9mIHRoZSBib25kZWQgcG9vbC4AGCMgTm90ZQBZAUluIGFkZGl0aW9uIHRvIGEgYHJvb3RgIG9yIGBub21pbmF0b3JgIHJvbGUgb2YgYG9yaWdpbmAsIHRoZSBwb29sJ3MgZGVwb3NpdG9yIG5lZWRzIHRvDQFoYXZlIGF0IGxlYXN0IGBkZXBvc2l0b3JfbWluX2JvbmRgIGluIHRoZSBwb29sIHRvIHN0YXJ0IG5vbWluYXRpbmcuJHNldF9zdGF0ZQgBHHBvb2xfaWQ4ARhQb29sSWQAARRzdGF0ZS0FASRQb29sU3RhdGUACSh0U2V0IGEgbmV3IHN0YXRlIGZvciB0aGUgcG9vbC4AVQFJZiBhIHBvb2wgaXMgYWxyZWFkeSBpbiB0aGUgYERlc3Ryb3lpbmdgIHN0YXRlLCB0aGVuIHVuZGVyIG5vIGNvbmRpdGlvbiBjYW4gaXRzIHN0YXRlNGNoYW5nZSBhZ2Fpbi4AwFRoZSBkaXNwYXRjaCBvcmlnaW4gb2YgdGhpcyBjYWxsIG11c3QgYmUgZWl0aGVyOgDcMS4gc2lnbmVkIGJ5IHRoZSBib3VuY2VyLCBvciB0aGUgcm9vdCByb2xlIG9mIHRoZSBwb29sLF0BMi4gaWYgdGhlIHBvb2wgY29uZGl0aW9ucyB0byBiZSBvcGVuIGFyZSBOT1QgbWV0IChhcyBkZXNjcmliZWQgYnkgYG9rX3RvX2JlX29wZW5gKSwgYW5kOQEgICB0aGVuIHRoZSBzdGF0ZSBvZiB0aGUgcG9vbCBjYW4gYmUgcGVybWlzc2lvbmxlc3NseSBjaGFuZ2VkIHRvIGBEZXN0cm95aW5nYC4wc2V0X21ldGFkYXRhCAEccG9vbF9pZDgBGFBvb2xJZAABIG1ldGFkYXRhGAEcVmVjPHU4PgAKEIBTZXQgYSBuZXcgbWV0YWRhdGEgZm9yIHRoZSBwb29sLgBdAVRoZSBkaXNwYXRjaCBvcmlnaW4gb2YgdGhpcyBjYWxsIG11c3QgYmUgc2lnbmVkIGJ5IHRoZSBib3VuY2VyLCBvciB0aGUgcm9vdCByb2xlIG9mIHRoZRRwb29sLixzZXRfY29uZmlncxgBNG1pbl9qb2luX2JvbmQxBQFYQ29uZmlnT3A8QmFsYW5jZU9mPFQ+PgABPG1pbl9jcmVhdGVfYm9uZDEFAVhDb25maWdPcDxCYWxhbmNlT2Y8VD4+AAEkbWF4X3Bvb2xzNQUBNENvbmZpZ09wPHUzMj4AASxtYXhfbWVtYmVyczUFATRDb25maWdPcDx1MzI+AAFQbWF4X21lbWJlcnNfcGVyX3Bvb2w1BQE0Q29uZmlnT3A8dTMyPgABVGdsb2JhbF9tYXhfY29tbWlzc2lvbjkFAURDb25maWdPcDxQZXJiaWxsPgALLEEBVXBkYXRlIGNvbmZpZ3VyYXRpb25zIGZvciB0aGUgbm9taW5hdGlvbiBwb29scy4gVGhlIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmVgW2BDb25maWc6OkFkbWluT3JpZ2luYF0uACwjIEFyZ3VtZW50cwCgKiBgbWluX2pvaW5fYm9uZGAgLSBTZXQgW2BNaW5Kb2luQm9uZGBdLrAqIGBtaW5fY3JlYXRlX2JvbmRgIC0gU2V0IFtgTWluQ3JlYXRlQm9uZGBdLoQqIGBtYXhfcG9vbHNgIC0gU2V0IFtgTWF4UG9vbHNgXS6kKiBgbWF4X21lbWJlcnNgIC0gU2V0IFtgTWF4UG9vbE1lbWJlcnNgXS7kKiBgbWF4X21lbWJlcnNfcGVyX3Bvb2xgIC0gU2V0IFtgTWF4UG9vbE1lbWJlcnNQZXJQb29sYF0u4CogYGdsb2JhbF9tYXhfY29tbWlzc2lvbmAgLSBTZXQgW2BHbG9iYWxNYXhDb21taXNzaW9uYF0uMHVwZGF0ZV9yb2xlcxABHHBvb2xfaWQ4ARhQb29sSWQAASBuZXdfcm9vdEEFAVhDb25maWdPcDxUOjpBY2NvdW50SWQ+AAE0bmV3X25vbWluYXRvckEFAVhDb25maWdPcDxUOjpBY2NvdW50SWQ+AAEsbmV3X2JvdW5jZXJBBQFYQ29uZmlnT3A8VDo6QWNjb3VudElkPgAMHHRVcGRhdGUgdGhlIHJvbGVzIG9mIHRoZSBwb29sLgA9AVRoZSByb290IGlzIHRoZSBvbmx5IGVudGl0eSB0aGF0IGNhbiBjaGFuZ2UgYW55IG9mIHRoZSByb2xlcywgaW5jbHVkaW5nIGl0c2VsZiy4ZXhjbHVkaW5nIHRoZSBkZXBvc2l0b3IsIHdobyBjYW4gbmV2ZXIgY2hhbmdlLgBRAUl0IGVtaXRzIGFuIGV2ZW50LCBub3RpZnlpbmcgVUlzIG9mIHRoZSByb2xlIGNoYW5nZS4gVGhpcyBldmVudCBpcyBxdWl0ZSByZWxldmFudCB0bx0BbW9zdCBwb29sIG1lbWJlcnMgYW5kIHRoZXkgc2hvdWxkIGJlIGluZm9ybWVkIG9mIGNoYW5nZXMgdG8gcG9vbCByb2xlcy4UY2hpbGwEARxwb29sX2lkOAEYUG9vbElkAA1EcENoaWxsIG9uIGJlaGFsZiBvZiB0aGUgcG9vbC4AQQFUaGUgZGlzcGF0Y2ggb3JpZ2luIG9mIHRoaXMgY2FsbCBjYW4gYmUgc2lnbmVkIGJ5IHRoZSBwb29sIG5vbWluYXRvciBvciB0aGUgcG9vbKByb290IHJvbGUsIHNhbWUgYXMgW2BQYWxsZXQ6Om5vbWluYXRlYF0uAEUBVGhpcyBkaXJlY3RseSBmb3J3YXJkcyB0aGUgY2FsbCB0byBhbiBpbXBsZW1lbnRhdGlvbiBvZiBgU3Rha2luZ0ludGVyZmFjZWAgKGUuZy4sRQFgcGFsbGV0LXN0YWtpbmdgKSB0aHJvdWdoIFtgQ29uZmlnOjpTdGFrZUFkYXB0ZXJgXSwgb24gYmVoYWxmIG9mIHRoZSBib25kZWQgcG9vbC4ATQFVbmRlciBjZXJ0YWluIGNvbmRpdGlvbnMsIHRoaXMgY2FsbCBjYW4gYmUgZGlzcGF0Y2hlZCBwZXJtaXNzaW9ubGVzc2x5IChpLmUuIGJ5IGFueSRhY2NvdW50KS4ArCMgQ29uZGl0aW9ucyBmb3IgYSBwZXJtaXNzaW9ubGVzcyBkaXNwYXRjaDpVASogV2hlbiBwb29sIGRlcG9zaXRvciBoYXMgbGVzcyB0aGFuIGBNaW5Ob21pbmF0b3JCb25kYCBzdGFrZWQsIG90aGVyd2lzZSBwb29sIG1lbWJlcnNcICBhcmUgdW5hYmxlIHRvIHVuYm9uZC4AnCMgQ29uZGl0aW9ucyBmb3IgcGVybWlzc2lvbmVkIGRpc3BhdGNoOrQqIFRoZSBjYWxsZXIgaXMgdGhlIHBvb2wncyBub21pbmF0b3Igb3Igcm9vdC5AYm9uZF9leHRyYV9vdGhlcggBGG1lbWJlcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEUZXh0cmEpBQFcQm9uZEV4dHJhPEJhbGFuY2VPZjxUPj4ADiRVAWBvcmlnaW5gIGJvbmRzIGZ1bmRzIGZyb20gYGV4dHJhYCBmb3Igc29tZSBwb29sIG1lbWJlciBgbWVtYmVyYCBpbnRvIHRoZWlyIHJlc3BlY3RpdmUYcG9vbHMuAEkBYG9yaWdpbmAgY2FuIGJvbmQgZXh0cmEgZnVuZHMgZnJvbSBmcmVlIGJhbGFuY2Ugb3IgcGVuZGluZyByZXdhcmRzIHdoZW4gYG9yaWdpbiA9PRxvdGhlcmAuAEUBSW4gdGhlIGNhc2Ugb2YgYG9yaWdpbiAhPSBvdGhlcmAsIGBvcmlnaW5gIGNhbiBvbmx5IGJvbmQgZXh0cmEgcGVuZGluZyByZXdhcmRzIG9mFQFgb3RoZXJgIG1lbWJlcnMgYXNzdW1pbmcgc2V0X2NsYWltX3Blcm1pc3Npb24gZm9yIHRoZSBnaXZlbiBtZW1iZXIgaXPAYFBlcm1pc3Npb25sZXNzQ29tcG91bmRgIG9yIGBQZXJtaXNzaW9ubGVzc0FsbGAuUHNldF9jbGFpbV9wZXJtaXNzaW9uBAEocGVybWlzc2lvbkUFATxDbGFpbVBlcm1pc3Npb24ADxxJAUFsbG93cyBhIHBvb2wgbWVtYmVyIHRvIHNldCBhIGNsYWltIHBlcm1pc3Npb24gdG8gYWxsb3cgb3IgZGlzYWxsb3cgcGVybWlzc2lvbmxlc3NgYm9uZGluZyBhbmQgd2l0aGRyYXdpbmcuACwjIEFyZ3VtZW50cwB4KiBgb3JpZ2luYCAtIE1lbWJlciBvZiBhIHBvb2wuuCogYHBlcm1pc3Npb25gIC0gVGhlIHBlcm1pc3Npb24gdG8gYmUgYXBwbGllZC5IY2xhaW1fcGF5b3V0X290aGVyBAEUb3RoZXIEATBUOjpBY2NvdW50SWQAEBABAWBvcmlnaW5gIGNhbiBjbGFpbSBwYXlvdXRzIG9uIHNvbWUgcG9vbCBtZW1iZXIgYG90aGVyYCdzIGJlaGFsZi4AVQFQb29sIG1lbWJlciBgb3RoZXJgIG11c3QgaGF2ZSBhIGBQZXJtaXNzaW9ubGVzc1dpdGhkcmF3YCBvciBgUGVybWlzc2lvbmxlc3NBbGxgIGNsYWltqHBlcm1pc3Npb24gZm9yIHRoaXMgY2FsbCB0byBiZSBzdWNjZXNzZnVsLjhzZXRfY29tbWlzc2lvbggBHHBvb2xfaWQ4ARhQb29sSWQAAThuZXdfY29tbWlzc2lvbkkFAXxPcHRpb248KFBlcmJpbGwsIFQ6OkFjY291bnRJZCk+ABEUdFNldCB0aGUgY29tbWlzc2lvbiBvZiBhIHBvb2wuVQFCb3RoIGEgY29tbWlzc2lvbiBwZXJjZW50YWdlIGFuZCBhIGNvbW1pc3Npb24gcGF5ZWUgbXVzdCBiZSBwcm92aWRlZCBpbiB0aGUgYGN1cnJlbnRgXQF0dXBsZS4gV2hlcmUgYSBgY3VycmVudGAgb2YgYE5vbmVgIGlzIHByb3ZpZGVkLCBhbnkgY3VycmVudCBjb21taXNzaW9uIHdpbGwgYmUgcmVtb3ZlZC4ATQEtIElmIGEgYE5vbmVgIGlzIHN1cHBsaWVkIHRvIGBuZXdfY29tbWlzc2lvbmAsIGV4aXN0aW5nIGNvbW1pc3Npb24gd2lsbCBiZSByZW1vdmVkLkhzZXRfY29tbWlzc2lvbl9tYXgIARxwb29sX2lkOAEYUG9vbElkAAE4bWF4X2NvbW1pc3Npb249BQEcUGVyYmlsbAASFJRTZXQgdGhlIG1heGltdW0gY29tbWlzc2lvbiBvZiBhIHBvb2wuADkBLSBJbml0aWFsIG1heCBjYW4gYmUgc2V0IHRvIGFueSBgUGVyYmlsbGAsIGFuZCBvbmx5IHNtYWxsZXIgdmFsdWVzIHRoZXJlYWZ0ZXIuNQEtIEN1cnJlbnQgY29tbWlzc2lvbiB3aWxsIGJlIGxvd2VyZWQgaW4gdGhlIGV2ZW50IGl0IGlzIGhpZ2hlciB0aGFuIGEgbmV3IG1heDQgIGNvbW1pc3Npb24uaHNldF9jb21taXNzaW9uX2NoYW5nZV9yYXRlCAEccG9vbF9pZDgBGFBvb2xJZAABLGNoYW5nZV9yYXRlUQUBnENvbW1pc3Npb25DaGFuZ2VSYXRlPEJsb2NrTnVtYmVyRm9yPFQ+PgATEKhTZXQgdGhlIGNvbW1pc3Npb24gY2hhbmdlIHJhdGUgZm9yIGEgcG9vbC4APQFJbml0aWFsIGNoYW5nZSByYXRlIGlzIG5vdCBib3VuZGVkLCB3aGVyZWFzIHN1YnNlcXVlbnQgdXBkYXRlcyBjYW4gb25seSBiZSBtb3JldHJlc3RyaWN0aXZlIHRoYW4gdGhlIGN1cnJlbnQuQGNsYWltX2NvbW1pc3Npb24EARxwb29sX2lkOAEYUG9vbElkABRAZENsYWltIHBlbmRpbmcgY29tbWlzc2lvbi4APQFUaGUgYHJvb3RgIHJvbGUgb2YgdGhlIHBvb2wgaXMgX2Fsd2F5c18gYWxsb3dlZCB0byBjbGFpbSB0aGUgcG9vbCdzIGNvbW1pc3Npb24uAFUBSWYgdGhlIHBvb2wgaGFzIHNldCBgQ29tbWlzc2lvbkNsYWltUGVybWlzc2lvbjo6UGVybWlzc2lvbmxlc3NgLCB0aGVuIGFueSBhY2NvdW50IGNhbth0cmlnZ2VyIHRoZSBwcm9jZXNzIG9mIGNsYWltaW5nIHRoZSBwb29sJ3MgY29tbWlzc2lvbi4AQQFJZiB0aGUgcG9vbCBoYXMgc2V0IGl0cyBgQ29tbWlzc2lvbkNsYWltUGVybWlzc2lvbmAgdG8gYEFjY291bnQoYWNjKWAsIHRoZW4gb25seSBhY2NvdW50czAqIGBhY2NgLCBhbmRkKiB0aGUgcG9vbCdzIHJvb3QgYWNjb3VudAC4bWF5IGNhbGwgdGhpcyBleHRyaW5zaWMgb24gYmVoYWxmIG9mIHRoZSBwb29sLgAtAVBlbmRpbmcgY29tbWlzc2lvbnMgYXJlIHBhaWQgb3V0IGFuZCBhZGRlZCB0byB0aGUgdG90YWwgY2xhaW1lZCBjb21taXNzaW9uLrhUaGUgdG90YWwgcGVuZGluZyBjb21taXNzaW9uIGlzIHJlc2V0IHRvIHplcm8uTGFkanVzdF9wb29sX2RlcG9zaXQEARxwb29sX2lkOAEYUG9vbElkABUc7FRvcCB1cCB0aGUgZGVmaWNpdCBvciB3aXRoZHJhdyB0aGUgZXhjZXNzIEVEIGZyb20gdGhlIHBvb2wuAFEBV2hlbiBhIHBvb2wgaXMgY3JlYXRlZCwgdGhlIHBvb2wgZGVwb3NpdG9yIHRyYW5zZmVycyBFRCB0byB0aGUgcmV3YXJkIGFjY291bnQgb2YgdGhlVQFwb29sLiBFRCBpcyBzdWJqZWN0IHRvIGNoYW5nZSBhbmQgb3ZlciB0aW1lLCB0aGUgZGVwb3NpdCBpbiB0aGUgcmV3YXJkIGFjY291bnQgbWF5IGJlUQFpbnN1ZmZpY2llbnQgdG8gY292ZXIgdGhlIEVEIGRlZmljaXQgb2YgdGhlIHBvb2wgb3IgdmljZS12ZXJzYSB3aGVyZSB0aGVyZSBpcyBleGNlc3MxAWRlcG9zaXQgdG8gdGhlIHBvb2wuIFRoaXMgY2FsbCBhbGxvd3MgYW55b25lIHRvIGFkanVzdCB0aGUgRUQgZGVwb3NpdCBvZiB0aGX0cG9vbCBieSBlaXRoZXIgdG9wcGluZyB1cCB0aGUgZGVmaWNpdCBvciBjbGFpbWluZyB0aGUgZXhjZXNzLnxzZXRfY29tbWlzc2lvbl9jbGFpbV9wZXJtaXNzaW9uCAEccG9vbF9pZDgBGFBvb2xJZAABKHBlcm1pc3Npb25VBQG8T3B0aW9uPENvbW1pc3Npb25DbGFpbVBlcm1pc3Npb248VDo6QWNjb3VudElkPj4AFhDMU2V0IG9yIHJlbW92ZSBhIHBvb2wncyBjb21taXNzaW9uIGNsYWltIHBlcm1pc3Npb24uAGEBRGV0ZXJtaW5lcyB3aG8gY2FuIGNsYWltIHRoZSBwb29sJ3MgcGVuZGluZyBjb21taXNzaW9uLiBPbmx5IHRoZSBgUm9vdGAgcm9sZSBvZiB0aGUgcG9vbMhpcyBhYmxlIHRvIGNvbmZpZ3VyZSBjb21taXNzaW9uIGNsYWltIHBlcm1pc3Npb25zLixhcHBseV9zbGFzaAQBOG1lbWJlcl9hY2NvdW50AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AFySIQXBwbHkgYSBwZW5kaW5nIHNsYXNoIG9uIGEgbWVtYmVyLgAlAUZhaWxzIHVubGVzcyBbYGNyYXRlOjpwYWxsZXQ6OkNvbmZpZzo6U3Rha2VBZGFwdGVyYF0gaXMgb2Ygc3RyYXRlZ3kgdHlwZTqkW2BhZGFwdGVyOjpTdGFrZVN0cmF0ZWd5VHlwZTo6RGVsZWdhdGVgXS4AXQFUaGUgcGVuZGluZyBzbGFzaCBhbW91bnQgb2YgdGhlIG1lbWJlciBtdXN0IGJlIGVxdWFsIG9yIG1vcmUgdGhhbiBgRXhpc3RlbnRpYWxEZXBvc2l0YC5RAVRoaXMgY2FsbCBjYW4gYmUgZGlzcGF0Y2hlZCBwZXJtaXNzaW9ubGVzc2x5IChpLmUuIGJ5IGFueSBhY2NvdW50KS4gSWYgdGhlIGV4ZWN1dGlvbkkBaXMgc3VjY2Vzc2Z1bCwgZmVlIGlzIHJlZnVuZGVkIGFuZCBjYWxsZXIgbWF5IGJlIHJld2FyZGVkIHdpdGggYSBwYXJ0IG9mIHRoZSBzbGFzaA0BYmFzZWQgb24gdGhlIFtgY3JhdGU6OnBhbGxldDo6Q29uZmlnOjpTdGFrZUFkYXB0ZXJgXSBjb25maWd1cmF0aW9uLkhtaWdyYXRlX2RlbGVnYXRpb24EAThtZW1iZXJfYWNjb3VudAABUEFjY291bnRJZExvb2t1cE9mPFQ+ABgkHQFNaWdyYXRlcyBkZWxlZ2F0ZWQgZnVuZHMgZnJvbSB0aGUgcG9vbCBhY2NvdW50IHRvIHRoZSBgbWVtYmVyX2FjY291bnRgLgAlAUZhaWxzIHVubGVzcyBbYGNyYXRlOjpwYWxsZXQ6OkNvbmZpZzo6U3Rha2VBZGFwdGVyYF0gaXMgb2Ygc3RyYXRlZ3kgdHlwZTqkW2BhZGFwdGVyOjpTdGFrZVN0cmF0ZWd5VHlwZTo6RGVsZWdhdGVgXS4AKQFUaGlzIGlzIGEgcGVybWlzc2lvbi1sZXNzIGNhbGwgYW5kIHJlZnVuZHMgYW55IGZlZSBpZiBjbGFpbSBpcyBzdWNjZXNzZnVsLgBdAUlmIHRoZSBwb29sIGhhcyBtaWdyYXRlZCB0byBkZWxlZ2F0aW9uIGJhc2VkIHN0YWtpbmcsIHRoZSBzdGFrZWQgdG9rZW5zIG9mIHBvb2wgbWVtYmVycykBY2FuIGJlIG1vdmVkIGFuZCBoZWxkIGluIHRoZWlyIG93biBhY2NvdW50LiBTZWUgW2BhZGFwdGVyOjpEZWxlZ2F0ZVN0YWtlYF14bWlncmF0ZV9wb29sX3RvX2RlbGVnYXRlX3N0YWtlBAEccG9vbF9pZDgBGFBvb2xJZAAZJPRNaWdyYXRlIHBvb2wgZnJvbSBbYGFkYXB0ZXI6OlN0YWtlU3RyYXRlZ3lUeXBlOjpUcmFuc2ZlcmBdIHRvpFtgYWRhcHRlcjo6U3Rha2VTdHJhdGVneVR5cGU6OkRlbGVnYXRlYF0uACUBRmFpbHMgdW5sZXNzIFtgY3JhdGU6OnBhbGxldDo6Q29uZmlnOjpTdGFrZUFkYXB0ZXJgXSBpcyBvZiBzdHJhdGVneSB0eXBlOqRbYGFkYXB0ZXI6OlN0YWtlU3RyYXRlZ3lUeXBlOjpEZWxlZ2F0ZWBdLgBBAVRoaXMgY2FsbCBjYW4gYmUgZGlzcGF0Y2hlZCBwZXJtaXNzaW9ubGVzc2x5LCBhbmQgcmVmdW5kcyBhbnkgZmVlIGlmIHN1Y2Nlc3NmdWwuAEkBSWYgdGhlIHBvb2wgaGFzIGFscmVhZHkgbWlncmF0ZWQgdG8gZGVsZWdhdGlvbiBiYXNlZCBzdGFraW5nLCB0aGlzIGNhbGwgd2lsbCBmYWlsLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy4pBQhccGFsbGV0X25vbWluYXRpb25fcG9vbHMkQm9uZEV4dHJhBBxCYWxhbmNlAZUBAQgsRnJlZUJhbGFuY2UEAJUBARxCYWxhbmNlAAAAHFJld2FyZHMAAQAALQUIXHBhbGxldF9ub21pbmF0aW9uX3Bvb2xzJFBvb2xTdGF0ZQABDBBPcGVuAAAAHEJsb2NrZWQAAQAoRGVzdHJveWluZwACAAAxBQhccGFsbGV0X25vbWluYXRpb25fcG9vbHMgQ29uZmlnT3AEBFQBlQEBDBBOb29wAAAADFNldAQAlQEBBFQAAQAYUmVtb3ZlAAIAADUFCFxwYWxsZXRfbm9taW5hdGlvbl9wb29scyBDb25maWdPcAQEVAE4AQwQTm9vcAAAAAxTZXQEADgBBFQAAQAYUmVtb3ZlAAIAADkFCFxwYWxsZXRfbm9taW5hdGlvbl9wb29scyBDb25maWdPcAQEVAE9BQEMEE5vb3AAAAAMU2V0BAA9BQEEVAABABhSZW1vdmUAAgAAPQUMNHNwX2FyaXRobWV0aWMocGVyX3RoaW5ncxxQZXJiaWxsAAAEADgBDHUzMgAAQQUIXHBhbGxldF9ub21pbmF0aW9uX3Bvb2xzIENvbmZpZ09wBARUAQQBDBBOb29wAAAADFNldAQABAEEVAABABhSZW1vdmUAAgAARQUIXHBhbGxldF9ub21pbmF0aW9uX3Bvb2xzPENsYWltUGVybWlzc2lvbgABEDBQZXJtaXNzaW9uZWQAAABYUGVybWlzc2lvbmxlc3NDb21wb3VuZAABAFhQZXJtaXNzaW9ubGVzc1dpdGhkcmF3AAIARFBlcm1pc3Npb25sZXNzQWxsAAMAAEkFBBhPcHRpb24EBFQBTQUBCBBOb25lAAAAEFNvbWUEAE0FAAABAABNBQAABAg9BQQAUQUIXHBhbGxldF9ub21pbmF0aW9uX3Bvb2xzUENvbW1pc3Npb25DaGFuZ2VSYXRlBCxCbG9ja051bWJlcgE4AAgBMG1heF9pbmNyZWFzZT0FARxQZXJiaWxsAAEkbWluX2RlbGF5OAEsQmxvY2tOdW1iZXIAAFUFBBhPcHRpb24EBFQBWQUBCBBOb25lAAAAEFNvbWUEAFkFAAABAABZBQhccGFsbGV0X25vbWluYXRpb25fcG9vbHNkQ29tbWlzc2lvbkNsYWltUGVybWlzc2lvbgQkQWNjb3VudElkAQQBCDhQZXJtaXNzaW9ubGVzcwAAABxBY2NvdW50BAAEASRBY2NvdW50SWQAAQAAXQUMQHBhbGxldF9iYWdzX2xpc3QYcGFsbGV0EENhbGwIBFQABEkAAQwUcmViYWcEAShkaXNsb2NhdGVkAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AAChZAURlY2xhcmUgdGhhdCBzb21lIGBkaXNsb2NhdGVkYCBhY2NvdW50IGhhcywgdGhyb3VnaCByZXdhcmRzIG9yIHBlbmFsdGllcywgc3VmZmljaWVudGx5UQFjaGFuZ2VkIGl0cyBzY29yZSB0aGF0IGl0IHNob3VsZCBwcm9wZXJseSBmYWxsIGludG8gYSBkaWZmZXJlbnQgYmFnIHRoYW4gaXRzIGN1cnJlbnQQb25lLgAdAUFueW9uZSBjYW4gY2FsbCB0aGlzIGZ1bmN0aW9uIGFib3V0IGFueSBwb3RlbnRpYWxseSBkaXNsb2NhdGVkIGFjY291bnQuAEkBV2lsbCBhbHdheXMgdXBkYXRlIHRoZSBzdG9yZWQgc2NvcmUgb2YgYGRpc2xvY2F0ZWRgIHRvIHRoZSBjb3JyZWN0IHNjb3JlLCBiYXNlZCBvbkBgU2NvcmVQcm92aWRlcmAuANRJZiBgZGlzbG9jYXRlZGAgZG9lcyBub3QgZXhpc3RzLCBpdCByZXR1cm5zIGFuIGVycm9yLjxwdXRfaW5fZnJvbnRfb2YEARxsaWdodGVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AASjQTW92ZSB0aGUgY2FsbGVyJ3MgSWQgZGlyZWN0bHkgaW4gZnJvbnQgb2YgYGxpZ2h0ZXJgLgBZAVRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfIGFuZCBjYW4gb25seSBiZSBjYWxsZWQgYnkgdGhlIElkIG9mNQF0aGUgYWNjb3VudCBnb2luZyBpbiBmcm9udCBvZiBgbGlnaHRlcmAuIEZlZSBpcyBwYXllZCBieSB0aGUgb3JpZ2luIHVuZGVyIGFsbDhjaXJjdW1zdGFuY2VzLgA4T25seSB3b3JrcyBpZjoAlC0gYm90aCBub2RlcyBhcmUgd2l0aGluIHRoZSBzYW1lIGJhZyzQLSBhbmQgYG9yaWdpbmAgaGFzIGEgZ3JlYXRlciBgU2NvcmVgIHRoYW4gYGxpZ2h0ZXJgLlRwdXRfaW5fZnJvbnRfb2Zfb3RoZXIIARxoZWF2aWVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARxsaWdodGVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AAgwRAVNhbWUgYXMgW2BQYWxsZXQ6OnB1dF9pbl9mcm9udF9vZmBdLCBidXQgaXQgY2FuIGJlIGNhbGxlZCBieSBhbnlvbmUuAMhGZWUgaXMgcGFpZCBieSB0aGUgb3JpZ2luIHVuZGVyIGFsbCBjaXJjdW1zdGFuY2VzLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy5hBQx4cGFsbGV0X3N0YWtpbmdfYXN5bmNfcmNfY2xpZW50GHBhbGxldBBDYWxsBARUAAEQUHJlbGF5X3Nlc3Npb25fcmVwb3J0BAEYcmVwb3J0ZQUBbFNlc3Npb25SZXBvcnQ8VDo6QWNjb3VudElkPgAABAUBQ2FsbGVkIHRvIGluZGljYXRlIHRoZSBzdGFydCBvZiBhIG5ldyBzZXNzaW9uIG9uIHRoZSByZWxheSBjaGFpbi5ccmVsYXlfbmV3X29mZmVuY2VfcGFnZWQEASBvZmZlbmNlc3kFAahWZWM8KFNlc3Npb25JbmRleCwgT2ZmZW5jZTxUOjpBY2NvdW50SWQ+KT4AAQAgc2V0X2tleXMMARBrZXlzGAEcVmVjPHU4PgABFHByb29mGAEcVmVjPHU4PgABlG1heF9kZWxpdmVyeV9hbmRfcmVtb3RlX2V4ZWN1dGlvbl9mZWVhBAFQT3B0aW9uPEJhbGFuY2VPZjxUPj4ACnxVAVNldCBzZXNzaW9uIGtleXMgZm9yIGEgdmFsaWRhdG9yLiBLZXlzIGFyZSB2YWxpZGF0ZWQgb24gQXNzZXRIdWIgYW5kIGZvcndhcmRlZCB0byBSQy4AVQFPbiB0aGUgZmlyc3QgY2FsbCwgYSBkZXBvc2l0IG9mIGBLZXlEZXBvc2l0YCBpcyBoZWxkIGZyb20gdGhlIHN0YXNoLiBTdWJzZXF1ZW50IGNhbGxz9GRvIG5vdCBjaGFyZ2UgYWdhaW4uIFRoZSBkZXBvc2l0IGlzIHJlbGVhc2VkIG9uIGBwdXJnZV9rZXlzYC4AbCoqVmFsaWRhdGlvbiBvbiBBc3NldEh1YjoqKk0BLSBLZXlzIGFyZSBkZWNvZGVkIGFzIGBUOjpSZWxheUNoYWluU2Vzc2lvbktleXNgIHRvIGVuc3VyZSB0aGV5IG1hdGNoIFJDJ3MgZXhwZWN0ZWQkICBmb3JtYXQuMQEtIE93bmVyc2hpcCBwcm9vZiBpcyB2YWxpZGF0ZWQgdXNpbmcgYE9wYXF1ZUtleXM6Om93bmVyc2hpcF9wcm9vZl9pc192YWxpZGAuAEEBSWYgdmFsaWRhdGlvbiBwYXNzZXMsIG9ubHkgdGhlIHZhbGlkYXRlZCBrZXlzIGFyZSBzZW50IHRvIFJDICh3aXRoIGVtcHR5IHByb29mKSyAc2luY2UgUkMgdHJ1c3RzIEFIJ3MgdmFsaWRhdGlvbi4AJCoqRmVlczoqKlUBVGhlIGFjdHVhbCBjb3N0IG9mIHRoaXMgY2FsbCBpcyBoaWdoZXIgdGhhbiB3aGF0IHRoZSB3ZWlnaHQtYmFzZWQgZmVlIGVzdGltYXRlIHNob3dzLlEBSW4gYWRkaXRpb24gdG8gdGhlIGxvY2FsIHRyYW5zYWN0aW9uIHdlaWdodCBmZWUsIHRoZSBzdGFzaCBhY2NvdW50IGlzIGNoYXJnZWQgYW4gWENNSQFmZWUgKGRlbGl2ZXJ5ICsgUkMgZXhlY3V0aW9uIGNvc3QpIHZpYSBgWGNtRXhlY3V0b3I6OmNoYXJnZV9mZWVzYC4gVGhlIHJlbGF5IGNoYWluPQF1c2VzIGBVbnBhaWRFeGVjdXRpb25gLCBzbyB0aGUgZnVsbCByZW1vdGUgY29zdCBpcyBjaGFyZ2VkIHVwZnJvbnQgb24gQXNzZXRIdWIuAC0BV2hlbiBjYWxsZWQgdmlhIGEgc3Rha2luZyBwcm94eSwgdGhlIHByb3h5IHBheXMgdGhlIHRyYW5zYWN0aW9uIHdlaWdodCBmZWUs2HdoaWxlIHRoZSBzdGFzaCAoZGVsZWdhdGluZyBhY2NvdW50KSBwYXlzIHRoZSBYQ00gZmVlLgBIKipNYXggRmVlIExpbWl0OioqRQFVc2VycyBjYW4gb3B0aW9uYWxseSBzcGVjaWZ5IGBtYXhfZGVsaXZlcnlfYW5kX3JlbW90ZV9leGVjdXRpb25fZmVlYCB0byBsaW1pdCB0aGVdAWRlbGl2ZXJ5ICsgUkMgZXhlY3V0aW9uIGZlZS4gVGhpcyBkb2VzIG5vdCBpbmNsdWRlIHRoZSBsb2NhbCB0cmFuc2FjdGlvbiB3ZWlnaHQgZmVlLiBJZl0BdGhlIGZlZSBleGNlZWRzIHRoaXMgbGltaXQsIHRoZSBvcGVyYXRpb24gZmFpbHMgd2l0aCBgRmVlc0V4Y2VlZGVkTWF4YC4gUGFzcyBgTm9uZWAgZm9yTHVubGltaXRlZCAobm8gY2FwKS4AWQFOT1RFOiB1bmxpa2UgdGhlIGN1cnJlbnQgZmxvdyBmb3IgbmV3IHZhbGlkYXRvcnMgb24gUkMgKGJvbmQgLT4gc2V0X2tleXMgLT4gdmFsaWRhdGUpLFUBdXNlcnMgb24gQXNzZXQgSHViIE1VU1QgY2FsbCBib25kIGFuZCB2YWxpZGF0ZSBCRUZPUkUgY2FsbGluZyBzZXRfa2V5cy4gQXR0ZW1wdGluZyB0byUBc2V0IGtleXMgYmVmb3JlIGRlY2xhcmluZyBpbnRlbnQgdG8gdmFsaWRhdGUgd2lsbCBmYWlsIHdpdGggTm90VmFsaWRhdG9yLihwdXJnZV9rZXlzBAGUbWF4X2RlbGl2ZXJ5X2FuZF9yZW1vdGVfZXhlY3V0aW9uX2ZlZWEEAVBPcHRpb248QmFsYW5jZU9mPFQ+PgALaAEBUmVtb3ZlIHNlc3Npb24ga2V5cyBmb3IgYSB2YWxpZGF0b3IgYW5kIHJlbGVhc2UgdGhlIGtleSBkZXBvc2l0LgCoVGhpcyBwdXJnZXMgdGhlIGtleXMgZnJvbSB0aGUgUmVsYXkgQ2hhaW4uAEUBVW5saWtlIGBzZXRfa2V5c2AsIHRoaXMgZG9lcyBub3QgcmVxdWlyZSB0aGUgY2FsbGVyIHRvIGJlIGEgcmVnaXN0ZXJlZCB2YWxpZGF0b3IuSQFUaGlzIGlzIGludGVudGlvbmFsOiBhIHZhbGlkYXRvciB3aG8gaGFzIGNoaWxsZWQgKHN0b3BwZWQgdmFsaWRhdGluZykgc2hvdWxkIHN0aWxsOQFiZSBhYmxlIHRvIHB1cmdlIHRoZWlyIHNlc3Npb24ga2V5cy4gVGhpcyBtYXRjaGVzIHRoZSBiZWhhdmlvciBvZiB0aGUgb3JpZ2luYWzwYHBhbGxldC1zZXNzaW9uOjpwdXJnZV9rZXlzYCB3aGljaCBhbGxvd3MgYW55b25lIHRvIGNhbGwgaXQuADkBVGhlIFJlbGF5IENoYWluIHdpbGwgcmVqZWN0IHRoZSBjYWxsIHdpdGggYE5vS2V5c2AgZXJyb3IgaWYgdGhlIGFjY291bnQgaGFzIG5vJGtleXMgc2V0LgAkKipGZWVzOioqVQFUaGUgYWN0dWFsIGNvc3Qgb2YgdGhpcyBjYWxsIGlzIGhpZ2hlciB0aGFuIHdoYXQgdGhlIHdlaWdodC1iYXNlZCBmZWUgZXN0aW1hdGUgc2hvd3MuRQFJbiBhZGRpdGlvbiB0byB0aGUgbG9jYWwgdHJhbnNhY3Rpb24gd2VpZ2h0IGZlZSwgdGhlIGNhbGxlciBpcyBjaGFyZ2VkIGFuIFhDTSBmZWVNAShkZWxpdmVyeSArIFJDIGV4ZWN1dGlvbiBjb3N0KSB2aWEgYFhjbUV4ZWN1dG9yOjpjaGFyZ2VfZmVlc2AuIFRoZSByZWxheSBjaGFpbiB1c2VzKQFgVW5wYWlkRXhlY3V0aW9uYCwgc28gdGhlIGZ1bGwgcmVtb3RlIGNvc3QgaXMgY2hhcmdlZCB1cGZyb250IG9uIEFzc2V0SHViLgAtAVdoZW4gY2FsbGVkIHZpYSBhIHN0YWtpbmcgcHJveHksIHRoZSBwcm94eSBwYXlzIHRoZSB0cmFuc2FjdGlvbiB3ZWlnaHQgZmVlLLh3aGlsZSB0aGUgZGVsZWdhdGluZyBhY2NvdW50IHBheXMgdGhlIFhDTSBmZWUuAEgqKk1heCBGZWUgTGltaXQ6KipFAVVzZXJzIGNhbiBvcHRpb25hbGx5IHNwZWNpZnkgYG1heF9kZWxpdmVyeV9hbmRfcmVtb3RlX2V4ZWN1dGlvbl9mZWVgIHRvIGxpbWl0IHRoZV0BZGVsaXZlcnkgKyBSQyBleGVjdXRpb24gZmVlLiBUaGlzIGRvZXMgbm90IGluY2x1ZGUgdGhlIGxvY2FsIHRyYW5zYWN0aW9uIHdlaWdodCBmZWUuIElmXQF0aGUgZmVlIGV4Y2VlZHMgdGhpcyBsaW1pdCwgdGhlIG9wZXJhdGlvbiBmYWlscyB3aXRoIGBGZWVzRXhjZWVkZWRNYXhgLiBQYXNzIGBOb25lYCBmb3JMdW5saW1pdGVkIChubyBjYXApLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy5lBQh4cGFsbGV0X3N0YWtpbmdfYXN5bmNfcmNfY2xpZW50NFNlc3Npb25SZXBvcnQEJEFjY291bnRJZAEEABABJGVuZF9pbmRleDgBMFNlc3Npb25JbmRleAABQHZhbGlkYXRvcl9wb2ludHNpBQFUVmVjPChBY2NvdW50SWQsIHUzMik+AAFQYWN0aXZhdGlvbl90aW1lc3RhbXBxBQFIT3B0aW9uPCh1NjQsIHUzMik+AAEgbGVmdG92ZXKZAQEQYm9vbAAAaQUAAAJtBQBtBQAABAgEOABxBQQYT3B0aW9uBARUAXUFAQgQTm9uZQAAABBTb21lBAB1BQAAAQAAdQUAAAQIKDgAeQUAAAJ9BQB9BQAABAg4gQUAgQUIeHBhbGxldF9zdGFraW5nX2FzeW5jX3JjX2NsaWVudBxPZmZlbmNlBCRBY2NvdW50SWQBBAAMASBvZmZlbmRlcgQBJEFjY291bnRJZAABJHJlcG9ydGVyc50BAThWZWM8QWNjb3VudElkPgABOHNsYXNoX2ZyYWN0aW9uPQUBHFBlcmJpbGwAAIUFDJBwYWxsZXRfZWxlY3Rpb25fcHJvdmlkZXJfbXVsdGlfYmxvY2sYcGFsbGV0EENhbGwEBFQAAQgYbWFuYWdlBAEIb3CJBQFMTWFuYWdlck9wZXJhdGlvbjxUPgAAFExNYW5hZ2UgdGhpcyBwYWxsZXQuAOhUaGUgb3JpZ2luIG9mIHRoaXMgY2FsbCBtdXN0IGJlIFtgQ29uZmlnOjpNYW5hZ2VyT3JpZ2luYF0uAAkBU2VlIFtgTWFuYWdlck9wZXJhdGlvbmBdIGZvciB2YXJpb3VzIG9wZXJhdGlvbnMgdGhhdCBhcmUgcG9zc2libGUuFGFkbWluBAEIb3CRBQFEQWRtaW5PcGVyYXRpb248VD4AAQAEDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuiQUIkHBhbGxldF9lbGVjdGlvbl9wcm92aWRlcl9tdWx0aV9ibG9ja0BNYW5hZ2VyT3BlcmF0aW9uBARUAAEMQEZvcmNlUm90YXRlUm91bmQAAAA0Rm9yY2VTZXRQaGFzZQQAjQUBIFBoYXNlPFQ+AAEAREVtZXJnZW5jeUZhbGxiYWNrAAIAAI0FDJBwYWxsZXRfZWxlY3Rpb25fcHJvdmlkZXJfbXVsdGlfYmxvY2sUdHlwZXMUUGhhc2UEBFQAASAMT2ZmAAAAGFNpZ25lZAQAOAFEQmxvY2tOdW1iZXJGb3I8VD4AAQBAU2lnbmVkVmFsaWRhdGlvbgQAOAFEQmxvY2tOdW1iZXJGb3I8VD4AAgAgVW5zaWduZWQEADgBREJsb2NrTnVtYmVyRm9yPFQ+AAMAIFNuYXBzaG90BAA4ASRQYWdlSW5kZXgABAAQRG9uZQAFABhFeHBvcnQEADgBJFBhZ2VJbmRleAAGACRFbWVyZ2VuY3kABwAAkQUIkHBhbGxldF9lbGVjdGlvbl9wcm92aWRlcl9tdWx0aV9ibG9jazhBZG1pbk9wZXJhdGlvbgQEVAABCFBFbWVyZ2VuY3lTZXRTb2x1dGlvbggAlQUBhEJveDxCb3VuZGVkU3VwcG9ydHNPZjxQYWxsZXQ8VD4+PgAAtQUBNEVsZWN0aW9uU2NvcmUAAABQU2V0TWluVW50cnVzdGVkU2NvcmUEALUFATRFbGVjdGlvblNjb3JlAAEAAJUFCHxmcmFtZV9lbGVjdGlvbl9wcm92aWRlcl9zdXBwb3J0PEJvdW5kZWRTdXBwb3J0cwwkQWNjb3VudElkAQQYQk91dGVyABhCSW5uZXIAAAQAmQUBCQFCb3VuZGVkVmVjPChBY2NvdW50SWQsIEJvdW5kZWRTdXBwb3J0PEFjY291bnRJZCwgQklubmVyPiksIEJPdXRlcj4AAJkFDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBnQUEUwAABACxBQEYVmVjPFQ+AACdBQAABAgEoQUAoQUIfGZyYW1lX2VsZWN0aW9uX3Byb3ZpZGVyX3N1cHBvcnQ4Qm91bmRlZFN1cHBvcnQIJEFjY291bnRJZAEEFEJvdW5kAAAIARR0b3RhbJUBATxFeHRlbmRlZEJhbGFuY2UAARh2b3RlcnOlBQG8Qm91bmRlZFZlYzwoQWNjb3VudElkLCBFeHRlbmRlZEJhbGFuY2UpLCBCb3VuZD4AAKUFDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBqQUEUwAABACtBQEYVmVjPFQ+AACpBQAABAgElQEArQUAAAKpBQCxBQAAAp0FALUFCERzcF9ucG9zX2VsZWN0aW9uczRFbGVjdGlvblNjb3JlAAAMATRtaW5pbWFsX3N0YWtllQEBPEV4dGVuZGVkQmFsYW5jZQABJHN1bV9zdGFrZZUBATxFeHRlbmRlZEJhbGFuY2UAAURzdW1fc3Rha2Vfc3F1YXJlZJUBATxFeHRlbmRlZEJhbGFuY2UAALkFFJBwYWxsZXRfZWxlY3Rpb25fcHJvdmlkZXJfbXVsdGlfYmxvY2sgdmVyaWZpZXIUaW1wbHMYcGFsbGV0EENhbGwEBFQAAQAEDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuvQUQkHBhbGxldF9lbGVjdGlvbl9wcm92aWRlcl9tdWx0aV9ibG9jayB1bnNpZ25lZBhwYWxsZXQQQ2FsbAQEVAABBDxzdWJtaXRfdW5zaWduZWQEAThwYWdlZF9zb2x1dGlvbsEFAZRCb3g8UGFnZWRSYXdTb2x1dGlvbjxUOjpNaW5lckNvbmZpZz4+AAA8cFN1Ym1pdCBhbiB1bnNpZ25lZCBzb2x1dGlvbi4AVQFUaGlzIHdvcmtzIHZlcnkgbXVjaCBsaWtlIGFuIGluaGVyZW50LCBhcyBvbmx5IHRoZSB2YWxpZGF0b3JzIGFyZSBwZXJtaXR0ZWQgdG8gc3VibWl0WQFhbnl0aGluZy4gQnkgZGVmYXVsdCB2YWxpZGF0b3JzIHdpbGwgY29tcHV0ZSB0aGlzIGNhbGwgaW4gdGhlaXIgYG9mZmNoYWluX3dvcmtlcmAgaG9va2xhbmQgdHJ5IGFuZCBzdWJtaXQgaXQgYmFjay4ARQFUaGlzIGlzIGRpZmZlcmVudCBmcm9tIHNpZ25lZCBwYWdlIHN1Ym1pc3Npb24gbWFpbmx5IGluIHRoYXQgdGhlIHNvbHV0aW9uIHBhZ2UgaXNQdmVyaWZpZWQgb24gdGhlIGZseS4APQFUaGUgYHBhZ2VkX3NvbHV0aW9uYCBtYXkgY29udGFpbiBhdCBtb3N0IFtgQ29uZmlnOjpNaW5lclBhZ2VzYF0gcGFnZXMuIFRoZXkgYXJlDQFpbnRlcnByZXRlZCBhcyBtc3AgLT4gbHNwLCBhcyBwZXIgW2BjcmF0ZTo6UGFsbGV0Ojptc3BfcmFuZ2VfZm9yYF0uAF0BRm9yIGV4YW1wbGUsIGlmIGBQYWdlcyA9IDRgLCBhbmQgYE1pbmVyUGFnZXMgPSAyYCwgb3VyIGZ1bGwgc25hcHNob3QgcmFuZ2Ugd291bGQgYmUgWzAsVQExLCAyLCAzXSwgd2l0aCAzIGJlaW5nIG1zcC4gQnV0LCBpbiB0aGlzIGNhc2UsIHRoZW4gdGhlIGBwYWdlZF9yYXdfc29sdXRpb24ucGFnZXNgIGlz3GV4cGVjdGVkIHRvIGNvcnJlc3BvbmQgdG8gYFtzbmFwc2hvdCgyKSwgc25hcHNob3QoMyldYC4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuwQUMkHBhbGxldF9lbGVjdGlvbl9wcm92aWRlcl9tdWx0aV9ibG9jaxR0eXBlc0BQYWdlZFJhd1NvbHV0aW9uBARUAAAMAThzb2x1dGlvbl9wYWdlc8UFAUhWZWM8U29sdXRpb25PZjxUPj4AARRzY29yZbUFATRFbGVjdGlvblNjb3JlAAEUcm91bmQ4AQx1MzIAAMUFAAACyQUAyQUMYGFzc2V0X2h1Yl9rdXNhbWFfcnVudGltZRxzdGFraW5nVE5wb3NDb21wYWN0U29sdXRpb24yNAAAYAEYdm90ZXMxzQUAAAEYdm90ZXMy2QUAAAEYdm90ZXMz7QUAAAEYdm90ZXM0+QUAAAEYdm90ZXM1BQYAAAEYdm90ZXM2EQYAAAEYdm90ZXM3HQYAAAEYdm90ZXM4KQYAAAEYdm90ZXM5NQYAAAEcdm90ZXMxMEEGAAABHHZvdGVzMTFNBgAAARx2b3RlczEyWQYAAAEcdm90ZXMxM2UGAAABHHZvdGVzMTRxBgAAARx2b3RlczE1fQYAAAEcdm90ZXMxNokGAAABHHZvdGVzMTeVBgAAARx2b3RlczE4oQYAAAEcdm90ZXMxOa0GAAABHHZvdGVzMjC5BgAAARx2b3RlczIxxQYAAAEcdm90ZXMyMtEGAAABHHZvdGVzMjPdBgAAARx2b3RlczI06QYAAADNBQAAAtEFANEFAAAECGTVBQDVBQAABvkDANkFAAAC3QUA3QUAAAQMZOEF1QUA4QUAAAQI1QXlBQDlBQAABukFAOkFDDRzcF9hcml0aG1ldGljKHBlcl90aGluZ3MYUGVyVTE2AAAEAPkDAQx1MTYAAO0FAAAC8QUA8QUAAAQMZPUF1QUA9QUAAAMCAAAA4QUA+QUAAAL9BQD9BQAABAxkAQbVBQABBgAAAwMAAADhBQAFBgAAAgkGAAkGAAAEDGQNBtUFAA0GAAADBAAAAOEFABEGAAACFQYAFQYAAAQMZBkG1QUAGQYAAAMFAAAA4QUAHQYAAAIhBgAhBgAABAxkJQbVBQAlBgAAAwYAAADhBQApBgAAAi0GAC0GAAAEDGQxBtUFADEGAAADBwAAAOEFADUGAAACOQYAOQYAAAQMZD0G1QUAPQYAAAMIAAAA4QUAQQYAAAJFBgBFBgAABAxkSQbVBQBJBgAAAwkAAADhBQBNBgAAAlEGAFEGAAAEDGRVBtUFAFUGAAADCgAAAOEFAFkGAAACXQYAXQYAAAQMZGEG1QUAYQYAAAMLAAAA4QUAZQYAAAJpBgBpBgAABAxkbQbVBQBtBgAAAwwAAADhBQBxBgAAAnUGAHUGAAAEDGR5BtUFAHkGAAADDQAAAOEFAH0GAAACgQYAgQYAAAQMZIUG1QUAhQYAAAMOAAAA4QUAiQYAAAKNBgCNBgAABAxkkQbVBQCRBgAAAw8AAADhBQCVBgAAApkGAJkGAAAEDGSdBtUFAJ0GAAADEAAAAOEFAKEGAAACpQYApQYAAAQMZKkG1QUAqQYAAAMRAAAA4QUArQYAAAKxBgCxBgAABAxktQbVBQC1BgAAAxIAAADhBQC5BgAAAr0GAL0GAAAEDGTBBtUFAMEGAAADEwAAAOEFAMUGAAACyQYAyQYAAAQMZM0G1QUAzQYAAAMUAAAA4QUA0QYAAALVBgDVBgAABAxk2QbVBQDZBgAAAxUAAADhBQDdBgAAAuEGAOEGAAAEDGTlBtUFAOUGAAADFgAAAOEFAOkGAAAC7QYA7QYAAAQMZPEG1QUA8QYAAAMXAAAA4QUA9QYQkHBhbGxldF9lbGVjdGlvbl9wcm92aWRlcl9tdWx0aV9ibG9jaxhzaWduZWQYcGFsbGV0EENhbGwEBFQAARQgcmVnaXN0ZXIEATRjbGFpbWVkX3Njb3JltQUBNEVsZWN0aW9uU2NvcmUAAATEUmVnaXN0ZXIgb25lc2VsZiBmb3IgYW4gdXBjb21pbmcgc2lnbmVkIGVsZWN0aW9uLixzdWJtaXRfcGFnZQgBEHBhZ2U4ASRQYWdlSW5kZXgAAThtYXliZV9zb2x1dGlvbvkGAZxPcHRpb248Qm94PFNvbHV0aW9uT2Y8VDo6TWluZXJDb25maWc+Pj4AASCMU3VibWl0IGEgc2luZ2xlIHBhZ2Ugb2YgYSBzb2x1dGlvbi4AsE11c3QgYWx3YXlzIGNvbWUgYWZ0ZXIgW2BQYWxsZXQ6OnJlZ2lzdGVyYF0uAOBgbWF5YmVfc29sdXRpb25gIGNhbiBiZSBzZXQgdG8gYE5vbmVgIHRvIGVyYXNlIHRoZSBwYWdlLgA1AUNvbGxlY3RzIGRlcG9zaXRzIGZyb20gdGhlIHNpZ25lZCBvcmlnaW4gYmFzZWQgb24gW2BDb25maWc6OkRlcG9zaXRCYXNlYF0gYW5kbFtgQ29uZmlnOjpEZXBvc2l0UGVyUGFnZWBdLhBiYWlsAAIUVFJldHJhY3QgYSBzdWJtaXNzaW9uLgBNAUEgcG9ydGlvbiBvZiB0aGUgZGVwb3NpdCBtYXkgYmUgcmV0dXJuZWQsIGJhc2VkIG9uIHRoZSBbYENvbmZpZzo6RWplY3RHcmFjZVJhdGlvYF0uAMRUaGlzIHdpbGwgZnVsbHkgcmVtb3ZlIHRoZSBzb2x1dGlvbiBmcm9tIHN0b3JhZ2UuUGNsZWFyX29sZF9yb3VuZF9kYXRhCAEUcm91bmQ4AQx1MzIAATR3aXRuZXNzX3BhZ2VzOAEMdTMyAAMYwENsZWFyIHRoZSBkYXRhIG9mIGEgc3VibWl0dGVyIGZvcm0gYW4gb2xkIHJvdW5kLgAxAVRoZSBkaXNwYXRjaCBvcmlnaW4gb2YgdGhpcyBjYWxsIG11c3QgYmUgc2lnbmVkLCBhbmQgdGhlIG9yaWdpbmFsIHN1Ym1pdHRlci4AXQFUaGlzIGNhbiBvbmx5IGJlIGNhbGxlZCBmb3Igc3VibWlzc2lvbnMgdGhhdCBlbmQgdXAgYmVpbmcgZGlzY2FyZGVkLCBhcyBpbiB0aGV5IGFyZSBub3TEcHJvY2Vzc2VkIGFuZCB0aGV5IGVuZCB1cCBsaW5nZXJpbmcgaW4gdGhlIHF1ZXVlLkRzZXRfaW52dWxuZXJhYmxlcwQBDGludp0BAURWZWM8VDo6QWNjb3VudElkPgAEDGhTZXQgdGhlIGludnVsbmVyYWJsZSBsaXN0LgARAURpc3BhdGNoIG9yaWdpbiBtdXN0IHRoZSB0aGUgc2FtZSBhcyBbYGNyYXRlOjpDb25maWc6OkFkbWluT3JpZ2luYF0uBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLvkGBBhPcHRpb24EBFQByQUBCBBOb25lAAAAEFNvbWUEAMkFAAABAAD9BhBQcGFsbGV0X3N0YWtpbmdfYXN5bmMYcGFsbGV0GHBhbGxldBBDYWxsBARUAAGIEGJvbmQIARR2YWx1ZZEBATBCYWxhbmNlT2Y8VD4AARRwYXllZQEHAXxSZXdhcmREZXN0aW5hdGlvbjxUOjpBY2NvdW50SWQ+AAAwYQFUYWtlIHRoZSBvcmlnaW4gYWNjb3VudCBhcyBhIHN0YXNoIGFuZCBsb2NrIHVwIGB2YWx1ZWAgb2YgaXRzIGJhbGFuY2UuIGBjb250cm9sbGVyYCB3aWxsgGJlIHRoZSBhY2NvdW50IHRoYXQgY29udHJvbHMgaXQuAC0BYHZhbHVlYCBtdXN0IGJlIG1vcmUgdGhhbiB0aGUgYG1pbmltdW1fYmFsYW5jZWAgc3BlY2lmaWVkIGJ5IGBUOjpDdXJyZW5jeWAuACEBVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8gYnkgdGhlIHN0YXNoIGFjY291bnQuADxFbWl0cyBgQm9uZGVkYC4ATQFOT1RFOiBUd28gb2YgdGhlIHN0b3JhZ2Ugd3JpdGVzIChgU2VsZjo6Ym9uZGVkYCwgYFNlbGY6OnBheWVlYCkgYXJlIF9uZXZlcl8gY2xlYW5lZFkBdW5sZXNzIHRoZSBgb3JpZ2luYCBmYWxscyBiZWxvdyBfZXhpc3RlbnRpYWwgZGVwb3NpdF8gKG9yIGVxdWFsIHRvIDApIGFuZCBnZXRzIHJlbW92ZWQgYXMgZHVzdC4oYm9uZF9leHRyYQQBOG1heF9hZGRpdGlvbmFskQEBMEJhbGFuY2VPZjxUPgABKGEBQWRkIHNvbWUgZXh0cmEgYW1vdW50IHRoYXQgaGF2ZSBhcHBlYXJlZCBpbiB0aGUgc3Rhc2ggYGZyZWVfYmFsYW5jZWAgaW50byB0aGUgYmFsYW5jZSB1cDBmb3Igc3Rha2luZy4AUQFUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXyBieSB0aGUgc3Rhc2gsIG5vdCB0aGUgY29udHJvbGxlci4ATQFVc2UgdGhpcyBpZiB0aGVyZSBhcmUgYWRkaXRpb25hbCBmdW5kcyBpbiB5b3VyIHN0YXNoIGFjY291bnQgdGhhdCB5b3Ugd2lzaCB0byBib25kLlUBVW5saWtlIFtgYm9uZGBdKFNlbGY6OmJvbmQpIG9yIFtgdW5ib25kYF0oU2VsZjo6dW5ib25kKSB0aGlzIGZ1bmN0aW9uIGRvZXMgbm90IGltcG9zZbxhbnkgbGltaXRhdGlvbiBvbiB0aGUgYW1vdW50IHRoYXQgY2FuIGJlIGFkZGVkLgA8RW1pdHMgYEJvbmRlZGAuGHVuYm9uZAQBFHZhbHVlkQEBMEJhbGFuY2VPZjxUPgACTFEBU2NoZWR1bGUgYSBwb3J0aW9uIG9mIHRoZSBzdGFzaCB0byBiZSB1bmxvY2tlZCByZWFkeSBmb3IgdHJhbnNmZXIgb3V0IGFmdGVyIHRoZSBib25k/HBlcmlvZCBlbmRzLiBJZiB0aGlzIGxlYXZlcyBhbiBhbW91bnQgYWN0aXZlbHkgYm9uZGVkIGxlc3MgdGhhbiEBW2Bhc3NldDo6ZXhpc3RlbnRpYWxfZGVwb3NpdGBdLCB0aGVuIGl0IGlzIGluY3JlYXNlZCB0byB0aGUgZnVsbCBhbW91bnQuAFEBVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8gYnkgdGhlIGNvbnRyb2xsZXIsIG5vdCB0aGUgc3Rhc2guAEUBT25jZSB0aGUgdW5sb2NrIHBlcmlvZCBpcyBkb25lLCB5b3UgY2FuIGNhbGwgYHdpdGhkcmF3X3VuYm9uZGVkYCB0byBhY3R1YWxseSBtb3ZlvHRoZSBmdW5kcyBvdXQgb2YgbWFuYWdlbWVudCByZWFkeSBmb3IgdHJhbnNmZXIuADEBTm8gbW9yZSB0aGFuIGEgbGltaXRlZCBudW1iZXIgb2YgdW5sb2NraW5nIGNodW5rcyAoc2VlIGBNYXhVbmxvY2tpbmdDaHVua3NgKUEBY2FuIGNvLWV4aXN0cyBhdCB0aGUgc2FtZSB0aW1lLiBJZiB0aGVyZSBhcmUgbm8gdW5sb2NraW5nIGNodW5rcyBzbG90cyBhdmFpbGFibGVFAVtgQ2FsbDo6d2l0aGRyYXdfdW5ib25kZWRgXSBpcyBjYWxsZWQgdG8gcmVtb3ZlIHNvbWUgb2YgdGhlIGNodW5rcyAoaWYgcG9zc2libGUpLgA5AUlmIGEgdXNlciBlbmNvdW50ZXJzIHRoZSBgSW5zdWZmaWNpZW50Qm9uZGAgZXJyb3Igd2hlbiBjYWxsaW5nIHRoaXMgZXh0cmluc2ljLBkBdGhleSBzaG91bGQgY2FsbCBgY2hpbGxgIGZpcnN0IGluIG9yZGVyIHRvIGZyZWUgdXAgdGhlaXIgYm9uZGVkIGZ1bmRzLgBERW1pdHMgYFVuYm9uZGVkYC4AlFNlZSBhbHNvIFtgQ2FsbDo6d2l0aGRyYXdfdW5ib25kZWRgXS5Ed2l0aGRyYXdfdW5ib25kZWQEAUhudW1fc2xhc2hpbmdfc3BhbnM4AQx1MzIAA0wpAVJlbW92ZSBhbnkgc3Rha2UgdGhhdCBoYXMgYmVlbiBmdWxseSB1bmJvbmRlZCBhbmQgaXMgcmVhZHkgZm9yIHdpdGhkcmF3YWwuAFUBU3Rha2UgaXMgY29uc2lkZXJlZCBmdWxseSB1bmJvbmRlZCBvbmNlIFtgQ29uZmlnOjpCb25kaW5nRHVyYXRpb25gXSBoYXMgZWxhcHNlZCBzaW5jZV0BdGhlIHVuYm9uZGluZyB3YXMgaW5pdGlhdGVkLiBJbiByYXJlIGNhc2Vz4oCUc3VjaCBhcyB3aGVuIG9mZmVuY2VzIGZvciB0aGUgdW5ib25kZWQgZXJhVQFoYXZlIGJlZW4gcmVwb3J0ZWQgYnV0IG5vdCB5ZXQgcHJvY2Vzc2Vk4oCUd2l0aGRyYXdhbCBpcyByZXN0cmljdGVkIHRvIGVyYXMgZm9yIHdoaWNohGFsbCBvZmZlbmNlcyBoYXZlIGJlZW4gcHJvY2Vzc2VkLgAlAVRoZSB1bmxvY2tlZCBzdGFrZSB3aWxsIGJlIHJldHVybmVkIGFzIGZyZWUgYmFsYW5jZSBpbiB0aGUgc3Rhc2ggYWNjb3VudC4AFQFUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXyBieSB0aGUgY29udHJvbGxlci4ASEVtaXRzIGBXaXRoZHJhd25gLgBoU2VlIGFsc28gW2BDYWxsOjp1bmJvbmRgXS4ANCMjIFBhcmFtZXRlcnMAWQEtIGBudW1fc2xhc2hpbmdfc3BhbnNgOiAqKkRlcHJlY2F0ZWQqKi4gUmV0YWluZWQgb25seSBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eTsgdGhpc2ggIHBhcmFtZXRlciBoYXMgbm8gZWZmZWN0LiB2YWxpZGF0ZQQBFHByZWZzBQcBOFZhbGlkYXRvclByZWZzAAQU5ERlY2xhcmUgdGhlIGRlc2lyZSB0byB2YWxpZGF0ZSBmb3IgdGhlIG9yaWdpbiBjb250cm9sbGVyLgDYRWZmZWN0cyB3aWxsIGJlIGZlbHQgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgbmV4dCBlcmEuAFEBVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8gYnkgdGhlIGNvbnRyb2xsZXIsIG5vdCB0aGUgc3Rhc2guIG5vbWluYXRlBAEcdGFyZ2V0cw0HAWRWZWM8QWNjb3VudElkTG9va3VwT2Y8VD4+AAUUDQFEZWNsYXJlIHRoZSBkZXNpcmUgdG8gbm9taW5hdGUgYHRhcmdldHNgIGZvciB0aGUgb3JpZ2luIGNvbnRyb2xsZXIuANhFZmZlY3RzIHdpbGwgYmUgZmVsdCBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBuZXh0IGVyYS4AUQFUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXyBieSB0aGUgY29udHJvbGxlciwgbm90IHRoZSBzdGFzaC4UY2hpbGwABijERGVjbGFyZSBubyBkZXNpcmUgdG8gZWl0aGVyIHZhbGlkYXRlIG9yIG5vbWluYXRlLgDYRWZmZWN0cyB3aWxsIGJlIGZlbHQgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgbmV4dCBlcmEuAFEBVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8gYnkgdGhlIGNvbnRyb2xsZXIsIG5vdCB0aGUgc3Rhc2guADQjIyBDb21wbGV4aXR55C0gSW5kZXBlbmRlbnQgb2YgdGhlIGFyZ3VtZW50cy4gSW5zaWduaWZpY2FudCBjb21wbGV4aXR5LlAtIENvbnRhaW5zIG9uZSByZWFkLsQtIFdyaXRlcyBhcmUgbGltaXRlZCB0byB0aGUgYG9yaWdpbmAgYWNjb3VudCBrZXkuJHNldF9wYXllZQQBFHBheWVlAQcBfFJld2FyZERlc3RpbmF0aW9uPFQ6OkFjY291bnRJZD4ABxS0KFJlLSlzZXQgdGhlIHBheW1lbnQgdGFyZ2V0IGZvciBhIGNvbnRyb2xsZXIuAFEBRWZmZWN0cyB3aWxsIGJlIGZlbHQgaW5zdGFudGx5IChhcyBzb29uIGFzIHRoaXMgZnVuY3Rpb24gaXMgY29tcGxldGVkIHN1Y2Nlc3NmdWxseSkuAFEBVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8gYnkgdGhlIGNvbnRyb2xsZXIsIG5vdCB0aGUgc3Rhc2guOHNldF9jb250cm9sbGVyAAggRQEoUmUtKXNldHMgdGhlIGNvbnRyb2xsZXIgb2YgYSBzdGFzaCB0byB0aGUgc3Rhc2ggaXRzZWxmLiBUaGlzIGZ1bmN0aW9uIHByZXZpb3VzbHlNAWFjY2VwdGVkIGEgYGNvbnRyb2xsZXJgIGFyZ3VtZW50IHRvIHNldCB0aGUgY29udHJvbGxlciB0byBhbiBhY2NvdW50IG90aGVyIHRoYW4gdGhlWQFzdGFzaCBpdHNlbGYuIFRoaXMgZnVuY3Rpb25hbGl0eSBoYXMgbm93IGJlZW4gcmVtb3ZlZCwgbm93IG9ubHkgc2V0dGluZyB0aGUgY29udHJvbGxlcox0byB0aGUgc3Rhc2gsIGlmIGl0IGlzIG5vdCBhbHJlYWR5LgBRAUVmZmVjdHMgd2lsbCBiZSBmZWx0IGluc3RhbnRseSAoYXMgc29vbiBhcyB0aGlzIGZ1bmN0aW9uIGlzIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkpLgBRAVRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfIGJ5IHRoZSBzdGFzaCwgbm90IHRoZSBjb250cm9sbGVyLkxzZXRfdmFsaWRhdG9yX2NvdW50BAEMbmV3ZAEMdTMyAAkMkFNldHMgdGhlIGlkZWFsIG51bWJlciBvZiB2YWxpZGF0b3JzLgCEVGhlIGRpc3BhdGNoIG9yaWdpbiBtdXN0IGJlIFJvb3QuYGluY3JlYXNlX3ZhbGlkYXRvcl9jb3VudAQBKGFkZGl0aW9uYWxkAQx1MzIAChDoSW5jcmVtZW50cyB0aGUgaWRlYWwgbnVtYmVyIG9mIHZhbGlkYXRvcnMgdXAgdG8gbWF4aW11bSBvZlRgVDo6TWF4VmFsaWRhdG9yU2V0YC4AhFRoZSBkaXNwYXRjaCBvcmlnaW4gbXVzdCBiZSBSb290LlRzY2FsZV92YWxpZGF0b3JfY291bnQEARhmYWN0b3IRBwEcUGVyY2VudAALEBEBU2NhbGUgdXAgdGhlIGlkZWFsIG51bWJlciBvZiB2YWxpZGF0b3JzIGJ5IGEgZmFjdG9yIHVwIHRvIG1heGltdW0gb2ZUYFQ6Ok1heFZhbGlkYXRvclNldGAuAIRUaGUgZGlzcGF0Y2ggb3JpZ2luIG11c3QgYmUgUm9vdC40Zm9yY2Vfbm9fZXJhcwAMJKxGb3JjZSB0aGVyZSB0byBiZSBubyBuZXcgZXJhcyBpbmRlZmluaXRlbHkuAIRUaGUgZGlzcGF0Y2ggb3JpZ2luIG11c3QgYmUgUm9vdC4AJCMgV2FybmluZwAZAVRoZSBlbGVjdGlvbiBwcm9jZXNzIHN0YXJ0cyBtdWx0aXBsZSBibG9ja3MgYmVmb3JlIHRoZSBlbmQgb2YgdGhlIGVyYS45AVRodXMgdGhlIGVsZWN0aW9uIHByb2Nlc3MgbWF5IGJlIG9uZ29pbmcgd2hlbiB0aGlzIGlzIGNhbGxlZC4gSW4gdGhpcyBjYXNlIHRoZdxlbGVjdGlvbiB3aWxsIGNvbnRpbnVlIHVudGlsIHRoZSBuZXh0IGVyYSBpcyB0cmlnZ2VyZWQuNGZvcmNlX25ld19lcmEADShJAUZvcmNlIHRoZXJlIHRvIGJlIGEgbmV3IGVyYSBhdCB0aGUgZW5kIG9mIHRoZSBuZXh0IHNlc3Npb24uIEFmdGVyIHRoaXMsIGl0IHdpbGwgYmWccmVzZXQgdG8gbm9ybWFsIChub24tZm9yY2VkKSBiZWhhdmlvdXIuAIRUaGUgZGlzcGF0Y2ggb3JpZ2luIG11c3QgYmUgUm9vdC4AJCMgV2FybmluZwAZAVRoZSBlbGVjdGlvbiBwcm9jZXNzIHN0YXJ0cyBtdWx0aXBsZSBibG9ja3MgYmVmb3JlIHRoZSBlbmQgb2YgdGhlIGVyYS5JAUlmIHRoaXMgaXMgY2FsbGVkIGp1c3QgYmVmb3JlIGEgbmV3IGVyYSBpcyB0cmlnZ2VyZWQsIHRoZSBlbGVjdGlvbiBwcm9jZXNzIG1heSBub3SMaGF2ZSBlbm91Z2ggYmxvY2tzIHRvIGdldCBhIHJlc3VsdC40Zm9yY2VfdW5zdGFrZQgBFHN0YXNoBAEwVDo6QWNjb3VudElkAAFIbnVtX3NsYXNoaW5nX3NwYW5zOAEMdTMyAA8gCQFGb3JjZSBhIGN1cnJlbnQgc3Rha2VyIHRvIGJlY29tZSBjb21wbGV0ZWx5IHVuc3Rha2VkLCBpbW1lZGlhdGVseS4AhFRoZSBkaXNwYXRjaCBvcmlnaW4gbXVzdCBiZSBSb290LjQjIyBQYXJhbWV0ZXJzALAtIGBzdGFzaGA6IFRoZSBzdGFzaCBhY2NvdW50IHRvIGJlIHVuc3Rha2VkLj0BLSBgbnVtX3NsYXNoaW5nX3NwYW5zYDogKipEZXByZWNhdGVkKiouIFRoaXMgcGFyYW1ldGVyIGlzIHJldGFpbmVkIGZvciBiYWNrd2FyZKxjb21wYXRpYmlsaXR5LiBJdCBubyBsb25nZXIgaGFzIGFueSBlZmZlY3QuUGZvcmNlX25ld19lcmFfYWx3YXlzABAkAQFGb3JjZSB0aGVyZSB0byBiZSBhIG5ldyBlcmEgYXQgdGhlIGVuZCBvZiBzZXNzaW9ucyBpbmRlZmluaXRlbHkuAIRUaGUgZGlzcGF0Y2ggb3JpZ2luIG11c3QgYmUgUm9vdC4AJCMgV2FybmluZwAZAVRoZSBlbGVjdGlvbiBwcm9jZXNzIHN0YXJ0cyBtdWx0aXBsZSBibG9ja3MgYmVmb3JlIHRoZSBlbmQgb2YgdGhlIGVyYS5JAUlmIHRoaXMgaXMgY2FsbGVkIGp1c3QgYmVmb3JlIGEgbmV3IGVyYSBpcyB0cmlnZ2VyZWQsIHRoZSBlbGVjdGlvbiBwcm9jZXNzIG1heSBub3SMaGF2ZSBlbm91Z2ggYmxvY2tzIHRvIGdldCBhIHJlc3VsdC5UY2FuY2VsX2RlZmVycmVkX3NsYXNoCAEMZXJhOAEgRXJhSW5kZXgAAUR2YWxpZGF0b3Jfc2xhc2hlcxUHAXBWZWM8KFQ6OkFjY291bnRJZCwgUGVyYmlsbCk+ABEsCQFDYW5jZWxzIHNjaGVkdWxlZCBzbGFzaGVzIGZvciBhIGdpdmVuIGVyYSBiZWZvcmUgdGhleSBhcmUgYXBwbGllZC4AYQFUaGlzIGZ1bmN0aW9uIGFsbG93cyBgVDo6QWRtaW5PcmlnaW5gIHRvIGNhbmNlbCBwZW5kaW5nIHNsYXNoZXMgZm9yIHNwZWNpZmllZCB2YWxpZGF0b3JzSQFpbiBhIGdpdmVuIGVyYS4gVGhlIGNhbmNlbGxlZCBzbGFzaGVzIGFyZSBzdG9yZWQgYW5kIHdpbGwgYmUgY2hlY2tlZCB3aGVuIGFwcGx5aW5nIHNsYXNoZXMuADQjIyBQYXJhbWV0ZXJzVQEtIGBlcmFgOiBUaGUgc3Rha2luZyBlcmEgZm9yIHdoaWNoIHNsYXNoZXMgc2hvdWxkIGJlIGNhbmNlbGxlZC4gVGhpcyBpcyB0aGUgZXJhIHdoZXJlNQEgIHRoZSBzbGFzaCB3b3VsZCBiZSBhcHBsaWVkLCBub3QgdGhlIGVyYSBpbiB3aGljaCB0aGUgb2ZmZW5jZSB3YXMgY29tbWl0dGVkLlkBLSBgdmFsaWRhdG9yX3NsYXNoZXNgOiBBIGxpc3Qgb2YgdmFsaWRhdG9yIHN0YXNoIGFjY291bnRzIGFuZCB0aGVpciBzbGFzaCBmcmFjdGlvbnMgdG88ICBiZSBjYW5jZWxsZWQuOHBheW91dF9zdGFrZXJzCAE8dmFsaWRhdG9yX3N0YXNoBAEwVDo6QWNjb3VudElkAAEMZXJhOAEgRXJhSW5kZXgAEjQZAVBheSBvdXQgbmV4dCBwYWdlIG9mIHRoZSBzdGFrZXJzIGJlaGluZCBhIHZhbGlkYXRvciBmb3IgdGhlIGdpdmVuIGVyYS4A6C0gYHZhbGlkYXRvcl9zdGFzaGAgaXMgdGhlIHN0YXNoIGFjY291bnQgb2YgdGhlIHZhbGlkYXRvci4xAS0gYGVyYWAgbWF5IGJlIGFueSBlcmEgYmV0d2VlbiBgW2N1cnJlbnRfZXJhIC0gaGlzdG9yeV9kZXB0aDsgY3VycmVudF9lcmFdYC4AVQFUaGUgb3JpZ2luIG9mIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLiBBbnkgYWNjb3VudCBjYW4gY2FsbCB0aGlzIGZ1bmN0aW9uLCBldmVuIGlmdGl0IGlzIG5vdCBvbmUgb2YgdGhlIHN0YWtlcnMuAEkBVGhlIHJld2FyZCBwYXlvdXQgY291bGQgYmUgcGFnZWQgaW4gY2FzZSB0aGVyZSBhcmUgdG9vIG1hbnkgbm9taW5hdG9ycyBiYWNraW5nIHRoZV0BYHZhbGlkYXRvcl9zdGFzaGAuIFRoaXMgY2FsbCB3aWxsIHBheW91dCB1bnBhaWQgcGFnZXMgaW4gYW4gYXNjZW5kaW5nIG9yZGVyLiBUbyBjbGFpbSBhtHNwZWNpZmljIHBhZ2UsIHVzZSBgcGF5b3V0X3N0YWtlcnNfYnlfcGFnZWAuYADwSWYgYWxsIHBhZ2VzIGFyZSBjbGFpbWVkLCBpdCByZXR1cm5zIGFuIGVycm9yIGBJbnZhbGlkUGFnZWAuGHJlYm9uZAQBFHZhbHVlkQEBMEJhbGFuY2VPZjxUPgATDNxSZWJvbmQgYSBwb3J0aW9uIG9mIHRoZSBzdGFzaCBzY2hlZHVsZWQgdG8gYmUgdW5sb2NrZWQuANRUaGUgZGlzcGF0Y2ggb3JpZ2luIG11c3QgYmUgc2lnbmVkIGJ5IHRoZSBjb250cm9sbGVyLihyZWFwX3N0YXNoCAEUc3Rhc2gEATBUOjpBY2NvdW50SWQAAUhudW1fc2xhc2hpbmdfc3BhbnM4AQx1MzIAFEhdAVJlbW92ZSBhbGwgZGF0YSBzdHJ1Y3R1cmVzIGNvbmNlcm5pbmcgYSBzdGFrZXIvc3Rhc2ggb25jZSBpdCBpcyBhdCBhIHN0YXRlIHdoZXJlIGl0IGNhbgUBYmUgY29uc2lkZXJlZCBgZHVzdGAgaW4gdGhlIHN0YWtpbmcgc3lzdGVtLiBUaGUgcmVxdWlyZW1lbnRzIGFyZToALQExLiB0aGUgYHRvdGFsX2JhbGFuY2VgIG9mIHRoZSBzdGFzaCBpcyBiZWxvdyBgbWluX2NoaWxsZWRfYm9uZGAgb3IgaXMgemVyby45ATIuIG9yLCB0aGUgYGxlZGdlci50b3RhbGAgb2YgdGhlIHN0YXNoIGlzIGJlbG93IGBtaW5fY2hpbGxlZF9ib25kYCBvciBpcyB6ZXJvLgBVAVRoZSBmb3JtZXIgY2FuIGhhcHBlbiBpbiBjYXNlcyBsaWtlIGEgc2xhc2g7IHRoZSBsYXR0ZXIgd2hlbiBhIGZ1bGx5IHVuYm9uZGVkIGFjY291bnQJAWlzIHN0aWxsIHJlY2VpdmluZyBzdGFraW5nIHJld2FyZHMgaW4gYFJld2FyZERlc3RpbmF0aW9uOjpTdGFrZWRgLgAxAUl0IGNhbiBiZSBjYWxsZWQgYnkgYW55b25lLCBhcyBsb25nIGFzIGBzdGFzaGAgbWVldHMgdGhlIGFib3ZlIHJlcXVpcmVtZW50cy4A3FJlZnVuZHMgdGhlIHRyYW5zYWN0aW9uIGZlZXMgdXBvbiBzdWNjZXNzZnVsIGV4ZWN1dGlvbi4ANCMjIFBhcmFtZXRlcnMAqC0gYHN0YXNoYDogVGhlIHN0YXNoIGFjY291bnQgdG8gYmUgcmVhcGVkLj0BLSBgbnVtX3NsYXNoaW5nX3NwYW5zYDogKipEZXByZWNhdGVkKiouIFRoaXMgcGFyYW1ldGVyIGlzIHJldGFpbmVkIGZvciBiYWNrd2FyZKxjb21wYXRpYmlsaXR5LiBJdCBubyBsb25nZXIgaGFzIGFueSBlZmZlY3QuEGtpY2sEAQx3aG8NBwFkVmVjPEFjY291bnRJZExvb2t1cE9mPFQ+PgAVLOBSZW1vdmUgdGhlIGdpdmVuIG5vbWluYXRpb25zIGZyb20gdGhlIGNhbGxpbmcgdmFsaWRhdG9yLgDYRWZmZWN0cyB3aWxsIGJlIGZlbHQgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgbmV4dCBlcmEuAFEBVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8gYnkgdGhlIGNvbnRyb2xsZXIsIG5vdCB0aGUgc3Rhc2guAE0BLSBgd2hvYDogQSBsaXN0IG9mIG5vbWluYXRvciBzdGFzaCBhY2NvdW50cyB3aG8gYXJlIG5vbWluYXRpbmcgdGhpcyB2YWxpZGF0b3Igd2hpY2jAICBzaG91bGQgbm8gbG9uZ2VyIGJlIG5vbWluYXRpbmcgdGhpcyB2YWxpZGF0b3IuAFUBTm90ZTogTWFraW5nIHRoaXMgY2FsbCBvbmx5IG1ha2VzIHNlbnNlIGlmIHlvdSBmaXJzdCBzZXQgdGhlIHZhbGlkYXRvciBwcmVmZXJlbmNlcyB0b3hibG9jayBhbnkgZnVydGhlciBub21pbmF0aW9ucy5Mc2V0X3N0YWtpbmdfY29uZmlncyABSG1pbl9ub21pbmF0b3JfYm9uZB0HAVhDb25maWdPcDxCYWxhbmNlT2Y8VD4+AAFIbWluX3ZhbGlkYXRvcl9ib25kHQcBWENvbmZpZ09wPEJhbGFuY2VPZjxUPj4AAUxtYXhfbm9taW5hdG9yX2NvdW50IQcBNENvbmZpZ09wPHUzMj4AAUxtYXhfdmFsaWRhdG9yX2NvdW50IQcBNENvbmZpZ09wPHUzMj4AATxjaGlsbF90aHJlc2hvbGQlBwFEQ29uZmlnT3A8UGVyY2VudD4AAThtaW5fY29tbWlzc2lvbikHAURDb25maWdPcDxQZXJiaWxsPgABSG1heF9zdGFrZWRfcmV3YXJkcyUHAURDb25maWdPcDxQZXJjZW50PgABYGFyZV9ub21pbmF0b3JzX3NsYXNoYWJsZS0HAThDb25maWdPcDxib29sPgAWRKxVcGRhdGUgdGhlIHZhcmlvdXMgc3Rha2luZyBjb25maWd1cmF0aW9ucyAuACUBKiBgbWluX25vbWluYXRvcl9ib25kYDogVGhlIG1pbmltdW0gYWN0aXZlIGJvbmQgbmVlZGVkIHRvIGJlIGEgbm9taW5hdG9yLiUBKiBgbWluX3ZhbGlkYXRvcl9ib25kYDogVGhlIG1pbmltdW0gYWN0aXZlIGJvbmQgbmVlZGVkIHRvIGJlIGEgdmFsaWRhdG9yLlUBKiBgbWF4X25vbWluYXRvcl9jb3VudGA6IFRoZSBtYXggbnVtYmVyIG9mIHVzZXJzIHdobyBjYW4gYmUgYSBub21pbmF0b3IgYXQgb25jZS4gV2hlbpggIHNldCB0byBgTm9uZWAsIG5vIGxpbWl0IGlzIGVuZm9yY2VkLlUBKiBgbWF4X3ZhbGlkYXRvcl9jb3VudGA6IFRoZSBtYXggbnVtYmVyIG9mIHVzZXJzIHdobyBjYW4gYmUgYSB2YWxpZGF0b3IgYXQgb25jZS4gV2hlbpggIHNldCB0byBgTm9uZWAsIG5vIGxpbWl0IGlzIGVuZm9yY2VkLlkBKiBgY2hpbGxfdGhyZXNob2xkYDogVGhlIHJhdGlvIG9mIGBtYXhfbm9taW5hdG9yX2NvdW50YCBvciBgbWF4X3ZhbGlkYXRvcl9jb3VudGAgd2hpY2gZASAgc2hvdWxkIGJlIGZpbGxlZCBpbiBvcmRlciBmb3IgdGhlIGBjaGlsbF9vdGhlcmAgdHJhbnNhY3Rpb24gdG8gd29yay5hASogYG1pbl9jb21taXNzaW9uYDogVGhlIG1pbmltdW0gYW1vdW50IG9mIGNvbW1pc3Npb24gdGhhdCBlYWNoIHZhbGlkYXRvcnMgbXVzdCBtYWludGFpbi5VASAgVGhpcyBpcyBjaGVja2VkIG9ubHkgdXBvbiBjYWxsaW5nIGB2YWxpZGF0ZWAuIEV4aXN0aW5nIHZhbGlkYXRvcnMgYXJlIG5vdCBhZmZlY3RlZC4AxFJ1bnRpbWVPcmlnaW4gbXVzdCBiZSBSb290IHRvIGNhbGwgdGhpcyBmdW5jdGlvbi4ANQFOT1RFOiBFeGlzdGluZyBub21pbmF0b3JzIGFuZCB2YWxpZGF0b3JzIHdpbGwgbm90IGJlIGFmZmVjdGVkIGJ5IHRoaXMgdXBkYXRlLhEBdG8ga2ljayBwZW9wbGUgdW5kZXIgdGhlIG5ldyBsaW1pdHMsIGBjaGlsbF9vdGhlcmAgc2hvdWxkIGJlIGNhbGxlZC4sY2hpbGxfb3RoZXIEARRzdGFzaAQBMFQ6OkFjY291bnRJZAAXaEEBRGVjbGFyZSBhIGBjb250cm9sbGVyYCB0byBzdG9wIHBhcnRpY2lwYXRpbmcgYXMgZWl0aGVyIGEgdmFsaWRhdG9yIG9yIG5vbWluYXRvci4A2EVmZmVjdHMgd2lsbCBiZSBmZWx0IGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIG5leHQgZXJhLgBBAVRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLCBidXQgY2FuIGJlIGNhbGxlZCBieSBhbnlvbmUuAFkBSWYgdGhlIGNhbGxlciBpcyB0aGUgc2FtZSBhcyB0aGUgY29udHJvbGxlciBiZWluZyB0YXJnZXRlZCwgdGhlbiBubyBmdXJ0aGVyIGNoZWNrcyBhcmXYZW5mb3JjZWQsIGFuZCB0aGlzIGZ1bmN0aW9uIGJlaGF2ZXMganVzdCBsaWtlIGBjaGlsbGAuAF0BSWYgdGhlIGNhbGxlciBpcyBkaWZmZXJlbnQgdGhhbiB0aGUgY29udHJvbGxlciBiZWluZyB0YXJnZXRlZCwgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zMG11c3QgYmUgbWV0OgAdASogYGNvbnRyb2xsZXJgIG11c3QgYmVsb25nIHRvIGEgbm9taW5hdG9yIHdobyBoYXMgYmVjb21lIG5vbi1kZWNvZGFibGUsAAxPcjoAPQEqIEEgYENoaWxsVGhyZXNob2xkYCBtdXN0IGJlIHNldCBhbmQgY2hlY2tlZCB3aGljaCBkZWZpbmVzIGhvdyBjbG9zZSB0byB0aGUgbWF4VQEgIG5vbWluYXRvcnMgb3IgdmFsaWRhdG9ycyB3ZSBtdXN0IHJlYWNoIGJlZm9yZSB1c2VycyBjYW4gc3RhcnQgY2hpbGxpbmcgb25lLWFub3RoZXIuWQEqIEEgYE1heE5vbWluYXRvckNvdW50YCBhbmQgYE1heFZhbGlkYXRvckNvdW50YCBtdXN0IGJlIHNldCB3aGljaCBpcyB1c2VkIHRvIGRldGVybWluZZAgIGhvdyBjbG9zZSB3ZSBhcmUgdG8gdGhlIHRocmVzaG9sZC5dASogQSBgTWluTm9taW5hdG9yQm9uZGAgYW5kIGBNaW5WYWxpZGF0b3JCb25kYCBtdXN0IGJlIHNldCBhbmQgY2hlY2tlZCwgd2hpY2ggZGV0ZXJtaW5lc1EBICBpZiB0aGlzIGlzIGEgcGVyc29uIHRoYXQgc2hvdWxkIGJlIGNoaWxsZWQgYmVjYXVzZSB0aGV5IGhhdmUgbm90IG1ldCB0aGUgdGhyZXNob2xkQCAgYm9uZCByZXF1aXJlZC4AVQFUaGlzIGNhbiBiZSBoZWxwZnVsIGlmIGJvbmQgcmVxdWlyZW1lbnRzIGFyZSB1cGRhdGVkLCBhbmQgd2UgbmVlZCB0byByZW1vdmUgb2xkIHVzZXJzmHdobyBkbyBub3Qgc2F0aXNmeSB0aGVzZSByZXF1aXJlbWVudHMuaGZvcmNlX2FwcGx5X21pbl9jb21taXNzaW9uBAE8dmFsaWRhdG9yX3N0YXNoBAEwVDo6QWNjb3VudElkABgQOQFDbGFtcHMgYSB2YWxpZGF0b3IncyBjb21taXNzaW9uIHRvIHRoZSBgW01pbkNvbW1pc3Npb24sIE1heENvbW1pc3Npb25dYCByYW5nZS4AOQFOYW1lZCBgZm9yY2VfYXBwbHlfbWluX2NvbW1pc3Npb25gIGZvciBsZWdhY3kgcmVhc29ucyDigJQgaXQgYWxzbyBlbmZvcmNlcyB0aGWMbWF4aW11bS4gQW55IGFjY291bnQgY2FuIGNhbGwgdGhpcy5Ic2V0X21pbl9jb21taXNzaW9uBAEMbmV3PQUBHFBlcmJpbGwAGRAlAVNldHMgdGhlIG1pbmltdW0gYW1vdW50IG9mIGNvbW1pc3Npb24gdGhhdCBlYWNoIHZhbGlkYXRvcnMgbXVzdCBtYWludGFpbi4AWQFUaGlzIGNhbGwgaGFzIGxvd2VyIHByaXZpbGVnZSByZXF1aXJlbWVudHMgdGhhbiBgc2V0X3N0YWtpbmdfY29uZmlnYCBhbmQgY2FuIGJlIGNhbGxlZMxieSB0aGUgYFQ6OkFkbWluT3JpZ2luYC4gUm9vdCBjYW4gYWx3YXlzIGNhbGwgdGhpcy5YcGF5b3V0X3N0YWtlcnNfYnlfcGFnZQwBPHZhbGlkYXRvcl9zdGFzaAQBMFQ6OkFjY291bnRJZAABDGVyYTgBIEVyYUluZGV4AAEQcGFnZTgBEFBhZ2UAGlQxAVBheSBvdXQgYSBwYWdlIG9mIHRoZSBzdGFrZXJzIGJlaGluZCBhIHZhbGlkYXRvciBmb3IgdGhlIGdpdmVuIGVyYSBhbmQgcGFnZS4A6C0gYHZhbGlkYXRvcl9zdGFzaGAgaXMgdGhlIHN0YXNoIGFjY291bnQgb2YgdGhlIHZhbGlkYXRvci4xAS0gYGVyYWAgbWF5IGJlIGFueSBlcmEgYmV0d2VlbiBgW2N1cnJlbnRfZXJhIC0gaGlzdG9yeV9kZXB0aDsgY3VycmVudF9lcmFdYC4xAS0gYHBhZ2VgIGlzIHRoZSBwYWdlIGluZGV4IG9mIG5vbWluYXRvcnMgdG8gcGF5IG91dCB3aXRoIHZhbHVlIGJldHdlZW4gMCBhbmSwICBgbnVtX25vbWluYXRvcnMgLyBUOjpNYXhFeHBvc3VyZVBhZ2VTaXplYC4AVQFUaGUgb3JpZ2luIG9mIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLiBBbnkgYWNjb3VudCBjYW4gY2FsbCB0aGlzIGZ1bmN0aW9uLCBldmVuIGlmdGl0IGlzIG5vdCBvbmUgb2YgdGhlIHN0YWtlcnMuAD0BSWYgYSB2YWxpZGF0b3IgaGFzIG1vcmUgdGhhbiBbYENvbmZpZzo6TWF4RXhwb3N1cmVQYWdlU2l6ZWBdIG5vbWluYXRvcnMgYmFja2luZykBdGhlbSwgdGhlbiB0aGUgbGlzdCBvZiBub21pbmF0b3JzIGlzIHBhZ2VkLCB3aXRoIGVhY2ggcGFnZSBiZWluZyBjYXBwZWQgYXRVAVtgQ29uZmlnOjpNYXhFeHBvc3VyZVBhZ2VTaXplYF0uIElmIGEgdmFsaWRhdG9yIGhhcyBtb3JlIHRoYW4gb25lIHBhZ2Ugb2Ygbm9taW5hdG9ycyxJAXRoZSBjYWxsIG5lZWRzIHRvIGJlIG1hZGUgZm9yIGVhY2ggcGFnZSBzZXBhcmF0ZWx5IGluIG9yZGVyIGZvciBhbGwgdGhlIG5vbWluYXRvcnNVAWJhY2tpbmcgYSB2YWxpZGF0b3IgdG8gcmVjZWl2ZSB0aGUgcmV3YXJkLiBUaGUgbm9taW5hdG9ycyBhcmUgbm90IHNvcnRlZCBhY3Jvc3MgcGFnZXNhAWFuZCBzbyBpdCBzaG91bGQgbm90IGJlIGFzc3VtZWQgdGhlIGhpZ2hlc3Qgc3Rha2VyIHdvdWxkIGJlIG9uIHRoZSB0b3Btb3N0IHBhZ2UgYW5kIHZpY2VJAXZlcnNhLiBJZiByZXdhcmRzIGFyZSBub3QgY2xhaW1lZCBpbiBbYENvbmZpZzo6SGlzdG9yeURlcHRoYF0gZXJhcywgdGhleSBhcmUgbG9zdC4ASQFUaGUgdmFsaWRhdG9yJ3Mgb3duIHJld2FyZCAoY29tbWlzc2lvbiArIG93bi1zdGFrZSBzaGFyZSkgaXMgcHJvcmF0ZWQgYWNyb3NzIHBhZ2VzSQFwcm9wb3J0aW9uYWwgdG8gZWFjaCBwYWdlJ3Mgc3Rha2UuIFRoZSBmdWxsIHZhbGlkYXRvciByZXdhcmQgaXMgdGhlIHN1bSBhY3Jvc3MgYWxsGHBhZ2VzLjB1cGRhdGVfcGF5ZWUEAShjb250cm9sbGVyBAEwVDo6QWNjb3VudElkABsY4E1pZ3JhdGVzIGFuIGFjY291bnQncyBgUmV3YXJkRGVzdGluYXRpb246OkNvbnRyb2xsZXJgIHRvpGBSZXdhcmREZXN0aW5hdGlvbjo6QWNjb3VudChjb250cm9sbGVyKWAuAFEBRWZmZWN0cyB3aWxsIGJlIGZlbHQgaW5zdGFudGx5IChhcyBzb29uIGFzIHRoaXMgZnVuY3Rpb24gaXMgY29tcGxldGVkIHN1Y2Nlc3NmdWxseSkuADEBVGhpcyB3aWxsIHdhaXZlIHRoZSB0cmFuc2FjdGlvbiBmZWUgaWYgdGhlIGBwYXllZWAgaXMgc3VjY2Vzc2Z1bGx5IG1pZ3JhdGVkLmhkZXByZWNhdGVfY29udHJvbGxlcl9iYXRjaAQBLGNvbnRyb2xsZXJzMQcB9EJvdW5kZWRWZWM8VDo6QWNjb3VudElkLCBUOjpNYXhDb250cm9sbGVyc0luRGVwcmVjYXRpb25CYXRjaD4AHBxdAVVwZGF0ZXMgYSBiYXRjaCBvZiBjb250cm9sbGVyIGFjY291bnRzIHRvIHRoZWlyIGNvcnJlc3BvbmRpbmcgc3Rhc2ggYWNjb3VudCBpZiB0aGV5IGFyZWEBbm90IHRoZSBzYW1lLiBJZ25vcmVzIGFueSBjb250cm9sbGVyIGFjY291bnRzIHRoYXQgZG8gbm90IGV4aXN0LCBhbmQgZG9lcyBub3Qgb3BlcmF0ZSBpZrh0aGUgc3Rhc2ggYW5kIGNvbnRyb2xsZXIgYXJlIGFscmVhZHkgdGhlIHNhbWUuAFEBRWZmZWN0cyB3aWxsIGJlIGZlbHQgaW5zdGFudGx5IChhcyBzb29uIGFzIHRoaXMgZnVuY3Rpb24gaXMgY29tcGxldGVkIHN1Y2Nlc3NmdWxseSkuALRUaGUgZGlzcGF0Y2ggb3JpZ2luIG11c3QgYmUgYFQ6OkFkbWluT3JpZ2luYC44cmVzdG9yZV9sZWRnZXIQARRzdGFzaAQBMFQ6OkFjY291bnRJZAABQG1heWJlX2NvbnRyb2xsZXJBAQFQT3B0aW9uPFQ6OkFjY291bnRJZD4AASxtYXliZV90b3RhbGEEAVBPcHRpb248QmFsYW5jZU9mPFQ+PgABPG1heWJlX3VubG9ja2luZzUHARUBT3B0aW9uPEJvdW5kZWRWZWM8VW5sb2NrQ2h1bms8QmFsYW5jZU9mPFQ+PiwgVDo6Ck1heFVubG9ja2luZ0NodW5rcz4+AB0sBQFSZXN0b3JlcyB0aGUgc3RhdGUgb2YgYSBsZWRnZXIgd2hpY2ggaXMgaW4gYW4gaW5jb25zaXN0ZW50IHN0YXRlLgDcVGhlIHJlcXVpcmVtZW50cyB0byByZXN0b3JlIGEgbGVkZ2VyIGFyZSB0aGUgZm9sbG93aW5nOmQqIFRoZSBzdGFzaCBpcyBib25kZWQ7IG9yDQEqIFRoZSBzdGFzaCBpcyBub3QgYm9uZGVkIGJ1dCBpdCBoYXMgYSBzdGFraW5nIGxvY2sgbGVmdCBiZWhpbmQ7IG9yJQEqIElmIHRoZSBzdGFzaCBoYXMgYW4gYXNzb2NpYXRlZCBsZWRnZXIgYW5kIGl0cyBzdGF0ZSBpcyBpbmNvbnNpc3RlbnQ7IG9yHQEqIElmIHRoZSBsZWRnZXIgaXMgbm90IGNvcnJ1cHRlZCAqYnV0KiBpdHMgc3Rha2luZyBsb2NrIGlzIG91dCBvZiBzeW5jLgBhAVRoZSBgbWF5YmVfKmAgaW5wdXQgcGFyYW1ldGVycyB3aWxsIG92ZXJ3cml0ZSB0aGUgY29ycmVzcG9uZGluZyBkYXRhIGFuZCBtZXRhZGF0YSBvZiB0aGVZAWxlZGdlciBhc3NvY2lhdGVkIHdpdGggdGhlIHN0YXNoLiBJZiB0aGUgaW5wdXQgcGFyYW1ldGVycyBhcmUgbm90IHNldCwgdGhlIGxlZGdlciB3aWxskGJlIHJlc2V0IHZhbHVlcyBmcm9tIG9uLWNoYWluIHN0YXRlLkBtaWdyYXRlX2N1cnJlbmN5BAEUc3Rhc2gEATBUOjpBY2NvdW50SWQAHhzYTWlncmF0ZXMgcGVybWlzc2lvbmxlc3NseSBhIHN0YXNoIGZyb20gbG9ja3MgdG8gaG9sZHMuAEkBVGhpcyByZW1vdmVzIHRoZSBvbGQgbG9jayBvbiB0aGUgc3Rha2UgYW5kIGNyZWF0ZXMgYSBob2xkIG9uIGl0IGF0b21pY2FsbHkuIElmIGFsbGEBc3Rha2UgY2Fubm90IGJlIGhlbGQsIHRoZSBiZXN0IGVmZm9ydCBpcyBtYWRlIHRvIGhvbGQgYXMgbXVjaCBhcyBwb3NzaWJsZS4gVGhlIHJlbWFpbmluZ4RzdGFrZSBpcyByZW1vdmVkIGZyb20gdGhlIGxlZGdlci4AxFRoZSBmZWUgaXMgd2FpdmVkIGlmIHRoZSBtaWdyYXRpb24gaXMgc3VjY2Vzc2Z1bC4sYXBwbHlfc2xhc2gIASRzbGFzaF9lcmE4ASBFcmFJbmRleAABJHNsYXNoX2tleUUHAXAoVDo6QWNjb3VudElkLCBQZXJiaWxsLCB1MzIpAB+IHQFNYW51YWxseSBhbmQgcGVybWlzc2lvbmxlc3NseSBhcHBsaWVzIGEgZGVmZXJyZWQgc2xhc2ggZm9yIGEgZ2l2ZW4gZXJhLgBdAU5vcm1hbGx5LCBzbGFzaGVzIGFyZSBhdXRvbWF0aWNhbGx5IGFwcGxpZWQgc2hvcnRseSBhZnRlciB0aGUgc3RhcnQgb2YgdGhlIGBzbGFzaF9lcmFgLlkBVGhlIGF1dG9tYXRpYyBhcHBsaWNhdGlvbiBvZiBzbGFzaGVzIGlzIGhhbmRsZWQgYnkgdGhlIHBhbGxldCdzIGludGVybmFsIGxvZ2ljLCBhbmQgaXTMdHJpZXMgdG8gYXBwbHkgb25lIHNsYXNoIHBhZ2UgcGVyIGJsb2NrIG9mIHRoZSBlcmEuVQFJZiBmb3Igc29tZSByZWFzb24sIG9uZSBlcmEgaXMgbm90IGVub3VnaCBmb3IgYXBwbHlpbmcgYWxsIHNsYXNoIHBhZ2VzLCB0aGUgcmVtYWluaW5n3HNsYXNoZXMgbmVlZCB0byBiZSBtYW51YWxseSAocGVybWlzc2lvbmxlc3NseSkgYXBwbGllZC4ASQFGb3IgYSBnaXZlbiBlcmEgeCwgaWYgYXQgZXJhIHgrMSwgc2xhc2hlcyBhcmUgc3RpbGwgdW5hcHBsaWVkLCBhbGwgd2l0aGRyYXdhbHMgZ2V0IQFibG9ja2VkLCBhbmQgdGhlc2UgbmVlZCB0byBiZSBtYW51YWxseSBhcHBsaWVkIGJ5IGNhbGxpbmcgdGhpcyBmdW5jdGlvbi5NAVRoaXMgZnVuY3Rpb24gZXhpc3RzIGFzIGEgKipmYWxsYmFjayBtZWNoYW5pc20qKiBmb3IgdGhpcyBleHRyZW1lIHNpdHVhdGlvbiwgYnV0IHdlzG5ldmVyIGV4cGVjdCB0byBlbmNvdW50ZXIgdGhpcyBpbiBub3JtYWwgc2NlbmFyaW9zLgBhAVRoZSBwYXJhbWV0ZXJzIGZvciB0aGlzIGNhbGwgY2FuIGJlIHF1ZXJpZWQgYnkgbG9va2luZyBhdCB0aGUgYFVuYXBwbGllZFNsYXNoZXNgIHN0b3JhZ2WMZm9yIGVyYXMgb2xkZXIgdGhhbiB0aGUgYWN0aXZlIGVyYS4ANCMjIFBhcmFtZXRlcnNVAS0gYHNsYXNoX2VyYWA6IFRoZSBhcHBsaWNhdGlvbiBlcmEgKGBvZmZlbmNlX2VyYSArIFNsYXNoRGVmZXJEdXJhdGlvbmApLCBpLmUuIHRoZSBrZXlwICBpbnRvIFtgVW5hcHBsaWVkU2xhc2hlc2BdLiUBLSBgc2xhc2hfa2V5YDogQSB1bmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIHNsYXNoLCByZXByZXNlbnRlZCBhcyBhIHR1cGxlOvggIC0gYHN0YXNoYDogVGhlIHN0YXNoIGFjY291bnQgb2YgdGhlIHZhbGlkYXRvciBiZWluZyBzbGFzaGVkLgUBICAtIGBzbGFzaF9mcmFjdGlvbmA6IFRoZSBmcmFjdGlvbiBvZiB0aGUgc3Rha2UgdGhhdCB3YXMgc2xhc2hlZC4FASAgLSBgcGFnZV9pbmRleGA6IFRoZSBpbmRleCBvZiB0aGUgZXhwb3N1cmUgcGFnZSBiZWluZyBwcm9jZXNzZWQuACwjIyBCZWhhdmlvcugtIFRoZSBmdW5jdGlvbiBpcyAqKnBlcm1pc3Npb25sZXNzKirigJRhbnlvbmUgY2FuIGNhbGwgaXQu8C0gVGhlIGBzbGFzaF9lcmFgICoqbXVzdCBiZSB0aGUgY3VycmVudCBlcmEgb3IgYSBwYXN0IGVyYSoqLmxJZiBpdCBpcyBpbiB0aGUgZnV0dXJlLCB0aGWIICBjYWxsIGZhaWxzIHdpdGggYEVyYU5vdFN0YXJ0ZWRgLuQtIFRoZSBmZWUgaXMgd2FpdmVkIGlmIHRoZSBzbGFzaCBpcyBzdWNjZXNzZnVsbHkgYXBwbGllZC4AVCMjIEZ1dHVyZSBJbXByb3ZlbWVudGEBLSBJbXBsZW1lbnQgYW4gKipvZmYtY2hhaW4gd29ya2VyIChPQ1cpIHRhc2sqKiB0byBhdXRvbWF0aWNhbGx5IGFwcGx5IHNsYXNoZXMgd2hlbiB0aGVyZbggIGlzIHVudXNlZCBibG9jayBzcGFjZSwgaW1wcm92aW5nIGVmZmljaWVuY3kuOHBydW5lX2VyYV9zdGVwBAEMZXJhOAEgRXJhSW5kZXgAICxhAVBlcmZvcm0gb25lIHN0ZXAgb2YgZXJhIHBydW5pbmcgdG8gcHJldmVudCBQb1Ygc2l6ZSBleGhhdXN0aW9uIGZyb20gdW5ib3VuZGVkIGRlbGV0aW9ucy4AMQFUaGlzIGV4dHJpbnNpYyBlbmFibGVzIHBlcm1pc3Npb25sZXNzIGxhenkgcHJ1bmluZyBvZiBlcmEgZGF0YSBieSBwZXJmb3JtaW5nLQFpbmNyZW1lbnRhbCBkZWxldGlvbiBvZiBzdG9yYWdlIGl0ZW1zLiBFYWNoIGNhbGwgcHJvY2Vzc2VzIGEgbGltaXRlZCBudW1iZXIlAW9mIGl0ZW1zIGJhc2VkIG9uIGF2YWlsYWJsZSBibG9jayB3ZWlnaHQgdG8gYXZvaWQgZXhjZWVkaW5nIGJsb2NrIGxpbWl0cy4ANQFSZXR1cm5zIGBQYXlzOjpOb2Agd2hlbiB3b3JrIGlzIHBlcmZvcm1lZCB0byBpbmNlbnRpdml6ZSByZWd1bGFyIG1haW50ZW5hbmNlLgUBQW55b25lIGNhbiBjYWxsIHRoaXMgdG8gaGVscCBtYWludGFpbiB0aGUgY2hhaW4ncyBzdG9yYWdlIGhlYWx0aC4ADQFUaGUgZXJhIG11c3QgYmUgZWxpZ2libGUgZm9yIHBydW5pbmcgKG9sZGVyIHRoYW4gSGlzdG9yeURlcHRoICsgMSkuOQFDaGVjayBgRXJhUHJ1bmluZ1N0YXRlYCBzdG9yYWdlIHRvIHNlZSBpZiBhbiBlcmEgbmVlZHMgcHJ1bmluZyBiZWZvcmUgY2FsbGluZy5Ic2V0X21heF9jb21taXNzaW9uBAEMbmV3PQUBHFBlcmJpbGwAIQzQU2V0cyB0aGUgbWF4aW11bSBjb21taXNzaW9uIHRoYXQgdmFsaWRhdG9ycyBjYW4gc2V0LgC0VGhlIGRpc3BhdGNoIG9yaWdpbiBtdXN0IGJlIGBUOjpBZG1pbk9yaWdpbmAupHNldF92YWxpZGF0b3Jfc2VsZl9zdGFrZV9pbmNlbnRpdmVfY29uZmlnDAFIb3B0aW11bV9zZWxmX3N0YWtlHQcBWENvbmZpZ09wPEJhbGFuY2VPZjxUPj4AAUxoYXJkX2NhcF9zZWxmX3N0YWtlHQcBWENvbmZpZ09wPEJhbGFuY2VPZjxUPj4AAVxzZWxmX3N0YWtlX3Nsb3BlX2ZhY3RvcikHAURDb25maWdPcDxQZXJiaWxsPgAiFOBDb25maWd1cmUgdGhlIHZhbGlkYXRvciBzZWxmLXN0YWtlIGluY2VudGl2ZSBwYXJhbWV0ZXJzLgC0VGhlIGRpc3BhdGNoIG9yaWdpbiBtdXN0IGJlIGBUOjpBZG1pbk9yaWdpbmAuAAEBQ2hhbmdlcyB0YWtlIGVmZmVjdCBpbiB0aGUgbmV4dCBlcmEgd2hlbiByZXdhcmRzIGFyZSBjYWxjdWxhdGVkLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy4BBwhQcGFsbGV0X3N0YWtpbmdfYXN5bmNEUmV3YXJkRGVzdGluYXRpb24EJEFjY291bnRJZAEEARQYU3Rha2VkAAAAFFN0YXNoAAEAKENvbnRyb2xsZXIAAgAcQWNjb3VudAQABAEkQWNjb3VudElkAAMAEE5vbmUABAAABQcIUHBhbGxldF9zdGFraW5nX2FzeW5jOFZhbGlkYXRvclByZWZzAAAIAShjb21taXNzaW9uCQcBHFBlcmJpbGwAARxibG9ja2VkmQEBEGJvb2wAAAkHAAAGPQUADQcAAAIAABEHDDRzcF9hcml0aG1ldGljKHBlcl90aGluZ3McUGVyY2VudAAABAAMAQh1OAAAFQcAAAIZBwAZBwAABAgEPQUAHQcQUHBhbGxldF9zdGFraW5nX2FzeW5jGHBhbGxldBhwYWxsZXQgQ29uZmlnT3AEBFQBlQEBDBBOb29wAAAADFNldAQAlQEBBFQAAQAYUmVtb3ZlAAIAACEHEFBwYWxsZXRfc3Rha2luZ19hc3luYxhwYWxsZXQYcGFsbGV0IENvbmZpZ09wBARUATgBDBBOb29wAAAADFNldAQAOAEEVAABABhSZW1vdmUAAgAAJQcQUHBhbGxldF9zdGFraW5nX2FzeW5jGHBhbGxldBhwYWxsZXQgQ29uZmlnT3AEBFQBEQcBDBBOb29wAAAADFNldAQAEQcBBFQAAQAYUmVtb3ZlAAIAACkHEFBwYWxsZXRfc3Rha2luZ19hc3luYxhwYWxsZXQYcGFsbGV0IENvbmZpZ09wBARUAT0FAQwQTm9vcAAAAAxTZXQEAD0FAQRUAAEAGFJlbW92ZQACAAAtBxBQcGFsbGV0X3N0YWtpbmdfYXN5bmMYcGFsbGV0GHBhbGxldCBDb25maWdPcAQEVAGZAQEMEE5vb3AAAAAMU2V0BACZAQEEVAABABhSZW1vdmUAAgAAMQcMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEEBFMAAAQAnQEBGFZlYzxUPgAANQcEGE9wdGlvbgQEVAE5BwEIEE5vbmUAAAAQU29tZQQAOQcAAAEAADkHDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBPQcEUwAABABBBwEYVmVjPFQ+AAA9BwxQcGFsbGV0X3N0YWtpbmdfYXN5bmMYbGVkZ2VyLFVubG9ja0NodW5rBBxCYWxhbmNlAZUBAAgBFHZhbHVlkQEBHEJhbGFuY2UAAQxlcmFkASBFcmFJbmRleAAAQQcAAAI9BwBFBwAABAwEPQU4AEkHDDxwYWxsZXRfdHJlYXN1cnkYcGFsbGV0EENhbGwIBFQABEkAARgsc3BlbmRfbG9jYWwIARhhbW91bnSRAQE8QmFsYW5jZU9mPFQsIEk+AAEsYmVuZWZpY2lhcnkAAVBBY2NvdW50SWRMb29rdXBPZjxUPgADRLhQcm9wb3NlIGFuZCBhcHByb3ZlIGEgc3BlbmQgb2YgdHJlYXN1cnkgZnVuZHMuAEgjIyBEaXNwYXRjaCBPcmlnaW4ARQFNdXN0IGJlIFtgQ29uZmlnOjpTcGVuZE9yaWdpbmBdIHdpdGggdGhlIGBTdWNjZXNzYCB2YWx1ZSBiZWluZyBhdCBsZWFzdCBgYW1vdW50YC4ALCMjIyBEZXRhaWxzRQFOT1RFOiBGb3IgcmVjb3JkLWtlZXBpbmcgcHVycG9zZXMsIHRoZSBwcm9wb3NlciBpcyBkZWVtZWQgdG8gYmUgZXF1aXZhbGVudCB0byB0aGUwYmVuZWZpY2lhcnkuADgjIyMgUGFyYW1ldGVyc0EBLSBgYW1vdW50YDogVGhlIGFtb3VudCB0byBiZSB0cmFuc2ZlcnJlZCBmcm9tIHRoZSB0cmVhc3VyeSB0byB0aGUgYGJlbmVmaWNpYXJ5YC7oLSBgYmVuZWZpY2lhcnlgOiBUaGUgZGVzdGluYXRpb24gYWNjb3VudCBmb3IgdGhlIHRyYW5zZmVyLgAkIyMgRXZlbnRzALRFbWl0cyBbYEV2ZW50OjpTcGVuZEFwcHJvdmVkYF0gaWYgc3VjY2Vzc2Z1bC48cmVtb3ZlX2FwcHJvdmFsBAEscHJvcG9zYWxfaWRkATRQcm9wb3NhbEluZGV4AARULQFGb3JjZSBhIHByZXZpb3VzbHkgYXBwcm92ZWQgcHJvcG9zYWwgdG8gYmUgcmVtb3ZlZCBmcm9tIHRoZSBhcHByb3ZhbCBxdWV1ZS4ASCMjIERpc3BhdGNoIE9yaWdpbgCETXVzdCBiZSBbYENvbmZpZzo6UmVqZWN0T3JpZ2luYF0uACgjIyBEZXRhaWxzAMBUaGUgb3JpZ2luYWwgZGVwb3NpdCB3aWxsIG5vIGxvbmdlciBiZSByZXR1cm5lZC4AOCMjIyBQYXJhbWV0ZXJzoC0gYHByb3Bvc2FsX2lkYDogVGhlIGluZGV4IG9mIGEgcHJvcG9zYWwAOCMjIyBDb21wbGV4aXR5rC0gTyhBKSB3aGVyZSBgQWAgaXMgdGhlIG51bWJlciBvZiBhcHByb3ZhbHMAKCMjIyBFcnJvcnNFAS0gW2BFcnJvcjo6UHJvcG9zYWxOb3RBcHByb3ZlZGBdOiBUaGUgYHByb3Bvc2FsX2lkYCBzdXBwbGllZCB3YXMgbm90IGZvdW5kIGluIHRoZVEBICBhcHByb3ZhbCBxdWV1ZSwgaS5lLiwgdGhlIHByb3Bvc2FsIGhhcyBub3QgYmVlbiBhcHByb3ZlZC4gVGhpcyBjb3VsZCBhbHNvIG1lYW4gdGhlWQEgIHByb3Bvc2FsIGRvZXMgbm90IGV4aXN0IGFsdG9nZXRoZXIsIHRodXMgdGhlcmUgaXMgbm8gd2F5IGl0IHdvdWxkIGhhdmUgYmVlbiBhcHByb3ZlZFQgIGluIHRoZSBmaXJzdCBwbGFjZS4Uc3BlbmQQAShhc3NldF9raW5kTQcBREJveDxUOjpBc3NldEtpbmQ+AAEYYW1vdW50kQEBUEFzc2V0QmFsYW5jZU9mPFQsIEk+AAEsYmVuZWZpY2lhcnlRBwF4Qm94PEJlbmVmaWNpYXJ5TG9va3VwT2Y8VCwgST4+AAEodmFsaWRfZnJvbdgBcE9wdGlvbjxCbG9ja051bWJlckZvcjxULCBJPj4ABWi4UHJvcG9zZSBhbmQgYXBwcm92ZSBhIHNwZW5kIG9mIHRyZWFzdXJ5IGZ1bmRzLgBIIyMgRGlzcGF0Y2ggT3JpZ2luAB0BTXVzdCBiZSBbYENvbmZpZzo6U3BlbmRPcmlnaW5gXSB3aXRoIHRoZSBgU3VjY2Vzc2AgdmFsdWUgYmVpbmcgYXQgbGVhc3RVAWBhbW91bnRgIG9mIGBhc3NldF9raW5kYCBpbiB0aGUgbmF0aXZlIGFzc2V0LiBUaGUgYW1vdW50IG9mIGBhc3NldF9raW5kYCBpcyBjb252ZXJ0ZWTUZm9yIGFzc2VydGlvbiB1c2luZyB0aGUgW2BDb25maWc6OkJhbGFuY2VDb252ZXJ0ZXJgXS4AKCMjIERldGFpbHMASQFDcmVhdGUgYW4gYXBwcm92ZWQgc3BlbmQgZm9yIHRyYW5zZmVycmluZyBhIHNwZWNpZmljIGBhbW91bnRgIG9mIGBhc3NldF9raW5kYCB0byBhYQFkZXNpZ25hdGVkIGJlbmVmaWNpYXJ5LiBUaGUgc3BlbmQgbXVzdCBiZSBjbGFpbWVkIHVzaW5nIHRoZSBgcGF5b3V0YCBkaXNwYXRjaGFibGUgd2l0aGludHRoZSBbYENvbmZpZzo6UGF5b3V0UGVyaW9kYF0uADgjIyMgUGFyYW1ldGVycxUBLSBgYXNzZXRfa2luZGA6IEFuIGluZGljYXRvciBvZiB0aGUgc3BlY2lmaWMgYXNzZXQgY2xhc3MgdG8gYmUgc3BlbnQuQQEtIGBhbW91bnRgOiBUaGUgYW1vdW50IHRvIGJlIHRyYW5zZmVycmVkIGZyb20gdGhlIHRyZWFzdXJ5IHRvIHRoZSBgYmVuZWZpY2lhcnlgLrgtIGBiZW5lZmljaWFyeWA6IFRoZSBiZW5lZmljaWFyeSBvZiB0aGUgc3BlbmQuVQEtIGB2YWxpZF9mcm9tYDogVGhlIGJsb2NrIG51bWJlciBmcm9tIHdoaWNoIHRoZSBzcGVuZCBjYW4gYmUgY2xhaW1lZC4gSXQgY2FuIHJlZmVyIHRvGQEgIHRoZSBwYXN0IGlmIHRoZSByZXN1bHRpbmcgc3BlbmQgaGFzIG5vdCB5ZXQgZXhwaXJlZCBhY2NvcmRpbmcgdG8gdGhlRQEgIFtgQ29uZmlnOjpQYXlvdXRQZXJpb2RgXS4gSWYgYE5vbmVgLCB0aGUgc3BlbmQgY2FuIGJlIGNsYWltZWQgaW1tZWRpYXRlbHkgYWZ0ZXIsICBhcHByb3ZhbC4AJCMjIEV2ZW50cwDIRW1pdHMgW2BFdmVudDo6QXNzZXRTcGVuZEFwcHJvdmVkYF0gaWYgc3VjY2Vzc2Z1bC4YcGF5b3V0BAEUaW5kZXg4AShTcGVuZEluZGV4AAZMOENsYWltIGEgc3BlbmQuAEgjIyBEaXNwYXRjaCBPcmlnaW4AOE11c3QgYmUgc2lnbmVkACgjIyBEZXRhaWxzAFUBU3BlbmRzIG11c3QgYmUgY2xhaW1lZCB3aXRoaW4gc29tZSB0ZW1wb3JhbCBib3VuZHMuIEEgc3BlbmQgbWF5IGJlIGNsYWltZWQgd2l0aGluIG9uZdRbYENvbmZpZzo6UGF5b3V0UGVyaW9kYF0gZnJvbSB0aGUgYHZhbGlkX2Zyb21gIGJsb2NrLlUBSW4gY2FzZSBvZiBhIHBheW91dCBmYWlsdXJlLCB0aGUgc3BlbmQgc3RhdHVzIG11c3QgYmUgdXBkYXRlZCB3aXRoIHRoZSBgY2hlY2tfc3RhdHVzYNxkaXNwYXRjaGFibGUgYmVmb3JlIHJldHJ5aW5nIHdpdGggdGhlIGN1cnJlbnQgZnVuY3Rpb24uADgjIyMgUGFyYW1ldGVyc2wtIGBpbmRleGA6IFRoZSBzcGVuZCBpbmRleC4AJCMjIEV2ZW50cwCQRW1pdHMgW2BFdmVudDo6UGFpZGBdIGlmIHN1Y2Nlc3NmdWwuMGNoZWNrX3N0YXR1cwQBFGluZGV4OAEoU3BlbmRJbmRleAAHTCkBQ2hlY2sgdGhlIHN0YXR1cyBvZiB0aGUgc3BlbmQgYW5kIHJlbW92ZSBpdCBmcm9tIHRoZSBzdG9yYWdlIGlmIHByb2Nlc3NlZC4ASCMjIERpc3BhdGNoIE9yaWdpbgA8TXVzdCBiZSBzaWduZWQuACgjIyBEZXRhaWxzAAEBVGhlIHN0YXR1cyBjaGVjayBpcyBhIHByZXJlcXVpc2l0ZSBmb3IgcmV0cnlpbmcgYSBmYWlsZWQgcGF5b3V0LkkBSWYgYSBzcGVuZCBoYXMgZWl0aGVyIHN1Y2NlZWRlZCBvciBleHBpcmVkLCBpdCBpcyByZW1vdmVkIGZyb20gdGhlIHN0b3JhZ2UgYnkgdGhpc+xmdW5jdGlvbi4gSW4gc3VjaCBpbnN0YW5jZXMsIHRyYW5zYWN0aW9uIGZlZXMgYXJlIHJlZnVuZGVkLgA4IyMjIFBhcmFtZXRlcnNsLSBgaW5kZXhgOiBUaGUgc3BlbmQgaW5kZXguACQjIyBFdmVudHMA+EVtaXRzIFtgRXZlbnQ6OlBheW1lbnRGYWlsZWRgXSBpZiB0aGUgc3BlbmQgcGF5b3V0IGhhcyBmYWlsZWQuAQFFbWl0cyBbYEV2ZW50OjpTcGVuZFByb2Nlc3NlZGBdIGlmIHRoZSBzcGVuZCBwYXlvdXQgaGFzIHN1Y2NlZWQuKHZvaWRfc3BlbmQEARRpbmRleDgBKFNwZW5kSW5kZXgACEB8Vm9pZCBwcmV2aW91c2x5IGFwcHJvdmVkIHNwZW5kLgBIIyMgRGlzcGF0Y2ggT3JpZ2luAIRNdXN0IGJlIFtgQ29uZmlnOjpSZWplY3RPcmlnaW5gXS4AKCMjIERldGFpbHMAHQFBIHNwZW5kIHZvaWQgaXMgb25seSBwb3NzaWJsZSBpZiB0aGUgcGF5b3V0IGhhcyBub3QgYmVlbiBhdHRlbXB0ZWQgeWV0LgA4IyMjIFBhcmFtZXRlcnNsLSBgaW5kZXhgOiBUaGUgc3BlbmQgaW5kZXguACQjIyBFdmVudHMAwEVtaXRzIFtgRXZlbnQ6OkFzc2V0U3BlbmRWb2lkZWRgXSBpZiBzdWNjZXNzZnVsLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy5NBwxccG9sa2Fkb3RfcnVudGltZV9jb21tb24UaW1wbHNcVmVyc2lvbmVkTG9jYXRhYmxlQXNzZXQAAQwIVjMIASBsb2NhdGlvbukBAUR4Y206OnYzOjpMb2NhdGlvbgABIGFzc2V0X2lkiQIBQHhjbTo6djM6OkFzc2V0SWQAAwAIVjQIASBsb2NhdGlvbgUCAUR4Y206OnY0OjpMb2NhdGlvbgABIGFzc2V0X2lk/QIBQHhjbTo6djQ6OkFzc2V0SWQABAAIVjUIASBsb2NhdGlvbjkCAUR4Y206OnY1OjpMb2NhdGlvbgABIGFzc2V0X2lkSQMBQHhjbTo6djU6OkFzc2V0SWQABQAAUQcMRHBhcmFjaGFpbnNfY29tbW9uDHBheWRWZXJzaW9uZWRMb2NhdGFibGVBY2NvdW50AAEICFY0CAEgbG9jYXRpb24FAgFEeGNtOjp2NDo6TG9jYXRpb24AAShhY2NvdW50X2lkBQIBRHhjbTo6djQ6OkxvY2F0aW9uAAQACFY1CAEgbG9jYXRpb245AgFEeGNtOjp2NTo6TG9jYXRpb24AAShhY2NvdW50X2lkOQIBRHhjbTo6djU6OkxvY2F0aW9uAAUAAFUHDGBwYWxsZXRfY29udmljdGlvbl92b3RpbmcYcGFsbGV0EENhbGwIBFQABEkAARgQdm90ZQgBKHBvbGxfaW5kZXhkAURQb2xsSW5kZXhPZjxULCBJPgABEHZvdGVZBwFwQWNjb3VudFZvdGU8QmFsYW5jZU9mPFQsIEk+PgAAJBkBVm90ZSBpbiBhIHBvbGwuIElmIGB2b3RlLmlzX2F5ZSgpYCwgdGhlIHZvdGUgaXMgdG8gZW5hY3QgdGhlIHByb3Bvc2FsO7hvdGhlcndpc2UgaXQgaXMgYSB2b3RlIHRvIGtlZXAgdGhlIHN0YXR1cyBxdW8uAMhUaGUgZGlzcGF0Y2ggb3JpZ2luIG9mIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLgDILSBgcG9sbF9pbmRleGA6IFRoZSBpbmRleCBvZiB0aGUgcG9sbCB0byB2b3RlIGZvci6ELSBgdm90ZWA6IFRoZSB2b3RlIGNvbmZpZ3VyYXRpb24uABUBV2VpZ2h0OiBgTyhSKWAgd2hlcmUgUiBpcyB0aGUgbnVtYmVyIG9mIHBvbGxzIHRoZSB2b3RlciBoYXMgdm90ZWQgb24uIGRlbGVnYXRlEAEUY2xhc3P5AwE0Q2xhc3NPZjxULCBJPgABCHRvAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AAShjb252aWN0aW9uYQcBKENvbnZpY3Rpb24AARxiYWxhbmNllQEBPEJhbGFuY2VPZjxULCBJPgABXE0BRGVsZWdhdGUgdGhlIHZvdGluZyBwb3dlciAod2l0aCBzb21lIGdpdmVuIGNvbnZpY3Rpb24pIG9mIHRoZSBzZW5kaW5nIGFjY291bnQgZm9yIGFocGFydGljdWxhciBjbGFzcyBvZiBwb2xscy4AVQFUaGUgYmFsYW5jZSBkZWxlZ2F0ZWQgaXMgbG9ja2VkIGZvciBhcyBsb25nIGFzIGl0J3MgZGVsZWdhdGVkLCBhbmQgdGhlcmVhZnRlciBmb3IgdGhlyHRpbWUgYXBwcm9wcmlhdGUgZm9yIHRoZSBjb252aWN0aW9uJ3MgbG9jayBwZXJpb2QuAF0BVGhlIGRpc3BhdGNoIG9yaWdpbiBvZiB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXywgYW5kIHRoZSBzaWduaW5nIGFjY291bnQgbXVzdCBlaXRoZXI6dCAgLSBiZSBkZWxlZ2F0aW5nIGFscmVhZHk7IG9yRQEgIC0gaGF2ZSBubyB2b3RpbmcgYWN0aXZpdHkgKGlmIHRoZXJlIGlzLCB0aGVuIGl0IHdpbGwgbmVlZCB0byBiZSByZW1vdmVkIHRocm91Z2hMICAgIGByZW1vdmVfdm90ZWApLgBFAS0gYHRvYDogVGhlIGFjY291bnQgd2hvc2Ugdm90aW5nIHRoZSBgdGFyZ2V0YCBhY2NvdW50J3Mgdm90aW5nIHBvd2VyIHdpbGwgZm9sbG93Ll0BLSBgY2xhc3NgOiBUaGUgY2xhc3Mgb2YgcG9sbHMgdG8gZGVsZWdhdGUuIFRvIGRlbGVnYXRlIG11bHRpcGxlIGNsYXNzZXMsIG11bHRpcGxlIGNhbGxzgCAgdG8gdGhpcyBmdW5jdGlvbiBhcmUgcmVxdWlyZWQuVQEtIGBjb252aWN0aW9uYDogVGhlIGNvbnZpY3Rpb24gdGhhdCB3aWxsIGJlIGF0dGFjaGVkIHRvIHRoZSBkZWxlZ2F0ZWQgdm90ZXMuIFdoZW4gdGhlQQEgIGFjY291bnQgaXMgdW5kZWxlZ2F0ZWQsIHRoZSBmdW5kcyB3aWxsIGJlIGxvY2tlZCBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgcGVyaW9kLmEBLSBgYmFsYW5jZWA6IFRoZSBhbW91bnQgb2YgdGhlIGFjY291bnQncyBiYWxhbmNlIHRvIGJlIHVzZWQgaW4gZGVsZWdhdGluZy4gVGhpcyBtdXN0IG5vdLQgIGJlIG1vcmUgdGhhbiB0aGUgYWNjb3VudCdzIGN1cnJlbnQgYmFsYW5jZS4ASEVtaXRzIGBEZWxlZ2F0ZWRgLgAlAVdlaWdodDogYE8oUilgIHdoZXJlIFIgaXMgdGhlIG51bWJlciBvZiBwb2xscyB0aGUgdm90ZXIgZGVsZWdhdGluZyB0byBoYXNNASAgdm90ZWQgb24uIFdlaWdodCBpcyBpbml0aWFsbHkgY2hhcmdlZCBhcyBpZiBtYXhpbXVtIHZvdGVzLCBidXQgaXMgcmVmdW5kZWQgbGF0ZXIuKHVuZGVsZWdhdGUEARRjbGFzc/kDATRDbGFzc09mPFQsIEk+AAI4TQFVbmRlbGVnYXRlIHRoZSB2b3RpbmcgcG93ZXIgb2YgdGhlIHNlbmRpbmcgYWNjb3VudCBmb3IgYSBwYXJ0aWN1bGFyIGNsYXNzIG9mIHBvbGxzLgBdAVRva2VucyBtYXkgYmUgdW5sb2NrZWQgZm9sbG93aW5nIG9uY2UgYW4gYW1vdW50IG9mIHRpbWUgY29uc2lzdGVudCB3aXRoIHRoZSBsb2NrIHBlcmlvZAkBb2YgdGhlIGNvbnZpY3Rpb24gd2l0aCB3aGljaCB0aGUgZGVsZWdhdGlvbiB3YXMgaXNzdWVkIGhhcyBwYXNzZWQuAEUBVGhlIGRpc3BhdGNoIG9yaWdpbiBvZiB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXyBhbmQgdGhlIHNpZ25pbmcgYWNjb3VudCBtdXN0IGJlVGN1cnJlbnRseSBkZWxlZ2F0aW5nLgDwLSBgY2xhc3NgOiBUaGUgY2xhc3Mgb2YgcG9sbHMgdG8gcmVtb3ZlIHRoZSBkZWxlZ2F0aW9uIGZyb20uAFBFbWl0cyBgVW5kZWxlZ2F0ZWRgLgAlAVdlaWdodDogYE8oUilgIHdoZXJlIFIgaXMgdGhlIG51bWJlciBvZiBwb2xscyB0aGUgdm90ZXIgZGVsZWdhdGluZyB0byBoYXNNASAgdm90ZWQgb24uIFdlaWdodCBpcyBpbml0aWFsbHkgY2hhcmdlZCBhcyBpZiBtYXhpbXVtIHZvdGVzLCBidXQgaXMgcmVmdW5kZWQgbGF0ZXIuGHVubG9jawgBFGNsYXNz+QMBNENsYXNzT2Y8VCwgST4AARh0YXJnZXQAAVBBY2NvdW50SWRMb29rdXBPZjxUPgADJF0BUmVtb3ZlIHRoZSBsb2NrIGNhdXNlZCBieSBwcmlvciB2b3RpbmcvZGVsZWdhdGluZyB3aGljaCBoYXMgZXhwaXJlZCB3aXRoaW4gYSBwYXJ0aWN1bGFyGGNsYXNzLgDIVGhlIGRpc3BhdGNoIG9yaWdpbiBvZiB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4AoC0gYGNsYXNzYDogVGhlIGNsYXNzIG9mIHBvbGxzIHRvIHVubG9jay64LSBgdGFyZ2V0YDogVGhlIGFjY291bnQgdG8gcmVtb3ZlIHRoZSBsb2NrIG9uLgC8V2VpZ2h0OiBgTyhSKWAgd2l0aCBSIG51bWJlciBvZiB2b3RlIG9mIHRhcmdldC4scmVtb3ZlX3ZvdGUIARRjbGFzc2UHAVRPcHRpb248Q2xhc3NPZjxULCBJPj4AARRpbmRleDgBRFBvbGxJbmRleE9mPFQsIEk+AAR0ZFJlbW92ZSBhIHZvdGUgZm9yIGEgcG9sbC4ADElmOnAtIHRoZSBwb2xsIHdhcyBjYW5jZWxsZWQsIG9yZC0gdGhlIHBvbGwgaXMgb25nb2luZywgb3J4LSB0aGUgcG9sbCBoYXMgZW5kZWQgc3VjaCB0aGF0/CAgLSB0aGUgdm90ZSBvZiB0aGUgYWNjb3VudCB3YXMgaW4gb3Bwb3NpdGlvbiB0byB0aGUgcmVzdWx0OyBvctQgIC0gdGhlcmUgd2FzIG5vIGNvbnZpY3Rpb24gdG8gdGhlIGFjY291bnQncyB2b3RlOyBvcoQgIC0gdGhlIGFjY291bnQgbWFkZSBhIHNwbGl0IHZvdGVdAS4uLnRoZW4gdGhlIHZvdGUgaXMgcmVtb3ZlZCBjbGVhbmx5IGFuZCBhIGZvbGxvd2luZyBjYWxsIHRvIGB1bmxvY2tgIG1heSByZXN1bHQgaW4gbW9yZVhmdW5kcyBiZWluZyBhdmFpbGFibGUuAJBJZiwgaG93ZXZlciwgdGhlIHBvbGwgaGFzIGVuZGVkIGFuZDrsLSBpdCBmaW5pc2hlZCBjb3JyZXNwb25kaW5nIHRvIHRoZSB2b3RlIG9mIHRoZSBhY2NvdW50LCBhbmTcLSB0aGUgYWNjb3VudCBtYWRlIGEgc3RhbmRhcmQgdm90ZSB3aXRoIGNvbnZpY3Rpb24sIGFuZLwtIHRoZSBsb2NrIHBlcmlvZCBvZiB0aGUgY29udmljdGlvbiBpcyBub3Qgb3ZlclkBLi4udGhlbiB0aGUgbG9jayB3aWxsIGJlIGFnZ3JlZ2F0ZWQgaW50byB0aGUgb3ZlcmFsbCBhY2NvdW50J3MgbG9jaywgd2hpY2ggbWF5IGludm9sdmVZASpvdmVybG9ja2luZyogKHdoZXJlIHRoZSB0d28gbG9ja3MgYXJlIGNvbWJpbmVkIGludG8gYSBzaW5nbGUgbG9jayB0aGF0IGlzIHRoZSBtYXhpbXVt5G9mIGJvdGggdGhlIGFtb3VudCBsb2NrZWQgYW5kIHRoZSB0aW1lIGlzIGl0IGxvY2tlZCBmb3IpLgBJAVRoZSBkaXNwYXRjaCBvcmlnaW4gb2YgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8sIGFuZCB0aGUgc2lnbmVyIG11c3QgaGF2ZSBhIHZvdGVwcmVnaXN0ZXJlZCBmb3IgcG9sbCBgaW5kZXhgLgDcLSBgaW5kZXhgOiBUaGUgaW5kZXggb2YgcG9sbCBvZiB0aGUgdm90ZSB0byBiZSByZW1vdmVkLlUBLSBgY2xhc3NgOiBPcHRpb25hbCBwYXJhbWV0ZXIsIGlmIGdpdmVuIGl0IGluZGljYXRlcyB0aGUgY2xhc3Mgb2YgdGhlIHBvbGwuIEZvciBwb2xsc/AgIHdoaWNoIGhhdmUgZmluaXNoZWQgb3IgYXJlIGNhbmNlbGxlZCwgdGhpcyBtdXN0IGJlIGBTb21lYC4ARQFXZWlnaHQ6IGBPKFIgKyBsb2cgUilgIHdoZXJlIFIgaXMgdGhlIG51bWJlciBvZiBwb2xscyB0aGF0IGB0YXJnZXRgIGhhcyB2b3RlZCBvbi7YICBXZWlnaHQgaXMgY2FsY3VsYXRlZCBmb3IgdGhlIG1heGltdW0gbnVtYmVyIG9mIHZvdGUuRHJlbW92ZV9vdGhlcl92b3RlDAEYdGFyZ2V0AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARRjbGFzc/kDATRDbGFzc09mPFQsIEk+AAEUaW5kZXg4AURQb2xsSW5kZXhPZjxULCBJPgAFQGRSZW1vdmUgYSB2b3RlIGZvciBhIHBvbGwuAE0BSWYgdGhlIGB0YXJnZXRgIGlzIGVxdWFsIHRvIHRoZSBzaWduZXIsIHRoZW4gdGhpcyBmdW5jdGlvbiBpcyBleGFjdGx5IGVxdWl2YWxlbnQgdG8tAWByZW1vdmVfdm90ZWAuIElmIG5vdCBlcXVhbCB0byB0aGUgc2lnbmVyLCB0aGVuIHRoZSB2b3RlIG11c3QgaGF2ZSBleHBpcmVkLCUBZWl0aGVyIGJlY2F1c2UgdGhlIHBvbGwgd2FzIGNhbmNlbGxlZCwgYmVjYXVzZSB0aGUgdm90ZXIgbG9zdCB0aGUgcG9sbCBvcphiZWNhdXNlIHRoZSBjb252aWN0aW9uIHBlcmlvZCBpcyBvdmVyLgDIVGhlIGRpc3BhdGNoIG9yaWdpbiBvZiB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4AYQEtIGB0YXJnZXRgOiBUaGUgYWNjb3VudCBvZiB0aGUgdm90ZSB0byBiZSByZW1vdmVkOyB0aGlzIGFjY291bnQgbXVzdCBoYXZlIHZvdGVkIGZvciBwb2xsKCAgYGluZGV4YC7cLSBgaW5kZXhgOiBUaGUgaW5kZXggb2YgcG9sbCBvZiB0aGUgdm90ZSB0byBiZSByZW1vdmVkLoQtIGBjbGFzc2A6IFRoZSBjbGFzcyBvZiB0aGUgcG9sbC4ARQFXZWlnaHQ6IGBPKFIgKyBsb2cgUilgIHdoZXJlIFIgaXMgdGhlIG51bWJlciBvZiBwb2xscyB0aGF0IGB0YXJnZXRgIGhhcyB2b3RlZCBvbi7YICBXZWlnaHQgaXMgY2FsY3VsYXRlZCBmb3IgdGhlIG1heGltdW0gbnVtYmVyIG9mIHZvdGUuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLlkHDGBwYWxsZXRfY29udmljdGlvbl92b3RpbmcQdm90ZSxBY2NvdW50Vm90ZQQcQmFsYW5jZQGVAQEMIFN0YW5kYXJkCAEQdm90ZV0HARBWb3RlAAEcYmFsYW5jZZUBARxCYWxhbmNlAAAAFFNwbGl0CAEMYXlllQEBHEJhbGFuY2UAAQxuYXmVAQEcQmFsYW5jZQABADBTcGxpdEFic3RhaW4MAQxheWWVAQEcQmFsYW5jZQABDG5heZUBARxCYWxhbmNlAAEcYWJzdGFpbpUBARxCYWxhbmNlAAIAAF0HDGBwYWxsZXRfY29udmljdGlvbl92b3RpbmcQdm90ZRBWb3RlAAAEAAwAAABhBwxgcGFsbGV0X2NvbnZpY3Rpb25fdm90aW5nKGNvbnZpY3Rpb24oQ29udmljdGlvbgABHBBOb25lAAAAIExvY2tlZDF4AAEAIExvY2tlZDJ4AAIAIExvY2tlZDN4AAMAIExvY2tlZDR4AAQAIExvY2tlZDV4AAUAIExvY2tlZDZ4AAYAAGUHBBhPcHRpb24EBFQB+QMBCBBOb25lAAAAEFNvbWUEAPkDAAABAABpBwxAcGFsbGV0X3JlZmVyZW5kYRhwYWxsZXQQQ2FsbAgEVAAESQABJBhzdWJtaXQMATxwcm9wb3NhbF9vcmlnaW79AwFcQm94PFBhbGxldHNPcmlnaW5PZjxUPj4AASBwcm9wb3NhbG0HAUxCb3VuZGVkQ2FsbE9mPFQsIEk+AAFAZW5hY3RtZW50X21vbWVudHUHAYhEaXNwYXRjaFRpbWU8QmxvY2tOdW1iZXJGb3I8VCwgST4+AAAksFByb3Bvc2UgYSByZWZlcmVuZHVtIG9uIGEgcHJpdmlsZWdlZCBhY3Rpb24uAFkBLSBgb3JpZ2luYDogbXVzdCBiZSBgU3VibWl0T3JpZ2luYCBhbmQgdGhlIGFjY291bnQgbXVzdCBoYXZlIGBTdWJtaXNzaW9uRGVwb3NpdGAgZnVuZHMwICBhdmFpbGFibGUuLQEtIGBwcm9wb3NhbF9vcmlnaW5gOiBUaGUgb3JpZ2luIGZyb20gd2hpY2ggdGhlIHByb3Bvc2FsIHNob3VsZCBiZSBleGVjdXRlZC5sLSBgcHJvcG9zYWxgOiBUaGUgcHJvcG9zYWwuFQEtIGBlbmFjdG1lbnRfbW9tZW50YDogVGhlIG1vbWVudCB0aGF0IHRoZSBwcm9wb3NhbCBzaG91bGQgYmUgZW5hY3RlZC4ASEVtaXRzIGBTdWJtaXR0ZWRgLlhwbGFjZV9kZWNpc2lvbl9kZXBvc2l0BAEUaW5kZXg4ATxSZWZlcmVuZHVtSW5kZXgAASCsUG9zdCB0aGUgRGVjaXNpb24gRGVwb3NpdCBmb3IgYSByZWZlcmVuZHVtLgA5AS0gYG9yaWdpbmA6IG11c3QgYmUgYFNpZ25lZGAgYW5kIHRoZSBhY2NvdW50IG11c3QgaGF2ZSBmdW5kcyBhdmFpbGFibGUgZm9yIHRoZaAgIHJlZmVyZW5kdW0ncyB0cmFjaydzIERlY2lzaW9uIERlcG9zaXQuUQEtIGBpbmRleGA6IFRoZSBpbmRleCBvZiB0aGUgc3VibWl0dGVkIHJlZmVyZW5kdW0gd2hvc2UgRGVjaXNpb24gRGVwb3NpdCBpcyB5ZXQgdG8gYmUkICBwb3N0ZWQuAHhFbWl0cyBgRGVjaXNpb25EZXBvc2l0UGxhY2VkYC5ccmVmdW5kX2RlY2lzaW9uX2RlcG9zaXQEARRpbmRleDgBPFJlZmVyZW5kdW1JbmRleAACHCkBUmVmdW5kIHRoZSBEZWNpc2lvbiBEZXBvc2l0IGZvciBhIGNsb3NlZCByZWZlcmVuZHVtIGJhY2sgdG8gdGhlIGRlcG9zaXRvci4AnC0gYG9yaWdpbmA6IG11c3QgYmUgYFNpZ25lZGAgb3IgYFJvb3RgLk0BLSBgaW5kZXhgOiBUaGUgaW5kZXggb2YgYSBjbG9zZWQgcmVmZXJlbmR1bSB3aG9zZSBEZWNpc2lvbiBEZXBvc2l0IGhhcyBub3QgeWV0IGJlZW4sICByZWZ1bmRlZC4AgEVtaXRzIGBEZWNpc2lvbkRlcG9zaXRSZWZ1bmRlZGAuGGNhbmNlbAQBFGluZGV4OAE8UmVmZXJlbmR1bUluZGV4AAMYdENhbmNlbCBhbiBvbmdvaW5nIHJlZmVyZW5kdW0uAJwtIGBvcmlnaW5gOiBtdXN0IGJlIHRoZSBgQ2FuY2VsT3JpZ2luYC7cLSBgaW5kZXhgOiBUaGUgaW5kZXggb2YgdGhlIHJlZmVyZW5kdW0gdG8gYmUgY2FuY2VsbGVkLgBIRW1pdHMgYENhbmNlbGxlZGAuEGtpbGwEARRpbmRleDgBPFJlZmVyZW5kdW1JbmRleAAEGNBDYW5jZWwgYW4gb25nb2luZyByZWZlcmVuZHVtIGFuZCBzbGFzaCB0aGUgZGVwb3NpdHMuAJQtIGBvcmlnaW5gOiBtdXN0IGJlIHRoZSBgS2lsbE9yaWdpbmAu3C0gYGluZGV4YDogVGhlIGluZGV4IG9mIHRoZSByZWZlcmVuZHVtIHRvIGJlIGNhbmNlbGxlZC4AkEVtaXRzIGBLaWxsZWRgIGFuZCBgRGVwb3NpdFNsYXNoZWRgLkBudWRnZV9yZWZlcmVuZHVtBAEUaW5kZXg4ATxSZWZlcmVuZHVtSW5kZXgABRAdAUFkdmFuY2UgYSByZWZlcmVuZHVtIG9udG8gaXRzIG5leHQgbG9naWNhbCBzdGF0ZS4gT25seSB1c2VkIGludGVybmFsbHkuAGwtIGBvcmlnaW5gOiBtdXN0IGJlIGBSb290YC6kLSBgaW5kZXhgOiB0aGUgcmVmZXJlbmR1bSB0byBiZSBhZHZhbmNlZC5Ib25lX2Zld2VyX2RlY2lkaW5nBAEUdHJhY2v5AwE8VHJhY2tJZE9mPFQsIEk+AAYkCQFBZHZhbmNlIGEgdHJhY2sgb250byBpdHMgbmV4dCBsb2dpY2FsIHN0YXRlLiBPbmx5IHVzZWQgaW50ZXJuYWxseS4AbC0gYG9yaWdpbmA6IG11c3QgYmUgYFJvb3RgLpAtIGB0cmFja2A6IHRoZSB0cmFjayB0byBiZSBhZHZhbmNlZC4AUQFBY3Rpb24gaXRlbSBmb3Igd2hlbiB0aGVyZSBpcyBub3cgb25lIGZld2VyIHJlZmVyZW5kdW0gaW4gdGhlIGRlY2lkaW5nIHBoYXNlIGFuZCB0aGUVAWBEZWNpZGluZ0NvdW50YCBpcyBub3QgeWV0IHVwZGF0ZWQuIFRoaXMgbWVhbnMgdGhhdCB3ZSBzaG91bGQgZWl0aGVyOiUBLSBiZWdpbiBkZWNpZGluZyBhbm90aGVyIHJlZmVyZW5kdW0gKGFuZCBsZWF2ZSBgRGVjaWRpbmdDb3VudGAgYWxvbmUpOyBvcnAtIGRlY3JlbWVudCBgRGVjaWRpbmdDb3VudGAuZHJlZnVuZF9zdWJtaXNzaW9uX2RlcG9zaXQEARRpbmRleDgBPFJlZmVyZW5kdW1JbmRleAAHHDEBUmVmdW5kIHRoZSBTdWJtaXNzaW9uIERlcG9zaXQgZm9yIGEgY2xvc2VkIHJlZmVyZW5kdW0gYmFjayB0byB0aGUgZGVwb3NpdG9yLgCcLSBgb3JpZ2luYDogbXVzdCBiZSBgU2lnbmVkYCBvciBgUm9vdGAuVQEtIGBpbmRleGA6IFRoZSBpbmRleCBvZiBhIGNsb3NlZCByZWZlcmVuZHVtIHdob3NlIFN1Ym1pc3Npb24gRGVwb3NpdCBoYXMgbm90IHlldCBiZWVuLCAgcmVmdW5kZWQuAIhFbWl0cyBgU3VibWlzc2lvbkRlcG9zaXRSZWZ1bmRlZGAuMHNldF9tZXRhZGF0YQgBFGluZGV4OAE8UmVmZXJlbmR1bUluZGV4AAEobWF5YmVfaGFzaHkHATxPcHRpb248VDo6SGFzaD4ACByYU2V0IG9yIGNsZWFyIG1ldGFkYXRhIG9mIGEgcmVmZXJlbmR1bS4ALFBhcmFtZXRlcnM6RQEtIGBvcmlnaW5gOiBNdXN0IGJlIGBTaWduZWRgIGJ5IGEgY3JlYXRvciBvZiBhIHJlZmVyZW5kdW0gb3IgYnkgYW55b25lIHRvIGNsZWFyIGGQICBtZXRhZGF0YSBvZiBhIGZpbmlzaGVkIHJlZmVyZW5kdW0uDQEtIGBpbmRleGA6ICBUaGUgaW5kZXggb2YgYSByZWZlcmVuZHVtIHRvIHNldCBvciBjbGVhciBtZXRhZGF0YSBmb3IuUQEtIGBtYXliZV9oYXNoYDogVGhlIGhhc2ggb2YgYW4gb24tY2hhaW4gc3RvcmVkIHByZWltYWdlLiBgTm9uZWAgdG8gY2xlYXIgYSBtZXRhZGF0YS4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMubQcQNGZyYW1lX3N1cHBvcnQYdHJhaXRzJHByZWltYWdlcxxCb3VuZGVkCARUASAESAFxBwEMGExlZ2FjeQQBEGhhc2hAASRIOjpPdXRwdXQAAAAYSW5saW5lBABdBAE0Qm91bmRlZElubGluZQABABhMb29rdXAIARBoYXNoQAEkSDo6T3V0cHV0AAEMbGVuOAEMdTMyAAIAAHEHDChzcF9ydW50aW1lGHRyYWl0cyxCbGFrZVR3bzI1NgAAAAB1BxA0ZnJhbWVfc3VwcG9ydBh0cmFpdHMgc2NoZWR1bGUwRGlzcGF0Y2hUaW1lBCxCbG9ja051bWJlcgE4AQgIQXQEADgBLEJsb2NrTnVtYmVyAAAAFEFmdGVyBAA4ASxCbG9ja051bWJlcgABAAB5BwQYT3B0aW9uBARUAUABCBBOb25lAAAAEFNvbWUEAEAAAAEAAH0HDEBwYWxsZXRfd2hpdGVsaXN0GHBhbGxldBBDYWxsBARUAAEQOHdoaXRlbGlzdF9jYWxsBAEkY2FsbF9oYXNoQAEcVDo6SGFzaAAAAFxyZW1vdmVfd2hpdGVsaXN0ZWRfY2FsbAQBJGNhbGxfaGFzaEABHFQ6Okhhc2gAAQBkZGlzcGF0Y2hfd2hpdGVsaXN0ZWRfY2FsbAwBJGNhbGxfaGFzaEABHFQ6Okhhc2gAAUBjYWxsX2VuY29kZWRfbGVuOAEMdTMyAAFMY2FsbF93ZWlnaHRfd2l0bmVzc3kBARhXZWlnaHQAAgCcZGlzcGF0Y2hfd2hpdGVsaXN0ZWRfY2FsbF93aXRoX3ByZWltYWdlBAEQY2FsbCABfEJveDw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4AAwAEDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMugQcMPHBhbGxldF9ib3VudGllcxhwYWxsZXQQQ2FsbAgEVAAESQABLDhwcm9wb3NlX2JvdW50eQgBFHZhbHVlkQEBPEJhbGFuY2VPZjxULCBJPgABLGRlc2NyaXB0aW9uGAEcVmVjPHU4PgAAMFRQcm9wb3NlIGEgbmV3IGJvdW50eS4AzFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLgBRAVBheW1lbnQ6IGBUaXBSZXBvcnREZXBvc2l0QmFzZWAgd2lsbCBiZSByZXNlcnZlZCBmcm9tIHRoZSBvcmlnaW4gYWNjb3VudCwgYXMgd2VsbCBhc1EBYERhdGFEZXBvc2l0UGVyQnl0ZWAgZm9yIGVhY2ggYnl0ZSBpbiBgcmVhc29uYC4gSXQgd2lsbCBiZSB1bnJlc2VydmVkIHVwb24gYXBwcm92YWwsZG9yIHNsYXNoZWQgd2hlbiByZWplY3RlZC4A+C0gYGN1cmF0b3JgOiBUaGUgY3VyYXRvciBhY2NvdW50IHdob20gd2lsbCBtYW5hZ2UgdGhpcyBib3VudHkuZC0gYGZlZWA6IFRoZSBjdXJhdG9yIGZlZS4lAS0gYHZhbHVlYDogVGhlIHRvdGFsIHBheW1lbnQgYW1vdW50IG9mIHRoaXMgYm91bnR5LCBjdXJhdG9yIGZlZSBpbmNsdWRlZC7ALSBgZGVzY3JpcHRpb25gOiBUaGUgZGVzY3JpcHRpb24gb2YgdGhpcyBib3VudHkuOGFwcHJvdmVfYm91bnR5BAEkYm91bnR5X2lkZAEsQm91bnR5SW5kZXgAARxdAUFwcHJvdmUgYSBib3VudHkgcHJvcG9zYWwuIEF0IGEgbGF0ZXIgdGltZSwgdGhlIGJvdW50eSB3aWxsIGJlIGZ1bmRlZCBhbmQgYmVjb21lIGFjdGl2ZahhbmQgdGhlIG9yaWdpbmFsIGRlcG9zaXQgd2lsbCBiZSByZXR1cm5lZC4ApE1heSBvbmx5IGJlIGNhbGxlZCBmcm9tIGBUOjpTcGVuZE9yaWdpbmAuADQjIyBDb21wbGV4aXR5HC0gTygxKS48cHJvcG9zZV9jdXJhdG9yDAEkYm91bnR5X2lkZAEsQm91bnR5SW5kZXgAARxjdXJhdG9yAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AAQxmZWWRAQE8QmFsYW5jZU9mPFQsIEk+AAIYlFByb3Bvc2UgYSBjdXJhdG9yIHRvIGEgZnVuZGVkIGJvdW50eS4ApE1heSBvbmx5IGJlIGNhbGxlZCBmcm9tIGBUOjpTcGVuZE9yaWdpbmAuADQjIyBDb21wbGV4aXR5HC0gTygxKS5AdW5hc3NpZ25fY3VyYXRvcgQBJGJvdW50eV9pZGQBLEJvdW50eUluZGV4AANEfFVuYXNzaWduIGN1cmF0b3IgZnJvbSBhIGJvdW50eS4AHQFUaGlzIGZ1bmN0aW9uIGNhbiBvbmx5IGJlIGNhbGxlZCBieSB0aGUgYFJlamVjdE9yaWdpbmAgYSBzaWduZWQgb3JpZ2luLgA9AUlmIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGJ5IHRoZSBgUmVqZWN0T3JpZ2luYCwgd2UgYXNzdW1lIHRoYXQgdGhlIGN1cmF0b3IgaXMxAW1hbGljaW91cyBvciBpbmFjdGl2ZS4gQXMgYSByZXN1bHQsIHdlIHdpbGwgc2xhc2ggdGhlIGN1cmF0b3Igd2hlbiBwb3NzaWJsZS4AYQFJZiB0aGUgb3JpZ2luIGlzIHRoZSBjdXJhdG9yLCB3ZSB0YWtlIHRoaXMgYXMgYSBzaWduIHRoZXkgYXJlIHVuYWJsZSB0byBkbyB0aGVpciBqb2IgYW5kXQF0aGV5IHdpbGxpbmdseSBnaXZlIHVwLiBXZSBjb3VsZCBzbGFzaCB0aGVtLCBidXQgZm9yIG5vdyB3ZSBhbGxvdyB0aGVtIHRvIHJlY292ZXIgdGhlaXI1AWRlcG9zaXQgYW5kIGV4aXQgd2l0aG91dCBpc3N1ZS4gKFdlIG1heSB3YW50IHRvIGNoYW5nZSB0aGlzIGlmIGl0IGlzIGFidXNlZC4pAF0BRmluYWxseSwgdGhlIG9yaWdpbiBjYW4gYmUgYW55b25lIGlmIGFuZCBvbmx5IGlmIHRoZSBjdXJhdG9yIGlzICJpbmFjdGl2ZSIuIFRoaXMgYWxsb3dzYQFhbnlvbmUgaW4gdGhlIGNvbW11bml0eSB0byBjYWxsIG91dCB0aGF0IGEgY3VyYXRvciBpcyBub3QgZG9pbmcgdGhlaXIgZHVlIGRpbGlnZW5jZSwgYW5kOQF3ZSBzaG91bGQgcGljayBhIG5ldyBjdXJhdG9yLiBJbiB0aGlzIGNhc2UgdGhlIGN1cmF0b3Igc2hvdWxkIGFsc28gYmUgc2xhc2hlZC4ANCMjIENvbXBsZXhpdHkcLSBPKDEpLjhhY2NlcHRfY3VyYXRvcgQBJGJvdW50eV9pZGQBLEJvdW50eUluZGV4AAQclEFjY2VwdCB0aGUgY3VyYXRvciByb2xlIGZvciBhIGJvdW50eS4pAUEgZGVwb3NpdCB3aWxsIGJlIHJlc2VydmVkIGZyb20gY3VyYXRvciBhbmQgcmVmdW5kIHVwb24gc3VjY2Vzc2Z1bCBwYXlvdXQuAJBNYXkgb25seSBiZSBjYWxsZWQgZnJvbSB0aGUgY3VyYXRvci4ANCMjIENvbXBsZXhpdHkcLSBPKDEpLjBhd2FyZF9ib3VudHkIASRib3VudHlfaWRkASxCb3VudHlJbmRleAABLGJlbmVmaWNpYXJ5AAFQQWNjb3VudElkTG9va3VwT2Y8VD4ABShZAUF3YXJkIGJvdW50eSB0byBhIGJlbmVmaWNpYXJ5IGFjY291bnQuIFRoZSBiZW5lZmljaWFyeSB3aWxsIGJlIGFibGUgdG8gY2xhaW0gdGhlIGZ1bmRzOGFmdGVyIGEgZGVsYXkuABUBVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgdGhlIGN1cmF0b3Igb2YgdGhpcyBib3VudHkuAIgtIGBib3VudHlfaWRgOiBCb3VudHkgSUQgdG8gYXdhcmQuGQEtIGBiZW5lZmljaWFyeWA6IFRoZSBiZW5lZmljaWFyeSBhY2NvdW50IHdob20gd2lsbCByZWNlaXZlIHRoZSBwYXlvdXQuADQjIyBDb21wbGV4aXR5HC0gTygxKS4wY2xhaW1fYm91bnR5BAEkYm91bnR5X2lkZAEsQm91bnR5SW5kZXgABiDsQ2xhaW0gdGhlIHBheW91dCBmcm9tIGFuIGF3YXJkZWQgYm91bnR5IGFmdGVyIHBheW91dCBkZWxheS4AJQFUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSB0aGUgYmVuZWZpY2lhcnkgb2YgdGhpcyBib3VudHkuAIgtIGBib3VudHlfaWRgOiBCb3VudHkgSUQgdG8gY2xhaW0uADQjIyBDb21wbGV4aXR5HC0gTygxKS4wY2xvc2VfYm91bnR5BAEkYm91bnR5X2lkZAEsQm91bnR5SW5kZXgAByQ5AUNhbmNlbCBhIHByb3Bvc2VkIG9yIGFjdGl2ZSBib3VudHkuIEFsbCB0aGUgZnVuZHMgd2lsbCBiZSBzZW50IHRvIHRyZWFzdXJ5IGFuZMx0aGUgY3VyYXRvciBkZXBvc2l0IHdpbGwgYmUgdW5yZXNlcnZlZCBpZiBwb3NzaWJsZS4AyE9ubHkgYFQ6OlJlamVjdE9yaWdpbmAgaXMgYWJsZSB0byBjYW5jZWwgYSBib3VudHkuAIwtIGBib3VudHlfaWRgOiBCb3VudHkgSUQgdG8gY2FuY2VsLgA0IyMgQ29tcGxleGl0eRwtIE8oMSkuUGV4dGVuZF9ib3VudHlfZXhwaXJ5CAEkYm91bnR5X2lkZAEsQm91bnR5SW5kZXgAARhyZW1hcmsYARxWZWM8dTg+AAgkrEV4dGVuZCB0aGUgZXhwaXJ5IHRpbWUgb2YgYW4gYWN0aXZlIGJvdW50eS4AFQFUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSB0aGUgY3VyYXRvciBvZiB0aGlzIGJvdW50eS4AjC0gYGJvdW50eV9pZGA6IEJvdW50eSBJRCB0byBleHRlbmQujC0gYHJlbWFya2A6IGFkZGl0aW9uYWwgaW5mb3JtYXRpb24uADQjIyBDb21wbGV4aXR5HC0gTygxKS5sYXBwcm92ZV9ib3VudHlfd2l0aF9jdXJhdG9yDAEkYm91bnR5X2lkZAEsQm91bnR5SW5kZXgAARxjdXJhdG9yAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AAQxmZWWRAQE8QmFsYW5jZU9mPFQsIEk+AAks1EFwcHJvdmUgYm91bnRyeSBhbmQgcHJvcG9zZSBhIGN1cmF0b3Igc2ltdWx0YW5lb3VzbHkuVQFUaGlzIGNhbGwgaXMgYSBzaG9ydGN1dCB0byBjYWxsaW5nIGBhcHByb3ZlX2JvdW50eWAgYW5kIGBwcm9wb3NlX2N1cmF0b3JgIHNlcGFyYXRlbHkuAKRNYXkgb25seSBiZSBjYWxsZWQgZnJvbSBgVDo6U3BlbmRPcmlnaW5gLgCQLSBgYm91bnR5X2lkYDogQm91bnR5IElEIHRvIGFwcHJvdmUu+C0gYGN1cmF0b3JgOiBUaGUgY3VyYXRvciBhY2NvdW50IHdob20gd2lsbCBtYW5hZ2UgdGhpcyBib3VudHkuZC0gYGZlZWA6IFRoZSBjdXJhdG9yIGZlZS4ANCMjIENvbXBsZXhpdHkcLSBPKDEpLjBwb2tlX2RlcG9zaXQEASRib3VudHlfaWRkASxCb3VudHlJbmRleAAKPORQb2tlIHRoZSBkZXBvc2l0IHJlc2VydmVkIGZvciBjcmVhdGluZyBhIGJvdW50eSBwcm9wb3NhbC4A9FRoaXMgY2FuIGJlIHVzZWQgYnkgYWNjb3VudHMgdG8gdXBkYXRlIHRoZWlyIHJlc2VydmVkIGFtb3VudC4AzFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLgAsUGFyYW1ldGVyczr0LSBgYm91bnR5X2lkYDogVGhlIGJvdW50eSBpZCBmb3Igd2hpY2ggdG8gYWRqdXN0IHRoZSBkZXBvc2l0LgA5AUlmIHRoZSBkZXBvc2l0IGlzIHVwZGF0ZWQsIHRoZSBkaWZmZXJlbmNlIHdpbGwgYmUgcmVzZXJ2ZWQvdW5yZXNlcnZlZCBmcm9tIHRoZUxwcm9wb3NlcidzIGFjY291bnQuACkBVGhlIHRyYW5zYWN0aW9uIGlzIG1hZGUgZnJlZSBpZiB0aGUgZGVwb3NpdCBpcyB1cGRhdGVkIGFuZCBwYWlkIG90aGVyd2lzZS4AvEVtaXRzIGBEZXBvc2l0UG9rZWRgIGlmIHRoZSBkZXBvc2l0IGlzIHVwZGF0ZWQuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLoUHDFRwYWxsZXRfY2hpbGRfYm91bnRpZXMYcGFsbGV0EENhbGwEBFQAARxAYWRkX2NoaWxkX2JvdW50eQwBQHBhcmVudF9ib3VudHlfaWRkASxCb3VudHlJbmRleAABFHZhbHVlkQEBMEJhbGFuY2VPZjxUPgABLGRlc2NyaXB0aW9uGAEcVmVjPHU4PgAATFxBZGQgYSBuZXcgY2hpbGQtYm91bnR5LgD8VGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgdGhlIGN1cmF0b3Igb2YgcGFyZW503GJvdW50eSBhbmQgdGhlIHBhcmVudCBib3VudHkgbXVzdCBiZSBpbiAiYWN0aXZlIiBzdGF0ZS4ABQFDaGlsZC1ib3VudHkgZ2V0cyBhZGRlZCBzdWNjZXNzZnVsbHkgJiBmdW5kIGdldHMgdHJhbnNmZXJyZWQgZnJvbQkBcGFyZW50IGJvdW50eSB0byBjaGlsZC1ib3VudHkgYWNjb3VudCwgaWYgcGFyZW50IGJvdW50eSBoYXMgZW5vdWdobGZ1bmRzLCBlbHNlIHRoZSBjYWxsIGZhaWxzLgANAVVwcGVyIGJvdW5kIHRvIG1heGltdW0gbnVtYmVyIG9mIGFjdGl2ZSAgY2hpbGQgYm91bnRpZXMgdGhhdCBjYW4gYmWoYWRkZWQgYXJlIG1hbmFnZWQgdmlhIHJ1bnRpbWUgdHJhaXQgY29uZmlnmFtgQ29uZmlnOjpNYXhBY3RpdmVDaGlsZEJvdW50eUNvdW50YF0uAAEBSWYgdGhlIGNhbGwgaXMgc3VjY2VzcywgdGhlIHN0YXR1cyBvZiBjaGlsZC1ib3VudHkgaXMgdXBkYXRlZCB0byAiQWRkZWQiLgBNAS0gYHBhcmVudF9ib3VudHlfaWRgOiBJbmRleCBvZiBwYXJlbnQgYm91bnR5IGZvciB3aGljaCBjaGlsZC1ib3VudHkgaXMgYmVpbmcgYWRkZWQusC0gYHZhbHVlYDogVmFsdWUgZm9yIGV4ZWN1dGluZyB0aGUgcHJvcG9zYWwu3C0gYGRlc2NyaXB0aW9uYDogVGV4dCBkZXNjcmlwdGlvbiBmb3IgdGhlIGNoaWxkLWJvdW50eS48cHJvcG9zZV9jdXJhdG9yEAFAcGFyZW50X2JvdW50eV9pZGQBLEJvdW50eUluZGV4AAE8Y2hpbGRfYm91bnR5X2lkZAEsQm91bnR5SW5kZXgAARxjdXJhdG9yAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AAQxmZWWRAQEwQmFsYW5jZU9mPFQ+AAE8oFByb3Bvc2UgY3VyYXRvciBmb3IgZnVuZGVkIGNoaWxkLWJvdW50eS4ADQFUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBjdXJhdG9yIG9mIHBhcmVudCBib3VudHkuABEBUGFyZW50IGJvdW50eSBtdXN0IGJlIGluIGFjdGl2ZSBzdGF0ZSwgZm9yIHRoaXMgY2hpbGQtYm91bnR5IGNhbGwgdG8Ud29yay4ADQFDaGlsZC1ib3VudHkgbXVzdCBiZSBpbiAiQWRkZWQiIHN0YXRlLCBmb3IgcHJvY2Vzc2luZyB0aGUgY2FsbC4gQW5kBQFzdGF0ZSBvZiBjaGlsZC1ib3VudHkgaXMgbW92ZWQgdG8gIkN1cmF0b3JQcm9wb3NlZCIgb24gc3VjY2Vzc2Z1bEBjYWxsIGNvbXBsZXRpb24uALQtIGBwYXJlbnRfYm91bnR5X2lkYDogSW5kZXggb2YgcGFyZW50IGJvdW50eS6sLSBgY2hpbGRfYm91bnR5X2lkYDogSW5kZXggb2YgY2hpbGQgYm91bnR5LrQtIGBjdXJhdG9yYDogQWRkcmVzcyBvZiBjaGlsZC1ib3VudHkgY3VyYXRvci7sLSBgZmVlYDogcGF5bWVudCBmZWUgdG8gY2hpbGQtYm91bnR5IGN1cmF0b3IgZm9yIGV4ZWN1dGlvbi44YWNjZXB0X2N1cmF0b3IIAUBwYXJlbnRfYm91bnR5X2lkZAEsQm91bnR5SW5kZXgAATxjaGlsZF9ib3VudHlfaWRkASxCb3VudHlJbmRleAACTLRBY2NlcHQgdGhlIGN1cmF0b3Igcm9sZSBmb3IgdGhlIGNoaWxkLWJvdW50eS4A9FRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIHRoZSBjdXJhdG9yIG9mIHRoaXM0Y2hpbGQtYm91bnR5LgDsQSBkZXBvc2l0IHdpbGwgYmUgcmVzZXJ2ZWQgZnJvbSB0aGUgY3VyYXRvciBhbmQgcmVmdW5kIHVwb26Ic3VjY2Vzc2Z1bCBwYXlvdXQgb3IgY2FuY2VsbGF0aW9uLgD4RmVlIGZvciBjdXJhdG9yIGlzIGRlZHVjdGVkIGZyb20gY3VyYXRvciBmZWUgb2YgcGFyZW50IGJvdW50eS4AEQFQYXJlbnQgYm91bnR5IG11c3QgYmUgaW4gYWN0aXZlIHN0YXRlLCBmb3IgdGhpcyBjaGlsZC1ib3VudHkgY2FsbCB0bxR3b3JrLgANAUNoaWxkLWJvdW50eSBtdXN0IGJlIGluICJDdXJhdG9yUHJvcG9zZWQiIHN0YXRlLCBmb3IgcHJvY2Vzc2luZyB0aGUJAWNhbGwuIEFuZCBzdGF0ZSBvZiBjaGlsZC1ib3VudHkgaXMgbW92ZWQgdG8gIkFjdGl2ZSIgb24gc3VjY2Vzc2Z1bEBjYWxsIGNvbXBsZXRpb24uALQtIGBwYXJlbnRfYm91bnR5X2lkYDogSW5kZXggb2YgcGFyZW50IGJvdW50eS6sLSBgY2hpbGRfYm91bnR5X2lkYDogSW5kZXggb2YgY2hpbGQgYm91bnR5LkB1bmFzc2lnbl9jdXJhdG9yCAFAcGFyZW50X2JvdW50eV9pZGQBLEJvdW50eUluZGV4AAE8Y2hpbGRfYm91bnR5X2lkZAEsQm91bnR5SW5kZXgAA4iUVW5hc3NpZ24gY3VyYXRvciBmcm9tIGEgY2hpbGQtYm91bnR5LgAJAVRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBjYW4gYmUgZWl0aGVyIGBSZWplY3RPcmlnaW5gLCBvctx0aGUgY3VyYXRvciBvZiB0aGUgcGFyZW50IGJvdW50eSwgb3IgYW55IHNpZ25lZCBvcmlnaW4uAPhGb3IgdGhlIG9yaWdpbiBvdGhlciB0aGFuIFQ6OlJlamVjdE9yaWdpbiBhbmQgdGhlIGNoaWxkLWJvdW50eQEBY3VyYXRvciwgcGFyZW50IGJvdW50eSBtdXN0IGJlIGluIGFjdGl2ZSBzdGF0ZSwgZm9yIHRoaXMgY2FsbCB0bwkBd29yay4gV2UgYWxsb3cgY2hpbGQtYm91bnR5IGN1cmF0b3IgYW5kIFQ6OlJlamVjdE9yaWdpbiB0byBleGVjdXRlyHRoaXMgY2FsbCBpcnJlc3BlY3RpdmUgb2YgdGhlIHBhcmVudCBib3VudHkgc3RhdGUuANxJZiB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBieSB0aGUgYFJlamVjdE9yaWdpbmAgb3IgdGhlBQFwYXJlbnQgYm91bnR5IGN1cmF0b3IsIHdlIGFzc3VtZSB0aGF0IHRoZSBjaGlsZC1ib3VudHkgY3VyYXRvciBpcw0BbWFsaWNpb3VzIG9yIGluYWN0aXZlLiBBcyBhIHJlc3VsdCwgY2hpbGQtYm91bnR5IGN1cmF0b3IgZGVwb3NpdCBpcyBzbGFzaGVkLgAFAUlmIHRoZSBvcmlnaW4gaXMgdGhlIGNoaWxkLWJvdW50eSBjdXJhdG9yLCB3ZSB0YWtlIHRoaXMgYXMgYSBzaWduCQF0aGF0IHRoZXkgYXJlIHVuYWJsZSB0byBkbyB0aGVpciBqb2IsIGFuZCBhcmUgd2lsbGluZ2x5IGdpdmluZyB1cC4JAVdlIGNvdWxkIHNsYXNoIHRoZSBkZXBvc2l0LCBidXQgZm9yIG5vdyB3ZSBhbGxvdyB0aGVtIHRvIHVucmVzZXJ2ZREBdGhlaXIgZGVwb3NpdCBhbmQgZXhpdCB3aXRob3V0IGlzc3VlLiAoV2UgbWF5IHdhbnQgdG8gY2hhbmdlIHRoaXMgaWY4aXQgaXMgYWJ1c2VkLikABQFGaW5hbGx5LCB0aGUgb3JpZ2luIGNhbiBiZSBhbnlvbmUgaWZmIHRoZSBjaGlsZC1ib3VudHkgY3VyYXRvciBpcwkBImluYWN0aXZlIi4gRXhwaXJ5IHVwZGF0ZSBkdWUgb2YgcGFyZW50IGJvdW50eSBpcyB1c2VkIHRvIGVzdGltYXRlnGluYWN0aXZlIHN0YXRlIG9mIGNoaWxkLWJvdW50eSBjdXJhdG9yLgANAVRoaXMgYWxsb3dzIGFueW9uZSBpbiB0aGUgY29tbXVuaXR5IHRvIGNhbGwgb3V0IHRoYXQgYSBjaGlsZC1ib3VudHkJAWN1cmF0b3IgaXMgbm90IGRvaW5nIHRoZWlyIGR1ZSBkaWxpZ2VuY2UsIGFuZCB3ZSBzaG91bGQgcGljayBhIG5ld/hvbmUuIEluIHRoaXMgY2FzZSB0aGUgY2hpbGQtYm91bnR5IGN1cmF0b3IgZGVwb3NpdCBpcyBzbGFzaGVkLgABAVN0YXRlIG9mIGNoaWxkLWJvdW50eSBpcyBtb3ZlZCB0byBBZGRlZCBzdGF0ZSBvbiBzdWNjZXNzZnVsIGNhbGwsY29tcGxldGlvbi4AtC0gYHBhcmVudF9ib3VudHlfaWRgOiBJbmRleCBvZiBwYXJlbnQgYm91bnR5LqwtIGBjaGlsZF9ib3VudHlfaWRgOiBJbmRleCBvZiBjaGlsZCBib3VudHkuSGF3YXJkX2NoaWxkX2JvdW50eQwBQHBhcmVudF9ib3VudHlfaWRkASxCb3VudHlJbmRleAABPGNoaWxkX2JvdW50eV9pZGQBLEJvdW50eUluZGV4AAEsYmVuZWZpY2lhcnkAAVBBY2NvdW50SWRMb29rdXBPZjxUPgAERJBBd2FyZCBjaGlsZC1ib3VudHkgdG8gYSBiZW5lZmljaWFyeS4A+FRoZSBiZW5lZmljaWFyeSB3aWxsIGJlIGFibGUgdG8gY2xhaW0gdGhlIGZ1bmRzIGFmdGVyIGEgZGVsYXkuAPxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSB0aGUgcGFyZW50IGN1cmF0b3Igb3J0Y3VyYXRvciBvZiB0aGlzIGNoaWxkLWJvdW50eS4AEQFQYXJlbnQgYm91bnR5IG11c3QgYmUgaW4gYWN0aXZlIHN0YXRlLCBmb3IgdGhpcyBjaGlsZC1ib3VudHkgY2FsbCB0bxR3b3JrLgAJAUNoaWxkLWJvdW50eSBtdXN0IGJlIGluIGFjdGl2ZSBzdGF0ZSwgZm9yIHByb2Nlc3NpbmcgdGhlIGNhbGwuIEFuZBEBc3RhdGUgb2YgY2hpbGQtYm91bnR5IGlzIG1vdmVkIHRvICJQZW5kaW5nUGF5b3V0IiBvbiBzdWNjZXNzZnVsIGNhbGwsY29tcGxldGlvbi4AtC0gYHBhcmVudF9ib3VudHlfaWRgOiBJbmRleCBvZiBwYXJlbnQgYm91bnR5LqwtIGBjaGlsZF9ib3VudHlfaWRgOiBJbmRleCBvZiBjaGlsZCBib3VudHkulC0gYGJlbmVmaWNpYXJ5YDogQmVuZWZpY2lhcnkgYWNjb3VudC5IY2xhaW1fY2hpbGRfYm91bnR5CAFAcGFyZW50X2JvdW50eV9pZGQBLEJvdW50eUluZGV4AAE8Y2hpbGRfYm91bnR5X2lkZAEsQm91bnR5SW5kZXgABUAFAUNsYWltIHRoZSBwYXlvdXQgZnJvbSBhbiBhd2FyZGVkIGNoaWxkLWJvdW50eSBhZnRlciBwYXlvdXQgZGVsYXkuAOxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbWF5IGJlIGFueSBzaWduZWQgb3JpZ2luLgAFAUNhbGwgd29ya3MgaW5kZXBlbmRlbnQgb2YgcGFyZW50IGJvdW50eSBzdGF0ZSwgTm8gbmVlZCBmb3IgcGFyZW50dGJvdW50eSB0byBiZSBpbiBhY3RpdmUgc3RhdGUuABEBVGhlIEJlbmVmaWNpYXJ5IGlzIHBhaWQgb3V0IHdpdGggYWdyZWVkIGJvdW50eSB2YWx1ZS4gQ3VyYXRvciBmZWUgaXOUcGFpZCAmIGN1cmF0b3IgZGVwb3NpdCBpcyB1bnJlc2VydmVkLgAFAUNoaWxkLWJvdW50eSBtdXN0IGJlIGluICJQZW5kaW5nUGF5b3V0IiBzdGF0ZSwgZm9yIHByb2Nlc3NpbmcgdGhl/GNhbGwuIEFuZCBpbnN0YW5jZSBvZiBjaGlsZC1ib3VudHkgaXMgcmVtb3ZlZCBmcm9tIHRoZSBzdGF0ZSBvbmxzdWNjZXNzZnVsIGNhbGwgY29tcGxldGlvbi4AtC0gYHBhcmVudF9ib3VudHlfaWRgOiBJbmRleCBvZiBwYXJlbnQgYm91bnR5LqwtIGBjaGlsZF9ib3VudHlfaWRgOiBJbmRleCBvZiBjaGlsZCBib3VudHkuSGNsb3NlX2NoaWxkX2JvdW50eQgBQHBhcmVudF9ib3VudHlfaWRkASxCb3VudHlJbmRleAABPGNoaWxkX2JvdW50eV9pZGQBLEJvdW50eUluZGV4AAZYEQFDYW5jZWwgYSBwcm9wb3NlZCBvciBhY3RpdmUgY2hpbGQtYm91bnR5LiBDaGlsZC1ib3VudHkgYWNjb3VudCBmdW5kcwkBYXJlIHRyYW5zZmVycmVkIHRvIHBhcmVudCBib3VudHkgYWNjb3VudC4gVGhlIGNoaWxkLWJvdW50eSBjdXJhdG9ymGRlcG9zaXQgbWF5IGJlIHVucmVzZXJ2ZWQgaWYgcG9zc2libGUuAAkBVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgZWl0aGVyIHBhcmVudCBjdXJhdG9yIG9ySGBUOjpSZWplY3RPcmlnaW5gLgDwSWYgdGhlIHN0YXRlIG9mIGNoaWxkLWJvdW50eSBpcyBgQWN0aXZlYCwgY3VyYXRvciBkZXBvc2l0IGlzLHVucmVzZXJ2ZWQuAPRJZiB0aGUgc3RhdGUgb2YgY2hpbGQtYm91bnR5IGlzIGBQZW5kaW5nUGF5b3V0YCwgY2FsbCBmYWlscyAmeHJldHVybnMgYFBlbmRpbmdQYXlvdXRgIGVycm9yLgANAUZvciB0aGUgb3JpZ2luIG90aGVyIHRoYW4gVDo6UmVqZWN0T3JpZ2luLCBwYXJlbnQgYm91bnR5IG11c3QgYmUgaW7wYWN0aXZlIHN0YXRlLCBmb3IgdGhpcyBjaGlsZC1ib3VudHkgY2FsbCB0byB3b3JrLiBGb3Igb3JpZ2lukFQ6OlJlamVjdE9yaWdpbiBleGVjdXRpb24gaXMgZm9yY2VkLgABAUluc3RhbmNlIG9mIGNoaWxkLWJvdW50eSBpcyByZW1vdmVkIGZyb20gdGhlIHN0YXRlIG9uIHN1Y2Nlc3NmdWxAY2FsbCBjb21wbGV0aW9uLgC0LSBgcGFyZW50X2JvdW50eV9pZGA6IEluZGV4IG9mIHBhcmVudCBib3VudHkurC0gYGNoaWxkX2JvdW50eV9pZGA6IEluZGV4IG9mIGNoaWxkIGJvdW50eS4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuiQcMRHBhbGxldF9hc3NldF9yYXRlGHBhbGxldBBDYWxsBARUAAEMGGNyZWF0ZQgBKGFzc2V0X2tpbmRNBwFEQm94PFQ6OkFzc2V0S2luZD4AARByYXRljQcBJEZpeGVkVTEyOAAAEA0BSW5pdGlhbGl6ZSBhIGNvbnZlcnNpb24gcmF0ZSB0byBuYXRpdmUgYmFsYW5jZSBmb3IgdGhlIGdpdmVuIGFzc2V0LgA0IyMgQ29tcGxleGl0eRgtIE8oMSkYdXBkYXRlCAEoYXNzZXRfa2luZE0HAURCb3g8VDo6QXNzZXRLaW5kPgABEHJhdGWNBwEkRml4ZWRVMTI4AAEQBQFVcGRhdGUgdGhlIGNvbnZlcnNpb24gcmF0ZSB0byBuYXRpdmUgYmFsYW5jZSBmb3IgdGhlIGdpdmVuIGFzc2V0LgA0IyMgQ29tcGxleGl0eRgtIE8oMSkYcmVtb3ZlBAEoYXNzZXRfa2luZE0HAURCb3g8VDo6QXNzZXRLaW5kPgACECUBUmVtb3ZlIGFuIGV4aXN0aW5nIGNvbnZlcnNpb24gcmF0ZSB0byBuYXRpdmUgYmFsYW5jZSBmb3IgdGhlIGdpdmVuIGFzc2V0LgA0IyMgQ29tcGxleGl0eRgtIE8oMSkEDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMujQcMNHNwX2FyaXRobWV0aWMsZml4ZWRfcG9pbnQkRml4ZWRVMTI4AAAEAJUBARB1MTI4AACRBwxscGFsbGV0X211bHRpX2Fzc2V0X2JvdW50aWVzGHBhbGxldBBDYWxsCARUAARJAAEkLGZ1bmRfYm91bnR5EAEoYXNzZXRfa2luZE0HAURCb3g8VDo6QXNzZXRLaW5kPgABFHZhbHVlkQEBKFQ6OkJhbGFuY2UAARxjdXJhdG9yAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AASBtZXRhZGF0YUABHFQ6Okhhc2gAAGgpAUZ1bmQgYSBuZXcgYm91bnR5IHdpdGggYSBwcm9wb3NlZCBjdXJhdG9yLCBpbml0aWF0aW5nIHRoZSBwYXltZW50IGZyb20gdGhluGZ1bmRpbmcgc291cmNlIHRvIHRoZSBib3VudHkgYWNjb3VudC9sb2NhdGlvbi4ASCMjIERpc3BhdGNoIE9yaWdpbgAdAU11c3QgYmUgW2BDb25maWc6OlNwZW5kT3JpZ2luYF0gd2l0aCB0aGUgYFN1Y2Nlc3NgIHZhbHVlIGJlaW5nIGF0IGxlYXN0QQF0aGUgYm91bnR5IHZhbHVlIGNvbnZlcnRlZCB0byBuYXRpdmUgYmFsYW5jZSB1c2luZyBbYENvbmZpZzo6QmFsYW5jZUNvbnZlcnRlcmBdLjUBVGhlIGNvbnZlcnRlZCBuYXRpdmUgYW1vdW50IGlzIHZhbGlkYXRlZCBhZ2FpbnN0IHRoZSBtYXhpbXVtIHNwZW5kYWJsZSBhbW91bnSQcmV0dXJuZWQgYnkgW2BDb25maWc6OlNwZW5kT3JpZ2luYF0uACgjIyBEZXRhaWxzACEBLSBUaGUgYFNwZW5kT3JpZ2luYCBtdXN0IGhhdmUgc3VmZmljaWVudCBwZXJtaXNzaW9ucyB0byBmdW5kIHRoZSBib3VudHkuWQEtIFRoZSBib3VudHkgYHZhbHVlYCAoaW4gYXNzZXQgYmFsYW5jZSkgaXMgY29udmVydGVkIHRvIG5hdGl2ZSBiYWxhbmNlIGZvciB2YWxpZGF0aW9uLikBLSBJbiBjYXNlIG9mIGEgZnVuZGluZyBmYWlsdXJlLCB0aGUgYm91bnR5IHN0YXR1cyBtdXN0IGJlIHVwZGF0ZWQgd2l0aCB0aGUBASAgYGNoZWNrX3N0YXR1c2AgY2FsbCBiZWZvcmUgcmV0cnlpbmcgd2l0aCBgcmV0cnlfcGF5bWVudGAgY2FsbC4AOCMjIyBQYXJhbWV0ZXJzGQEtIGBhc3NldF9raW5kYDogQW4gaW5kaWNhdG9yIG9mIHRoZSBzcGVjaWZpYyBhc3NldCBjbGFzcyB0byBiZSBmdW5kZWQuzC0gYHZhbHVlYDogVGhlIHRvdGFsIHBheW1lbnQgYW1vdW50IG9mIHRoaXMgYm91bnR5LpwtIGBjdXJhdG9yYDogQWRkcmVzcyBvZiBib3VudHkgY3VyYXRvci4tAS0gYG1ldGFkYXRhYDogVGhlIGhhc2ggb2YgYW4gb24tY2hhaW4gc3RvcmVkIHByZWltYWdlIHdpdGggYm91bnR5IG1ldGFkYXRhLgAkIyMgRXZlbnRzAAUBRW1pdHMgW2BFdmVudDo6Qm91bnR5Q3JlYXRlZGBdIGFuZCBbYEV2ZW50OjpQYWlkYF0gaWYgc3VjY2Vzc2Z1bC5EZnVuZF9jaGlsZF9ib3VudHkQAUBwYXJlbnRfYm91bnR5X2lkZAEsQm91bnR5SW5kZXgAARR2YWx1ZZEBAShUOjpCYWxhbmNlAAEgbWV0YWRhdGFAARxUOjpIYXNoAAEcY3VyYXRvclEEAXBPcHRpb248QWNjb3VudElkTG9va3VwT2Y8VD4+AAFgXQFGdW5kIGEgbmV3IGNoaWxkLWJvdW50eSB3aXRoIGEgcHJvcG9zZWQgY3VyYXRvciwgaW5pdGlhdGluZyB0aGUgcGF5bWVudCBmcm9tIHRoZSBwYXJlbnSwYm91bnR5IHRvIHRoZSBjaGlsZC1ib3VudHkgYWNjb3VudC9sb2NhdGlvbi4ASCMjIERpc3BhdGNoIE9yaWdpbgCUTXVzdCBiZSBzaWduZWQgYnkgdGhlIHBhcmVudCBjdXJhdG9yLgAoIyMgRGV0YWlscwBFAS0gSWYgYGN1cmF0b3JgIGlzIG5vdCBwcm92aWRlZCwgdGhlIGNoaWxkLWJvdW50eSB3aWxsIGRlZmF1bHQgdG8gdXNpbmcgdGhlIHBhcmVudDUBICBjdXJhdG9yLCBhbGxvd2luZyB0aGUgcGFyZW50IGN1cmF0b3IgdG8gaW1tZWRpYXRlbHkgY2FsbCBgY2hlY2tfc3RhdHVzYCBhbmSwICBgYXdhcmRfYm91bnR5YCB0byBwYXlvdXQgdGhlIGNoaWxkLWJvdW50eS5FAS0gSW4gY2FzZSBvZiBhIGZ1bmRpbmcgZmFpbHVyZSwgdGhlIGNoaWxkLS9ib3VudHkgc3RhdHVzIG11c3QgYmUgdXBkYXRlZCB3aXRoIHRoZQEBICBgY2hlY2tfc3RhdHVzYCBjYWxsIGJlZm9yZSByZXRyeWluZyB3aXRoIGByZXRyeV9wYXltZW50YCBjYWxsLgA4IyMjIFBhcmFtZXRlcnNNAS0gYHBhcmVudF9ib3VudHlfaWRgOiBJbmRleCBvZiBwYXJlbnQgYm91bnR5IGZvciB3aGljaCBjaGlsZC1ib3VudHkgaXMgYmVpbmcgYWRkZWQuzC0gYHZhbHVlYDogVGhlIHBheW1lbnQgYW1vdW50IG9mIHRoaXMgY2hpbGQtYm91bnR5LkUBLSBgbWV0YWRhdGFgOiBUaGUgaGFzaCBvZiBhbiBvbi1jaGFpbiBzdG9yZWQgcHJlaW1hZ2Ugd2l0aCBjaGlsZC1ib3VudHkgbWV0YWRhdGEutC0gYGN1cmF0b3JgOiBBZGRyZXNzIG9mIGNoaWxkLWJvdW50eSBjdXJhdG9yLgAkIyMgRXZlbnRzABkBRW1pdHMgW2BFdmVudDo6Q2hpbGRCb3VudHlDcmVhdGVkYF0gYW5kIFtgRXZlbnQ6OlBhaWRgXSBpZiBzdWNjZXNzZnVsLjxwcm9wb3NlX2N1cmF0b3IMAUBwYXJlbnRfYm91bnR5X2lkZAEsQm91bnR5SW5kZXgAATxjaGlsZF9ib3VudHlfaWTYAUxPcHRpb248Qm91bnR5SW5kZXg+AAEcY3VyYXRvcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAJUMQFQcm9wb3NlIGEgbmV3IGN1cmF0b3IgZm9yIGEgY2hpbGQtL2JvdW50eSBhZnRlciB0aGUgcHJldmlvdXMgd2FzIHVuYXNzaWduZWQuAEgjIyBEaXNwYXRjaCBPcmlnaW4AQQFNdXN0IGJlIHNpZ25lZCBieSBgVDo6U3BlbmRPcmlnaW5gIGZvciBhIGJvdW50eSwgb3IgYnkgdGhlIHBhcmVudCBib3VudHkgY3VyYXRvckxmb3IgYSBjaGlsZC1ib3VudHkuACgjIyBEZXRhaWxzAPQtIFRoZSBjaGlsZC0vYm91bnR5IG11c3QgYmUgaW4gdGhlIGBDdXJhdG9yVW5hc3NpZ25lZGAgc3RhdGUuRQEtIEZvciBhIGJvdW50eSwgdGhlIGBTcGVuZE9yaWdpbmAgbXVzdCBoYXZlIHN1ZmZpY2llbnQgcGVybWlzc2lvbnMgdG8gcHJvcG9zZSB0aGUoICBjdXJhdG9yLgA4IyMjIFBhcmFtZXRlcnOYLSBgcGFyZW50X2JvdW50eV9pZGA6IEluZGV4IG9mIGJvdW50eS6sLSBgY2hpbGRfYm91bnR5X2lkYDogSW5kZXggb2YgY2hpbGQtYm91bnR5LswtIGBjdXJhdG9yYDogQWNjb3VudCB0byBiZSBwcm9wb3NlZCBhcyB0aGUgY3VyYXRvci4AJCMjIEV2ZW50cwC8RW1pdHMgW2BFdmVudDo6Q3VyYXRvclByb3Bvc2VkYF0gaWYgc3VjY2Vzc2Z1bC44YWNjZXB0X2N1cmF0b3IIAUBwYXJlbnRfYm91bnR5X2lkZAEsQm91bnR5SW5kZXgAATxjaGlsZF9ib3VudHlfaWTYAUxPcHRpb248Qm91bnR5SW5kZXg+AANMsEFjY2VwdCB0aGUgY3VyYXRvciByb2xlIGZvciBhIGNoaWxkLS9ib3VudHkuAEgjIyBEaXNwYXRjaCBPcmlnaW4AnE11c3QgYmUgc2lnbmVkIGJ5IHRoZSBwcm9wb3NlZCBjdXJhdG9yLgAoIyMgRGV0YWlscwDILSBUaGUgY2hpbGQtL2JvdW50eSBtdXN0IGJlIGluIHRoZSBgRnVuZGVkYCBzdGF0ZS7wLSBUaGUgY3VyYXRvciBtdXN0IGFjY2VwdCB0aGUgcm9sZSBieSBjYWxsaW5nIHRoaXMgZnVuY3Rpb24uSQEtIEEgZGVwb3NpdCB3aWxsIGJlIHJlc2VydmVkIGZyb20gdGhlIGN1cmF0b3IgYW5kIHJlZnVuZGVkIHVwb24gc3VjY2Vzc2Z1bCBwYXlvdXQuADgjIyMgUGFyYW1ldGVyc7QtIGBwYXJlbnRfYm91bnR5X2lkYDogSW5kZXggb2YgcGFyZW50IGJvdW50eS6sLSBgY2hpbGRfYm91bnR5X2lkYDogSW5kZXggb2YgY2hpbGQtYm91bnR5LgAkIyMgRXZlbnRzAMhFbWl0cyBbYEV2ZW50OjpCb3VudHlCZWNhbWVBY3RpdmVgXSBpZiBzdWNjZXNzZnVsLkB1bmFzc2lnbl9jdXJhdG9yCAFAcGFyZW50X2JvdW50eV9pZGQBLEJvdW50eUluZGV4AAE8Y2hpbGRfYm91bnR5X2lk2AFMT3B0aW9uPEJvdW50eUluZGV4PgAEZJhVbmFzc2lnbiBjdXJhdG9yIGZyb20gYSBjaGlsZC0vYm91bnR5LgBIIyMgRGlzcGF0Y2ggT3JpZ2luAFEBVGhpcyBmdW5jdGlvbiBjYW4gb25seSBiZSBjYWxsZWQgYnkgdGhlIGBSZWplY3RPcmlnaW5gIG9yIHRoZSBjaGlsZC0vYm91bnR5IGN1cmF0b3IuACgjIyBEZXRhaWxzAGEBLSBJZiB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBieSB0aGUgYFJlamVjdE9yaWdpbmAsIG9yIGJ5IHRoZSBwYXJlbnQgY3VyYXRvciBpbiB0aGUgY2FzZVkBICBvZiBhIGNoaWxkIGJvdW50eSwgd2UgYXNzdW1lIHRoYXQgdGhlIGN1cmF0b3IgaXMgbWFsaWNpb3VzIG9yIGluYWN0aXZlLiBBcyBhIHJlc3VsdCyoICB3ZSB3aWxsIHNsYXNoIHRoZSBjdXJhdG9yIHdoZW4gcG9zc2libGUuXQEtIElmIHRoZSBvcmlnaW4gaXMgdGhlIGNoaWxkLS9ib3VudHkgY3VyYXRvciwgd2UgdGFrZSB0aGlzIGFzIGEgc2lnbiB0aGV5IGFyZSB1bmFibGUgdG9RASAgZG8gdGhlaXIgam9iIGFuZCB0aGV5IHdpbGxpbmdseSBnaXZlIHVwLiBXZSBjb3VsZCBzbGFzaCB0aGVtLCBidXQgZm9yIG5vdyB3ZSBhbGxvd1kBICB0aGVtIHRvIHJlY292ZXIgdGhlaXIgZGVwb3NpdCBhbmQgZXhpdCB3aXRob3V0IGlzc3VlLiAoV2UgbWF5IHdhbnQgdG8gY2hhbmdlIHRoaXMgaWZAICBpdCBpcyBhYnVzZWQpLj0BLSBJZiBzdWNjZXNzZnVsLCB0aGUgY2hpbGQtL2JvdW50eSBzdGF0dXMgaXMgdXBkYXRlZCB0byBgQ3VyYXRvclVuYXNzaWduZWRgLiBUb0UBICByZWFjdGl2YXRlIHRoZSBib3VudHksIGEgbmV3IGN1cmF0b3IgbXVzdCBiZSBwcm9wb3NlZCBhbmQgbXVzdCBhY2NlcHQgdGhlIHJvbGUuADgjIyMgUGFyYW1ldGVyc7QtIGBwYXJlbnRfYm91bnR5X2lkYDogSW5kZXggb2YgcGFyZW50IGJvdW50eS6sLSBgY2hpbGRfYm91bnR5X2lkYDogSW5kZXggb2YgY2hpbGQtYm91bnR5LgAkIyMgRXZlbnRzAMRFbWl0cyBbYEV2ZW50OjpDdXJhdG9yVW5hc3NpZ25lZGBdIGlmIHN1Y2Nlc3NmdWwuMGF3YXJkX2JvdW50eQwBQHBhcmVudF9ib3VudHlfaWRkASxCb3VudHlJbmRleAABPGNoaWxkX2JvdW50eV9pZNgBTE9wdGlvbjxCb3VudHlJbmRleD4AASxiZW5lZmljaWFyeVEHAWRCZW5lZmljaWFyeUxvb2t1cE9mPFQsIEk+AAVg7EF3YXJkcyB0aGUgY2hpbGQtL2JvdW50eSB0byBhIGJlbmVmaWNpYXJ5IGFjY291bnQvbG9jYXRpb24sHQFpbml0aWF0aW5nIHRoZSBwYXlvdXQgcGF5bWVudHMgdG8gYm90aCB0aGUgYmVuZWZpY2lhcnkgYW5kIHRoZSBjdXJhdG9yLgBIIyMgRGlzcGF0Y2ggT3JpZ2luAFEBVGhpcyBmdW5jdGlvbiBjYW4gb25seSBiZSBjYWxsZWQgYnkgdGhlIGBSZWplY3RPcmlnaW5gIG9yIHRoZSBjaGlsZC0vYm91bnR5IGN1cmF0b3IuACgjIyBEZXRhaWxzAMgtIFRoZSBjaGlsZC0vYm91bnR5IG11c3QgYmUgaW4gdGhlIGBBY3RpdmVgIHN0YXRlLj0BLSBpZiBhd2FyZGluZyBhIHBhcmVudCBib3VudHkgaXQgbXVzdCBub3QgaGF2ZSBhY3RpdmUgb3IgZnVuZGVkIGNoaWxkIGJvdW50aWVzLlkBLSBJbml0aWF0ZXMgcGF5b3V0IHBheW1lbnQgZnJvbSB0aGUgY2hpbGQtL2JvdW50eSB0byB0aGUgYmVuZWZpY2lhcnkgYWNjb3VudC9sb2NhdGlvbi4lAS0gSWYgc3VjY2Vzc2Z1bCB0aGUgY2hpbGQtL2JvdW50eSBzdGF0dXMgaXMgdXBkYXRlZCB0byBgUGF5b3V0QXR0ZW1wdGVkYC4xAS0gSW4gY2FzZSBvZiBhIHBheW91dCBmYWlsdXJlLCB0aGUgY2hpbGQtL2JvdW50eSBzdGF0dXMgbXVzdCBiZSB1cGRhdGVkIHdpdGj4YGNoZWNrX3N0YXR1c2AgY2FsbCBiZWZvcmUgcmV0cnlpbmcgd2l0aCBgcmV0cnlfcGF5bWVudGAgY2FsbC4AOCMjIyBQYXJhbWV0ZXJztC0gYHBhcmVudF9ib3VudHlfaWRgOiBJbmRleCBvZiBwYXJlbnQgYm91bnR5LqwtIGBjaGlsZF9ib3VudHlfaWRgOiBJbmRleCBvZiBjaGlsZC1ib3VudHkuCQEtIGBiZW5lZmljaWFyeWA6IEFjY291bnQvbG9jYXRpb24gdG8gYmUgYXdhcmRlZCB0aGUgY2hpbGQtL2JvdW50eS4AJCMjIEV2ZW50cwAFAUVtaXRzIFtgRXZlbnQ6OkJvdW50eUF3YXJkZWRgXSBhbmQgW2BFdmVudDo6UGFpZGBdIGlmIHN1Y2Nlc3NmdWwuMGNsb3NlX2JvdW50eQgBQHBhcmVudF9ib3VudHlfaWRkASxCb3VudHlJbmRleAABPGNoaWxkX2JvdW50eV9pZNgBTE9wdGlvbjxCb3VudHlJbmRleD4ABlxhAUNhbmNlbCBhbiBhY3RpdmUgY2hpbGQtL2JvdW50eS4gQSBwYXltZW50IHRvIHNlbmQgYWxsIHRoZSBmdW5kcyB0byB0aGUgZnVuZGluZyBzb3VyY2UgaXMwaW5pdGlhbGl6ZWQuAEgjIyBEaXNwYXRjaCBPcmlnaW4AUQFUaGlzIGZ1bmN0aW9uIGNhbiBvbmx5IGJlIGNhbGxlZCBieSB0aGUgYFJlamVjdE9yaWdpbmAgb3IgdGhlIHBhcmVudCBib3VudHkgY3VyYXRvci4AKCMjIERldGFpbHMAPQEtIElmIHRoZSBjaGlsZC0vYm91bnR5IGlzIGluIHRoZSBgRnVuZGVkYCBzdGF0ZSwgYSByZWZ1bmQgcGF5bWVudCBpcyBpbml0aWF0ZWQuWQEtIElmIHRoZSBjaGlsZC0vYm91bnR5IGlzIGluIHRoZSBgQWN0aXZlYCBzdGF0ZSwgYSByZWZ1bmQgcGF5bWVudCBpcyBpbml0aWF0ZWQgYW5kIHRoZREBICBjaGlsZC0vYm91bnR5IHN0YXR1cyBpcyB1cGRhdGVkIHdpdGggdGhlIGN1cmF0b3IgYWNjb3VudC9sb2NhdGlvbi5BAS0gSWYgdGhlIGNoaWxkLS9ib3VudHkgaXMgaW4gdGhlIGZ1bmRpbmcgb3IgcGF5b3V0IHBoYXNlLCBpdCBjYW5ub3QgYmUgY2FuY2VsZWQuQQEtIEluIGNhc2Ugb2YgYSByZWZ1bmQgZmFpbHVyZSwgdGhlIGNoaWxkLS9ib3VudHkgc3RhdHVzIG11c3QgYmUgdXBkYXRlZCB3aXRoIHRoZfhgY2hlY2tfc3RhdHVzYCBjYWxsIGJlZm9yZSByZXRyeWluZyB3aXRoIGByZXRyeV9wYXltZW50YCBjYWxsLgA4IyMjIFBhcmFtZXRlcnO0LSBgcGFyZW50X2JvdW50eV9pZGA6IEluZGV4IG9mIHBhcmVudCBib3VudHkurC0gYGNoaWxkX2JvdW50eV9pZGA6IEluZGV4IG9mIGNoaWxkLWJvdW50eS4AJCMjIEV2ZW50cwAJAUVtaXRzIFtgRXZlbnQ6OkJvdW50eUNhbmNlbGVkYF0gYW5kIFtgRXZlbnQ6OlBhaWRgXSBpZiBzdWNjZXNzZnVsLjBjaGVja19zdGF0dXMIAUBwYXJlbnRfYm91bnR5X2lkZAEsQm91bnR5SW5kZXgAATxjaGlsZF9ib3VudHlfaWTYAUxPcHRpb248Qm91bnR5SW5kZXg+AAdk3ENoZWNrIGFuZCB1cGRhdGUgdGhlIHBheW1lbnQgc3RhdHVzIG9mIGEgY2hpbGQtL2JvdW50eS4ASCMjIERpc3BhdGNoIE9yaWdpbgA8TXVzdCBiZSBzaWduZWQuACgjIyBEZXRhaWxzAFUBLSBJZiB0aGUgY2hpbGQtL2JvdW50eSBzdGF0dXMgaXMgYEZ1bmRpbmdBdHRlbXB0ZWRgLCBpdCBjaGVja3MgaWYgdGhlIGZ1bmRpbmcgcGF5bWVudA0BICBoYXMgc3VjY2VlZGVkLiBJZiBzdWNjZXNzZnVsLCB0aGUgYm91bnR5IHN0YXR1cyBiZWNvbWVzIGBGdW5kZWRgLl0BLSBJZiB0aGUgY2hpbGQtL2JvdW50eSBzdGF0dXMgaXMgYFJlZnVuZEF0dGVtcHRlZGAsIGl0IGNoZWNrcyBpZiB0aGUgcmVmdW5kIHBheW1lbnQgaGFzGQEgIHN1Y2NlZWRlZC4gSWYgc3VjY2Vzc2Z1bCwgdGhlIGNoaWxkLS9ib3VudHkgaXMgcmVtb3ZlZCBmcm9tIHN0b3JhZ2UuXQEtIElmIHRoZSBjaGlsZC0vYm91bnR5IHN0YXR1cyBpcyBgUGF5b3V0QXR0ZW1wdGVkYCwgaXQgY2hlY2tzIGlmIHRoZSBwYXlvdXQgcGF5bWVudCBoYXMZASAgc3VjY2VlZGVkLiBJZiBzdWNjZXNzZnVsLCB0aGUgY2hpbGQtL2JvdW50eSBpcyByZW1vdmVkIGZyb20gc3RvcmFnZS4AOCMjIyBQYXJhbWV0ZXJztC0gYHBhcmVudF9ib3VudHlfaWRgOiBJbmRleCBvZiBwYXJlbnQgYm91bnR5LqwtIGBjaGlsZF9ib3VudHlfaWRgOiBJbmRleCBvZiBjaGlsZC1ib3VudHkuACQjIyBFdmVudHMAXQFFbWl0cyBbYEV2ZW50OjpCb3VudHlCZWNhbWVBY3RpdmVgXSBpZiB0aGUgY2hpbGQvYm91bnR5IHN0YXR1cyB0cmFuc2l0aW9ucyB0byBgQWN0aXZlYC4lAUVtaXRzIFtgRXZlbnQ6OkJvdW50eVJlZnVuZFByb2Nlc3NlZGBdIGlmIHRoZSByZWZ1bmQgcGF5bWVudCBoYXMgc3VjY2VlZC4lAUVtaXRzIFtgRXZlbnQ6OkJvdW50eVBheW91dFByb2Nlc3NlZGBdIGlmIHRoZSBwYXlvdXQgcGF5bWVudCBoYXMgc3VjY2VlZC5VAUVtaXRzIFtgRXZlbnQ6OlBheW1lbnRGYWlsZWRgXSBpZiB0aGUgZnVuZGluZywgcmVmdW5kIG91ciBwYXltZW50IHBheW1lbnQgaGFzIGZhaWxlZC40cmV0cnlfcGF5bWVudAgBQHBhcmVudF9ib3VudHlfaWRkASxCb3VudHlJbmRleAABPGNoaWxkX2JvdW50eV9pZNgBTE9wdGlvbjxCb3VudHlJbmRleD4ACFi0UmV0cnkgdGhlIGZ1bmRpbmcsIHJlZnVuZCBvciBwYXlvdXQgcGF5bWVudHMuAEgjIyBEaXNwYXRjaCBPcmlnaW4APE11c3QgYmUgc2lnbmVkLgAoIyMgRGV0YWlscwBhAS0gSWYgdGhlIGNoaWxkLS9ib3VudHkgc3RhdHVzIGlzIGBGdW5kaW5nQXR0ZW1wdGVkYCwgaXQgcmV0cmllcyB0aGUgZnVuZGluZyBwYXltZW50IGZyb23QICBmdW5kaW5nIHNvdXJjZSB0aGUgY2hpbGQtL2JvdW50eSBhY2NvdW50L2xvY2F0aW9uLlkBLSBJZiB0aGUgY2hpbGQtL2JvdW50eSBzdGF0dXMgaXMgYFJlZnVuZEF0dGVtcHRlZGAsIGl0IHJldHJpZXMgdGhlIHJlZnVuZCBwYXltZW50IGZyb23sICB0aGUgY2hpbGQtL2JvdW50eSBhY2NvdW50L2xvY2F0aW9uIHRvIHRoZSBmdW5kaW5nIHNvdXJjZS5ZAS0gSWYgdGhlIGNoaWxkLS9ib3VudHkgc3RhdHVzIGlzIGBQYXlvdXRBdHRlbXB0ZWRgLCBpdCByZXRyaWVzIHRoZSBwYXlvdXQgcGF5bWVudCBmcm9tJQEgIHRoZSBjaGlsZC0vYm91bnR5IGFjY291bnQvbG9jYXRpb24gdG8gdGhlIGJlbmVmaWNpYXJ5IGFjY291bnQvbG9jYXRpb24uADgjIyMgUGFyYW1ldGVyc7QtIGBwYXJlbnRfYm91bnR5X2lkYDogSW5kZXggb2YgcGFyZW50IGJvdW50eS6sLSBgY2hpbGRfYm91bnR5X2lkYDogSW5kZXggb2YgY2hpbGQtYm91bnR5LgAkIyMgRXZlbnRzADUBRW1pdHMgW2BFdmVudDo6UGFpZGBdIGlmIHRoZSBmdW5kaW5nLCByZWZ1bmQgb3IgcGF5b3V0IHBheW1lbnQgaGFzIGluaXRpYXRlZC4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMulQcMNHBhbGxldF9haF9vcHMYcGFsbGV0EENhbGwEBFQAARRcdW5yZXNlcnZlX2xlYXNlX2RlcG9zaXQMARRibG9jazgBREJsb2NrTnVtYmVyRm9yPFQ+AAEkZGVwb3NpdG9yQQEBUE9wdGlvbjxUOjpBY2NvdW50SWQ+AAEccGFyYV9pZKABGFBhcmFJZAAAIPhVbnJlc2VydmUgdGhlIGRlcG9zaXQgdGhhdCB3YXMgdGFrZW4gZm9yIGNyZWF0aW5nIGEgY3Jvd2Rsb2FuLgBdAVRoaXMgY2FuIGJlIGNhbGxlZCBieSBhbnkgc2lnbmVkIG9yaWdpbi4gSXQgdW5yZXNlcnZlcyB0aGUgbGVhc2UgZGVwb3NpdCBvbiB0aGUgYWNjb3VudFkBdGhhdCB3b24gdGhlIGxlYXNlIGF1Y3Rpb24uIEl0IGNhbiBiZSB1bnJlc2VydmVkIG9uY2UgYWxsIGxlYXNlcyBleHBpcmVkLiBOb3RlIHRoYXQgaXRRAXdpbGwgYmUgY2FsbGVkIGF1dG9tYXRpY2FsbHkgZnJvbSBgd2l0aGRyYXdfY3Jvd2Rsb2FuX2NvbnRyaWJ1dGlvbmAgZm9yIHRoZSBtYXRjaGluZ0hjcm93ZGxvYW4gYWNjb3VudC4AUQFTb2xvIGJpZGRlciBhY2NvdW50cyB0aGF0IHdvbiBsZWFzZSBhdWN0aW9ucyBjYW4gdXNlIHRoaXMgdG8gdW5yZXNlcnZlIHRoZWlyIGFtb3VudC58d2l0aGRyYXdfY3Jvd2Rsb2FuX2NvbnRyaWJ1dGlvbgwBFGJsb2NrOAFEQmxvY2tOdW1iZXJGb3I8VD4AASRkZXBvc2l0b3JBAQFQT3B0aW9uPFQ6OkFjY291bnRJZD4AARxwYXJhX2lkoAEYUGFyYUlkAAEcyFdpdGhkcmF3IHRoZSBjb250cmlidXRpb24gb2YgYSBmaW5pc2hlZCBjcm93ZGxvYW4uANBBIGNyb3dkbG9hbiBjb250cmlidXRpb24gY2FuIGJlIHdpdGhkcmF3biBpZiBlaXRoZXI61C0gVGhlIGNyb3dkbG9hbiBmYWlsZWQgdG8gaW4gYW4gYXVjdGlvbiBhbmQgdGltZWQgb3V0nC0gV29uIGFuIGF1Y3Rpb24gYW5kIGFsbCBsZWFzZXMgZXhwaXJlZACMQ2FuIGJlIGNhbGxlZCBieSBhbnkgc2lnbmVkIG9yaWdpbi5sdW5yZXNlcnZlX2Nyb3dkbG9hbl9yZXNlcnZlDAEUYmxvY2s4AURCbG9ja051bWJlckZvcjxUPgABJGRlcG9zaXRvckEBAVBPcHRpb248VDo6QWNjb3VudElkPgABHHBhcmFfaWSgARhQYXJhSWQAAiD4VW5yZXNlcnZlIHRoZSBkZXBvc2l0IHRoYXQgd2FzIHRha2VuIGZvciBjcmVhdGluZyBhIGNyb3dkbG9hbi4AfFRoaXMgY2FuIGJlIGNhbGxlZCBvbmNlIGVpdGhlcjrYLSBUaGUgY3Jvd2Rsb2FuIGZhaWxlZCB0byB3aW4gYW4gYXVjdGlvbiBhbmQgdGltZWQgb3V0IQEtIFdvbiBhbiBhdWN0aW9uLCBhbGwgbGVhc2VzIGV4cGlyZWQgYW5kIGFsbCBjb250cmlidXRpb25zIGFyZSB3aXRoZHJhd24AWQFDYW4gYmUgY2FsbGVkIGJ5IGFueSBzaWduZWQgb3JpZ2luLiBUaGUgY29uZGl0aW9uIHRoYXQgYWxsIGNvbnRyaWJ1dGlvbnMgYXJlIHdpdGhkcmF3buBpcyBpbiBwbGFjZSBzaW5jZSB0aGUgcmVzZXJ2ZSBhY3RzIGFzIGEgc3RvcmFnZSBkZXBvc2l0Lox0cmFuc2Zlcl90b19wb3N0X21pZ3JhdGlvbl90cmVhc3VyeQQBIGFzc2V0X2lkOQIB+EJveDw8VDo6RnVuZ2libGVzIGFzIEZ1bmdpYmxlc0luc3BlY3Q8VDo6QWNjb3VudElkPj46OkFzc2V0SWQ+AAMQSQFUcmFuc2ZlciB0aGUgYmFsYW5jZSBmcm9tIHRoZSBwcmUtbWlncmF0aW9uIHRyZWFzdXJ5IGFjY291bnQgdG8gdGhlIHBvc3QtbWlncmF0aW9uRHRyZWFzdXJ5IGFjY291bnQuAPhUaGlzIGNhbGwgY2FuIG9ubHkgYmUgY2FsbGVkIGFmdGVyIHRoZSBtaWdyYXRpb24gaXMgY29tcGxldGVkLsR0cmFuc2xhdGVfcGFyYV9zb3ZlcmVpZ25fY2hpbGRfdG9fc2libGluZ19kZXJpdmVkEAEccGFyYV9pZPkDAQx1MTYAATxkZXJpdmF0aW9uX3BhdGiZBwEgVmVjPHUxNj4AASxvbGRfYWNjb3VudAQBMFQ6OkFjY291bnRJZAABLG5ld19hY2NvdW50BAEwVDo6QWNjb3VudElkAAQsPQFUcmFuc2xhdGUgcmVjdXJzaXZlbHkgZGVyaXZlZCBwYXJhY2hhaW4gc292ZXJlaWduIGNoaWxkIGFjY291bnQgdG8gaXRzIHNpYmxpbmcuAGEBVXNlcyB0aGUgc2FtZSBkZXJpdmF0aW9uIHBhdGggb24gdGhlIHNpYmxpbmcuIFRoZSBvbGQgYW5kIG5ldyBhY2NvdW50IGFyZ3VtZW50cyBhcmUgb25seUEBd2l0bmVzcyBkYXRhIHRvIGVuc3VyZSBjb3JyZWN0IHVzYWdlLiBDYW4gb25seSBiZSBjYWxsZWQgYnkgdGhlIGBNaWdyYXRlT3JpZ2luYC4AOFRoaXMgbWlncmF0ZXM6UC0gTmF0aXZlIERPVCBiYWxhbmNlqC0gQWxsIGFzc2V0cyBsaXN0ZWQgaW4gYFQ6OlJlbGV2YW50QXNzZXRzYEQtIFN0YWtlZCBiYWxhbmNlcwBJAVRoaW5ncyBsaWtlIG5vbi1yZWxldmFudCBhc3NldHMgb3IgdmVzdGVkIHRyYW5zZmVycyBtYXkgcmVtYWluIG9uIHRoZSBvbGQgYWNjb3VudC4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMumQcAAAL5AwCdBxAwZnJhbWVfc3lzdGVtKGV4dGVuc2lvbnM4YXV0aG9yaXplX2NhbGw0QXV0aG9yaXplQ2FsbAQEVAAAAAChBxAwZnJhbWVfc3lzdGVtKGV4dGVuc2lvbnNUY2hlY2tfbm9uX3plcm9fc2VuZGVySENoZWNrTm9uWmVyb1NlbmRlcgQEVAAAAAClBxAwZnJhbWVfc3lzdGVtKGV4dGVuc2lvbnNIY2hlY2tfc3BlY192ZXJzaW9uQENoZWNrU3BlY1ZlcnNpb24EBFQAAAAAqQcQMGZyYW1lX3N5c3RlbShleHRlbnNpb25zQGNoZWNrX3R4X3ZlcnNpb244Q2hlY2tUeFZlcnNpb24EBFQAAAAArQcQMGZyYW1lX3N5c3RlbShleHRlbnNpb25zNGNoZWNrX2dlbmVzaXMwQ2hlY2tHZW5lc2lzBARUAAAAALEHEDBmcmFtZV9zeXN0ZW0oZXh0ZW5zaW9uczxjaGVja19tb3J0YWxpdHk4Q2hlY2tNb3J0YWxpdHkEBFQAAAQAtQcBDEVyYQAAtQcQKHNwX3J1bnRpbWUcZ2VuZXJpYwxlcmEMRXJhAAEBBCBJbW1vcnRhbAAAABxNb3J0YWwxBAAMAAABABxNb3J0YWwyBAAMAAACABxNb3J0YWwzBAAMAAADABxNb3J0YWw0BAAMAAAEABxNb3J0YWw1BAAMAAAFABxNb3J0YWw2BAAMAAAGABxNb3J0YWw3BAAMAAAHABxNb3J0YWw4BAAMAAAIABxNb3J0YWw5BAAMAAAJACBNb3J0YWwxMAQADAAACgAgTW9ydGFsMTEEAAwAAAsAIE1vcnRhbDEyBAAMAAAMACBNb3J0YWwxMwQADAAADQAgTW9ydGFsMTQEAAwAAA4AIE1vcnRhbDE1BAAMAAAPACBNb3J0YWwxNgQADAAAEAAgTW9ydGFsMTcEAAwAABEAIE1vcnRhbDE4BAAMAAASACBNb3J0YWwxOQQADAAAEwAgTW9ydGFsMjAEAAwAABQAIE1vcnRhbDIxBAAMAAAVACBNb3J0YWwyMgQADAAAFgAgTW9ydGFsMjMEAAwAABcAIE1vcnRhbDI0BAAMAAAYACBNb3J0YWwyNQQADAAAGQAgTW9ydGFsMjYEAAwAABoAIE1vcnRhbDI3BAAMAAAbACBNb3J0YWwyOAQADAAAHAAgTW9ydGFsMjkEAAwAAB0AIE1vcnRhbDMwBAAMAAAeACBNb3J0YWwzMQQADAAAHwAgTW9ydGFsMzIEAAwAACAAIE1vcnRhbDMzBAAMAAAhACBNb3J0YWwzNAQADAAAIgAgTW9ydGFsMzUEAAwAACMAIE1vcnRhbDM2BAAMAAAkACBNb3J0YWwzNwQADAAAJQAgTW9ydGFsMzgEAAwAACYAIE1vcnRhbDM5BAAMAAAnACBNb3J0YWw0MAQADAAAKAAgTW9ydGFsNDEEAAwAACkAIE1vcnRhbDQyBAAMAAAqACBNb3J0YWw0MwQADAAAKwAgTW9ydGFsNDQEAAwAACwAIE1vcnRhbDQ1BAAMAAAtACBNb3J0YWw0NgQADAAALgAgTW9ydGFsNDcEAAwAAC8AIE1vcnRhbDQ4BAAMAAAwACBNb3J0YWw0OQQADAAAMQAgTW9ydGFsNTAEAAwAADIAIE1vcnRhbDUxBAAMAAAzACBNb3J0YWw1MgQADAAANAAgTW9ydGFsNTMEAAwAADUAIE1vcnRhbDU0BAAMAAA2ACBNb3J0YWw1NQQADAAANwAgTW9ydGFsNTYEAAwAADgAIE1vcnRhbDU3BAAMAAA5ACBNb3J0YWw1OAQADAAAOgAgTW9ydGFsNTkEAAwAADsAIE1vcnRhbDYwBAAMAAA8ACBNb3J0YWw2MQQADAAAPQAgTW9ydGFsNjIEAAwAAD4AIE1vcnRhbDYzBAAMAAA/ACBNb3J0YWw2NAQADAAAQAAgTW9ydGFsNjUEAAwAAEEAIE1vcnRhbDY2BAAMAABCACBNb3J0YWw2NwQADAAAQwAgTW9ydGFsNjgEAAwAAEQAIE1vcnRhbDY5BAAMAABFACBNb3J0YWw3MAQADAAARgAgTW9ydGFsNzEEAAwAAEcAIE1vcnRhbDcyBAAMAABIACBNb3J0YWw3MwQADAAASQAgTW9ydGFsNzQEAAwAAEoAIE1vcnRhbDc1BAAMAABLACBNb3J0YWw3NgQADAAATAAgTW9ydGFsNzcEAAwAAE0AIE1vcnRhbDc4BAAMAABOACBNb3J0YWw3OQQADAAATwAgTW9ydGFsODAEAAwAAFAAIE1vcnRhbDgxBAAMAABRACBNb3J0YWw4MgQADAAAUgAgTW9ydGFsODMEAAwAAFMAIE1vcnRhbDg0BAAMAABUACBNb3J0YWw4NQQADAAAVQAgTW9ydGFsODYEAAwAAFYAIE1vcnRhbDg3BAAMAABXACBNb3J0YWw4OAQADAAAWAAgTW9ydGFsODkEAAwAAFkAIE1vcnRhbDkwBAAMAABaACBNb3J0YWw5MQQADAAAWwAgTW9ydGFsOTIEAAwAAFwAIE1vcnRhbDkzBAAMAABdACBNb3J0YWw5NAQADAAAXgAgTW9ydGFsOTUEAAwAAF8AIE1vcnRhbDk2BAAMAABgACBNb3J0YWw5NwQADAAAYQAgTW9ydGFsOTgEAAwAAGIAIE1vcnRhbDk5BAAMAABjACRNb3J0YWwxMDAEAAwAAGQAJE1vcnRhbDEwMQQADAAAZQAkTW9ydGFsMTAyBAAMAABmACRNb3J0YWwxMDMEAAwAAGcAJE1vcnRhbDEwNAQADAAAaAAkTW9ydGFsMTA1BAAMAABpACRNb3J0YWwxMDYEAAwAAGoAJE1vcnRhbDEwNwQADAAAawAkTW9ydGFsMTA4BAAMAABsACRNb3J0YWwxMDkEAAwAAG0AJE1vcnRhbDExMAQADAAAbgAkTW9ydGFsMTExBAAMAABvACRNb3J0YWwxMTIEAAwAAHAAJE1vcnRhbDExMwQADAAAcQAkTW9ydGFsMTE0BAAMAAByACRNb3J0YWwxMTUEAAwAAHMAJE1vcnRhbDExNgQADAAAdAAkTW9ydGFsMTE3BAAMAAB1ACRNb3J0YWwxMTgEAAwAAHYAJE1vcnRhbDExOQQADAAAdwAkTW9ydGFsMTIwBAAMAAB4ACRNb3J0YWwxMjEEAAwAAHkAJE1vcnRhbDEyMgQADAAAegAkTW9ydGFsMTIzBAAMAAB7ACRNb3J0YWwxMjQEAAwAAHwAJE1vcnRhbDEyNQQADAAAfQAkTW9ydGFsMTI2BAAMAAB+ACRNb3J0YWwxMjcEAAwAAH8AJE1vcnRhbDEyOAQADAAAgAAkTW9ydGFsMTI5BAAMAACBACRNb3J0YWwxMzAEAAwAAIIAJE1vcnRhbDEzMQQADAAAgwAkTW9ydGFsMTMyBAAMAACEACRNb3J0YWwxMzMEAAwAAIUAJE1vcnRhbDEzNAQADAAAhgAkTW9ydGFsMTM1BAAMAACHACRNb3J0YWwxMzYEAAwAAIgAJE1vcnRhbDEzNwQADAAAiQAkTW9ydGFsMTM4BAAMAACKACRNb3J0YWwxMzkEAAwAAIsAJE1vcnRhbDE0MAQADAAAjAAkTW9ydGFsMTQxBAAMAACNACRNb3J0YWwxNDIEAAwAAI4AJE1vcnRhbDE0MwQADAAAjwAkTW9ydGFsMTQ0BAAMAACQACRNb3J0YWwxNDUEAAwAAJEAJE1vcnRhbDE0NgQADAAAkgAkTW9ydGFsMTQ3BAAMAACTACRNb3J0YWwxNDgEAAwAAJQAJE1vcnRhbDE0OQQADAAAlQAkTW9ydGFsMTUwBAAMAACWACRNb3J0YWwxNTEEAAwAAJcAJE1vcnRhbDE1MgQADAAAmAAkTW9ydGFsMTUzBAAMAACZACRNb3J0YWwxNTQEAAwAAJoAJE1vcnRhbDE1NQQADAAAmwAkTW9ydGFsMTU2BAAMAACcACRNb3J0YWwxNTcEAAwAAJ0AJE1vcnRhbDE1OAQADAAAngAkTW9ydGFsMTU5BAAMAACfACRNb3J0YWwxNjAEAAwAAKAAJE1vcnRhbDE2MQQADAAAoQAkTW9ydGFsMTYyBAAMAACiACRNb3J0YWwxNjMEAAwAAKMAJE1vcnRhbDE2NAQADAAApAAkTW9ydGFsMTY1BAAMAAClACRNb3J0YWwxNjYEAAwAAKYAJE1vcnRhbDE2NwQADAAApwAkTW9ydGFsMTY4BAAMAACoACRNb3J0YWwxNjkEAAwAAKkAJE1vcnRhbDE3MAQADAAAqgAkTW9ydGFsMTcxBAAMAACrACRNb3J0YWwxNzIEAAwAAKwAJE1vcnRhbDE3MwQADAAArQAkTW9ydGFsMTc0BAAMAACuACRNb3J0YWwxNzUEAAwAAK8AJE1vcnRhbDE3NgQADAAAsAAkTW9ydGFsMTc3BAAMAACxACRNb3J0YWwxNzgEAAwAALIAJE1vcnRhbDE3OQQADAAAswAkTW9ydGFsMTgwBAAMAAC0ACRNb3J0YWwxODEEAAwAALUAJE1vcnRhbDE4MgQADAAAtgAkTW9ydGFsMTgzBAAMAAC3ACRNb3J0YWwxODQEAAwAALgAJE1vcnRhbDE4NQQADAAAuQAkTW9ydGFsMTg2BAAMAAC6ACRNb3J0YWwxODcEAAwAALsAJE1vcnRhbDE4OAQADAAAvAAkTW9ydGFsMTg5BAAMAAC9ACRNb3J0YWwxOTAEAAwAAL4AJE1vcnRhbDE5MQQADAAAvwAkTW9ydGFsMTkyBAAMAADAACRNb3J0YWwxOTMEAAwAAMEAJE1vcnRhbDE5NAQADAAAwgAkTW9ydGFsMTk1BAAMAADDACRNb3J0YWwxOTYEAAwAAMQAJE1vcnRhbDE5NwQADAAAxQAkTW9ydGFsMTk4BAAMAADGACRNb3J0YWwxOTkEAAwAAMcAJE1vcnRhbDIwMAQADAAAyAAkTW9ydGFsMjAxBAAMAADJACRNb3J0YWwyMDIEAAwAAMoAJE1vcnRhbDIwMwQADAAAywAkTW9ydGFsMjA0BAAMAADMACRNb3J0YWwyMDUEAAwAAM0AJE1vcnRhbDIwNgQADAAAzgAkTW9ydGFsMjA3BAAMAADPACRNb3J0YWwyMDgEAAwAANAAJE1vcnRhbDIwOQQADAAA0QAkTW9ydGFsMjEwBAAMAADSACRNb3J0YWwyMTEEAAwAANMAJE1vcnRhbDIxMgQADAAA1AAkTW9ydGFsMjEzBAAMAADVACRNb3J0YWwyMTQEAAwAANYAJE1vcnRhbDIxNQQADAAA1wAkTW9ydGFsMjE2BAAMAADYACRNb3J0YWwyMTcEAAwAANkAJE1vcnRhbDIxOAQADAAA2gAkTW9ydGFsMjE5BAAMAADbACRNb3J0YWwyMjAEAAwAANwAJE1vcnRhbDIyMQQADAAA3QAkTW9ydGFsMjIyBAAMAADeACRNb3J0YWwyMjMEAAwAAN8AJE1vcnRhbDIyNAQADAAA4AAkTW9ydGFsMjI1BAAMAADhACRNb3J0YWwyMjYEAAwAAOIAJE1vcnRhbDIyNwQADAAA4wAkTW9ydGFsMjI4BAAMAADkACRNb3J0YWwyMjkEAAwAAOUAJE1vcnRhbDIzMAQADAAA5gAkTW9ydGFsMjMxBAAMAADnACRNb3J0YWwyMzIEAAwAAOgAJE1vcnRhbDIzMwQADAAA6QAkTW9ydGFsMjM0BAAMAADqACRNb3J0YWwyMzUEAAwAAOsAJE1vcnRhbDIzNgQADAAA7AAkTW9ydGFsMjM3BAAMAADtACRNb3J0YWwyMzgEAAwAAO4AJE1vcnRhbDIzOQQADAAA7wAkTW9ydGFsMjQwBAAMAADwACRNb3J0YWwyNDEEAAwAAPEAJE1vcnRhbDI0MgQADAAA8gAkTW9ydGFsMjQzBAAMAADzACRNb3J0YWwyNDQEAAwAAPQAJE1vcnRhbDI0NQQADAAA9QAkTW9ydGFsMjQ2BAAMAAD2ACRNb3J0YWwyNDcEAAwAAPcAJE1vcnRhbDI0OAQADAAA+AAkTW9ydGFsMjQ5BAAMAAD5ACRNb3J0YWwyNTAEAAwAAPoAJE1vcnRhbDI1MQQADAAA+wAkTW9ydGFsMjUyBAAMAAD8ACRNb3J0YWwyNTMEAAwAAP0AJE1vcnRhbDI1NAQADAAA/gAkTW9ydGFsMjU1BAAMAAD/AAC5BxAwZnJhbWVfc3lzdGVtKGV4dGVuc2lvbnMsY2hlY2tfbm9uY2UoQ2hlY2tOb25jZQQEVAAABABkASBUOjpOb25jZQAAvQcQMGZyYW1lX3N5c3RlbShleHRlbnNpb25zMGNoZWNrX3dlaWdodCxDaGVja1dlaWdodAQEVAAAAADBBwiIcGFsbGV0X2Fzc2V0X2NvbnZlcnNpb25fdHhfcGF5bWVudFBDaGFyZ2VBc3NldFR4UGF5bWVudAQEVAAACAEMdGlwkQEBMEJhbGFuY2VPZjxUPgABIGFzc2V0X2lkdQMBSE9wdGlvbjxUOjpBc3NldElkPgAAxQcMXHBvbGthZG90X3J1bnRpbWVfY29tbW9uGGNsYWltc0hQcmV2YWxpZGF0ZUF0dGVzdHMEBFQAAAAAyQcIdGZyYW1lX21ldGFkYXRhX2hhc2hfZXh0ZW5zaW9uRENoZWNrTWV0YWRhdGFIYXNoBARUAAAEARBtb2RlzQcBEE1vZGUAAM0HCHRmcmFtZV9tZXRhZGF0YV9oYXNoX2V4dGVuc2lvbhBNb2RlAAEIIERpc2FibGVkAAAAHEVuYWJsZWQAAQAA0QcQNHBhbGxldF9yZXZpdmUMZXZtMHR4X2V4dGVuc2lvbiRTZXRPcmlnaW4EBFQAAAAA1QcIMGZyYW1lX3N5c3RlbSxBY2NvdW50SW5mbwgUTm9uY2UBOCxBY2NvdW50RGF0YQHZBwAUARRub25jZTgBFE5vbmNlAAEkY29uc3VtZXJzOAEgUmVmQ291bnQAASRwcm92aWRlcnM4ASBSZWZDb3VudAABLHN1ZmZpY2llbnRzOAEgUmVmQ291bnQAARBkYXRh2QcBLEFjY291bnREYXRhAADZBww8cGFsbGV0X2JhbGFuY2VzFHR5cGVzLEFjY291bnREYXRhBBxCYWxhbmNlAZUBABABEGZyZWWVAQEcQmFsYW5jZQABIHJlc2VydmVklQEBHEJhbGFuY2UAARhmcm96ZW6VAQEcQmFsYW5jZQABFGZsYWdz3QcBKEV4dHJhRmxhZ3MAAN0HDDxwYWxsZXRfYmFsYW5jZXMUdHlwZXMoRXh0cmFGbGFncwAABACVAQEQdTEyOAAA4QcMNGZyYW1lX3N1cHBvcnQgZGlzcGF0Y2hAUGVyRGlzcGF0Y2hDbGFzcwQEVAF5AQAMARhub3JtYWx5AQEEVAABLG9wZXJhdGlvbmFseQEBBFQAASRtYW5kYXRvcnl5AQEEVAAA5QcAAALpBwDpBwgwZnJhbWVfc3lzdGVtLEV2ZW50UmVjb3JkCARFAe0HBFQBQAAMARRwaGFzZbEJARRQaGFzZQABFGV2ZW507QcBBEUAARh0b3BpY3PwARhWZWM8VD4AAO0HCGBhc3NldF9odWJfa3VzYW1hX3J1bnRpbWUwUnVudGltZUV2ZW50AAHIGFN5c3RlbQQA8QcBcGZyYW1lX3N5c3RlbTo6RXZlbnQ8UnVudGltZT4AAAA8UGFyYWNoYWluU3lzdGVtBAAZCAG8Y3VtdWx1c19wYWxsZXRfcGFyYWNoYWluX3N5c3RlbTo6RXZlbnQ8UnVudGltZT4AAQBQTXVsdGlCbG9ja01pZ3JhdGlvbnMEAB0IAYRwYWxsZXRfbWlncmF0aW9uczo6RXZlbnQ8UnVudGltZT4ABQAgUHJlaW1hZ2UEACEIAXxwYWxsZXRfcHJlaW1hZ2U6OkV2ZW50PFJ1bnRpbWU+AAYAJFNjaGVkdWxlcgQAJQgBgHBhbGxldF9zY2hlZHVsZXI6OkV2ZW50PFJ1bnRpbWU+AAcAKFBhcmFtZXRlcnMEAC0IAYRwYWxsZXRfcGFyYW1ldGVyczo6RXZlbnQ8UnVudGltZT4ACAAgQmFsYW5jZXMEAGUIAXxwYWxsZXRfYmFsYW5jZXM6OkV2ZW50PFJ1bnRpbWU+AAoASFRyYW5zYWN0aW9uUGF5bWVudAQApQgBqHBhbGxldF90cmFuc2FjdGlvbl9wYXltZW50OjpFdmVudDxSdW50aW1lPgALADhBc3NldFR4UGF5bWVudAQAqQgByHBhbGxldF9hc3NldF9jb252ZXJzaW9uX3R4X3BheW1lbnQ6OkV2ZW50PFJ1bnRpbWU+AA0AHFZlc3RpbmcEAK0IAXhwYWxsZXRfdmVzdGluZzo6RXZlbnQ8UnVudGltZT4ADgAYQ2xhaW1zBACxCAF0cGFsbGV0X2NsYWltczo6RXZlbnQ8UnVudGltZT4ADwBEQ29sbGF0b3JTZWxlY3Rpb24EALUIAaRwYWxsZXRfY29sbGF0b3Jfc2VsZWN0aW9uOjpFdmVudDxSdW50aW1lPgAVABxTZXNzaW9uBAC5CAF4cGFsbGV0X3Nlc3Npb246OkV2ZW50PFJ1bnRpbWU+ABYAJFhjbXBRdWV1ZQQAvQgBpGN1bXVsdXNfcGFsbGV0X3hjbXBfcXVldWU6OkV2ZW50PFJ1bnRpbWU+AB4ALFBvbGthZG90WGNtBADBCAFocGFsbGV0X3hjbTo6RXZlbnQ8UnVudGltZT4AHwAoQ3VtdWx1c1hjbQQA0QgBiGN1bXVsdXNfcGFsbGV0X3hjbTo6RXZlbnQ8UnVudGltZT4AIABMVG9Qb2xrYWRvdFhjbVJvdXRlcgQA1QgBWQFwYWxsZXRfeGNtX2JyaWRnZV9odWJfcm91dGVyOjpFdmVudDxSdW50aW1lLCBwYWxsZXRfeGNtX2JyaWRnZV9odWJfcm91dGVyCjo6SW5zdGFuY2UxPgAiADBNZXNzYWdlUXVldWUEANkIAZBwYWxsZXRfbWVzc2FnZV9xdWV1ZTo6RXZlbnQ8UnVudGltZT4AIwAcVXRpbGl0eQQA4QgBVHBhbGxldF91dGlsaXR5OjpFdmVudAAoACBNdWx0aXNpZwQA5QgBfHBhbGxldF9tdWx0aXNpZzo6RXZlbnQ8UnVudGltZT4AKQAUUHJveHkEAOkIAXBwYWxsZXRfcHJveHk6OkV2ZW50PFJ1bnRpbWU+ACoAHEluZGljZXMEAPEIAXhwYWxsZXRfaW5kaWNlczo6RXZlbnQ8UnVudGltZT4ALAAYQXNzZXRzBAD1CAHccGFsbGV0X2Fzc2V0czo6RXZlbnQ8UnVudGltZSwgcGFsbGV0X2Fzc2V0czo6SW5zdGFuY2UxPgAyABxVbmlxdWVzBAD5CAF4cGFsbGV0X3VuaXF1ZXM6OkV2ZW50PFJ1bnRpbWU+ADMAEE5mdHMEAP0IAWxwYWxsZXRfbmZ0czo6RXZlbnQ8UnVudGltZT4ANAA0Rm9yZWlnbkFzc2V0cwQABQkB3HBhbGxldF9hc3NldHM6OkV2ZW50PFJ1bnRpbWUsIHBhbGxldF9hc3NldHM6Okluc3RhbmNlMj4ANQBQTmZ0RnJhY3Rpb25hbGl6YXRpb24EAAkJAbBwYWxsZXRfbmZ0X2ZyYWN0aW9uYWxpemF0aW9uOjpFdmVudDxSdW50aW1lPgA2AChQb29sQXNzZXRzBAANCQHccGFsbGV0X2Fzc2V0czo6RXZlbnQ8UnVudGltZSwgcGFsbGV0X2Fzc2V0czo6SW5zdGFuY2UzPgA3ADxBc3NldENvbnZlcnNpb24EABEJAZxwYWxsZXRfYXNzZXRfY29udmVyc2lvbjo6RXZlbnQ8UnVudGltZT4AOAAgUmVjb3ZlcnkEACEJAXxwYWxsZXRfcmVjb3Zlcnk6OkV2ZW50PFJ1bnRpbWU+ADkAHFNvY2lldHkEACUJAXhwYWxsZXRfc29jaWV0eTo6RXZlbnQ8UnVudGltZT4AOgAYUmV2aXZlBAAtCQF0cGFsbGV0X3Jldml2ZTo6RXZlbnQ8UnVudGltZT4APABIU3RhdGVUcmllTWlncmF0aW9uBAAxCQGscGFsbGV0X3N0YXRlX3RyaWVfbWlncmF0aW9uOjpFdmVudDxSdW50aW1lPgBGADxOb21pbmF0aW9uUG9vbHMEAD0JAZxwYWxsZXRfbm9taW5hdGlvbl9wb29sczo6RXZlbnQ8UnVudGltZT4AUAAkVm90ZXJMaXN0BABFCQH0cGFsbGV0X2JhZ3NfbGlzdDo6RXZlbnQ8UnVudGltZSwgcGFsbGV0X2JhZ3NfbGlzdDo6SW5zdGFuY2UxPgBSAEBEZWxlZ2F0ZWRTdGFraW5nBABJCQGgcGFsbGV0X2RlbGVnYXRlZF9zdGFraW5nOjpFdmVudDxSdW50aW1lPgBTADxTdGFraW5nUmNDbGllbnQEAE0JAbhwYWxsZXRfc3Rha2luZ19hc3luY19yY19jbGllbnQ6OkV2ZW50PFJ1bnRpbWU+AFQASE11bHRpQmxvY2tFbGVjdGlvbgQAVQkB0HBhbGxldF9lbGVjdGlvbl9wcm92aWRlcl9tdWx0aV9ibG9jazo6RXZlbnQ8UnVudGltZT4AVQBoTXVsdGlCbG9ja0VsZWN0aW9uVmVyaWZpZXIEAFkJAfhwYWxsZXRfZWxlY3Rpb25fcHJvdmlkZXJfbXVsdGlfYmxvY2s6OnZlcmlmaWVyOjpFdmVudDxSdW50aW1lPgBWAGBNdWx0aUJsb2NrRWxlY3Rpb25TaWduZWQEAGkJAfBwYWxsZXRfZWxlY3Rpb25fcHJvdmlkZXJfbXVsdGlfYmxvY2s6OnNpZ25lZDo6RXZlbnQ8UnVudGltZT4AWAAcU3Rha2luZwQAbQkBkHBhbGxldF9zdGFraW5nX2FzeW5jOjpFdmVudDxSdW50aW1lPgBZACBUcmVhc3VyeQQAfQkBfHBhbGxldF90cmVhc3VyeTo6RXZlbnQ8UnVudGltZT4AWgBAQ29udmljdGlvblZvdGluZwQAgQkBoHBhbGxldF9jb252aWN0aW9uX3ZvdGluZzo6RXZlbnQ8UnVudGltZT4AWwAkUmVmZXJlbmRhBACFCQGAcGFsbGV0X3JlZmVyZW5kYTo6RXZlbnQ8UnVudGltZT4AXAAkV2hpdGVsaXN0BACNCQGAcGFsbGV0X3doaXRlbGlzdDo6RXZlbnQ8UnVudGltZT4AXgAgQm91bnRpZXMEAJ0JAXxwYWxsZXRfYm91bnRpZXM6OkV2ZW50PFJ1bnRpbWU+AF8ANENoaWxkQm91bnRpZXMEAKEJAZRwYWxsZXRfY2hpbGRfYm91bnRpZXM6OkV2ZW50PFJ1bnRpbWU+AGAAJEFzc2V0UmF0ZQQApQkBhHBhbGxldF9hc3NldF9yYXRlOjpFdmVudDxSdW50aW1lPgBhAEhNdWx0aUFzc2V0Qm91bnRpZXMEAKkJAaxwYWxsZXRfbXVsdGlfYXNzZXRfYm91bnRpZXM6OkV2ZW50PFJ1bnRpbWU+AGIAFEFoT3BzBACtCQF0cGFsbGV0X2FoX29wczo6RXZlbnQ8UnVudGltZT4A/gAA8QcMMGZyYW1lX3N5c3RlbRhwYWxsZXQURXZlbnQEBFQAASxARXh0cmluc2ljU3VjY2VzcwQBNGRpc3BhdGNoX2luZm/1BwFERGlzcGF0Y2hFdmVudEluZm8AAASQQW4gZXh0cmluc2ljIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkuPEV4dHJpbnNpY0ZhaWxlZAgBOGRpc3BhdGNoX2Vycm9yAQgBNERpc3BhdGNoRXJyb3IAATRkaXNwYXRjaF9pbmZv9QcBRERpc3BhdGNoRXZlbnRJbmZvAAEEUEFuIGV4dHJpbnNpYyBmYWlsZWQuLENvZGVVcGRhdGVkBAEQaGFzaEABHFQ6Okhhc2gAAgTQYDpjb2RlYCB3YXMgdXBkYXRlZCB0byB0aGUgY29kZSB3aXRoIHRoZSBnaXZlbiBoYXNoLihOZXdBY2NvdW50BAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAADBGhBIG5ldyBhY2NvdW50IHdhcyBjcmVhdGVkLjRLaWxsZWRBY2NvdW50BAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAAEBFhBbiBhY2NvdW50IHdhcyByZWFwZWQuIFJlbWFya2VkCAEYc2VuZGVyBAEwVDo6QWNjb3VudElkAAEQaGFzaEABHFQ6Okhhc2gABQRwT24gb24tY2hhaW4gcmVtYXJrIGhhcHBlbmVkLixUYXNrU3RhcnRlZAQBEHRhc2s8AThUOjpSdW50aW1lVGFzawAGBIBBIFtgVGFza2BdIGhhcyBzdGFydGVkIGV4ZWN1dGluZzRUYXNrQ29tcGxldGVkBAEQdGFzazwBOFQ6OlJ1bnRpbWVUYXNrAAcEiEEgW2BUYXNrYF0gaGFzIGZpbmlzaGVkIGV4ZWN1dGluZy4oVGFza0ZhaWxlZAgBEHRhc2s8AThUOjpSdW50aW1lVGFzawABDGVycgEIATREaXNwYXRjaEVycm9yAAgEjEEgW2BUYXNrYF0gZmFpbGVkIGR1cmluZyBleGVjdXRpb24uRFVwZ3JhZGVBdXRob3JpemVkCAEkY29kZV9oYXNoQAEcVDo6SGFzaAABNGNoZWNrX3ZlcnNpb26ZAQEQYm9vbAAJBGhBbiB1cGdyYWRlIHdhcyBhdXRob3JpemVkLoBSZWplY3RlZEludmFsaWRBdXRob3JpemVkVXBncmFkZQgBJGNvZGVfaGFzaEABHFQ6Okhhc2gAARRlcnJvcgEIATREaXNwYXRjaEVycm9yAAoEEQFBbiBpbnZhbGlkIGF1dGhvcml6ZWQgdXBncmFkZSB3YXMgcmVqZWN0ZWQgd2hpbGUgdHJ5aW5nIHRvIGFwcGx5IGl0LgRwRXZlbnQgZm9yIHRoZSBTeXN0ZW0gcGFsbGV0LvUHCDBmcmFtZV9zeXN0ZW1ERGlzcGF0Y2hFdmVudEluZm8AAAwBGHdlaWdodHkBARhXZWlnaHQAARRjbGFzc/kHATREaXNwYXRjaENsYXNzAAEgcGF5c19mZWX9BwEQUGF5cwAA+QcMNGZyYW1lX3N1cHBvcnQgZGlzcGF0Y2g0RGlzcGF0Y2hDbGFzcwABDBhOb3JtYWwAAAAsT3BlcmF0aW9uYWwAAQAkTWFuZGF0b3J5AAIAAP0HDDRmcmFtZV9zdXBwb3J0IGRpc3BhdGNoEFBheXMAAQgMWWVzAAAACE5vAAEAAAEICChzcF9ydW50aW1lNERpc3BhdGNoRXJyb3IAATwUT3RoZXIAAAAwQ2Fubm90TG9va3VwAAEAJEJhZE9yaWdpbgACABhNb2R1bGUEAAUIASxNb2R1bGVFcnJvcgADAERDb25zdW1lclJlbWFpbmluZwAEACxOb1Byb3ZpZGVycwAFAEBUb29NYW55Q29uc3VtZXJzAAYAFFRva2VuBAAJCAEoVG9rZW5FcnJvcgAHAChBcml0aG1ldGljBAANCAE8QXJpdGhtZXRpY0Vycm9yAAgANFRyYW5zYWN0aW9uYWwEABEIAUhUcmFuc2FjdGlvbmFsRXJyb3IACQAkRXhoYXVzdGVkAAoAKENvcnJ1cHRpb24ACwAsVW5hdmFpbGFibGUADAA4Um9vdE5vdEFsbG93ZWQADQAQVHJpZQQAFQgBJFRyaWVFcnJvcgAOAAAFCAgoc3BfcnVudGltZSxNb2R1bGVFcnJvcgAACAEUaW5kZXgMAQh1OAABFGVycm9ydAGMW3U4OyBNQVhfTU9EVUxFX0VSUk9SX0VOQ09ERURfU0laRV0AAAkICChzcF9ydW50aW1lKFRva2VuRXJyb3IAAShARnVuZHNVbmF2YWlsYWJsZQAAADBPbmx5UHJvdmlkZXIAAQAwQmVsb3dNaW5pbXVtAAIAMENhbm5vdENyZWF0ZQADADBVbmtub3duQXNzZXQABAAYRnJvemVuAAUALFVuc3VwcG9ydGVkAAYAQENhbm5vdENyZWF0ZUhvbGQABwA0Tm90RXhwZW5kYWJsZQAIABxCbG9ja2VkAAkAAA0ICDRzcF9hcml0aG1ldGljPEFyaXRobWV0aWNFcnJvcgABDCRVbmRlcmZsb3cAAAAgT3ZlcmZsb3cAAQA4RGl2aXNpb25CeVplcm8AAgAAEQgIKHNwX3J1bnRpbWVIVHJhbnNhY3Rpb25hbEVycm9yAAEIMExpbWl0UmVhY2hlZAAAABxOb0xheWVyAAEAABUIDChzcF9ydW50aW1lMHByb3ZpbmdfdHJpZSRUcmllRXJyb3IAAThASW52YWxpZFN0YXRlUm9vdAAAAEhJbmNvbXBsZXRlRGF0YWJhc2UAAQBQVmFsdWVBdEluY29tcGxldGVLZXkAAgAwRGVjb2RlckVycm9yAAMALEludmFsaWRIYXNoAAQAMER1cGxpY2F0ZUtleQAFADhFeHRyYW5lb3VzTm9kZQAGADxFeHRyYW5lb3VzVmFsdWUABwBcRXh0cmFuZW91c0hhc2hSZWZlcmVuY2UACABUSW52YWxpZENoaWxkUmVmZXJlbmNlAAkANFZhbHVlTWlzbWF0Y2gACgA8SW5jb21wbGV0ZVByb29mAAsAMFJvb3RNaXNtYXRjaAAMACxEZWNvZGVFcnJvcgANAAAZCAx8Y3VtdWx1c19wYWxsZXRfcGFyYWNoYWluX3N5c3RlbRhwYWxsZXQURXZlbnQEBFQAARhgVmFsaWRhdGlvbkZ1bmN0aW9uU3RvcmVkAAAE0FRoZSB2YWxpZGF0aW9uIGZ1bmN0aW9uIGhhcyBiZWVuIHNjaGVkdWxlZCB0byBhcHBseS5kVmFsaWRhdGlvbkZ1bmN0aW9uQXBwbGllZAQBVHJlbGF5X2NoYWluX2Jsb2NrX251bTgBVFJlbGF5Q2hhaW5CbG9ja051bWJlcgABBEUBVGhlIHZhbGlkYXRpb24gZnVuY3Rpb24gd2FzIGFwcGxpZWQgYXMgb2YgdGhlIGNvbnRhaW5lZCByZWxheSBjaGFpbiBibG9jayBudW1iZXIubFZhbGlkYXRpb25GdW5jdGlvbkRpc2NhcmRlZAACBLBUaGUgcmVsYXktY2hhaW4gYWJvcnRlZCB0aGUgdXBncmFkZSBwcm9jZXNzLmBEb3dud2FyZE1lc3NhZ2VzUmVjZWl2ZWQEARRjb3VudDgBDHUzMgADBAEBU29tZSBkb3dud2FyZCBtZXNzYWdlcyBoYXZlIGJlZW4gcmVjZWl2ZWQgYW5kIHdpbGwgYmUgcHJvY2Vzc2VkLmREb3dud2FyZE1lc3NhZ2VzUHJvY2Vzc2VkCAEsd2VpZ2h0X3VzZWR5AQEYV2VpZ2h0AAEgZG1xX2hlYWRAAURyZWxheV9jaGFpbjo6SGFzaAAEBOBEb3dud2FyZCBtZXNzYWdlcyB3ZXJlIHByb2Nlc3NlZCB1c2luZyB0aGUgZ2l2ZW4gd2VpZ2h0LkRVcHdhcmRNZXNzYWdlU2VudAQBMG1lc3NhZ2VfaGFzaAEFATxPcHRpb248WGNtSGFzaD4ABQS4QW4gdXB3YXJkIG1lc3NhZ2Ugd2FzIHNlbnQgdG8gdGhlIHJlbGF5IGNoYWluLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldB0IDERwYWxsZXRfbWlncmF0aW9ucxhwYWxsZXQURXZlbnQEBFQAASA4VXBncmFkZVN0YXJ0ZWQEAShtaWdyYXRpb25zOAEMdTMyENBUaGUgbnVtYmVyIG9mIG1pZ3JhdGlvbnMgdGhhdCB0aGlzIHVwZ3JhZGUgY29udGFpbnMuAEEBVGhpcyBjYW4gYmUgdXNlZCB0byBkZXNpZ24gYSBwcm9ncmVzcyBpbmRpY2F0b3IgaW4gY29tYmluYXRpb24gd2l0aCBjb3VudGluZyB0aGXMYE1pZ3JhdGlvbkNvbXBsZXRlZGAgYW5kIGBNaWdyYXRpb25Ta2lwcGVkYCBldmVudHMuAAxoQSBSdW50aW1lIHVwZ3JhZGUgc3RhcnRlZC4A+El0cyBlbmQgaXMgaW5kaWNhdGVkIGJ5IGBVcGdyYWRlQ29tcGxldGVkYCBvciBgVXBncmFkZUZhaWxlZGAuQFVwZ3JhZGVDb21wbGV0ZWQAAQyYVGhlIGN1cnJlbnQgcnVudGltZSB1cGdyYWRlIGNvbXBsZXRlZC4AHQFUaGlzIGltcGxpZXMgdGhhdCBhbGwgb2YgaXRzIG1pZ3JhdGlvbnMgY29tcGxldGVkIHN1Y2Nlc3NmdWxseSBhcyB3ZWxsLjRVcGdyYWRlRmFpbGVkAAIMXFJ1bnRpbWUgdXBncmFkZSBmYWlsZWQuAOhUaGlzIGlzIHZlcnkgYmFkIGFuZCB3aWxsIHJlcXVpcmUgZ292ZXJuYW5jZSBpbnRlcnZlbnRpb24uQE1pZ3JhdGlvblNraXBwZWQEARRpbmRleDgBDHUzMgQpAVRoZSBpbmRleCBvZiB0aGUgc2tpcHBlZCBtaWdyYXRpb24gd2l0aGluIHRoZSBbYENvbmZpZzo6TWlncmF0aW9uc2BdIGxpc3QuAwQJAUEgbWlncmF0aW9uIHdhcyBza2lwcGVkIHNpbmNlIGl0IHdhcyBhbHJlYWR5IGV4ZWN1dGVkIGluIHRoZSBwYXN0LkRNaWdyYXRpb25BZHZhbmNlZAgBFGluZGV4OAEMdTMyBAkBVGhlIGluZGV4IG9mIHRoZSBtaWdyYXRpb24gd2l0aGluIHRoZSBbYENvbmZpZzo6TWlncmF0aW9uc2BdIGxpc3QuARB0b29rOAFEQmxvY2tOdW1iZXJGb3I8VD4E1FRoZSBudW1iZXIgb2YgYmxvY2tzIHRoYXQgdGhpcyBtaWdyYXRpb24gdG9vayBzbyBmYXIuBARcQSBtaWdyYXRpb24gcHJvZ3Jlc3NlZC5ITWlncmF0aW9uQ29tcGxldGVkCAEUaW5kZXg4AQx1MzIECQFUaGUgaW5kZXggb2YgdGhlIG1pZ3JhdGlvbiB3aXRoaW4gdGhlIFtgQ29uZmlnOjpNaWdyYXRpb25zYF0gbGlzdC4BEHRvb2s4AURCbG9ja051bWJlckZvcjxUPgTUVGhlIG51bWJlciBvZiBibG9ja3MgdGhhdCB0aGlzIG1pZ3JhdGlvbiB0b29rIHNvIGZhci4FBFhBIE1pZ3JhdGlvbiBjb21wbGV0ZWQuPE1pZ3JhdGlvbkZhaWxlZAgBFGluZGV4OAEMdTMyBAkBVGhlIGluZGV4IG9mIHRoZSBtaWdyYXRpb24gd2l0aGluIHRoZSBbYENvbmZpZzo6TWlncmF0aW9uc2BdIGxpc3QuARB0b29rOAFEQmxvY2tOdW1iZXJGb3I8VD4E1FRoZSBudW1iZXIgb2YgYmxvY2tzIHRoYXQgdGhpcyBtaWdyYXRpb24gdG9vayBzbyBmYXIuBgxMQSBNaWdyYXRpb24gZmFpbGVkLgBNAVRoaXMgaW1wbGllcyB0aGF0IHRoZSB3aG9sZSB1cGdyYWRlIGZhaWxlZCBhbmQgZ292ZXJuYW5jZSBpbnRlcnZlbnRpb24gaXMgcmVxdWlyZWQuPEhpc3RvcmljQ2xlYXJlZAQBLG5leHRfY3Vyc29y6AE8T3B0aW9uPFZlYzx1OD4+BOhTaG91bGQgYmUgcGFzc2VkIHRvIGBjbGVhcl9oaXN0b3JpY2AgaW4gYSBzdWNjZXNzaXZlIGNhbGwuBwTIVGhlIHNldCBvZiBoaXN0b3JpY2FsIG1pZ3JhdGlvbnMgaGFzIGJlZW4gY2xlYXJlZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXQhCAw8cGFsbGV0X3ByZWltYWdlGHBhbGxldBRFdmVudAQEVAABDBROb3RlZAQBEGhhc2hAARxUOjpIYXNoAAAEaEEgcHJlaW1hZ2UgaGFzIGJlZW4gbm90ZWQuJFJlcXVlc3RlZAQBEGhhc2hAARxUOjpIYXNoAAEEeEEgcHJlaW1hZ2UgaGFzIGJlZW4gcmVxdWVzdGVkLhxDbGVhcmVkBAEQaGFzaEABHFQ6Okhhc2gAAgRsQSBwcmVpbWFnZSBoYXMgYmVuIGNsZWFyZWQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0JQgMQHBhbGxldF9zY2hlZHVsZXIYcGFsbGV0FEV2ZW50BARUAAEoJFNjaGVkdWxlZAgBEHdoZW44AURCbG9ja051bWJlckZvcjxUPgABFGluZGV4OAEMdTMyAAAEUFNjaGVkdWxlZCBzb21lIHRhc2suIENhbmNlbGVkCAEQd2hlbjgBREJsb2NrTnVtYmVyRm9yPFQ+AAEUaW5kZXg4AQx1MzIAAQRMQ2FuY2VsZWQgc29tZSB0YXNrLihEaXNwYXRjaGVkDAEQdGFza/wBeFRhc2tBZGRyZXNzPEJsb2NrTnVtYmVyRm9yPFQ+PgABCGlkAQUBQE9wdGlvbjxUYXNrTmFtZT4AARhyZXN1bHQpCAE4RGlzcGF0Y2hSZXN1bHQAAgRURGlzcGF0Y2hlZCBzb21lIHRhc2suIFJldHJ5U2V0EAEQdGFza/wBeFRhc2tBZGRyZXNzPEJsb2NrTnVtYmVyRm9yPFQ+PgABCGlkAQUBQE9wdGlvbjxUYXNrTmFtZT4AARhwZXJpb2Q4AURCbG9ja051bWJlckZvcjxUPgABHHJldHJpZXMMAQh1OAADBKBTZXQgYSByZXRyeSBjb25maWd1cmF0aW9uIGZvciBzb21lIHRhc2suOFJldHJ5Q2FuY2VsbGVkCAEQdGFza/wBeFRhc2tBZGRyZXNzPEJsb2NrTnVtYmVyRm9yPFQ+PgABCGlkAQUBQE9wdGlvbjxUYXNrTmFtZT4ABASsQ2FuY2VsIGEgcmV0cnkgY29uZmlndXJhdGlvbiBmb3Igc29tZSB0YXNrLjxDYWxsVW5hdmFpbGFibGUIARB0YXNr/AF4VGFza0FkZHJlc3M8QmxvY2tOdW1iZXJGb3I8VD4+AAEIaWQBBQFAT3B0aW9uPFRhc2tOYW1lPgAFBCkBVGhlIGNhbGwgZm9yIHRoZSBwcm92aWRlZCBoYXNoIHdhcyBub3QgZm91bmQgc28gdGhlIHRhc2sgaGFzIGJlZW4gYWJvcnRlZC44UGVyaW9kaWNGYWlsZWQIARB0YXNr/AF4VGFza0FkZHJlc3M8QmxvY2tOdW1iZXJGb3I8VD4+AAEIaWQBBQFAT3B0aW9uPFRhc2tOYW1lPgAGBD0BVGhlIGdpdmVuIHRhc2sgd2FzIHVuYWJsZSB0byBiZSByZW5ld2VkIHNpbmNlIHRoZSBhZ2VuZGEgaXMgZnVsbCBhdCB0aGF0IGJsb2NrLixSZXRyeUZhaWxlZAgBEHRhc2v8AXhUYXNrQWRkcmVzczxCbG9ja051bWJlckZvcjxUPj4AAQhpZAEFAUBPcHRpb248VGFza05hbWU+AAcIXQFUaGUgZ2l2ZW4gdGFzayB3YXMgdW5hYmxlIHRvIGJlIHJldHJpZWQgc2luY2UgdGhlIGFnZW5kYSBpcyBmdWxsIGF0IHRoYXQgYmxvY2sgb3IgdGhlcmWcd2FzIG5vdCBlbm91Z2ggd2VpZ2h0IHRvIHJlc2NoZWR1bGUgaXQuVFBlcm1hbmVudGx5T3ZlcndlaWdodAgBEHRhc2v8AXhUYXNrQWRkcmVzczxCbG9ja051bWJlckZvcjxUPj4AAQhpZAEFAUBPcHRpb248VGFza05hbWU+AAgE8FRoZSBnaXZlbiB0YXNrIGNhbiBuZXZlciBiZSBleGVjdXRlZCBzaW5jZSBpdCBpcyBvdmVyd2VpZ2h0LkBBZ2VuZGFJbmNvbXBsZXRlBAEQd2hlbjgBREJsb2NrTnVtYmVyRm9yPFQ+AAkEhEFnZW5kYSBpcyBpbmNvbXBsZXRlIGZyb20gYHdoZW5gLgQwRXZlbnRzIHR5cGUuKQgEGFJlc3VsdAgEVAEQBEUBAQgBCAhPawQAEAAAAAAMRXJyBAABCAAAAQAALQgMRHBhbGxldF9wYXJhbWV0ZXJzGHBhbGxldBRFdmVudAQEVAABBBxVcGRhdGVkDAEMa2V5MQgBxDxUOjpSdW50aW1lUGFyYW1ldGVycyBhcyBBZ2dyZWdhdGVkS2V5VmFsdWU+OjpLZXkEZFRoZSBrZXkgdGhhdCB3YXMgdXBkYXRlZC4BJG9sZF92YWx1ZUkIAexPcHRpb248PFQ6OlJ1bnRpbWVQYXJhbWV0ZXJzIGFzIEFnZ3JlZ2F0ZWRLZXlWYWx1ZT46OlZhbHVlPgR8VGhlIG9sZCB2YWx1ZSBiZWZvcmUgdGhpcyBjYWxsLgEkbmV3X3ZhbHVlSQgB7E9wdGlvbjw8VDo6UnVudGltZVBhcmFtZXRlcnMgYXMgQWdncmVnYXRlZEtleVZhbHVlPjo6VmFsdWU+BHhUaGUgbmV3IHZhbHVlIGFmdGVyIHRoaXMgY2FsbC4ADFBBIFBhcmFtZXRlciB3YXMgc2V0LgC8SXMgYWxzbyBlbWl0dGVkIHdoZW4gdGhlIHZhbHVlIHdhcyBub3QgY2hhbmdlZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXQxCAhgYXNzZXRfaHViX2t1c2FtYV9ydW50aW1lUFJ1bnRpbWVQYXJhbWV0ZXJzS2V5AAEUIElzc3VhbmNlBAA1CAGlATxkeW5hbWljX3BhcmFtczo6aXNzdWFuY2U6OlBhcmFtZXRlcnMgYXMgZnJhbWVfc3VwcG9ydDo6dHJhaXRzOjoKZHluYW1pY19wYXJhbXM6OkFnZ3JlZ2F0ZWRLZXlWYWx1ZT46OktleQAAACBUcmVhc3VyeQQAOQgBpQE8ZHluYW1pY19wYXJhbXM6OnRyZWFzdXJ5OjpQYXJhbWV0ZXJzIGFzIGZyYW1lX3N1cHBvcnQ6OnRyYWl0czo6CmR5bmFtaWNfcGFyYW1zOjpBZ2dyZWdhdGVkS2V5VmFsdWU+OjpLZXkAAQA8U3Rha2luZ0VsZWN0aW9uBAA9CAHFATxkeW5hbWljX3BhcmFtczo6c3Rha2luZ19lbGVjdGlvbjo6UGFyYW1ldGVycyBhcyBmcmFtZV9zdXBwb3J0Ojp0cmFpdHMKOjpkeW5hbWljX3BhcmFtczo6QWdncmVnYXRlZEtleVZhbHVlPjo6S2V5AAIAJFNjaGVkdWxlcgQAQQgBqQE8ZHluYW1pY19wYXJhbXM6OnNjaGVkdWxlcjo6UGFyYW1ldGVycyBhcyBmcmFtZV9zdXBwb3J0Ojp0cmFpdHM6OgpkeW5hbWljX3BhcmFtczo6QWdncmVnYXRlZEtleVZhbHVlPjo6S2V5AAMAME1lc3NhZ2VRdWV1ZQQARQgBuQE8ZHluYW1pY19wYXJhbXM6Om1lc3NhZ2VfcXVldWU6OlBhcmFtZXRlcnMgYXMgZnJhbWVfc3VwcG9ydDo6dHJhaXRzOjoKZHluYW1pY19wYXJhbXM6OkFnZ3JlZ2F0ZWRLZXlWYWx1ZT46OktleQAEAAA1CBBgYXNzZXRfaHViX2t1c2FtYV9ydW50aW1lOGR5bmFtaWNfcGFyYW1zIGlzc3VhbmNlNFBhcmFtZXRlcnNLZXkAARAwTWluSW5mbGF0aW9uBAANAQEwTWluSW5mbGF0aW9uAAAAME1heEluZmxhdGlvbgQAGQEBME1heEluZmxhdGlvbgABAChJZGVhbFN0YWtlBAAdAQEoSWRlYWxTdGFrZQACABxGYWxsb2ZmBAAhAQEcRmFsbG9mZgADAAA5CBBgYXNzZXRfaHViX2t1c2FtYV9ydW50aW1lOGR5bmFtaWNfcGFyYW1zIHRyZWFzdXJ5NFBhcmFtZXRlcnNLZXkAAQgsQnVyblBvcnRpb24EACkBASxCdXJuUG9ydGlvbgAAADxCdXJuRGVzdGluYXRpb24EADUBATxCdXJuRGVzdGluYXRpb24AAQAAPQgQYGFzc2V0X2h1Yl9rdXNhbWFfcnVudGltZThkeW5hbWljX3BhcmFtc0BzdGFraW5nX2VsZWN0aW9uNFBhcmFtZXRlcnNLZXkAARwsU2lnbmVkUGhhc2UEAEkBASxTaWduZWRQaGFzZQAAAFBNYXhTaWduZWRTdWJtaXNzaW9ucwQATQEBUE1heFNpZ25lZFN1Ym1pc3Npb25zAAEANFVuc2lnbmVkUGhhc2UEAFEBATRVbnNpZ25lZFBoYXNlAAIAKE1pbmVyUGFnZXMEAFUBAShNaW5lclBhZ2VzAAMARE1heEVsZWN0aW5nVm90ZXJzBABZAQFETWF4RWxlY3RpbmdWb3RlcnMABABYVGFyZ2V0U25hcHNob3RQZXJCbG9jawQAXQEBWFRhcmdldFNuYXBzaG90UGVyQmxvY2sABQA4TWF4RXJhRHVyYXRpb24EAGEBAThNYXhFcmFEdXJhdGlvbgAGAABBCBBgYXNzZXRfaHViX2t1c2FtYV9ydW50aW1lOGR5bmFtaWNfcGFyYW1zJHNjaGVkdWxlcjRQYXJhbWV0ZXJzS2V5AAEIUE1heFNjaGVkdWxlZFBlckJsb2NrBABtAQFQTWF4U2NoZWR1bGVkUGVyQmxvY2sAAAA0TWF4aW11bVdlaWdodAQAcQEBNE1heGltdW1XZWlnaHQAAQAARQgQYGFzc2V0X2h1Yl9rdXNhbWFfcnVudGltZThkeW5hbWljX3BhcmFtczRtZXNzYWdlX3F1ZXVlNFBhcmFtZXRlcnNLZXkAAQg8TWF4T25Jbml0V2VpZ2h0BACBAQE8TWF4T25Jbml0V2VpZ2h0AAAAPE1heE9uSWRsZVdlaWdodAQAiQEBPE1heE9uSWRsZVdlaWdodAABAABJCAQYT3B0aW9uBARUAU0IAQgQTm9uZQAAABBTb21lBABNCAAAAQAATQgIYGFzc2V0X2h1Yl9rdXNhbWFfcnVudGltZVhSdW50aW1lUGFyYW1ldGVyc1ZhbHVlAAEUIElzc3VhbmNlBABRCAGtATxkeW5hbWljX3BhcmFtczo6aXNzdWFuY2U6OlBhcmFtZXRlcnMgYXMgZnJhbWVfc3VwcG9ydDo6dHJhaXRzOjoKZHluYW1pY19wYXJhbXM6OkFnZ3JlZ2F0ZWRLZXlWYWx1ZT46OlZhbHVlAAAAIFRyZWFzdXJ5BABVCAGtATxkeW5hbWljX3BhcmFtczo6dHJlYXN1cnk6OlBhcmFtZXRlcnMgYXMgZnJhbWVfc3VwcG9ydDo6dHJhaXRzOjoKZHluYW1pY19wYXJhbXM6OkFnZ3JlZ2F0ZWRLZXlWYWx1ZT46OlZhbHVlAAEAPFN0YWtpbmdFbGVjdGlvbgQAWQgBzQE8ZHluYW1pY19wYXJhbXM6OnN0YWtpbmdfZWxlY3Rpb246OlBhcmFtZXRlcnMgYXMgZnJhbWVfc3VwcG9ydDo6dHJhaXRzCjo6ZHluYW1pY19wYXJhbXM6OkFnZ3JlZ2F0ZWRLZXlWYWx1ZT46OlZhbHVlAAIAJFNjaGVkdWxlcgQAXQgBsQE8ZHluYW1pY19wYXJhbXM6OnNjaGVkdWxlcjo6UGFyYW1ldGVycyBhcyBmcmFtZV9zdXBwb3J0Ojp0cmFpdHM6OgpkeW5hbWljX3BhcmFtczo6QWdncmVnYXRlZEtleVZhbHVlPjo6VmFsdWUAAwAwTWVzc2FnZVF1ZXVlBABhCAHBATxkeW5hbWljX3BhcmFtczo6bWVzc2FnZV9xdWV1ZTo6UGFyYW1ldGVycyBhcyBmcmFtZV9zdXBwb3J0Ojp0cmFpdHM6OgpkeW5hbWljX3BhcmFtczo6QWdncmVnYXRlZEtleVZhbHVlPjo6VmFsdWUABAAAUQgQYGFzc2V0X2h1Yl9rdXNhbWFfcnVudGltZThkeW5hbWljX3BhcmFtcyBpc3N1YW5jZTxQYXJhbWV0ZXJzVmFsdWUAARAwTWluSW5mbGF0aW9uBAAVAQEsUGVycXVpbnRpbGwAAAAwTWF4SW5mbGF0aW9uBAAVAQEsUGVycXVpbnRpbGwAAQAoSWRlYWxTdGFrZQQAFQEBLFBlcnF1aW50aWxsAAIAHEZhbGxvZmYEABUBASxQZXJxdWludGlsbAADAABVCBBgYXNzZXRfaHViX2t1c2FtYV9ydW50aW1lOGR5bmFtaWNfcGFyYW1zIHRyZWFzdXJ5PFBhcmFtZXRlcnNWYWx1ZQABCCxCdXJuUG9ydGlvbgQAMQEBHFBlcm1pbGwAAAA8QnVybkRlc3RpbmF0aW9uBAA9AQGcY3JhdGU6OnRyZWFzdXJ5OjpCdXJuRGVzdGluYXRpb25BY2NvdW50AAEAAFkIEGBhc3NldF9odWJfa3VzYW1hX3J1bnRpbWU4ZHluYW1pY19wYXJhbXNAc3Rha2luZ19lbGVjdGlvbjxQYXJhbWV0ZXJzVmFsdWUAARwsU2lnbmVkUGhhc2UEADgBLEJsb2NrTnVtYmVyAAAAUE1heFNpZ25lZFN1Ym1pc3Npb25zBAA4AQx1MzIAAQA0VW5zaWduZWRQaGFzZQQAOAEsQmxvY2tOdW1iZXIAAgAoTWluZXJQYWdlcwQAOAEMdTMyAAMARE1heEVsZWN0aW5nVm90ZXJzBAA4AQx1MzIABABYVGFyZ2V0U25hcHNob3RQZXJCbG9jawQAOAEMdTMyAAUAOE1heEVyYUR1cmF0aW9uBAAoAQx1NjQABgAAXQgQYGFzc2V0X2h1Yl9rdXNhbWFfcnVudGltZThkeW5hbWljX3BhcmFtcyRzY2hlZHVsZXI8UGFyYW1ldGVyc1ZhbHVlAAEIUE1heFNjaGVkdWxlZFBlckJsb2NrBAA4AQx1MzIAAAA0TWF4aW11bVdlaWdodAQAeQEBGFdlaWdodAABAABhCBBgYXNzZXRfaHViX2t1c2FtYV9ydW50aW1lOGR5bmFtaWNfcGFyYW1zNG1lc3NhZ2VfcXVldWU8UGFyYW1ldGVyc1ZhbHVlAAEIPE1heE9uSW5pdFdlaWdodAQAdQEBOE9wdGlvbjxXZWlnaHQ+AAAAPE1heE9uSWRsZVdlaWdodAQAdQEBOE9wdGlvbjxXZWlnaHQ+AAEAAGUIDDxwYWxsZXRfYmFsYW5jZXMYcGFsbGV0FEV2ZW50CARUAARJAAF4HEVuZG93ZWQIARxhY2NvdW50BAEwVDo6QWNjb3VudElkAAEwZnJlZV9iYWxhbmNllQEBKFQ6OkJhbGFuY2UAAAS4QW4gYWNjb3VudCB3YXMgY3JlYXRlZCB3aXRoIHNvbWUgZnJlZSBiYWxhbmNlLiBEdXN0TG9zdAgBHGFjY291bnQEATBUOjpBY2NvdW50SWQAARhhbW91bnSVAQEoVDo6QmFsYW5jZQABCD0BQW4gYWNjb3VudCB3YXMgcmVtb3ZlZCB3aG9zZSBiYWxhbmNlIHdhcyBub24temVybyBidXQgYmVsb3cgRXhpc3RlbnRpYWxEZXBvc2l0LHhyZXN1bHRpbmcgaW4gYW4gb3V0cmlnaHQgbG9zcy4gVHJhbnNmZXIMARBmcm9tBAEwVDo6QWNjb3VudElkAAEIdG8EATBUOjpBY2NvdW50SWQAARhhbW91bnSVAQEoVDo6QmFsYW5jZQACBExUcmFuc2ZlciBzdWNjZWVkZWQuKEJhbGFuY2VTZXQIAQx3aG8EATBUOjpBY2NvdW50SWQAARBmcmVllQEBKFQ6OkJhbGFuY2UAAwRoQSBiYWxhbmNlIHdhcyBzZXQgYnkgcm9vdC4gUmVzZXJ2ZWQIAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnSVAQEoVDo6QmFsYW5jZQAEBOBTb21lIGJhbGFuY2Ugd2FzIHJlc2VydmVkIChtb3ZlZCBmcm9tIGZyZWUgdG8gcmVzZXJ2ZWQpLihVbnJlc2VydmVkCAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50lQEBKFQ6OkJhbGFuY2UABQToU29tZSBiYWxhbmNlIHdhcyB1bnJlc2VydmVkIChtb3ZlZCBmcm9tIHJlc2VydmVkIHRvIGZyZWUpLkhSZXNlcnZlUmVwYXRyaWF0ZWQQARBmcm9tBAEwVDo6QWNjb3VudElkAAEIdG8EATBUOjpBY2NvdW50SWQAARhhbW91bnSVAQEoVDo6QmFsYW5jZQABSGRlc3RpbmF0aW9uX3N0YXR1c2kIARhTdGF0dXMABghNAVNvbWUgYmFsYW5jZSB3YXMgbW92ZWQgZnJvbSB0aGUgcmVzZXJ2ZSBvZiB0aGUgZmlyc3QgYWNjb3VudCB0byB0aGUgc2Vjb25kIGFjY291bnQu2EZpbmFsIGFyZ3VtZW50IGluZGljYXRlcyB0aGUgZGVzdGluYXRpb24gYmFsYW5jZSB0eXBlLhxEZXBvc2l0CAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50lQEBKFQ6OkJhbGFuY2UABwTYU29tZSBhbW91bnQgd2FzIGRlcG9zaXRlZCAoZS5nLiBmb3IgdHJhbnNhY3Rpb24gZmVlcykuIFdpdGhkcmF3CAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50lQEBKFQ6OkJhbGFuY2UACAQdAVNvbWUgYW1vdW50IHdhcyB3aXRoZHJhd24gZnJvbSB0aGUgYWNjb3VudCAoZS5nLiBmb3IgdHJhbnNhY3Rpb24gZmVlcykuHFNsYXNoZWQIAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnSVAQEoVDo6QmFsYW5jZQAJBAEBU29tZSBhbW91bnQgd2FzIHJlbW92ZWQgZnJvbSB0aGUgYWNjb3VudCAoZS5nLiBmb3IgbWlzYmVoYXZpb3IpLhhNaW50ZWQIAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnSVAQEoVDo6QmFsYW5jZQAKBJxTb21lIGFtb3VudCB3YXMgbWludGVkIGludG8gYW4gYWNjb3VudC4wTWludGVkQ3JlZGl0BAEYYW1vdW50lQEBKFQ6OkJhbGFuY2UACwTgU29tZSBjcmVkaXQgd2FzIGJhbGFuY2VkIGFuZCBhZGRlZCB0byB0aGUgVG90YWxJc3N1YW5jZS4YQnVybmVkCAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50lQEBKFQ6OkJhbGFuY2UADAScU29tZSBhbW91bnQgd2FzIGJ1cm5lZCBmcm9tIGFuIGFjY291bnQuKEJ1cm5lZERlYnQEARhhbW91bnSVAQEoVDo6QmFsYW5jZQANBMxTb21lIGRlYnQgaGFzIGJlZW4gZHJvcHBlZCBmcm9tIHRoZSBUb3RhbCBJc3N1YW5jZS4kU3VzcGVuZGVkCAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50lQEBKFQ6OkJhbGFuY2UADgQVAVNvbWUgYW1vdW50IHdhcyBzdXNwZW5kZWQgZnJvbSBhbiBhY2NvdW50IChpdCBjYW4gYmUgcmVzdG9yZWQgbGF0ZXIpLiBSZXN0b3JlZAgBDHdobwQBMFQ6OkFjY291bnRJZAABGGFtb3VudJUBAShUOjpCYWxhbmNlAA8EpFNvbWUgYW1vdW50IHdhcyByZXN0b3JlZCBpbnRvIGFuIGFjY291bnQuIFVwZ3JhZGVkBAEMd2hvBAEwVDo6QWNjb3VudElkABAEYEFuIGFjY291bnQgd2FzIHVwZ3JhZGVkLhhJc3N1ZWQEARhhbW91bnSVAQEoVDo6QmFsYW5jZQARBC0BVG90YWwgaXNzdWFuY2Ugd2FzIGluY3JlYXNlZCBieSBgYW1vdW50YCwgY3JlYXRpbmcgYSBjcmVkaXQgdG8gYmUgYmFsYW5jZWQuJFJlc2NpbmRlZAQBGGFtb3VudJUBAShUOjpCYWxhbmNlABIEJQFUb3RhbCBpc3N1YW5jZSB3YXMgZGVjcmVhc2VkIGJ5IGBhbW91bnRgLCBjcmVhdGluZyBhIGRlYnQgdG8gYmUgYmFsYW5jZWQuGExvY2tlZAgBDHdobwQBMFQ6OkFjY291bnRJZAABGGFtb3VudJUBAShUOjpCYWxhbmNlABMEYFNvbWUgYmFsYW5jZSB3YXMgbG9ja2VkLiBVbmxvY2tlZAgBDHdobwQBMFQ6OkFjY291bnRJZAABGGFtb3VudJUBAShUOjpCYWxhbmNlABQEaFNvbWUgYmFsYW5jZSB3YXMgdW5sb2NrZWQuGEZyb3plbggBDHdobwQBMFQ6OkFjY291bnRJZAABGGFtb3VudJUBAShUOjpCYWxhbmNlABUEYFNvbWUgYmFsYW5jZSB3YXMgZnJvemVuLhhUaGF3ZWQIAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnSVAQEoVDo6QmFsYW5jZQAWBGBTb21lIGJhbGFuY2Ugd2FzIHRoYXdlZC5MVG90YWxJc3N1YW5jZUZvcmNlZAgBDG9sZJUBAShUOjpCYWxhbmNlAAEMbmV3lQEBKFQ6OkJhbGFuY2UAFwSsVGhlIGBUb3RhbElzc3VhbmNlYCB3YXMgZm9yY2VmdWxseSBjaGFuZ2VkLhBIZWxkDAEYcmVhc29ubQgBUFQ6OlJ1bnRpbWVIb2xkUmVhc29uAAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50lQEBKFQ6OkJhbGFuY2UAGASAU29tZSBiYWxhbmNlIHdhcyBwbGFjZWQgb24gaG9sZC4oQnVybmVkSGVsZAwBGHJlYXNvbm0IAVBUOjpSdW50aW1lSG9sZFJlYXNvbgABDHdobwQBMFQ6OkFjY291bnRJZAABGGFtb3VudJUBAShUOjpCYWxhbmNlABkEoEhlbGQgYmFsYW5jZSB3YXMgYnVybmVkIGZyb20gYW4gYWNjb3VudC44VHJhbnNmZXJPbkhvbGQQARhyZWFzb25tCAFQVDo6UnVudGltZUhvbGRSZWFzb24AARhzb3VyY2UEATBUOjpBY2NvdW50SWQAARBkZXN0BAEwVDo6QWNjb3VudElkAAEYYW1vdW50lQEBKFQ6OkJhbGFuY2UAGgQVAUEgdHJhbnNmZXIgb2YgYGFtb3VudGAgb24gaG9sZCBmcm9tIGBzb3VyY2VgIHRvIGBkZXN0YCB3YXMgaW5pdGlhdGVkLjxUcmFuc2ZlckFuZEhvbGQQARhyZWFzb25tCAFQVDo6UnVudGltZUhvbGRSZWFzb24AARhzb3VyY2UEATBUOjpBY2NvdW50SWQAARBkZXN0BAEwVDo6QWNjb3VudElkAAEsdHJhbnNmZXJyZWSVAQEoVDo6QmFsYW5jZQAbBAkBVGhlIGB0cmFuc2ZlcnJlZGAgYmFsYW5jZSBpcyBwbGFjZWQgb24gaG9sZCBhdCB0aGUgYGRlc3RgIGFjY291bnQuIFJlbGVhc2VkDAEYcmVhc29ubQgBUFQ6OlJ1bnRpbWVIb2xkUmVhc29uAAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50lQEBKFQ6OkJhbGFuY2UAHASQU29tZSBiYWxhbmNlIHdhcyByZWxlYXNlZCBmcm9tIGhvbGQuKFVuZXhwZWN0ZWQEAKEIAThVbmV4cGVjdGVkS2luZAAdBLBBbiB1bmV4cGVjdGVkL2RlZmVuc2l2ZSBldmVudCB3YXMgdHJpZ2dlcmVkLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldGkIFDRmcmFtZV9zdXBwb3J0GHRyYWl0cxh0b2tlbnMQbWlzYzRCYWxhbmNlU3RhdHVzAAEIEEZyZWUAAAAgUmVzZXJ2ZWQAAQAAbQgIYGFzc2V0X2h1Yl9rdXNhbWFfcnVudGltZURSdW50aW1lSG9sZFJlYXNvbgABMCBQcmVpbWFnZQQAcQgBbHBhbGxldF9wcmVpbWFnZTo6SG9sZFJlYXNvbgAGABxTZXNzaW9uBAB1CAFocGFsbGV0X3Nlc3Npb246OkhvbGRSZWFzb24AFgAsUG9sa2Fkb3RYY20EAHkIAVhwYWxsZXRfeGNtOjpIb2xkUmVhc29uAB8AUE5mdEZyYWN0aW9uYWxpemF0aW9uBAB9CAGgcGFsbGV0X25mdF9mcmFjdGlvbmFsaXphdGlvbjo6SG9sZFJlYXNvbgA2ACBSZWNvdmVyeQQAgQgBbHBhbGxldF9yZWNvdmVyeTo6SG9sZFJlYXNvbgA5ABhSZXZpdmUEAIUIAWRwYWxsZXRfcmV2aXZlOjpIb2xkUmVhc29uADwASFN0YXRlVHJpZU1pZ3JhdGlvbgQAiQgBnHBhbGxldF9zdGF0ZV90cmllX21pZ3JhdGlvbjo6SG9sZFJlYXNvbgBGAEBEZWxlZ2F0ZWRTdGFraW5nBACNCAGQcGFsbGV0X2RlbGVnYXRlZF9zdGFraW5nOjpIb2xkUmVhc29uAFMAPFN0YWtpbmdSY0NsaWVudAQAkQgBqHBhbGxldF9zdGFraW5nX2FzeW5jX3JjX2NsaWVudDo6SG9sZFJlYXNvbgBUAGBNdWx0aUJsb2NrRWxlY3Rpb25TaWduZWQEAJUIAeBwYWxsZXRfZWxlY3Rpb25fcHJvdmlkZXJfbXVsdGlfYmxvY2s6OnNpZ25lZDo6SG9sZFJlYXNvbgBYABxTdGFraW5nBACZCAGAcGFsbGV0X3N0YWtpbmdfYXN5bmM6OkhvbGRSZWFzb24AWQBITXVsdGlBc3NldEJvdW50aWVzBACdCAGccGFsbGV0X211bHRpX2Fzc2V0X2JvdW50aWVzOjpIb2xkUmVhc29uAGIAAHEIDDxwYWxsZXRfcHJlaW1hZ2UYcGFsbGV0KEhvbGRSZWFzb24AAQQgUHJlaW1hZ2UAAAAAdQgMOHBhbGxldF9zZXNzaW9uGHBhbGxldChIb2xkUmVhc29uAAEEEEtleXMAAAAAeQgMKHBhbGxldF94Y20YcGFsbGV0KEhvbGRSZWFzb24AAQQ4QXV0aG9yaXplQWxpYXMAAAAAfQgMcHBhbGxldF9uZnRfZnJhY3Rpb25hbGl6YXRpb24YcGFsbGV0KEhvbGRSZWFzb24AAQQ4RnJhY3Rpb25hbGl6ZWQAAAAAgQgMPHBhbGxldF9yZWNvdmVyeRhwYWxsZXQoSG9sZFJlYXNvbgABEExGcmllbmRHcm91cHNTdG9yYWdlAAAAOEF0dGVtcHRTdG9yYWdlAAEAQEluaGVyaXRvclN0b3JhZ2UAAgA8U2VjdXJpdHlEZXBvc2l0AAMAAIUIDDRwYWxsZXRfcmV2aXZlGHBhbGxldChIb2xkUmVhc29uAAEMYENvZGVVcGxvYWREZXBvc2l0UmVzZXJ2ZQAAAFRTdG9yYWdlRGVwb3NpdFJlc2VydmUAAQA4QWRkcmVzc01hcHBpbmcAAgAAiQgMbHBhbGxldF9zdGF0ZV90cmllX21pZ3JhdGlvbhhwYWxsZXQoSG9sZFJlYXNvbgABBDxTbGFzaEZvck1pZ3JhdGUAAAAAjQgMYHBhbGxldF9kZWxlZ2F0ZWRfc3Rha2luZxhwYWxsZXQoSG9sZFJlYXNvbgABBERTdGFraW5nRGVsZWdhdGlvbgAAAACRCAx4cGFsbGV0X3N0YWtpbmdfYXN5bmNfcmNfY2xpZW50GHBhbGxldChIb2xkUmVhc29uAAEEEEtleXMAAAAAlQgQkHBhbGxldF9lbGVjdGlvbl9wcm92aWRlcl9tdWx0aV9ibG9jaxhzaWduZWQYcGFsbGV0KEhvbGRSZWFzb24AAQRAU2lnbmVkU3VibWlzc2lvbgAAAACZCBBQcGFsbGV0X3N0YWtpbmdfYXN5bmMYcGFsbGV0GHBhbGxldChIb2xkUmVhc29uAAEEHFN0YWtpbmcAAAAAnQgMbHBhbGxldF9tdWx0aV9hc3NldF9ib3VudGllcxhwYWxsZXQoSG9sZFJlYXNvbgQESQABBDhDdXJhdG9yRGVwb3NpdAAAAAChCAw8cGFsbGV0X2JhbGFuY2VzGHBhbGxldDhVbmV4cGVjdGVkS2luZAABCDhCYWxhbmNlVXBkYXRlZAAAAFRGYWlsZWRUb011dGF0ZUFjY291bnQAAQAApQgMaHBhbGxldF90cmFuc2FjdGlvbl9wYXltZW50GHBhbGxldBRFdmVudAQEVAABBEhUcmFuc2FjdGlvbkZlZVBhaWQMAQx3aG8EATBUOjpBY2NvdW50SWQAAShhY3R1YWxfZmVllQEBMEJhbGFuY2VPZjxUPgABDHRpcJUBATBCYWxhbmNlT2Y8VD4AAAhZAUEgdHJhbnNhY3Rpb24gZmVlIGBhY3R1YWxfZmVlYCwgb2Ygd2hpY2ggYHRpcGAgd2FzIGFkZGVkIHRvIHRoZSBtaW5pbXVtIGluY2x1c2lvbiBmZWUsXGhhcyBiZWVuIHBhaWQgYnkgYHdob2AuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0qQgMiHBhbGxldF9hc3NldF9jb252ZXJzaW9uX3R4X3BheW1lbnQYcGFsbGV0FEV2ZW50BARUAAEIOEFzc2V0VHhGZWVQYWlkEAEMd2hvBAEwVDo6QWNjb3VudElkAAEoYWN0dWFsX2ZlZZUBATBCYWxhbmNlT2Y8VD4AAQx0aXCVAQEwQmFsYW5jZU9mPFQ+AAEgYXNzZXRfaWQ5AgEoVDo6QXNzZXRJZAAACFkBQSB0cmFuc2FjdGlvbiBmZWUgYGFjdHVhbF9mZWVgLCBvZiB3aGljaCBgdGlwYCB3YXMgYWRkZWQgdG8gdGhlIG1pbmltdW0gaW5jbHVzaW9uIGZlZSy4aGFzIGJlZW4gcGFpZCBieSBgd2hvYCBpbiBhbiBhc3NldCBgYXNzZXRfaWRgLkRBc3NldFJlZnVuZEZhaWxlZAQBSG5hdGl2ZV9hbW91bnRfa2VwdJUBATBCYWxhbmNlT2Y8VD4AAQT0QSBzd2FwIG9mIHRoZSByZWZ1bmQgaW4gbmF0aXZlIGN1cnJlbmN5IGJhY2sgdG8gYXNzZXQgZmFpbGVkLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldK0IDDhwYWxsZXRfdmVzdGluZxhwYWxsZXQURXZlbnQEBFQAAQw4VmVzdGluZ0NyZWF0ZWQIARxhY2NvdW50BAEwVDo6QWNjb3VudElkAAE4c2NoZWR1bGVfaW5kZXg4AQx1MzIAAASQQSB2ZXN0aW5nIHNjaGVkdWxlIGhhcyBiZWVuIGNyZWF0ZWQuOFZlc3RpbmdVcGRhdGVkCAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAABIHVudmVzdGVklQEBMEJhbGFuY2VPZjxUPgABCFEBVGhlIGFtb3VudCB2ZXN0ZWQgaGFzIGJlZW4gdXBkYXRlZC4gVGhpcyBjb3VsZCBpbmRpY2F0ZSBhIGNoYW5nZSBpbiBmdW5kcyBhdmFpbGFibGUuJQFUaGUgYmFsYW5jZSBnaXZlbiBpcyB0aGUgYW1vdW50IHdoaWNoIGlzIGxlZnQgdW52ZXN0ZWQgKGFuZCB0aHVzIGxvY2tlZCkuQFZlc3RpbmdDb21wbGV0ZWQEARxhY2NvdW50BAEwVDo6QWNjb3VudElkAAIEnEFuIFxbYWNjb3VudFxdIGhhcyBiZWNvbWUgZnVsbHkgdmVzdGVkLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldLEIEFxwb2xrYWRvdF9ydW50aW1lX2NvbW1vbhhjbGFpbXMYcGFsbGV0FEV2ZW50BARUAAEEHENsYWltZWQMAQx3aG8EATBUOjpBY2NvdW50SWQAAUBldGhlcmV1bV9hZGRyZXNzuQEBPEV0aGVyZXVtQWRkcmVzcwABGGFtb3VudJUBATBCYWxhbmNlT2Y8VD4AAARoU29tZW9uZSBjbGFpbWVkIHNvbWUgRE9Ucy4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXS1CAxkcGFsbGV0X2NvbGxhdG9yX3NlbGVjdGlvbhhwYWxsZXQURXZlbnQEBFQAAShATmV3SW52dWxuZXJhYmxlcwQBNGludnVsbmVyYWJsZXOdAQFEVmVjPFQ6OkFjY291bnRJZD4AAARsTmV3IEludnVsbmVyYWJsZXMgd2VyZSBzZXQuREludnVsbmVyYWJsZUFkZGVkBAEoYWNjb3VudF9pZAQBMFQ6OkFjY291bnRJZAABBHRBIG5ldyBJbnZ1bG5lcmFibGUgd2FzIGFkZGVkLkxJbnZ1bG5lcmFibGVSZW1vdmVkBAEoYWNjb3VudF9pZAQBMFQ6OkFjY291bnRJZAACBHBBbiBJbnZ1bG5lcmFibGUgd2FzIHJlbW92ZWQuUE5ld0Rlc2lyZWRDYW5kaWRhdGVzBAFIZGVzaXJlZF9jYW5kaWRhdGVzOAEMdTMyAAMEpFRoZSBudW1iZXIgb2YgZGVzaXJlZCBjYW5kaWRhdGVzIHdhcyBzZXQuQE5ld0NhbmRpZGFjeUJvbmQEASxib25kX2Ftb3VudJUBATBCYWxhbmNlT2Y8VD4ABARsVGhlIGNhbmRpZGFjeSBib25kIHdhcyBzZXQuOENhbmRpZGF0ZUFkZGVkCAEoYWNjb3VudF9pZAQBMFQ6OkFjY291bnRJZAABHGRlcG9zaXSVAQEwQmFsYW5jZU9mPFQ+AAUEXEEgbmV3IGNhbmRpZGF0ZSBqb2luZWQuUENhbmRpZGF0ZUJvbmRVcGRhdGVkCAEoYWNjb3VudF9pZAQBMFQ6OkFjY291bnRJZAABHGRlcG9zaXSVAQEwQmFsYW5jZU9mPFQ+AAYEcEJvbmQgb2YgYSBjYW5kaWRhdGUgdXBkYXRlZC5AQ2FuZGlkYXRlUmVtb3ZlZAQBKGFjY291bnRfaWQEATBUOjpBY2NvdW50SWQABwRgQSBjYW5kaWRhdGUgd2FzIHJlbW92ZWQuRENhbmRpZGF0ZVJlcGxhY2VkDAEMb2xkBAEwVDo6QWNjb3VudElkAAEMbmV3BAEwVDo6QWNjb3VudElkAAEcZGVwb3NpdJUBATBCYWxhbmNlT2Y8VD4ACAT0QW4gYWNjb3VudCB3YXMgcmVwbGFjZWQgaW4gdGhlIGNhbmRpZGF0ZSBsaXN0IGJ5IGFub3RoZXIgb25lLmhJbnZhbGlkSW52dWxuZXJhYmxlU2tpcHBlZAQBKGFjY291bnRfaWQEATBUOjpBY2NvdW50SWQACQhVAUFuIGFjY291bnQgd2FzIHVuYWJsZSB0byBiZSBhZGRlZCB0byB0aGUgSW52dWxuZXJhYmxlcyBiZWNhdXNlIHRoZXkgZGlkIG5vdCBoYXZlIGtleXPIcmVnaXN0ZXJlZC4gT3RoZXIgSW52dWxuZXJhYmxlcyBtYXkgaGF2ZSBiZWVuIHNldC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXS5CAw4cGFsbGV0X3Nlc3Npb24YcGFsbGV0FEV2ZW50BARUAAEQKE5ld1Nlc3Npb24EATRzZXNzaW9uX2luZGV4OAEwU2Vzc2lvbkluZGV4AAAIOQFOZXcgc2Vzc2lvbiBoYXMgaGFwcGVuZWQuIE5vdGUgdGhhdCB0aGUgYXJndW1lbnQgaXMgdGhlIHNlc3Npb24gaW5kZXgsIG5vdCB0aGWcYmxvY2sgbnVtYmVyIGFzIHRoZSB0eXBlIG1pZ2h0IHN1Z2dlc3QuJE5ld1F1ZXVlZAABCEkBVGhlIGBOZXdTZXNzaW9uYCBldmVudCBpbiB0aGUgY3VycmVudCBibG9jayBhbHNvIGltcGxpZXMgYSBuZXcgdmFsaWRhdG9yIHNldCB0byBiZRxxdWV1ZWQuRFZhbGlkYXRvckRpc2FibGVkBAEkdmFsaWRhdG9yBAE4VDo6VmFsaWRhdG9ySWQAAgRwVmFsaWRhdG9yIGhhcyBiZWVuIGRpc2FibGVkLkhWYWxpZGF0b3JSZWVuYWJsZWQEASR2YWxpZGF0b3IEAThUOjpWYWxpZGF0b3JJZAADBHhWYWxpZGF0b3IgaGFzIGJlZW4gcmUtZW5hYmxlZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXS9CAxkY3VtdWx1c19wYWxsZXRfeGNtcF9xdWV1ZRhwYWxsZXQURXZlbnQEBFQAAQQ8WGNtcE1lc3NhZ2VTZW50BAEwbWVzc2FnZV9oYXNoCAEcWGNtSGFzaAAABMBBbiBIUk1QIG1lc3NhZ2Ugd2FzIHNlbnQgdG8gYSBzaWJsaW5nIHBhcmFjaGFpbi4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXTBCAwocGFsbGV0X3hjbRhwYWxsZXQURXZlbnQEBFQAAXQkQXR0ZW1wdGVkBAEcb3V0Y29tZcUIAVB4Y206OmxhdGVzdDo6T3V0Y29tZQAABKhFeGVjdXRpb24gb2YgYW4gWENNIG1lc3NhZ2Ugd2FzIGF0dGVtcHRlZC4QU2VudBABGG9yaWdpbjkCASBMb2NhdGlvbgABLGRlc3RpbmF0aW9uOQIBIExvY2F0aW9uAAEcbWVzc2FnZTEDARxYY208KCk+AAEobWVzc2FnZV9pZAgBHFhjbUhhc2gAAQRgQW4gWENNIG1lc3NhZ2Ugd2FzIHNlbnQuKFNlbmRGYWlsZWQQARhvcmlnaW45AgEgTG9jYXRpb24AASxkZXN0aW5hdGlvbjkCASBMb2NhdGlvbgABFGVycm9yzQgBJFNlbmRFcnJvcgABKG1lc3NhZ2VfaWQIARxYY21IYXNoAAIEeEFuIFhDTSBtZXNzYWdlIGZhaWxlZCB0byBzZW5kLjxQcm9jZXNzWGNtRXJyb3IMARhvcmlnaW45AgEgTG9jYXRpb24AARRlcnJvcmEDASBYY21FcnJvcgABKG1lc3NhZ2VfaWQIARxYY21IYXNoAAMEhEFuIFhDTSBtZXNzYWdlIGZhaWxlZCB0byBwcm9jZXNzLkhVbmV4cGVjdGVkUmVzcG9uc2UIARhvcmlnaW45AgEgTG9jYXRpb24AASBxdWVyeV9pZCgBHFF1ZXJ5SWQABAxZAVF1ZXJ5IHJlc3BvbnNlIHJlY2VpdmVkIHdoaWNoIGRvZXMgbm90IG1hdGNoIGEgcmVnaXN0ZXJlZCBxdWVyeS4gVGhpcyBtYXkgYmUgYmVjYXVzZSBhVQFtYXRjaGluZyBxdWVyeSB3YXMgbmV2ZXIgcmVnaXN0ZXJlZCwgaXQgbWF5IGJlIGJlY2F1c2UgaXQgaXMgYSBkdXBsaWNhdGUgcmVzcG9uc2UsIG9ycGJlY2F1c2UgdGhlIHF1ZXJ5IHRpbWVkIG91dC40UmVzcG9uc2VSZWFkeQgBIHF1ZXJ5X2lkKAEcUXVlcnlJZAABIHJlc3BvbnNlVQMBIFJlc3BvbnNlAAUIXQFRdWVyeSByZXNwb25zZSBoYXMgYmVlbiByZWNlaXZlZCBhbmQgaXMgcmVhZHkgZm9yIHRha2luZyB3aXRoIGB0YWtlX3Jlc3BvbnNlYC4gVGhlcmUgaXOAbm8gcmVnaXN0ZXJlZCBub3RpZmljYXRpb24gY2FsbC4gTm90aWZpZWQMASBxdWVyeV9pZCgBHFF1ZXJ5SWQAATBwYWxsZXRfaW5kZXgMAQh1OAABKGNhbGxfaW5kZXgMAQh1OAAGCFkBUXVlcnkgcmVzcG9uc2UgaGFzIGJlZW4gcmVjZWl2ZWQgYW5kIHF1ZXJ5IGlzIHJlbW92ZWQuIFRoZSByZWdpc3RlcmVkIG5vdGlmaWNhdGlvbiBoYXOoYmVlbiBkaXNwYXRjaGVkIGFuZCBleGVjdXRlZCBzdWNjZXNzZnVsbHkuQE5vdGlmeU92ZXJ3ZWlnaHQUASBxdWVyeV9pZCgBHFF1ZXJ5SWQAATBwYWxsZXRfaW5kZXgMAQh1OAABKGNhbGxfaW5kZXgMAQh1OAABNGFjdHVhbF93ZWlnaHR5AQEYV2VpZ2h0AAFMbWF4X2J1ZGdldGVkX3dlaWdodHkBARhXZWlnaHQABwxJAVF1ZXJ5IHJlc3BvbnNlIGhhcyBiZWVuIHJlY2VpdmVkIGFuZCBxdWVyeSBpcyByZW1vdmVkLiBUaGUgcmVnaXN0ZXJlZCBub3RpZmljYXRpb25ZAWNvdWxkIG5vdCBiZSBkaXNwYXRjaGVkIGJlY2F1c2UgdGhlIGRpc3BhdGNoIHdlaWdodCBpcyBncmVhdGVyIHRoYW4gdGhlIG1heGltdW0gd2VpZ2h05G9yaWdpbmFsbHkgYnVkZ2V0ZWQgYnkgdGhpcyBydW50aW1lIGZvciB0aGUgcXVlcnkgcmVzdWx0LkxOb3RpZnlEaXNwYXRjaEVycm9yDAEgcXVlcnlfaWQoARxRdWVyeUlkAAEwcGFsbGV0X2luZGV4DAEIdTgAAShjYWxsX2luZGV4DAEIdTgACAhVAVF1ZXJ5IHJlc3BvbnNlIGhhcyBiZWVuIHJlY2VpdmVkIGFuZCBxdWVyeSBpcyByZW1vdmVkLiBUaGVyZSB3YXMgYSBnZW5lcmFsIGVycm9yIHdpdGiIZGlzcGF0Y2hpbmcgdGhlIG5vdGlmaWNhdGlvbiBjYWxsLkhOb3RpZnlEZWNvZGVGYWlsZWQMASBxdWVyeV9pZCgBHFF1ZXJ5SWQAATBwYWxsZXRfaW5kZXgMAQh1OAABKGNhbGxfaW5kZXgMAQh1OAAJDFEBUXVlcnkgcmVzcG9uc2UgaGFzIGJlZW4gcmVjZWl2ZWQgYW5kIHF1ZXJ5IGlzIHJlbW92ZWQuIFRoZSBkaXNwYXRjaCB3YXMgdW5hYmxlIHRvIGJlWQFkZWNvZGVkIGludG8gYSBgQ2FsbGA7IHRoaXMgbWlnaHQgYmUgZHVlIHRvIGRpc3BhdGNoIGZ1bmN0aW9uIGhhdmluZyBhIHNpZ25hdHVyZSB3aGljaJRpcyBub3QgYChvcmlnaW4sIFF1ZXJ5SWQsIFJlc3BvbnNlKWAuQEludmFsaWRSZXNwb25kZXIMARhvcmlnaW45AgEgTG9jYXRpb24AASBxdWVyeV9pZCgBHFF1ZXJ5SWQAAURleHBlY3RlZF9sb2NhdGlvbnUDAUBPcHRpb248TG9jYXRpb24+AAoMWQFFeHBlY3RlZCBxdWVyeSByZXNwb25zZSBoYXMgYmVlbiByZWNlaXZlZCBidXQgdGhlIG9yaWdpbiBsb2NhdGlvbiBvZiB0aGUgcmVzcG9uc2UgZG9lc1UBbm90IG1hdGNoIHRoYXQgZXhwZWN0ZWQuIFRoZSBxdWVyeSByZW1haW5zIHJlZ2lzdGVyZWQgZm9yIGEgbGF0ZXIsIHZhbGlkLCByZXNwb25zZSB0b2xiZSByZWNlaXZlZCBhbmQgYWN0ZWQgdXBvbi5cSW52YWxpZFJlc3BvbmRlclZlcnNpb24IARhvcmlnaW45AgEgTG9jYXRpb24AASBxdWVyeV9pZCgBHFF1ZXJ5SWQACxxRAUV4cGVjdGVkIHF1ZXJ5IHJlc3BvbnNlIGhhcyBiZWVuIHJlY2VpdmVkIGJ1dCB0aGUgZXhwZWN0ZWQgb3JpZ2luIGxvY2F0aW9uIHBsYWNlZCBpbk0Bc3RvcmFnZSBieSB0aGlzIHJ1bnRpbWUgcHJldmlvdXNseSBjYW5ub3QgYmUgZGVjb2RlZC4gVGhlIHF1ZXJ5IHJlbWFpbnMgcmVnaXN0ZXJlZC4AQQFUaGlzIGlzIHVuZXhwZWN0ZWQgKHNpbmNlIGEgbG9jYXRpb24gcGxhY2VkIGluIHN0b3JhZ2UgaW4gYSBwcmV2aW91c2x5IGV4ZWN1dGluZ00BcnVudGltZSBzaG91bGQgYmUgcmVhZGFibGUgcHJpb3IgdG8gcXVlcnkgdGltZW91dCkgYW5kIGRhbmdlcm91cyBzaW5jZSB0aGUgcG9zc2libHlZAXZhbGlkIHJlc3BvbnNlIHdpbGwgYmUgZHJvcHBlZC4gTWFudWFsIGdvdmVybmFuY2UgaW50ZXJ2ZW50aW9uIGlzIHByb2JhYmx5IGdvaW5nIHRvIGJlHG5lZWRlZC40UmVzcG9uc2VUYWtlbgQBIHF1ZXJ5X2lkKAEcUXVlcnlJZAAMBMhSZWNlaXZlZCBxdWVyeSByZXNwb25zZSBoYXMgYmVlbiByZWFkIGFuZCByZW1vdmVkLjRBc3NldHNUcmFwcGVkDAEQaGFzaEABEEgyNTYAARhvcmlnaW45AgEgTG9jYXRpb24AARhhc3NldHOpAwE8VmVyc2lvbmVkQXNzZXRzAA0EuFNvbWUgYXNzZXRzIGhhdmUgYmVlbiBwbGFjZWQgaW4gYW4gYXNzZXQgdHJhcC5UVmVyc2lvbkNoYW5nZU5vdGlmaWVkEAEsZGVzdGluYXRpb245AgEgTG9jYXRpb24AARhyZXN1bHQ4AShYY21WZXJzaW9uAAEQY29zdD0DARhBc3NldHMAAShtZXNzYWdlX2lkCAEcWGNtSGFzaAAODCUBQW4gWENNIHZlcnNpb24gY2hhbmdlIG5vdGlmaWNhdGlvbiBtZXNzYWdlIGhhcyBiZWVuIGF0dGVtcHRlZCB0byBiZSBzZW50LgDgVGhlIGNvc3Qgb2Ygc2VuZGluZyBpdCAoYm9ybmUgYnkgdGhlIGNoYWluKSBpcyBpbmNsdWRlZC5cU3VwcG9ydGVkVmVyc2lvbkNoYW5nZWQIASBsb2NhdGlvbjkCASBMb2NhdGlvbgABHHZlcnNpb244AShYY21WZXJzaW9uAA8IOQFUaGUgc3VwcG9ydGVkIHZlcnNpb24gb2YgYSBsb2NhdGlvbiBoYXMgYmVlbiBjaGFuZ2VkLiBUaGlzIG1pZ2h0IGJlIHRocm91Z2ggYW7AYXV0b21hdGljIG5vdGlmaWNhdGlvbiBvciBhIG1hbnVhbCBpbnRlcnZlbnRpb24uUE5vdGlmeVRhcmdldFNlbmRGYWlsDAEgbG9jYXRpb245AgEgTG9jYXRpb24AASBxdWVyeV9pZCgBHFF1ZXJ5SWQAARRlcnJvcmEDASBYY21FcnJvcgAQCFkBQSBnaXZlbiBsb2NhdGlvbiB3aGljaCBoYWQgYSB2ZXJzaW9uIGNoYW5nZSBzdWJzY3JpcHRpb24gd2FzIGRyb3BwZWQgb3dpbmcgdG8gYW4gZXJyb3J8c2VuZGluZyB0aGUgbm90aWZpY2F0aW9uIHRvIGl0LmROb3RpZnlUYXJnZXRNaWdyYXRpb25GYWlsCAEgbG9jYXRpb27lAQFEVmVyc2lvbmVkTG9jYXRpb24AASBxdWVyeV9pZCgBHFF1ZXJ5SWQAEQhZAUEgZ2l2ZW4gbG9jYXRpb24gd2hpY2ggaGFkIGEgdmVyc2lvbiBjaGFuZ2Ugc3Vic2NyaXB0aW9uIHdhcyBkcm9wcGVkIG93aW5nIHRvIGFuIGVycm9ytG1pZ3JhdGluZyB0aGUgbG9jYXRpb24gdG8gb3VyIG5ldyBYQ00gZm9ybWF0LlRJbnZhbGlkUXVlcmllclZlcnNpb24IARhvcmlnaW45AgEgTG9jYXRpb24AASBxdWVyeV9pZCgBHFF1ZXJ5SWQAEhxVAUV4cGVjdGVkIHF1ZXJ5IHJlc3BvbnNlIGhhcyBiZWVuIHJlY2VpdmVkIGJ1dCB0aGUgZXhwZWN0ZWQgcXVlcmllciBsb2NhdGlvbiBwbGFjZWQgaW5NAXN0b3JhZ2UgYnkgdGhpcyBydW50aW1lIHByZXZpb3VzbHkgY2Fubm90IGJlIGRlY29kZWQuIFRoZSBxdWVyeSByZW1haW5zIHJlZ2lzdGVyZWQuAEEBVGhpcyBpcyB1bmV4cGVjdGVkIChzaW5jZSBhIGxvY2F0aW9uIHBsYWNlZCBpbiBzdG9yYWdlIGluIGEgcHJldmlvdXNseSBleGVjdXRpbmdNAXJ1bnRpbWUgc2hvdWxkIGJlIHJlYWRhYmxlIHByaW9yIHRvIHF1ZXJ5IHRpbWVvdXQpIGFuZCBkYW5nZXJvdXMgc2luY2UgdGhlIHBvc3NpYmx5WQF2YWxpZCByZXNwb25zZSB3aWxsIGJlIGRyb3BwZWQuIE1hbnVhbCBnb3Zlcm5hbmNlIGludGVydmVudGlvbiBpcyBwcm9iYWJseSBnb2luZyB0byBiZRxuZWVkZWQuOEludmFsaWRRdWVyaWVyEAEYb3JpZ2luOQIBIExvY2F0aW9uAAEgcXVlcnlfaWQoARxRdWVyeUlkAAFAZXhwZWN0ZWRfcXVlcmllcjkCASBMb2NhdGlvbgABUG1heWJlX2FjdHVhbF9xdWVyaWVydQMBQE9wdGlvbjxMb2NhdGlvbj4AEwxdAUV4cGVjdGVkIHF1ZXJ5IHJlc3BvbnNlIGhhcyBiZWVuIHJlY2VpdmVkIGJ1dCB0aGUgcXVlcmllciBsb2NhdGlvbiBvZiB0aGUgcmVzcG9uc2UgZG9lc1EBbm90IG1hdGNoIHRoZSBleHBlY3RlZC4gVGhlIHF1ZXJ5IHJlbWFpbnMgcmVnaXN0ZXJlZCBmb3IgYSBsYXRlciwgdmFsaWQsIHJlc3BvbnNlIHRvbGJlIHJlY2VpdmVkIGFuZCBhY3RlZCB1cG9uLlBWZXJzaW9uTm90aWZ5U3RhcnRlZAwBLGRlc3RpbmF0aW9uOQIBIExvY2F0aW9uAAEQY29zdD0DARhBc3NldHMAAShtZXNzYWdlX2lkCAEcWGNtSGFzaAAUCFkBQSByZW1vdGUgaGFzIHJlcXVlc3RlZCBYQ00gdmVyc2lvbiBjaGFuZ2Ugbm90aWZpY2F0aW9uIGZyb20gdXMgYW5kIHdlIGhhdmUgaG9ub3JlZCBpdC4dAUEgdmVyc2lvbiBpbmZvcm1hdGlvbiBtZXNzYWdlIGlzIHNlbnQgdG8gdGhlbSBhbmQgaXRzIGNvc3QgaXMgaW5jbHVkZWQuWFZlcnNpb25Ob3RpZnlSZXF1ZXN0ZWQMASxkZXN0aW5hdGlvbjkCASBMb2NhdGlvbgABEGNvc3Q9AwEYQXNzZXRzAAEobWVzc2FnZV9pZAgBHFhjbUhhc2gAFQQ9AVdlIGhhdmUgcmVxdWVzdGVkIHRoYXQgYSByZW1vdGUgY2hhaW4gc2VuZCB1cyBYQ00gdmVyc2lvbiBjaGFuZ2Ugbm90aWZpY2F0aW9ucy5gVmVyc2lvbk5vdGlmeVVucmVxdWVzdGVkDAEsZGVzdGluYXRpb245AgEgTG9jYXRpb24AARBjb3N0PQMBGEFzc2V0cwABKG1lc3NhZ2VfaWQIARxYY21IYXNoABYIJQFXZSBoYXZlIHJlcXVlc3RlZCB0aGF0IGEgcmVtb3RlIGNoYWluIHN0b3BzIHNlbmRpbmcgdXMgWENNIHZlcnNpb24gY2hhbmdlOG5vdGlmaWNhdGlvbnMuIEZlZXNQYWlkCAEYcGF5aW5nOQIBIExvY2F0aW9uAAEQZmVlcz0DARhBc3NldHMAFwQxAUZlZXMgd2VyZSBwYWlkIGZyb20gYSBsb2NhdGlvbiBmb3IgYW4gb3BlcmF0aW9uIChvZnRlbiBmb3IgdXNpbmcgYFNlbmRYY21gKS40QXNzZXRzQ2xhaW1lZAwBEGhhc2hAARBIMjU2AAEYb3JpZ2luOQIBIExvY2F0aW9uAAEYYXNzZXRzqQMBPFZlcnNpb25lZEFzc2V0cwAYBMBTb21lIGFzc2V0cyBoYXZlIGJlZW4gY2xhaW1lZCBmcm9tIGFuIGFzc2V0IHRyYXBgVmVyc2lvbk1pZ3JhdGlvbkZpbmlzaGVkBAEcdmVyc2lvbjgBKFhjbVZlcnNpb24AGQSEQSBYQ00gdmVyc2lvbiBtaWdyYXRpb24gZmluaXNoZWQuPEFsaWFzQXV0aG9yaXplZAwBHGFsaWFzZXI5AgEgTG9jYXRpb24AARh0YXJnZXQ5AgEgTG9jYXRpb24AARhleHBpcnllAQEsT3B0aW9uPHU2ND4AGghdAUFuIGBhbGlhc2VyYCBsb2NhdGlvbiB3YXMgYXV0aG9yaXplZCBieSBgdGFyZ2V0YCB0byBhbGlhcyBpdCwgYXV0aG9yaXphdGlvbiB2YWxpZCB1bnRpbFhgZXhwaXJ5YCBibG9jayBudW1iZXIuZEFsaWFzQXV0aG9yaXphdGlvblJlbW92ZWQIARxhbGlhc2VyOQIBIExvY2F0aW9uAAEYdGFyZ2V0OQIBIExvY2F0aW9uABsEzGB0YXJnZXRgIHJlbW92ZWQgYWxpYXMgYXV0aG9yaXphdGlvbiBmb3IgYGFsaWFzZXJgLnBBbGlhc2VzQXV0aG9yaXphdGlvbnNSZW1vdmVkBAEYdGFyZ2V0OQIBIExvY2F0aW9uABwEqGB0YXJnZXRgIHJlbW92ZWQgYWxsIGFsaWFzIGF1dGhvcml6YXRpb25zLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldMUIECxzdGFnaW5nX3hjbQh2NRh0cmFpdHMcT3V0Y29tZQABDCBDb21wbGV0ZQQBEHVzZWR5AQEYV2VpZ2h0AAAAKEluY29tcGxldGUIARB1c2VkeQEBGFdlaWdodAABFGVycm9yyQgBQEluc3RydWN0aW9uRXJyb3IAAQAURXJyb3IEAMkIAUBJbnN0cnVjdGlvbkVycm9yAAIAAMkIECxzdGFnaW5nX3hjbQh2NRh0cmFpdHNASW5zdHJ1Y3Rpb25FcnJvcgAACAEUaW5kZXgMAUBJbnN0cnVjdGlvbkluZGV4AAEUZXJyb3JhAwEURXJyb3IAAM0IEAx4Y20IdjMYdHJhaXRzJFNlbmRFcnJvcgABHDROb3RBcHBsaWNhYmxlAAAAJFRyYW5zcG9ydAABAChVbnJvdXRhYmxlAAIAWERlc3RpbmF0aW9uVW5zdXBwb3J0ZWQAAwBURXhjZWVkc01heE1lc3NhZ2VTaXplAAQAPE1pc3NpbmdBcmd1bWVudAAFABBGZWVzAAYAANEIDEhjdW11bHVzX3BhbGxldF94Y20YcGFsbGV0FEV2ZW50BARUAAEMNEludmFsaWRGb3JtYXQEAAgBIFt1ODsgMzJdAAAIgERvd253YXJkIG1lc3NhZ2UgaXMgaW52YWxpZCBYQ00uIFxbIGlkIFxdSFVuc3VwcG9ydGVkVmVyc2lvbgQACAEgW3U4OyAzMl0AAQi8RG93bndhcmQgbWVzc2FnZSBpcyB1bnN1cHBvcnRlZCB2ZXJzaW9uIG9mIFhDTS4gXFsgaWQgXF1ARXhlY3V0ZWREb3dud2FyZAgACAEgW3U4OyAzMl0AAMUIARxPdXRjb21lAAIIxERvd253YXJkIG1lc3NhZ2UgZXhlY3V0ZWQgd2l0aCB0aGUgZ2l2ZW4gb3V0Y29tZS5EXFsgaWQsIG91dGNvbWUgXF0EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXTVCAxwcGFsbGV0X3hjbV9icmlkZ2VfaHViX3JvdXRlchhwYWxsZXQURXZlbnQIBFQABEkAAQhoRGVsaXZlcnlGZWVGYWN0b3JEZWNyZWFzZWQEASRuZXdfdmFsdWWNBwEkRml4ZWRVMTI4BJROZXcgdmFsdWUgb2YgdGhlIGBEZWxpdmVyeUZlZUZhY3RvcmAuAAScRGVsaXZlcnkgZmVlIGZhY3RvciBoYXMgYmVlbiBkZWNyZWFzZWQuaERlbGl2ZXJ5RmVlRmFjdG9ySW5jcmVhc2VkBAEkbmV3X3ZhbHVljQcBJEZpeGVkVTEyOASUTmV3IHZhbHVlIG9mIHRoZSBgRGVsaXZlcnlGZWVGYWN0b3JgLgEEnERlbGl2ZXJ5IGZlZSBmYWN0b3IgaGFzIGJlZW4gaW5jcmVhc2VkLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldNkIDFBwYWxsZXRfbWVzc2FnZV9xdWV1ZRhwYWxsZXQURXZlbnQEBFQAARBAUHJvY2Vzc2luZ0ZhaWxlZAwBCGlkQAEQSDI1NgSUVGhlIGBibGFrZTJfMjU2YCBoYXNoIG9mIHRoZSBtZXNzYWdlLgEYb3JpZ2lu7QMBSE1lc3NhZ2VPcmlnaW5PZjxUPgRkVGhlIHF1ZXVlIG9mIHRoZSBtZXNzYWdlLgEUZXJyb3LdCAFMUHJvY2Vzc01lc3NhZ2VFcnJvchBgVGhlIGVycm9yIHRoYXQgb2NjdXJyZWQuAEkBVGhpcyBlcnJvciBpcyBwcmV0dHkgb3BhcXVlLiBNb3JlIGZpbmUtZ3JhaW5lZCBlcnJvcnMgbmVlZCB0byBiZSBlbWl0dGVkIGFzIGV2ZW50c2hieSB0aGUgYE1lc3NhZ2VQcm9jZXNzb3JgLgAEVQFNZXNzYWdlIGRpc2NhcmRlZCBkdWUgdG8gYW4gZXJyb3IgaW4gdGhlIGBNZXNzYWdlUHJvY2Vzc29yYCAodXN1YWxseSBhIGZvcm1hdCBlcnJvcikuJFByb2Nlc3NlZBABCGlkQAEQSDI1NgSUVGhlIGBibGFrZTJfMjU2YCBoYXNoIG9mIHRoZSBtZXNzYWdlLgEYb3JpZ2lu7QMBSE1lc3NhZ2VPcmlnaW5PZjxUPgRkVGhlIHF1ZXVlIG9mIHRoZSBtZXNzYWdlLgEsd2VpZ2h0X3VzZWR5AQEYV2VpZ2h0BMBIb3cgbXVjaCB3ZWlnaHQgd2FzIHVzZWQgdG8gcHJvY2VzcyB0aGUgbWVzc2FnZS4BHHN1Y2Nlc3OZAQEQYm9vbBiIV2hldGhlciB0aGUgbWVzc2FnZSB3YXMgcHJvY2Vzc2VkLgBJAU5vdGUgdGhhdCB0aGlzIGRvZXMgbm90IG1lYW4gdGhhdCB0aGUgdW5kZXJseWluZyBgTWVzc2FnZVByb2Nlc3NvcmAgd2FzIGludGVybmFsbHk1AXN1Y2Nlc3NmdWwuIEl0ICpzb2xlbHkqIG1lYW5zIHRoYXQgdGhlIE1RIHBhbGxldCB3aWxsIHRyZWF0IHRoaXMgYXMgYSBzdWNjZXNzTQFjb25kaXRpb24gYW5kIGRpc2NhcmQgdGhlIG1lc3NhZ2UuIEFueSBpbnRlcm5hbCBlcnJvciBuZWVkcyB0byBiZSBlbWl0dGVkIGFzIGV2ZW50c2hieSB0aGUgYE1lc3NhZ2VQcm9jZXNzb3JgLgEEVE1lc3NhZ2UgaXMgcHJvY2Vzc2VkLkhPdmVyd2VpZ2h0RW5xdWV1ZWQQAQhpZAgBIFt1ODsgMzJdBJRUaGUgYGJsYWtlMl8yNTZgIGhhc2ggb2YgdGhlIG1lc3NhZ2UuARhvcmlnaW7tAwFITWVzc2FnZU9yaWdpbk9mPFQ+BGRUaGUgcXVldWUgb2YgdGhlIG1lc3NhZ2UuAShwYWdlX2luZGV4OAEkUGFnZUluZGV4BGBUaGUgcGFnZSBvZiB0aGUgbWVzc2FnZS4BNG1lc3NhZ2VfaW5kZXg4ARxUOjpTaXplBKRUaGUgaW5kZXggb2YgdGhlIG1lc3NhZ2Ugd2l0aGluIHRoZSBwYWdlLgIEjE1lc3NhZ2UgcGxhY2VkIGluIG92ZXJ3ZWlnaHQgcXVldWUuKFBhZ2VSZWFwZWQIARhvcmlnaW7tAwFITWVzc2FnZU9yaWdpbk9mPFQ+BFhUaGUgcXVldWUgb2YgdGhlIHBhZ2UuARRpbmRleDgBJFBhZ2VJbmRleARYVGhlIGluZGV4IG9mIHRoZSBwYWdlLgMEVFRoaXMgcGFnZSB3YXMgcmVhcGVkLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldN0IEDRmcmFtZV9zdXBwb3J0GHRyYWl0cyBtZXNzYWdlc0xQcm9jZXNzTWVzc2FnZUVycm9yAAEYJEJhZEZvcm1hdAAAABxDb3JydXB0AAEALFVuc3VwcG9ydGVkAAIAKE92ZXJ3ZWlnaHQEAHkBARhXZWlnaHQAAwAUWWllbGQABABEU3RhY2tMaW1pdFJlYWNoZWQABQAA4QgMOHBhbGxldF91dGlsaXR5GHBhbGxldBRFdmVudAABIEBCYXRjaEludGVycnVwdGVkCAEUaW5kZXg4AQx1MzIAARRlcnJvcgEIATREaXNwYXRjaEVycm9yAAAIVQFCYXRjaCBvZiBkaXNwYXRjaGVzIGRpZCBub3QgY29tcGxldGUgZnVsbHkuIEluZGV4IG9mIGZpcnN0IGZhaWxpbmcgZGlzcGF0Y2ggZ2l2ZW4sIGFzSHdlbGwgYXMgdGhlIGVycm9yLjhCYXRjaENvbXBsZXRlZAABBMhCYXRjaCBvZiBkaXNwYXRjaGVzIGNvbXBsZXRlZCBmdWxseSB3aXRoIG5vIGVycm9yLmBCYXRjaENvbXBsZXRlZFdpdGhFcnJvcnMAAgS0QmF0Y2ggb2YgZGlzcGF0Y2hlcyBjb21wbGV0ZWQgYnV0IGhhcyBlcnJvcnMuNEl0ZW1Db21wbGV0ZWQAAwQdAUEgc2luZ2xlIGl0ZW0gd2l0aGluIGEgQmF0Y2ggb2YgZGlzcGF0Y2hlcyBoYXMgY29tcGxldGVkIHdpdGggbm8gZXJyb3IuKEl0ZW1GYWlsZWQEARRlcnJvcgEIATREaXNwYXRjaEVycm9yAAQEEQFBIHNpbmdsZSBpdGVtIHdpdGhpbiBhIEJhdGNoIG9mIGRpc3BhdGNoZXMgaGFzIGNvbXBsZXRlZCB3aXRoIGVycm9yLjBEaXNwYXRjaGVkQXMEARhyZXN1bHQpCAE4RGlzcGF0Y2hSZXN1bHQABQRYQSBjYWxsIHdhcyBkaXNwYXRjaGVkLkRJZkVsc2VNYWluU3VjY2VzcwAGBGRNYWluIGNhbGwgd2FzIGRpc3BhdGNoZWQuUElmRWxzZUZhbGxiYWNrQ2FsbGVkBAEobWFpbl9lcnJvcgEIATREaXNwYXRjaEVycm9yAAcEhFRoZSBmYWxsYmFjayBjYWxsIHdhcyBkaXNwYXRjaGVkLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldOUIDDxwYWxsZXRfbXVsdGlzaWcYcGFsbGV0FEV2ZW50BARUAAEULE5ld011bHRpc2lnDAEkYXBwcm92aW5nBAEwVDo6QWNjb3VudElkAAEgbXVsdGlzaWcEATBUOjpBY2NvdW50SWQAASRjYWxsX2hhc2gIASBDYWxsSGFzaAAABIxBIG5ldyBtdWx0aXNpZyBvcGVyYXRpb24gaGFzIGJlZ3VuLkBNdWx0aXNpZ0FwcHJvdmFsEAEkYXBwcm92aW5nBAEwVDo6QWNjb3VudElkAAEkdGltZXBvaW50IQQBcFRpbWVwb2ludDxCbG9ja051bWJlckZvcjxUPj4AASBtdWx0aXNpZwQBMFQ6OkFjY291bnRJZAABJGNhbGxfaGFzaAgBIENhbGxIYXNoAAEEyEEgbXVsdGlzaWcgb3BlcmF0aW9uIGhhcyBiZWVuIGFwcHJvdmVkIGJ5IHNvbWVvbmUuQE11bHRpc2lnRXhlY3V0ZWQUASRhcHByb3ZpbmcEATBUOjpBY2NvdW50SWQAASR0aW1lcG9pbnQhBAFwVGltZXBvaW50PEJsb2NrTnVtYmVyRm9yPFQ+PgABIG11bHRpc2lnBAEwVDo6QWNjb3VudElkAAEkY2FsbF9oYXNoCAEgQ2FsbEhhc2gAARhyZXN1bHQpCAE4RGlzcGF0Y2hSZXN1bHQAAgScQSBtdWx0aXNpZyBvcGVyYXRpb24gaGFzIGJlZW4gZXhlY3V0ZWQuRE11bHRpc2lnQ2FuY2VsbGVkEAEoY2FuY2VsbGluZwQBMFQ6OkFjY291bnRJZAABJHRpbWVwb2ludCEEAXBUaW1lcG9pbnQ8QmxvY2tOdW1iZXJGb3I8VD4+AAEgbXVsdGlzaWcEATBUOjpBY2NvdW50SWQAASRjYWxsX2hhc2gIASBDYWxsSGFzaAADBKBBIG11bHRpc2lnIG9wZXJhdGlvbiBoYXMgYmVlbiBjYW5jZWxsZWQuMERlcG9zaXRQb2tlZBABDHdobwQBMFQ6OkFjY291bnRJZAABJGNhbGxfaGFzaAgBIENhbGxIYXNoAAEsb2xkX2RlcG9zaXSVAQEwQmFsYW5jZU9mPFQ+AAEsbmV3X2RlcG9zaXSVAQEwQmFsYW5jZU9mPFQ+AAQE8FRoZSBkZXBvc2l0IGZvciBhIG11bHRpc2lnIG9wZXJhdGlvbiBoYXMgYmVlbiB1cGRhdGVkL3Bva2VkLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldOkIDDBwYWxsZXRfcHJveHkYcGFsbGV0FEV2ZW50BARUAAEcNFByb3h5RXhlY3V0ZWQEARhyZXN1bHQpCAE4RGlzcGF0Y2hSZXN1bHQAAAS8QSBwcm94eSB3YXMgZXhlY3V0ZWQgY29ycmVjdGx5LCB3aXRoIHRoZSBnaXZlbi4sUHVyZUNyZWF0ZWQYARBwdXJlBAEwVDo6QWNjb3VudElkAAEMd2hvBAEwVDo6QWNjb3VudElkAAEocHJveHlfdHlwZS0EATBUOjpQcm94eVR5cGUAAVBkaXNhbWJpZ3VhdGlvbl9pbmRlePkDAQx1MTYAAQhhdDgBREJsb2NrTnVtYmVyRm9yPFQ+AAE8ZXh0cmluc2ljX2luZGV4OAEMdTMyAAEI3EEgcHVyZSBhY2NvdW50IGhhcyBiZWVuIGNyZWF0ZWQgYnkgbmV3IHByb3h5IHdpdGggZ2l2ZW6QZGlzYW1iaWd1YXRpb24gaW5kZXggYW5kIHByb3h5IHR5cGUuKFB1cmVLaWxsZWQQARBwdXJlBAEwVDo6QWNjb3VudElkAAEcc3Bhd25lcgQBMFQ6OkFjY291bnRJZAABKHByb3h5X3R5cGUtBAEwVDo6UHJveHlUeXBlAAFQZGlzYW1iaWd1YXRpb25faW5kZXj5AwEMdTE2AAIEnEEgcHVyZSBwcm94eSB3YXMga2lsbGVkIGJ5IGl0cyBzcGF3bmVyLiRBbm5vdW5jZWQMARByZWFsBAEwVDo6QWNjb3VudElkAAEUcHJveHkEATBUOjpBY2NvdW50SWQAASRjYWxsX2hhc2hAATRDYWxsSGFzaE9mPFQ+AAME4EFuIGFubm91bmNlbWVudCB3YXMgcGxhY2VkIHRvIG1ha2UgYSBjYWxsIGluIHRoZSBmdXR1cmUuKFByb3h5QWRkZWQQASRkZWxlZ2F0b3IEATBUOjpBY2NvdW50SWQAASRkZWxlZ2F0ZWUEATBUOjpBY2NvdW50SWQAAShwcm94eV90eXBlLQQBMFQ6OlByb3h5VHlwZQABFGRlbGF5OAFEQmxvY2tOdW1iZXJGb3I8VD4ABARIQSBwcm94eSB3YXMgYWRkZWQuMFByb3h5UmVtb3ZlZBABJGRlbGVnYXRvcgQBMFQ6OkFjY291bnRJZAABJGRlbGVnYXRlZQQBMFQ6OkFjY291bnRJZAABKHByb3h5X3R5cGUtBAEwVDo6UHJveHlUeXBlAAEUZGVsYXk4AURCbG9ja051bWJlckZvcjxUPgAFBFBBIHByb3h5IHdhcyByZW1vdmVkLjBEZXBvc2l0UG9rZWQQAQx3aG8EATBUOjpBY2NvdW50SWQAARBraW5k7QgBLERlcG9zaXRLaW5kAAEsb2xkX2RlcG9zaXSVAQEwQmFsYW5jZU9mPFQ+AAEsbmV3X2RlcG9zaXSVAQEwQmFsYW5jZU9mPFQ+AAYECQFBIGRlcG9zaXQgc3RvcmVkIGZvciBwcm94aWVzIG9yIGFubm91bmNlbWVudHMgd2FzIHBva2VkIC8gdXBkYXRlZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXTtCAgwcGFsbGV0X3Byb3h5LERlcG9zaXRLaW5kAAEIHFByb3hpZXMAAAA0QW5ub3VuY2VtZW50cwABAADxCAw4cGFsbGV0X2luZGljZXMYcGFsbGV0FEV2ZW50BARUAAEQNEluZGV4QXNzaWduZWQIAQx3aG8EATBUOjpBY2NvdW50SWQAARRpbmRleDgBPFQ6OkFjY291bnRJbmRleAAABHRBIGFjY291bnQgaW5kZXggd2FzIGFzc2lnbmVkLihJbmRleEZyZWVkBAEUaW5kZXg4ATxUOjpBY2NvdW50SW5kZXgAAQS8QSBhY2NvdW50IGluZGV4IGhhcyBiZWVuIGZyZWVkIHVwICh1bmFzc2lnbmVkKS4sSW5kZXhGcm96ZW4IARRpbmRleDgBPFQ6OkFjY291bnRJbmRleAABDHdobwQBMFQ6OkFjY291bnRJZAACBOhBIGFjY291bnQgaW5kZXggaGFzIGJlZW4gZnJvemVuIHRvIGl0cyBjdXJyZW50IGFjY291bnQgSUQuMERlcG9zaXRQb2tlZBABDHdobwQBMFQ6OkFjY291bnRJZAABFGluZGV4OAE8VDo6QWNjb3VudEluZGV4AAEsb2xkX2RlcG9zaXSVAQEwQmFsYW5jZU9mPFQ+AAEsbmV3X2RlcG9zaXSVAQEwQmFsYW5jZU9mPFQ+AAME6EEgZGVwb3NpdCB0byByZXNlcnZlIGFuIGluZGV4IGhhcyBiZWVuIHBva2VkL3JlY29uc2lkZXJlZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXT1CAw0cGFsbGV0X2Fzc2V0cxhwYWxsZXQURXZlbnQIBFQABEkAAYAcQ3JlYXRlZAwBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABHGNyZWF0b3IEATBUOjpBY2NvdW50SWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAAABHRTb21lIGFzc2V0IGNsYXNzIHdhcyBjcmVhdGVkLhhJc3N1ZWQMASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAABGGFtb3VudJUBAShUOjpCYWxhbmNlAAEEYFNvbWUgYXNzZXRzIHdlcmUgaXNzdWVkLixUcmFuc2ZlcnJlZBABIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABEGZyb20EATBUOjpBY2NvdW50SWQAAQh0bwQBMFQ6OkFjY291bnRJZAABGGFtb3VudJUBAShUOjpCYWxhbmNlAAIEdFNvbWUgYXNzZXRzIHdlcmUgdHJhbnNmZXJyZWQuGEJ1cm5lZAwBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABFG93bmVyBAEwVDo6QWNjb3VudElkAAEcYmFsYW5jZZUBAShUOjpCYWxhbmNlAAMEbFNvbWUgYXNzZXRzIHdlcmUgZGVzdHJveWVkLixUZWFtQ2hhbmdlZBABIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABGGlzc3VlcgQBMFQ6OkFjY291bnRJZAABFGFkbWluBAEwVDo6QWNjb3VudElkAAEcZnJlZXplcgQBMFQ6OkFjY291bnRJZAAEBHBUaGUgbWFuYWdlbWVudCB0ZWFtIGNoYW5nZWQuME93bmVyQ2hhbmdlZAgBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABFG93bmVyBAEwVDo6QWNjb3VudElkAAUESFRoZSBvd25lciBjaGFuZ2VkLhhGcm96ZW4IASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAAQx3aG8EATBUOjpBY2NvdW50SWQABgR4U29tZSBhY2NvdW50IGB3aG9gIHdhcyBmcm96ZW4uGFRoYXdlZAgBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABDHdobwQBMFQ6OkFjY291bnRJZAAHBHhTb21lIGFjY291bnQgYHdob2Agd2FzIHRoYXdlZC4sQXNzZXRGcm96ZW4EASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQACASEU29tZSBhc3NldCBgYXNzZXRfaWRgIHdhcyBmcm96ZW4uLEFzc2V0VGhhd2VkBAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAkEhFNvbWUgYXNzZXQgYGFzc2V0X2lkYCB3YXMgdGhhd2VkLkRBY2NvdW50c0Rlc3Ryb3llZAwBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABSGFjY291bnRzX2Rlc3Ryb3llZDgBDHUzMgABSGFjY291bnRzX3JlbWFpbmluZzgBDHUzMgAKBKBBY2NvdW50cyB3ZXJlIGRlc3Ryb3llZCBmb3IgZ2l2ZW4gYXNzZXQuSEFwcHJvdmFsc0Rlc3Ryb3llZAwBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABTGFwcHJvdmFsc19kZXN0cm95ZWQ4AQx1MzIAAUxhcHByb3ZhbHNfcmVtYWluaW5nOAEMdTMyAAsEpEFwcHJvdmFscyB3ZXJlIGRlc3Ryb3llZCBmb3IgZ2l2ZW4gYXNzZXQuSERlc3RydWN0aW9uU3RhcnRlZAQBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAAMBNBBbiBhc3NldCBjbGFzcyBpcyBpbiB0aGUgcHJvY2VzcyBvZiBiZWluZyBkZXN0cm95ZWQuJERlc3Ryb3llZAQBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAANBHRBbiBhc3NldCBjbGFzcyB3YXMgZGVzdHJveWVkLjBGb3JjZUNyZWF0ZWQIASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAAOBIxTb21lIGFzc2V0IGNsYXNzIHdhcyBmb3JjZS1jcmVhdGVkLixNZXRhZGF0YVNldBQBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABEG5hbWUYARxWZWM8dTg+AAEYc3ltYm9sGAEcVmVjPHU4PgABIGRlY2ltYWxzDAEIdTgAASRpc19mcm96ZW6ZAQEQYm9vbAAPBJxOZXcgbWV0YWRhdGEgaGFzIGJlZW4gc2V0IGZvciBhbiBhc3NldC48TWV0YWRhdGFDbGVhcmVkBAEgYXNzZXRfaWQ4AShUOjpBc3NldElkABAEnE1ldGFkYXRhIGhhcyBiZWVuIGNsZWFyZWQgZm9yIGFuIGFzc2V0LkBBcHByb3ZlZFRyYW5zZmVyEAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEYc291cmNlBAEwVDo6QWNjb3VudElkAAEgZGVsZWdhdGUEATBUOjpBY2NvdW50SWQAARhhbW91bnSVAQEoVDo6QmFsYW5jZQARBDEBKEFkZGl0aW9uYWwpIGZ1bmRzIGhhdmUgYmVlbiBhcHByb3ZlZCBmb3IgdHJhbnNmZXIgdG8gYSBkZXN0aW5hdGlvbiBhY2NvdW50LkRBcHByb3ZhbENhbmNlbGxlZAwBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABFG93bmVyBAEwVDo6QWNjb3VudElkAAEgZGVsZWdhdGUEATBUOjpBY2NvdW50SWQAEgTwQW4gYXBwcm92YWwgZm9yIGFjY291bnQgYGRlbGVnYXRlYCB3YXMgY2FuY2VsbGVkIGJ5IGBvd25lcmAuTFRyYW5zZmVycmVkQXBwcm92ZWQUASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAABIGRlbGVnYXRlBAEwVDo6QWNjb3VudElkAAEsZGVzdGluYXRpb24EATBUOjpBY2NvdW50SWQAARhhbW91bnSVAQEoVDo6QmFsYW5jZQATCDEBQW4gYGFtb3VudGAgd2FzIHRyYW5zZmVycmVkIGluIGl0cyBlbnRpcmV0eSBmcm9tIGBvd25lcmAgdG8gYGRlc3RpbmF0aW9uYCBieWB0aGUgYXBwcm92ZWQgYGRlbGVnYXRlYC5IQXNzZXRTdGF0dXNDaGFuZ2VkBAEgYXNzZXRfaWQ4AShUOjpBc3NldElkABQE+EFuIGFzc2V0IGhhcyBoYWQgaXRzIGF0dHJpYnV0ZXMgY2hhbmdlZCBieSB0aGUgYEZvcmNlYCBvcmlnaW4uWEFzc2V0TWluQmFsYW5jZUNoYW5nZWQIASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAATxuZXdfbWluX2JhbGFuY2WVAQEoVDo6QmFsYW5jZQAVBAEBVGhlIG1pbl9iYWxhbmNlIG9mIGFuIGFzc2V0IGhhcyBiZWVuIHVwZGF0ZWQgYnkgdGhlIGFzc2V0IG93bmVyLhxUb3VjaGVkDAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEMd2hvBAEwVDo6QWNjb3VudElkAAEkZGVwb3NpdG9yBAEwVDo6QWNjb3VudElkABYE/FNvbWUgYWNjb3VudCBgd2hvYCB3YXMgY3JlYXRlZCB3aXRoIGEgZGVwb3NpdCBmcm9tIGBkZXBvc2l0b3JgLhxCbG9ja2VkCAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEMd2hvBAEwVDo6QWNjb3VudElkABcEfFNvbWUgYWNjb3VudCBgd2hvYCB3YXMgYmxvY2tlZC4kRGVwb3NpdGVkDAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50lQEBKFQ6OkJhbGFuY2UAGATcU29tZSBhc3NldHMgd2VyZSBkZXBvc2l0ZWQgKGUuZy4gZm9yIHRyYW5zYWN0aW9uIGZlZXMpLiRXaXRoZHJhd24MASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnSVAQEoVDo6QmFsYW5jZQAZBCEBU29tZSBhc3NldHMgd2VyZSB3aXRoZHJhd24gZnJvbSB0aGUgYWNjb3VudCAoZS5nLiBmb3IgdHJhbnNhY3Rpb24gZmVlcykuPFJlc2VydmVzVXBkYXRlZAgBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABIHJlc2VydmVzRQQBTFZlYzxUOjpSZXNlcnZlRGF0YT4AGgTYUmVzZXJ2ZSBpbmZvcm1hdGlvbiB3YXMgc2V0IG9yIHVwZGF0ZWQgZm9yIGBhc3NldF9pZGAuPFJlc2VydmVzUmVtb3ZlZAQBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAAbBLxSZXNlcnZlIGluZm9ybWF0aW9uIHdhcyByZW1vdmVkIGZvciBgYXNzZXRfaWRgLjBJc3N1ZWRDcmVkaXQIASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAARhhbW91bnSVAQEoVDo6QmFsYW5jZQAcBMRTb21lIGFzc2V0cyB3ZXJlIGlzc3VlZCBhcyBDcmVkaXQgKG5vIG93bmVyIHlldCkuMEJ1cm5lZENyZWRpdAgBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABGGFtb3VudJUBAShUOjpCYWxhbmNlAB0EhFNvbWUgYXNzZXRzIENyZWRpdCB3YXMgZGVzdHJveWVkLihJc3N1ZWREZWJ0CAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEYYW1vdW50lQEBKFQ6OkJhbGFuY2UAHgS8U29tZSBhc3NldHMgd2VyZSBidXJuZWQgYW5kIGEgRGVidCB3YXMgY3JlYXRlZC4oQnVybmVkRGVidAgBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABGGFtb3VudJUBAShUOjpCYWxhbmNlAB8EzFNvbWUgYXNzZXRzIERlYnQgd2FzIGRlc3Ryb3llZCAoYW5kIGFzc2V0cyBpc3N1ZWQpLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldPkIDDhwYWxsZXRfdW5pcXVlcxhwYWxsZXQURXZlbnQIBFQABEkAAWwcQ3JlYXRlZAwBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARxjcmVhdG9yBAEwVDo6QWNjb3VudElkAAEUb3duZXIEATBUOjpBY2NvdW50SWQAAARsQSBgY29sbGVjdGlvbmAgd2FzIGNyZWF0ZWQuMEZvcmNlQ3JlYXRlZAgBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAABBIRBIGBjb2xsZWN0aW9uYCB3YXMgZm9yY2UtY3JlYXRlZC4kRGVzdHJveWVkBAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAACBHRBIGBjb2xsZWN0aW9uYCB3YXMgZGVzdHJveWVkLhhJc3N1ZWQMAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAABFG93bmVyBAEwVDo6QWNjb3VudElkAAMEVEFuIGBpdGVtYCB3YXMgaXNzdWVkLixUcmFuc2ZlcnJlZBABKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAEQZnJvbQQBMFQ6OkFjY291bnRJZAABCHRvBAEwVDo6QWNjb3VudElkAAQEaEFuIGBpdGVtYCB3YXMgdHJhbnNmZXJyZWQuGEJ1cm5lZAwBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAEUb3duZXIEATBUOjpBY2NvdW50SWQABQRgQW4gYGl0ZW1gIHdhcyBkZXN0cm95ZWQuGEZyb3plbggBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAYEXFNvbWUgYGl0ZW1gIHdhcyBmcm96ZW4uGFRoYXdlZAgBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAcEXFNvbWUgYGl0ZW1gIHdhcyB0aGF3ZWQuQENvbGxlY3Rpb25Gcm96ZW4EAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAgEdFNvbWUgYGNvbGxlY3Rpb25gIHdhcyBmcm96ZW4uQENvbGxlY3Rpb25UaGF3ZWQEAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAkEdFNvbWUgYGNvbGxlY3Rpb25gIHdhcyB0aGF3ZWQuME93bmVyQ2hhbmdlZAgBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAASRuZXdfb3duZXIEATBUOjpBY2NvdW50SWQACgRIVGhlIG93bmVyIGNoYW5nZWQuLFRlYW1DaGFuZ2VkEAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABGGlzc3VlcgQBMFQ6OkFjY291bnRJZAABFGFkbWluBAEwVDo6QWNjb3VudElkAAEcZnJlZXplcgQBMFQ6OkFjY291bnRJZAALBHBUaGUgbWFuYWdlbWVudCB0ZWFtIGNoYW5nZWQuQEFwcHJvdmVkVHJhbnNmZXIQAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAABFG93bmVyBAEwVDo6QWNjb3VudElkAAEgZGVsZWdhdGUEATBUOjpBY2NvdW50SWQADAgxAUFuIGBpdGVtYCBvZiBhIGBjb2xsZWN0aW9uYCBoYXMgYmVlbiBhcHByb3ZlZCBieSB0aGUgYG93bmVyYCBmb3IgdHJhbnNmZXIgYnk0YSBgZGVsZWdhdGVgLkRBcHByb3ZhbENhbmNlbGxlZBABKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAEUb3duZXIEATBUOjpBY2NvdW50SWQAASBkZWxlZ2F0ZQQBMFQ6OkFjY291bnRJZAANCBkBQW4gYXBwcm92YWwgZm9yIGEgYGRlbGVnYXRlYCBhY2NvdW50IHRvIHRyYW5zZmVyIHRoZSBgaXRlbWAgb2YgYW4gaXRlbahgY29sbGVjdGlvbmAgd2FzIGNhbmNlbGxlZCBieSBpdHMgYG93bmVyYC5ESXRlbVN0YXR1c0NoYW5nZWQEAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAA4EEQFBIGBjb2xsZWN0aW9uYCBoYXMgaGFkIGl0cyBhdHRyaWJ1dGVzIGNoYW5nZWQgYnkgdGhlIGBGb3JjZWAgb3JpZ2luLlRDb2xsZWN0aW9uTWV0YWRhdGFTZXQMAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQZGF0YV0EAXhCb3VuZGVkVmVjPHU4LCBUOjpTdHJpbmdMaW1pdD4AASRpc19mcm96ZW6ZAQEQYm9vbAAPBLROZXcgbWV0YWRhdGEgaGFzIGJlZW4gc2V0IGZvciBhIGBjb2xsZWN0aW9uYC5kQ29sbGVjdGlvbk1ldGFkYXRhQ2xlYXJlZAQBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAEAS0TWV0YWRhdGEgaGFzIGJlZW4gY2xlYXJlZCBmb3IgYSBgY29sbGVjdGlvbmAuLE1ldGFkYXRhU2V0EAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAARBkYXRhXQQBeEJvdW5kZWRWZWM8dTgsIFQ6OlN0cmluZ0xpbWl0PgABJGlzX2Zyb3plbpkBARBib29sABEEmE5ldyBtZXRhZGF0YSBoYXMgYmVlbiBzZXQgZm9yIGFuIGl0ZW0uPE1ldGFkYXRhQ2xlYXJlZAgBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkABIEmE1ldGFkYXRhIGhhcyBiZWVuIGNsZWFyZWQgZm9yIGFuIGl0ZW0uLFJlZGVwb3NpdGVkCAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABQHN1Y2Nlc3NmdWxfaXRlbXNVBAE4VmVjPFQ6Okl0ZW1JZD4AEwSYTWV0YWRhdGEgaGFzIGJlZW4gY2xlYXJlZCBmb3IgYW4gaXRlbS4wQXR0cmlidXRlU2V0EAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABKG1heWJlX2l0ZW3YAURPcHRpb248VDo6SXRlbUlkPgABDGtleVkEAWxCb3VuZGVkVmVjPHU4LCBUOjpLZXlMaW1pdD4AARR2YWx1ZXwBdEJvdW5kZWRWZWM8dTgsIFQ6OlZhbHVlTGltaXQ+ABQEBQFOZXcgYXR0cmlidXRlIG1ldGFkYXRhIGhhcyBiZWVuIHNldCBmb3IgYSBgY29sbGVjdGlvbmAgb3IgYGl0ZW1gLkBBdHRyaWJ1dGVDbGVhcmVkDAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABKG1heWJlX2l0ZW3YAURPcHRpb248VDo6SXRlbUlkPgABDGtleVkEAWxCb3VuZGVkVmVjPHU4LCBUOjpLZXlMaW1pdD4AFQQFAUF0dHJpYnV0ZSBtZXRhZGF0YSBoYXMgYmVlbiBjbGVhcmVkIGZvciBhIGBjb2xsZWN0aW9uYCBvciBgaXRlbWAuaE93bmVyc2hpcEFjY2VwdGFuY2VDaGFuZ2VkCAEMd2hvBAEwVDo6QWNjb3VudElkAAFAbWF5YmVfY29sbGVjdGlvbtgBXE9wdGlvbjxUOjpDb2xsZWN0aW9uSWQ+ABYEwE93bmVyc2hpcCBhY2NlcHRhbmNlIGhhcyBjaGFuZ2VkIGZvciBhbiBhY2NvdW50LlhDb2xsZWN0aW9uTWF4U3VwcGx5U2V0CAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABKG1heF9zdXBwbHk4AQx1MzIAFwSkTWF4IHN1cHBseSBoYXMgYmVlbiBzZXQgZm9yIGEgY29sbGVjdGlvbi4wSXRlbVByaWNlU2V0EAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAARRwcmljZZUBATxJdGVtUHJpY2U8VCwgST4AAUR3aGl0ZWxpc3RlZF9idXllckEBAVBPcHRpb248VDo6QWNjb3VudElkPgAYBIxUaGUgcHJpY2Ugd2FzIHNldCBmb3IgdGhlIGluc3RhbmNlLkBJdGVtUHJpY2VSZW1vdmVkCAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAGQScVGhlIHByaWNlIGZvciB0aGUgaW5zdGFuY2Ugd2FzIHJlbW92ZWQuKEl0ZW1Cb3VnaHQUAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAABFHByaWNllQEBPEl0ZW1QcmljZTxULCBJPgABGHNlbGxlcgQBMFQ6OkFjY291bnRJZAABFGJ1eWVyBAEwVDo6QWNjb3VudElkABoETEFuIGl0ZW0gd2FzIGJvdWdodC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXT9CAwscGFsbGV0X25mdHMYcGFsbGV0FEV2ZW50CARUAARJAAGYHENyZWF0ZWQMAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEcY3JlYXRvcgQBMFQ6OkFjY291bnRJZAABFG93bmVyBAEwVDo6QWNjb3VudElkAAAEbEEgYGNvbGxlY3Rpb25gIHdhcyBjcmVhdGVkLjBGb3JjZUNyZWF0ZWQIAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEUb3duZXIEATBUOjpBY2NvdW50SWQAAQSEQSBgY29sbGVjdGlvbmAgd2FzIGZvcmNlLWNyZWF0ZWQuJERlc3Ryb3llZAQBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAAgR0QSBgY29sbGVjdGlvbmAgd2FzIGRlc3Ryb3llZC4YSXNzdWVkDAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAADBFRBbiBgaXRlbWAgd2FzIGlzc3VlZC4sVHJhbnNmZXJyZWQQAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAABEGZyb20EATBUOjpBY2NvdW50SWQAAQh0bwQBMFQ6OkFjY291bnRJZAAEBGhBbiBgaXRlbWAgd2FzIHRyYW5zZmVycmVkLhhCdXJuZWQMAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAABFG93bmVyBAEwVDo6QWNjb3VudElkAAUEYEFuIGBpdGVtYCB3YXMgZGVzdHJveWVkLkhJdGVtVHJhbnNmZXJMb2NrZWQIAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAAGBIhBbiBgaXRlbWAgYmVjYW1lIG5vbi10cmFuc2ZlcmFibGUuUEl0ZW1UcmFuc2ZlclVubG9ja2VkCAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQABwR4QW4gYGl0ZW1gIGJlY2FtZSB0cmFuc2ZlcmFibGUuUEl0ZW1Qcm9wZXJ0aWVzTG9ja2VkEAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAATRsb2NrX21ldGFkYXRhmQEBEGJvb2wAATxsb2NrX2F0dHJpYnV0ZXOZAQEQYm9vbAAIBKhgaXRlbWAgbWV0YWRhdGEgb3IgYXR0cmlidXRlcyB3ZXJlIGxvY2tlZC5AQ29sbGVjdGlvbkxvY2tlZAQBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQACQR0U29tZSBgY29sbGVjdGlvbmAgd2FzIGxvY2tlZC4wT3duZXJDaGFuZ2VkCAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABJG5ld19vd25lcgQBMFQ6OkFjY291bnRJZAAKBEhUaGUgb3duZXIgY2hhbmdlZC4sVGVhbUNoYW5nZWQQAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEYaXNzdWVyQQEBUE9wdGlvbjxUOjpBY2NvdW50SWQ+AAEUYWRtaW5BAQFQT3B0aW9uPFQ6OkFjY291bnRJZD4AARxmcmVlemVyQQEBUE9wdGlvbjxUOjpBY2NvdW50SWQ+AAsEcFRoZSBtYW5hZ2VtZW50IHRlYW0gY2hhbmdlZC5AVHJhbnNmZXJBcHByb3ZlZBQBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAEUb3duZXIEATBUOjpBY2NvdW50SWQAASBkZWxlZ2F0ZQQBMFQ6OkFjY291bnRJZAABIGRlYWRsaW5l2AFwT3B0aW9uPEJsb2NrTnVtYmVyRm9yPFQsIEk+PgAMCDEBQW4gYGl0ZW1gIG9mIGEgYGNvbGxlY3Rpb25gIGhhcyBiZWVuIGFwcHJvdmVkIGJ5IHRoZSBgb3duZXJgIGZvciB0cmFuc2ZlciBieTRhIGBkZWxlZ2F0ZWAuREFwcHJvdmFsQ2FuY2VsbGVkEAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAABIGRlbGVnYXRlBAEwVDo6QWNjb3VudElkAA0IGQFBbiBhcHByb3ZhbCBmb3IgYSBgZGVsZWdhdGVgIGFjY291bnQgdG8gdHJhbnNmZXIgdGhlIGBpdGVtYCBvZiBhbiBpdGVtqGBjb2xsZWN0aW9uYCB3YXMgY2FuY2VsbGVkIGJ5IGl0cyBgb3duZXJgLlRBbGxBcHByb3ZhbHNDYW5jZWxsZWQMAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAABFG93bmVyBAEwVDo6QWNjb3VudElkAA4EnEFsbCBhcHByb3ZhbHMgb2YgYW4gaXRlbSBnb3QgY2FuY2VsbGVkLlxDb2xsZWN0aW9uQ29uZmlnQ2hhbmdlZAQBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQADwQBAUEgYGNvbGxlY3Rpb25gIGhhcyBoYWQgaXRzIGNvbmZpZyBjaGFuZ2VkIGJ5IHRoZSBgRm9yY2VgIG9yaWdpbi5UQ29sbGVjdGlvbk1ldGFkYXRhU2V0CAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGRhdGHgAXhCb3VuZGVkVmVjPHU4LCBUOjpTdHJpbmdMaW1pdD4AEAS0TmV3IG1ldGFkYXRhIGhhcyBiZWVuIHNldCBmb3IgYSBgY29sbGVjdGlvbmAuZENvbGxlY3Rpb25NZXRhZGF0YUNsZWFyZWQEAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkABEEtE1ldGFkYXRhIGhhcyBiZWVuIGNsZWFyZWQgZm9yIGEgYGNvbGxlY3Rpb25gLjxJdGVtTWV0YWRhdGFTZXQMAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAABEGRhdGHgAXhCb3VuZGVkVmVjPHU4LCBUOjpTdHJpbmdMaW1pdD4AEgSYTmV3IG1ldGFkYXRhIGhhcyBiZWVuIHNldCBmb3IgYW4gaXRlbS5MSXRlbU1ldGFkYXRhQ2xlYXJlZAgBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkABMEmE1ldGFkYXRhIGhhcyBiZWVuIGNsZWFyZWQgZm9yIGFuIGl0ZW0uLFJlZGVwb3NpdGVkCAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABQHN1Y2Nlc3NmdWxfaXRlbXNVBAE4VmVjPFQ6Okl0ZW1JZD4AFAQhAVRoZSBkZXBvc2l0IGZvciBhIHNldCBvZiBgaXRlbWBzIHdpdGhpbiBhIGBjb2xsZWN0aW9uYCBoYXMgYmVlbiB1cGRhdGVkLjBBdHRyaWJ1dGVTZXQUAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEobWF5YmVfaXRlbdgBRE9wdGlvbjxUOjpJdGVtSWQ+AAEMa2V5fAFsQm91bmRlZFZlYzx1OCwgVDo6S2V5TGltaXQ+AAEUdmFsdWXgAXRCb3VuZGVkVmVjPHU4LCBUOjpWYWx1ZUxpbWl0PgABJG5hbWVzcGFjZZUEAYBBdHRyaWJ1dGVOYW1lc3BhY2U8VDo6QWNjb3VudElkPgAVBAUBTmV3IGF0dHJpYnV0ZSBtZXRhZGF0YSBoYXMgYmVlbiBzZXQgZm9yIGEgYGNvbGxlY3Rpb25gIG9yIGBpdGVtYC5AQXR0cmlidXRlQ2xlYXJlZBABKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAAShtYXliZV9pdGVt2AFET3B0aW9uPFQ6Okl0ZW1JZD4AAQxrZXl8AWxCb3VuZGVkVmVjPHU4LCBUOjpLZXlMaW1pdD4AASRuYW1lc3BhY2WVBAGAQXR0cmlidXRlTmFtZXNwYWNlPFQ6OkFjY291bnRJZD4AFgQFAUF0dHJpYnV0ZSBtZXRhZGF0YSBoYXMgYmVlbiBjbGVhcmVkIGZvciBhIGBjb2xsZWN0aW9uYCBvciBgaXRlbWAubEl0ZW1BdHRyaWJ1dGVzQXBwcm92YWxBZGRlZAwBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAEgZGVsZWdhdGUEATBUOjpBY2NvdW50SWQAFwTMQSBuZXcgYXBwcm92YWwgdG8gbW9kaWZ5IGl0ZW0gYXR0cmlidXRlcyB3YXMgYWRkZWQudEl0ZW1BdHRyaWJ1dGVzQXBwcm92YWxSZW1vdmVkDAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAASBkZWxlZ2F0ZQQBMFQ6OkFjY291bnRJZAAYBNRBIG5ldyBhcHByb3ZhbCB0byBtb2RpZnkgaXRlbSBhdHRyaWJ1dGVzIHdhcyByZW1vdmVkLmhPd25lcnNoaXBBY2NlcHRhbmNlQ2hhbmdlZAgBDHdobwQBMFQ6OkFjY291bnRJZAABQG1heWJlX2NvbGxlY3Rpb27YAVxPcHRpb248VDo6Q29sbGVjdGlvbklkPgAZBMBPd25lcnNoaXAgYWNjZXB0YW5jZSBoYXMgY2hhbmdlZCBmb3IgYW4gYWNjb3VudC5YQ29sbGVjdGlvbk1heFN1cHBseVNldAgBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAAShtYXhfc3VwcGx5OAEMdTMyABoEpE1heCBzdXBwbHkgaGFzIGJlZW4gc2V0IGZvciBhIGNvbGxlY3Rpb24udENvbGxlY3Rpb25NaW50U2V0dGluZ3NVcGRhdGVkBAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAAbBKxNaW50IHNldHRpbmdzIGZvciBhIGNvbGxlY3Rpb24gaGFkIGNoYW5nZWQubE5leHRDb2xsZWN0aW9uSWRJbmNyZW1lbnRlZAQBHG5leHRfaWTYAVxPcHRpb248VDo6Q29sbGVjdGlvbklkPgAcBAEBRXZlbnQgZ2V0cyBlbWl0dGVkIHdoZW4gdGhlIGBOZXh0Q29sbGVjdGlvbklkYCBnZXRzIGluY3JlbWVudGVkLjBJdGVtUHJpY2VTZXQQAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAABFHByaWNllQEBPEl0ZW1QcmljZTxULCBJPgABRHdoaXRlbGlzdGVkX2J1eWVyQQEBUE9wdGlvbjxUOjpBY2NvdW50SWQ+AB0EfFRoZSBwcmljZSB3YXMgc2V0IGZvciB0aGUgaXRlbS5ASXRlbVByaWNlUmVtb3ZlZAgBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAB4EjFRoZSBwcmljZSBmb3IgdGhlIGl0ZW0gd2FzIHJlbW92ZWQuKEl0ZW1Cb3VnaHQUAShjb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAEQaXRlbTgBJFQ6Okl0ZW1JZAABFHByaWNllQEBPEl0ZW1QcmljZTxULCBJPgABGHNlbGxlcgQBMFQ6OkFjY291bnRJZAABFGJ1eWVyBAEwVDo6QWNjb3VudElkAB8ETEFuIGl0ZW0gd2FzIGJvdWdodC4cVGlwU2VudBQBKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVtOAEkVDo6SXRlbUlkAAEYc2VuZGVyBAEwVDo6QWNjb3VudElkAAEgcmVjZWl2ZXIEATBUOjpBY2NvdW50SWQAARhhbW91bnSVAQFYRGVwb3NpdEJhbGFuY2VPZjxULCBJPgAgBDxBIHRpcCB3YXMgc2VudC4sU3dhcENyZWF0ZWQYAUhvZmZlcmVkX2NvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAATBvZmZlcmVkX2l0ZW04ASRUOjpJdGVtSWQAAUhkZXNpcmVkX2NvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAATBkZXNpcmVkX2l0ZW3YAURPcHRpb248VDo6SXRlbUlkPgABFHByaWNlqQQBrE9wdGlvbjxQcmljZVdpdGhEaXJlY3Rpb248SXRlbVByaWNlPFQsIEk+Pj4AASBkZWFkbGluZTgBUEJsb2NrTnVtYmVyRm9yPFQsIEk+ACEEiEFuIGBpdGVtYCBzd2FwIGludGVudCB3YXMgY3JlYXRlZC40U3dhcENhbmNlbGxlZBgBSG9mZmVyZWRfY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABMG9mZmVyZWRfaXRlbTgBJFQ6Okl0ZW1JZAABSGRlc2lyZWRfY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABMGRlc2lyZWRfaXRlbdgBRE9wdGlvbjxUOjpJdGVtSWQ+AAEUcHJpY2WpBAGsT3B0aW9uPFByaWNlV2l0aERpcmVjdGlvbjxJdGVtUHJpY2U8VCwgST4+PgABIGRlYWRsaW5lOAFQQmxvY2tOdW1iZXJGb3I8VCwgST4AIgRcVGhlIHN3YXAgd2FzIGNhbmNlbGxlZC4sU3dhcENsYWltZWQgATxzZW50X2NvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAASRzZW50X2l0ZW04ASRUOjpJdGVtSWQAATxzZW50X2l0ZW1fb3duZXIEATBUOjpBY2NvdW50SWQAAUxyZWNlaXZlZF9jb2xsZWN0aW9uOAE8VDo6Q29sbGVjdGlvbklkAAE0cmVjZWl2ZWRfaXRlbTgBJFQ6Okl0ZW1JZAABTHJlY2VpdmVkX2l0ZW1fb3duZXIEATBUOjpBY2NvdW50SWQAARRwcmljZakEAaxPcHRpb248UHJpY2VXaXRoRGlyZWN0aW9uPEl0ZW1QcmljZTxULCBJPj4+AAEgZGVhZGxpbmU4AVBCbG9ja051bWJlckZvcjxULCBJPgAjBGhUaGUgc3dhcCBoYXMgYmVlbiBjbGFpbWVkLlhQcmVTaWduZWRBdHRyaWJ1dGVzU2V0DAEoY29sbGVjdGlvbjgBPFQ6OkNvbGxlY3Rpb25JZAABEGl0ZW04ASRUOjpJdGVtSWQAASRuYW1lc3BhY2WVBAGAQXR0cmlidXRlTmFtZXNwYWNlPFQ6OkFjY291bnRJZD4AJAT8TmV3IGF0dHJpYnV0ZXMgaGF2ZSBiZWVuIHNldCBmb3IgYW4gYGl0ZW1gIG9mIHRoZSBgY29sbGVjdGlvbmAuSFBhbGxldEF0dHJpYnV0ZVNldBABKGNvbGxlY3Rpb244ATxUOjpDb2xsZWN0aW9uSWQAARBpdGVt2AFET3B0aW9uPFQ6Okl0ZW1JZD4AASRhdHRyaWJ1dGUBCQGEUGFsbGV0QXR0cmlidXRlczxUOjpDb2xsZWN0aW9uSWQ+AAEUdmFsdWXgAXRCb3VuZGVkVmVjPHU4LCBUOjpWYWx1ZUxpbWl0PgAlCE0BQSBuZXcgYXR0cmlidXRlIGluIHRoZSBgUGFsbGV0YCBuYW1lc3BhY2Ugd2FzIHNldCBmb3IgdGhlIGBjb2xsZWN0aW9uYCBvciBhbiBgaXRlbWBkd2l0aGluIHRoYXQgYGNvbGxlY3Rpb25gLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldAEJDCxwYWxsZXRfbmZ0cxR0eXBlc0BQYWxsZXRBdHRyaWJ1dGVzBDBDb2xsZWN0aW9uSWQBOAEILFVzZWRUb0NsYWltBAA4ATBDb2xsZWN0aW9uSWQAAABAVHJhbnNmZXJEaXNhYmxlZAABAAAFCQw0cGFsbGV0X2Fzc2V0cxhwYWxsZXQURXZlbnQIBFQABEkAAYAcQ3JlYXRlZAwBIGFzc2V0X2lkOQIBKFQ6OkFzc2V0SWQAARxjcmVhdG9yBAEwVDo6QWNjb3VudElkAAEUb3duZXIEATBUOjpBY2NvdW50SWQAAAR0U29tZSBhc3NldCBjbGFzcyB3YXMgY3JlYXRlZC4YSXNzdWVkDAEgYXNzZXRfaWQ5AgEoVDo6QXNzZXRJZAABFG93bmVyBAEwVDo6QWNjb3VudElkAAEYYW1vdW50lQEBKFQ6OkJhbGFuY2UAAQRgU29tZSBhc3NldHMgd2VyZSBpc3N1ZWQuLFRyYW5zZmVycmVkEAEgYXNzZXRfaWQ5AgEoVDo6QXNzZXRJZAABEGZyb20EATBUOjpBY2NvdW50SWQAAQh0bwQBMFQ6OkFjY291bnRJZAABGGFtb3VudJUBAShUOjpCYWxhbmNlAAIEdFNvbWUgYXNzZXRzIHdlcmUgdHJhbnNmZXJyZWQuGEJ1cm5lZAwBIGFzc2V0X2lkOQIBKFQ6OkFzc2V0SWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAABHGJhbGFuY2WVAQEoVDo6QmFsYW5jZQADBGxTb21lIGFzc2V0cyB3ZXJlIGRlc3Ryb3llZC4sVGVhbUNoYW5nZWQQASBhc3NldF9pZDkCAShUOjpBc3NldElkAAEYaXNzdWVyBAEwVDo6QWNjb3VudElkAAEUYWRtaW4EATBUOjpBY2NvdW50SWQAARxmcmVlemVyBAEwVDo6QWNjb3VudElkAAQEcFRoZSBtYW5hZ2VtZW50IHRlYW0gY2hhbmdlZC4wT3duZXJDaGFuZ2VkCAEgYXNzZXRfaWQ5AgEoVDo6QXNzZXRJZAABFG93bmVyBAEwVDo6QWNjb3VudElkAAUESFRoZSBvd25lciBjaGFuZ2VkLhhGcm96ZW4IASBhc3NldF9pZDkCAShUOjpBc3NldElkAAEMd2hvBAEwVDo6QWNjb3VudElkAAYEeFNvbWUgYWNjb3VudCBgd2hvYCB3YXMgZnJvemVuLhhUaGF3ZWQIASBhc3NldF9pZDkCAShUOjpBc3NldElkAAEMd2hvBAEwVDo6QWNjb3VudElkAAcEeFNvbWUgYWNjb3VudCBgd2hvYCB3YXMgdGhhd2VkLixBc3NldEZyb3plbgQBIGFzc2V0X2lkOQIBKFQ6OkFzc2V0SWQACASEU29tZSBhc3NldCBgYXNzZXRfaWRgIHdhcyBmcm96ZW4uLEFzc2V0VGhhd2VkBAEgYXNzZXRfaWQ5AgEoVDo6QXNzZXRJZAAJBIRTb21lIGFzc2V0IGBhc3NldF9pZGAgd2FzIHRoYXdlZC5EQWNjb3VudHNEZXN0cm95ZWQMASBhc3NldF9pZDkCAShUOjpBc3NldElkAAFIYWNjb3VudHNfZGVzdHJveWVkOAEMdTMyAAFIYWNjb3VudHNfcmVtYWluaW5nOAEMdTMyAAoEoEFjY291bnRzIHdlcmUgZGVzdHJveWVkIGZvciBnaXZlbiBhc3NldC5IQXBwcm92YWxzRGVzdHJveWVkDAEgYXNzZXRfaWQ5AgEoVDo6QXNzZXRJZAABTGFwcHJvdmFsc19kZXN0cm95ZWQ4AQx1MzIAAUxhcHByb3ZhbHNfcmVtYWluaW5nOAEMdTMyAAsEpEFwcHJvdmFscyB3ZXJlIGRlc3Ryb3llZCBmb3IgZ2l2ZW4gYXNzZXQuSERlc3RydWN0aW9uU3RhcnRlZAQBIGFzc2V0X2lkOQIBKFQ6OkFzc2V0SWQADATQQW4gYXNzZXQgY2xhc3MgaXMgaW4gdGhlIHByb2Nlc3Mgb2YgYmVpbmcgZGVzdHJveWVkLiREZXN0cm95ZWQEASBhc3NldF9pZDkCAShUOjpBc3NldElkAA0EdEFuIGFzc2V0IGNsYXNzIHdhcyBkZXN0cm95ZWQuMEZvcmNlQ3JlYXRlZAgBIGFzc2V0X2lkOQIBKFQ6OkFzc2V0SWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAAOBIxTb21lIGFzc2V0IGNsYXNzIHdhcyBmb3JjZS1jcmVhdGVkLixNZXRhZGF0YVNldBQBIGFzc2V0X2lkOQIBKFQ6OkFzc2V0SWQAARBuYW1lGAEcVmVjPHU4PgABGHN5bWJvbBgBHFZlYzx1OD4AASBkZWNpbWFscwwBCHU4AAEkaXNfZnJvemVumQEBEGJvb2wADwScTmV3IG1ldGFkYXRhIGhhcyBiZWVuIHNldCBmb3IgYW4gYXNzZXQuPE1ldGFkYXRhQ2xlYXJlZAQBIGFzc2V0X2lkOQIBKFQ6OkFzc2V0SWQAEAScTWV0YWRhdGEgaGFzIGJlZW4gY2xlYXJlZCBmb3IgYW4gYXNzZXQuQEFwcHJvdmVkVHJhbnNmZXIQASBhc3NldF9pZDkCAShUOjpBc3NldElkAAEYc291cmNlBAEwVDo6QWNjb3VudElkAAEgZGVsZWdhdGUEATBUOjpBY2NvdW50SWQAARhhbW91bnSVAQEoVDo6QmFsYW5jZQARBDEBKEFkZGl0aW9uYWwpIGZ1bmRzIGhhdmUgYmVlbiBhcHByb3ZlZCBmb3IgdHJhbnNmZXIgdG8gYSBkZXN0aW5hdGlvbiBhY2NvdW50LkRBcHByb3ZhbENhbmNlbGxlZAwBIGFzc2V0X2lkOQIBKFQ6OkFzc2V0SWQAARRvd25lcgQBMFQ6OkFjY291bnRJZAABIGRlbGVnYXRlBAEwVDo6QWNjb3VudElkABIE8EFuIGFwcHJvdmFsIGZvciBhY2NvdW50IGBkZWxlZ2F0ZWAgd2FzIGNhbmNlbGxlZCBieSBgb3duZXJgLkxUcmFuc2ZlcnJlZEFwcHJvdmVkFAEgYXNzZXRfaWQ5AgEoVDo6QXNzZXRJZAABFG93bmVyBAEwVDo6QWNjb3VudElkAAEgZGVsZWdhdGUEATBUOjpBY2NvdW50SWQAASxkZXN0aW5hdGlvbgQBMFQ6OkFjY291bnRJZAABGGFtb3VudJUBAShUOjpCYWxhbmNlABMIMQFBbiBgYW1vdW50YCB3YXMgdHJhbnNmZXJyZWQgaW4gaXRzIGVudGlyZXR5IGZyb20gYG93bmVyYCB0byBgZGVzdGluYXRpb25gIGJ5YHRoZSBhcHByb3ZlZCBgZGVsZWdhdGVgLkhBc3NldFN0YXR1c0NoYW5nZWQEASBhc3NldF9pZDkCAShUOjpBc3NldElkABQE+EFuIGFzc2V0IGhhcyBoYWQgaXRzIGF0dHJpYnV0ZXMgY2hhbmdlZCBieSB0aGUgYEZvcmNlYCBvcmlnaW4uWEFzc2V0TWluQmFsYW5jZUNoYW5nZWQIASBhc3NldF9pZDkCAShUOjpBc3NldElkAAE8bmV3X21pbl9iYWxhbmNllQEBKFQ6OkJhbGFuY2UAFQQBAVRoZSBtaW5fYmFsYW5jZSBvZiBhbiBhc3NldCBoYXMgYmVlbiB1cGRhdGVkIGJ5IHRoZSBhc3NldCBvd25lci4cVG91Y2hlZAwBIGFzc2V0X2lkOQIBKFQ6OkFzc2V0SWQAAQx3aG8EATBUOjpBY2NvdW50SWQAASRkZXBvc2l0b3IEATBUOjpBY2NvdW50SWQAFgT8U29tZSBhY2NvdW50IGB3aG9gIHdhcyBjcmVhdGVkIHdpdGggYSBkZXBvc2l0IGZyb20gYGRlcG9zaXRvcmAuHEJsb2NrZWQIASBhc3NldF9pZDkCAShUOjpBc3NldElkAAEMd2hvBAEwVDo6QWNjb3VudElkABcEfFNvbWUgYWNjb3VudCBgd2hvYCB3YXMgYmxvY2tlZC4kRGVwb3NpdGVkDAEgYXNzZXRfaWQ5AgEoVDo6QXNzZXRJZAABDHdobwQBMFQ6OkFjY291bnRJZAABGGFtb3VudJUBAShUOjpCYWxhbmNlABgE3FNvbWUgYXNzZXRzIHdlcmUgZGVwb3NpdGVkIChlLmcuIGZvciB0cmFuc2FjdGlvbiBmZWVzKS4kV2l0aGRyYXduDAEgYXNzZXRfaWQ5AgEoVDo6QXNzZXRJZAABDHdobwQBMFQ6OkFjY291bnRJZAABGGFtb3VudJUBAShUOjpCYWxhbmNlABkEIQFTb21lIGFzc2V0cyB3ZXJlIHdpdGhkcmF3biBmcm9tIHRoZSBhY2NvdW50IChlLmcuIGZvciB0cmFuc2FjdGlvbiBmZWVzKS48UmVzZXJ2ZXNVcGRhdGVkCAEgYXNzZXRfaWQ5AgEoVDo6QXNzZXRJZAABIHJlc2VydmVz0QQBTFZlYzxUOjpSZXNlcnZlRGF0YT4AGgTYUmVzZXJ2ZSBpbmZvcm1hdGlvbiB3YXMgc2V0IG9yIHVwZGF0ZWQgZm9yIGBhc3NldF9pZGAuPFJlc2VydmVzUmVtb3ZlZAQBIGFzc2V0X2lkOQIBKFQ6OkFzc2V0SWQAGwS8UmVzZXJ2ZSBpbmZvcm1hdGlvbiB3YXMgcmVtb3ZlZCBmb3IgYGFzc2V0X2lkYC4wSXNzdWVkQ3JlZGl0CAEgYXNzZXRfaWQ5AgEoVDo6QXNzZXRJZAABGGFtb3VudJUBAShUOjpCYWxhbmNlABwExFNvbWUgYXNzZXRzIHdlcmUgaXNzdWVkIGFzIENyZWRpdCAobm8gb3duZXIgeWV0KS4wQnVybmVkQ3JlZGl0CAEgYXNzZXRfaWQ5AgEoVDo6QXNzZXRJZAABGGFtb3VudJUBAShUOjpCYWxhbmNlAB0EhFNvbWUgYXNzZXRzIENyZWRpdCB3YXMgZGVzdHJveWVkLihJc3N1ZWREZWJ0CAEgYXNzZXRfaWQ5AgEoVDo6QXNzZXRJZAABGGFtb3VudJUBAShUOjpCYWxhbmNlAB4EvFNvbWUgYXNzZXRzIHdlcmUgYnVybmVkIGFuZCBhIERlYnQgd2FzIGNyZWF0ZWQuKEJ1cm5lZERlYnQIASBhc3NldF9pZDkCAShUOjpBc3NldElkAAEYYW1vdW50lQEBKFQ6OkJhbGFuY2UAHwTMU29tZSBhc3NldHMgRGVidCB3YXMgZGVzdHJveWVkIChhbmQgYXNzZXRzIGlzc3VlZCkuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0CQkMcHBhbGxldF9uZnRfZnJhY3Rpb25hbGl6YXRpb24YcGFsbGV0FEV2ZW50BARUAAEIRE5mdEZyYWN0aW9uYWxpemVkFAE4bmZ0X2NvbGxlY3Rpb244AUhUOjpOZnRDb2xsZWN0aW9uSWQAAQxuZnQ4ASBUOjpOZnRJZAABJGZyYWN0aW9uc5UBAURBc3NldEJhbGFuY2VPZjxUPgABFGFzc2V0OAEwQXNzZXRJZE9mPFQ+AAEsYmVuZWZpY2lhcnkEATBUOjpBY2NvdW50SWQAAAScQW4gTkZUIHdhcyBzdWNjZXNzZnVsbHkgZnJhY3Rpb25hbGl6ZWQuKE5mdFVuaWZpZWQQAThuZnRfY29sbGVjdGlvbjgBSFQ6Ok5mdENvbGxlY3Rpb25JZAABDG5mdDgBIFQ6Ok5mdElkAAEUYXNzZXQ4ATBBc3NldElkT2Y8VD4AASxiZW5lZmljaWFyeQQBMFQ6OkFjY291bnRJZAABBJhBbiBORlQgd2FzIHN1Y2Nlc3NmdWxseSByZXR1cm5lZCBiYWNrLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldA0JDDRwYWxsZXRfYXNzZXRzGHBhbGxldBRFdmVudAgEVAAESQABgBxDcmVhdGVkDAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEcY3JlYXRvcgQBMFQ6OkFjY291bnRJZAABFG93bmVyBAEwVDo6QWNjb3VudElkAAAEdFNvbWUgYXNzZXQgY2xhc3Mgd2FzIGNyZWF0ZWQuGElzc3VlZAwBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABFG93bmVyBAEwVDo6QWNjb3VudElkAAEYYW1vdW50lQEBKFQ6OkJhbGFuY2UAAQRgU29tZSBhc3NldHMgd2VyZSBpc3N1ZWQuLFRyYW5zZmVycmVkEAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEQZnJvbQQBMFQ6OkFjY291bnRJZAABCHRvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50lQEBKFQ6OkJhbGFuY2UAAgR0U29tZSBhc3NldHMgd2VyZSB0cmFuc2ZlcnJlZC4YQnVybmVkDAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEUb3duZXIEATBUOjpBY2NvdW50SWQAARxiYWxhbmNllQEBKFQ6OkJhbGFuY2UAAwRsU29tZSBhc3NldHMgd2VyZSBkZXN0cm95ZWQuLFRlYW1DaGFuZ2VkEAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEYaXNzdWVyBAEwVDo6QWNjb3VudElkAAEUYWRtaW4EATBUOjpBY2NvdW50SWQAARxmcmVlemVyBAEwVDo6QWNjb3VudElkAAQEcFRoZSBtYW5hZ2VtZW50IHRlYW0gY2hhbmdlZC4wT3duZXJDaGFuZ2VkCAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEUb3duZXIEATBUOjpBY2NvdW50SWQABQRIVGhlIG93bmVyIGNoYW5nZWQuGEZyb3plbggBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABDHdobwQBMFQ6OkFjY291bnRJZAAGBHhTb21lIGFjY291bnQgYHdob2Agd2FzIGZyb3plbi4YVGhhd2VkCAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEMd2hvBAEwVDo6QWNjb3VudElkAAcEeFNvbWUgYWNjb3VudCBgd2hvYCB3YXMgdGhhd2VkLixBc3NldEZyb3plbgQBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAAIBIRTb21lIGFzc2V0IGBhc3NldF9pZGAgd2FzIGZyb3plbi4sQXNzZXRUaGF3ZWQEASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQACQSEU29tZSBhc3NldCBgYXNzZXRfaWRgIHdhcyB0aGF3ZWQuREFjY291bnRzRGVzdHJveWVkDAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAFIYWNjb3VudHNfZGVzdHJveWVkOAEMdTMyAAFIYWNjb3VudHNfcmVtYWluaW5nOAEMdTMyAAoEoEFjY291bnRzIHdlcmUgZGVzdHJveWVkIGZvciBnaXZlbiBhc3NldC5IQXBwcm92YWxzRGVzdHJveWVkDAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAFMYXBwcm92YWxzX2Rlc3Ryb3llZDgBDHUzMgABTGFwcHJvdmFsc19yZW1haW5pbmc4AQx1MzIACwSkQXBwcm92YWxzIHdlcmUgZGVzdHJveWVkIGZvciBnaXZlbiBhc3NldC5IRGVzdHJ1Y3Rpb25TdGFydGVkBAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAwE0EFuIGFzc2V0IGNsYXNzIGlzIGluIHRoZSBwcm9jZXNzIG9mIGJlaW5nIGRlc3Ryb3llZC4kRGVzdHJveWVkBAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAA0EdEFuIGFzc2V0IGNsYXNzIHdhcyBkZXN0cm95ZWQuMEZvcmNlQ3JlYXRlZAgBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABFG93bmVyBAEwVDo6QWNjb3VudElkAA4EjFNvbWUgYXNzZXQgY2xhc3Mgd2FzIGZvcmNlLWNyZWF0ZWQuLE1ldGFkYXRhU2V0FAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEQbmFtZRgBHFZlYzx1OD4AARhzeW1ib2wYARxWZWM8dTg+AAEgZGVjaW1hbHMMAQh1OAABJGlzX2Zyb3plbpkBARBib29sAA8EnE5ldyBtZXRhZGF0YSBoYXMgYmVlbiBzZXQgZm9yIGFuIGFzc2V0LjxNZXRhZGF0YUNsZWFyZWQEASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAEAScTWV0YWRhdGEgaGFzIGJlZW4gY2xlYXJlZCBmb3IgYW4gYXNzZXQuQEFwcHJvdmVkVHJhbnNmZXIQASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAARhzb3VyY2UEATBUOjpBY2NvdW50SWQAASBkZWxlZ2F0ZQQBMFQ6OkFjY291bnRJZAABGGFtb3VudJUBAShUOjpCYWxhbmNlABEEMQEoQWRkaXRpb25hbCkgZnVuZHMgaGF2ZSBiZWVuIGFwcHJvdmVkIGZvciB0cmFuc2ZlciB0byBhIGRlc3RpbmF0aW9uIGFjY291bnQuREFwcHJvdmFsQ2FuY2VsbGVkDAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEUb3duZXIEATBUOjpBY2NvdW50SWQAASBkZWxlZ2F0ZQQBMFQ6OkFjY291bnRJZAASBPBBbiBhcHByb3ZhbCBmb3IgYWNjb3VudCBgZGVsZWdhdGVgIHdhcyBjYW5jZWxsZWQgYnkgYG93bmVyYC5MVHJhbnNmZXJyZWRBcHByb3ZlZBQBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABFG93bmVyBAEwVDo6QWNjb3VudElkAAEgZGVsZWdhdGUEATBUOjpBY2NvdW50SWQAASxkZXN0aW5hdGlvbgQBMFQ6OkFjY291bnRJZAABGGFtb3VudJUBAShUOjpCYWxhbmNlABMIMQFBbiBgYW1vdW50YCB3YXMgdHJhbnNmZXJyZWQgaW4gaXRzIGVudGlyZXR5IGZyb20gYG93bmVyYCB0byBgZGVzdGluYXRpb25gIGJ5YHRoZSBhcHByb3ZlZCBgZGVsZWdhdGVgLkhBc3NldFN0YXR1c0NoYW5nZWQEASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAFAT4QW4gYXNzZXQgaGFzIGhhZCBpdHMgYXR0cmlidXRlcyBjaGFuZ2VkIGJ5IHRoZSBgRm9yY2VgIG9yaWdpbi5YQXNzZXRNaW5CYWxhbmNlQ2hhbmdlZAgBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABPG5ld19taW5fYmFsYW5jZZUBAShUOjpCYWxhbmNlABUEAQFUaGUgbWluX2JhbGFuY2Ugb2YgYW4gYXNzZXQgaGFzIGJlZW4gdXBkYXRlZCBieSB0aGUgYXNzZXQgb3duZXIuHFRvdWNoZWQMASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAAQx3aG8EATBUOjpBY2NvdW50SWQAASRkZXBvc2l0b3IEATBUOjpBY2NvdW50SWQAFgT8U29tZSBhY2NvdW50IGB3aG9gIHdhcyBjcmVhdGVkIHdpdGggYSBkZXBvc2l0IGZyb20gYGRlcG9zaXRvcmAuHEJsb2NrZWQIASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAAQx3aG8EATBUOjpBY2NvdW50SWQAFwR8U29tZSBhY2NvdW50IGB3aG9gIHdhcyBibG9ja2VkLiREZXBvc2l0ZWQMASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnSVAQEoVDo6QmFsYW5jZQAYBNxTb21lIGFzc2V0cyB3ZXJlIGRlcG9zaXRlZCAoZS5nLiBmb3IgdHJhbnNhY3Rpb24gZmVlcykuJFdpdGhkcmF3bgwBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABDHdobwQBMFQ6OkFjY291bnRJZAABGGFtb3VudJUBAShUOjpCYWxhbmNlABkEIQFTb21lIGFzc2V0cyB3ZXJlIHdpdGhkcmF3biBmcm9tIHRoZSBhY2NvdW50IChlLmcuIGZvciB0cmFuc2FjdGlvbiBmZWVzKS48UmVzZXJ2ZXNVcGRhdGVkCAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEgcmVzZXJ2ZXNFBAFMVmVjPFQ6OlJlc2VydmVEYXRhPgAaBNhSZXNlcnZlIGluZm9ybWF0aW9uIHdhcyBzZXQgb3IgdXBkYXRlZCBmb3IgYGFzc2V0X2lkYC48UmVzZXJ2ZXNSZW1vdmVkBAEgYXNzZXRfaWQ4AShUOjpBc3NldElkABsEvFJlc2VydmUgaW5mb3JtYXRpb24gd2FzIHJlbW92ZWQgZm9yIGBhc3NldF9pZGAuMElzc3VlZENyZWRpdAgBIGFzc2V0X2lkOAEoVDo6QXNzZXRJZAABGGFtb3VudJUBAShUOjpCYWxhbmNlABwExFNvbWUgYXNzZXRzIHdlcmUgaXNzdWVkIGFzIENyZWRpdCAobm8gb3duZXIgeWV0KS4wQnVybmVkQ3JlZGl0CAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEYYW1vdW50lQEBKFQ6OkJhbGFuY2UAHQSEU29tZSBhc3NldHMgQ3JlZGl0IHdhcyBkZXN0cm95ZWQuKElzc3VlZERlYnQIASBhc3NldF9pZDgBKFQ6OkFzc2V0SWQAARhhbW91bnSVAQEoVDo6QmFsYW5jZQAeBLxTb21lIGFzc2V0cyB3ZXJlIGJ1cm5lZCBhbmQgYSBEZWJ0IHdhcyBjcmVhdGVkLihCdXJuZWREZWJ0CAEgYXNzZXRfaWQ4AShUOjpBc3NldElkAAEYYW1vdW50lQEBKFQ6OkJhbGFuY2UAHwTMU29tZSBhc3NldHMgRGVidCB3YXMgZGVzdHJveWVkIChhbmQgYXNzZXRzIGlzc3VlZCkuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0EQkMXHBhbGxldF9hc3NldF9jb252ZXJzaW9uGHBhbGxldBRFdmVudAQEVAABGCxQb29sQ3JlYXRlZBABHGNyZWF0b3IEATBUOjpBY2NvdW50SWQEiFRoZSBhY2NvdW50IHRoYXQgY3JlYXRlZCB0aGUgcG9vbC4BHHBvb2xfaWQVCQEkVDo6UG9vbElkCEkBVGhlIHBvb2wgaWQgYXNzb2NpYXRlZCB3aXRoIHRoZSBwb29sLiBOb3RlIHRoYXQgdGhlIG9yZGVyIG9mIHRoZSBhc3NldHMgbWF5IG5vdCBiZfR0aGUgc2FtZSBhcyB0aGUgb3JkZXIgc3BlY2lmaWVkIGluIHRoZSBjcmVhdGUgcG9vbCBleHRyaW5zaWMuATBwb29sX2FjY291bnQEATBUOjpBY2NvdW50SWQEbFRoZSBhY2NvdW50IElEIG9mIHRoZSBwb29sLgEgbHBfdG9rZW44AThUOjpQb29sQXNzZXRJZAhBAVRoZSBpZCBvZiB0aGUgbGlxdWlkaXR5IHRva2VucyB0aGF0IHdpbGwgYmUgbWludGVkIHdoZW4gYXNzZXRzIGFyZSBhZGRlZCB0byB0aGlzFHBvb2wuAAQdAUEgc3VjY2Vzc2Z1bCBjYWxsIG9mIHRoZSBgQ3JlYXRlUG9vbGAgZXh0cmluc2ljIHdpbGwgY3JlYXRlIHRoaXMgZXZlbnQuOExpcXVpZGl0eUFkZGVkHAEMd2hvBAEwVDo6QWNjb3VudElkBLhUaGUgYWNjb3VudCB0aGF0IHRoZSBsaXF1aWRpdHkgd2FzIHRha2VuIGZyb20uARxtaW50X3RvBAEwVDo6QWNjb3VudElkBNRUaGUgYWNjb3VudCB0aGF0IHRoZSBsaXF1aWRpdHkgdG9rZW5zIHdlcmUgbWludGVkIHRvLgEccG9vbF9pZBUJASRUOjpQb29sSWQE4FRoZSBwb29sIGlkIG9mIHRoZSBwb29sIHRoYXQgdGhlIGxpcXVpZGl0eSB3YXMgYWRkZWQgdG8uAUBhbW91bnQxX3Byb3ZpZGVklQEBKFQ6OkJhbGFuY2UE5FRoZSBhbW91bnQgb2YgdGhlIGZpcnN0IGFzc2V0IHRoYXQgd2FzIGFkZGVkIHRvIHRoZSBwb29sLgFAYW1vdW50Ml9wcm92aWRlZJUBAShUOjpCYWxhbmNlBOhUaGUgYW1vdW50IG9mIHRoZSBzZWNvbmQgYXNzZXQgdGhhdCB3YXMgYWRkZWQgdG8gdGhlIHBvb2wuASBscF90b2tlbjgBOFQ6OlBvb2xBc3NldElkBJxUaGUgaWQgb2YgdGhlIGxwIHRva2VuIHRoYXQgd2FzIG1pbnRlZC4BPGxwX3Rva2VuX21pbnRlZJUBAShUOjpCYWxhbmNlBNBUaGUgYW1vdW50IG9mIGxwIHRva2VucyB0aGF0IHdlcmUgbWludGVkIG9mIHRoYXQgaWQuAQQlAUEgc3VjY2Vzc2Z1bCBjYWxsIG9mIHRoZSBgQWRkTGlxdWlkaXR5YCBleHRyaW5zaWMgd2lsbCBjcmVhdGUgdGhpcyBldmVudC5ATGlxdWlkaXR5UmVtb3ZlZCABDHdobwQBMFQ6OkFjY291bnRJZATcVGhlIGFjY291bnQgdGhhdCB0aGUgbGlxdWlkaXR5IHRva2VucyB3ZXJlIGJ1cm5lZCBmcm9tLgEsd2l0aGRyYXdfdG8EATBUOjpBY2NvdW50SWQEwFRoZSBhY2NvdW50IHRoYXQgdGhlIGFzc2V0cyB3ZXJlIHRyYW5zZmVycmVkIHRvLgEccG9vbF9pZBUJASRUOjpQb29sSWQEwFRoZSBwb29sIGlkIHRoYXQgdGhlIGxpcXVpZGl0eSB3YXMgcmVtb3ZlZCBmcm9tLgEcYW1vdW50MZUBAShUOjpCYWxhbmNlBPRUaGUgYW1vdW50IG9mIHRoZSBmaXJzdCBhc3NldCB0aGF0IHdhcyByZW1vdmVkIGZyb20gdGhlIHBvb2wuARxhbW91bnQylQEBKFQ6OkJhbGFuY2UE+FRoZSBhbW91bnQgb2YgdGhlIHNlY29uZCBhc3NldCB0aGF0IHdhcyByZW1vdmVkIGZyb20gdGhlIHBvb2wuASBscF90b2tlbjgBOFQ6OlBvb2xBc3NldElkBJxUaGUgaWQgb2YgdGhlIGxwIHRva2VuIHRoYXQgd2FzIGJ1cm5lZC4BPGxwX3Rva2VuX2J1cm5lZJUBAShUOjpCYWxhbmNlBNBUaGUgYW1vdW50IG9mIGxwIHRva2VucyB0aGF0IHdlcmUgYnVybmVkIG9mIHRoYXQgaWQuATh3aXRoZHJhd2FsX2ZlZTEBARxQZXJtaWxsBHRMaXF1aWRpdHkgd2l0aGRyYXdhbCBmZWUgKCUpLgIEMQFBIHN1Y2Nlc3NmdWwgY2FsbCBvZiB0aGUgYFJlbW92ZUxpcXVpZGl0eWAgZXh0cmluc2ljIHdpbGwgY3JlYXRlIHRoaXMgZXZlbnQuMFN3YXBFeGVjdXRlZBQBDHdobwQBMFQ6OkFjY291bnRJZAS0V2hpY2ggYWNjb3VudCB3YXMgdGhlIGluc3RpZ2F0b3Igb2YgdGhlIHN3YXAuARxzZW5kX3RvBAEwVDo6QWNjb3VudElkBMBUaGUgYWNjb3VudCB0aGF0IHRoZSBhc3NldHMgd2VyZSB0cmFuc2ZlcnJlZCB0by4BJGFtb3VudF9pbpUBAShUOjpCYWxhbmNlBLxUaGUgYW1vdW50IG9mIHRoZSBmaXJzdCBhc3NldCB0aGF0IHdhcyBzd2FwcGVkLgEoYW1vdW50X291dJUBAShUOjpCYWxhbmNlBMRUaGUgYW1vdW50IG9mIHRoZSBzZWNvbmQgYXNzZXQgdGhhdCB3YXMgcmVjZWl2ZWQuARBwYXRoGQkBOEJhbGFuY2VQYXRoPFQ+CPxUaGUgcm91dGUgb2YgYXNzZXQgSURzIHdpdGggYW1vdW50cyB0aGF0IHRoZSBzd2FwIHdlbnQgdGhyb3VnaC7sRS5nLiAoQSwgYW1vdW50X2luKSAtPiAoRG90LCBhbW91bnRfb3V0KSAtPiAoQiwgYW1vdW50X291dCkDCDUBQXNzZXRzIGhhdmUgYmVlbiBjb252ZXJ0ZWQgZnJvbSBvbmUgdG8gYW5vdGhlci4gQm90aCBgU3dhcEV4YWN0VG9rZW5Gb3JUb2tlbmDYYW5kIGBTd2FwVG9rZW5Gb3JFeGFjdFRva2VuYCB3aWxsIGdlbmVyYXRlIHRoaXMgZXZlbnQuSFN3YXBDcmVkaXRFeGVjdXRlZAwBJGFtb3VudF9pbpUBAShUOjpCYWxhbmNlBLxUaGUgYW1vdW50IG9mIHRoZSBmaXJzdCBhc3NldCB0aGF0IHdhcyBzd2FwcGVkLgEoYW1vdW50X291dJUBAShUOjpCYWxhbmNlBMRUaGUgYW1vdW50IG9mIHRoZSBzZWNvbmQgYXNzZXQgdGhhdCB3YXMgcmVjZWl2ZWQuARBwYXRoGQkBOEJhbGFuY2VQYXRoPFQ+CPxUaGUgcm91dGUgb2YgYXNzZXQgSURzIHdpdGggYW1vdW50cyB0aGF0IHRoZSBzd2FwIHdlbnQgdGhyb3VnaC7sRS5nLiAoQSwgYW1vdW50X2luKSAtPiAoRG90LCBhbW91bnRfb3V0KSAtPiAoQiwgYW1vdW50X291dCkEBLxBc3NldHMgaGF2ZSBiZWVuIGNvbnZlcnRlZCBmcm9tIG9uZSB0byBhbm90aGVyLhxUb3VjaGVkCAEccG9vbF9pZBUJASRUOjpQb29sSWQETFRoZSBJRCBvZiB0aGUgcG9vbC4BDHdobwQBMFQ6OkFjY291bnRJZASEVGhlIGFjY291bnQgaW5pdGlhdGluZyB0aGUgdG91Y2guBQQNAVBvb2wgaGFzIGJlZW4gdG91Y2hlZCBpbiBvcmRlciB0byBmdWxmaWxsIG9wZXJhdGlvbmFsIHJlcXVpcmVtZW50cy4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXQVCQAABAg5AjkCABkJAAACHQkAHQkAAAQIOQKVAQAhCQw8cGFsbGV0X3JlY292ZXJ5GHBhbGxldBRFdmVudAQEVAABJDxBdHRlbXB0QXBwcm92ZWQMARBsb3N0BAEwVDo6QWNjb3VudElkAAFIZnJpZW5kX2dyb3VwX2luZGV4OAFARnJpZW5kR3JvdXBJbmRleAABGGZyaWVuZAQBMFQ6OkFjY291bnRJZAAABLBBIHJlY292ZXJ5IGF0dGVtcHQgd2FzIGFwcHJvdmVkIGJ5IGEgZnJpZW5kLjxBdHRlbXB0Q2FuY2VsZWQMARBsb3N0BAEwVDo6QWNjb3VudElkAAFIZnJpZW5kX2dyb3VwX2luZGV4OAFARnJpZW5kR3JvdXBJbmRleAABIGNhbmNlbGVyBAEwVDo6QWNjb3VudElkAAEEMQFBIHJlY292ZXJ5IGF0dGVtcHQgd2FzIGNhbmNlbGVkIGJ5IGVpdGhlciB0aGUgbG9zdCBhY2NvdW50IG9yIHRoZSBpbml0aWF0b3IuQEF0dGVtcHRJbml0aWF0ZWQMARBsb3N0BAEwVDo6QWNjb3VudElkAAFIZnJpZW5kX2dyb3VwX2luZGV4OAFARnJpZW5kR3JvdXBJbmRleAABJGluaXRpYXRvcgQBMFQ6OkFjY291bnRJZAACBLRBIHJlY292ZXJ5IGF0dGVtcHQgd2FzIGluaXRpYXRlZCBieSBhIGZyaWVuZC48QXR0ZW1wdEZpbmlzaGVkEAEQbG9zdAQBMFQ6OkFjY291bnRJZAABSGZyaWVuZF9ncm91cF9pbmRleDgBQEZyaWVuZEdyb3VwSW5kZXgAASRpbmhlcml0b3IEATBUOjpBY2NvdW50SWQAAUhwcmV2aW91c19pbmhlcml0b3JBAQFQT3B0aW9uPFQ6OkFjY291bnRJZD4AAwSAQSByZWNvdmVyeSBhdHRlbXB0IHdhcyBmaW5pc2hlZC5AQXR0ZW1wdERpc2NhcmRlZAwBEGxvc3QEATBUOjpBY2NvdW50SWQAAUhmcmllbmRfZ3JvdXBfaW5kZXg4AUBGcmllbmRHcm91cEluZGV4AAFIZXhpc3RpbmdfaW5oZXJpdG9yBAEwVDo6QWNjb3VudElkAAQUPQFBIHJlY292ZXJ5IGF0dGVtcHQgd2FzIGRpc2NhcmRlZCBiZWNhdXNlIHRoZSBhY2NvdW50IHdhcyBhbHJlYWR5IHJlY292ZXJlZCBieSBhpGZyaWVuZCBncm91cCBvZiBlcXVhbCBvciBoaWdoZXIgcHJpb3JpdHkuAEUBVGhlIGF0dGVtcHQgaXMgY29uc3VtZWQgKHJlbW92ZWQgZnJvbSBzdG9yYWdlKSBhbmQgaXRzIGRlcG9zaXRzIGFyZSByZWxlYXNlZCwgYnV0pHRoZSBleGlzdGluZyBpbmhlcml0b3IgcmVtYWlucyB1bmNoYW5nZWQuOEF0dGVtcHRTbGFzaGVkCAEQbG9zdAQBMFQ6OkFjY291bnRJZAABSGZyaWVuZF9ncm91cF9pbmRleDgBQEZyaWVuZEdyb3VwSW5kZXgABQzMQSByZWNvdmVyeSBhdHRlbXB0IHdhcyBzbGFzaGVkIGJ5IHRoZSBsb3N0IGFjY291bnQuALxUaGUgaW5pdGlhdG9yIHdpbGwgbG9zZSB0aGVpciBzZWN1cml0eSBkZXBvc2l0LkxGcmllbmRHcm91cHNDaGFuZ2VkBAEQbG9zdAQBMFQ6OkFjY291bnRJZAAGBMhUaGUgZnJpZW5kIGdyb3VwcyBvZiBhbiBhY2NvdW50IGhhdmUgYmVlbiBjaGFuZ2VkLkBJbmhlcml0b3JSZXZva2VkBAEQbG9zdAQBMFQ6OkFjY291bnRJZAAHBAEBVGhlIGluaGVyaXRvciBvZiBhIGxvc3QgYWNjb3VudCB3YXMgcmV2b2tlZCBieSB0aGUgbG9zdCBhY2NvdW50LmhSZWNvdmVyZWRBY2NvdW50Q29udHJvbGxlZBABJHJlY292ZXJlZAQBMFQ6OkFjY291bnRJZAABJGluaGVyaXRvcgQBMFQ6OkFjY291bnRJZAABJGNhbGxfaGFzaEABJEhhc2hPZjxUPgABLGNhbGxfcmVzdWx0KQgBOERpc3BhdGNoUmVzdWx0AAgM0EEgcmVjb3ZlcmVkIGFjY291bnQgd2FzIGNvbnRyb2xsZWQgYnkgaXRzIGluaGVyaXRvci4A0ENoZWNrIHRoZSBgY2FsbF9yZXN1bHRgIHRvIHNlZSBpZiBpdCB3YXMgc3VjY2Vzc2Z1bC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXQlCQw4cGFsbGV0X3NvY2lldHkYcGFsbGV0FEV2ZW50CARUAARJAAFMHEZvdW5kZWQEARxmb3VuZGVyBAEwVDo6QWNjb3VudElkAAAEtFRoZSBzb2NpZXR5IGlzIGZvdW5kZWQgYnkgdGhlIGdpdmVuIGlkZW50aXR5LgxCaWQIATBjYW5kaWRhdGVfaWQEATBUOjpBY2NvdW50SWQAARRvZmZlcpUBATxCYWxhbmNlT2Y8VCwgST4AAQhdAUEgbWVtYmVyc2hpcCBiaWQganVzdCBoYXBwZW5lZC4gVGhlIGdpdmVuIGFjY291bnQgaXMgdGhlIGNhbmRpZGF0ZSdzIElEIGFuZCB0aGVpciBvZmZlcjhpcyB0aGUgc2Vjb25kLhRWb3VjaAwBMGNhbmRpZGF0ZV9pZAQBMFQ6OkFjY291bnRJZAABFG9mZmVylQEBPEJhbGFuY2VPZjxULCBJPgABIHZvdWNoaW5nBAEwVDo6QWNjb3VudElkAAIIXQFBIG1lbWJlcnNoaXAgYmlkIGp1c3QgaGFwcGVuZWQgYnkgdm91Y2hpbmcuIFRoZSBnaXZlbiBhY2NvdW50IGlzIHRoZSBjYW5kaWRhdGUncyBJRCBhbmTsdGhlaXIgb2ZmZXIgaXMgdGhlIHNlY29uZC4gVGhlIHZvdWNoaW5nIHBhcnR5IGlzIHRoZSB0aGlyZC4kQXV0b1VuYmlkBAEkY2FuZGlkYXRlBAEwVDo6QWNjb3VudElkAAMEBQFBIGNhbmRpZGF0ZSB3YXMgZHJvcHBlZCAoZHVlIHRvIGFuIGV4Y2VzcyBvZiBiaWRzIGluIHRoZSBzeXN0ZW0pLhRVbmJpZAQBJGNhbmRpZGF0ZQQBMFQ6OkFjY291bnRJZAAEBKxBIGNhbmRpZGF0ZSB3YXMgZHJvcHBlZCAoYnkgdGhlaXIgcmVxdWVzdCkuHFVudm91Y2gEASRjYW5kaWRhdGUEATBUOjpBY2NvdW50SWQABQT0QSBjYW5kaWRhdGUgd2FzIGRyb3BwZWQgKGJ5IHJlcXVlc3Qgb2Ygd2hvIHZvdWNoZWQgZm9yIHRoZW0pLiBJbmR1Y3RlZAgBHHByaW1hcnkEATBUOjpBY2NvdW50SWQAAShjYW5kaWRhdGVznQEBRFZlYzxUOjpBY2NvdW50SWQ+AAYIVQFBIGdyb3VwIG9mIGNhbmRpZGF0ZXMgaGF2ZSBiZWVuIGluZHVjdGVkLiBUaGUgYmF0Y2gncyBwcmltYXJ5IGlzIHRoZSBmaXJzdCB2YWx1ZSwgdGhlcGJhdGNoIGluIGZ1bGwgaXMgdGhlIHNlY29uZC5gU3VzcGVuZGVkTWVtYmVySnVkZ2VtZW50CAEMd2hvBAEwVDo6QWNjb3VudElkAAEYanVkZ2VkmQEBEGJvb2wABwSMQSBzdXNwZW5kZWQgbWVtYmVyIGhhcyBiZWVuIGp1ZGdlZC5IQ2FuZGlkYXRlU3VzcGVuZGVkBAEkY2FuZGlkYXRlBAEwVDo6QWNjb3VudElkAAgEeEEgY2FuZGlkYXRlIGhhcyBiZWVuIHN1c3BlbmRlZDxNZW1iZXJTdXNwZW5kZWQEARhtZW1iZXIEATBUOjpBY2NvdW50SWQACQRsQSBtZW1iZXIgaGFzIGJlZW4gc3VzcGVuZGVkKENoYWxsZW5nZWQEARhtZW1iZXIEATBUOjpBY2NvdW50SWQACgRwQSBtZW1iZXIgaGFzIGJlZW4gY2hhbGxlbmdlZBBWb3RlDAEkY2FuZGlkYXRlBAEwVDo6QWNjb3VudElkAAEUdm90ZXIEATBUOjpBY2NvdW50SWQAARB2b3RlmQEBEGJvb2wACwRYQSB2b3RlIGhhcyBiZWVuIHBsYWNlZDBEZWZlbmRlclZvdGUIARR2b3RlcgQBMFQ6OkFjY291bnRJZAABEHZvdGWZAQEQYm9vbAAMBLRBIHZvdGUgaGFzIGJlZW4gcGxhY2VkIGZvciBhIGRlZmVuZGluZyBtZW1iZXIkTmV3UGFyYW1zBAEYcGFyYW1zKQkBUEdyb3VwUGFyYW1zRm9yPFQsIEk+AA0EzEEgbmV3IHNldCBvZiBcW3BhcmFtc1xdIGhhcyBiZWVuIHNldCBmb3IgdGhlIGdyb3VwLiRVbmZvdW5kZWQEARxmb3VuZGVyBAEwVDo6QWNjb3VudElkAA4EVFNvY2lldHkgaXMgdW5mb3VuZGVkLhxEZXBvc2l0BAEUdmFsdWWVAQE8QmFsYW5jZU9mPFQsIEk+AA8EzFNvbWUgZnVuZHMgd2VyZSBkZXBvc2l0ZWQgaW50byB0aGUgc29jaWV0eSBhY2NvdW50LiBFbGV2YXRlZAgBGG1lbWJlcgQBMFQ6OkFjY291bnRJZAABEHJhbms4ARBSYW5rABAEmEEgXFttZW1iZXJcXSBnb3QgZWxldmF0ZWQgdG8gXFtyYW5rXF0uMERlcG9zaXRQb2tlZAwBDHdobwQBMFQ6OkFjY291bnRJZAABLG9sZF9kZXBvc2l0lQEBPEJhbGFuY2VPZjxULCBJPgABLG5ld19kZXBvc2l0lQEBPEJhbGFuY2VPZjxULCBJPgARBHxBIGRlcG9zaXQgd2FzIHBva2VkIC8gYWRqdXN0ZWQuME1lbWJlcktpY2tlZAQBGG1lbWJlcgQBMFQ6OkFjY291bnRJZAASBIxBIG1lbWJlciB3YXMga2lja2VkIGJ5IHRoZSBmb3VuZGVyLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldCkJCDhwYWxsZXRfc29jaWV0eSxHcm91cFBhcmFtcwQcQmFsYW5jZQGVAQAQASxtYXhfbWVtYmVyczgBDHUzMgABKG1heF9pbnRha2U4AQx1MzIAASxtYXhfc3RyaWtlczgBDHUzMgABRGNhbmRpZGF0ZV9kZXBvc2l0lQEBHEJhbGFuY2UAAC0JDDRwYWxsZXRfcmV2aXZlGHBhbGxldBRFdmVudAQEVAABDDxDb250cmFjdEVtaXR0ZWQMASBjb250cmFjdP0EARBIMTYwBJBUaGUgY29udHJhY3QgdGhhdCBlbWl0dGVkIHRoZSBldmVudC4BEGRhdGEYARxWZWM8dTg+CDUBRGF0YSBzdXBwbGllZCBieSB0aGUgY29udHJhY3QuIE1ldGFkYXRhIGdlbmVyYXRlZCBkdXJpbmcgY29udHJhY3QgY29tcGlsYXRpb25caXMgbmVlZGVkIHRvIGRlY29kZSBpdC4BGHRvcGljc/ABJFZlYzxIMjU2PgikQSBsaXN0IG9mIHRvcGljcyB1c2VkIHRvIGluZGV4IHRoZSBldmVudC7sTnVtYmVyIG9mIHRvcGljcyBpcyBjYXBwZWQgYnkgW2BsaW1pdHM6Ok5VTV9FVkVOVF9UT1BJQ1NgXS4ABJxBIGN1c3RvbSBldmVudCBlbWl0dGVkIGJ5IHRoZSBjb250cmFjdC4wSW5zdGFudGlhdGVkCAEgZGVwbG95ZXL9BAEQSDE2MAABIGNvbnRyYWN0/QQBEEgxNjAAAQTcQ29udHJhY3QgZGVwbG95ZWQgYnkgZGVwbG95ZXIgYXQgdGhlIHNwZWNpZmllZCBhZGRyZXNzLkhFdGhFeHRyaW5zaWNSZXZlcnQEAThkaXNwYXRjaF9lcnJvcgEIATREaXNwYXRjaEVycm9yAAIYtEVtaXR0ZWQgd2hlbiBhbiBFdGhlcmV1bSB0cmFuc2FjdGlvbiByZXZlcnRzLgApAUV0aGVyZXVtIHRyYW5zYWN0aW9ucyBhbHdheXMgY29tcGxldGUgc3VjY2Vzc2Z1bGx5IGF0IHRoZSBleHRyaW5zaWMgbGV2ZWws2GFzIGV2ZW4gcmV2ZXJ0ZWQgY2FsbHMgbXVzdCBzdG9yZSB0aGVpciBgUmVjZWlwdEluZm9gLiUBVG8gZGlzdGluZ3Vpc2ggcmV2ZXJ0ZWQgY2FsbHMgZnJvbSBzdWNjZXNzZnVsIG9uZXMsIHRoaXMgZXZlbnQgaXMgZW1pdHRlZIRmb3IgZmFpbGVkIEV0aGVyZXVtIHRyYW5zYWN0aW9ucy4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXQxCQxscGFsbGV0X3N0YXRlX3RyaWVfbWlncmF0aW9uGHBhbGxldBRFdmVudAQEVAABECBNaWdyYXRlZAwBDHRvcDgBDHUzMgABFGNoaWxkOAEMdTMyAAEcY29tcHV0ZTUJAUBNaWdyYXRpb25Db21wdXRlAAAIOQFHaXZlbiBudW1iZXIgb2YgYCh0b3AsIGNoaWxkKWAga2V5cyB3ZXJlIG1pZ3JhdGVkIHJlc3BlY3RpdmVseSwgd2l0aCB0aGUgZ2l2ZW4oYGNvbXB1dGVgLhxTbGFzaGVkCAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50lQEBMEJhbGFuY2VPZjxUPgABBLRTb21lIGFjY291bnQgZ290IHNsYXNoZWQgYnkgdGhlIGdpdmVuIGFtb3VudC5UQXV0b01pZ3JhdGlvbkZpbmlzaGVkAAIEhFRoZSBhdXRvIG1pZ3JhdGlvbiB0YXNrIGZpbmlzaGVkLhhIYWx0ZWQEARRlcnJvcjkJASBFcnJvcjxUPgADBOxNaWdyYXRpb24gZ290IGhhbHRlZCBkdWUgdG8gYW4gZXJyb3Igb3IgbWlzcy1jb25maWd1cmF0aW9uLgRwSW5uZXIgZXZlbnRzIG9mIHRoaXMgcGFsbGV0LjUJDGxwYWxsZXRfc3RhdGVfdHJpZV9taWdyYXRpb24YcGFsbGV0QE1pZ3JhdGlvbkNvbXB1dGUAAQgYU2lnbmVkAAAAEEF1dG8AAQAAOQkMbHBhbGxldF9zdGF0ZV90cmllX21pZ3JhdGlvbhhwYWxsZXQURXJyb3IEBFQAARg8TWF4U2lnbmVkTGltaXRzAAAEgE1heCBzaWduZWQgbGltaXRzIG5vdCByZXNwZWN0ZWQuKEtleVRvb0xvbmcAARy0QSBrZXkgd2FzIGxvbmdlciB0aGFuIHRoZSBjb25maWd1cmVkIG1heGltdW0uABEBVGhpcyBtZWFucyB0aGF0IHRoZSBtaWdyYXRpb24gaGFsdGVkIGF0IHRoZSBjdXJyZW50IFtgUHJvZ3Jlc3NgXSBhbmQBAWNhbiBiZSByZXN1bWVkIHdpdGggYSBsYXJnZXIgW2BjcmF0ZTo6Q29uZmlnOjpNYXhLZXlMZW5gXSB2YWx1ZS4hAVJldHJ5aW5nIHdpdGggdGhlIHNhbWUgW2BjcmF0ZTo6Q29uZmlnOjpNYXhLZXlMZW5gXSB2YWx1ZSB3aWxsIG5vdCB3b3JrLkUBVGhlIHZhbHVlIHNob3VsZCBvbmx5IGJlIGluY3JlYXNlZCB0byBhdm9pZCBhIHN0b3JhZ2UgbWlncmF0aW9uIGZvciB0aGUgY3VycmVudGx5kHN0b3JlZCBbYGNyYXRlOjpQcm9ncmVzczo6TGFzdEtleWBdLjhOb3RFbm91Z2hGdW5kcwACBJRzdWJtaXR0ZXIgZG9lcyBub3QgaGF2ZSBlbm91Z2ggZnVuZHMuKEJhZFdpdG5lc3MAAwRoQmFkIHdpdG5lc3MgZGF0YSBwcm92aWRlZC5kU2lnbmVkTWlncmF0aW9uTm90QWxsb3dlZAAEBCUBU2lnbmVkIG1pZ3JhdGlvbiBpcyBub3QgYWxsb3dlZCBiZWNhdXNlIHRoZSBtYXhpbXVtIGxpbWl0IGlzIG5vdCBzZXQgeWV0LjBCYWRDaGlsZFJvb3QABQRgQmFkIGNoaWxkIHJvb3QgcHJvdmlkZWQuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0Lj0JDFxwYWxsZXRfbm9taW5hdGlvbl9wb29scxhwYWxsZXQURXZlbnQEBFQAAVwcQ3JlYXRlZAgBJGRlcG9zaXRvcgQBMFQ6OkFjY291bnRJZAABHHBvb2xfaWQ4ARhQb29sSWQAAARgQSBwb29sIGhhcyBiZWVuIGNyZWF0ZWQuGEJvbmRlZBABGG1lbWJlcgQBMFQ6OkFjY291bnRJZAABHHBvb2xfaWQ4ARhQb29sSWQAARhib25kZWSVAQEwQmFsYW5jZU9mPFQ+AAEYam9pbmVkmQEBEGJvb2wAAQSUQSBtZW1iZXIgaGFzIGJlY2FtZSBib25kZWQgaW4gYSBwb29sLhxQYWlkT3V0DAEYbWVtYmVyBAEwVDo6QWNjb3VudElkAAEccG9vbF9pZDgBGFBvb2xJZAABGHBheW91dJUBATBCYWxhbmNlT2Y8VD4AAgSMQSBwYXlvdXQgaGFzIGJlZW4gbWFkZSB0byBhIG1lbWJlci4gVW5ib25kZWQUARhtZW1iZXIEATBUOjpBY2NvdW50SWQAARxwb29sX2lkOAEYUG9vbElkAAEcYmFsYW5jZZUBATBCYWxhbmNlT2Y8VD4AARhwb2ludHOVAQEwQmFsYW5jZU9mPFQ+AAEMZXJhOAEgRXJhSW5kZXgAAyyYQSBtZW1iZXIgaGFzIHVuYm9uZGVkIGZyb20gdGhlaXIgcG9vbC4AOQEtIGBiYWxhbmNlYCBpcyB0aGUgY29ycmVzcG9uZGluZyBiYWxhbmNlIG9mIHRoZSBudW1iZXIgb2YgcG9pbnRzIHRoYXQgaGFzIGJlZW5VASAgcmVxdWVzdGVkIHRvIGJlIHVuYm9uZGVkICh0aGUgYXJndW1lbnQgb2YgdGhlIGB1bmJvbmRgIHRyYW5zYWN0aW9uKSBmcm9tIHRoZSBib25kZWQcICBwb29sLkUBLSBgcG9pbnRzYCBpcyB0aGUgbnVtYmVyIG9mIHBvaW50cyB0aGF0IGFyZSBpc3N1ZWQgYXMgYSByZXN1bHQgb2YgYGJhbGFuY2VgIGJlaW5nwGRpc3NvbHZlZCBpbnRvIHRoZSBjb3JyZXNwb25kaW5nIHVuYm9uZGluZyBwb29sLuQtIGBlcmFgIGlzIHRoZSBlcmEgaW4gd2hpY2ggdGhlIGJhbGFuY2Ugd2lsbCBiZSB1bmJvbmRlZC5VAUluIHRoZSBhYnNlbmNlIG9mIHNsYXNoaW5nLCB0aGVzZSB2YWx1ZXMgd2lsbCBtYXRjaC4gSW4gdGhlIHByZXNlbmNlIG9mIHNsYXNoaW5nLCB0aGVNAW51bWJlciBvZiBwb2ludHMgdGhhdCBhcmUgaXNzdWVkIGluIHRoZSB1bmJvbmRpbmcgcG9vbCB3aWxsIGJlIGxlc3MgdGhhbiB0aGUgYW1vdW50ZHJlcXVlc3RlZCB0byBiZSB1bmJvbmRlZC4kV2l0aGRyYXduEAEYbWVtYmVyBAEwVDo6QWNjb3VudElkAAEccG9vbF9pZDgBGFBvb2xJZAABHGJhbGFuY2WVAQEwQmFsYW5jZU9mPFQ+AAEYcG9pbnRzlQEBMEJhbGFuY2VPZjxUPgAEGJxBIG1lbWJlciBoYXMgd2l0aGRyYXduIGZyb20gdGhlaXIgcG9vbC4AIQFUaGUgZ2l2ZW4gbnVtYmVyIG9mIGBwb2ludHNgIGhhdmUgYmVlbiBkaXNzb2x2ZWQgaW4gcmV0dXJuIG9mIGBiYWxhbmNlYC4AWQFTaW1pbGFyIHRvIGBVbmJvbmRlZGAgZXZlbnQsIGluIHRoZSBhYnNlbmNlIG9mIHNsYXNoaW5nLCB0aGUgcmF0aW8gb2YgcG9pbnQgdG8gYmFsYW5jZSh3aWxsIGJlIDEuJERlc3Ryb3llZAQBHHBvb2xfaWQ4ARhQb29sSWQABQRoQSBwb29sIGhhcyBiZWVuIGRlc3Ryb3llZC4wU3RhdGVDaGFuZ2VkCAEccG9vbF9pZDgBGFBvb2xJZAABJG5ld19zdGF0ZS0FASRQb29sU3RhdGUABgR8VGhlIHN0YXRlIG9mIGEgcG9vbCBoYXMgY2hhbmdlZDRNZW1iZXJSZW1vdmVkDAEccG9vbF9pZDgBGFBvb2xJZAABGG1lbWJlcgQBMFQ6OkFjY291bnRJZAABQHJlbGVhc2VkX2JhbGFuY2WVAQEwQmFsYW5jZU9mPFQ+AAcUmEEgbWVtYmVyIGhhcyBiZWVuIHJlbW92ZWQgZnJvbSBhIHBvb2wuAFEBVGhlIHJlbW92YWwgY2FuIGJlIHZvbHVudGFyeSAod2l0aGRyYXduIGFsbCB1bmJvbmRlZCBmdW5kcykgb3IgaW52b2x1bnRhcnkgKGtpY2tlZCkuSQFBbnkgZnVuZHMgdGhhdCBhcmUgc3RpbGwgZGVsZWdhdGVkIChpLmUuIGRhbmdsaW5nIGRlbGVnYXRpb24pIGFyZSByZWxlYXNlZCBhbmQgYXJliHJlcHJlc2VudGVkIGJ5IGByZWxlYXNlZF9iYWxhbmNlYC4wUm9sZXNVcGRhdGVkDAEQcm9vdEEBAVBPcHRpb248VDo6QWNjb3VudElkPgABHGJvdW5jZXJBAQFQT3B0aW9uPFQ6OkFjY291bnRJZD4AASRub21pbmF0b3JBAQFQT3B0aW9uPFQ6OkFjY291bnRJZD4ACAhVAVRoZSByb2xlcyBvZiBhIHBvb2wgaGF2ZSBiZWVuIHVwZGF0ZWQgdG8gdGhlIGdpdmVuIG5ldyByb2xlcy4gTm90ZSB0aGF0IHRoZSBkZXBvc2l0b3JEY2FuIG5ldmVyIGNoYW5nZS4sUG9vbFNsYXNoZWQIARxwb29sX2lkOAEYUG9vbElkAAEcYmFsYW5jZZUBATBCYWxhbmNlT2Y8VD4ACQQNAVRoZSBhY3RpdmUgYmFsYW5jZSBvZiBwb29sIGBwb29sX2lkYCBoYXMgYmVlbiBzbGFzaGVkIHRvIGBiYWxhbmNlYC5QVW5ib25kaW5nUG9vbFNsYXNoZWQMARxwb29sX2lkOAEYUG9vbElkAAEMZXJhOAEgRXJhSW5kZXgAARxiYWxhbmNllQEBMEJhbGFuY2VPZjxUPgAKBCUBVGhlIHVuYm9uZCBwb29sIGF0IGBlcmFgIG9mIHBvb2wgYHBvb2xfaWRgIGhhcyBiZWVuIHNsYXNoZWQgdG8gYGJhbGFuY2VgLlRQb29sQ29tbWlzc2lvblVwZGF0ZWQIARxwb29sX2lkOAEYUG9vbElkAAEcY3VycmVudEkFAXxPcHRpb248KFBlcmJpbGwsIFQ6OkFjY291bnRJZCk+AAsEtEEgcG9vbCdzIGNvbW1pc3Npb24gc2V0dGluZyBoYXMgYmVlbiBjaGFuZ2VkLmBQb29sTWF4Q29tbWlzc2lvblVwZGF0ZWQIARxwb29sX2lkOAEYUG9vbElkAAE4bWF4X2NvbW1pc3Npb249BQEcUGVyYmlsbAAMBNRBIHBvb2wncyBtYXhpbXVtIGNvbW1pc3Npb24gc2V0dGluZyBoYXMgYmVlbiBjaGFuZ2VkLnxQb29sQ29tbWlzc2lvbkNoYW5nZVJhdGVVcGRhdGVkCAEccG9vbF9pZDgBGFBvb2xJZAABLGNoYW5nZV9yYXRlUQUBnENvbW1pc3Npb25DaGFuZ2VSYXRlPEJsb2NrTnVtYmVyRm9yPFQ+PgANBMxBIHBvb2wncyBjb21taXNzaW9uIGBjaGFuZ2VfcmF0ZWAgaGFzIGJlZW4gY2hhbmdlZC6QUG9vbENvbW1pc3Npb25DbGFpbVBlcm1pc3Npb25VcGRhdGVkCAEccG9vbF9pZDgBGFBvb2xJZAABKHBlcm1pc3Npb25VBQG8T3B0aW9uPENvbW1pc3Npb25DbGFpbVBlcm1pc3Npb248VDo6QWNjb3VudElkPj4ADgTIUG9vbCBjb21taXNzaW9uIGNsYWltIHBlcm1pc3Npb24gaGFzIGJlZW4gdXBkYXRlZC5UUG9vbENvbW1pc3Npb25DbGFpbWVkCAEccG9vbF9pZDgBGFBvb2xJZAABKGNvbW1pc3Npb26VAQEwQmFsYW5jZU9mPFQ+AA8EhFBvb2wgY29tbWlzc2lvbiBoYXMgYmVlbiBjbGFpbWVkLmRNaW5CYWxhbmNlRGVmaWNpdEFkanVzdGVkCAEccG9vbF9pZDgBGFBvb2xJZAABGGFtb3VudJUBATBCYWxhbmNlT2Y8VD4AEATIVG9wcGVkIHVwIGRlZmljaXQgaW4gZnJvemVuIEVEIG9mIHRoZSByZXdhcmQgcG9vbC5gTWluQmFsYW5jZUV4Y2Vzc0FkanVzdGVkCAEccG9vbF9pZDgBGFBvb2xJZAABGGFtb3VudJUBATBCYWxhbmNlT2Y8VD4AEQS8Q2xhaW1lZCBleGNlc3MgZnJvemVuIEVEIG9mIGFmIHRoZSByZXdhcmQgcG9vbC5wTWVtYmVyQ2xhaW1QZXJtaXNzaW9uVXBkYXRlZAgBGG1lbWJlcgQBMFQ6OkFjY291bnRJZAABKHBlcm1pc3Npb25FBQE8Q2xhaW1QZXJtaXNzaW9uABIEyEEgcG9vbCBtZW1iZXIncyBjbGFpbSBwZXJtaXNzaW9uIGhhcyBiZWVuIHVwZGF0ZWQuPE1ldGFkYXRhVXBkYXRlZAgBHHBvb2xfaWQ4ARhQb29sSWQAARhjYWxsZXIEATBUOjpBY2NvdW50SWQAEwR4QSBwb29sJ3MgbWV0YWRhdGEgd2FzIHVwZGF0ZWQuSFBvb2xOb21pbmF0aW9uTWFkZQgBHHBvb2xfaWQ4ARhQb29sSWQAARhjYWxsZXIEATBUOjpBY2NvdW50SWQAFAhZAUEgcG9vbCdzIG5vbWluYXRpbmcgYWNjb3VudCAob3IgdGhlIHBvb2wncyByb290IGFjY291bnQpIGhhcyBub21pbmF0ZWQgYSB2YWxpZGF0b3Igc2V0WG9uIGJlaGFsZiBvZiB0aGUgcG9vbC5QUG9vbE5vbWluYXRvckNoaWxsZWQIARxwb29sX2lkOAEYUG9vbElkAAEYY2FsbGVyBAEwVDo6QWNjb3VudElkABUEuFRoZSBwb29sIGlzIGNoaWxsZWQgaS5lLiBubyBsb25nZXIgbm9taW5hdGluZy5MR2xvYmFsUGFyYW1zVXBkYXRlZBgBNG1pbl9qb2luX2JvbmSVAQEwQmFsYW5jZU9mPFQ+AAE8bWluX2NyZWF0ZV9ib25klQEBMEJhbGFuY2VPZjxUPgABJG1heF9wb29sc9gBLE9wdGlvbjx1MzI+AAEsbWF4X21lbWJlcnPYASxPcHRpb248dTMyPgABUG1heF9tZW1iZXJzX3Blcl9wb29s2AEsT3B0aW9uPHUzMj4AAVRnbG9iYWxfbWF4X2NvbW1pc3Npb25BCQE8T3B0aW9uPFBlcmJpbGw+ABYEAQFHbG9iYWwgcGFyYW1ldGVycyByZWd1bGF0aW5nIG5vbWluYXRpb24gcG9vbHMgaGF2ZSBiZWVuIHVwZGF0ZWQuBFhFdmVudHMgb2YgdGhpcyBwYWxsZXQuQQkEGE9wdGlvbgQEVAE9BQEIEE5vbmUAAAAQU29tZQQAPQUAAAEAAEUJDEBwYWxsZXRfYmFnc19saXN0GHBhbGxldBRFdmVudAgEVAAESQABCCBSZWJhZ2dlZAwBDHdobwQBMFQ6OkFjY291bnRJZAABEGZyb20oASBUOjpTY29yZQABCHRvKAEgVDo6U2NvcmUAAASkTW92ZWQgYW4gYWNjb3VudCBmcm9tIG9uZSBiYWcgdG8gYW5vdGhlci4wU2NvcmVVcGRhdGVkCAEMd2hvBAEwVDo6QWNjb3VudElkAAEkbmV3X3Njb3JlKAEgVDo6U2NvcmUAAQTYVXBkYXRlZCB0aGUgc2NvcmUgb2Ygc29tZSBhY2NvdW50IHRvIHRoZSBnaXZlbiBhbW91bnQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0SQkMYHBhbGxldF9kZWxlZ2F0ZWRfc3Rha2luZxhwYWxsZXQURXZlbnQEBFQAARAkRGVsZWdhdGVkDAEUYWdlbnQEATBUOjpBY2NvdW50SWQAASRkZWxlZ2F0b3IEATBUOjpBY2NvdW50SWQAARhhbW91bnSVAQEwQmFsYW5jZU9mPFQ+AAAEfEZ1bmRzIGRlbGVnYXRlZCBieSBhIGRlbGVnYXRvci4gUmVsZWFzZWQMARRhZ2VudAQBMFQ6OkFjY291bnRJZAABJGRlbGVnYXRvcgQBMFQ6OkFjY291bnRJZAABGGFtb3VudJUBATBCYWxhbmNlT2Y8VD4AAQR4RnVuZHMgcmVsZWFzZWQgdG8gYSBkZWxlZ2F0b3IuHFNsYXNoZWQMARRhZ2VudAQBMFQ6OkFjY291bnRJZAABJGRlbGVnYXRvcgQBMFQ6OkFjY291bnRJZAABGGFtb3VudJUBATBCYWxhbmNlT2Y8VD4AAgR8RnVuZHMgc2xhc2hlZCBmcm9tIGEgZGVsZWdhdG9yLkhNaWdyYXRlZERlbGVnYXRpb24MARRhZ2VudAQBMFQ6OkFjY291bnRJZAABJGRlbGVnYXRvcgQBMFQ6OkFjY291bnRJZAABGGFtb3VudJUBATBCYWxhbmNlT2Y8VD4AAwTEVW5jbGFpbWVkIGRlbGVnYXRpb24gZnVuZHMgbWlncmF0ZWQgdG8gZGVsZWdhdG9yLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldE0JDHhwYWxsZXRfc3Rha2luZ19hc3luY19yY19jbGllbnQYcGFsbGV0FEV2ZW50BARUAAEQVFNlc3Npb25SZXBvcnRSZWNlaXZlZBABJGVuZF9pbmRleDgBMFNlc3Npb25JbmRleAABUGFjdGl2YXRpb25fdGltZXN0YW1wcQUBSE9wdGlvbjwodTY0LCB1MzIpPgABXHZhbGlkYXRvcl9wb2ludHNfY291bnRzOAEMdTMyAAEgbGVmdG92ZXKZAQEQYm9vbAAABIxBIHNhaWQgc2Vzc2lvbiByZXBvcnQgd2FzIHJlY2VpdmVkLjxPZmZlbmNlUmVjZWl2ZWQIATRzbGFzaF9zZXNzaW9uOAEwU2Vzc2lvbkluZGV4AAE4b2ZmZW5jZXNfY291bnQ4AQx1MzIAAQRsQSBuZXcgb2ZmZW5jZSB3YXMgcmVwb3J0ZWQuIEZlZXNQYWlkCAEMd2hvBAEwVDo6QWNjb3VudElkAAEQZmVlc5UBATBCYWxhbmNlT2Y8VD4AAgwBAUZlZXMgd2VyZSBjaGFyZ2VkIGZvciBhIHVzZXIgb3BlcmF0aW9uIChzZXRfa2V5cyBvciBwdXJnZV9rZXlzKS4AGQFUaGUgZmVlIGluY2x1ZGVzIGJvdGggWENNIGRlbGl2ZXJ5IGZlZSBhbmQgcmVsYXkgY2hhaW4gZXhlY3V0aW9uIGNvc3QuKFVuZXhwZWN0ZWQEAFEJAThVbmV4cGVjdGVkS2luZAADCA0BU29tZXRoaW5nIG9jY3VycmVkIHRoYXQgc2hvdWxkIG5ldmVyIGhhcHBlbiB1bmRlciBub3JtYWwgb3BlcmF0aW9uLrxMb2dnZWQgYXMgYW4gZXZlbnQgZm9yIGZhaWwtc2FmZSBvYnNlcnZhYmlsaXR5LgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldFEJDHhwYWxsZXRfc3Rha2luZ19hc3luY19yY19jbGllbnQYcGFsbGV0OFVuZXhwZWN0ZWRLaW5kAAEYcFNlc3Npb25SZXBvcnRJbnRlZ3JpdHlGYWlsZWQAAABsVmFsaWRhdG9yU2V0SW50ZWdyaXR5RmFpbGVkAAEAOFNlc3Npb25Ta2lwcGVkAAIAXFNlc3Npb25BbHJlYWR5UHJvY2Vzc2VkAAMAWFZhbGlkYXRvclNldFNlbmRGYWlsZWQABABMVmFsaWRhdG9yU2V0RHJvcHBlZAAFAABVCQyQcGFsbGV0X2VsZWN0aW9uX3Byb3ZpZGVyX211bHRpX2Jsb2NrGHBhbGxldBRFdmVudAQEVAABFERQaGFzZVRyYW5zaXRpb25lZAgBEGZyb22NBQEgUGhhc2U8VD4EQHRoZSBzb3VyY2UgcGhhc2UBCHRvjQUBIFBoYXNlPFQ+BEBUaGUgdGFyZ2V0IHBoYXNlAAhdAUEgcGhhc2UgdHJhbnNpdGlvbiBoYXBwZW5lZC4gT25seSBjaGVja3MgbWFqb3IgY2hhbmdlcyBpbiB0aGUgdmFyaWFudHMsIG5vdCBtaW5vciBpbm5lchx2YWx1ZXMueFVuZXhwZWN0ZWRUYXJnZXRTbmFwc2hvdEZhaWxlZAABBIBUYXJnZXQgc25hcHNob3QgY3JlYXRpb24gZmFpbGVkLnRVbmV4cGVjdGVkVm90ZXJTbmFwc2hvdEZhaWxlZAACBHxWb3RlciBzbmFwc2hvdCBjcmVhdGlvbiBmYWlsZWQukFVuZXhwZWN0ZWRQaGFzZVRyYW5zaXRpb25PdXRPZldlaWdodBABEGZyb22NBQEgUGhhc2U8VD4AAQh0b40FASBQaGFzZTxUPgABIHJlcXVpcmVkeQEBGFdlaWdodAABDGhhZHkBARhXZWlnaHQAAwT4UGhhc2UgdHJhbnNpdGlvbiBjb3VsZCBub3QgcHJvY2VlZCBkdWUgdG8gYmVpbmcgb3V0IG9mIHdlaWdodC50VW5leHBlY3RlZFBoYXNlVHJhbnNpdGlvbkhhbHQIASByZXF1aXJlZHkBARhXZWlnaHQAAQxoYWR5AQEYV2VpZ2h0AAQEFQFQaGFzZSB0cmFuc2l0aW9uIGNvdWxkIG5vdCBldmVuIGJlZ2luIGJlY2FzZXUgb2YgYmVpbmcgb3V0IG9mIHdlaWdodC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXRZCRSQcGFsbGV0X2VsZWN0aW9uX3Byb3ZpZGVyX211bHRpX2Jsb2NrIHZlcmlmaWVyFGltcGxzGHBhbGxldBRFdmVudAQEVAABDEhWZXJpZmljYXRpb25GYWlsZWQIADgBJFBhZ2VJbmRleAAAXQkBQEZlYXNpYmlsaXR5RXJyb3IAABCgQSB2ZXJpZmljYXRpb24gZmFpbGVkIGF0IHRoZSBnaXZlbiBwYWdlLgBVAU5PVEU6IGlmIHRoZSBpbmRleCBpcyAwLCB0aGVuIHRoaXMgY291bGQgbWVhbiBlaXRoZXIgdGhlIGZlYXNpYmlsaXR5IG9mIHRoZSBsYXN0IHBhZ2UFAXdhcyB3cm9uZywgb3IgdGhlIGZpbmFsIGNoZWNrcyBvZiBgZmluYWxpemVfdmVyaWZpY2F0aW9uYCBmYWlsZWQuIFZlcmlmaWVkCAA4ASRQYWdlSW5kZXgAADgBDHUzMgABCFkBVGhlIGdpdmVuIHBhZ2Ugb2YgYSBzb2x1dGlvbiBoYXMgYmVlbiB2ZXJpZmllZCwgd2l0aCB0aGUgZ2l2ZW4gbnVtYmVyIG9mIHdpbm5lcnMgYmVpbmcwZm91bmQgaW4gaXQuGFF1ZXVlZAgAtQUBNEVsZWN0aW9uU2NvcmUAAGUJAVRPcHRpb248RWxlY3Rpb25TY29yZT4AAgQdAUEgc29sdXRpb24gd2l0aCB0aGUgZ2l2ZW4gc2NvcmUgaGFzIHJlcGxhY2VkIG91ciBjdXJyZW50IGJlc3Qgc29sdXRpb24uBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0XQkMkHBhbGxldF9lbGVjdGlvbl9wcm92aWRlcl9tdWx0aV9ibG9jayB2ZXJpZmllckBGZWFzaWJpbGl0eUVycm9yAAEsQFdyb25nV2lubmVyQ291bnQAAABMU25hcHNob3RVbmF2YWlsYWJsZQABACxJbnZhbGlkVm90ZQACADBJbnZhbGlkVm90ZXIAAwA0SW52YWxpZFdpbm5lcgAEADBJbnZhbGlkU2NvcmUABQAwSW52YWxpZFJvdW5kAAYALFNjb3JlVG9vTG93AAcAUEZhaWxlZFRvQm91bmRTdXBwb3J0AAgAME5wb3NFbGVjdGlvbgQAYQkBYHNwX25wb3NfZWxlY3Rpb25zOjpFcnJvcgAJAChJbmNvbXBsZXRlAAoAAGEJCERzcF9ucG9zX2VsZWN0aW9ucxRFcnJvcgABKFhTb2x1dGlvbldlaWdodE92ZXJmbG93AAAAWFNvbHV0aW9uVGFyZ2V0T3ZlcmZsb3cAAQBQU29sdXRpb25JbnZhbGlkSW5kZXgAAgBgU29sdXRpb25JbnZhbGlkUGFnZUluZGV4AAMAPEFyaXRobWV0aWNFcnJvcgAEAEhJbnZhbGlkU3VwcG9ydEVkZ2UABQA0VG9vTWFueVZvdGVycwAGADhCb3VuZHNFeGNlZWRlZAAHADhEdXBsaWNhdGVWb3RlcgAIADxEdXBsaWNhdGVUYXJnZXQACQAAZQkEGE9wdGlvbgQEVAG1BQEIEE5vbmUAAAAQU29tZQQAtQUAAAEAAGkJEJBwYWxsZXRfZWxlY3Rpb25fcHJvdmlkZXJfbXVsdGlfYmxvY2sYc2lnbmVkGHBhbGxldBRFdmVudAQEVAABHChSZWdpc3RlcmVkDAA4AQx1MzIAAAQBMFQ6OkFjY291bnRJZAAAtQUBNEVsZWN0aW9uU2NvcmUAAARRAVVwY29taW5nIHN1Ym1pc3Npb24gaGFzIGJlZW4gcmVnaXN0ZXJlZCBmb3IgdGhlIGdpdmVuIGFjY291bnQsIHdpdGggdGhlIGdpdmVuIHNjb3JlLhhTdG9yZWQMADgBDHUzMgAABAEwVDo6QWNjb3VudElkAAA4ASRQYWdlSW5kZXgAAQRdAUEgcGFnZSBvZiBzb2x1dGlvbiBzb2x1dGlvbiB3aXRoIHRoZSBnaXZlbiBpbmRleCBoYXMgYmVlbiBzdG9yZWQgZm9yIHRoZSBnaXZlbiBhY2NvdW50LiBSZXdhcmRlZAwAOAEMdTMyAAAEATBUOjpBY2NvdW50SWQAAJUBATBCYWxhbmNlT2Y8VD4AAgToVGhlIGdpdmVuIGFjY291bnQgaGFzIGJlZW4gcmV3YXJkZWQgd2l0aCB0aGUgZ2l2ZW4gYW1vdW50LhxTbGFzaGVkDAA4AQx1MzIAAAQBMFQ6OkFjY291bnRJZAAAlQEBMEJhbGFuY2VPZjxUPgADBORUaGUgZ2l2ZW4gYWNjb3VudCBoYXMgYmVlbiBzbGFzaGVkIHdpdGggdGhlIGdpdmVuIGFtb3VudC4cRWplY3RlZAgAOAEMdTMyAAAEATBUOjpBY2NvdW50SWQABATUVGhlIGdpdmVuIHNvbHV0aW9uLCBmb3IgdGhlIGdpdmVuIHJvdW5kLCB3YXMgZWplY3RlZC4kRGlzY2FyZGVkCAA4AQx1MzIAAAQBMFQ6OkFjY291bnRJZAAFBJRUaGUgZ2l2ZW4gYWNjb3VudCBoYXMgYmVlbiBkaXNjYXJkZWQuGEJhaWxlZAgAOAEMdTMyAAAEATBUOjpBY2NvdW50SWQABgR0VGhlIGdpdmVuIGFjY291bnQgaGFzIGJhaWxlZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXRtCRBQcGFsbGV0X3N0YWtpbmdfYXN5bmMYcGFsbGV0GHBhbGxldBRFdmVudAQEVAABbBxFcmFQYWlkDAEkZXJhX2luZGV4OAEgRXJhSW5kZXgAAUB2YWxpZGF0b3JfcGF5b3V0lQEBMEJhbGFuY2VPZjxUPgABJHJlbWFpbmRlcpUBATBCYWxhbmNlT2Y8VD4AABRwVGhlIGVyYSBwYXlvdXQgaGFzIGJlZW4gc2V0LgANAUluIG5vbi1taW50aW5nIG1vZGUsIGB2YWxpZGF0b3JfcGF5b3V0YCBpcyB0aGUgc3Rha2VyIHJld2FyZCBidWRnZXQFAXNuYXBzaG90dGVkIGZyb20gdGhlIGdlbmVyYWwgcG90LCBhbmQgYHJlbWFpbmRlcmAgaXMgYWx3YXlzIHplcm8uIQFJbiBsZWdhY3kgbWludGluZyBtb2RlLCBib3RoIGZpZWxkcyByZWZsZWN0IHRoZSBgRXJhUGF5b3V0YCBjb21wdXRhdGlvbi4gUmV3YXJkZWQMARRzdGFzaAQBMFQ6OkFjY291bnRJZAABEGRlc3QBBwF8UmV3YXJkRGVzdGluYXRpb248VDo6QWNjb3VudElkPgABGGFtb3VudJUBATBCYWxhbmNlT2Y8VD4AAQQNAVRoZSBub21pbmF0b3IgaGFzIGJlZW4gcmV3YXJkZWQgYnkgdGhpcyBhbW91bnQgdG8gdGhpcyBkZXN0aW5hdGlvbi4cU2xhc2hlZAgBGHN0YWtlcgQBMFQ6OkFjY291bnRJZAABGGFtb3VudJUBATBCYWxhbmNlT2Y8VD4AAgQdAUEgc3Rha2VyICh2YWxpZGF0b3Igb3Igbm9taW5hdG9yKSBoYXMgYmVlbiBzbGFzaGVkIGJ5IHRoZSBnaXZlbiBhbW91bnQuaE9sZFNsYXNoaW5nUmVwb3J0RGlzY2FyZGVkBAE0c2Vzc2lvbl9pbmRleDgBMFNlc3Npb25JbmRleAADCBkBQW4gb2xkIHNsYXNoaW5nIHJlcG9ydCBmcm9tIGEgcHJpb3IgZXJhIHdhcyBkaXNjYXJkZWQgYmVjYXVzZSBpdCBjb3VsZERub3QgYmUgcHJvY2Vzc2VkLhhCb25kZWQIARRzdGFzaAQBMFQ6OkFjY291bnRJZAABGGFtb3VudJUBATBCYWxhbmNlT2Y8VD4ABBDQQW4gYWNjb3VudCBoYXMgYm9uZGVkIHRoaXMgYW1vdW50LiBcW3N0YXNoLCBhbW91bnRcXQBNAU5PVEU6IFRoaXMgZXZlbnQgaXMgb25seSBlbWl0dGVkIHdoZW4gZnVuZHMgYXJlIGJvbmRlZCB2aWEgYSBkaXNwYXRjaGFibGUuIE5vdGFibHksIQFpdCB3aWxsIG5vdCBiZSBlbWl0dGVkIGZvciBzdGFraW5nIHJld2FyZHMgd2hlbiB0aGV5IGFyZSBhZGRlZCB0byBzdGFrZS4gVW5ib25kZWQIARRzdGFzaAQBMFQ6OkFjY291bnRJZAABGGFtb3VudJUBATBCYWxhbmNlT2Y8VD4ABQSQQW4gYWNjb3VudCBoYXMgdW5ib25kZWQgdGhpcyBhbW91bnQuJFdpdGhkcmF3bggBFHN0YXNoBAEwVDo6QWNjb3VudElkAAEYYW1vdW50lQEBMEJhbGFuY2VPZjxUPgAGCFkBQW4gYWNjb3VudCBoYXMgY2FsbGVkIGB3aXRoZHJhd191bmJvbmRlZGAgYW5kIHJlbW92ZWQgdW5ib25kaW5nIGNodW5rcyB3b3J0aCBgQmFsYW5jZWBkZnJvbSB0aGUgdW5sb2NraW5nIHF1ZXVlLjRTdGFrZXJSZW1vdmVkBAEUc3Rhc2gEATBUOjpBY2NvdW50SWQABwhVAUEgc3Vic2VxdWVudCBldmVudCBvZiBgV2l0aGRyYXduYCwgaW5kaWNhdGluZyB0aGF0IGBzdGFzaGAgd2FzIGZ1bGx5IHJlbW92ZWQgZnJvbSB0aGUcc3lzdGVtLhhLaWNrZWQIASRub21pbmF0b3IEATBUOjpBY2NvdW50SWQAARRzdGFzaAQBMFQ6OkFjY291bnRJZAAIBLRBIG5vbWluYXRvciBoYXMgYmVlbiBraWNrZWQgZnJvbSBhIHZhbGlkYXRvci4cQ2hpbGxlZAQBFHN0YXNoBAEwVDo6QWNjb3VudElkAAkEIQFBbiBhY2NvdW50IGhhcyBzdG9wcGVkIHBhcnRpY2lwYXRpbmcgYXMgZWl0aGVyIGEgdmFsaWRhdG9yIG9yIG5vbWluYXRvci40UGF5b3V0U3RhcnRlZBABJGVyYV9pbmRleDgBIEVyYUluZGV4AAE8dmFsaWRhdG9yX3N0YXNoBAEwVDo6QWNjb3VudElkAAEQcGFnZTgBEFBhZ2UAARBuZXh02AEwT3B0aW9uPFBhZ2U+AAoEWQFBIFBhZ2Ugb2Ygc3Rha2VycyByZXdhcmRzIGFyZSBnZXR0aW5nIHBhaWQuIGBuZXh0YCBpcyBgTm9uZWAgaWYgYWxsIHBhZ2VzIGFyZSBjbGFpbWVkLkRWYWxpZGF0b3JQcmVmc1NldAgBFHN0YXNoBAEwVDo6QWNjb3VudElkAAEUcHJlZnMFBwE4VmFsaWRhdG9yUHJlZnMACwSYQSB2YWxpZGF0b3IgaGFzIHNldCB0aGVpciBwcmVmZXJlbmNlcy5oU25hcHNob3RWb3RlcnNTaXplRXhjZWVkZWQEARBzaXplOAEMdTMyAAwEaFZvdGVycyBzaXplIGxpbWl0IHJlYWNoZWQubFNuYXBzaG90VGFyZ2V0c1NpemVFeGNlZWRlZAQBEHNpemU4AQx1MzIADQRsVGFyZ2V0cyBzaXplIGxpbWl0IHJlYWNoZWQuIEZvcmNlRXJhBAEQbW9kZXEJARxGb3JjaW5nAA4AZENvbnRyb2xsZXJCYXRjaERlcHJlY2F0ZWQEASBmYWlsdXJlczgBDHUzMgAPBKRSZXBvcnQgb2YgYSBjb250cm9sbGVyIGJhdGNoIGRlcHJlY2F0aW9uLkBDdXJyZW5jeU1pZ3JhdGVkCAEUc3Rhc2gEATBUOjpBY2NvdW50SWQAAThmb3JjZV93aXRoZHJhd5UBATBCYWxhbmNlT2Y8VD4AEAhVAVN0YWtpbmcgYmFsYW5jZSBtaWdyYXRlZCBmcm9tIGxvY2tzIHRvIGhvbGRzLCB3aXRoIGFueSBiYWxhbmNlIHRoYXQgY291bGQgbm90IGJlIGhlbGRMaXMgZm9yY2Ugd2l0aGRyYXduLlhQYWdlZEVsZWN0aW9uUHJvY2VlZGVkCAEQcGFnZTgBJFBhZ2VJbmRleAABGHJlc3VsdHUJAUBSZXN1bHQ8dTMyLCB1MzI+ABEkQQFBIHBhZ2UgZnJvbSBhIG11bHRpLXBhZ2UgZWxlY3Rpb24gd2FzIGZldGNoZWQuIEEgbnVtYmVyIG9mIHRoZXNlIGFyZSBmb2xsb3dlZCBieURgU3Rha2Vyc0VsZWN0ZWRgLgDwYE9rKGNvdW50KWAgaW5kaWNhdGVzIHRoZSBnaXZlIG51bWJlciBvZiBzdGFzaGVzIHdlcmUgYWRkZWQuBQFgRXJyKGluZGV4KWAgaW5kaWNhdGVzIHRoYXQgdGhlIHN0YXNoZXMgYWZ0ZXIgaW5kZXggd2VyZSBkcm9wcGVkLkEBYEVycigwKWAgaW5kaWNhdGVzIHRoYXQgYW4gZXJyb3IgaGFwcGVuZWQgYnV0IG5vIHN0YXNoZXMgd2VyZSBkcm9wcGVkIG5vciBhZGRlZC4AUQFUaGUgZXJyb3IgaW5kaWNhdGVzIHRoYXQgYSBudW1iZXIgb2YgdmFsaWRhdG9ycyB3ZXJlIGRyb3BwZWQgZHVlIHRvIGV4Y2VzcyBzaXplLCBidXSMdGhlIG92ZXJhbGwgZWxlY3Rpb24gd2lsbCBjb250aW51ZS48T2ZmZW5jZVJlcG9ydGVkDAEsb2ZmZW5jZV9lcmE4ASBFcmFJbmRleAABJHZhbGlkYXRvcgQBMFQ6OkFjY291bnRJZAABIGZyYWN0aW9uPQUBHFBlcmJpbGwAEghNAUFuIG9mZmVuY2UgZm9yIHRoZSBnaXZlbiB2YWxpZGF0b3IsIGZvciB0aGUgZ2l2ZW4gcGVyY2VudGFnZSBvZiB0aGVpciBzdGFrZSwgYXQgdGhlbGdpdmVuIGVyYSBhcyBiZWVuIHJlcG9ydGVkLjRTbGFzaENvbXB1dGVkEAEsb2ZmZW5jZV9lcmE4ASBFcmFJbmRleAABJHNsYXNoX2VyYTgBIEVyYUluZGV4AAEgb2ZmZW5kZXIEATBUOjpBY2NvdW50SWQAARBwYWdlOAEMdTMyABMEMQFBbiBvZmZlbmNlIGhhcyBiZWVuIHByb2Nlc3NlZCBhbmQgdGhlIGNvcnJlc3BvbmRpbmcgc2xhc2ggaGFzIGJlZW4gY29tcHV0ZWQuOFNsYXNoQ2FuY2VsbGVkCAEkc2xhc2hfZXJhOAEgRXJhSW5kZXgAASR2YWxpZGF0b3IEATBUOjpBY2NvdW50SWQAFASYQW4gdW5hcHBsaWVkIHNsYXNoIGhhcyBiZWVuIGNhbmNlbGxlZC44U2Vzc2lvblJvdGF0ZWQMAUBzdGFydGluZ19zZXNzaW9uOAEwU2Vzc2lvbkluZGV4AAEoYWN0aXZlX2VyYTgBIEVyYUluZGV4AAEscGxhbm5lZF9lcmE4ASBFcmFJbmRleAAVEIhTZXNzaW9uIGNoYW5nZSBoYXMgYmVlbiB0cmlnZ2VyZWQuAFkBSWYgcGxhbm5lZF9lcmEgaXMgb25lIGVyYSBhaGVhZCBvZiBhY3RpdmVfZXJhLCBpdCBpbXBsaWVzIG5ldyBlcmEgaXMgYmVpbmcgcGxhbm5lZCBhbmRQZWxlY3Rpb24gaXMgb25nb2luZy4oVW5leHBlY3RlZAQAeQkBRFVuZXhwZWN0ZWRLaW5kPFQ+ABYIDQFTb21ldGhpbmcgb2NjdXJyZWQgdGhhdCBzaG91bGQgbmV2ZXIgaGFwcGVuIHVuZGVyIG5vcm1hbCBvcGVyYXRpb24uvExvZ2dlZCBhcyBhbiBldmVudCBmb3IgZmFpbC1zYWZlIG9ic2VydmFiaWxpdHkuNE9mZmVuY2VUb29PbGQMASxvZmZlbmNlX2VyYTgBIEVyYUluZGV4AAEkdmFsaWRhdG9yBAEwVDo6QWNjb3VudElkAAEgZnJhY3Rpb249BQEcUGVyYmlsbAAXBD0BQW4gb2ZmZW5jZSB3YXMgcmVwb3J0ZWQgdGhhdCB3YXMgdG9vIG9sZCB0byBiZSBwcm9jZXNzZWQsIGFuZCB0aHVzIHdhcyBkcm9wcGVkLiRFcmFQcnVuZWQEARRpbmRleDgBIEVyYUluZGV4ABgErEFuIG9sZCBlcmEgd2l0aCB0aGUgZ2l2ZW4gaW5kZXggd2FzIHBydW5lZC5YVmFsaWRhdG9ySW5jZW50aXZlUGFpZBABDGVyYTgBIEVyYUluZGV4AAE8dmFsaWRhdG9yX3N0YXNoBAEwVDo6QWNjb3VudElkAAEQZGVzdAEHAXxSZXdhcmREZXN0aW5hdGlvbjxUOjpBY2NvdW50SWQ+AAEYYW1vdW50lQEBMEJhbGFuY2VPZjxUPgAZBPRUaGUgdmFsaWRhdG9yIGhhcyBiZWVuIHBhaWQgdGhlaXIgc2VsZi1zdGFrZSBpbmNlbnRpdmUgYm9udXMubFZhbGlkYXRvckluY2VudGl2ZUNvbmZpZ1NldAwBSG9wdGltdW1fc2VsZl9zdGFrZZUBATBCYWxhbmNlT2Y8VD4AAUxoYXJkX2NhcF9zZWxmX3N0YWtllQEBMEJhbGFuY2VPZjxUPgABMHNsb3BlX2ZhY3Rvcj0FARxQZXJiaWxsABoE+FZhbGlkYXRvciBzZWxmLXN0YWtlIGluY2VudGl2ZSBjb25maWd1cmF0aW9uIGhhcyBiZWVuIHVwZGF0ZWQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0cQkIUHBhbGxldF9zdGFraW5nX2FzeW5jHEZvcmNpbmcAARAoTm90Rm9yY2luZwAAACBGb3JjZU5ldwABACRGb3JjZU5vbmUAAgAsRm9yY2VBbHdheXMAAwAAdQkEGFJlc3VsdAgEVAE4BEUBOAEICE9rBAA4AAAAAAxFcnIEADgAAAEAAHkJEFBwYWxsZXRfc3Rha2luZ19hc3luYxhwYWxsZXQYcGFsbGV0OFVuZXhwZWN0ZWRLaW5kBARUAAEYYEVyYUR1cmF0aW9uQm91bmRFeGNlZWRlZAAAAGhVbmtub3duVmFsaWRhdG9yQWN0aXZhdGlvbgABAGBQYWdlZEVsZWN0aW9uT3V0T2ZXZWlnaHQMARBwYWdlOAEkUGFnZUluZGV4AAEgcmVxdWlyZWR5AQEYV2VpZ2h0AAEMaGFkeQEBGFdlaWdodAACADBNaXNzaW5nUGF5ZWUIAQxlcmE4ASBFcmFJbmRleAABFHN0YXNoBAEwVDo6QWNjb3VudElkAAMAgFZhbGlkYXRvckluY2VudGl2ZVdlaWdodE1pc21hdGNoBAEMZXJhOAEgRXJhSW5kZXgABACAVmFsaWRhdG9ySW5jZW50aXZlVHJhbnNmZXJGYWlsZWQEAQxlcmE4ASBFcmFJbmRleAAFAAB9CQw8cGFsbGV0X3RyZWFzdXJ5GHBhbGxldBRFdmVudAgEVAAESQABMCBTcGVuZGluZwQBQGJ1ZGdldF9yZW1haW5pbmeVAQE8QmFsYW5jZU9mPFQsIEk+AAAE5FdlIGhhdmUgZW5kZWQgYSBzcGVuZCBwZXJpb2QgYW5kIHdpbGwgbm93IGFsbG9jYXRlIGZ1bmRzLhxBd2FyZGVkDAE4cHJvcG9zYWxfaW5kZXg4ATRQcm9wb3NhbEluZGV4AAEUYXdhcmSVAQE8QmFsYW5jZU9mPFQsIEk+AAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAABBHxTb21lIGZ1bmRzIGhhdmUgYmVlbiBhbGxvY2F0ZWQuFEJ1cm50BAEsYnVybnRfZnVuZHOVAQE8QmFsYW5jZU9mPFQsIEk+AAIEiFNvbWUgb2Ygb3VyIGZ1bmRzIGhhdmUgYmVlbiBidXJudC4gUm9sbG92ZXIEAUByb2xsb3Zlcl9iYWxhbmNllQEBPEJhbGFuY2VPZjxULCBJPgADBC0BU3BlbmRpbmcgaGFzIGZpbmlzaGVkOyB0aGlzIGlzIHRoZSBhbW91bnQgdGhhdCByb2xscyBvdmVyIHVudGlsIG5leHQgc3BlbmQuHERlcG9zaXQEARR2YWx1ZZUBATxCYWxhbmNlT2Y8VCwgST4ABAR8U29tZSBmdW5kcyBoYXZlIGJlZW4gZGVwb3NpdGVkLjRTcGVuZEFwcHJvdmVkDAE4cHJvcG9zYWxfaW5kZXg4ATRQcm9wb3NhbEluZGV4AAEYYW1vdW50lQEBPEJhbGFuY2VPZjxULCBJPgABLGJlbmVmaWNpYXJ5BAEwVDo6QWNjb3VudElkAAUEnEEgbmV3IHNwZW5kIHByb3Bvc2FsIGhhcyBiZWVuIGFwcHJvdmVkLjxVcGRhdGVkSW5hY3RpdmUIASxyZWFjdGl2YXRlZJUBATxCYWxhbmNlT2Y8VCwgST4AASxkZWFjdGl2YXRlZJUBATxCYWxhbmNlT2Y8VCwgST4ABgTMVGhlIGluYWN0aXZlIGZ1bmRzIG9mIHRoZSBwYWxsZXQgaGF2ZSBiZWVuIHVwZGF0ZWQuSEFzc2V0U3BlbmRBcHByb3ZlZBgBFGluZGV4OAEoU3BlbmRJbmRleAABKGFzc2V0X2tpbmRNBwEwVDo6QXNzZXRLaW5kAAEYYW1vdW50lQEBUEFzc2V0QmFsYW5jZU9mPFQsIEk+AAEsYmVuZWZpY2lhcnlRBwE4VDo6QmVuZWZpY2lhcnkAASh2YWxpZF9mcm9tOAFQQmxvY2tOdW1iZXJGb3I8VCwgST4AASRleHBpcmVfYXQ4AVBCbG9ja051bWJlckZvcjxULCBJPgAHBLRBIG5ldyBhc3NldCBzcGVuZCBwcm9wb3NhbCBoYXMgYmVlbiBhcHByb3ZlZC5AQXNzZXRTcGVuZFZvaWRlZAQBFGluZGV4OAEoU3BlbmRJbmRleAAIBHRBbiBhcHByb3ZlZCBzcGVuZCB3YXMgdm9pZGVkLhBQYWlkCAEUaW5kZXg4AShTcGVuZEluZGV4AAEocGF5bWVudF9pZCgBZDxUOjpQYXltYXN0ZXIgYXMgUGF5Pjo6SWQACQRMQSBwYXltZW50IGhhcHBlbmVkLjRQYXltZW50RmFpbGVkCAEUaW5kZXg4AShTcGVuZEluZGV4AAEocGF5bWVudF9pZCgBZDxUOjpQYXltYXN0ZXIgYXMgUGF5Pjo6SWQACgSQQSBwYXltZW50IGZhaWxlZCBhbmQgY2FuIGJlIHJldHJpZWQuOFNwZW5kUHJvY2Vzc2VkBAEUaW5kZXg4AShTcGVuZEluZGV4AAsITQFBIHNwZW5kIHdhcyBwcm9jZXNzZWQgYW5kIHJlbW92ZWQgZnJvbSB0aGUgc3RvcmFnZS4gSXQgbWlnaHQgaGF2ZSBiZWVuIHN1Y2Nlc3NmdWxseXBwYWlkIG9yIGl0IG1heSBoYXZlIGV4cGlyZWQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0gQkMYHBhbGxldF9jb252aWN0aW9uX3ZvdGluZxhwYWxsZXQURXZlbnQIBFQABEkAARQkRGVsZWdhdGVkDAAEATBUOjpBY2NvdW50SWQAAAQBMFQ6OkFjY291bnRJZAAA+QMBNENsYXNzT2Y8VCwgST4AAAQdAUFuIGFjY291bnQgaGFzIGRlbGVnYXRlZCB0aGVpciB2b3RlIHRvIGFub3RoZXIgYWNjb3VudC4gXFt3aG8sIHRhcmdldFxdLFVuZGVsZWdhdGVkCAAEATBUOjpBY2NvdW50SWQAAPkDATRDbGFzc09mPFQsIEk+AAEE9EFuIFxbYWNjb3VudFxdIGhhcyBjYW5jZWxsZWQgYSBwcmV2aW91cyBkZWxlZ2F0aW9uIG9wZXJhdGlvbi4UVm90ZWQMAQx3aG8EATBUOjpBY2NvdW50SWQAARB2b3RlWQcBcEFjY291bnRWb3RlPEJhbGFuY2VPZjxULCBJPj4AAShwb2xsX2luZGV4OAFEUG9sbEluZGV4T2Y8VCwgST4AAgRQQW4gYWNjb3VudCBoYXMgdm90ZWQsVm90ZVJlbW92ZWQMAQx3aG8EATBUOjpBY2NvdW50SWQAARB2b3RlWQcBcEFjY291bnRWb3RlPEJhbGFuY2VPZjxULCBJPj4AAShwb2xsX2luZGV4OAFEUG9sbEluZGV4T2Y8VCwgST4AAwRcQSB2b3RlIGhhcyBiZWVuIHJlbW92ZWQwVm90ZVVubG9ja2VkCAEMd2hvBAEwVDo6QWNjb3VudElkAAEUY2xhc3P5AwE0Q2xhc3NPZjxULCBJPgAEBEUBVGhlIGxvY2t1cCBwZXJpb2Qgb2YgYSBjb252aWN0aW9uIHZvdGUgZXhwaXJlZCwgYW5kIHRoZSBmdW5kcyBoYXZlIGJlZW4gdW5sb2NrZWQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0hQkMQHBhbGxldF9yZWZlcmVuZGEYcGFsbGV0FEV2ZW50CARUAARJAAFAJFN1Ym1pdHRlZAwBFGluZGV4OAE8UmVmZXJlbmR1bUluZGV4BGBJbmRleCBvZiB0aGUgcmVmZXJlbmR1bS4BFHRyYWNr+QMBPFRyYWNrSWRPZjxULCBJPgQlAVRoZSB0cmFjayAoYW5kIGJ5IGV4dGVuc2lvbiBwcm9wb3NhbCBkaXNwYXRjaCBvcmlnaW4pIG9mIHRoaXMgcmVmZXJlbmR1bS4BIHByb3Bvc2FsbQcBTEJvdW5kZWRDYWxsT2Y8VCwgST4EgFRoZSBwcm9wb3NhbCBmb3IgdGhlIHJlZmVyZW5kdW0uAASAQSByZWZlcmVuZHVtIGhhcyBiZWVuIHN1Ym1pdHRlZC5URGVjaXNpb25EZXBvc2l0UGxhY2VkDAEUaW5kZXg4ATxSZWZlcmVuZHVtSW5kZXgEYEluZGV4IG9mIHRoZSByZWZlcmVuZHVtLgEMd2hvBAEwVDo6QWNjb3VudElkBIxUaGUgYWNjb3VudCB3aG8gcGxhY2VkIHRoZSBkZXBvc2l0LgEYYW1vdW50lQEBPEJhbGFuY2VPZjxULCBJPgSEVGhlIGFtb3VudCBwbGFjZWQgYnkgdGhlIGFjY291bnQuAQSUVGhlIGRlY2lzaW9uIGRlcG9zaXQgaGFzIGJlZW4gcGxhY2VkLlxEZWNpc2lvbkRlcG9zaXRSZWZ1bmRlZAwBFGluZGV4OAE8UmVmZXJlbmR1bUluZGV4BGBJbmRleCBvZiB0aGUgcmVmZXJlbmR1bS4BDHdobwQBMFQ6OkFjY291bnRJZASMVGhlIGFjY291bnQgd2hvIHBsYWNlZCB0aGUgZGVwb3NpdC4BGGFtb3VudJUBATxCYWxhbmNlT2Y8VCwgST4EhFRoZSBhbW91bnQgcGxhY2VkIGJ5IHRoZSBhY2NvdW50LgIEnFRoZSBkZWNpc2lvbiBkZXBvc2l0IGhhcyBiZWVuIHJlZnVuZGVkLjhEZXBvc2l0U2xhc2hlZAgBDHdobwQBMFQ6OkFjY291bnRJZASMVGhlIGFjY291bnQgd2hvIHBsYWNlZCB0aGUgZGVwb3NpdC4BGGFtb3VudJUBATxCYWxhbmNlT2Y8VCwgST4EhFRoZSBhbW91bnQgcGxhY2VkIGJ5IHRoZSBhY2NvdW50LgMEbEEgZGVwb3NpdCBoYXMgYmVlbiBzbGFzaGVkLjxEZWNpc2lvblN0YXJ0ZWQQARRpbmRleDgBPFJlZmVyZW5kdW1JbmRleARgSW5kZXggb2YgdGhlIHJlZmVyZW5kdW0uARR0cmFja/kDATxUcmFja0lkT2Y8VCwgST4EJQFUaGUgdHJhY2sgKGFuZCBieSBleHRlbnNpb24gcHJvcG9zYWwgZGlzcGF0Y2ggb3JpZ2luKSBvZiB0aGlzIHJlZmVyZW5kdW0uASBwcm9wb3NhbG0HAUxCb3VuZGVkQ2FsbE9mPFQsIEk+BIBUaGUgcHJvcG9zYWwgZm9yIHRoZSByZWZlcmVuZHVtLgEUdGFsbHmJCQEgVDo6VGFsbHkEuFRoZSBjdXJyZW50IHRhbGx5IG9mIHZvdGVzIGluIHRoaXMgcmVmZXJlbmR1bS4EBLxBIHJlZmVyZW5kdW0gaGFzIG1vdmVkIGludG8gdGhlIGRlY2lkaW5nIHBoYXNlLjhDb25maXJtU3RhcnRlZAQBFGluZGV4OAE8UmVmZXJlbmR1bUluZGV4BGBJbmRleCBvZiB0aGUgcmVmZXJlbmR1bS4FADhDb25maXJtQWJvcnRlZAQBFGluZGV4OAE8UmVmZXJlbmR1bUluZGV4BGBJbmRleCBvZiB0aGUgcmVmZXJlbmR1bS4GACRDb25maXJtZWQIARRpbmRleDgBPFJlZmVyZW5kdW1JbmRleARgSW5kZXggb2YgdGhlIHJlZmVyZW5kdW0uARR0YWxseYkJASBUOjpUYWxseQSwVGhlIGZpbmFsIHRhbGx5IG9mIHZvdGVzIGluIHRoaXMgcmVmZXJlbmR1bS4HBCEBQSByZWZlcmVuZHVtIGhhcyBlbmRlZCBpdHMgY29uZmlybWF0aW9uIHBoYXNlIGFuZCBpcyByZWFkeSBmb3IgYXBwcm92YWwuIEFwcHJvdmVkBAEUaW5kZXg4ATxSZWZlcmVuZHVtSW5kZXgEYEluZGV4IG9mIHRoZSByZWZlcmVuZHVtLggEDQFBIHJlZmVyZW5kdW0gaGFzIGJlZW4gYXBwcm92ZWQgYW5kIGl0cyBwcm9wb3NhbCBoYXMgYmVlbiBzY2hlZHVsZWQuIFJlamVjdGVkCAEUaW5kZXg4ATxSZWZlcmVuZHVtSW5kZXgEYEluZGV4IG9mIHRoZSByZWZlcmVuZHVtLgEUdGFsbHmJCQEgVDo6VGFsbHkEsFRoZSBmaW5hbCB0YWxseSBvZiB2b3RlcyBpbiB0aGlzIHJlZmVyZW5kdW0uCQSsQSBwcm9wb3NhbCBoYXMgYmVlbiByZWplY3RlZCBieSByZWZlcmVuZHVtLiBUaW1lZE91dAgBFGluZGV4OAE8UmVmZXJlbmR1bUluZGV4BGBJbmRleCBvZiB0aGUgcmVmZXJlbmR1bS4BFHRhbGx5iQkBIFQ6OlRhbGx5BLBUaGUgZmluYWwgdGFsbHkgb2Ygdm90ZXMgaW4gdGhpcyByZWZlcmVuZHVtLgoE2EEgcmVmZXJlbmR1bSBoYXMgYmVlbiB0aW1lZCBvdXQgd2l0aG91dCBiZWluZyBkZWNpZGVkLiRDYW5jZWxsZWQIARRpbmRleDgBPFJlZmVyZW5kdW1JbmRleARgSW5kZXggb2YgdGhlIHJlZmVyZW5kdW0uARR0YWxseYkJASBUOjpUYWxseQSwVGhlIGZpbmFsIHRhbGx5IG9mIHZvdGVzIGluIHRoaXMgcmVmZXJlbmR1bS4LBIBBIHJlZmVyZW5kdW0gaGFzIGJlZW4gY2FuY2VsbGVkLhhLaWxsZWQIARRpbmRleDgBPFJlZmVyZW5kdW1JbmRleARgSW5kZXggb2YgdGhlIHJlZmVyZW5kdW0uARR0YWxseYkJASBUOjpUYWxseQSwVGhlIGZpbmFsIHRhbGx5IG9mIHZvdGVzIGluIHRoaXMgcmVmZXJlbmR1bS4MBHRBIHJlZmVyZW5kdW0gaGFzIGJlZW4ga2lsbGVkLmRTdWJtaXNzaW9uRGVwb3NpdFJlZnVuZGVkDAEUaW5kZXg4ATxSZWZlcmVuZHVtSW5kZXgEYEluZGV4IG9mIHRoZSByZWZlcmVuZHVtLgEMd2hvBAEwVDo6QWNjb3VudElkBIxUaGUgYWNjb3VudCB3aG8gcGxhY2VkIHRoZSBkZXBvc2l0LgEYYW1vdW50lQEBPEJhbGFuY2VPZjxULCBJPgSEVGhlIGFtb3VudCBwbGFjZWQgYnkgdGhlIGFjY291bnQuDQSkVGhlIHN1Ym1pc3Npb24gZGVwb3NpdCBoYXMgYmVlbiByZWZ1bmRlZC4sTWV0YWRhdGFTZXQIARRpbmRleDgBPFJlZmVyZW5kdW1JbmRleARgSW5kZXggb2YgdGhlIHJlZmVyZW5kdW0uARBoYXNoQAEcVDo6SGFzaAQ4UHJlaW1hZ2UgaGFzaC4OBJxNZXRhZGF0YSBmb3IgYSByZWZlcmVuZHVtIGhhcyBiZWVuIHNldC48TWV0YWRhdGFDbGVhcmVkCAEUaW5kZXg4ATxSZWZlcmVuZHVtSW5kZXgEYEluZGV4IG9mIHRoZSByZWZlcmVuZHVtLgEQaGFzaEABHFQ6Okhhc2gEOFByZWltYWdlIGhhc2guDwSsTWV0YWRhdGEgZm9yIGEgcmVmZXJlbmR1bSBoYXMgYmVlbiBjbGVhcmVkLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldIkJDGBwYWxsZXRfY29udmljdGlvbl92b3RpbmcUdHlwZXMUVGFsbHkIFFZvdGVzAZUBFFRvdGFsAAAMARBheWVzlQEBFFZvdGVzAAEQbmF5c5UBARRWb3RlcwABHHN1cHBvcnSVAQEUVm90ZXMAAI0JDEBwYWxsZXRfd2hpdGVsaXN0GHBhbGxldBRFdmVudAQEVAABDDxDYWxsV2hpdGVsaXN0ZWQEASRjYWxsX2hhc2hAARxUOjpIYXNoAAAAWFdoaXRlbGlzdGVkQ2FsbFJlbW92ZWQEASRjYWxsX2hhc2hAARxUOjpIYXNoAAEAZFdoaXRlbGlzdGVkQ2FsbERpc3BhdGNoZWQIASRjYWxsX2hhc2hAARxUOjpIYXNoAAEYcmVzdWx0kQkBaERpc3BhdGNoUmVzdWx0V2l0aFBvc3RJbmZvAAIABHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0kQkEGFJlc3VsdAgEVAGVCQRFAZkJAQgIT2sEAJUJAAAAAAxFcnIEAJkJAAABAACVCQw0ZnJhbWVfc3VwcG9ydCBkaXNwYXRjaEBQb3N0RGlzcGF0Y2hJbmZvAAAIATRhY3R1YWxfd2VpZ2h0dQEBOE9wdGlvbjxXZWlnaHQ+AAEgcGF5c19mZWX9BwEQUGF5cwAAmQkIKHNwX3J1bnRpbWVkRGlzcGF0Y2hFcnJvcldpdGhQb3N0SW5mbwQQSW5mbwGVCQAIASRwb3N0X2luZm+VCQEQSW5mbwABFGVycm9yAQgBNERpc3BhdGNoRXJyb3IAAJ0JDDxwYWxsZXRfYm91bnRpZXMYcGFsbGV0FEV2ZW50CARUAARJAAEwOEJvdW50eVByb3Bvc2VkBAEUaW5kZXg4ASxCb3VudHlJbmRleAAABFBOZXcgYm91bnR5IHByb3Bvc2FsLjhCb3VudHlSZWplY3RlZAgBFGluZGV4OAEsQm91bnR5SW5kZXgAARBib25klQEBPEJhbGFuY2VPZjxULCBJPgABBMxBIGJvdW50eSBwcm9wb3NhbCB3YXMgcmVqZWN0ZWQ7IGZ1bmRzIHdlcmUgc2xhc2hlZC5IQm91bnR5QmVjYW1lQWN0aXZlBAEUaW5kZXg4ASxCb3VudHlJbmRleAACBLhBIGJvdW50eSBwcm9wb3NhbCBpcyBmdW5kZWQgYW5kIGJlY2FtZSBhY3RpdmUuNEJvdW50eUF3YXJkZWQIARRpbmRleDgBLEJvdW50eUluZGV4AAEsYmVuZWZpY2lhcnkEATBUOjpBY2NvdW50SWQAAwSUQSBib3VudHkgaXMgYXdhcmRlZCB0byBhIGJlbmVmaWNpYXJ5LjRCb3VudHlDbGFpbWVkDAEUaW5kZXg4ASxCb3VudHlJbmRleAABGHBheW91dJUBATxCYWxhbmNlT2Y8VCwgST4AASxiZW5lZmljaWFyeQQBMFQ6OkFjY291bnRJZAAEBIxBIGJvdW50eSBpcyBjbGFpbWVkIGJ5IGJlbmVmaWNpYXJ5LjhCb3VudHlDYW5jZWxlZAQBFGluZGV4OAEsQm91bnR5SW5kZXgABQRYQSBib3VudHkgaXMgY2FuY2VsbGVkLjhCb3VudHlFeHRlbmRlZAQBFGluZGV4OAEsQm91bnR5SW5kZXgABgRwQSBib3VudHkgZXhwaXJ5IGlzIGV4dGVuZGVkLjhCb3VudHlBcHByb3ZlZAQBFGluZGV4OAEsQm91bnR5SW5kZXgABwRUQSBib3VudHkgaXMgYXBwcm92ZWQuPEN1cmF0b3JQcm9wb3NlZAgBJGJvdW50eV9pZDgBLEJvdW50eUluZGV4AAEcY3VyYXRvcgQBMFQ6OkFjY291bnRJZAAIBHRBIGJvdW50eSBjdXJhdG9yIGlzIHByb3Bvc2VkLkRDdXJhdG9yVW5hc3NpZ25lZAQBJGJvdW50eV9pZDgBLEJvdW50eUluZGV4AAkEfEEgYm91bnR5IGN1cmF0b3IgaXMgdW5hc3NpZ25lZC48Q3VyYXRvckFjY2VwdGVkCAEkYm91bnR5X2lkOAEsQm91bnR5SW5kZXgAARxjdXJhdG9yBAEwVDo6QWNjb3VudElkAAoEdEEgYm91bnR5IGN1cmF0b3IgaXMgYWNjZXB0ZWQuMERlcG9zaXRQb2tlZBABJGJvdW50eV9pZDgBLEJvdW50eUluZGV4AAEgcHJvcG9zZXIEATBUOjpBY2NvdW50SWQAASxvbGRfZGVwb3NpdJUBATxCYWxhbmNlT2Y8VCwgST4AASxuZXdfZGVwb3NpdJUBATxCYWxhbmNlT2Y8VCwgST4ACwSAQSBib3VudHkgZGVwb3NpdCBoYXMgYmVlbiBwb2tlZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXShCQxUcGFsbGV0X2NoaWxkX2JvdW50aWVzGHBhbGxldBRFdmVudAQEVAABEBRBZGRlZAgBFGluZGV4OAEsQm91bnR5SW5kZXgAASxjaGlsZF9pbmRleDgBLEJvdW50eUluZGV4AAAEYEEgY2hpbGQtYm91bnR5IGlzIGFkZGVkLhxBd2FyZGVkDAEUaW5kZXg4ASxCb3VudHlJbmRleAABLGNoaWxkX2luZGV4OAEsQm91bnR5SW5kZXgAASxiZW5lZmljaWFyeQQBMFQ6OkFjY291bnRJZAABBKxBIGNoaWxkLWJvdW50eSBpcyBhd2FyZGVkIHRvIGEgYmVuZWZpY2lhcnkuHENsYWltZWQQARRpbmRleDgBLEJvdW50eUluZGV4AAEsY2hpbGRfaW5kZXg4ASxCb3VudHlJbmRleAABGHBheW91dJUBATBCYWxhbmNlT2Y8VD4AASxiZW5lZmljaWFyeQQBMFQ6OkFjY291bnRJZAACBKRBIGNoaWxkLWJvdW50eSBpcyBjbGFpbWVkIGJ5IGJlbmVmaWNpYXJ5LiBDYW5jZWxlZAgBFGluZGV4OAEsQm91bnR5SW5kZXgAASxjaGlsZF9pbmRleDgBLEJvdW50eUluZGV4AAMEcEEgY2hpbGQtYm91bnR5IGlzIGNhbmNlbGxlZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXSlCQxEcGFsbGV0X2Fzc2V0X3JhdGUYcGFsbGV0FEV2ZW50BARUAAEMQEFzc2V0UmF0ZUNyZWF0ZWQIAShhc3NldF9raW5kTQcBMFQ6OkFzc2V0S2luZAABEHJhdGWNBwEkRml4ZWRVMTI4AAAAQEFzc2V0UmF0ZVJlbW92ZWQEAShhc3NldF9raW5kTQcBMFQ6OkFzc2V0S2luZAABAEBBc3NldFJhdGVVcGRhdGVkDAEoYXNzZXRfa2luZE0HATBUOjpBc3NldEtpbmQAAQxvbGSNBwEkRml4ZWRVMTI4AAEMbmV3jQcBJEZpeGVkVTEyOAACAAR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldKkJDGxwYWxsZXRfbXVsdGlfYXNzZXRfYm91bnRpZXMYcGFsbGV0FEV2ZW50CARUAARJAAEwNEJvdW50eUNyZWF0ZWQEARRpbmRleDgBLEJvdW50eUluZGV4AAAE4EEgbmV3IGJvdW50eSB3YXMgY3JlYXRlZCBhbmQgZnVuZGluZyBoYXMgYmVlbiBpbml0aWF0ZWQuSENoaWxkQm91bnR5Q3JlYXRlZAgBFGluZGV4OAEsQm91bnR5SW5kZXgAASxjaGlsZF9pbmRleDgBLEJvdW50eUluZGV4AAEE+EEgbmV3IGNoaWxkLWJvdW50eSB3YXMgY3JlYXRlZCBhbmQgZnVuZGluZyBoYXMgYmVlbiBpbml0aWF0ZWQuSEJvdW50eUJlY2FtZUFjdGl2ZQwBFGluZGV4OAEsQm91bnR5SW5kZXgAASxjaGlsZF9pbmRleNgBTE9wdGlvbjxCb3VudHlJbmRleD4AARxjdXJhdG9yBAEwVDo6QWNjb3VudElkAAIE6FRoZSBjdXJhdG9yIGFjY2VwdGVkIHJvbGUgYW5kIGNoaWxkLS9ib3VudHkgYmVjYW1lIGFjdGl2ZS40Qm91bnR5QXdhcmRlZAwBFGluZGV4OAEsQm91bnR5SW5kZXgAASxjaGlsZF9pbmRleNgBTE9wdGlvbjxCb3VudHlJbmRleD4AASxiZW5lZmljaWFyeVEHAThUOjpCZW5lZmljaWFyeQADBLRBIGNoaWxkLS9ib3VudHkgd2FzIGF3YXJkZWQgdG8gYSBiZW5lZmljaWFyeS5UQm91bnR5UGF5b3V0UHJvY2Vzc2VkFAEUaW5kZXg4ASxCb3VudHlJbmRleAABLGNoaWxkX2luZGV42AFMT3B0aW9uPEJvdW50eUluZGV4PgABKGFzc2V0X2tpbmRNBwEwVDo6QXNzZXRLaW5kAAEUdmFsdWWVAQEoVDo6QmFsYW5jZQABLGJlbmVmaWNpYXJ5UQcBOFQ6OkJlbmVmaWNpYXJ5AAQE9FBheW91dCBwYXltZW50IHRvIHRoZSBiZW5lZmljaWFyeSBoYXMgY29uY2x1ZGVkIHN1Y2Nlc3NmdWxseS5YQm91bnR5RnVuZGluZ1Byb2Nlc3NlZAgBFGluZGV4OAEsQm91bnR5SW5kZXgAASxjaGlsZF9pbmRleNgBTE9wdGlvbjxCb3VudHlJbmRleD4ABQSsRnVuZGluZyBwYXltZW50IGhhcyBjb25jbHVkZWQgc3VjY2Vzc2Z1bGx5LlRCb3VudHlSZWZ1bmRQcm9jZXNzZWQIARRpbmRleDgBLEJvdW50eUluZGV4AAEsY2hpbGRfaW5kZXjYAUxPcHRpb248Qm91bnR5SW5kZXg+AAYEqFJlZnVuZCBwYXltZW50IGhhcyBjb25jbHVkZWQgc3VjY2Vzc2Z1bGx5LjhCb3VudHlDYW5jZWxlZAgBFGluZGV4OAEsQm91bnR5SW5kZXgAASxjaGlsZF9pbmRleNgBTE9wdGlvbjxCb3VudHlJbmRleD4ABwR4QSBjaGlsZC0vYm91bnR5IHdhcyBjYW5jZWxsZWQuREN1cmF0b3JVbmFzc2lnbmVkCAEUaW5kZXg4ASxCb3VudHlJbmRleAABLGNoaWxkX2luZGV42AFMT3B0aW9uPEJvdW50eUluZGV4PgAIBJxBIGNoaWxkLS9ib3VudHkgY3VyYXRvciB3YXMgdW5hc3NpZ25lZC48Q3VyYXRvclByb3Bvc2VkDAEUaW5kZXg4ASxCb3VudHlJbmRleAABLGNoaWxkX2luZGV42AFMT3B0aW9uPEJvdW50eUluZGV4PgABHGN1cmF0b3IEATBUOjpBY2NvdW50SWQACQSUQSBjaGlsZC0vYm91bnR5IGN1cmF0b3Igd2FzIHByb3Bvc2VkLjRQYXltZW50RmFpbGVkDAEUaW5kZXg4ASxCb3VudHlJbmRleAABLGNoaWxkX2luZGV42AFMT3B0aW9uPEJvdW50eUluZGV4PgABKHBheW1lbnRfaWQoAURQYXltZW50SWRPZjxULCBJPgAKBJBBIHBheW1lbnQgZmFpbGVkIGFuZCBjYW4gYmUgcmV0cmllZC4QUGFpZAwBFGluZGV4OAEsQm91bnR5SW5kZXgAASxjaGlsZF9pbmRleNgBTE9wdGlvbjxCb3VudHlJbmRleD4AAShwYXltZW50X2lkKAFEUGF5bWVudElkT2Y8VCwgST4ACwSYQSBwYXltZW50IGhhcHBlbmVkIGFuZCBjYW4gYmUgY2hlY2tlZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXStCQw0cGFsbGV0X2FoX29wcxhwYWxsZXQURXZlbnQEBFQAARBcTGVhc2VVbnJlc2VydmVSZW1haW5pbmcMASRkZXBvc2l0b3IEATBUOjpBY2NvdW50SWQAARxwYXJhX2lkoAEYUGFyYUlkAAEkcmVtYWluaW5nlQEBMEJhbGFuY2VPZjxUPgAABBEBU29tZSBsZWFzZSByZXNlcnZlIGNvdWxkIG5vdCBiZSB1bnJlc2VydmVkIGFuZCBuZWVkcyBtYW51YWwgY2xlYW51cC5sQ3Jvd2Rsb2FuVW5yZXNlcnZlUmVtYWluaW5nDAEkZGVwb3NpdG9yBAEwVDo6QWNjb3VudElkAAEccGFyYV9pZKABGFBhcmFJZAABJHJlbWFpbmluZ5UBATBCYWxhbmNlT2Y8VD4AAQRVAVNvbWUgYW1vdW50IGZvciBhIGNyb3dkbG9hbiByZXNlcnZlIGNvdWxkIG5vdCBiZSB1bnJlc2VydmVkIGFuZCBuZWVkcyBtYW51YWwgY2xlYW51cC5EU292ZXJlaWduTWlncmF0ZWQQARxwYXJhX2lk+QMBDHUxNgS8VGhlIHBhcmFjaGFpbiBJRCB0aGF0IGhhZCBpdHMgYWNjb3VudCBtaWdyYXRlZC4BEGZyb20EATBUOjpBY2NvdW50SWQEpFRoZSBvbGQgYWNjb3VudCB0aGF0IHdhcyBtaWdyYXRlZCBvdXQgb2YuAQh0bwQBMFQ6OkFjY291bnRJZAScVGhlIG5ldyBhY2NvdW50IHRoYXQgd2FzIG1pZ3JhdGVkIGludG8uATxkZXJpdmF0aW9uX3BhdGiZBwEgVmVjPHUxNj4E7FRoZSBkZXJpdmF0aW9uIHBhdGggdGhhdCB3YXMgdXNlZCB0byB0cmFuc2xhdGUgdGhlIGFjY291bnQuAgglAUEgc292ZXJlaWduIHBhcmFjaGFpbiBhY2NvdW50IGhhcyBiZWVuIG1pZ3JhdGVkIGZyb20gaXRzIGNoaWxkIHRvIHNpYmxpbmc8cmVwcmVzZW50YXRpb24uMEZhaWxlZFRvQm9uZAgBHGFjY291bnQEATBUOjpBY2NvdW50SWQAARhhbW91bnSVAQEwQmFsYW5jZU9mPFQ+AAMEmEZhaWxlZCB0byByZS1ib25kIHNvbWUgbWlncmF0ZWQgZnVuZHMuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0sQkIMGZyYW1lX3N5c3RlbRRQaGFzZQABDDhBcHBseUV4dHJpbnNpYwQAOAEMdTMyAAAAMEZpbmFsaXphdGlvbgABADhJbml0aWFsaXphdGlvbgACAAC1CQAAAvwAuQkIMGZyYW1lX3N5c3RlbVhMYXN0UnVudGltZVVwZ3JhZGVJbmZvAAAIATBzcGVjX3ZlcnNpb25kAUxjb2RlYzo6Q29tcGFjdDx1MzI+AAEkc3BlY19uYW1lvQkBRENvdzwnc3RhdGljLCBzdHI+AAC9CQQMQ293BARUAcEJAAQAwQkAAADBCQAABQIAxQkIMGZyYW1lX3N5c3RlbWBDb2RlVXBncmFkZUF1dGhvcml6YXRpb24EBFQAAAgBJGNvZGVfaGFzaEABHFQ6Okhhc2gAATRjaGVja192ZXJzaW9umQEBEGJvb2wAAMkJDDBmcmFtZV9zeXN0ZW0YbGltaXRzMEJsb2NrV2VpZ2h0cwAADAEoYmFzZV9ibG9ja3kBARhXZWlnaHQAASRtYXhfYmxvY2t5AQEYV2VpZ2h0AAEkcGVyX2NsYXNzzQkBhFBlckRpc3BhdGNoQ2xhc3M8V2VpZ2h0c1BlckNsYXNzPgAAzQkMNGZyYW1lX3N1cHBvcnQgZGlzcGF0Y2hAUGVyRGlzcGF0Y2hDbGFzcwQEVAHRCQAMARhub3JtYWzRCQEEVAABLG9wZXJhdGlvbmFs0QkBBFQAASRtYW5kYXRvcnnRCQEEVAAA0QkMMGZyYW1lX3N5c3RlbRhsaW1pdHM8V2VpZ2h0c1BlckNsYXNzAAAQAThiYXNlX2V4dHJpbnNpY3kBARhXZWlnaHQAATRtYXhfZXh0cmluc2ljdQEBOE9wdGlvbjxXZWlnaHQ+AAEkbWF4X3RvdGFsdQEBOE9wdGlvbjxXZWlnaHQ+AAEgcmVzZXJ2ZWR1AQE4T3B0aW9uPFdlaWdodD4AANUJDDBmcmFtZV9zeXN0ZW0YbGltaXRzLEJsb2NrTGVuZ3RoAAAIAQxtYXjZCQFUUGVyRGlzcGF0Y2hDbGFzczx1MzI+AAE8bWF4X2hlYWRlcl9zaXpl2AEsT3B0aW9uPHUzMj4AANkJDDRmcmFtZV9zdXBwb3J0IGRpc3BhdGNoQFBlckRpc3BhdGNoQ2xhc3MEBFQBOAAMARhub3JtYWw4AQRUAAEsb3BlcmF0aW9uYWw4AQRUAAEkbWFuZGF0b3J5OAEEVAAA3QkIKHNwX3dlaWdodHM8UnVudGltZURiV2VpZ2h0AAAIARByZWFkKAEMdTY0AAEUd3JpdGUoAQx1NjQAAOEJCChzcF92ZXJzaW9uOFJ1bnRpbWVWZXJzaW9uAAAgASRzcGVjX25hbWW9CQFEQ293PCdzdGF0aWMsIHN0cj4AASRpbXBsX25hbWW9CQFEQ293PCdzdGF0aWMsIHN0cj4AAURhdXRob3JpbmdfdmVyc2lvbjgBDHUzMgABMHNwZWNfdmVyc2lvbjgBDHUzMgABMGltcGxfdmVyc2lvbjgBDHUzMgABEGFwaXPlCQEcQXBpc1ZlYwABTHRyYW5zYWN0aW9uX3ZlcnNpb244AQx1MzIAAThzeXN0ZW1fdmVyc2lvbgwBCHU4AADlCQQMQ293BARUAekJAAQA6QkAAADpCQAAAu0JAO0JAAAECJUCOADxCQwwZnJhbWVfc3lzdGVtGHBhbGxldBRFcnJvcgQEVAABLDxJbnZhbGlkU3BlY05hbWUAAAgRAVRoZSBuYW1lIG9mIHNwZWNpZmljYXRpb24gZG9lcyBub3QgbWF0Y2ggYmV0d2VlbiB0aGUgY3VycmVudCBydW50aW1lUGFuZCB0aGUgbmV3IHJ1bnRpbWUuaFNwZWNWZXJzaW9uTmVlZHNUb0luY3JlYXNlAAEIQQFUaGUgc3BlY2lmaWNhdGlvbiB2ZXJzaW9uIGlzIG5vdCBhbGxvd2VkIHRvIGRlY3JlYXNlIGJldHdlZW4gdGhlIGN1cnJlbnQgcnVudGltZVBhbmQgdGhlIG5ldyBydW50aW1lLnRGYWlsZWRUb0V4dHJhY3RSdW50aW1lVmVyc2lvbgACDOxGYWlsZWQgdG8gZXh0cmFjdCB0aGUgcnVudGltZSB2ZXJzaW9uIGZyb20gdGhlIG5ldyBydW50aW1lLgAJAUVpdGhlciBjYWxsaW5nIGBDb3JlX3ZlcnNpb25gIG9yIGRlY29kaW5nIGBSdW50aW1lVmVyc2lvbmAgZmFpbGVkLkxOb25EZWZhdWx0Q29tcG9zaXRlAAME/FN1aWNpZGUgY2FsbGVkIHdoZW4gdGhlIGFjY291bnQgaGFzIG5vbi1kZWZhdWx0IGNvbXBvc2l0ZSBkYXRhLjxOb25aZXJvUmVmQ291bnQABAQ1AVRoZXJlIGlzIGEgbm9uLXplcm8gcmVmZXJlbmNlIGNvdW50IHByZXZlbnRpbmcgdGhlIGFjY291bnQgZnJvbSBiZWluZyBwdXJnZWQuMENhbGxGaWx0ZXJlZAAFBNBUaGUgb3JpZ2luIGZpbHRlciBwcmV2ZW50IHRoZSBjYWxsIHRvIGJlIGRpc3BhdGNoZWQubE11bHRpQmxvY2tNaWdyYXRpb25zT25nb2luZwAGBFUBQSBtdWx0aS1ibG9jayBtaWdyYXRpb24gaXMgb25nb2luZyBhbmQgcHJldmVudHMgdGhlIGN1cnJlbnQgY29kZSBmcm9tIGJlaW5nIHJlcGxhY2VkLixJbnZhbGlkVGFzawAHBJBUaGUgc3BlY2lmaWVkIFtgVGFza2BdIGlzIG5vdCB2YWxpZC4oRmFpbGVkVGFzawAIBLxUaGUgc3BlY2lmaWVkIFtgVGFza2BdIGZhaWxlZCBkdXJpbmcgZXhlY3V0aW9uLkROb3RoaW5nQXV0aG9yaXplZAAJBFhObyB1cGdyYWRlIGF1dGhvcml6ZWQuMFVuYXV0aG9yaXplZAAKBJRUaGUgc3VibWl0dGVkIGNvZGUgaXMgbm90IGF1dGhvcml6ZWQuBGxFcnJvciBmb3IgdGhlIFN5c3RlbSBwYWxsZXT1CRAoc3BfcnVudGltZRxnZW5lcmljFGJsb2NrFEJsb2NrCBhIZWFkZXIBYCRFeHRyaW5zaWMB+QkACAEYaGVhZGVyYAEYSGVhZGVyAAEoZXh0cmluc2ljcwUKAThWZWM8RXh0cmluc2ljPgAA+QkQKHNwX3J1bnRpbWUcZ2VuZXJpY0x1bmNoZWNrZWRfZXh0cmluc2ljSFVuY2hlY2tlZEV4dHJpbnNpYxAcQWRkcmVzcwEAEENhbGwBICRTaWduYXR1cmUBuQQURXh0cmEB/QkABAAYAAAA/QkIdGN1bXVsdXNfcGFsbGV0X3dlaWdodF9yZWNsYWltUFN0b3JhZ2VXZWlnaHRSZWNsYWltCARUAARTAQEKAAQAAQoBBFMAAAEKAAAEMJ0HoQelB6kHrQexB7kHvQfBB8UHyQfRBwAFCgAAAvkJAAkKDHxjdW11bHVzX3BhbGxldF9wYXJhY2hhaW5fc3lzdGVtMGJsb2NrX3dlaWdodDxCbG9ja1dlaWdodE1vZGUEBFQAAQwgRnVsbENvcmUEARxjb250ZXh0OAFEQmxvY2tOdW1iZXJGb3I8VD4AAABEUG90ZW50aWFsRnVsbENvcmUMARxjb250ZXh0OAFEQmxvY2tOdW1iZXJGb3I8VD4AAVxmaXJzdF90cmFuc2FjdGlvbl9pbmRleNgBLE9wdGlvbjx1MzI+AAE0dGFyZ2V0X3dlaWdodHkBARhXZWlnaHQAAQA4RnJhY3Rpb25PZkNvcmUIARxjb250ZXh0OAFEQmxvY2tOdW1iZXJGb3I8VD4AAVxmaXJzdF90cmFuc2FjdGlvbl9pbmRleNgBLE9wdGlvbjx1MzI+AAIAAA0KAAACEQoAEQoMfGN1bXVsdXNfcGFsbGV0X3BhcmFjaGFpbl9zeXN0ZW1IdW5pbmNsdWRlZF9zZWdtZW50IEFuY2VzdG9yBARIAUAADAE4dXNlZF9iYW5kd2lkdGgVCgE0VXNlZEJhbmR3aWR0aAABOHBhcmFfaGVhZF9oYXNoeQcBJE9wdGlvbjxIPgABYGNvbnN1bWVkX2dvX2FoZWFkX3NpZ25hbCkKAYxPcHRpb248cmVsYXlfY2hhaW46OlVwZ3JhZGVHb0FoZWFkPgAAFQoMfGN1bXVsdXNfcGFsbGV0X3BhcmFjaGFpbl9zeXN0ZW1IdW5pbmNsdWRlZF9zZWdtZW50NFVzZWRCYW5kd2lkdGgAAAwBNHVtcF9tc2dfY291bnQ4AQx1MzIAATx1bXBfdG90YWxfYnl0ZXM4AQx1MzIAATRocm1wX291dGdvaW5nGQoBjEJUcmVlTWFwPFBhcmFJZCwgSHJtcENoYW5uZWxVcGRhdGU+AAAZCgQgQlRyZWVNYXAIBEsBoARWAR0KAAQAIQoAAAAdCgx8Y3VtdWx1c19wYWxsZXRfcGFyYWNoYWluX3N5c3RlbUh1bmluY2x1ZGVkX3NlZ21lbnRESHJtcENoYW5uZWxVcGRhdGUAAAgBJG1zZ19jb3VudDgBDHUzMgABLHRvdGFsX2J5dGVzOAEMdTMyAAAhCgAAAiUKACUKAAAECKAdCgApCgQYT3B0aW9uBARUAS0KAQgQTm9uZQAAABBTb21lBAAtCgAAAQAALQoMTHBvbGthZG90X3ByaW1pdGl2ZXMIdjk4VXBncmFkZUdvQWhlYWQAAQgUQWJvcnQAAAAcR29BaGVhZAABAAAxCgx8Y3VtdWx1c19wYWxsZXRfcGFyYWNoYWluX3N5c3RlbUh1bmluY2x1ZGVkX3NlZ21lbnQ4U2VnbWVudFRyYWNrZXIEBEgBQAAMATh1c2VkX2JhbmR3aWR0aBUKATRVc2VkQmFuZHdpZHRoAAE4aHJtcF93YXRlcm1hcmvYAYBPcHRpb248cmVsYXlfY2hhaW46OkJsb2NrTnVtYmVyPgABYGNvbnN1bWVkX2dvX2FoZWFkX3NpZ25hbCkKAYxPcHRpb248cmVsYXlfY2hhaW46OlVwZ3JhZGVHb0FoZWFkPgAANQoEGE9wdGlvbgQEVAE5CgEIEE5vbmUAAAAQU29tZQQAOQoAAAEAADkKDExwb2xrYWRvdF9wcmltaXRpdmVzCHY5SFVwZ3JhZGVSZXN0cmljdGlvbgABBBxQcmVzZW50AAAAAD0KDHxjdW11bHVzX3BhbGxldF9wYXJhY2hhaW5fc3lzdGVtUHJlbGF5X3N0YXRlX3NuYXBzaG90WE1lc3NhZ2luZ1N0YXRlU25hcHNob3QAABABMGRtcV9tcWNfaGVhZEABRHJlbGF5X2NoYWluOjpIYXNoAAGccmVsYXlfZGlzcGF0Y2hfcXVldWVfcmVtYWluaW5nX2NhcGFjaXR5QQoBjFJlbGF5RGlzcGF0Y2hRdWV1ZVJlbWFpbmluZ0NhcGFjaXR5AAFAaW5ncmVzc19jaGFubmVsc0UKAYhWZWM8KFBhcmFJZCwgQWJyaWRnZWRIcm1wQ2hhbm5lbCk+AAE8ZWdyZXNzX2NoYW5uZWxzRQoBiFZlYzwoUGFyYUlkLCBBYnJpZGdlZEhybXBDaGFubmVsKT4AAEEKDHxjdW11bHVzX3BhbGxldF9wYXJhY2hhaW5fc3lzdGVtUHJlbGF5X3N0YXRlX3NuYXBzaG90jFJlbGF5RGlzcGF0Y2hRdWV1ZVJlbWFpbmluZ0NhcGFjaXR5AAAIATxyZW1haW5pbmdfY291bnQ4AQx1MzIAAThyZW1haW5pbmdfc2l6ZTgBDHUzMgAARQoAAAJJCgBJCgAABAigTQoATQoMTHBvbGthZG90X3ByaW1pdGl2ZXMIdjlMQWJyaWRnZWRIcm1wQ2hhbm5lbAAAGAEwbWF4X2NhcGFjaXR5OAEMdTMyAAE4bWF4X3RvdGFsX3NpemU4AQx1MzIAAUBtYXhfbWVzc2FnZV9zaXplOAEMdTMyAAEkbXNnX2NvdW50OAEMdTMyAAEodG90YWxfc2l6ZTgBDHUzMgABIG1xY19oZWFkeQcBME9wdGlvbjxIYXNoPgAAUQoMTHBvbGthZG90X3ByaW1pdGl2ZXMIdjlkQWJyaWRnZWRIb3N0Q29uZmlndXJhdGlvbgAAKAE0bWF4X2NvZGVfc2l6ZTgBDHUzMgABSG1heF9oZWFkX2RhdGFfc2l6ZTgBDHUzMgABWG1heF91cHdhcmRfcXVldWVfY291bnQ4AQx1MzIAAVRtYXhfdXB3YXJkX3F1ZXVlX3NpemU4AQx1MzIAAVxtYXhfdXB3YXJkX21lc3NhZ2Vfc2l6ZTgBDHUzMgABkG1heF91cHdhcmRfbWVzc2FnZV9udW1fcGVyX2NhbmRpZGF0ZTgBDHUzMgABiGhybXBfbWF4X21lc3NhZ2VfbnVtX3Blcl9jYW5kaWRhdGU4AQx1MzIAAWx2YWxpZGF0aW9uX3VwZ3JhZGVfY29vbGRvd244ASxCbG9ja051bWJlcgABYHZhbGlkYXRpb25fdXBncmFkZV9kZWxheTgBLEJsb2NrTnVtYmVyAAFQYXN5bmNfYmFja2luZ19wYXJhbXNVCgFIQXN5bmNCYWNraW5nUGFyYW1zAABVChBMcG9sa2Fkb3RfcHJpbWl0aXZlcwh2OTRhc3luY19iYWNraW5nSEFzeW5jQmFja2luZ1BhcmFtcwAACAFMbWF4X2NhbmRpZGF0ZV9kZXB0aDgBDHUzMgABUGFsbG93ZWRfYW5jZXN0cnlfbGVuOAEMdTMyAABZCgiUY3VtdWx1c19wcmltaXRpdmVzX3BhcmFjaGFpbl9pbmhlcmVudERNZXNzYWdlUXVldWVDaGFpbgAABABAASRSZWxheUhhc2gAAF0KBCBCVHJlZU1hcAgESwGgBFYBWQoABABhCgAAAGEKAAACZQoAZQoAAAQIoFkKAGkKDHxjdW11bHVzX3BhbGxldF9wYXJhY2hhaW5fc3lzdGVtSHBhcmFjaGFpbl9pbmhlcmVudEBJbmJvdW5kTWVzc2FnZUlkAAAIARxzZW50X2F0OAEsQmxvY2tOdW1iZXIAASxyZXZlcnNlX2lkeDgBDHUzMgAAbQoAAAJxCgBxCghgcG9sa2Fkb3RfY29yZV9wcmltaXRpdmVzTE91dGJvdW5kSHJtcE1lc3NhZ2UECElkAaAACAEkcmVjaXBpZW50oAEISWQAARBkYXRhGAFMYWxsb2M6OnZlYzo6VmVjPHU4PgAAdQoIfGN1bXVsdXNfcGFsbGV0X3BhcmFjaGFpbl9zeXN0ZW0sUG9WTWVzc2FnZXMAABgBaHJlbGF5X3N0b3JhZ2Vfcm9vdF9vcl9oYXNoQAFEcmVsYXlfY2hhaW46Okhhc2gAATRjb3JlX3NlbGVjdG9yDAEIdTgAATBidW5kbGVfaW5kZXgMAQh1OAABNHVtcF9tc2dfY291bnQ4AQx1MzIAAUxocm1wX291dGJvdW5kX2NvdW50OAEMdTMyAAFgaHJtcF9vdXRib3VuZF9yZWNpcGllbnRzeQoBLFZlYzxQYXJhSWQ+AAB5CgAAAqAAfQoMfGN1bXVsdXNfcGFsbGV0X3BhcmFjaGFpbl9zeXN0ZW0YcGFsbGV0FEVycm9yBARUAAEYTE92ZXJsYXBwaW5nVXBncmFkZXMAAAQZAUF0dGVtcHQgdG8gdXBncmFkZSB2YWxpZGF0aW9uIGZ1bmN0aW9uIHdoaWxlIGV4aXN0aW5nIHVwZ3JhZGUgcGVuZGluZy5QUHJvaGliaXRlZEJ5UG9sa2Fkb3QAAQRNAVBvbGthZG90IGN1cnJlbnRseSBwcm9oaWJpdHMgdGhpcyBwYXJhY2hhaW4gZnJvbSB1cGdyYWRpbmcgaXRzIHZhbGlkYXRpb24gZnVuY3Rpb24uGFRvb0JpZwACCEUBVGhlIHN1cHBsaWVkIHZhbGlkYXRpb24gZnVuY3Rpb24gaGFzIGNvbXBpbGVkIGludG8gYSBibG9iIGxhcmdlciB0aGFuIFBvbGthZG90IGlzPHdpbGxpbmcgdG8gcnVuLmhWYWxpZGF0aW9uRGF0YU5vdEF2YWlsYWJsZQADBB0BVGhlIGluaGVyZW50IHdoaWNoIHN1cHBsaWVzIHRoZSB2YWxpZGF0aW9uIGRhdGEgZGlkIG5vdCBydW4gdGhpcyBibG9jay50SG9zdENvbmZpZ3VyYXRpb25Ob3RBdmFpbGFibGUABAQpAVRoZSBpbmhlcmVudCB3aGljaCBzdXBwbGllcyB0aGUgaG9zdCBjb25maWd1cmF0aW9uIGRpZCBub3QgcnVuIHRoaXMgYmxvY2suME5vdFNjaGVkdWxlZAAFBNhObyB2YWxpZGF0aW9uIGZ1bmN0aW9uIHVwZ3JhZGUgaXMgY3VycmVudGx5IHNjaGVkdWxlZC4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQugQoMRHBhbGxldF9taWdyYXRpb25zGHBhbGxldBRFcnJvcgQEVAABBBxPbmdvaW5nAAAE6FRoZSBvcGVyYXRpb24gY2Fubm90IGNvbXBsZXRlIHNpbmNlIHNvbWUgTUJNcyBhcmUgb25nb2luZy4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuhQoIRHBhbGxldF9taWdyYXRpb25zME1ibUlzT25nb2luZwABDAxZZXMAAAAITm8AAQAUU3R1Y2sAAgAAiQoEGE9wdGlvbgQEVAGNCgEIEE5vbmUAAAAQU29tZQQAjQoAAAEAAI0KCERwYWxsZXRfbWlncmF0aW9ucyxNYm1Qcm9ncmVzcwAAEAFEY3VycmVudF9taWdyYXRpb244AQx1MzIAAUB0b3RhbF9taWdyYXRpb25zOAEMdTMyAAFcY3VycmVudF9taWdyYXRpb25fc3RlcHM4AQx1MzIAAWxjdXJyZW50X21pZ3JhdGlvbl9tYXhfc3RlcHPYASxPcHRpb248dTMyPgAAkQoIRHBhbGxldF9taWdyYXRpb25zJE1ibVN0YXR1cwAADAEcb25nb2luZ4UKATBNYm1Jc09uZ29pbmcAASBwcm9ncmVzc4kKAUxPcHRpb248TWJtUHJvZ3Jlc3M+AAEgcHJlZml4ZXM0ATBWZWM8VmVjPHU4Pj4AAJUKCDxwYWxsZXRfcHJlaW1hZ2VAT2xkUmVxdWVzdFN0YXR1cwgkQWNjb3VudElkAQQcQmFsYW5jZQGVAQEILFVucmVxdWVzdGVkCAEcZGVwb3NpdKkFAVAoQWNjb3VudElkLCBCYWxhbmNlKQABDGxlbjgBDHUzMgAAACRSZXF1ZXN0ZWQMARxkZXBvc2l0mQoBcE9wdGlvbjwoQWNjb3VudElkLCBCYWxhbmNlKT4AARRjb3VudDgBDHUzMgABDGxlbtgBLE9wdGlvbjx1MzI+AAEAAJkKBBhPcHRpb24EBFQBqQUBCBBOb25lAAAAEFNvbWUEAKkFAAABAACdCgg8cGFsbGV0X3ByZWltYWdlNFJlcXVlc3RTdGF0dXMIJEFjY291bnRJZAEEGFRpY2tldAGhCgEILFVucmVxdWVzdGVkCAEYdGlja2V0pQoBTChBY2NvdW50SWQsIFRpY2tldCkAAQxsZW44AQx1MzIAAAAkUmVxdWVzdGVkDAEwbWF5YmVfdGlja2V0qQoBbE9wdGlvbjwoQWNjb3VudElkLCBUaWNrZXQpPgABFGNvdW50OAEMdTMyAAEkbWF5YmVfbGVu2AEsT3B0aW9uPHUzMj4AAQAAoQoUNGZyYW1lX3N1cHBvcnQYdHJhaXRzGHRva2VucyBmdW5naWJsZURIb2xkQ29uc2lkZXJhdGlvbhQEQQAERgAEUgAERAAIRnAAAAQAlQEBKEY6OkJhbGFuY2UAAKUKAAAECAShCgCpCgQYT3B0aW9uBARUAaUKAQgQTm9uZQAAABBTb21lBAClCgAAAQAArQoAAAQIQDgAsQoMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AAC1Cgw8cGFsbGV0X3ByZWltYWdlGHBhbGxldBRFcnJvcgQEVAABIBhUb29CaWcAAASgUHJlaW1hZ2UgaXMgdG9vIGxhcmdlIHRvIHN0b3JlIG9uLWNoYWluLjBBbHJlYWR5Tm90ZWQAAQSkUHJlaW1hZ2UgaGFzIGFscmVhZHkgYmVlbiBub3RlZCBvbi1jaGFpbi40Tm90QXV0aG9yaXplZAACBMhUaGUgdXNlciBpcyBub3QgYXV0aG9yaXplZCB0byBwZXJmb3JtIHRoaXMgYWN0aW9uLiBOb3ROb3RlZAADBPxUaGUgcHJlaW1hZ2UgY2Fubm90IGJlIHJlbW92ZWQgc2luY2UgaXQgaGFzIG5vdCB5ZXQgYmVlbiBub3RlZC4kUmVxdWVzdGVkAAQECQFBIHByZWltYWdlIG1heSBub3QgYmUgcmVtb3ZlZCB3aGVuIHRoZXJlIGFyZSBvdXRzdGFuZGluZyByZXF1ZXN0cy4wTm90UmVxdWVzdGVkAAUELQFUaGUgcHJlaW1hZ2UgcmVxdWVzdCBjYW5ub3QgYmUgcmVtb3ZlZCBzaW5jZSBubyBvdXRzdGFuZGluZyByZXF1ZXN0cyBleGlzdC4cVG9vTWFueQAGBFUBTW9yZSB0aGFuIGBNQVhfSEFTSF9VUEdSQURFX0JVTEtfQ09VTlRgIGhhc2hlcyB3ZXJlIHJlcXVlc3RlZCB0byBiZSB1cGdyYWRlZCBhdCBvbmNlLhhUb29GZXcABwTkVG9vIGZldyBoYXNoZXMgd2VyZSByZXF1ZXN0ZWQgdG8gYmUgdXBncmFkZWQgKGkuZS4gemVybykuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LrkKDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBvQoEUwAABADFCgEYVmVjPFQ+AAC9CgQYT3B0aW9uBARUAcEKAQgQTm9uZQAAABBTb21lBADBCgAAAQAAwQoIQHBhbGxldF9zY2hlZHVsZXIkU2NoZWR1bGVkFBBOYW1lAQgQQ2FsbAFtByxCbG9ja051bWJlcgE4NFBhbGxldHNPcmlnaW4B/QMkQWNjb3VudElkAQQAFAEgbWF5YmVfaWQBBQEwT3B0aW9uPE5hbWU+AAEgcHJpb3JpdHkMAUhzY2hlZHVsZTo6UHJpb3JpdHkAARBjYWxsbQcBEENhbGwAAThtYXliZV9wZXJpb2RpY/gBlE9wdGlvbjxzY2hlZHVsZTo6UGVyaW9kPEJsb2NrTnVtYmVyPj4AARhvcmlnaW79AwE0UGFsbGV0c09yaWdpbgAAxQoAAAK9CgDJCghAcGFsbGV0X3NjaGVkdWxlcixSZXRyeUNvbmZpZwQYUGVyaW9kATgADAE0dG90YWxfcmV0cmllcwwBCHU4AAEkcmVtYWluaW5nDAEIdTgAARhwZXJpb2Q4ARhQZXJpb2QAAM0KDEBwYWxsZXRfc2NoZWR1bGVyGHBhbGxldBRFcnJvcgQEVAABFEBGYWlsZWRUb1NjaGVkdWxlAAAEZEZhaWxlZCB0byBzY2hlZHVsZSBhIGNhbGwgTm90Rm91bmQAAQR8Q2Fubm90IGZpbmQgdGhlIHNjaGVkdWxlZCBjYWxsLlxUYXJnZXRCbG9ja051bWJlckluUGFzdAACBKRHaXZlbiB0YXJnZXQgYmxvY2sgbnVtYmVyIGlzIGluIHRoZSBwYXN0LkhSZXNjaGVkdWxlTm9DaGFuZ2UAAwTwUmVzY2hlZHVsZSBmYWlsZWQgYmVjYXVzZSBpdCBkb2VzIG5vdCBjaGFuZ2Ugc2NoZWR1bGVkIHRpbWUuFE5hbWVkAAQE0EF0dGVtcHQgdG8gdXNlIGEgbm9uLW5hbWVkIGZ1bmN0aW9uIG9uIGEgbmFtZWQgdGFzay4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQu0QoMTGJvdW5kZWRfY29sbGVjdGlvbnNAd2Vha19ib3VuZGVkX3ZlYzhXZWFrQm91bmRlZFZlYwgEVAHVCgRTAAAEAN0KARhWZWM8VD4AANUKDDxwYWxsZXRfYmFsYW5jZXMUdHlwZXMsQmFsYW5jZUxvY2sEHEJhbGFuY2UBlQEADAEIaWSVAgE4TG9ja0lkZW50aWZpZXIAARhhbW91bnSVAQEcQmFsYW5jZQABHHJlYXNvbnPZCgEcUmVhc29ucwAA2QoMPHBhbGxldF9iYWxhbmNlcxR0eXBlcxxSZWFzb25zAAEMDEZlZQAAABBNaXNjAAEADEFsbAACAADdCgAAAtUKAOEKDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQB5QoEUwAABADpCgEYVmVjPFQ+AADlCgw8cGFsbGV0X2JhbGFuY2VzFHR5cGVzLFJlc2VydmVEYXRhCERSZXNlcnZlSWRlbnRpZmllcgGVAhxCYWxhbmNlAZUBAAgBCGlklQIBRFJlc2VydmVJZGVudGlmaWVyAAEYYW1vdW50lQEBHEJhbGFuY2UAAOkKAAAC5QoA7QoMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAHxCgRTAAAEAPUKARhWZWM8VD4AAPEKFDRmcmFtZV9zdXBwb3J0GHRyYWl0cxh0b2tlbnMQbWlzYyBJZEFtb3VudAgISWQBbQgcQmFsYW5jZQGVAQAIAQhpZG0IAQhJZAABGGFtb3VudJUBARxCYWxhbmNlAAD1CgAAAvEKAPkKDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQB/QoEUwAABAANCwEYVmVjPFQ+AAD9ChQ0ZnJhbWVfc3VwcG9ydBh0cmFpdHMYdG9rZW5zEG1pc2MgSWRBbW91bnQICElkAQELHEJhbGFuY2UBlQEACAEIaWQBCwEISWQAARhhbW91bnSVAQEcQmFsYW5jZQAAAQsIYGFzc2V0X2h1Yl9rdXNhbWFfcnVudGltZUxSdW50aW1lRnJlZXplUmVhc29uAAEIGFJldml2ZQQABQsBbHBhbGxldF9yZXZpdmU6OkZyZWV6ZVJlYXNvbgA8ADxOb21pbmF0aW9uUG9vbHMEAAkLAZRwYWxsZXRfbm9taW5hdGlvbl9wb29sczo6RnJlZXplUmVhc29uAFAAAAULDDRwYWxsZXRfcmV2aXZlGHBhbGxldDBGcmVlemVSZWFzb24AAQQ4UEdhc01pbkJhbGFuY2UAAAAACQsMXHBhbGxldF9ub21pbmF0aW9uX3Bvb2xzGHBhbGxldDBGcmVlemVSZWFzb24AAQQ4UG9vbE1pbkJhbGFuY2UAAAAADQsAAAL9CgARCww8cGFsbGV0X2JhbGFuY2VzGHBhbGxldBRFcnJvcggEVAAESQABMDhWZXN0aW5nQmFsYW5jZQAABJxWZXN0aW5nIGJhbGFuY2UgdG9vIGhpZ2ggdG8gc2VuZCB2YWx1ZS5UTGlxdWlkaXR5UmVzdHJpY3Rpb25zAAEEyEFjY291bnQgbGlxdWlkaXR5IHJlc3RyaWN0aW9ucyBwcmV2ZW50IHdpdGhkcmF3YWwuTEluc3VmZmljaWVudEJhbGFuY2UAAgR4QmFsYW5jZSB0b28gbG93IHRvIHNlbmQgdmFsdWUuSEV4aXN0ZW50aWFsRGVwb3NpdAADBOxWYWx1ZSB0b28gbG93IHRvIGNyZWF0ZSBhY2NvdW50IGR1ZSB0byBleGlzdGVudGlhbCBkZXBvc2l0LjRFeHBlbmRhYmlsaXR5AAQEkFRyYW5zZmVyL3BheW1lbnQgd291bGQga2lsbCBhY2NvdW50LlxFeGlzdGluZ1Zlc3RpbmdTY2hlZHVsZQAFBMxBIHZlc3Rpbmcgc2NoZWR1bGUgYWxyZWFkeSBleGlzdHMgZm9yIHRoaXMgYWNjb3VudC4sRGVhZEFjY291bnQABgSMQmVuZWZpY2lhcnkgYWNjb3VudCBtdXN0IHByZS1leGlzdC48VG9vTWFueVJlc2VydmVzAAcEuE51bWJlciBvZiBuYW1lZCByZXNlcnZlcyBleGNlZWQgYE1heFJlc2VydmVzYC4wVG9vTWFueUhvbGRzAAgE+E51bWJlciBvZiBob2xkcyBleGNlZWQgYFZhcmlhbnRDb3VudE9mPFQ6OlJ1bnRpbWVIb2xkUmVhc29uPmAuOFRvb01hbnlGcmVlemVzAAkEmE51bWJlciBvZiBmcmVlemVzIGV4Y2VlZCBgTWF4RnJlZXplc2AuTElzc3VhbmNlRGVhY3RpdmF0ZWQACgQBAVRoZSBpc3N1YW5jZSBjYW5ub3QgYmUgbW9kaWZpZWQgc2luY2UgaXQgaXMgYWxyZWFkeSBkZWFjdGl2YXRlZC4kRGVsdGFaZXJvAAsEZFRoZSBkZWx0YSBjYW5ub3QgYmUgemVyby4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuFQsIaHBhbGxldF90cmFuc2FjdGlvbl9wYXltZW50IFJlbGVhc2VzAAEIJFYxQW5jaWVudAAAAAhWMgABAAAZCxA0ZnJhbWVfc3VwcG9ydBh0cmFpdHMcc3RvcmFnZRhOb0Ryb3AEBFQBHQsABAAdCwEEVAAAHQsYNGZyYW1lX3N1cHBvcnQYdHJhaXRzGHRva2VucyBmdW5naWJsZSRpbWJhbGFuY2UkSW1iYWxhbmNlDARCAZUBGE9uRHJvcAA4T3Bwb3NpdGVPbkRyb3AAAAQBGGFtb3VudJUBAQRCAAAhCwxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAakBBFMAAAQAJQsBGFZlYzxUPgAAJQsAAAKpAQApCwg4cGFsbGV0X3Zlc3RpbmcgUmVsZWFzZXMAAQgIVjAAAAAIVjEAAQAALQsMOHBhbGxldF92ZXN0aW5nGHBhbGxldBRFcnJvcgQEVAABFChOb3RWZXN0aW5nAAAEhFRoZSBhY2NvdW50IGdpdmVuIGlzIG5vdCB2ZXN0aW5nLlRBdE1heFZlc3RpbmdTY2hlZHVsZXMAAQglAVRoZSBhY2NvdW50IGFscmVhZHkgaGFzIGBNYXhWZXN0aW5nU2NoZWR1bGVzYCBjb3VudCBvZiBzY2hlZHVsZXMgYW5kIHRodXNRAWNhbm5vdCBhZGQgYW5vdGhlciBvbmUuIENvbnNpZGVyIG1lcmdpbmcgZXhpc3Rpbmcgc2NoZWR1bGVzIGluIG9yZGVyIHRvIGFkZCBhbm90aGVyLiRBbW91bnRMb3cAAgQFAUFtb3VudCBiZWluZyB0cmFuc2ZlcnJlZCBpcyB0b28gbG93IHRvIGNyZWF0ZSBhIHZlc3Rpbmcgc2NoZWR1bGUuYFNjaGVkdWxlSW5kZXhPdXRPZkJvdW5kcwADBNBBbiBpbmRleCB3YXMgb3V0IG9mIGJvdW5kcyBvZiB0aGUgdmVzdGluZyBzY2hlZHVsZXMuVEludmFsaWRTY2hlZHVsZVBhcmFtcwAEBA0BRmFpbGVkIHRvIGNyZWF0ZSBhIG5ldyBzY2hlZHVsZSBiZWNhdXNlIHNvbWUgcGFyYW1ldGVyIHdhcyBpbnZhbGlkLgR0RXJyb3IgZm9yIHRoZSB2ZXN0aW5nIHBhbGxldC4xCxBccG9sa2Fkb3RfcnVudGltZV9jb21tb24YY2xhaW1zGHBhbGxldBRFcnJvcgQEVAABGGBJbnZhbGlkRXRoZXJldW1TaWduYXR1cmUAAARsSW52YWxpZCBFdGhlcmV1bSBzaWduYXR1cmUuQFNpZ25lckhhc05vQ2xhaW0AAQR4RXRoZXJldW0gYWRkcmVzcyBoYXMgbm8gY2xhaW0uQFNlbmRlckhhc05vQ2xhaW0AAgSwQWNjb3VudCBJRCBzZW5kaW5nIHRyYW5zYWN0aW9uIGhhcyBubyBjbGFpbS4wUG90VW5kZXJmbG93AAMISQFUaGVyZSdzIG5vdCBlbm91Z2ggaW4gdGhlIHBvdCB0byBwYXkgb3V0IHNvbWUgdW52ZXN0ZWQgYW1vdW50LiBHZW5lcmFsbHkgaW1wbGllcyBhMGxvZ2ljIGVycm9yLkBJbnZhbGlkU3RhdGVtZW50AAQEkEEgbmVlZGVkIHN0YXRlbWVudCB3YXMgbm90IGluY2x1ZGVkLkxWZXN0ZWRCYWxhbmNlRXhpc3RzAAUEpFRoZSBhY2NvdW50IGFscmVhZHkgaGFzIGEgdmVzdGVkIGJhbGFuY2UuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LjULDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBBARTAAAEAJ0BARhWZWM8VD4AADkLDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBPQsEUwAABABBCwEYVmVjPFQ+AAA9CwxkcGFsbGV0X2NvbGxhdG9yX3NlbGVjdGlvbhhwYWxsZXQ0Q2FuZGlkYXRlSW5mbwgkQWNjb3VudElkAQQcQmFsYW5jZQGVAQAIAQx3aG8EASRBY2NvdW50SWQAARxkZXBvc2l0lQEBHEJhbGFuY2UAAEELAAACPQsARQsINGZyYW1lX3N1cHBvcnQgUGFsbGV0SWQAAAQAlQIBHFt1ODsgOF0AAEkLDGRwYWxsZXRfY29sbGF0b3Jfc2VsZWN0aW9uGHBhbGxldBRFcnJvcgQEVAABRERUb29NYW55Q2FuZGlkYXRlcwAABIxUaGUgcGFsbGV0IGhhcyB0b28gbWFueSBjYW5kaWRhdGVzLlxUb29GZXdFbGlnaWJsZUNvbGxhdG9ycwABBKxMZWF2aW5nIHdvdWxkIHJlc3VsdCBpbiB0b28gZmV3IGNhbmRpZGF0ZXMuQEFscmVhZHlDYW5kaWRhdGUAAgR8QWNjb3VudCBpcyBhbHJlYWR5IGEgY2FuZGlkYXRlLjBOb3RDYW5kaWRhdGUAAwRsQWNjb3VudCBpcyBub3QgYSBjYW5kaWRhdGUuUFRvb01hbnlJbnZ1bG5lcmFibGVzAAQEhFRoZXJlIGFyZSB0b28gbWFueSBJbnZ1bG5lcmFibGVzLkxBbHJlYWR5SW52dWxuZXJhYmxlAAUEjEFjY291bnQgaXMgYWxyZWFkeSBhbiBJbnZ1bG5lcmFibGUuPE5vdEludnVsbmVyYWJsZQAGBHxBY2NvdW50IGlzIG5vdCBhbiBJbnZ1bG5lcmFibGUuXE5vQXNzb2NpYXRlZFZhbGlkYXRvcklkAAcEnEFjY291bnQgaGFzIG5vIGFzc29jaWF0ZWQgdmFsaWRhdG9yIElELlhWYWxpZGF0b3JOb3RSZWdpc3RlcmVkAAgEjFZhbGlkYXRvciBJRCBpcyBub3QgeWV0IHJlZ2lzdGVyZWQubEluc2VydFRvQ2FuZGlkYXRlTGlzdEZhaWxlZAAJBJxDb3VsZCBub3QgaW5zZXJ0IGluIHRoZSBjYW5kaWRhdGUgbGlzdC50UmVtb3ZlRnJvbUNhbmRpZGF0ZUxpc3RGYWlsZWQACgSkQ291bGQgbm90IHJlbW92ZSBmcm9tIHRoZSBjYW5kaWRhdGUgbGlzdC40RGVwb3NpdFRvb0xvdwALBPROZXcgZGVwb3NpdCBhbW91bnQgd291bGQgYmUgYmVsb3cgdGhlIG1pbmltdW0gY2FuZGlkYWN5IGJvbmQuZFVwZGF0ZUNhbmRpZGF0ZUxpc3RGYWlsZWQADASQQ291bGQgbm90IHVwZGF0ZSB0aGUgY2FuZGlkYXRlIGxpc3QuQEluc3VmZmljaWVudEJvbmQADQQpAURlcG9zaXQgYW1vdW50IGlzIHRvbyBsb3cgdG8gdGFrZSB0aGUgdGFyZ2V0J3Mgc2xvdCBpbiB0aGUgY2FuZGlkYXRlIGxpc3QuUFRhcmdldElzTm90Q2FuZGlkYXRlAA4ELQFUaGUgdGFyZ2V0IGFjY291bnQgdG8gYmUgcmVwbGFjZWQgaW4gdGhlIGNhbmRpZGF0ZSBsaXN0IGlzIG5vdCBhIGNhbmRpZGF0ZS5ASWRlbnRpY2FsRGVwb3NpdAAPBA0BVGhlIHVwZGF0ZWQgZGVwb3NpdCBhbW91bnQgaXMgZXF1YWwgdG8gdGhlIGFtb3VudCBhbHJlYWR5IHJlc2VydmVkLkBJbnZhbGlkVW5yZXNlcnZlABAEPQFDYW5ub3QgbG93ZXIgY2FuZGlkYWN5IGJvbmQgd2hpbGUgb2NjdXB5aW5nIGEgZnV0dXJlIGNvbGxhdG9yIHNsb3QgaW4gdGhlIGxpc3QuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0Lk0LAAACUQsAUQsAAAQIBNUBAFULAAACWQsAWQsAAAQIOF0LAF0LDChzcF9zdGFraW5nHG9mZmVuY2U8T2ZmZW5jZVNldmVyaXR5AAAEAD0FARxQZXJiaWxsAABhCwAABAhlCxgAZQsMHHNwX2NvcmUYY3J5cHRvJEtleVR5cGVJZAAABAB0ARxbdTg7IDRdAABpCww4cGFsbGV0X3Nlc3Npb24YcGFsbGV0FEVycm9yBARUAAEUMEludmFsaWRQcm9vZgAABGBJbnZhbGlkIG93bmVyc2hpcCBwcm9vZi5cTm9Bc3NvY2lhdGVkVmFsaWRhdG9ySWQAAQScTm8gYXNzb2NpYXRlZCB2YWxpZGF0b3IgSUQgZm9yIGFjY291bnQuNER1cGxpY2F0ZWRLZXkAAgRkUmVnaXN0ZXJlZCBkdXBsaWNhdGUga2V5LhhOb0tleXMAAwSkTm8ga2V5cyBhcmUgYXNzb2NpYXRlZCB3aXRoIHRoaXMgYWNjb3VudC4kTm9BY2NvdW50AAQEGQFLZXkgc2V0dGluZyBhY2NvdW50IGlzIG5vdCBsaXZlLCBzbyBpdCdzIGltcG9zc2libGUgdG8gYXNzb2NpYXRlIGtleXMuBHRFcnJvciBmb3IgdGhlIHNlc3Npb24gcGFsbGV0Lm0LDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQB2QEEUwAABABxCwEYVmVjPFQ+AABxCwAAAtkBAHULCEhzcF9jb25zZW5zdXNfc2xvdHMQU2xvdAAABAAoAQx1NjQAAHkLAAAECHULOAB9CwxMYm91bmRlZF9jb2xsZWN0aW9uc0Rib3VuZGVkX2J0cmVlX3NldDxCb3VuZGVkQlRyZWVTZXQIBFQBoARTAAAEAIELASxCVHJlZVNldDxUPgAAgQsEIEJUcmVlU2V0BARUAaAABAB5CgAAAIULDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBiQsEUwAABACVCwEYVmVjPFQ+AACJCwhkY3VtdWx1c19wYWxsZXRfeGNtcF9xdWV1ZVhPdXRib3VuZENoYW5uZWxEZXRhaWxzAAAYASRyZWNpcGllbnSgARhQYXJhSWQAARRzdGF0ZY0LATRPdXRib3VuZFN0YXRlAAE0c2lnbmFsc19leGlzdJkBARBib29sAAEsZmlyc3RfaW5kZXj5AwEMdTE2AAEobGFzdF9pbmRlePkDAQx1MTYAARRmbGFnc5ELAVBPdXRib3VuZENoYW5uZWxGbGFncwAAjQsIZGN1bXVsdXNfcGFsbGV0X3hjbXBfcXVldWU0T3V0Ym91bmRTdGF0ZQABCAhPawAAACRTdXNwZW5kZWQAAQAAkQsIZGN1bXVsdXNfcGFsbGV0X3hjbXBfcXVldWVQT3V0Ym91bmRDaGFubmVsRmxhZ3MAAAQBEGJpdHM4AQx1MzIAAJULAAACiQsAmQsAAAQIoPkDAJ0LDExib3VuZGVkX2NvbGxlY3Rpb25zQHdlYWtfYm91bmRlZF92ZWM4V2Vha0JvdW5kZWRWZWMIBFQBDARTAAAEABgBGFZlYzxUPgAAoQsIZGN1bXVsdXNfcGFsbGV0X3hjbXBfcXVldWU8UXVldWVDb25maWdEYXRhAAAMAURzdXNwZW5kX3RocmVzaG9sZDgBDHUzMgABOGRyb3BfdGhyZXNob2xkOAEMdTMyAAFAcmVzdW1lX3RocmVzaG9sZDgBDHUzMgAApQsMZGN1bXVsdXNfcGFsbGV0X3hjbXBfcXVldWUYcGFsbGV0FEVycm9yBARUAAEUOEJhZFF1ZXVlQ29uZmlnAAAEEQFTZXR0aW5nIHRoZSBxdWV1ZSBjb25maWcgZmFpbGVkIHNpbmNlIG9uZSBvZiBpdHMgdmFsdWVzIHdhcyBpbnZhbGlkLkBBbHJlYWR5U3VzcGVuZGVkAAEEjFRoZSBleGVjdXRpb24gaXMgYWxyZWFkeSBzdXNwZW5kZWQuOEFscmVhZHlSZXN1bWVkAAIEhFRoZSBleGVjdXRpb24gaXMgYWxyZWFkeSByZXN1bWVkLnRUb29NYW55QWN0aXZlT3V0Ym91bmRDaGFubmVscwADBLBUaGVyZSBhcmUgdG9vIG1hbnkgYWN0aXZlIG91dGJvdW5kIGNoYW5uZWxzLhhUb29CaWcABARcVGhlIG1lc3NhZ2UgaXMgdG9vIGJpZy4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuqQsMKHBhbGxldF94Y20YcGFsbGV0LFF1ZXJ5U3RhdHVzBCxCbG9ja051bWJlcgE4AQwcUGVuZGluZxABJHJlc3BvbmRlcuUBAURWZXJzaW9uZWRMb2NhdGlvbgABTG1heWJlX21hdGNoX3F1ZXJpZXKtCwFkT3B0aW9uPFZlcnNpb25lZExvY2F0aW9uPgABMG1heWJlX25vdGlmebELAUBPcHRpb248KHU4LCB1OCk+AAEcdGltZW91dDgBLEJsb2NrTnVtYmVyAAAAPFZlcnNpb25Ob3RpZmllcggBGG9yaWdpbuUBAURWZXJzaW9uZWRMb2NhdGlvbgABJGlzX2FjdGl2ZZkBARBib29sAAEAFFJlYWR5CAEgcmVzcG9uc2W5CwFEVmVyc2lvbmVkUmVzcG9uc2UAAQhhdDgBLEJsb2NrTnVtYmVyAAIAAK0LBBhPcHRpb24EBFQB5QEBCBBOb25lAAAAEFNvbWUEAOUBAAABAACxCwQYT3B0aW9uBARUAbULAQgQTm9uZQAAABBTb21lBAC1CwAAAQAAtQsAAAQIDAwAuQsIDHhjbURWZXJzaW9uZWRSZXNwb25zZQABDAhWMwQAnQIBMHYzOjpSZXNwb25zZQADAAhWNAQACQMBMHY0OjpSZXNwb25zZQAEAAhWNQQAVQMBMHY1OjpSZXNwb25zZQAFAAC9CwAABAg45QEAwQsAAAQMKHkBOADFCwxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAckLBFMAAAQAzQsBGFZlYzxUPgAAyQsAAAQI5QE4AM0LAAACyQsA0QsMKHBhbGxldF94Y20YcGFsbGV0VFZlcnNpb25NaWdyYXRpb25TdGFnZQABEFxNaWdyYXRlU3VwcG9ydGVkVmVyc2lvbgAAAFxNaWdyYXRlVmVyc2lvbk5vdGlmaWVycwABAFBOb3RpZnlDdXJyZW50VGFyZ2V0cwQA6AE8T3B0aW9uPFZlYzx1OD4+AAIAaE1pZ3JhdGVBbmROb3RpZnlPbGRUYXJnZXRzAAMAANULAAAEDDgE3QMA2QsMKHBhbGxldF94Y20YcGFsbGV0aFJlbW90ZUxvY2tlZEZ1bmdpYmxlUmVjb3JkCEhDb25zdW1lcklkZW50aWZpZXIBEDBNYXhDb25zdW1lcnMAABABGGFtb3VudJUBARB1MTI4AAEUb3duZXLlAQFEVmVyc2lvbmVkTG9jYXRpb24AARhsb2NrZXLlAQFEVmVyc2lvbmVkTG9jYXRpb24AASRjb25zdW1lcnPdCwHQQm91bmRlZFZlYzwoQ29uc3VtZXJJZGVudGlmaWVyLCB1MTI4KSwgTWF4Q29uc3VtZXJzPgAA3QsMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAHhCwRTAAAEAOULARhWZWM8VD4AAOELAAAECBCVAQDlCwAAAuELAOkLDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQB7QsEUwAABADxCwEYVmVjPFQ+AADtCwAABAiVAeUBAPELAAAC7QsA9QsIKHBhbGxldF94Y21YQXV0aG9yaXplZEFsaWFzZXNFbnRyeQgYVGlja2V0AfkLDE1BWAH9CwAIASBhbGlhc2VycwEMAXhCb3VuZGVkVmVjPE9yaWdpbkFsaWFzZXIsIE1BWD4AARh0aWNrZXT5CwEYVGlja2V0AAD5CxQ0ZnJhbWVfc3VwcG9ydBh0cmFpdHMYdG9rZW5zIGZ1bmdpYmxlREhvbGRDb25zaWRlcmF0aW9uFARBAARGAARSAAREAAhGcAAABACVAQEoRjo6QmFsYW5jZQAA/QsMKHBhbGxldF94Y20YcGFsbGV0UE1heEF1dGhvcml6ZWRBbGlhc2VzAAAAAAEMDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBBQwEUwAABAAJDAEYVmVjPFQ+AAAFDAxAeGNtX3J1bnRpbWVfYXBpc0hhdXRob3JpemVkX2FsaWFzZXM0T3JpZ2luQWxpYXNlcgAACAEgbG9jYXRpb27lAQFEVmVyc2lvbmVkTG9jYXRpb24AARhleHBpcnllAQEsT3B0aW9uPHU2ND4AAAkMAAACBQwADQwMKHBhbGxldF94Y20YcGFsbGV0FEVycm9yBARUAAFwLFVucmVhY2hhYmxlAAAIXQFUaGUgZGVzaXJlZCBkZXN0aW5hdGlvbiB3YXMgdW5yZWFjaGFibGUsIGdlbmVyYWxseSBiZWNhdXNlIHRoZXJlIGlzIGEgbm8gd2F5IG9mIHJvdXRpbmcYdG8gaXQuLFNlbmRGYWlsdXJlAAEIQQFUaGVyZSB3YXMgc29tZSBvdGhlciBpc3N1ZSAoaS5lLiBub3QgdG8gZG8gd2l0aCByb3V0aW5nKSBpbiBzZW5kaW5nIHRoZSBtZXNzYWdlLshQZXJoYXBzIGEgbGFjayBvZiBzcGFjZSBmb3IgYnVmZmVyaW5nIHRoZSBtZXNzYWdlLiBGaWx0ZXJlZAACBJxUaGUgbWVzc2FnZSBleGVjdXRpb24gZmFpbHMgdGhlIGZpbHRlci5IVW53ZWlnaGFibGVNZXNzYWdlAAMEtFRoZSBtZXNzYWdlJ3Mgd2VpZ2h0IGNvdWxkIG5vdCBiZSBkZXRlcm1pbmVkLmBEZXN0aW5hdGlvbk5vdEludmVydGlibGUABATcVGhlIGRlc3RpbmF0aW9uIGBMb2NhdGlvbmAgcHJvdmlkZWQgY2Fubm90IGJlIGludmVydGVkLhRFbXB0eQAFBIBUaGUgYXNzZXRzIHRvIGJlIHNlbnQgYXJlIGVtcHR5LjhDYW5ub3RSZWFuY2hvcgAGBDUBQ291bGQgbm90IHJlLWFuY2hvciB0aGUgYXNzZXRzIHRvIGRlY2xhcmUgdGhlIGZlZXMgZm9yIHRoZSBkZXN0aW5hdGlvbiBjaGFpbi40VG9vTWFueUFzc2V0cwAHBMRUb28gbWFueSBhc3NldHMgaGF2ZSBiZWVuIGF0dGVtcHRlZCBmb3IgdHJhbnNmZXIuNEludmFsaWRPcmlnaW4ACAR4T3JpZ2luIGlzIGludmFsaWQgZm9yIHNlbmRpbmcuKEJhZFZlcnNpb24ACQQhAVRoZSB2ZXJzaW9uIG9mIHRoZSBgVmVyc2lvbmVkYCB2YWx1ZSB1c2VkIGlzIG5vdCBhYmxlIHRvIGJlIGludGVycHJldGVkLixCYWRMb2NhdGlvbgAKCEEBVGhlIGdpdmVuIGxvY2F0aW9uIGNvdWxkIG5vdCBiZSB1c2VkIChlLmcuIGJlY2F1c2UgaXQgY2Fubm90IGJlIGV4cHJlc3NlZCBpbiB0aGVgZGVzaXJlZCB2ZXJzaW9uIG9mIFhDTSkuOE5vU3Vic2NyaXB0aW9uAAsEvFRoZSByZWZlcmVuY2VkIHN1YnNjcmlwdGlvbiBjb3VsZCBub3QgYmUgZm91bmQuREFscmVhZHlTdWJzY3JpYmVkAAwEEQFUaGUgbG9jYXRpb24gaXMgaW52YWxpZCBzaW5jZSBpdCBhbHJlYWR5IGhhcyBhIHN1YnNjcmlwdGlvbiBmcm9tIHVzLlhDYW5ub3RDaGVja091dFRlbGVwb3J0AA0EKQFDb3VsZCBub3QgY2hlY2stb3V0IHRoZSBhc3NldHMgZm9yIHRlbGVwb3J0YXRpb24gdG8gdGhlIGRlc3RpbmF0aW9uIGNoYWluLihMb3dCYWxhbmNlAA4EQQFUaGUgb3duZXIgZG9lcyBub3Qgb3duIChhbGwpIG9mIHRoZSBhc3NldCB0aGF0IHRoZXkgd2lzaCB0byBkbyB0aGUgb3BlcmF0aW9uIG9uLjBUb29NYW55TG9ja3MADwTAVGhlIGFzc2V0IG93bmVyIGhhcyB0b28gbWFueSBsb2NrcyBvbiB0aGUgYXNzZXQuTEFjY291bnROb3RTb3ZlcmVpZ24AEAQxAVRoZSBnaXZlbiBhY2NvdW50IGlzIG5vdCBhbiBpZGVudGlmaWFibGUgc292ZXJlaWduIGFjY291bnQgZm9yIGFueSBsb2NhdGlvbi4oRmVlc05vdE1ldAARBCkBVGhlIG9wZXJhdGlvbiByZXF1aXJlZCBmZWVzIHRvIGJlIHBhaWQgd2hpY2ggdGhlIGluaXRpYXRvciBjb3VsZCBub3QgbWVldC4wTG9ja05vdEZvdW5kABIE9EEgcmVtb3RlIGxvY2sgd2l0aCB0aGUgY29ycmVzcG9uZGluZyBkYXRhIGNvdWxkIG5vdCBiZSBmb3VuZC4USW5Vc2UAEwRJAVRoZSB1bmxvY2sgb3BlcmF0aW9uIGNhbm5vdCBzdWNjZWVkIGJlY2F1c2UgdGhlcmUgYXJlIHN0aWxsIGNvbnN1bWVycyBvZiB0aGUgbG9jay5oSW52YWxpZEFzc2V0VW5rbm93blJlc2VydmUAFQTwSW52YWxpZCBhc3NldCwgcmVzZXJ2ZSBjaGFpbiBjb3VsZCBub3QgYmUgZGV0ZXJtaW5lZCBmb3IgaXQueEludmFsaWRBc3NldFVuc3VwcG9ydGVkUmVzZXJ2ZQAWBEUBSW52YWxpZCBhc3NldCwgZG8gbm90IHN1cHBvcnQgcmVtb3RlIGFzc2V0IHJlc2VydmVzIHdpdGggZGlmZmVyZW50IGZlZXMgcmVzZXJ2ZXMuPFRvb01hbnlSZXNlcnZlcwAXBEkBVG9vIG1hbnkgYXNzZXRzIHdpdGggZGlmZmVyZW50IHJlc2VydmUgbG9jYXRpb25zIGhhdmUgYmVlbiBhdHRlbXB0ZWQgZm9yIHRyYW5zZmVyLmBMb2NhbEV4ZWN1dGlvbkluY29tcGxldGUAGAR8TG9jYWwgWENNIGV4ZWN1dGlvbiBpbmNvbXBsZXRlLmBUb29NYW55QXV0aG9yaXplZEFsaWFzZXMAGQS4VG9vIG1hbnkgbG9jYXRpb25zIGF1dGhvcml6ZWQgdG8gYWxpYXMgb3JpZ2luLjRFeHBpcmVzSW5QYXN0ABoEjEV4cGlyeSBibG9jayBudW1iZXIgaXMgaW4gdGhlIHBhc3QuNEFsaWFzTm90Rm91bmQAGwTQVGhlIGFsaWFzIHRvIHJlbW92ZSBhdXRob3JpemF0aW9uIGZvciB3YXMgbm90IGZvdW5kLoRMb2NhbEV4ZWN1dGlvbkluY29tcGxldGVXaXRoRXJyb3IIARRpbmRleAwBQEluc3RydWN0aW9uSW5kZXgAARRlcnJvchEMAThFeGVjdXRpb25FcnJvcgAcCDUBTG9jYWwgWENNIGV4ZWN1dGlvbiBpbmNvbXBsZXRlIHdpdGggdGhlIGFjdHVhbCBYQ00gZXJyb3IgYW5kIHRoZSBpbmRleCBvZiB0aGWIaW5zdHJ1Y3Rpb24gdGhhdCBjYXVzZWQgdGhlIGVycm9yLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC4RDAwocGFsbGV0X3hjbRhlcnJvcnM4RXhlY3V0aW9uRXJyb3IAAaQgT3ZlcmZsb3cAAAA0VW5pbXBsZW1lbnRlZAABAGBVbnRydXN0ZWRSZXNlcnZlTG9jYXRpb24AAgBkVW50cnVzdGVkVGVsZXBvcnRMb2NhdGlvbgADADBMb2NhdGlvbkZ1bGwABABUTG9jYXRpb25Ob3RJbnZlcnRpYmxlAAUAJEJhZE9yaWdpbgAGADxJbnZhbGlkTG9jYXRpb24ABwA0QXNzZXROb3RGb3VuZAAIAFRGYWlsZWRUb1RyYW5zYWN0QXNzZXQACQA8Tm90V2l0aGRyYXdhYmxlAAoASExvY2F0aW9uQ2Fubm90SG9sZAALAFRFeGNlZWRzTWF4TWVzc2FnZVNpemUADABYRGVzdGluYXRpb25VbnN1cHBvcnRlZAANACRUcmFuc3BvcnQADgAoVW5yb3V0YWJsZQAPADBVbmtub3duQ2xhaW0AEAA4RmFpbGVkVG9EZWNvZGUAEQBATWF4V2VpZ2h0SW52YWxpZAASADhOb3RIb2xkaW5nRmVlcwATADBUb29FeHBlbnNpdmUAFAAQVHJhcAAVAEBFeHBlY3RhdGlvbkZhbHNlABYAOFBhbGxldE5vdEZvdW5kABcAME5hbWVNaXNtYXRjaAAYAExWZXJzaW9uSW5jb21wYXRpYmxlABkAUEhvbGRpbmdXb3VsZE92ZXJmbG93ABoALEV4cG9ydEVycm9yABsAOFJlYW5jaG9yRmFpbGVkABwAGE5vRGVhbAAdAChGZWVzTm90TWV0AB4AJExvY2tFcnJvcgAfADBOb1Blcm1pc3Npb24AIAAoVW5hbmNob3JlZAAhADhOb3REZXBvc2l0YWJsZQAiADRUb29NYW55QXNzZXRzACMATFVuaGFuZGxlZFhjbVZlcnNpb24AJABIV2VpZ2h0TGltaXRSZWFjaGVkACUAHEJhcnJpZXIAJgBMV2VpZ2h0Tm90Q29tcHV0YWJsZQAnAERFeGNlZWRzU3RhY2tMaW1pdAAoAAAVDAhgYnBfeGNtX2JyaWRnZV9odWJfcm91dGVyLEJyaWRnZVN0YXRlAAAIAUxkZWxpdmVyeV9mZWVfZmFjdG9yjQcBJEZpeGVkVTEyOAABMGlzX2Nvbmdlc3RlZJkBARBib29sAAAZDAhQcGFsbGV0X21lc3NhZ2VfcXVldWUkQm9va1N0YXRlBDRNZXNzYWdlT3JpZ2luAe0DABgBFGJlZ2luOAEkUGFnZUluZGV4AAEMZW5kOAEkUGFnZUluZGV4AAEUY291bnQ4ASRQYWdlSW5kZXgAAUByZWFkeV9uZWlnaGJvdXJzHQwBhE9wdGlvbjxOZWlnaGJvdXJzPE1lc3NhZ2VPcmlnaW4+PgABNG1lc3NhZ2VfY291bnQoAQx1NjQAARBzaXplKAEMdTY0AAAdDAQYT3B0aW9uBARUASEMAQgQTm9uZQAAABBTb21lBAAhDAAAAQAAIQwIUHBhbGxldF9tZXNzYWdlX3F1ZXVlKE5laWdoYm91cnMENE1lc3NhZ2VPcmlnaW4B7QMACAEQcHJldu0DATRNZXNzYWdlT3JpZ2luAAEQbmV4dO0DATRNZXNzYWdlT3JpZ2luAAAlDAAABAjtAzgAKQwIUHBhbGxldF9tZXNzYWdlX3F1ZXVlEFBhZ2UIEFNpemUBOCBIZWFwU2l6ZQAAGAEkcmVtYWluaW5nOAEQU2l6ZQABOHJlbWFpbmluZ19zaXplOAEQU2l6ZQABLGZpcnN0X2luZGV4OAEQU2l6ZQABFGZpcnN0OAEQU2l6ZQABEGxhc3Q4ARBTaXplAAEQaGVhcC0MAZxCb3VuZGVkVmVjPHU4LCBJbnRvVTMyPEhlYXBTaXplLCBTaXplPj4AAC0MDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBDARTAAAEABgBGFZlYzxUPgAAMQwMUHBhbGxldF9tZXNzYWdlX3F1ZXVlGHBhbGxldBRFcnJvcgQEVAABJCxOb3RSZWFwYWJsZQAACEkBUGFnZSBpcyBub3QgcmVhcGFibGUgYmVjYXVzZSBpdCBoYXMgaXRlbXMgcmVtYWluaW5nIHRvIGJlIHByb2Nlc3NlZCBhbmQgaXMgbm90IG9sZBxlbm91Z2guGE5vUGFnZQABBIRQYWdlIHRvIGJlIHJlYXBlZCBkb2VzIG5vdCBleGlzdC4kTm9NZXNzYWdlAAIEqFRoZSByZWZlcmVuY2VkIG1lc3NhZ2UgY291bGQgbm90IGJlIGZvdW5kLkBBbHJlYWR5UHJvY2Vzc2VkAAMEAQFUaGUgbWVzc2FnZSB3YXMgYWxyZWFkeSBwcm9jZXNzZWQgYW5kIGNhbm5vdCBiZSBwcm9jZXNzZWQgYWdhaW4uGFF1ZXVlZAAEBKxUaGUgbWVzc2FnZSBpcyBxdWV1ZWQgZm9yIGZ1dHVyZSBleGVjdXRpb24uSEluc3VmZmljaWVudFdlaWdodAAFBBkBVGhlcmUgaXMgdGVtcG9yYXJpbHkgbm90IGVub3VnaCB3ZWlnaHQgdG8gY29udGludWUgc2VydmljaW5nIG1lc3NhZ2VzLmBUZW1wb3JhcmlseVVucHJvY2Vzc2FibGUABhCoVGhpcyBtZXNzYWdlIGlzIHRlbXBvcmFyaWx5IHVucHJvY2Vzc2FibGUuAFkBU3VjaCBlcnJvcnMgYXJlIGV4cGVjdGVkLCBidXQgbm90IGd1YXJhbnRlZWQsIHRvIHJlc29sdmUgdGhlbXNlbHZlcyBldmVudHVhbGx5IHRocm91Z2gkcmV0cnlpbmcuLFF1ZXVlUGF1c2VkAAcM7FRoZSBxdWV1ZSBpcyBwYXVzZWQgYW5kIG5vIG1lc3NhZ2UgY2FuIGJlIGV4ZWN1dGVkIGZyb20gaXQuAB0BVGhpcyBjYW4gY2hhbmdlIGF0IGFueSB0aW1lIGFuZCBtYXkgcmVzb2x2ZSBpbiB0aGUgZnV0dXJlIGJ5IHJlLXRyeWluZy5MUmVjdXJzaXZlRGlzYWxsb3dlZAAIBDEBQW5vdGhlciBjYWxsIGlzIGluIHByb2dyZXNzIGFuZCBuZWVkcyB0byBmaW5pc2ggYmVmb3JlIHRoaXMgY2FsbCBjYW4gaGFwcGVuLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC41DAw4cGFsbGV0X3V0aWxpdHkYcGFsbGV0FEVycm9yBARUAAEEMFRvb01hbnlDYWxscwAABFxUb28gbWFueSBjYWxscyBiYXRjaGVkLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC45DAAABAgECAA9DAg8cGFsbGV0X211bHRpc2lnIE11bHRpc2lnECxCbG9ja051bWJlcgE4HEJhbGFuY2UBlQEkQWNjb3VudElkAQQwTWF4QXBwcm92YWxzAAAQARB3aGVuIQQBWFRpbWVwb2ludDxCbG9ja051bWJlcj4AARxkZXBvc2l0lQEBHEJhbGFuY2UAASRkZXBvc2l0b3IEASRBY2NvdW50SWQAASRhcHByb3ZhbHNBDAGMQm91bmRlZFZlYzxBY2NvdW50SWQsIE1heEFwcHJvdmFscz4AAEEMDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBBARTAAAEAJ0BARhWZWM8VD4AAEUMDDxwYWxsZXRfbXVsdGlzaWcYcGFsbGV0FEVycm9yBARUAAE4QE1pbmltdW1UaHJlc2hvbGQAAAR8VGhyZXNob2xkIG11c3QgYmUgMiBvciBncmVhdGVyLjxBbHJlYWR5QXBwcm92ZWQAAQSsQ2FsbCBpcyBhbHJlYWR5IGFwcHJvdmVkIGJ5IHRoaXMgc2lnbmF0b3J5LkROb0FwcHJvdmFsc05lZWRlZAACBJxDYWxsIGRvZXNuJ3QgbmVlZCBhbnkgKG1vcmUpIGFwcHJvdmFscy5EVG9vRmV3U2lnbmF0b3JpZXMAAwSoVGhlcmUgYXJlIHRvbyBmZXcgc2lnbmF0b3JpZXMgaW4gdGhlIGxpc3QuSFRvb01hbnlTaWduYXRvcmllcwAEBKxUaGVyZSBhcmUgdG9vIG1hbnkgc2lnbmF0b3JpZXMgaW4gdGhlIGxpc3QuVFNpZ25hdG9yaWVzT3V0T2ZPcmRlcgAFBA0BVGhlIHNpZ25hdG9yaWVzIHdlcmUgcHJvdmlkZWQgb3V0IG9mIG9yZGVyOyB0aGV5IHNob3VsZCBiZSBvcmRlcmVkLkxTZW5kZXJJblNpZ25hdG9yaWVzAAYEDQFUaGUgc2VuZGVyIHdhcyBjb250YWluZWQgaW4gdGhlIG90aGVyIHNpZ25hdG9yaWVzOyBpdCBzaG91bGRuJ3QgYmUuIE5vdEZvdW5kAAcEoE11bHRpc2lnIG9wZXJhdGlvbiBub3QgZm91bmQgaW4gc3RvcmFnZS4gTm90T3duZXIACAhRAU9ubHkgdGhlIGFjY291bnQgdGhhdCBvcmlnaW5hbGx5IGNyZWF0ZWQgdGhlIG11bHRpc2lnIGlzIGFibGUgdG8gY2FuY2VsIGl0IG9yIHVwZGF0ZTRpdHMgZGVwb3NpdHMuLE5vVGltZXBvaW50AAkEHQFObyB0aW1lcG9pbnQgd2FzIGdpdmVuLCB5ZXQgdGhlIG11bHRpc2lnIG9wZXJhdGlvbiBpcyBhbHJlYWR5IHVuZGVyd2F5LjhXcm9uZ1RpbWVwb2ludAAKBC0BQSBkaWZmZXJlbnQgdGltZXBvaW50IHdhcyBnaXZlbiB0byB0aGUgbXVsdGlzaWcgb3BlcmF0aW9uIHRoYXQgaXMgdW5kZXJ3YXkuTFVuZXhwZWN0ZWRUaW1lcG9pbnQACwT0QSB0aW1lcG9pbnQgd2FzIGdpdmVuLCB5ZXQgbm8gbXVsdGlzaWcgb3BlcmF0aW9uIGlzIHVuZGVyd2F5LjxNYXhXZWlnaHRUb29Mb3cADATQVGhlIG1heGltdW0gd2VpZ2h0IGluZm9ybWF0aW9uIHByb3ZpZGVkIHdhcyB0b28gbG93LjRBbHJlYWR5U3RvcmVkAA0EoFRoZSBkYXRhIHRvIGJlIHN0b3JlZCBpcyBhbHJlYWR5IHN0b3JlZC4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuSQwAAAQITQyVAQBNDAxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAVEMBFMAAAQAVQwBGFZlYzxUPgAAUQwIMHBhbGxldF9wcm94eTxQcm94eURlZmluaXRpb24MJEFjY291bnRJZAEEJFByb3h5VHlwZQEtBCxCbG9ja051bWJlcgE4AAwBIGRlbGVnYXRlBAEkQWNjb3VudElkAAEocHJveHlfdHlwZS0EASRQcm94eVR5cGUAARRkZWxheTgBLEJsb2NrTnVtYmVyAABVDAAAAlEMAFkMAAAECF0MlQEAXQwMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAFhDARTAAAEAGUMARhWZWM8VD4AAGEMCDBwYWxsZXRfcHJveHkwQW5ub3VuY2VtZW50DCRBY2NvdW50SWQBBBBIYXNoAUAsQmxvY2tOdW1iZXIBOAAMARByZWFsBAEkQWNjb3VudElkAAEkY2FsbF9oYXNoQAEQSGFzaAABGGhlaWdodDgBLEJsb2NrTnVtYmVyAABlDAAAAmEMAGkMDDBwYWxsZXRfcHJveHkYcGFsbGV0FEVycm9yBARUAAEgHFRvb01hbnkAAAQhAVRoZXJlIGFyZSB0b28gbWFueSBwcm94aWVzIHJlZ2lzdGVyZWQgb3IgdG9vIG1hbnkgYW5ub3VuY2VtZW50cyBwZW5kaW5nLiBOb3RGb3VuZAABBHRQcm94eSByZWdpc3RyYXRpb24gbm90IGZvdW5kLiBOb3RQcm94eQACBMxTZW5kZXIgaXMgbm90IGEgcHJveHkgb2YgdGhlIGFjY291bnQgdG8gYmUgcHJveGllZC4sVW5wcm94eWFibGUAAwQhAUEgY2FsbCB3aGljaCBpcyBpbmNvbXBhdGlibGUgd2l0aCB0aGUgcHJveHkgdHlwZSdzIGZpbHRlciB3YXMgYXR0ZW1wdGVkLiREdXBsaWNhdGUABARsQWNjb3VudCBpcyBhbHJlYWR5IGEgcHJveHkuME5vUGVybWlzc2lvbgAFBBUBQ2FsbCBtYXkgbm90IGJlIG1hZGUgYnkgcHJveHkgYmVjYXVzZSBpdCBtYXkgZXNjYWxhdGUgaXRzIHByaXZpbGVnZXMuLFVuYW5ub3VuY2VkAAYE0EFubm91bmNlbWVudCwgaWYgbWFkZSBhdCBhbGwsIHdhcyBtYWRlIHRvbyByZWNlbnRseS4sTm9TZWxmUHJveHkABwRkQ2Fubm90IGFkZCBzZWxmIGFzIHByb3h5LgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC5tDAxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAXEMBFMAAAQAdQwBGFZlYzxUPgAAcQwAAAQIOEAAdQwAAAJxDAB5DAxMcGFsbGV0X3JlbW90ZV9wcm94eRhwYWxsZXQURXJyb3IIBFQABEkAARyUQ291bGROb3RDb252ZXJ0TG9jYWxUb1JlbW90ZUFjY291bnRJZAAABAkBVGhlIGxvY2FsIGFjY291bnQgaWQgY291bGQgbm90IGNvbnZlcnRlZCB0byB0aGUgcmVtb3RlIGFjY291bnQgaWQuXFVua25vd25Qcm9vZkFuY2hvckJsb2NrAAEEwFRoZSBhbmNob3IgYmxvY2sgb2YgdGhlIHJlbW90ZSBwcm9vZiBpcyB1bmtub3duLjBJbnZhbGlkUHJvb2YAAgTUVGhlIHByb3h5IGRlZmluaXRpb24gY291bGQgbm90IGJlIGZvdW5kIGluIHRoZSBwcm9vZi50UHJveHlEZWZpbml0aW9uRGVjb2RpbmdGYWlsZWQAAwTwRmFpbGVkIHRvIGRlY29kZSB0aGUgcmVtb3RlIHByb3h5IGRlZmluaXRpb24gZnJvbSB0aGUgcHJvb2YuLFVuYW5ub3VuY2VkAAQE0EFubm91bmNlbWVudCwgaWYgbWFkZSBhdCBhbGwsIHdhcyBtYWRlIHRvbyByZWNlbnRseS6ERGlkTm90RmluZE1hdGNoaW5nUHJveHlEZWZpbml0aW9uAAUE6ENvdWxkIG5vdCBmaW5kIGFueSBtYXRjaGluZyBwcm94eSBkZWZpbml0aW9uIGluIHRoZSBwcm9vZi5cUHJveHlQcm9vZk5vdFJlZ2lzdGVyZWQABgRsUHJveHkgcHJvb2Ygbm90IHJlZ2lzdGVyZWQuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0Ln0MAAAEDASVAZkBAIEMDDhwYWxsZXRfaW5kaWNlcxhwYWxsZXQURXJyb3IEBFQAARQsTm90QXNzaWduZWQAAASMVGhlIGluZGV4IHdhcyBub3QgYWxyZWFkeSBhc3NpZ25lZC4gTm90T3duZXIAAQSkVGhlIGluZGV4IGlzIGFzc2lnbmVkIHRvIGFub3RoZXIgYWNjb3VudC4USW5Vc2UAAgRwVGhlIGluZGV4IHdhcyBub3QgYXZhaWxhYmxlLixOb3RUcmFuc2ZlcgADBMhUaGUgc291cmNlIGFuZCBkZXN0aW5hdGlvbiBhY2NvdW50cyBhcmUgaWRlbnRpY2FsLiRQZXJtYW5lbnQABATQVGhlIGluZGV4IGlzIHBlcm1hbmVudCBhbmQgbWF5IG5vdCBiZSBmcmVlZC9jaGFuZ2VkLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC6FDAw0cGFsbGV0X2Fzc2V0cxR0eXBlczBBc3NldERldGFpbHMMHEJhbGFuY2UBlQEkQWNjb3VudElkAQQ4RGVwb3NpdEJhbGFuY2UBlQEAMAEUb3duZXIEASRBY2NvdW50SWQAARhpc3N1ZXIEASRBY2NvdW50SWQAARRhZG1pbgQBJEFjY291bnRJZAABHGZyZWV6ZXIEASRBY2NvdW50SWQAARhzdXBwbHmVAQEcQmFsYW5jZQABHGRlcG9zaXSVAQE4RGVwb3NpdEJhbGFuY2UAASxtaW5fYmFsYW5jZZUBARxCYWxhbmNlAAE0aXNfc3VmZmljaWVudJkBARBib29sAAEgYWNjb3VudHM4AQx1MzIAASxzdWZmaWNpZW50czgBDHUzMgABJGFwcHJvdmFsczgBDHUzMgABGHN0YXR1c4kMASxBc3NldFN0YXR1cwAAiQwMNHBhbGxldF9hc3NldHMUdHlwZXMsQXNzZXRTdGF0dXMAAQwQTGl2ZQAAABhGcm96ZW4AAQAoRGVzdHJveWluZwACAACNDAAABAg4BACRDAw0cGFsbGV0X2Fzc2V0cxR0eXBlczBBc3NldEFjY291bnQQHEJhbGFuY2UBlQE4RGVwb3NpdEJhbGFuY2UBlQEURXh0cmEBECRBY2NvdW50SWQBBAAQARxiYWxhbmNllQEBHEJhbGFuY2UAARhzdGF0dXOVDAE0QWNjb3VudFN0YXR1cwABGHJlYXNvbpkMAahFeGlzdGVuY2VSZWFzb248RGVwb3NpdEJhbGFuY2UsIEFjY291bnRJZD4AARRleHRyYRABFEV4dHJhAACVDAw0cGFsbGV0X2Fzc2V0cxR0eXBlczRBY2NvdW50U3RhdHVzAAEMGExpcXVpZAAAABhGcm96ZW4AAQAcQmxvY2tlZAACAACZDAw0cGFsbGV0X2Fzc2V0cxR0eXBlczxFeGlzdGVuY2VSZWFzb24IHEJhbGFuY2UBlQEkQWNjb3VudElkAQQBFCBDb25zdW1lcgAAAChTdWZmaWNpZW50AAEALERlcG9zaXRIZWxkBACVAQEcQmFsYW5jZQACADxEZXBvc2l0UmVmdW5kZWQAAwAsRGVwb3NpdEZyb20IAAQBJEFjY291bnRJZAAAlQEBHEJhbGFuY2UABAAAnQwAAAQMOAQEAKEMDDRwYWxsZXRfYXNzZXRzFHR5cGVzIEFwcHJvdmFsCBxCYWxhbmNlAZUBOERlcG9zaXRCYWxhbmNlAZUBAAgBGGFtb3VudJUBARxCYWxhbmNlAAEcZGVwb3NpdJUBAThEZXBvc2l0QmFsYW5jZQAApQwMNHBhbGxldF9hc3NldHMUdHlwZXM0QXNzZXRNZXRhZGF0YQg4RGVwb3NpdEJhbGFuY2UBlQE0Qm91bmRlZFN0cmluZwGpDAAUARxkZXBvc2l0lQEBOERlcG9zaXRCYWxhbmNlAAEQbmFtZakMATRCb3VuZGVkU3RyaW5nAAEYc3ltYm9sqQwBNEJvdW5kZWRTdHJpbmcAASBkZWNpbWFscwwBCHU4AAEkaXNfZnJvemVumQEBEGJvb2wAAKkMDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBDARTAAAEABgBGFZlYzxUPgAArQwMNHBhbGxldF9hc3NldHMYcGFsbGV0FEVycm9yCARUAARJAAFgKEJhbGFuY2VMb3cAAAQVAUFjY291bnQgYmFsYW5jZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0aGUgdHJhbnNmZXIgYW1vdW50LiROb0FjY291bnQAAQSQVGhlIGFjY291bnQgdG8gYWx0ZXIgZG9lcyBub3QgZXhpc3QuME5vUGVybWlzc2lvbgACBOhUaGUgc2lnbmluZyBhY2NvdW50IGhhcyBubyBwZXJtaXNzaW9uIHRvIGRvIHRoZSBvcGVyYXRpb24uHFVua25vd24AAwR4VGhlIGdpdmVuIGFzc2V0IElEIGlzIHVua25vd24uGEZyb3plbgAEBHRUaGUgb3JpZ2luIGFjY291bnQgaXMgZnJvemVuLhRJblVzZQAFBHhUaGUgYXNzZXQgSUQgaXMgYWxyZWFkeSB0YWtlbi4oQmFkV2l0bmVzcwAGBGxJbnZhbGlkIHdpdG5lc3MgZGF0YSBnaXZlbi44TWluQmFsYW5jZVplcm8ABwSMTWluaW11bSBiYWxhbmNlIHNob3VsZCBiZSBub24temVyby5MVW5hdmFpbGFibGVDb25zdW1lcgAIDFkBVW5hYmxlIHRvIGluY3JlbWVudCB0aGUgY29uc3VtZXIgcmVmZXJlbmNlIGNvdW50ZXJzIG9uIHRoZSBhY2NvdW50LiBFaXRoZXIgbm8gcHJvdmlkZXJNAXJlZmVyZW5jZSBleGlzdHMgdG8gYWxsb3cgYSBub24temVybyBiYWxhbmNlIG9mIGEgbm9uLXNlbGYtc3VmZmljaWVudCBhc3NldCwgb3Igb25l8GZld2VyIHRoZW4gdGhlIG1heGltdW0gbnVtYmVyIG9mIGNvbnN1bWVycyBoYXMgYmVlbiByZWFjaGVkLixCYWRNZXRhZGF0YQAJBFxJbnZhbGlkIG1ldGFkYXRhIGdpdmVuLihVbmFwcHJvdmVkAAoExE5vIGFwcHJvdmFsIGV4aXN0cyB0aGF0IHdvdWxkIGFsbG93IHRoZSB0cmFuc2Zlci4gV291bGREaWUACwQ1AVRoZSBzb3VyY2UgYWNjb3VudCB3b3VsZCBub3Qgc3Vydml2ZSB0aGUgdHJhbnNmZXIgYW5kIGl0IG5lZWRzIHRvIHN0YXkgYWxpdmUuNEFscmVhZHlFeGlzdHMADASEVGhlIGFzc2V0LWFjY291bnQgYWxyZWFkeSBleGlzdHMuJE5vRGVwb3NpdAANBNRUaGUgYXNzZXQtYWNjb3VudCBkb2Vzbid0IGhhdmUgYW4gYXNzb2NpYXRlZCBkZXBvc2l0LiRXb3VsZEJ1cm4ADgTEVGhlIG9wZXJhdGlvbiB3b3VsZCByZXN1bHQgaW4gZnVuZHMgYmVpbmcgYnVybmVkLiRMaXZlQXNzZXQADwhZAVRoZSBhc3NldCBpcyBhIGxpdmUgYXNzZXQgYW5kIGlzIGFjdGl2ZWx5IGJlaW5nIHVzZWQuIFVzdWFsbHkgZW1pdCBmb3Igb3BlcmF0aW9ucyBzdWNoHQFhcyBgc3RhcnRfZGVzdHJveWAgd2hpY2ggcmVxdWlyZSB0aGUgYXNzZXQgdG8gYmUgaW4gYSBkZXN0cm95aW5nIHN0YXRlLjBBc3NldE5vdExpdmUAEATIVGhlIGFzc2V0IGlzIG5vdCBsaXZlLCBhbmQgbGlrZWx5IGJlaW5nIGRlc3Ryb3llZC48SW5jb3JyZWN0U3RhdHVzABEEsFRoZSBhc3NldCBzdGF0dXMgaXMgbm90IHRoZSBleHBlY3RlZCBzdGF0dXMuJE5vdEZyb3plbgASBNhUaGUgYXNzZXQgc2hvdWxkIGJlIGZyb3plbiBiZWZvcmUgdGhlIGdpdmVuIG9wZXJhdGlvbi44Q2FsbGJhY2tGYWlsZWQAEwSEQ2FsbGJhY2sgYWN0aW9uIHJlc3VsdGVkIGluIGVycm9yKEJhZEFzc2V0SWQAFATIVGhlIGFzc2V0IElEIG11c3QgYmUgZXF1YWwgdG8gdGhlIFtgTmV4dEFzc2V0SWRgXS48Q29udGFpbnNGcmVlemVzABUETQFUaGUgYXNzZXQgY2Fubm90IGJlIGRlc3Ryb3llZCBiZWNhdXNlIHNvbWUgYWNjb3VudHMgZm9yIHRoaXMgYXNzZXQgY29udGFpbiBmcmVlemVzLjRDb250YWluc0hvbGRzABYERQFUaGUgYXNzZXQgY2Fubm90IGJlIGRlc3Ryb3llZCBiZWNhdXNlIHNvbWUgYWNjb3VudHMgZm9yIHRoaXMgYXNzZXQgY29udGFpbiBob2xkcy48VG9vTWFueVJlc2VydmVzABcEgFRyaWVkIHNldHRpbmcgdG9vIG1hbnkgcmVzZXJ2ZXMuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LrEMBBhPcHRpb24EBFQBhQwBCBBOb25lAAAAEFNvbWUEAIUMAAABAAC1DAQYT3B0aW9uBARUAaUMAQgQTm9uZQAAABBTb21lBAClDAAAAQAAuQwMOHBhbGxldF91bmlxdWVzFHR5cGVzRENvbGxlY3Rpb25EZXRhaWxzCCRBY2NvdW50SWQBBDhEZXBvc2l0QmFsYW5jZQGVAQAoARRvd25lcgQBJEFjY291bnRJZAABGGlzc3VlcgQBJEFjY291bnRJZAABFGFkbWluBAEkQWNjb3VudElkAAEcZnJlZXplcgQBJEFjY291bnRJZAABNHRvdGFsX2RlcG9zaXSVAQE4RGVwb3NpdEJhbGFuY2UAATBmcmVlX2hvbGRpbmeZAQEQYm9vbAABFGl0ZW1zOAEMdTMyAAE4aXRlbV9tZXRhZGF0YXM4AQx1MzIAAShhdHRyaWJ1dGVzOAEMdTMyAAEkaXNfZnJvemVumQEBEGJvb2wAAL0MAAAEDAQ4OADBDAw4cGFsbGV0X3VuaXF1ZXMUdHlwZXMsSXRlbURldGFpbHMIJEFjY291bnRJZAEEOERlcG9zaXRCYWxhbmNlAZUBABABFG93bmVyBAEkQWNjb3VudElkAAEgYXBwcm92ZWRBAQFET3B0aW9uPEFjY291bnRJZD4AASRpc19mcm96ZW6ZAQEQYm9vbAABHGRlcG9zaXSVAQE4RGVwb3NpdEJhbGFuY2UAAMUMDDhwYWxsZXRfdW5pcXVlcxR0eXBlc0hDb2xsZWN0aW9uTWV0YWRhdGEIOERlcG9zaXRCYWxhbmNlAZUBLFN0cmluZ0xpbWl0AAAMARxkZXBvc2l0lQEBOERlcG9zaXRCYWxhbmNlAAEQZGF0YV0EAWxCb3VuZGVkVmVjPHU4LCBTdHJpbmdMaW1pdD4AASRpc19mcm96ZW6ZAQEQYm9vbAAAyQwMOHBhbGxldF91bmlxdWVzFHR5cGVzMEl0ZW1NZXRhZGF0YQg4RGVwb3NpdEJhbGFuY2UBlQEsU3RyaW5nTGltaXQAAAwBHGRlcG9zaXSVAQE4RGVwb3NpdEJhbGFuY2UAARBkYXRhXQQBbEJvdW5kZWRWZWM8dTgsIFN0cmluZ0xpbWl0PgABJGlzX2Zyb3plbpkBARBib29sAADNDAAABAw42FkEANEMAAAECHyVAQDVDAAABAiVAUEBANkMDDhwYWxsZXRfdW5pcXVlcxhwYWxsZXQURXJyb3IIBFQABEkAAVgwTm9QZXJtaXNzaW9uAAAE6FRoZSBzaWduaW5nIGFjY291bnQgaGFzIG5vIHBlcm1pc3Npb24gdG8gZG8gdGhlIG9wZXJhdGlvbi5EVW5rbm93bkNvbGxlY3Rpb24AAQR0VGhlIGdpdmVuIGl0ZW0gSUQgaXMgdW5rbm93bi40QWxyZWFkeUV4aXN0cwACBLhUaGUgaXRlbSBJRCBoYXMgYWxyZWFkeSBiZWVuIHVzZWQgZm9yIGFuIGl0ZW0uKFdyb25nT3duZXIAAwToVGhlIG93bmVyIHR1cm5lZCBvdXQgdG8gYmUgZGlmZmVyZW50IHRvIHdoYXQgd2FzIGV4cGVjdGVkLihCYWRXaXRuZXNzAAQEbEludmFsaWQgd2l0bmVzcyBkYXRhIGdpdmVuLhRJblVzZQAFBHRUaGUgaXRlbSBJRCBpcyBhbHJlYWR5IHRha2VuLhhGcm96ZW4ABgSEVGhlIGl0ZW0gb3IgY29sbGVjdGlvbiBpcyBmcm96ZW4uNFdyb25nRGVsZWdhdGUABwT0VGhlIGRlbGVnYXRlIHR1cm5lZCBvdXQgdG8gYmUgZGlmZmVyZW50IHRvIHdoYXQgd2FzIGV4cGVjdGVkLihOb0RlbGVnYXRlAAgEeFRoZXJlIGlzIG5vIGRlbGVnYXRlIGFwcHJvdmVkLihVbmFwcHJvdmVkAAkExE5vIGFwcHJvdmFsIGV4aXN0cyB0aGF0IHdvdWxkIGFsbG93IHRoZSB0cmFuc2Zlci4oVW5hY2NlcHRlZAAKBCUBVGhlIG5hbWVkIG93bmVyIGhhcyBub3Qgc2lnbmVkIG93bmVyc2hpcCBvZiB0aGUgY29sbGVjdGlvbiBpcyBhY2NlcHRhYmxlLhhMb2NrZWQACwRMVGhlIGl0ZW0gaXMgbG9ja2VkLkBNYXhTdXBwbHlSZWFjaGVkAAwEbEFsbCBpdGVtcyBoYXZlIGJlZW4gbWludGVkLkxNYXhTdXBwbHlBbHJlYWR5U2V0AA0EkFRoZSBtYXggc3VwcGx5IGhhcyBhbHJlYWR5IGJlZW4gc2V0LkRNYXhTdXBwbHlUb29TbWFsbAAOBEEBVGhlIHByb3ZpZGVkIG1heCBzdXBwbHkgaXMgbGVzcyB0byB0aGUgYW1vdW50IG9mIGl0ZW1zIGEgY29sbGVjdGlvbiBhbHJlYWR5IGhhcy4sVW5rbm93bkl0ZW0ADwR0VGhlIGdpdmVuIGl0ZW0gSUQgaXMgdW5rbm93bi4oTm90Rm9yU2FsZQAQBFRJdGVtIGlzIG5vdCBmb3Igc2FsZS4kQmlkVG9vTG93ABEEcFRoZSBwcm92aWRlZCBiaWQgaXMgdG9vIGxvdy4oTm9NZXRhZGF0YQASBFRObyBtZXRhZGF0YSBpcyBmb3VuZC40V3JvbmdNZXRhZGF0YQATBKBXcm9uZyBtZXRhZGF0YSBrZXkvdmFsdWUgYnl0ZXMgc3VwcGxpZWQuREF0dHJpYnV0ZU5vdEZvdW5kABQEaEFuIGF0dHJpYnV0ZSBpcyBub3QgZm91bmQuOFdyb25nQXR0cmlidXRlABUEpFdyb25nIGF0dHJpYnV0ZSBrZXkvdmFsdWUgYnl0ZXMgc3VwcGxpZWQuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0Lt0MDCxwYWxsZXRfbmZ0cxR0eXBlc0RDb2xsZWN0aW9uRGV0YWlscwgkQWNjb3VudElkAQQ4RGVwb3NpdEJhbGFuY2UBlQEAGAEUb3duZXIEASRBY2NvdW50SWQAATRvd25lcl9kZXBvc2l0lQEBOERlcG9zaXRCYWxhbmNlAAEUaXRlbXM4AQx1MzIAAThpdGVtX21ldGFkYXRhczgBDHUzMgABMGl0ZW1fY29uZmlnczgBDHUzMgABKGF0dHJpYnV0ZXM4AQx1MzIAAOEMDCxwYWxsZXRfbmZ0cxR0eXBlcyBCaXRGbGFncwQEVAHlDAAEAAwBOENvbGxlY3Rpb25Sb2xlAADlDAwscGFsbGV0X25mdHMUdHlwZXM4Q29sbGVjdGlvblJvbGUAAQwYSXNzdWVyAAEAHEZyZWV6ZXIAAgAUQWRtaW4ABAAA6QwMLHBhbGxldF9uZnRzFHR5cGVzLEl0ZW1EZXRhaWxzDCRBY2NvdW50SWQBBBxEZXBvc2l0Ae0MJEFwcHJvdmFscwHxDAAMARRvd25lcgQBJEFjY291bnRJZAABJGFwcHJvdmFsc/EMASRBcHByb3ZhbHMAARxkZXBvc2l07QwBHERlcG9zaXQAAO0MDCxwYWxsZXRfbmZ0cxR0eXBlcyxJdGVtRGVwb3NpdAg4RGVwb3NpdEJhbGFuY2UBlQEkQWNjb3VudElkAQQACAEcYWNjb3VudAQBJEFjY291bnRJZAABGGFtb3VudJUBAThEZXBvc2l0QmFsYW5jZQAA8QwMTGJvdW5kZWRfY29sbGVjdGlvbnNEYm91bmRlZF9idHJlZV9tYXA8Qm91bmRlZEJUcmVlTWFwDARLAQQEVgHYBFMAAAQA9QwBOEJUcmVlTWFwPEssIFY+AAD1DAQgQlRyZWVNYXAIBEsBBARWAdgABAD5DAAAAPkMAAAC/QwA/QwAAAQIBNgAAQ0MLHBhbGxldF9uZnRzFHR5cGVzSENvbGxlY3Rpb25NZXRhZGF0YQgcRGVwb3NpdAGVASxTdHJpbmdMaW1pdAAACAEcZGVwb3NpdJUBARxEZXBvc2l0AAEQZGF0YeABbEJvdW5kZWRWZWM8dTgsIFN0cmluZ0xpbWl0PgAABQ0MLHBhbGxldF9uZnRzFHR5cGVzMEl0ZW1NZXRhZGF0YQgcRGVwb3NpdAEJDSxTdHJpbmdMaW1pdAAACAEcZGVwb3NpdAkNARxEZXBvc2l0AAEQZGF0YeABbEJvdW5kZWRWZWM8dTgsIFN0cmluZ0xpbWl0PgAACQ0MLHBhbGxldF9uZnRzFHR5cGVzTEl0ZW1NZXRhZGF0YURlcG9zaXQIOERlcG9zaXRCYWxhbmNlAZUBJEFjY291bnRJZAEEAAgBHGFjY291bnRBAQFET3B0aW9uPEFjY291bnRJZD4AARhhbW91bnSVAQE4RGVwb3NpdEJhbGFuY2UAAA0NAAAEEDjYlQR8ABENAAAECOAVDQAVDQwscGFsbGV0X25mdHMUdHlwZXNAQXR0cmlidXRlRGVwb3NpdAg4RGVwb3NpdEJhbGFuY2UBlQEkQWNjb3VudElkAQQACAEcYWNjb3VudEEBAURPcHRpb248QWNjb3VudElkPgABGGFtb3VudJUBAThEZXBvc2l0QmFsYW5jZQAAGQ0MTGJvdW5kZWRfY29sbGVjdGlvbnNEYm91bmRlZF9idHJlZV9zZXQ8Qm91bmRlZEJUcmVlU2V0CARUAQQEUwAABAAdDQEsQlRyZWVTZXQ8VD4AAB0NBCBCVHJlZVNldAQEVAEEAAQAnQEAAAAhDQwscGFsbGV0X25mdHMUdHlwZXMsUGVuZGluZ1N3YXAQMENvbGxlY3Rpb25JZAE4GEl0ZW1JZAE4WEl0ZW1QcmljZVdpdGhEaXJlY3Rpb24BrQQgRGVhZGxpbmUBOAAQAUhkZXNpcmVkX2NvbGxlY3Rpb244ATBDb2xsZWN0aW9uSWQAATBkZXNpcmVkX2l0ZW3YAThPcHRpb248SXRlbUlkPgABFHByaWNlqQQBeE9wdGlvbjxJdGVtUHJpY2VXaXRoRGlyZWN0aW9uPgABIGRlYWRsaW5lOAEgRGVhZGxpbmUAACUNDCxwYWxsZXRfbmZ0cxR0eXBlcyBCaXRGbGFncwQEVAEpDQAEACgBNFBhbGxldEZlYXR1cmUAACkNDCxwYWxsZXRfbmZ0cxR0eXBlczRQYWxsZXRGZWF0dXJlAAEQHFRyYWRpbmcAAQAoQXR0cmlidXRlcwACACRBcHByb3ZhbHMABAAUU3dhcHMACAAALQ0MLHBhbGxldF9uZnRzGHBhbGxldBRFcnJvcggEVAAESQABtDBOb1Blcm1pc3Npb24AAAToVGhlIHNpZ25pbmcgYWNjb3VudCBoYXMgbm8gcGVybWlzc2lvbiB0byBkbyB0aGUgb3BlcmF0aW9uLkRVbmtub3duQ29sbGVjdGlvbgABBHRUaGUgZ2l2ZW4gaXRlbSBJRCBpcyB1bmtub3duLjRBbHJlYWR5RXhpc3RzAAIEuFRoZSBpdGVtIElEIGhhcyBhbHJlYWR5IGJlZW4gdXNlZCBmb3IgYW4gaXRlbS48QXBwcm92YWxFeHBpcmVkAAMEOQFUaGUgYXBwcm92YWwgaGFkIGEgZGVhZGxpbmUgdGhhdCBleHBpcmVkLCBzbyB0aGUgYXBwcm92YWwgaXNuJ3QgdmFsaWQgYW55bW9yZS4oV3JvbmdPd25lcgAEBOhUaGUgb3duZXIgdHVybmVkIG91dCB0byBiZSBkaWZmZXJlbnQgdG8gd2hhdCB3YXMgZXhwZWN0ZWQuKEJhZFdpdG5lc3MABQQVAVRoZSB3aXRuZXNzIGRhdGEgZ2l2ZW4gZG9lcyBub3QgbWF0Y2ggdGhlIGN1cnJlbnQgc3RhdGUgb2YgdGhlIGNoYWluLkRDb2xsZWN0aW9uSWRJblVzZQAGBHxDb2xsZWN0aW9uIElEIGlzIGFscmVhZHkgdGFrZW4uUEl0ZW1zTm9uVHJhbnNmZXJhYmxlAAcEyEl0ZW1zIHdpdGhpbiB0aGF0IGNvbGxlY3Rpb24gYXJlIG5vbi10cmFuc2ZlcmFibGUuLE5vdERlbGVnYXRlAAgEnFRoZSBwcm92aWRlZCBhY2NvdW50IGlzIG5vdCBhIGRlbGVnYXRlLjRXcm9uZ0RlbGVnYXRlAAkE9FRoZSBkZWxlZ2F0ZSB0dXJuZWQgb3V0IHRvIGJlIGRpZmZlcmVudCB0byB3aGF0IHdhcyBleHBlY3RlZC4oVW5hcHByb3ZlZAAKBMRObyBhcHByb3ZhbCBleGlzdHMgdGhhdCB3b3VsZCBhbGxvdyB0aGUgdHJhbnNmZXIuKFVuYWNjZXB0ZWQACwQZAVRoZSBuYW1lZCBvd25lciBoYXMgbm90IHNpZ25lZCBvd25lcnNoaXAgYWNjZXB0YW5jZSBvZiB0aGUgY29sbGVjdGlvbi4oSXRlbUxvY2tlZAAMBJhUaGUgaXRlbSBpcyBsb2NrZWQgKG5vbi10cmFuc2ZlcmFibGUpLlBMb2NrZWRJdGVtQXR0cmlidXRlcwANBHRJdGVtJ3MgYXR0cmlidXRlcyBhcmUgbG9ja2VkLmhMb2NrZWRDb2xsZWN0aW9uQXR0cmlidXRlcwAOBIxDb2xsZWN0aW9uJ3MgYXR0cmlidXRlcyBhcmUgbG9ja2VkLkhMb2NrZWRJdGVtTWV0YWRhdGEADwRoSXRlbSdzIG1ldGFkYXRhIGlzIGxvY2tlZC5gTG9ja2VkQ29sbGVjdGlvbk1ldGFkYXRhABAEgENvbGxlY3Rpb24ncyBtZXRhZGF0YSBpcyBsb2NrZWQuQE1heFN1cHBseVJlYWNoZWQAEQRsQWxsIGl0ZW1zIGhhdmUgYmVlbiBtaW50ZWQuPE1heFN1cHBseUxvY2tlZAASBLhUaGUgbWF4IHN1cHBseSBpcyBsb2NrZWQgYW5kIGNhbid0IGJlIGNoYW5nZWQuRE1heFN1cHBseVRvb1NtYWxsABMESQFUaGUgcHJvdmlkZWQgbWF4IHN1cHBseSBpcyBsZXNzIHRoYW4gdGhlIG51bWJlciBvZiBpdGVtcyBhIGNvbGxlY3Rpb24gYWxyZWFkeSBoYXMuLFVua25vd25JdGVtABQEdFRoZSBnaXZlbiBpdGVtIElEIGlzIHVua25vd24uLFVua25vd25Td2FwABUETFN3YXAgZG9lc24ndCBleGlzdC5ATWV0YWRhdGFOb3RGb3VuZAAWBIxUaGUgZ2l2ZW4gaXRlbSBoYXMgbm8gbWV0YWRhdGEgc2V0LkRBdHRyaWJ1dGVOb3RGb3VuZAAXBJhUaGUgcHJvdmlkZWQgYXR0cmlidXRlIGNhbid0IGJlIGZvdW5kLihOb3RGb3JTYWxlABgEVEl0ZW0gaXMgbm90IGZvciBzYWxlLiRCaWRUb29Mb3cAGQRwVGhlIHByb3ZpZGVkIGJpZCBpcyB0b28gbG93LlBSZWFjaGVkQXBwcm92YWxMaW1pdAAaBKBUaGUgaXRlbSBoYXMgcmVhY2hlZCBpdHMgYXBwcm92YWwgbGltaXQuPERlYWRsaW5lRXhwaXJlZAAbBIRUaGUgZGVhZGxpbmUgaGFzIGFscmVhZHkgZXhwaXJlZC40V3JvbmdEdXJhdGlvbgAcBDEBVGhlIGR1cmF0aW9uIHByb3ZpZGVkIHNob3VsZCBiZSBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gYE1heERlYWRsaW5lRHVyYXRpb25gLjhNZXRob2REaXNhYmxlZAAdBKhUaGUgbWV0aG9kIGlzIGRpc2FibGVkIGJ5IHN5c3RlbSBzZXR0aW5ncy4wV3JvbmdTZXR0aW5nAB4EiFRoZSBwcm92aWRlZCBzZXR0aW5nIGNhbid0IGJlIHNldC5YSW5jb25zaXN0ZW50SXRlbUNvbmZpZwAfBBUBSXRlbSdzIGNvbmZpZyBhbHJlYWR5IGV4aXN0cyBhbmQgc2hvdWxkIGJlIGVxdWFsIHRvIHRoZSBwcm92aWRlZCBvbmUuIE5vQ29uZmlnACAEyENvbmZpZyBmb3IgYSBjb2xsZWN0aW9uIG9yIGFuIGl0ZW0gY2FuJ3QgYmUgZm91bmQuPFJvbGVzTm90Q2xlYXJlZAAhBHBTb21lIHJvbGVzIHdlcmUgbm90IGNsZWFyZWQuOE1pbnROb3RTdGFydGVkACIEZE1pbnQgaGFzIG5vdCBzdGFydGVkIHlldC4kTWludEVuZGVkACMEXE1pbnQgaGFzIGFscmVhZHkgZW5kZWQuOEFscmVhZHlDbGFpbWVkACQEwFRoZSBwcm92aWRlZCBJdGVtIHdhcyBhbHJlYWR5IHVzZWQgZm9yIGNsYWltaW5nLjRJbmNvcnJlY3REYXRhACUEfFRoZSBwcm92aWRlZCBkYXRhIGlzIGluY29ycmVjdC4sV3JvbmdPcmlnaW4AJgSsVGhlIGV4dHJpbnNpYyB3YXMgc2VudCBieSB0aGUgd3Jvbmcgb3JpZ2luLjhXcm9uZ1NpZ25hdHVyZQAnBJBUaGUgcHJvdmlkZWQgc2lnbmF0dXJlIGlzIGluY29ycmVjdC5ESW5jb3JyZWN0TWV0YWRhdGEAKASgVGhlIHByb3ZpZGVkIG1ldGFkYXRhIG1pZ2h0IGJlIHRvbyBsb25nLmRNYXhBdHRyaWJ1dGVzTGltaXRSZWFjaGVkACkEnENhbid0IHNldCBtb3JlIGF0dHJpYnV0ZXMgcGVyIG9uZSBjYWxsLjhXcm9uZ05hbWVzcGFjZQAqBNBUaGUgcHJvdmlkZWQgbmFtZXNwYWNlIGlzbid0IHN1cHBvcnRlZCBpbiB0aGlzIGNhbGwuSENvbGxlY3Rpb25Ob3RFbXB0eQArBIxDYW4ndCBkZWxldGUgbm9uLWVtcHR5IGNvbGxlY3Rpb25zLjxXaXRuZXNzUmVxdWlyZWQALASQVGhlIHdpdG5lc3MgZGF0YSBzaG91bGQgYmUgcHJvdmlkZWQuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LjENAAAECDkCBAA1DQAABAw5AgQEADkNDDRwYWxsZXRfYXNzZXRzFHR5cGVzNEFzc2V0TWV0YWRhdGEIOERlcG9zaXRCYWxhbmNlAZUBNEJvdW5kZWRTdHJpbmcBPQ0AFAEcZGVwb3NpdJUBAThEZXBvc2l0QmFsYW5jZQABEG5hbWU9DQE0Qm91bmRlZFN0cmluZwABGHN5bWJvbD0NATRCb3VuZGVkU3RyaW5nAAEgZGVjaW1hbHMMAQh1OAABJGlzX2Zyb3plbpkBARBib29sAAA9DQxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQwEUwAABAAYARhWZWM8VD4AAEENDDRwYWxsZXRfYXNzZXRzGHBhbGxldBRFcnJvcggEVAAESQABYChCYWxhbmNlTG93AAAEFQFBY2NvdW50IGJhbGFuY2UgbXVzdCBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gdGhlIHRyYW5zZmVyIGFtb3VudC4kTm9BY2NvdW50AAEEkFRoZSBhY2NvdW50IHRvIGFsdGVyIGRvZXMgbm90IGV4aXN0LjBOb1Blcm1pc3Npb24AAgToVGhlIHNpZ25pbmcgYWNjb3VudCBoYXMgbm8gcGVybWlzc2lvbiB0byBkbyB0aGUgb3BlcmF0aW9uLhxVbmtub3duAAMEeFRoZSBnaXZlbiBhc3NldCBJRCBpcyB1bmtub3duLhhGcm96ZW4ABAR0VGhlIG9yaWdpbiBhY2NvdW50IGlzIGZyb3plbi4USW5Vc2UABQR4VGhlIGFzc2V0IElEIGlzIGFscmVhZHkgdGFrZW4uKEJhZFdpdG5lc3MABgRsSW52YWxpZCB3aXRuZXNzIGRhdGEgZ2l2ZW4uOE1pbkJhbGFuY2VaZXJvAAcEjE1pbmltdW0gYmFsYW5jZSBzaG91bGQgYmUgbm9uLXplcm8uTFVuYXZhaWxhYmxlQ29uc3VtZXIACAxZAVVuYWJsZSB0byBpbmNyZW1lbnQgdGhlIGNvbnN1bWVyIHJlZmVyZW5jZSBjb3VudGVycyBvbiB0aGUgYWNjb3VudC4gRWl0aGVyIG5vIHByb3ZpZGVyTQFyZWZlcmVuY2UgZXhpc3RzIHRvIGFsbG93IGEgbm9uLXplcm8gYmFsYW5jZSBvZiBhIG5vbi1zZWxmLXN1ZmZpY2llbnQgYXNzZXQsIG9yIG9uZfBmZXdlciB0aGVuIHRoZSBtYXhpbXVtIG51bWJlciBvZiBjb25zdW1lcnMgaGFzIGJlZW4gcmVhY2hlZC4sQmFkTWV0YWRhdGEACQRcSW52YWxpZCBtZXRhZGF0YSBnaXZlbi4oVW5hcHByb3ZlZAAKBMRObyBhcHByb3ZhbCBleGlzdHMgdGhhdCB3b3VsZCBhbGxvdyB0aGUgdHJhbnNmZXIuIFdvdWxkRGllAAsENQFUaGUgc291cmNlIGFjY291bnQgd291bGQgbm90IHN1cnZpdmUgdGhlIHRyYW5zZmVyIGFuZCBpdCBuZWVkcyB0byBzdGF5IGFsaXZlLjRBbHJlYWR5RXhpc3RzAAwEhFRoZSBhc3NldC1hY2NvdW50IGFscmVhZHkgZXhpc3RzLiROb0RlcG9zaXQADQTUVGhlIGFzc2V0LWFjY291bnQgZG9lc24ndCBoYXZlIGFuIGFzc29jaWF0ZWQgZGVwb3NpdC4kV291bGRCdXJuAA4ExFRoZSBvcGVyYXRpb24gd291bGQgcmVzdWx0IGluIGZ1bmRzIGJlaW5nIGJ1cm5lZC4kTGl2ZUFzc2V0AA8IWQFUaGUgYXNzZXQgaXMgYSBsaXZlIGFzc2V0IGFuZCBpcyBhY3RpdmVseSBiZWluZyB1c2VkLiBVc3VhbGx5IGVtaXQgZm9yIG9wZXJhdGlvbnMgc3VjaB0BYXMgYHN0YXJ0X2Rlc3Ryb3lgIHdoaWNoIHJlcXVpcmUgdGhlIGFzc2V0IHRvIGJlIGluIGEgZGVzdHJveWluZyBzdGF0ZS4wQXNzZXROb3RMaXZlABAEyFRoZSBhc3NldCBpcyBub3QgbGl2ZSwgYW5kIGxpa2VseSBiZWluZyBkZXN0cm95ZWQuPEluY29ycmVjdFN0YXR1cwARBLBUaGUgYXNzZXQgc3RhdHVzIGlzIG5vdCB0aGUgZXhwZWN0ZWQgc3RhdHVzLiROb3RGcm96ZW4AEgTYVGhlIGFzc2V0IHNob3VsZCBiZSBmcm96ZW4gYmVmb3JlIHRoZSBnaXZlbiBvcGVyYXRpb24uOENhbGxiYWNrRmFpbGVkABMEhENhbGxiYWNrIGFjdGlvbiByZXN1bHRlZCBpbiBlcnJvcihCYWRBc3NldElkABQEyFRoZSBhc3NldCBJRCBtdXN0IGJlIGVxdWFsIHRvIHRoZSBbYE5leHRBc3NldElkYF0uPENvbnRhaW5zRnJlZXplcwAVBE0BVGhlIGFzc2V0IGNhbm5vdCBiZSBkZXN0cm95ZWQgYmVjYXVzZSBzb21lIGFjY291bnRzIGZvciB0aGlzIGFzc2V0IGNvbnRhaW4gZnJlZXplcy40Q29udGFpbnNIb2xkcwAWBEUBVGhlIGFzc2V0IGNhbm5vdCBiZSBkZXN0cm95ZWQgYmVjYXVzZSBzb21lIGFjY291bnRzIGZvciB0aGlzIGFzc2V0IGNvbnRhaW4gaG9sZHMuPFRvb01hbnlSZXNlcnZlcwAXBIBUcmllZCBzZXR0aW5nIHRvbyBtYW55IHJlc2VydmVzLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC5FDQQYT3B0aW9uBARUATkNAQgQTm9uZQAAABBTb21lBAA5DQAAAQAASQ0McHBhbGxldF9uZnRfZnJhY3Rpb25hbGl6YXRpb24UdHlwZXMcRGV0YWlscxAcQXNzZXRJZAE4JEZyYWN0aW9ucwGVARxEZXBvc2l0AZUBJEFjY291bnRJZAEEABABFGFzc2V0OAEcQXNzZXRJZAABJGZyYWN0aW9uc5UBASRGcmFjdGlvbnMAARxkZXBvc2l0lQEBHERlcG9zaXQAATRhc3NldF9jcmVhdG9yBAEkQWNjb3VudElkAABNDQxwcGFsbGV0X25mdF9mcmFjdGlvbmFsaXphdGlvbhhwYWxsZXQURXJyb3IEBFQAARBASW5jb3JyZWN0QXNzZXRJZAAABKxBc3NldCBJRCBkb2VzIG5vdCBjb3JyZXNwb25kIHRvIGxvY2tlZCBORlQuME5vUGVybWlzc2lvbgABBOhUaGUgc2lnbmluZyBhY2NvdW50IGhhcyBubyBwZXJtaXNzaW9uIHRvIGRvIHRoZSBvcGVyYXRpb24uLE5mdE5vdEZvdW5kAAIESE5GVCBkb2Vzbid0IGV4aXN0LlBOZnROb3RGcmFjdGlvbmFsaXplZAADBJBORlQgaGFzIG5vdCB5ZXQgYmVlbiBmcmFjdGlvbmFsaXNlZC4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuUQ0MNHBhbGxldF9hc3NldHMUdHlwZXM0QXNzZXRNZXRhZGF0YQg4RGVwb3NpdEJhbGFuY2UBlQE0Qm91bmRlZFN0cmluZwFVDQAUARxkZXBvc2l0lQEBOERlcG9zaXRCYWxhbmNlAAEQbmFtZVUNATRCb3VuZGVkU3RyaW5nAAEYc3ltYm9sVQ0BNEJvdW5kZWRTdHJpbmcAASBkZWNpbWFscwwBCHU4AAEkaXNfZnJvemVumQEBEGJvb2wAAFUNDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBDARTAAAEABgBGFZlYzxUPgAAWQ0MNHBhbGxldF9hc3NldHMYcGFsbGV0FEVycm9yCARUAARJAAFgKEJhbGFuY2VMb3cAAAQVAUFjY291bnQgYmFsYW5jZSBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0aGUgdHJhbnNmZXIgYW1vdW50LiROb0FjY291bnQAAQSQVGhlIGFjY291bnQgdG8gYWx0ZXIgZG9lcyBub3QgZXhpc3QuME5vUGVybWlzc2lvbgACBOhUaGUgc2lnbmluZyBhY2NvdW50IGhhcyBubyBwZXJtaXNzaW9uIHRvIGRvIHRoZSBvcGVyYXRpb24uHFVua25vd24AAwR4VGhlIGdpdmVuIGFzc2V0IElEIGlzIHVua25vd24uGEZyb3plbgAEBHRUaGUgb3JpZ2luIGFjY291bnQgaXMgZnJvemVuLhRJblVzZQAFBHhUaGUgYXNzZXQgSUQgaXMgYWxyZWFkeSB0YWtlbi4oQmFkV2l0bmVzcwAGBGxJbnZhbGlkIHdpdG5lc3MgZGF0YSBnaXZlbi44TWluQmFsYW5jZVplcm8ABwSMTWluaW11bSBiYWxhbmNlIHNob3VsZCBiZSBub24temVyby5MVW5hdmFpbGFibGVDb25zdW1lcgAIDFkBVW5hYmxlIHRvIGluY3JlbWVudCB0aGUgY29uc3VtZXIgcmVmZXJlbmNlIGNvdW50ZXJzIG9uIHRoZSBhY2NvdW50LiBFaXRoZXIgbm8gcHJvdmlkZXJNAXJlZmVyZW5jZSBleGlzdHMgdG8gYWxsb3cgYSBub24temVybyBiYWxhbmNlIG9mIGEgbm9uLXNlbGYtc3VmZmljaWVudCBhc3NldCwgb3Igb25l8GZld2VyIHRoZW4gdGhlIG1heGltdW0gbnVtYmVyIG9mIGNvbnN1bWVycyBoYXMgYmVlbiByZWFjaGVkLixCYWRNZXRhZGF0YQAJBFxJbnZhbGlkIG1ldGFkYXRhIGdpdmVuLihVbmFwcHJvdmVkAAoExE5vIGFwcHJvdmFsIGV4aXN0cyB0aGF0IHdvdWxkIGFsbG93IHRoZSB0cmFuc2Zlci4gV291bGREaWUACwQ1AVRoZSBzb3VyY2UgYWNjb3VudCB3b3VsZCBub3Qgc3Vydml2ZSB0aGUgdHJhbnNmZXIgYW5kIGl0IG5lZWRzIHRvIHN0YXkgYWxpdmUuNEFscmVhZHlFeGlzdHMADASEVGhlIGFzc2V0LWFjY291bnQgYWxyZWFkeSBleGlzdHMuJE5vRGVwb3NpdAANBNRUaGUgYXNzZXQtYWNjb3VudCBkb2Vzbid0IGhhdmUgYW4gYXNzb2NpYXRlZCBkZXBvc2l0LiRXb3VsZEJ1cm4ADgTEVGhlIG9wZXJhdGlvbiB3b3VsZCByZXN1bHQgaW4gZnVuZHMgYmVpbmcgYnVybmVkLiRMaXZlQXNzZXQADwhZAVRoZSBhc3NldCBpcyBhIGxpdmUgYXNzZXQgYW5kIGlzIGFjdGl2ZWx5IGJlaW5nIHVzZWQuIFVzdWFsbHkgZW1pdCBmb3Igb3BlcmF0aW9ucyBzdWNoHQFhcyBgc3RhcnRfZGVzdHJveWAgd2hpY2ggcmVxdWlyZSB0aGUgYXNzZXQgdG8gYmUgaW4gYSBkZXN0cm95aW5nIHN0YXRlLjBBc3NldE5vdExpdmUAEATIVGhlIGFzc2V0IGlzIG5vdCBsaXZlLCBhbmQgbGlrZWx5IGJlaW5nIGRlc3Ryb3llZC48SW5jb3JyZWN0U3RhdHVzABEEsFRoZSBhc3NldCBzdGF0dXMgaXMgbm90IHRoZSBleHBlY3RlZCBzdGF0dXMuJE5vdEZyb3plbgASBNhUaGUgYXNzZXQgc2hvdWxkIGJlIGZyb3plbiBiZWZvcmUgdGhlIGdpdmVuIG9wZXJhdGlvbi44Q2FsbGJhY2tGYWlsZWQAEwSEQ2FsbGJhY2sgYWN0aW9uIHJlc3VsdGVkIGluIGVycm9yKEJhZEFzc2V0SWQAFATIVGhlIGFzc2V0IElEIG11c3QgYmUgZXF1YWwgdG8gdGhlIFtgTmV4dEFzc2V0SWRgXS48Q29udGFpbnNGcmVlemVzABUETQFUaGUgYXNzZXQgY2Fubm90IGJlIGRlc3Ryb3llZCBiZWNhdXNlIHNvbWUgYWNjb3VudHMgZm9yIHRoaXMgYXNzZXQgY29udGFpbiBmcmVlemVzLjRDb250YWluc0hvbGRzABYERQFUaGUgYXNzZXQgY2Fubm90IGJlIGRlc3Ryb3llZCBiZWNhdXNlIHNvbWUgYWNjb3VudHMgZm9yIHRoaXMgYXNzZXQgY29udGFpbiBob2xkcy48VG9vTWFueVJlc2VydmVzABcEgFRyaWVkIHNldHRpbmcgdG9vIG1hbnkgcmVzZXJ2ZXMuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0Ll0NBBhPcHRpb24EBFQBUQ0BCBBOb25lAAAAEFNvbWUEAFENAAABAABhDQxccGFsbGV0X2Fzc2V0X2NvbnZlcnNpb24UdHlwZXMgUG9vbEluZm8ELFBvb2xBc3NldElkATgABAEgbHBfdG9rZW44ASxQb29sQXNzZXRJZAAAZQ0MXHBhbGxldF9hc3NldF9jb252ZXJzaW9uGHBhbGxldBRFcnJvcgQEVAABYEBJbnZhbGlkQXNzZXRQYWlyAAAEuFByb3ZpZGVkIGFzc2V0IHBhaXIgaXMgbm90IHN1cHBvcnRlZCBmb3IgcG9vbC4oUG9vbEV4aXN0cwABBFBQb29sIGFscmVhZHkgZXhpc3RzLkhXcm9uZ0Rlc2lyZWRBbW91bnQAAgR0RGVzaXJlZCBhbW91bnQgY2FuJ3QgYmUgemVyby5gQW1vdW50T25lTGVzc1RoYW5NaW5pbWFsAAMISQFQcm92aWRlZCBhbW91bnQgc2hvdWxkIGJlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0aGUgZXhpc3RlbnRpYWwgZGVwb3NpdC9hc3NldCdzPG1pbmltYWwgYW1vdW50LmBBbW91bnRUd29MZXNzVGhhbk1pbmltYWwABAhJAVByb3ZpZGVkIGFtb3VudCBzaG91bGQgYmUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHRoZSBleGlzdGVudGlhbCBkZXBvc2l0L2Fzc2V0J3M8bWluaW1hbCBhbW91bnQuaFJlc2VydmVMZWZ0TGVzc1RoYW5NaW5pbWFsAAUITQFSZXNlcnZlIG5lZWRzIHRvIGFsd2F5cyBiZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gdGhlIGV4aXN0ZW50aWFsIGRlcG9zaXQvYXNzZXQnczxtaW5pbWFsIGFtb3VudC5AQW1vdW50T3V0VG9vSGlnaAAGBMhEZXNpcmVkIGFtb3VudCBjYW4ndCBiZSBlcXVhbCB0byB0aGUgcG9vbCByZXNlcnZlLjBQb29sTm90Rm91bmQABwRcVGhlIHBvb2wgZG9lc24ndCBleGlzdC4gT3ZlcmZsb3cACARUQW4gb3ZlcmZsb3cgaGFwcGVuZWQugEFzc2V0T25lRGVwb3NpdERpZE5vdE1lZXRNaW5pbXVtAAkEKQFUaGUgbWluaW1hbCBhbW91bnQgcmVxdWlyZW1lbnQgZm9yIHRoZSBmaXJzdCB0b2tlbiBpbiB0aGUgcGFpciB3YXNuJ3QgbWV0LoBBc3NldFR3b0RlcG9zaXREaWROb3RNZWV0TWluaW11bQAKBC0BVGhlIG1pbmltYWwgYW1vdW50IHJlcXVpcmVtZW50IGZvciB0aGUgc2Vjb25kIHRva2VuIGluIHRoZSBwYWlyIHdhc24ndCBtZXQujEFzc2V0T25lV2l0aGRyYXdhbERpZE5vdE1lZXRNaW5pbXVtAAsEKQFUaGUgbWluaW1hbCBhbW91bnQgcmVxdWlyZW1lbnQgZm9yIHRoZSBmaXJzdCB0b2tlbiBpbiB0aGUgcGFpciB3YXNuJ3QgbWV0LoxBc3NldFR3b1dpdGhkcmF3YWxEaWROb3RNZWV0TWluaW11bQAMBC0BVGhlIG1pbmltYWwgYW1vdW50IHJlcXVpcmVtZW50IGZvciB0aGUgc2Vjb25kIHRva2VuIGluIHRoZSBwYWlyIHdhc24ndCBtZXQucE9wdGltYWxBbW91bnRMZXNzVGhhbkRlc2lyZWQADQS8T3B0aW1hbCBjYWxjdWxhdGVkIGFtb3VudCBpcyBsZXNzIHRoYW4gZGVzaXJlZC5sSW5zdWZmaWNpZW50TGlxdWlkaXR5TWludGVkAA4EeEluc3VmZmljaWVudCBsaXF1aWRpdHkgbWludGVkLjRaZXJvTGlxdWlkaXR5AA8EiFJlcXVlc3RlZCBsaXF1aWRpdHkgY2FuJ3QgYmUgemVyby4oWmVyb0Ftb3VudAAQBFRBbW91bnQgY2FuJ3QgYmUgemVyby6MUHJvdmlkZWRNaW5pbXVtTm90U3VmZmljaWVudEZvclN3YXAAEQTsQ2FsY3VsYXRlZCBhbW91bnQgb3V0IGlzIGxlc3MgdGhhbiBwcm92aWRlZCBtaW5pbXVtIGFtb3VudC6MUHJvdmlkZWRNYXhpbXVtTm90U3VmZmljaWVudEZvclN3YXAAEgTMUHJvdmlkZWQgbWF4aW11bSBhbW91bnQgaXMgbm90IHN1ZmZpY2llbnQgZm9yIHN3YXAuLEludmFsaWRQYXRoABME1FRoZSBwcm92aWRlZCBwYXRoIG11c3QgY29uc2lzdHMgb2YgMiBhc3NldHMgYXQgbGVhc3QuNE5vblVuaXF1ZVBhdGgAFATEVGhlIHByb3ZpZGVkIHBhdGggbXVzdCBjb25zaXN0cyBvZiB1bmlxdWUgYXNzZXRzLlBJbmNvcnJlY3RQb29sQXNzZXRJZAAVBOxJdCB3YXMgbm90IHBvc3NpYmxlIHRvIGdldCBvciBpbmNyZW1lbnQgdGhlIElkIG9mIHRoZSBwb29sLjBCZWxvd01pbmltdW0AFgTwVGhlIGRlc3RpbmF0aW9uIGFjY291bnQgY2Fubm90IGV4aXN0IHdpdGggdGhlIHN3YXBwZWQgZnVuZHMuJFBvb2xFbXB0eQAXBDEBVGhlIHBvb2wgZXhpc3RzIGJ1dCBoYXMgbm8gbGlxdWlkaXR5IChhdCBsZWFzdCBvbmUgb2YgdGhlIHJlc2VydmVzIGlzIHplcm8pLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC5pDQQYUmVzdWx0CARUAW0NBEUBZQ0BCAhPawQAbQ0AAAAADEVycgQAZQ0AAAEAAG0NAAAECJUBlQEAcQ0AAAQIdQ15DQB1DQxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAe0EBFMAAAQA6QQBGFZlYzxUPgAAeQ0UNGZyYW1lX3N1cHBvcnQYdHJhaXRzGHRva2VucyBmdW5naWJsZURIb2xkQ29uc2lkZXJhdGlvbhQEQQAERgAEUgAERAAIRnAAAAQAlQEBKEY6OkJhbGFuY2UAAH0NAAAEDIENjQ2VAQCBDQg8cGFsbGV0X3JlY292ZXJ5HEF0dGVtcHQMTFByb3ZpZGVkQmxvY2tOdW1iZXIBOEBBcHByb3ZhbEJpdGZpZWxkAYUNJEFjY291bnRJZAEEABQBSGZyaWVuZF9ncm91cF9pbmRleDgBQEZyaWVuZEdyb3VwSW5kZXgAASRpbml0aWF0b3IEASRBY2NvdW50SWQAAShpbml0X2Jsb2NrOAFMUHJvdmlkZWRCbG9ja051bWJlcgABTGxhc3RfYXBwcm92YWxfYmxvY2s4AUxQcm92aWRlZEJsb2NrTnVtYmVyAAEkYXBwcm92YWxzhQ0BQEFwcHJvdmFsQml0ZmllbGQAAIUNDDxwYWxsZXRfcmVjb3ZlcnkUdHlwZXMgQml0ZmllbGQEKE1heEVudHJpZXMAAAQAiQ0BqEJvdW5kZWRWZWM8dTE2LCBCaXRmaWVsZExlbk9mPE1heEVudHJpZXM+PgAAiQ0MTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAH5AwRTAAAEAJkHARhWZWM8VD4AAI0NDDxwYWxsZXRfcmVjb3ZlcnkUdHlwZXNcSWRlbnRpZmllZENvbnNpZGVyYXRpb24MJEFjY291bnRJZAEEJEZvb3RwcmludAGRDQRDAZUNAAgBJGRlcG9zaXRvcgQBJEFjY291bnRJZAABGHRpY2tldJkNASRPcHRpb248Qz4AAJENEDRmcmFtZV9zdXBwb3J0GHRyYWl0cxxzdG9yYWdlJEZvb3RwcmludAAACAEUY291bnQoAQx1NjQAARBzaXplKAEMdTY0AACVDRQ0ZnJhbWVfc3VwcG9ydBh0cmFpdHMYdG9rZW5zIGZ1bmdpYmxlREhvbGRDb25zaWRlcmF0aW9uFARBAARGAARSAAREAAhGcAAABACVAQEoRjo6QmFsYW5jZQAAmQ0EGE9wdGlvbgQEVAGVDQEIEE5vbmUAAAAQU29tZQQAlQ0AAAEAAJ0NAAAEDDgEoQ0AoQ0MPHBhbGxldF9yZWNvdmVyeRR0eXBlc1xJZGVudGlmaWVkQ29uc2lkZXJhdGlvbgwkQWNjb3VudElkAQQkRm9vdHByaW50AZENBEMBpQ0ACAEkZGVwb3NpdG9yBAEkQWNjb3VudElkAAEYdGlja2V0qQ0BJE9wdGlvbjxDPgAApQ0UNGZyYW1lX3N1cHBvcnQYdHJhaXRzGHRva2VucyBmdW5naWJsZURIb2xkQ29uc2lkZXJhdGlvbhQEQQAERgAEUgAERAAIRnAAAAQAlQEBKEY6OkJhbGFuY2UAAKkNBBhPcHRpb24EBFQBpQ0BCBBOb25lAAAAEFNvbWUEAKUNAAABAACtDQw8cGFsbGV0X3JlY292ZXJ5GHBhbGxldBRFcnJvcgQEVAABXDxBbHJlYWR5QXBwcm92ZWQAAAQhAVRoaXMgYXR0ZW1wdCBpcyBhbHJlYWR5IGZ1bGx5IGFwcHJvdmVkIGFuZCBkb2VzIG5vdCBuZWVkIGFueSBtb3JlIHZvdGVzLkBBbHJlYWR5SW5pdGlhdGVkAAEEwFRoZSByZWNvdmVyeSBhdHRlbXB0IGhhcyBhbHJlYWR5IGJlZW4gaW5pdGlhdGVkLjBBbHJlYWR5Vm90ZWQAAgSoVGhlIGZyaWVuZCBhbHJlYWR5IHZvdGVkIGZvciB0aGlzIGF0dGVtcHQuSEhhc09uZ29pbmdBdHRlbXB0cwADBLxUaGUgbG9zdCBhY2NvdW50IGhhcyBvbmdvaW5nIHJlY292ZXJ5IGF0dGVtcHRzLmBMb3N0QWNjb3VudEluRnJpZW5kR3JvdXAABAS4VGhlIGxvc3QgYWNjb3VudCBjYW5ub3QgYmUgYSBmcmllbmQgb2YgaXRzZWxmLlxIaWdoZXJQcmlvcml0eVJlY292ZXJlZAAFBCUBVGhlIGFjY291bnQgd2FzIGFscmVhZHkgcmVjb3ZlcmVkIGJ5IGEgZ3JvdXAgb2YgZXF1YWwgb3IgaGlnaGVyIHByaW9yaXR5LjROb0NhbmNlbERlbGF5AAYEgENhbmNlbCBkZWxheSBtdXN0IGJlIGF0IGxlYXN0IDEuOE5vRnJpZW5kR3JvdXBzAAcEtFRoaXMgYWNjb3VudCBkb2VzIG5vdCBoYXZlIGFueSBmcmllbmQgZ3JvdXBzLiROb0ZyaWVuZHMACASAVGhlIGZyaWVuZCBncm91cCBoYXMgbm8gZnJpZW5kcy4sTm9Jbmhlcml0b3IACQS0VGhlIGxvc3QgYWNjb3VudCBkb2VzIG5vdCBoYXZlIGFueSBpbmhlcml0b3IuLE5vdEFwcHJvdmVkAAoEpE5vdCBlbm91Z2ggZnJpZW5kcyBhcHByb3ZlZCB0aGlzIGF0dGVtcHQuKE5vdEF0dGVtcHQACwS4VGhlIHJlZmVyZW5jZWQgcmVjb3ZlcnkgYXR0ZW1wdCB3YXMgbm90IGZvdW5kLjBOb3RDYW5jZWxsZXIADATQVGhlIGNhbGxlciBpcyBub3QgdGhlIGluaXRpYXRvciBvciB0aGUgbG9zdCBhY2NvdW50LiROb3RGcmllbmQADQS8VGhlIGNhbGxlciBpcyBub3QgYSBmcmllbmQgb2YgdGhlIGxvc3QgYWNjb3VudC44Tm90RnJpZW5kR3JvdXAADgTEQSBzcGVjaWZpYyByZWZlcmVuY2VkIGZyaWVuZCBncm91cCB3YXMgbm90IGZvdW5kLjBOb3RJbmhlcml0b3IADwTQVGhlIGNhbGxlciBpcyBub3QgdGhlIGluaGVyaXRvciBvZiB0aGUgbG9zdCBhY2NvdW50LkBOb3RZZXRDYW5jZWxhYmxlABAEOQFUaGUgY2FuY2VsIGRlbGF5IHNpbmNlIHRoZSBsYXN0IGFwcHJvdmFsIG9yIGluaXRpYWxpemF0aW9uIGhhcyBub3QgeWV0IHBhc3NlZC5ETm90WWV0SW5oZXJpdGFibGUAEQTkVGhlIGluaGVyaXRhbmNlIGRlbGF5IG9mIHRoaXMgYXR0ZW1wdCBoYXMgbm90IHlldCBwYXNzZWQuTFRvb01hbnlGcmllbmRHcm91cHMAEgRcVG9vIG1hbnkgZnJpZW5kIGdyb3Vwcy5QVG9vTWFueUZyaWVuZHNOZWVkZWQAEwQNAVRoZSBudW1iZXIgb2YgZnJpZW5kcyBuZWVkZWQgaXMgZ3JlYXRlciB0aGFuIHRoZSBudW1iZXIgb2YgZnJpZW5kcy48Tm9GcmllbmRzTmVlZGVkABQElFRoZSBudW1iZXIgb2YgZnJpZW5kcyBuZWVkZWQgaXMgemVyby5gRnJpZW5kc05vdFNvcnRlZE9yVW5pcXVlABUE7FRoZSBmcmllbmRzIG9mIGEgZnJpZW5kIGdyb3VwIGFyZSBub3Qgc29ydGVkIG9yIG5vdCB1bmlxdWUuVER1cGxpY2F0ZUZyaWVuZEdyb3VwcwAWBLxUd28gZnJpZW5kIGdyb3VwcyBoYXZlIHRoZSBzYW1lIHNldCBvZiBmcmllbmRzLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC6xDQAAArUNALUNAAAECO0EgQ0AuQ0IOHBhbGxldF9zb2NpZXR5ME1lbWJlclJlY29yZAAAEAEQcmFuazgBEFJhbmsAARxzdHJpa2VzOAEsU3RyaWtlQ291bnQAASB2b3VjaGluZ70NAVhPcHRpb248Vm91Y2hpbmdTdGF0dXM+AAEUaW5kZXg4AQx1MzIAAL0NBBhPcHRpb24EBFQBwQ0BCBBOb25lAAAAEFNvbWUEAMENAAABAADBDQg4cGFsbGV0X3NvY2lldHk4Vm91Y2hpbmdTdGF0dXMAAQggVm91Y2hpbmcAAAAYQmFubmVkAAEAAMUNCDhwYWxsZXRfc29jaWV0eTBQYXlvdXRSZWNvcmQIHEJhbGFuY2UBlQEoUGF5b3V0c1ZlYwHJDQAIARBwYWlklQEBHEJhbGFuY2UAARxwYXlvdXRzyQ0BKFBheW91dHNWZWMAAMkNDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBzQ0EUwAABADRDQEYVmVjPFQ+AADNDQAABAg4lQEA0Q0AAALNDQDVDQxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAdkNBFMAAAQA4Q0BGFZlYzxUPgAA2Q0IOHBhbGxldF9zb2NpZXR5DEJpZAgkQWNjb3VudElkAQQcQmFsYW5jZQGVAQAMAQx3aG8EASRBY2NvdW50SWQAARBraW5k3Q0BbEJpZEtpbmQ8QWNjb3VudElkLCBCYWxhbmNlPgABFHZhbHVllQEBHEJhbGFuY2UAAN0NCDhwYWxsZXRfc29jaWV0eRxCaWRLaW5kCCRBY2NvdW50SWQBBBxCYWxhbmNlAZUBAQgcRGVwb3NpdAQAlQEBHEJhbGFuY2UAAAAUVm91Y2gIAAQBJEFjY291bnRJZAAAlQEBHEJhbGFuY2UAAQAA4Q0AAALZDQDlDQg4cGFsbGV0X3NvY2lldHkkQ2FuZGlkYWN5CCRBY2NvdW50SWQBBBxCYWxhbmNlAZUBABQBFHJvdW5kOAEoUm91bmRJbmRleAABEGtpbmTdDQFsQmlkS2luZDxBY2NvdW50SWQsIEJhbGFuY2U+AAEMYmlklQEBHEJhbGFuY2UAARR0YWxseekNARRUYWxseQABOHNrZXB0aWNfc3RydWNrmQEBEGJvb2wAAOkNCDhwYWxsZXRfc29jaWV0eRRUYWxseQAACAEkYXBwcm92YWxzOAEkVm90ZUNvdW50AAEocmVqZWN0aW9uczgBJFZvdGVDb3VudAAA7Q0AAAQIBAQA8Q0IOHBhbGxldF9zb2NpZXR5EFZvdGUAAAgBHGFwcHJvdmWZAQEQYm9vbAABGHdlaWdodDgBDHUzMgAA9Q0MTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AAD5DQg4cGFsbGV0X3NvY2lldHkwSW50YWtlUmVjb3JkCCRBY2NvdW50SWQBBBxCYWxhbmNlAZUBAAwBDHdobwQBJEFjY291bnRJZAABDGJpZJUBARxCYWxhbmNlAAEUcm91bmQ4AShSb3VuZEluZGV4AAD9DQAABAwEBOkNAAEODDhwYWxsZXRfc29jaWV0eRhwYWxsZXQURXJyb3IIBFQABEkAAYQkTm90TWVtYmVyAAAEVFVzZXIgaXMgbm90IGEgbWVtYmVyLjRBbHJlYWR5TWVtYmVyAAEEZFVzZXIgaXMgYWxyZWFkeSBhIG1lbWJlci4kU3VzcGVuZGVkAAIESFVzZXIgaXMgc3VzcGVuZGVkLjBOb3RTdXNwZW5kZWQAAwRYVXNlciBpcyBub3Qgc3VzcGVuZGVkLiBOb1BheW91dAAEBEhOb3RoaW5nIHRvIHBheW91dC44QWxyZWFkeUZvdW5kZWQABQRgU29jaWV0eSBhbHJlYWR5IGZvdW5kZWQuPEluc3VmZmljaWVudFBvdAAGBJhOb3QgZW5vdWdoIGluIHBvdCB0byBhY2NlcHQgY2FuZGlkYXRlLjxBbHJlYWR5Vm91Y2hpbmcABwTkTWVtYmVyIGlzIGFscmVhZHkgdm91Y2hpbmcgb3IgYmFubmVkIGZyb20gdm91Y2hpbmcgYWdhaW4uTE5vdFZvdWNoaW5nT25CaWRkZXIACARcTWVtYmVyIGlzIG5vdCB2b3VjaGluZy4QSGVhZAAJBJBDYW5ub3QgcmVtb3ZlIHRoZSBoZWFkIG9mIHRoZSBjaGFpbi4cRm91bmRlcgAKBGhDYW5ub3QgcmVtb3ZlIHRoZSBmb3VuZGVyLihBbHJlYWR5QmlkAAsEcFVzZXIgaGFzIGFscmVhZHkgbWFkZSBhIGJpZC5AQWxyZWFkeUNhbmRpZGF0ZQAMBHBVc2VyIGlzIGFscmVhZHkgYSBjYW5kaWRhdGUuME5vdENhbmRpZGF0ZQANBGBVc2VyIGlzIG5vdCBhIGNhbmRpZGF0ZS4oTWF4TWVtYmVycwAOBIBUb28gbWFueSBtZW1iZXJzIGluIHRoZSBzb2NpZXR5LihOb3RGb3VuZGVyAA8EeFRoZSBjYWxsZXIgaXMgbm90IHRoZSBmb3VuZGVyLhxOb3RIZWFkABAEbFRoZSBjYWxsZXIgaXMgbm90IHRoZSBoZWFkLixOb3RBcHByb3ZlZAARBC0BVGhlIG1lbWJlcnNoaXAgY2Fubm90IGJlIGNsYWltZWQgYXMgdGhlIGNhbmRpZGF0ZSB3YXMgbm90IGNsZWFybHkgYXBwcm92ZWQuLE5vdFJlamVjdGVkABIEJQFUaGUgY2FuZGlkYXRlIGNhbm5vdCBiZSBraWNrZWQgYXMgdGhlIGNhbmRpZGF0ZSB3YXMgbm90IGNsZWFybHkgcmVqZWN0ZWQuIEFwcHJvdmVkABMEGQFUaGUgY2FuZGlkYWN5IGNhbm5vdCBiZSBkcm9wcGVkIGFzIHRoZSBjYW5kaWRhdGUgd2FzIGNsZWFybHkgYXBwcm92ZWQuIFJlamVjdGVkABQEHQFUaGUgY2FuZGlkYWN5IGNhbm5vdCBiZSBiZXN0b3dlZCBhcyB0aGUgY2FuZGlkYXRlIHdhcyBjbGVhcmx5IHJlamVjdGVkLihJblByb2dyZXNzABUEFQFUaGUgY2FuZGlkYWN5IGNhbm5vdCBiZSBjb25jbHVkZWQgYXMgdGhlIHZvdGluZyBpcyBzdGlsbCBpbiBwcm9ncmVzcy4gVG9vRWFybHkAFgRBAVRoZSBjYW5kaWRhY3kgY2Fubm90IGJlIHBydW5lZCB1bnRpbCBhIGZ1bGwgYWRkaXRpb25hbCBpbnRha2UgcGVyaW9kIGhhcyBwYXNzZWQuFFZvdGVkABcEaFRoZSBza2VwdGljIGFscmVhZHkgdm90ZWQuHEV4cGlyZWQAGATwVGhlIHNrZXB0aWMgbmVlZCBub3Qgdm90ZSBvbiBjYW5kaWRhdGVzIGZyb20gZXhwaXJlZCByb3VuZHMuJE5vdEJpZGRlcgAZBFRVc2VyIGlzIG5vdCBhIGJpZGRlci4oTm9EZWZlbmRlcgAaBHxUaGVyZSBpcyBubyBkZWZlbmRlciBjdXJyZW50bHkuIE5vdEdyb3VwABsEUEdyb3VwIGRvZXNuJ3QgZXhpc3QuPEFscmVhZHlFbGV2YXRlZAAcBLBUaGUgbWVtYmVyIGlzIGFscmVhZHkgZWxldmF0ZWQgdG8gdGhpcyByYW5rLjxBbHJlYWR5UHVuaXNoZWQAHQTcVGhlIHNrZXB0aWMgaGFzIGFscmVhZHkgYmVlbiBwdW5pc2hlZCBmb3IgdGhpcyBvZmZlbmNlLkRJbnN1ZmZpY2llbnRGdW5kcwAeBMBGdW5kcyBhcmUgaW5zdWZmaWNpZW50IHRvIHBheSBvZmYgc29jaWV0eSBkZWJ0cy4cTm9Wb3RlcwAfBNBUaGUgY2FuZGlkYXRlL2RlZmVuZGVyIGhhcyBubyBzdGFsZSB2b3RlcyB0byByZW1vdmUuJE5vRGVwb3NpdAAgBKhUaGVyZSBpcyBubyBkZXBvc2l0IGFzc29jaWF0ZWQgd2l0aCBhIGJpZC4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuBQ4MNHBhbGxldF9yZXZpdmUIdm0gQ29kZUluZm8EBFQAABgBFG93bmVyBAE4QWNjb3VudElkT2Y8VD4AARxkZXBvc2l0kQEBMEJhbGFuY2VPZjxUPgABIHJlZmNvdW50uAEMdTY0AAEgY29kZV9sZW44AQx1MzIAASRjb2RlX3R5cGUJDgEwQnl0ZWNvZGVUeXBlAAFEYmVoYXZpb3VyX3ZlcnNpb244AQx1MzIAAAkODDRwYWxsZXRfcmV2aXZlCHZtMEJ5dGVjb2RlVHlwZQABCAxQdm0AAAAMRXZtAAEAAA0ODDRwYWxsZXRfcmV2aXZlHHN0b3JhZ2UsQWNjb3VudEluZm8EBFQAAAgBMGFjY291bnRfdHlwZREOAThBY2NvdW50VHlwZTxUPgABEGR1c3Q4AQx1MzIAABEODDRwYWxsZXRfcmV2aXZlHHN0b3JhZ2UsQWNjb3VudFR5cGUEBFQAAQggQ29udHJhY3QEABUOATxDb250cmFjdEluZm88VD4AAAAMRU9BAAEAABUODDRwYWxsZXRfcmV2aXZlHHN0b3JhZ2UwQ29udHJhY3RJbmZvBARUAAAgARx0cmllX2lkXQQBGFRyaWVJZAABJGNvZGVfaGFzaEABNHNwX2NvcmU6OkgyNTYAATRzdG9yYWdlX2J5dGVzOAEMdTMyAAE0c3RvcmFnZV9pdGVtczgBDHUzMgABUHN0b3JhZ2VfYnl0ZV9kZXBvc2l0lQEBMEJhbGFuY2VPZjxUPgABUHN0b3JhZ2VfaXRlbV9kZXBvc2l0lQEBMEJhbGFuY2VPZjxUPgABUHN0b3JhZ2VfYmFzZV9kZXBvc2l0lQEBMEJhbGFuY2VPZjxUPgABSGltbXV0YWJsZV9kYXRhX2xlbjgBDHUzMgAAGQ4MTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AAAdDgw0cGFsbGV0X3Jldml2ZRxzdG9yYWdlRERlbGV0aW9uUXVldWVJdGVtBARUAAAIARx0cmllX2lkXQQBGFRyaWVJZAABKGFjY291bnRfaWQEAThBY2NvdW50SWRPZjxUPgAAIQ4MNHBhbGxldF9yZXZpdmUcc3RvcmFnZVBEZWxldGlvblF1ZXVlTWFuYWdlcgQEVAAACAE4aW5zZXJ0X2NvdW50ZXI4AQx1MzIAAThkZWxldGVfY291bnRlcjgBDHUzMgAAJQ4UNHBhbGxldF9yZXZpdmUMZXZtDGFwaTRycGNfdHlwZXNfZ2VuFEJsb2NrAABsAUBiYXNlX2ZlZV9wZXJfZ2FzBQUBEFUyNTYAATRibG9iX2dhc191c2VkBQUBEFUyNTYAAShkaWZmaWN1bHR5BQUBEFUyNTYAATxleGNlc3NfYmxvYl9nYXMFBQEQVTI1NgABKGV4dHJhX2RhdGEpDgEUQnl0ZXMAASRnYXNfbGltaXQFBQEQVTI1NgABIGdhc191c2VkBQUBEFUyNTYAARBoYXNoQAEQSDI1NgABKGxvZ3NfYmxvb20tDgEgQnl0ZXMyNTYAARRtaW5lcv0EARxBZGRyZXNzAAEgbWl4X2hhc2hAARBIMjU2AAEUbm9uY2U1DgEYQnl0ZXM4AAEYbnVtYmVyBQUBEFUyNTYAAWBwYXJlbnRfYmVhY29uX2Jsb2NrX3Jvb3R5BwEwT3B0aW9uPEgyNTY+AAEscGFyZW50X2hhc2hAARBIMjU2AAE0cmVjZWlwdHNfcm9vdEABEEgyNTYAATRyZXF1ZXN0c19oYXNoeQcBME9wdGlvbjxIMjU2PgABMHNoYV8zX3VuY2xlc0ABEEgyNTYAARBzaXplBQUBEFUyNTYAAShzdGF0ZV9yb290QAEQSDI1NgABJHRpbWVzdGFtcAUFARBVMjU2AAFAdG90YWxfZGlmZmljdWx0eTkOATBPcHRpb248VTI1Nj4AATB0cmFuc2FjdGlvbnM9DgFgSGFzaGVzT3JUcmFuc2FjdGlvbkluZm9zAAFEdHJhbnNhY3Rpb25zX3Jvb3RAARBIMjU2AAEYdW5jbGVz8AEkVmVjPEgyNTY+AAEsd2l0aGRyYXdhbHOJDgE8VmVjPFdpdGhkcmF3YWw+AAFAd2l0aGRyYXdhbHNfcm9vdEABEEgyNTYAACkOFDRwYWxsZXRfcmV2aXZlDGV2bQxhcGkQYnl0ZRRCeXRlcwAABAAYARxWZWM8dTg+AAAtDhQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpEGJ5dGUgQnl0ZXMyNTYAAAQAMQ4BJFt1ODsgMjU2XQAAMQ4AAAMAAQAADAA1DhQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpEGJ5dGUYQnl0ZXM4AAAEAJUCARxbdTg7IDhdAAA5DgQYT3B0aW9uBARUAQUFAQgQTm9uZQAAABBTb21lBAAFBQAAAQAAPQ4UNHBhbGxldF9yZXZpdmUMZXZtDGFwaTRycGNfdHlwZXNfZ2VuYEhhc2hlc09yVHJhbnNhY3Rpb25JbmZvcwABCBhIYXNoZXMEAPABJFZlYzxIMjU2PgAAAEBUcmFuc2FjdGlvbkluZm9zBABBDgFQVmVjPFRyYW5zYWN0aW9uSW5mbz4AAQAAQQ4AAAJFDgBFDhQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpNHJwY190eXBlc19nZW48VHJhbnNhY3Rpb25JbmZvAAAYAShibG9ja19oYXNoQAEQSDI1NgABMGJsb2NrX251bWJlcgUFARBVMjU2AAEQZnJvbf0EARxBZGRyZXNzAAEQaGFzaEABEEgyNTYAAUR0cmFuc2FjdGlvbl9pbmRleAUFARBVMjU2AAFIdHJhbnNhY3Rpb25fc2lnbmVkSQ4BRFRyYW5zYWN0aW9uU2lnbmVkAABJDhQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpNHJwY190eXBlc19nZW5EVHJhbnNhY3Rpb25TaWduZWQAARRUVHJhbnNhY3Rpb243NzAyU2lnbmVkBABNDgFUVHJhbnNhY3Rpb243NzAyU2lnbmVkAAAAVFRyYW5zYWN0aW9uNDg0NFNpZ25lZAQAZQ4BVFRyYW5zYWN0aW9uNDg0NFNpZ25lZAABAFRUcmFuc2FjdGlvbjE1NTlTaWduZWQEAG0OAVRUcmFuc2FjdGlvbjE1NTlTaWduZWQAAgBUVHJhbnNhY3Rpb24yOTMwU2lnbmVkBAB5DgFUVHJhbnNhY3Rpb24yOTMwU2lnbmVkAAMAXFRyYW5zYWN0aW9uTGVnYWN5U2lnbmVkBACBDgFcVHJhbnNhY3Rpb25MZWdhY3lTaWduZWQABAAATQ4UNHBhbGxldF9yZXZpdmUMZXZtDGFwaTRycGNfdHlwZXNfZ2VuVFRyYW5zYWN0aW9uNzcwMlNpZ25lZAAAFAFkdHJhbnNhY3Rpb25fNzcwMl91bnNpZ25lZFEOAVxUcmFuc2FjdGlvbjc3MDJVbnNpZ25lZAABBHIFBQEQVTI1NgABBHMFBQEQVTI1NgABBHY5DgEwT3B0aW9uPFUyNTY+AAEgeV9wYXJpdHkFBQEQVTI1NgAAUQ4UNHBhbGxldF9yZXZpdmUMZXZtDGFwaTRycGNfdHlwZXNfZ2VuXFRyYW5zYWN0aW9uNzcwMlVuc2lnbmVkAAAsASxhY2Nlc3NfbGlzdFUOAShBY2Nlc3NMaXN0AAFIYXV0aG9yaXphdGlvbl9saXN0XQ4BbFZlYzxBdXRob3JpemF0aW9uTGlzdEVudHJ5PgABIGNoYWluX2lkBQUBEFUyNTYAAQxnYXMFBQEQVTI1NgABFGlucHV0KQ4BFEJ5dGVzAAE8bWF4X2ZlZV9wZXJfZ2FzBQUBEFUyNTYAAWBtYXhfcHJpb3JpdHlfZmVlX3Blcl9nYXMFBQEQVTI1NgABFG5vbmNlBQUBEFUyNTYAAQh0b/0EARxBZGRyZXNzAAEYciN0eXBlDAEsVHlwZUVpcDc3MDIAARR2YWx1ZQUFARBVMjU2AABVDgAAAlkOAFkOFDRwYWxsZXRfcmV2aXZlDGV2bQxhcGk0cnBjX3R5cGVzX2dlbjxBY2Nlc3NMaXN0RW50cnkAAAgBHGFkZHJlc3P9BAEcQWRkcmVzcwABMHN0b3JhZ2Vfa2V5c/ABJFZlYzxIMjU2PgAAXQ4AAAJhDgBhDhQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpNHJwY190eXBlc19nZW5YQXV0aG9yaXphdGlvbkxpc3RFbnRyeQAAGAEgY2hhaW5faWQFBQEQVTI1NgABHGFkZHJlc3P9BAEcQWRkcmVzcwABFG5vbmNlBQUBEFUyNTYAASB5X3Bhcml0eQUFARBVMjU2AAEEcgUFARBVMjU2AAEEcwUFARBVMjU2AABlDhQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpNHJwY190eXBlc19nZW5UVHJhbnNhY3Rpb240ODQ0U2lnbmVkAAAQAWR0cmFuc2FjdGlvbl80ODQ0X3Vuc2lnbmVkaQ4BXFRyYW5zYWN0aW9uNDg0NFVuc2lnbmVkAAEEcgUFARBVMjU2AAEEcwUFARBVMjU2AAEgeV9wYXJpdHkFBQEQVTI1NgAAaQ4UNHBhbGxldF9yZXZpdmUMZXZtDGFwaTRycGNfdHlwZXNfZ2VuXFRyYW5zYWN0aW9uNDg0NFVuc2lnbmVkAAAwASxhY2Nlc3NfbGlzdFUOAShBY2Nlc3NMaXN0AAFUYmxvYl92ZXJzaW9uZWRfaGFzaGVz8AEkVmVjPEgyNTY+AAEgY2hhaW5faWQFBQEQVTI1NgABDGdhcwUFARBVMjU2AAEUaW5wdXQpDgEUQnl0ZXMAAVBtYXhfZmVlX3Blcl9ibG9iX2dhcwUFARBVMjU2AAE8bWF4X2ZlZV9wZXJfZ2FzBQUBEFUyNTYAAWBtYXhfcHJpb3JpdHlfZmVlX3Blcl9nYXMFBQEQVTI1NgABFG5vbmNlBQUBEFUyNTYAAQh0b/0EARxBZGRyZXNzAAEYciN0eXBlDAEsVHlwZUVpcDQ4NDQAARR2YWx1ZQUFARBVMjU2AABtDhQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpNHJwY190eXBlc19nZW5UVHJhbnNhY3Rpb24xNTU5U2lnbmVkAAAUAWR0cmFuc2FjdGlvbl8xNTU5X3Vuc2lnbmVkcQ4BXFRyYW5zYWN0aW9uMTU1OVVuc2lnbmVkAAEEcgUFARBVMjU2AAEEcwUFARBVMjU2AAEEdjkOATBPcHRpb248VTI1Nj4AASB5X3Bhcml0eQUFARBVMjU2AABxDhQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpNHJwY190eXBlc19nZW5cVHJhbnNhY3Rpb24xNTU5VW5zaWduZWQAACwBLGFjY2Vzc19saXN0VQ4BKEFjY2Vzc0xpc3QAASBjaGFpbl9pZAUFARBVMjU2AAEMZ2FzBQUBEFUyNTYAASRnYXNfcHJpY2UFBQEQVTI1NgABFGlucHV0KQ4BFEJ5dGVzAAE8bWF4X2ZlZV9wZXJfZ2FzBQUBEFUyNTYAAWBtYXhfcHJpb3JpdHlfZmVlX3Blcl9nYXMFBQEQVTI1NgABFG5vbmNlBQUBEFUyNTYAAQh0b3UOATxPcHRpb248QWRkcmVzcz4AARhyI3R5cGUMASxUeXBlRWlwMTU1OQABFHZhbHVlBQUBEFUyNTYAAHUOBBhPcHRpb24EBFQB/QQBCBBOb25lAAAAEFNvbWUEAP0EAAABAAB5DhQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpNHJwY190eXBlc19nZW5UVHJhbnNhY3Rpb24yOTMwU2lnbmVkAAAUAWR0cmFuc2FjdGlvbl8yOTMwX3Vuc2lnbmVkfQ4BXFRyYW5zYWN0aW9uMjkzMFVuc2lnbmVkAAEEcgUFARBVMjU2AAEEcwUFARBVMjU2AAEEdjkOATBPcHRpb248VTI1Nj4AASB5X3Bhcml0eQUFARBVMjU2AAB9DhQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpNHJwY190eXBlc19nZW5cVHJhbnNhY3Rpb24yOTMwVW5zaWduZWQAACQBLGFjY2Vzc19saXN0VQ4BKEFjY2Vzc0xpc3QAASBjaGFpbl9pZAUFARBVMjU2AAEMZ2FzBQUBEFUyNTYAASRnYXNfcHJpY2UFBQEQVTI1NgABFGlucHV0KQ4BFEJ5dGVzAAEUbm9uY2UFBQEQVTI1NgABCHRvdQ4BPE9wdGlvbjxBZGRyZXNzPgABGHIjdHlwZQwBLFR5cGVFaXAyOTMwAAEUdmFsdWUFBQEQVTI1NgAAgQ4UNHBhbGxldF9yZXZpdmUMZXZtDGFwaTRycGNfdHlwZXNfZ2VuXFRyYW5zYWN0aW9uTGVnYWN5U2lnbmVkAAAQAWx0cmFuc2FjdGlvbl9sZWdhY3lfdW5zaWduZWSFDgFkVHJhbnNhY3Rpb25MZWdhY3lVbnNpZ25lZAABBHIFBQEQVTI1NgABBHMFBQEQVTI1NgABBHYFBQEQVTI1NgAAhQ4UNHBhbGxldF9yZXZpdmUMZXZtDGFwaTRycGNfdHlwZXNfZ2VuZFRyYW5zYWN0aW9uTGVnYWN5VW5zaWduZWQAACABIGNoYWluX2lkOQ4BME9wdGlvbjxVMjU2PgABDGdhcwUFARBVMjU2AAEkZ2FzX3ByaWNlBQUBEFUyNTYAARRpbnB1dCkOARRCeXRlcwABFG5vbmNlBQUBEFUyNTYAAQh0b3UOATxPcHRpb248QWRkcmVzcz4AARhyI3R5cGUMAShUeXBlTGVnYWN5AAEUdmFsdWUFBQEQVTI1NgAAiQ4AAAKNDgCNDhQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpNHJwY190eXBlc19nZW4oV2l0aGRyYXdhbAAAEAEcYWRkcmVzc/0EARxBZGRyZXNzAAEYYW1vdW50BQUBEFUyNTYAARRpbmRleAUFARBVMjU2AAE8dmFsaWRhdG9yX2luZGV4BQUBEFUyNTYAAJEOAAAClQ4AlQ4QNHBhbGxldF9yZXZpdmUMZXZtKGJsb2NrX2hhc2g4UmVjZWlwdEdhc0luZm8AAAgBIGdhc191c2VkBQUBEFUyNTYAAUxlZmZlY3RpdmVfZ2FzX3ByaWNlBQUBEFUyNTYAAJkOFDRwYWxsZXRfcmV2aXZlDGV2bShibG9ja19oYXNoNGJsb2NrX2J1aWxkZXJYRXRoZXJldW1CbG9ja0J1aWxkZXJJUgQEVAAAIAFgdHJhbnNhY3Rpb25fcm9vdF9idWlsZGVynQ4BYEluY3JlbWVudGFsSGFzaEJ1aWxkZXJJUgABVHJlY2VpcHRzX3Jvb3RfYnVpbGRlcp0OAWBJbmNyZW1lbnRhbEhhc2hCdWlsZGVySVIAAUBiYXNlX2ZlZV9wZXJfZ2FzBQUBEFUyNTYAATxibG9ja19nYXNfbGltaXQFBQEQVTI1NgABIGdhc191c2VkBQUBEFUyNTYAAShsb2dzX2Jsb29tMQ4BWFt1ODsgQkxPT01fU0laRV9CWVRFU10AASR0eF9oYXNoZXPwASRWZWM8SDI1Nj4AASBnYXNfaW5mb5EOAUxWZWM8UmVjZWlwdEdhc0luZm8+AACdDhQ0cGFsbGV0X3Jldml2ZQxldm0oYmxvY2tfaGFzaDBoYXNoX2J1aWxkZXJgSW5jcmVtZW50YWxIYXNoQnVpbGRlcklSAAAoAQxrZXkYARxWZWM8dTg+AAEodmFsdWVfdHlwZQwBCHU4AAE0YnVpbGRlcl92YWx1ZRgBHFZlYzx1OD4AARRzdGFjazQBMFZlYzxWZWM8dTg+PgABLHN0YXRlX21hc2tzmQcBIFZlYzx1MTY+AAEodHJlZV9tYXNrc5kHASBWZWM8dTE2PgABKGhhc2hfbWFza3OZBwEgVmVjPHUxNj4AAUhzdG9yZWRfaW5fZGF0YWJhc2WZAQEQYm9vbAABHHJscF9idWYYARxWZWM8dTg+AAEUaW5kZXgoAQx1NjQAAKEOBBhPcHRpb24EBFQBMAEIEE5vbmUAAAAQU29tZQQAMAAAAQAApQ4MNHBhbGxldF9yZXZpdmUUZGVidWc0RGVidWdTZXR0aW5ncwAAEAF0YWxsb3dfdW5saW1pdGVkX2NvbnRyYWN0X3NpemWZAQEQYm9vbAABPGJ5cGFzc19laXBfMzYwN5kBARBib29sAAEgcHZtX2xvZ3OZAQEQYm9vbAABZGRpc2FibGVfZXhlY3V0aW9uX3RyYWNpbmeZAQEQYm9vbAAAqQ4MNHBhbGxldF9yZXZpdmUYcGFsbGV0FEVycm9yBARUAAHoPEludmFsaWRTY2hlZHVsZQABBBkBSW52YWxpZCBzY2hlZHVsZSBzdXBwbGllZCwgZS5nLiB3aXRoIHplcm8gd2VpZ2h0IG9mIGEgYmFzaWMgb3BlcmF0aW9uLkBJbnZhbGlkQ2FsbEZsYWdzAAIENQFJbnZhbGlkIGNvbWJpbmF0aW9uIG9mIGZsYWdzIHN1cHBsaWVkIHRvIGBzZWFsX2NhbGxgIG9yIGBzZWFsX2RlbGVnYXRlX2NhbGxgLiBPdXRPZkdhcwADBLhUaGUgZXhlY3V0ZWQgY29udHJhY3QgZXhoYXVzdGVkIGl0cyBnYXMgbGltaXQuOFRyYW5zZmVyRmFpbGVkAAQINQFQZXJmb3JtaW5nIHRoZSByZXF1ZXN0ZWQgdHJhbnNmZXIgZmFpbGVkLiBQcm9iYWJseSBiZWNhdXNlIHRoZXJlIGlzbid0IGVub3VnaJRmcmVlIGJhbGFuY2UgaW4gdGhlIHNlbmRlcidzIGFjY291bnQuTE1heENhbGxEZXB0aFJlYWNoZWQABQghAVBlcmZvcm1pbmcgYSBjYWxsIHdhcyBkZW5pZWQgYmVjYXVzZSB0aGUgY2FsbGluZyBkZXB0aCByZWFjaGVkIHRoZSBsaW1pdJRvZiB3aGF0IGlzIHNwZWNpZmllZCBpbiB0aGUgc2NoZWR1bGUuQENvbnRyYWN0Tm90Rm91bmQABgS8Tm8gY29udHJhY3Qgd2FzIGZvdW5kIGF0IHRoZSBzcGVjaWZpZWQgYWRkcmVzcy4wQ29kZU5vdEZvdW5kAAcExE5vIGNvZGUgY291bGQgYmUgZm91bmQgYXQgdGhlIHN1cHBsaWVkIGNvZGUgaGFzaC5AQ29kZUluZm9Ob3RGb3VuZAAIBNhObyBjb2RlIGluZm8gY291bGQgYmUgZm91bmQgYXQgdGhlIHN1cHBsaWVkIGNvZGUgaGFzaC4sT3V0T2ZCb3VuZHMACQQlAUEgYnVmZmVyIG91dHNpZGUgb2Ygc2FuZGJveCBtZW1vcnkgd2FzIHBhc3NlZCB0byBhIGNvbnRyYWN0IEFQSSBmdW5jdGlvbi44RGVjb2RpbmdGYWlsZWQACgQpAUlucHV0IHBhc3NlZCB0byBhIGNvbnRyYWN0IEFQSSBmdW5jdGlvbiBmYWlsZWQgdG8gZGVjb2RlIGFzIGV4cGVjdGVkIHR5cGUuPENvbnRyYWN0VHJhcHBlZAALBIhDb250cmFjdCB0cmFwcGVkIGR1cmluZyBleGVjdXRpb24uNFZhbHVlVG9vTGFyZ2UADAT0RXZlbnQgYm9keSBvciBzdG9yYWdlIGl0ZW0gZXhjZWVkcyBbYGxpbWl0czo6U1RPUkFHRV9CWVRFU2BdLmBUZXJtaW5hdGVkV2hpbGVSZWVudHJhbnQADQgZAVRlcm1pbmF0aW9uIG9mIGEgY29udHJhY3QgaXMgbm90IGFsbG93ZWQgd2hpbGUgdGhlIGNvbnRyYWN0IGlzIGFscmVhZHngb24gdGhlIGNhbGwgc3RhY2suIENhbiBiZSB0cmlnZ2VyZWQgYnkgYHNlYWxfdGVybWluYXRlYC44SW5wdXRGb3J3YXJkZWQADgRBAWBzZWFsX2NhbGxgIGZvcndhcmRlZCB0aGlzIGNvbnRyYWN0cyBpbnB1dC4gSXQgdGhlcmVmb3JlIGlzIG5vIGxvbmdlciBhdmFpbGFibGUuNFRvb01hbnlUb3BpY3MADwQdAVRoZSBhbW91bnQgb2YgdG9waWNzIHBhc3NlZCB0byBgc2VhbF9kZXBvc2l0X2V2ZW50c2AgZXhjZWVkcyB0aGUgbGltaXQuRER1cGxpY2F0ZUNvbnRyYWN0ABIEyEEgY29udHJhY3Qgd2l0aCB0aGUgc2FtZSBBY2NvdW50SWQgYWxyZWFkeSBleGlzdHMuXFRlcm1pbmF0ZWRJbkNvbnN0cnVjdG9yABMMuEEgY29udHJhY3Qgc2VsZiBkZXN0cnVjdGVkIGluIGl0cyBjb25zdHJ1Y3Rvci4A0FRoaXMgY2FuIGJlIHRyaWdnZXJlZCBieSBhIGNhbGwgdG8gYHNlYWxfdGVybWluYXRlYC5AUmVlbnRyYW5jZURlbmllZAAUBA0BQSBjYWxsIHRyaWVkIHRvIGludm9rZSBhIGNvbnRyYWN0IHRoYXQgaXMgZmxhZ2dlZCBhcyBub24tcmVlbnRyYW50LjxSZWVudGVyZWRQYWxsZXQAFQQtAUEgY29udHJhY3QgY2FsbGVkIGludG8gdGhlIHJ1bnRpbWUgd2hpY2ggdGhlbiBjYWxsZWQgYmFjayBpbnRvIHRoaXMgcGFsbGV0LkRTdGF0ZUNoYW5nZURlbmllZAAWBE0BQSBjb250cmFjdCBhdHRlbXB0ZWQgdG8gaW52b2tlIGEgc3RhdGUgbW9kaWZ5aW5nIEFQSSB3aGlsZSBiZWluZyBpbiByZWFkLW9ubHkgbW9kZS5wU3RvcmFnZURlcG9zaXROb3RFbm91Z2hGdW5kcwAXBCEBT3JpZ2luIGRvZXNuJ3QgaGF2ZSBlbm91Z2ggYmFsYW5jZSB0byBwYXkgdGhlIHJlcXVpcmVkIHN0b3JhZ2UgZGVwb3NpdHMucFN0b3JhZ2VEZXBvc2l0TGltaXRFeGhhdXN0ZWQAGAQNAU1vcmUgc3RvcmFnZSB3YXMgY3JlYXRlZCB0aGFuIGFsbG93ZWQgYnkgdGhlIHN0b3JhZ2UgZGVwb3NpdCBsaW1pdC4kQ29kZUluVXNlABkESQFDb2RlIHJlbW92YWwgd2FzIGRlbmllZCBiZWNhdXNlIHRoZSBjb2RlIGlzIHN0aWxsIGluIHVzZSBieSBhdCBsZWFzdCBvbmUgY29udHJhY3QuQENvbnRyYWN0UmV2ZXJ0ZWQAGhAlAVRoZSBjb250cmFjdCByYW4gdG8gY29tcGxldGlvbiBidXQgZGVjaWRlZCB0byByZXZlcnQgaXRzIHN0b3JhZ2UgY2hhbmdlcy5JAVBsZWFzZSBub3RlIHRoYXQgdGhpcyBlcnJvciBpcyBvbmx5IHJldHVybmVkIGZyb20gZXh0cmluc2ljcy4gV2hlbiBjYWxsZWQgZGlyZWN0bHldAW9yIHZpYSBSUEMgYW4gYE9rYCB3aWxsIGJlIHJldHVybmVkLiBJbiB0aGlzIGNhc2UgdGhlIGNhbGxlciBuZWVkcyB0byBpbnNwZWN0IHRoZSBmbGFnc8R0byBkZXRlcm1pbmUgd2hldGhlciBhIHJldmVyc2lvbiBoYXMgdGFrZW4gcGxhY2UuMENvZGVSZWplY3RlZAAbEBkBVGhlIGNvbnRyYWN0IGZhaWxlZCB0byBjb21waWxlIG9yIGlzIG1pc3NpbmcgdGhlIGNvcnJlY3QgZW50cnkgcG9pbnRzLgBRAUEgbW9yZSBkZXRhaWxlZCBlcnJvciBjYW4gYmUgZm91bmQgb24gdGhlIG5vZGUgY29uc29sZSBpZiBkZWJ1ZyBtZXNzYWdlcyBhcmUgZW5hYmxlZJxieSBzdXBwbHlpbmcgYC1scnVudGltZTo6cmV2aXZlPWRlYnVnYC4wQmxvYlRvb0xhcmdlABwEDQFUaGUgY29kZSBibG9iIHN1cHBsaWVkIGlzIGxhcmdlciB0aGFuIFtgbGltaXRzOjpjb2RlOjpCTE9CX0JZVEVTYF0uUFN0YXRpY01lbW9yeVRvb0xhcmdlAB0E4FRoZSBjb250cmFjdCBkZWNsYXJlcyB0b28gbXVjaCBtZW1vcnkgKHJvICsgcncgKyBzdGFjaykuSEJhc2ljQmxvY2tUb29MYXJnZQAeBPxUaGUgcHJvZ3JhbSBjb250YWlucyBhIGJhc2ljIGJsb2NrIHRoYXQgaXMgbGFyZ2VyIHRoYW4gYWxsb3dlZC5ISW52YWxpZEluc3RydWN0aW9uAB8EsFRoZSBwcm9ncmFtIGNvbnRhaW5zIGFuIGludmFsaWQgaW5zdHJ1Y3Rpb24ueE1heERlbGVnYXRlRGVwZW5kZW5jaWVzUmVhY2hlZAAgBBUBVGhlIGNvbnRyYWN0IGhhcyByZWFjaGVkIGl0cyBtYXhpbXVtIG51bWJlciBvZiBkZWxlZ2F0ZSBkZXBlbmRlbmNpZXMuaERlbGVnYXRlRGVwZW5kZW5jeU5vdEZvdW5kACEEFQFUaGUgZGVwZW5kZW5jeSB3YXMgbm90IGZvdW5kIGluIHRoZSBjb250cmFjdCdzIGRlbGVnYXRlIGRlcGVuZGVuY2llcy58RGVsZWdhdGVEZXBlbmRlbmN5QWxyZWFkeUV4aXN0cwAiBPhUaGUgY29udHJhY3QgYWxyZWFkeSBkZXBlbmRzIG9uIHRoZSBnaXZlbiBkZWxlZ2F0ZSBkZXBlbmRlbmN5LoRDYW5ub3RBZGRTZWxmQXNEZWxlZ2F0ZURlcGVuZGVuY3kAIwQpAUNhbiBub3QgYWRkIGEgZGVsZWdhdGUgZGVwZW5kZW5jeSB0byB0aGUgY29kZSBoYXNoIG9mIHRoZSBjb250cmFjdCBpdHNlbGYuVE91dE9mVHJhbnNpZW50U3RvcmFnZQAkBKxDYW4gbm90IGFkZCBtb3JlIGRhdGEgdG8gdHJhbnNpZW50IHN0b3JhZ2UuOEludmFsaWRTeXNjYWxsACUEVQFUaGUgY29udHJhY3QgdHJpZWQgdG8gY2FsbCBhIHN5c2NhbGwgd2hpY2ggZG9lcyBub3QgZXhpc3QgKGF0IGl0cyBjdXJyZW50IGFwaSBsZXZlbCkuTEludmFsaWRTdG9yYWdlRmxhZ3MAJgQFAUludmFsaWQgc3RvcmFnZSBmbGFncyB3ZXJlIHBhc3NlZCB0byBvbmUgb2YgdGhlIHN0b3JhZ2Ugc3lzY2FsbHMuPEV4ZWN1dGlvbkZhaWxlZAAnBCkBUG9sa2FWTSBmYWlsZWQgZHVyaW5nIGNvZGUgZXhlY3V0aW9uLiBQcm9iYWJseSBkdWUgdG8gYSBtYWxmb3JtZWQgcHJvZ3JhbS5cQmFsYW5jZUNvbnZlcnNpb25GYWlsZWQAKASYRmFpbGVkIHRvIGNvbnZlcnQgYSBVMjU2IHRvIGEgQmFsYW5jZS5YSW52YWxpZEltbXV0YWJsZUFjY2VzcwAqCDEBSW1tdXRhYmxlIGRhdGEgY2FuIG9ubHkgYmUgc2V0IGR1cmluZyBkZXBsb3lzIGFuZCBvbmx5IGJlIHJlYWQgZHVyaW5nIGNhbGxzLjUBQWRkaXRpb25hbGx5LCBpdCBpcyBvbmx5IHZhbGlkIHRvIHNldCB0aGUgZGF0YSBvbmNlIGFuZCBpdCBtdXN0IG5vdCBiZSBlbXB0eS48QWNjb3VudFVubWFwcGVkACsMUQFBbiBgQWNjb3VudElEMzJgIGFjY291bnQgdHJpZWQgdG8gaW50ZXJhY3Qgd2l0aCB0aGUgcGFsbGV0IHdpdGhvdXQgaGF2aW5nIGEgbWFwcGluZy4AKQFDYWxsIFtgUGFsbGV0OjptYXBfYWNjb3VudGBdIGluIG9yZGVyIHRvIGNyZWF0ZSBhIG1hcHBpbmcgZm9yIHRoZSBhY2NvdW50LlBBY2NvdW50QWxyZWFkeU1hcHBlZAAsBLxUcmllZCB0byBtYXAgYW4gYWNjb3VudCB0aGF0IGlzIGFscmVhZHkgbWFwcGVkLmRJbnZhbGlkR2VuZXJpY1RyYW5zYWN0aW9uAC0E2FRoZSB0cmFuc2FjdGlvbiB1c2VkIHRvIGRyeS1ydW4gYSBjb250cmFjdCBpcyBpbnZhbGlkLlxSZWZjb3VudE92ZXJPclVuZGVyZmxvdwAuBMhUaGUgcmVmY291bnQgb2YgYSBjb2RlIGVpdGhlciBvdmVyIG9yIHVuZGVyZmxvd2VkLnBVbnN1cHBvcnRlZFByZWNvbXBpbGVBZGRyZXNzAC8EfFVuc3VwcG9ydGVkIHByZWNvbXBpbGUgYWRkcmVzcy5AQ2FsbERhdGFUb29MYXJnZQAwBMBUaGUgY2FsbGRhdGEgZXhjZWVkcyBbYGxpbWl0czo6Q0FMTERBVEFfQllURVNgXS5IUmV0dXJuRGF0YVRvb0xhcmdlADEEzFRoZSByZXR1cm4gZGF0YSBleGNlZWRzIFtgbGltaXRzOjpDQUxMREFUQV9CWVRFU2BdLixJbnZhbGlkSnVtcAAyBDkBSW52YWxpZCBqdW1wIGRlc3RpbmF0aW9uLiBEeW5hbWljIGp1bXBzIHBvaW50cyB0byBpbnZhbGlkIG5vdCBqdW1wZGVzdCBvcGNvZGUuOFN0YWNrVW5kZXJmbG93ADMEuEF0dGVtcHRpbmcgdG8gcG9wIGEgdmFsdWUgZnJvbSBhbiBlbXB0eSBzdGFjay40U3RhY2tPdmVyZmxvdwA0BLRBdHRlbXB0aW5nIHRvIHB1c2ggYSB2YWx1ZSBvbnRvIGEgZnVsbCBzdGFjay40VHhGZWVPdmVyZHJhdwA1DBEBVG9vIG11Y2ggZGVwb3NpdCB3YXMgZHJhd24gZnJvbSB0aGUgc2hhcmVkIHR4ZmVlIGFuZCBkZXBvc2l0IGNyZWRpdC4AMQFUaGlzIGhhcHBlbnMgaWYgdGhlIHBhc3NlZCBgZ2FzYCBpbnNpZGUgdGhlIGV0aGVyZXVtIHRyYW5zYWN0aW9uIGlzIHRvbyBsb3cuaEV2bUNvbnN0cnVjdG9yTm9uRW1wdHlEYXRhADYM3FdoZW4gY2FsbGluZyBhbiBFVk0gY29uc3RydWN0b3IgYGRhdGFgIGhhcyB0byBiZSBlbXB0eS4AWQFFVk0gY29uc3RydWN0b3JzIGRvIG5vdCBhY2NlcHQgZGF0YS4gVGhlaXIgaW5wdXQgZGF0YSBpcyBwYXJ0IG9mIHRoZSBjb2RlIGJsb2IgaXRzZWxmLlhFdm1Db25zdHJ1Y3RlZEZyb21IYXNoADcQxFRyaWVkIHRvIGNvbnN0cnVjdCBhbiBFVk0gY29udHJhY3QgdmlhIGNvZGUgaGFzaC4AIQFFVk0gY29udHJhY3RzIGNhbiBvbmx5IGJlIGluc3RhbnRpYXRlZCB2aWEgY29kZSB1cGxvYWQgYXMgbm8gaW5pdGNvZGUgaXNAc3RvcmVkIG9uLWNoYWluLmxTdG9yYWdlUmVmdW5kTm90RW5vdWdoRnVuZHMAOAwhAVRoZSBjb250cmFjdCBkb2VzIG5vdCBoYXZlIGVub3VnaCBiYWxhbmNlIHRvIHJlZnVuZCB0aGUgc3RvcmFnZSBkZXBvc2l0LgA9AVRoaXMgaXMgYSBidWcgYW5kIHNob3VsZCBuZXZlciBoYXBwZW4uIEl0IG1lYW5zIHRoZSBhY2NvdW50aW5nIGdvdCBvdXQgb2Ygc3luYy5MU3RvcmFnZVJlZnVuZExvY2tlZAA5EF0BVGhpcyBtZWFucyB0aGVyZSBhcmUgbG9ja3Mgb24gdGhlIGNvbnRyYWN0cyBzdG9yYWdlIGRlcG9zaXQgdGhhdCBwcmV2ZW50cyByZWZ1bmRpbmcgaXQuAD0BVGhpcyB3b3VsZCBiZSB0aGUgY2FzZSBpZiB0aGUgY29udHJhY3QgdXNlZCBpdHMgc3RvcmFnZSBkZXBvc2l0cyBmb3IgZ292ZXJuYW5jZfRvciBvdGhlciBwYWxsZXRzIHRoYXQgYWxsb3cgY3JlYXRpbmcgbG9ja3Mgb3ZlciBoZWxkIGJhbGFuY2UuYFByZWNvbXBpbGVEZWxlZ2F0ZURlbmllZABAEPxDYWxsZWQgYSBwcmUtY29tcGlsZSB0aGF0IGlzIG5vdCBhbGxvd2VkIHRvIGJlIGRlbGVnYXRlIGNhbGxlZC4AJQFTb21lIHByZS1jb21waWxlIGZ1bmN0aW9ucyB3aWxsIHRyYXAgdGhlIGNhbGxlciBjb250ZXh0IGlmIGJlaW5nIGRlbGVnYXRl0GNhbGxlZCBvciBpZiB0aGVpciBjYWxsZXIgd2FzIGJlaW5nIGRlbGVnYXRlIGNhbGxlZC5MRWNkc2FSZWNvdmVyeUZhaWxlZABBBD0BRUNEU0EgcHVibGljIGtleSByZWNvdmVyeSBmYWlsZWQuIE1vc3QgcHJvYmFibHkgd3JvbmcgcmVjb3ZlcnkgaWQgb3Igc2lnbmF0dXJlLkhBdXRvTWFwcGluZ0VuYWJsZWQAQgTgTWFudWFsIG1hcHBpbmcgaXMgZGlzYWJsZWQgd2hlbiBhdXRvLW1hcHBpbmcgaXMgZW5hYmxlZC5UUGVuZGluZ0RlcG9zaXRDbGVhbnVwAEMMEQFBIGNvbnRyYWN0IGNhbm5vdCBiZSBjcmVhdGVkIGF0IHRoaXMgYWRkcmVzczogaXQgc3RpbGwgaGFzIHVuY2xlYXJlZE0BW2BOYXRpdmVEZXBvc2l0T2ZgXSBlbnRyaWVzIGZyb20gYSBwcmV2aW91c2x5IHRlcm1pbmF0ZWQgY29udHJhY3QgdGhhdCB0aGUgZGVsZXRpb25ocXVldWUgaGFzIG5vdCB5ZXQgZHJhaW5lZC4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQurQ4AAAQI/QT9BACxDhBkcGFsbGV0X2Fzc2V0c19wcmVjb21waWxlcxhwZXJtaXQYcGFsbGV0FEVycm9yBARUAAEgQEludmFsaWRTaWduYXR1cmUAAASAVGhlIHBlcm1pdCBzaWduYXR1cmUgaXMgaW52YWxpZC44U2lnbmVyTWlzbWF0Y2gAAQSQVGhlIHNpZ25lciBkb2VzIG5vdCBtYXRjaCB0aGUgb3duZXIuNFBlcm1pdEV4cGlyZWQAAgSkVGhlIHBlcm1pdCBoYXMgZXhwaXJlZCAoZGVhZGxpbmUgcGFzc2VkKS5YU2lnbmF0dXJlU1ZhbHVlVG9vSGlnaAADBAEBVGhlIHNpZ25hdHVyZSdzIGBzYCB2YWx1ZSBpcyB0b28gaGlnaCAobWFsbGVhYmlsaXR5IHByb3RlY3Rpb24pLjRJbnZhbGlkVlZhbHVlAAQElFRoZSBzaWduYXR1cmUncyBgdmAgdmFsdWUgaXMgaW52YWxpZC40Tm9uY2VPdmVyZmxvdwAFBMxOb25jZSBvdmVyZmxvdyAtIGFjY291bnQgaGFzIHVzZWQgdG9vIG1hbnkgcGVybWl0cy4wSW52YWxpZE93bmVyAAYEyFRoZSBvd25lciBhZGRyZXNzIGlzIGludmFsaWQgKGUuZy4sIHplcm8gYWRkcmVzcykuOEludmFsaWRTcGVuZGVyAAcE0FRoZSBzcGVuZGVyIGFkZHJlc3MgaXMgaW52YWxpZCAoZS5nLiwgemVybyBhZGRyZXNzKS4EiEVycm9yIHR5cGVzIGZvciB0aGUgcGVybWl0IHBhbGxldC61DghccGFsbGV0X25vbWluYXRpb25fcG9vbHMoUG9vbE1lbWJlcgQEVAAAEAEccG9vbF9pZDgBGFBvb2xJZAABGHBvaW50c5UBATBCYWxhbmNlT2Y8VD4AAXBsYXN0X3JlY29yZGVkX3Jld2FyZF9jb3VudGVyjQcBQFQ6OlJld2FyZENvdW50ZXIAATh1bmJvbmRpbmdfZXJhc7kOAeBCb3VuZGVkQlRyZWVNYXA8RXJhSW5kZXgsIEJhbGFuY2VPZjxUPiwgVDo6TWF4VW5ib25kaW5nPgAAuQ4MTGJvdW5kZWRfY29sbGVjdGlvbnNEYm91bmRlZF9idHJlZV9tYXA8Qm91bmRlZEJUcmVlTWFwDARLATgEVgGVAQRTAAAEAL0OAThCVHJlZU1hcDxLLCBWPgAAvQ4EIEJUcmVlTWFwCARLATgEVgGVAQAEANENAAAAwQ4IXHBhbGxldF9ub21pbmF0aW9uX3Bvb2xzPEJvbmRlZFBvb2xJbm5lcgQEVAAAFAEoY29tbWlzc2lvbsUOATRDb21taXNzaW9uPFQ+AAE4bWVtYmVyX2NvdW50ZXI4AQx1MzIAARhwb2ludHOVAQEwQmFsYW5jZU9mPFQ+AAEUcm9sZXPNDgFcUG9vbFJvbGVzPFQ6OkFjY291bnRJZD4AARRzdGF0ZS0FASRQb29sU3RhdGUAAMUOCFxwYWxsZXRfbm9taW5hdGlvbl9wb29scyhDb21taXNzaW9uBARUAAAUARxjdXJyZW50SQUBfE9wdGlvbjwoUGVyYmlsbCwgVDo6QWNjb3VudElkKT4AAQxtYXhBCQE8T3B0aW9uPFBlcmJpbGw+AAEsY2hhbmdlX3JhdGXJDgG8T3B0aW9uPENvbW1pc3Npb25DaGFuZ2VSYXRlPEJsb2NrTnVtYmVyRm9yPFQ+Pj4AATR0aHJvdHRsZV9mcm9t2AFkT3B0aW9uPEJsb2NrTnVtYmVyRm9yPFQ+PgABQGNsYWltX3Blcm1pc3Npb25VBQG8T3B0aW9uPENvbW1pc3Npb25DbGFpbVBlcm1pc3Npb248VDo6QWNjb3VudElkPj4AAMkOBBhPcHRpb24EBFQBUQUBCBBOb25lAAAAEFNvbWUEAFEFAAABAADNDghccGFsbGV0X25vbWluYXRpb25fcG9vbHMkUG9vbFJvbGVzBCRBY2NvdW50SWQBBAAQASRkZXBvc2l0b3IEASRBY2NvdW50SWQAARByb290QQEBRE9wdGlvbjxBY2NvdW50SWQ+AAEkbm9taW5hdG9yQQEBRE9wdGlvbjxBY2NvdW50SWQ+AAEcYm91bmNlckEBAURPcHRpb248QWNjb3VudElkPgAA0Q4IXHBhbGxldF9ub21pbmF0aW9uX3Bvb2xzKFJld2FyZFBvb2wEBFQAABQBcGxhc3RfcmVjb3JkZWRfcmV3YXJkX2NvdW50ZXKNBwFAVDo6UmV3YXJkQ291bnRlcgABbGxhc3RfcmVjb3JkZWRfdG90YWxfcGF5b3V0c5UBATBCYWxhbmNlT2Y8VD4AAVR0b3RhbF9yZXdhcmRzX2NsYWltZWSVAQEwQmFsYW5jZU9mPFQ+AAFgdG90YWxfY29tbWlzc2lvbl9wZW5kaW5nlQEBMEJhbGFuY2VPZjxUPgABYHRvdGFsX2NvbW1pc3Npb25fY2xhaW1lZJUBATBCYWxhbmNlT2Y8VD4AANUOCFxwYWxsZXRfbm9taW5hdGlvbl9wb29scyBTdWJQb29scwQEVAAACAEYbm9fZXJh2Q4BNFVuYm9uZFBvb2w8VD4AASB3aXRoX2VyYd0OAQEBQm91bmRlZEJUcmVlTWFwPEVyYUluZGV4LCBVbmJvbmRQb29sPFQ+LCBUb3RhbFVuYm9uZGluZ1Bvb2xzPFQ+PgAA2Q4IXHBhbGxldF9ub21pbmF0aW9uX3Bvb2xzKFVuYm9uZFBvb2wEBFQAAAgBGHBvaW50c5UBATBCYWxhbmNlT2Y8VD4AARxiYWxhbmNllQEBMEJhbGFuY2VPZjxUPgAA3Q4MTGJvdW5kZWRfY29sbGVjdGlvbnNEYm91bmRlZF9idHJlZV9tYXA8Qm91bmRlZEJUcmVlTWFwDARLATgEVgHZDgRTAAAEAOEOAThCVHJlZU1hcDxLLCBWPgAA4Q4EIEJUcmVlTWFwCARLATgEVgHZDgAEAOUOAAAA5Q4AAALpDgDpDgAABAg42Q4A7Q4MXHBhbGxldF9ub21pbmF0aW9uX3Bvb2xzGHBhbGxldBRFcnJvcgQEVAABmDBQb29sTm90Rm91bmQAAASIQSAoYm9uZGVkKSBwb29sIGlkIGRvZXMgbm90IGV4aXN0LkhQb29sTWVtYmVyTm90Rm91bmQAAQRsQW4gYWNjb3VudCBpcyBub3QgYSBtZW1iZXIuSFJld2FyZFBvb2xOb3RGb3VuZAACBCEBQSByZXdhcmQgcG9vbCBkb2VzIG5vdCBleGlzdC4gSW4gYWxsIGNhc2VzIHRoaXMgaXMgYSBzeXN0ZW0gbG9naWMgZXJyb3IuQFN1YlBvb2xzTm90Rm91bmQAAwRoQSBzdWIgcG9vbCBkb2VzIG5vdCBleGlzdC5kQWNjb3VudEJlbG9uZ3NUb090aGVyUG9vbAAECE0BQW4gYWNjb3VudCBpcyBhbHJlYWR5IGRlbGVnYXRpbmcgaW4gYW5vdGhlciBwb29sLiBBbiBhY2NvdW50IG1heSBvbmx5IGJlbG9uZyB0byBvbmU8cG9vbCBhdCBhIHRpbWUuOEZ1bGx5VW5ib25kaW5nAAUIPQFUaGUgbWVtYmVyIGlzIGZ1bGx5IHVuYm9uZGVkIChhbmQgdGh1cyBjYW5ub3QgYWNjZXNzIHRoZSBib25kZWQgYW5kIHJld2FyZCBwb29sqGFueW1vcmUgdG8sIGZvciBleGFtcGxlLCBjb2xsZWN0IHJld2FyZHMpLkRNYXhVbmJvbmRpbmdMaW1pdAAGBAkBVGhlIG1lbWJlciBjYW5ub3QgdW5ib25kIGZ1cnRoZXIgY2h1bmtzIGR1ZSB0byByZWFjaGluZyB0aGUgbGltaXQuRENhbm5vdFdpdGhkcmF3QW55AAcETQFOb25lIG9mIHRoZSBmdW5kcyBjYW4gYmUgd2l0aGRyYXduIHlldCBiZWNhdXNlIHRoZSBib25kaW5nIGR1cmF0aW9uIGhhcyBub3QgcGFzc2VkLkRNaW5pbXVtQm9uZE5vdE1ldAAIFCkBVGhlIGFtb3VudCBkb2VzIG5vdCBtZWV0IHRoZSBtaW5pbXVtIGJvbmQgdG8gZWl0aGVyIGpvaW4gb3IgY3JlYXRlIGEgcG9vbC4AVQFUaGUgZGVwb3NpdG9yIGNhbiBuZXZlciB1bmJvbmQgdG8gYSB2YWx1ZSBsZXNzIHRoYW4gYFBhbGxldDo6ZGVwb3NpdG9yX21pbl9ib25kYC4gVGhlXQFjYWxsZXIgZG9lcyBub3QgaGF2ZSBub21pbmF0aW5nIHBlcm1pc3Npb25zIGZvciB0aGUgcG9vbC4gTWVtYmVycyBjYW4gbmV2ZXIgdW5ib25kIHRvIGFodmFsdWUgYmVsb3cgYE1pbkpvaW5Cb25kYC4wT3ZlcmZsb3dSaXNrAAkEIQFUaGUgdHJhbnNhY3Rpb24gY291bGQgbm90IGJlIGV4ZWN1dGVkIGR1ZSB0byBvdmVyZmxvdyByaXNrIGZvciB0aGUgcG9vbC40Tm90RGVzdHJveWluZwAKCF0BQSBwb29sIG11c3QgYmUgaW4gW2BQb29sU3RhdGU6OkRlc3Ryb3lpbmdgXSBpbiBvcmRlciBmb3IgdGhlIGRlcG9zaXRvciB0byB1bmJvbmQgb3IgZm9yuG90aGVyIG1lbWJlcnMgdG8gYmUgcGVybWlzc2lvbmxlc3NseSB1bmJvbmRlZC4wTm90Tm9taW5hdG9yAAsE9FRoZSBjYWxsZXIgZG9lcyBub3QgaGF2ZSBub21pbmF0aW5nIHBlcm1pc3Npb25zIGZvciB0aGUgcG9vbC5UTm90S2lja2VyT3JEZXN0cm95aW5nAAwEPQFFaXRoZXIgYSkgdGhlIGNhbGxlciBjYW5ub3QgbWFrZSBhIHZhbGlkIGtpY2sgb3IgYikgdGhlIHBvb2wgaXMgbm90IGRlc3Ryb3lpbmcuHE5vdE9wZW4ADQRwVGhlIHBvb2wgaXMgbm90IG9wZW4gdG8gam9pbiBNYXhQb29scwAOBIRUaGUgc3lzdGVtIGlzIG1heGVkIG91dCBvbiBwb29scy44TWF4UG9vbE1lbWJlcnMADwScVG9vIG1hbnkgbWVtYmVycyBpbiB0aGUgcG9vbCBvciBzeXN0ZW0uRENhbk5vdENoYW5nZVN0YXRlABAEiFRoZSBwb29scyBzdGF0ZSBjYW5ub3QgYmUgY2hhbmdlZC5URG9lc05vdEhhdmVQZXJtaXNzaW9uABEEuFRoZSBjYWxsZXIgZG9lcyBub3QgaGF2ZSBhZGVxdWF0ZSBwZXJtaXNzaW9ucy5UTWV0YWRhdGFFeGNlZWRzTWF4TGVuABIErE1ldGFkYXRhIGV4Y2VlZHMgW2BDb25maWc6Ok1heE1ldGFkYXRhTGVuYF0kRGVmZW5zaXZlBADxDgE4RGVmZW5zaXZlRXJyb3IAEwgxAVNvbWUgZXJyb3Igb2NjdXJyZWQgdGhhdCBzaG91bGQgbmV2ZXIgaGFwcGVuLiBUaGlzIHNob3VsZCBiZSByZXBvcnRlZCB0byB0aGUwbWFpbnRhaW5lcnMunFBhcnRpYWxVbmJvbmROb3RBbGxvd2VkUGVybWlzc2lvbmxlc3NseQAUBLxQYXJ0aWFsIHVuYm9uZGluZyBub3cgYWxsb3dlZCBwZXJtaXNzaW9ubGVzc2x5LlxNYXhDb21taXNzaW9uUmVzdHJpY3RlZAAVBB0BVGhlIHBvb2wncyBtYXggY29tbWlzc2lvbiBjYW5ub3QgYmUgc2V0IGhpZ2hlciB0aGFuIHRoZSBleGlzdGluZyB2YWx1ZS5gQ29tbWlzc2lvbkV4Y2VlZHNNYXhpbXVtABYE7FRoZSBzdXBwbGllZCBjb21taXNzaW9uIGV4Y2VlZHMgdGhlIG1heCBhbGxvd2VkIGNvbW1pc3Npb24ueENvbW1pc3Npb25FeGNlZWRzR2xvYmFsTWF4aW11bQAXBOhUaGUgc3VwcGxpZWQgY29tbWlzc2lvbiBleGNlZWRzIGdsb2JhbCBtYXhpbXVtIGNvbW1pc3Npb24uZENvbW1pc3Npb25DaGFuZ2VUaHJvdHRsZWQAGAQJAU5vdCBlbm91Z2ggYmxvY2tzIGhhdmUgc3VycGFzc2VkIHNpbmNlIHRoZSBsYXN0IGNvbW1pc3Npb24gdXBkYXRlLnhDb21taXNzaW9uQ2hhbmdlUmF0ZU5vdEFsbG93ZWQAGQQBAVRoZSBzdWJtaXR0ZWQgY2hhbmdlcyB0byBjb21taXNzaW9uIGNoYW5nZSByYXRlIGFyZSBub3QgYWxsb3dlZC5MTm9QZW5kaW5nQ29tbWlzc2lvbgAaBKBUaGVyZSBpcyBubyBwZW5kaW5nIGNvbW1pc3Npb24gdG8gY2xhaW0uWE5vQ29tbWlzc2lvbkN1cnJlbnRTZXQAGwSMTm8gY29tbWlzc2lvbiBjdXJyZW50IGhhcyBiZWVuIHNldC4sUG9vbElkSW5Vc2UAHARkUG9vbCBpZCBjdXJyZW50bHkgaW4gdXNlLjRJbnZhbGlkUG9vbElkAB0EnFBvb2wgaWQgcHJvdmlkZWQgaXMgbm90IGNvcnJlY3QvdXNhYmxlLkxCb25kRXh0cmFSZXN0cmljdGVkAB4E/EJvbmRpbmcgZXh0cmEgaXMgcmVzdHJpY3RlZCB0byB0aGUgZXhhY3QgcGVuZGluZyByZXdhcmQgYW1vdW50LjxOb3RoaW5nVG9BZGp1c3QAHwSwTm8gaW1iYWxhbmNlIGluIHRoZSBFRCBkZXBvc2l0IGZvciB0aGUgcG9vbC44Tm90aGluZ1RvU2xhc2gAIATMTm8gc2xhc2ggcGVuZGluZyB0aGF0IGNhbiBiZSBhcHBsaWVkIHRvIHRoZSBtZW1iZXIuLFNsYXNoVG9vTG93ACEEqFRoZSBzbGFzaCBhbW91bnQgaXMgdG9vIGxvdyB0byBiZSBhcHBsaWVkLjxBbHJlYWR5TWlncmF0ZWQAIgQVAVRoZSBwb29sIG9yIG1lbWJlciBkZWxlZ2F0aW9uIGhhcyBhbHJlYWR5IG1pZ3JhdGVkIHRvIGRlbGVnYXRlIHN0YWtlLixOb3RNaWdyYXRlZAAjBBUBVGhlIHBvb2wgb3IgbWVtYmVyIGRlbGVnYXRpb24gaGFzIG5vdCBtaWdyYXRlZCB5ZXQgdG8gZGVsZWdhdGUgc3Rha2UuME5vdFN1cHBvcnRlZAAkBPBUaGlzIGNhbGwgaXMgbm90IGFsbG93ZWQgaW4gdGhlIGN1cnJlbnQgc3RhdGUgb2YgdGhlIHBhbGxldC4oUmVzdHJpY3RlZAAlCFEBQWNjb3VudCBpcyByZXN0cmljdGVkIGZyb20gcGFydGljaXBhdGlvbiBpbiBwb29scy4gVGhpcyBtYXkgaGFwcGVuIGlmIHRoZSBhY2NvdW50IGlzfHN0YWtpbmcgaW4gYW5vdGhlciB3YXkgYWxyZWFkeS4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQu8Q4MXHBhbGxldF9ub21pbmF0aW9uX3Bvb2xzGHBhbGxldDhEZWZlbnNpdmVFcnJvcgABHGhOb3RFbm91Z2hTcGFjZUluVW5ib25kUG9vbAAAADBQb29sTm90Rm91bmQAAQBIUmV3YXJkUG9vbE5vdEZvdW5kAAIAQFN1YlBvb2xzTm90Rm91bmQAAwBwQm9uZGVkU3Rhc2hLaWxsZWRQcmVtYXR1cmVseQAEAFREZWxlZ2F0aW9uVW5zdXBwb3J0ZWQABQA8U2xhc2hOb3RBcHBsaWVkAAYAAPUODEBwYWxsZXRfYmFnc19saXN0EGxpc3QQTm9kZQgEVAAESQAAFAEIaWQEATBUOjpBY2NvdW50SWQAARBwcmV2QQEBUE9wdGlvbjxUOjpBY2NvdW50SWQ+AAEQbmV4dEEBAVBPcHRpb248VDo6QWNjb3VudElkPgABJGJhZ191cHBlcigBIFQ6OlNjb3JlAAEUc2NvcmUoASBUOjpTY29yZQAA+Q4MQHBhbGxldF9iYWdzX2xpc3QQbGlzdAxCYWcIBFQABEkAAAgBEGhlYWRBAQFQT3B0aW9uPFQ6OkFjY291bnRJZD4AARB0YWlsQQEBUE9wdGlvbjxUOjpBY2NvdW50SWQ+AAD9DgAAAigAAQ8MQHBhbGxldF9iYWdzX2xpc3QYcGFsbGV0FEVycm9yCARUAARJAAEIEExpc3QEAAUPASRMaXN0RXJyb3IAAAS0QSBlcnJvciBpbiB0aGUgbGlzdCBpbnRlcmZhY2UgaW1wbGVtZW50YXRpb24uGExvY2tlZAABBNhDb3VsZCBub3QgdXBkYXRlIGEgbm9kZSwgYmVjYXVzZSB0aGUgcGFsbGV0IGlzIGxvY2tlZC4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuBQ8MQHBhbGxldF9iYWdzX2xpc3QQbGlzdCRMaXN0RXJyb3IAARQkRHVwbGljYXRlAAAAKE5vdEhlYXZpZXIAAQAwTm90SW5TYW1lQmFnAAIAME5vZGVOb3RGb3VuZAADABhMb2NrZWQABAAACQ8AAAQIZQFlAQANDwxgcGFsbGV0X2RlbGVnYXRlZF9zdGFraW5nFHR5cGVzKERlbGVnYXRpb24EBFQAAAgBFGFnZW50BAEwVDo6QWNjb3VudElkAAEYYW1vdW50lQEBMEJhbGFuY2VPZjxUPgAAEQ8MYHBhbGxldF9kZWxlZ2F0ZWRfc3Rha2luZxR0eXBlcyxBZ2VudExlZGdlcgQEVAAAEAEUcGF5ZWUEATBUOjpBY2NvdW50SWQAATx0b3RhbF9kZWxlZ2F0ZWSRAQEwQmFsYW5jZU9mPFQ+AAFUdW5jbGFpbWVkX3dpdGhkcmF3YWxzkQEBMEJhbGFuY2VPZjxUPgABNHBlbmRpbmdfc2xhc2iRAQEwQmFsYW5jZU9mPFQ+AAAVDwxgcGFsbGV0X2RlbGVnYXRlZF9zdGFraW5nGHBhbGxldBRFcnJvcgQEVAABMChOb3RBbGxvd2VkAAAEqFRoZSBhY2NvdW50IGNhbm5vdCBwZXJmb3JtIHRoaXMgb3BlcmF0aW9uLjhBbHJlYWR5U3Rha2luZwABBLhBbiBleGlzdGluZyBzdGFrZXIgY2Fubm90IHBlcmZvcm0gdGhpcyBhY3Rpb24uYEludmFsaWRSZXdhcmREZXN0aW5hdGlvbgACBNRSZXdhcmQgRGVzdGluYXRpb24gY2Fubm90IGJlIHNhbWUgYXMgYEFnZW50YCBhY2NvdW50LkRJbnZhbGlkRGVsZWdhdGlvbgADFIhEZWxlZ2F0aW9uIGNvbmRpdGlvbnMgYXJlIG5vdCBtZXQuAExQb3NzaWJsZSBpc3N1ZXMgYXJlbDEpIENhbm5vdCBkZWxlZ2F0ZSB0byBzZWxmLKQyKSBDYW5ub3QgZGVsZWdhdGUgdG8gbXVsdGlwbGUgZGVsZWdhdGVzLjhOb3RFbm91Z2hGdW5kcwAEBAEBVGhlIGFjY291bnQgZG9lcyBub3QgaGF2ZSBlbm91Z2ggZnVuZHMgdG8gcGVyZm9ybSB0aGUgb3BlcmF0aW9uLiBOb3RBZ2VudAAFBIBOb3QgYW4gZXhpc3RpbmcgYEFnZW50YCBhY2NvdW50LjBOb3REZWxlZ2F0b3IABgRgTm90IGEgRGVsZWdhdG9yIGFjY291bnQuIEJhZFN0YXRlAAcEiFNvbWUgY29ycnVwdGlvbiBpbiBpbnRlcm5hbCBzdGF0ZS44VW5hcHBsaWVkU2xhc2gACATcVW5hcHBsaWVkIHBlbmRpbmcgc2xhc2ggcmVzdHJpY3RzIG9wZXJhdGlvbiBvbiBgQWdlbnRgLjhOb3RoaW5nVG9TbGFzaAAJBKxgQWdlbnRgIGhhcyBubyBwZW5kaW5nIHNsYXNoIHRvIGJlIGFwcGxpZWQuOFdpdGhkcmF3RmFpbGVkAAoEsEZhaWxlZCB0byB3aXRoZHJhdyBhbW91bnQgZnJvbSBDb3JlIFN0YWtpbmcuME5vdFN1cHBvcnRlZAALBJxPcGVyYXRpb24gbm90IHN1cHBvcnRlZCBieSB0aGlzIHBhbGxldC4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuGQ8AAAQIHQ84AB0PCHhwYWxsZXRfc3Rha2luZ19hc3luY19yY19jbGllbnRIVmFsaWRhdG9yU2V0UmVwb3J0BCRBY2NvdW50SWQBBAAQAURuZXdfdmFsaWRhdG9yX3NldJ0BAThWZWM8QWNjb3VudElkPgABCGlkOAEMdTMyAAEscHJ1bmVfdXBfdG/YAVBPcHRpb248U2Vzc2lvbkluZGV4PgABIGxlZnRvdmVymQEBEGJvb2wAACEPDHhwYWxsZXRfc3Rha2luZ19hc3luY19yY19jbGllbnQYcGFsbGV0FEVycm9yBARUAAEUNFhjbVNlbmRGYWlsZWQAAAS4RmFpbGVkIHRvIHNlbmQgWENNIG1lc3NhZ2UgdG8gdGhlIFJlbGF5IENoYWluLjBOb3RWYWxpZGF0b3IAARTEVGhlIG9yaWdpbiBhY2NvdW50IGlzIG5vdCBhIHJlZ2lzdGVyZWQgdmFsaWRhdG9yLgBZAU9ubHkgYWNjb3VudHMgdGhhdCBoYXZlIGNhbGxlZCBgdmFsaWRhdGUoKWAgY2FuIHNldCBvciBwdXJnZSBzZXNzaW9uIGtleXMuIFdoZW4gY2FsbGVkSQF2aWEgYSBzdGFraW5nIHByb3h5LCB0aGUgb3JpZ2luIGlzIHRoZSBkZWxlZ2F0aW5nIGFjY291bnQgKHN0YXNoKSwgd2hpY2ggbXVzdCBiZSBhVHJlZ2lzdGVyZWQgdmFsaWRhdG9yLixJbnZhbGlkS2V5cwACBEUBVGhlIHNlc3Npb24ga2V5cyBjb3VsZCBub3QgYmUgZGVjb2RlZCBhcyB0aGUgZXhwZWN0ZWQgUmVsYXlDaGFpblNlc3Npb25LZXlzIHR5cGUuMEludmFsaWRQcm9vZgADBLRJbnZhbGlkIG93bmVyc2hpcCBwcm9vZiBmb3IgdGhlIHNlc3Npb24ga2V5cy48RmVlc0V4Y2VlZGVkTWF4AAQEtERlbGl2ZXJ5IGZlZXMgZXhjZWVkZWQgdGhlIHNwZWNpZmllZCBtYXhpbXVtLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC4lDwxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUASkPBFMAAAQAMQ8BGFZlYzxUPgAAKQ8AAAQMBCgtDwAtDwxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQQEUwAABACdAQEYVmVjPFQ+AAAxDwAAAikPADUPDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBBARTAAAEAJ0BARhWZWM8VD4AADkPDJBwYWxsZXRfZWxlY3Rpb25fcHJvdmlkZXJfbXVsdGlfYmxvY2sYcGFsbGV0FEVycm9yBARUAAEMIEZhbGxiYWNrAAAEhFRyaWdnZXJpbmcgdGhlIGBGYWxsYmFja2AgZmFpbGVkLjxVbmV4cGVjdGVkUGhhc2UAAQRAVW5leHBlY3RlZCBwaGFzZSBTbmFwc2hvdAACBGRTbmFwc2hvdCB3YXMgdW5hdmFpbGFibGUuBA0BRXJyb3Igb2YgdGhlIHBhbGxldCB0aGF0IGNhbiBiZSByZXR1cm5lZCBpbiByZXNwb25zZSB0byBkaXNwYXRjaGVzLj0PEJBwYWxsZXRfZWxlY3Rpb25fcHJvdmlkZXJfbXVsdGlfYmxvY2sgdmVyaWZpZXIUaW1wbHM0VmFsaWRTb2x1dGlvbgABCARYAAAABFkAAQAAQQ8MTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAFFDwRTAAAEAE0PARhWZWM8VD4AAEUPAAAECARJDwBJDxCQcGFsbGV0X2VsZWN0aW9uX3Byb3ZpZGVyX211bHRpX2Jsb2NrIHZlcmlmaWVyFGltcGxzPFBhcnRpYWxCYWNraW5ncwAACAEUdG90YWyVAQE8RXh0ZW5kZWRCYWxhbmNlAAEcYmFja2VyczgBDHUzMgAATQ8AAAJFDwBRDxCQcGFsbGV0X2VsZWN0aW9uX3Byb3ZpZGVyX211bHRpX2Jsb2NrIHZlcmlmaWVyFGltcGxzGFN0YXR1cwABCBxPbmdvaW5nBAA4ASRQYWdlSW5kZXgAAAAcTm90aGluZwABAABVDwxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQQEUwAABACdAQEYVmVjPFQ+AABZDwxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAV0PBFMAAAQAYQ8BGFZlYzxUPgAAXQ8AAAQIBLUFAGEPAAACXQ8AZQ8AAAQMOAQ4AGkPDJBwYWxsZXRfZWxlY3Rpb25fcHJvdmlkZXJfbXVsdGlfYmxvY2sYc2lnbmVkSFN1Ym1pc3Npb25NZXRhZGF0YQQEVAAAFAEcZGVwb3NpdJUBATBCYWxhbmNlT2Y8VD4AAQxmZWWVAQEwQmFsYW5jZU9mPFQ+AAEYcmV3YXJklQEBMEJhbGFuY2VPZjxUPgABNGNsYWltZWRfc2NvcmW1BQE0RWxlY3Rpb25TY29yZQABFHBhZ2VzbQ8BaEJvdW5kZWRWZWM8Ym9vbCwgVDo6UGFnZXM+AABtDwxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAZkBBFMAAAQAcQ8BGFZlYzxUPgAAcQ8AAAKZAQB1DxCQcGFsbGV0X2VsZWN0aW9uX3Byb3ZpZGVyX211bHRpX2Jsb2NrGHNpZ25lZBhwYWxsZXQURXJyb3IEBFQAASQ4UGhhc2VOb3RTaWduZWQAAARgVGhlIHBoYXNlIGlzIG5vdCBzaWduZWQuJER1cGxpY2F0ZQABBHhUaGUgc3VibWlzc2lvbiBpcyBhIGR1cGxpY2F0ZS4kUXVldWVGdWxsAAIESFRoZSBxdWV1ZSBpcyBmdWxsLjBCYWRQYWdlSW5kZXgAAwSAVGhlIHBhZ2UgaW5kZXggaXMgb3V0IG9mIGJvdW5kcy40Tm90UmVnaXN0ZXJlZAAEBHhUaGUgYWNjb3VudCBpcyBub3QgcmVnaXN0ZXJlZC4wTm9TdWJtaXNzaW9uAAUEUE5vIHN1Ym1pc3Npb24gZm91bmQuMFJvdW5kTm90T3ZlcgAGBFhSb3VuZCBpcyBub3QgeWV0IG92ZXIuOEJhZFdpdG5lc3NEYXRhAAcEaEJhZCB3aXRuZXNzIGRhdGEgcHJvdmlkZWQuUFRvb01hbnlJbnZ1bG5lcmFibGVzAAgEsFRvbyBtYW55IGludnVsbmVyYWJsZSBhY2NvdW50cyBhcmUgcHJvdmlkZWQsBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LnkPDFBwYWxsZXRfc3Rha2luZ19hc3luYxhsZWRnZXI0U3Rha2luZ0xlZGdlcgQEVAAAEAEUc3Rhc2gEATBUOjpBY2NvdW50SWQAARR0b3RhbJEBATBCYWxhbmNlT2Y8VD4AARhhY3RpdmWRAQEwQmFsYW5jZU9mPFQ+AAEkdW5sb2NraW5nOQcB8EJvdW5kZWRWZWM8VW5sb2NrQ2h1bms8QmFsYW5jZU9mPFQ+PiwgVDo6TWF4VW5sb2NraW5nQ2h1bmtzPgAAfQ8IUHBhbGxldF9zdGFraW5nX2FzeW5jLE5vbWluYXRpb25zBARUAAAMARx0YXJnZXRzLQ8BtEJvdW5kZWRWZWM8VDo6QWNjb3VudElkLCBNYXhOb21pbmF0aW9uc09mPFQ+PgABMHN1Ym1pdHRlZF9pbjgBIEVyYUluZGV4AAEoc3VwcHJlc3NlZJkBARBib29sAACBDwhQcGFsbGV0X3N0YWtpbmdfYXN5bmM0QWN0aXZlRXJhSW5mbwAACAEUaW5kZXg4ASBFcmFJbmRleAABFHN0YXJ0ZQEBLE9wdGlvbjx1NjQ+AACFDwxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAfwEUwAABAC1CQEYVmVjPFQ+AACJDwgoc3Bfc3Rha2luZ1RQYWdlZEV4cG9zdXJlTWV0YWRhdGEEHEJhbGFuY2UBlQEAEAEUdG90YWyRAQEcQmFsYW5jZQABDG93bpEBARxCYWxhbmNlAAE8bm9taW5hdG9yX2NvdW50OAEMdTMyAAEocGFnZV9jb3VudDgBEFBhZ2UAAI0PEFBwYWxsZXRfc3Rha2luZ19hc3luYxhwYWxsZXQYcGFsbGV0TEJvdW5kZWRFeHBvc3VyZVBhZ2UEBFQAAAQAkQ8BoEV4cG9zdXJlUGFnZTxUOjpBY2NvdW50SWQsIEJhbGFuY2VPZjxUPj4AAJEPCChzcF9zdGFraW5nMEV4cG9zdXJlUGFnZQgkQWNjb3VudElkAQQcQmFsYW5jZQGVAQAIAShwYWdlX3RvdGFskQEBHEJhbGFuY2UAARhvdGhlcnOVDwGsVmVjPEluZGl2aWR1YWxFeHBvc3VyZTxBY2NvdW50SWQsIEJhbGFuY2U+PgAAlQ8AAAKZDwCZDwgoc3Bfc3Rha2luZ0hJbmRpdmlkdWFsRXhwb3N1cmUIJEFjY291bnRJZAEEHEJhbGFuY2UBlQEACAEMd2hvBAEkQWNjb3VudElkAAEUdmFsdWWRAQEcQmFsYW5jZQAAnQ8MTGJvdW5kZWRfY29sbGVjdGlvbnNAd2Vha19ib3VuZGVkX3ZlYzhXZWFrQm91bmRlZFZlYwgEVAE4BFMAAAQAVQQBGFZlYzxUPgAAoQ8IUHBhbGxldF9zdGFraW5nX2FzeW5jPEVyYVJld2FyZFBvaW50cwQEVAAACAEUdG90YWw4ASxSZXdhcmRQb2ludAABKGluZGl2aWR1YWylDwH4Qm91bmRlZEJUcmVlTWFwPFQ6OkFjY291bnRJZCwgUmV3YXJkUG9pbnQsIFQ6Ok1heFZhbGlkYXRvclNldD4AAKUPDExib3VuZGVkX2NvbGxlY3Rpb25zRGJvdW5kZWRfYnRyZWVfbWFwPEJvdW5kZWRCVHJlZU1hcAwESwEEBFYBOARTAAAEAKkPAThCVHJlZU1hcDxLLCBWPgAAqQ8EIEJUcmVlTWFwCARLAQQEVgE4AAQAaQUAAACtDwxQcGFsbGV0X3N0YWtpbmdfYXN5bmMgc2xhc2hpbmc0T2ZmZW5jZVJlY29yZAQkQWNjb3VudElkAQQAFAEgcmVwb3J0ZXJBAQFET3B0aW9uPEFjY291bnRJZD4AATByZXBvcnRlZF9lcmE4ASBFcmFJbmRleAABNGV4cG9zdXJlX3BhZ2U4AQx1MzIAAThzbGFzaF9mcmFjdGlvbj0FARxQZXJiaWxsAAFQcHJpb3Jfc2xhc2hfZnJhY3Rpb249BQEcUGVyYmlsbAAAsQ8MTGJvdW5kZWRfY29sbGVjdGlvbnNAd2Vha19ib3VuZGVkX3ZlYzhXZWFrQm91bmRlZFZlYwgEVAE4BFMAAAQAVQQBGFZlYzxUPgAAtQ8AAAQMOAStDwC5DwAABAg4RQcAvQ8IUHBhbGxldF9zdGFraW5nX2FzeW5jOFVuYXBwbGllZFNsYXNoBARUAAAUASR2YWxpZGF0b3IEATBUOjpBY2NvdW50SWQAAQxvd26VAQEwQmFsYW5jZU9mPFQ+AAEYb3RoZXJzwQ8BEQFXZWFrQm91bmRlZFZlYzwoVDo6QWNjb3VudElkLCBCYWxhbmNlT2Y8VD4pLCBUOjpNYXhFeHBvc3VyZVBhZ2VTaXplPgABIHJlcG9ydGVyQQEBUE9wdGlvbjxUOjpBY2NvdW50SWQ+AAEYcGF5b3V0lQEBMEJhbGFuY2VPZjxUPgAAwQ8MTGJvdW5kZWRfY29sbGVjdGlvbnNAd2Vha19ib3VuZGVkX3ZlYzhXZWFrQm91bmRlZFZlYwgEVAGpBQRTAAAEAK0FARhWZWM8VD4AAMUPDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBGQcEUwAABAAVBwEYVmVjPFQ+AADJDwAABAg9BZUBAM0PCFBwYWxsZXRfc3Rha2luZ19hc3luYzhTbmFwc2hvdFN0YXR1cwQkQWNjb3VudElkAQQBDBxPbmdvaW5nBAAEASRBY2NvdW50SWQAAAAgQ29uc3VtZWQAAQAcV2FpdGluZwACAADRDwxMYm91bmRlZF9jb2xsZWN0aW9uc0Rib3VuZGVkX2J0cmVlX3NldDxCb3VuZGVkQlRyZWVTZXQIBFQBBARTAAAEAB0NASxCVHJlZVNldDxUPgAA1Q8QUHBhbGxldF9zdGFraW5nX2FzeW5jGHBhbGxldBhwYWxsZXQsUHJ1bmluZ1N0ZXAAASRARXJhc1N0YWtlcnNQYWdlZAAAAExFcmFzU3Rha2Vyc092ZXJ2aWV3AAEASEVyYXNWYWxpZGF0b3JQcmVmcwACADhDbGFpbWVkUmV3YXJkcwADAExFcmFzVmFsaWRhdG9yUmV3YXJkAAQAQEVyYXNSZXdhcmRQb2ludHMABQBMU2luZ2xlRW50cnlDbGVhbnVwcwAGAExWYWxpZGF0b3JTbGFzaEluRXJhAAcAcEVyYXNWYWxpZGF0b3JJbmNlbnRpdmVXZWlnaHQACAAA2Q8QUHBhbGxldF9zdGFraW5nX2FzeW5jGHBhbGxldBhwYWxsZXQURXJyb3IEBFQAAZg0Tm90Q29udHJvbGxlcgAABGROb3QgYSBjb250cm9sbGVyIGFjY291bnQuIE5vdFN0YXNoAAEEUE5vdCBhIHN0YXNoIGFjY291bnQuNEFscmVhZHlCb25kZWQAAgRgU3Rhc2ggaXMgYWxyZWFkeSBib25kZWQuNEFscmVhZHlQYWlyZWQAAwR0Q29udHJvbGxlciBpcyBhbHJlYWR5IHBhaXJlZC4wRW1wdHlUYXJnZXRzAAQEYFRhcmdldHMgY2Fubm90IGJlIGVtcHR5LjhEdXBsaWNhdGVJbmRleAAFBEBEdXBsaWNhdGUgaW5kZXguSEludmFsaWRTbGFzaFJlY29yZAAGBFxTbGFzaCByZWNvcmQgbm90IGZvdW5kLkBJbnN1ZmZpY2llbnRCb25kAAcMNQFDYW5ub3QgYm9uZCwgbm9taW5hdGUgb3IgdmFsaWRhdGUgd2l0aCB2YWx1ZSBsZXNzIHRoYW4gdGhlIG1pbmltdW0gZGVmaW5lZCBieT0BZ292ZXJuYW5jZSAoc2VlIGBNaW5WYWxpZGF0b3JCb25kYCBhbmQgYE1pbk5vbWluYXRvckJvbmRgKS4gSWYgdW5ib25kaW5nIGlzIHRoZRUBaW50ZW50aW9uLCBgY2hpbGxgIGZpcnN0IHRvIHJlbW92ZSBvbmUncyByb2xlIGFzIHZhbGlkYXRvci9ub21pbmF0b3IuME5vTW9yZUNodW5rcwAIBJBDYW4gbm90IHNjaGVkdWxlIG1vcmUgdW5sb2NrIGNodW5rcy40Tm9VbmxvY2tDaHVuawAJBKBDYW4gbm90IHJlYm9uZCB3aXRob3V0IHVubG9ja2luZyBjaHVua3MuMEZ1bmRlZFRhcmdldAAKBMhBdHRlbXB0aW5nIHRvIHRhcmdldCBhIHN0YXNoIHRoYXQgc3RpbGwgaGFzIGZ1bmRzLkhJbnZhbGlkRXJhVG9SZXdhcmQACwRYSW52YWxpZCBlcmEgdG8gcmV3YXJkLmhJbnZhbGlkTnVtYmVyT2ZOb21pbmF0aW9ucwAMBHhJbnZhbGlkIG51bWJlciBvZiBub21pbmF0aW9ucy44QWxyZWFkeUNsYWltZWQADQQJAVJld2FyZHMgZm9yIHRoaXMgZXJhIGhhdmUgYWxyZWFkeSBiZWVuIGNsYWltZWQgZm9yIHRoaXMgdmFsaWRhdG9yLixJbnZhbGlkUGFnZQAOBIRObyBub21pbmF0b3JzIGV4aXN0IG9uIHRoaXMgcGFnZS5USW5jb3JyZWN0SGlzdG9yeURlcHRoAA8EwEluY29ycmVjdCBwcmV2aW91cyBoaXN0b3J5IGRlcHRoIGlucHV0IHByb3ZpZGVkLiBCYWRTdGF0ZQAQBDkBSW50ZXJuYWwgc3RhdGUgaGFzIGJlY29tZSBzb21laG93IGNvcnJ1cHRlZCBhbmQgdGhlIG9wZXJhdGlvbiBjYW5ub3QgY29udGludWUuOFRvb01hbnlUYXJnZXRzABEElFRvbyBtYW55IG5vbWluYXRpb24gdGFyZ2V0cyBzdXBwbGllZC4kQmFkVGFyZ2V0ABIEPQFBIG5vbWluYXRpb24gdGFyZ2V0IHdhcyBzdXBwbGllZCB0aGF0IHdhcyBibG9ja2VkIG9yIG90aGVyd2lzZSBub3QgYSB2YWxpZGF0b3IuQENhbm5vdENoaWxsT3RoZXIAEwRVAVRoZSB1c2VyIGhhcyBlbm91Z2ggYm9uZCBhbmQgdGh1cyBjYW5ub3QgYmUgY2hpbGxlZCBmb3JjZWZ1bGx5IGJ5IGFuIGV4dGVybmFsIHBlcnNvbi5EVG9vTWFueU5vbWluYXRvcnMAFAhNAVRoZXJlIGFyZSB0b28gbWFueSBub21pbmF0b3JzIGluIHRoZSBzeXN0ZW0uIEdvdmVybmFuY2UgbmVlZHMgdG8gYWRqdXN0IHRoZSBzdGFraW5ntHNldHRpbmdzIHRvIGtlZXAgdGhpbmdzIHNhZmUgZm9yIHRoZSBydW50aW1lLkRUb29NYW55VmFsaWRhdG9ycwAVCFUBVGhlcmUgYXJlIHRvbyBtYW55IHZhbGlkYXRvciBjYW5kaWRhdGVzIGluIHRoZSBzeXN0ZW0uIEdvdmVybmFuY2UgbmVlZHMgdG8gYWRqdXN0IHRoZdRzdGFraW5nIHNldHRpbmdzIHRvIGtlZXAgdGhpbmdzIHNhZmUgZm9yIHRoZSBydW50aW1lLkBDb21taXNzaW9uVG9vTG93ABYE4ENvbW1pc3Npb24gaXMgdG9vIGxvdy4gTXVzdCBiZSBhdCBsZWFzdCBgTWluQ29tbWlzc2lvbmAuLEJvdW5kTm90TWV0ABcEWFNvbWUgYm91bmQgaXMgbm90IG1ldC5QQ29udHJvbGxlckRlcHJlY2F0ZWQAGAQBAVVzZWQgd2hlbiBhdHRlbXB0aW5nIHRvIHVzZSBkZXByZWNhdGVkIGNvbnRyb2xsZXIgYWNjb3VudCBsb2dpYy5MQ2Fubm90UmVzdG9yZUxlZGdlcgAZBFhDYW5ub3QgcmVzZXQgYSBsZWRnZXIubFJld2FyZERlc3RpbmF0aW9uUmVzdHJpY3RlZAAaBKxQcm92aWRlZCByZXdhcmQgZGVzdGluYXRpb24gaXMgbm90IGFsbG93ZWQuOE5vdEVub3VnaEZ1bmRzABsEnE5vdCBlbm91Z2ggZnVuZHMgYXZhaWxhYmxlIHRvIHdpdGhkcmF3LlxWaXJ0dWFsU3Rha2VyTm90QWxsb3dlZAAcBKhPcGVyYXRpb24gbm90IGFsbG93ZWQgZm9yIHZpcnR1YWwgc3Rha2Vycy48Q2Fubm90UmVhcFN0YXNoAB0E9FN0YXNoIGNvdWxkIG5vdCBiZSByZWFwZWQgYXMgb3RoZXIgcGFsbGV0IG1pZ2h0IGRlcGVuZCBvbiBpdC48QWxyZWFkeU1pZ3JhdGVkAB4ECQFUaGUgc3Rha2Ugb2YgdGhpcyBhY2NvdW50IGlzIGFscmVhZHkgbWlncmF0ZWQgdG8gYEZ1bmdpYmxlYCBob2xkcy40RXJhTm90U3RhcnRlZAAfBFBFcmEgbm90IHlldCBzdGFydGVkLihSZXN0cmljdGVkACAIWQFBY2NvdW50IGlzIHJlc3RyaWN0ZWQgZnJvbSBwYXJ0aWNpcGF0aW9uIGluIHN0YWtpbmcuIFRoaXMgbWF5IGhhcHBlbiBpZiB0aGUgYWNjb3VudCBpc8RzdGFraW5nIGluIGFub3RoZXIgd2F5IGFscmVhZHksIHN1Y2ggYXMgdmlhIHBvb2wudFVuYXBwbGllZFNsYXNoZXNJblByZXZpb3VzRXJhACEILQFVbmFwcGxpZWQgc2xhc2hlcyBpbiB0aGUgcmVjZW50bHkgY29uY2x1ZGVkIGVyYSBpcyBibG9ja2luZyB0aGlzIG9wZXJhdGlvbi6YU2VlIGBDYWxsOjphcHBseV9zbGFzaGAgdG8gYXBwbHkgdGhlbS44RXJhTm90UHJ1bmFibGUAIgSQVGhlIGVyYSBpcyBub3QgZWxpZ2libGUgZm9yIHBydW5pbmcuOENhbmNlbGxlZFNsYXNoACMEzFRoZSBzbGFzaCBoYXMgYmVlbiBjYW5jZWxsZWQgYW5kIGNhbm5vdCBiZSBhcHBsaWVkLkRDb21taXNzaW9uVG9vSGlnaAAkBPhDb21taXNzaW9uIGlzIGhpZ2hlciB0aGFuIHRoZSBhbGxvd2VkIG1heGltdW0gYE1heENvbW1pc3Npb25gLlRPcHRpbXVtR3JlYXRlclRoYW5DYXAAJQTMT3B0aW11bSBzZWxmLXN0YWtlIGNhbm5vdCBiZSBncmVhdGVyIHRoYW4gaGFyZCBjYXAuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0Lt0PCFBwYWxsZXRfc3Rha2luZ19hc3luYyRSZXdhcmRQb3QAAQgcR2VuZXJhbAQA4Q8BKFJld2FyZEtpbmQAAAAMRXJhCAA4ASBFcmFJbmRleAAA4Q8BKFJld2FyZEtpbmQAAQAA4Q8IUHBhbGxldF9zdGFraW5nX2FzeW5jKFJld2FyZEtpbmQAAQg0U3Rha2VyUmV3YXJkcwAAAEhWYWxpZGF0b3JTZWxmU3Rha2UAAQAA5Q8MUHBhbGxldF9zdGFraW5nX2FzeW5jGHJld2FyZExFcmFSZXdhcmRBbGxvY2F0aW9uBBxCYWxhbmNlAZUBAAgBOHN0YWtlcl9yZXdhcmRzlQEBHEJhbGFuY2UAAUx2YWxpZGF0b3JfaW5jZW50aXZllQEBHEJhbGFuY2UAAOkPCDxwYWxsZXRfdHJlYXN1cnkgUHJvcG9zYWwIJEFjY291bnRJZAEEHEJhbGFuY2UBlQEAEAEgcHJvcG9zZXIEASRBY2NvdW50SWQAARR2YWx1ZZUBARxCYWxhbmNlAAEsYmVuZWZpY2lhcnkEASRBY2NvdW50SWQAARBib25klQEBHEJhbGFuY2UAAO0PDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBOARTAAAEAFUEARhWZWM8VD4AAPEPCDxwYWxsZXRfdHJlYXN1cnksU3BlbmRTdGF0dXMUJEFzc2V0S2luZAFNBzBBc3NldEJhbGFuY2UBlQEsQmVuZWZpY2lhcnkBUQcsQmxvY2tOdW1iZXIBOCRQYXltZW50SWQBKAAYAShhc3NldF9raW5kTQcBJEFzc2V0S2luZAABGGFtb3VudJUBATBBc3NldEJhbGFuY2UAASxiZW5lZmljaWFyeVEHASxCZW5lZmljaWFyeQABKHZhbGlkX2Zyb204ASxCbG9ja051bWJlcgABJGV4cGlyZV9hdDgBLEJsb2NrTnVtYmVyAAEYc3RhdHVz9Q8BXFBheW1lbnRTdGF0ZTxQYXltZW50SWQ+AAD1Dwg8cGFsbGV0X3RyZWFzdXJ5MFBheW1lbnRTdGF0ZQQISWQBKAEMHFBlbmRpbmcAAAAkQXR0ZW1wdGVkBAEIaWQoAQhJZAABABhGYWlsZWQAAgAA+Q8MPHBhbGxldF90cmVhc3VyeRhwYWxsZXQURXJyb3IIBFQABEkAASwwSW52YWxpZEluZGV4AAAErE5vIHByb3Bvc2FsLCBib3VudHkgb3Igc3BlbmQgYXQgdGhhdCBpbmRleC5AVG9vTWFueUFwcHJvdmFscwABBIBUb28gbWFueSBhcHByb3ZhbHMgaW4gdGhlIHF1ZXVlLlhJbnN1ZmZpY2llbnRQZXJtaXNzaW9uAAIIRQFUaGUgc3BlbmQgb3JpZ2luIGlzIHZhbGlkIGJ1dCB0aGUgYW1vdW50IGl0IGlzIGFsbG93ZWQgdG8gc3BlbmQgaXMgbG93ZXIgdGhhbiB0aGVMYW1vdW50IHRvIGJlIHNwZW50LkxQcm9wb3NhbE5vdEFwcHJvdmVkAAMEfFByb3Bvc2FsIGhhcyBub3QgYmVlbiBhcHByb3ZlZC5YRmFpbGVkVG9Db252ZXJ0QmFsYW5jZQAEBFEBVGhlIGJhbGFuY2Ugb2YgdGhlIGFzc2V0IGtpbmQgaXMgbm90IGNvbnZlcnRpYmxlIHRvIHRoZSBiYWxhbmNlIG9mIHRoZSBuYXRpdmUgYXNzZXQuMFNwZW5kRXhwaXJlZAAFBLBUaGUgc3BlbmQgaGFzIGV4cGlyZWQgYW5kIGNhbm5vdCBiZSBjbGFpbWVkLixFYXJseVBheW91dAAGBKRUaGUgc3BlbmQgaXMgbm90IHlldCBlbGlnaWJsZSBmb3IgcGF5b3V0LkBBbHJlYWR5QXR0ZW1wdGVkAAcEnFRoZSBwYXltZW50IGhhcyBhbHJlYWR5IGJlZW4gYXR0ZW1wdGVkLixQYXlvdXRFcnJvcgAIBMxUaGVyZSB3YXMgc29tZSBpc3N1ZSB3aXRoIHRoZSBtZWNoYW5pc20gb2YgcGF5bWVudC4wTm90QXR0ZW1wdGVkAAkEpFRoZSBwYXlvdXQgd2FzIG5vdCB5ZXQgYXR0ZW1wdGVkL2NsYWltZWQuMEluY29uY2x1c2l2ZQAKBMRUaGUgcGF5bWVudCBoYXMgbmVpdGhlciBmYWlsZWQgbm9yIHN1Y2NlZWRlZCB5ZXQuBHhFcnJvciBmb3IgdGhlIHRyZWFzdXJ5IHBhbGxldC79DwAABAgE+QMAARAMYHBhbGxldF9jb252aWN0aW9uX3ZvdGluZxB2b3RlGFZvdGluZxQcQmFsYW5jZQGVASRBY2NvdW50SWQBBCxCbG9ja051bWJlcgE4JFBvbGxJbmRleAE4IE1heFZvdGVzAAEIHENhc3RpbmcEAAUQAchDYXN0aW5nPEJhbGFuY2UsIEJsb2NrTnVtYmVyLCBQb2xsSW5kZXgsIE1heFZvdGVzPgAAAChEZWxlZ2F0aW5nBAAdEAGsRGVsZWdhdGluZzxCYWxhbmNlLCBBY2NvdW50SWQsIEJsb2NrTnVtYmVyPgABAAAFEAxgcGFsbGV0X2NvbnZpY3Rpb25fdm90aW5nEHZvdGUcQ2FzdGluZxAcQmFsYW5jZQGVASxCbG9ja051bWJlcgE4JFBvbGxJbmRleAE4IE1heFZvdGVzAAAMARR2b3RlcwkQAdxCb3VuZGVkVmVjPChQb2xsSW5kZXgsIEFjY291bnRWb3RlPEJhbGFuY2U+KSwgTWF4Vm90ZXM+AAEsZGVsZWdhdGlvbnMVEAFQRGVsZWdhdGlvbnM8QmFsYW5jZT4AARRwcmlvchkQAXxQcmlvckxvY2s8QmxvY2tOdW1iZXIsIEJhbGFuY2U+AAAJEAxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQ0QBFMAAAQAERABGFZlYzxUPgAADRAAAAQIOFkHABEQAAACDRAAFRAMYHBhbGxldF9jb252aWN0aW9uX3ZvdGluZxR0eXBlcyxEZWxlZ2F0aW9ucwQcQmFsYW5jZQGVAQAIARR2b3Rlc5UBARxCYWxhbmNlAAEcY2FwaXRhbJUBARxCYWxhbmNlAAAZEAxgcGFsbGV0X2NvbnZpY3Rpb25fdm90aW5nEHZvdGUkUHJpb3JMb2NrCCxCbG9ja051bWJlcgE4HEJhbGFuY2UBlQEACAA4ASxCbG9ja051bWJlcgAAlQEBHEJhbGFuY2UAAB0QDGBwYWxsZXRfY29udmljdGlvbl92b3RpbmcQdm90ZShEZWxlZ2F0aW5nDBxCYWxhbmNlAZUBJEFjY291bnRJZAEELEJsb2NrTnVtYmVyATgAFAEcYmFsYW5jZZUBARxCYWxhbmNlAAEYdGFyZ2V0BAEkQWNjb3VudElkAAEoY29udmljdGlvbmEHAShDb252aWN0aW9uAAEsZGVsZWdhdGlvbnMVEAFQRGVsZWdhdGlvbnM8QmFsYW5jZT4AARRwcmlvchkQAXxQcmlvckxvY2s8QmxvY2tOdW1iZXIsIEJhbGFuY2U+AAAhEAxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUASUQBFMAAAQAKRABGFZlYzxUPgAAJRAAAAQI+QOVAQApEAAAAiUQAC0QDGBwYWxsZXRfY29udmljdGlvbl92b3RpbmcYcGFsbGV0FEVycm9yCARUAARJAAEwKE5vdE9uZ29pbmcAAARQUG9sbCBpcyBub3Qgb25nb2luZy4gTm90Vm90ZXIAAQSsVGhlIGdpdmVuIGFjY291bnQgZGlkIG5vdCB2b3RlIG9uIHRoZSBwb2xsLjBOb1Blcm1pc3Npb24AAgTIVGhlIGFjdG9yIGhhcyBubyBwZXJtaXNzaW9uIHRvIGNvbmR1Y3QgdGhlIGFjdGlvbi48Tm9QZXJtaXNzaW9uWWV0AAMEWQFUaGUgYWN0b3IgaGFzIG5vIHBlcm1pc3Npb24gdG8gY29uZHVjdCB0aGUgYWN0aW9uIHJpZ2h0IG5vdyBidXQgd2lsbCBkbyBpbiB0aGUgZnV0dXJlLkRBbHJlYWR5RGVsZWdhdGluZwAEBIhUaGUgYWNjb3VudCBpcyBhbHJlYWR5IGRlbGVnYXRpbmcuNEFscmVhZHlWb3RpbmcABQhVAVRoZSBhY2NvdW50IGN1cnJlbnRseSBoYXMgdm90ZXMgYXR0YWNoZWQgdG8gaXQgYW5kIHRoZSBvcGVyYXRpb24gY2Fubm90IHN1Y2NlZWQgdW50aWygdGhlc2UgYXJlIHJlbW92ZWQgdGhyb3VnaCBgcmVtb3ZlX3ZvdGVgLkRJbnN1ZmZpY2llbnRGdW5kcwAGBPxUb28gaGlnaCBhIGJhbGFuY2Ugd2FzIHByb3ZpZGVkIHRoYXQgdGhlIGFjY291bnQgY2Fubm90IGFmZm9yZC40Tm90RGVsZWdhdGluZwAHBKBUaGUgYWNjb3VudCBpcyBub3QgY3VycmVudGx5IGRlbGVnYXRpbmcuIE5vbnNlbnNlAAgElERlbGVnYXRpb24gdG8gb25lc2VsZiBtYWtlcyBubyBzZW5zZS48TWF4Vm90ZXNSZWFjaGVkAAkEgE1heGltdW0gbnVtYmVyIG9mIHZvdGVzIHJlYWNoZWQuLENsYXNzTmVlZGVkAAoEOQFUaGUgY2xhc3MgbXVzdCBiZSBzdXBwbGllZCBzaW5jZSBpdCBpcyBub3QgZWFzaWx5IGRldGVybWluYWJsZSBmcm9tIHRoZSBzdGF0ZS4gQmFkQ2xhc3MACwSEVGhlIGNsYXNzIElEIHN1cHBsaWVkIGlzIGludmFsaWQuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LjEQDEBwYWxsZXRfcmVmZXJlbmRhFHR5cGVzOFJlZmVyZW5kdW1JbmZvIBxUcmFja0lkAfkDNFJ1bnRpbWVPcmlnaW4B/QMYTW9tZW50ATgQQ2FsbAFtBxxCYWxhbmNlAZUBFFRhbGx5AYkJJEFjY291bnRJZAEEPFNjaGVkdWxlQWRkcmVzcwH8ARgcT25nb2luZwQANRABjQFSZWZlcmVuZHVtU3RhdHVzPFRyYWNrSWQsIFJ1bnRpbWVPcmlnaW4sIE1vbWVudCwgQ2FsbCwgQmFsYW5jZSwgVGFsbHksCkFjY291bnRJZCwgU2NoZWR1bGVBZGRyZXNzLD4AAAAgQXBwcm92ZWQMADgBGE1vbWVudAAAPRABjE9wdGlvbjxEZXBvc2l0PEFjY291bnRJZCwgQmFsYW5jZT4+AAA9EAGMT3B0aW9uPERlcG9zaXQ8QWNjb3VudElkLCBCYWxhbmNlPj4AAQAgUmVqZWN0ZWQMADgBGE1vbWVudAAAPRABjE9wdGlvbjxEZXBvc2l0PEFjY291bnRJZCwgQmFsYW5jZT4+AAA9EAGMT3B0aW9uPERlcG9zaXQ8QWNjb3VudElkLCBCYWxhbmNlPj4AAgAkQ2FuY2VsbGVkDAA4ARhNb21lbnQAAD0QAYxPcHRpb248RGVwb3NpdDxBY2NvdW50SWQsIEJhbGFuY2U+PgAAPRABjE9wdGlvbjxEZXBvc2l0PEFjY291bnRJZCwgQmFsYW5jZT4+AAMAIFRpbWVkT3V0DAA4ARhNb21lbnQAAD0QAYxPcHRpb248RGVwb3NpdDxBY2NvdW50SWQsIEJhbGFuY2U+PgAAPRABjE9wdGlvbjxEZXBvc2l0PEFjY291bnRJZCwgQmFsYW5jZT4+AAQAGEtpbGxlZAQAOAEYTW9tZW50AAUAADUQDEBwYWxsZXRfcmVmZXJlbmRhFHR5cGVzQFJlZmVyZW5kdW1TdGF0dXMgHFRyYWNrSWQB+QM0UnVudGltZU9yaWdpbgH9AxhNb21lbnQBOBBDYWxsAW0HHEJhbGFuY2UBlQEUVGFsbHkBiQkkQWNjb3VudElkAQQ8U2NoZWR1bGVBZGRyZXNzAfwALAEUdHJhY2v5AwEcVHJhY2tJZAABGG9yaWdpbv0DATRSdW50aW1lT3JpZ2luAAEgcHJvcG9zYWxtBwEQQ2FsbAABJGVuYWN0bWVudHUHAVBEaXNwYXRjaFRpbWU8TW9tZW50PgABJHN1Ym1pdHRlZDgBGE1vbWVudAABSHN1Ym1pc3Npb25fZGVwb3NpdDkQAWxEZXBvc2l0PEFjY291bnRJZCwgQmFsYW5jZT4AAUBkZWNpc2lvbl9kZXBvc2l0PRABjE9wdGlvbjxEZXBvc2l0PEFjY291bnRJZCwgQmFsYW5jZT4+AAEgZGVjaWRpbmdBEAF4T3B0aW9uPERlY2lkaW5nU3RhdHVzPE1vbWVudD4+AAEUdGFsbHmJCQEUVGFsbHkAASBpbl9xdWV1ZZkBARBib29sAAEUYWxhcm1JEAGET3B0aW9uPChNb21lbnQsIFNjaGVkdWxlQWRkcmVzcyk+AAA5EAxAcGFsbGV0X3JlZmVyZW5kYRR0eXBlcxxEZXBvc2l0CCRBY2NvdW50SWQBBBxCYWxhbmNlAZUBAAgBDHdobwQBJEFjY291bnRJZAABGGFtb3VudJUBARxCYWxhbmNlAAA9EAQYT3B0aW9uBARUATkQAQgQTm9uZQAAABBTb21lBAA5EAAAAQAAQRAEGE9wdGlvbgQEVAFFEAEIEE5vbmUAAAAQU29tZQQARRAAAAEAAEUQDEBwYWxsZXRfcmVmZXJlbmRhFHR5cGVzOERlY2lkaW5nU3RhdHVzBCxCbG9ja051bWJlcgE4AAgBFHNpbmNlOAEsQmxvY2tOdW1iZXIAAShjb25maXJtaW5n2AFMT3B0aW9uPEJsb2NrTnVtYmVyPgAASRAEGE9wdGlvbgQEVAFNEAEIEE5vbmUAAAAQU29tZQQATRAAAAEAAE0QAAAECDj8AFEQDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBzQ0EUwAABADRDQEYVmVjPFQ+AABVEAAAAlkQAFkQAAAECPkDXRAAXRAMQHBhbGxldF9yZWZlcmVuZGEUdHlwZXMwVHJhY2tEZXRhaWxzDBxCYWxhbmNlAZUBGE1vbWVudAE4EE5hbWUBwQkAJAEQbmFtZcEJARBOYW1lAAEwbWF4X2RlY2lkaW5nOAEMdTMyAAFAZGVjaXNpb25fZGVwb3NpdJUBARxCYWxhbmNlAAE4cHJlcGFyZV9wZXJpb2Q4ARhNb21lbnQAATxkZWNpc2lvbl9wZXJpb2Q4ARhNb21lbnQAAThjb25maXJtX3BlcmlvZDgBGE1vbWVudAABUG1pbl9lbmFjdG1lbnRfcGVyaW9kOAEYTW9tZW50AAEwbWluX2FwcHJvdmFsYRABFEN1cnZlAAEsbWluX3N1cHBvcnRhEAEUQ3VydmUAAGEQDEBwYWxsZXRfcmVmZXJlbmRhFHR5cGVzFEN1cnZlAAEMQExpbmVhckRlY3JlYXNpbmcMARhsZW5ndGg9BQEcUGVyYmlsbAABFGZsb29yPQUBHFBlcmJpbGwAARBjZWlsPQUBHFBlcmJpbGwAAABEU3RlcHBlZERlY3JlYXNpbmcQARRiZWdpbj0FARxQZXJiaWxsAAEMZW5kPQUBHFBlcmJpbGwAARBzdGVwPQUBHFBlcmJpbGwAARhwZXJpb2Q9BQEcUGVyYmlsbAABAChSZWNpcHJvY2FsDAEYZmFjdG9yZRABIEZpeGVkSTY0AAEgeF9vZmZzZXRlEAEgRml4ZWRJNjQAASB5X29mZnNldGUQASBGaXhlZEk2NAACAABlEAw0c3BfYXJpdGhtZXRpYyxmaXhlZF9wb2ludCBGaXhlZEk2NAAABABpEAEMaTY0AABpEAAABQwAbRAMQHBhbGxldF9yZWZlcmVuZGEYcGFsbGV0FEVycm9yCARUAARJAAE4KE5vdE9uZ29pbmcAAARoUmVmZXJlbmR1bSBpcyBub3Qgb25nb2luZy4oSGFzRGVwb3NpdAABBLhSZWZlcmVuZHVtJ3MgZGVjaXNpb24gZGVwb3NpdCBpcyBhbHJlYWR5IHBhaWQuIEJhZFRyYWNrAAIEnFRoZSB0cmFjayBpZGVudGlmaWVyIGdpdmVuIHdhcyBpbnZhbGlkLhBGdWxsAAMEMQFUaGVyZSBhcmUgYWxyZWFkeSBhIGZ1bGwgY29tcGxlbWVudCBvZiByZWZlcmVuZGEgaW4gcHJvZ3Jlc3MgZm9yIHRoaXMgdHJhY2suKFF1ZXVlRW1wdHkABASAVGhlIHF1ZXVlIG9mIHRoZSB0cmFjayBpcyBlbXB0eS40QmFkUmVmZXJlbmR1bQAFBORUaGUgcmVmZXJlbmR1bSBpbmRleCBwcm92aWRlZCBpcyBpbnZhbGlkIGluIHRoaXMgY29udGV4dC4sTm90aGluZ1RvRG8ABgSsVGhlcmUgd2FzIG5vdGhpbmcgdG8gZG8gaW4gdGhlIGFkdmFuY2VtZW50LhxOb1RyYWNrAAcEoE5vIHRyYWNrIGV4aXN0cyBmb3IgdGhlIHByb3Bvc2FsIG9yaWdpbi4oVW5maW5pc2hlZAAIBAEBQW55IGRlcG9zaXQgY2Fubm90IGJlIHJlZnVuZGVkIHVudGlsIGFmdGVyIHRoZSBkZWNpc2lvbiBpcyBvdmVyLjBOb1Blcm1pc3Npb24ACQSoVGhlIGRlcG9zaXQgcmVmdW5kZXIgaXMgbm90IHRoZSBkZXBvc2l0b3IuJE5vRGVwb3NpdAAKBMxUaGUgZGVwb3NpdCBjYW5ub3QgYmUgcmVmdW5kZWQgc2luY2Ugbm9uZSB3YXMgbWFkZS4kQmFkU3RhdHVzAAsE0FRoZSByZWZlcmVuZHVtIHN0YXR1cyBpcyBpbnZhbGlkIGZvciB0aGlzIG9wZXJhdGlvbi5AUHJlaW1hZ2VOb3RFeGlzdAAMBHBUaGUgcHJlaW1hZ2UgZG9lcyBub3QgZXhpc3QuhFByZWltYWdlU3RvcmVkV2l0aERpZmZlcmVudExlbmd0aAANBBUBVGhlIHByZWltYWdlIGlzIHN0b3JlZCB3aXRoIGEgZGlmZmVyZW50IGxlbmd0aCB0aGFuIHRoZSBvbmUgcHJvdmlkZWQuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LnEQDEBwYWxsZXRfd2hpdGVsaXN0GHBhbGxldBRFcnJvcgQEVAABFExVbmF2YWlsYWJsZVByZUltYWdlAAAEyFRoZSBwcmVpbWFnZSBvZiB0aGUgY2FsbCBoYXNoIGNvdWxkIG5vdCBiZSBsb2FkZWQuPFVuZGVjb2RhYmxlQ2FsbAABBHhUaGUgY2FsbCBjb3VsZCBub3QgYmUgZGVjb2RlZC5gSW52YWxpZENhbGxXZWlnaHRXaXRuZXNzAAIE7FRoZSB3ZWlnaHQgb2YgdGhlIGRlY29kZWQgY2FsbCB3YXMgaGlnaGVyIHRoYW4gdGhlIHdpdG5lc3MuUENhbGxJc05vdFdoaXRlbGlzdGVkAAMEdFRoZSBjYWxsIHdhcyBub3Qgd2hpdGVsaXN0ZWQuWENhbGxBbHJlYWR5V2hpdGVsaXN0ZWQABASgVGhlIGNhbGwgd2FzIGFscmVhZHkgd2hpdGVsaXN0ZWQ7IE5vLU9wLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC51EAg8cGFsbGV0X2JvdW50aWVzGEJvdW50eQwkQWNjb3VudElkAQQcQmFsYW5jZQGVASxCbG9ja051bWJlcgE4ABgBIHByb3Bvc2VyBAEkQWNjb3VudElkAAEUdmFsdWWVAQEcQmFsYW5jZQABDGZlZZUBARxCYWxhbmNlAAE8Y3VyYXRvcl9kZXBvc2l0lQEBHEJhbGFuY2UAARBib25klQEBHEJhbGFuY2UAARhzdGF0dXN5EAGQQm91bnR5U3RhdHVzPEFjY291bnRJZCwgQmxvY2tOdW1iZXI+AAB5EAg8cGFsbGV0X2JvdW50aWVzMEJvdW50eVN0YXR1cwgkQWNjb3VudElkAQQsQmxvY2tOdW1iZXIBOAEcIFByb3Bvc2VkAAAAIEFwcHJvdmVkAAEAGEZ1bmRlZAACADxDdXJhdG9yUHJvcG9zZWQEARxjdXJhdG9yBAEkQWNjb3VudElkAAMAGEFjdGl2ZQgBHGN1cmF0b3IEASRBY2NvdW50SWQAASh1cGRhdGVfZHVlOAEsQmxvY2tOdW1iZXIABAA0UGVuZGluZ1BheW91dAwBHGN1cmF0b3IEASRBY2NvdW50SWQAASxiZW5lZmljaWFyeQQBJEFjY291bnRJZAABJHVubG9ja19hdDgBLEJsb2NrTnVtYmVyAAUATEFwcHJvdmVkV2l0aEN1cmF0b3IEARxjdXJhdG9yBAEkQWNjb3VudElkAAYAAH0QDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBDARTAAAEABgBGFZlYzxUPgAAgRAMPHBhbGxldF9ib3VudGllcxhwYWxsZXQURXJyb3IIBFQABEkAATBwSW5zdWZmaWNpZW50UHJvcG9zZXJzQmFsYW5jZQAABHhQcm9wb3NlcidzIGJhbGFuY2UgaXMgdG9vIGxvdy4wSW52YWxpZEluZGV4AAEEkE5vIHByb3Bvc2FsIG9yIGJvdW50eSBhdCB0aGF0IGluZGV4LjBSZWFzb25Ub29CaWcAAgSEVGhlIHJlYXNvbiBnaXZlbiBpcyBqdXN0IHRvbyBiaWcuQFVuZXhwZWN0ZWRTdGF0dXMAAwSAVGhlIGJvdW50eSBzdGF0dXMgaXMgdW5leHBlY3RlZC44UmVxdWlyZUN1cmF0b3IABARcUmVxdWlyZSBib3VudHkgY3VyYXRvci4wSW52YWxpZFZhbHVlAAUEVEludmFsaWQgYm91bnR5IHZhbHVlLihJbnZhbGlkRmVlAAYETEludmFsaWQgYm91bnR5IGZlZS40UGVuZGluZ1BheW91dAAHCGxBIGJvdW50eSBwYXlvdXQgaXMgcGVuZGluZy74VG8gY2FuY2VsIHRoZSBib3VudHksIHlvdSBtdXN0IHVuYXNzaWduIGFuZCBzbGFzaCB0aGUgY3VyYXRvci4kUHJlbWF0dXJlAAgERQFUaGUgYm91bnRpZXMgY2Fubm90IGJlIGNsYWltZWQvY2xvc2VkIGJlY2F1c2UgaXQncyBzdGlsbCBpbiB0aGUgY291bnRkb3duIHBlcmlvZC5QSGFzQWN0aXZlQ2hpbGRCb3VudHkACQQFAVRoZSBib3VudHkgY2Fubm90IGJlIGNsb3NlZCBiZWNhdXNlIGl0IGhhcyBhY3RpdmUgY2hpbGQgYm91bnRpZXMuNFRvb01hbnlRdWV1ZWQACgSYVG9vIG1hbnkgYXBwcm92YWxzIGFyZSBhbHJlYWR5IHF1ZXVlZC4sTm90UHJvcG9zZXIACwScVXNlciBpcyBub3QgdGhlIHByb3Bvc2VyIG9mIHRoZSBib3VudHkuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LoUQCFRwYWxsZXRfY2hpbGRfYm91bnRpZXMsQ2hpbGRCb3VudHkMJEFjY291bnRJZAEEHEJhbGFuY2UBlQEsQmxvY2tOdW1iZXIBOAAUATRwYXJlbnRfYm91bnR5OAEsQm91bnR5SW5kZXgAARR2YWx1ZZUBARxCYWxhbmNlAAEMZmVllQEBHEJhbGFuY2UAATxjdXJhdG9yX2RlcG9zaXSVAQEcQmFsYW5jZQABGHN0YXR1c4kQAaRDaGlsZEJvdW50eVN0YXR1czxBY2NvdW50SWQsIEJsb2NrTnVtYmVyPgAAiRAIVHBhbGxldF9jaGlsZF9ib3VudGllc0RDaGlsZEJvdW50eVN0YXR1cwgkQWNjb3VudElkAQQsQmxvY2tOdW1iZXIBOAEQFEFkZGVkAAAAPEN1cmF0b3JQcm9wb3NlZAQBHGN1cmF0b3IEASRBY2NvdW50SWQAAQAYQWN0aXZlBAEcY3VyYXRvcgQBJEFjY291bnRJZAACADRQZW5kaW5nUGF5b3V0DAEcY3VyYXRvcgQBJEFjY291bnRJZAABLGJlbmVmaWNpYXJ5BAEkQWNjb3VudElkAAEkdW5sb2NrX2F0OAEsQmxvY2tOdW1iZXIAAwAAjRAMVHBhbGxldF9jaGlsZF9ib3VudGllcxhwYWxsZXQURXJyb3IEBFQAAQxUUGFyZW50Qm91bnR5Tm90QWN0aXZlAAAEpFRoZSBwYXJlbnQgYm91bnR5IGlzIG5vdCBpbiBhY3RpdmUgc3RhdGUuZEluc3VmZmljaWVudEJvdW50eUJhbGFuY2UAAQTkVGhlIGJvdW50eSBiYWxhbmNlIGlzIG5vdCBlbm91Z2ggdG8gYWRkIG5ldyBjaGlsZC1ib3VudHkuUFRvb01hbnlDaGlsZEJvdW50aWVzAAIEDQFOdW1iZXIgb2YgY2hpbGQgYm91bnRpZXMgZXhjZWVkcyBsaW1pdCBgTWF4QWN0aXZlQ2hpbGRCb3VudHlDb3VudGAuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LpEQDERwYWxsZXRfYXNzZXRfcmF0ZRhwYWxsZXQURXJyb3IEBFQAAQxAVW5rbm93bkFzc2V0S2luZAAABHhUaGUgZ2l2ZW4gYXNzZXQgSUQgaXMgdW5rbm93bi40QWxyZWFkeUV4aXN0cwABBFEBVGhlIGdpdmVuIGFzc2V0IElEIGFscmVhZHkgaGFzIGFuIGFzc2lnbmVkIGNvbnZlcnNpb24gcmF0ZSBhbmQgY2Fubm90IGJlIHJlLWNyZWF0ZWQuIE92ZXJmbG93AAIEzE92ZXJmbG93IG9jdXJyZWQgd2hlbiBjYWxjdWxhdGluZyB0aGUgaW52ZXJzZSByYXRlLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC6VEAhscGFsbGV0X211bHRpX2Fzc2V0X2JvdW50aWVzGEJvdW50eRgkQWNjb3VudElkAQQcQmFsYW5jZQGVASRBc3NldEtpbmQBTQcQSGFzaAFAJFBheW1lbnRJZAEoLEJlbmVmaWNpYXJ5AVEHABABKGFzc2V0X2tpbmRNBwEkQXNzZXRLaW5kAAEUdmFsdWWVAQEcQmFsYW5jZQABIG1ldGFkYXRhQAEQSGFzaAABGHN0YXR1c5kQAbxCb3VudHlTdGF0dXM8QWNjb3VudElkLCBQYXltZW50SWQsIEJlbmVmaWNpYXJ5PgAAmRAIbHBhbGxldF9tdWx0aV9hc3NldF9ib3VudGllczBCb3VudHlTdGF0dXMMJEFjY291bnRJZAEEJFBheW1lbnRJZAEoLEJlbmVmaWNpYXJ5AVEHARhARnVuZGluZ0F0dGVtcHRlZAgBHGN1cmF0b3IEASRBY2NvdW50SWQAAThwYXltZW50X3N0YXR1c50QAVxQYXltZW50U3RhdGU8UGF5bWVudElkPgAAABhGdW5kZWQEARxjdXJhdG9yBAEkQWNjb3VudElkAAEAREN1cmF0b3JVbmFzc2lnbmVkAAIAGEFjdGl2ZQQBHGN1cmF0b3IEASRBY2NvdW50SWQAAwA8UmVmdW5kQXR0ZW1wdGVkCAEcY3VyYXRvckEBAURPcHRpb248QWNjb3VudElkPgABOHBheW1lbnRfc3RhdHVznRABXFBheW1lbnRTdGF0ZTxQYXltZW50SWQ+AAQAPFBheW91dEF0dGVtcHRlZAwBHGN1cmF0b3IEASRBY2NvdW50SWQAASxiZW5lZmljaWFyeVEHASxCZW5lZmljaWFyeQABOHBheW1lbnRfc3RhdHVznRABXFBheW1lbnRTdGF0ZTxQYXltZW50SWQ+AAUAAJ0QCGxwYWxsZXRfbXVsdGlfYXNzZXRfYm91bnRpZXMwUGF5bWVudFN0YXRlBAhJZAEoARAcUGVuZGluZwAAACRBdHRlbXB0ZWQEAQhpZCgBCElkAAEAGEZhaWxlZAACACRTdWNjZWVkZWQAAwAAoRAIbHBhbGxldF9tdWx0aV9hc3NldF9ib3VudGllcyxDaGlsZEJvdW50eRQkQWNjb3VudElkAQQcQmFsYW5jZQGVARBIYXNoAUAkUGF5bWVudElkASgsQmVuZWZpY2lhcnkBUQcAEAE0cGFyZW50X2JvdW50eTgBLEJvdW50eUluZGV4AAEUdmFsdWWVAQEcQmFsYW5jZQABIG1ldGFkYXRhQAEQSGFzaAABGHN0YXR1c5kQAbxCb3VudHlTdGF0dXM8QWNjb3VudElkLCBQYXltZW50SWQsIEJlbmVmaWNpYXJ5PgAApRAAAAQIONgAqRAUNGZyYW1lX3N1cHBvcnQYdHJhaXRzGHRva2VucyBmdW5naWJsZURIb2xkQ29uc2lkZXJhdGlvbhQEQQAERgAEUgAERAAIRnAAAAQAlQEBKEY6OkJhbGFuY2UAAK0QDGxwYWxsZXRfbXVsdGlfYXNzZXRfYm91bnRpZXMYcGFsbGV0FEVycm9yCARUAARJAAFIMEludmFsaWRJbmRleAAABHxObyBjaGlsZC0vYm91bnR5IGF0IHRoYXQgaW5kZXguMFJlYXNvblRvb0JpZwABBIRUaGUgcmVhc29uIGdpdmVuIGlzIGp1c3QgdG9vIGJpZy4wSW52YWxpZFZhbHVlAAIEcEludmFsaWQgY2hpbGQtL2JvdW50eSB2YWx1ZS5YRmFpbGVkVG9Db252ZXJ0QmFsYW5jZQADCF0BVGhlIGJhbGFuY2Ugb2YgdGhlIGFzc2V0IGtpbmQgaXMgbm90IGNvbnZlcnRpYmxlIHRvIHRoZSBiYWxhbmNlIG9mIHRoZSBuYXRpdmUgYXNzZXQgZm9yhGFzc2VydGluZyB0aGUgb3JpZ2luIHBlcm1pc3Npb25zLkBVbmV4cGVjdGVkU3RhdHVzAAQEnFRoZSBjaGlsZC0vYm91bnR5IHN0YXR1cyBpcyB1bmV4cGVjdGVkLjhSZXF1aXJlQ3VyYXRvcgAFBHhSZXF1aXJlIGNoaWxkLS9ib3VudHkgY3VyYXRvci5YSW5zdWZmaWNpZW50UGVybWlzc2lvbgAGCEUBVGhlIHNwZW5kIG9yaWdpbiBpcyB2YWxpZCBidXQgdGhlIGFtb3VudCBpdCBpcyBhbGxvd2VkIHRvIHNwZW5kIGlzIGxvd2VyIHRoYW4gdGhlRHJlcXVlc3RlZCBhbW91bnQuMEZ1bmRpbmdFcnJvcgAHBLxUaGVyZSB3YXMgaXNzdWUgd2l0aCBmdW5kaW5nIHRoZSBjaGlsZC0vYm91bnR5LixSZWZ1bmRFcnJvcgAIBMRUaGVyZSB3YXMgaXNzdWUgd2l0aCByZWZ1bmRpbmcgdGhlIGNoaWxkLS9ib3VudHkuLFBheW91dEVycm9yAAkATEZ1bmRpbmdJbmNvbmNsdXNpdmUACgSwQ2hpbGQtL2JvdW50eSBmdW5kaW5nIGhhcyBub3QgY29uY2x1ZGVkIHlldC5IUmVmdW5kSW5jb25jbHVzaXZlAAsErENoaWxkLS9ib3VudHkgcmVmdW5kIGhhcyBub3QgY29uY2x1ZGVkIHlldC5IUGF5b3V0SW5jb25jbHVzaXZlAAwErENoaWxkLS9ib3VudHkgcGF5b3V0IGhhcyBub3QgY29uY2x1ZGVkIHlldC5URmFpbGVkVG9Db252ZXJ0U291cmNlAA0IVQFUaGUgY2hpbGQtL2JvdW50eSBvciBmdW5kaW5nIHNvdXJjZSBhY2NvdW50IGNvdWxkIG5vdCBiZSBkZXJpdmVkIGZyb20gdGhlIGluZGV4ZXMgYW5kLGFzc2V0IGtpbmQuUEhhc0FjdGl2ZUNoaWxkQm91bnR5AA4EIQFUaGUgcGFyZW50IGJvdW50eSBjYW5ub3QgYmUgY2xvc2VkIGJlY2F1c2UgaXQgaGFzIGFjdGl2ZSBjaGlsZCBib3VudGllcy5QVG9vTWFueUNoaWxkQm91bnRpZXMADwQNAU51bWJlciBvZiBjaGlsZCBib3VudGllcyBleGNlZWRzIGxpbWl0IGBNYXhBY3RpdmVDaGlsZEJvdW50eUNvdW50YC5cSW5zdWZmaWNpZW50Qm91bnR5VmFsdWUAEAT4VGhlIHBhcmVudCBib3VudHkgdmFsdWUgaXMgbm90IGVub3VnaCB0byBhZGQgbmV3IGNoaWxkLWJvdW50eS5AUHJlaW1hZ2VOb3RFeGlzdAARBHBUaGUgcHJlaW1hZ2UgZG9lcyBub3QgZXhpc3QuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LrEQAAAEDDigBAC1EAw0cGFsbGV0X2FoX29wcxhwYWxsZXQURXJyb3IEBFQAATw4Tm9MZWFzZVJlc2VydmUAAAS4RWl0aGVyIG5vIGxlYXNlIGRlcG9zaXQgb3IgYWxyZWFkeSB1bnJlc2VydmVkLlxOb0Nyb3dkbG9hbkNvbnRyaWJ1dGlvbgABBNhFaXRoZXIgbm8gY3Jvd2Rsb2FuIGNvbnRyaWJ1dGlvbiBvciBhbHJlYWR5IHdpdGhkcmF3bi5ITm9Dcm93ZGxvYW5SZXNlcnZlAAIEyEVpdGhlciBubyBjcm93ZGxvYW4gcmVzZXJ2ZSBvciBhbHJlYWR5IHVucmVzZXJ2ZWQulEZhaWxlZFRvV2l0aGRyYXdDcm93ZGxvYW5Db250cmlidXRpb24AAwSoRmFpbGVkIHRvIHdpdGhkcmF3IGNyb3dkbG9hbiBjb250cmlidXRpb24uGE5vdFlldAAEBIBCbG9jayBudW1iZXIgaXMgbm90IHlldCByZWFjaGVkLlhDb250cmlidXRpb25zUmVtYWluaW5nAAUEkE5vdCBhbGwgY29udHJpYnV0aW9ucyBhcmUgd2l0aGRyYXduLlxXcm9uZ0Rlcml2ZWRUcmFuc2xhdGlvbgAGBJRUaGUgYWNjb3VudCBpcyBub3QgYSBkZXJpdmVkIGFjY291bnQuME5vdFNvdmVyZWlnbgAHBCUBQWNjb3VudCBjYW5ub3QgYmUgbWlncmF0ZWQgc2luY2UgaXQgaXMgbm90IGEgc292ZXJlaWduIHBhcmFjaGFpbiBhY2NvdW50LjRJbnRlcm5hbEVycm9yAAgEiEludGVybmFsIGVycm9yLCBwbGVhc2UgYnVnIHJlcG9ydC5UTWlncmF0aW9uTm90Q29tcGxldGVkAAkEpFRoZSBBc3NldCBIdWIgbWlncmF0aW9uIGlzIG5vdCBjb21wbGV0ZWQuLFplcm9CYWxhbmNlAAoEUFRoZSBiYWxhbmNlIGlzIHplcm8uQEZhaWxlZFRvVHJhbnNmZXIACwRsRmFpbGVkIHRvIHRyYW5zZmVyIGJhbGFuY2UuREFscmVhZHlUcmFuc2xhdGVkAAwEoFRoZSBhY2NvdW50IGhhcyBhbHJlYWR5IGJlZW4gdHJhbnNsYXRlZC5UVG9vTG9uZ0Rlcml2YXRpb25QYXRoAA0EgFRoZSBkZXJpdmF0aW9uIHBhdGggaXMgdG9vIGxvbmcuUEZhaWxlZFRvRm9yY2VVbnN0YWtlAA4EYEZhaWxlZCB0byBmb3JjZSB1bnN0YWtlLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC65EAhIc3BfY29uc2Vuc3VzX3Nsb3RzMFNsb3REdXJhdGlvbgAABAAoAQx1NjQAAL0QEChzcF9ydW50aW1lHGdlbmVyaWMUYmxvY2skTGF6eUJsb2NrCBhIZWFkZXIBYCRFeHRyaW5zaWMB+QkACAEYaGVhZGVyYAEYSGVhZGVyAAEoZXh0cmluc2ljc8EQAVBWZWM8T3BhcXVlRXh0cmluc2ljPgAAwRAAAALFEADFEAgoc3BfcnVudGltZTxPcGFxdWVFeHRyaW5zaWMAAAQAGAEcVmVjPHU4PgAAyRAIKHNwX3J1bnRpbWVYRXh0cmluc2ljSW5jbHVzaW9uTW9kZQABCDRBbGxFeHRyaW5zaWNzAAAANE9ubHlJbmhlcmVudHMAAQAAzRAIHHNwX2NvcmU4T3BhcXVlTWV0YWRhdGEAAAQAGAEcVmVjPHU4PgAA0RAEGE9wdGlvbgQEVAHNEAEIEE5vbmUAAAAQU29tZQQAzRAAAAEAANUQBBhSZXN1bHQIBFQBKQgERQHZEAEICE9rBAApCAAAAAAMRXJyBADZEAAAAQAA2RAMKHNwX3J1bnRpbWVQdHJhbnNhY3Rpb25fdmFsaWRpdHlgVHJhbnNhY3Rpb25WYWxpZGl0eUVycm9yAAEIHEludmFsaWQEAN0QAUhJbnZhbGlkVHJhbnNhY3Rpb24AAAAcVW5rbm93bgQA4RABSFVua25vd25UcmFuc2FjdGlvbgABAADdEAwoc3BfcnVudGltZVB0cmFuc2FjdGlvbl92YWxpZGl0eUhJbnZhbGlkVHJhbnNhY3Rpb24AATQQQ2FsbAAAABxQYXltZW50AAEAGEZ1dHVyZQACABRTdGFsZQADACBCYWRQcm9vZgAEAERBbmNpZW50QmlydGhCbG9jawAFAERFeGhhdXN0c1Jlc291cmNlcwAGABhDdXN0b20EAAwBCHU4AAcAMEJhZE1hbmRhdG9yeQAIAExNYW5kYXRvcnlWYWxpZGF0aW9uAAkAJEJhZFNpZ25lcgAKAFRJbmRldGVybWluYXRlSW1wbGljaXQACwA0VW5rbm93bk9yaWdpbgAMAADhEAwoc3BfcnVudGltZVB0cmFuc2FjdGlvbl92YWxpZGl0eUhVbmtub3duVHJhbnNhY3Rpb24AAQwwQ2Fubm90TG9va3VwAAAATE5vVW5zaWduZWRWYWxpZGF0b3IAAQAYQ3VzdG9tBAAMAQh1OAACAADlEAgwc3BfaW5oZXJlbnRzMEluaGVyZW50RGF0YQAABAEQZGF0YekQAZRCVHJlZU1hcDxJbmhlcmVudElkZW50aWZpZXIsIFZlYzx1OD4+AADpEAQgQlRyZWVNYXAIBEsBlQIEVgEYAAQA7RAAAADtEAAAAvEQAPEQAAAECJUCGAD1EAgwc3BfaW5oZXJlbnRzUENoZWNrSW5oZXJlbnRzUmVzdWx0AAAMARBva2F5mQEBEGJvb2wAASxmYXRhbF9lcnJvcpkBARBib29sAAEYZXJyb3Jz5RABMEluaGVyZW50RGF0YQAA+RAMKHNwX3J1bnRpbWVQdHJhbnNhY3Rpb25fdmFsaWRpdHlEVHJhbnNhY3Rpb25Tb3VyY2UAAQwcSW5CbG9jawAAABRMb2NhbAABACBFeHRlcm5hbAACAAD9EAQYUmVzdWx0CARUAQERBEUB2RABCAhPawQAAREAAAAADEVycgQA2RAAAAEAAAERDChzcF9ydW50aW1lUHRyYW5zYWN0aW9uX3ZhbGlkaXR5QFZhbGlkVHJhbnNhY3Rpb24AABQBIHByaW9yaXR5KAFMVHJhbnNhY3Rpb25Qcmlvcml0eQABIHJlcXVpcmVzNAFMVmVjPFRyYW5zYWN0aW9uVGFnPgABIHByb3ZpZGVzNAFMVmVjPFRyYW5zYWN0aW9uVGFnPgABJGxvbmdldml0eSgBUFRyYW5zYWN0aW9uTG9uZ2V2aXR5AAEkcHJvcGFnYXRlmQEBEGJvb2wAAAURDChzcF9zZXNzaW9uLHJ1bnRpbWVfYXBpaE9wYXF1ZUdlbmVyYXRlZFNlc3Npb25LZXlzAAAIARBrZXlzGAEcVmVjPHU4PgABFHByb29mGAEcVmVjPHU4PgAACREEGE9wdGlvbgQEVAENEQEIEE5vbmUAAAAQU29tZQQADREAAAEAAA0RAAACEREAEREAAAQIGGULABURDDRmcmFtZV9zdXBwb3J0OHZpZXdfZnVuY3Rpb25zOFZpZXdGdW5jdGlvbklkAAAIARhwcmVmaXiZAgEgW3U4OyAxNl0AARhzdWZmaXiZAgEgW3U4OyAxNl0AABkRBBhSZXN1bHQIBFQBGARFAR0RAQgIT2sEABgAAAAADEVycgQAHREAAAEAAB0RDDRmcmFtZV9zdXBwb3J0OHZpZXdfZnVuY3Rpb25zZFZpZXdGdW5jdGlvbkRpc3BhdGNoRXJyb3IAAQw4Tm90SW1wbGVtZW50ZWQAAAAgTm90Rm91bmQEABURAThWaWV3RnVuY3Rpb25JZAABABRDb2RlYwACAAAhEQQYT3B0aW9uBARUAW0NAQgQTm9uZQAAABBTb21lBABtDQAAAQAAJREMaHBhbGxldF90cmFuc2FjdGlvbl9wYXltZW50FHR5cGVzTFJ1bnRpbWVEaXNwYXRjaEluZm8IHEJhbGFuY2UBlQEYV2VpZ2h0AXkBAAwBGHdlaWdodHkBARhXZWlnaHQAARRjbGFzc/kHATREaXNwYXRjaENsYXNzAAEscGFydGlhbF9mZWWVAQEcQmFsYW5jZQAAKREMaHBhbGxldF90cmFuc2FjdGlvbl9wYXltZW50FHR5cGVzKEZlZURldGFpbHMEHEJhbGFuY2UBlQEACAE0aW5jbHVzaW9uX2ZlZS0RAXRPcHRpb248SW5jbHVzaW9uRmVlPEJhbGFuY2U+PgABDHRpcJUBARxCYWxhbmNlAAAtEQQYT3B0aW9uBARUATERAQgQTm9uZQAAABBTb21lBAAxEQAAAQAAMREMaHBhbGxldF90cmFuc2FjdGlvbl9wYXltZW50FHR5cGVzMEluY2x1c2lvbkZlZQQcQmFsYW5jZQGVAQAMASBiYXNlX2ZlZZUBARxCYWxhbmNlAAEcbGVuX2ZlZZUBARxCYWxhbmNlAAFMYWRqdXN0ZWRfd2VpZ2h0X2ZlZZUBARxCYWxhbmNlAAA1EQQYUmVzdWx0CARUATkRBEUBPREBCAhPawQAOREAAAAADEVycgQAPREAAAEAADkRAAAC3QMAPREMQHhjbV9ydW50aW1lX2FwaXMQZmVlcxRFcnJvcgABGDRVbmltcGxlbWVudGVkAAAAZFZlcnNpb25lZENvbnZlcnNpb25GYWlsZWQAAQBMV2VpZ2h0Tm90Q29tcHV0YWJsZQACAExVbmhhbmRsZWRYY21WZXJzaW9uAAMANEFzc2V0Tm90Rm91bmQABAAoVW5yb3V0YWJsZQAFAABBEQQYUmVzdWx0CARUAXkBBEUBPREBCAhPawQAeQEAAAAADEVycgQAPREAAAEAAEURBBhSZXN1bHQIBFQBlQEERQE9EQEICE9rBACVAQAAAAAMRXJyBAA9EQAAAQAASREEGFJlc3VsdAgEVAGpAwRFAT0RAQgIT2sEAKkDAAAAAAxFcnIEAD0RAAABAABNEQQYUmVzdWx0CARUAVERBEUBaREBCAhPawQAUREAAAAADEVycgQAaREAAAEAAFERDEB4Y21fcnVudGltZV9hcGlzHGRyeV9ydW5EQ2FsbERyeVJ1bkVmZmVjdHMEFEV2ZW50Ae0HABABQGV4ZWN1dGlvbl9yZXN1bHSRCQFoRGlzcGF0Y2hSZXN1bHRXaXRoUG9zdEluZm8AAThlbWl0dGVkX2V2ZW50c1URAShWZWM8RXZlbnQ+AAEkbG9jYWxfeGNtWREBYE9wdGlvbjxWZXJzaW9uZWRYY208KCk+PgABOGZvcndhcmRlZF94Y21zXREBvFZlYzwoVmVyc2lvbmVkTG9jYXRpb24sIFZlYzxWZXJzaW9uZWRYY208KCk+Pik+AABVEQAAAu0HAFkRBBhPcHRpb24EBFQBbQIBCBBOb25lAAAAEFNvbWUEAG0CAAABAABdEQAAAmERAGERAAAECOUBZREAZREAAAJtAgBpEQxAeGNtX3J1bnRpbWVfYXBpcxxkcnlfcnVuFEVycm9yAAEINFVuaW1wbGVtZW50ZWQAAABkVmVyc2lvbmVkQ29udmVyc2lvbkZhaWxlZAABAABtEQQYUmVzdWx0CARUAXERBEUBaREBCAhPawQAcREAAAAADEVycgQAaREAAAEAAHERDEB4Y21fcnVudGltZV9hcGlzHGRyeV9ydW5AWGNtRHJ5UnVuRWZmZWN0cwQURXZlbnQB7QcADAFAZXhlY3V0aW9uX3Jlc3VsdMUIARxPdXRjb21lAAE4ZW1pdHRlZF9ldmVudHNVEQEoVmVjPEV2ZW50PgABOGZvcndhcmRlZF94Y21zXREBvFZlYzwoVmVyc2lvbmVkTG9jYXRpb24sIFZlYzxWZXJzaW9uZWRYY208KCk+Pik+AAB1EQQYUmVzdWx0CARUAQQERQF5EQEICE9rBAAEAAAAAAxFcnIEAHkRAAABAAB5EQxAeGNtX3J1bnRpbWVfYXBpcyxjb252ZXJzaW9ucxRFcnJvcgABCCxVbnN1cHBvcnRlZAAAAGRWZXJzaW9uZWRDb252ZXJzaW9uRmFpbGVkAAEAAH0RCAx4Y204VmVyc2lvbmVkQXNzZXQAAQwIVjMEAIUCATh2Mzo6TXVsdGlBc3NldAADAAhWNAQA+QIBJHY0OjpBc3NldAAEAAhWNQQARQMBJHY1OjpBc3NldAAFAACBEQQYUmVzdWx0CARUAZkBBEUBhREBCAhPawQAmQEAAAAADEVycgQAhREAAAEAAIURDEB4Y21fcnVudGltZV9hcGlzNHRydXN0ZWRfcXVlcnkURXJyb3IAAQh4VmVyc2lvbmVkQXNzZXRDb252ZXJzaW9uRmFpbGVkAAAAhFZlcnNpb25lZExvY2F0aW9uQ29udmVyc2lvbkZhaWxlZAABAACJEQQYUmVzdWx0CARUAQkMBEUBjREBCAhPawQACQwAAAAADEVycgQAjREAAAEAAI0RDEB4Y21fcnVudGltZV9hcGlzSGF1dGhvcml6ZWRfYWxpYXNlcxRFcnJvcgABBHxMb2NhdGlvblZlcnNpb25Db252ZXJzaW9uRmFpbGVkAAAAAJERBBhSZXN1bHQIBFQBmQEERQGNEQEICE9rBACZAQAAAAAMRXJyBACNEQAAAQAAlREEGFJlc3VsdAgEVAGpAwRFAZkRAQgIT2sEAKkDAAAAAAxFcnIEAJkRAAABAACZEQw0YXNzZXRzX2NvbW1vbixydW50aW1lX2FwaVBGdW5naWJsZXNBY2Nlc3NFcnJvcgABCFxBc3NldElkQ29udmVyc2lvbkZhaWxlZAAAAHxBbW91bnRUb0JhbGFuY2VDb252ZXJzaW9uRmFpbGVkAAEAAJ0RCFxjdW11bHVzX3ByaW1pdGl2ZXNfY29yZTRDb2xsYXRpb25JbmZvAAAYATx1cHdhcmRfbWVzc2FnZXM0AUhWZWM8VXB3YXJkTWVzc2FnZT4AAUxob3Jpem9udGFsX21lc3NhZ2VzbQoBYFZlYzxPdXRib3VuZEhybXBNZXNzYWdlPgABTG5ld192YWxpZGF0aW9uX2NvZGWhEQGMT3B0aW9uPHJlbGF5X2NoYWluOjpWYWxpZGF0aW9uQ29kZT4AAWxwcm9jZXNzZWRfZG93bndhcmRfbWVzc2FnZXM4AQx1MzIAAThocm1wX3dhdGVybWFyazgBYHJlbGF5X2NoYWluOjpCbG9ja051bWJlcgABJGhlYWRfZGF0YVABIEhlYWREYXRhAAChEQQYT3B0aW9uBARUAaURAQgQTm9uZQAAABBTb21lBAClEQAAAQAApREMdHBvbGthZG90X3BhcmFjaGFpbl9wcmltaXRpdmVzKHByaW1pdGl2ZXM4VmFsaWRhdGlvbkNvZGUAAAQAGAEcVmVjPHU4PgAAqREEGFJlc3VsdAgEVAEQBEUBwQkBCAhPawQAEAAAAAAMRXJyBADBCQAAAQAArREEGE9wdGlvbgQEVAHBCQEIEE5vbmUAAAAQU29tZQQAwQkAAAEAALERAAACwQkAtREMYHN5c3RlbV9wYXJhY2hhaW5zX2NvbW1vbhBhcGlzNEluZmxhdGlvbkluZm8AAAgBIGlzc3VhbmNlFQEBXHNwX3J1bnRpbWU6OlBlcnF1aW50aWxsAAEkbmV4dF9taW50bQ0B8Chwb2xrYWRvdF9wcmltaXRpdmVzOjpCYWxhbmNlLCBwb2xrYWRvdF9wcmltaXRpdmVzOjpCYWxhbmNlKQAAuREMNHBhbGxldF9yZXZpdmUocHJpbWl0aXZlczhDb250cmFjdFJlc3VsdAgEUgG9ERxCYWxhbmNlAZUBABgBPHdlaWdodF9jb25zdW1lZHkBARhXZWlnaHQAATx3ZWlnaHRfcmVxdWlyZWR5AQEYV2VpZ2h0AAE8c3RvcmFnZV9kZXBvc2l0xREBXFN0b3JhZ2VEZXBvc2l0PEJhbGFuY2U+AAFMbWF4X3N0b3JhZ2VfZGVwb3NpdMURAVxTdG9yYWdlRGVwb3NpdDxCYWxhbmNlPgABMGdhc19jb25zdW1lZJUBARxCYWxhbmNlAAEYcmVzdWx0yREBYFJlc3VsdDxSLCBEaXNwYXRjaEVycm9yPgAAvREMNHBhbGxldF9yZXZpdmUocHJpbWl0aXZlczxFeGVjUmV0dXJuVmFsdWUAAAgBFGZsYWdzwREBLFJldHVybkZsYWdzAAEQZGF0YRgBHFZlYzx1OD4AAMERDEhwYWxsZXRfcmV2aXZlX3VhcGkUZmxhZ3MsUmV0dXJuRmxhZ3MAAAQBEGJpdHM4AQx1MzIAAMURDDRwYWxsZXRfcmV2aXZlKHByaW1pdGl2ZXM4U3RvcmFnZURlcG9zaXQEHEJhbGFuY2UBlQEBCBhSZWZ1bmQEAJUBARxCYWxhbmNlAAAAGENoYXJnZQQAlQEBHEJhbGFuY2UAAQAAyREEGFJlc3VsdAgEVAG9EQRFAQEIAQgIT2sEAL0RAAAAAAxFcnIEAAEIAAABAADNEQw0cGFsbGV0X3Jldml2ZShwcmltaXRpdmVzEENvZGUAAQgYVXBsb2FkBAAYARxWZWM8dTg+AAAAIEV4aXN0aW5nBABAATRzcF9jb3JlOjpIMjU2AAEAANERDDRwYWxsZXRfcmV2aXZlKHByaW1pdGl2ZXM4Q29udHJhY3RSZXN1bHQIBFIB1REcQmFsYW5jZQGVAQAYATx3ZWlnaHRfY29uc3VtZWR5AQEYV2VpZ2h0AAE8d2VpZ2h0X3JlcXVpcmVkeQEBGFdlaWdodAABPHN0b3JhZ2VfZGVwb3NpdMURAVxTdG9yYWdlRGVwb3NpdDxCYWxhbmNlPgABTG1heF9zdG9yYWdlX2RlcG9zaXTFEQFcU3RvcmFnZURlcG9zaXQ8QmFsYW5jZT4AATBnYXNfY29uc3VtZWSVAQEcQmFsYW5jZQABGHJlc3VsdNkRAWBSZXN1bHQ8UiwgRGlzcGF0Y2hFcnJvcj4AANURDDRwYWxsZXRfcmV2aXZlKHByaW1pdGl2ZXNYSW5zdGFudGlhdGVSZXR1cm5WYWx1ZQAACAEYcmVzdWx0vREBPEV4ZWNSZXR1cm5WYWx1ZQABEGFkZHL9BAEQSDE2MAAA2REEGFJlc3VsdAgEVAHVEQRFAQEIAQgIT2sEANURAAAAAAxFcnIEAAEIAAABAADdERQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpNHJwY190eXBlc19nZW5IR2VuZXJpY1RyYW5zYWN0aW9uAABAASxhY2Nlc3NfbGlzdOERAUhPcHRpb248QWNjZXNzTGlzdD4AAUhhdXRob3JpemF0aW9uX2xpc3RdDgFsVmVjPEF1dGhvcml6YXRpb25MaXN0RW50cnk+AAFUYmxvYl92ZXJzaW9uZWRfaGFzaGVz8AEkVmVjPEgyNTY+AAEUYmxvYnPlEQEoVmVjPEJ5dGVzPgABIGNoYWluX2lkOQ4BME9wdGlvbjxVMjU2PgABEGZyb211DgE8T3B0aW9uPEFkZHJlc3M+AAEMZ2FzOQ4BME9wdGlvbjxVMjU2PgABJGdhc19wcmljZTkOATBPcHRpb248VTI1Nj4AARRpbnB1dOkRASxJbnB1dE9yRGF0YQABUG1heF9mZWVfcGVyX2Jsb2JfZ2FzOQ4BME9wdGlvbjxVMjU2PgABPG1heF9mZWVfcGVyX2dhczkOATBPcHRpb248VTI1Nj4AAWBtYXhfcHJpb3JpdHlfZmVlX3Blcl9nYXM5DgEwT3B0aW9uPFUyNTY+AAEUbm9uY2U5DgEwT3B0aW9uPFUyNTY+AAEIdG91DgE8T3B0aW9uPEFkZHJlc3M+AAEYciN0eXBl8REBME9wdGlvbjxCeXRlPgABFHZhbHVlOQ4BME9wdGlvbjxVMjU2PgAA4REEGE9wdGlvbgQEVAFVDgEIEE5vbmUAAAAQU29tZQQAVQ4AAAEAAOURAAACKQ4A6REUNHBhbGxldF9yZXZpdmUMZXZtDGFwaTRycGNfdHlwZXNfZ2VuLElucHV0T3JEYXRhAAAIARRpbnB1dO0RATRPcHRpb248Qnl0ZXM+AAEQZGF0Ye0RATRPcHRpb248Qnl0ZXM+AADtEQQYT3B0aW9uBARUASkOAQgQTm9uZQAAABBTb21lBAApDgAAAQAA8REEGE9wdGlvbgQEVAH1EQEIEE5vbmUAAAAQU29tZQQA9REAAAEAAPURFDRwYWxsZXRfcmV2aXZlDGV2bQxhcGkQYnl0ZRBCeXRlAAAEAAwBCHU4AAD5EQQYUmVzdWx0CARUAf0RBEUBARIBCAhPawQA/REAAAAADEVycgQAARIAAAEAAP0RDDRwYWxsZXRfcmV2aXZlKHByaW1pdGl2ZXM8RXRoVHJhbnNhY3RJbmZvBBxCYWxhbmNlAZUBABQBPHdlaWdodF9yZXF1aXJlZHkBARhXZWlnaHQAATxzdG9yYWdlX2RlcG9zaXSVAQEcQmFsYW5jZQABTG1heF9zdG9yYWdlX2RlcG9zaXSVAQEcQmFsYW5jZQABHGV0aF9nYXMFBQEQVTI1NgABEGRhdGEYARxWZWM8dTg+AAABEgw0cGFsbGV0X3Jldml2ZShwcmltaXRpdmVzQEV0aFRyYW5zYWN0RXJyb3IAAQgQRGF0YQQAGAEcVmVjPHU4PgAAABxNZXNzYWdlBADBCQEYU3RyaW5nAAEAAAUSFDRwYWxsZXRfcmV2aXZlDGV2bQxhcGkkcnBjX3R5cGVzMERyeVJ1bkNvbmZpZwQYTW9tZW50ASgADAFIdGltZXN0YW1wX292ZXJyaWRlZQEBOE9wdGlvbjxNb21lbnQ+AAFYcGVyZm9ybV9iYWxhbmNlX2NoZWNrcwkSATBPcHRpb248Ym9vbD4AATxzdGF0ZV9vdmVycmlkZXMNEgFgT3B0aW9uPFN0YXRlT3ZlcnJpZGVTZXQ+AAAJEgQYT3B0aW9uBARUAZkBAQgQTm9uZQAAABBTb21lBACZAQAAAQAADRIEGE9wdGlvbgQEVAEREgEIEE5vbmUAAAAQU29tZQQAERIAAAEAABESFDRwYWxsZXRfcmV2aXZlDGV2bQxhcGk0cnBjX3R5cGVzX2dlbkBTdGF0ZU92ZXJyaWRlU2V0AAAEABUSAYBCVHJlZU1hcDxBZGRyZXNzLCBTdGF0ZU92ZXJyaWRlPgAAFRIEIEJUcmVlTWFwCARLAf0EBFYBGRIABAAxEgAAABkSFDRwYWxsZXRfcmV2aXZlDGV2bQxhcGk0cnBjX3R5cGVzX2dlbjRTdGF0ZU92ZXJyaWRlAAAUARxiYWxhbmNlOQ4BME9wdGlvbjxVMjU2PgABFG5vbmNlOQ4BME9wdGlvbjxVMjU2PgABEGNvZGXtEQE0T3B0aW9uPEJ5dGVzPgABHHN0b3JhZ2UdEgFcT3B0aW9uPFN0b3JhZ2VPdmVycmlkZT4AAWhtb3ZlX3ByZWNvbXBpbGVfdG9fYWRkcmVzc3UOATxPcHRpb248QWRkcmVzcz4AAB0SBBhPcHRpb24EBFQBIRIBCBBOb25lAAAAEFNvbWUEACESAAABAAAhEhQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpNHJwY190eXBlc19nZW48U3RvcmFnZU92ZXJyaWRlAAEIFFN0YXRlBAAlEgFQQlRyZWVNYXA8SDI1NiwgSDI1Nj4AAAAkU3RhdGVEaWZmBAAlEgFQQlRyZWVNYXA8SDI1NiwgSDI1Nj4AAQAAJRIEIEJUcmVlTWFwCARLAUAEVgFAAAQAKRIAAAApEgAAAi0SAC0SAAAECEBAADESAAACNRIANRIAAAQI/QQZEgA5EgQYUmVzdWx0CARUAQUFBEUBARIBCAhPawQABQUAAAAADEVycgQAARIAAAEAAD0SBBhSZXN1bHQIBFQBeQEERQEBEgEICE9rBAB5AQAAAAAMRXJyBAABEgAAAQAAQRIEGFJlc3VsdAgEVAFFEgRFAQEIAQgIT2sEAEUSAAAAAAxFcnIEAAEIAAABAABFEgw0cGFsbGV0X3Jldml2ZShwcmltaXRpdmVzVENvZGVVcGxvYWRSZXR1cm5WYWx1ZQQcQmFsYW5jZQGVAQAIASRjb2RlX2hhc2hAATRzcF9jb3JlOjpIMjU2AAEcZGVwb3NpdJUBARxCYWxhbmNlAABJEgQYUmVzdWx0CARUAegERQFNEgEICE9rBADoAAAAAAxFcnIEAE0SAAABAABNEgw0cGFsbGV0X3Jldml2ZShwcmltaXRpdmVzTENvbnRyYWN0QWNjZXNzRXJyb3IAAQwsRG9lc250RXhpc3QAAABES2V5RGVjb2RpbmdGYWlsZWQAAQBIU3RvcmFnZVdyaXRlRmFpbGVkBAABCAE0RGlzcGF0Y2hFcnJvcgACAABREhQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpPGRlYnVnX3JwY190eXBlcyhUcmFjZXJUeXBlAAEMKENhbGxUcmFjZXIEAFUSAWBPcHRpb248Q2FsbFRyYWNlckNvbmZpZz4AAAA4UHJlc3RhdGVUcmFjZXIEAF0SAXBPcHRpb248UHJlc3RhdGVUcmFjZXJDb25maWc+AAEAPEV4ZWN1dGlvblRyYWNlcgQAZRIBdE9wdGlvbjxFeGVjdXRpb25UcmFjZXJDb25maWc+AAIAAFUSBBhPcHRpb24EBFQBWRIBCBBOb25lAAAAEFNvbWUEAFkSAAABAABZEhQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpPGRlYnVnX3JwY190eXBlc0BDYWxsVHJhY2VyQ29uZmlnAAAIASR3aXRoX2xvZ3OZAQEQYm9vbAABNG9ubHlfdG9wX2NhbGyZAQEQYm9vbAAAXRIEGE9wdGlvbgQEVAFhEgEIEE5vbmUAAAAQU29tZQQAYRIAAAEAAGESFDRwYWxsZXRfcmV2aXZlDGV2bQxhcGk8ZGVidWdfcnBjX3R5cGVzUFByZXN0YXRlVHJhY2VyQ29uZmlnAAAMASRkaWZmX21vZGWZAQEQYm9vbAABPGRpc2FibGVfc3RvcmFnZZkBARBib29sAAEwZGlzYWJsZV9jb2RlmQEBEGJvb2wAAGUSBBhPcHRpb24EBFQBaRIBCBBOb25lAAAAEFNvbWUEAGkSAAABAABpEhQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpPGRlYnVnX3JwY190eXBlc1RFeGVjdXRpb25UcmFjZXJDb25maWcAABwBNGVuYWJsZV9tZW1vcnmZAQEQYm9vbAABNGRpc2FibGVfc3RhY2uZAQEQYm9vbAABPGRpc2FibGVfc3RvcmFnZZkBARBib29sAAFIZW5hYmxlX3JldHVybl9kYXRhmQEBEGJvb2wAAVxkaXNhYmxlX3N5c2NhbGxfZGV0YWlsc5kBARBib29sAAEUbGltaXRlAQEsT3B0aW9uPHU2ND4AAURtZW1vcnlfd29yZF9saW1pdDgBDHUzMgAAbRIAAAJxEgBxEgAABAg4dRIAdRIUNHBhbGxldF9yZXZpdmUMZXZtDGFwaTxkZWJ1Z19ycGNfdHlwZXMUVHJhY2UAAQwQQ2FsbAQAeRIBJENhbGxUcmFjZQAAACBQcmVzdGF0ZQQAjRIBNFByZXN0YXRlVHJhY2UAAQAkRXhlY3V0aW9uBACtEgE4RXhlY3V0aW9uVHJhY2UAAgAAeRIUNHBhbGxldF9yZXZpdmUMZXZtDGFwaTxkZWJ1Z19ycGNfdHlwZXMkQ2FsbFRyYWNlAAA0ARBmcm9t/QQBEEgxNjAAAQxnYXMoAQx1NjQAASBnYXNfdXNlZCgBDHU2NAABCHRv/QQBEEgxNjAAARRpbnB1dCkOARRCeXRlcwABGG91dHB1dCkOARRCeXRlcwABFGVycm9yrREBOE9wdGlvbjxTdHJpbmc+AAE0cmV2ZXJ0X3JlYXNvbq0RAThPcHRpb248U3RyaW5nPgABFGNhbGxzfRIBOFZlYzxDYWxsVHJhY2U+AAEQbG9nc4ESATBWZWM8Q2FsbExvZz4AARR2YWx1ZTkOATBPcHRpb248VTI1Nj4AASRjYWxsX3R5cGWJEgEgQ2FsbFR5cGUAAUBjaGlsZF9jYWxsX2NvdW50OAEMdTMyAAB9EgAAAnkSAIESAAAChRIAhRIUNHBhbGxldF9yZXZpdmUMZXZtDGFwaTxkZWJ1Z19ycGNfdHlwZXMcQ2FsbExvZwAAEAEcYWRkcmVzc/0EARBIMTYwAAEYdG9waWNz8AEkVmVjPEgyNTY+AAEQZGF0YSkOARRCeXRlcwABIHBvc2l0aW9uOAEMdTMyAACJEhQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpPGRlYnVnX3JwY190eXBlcyBDYWxsVHlwZQABGBBDYWxsAAAAKFN0YXRpY0NhbGwAAQAwRGVsZWdhdGVDYWxsAAIAGENyZWF0ZQADABxDcmVhdGUyAAQAMFNlbGZkZXN0cnVjdAAFAACNEhQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpPGRlYnVnX3JwY190eXBlczRQcmVzdGF0ZVRyYWNlAAEIIFByZXN0YXRlBACREgGEQlRyZWVNYXA8SDE2MCwgUHJlc3RhdGVUcmFjZUluZm8+AAAAIERpZmZNb2RlCAEMcHJlkRIBhEJUcmVlTWFwPEgxNjAsIFByZXN0YXRlVHJhY2VJbmZvPgABEHBvc3SREgGEQlRyZWVNYXA8SDE2MCwgUHJlc3RhdGVUcmFjZUluZm8+AAEAAJESBCBCVHJlZU1hcAgESwH9BARWAZUSAAQApRIAAACVEhQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpPGRlYnVnX3JwY190eXBlc0RQcmVzdGF0ZVRyYWNlSW5mbwAAEAEcYmFsYW5jZTkOATBPcHRpb248VTI1Nj4AARRub25jZdgBLE9wdGlvbjx1MzI+AAEQY29kZe0RATRPcHRpb248Qnl0ZXM+AAEcc3RvcmFnZZkSAXhCVHJlZU1hcDxCeXRlcywgT3B0aW9uPEJ5dGVzPj4AAJkSBCBCVHJlZU1hcAgESwEpDgRWAe0RAAQAnRIAAACdEgAAAqESAKESAAAECCkO7REApRIAAAKpEgCpEgAABAj9BJUSAK0SFDRwYWxsZXRfcmV2aXZlDGV2bQxhcGk8ZGVidWdfcnBjX3R5cGVzOEV4ZWN1dGlvblRyYWNlAAAYAQxnYXMoAQx1NjQAATx3ZWlnaHRfY29uc3VtZWR5AQEYV2VpZ2h0AAFAYmFzZV9jYWxsX3dlaWdodHkBARhXZWlnaHQAARhmYWlsZWSZAQEQYm9vbAABMHJldHVybl92YWx1ZSkOARRCeXRlcwABLHN0cnVjdF9sb2dzsRIBSFZlYzxFeGVjdXRpb25TdGVwPgAAsRIAAAK1EgC1EhQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpPGRlYnVnX3JwY190eXBlczRFeGVjdXRpb25TdGVwAAAcAQxnYXO4AQx1NjQAASBnYXNfY29zdLgBDHU2NAABLHdlaWdodF9jb3N0eQEBGFdlaWdodAABFGRlcHRo+QMBDHUxNgABLHJldHVybl9kYXRhKQ4BFEJ5dGVzAAEUZXJyb3KtEQE4T3B0aW9uPFN0cmluZz4AARBraW5kuRIBREV4ZWN1dGlvblN0ZXBLaW5kAAC5EhQ0cGFsbGV0X3Jldml2ZQxldm0MYXBpPGRlYnVnX3JwY190eXBlc0RFeGVjdXRpb25TdGVwS2luZAABCCRFVk1PcGNvZGUUAQhwY2QBDHUzMgABCG9wDAEIdTgAARRzdGFja+URAShWZWM8Qnl0ZXM+AAEYbWVtb3J55REBKFZlYzxCeXRlcz4AARxzdG9yYWdlvRIByE9wdGlvbjxhbGxvYzo6Y29sbGVjdGlvbnM6OkJUcmVlTWFwPEJ5dGVzLCBCeXRlcz4+AAAAKFBWTVN5c2NhbGwMAQhvcAwBCHU4AAEQYXJnc/0OASBWZWM8dTY0PgABIHJldHVybmVkZQEBLE9wdGlvbjx1NjQ+AAEAAL0SBBhPcHRpb24EBFQBwRIBCBBOb25lAAAAEFNvbWUEAMESAAABAADBEgQgQlRyZWVNYXAIBEsBKQ4EVgEpDgAEAMUSAAAAxRIAAALJEgDJEgAABAgpDikOAM0SBBhPcHRpb24EBFQBdRIBCBBOb25lAAAAEFNvbWUEAHUSAAABAADREgQYUmVzdWx0CARUAXUSBEUBARIBCAhPawQAdRIAAAAADEVycgQAARIAAAEAANUSFDRwYWxsZXRfcmV2aXZlDGV2bQxhcGkkcnBjX3R5cGVzNFRyYWNpbmdDb25maWcAAAQBPHN0YXRlX292ZXJyaWRlcw0SAWBPcHRpb248U3RhdGVPdmVycmlkZVNldD4AANkSBBhSZXN1bHQIBFQB3RIERQHhEgEICE9rBADdEgAAAAAMRXJyBADhEgAAAQAA3RIAAAQIlQE4AOESDDRwYWxsZXRfcmV2aXZlKHByaW1pdGl2ZXNYQmFsYW5jZUNvbnZlcnNpb25FcnJvcgABCBRWYWx1ZQAAABBEdXN0AAEAAOUSCGBhc3NldF9odWJfa3VzYW1hX3J1bnRpbWUwUnVudGltZUVycm9yAAG4GFN5c3RlbQQA8QkBcGZyYW1lX3N5c3RlbTo6RXJyb3I8UnVudGltZT4AAAA8UGFyYWNoYWluU3lzdGVtBAB9CgG8Y3VtdWx1c19wYWxsZXRfcGFyYWNoYWluX3N5c3RlbTo6RXJyb3I8UnVudGltZT4AAQBQTXVsdGlCbG9ja01pZ3JhdGlvbnMEAIEKAYRwYWxsZXRfbWlncmF0aW9uczo6RXJyb3I8UnVudGltZT4ABQAgUHJlaW1hZ2UEALUKAXxwYWxsZXRfcHJlaW1hZ2U6OkVycm9yPFJ1bnRpbWU+AAYAJFNjaGVkdWxlcgQAzQoBgHBhbGxldF9zY2hlZHVsZXI6OkVycm9yPFJ1bnRpbWU+AAcAIEJhbGFuY2VzBAARCwF8cGFsbGV0X2JhbGFuY2VzOjpFcnJvcjxSdW50aW1lPgAKABxWZXN0aW5nBAAtCwF4cGFsbGV0X3Zlc3Rpbmc6OkVycm9yPFJ1bnRpbWU+AA4AGENsYWltcwQAMQsBdHBhbGxldF9jbGFpbXM6OkVycm9yPFJ1bnRpbWU+AA8ARENvbGxhdG9yU2VsZWN0aW9uBABJCwGkcGFsbGV0X2NvbGxhdG9yX3NlbGVjdGlvbjo6RXJyb3I8UnVudGltZT4AFQAcU2Vzc2lvbgQAaQsBeHBhbGxldF9zZXNzaW9uOjpFcnJvcjxSdW50aW1lPgAWACRYY21wUXVldWUEAKULAaRjdW11bHVzX3BhbGxldF94Y21wX3F1ZXVlOjpFcnJvcjxSdW50aW1lPgAeACxQb2xrYWRvdFhjbQQADQwBaHBhbGxldF94Y206OkVycm9yPFJ1bnRpbWU+AB8AME1lc3NhZ2VRdWV1ZQQAMQwBkHBhbGxldF9tZXNzYWdlX3F1ZXVlOjpFcnJvcjxSdW50aW1lPgAjABxVdGlsaXR5BAA1DAF4cGFsbGV0X3V0aWxpdHk6OkVycm9yPFJ1bnRpbWU+ACgAIE11bHRpc2lnBABFDAF8cGFsbGV0X211bHRpc2lnOjpFcnJvcjxSdW50aW1lPgApABRQcm94eQQAaQwBcHBhbGxldF9wcm94eTo6RXJyb3I8UnVudGltZT4AKgBUUmVtb3RlUHJveHlSZWxheUNoYWluBAB5DAGMcGFsbGV0X3JlbW90ZV9wcm94eTo6RXJyb3I8UnVudGltZT4AKwAcSW5kaWNlcwQAgQwBeHBhbGxldF9pbmRpY2VzOjpFcnJvcjxSdW50aW1lPgAsABhBc3NldHMEAK0MAdxwYWxsZXRfYXNzZXRzOjpFcnJvcjxSdW50aW1lLCBwYWxsZXRfYXNzZXRzOjpJbnN0YW5jZTE+ADIAHFVuaXF1ZXMEANkMAXhwYWxsZXRfdW5pcXVlczo6RXJyb3I8UnVudGltZT4AMwAQTmZ0cwQALQ0BbHBhbGxldF9uZnRzOjpFcnJvcjxSdW50aW1lPgA0ADRGb3JlaWduQXNzZXRzBABBDQHccGFsbGV0X2Fzc2V0czo6RXJyb3I8UnVudGltZSwgcGFsbGV0X2Fzc2V0czo6SW5zdGFuY2UyPgA1AFBOZnRGcmFjdGlvbmFsaXphdGlvbgQATQ0BsHBhbGxldF9uZnRfZnJhY3Rpb25hbGl6YXRpb246OkVycm9yPFJ1bnRpbWU+ADYAKFBvb2xBc3NldHMEAFkNAdxwYWxsZXRfYXNzZXRzOjpFcnJvcjxSdW50aW1lLCBwYWxsZXRfYXNzZXRzOjpJbnN0YW5jZTM+ADcAPEFzc2V0Q29udmVyc2lvbgQAZQ0BnHBhbGxldF9hc3NldF9jb252ZXJzaW9uOjpFcnJvcjxSdW50aW1lPgA4ACBSZWNvdmVyeQQArQ0BfHBhbGxldF9yZWNvdmVyeTo6RXJyb3I8UnVudGltZT4AOQAcU29jaWV0eQQAAQ4BeHBhbGxldF9zb2NpZXR5OjpFcnJvcjxSdW50aW1lPgA6ABhSZXZpdmUEAKkOAXRwYWxsZXRfcmV2aXZlOjpFcnJvcjxSdW50aW1lPgA8AFxBc3NldHNQcmVjb21waWxlc1Blcm1pdAQAsQ4B5HBhbGxldF9hc3NldHNfcHJlY29tcGlsZXM6OnBlcm1pdDo6cGFsbGV0OjpFcnJvcjxSdW50aW1lPgA+AEhTdGF0ZVRyaWVNaWdyYXRpb24EADkJAaxwYWxsZXRfc3RhdGVfdHJpZV9taWdyYXRpb246OkVycm9yPFJ1bnRpbWU+AEYAPE5vbWluYXRpb25Qb29scwQA7Q4BnHBhbGxldF9ub21pbmF0aW9uX3Bvb2xzOjpFcnJvcjxSdW50aW1lPgBQACRWb3Rlckxpc3QEAAEPAfRwYWxsZXRfYmFnc19saXN0OjpFcnJvcjxSdW50aW1lLCBwYWxsZXRfYmFnc19saXN0OjpJbnN0YW5jZTE+AFIAQERlbGVnYXRlZFN0YWtpbmcEABUPAaBwYWxsZXRfZGVsZWdhdGVkX3N0YWtpbmc6OkVycm9yPFJ1bnRpbWU+AFMAPFN0YWtpbmdSY0NsaWVudAQAIQ8BuHBhbGxldF9zdGFraW5nX2FzeW5jX3JjX2NsaWVudDo6RXJyb3I8UnVudGltZT4AVABITXVsdGlCbG9ja0VsZWN0aW9uBAA5DwHQcGFsbGV0X2VsZWN0aW9uX3Byb3ZpZGVyX211bHRpX2Jsb2NrOjpFcnJvcjxSdW50aW1lPgBVAGBNdWx0aUJsb2NrRWxlY3Rpb25TaWduZWQEAHUPAfBwYWxsZXRfZWxlY3Rpb25fcHJvdmlkZXJfbXVsdGlfYmxvY2s6OnNpZ25lZDo6RXJyb3I8UnVudGltZT4AWAAcU3Rha2luZwQA2Q8BkHBhbGxldF9zdGFraW5nX2FzeW5jOjpFcnJvcjxSdW50aW1lPgBZACBUcmVhc3VyeQQA+Q8BfHBhbGxldF90cmVhc3VyeTo6RXJyb3I8UnVudGltZT4AWgBAQ29udmljdGlvblZvdGluZwQALRABoHBhbGxldF9jb252aWN0aW9uX3ZvdGluZzo6RXJyb3I8UnVudGltZT4AWwAkUmVmZXJlbmRhBABtEAGAcGFsbGV0X3JlZmVyZW5kYTo6RXJyb3I8UnVudGltZT4AXAAkV2hpdGVsaXN0BABxEAGAcGFsbGV0X3doaXRlbGlzdDo6RXJyb3I8UnVudGltZT4AXgAgQm91bnRpZXMEAIEQAXxwYWxsZXRfYm91bnRpZXM6OkVycm9yPFJ1bnRpbWU+AF8ANENoaWxkQm91bnRpZXMEAI0QAZRwYWxsZXRfY2hpbGRfYm91bnRpZXM6OkVycm9yPFJ1bnRpbWU+AGAAJEFzc2V0UmF0ZQQAkRABhHBhbGxldF9hc3NldF9yYXRlOjpFcnJvcjxSdW50aW1lPgBhAEhNdWx0aUFzc2V0Qm91bnRpZXMEAK0QAaxwYWxsZXRfbXVsdGlfYXNzZXRfYm91bnRpZXM6OkVycm9yPFJ1bnRpbWU+AGIAFEFoT3BzBAC1EAF0cGFsbGV0X2FoX29wczo6RXJyb3I8UnVudGltZT4A/gAA+BhTeXN0ZW0BGFN5c3RlbVAcQWNjb3VudAEBBAIE1QdBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACABOggVGhlIGZ1bGwgYWNjb3VudCBpbmZvcm1hdGlvbiBmb3IgYSBwYXJ0aWN1bGFyIGFjY291bnQgSUQuADhFeHRyaW5zaWNDb3VudAAAOAQABLggVG90YWwgZXh0cmluc2ljcyBjb3VudCBmb3IgdGhlIGN1cnJlbnQgYmxvY2suAEBJbmhlcmVudHNBcHBsaWVkAQCZAQQABKQgV2hldGhlciBhbGwgaW5oZXJlbnRzIGhhdmUgYmVlbiBhcHBsaWVkLgAsQmxvY2tXZWlnaHQBAOEHGAAAAAAAAASIIFRoZSBjdXJyZW50IHdlaWdodCBmb3IgdGhlIGJsb2NrLgAkQmxvY2tTaXplAAA4BAAMsCBUb3RhbCBzaXplIChpbiBieXRlcykgb2YgdGhlIGN1cnJlbnQgYmxvY2suAMggVHJhY2tzIHRoZSBzaXplIG9mIHRoZSBoZWFkZXIgYW5kIGFsbCBleHRyaW5zaWNzLgAkQmxvY2tIYXNoAQEEBThAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABJggTWFwIG9mIGJsb2NrIG51bWJlcnMgdG8gYmxvY2sgaGFzaGVzLgA0RXh0cmluc2ljRGF0YQEBBAU4GAQABD0BIEV4dHJpbnNpY3MgZGF0YSBmb3IgdGhlIGN1cnJlbnQgYmxvY2sgKG1hcHMgYW4gZXh0cmluc2ljJ3MgaW5kZXggdG8gaXRzIGRhdGEpLgAYTnVtYmVyAQA4EAAAAAAECQEgVGhlIGN1cnJlbnQgYmxvY2sgbnVtYmVyIGJlaW5nIHByb2Nlc3NlZC4gU2V0IGJ5IGBleGVjdXRlX2Jsb2NrYC4AKFBhcmVudEhhc2gBAECAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEcCBIYXNoIG9mIHRoZSBwcmV2aW91cyBibG9jay4AGERpZ2VzdAEAaAQABPAgRGlnZXN0IG9mIHRoZSBjdXJyZW50IGJsb2NrLCBhbHNvIHBhcnQgb2YgdGhlIGJsb2NrIGhlYWRlci4AGEV2ZW50cwEA5QcEABygIEV2ZW50cyBkZXBvc2l0ZWQgZm9yIHRoZSBjdXJyZW50IGJsb2NrLgAdASBOT1RFOiBUaGUgaXRlbSBpcyB1bmJvdW5kIGFuZCBzaG91bGQgdGhlcmVmb3JlIG5ldmVyIGJlIHJlYWQgb24gY2hhaW4u0CBJdCBjb3VsZCBvdGhlcndpc2UgaW5mbGF0ZSB0aGUgUG9WIHNpemUgb2YgYSBibG9jay4ALQEgRXZlbnRzIGhhdmUgYSBsYXJnZSBpbi1tZW1vcnkgc2l6ZS4gQm94IHRoZSBldmVudHMgdG8gbm90IGdvIG91dC1vZi1tZW1vcnn8IGp1c3QgaW4gY2FzZSBzb21lb25lIHN0aWxsIHJlYWRzIHRoZW0gZnJvbSB3aXRoaW4gdGhlIHJ1bnRpbWUuAChFdmVudENvdW50AQA4EAAAAAAEuCBUaGUgbnVtYmVyIG9mIGV2ZW50cyBpbiB0aGUgYEV2ZW50czxUPmAgbGlzdC4ALEV2ZW50VG9waWNzAQEEAkC1CQQAKCUBIE1hcHBpbmcgYmV0d2VlbiBhIHRvcGljIChyZXByZXNlbnRlZCBieSBUOjpIYXNoKSBhbmQgYSB2ZWN0b3Igb2YgaW5kZXhlc5Qgb2YgZXZlbnRzIGluIHRoZSBgPEV2ZW50czxUPj5gIGxpc3QuAFEBIEFsbCB0b3BpYyB2ZWN0b3JzIGhhdmUgZGV0ZXJtaW5pc3RpYyBzdG9yYWdlIGxvY2F0aW9ucyBkZXBlbmRpbmcgb24gdGhlIHRvcGljLiBUaGlzRQEgYWxsb3dzIGxpZ2h0LWNsaWVudHMgdG8gbGV2ZXJhZ2UgdGhlIGNoYW5nZXMgdHJpZSBzdG9yYWdlIHRyYWNraW5nIG1lY2hhbmlzbSBhbmTkIGluIGNhc2Ugb2YgY2hhbmdlcyBmZXRjaCB0aGUgbGlzdCBvZiBldmVudHMgb2YgaW50ZXJlc3QuAFkBIFRoZSB2YWx1ZSBoYXMgdGhlIHR5cGUgYChCbG9ja051bWJlckZvcjxUPiwgRXZlbnRJbmRleClgIGJlY2F1c2UgaWYgd2UgdXNlZCBvbmx5IGp1c3RNASB0aGUgYEV2ZW50SW5kZXhgIHRoZW4gaW4gY2FzZSBpZiB0aGUgdG9waWMgaGFzIHRoZSBzYW1lIGNvbnRlbnRzIG9uIHRoZSBuZXh0IGJsb2NrAQEgbm8gbm90aWZpY2F0aW9uIHdpbGwgYmUgdHJpZ2dlcmVkIHRodXMgdGhlIGV2ZW50IG1pZ2h0IGJlIGxvc3QuAEhMYXN0UnVudGltZVVwZ3JhZGUAALkJBAAEVQEgU3RvcmVzIHRoZSBgc3BlY192ZXJzaW9uYCBhbmQgYHNwZWNfbmFtZWAgb2Ygd2hlbiB0aGUgbGFzdCBydW50aW1lIHVwZ3JhZGUgaGFwcGVuZWQuAERCbG9ja3NUaWxsVXBncmFkZQAADAQABOwgTnVtYmVyIG9mIGJsb2NrcyB0aWxsIHRoZSBwZW5kaW5nIGNvZGUgdXBncmFkZSBpcyBhcHBsaWVkLgBUVXBncmFkZWRUb1UzMlJlZkNvdW50AQCZAQQABE0BIFRydWUgaWYgd2UgaGF2ZSB1cGdyYWRlZCBzbyB0aGF0IGB0eXBlIFJlZkNvdW50YCBpcyBgdTMyYC4gRmFsc2UgKGRlZmF1bHQpIGlmIG5vdC4AYFVwZ3JhZGVkVG9UcmlwbGVSZWZDb3VudAEAmQEEAAhdASBUcnVlIGlmIHdlIGhhdmUgdXBncmFkZWQgc28gdGhhdCBBY2NvdW50SW5mbyBjb250YWlucyB0aHJlZSB0eXBlcyBvZiBgUmVmQ291bnRgLiBGYWxzZUggKGRlZmF1bHQpIGlmIG5vdC4AOEV4ZWN1dGlvblBoYXNlAACxCQQABIggVGhlIGV4ZWN1dGlvbiBwaGFzZSBvZiB0aGUgYmxvY2suAERBdXRob3JpemVkVXBncmFkZQAAxQkEAAS4IGBTb21lYCBpZiBhIGNvZGUgdXBncmFkZSBoYXMgYmVlbiBhdXRob3JpemVkLgBgRXh0cmluc2ljV2VpZ2h0UmVjbGFpbWVkAQB5AQgAABygIFRoZSB3ZWlnaHQgcmVjbGFpbWVkIGZvciB0aGUgZXh0cmluc2ljLgAhASBUaGlzIGluZm9ybWF0aW9uIGlzIGF2YWlsYWJsZSB1bnRpbCB0aGUgZW5kIG9mIHRoZSBleHRyaW5zaWMgZXhlY3V0aW9uLiEBIE1vcmUgcHJlY2lzZWx5IHRoaXMgaW5mb3JtYXRpb24gaXMgcmVtb3ZlZCBpbiBgbm90ZV9hcHBsaWVkX2V4dHJpbnNpY2AuAHEBIExvZ2ljIGRvaW5nIHNvbWUgcG9zdCBkaXNwYXRjaCB3ZWlnaHQgcmVkdWN0aW9uIG11c3QgdXBkYXRlIHRoaXMgc3RvcmFnZSB0byBhdm9pZCBkdXBsaWNhdGUsIHJlZHVjdGlvbi4AASQAAfEHABgwQmxvY2tXZWlnaHRzyQmJAQcA8gUqAQALACBKqdEBAgCAAgJlzR0AAQvAJvt/dAECAAACAQsAaOXPiwECACACAQAAAmXNHQABC8DeX1m6AQIAYAIBCwAgSqnRAQIAgAIBBwC4ZNlFAgBgAAJlzR0AAAAABNAgQmxvY2sgJiBleHRyaW5zaWNzIHdlaWdodHM6IGJhc2UgdmFsdWVzIGFuZCBsaW1pdHMuACxCbG9ja0xlbmd0aNUJNAAARAAAAFAAAABQAAAEqCBUaGUgbWF4aW11bSBsZW5ndGggb2YgYSBibG9jayAoaW4gYnl0ZXMpLgA4QmxvY2tIYXNoQ291bnQ4EAAQAAAEVQEgTWF4aW11bSBudW1iZXIgb2YgYmxvY2sgbnVtYmVyIHRvIGJsb2NrIGhhc2ggbWFwcGluZ3MgdG8ga2VlcCAob2xkZXN0IHBydW5lZCBmaXJzdCkuACBEYldlaWdodN0JQIgP0QAAAAAAoHT4AQAAAAAECQEgVGhlIHdlaWdodCBvZiBydW50aW1lIGRhdGFiYXNlIG9wZXJhdGlvbnMgdGhlIHJ1bnRpbWUgY2FuIGludm9rZS4AHFZlcnNpb27hCdkFJHN0YXRlbWluZSRzdGF0ZW1pbmUBAAAAOJAeAAAAAABw3XGNXMUyYtQBAAAABOcFIaDT0vgBAAAA173YonLKDWUCAAAA32rLaJkHYJsFAAAAN+OX/HyR9eQCAAAAQP461AH4lZoGAAAA0ryYl+7QjxUDAAAA94sni+U/RUwCAAAAqzwFcikf64sCAAAAzNneY5bImcoBAAAAvJ2JkE9bkj8BAAAAioBHpTqCd+wBAAAAN8i7E1CpoqgEAAAA8/8U1atScFkDAAAAb/Uu6Fjmxb0CAAAAkbHIsWMo65ICAAAAn/tQWqc41pwBAAAAJgm+g6xEaNwBAAAAEsjj1NfgbeABAAAA3pK4oEJrm/YCAAAA6pPj8W89aWIDAAAA+8V3uddH79YBAAAAwbjwwDf5fegBAAAAot22pYR3v2MBAAAAF6a8DQBirrMBAAAAGO9Yo7Z7p3ABAAAAxR/x+j9dDMoBAAAAjEA+XEqf1EIBAAAADwAAAAEEhCBHZXQgdGhlIGNoYWluJ3MgaW4tY29kZSB2ZXJzaW9uLgAoU1M1OFByZWZpePkDCAIAFKggVGhlIGRlc2lnbmF0ZWQgU1M1OCBwcmVmaXggb2YgdGhpcyBjaGFpbi4AOQEgVGhpcyByZXBsYWNlcyB0aGUgInNzNThGb3JtYXQiIHByb3BlcnR5IGRlY2xhcmVkIGluIHRoZSBjaGFpbiBzcGVjLiBSZWFzb24gaXMxASB0aGF0IHRoZSBydW50aW1lIHNob3VsZCBrbm93IGFib3V0IHRoZSBwcmVmaXggaW4gb3JkZXIgdG8gbWFrZSB1c2Ugb2YgaXQgYXNwIGFuIGlkZW50aWZpZXIgb2YgdGhlIGNoYWluLgAB8QkAHCxSdW50aW1lQ2FsbCAEjCBUaGUgYWdncmVnYXRlZCBgUnVudGltZUNhbGxgIHR5cGUuFE5vbmNlOARJASBUaGlzIHN0b3JlcyB0aGUgbnVtYmVyIG9mIHByZXZpb3VzIHRyYW5zYWN0aW9ucyBhc3NvY2lhdGVkIHdpdGggYSBzZW5kZXIgYWNjb3VudC4QSGFzaEAEmCBUaGUgb3V0cHV0IG9mIHRoZSBgSGFzaGluZ2AgZnVuY3Rpb24uHEhhc2hpbmdxBwQhASBUaGUgaGFzaGluZyBzeXN0ZW0gKGFsZ29yaXRobSkgYmVpbmcgdXNlZCBpbiB0aGUgcnVudGltZSAoZS5nLiBCbGFrZTIpLiRBY2NvdW50SWQEBMggVGhlIHVzZXIgYWNjb3VudCBpZGVudGlmaWVyIHR5cGUgZm9yIHRoZSBydW50aW1lLhRCbG9ja/UJCGEBIFRoZSBCbG9jayB0eXBlIHVzZWQgYnkgdGhlIHJ1bnRpbWUuIFRoaXMgaXMgdXNlZCBieSBgY29uc3RydWN0X3J1bnRpbWVgIHRvIHJldHJpZXZlIHRoZcwgZXh0cmluc2ljcyBvciBvdGhlciBibG9jayBzcGVjaWZpYyBkYXRhIGFzIG5lZWRlZC4sQWNjb3VudERhdGHZBwhhASBEYXRhIHRvIGJlIGFzc29jaWF0ZWQgd2l0aCBhbiBhY2NvdW50IChvdGhlciB0aGFuIG5vbmNlL3RyYW5zYWN0aW9uIGNvdW50ZXIsIHdoaWNoIHRoaXNkIHBhbGxldCBkb2VzIHJlZ2FyZGxlc3MpLgAAAAA8UGFyYWNoYWluU3lzdGVtATxQYXJhY2hhaW5TeXN0ZW18PEJsb2NrV2VpZ2h0TW9kZQAACQoEABh8IFRoZSBjdXJyZW50IGJsb2NrIHdlaWdodCBtb2RlLgB1ASBUaGlzIGlzIHVzZWQgdG8gZGV0ZXJtaW5lIHdoYXQgaXMgdGhlIG1heGltdW0gYWxsb3dlZCBibG9jayB3ZWlnaHQsIGZvciBtb3JlIGluZm9ybWF0aW9uIHNlZUggW2BibG9ja193ZWlnaHRgXS4AJQEgS2lsbGVkIGluIFtgU2VsZjo6b25faW5pdGlhbGl6ZWBdIGFuZCBzZXQgYnkgdGhlIFtgYmxvY2tfd2VpZ2h0YF0gbG9naWMuAERQcmV2aW91c0NvcmVDb3VudAAA1QUEAAwFASBUaGUgY29yZSBjb3VudCBhdmFpbGFibGUgdG8gdGhlIHBhcmFjaGFpbiBpbiB0aGUgcHJldmlvdXMgYmxvY2suAHUBIFRoaXMgaXMgbWFpbmx5IHVzZWQgZm9yIG9mZmNoYWluIGZ1bmN0aW9uYWxpdHkgdG8gY2FsY3VsYXRlIHRoZSBjb3JyZWN0IHRhcmdldCBibG9jayB3ZWlnaHQuAERVbmluY2x1ZGVkU2VnbWVudAEADQoEABhJASBMYXRlc3QgaW5jbHVkZWQgYmxvY2sgZGVzY2VuZGFudHMgdGhlIHJ1bnRpbWUgYWNjZXB0ZWQuIEluIG90aGVyIHdvcmRzLCB0aGVzZSBhcmVhASBhbmNlc3RvcnMgb2YgdGhlIGN1cnJlbnRseSBleGVjdXRpbmcgYmxvY2sgd2hpY2ggaGF2ZSBub3QgYmVlbiBpbmNsdWRlZCBpbiB0aGUgb2JzZXJ2ZWRMIHJlbGF5LWNoYWluIHN0YXRlLgB1ASBUaGUgc2VnbWVudCBsZW5ndGggaXMgbGltaXRlZCBieSB0aGUgY2FwYWNpdHkgcmV0dXJuZWQgZnJvbSB0aGUgW2BDb25zZW5zdXNIb29rYF0gY29uZmlndXJlZDwgaW4gdGhlIHBhbGxldC4AbEFnZ3JlZ2F0ZWRVbmluY2x1ZGVkU2VnbWVudAAAMQoEAAxpASBTdG9yYWdlIGZpZWxkIHRoYXQga2VlcHMgdHJhY2sgb2YgYmFuZHdpZHRoIHVzZWQgYnkgdGhlIHVuaW5jbHVkZWQgc2VnbWVudCBhbG9uZyB3aXRoIHRoZS0BIGxhdGVzdCBIUk1QIHdhdGVybWFyay4gVXNlZCBmb3IgbGltaXRpbmcgdGhlIGFjY2VwdGFuY2Ugb2YgbmV3IGJsb2NrcyB3aXRokCByZXNwZWN0IHRvIHJlbGF5IGNoYWluIGNvbnN0cmFpbnRzLgBUUGVuZGluZ1ZhbGlkYXRpb25Db2RlAQAYBAAYWQEgSW4gY2FzZSBvZiBhIHNjaGVkdWxlZCB1cGdyYWRlLCB0aGlzIHN0b3JhZ2UgZmllbGQgY29udGFpbnMgdGhlIHZhbGlkYXRpb24gY29kZSB0byBiZSQgYXBwbGllZC4APQEgQXMgc29vbiBhcyB0aGUgcmVsYXkgY2hhaW4gZ2l2ZXMgdXMgdGhlIGdvLWFoZWFkIHNpZ25hbCwgd2Ugd2lsbCBvdmVyd3JpdGUgdGhlZQEgW2A6cGVuZGluZ19jb2RlYF1bc3BfY29yZTo6c3RvcmFnZTo6d2VsbF9rbm93bl9rZXlzOjpQRU5ESU5HX0NPREVdIHdoaWNoIHdpbGwgcmVzdWx0IHRoZXUBIG5leHQgYmxvY2sgdG8gYmUgcHJvY2Vzc2VkIHdpdGggdGhlIG5ldyB2YWxpZGF0aW9uIGNvZGUuIFRoaXMgY29uY2x1ZGVzIHRoZSB1cGdyYWRlIHByb2Nlc3MuAEROZXdWYWxpZGF0aW9uQ29kZQAAGAQAFF0BIFZhbGlkYXRpb24gY29kZSB0aGF0IGlzIHNldCBieSB0aGUgcGFyYWNoYWluIGFuZCBpcyB0byBiZSBjb21tdW5pY2F0ZWQgdG8gY29sbGF0b3IgYW5keCBjb25zZXF1ZW50bHkgdGhlIHJlbGF5LWNoYWluLgBlASBUaGlzIHdpbGwgYmUgY2xlYXJlZCBpbiBgb25faW5pdGlhbGl6ZWAgb2YgZWFjaCBuZXcgYmxvY2sgaWYgbm8gb3RoZXIgcGFsbGV0IGFscmVhZHkgc2V0LCB0aGUgdmFsdWUuADhWYWxpZGF0aW9uRGF0YQAATAQADNAgVGhlIFtgUGVyc2lzdGVkVmFsaWRhdGlvbkRhdGFgXSBzZXQgZm9yIHRoaXMgYmxvY2suAHEBIFRoaXMgdmFsdWUgaXMgZXhwZWN0ZWQgdG8gYmUgc2V0IG9ubHkgb25jZSBieSB0aGUgW2BQYWxsZXQ6OnNldF92YWxpZGF0aW9uX2RhdGFgXSBpbmhlcmVudC4AUERpZFNldFZhbGlkYXRpb25Db2RlAQCZAQQABOAgV2VyZSB0aGUgdmFsaWRhdGlvbiBkYXRhIHNldCB0byBub3RpZnkgdGhlIHJlbGF5IGNoYWluPwBkTGFzdFJlbGF5Q2hhaW5CbG9ja051bWJlcgEAOBAAAAAADB0BIFRoZSByZWxheSBjaGFpbiBibG9jayBudW1iZXIgYXNzb2NpYXRlZCB3aXRoIHRoZSBsYXN0IHBhcmFjaGFpbiBibG9jay4AiCBUaGlzIGlzIHVwZGF0ZWQgaW4gYG9uX2ZpbmFsaXplYC4AYFVwZ3JhZGVSZXN0cmljdGlvblNpZ25hbAEANQoEABx1ASBBbiBvcHRpb24gd2hpY2ggaW5kaWNhdGVzIGlmIHRoZSByZWxheS1jaGFpbiByZXN0cmljdHMgc2lnbmFsbGluZyBhIHZhbGlkYXRpb24gY29kZSB1cGdyYWRlLmEBIEluIG90aGVyIHdvcmRzLCBpZiB0aGlzIGlzIGBTb21lYCBhbmQgW2BOZXdWYWxpZGF0aW9uQ29kZWBdIGlzIGBTb21lYCB0aGVuIHRoZSBwcm9kdWNlZGwgY2FuZGlkYXRlIHdpbGwgYmUgaW52YWxpZC4AcQEgVGhpcyBzdG9yYWdlIGl0ZW0gaXMgYSBtaXJyb3Igb2YgdGhlIGNvcnJlc3BvbmRpbmcgdmFsdWUgZm9yIHRoZSBjdXJyZW50IHBhcmFjaGFpbiBmcm9tIHRoZW0BIHJlbGF5LWNoYWluLiBUaGlzIHZhbHVlIGlzIGVwaGVtZXJhbCB3aGljaCBtZWFucyBpdCBkb2Vzbid0IGhpdCB0aGUgc3RvcmFnZS4gVGhpcyB2YWx1ZSBpc2Agc2V0IGFmdGVyIHRoZSBpbmhlcmVudC4AOFVwZ3JhZGVHb0FoZWFkAQApCgQAFNwgT3B0aW9uYWwgdXBncmFkZSBnby1haGVhZCBzaWduYWwgZnJvbSB0aGUgcmVsYXktY2hhaW4uAHEBIFRoaXMgc3RvcmFnZSBpdGVtIGlzIGEgbWlycm9yIG9mIHRoZSBjb3JyZXNwb25kaW5nIHZhbHVlIGZvciB0aGUgY3VycmVudCBwYXJhY2hhaW4gZnJvbSB0aGVtASByZWxheS1jaGFpbi4gVGhpcyB2YWx1ZSBpcyBlcGhlbWVyYWwgd2hpY2ggbWVhbnMgaXQgZG9lc24ndCBoaXQgdGhlIHN0b3JhZ2UuIFRoaXMgdmFsdWUgaXNgIHNldCBhZnRlciB0aGUgaW5oZXJlbnQuADxSZWxheVN0YXRlUHJvb2YAAFQEABjEIFRoZSBzdGF0ZSBwcm9vZiBmb3IgdGhlIGxhc3QgcmVsYXkgcGFyZW50IGJsb2NrLgBtASBUaGlzIGZpZWxkIGlzIG1lYW50IHRvIGJlIHVwZGF0ZWQgZWFjaCBibG9jayB3aXRoIHRoZSB2YWxpZGF0aW9uIGRhdGEgaW5oZXJlbnQuIFRoZXJlZm9yZSxNASBiZWZvcmUgcHJvY2Vzc2luZyBvZiB0aGUgaW5oZXJlbnQsIGUuZy4gaW4gYG9uX2luaXRpYWxpemVgIHRoaXMgZGF0YSBtYXkgYmUgc3RhbGUuAKwgVGhpcyBkYXRhIGlzIGFsc28gYWJzZW50IGZyb20gdGhlIGdlbmVzaXMuAFhSZWxldmFudE1lc3NhZ2luZ1N0YXRlAAA9CgQAHGUBIFRoZSBzbmFwc2hvdCBvZiBzb21lIHN0YXRlIHJlbGF0ZWQgdG8gbWVzc2FnaW5nIHJlbGV2YW50IHRvIHRoZSBjdXJyZW50IHBhcmFjaGFpbiBhcyBwZXJIIHRoZSByZWxheSBwYXJlbnQuAG0BIFRoaXMgZmllbGQgaXMgbWVhbnQgdG8gYmUgdXBkYXRlZCBlYWNoIGJsb2NrIHdpdGggdGhlIHZhbGlkYXRpb24gZGF0YSBpbmhlcmVudC4gVGhlcmVmb3JlLE0BIGJlZm9yZSBwcm9jZXNzaW5nIG9mIHRoZSBpbmhlcmVudCwgZS5nLiBpbiBgb25faW5pdGlhbGl6ZWAgdGhpcyBkYXRhIG1heSBiZSBzdGFsZS4ArCBUaGlzIGRhdGEgaXMgYWxzbyBhYnNlbnQgZnJvbSB0aGUgZ2VuZXNpcy4AREhvc3RDb25maWd1cmF0aW9uAABRCgQAGCkBIFRoZSBwYXJhY2hhaW4gaG9zdCBjb25maWd1cmF0aW9uIHRoYXQgd2FzIG9idGFpbmVkIGZyb20gdGhlIHJlbGF5IHBhcmVudC4AbQEgVGhpcyBmaWVsZCBpcyBtZWFudCB0byBiZSB1cGRhdGVkIGVhY2ggYmxvY2sgd2l0aCB0aGUgdmFsaWRhdGlvbiBkYXRhIGluaGVyZW50LiBUaGVyZWZvcmUsTQEgYmVmb3JlIHByb2Nlc3Npbmcgb2YgdGhlIGluaGVyZW50LCBlLmcuIGluIGBvbl9pbml0aWFsaXplYCB0aGlzIGRhdGEgbWF5IGJlIHN0YWxlLgCsIFRoaXMgZGF0YSBpcyBhbHNvIGFic2VudCBmcm9tIHRoZSBnZW5lc2lzLgA4TGFzdERtcU1xY0hlYWQBAFkKgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEPQgVGhlIGxhc3QgZG93bndhcmQgbWVzc2FnZSBxdWV1ZSBjaGFpbiBoZWFkIHdlIGhhdmUgb2JzZXJ2ZWQuAGUBIFRoaXMgdmFsdWUgaXMgbG9hZGVkIGJlZm9yZSBhbmQgc2F2ZWQgYWZ0ZXIgcHJvY2Vzc2luZyBpbmJvdW5kIGRvd253YXJkIG1lc3NhZ2VzIGNhcnJpZWRgIGJ5IHRoZSBzeXN0ZW0gaW5oZXJlbnQuAEBMYXN0SHJtcE1xY0hlYWRzAQBdCgQAEEkBIFRoZSBtZXNzYWdlIHF1ZXVlIGNoYWluIGhlYWRzIHdlIGhhdmUgb2JzZXJ2ZWQgcGVyIGVhY2ggY2hhbm5lbCBpbmNvbWluZyBjaGFubmVsLgBlASBUaGlzIHZhbHVlIGlzIGxvYWRlZCBiZWZvcmUgYW5kIHNhdmVkIGFmdGVyIHByb2Nlc3NpbmcgaW5ib3VuZCBkb3dud2FyZCBtZXNzYWdlcyBjYXJyaWVkYCBieSB0aGUgc3lzdGVtIGluaGVyZW50LgBkUHJvY2Vzc2VkRG93bndhcmRNZXNzYWdlcwEAOBAAAAAADMggTnVtYmVyIG9mIGRvd253YXJkIG1lc3NhZ2VzIHByb2Nlc3NlZCBpbiBhIGJsb2NrLgDsIFRoaXMgd2lsbCBiZSBjbGVhcmVkIGluIGBvbl9pbml0aWFsaXplYCBvZiBlYWNoIG5ldyBibG9jay4AcExhc3RQcm9jZXNzZWREb3dud2FyZE1lc3NhZ2UAAGkKBAAMlCBUaGUgbGFzdCBwcm9jZXNzZWQgZG93bndhcmQgbWVzc2FnZS4AXQEgV2UgbmVlZCB0byBrZWVwIHRyYWNrIG9mIHRoaXMgdG8gZmlsdGVyIHRoZSBtZXNzYWdlcyB0aGF0IGhhdmUgYmVlbiBhbHJlYWR5IHByb2Nlc3NlZC4ANEhybXBXYXRlcm1hcmsBADgQAAAAAASgIEhSTVAgd2F0ZXJtYXJrIHRoYXQgd2FzIHNldCBpbiBhIGJsb2NrLgBgTGFzdFByb2Nlc3NlZEhybXBNZXNzYWdlAABpCgQADIQgVGhlIGxhc3QgcHJvY2Vzc2VkIEhSTVAgbWVzc2FnZS4AXQEgV2UgbmVlZCB0byBrZWVwIHRyYWNrIG9mIHRoaXMgdG8gZmlsdGVyIHRoZSBtZXNzYWdlcyB0aGF0IGhhdmUgYmVlbiBhbHJlYWR5IHByb2Nlc3NlZC4AUEhybXBPdXRib3VuZE1lc3NhZ2VzAQBtCgQADKQgSFJNUCBtZXNzYWdlcyB0aGF0IHdlcmUgc2VudCBpbiBhIGJsb2NrLgDsIFRoaXMgd2lsbCBiZSBjbGVhcmVkIGluIGBvbl9pbml0aWFsaXplYCBvZiBlYWNoIG5ldyBibG9jay4AOFVwd2FyZE1lc3NhZ2VzAQA0BAAMrCBVcHdhcmQgbWVzc2FnZXMgdGhhdCB3ZXJlIHNlbnQgaW4gYSBibG9jay4A8CBUaGlzIHdpbGwgYmUgY2xlYXJlZCBpbiBgb25faW5pdGlhbGl6ZWAgZm9yIGVhY2ggbmV3IGJsb2NrLgBUUGVuZGluZ1Vwd2FyZE1lc3NhZ2VzAQA0BAAEMQEgVXB3YXJkIG1lc3NhZ2VzIHRoYXQgYXJlIHN0aWxsIHBlbmRpbmcgYW5kIG5vdCB5ZXQgc2VudCB0byB0aGUgcmVsYXkgY2hhaW4uAFBQZW5kaW5nVXB3YXJkU2lnbmFscwEANAQADC0BIFVwd2FyZCBzaWduYWxzIHRoYXQgYXJlIHN0aWxsIHBlbmRpbmcgYW5kIG5vdCB5ZXQgc2VudCB0byB0aGUgcmVsYXkgY2hhaW4uANggVGhpcyB3aWxsIGJlIGNsZWFyZWQgaW4gYG9uX2ZpbmFsaXplYCBmb3IgZWFjaCBibG9jay4ATFBlbmRpbmdBcHByb3ZlZFBlZXIAAHwEAAQ5ASBUaGUgYXBwcm92ZWQgcGVlciBpZCB0byBiZSBzZW50IGFzIGEgVU1QIHNpZ25hbCBvbiB0aGUgbGFzdCBibG9jayBvZiB0aGUgUG9WLgBcVXB3YXJkRGVsaXZlcnlGZWVGYWN0b3IBAI0HQAAAZKeztuANAAAAAAAAAAAE5CBUaGUgZmFjdG9yIHRvIG11bHRpcGx5IHRoZSBiYXNlIGRlbGl2ZXJ5IGZlZSBieSBmb3IgVU1QLgCEQW5ub3VuY2VkSHJtcE1lc3NhZ2VzUGVyQ2FuZGlkYXRlAQA4EAAAAAAIZQEgVGhlIG51bWJlciBvZiBIUk1QIG1lc3NhZ2VzIHdlIG9ic2VydmVkIGluIGBvbl9pbml0aWFsaXplYCBhbmQgdGh1cyB1c2VkIHRoYXQgbnVtYmVyIGZvcvAgYW5ub3VuY2luZyB0aGUgd2VpZ2h0IG9mIGBvbl9pbml0aWFsaXplYCBhbmQgYG9uX2ZpbmFsaXplYC4AaFJlc2VydmVkWGNtcFdlaWdodE92ZXJyaWRlAAB5AQQACF0BIFRoZSB3ZWlnaHQgd2UgcmVzZXJ2ZSBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBibG9jayBmb3IgcHJvY2Vzc2luZyBYQ01QIG1lc3NhZ2VzLiBUaGlzuCBvdmVycmlkZXMgdGhlIGFtb3VudCBzZXQgaW4gdGhlIENvbmZpZyB0cmFpdC4AZFJlc2VydmVkRG1wV2VpZ2h0T3ZlcnJpZGUAAHkBBAAIWQEgVGhlIHdlaWdodCB3ZSByZXNlcnZlIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIGJsb2NrIGZvciBwcm9jZXNzaW5nIERNUCBtZXNzYWdlcy4gVGhpc7ggb3ZlcnJpZGVzIHRoZSBhbW91bnQgc2V0IGluIHRoZSBDb25maWcgdHJhaXQuAGBDdXN0b21WYWxpZGF0aW9uSGVhZERhdGEAABgEAAwpASBBIGN1c3RvbSBoZWFkIGRhdGEgdGhhdCBzaG91bGQgYmUgcmV0dXJuZWQgYXMgcmVzdWx0IG9mIGB2YWxpZGF0ZV9ibG9ja2AuABEBIFNlZSBgUGFsbGV0OjpzZXRfY3VzdG9tX3ZhbGlkYXRpb25faGVhZF9kYXRhYCBmb3IgbW9yZSBpbmZvcm1hdGlvbi4ASFBvVk1lc3NhZ2VzVHJhY2tlcgAAdQoEAAxVASBUcmFja3MgY3VtdWxhdGl2ZSBgVU1QYCBhbmQgYEhSTVBgIG1lc3NhZ2VzIHNlbnQgYWNyb3NzIGJsb2NrcyBpbiB0aGUgY3VycmVudCBgUG9WYC4AdQEgQWNyb3NzIGRpZmZlcmVudCBjYW5kaWRhdGVzL1BvVnMgdGhlIGJ1ZGdldHMgYXJlIHRyYWNrZWQgYnkgW2BBZ2dyZWdhdGVkVW5pbmNsdWRlZFNlZ21lbnRgXS4AAUQAARkIAAQoU2VsZlBhcmFJZKAQ6AMAAAS4IFJldHVybnMgdGhlIHBhcmFjaGFpbiBJRCB3ZSBhcmUgcnVubmluZyB3aXRoLgABfQoAAAABAAAkVGltZXN0YW1wASRUaW1lc3RhbXAIDE5vdwEAKCAAAAAAAAAAAASgIFRoZSBjdXJyZW50IHRpbWUgZm9yIHRoZSBjdXJyZW50IGJsb2NrLgAkRGlkVXBkYXRlAQCZAQQAENggV2hldGhlciB0aGUgdGltZXN0YW1wIGhhcyBiZWVuIHVwZGF0ZWQgaW4gdGhpcyBibG9jay4AVQEgVGhpcyB2YWx1ZSBpcyB1cGRhdGVkIHRvIGB0cnVlYCB1cG9uIHN1Y2Nlc3NmdWwgc3VibWlzc2lvbiBvZiBhIHRpbWVzdGFtcCBieSBhIG5vZGUuRQEgSXQgaXMgdGhlbiBjaGVja2VkIGF0IHRoZSBlbmQgb2YgZWFjaCBibG9jayBleGVjdXRpb24gaW4gdGhlIGBvbl9maW5hbGl6ZWAgaG9vay4AAbQAAAQ0TWluaW11bVBlcmlvZCggAAAAAAAAAAAYjCBUaGUgbWluaW11bSBwZXJpb2QgYmV0d2VlbiBibG9ja3MuAE0BIEJlIGF3YXJlIHRoYXQgdGhpcyBpcyBkaWZmZXJlbnQgdG8gdGhlICpleHBlY3RlZCogcGVyaW9kIHRoYXQgdGhlIGJsb2NrIHByb2R1Y3Rpb25JASBhcHBhcmF0dXMgcHJvdmlkZXMuIFlvdXIgY2hvc2VuIGNvbnNlbnN1cyBzeXN0ZW0gd2lsbCBnZW5lcmFsbHkgd29yayB3aXRoIHRoaXMgdG9hASBkZXRlcm1pbmUgYSBzZW5zaWJsZSBibG9jayB0aW1lLiBGb3IgZXhhbXBsZSwgaW4gdGhlIEF1cmEgcGFsbGV0IGl0IHdpbGwgYmUgZG91YmxlIHRoaXNwIHBlcmlvZCBvbiBkZWZhdWx0IHNldHRpbmdzLgAABBhNb21lbnQoBJggVHlwZSB1c2VkIGZvciBleHByZXNzaW5nIGEgdGltZXN0YW1wLgADAAA0UGFyYWNoYWluSW5mbwE0UGFyYWNoYWluSW5mbwQsUGFyYWNoYWluSWQBAKAQZAAAAAAAAbwAAAAAAAAEAABQTXVsdGlCbG9ja01pZ3JhdGlvbnMBUE11bHRpQmxvY2tNaWdyYXRpb25zCBhDdXJzb3IAAMgEAAzYIFRoZSBjdXJyZW50bHkgYWN0aXZlIG1pZ3JhdGlvbiB0byBydW4gYW5kIGl0cyBjdXJzb3IuALwgYE5vbmVgIGluZGljYXRlcyB0aGF0IG5vIG1pZ3JhdGlvbiBpcyBydW5uaW5nLgAgSGlzdG9yaWMAAQQF4BAEABC0IFNldCBvZiBhbGwgc3VjY2Vzc2Z1bGx5IGV4ZWN1dGVkIG1pZ3JhdGlvbnMuAHEBIFRoaXMgaXMgdXNlZCBhcyBibGFja2xpc3QsIHRvIG5vdCByZS1leGVjdXRlIG1pZ3JhdGlvbnMgdGhhdCBoYXZlIG5vdCBiZWVuIHJlbW92ZWQgZnJvbSB0aGUxASBjb2RlYmFzZSB5ZXQuIEdvdmVybmFuY2UgY2FuIHJlZ3VsYXJseSBjbGVhciB0aGlzIG91dCB2aWEgYGNsZWFyX2hpc3RvcmljYC4AAcAAAR0IAAgwQ3Vyc29yTWF4TGVuOBAAAAEAEKQgVGhlIG1heGltYWwgbGVuZ3RoIG9mIGFuIGVuY29kZWQgY3Vyc29yLgBlASBBIGdvb2QgZGVmYXVsdCBuZWVkcyB0byBzZWxlY3RlZCBzdWNoIHRoYXQgbm8gbWlncmF0aW9uIHdpbGwgZXZlciBoYXZlIGEgY3Vyc29yIHdpdGggTUVMCQEgYWJvdmUgdGhpcyBsaW1pdC4gVGhpcyBpcyBzdGF0aWNhbGx5IGNoZWNrZWQgaW4gYGludGVncml0eV90ZXN0YC4AQElkZW50aWZpZXJNYXhMZW44EAABAAAQtCBUaGUgbWF4aW1hbCBsZW5ndGggb2YgYW4gZW5jb2RlZCBpZGVudGlmaWVyLgBVASBBIGdvb2QgZGVmYXVsdCBuZWVkcyB0byBzZWxlY3RlZCBzdWNoIHRoYXQgbm8gbWlncmF0aW9uIHdpbGwgZXZlciBoYXZlIGFuIGlkZW50aWZpZXItASB3aXRoIE1FTCBhYm92ZSB0aGlzIGxpbWl0LiBUaGlzIGlzIHN0YXRpY2FsbHkgY2hlY2tlZCBpbiBgaW50ZWdyaXR5X3Rlc3RgLgABgQoAABALIBmazjVk0JZOLE1Km6RplE28/2ps4aTQsnxvzALSTDhvbmdvaW5nX3N0YXR1cwCFCgSoIFJldHVybnMgdGhlIG9uZ29pbmcgc3RhdHVzIG9mIG1pZ3JhdGlvbnMuAAsgGZrONWTQlk4sTUqbpGlevXdssV2bkS4njU0tYsWhIHByb2dyZXNzAIkKEAkBIFJldHVybnMgcHJvZ3Jlc3MgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGN1cnJlbnQgbWlncmF0aW9uLCBpZiBhbnkuAFEBIFRoaXMgZnVuY3Rpb24gcHJvdmlkZXMgZGV0YWlsZWQgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGN1cnJlbnQgbWlncmF0aW9uJ3MgcHJvZ3Jlc3MsHQEgaW5jbHVkaW5nIHRoZSBudW1iZXIgb2Ygc3RlcHMgY29tcGxldGVkIGFuZCB0aGUgbWF4aW11bSBhbGxvd2VkIHN0ZXBzLgALIBmazjVk0JZOLE1Km6RpRq9LzsbzWnu77p2fwQlb4URhZmZlY3RlZF9wcmVmaXhlcwA0DAEBIFJldHVybnMgdGhlIHN0b3JhZ2UgcHJlZml4ZXMgYWZmZWN0ZWQgYnkgdGhlIGN1cnJlbnQgbWlncmF0aW9uLgAZASBDYW4gYmUgZW1wdHkgaWYgdGhlIG1pZ3JhdGlvbiBkb2VzIG5vdCBrbm93IG9yIHRoZXJlIGFyZSBubyBwcmVmaXhlcy4ACyAZms41ZNCWTixNSpukaapMKKBvGYhFvRuynsYgXd0Yc3RhdHVzAJEKBPAgUmV0dXJucyB0aGUgY29tcHJlaGVuc2l2ZSBzdGF0dXMgb2YgbXVsdGktYmxvY2sgbWlncmF0aW9ucy4ABQAAIFByZWltYWdlASBQcmVpbWFnZQwkU3RhdHVzRm9yAAEEBkCVCgQABJAgVGhlIHJlcXVlc3Qgc3RhdHVzIG9mIGEgZ2l2ZW4gaGFzaC4CQFJlcXVlc3RTdGF0dXNGb3IAQFJlcXVlc3RTdGF0dXNGb3IAAQQGQJ0KBAAEkCBUaGUgcmVxdWVzdCBzdGF0dXMgb2YgYSBnaXZlbiBoYXNoLgAsUHJlaW1hZ2VGb3IAAQQGrQqxCgQAAAAB7AABIQgAAAG1CgAAAAYAACRTY2hlZHVsZXIBJFNjaGVkdWxlchA8SW5jb21wbGV0ZVNpbmNlAAA4BAAE9CBCbG9jayBudW1iZXIgYXQgd2hpY2ggdGhlIGFnZW5kYSBiZWdhbiBpbmNvbXBsZXRlIGV4ZWN1dGlvbi4AGEFnZW5kYQEBBAU4uQoEAARNASBJdGVtcyB0byBiZSBleGVjdXRlZCwgaW5kZXhlZCBieSB0aGUgYmxvY2sgbnVtYmVyIHRoYXQgdGhleSBzaG91bGQgYmUgZXhlY3V0ZWQgb24uABxSZXRyaWVzAAEEAvzJCgQABCEBIFJldHJ5IGNvbmZpZ3VyYXRpb25zIGZvciBpdGVtcyB0byBiZSBleGVjdXRlZCwgaW5kZXhlZCBieSB0YXNrIGFkZHJlc3MuABhMb29rdXAAAQQFCPwEABD4IExvb2t1cCBmcm9tIGEgbmFtZSB0byB0aGUgYmxvY2sgbnVtYmVyIGFuZCBpbmRleCBvZiB0aGUgdGFzay4AWQEgRm9yIHYzIC0+IHY0IHRoZSBwcmV2aW91c2x5IHVuYm91bmRlZCBpZGVudGl0aWVzIGFyZSBCbGFrZTItMjU2IGhhc2hlZCB0byBmb3JtIHRoZSB2NDAgaWRlbnRpdGllcy4AAfQAASUIAAg0TWF4aW11bVdlaWdodHkBLAsAgG6HdAECAAACBCkBIFRoZSBtYXhpbXVtIHdlaWdodCB0aGF0IG1heSBiZSBzY2hlZHVsZWQgcGVyIGJsb2NrIGZvciBhbnkgZGlzcGF0Y2hhYmxlcy4AUE1heFNjaGVkdWxlZFBlckJsb2NrOBAyAAAAFB0BIFRoZSBtYXhpbXVtIG51bWJlciBvZiBzY2hlZHVsZWQgY2FsbHMgaW4gdGhlIHF1ZXVlIGZvciBhIHNpbmdsZSBibG9jay4AGCBOT1RFOlEBICsgRGVwZW5kZW50IHBhbGxldHMnIGJlbmNobWFya3MgbWlnaHQgcmVxdWlyZSBhIGhpZ2hlciBsaW1pdCBmb3IgdGhlIHNldHRpbmcuIFNldCBhxCBoaWdoZXIgbGltaXQgdW5kZXIgYHJ1bnRpbWUtYmVuY2htYXJrc2AgZmVhdHVyZS4AAc0KAAQsUnVudGltZUNhbGwgBGggVGhlIGFnZ3JlZ2F0ZWQgY2FsbCB0eXBlLgAHAAAoUGFyYW1ldGVycwEoUGFyYW1ldGVycwQoUGFyYW1ldGVycwABBAIxCE0IBAAETCBTdG9yZWQgcGFyYW1ldGVycy4AAQEBAAEtCAAAAAAACAAANFdlaWdodFJlY2xhaW0AAAAAAAAACQiBASBQYWxsZXQgdG8gdXNlIGFsb25nc2lkZSB0aGUgdHJhbnNhY3Rpb24gZXh0ZW5zaW9uIFtgU3RvcmFnZVdlaWdodFJlY2xhaW1gXSwgdGhlIHBhbGxldCBwcm92aWRlc4wgd2VpZ2h0IGluZm9ybWF0aW9uIGFuZCBiZW5jaG1hcmtzLgAgQmFsYW5jZXMBIEJhbGFuY2VzHDRUb3RhbElzc3VhbmNlAQCVAUAAAAAAAAAAAAAAAAAAAAAABJggVGhlIHRvdGFsIHVuaXRzIGlzc3VlZCBpbiB0aGUgc3lzdGVtLgBASW5hY3RpdmVJc3N1YW5jZQEAlQFAAAAAAAAAAAAAAAAAAAAAAAQJASBUaGUgdG90YWwgdW5pdHMgb2Ygb3V0c3RhbmRpbmcgZGVhY3RpdmF0ZWQgYmFsYW5jZSBpbiB0aGUgc3lzdGVtLgAcQWNjb3VudAEBBAIE2QcBAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIBgCQEgVGhlIEJhbGFuY2VzIHBhbGxldCBleGFtcGxlIG9mIHN0b3JpbmcgdGhlIGJhbGFuY2Ugb2YgYW4gYWNjb3VudC4AKCAjIEV4YW1wbGUANCBgYGBub2NvbXBpbGWwICBpbXBsIHBhbGxldF9iYWxhbmNlczo6Q29uZmlnIGZvciBSdW50aW1lIHsZAiAgICB0eXBlIEFjY291bnRTdG9yZSA9IFN0b3JhZ2VNYXBTaGltPFNlbGY6OkFjY291bnQ8UnVudGltZT4sIGZyYW1lX3N5c3RlbTo6UHJvdmlkZXI8UnVudGltZT4sIEFjY291bnRJZCwgU2VsZjo6QWNjb3VudERhdGE8QmFsYW5jZT4+DCAgfRAgYGBgABUBIFlvdSBjYW4gYWxzbyBzdG9yZSB0aGUgYmFsYW5jZSBvZiBhbiBhY2NvdW50IGluIHRoZSBgU3lzdGVtYCBwYWxsZXQuACggIyBFeGFtcGxlADQgYGBgbm9jb21waWxlsCAgaW1wbCBwYWxsZXRfYmFsYW5jZXM6OkNvbmZpZyBmb3IgUnVudGltZSB7dCAgIHR5cGUgQWNjb3VudFN0b3JlID0gU3lzdGVtDCAgfRAgYGBgAFEBIEJ1dCB0aGlzIGNvbWVzIHdpdGggdHJhZGVvZmZzLCBzdG9yaW5nIGFjY291bnQgYmFsYW5jZXMgaW4gdGhlIHN5c3RlbSBwYWxsZXQgc3RvcmVzbQEgYGZyYW1lX3N5c3RlbWAgZGF0YSBhbG9uZ3NpZGUgdGhlIGFjY291bnQgZGF0YSBjb250cmFyeSB0byBzdG9yaW5nIGFjY291bnQgYmFsYW5jZXMgaW4gdGhlKQEgYEJhbGFuY2VzYCBwYWxsZXQsIHdoaWNoIHVzZXMgYSBgU3RvcmFnZU1hcGAgdG8gc3RvcmUgYmFsYW5jZXMgZGF0YSBvbmx5LkEBIE5PVEU6IFRoaXMgaXMgb25seSB1c2VkIGluIHRoZSBjYXNlIHRoYXQgdGhpcyBwYWxsZXQgaXMgdXNlZCB0byBzdG9yZSBiYWxhbmNlcy4AFExvY2tzAQEEAgTRCgQAELggQW55IGxpcXVpZGl0eSBsb2NrcyBvbiBzb21lIGFjY291bnQgYmFsYW5jZXMuJQEgTk9URTogU2hvdWxkIG9ubHkgYmUgYWNjZXNzZWQgd2hlbiBzZXR0aW5nLCBjaGFuZ2luZyBhbmQgZnJlZWluZyBhIGxvY2suAK0BIFVzZSBvZiBsb2NrcyBpcyBkZXByZWNhdGVkIGluIGZhdm91ciBvZiBmcmVlemVzLiBTZWUgYGh0dHBzOi8vZ2l0aHViLmNvbS9wYXJpdHl0ZWNoL3N1YnN0cmF0ZS9wdWxsLzEyOTUxL2AAIFJlc2VydmVzAQEEAgThCgQADKQgTmFtZWQgcmVzZXJ2ZXMgb24gc29tZSBhY2NvdW50IGJhbGFuY2VzLgCxASBVc2Ugb2YgcmVzZXJ2ZXMgaXMgZGVwcmVjYXRlZCBpbiBmYXZvdXIgb2YgaG9sZHMuIFNlZSBgaHR0cHM6Ly9naXRodWIuY29tL3Bhcml0eXRlY2gvc3Vic3RyYXRlL3B1bGwvMTI5NTEvYAAUSG9sZHMBAQQCBO0KBAAEbCBIb2xkcyBvbiBhY2NvdW50IGJhbGFuY2VzLgAcRnJlZXplcwEBBAIE+QoEAASIIEZyZWV6ZSBsb2NrcyBvbiBhY2NvdW50IGJhbGFuY2VzLgABjQEAAWUIABBIRXhpc3RlbnRpYWxEZXBvc2l0lQFA1dwyAAAAAAAAAAAAAAAAACBBASBUaGUgbWluaW11bSBhbW91bnQgcmVxdWlyZWQgdG8ga2VlcCBhbiBhY2NvdW50IG9wZW4uIE1VU1QgQkUgR1JFQVRFUiBUSEFOIFpFUk8hAFkBIElmIHlvdSAqcmVhbGx5KiBuZWVkIGl0IHRvIGJlIHplcm8sIHlvdSBjYW4gZW5hYmxlIHRoZSBmZWF0dXJlIGBpbnNlY3VyZV96ZXJvX2VkYCBmb3JhASB0aGlzIHBhbGxldC4gSG93ZXZlciwgeW91IGRvIHNvIGF0IHlvdXIgb3duIHJpc2s6IHRoaXMgd2lsbCBvcGVuIHVwIGEgbWFqb3IgRG9TIHZlY3Rvci5ZASBJbiBjYXNlIHlvdSBoYXZlIG11bHRpcGxlIHNvdXJjZXMgb2YgcHJvdmlkZXIgcmVmZXJlbmNlcywgeW91IG1heSBhbHNvIGdldCB1bmV4cGVjdGVkjCBiZWhhdmlvdXIgaWYgeW91IHNldCB0aGlzIHRvIHplcm8uAPAgQm90dG9tIGxpbmU6IERvIHlvdXJzZWxmIGEgZmF2b3VyIGFuZCBtYWtlIGl0IGF0IGxlYXN0IG9uZSEAIE1heExvY2tzOBAyAAAAEPQgVGhlIG1heGltdW0gbnVtYmVyIG9mIGxvY2tzIHRoYXQgc2hvdWxkIGV4aXN0IG9uIGFuIGFjY291bnQu3CBOb3Qgc3RyaWN0bHkgZW5mb3JjZWQsIGJ1dCB1c2VkIGZvciB3ZWlnaHQgZXN0aW1hdGlvbi4ArQEgVXNlIG9mIGxvY2tzIGlzIGRlcHJlY2F0ZWQgaW4gZmF2b3VyIG9mIGZyZWV6ZXMuIFNlZSBgaHR0cHM6Ly9naXRodWIuY29tL3Bhcml0eXRlY2gvc3Vic3RyYXRlL3B1bGwvMTI5NTEvYAAsTWF4UmVzZXJ2ZXM4EDIAAAAMDQEgVGhlIG1heGltdW0gbnVtYmVyIG9mIG5hbWVkIHJlc2VydmVzIHRoYXQgY2FuIGV4aXN0IG9uIGFuIGFjY291bnQuALEBIFVzZSBvZiByZXNlcnZlcyBpcyBkZXByZWNhdGVkIGluIGZhdm91ciBvZiBob2xkcy4gU2VlIGBodHRwczovL2dpdGh1Yi5jb20vcGFyaXR5dGVjaC9zdWJzdHJhdGUvcHVsbC8xMjk1MS9gAChNYXhGcmVlemVzOBACAAAABGEBIFRoZSBtYXhpbXVtIG51bWJlciBvZiBpbmRpdmlkdWFsIGZyZWV6ZSBsb2NrcyB0aGF0IGNhbiBleGlzdCBvbiBhbiBhY2NvdW50IGF0IGFueSB0aW1lLgABEQsAEERSdW50aW1lSG9sZFJlYXNvbm0IBHQgVGhlIG92ZXJhcmNoaW5nIGhvbGQgcmVhc29uLhxCYWxhbmNllQEEbCBUaGUgYmFsYW5jZSBvZiBhbiBhY2NvdW50LkRSZXNlcnZlSWRlbnRpZmllcpUCDGggVGhlIElEIHR5cGUgZm9yIHJlc2VydmVzLgCxASBVc2Ugb2YgcmVzZXJ2ZXMgaXMgZGVwcmVjYXRlZCBpbiBmYXZvdXIgb2YgaG9sZHMuIFNlZSBgaHR0cHM6Ly9naXRodWIuY29tL3Bhcml0eXRlY2gvc3Vic3RyYXRlL3B1bGwvMTI5NTEvYEBGcmVlemVJZGVudGlmaWVyAQsEZCBUaGUgSUQgdHlwZSBmb3IgZnJlZXplcy4ACgAASFRyYW5zYWN0aW9uUGF5bWVudAFIVHJhbnNhY3Rpb25QYXltZW50DEROZXh0RmVlTXVsdGlwbGllcgEAjQdAAABkp7O24A0AAAAAAAAAAAAAOFN0b3JhZ2VWZXJzaW9uAQAVCwQAAAA8VHhQYXltZW50Q3JlZGl0AAAZCwQADPAgVGhlIGBPbkNoYXJnZVRyYW5zYWN0aW9uYCBzdG9yZXMgdGhlIHdpdGhkcmF3biB0eCBmZWUgaGVyZS4ANQEgVXNlIGB3aXRoZHJhd190eGZlZWAgYW5kIGByZW1haW5pbmdfdHhmZWVgIHRvIGFjY2VzcyBmcm9tIG91dHNpZGUgdGhlIGNyYXRlLgAAAaUIAARgT3BlcmF0aW9uYWxGZWVNdWx0aXBsaWVyDAQFVFkBIEEgZmVlIG11bHRpcGxpZXIgZm9yIGBPcGVyYXRpb25hbGAgZXh0cmluc2ljcyB0byBjb21wdXRlICJ2aXJ0dWFsIHRpcCIgdG8gYm9vc3QgdGhlaXIsIGBwcmlvcml0eWAAUQEgVGhpcyB2YWx1ZSBpcyBtdWx0aXBsaWVkIGJ5IHRoZSBgZmluYWxfZmVlYCB0byBvYnRhaW4gYSAidmlydHVhbCB0aXAiIHRoYXQgaXMgbGF0ZXL0IGFkZGVkIHRvIGEgdGlwIGNvbXBvbmVudCBpbiByZWd1bGFyIGBwcmlvcml0eWAgY2FsY3VsYXRpb25zLk0BIEl0IG1lYW5zIHRoYXQgYSBgTm9ybWFsYCB0cmFuc2FjdGlvbiBjYW4gZnJvbnQtcnVuIGEgc2ltaWxhcmx5LXNpemVkIGBPcGVyYXRpb25hbGBBASBleHRyaW5zaWMgKHdpdGggbm8gdGlwKSwgYnkgaW5jbHVkaW5nIGEgdGlwIHZhbHVlIGdyZWF0ZXIgdGhhbiB0aGUgdmlydHVhbCB0aXAuADwgYGBgcnVzdCxpZ25vcmVAIC8vIEZvciBgTm9ybWFsYIwgbGV0IHByaW9yaXR5ID0gcHJpb3JpdHlfY2FsYyh0aXApOwBUIC8vIEZvciBgT3BlcmF0aW9uYWxgEQEgbGV0IHZpcnR1YWxfdGlwID0gKGluY2x1c2lvbl9mZWUgKyB0aXApICogT3BlcmF0aW9uYWxGZWVNdWx0aXBsaWVyO8QgbGV0IHByaW9yaXR5ID0gcHJpb3JpdHlfY2FsYyh0aXAgKyB2aXJ0dWFsX3RpcCk7ECBgYGAAUQEgTm90ZSB0aGF0IHNpbmNlIHdlIHVzZSBgZmluYWxfZmVlYCB0aGUgbXVsdGlwbGllciBhcHBsaWVzIGFsc28gdG8gdGhlIHJlZ3VsYXIgYHRpcGBdASBzZW50IHdpdGggdGhlIHRyYW5zYWN0aW9uLiBTbywgbm90IG9ubHkgZG9lcyB0aGUgdHJhbnNhY3Rpb24gZ2V0IGEgcHJpb3JpdHkgYnVtcCBiYXNlZGEBIG9uIHRoZSBgaW5jbHVzaW9uX2ZlZWAsIGJ1dCB3ZSBhbHNvIGFtcGxpZnkgdGhlIGltcGFjdCBvZiB0aXBzIGFwcGxpZWQgdG8gYE9wZXJhdGlvbmFsYDggdHJhbnNhY3Rpb25zLgAAAAALAAA4QXNzZXRUeFBheW1lbnQAAAGpCAAAAAAADQAAHFZlc3RpbmcBHFZlc3RpbmcIHFZlc3RpbmcAAQQCBCELBAAE2CBJbmZvcm1hdGlvbiByZWdhcmRpbmcgdGhlIHZlc3Rpbmcgb2YgYSBnaXZlbiBhY2NvdW50LgA4U3RvcmFnZVZlcnNpb24BACkLBAAMfCBTdG9yYWdlIHZlcnNpb24gb2YgdGhlIHBhbGxldC4AMQEgTmV3IG5ldHdvcmtzIHN0YXJ0IHdpdGggbGF0ZXN0IHZlcnNpb24sIGFzIGRldGVybWluZWQgYnkgdGhlIGdlbmVzaXMgYnVpbGQuAAGlAQABrQgACERNaW5WZXN0ZWRUcmFuc2ZlcpUBQNXcMgAAAAAAAAAAAAAAAAAE6CBUaGUgbWluaW11bSBhbW91bnQgdHJhbnNmZXJyZWQgdG8gY2FsbCBgdmVzdGVkX3RyYW5zZmVyYC4ATE1heFZlc3RpbmdTY2hlZHVsZXM4EBwAAAAAAAEtCwAAAA4AABhDbGFpbXMBGENsYWltcxQYQ2xhaW1zAAEEBrkBlQEEAAAAFFRvdGFsAQCVAUAAAAAAAAAAAAAAAAAAAAAAAAAcVmVzdGluZwABBAa5AcEBBAAQeCBWZXN0aW5nIHNjaGVkdWxlIGZvciBhIGNsYWltLg0BIEZpcnN0IGJhbGFuY2UgaXMgdGhlIHRvdGFsIGFtb3VudCB0aGF0IHNob3VsZCBiZSBoZWxkIGZvciB2ZXN0aW5nLuQgU2Vjb25kIGJhbGFuY2UgaXMgaG93IG11Y2ggc2hvdWxkIGJlIHVubG9ja2VkIHBlciBibG9jay7MIFRoZSBibG9jayBudW1iZXIgaXMgd2hlbiB0aGUgdmVzdGluZyBzaG91bGQgc3RhcnQuABxTaWduaW5nAAEEBrkByQEEAATAIFRoZSBzdGF0ZW1lbnQga2luZCB0aGF0IG11c3QgYmUgc2lnbmVkLCBpZiBhbnkuACRQcmVjbGFpbXMAAQQGBLkBBAAELQEgUHJlLWNsYWltZWQgRXRoZXJldW0gYWNjb3VudHMsIGJ5IHRoZSBBY2NvdW50IElEIHRoYXQgdGhleSBhcmUgY2xhaW1lZCB0by4AAa0BAAGxCAAEGFByZWZpeBiAfFBheSBLU01zIHRvIHRoZSBLdXNhbWEgYWNjb3VudDoAAAExCwAAAA8AAChBdXRob3JzaGlwAShBdXRob3JzaGlwBBhBdXRob3IAAAQEAARkIEF1dGhvciBvZiBjdXJyZW50IGJsb2NrLgAAAAAAAAAUAABEQ29sbGF0b3JTZWxlY3Rpb24BRENvbGxhdG9yU2VsZWN0aW9uFDRJbnZ1bG5lcmFibGVzAQA1CwQABBEBIFRoZSBpbnZ1bG5lcmFibGUsIHBlcm1pc3Npb25lZCBjb2xsYXRvcnMuIFRoaXMgbGlzdCBtdXN0IGJlIHNvcnRlZC4ANENhbmRpZGF0ZUxpc3QBADkLBAAUaQEgVGhlIChjb21tdW5pdHksIGxpbWl0ZWQpIGNvbGxhdGlvbiBjYW5kaWRhdGVzLiBgQ2FuZGlkYXRlc2AgYW5kIGBJbnZ1bG5lcmFibGVzYCBzaG91bGQgYmVQIG11dHVhbGx5IGV4Y2x1c2l2ZS4AdQEgVGhpcyBsaXN0IGlzIHNvcnRlZCBpbiBhc2NlbmRpbmcgb3JkZXIgYnkgZGVwb3NpdCBhbmQgd2hlbiB0aGUgZGVwb3NpdHMgYXJlIGVxdWFsLCB0aGUgbGVhc3SgIHJlY2VudGx5IHVwZGF0ZWQgaXMgY29uc2lkZXJlZCBncmVhdGVyLgBETGFzdEF1dGhvcmVkQmxvY2sBAQQFBDgQAAAAAASEIExhc3QgYmxvY2sgYXV0aG9yZWQgYnkgY29sbGF0b3IuAEREZXNpcmVkQ2FuZGlkYXRlcwEAOBAAAAAADHggRGVzaXJlZCBudW1iZXIgb2YgY2FuZGlkYXRlcy4AdQEgVGhpcyBzaG91bGQgaWRlYWxseSBhbHdheXMgYmUgbGVzcyB0aGFuIFtgQ29uZmlnOjpNYXhDYW5kaWRhdGVzYF0gZm9yIHdlaWdodHMgdG8gYmUgY29ycmVjdC4ANENhbmRpZGFjeUJvbmQBAJUBQAAAAAAAAAAAAAAAAAAAAAAMuCBGaXhlZCBhbW91bnQgdG8gZGVwb3NpdCB0byBiZWNvbWUgYSBjb2xsYXRvci4AQQEgV2hlbiBhIGNvbGxhdG9yIGNhbGxzIGBsZWF2ZV9pbnRlbnRgIHRoZXkgaW1tZWRpYXRlbHkgcmVjZWl2ZSB0aGUgZGVwb3NpdCBiYWNrLgABzQEAAbUIABgUUG90SWRFCyBQb3RTdGFrZQT0IEFjY291bnQgSWRlbnRpZmllciBmcm9tIHdoaWNoIHRoZSBpbnRlcm5hbCBQb3QgaXMgZ2VuZXJhdGVkLgA0TWF4Q2FuZGlkYXRlczgQZAAAAAzIIE1heGltdW0gbnVtYmVyIG9mIGNhbmRpZGF0ZXMgdGhhdCB3ZSBzaG91bGQgaGF2ZS4AzCBUaGlzIGRvZXMgbm90IHRha2UgaW50byBhY2NvdW50IHRoZSBpbnZ1bG5lcmFibGVzLgBQTWluRWxpZ2libGVDb2xsYXRvcnM4EAQAAAAMVQEgTWluaW11bSBudW1iZXIgZWxpZ2libGUgY29sbGF0b3JzLiBTaG91bGQgYWx3YXlzIGJlIGdyZWF0ZXIgdGhhbiB6ZXJvLiBUaGlzIGluY2x1ZGVzUQEgSW52dWxuZXJhYmxlIGNvbGxhdG9ycy4gVGhpcyBlbnN1cmVzIHRoYXQgdGhlcmUgd2lsbCBhbHdheXMgYmUgb25lIGNvbGxhdG9yIHdobyBjYW5EIHByb2R1Y2UgYSBibG9jay4AQE1heEludnVsbmVyYWJsZXM4EBQAAAAEhCBNYXhpbXVtIG51bWJlciBvZiBpbnZ1bG5lcmFibGVzLgA0S2lja1RocmVzaG9sZDgQEA4AAAAALHBvdF9hY2NvdW50BIBtb2RsUG90U3Rha2UAAAAAAAAAAAAAAAAAAAAAAAAAAASgIEdldHMgdGhpcyBwYWxsZXQncyBkZXJpdmVkIHBvdCBhY2NvdW50LgABSQsABCxWYWxpZGF0b3JJZAQEdCBBIHN0YWJsZSBJRCBmb3IgYSB2YWxpZGF0b3IuABUAABxTZXNzaW9uARxTZXNzaW9uIChWYWxpZGF0b3JzAQCdAQQABHwgVGhlIGN1cnJlbnQgc2V0IG9mIHZhbGlkYXRvcnMuADBDdXJyZW50SW5kZXgBADgQAAAAAAR4IEN1cnJlbnQgaW5kZXggb2YgdGhlIHNlc3Npb24uADRRdWV1ZWRDaGFuZ2VkAQCZAQQACDkBIFRydWUgaWYgdGhlIHVuZGVybHlpbmcgZWNvbm9taWMgaWRlbnRpdGllcyBvciB3ZWlnaHRpbmcgYmVoaW5kIHRoZSB2YWxpZGF0b3JzpCBoYXMgY2hhbmdlZCBpbiB0aGUgcXVldWVkIHZhbGlkYXRvciBzZXQuAChRdWV1ZWRLZXlzAQBNCwQACD0BIFRoZSBxdWV1ZWQga2V5cyBmb3IgdGhlIG5leHQgc2Vzc2lvbi4gV2hlbiB0aGUgbmV4dCBzZXNzaW9uIGJlZ2lucywgdGhlc2Uga2V5c+Agd2lsbCBiZSB1c2VkIHRvIGRldGVybWluZSB0aGUgdmFsaWRhdG9yJ3Mgc2Vzc2lvbiBrZXlzLgBIRGlzYWJsZWRWYWxpZGF0b3JzAQBVCwQAFIAgSW5kaWNlcyBvZiBkaXNhYmxlZCB2YWxpZGF0b3JzLgA9ASBUaGUgdmVjIGlzIGFsd2F5cyBrZXB0IHNvcnRlZCBzbyB0aGF0IHdlIGNhbiBmaW5kIHdoZXRoZXIgYSBnaXZlbiB2YWxpZGF0b3IgaXM9ASBkaXNhYmxlZCB1c2luZyBiaW5hcnkgc2VhcmNoLiBJdCBnZXRzIGNsZWFyZWQgd2hlbiBgb25fc2Vzc2lvbl9lbmRpbmdgIHJldHVybnNkIGEgbmV3IHNldCBvZiBpZGVudGl0aWVzLgAgTmV4dEtleXMAAQQFBNUBBAAEnCBUaGUgbmV4dCBzZXNzaW9uIGtleXMgZm9yIGEgdmFsaWRhdG9yLgAgS2V5T3duZXIAAQQFYQsEBAAECQEgVGhlIG93bmVyIG9mIGEga2V5LiBUaGUga2V5IGlzIHRoZSBgS2V5VHlwZUlkYCArIHRoZSBlbmNvZGVkIGtleS4AREV4dGVybmFsbHlTZXRLZXlzAAEEBQQQBAAQMQEgQWNjb3VudHMgd2hvc2Uga2V5cyB3ZXJlIHNldCB2aWEgYFNlc3Npb25JbnRlcmZhY2VgIChleHRlcm5hbCBwYXRoKSB3aXRob3V0OQEgaW5jcmVtZW50aW5nIHRoZSBjb25zdW1lciByZWZlcmVuY2Ugb3IgcGxhY2luZyBhIGtleSBkZXBvc2l0LiBgZG9fcHVyZ2Vfa2V5c2A5ASBvbmx5IGRlY3JlbWVudHMgY29uc3VtZXJzIGZvciBhY2NvdW50cyB0aGF0IHdlcmUgcmVnaXN0ZXJlZCB0aHJvdWdoIHRoZSBsb2NhbEAgc2Vzc2lvbiBwYWxsZXQuAAHRAQABuQgABChLZXlEZXBvc2l0lQFAAAAAAAAAAAAAAAAAAAAAAASkIFRoZSBhbW91bnQgdG8gYmUgaGVsZCB3aGVuIHNldHRpbmcga2V5cy4AAWkLAAgsVmFsaWRhdG9ySWQEBHQgQSBzdGFibGUgSUQgZm9yIGEgdmFsaWRhdG9yLhBLZXlz1QEEKCBUaGUga2V5cy4AFgAAEEF1cmEBEEF1cmEILEF1dGhvcml0aWVzAQBtCwQABGwgVGhlIGN1cnJlbnQgYXV0aG9yaXR5IHNldC4ALEN1cnJlbnRTbG90AQB1CyAAAAAAAAAAAAyAIFRoZSBjdXJyZW50IHNsb3Qgb2YgdGhpcyBibG9jay4AlCBUaGlzIHdpbGwgYmUgc2V0IGluIGBvbl9pbml0aWFsaXplYC4AAAAEMFNsb3REdXJhdGlvbiggwF0AAAAAAAAUDQEgVGhlIHNsb3QgZHVyYXRpb24gQXVyYSBzaG91bGQgcnVuIHdpdGgsIGV4cHJlc3NlZCBpbiBtaWxsaXNlY29uZHMuACEBIFRoZSBlZmZlY3RpdmUgdmFsdWUgb2YgdGhpcyB0eXBlIGNhbiBiZSBjaGFuZ2VkIHdpdGggYSBydW50aW1lIHVwZ3JhZGUuADUBIEZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSBlaXRoZXIgdXNlIFtgTWluaW11bVBlcmlvZFRpbWVzVHdvYF0gb3IgYSBjb25zdC4AAAQsQXV0aG9yaXR5SWTZAQSYIFRoZSBpZGVudGlmaWVyIHR5cGUgZm9yIGFuIGF1dGhvcml0eS4AFwAAHEF1cmFFeHQBHEF1cmFFeHQILEF1dGhvcml0aWVzAQBtCwQAFJQgU2VydmVzIGFzIGNhY2hlIGZvciB0aGUgYXV0aG9yaXRpZXMuAHEBIFRoZSBhdXRob3JpdGllcyBpbiBBdVJhIGFyZSBvdmVyd3JpdHRlbiBpbiBgb25faW5pdGlhbGl6ZWAgd2hlbiB3ZSBzd2l0Y2ggdG8gYSBuZXcgc2Vzc2lvbixdASBidXQgd2UgcmVxdWlyZSB0aGUgb2xkIGF1dGhvcml0aWVzIHRvIHZlcmlmeSB0aGUgc2VhbCB3aGVuIHZhbGlkYXRpbmcgYSBQb1YuIFRoaXMgd2lsbA0BIGFsd2F5cyBiZSB1cGRhdGVkIHRvIHRoZSBsYXRlc3QgQXVSYSBhdXRob3JpdGllcyBpbiBgb25fZmluYWxpemVgLgA0UmVsYXlTbG90SW5mbwAAeQsEABAJASBDdXJyZW50IHJlbGF5IGNoYWluIHNsb3QgcGFpcmVkIHdpdGggYSBudW1iZXIgb2YgYXV0aG9yZWQgYmxvY2tzLgBlASBUaGlzIGlzIHVwZGF0ZWQgaW4gW2BGaXhlZFZlbG9jaXR5Q29uc2Vuc3VzSG9vazo6b25fc3RhdGVfcHJvb2ZgXSB3aXRoIHRoZSBjdXJyZW50IHJlbGF53CBjaGFpbiBzbG90IGFzIHByb3ZpZGVkIGJ5IHRoZSByZWxheSBjaGFpbiBzdGF0ZSBwcm9vZi4AAAAAAAAAGAAAJFhjbXBRdWV1ZQEkWGNtcFF1ZXVlHFBJbmJvdW5kWGNtcFN1c3BlbmRlZAEAfQsEACANASBUaGUgc3VzcGVuZGVkIGluYm91bmQgWENNUCBjaGFubmVscy4gQWxsIG90aGVycyBhcmUgbm90IHN1c3BlbmRlZC4AcQEgVGhpcyBpcyBhIGBTdG9yYWdlVmFsdWVgIGluc3RlYWQgb2YgYSBgU3RvcmFnZU1hcGAgc2luY2Ugd2UgZXhwZWN0IG11bHRpcGxlIHJlYWRzIHBlciBibG9ja2kBIHRvIGRpZmZlcmVudCBrZXlzIHdpdGggYSBvbmUgYnl0ZSBwYXlsb2FkLiBUaGUgYWNjZXNzIHRvIGBCb3VuZGVkQlRyZWVTZXRgIHdpbGwgYmUgY2FjaGVkFQEgd2l0aGluIHRoZSBibG9jayBhbmQgdGhlcmVmb3JlIG9ubHkgaW5jbHVkZWQgb25jZSBpbiB0aGUgcHJvb2Ygc2l6ZS4AZQEgTk9URTogVGhlIFBvViBiZW5jaG1hcmtpbmcgY2Fubm90IGtub3cgdGhpcyBhbmQgd2lsbCBvdmVyLWVzdGltYXRlLCBidXQgdGhlIGFjdHVhbCBwcm9vZkQgd2lsbCBiZSBzbWFsbGVyLgBIT3V0Ym91bmRYY21wU3RhdHVzAQCFCwQAGF0BIFRoZSBub24tZW1wdHkgWENNUCBjaGFubmVscyBpbiBvcmRlciBvZiBiZWNvbWluZyBub24tZW1wdHksIGFuZCB0aGUgaW5kZXggb2YgdGhlIGZpcnN0UQEgYW5kIGxhc3Qgb3V0Ym91bmQgbWVzc2FnZS4gSWYgdGhlIHR3byBpbmRpY2VzIGFyZSBlcXVhbCwgdGhlbiBpdCBpbmRpY2F0ZXMgYW4gZW1wdHlZASBxdWV1ZSBhbmQgdGhlcmUgbXVzdCBiZSBhIG5vbi1gT2tgIGBPdXRib3VuZFN0YXR1c2AuIFdlIGFzc3VtZSBxdWV1ZXMgZ3JvdyBubyBncmVhdGVyWQEgdGhhbiA2NTUzNSBpdGVtcy4gUXVldWUgaW5kaWNlcyBmb3Igbm9ybWFsIG1lc3NhZ2VzIGJlZ2luIGF0IG9uZTsgemVybyBpcyByZXNlcnZlZCBpbhEBIGNhc2Ugb2YgdGhlIG5lZWQgdG8gc2VuZCBhIGhpZ2gtcHJpb3JpdHkgc2lnbmFsIG1lc3NhZ2UgdGhpcyBibG9jay4JASBUaGUgYm9vbCBpcyB0cnVlIGlmIHRoZXJlIGlzIGEgc2lnbmFsIG1lc3NhZ2Ugd2FpdGluZyB0byBiZSBzZW50LgBQT3V0Ym91bmRYY21wTWVzc2FnZXMBAQgCBZkLnQsEAAS8IFRoZSBtZXNzYWdlcyBvdXRib3VuZCBpbiBhIGdpdmVuIFhDTVAgY2hhbm5lbC4AOFNpZ25hbE1lc3NhZ2VzAQEEAqCdCwQABKAgQW55IHNpZ25hbCBtZXNzYWdlcyB3YWl0aW5nIHRvIGJlIHNlbnQuACxRdWV1ZUNvbmZpZwEAoQswIAAAADAAAAAIAAAABBUBIFRoZSBjb25maWd1cmF0aW9uIHdoaWNoIGNvbnRyb2xzIHRoZSBkeW5hbWljcyBvZiB0aGUgb3V0Ym91bmQgcXVldWUuADhRdWV1ZVN1c3BlbmRlZAEAmQEEAARBASBXaGV0aGVyIG9yIG5vdCB0aGUgWENNUCBxdWV1ZSBpcyBzdXNwZW5kZWQgZnJvbSBleGVjdXRpbmcgaW5jb21pbmcgWENNcyBvciBub3QuAEREZWxpdmVyeUZlZUZhY3RvcgEBBAWgjQdAAABkp7O24A0AAAAAAAAAAATEIFRoZSBmYWN0b3IgdG8gbXVsdGlwbHkgdGhlIGJhc2UgZGVsaXZlcnkgZmVlIGJ5LgAB3QEAAb0IAAxMTWF4SW5ib3VuZFN1c3BlbmRlZDgQ6AMAABRJASBUaGUgbWF4aW11bSBudW1iZXIgb2YgaW5ib3VuZCBYQ01QIGNoYW5uZWxzIHRoYXQgY2FuIGJlIHN1c3BlbmRlZCBzaW11bHRhbmVvdXNseS4AXQEgQW55IGZ1cnRoZXIgY2hhbm5lbCBzdXNwZW5zaW9ucyB3aWxsIGZhaWwgYW5kIG1lc3NhZ2VzIG1heSBnZXQgZHJvcHBlZCB3aXRob3V0IGZ1cnRoZXJFASBub3RpY2UuIENob29zaW5nIGEgaGlnaCB2YWx1ZSAoMTAwMCkgaXMgb2theTsgdGhlIHRyYWRlLW9mZiB0aGF0IGlzIGRlc2NyaWJlZCBpbtggW2BJbmJvdW5kWGNtcFN1c3BlbmRlZGBdIHN0aWxsIGFwcGxpZXMgYXQgdGhhdCBzY2FsZS4AZE1heEFjdGl2ZU91dGJvdW5kQ2hhbm5lbHM4EIAAAAAgZQEgTWF4aW1hbCBudW1iZXIgb2Ygb3V0Ym91bmQgWENNUCBjaGFubmVscyB0aGF0IGNhbiBoYXZlIG1lc3NhZ2VzIHF1ZXVlZCBhdCB0aGUgc2FtZSB0aW1lLgBVASBJZiB0aGlzIGlzIHJlYWNoZWQsIHRoZW4gbm8gZnVydGhlciBtZXNzYWdlcyBjYW4gYmUgc2VudCB0byBjaGFubmVscyB0aGF0IGRvIG5vdCB5ZXRdASBoYXZlIGEgbWVzc2FnZSBxdWV1ZWQuIFRoaXMgc2hvdWxkIGJlIHNldCB0byB0aGUgZXhwZWN0ZWQgbWF4aW11bSBvZiBvdXRib3VuZCBjaGFubmVsc2EBIHdoaWNoIGlzIGRldGVybWluZWQgYnkgW2BTZWxmOjpDaGFubmVsSW5mb2BdLiBJdCBpcyBpbXBvcnRhbnQgdG8gc2V0IHRoaXMgbGFyZ2UgZW5vdWdoLF0BIHNpbmNlIG90aGVyd2lzZSB0aGUgY29uZ2VzdGlvbiBjb250cm9sIHByb3RvY29sIHdpbGwgbm90IHdvcmsgYXMgaW50ZW5kZWQgYW5kIG1lc3NhZ2VzUQEgbWF5IGJlIGRyb3BwZWQuIFRoaXMgdmFsdWUgaW5jcmVhc2VzIHRoZSBQb1YgYW5kIHNob3VsZCB0aGVyZWZvcmUgbm90IGJlIHBpY2tlZCB0b29NASBoaWdoLiBHb3Zlcm5hbmNlIG5lZWRzIHRvIHBheSBhdHRlbnRpb24gdG8gbm90IG9wZW4gbW9yZSBjaGFubmVscyB0aGFuIHRoaXMgdmFsdWUuACxNYXhQYWdlU2l6ZTgQAJwBABS4IFRoZSBtYXhpbWFsIHBhZ2Ugc2l6ZSBmb3IgSFJNUCBtZXNzYWdlIHBhZ2VzLgBhASBBIGxvd2VyIGxpbWl0IGNhbiBiZSBzZXQgZHluYW1pY2FsbHksIGJ1dCB0aGlzIGlzIHRoZSBoYXJkLWxpbWl0IGZvciB0aGUgUG9WIHdvcnN0IGNhc2VVASBiZW5jaG1hcmtpbmcuIFRoZSBsaW1pdCBmb3IgdGhlIHNpemUgb2YgYSBtZXNzYWdlIGlzIHNsaWdodGx5IGJlbG93IHRoaXMsIHNpbmNlIHNvbWW4IG92ZXJoZWFkIGlzIGluY3VycmVkIGZvciBlbmNvZGluZyB0aGUgZm9ybWF0LgABpQsAAAAeAAAsUG9sa2Fkb3RYY20BLFBvbGthZG90WGNtPDBRdWVyeUNvdW50ZXIBACggAAAAAAAAAAAEiCBUaGUgbGF0ZXN0IGF2YWlsYWJsZSBxdWVyeSBpbmRleC4AHFF1ZXJpZXMAAQQCKKkLBAAEVCBUaGUgb25nb2luZyBxdWVyaWVzLgAoQXNzZXRUcmFwcwEBBAZAOBAAAAAAEGggVGhlIGV4aXN0aW5nIGFzc2V0IHRyYXBzLgBhASBLZXkgaXMgdGhlIGJsYWtlMiAyNTYgaGFzaCBvZiAob3JpZ2luLCB2ZXJzaW9uZWQgYEFzc2V0c2ApIHBhaXIuIFZhbHVlIGlzIHRoZSBudW1iZXIgb2YdASB0aW1lcyB0aGlzIHBhaXIgaGFzIGJlZW4gdHJhcHBlZCAodXN1YWxseSBqdXN0IDEgaWYgaXQgZXhpc3RzIGF0IGFsbCkuADhTYWZlWGNtVmVyc2lvbgAAOAQACGEBIERlZmF1bHQgdmVyc2lvbiB0byBlbmNvZGUgWENNIHdoZW4gbGF0ZXN0IHZlcnNpb24gb2YgZGVzdGluYXRpb24gaXMgdW5rbm93bi4gSWYgYE5vbmVgLD0BIHRoZW4gdGhlIGRlc3RpbmF0aW9ucyB3aG9zZSBYQ00gdmVyc2lvbiBpcyB1bmtub3duIGFyZSBjb25zaWRlcmVkIHVucmVhY2hhYmxlLgBAU3VwcG9ydGVkVmVyc2lvbgABCAUCvQs4BAAE8CBUaGUgTGF0ZXN0IHZlcnNpb25zIHRoYXQgd2Uga25vdyB2YXJpb3VzIGxvY2F0aW9ucyBzdXBwb3J0LgBAVmVyc2lvbk5vdGlmaWVycwABCAUCvQsoBAAEBQEgQWxsIGxvY2F0aW9ucyB0aGF0IHdlIGhhdmUgcmVxdWVzdGVkIHZlcnNpb24gbm90aWZpY2F0aW9ucyBmcm9tLgBQVmVyc2lvbk5vdGlmeVRhcmdldHMAAQgFAr0LwQsEAAhxASBUaGUgdGFyZ2V0IGxvY2F0aW9ucyB0aGF0IGFyZSBzdWJzY3JpYmVkIHRvIG91ciB2ZXJzaW9uIGNoYW5nZXMsIGFzIHdlbGwgYXMgdGhlIG1vc3QgcmVjZW50lCBvZiBvdXIgdmVyc2lvbnMgd2UgaW5mb3JtZWQgdGhlbSBvZi4AVFZlcnNpb25EaXNjb3ZlcnlRdWV1ZQEAxQsEAAxlASBEZXN0aW5hdGlvbnMgd2hvc2UgbGF0ZXN0IFhDTSB2ZXJzaW9uIHdlIHdvdWxkIGxpa2UgdG8ga25vdy4gRHVwbGljYXRlcyBub3QgYWxsb3dlZCwgYW5kcQEgdGhlIGB1MzJgIGNvdW50ZXIgaXMgdGhlIG51bWJlciBvZiB0aW1lcyB0aGF0IGEgc2VuZCB0byB0aGUgZGVzdGluYXRpb24gaGFzIGJlZW4gYXR0ZW1wdGVkLIwgd2hpY2ggaXMgdXNlZCBhcyBhIHByaW9yaXRpemF0aW9uLgBAQ3VycmVudE1pZ3JhdGlvbgAA0QsEAAScIFRoZSBjdXJyZW50IG1pZ3JhdGlvbidzIHN0YWdlLCBpZiBhbnkuAFRSZW1vdGVMb2NrZWRGdW5naWJsZXMAAQwFAgLVC9kLBAAE8CBGdW5naWJsZSBhc3NldHMgd2hpY2ggd2Uga25vdyBhcmUgbG9ja2VkIG9uIGEgcmVtb3RlIGNoYWluLgA8TG9ja2VkRnVuZ2libGVzAAEEAgTpCwQABOAgRnVuZ2libGUgYXNzZXRzIHdoaWNoIHdlIGtub3cgYXJlIGxvY2tlZCBvbiB0aGlzIGNoYWluLgBUWGNtRXhlY3V0aW9uU3VzcGVuZGVkAQCZAQQABLQgR2xvYmFsIHN1c3BlbnNpb24gc3RhdGUgb2YgdGhlIFhDTSBleGVjdXRvci4APFNob3VsZFJlY29yZFhjbQEAmQEEABxZASBXaGV0aGVyIG9yIG5vdCBpbmNvbWluZyBYQ01zIChib3RoIGV4ZWN1dGVkIGxvY2FsbHkgYW5kIHJlY2VpdmVkKSBzaG91bGQgYmUgcmVjb3JkZWQuxCBPbmx5IG9uZSBYQ00gcHJvZ3JhbSB3aWxsIGJlIHJlY29yZGVkIGF0IGEgdGltZS4pASBUaGlzIGlzIG1lYW50IHRvIGJlIHVzZWQgaW4gcnVudGltZSBBUElzLCBhbmQgaXQncyBhZHZpc2VkIGl0IHN0YXlzIGZhbHNlDQEgZm9yIGFsbCBvdGhlciB1c2UgY2FzZXMsIHNvIGFzIHRvIG5vdCBkZWdyYWRlIHJlZ3VsYXIgcGVyZm9ybWFuY2UuAFkBIE9ubHkgcmVsZXZhbnQgaWYgdGhpcyBwYWxsZXQgaXMgYmVpbmcgdXNlZCBhcyB0aGUgW2B4Y21fZXhlY3V0b3I6OnRyYWl0czo6UmVjb3JkWGNtYF3IIGltcGxlbWVudGF0aW9uIGluIHRoZSBYQ00gZXhlY3V0b3IgY29uZmlndXJhdGlvbi4ALFJlY29yZGVkWGNtAAAxAwQAGEkBIElmIFtgU2hvdWxkUmVjb3JkWGNtYF0gaXMgc2V0IHRvIHRydWUsIHRoZW4gdGhlIGxhc3QgWENNIHByb2dyYW0gZXhlY3V0ZWQgbG9jYWxseVQgd2lsbCBiZSBzdG9yZWQgaGVyZS4pASBSdW50aW1lIEFQSXMgY2FuIGZldGNoIHRoZSBYQ00gdGhhdCB3YXMgZXhlY3V0ZWQgYnkgYWNjZXNzaW5nIHRoaXMgdmFsdWUuAFkBIE9ubHkgcmVsZXZhbnQgaWYgdGhpcyBwYWxsZXQgaXMgYmVpbmcgdXNlZCBhcyB0aGUgW2B4Y21fZXhlY3V0b3I6OnRyYWl0czo6UmVjb3JkWGNtYF3IIGltcGxlbWVudGF0aW9uIGluIHRoZSBYQ00gZXhlY3V0b3IgY29uZmlndXJhdGlvbi4AREF1dGhvcml6ZWRBbGlhc2VzAAEEAuUB9QsEAAxlASBNYXAgb2YgYXV0aG9yaXplZCBhbGlhc2VycyBvZiBsb2NhbCBvcmlnaW5zLiBFYWNoIGxvY2FsIGxvY2F0aW9uIGNhbiBhdXRob3JpemUgYSBsaXN0IG9mWQEgb3RoZXIgbG9jYXRpb25zIHRvIGFsaWFzIGludG8gaXQuIEVhY2ggYWxpYXNlciBpcyBvbmx5IHZhbGlkIHVudGlsIGl0cyBpbm5lciBgZXhwaXJ5YDggYmxvY2sgbnVtYmVyLgAB4QEIAQK5AVRoaXMgZXh0cmluc2ljIHVzZXMgYFdlaWdodExpbWl0OjpVbmxpbWl0ZWRgLCBwbGVhc2UgbWlncmF0ZSB0byBgbGltaXRlZF90ZWxlcG9ydF9hc3NldHNgIG9yIGB0cmFuc2Zlcl9hc3NldHNgAAIC2QFUaGlzIGV4dHJpbnNpYyB1c2VzIGBXZWlnaHRMaW1pdDo6VW5saW1pdGVkYCwgcGxlYXNlIG1pZ3JhdGUgdG8gYGxpbWl0ZWRfcmVzZXJ2ZV90cmFuc2Zlcl9hc3NldHNgIG9yIGB0cmFuc2Zlcl9hc3NldHNgAAHBCAAQRFVuaXZlcnNhbExvY2F0aW9uPQIYAgkDAKEPBIQgVGhpcyBjaGFpbidzIFVuaXZlcnNhbCBMb2NhdGlvbi4AUEFkdmVydGlzZWRYY21WZXJzaW9uOBAFAAAACCUBIFRoZSBsYXRlc3Qgc3VwcG9ydGVkIHZlcnNpb24gdGhhdCB3ZSBhZHZlcnRpc2UuIEdlbmVyYWxseSBqdXN0IHNldCBpdCB0b4QgYHBhbGxldF94Y206OkN1cnJlbnRYY21WZXJzaW9uYC4AKE1heExvY2tlcnM4EAgAAAAEGQEgVGhlIG1heGltdW0gbnVtYmVyIG9mIGxvY2FsIFhDTSBsb2NrcyB0aGF0IGEgc2luZ2xlIGFjY291bnQgbWF5IGhhdmUuAFhNYXhSZW1vdGVMb2NrQ29uc3VtZXJzOBAAAAAABPwgVGhlIG1heGltdW0gbnVtYmVyIG9mIGNvbnN1bWVycyBhIHNpbmdsZSByZW1vdGUgbG9jayBtYXkgaGF2ZS4AAQ0MBBgCvFVzZSBgTG9jYWxFeGVjdXRpb25JbmNvbXBsZXRlV2l0aEVycm9yYCBpbnN0ZWFkARgyMC4wLjAILFJ1bnRpbWVDYWxsIARkIFRoZSBydW50aW1lIGBDYWxsYCB0eXBlLnBSZW1vdGVMb2NrQ29uc3VtZXJJZGVudGlmaWVyEATEIFRoZSBJRCB0eXBlIGZvciBsb2NhbCBjb25zdW1lcnMgb2YgcmVtb3RlIGxvY2tzLgAfAAAoQ3VtdWx1c1hjbQAB4QMAAdEIAAAAAAAgAABMVG9Qb2xrYWRvdFhjbVJvdXRlcgFMVG9Qb2xrYWRvdFhjbVJvdXRlcgQYQnJpZGdlAQAVDEQAAGSns7bgDQAAAAAAAAAAABxoIEJyaWRnZSB0aGF0IHdlIGFyZSB1c2luZy4AcQEgKipicmlkZ2VzLXYxKiogYXNzdW1wdGlvbnM6IGFsbCBvdXRib3VuZCBtZXNzYWdlcyB0aHJvdWdoIHRoaXMgcm91dGVyIGFyZSB1c2luZyBzaW5nbGUgbGFuZW0BIGFuZCB0byBzaW5nbGUgcmVtb3RlIGNvbnNlbnN1cy4gSWYgdGhlcmUgaXMgc29tZSBvdGhlciByZW1vdGUgY29uc2Vuc3VzIHRoYXQgdXNlcyB0aGUgc2FtZWEBIGJyaWRnZSBodWIsIHRoZSBzZXBhcmF0ZSBwYWxsZXQgaW5zdGFuY2Ugc2hhbGwgYmUgdXNlZCwgSW4gYHYyYCB3ZSdsbCBoYXZlIGFsbCByZXF1aXJlZHEBIHByaW1pdGl2ZXMgKGxhbmUtaWQgYWthIGJyaWRnZS1pZCwgZGVyaXZlZCBmcm9tIFhDTSBsb2NhdGlvbnMpIHRvIHN1cHBvcnQgbXVsdGlwbGUgIGJyaWRnZXN0IGJ5IHRoZSBzYW1lIHBhbGxldCBpbnN0YW5jZS4AAeUDAAHVCAAAAAAAIgAAME1lc3NhZ2VRdWV1ZQEwTWVzc2FnZVF1ZXVlDDBCb29rU3RhdGVGb3IBAQQF7QMZDHQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATMIFRoZSBpbmRleCBvZiB0aGUgZmlyc3QgYW5kIGxhc3QgKG5vbi1lbXB0eSkgcGFnZXMuACxTZXJ2aWNlSGVhZAAA7QMEAAS8IFRoZSBvcmlnaW4gYXQgd2hpY2ggd2Ugc2hvdWxkIGJlZ2luIHNlcnZpY2luZy4AFFBhZ2VzAAEIBQUlDCkMBAAEiCBUaGUgbWFwIG9mIHBhZ2UgaW5kaWNlcyB0byBwYWdlcy4AAekDAAHZCAAQIEhlYXBTaXplOBAAAAEAFD0BIFRoZSBzaXplIG9mIHRoZSBwYWdlOyB0aGlzIGltcGxpZXMgdGhlIG1heGltdW0gbWVzc2FnZSBzaXplIHdoaWNoIGNhbiBiZSBzZW50LgBZASBBIGdvb2QgdmFsdWUgZGVwZW5kcyBvbiB0aGUgZXhwZWN0ZWQgbWVzc2FnZSBzaXplcywgdGhlaXIgd2VpZ2h0cywgdGhlIHdlaWdodCB0aGF0IGlzXQEgYXZhaWxhYmxlIGZvciBwcm9jZXNzaW5nIHRoZW0gYW5kIHRoZSBtYXhpbWFsIG5lZWRlZCBtZXNzYWdlIHNpemUuIFRoZSBtYXhpbWFsIG1lc3NhZ2URASBzaXplIGlzIHNsaWdodGx5IGxvd2VyIHRoYW4gdGhpcyBhcyBkZWZpbmVkIGJ5IFtgTWF4TWVzc2FnZUxlbk9mYF0uACBNYXhTdGFsZTgQCAAAAAxdASBUaGUgbWF4aW11bSBudW1iZXIgb2Ygc3RhbGUgcGFnZXMgKGkuZS4gb2Ygb3ZlcndlaWdodCBtZXNzYWdlcykgYWxsb3dlZCBiZWZvcmUgY3VsbGluZ1EBIGNhbiBoYXBwZW4uIE9uY2UgdGhlcmUgYXJlIG1vcmUgc3RhbGUgcGFnZXMgdGhhbiB0aGlzLCB0aGVuIGhpc3RvcmljYWwgcGFnZXMgbWF5IGJl/CBkcm9wcGVkLCBldmVuIGlmIHRoZXkgY29udGFpbiB1bnByb2Nlc3NlZCBvdmVyd2VpZ2h0IG1lc3NhZ2VzLgA0U2VydmljZVdlaWdodHUBLAEHABCl1OgCAEABGEEBIFRoZSBhbW91bnQgb2Ygd2VpZ2h0IChpZiBhbnkpIHdoaWNoIHNob3VsZCBiZSBwcm92aWRlZCB0byB0aGUgbWVzc2FnZSBxdWV1ZSBmb3KoIHNlcnZpY2luZyBlbnF1ZXVlZCBpdGVtcyBgb25faW5pdGlhbGl6ZWAuAPwgVGhpcyBtYXkgYmUgbGVnaXRpbWF0ZWx5IGBOb25lYCBpbiB0aGUgY2FzZSB0aGF0IHlvdSB3aWxsIGNhbGxdASBgU2VydmljZVF1ZXVlczo6c2VydmljZV9xdWV1ZXNgIG1hbnVhbGx5IG9yIHNldCBbYFNlbGY6OklkbGVNYXhTZXJ2aWNlV2VpZ2h0YF0gdG8gaGF2ZVQgaXQgcnVuIGluIGBvbl9pZGxlYC4AUElkbGVNYXhTZXJ2aWNlV2VpZ2h0dQEsAQcAEKXU6AIAQAEUXQEgVGhlIG1heGltdW0gYW1vdW50IG9mIHdlaWdodCAoaWYgYW55KSB0byBiZSB1c2VkIGZyb20gcmVtYWluaW5nIHdlaWdodCBgb25faWRsZWAgd2hpY2hBASBzaG91bGQgYmUgcHJvdmlkZWQgdG8gdGhlIG1lc3NhZ2UgcXVldWUgZm9yIHNlcnZpY2luZyBlbnF1ZXVlZCBpdGVtcyBgb25faWRsZWAuPQEgVXNlZnVsIGZvciBwYXJhY2hhaW5zIHRvIHByb2Nlc3MgbWVzc2FnZXMgYXQgdGhlIHNhbWUgYmxvY2sgdGhleSBhcmUgcmVjZWl2ZWQuACkBIElmIGBOb25lYCwgaXQgd2lsbCBub3QgY2FsbCBgU2VydmljZVF1ZXVlczo6c2VydmljZV9xdWV1ZXNgIGluIGBvbl9pZGxlYC4AATEMAAQQU2l6ZTgEVCBQYWdlL2hlYXAgc2l6ZSB0eXBlLgAjAAAcVXRpbGl0eQAB8QMAAeEIAARMYmF0Y2hlZF9jYWxsc19saW1pdDgQqioAAASoIFRoZSBsaW1pdCBvbiB0aGUgbnVtYmVyIG9mIGJhdGNoZWQgY2FsbHMuAAE1DAAILFJ1bnRpbWVDYWxsIARsIFRoZSBvdmVyYXJjaGluZyBjYWxsIHR5cGUuNFBhbGxldHNPcmlnaW79AwTwIFRoZSBjYWxsZXIgb3JpZ2luLCBvdmVyYXJjaGluZyB0eXBlIG9mIGFsbCBwYWxsZXRzIG9yaWdpbnMuACgAACBNdWx0aXNpZwEgTXVsdGlzaWcEJE11bHRpc2lncwABCAUCOQw9DAQABJQgVGhlIHNldCBvZiBvcGVuIG11bHRpc2lnIG9wZXJhdGlvbnMuAAEZBAAB5QgADCxEZXBvc2l0QmFzZZUBQNzZHI8BAAAAAAAAAAAAAAAYWQEgVGhlIGJhc2UgYW1vdW50IG9mIGN1cnJlbmN5IG5lZWRlZCB0byByZXNlcnZlIGZvciBjcmVhdGluZyBhIG11bHRpc2lnIGV4ZWN1dGlvbiBvciB0b4Qgc3RvcmUgYSBkaXNwYXRjaCBjYWxsIGZvciBsYXRlci4AAQEgVGhpcyBpcyBoZWxkIGZvciBhbiBhZGRpdGlvbmFsIHN0b3JhZ2UgaXRlbSB3aG9zZSB2YWx1ZSBzaXplIGlzMQEgYDQgKyBzaXplb2YoKEJsb2NrTnVtYmVyLCBCYWxhbmNlLCBBY2NvdW50SWQpKWAgYnl0ZXMgYW5kIHdob3NlIGtleSBzaXplIGlzgCBgMzIgKyBzaXplb2YoQWNjb3VudElkKWAgYnl0ZXMuADREZXBvc2l0RmFjdG9ylQFAoMKiAAAAAAAAAAAAAAAAAAxVASBUaGUgYW1vdW50IG9mIGN1cnJlbmN5IG5lZWRlZCBwZXIgdW5pdCB0aHJlc2hvbGQgd2hlbiBjcmVhdGluZyBhIG11bHRpc2lnIGV4ZWN1dGlvbi4AJQEgVGhpcyBpcyBoZWxkIGZvciBhZGRpbmcgMzIgYnl0ZXMgbW9yZSBpbnRvIGEgcHJlLWV4aXN0aW5nIHN0b3JhZ2UgdmFsdWUuADhNYXhTaWduYXRvcmllczgQZAAAAATsIFRoZSBtYXhpbXVtIGFtb3VudCBvZiBzaWduYXRvcmllcyBhbGxvd2VkIGluIHRoZSBtdWx0aXNpZy4AAUUMAAQsUnVudGltZUNhbGwgBGwgVGhlIG92ZXJhcmNoaW5nIGNhbGwgdHlwZS4AKQAAFFByb3h5ARRQcm94eQgcUHJveGllcwEBBAUESQxEAAAAAAAAAAAAAAAAAAAAAAAIRQEgVGhlIHNldCBvZiBhY2NvdW50IHByb3hpZXMuIE1hcHMgdGhlIGFjY291bnQgd2hpY2ggaGFzIGRlbGVnYXRlZCB0byB0aGUgYWNjb3VudHMhASB3aGljaCBhcmUgYmVpbmcgZGVsZWdhdGVkIHRvLCB0b2dldGhlciB3aXRoIHRoZSBhbW91bnQgaGVsZCBvbiBkZXBvc2l0LgA0QW5ub3VuY2VtZW50cwEBBAUEWQxEAAAAAAAAAAAAAAAAAAAAAAAErCBUaGUgYW5ub3VuY2VtZW50cyBtYWRlIGJ5IHRoZSBwcm94eSAoa2V5KS4AASUEAAHpCAAYQFByb3h5RGVwb3NpdEJhc2WVAUDstSiOAQAAAAAAAAAAAAAAEBEBIFRoZSBiYXNlIGFtb3VudCBvZiBjdXJyZW5jeSBuZWVkZWQgdG8gcmVzZXJ2ZSBmb3IgY3JlYXRpbmcgYSBwcm94eS4AAQEgVGhpcyBpcyBoZWxkIGZvciBhbiBhZGRpdGlvbmFsIHN0b3JhZ2UgaXRlbSB3aG9zZSB2YWx1ZSBzaXplIGlzJQEgYHNpemVvZihCYWxhbmNlKWAgYnl0ZXMgYW5kIHdob3NlIGtleSBzaXplIGlzIGBzaXplb2YoQWNjb3VudElkKWAgYnl0ZXMuAEhQcm94eURlcG9zaXRGYWN0b3KVAUC12KcAAAAAAAAAAAAAAAAAFLwgVGhlIGFtb3VudCBvZiBjdXJyZW5jeSBuZWVkZWQgcGVyIHByb3h5IGFkZGVkLgA1ASBUaGlzIGlzIGhlbGQgZm9yIGFkZGluZyAzMiBieXRlcyBwbHVzIGFuIGluc3RhbmNlIG9mIGBQcm94eVR5cGVgIG1vcmUgaW50byBhYQEgcHJlLWV4aXN0aW5nIHN0b3JhZ2UgdmFsdWUuIFRodXMsIHdoZW4gY29uZmlndXJpbmcgYFByb3h5RGVwb3NpdEZhY3RvcmAgb25lIHNob3VsZCB0YWtl9CBpbnRvIGFjY291bnQgYDMyICsgcHJveHlfdHlwZS5lbmNvZGUoKS5sZW4oKWAgYnl0ZXMgb2YgZGF0YS4AKE1heFByb3hpZXM4ECAAAAAE8CBUaGUgbWF4aW11bSBhbW91bnQgb2YgcHJveGllcyBhbGxvd2VkIGZvciBhIHNpbmdsZSBhY2NvdW50LgAoTWF4UGVuZGluZzgQIAAAAARFASBUaGUgbWF4aW11bSBhbW91bnQgb2YgdGltZS1kZWxheWVkIGFubm91bmNlbWVudHMgdGhhdCBhcmUgYWxsb3dlZCB0byBiZSBwZW5kaW5nLgBcQW5ub3VuY2VtZW50RGVwb3NpdEJhc2WVAUCUZlGOAQAAAAAAAAAAAAAAEDEBIFRoZSBiYXNlIGFtb3VudCBvZiBjdXJyZW5jeSBuZWVkZWQgdG8gcmVzZXJ2ZSBmb3IgY3JlYXRpbmcgYW4gYW5ub3VuY2VtZW50LgBJASBUaGlzIGlzIGhlbGQgd2hlbiBhIG5ldyBzdG9yYWdlIGl0ZW0gaG9sZGluZyBhIGBCYWxhbmNlYCBpcyBjcmVhdGVkICh0eXBpY2FsbHkgMTYgIGJ5dGVzKS4AZEFubm91bmNlbWVudERlcG9zaXRGYWN0b3KVAUBqsU8BAAAAAAAAAAAAAAAAENQgVGhlIGFtb3VudCBvZiBjdXJyZW5jeSBuZWVkZWQgcGVyIGFubm91bmNlbWVudCBtYWRlLgBZASBUaGlzIGlzIGhlbGQgZm9yIGFkZGluZyBhbiBgQWNjb3VudElkYCwgYEhhc2hgIGFuZCBgQmxvY2tOdW1iZXJgICh0eXBpY2FsbHkgNjggYnl0ZXMpjCBpbnRvIGEgcHJlLWV4aXN0aW5nIHN0b3JhZ2UgdmFsdWUuAAFpDAAILFJ1bnRpbWVDYWxsIARsIFRoZSBvdmVyYXJjaGluZyBjYWxsIHR5cGUuJFByb3h5VHlwZS0EEFUBIEEga2luZCBvZiBwcm94eTsgc3BlY2lmaWVkIHdpdGggdGhlIHByb3h5IGFuZCBwYXNzZWQgaW4gdG8gdGhlIGBJc1Byb3h5YWJsZWAgZmlsdGVyLlEBIFRoZSBpbnN0YW5jZSBmaWx0ZXIgZGV0ZXJtaW5lcyB3aGV0aGVyIGEgZ2l2ZW4gY2FsbCBtYXkgYmUgcHJveGllZCB1bmRlciB0aGlzIHR5cGUuAE0BIElNUE9SVEFOVDogYERlZmF1bHRgIG11c3QgYmUgcHJvdmlkZWQgYW5kIE1VU1QgQkUgdGhlIHRoZSAqbW9zdCBwZXJtaXNzaXZlKiB2YWx1ZS4IGAnXg0Zyeg71jA+gO6+jI8vFFIjZKhqnE3sDv7UO/BdEY2hlY2tfcGVybWlzc2lvbnMIEGNhbGwgKHByb3h5X3R5cGUtBJkBBPQgQ2hlY2sgaWYgYSBgUnVudGltZUNhbGxgIGlzIGFsbG93ZWQgZm9yIGEgZ2l2ZW4gYFByb3h5VHlwZWAuABgJ14NGcnoO9YwPoDuvoyMXFLBgfWKvCjs7CtLF1VxYLGlzX3N1cGVyc2V0CCB0b19jaGVjay0EHGFnYWluc3QtBJkBBPQgQ2hlY2sgaWYgb25lIGBQcm94eVR5cGVgIGlzIGEgc3Vic2V0IG9mIGFub3RoZXIgYFByb3h5VHlwZWAuACoAAFRSZW1vdGVQcm94eVJlbGF5Q2hhaW4BVFJlbW90ZVByb3h5UmVsYXlDaGFpbgQsQmxvY2tUb1Jvb3QBAG0MBAAIYQEgU3RvcmVzIHRoZSBsYXN0IFtgQ29uZmlnOjpNYXhTdG9yYWdlUm9vdHNUb0tlZXBgXSBibG9jayB0byBzdG9yYWdlIHJvb3QgbWFwcGluZ3Mgb2YgdGhlOCB0YXJnZXQgY2hhaW4uAAExBAAAAAF5DAAAACsAABxJbmRpY2VzARxJbmRpY2VzBCBBY2NvdW50cwABBAI4fQwEAASIIFRoZSBsb29rdXAgZnJvbSBpbmRleCB0byBhY2NvdW50LgABOQQAAfEIAAQcRGVwb3NpdJUBQJRmUY4BAAAAAAAAAAAAAAAErCBUaGUgZGVwb3NpdCBuZWVkZWQgZm9yIHJlc2VydmluZyBhbiBpbmRleC4AAYEMAAQwQWNjb3VudEluZGV4OAhVASBUeXBlIHVzZWQgZm9yIHN0b3JpbmcgYW4gYWNjb3VudCdzIGluZGV4OyBpbXBsaWVzIHRoZSBtYXhpbXVtIG51bWJlciBvZiBhY2NvdW50cyB0aGVEIHN5c3RlbSBjYW4gaG9sZC4ALAAAGEFzc2V0cwEYQXNzZXRzGBRBc3NldAABBAI4hQwEAARUIERldGFpbHMgb2YgYW4gYXNzZXQuABxBY2NvdW50AAEIAgKNDJEMBAAE5CBUaGUgaG9sZGluZ3Mgb2YgYSBzcGVjaWZpYyBhY2NvdW50IGZvciBhIHNwZWNpZmljIGFzc2V0LgAkQXBwcm92YWxzAAEMAgICnQyhDAQADFkBIEFwcHJvdmVkIGJhbGFuY2UgdHJhbnNmZXJzLiBGaXJzdCBiYWxhbmNlIGlzIHRoZSBhbW91bnQgYXBwcm92ZWQgZm9yIHRyYW5zZmVyLiBTZWNvbmToIGlzIHRoZSBhbW91bnQgb2YgYFQ6OkN1cnJlbmN5YCByZXNlcnZlZCBmb3Igc3RvcmluZyB0aGlzLkkBIEZpcnN0IGtleSBpcyB0aGUgYXNzZXQgSUQsIHNlY29uZCBrZXkgaXMgdGhlIG93bmVyIGFuZCB0aGlyZCBrZXkgaXMgdGhlIGRlbGVnYXRlLgAgTWV0YWRhdGEBAQQCOKUMUAAAAAAAAAAAAAAAAAAAAAAAAAAABFggTWV0YWRhdGEgb2YgYW4gYXNzZXQuACBSZXNlcnZlcwEBBAI4QQQEAAT8IE1hcHMgYW4gYXNzZXQgdG8gYSBsaXN0IG9mIGl0cyBjb25maWd1cmVkIHJlc2VydmUgaW5mb3JtYXRpb24uACxOZXh0QXNzZXRJZAAAOAQAJG0BIFRoZSBhc3NldCBJRCBlbmZvcmNlZCBmb3IgdGhlIG5leHQgYXNzZXQgY3JlYXRpb24sIGlmIGFueSBwcmVzZW50LiBPdGhlcndpc2UsIHRoaXMgc3RvcmFnZVAgaXRlbSBoYXMgbm8gZWZmZWN0LgBlASBUaGlzIGNhbiBiZSB1c2VmdWwgZm9yIHNldHRpbmcgdXAgY29uc3RyYWludHMgZm9yIElEcyBvZiB0aGUgbmV3IGFzc2V0cy4gRm9yIGV4YW1wbGUsIGJ5aQEgcHJvdmlkaW5nIGFuIGluaXRpYWwgW2BOZXh0QXNzZXRJZGBdIGFuZCB1c2luZyB0aGUgW2BjcmF0ZTo6QXV0b0luY0Fzc2V0SWRgXSBjYWxsYmFjaywgYW7oIGF1dG8taW5jcmVtZW50IG1vZGVsIGNhbiBiZSBhcHBsaWVkIHRvIGFsbCBuZXcgYXNzZXQgSURzLgAhASBUaGUgaW5pdGlhbCBuZXh0IGFzc2V0IElEIGNhbiBiZSBzZXQgdXNpbmcgdGhlIFtgR2VuZXNpc0NvbmZpZ2BdIG9yIHRoZSEBIFtTZXROZXh0QXNzZXRJZF0oYG1pZ3JhdGlvbjo6bmV4dF9hc3NldF9pZDo6U2V0TmV4dEFzc2V0SWRgKSBtaWdyYXRpb24uAAE9BAAB9QgAHEBSZW1vdmVJdGVtc0xpbWl0OBDoAwAADFEBIE1heCBudW1iZXIgb2YgaXRlbXMgdG8gZGVzdHJveSBwZXIgYGRlc3Ryb3lfYWNjb3VudHNgIGFuZCBgZGVzdHJveV9hcHByb3ZhbHNgIGNhbGwuADkBIE11c3QgYmUgY29uZmlndXJlZCB0byByZXN1bHQgaW4gYSB3ZWlnaHQgdGhhdCBtYWtlcyBlYWNoIGNhbGwgZml0IGluIGEgYmxvY2suADBBc3NldERlcG9zaXSVAUA6piORAQAAAAAAAAAAAAAABPggVGhlIGJhc2ljIGFtb3VudCBvZiBmdW5kcyB0aGF0IG11c3QgYmUgcmVzZXJ2ZWQgZm9yIGFuIGFzc2V0LgBMQXNzZXRBY2NvdW50RGVwb3NpdJUBQPSjro0BAAAAAAAAAAAAAAAIRQEgVGhlIGFtb3VudCBvZiBmdW5kcyB0aGF0IG11c3QgYmUgcmVzZXJ2ZWQgZm9yIGEgbm9uLXByb3ZpZGVyIGFzc2V0IGFjY291bnQgdG8gYmUwIG1haW50YWluZWQuAExNZXRhZGF0YURlcG9zaXRCYXNllQFAOCC3jgEAAAAAAAAAAAAAAARRASBUaGUgYmFzaWMgYW1vdW50IG9mIGZ1bmRzIHRoYXQgbXVzdCBiZSByZXNlcnZlZCB3aGVuIGFkZGluZyBtZXRhZGF0YSB0byB5b3VyIGFzc2V0LgBYTWV0YWRhdGFEZXBvc2l0UGVyQnl0ZZUBQBUWBQAAAAAAAAAAAAAAAAAIVQEgVGhlIGFkZGl0aW9uYWwgZnVuZHMgdGhhdCBtdXN0IGJlIHJlc2VydmVkIGZvciB0aGUgbnVtYmVyIG9mIGJ5dGVzIHlvdSBzdG9yZSBpbiB5b3VyKCBtZXRhZGF0YS4APEFwcHJvdmFsRGVwb3NpdJUBQNXcMgAAAAAAAAAAAAAAAAAEIQEgVGhlIGFtb3VudCBvZiBmdW5kcyB0aGF0IG11c3QgYmUgcmVzZXJ2ZWQgd2hlbiBjcmVhdGluZyBhIG5ldyBhcHByb3ZhbC4ALFN0cmluZ0xpbWl0OBAyAAAABOAgVGhlIG1heGltdW0gbGVuZ3RoIG9mIGEgbmFtZSBvciBzeW1ib2wgc3RvcmVkIG9uLWNoYWluLgABrQwAFBxCYWxhbmNllQEEnCBUaGUgdW5pdHMgaW4gd2hpY2ggd2UgcmVjb3JkIGJhbGFuY2VzLhxBc3NldElkOASMIElkZW50aWZpZXIgZm9yIHRoZSBjbGFzcyBvZiBhc3NldC5AQXNzZXRJZFBhcmFtZXRlcmQcWQEgV3JhcHBlciBhcm91bmQgYFNlbGY6OkFzc2V0SWRgIHRvIHVzZSBpbiBkaXNwYXRjaGFibGUgY2FsbCBzaWduYXR1cmVzLiBBbGxvd3MgdGhlIHVzZVEBIG9mIGNvbXBhY3QgZW5jb2RpbmcgaW4gaW5zdGFuY2VzIG9mIHRoZSBwYWxsZXQsIHdoaWNoIHdpbGwgcHJldmVudCBicmVha2luZyBjaGFuZ2VzBQEgcmVzdWx0aW5nIGZyb20gdGhlIHJlbW92YWwgb2YgYEhhc0NvbXBhY3RgIGZyb20gYFNlbGY6OkFzc2V0SWRgLgBZASBUaGlzIHR5cGUgaW5jbHVkZXMgdGhlIGBGcm9tPFNlbGY6OkFzc2V0SWQ+YCBib3VuZCwgc2luY2UgdGlnaHRseSBjb3VwbGVkIHBhbGxldHMgbWF5RQEgd2FudCB0byBjb252ZXJ0IGFuIGBBc3NldElkYCBpbnRvIGEgcGFyYW1ldGVyIGZvciBjYWxsaW5nIGRpc3BhdGNoYWJsZSBmdW5jdGlvbnMoIGRpcmVjdGx5LixSZXNlcnZlRGF0YRAE6CBJbmZvcm1hdGlvbiBhYm91dCByZXNlcnZlIGxvY2F0aW9ucyBmb3IgYSBjbGFzcyBvZiBhc3NldC4URXh0cmEQBPggQWRkaXRpb25hbCBkYXRhIHRvIGJlIHN0b3JlZCB3aXRoIGFuIGFjY291bnQncyBhc3NldCBiYWxhbmNlLhBoKlnVGrnkioyMxBj/lwjSpwKXrQtL3T2kt0YpplpuXDRhc3NldF9kZXRhaWxzBAhpZDixDASoIFByb3ZpZGUgdGhlIGFzc2V0IGRldGFpbHMgZm9yIGFzc2V0IGBpZGAuAGgqWdUaueSKjIzEGP+XCNJTGsfiG3axIedh5HNBmhsCKGJhbGFuY2Vfb2YIDHdobwQIaWQ4YQQEtCBQcm92aWRlIHRoZSBiYWxhbmNlIG9mIGB3aG9gIGZvciBhc3NldCBgaWRgLgBoKlnVGrnkioyMxBj/lwjSLodmpA0badYVG9gB5XVQXjBnZXRfbWV0YWRhdGEECGlkOLUMBMAgUHJvdmlkZSB0aGUgY29uZmlndXJlZCBtZXRhZGF0YSBmb3IgYXNzZXQgYGlkYC4AaCpZ1Rq55IqMjMQY/5cI0mT2Pykj45goJDFjga4eaYZEZ2V0X3Jlc2VydmVzX2RhdGEECGlkOEUEBNQgUHJvdmlkZSB0aGUgY29uZmlndXJlZCByZXNlcnZlcyBkYXRhIGZvciBhc3NldCBgaWRgLgAyAAAcVW5pcXVlcwEcVW5pcXVlcygUQ2xhc3MAAQQCOLkMBAAEZCBEZXRhaWxzIG9mIGEgY29sbGVjdGlvbi4ATE93bmVyc2hpcEFjY2VwdGFuY2UAAQQCBDgEAAQpASBUaGUgY29sbGVjdGlvbiwgaWYgYW55LCBvZiB3aGljaCBhbiBhY2NvdW50IGlzIHdpbGxpbmcgdG8gdGFrZSBvd25lcnNoaXAuABxBY2NvdW50AAEMAgICvQwQBAAIWQEgVGhlIGl0ZW1zIGhlbGQgYnkgYW55IGdpdmVuIGFjY291bnQ7IHNldCBvdXQgdGhpcyB3YXkgc28gdGhhdCBpdGVtcyBvd25lZCBieSBhIHNpbmdsZWwgYWNjb3VudCBjYW4gYmUgZW51bWVyYXRlZC4AMENsYXNzQWNjb3VudAABCAICbQUQBAAIaQEgVGhlIGNvbGxlY3Rpb25zIG93bmVkIGJ5IGFueSBnaXZlbiBhY2NvdW50OyBzZXQgb3V0IHRoaXMgd2F5IHNvIHRoYXQgY29sbGVjdGlvbnMgb3duZWQgYnmQIGEgc2luZ2xlIGFjY291bnQgY2FuIGJlIGVudW1lcmF0ZWQuABRBc3NldAABCAIC/MEMBAAE0CBUaGUgaXRlbXMgaW4gZXhpc3RlbmNlIGFuZCB0aGVpciBvd25lcnNoaXAgZGV0YWlscy4APENsYXNzTWV0YWRhdGFPZgABBAI4xQwEAARoIE1ldGFkYXRhIG9mIGEgY29sbGVjdGlvbi4ASEluc3RhbmNlTWV0YWRhdGFPZgABCAIC/MkMBAAEVCBNZXRhZGF0YSBvZiBhbiBpdGVtLgAkQXR0cmlidXRlAAEMAgICzQzRDAQABHAgQXR0cmlidXRlcyBvZiBhIGNvbGxlY3Rpb24uACxJdGVtUHJpY2VPZgABCAIC/NUMBAAEcCBQcmljZSBvZiBhbiBhc3NldCBpbnN0YW5jZS4ATENvbGxlY3Rpb25NYXhTdXBwbHkAAQQCODgEAATwIEtlZXBzIHRyYWNrIG9mIHRoZSBudW1iZXIgb2YgaXRlbXMgYSBjb2xsZWN0aW9uIG1pZ2h0IGhhdmUuAAFJBAAB+QgAIERDb2xsZWN0aW9uRGVwb3NpdJUBQADodkgXAAAAAAAAAAAAAAAEAQEgVGhlIGJhc2ljIGFtb3VudCBvZiBmdW5kcyB0aGF0IG11c3QgYmUgcmVzZXJ2ZWQgZm9yIGNvbGxlY3Rpb24uACxJdGVtRGVwb3NpdJUBQADKmjsAAAAAAAAAAAAAAAAE9CBUaGUgYmFzaWMgYW1vdW50IG9mIGZ1bmRzIHRoYXQgbXVzdCBiZSByZXNlcnZlZCBmb3IgYW4gaXRlbS4ATE1ldGFkYXRhRGVwb3NpdEJhc2WVAUA5Y+2PAQAAAAAAAAAAAAAABE0BIFRoZSBiYXNpYyBhbW91bnQgb2YgZnVuZHMgdGhhdCBtdXN0IGJlIHJlc2VydmVkIHdoZW4gYWRkaW5nIG1ldGFkYXRhIHRvIHlvdXIgaXRlbS4AUEF0dHJpYnV0ZURlcG9zaXRCYXNllQFApEJdjQEAAAAAAAAAAAAAAARVASBUaGUgYmFzaWMgYW1vdW50IG9mIGZ1bmRzIHRoYXQgbXVzdCBiZSByZXNlcnZlZCB3aGVuIGFkZGluZyBhbiBhdHRyaWJ1dGUgdG8gYW4gaXRlbS4AOERlcG9zaXRQZXJCeXRllQFAFRYFAAAAAAAAAAAAAAAAAAhZASBUaGUgYWRkaXRpb25hbCBmdW5kcyB0aGF0IG11c3QgYmUgcmVzZXJ2ZWQgZm9yIHRoZSBudW1iZXIgb2YgYnl0ZXMgc3RvcmUgaW4gbWV0YWRhdGEswCBlaXRoZXIgIm5vcm1hbCIgbWV0YWRhdGEgb3IgYXR0cmlidXRlIG1ldGFkYXRhLgAsU3RyaW5nTGltaXQ4EIAAAAAEsCBUaGUgbWF4aW11bSBsZW5ndGggb2YgZGF0YSBzdG9yZWQgb24tY2hhaW4uACBLZXlMaW1pdDgQIAAAAASgIFRoZSBtYXhpbXVtIGxlbmd0aCBvZiBhbiBhdHRyaWJ1dGUga2V5LgAoVmFsdWVMaW1pdDgQQAAAAASoIFRoZSBtYXhpbXVtIGxlbmd0aCBvZiBhbiBhdHRyaWJ1dGUgdmFsdWUuAAHZDAAIMENvbGxlY3Rpb25JZDgEnCBJZGVudGlmaWVyIGZvciB0aGUgY29sbGVjdGlvbiBvZiBpdGVtLhhJdGVtSWQ4BPQgVGhlIHR5cGUgdXNlZCB0byBpZGVudGlmeSBhIHVuaXF1ZSBpdGVtIHdpdGhpbiBhIGNvbGxlY3Rpb24uADMAABBOZnRzARBOZnRzPChDb2xsZWN0aW9uAAEEAjjdDAQABGQgRGV0YWlscyBvZiBhIGNvbGxlY3Rpb24uAExPd25lcnNoaXBBY2NlcHRhbmNlAAEEAgQ4BAAEKQEgVGhlIGNvbGxlY3Rpb24sIGlmIGFueSwgb2Ygd2hpY2ggYW4gYWNjb3VudCBpcyB3aWxsaW5nIHRvIHRha2Ugb3duZXJzaGlwLgAcQWNjb3VudAABDAICAr0MEAQACFkBIFRoZSBpdGVtcyBoZWxkIGJ5IGFueSBnaXZlbiBhY2NvdW50OyBzZXQgb3V0IHRoaXMgd2F5IHNvIHRoYXQgaXRlbXMgb3duZWQgYnkgYSBzaW5nbGVsIGFjY291bnQgY2FuIGJlIGVudW1lcmF0ZWQuAERDb2xsZWN0aW9uQWNjb3VudAABCAICbQUQBAAIaQEgVGhlIGNvbGxlY3Rpb25zIG93bmVkIGJ5IGFueSBnaXZlbiBhY2NvdW50OyBzZXQgb3V0IHRoaXMgd2F5IHNvIHRoYXQgY29sbGVjdGlvbnMgb3duZWQgYnmQIGEgc2luZ2xlIGFjY291bnQgY2FuIGJlIGVudW1lcmF0ZWQuAEBDb2xsZWN0aW9uUm9sZU9mAAEIAgKNDOEMBAAI0CBUaGUgaXRlbXMgaW4gZXhpc3RlbmNlIGFuZCB0aGVpciBvd25lcnNoaXAgZGV0YWlscy6gIFN0b3JlcyBjb2xsZWN0aW9uIHJvbGVzIGFzIHBlciBhY2NvdW50LgAQSXRlbQABCAIC/OkMBAAE0CBUaGUgaXRlbXMgaW4gZXhpc3RlbmNlIGFuZCB0aGVpciBvd25lcnNoaXAgZGV0YWlscy4AUENvbGxlY3Rpb25NZXRhZGF0YU9mAAEEAjgBDQQABGggTWV0YWRhdGEgb2YgYSBjb2xsZWN0aW9uLgA4SXRlbU1ldGFkYXRhT2YAAQgCAvwFDQQABFQgTWV0YWRhdGEgb2YgYW4gaXRlbS4AJEF0dHJpYnV0ZQABEAICAgINDRENBAAEcCBBdHRyaWJ1dGVzIG9mIGEgY29sbGVjdGlvbi4ALEl0ZW1QcmljZU9mAAEIAgL81QwEAARQIEEgcHJpY2Ugb2YgYW4gaXRlbS4AZEl0ZW1BdHRyaWJ1dGVzQXBwcm92YWxzT2YBAQgCAvwZDQQABGggSXRlbSBhdHRyaWJ1dGUgYXBwcm92YWxzLgBATmV4dENvbGxlY3Rpb25JZAAAOAQACDEBIFN0b3JlcyB0aGUgYENvbGxlY3Rpb25JZGAgdGhhdCBpcyBnb2luZyB0byBiZSB1c2VkIGZvciB0aGUgbmV4dCBjb2xsZWN0aW9uLvAgVGhpcyBnZXRzIGluY3JlbWVudGVkIHdoZW5ldmVyIGEgbmV3IGNvbGxlY3Rpb24gaXMgY3JlYXRlZC4ANFBlbmRpbmdTd2FwT2YAAQgCAvwhDQQABHwgSGFuZGxlcyBhbGwgdGhlIHBlbmRpbmcgc3dhcHMuAEhDb2xsZWN0aW9uQ29uZmlnT2YAAQQCOGkEBAAEYCBDb25maWcgb2YgYSBjb2xsZWN0aW9uLgAwSXRlbUNvbmZpZ09mAAEIAgL8kQQEAARMIENvbmZpZyBvZiBhbiBpdGVtLgABZQQAAf0IADhEQ29sbGVjdGlvbkRlcG9zaXSVAUBOefKPAQAAAAAAAAAAAAAABAEBIFRoZSBiYXNpYyBhbW91bnQgb2YgZnVuZHMgdGhhdCBtdXN0IGJlIHJlc2VydmVkIGZvciBjb2xsZWN0aW9uLgAsSXRlbURlcG9zaXSVAUAz/AMKAAAAAAAAAAAAAAAABPQgVGhlIGJhc2ljIGFtb3VudCBvZiBmdW5kcyB0aGF0IG11c3QgYmUgcmVzZXJ2ZWQgZm9yIGFuIGl0ZW0uAExNZXRhZGF0YURlcG9zaXRCYXNllQFAhSP+JwAAAAAAAAAAAAAAAARNASBUaGUgYmFzaWMgYW1vdW50IG9mIGZ1bmRzIHRoYXQgbXVzdCBiZSByZXNlcnZlZCB3aGVuIGFkZGluZyBtZXRhZGF0YSB0byB5b3VyIGl0ZW0uAFBBdHRyaWJ1dGVEZXBvc2l0QmFzZZUBQKqGvCcAAAAAAAAAAAAAAAAEVQEgVGhlIGJhc2ljIGFtb3VudCBvZiBmdW5kcyB0aGF0IG11c3QgYmUgcmVzZXJ2ZWQgd2hlbiBhZGRpbmcgYW4gYXR0cmlidXRlIHRvIGFuIGl0ZW0uADhEZXBvc2l0UGVyQnl0ZZUBQBUWBQAAAAAAAAAAAAAAAAAIWQEgVGhlIGFkZGl0aW9uYWwgZnVuZHMgdGhhdCBtdXN0IGJlIHJlc2VydmVkIGZvciB0aGUgbnVtYmVyIG9mIGJ5dGVzIHN0b3JlIGluIG1ldGFkYXRhLMAgZWl0aGVyICJub3JtYWwiIG1ldGFkYXRhIG9yIGF0dHJpYnV0ZSBtZXRhZGF0YS4ALFN0cmluZ0xpbWl0OBAAAQAABLAgVGhlIG1heGltdW0gbGVuZ3RoIG9mIGRhdGEgc3RvcmVkIG9uLWNoYWluLgAgS2V5TGltaXQ4EEAAAAAEoCBUaGUgbWF4aW11bSBsZW5ndGggb2YgYW4gYXR0cmlidXRlIGtleS4AKFZhbHVlTGltaXQ4EAABAAAEqCBUaGUgbWF4aW11bSBsZW5ndGggb2YgYW4gYXR0cmlidXRlIHZhbHVlLgA4QXBwcm92YWxzTGltaXQ4EBQAAAAEqCBUaGUgbWF4aW11bSBhcHByb3ZhbHMgYW4gaXRlbSBjb3VsZCBoYXZlLgBwSXRlbUF0dHJpYnV0ZXNBcHByb3ZhbHNMaW1pdDgQHgAAAATUIFRoZSBtYXhpbXVtIGF0dHJpYnV0ZXMgYXBwcm92YWxzIGFuIGl0ZW0gY291bGQgaGF2ZS4AHE1heFRpcHM4EAoAAAAEqCBUaGUgbWF4IG51bWJlciBvZiB0aXBzIGEgdXNlciBjb3VsZCBzZW5kLgBMTWF4RGVhZGxpbmVEdXJhdGlvbjgQABpPAASoIFRoZSBtYXggZHVyYXRpb24gaW4gYmxvY2tzIGZvciBkZWFkbGluZXMuAFBNYXhBdHRyaWJ1dGVzUGVyQ2FsbDgQCgAAAATgIFRoZSBtYXggbnVtYmVyIG9mIGF0dHJpYnV0ZXMgYSB1c2VyIGNvdWxkIHNldCBwZXIgY2FsbC4AIEZlYXR1cmVzJQ0gAAAAAAAAAAAEkCBEaXNhYmxlcyBzb21lIG9mIHBhbGxldCdzIGZlYXR1cmVzLgABLQ0ADDBDb2xsZWN0aW9uSWQ4JJwgSWRlbnRpZmllciBmb3IgdGhlIGNvbGxlY3Rpb24gb2YgaXRlbS4ASQEgU0FGRVRZOiBUaGUgZnVuY3Rpb25zIGluIHRoZSBgSW5jcmVtZW50YWJsZWAgdHJhaXQgYXJlIGZhbGxpYmxlLiBJZiB0aGUgZnVuY3Rpb25zQQEgb2YgdGhlIGltcGxlbWVudGF0aW9uIGJvdGggcmV0dXJuIGBOb25lYCwgdGhlIGF1dG9tYXRpYyBDb2xsZWN0aW9uSWQgZ2VuZXJhdGlvbikBIHNob3VsZCBub3QgYmUgdXNlZC4gU28gdGhlIGBjcmVhdGVgIGFuZCBgZm9yY2VfY3JlYXRlYCBleHRyaW5zaWNzIGFuZCB0aGVNASBgY3JlYXRlX2NvbGxlY3Rpb25gIGZ1bmN0aW9uIHdpbGwgcmV0dXJuIGFuIGBVbmtub3duQ29sbGVjdGlvbmAgRXJyb3IuIEluc3RlYWQgdXNlQQEgdGhlIGBjcmVhdGVfY29sbGVjdGlvbl93aXRoX2lkYCBmdW5jdGlvbi4gSG93ZXZlciwgaWYgdGhlIGBJbmNyZW1lbnRhYmxlYCB0cmFpdEkBIGltcGxlbWVudGF0aW9uIGhhcyBhbiBpbmNyZW1lbnRhbCBvcmRlciwgdGhlIGBjcmVhdGVfY29sbGVjdGlvbl93aXRoX2lkYCBmdW5jdGlvbvwgc2hvdWxkIG5vdCBiZSB1c2VkIGFzIGl0IGNhbiBjbGFpbSBhIHZhbHVlIGluIHRoZSBJRCBzZXF1ZW5jZS4YSXRlbUlkOAT0IFRoZSB0eXBlIHVzZWQgdG8gaWRlbnRpZnkgYSB1bmlxdWUgaXRlbSB3aXRoaW4gYSBjb2xsZWN0aW9uLkRPZmZjaGFpblNpZ25hdHVyZbkEDGggT2ZmLUNoYWluIHNpZ25hdHVyZSB0eXBlLgAJASBDYW4gdmVyaWZ5IHdoZXRoZXIgYW4gYFNlbGY6Ok9mZmNoYWluUHVibGljYCBjcmVhdGVkIGEgc2lnbmF0dXJlLgA0AAA0Rm9yZWlnbkFzc2V0cwE0Rm9yZWlnbkFzc2V0cxgUQXNzZXQAAQQCOQKFDAQABFQgRGV0YWlscyBvZiBhbiBhc3NldC4AHEFjY291bnQAAQgCAjENkQwEAATkIFRoZSBob2xkaW5ncyBvZiBhIHNwZWNpZmljIGFjY291bnQgZm9yIGEgc3BlY2lmaWMgYXNzZXQuACRBcHByb3ZhbHMAAQwCAgI1DaEMBAAMWQEgQXBwcm92ZWQgYmFsYW5jZSB0cmFuc2ZlcnMuIEZpcnN0IGJhbGFuY2UgaXMgdGhlIGFtb3VudCBhcHByb3ZlZCBmb3IgdHJhbnNmZXIuIFNlY29uZOggaXMgdGhlIGFtb3VudCBvZiBgVDo6Q3VycmVuY3lgIHJlc2VydmVkIGZvciBzdG9yaW5nIHRoaXMuSQEgRmlyc3Qga2V5IGlzIHRoZSBhc3NldCBJRCwgc2Vjb25kIGtleSBpcyB0aGUgb3duZXIgYW5kIHRoaXJkIGtleSBpcyB0aGUgZGVsZWdhdGUuACBNZXRhZGF0YQEBBAI5AjkNUAAAAAAAAAAAAAAAAAAAAAAAAAAABFggTWV0YWRhdGEgb2YgYW4gYXNzZXQuACBSZXNlcnZlcwEBBAI5AskEBAAE/CBNYXBzIGFuIGFzc2V0IHRvIGEgbGlzdCBvZiBpdHMgY29uZmlndXJlZCByZXNlcnZlIGluZm9ybWF0aW9uLgAsTmV4dEFzc2V0SWQAADkCBAAkbQEgVGhlIGFzc2V0IElEIGVuZm9yY2VkIGZvciB0aGUgbmV4dCBhc3NldCBjcmVhdGlvbiwgaWYgYW55IHByZXNlbnQuIE90aGVyd2lzZSwgdGhpcyBzdG9yYWdlUCBpdGVtIGhhcyBubyBlZmZlY3QuAGUBIFRoaXMgY2FuIGJlIHVzZWZ1bCBmb3Igc2V0dGluZyB1cCBjb25zdHJhaW50cyBmb3IgSURzIG9mIHRoZSBuZXcgYXNzZXRzLiBGb3IgZXhhbXBsZSwgYnlpASBwcm92aWRpbmcgYW4gaW5pdGlhbCBbYE5leHRBc3NldElkYF0gYW5kIHVzaW5nIHRoZSBbYGNyYXRlOjpBdXRvSW5jQXNzZXRJZGBdIGNhbGxiYWNrLCBhbuggYXV0by1pbmNyZW1lbnQgbW9kZWwgY2FuIGJlIGFwcGxpZWQgdG8gYWxsIG5ldyBhc3NldCBJRHMuACEBIFRoZSBpbml0aWFsIG5leHQgYXNzZXQgSUQgY2FuIGJlIHNldCB1c2luZyB0aGUgW2BHZW5lc2lzQ29uZmlnYF0gb3IgdGhlIQEgW1NldE5leHRBc3NldElkXShgbWlncmF0aW9uOjpuZXh0X2Fzc2V0X2lkOjpTZXROZXh0QXNzZXRJZGApIG1pZ3JhdGlvbi4AAcUEAAEFCQAcQFJlbW92ZUl0ZW1zTGltaXQ4EOgDAAAMUQEgTWF4IG51bWJlciBvZiBpdGVtcyB0byBkZXN0cm95IHBlciBgZGVzdHJveV9hY2NvdW50c2AgYW5kIGBkZXN0cm95X2FwcHJvdmFsc2AgY2FsbC4AOQEgTXVzdCBiZSBjb25maWd1cmVkIHRvIHJlc3VsdCBpbiBhIHdlaWdodCB0aGF0IG1ha2VzIGVhY2ggY2FsbCBmaXQgaW4gYSBibG9jay4AMEFzc2V0RGVwb3NpdJUBQDqmI5EBAAAAAAAAAAAAAAAE+CBUaGUgYmFzaWMgYW1vdW50IG9mIGZ1bmRzIHRoYXQgbXVzdCBiZSByZXNlcnZlZCBmb3IgYW4gYXNzZXQuAExBc3NldEFjY291bnREZXBvc2l0lQFA9KOujQEAAAAAAAAAAAAAAAhFASBUaGUgYW1vdW50IG9mIGZ1bmRzIHRoYXQgbXVzdCBiZSByZXNlcnZlZCBmb3IgYSBub24tcHJvdmlkZXIgYXNzZXQgYWNjb3VudCB0byBiZTAgbWFpbnRhaW5lZC4ATE1ldGFkYXRhRGVwb3NpdEJhc2WVAUA4ILeOAQAAAAAAAAAAAAAABFEBIFRoZSBiYXNpYyBhbW91bnQgb2YgZnVuZHMgdGhhdCBtdXN0IGJlIHJlc2VydmVkIHdoZW4gYWRkaW5nIG1ldGFkYXRhIHRvIHlvdXIgYXNzZXQuAFhNZXRhZGF0YURlcG9zaXRQZXJCeXRllQFAFRYFAAAAAAAAAAAAAAAAAAhVASBUaGUgYWRkaXRpb25hbCBmdW5kcyB0aGF0IG11c3QgYmUgcmVzZXJ2ZWQgZm9yIHRoZSBudW1iZXIgb2YgYnl0ZXMgeW91IHN0b3JlIGluIHlvdXIoIG1ldGFkYXRhLgA8QXBwcm92YWxEZXBvc2l0lQFA1dwyAAAAAAAAAAAAAAAAAAQhASBUaGUgYW1vdW50IG9mIGZ1bmRzIHRoYXQgbXVzdCBiZSByZXNlcnZlZCB3aGVuIGNyZWF0aW5nIGEgbmV3IGFwcHJvdmFsLgAsU3RyaW5nTGltaXQ4EDIAAAAE4CBUaGUgbWF4aW11bSBsZW5ndGggb2YgYSBuYW1lIG9yIHN5bWJvbCBzdG9yZWQgb24tY2hhaW4uAAFBDQAUHEJhbGFuY2WVAQScIFRoZSB1bml0cyBpbiB3aGljaCB3ZSByZWNvcmQgYmFsYW5jZXMuHEFzc2V0SWQ5AgSMIElkZW50aWZpZXIgZm9yIHRoZSBjbGFzcyBvZiBhc3NldC5AQXNzZXRJZFBhcmFtZXRlcjkCHFkBIFdyYXBwZXIgYXJvdW5kIGBTZWxmOjpBc3NldElkYCB0byB1c2UgaW4gZGlzcGF0Y2hhYmxlIGNhbGwgc2lnbmF0dXJlcy4gQWxsb3dzIHRoZSB1c2VRASBvZiBjb21wYWN0IGVuY29kaW5nIGluIGluc3RhbmNlcyBvZiB0aGUgcGFsbGV0LCB3aGljaCB3aWxsIHByZXZlbnQgYnJlYWtpbmcgY2hhbmdlcwUBIHJlc3VsdGluZyBmcm9tIHRoZSByZW1vdmFsIG9mIGBIYXNDb21wYWN0YCBmcm9tIGBTZWxmOjpBc3NldElkYC4AWQEgVGhpcyB0eXBlIGluY2x1ZGVzIHRoZSBgRnJvbTxTZWxmOjpBc3NldElkPmAgYm91bmQsIHNpbmNlIHRpZ2h0bHkgY291cGxlZCBwYWxsZXRzIG1heUUBIHdhbnQgdG8gY29udmVydCBhbiBgQXNzZXRJZGAgaW50byBhIHBhcmFtZXRlciBmb3IgY2FsbGluZyBkaXNwYXRjaGFibGUgZnVuY3Rpb25zKCBkaXJlY3RseS4sUmVzZXJ2ZURhdGHNBAToIEluZm9ybWF0aW9uIGFib3V0IHJlc2VydmUgbG9jYXRpb25zIGZvciBhIGNsYXNzIG9mIGFzc2V0LhRFeHRyYRAE+CBBZGRpdGlvbmFsIGRhdGEgdG8gYmUgc3RvcmVkIHdpdGggYW4gYWNjb3VudCdzIGFzc2V0IGJhbGFuY2UuEDDmSlYCb0tePC0ZYoOpoX2nApetC0vdPaS3RimmWm5cNGFzc2V0X2RldGFpbHMECGlkOQKxDASoIFByb3ZpZGUgdGhlIGFzc2V0IGRldGFpbHMgZm9yIGFzc2V0IGBpZGAuADDmSlYCb0tePC0ZYoOpoX1TGsfiG3axIedh5HNBmhsCKGJhbGFuY2Vfb2YIDHdobwQIaWQ5AmEEBLQgUHJvdmlkZSB0aGUgYmFsYW5jZSBvZiBgd2hvYCBmb3IgYXNzZXQgYGlkYC4AMOZKVgJvS148LRlig6mhfS6HZqQNG2nWFRvYAeV1UF4wZ2V0X21ldGFkYXRhBAhpZDkCRQ0EwCBQcm92aWRlIHRoZSBjb25maWd1cmVkIG1ldGFkYXRhIGZvciBhc3NldCBgaWRgLgAw5kpWAm9LXjwtGWKDqaF9ZPY/KSPjmCgkMWOBrh5phkRnZXRfcmVzZXJ2ZXNfZGF0YQQIaWQ5AtEEBNQgUHJvdmlkZSB0aGUgY29uZmlndXJlZCByZXNlcnZlcyBkYXRhIGZvciBhc3NldCBgaWRgLgA1AABQTmZ0RnJhY3Rpb25hbGl6YXRpb24BUE5mdEZyYWN0aW9uYWxpemF0aW9uBChOZnRUb0Fzc2V0AAEEAvxJDQQABBUBIEtlZXBzIHRyYWNrIG9mIHRoZSBjb3JyZXNwb25kaW5nIE5GVCBJRCwgYXNzZXQgSUQgYW5kIGFtb3VudCBtaW50ZWQuAAHVBAABCQkAFBxEZXBvc2l0lQFAOqYjkQEAAAAAAAAAAAAAAAhlASBUaGUgZGVwb3NpdCBwYWlkIGJ5IHRoZSB1c2VyIGxvY2tpbmcgYW4gTkZULiBUaGUgZGVwb3NpdCBpcyByZXR1cm5lZCB0byB0aGUgb3JpZ2luYWwgTkZU5CBvd25lciB3aGVuIHRoZSBhc3NldCBpcyB1bmlmaWVkIGFuZCB0aGUgTkZUIGlzIHVubG9ja2VkLgAgUGFsbGV0SWRFCyBmcmFjdGlvbgT0IFRoZSBwYWxsZXQncyBpZCwgdXNlZCBmb3IgZGVyaXZpbmcgaXRzIHNvdmVyZWlnbiBhY2NvdW50IElELgA4TmV3QXNzZXRTeW1ib2ypDBQQRlJBQwSIIFRoZSBuZXdseSBjcmVhdGVkIGFzc2V0J3Mgc3ltYm9sLgAwTmV3QXNzZXROYW1lqQwUEEZyYWMEgCBUaGUgbmV3bHkgY3JlYXRlZCBhc3NldCdzIG5hbWUuACxTdHJpbmdMaW1pdDgQMgAAAATgIFRoZSBtYXhpbXVtIGxlbmd0aCBvZiBhIG5hbWUgb3Igc3ltYm9sIHN0b3JlZCBvbi1jaGFpbi4AAU0NAAg8TmZ0Q29sbGVjdGlvbklkOASYIElkZW50aWZpZXIgZm9yIHRoZSBjb2xsZWN0aW9uIG9mIE5GVC4UTmZ0SWQ4BNggVGhlIHR5cGUgdXNlZCB0byBpZGVudGlmeSBhbiBORlQgd2l0aGluIGEgY29sbGVjdGlvbi4ANgAAKFBvb2xBc3NldHMBKFBvb2xBc3NldHMYFEFzc2V0AAEEAjiFDAQABFQgRGV0YWlscyBvZiBhbiBhc3NldC4AHEFjY291bnQAAQgCAo0MkQwEAATkIFRoZSBob2xkaW5ncyBvZiBhIHNwZWNpZmljIGFjY291bnQgZm9yIGEgc3BlY2lmaWMgYXNzZXQuACRBcHByb3ZhbHMAAQwCAgKdDKEMBAAMWQEgQXBwcm92ZWQgYmFsYW5jZSB0cmFuc2ZlcnMuIEZpcnN0IGJhbGFuY2UgaXMgdGhlIGFtb3VudCBhcHByb3ZlZCBmb3IgdHJhbnNmZXIuIFNlY29uZOggaXMgdGhlIGFtb3VudCBvZiBgVDo6Q3VycmVuY3lgIHJlc2VydmVkIGZvciBzdG9yaW5nIHRoaXMuSQEgRmlyc3Qga2V5IGlzIHRoZSBhc3NldCBJRCwgc2Vjb25kIGtleSBpcyB0aGUgb3duZXIgYW5kIHRoaXJkIGtleSBpcyB0aGUgZGVsZWdhdGUuACBNZXRhZGF0YQEBBAI4UQ1QAAAAAAAAAAAAAAAAAAAAAAAAAAAEWCBNZXRhZGF0YSBvZiBhbiBhc3NldC4AIFJlc2VydmVzAQEEAjhBBAQABPwgTWFwcyBhbiBhc3NldCB0byBhIGxpc3Qgb2YgaXRzIGNvbmZpZ3VyZWQgcmVzZXJ2ZSBpbmZvcm1hdGlvbi4ALE5leHRBc3NldElkAAA4BAAkbQEgVGhlIGFzc2V0IElEIGVuZm9yY2VkIGZvciB0aGUgbmV4dCBhc3NldCBjcmVhdGlvbiwgaWYgYW55IHByZXNlbnQuIE90aGVyd2lzZSwgdGhpcyBzdG9yYWdlUCBpdGVtIGhhcyBubyBlZmZlY3QuAGUBIFRoaXMgY2FuIGJlIHVzZWZ1bCBmb3Igc2V0dGluZyB1cCBjb25zdHJhaW50cyBmb3IgSURzIG9mIHRoZSBuZXcgYXNzZXRzLiBGb3IgZXhhbXBsZSwgYnlpASBwcm92aWRpbmcgYW4gaW5pdGlhbCBbYE5leHRBc3NldElkYF0gYW5kIHVzaW5nIHRoZSBbYGNyYXRlOjpBdXRvSW5jQXNzZXRJZGBdIGNhbGxiYWNrLCBhbuggYXV0by1pbmNyZW1lbnQgbW9kZWwgY2FuIGJlIGFwcGxpZWQgdG8gYWxsIG5ldyBhc3NldCBJRHMuACEBIFRoZSBpbml0aWFsIG5leHQgYXNzZXQgSUQgY2FuIGJlIHNldCB1c2luZyB0aGUgW2BHZW5lc2lzQ29uZmlnYF0gb3IgdGhlIQEgW1NldE5leHRBc3NldElkXShgbWlncmF0aW9uOjpuZXh0X2Fzc2V0X2lkOjpTZXROZXh0QXNzZXRJZGApIG1pZ3JhdGlvbi4AAdkEAAENCQAcQFJlbW92ZUl0ZW1zTGltaXQ4EOgDAAAMUQEgTWF4IG51bWJlciBvZiBpdGVtcyB0byBkZXN0cm95IHBlciBgZGVzdHJveV9hY2NvdW50c2AgYW5kIGBkZXN0cm95X2FwcHJvdmFsc2AgY2FsbC4AOQEgTXVzdCBiZSBjb25maWd1cmVkIHRvIHJlc3VsdCBpbiBhIHdlaWdodCB0aGF0IG1ha2VzIGVhY2ggY2FsbCBmaXQgaW4gYSBibG9jay4AMEFzc2V0RGVwb3NpdJUBQAAAAAAAAAAAAAAAAAAAAAAE+CBUaGUgYmFzaWMgYW1vdW50IG9mIGZ1bmRzIHRoYXQgbXVzdCBiZSByZXNlcnZlZCBmb3IgYW4gYXNzZXQuAExBc3NldEFjY291bnREZXBvc2l0lQFA9KOujQEAAAAAAAAAAAAAAAhFASBUaGUgYW1vdW50IG9mIGZ1bmRzIHRoYXQgbXVzdCBiZSByZXNlcnZlZCBmb3IgYSBub24tcHJvdmlkZXIgYXNzZXQgYWNjb3VudCB0byBiZTAgbWFpbnRhaW5lZC4ATE1ldGFkYXRhRGVwb3NpdEJhc2WVAUAAAAAAAAAAAAAAAAAAAAAABFEBIFRoZSBiYXNpYyBhbW91bnQgb2YgZnVuZHMgdGhhdCBtdXN0IGJlIHJlc2VydmVkIHdoZW4gYWRkaW5nIG1ldGFkYXRhIHRvIHlvdXIgYXNzZXQuAFhNZXRhZGF0YURlcG9zaXRQZXJCeXRllQFAAAAAAAAAAAAAAAAAAAAAAAhVASBUaGUgYWRkaXRpb25hbCBmdW5kcyB0aGF0IG11c3QgYmUgcmVzZXJ2ZWQgZm9yIHRoZSBudW1iZXIgb2YgYnl0ZXMgeW91IHN0b3JlIGluIHlvdXIoIG1ldGFkYXRhLgA8QXBwcm92YWxEZXBvc2l0lQFA1dwyAAAAAAAAAAAAAAAAAAQhASBUaGUgYW1vdW50IG9mIGZ1bmRzIHRoYXQgbXVzdCBiZSByZXNlcnZlZCB3aGVuIGNyZWF0aW5nIGEgbmV3IGFwcHJvdmFsLgAsU3RyaW5nTGltaXQ4EDIAAAAE4CBUaGUgbWF4aW11bSBsZW5ndGggb2YgYSBuYW1lIG9yIHN5bWJvbCBzdG9yZWQgb24tY2hhaW4uAAFZDQAUHEJhbGFuY2WVAQScIFRoZSB1bml0cyBpbiB3aGljaCB3ZSByZWNvcmQgYmFsYW5jZXMuHEFzc2V0SWQ4BIwgSWRlbnRpZmllciBmb3IgdGhlIGNsYXNzIG9mIGFzc2V0LkBBc3NldElkUGFyYW1ldGVyOBxZASBXcmFwcGVyIGFyb3VuZCBgU2VsZjo6QXNzZXRJZGAgdG8gdXNlIGluIGRpc3BhdGNoYWJsZSBjYWxsIHNpZ25hdHVyZXMuIEFsbG93cyB0aGUgdXNlUQEgb2YgY29tcGFjdCBlbmNvZGluZyBpbiBpbnN0YW5jZXMgb2YgdGhlIHBhbGxldCwgd2hpY2ggd2lsbCBwcmV2ZW50IGJyZWFraW5nIGNoYW5nZXMFASByZXN1bHRpbmcgZnJvbSB0aGUgcmVtb3ZhbCBvZiBgSGFzQ29tcGFjdGAgZnJvbSBgU2VsZjo6QXNzZXRJZGAuAFkBIFRoaXMgdHlwZSBpbmNsdWRlcyB0aGUgYEZyb208U2VsZjo6QXNzZXRJZD5gIGJvdW5kLCBzaW5jZSB0aWdodGx5IGNvdXBsZWQgcGFsbGV0cyBtYXlFASB3YW50IHRvIGNvbnZlcnQgYW4gYEFzc2V0SWRgIGludG8gYSBwYXJhbWV0ZXIgZm9yIGNhbGxpbmcgZGlzcGF0Y2hhYmxlIGZ1bmN0aW9ucyggZGlyZWN0bHkuLFJlc2VydmVEYXRhEAToIEluZm9ybWF0aW9uIGFib3V0IHJlc2VydmUgbG9jYXRpb25zIGZvciBhIGNsYXNzIG9mIGFzc2V0LhRFeHRyYRAE+CBBZGRpdGlvbmFsIGRhdGEgdG8gYmUgc3RvcmVkIHdpdGggYW4gYWNjb3VudCdzIGFzc2V0IGJhbGFuY2UuEE2wa6HKbxix7bBv8ILSRAmnApetC0vdPaS3RimmWm5cNGFzc2V0X2RldGFpbHMECGlkOLEMBKggUHJvdmlkZSB0aGUgYXNzZXQgZGV0YWlscyBmb3IgYXNzZXQgYGlkYC4ATbBrocpvGLHtsG/wgtJECVMax+IbdrEh52Hkc0GaGwIoYmFsYW5jZV9vZggMd2hvBAhpZDhhBAS0IFByb3ZpZGUgdGhlIGJhbGFuY2Ugb2YgYHdob2AgZm9yIGFzc2V0IGBpZGAuAE2wa6HKbxix7bBv8ILSRAkuh2akDRtp1hUb2AHldVBeMGdldF9tZXRhZGF0YQQIaWQ4XQ0EwCBQcm92aWRlIHRoZSBjb25maWd1cmVkIG1ldGFkYXRhIGZvciBhc3NldCBgaWRgLgBNsGuhym8Yse2wb/CC0kQJZPY/KSPjmCgkMWOBrh5phkRnZXRfcmVzZXJ2ZXNfZGF0YQQIaWQ4RQQE1CBQcm92aWRlIHRoZSBjb25maWd1cmVkIHJlc2VydmVzIGRhdGEgZm9yIGFzc2V0IGBpZGAuADcAADxBc3NldENvbnZlcnNpb24BPEFzc2V0Q29udmVyc2lvbggUUG9vbHMAAQQCFQlhDQQACGkBIE1hcCBmcm9tIGBQb29sQXNzZXRJZGAgdG8gYFBvb2xJbmZvYC4gVGhpcyBlc3RhYmxpc2hlcyB3aGV0aGVyIGEgcG9vbCBoYXMgYmVlbiBvZmZpY2lhbGx5PQEgY3JlYXRlZCByYXRoZXIgdGhhbiBwZW9wbGUgc2VuZGluZyB0b2tlbnMgZGlyZWN0bHkgdG8gYSBwb29sJ3MgcHVibGljIGFjY291bnQuADxOZXh0UG9vbEFzc2V0SWQAADgEAAglASBTdG9yZXMgdGhlIGBQb29sQXNzZXRJZGAgdGhhdCBpcyBnb2luZyB0byBiZSB1c2VkIGZvciB0aGUgbmV4dCBscCB0b2tlbi7kIFRoaXMgZ2V0cyBpbmNyZW1lbnRlZCB3aGVuZXZlciBhIG5ldyBscCBwb29sIGlzIGNyZWF0ZWQuAAHdBAABEQkAHBRMUEZlZTEBELgLAAAEHQEgVGhlIGZyYWN0aW9uIG9mIGV2ZXJ5IHN3YXAgdGhhdCB0aGUgbGlxdWlkaXR5IHByb3ZpZGVycyB0YWtlIGFzIGEgZmVlLgAwUG9vbFNldHVwRmVllQFAMkGVHgMAAAAAAAAAAAAAAASIIEEgb25lLXRpbWUgZmVlIHRvIHNldHVwIHRoZSBwb29sLgBEUG9vbFNldHVwRmVlQXNzZXQ5AggBAAQ5ASBBc3NldCBjbGFzcyBmcm9tIFtgQ29uZmlnOjpBc3NldHNgXSB1c2VkIHRvIHBheSB0aGUgW2BDb25maWc6OlBvb2xTZXR1cEZlZWBdLgBYTGlxdWlkaXR5V2l0aGRyYXdhbEZlZTEBEAAAAAAEhCBBIGZlZSB0byB3aXRoZHJhdyB0aGUgbGlxdWlkaXR5LgBATWludE1pbkxpcXVpZGl0eZUBQGQAAAAAAAAAAAAAAAAAAAAEPQEgVGhlIG1pbmltdW0gTFAgdG9rZW4gYW1vdW50IHRoYXQgY291bGQgYmUgbWludGVkLiBBbWVsaW9yYXRlcyByb3VuZGluZyBlcnJvcnMuAERNYXhTd2FwUGF0aExlbmd0aDgQAwAAAASIIFRoZSBtYXggbnVtYmVyIG9mIGhvcHMgaW4gYSBzd2FwLgAgUGFsbGV0SWRFCyBweS9hc2NvbgT0IFRoZSBwYWxsZXQncyBpZCwgdXNlZCBmb3IgZGVyaXZpbmcgaXRzIHNvdmVyZWlnbiBhY2NvdW50IElELgABZQ0ACCRBc3NldEtpbmQ5AghdASBUeXBlIG9mIGFzc2V0IGNsYXNzLCBzb3VyY2VkIGZyb20gW2BDb25maWc6OkFzc2V0c2BdLCB1dGlsaXplZCB0byBvZmZlciBsaXF1aWRpdHkgdG8gYRggcG9vbC4YUG9vbElkFQkEbCBMaXF1aWRpdHkgcG9vbCBpZGVudGlmaWVyLgy1JgbagNAqs3RCg2ml8kbxS1pnVmbe//3TGtEv26r/4zBnZXRfcmVzZXJ2ZXMIGGFzc2V0MTkCGGFzc2V0MjkCaQ0IvCBSZXR1cm5zIHRoZSBiYWxhbmNlIG9mIGVhY2ggYXNzZXQgaW4gdGhlIHBvb2wuVQEgVGhlIHR1cGxlIHJlc3VsdCBpcyBpbiB0aGUgb3JkZXIgcmVxdWVzdGVkIChub3QgbmVjZXNzYXJpbHkgdGhlIHNhbWUgYXMgcG9vbCBvcmRlcikuALUmBtqA0CqzdEKDaaXyRvF454NwvdVcmGRJvGzVUBALjHF1b3RlX3ByaWNlX2V4YWN0X3Rva2Vuc19mb3JfdG9rZW5zEBhhc3NldDE5Ahhhc3NldDI5AhhhbW91bnSVASxpbmNsdWRlX2ZlZZkBYQQcEQEgR2V0cyBhIHF1b3RlIGZvciBzd2FwcGluZyBhbiBleGFjdCBhbW91bnQgb2YgYGFzc2V0MWAgZm9yIGBhc3NldDJgLgA1ASBJZiBgaW5jbHVkZV9mZWVgIGlzIHRydWUsIHRoZSBxdW90ZSB3aWxsIGluY2x1ZGUgdGhlIGxpcXVpZGl0eSBwcm92aWRlciBmZWUuEQEgSWYgdGhlIHBvb2wgZG9lcyBub3QgZXhpc3Qgb3IgaGFzIG5vIGxpcXVpZGl0eSwgYE5vbmVgIGlzIHJldHVybmVkLjkBIE5vdGUgdGhhdCB0aGUgcHJpY2UgbWF5IGhhdmUgY2hhbmdlZCBieSB0aGUgdGltZSB0aGUgdHJhbnNhY3Rpb24gaXMgZXhlY3V0ZWQusCAoVXNlIGBhbW91bnRfb3V0X21pbmAgdG8gY29udHJvbCBzbGlwcGFnZS4pqCBSZXR1cm5zIGBTb21lKHF1b3RlZF9hbW91bnQpYCBvbiBzdWNjZXNzLgC1JgbagNAqs3RCg2ml8kbxKHkP75st419EjT7Dc5NpjYxxdW90ZV9wcmljZV90b2tlbnNfZm9yX2V4YWN0X3Rva2VucxAYYXNzZXQxOQIYYXNzZXQyOQIYYW1vdW50lQEsaW5jbHVkZV9mZWWZAWEEHEEBIEdldHMgYSBxdW90ZSBmb3Igc3dhcHBpbmcgYGFtb3VudGAgb2YgYGFzc2V0MWAgZm9yIGFuIGV4YWN0IGFtb3VudCBvZiBgYXNzZXQyYC4ANQEgSWYgYGluY2x1ZGVfZmVlYCBpcyB0cnVlLCB0aGUgcXVvdGUgd2lsbCBpbmNsdWRlIHRoZSBsaXF1aWRpdHkgcHJvdmlkZXIgZmVlLhEBIElmIHRoZSBwb29sIGRvZXMgbm90IGV4aXN0IG9yIGhhcyBubyBsaXF1aWRpdHksIGBOb25lYCBpcyByZXR1cm5lZC45ASBOb3RlIHRoYXQgdGhlIHByaWNlIG1heSBoYXZlIGNoYW5nZWQgYnkgdGhlIHRpbWUgdGhlIHRyYW5zYWN0aW9uIGlzIGV4ZWN1dGVkLqwgKFVzZSBgYW1vdW50X2luX21heGAgdG8gY29udHJvbCBzbGlwcGFnZS4pqCBSZXR1cm5zIGBTb21lKHF1b3RlZF9hbW91bnQpYCBvbiBzdWNjZXNzLgA4AAAgUmVjb3ZlcnkBIFJlY292ZXJ5DDBGcmllbmRHcm91cHMAAQQCBHENBAAMEQEgVGhlIGZyaWVuZCBncm91cHMgb2YgYW4gYWNjb3VudCB0aGF0IGNhbiBjb25kdWN0IHJlY292ZXJ5IGF0dGVtcHRzLgBdASBNb2RpZnlpbmcgdGhpcyBzdG9yYWdlIGlzIG5vdCBwb3NzaWJsZSB3aGlsZSBhbiBhY2NvdW50IGhhcyBvbmdvaW5nIHJlY292ZXJ5IGF0dGVtcHRzLgAcQXR0ZW1wdAABCAICbQV9DQQABD0BIE9uZ29pbmcgcmVjb3ZlcnkgYXR0ZW1wdHMgb2YgYSBsb3N0IGFjY291bnQgaW5kZXhlZCBieSBgKGxvc3QsIGZyaWVuZF9ncm91cClgLgAkSW5oZXJpdG9yAAEEAgSdDQQAFFEBIFRoZSBhY2NvdW50IHRoYXQgaW5oZXJpdGVkIGZ1bGwgYWNjZXNzIHRvIGEgbG9zdCBhY2NvdW50IGFmdGVyIHN1Y2Nlc3NmdWwgcmVjb3ZlcnkuABEBIFRoZSBrZXkgaXMgdGhlIGxvc3QgYWNjb3VudCBhbmQgdGhlIHZhbHVlIGlzIHRoZSBpbmhlcml0b3IgYWNjb3VudC4AwCBOT1RFOiBUaGlzIGNvdWxkIGJlIGEgbXVsdGlzaWcgb3IgcHJveHkgYWNjb3VudAAB5QQAASEJAAg8U2VjdXJpdHlEZXBvc2l0lQFABIIbziYAAAAAAAAAAAAAAAQtASBTZWN1cml0eSBkZXBvc2l0IHRha2VuIGZvciBlYWNoIGF0dGVtcHQgdGhhdCB0aGUgaW5pdGlhdG9yIG5lZWRzIHRvIHBsYWNlLgBMTWF4RnJpZW5kc1BlckNvbmZpZzgQCQAAAAwhASBETyBOT1QgUkVEVUNFIFRISVMgVkFMVUUuIE1heGltdW0gbnVtYmVyIG9mIGZyaWVuZHMgcGVyIGFjY291bnQgY29uZmlnLgAZASBSZWR1Y2luZyB0aGlzIHZhbHVlIGNhbiBjYXVzZSBkZWNvZGluZyBlcnJvcnMgaW4gdGhlIGJvdW5kZWQgdmVjdG9ycy4AAa0NAAgsUnVudGltZUNhbGwgBGwgVGhlIG92ZXJhcmNoaW5nIGNhbGwgdHlwZS5EUnVudGltZUhvbGRSZWFzb25tCAR0IFRoZSBvdmVyYXJjaGluZyBob2xkIHJlYXNvbi4Uos5zZCxUmuecFPCmcc9F+X885N/89rHi4Sko2j8mdexUcHJvdmlkZWRfYmxvY2tfbnVtYmVyADgE9CBUaGUgcHJvdmlkZWQgYmxvY2sgbnVtYmVyIHRoYXQgd2lsbCBiZSB1c2VkIHRvIG1lYXN1cmUgdGltZS4Aos5zZCxUmuecFPCmcc9F+fwZt+dAXjOcS9gOu7sQkLQ0ZnJpZW5kX2dyb3VwcwQQbG9zdATpBAQVASBUaGUgZnJpZW5kIGdyb3VwcyBvZiBhbiBhY2NvdW50IHRoYXQgY2FuIGluaXRpYXRlIHJlY292ZXJ5IGF0dGVtcHRzLgCiznNkLFSa55wU8KZxz0X54Zwq9Bzf+T9Ht64Wm9sAnCBhdHRlbXB0cwQQbG9zdASxDQS4IE9uZ29pbmcgcmVjb3ZlcnkgYXR0ZW1wdHMgZm9yIGEgbG9zdCBhY2NvdW50LgCiznNkLFSa55wU8KZxz0X5AFBQM4aeIOKR3df99XET+iRpbmhlcml0b3IEEGxvc3QEQQEE8CBUaGUgYWNjb3VudCB0aGF0IGluaGVyaXRlZCBmdWxsIGFjY2VzcyB0byB0aGUgbG9zdCBhY2NvdW50LgCiznNkLFSa55wU8KZxz0X5aFD+6CvV/fp1DIe62dzIySxpbmhlcml0YW5jZQQQaGVpcgSdAQTwIEFsbCB0aGUgcmVjb3ZlcmVkIGFjY291bnRzIHRoYXQgYGhlaXJgIGluaGVyaXRlZCBhY2Nlc3MgdG8uADkAABxTb2NpZXR5ARxTb2NpZXR5WChQYXJhbWV0ZXJzAAApCQQABNwgVGhlIG1heCBudW1iZXIgb2YgbWVtYmVycyBmb3IgdGhlIHNvY2lldHkgYXQgb25lIHRpbWUuAAxQb3QBAJUBQAAAAAAAAAAAAAAAAAAAAAAEQQEgQW1vdW50IG9mIG91ciBhY2NvdW50IGJhbGFuY2UgdGhhdCBpcyBzcGVjaWZpY2FsbHkgZm9yIHRoZSBuZXh0IHJvdW5kJ3MgYmlkKHMpLgAcRm91bmRlcgAABAQABEggVGhlIGZpcnN0IG1lbWJlci4AEEhlYWQAAAQEAARBASBUaGUgbW9zdCBwcmltYXJ5IGZyb20gdGhlIG1vc3QgcmVjZW50bHkgYXBwcm92ZWQgcmFuayAwIG1lbWJlcnMgaW4gdGhlIHNvY2lldHkuABRSdWxlcwAAQAQACFEBIEEgaGFzaCBvZiB0aGUgcnVsZXMgb2YgdGhpcyBzb2NpZXR5IGNvbmNlcm5pbmcgbWVtYmVyc2hpcC4gQ2FuIG9ubHkgYmUgc2V0IG9uY2UgYW5kVCBvbmx5IGJ5IHRoZSBmb3VuZGVyLgAcTWVtYmVycwABBAUEuQ0EAAQhASBUaGUgY3VycmVudCBtZW1iZXJzIGFuZCB0aGVpciByYW5rLiBEb2Vzbid0IGluY2x1ZGUgYFN1c3BlbmRlZE1lbWJlcnNgLgAcUGF5b3V0cwEBBAUExQ1EAAAAAAAAAAAAAAAAAAAAAAAE3CBJbmZvcm1hdGlvbiByZWdhcmRpbmcgcmFuay0wIHBheW91dHMsIHBhc3QgYW5kIGZ1dHVyZS4ALE1lbWJlckNvdW50AQA4EAAAAAAESQEgVGhlIG51bWJlciBvZiBpdGVtcyBpbiBgTWVtYmVyc2AgY3VycmVudGx5LiAoRG9lc24ndCBpbmNsdWRlIGBTdXNwZW5kZWRNZW1iZXJzYC4pADRNZW1iZXJCeUluZGV4AAEEBTgEBAAIXQEgVGhlIGN1cnJlbnQgaXRlbXMgaW4gYE1lbWJlcnNgIGtleWVkIGJ5IHRoZWlyIHVuaXF1ZSBpbmRleC4gS2V5cyBhcmUgZGVuc2VseSBwb3B1bGF0ZWTMIGAwLi5NZW1iZXJDb3VudGAgKGRvZXMgbm90IGluY2x1ZGUgYE1lbWJlckNvdW50YCkuAEBTdXNwZW5kZWRNZW1iZXJzAAEEBQS5DQQABAEBIFRoZSBzZXQgb2Ygc3VzcGVuZGVkIG1lbWJlcnMsIHdpdGggdGhlaXIgb2xkIG1lbWJlcnNoaXAgcmVjb3JkLgAoUm91bmRDb3VudAEAOBAAAAAABKAgVGhlIG51bWJlciBvZiByb3VuZHMgd2hpY2ggaGF2ZSBwYXNzZWQuABBCaWRzAQDVDQQABOggVGhlIGN1cnJlbnQgYmlkcywgc3RvcmVkIG9yZGVyZWQgYnkgdGhlIHZhbHVlIG9mIHRoZSBiaWQuAChDYW5kaWRhdGVzAAEEAgTlDQQAAAAcU2tlcHRpYwAABAQABFQgVGhlIGN1cnJlbnQgc2tlcHRpYy4AFFZvdGVzAAEIBQXtDfENBAAE0CBEb3VibGUgbWFwIGZyb20gQ2FuZGlkYXRlIC0+IFZvdGVyIC0+IChNYXliZSkgVm90ZS4APFZvdGVDbGVhckN1cnNvcgABBAUE9Q0EAAT0IENsZWFyLWN1cnNvciBmb3IgVm90ZSwgbWFwIGZyb20gQ2FuZGlkYXRlIC0+IChNYXliZSkgQ3Vyc29yLgAgTmV4dEhlYWQAAPkNBAAMdQEgQXQgdGhlIGVuZCBvZiB0aGUgY2xhaW0gcGVyaW9kLCB0aGlzIGNvbnRhaW5zIHRoZSBtb3N0IHJlY2VudGx5IGFwcHJvdmVkIG1lbWJlcnMgKGFsb25nIHdpdGhlASB0aGVpciBiaWQgYW5kIHJvdW5kIElEKSB3aG8gaXMgZnJvbSB0aGUgbW9zdCByZWNlbnQgcm91bmQgd2l0aCB0aGUgbG93ZXN0IGJpZC4gVGhleSB3aWxsXCBiZWNvbWUgdGhlIG5ldyBgSGVhZGAuAExDaGFsbGVuZ2VSb3VuZENvdW50AQA4EAAAAAAEWQEgVGhlIG51bWJlciBvZiBjaGFsbGVuZ2Ugcm91bmRzIHRoZXJlIGhhdmUgYmVlbi4gVXNlZCB0byBpZGVudGlmeSBzdGFsZSBEZWZlbmRlclZvdGVzLgAkRGVmZW5kaW5nAAD9DQQABFkBIFRoZSBkZWZlbmRpbmcgbWVtYmVyIGN1cnJlbnRseSBiZWluZyBjaGFsbGVuZ2VkLCBhbG9uZyB3aXRoIGEgcnVubmluZyB0YWxseSBvZiB2b3Rlcy4ANERlZmVuZGVyVm90ZXMAAQgFBY0M8Q0EAATIIFZvdGVzIGZvciB0aGUgZGVmZW5kZXIsIGtleWVkIGJ5IGNoYWxsZW5nZSByb3VuZC4AME5leHRJbnRha2VBdAAAOAQABA0BIE5leHQgaW50YWtlIHJvdGF0aW9uIHNjaGVkdWxlZCB3aXRoIFtDb25maWc6OkJsb2NrTnVtYmVyUHJvdmlkZXJdLgA8TmV4dENoYWxsZW5nZUF0AAA4BAAEGQEgTmV4dCBjaGFsbGVuZ2Ugcm90YXRpb24gc2NoZWR1bGVkIHdpdGggW0NvbmZpZzo6QmxvY2tOdW1iZXJQcm92aWRlcl0uAAH1BAABJQkAJCBQYWxsZXRJZEULIHB5L3NvY2llBGggVGhlIHNvY2lldGllcydzIHBhbGxldCBpZAAwR3JhY2VTdHJpa2VzOBAKAAAABAkBIFRoZSBtYXhpbXVtIG51bWJlciBvZiBzdHJpa2VzIGJlZm9yZSBhIG1lbWJlciBnZXRzIGZ1bmRzIHNsYXNoZWQuACxQZXJpb2RTcGVuZJUBQAQKv4IoDwAAAAAAAAAAAAAELQEgVGhlIGFtb3VudCBvZiBpbmNlbnRpdmUgcGFpZCB3aXRoaW4gZWFjaCBwZXJpb2QuIERvZXNuJ3QgaW5jbHVkZSBWb3RlclRpcC4AMFZvdGluZ1BlcmlvZDgQQBkBAAxVASBUaGUgbnVtYmVyIG9mIFtDb25maWc6OkJsb2NrTnVtYmVyUHJvdmlkZXJdIGJsb2NrcyBvbiB3aGljaCBuZXcgY2FuZGlkYXRlcyBzaG91bGQgYmVgIHZvdGVkIG9uLiBUb2dldGhlciB3aXRoTQEgYENsYWltUGVyaW9kYCwgdGhpcyBzdW1zIHRvIHRoZSBudW1iZXIgb2YgYmxvY2tzIGJldHdlZW4gY2FuZGlkYXRlIGludGFrZSBwZXJpb2RzLgAsQ2xhaW1QZXJpb2Q4EIBwAAAIVQEgVGhlIG51bWJlciBvZiBbQ29uZmlnOjpCbG9ja051bWJlclByb3ZpZGVyXSBibG9ja3Mgb24gd2hpY2ggbmV3IGNhbmRpZGF0ZXMgY2FuIGNsYWltoCB0aGVpciBtZW1iZXJzaGlwIGFuZCBiZSB0aGUgbmFtZWQgaGVhZC4APE1heExvY2tEdXJhdGlvbjgQAE7tAASkIFRoZSBtYXhpbXVtIGR1cmF0aW9uIG9mIHRoZSBwYXlvdXQgbG9jay4APENoYWxsZW5nZVBlcmlvZDgQwIkBAARJASBUaGUgbnVtYmVyIG9mIFtDb25maWc6OkJsb2NrTnVtYmVyUHJvdmlkZXJdIGJsb2NrcyBiZXR3ZWVuIG1lbWJlcnNoaXAgY2hhbGxlbmdlcy4AKE1heFBheW91dHM4EAgAAAAEDQEgVGhlIG1heGltdW0gbnVtYmVyIG9mIHBheW91dHMgYSBtZW1iZXIgbWF5IGhhdmUgd2FpdGluZyB1bmNsYWltZWQuABxNYXhCaWRzOBAAAgAABJAgVGhlIG1heGltdW0gbnVtYmVyIG9mIGJpZHMgYXQgb25jZS4AAQEOAAAAOgAAGFJldml2ZQEYUmV2aXZlODBQcmlzdGluZUNvZGUAAQQGQBgEAAzMIEEgbWFwcGluZyBmcm9tIGEgY29udHJhY3QncyBjb2RlIGhhc2ggdG8gaXRzIGNvZGUuIQEgVGhlIGNvZGUncyBzaXplIGlzIGJvdW5kZWQgYnkgW2BjcmF0ZTo6bGltaXRzOjpCTE9CX0JZVEVTYF0gZm9yIFBWTSBhbmT4IFtgcmV2bTo6cHJpbWl0aXZlczo6ZWlwMTcwOjpNQVhfQ09ERV9TSVpFYF0gZm9yIEVWTSBieXRlY29kZS4AKENvZGVJbmZvT2YAAQQGQAUOBAAE4CBBIG1hcHBpbmcgZnJvbSBhIGNvbnRyYWN0J3MgY29kZSBoYXNoIHRvIGl0cyBjb2RlIGluZm8uADRBY2NvdW50SW5mb09mAAEEBv0EDQ4EAAT8IFRoZSBkYXRhIGFzc29jaWF0ZWQgdG8gYSBjb250cmFjdCBvciBleHRlcm5hbGx5IG93bmVkIGFjY291bnQuADxOYXRpdmVEZXBvc2l0T2YBAQgGBu0NlQFAAAAAAAAAAAAAAAAAAAAAACgdASBOYXRpdmUgY3VycmVuY3kgc3RvcmFnZSBkZXBvc2l0IGNvbnRyaWJ1dGVkIGJ5IGEgdXNlciBpbnRvIGEgY29udHJhY3QuADEBIEJvdW5kcyBob3cgbXVjaCBuYXRpdmUgdmFsdWUgdGhlIHVzZXIgY2FuIHJlY2VpdmUgYmFjayBmcm9tIHRoYXQgY29udHJhY3Qnc0Qgc3RvcmFnZSBkZXBvc2l0LgCgIEtleXM6IGAoaG9sZGVyLCBjb250cmlidXRvcikgLT4gYW1vdW50YGkBIC0gYGhvbGRlcmA6IGFjY291bnQgb24gd2hpY2ggdGhlIGRlcG9zaXQgaXMgaGVsZCAoYSBjb250cmFjdCwgb3IgdGhlIHBhbGxldCdzIG93biBhY2NvdW50dCAgIGZvciBjb2RlLXVwbG9hZCBkZXBvc2l0cykudQEgLSBgY29udHJpYnV0b3JgOiB1c2VyIHRoYXQgZnVuZGVkIHRoZSBkZXBvc2l0LiBSZWNlaXZlcyB0aGUgbmF0aXZlIHBvcnRpb24gb24gcmVmdW5kLCBjYXBwZWRwICAgYXQgdGhpcyBlbnRyeSdzIGBhbW91bnRgLgA8SW1tdXRhYmxlRGF0YU9mAAEEBv0EGQ4EAATQIFRoZSBpbW11dGFibGUgZGF0YSBhc3NvY2lhdGVkIHdpdGggYSBnaXZlbiBhY2NvdW50LgA0RGVsZXRpb25RdWV1ZQABBAU4HQ4EABS4IFRlcm1pbmF0ZWQgY29udHJhY3RzIHRoYXQgYXdhaXQgbGF6eSBjbGVhbnVwLgBFASBFYWNoIGVudHJ5IHBhaXJzIGEgY2hpbGQgdHJpZSBJRCB3aXRoIHRoZSBjb250cmFjdCBhY2NvdW50IHNvIHRoYXQgYG9uX2lkbGVgIGNhblkBIGRyYWluIGJvdGggdGhlIGNoaWxkIHRyaWUgYW5kIGFueSBbYE5hdGl2ZURlcG9zaXRPZmBdIGVudHJpZXMgdGhhdCBuYW1lZCB0aGUgY29udHJhY3RFASBhcyBgaG9sZGVyYC4gQm90aCBjYW4gYmUgYXJiaXRyYXJpbHkgbGFyZ2UsIHNvIGNsZWFudXAgcnVucyBsYXppbHkgaW4gYG9uX2lkbGVgLgBQRGVsZXRpb25RdWV1ZUNvdW50ZXIBACEOIAAAAAAAAAAACE0BIEEgcGFpciBvZiBtb25vdG9uaWMgY291bnRlcnMgdXNlZCB0byB0cmFjayB0aGUgbGF0ZXN0IGNvbnRyYWN0IG1hcmtlZCBmb3IgZGVsZXRpb26oIGFuZCB0aGUgbGF0ZXN0IGRlbGV0ZWQgY29udHJhY3QgaW4gcXVldWUuADxPcmlnaW5hbEFjY291bnQAAQQG/QQEBAAY2CBNYXAgYSBFdGhlcmV1bSBhZGRyZXNzIHRvIGl0cyBvcmlnaW5hbCBgQWNjb3VudElkMzJgLgBFASBXaGVuIGRlcml2aW5nIGEgYEgxNjBgIGZyb20gYW4gYEFjY291bnRJZDMyYCB3ZSB1c2UgYSBoYXNoIGZ1bmN0aW9uLiBJbiBvcmRlciB0bzEBIHJlY29uc3RydWN0IHRoZSBvcmlnaW5hbCBhY2NvdW50IHdlIG5lZWQgdG8gc3RvcmUgdGhlIHJldmVyc2UgbWFwcGluZyBoZXJlLhkBIFJlZ2lzdGVyIHlvdXIgYEFjY291bnRJZDMyYCB1c2luZyBbYFBhbGxldDo6bWFwX2FjY291bnRgXSBpbiBvcmRlciB0b2QgdXNlIGl0IHdpdGggdGhpcyBwYWxsZXQuADRFdGhlcmV1bUJsb2NrAQAlDhENAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAkHQEgVGhlIGN1cnJlbnQgRXRoZXJldW0gYmxvY2sgdGhhdCBpcyBzdG9yZWQgaW4gdGhlIGBvbl9maW5hbGl6ZWAgbWV0aG9kLgAcICMgTm90ZQApASBUaGlzIGNvdWxkIGJlIGZ1cnRoZXIgb3B0aW1pemVkIGludG8gdGhlIGZ1dHVyZSB0byBzdG9yZSBvbmx5IHRoZSBtaW5pbXVtHQEgaW5mb3JtYXRpb24gbmVlZGVkIHRvIHJlY29uc3RydWN0IHRoZSBFdGhlcmV1bSBibG9jayBhdCB0aGUgUlBDIGxldmVsLgA9ASBTaW5jZSB0aGUgYmxvY2sgaXMgY29udmVuaWVudCB0byBoYXZlIGFyb3VuZCwgYW5kIHRoZSBleHRyYSBkZXRhaWxzIGFyZSBjYXBwZWQ9ASBieSBhIGZldyBoYXNoZXMgYW5kIHRoZSB2ZWN0b3Igb2YgdHJhbnNhY3Rpb24gaGFzaGVzLCB3ZSBzdG9yZSB0aGUgYmxvY2sgaGVyZS4AJEJsb2NrSGFzaAEBBAY4QIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAyUIE1hcHBpbmcgZm9yIGJsb2NrIG51bWJlciBhbmQgaGFzaGVzLgBxASBUaGUgbWF4aW11bSBudW1iZXIgb2YgZWxlbWVudHMgc3RvcmVkIGlzIGNhcHBlZCBieSB0aGUgYmxvY2sgaGFzaCBjb3VudCBgQkxPQ0tfSEFTSF9DT1VOVGAuADxSZWNlaXB0SW5mb0RhdGEBAJEOBAAY9CBUaGUgZGV0YWlscyBuZWVkZWQgdG8gcmVjb25zdHJ1Y3QgdGhlIHJlY2VpcHQgaW5mbyBvZmZjaGFpbi4AKQEgVGhpcyBjb250YWlucyB2YWx1YWJsZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgZ2FzIHVzZWQgYnkgdGhlIHRyYW5zYWN0aW9uLgAdASBOT1RFOiBUaGUgaXRlbSBpcyB1bmJvdW5kIGFuZCBzaG91bGQgdGhlcmVmb3JlIG5ldmVyIGJlIHJlYWQgb24gY2hhaW4u0CBJdCBjb3VsZCBvdGhlcndpc2UgaW5mbGF0ZSB0aGUgUG9WIHNpemUgb2YgYSBibG9jay4AREV0aEJsb2NrQnVpbGRlcklSAQCZDhEGAAAAAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAABAAAAAAAAAADkC1QCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//////////8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAASQIEluY3JlbWVudGFsIGV0aGVyZXVtIGJsb2NrIGJ1aWxkZXIuAGhFdGhCbG9ja0J1aWxkZXJGaXJzdFZhbHVlcwEAoQ4EABDkIFRoZSBmaXJzdCB0cmFuc2FjdGlvbiBhbmQgcmVjZWlwdCBvZiB0aGUgZXRoZXJldW0gYmxvY2suAD0BIFRoZXNlIHZhbHVlcyBhcmUgbW92ZWQgb3V0IG9mIHRoZSBgRXRoQmxvY2tCdWlsZGVySVJgIHRvIGF2b2lkIHNlcmlhbGl6aW5nIGFuZD0BIGRlc2VyaWFsaXppbmcgdGhlbSBvbiBldmVyeSB0cmFuc2FjdGlvbi4gSW5zdGVhZCwgdGhleSBhcmUgbG9hZGVkIHdoZW4gbmVlZGVkLgA8RGVidWdTZXR0aW5nc09mAQClDhAAAAAABDEBIERlYnVnZ2luZyBzZXR0aW5ncyB0aGF0IGNhbiBiZSBjb25maWd1cmVkIHdoZW4gRGVidWdFbmFibGVkIGNvbmZpZyBpcyB0cnVlLgAB+QQAAS0JACw4RGVwb3NpdFBlckJ5dGWVAUAVFgUAAAAAAAAAAAAAAAAAFBEBIFRoZSBhbW91bnQgb2YgYmFsYW5jZSBhIGNhbGxlciBoYXMgdG8gcGF5IGZvciBlYWNoIGJ5dGUgb2Ygc3RvcmFnZS4AHCAjIE5vdGUANQEgSXQgaXMgc2FmZSB0byBjaGFuZ2UgdGhpcyB2YWx1ZSBvbiBhIGxpdmUgY2hhaW4gYXMgYWxsIHJlZnVuZHMgYXJlIHBybyByYXRhLgA4RGVwb3NpdFBlckl0ZW2VAUCkQl2NAQAAAAAAAAAAAAAAFAUBIFRoZSBhbW91bnQgb2YgYmFsYW5jZSBhIGNhbGxlciBoYXMgdG8gcGF5IGZvciBlYWNoIHN0b3JhZ2UgaXRlbS4AHCAjIE5vdGUANQEgSXQgaXMgc2FmZSB0byBjaGFuZ2UgdGhpcyB2YWx1ZSBvbiBhIGxpdmUgY2hhaW4gYXMgYWxsIHJlZnVuZHMgYXJlIHBybyByYXRhLgBcRGVwb3NpdFBlckNoaWxkVHJpZUl0ZW2VAUCqQPkDAAAAAAAAAAAAAAAAJDEBIFRoZSBhbW91bnQgb2YgYmFsYW5jZSBhIGNhbGxlciBoYXMgdG8gcGF5IGZvciBlYWNoIGNoaWxkIHRyaWUgc3RvcmFnZSBpdGVtLgA5ASBUaG9zZSBhcmUgdGhlIGl0ZW1zIGNyZWF0ZWQgYnkgYSBjb250cmFjdC4gSW4gU29saWRpdHkgZWFjaCB2YWx1ZSBpcyBhIHNpbmdsZTkBIHN0b3JhZ2UgaXRlbS4gVGhpcyBpcyB3aHkgd2UgbmVlZCB0byBzZXQgYSBsb3dlciB2YWx1ZSBoZXJlIHRoYW4gZm9yIHRoZSBtYWlu3CB0cmllIGl0ZW1zLiBPdGhlcndpc2UgdGhlIHN0b3JhZ2UgZGVwb3NpdCBpcyB0b28gaGlnaC4AHCAjIE5vdGUANQEgSXQgaXMgc2FmZSB0byBjaGFuZ2UgdGhpcyB2YWx1ZSBvbiBhIGxpdmUgY2hhaW4gYXMgYWxsIHJlZnVuZHMgYXJlIHBybyByYXRhLgBwQ29kZUhhc2hMb2NrdXBEZXBvc2l0UGVyY2VudD0FEACj4REMRQEgVGhlIHBlcmNlbnRhZ2Ugb2YgdGhlIHN0b3JhZ2UgZGVwb3NpdCB0aGF0IHNob3VsZCBiZSBoZWxkIGZvciB1c2luZyBhIGNvZGUgaGFzaC5RASBJbnN0YW50aWF0aW5nIGEgY29udHJhY3QsIHByb3RlY3RzIHRoZSBjb2RlIGZyb20gYmVpbmcgcmVtb3ZlZC4gSW4gb3JkZXIgdG8gcHJldmVudCUBIGFidXNlIHRoZXNlIGFjdGlvbnMgYXJlIHByb3RlY3RlZCB3aXRoIGEgcGVyY2VudGFnZSBvZiB0aGUgY29kZSBkZXBvc2l0LgBAQWxsb3dFVk1CeXRlY29kZZkBBAEE0CBBbGxvdyBFVk0gYnl0ZWNvZGUgdG8gYmUgdXBsb2FkZWQgYW5kIGluc3RhbnRpYXRlZC4AHENoYWluSWQoIEIbDxkAAAAAEAEBIFRoZSBbRUlQLTE1NV0oaHR0cHM6Ly9laXBzLmV0aGVyZXVtLm9yZy9FSVBTL2VpcC0xNTUpIGNoYWluIElELgAFASBUaGlzIGlzIGEgdW5pcXVlIGlkZW50aWZpZXIgYXNzaWduZWQgdG8gZWFjaCBibG9ja2NoYWluIG5ldHdvcmssbCBwcmV2ZW50aW5nIHJlcGxheSBhdHRhY2tzLgBATmF0aXZlVG9FdGhSYXRpbzgQQEIPAARRASBUaGUgcmF0aW8gYmV0d2VlbiB0aGUgZGVjaW1hbCByZXByZXNlbnRhdGlvbiBvZiB0aGUgbmF0aXZlIHRva2VuIGFuZCB0aGUgRVRIIHRva2VuLgBUTWF4RXRoRXh0cmluc2ljV2VpZ2h0jQdAAACy01lb8AYAAAAAAAAAADBNASBUaGUgZnJhY3Rpb24gdGhlIG1heGltdW0gZXh0cmluc2ljIHdlaWdodCBgZXRoX3RyYW5zYWN0YCBleHRyaW5zaWNzIGFyZSBjYXBwZWQgdG8uAFEBIFRoaXMgaXMgbm90IGEgc2VjdXJpdHkgbWVhc3VyZSBidXQgYSByZXF1aXJlbWVudCBkdWUgdG8gaG93IHdlIG1hcCBnYXMgdG8gYChXZWlnaHQsXQEgU3RvcmFnZURlcG9zaXQpYC4gVGhlIG1hcHBpbmcgbWlnaHQgZGVyaXZlIGEgYFdlaWdodGAgdGhhdCBpcyB0b28gbGFyZ2UgdG8gZml0IGludG8gYW78IGV4dHJpbnNpYy4gSW4gdGhpcyBjYXNlIHdlIGNhcCBpdCB0byB0aGUgbGltaXQgc3BlY2lmaWVkIGhlcmUuAGUBIGBldGhfdHJhbnNhY3RgIHRyYW5zYWN0aW9ucyB0aGF0IHVzZSBtb3JlIHdlaWdodCB0aGFuIHNwZWNpZmllZCB3aWxsIGZhaWwgd2l0aCBhbiBvdXQgb2ZJASBnYXMgZXJyb3IgZHVyaW5nIGV4ZWN1dGlvbi4gTGFyZ2VyIGZyYWN0aW9ucyB3aWxsIGFsbG93IG1vcmUgdHJhbnNhY3Rpb25zIHRvIHJ1bi5NASBTbWFsbGVyIHZhbHVlcyB3YXN0ZSBsZXNzIGJsb2NrIHNwYWNlOiBDaG9vc2UgYXMgc21hbGwgYXMgcG9zc2libGUgYW5kIGFzIGxhcmdlIGFzLCBuZWNlc3NhcnkuAEQgIERlZmF1bHQ6IGAwLjVgLgAwRGVidWdFbmFibGVkmQEEAAQtASBBbGxvd3MgZGVidWctbW9kZSBjb25maWd1cmF0aW9uLCBzdWNoIGFzIGVuYWJsaW5nIHVubGltaXRlZCBjb250cmFjdCBzaXplLgAcQXV0b01hcJkBBAEYMQEgV2hlbiBlbmFibGVkLCBhY2NvdW50cyBhcmUgYXV0b21hdGljYWxseSBtYXBwZWQgb24gY3JlYXRpb24gYW5kIHVubWFwcGVkIG9uRQEga2lsbCB2aWEgW2BBdXRvTWFwcGVyYF0uIFRoaXMgcmVtb3ZlcyB0aGUgbmVlZCBmb3IgZXhwbGljaXQgYG1hcF9hY2NvdW50YCBjYWxscy4AOQEgUmVxdWlyZXMgYGZyYW1lX3N5c3RlbTo6Q29uZmlnOjpPbk5ld0FjY291bnRgIGFuZCBgT25LaWxsZWRBY2NvdW50YCB0byBiZSBzZXQdASB0byBbYEF1dG9NYXBwZXJgXS4gV2hlbiBlbmFibGVkLCB0aGUgYG1hcF9hY2NvdW50YCBhbmQgYHVubWFwX2FjY291bnRgcCBkaXNwYXRjaGFibGVzIGFyZSBkaXNhYmxlZC4AIEdhc1NjYWxlOBCghgEARB0BIFRoaXMgZGV0ZXJtaW5lcyB0aGUgcmVsYXRpdmUgc2NhbGUgb2Ygb3VyIGdhcyBwcmljZSBhbmQgZ2FzIGVzdGltYXRlcy4AVQEgQnkgZGVmYXVsdCwgdGhlIGdhcyBwcmljZSAoaW4gd2VpKSBpcyBgRmVlSW5mbzo6bmV4dF9mZWVfbXVsdGlwbGllcigpYCBtdWx0aXBsaWVkIGJ5XQEgYE5hdGl2ZVRvRXRoUmF0aW9gLiBgR2FzU2NhbGVgIGFsbG93cyB0byBzY2FsZSB0aGlzIHZhbHVlOiB0aGUgYWN0dWFsIGdhcyBwcmljZSBpcyB0aGWwIGRlZmF1bHQgZ2FzIHByaWNlIG11bHRpcGxpZWQgYnkgYEdhc1NjYWxlYC4AWQEgQXMgYSBjb25zZXF1ZW5jZSwgZ2FzIGNvc3QgKGdhcyBlc3RpbWF0ZXMgYW5kIGFjdHVhbCBnYXMgdXNhZ2UgZHVyaW5nIHRyYW5zYWN0aW9uKSBpc1EBIHNjYWxlZCBkb3duIGJ5IHRoZSBzYW1lIGZhY3Rvci4gVGh1cywgdGhlIHRvdGFsIHRyYW5zYWN0aW9uIGNvc3QgaXMgbm90IGFmZmVjdGVkIGJ5bQEgYEdhc1NjYWxlYCDigJPCoGFwYXJ0IGZyb20gcm91bmRpbmcgZGlmZmVyZW5jZXM6IHRoZSB0cmFuc2FjdGlvbiBjb3N0IGlzIGFsd2F5cyBhIG11bHRpcGxlYQEgb2YgdGhlIGdhcyBwcmljZSBhbmQgaXMgZGVyaXZlZCBieSByb3VuZGVkIHVwLCBzbyB0aGF0IHdpdGggaGlnaGVyIGBHYXNTY2FsZXNgIHRoaXMgY2FuEQEgbGVhZCB0byBoaWdoZXIgZ2FzIGNvc3QgYXMgdGhlIHJvdW5kaW5nIGRpZmZlcmVuY2Ugd291bGQgYmUgbGFyZ2VyLgBlASBUaGUgbWFpbiBwdXJwb3NlIG9mIGNoYW5naW5nIHRoZSBgR2FzU2NhbGVgIGlzIHRvIHR1bmUgdGhlIGdhcyBjb3N0IHNvIHRoYXQgaXQgaXMgY2xvc2VySQEgdG8gc3RhbmRhcmQgRVZNIGdhcyBjb3N0IGFuZCBjb250cmFjdHMgd2lsbCBub3QgcnVuIG91dCBvZiBnYXMgd2hlbiB0b29scyBvciBjb2RleCBhc3N1bWUgaGFyZCBjb2RlZCBnYXMgbGltaXRzLgCYIFJlcXVpcmVtZW50OiBgR2FzU2NhbGVgIG11c3Qgbm90IGJlIDAAAakOAAQsUnVudGltZUNhbGwgBGwgVGhlIG92ZXJhcmNoaW5nIGNhbGwgdHlwZS4APAAAREFzc2V0c1ByZWNvbXBpbGVzAURBc3NldHNQcmVjb21waWxlcww4TmV4dEFzc2V0SW5kZXgBADgQAAAAAAjMIFRoZSBuZXh0IGF2YWlsYWJsZSBhc3NldCBpbmRleCBmb3IgZm9yZWlnbiBhc3NldHMuGQEgVGhpcyBpcyBpbmNyZW1lbnRlZCBlYWNoIHRpbWUgYSBuZXcgZm9yZWlnbiBhc3NldCBtYXBwaW5nIGlzIGNyZWF0ZWQuAGhBc3NldEluZGV4VG9Gb3JlaWduQXNzZXRJZAABBAY4OQIEAARRASBNYXBwaW5nIGFuIGFzc2V0IGluZGV4IChkZXJpdmVkIGZyb20gdGhlIHByZWNvbXBpbGUgYWRkcmVzcykgdG8gYSBgRm9yZWlnbkFzc2V0SWRgLgBoRm9yZWlnbkFzc2V0SWRUb0Fzc2V0SW5kZXgAAQQCOQI4BAAEXQEgTWFwcGluZyBhIGBGb3JlaWduQXNzZXRJZGAgdG8gYW4gYXNzZXQgaW5kZXggKHVzZWQgZm9yIGRlcml2aW5nIHByZWNvbXBpbGUgYWRkcmVzc2VzKS4AAAAAAAQ4Rm9yZWlnbkFzc2V0SWQ5AggpASBUaGUgZm9yZWlnbiBhc3NldCBJRCB0eXBlLiBUaGlzIG11c3QgbWF0Y2ggdGhlIGBBc3NldElkYCB0eXBlIHVzZWQgYnkgdGhltCBgcGFsbGV0X2Fzc2V0c2AgaW5zdGFuY2UgZm9yIGZvcmVpZ24gYXNzZXRzLgA9AABcQXNzZXRzUHJlY29tcGlsZXNQZXJtaXQBXEFzc2V0c1ByZWNvbXBpbGVzUGVybWl0BBhOb25jZXMBAQgCAq0OBQWAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAceCBOb25jZXMgZm9yIHBlcm1pdCBzaWduYXR1cmVzLtggTWFwcGluZzogKHZlcmlmeWluZ19jb250cmFjdCwgb3duZXJfYWRkcmVzcykgPT4gbm9uY2UANQEgVXNlcyBCbGFrZTJfMTI4Q29uY2F0IGZvciB0aGUgZmlyc3Qga2V5IHRvIHByZXZlbnQgc3RvcmFnZSBjb2xsaXNpb24gYXR0YWNrcyEBIHdoZW4gdGhlIHZlcmlmeWluZ19jb250cmFjdCBhZGRyZXNzIGNvdWxkIGJlIGluZmx1ZW5jZWQgYnkgYW4gYXR0YWNrZXIuADEBIE5vdGU6IEVJUC0yNjEyIHNwZWNpZmllcyB1aW50MjU2IG5vbmNlLiBXZSBzdG9yZSBhcyBVMjU2IGZvciBjb21wYXRpYmlsaXR5LgAAAAQcQ2hhaW5JZCggQhsPGQAAAAAEvCBUaGUgY2hhaW4gSUQgdXNlZCBpbiBFSVAtNzEyIGRvbWFpbiBzZXBhcmF0b3IuAAGxDgAAAD4AAEhWZXN0aW5nUHJlY29tcGlsZXMAAAAAAAAAPwRJASBNaW5pbWFsIHBhbGxldCBwcm92aWRpbmcgYSBgUGFsbGV0PFQ+YCB0eXBlIGZvciB0aGUgRlJBTUUgYmVuY2htYXJraW5nIG1hY2hpbmVyeS4ASFN0YXRlVHJpZU1pZ3JhdGlvbgFIU3RhdGVUcmllTWlncmF0aW9uDEBNaWdyYXRpb25Qcm9jZXNzAQAZBTgAAAAAAAAAAAAAAAAAABBQIE1pZ3JhdGlvbiBwcm9ncmVzcy4AXQEgVGhpcyBzdG9yZXMgdGhlIHNuYXBzaG90IG9mIHRoZSBsYXN0IG1pZ3JhdGVkIGtleXMuIEl0IGNhbiBiZSBzZXQgaW50byBtb3Rpb24gYW5kIG1vdmXUIGZvcndhcmQgYnkgYW55IG9mIHRoZSBtZWFucyBwcm92aWRlZCBieSB0aGlzIHBhbGxldC4AKEF1dG9MaW1pdHMBABEFBAAM1CBUaGUgbGltaXRzIHRoYXQgYXJlIGltcG9zZWQgb24gYXV0b21hdGljIG1pZ3JhdGlvbnMuANQgSWYgc2V0IHRvIE5vbmUsIHRoZW4gbm8gYXV0b21hdGljIG1pZ3JhdGlvbiBoYXBwZW5zLgBgU2lnbmVkTWlncmF0aW9uTWF4TGltaXRzAAAVBQQADOAgVGhlIG1heGltdW0gbGltaXRzIHRoYXQgdGhlIHNpZ25lZCBtaWdyYXRpb24gY291bGQgdXNlLgC0IElmIG5vdCBzZXQsIG5vIHNpZ25lZCBzdWJtaXNzaW9uIGlzIGFsbG93ZWQuAAENBQABMQkABCRNYXhLZXlMZW44EAACAABUtCBNYXhpbWFsIG51bWJlciBvZiBieXRlcyB0aGF0IGEga2V5IGNhbiBoYXZlLgCwIEZSQU1FIGl0c2VsZiBkb2VzIG5vdCBsaW1pdCB0aGUga2V5IGxlbmd0aC4BASBUaGUgY29uY3JldGUgdmFsdWUgbXVzdCB0aGVyZWZvcmUgZGVwZW5kIG9uIHlvdXIgc3RvcmFnZSB1c2FnZS5ZASBBIFtgZnJhbWVfc3VwcG9ydDo6c3RvcmFnZTo6U3RvcmFnZU5NYXBgXSBmb3IgZXhhbXBsZSBjYW4gaGF2ZSBhbiBhcmJpdHJhcnkgbnVtYmVyIG9mRQEga2V5cyB3aGljaCBhcmUgdGhlbiBoYXNoZWQgYW5kIGNvbmNhdGVuYXRlZCwgcmVzdWx0aW5nIGluIGFyYml0cmFyaWx5IGxvbmcga2V5cy4AQQEgVXNlIHRoZSAqc3RhdGUgbWlncmF0aW9uIFJQQyogdG8gcmV0cmlldmUgdGhlIGxlbmd0aCBvZiB0aGUgbG9uZ2VzdCBrZXkgaW4geW91cgEBIHN0b3JhZ2U6IDxodHRwczovL2dpdGh1Yi5jb20vcGFyaXR5dGVjaC9zdWJzdHJhdGUvaXNzdWVzLzExNjQyPgApASBUaGUgbWlncmF0aW9uIHdpbGwgaGFsdCB3aXRoIGEgYEhhbHRlZGAgZXZlbnQgaWYgdGhpcyB2YWx1ZSBpcyB0b28gc21hbGwuSQEgU2luY2UgdGhlcmUgaXMgbm8gcmVhbCBwZW5hbHR5IGZyb20gb3Zlci1lc3RpbWF0aW5nLCBpdCBpcyBhZHZpc2VkIHRvIHVzZSBhIGxhcmdlgCB2YWx1ZS4gVGhlIGRlZmF1bHQgaXMgNTEyIGJ5dGUuAIAgU29tZSBrZXkgbGVuZ3RocyBmb3IgcmVmZXJlbmNlOtAgLSBbYGZyYW1lX3N1cHBvcnQ6OnN0b3JhZ2U6OlN0b3JhZ2VWYWx1ZWBdOiAzMiBieXRlyCAtIFtgZnJhbWVfc3VwcG9ydDo6c3RvcmFnZTo6U3RvcmFnZU1hcGBdOiA2NCBieXRl4CAtIFtgZnJhbWVfc3VwcG9ydDo6c3RvcmFnZTo6U3RvcmFnZURvdWJsZU1hcGBdOiA5NiBieXRlAEggRm9yIG1vcmUgaW5mbyBzZWVFASA8aHR0cHM6Ly93d3cuc2hhd250YWJyaXppLmNvbS9ibG9nL2ludGVyYWN0aW5nLXdpdGgtdGhlLXN1YnN0cmF0ZS1ycGMtZW5kcG9pbnQvPgABOQkAAABGAAA8Tm9taW5hdGlvblBvb2xzATxOb21pbmF0aW9uUG9vbHNUQFRvdGFsVmFsdWVMb2NrZWQBAJUBQAAAAAAAAAAAAAAAAAAAAAAUjCBUaGUgc3VtIG9mIGZ1bmRzIGFjcm9zcyBhbGwgcG9vbHMuAHEBIFRoaXMgbWlnaHQgYmUgbG93ZXIgYnV0IG5ldmVyIGhpZ2hlciB0aGFuIHRoZSBzdW0gb2YgYHRvdGFsX2JhbGFuY2VgIG9mIGFsbCBbYFBvb2xNZW1iZXJzYF1ZASBiZWNhdXNlIGNhbGxpbmcgYHBvb2xfd2l0aGRyYXdfdW5ib25kZWRgIG1pZ2h0IGRlY3JlYXNlIHRoZSB0b3RhbCBzdGFrZSBvZiB0aGUgcG9vbCdzKQEgYGJvbmRlZF9hY2NvdW50YCB3aXRob3V0IGFkanVzdGluZyB0aGUgcGFsbGV0LWludGVybmFsIGBVbmJvbmRpbmdQb29sYCdzLgAsTWluSm9pbkJvbmQBAJUBQAAAAAAAAAAAAAAAAAAAAAAEnCBNaW5pbXVtIGFtb3VudCB0byBib25kIHRvIGpvaW4gYSBwb29sLgA0TWluQ3JlYXRlQm9uZAEAlQFAAAAAAAAAAAAAAAAAAAAAABygIE1pbmltdW0gYm9uZCByZXF1aXJlZCB0byBjcmVhdGUgYSBwb29sLgBlASBUaGlzIGlzIHRoZSBhbW91bnQgdGhhdCB0aGUgZGVwb3NpdG9yIG11c3QgcHV0IGFzIHRoZWlyIGluaXRpYWwgc3Rha2UgaW4gdGhlIHBvb2wsIGFzIGFuiCBpbmRpY2F0aW9uIG9mICJza2luIGluIHRoZSBnYW1lIi4AaQEgVGhpcyBpcyB0aGUgdmFsdWUgdGhhdCB3aWxsIGFsd2F5cyBleGlzdCBpbiB0aGUgc3Rha2luZyBsZWRnZXIgb2YgdGhlIHBvb2wgYm9uZGVkIGFjY291bnSAIHdoaWxlIGFsbCBvdGhlciBhY2NvdW50cyBsZWF2ZS4AIE1heFBvb2xzAAA4BAAIaQEgTWF4aW11bSBudW1iZXIgb2Ygbm9taW5hdGlvbiBwb29scyB0aGF0IGNhbiBleGlzdC4gSWYgYE5vbmVgLCB0aGVuIGFuIHVuYm91bmRlZCBudW1iZXIgb2ZEIHBvb2xzIGNhbiBleGlzdC4AOE1heFBvb2xNZW1iZXJzAAA4BAAISQEgTWF4aW11bSBudW1iZXIgb2YgbWVtYmVycyB0aGF0IGNhbiBleGlzdCBpbiB0aGUgc3lzdGVtLiBJZiBgTm9uZWAsIHRoZW4gdGhlIGNvdW50uCBtZW1iZXJzIGFyZSBub3QgYm91bmQgb24gYSBzeXN0ZW0gd2lkZSBiYXNpcy4AVE1heFBvb2xNZW1iZXJzUGVyUG9vbAAAOAQACEEBIE1heGltdW0gbnVtYmVyIG9mIG1lbWJlcnMgdGhhdCBtYXkgYmVsb25nIHRvIHBvb2wuIElmIGBOb25lYCwgdGhlbiB0aGUgY291bnQgb2aoIG1lbWJlcnMgaXMgbm90IGJvdW5kIG9uIGEgcGVyIHBvb2wgYmFzaXMuAExHbG9iYWxNYXhDb21taXNzaW9uAAA9BQQADGkBIFRoZSBtYXhpbXVtIGNvbW1pc3Npb24gdGhhdCBjYW4gYmUgY2hhcmdlZCBieSBhIHBvb2wuIFVzZWQgb24gY29tbWlzc2lvbiBwYXlvdXRzIHRvIGJvdW5kJQEgcG9vbCBjb21taXNzaW9ucyB0aGF0IGFyZSA+IGBHbG9iYWxNYXhDb21taXNzaW9uYCwgbmVjZXNzYXJ5IGlmIGEgZnV0dXJlDQEgYEdsb2JhbE1heENvbW1pc3Npb25gIGlzIGxvd2VyIHRoYW4gc29tZSBjdXJyZW50IHBvb2wgY29tbWlzc2lvbnMuACxQb29sTWVtYmVycwABBAUEtQ4EAAxAIEFjdGl2ZSBtZW1iZXJzLgDQIFRXT1gtTk9URTogU0FGRSBzaW5jZSBgQWNjb3VudElkYCBpcyBhIHNlY3VyZSBoYXNoLgBUQ291bnRlckZvclBvb2xNZW1iZXJzAQA4EAAAAAAErENvdW50ZXIgZm9yIHRoZSByZWxhdGVkIGNvdW50ZWQgc3RvcmFnZSBtYXAALEJvbmRlZFBvb2xzAAEEBTjBDgQABGggU3RvcmFnZSBmb3IgYm9uZGVkIHBvb2xzLgBUQ291bnRlckZvckJvbmRlZFBvb2xzAQA4EAAAAAAErENvdW50ZXIgZm9yIHRoZSByZWxhdGVkIGNvdW50ZWQgc3RvcmFnZSBtYXAALFJld2FyZFBvb2xzAAEEBTjRDgQACHUBIFJld2FyZCBwb29scy4gVGhpcyBpcyB3aGVyZSB0aGVyZSByZXdhcmRzIGZvciBlYWNoIHBvb2wgYWNjdW11bGF0ZS4gV2hlbiBhIG1lbWJlcnMgcGF5b3V0IGlzWQEgY2xhaW1lZCwgdGhlIGJhbGFuY2UgY29tZXMgb3V0IG9mIHRoZSByZXdhcmQgcG9vbC4gS2V5ZWQgYnkgdGhlIGJvbmRlZCBwb29scyBhY2NvdW50LgBUQ291bnRlckZvclJld2FyZFBvb2xzAQA4EAAAAAAErENvdW50ZXIgZm9yIHRoZSByZWxhdGVkIGNvdW50ZWQgc3RvcmFnZSBtYXAAPFN1YlBvb2xzU3RvcmFnZQABBAU41Q4EAAgZASBHcm91cHMgb2YgdW5ib25kaW5nIHBvb2xzLiBFYWNoIGdyb3VwIG9mIHVuYm9uZGluZyBwb29scyBiZWxvbmdzIHRvIGEpASBib25kZWQgcG9vbCwgaGVuY2UgdGhlIG5hbWUgc3ViLXBvb2xzLiBLZXllZCBieSB0aGUgYm9uZGVkIHBvb2xzIGFjY291bnQuAGRDb3VudGVyRm9yU3ViUG9vbHNTdG9yYWdlAQA4EAAAAAAErENvdW50ZXIgZm9yIHRoZSByZWxhdGVkIGNvdW50ZWQgc3RvcmFnZSBtYXAAIE1ldGFkYXRhAQEEBTjgBAAEXCBNZXRhZGF0YSBmb3IgdGhlIHBvb2wuAEhDb3VudGVyRm9yTWV0YWRhdGEBADgQAAAAAASsQ291bnRlciBmb3IgdGhlIHJlbGF0ZWQgY291bnRlZCBzdG9yYWdlIG1hcAAoTGFzdFBvb2xJZAEAOBAAAAAABNAgRXZlciBpbmNyZWFzaW5nIG51bWJlciBvZiBhbGwgcG9vbHMgY3JlYXRlZCBzbyBmYXIuAExSZXZlcnNlUG9vbElkTG9va3VwAAEEBQQ4BAAQ3CBBIHJldmVyc2UgbG9va3VwIGZyb20gdGhlIHBvb2wncyBhY2NvdW50IGlkIHRvIGl0cyBpZC4AdQEgVGhpcyBpcyBvbmx5IHVzZWQgZm9yIHNsYXNoaW5nIGFuZCBvbiBhdXRvbWF0aWMgd2l0aGRyYXcgdXBkYXRlLiBJbiBhbGwgb3RoZXIgaW5zdGFuY2VzLCB0aGUlASBwb29sIGlkIGlzIHVzZWQsIGFuZCB0aGUgYWNjb3VudHMgYXJlIGRldGVybWluaXN0aWNhbGx5IGRlcml2ZWQgZnJvbSBpdC4AdENvdW50ZXJGb3JSZXZlcnNlUG9vbElkTG9va3VwAQA4EAAAAAAErENvdW50ZXIgZm9yIHRoZSByZWxhdGVkIGNvdW50ZWQgc3RvcmFnZSBtYXAAQENsYWltUGVybWlzc2lvbnMBAQQFBEUFBAIEAQEgTWFwIGZyb20gYSBwb29sIG1lbWJlciBhY2NvdW50IHRvIHRoZWlyIG9wdGVkIGNsYWltIHBlcm1pc3Npb24uAAElBQABPQkADCBQYWxsZXRJZEULIHB5L25vcGxzBIQgVGhlIG5vbWluYXRpb24gcG9vbCdzIHBhbGxldCBpZC4ASE1heFBvaW50c1RvQmFsYW5jZQwECjAdASBUaGUgbWF4aW11bSBwb29sIHBvaW50cy10by1iYWxhbmNlIHJhdGlvIHRoYXQgYW4gYG9wZW5gIHBvb2wgY2FuIGhhdmUuAFUBIFRoaXMgaXMgaW1wb3J0YW50IGluIHRoZSBldmVudCBzbGFzaGluZyB0YWtlcyBwbGFjZSBhbmQgdGhlIHBvb2wncyBwb2ludHMtdG8tYmFsYW5jZXwgcmF0aW8gYmVjb21lcyBkaXNwcm9wb3J0aW9uYWwuAGUBIE1vcmVvdmVyLCB0aGlzIHJlbGF0ZXMgdG8gdGhlIGBSZXdhcmRDb3VudGVyYCB0eXBlIGFzIHdlbGwsIGFzIHRoZSBhcml0aG1ldGljIG9wZXJhdGlvbnNVASBhcmUgYSBmdW5jdGlvbiBvZiBudW1iZXIgb2YgcG9pbnRzLCBhbmQgYnkgc2V0dGluZyB0aGlzIHZhbHVlIHRvIGUuZy4gMTAsIHlvdSBlbnN1cmVlASB0aGF0IHRoZSB0b3RhbCBudW1iZXIgb2YgcG9pbnRzIGluIHRoZSBzeXN0ZW0gYXJlIGF0IG1vc3QgMTAgdGltZXMgdGhlIHRvdGFsX2lzc3VhbmNlIG9mnCB0aGUgY2hhaW4sIGluIHRoZSBhYnNvbHV0ZSB3b3JzZSBjYXNlLgBJASBGb3IgYSB2YWx1ZSBvZiAxMCwgdGhlIHRocmVzaG9sZCB3b3VsZCBiZSBhIHBvb2wgcG9pbnRzLXRvLWJhbGFuY2UgcmF0aW8gb2YgMTA6MS4xASBTdWNoIGEgc2NlbmFyaW8gd291bGQgYWxzbyBiZSB0aGUgZXF1aXZhbGVudCBvZiB0aGUgcG9vbCBiZWluZyA5MCUgc2xhc2hlZC4AME1heFVuYm9uZGluZzgQIAAAAAQ9ASBUaGUgbWF4aW11bSBudW1iZXIgb2Ygc2ltdWx0YW5lb3VzIHVuYm9uZGluZyBjaHVua3MgdGhhdCBjYW4gZXhpc3QgcGVyIG1lbWJlci4AAe0OAAQ0UmV3YXJkQ291bnRlco0HMKggVGhlIHR5cGUgdGhhdCBpcyB1c2VkIGZvciByZXdhcmQgY291bnRlci4ANQEgVGhlIGFyaXRobWV0aWMgb2YgdGhlIHJld2FyZCBjb3VudGVyIG1pZ2h0IHNhdHVyYXRlIGJhc2VkIG9uIHRoZSBzaXplIG9mIHRoZWUBIGBDdXJyZW5jeTo6QmFsYW5jZWAuIElmIHRoaXMgaGFwcGVucywgb3BlcmF0aW9ucyBmYWlscy4gTm9uZXRoZWxlc3MsIHRoaXMgdHlwZSBzaG91bGQgYmVlASBjaG9zZW4gc3VjaCB0aGF0IHRoaXMgZmFpbHVyZSBhbG1vc3QgbmV2ZXIgaGFwcGVucywgYXMgaWYgaXQgaGFwcGVucywgdGhlIHBvb2wgYmFzaWNhbGx5ZQEgbmVlZHMgdG8gYmUgZGlzbWFudGxlZCAob3IgYWxsIHBvb2xzIG1pZ3JhdGVkIHRvIGEgbGFyZ2VyIGBSZXdhcmRDb3VudGVyYCB0eXBlLCB3aGljaCBpczwgYSBQSVRBIHRvIGRvKS4AYQEgU2VlIHRoZSBpbmxpbmUgY29kZSBkb2NzIG9mIGBNZW1iZXI6OnBlbmRpbmdfcmV3YXJkc2AgYW5kIGBSZXdhcmRQb29sOjp1cGRhdGVfcmVjb3JkZWRgZQEgZm9yIGV4YW1wbGUgYW5hbHlzaXMuIEEgW2BzcF9ydW50aW1lOjpGaXhlZFUxMjhgXSBzaG91bGQgYmUgZmluZSBmb3IgY2hhaW5zIHdpdGggYmFsYW5jZVEBIHR5cGVzIHNpbWlsYXIgdG8gdGhhdCBvZiBQb2xrYWRvdCBhbmQgS3VzYW1hLCBpbiB0aGUgYWJzZW5jZSBvZiBzZXZlcmUgc2xhc2hpbmcgKG9yPQEgcHJldmVudGVkIHZpYSBhIHJlYXNvbmFibGUgYE1heFBvaW50c1RvQmFsYW5jZWApLCBmb3IgbWFueSBtYW55IHllYXJzIHRvIGNvbWUuAFAAACRWb3Rlckxpc3QBJFZvdGVyTGlzdBwkTGlzdE5vZGVzAAEEBQT1DgQADIAgQSBzaW5nbGUgbm9kZSwgd2l0aGluIHNvbWUgYmFnLgAFASBOb2RlcyBzdG9yZSBsaW5rcyBmb3J3YXJkIGFuZCBiYWNrIHdpdGhpbiB0aGVpciByZXNwZWN0aXZlIGJhZ3MuAExDb3VudGVyRm9yTGlzdE5vZGVzAQA4EAAAAAAErENvdW50ZXIgZm9yIHRoZSByZWxhdGVkIGNvdW50ZWQgc3RvcmFnZSBtYXAAIExpc3RCYWdzAAEEBSj5DgQADGQgQSBiYWcgc3RvcmVkIGluIHN0b3JhZ2UuABkBIFN0b3JlcyBhIGBCYWdgIHN0cnVjdCwgd2hpY2ggc3RvcmVzIGhlYWQgYW5kIHRhaWwgcG9pbnRlcnMgdG8gaXRzZWxmLgBQTmV4dE5vZGVBdXRvUmViYWdnZWQAAAQEAAgFASBQb2ludGVyIHRoYXQgcmVtZW1iZXJzIHRoZSBuZXh0IG5vZGUgdGhhdCB3aWxsIGJlIGF1dG8tcmViYWdnZWQuAQEgV2hlbiBgTm9uZWAsIHRoZSBuZXh0IHNjYW4gd2lsbCBzdGFydCBmcm9tIHRoZSBsaXN0IGhlYWQgYWdhaW4uABBMb2NrAAAQBAAQhCBMb2NrIGFsbCB1cGRhdGVzIHRvIHRoaXMgcGFsbGV0LgA5ASBJZiBhbnkgbm9kZXMgbmVlZHMgdXBkYXRpbmcsIHJlbW92YWwgb3IgYWRkaXRpb24gZHVlIHRvIGEgdGVtcG9yYXJ5IGxvY2ssIHRoZXQgW2BDYWxsOjpyZWJhZ2BdIGNhbiBiZSB1c2VkLgAwUGVuZGluZ1JlYmFnAAEEBQQQBAA4HQEgQWNjb3VudHMgdGhhdCBmYWlsZWQgdG8gYmUgaW5zZXJ0ZWQgaW50byB0aGUgYmFncy1saXN0IGR1ZSB0byBsb2NraW5nLlkBIFRoZXNlIGFjY291bnRzIHdpbGwgYmUgcHJvY2Vzc2VkIHdpdGggcHJpb3JpdHkgaW4gYG9uX2lkbGVgIG9yIHZpYSBgcmViYWdgIGV4dHJpbnNpYy4ATQEgTm90ZTogVGhpcyBzdG9yYWdlIGlzIGludGVudGlvbmFsbHkgdW5ib3VuZGVkLiBUaGUgZm9sbG93aW5nIGZhY3RvcnMgbWFrZSBib3VuZGluZzQgdW5uZWNlc3Nhcnk6UQEgMS4gVGhlIHN0b3JhZ2UgdXNhZ2UgaXMgdGVtcG9yYXJ5IC0gYWNjb3VudHMgYXJlIHByb2Nlc3NlZCBhbmQgcmVtb3ZlZCBpbiBgb25faWRsZWBFASAyLiBUaGUgcGFsbGV0IGlzIG9ubHkgbG9ja2VkIGR1cmluZyBzbmFwc2hvdCBnZW5lcmF0aW9uLCB3aGljaCBpcyB3ZWlnaHQtbGltaXRlZG0BIDMuIFByb2Nlc3NpbmcgaGFwcGVucyBhdCBtdWx0aXBsZSBhY2NvdW50cyBwZXIgYmxvY2ssIGNsZWFyaW5nIGV2ZW4gbGFyZ2UgYmFja2xvZ3MgcXVpY2tseUEBIDQuIEFuIGFydGlmaWNpYWwgbGltaXQgY291bGQgYmUgZXhoYXVzdGVkIGJ5IGFuIGF0dGFja2VyLCBwcmV2ZW50aW5nIGxlZ2l0aW1hdGUBASAgICBhdXRvLXJlYmFnZ2luZyBmcm9tIHB1dHRpbmcgYWNjb3VudHMgaW4gdGhlIGNvcnJlY3QgcG9zaXRpb24AaQEgV2UgZG9uJ3Qgc3RvcmUgdGhlIHNjb3JlIGhlcmUgLSBpdCdzIGFsd2F5cyBmZXRjaGVkIGZyb20gYFNjb3JlUHJvdmlkZXJgIHdoZW4gcHJvY2Vzc2luZyxpASBlbnN1cmluZyB3ZSB1c2UgdGhlIG1vc3QgdXAtdG8tZGF0ZSBzY29yZSAoYWNjb3VudHMgbWF5IGhhdmUgYmVlbiBzbGFzaGVkLCByZXdhcmRlZCwgZXRjLnQgd2hpbGUgd2FpdGluZyBpbiB0aGUgcXVldWUpLgBYQ291bnRlckZvclBlbmRpbmdSZWJhZwEAOBAAAAAABKxDb3VudGVyIGZvciB0aGUgcmVsYXRlZCBjb3VudGVkIHN0b3JhZ2UgbWFwAAFdBQABRQkACDRCYWdUaHJlc2hvbGRz/Q4JGSEDVaD8AQAAAADapkYCAAAAAG5zmwIAAAAAeZf8AgAAAADQ3msDAAAAADNY6wMAAAAADV99BAAAAACapiQFAAAAALFG5AUAAAAAZ8q/BgAAAADWQLsHAAAAAFNQ2wgAAAAAcUwlCgAAAAA2T58LAAAAAABWUA0AAAAAmGJADwAAAAAboXgRAAAAAGWTAxQAAAAAzULtFgAAAAAgeUMaAAAAAOQBFh4AAAAAHvV2IgAAAAD5DHsnAAAAAOAHOi0AAAAA6BjPMwAAAACMaFk7AAAAAC6o/EMAAAAACrvhTQAAAADDdzdZAAAAABmGM2YAAAAA6FwTdQAAAAAYZR2GAAAAAOhGopkAAAAAvmf+rwAAAACEn5vJAAAAAK0t8+YAAAAAKPePCAEAAADYFxEvAQAAAL7TLFsBAAAAwvWzjQEAAAAKrJXHAQAAACv04wkCAAAAIqzYVQIAAAAQYNusAgAAAC7whxADAAAAfC62ggMAAAArmIIFBAAAABdUWJsEAAAAnaX8RgUAAAD/CZwLBgAAAGw+2ewGAAAAxHXe7gcAAACWD3EWCQAAAKotCGkKAAAA+JLm7AsAAACMRjipDQAAAJeGNKYPAAAAbaxE7REAAAB4uTCJFAAAABZgUoYXAAAA5HnP8hoAAABAAN3eHgAAAP/DC10jAAAAgk+ggigAAAAnk/dnLgAAAKY4+ig1AAAASL+g5TwAAABH0orCRQAAAMWlrOlPAAAA9o4Vi1sAAACQg9PdaAAAAGa19yB4AAAAzxvBnIkAAAD8b/KjnQAAAB7vWZW0AAAAwCCS3c4AAACy7QP57AAAAAeJM3YPAQAA0w5j+DYBAAASUpc6ZAEAAOEjDROYAQAAoHIvd9MBAAB4ASGAFwIAAGUz729lAgAAQoWGt74CAAAo54T9JAMAALE/CiaaAwAA0BasWyAEAAAiyLYZugQAAHnH7DdqBQAA4JL79zMGAAA9BeYUGwcAAPcBrdQjCAAA2BCKHFMJAADIqxuIrgoAALLv8IM8DAAA6FjyawQOAAAPfTeuDhAAANWn7vJkEgAAWD8TShIVAAAXU8tfIxgAAFw2ZLimGwAAphoK9awfAAAz8n8iSSQAAEs6TBORKQAAKIgFx50vAAA306fgizYAAP+hIi58PgAA8MShQ5RHAADlrW8t/1EAAAduuzvuXQAAq/AG7JlrAACMbI70QnsAADrWmnYzjQAAuldpXcChAABd2iTwSrkAALZvYJ5C1AAAdlWWDyfzAAAljWx/ihYBAFFp63EUPwEAub5yzIRtAQA8Sxdit6IBAMwvNASo3wEA9yduKnclAgBICzNIb3UCAB1c9egK0QIAD2QQsPs5AwCpBHddMrIDAC3hIf3nOwQAMK+3bKjZBAD7dT5pXo4FADxE5F1hXQYALLk7NYVKBwCo+Mt3LFoIAHpIuQ1dkQkAPT3HBdj1CgANHkLSNI4MABywvnwAYg4AJHljZOF5EAAbje0vwN8SANPpQrX2nhUA6MqZtIXEGADQyIxlUl8cAML1d/lsgCAACrziYGE7JQB0vU3Sk6YqAOxLYciq2zAASLA3bQj4NwDAE4SxVR1AANwr/aEhckkAcLZF7ZciVABs/FH6UWFgAGyTCG1GaG4AnKrohtt5fgDANoN2IeKQAKBkm2U6+KUAKKNM7vYfvgA4WqKXrsvZAEgzNRZdfvkA0MrkUg7OHQEAkKeupGZHAeCdkqUGDXcBMHeO3MKirQHQC7jVOyrsAUCxjAlvyzMCgFGTAm7ZhQKg9tZjo9jjAmC7y4cBhk8DoEX4tjzfygNAgW3oNyxYBEBeIKnQCfoEgI1yRT12swWA81vAN9+HBoBO7Kg4MnsHALGYoQ7vkQiACy+bKj3RCYCiSJQFBD8LAHJMWhMH4gwA2PiXxgXCDgCYkL494OcQAENPZUbBXRMA1hz/fU4vFgCbMrhz32kZAACHddC8HB0A2lbrr2hZIQDay0KB8TMmADyInvdQwysACrfmy9ghMgA0ba1Sr205AFBH6TNeyUEAJO4Y6HVcSwA41LQASVRWAAh9drLC5GIAmBwDmVxJcQCIHlU/OMaBALDLkKFhqZQAKE/lnkBMqgDA5UowQBXDAGDNdDezed///////////6zQIFRoZSBsaXN0IG9mIHRocmVzaG9sZHMgc2VwYXJhdGluZyB0aGUgdmFyaW91cyBiYWdzLgBJASBJZHMgYXJlIHNlcGFyYXRlZCBpbnRvIHVuc29ydGVkIGJhZ3MgYWNjb3JkaW5nIHRvIHRoZWlyIHNjb3JlLiBUaGlzIHNwZWNpZmllcyB0aGVhASB0aHJlc2hvbGRzIHNlcGFyYXRpbmcgdGhlIGJhZ3MuIEFuIGlkJ3MgYmFnIGlzIHRoZSBsYXJnZXN0IGJhZyBmb3Igd2hpY2ggdGhlIGlkJ3Mgc2NvcmW4IGlzIGxlc3MgdGhhbiBvciBlcXVhbCB0byBpdHMgdXBwZXIgdGhyZXNob2xkLgBlASBXaGVuIGlkcyBhcmUgaXRlcmF0ZWQsIGhpZ2hlciBiYWdzIGFyZSBpdGVyYXRlZCBjb21wbGV0ZWx5IGJlZm9yZSBsb3dlciBiYWdzLiBUaGlzIG1lYW5zWQEgdGhhdCBpdGVyYXRpb24gaXMgX3NlbWktc29ydGVkXzogaWRzIG9mIGhpZ2hlciBzY29yZSB0ZW5kIHRvIGNvbWUgYmVmb3JlIGlkcyBvZiBsb3dlci0BIHNjb3JlLCBidXQgcGVlciBpZHMgd2l0aGluIGEgcGFydGljdWxhciBiYWcgYXJlIHNvcnRlZCBpbiBpbnNlcnRpb24gb3JkZXIuAGggIyBFeHByZXNzaW5nIHRoZSBjb25zdGFudABNASBUaGlzIGNvbnN0YW50IG11c3QgYmUgc29ydGVkIGluIHN0cmljdGx5IGluY3JlYXNpbmcgb3JkZXIuIER1cGxpY2F0ZSBpdGVtcyBhcmUgbm90LCBwZXJtaXR0ZWQuAEEBIFRoZXJlIGlzIGFuIGltcGxpZWQgdXBwZXIgbGltaXQgb2YgYFNjb3JlOjpNQVhgOyB0aGF0IHZhbHVlIGRvZXMgbm90IG5lZWQgdG8gYmUhASBzcGVjaWZpZWQgd2l0aGluIHRoZSBiYWcuIEZvciBhbnkgdHdvIHRocmVzaG9sZCBsaXN0cywgaWYgb25lIGVuZHMgd2l0aDEBIGBTY29yZTo6TUFYYCwgdGhlIG90aGVyIG9uZSBkb2VzIG5vdCwgYW5kIHRoZXkgYXJlIG90aGVyd2lzZSBlcXVhbCwgdGhlIHR3b3wgbGlzdHMgd2lsbCBiZWhhdmUgaWRlbnRpY2FsbHkuADggIyBDYWxjdWxhdGlvbgBVASBJdCBpcyByZWNvbW1lbmRlZCB0byBnZW5lcmF0ZSB0aGUgc2V0IG9mIHRocmVzaG9sZHMgaW4gYSBnZW9tZXRyaWMgc2VyaWVzLCBzdWNoIHRoYXRBASB0aGVyZSBleGlzdHMgc29tZSBjb25zdGFudCByYXRpbyBzdWNoIHRoYXQgYHRocmVzaG9sZFtrICsgMV0gPT0gKHRocmVzaG9sZFtrXSAq0CBjb25zdGFudF9yYXRpbykubWF4KHRocmVzaG9sZFtrXSArIDEpYCBmb3IgYWxsIGBrYC4AWQEgVGhlIGhlbHBlcnMgaW4gdGhlIGAvdXRpbHMvZnJhbWUvZ2VuZXJhdGUtYmFnc2AgbW9kdWxlIGNhbiBzaW1wbGlmeSB0aGlzIGNhbGN1bGF0aW9uLgAsICMgRXhhbXBsZXMAUQEgLSBJZiBgQmFnVGhyZXNob2xkczo6Z2V0KCkuaXNfZW1wdHkoKWAsIHRoZW4gYWxsIGlkcyBhcmUgcHV0IGludG8gdGhlIHNhbWUgYmFnLCBhbmSwICAgaXRlcmF0aW9uIGlzIHN0cmljdGx5IGluIGluc2VydGlvbiBvcmRlci5hASAtIElmIGBCYWdUaHJlc2hvbGRzOjpnZXQoKS5sZW4oKSA9PSA2NGAsIGFuZCB0aGUgdGhyZXNob2xkcyBhcmUgZGV0ZXJtaW5lZCBhY2NvcmRpbmcgdG8RASAgIHRoZSBwcm9jZWR1cmUgZ2l2ZW4gYWJvdmUsIHRoZW4gdGhlIGNvbnN0YW50IHJhdGlvIGlzIGVxdWFsIHRvIDIuZQEgLSBJZiBgQmFnVGhyZXNob2xkczo6Z2V0KCkubGVuKCkgPT0gMjAwYCwgYW5kIHRoZSB0aHJlc2hvbGRzIGFyZSBkZXRlcm1pbmVkIGFjY29yZGluZyB0b1kBICAgdGhlIHByb2NlZHVyZSBnaXZlbiBhYm92ZSwgdGhlbiB0aGUgY29uc3RhbnQgcmF0aW8gaXMgYXBwcm94aW1hdGVseSBlcXVhbCB0byAxLjI0OC5hASAtIElmIHRoZSB0aHJlc2hvbGQgbGlzdCBiZWdpbnMgYFsxLCAyLCAzLCAuLi5dYCwgdGhlbiBhbiBpZCB3aXRoIHNjb3JlIDAgb3IgMSB3aWxsIGZhbGzwICAgaW50byBiYWcgMCwgYW4gaWQgd2l0aCBzY29yZSAyIHdpbGwgZmFsbCBpbnRvIGJhZyAxLCBldGMuADAgIyBNaWdyYXRpb24AYQEgSW4gdGhlIGV2ZW50IHRoYXQgdGhpcyBsaXN0IGV2ZXIgY2hhbmdlcywgYSBjb3B5IG9mIHRoZSBvbGQgYmFncyBsaXN0IG11c3QgYmUgcmV0YWluZWQuXQEgV2l0aCB0aGF0IGBMaXN0OjptaWdyYXRlYCBjYW4gYmUgY2FsbGVkLCB3aGljaCB3aWxsIHBlcmZvcm0gdGhlIGFwcHJvcHJpYXRlIG1pZ3JhdGlvbi4AUE1heEF1dG9SZWJhZ1BlckJsb2NrOBAKAAAAEDUBIE1heGltdW0gbnVtYmVyIG9mIGFjY291bnRzIHRoYXQgbWF5IGJlIHJlLWJhZ2dlZCBhdXRvbWF0aWNhbGx5IGluIGBvbl9pZGxlYC4AUQEgQSB2YWx1ZSBvZiBgMGAgKG9idGFpbmVkIGJ5IGNvbmZpZ3VyaW5nIGB0eXBlIE1heEF1dG9SZWJhZ1BlckJsb2NrID0gKCk7YCkgZGlzYWJsZXM0IHRoZSBmZWF0dXJlLgABAQ8ABBRTY29yZSgECQEgVGhlIHR5cGUgdXNlZCB0byBkaWN0YXRlIGEgbm9kZSBwb3NpdGlvbiByZWxhdGl2ZSB0byBvdGhlciBub2Rlcy4EdN1wLaRvd9es939aSNSvfRJGUJ0hzbEm6LrFaBPEop4Yc2NvcmVzBAx3aG8ECQ8YsCBHZXQgdGhlIGN1cnJlbnQgYHNjb3JlYCBvZiBhIGdpdmVuIGFjY291bnQuAGEBIFJldHVybnMgYChjdXJyZW50LCByZWFsX3Njb3JlKWAsIHRoZSBmb3JtZXIgYmVpbmcgdGhlIGN1cnJlbnQgc2NvcmUgdGhhdCB0aGlzIHBhbGxldCBpc1kBIGF3YXJlIG9mLCB3aGljaCBtYXkgb3IgbWF5IG5vdCBiZSB1cCB0byBkYXRlLCBhbmQgdGhlIGxhdHRlciBiZWluZyB0aGUgcmVhbCBzY29yZSwgYXMwIHByb3ZpZGVkIGJ5HQEgSWYgdGhlIHR3byBkaWZmZXIsIGl0IG1lYW5zIHRoaXMgbm9kZSBpcyBlbGlnaWJsZSBmb3IgW2BDYWxsOjpyZWJhZ2BdLgBSAABARGVsZWdhdGVkU3Rha2luZwFARGVsZWdhdGVkU3Rha2luZxAoRGVsZWdhdG9ycwABBAUEDQ8EABCkIE1hcCBvZiBEZWxlZ2F0b3JzIHRvIHRoZWlyIGBEZWxlZ2F0aW9uYC4AYQEgSW1wbGVtZW50YXRpb24gbm90ZTogV2UgYXJlIG5vdCB1c2luZyBhIGRvdWJsZSBtYXAgd2l0aCBgZGVsZWdhdG9yYCBhbmQgYGFnZW50YCBhY2NvdW50YQEgYXMga2V5cyBzaW5jZSB3ZSB3YW50IHRvIHJlc3RyaWN0IGRlbGVnYXRvcnMgdG8gZGVsZWdhdGUgb25seSB0byBvbmUgYWNjb3VudCBhdCBhIHRpbWUuAFBDb3VudGVyRm9yRGVsZWdhdG9ycwEAOBAAAAAABKxDb3VudGVyIGZvciB0aGUgcmVsYXRlZCBjb3VudGVkIHN0b3JhZ2UgbWFwABhBZ2VudHMAAQQFBBEPBAAEiCBNYXAgb2YgYEFnZW50YCB0byB0aGVpciBgTGVkZ2VyYC4AQENvdW50ZXJGb3JBZ2VudHMBADgQAAAAAASsQ291bnRlciBmb3IgdGhlIHJlbGF0ZWQgY291bnRlZCBzdG9yYWdlIG1hcAAAAUkJAAggUGFsbGV0SWRFCyBweS9kbHN0awSQIEluamVjdGVkIGlkZW50aWZpZXIgZm9yIHRoZSBwYWxsZXQuAExTbGFzaFJld2FyZEZyYWN0aW9uPQUQgJaYAARRASBGcmFjdGlvbiBvZiB0aGUgc2xhc2ggdGhhdCBpcyByZXdhcmRlZCB0byB0aGUgY2FsbGVyIG9mIHBlbmRpbmcgc2xhc2ggdG8gdGhlIGFnZW50LgABFQ8AAABTAAA8U3Rha2luZ1JjQ2xpZW50ATxTdGFraW5nUmNDbGllbnQMXEluY29tcGxldGVTZXNzaW9uUmVwb3J0AABlBQQABB0BIEFuIGluY29tcGxldGUgaW5jb21pbmcgc2Vzc2lvbiByZXBvcnQgdGhhdCB3ZSBoYXZlIG5vdCBhY3RlZCB1cG9uIHlldC4AcExhc3RTZXNzaW9uUmVwb3J0RW5kaW5nSW5kZXgAADgEACD8IFRoZSBsYXN0IHNlc3Npb24gcmVwb3J0J3MgYGVuZF9pbmRleGAgdGhhdCB3ZSBoYXZlIGFjdGVkIHVwb24uAGEBIFRoaXMgYWxsb3dzIHRoaXMgcGFsbGV0IHRvIGVuc3VyZSBhIHNlcXVlbnRpYWxseSBpbmNyZWFzaW5nIHNlcXVlbmNlIG9mIHNlc3Npb24gcmVwb3J0c0wgcGFzc2VkIHRvIHN0YWtpbmcuAF0BIE5vdGUgdGhhdCB3aXRoIHRoZSBYQ00gYmVpbmcgdGhlIGJhY2tib25lIG9mIGNvbW11bmljYXRpb24sIHdlIGhhdmUgYSBndWFyYW50ZWUgb24gdGhlYQEgb3JkZXJpbmcgb2YgbWVzc2FnZXMuIEFzIGxvbmcgYXMgdGhlIFJDIHNlbmRzIHNlc3Npb24gcmVwb3J0cyBpbiBvcmRlciwgd2UgX2V2ZW50dWFsbHlfwCByZWNlaXZlIHRoZW0gaW4gdGhlIHNhbWUgY29ycmVjdCBvcmRlciBhcyB3ZWxsLgBQT3V0Z29pbmdWYWxpZGF0b3JTZXQAABkPBAAQ2CBBIHZhbGlkYXRvciBzZXQgdGhhdCBpcyBvdXRnb2luZywgYW5kIHNob3VsZCBiZSBzZW50LgB1ASBUaGlzIHdpbGwgYmUgYXR0ZW1wdGVkIHRvIGJlIHNlbnQsIHBvc3NpYmx5IG9uIGV2ZXJ5IGBvbl9pbml0aWFsaXplYCBjYWxsLCB1bnRpbCBpdCBpcyBzZW50LPQgb3IgdGhlIHNlY29uZCB2YWx1ZSByZWFjaGVzIHplcm8sIGF0IHdoaWNoIHBvaW50IHdlIGRyb3AgaXQuAAFhBQABTQkABChLZXlEZXBvc2l0lQFAsCsGaNIBAAAAAAAAAAAAAAQtASBEZXBvc2l0IGhlbGQgd2hlbiBhIHZhbGlkYXRvciBzZXRzIHNlc3Npb24ga2V5cy4gUmVsZWFzZWQgb24gYHB1cmdlX2tleXNgLgABIQ8AAABUAABITXVsdGlCbG9ja0VsZWN0aW9uAUhNdWx0aUJsb2NrRWxlY3Rpb24cFFJvdW5kAQA4EAAAAAAYrCBJbnRlcm5hbCBjb3VudGVyIGZvciB0aGUgbnVtYmVyIG9mIHJvdW5kcy4AVQEgVGhpcyBpcyB1c2VmdWwgZm9yIGRlLWR1cGxpY2F0aW9uIG9mIHRyYW5zYWN0aW9ucyBzdWJtaXR0ZWQgdG8gdGhlIHBvb2wsIGFuZCBnZW5lcmFsbCBkaWFnbm9zdGljcyBvZiB0aGUgcGFsbGV0LgBNASBUaGlzIGlzIG1lcmVseSBpbmNyZW1lbnRlZCBvbmNlIHBlciBldmVyeSB0aW1lIHRoYXQgYW4gdXBzdHJlYW0gYGVsZWN0YCBpcyBjYWxsZWQuADBDdXJyZW50UGhhc2UBAI0FBAAEPCBDdXJyZW50IHBoYXNlLgA4RGVzaXJlZFRhcmdldHMAAQQFODgEAATMIERlc2lyZWQgbnVtYmVyIG9mIHRhcmdldHMgdG8gZWxlY3QgZm9yIHRoaXMgcm91bmQuAEhQYWdlZFZvdGVyU25hcHNob3QAAQgFBfwlDwQABAEBIFBhZ2luYXRlZCB2b3RlciBzbmFwc2hvdC4gQXQgbW9zdCBbYFQ6OlBhZ2VzYF0ga2V5cyB3aWxsIGV4aXN0LgBYUGFnZWRWb3RlclNuYXBzaG90SGFzaAABCAUF/EAEAAwxASBTYW1lIGFzIFtgUGFnZWRWb3RlclNuYXBzaG90YF0sIGJ1dCBpdCB3aWxsIHN0b3JlIHRoZSBoYXNoIG9mIHRoZSBzbmFwc2hvdC4A/CBUaGUgaGFzaCBpcyBnZW5lcmF0ZWQgdXNpbmcgW2BmcmFtZV9zeXN0ZW06OkNvbmZpZzo6SGFzaGluZ2BdLgBMUGFnZWRUYXJnZXRTbmFwc2hvdAABCAUF/DUPBAAMbCBQYWdpbmF0ZWQgdGFyZ2V0IHNuYXBzaG90LgBZASBGb3IgdGhlIHRpbWUgYmVpbmcsIHNpbmNlIHdlIGFzc3VtZSBvbmUgcGFnZXMgb2YgdGFyZ2V0cywgYXQgbW9zdCBPTkUga2V5IHdpbGwgZXhpc3QuAFxQYWdlZFRhcmdldFNuYXBzaG90SGFzaAABCAUF/EAEAAw1ASBTYW1lIGFzIFtgUGFnZWRUYXJnZXRTbmFwc2hvdGBdLCBidXQgaXQgd2lsbCBzdG9yZSB0aGUgaGFzaCBvZiB0aGUgc25hcHNob3QuAPwgVGhlIGhhc2ggaXMgZ2VuZXJhdGVkIHVzaW5nIFtgZnJhbWVfc3lzdGVtOjpDb25maWc6Okhhc2hpbmdgXS4AAYUFAAFVCQAYNFVuc2lnbmVkUGhhc2U4EDIAAAAEgCBEdXJhdGlvbiBvZiB0aGUgdW5zaWduZWQgcGhhc2UuACxTaWduZWRQaGFzZTgQZAAAAAR4IER1cmF0aW9uIG9mIHRoZSBzaWduZWQgcGhhc2UuAFRTaWduZWRWYWxpZGF0aW9uUGhhc2U4EAABAAAQpCBEdXJhdGlvbiBvZiB0aGUgc2luZ2VkIHZhbGlkYXRpb24gcGhhc2UuAFUBIFRoZSBkdXJhdGlvbiBvZiB0aGlzIHNob3VsZCBub3QgYmUgbGVzcyB0aGFuIGBUOjpQYWdlc2AsIGFuZCB0aGVyZSBpcyBubyBwb2ludCBpbiBpdAEBIGJlaW5nIG1vcmUgdGhhbiBgU2lnbmVkUGhhc2U6Ok1heFN1Ym1pc3Npb246OmdldCgpICogVDo6UGFnZXNgLgBUVm90ZXJTbmFwc2hvdFBlckJsb2NrOBAOAwAABMggVGhlIG51bWJlciBvZiBzbmFwc2hvdCB2b3RlcnMgdG8gZmV0Y2ggcGVyIGJsb2NrLgBYVGFyZ2V0U25hcHNob3RQZXJCbG9jazgQxAkAAATMIFRoZSBudW1iZXIgb2Ygc25hcHNob3QgdGFyZ2V0cyB0byBmZXRjaCBwZXIgYmxvY2suABRQYWdlczgQEAAAABhUIFRoZSBudW1iZXIgb2YgcGFnZXMuAAEBIFRoZSBzbmFwc2hvdCBpcyBjcmVhdGVkIHdpdGggdGhpcyBtYW55IGtleXMgaW4gdGhlIHN0b3JhZ2UgbWFwLgBRASBUaGUgc29sdXRpb25zIG1heSBjb250YWluIGF0IE1PU1QgdGhpcyBtYW55IHBhZ2VzLCBidXQgbGVzcyBwYWdlcyBhcmUgYWNjZXB0YWJsZSBhcxggd2VsbC4AATkPAAAAVQAAaE11bHRpQmxvY2tFbGVjdGlvblZlcmlmaWVyAWhNdWx0aUJsb2NrRWxlY3Rpb25WZXJpZmllchw8UXVldWVkU29sdXRpb25YAAEIBQX8lQUEABw9ASBUaGUgYFhgIHZhcmlhbnQgb2YgdGhlIGN1cnJlbnQgcXVldWVkIHNvbHV0aW9uLiBNaWdodCBiZSB0aGUgdmFsaWQgb25lIG9yIG5vdC4AaQEgVGhlIHR3byB2YXJpYW50cyBvZiB0aGlzIHN0b3JhZ2UgaXRlbSBpcyB0byBhdm9pZCB0aGUgbmVlZCBvZiBjb3B5aW5nLiBSZWNhbGwgdGhhdCBvbmNlIGFxASBgVmVyaWZ5aW5nU29sdXRpb25gIGlzIGJlaW5nIHByb2Nlc3NlZCwgaXQgbmVlZHMgdG8gd3JpdGUgaXRzIHBhcnRpYWwgc3VwcG9ydHMgKnNvbWV3aGVyZSouaQEgV3JpdGluZyB0aGVzZXMgc3VwcG9ydHMgb24gdG9wIG9mIGEgKmdvb2QqIHF1ZXVlZCBzdXBwb3J0cyBpcyB3cm9uZywgc2luY2Ugd2UgbWlnaHQgYmFpbC51ASBXcml0aW5nIHRoZW0gdG8gYSBidWdnZXIgYW5kIGNvcHlpbmcgYXQgdGhlIG5lZCBpcyBzbGlnaHRseSBiZXR0ZXIsIGJ1dCBleHBlbnNpdmUuIFRoaXMgZmxhZ3wgc3lzdGVtIGlzIGJlc3Qgb2YgYm90aCB3b3JsZHMuADxRdWV1ZWRTb2x1dGlvblkAAQgFBfyVBQQABD0BIFRoZSBgWWAgdmFyaWFudCBvZiB0aGUgY3VycmVudCBxdWV1ZWQgc29sdXRpb24uIE1pZ2h0IGJlIHRoZSB2YWxpZCBvbmUgb3Igbm90LgBIUXVldWVkVmFsaWRWYXJpYW50AQEEBTg9DwQBCF0BIFBvaW50ZXIgdG8gdGhlIHZhcmlhbnQgb2YgW2BRdWV1ZWRTb2x1dGlvblhgXSBvciBbYFF1ZXVlZFNvbHV0aW9uWWBdIHRoYXQgaXMgY3VycmVudGx5HCB2YWxpZC4AWFF1ZXVlZFNvbHV0aW9uQmFja2luZ3MAAQgFBfxBDwQAINQgVGhlIGAoYW1vdW50LCBjb3VudClgIG9mIGJhY2tpbmdzLCBkaXZpZGVkIHBlciBwYWdlLgBxASBUaGlzIGlzIHN0b3JlZCBiZWNhdXNlIGluIHRoZSBsYXN0IGJsb2NrIG9mIHZlcmlmaWNhdGlvbiB3ZSBuZWVkIHRoZW0gdG8gY29tcHV0ZSB0aGUgc2NvcmUsmCBhbmQgY2hlY2sgYE1heEJhY2tlcnNQZXJXaW5uZXJGaW5hbGAuAHEBIFRoaXMgY2FuIG9ubHkgZXZlciBsaXZlIGZvciB0aGUgaW52YWxpZCB2YXJpYW50IG9mIHRoZSBzb2x1dGlvbi4gT25jZSBpdCBpcyB2YWxpZCwgd2UgZG9uJ3QVASBuZWVkIHRoaXMgaW5mb3JtYXRpb24gYW55bW9yZTsgdGhlIHNjb3JlIGlzIGFscmVhZHkgY29tcHV0ZWQgb25jZSBpbvQgW2BRdWV1ZWRTb2x1dGlvblNjb3JlYF0sIGFuZCB0aGUgYmFja2luZyBjb3VudHMgYXJlIGNoZWNrZWQuAExRdWV1ZWRTb2x1dGlvblNjb3JlAAEEBTi1BQQADNggVGhlIHNjb3JlIG9mIHRoZSB2YWxpZCB2YXJpYW50IG9mIFtgUXVldWVkU29sdXRpb25gXS4AuCBUaGlzIG9ubHkgZXZlciBsaXZlcyBmb3IgdGhlIGB2YWxpZGAgdmFyaWFudC4AME1pbmltdW1TY29yZQAAtQUEAARVASBUaGUgbWluaW11bSBzY29yZSB0aGF0IGVhY2ggc29sdXRpb24gbXVzdCBhdHRhaW4gaW4gb3JkZXIgdG8gYmUgY29uc2lkZXJlZCBmZWFzaWJsZS4ANFN0YXR1c1N0b3JhZ2UBAFEPBAEEdCBTdG9yYWdlIGl0ZW0gZm9yIFtgU3RhdHVzYF0uAAG5BQABWQkADGBNYXhCYWNrZXJzUGVyV2lubmVyRmluYWw4ENQwAAAUHQEgTWF4aW11bSBudW1iZXIgb2YgYmFja2VycywgcGVyIHdpbm5lciwgYW1vbmcgYWxsIHBhZ2VzIG9mIGFuIGVsZWN0aW9uLgAFASBUaGlzIGNhbiBvbmx5IGJlIGNoZWNrZWQgYXQgdGhlIHZlcnkgZmluYWwgc3RlcCBvZiB2ZXJpZmljYXRpb24uAF0BIE5PVEU6IGF0IHRoZSBtb21lbnQsIHdlIGRvbid0IGNoZWNrIHRoaXMsIGFuZCBpdCBpcyBpbiBwbGFjZSBmb3IgZnV0dXJlIGNvbXBhdGliaWxpdHkuAExNYXhCYWNrZXJzUGVyV2lubmVyOBAOAwAABMQgTWF4aW11bSBudW1iZXIgb2YgYmFja2VycywgcGVyIHdpbm5lciwgcGVyIHBhZ2UuAERNYXhXaW5uZXJzUGVyUGFnZTgQ6AMAAAhhASBNYXhpbXVtIG51bWJlciBvZiBzdXBwb3J0cyAoYWthLiB3aW5uZXJzL3ZhbGlkYXRvcnMvdGFyZ2V0cykgdGhhdCBjYW4gYmUgcmVwcmVzZW50ZWQgaW5MIGEgcGFnZSBvZiByZXN1bHRzLgAAAABWAABoTXVsdGlCbG9ja0VsZWN0aW9uVW5zaWduZWQAAb0FAAAAAAAAVwAAYE11bHRpQmxvY2tFbGVjdGlvblNpZ25lZAFgTXVsdGlCbG9ja0VsZWN0aW9uU2lnbmVkEDRJbnZ1bG5lcmFibGVzAQBVDwQAJBUBIEFjY291bnRzIHdoaXRlbGlzdGVkIGJ5IGdvdmVybmFuY2UgdG8gYWx3YXlzIHN1Ym1pdCB0aGVpciBzb2x1dGlvbnMuAHAgVGhleSBhcmUgZGlmZmVyZW50IGluIHRoYXQ6APwgKiBUaGV5IGFsd2F5cyBwYXkgYSBmaXhlZCBkZXBvc2l0IGZvciBzdWJtaXNzaW9uLCBzcGVjaWZpZWQgYnn0ICAgW2BDb25maWc6OkludnVsbmVyYWJsZURlcG9zaXRgXS4gVGhleSBwYXkgbm8gcGFnZSBkZXBvc2l0LmkBICogSWYgX2VqZWN0ZWRfIGJ5IGJldHRlciBzb2x1dGlvbiBmcm9tIFtgU29ydGVkU2NvcmVzYF0sIHRoZXkgd2lsbCBnZXQgdGhlaXIgZnVsbCBkZXBvc2l0ICAgIGJhY2suCQEgKiBUaGV5IGFsd2F5cyBnZXQgdGhlaXIgdHgtZmVlIGJhY2sgZXZlbiBpZiB0aGV5IGFyZSBfZGlzY2FyZGVkXy4AMFNvcnRlZFNjb3JlcwEBBAU4WQ8EAAAARFN1Ym1pc3Npb25TdG9yYWdlAAEMBQUFZQ/JBQQABOwgVHJpcGxlIG1hcCBmcm9tIChyb3VuZCwgYWNjb3VudCwgcGFnZSkgdG8gYSBzb2x1dGlvbiBwYWdlLgBkU3VibWlzc2lvbk1ldGFkYXRhU3RvcmFnZQABCAUFjQxpDwQAENggTWFwIGZyb20gYWNjb3VudCB0byB0aGUgbWV0YWRhdGEgb2YgdGhlaXIgc3VibWlzc2lvbi4AcQEgaW52YXJpYW50OiBmb3IgYW55IEtleTEgb2YgdHlwZSBgQWNjb3VudElkYCBpbiBbYFN1Ym1pc3Npb25zYF0sIHRoaXMgc3RvcmFnZSBtYXAgYWxzbyBoYXMgYRwgdmFsdWUuAAH1BgABaQkAAAF1DwAABHcLZVBCaAvPBTnSBN9Z0yiJr6YLyclMjiR27ZuqqTAFLGRlcG9zaXRfZm9yCAx3aG8EFHBhZ2VzOJUBFBEBIEdldCB0aGUgZGVwb3NpdCBhbW91bnQgdGhhdCB3aWxsIGJlIGhlbGQgZm9yIGEgc29sdXRpb24gb2YgYHBhZ2VzYC4AQQEgVGhpcyBhbGxvd3MgYW4gb2ZmY2hhaW4gYXBwbGljYXRpb24gdG8ga25vdyB3aGF0IFtgQ29uZmlnOjpEZXBvc2l0UGVyUGFnZWBdIGFuZGUBIFtgQ29uZmlnOjpEZXBvc2l0QmFzZWBdIGFyZSBkb2luZyB1bmRlciB0aGUgaG9vZC4gSXQgYWxzbyB0YWtlcyBpbnRvIGFjY291bnQgaWYgYHdob2AgaXNoIFtgSW52dWxuZXJhYmxlc2BdIG9yIG5vdC4AWAAAHFN0YWtpbmcBHFN0YWtpbmfQOFZhbGlkYXRvckNvdW50AQA4EAAAAAAEnCBUaGUgaWRlYWwgbnVtYmVyIG9mIGFjdGl2ZSB2YWxpZGF0b3JzLgAYQm9uZGVkAAEEBQQEBAAMAQEgTWFwIGZyb20gYWxsIGxvY2tlZCAic3Rhc2giIGFjY291bnRzIHRvIHRoZSBjb250cm9sbGVyIGFjY291bnQuANAgVFdPWC1OT1RFOiBTQUZFIHNpbmNlIGBBY2NvdW50SWRgIGlzIGEgc2VjdXJlIGhhc2guAEBNaW5Ob21pbmF0b3JCb25kAQCVAUAAAAAAAAAAAAAAAAAAAAAABCEBIFRoZSBtaW5pbXVtIGFjdGl2ZSBib25kIHRvIGJlY29tZSBhbmQgbWFpbnRhaW4gdGhlIHJvbGUgb2YgYSBub21pbmF0b3IuAEBNaW5WYWxpZGF0b3JCb25kAQCVAUAAAAAAAAAAAAAAAAAAAAAABCEBIFRoZSBtaW5pbXVtIGFjdGl2ZSBib25kIHRvIGJlY29tZSBhbmQgbWFpbnRhaW4gdGhlIHJvbGUgb2YgYSB2YWxpZGF0b3IuAEhNaW5pbXVtQWN0aXZlU3Rha2UBAJUBQAAAAAAAAAAAAAAAAAAAAAAEEQEgVGhlIG1pbmltdW0gYWN0aXZlIG5vbWluYXRvciBzdGFrZSBvZiB0aGUgbGFzdCBzdWNjZXNzZnVsIGVsZWN0aW9uLgA0TWluQ29tbWlzc2lvbgEAPQUQAAAAAAzoIFRoZSBtaW5pbXVtIGFtb3VudCBvZiBjb21taXNzaW9uIHRoYXQgdmFsaWRhdG9ycyBjYW4gc2V0LgCAIElmIHNldCB0byBgMGAsIG5vIGxpbWl0IGV4aXN0cy4ANE1heENvbW1pc3Npb24BAD0FEADKmjsMwCBUaGUgbWF4aW11bSBjb21taXNzaW9uIHRoYXQgdmFsaWRhdG9ycyBjYW4gc2V0LgAZASBJZiBub3Qgc2V0LCBkZWZhdWx0cyB0byBgUGVyYmlsbDo6b25lKClgICgxMDAlKSwgaS5lLiBubyB1cHBlciBsaW1pdC4ATERpc2FibGVNaW50aW5nR3VhcmQAADgEABw9ASBTYWZldHkgZ3VhcmQ6IHRoZSBlcmEgZnJvbSB3aGljaCBsZWdhY3kgbWludGluZyBpcyBwZXJtYW5lbnRseSBkaXNhYmxlZCBvbiB0aGUVASBwYXlvdXQgc2lkZS4gKipJcnJldmVyc2libGUqKiDigJQgb25jZSBzZXQsIHNob3VsZCBuZXZlciBiZSBjbGVhcmVkLgAxASBTZXBhcmF0ZSBmcm9tIFtgQ29uZmlnOjpEaXNhYmxlTWludGluZ2BdIHdoaWNoIGNvbnRyb2xzIHRoZSBgZW5kX2VyYWAgcGF0aC41ASBUaGlzIHN0b3JhZ2UgZ3VhcmRzIGFnYWluc3QgbWludGluZyBkdXJpbmcgcGF5b3V0IGZvciBlcmFzIHRoYXQgd2VyZSBjcmVhdGVkSQEgaW4gREFQIG1vZGUuIFNldCBhdXRvbWF0aWNhbGx5IGJ5IGBlbmRfZXJhX2RhcGAgb24gZmlyc3Qgc3VjY2Vzc2Z1bCBwb3Qgc25hcHNob3QuGQEgSW4gbGVnYWN5IG1vZGUgKEt1c2FtYSksIHRoaXMgaXMgbmV2ZXIgc2V0IGFuZCB0aGUgZ3VhcmQgaXMgaW5hY3RpdmUuAEBPcHRpbXVtU2VsZlN0YWtlAQCVAUAAAAAAAAAAAAAAAAAAAAAAELQgT3B0aW11bSBzZWxmLXN0YWtlIHRocmVzaG9sZCBmb3IgdmFsaWRhdG9ycy4AIQEgQmVsb3cgdGhpcyB0aHJlc2hvbGQsIHRoZSBpbmNlbnRpdmUgd2VpZ2h0IGdyb3dzIGFzIGBzcXJ0KHNlbGZfc3Rha2UpYC7oIEFib3ZlIGl0LCBncm93dGggaXMgZGFtcGVuZWQgYnkgW2BTZWxmU3Rha2VTbG9wZUZhY3RvcmBdLgBASGFyZENhcFNlbGZTdGFrZQEAlQFAAAAAAAAAAAAAAAAAAAAAAAywIEhhcmQgY2FwIG9uIGVmZmVjdGl2ZSB2YWxpZGF0b3Igc2VsZi1zdGFrZS4ANQEgU2VsZi1zdGFrZSBhYm92ZSB0aGlzIHZhbHVlIHJlY2VpdmVzIG5vIGFkZGl0aW9uYWwgcmV3YXJkIGJlbmVmaXQgKHBsYXRlYXUpLgBQU2VsZlN0YWtlU2xvcGVGYWN0b3IBAD0FEAAAAAAMZQEgU2xvcGUgZmFjdG9yIGNvbnRyb2xsaW5nIHRoZSBkaXNjb3VyYWdlbWVudCByYXRlIGZvciBzZWxmLXN0YWtlIGJldHdlZW4gb3B0aW11bSBhbmQgY2FwLgBFASBWYWx1ZSBiZXR3ZWVuIDAgYW5kIDE6IGs9MSBtZWFucyBubyBkaXNjb3VyYWdlbWVudCwgaz0wIG1lYW5zIGltbWVkaWF0ZSBwbGF0ZWF1LgBwRXJhc1ZhbGlkYXRvckluY2VudGl2ZUJ1ZGdldAEBBAU4lQFAAAAAAAAAAAAAAAAAAAAAAAxBASBUaGUgdG90YWwgdmFsaWRhdG9yIGluY2VudGl2ZSBidWRnZXQgZm9yIHRoZSBnaXZlbiBlcmEsIHNuYXBzaG90dGVkIGF0IGVyYSBlbmQuAFUBIFRoaXMgaXMgdGhlIHNpbWlsYXIgdG8gW2BFcmFzVmFsaWRhdG9yUmV3YXJkYF0gYnV0IGZvciB0aGUgc2VsZi1zdGFrZSBpbmNlbnRpdmUgcG90LgB8RXJhc1N1bVZhbGlkYXRvckluY2VudGl2ZVdlaWdodAEBBAU4lQFAAAAAAAAAAAAAAAAAAAAAAAzYIFN1bSBvZiBhbGwgdmFsaWRhdG9ycycgaW5jZW50aXZlIHdlaWdodHMgZm9yIHRoZSBlcmEuANQgRGlyZWN0bHkgbGlua2VkIHRvIFtgRXJhc1ZhbGlkYXRvckluY2VudGl2ZVdlaWdodGBdLgBwRXJhc1ZhbGlkYXRvckluY2VudGl2ZVdlaWdodAABCAUFjQyVAQQACLwgSW5kaXZpZHVhbCB2YWxpZGF0b3IgaW5jZW50aXZlIHdlaWdodCBwZXIgZXJhLi0BIEVhY2ggdmFsaWRhdG9yJ3Mgc2hhcmUgb2YgdGhlIGluY2VudGl2ZSBwb3QgPSBgdGhlaXJfd2VpZ2h0IC8gc3VtX3dlaWdodGAuAFhBcmVOb21pbmF0b3JzU2xhc2hhYmxlAQCZAQQBHKQgV2hldGhlciBub21pbmF0b3JzIGFyZSBzbGFzaGFibGUgb3Igbm90LgBtASAtIFdoZW4gc2V0IHRvIGB0cnVlYCAoZGVmYXVsdCksIG5vbWluYXRvcnMgYXJlIHNsYXNoZWQgYWxvbmcgd2l0aCB2YWxpZGF0b3JzIGFuZCBtdXN0IHdhaXQpASAgIHRoZSBmdWxsIFtgQ29uZmlnOjpCb25kaW5nRHVyYXRpb25gXSBiZWZvcmUgd2l0aGRyYXdpbmcgdW5ib25kZWQgZnVuZHMuFQEgLSBXaGVuIHNldCB0byBgZmFsc2VgLCBub21pbmF0b3JzIGFyZSBub3Qgc2xhc2hlZCwgYW5kIGNhbiB1bmJvbmQgaW4NASAgIFtgQ29uZmlnOjpOb21pbmF0b3JGYXN0VW5ib25kRHVyYXRpb25gXSBlcmFzIGluc3RlYWQgb2YgdGhlIGZ1bGxZASAgIFtgQ29uZmlnOjpCb25kaW5nRHVyYXRpb25gXSAoc2VlIFtgU3Rha2luZ0ludGVyZmFjZTo6bm9taW5hdG9yX2JvbmRpbmdfZHVyYXRpb25gXSkuAFxFcmFzTm9taW5hdG9yc1NsYXNoYWJsZQABBAU4mQEEABzYIFBlci1lcmEgc25hcHNob3Qgb2Ygd2hldGhlciBub21pbmF0b3JzIGFyZSBzbGFzaGFibGUuAGUBIFRoaXMgaXMgY29waWVkIGZyb20gW2BBcmVOb21pbmF0b3JzU2xhc2hhYmxlYF0gYXQgdGhlIHN0YXJ0IG9mIGVhY2ggZXJhLiBXaGVuIHByb2Nlc3NpbmdRASBvZmZlbmNlcywgd2UgdXNlIHRoZSB2YWx1ZSBmcm9tIHRoaXMgc3RvcmFnZSBmb3IgdGhlIG9mZmVuY2UgZXJhIHRvIGVuc3VyZSB0aGF0IHRoZTkBIHNsYXNoaW5nIHJ1bGVzIGF0IHRoZSB0aW1lIG9mIHRoZSBvZmZlbmNlIGFyZSBhcHBsaWVkLCBub3QgdGhlIGN1cnJlbnQgcnVsZXMuAGUBIElmIGFuIGVudHJ5IGRvZXMgbm90IGV4aXN0IGZvciBhbiBlcmEsIG5vbWluYXRvcnMgYXJlIGFzc3VtZWQgdG8gYmUgc2xhc2hhYmxlIChkZWZhdWx0KS4AGExlZGdlcgABBAIEeQ8EABBFASBNYXAgZnJvbSBhbGwgKHVubG9ja2VkKSAiY29udHJvbGxlciIgYWNjb3VudHMgdG8gdGhlIGluZm8gcmVnYXJkaW5nIHRoZSBzdGFraW5nLgB1ASBOb3RlOiBBbGwgdGhlIHJlYWRzIGFuZCBtdXRhdGlvbnMgdG8gdGhpcyBzdG9yYWdlICpNVVNUKiBiZSBkb25lIHRocm91Z2ggdGhlIG1ldGhvZHMgZXhwb3NlZOggYnkgW2BTdGFraW5nTGVkZ2VyYF0gdG8gZW5zdXJlIGRhdGEgYW5kIGxvY2sgY29uc2lzdGVuY3kuABRQYXllZQABBAUEAQcEAAzkIFdoZXJlIHRoZSByZXdhcmQgcGF5bWVudCBzaG91bGQgYmUgbWFkZS4gS2V5ZWQgYnkgc3Rhc2guANAgVFdPWC1OT1RFOiBTQUZFIHNpbmNlIGBBY2NvdW50SWRgIGlzIGEgc2VjdXJlIGhhc2guAChWYWxpZGF0b3JzAQEEBQQFBwgAAAxFASBUaGUgbWFwIGZyb20gKHdhbm5hYmUpIHZhbGlkYXRvciBzdGFzaCBrZXkgdG8gdGhlIHByZWZlcmVuY2VzIG9mIHRoYXQgdmFsaWRhdG9yLgDQIFRXT1gtTk9URTogU0FGRSBzaW5jZSBgQWNjb3VudElkYCBpcyBhIHNlY3VyZSBoYXNoLgBQQ291bnRlckZvclZhbGlkYXRvcnMBADgQAAAAAASsQ291bnRlciBmb3IgdGhlIHJlbGF0ZWQgY291bnRlZCBzdG9yYWdlIG1hcABITWF4VmFsaWRhdG9yc0NvdW50AAA4BAAMMQEgVGhlIG1heGltdW0gdmFsaWRhdG9yIGNvdW50IGJlZm9yZSB3ZSBzdG9wIGFsbG93aW5nIG5ldyB2YWxpZGF0b3JzIHRvIGpvaW4uANAgV2hlbiB0aGlzIHZhbHVlIGlzIG5vdCBzZXQsIG5vIGxpbWl0cyBhcmUgZW5mb3JjZWQuAEBMYXN0VmFsaWRhdG9yRXJhAAEEBQQ4BAAwZQEgVHJhY2tzIHRoZSBsYXN0IGVyYSBpbiB3aGljaCBhbiBhY2NvdW50IHdhcyBhY3RpdmUgYXMgYSB2YWxpZGF0b3IgKGluY2x1ZGVkIGluIHRoZSBlcmEnc1AgZXhwb3N1cmUvc25hcHNob3QpLgBZASBUaGlzIGlzIHVzZWQgdG8gZW5mb3JjZSB0aGF0IGFjY291bnRzIHdobyB3ZXJlIHJlY2VudGx5IHZhbGlkYXRvcnMgbXVzdCB3YWl0IHRoZSBmdWxsYQEgW2BDb25maWc6OkJvbmRpbmdEdXJhdGlvbmBdIGJlZm9yZSB0aGVpciBmdW5kcyBjYW4gYmUgd2l0aGRyYXduLCBldmVuIGlmIHRoZXkgc3dpdGNoIHRvvCBub21pbmF0b3Igcm9sZS4gVGhpcyBwcmV2ZW50cyB2YWxpZGF0b3JzIGZyb206rCAxLiBDb21taXR0aW5nIGEgc2xhc2hhYmxlIG9mZmVuY2UgaW4gZXJhIE58IDIuIFN3aXRjaGluZyB0byBub21pbmF0b3Igcm9sZWUBIDMuIFVzaW5nIHRoZSBzaG9ydGVyIG5vbWluYXRvciB1bmJvbmRpbmcgZHVyYXRpb24gdG8gd2l0aGRyYXcgZnVuZHMgYmVmb3JlIGJlaW5nIHNsYXNoZWQAWQEgVXBkYXRlZCB3aGVuIGVyYSBzbmFwc2hvdHMgYXJlIGNyZWF0ZWQgKGluIGBFcmFzU3Rha2Vyc1BhZ2VkYC9gRXJhc1N0YWtlcnNPdmVydmlld2ApLvggQ2xlYW5lZCB1cCB3aGVuIHRoZSBzdGFzaCBpcyBraWxsZWQgKGZ1bGx5IHdpdGhkcmF3bi9yZWFwZWQpLgAoTm9taW5hdG9ycwABBAUEfQ8EAEx1ASBUaGUgbWFwIGZyb20gbm9taW5hdG9yIHN0YXNoIGtleSB0byB0aGVpciBub21pbmF0aW9uIHByZWZlcmVuY2VzLCBuYW1lbHkgdGhlIHZhbGlkYXRvcnMgdGhhdFggdGhleSB3aXNoIHRvIHN1cHBvcnQuADkBIE5vdGUgdGhhdCB0aGUga2V5cyBvZiB0aGlzIHN0b3JhZ2UgbWFwIG1pZ2h0IGJlY29tZSBub24tZGVjb2RhYmxlIGluIGNhc2UgdGhlLQEgYWNjb3VudCdzIFtgTm9taW5hdGlvbnNRdW90YTo6TWF4Tm9taW5hdGlvbnNgXSBjb25maWd1cmF0aW9uIGlzIGRlY3JlYXNlZC6QIEluIHRoaXMgcmFyZSBjYXNlLCB0aGVzZSBub21pbmF0b3JzZQEgYXJlIHN0aWxsIGV4aXN0ZW50IGluIHN0b3JhZ2UsIHRoZWlyIGtleSBpcyBjb3JyZWN0IGFuZCByZXRyaWV2YWJsZSAoaS5lLiBgY29udGFpbnNfa2V5YHEBIGluZGljYXRlcyB0aGF0IHRoZXkgZXhpc3QpLCBidXQgdGhlaXIgdmFsdWUgY2Fubm90IGJlIGRlY29kZWQuIFRoZXJlZm9yZSwgdGhlIG5vbi1kZWNvZGFibGVtASBub21pbmF0b3JzIHdpbGwgZWZmZWN0aXZlbHkgbm90LWV4aXN0LCB1bnRpbCB0aGV5IHJlLXN1Ym1pdCB0aGVpciBwcmVmZXJlbmNlcyBzdWNoIHRoYXQgaXQBASBpcyB3aXRoaW4gdGhlIGJvdW5kcyBvZiB0aGUgbmV3bHkgc2V0IGBDb25maWc6Ok1heE5vbWluYXRpb25zYC4AYQEgVGhpcyBpbXBsaWVzIHRoYXQgYDo6aXRlcl9rZXlzKCkuY291bnQoKWAgYW5kIGA6Oml0ZXIoKS5jb3VudCgpYCBtaWdodCByZXR1cm4gZGlmZmVyZW50bQEgdmFsdWVzIGZvciB0aGlzIG1hcC4gTW9yZW92ZXIsIHRoZSBtYWluIGA6OmNvdW50KClgIGlzIGFsaWduZWQgd2l0aCB0aGUgZm9ybWVyLCBuYW1lbHkgdGhlbCBudW1iZXIgb2Yga2V5cyB0aGF0IGV4aXN0LgBtASBMYXN0bHksIGlmIGFueSBvZiB0aGUgbm9taW5hdG9ycyBiZWNvbWUgbm9uLWRlY29kYWJsZSwgdGhleSBjYW4gYmUgY2hpbGxlZCBpbW1lZGlhdGVseSB2aWG4IFtgQ2FsbDo6Y2hpbGxfb3RoZXJgXSBkaXNwYXRjaGFibGUgYnkgYW55b25lLgDQIFRXT1gtTk9URTogU0FGRSBzaW5jZSBgQWNjb3VudElkYCBpcyBhIHNlY3VyZSBoYXNoLgBQQ291bnRlckZvck5vbWluYXRvcnMBADgQAAAAAASsQ291bnRlciBmb3IgdGhlIHJlbGF0ZWQgY291bnRlZCBzdG9yYWdlIG1hcAA4VmlydHVhbFN0YWtlcnMAAQQFBBAEABjIIFN0YWtlcnMgd2hvc2UgZnVuZHMgYXJlIG1hbmFnZWQgYnkgb3RoZXIgcGFsbGV0cy4AdQEgVGhpcyBwYWxsZXQgZG9lcyBub3QgYXBwbHkgYW55IGxvY2tzIG9uIHRoZW0sIHRoZXJlZm9yZSB0aGV5IGFyZSBvbmx5IHZpcnR1YWxseSBib25kZWQuIFRoZXltASBhcmUgZXhwZWN0ZWQgdG8gYmUga2V5bGVzcyBhY2NvdW50cyBhbmQgaGVuY2Ugc2hvdWxkIG5vdCBiZSBhbGxvd2VkIHRvIG11dGF0ZSB0aGVpciBsZWRnZXJxASBkaXJlY3RseSB2aWEgdGhpcyBwYWxsZXQuIEluc3RlYWQsIHRoZXNlIGFjY291bnRzIGFyZSBtYW5hZ2VkIGJ5IG90aGVyIHBhbGxldHMgYW5kIGFjY2Vzc2VkKQEgdmlhIGxvdyBsZXZlbCBhcGlzLiBXZSBrZWVwIHRyYWNrIG9mIHRoZW0gdG8gZG8gbWluaW1hbCBpbnRlZ3JpdHkgY2hlY2tzLgBgQ291bnRlckZvclZpcnR1YWxTdGFrZXJzAQA4EAAAAAAErENvdW50ZXIgZm9yIHRoZSByZWxhdGVkIGNvdW50ZWQgc3RvcmFnZSBtYXAASE1heE5vbWluYXRvcnNDb3VudAAAOAQADDEBIFRoZSBtYXhpbXVtIG5vbWluYXRvciBjb3VudCBiZWZvcmUgd2Ugc3RvcCBhbGxvd2luZyBuZXcgdmFsaWRhdG9ycyB0byBqb2luLgDQIFdoZW4gdGhpcyB2YWx1ZSBpcyBub3Qgc2V0LCBubyBsaW1pdHMgYXJlIGVuZm9yY2VkLgAoQ3VycmVudEVyYQAAOAQAEHwgVGhlIGN1cnJlbnQgcGxhbm5lZCBlcmEgaW5kZXguAGUBIFRoaXMgaXMgdGhlIGxhdGVzdCBwbGFubmVkIGVyYSwgZGVwZW5kaW5nIG9uIGhvdyB0aGUgU2Vzc2lvbiBwYWxsZXQgcXVldWVzIHRoZSB2YWxpZGF0b3KAIHNldCwgaXQgbWlnaHQgYmUgYWN0aXZlIG9yIG5vdC4AJEFjdGl2ZUVyYQAAgQ8EABDYIFRoZSBhY3RpdmUgZXJhIGluZm9ybWF0aW9uLCBpdCBob2xkcyBpbmRleCBhbmQgc3RhcnQuAFkBIFRoZSBhY3RpdmUgZXJhIGlzIHRoZSBlcmEgYmVpbmcgY3VycmVudGx5IHJld2FyZGVkLiBWYWxpZGF0b3Igc2V0IG9mIHRoaXMgZXJhIG11c3QgYmWYIGVxdWFsIHRvIHdoYXQgaXMgUkMncyBzZXNzaW9uIHBhbGxldC4AKEJvbmRlZEVyYXMBAIUPBAAQJQEgQSBtYXBwaW5nIGZyb20gc3RpbGwtYm9uZGVkIGVyYXMgdG8gdGhlIGZpcnN0IHNlc3Npb24gaW5kZXggb2YgdGhhdCBlcmEuAMggTXVzdCBjb250YWlucyBpbmZvcm1hdGlvbiBmb3IgZXJhcyBmb3IgdGhlIHJhbmdlOrwgYFthY3RpdmVfZXJhIC0gYm91bmRpbmdfZHVyYXRpb247IGFjdGl2ZV9lcmFdYABMRXJhc1N0YWtlcnNPdmVydmlldwABCAUFjQyJDwQAMLggU3VtbWFyeSBvZiB2YWxpZGF0b3IgZXhwb3N1cmUgYXQgYSBnaXZlbiBlcmEuAHEBIFRoaXMgY29udGFpbnMgdGhlIHRvdGFsIHN0YWtlIGluIHN1cHBvcnQgb2YgdGhlIHZhbGlkYXRvciBhbmQgdGhlaXIgb3duIHN0YWtlLiBJbiBhZGRpdGlvbix1ASBpdCBjYW4gYWxzbyBiZSB1c2VkIHRvIGdldCB0aGUgbnVtYmVyIG9mIG5vbWluYXRvcnMgYmFja2luZyB0aGlzIHZhbGlkYXRvciBhbmQgdGhlIG51bWJlciBvZmkBIGV4cG9zdXJlIHBhZ2VzIHRoZXkgYXJlIGRpdmlkZWQgaW50by4gVGhlIHBhZ2UgY291bnQgaXMgdXNlZnVsIHRvIGRldGVybWluZSB0aGUgbnVtYmVyIG9mrCBwYWdlcyBvZiByZXdhcmRzIHRoYXQgbmVlZHMgdG8gYmUgY2xhaW1lZC4AYQEgVGhpcyBpcyBrZXllZCBmaXJzdCBieSB0aGUgZXJhIGluZGV4IHRvIGFsbG93IGJ1bGsgZGVsZXRpb24gYW5kIHRoZW4gdGhlIHN0YXNoIGFjY291bnQuoCBTaG91bGQgb25seSBiZSBhY2Nlc3NlZCB0aHJvdWdoIGBFcmFzYC4AzCBJcyBpdCByZW1vdmVkIGFmdGVyIFtgQ29uZmlnOjpIaXN0b3J5RGVwdGhgXSBlcmFzLkEBIElmIHN0YWtlcnMgaGFzbid0IGJlZW4gc2V0IG9yIGhhcyBiZWVuIHJlbW92ZWQgdGhlbiBlbXB0eSBvdmVydmlldyBpcyByZXR1cm5lZC4AQEVyYXNTdGFrZXJzUGFnZWQAAQwFBQVlD40PBAAYwCBQYWdpbmF0ZWQgZXhwb3N1cmUgb2YgYSB2YWxpZGF0b3IgYXQgZ2l2ZW4gZXJhLgBxASBUaGlzIGlzIGtleWVkIGZpcnN0IGJ5IHRoZSBlcmEgaW5kZXggdG8gYWxsb3cgYnVsayBkZWxldGlvbiwgdGhlbiBzdGFzaCBhY2NvdW50IGFuZCBmaW5hbGx5yCB0aGUgcGFnZS4gU2hvdWxkIG9ubHkgYmUgYWNjZXNzZWQgdGhyb3VnaCBgRXJhc2AuANQgVGhpcyBpcyBjbGVhcmVkIGFmdGVyIFtgQ29uZmlnOjpIaXN0b3J5RGVwdGhgXSBlcmFzLgA4Q2xhaW1lZFJld2FyZHMBAQgFBY0MnQ8EABjcIEhpc3Rvcnkgb2YgY2xhaW1lZCBwYWdlZCByZXdhcmRzIGJ5IGVyYSBhbmQgdmFsaWRhdG9yLgBpASBUaGlzIGlzIGtleWVkIGJ5IGVyYSBhbmQgdmFsaWRhdG9yIHN0YXNoIHdoaWNoIG1hcHMgdG8gdGhlIHNldCBvZiBwYWdlIGluZGV4ZXMgd2hpY2ggaGF2ZTggYmVlbiBjbGFpbWVkLgDMIEl0IGlzIHJlbW92ZWQgYWZ0ZXIgW2BDb25maWc6Okhpc3RvcnlEZXB0aGBdIGVyYXMuAEhFcmFzVmFsaWRhdG9yUHJlZnMBAQgFBY0MBQcIAAAUBQEgRXhwb3N1cmUgb2YgdmFsaWRhdG9yIGF0IGVyYSB3aXRoIHRoZSBwcmVmZXJlbmNlcyBvZiB2YWxpZGF0b3JzLgBhASBUaGlzIGlzIGtleWVkIGZpcnN0IGJ5IHRoZSBlcmEgaW5kZXggdG8gYWxsb3cgYnVsayBkZWxldGlvbiBhbmQgdGhlbiB0aGUgc3Rhc2ggYWNjb3VudC4AzCBJcyBpdCByZW1vdmVkIGFmdGVyIFtgQ29uZmlnOjpIaXN0b3J5RGVwdGhgXSBlcmFzLgBMRXJhc1ZhbGlkYXRvclJld2FyZAABBAU4lQEEABQ1ASBUaGUgdG90YWwgc3Rha2VyIHJld2FyZCBidWRnZXQgZm9yIGVhY2ggZXJhIHdpdGhpbiBbYENvbmZpZzo6SGlzdG9yeURlcHRoYF0uAGQgU2V0IGF0IGVyYSBmaW5hbGl6YXRpb246WQEgLSBpbiBub24tbWludGluZyBtb2RlIHRoaXMgaXMgdGhlIHNuYXBzaG90IG9mIHRoZSBlcmEgcG90IGJhbGFuY2UgYmVmb3JlIGFueSBwYXlvdXRzLjEBIC0gaW4gbGVnYWN5IG1vZGUgaXQgY29tZXMgZnJvbSBgRXJhUGF5b3V0YCwgd2l0aCByZXdhcmRzIG1pbnRlZCBvbiB0aGUgZmx5LgBARXJhc1Jld2FyZFBvaW50cwEBBAU4oQ8UAAAAAAAI0CBSZXdhcmRzIGZvciB0aGUgbGFzdCBbYENvbmZpZzo6SGlzdG9yeURlcHRoYF0gZXJhcy4lASBJZiByZXdhcmQgaGFzbid0IGJlZW4gc2V0IG9yIGhhcyBiZWVuIHJlbW92ZWQgdGhlbiAwIHJld2FyZCBpcyByZXR1cm5lZC4AOEVyYXNUb3RhbFN0YWtlAQEEBTiVAUAAAAAAAAAAAAAAAAAAAAAACBEBIFRoZSB0b3RhbCBhbW91bnQgc3Rha2VkIGZvciB0aGUgbGFzdCBbYENvbmZpZzo6SGlzdG9yeURlcHRoYF0gZXJhcy4dASBJZiB0b3RhbCBoYXNuJ3QgYmVlbiBzZXQgb3IgaGFzIGJlZW4gcmVtb3ZlZCB0aGVuIDAgc3Rha2UgaXMgcmV0dXJuZWQuACBGb3JjZUVyYQEAcQkEAARUIE1vZGUgb2YgZXJhIGZvcmNpbmcuAEBNYXhTdGFrZWRSZXdhcmRzAAARBwQAEBkBIE1heGltdW0gc3Rha2VkIHJld2FyZHMsIGkuZS4gdGhlIHBlcmNlbnRhZ2Ugb2YgdGhlIGVyYSBpbmZsYXRpb24gdGhhdGwgaXMgdXNlZCBmb3Igc3Rha2UgcmV3YXJkcy4A9CBPbmx5IHVzZWQgaW4gbGVnYWN5IG1pbnRpbmcgbW9kZSAoYERpc2FibGVNaW50aW5nID0gZmFsc2VgKS4ATFNsYXNoUmV3YXJkRnJhY3Rpb24BAD0FEAAAAAAM+CBUaGUgcGVyY2VudGFnZSBvZiB0aGUgc2xhc2ggdGhhdCBpcyBkaXN0cmlidXRlZCB0byByZXBvcnRlcnMuAOQgVGhlIHJlc3Qgb2YgdGhlIHNsYXNoZWQgdmFsdWUgaXMgaGFuZGxlZCBieSB0aGUgYFNsYXNoYC4ATENhbmNlbGVkU2xhc2hQYXlvdXQBAJUBQAAAAAAAAAAAAAAAAAAAAAAIFQEgVGhlIGFtb3VudCBvZiBjdXJyZW5jeSBnaXZlbiB0byByZXBvcnRlcnMgb2YgYSBzbGFzaCBldmVudCB3aGljaCB3YXPsIGNhbmNlbGVkIGJ5IGV4dHJhb3JkaW5hcnkgY2lyY3Vtc3RhbmNlcyAoZS5nLiBnb3Zlcm5hbmNlKS4AME9mZmVuY2VRdWV1ZQABCAUFjQytDwQAKE0BIFN0b3JlcyByZXBvcnRlZCBvZmZlbmNlcyBpbiBhIHF1ZXVlIHVudGlsIHRoZXkgYXJlIHByb2Nlc3NlZCBpbiBzdWJzZXF1ZW50IGJsb2Nrcy4AZQEgRWFjaCBvZmZlbmNlIGlzIHJlY29yZGVkIHVuZGVyIHRoZSBjb3JyZXNwb25kaW5nIGVyYSBpbmRleCBhbmQgdGhlIG9mZmVuZGluZyB2YWxpZGF0b3Inc3EBIGFjY291bnQuIElmIGFuIG9mZmVuY2Ugc3BhbnMgbXVsdGlwbGUgcGFnZXMsIG9ubHkgb25lIHBhZ2UgaXMgcHJvY2Vzc2VkIGF0IGEgdGltZS4gT2ZmZW5jZXM9ASBhcmUgaGFuZGxlZCBzZXF1ZW50aWFsbHksIHdpdGggdGhlaXIgYXNzb2NpYXRlZCBzbGFzaGVzIGNvbXB1dGVkIGFuZCBzdG9yZWQgaW5RASBgVW5hcHBsaWVkU2xhc2hlc2AuIFRoZXNlIHNsYXNoZXMgYXJlIHRoZW4gYXBwbGllZCBpbiBhIGZ1dHVyZSBlcmEgYXMgZGV0ZXJtaW5lZCBieVggYFNsYXNoRGVmZXJEdXJhdGlvbmAuAFEBIEFueSBvZmZlbmNlcyB0aWVkIHRvIGFuIGVyYSBvbGRlciB0aGFuIGBCb25kaW5nRHVyYXRpb25gIGFyZSBhdXRvbWF0aWNhbGx5IGRyb3BwZWQu0CBQcm9jZXNzaW5nIGFsd2F5cyBwcmlvcml0aXplcyB0aGUgb2xkZXN0IGVyYSBmaXJzdC4AQE9mZmVuY2VRdWV1ZUVyYXMAALEPBAAwdQEgVHJhY2tzIHRoZSBlcmFzIHRoYXQgY29udGFpbiBvZmZlbmNlcyBpbiBgT2ZmZW5jZVF1ZXVlYCwgc29ydGVkIGZyb20gKiplYXJsaWVzdCB0byBsYXRlc3QqKi4ATQEgLSBUaGlzIGVuc3VyZXMgZWZmaWNpZW50IHJldHJpZXZhbCBvZiB0aGUgb2xkZXN0IG9mZmVuY2Ugd2l0aG91dCBpdGVyYXRpbmcgdGhyb3VnaEAgYE9mZmVuY2VRdWV1ZWAuZQEgLSBXaGVuIGEgbmV3IG9mZmVuY2UgaXMgYWRkZWQgdG8gYE9mZmVuY2VRdWV1ZWAsIGl0cyBlcmEgaXMgKippbnNlcnRlZCBpbiBzb3J0ZWQgb3JkZXIqKmAgaWYgbm90IGFscmVhZHkgcHJlc2VudC5BASAtIFdoZW4gYWxsIG9mZmVuY2VzIGZvciBhbiBlcmEgYXJlIHByb2Nlc3NlZCwgaXQgaXMgKipyZW1vdmVkKiogZnJvbSB0aGlzIGxpc3QuFQEgLSBUaGUgbWF4aW11bSBsZW5ndGggb2YgdGhpcyB2ZWN0b3IgaXMgYm91bmRlZCBieSBgQm9uZGluZ0R1cmF0aW9uICt0ICAgT0ZGRU5DRV9RVUVVRV9FUkFTX0JPVU5EYC4AcQEgVGhpcyBlbGltaW5hdGVzIHRoZSBuZWVkIGZvciBleHBlbnNpdmUgaXRlcmF0aW9uIGFuZCBzb3J0aW5nIHdoZW4gZmV0Y2hpbmcgdGhlIG5leHQgb2ZmZW5jZTAgdG8gcHJvY2Vzcy4ARFByb2Nlc3NpbmdPZmZlbmNlAAC1DwQAMB0BIFRyYWNrcyB0aGUgY3VycmVudGx5IHByb2Nlc3NlZCBvZmZlbmNlIHJlY29yZCBmcm9tIHRoZSBgT2ZmZW5jZVF1ZXVlYC4ATQEgLSBXaGVuIHByb2Nlc3Npbmcgb2ZmZW5jZXMsIGFuIG9mZmVuY2UgcmVjb3JkIGlzICoqcG9wcGVkKiogZnJvbSB0aGUgb2xkZXN0IGVyYSBpboggICBgT2ZmZW5jZVF1ZXVlYCBhbmQgc3RvcmVkIGhlcmUudQEgLSBUaGUgZnVuY3Rpb24gYHByb2Nlc3Nfb2ZmZW5jZWAgcmVhZHMgZnJvbSB0aGlzIHN0b3JhZ2UsIHByb2Nlc3Npbmcgb25lIHBhZ2Ugb2YgZXhwb3N1cmUgYXQoICAgYSB0aW1lLmUBIC0gQWZ0ZXIgcHJvY2Vzc2luZyBhIHBhZ2UsIHRoZSBgZXhwb3N1cmVfcGFnZWAgY291bnQgaXMgKipkZWNyZW1lbnRlZCoqIHVudGlsIGl0IHJlYWNoZXMgICAgemVyby4lASAtIE9uY2UgZnVsbHkgcHJvY2Vzc2VkLCB0aGUgb2ZmZW5jZSByZWNvcmQgaXMgcmVtb3ZlZCBmcm9tIHRoaXMgc3RvcmFnZS4AZQEgVGhpcyBlbnN1cmVzIHRoYXQgb2ZmZW5jZXMgYXJlIHByb2Nlc3NlZCBpbmNyZW1lbnRhbGx5LCBwcmV2ZW50aW5nIGV4Y2Vzc2l2ZSBjb21wdXRhdGlvbvwgaW4gYSBzaW5nbGUgYmxvY2sgd2hpbGUgbWFpbnRhaW5pbmcgY29ycmVjdCBzbGFzaGluZyBiZWhhdmlvci4AQFVuYXBwbGllZFNsYXNoZXMAAQgFBbkPvQ8EAATEIEFsbCB1bmFwcGxpZWQgc2xhc2hlcyB0aGF0IGFyZSBxdWV1ZWQgZm9yIGxhdGVyLgBAQ2FuY2VsbGVkU2xhc2hlcwEBBAU4xQ8EABRRASBDYW5jZWxsZWQgc2xhc2hlcyBieSBlcmEgYW5kIHZhbGlkYXRvciB3aXRoIG1heGltdW0gc2xhc2ggZnJhY3Rpb24gdG8gYmUgY2FuY2VsbGVkLgBFASBXaGVuIHNsYXNoZXMgYXJlIGNhbmNlbGxlZCBieSBnb3Zlcm5hbmNlLCB0aGlzIHN0b3JlcyB0aGUgZXJhIGFuZCB0aGUgdmFsaWRhdG9yc1UBIHdob3NlIHNsYXNoZXMgc2hvdWxkIGJlIGNhbmNlbGxlZCwgYWxvbmcgd2l0aCB0aGUgbWF4aW11bSBzbGFzaCBmcmFjdGlvbiB0aGF0IHNob3VsZIQgYmUgY2FuY2VsbGVkIGZvciBlYWNoIHZhbGlkYXRvci4ATFZhbGlkYXRvclNsYXNoSW5FcmEAAQgFBY0MyQ8EAAhFASBBbGwgc2xhc2hpbmcgZXZlbnRzIG9uIHZhbGlkYXRvcnMsIG1hcHBlZCBieSBlcmEgdG8gdGhlIGhpZ2hlc3Qgc2xhc2ggcHJvcG9ydGlvbnAgYW5kIHNsYXNoIHZhbHVlIG9mIHRoZSBlcmEuADhDaGlsbFRocmVzaG9sZAAAEQcEAAxRASBUaGUgdGhyZXNob2xkIGZvciB3aGVuIHVzZXJzIGNhbiBzdGFydCBjYWxsaW5nIGBjaGlsbF9vdGhlcmAgZm9yIG90aGVyIHZhbGlkYXRvcnMgL1kBIG5vbWluYXRvcnMuIFRoZSB0aHJlc2hvbGQgaXMgY29tcGFyZWQgdG8gdGhlIGFjdHVhbCBudW1iZXIgb2YgdmFsaWRhdG9ycyAvIG5vbWluYXRvcnMpASAoYENvdW50Rm9yKmApIGluIHRoZSBzeXN0ZW0gY29tcGFyZWQgdG8gdGhlIGNvbmZpZ3VyZWQgbWF4IChgTWF4KkNvdW50YCkuAExWb3RlclNuYXBzaG90U3RhdHVzAQDNDwQCEIAgVm90ZXIgc25hcHNob3QgcHJvZ3Jlc3Mgc3RhdHVzLgBpASBJZiB0aGUgc3RhdHVzIGlzIGBPbmdvaW5nYCwgaXQga2VlcHMgYSBjdXJzb3Igb2YgdGhlIGxhc3Qgdm90ZXIgcmV0cmlldmVkIHRvIHByb2NlZWQgd2hlboQgY3JlYXRpbmcgdGhlIG5leHQgc25hcHNob3QgcGFnZS4AQE5leHRFbGVjdGlvblBhZ2UAADgEABgBASBLZWVwcyB0cmFjayBvZiBhbiBvbmdvaW5nIG11bHRpLXBhZ2UgZWxlY3Rpb24gc29sdXRpb24gcmVxdWVzdC4AZQEgSWYgYFNvbWUoXylgYCwgaXQgaXMgdGhlIG5leHQgcGFnZSB0aGF0IHdlIGludGVuZCB0byBlbGVjdC4gSWYgYE5vbmVgLCB3ZSBhcmUgbm90IGluIHRoZUggZWxlY3Rpb24gcHJvY2Vzcy4AOQEgVGhpcyBpcyBvbmx5IHNldCBpbiBtdWx0aS1ibG9jayBlbGVjdGlvbnMuIFNob3VsZCBhbHdheXMgYmUgYE5vbmVgIG90aGVyd2lzZS4AQEVsZWN0YWJsZVN0YXNoZXMBANEPBAAEUQEgQSBib3VuZGVkIGxpc3Qgb2YgdGhlICJlbGVjdGFibGUiIHN0YXNoZXMgdGhhdCByZXN1bHRlZCBmcm9tIGEgc3VjY2Vzc2Z1bCBlbGVjdGlvbi4APEVyYVBydW5pbmdTdGF0ZQABBAU41Q8EAARFASBUcmFja3MgdGhlIGN1cnJlbnQgc3RlcCBvZiBlcmEgcHJ1bmluZyBwcm9jZXNzIGZvciBlYWNoIGVyYSBiZWluZyBsYXppbHkgcHJ1bmVkLgAB/QYAAW0JADAwSGlzdG9yeURlcHRoOBBUAAAANIwgTnVtYmVyIG9mIGVyYXMgdG8ga2VlcCBpbiBoaXN0b3J5LgDoIEZvbGxvd2luZyBpbmZvcm1hdGlvbiBpcyBrZXB0IGZvciBlcmFzIGluIGBbY3VycmVudF9lcmEgLSkBIEhpc3RvcnlEZXB0aCwgY3VycmVudF9lcmFdYDogYEVyYXNWYWxpZGF0b3JQcmVmc2AsIGBFcmFzVmFsaWRhdG9yUmV3YXJkYCzgIGBFcmFzUmV3YXJkUG9pbnRzYCwgYEVyYXNUb3RhbFN0YWtlYCwgYENsYWltZWRSZXdhcmRzYCysIGBFcmFzU3Rha2Vyc1BhZ2VkYCwgYEVyYXNTdGFrZXJzT3ZlcnZpZXdgLgDkIE11c3QgYmUgbW9yZSB0aGFuIHRoZSBudW1iZXIgb2YgZXJhcyBkZWxheWVkIGJ5IHNlc3Npb24u+CBJLmUuIGFjdGl2ZSBlcmEgbXVzdCBhbHdheXMgYmUgaW4gaGlzdG9yeS4gSS5lLiBgYWN0aXZlX2VyYSA+xCBjdXJyZW50X2VyYSAtIGhpc3RvcnlfZGVwdGhgIG11c3QgYmUgZ3VhcmFudGVlZC4AEQEgSWYgbWlncmF0aW5nIGFuIGV4aXN0aW5nIHBhbGxldCBmcm9tIHN0b3JhZ2UgdmFsdWUgdG8gY29uZmlnIHZhbHVlLOwgdGhpcyBzaG91bGQgYmUgc2V0IHRvIHNhbWUgdmFsdWUgb3IgZ3JlYXRlciBhcyBpbiBzdG9yYWdlLgA4U2Vzc2lvbnNQZXJFcmE4EAYAAAAELQEgTnVtYmVyIG9mIHNlc3Npb25zIHBlciBlcmEsIGFzIHBlciB0aGUgcHJlZmVyZW5jZXMgb2YgdGhlICoqcmVsYXkgY2hhaW4qKi4ARFBsYW5uaW5nRXJhT2Zmc2V0OBAGAAAAOFEBIE51bWJlciBvZiBzZXNzaW9ucyBiZWZvcmUgdGhlIGVuZCBvZiBhbiBlcmEgd2hlbiB0aGUgZWxlY3Rpb24gZm9yIHRoZSBuZXh0IGVyYSB3aWxsHCBzdGFydC4AXQEgLSBUaGlzIGRldGVybWluZXMgaG93IG1hbnkgc2Vzc2lvbnMgKipiZWZvcmUqKiB0aGUgbGFzdCBzZXNzaW9uIG9mIHRoZSBlcmEgdGhlIHN0YWtpbmeEICAgZWxlY3Rpb24gcHJvY2VzcyBzaG91bGQgYmVnaW4uTQEgLSBUaGUgdmFsdWUgaXMgYm91bmRlZCBiZXR3ZWVuICoqMSoqIChlbGVjdGlvbiBzdGFydHMgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgbGFzdF0BICAgc2Vzc2lvbikgYW5kIGBTZXNzaW9uc1BlckVyYWAgKGVsZWN0aW9uIHN0YXJ0cyBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBmaXJzdCBzZXNzaW9uPCAgIG9mIHRoZSBlcmEpLgA0ICMjIyBFeGFtcGxlOkkBIC0gSWYgYFNlc3Npb25zUGVyRXJhID0gNmAgYW5kIGBQbGFubmluZ0VyYU9mZnNldCA9IDFgLCB0aGUgZWxlY3Rpb24gc3RhcnRzIGF0IHRoZZAgICBiZWdpbm5pbmcgb2Ygc2Vzc2lvbiBgNiAtIDEgPSA1YC5dASAtIElmIGBQbGFubmluZ0VyYU9mZnNldCA9IDZgLCB0aGUgZWxlY3Rpb24gc3RhcnRzIGF0IHRoZSBiZWdpbm5pbmcgb2Ygc2Vzc2lvbiBgNiAtIDYgPeggICAwYCwgbWVhbmluZyBpdCBzdGFydHMgYXQgdGhlIHZlcnkgYmVnaW5uaW5nIG9mIHRoZSBlcmEuADxCb25kaW5nRHVyYXRpb244EBwAAAAU5CBOdW1iZXIgb2YgZXJhcyB0aGF0IHN0YWtlZCBmdW5kcyBtdXN0IHJlbWFpbiBib25kZWQgZm9yLgBNASBUaGlzIGlzIHRoZSBib25kaW5nIGR1cmF0aW9uIGZvciB2YWxpZGF0b3JzLiBOb21pbmF0b3JzIG1heSBoYXZlIGEgc2hvcnRlciBib25kaW5nAQEgZHVyYXRpb24gd2hlbiBbYEFyZU5vbWluYXRvcnNTbGFzaGFibGVgXSBpcyBzZXQgdG8gYGZhbHNlYCAoc2VlzCBbYFN0YWtpbmdJbnRlcmZhY2U6Om5vbWluYXRvcl9ib25kaW5nX2R1cmF0aW9uYF0pLgBsTm9taW5hdG9yRmFzdFVuYm9uZER1cmF0aW9uOBAcAAAAIC0BIE51bWJlciBvZiBlcmFzIG5vbWluYXRvcnMgbXVzdCB3YWl0IHRvIHVuYm9uZCB3aGVuIHRoZXkgYXJlIG5vdCBzbGFzaGFibGUuAEUBIFRoaXMgZHVyYXRpb24gaXMgdXNlZCBmb3Igbm9taW5hdG9ycyB3aGVuIFtgQXJlTm9taW5hdG9yc1NsYXNoYWJsZWBdIGlzIGBmYWxzZWAuXQEgV2hlbiBub21pbmF0b3JzIGFyZSBzbGFzaGFibGUsIHRoZXkgdXNlIHRoZSBmdWxsIFtgQ29uZmlnOjpCb25kaW5nRHVyYXRpb25gXSB0byBlbnN1cmXQIHNsYXNoZXMgY2FuIGJlIGFwcGxpZWQgZHVyaW5nIHRoZSB1bmJvbmRpbmcgcGVyaW9kLgA9ASBTZXR0aW5nIHRoaXMgdG8gYSBsb3dlciB2YWx1ZSAoZS5nLiwgMSBlcmEpIGFsbG93cyBmb3IgZmFzdGVyIHdpdGhkcmF3YWxzIHdoZW60IG5vbWluYXRvcnMgYXJlIG5vdCBzdWJqZWN0IHRvIHNsYXNoaW5nIHJpc2suAEhTbGFzaERlZmVyRHVyYXRpb244EBsAAAAQAQEgTnVtYmVyIG9mIGVyYXMgdGhhdCBzbGFzaGVzIGFyZSBkZWZlcnJlZCBieSwgYWZ0ZXIgY29tcHV0YXRpb24uAA0BIFRoaXMgc2hvdWxkIGJlIGxlc3MgdGhhbiB0aGUgYm9uZGluZyBkdXJhdGlvbi4gU2V0IHRvIDAgaWYgc2xhc2hlcxUBIHNob3VsZCBiZSBhcHBsaWVkIGltbWVkaWF0ZWx5LCB3aXRob3V0IG9wcG9ydHVuaXR5IGZvciBpbnRlcnZlbnRpb24uADhEaXNhYmxlTWludGluZ5kBBAAoKQEgV2hlbiBgdHJ1ZWAsIHN0YWtpbmcgZG9lcyBub3QgbWludC4gSXQgZXhwZWN0cyBhbiBleHRlcm5hbCBzb3VyY2UgdG8gZnVuZBkBIHRoZSBnZW5lcmFsIHJld2FyZCBwb3QuIEF0IGVyYSBib3VuZGFyeSwgcmV3YXJkcyBhcmUgc25hcHNob3R0ZWQgZnJvbZAgdGhlIHBvdC4gYEVyYVBheW91dGAgaXMgbm90IGNhbGxlZC4AMQEgV2hlbiBgZmFsc2VgLCBzdGFraW5nIHVzZXMgdGhlIGxlZ2FjeSBwYXRoOiBgRXJhUGF5b3V0YCBjb21wdXRlcyBpbmZsYXRpb24ssCB0b2tlbnMgYXJlIG1pbnRlZCBvbi10aGUtZmx5IGR1cmluZyBwYXlvdXQuACEBICoqSXJyZXZlcnNpYmxlKio6IG9uY2Ugc2V0IHRvIGB0cnVlYCwgbXVzdCBuZXZlciBiZSBzd2l0Y2hlZCBiYWNrLiBFcmFzMQEgY3JlYXRlZCBpbiBub24tbWludGluZyBtb2RlIGhhdmUgZnVuZGVkIHJld2FyZCBwb3RzIOKAlCBzd2l0Y2hpbmcgdG8gbGVnYWN5yCB3b3VsZCBvcnBoYW4gdGhvc2UgcG90cyBhbmQgY2F1c2UgZG91YmxlLW1pbnRpbmcuAExNYXhFeHBvc3VyZVBhZ2VTaXplOBAAAgAALLAgVGhlIG1heGltdW0gc2l6ZSBvZiBlYWNoIGBUOjpFeHBvc3VyZVBhZ2VgLgApASBBbiBgRXhwb3N1cmVQYWdlYCBpcyB3ZWFrbHkgYm91bmRlZCB0byBhIG1heGltdW0gb2YgYE1heEV4cG9zdXJlUGFnZVNpemVgMCBub21pbmF0b3JzLgAhASBGb3Igb2xkZXIgbm9uLXBhZ2VkIGV4cG9zdXJlLCBhIHJld2FyZCBwYXlvdXQgd2FzIHJlc3RyaWN0ZWQgdG8gdGhlIHRvcCEBIGBNYXhFeHBvc3VyZVBhZ2VTaXplYCBub21pbmF0b3JzLiBUaGlzIGlzIHRvIGxpbWl0IHRoZSBpL28gY29zdCBmb3IgdGhlSCBub21pbmF0b3IgcGF5b3V0LgA9ASBOb3RlOiBgTWF4RXhwb3N1cmVQYWdlU2l6ZWAgaXMgdXNlZCB0byBib3VuZCBgQ2xhaW1lZFJld2FyZHNgIGFuZCBpcyB1bnNhZmUgdG+sIHJlZHVjZSB3aXRob3V0IGhhbmRsaW5nIGl0IGluIGEgbWlncmF0aW9uLgA8TWF4VmFsaWRhdG9yU2V0OBDoAwAAEBUBIFRoZSBhYnNvbHV0ZSBtYXhpbXVtIG9mIHdpbm5lciB2YWxpZGF0b3JzIHRoaXMgcGFsbGV0IHNob3VsZCByZXR1cm4uAEEBIEFzIHRoaXMgcGFsbGV0IHN1cHBvcnRzIG11bHRpLWJsb2NrIGVsZWN0aW9uLCB0aGUgc2V0IG9mIHdpbm5lciB2YWxpZGF0b3JzICpwZXKMIGVsZWN0aW9uKiBpcyBib3VuZGVkIGJ5IHRoaXMgdHlwZS4ASE1heFVubG9ja2luZ0NodW5rczgQIAAAACgFASBUaGUgbWF4aW11bSBudW1iZXIgb2YgYHVubG9ja2luZ2AgY2h1bmtzIGEgW2BTdGFraW5nTGVkZ2VyYF0gY2FuCQEgaGF2ZS4gRWZmZWN0aXZlbHkgZGV0ZXJtaW5lcyBob3cgbWFueSB1bmlxdWUgZXJhcyBhIHN0YWtlciBtYXkgYmU4IHVuYm9uZGluZyBpbi4A+CBOb3RlOiBgTWF4VW5sb2NraW5nQ2h1bmtzYCBpcyB1c2VkIGFzIHRoZSB1cHBlciBib3VuZCBmb3IgdGhlAQEgYEJvdW5kZWRWZWNgIGl0ZW0gYFN0YWtpbmdMZWRnZXIudW5sb2NraW5nYC4gU2V0dGluZyB0aGlzIHZhbHVlBQEgbG93ZXIgdGhhbiB0aGUgZXhpc3RpbmcgdmFsdWUgY2FuIGxlYWQgdG8gaW5jb25zaXN0ZW5jaWVzIGluIHRoZQkBIGBTdGFraW5nTGVkZ2VyYCBhbmQgd2lsbCBuZWVkIHRvIGJlIGhhbmRsZWQgcHJvcGVybHkgaW4gYSBydW50aW1lBQEgbWlncmF0aW9uLiBUaGUgdGVzdCBgcmVkdWNpbmdfbWF4X3VubG9ja2luZ19jaHVua3NfYWJydXB0YCBzaG93czQgdGhpcyBlZmZlY3QuADhNYXhFcmFEdXJhdGlvbigggGLuAQAAAAAouCBNYXhpbXVtIGFsbG93ZWQgZXJhIGR1cmF0aW9uIGluIG1pbGxpc2Vjb25kcy4AUQEgVGhpcyBwcm92aWRlcyBhIGRlZmVuc2l2ZSB1cHBlciBib3VuZCB0byBjYXAgdGhlIGVmZmVjdGl2ZSBlcmEgZHVyYXRpb24sIHByZXZlbnRpbmdhASBleGNlc3NpdmVseSBsb25nIGVyYXMgZnJvbSBjYXVzaW5nIHJ1bmF3YXkgaW5mbGF0aW9uIChlLmcuLCBkdWUgdG8gYnVncykuIElmIHRoZSBhY3R1YWwVASBlcmEgZHVyYXRpb24gZXhjZWVkcyB0aGlzIHZhbHVlLCBpdCB3aWxsIGJlIGNsYW1wZWQgdG8gdGhpcyBtYXhpbXVtLgABASBFeGFtcGxlOiBGb3IgYW4gaWRlYWwgZXJhIGR1cmF0aW9uIG9mIDI0IGhvdXJzICg4Niw0MDAsMDAwIG1zKSywIHRoaXMgY2FuIGJlIHNldCB0byA2MDQsODAwLDAwMCBtcyAoNyBkYXlzKS4A9CBPbmx5IHVzZWQgaW4gbGVnYWN5IG1pbnRpbmcgbW9kZSAoYERpc2FibGVNaW50aW5nID0gZmFsc2VgKS4APE1heFBydW5pbmdJdGVtczgQZAAAABQVASBNYXhpbXVtIG51bWJlciBvZiBzdG9yYWdlIGl0ZW1zIHRoYXQgY2FuIGJlIHBydW5lZCBpbiBhIHNpbmdsZSBjYWxsLgBZASBUaGlzIGNvbnRyb2xzIGhvdyBtYW55IHN0b3JhZ2UgaXRlbXMgY2FuIGJlIGRlbGV0ZWQgaW4gZWFjaCBjYWxsIHRvIGBwcnVuZV9lcmFfc3RlcGAuTQEgVGhpcyBzaG91bGQgYmUgc2V0IHRvIGEgY29uc2VydmF0aXZlIHZhbHVlIChlLmcuLCAxMDAtNTAwIGl0ZW1zKSB0byBlbnN1cmUgcHJ1bmluZ1UBIGRvZXNuJ3QgY29uc3VtZSB0b28gbXVjaCBibG9jayBzcGFjZS4gVGhlIGFjdHVhbCB3ZWlnaHQgaXMgZGV0ZXJtaW5lZCBieSBiZW5jaG1hcmtzLgAB2Q8ABDxDdXJyZW5jeUJhbGFuY2WVAQhRASBKdXN0IHRoZSBgQ3VycmVuY3k6OkJhbGFuY2VgIHR5cGU7IHdlIGhhdmUgdGhpcyBpdGVtIHRvIGFsbG93IHVzIHRvIGNvbnN0cmFpbiBpdCB0bzQgYEZyb208dTY0PmAuDF8+SQf3FqyJtjR9Fezs7cpyM4a8T1TMqYl2XoRLnwxoLHBvdF9hY2NvdW50BAxwb3TdDwQEvCBSZXNvbHZlIHRoZSBhY2NvdW50IElEIGZvciBhIGdpdmVuIHJld2FyZCBwb3QuAF8+SQf3FqyJtjR9Fezs7covGyMER8lg8/hD+M+xpwbKLHBvdF9iYWxhbmNlBAxwb3TdD5UBBLAgQ3VycmVudCBiYWxhbmNlIGhlbGQgaW4gYSBnaXZlbiByZXdhcmQgcG90LgBfPkkH9xasibY0fRXs7O3KVuubFKa89l5XnV0Aswk7bFRlcmFfcmV3YXJkX2FsbG9jYXRpb24EDGVyYTjlDwwlASBQZXItZXJhIHJld2FyZCBhbGxvY2F0aW9uIChzdGFrZXIgcmV3YXJkcyArIHZhbGlkYXRvciBpbmNlbnRpdmUgYnVkZ2V0KS4A+CBCb3RoIGZpZWxkcyBhcmUgemVybyBmb3IgZXJhcyBjcmVhdGVkIGluIGxlZ2FjeSBtaW50aW5nIG1vZGUuAFkAACBUcmVhc3VyeQEgVHJlYXN1cnkcNFByb3Bvc2FsQ291bnQBADgQAAAAABBBASBERVBSRUNBVEVEOiBhc3NvY2lhdGVkIHdpdGggYHNwZW5kX2xvY2FsYCBjYWxsIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gTWF5IDIwMjUuaQEgUmVmZXIgdG8gPGh0dHBzOi8vZ2l0aHViLmNvbS9wYXJpdHl0ZWNoL3BvbGthZG90LXNkay9wdWxsLzU5NjE+IGZvciBtaWdyYXRpb24gdG8gYHNwZW5kYC4ApCBOdW1iZXIgb2YgcHJvcG9zYWxzIHRoYXQgaGF2ZSBiZWVuIG1hZGUuACRQcm9wb3NhbHMAAQQFOOkPBAAQQQEgREVQUkVDQVRFRDogYXNzb2NpYXRlZCB3aXRoIGBzcGVuZF9sb2NhbGAgY2FsbCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIE1heSAyMDI1LmkBIFJlZmVyIHRvIDxodHRwczovL2dpdGh1Yi5jb20vcGFyaXR5dGVjaC9wb2xrYWRvdC1zZGsvcHVsbC81OTYxPiBmb3IgbWlncmF0aW9uIHRvIGBzcGVuZGAuAHwgUHJvcG9zYWxzIHRoYXQgaGF2ZSBiZWVuIG1hZGUuACxEZWFjdGl2YXRlZAEAlQFAAAAAAAAAAAAAAAAAAAAAAATwIFRoZSBhbW91bnQgd2hpY2ggaGFzIGJlZW4gcmVwb3J0ZWQgYXMgaW5hY3RpdmUgdG8gQ3VycmVuY3kuACRBcHByb3ZhbHMBAO0PBAAQQQEgREVQUkVDQVRFRDogYXNzb2NpYXRlZCB3aXRoIGBzcGVuZF9sb2NhbGAgY2FsbCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIE1heSAyMDI1LmkBIFJlZmVyIHRvIDxodHRwczovL2dpdGh1Yi5jb20vcGFyaXR5dGVjaC9wb2xrYWRvdC1zZGsvcHVsbC81OTYxPiBmb3IgbWlncmF0aW9uIHRvIGBzcGVuZGAuAPggUHJvcG9zYWwgaW5kaWNlcyB0aGF0IGhhdmUgYmVlbiBhcHByb3ZlZCBidXQgbm90IHlldCBhd2FyZGVkLgAoU3BlbmRDb3VudAEAOBAAAAAABKQgVGhlIGNvdW50IG9mIHNwZW5kcyB0aGF0IGhhdmUgYmVlbiBtYWRlLgAYU3BlbmRzAAEEBTjxDwQABNAgU3BlbmRzIHRoYXQgaGF2ZSBiZWVuIGFwcHJvdmVkIGFuZCBiZWluZyBwcm9jZXNzZWQuADxMYXN0U3BlbmRQZXJpb2QAADgEAATUIFRoZSBibG9ja251bWJlciBmb3IgdGhlIGxhc3QgdHJpZ2dlcmVkIHNwZW5kIHBlcmlvZC4AAUkHCAMClQFUaGUgYHNwZW5kX2xvY2FsYCBjYWxsIHdpbGwgYmUgcmVtb3ZlZCBieSBNYXkgMjAyNS4gTWlncmF0ZSB0byB0aGUgbmV3IGZsb3cgYW5kIHVzZSB0aGUgYHNwZW5kYCBjYWxsLgAEArUBVGhlIGByZW1vdmVfYXBwcm92YWxgIGNhbGwgd2lsbCBiZSByZW1vdmVkIGJ5IE1heSAyMDI1LiBJdCBhc3NvY2lhdGVkIHdpdGggdGhlIGRlcHJlY2F0ZWQgYHNwZW5kX2xvY2FsYCBjYWxsLgABfQkAGCxTcGVuZFBlcmlvZDgQgFEBAASIIFBlcmlvZCBiZXR3ZWVuIHN1Y2Nlc3NpdmUgc3BlbmRzLgAQQnVybjEBEAAAAAAEEQEgUGVyY2VudGFnZSBvZiBzcGFyZSBmdW5kcyAoaWYgYW55KSB0aGF0IGFyZSBidXJudCBwZXIgc3BlbmQgcGVyaW9kLgAgUGFsbGV0SWRFCyBweS90cnNyeQQZASBUaGUgdHJlYXN1cnkncyBwYWxsZXQgaWQsIHVzZWQgZm9yIGRlcml2aW5nIGl0cyBzb3ZlcmVpZ24gYWNjb3VudCBJRC4AME1heEFwcHJvdmFsczgQZAAAABhBASBERVBSRUNBVEVEOiBhc3NvY2lhdGVkIHdpdGggYHNwZW5kX2xvY2FsYCBjYWxsIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gTWF5IDIwMjUuaQEgUmVmZXIgdG8gPGh0dHBzOi8vZ2l0aHViLmNvbS9wYXJpdHl0ZWNoL3BvbGthZG90LXNkay9wdWxsLzU5NjE+IGZvciBtaWdyYXRpb24gdG8gYHNwZW5kYC4AFQEgVGhlIG1heGltdW0gbnVtYmVyIG9mIGFwcHJvdmFscyB0aGF0IGNhbiB3YWl0IGluIHRoZSBzcGVuZGluZyBxdWV1ZS4ATQEgTk9URTogVGhpcyBwYXJhbWV0ZXIgaXMgYWxzbyB1c2VkIHdpdGhpbiB0aGUgQm91bnRpZXMgUGFsbGV0IGV4dGVuc2lvbiBpZiBlbmFibGVkLgAwUGF5b3V0UGVyaW9kOBCAxhMABBkBIFRoZSBwZXJpb2QgZHVyaW5nIHdoaWNoIGFuIGFwcHJvdmVkIHRyZWFzdXJ5IHNwZW5kIGhhcyB0byBiZSBjbGFpbWVkLgAscG90X2FjY291bnQEgG1vZGxweS90cnNyeQAAAAAAAAAAAAAAAAAAAAAAAAAABKAgR2V0cyB0aGlzIHBhbGxldCdzIGRlcml2ZWQgcG90IGFjY291bnQuAAH5DwAIJEFzc2V0S2luZE0HBC0BIFR5cGUgcGFyYW1ldGVyIHJlcHJlc2VudGluZyB0aGUgYXNzZXQga2luZHMgdG8gYmUgc3BlbnQgZnJvbSB0aGUgdHJlYXN1cnkuLEJlbmVmaWNpYXJ5UQcEXQEgVHlwZSBwYXJhbWV0ZXIgdXNlZCB0byBpZGVudGlmeSB0aGUgYmVuZWZpY2lhcmllcyBlbGlnaWJsZSB0byByZWNlaXZlIHRyZWFzdXJ5IHNwZW5kcy4AWgAAQENvbnZpY3Rpb25Wb3RpbmcBQENvbnZpY3Rpb25Wb3RpbmcIJFZvdGluZ0ZvcgEBCAUF/Q8BENgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIdQEgQWxsIHZvdGluZyBmb3IgYSBwYXJ0aWN1bGFyIHZvdGVyIGluIGEgcGFydGljdWxhciB2b3RpbmcgY2xhc3MuIFdlIHN0b3JlIHRoZSBiYWxhbmNlIGZvciB0aGWcIG51bWJlciBvZiB2b3RlcyB0aGF0IHdlIGhhdmUgcmVjb3JkZWQuADRDbGFzc0xvY2tzRm9yAQEEBQQhEAQADGkBIFRoZSB2b3RpbmcgY2xhc3NlcyB3aGljaCBoYXZlIGEgbm9uLXplcm8gbG9jayByZXF1aXJlbWVudCBhbmQgdGhlIGxvY2sgYW1vdW50cyB3aGljaCB0aGV5bQEgcmVxdWlyZS4gVGhlIGFjdHVhbCBhbW91bnQgbG9ja2VkIG9uIGJlaGFsZiBvZiB0aGlzIHBhbGxldCBzaG91bGQgYWx3YXlzIGJlIHRoZSBtYXhpbXVtIG9mLCB0aGlzIGxpc3QuAAFVBwABgQkACCBNYXhWb3RlczgQAAIAABDwIFRoZSBtYXhpbXVtIG51bWJlciBvZiBjb25jdXJyZW50IHZvdGVzIGFuIGFjY291bnQgbWF5IGhhdmUuAFUBIEFsc28gdXNlZCB0byBjb21wdXRlIHdlaWdodCwgYW4gb3Zlcmx5IGxhcmdlIHZhbHVlIGNhbiBsZWFkIHRvIGV4dHJpbnNpY3Mgd2l0aCBsYXJnZcAgd2VpZ2h0IGVzdGltYXRpb246IHNlZSBgZGVsZWdhdGVgIGZvciBpbnN0YW5jZS4ARFZvdGVMb2NraW5nUGVyaW9kOBDAiQEAEJAgVGhlIG1pbmltdW0gcGVyaW9kIG9mIHZvdGUgbG9ja2luZy4AZQEgSXQgc2hvdWxkIGJlIG5vIHNob3J0ZXIgdGhhbiBlbmFjdG1lbnQgcGVyaW9kIHRvIGVuc3VyZSB0aGF0IGluIHRoZSBjYXNlIG9mIGFuIGFwcHJvdmFsLEkBIHRob3NlIHN1Y2Nlc3NmdWwgdm90ZXJzIGFyZSBsb2NrZWQgaW50byB0aGUgY29uc2VxdWVuY2VzIHRoYXQgdGhlaXIgdm90ZXMgZW50YWlsLgABLRAAAABbAAAkUmVmZXJlbmRhASRSZWZlcmVuZGEUPFJlZmVyZW5kdW1Db3VudAEAOBAAAAAABDEBIFRoZSBuZXh0IGZyZWUgcmVmZXJlbmR1bSBpbmRleCwgYWthIHRoZSBudW1iZXIgb2YgcmVmZXJlbmRhIHN0YXJ0ZWQgc28gZmFyLgBEUmVmZXJlbmR1bUluZm9Gb3IAAQQCODEQBAAEtCBJbmZvcm1hdGlvbiBjb25jZXJuaW5nIGFueSBnaXZlbiByZWZlcmVuZHVtLgAoVHJhY2tRdWV1ZQEBBAX5A1EQBAAQXQEgVGhlIHNvcnRlZCBsaXN0IG9mIHJlZmVyZW5kYSByZWFkeSB0byBiZSBkZWNpZGVkIGJ1dCBub3QgeWV0IGJlaW5nIGRlY2lkZWQsIG9yZGVyZWQgYnl8IGNvbnZpY3Rpb24td2VpZ2h0ZWQgYXBwcm92YWxzLgBBASBUaGlzIHNob3VsZCBiZSBlbXB0eSBpZiBgRGVjaWRpbmdDb3VudGAgaXMgbGVzcyB0aGFuIGBUcmFja0luZm86Om1heF9kZWNpZGluZ2AuADREZWNpZGluZ0NvdW50AQEEBfkDOBAAAAAABMQgVGhlIG51bWJlciBvZiByZWZlcmVuZGEgYmVpbmcgZGVjaWRlZCBjdXJyZW50bHkuAChNZXRhZGF0YU9mAAEEAjhABAAYBQEgVGhlIG1ldGFkYXRhIGlzIGEgZ2VuZXJhbCBpbmZvcm1hdGlvbiBjb25jZXJuaW5nIHRoZSByZWZlcmVuZHVtLkkBIFRoZSBgSGFzaGAgcmVmZXJzIHRvIHRoZSBwcmVpbWFnZSBvZiB0aGUgYFByZWltYWdlc2AgcHJvdmlkZXIgd2hpY2ggY2FuIGJlIGEgSlNPToggZHVtcCBvciBJUEZTIGhhc2ggb2YgYSBKU09OIGZpbGUuAHUBIENvbnNpZGVyIGEgZ2FyYmFnZSBjb2xsZWN0aW9uIGZvciBhIG1ldGFkYXRhIG9mIGZpbmlzaGVkIHJlZmVyZW5kdW1zIHRvIGB1bnJlcXVlc3RgIChyZW1vdmUpRCBsYXJnZSBwcmVpbWFnZXMuAAFpBwABhQkAFERTdWJtaXNzaW9uRGVwb3NpdJUBQFVN0sIHAAAAAAAAAAAAAAAENQEgVGhlIG1pbmltdW0gYW1vdW50IHRvIGJlIHVzZWQgYXMgYSBkZXBvc2l0IGZvciBhIHB1YmxpYyByZWZlcmVuZHVtIHByb3Bvc2FsLgAkTWF4UXVldWVkOBBkAAAABOQgTWF4aW11bSBzaXplIG9mIHRoZSByZWZlcmVuZHVtIHF1ZXVlIGZvciBhIHNpbmdsZSB0cmFjay4ARFVuZGVjaWRpbmdUaW1lb3V0OBCAEwMACFUBIFRoZSBudW1iZXIgb2YgYmxvY2tzIGFmdGVyIHN1Ym1pc3Npb24gdGhhdCBhIHJlZmVyZW5kdW0gbXVzdCBiZWdpbiBiZWluZyBkZWNpZGVkIGJ5LuQgT25jZSB0aGlzIHBhc3NlcywgdGhlbiBhbnlvbmUgbWF5IGNhbmNlbCB0aGUgcmVmZXJlbmR1bS4ANEFsYXJtSW50ZXJ2YWw4EAEAAAAMXQEgUXVhbnRpemF0aW9uIGxldmVsIGZvciB0aGUgcmVmZXJlbmR1bSB3YWtldXAgc2NoZWR1bGVyLiBBIGhpZ2hlciBudW1iZXIgd2lsbCByZXN1bHQgaW5dASBmZXdlciBzdG9yYWdlIHJlYWRzL3dyaXRlcyBuZWVkZWQgZm9yIHNtYWxsZXIgdm90ZXJzLCBidXQgYWxzbyByZXN1bHQgaW4gZGVsYXlzIHRvIHRoZVUBIGF1dG9tYXRpYyByZWZlcmVuZHVtIHN0YXR1cyBjaGFuZ2VzLiBFeHBsaWNpdCBzZXJ2aWNpbmcgaW5zdHJ1Y3Rpb25zIGFyZSB1bmFmZmVjdGVkLgAYVHJhY2tzVRAVGkAAAGRyb290AAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAACDTPyWm1wsAAAAAAAAAAACwBAAAgBMDAEA4AABAOAAAApDXPg0AAAAAV0PeEwAAAABUQ94TAAAAAAAAypo7AAAAAABlzR0BAGR3aGl0ZWxpc3RlZF9jYWxsZXIAAAAAAAAAZAAAAFDI7DYqLwEAAAAAAAAAAAAsAQAAgBMDAGQAAABkAAAAAuyXJRAAAAAAe1c8FwAAAABCOS8SAAAAAAIOAIQAAAAAANbmHwEAAAAAOWJ5AgAAAAACAGR3aXNoX2Zvcl9jaGFuZ2UAAAAAAAAAAAAACgAAAKCQ2W1UXgIAAAAAAAAAAACwBAAAgBMDAEA4AABkAAAAApDXPg0AAAAAV0PeEwAAAABUQ94TAAAAAAAAypo7AAAAAABlzR0KAGRzdGFraW5nX2FkbWluAAAAAAAAAAAAAAAACgAAAChkdhuVlwAAAAAAAAAAAACwBAAAgBMDAAgHAABkAAAAAMlDMCQAZc0dAMqaOwJdb3gAAAAAAOgu7QAAAAAAjGiJ//////8LAGR0cmVhc3VyZXIAAAAAAAAAAAAAAAAAAAAACgAAAAgUfgVRHgAAAAAAAAAAAACwBAAAgBMDAIBwAABAOAAAApDXPg0AAAAAV0PeEwAAAABUQ94TAAAAAAAAypo7AAAAAABlzR0MAGRsZWFzZV9hZG1pbgAAAAAAAAAAAAAAAAAACgAAAChkdhuVlwAAAAAAAAAAAACwBAAAgBMDAAgHAABkAAAAAMlDMCQAZc0dAMqaOwJdb3gAAAAAAOgu7QAAAAAAjGiJ//////8NAGRmZWxsb3dzaGlwX2FkbWluAAAAAAAAAAAACgAAAChkdhuVlwAAAAAAAAAAAACwBAAAgBMDAAgHAABkAAAAAMlDMCQAZc0dAMqaOwJdb3gAAAAAAOgu7QAAAAAAjGiJ//////8OAGRnZW5lcmFsX2FkbWluAAAAAAAAAAAAAAAACgAAAChkdhuVlwAAAAAAAAAAAACwBAAAgBMDAAgHAABkAAAAApDXPg0AAAAAV0PeEwAAAABUQ94TAAAAAAJZovQCAAAAAKMpawUAAAAALmtK/f////8PAGRhdWN0aW9uX2FkbWluAAAAAAAAAAAAAAAACgAAAChkdhuVlwAAAAAAAAAAAACwBAAAgBMDAAgHAABkAAAAApDXPg0AAAAAV0PeEwAAAABUQ94TAAAAAAJZovQCAAAAAKMpawUAAAAALmtK/f////8UAGRyZWZlcmVuZHVtX2NhbmNlbGxlcgAAAAAA6AMAAFDI7DYqLwEAAAAAAAAAAACwBAAAwIkBAAgHAABkAAAAAMlDMCQAZc0dAMqaOwJdb3gAAAAAAOgu7QAAAAAAjGiJ//////8VAGRyZWZlcmVuZHVtX2tpbGxlcgAAAAAAAAAA6AMAAJDpnxLT6wUAAAAAAAAAAACwBAAAgBMDAAgHAABkAAAAAMlDMCQAZc0dAMqaOwJdb3gAAAAAAOgu7QAAAAAAjGiJ//////8eAGRzbWFsbF90aXBwZXIAAAAAAAAAAAAAAAAAyAAAAFVN0sIHAAAAAAAAAAAAAAAKAAAAwIkBAGQAAAAKAAAAAEmRSRUAZc0dAMqaOwL5uhgAAAAAACpNMQAAAAAAa1nn//////8fAGRiaWdfdGlwcGVyAAAAAAAAAAAAAAAAAAAAZAAAAFIFN5xNAAAAAAAAAAAAAABkAAAAwIkBAFgCAABkAAAAAEmRSRUAZc0dAMqaOwJpTz8AAAAAADWWfQAAAAAA5TTB//////8gAGRzbWFsbF9zcGVuZGVyAAAAAAAAAAAAAAAAMgAAADQ1JhoIAwAAAAAAAAAAAABgCQAAgBMDACAcAABAOAAAAMlDMCQAZc0dAMqaOwJdb3gAAAAAAOgu7QAAAAAAjGiJ//////8hAGRtZWRpdW1fc3BlbmRlcgAAAAAAAAAAAAAAMgAAAGhqTDQQBgAAAAAAAAAAAABgCQAAgBMDAEA4AABAOAAAAFsB9jAAZc0dAMqaOwIRYdsAAAAAAL/RqgEAAAAAIJcq//////8iAGRiaWdfc3BlbmRlcgAAAAAAAAAAAAAAAAAAMgAAANDUmGggDAAAAAAAAAAAAABgCQAAgBMDAIBwAABAOAAAAADKmjsAZc0dAMqaOwJBPLABAAAAAHVdNAMAAAAARdFl/v////8MSCBBIGxpc3Qgb2YgdHJhY2tzLgBdASBOb3RlOiBpZiB0aGUgdHJhY2tzIGFyZSBkeW5hbWljLCB0aGUgdmFsdWUgaW4gdGhlIHN0YXRpYyBtZXRhZGF0YSBtaWdodCBiZSBpbmFjY3VyYXRlLgABbRAADCxSdW50aW1lQ2FsbCAAFFZvdGVzlQEEzCBUaGUgY291bnRpbmcgdHlwZSBmb3Igdm90ZXMuIFVzdWFsbHkganVzdCBiYWxhbmNlLhRUYWxseYkJBEwgVGhlIHRhbGx5aW5nIHR5cGUuAFwAABxPcmlnaW5zAAAAAAAAAF0AACRXaGl0ZWxpc3QBJFdoaXRlbGlzdAQ8V2hpdGVsaXN0ZWRDYWxsAAEEBUAQBAAAAAF9BwABjQkAAAFxEAAELFJ1bnRpbWVDYWxsIARsIFRoZSBvdmVyYXJjaGluZyBjYWxsIHR5cGUuAF4AACBCb3VudGllcwEgQm91bnRpZXMQLEJvdW50eUNvdW50AQA4EAAAAAAEwCBOdW1iZXIgb2YgYm91bnR5IHByb3Bvc2FscyB0aGF0IGhhdmUgYmVlbiBtYWRlLgAgQm91bnRpZXMAAQQFOHUQBAAEeCBCb3VudGllcyB0aGF0IGhhdmUgYmVlbiBtYWRlLgBIQm91bnR5RGVzY3JpcHRpb25zAAEEBTh9EAQABIAgVGhlIGRlc2NyaXB0aW9uIG9mIGVhY2ggYm91bnR5LgA8Qm91bnR5QXBwcm92YWxzAQDtDwQABOwgQm91bnR5IGluZGljZXMgdGhhdCBoYXZlIGJlZW4gYXBwcm92ZWQgYnV0IG5vdCB5ZXQgZnVuZGVkLgABgQcAAZ0JACREQm91bnR5RGVwb3NpdEJhc2WVAUBSBTecTQAAAAAAAAAAAAAABOggVGhlIGFtb3VudCBoZWxkIG9uIGRlcG9zaXQgZm9yIHBsYWNpbmcgYSBib3VudHkgcHJvcG9zYWwuAGBCb3VudHlEZXBvc2l0UGF5b3V0RGVsYXk4EAAAAAAEWQEgVGhlIGRlbGF5IHBlcmlvZCBmb3Igd2hpY2ggYSBib3VudHkgYmVuZWZpY2lhcnkgbmVlZCB0byB3YWl0IGJlZm9yZSBjbGFpbSB0aGUgcGF5b3V0LgBIQm91bnR5VXBkYXRlUGVyaW9kOBAABBcDGPQgVGhlIHRpbWUgbGltaXQgZm9yIGEgY3VyYXRvciB0byBhY3QgYmVmb3JlIGEgYm91bnR5IGV4cGlyZXMuAFUBIFRoZSBwZXJpb2QgdGhhdCBzdGFydHMgd2hlbiBhIGN1cmF0b3IgaXMgYXBwcm92ZWQsIGR1cmluZyB3aGljaCB0aGV5IG11c3QgZXhlY3V0ZSBvclUBIHVwZGF0ZSB0aGUgYm91bnR5IHZpYSBgZXh0ZW5kX2JvdW50eV9leHBpcnlgLiBJZiBtaXNzZWQsIHRoZSBib3VudHkgZXhwaXJlcywgYW5kIHRoZVUBIGN1cmF0b3IgbWF5IGJlIHNsYXNoZWQuIElmIGBCbG9ja051bWJlckZvcjo6TUFYYCwgYm91bnRpZXMgc3RheSBhY3RpdmUgaW5kZWZpbml0ZWx5LLggcmVtb3ZpbmcgdGhlIG5lZWQgZm9yIGBleHRlbmRfYm91bnR5X2V4cGlyeWAuAGBDdXJhdG9yRGVwb3NpdE11bHRpcGxpZXIxARAgoQcAEBkBIFRoZSBjdXJhdG9yIGRlcG9zaXQgaXMgY2FsY3VsYXRlZCBhcyBhIHBlcmNlbnRhZ2Ugb2YgdGhlIGN1cmF0b3IgZmVlLgA5ASBUaGlzIGRlcG9zaXQgaGFzIG9wdGlvbmFsIHVwcGVyIGFuZCBsb3dlciBib3VuZHMgd2l0aCBgQ3VyYXRvckRlcG9zaXRNYXhgIGFuZFQgYEN1cmF0b3JEZXBvc2l0TWluYC4AREN1cmF0b3JEZXBvc2l0TWF4YQREAQSCG84mAAAAAAAAAAAAAAAESQEgTWF4aW11bSBhbW91bnQgb2YgZnVuZHMgdGhhdCBzaG91bGQgYmUgcGxhY2VkIGluIGEgZGVwb3NpdCBmb3IgbWFraW5nIGEgcHJvcG9zYWwuAERDdXJhdG9yRGVwb3NpdE1pbmEERAFSoa7GAAAAAAAAAAAAAAAABEkBIE1pbmltdW0gYW1vdW50IG9mIGZ1bmRzIHRoYXQgc2hvdWxkIGJlIHBsYWNlZCBpbiBhIGRlcG9zaXQgZm9yIG1ha2luZyBhIHByb3Bvc2FsLgBIQm91bnR5VmFsdWVNaW5pbXVtlQFAaJqkhQ8AAAAAAAAAAAAAAARwIE1pbmltdW0gdmFsdWUgZm9yIGEgYm91bnR5LgBIRGF0YURlcG9zaXRQZXJCeXRllQFAFRYFAAAAAAAAAAAAAAAAAARhASBUaGUgYW1vdW50IGhlbGQgb24gZGVwb3NpdCBwZXIgYnl0ZSB3aXRoaW4gdGhlIHRpcCByZXBvcnQgcmVhc29uIG9yIGJvdW50eSBkZXNjcmlwdGlvbi4ATE1heGltdW1SZWFzb25MZW5ndGg4EABAAAAMiCBNYXhpbXVtIGFjY2VwdGFibGUgcmVhc29uIGxlbmd0aC4AZQEgQmVuY2htYXJrcyBkZXBlbmQgb24gdGhpcyB2YWx1ZSwgYmUgc3VyZSB0byB1cGRhdGUgd2VpZ2h0cyBmaWxlIHdoZW4gY2hhbmdpbmcgdGhpcyB2YWx1ZQABgRAAAABfAAA0Q2hpbGRCb3VudGllcwE0Q2hpbGRCb3VudGllcxxAQ2hpbGRCb3VudHlDb3VudAEAOBAAAAAACG0BIERFUFJFQ0FURUQ6IFJlcGxhY2VkIHdpdGggYFBhcmVudFRvdGFsQ2hpbGRCb3VudGllc2Agc3RvcmFnZSBpdGVtIGtlZXBpbmcgZGVkaWNhdGVkIGNvdW50c1UBIGZvciBlYWNoIHBhcmVudCBib3VudHkuIE51bWJlciBvZiB0b3RhbCBjaGlsZCBib3VudGllcy4gV2lsbCBiZSByZW1vdmVkIGluIE1heSAyMDI1LgBMUGFyZW50Q2hpbGRCb3VudGllcwEBBAU4OBAAAAAACMwgTnVtYmVyIG9mIGFjdGl2ZSBjaGlsZCBib3VudGllcyBwZXIgcGFyZW50IGJvdW50eS7gIE1hcCBvZiBwYXJlbnQgYm91bnR5IGluZGV4IHRvIG51bWJlciBvZiBjaGlsZCBib3VudGllcy4AYFBhcmVudFRvdGFsQ2hpbGRCb3VudGllcwEBBAU4OBAAAAAABEEBIE51bWJlciBvZiB0b3RhbCBjaGlsZCBib3VudGllcyBwZXIgcGFyZW50IGJvdW50eSwgaW5jbHVkaW5nIGNvbXBsZXRlZCBib3VudGllcy4ANENoaWxkQm91bnRpZXMAAQgFBfyFEAQABJQgQ2hpbGQgYm91bnRpZXMgdGhhdCBoYXZlIGJlZW4gYWRkZWQuAGRDaGlsZEJvdW50eURlc2NyaXB0aW9uc1YxAAEIBQX8fRAEAAwpASBUaGUgZGVzY3JpcHRpb24gb2YgZWFjaCBjaGlsZC1ib3VudHkuIEluZGV4ZWQgYnkgYChwYXJlbnRfaWQsIGNoaWxkX2lkKWAuAG0BIFRoaXMgaXRlbSByZXBsYWNlcyB0aGUgYENoaWxkQm91bnR5RGVzY3JpcHRpb25zYCBzdG9yYWdlIGl0ZW0gZnJvbSB0aGUgVjAgc3RvcmFnZSB2ZXJzaW9uLgBQVjBUb1YxQ2hpbGRCb3VudHlJZHMAAQQFOPwEABRdASBUaGUgbWFwcGluZyBvZiB0aGUgY2hpbGQgYm91bnR5IGlkcyBmcm9tIHN0b3JhZ2UgdmVyc2lvbiBgVjBgIHRvIHRoZSBuZXcgYFYxYCB2ZXJzaW9uLgBtASBUaGUgYFYwYCBpZHMgYmFzZWQgb24gdG90YWwgY2hpbGQgYm91bnR5IGNvdW50IFtgQ2hpbGRCb3VudHlDb3VudGBdYC4gVGhlIGBWMWAgdmVyc2lvbiBpZHNBASBiYXNlZCBvbiB0aGUgY2hpbGQgYm91bnR5IGNvdW50IHBlciBwYXJlbnQgYm91bnR5IFtgUGFyZW50VG90YWxDaGlsZEJvdW50aWVzYF0uZQEgVGhlIGl0ZW0gaW50ZW5kZWQgc29sZWx5IGZvciBjbGllbnQgY29udmVuaWVuY2UgYW5kIG5vdCB1c2VkIGluIHRoZSBwYWxsZXQncyBjb3JlIGxvZ2ljLgBMQ2hpbGRyZW5DdXJhdG9yRmVlcwEBBAU4lQFAAAAAAAAAAAAAAAAAAAAAAAQBASBUaGUgY3VtdWxhdGl2ZSBjaGlsZC1ib3VudHkgY3VyYXRvciBmZWUgZm9yIGVhY2ggcGFyZW50IGJvdW50eS4AAYUHAAGhCQAIZE1heEFjdGl2ZUNoaWxkQm91bnR5Q291bnQ4EGQAAAAEHQEgTWF4aW11bSBudW1iZXIgb2YgY2hpbGQgYm91bnRpZXMgdGhhdCBjYW4gYmUgYWRkZWQgdG8gYSBwYXJlbnQgYm91bnR5LgBcQ2hpbGRCb3VudHlWYWx1ZU1pbmltdW2VAUCkQl2NAQAAAAAAAAAAAAAABIggTWluaW11bSB2YWx1ZSBmb3IgYSBjaGlsZC1ib3VudHkuAAGNEAAAAGAAACRBc3NldFJhdGUBJEFzc2V0UmF0ZQRYQ29udmVyc2lvblJhdGVUb05hdGl2ZQABBAJNB40HBAAMHQEgTWFwcyBhbiBhc3NldCB0byBpdHMgZml4ZWQgcG9pbnQgcmVwcmVzZW50YXRpb24gaW4gdGhlIG5hdGl2ZSBiYWxhbmNlLgBNASBFLmcuIGBuYXRpdmVfYW1vdW50ID0gYXNzZXRfYW1vdW50ICogQ29udmVyc2lvblJhdGVUb05hdGl2ZTo6PFQ+OjpnZXQoYXNzZXRfa2luZClgAAGJBwABpQkAAAGREAAEJEFzc2V0S2luZE0HBEUBIFRoZSB0eXBlIGZvciBhc3NldCBraW5kcyBmb3Igd2hpY2ggdGhlIGNvbnZlcnNpb24gcmF0ZSB0byBuYXRpdmUgYmFsYW5jZSBpcyBzZXQuAGEAAEhNdWx0aUFzc2V0Qm91bnRpZXMBSE11bHRpQXNzZXRCb3VudGllcxwsQm91bnR5Q291bnQBADgQAAAAAATAIE51bWJlciBvZiBib3VudHkgcHJvcG9zYWxzIHRoYXQgaGF2ZSBiZWVuIG1hZGUuACBCb3VudGllcwABBAU4lRAEAAR4IEJvdW50aWVzIHRoYXQgaGF2ZSBiZWVuIG1hZGUuADRDaGlsZEJvdW50aWVzAAEIBQX8oRAEAAyUIENoaWxkIGJvdW50aWVzIHRoYXQgaGF2ZSBiZWVuIGFkZGVkLgDIIEluZGV4ZWQgYnkgYChwYXJlbnRfYm91bnR5X2lkLCBjaGlsZF9ib3VudHlfaWQpYC4AWENoaWxkQm91bnRpZXNQZXJQYXJlbnQBAQQFODgQAAAAAAzMIE51bWJlciBvZiBhY3RpdmUgY2hpbGQgYm91bnRpZXMgcGVyIHBhcmVudCBib3VudHkuAHwgSW5kZXhlZCBieSBgcGFyZW50X2JvdW50eV9pZGAuAGxUb3RhbENoaWxkQm91bnRpZXNQZXJQYXJlbnQBAQQFODgQAAAAAAxBASBOdW1iZXIgb2YgdG90YWwgY2hpbGQgYm91bnRpZXMgcGVyIHBhcmVudCBib3VudHksIGluY2x1ZGluZyBjb21wbGV0ZWQgYm91bnRpZXMuAHwgSW5kZXhlZCBieSBgcGFyZW50X2JvdW50eV9pZGAuAGxDaGlsZEJvdW50aWVzVmFsdWVQZXJQYXJlbnQBAQQFOJUBQAAAAAAAAAAAAAAAAAAAAAAQbQEgVGhlIGN1bXVsYXRpdmUgY2hpbGQtYm91bnR5IHZhbHVlIGZvciBlYWNoIHBhcmVudCBib3VudHkuIFRvIGJlIHN1YnRyYWN0ZWQgZnJvbSB0aGUgcGFyZW50kCBib3VudHkgcGF5b3V0IHdoZW4gYXdhcmRpbmcgYm91bnR5LgB8IEluZGV4ZWQgYnkgYHBhcmVudF9ib3VudHlfaWRgLgA4Q3VyYXRvckRlcG9zaXQAAQgFBaUQqRAEACxlASBUaGUgY29uc2lkZXJhdGlvbiBjb3N0IGluY3VycmVkIGJ5IHRoZSBjaGlsZC0vYm91bnR5IGN1cmF0b3IgZm9yIGNvbW1pdHRpbmcgdG8gdGhlIHJvbGUuAHEBIERldGVybWluZWQgYnkgW2BwYWxsZXQ6OkNvbmZpZzo6Q29uc2lkZXJhdGlvbmBdLiBJdCBpcyBjcmVhdGVkIHdoZW4gdGhlIGN1cmF0b3IgYWNjZXB0cyB0aGVFASByb2xlLCBhbmQgaXMgZWl0aGVyIGJ1cm5lZCBpZiB0aGUgY3VyYXRvciBtaXNiZWhhdmVzIG9yIGNvbnN1bWVkIHVwb24gc3VjY2Vzc2Z1bIQgY29tcGxldGlvbiBvZiB0aGUgY2hpbGQtL2JvdW50eS4AEQEgTm90ZTogSWYgdGhlIHBhcmVudCBjdXJhdG9yIGlzIGFsc28gYXNzaWduZWQgdG8gdGhlIGNoaWxkLWJvdW50eSwgIA0BIHRoZSBjb25zaWRlcmF0aW9uIGNvc3QgaXMgY2hhcmdlZCBvbmx5IG9uY2Ug4oCUIHdoZW4gdGhlIGN1cmF0b3IgIKAgYWNjZXB0cyB0aGUgcm9sZSBmb3IgdGhlIHBhcmVudCBib3VudHkuAMggSW5kZXhlZCBieSBgKHBhcmVudF9ib3VudHlfaWQsIGNoaWxkX2JvdW50eV9pZClgLgABkQcAAakJAAxIQm91bnR5VmFsdWVNaW5pbXVtlQFAaJqkhQ8AAAAAAAAAAAAAAARwIE1pbmltdW0gdmFsdWUgZm9yIGEgYm91bnR5LgBcQ2hpbGRCb3VudHlWYWx1ZU1pbmltdW2VAUCkQl2NAQAAAAAAAAAAAAAABIggTWluaW11bSB2YWx1ZSBmb3IgYSBjaGlsZC1ib3VudHkuAGRNYXhBY3RpdmVDaGlsZEJvdW50eUNvdW50OBBkAAAABB0BIE1heGltdW0gbnVtYmVyIG9mIGNoaWxkIGJvdW50aWVzIHRoYXQgY2FuIGJlIGFkZGVkIHRvIGEgcGFyZW50IGJvdW50eS4AAa0QAAgkQXNzZXRLaW5kTQcIQQEgVHlwZSBwYXJhbWV0ZXIgcmVwcmVzZW50aW5nIHRoZSBhc3NldCBraW5kcyB1c2VkIHRvIGZ1bmQsIHJlZnVuZCBhbmQgc3BlbmQgZnJvbSggYm91bnRpZXMuLEJlbmVmaWNpYXJ5UQcEQQEgVHlwZSBwYXJhbWV0ZXIgdXNlZCB0byBpZGVudGlmeSB0aGUgYmVuZWZpY2lhcmllcyBlbGlnaWJsZSB0byByZWNlaXZlIHBheW1lbnRzLgBiAAAUQWhPcHMBFEFoT3BzDDhSY0xlYXNlUmVzZXJ2ZQABDAUFBbEQlQEEADgFASBBbW91bnQgb2YgYmFsYW5jZSB0aGF0IHdhcyByZXNlcnZlZCBmb3Igd2lubmluZyBhIGxlYXNlIGF1Y3Rpb24uAGUBIGB1bnJlc2VydmVfbGVhc2VfZGVwb3NpdGAgY2FuIGJlIHBlcm1pc3Npb25sZXNzbHkgY2FsbGVkIG9uY2UgdGhlIGJsb2NrIG51bWJlciBwYXNzZWQgdG9VASB1bnJlc2VydmUgdGhlIGRlcG9zaXQuIEl0IGlzIGltcGxpY2l0bHkgY2FsbGVkIGJ5IGB3aXRoZHJhd19jcm93ZGxvYW5fY29udHJpYnV0aW9uYC4IICBpASBUaGUgYWNjb3VudCBoZXJlIGNhbiBlaXRoZXIgYmUgYSBjcm93ZGxvYW4gYWNjb3VudCBvciBhIHNvbG8gYmlkZGVyLiBJZiBpdCBpcyBhIGNyb3dkbG9hbmkBIGFjY291bnQsIHRoZW4gdGhlIHN1bW1lZCB1cCBjb250cmlidXRpb25zIGZvciBpdCBpbiB0aGUgY29udHJpYnV0aW9ucyBtYXAgd2lsbCBlcXVhdGUgdGhlXCByZXNlcnZlZCBiYWxhbmNlIGhlcmUuAGQgVGhlIGtleXMgYXJlIGFzIGZvbGxvd3M66CAtIEJsb2NrIG51bWJlciBhZnRlciB3aGljaCB0aGUgZGVwb3NpdCBjYW4gYmUgdW5yZXNlcnZlZC6EIC0gVGhlIHBhcmFfaWQgb2YgdGhlIGxlYXNlIHNsb3Qu1CAtIFRoZSBhY2NvdW50IHRoYXQgd2lsbCBoYXZlIHRoZSBiYWxhbmNlIHVucmVzZXJ2ZWQugCAtIFRoZSBiYWxhbmNlIHRvIGJlIHVucmVzZXJ2ZWQuAFxSY0Nyb3dkbG9hbkNvbnRyaWJ1dGlvbgABDAUFBbEQqQUEADD8IEFtb3VudCBvZiBiYWxhbmNlIHRoYXQgYSBjb250cmlidXRvciBtYWRlIHRvd2FyZHMgYSBjcm93ZGxvYW4uAF0BIGB3aXRoZHJhd19jcm93ZGxvYW5fY29udHJpYnV0aW9uYCBjYW4gYmUgcGVybWlzc2lvbmxlc3NseSBjYWxsZWQgb25jZSB0aGUgYmxvY2sgbnVtYmVy1CBwYXNzZWQgdG8gdW5sb2NrIHRoZSBiYWxhbmNlIGZvciBhIHNwZWNpZmljIGFjY291bnQuAGQgVGhlIGtleXMgYXJlIGFzIGZvbGxvd3M64CAtIEJsb2NrIG51bWJlciBhZnRlciB3aGljaCB0aGUgYmFsYW5jZSBjYW4gYmUgdW5sb2NrZWQugCAtIFRoZSBwYXJhX2lkIG9mIHRoZSBjcm93ZGxvYW4uqCAtIFRoZSBhY2NvdW50IHRoYXQgbWFkZSB0aGUgY29udHJpYnV0aW9uLgBBASBUaGUgdmFsdWUgaXMgKGZ1bmRfcG90LCBiYWxhbmNlKS4gVGhlIGNvbnRyaWJ1dGlvbiBwb3QgaXMgdGhlIHNlY29uZCBrZXkgaW4gdGhljCBgUmNDcm93ZGxvYW5Db250cmlidXRpb25gIHN0b3JhZ2UuAEhSY0Nyb3dkbG9hblJlc2VydmUAAQwFBQWxEJUBBAAkyCBUaGUgcmVzZXJ2ZSB0aGF0IHdhcyB0YWtlbiB0byBjcmVhdGUgYSBjcm93ZGxvYW4uABEBIFRoaXMgaXMgbm9ybWFsbHkgNTAwIERPVCBhbmQgY2FuIGJlIHJlZnVuZGVkIGFzIGxhc3Qgc3RlcCBhZnRlciBhbGz0IGBSY0Nyb3dkbG9hbkNvbnRyaWJ1dGlvbmBzIG9mIHRoaXMgbG9hbiBoYXZlIGJlZW4gd2l0aGRyYXduLgAYIEtleXM6yCAtIEJsb2NrIG51bWJlciBhZnRlciB3aGljaCB0aGlzIGNhbiBiZSB1bnJlc2VydmVkfCAtIFRoZSBwYXJhX2lkIG9mIHRoZSBjcm93ZGxvYW7QIC0gVGhlIGFjY291bnQgdGhhdCB3aWxsIGhhdmUgdGhlIGJhbGFuY2UgdW5yZXNlcnZlZAABlQcAAa0JAAABtRAABBxBc3NldElkOQIEqCBBc3NldCBJRCB0eXBlIG9mIHRoZSBgRnVuZ2libGVzYCBhZGFwdGVyLgD+AAAIBAUAILkEBAA0AAQIDBAUGBwgJCgsMDQ0QXV0aG9yaXplQ2FsbJ0HEEhDaGVja05vblplcm9TZW5kZXKhBxBAQ2hlY2tTcGVjVmVyc2lvbqUHODhDaGVja1R4VmVyc2lvbqkHODBDaGVja0dlbmVzaXOtB0A4Q2hlY2tNb3J0YWxpdHmxB0AoQ2hlY2tOb25jZbkHECxDaGVja1dlaWdodL0HEFBDaGFyZ2VBc3NldFR4UGF5bWVudMEHEEhQcmV2YWxpZGF0ZUF0dGVzdHPFBxBEQ2hlY2tNZXRhZGF0YUhhc2jJBwEFMEV0aFNldE9yaWdpbtEHEFBTdG9yYWdlV2VpZ2h0UmVjbGFpbRAQcBxBdXJhQXBpCDRzbG90X2R1cmF0aW9uALkQDJAgUmV0dXJucyB0aGUgc2xvdCBkdXJhdGlvbiBmb3IgQXVyYS4AJQEgQ3VycmVudGx5LCBvbmx5IHRoZSB2YWx1ZSBwcm92aWRlZCBieSB0aGlzIHR5cGUgYXQgZ2VuZXNpcyB3aWxsIGJlIHVzZWQuACxhdXRob3JpdGllcwBxCwScIFJldHVybiB0aGUgY3VycmVudCBzZXQgb2YgYXV0aG9yaXRpZXMuAAS4IEFQSSBuZWNlc3NhcnkgZm9yIGJsb2NrIGF1dGhvcnNoaXAgd2l0aCBhdXJhLgQAUFJlbGF5UGFyZW50T2Zmc2V0QXBpBExyZWxheV9wYXJlbnRfb2Zmc2V0ADgE9CBGZXRjaCB0aGUgc2xvdCBvZmZzZXQgdGhhdCBpcyBleHBlY3RlZCBmcm9tIHRoZSByZWxheSBjaGFpbi4AEAUBIEFQSSB0byB0ZWxsIHRoZSBub2RlIHNpZGUgaG93IHRoZSByZWxheSBwYXJlbnQgc2hvdWxkIGJlIGNob3Nlbi4AaQEgQSBsYXJnZXIgb2Zmc2V0IGluZGljYXRlcyB0aGF0IHRoZSByZWxheSBwYXJlbnQgc2hvdWxkIG5vdCBiZSB0aGUgdGlwIG9mIHRoZSByZWxheSBjaGFpbiwxASBidXQgYE5gIGJsb2NrcyBiZWhpbmQgdGhlIHRpcC4gVGhpcyBvZmZzZXQgaXMgdGhlbiBlbmZvcmNlZCBieSB0aGUgcnVudGltZS4EAGBBdXJhVW5pbmNsdWRlZFNlZ21lbnRBcGkEOGNhbl9idWlsZF91cG9uCDRpbmNsdWRlZF9oYXNoQBBzbG90dQuZASg5ASBXaGV0aGVyIGl0IGlzIGxlZ2FsIHRvIGV4dGVuZCB0aGUgY2hhaW4sIGFzc3VtaW5nIHRoZSBnaXZlbiBibG9jayBpcyB0aGUgbW9zdDUBIHJlY2VudGx5IGluY2x1ZGVkIG9uZSBhcy1vZiB0aGUgcmVsYXkgcGFyZW50IHRoYXQgd2lsbCBiZSBidWlsdCBhZ2FpbnN0LCBhbmRwIHRoZSBnaXZlbiByZWxheSBjaGFpbiBzbG90LgBRASBUaGlzIHNob3VsZCBiZSBjb25zaXN0ZW50IHdpdGggdGhlIGxvZ2ljIHRoZSBydW50aW1lIHVzZXMgd2hlbiB2YWxpZGF0aW5nIGJsb2NrcyB0bzggYXZvaWQgaXNzdWVzLgBhASBXaGVuIHRoZSB1bmluY2x1ZGVkIHNlZ21lbnQgaXMgZW1wdHksIGkuZS4gYGluY2x1ZGVkX2hhc2ggPT0gYXRgLCB3aGVyZSBhdCBpcyB0aGUgYmxvY2thASB3aG9zZSBzdGF0ZSB3ZSBhcmUgcXVlcnlpbmcgYWdhaW5zdCwgdGhpcyBtdXN0IGFsd2F5cyByZXR1cm4gYHRydWVgIGFzIGxvbmcgYXMgdGhlIHNsb3S8IGlzIG1vcmUgcmVjZW50IHRoYW4gdGhlIGluY2x1ZGVkIGJsb2NrIGl0c2VsZi4ANDUBIFRoaXMgcnVudGltZSBBUEkgaXMgdXNlZCB0byBpbmZvcm0gcG90ZW50aWFsIGJsb2NrIGF1dGhvcnMgd2hldGhlciB0aGV5IHdpbGwlASBoYXZlIHRoZSByaWdodCB0byBhdXRob3IgYXQgYSBzbG90LCBhc3N1bWluZyB0aGV5IGhhdmUgY2xhaW1lZCB0aGUgc2xvdC4AdQEgSW4gcGFydGljdWxhciwgdGhpcyBBUEkgYWxsb3dzIEF1cmEtYmFzZWQgcGFyYWNoYWlucyB0byByZWd1bGF0ZSB0aGVpciAidW5pbmNsdWRlZCBzZWdtZW50IixtASB3aGljaCBpcyB0aGUgc2VjdGlvbiBvZiB0aGUgaGVhZCBvZiB0aGUgY2hhaW4gd2hpY2ggaGFzIG5vdCB5ZXQgYmVlbiBtYWRlIGF2YWlsYWJsZSBpbiB0aGU0IHJlbGF5IGNoYWluLgBhASBXaGVuIHRoZSB1bmluY2x1ZGVkIHNlZ21lbnQgaXMgc2hvcnQsIEF1cmEgY2hhaW5zIHdpbGwgYWxsb3cgYXV0aG9ycyB0byBjcmVhdGUgbXVsdGlwbGVdASBibG9ja3MgcGVyIHNsb3QgaW4gb3JkZXIgdG8gYnVpbGQgYSBiYWNrbG9nLiBXaGVuIGl0IGlzIHNhdHVyYXRlZCwgdGhpcyBBUEkgd2lsbCBsaW1pdKggdGhlIGFtb3VudCBvZiBibG9ja3MgdGhhdCBjYW4gYmUgY3JlYXRlZC4AJCBDaGFuZ2VzOpEBIC0gVmVyc2lvbiAyOiBVcGRhdGUgdG8gYGNhbl9idWlsZF91cG9uYCB0byB0YWtlIGEgcmVsYXkgY2hhaW4gYFNsb3RgIGluc3RlYWQgb2YgYSBwYXJhY2hhaW4gYFNsb3RgLggAEENvcmUMHHZlcnNpb24A4QkEkCBSZXR1cm5zIHRoZSB2ZXJzaW9uIG9mIHRoZSBydW50aW1lLgA0ZXhlY3V0ZV9ibG9jawQUYmxvY2u9EBAEZCBFeGVjdXRlIHRoZSBnaXZlbiBibG9jay4AQGluaXRpYWxpemVfYmxvY2sEGGhlYWRlcmDJEARBASBJbml0aWFsaXplIGEgYmxvY2sgd2l0aCB0aGUgZ2l2ZW4gaGVhZGVyIGFuZCByZXR1cm4gdGhlIHJ1bnRpbWUgZXhlY3V0aXZlIG1vZGUuAAQhASBUaGUgYENvcmVgIHJ1bnRpbWUgYXBpIHRoYXQgZXZlcnkgU3Vic3RyYXRlIHJ1bnRpbWUgbmVlZHMgdG8gaW1wbGVtZW50LhQAIE1ldGFkYXRhDCBtZXRhZGF0YQDNEASMIFJldHVybnMgdGhlIG1ldGFkYXRhIG9mIGEgcnVudGltZS4ATG1ldGFkYXRhX2F0X3ZlcnNpb24EHHZlcnNpb2440RAQpCBSZXR1cm5zIHRoZSBtZXRhZGF0YSBhdCBhIGdpdmVuIHZlcnNpb24uAAUBIElmIHRoZSBnaXZlbiBgdmVyc2lvbmAgaXNuJ3Qgc3VwcG9ydGVkLCB0aGlzIHdpbGwgcmV0dXJuIGBOb25lYC51ASBVc2UgW2BTZWxmOjptZXRhZGF0YV92ZXJzaW9uc2BdIHRvIGZpbmQgb3V0IGFib3V0IHN1cHBvcnRlZCBtZXRhZGF0YSB2ZXJzaW9uIG9mIHRoZSBydW50aW1lLgBEbWV0YWRhdGFfdmVyc2lvbnMAVQQMpCBSZXR1cm5zIHRoZSBzdXBwb3J0ZWQgbWV0YWRhdGEgdmVyc2lvbnMuAMAgVGhpcyBjYW4gYmUgdXNlZCB0byBjYWxsIGBtZXRhZGF0YV9hdF92ZXJzaW9uYC4ABAEBIFRoZSBgTWV0YWRhdGFgIGFwaSB0cmFpdCB0aGF0IHJldHVybnMgbWV0YWRhdGEgZm9yIHRoZSBydW50aW1lLggAMEJsb2NrQnVpbGRlchA8YXBwbHlfZXh0cmluc2ljBCRleHRyaW5zaWP5CdUQEGwgQXBwbHkgdGhlIGdpdmVuIGV4dHJpbnNpYy4AOQEgUmV0dXJucyBhbiBpbmNsdXNpb24gb3V0Y29tZSB3aGljaCBzcGVjaWZpZXMgaWYgdGhpcyBleHRyaW5zaWMgaXMgaW5jbHVkZWQgaW5MIHRoaXMgYmxvY2sgb3Igbm90LgA4ZmluYWxpemVfYmxvY2sAYARoIEZpbmlzaCB0aGUgY3VycmVudCBibG9jay4ATGluaGVyZW50X2V4dHJpbnNpY3MEIGluaGVyZW505RAFCgQ9ASBHZW5lcmF0ZSBpbmhlcmVudCBleHRyaW5zaWNzLiBUaGUgaW5oZXJlbnQgZGF0YSB3aWxsIHZhcnkgZnJvbSBjaGFpbiB0byBjaGFpbi4APGNoZWNrX2luaGVyZW50cwgUYmxvY2u9EBBkYXRh5RD1EARVASBDaGVjayB0aGF0IHRoZSBpbmhlcmVudHMgYXJlIHZhbGlkLiBUaGUgaW5oZXJlbnQgZGF0YSB3aWxsIHZhcnkgZnJvbSBjaGFpbiB0byBjaGFpbi4ABHEBIFRoZSBgQmxvY2tCdWlsZGVyYCBhcGkgdHJhaXQgdGhhdCBwcm92aWRlcyB0aGUgcmVxdWlyZWQgZnVuY3Rpb25hbGl0eSBmb3IgYnVpbGRpbmcgYSBibG9jay4YAFhUYWdnZWRUcmFuc2FjdGlvblF1ZXVlBFB2YWxpZGF0ZV90cmFuc2FjdGlvbgwYc291cmNl+RAIdHj5CShibG9ja19oYXNoQP0QJGggVmFsaWRhdGUgdGhlIHRyYW5zYWN0aW9uLgBlASBUaGlzIG1ldGhvZCBpcyBpbnZva2VkIGJ5IHRoZSB0cmFuc2FjdGlvbiBwb29sIHRvIGxlYXJuIGRldGFpbHMgYWJvdXQgZ2l2ZW4gdHJhbnNhY3Rpb24uRQEgVGhlIGltcGxlbWVudGF0aW9uIHNob3VsZCBtYWtlIHN1cmUgdG8gdmVyaWZ5IHRoZSBjb3JyZWN0bmVzcyBvZiB0aGUgdHJhbnNhY3Rpb25NASBhZ2FpbnN0IGN1cnJlbnQgc3RhdGUuIFRoZSBnaXZlbiBgYmxvY2tfaGFzaGAgY29ycmVzcG9uZHMgdG8gdGhlIGhhc2ggb2YgdGhlIGJsb2NrfCB0aGF0IGlzIHVzZWQgYXMgY3VycmVudCBzdGF0ZS4ARQEgTm90ZSB0aGF0IHRoaXMgY2FsbCBtYXkgYmUgcGVyZm9ybWVkIGJ5IHRoZSBwb29sIG11bHRpcGxlIHRpbWVzIGFuZCB0cmFuc2FjdGlvbnOkIG1pZ2h0IGJlIHZlcmlmaWVkIGluIGFueSBwb3NzaWJsZSBvcmRlci4ABE0BIFRoZSBgVGFnZ2VkVHJhbnNhY3Rpb25RdWV1ZWAgYXBpIHRyYWl0IGZvciBpbnRlcmZlcmluZyB3aXRoIHRoZSB0cmFuc2FjdGlvbiBxdWV1ZS4MAERPZmZjaGFpbldvcmtlckFwaQQ8b2ZmY2hhaW5fd29ya2VyBBhoZWFkZXJgEATIIFN0YXJ0cyB0aGUgb2ZmLWNoYWluIHRhc2sgZm9yIGdpdmVuIGJsb2NrIGhlYWRlci4ABGQgVGhlIG9mZmNoYWluIHdvcmtlciBhcGkuCAAsU2Vzc2lvbktleXMIVGdlbmVyYXRlX3Nlc3Npb25fa2V5cwgUb3duZXIYEHNlZWToBREcFQEgR2VuZXJhdGUgYSBzZXQgb2Ygc2Vzc2lvbiBrZXlzIHdpdGggb3B0aW9uYWxseSB1c2luZyB0aGUgZ2l2ZW4gc2VlZC4JASBUaGUga2V5cyBzaG91bGQgYmUgc3RvcmVkIHdpdGhpbiB0aGUga2V5c3RvcmUgZXhwb3NlZCB2aWEgcnVudGltZTwgZXh0ZXJuYWxpdGllcy4AsCBUaGUgc2VlZCBuZWVkcyB0byBiZSBhIHZhbGlkIGB1dGY4YCBzdHJpbmcuANAgUmV0dXJucyB0aGUgY29uY2F0ZW5hdGVkIFNDQUxFIGVuY29kZWQgcHVibGljIGtleXMuAExkZWNvZGVfc2Vzc2lvbl9rZXlzBBxlbmNvZGVkGAkRDJggRGVjb2RlIHRoZSBnaXZlbiBwdWJsaWMgc2Vzc2lvbiBrZXlzLgDcIFJldHVybnMgdGhlIGxpc3Qgb2YgcHVibGljIHJhdyBwdWJsaWMga2V5cyArIGtleSB0eXBlLgAEaCBTZXNzaW9uIGtleXMgcnVudGltZSBhcGkuCABMUnVudGltZVZpZXdGdW5jdGlvbgRUZXhlY3V0ZV92aWV3X2Z1bmN0aW9uCCBxdWVyeV9pZBURFGlucHV0GBkRBHwgRXhlY3V0ZSBhIHZpZXcgZnVuY3Rpb24gcXVlcnkuAASkIFJ1bnRpbWUgQVBJIGZvciBleGVjdXRpbmcgdmlldyBmdW5jdGlvbnMEADxBY2NvdW50Tm9uY2VBcGkENGFjY291bnRfbm9uY2UEHGFjY291bnQEOATAIEdldCBjdXJyZW50IGFjY291bnQgbm9uY2Ugb2YgZ2l2ZW4gYEFjY291bnRJZGAuAASAIFRoZSBBUEkgdG8gcXVlcnkgYWNjb3VudCBub25jZS4EAEhBc3NldENvbnZlcnNpb25BcGkMjHF1b3RlX3ByaWNlX3Rva2Vuc19mb3JfZXhhY3RfdG9rZW5zEBhhc3NldDE5Ahhhc3NldDI5AhhhbW91bnSVASxpbmNsdWRlX2ZlZZkBYQQQ/CBQcm92aWRlcyBhIHF1b3RlIGZvciBbYFBhbGxldDo6c3dhcF90b2tlbnNfZm9yX2V4YWN0X3Rva2Vuc2BdLgA5ASBOb3RlIHRoYXQgdGhlIHByaWNlIG1heSBoYXZlIGNoYW5nZWQgYnkgdGhlIHRpbWUgdGhlIHRyYW5zYWN0aW9uIGlzIGV4ZWN1dGVkLqwgKFVzZSBgYW1vdW50X2luX21heGAgdG8gY29udHJvbCBzbGlwcGFnZS4pAIxxdW90ZV9wcmljZV9leGFjdF90b2tlbnNfZm9yX3Rva2VucxAYYXNzZXQxOQIYYXNzZXQyOQIYYW1vdW50lQEsaW5jbHVkZV9mZWWZAWEEEPwgUHJvdmlkZXMgYSBxdW90ZSBmb3IgW2BQYWxsZXQ6OnN3YXBfZXhhY3RfdG9rZW5zX2Zvcl90b2tlbnNgXS4AOQEgTm90ZSB0aGF0IHRoZSBwcmljZSBtYXkgaGF2ZSBjaGFuZ2VkIGJ5IHRoZSB0aW1lIHRoZSB0cmFuc2FjdGlvbiBpcyBleGVjdXRlZC6wIChVc2UgYGFtb3VudF9vdXRfbWluYCB0byBjb250cm9sIHNsaXBwYWdlLikAMGdldF9yZXNlcnZlcwgYYXNzZXQxOQIYYXNzZXQyOQIhEQQFASBSZXR1cm5zIHRoZSBzaXplIG9mIHRoZSBsaXF1aWRpdHkgcG9vbCBmb3IgdGhlIGdpdmVuIGFzc2V0IHBhaXIuAAghASBUaGlzIHJ1bnRpbWUgYXBpIGFsbG93cyBwZW9wbGUgdG8gcXVlcnkgdGhlIHNpemUgb2YgdGhlIGxpcXVpZGl0eSBwb29sc3AgYW5kIHF1b3RlIHByaWNlcyBmb3Igc3dhcHMuBABUVHJhbnNhY3Rpb25QYXltZW50QXBpEChxdWVyeV9pbmZvCAx1eHT5CQxsZW44JREAAERxdWVyeV9mZWVfZGV0YWlscwgMdXh0+QkMbGVuOCkRAABMcXVlcnlfd2VpZ2h0X3RvX2ZlZQQYd2VpZ2h0eQGVAQAATHF1ZXJ5X2xlbmd0aF90b19mZWUEGGxlbmd0aDiVAQAAABAAZFRyYW5zYWN0aW9uUGF5bWVudENhbGxBcGkQPHF1ZXJ5X2NhbGxfaW5mbwgQY2FsbCAMbGVuOCURBEkBIFF1ZXJ5IGluZm9ybWF0aW9uIG9mIGEgZGlzcGF0Y2ggY2xhc3MsIHdlaWdodCwgYW5kIGZlZSBvZiBhIGdpdmVuIGVuY29kZWQgYENhbGxgLgBYcXVlcnlfY2FsbF9mZWVfZGV0YWlscwgQY2FsbCAMbGVuOCkRBLQgUXVlcnkgZmVlIGRldGFpbHMgb2YgYSBnaXZlbiBlbmNvZGVkIGBDYWxsYC4ATHF1ZXJ5X3dlaWdodF90b19mZWUEGHdlaWdodHkBlQEEAQEgUXVlcnkgdGhlIG91dHB1dCBvZiB0aGUgY3VycmVudCBgV2VpZ2h0VG9GZWVgIGdpdmVuIHNvbWUgaW5wdXQuAExxdWVyeV9sZW5ndGhfdG9fZmVlBBhsZW5ndGg4lQEEAQEgUXVlcnkgdGhlIG91dHB1dCBvZiB0aGUgY3VycmVudCBgTGVuZ3RoVG9GZWVgIGdpdmVuIHNvbWUgaW5wdXQuAAAMADRYY21QYXltZW50QXBpEHxxdWVyeV9hY2NlcHRhYmxlX3BheW1lbnRfYXNzZXRzBCx4Y21fdmVyc2lvbjg1ERS0IFJldHVybnMgYSBsaXN0IG9mIGFjY2VwdGFibGUgcGF5bWVudCBhc3NldHMuADAgIyBBcmd1bWVudHMAaCAqIGB4Y21fdmVyc2lvbmA6IFZlcnNpb24uAEBxdWVyeV94Y21fd2VpZ2h0BBxtZXNzYWdlbQJBERSoIFJldHVybnMgYSB3ZWlnaHQgbmVlZGVkIHRvIGV4ZWN1dGUgYSBYQ00uADAgIyBBcmd1bWVudHMAdCAqIGBtZXNzYWdlYDogYFZlcnNpb25lZFhjbWAuAGRxdWVyeV93ZWlnaHRfdG9fYXNzZXRfZmVlCBh3ZWlnaHR5ARRhc3NldN0DRREY6CBDb252ZXJ0cyBhIHdlaWdodCBpbnRvIGEgZmVlIGZvciB0aGUgc3BlY2lmaWVkIGBBc3NldElkYC4AMCAjIEFyZ3VtZW50cwCIICogYHdlaWdodGA6IGNvbnZlcnRpYmxlIGBXZWlnaHRgLnwgKiBgYXNzZXRgOiBgVmVyc2lvbmVkQXNzZXRJZGAuAExxdWVyeV9kZWxpdmVyeV9mZWVzDCxkZXN0aW5hdGlvbuUBHG1lc3NhZ2VtAiBhc3NldF9pZN0DSREoYCBRdWVyeSBkZWxpdmVyeSBmZWVzIFYyLgAdASBHZXQgZGVsaXZlcnkgZmVlcyBmb3Igc2VuZGluZyBhIHNwZWNpZmljIGBtZXNzYWdlYCB0byBhIGBkZXN0aW5hdGlvbmAu9CBUaGVzZSBhbHdheXMgY29tZSBpbiBhIHNwZWNpZmljIGFzc2V0LCBkZWZpbmVkIGJ5IHRoZSBjaGFpbi4AMCAjIEFyZ3VtZW50c4EBICogYG1lc3NhZ2VgOiBUaGUgbWVzc2FnZSB0aGF0J2xsIGJlIHNlbnQsIG5lY2Vzc2FyeSBiZWNhdXNlIG1vc3QgZGVsaXZlcnkgZmVlcyBhcmUgYmFzZWQgb24gdGhlXCAgIHNpemUgb2YgdGhlIG1lc3NhZ2UuYQEgKiBgZGVzdGluYXRpb25gOiBUaGUgZGVzdGluYXRpb24gdG8gc2VuZCB0aGUgbWVzc2FnZSB0by4gRGlmZmVyZW50IGRlc3RpbmF0aW9ucyBtYXkgdXNlwCAgIGRpZmZlcmVudCBzZW5kZXJzIHRoYXQgY2hhcmdlIGRpZmZlcmVudCBmZWVzLgAscCBBIHRyYWl0IG9mIFhDTSBwYXltZW50IEFQSS4AqCBBUEkgcHJvdmlkZXMgZnVuY3Rpb25hbGl0eSBmb3Igb2J0YWluaW5nOgDEICogdGhlIHdlaWdodCByZXF1aXJlZCB0byBleGVjdXRlIGFuIFhDTSBtZXNzYWdlLAUBICogYSBsaXN0IG9mIGFjY2VwdGFibGUgYEFzc2V0SWRgcyBmb3IgbWVzc2FnZSBleGVjdXRpb24gcGF5bWVudCwBASAqIHRoZSBjb3N0IG9mIHRoZSB3ZWlnaHQgaW4gdGhlIHNwZWNpZmllZCBhY2NlcHRhYmxlIGBBc3NldElkYC6gICogdGhlIGZlZXMgZm9yIGFuIFhDTSBtZXNzYWdlIGRlbGl2ZXJ5LgDwIFRvIGRldGVybWluZSB0aGUgZXhlY3V0aW9uIHdlaWdodCBvZiB0aGUgY2FsbHMgcmVxdWlyZWQgZm9ydQEgW2B4Y206OmxhdGVzdDo6SW5zdHJ1Y3Rpb246OlRyYW5zYWN0YF0gaW5zdHJ1Y3Rpb24sIGBUcmFuc2FjdGlvblBheW1lbnRDYWxsQXBpYCBjYW4gYmUgdXNlZC4IACREcnlSdW5BcGkIMGRyeV9ydW5fY2FsbAwYb3JpZ2lu/QMQY2FsbCBMcmVzdWx0X3hjbXNfdmVyc2lvbjhNEQREIERyeSBydW4gY2FsbCBWMi4ALGRyeV9ydW5feGNtCDxvcmlnaW5fbG9jYXRpb27lAQx4Y22tA20RBFAgRHJ5IHJ1biBYQ00gcHJvZ3JhbQAksQEgQVBJIGZvciBkcnktcnVubmluZyBleHRyaW5zaWNzIGFuZCBYQ00gcHJvZ3JhbXMgdG8gZ2V0IHRoZSBwcm9ncmFtcyB0aGF0IG5lZWQgdG8gYmUgcGFzc2VkIHRvIHRoZSBmZWVzIEFQSS4AgQEgQWxsIGNhbGxzIHJldHVybiBhIHZlY3RvciBvZiB0dXBsZXMgKGxvY2F0aW9uLCB4Y20pIHdoZXJlIGVhY2ggInhjbSIgaXMgZXhlY3V0ZWQgaW4gImxvY2F0aW9uIi7kIElmIHRoZXJlJ3MgbG9jYWwgZXhlY3V0aW9uLCB0aGUgbG9jYXRpb24gd2lsbCBiZSAiSGVyZSIuHQEgVGhpcyB2ZWN0b3IgY2FuIGJlIHVzZWQgdG8gY2FsY3VsYXRlIGJvdGggZXhlY3V0aW9uIGFuZCBkZWxpdmVyeSBmZWVzLgCZASBDYWxscyBvciBYQ01zIG1pZ2h0IGZhaWwgd2hlbiBleGVjdXRlZCwgdGhpcyBkb2Vzbid0IG1lYW4gdGhlIHJlc3VsdCBvZiB0aGVzZSBjYWxscyB3aWxsIGJlIGFuIGBFcnJgLmUBIEluIHRob3NlIGNhc2VzLCB0aGVyZSBtaWdodCBzdGlsbCBiZSBhIHZhbGlkIHJlc3VsdCwgd2l0aCB0aGUgZXhlY3V0aW9uIGVycm9yIGluc2lkZSBpdC5lASBUaGUgb25seSByZWFzb25zIHdoeSB0aGVzZSBjYWxscyBtaWdodCByZXR1cm4gYW4gZXJyb3IgYXJlIGxpc3RlZCBpbiB0aGUgW2BFcnJvcmBdIGVudW0uCABQTG9jYXRpb25Ub0FjY291bnRBcGkEQGNvbnZlcnRfbG9jYXRpb24EIGxvY2F0aW9u5QF1EQSQIENvbnZlcnRzIGBMb2NhdGlvbmAgdG8gYEFjY291bnRJZGAuAAQNASBBUEkgZm9yIHVzZWZ1bCBjb252ZXJzaW9ucyBiZXR3ZWVuIFhDTSBgTG9jYXRpb25gIGFuZCBgQWNjb3VudElkYC4EADxUcnVzdGVkUXVlcnlBcGkISGlzX3RydXN0ZWRfcmVzZXJ2ZQgUYXNzZXR9ESBsb2NhdGlvbuUBgREU8CBSZXR1cm5zIGlmIHRoZSBsb2NhdGlvbiBpcyBhIHRydXN0ZWQgcmVzZXJ2ZSBmb3IgdGhlIGFzc2V0LgAwICMgQXJndW1lbnRzdCAqIGBhc3NldGA6IGBWZXJzaW9uZWRBc3NldGAujCAqIGBsb2NhdGlvbmA6IGBWZXJzaW9uZWRMb2NhdGlvbmAuAFRpc190cnVzdGVkX3RlbGVwb3J0ZXIIFGFzc2V0fREgbG9jYXRpb27lAYERFOAgUmV0dXJucyBpZiB0aGUgYXNzZXQgY2FuIGJlIHRlbGVwb3J0ZWQgdG8gdGhlIGxvY2F0aW9uLgAwICMgQXJndW1lbnRzdCAqIGBhc3NldGA6IGBWZXJzaW9uZWRBc3NldGAujCAqIGBsb2NhdGlvbmA6IGBWZXJzaW9uZWRMb2NhdGlvbmAuAATsIEFQSSBmb3IgcXVlcnlpbmcgdHJ1c3RlZCByZXNlcnZlcyBhbmQgdHJ1c3RlZCB0ZWxlcG9ydGVycy4EAFRBdXRob3JpemVkQWxpYXNlcnNBcGkITGF1dGhvcml6ZWRfYWxpYXNlcnMEGHRhcmdldOUBiREE9CBSZXR1cm5zIGxvY2F0aW9ucyBhbGxvd2VkIHRvIGFsaWFzIGludG8gYW5kIGFjdCBhcyBgdGFyZ2V0YC4ATGlzX2F1dGhvcml6ZWRfYWxpYXMIGG9yaWdpbuUBGHRhcmdldOUBkREEHQEgUmV0dXJucyB3aGV0aGVyIGBvcmlnaW5gIGlzIGFsbG93ZWQgdG8gYWxpYXMgaW50byBhbmQgYWN0IGFzIGB0YXJnZXRgLgAEoCBBUEkgZm9yIHF1ZXJ5aW5nIFhDTSBhdXRob3JpemVkIGFsaWFzZXMEADBGdW5naWJsZXNBcGkEWHF1ZXJ5X2FjY291bnRfYmFsYW5jZXMEHGFjY291bnQElREE7CBSZXR1cm5zIHRoZSBsaXN0IG9mIGFsbCBbYEFzc2V0YF0gdGhhdCBhbiBgQWNjb3VudElkYCBoYXMuAATYIFRoZSBBUEkgZm9yIHF1ZXJ5aW5nIGFjY291bnQncyBiYWxhbmNlcyBmcm9tIHJ1bnRpbWUuCABQQ29sbGVjdENvbGxhdGlvbkluZm8EWGNvbGxlY3RfY29sbGF0aW9uX2luZm8EGGhlYWRlcmCdERCcIENvbGxlY3QgaW5mb3JtYXRpb24gYWJvdXQgYSBjb2xsYXRpb24uAPQgVGhlIGdpdmVuIGBoZWFkZXJgIGlzIHRoZSBoZWFkZXIgb2YgdGhlIGJ1aWx0IGJsb2NrIGZvciB0aGF0qCB3ZSBhcmUgY29sbGVjdGluZyB0aGUgY29sbGF0aW9uIGluZm8gZm9yLgAU2CBSdW50aW1lIGFwaSB0byBjb2xsZWN0IGluZm9ybWF0aW9uIGFib3V0IGEgY29sbGF0aW9uLgBEIFZlcnNpb24gaGlzdG9yeToBASAtIFZlcnNpb24gMjogQ2hhbmdlZCBbYFNlbGY6OmNvbGxlY3RfY29sbGF0aW9uX2luZm9gXSBzaWduYXR1cmU1ASAtIFZlcnNpb24gMzogU2lnbmFscyB0byB0aGUgbm9kZSB0byB1c2UgdmVyc2lvbiAxIG9mIFtgUGFyYWNoYWluQmxvY2tEYXRhYF0uDAA4R2VuZXNpc0J1aWxkZXIMLGJ1aWxkX3N0YXRlBBBqc29uGKkRKGUBIEJ1aWxkIGBSdW50aW1lR2VuZXNpc0NvbmZpZ2AgZnJvbSBhIEpTT04gYmxvYiBub3QgdXNpbmcgYW55IGRlZmF1bHRzIGFuZCBzdG9yZSBpdCBpbiB0aGUkIHN0b3JhZ2UuACkBIEluIHRoZSBjYXNlIG9mIGEgRlJBTUUtYmFzZWQgcnVudGltZSwgdGhpcyBmdW5jdGlvbiBkZXNlcmlhbGl6ZXMgdGhlIGZ1bGxVASBgUnVudGltZUdlbmVzaXNDb25maWdgIGZyb20gdGhlIGdpdmVuIEpTT04gYmxvYiBhbmQgcHV0cyBpdCBpbnRvIHRoZSBzdG9yYWdlLiBJZiB0aGVVASBwcm92aWRlZCBKU09OIGJsb2IgaXMgaW5jb3JyZWN0IG9yIGluY29tcGxldGUgb3IgdGhlIGRlc2VyaWFsaXphdGlvbiBmYWlscywgYW4gZXJyb3I0IGlzIHJldHVybmVkLgBdASBQbGVhc2Ugbm90ZSB0aGF0IHByb3ZpZGVkIEpTT04gYmxvYiBtdXN0IGNvbnRhaW4gYWxsIGBSdW50aW1lR2VuZXNpc0NvbmZpZ2AgZmllbGRzLCBub1wgZGVmYXVsdHMgd2lsbCBiZSB1c2VkLgAoZ2V0X3ByZXNldAQIaWStEeg4YQEgUmV0dXJucyBhIEpTT04gYmxvYiByZXByZXNlbnRhdGlvbiBvZiB0aGUgYnVpbHQtaW4gYFJ1bnRpbWVHZW5lc2lzQ29uZmlnYCBpZGVudGlmaWVkIGJ5GCBgaWRgLgBVASBJZiBgaWRgIGlzIGBOb25lYCB0aGUgZnVuY3Rpb24gc2hvdWxkIHJldHVybiBKU09OIGJsb2IgcmVwcmVzZW50YXRpb24gb2YgdGhlIGRlZmF1bHRJASBgUnVudGltZUdlbmVzaXNDb25maWdgIHN0cnVjdCBvZiB0aGUgcnVudGltZS4gSW1wbGVtZW50YXRpb24gbXVzdCBwcm92aWRlIGRlZmF1bHRgIGBSdW50aW1lR2VuZXNpc0NvbmZpZ2AuACEBIE90aGVyd2lzZSBmdW5jdGlvbiByZXR1cm5zIGEgSlNPTiByZXByZXNlbnRhdGlvbiBvZiB0aGUgYnVpbHQtaW4sIG5hbWVkUQEgYFJ1bnRpbWVHZW5lc2lzQ29uZmlnYCBwcmVzZXQgaWRlbnRpZmllZCBieSBgaWRgLCBvciBgTm9uZWAgaWYgc3VjaCBwcmVzZXQgZG9lcyBub3RhASBleGlzdC4gUmV0dXJuZWQgYFZlYzx1OD5gIGNvbnRhaW5zIGJ5dGVzIG9mIEpTT04gYmxvYiAocGF0Y2gpIHdoaWNoIGNvbXByaXNlcyBhIGxpc3Qgb2ZNASAocG90ZW50aWFsbHkgbmVzdGVkKSBrZXktdmFsdWUgcGFpcnMgdGhhdCBhcmUgaW50ZW5kZWQgZm9yIGN1c3RvbWl6aW5nIHRoZSBkZWZhdWx0ZQEgcnVudGltZSBnZW5lc2lzIGNvbmZpZy4gVGhlIHBhdGNoIHNoYWxsIGJlIG1lcmdlZCAocmZjNzM4Nikgd2l0aCB0aGUgSlNPTiByZXByZXNlbnRhdGlvbmEBIG9mIHRoZSBkZWZhdWx0IGBSdW50aW1lR2VuZXNpc0NvbmZpZ2AgdG8gY3JlYXRlIGEgY29tcHJlaGVuc2l2ZSBnZW5lc2lzIGNvbmZpZyB0aGF0IGNhboQgYmUgdXNlZCBpbiBgYnVpbGRfc3RhdGVgIG1ldGhvZC4AMHByZXNldF9uYW1lcwCxERBRASBSZXR1cm5zIGEgbGlzdCBvZiBpZGVudGlmaWVycyBmb3IgYXZhaWxhYmxlIGJ1aWx0aW4gYFJ1bnRpbWVHZW5lc2lzQ29uZmlnYCBwcmVzZXRzLgBhASBUaGUgcHJlc2V0cyBmcm9tIHRoZSBsaXN0IGNhbiBiZSBxdWVyaWVkIHdpdGggW2BHZW5lc2lzQnVpbGRlcjo6Z2V0X3ByZXNldGBdIG1ldGhvZC4gSWYBASBubyBuYW1lZCBwcmVzZXRzIGFyZSBwcm92aWRlZCBieSB0aGUgcnVudGltZSB0aGUgbGlzdCBpcyBlbXB0eS4ABPAgQVBJIHRvIGludGVyYWN0IHdpdGggYFJ1bnRpbWVHZW5lc2lzQ29uZmlnYCBmb3IgdGhlIHJ1bnRpbWUEAFBBc3NldEh1Yk1pZ3JhdGlvbkFwaQhUbWlncmF0aW9uX3N0YXJ0X2Jsb2NrADgE1CBSZXR1cm5zIHRoZSBibG9jayBudW1iZXIgd2hlbiB0aGUgbWlncmF0aW9uIHN0YXJ0ZWQuAExtaWdyYXRpb25fZW5kX2Jsb2NrADgEzCBSZXR1cm5zIHRoZSBibG9jayBudW1iZXIgd2hlbiB0aGUgbWlncmF0aW9uIGVuZGVkLgAEAQEgQVBJIHRvIHF1ZXJ5IGluZm9ybWF0aW9uIGFib3V0IHRoZSBBc3NldCBIdWIgbWlncmF0aW9uIHByb2Nlc3MuBABAR2V0UGFyYWNoYWluSW5mbwQwcGFyYWNoYWluX2lkAKAEsCBSZXRyaWV2ZSB0aGUgcGFyYWNoYWluIGlkIHVzZWQgZm9yIHJ1bnRpbWUuAAQNASBSdW50aW1lIGFwaSB1c2VkIHRvIGFjY2VzcyBnZW5lcmFsIGluZm8gYWJvdXQgYSBwYXJhY2hhaW4gcnVudGltZS4EAEhOb21pbmF0aW9uUG9vbHNBcGkoPHBlbmRpbmdfcmV3YXJkcwQMd2hvBJUBBDUBIFJldHVybnMgdGhlIHBlbmRpbmcgcmV3YXJkcyBmb3IgdGhlIG1lbWJlciB0aGF0IHRoZSBBY2NvdW50SWQgd2FzIGdpdmVuIGZvci4ARHBvaW50c190b19iYWxhbmNlCBxwb29sX2lkOBhwb2ludHOVAZUBBPQgUmV0dXJucyB0aGUgZXF1aXZhbGVudCBiYWxhbmNlIG9mIGBwb2ludHNgIGZvciBhIGdpdmVuIHBvb2wuAERiYWxhbmNlX3RvX3BvaW50cwgccG9vbF9pZDgkbmV3X2Z1bmRzlQGVAQT8IFJldHVybnMgdGhlIGVxdWl2YWxlbnQgcG9pbnRzIG9mIGBuZXdfZnVuZHNgIGZvciBhIGdpdmVuIHBvb2wuAEhwb29sX3BlbmRpbmdfc2xhc2gEHHBvb2xfaWQ4lQEEsCBSZXR1cm5zIHRoZSBwZW5kaW5nIHNsYXNoIGZvciBhIGdpdmVuIHBvb2wuAFBtZW1iZXJfcGVuZGluZ19zbGFzaAQYbWVtYmVyBJUBEMwgUmV0dXJucyB0aGUgcGVuZGluZyBzbGFzaCBmb3IgYSBnaXZlbiBwb29sIG1lbWJlci4ATQEgSWYgcGVuZGluZyBzbGFzaCBvZiB0aGUgbWVtYmVyIGV4Y2VlZHMgYEV4aXN0ZW50aWFsRGVwb3NpdGAsIGl0IGNhbiBiZSByZXBvcnRlZCBvbhwgY2hhaW4uAHRwb29sX25lZWRzX2RlbGVnYXRlX21pZ3JhdGlvbgQccG9vbF9pZDiZASDkIFJldHVybnMgdHJ1ZSBpZiB0aGUgcG9vbCB3aXRoIGBwb29sX2lkYCBuZWVkcyBtaWdyYXRpb24uAEkBIFRoaXMgY2FuIGhhcHBlbiB3aGVuIHRoZSBgcGFsbGV0LW5vbWluYXRpb24tcG9vbHNgIGhhcyBzd2l0Y2hlZCB0byB1c2luZyBzdHJhdGVneUEBIFtgRGVsZWdhdGVTdGFrZWBdKHBhbGxldF9ub21pbmF0aW9uX3Bvb2xzOjphZGFwdGVyOjpEZWxlZ2F0ZVN0YWtlKSBidXQgdGhlIHBvb2zoIHN0aWxsIGhhcyBmdW5kcyB0aGF0IHdlcmUgc3Rha2VkIHVzaW5nIHRoZSBvbGRlciBzdHJhdGVneRkBIFtUcmFuc2ZlclN0YWtlXShwYWxsZXRfbm9taW5hdGlvbl9wb29sczo6YWRhcHRlcjo6VHJhbnNmZXJTdGFrZSkuIFVzZYkBIFtgbWlncmF0ZV9wb29sX3RvX2RlbGVnYXRlX3N0YWtlYF0ocGFsbGV0X25vbWluYXRpb25fcG9vbHM6OkNhbGw6Om1pZ3JhdGVfcG9vbF90b19kZWxlZ2F0ZV9zdGFrZSlUIHRvIG1pZ3JhdGUgdGhlIHBvb2wuAHxtZW1iZXJfbmVlZHNfZGVsZWdhdGVfbWlncmF0aW9uBBhtZW1iZXIEmQEcKQEgUmV0dXJucyB0cnVlIGlmIHRoZSBkZWxlZ2F0ZWQgZnVuZHMgb2YgdGhlIHBvb2wgYG1lbWJlcmAgbmVlZHMgbWlncmF0aW9uLgDYIE9uY2UgYSBwb29sIGhhcyBzdWNjZXNzZnVsbHkgbWlncmF0ZWQgdG8gdGhlIHN0cmF0ZWd5VQEgW2BEZWxlZ2F0ZVN0YWtlYF0ocGFsbGV0X25vbWluYXRpb25fcG9vbHM6OmFkYXB0ZXI6OkRlbGVnYXRlU3Rha2UpLCB0aGUgZnVuZHMgb2YgdGhlGQEgbWVtYmVyIGNhbiBiZSBtaWdyYXRlZCBmcm9tIHBvb2wgYWNjb3VudCB0byB0aGUgbWVtYmVyJ3MgYWNjb3VudC4gVXNlKQEgW2BtaWdyYXRlX2RlbGVnYXRpb25gXShwYWxsZXRfbm9taW5hdGlvbl9wb29sczo6Q2FsbDo6bWlncmF0ZV9kZWxlZ2F0aW9uKaQgdG8gbWlncmF0ZSB0aGUgZnVuZHMgb2YgdGhlIHBvb2wgbWVtYmVyLgBQbWVtYmVyX3RvdGFsX2JhbGFuY2UEDHdobwSVAQRlASBSZXR1cm5zIHRoZSB0b3RhbCBjb250cmlidXRpb24gb2YgYSBwb29sIG1lbWJlciBpbmNsdWRpbmcgYW55IGJhbGFuY2UgdGhhdCBpcyB1bmJvbmRpbmcuADBwb29sX2JhbGFuY2UEHHBvb2xfaWQ4lQEEnCBUb3RhbCBiYWxhbmNlIGNvbnRyaWJ1dGVkIHRvIHRoZSBwb29sLgA0cG9vbF9hY2NvdW50cwQccG9vbF9pZDjtDQQtASBSZXR1cm5zIHRoZSBib25kZWQgYWNjb3VudCBhbmQgcmV3YXJkIGFjY291bnQgYXNzb2NpYXRlZCB3aXRoIHRoZSBwb29sX2lkLgAE+CBSdW50aW1lIGFwaSBmb3IgYWNjZXNzaW5nIGluZm9ybWF0aW9uIGFib3V0IG5vbWluYXRpb24gcG9vbHMuBAAoU3Rha2luZ0FwaQxEbm9taW5hdGlvbnNfcXVvdGEEHGJhbGFuY2WVATgEEQEgUmV0dXJucyB0aGUgbm9taW5hdGlvbnMgcXVvdGEgZm9yIGEgbm9taW5hdG9yIHdpdGggYSBnaXZlbiBiYWxhbmNlLgBcZXJhc19zdGFrZXJzX3BhZ2VfY291bnQIDGVyYTgcYWNjb3VudAQ4BDkBIFJldHVybnMgdGhlIHBhZ2UgY291bnQgb2YgZXhwb3N1cmVzIGZvciBhIHZhbGlkYXRvciBgYWNjb3VudGAgaW4gYSBnaXZlbiBlcmEuADxwZW5kaW5nX3Jld2FyZHMIDGVyYTgcYWNjb3VudASZAQRFASBSZXR1cm5zIHRydWUgaWYgYSB2YWxpZGF0b3IgYGFjY291bnRgIGhhcyBwYWdlcyB0byBiZSBjbGFpbWVkIGZvciB0aGUgZ2l2ZW4gZXJhLgAABAAkSW5mbGF0aW9uBJRleHBlcmltZW50YWxfaXNzdWFuY2VfcHJlZGljdGlvbl9pbmZvALURENQgUmV0dXJuIHRoZSBjdXJyZW50IGVzdGltYXRlcyBvZiB0aGUgaXNzdWFuY2UgYW1vdW50LgBRASBUaGlzIGlzIG1hcmtlZCBhcyBleHBlcmltZW50YWwgaW4gbGlnaHQgb2YgUkZDIzg5LiBOb25ldGhlbGVzcywgaXRzIHVzYWdlIGlzIGhpZ2hseSUBIHJlY29tbWVuZGVkIG92ZXIgdHJ5aW5nIHRvIHJlYWQtc3RvcmFnZSwgb3IgcmUtY3JlYXRlIHRoZSBvbmNoYWluIGxvZ2ljLgAABAAkUmV2aXZlQXBpbCRldGhfYmxvY2sAJQ4MfCBSZXR1cm5zIHRoZSBjdXJyZW50IEVUSCBibG9jay4AuCBUaGlzIGlzIG9uZSBibG9jayBiZWhpbmQgdGhlIHN1YnN0cmF0ZSBibG9jay4AOGV0aF9ibG9ja19oYXNoBBhudW1iZXIFBXkHBNwgUmV0dXJucyB0aGUgRVRIIGJsb2NrIGhhc2ggZm9yIHRoZSBnaXZlbiBibG9jayBudW1iZXIuAEBldGhfcmVjZWlwdF9kYXRhAJEOFBEBIFRoZSBkZXRhaWxzIG5lZWRlZCB0byByZWNvbnN0cnVjdCB0aGUgcmVjZWlwdCBpbmZvcm1hdGlvbiBvZmZjaGFpbi4AHCAjIE5vdGUAVQEgRWFjaCBlbnRyeSBjb3JyZXNwb25kcyB0byB0aGUgYXBwcm9wcmlhdGUgRXRoZXJldW0gdHJhbnNhY3Rpb24gaW4gdGhlIGN1cnJlbnQgYmxvY2suADxibG9ja19nYXNfbGltaXQABQUEdCBSZXR1cm5zIHRoZSBibG9jayBnYXMgbGltaXQuAGxtYXhfZXh0cmluc2ljX3dlaWdodF9pbl9nYXMABQUE8CBSZXR1cm5zIHRoZSBibG9jayBnYXMgbGltaXQgYXMgY2FsY3VsYXRlZCBmcm9tIHRoZSB3ZWlnaHRzLgAcYmFsYW5jZQQcYWRkcmVzc/0EBQUEMQEgUmV0dXJucyB0aGUgZnJlZSBiYWxhbmNlIG9mIHRoZSBnaXZlbiBgW0gxNjBdYCBhZGRyZXNzLCB1c2luZyBFVk0gZGVjaW1hbHMuACRnYXNfcHJpY2UABQUEXCBSZXR1cm5zIHRoZSBnYXMgcHJpY2UuABRub25jZQQcYWRkcmVzc/0EOATEIFJldHVybnMgdGhlIG5vbmNlIG9mIHRoZSBnaXZlbiBgW0gxNjBdYCBhZGRyZXNzLgAQY2FsbBgYb3JpZ2luBBBkZXN0/QQUdmFsdWWVASRnYXNfbGltaXR1AVRzdG9yYWdlX2RlcG9zaXRfbGltaXRhBChpbnB1dF9kYXRhGLkRDPQgUGVyZm9ybSBhIGNhbGwgZnJvbSBhIHNwZWNpZmllZCBhY2NvdW50IHRvIGEgZ2l2ZW4gY29udHJhY3QuAIggU2VlIFtgY3JhdGU6OlBhbGxldDo6YmFyZV9jYWxsYF0uACxpbnN0YW50aWF0ZRwYb3JpZ2luBBR2YWx1ZZUBJGdhc19saW1pdHUBVHN0b3JhZ2VfZGVwb3NpdF9saW1pdGEEEGNvZGXNERBkYXRhGBBzYWx0AQXREQxwIEluc3RhbnRpYXRlIGEgbmV3IGNvbnRyYWN0LgCkIFNlZSBgW2NyYXRlOjpQYWxsZXQ6OmJhcmVfaW5zdGFudGlhdGVdYC4AMGV0aF90cmFuc2FjdAQIdHjdEfkREGggUGVyZm9ybSBhbiBFdGhlcmV1bSBjYWxsLgCUIERlcHJlY2F0ZWQgdXNlIGB2MmAgdmVyc2lvbiBpbnN0ZWFkLrAgU2VlIFtgY3JhdGU6OlBhbGxldDo6ZHJ5X3J1bl9ldGhfdHJhbnNhY3RgXQBgZXRoX3RyYW5zYWN0X3dpdGhfY29uZmlnCAh0eN0RGGNvbmZpZwUS+REMaCBQZXJmb3JtIGFuIEV0aGVyZXVtIGNhbGwuALAgU2VlIFtgY3JhdGU6OlBhbGxldDo6ZHJ5X3J1bl9ldGhfdHJhbnNhY3RgXQBAZXRoX2VzdGltYXRlX2dhcwgIdHjdERhjb25maWcFEjkSFOggRXN0aW1hdGVzIHRoZSBhbW91bnQgb2YgZ2FzIHRoYXQgYSB0cmFuc2FjdGlvbnMgcmVxdWlyZXMuAF0BIFRoaXMgZnVuY3Rpb24gZXN0aW1hdGVzIHRoZSBnYXMgb2YgdGhlIHRyYW5zYWN0aW9uIGFjY29yZGluZyB0byB0aGUgc2FtZSBiaW5hcnkgc2VhcmNoWQEgYWxnb3JpdGhtIHRoYXQncyBpbXBsZW1lbnRlZCBpbiBHZXRoLiBJdCBzdG9wcyB3aGVuIHdpdGggYW4gYWNjZXB0YWJsZSBlcnJvciByYXRpbyBvZrQgMS41JSBzbyB0aGF0IHRoZSBhbGdvcml0aG0gdGVybWluYXRlcyBlYXJseS4AXGV0aF9wcmVfZGlzcGF0Y2hfd2VpZ2h0BAh0eBg9EgRNASBSZXR1cm4gdGhlIHByZS1kaXNwYXRjaCB3ZWlnaHQgYm9va2VkIGZvciB0aGUgc2lnbmVkIEV0aGVyZXVtIHRyYW5zYWN0aW9uIHBheWxvYWQuACx1cGxvYWRfY29kZQwYb3JpZ2luBBBjb2RlGFRzdG9yYWdlX2RlcG9zaXRfbGltaXRhBEESDOggVXBsb2FkIG5ldyBjb2RlIHdpdGhvdXQgaW5zdGFudGlhdGluZyBhIGNvbnRyYWN0IGZyb20gaXQuAKQgU2VlIFtgY3JhdGU6OlBhbGxldDo6YmFyZV91cGxvYWRfY29kZWBdLgAsZ2V0X3N0b3JhZ2UIHGFkZHJlc3P9BAxrZXkISRIUvCBRdWVyeSBhIGdpdmVuIHN0b3JhZ2Uga2V5IGluIGEgZ2l2ZW4gY29udHJhY3QuAE0BIFJldHVybnMgYE9rKFNvbWUoVmVjPHU4PikpYCBpZiB0aGUgc3RvcmFnZSB2YWx1ZSBleGlzdHMgdW5kZXIgdGhlIGdpdmVuIGtleSBpbiB0aGVhASBzcGVjaWZpZWQgYWNjb3VudCBhbmQgYE9rKE5vbmUpYCBpZiBpdCBkb2Vzbid0LiBJZiB0aGUgYWNjb3VudCBzcGVjaWZpZWQgYnkgdGhlIGFkZHJlc3MJASBkb2Vzbid0IGV4aXN0LCBvciBkb2Vzbid0IGhhdmUgYSBjb250cmFjdCB0aGVuIGBFcnJgIGlzIHJldHVybmVkLgBMZ2V0X3N0b3JhZ2VfdmFyX2tleQgcYWRkcmVzc/0EDGtleRhJEhT4IFF1ZXJ5IGEgZ2l2ZW4gdmFyaWFibGUtc2l6ZWQgc3RvcmFnZSBrZXkgaW4gYSBnaXZlbiBjb250cmFjdC4ATQEgUmV0dXJucyBgT2soU29tZShWZWM8dTg+KSlgIGlmIHRoZSBzdG9yYWdlIHZhbHVlIGV4aXN0cyB1bmRlciB0aGUgZ2l2ZW4ga2V5IGluIHRoZWEBIHNwZWNpZmllZCBhY2NvdW50IGFuZCBgT2soTm9uZSlgIGlmIGl0IGRvZXNuJ3QuIElmIHRoZSBhY2NvdW50IHNwZWNpZmllZCBieSB0aGUgYWRkcmVzcwkBIGRvZXNuJ3QgZXhpc3QsIG9yIGRvZXNuJ3QgaGF2ZSBhIGNvbnRyYWN0IHRoZW4gYEVycmAgaXMgcmV0dXJuZWQuACx0cmFjZV9ibG9jawgUYmxvY2v1CRhjb25maWdREm0SGAUBIFRyYWNlcyB0aGUgZXhlY3V0aW9uIG9mIGFuIGVudGlyZSBibG9jayBhbmQgcmV0dXJucyBjYWxsIHRyYWNlcy4AQQEgVGhpcyBpcyBpbnRlbmRlZCB0byBiZSBjYWxsZWQgdGhyb3VnaCBgc3RhdGVfY2FsbGAgdG8gcmVwbGF5IHRoZSBibG9jayBmcm9tIHRoZTggcGFyZW50IGJsb2NrLgDIIFNlZSBldGgtcnBjIGBkZWJ1Z190cmFjZUJsb2NrQnlOdW1iZXJgIGZvciB1c2FnZS4AIHRyYWNlX3R4DBRibG9ja/UJIHR4X2luZGV4OBhjb25maWdREs0SGPwgVHJhY2VzIHRoZSBleGVjdXRpb24gb2YgYSBzcGVjaWZpYyB0cmFuc2FjdGlvbiB3aXRoaW4gYSBibG9jay4AQQEgVGhpcyBpcyBpbnRlbmRlZCB0byBiZSBjYWxsZWQgdGhyb3VnaCBgc3RhdGVfY2FsbGAgdG8gcmVwbGF5IHRoZSBibG9jayBmcm9tIHRoZYwgcGFyZW50IGhhc2ggdXAgdG8gdGhlIHRyYW5zYWN0aW9uLgDAIFNlZSBldGgtcnBjIGBkZWJ1Z190cmFjZVRyYW5zYWN0aW9uYCBmb3IgdXNhZ2UuACh0cmFjZV9jYWxsCAh0eN0RGGNvbmZpZ1ES0RIMwCBEcnkgcnVuIGFuZCByZXR1cm4gdGhlIHRyYWNlIG9mIHRoZSBnaXZlbiBjYWxsLgCkIFNlZSBldGgtcnBjIGBkZWJ1Z190cmFjZUNhbGxgIGZvciB1c2FnZS4AWHRyYWNlX2NhbGxfd2l0aF9jb25maWcMCHR43REsdHJhY2VyX3R5cGVREhhjb25maWfVEtESFDkBIERyeSBydW4gYW5kIHJldHVybiB0aGUgdHJhY2Ugb2YgdGhlIGdpdmVuIGNhbGwgd2l0aCBhZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb24uAEEBIExpa2UgW2BTZWxmOjp0cmFjZV9jYWxsYF0sIGJ1dCBhY2NlcHRzIGEgW2BUcmFjaW5nQ29uZmlnYF0gdGhhdCBjYW4gY2Fycnkgc3RhdGVFASBvdmVycmlkZXMgYW5kIGZ1dHVyZSBleHRlbnNpYmlsaXR5LiBUaGUgY29uZmlnIG11c3QgYmUgdGhlICoqbGFzdCBhcmd1bWVudCoqIGZvcgUBIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5IOKAlCBzZWUgW2BUcmFjaW5nQ29uZmlnYF0gZG9jdW1lbnRhdGlvbi4AMGJsb2NrX2F1dGhvcgD9BAT4IFRoZSBhZGRyZXNzIG9mIHRoZSB2YWxpZGF0b3IgdGhhdCBwcm9kdWNlZCB0aGUgY3VycmVudCBibG9jay4AHGFkZHJlc3MEKGFjY291bnRfaWQE/QQEzCBHZXQgdGhlIEgxNjAgYWRkcmVzcyBhc3NvY2lhdGVkIHRvIHRoaXMgYWNjb3VudCBpZAAoYWNjb3VudF9pZAQcYWRkcmVzc/0EBATQIEdldCB0aGUgYWNjb3VudCBpZCBhc3NvY2lhdGVkIHRvIHRoaXMgSDE2MCBhZGRyZXNzLgBccnVudGltZV9wYWxsZXRzX2FkZHJlc3MA/QQE9CBUaGUgYWRkcmVzcyB1c2VkIHRvIGNhbGwgdGhlIHJ1bnRpbWUncyBwYWxsZXRzIGRpc3BhdGNoYWJsZXMAEGNvZGUEHGFkZHJlc3P9BBgEEQEgVGhlIGNvZGUgYXQgdGhlIHNwZWNpZmllZCBhZGRyZXNzIHRha2luZyBwcmUtY29tcGlsZXMgaW50byBhY2NvdW50LgBUbmV3X2JhbGFuY2Vfd2l0aF9kdXN0BBxiYWxhbmNlBQXZEgQNASBDb25zdHJ1Y3QgdGhlIG5ldyBiYWxhbmNlIGFuZCBkdXN0IGNvbXBvbmVudHMgb2YgdGhpcyBFVk0gYmFsYW5jZS4ABLwgVGhlIEFQSSB1c2VkIHRvIGRyeS1ydW4gY29udHJhY3QgaW50ZXJhY3Rpb25zLgQAIO0H5RIA";
2
+
3
+ export { binMeta as default };