@polkadot-api/forklift 0.1.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 (63) hide show
  1. package/README.md +394 -0
  2. package/bin/cli.js +388 -0
  3. package/bin/cli.js.map +1 -0
  4. package/dist/.papi/descriptors/dist/descriptors-CVixQzDI.js +27 -0
  5. package/dist/.papi/descriptors/dist/descriptors-CVixQzDI.js.map +1 -0
  6. package/dist/.papi/descriptors/dist/index.js +40 -0
  7. package/dist/.papi/descriptors/dist/index.js.map +1 -0
  8. package/dist/.papi/descriptors/dist/metadataTypes-OmVFeQs5.js +4 -0
  9. package/dist/.papi/descriptors/dist/metadataTypes-OmVFeQs5.js.map +1 -0
  10. package/dist/.papi/descriptors/dist/parachain_metadata-CQQZadL1.js +4 -0
  11. package/dist/.papi/descriptors/dist/parachain_metadata-CQQZadL1.js.map +1 -0
  12. package/dist/.papi/descriptors/dist/relay_metadata-BAI7pjXf.js +4 -0
  13. package/dist/.papi/descriptors/dist/relay_metadata-BAI7pjXf.js.map +1 -0
  14. package/dist/index.d.ts +64 -0
  15. package/dist/src/block-builder/create-block.js +232 -0
  16. package/dist/src/block-builder/create-block.js.map +1 -0
  17. package/dist/src/block-builder/para-enter.js +21 -0
  18. package/dist/src/block-builder/para-enter.js.map +1 -0
  19. package/dist/src/block-builder/set-validation-data.js +284 -0
  20. package/dist/src/block-builder/set-validation-data.js.map +1 -0
  21. package/dist/src/block-builder/slot-utils.js +68 -0
  22. package/dist/src/block-builder/slot-utils.js.map +1 -0
  23. package/dist/src/block-builder/timestamp.js +20 -0
  24. package/dist/src/block-builder/timestamp.js.map +1 -0
  25. package/dist/src/chain.js +334 -0
  26. package/dist/src/chain.js.map +1 -0
  27. package/dist/src/codecs.js +103 -0
  28. package/dist/src/codecs.js.map +1 -0
  29. package/dist/src/executor.js +87 -0
  30. package/dist/src/executor.js.map +1 -0
  31. package/dist/src/forklift.js +177 -0
  32. package/dist/src/forklift.js.map +1 -0
  33. package/dist/src/index.js +3 -0
  34. package/dist/src/index.js.map +1 -0
  35. package/dist/src/logger.js +11 -0
  36. package/dist/src/logger.js.map +1 -0
  37. package/dist/src/prequeries.js +19 -0
  38. package/dist/src/prequeries.js.map +1 -0
  39. package/dist/src/rpc/archive_v1.js +223 -0
  40. package/dist/src/rpc/archive_v1.js.map +1 -0
  41. package/dist/src/rpc/chainHead_v1.js +383 -0
  42. package/dist/src/rpc/chainHead_v1.js.map +1 -0
  43. package/dist/src/rpc/chainSpec_v1.js +14 -0
  44. package/dist/src/rpc/chainSpec_v1.js.map +1 -0
  45. package/dist/src/rpc/dev.js +32 -0
  46. package/dist/src/rpc/dev.js.map +1 -0
  47. package/dist/src/rpc/forklift_xcm.js +99 -0
  48. package/dist/src/rpc/forklift_xcm.js.map +1 -0
  49. package/dist/src/rpc/rpc_utils.js +20 -0
  50. package/dist/src/rpc/rpc_utils.js.map +1 -0
  51. package/dist/src/rpc/transaction_v1.js +13 -0
  52. package/dist/src/rpc/transaction_v1.js.map +1 -0
  53. package/dist/src/serve.js +88 -0
  54. package/dist/src/serve.js.map +1 -0
  55. package/dist/src/source.js +125 -0
  56. package/dist/src/source.js.map +1 -0
  57. package/dist/src/storage.js +223 -0
  58. package/dist/src/storage.js.map +1 -0
  59. package/dist/src/txPool.js +177 -0
  60. package/dist/src/txPool.js.map +1 -0
  61. package/dist/src/xcm.js +292 -0
  62. package/dist/src/xcm.js.map +1 -0
  63. package/package.json +61 -0
@@ -0,0 +1,4 @@
1
+ const binMeta = "bWV0YRDtEAAMKHNwX3J1bnRpbWUwbXVsdGlhZGRyZXNzME11bHRpQWRkcmVzcwgkQWNjb3VudElkAQQwQWNjb3VudEluZGV4ARABFAhJZAQABAEkQWNjb3VudElkAAAAFEluZGV4BAAUATBBY2NvdW50SW5kZXgAAQAMUmF3BAAYARxWZWM8dTg+AAIAJEFkZHJlc3MzMgQACAEgW3U4OyAzMl0AAwAkQWRkcmVzczIwBAAcASBbdTg7IDIwXQAEAAAEDBxzcF9jb3JlGGNyeXB0byxBY2NvdW50SWQzMgAABAAIASBbdTg7IDMyXQAACAAAAyAAAAAMAAwAAAUDABAAAAQAABQAAAYQABgAAAIMABwAAAMUAAAADAAgCEBwb2xrYWRvdF9ydW50aW1lLFJ1bnRpbWVDYWxsAAG8GFN5c3RlbQQAJAGtAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxTeXN0ZW0sIFJ1bnRpbWU+AAAAJFNjaGVkdWxlcgQAQAG5AXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxTY2hlZHVsZXIsIFJ1bnRpbWU+AAEAIFByZWltYWdlBABMAbUBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFByZWltYWdlLCBSdW50aW1lPgAKABBCYWJlBABUAaUBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPEJhYmUsIFJ1bnRpbWU+AAIAJFRpbWVzdGFtcAQAjAG5AXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxUaW1lc3RhbXAsIFJ1bnRpbWU+AAMAHEluZGljZXMEAJQBsQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8SW5kaWNlcywgUnVudGltZT4ABAAgQmFsYW5jZXMEAJwBtQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8QmFsYW5jZXMsIFJ1bnRpbWU+AAUAHFN0YWtpbmcEALABsQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8U3Rha2luZywgUnVudGltZT4ABwAcU2Vzc2lvbgQA/AGxAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxTZXNzaW9uLCBSdW50aW1lPgAJABxHcmFuZHBhBAAdAQGxAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxHcmFuZHBhLCBSdW50aW1lPgALACBUcmVhc3VyeQQASQEBtQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8VHJlYXN1cnksIFJ1bnRpbWU+ABMAQENvbnZpY3Rpb25Wb3RpbmcEAOkBAdUBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPENvbnZpY3Rpb25Wb3RpbmcsIFJ1bnRpbWU+ABQAJFJlZmVyZW5kYQQAAQIBuQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8UmVmZXJlbmRhLCBSdW50aW1lPgAVACRXaGl0ZWxpc3QEADECAbkBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFdoaXRlbGlzdCwgUnVudGltZT4AFwAYQ2xhaW1zBAA5AgGtAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxDbGFpbXMsIFJ1bnRpbWU+ABgAHFZlc3RpbmcEAFkCAbEBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFZlc3RpbmcsIFJ1bnRpbWU+ABkAHFV0aWxpdHkEAGECAbEBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFV0aWxpdHksIFJ1bnRpbWU+ABoAFFByb3h5BABpAgGpAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxQcm94eSwgUnVudGltZT4AHQAgTXVsdGlzaWcEAHUCAbUBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPE11bHRpc2lnLCBSdW50aW1lPgAeACBCb3VudGllcwQAgQIBtQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8Qm91bnRpZXMsIFJ1bnRpbWU+ACIANENoaWxkQm91bnRpZXMEAIUCAckBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPENoaWxkQm91bnRpZXMsIFJ1bnRpbWU+ACYAaEVsZWN0aW9uUHJvdmlkZXJNdWx0aVBoYXNlBACJAgH9AXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxFbGVjdGlvblByb3ZpZGVyTXVsdGlQaGFzZSwgUnVudGltZT4AJAAkVm90ZXJMaXN0BAB9AwG5AXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxWb3Rlckxpc3QsIFJ1bnRpbWU+ACUAPE5vbWluYXRpb25Qb29scwQAgQMB0QFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8Tm9taW5hdGlvblBvb2xzLCBSdW50aW1lPgAnACxGYXN0VW5zdGFrZQQAtQMBwQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8RmFzdFVuc3Rha2UsIFJ1bnRpbWU+ACgAPFN0YWtpbmdBaENsaWVudAQAuQMB0QFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8U3Rha2luZ0FoQ2xpZW50LCBSdW50aW1lPgAqADRDb25maWd1cmF0aW9uBADFAwHJAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxDb25maWd1cmF0aW9uLCBSdW50aW1lPgAzACxQYXJhc1NoYXJlZAQA6QMBwQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8UGFyYXNTaGFyZWQsIFJ1bnRpbWU+ADQANFBhcmFJbmNsdXNpb24EAO0DAckBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFBhcmFJbmNsdXNpb24sIFJ1bnRpbWU+ADUAMFBhcmFJbmhlcmVudAQA8QMBxQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8UGFyYUluaGVyZW50LCBSdW50aW1lPgA2ABRQYXJhcwQAfQQBqQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8UGFyYXMsIFJ1bnRpbWU+ADgALEluaXRpYWxpemVyBACFBAHBAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxJbml0aWFsaXplciwgUnVudGltZT4AOQAQSHJtcAQAiQQBpQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8SHJtcCwgUnVudGltZT4APAA0UGFyYXNEaXNwdXRlcwQAkQQByQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8UGFyYXNEaXNwdXRlcywgUnVudGltZT4APgA0UGFyYXNTbGFzaGluZwQAlQQByQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8UGFyYXNTbGFzaGluZywgUnVudGltZT4APwAgT25EZW1hbmQEAKUEAbUBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPE9uRGVtYW5kLCBSdW50aW1lPgBAACRSZWdpc3RyYXIEAKkEAbkBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFJlZ2lzdHJhciwgUnVudGltZT4ARgAUU2xvdHMEAK0EAakBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFNsb3RzLCBSdW50aW1lPgBHACBBdWN0aW9ucwQAsQQBtQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8QXVjdGlvbnMsIFJ1bnRpbWU+AEgAJENyb3dkbG9hbgQAuQQBuQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8Q3Jvd2Rsb2FuLCBSdW50aW1lPgBJACBDb3JldGltZQQAzQQBtQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8Q29yZXRpbWUsIFJ1bnRpbWU+AEoASFN0YXRlVHJpZU1pZ3JhdGlvbgQA4QQB3QFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8U3RhdGVUcmllTWlncmF0aW9uLCBSdW50aW1lPgBiACRYY21QYWxsZXQEAPkEAbkBc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFhjbVBhbGxldCwgUnVudGltZT4AYwAwTWVzc2FnZVF1ZXVlBABtBgHFAXNlbGY6OnNwX2FwaV9oaWRkZW5faW5jbHVkZXNfY29uc3RydWN0X3J1bnRpbWU6OmhpZGRlbl9pbmNsdWRlOjpkaXNwYXRjaAo6OkNhbGxhYmxlQ2FsbEZvcjxNZXNzYWdlUXVldWUsIFJ1bnRpbWU+AGQAJEFzc2V0UmF0ZQQAeQYBuQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8QXNzZXRSYXRlLCBSdW50aW1lPgBlABRCZWVmeQQAgQYBqQFzZWxmOjpzcF9hcGlfaGlkZGVuX2luY2x1ZGVzX2NvbnN0cnVjdF9ydW50aW1lOjpoaWRkZW5faW5jbHVkZTo6ZGlzcGF0Y2gKOjpDYWxsYWJsZUNhbGxGb3I8QmVlZnksIFJ1bnRpbWU+AMgAKFJjTWlncmF0b3IEALkGAb0Bc2VsZjo6c3BfYXBpX2hpZGRlbl9pbmNsdWRlc19jb25zdHJ1Y3RfcnVudGltZTo6aGlkZGVuX2luY2x1ZGU6OmRpc3BhdGNoCjo6Q2FsbGFibGVDYWxsRm9yPFJjTWlncmF0b3IsIFJ1bnRpbWU+AP8AACQMMGZyYW1lX3N5c3RlbRhwYWxsZXQQQ2FsbAQEVAABLBhyZW1hcmsEARhyZW1hcmsYARxWZWM8dTg+AAAMaE1ha2Ugc29tZSBvbi1jaGFpbiByZW1hcmsuAIhDYW4gYmUgZXhlY3V0ZWQgYnkgZXZlcnkgYG9yaWdpbmAuOHNldF9oZWFwX3BhZ2VzBAEUcGFnZXMoAQx1NjQAAQT4U2V0IHRoZSBudW1iZXIgb2YgcGFnZXMgaW4gdGhlIFdlYkFzc2VtYmx5IGVudmlyb25tZW50J3MgaGVhcC4gc2V0X2NvZGUEARBjb2RlGAEcVmVjPHU4PgACBGRTZXQgdGhlIG5ldyBydW50aW1lIGNvZGUuXHNldF9jb2RlX3dpdGhvdXRfY2hlY2tzBAEQY29kZRgBHFZlYzx1OD4AAxAZAVNldCB0aGUgbmV3IHJ1bnRpbWUgY29kZSB3aXRob3V0IGRvaW5nIGFueSBjaGVja3Mgb2YgdGhlIGdpdmVuIGBjb2RlYC4AUQFOb3RlIHRoYXQgcnVudGltZSB1cGdyYWRlcyB3aWxsIG5vdCBydW4gaWYgdGhpcyBpcyBjYWxsZWQgd2l0aCBhIG5vdC1pbmNyZWFzaW5nIHNwZWMgdmVyc2lvbiEsc2V0X3N0b3JhZ2UEARRpdGVtcywBNFZlYzxLZXlWYWx1ZT4ABARoU2V0IHNvbWUgaXRlbXMgb2Ygc3RvcmFnZS4wa2lsbF9zdG9yYWdlBAEQa2V5czQBIFZlYzxLZXk+AAUEdEtpbGwgc29tZSBpdGVtcyBmcm9tIHN0b3JhZ2UuLGtpbGxfcHJlZml4CAEYcHJlZml4GAEMS2V5AAEcc3Via2V5czgBDHUzMgAGEBEBS2lsbCBhbGwgc3RvcmFnZSBpdGVtcyB3aXRoIGEga2V5IHRoYXQgc3RhcnRzIHdpdGggdGhlIGdpdmVuIHByZWZpeC4AOQEqKk5PVEU6KiogV2UgcmVseSBvbiB0aGUgUm9vdCBvcmlnaW4gdG8gcHJvdmlkZSB1cyB0aGUgbnVtYmVyIG9mIHN1YmtleXMgdW5kZXI9AXRoZSBwcmVmaXggd2UgYXJlIHJlbW92aW5nIHRvIGFjY3VyYXRlbHkgY2FsY3VsYXRlIHRoZSB3ZWlnaHQgb2YgdGhpcyBmdW5jdGlvbi5EcmVtYXJrX3dpdGhfZXZlbnQEARhyZW1hcmsYARxWZWM8dTg+AAcEpE1ha2Ugc29tZSBvbi1jaGFpbiByZW1hcmsgYW5kIGVtaXQgZXZlbnQuRGF1dGhvcml6ZV91cGdyYWRlBAEkY29kZV9oYXNoPAEcVDo6SGFzaAAJEGEBQXV0aG9yaXplIGFuIHVwZ3JhZGUgdG8gYSBnaXZlbiBgY29kZV9oYXNoYCBmb3IgdGhlIHJ1bnRpbWUuIFRoZSBydW50aW1lIGNhbiBiZSBzdXBwbGllZBhsYXRlci4AfFRoaXMgY2FsbCByZXF1aXJlcyBSb290IG9yaWdpbi6AYXV0aG9yaXplX3VwZ3JhZGVfd2l0aG91dF9jaGVja3MEASRjb2RlX2hhc2g8ARxUOjpIYXNoAAogYQFBdXRob3JpemUgYW4gdXBncmFkZSB0byBhIGdpdmVuIGBjb2RlX2hhc2hgIGZvciB0aGUgcnVudGltZS4gVGhlIHJ1bnRpbWUgY2FuIGJlIHN1cHBsaWVkGGxhdGVyLgBdAVdBUk5JTkc6IFRoaXMgYXV0aG9yaXplcyBhbiB1cGdyYWRlIHRoYXQgd2lsbCB0YWtlIHBsYWNlIHdpdGhvdXQgYW55IHNhZmV0eSBjaGVja3MsIGZvclkBZXhhbXBsZSB0aGF0IHRoZSBzcGVjIG5hbWUgcmVtYWlucyB0aGUgc2FtZSBhbmQgdGhhdCB0aGUgdmVyc2lvbiBudW1iZXIgaW5jcmVhc2VzLiBOb3TwcmVjb21tZW5kZWQgZm9yIG5vcm1hbCB1c2UuIFVzZSBgYXV0aG9yaXplX3VwZ3JhZGVgIGluc3RlYWQuAHxUaGlzIGNhbGwgcmVxdWlyZXMgUm9vdCBvcmlnaW4uYGFwcGx5X2F1dGhvcml6ZWRfdXBncmFkZQQBEGNvZGUYARxWZWM8dTg+AAskVQFQcm92aWRlIHRoZSBwcmVpbWFnZSAocnVudGltZSBiaW5hcnkpIGBjb2RlYCBmb3IgYW4gdXBncmFkZSB0aGF0IGhhcyBiZWVuIGF1dGhvcml6ZWQuAEkBSWYgdGhlIGF1dGhvcml6YXRpb24gcmVxdWlyZWQgYSB2ZXJzaW9uIGNoZWNrLCB0aGlzIGNhbGwgd2lsbCBlbnN1cmUgdGhlIHNwZWMgbmFtZehyZW1haW5zIHVuY2hhbmdlZCBhbmQgdGhhdCB0aGUgc3BlYyB2ZXJzaW9uIGhhcyBpbmNyZWFzZWQuAFkBRGVwZW5kaW5nIG9uIHRoZSBydW50aW1lJ3MgYE9uU2V0Q29kZWAgY29uZmlndXJhdGlvbiwgdGhpcyBmdW5jdGlvbiBtYXkgZGlyZWN0bHkgYXBwbHkRAXRoZSBuZXcgYGNvZGVgIGluIHRoZSBzYW1lIGJsb2NrIG9yIGF0dGVtcHQgdG8gc2NoZWR1bGUgdGhlIHVwZ3JhZGUuAGBBbGwgb3JpZ2lucyBhcmUgYWxsb3dlZC4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuKAAABQYALAAAAjAAMAAABAgYGAA0AAACGAA4AAAFBQA8CDxwcmltaXRpdmVfdHlwZXMQSDI1NgAABAAIASBbdTg7IDMyXQAAQAxAcGFsbGV0X3NjaGVkdWxlchhwYWxsZXQQQ2FsbAQEVAABKCBzY2hlZHVsZRABEHdoZW44AURCbG9ja051bWJlckZvcjxUPgABOG1heWJlX3BlcmlvZGljRAGsT3B0aW9uPHNjaGVkdWxlOjpQZXJpb2Q8QmxvY2tOdW1iZXJGb3I8VD4+PgABIHByaW9yaXR5DAFIc2NoZWR1bGU6OlByaW9yaXR5AAEQY2FsbCABfEJveDw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4AAARwQW5vbnltb3VzbHkgc2NoZWR1bGUgYSB0YXNrLhhjYW5jZWwIARB3aGVuOAFEQmxvY2tOdW1iZXJGb3I8VD4AARRpbmRleDgBDHUzMgABBJRDYW5jZWwgYW4gYW5vbnltb3VzbHkgc2NoZWR1bGVkIHRhc2suOHNjaGVkdWxlX25hbWVkFAEIaWQIASBUYXNrTmFtZQABEHdoZW44AURCbG9ja051bWJlckZvcjxUPgABOG1heWJlX3BlcmlvZGljRAGsT3B0aW9uPHNjaGVkdWxlOjpQZXJpb2Q8QmxvY2tOdW1iZXJGb3I8VD4+PgABIHByaW9yaXR5DAFIc2NoZWR1bGU6OlByaW9yaXR5AAEQY2FsbCABfEJveDw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4AAgRYU2NoZWR1bGUgYSBuYW1lZCB0YXNrLjBjYW5jZWxfbmFtZWQEAQhpZAgBIFRhc2tOYW1lAAMEeENhbmNlbCBhIG5hbWVkIHNjaGVkdWxlZCB0YXNrLjhzY2hlZHVsZV9hZnRlchABFGFmdGVyOAFEQmxvY2tOdW1iZXJGb3I8VD4AAThtYXliZV9wZXJpb2RpY0QBrE9wdGlvbjxzY2hlZHVsZTo6UGVyaW9kPEJsb2NrTnVtYmVyRm9yPFQ+Pj4AASBwcmlvcml0eQwBSHNjaGVkdWxlOjpQcmlvcml0eQABEGNhbGwgAXxCb3g8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AAQEqEFub255bW91c2x5IHNjaGVkdWxlIGEgdGFzayBhZnRlciBhIGRlbGF5LlBzY2hlZHVsZV9uYW1lZF9hZnRlchQBCGlkCAEgVGFza05hbWUAARRhZnRlcjgBREJsb2NrTnVtYmVyRm9yPFQ+AAE4bWF5YmVfcGVyaW9kaWNEAaxPcHRpb248c2NoZWR1bGU6OlBlcmlvZDxCbG9ja051bWJlckZvcjxUPj4+AAEgcHJpb3JpdHkMAUhzY2hlZHVsZTo6UHJpb3JpdHkAARBjYWxsIAF8Qm94PDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgAFBJBTY2hlZHVsZSBhIG5hbWVkIHRhc2sgYWZ0ZXIgYSBkZWxheS4kc2V0X3JldHJ5DAEQdGFza0gBeFRhc2tBZGRyZXNzPEJsb2NrTnVtYmVyRm9yPFQ+PgABHHJldHJpZXMMAQh1OAABGHBlcmlvZDgBREJsb2NrTnVtYmVyRm9yPFQ+AAYwWQFTZXQgYSByZXRyeSBjb25maWd1cmF0aW9uIGZvciBhIHRhc2sgc28gdGhhdCwgaW4gY2FzZSBpdHMgc2NoZWR1bGVkIHJ1biBmYWlscywgaXQgd2lsbFUBYmUgcmV0cmllZCBhZnRlciBgcGVyaW9kYCBibG9ja3MsIGZvciBhIHRvdGFsIGFtb3VudCBvZiBgcmV0cmllc2AgcmV0cmllcyBvciB1bnRpbCBpdCRzdWNjZWVkcy4AVQFUYXNrcyB3aGljaCBuZWVkIHRvIGJlIHNjaGVkdWxlZCBmb3IgYSByZXRyeSBhcmUgc3RpbGwgc3ViamVjdCB0byB3ZWlnaHQgbWV0ZXJpbmcgYW5kUQFhZ2VuZGEgc3BhY2UsIHNhbWUgYXMgYSByZWd1bGFyIHRhc2suIElmIGEgcGVyaW9kaWMgdGFzayBmYWlscywgaXQgd2lsbCBiZSBzY2hlZHVsZWSQbm9ybWFsbHkgd2hpbGUgdGhlIHRhc2sgaXMgcmV0cnlpbmcuAFEBVGFza3Mgc2NoZWR1bGVkIGFzIGEgcmVzdWx0IG9mIGEgcmV0cnkgZm9yIGEgcGVyaW9kaWMgdGFzayBhcmUgdW5uYW1lZCwgbm9uLXBlcmlvZGljPQFjbG9uZXMgb2YgdGhlIG9yaWdpbmFsIHRhc2suIFRoZWlyIHJldHJ5IGNvbmZpZ3VyYXRpb24gd2lsbCBiZSBkZXJpdmVkIGZyb20gdGhlTQFvcmlnaW5hbCB0YXNrJ3MgY29uZmlndXJhdGlvbiwgYnV0IHdpbGwgaGF2ZSBhIGxvd2VyIHZhbHVlIGZvciBgcmVtYWluaW5nYCB0aGFuIHRoZWRvcmlnaW5hbCBgdG90YWxfcmV0cmllc2AuPHNldF9yZXRyeV9uYW1lZAwBCGlkCAEgVGFza05hbWUAARxyZXRyaWVzDAEIdTgAARhwZXJpb2Q4AURCbG9ja051bWJlckZvcjxUPgAHMF0BU2V0IGEgcmV0cnkgY29uZmlndXJhdGlvbiBmb3IgYSBuYW1lZCB0YXNrIHNvIHRoYXQsIGluIGNhc2UgaXRzIHNjaGVkdWxlZCBydW4gZmFpbHMsIGl0XQF3aWxsIGJlIHJldHJpZWQgYWZ0ZXIgYHBlcmlvZGAgYmxvY2tzLCBmb3IgYSB0b3RhbCBhbW91bnQgb2YgYHJldHJpZXNgIHJldHJpZXMgb3IgdW50aWwwaXQgc3VjY2VlZHMuAFUBVGFza3Mgd2hpY2ggbmVlZCB0byBiZSBzY2hlZHVsZWQgZm9yIGEgcmV0cnkgYXJlIHN0aWxsIHN1YmplY3QgdG8gd2VpZ2h0IG1ldGVyaW5nIGFuZFEBYWdlbmRhIHNwYWNlLCBzYW1lIGFzIGEgcmVndWxhciB0YXNrLiBJZiBhIHBlcmlvZGljIHRhc2sgZmFpbHMsIGl0IHdpbGwgYmUgc2NoZWR1bGVkkG5vcm1hbGx5IHdoaWxlIHRoZSB0YXNrIGlzIHJldHJ5aW5nLgBRAVRhc2tzIHNjaGVkdWxlZCBhcyBhIHJlc3VsdCBvZiBhIHJldHJ5IGZvciBhIHBlcmlvZGljIHRhc2sgYXJlIHVubmFtZWQsIG5vbi1wZXJpb2RpYz0BY2xvbmVzIG9mIHRoZSBvcmlnaW5hbCB0YXNrLiBUaGVpciByZXRyeSBjb25maWd1cmF0aW9uIHdpbGwgYmUgZGVyaXZlZCBmcm9tIHRoZU0Bb3JpZ2luYWwgdGFzaydzIGNvbmZpZ3VyYXRpb24sIGJ1dCB3aWxsIGhhdmUgYSBsb3dlciB2YWx1ZSBmb3IgYHJlbWFpbmluZ2AgdGhhbiB0aGVkb3JpZ2luYWwgYHRvdGFsX3JldHJpZXNgLjBjYW5jZWxfcmV0cnkEARB0YXNrSAF4VGFza0FkZHJlc3M8QmxvY2tOdW1iZXJGb3I8VD4+AAgEqFJlbW92ZXMgdGhlIHJldHJ5IGNvbmZpZ3VyYXRpb24gb2YgYSB0YXNrLkhjYW5jZWxfcmV0cnlfbmFtZWQEAQhpZAgBIFRhc2tOYW1lAAkEvENhbmNlbCB0aGUgcmV0cnkgY29uZmlndXJhdGlvbiBvZiBhIG5hbWVkIHRhc2suBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLkQEGE9wdGlvbgQEVAFIAQgQTm9uZQAAABBTb21lBABIAAABAABIAAAECDg4AEwMPHBhbGxldF9wcmVpbWFnZRhwYWxsZXQQQ2FsbAQEVAABFDRub3RlX3ByZWltYWdlBAEUYnl0ZXMYARxWZWM8dTg+AAAQdFJlZ2lzdGVyIGEgcHJlaW1hZ2Ugb24tY2hhaW4uAFUBSWYgdGhlIHByZWltYWdlIHdhcyBwcmV2aW91c2x5IHJlcXVlc3RlZCwgbm8gZmVlcyBvciBkZXBvc2l0cyBhcmUgdGFrZW4gZm9yIHByb3ZpZGluZ1UBdGhlIHByZWltYWdlLiBPdGhlcndpc2UsIGEgZGVwb3NpdCBpcyB0YWtlbiBwcm9wb3J0aW9uYWwgdG8gdGhlIHNpemUgb2YgdGhlIHByZWltYWdlLjx1bm5vdGVfcHJlaW1hZ2UEARBoYXNoPAEcVDo6SGFzaAABGNxDbGVhciBhbiB1bnJlcXVlc3RlZCBwcmVpbWFnZSBmcm9tIHRoZSBydW50aW1lIHN0b3JhZ2UuAPxJZiBgbGVuYCBpcyBwcm92aWRlZCwgdGhlbiBpdCB3aWxsIGJlIGEgbXVjaCBjaGVhcGVyIG9wZXJhdGlvbi4AAQEtIGBoYXNoYDogVGhlIGhhc2ggb2YgdGhlIHByZWltYWdlIHRvIGJlIHJlbW92ZWQgZnJvbSB0aGUgc3RvcmUuuC0gYGxlbmA6IFRoZSBsZW5ndGggb2YgdGhlIHByZWltYWdlIG9mIGBoYXNoYC5AcmVxdWVzdF9wcmVpbWFnZQQBEGhhc2g8ARxUOjpIYXNoAAIQQQFSZXF1ZXN0IGEgcHJlaW1hZ2UgYmUgdXBsb2FkZWQgdG8gdGhlIGNoYWluIHdpdGhvdXQgcGF5aW5nIGFueSBmZWVzIG9yIGRlcG9zaXRzLgBVAUlmIHRoZSBwcmVpbWFnZSByZXF1ZXN0cyBoYXMgYWxyZWFkeSBiZWVuIHByb3ZpZGVkIG9uLWNoYWluLCB3ZSB1bnJlc2VydmUgYW55IGRlcG9zaXQ5AWEgdXNlciBtYXkgaGF2ZSBwYWlkLCBhbmQgdGFrZSB0aGUgY29udHJvbCBvZiB0aGUgcHJlaW1hZ2Ugb3V0IG9mIHRoZWlyIGhhbmRzLkh1bnJlcXVlc3RfcHJlaW1hZ2UEARBoYXNoPAEcVDo6SGFzaAADDLxDbGVhciBhIHByZXZpb3VzbHkgbWFkZSByZXF1ZXN0IGZvciBhIHByZWltYWdlLgAtAU5PVEU6IFRISVMgTVVTVCBOT1QgQkUgQ0FMTEVEIE9OIGBoYXNoYCBNT1JFIFRJTUVTIFRIQU4gYHJlcXVlc3RfcHJlaW1hZ2VgLjhlbnN1cmVfdXBkYXRlZAQBGGhhc2hlc1ABMFZlYzxUOjpIYXNoPgAEDLxFbnN1cmUgdGhhdCB0aGUgYnVsayBvZiBwcmUtaW1hZ2VzIGlzIHVwZ3JhZGVkLgA9AVRoZSBjYWxsZXIgcGF5cyBubyBmZWUgaWYgYXQgbGVhc3QgOTAlIG9mIHByZS1pbWFnZXMgd2VyZSBzdWNjZXNzZnVsbHkgdXBkYXRlZC4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuUAAAAjwAVAwscGFsbGV0X2JhYmUYcGFsbGV0EENhbGwEBFQAAQxMcmVwb3J0X2VxdWl2b2NhdGlvbggBSGVxdWl2b2NhdGlvbl9wcm9vZlgBkEJveDxFcXVpdm9jYXRpb25Qcm9vZjxIZWFkZXJGb3I8VD4+PgABPGtleV9vd25lcl9wcm9vZnwBQFQ6OktleU93bmVyUHJvb2YAABAJAVJlcG9ydCBhdXRob3JpdHkgZXF1aXZvY2F0aW9uL21pc2JlaGF2aW9yLiBUaGlzIG1ldGhvZCB3aWxsIHZlcmlmeQUBdGhlIGVxdWl2b2NhdGlvbiBwcm9vZiBhbmQgdmFsaWRhdGUgdGhlIGdpdmVuIGtleSBvd25lcnNoaXAgcHJvb2YNAWFnYWluc3QgdGhlIGV4dHJhY3RlZCBvZmZlbmRlci4gSWYgYm90aCBhcmUgdmFsaWQsIHRoZSBvZmZlbmNlIHdpbGwwYmUgcmVwb3J0ZWQucHJlcG9ydF9lcXVpdm9jYXRpb25fdW5zaWduZWQIAUhlcXVpdm9jYXRpb25fcHJvb2ZYAZBCb3g8RXF1aXZvY2F0aW9uUHJvb2Y8SGVhZGVyRm9yPFQ+Pj4AATxrZXlfb3duZXJfcHJvb2Z8AUBUOjpLZXlPd25lclByb29mAAEgCQFSZXBvcnQgYXV0aG9yaXR5IGVxdWl2b2NhdGlvbi9taXNiZWhhdmlvci4gVGhpcyBtZXRob2Qgd2lsbCB2ZXJpZnkFAXRoZSBlcXVpdm9jYXRpb24gcHJvb2YgYW5kIHZhbGlkYXRlIHRoZSBnaXZlbiBrZXkgb3duZXJzaGlwIHByb29mDQFhZ2FpbnN0IHRoZSBleHRyYWN0ZWQgb2ZmZW5kZXIuIElmIGJvdGggYXJlIHZhbGlkLCB0aGUgb2ZmZW5jZSB3aWxsMGJlIHJlcG9ydGVkLg0BVGhpcyBleHRyaW5zaWMgbXVzdCBiZSBjYWxsZWQgdW5zaWduZWQgYW5kIGl0IGlzIGV4cGVjdGVkIHRoYXQgb25seRUBYmxvY2sgYXV0aG9ycyB3aWxsIGNhbGwgaXQgKHZhbGlkYXRlZCBpbiBgVmFsaWRhdGVVbnNpZ25lZGApLCBhcyBzdWNoFQFpZiB0aGUgYmxvY2sgYXV0aG9yIGlzIGRlZmluZWQgaXQgd2lsbCBiZSBkZWZpbmVkIGFzIHRoZSBlcXVpdm9jYXRpb24kcmVwb3J0ZXIuSHBsYW5fY29uZmlnX2NoYW5nZQQBGGNvbmZpZ4ABUE5leHRDb25maWdEZXNjcmlwdG9yAAIQXQFQbGFuIGFuIGVwb2NoIGNvbmZpZyBjaGFuZ2UuIFRoZSBlcG9jaCBjb25maWcgY2hhbmdlIGlzIHJlY29yZGVkIGFuZCB3aWxsIGJlIGVuYWN0ZWQgb25RAXRoZSBuZXh0IGNhbGwgdG8gYGVuYWN0X2Vwb2NoX2NoYW5nZWAuIFRoZSBjb25maWcgd2lsbCBiZSBhY3RpdmF0ZWQgb25lIGVwb2NoIGFmdGVyLlkBTXVsdGlwbGUgY2FsbHMgdG8gdGhpcyBtZXRob2Qgd2lsbCByZXBsYWNlIGFueSBleGlzdGluZyBwbGFubmVkIGNvbmZpZyBjaGFuZ2UgdGhhdCBoYWRUbm90IGJlZW4gZW5hY3RlZCB5ZXQuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLlgISHNwX2NvbnNlbnN1c19zbG90c0RFcXVpdm9jYXRpb25Qcm9vZggYSGVhZGVyAVwISWQBdAAQASBvZmZlbmRlcnQBCElkAAEQc2xvdHgBEFNsb3QAATBmaXJzdF9oZWFkZXJcARhIZWFkZXIAATRzZWNvbmRfaGVhZGVyXAEYSGVhZGVyAABcEChzcF9ydW50aW1lHGdlbmVyaWMYaGVhZGVyGEhlYWRlcggYTnVtYmVyATgQSGFzaAAAFAEscGFyZW50X2hhc2g8ATBIYXNoOjpPdXRwdXQAARhudW1iZXJgARhOdW1iZXIAAShzdGF0ZV9yb290PAEwSGFzaDo6T3V0cHV0AAE8ZXh0cmluc2ljc19yb290PAEwSGFzaDo6T3V0cHV0AAEYZGlnZXN0ZAEYRGlnZXN0AABgAAAGOABkEChzcF9ydW50aW1lHGdlbmVyaWMYZGlnZXN0GERpZ2VzdAAABAEQbG9nc2gBPFZlYzxEaWdlc3RJdGVtPgAAaAAAAmwAbBAoc3BfcnVudGltZRxnZW5lcmljGGRpZ2VzdChEaWdlc3RJdGVtAAEUKFByZVJ1bnRpbWUIAHABRENvbnNlbnN1c0VuZ2luZUlkAAAYARxWZWM8dTg+AAYAJENvbnNlbnN1cwgAcAFEQ29uc2Vuc3VzRW5naW5lSWQAABgBHFZlYzx1OD4ABAAQU2VhbAgAcAFEQ29uc2Vuc3VzRW5naW5lSWQAABgBHFZlYzx1OD4ABQAUT3RoZXIEABgBHFZlYzx1OD4AAABkUnVudGltZUVudmlyb25tZW50VXBkYXRlZAAIAABwAAADBAAAAAwAdAxEc3BfY29uc2Vuc3VzX2JhYmUMYXBwGFB1YmxpYwAABAAIATxzcjI1NTE5OjpQdWJsaWMAAHgISHNwX2NvbnNlbnN1c19zbG90cxBTbG90AAAEACgBDHU2NAAAfAgoc3Bfc2Vzc2lvbjxNZW1iZXJzaGlwUHJvb2YAAAwBHHNlc3Npb244ATBTZXNzaW9uSW5kZXgAASh0cmllX25vZGVzNAEwVmVjPFZlYzx1OD4+AAE8dmFsaWRhdG9yX2NvdW50OAE4VmFsaWRhdG9yQ291bnQAAIAMRHNwX2NvbnNlbnN1c19iYWJlHGRpZ2VzdHNQTmV4dENvbmZpZ0Rlc2NyaXB0b3IAAQQIVjEIAQRjhAEoKHU2NCwgdTY0KQABNGFsbG93ZWRfc2xvdHOIATBBbGxvd2VkU2xvdHMAAQAAhAAABAgoKACICERzcF9jb25zZW5zdXNfYmFiZTBBbGxvd2VkU2xvdHMAAQwwUHJpbWFyeVNsb3RzAAAAdFByaW1hcnlBbmRTZWNvbmRhcnlQbGFpblNsb3RzAAEAbFByaW1hcnlBbmRTZWNvbmRhcnlWUkZTbG90cwACAACMDEBwYWxsZXRfdGltZXN0YW1wGHBhbGxldBBDYWxsBARUAAEEDHNldAQBDG5vd5ABJFQ6Ok1vbWVudAAATFRTZXQgdGhlIGN1cnJlbnQgdGltZS4AVQFUaGlzIGNhbGwgc2hvdWxkIGJlIGludm9rZWQgZXhhY3RseSBvbmNlIHBlciBibG9jay4gSXQgd2lsbCBwYW5pYyBhdCB0aGUgZmluYWxpemF0aW9u1HBoYXNlLCBpZiB0aGlzIGNhbGwgaGFzbid0IGJlZW4gaW52b2tlZCBieSB0aGF0IHRpbWUuAEEBVGhlIHRpbWVzdGFtcCBzaG91bGQgYmUgZ3JlYXRlciB0aGFuIHRoZSBwcmV2aW91cyBvbmUgYnkgdGhlIGFtb3VudCBzcGVjaWZpZWQgYnloW2BDb25maWc6Ok1pbmltdW1QZXJpb2RgXS4AxFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9Ob25lXy4AUQFUaGlzIGRpc3BhdGNoIGNsYXNzIGlzIF9NYW5kYXRvcnlfIHRvIGVuc3VyZSBpdCBnZXRzIGV4ZWN1dGVkIGluIHRoZSBibG9jay4gQmUgYXdhcmVRAXRoYXQgY2hhbmdpbmcgdGhlIGNvbXBsZXhpdHkgb2YgdGhpcyBjYWxsIGNvdWxkIHJlc3VsdCBleGhhdXN0aW5nIHRoZSByZXNvdXJjZXMgaW4gYYRibG9jayB0byBleGVjdXRlIGFueSBvdGhlciBjYWxscy4ANCMjIENvbXBsZXhpdHkxAS0gYE8oMSlgIChOb3RlIHRoYXQgaW1wbGVtZW50YXRpb25zIG9mIGBPblRpbWVzdGFtcFNldGAgbXVzdCBhbHNvIGJlIGBPKDEpYClVAS0gMSBzdG9yYWdlIHJlYWQgYW5kIDEgc3RvcmFnZSBtdXRhdGlvbiAoY29kZWMgYE8oMSlgIGJlY2F1c2Ugb2YgYERpZFVwZGF0ZTo6dGFrZWAgaW5AICBgb25fZmluYWxpemVgKdQtIDEgZXZlbnQgaGFuZGxlciBgb25fdGltZXN0YW1wX3NldGAuIE11c3QgYmUgYE8oMSlgLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy6QAAAGKACUDDhwYWxsZXRfaW5kaWNlcxhwYWxsZXQQQ2FsbAQEVAABGBRjbGFpbQQBFGluZGV4OAE8VDo6QWNjb3VudEluZGV4AAAwmEFzc2lnbiBhbiBwcmV2aW91c2x5IHVuYXNzaWduZWQgaW5kZXguANxQYXltZW50OiBgRGVwb3NpdGAgaXMgcmVzZXJ2ZWQgZnJvbSB0aGUgc2VuZGVyIGFjY291bnQuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4A8C0gYGluZGV4YDogdGhlIGluZGV4IHRvIGJlIGNsYWltZWQuIFRoaXMgbXVzdCBub3QgYmUgaW4gdXNlLgCQRW1pdHMgYEluZGV4QXNzaWduZWRgIGlmIHN1Y2Nlc3NmdWwuADQjIyBDb21wbGV4aXR5JC0gYE8oMSlgLiB0cmFuc2ZlcggBDG5ldwABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEUaW5kZXg4ATxUOjpBY2NvdW50SW5kZXgAATBdAUFzc2lnbiBhbiBpbmRleCBhbHJlYWR5IG93bmVkIGJ5IHRoZSBzZW5kZXIgdG8gYW5vdGhlciBhY2NvdW50LiBUaGUgYmFsYW5jZSByZXNlcnZhdGlvbrhpcyBlZmZlY3RpdmVseSB0cmFuc2ZlcnJlZCB0byB0aGUgbmV3IGFjY291bnQuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4AJQEtIGBpbmRleGA6IHRoZSBpbmRleCB0byBiZSByZS1hc3NpZ25lZC4gVGhpcyBtdXN0IGJlIG93bmVkIGJ5IHRoZSBzZW5kZXIuXQEtIGBuZXdgOiB0aGUgbmV3IG93bmVyIG9mIHRoZSBpbmRleC4gVGhpcyBmdW5jdGlvbiBpcyBhIG5vLW9wIGlmIGl0IGlzIGVxdWFsIHRvIHNlbmRlci4AkEVtaXRzIGBJbmRleEFzc2lnbmVkYCBpZiBzdWNjZXNzZnVsLgA0IyMgQ29tcGxleGl0eSQtIGBPKDEpYC4QZnJlZQQBFGluZGV4OAE8VDo6QWNjb3VudEluZGV4AAIwlEZyZWUgdXAgYW4gaW5kZXggb3duZWQgYnkgdGhlIHNlbmRlci4AXQFQYXltZW50OiBBbnkgcHJldmlvdXMgZGVwb3NpdCBwbGFjZWQgZm9yIHRoZSBpbmRleCBpcyB1bnJlc2VydmVkIGluIHRoZSBzZW5kZXIgYWNjb3VudC4AVQFUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXyBhbmQgdGhlIHNlbmRlciBtdXN0IG93biB0aGUgaW5kZXguAA0BLSBgaW5kZXhgOiB0aGUgaW5kZXggdG8gYmUgZnJlZWQuIFRoaXMgbXVzdCBiZSBvd25lZCBieSB0aGUgc2VuZGVyLgCERW1pdHMgYEluZGV4RnJlZWRgIGlmIHN1Y2Nlc3NmdWwuADQjIyBDb21wbGV4aXR5JC0gYE8oMSlgLjhmb3JjZV90cmFuc2ZlcgwBDG5ldwABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEUaW5kZXg4ATxUOjpBY2NvdW50SW5kZXgAARhmcmVlemWYARBib29sAAM0VQFGb3JjZSBhbiBpbmRleCB0byBhbiBhY2NvdW50LiBUaGlzIGRvZXNuJ3QgcmVxdWlyZSBhIGRlcG9zaXQuIElmIHRoZSBpbmRleCBpcyBhbHJlYWR56GhlbGQsIHRoZW4gYW55IGRlcG9zaXQgaXMgcmVpbWJ1cnNlZCB0byBpdHMgY3VycmVudCBvd25lci4AxFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9Sb290Xy4ApC0gYGluZGV4YDogdGhlIGluZGV4IHRvIGJlIChyZS0pYXNzaWduZWQuXQEtIGBuZXdgOiB0aGUgbmV3IG93bmVyIG9mIHRoZSBpbmRleC4gVGhpcyBmdW5jdGlvbiBpcyBhIG5vLW9wIGlmIGl0IGlzIGVxdWFsIHRvIHNlbmRlci5BAS0gYGZyZWV6ZWA6IGlmIHNldCB0byBgdHJ1ZWAsIHdpbGwgZnJlZXplIHRoZSBpbmRleCBzbyBpdCBjYW5ub3QgYmUgdHJhbnNmZXJyZWQuAJBFbWl0cyBgSW5kZXhBc3NpZ25lZGAgaWYgc3VjY2Vzc2Z1bC4ANCMjIENvbXBsZXhpdHkkLSBgTygxKWAuGGZyZWV6ZQQBFGluZGV4OAE8VDo6QWNjb3VudEluZGV4AAQwQQFGcmVlemUgYW4gaW5kZXggc28gaXQgd2lsbCBhbHdheXMgcG9pbnQgdG8gdGhlIHNlbmRlciBhY2NvdW50LiBUaGlzIGNvbnN1bWVzIHRoZSBkZXBvc2l0LgBZAVRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfIGFuZCB0aGUgc2lnbmluZyBhY2NvdW50IG11c3QgaGF2ZSBhbG5vbi1mcm96ZW4gYWNjb3VudCBgaW5kZXhgLgCsLSBgaW5kZXhgOiB0aGUgaW5kZXggdG8gYmUgZnJvemVuIGluIHBsYWNlLgCIRW1pdHMgYEluZGV4RnJvemVuYCBpZiBzdWNjZXNzZnVsLgA0IyMgQ29tcGxleGl0eSQtIGBPKDEpYC4wcG9rZV9kZXBvc2l0BAEUaW5kZXg4ATxUOjpBY2NvdW50SW5kZXgABSicUG9rZSB0aGUgZGVwb3NpdCByZXNlcnZlZCBmb3IgYW4gaW5kZXguAFkBVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8gYW5kIHRoZSBzaWduaW5nIGFjY291bnQgbXVzdCBoYXZlIGFsbm9uLWZyb3plbiBhY2NvdW50IGBpbmRleGAuAFkBVGhlIHRyYW5zYWN0aW9uIGZlZXMgaXMgd2FpdmVkIGlmIHRoZSBkZXBvc2l0IGlzIGNoYW5nZWQgYWZ0ZXIgcG9raW5nL3JlY29uc2lkZXJhdGlvbi4A/C0gYGluZGV4YDogdGhlIGluZGV4IHdob3NlIGRlcG9zaXQgaXMgdG8gYmUgcG9rZWQvcmVjb25zaWRlcmVkLgCMRW1pdHMgYERlcG9zaXRQb2tlZGAgaWYgc3VjY2Vzc2Z1bC4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMumAAABQAAnAw8cGFsbGV0X2JhbGFuY2VzGHBhbGxldBBDYWxsCARUAARJAAEkUHRyYW5zZmVyX2FsbG93X2RlYXRoCAEQZGVzdAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEUdmFsdWWgAShUOjpCYWxhbmNlAAAc1FRyYW5zZmVyIHNvbWUgbGlxdWlkIGZyZWUgYmFsYW5jZSB0byBhbm90aGVyIGFjY291bnQuADUBYHRyYW5zZmVyX2FsbG93X2RlYXRoYCB3aWxsIHNldCB0aGUgYEZyZWVCYWxhbmNlYCBvZiB0aGUgc2VuZGVyIGFuZCByZWNlaXZlci4RAUlmIHRoZSBzZW5kZXIncyBhY2NvdW50IGlzIGJlbG93IHRoZSBleGlzdGVudGlhbCBkZXBvc2l0IGFzIGEgcmVzdWx0sG9mIHRoZSB0cmFuc2ZlciwgdGhlIGFjY291bnQgd2lsbCBiZSByZWFwZWQuABUBVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgYFNpZ25lZGAgYnkgdGhlIHRyYW5zYWN0b3IuOGZvcmNlX3RyYW5zZmVyDAEYc291cmNlAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARBkZXN0AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARR2YWx1ZaABKFQ6OkJhbGFuY2UAAghhAUV4YWN0bHkgYXMgYHRyYW5zZmVyX2FsbG93X2RlYXRoYCwgZXhjZXB0IHRoZSBvcmlnaW4gbXVzdCBiZSByb290IGFuZCB0aGUgc291cmNlIGFjY291bnREbWF5IGJlIHNwZWNpZmllZC5MdHJhbnNmZXJfa2VlcF9hbGl2ZQgBEGRlc3QAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABFHZhbHVloAEoVDo6QmFsYW5jZQADGFkBU2FtZSBhcyB0aGUgW2B0cmFuc2Zlcl9hbGxvd19kZWF0aGBdIGNhbGwsIGJ1dCB3aXRoIGEgY2hlY2sgdGhhdCB0aGUgdHJhbnNmZXIgd2lsbCBub3Rga2lsbCB0aGUgb3JpZ2luIGFjY291bnQuAOg5OSUgb2YgdGhlIHRpbWUgeW91IHdhbnQgW2B0cmFuc2Zlcl9hbGxvd19kZWF0aGBdIGluc3RlYWQuAPBbYHRyYW5zZmVyX2FsbG93X2RlYXRoYF06IHN0cnVjdC5QYWxsZXQuaHRtbCNtZXRob2QudHJhbnNmZXIwdHJhbnNmZXJfYWxsCAEQZGVzdAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEoa2VlcF9hbGl2ZZgBEGJvb2wABDwFAVRyYW5zZmVyIHRoZSBlbnRpcmUgdHJhbnNmZXJhYmxlIGJhbGFuY2UgZnJvbSB0aGUgY2FsbGVyIGFjY291bnQuAFkBTk9URTogVGhpcyBmdW5jdGlvbiBvbmx5IGF0dGVtcHRzIHRvIHRyYW5zZmVyIF90cmFuc2ZlcmFibGVfIGJhbGFuY2VzLiBUaGlzIG1lYW5zIHRoYXRhAWFueSBsb2NrZWQsIHJlc2VydmVkLCBvciBleGlzdGVudGlhbCBkZXBvc2l0cyAod2hlbiBga2VlcF9hbGl2ZWAgaXMgYHRydWVgKSwgd2lsbCBub3QgYmVdAXRyYW5zZmVycmVkIGJ5IHRoaXMgZnVuY3Rpb24uIFRvIGVuc3VyZSB0aGF0IHRoaXMgZnVuY3Rpb24gcmVzdWx0cyBpbiBhIGtpbGxlZCBhY2NvdW50LEUBeW91IG1pZ2h0IG5lZWQgdG8gcHJlcGFyZSB0aGUgYWNjb3VudCBieSByZW1vdmluZyBhbnkgcmVmZXJlbmNlIGNvdW50ZXJzLCBzdG9yYWdlQGRlcG9zaXRzLCBldGMuLi4AwFRoZSBkaXNwYXRjaCBvcmlnaW4gb2YgdGhpcyBjYWxsIG11c3QgYmUgU2lnbmVkLgCgLSBgZGVzdGA6IFRoZSByZWNpcGllbnQgb2YgdGhlIHRyYW5zZmVyLlkBLSBga2VlcF9hbGl2ZWA6IEEgYm9vbGVhbiB0byBkZXRlcm1pbmUgaWYgdGhlIGB0cmFuc2Zlcl9hbGxgIG9wZXJhdGlvbiBzaG91bGQgc2VuZCBhbGxNASAgb2YgdGhlIGZ1bmRzIHRoZSBhY2NvdW50IGhhcywgY2F1c2luZyB0aGUgc2VuZGVyIGFjY291bnQgdG8gYmUga2lsbGVkIChmYWxzZSksIG9yWQEgIHRyYW5zZmVyIGV2ZXJ5dGhpbmcgZXhjZXB0IGF0IGxlYXN0IHRoZSBleGlzdGVudGlhbCBkZXBvc2l0LCB3aGljaCB3aWxsIGd1YXJhbnRlZSB0b5wgIGtlZXAgdGhlIHNlbmRlciBhY2NvdW50IGFsaXZlICh0cnVlKS48Zm9yY2VfdW5yZXNlcnZlCAEMd2hvAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARhhbW91bnSkAShUOjpCYWxhbmNlAAUMsFVucmVzZXJ2ZSBzb21lIGJhbGFuY2UgZnJvbSBhIHVzZXIgYnkgZm9yY2UuAGxDYW4gb25seSBiZSBjYWxsZWQgYnkgUk9PVC5AdXBncmFkZV9hY2NvdW50cwQBDHdob6gBRFZlYzxUOjpBY2NvdW50SWQ+AAYgcFVwZ3JhZGUgYSBzcGVjaWZpZWQgYWNjb3VudC4AdC0gYG9yaWdpbmA6IE11c3QgYmUgYFNpZ25lZGAukC0gYHdob2A6IFRoZSBhY2NvdW50IHRvIGJlIHVwZ3JhZGVkLgBVAVRoaXMgd2lsbCB3YWl2ZSB0aGUgdHJhbnNhY3Rpb24gZmVlIGlmIGF0IGxlYXN0IGFsbCBidXQgMTAlIG9mIHRoZSBhY2NvdW50cyBuZWVkZWQgdG9BAWJlIHVwZ3JhZGVkLiAoV2UgbGV0IHNvbWUgbm90IGhhdmUgdG8gYmUgdXBncmFkZWQganVzdCBpbiBvcmRlciB0byBhbGxvdyBmb3IgdGhlWHBvc3NpYmlsaXR5IG9mIGNodXJuKS5EZm9yY2Vfc2V0X2JhbGFuY2UIAQx3aG8AAVBBY2NvdW50SWRMb29rdXBPZjxUPgABIG5ld19mcmVloAEoVDo6QmFsYW5jZQAIDKxTZXQgdGhlIHJlZ3VsYXIgYmFsYW5jZSBvZiBhIGdpdmVuIGFjY291bnQuALBUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgaXMgYHJvb3RgLmxmb3JjZV9hZGp1c3RfdG90YWxfaXNzdWFuY2UIASRkaXJlY3Rpb26sAUxBZGp1c3RtZW50RGlyZWN0aW9uAAEUZGVsdGGgAShUOjpCYWxhbmNlAAkUuEFkanVzdCB0aGUgdG90YWwgaXNzdWFuY2UgaW4gYSBzYXR1cmF0aW5nIHdheS4A/ENhbiBvbmx5IGJlIGNhbGxlZCBieSByb290IGFuZCBhbHdheXMgbmVlZHMgYSBwb3NpdGl2ZSBgZGVsdGFgLgAkIyBFeGFtcGxlEGJ1cm4IARR2YWx1ZaABKFQ6OkJhbGFuY2UAAShrZWVwX2FsaXZlmAEQYm9vbAAKHPxCdXJuIHRoZSBzcGVjaWZpZWQgbGlxdWlkIGZyZWUgYmFsYW5jZSBmcm9tIHRoZSBvcmlnaW4gYWNjb3VudC4AJQFJZiB0aGUgb3JpZ2luJ3MgYWNjb3VudCBlbmRzIHVwIGJlbG93IHRoZSBleGlzdGVudGlhbCBkZXBvc2l0IGFzIGEgcmVzdWx0CQFvZiB0aGUgYnVybiBhbmQgYGtlZXBfYWxpdmVgIGlzIGZhbHNlLCB0aGUgYWNjb3VudCB3aWxsIGJlIHJlYXBlZC4AUQFVbmxpa2Ugc2VuZGluZyBmdW5kcyB0byBhIF9idXJuXyBhZGRyZXNzLCB3aGljaCBtZXJlbHkgbWFrZXMgdGhlIGZ1bmRzIGluYWNjZXNzaWJsZSwhAXRoaXMgYGJ1cm5gIG9wZXJhdGlvbiB3aWxsIHJlZHVjZSB0b3RhbCBpc3N1YW5jZSBieSB0aGUgYW1vdW50IF9idXJuZWRfLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy6gAAAGpACkAAAFBwCoAAACBACsDDxwYWxsZXRfYmFsYW5jZXMUdHlwZXNMQWRqdXN0bWVudERpcmVjdGlvbgABCCBJbmNyZWFzZQAAACBEZWNyZWFzZQABAACwEDhwYWxsZXRfc3Rha2luZxhwYWxsZXQYcGFsbGV0EENhbGwEBFQAAYAQYm9uZAgBFHZhbHVloAEwQmFsYW5jZU9mPFQ+AAEUcGF5ZWW0AXxSZXdhcmREZXN0aW5hdGlvbjxUOjpBY2NvdW50SWQ+AABAYQFUYWtlIHRoZSBvcmlnaW4gYWNjb3VudCBhcyBhIHN0YXNoIGFuZCBsb2NrIHVwIGB2YWx1ZWAgb2YgaXRzIGJhbGFuY2UuIGBjb250cm9sbGVyYCB3aWxsgGJlIHRoZSBhY2NvdW50IHRoYXQgY29udHJvbHMgaXQuAC0BYHZhbHVlYCBtdXN0IGJlIG1vcmUgdGhhbiB0aGUgYG1pbmltdW1fYmFsYW5jZWAgc3BlY2lmaWVkIGJ5IGBUOjpDdXJyZW5jeWAuACEBVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8gYnkgdGhlIHN0YXNoIGFjY291bnQuADxFbWl0cyBgQm9uZGVkYC40IyMgQ29tcGxleGl0edAtIEluZGVwZW5kZW50IG9mIHRoZSBhcmd1bWVudHMuIE1vZGVyYXRlIGNvbXBsZXhpdHkuHC0gTygxKS5kLSBUaHJlZSBleHRyYSBEQiBlbnRyaWVzLgBNAU5PVEU6IFR3byBvZiB0aGUgc3RvcmFnZSB3cml0ZXMgKGBTZWxmOjpib25kZWRgLCBgU2VsZjo6cGF5ZWVgKSBhcmUgX25ldmVyXyBjbGVhbmVkWQF1bmxlc3MgdGhlIGBvcmlnaW5gIGZhbGxzIGJlbG93IF9leGlzdGVudGlhbCBkZXBvc2l0XyAob3IgZXF1YWwgdG8gMCkgYW5kIGdldHMgcmVtb3ZlZCBhcyBkdXN0Lihib25kX2V4dHJhBAE4bWF4X2FkZGl0aW9uYWygATBCYWxhbmNlT2Y8VD4AAThhAUFkZCBzb21lIGV4dHJhIGFtb3VudCB0aGF0IGhhdmUgYXBwZWFyZWQgaW4gdGhlIHN0YXNoIGBmcmVlX2JhbGFuY2VgIGludG8gdGhlIGJhbGFuY2UgdXAwZm9yIHN0YWtpbmcuAFEBVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8gYnkgdGhlIHN0YXNoLCBub3QgdGhlIGNvbnRyb2xsZXIuAE0BVXNlIHRoaXMgaWYgdGhlcmUgYXJlIGFkZGl0aW9uYWwgZnVuZHMgaW4geW91ciBzdGFzaCBhY2NvdW50IHRoYXQgeW91IHdpc2ggdG8gYm9uZC5VAVVubGlrZSBbYGJvbmRgXShTZWxmOjpib25kKSBvciBbYHVuYm9uZGBdKFNlbGY6OnVuYm9uZCkgdGhpcyBmdW5jdGlvbiBkb2VzIG5vdCBpbXBvc2W8YW55IGxpbWl0YXRpb24gb24gdGhlIGFtb3VudCB0aGF0IGNhbiBiZSBhZGRlZC4APEVtaXRzIGBCb25kZWRgLgA0IyMgQ29tcGxleGl0eeQtIEluZGVwZW5kZW50IG9mIHRoZSBhcmd1bWVudHMuIEluc2lnbmlmaWNhbnQgY29tcGxleGl0eS4cLSBPKDEpLhh1bmJvbmQEARR2YWx1ZaABMEJhbGFuY2VPZjxUPgACVFEBU2NoZWR1bGUgYSBwb3J0aW9uIG9mIHRoZSBzdGFzaCB0byBiZSB1bmxvY2tlZCByZWFkeSBmb3IgdHJhbnNmZXIgb3V0IGFmdGVyIHRoZSBib25k/HBlcmlvZCBlbmRzLiBJZiB0aGlzIGxlYXZlcyBhbiBhbW91bnQgYWN0aXZlbHkgYm9uZGVkIGxlc3MgdGhhbiEBW2Bhc3NldDo6ZXhpc3RlbnRpYWxfZGVwb3NpdGBdLCB0aGVuIGl0IGlzIGluY3JlYXNlZCB0byB0aGUgZnVsbCBhbW91bnQuAD0BVGhlIHN0YXNoIG1heSBiZSBjaGlsbGVkIGlmIHRoZSBsZWRnZXIgdG90YWwgYW1vdW50IGZhbGxzIHRvIDAgYWZ0ZXIgdW5ib25kaW5nLgBRAVRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfIGJ5IHRoZSBjb250cm9sbGVyLCBub3QgdGhlIHN0YXNoLgBFAU9uY2UgdGhlIHVubG9jayBwZXJpb2QgaXMgZG9uZSwgeW91IGNhbiBjYWxsIGB3aXRoZHJhd191bmJvbmRlZGAgdG8gYWN0dWFsbHkgbW92Zbx0aGUgZnVuZHMgb3V0IG9mIG1hbmFnZW1lbnQgcmVhZHkgZm9yIHRyYW5zZmVyLgAxAU5vIG1vcmUgdGhhbiBhIGxpbWl0ZWQgbnVtYmVyIG9mIHVubG9ja2luZyBjaHVua3MgKHNlZSBgTWF4VW5sb2NraW5nQ2h1bmtzYClBAWNhbiBjby1leGlzdHMgYXQgdGhlIHNhbWUgdGltZS4gSWYgdGhlcmUgYXJlIG5vIHVubG9ja2luZyBjaHVua3Mgc2xvdHMgYXZhaWxhYmxlRQFbYENhbGw6OndpdGhkcmF3X3VuYm9uZGVkYF0gaXMgY2FsbGVkIHRvIHJlbW92ZSBzb21lIG9mIHRoZSBjaHVua3MgKGlmIHBvc3NpYmxlKS4AOQFJZiBhIHVzZXIgZW5jb3VudGVycyB0aGUgYEluc3VmZmljaWVudEJvbmRgIGVycm9yIHdoZW4gY2FsbGluZyB0aGlzIGV4dHJpbnNpYywZAXRoZXkgc2hvdWxkIGNhbGwgYGNoaWxsYCBmaXJzdCBpbiBvcmRlciB0byBmcmVlIHVwIHRoZWlyIGJvbmRlZCBmdW5kcy4AREVtaXRzIGBVbmJvbmRlZGAuAJRTZWUgYWxzbyBbYENhbGw6OndpdGhkcmF3X3VuYm9uZGVkYF0uRHdpdGhkcmF3X3VuYm9uZGVkBAFIbnVtX3NsYXNoaW5nX3NwYW5zOAEMdTMyAANcKQFSZW1vdmUgYW55IHVubG9ja2VkIGNodW5rcyBmcm9tIHRoZSBgdW5sb2NraW5nYCBxdWV1ZSBmcm9tIG91ciBtYW5hZ2VtZW50LgBVAVRoaXMgZXNzZW50aWFsbHkgZnJlZXMgdXAgdGhhdCBiYWxhbmNlIHRvIGJlIHVzZWQgYnkgdGhlIHN0YXNoIGFjY291bnQgdG8gZG8gd2hhdGV2ZXIkaXQgd2FudHMuABUBVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8gYnkgdGhlIGNvbnRyb2xsZXIuAEhFbWl0cyBgV2l0aGRyYXduYC4AaFNlZSBhbHNvIFtgQ2FsbDo6dW5ib25kYF0uADQjIyBQYXJhbWV0ZXJzAFEBLSBgbnVtX3NsYXNoaW5nX3NwYW5zYCBpbmRpY2F0ZXMgdGhlIG51bWJlciBvZiBtZXRhZGF0YSBzbGFzaGluZyBzcGFucyB0byBjbGVhciB3aGVuVQF0aGlzIGNhbGwgcmVzdWx0cyBpbiBhIGNvbXBsZXRlIHJlbW92YWwgb2YgYWxsIHRoZSBkYXRhIHJlbGF0ZWQgdG8gdGhlIHN0YXNoIGFjY291bnQuPQFJbiB0aGlzIGNhc2UsIHRoZSBgbnVtX3NsYXNoaW5nX3NwYW5zYCBtdXN0IGJlIGxhcmdlciBvciBlcXVhbCB0byB0aGUgbnVtYmVyIG9mXQFzbGFzaGluZyBzcGFucyBhc3NvY2lhdGVkIHdpdGggdGhlIHN0YXNoIGFjY291bnQgaW4gdGhlIFtgU2xhc2hpbmdTcGFuc2BdIHN0b3JhZ2UgdHlwZSwlAW90aGVyd2lzZSB0aGUgY2FsbCB3aWxsIGZhaWwuIFRoZSBjYWxsIHdlaWdodCBpcyBkaXJlY3RseSBwcm9wb3J0aW9uYWwgdG9UYG51bV9zbGFzaGluZ19zcGFuc2AuADQjIyBDb21wbGV4aXR52E8oUykgd2hlcmUgUyBpcyB0aGUgbnVtYmVyIG9mIHNsYXNoaW5nIHNwYW5zIHRvIHJlbW92ZQkBTk9URTogV2VpZ2h0IGFubm90YXRpb24gaXMgdGhlIGtpbGwgc2NlbmFyaW8sIHdlIHJlZnVuZCBvdGhlcndpc2UuIHZhbGlkYXRlBAEUcHJlZnO4AThWYWxpZGF0b3JQcmVmcwAEFOREZWNsYXJlIHRoZSBkZXNpcmUgdG8gdmFsaWRhdGUgZm9yIHRoZSBvcmlnaW4gY29udHJvbGxlci4A2EVmZmVjdHMgd2lsbCBiZSBmZWx0IGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIG5leHQgZXJhLgBRAVRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfIGJ5IHRoZSBjb250cm9sbGVyLCBub3QgdGhlIHN0YXNoLiBub21pbmF0ZQQBHHRhcmdldHPEAWRWZWM8QWNjb3VudElkTG9va3VwT2Y8VD4+AAUoDQFEZWNsYXJlIHRoZSBkZXNpcmUgdG8gbm9taW5hdGUgYHRhcmdldHNgIGZvciB0aGUgb3JpZ2luIGNvbnRyb2xsZXIuANhFZmZlY3RzIHdpbGwgYmUgZmVsdCBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBuZXh0IGVyYS4AUQFUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXyBieSB0aGUgY29udHJvbGxlciwgbm90IHRoZSBzdGFzaC4ANCMjIENvbXBsZXhpdHktAS0gVGhlIHRyYW5zYWN0aW9uJ3MgY29tcGxleGl0eSBpcyBwcm9wb3J0aW9uYWwgdG8gdGhlIHNpemUgb2YgYHRhcmdldHNgIChOKQUBd2hpY2ggaXMgY2FwcGVkIGF0IENvbXBhY3RBc3NpZ25tZW50czo6TElNSVQgKFQ6Ok1heE5vbWluYXRpb25zKS7ULSBCb3RoIHRoZSByZWFkcyBhbmQgd3JpdGVzIGZvbGxvdyBhIHNpbWlsYXIgcGF0dGVybi4UY2hpbGwABijERGVjbGFyZSBubyBkZXNpcmUgdG8gZWl0aGVyIHZhbGlkYXRlIG9yIG5vbWluYXRlLgDYRWZmZWN0cyB3aWxsIGJlIGZlbHQgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgbmV4dCBlcmEuAFEBVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8gYnkgdGhlIGNvbnRyb2xsZXIsIG5vdCB0aGUgc3Rhc2guADQjIyBDb21wbGV4aXR55C0gSW5kZXBlbmRlbnQgb2YgdGhlIGFyZ3VtZW50cy4gSW5zaWduaWZpY2FudCBjb21wbGV4aXR5LlAtIENvbnRhaW5zIG9uZSByZWFkLsQtIFdyaXRlcyBhcmUgbGltaXRlZCB0byB0aGUgYG9yaWdpbmAgYWNjb3VudCBrZXkuJHNldF9wYXllZQQBFHBheWVltAF8UmV3YXJkRGVzdGluYXRpb248VDo6QWNjb3VudElkPgAHMLQoUmUtKXNldCB0aGUgcGF5bWVudCB0YXJnZXQgZm9yIGEgY29udHJvbGxlci4AUQFFZmZlY3RzIHdpbGwgYmUgZmVsdCBpbnN0YW50bHkgKGFzIHNvb24gYXMgdGhpcyBmdW5jdGlvbiBpcyBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5KS4AUQFUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXyBieSB0aGUgY29udHJvbGxlciwgbm90IHRoZSBzdGFzaC4ANCMjIENvbXBsZXhpdHkYLSBPKDEp5C0gSW5kZXBlbmRlbnQgb2YgdGhlIGFyZ3VtZW50cy4gSW5zaWduaWZpY2FudCBjb21wbGV4aXR5LpQtIENvbnRhaW5zIGEgbGltaXRlZCBudW1iZXIgb2YgcmVhZHMuxC0gV3JpdGVzIGFyZSBsaW1pdGVkIHRvIHRoZSBgb3JpZ2luYCBhY2NvdW50IGtleS4kLS0tLS0tLS0tOHNldF9jb250cm9sbGVyAAg4RQEoUmUtKXNldHMgdGhlIGNvbnRyb2xsZXIgb2YgYSBzdGFzaCB0byB0aGUgc3Rhc2ggaXRzZWxmLiBUaGlzIGZ1bmN0aW9uIHByZXZpb3VzbHlNAWFjY2VwdGVkIGEgYGNvbnRyb2xsZXJgIGFyZ3VtZW50IHRvIHNldCB0aGUgY29udHJvbGxlciB0byBhbiBhY2NvdW50IG90aGVyIHRoYW4gdGhlWQFzdGFzaCBpdHNlbGYuIFRoaXMgZnVuY3Rpb25hbGl0eSBoYXMgbm93IGJlZW4gcmVtb3ZlZCwgbm93IG9ubHkgc2V0dGluZyB0aGUgY29udHJvbGxlcox0byB0aGUgc3Rhc2gsIGlmIGl0IGlzIG5vdCBhbHJlYWR5LgBRAUVmZmVjdHMgd2lsbCBiZSBmZWx0IGluc3RhbnRseSAoYXMgc29vbiBhcyB0aGlzIGZ1bmN0aW9uIGlzIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkpLgBRAVRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfIGJ5IHRoZSBzdGFzaCwgbm90IHRoZSBjb250cm9sbGVyLgA0IyMgQ29tcGxleGl0eRBPKDEp5C0gSW5kZXBlbmRlbnQgb2YgdGhlIGFyZ3VtZW50cy4gSW5zaWduaWZpY2FudCBjb21wbGV4aXR5LpQtIENvbnRhaW5zIGEgbGltaXRlZCBudW1iZXIgb2YgcmVhZHMuxC0gV3JpdGVzIGFyZSBsaW1pdGVkIHRvIHRoZSBgb3JpZ2luYCBhY2NvdW50IGtleS5Mc2V0X3ZhbGlkYXRvcl9jb3VudAQBDG5ld2ABDHUzMgAJGJBTZXRzIHRoZSBpZGVhbCBudW1iZXIgb2YgdmFsaWRhdG9ycy4AhFRoZSBkaXNwYXRjaCBvcmlnaW4gbXVzdCBiZSBSb290LgA0IyMgQ29tcGxleGl0eRBPKDEpYGluY3JlYXNlX3ZhbGlkYXRvcl9jb3VudAQBKGFkZGl0aW9uYWxgAQx1MzIAChzoSW5jcmVtZW50cyB0aGUgaWRlYWwgbnVtYmVyIG9mIHZhbGlkYXRvcnMgdXAgdG8gbWF4aW11bSBvZoxgRWxlY3Rpb25Qcm92aWRlckJhc2U6Ok1heFdpbm5lcnNgLgCEVGhlIGRpc3BhdGNoIG9yaWdpbiBtdXN0IGJlIFJvb3QuADQjIyBDb21wbGV4aXR5mFNhbWUgYXMgW2BTZWxmOjpzZXRfdmFsaWRhdG9yX2NvdW50YF0uVHNjYWxlX3ZhbGlkYXRvcl9jb3VudAQBGGZhY3RvcsgBHFBlcmNlbnQACxwRAVNjYWxlIHVwIHRoZSBpZGVhbCBudW1iZXIgb2YgdmFsaWRhdG9ycyBieSBhIGZhY3RvciB1cCB0byBtYXhpbXVtIG9mjGBFbGVjdGlvblByb3ZpZGVyQmFzZTo6TWF4V2lubmVyc2AuAIRUaGUgZGlzcGF0Y2ggb3JpZ2luIG11c3QgYmUgUm9vdC4ANCMjIENvbXBsZXhpdHmYU2FtZSBhcyBbYFNlbGY6OnNldF92YWxpZGF0b3JfY291bnRgXS40Zm9yY2Vfbm9fZXJhcwAMNKxGb3JjZSB0aGVyZSB0byBiZSBubyBuZXcgZXJhcyBpbmRlZmluaXRlbHkuAIRUaGUgZGlzcGF0Y2ggb3JpZ2luIG11c3QgYmUgUm9vdC4AJCMgV2FybmluZwAZAVRoZSBlbGVjdGlvbiBwcm9jZXNzIHN0YXJ0cyBtdWx0aXBsZSBibG9ja3MgYmVmb3JlIHRoZSBlbmQgb2YgdGhlIGVyYS45AVRodXMgdGhlIGVsZWN0aW9uIHByb2Nlc3MgbWF5IGJlIG9uZ29pbmcgd2hlbiB0aGlzIGlzIGNhbGxlZC4gSW4gdGhpcyBjYXNlIHRoZdxlbGVjdGlvbiB3aWxsIGNvbnRpbnVlIHVudGlsIHRoZSBuZXh0IGVyYSBpcyB0cmlnZ2VyZWQuADQjIyBDb21wbGV4aXR5PC0gTm8gYXJndW1lbnRzLjgtIFdlaWdodDogTygxKTRmb3JjZV9uZXdfZXJhAA04SQFGb3JjZSB0aGVyZSB0byBiZSBhIG5ldyBlcmEgYXQgdGhlIGVuZCBvZiB0aGUgbmV4dCBzZXNzaW9uLiBBZnRlciB0aGlzLCBpdCB3aWxsIGJlnHJlc2V0IHRvIG5vcm1hbCAobm9uLWZvcmNlZCkgYmVoYXZpb3VyLgCEVGhlIGRpc3BhdGNoIG9yaWdpbiBtdXN0IGJlIFJvb3QuACQjIFdhcm5pbmcAGQFUaGUgZWxlY3Rpb24gcHJvY2VzcyBzdGFydHMgbXVsdGlwbGUgYmxvY2tzIGJlZm9yZSB0aGUgZW5kIG9mIHRoZSBlcmEuSQFJZiB0aGlzIGlzIGNhbGxlZCBqdXN0IGJlZm9yZSBhIG5ldyBlcmEgaXMgdHJpZ2dlcmVkLCB0aGUgZWxlY3Rpb24gcHJvY2VzcyBtYXkgbm90jGhhdmUgZW5vdWdoIGJsb2NrcyB0byBnZXQgYSByZXN1bHQuADQjIyBDb21wbGV4aXR5PC0gTm8gYXJndW1lbnRzLjgtIFdlaWdodDogTygxKURzZXRfaW52dWxuZXJhYmxlcwQBNGludnVsbmVyYWJsZXOoAURWZWM8VDo6QWNjb3VudElkPgAODMhTZXQgdGhlIHZhbGlkYXRvcnMgd2hvIGNhbm5vdCBiZSBzbGFzaGVkIChpZiBhbnkpLgCEVGhlIGRpc3BhdGNoIG9yaWdpbiBtdXN0IGJlIFJvb3QuNGZvcmNlX3Vuc3Rha2UIARRzdGFzaAQBMFQ6OkFjY291bnRJZAABSG51bV9zbGFzaGluZ19zcGFuczgBDHUzMgAPIAkBRm9yY2UgYSBjdXJyZW50IHN0YWtlciB0byBiZWNvbWUgY29tcGxldGVseSB1bnN0YWtlZCwgaW1tZWRpYXRlbHkuAIRUaGUgZGlzcGF0Y2ggb3JpZ2luIG11c3QgYmUgUm9vdC4ANCMjIFBhcmFtZXRlcnMARQEtIGBudW1fc2xhc2hpbmdfc3BhbnNgOiBSZWZlciB0byBjb21tZW50cyBvbiBbYENhbGw6OndpdGhkcmF3X3VuYm9uZGVkYF0gZm9yIG1vcmUgZGV0YWlscy5QZm9yY2VfbmV3X2VyYV9hbHdheXMAECQBAUZvcmNlIHRoZXJlIHRvIGJlIGEgbmV3IGVyYSBhdCB0aGUgZW5kIG9mIHNlc3Npb25zIGluZGVmaW5pdGVseS4AhFRoZSBkaXNwYXRjaCBvcmlnaW4gbXVzdCBiZSBSb290LgAkIyBXYXJuaW5nABkBVGhlIGVsZWN0aW9uIHByb2Nlc3Mgc3RhcnRzIG11bHRpcGxlIGJsb2NrcyBiZWZvcmUgdGhlIGVuZCBvZiB0aGUgZXJhLkkBSWYgdGhpcyBpcyBjYWxsZWQganVzdCBiZWZvcmUgYSBuZXcgZXJhIGlzIHRyaWdnZXJlZCwgdGhlIGVsZWN0aW9uIHByb2Nlc3MgbWF5IG5vdIxoYXZlIGVub3VnaCBibG9ja3MgdG8gZ2V0IGEgcmVzdWx0LlRjYW5jZWxfZGVmZXJyZWRfc2xhc2gIAQxlcmE4ASBFcmFJbmRleAABNHNsYXNoX2luZGljZXPMASBWZWM8dTMyPgARGJRDYW5jZWwgZW5hY3RtZW50IG9mIGEgZGVmZXJyZWQgc2xhc2guAJhDYW4gYmUgY2FsbGVkIGJ5IHRoZSBgVDo6QWRtaW5PcmlnaW5gLgABAVBhcmFtZXRlcnM6IGVyYSBhbmQgaW5kaWNlcyBvZiB0aGUgc2xhc2hlcyBmb3IgdGhhdCBlcmEgdG8ga2lsbC7kVGhleSAqKm11c3QqKiBiZSBzb3J0ZWQgaW4gYXNjZW5kaW5nIG9yZGVyLCAqYW5kKiB1bmlxdWUuOHBheW91dF9zdGFrZXJzCAE8dmFsaWRhdG9yX3N0YXNoBAEwVDo6QWNjb3VudElkAAEMZXJhOAEgRXJhSW5kZXgAEjQZAVBheSBvdXQgbmV4dCBwYWdlIG9mIHRoZSBzdGFrZXJzIGJlaGluZCBhIHZhbGlkYXRvciBmb3IgdGhlIGdpdmVuIGVyYS4A6C0gYHZhbGlkYXRvcl9zdGFzaGAgaXMgdGhlIHN0YXNoIGFjY291bnQgb2YgdGhlIHZhbGlkYXRvci4xAS0gYGVyYWAgbWF5IGJlIGFueSBlcmEgYmV0d2VlbiBgW2N1cnJlbnRfZXJhIC0gaGlzdG9yeV9kZXB0aDsgY3VycmVudF9lcmFdYC4AVQFUaGUgb3JpZ2luIG9mIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLiBBbnkgYWNjb3VudCBjYW4gY2FsbCB0aGlzIGZ1bmN0aW9uLCBldmVuIGlmdGl0IGlzIG5vdCBvbmUgb2YgdGhlIHN0YWtlcnMuAEkBVGhlIHJld2FyZCBwYXlvdXQgY291bGQgYmUgcGFnZWQgaW4gY2FzZSB0aGVyZSBhcmUgdG9vIG1hbnkgbm9taW5hdG9ycyBiYWNraW5nIHRoZV0BYHZhbGlkYXRvcl9zdGFzaGAuIFRoaXMgY2FsbCB3aWxsIHBheW91dCB1bnBhaWQgcGFnZXMgaW4gYW4gYXNjZW5kaW5nIG9yZGVyLiBUbyBjbGFpbSBhtHNwZWNpZmljIHBhZ2UsIHVzZSBgcGF5b3V0X3N0YWtlcnNfYnlfcGFnZWAuYADwSWYgYWxsIHBhZ2VzIGFyZSBjbGFpbWVkLCBpdCByZXR1cm5zIGFuIGVycm9yIGBJbnZhbGlkUGFnZWAuGHJlYm9uZAQBFHZhbHVloAEwQmFsYW5jZU9mPFQ+ABMc3FJlYm9uZCBhIHBvcnRpb24gb2YgdGhlIHN0YXNoIHNjaGVkdWxlZCB0byBiZSB1bmxvY2tlZC4A1FRoZSBkaXNwYXRjaCBvcmlnaW4gbXVzdCBiZSBzaWduZWQgYnkgdGhlIGNvbnRyb2xsZXIuADQjIyBDb21wbGV4aXR50C0gVGltZSBjb21wbGV4aXR5OiBPKEwpLCB3aGVyZSBMIGlzIHVubG9ja2luZyBjaHVua3OILSBCb3VuZGVkIGJ5IGBNYXhVbmxvY2tpbmdDaHVua3NgLihyZWFwX3N0YXNoCAEUc3Rhc2gEATBUOjpBY2NvdW50SWQAAUhudW1fc2xhc2hpbmdfc3BhbnM4AQx1MzIAFEhdAVJlbW92ZSBhbGwgZGF0YSBzdHJ1Y3R1cmVzIGNvbmNlcm5pbmcgYSBzdGFrZXIvc3Rhc2ggb25jZSBpdCBpcyBhdCBhIHN0YXRlIHdoZXJlIGl0IGNhbgUBYmUgY29uc2lkZXJlZCBgZHVzdGAgaW4gdGhlIHN0YWtpbmcgc3lzdGVtLiBUaGUgcmVxdWlyZW1lbnRzIGFyZToABQExLiB0aGUgYHRvdGFsX2JhbGFuY2VgIG9mIHRoZSBzdGFzaCBpcyBiZWxvdyBleGlzdGVudGlhbCBkZXBvc2l0LhEBMi4gb3IsIHRoZSBgbGVkZ2VyLnRvdGFsYCBvZiB0aGUgc3Rhc2ggaXMgYmVsb3cgZXhpc3RlbnRpYWwgZGVwb3NpdC5hATMuIG9yLCBleGlzdGVudGlhbCBkZXBvc2l0IGlzIHplcm8gYW5kIGVpdGhlciBgdG90YWxfYmFsYW5jZWAgb3IgYGxlZGdlci50b3RhbGAgaXMgemVyby4AVQFUaGUgZm9ybWVyIGNhbiBoYXBwZW4gaW4gY2FzZXMgbGlrZSBhIHNsYXNoOyB0aGUgbGF0dGVyIHdoZW4gYSBmdWxseSB1bmJvbmRlZCBhY2NvdW50CQFpcyBzdGlsbCByZWNlaXZpbmcgc3Rha2luZyByZXdhcmRzIGluIGBSZXdhcmREZXN0aW5hdGlvbjo6U3Rha2VkYC4AMQFJdCBjYW4gYmUgY2FsbGVkIGJ5IGFueW9uZSwgYXMgbG9uZyBhcyBgc3Rhc2hgIG1lZXRzIHRoZSBhYm92ZSByZXF1aXJlbWVudHMuANxSZWZ1bmRzIHRoZSB0cmFuc2FjdGlvbiBmZWVzIHVwb24gc3VjY2Vzc2Z1bCBleGVjdXRpb24uADQjIyBQYXJhbWV0ZXJzAEUBLSBgbnVtX3NsYXNoaW5nX3NwYW5zYDogUmVmZXIgdG8gY29tbWVudHMgb24gW2BDYWxsOjp3aXRoZHJhd191bmJvbmRlZGBdIGZvciBtb3JlIGRldGFpbHMuEGtpY2sEAQx3aG/EAWRWZWM8QWNjb3VudElkTG9va3VwT2Y8VD4+ABUs4FJlbW92ZSB0aGUgZ2l2ZW4gbm9taW5hdGlvbnMgZnJvbSB0aGUgY2FsbGluZyB2YWxpZGF0b3IuANhFZmZlY3RzIHdpbGwgYmUgZmVsdCBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBuZXh0IGVyYS4AUQFUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXyBieSB0aGUgY29udHJvbGxlciwgbm90IHRoZSBzdGFzaC4ATQEtIGB3aG9gOiBBIGxpc3Qgb2Ygbm9taW5hdG9yIHN0YXNoIGFjY291bnRzIHdobyBhcmUgbm9taW5hdGluZyB0aGlzIHZhbGlkYXRvciB3aGljaMAgIHNob3VsZCBubyBsb25nZXIgYmUgbm9taW5hdGluZyB0aGlzIHZhbGlkYXRvci4AVQFOb3RlOiBNYWtpbmcgdGhpcyBjYWxsIG9ubHkgbWFrZXMgc2Vuc2UgaWYgeW91IGZpcnN0IHNldCB0aGUgdmFsaWRhdG9yIHByZWZlcmVuY2VzIHRveGJsb2NrIGFueSBmdXJ0aGVyIG5vbWluYXRpb25zLkxzZXRfc3Rha2luZ19jb25maWdzHAFIbWluX25vbWluYXRvcl9ib25k0AFYQ29uZmlnT3A8QmFsYW5jZU9mPFQ+PgABSG1pbl92YWxpZGF0b3JfYm9uZNABWENvbmZpZ09wPEJhbGFuY2VPZjxUPj4AAUxtYXhfbm9taW5hdG9yX2NvdW501AE0Q29uZmlnT3A8dTMyPgABTG1heF92YWxpZGF0b3JfY291bnTUATRDb25maWdPcDx1MzI+AAE8Y2hpbGxfdGhyZXNob2xk2AFEQ29uZmlnT3A8UGVyY2VudD4AAThtaW5fY29tbWlzc2lvbtwBRENvbmZpZ09wPFBlcmJpbGw+AAFIbWF4X3N0YWtlZF9yZXdhcmRz2AFEQ29uZmlnT3A8UGVyY2VudD4AFkSsVXBkYXRlIHRoZSB2YXJpb3VzIHN0YWtpbmcgY29uZmlndXJhdGlvbnMgLgAlASogYG1pbl9ub21pbmF0b3JfYm9uZGA6IFRoZSBtaW5pbXVtIGFjdGl2ZSBib25kIG5lZWRlZCB0byBiZSBhIG5vbWluYXRvci4lASogYG1pbl92YWxpZGF0b3JfYm9uZGA6IFRoZSBtaW5pbXVtIGFjdGl2ZSBib25kIG5lZWRlZCB0byBiZSBhIHZhbGlkYXRvci5VASogYG1heF9ub21pbmF0b3JfY291bnRgOiBUaGUgbWF4IG51bWJlciBvZiB1c2VycyB3aG8gY2FuIGJlIGEgbm9taW5hdG9yIGF0IG9uY2UuIFdoZW6YICBzZXQgdG8gYE5vbmVgLCBubyBsaW1pdCBpcyBlbmZvcmNlZC5VASogYG1heF92YWxpZGF0b3JfY291bnRgOiBUaGUgbWF4IG51bWJlciBvZiB1c2VycyB3aG8gY2FuIGJlIGEgdmFsaWRhdG9yIGF0IG9uY2UuIFdoZW6YICBzZXQgdG8gYE5vbmVgLCBubyBsaW1pdCBpcyBlbmZvcmNlZC5ZASogYGNoaWxsX3RocmVzaG9sZGA6IFRoZSByYXRpbyBvZiBgbWF4X25vbWluYXRvcl9jb3VudGAgb3IgYG1heF92YWxpZGF0b3JfY291bnRgIHdoaWNoGQEgIHNob3VsZCBiZSBmaWxsZWQgaW4gb3JkZXIgZm9yIHRoZSBgY2hpbGxfb3RoZXJgIHRyYW5zYWN0aW9uIHRvIHdvcmsuYQEqIGBtaW5fY29tbWlzc2lvbmA6IFRoZSBtaW5pbXVtIGFtb3VudCBvZiBjb21taXNzaW9uIHRoYXQgZWFjaCB2YWxpZGF0b3JzIG11c3QgbWFpbnRhaW4uVQEgIFRoaXMgaXMgY2hlY2tlZCBvbmx5IHVwb24gY2FsbGluZyBgdmFsaWRhdGVgLiBFeGlzdGluZyB2YWxpZGF0b3JzIGFyZSBub3QgYWZmZWN0ZWQuAMRSdW50aW1lT3JpZ2luIG11c3QgYmUgUm9vdCB0byBjYWxsIHRoaXMgZnVuY3Rpb24uADUBTk9URTogRXhpc3Rpbmcgbm9taW5hdG9ycyBhbmQgdmFsaWRhdG9ycyB3aWxsIG5vdCBiZSBhZmZlY3RlZCBieSB0aGlzIHVwZGF0ZS4RAXRvIGtpY2sgcGVvcGxlIHVuZGVyIHRoZSBuZXcgbGltaXRzLCBgY2hpbGxfb3RoZXJgIHNob3VsZCBiZSBjYWxsZWQuLGNoaWxsX290aGVyBAEUc3Rhc2gEATBUOjpBY2NvdW50SWQAF2hBAURlY2xhcmUgYSBgY29udHJvbGxlcmAgdG8gc3RvcCBwYXJ0aWNpcGF0aW5nIGFzIGVpdGhlciBhIHZhbGlkYXRvciBvciBub21pbmF0b3IuANhFZmZlY3RzIHdpbGwgYmUgZmVsdCBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBuZXh0IGVyYS4AQQFUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXywgYnV0IGNhbiBiZSBjYWxsZWQgYnkgYW55b25lLgBZAUlmIHRoZSBjYWxsZXIgaXMgdGhlIHNhbWUgYXMgdGhlIGNvbnRyb2xsZXIgYmVpbmcgdGFyZ2V0ZWQsIHRoZW4gbm8gZnVydGhlciBjaGVja3MgYXJl2GVuZm9yY2VkLCBhbmQgdGhpcyBmdW5jdGlvbiBiZWhhdmVzIGp1c3QgbGlrZSBgY2hpbGxgLgBdAUlmIHRoZSBjYWxsZXIgaXMgZGlmZmVyZW50IHRoYW4gdGhlIGNvbnRyb2xsZXIgYmVpbmcgdGFyZ2V0ZWQsIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczBtdXN0IGJlIG1ldDoAHQEqIGBjb250cm9sbGVyYCBtdXN0IGJlbG9uZyB0byBhIG5vbWluYXRvciB3aG8gaGFzIGJlY29tZSBub24tZGVjb2RhYmxlLAAMT3I6AD0BKiBBIGBDaGlsbFRocmVzaG9sZGAgbXVzdCBiZSBzZXQgYW5kIGNoZWNrZWQgd2hpY2ggZGVmaW5lcyBob3cgY2xvc2UgdG8gdGhlIG1heFUBICBub21pbmF0b3JzIG9yIHZhbGlkYXRvcnMgd2UgbXVzdCByZWFjaCBiZWZvcmUgdXNlcnMgY2FuIHN0YXJ0IGNoaWxsaW5nIG9uZS1hbm90aGVyLlkBKiBBIGBNYXhOb21pbmF0b3JDb3VudGAgYW5kIGBNYXhWYWxpZGF0b3JDb3VudGAgbXVzdCBiZSBzZXQgd2hpY2ggaXMgdXNlZCB0byBkZXRlcm1pbmWQICBob3cgY2xvc2Ugd2UgYXJlIHRvIHRoZSB0aHJlc2hvbGQuXQEqIEEgYE1pbk5vbWluYXRvckJvbmRgIGFuZCBgTWluVmFsaWRhdG9yQm9uZGAgbXVzdCBiZSBzZXQgYW5kIGNoZWNrZWQsIHdoaWNoIGRldGVybWluZXNRASAgaWYgdGhpcyBpcyBhIHBlcnNvbiB0aGF0IHNob3VsZCBiZSBjaGlsbGVkIGJlY2F1c2UgdGhleSBoYXZlIG5vdCBtZXQgdGhlIHRocmVzaG9sZEAgIGJvbmQgcmVxdWlyZWQuAFUBVGhpcyBjYW4gYmUgaGVscGZ1bCBpZiBib25kIHJlcXVpcmVtZW50cyBhcmUgdXBkYXRlZCwgYW5kIHdlIG5lZWQgdG8gcmVtb3ZlIG9sZCB1c2Vyc5h3aG8gZG8gbm90IHNhdGlzZnkgdGhlc2UgcmVxdWlyZW1lbnRzLmhmb3JjZV9hcHBseV9taW5fY29tbWlzc2lvbgQBPHZhbGlkYXRvcl9zdGFzaAQBMFQ6OkFjY291bnRJZAAYDEUBRm9yY2UgYSB2YWxpZGF0b3IgdG8gaGF2ZSBhdCBsZWFzdCB0aGUgbWluaW11bSBjb21taXNzaW9uLiBUaGlzIHdpbGwgbm90IGFmZmVjdCBhYQF2YWxpZGF0b3Igd2hvIGFscmVhZHkgaGFzIGEgY29tbWlzc2lvbiBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gdGhlIG1pbmltdW0uIEFueSBhY2NvdW50OGNhbiBjYWxsIHRoaXMuSHNldF9taW5fY29tbWlzc2lvbgQBDG5ld8ABHFBlcmJpbGwAGRAlAVNldHMgdGhlIG1pbmltdW0gYW1vdW50IG9mIGNvbW1pc3Npb24gdGhhdCBlYWNoIHZhbGlkYXRvcnMgbXVzdCBtYWludGFpbi4AWQFUaGlzIGNhbGwgaGFzIGxvd2VyIHByaXZpbGVnZSByZXF1aXJlbWVudHMgdGhhbiBgc2V0X3N0YWtpbmdfY29uZmlnYCBhbmQgY2FuIGJlIGNhbGxlZMxieSB0aGUgYFQ6OkFkbWluT3JpZ2luYC4gUm9vdCBjYW4gYWx3YXlzIGNhbGwgdGhpcy5YcGF5b3V0X3N0YWtlcnNfYnlfcGFnZQwBPHZhbGlkYXRvcl9zdGFzaAQBMFQ6OkFjY291bnRJZAABDGVyYTgBIEVyYUluZGV4AAEQcGFnZTgBEFBhZ2UAGkQxAVBheSBvdXQgYSBwYWdlIG9mIHRoZSBzdGFrZXJzIGJlaGluZCBhIHZhbGlkYXRvciBmb3IgdGhlIGdpdmVuIGVyYSBhbmQgcGFnZS4A6C0gYHZhbGlkYXRvcl9zdGFzaGAgaXMgdGhlIHN0YXNoIGFjY291bnQgb2YgdGhlIHZhbGlkYXRvci4xAS0gYGVyYWAgbWF5IGJlIGFueSBlcmEgYmV0d2VlbiBgW2N1cnJlbnRfZXJhIC0gaGlzdG9yeV9kZXB0aDsgY3VycmVudF9lcmFdYC4xAS0gYHBhZ2VgIGlzIHRoZSBwYWdlIGluZGV4IG9mIG5vbWluYXRvcnMgdG8gcGF5IG91dCB3aXRoIHZhbHVlIGJldHdlZW4gMCBhbmSwICBgbnVtX25vbWluYXRvcnMgLyBUOjpNYXhFeHBvc3VyZVBhZ2VTaXplYC4AVQFUaGUgb3JpZ2luIG9mIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLiBBbnkgYWNjb3VudCBjYW4gY2FsbCB0aGlzIGZ1bmN0aW9uLCBldmVuIGlmdGl0IGlzIG5vdCBvbmUgb2YgdGhlIHN0YWtlcnMuAD0BSWYgYSB2YWxpZGF0b3IgaGFzIG1vcmUgdGhhbiBbYENvbmZpZzo6TWF4RXhwb3N1cmVQYWdlU2l6ZWBdIG5vbWluYXRvcnMgYmFja2luZykBdGhlbSwgdGhlbiB0aGUgbGlzdCBvZiBub21pbmF0b3JzIGlzIHBhZ2VkLCB3aXRoIGVhY2ggcGFnZSBiZWluZyBjYXBwZWQgYXRVAVtgQ29uZmlnOjpNYXhFeHBvc3VyZVBhZ2VTaXplYC5dIElmIGEgdmFsaWRhdG9yIGhhcyBtb3JlIHRoYW4gb25lIHBhZ2Ugb2Ygbm9taW5hdG9ycyxJAXRoZSBjYWxsIG5lZWRzIHRvIGJlIG1hZGUgZm9yIGVhY2ggcGFnZSBzZXBhcmF0ZWx5IGluIG9yZGVyIGZvciBhbGwgdGhlIG5vbWluYXRvcnNVAWJhY2tpbmcgYSB2YWxpZGF0b3IgdG8gcmVjZWl2ZSB0aGUgcmV3YXJkLiBUaGUgbm9taW5hdG9ycyBhcmUgbm90IHNvcnRlZCBhY3Jvc3MgcGFnZXNhAWFuZCBzbyBpdCBzaG91bGQgbm90IGJlIGFzc3VtZWQgdGhlIGhpZ2hlc3Qgc3Rha2VyIHdvdWxkIGJlIG9uIHRoZSB0b3Btb3N0IHBhZ2UgYW5kIHZpY2VJAXZlcnNhLiBJZiByZXdhcmRzIGFyZSBub3QgY2xhaW1lZCBpbiBbYENvbmZpZzo6SGlzdG9yeURlcHRoYF0gZXJhcywgdGhleSBhcmUgbG9zdC4wdXBkYXRlX3BheWVlBAEoY29udHJvbGxlcgQBMFQ6OkFjY291bnRJZAAbGOBNaWdyYXRlcyBhbiBhY2NvdW50J3MgYFJld2FyZERlc3RpbmF0aW9uOjpDb250cm9sbGVyYCB0b6RgUmV3YXJkRGVzdGluYXRpb246OkFjY291bnQoY29udHJvbGxlcilgLgBRAUVmZmVjdHMgd2lsbCBiZSBmZWx0IGluc3RhbnRseSAoYXMgc29vbiBhcyB0aGlzIGZ1bmN0aW9uIGlzIGNvbXBsZXRlZCBzdWNjZXNzZnVsbHkpLgAxAVRoaXMgd2lsbCB3YWl2ZSB0aGUgdHJhbnNhY3Rpb24gZmVlIGlmIHRoZSBgcGF5ZWVgIGlzIHN1Y2Nlc3NmdWxseSBtaWdyYXRlZC5oZGVwcmVjYXRlX2NvbnRyb2xsZXJfYmF0Y2gEASxjb250cm9sbGVyc+AB9EJvdW5kZWRWZWM8VDo6QWNjb3VudElkLCBUOjpNYXhDb250cm9sbGVyc0luRGVwcmVjYXRpb25CYXRjaD4AHBxdAVVwZGF0ZXMgYSBiYXRjaCBvZiBjb250cm9sbGVyIGFjY291bnRzIHRvIHRoZWlyIGNvcnJlc3BvbmRpbmcgc3Rhc2ggYWNjb3VudCBpZiB0aGV5IGFyZWEBbm90IHRoZSBzYW1lLiBJZ25vcmVzIGFueSBjb250cm9sbGVyIGFjY291bnRzIHRoYXQgZG8gbm90IGV4aXN0LCBhbmQgZG9lcyBub3Qgb3BlcmF0ZSBpZrh0aGUgc3Rhc2ggYW5kIGNvbnRyb2xsZXIgYXJlIGFscmVhZHkgdGhlIHNhbWUuAFEBRWZmZWN0cyB3aWxsIGJlIGZlbHQgaW5zdGFudGx5IChhcyBzb29uIGFzIHRoaXMgZnVuY3Rpb24gaXMgY29tcGxldGVkIHN1Y2Nlc3NmdWxseSkuALRUaGUgZGlzcGF0Y2ggb3JpZ2luIG11c3QgYmUgYFQ6OkFkbWluT3JpZ2luYC44cmVzdG9yZV9sZWRnZXIQARRzdGFzaAQBMFQ6OkFjY291bnRJZAABQG1heWJlX2NvbnRyb2xsZXLkAVBPcHRpb248VDo6QWNjb3VudElkPgABLG1heWJlX3RvdGFs6AFQT3B0aW9uPEJhbGFuY2VPZjxUPj4AATxtYXliZV91bmxvY2tpbmfsARUBT3B0aW9uPEJvdW5kZWRWZWM8VW5sb2NrQ2h1bms8QmFsYW5jZU9mPFQ+PiwgVDo6Ck1heFVubG9ja2luZ0NodW5rcz4+AB0sBQFSZXN0b3JlcyB0aGUgc3RhdGUgb2YgYSBsZWRnZXIgd2hpY2ggaXMgaW4gYW4gaW5jb25zaXN0ZW50IHN0YXRlLgDcVGhlIHJlcXVpcmVtZW50cyB0byByZXN0b3JlIGEgbGVkZ2VyIGFyZSB0aGUgZm9sbG93aW5nOmQqIFRoZSBzdGFzaCBpcyBib25kZWQ7IG9yDQEqIFRoZSBzdGFzaCBpcyBub3QgYm9uZGVkIGJ1dCBpdCBoYXMgYSBzdGFraW5nIGxvY2sgbGVmdCBiZWhpbmQ7IG9yJQEqIElmIHRoZSBzdGFzaCBoYXMgYW4gYXNzb2NpYXRlZCBsZWRnZXIgYW5kIGl0cyBzdGF0ZSBpcyBpbmNvbnNpc3RlbnQ7IG9yHQEqIElmIHRoZSBsZWRnZXIgaXMgbm90IGNvcnJ1cHRlZCAqYnV0KiBpdHMgc3Rha2luZyBsb2NrIGlzIG91dCBvZiBzeW5jLgBhAVRoZSBgbWF5YmVfKmAgaW5wdXQgcGFyYW1ldGVycyB3aWxsIG92ZXJ3cml0ZSB0aGUgY29ycmVzcG9uZGluZyBkYXRhIGFuZCBtZXRhZGF0YSBvZiB0aGVZAWxlZGdlciBhc3NvY2lhdGVkIHdpdGggdGhlIHN0YXNoLiBJZiB0aGUgaW5wdXQgcGFyYW1ldGVycyBhcmUgbm90IHNldCwgdGhlIGxlZGdlciB3aWxskGJlIHJlc2V0IHZhbHVlcyBmcm9tIG9uLWNoYWluIHN0YXRlLkBtaWdyYXRlX2N1cnJlbmN5BAEUc3Rhc2gEATBUOjpBY2NvdW50SWQAHhy8UmVtb3ZlcyB0aGUgbGVnYWN5IFN0YWtpbmcgbG9ja3MgaWYgdGhleSBleGlzdC4AUQFUaGlzIHJlbW92ZXMgdGhlIGxlZ2FjeSBsb2NrIG9uIHRoZSBzdGFrZSB3aXRoIFtgQ29uZmlnOjpPbGRDdXJyZW5jeWBdIGFuZCBjcmVhdGVzIGFVAWhvbGQgb24gaXQgaWYgbmVlZGVkLiBJZiBhbGwgc3Rha2UgY2Fubm90IGJlIGhlbGQsIHRoZSBiZXN0IGVmZm9ydCBpcyBtYWRlIHRvIGhvbGQgYXMpAW11Y2ggYXMgcG9zc2libGUuIFRoZSByZW1haW5pbmcgc3Rha2UgaXMgZm9yY2VkIHdpdGhkcmF3biBmcm9tIHRoZSBsZWRnZXIuAMRUaGUgZmVlIGlzIHdhaXZlZCBpZiB0aGUgbWlncmF0aW9uIGlzIHN1Y2Nlc3NmdWwuMG1hbnVhbF9zbGFzaAwBPHZhbGlkYXRvcl9zdGFzaAQBMFQ6OkFjY291bnRJZAABDGVyYTgBIEVyYUluZGV4AAE4c2xhc2hfZnJhY3Rpb27AARxQZXJiaWxsACFUGQFUaGlzIGZ1bmN0aW9uIGFsbG93cyBnb3Zlcm5hbmNlIHRvIG1hbnVhbGx5IHNsYXNoIGEgdmFsaWRhdG9yIGFuZCBpcyBhXCoqZmFsbGJhY2sgbWVjaGFuaXNtKiouALRUaGUgZGlzcGF0Y2ggb3JpZ2luIG11c3QgYmUgYFQ6OkFkbWluT3JpZ2luYC4ANCMjIFBhcmFtZXRlcnMJAS0gYHZhbGlkYXRvcl9zdGFzaGAgLSBUaGUgc3Rhc2ggYWNjb3VudCBvZiB0aGUgdmFsaWRhdG9yIHRvIHNsYXNoLvwtIGBlcmFgIC0gVGhlIGVyYSBpbiB3aGljaCB0aGUgdmFsaWRhdG9yIHdhcyBpbiB0aGUgYWN0aXZlIHNldC5JAS0gYHNsYXNoX2ZyYWN0aW9uYCAtIFRoZSBwZXJjZW50YWdlIG9mIHRoZSBzdGFrZSB0byBzbGFzaCwgZXhwcmVzc2VkIGFzIGEgUGVyYmlsbC4ALCMjIEJlaGF2aW9yAD0BVGhlIHNsYXNoIHdpbGwgYmUgYXBwbGllZCB1c2luZyB0aGUgc3RhbmRhcmQgc2xhc2hpbmcgbWVjaGFuaWNzLCByZXNwZWN0aW5nIHRoZYBjb25maWd1cmVkIGBTbGFzaERlZmVyRHVyYXRpb25gLgAsVGhpcyBtZWFuczpRAS0gSWYgdGhlIHZhbGlkYXRvciB3YXMgYWxyZWFkeSBzbGFzaGVkIGJ5IGEgaGlnaGVyIHBlcmNlbnRhZ2UgZm9yIHRoZSBzYW1lIGVyYSwgdGhpc5wgIHNsYXNoIHdpbGwgaGF2ZSBubyBhZGRpdGlvbmFsIGVmZmVjdC5RAS0gSWYgdGhlIHZhbGlkYXRvciB3YXMgcHJldmlvdXNseSBzbGFzaGVkIGJ5IGEgbG93ZXIgcGVyY2VudGFnZSwgb25seSB0aGUgZGlmZmVyZW5jZUggIHdpbGwgYmUgYXBwbGllZC49AS0gVGhlIHNsYXNoIHdpbGwgYmUgZGVmZXJyZWQgYnkgYFNsYXNoRGVmZXJEdXJhdGlvbmAgZXJhcyBiZWZvcmUgYmVpbmcgZW5hY3RlZC4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMutAg4cGFsbGV0X3N0YWtpbmdEUmV3YXJkRGVzdGluYXRpb24EJEFjY291bnRJZAEEARQYU3Rha2VkAAAAFFN0YXNoAAEAKENvbnRyb2xsZXIAAgAcQWNjb3VudAQABAEkQWNjb3VudElkAAMAEE5vbmUABAAAuAg4cGFsbGV0X3N0YWtpbmc4VmFsaWRhdG9yUHJlZnMAAAgBKGNvbW1pc3Npb268ARxQZXJiaWxsAAEcYmxvY2tlZJgBEGJvb2wAALwAAAbAAMAMNHNwX2FyaXRobWV0aWMocGVyX3RoaW5ncxxQZXJiaWxsAAAEADgBDHUzMgAAxAAAAgAAyAw0c3BfYXJpdGhtZXRpYyhwZXJfdGhpbmdzHFBlcmNlbnQAAAQADAEIdTgAAMwAAAI4ANAQOHBhbGxldF9zdGFraW5nGHBhbGxldBhwYWxsZXQgQ29uZmlnT3AEBFQBpAEMEE5vb3AAAAAMU2V0BACkAQRUAAEAGFJlbW92ZQACAADUEDhwYWxsZXRfc3Rha2luZxhwYWxsZXQYcGFsbGV0IENvbmZpZ09wBARUATgBDBBOb29wAAAADFNldAQAOAEEVAABABhSZW1vdmUAAgAA2BA4cGFsbGV0X3N0YWtpbmcYcGFsbGV0GHBhbGxldCBDb25maWdPcAQEVAHIAQwQTm9vcAAAAAxTZXQEAMgBBFQAAQAYUmVtb3ZlAAIAANwQOHBhbGxldF9zdGFraW5nGHBhbGxldBhwYWxsZXQgQ29uZmlnT3AEBFQBwAEMEE5vb3AAAAAMU2V0BADAAQRUAAEAGFJlbW92ZQACAADgDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBBARTAAAEAKgBGFZlYzxUPgAA5AQYT3B0aW9uBARUAQQBCBBOb25lAAAAEFNvbWUEAAQAAAEAAOgEGE9wdGlvbgQEVAGkAQgQTm9uZQAAABBTb21lBACkAAABAADsBBhPcHRpb24EBFQB8AEIEE5vbmUAAAAQU29tZQQA8AAAAQAA8AxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAfQEUwAABAD4ARhWZWM8VD4AAPQIOHBhbGxldF9zdGFraW5nLFVubG9ja0NodW5rBBxCYWxhbmNlAaQACAEUdmFsdWWgARxCYWxhbmNlAAEMZXJhYAEgRXJhSW5kZXgAAPgAAAL0APwMOHBhbGxldF9zZXNzaW9uGHBhbGxldBBDYWxsBARUAAEIIHNldF9rZXlzCAEQa2V5cwEBARxUOjpLZXlzAAEUcHJvb2YYARxWZWM8dTg+AAAk5FNldHMgdGhlIHNlc3Npb24ga2V5KHMpIG9mIHRoZSBmdW5jdGlvbiBjYWxsZXIgdG8gYGtleXNgLh0BQWxsb3dzIGFuIGFjY291bnQgdG8gc2V0IGl0cyBzZXNzaW9uIGtleSBwcmlvciB0byBiZWNvbWluZyBhIHZhbGlkYXRvci7AVGhpcyBkb2Vzbid0IHRha2UgZWZmZWN0IHVudGlsIHRoZSBuZXh0IHNlc3Npb24uANBUaGUgZGlzcGF0Y2ggb3JpZ2luIG9mIHRoaXMgZnVuY3Rpb24gbXVzdCBiZSBzaWduZWQuADQjIyBDb21wbGV4aXR5WQEtIGBPKDEpYC4gQWN0dWFsIGNvc3QgZGVwZW5kcyBvbiB0aGUgbnVtYmVyIG9mIGxlbmd0aCBvZiBgVDo6S2V5czo6a2V5X2lkcygpYCB3aGljaCBpcyAgIGZpeGVkLihwdXJnZV9rZXlzAAEwyFJlbW92ZXMgYW55IHNlc3Npb24ga2V5KHMpIG9mIHRoZSBmdW5jdGlvbiBjYWxsZXIuAMBUaGlzIGRvZXNuJ3QgdGFrZSBlZmZlY3QgdW50aWwgdGhlIG5leHQgc2Vzc2lvbi4AVQFUaGUgZGlzcGF0Y2ggb3JpZ2luIG9mIHRoaXMgZnVuY3Rpb24gbXVzdCBiZSBTaWduZWQgYW5kIHRoZSBhY2NvdW50IG11c3QgYmUgZWl0aGVyIGJlXQFjb252ZXJ0aWJsZSB0byBhIHZhbGlkYXRvciBJRCB1c2luZyB0aGUgY2hhaW4ncyB0eXBpY2FsIGFkZHJlc3Npbmcgc3lzdGVtICh0aGlzIHVzdWFsbHlRAW1lYW5zIGJlaW5nIGEgY29udHJvbGxlciBhY2NvdW50KSBvciBkaXJlY3RseSBjb252ZXJ0aWJsZSBpbnRvIGEgdmFsaWRhdG9yIElEICh3aGljaJR1c3VhbGx5IG1lYW5zIGJlaW5nIGEgc3Rhc2ggYWNjb3VudCkuADQjIyBDb21wbGV4aXR5PQEtIGBPKDEpYCBpbiBudW1iZXIgb2Yga2V5IHR5cGVzLiBBY3R1YWwgY29zdCBkZXBlbmRzIG9uIHRoZSBudW1iZXIgb2YgbGVuZ3RoIG9mmCAgYFQ6OktleXM6OmtleV9pZHMoKWAgd2hpY2ggaXMgZml4ZWQuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLgEBCEBwb2xrYWRvdF9ydW50aW1lLFNlc3Npb25LZXlzAAAYARxncmFuZHBhBQEB0DxHcmFuZHBhIGFzICRjcmF0ZTo6Qm91bmRUb1J1bnRpbWVBcHBQdWJsaWM+OjpQdWJsaWMAARBiYWJldAHEPEJhYmUgYXMgJGNyYXRlOjpCb3VuZFRvUnVudGltZUFwcFB1YmxpYz46OlB1YmxpYwABOHBhcmFfdmFsaWRhdG9yCQEB4DxJbml0aWFsaXplciBhcyAkY3JhdGU6OkJvdW5kVG9SdW50aW1lQXBwUHVibGljPjo6UHVibGljAAE8cGFyYV9hc3NpZ25tZW50DQEB8DxQYXJhU2Vzc2lvbkluZm8gYXMgJGNyYXRlOjpCb3VuZFRvUnVudGltZUFwcFB1YmxpYz46OlB1YmxpYwABTGF1dGhvcml0eV9kaXNjb3ZlcnkRAQH8PEF1dGhvcml0eURpc2NvdmVyeSBhcyAkY3JhdGU6OkJvdW5kVG9SdW50aW1lQXBwUHVibGljPjo6UHVibGljAAEUYmVlZnkVAQHIPEJlZWZ5IGFzICRjcmF0ZTo6Qm91bmRUb1J1bnRpbWVBcHBQdWJsaWM+OjpQdWJsaWMAAAUBDFBzcF9jb25zZW5zdXNfZ3JhbmRwYQxhcHAYUHVibGljAAAEAAgBPGVkMjU1MTk6OlB1YmxpYwAACQEQTHBvbGthZG90X3ByaW1pdGl2ZXMIdjk0dmFsaWRhdG9yX2FwcBhQdWJsaWMAAAQACAE8c3IyNTUxOTo6UHVibGljAAANARBMcG9sa2Fkb3RfcHJpbWl0aXZlcwh2OThhc3NpZ25tZW50X2FwcBhQdWJsaWMAAAQACAE8c3IyNTUxOTo6UHVibGljAAARAQxYc3BfYXV0aG9yaXR5X2Rpc2NvdmVyeQxhcHAYUHVibGljAAAEAAgBPHNyMjU1MTk6OlB1YmxpYwAAFQEMSHNwX2NvbnNlbnN1c19iZWVmeTBlY2RzYV9jcnlwdG8YUHVibGljAAAEABkBATRlY2RzYTo6UHVibGljAAAZAQAAAyEAAAAMAB0BDDhwYWxsZXRfZ3JhbmRwYRhwYWxsZXQQQ2FsbAQEVAABDExyZXBvcnRfZXF1aXZvY2F0aW9uCAFIZXF1aXZvY2F0aW9uX3Byb29mIQEByEJveDxFcXVpdm9jYXRpb25Qcm9vZjxUOjpIYXNoLCBCbG9ja051bWJlckZvcjxUPj4+AAE8a2V5X293bmVyX3Byb29mfAFAVDo6S2V5T3duZXJQcm9vZgAAEAkBUmVwb3J0IHZvdGVyIGVxdWl2b2NhdGlvbi9taXNiZWhhdmlvci4gVGhpcyBtZXRob2Qgd2lsbCB2ZXJpZnkgdGhl9GVxdWl2b2NhdGlvbiBwcm9vZiBhbmQgdmFsaWRhdGUgdGhlIGdpdmVuIGtleSBvd25lcnNoaXAgcHJvb2b4YWdhaW5zdCB0aGUgZXh0cmFjdGVkIG9mZmVuZGVyLiBJZiBib3RoIGFyZSB2YWxpZCwgdGhlIG9mZmVuY2VEd2lsbCBiZSByZXBvcnRlZC5wcmVwb3J0X2VxdWl2b2NhdGlvbl91bnNpZ25lZAgBSGVxdWl2b2NhdGlvbl9wcm9vZiEBAchCb3g8RXF1aXZvY2F0aW9uUHJvb2Y8VDo6SGFzaCwgQmxvY2tOdW1iZXJGb3I8VD4+PgABPGtleV9vd25lcl9wcm9vZnwBQFQ6OktleU93bmVyUHJvb2YAASQJAVJlcG9ydCB2b3RlciBlcXVpdm9jYXRpb24vbWlzYmVoYXZpb3IuIFRoaXMgbWV0aG9kIHdpbGwgdmVyaWZ5IHRoZfRlcXVpdm9jYXRpb24gcHJvb2YgYW5kIHZhbGlkYXRlIHRoZSBnaXZlbiBrZXkgb3duZXJzaGlwIHByb29m+GFnYWluc3QgdGhlIGV4dHJhY3RlZCBvZmZlbmRlci4gSWYgYm90aCBhcmUgdmFsaWQsIHRoZSBvZmZlbmNlRHdpbGwgYmUgcmVwb3J0ZWQuAA0BVGhpcyBleHRyaW5zaWMgbXVzdCBiZSBjYWxsZWQgdW5zaWduZWQgYW5kIGl0IGlzIGV4cGVjdGVkIHRoYXQgb25seRUBYmxvY2sgYXV0aG9ycyB3aWxsIGNhbGwgaXQgKHZhbGlkYXRlZCBpbiBgVmFsaWRhdGVVbnNpZ25lZGApLCBhcyBzdWNoFQFpZiB0aGUgYmxvY2sgYXV0aG9yIGlzIGRlZmluZWQgaXQgd2lsbCBiZSBkZWZpbmVkIGFzIHRoZSBlcXVpdm9jYXRpb24kcmVwb3J0ZXIuMG5vdGVfc3RhbGxlZAgBFGRlbGF5OAFEQmxvY2tOdW1iZXJGb3I8VD4AAWxiZXN0X2ZpbmFsaXplZF9ibG9ja19udW1iZXI4AURCbG9ja051bWJlckZvcjxUPgACMD0BTm90ZSB0aGF0IHRoZSBjdXJyZW50IGF1dGhvcml0eSBzZXQgb2YgdGhlIEdSQU5EUEEgZmluYWxpdHkgZ2FkZ2V0IGhhcyBzdGFsbGVkLgBhAVRoaXMgd2lsbCB0cmlnZ2VyIGEgZm9yY2VkIGF1dGhvcml0eSBzZXQgY2hhbmdlIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIG5leHQgc2Vzc2lvbiwgdG9hAWJlIGVuYWN0ZWQgYGRlbGF5YCBibG9ja3MgYWZ0ZXIgdGhhdC4gVGhlIGBkZWxheWAgc2hvdWxkIGJlIGhpZ2ggZW5vdWdoIHRvIHNhZmVseSBhc3N1bWVJAXRoYXQgdGhlIGJsb2NrIHNpZ25hbGxpbmcgdGhlIGZvcmNlZCBjaGFuZ2Ugd2lsbCBub3QgYmUgcmUtb3JnZWQgZS5nLiAxMDAwIGJsb2Nrcy5dAVRoZSBibG9jayBwcm9kdWN0aW9uIHJhdGUgKHdoaWNoIG1heSBiZSBzbG93ZWQgZG93biBiZWNhdXNlIG9mIGZpbmFsaXR5IGxhZ2dpbmcpIHNob3VsZFEBYmUgdGFrZW4gaW50byBhY2NvdW50IHdoZW4gY2hvb3NpbmcgdGhlIGBkZWxheWAuIFRoZSBHUkFORFBBIHZvdGVycyBiYXNlZCBvbiB0aGUgbmV3VQFhdXRob3JpdHkgd2lsbCBzdGFydCB2b3Rpbmcgb24gdG9wIG9mIGBiZXN0X2ZpbmFsaXplZF9ibG9ja19udW1iZXJgIGZvciBuZXcgZmluYWxpemVkTQFibG9ja3MuIGBiZXN0X2ZpbmFsaXplZF9ibG9ja19udW1iZXJgIHNob3VsZCBiZSB0aGUgaGlnaGVzdCBvZiB0aGUgbGF0ZXN0IGZpbmFsaXplZMRibG9jayBvZiBhbGwgdmFsaWRhdG9ycyBvZiB0aGUgbmV3IGF1dGhvcml0eSBzZXQuAFhPbmx5IGNhbGxhYmxlIGJ5IHJvb3QuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLiEBCFBzcF9jb25zZW5zdXNfZ3JhbmRwYURFcXVpdm9jYXRpb25Qcm9vZggESAE8BE4BOAAIARhzZXRfaWQoARRTZXRJZAABMGVxdWl2b2NhdGlvbiUBAUhFcXVpdm9jYXRpb248SCwgTj4AACUBCFBzcF9jb25zZW5zdXNfZ3JhbmRwYTBFcXVpdm9jYXRpb24IBEgBPAROATgBCBxQcmV2b3RlBAApAQGJAWZpbmFsaXR5X2dyYW5kcGE6OkVxdWl2b2NhdGlvbjxBdXRob3JpdHlJZCwgZmluYWxpdHlfZ3JhbmRwYTo6UHJldm90ZTwKSCwgTj4sIEF1dGhvcml0eVNpZ25hdHVyZSw+AAAAJFByZWNvbW1pdAQAPQEBkQFmaW5hbGl0eV9ncmFuZHBhOjpFcXVpdm9jYXRpb248QXV0aG9yaXR5SWQsIGZpbmFsaXR5X2dyYW5kcGE6OlByZWNvbW1pdAo8SCwgTj4sIEF1dGhvcml0eVNpZ25hdHVyZSw+AAEAACkBCEBmaW5hbGl0eV9ncmFuZHBhMEVxdWl2b2NhdGlvbgwISWQBBQEEVgEtAQRTATEBABABMHJvdW5kX251bWJlcigBDHU2NAABIGlkZW50aXR5BQEBCElkAAEUZmlyc3Q5AQEYKFYsIFMpAAEYc2Vjb25kOQEBGChWLCBTKQAALQEIQGZpbmFsaXR5X2dyYW5kcGEcUHJldm90ZQgESAE8BE4BOAAIASx0YXJnZXRfaGFzaDwBBEgAATR0YXJnZXRfbnVtYmVyOAEETgAAMQEMUHNwX2NvbnNlbnN1c19ncmFuZHBhDGFwcCRTaWduYXR1cmUAAAQANQEBSGVkMjU1MTk6OlNpZ25hdHVyZQAANQEAAANAAAAADAA5AQAABAgtATEBAD0BCEBmaW5hbGl0eV9ncmFuZHBhMEVxdWl2b2NhdGlvbgwISWQBBQEEVgFBAQRTATEBABABMHJvdW5kX251bWJlcigBDHU2NAABIGlkZW50aXR5BQEBCElkAAEUZmlyc3RFAQEYKFYsIFMpAAEYc2Vjb25kRQEBGChWLCBTKQAAQQEIQGZpbmFsaXR5X2dyYW5kcGEkUHJlY29tbWl0CARIATwETgE4AAgBLHRhcmdldF9oYXNoPAEESAABNHRhcmdldF9udW1iZXI4AQROAABFAQAABAhBATEBAEkBDDxwYWxsZXRfdHJlYXN1cnkYcGFsbGV0EENhbGwIBFQABEkAARgsc3BlbmRfbG9jYWwIARhhbW91bnSgATxCYWxhbmNlT2Y8VCwgST4AASxiZW5lZmljaWFyeQABUEFjY291bnRJZExvb2t1cE9mPFQ+AANEuFByb3Bvc2UgYW5kIGFwcHJvdmUgYSBzcGVuZCBvZiB0cmVhc3VyeSBmdW5kcy4ASCMjIERpc3BhdGNoIE9yaWdpbgBFAU11c3QgYmUgW2BDb25maWc6OlNwZW5kT3JpZ2luYF0gd2l0aCB0aGUgYFN1Y2Nlc3NgIHZhbHVlIGJlaW5nIGF0IGxlYXN0IGBhbW91bnRgLgAsIyMjIERldGFpbHNFAU5PVEU6IEZvciByZWNvcmQta2VlcGluZyBwdXJwb3NlcywgdGhlIHByb3Bvc2VyIGlzIGRlZW1lZCB0byBiZSBlcXVpdmFsZW50IHRvIHRoZTBiZW5lZmljaWFyeS4AOCMjIyBQYXJhbWV0ZXJzQQEtIGBhbW91bnRgOiBUaGUgYW1vdW50IHRvIGJlIHRyYW5zZmVycmVkIGZyb20gdGhlIHRyZWFzdXJ5IHRvIHRoZSBgYmVuZWZpY2lhcnlgLugtIGBiZW5lZmljaWFyeWA6IFRoZSBkZXN0aW5hdGlvbiBhY2NvdW50IGZvciB0aGUgdHJhbnNmZXIuACQjIyBFdmVudHMAtEVtaXRzIFtgRXZlbnQ6OlNwZW5kQXBwcm92ZWRgXSBpZiBzdWNjZXNzZnVsLjxyZW1vdmVfYXBwcm92YWwEASxwcm9wb3NhbF9pZGABNFByb3Bvc2FsSW5kZXgABFQtAUZvcmNlIGEgcHJldmlvdXNseSBhcHByb3ZlZCBwcm9wb3NhbCB0byBiZSByZW1vdmVkIGZyb20gdGhlIGFwcHJvdmFsIHF1ZXVlLgBIIyMgRGlzcGF0Y2ggT3JpZ2luAIRNdXN0IGJlIFtgQ29uZmlnOjpSZWplY3RPcmlnaW5gXS4AKCMjIERldGFpbHMAwFRoZSBvcmlnaW5hbCBkZXBvc2l0IHdpbGwgbm8gbG9uZ2VyIGJlIHJldHVybmVkLgA4IyMjIFBhcmFtZXRlcnOgLSBgcHJvcG9zYWxfaWRgOiBUaGUgaW5kZXggb2YgYSBwcm9wb3NhbAA4IyMjIENvbXBsZXhpdHmsLSBPKEEpIHdoZXJlIGBBYCBpcyB0aGUgbnVtYmVyIG9mIGFwcHJvdmFscwAoIyMjIEVycm9yc0UBLSBbYEVycm9yOjpQcm9wb3NhbE5vdEFwcHJvdmVkYF06IFRoZSBgcHJvcG9zYWxfaWRgIHN1cHBsaWVkIHdhcyBub3QgZm91bmQgaW4gdGhlUQEgIGFwcHJvdmFsIHF1ZXVlLCBpLmUuLCB0aGUgcHJvcG9zYWwgaGFzIG5vdCBiZWVuIGFwcHJvdmVkLiBUaGlzIGNvdWxkIGFsc28gbWVhbiB0aGVZASAgcHJvcG9zYWwgZG9lcyBub3QgZXhpc3QgYWx0b2dldGhlciwgdGh1cyB0aGVyZSBpcyBubyB3YXkgaXQgd291bGQgaGF2ZSBiZWVuIGFwcHJvdmVkVCAgaW4gdGhlIGZpcnN0IHBsYWNlLhRzcGVuZBABKGFzc2V0X2tpbmRNAQFEQm94PFQ6OkFzc2V0S2luZD4AARhhbW91bnSgAVBBc3NldEJhbGFuY2VPZjxULCBJPgABLGJlbmVmaWNpYXJ54QEBeEJveDxCZW5lZmljaWFyeUxvb2t1cE9mPFQsIEk+PgABKHZhbGlkX2Zyb23lAQFwT3B0aW9uPEJsb2NrTnVtYmVyRm9yPFQsIEk+PgAFaLhQcm9wb3NlIGFuZCBhcHByb3ZlIGEgc3BlbmQgb2YgdHJlYXN1cnkgZnVuZHMuAEgjIyBEaXNwYXRjaCBPcmlnaW4AHQFNdXN0IGJlIFtgQ29uZmlnOjpTcGVuZE9yaWdpbmBdIHdpdGggdGhlIGBTdWNjZXNzYCB2YWx1ZSBiZWluZyBhdCBsZWFzdFUBYGFtb3VudGAgb2YgYGFzc2V0X2tpbmRgIGluIHRoZSBuYXRpdmUgYXNzZXQuIFRoZSBhbW91bnQgb2YgYGFzc2V0X2tpbmRgIGlzIGNvbnZlcnRlZNRmb3IgYXNzZXJ0aW9uIHVzaW5nIHRoZSBbYENvbmZpZzo6QmFsYW5jZUNvbnZlcnRlcmBdLgAoIyMgRGV0YWlscwBJAUNyZWF0ZSBhbiBhcHByb3ZlZCBzcGVuZCBmb3IgdHJhbnNmZXJyaW5nIGEgc3BlY2lmaWMgYGFtb3VudGAgb2YgYGFzc2V0X2tpbmRgIHRvIGFhAWRlc2lnbmF0ZWQgYmVuZWZpY2lhcnkuIFRoZSBzcGVuZCBtdXN0IGJlIGNsYWltZWQgdXNpbmcgdGhlIGBwYXlvdXRgIGRpc3BhdGNoYWJsZSB3aXRoaW50dGhlIFtgQ29uZmlnOjpQYXlvdXRQZXJpb2RgXS4AOCMjIyBQYXJhbWV0ZXJzFQEtIGBhc3NldF9raW5kYDogQW4gaW5kaWNhdG9yIG9mIHRoZSBzcGVjaWZpYyBhc3NldCBjbGFzcyB0byBiZSBzcGVudC5BAS0gYGFtb3VudGA6IFRoZSBhbW91bnQgdG8gYmUgdHJhbnNmZXJyZWQgZnJvbSB0aGUgdHJlYXN1cnkgdG8gdGhlIGBiZW5lZmljaWFyeWAuuC0gYGJlbmVmaWNpYXJ5YDogVGhlIGJlbmVmaWNpYXJ5IG9mIHRoZSBzcGVuZC5VAS0gYHZhbGlkX2Zyb21gOiBUaGUgYmxvY2sgbnVtYmVyIGZyb20gd2hpY2ggdGhlIHNwZW5kIGNhbiBiZSBjbGFpbWVkLiBJdCBjYW4gcmVmZXIgdG8ZASAgdGhlIHBhc3QgaWYgdGhlIHJlc3VsdGluZyBzcGVuZCBoYXMgbm90IHlldCBleHBpcmVkIGFjY29yZGluZyB0byB0aGVFASAgW2BDb25maWc6OlBheW91dFBlcmlvZGBdLiBJZiBgTm9uZWAsIHRoZSBzcGVuZCBjYW4gYmUgY2xhaW1lZCBpbW1lZGlhdGVseSBhZnRlciwgIGFwcHJvdmFsLgAkIyMgRXZlbnRzAMhFbWl0cyBbYEV2ZW50OjpBc3NldFNwZW5kQXBwcm92ZWRgXSBpZiBzdWNjZXNzZnVsLhhwYXlvdXQEARRpbmRleDgBKFNwZW5kSW5kZXgABkw4Q2xhaW0gYSBzcGVuZC4ASCMjIERpc3BhdGNoIE9yaWdpbgA4TXVzdCBiZSBzaWduZWQAKCMjIERldGFpbHMAVQFTcGVuZHMgbXVzdCBiZSBjbGFpbWVkIHdpdGhpbiBzb21lIHRlbXBvcmFsIGJvdW5kcy4gQSBzcGVuZCBtYXkgYmUgY2xhaW1lZCB3aXRoaW4gb25l1FtgQ29uZmlnOjpQYXlvdXRQZXJpb2RgXSBmcm9tIHRoZSBgdmFsaWRfZnJvbWAgYmxvY2suVQFJbiBjYXNlIG9mIGEgcGF5b3V0IGZhaWx1cmUsIHRoZSBzcGVuZCBzdGF0dXMgbXVzdCBiZSB1cGRhdGVkIHdpdGggdGhlIGBjaGVja19zdGF0dXNg3GRpc3BhdGNoYWJsZSBiZWZvcmUgcmV0cnlpbmcgd2l0aCB0aGUgY3VycmVudCBmdW5jdGlvbi4AOCMjIyBQYXJhbWV0ZXJzbC0gYGluZGV4YDogVGhlIHNwZW5kIGluZGV4LgAkIyMgRXZlbnRzAJBFbWl0cyBbYEV2ZW50OjpQYWlkYF0gaWYgc3VjY2Vzc2Z1bC4wY2hlY2tfc3RhdHVzBAEUaW5kZXg4AShTcGVuZEluZGV4AAdMKQFDaGVjayB0aGUgc3RhdHVzIG9mIHRoZSBzcGVuZCBhbmQgcmVtb3ZlIGl0IGZyb20gdGhlIHN0b3JhZ2UgaWYgcHJvY2Vzc2VkLgBIIyMgRGlzcGF0Y2ggT3JpZ2luADxNdXN0IGJlIHNpZ25lZC4AKCMjIERldGFpbHMAAQFUaGUgc3RhdHVzIGNoZWNrIGlzIGEgcHJlcmVxdWlzaXRlIGZvciByZXRyeWluZyBhIGZhaWxlZCBwYXlvdXQuSQFJZiBhIHNwZW5kIGhhcyBlaXRoZXIgc3VjY2VlZGVkIG9yIGV4cGlyZWQsIGl0IGlzIHJlbW92ZWQgZnJvbSB0aGUgc3RvcmFnZSBieSB0aGlz7GZ1bmN0aW9uLiBJbiBzdWNoIGluc3RhbmNlcywgdHJhbnNhY3Rpb24gZmVlcyBhcmUgcmVmdW5kZWQuADgjIyMgUGFyYW1ldGVyc2wtIGBpbmRleGA6IFRoZSBzcGVuZCBpbmRleC4AJCMjIEV2ZW50cwD4RW1pdHMgW2BFdmVudDo6UGF5bWVudEZhaWxlZGBdIGlmIHRoZSBzcGVuZCBwYXlvdXQgaGFzIGZhaWxlZC4BAUVtaXRzIFtgRXZlbnQ6OlNwZW5kUHJvY2Vzc2VkYF0gaWYgdGhlIHNwZW5kIHBheW91dCBoYXMgc3VjY2VlZC4odm9pZF9zcGVuZAQBFGluZGV4OAEoU3BlbmRJbmRleAAIQHxWb2lkIHByZXZpb3VzbHkgYXBwcm92ZWQgc3BlbmQuAEgjIyBEaXNwYXRjaCBPcmlnaW4AhE11c3QgYmUgW2BDb25maWc6OlJlamVjdE9yaWdpbmBdLgAoIyMgRGV0YWlscwAdAUEgc3BlbmQgdm9pZCBpcyBvbmx5IHBvc3NpYmxlIGlmIHRoZSBwYXlvdXQgaGFzIG5vdCBiZWVuIGF0dGVtcHRlZCB5ZXQuADgjIyMgUGFyYW1ldGVyc2wtIGBpbmRleGA6IFRoZSBzcGVuZCBpbmRleC4AJCMjIEV2ZW50cwDARW1pdHMgW2BFdmVudDo6QXNzZXRTcGVuZFZvaWRlZGBdIGlmIHN1Y2Nlc3NmdWwuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLk0BDFxwb2xrYWRvdF9ydW50aW1lX2NvbW1vbhRpbXBsc1xWZXJzaW9uZWRMb2NhdGFibGVBc3NldAABDAhWMwgBIGxvY2F0aW9uUQEBRHhjbTo6djM6OkxvY2F0aW9uAAEgYXNzZXRfaWRtAQFAeGNtOjp2Mzo6QXNzZXRJZAADAAhWNAgBIGxvY2F0aW9ucQEBRHhjbTo6djQ6OkxvY2F0aW9uAAEgYXNzZXRfaWSlAQFAeGNtOjp2NDo6QXNzZXRJZAAEAAhWNQgBIGxvY2F0aW9uqQEBRHhjbTo6djU6OkxvY2F0aW9uAAEgYXNzZXRfaWTdAQFAeGNtOjp2NTo6QXNzZXRJZAAFAABRARAsc3RhZ2luZ194Y20IdjM0bXVsdGlsb2NhdGlvbjRNdWx0aUxvY2F0aW9uAAAIARxwYXJlbnRzDAEIdTgAASBpbnRlcmlvclUBASRKdW5jdGlvbnMAAFUBEAx4Y20IdjMkanVuY3Rpb25zJEp1bmN0aW9ucwABJBBIZXJlAAAACFgxBABZAQEgSnVuY3Rpb24AAQAIWDIIAFkBASBKdW5jdGlvbgAAWQEBIEp1bmN0aW9uAAIACFgzDABZAQEgSnVuY3Rpb24AAFkBASBKdW5jdGlvbgAAWQEBIEp1bmN0aW9uAAMACFg0EABZAQEgSnVuY3Rpb24AAFkBASBKdW5jdGlvbgAAWQEBIEp1bmN0aW9uAABZAQEgSnVuY3Rpb24ABAAIWDUUAFkBASBKdW5jdGlvbgAAWQEBIEp1bmN0aW9uAABZAQEgSnVuY3Rpb24AAFkBASBKdW5jdGlvbgAAWQEBIEp1bmN0aW9uAAUACFg2GABZAQEgSnVuY3Rpb24AAFkBASBKdW5jdGlvbgAAWQEBIEp1bmN0aW9uAABZAQEgSnVuY3Rpb24AAFkBASBKdW5jdGlvbgAAWQEBIEp1bmN0aW9uAAYACFg3HABZAQEgSnVuY3Rpb24AAFkBASBKdW5jdGlvbgAAWQEBIEp1bmN0aW9uAABZAQEgSnVuY3Rpb24AAFkBASBKdW5jdGlvbgAAWQEBIEp1bmN0aW9uAABZAQEgSnVuY3Rpb24ABwAIWDggAFkBASBKdW5jdGlvbgAAWQEBIEp1bmN0aW9uAABZAQEgSnVuY3Rpb24AAFkBASBKdW5jdGlvbgAAWQEBIEp1bmN0aW9uAABZAQEgSnVuY3Rpb24AAFkBASBKdW5jdGlvbgAAWQEBIEp1bmN0aW9uAAgAAFkBEAx4Y20IdjMganVuY3Rpb24gSnVuY3Rpb24AASgkUGFyYWNoYWluBABgAQx1MzIAAAAsQWNjb3VudElkMzIIARxuZXR3b3JrXQEBRE9wdGlvbjxOZXR3b3JrSWQ+AAEIaWQIASBbdTg7IDMyXQABADhBY2NvdW50SW5kZXg2NAgBHG5ldHdvcmtdAQFET3B0aW9uPE5ldHdvcmtJZD4AARRpbmRleJABDHU2NAACADBBY2NvdW50S2V5MjAIARxuZXR3b3JrXQEBRE9wdGlvbjxOZXR3b3JrSWQ+AAEMa2V5HAEgW3U4OyAyMF0AAwA4UGFsbGV0SW5zdGFuY2UEAAwBCHU4AAQAMEdlbmVyYWxJbmRleAQAoAEQdTEyOAAFAChHZW5lcmFsS2V5CAEYbGVuZ3RoDAEIdTgAARBkYXRhCAEgW3U4OyAzMl0ABgAkT25seUNoaWxkAAcAJFBsdXJhbGl0eQgBCGlkZQEBGEJvZHlJZAABEHBhcnRpAQEgQm9keVBhcnQACAA8R2xvYmFsQ29uc2Vuc3VzBABhAQEkTmV0d29ya0lkAAkAAF0BBBhPcHRpb24EBFQBYQEBCBBOb25lAAAAEFNvbWUEAGEBAAABAABhARAMeGNtCHYzIGp1bmN0aW9uJE5ldHdvcmtJZAABLCRCeUdlbmVzaXMEAAgBIFt1ODsgMzJdAAAAGEJ5Rm9yawgBMGJsb2NrX251bWJlcigBDHU2NAABKGJsb2NrX2hhc2gIASBbdTg7IDMyXQABACBQb2xrYWRvdAACABhLdXNhbWEAAwAcV2VzdGVuZAAEABhSb2NvY28ABQAYV29jb2NvAAYAIEV0aGVyZXVtBAEgY2hhaW5faWSQAQx1NjQABwAsQml0Y29pbkNvcmUACAAsQml0Y29pbkNhc2gACQBAUG9sa2Fkb3RCdWxsZXRpbgAKAABlARAMeGNtCHYzIGp1bmN0aW9uGEJvZHlJZAABKBBVbml0AAAAHE1vbmlrZXIEAHABHFt1ODsgNF0AAQAUSW5kZXgEAGABDHUzMgACACRFeGVjdXRpdmUAAwAkVGVjaG5pY2FsAAQALExlZ2lzbGF0aXZlAAUAIEp1ZGljaWFsAAYAHERlZmVuc2UABwA4QWRtaW5pc3RyYXRpb24ACAAgVHJlYXN1cnkACQAAaQEQDHhjbQh2MyBqdW5jdGlvbiBCb2R5UGFydAABFBRWb2ljZQAAABxNZW1iZXJzBAEUY291bnRgAQx1MzIAAQAgRnJhY3Rpb24IAQxub21gAQx1MzIAARRkZW5vbWABDHUzMgACAERBdExlYXN0UHJvcG9ydGlvbggBDG5vbWABDHUzMgABFGRlbm9tYAEMdTMyAAMASE1vcmVUaGFuUHJvcG9ydGlvbggBDG5vbWABDHUzMgABFGRlbm9tYAEMdTMyAAQAAG0BEAx4Y20IdjMobXVsdGlhc3NldBxBc3NldElkAAEIIENvbmNyZXRlBABRAQE0TXVsdGlMb2NhdGlvbgAAACBBYnN0cmFjdAQACAEgW3U4OyAzMl0AAQAAcQEQLHN0YWdpbmdfeGNtCHY0IGxvY2F0aW9uIExvY2F0aW9uAAAIARxwYXJlbnRzDAEIdTgAASBpbnRlcmlvcnUBASRKdW5jdGlvbnMAAHUBECxzdGFnaW5nX3hjbQh2NCRqdW5jdGlvbnMkSnVuY3Rpb25zAAEkEEhlcmUAAAAIWDEEAHkBAUhBcmM8W0p1bmN0aW9uOyAxXT4AAQAIWDIEAIkBAUhBcmM8W0p1bmN0aW9uOyAyXT4AAgAIWDMEAI0BAUhBcmM8W0p1bmN0aW9uOyAzXT4AAwAIWDQEAJEBAUhBcmM8W0p1bmN0aW9uOyA0XT4ABAAIWDUEAJUBAUhBcmM8W0p1bmN0aW9uOyA1XT4ABQAIWDYEAJkBAUhBcmM8W0p1bmN0aW9uOyA2XT4ABgAIWDcEAJ0BAUhBcmM8W0p1bmN0aW9uOyA3XT4ABwAIWDgEAKEBAUhBcmM8W0p1bmN0aW9uOyA4XT4ACAAAeQEAAAMBAAAAfQEAfQEQLHN0YWdpbmdfeGNtCHY0IGp1bmN0aW9uIEp1bmN0aW9uAAEoJFBhcmFjaGFpbgQAYAEMdTMyAAAALEFjY291bnRJZDMyCAEcbmV0d29ya4EBAURPcHRpb248TmV0d29ya0lkPgABCGlkCAEgW3U4OyAzMl0AAQA4QWNjb3VudEluZGV4NjQIARxuZXR3b3JrgQEBRE9wdGlvbjxOZXR3b3JrSWQ+AAEUaW5kZXiQAQx1NjQAAgAwQWNjb3VudEtleTIwCAEcbmV0d29ya4EBAURPcHRpb248TmV0d29ya0lkPgABDGtleRwBIFt1ODsgMjBdAAMAOFBhbGxldEluc3RhbmNlBAAMAQh1OAAEADBHZW5lcmFsSW5kZXgEAKABEHUxMjgABQAoR2VuZXJhbEtleQgBGGxlbmd0aAwBCHU4AAEQZGF0YQgBIFt1ODsgMzJdAAYAJE9ubHlDaGlsZAAHACRQbHVyYWxpdHkIAQhpZGUBARhCb2R5SWQAARBwYXJ0aQEBIEJvZHlQYXJ0AAgAPEdsb2JhbENvbnNlbnN1cwQAhQEBJE5ldHdvcmtJZAAJAACBAQQYT3B0aW9uBARUAYUBAQgQTm9uZQAAABBTb21lBACFAQAAAQAAhQEQLHN0YWdpbmdfeGNtCHY0IGp1bmN0aW9uJE5ldHdvcmtJZAABLCRCeUdlbmVzaXMEAAgBIFt1ODsgMzJdAAAAGEJ5Rm9yawgBMGJsb2NrX251bWJlcigBDHU2NAABKGJsb2NrX2hhc2gIASBbdTg7IDMyXQABACBQb2xrYWRvdAACABhLdXNhbWEAAwAcV2VzdGVuZAAEABhSb2NvY28ABQAYV29jb2NvAAYAIEV0aGVyZXVtBAEgY2hhaW5faWSQAQx1NjQABwAsQml0Y29pbkNvcmUACAAsQml0Y29pbkNhc2gACQBAUG9sa2Fkb3RCdWxsZXRpbgAKAACJAQAAAwIAAAB9AQCNAQAAAwMAAAB9AQCRAQAAAwQAAAB9AQCVAQAAAwUAAAB9AQCZAQAAAwYAAAB9AQCdAQAAAwcAAAB9AQChAQAAAwgAAAB9AQClARAsc3RhZ2luZ194Y20IdjQUYXNzZXQcQXNzZXRJZAAABABxAQEgTG9jYXRpb24AAKkBECxzdGFnaW5nX3hjbQh2NSBsb2NhdGlvbiBMb2NhdGlvbgAACAEccGFyZW50cwwBCHU4AAEgaW50ZXJpb3KtAQEkSnVuY3Rpb25zAACtARAsc3RhZ2luZ194Y20IdjUkanVuY3Rpb25zJEp1bmN0aW9ucwABJBBIZXJlAAAACFgxBACxAQFIQXJjPFtKdW5jdGlvbjsgMV0+AAEACFgyBADBAQFIQXJjPFtKdW5jdGlvbjsgMl0+AAIACFgzBADFAQFIQXJjPFtKdW5jdGlvbjsgM10+AAMACFg0BADJAQFIQXJjPFtKdW5jdGlvbjsgNF0+AAQACFg1BADNAQFIQXJjPFtKdW5jdGlvbjsgNV0+AAUACFg2BADRAQFIQXJjPFtKdW5jdGlvbjsgNl0+AAYACFg3BADVAQFIQXJjPFtKdW5jdGlvbjsgN10+AAcACFg4BADZAQFIQXJjPFtKdW5jdGlvbjsgOF0+AAgAALEBAAADAQAAALUBALUBECxzdGFnaW5nX3hjbQh2NSBqdW5jdGlvbiBKdW5jdGlvbgABKCRQYXJhY2hhaW4EAGABDHUzMgAAACxBY2NvdW50SWQzMggBHG5ldHdvcmu5AQFET3B0aW9uPE5ldHdvcmtJZD4AAQhpZAgBIFt1ODsgMzJdAAEAOEFjY291bnRJbmRleDY0CAEcbmV0d29ya7kBAURPcHRpb248TmV0d29ya0lkPgABFGluZGV4kAEMdTY0AAIAMEFjY291bnRLZXkyMAgBHG5ldHdvcmu5AQFET3B0aW9uPE5ldHdvcmtJZD4AAQxrZXkcASBbdTg7IDIwXQADADhQYWxsZXRJbnN0YW5jZQQADAEIdTgABAAwR2VuZXJhbEluZGV4BACgARB1MTI4AAUAKEdlbmVyYWxLZXkIARhsZW5ndGgMAQh1OAABEGRhdGEIASBbdTg7IDMyXQAGACRPbmx5Q2hpbGQABwAkUGx1cmFsaXR5CAEIaWRlAQEYQm9keUlkAAEQcGFydGkBASBCb2R5UGFydAAIADxHbG9iYWxDb25zZW5zdXMEAL0BASROZXR3b3JrSWQACQAAuQEEGE9wdGlvbgQEVAG9AQEIEE5vbmUAAAAQU29tZQQAvQEAAAEAAL0BECxzdGFnaW5nX3hjbQh2NSBqdW5jdGlvbiROZXR3b3JrSWQAASAkQnlHZW5lc2lzBAAIASBbdTg7IDMyXQAAABhCeUZvcmsIATBibG9ja19udW1iZXIoAQx1NjQAAShibG9ja19oYXNoCAEgW3U4OyAzMl0AAQAgUG9sa2Fkb3QAAgAYS3VzYW1hAAMAIEV0aGVyZXVtBAEgY2hhaW5faWSQAQx1NjQABwAsQml0Y29pbkNvcmUACAAsQml0Y29pbkNhc2gACQBAUG9sa2Fkb3RCdWxsZXRpbgAKAADBAQAAAwIAAAC1AQDFAQAAAwMAAAC1AQDJAQAAAwQAAAC1AQDNAQAAAwUAAAC1AQDRAQAAAwYAAAC1AQDVAQAAAwcAAAC1AQDZAQAAAwgAAAC1AQDdARAsc3RhZ2luZ194Y20IdjUUYXNzZXQcQXNzZXRJZAAABACpAQEgTG9jYXRpb24AAOEBCAx4Y21EVmVyc2lvbmVkTG9jYXRpb24AAQwIVjMEAFEBAUR2Mzo6TXVsdGlMb2NhdGlvbgADAAhWNAQAcQEBMHY0OjpMb2NhdGlvbgAEAAhWNQQAqQEBMHY1OjpMb2NhdGlvbgAFAADlAQQYT3B0aW9uBARUATgBCBBOb25lAAAAEFNvbWUEADgAAAEAAOkBDGBwYWxsZXRfY29udmljdGlvbl92b3RpbmcYcGFsbGV0EENhbGwIBFQABEkAARgQdm90ZQgBKHBvbGxfaW5kZXhgAURQb2xsSW5kZXhPZjxULCBJPgABEHZvdGXtAQFwQWNjb3VudFZvdGU8QmFsYW5jZU9mPFQsIEk+PgAAJBkBVm90ZSBpbiBhIHBvbGwuIElmIGB2b3RlLmlzX2F5ZSgpYCwgdGhlIHZvdGUgaXMgdG8gZW5hY3QgdGhlIHByb3Bvc2FsO7hvdGhlcndpc2UgaXQgaXMgYSB2b3RlIHRvIGtlZXAgdGhlIHN0YXR1cyBxdW8uAMhUaGUgZGlzcGF0Y2ggb3JpZ2luIG9mIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLgDILSBgcG9sbF9pbmRleGA6IFRoZSBpbmRleCBvZiB0aGUgcG9sbCB0byB2b3RlIGZvci6ELSBgdm90ZWA6IFRoZSB2b3RlIGNvbmZpZ3VyYXRpb24uABUBV2VpZ2h0OiBgTyhSKWAgd2hlcmUgUiBpcyB0aGUgbnVtYmVyIG9mIHBvbGxzIHRoZSB2b3RlciBoYXMgdm90ZWQgb24uIGRlbGVnYXRlEAEUY2xhc3P1AQE0Q2xhc3NPZjxULCBJPgABCHRvAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AAShjb252aWN0aW9u+QEBKENvbnZpY3Rpb24AARxiYWxhbmNlpAE8QmFsYW5jZU9mPFQsIEk+AAFcTQFEZWxlZ2F0ZSB0aGUgdm90aW5nIHBvd2VyICh3aXRoIHNvbWUgZ2l2ZW4gY29udmljdGlvbikgb2YgdGhlIHNlbmRpbmcgYWNjb3VudCBmb3IgYWhwYXJ0aWN1bGFyIGNsYXNzIG9mIHBvbGxzLgBVAVRoZSBiYWxhbmNlIGRlbGVnYXRlZCBpcyBsb2NrZWQgZm9yIGFzIGxvbmcgYXMgaXQncyBkZWxlZ2F0ZWQsIGFuZCB0aGVyZWFmdGVyIGZvciB0aGXIdGltZSBhcHByb3ByaWF0ZSBmb3IgdGhlIGNvbnZpY3Rpb24ncyBsb2NrIHBlcmlvZC4AXQFUaGUgZGlzcGF0Y2ggb3JpZ2luIG9mIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLCBhbmQgdGhlIHNpZ25pbmcgYWNjb3VudCBtdXN0IGVpdGhlcjp0ICAtIGJlIGRlbGVnYXRpbmcgYWxyZWFkeTsgb3JFASAgLSBoYXZlIG5vIHZvdGluZyBhY3Rpdml0eSAoaWYgdGhlcmUgaXMsIHRoZW4gaXQgd2lsbCBuZWVkIHRvIGJlIHJlbW92ZWQgdGhyb3VnaEwgICAgYHJlbW92ZV92b3RlYCkuAEUBLSBgdG9gOiBUaGUgYWNjb3VudCB3aG9zZSB2b3RpbmcgdGhlIGB0YXJnZXRgIGFjY291bnQncyB2b3RpbmcgcG93ZXIgd2lsbCBmb2xsb3cuXQEtIGBjbGFzc2A6IFRoZSBjbGFzcyBvZiBwb2xscyB0byBkZWxlZ2F0ZS4gVG8gZGVsZWdhdGUgbXVsdGlwbGUgY2xhc3NlcywgbXVsdGlwbGUgY2FsbHOAICB0byB0aGlzIGZ1bmN0aW9uIGFyZSByZXF1aXJlZC5VAS0gYGNvbnZpY3Rpb25gOiBUaGUgY29udmljdGlvbiB0aGF0IHdpbGwgYmUgYXR0YWNoZWQgdG8gdGhlIGRlbGVnYXRlZCB2b3Rlcy4gV2hlbiB0aGVBASAgYWNjb3VudCBpcyB1bmRlbGVnYXRlZCwgdGhlIGZ1bmRzIHdpbGwgYmUgbG9ja2VkIGZvciB0aGUgY29ycmVzcG9uZGluZyBwZXJpb2QuYQEtIGBiYWxhbmNlYDogVGhlIGFtb3VudCBvZiB0aGUgYWNjb3VudCdzIGJhbGFuY2UgdG8gYmUgdXNlZCBpbiBkZWxlZ2F0aW5nLiBUaGlzIG11c3Qgbm90tCAgYmUgbW9yZSB0aGFuIHRoZSBhY2NvdW50J3MgY3VycmVudCBiYWxhbmNlLgBIRW1pdHMgYERlbGVnYXRlZGAuACUBV2VpZ2h0OiBgTyhSKWAgd2hlcmUgUiBpcyB0aGUgbnVtYmVyIG9mIHBvbGxzIHRoZSB2b3RlciBkZWxlZ2F0aW5nIHRvIGhhc00BICB2b3RlZCBvbi4gV2VpZ2h0IGlzIGluaXRpYWxseSBjaGFyZ2VkIGFzIGlmIG1heGltdW0gdm90ZXMsIGJ1dCBpcyByZWZ1bmRlZCBsYXRlci4odW5kZWxlZ2F0ZQQBFGNsYXNz9QEBNENsYXNzT2Y8VCwgST4AAjhNAVVuZGVsZWdhdGUgdGhlIHZvdGluZyBwb3dlciBvZiB0aGUgc2VuZGluZyBhY2NvdW50IGZvciBhIHBhcnRpY3VsYXIgY2xhc3Mgb2YgcG9sbHMuAF0BVG9rZW5zIG1heSBiZSB1bmxvY2tlZCBmb2xsb3dpbmcgb25jZSBhbiBhbW91bnQgb2YgdGltZSBjb25zaXN0ZW50IHdpdGggdGhlIGxvY2sgcGVyaW9kCQFvZiB0aGUgY29udmljdGlvbiB3aXRoIHdoaWNoIHRoZSBkZWxlZ2F0aW9uIHdhcyBpc3N1ZWQgaGFzIHBhc3NlZC4ARQFUaGUgZGlzcGF0Y2ggb3JpZ2luIG9mIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfIGFuZCB0aGUgc2lnbmluZyBhY2NvdW50IG11c3QgYmVUY3VycmVudGx5IGRlbGVnYXRpbmcuAPAtIGBjbGFzc2A6IFRoZSBjbGFzcyBvZiBwb2xscyB0byByZW1vdmUgdGhlIGRlbGVnYXRpb24gZnJvbS4AUEVtaXRzIGBVbmRlbGVnYXRlZGAuACUBV2VpZ2h0OiBgTyhSKWAgd2hlcmUgUiBpcyB0aGUgbnVtYmVyIG9mIHBvbGxzIHRoZSB2b3RlciBkZWxlZ2F0aW5nIHRvIGhhc00BICB2b3RlZCBvbi4gV2VpZ2h0IGlzIGluaXRpYWxseSBjaGFyZ2VkIGFzIGlmIG1heGltdW0gdm90ZXMsIGJ1dCBpcyByZWZ1bmRlZCBsYXRlci4YdW5sb2NrCAEUY2xhc3P1AQE0Q2xhc3NPZjxULCBJPgABGHRhcmdldAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAMkXQFSZW1vdmUgdGhlIGxvY2sgY2F1c2VkIGJ5IHByaW9yIHZvdGluZy9kZWxlZ2F0aW5nIHdoaWNoIGhhcyBleHBpcmVkIHdpdGhpbiBhIHBhcnRpY3VsYXIYY2xhc3MuAMhUaGUgZGlzcGF0Y2ggb3JpZ2luIG9mIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLgCgLSBgY2xhc3NgOiBUaGUgY2xhc3Mgb2YgcG9sbHMgdG8gdW5sb2NrLrgtIGB0YXJnZXRgOiBUaGUgYWNjb3VudCB0byByZW1vdmUgdGhlIGxvY2sgb24uALxXZWlnaHQ6IGBPKFIpYCB3aXRoIFIgbnVtYmVyIG9mIHZvdGUgb2YgdGFyZ2V0LixyZW1vdmVfdm90ZQgBFGNsYXNz/QEBVE9wdGlvbjxDbGFzc09mPFQsIEk+PgABFGluZGV4OAFEUG9sbEluZGV4T2Y8VCwgST4ABHRkUmVtb3ZlIGEgdm90ZSBmb3IgYSBwb2xsLgAMSWY6cC0gdGhlIHBvbGwgd2FzIGNhbmNlbGxlZCwgb3JkLSB0aGUgcG9sbCBpcyBvbmdvaW5nLCBvcngtIHRoZSBwb2xsIGhhcyBlbmRlZCBzdWNoIHRoYXT8ICAtIHRoZSB2b3RlIG9mIHRoZSBhY2NvdW50IHdhcyBpbiBvcHBvc2l0aW9uIHRvIHRoZSByZXN1bHQ7IG9y1CAgLSB0aGVyZSB3YXMgbm8gY29udmljdGlvbiB0byB0aGUgYWNjb3VudCdzIHZvdGU7IG9yhCAgLSB0aGUgYWNjb3VudCBtYWRlIGEgc3BsaXQgdm90ZV0BLi4udGhlbiB0aGUgdm90ZSBpcyByZW1vdmVkIGNsZWFubHkgYW5kIGEgZm9sbG93aW5nIGNhbGwgdG8gYHVubG9ja2AgbWF5IHJlc3VsdCBpbiBtb3JlWGZ1bmRzIGJlaW5nIGF2YWlsYWJsZS4AkElmLCBob3dldmVyLCB0aGUgcG9sbCBoYXMgZW5kZWQgYW5kOuwtIGl0IGZpbmlzaGVkIGNvcnJlc3BvbmRpbmcgdG8gdGhlIHZvdGUgb2YgdGhlIGFjY291bnQsIGFuZNwtIHRoZSBhY2NvdW50IG1hZGUgYSBzdGFuZGFyZCB2b3RlIHdpdGggY29udmljdGlvbiwgYW5kvC0gdGhlIGxvY2sgcGVyaW9kIG9mIHRoZSBjb252aWN0aW9uIGlzIG5vdCBvdmVyWQEuLi50aGVuIHRoZSBsb2NrIHdpbGwgYmUgYWdncmVnYXRlZCBpbnRvIHRoZSBvdmVyYWxsIGFjY291bnQncyBsb2NrLCB3aGljaCBtYXkgaW52b2x2ZVkBKm92ZXJsb2NraW5nKiAod2hlcmUgdGhlIHR3byBsb2NrcyBhcmUgY29tYmluZWQgaW50byBhIHNpbmdsZSBsb2NrIHRoYXQgaXMgdGhlIG1heGltdW3kb2YgYm90aCB0aGUgYW1vdW50IGxvY2tlZCBhbmQgdGhlIHRpbWUgaXMgaXQgbG9ja2VkIGZvcikuAEkBVGhlIGRpc3BhdGNoIG9yaWdpbiBvZiB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXywgYW5kIHRoZSBzaWduZXIgbXVzdCBoYXZlIGEgdm90ZXByZWdpc3RlcmVkIGZvciBwb2xsIGBpbmRleGAuANwtIGBpbmRleGA6IFRoZSBpbmRleCBvZiBwb2xsIG9mIHRoZSB2b3RlIHRvIGJlIHJlbW92ZWQuVQEtIGBjbGFzc2A6IE9wdGlvbmFsIHBhcmFtZXRlciwgaWYgZ2l2ZW4gaXQgaW5kaWNhdGVzIHRoZSBjbGFzcyBvZiB0aGUgcG9sbC4gRm9yIHBvbGxz8CAgd2hpY2ggaGF2ZSBmaW5pc2hlZCBvciBhcmUgY2FuY2VsbGVkLCB0aGlzIG11c3QgYmUgYFNvbWVgLgBFAVdlaWdodDogYE8oUiArIGxvZyBSKWAgd2hlcmUgUiBpcyB0aGUgbnVtYmVyIG9mIHBvbGxzIHRoYXQgYHRhcmdldGAgaGFzIHZvdGVkIG9uLtggIFdlaWdodCBpcyBjYWxjdWxhdGVkIGZvciB0aGUgbWF4aW11bSBudW1iZXIgb2Ygdm90ZS5EcmVtb3ZlX290aGVyX3ZvdGUMARh0YXJnZXQAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABFGNsYXNz9QEBNENsYXNzT2Y8VCwgST4AARRpbmRleDgBRFBvbGxJbmRleE9mPFQsIEk+AAVAZFJlbW92ZSBhIHZvdGUgZm9yIGEgcG9sbC4ATQFJZiB0aGUgYHRhcmdldGAgaXMgZXF1YWwgdG8gdGhlIHNpZ25lciwgdGhlbiB0aGlzIGZ1bmN0aW9uIGlzIGV4YWN0bHkgZXF1aXZhbGVudCB0by0BYHJlbW92ZV92b3RlYC4gSWYgbm90IGVxdWFsIHRvIHRoZSBzaWduZXIsIHRoZW4gdGhlIHZvdGUgbXVzdCBoYXZlIGV4cGlyZWQsJQFlaXRoZXIgYmVjYXVzZSB0aGUgcG9sbCB3YXMgY2FuY2VsbGVkLCBiZWNhdXNlIHRoZSB2b3RlciBsb3N0IHRoZSBwb2xsIG9ymGJlY2F1c2UgdGhlIGNvbnZpY3Rpb24gcGVyaW9kIGlzIG92ZXIuAMhUaGUgZGlzcGF0Y2ggb3JpZ2luIG9mIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLgBhAS0gYHRhcmdldGA6IFRoZSBhY2NvdW50IG9mIHRoZSB2b3RlIHRvIGJlIHJlbW92ZWQ7IHRoaXMgYWNjb3VudCBtdXN0IGhhdmUgdm90ZWQgZm9yIHBvbGwoICBgaW5kZXhgLtwtIGBpbmRleGA6IFRoZSBpbmRleCBvZiBwb2xsIG9mIHRoZSB2b3RlIHRvIGJlIHJlbW92ZWQuhC0gYGNsYXNzYDogVGhlIGNsYXNzIG9mIHRoZSBwb2xsLgBFAVdlaWdodDogYE8oUiArIGxvZyBSKWAgd2hlcmUgUiBpcyB0aGUgbnVtYmVyIG9mIHBvbGxzIHRoYXQgYHRhcmdldGAgaGFzIHZvdGVkIG9uLtggIFdlaWdodCBpcyBjYWxjdWxhdGVkIGZvciB0aGUgbWF4aW11bSBudW1iZXIgb2Ygdm90ZS4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMu7QEMYHBhbGxldF9jb252aWN0aW9uX3ZvdGluZxB2b3RlLEFjY291bnRWb3RlBBxCYWxhbmNlAaQBDCBTdGFuZGFyZAgBEHZvdGXxAQEQVm90ZQABHGJhbGFuY2WkARxCYWxhbmNlAAAAFFNwbGl0CAEMYXllpAEcQmFsYW5jZQABDG5heaQBHEJhbGFuY2UAAQAwU3BsaXRBYnN0YWluDAEMYXllpAEcQmFsYW5jZQABDG5heaQBHEJhbGFuY2UAARxhYnN0YWlupAEcQmFsYW5jZQACAADxAQxgcGFsbGV0X2NvbnZpY3Rpb25fdm90aW5nEHZvdGUQVm90ZQAABAAMAAAA9QEAAAUEAPkBDGBwYWxsZXRfY29udmljdGlvbl92b3RpbmcoY29udmljdGlvbihDb252aWN0aW9uAAEcEE5vbmUAAAAgTG9ja2VkMXgAAQAgTG9ja2VkMngAAgAgTG9ja2VkM3gAAwAgTG9ja2VkNHgABAAgTG9ja2VkNXgABQAgTG9ja2VkNngABgAA/QEEGE9wdGlvbgQEVAH1AQEIEE5vbmUAAAAQU29tZQQA9QEAAAEAAAECDEBwYWxsZXRfcmVmZXJlbmRhGHBhbGxldBBDYWxsCARUAARJAAEkGHN1Ym1pdAwBPHByb3Bvc2FsX29yaWdpbgUCAVxCb3g8UGFsbGV0c09yaWdpbk9mPFQ+PgABIHByb3Bvc2FsHQIBTEJvdW5kZWRDYWxsT2Y8VCwgST4AAUBlbmFjdG1lbnRfbW9tZW50KQIBiERpc3BhdGNoVGltZTxCbG9ja051bWJlckZvcjxULCBJPj4AACSwUHJvcG9zZSBhIHJlZmVyZW5kdW0gb24gYSBwcml2aWxlZ2VkIGFjdGlvbi4AWQEtIGBvcmlnaW5gOiBtdXN0IGJlIGBTdWJtaXRPcmlnaW5gIGFuZCB0aGUgYWNjb3VudCBtdXN0IGhhdmUgYFN1Ym1pc3Npb25EZXBvc2l0YCBmdW5kczAgIGF2YWlsYWJsZS4tAS0gYHByb3Bvc2FsX29yaWdpbmA6IFRoZSBvcmlnaW4gZnJvbSB3aGljaCB0aGUgcHJvcG9zYWwgc2hvdWxkIGJlIGV4ZWN1dGVkLmwtIGBwcm9wb3NhbGA6IFRoZSBwcm9wb3NhbC4VAS0gYGVuYWN0bWVudF9tb21lbnRgOiBUaGUgbW9tZW50IHRoYXQgdGhlIHByb3Bvc2FsIHNob3VsZCBiZSBlbmFjdGVkLgBIRW1pdHMgYFN1Ym1pdHRlZGAuWHBsYWNlX2RlY2lzaW9uX2RlcG9zaXQEARRpbmRleDgBPFJlZmVyZW5kdW1JbmRleAABIKxQb3N0IHRoZSBEZWNpc2lvbiBEZXBvc2l0IGZvciBhIHJlZmVyZW5kdW0uADkBLSBgb3JpZ2luYDogbXVzdCBiZSBgU2lnbmVkYCBhbmQgdGhlIGFjY291bnQgbXVzdCBoYXZlIGZ1bmRzIGF2YWlsYWJsZSBmb3IgdGhloCAgcmVmZXJlbmR1bSdzIHRyYWNrJ3MgRGVjaXNpb24gRGVwb3NpdC5RAS0gYGluZGV4YDogVGhlIGluZGV4IG9mIHRoZSBzdWJtaXR0ZWQgcmVmZXJlbmR1bSB3aG9zZSBEZWNpc2lvbiBEZXBvc2l0IGlzIHlldCB0byBiZSQgIHBvc3RlZC4AeEVtaXRzIGBEZWNpc2lvbkRlcG9zaXRQbGFjZWRgLlxyZWZ1bmRfZGVjaXNpb25fZGVwb3NpdAQBFGluZGV4OAE8UmVmZXJlbmR1bUluZGV4AAIcKQFSZWZ1bmQgdGhlIERlY2lzaW9uIERlcG9zaXQgZm9yIGEgY2xvc2VkIHJlZmVyZW5kdW0gYmFjayB0byB0aGUgZGVwb3NpdG9yLgCcLSBgb3JpZ2luYDogbXVzdCBiZSBgU2lnbmVkYCBvciBgUm9vdGAuTQEtIGBpbmRleGA6IFRoZSBpbmRleCBvZiBhIGNsb3NlZCByZWZlcmVuZHVtIHdob3NlIERlY2lzaW9uIERlcG9zaXQgaGFzIG5vdCB5ZXQgYmVlbiwgIHJlZnVuZGVkLgCARW1pdHMgYERlY2lzaW9uRGVwb3NpdFJlZnVuZGVkYC4YY2FuY2VsBAEUaW5kZXg4ATxSZWZlcmVuZHVtSW5kZXgAAxh0Q2FuY2VsIGFuIG9uZ29pbmcgcmVmZXJlbmR1bS4AnC0gYG9yaWdpbmA6IG11c3QgYmUgdGhlIGBDYW5jZWxPcmlnaW5gLtwtIGBpbmRleGA6IFRoZSBpbmRleCBvZiB0aGUgcmVmZXJlbmR1bSB0byBiZSBjYW5jZWxsZWQuAEhFbWl0cyBgQ2FuY2VsbGVkYC4Qa2lsbAQBFGluZGV4OAE8UmVmZXJlbmR1bUluZGV4AAQY0ENhbmNlbCBhbiBvbmdvaW5nIHJlZmVyZW5kdW0gYW5kIHNsYXNoIHRoZSBkZXBvc2l0cy4AlC0gYG9yaWdpbmA6IG11c3QgYmUgdGhlIGBLaWxsT3JpZ2luYC7cLSBgaW5kZXhgOiBUaGUgaW5kZXggb2YgdGhlIHJlZmVyZW5kdW0gdG8gYmUgY2FuY2VsbGVkLgCQRW1pdHMgYEtpbGxlZGAgYW5kIGBEZXBvc2l0U2xhc2hlZGAuQG51ZGdlX3JlZmVyZW5kdW0EARRpbmRleDgBPFJlZmVyZW5kdW1JbmRleAAFEB0BQWR2YW5jZSBhIHJlZmVyZW5kdW0gb250byBpdHMgbmV4dCBsb2dpY2FsIHN0YXRlLiBPbmx5IHVzZWQgaW50ZXJuYWxseS4AbC0gYG9yaWdpbmA6IG11c3QgYmUgYFJvb3RgLqQtIGBpbmRleGA6IHRoZSByZWZlcmVuZHVtIHRvIGJlIGFkdmFuY2VkLkhvbmVfZmV3ZXJfZGVjaWRpbmcEARR0cmFja/UBATxUcmFja0lkT2Y8VCwgST4ABiQJAUFkdmFuY2UgYSB0cmFjayBvbnRvIGl0cyBuZXh0IGxvZ2ljYWwgc3RhdGUuIE9ubHkgdXNlZCBpbnRlcm5hbGx5LgBsLSBgb3JpZ2luYDogbXVzdCBiZSBgUm9vdGAukC0gYHRyYWNrYDogdGhlIHRyYWNrIHRvIGJlIGFkdmFuY2VkLgBRAUFjdGlvbiBpdGVtIGZvciB3aGVuIHRoZXJlIGlzIG5vdyBvbmUgZmV3ZXIgcmVmZXJlbmR1bSBpbiB0aGUgZGVjaWRpbmcgcGhhc2UgYW5kIHRoZRUBYERlY2lkaW5nQ291bnRgIGlzIG5vdCB5ZXQgdXBkYXRlZC4gVGhpcyBtZWFucyB0aGF0IHdlIHNob3VsZCBlaXRoZXI6JQEtIGJlZ2luIGRlY2lkaW5nIGFub3RoZXIgcmVmZXJlbmR1bSAoYW5kIGxlYXZlIGBEZWNpZGluZ0NvdW50YCBhbG9uZSk7IG9ycC0gZGVjcmVtZW50IGBEZWNpZGluZ0NvdW50YC5kcmVmdW5kX3N1Ym1pc3Npb25fZGVwb3NpdAQBFGluZGV4OAE8UmVmZXJlbmR1bUluZGV4AAccMQFSZWZ1bmQgdGhlIFN1Ym1pc3Npb24gRGVwb3NpdCBmb3IgYSBjbG9zZWQgcmVmZXJlbmR1bSBiYWNrIHRvIHRoZSBkZXBvc2l0b3IuAJwtIGBvcmlnaW5gOiBtdXN0IGJlIGBTaWduZWRgIG9yIGBSb290YC5VAS0gYGluZGV4YDogVGhlIGluZGV4IG9mIGEgY2xvc2VkIHJlZmVyZW5kdW0gd2hvc2UgU3VibWlzc2lvbiBEZXBvc2l0IGhhcyBub3QgeWV0IGJlZW4sICByZWZ1bmRlZC4AiEVtaXRzIGBTdWJtaXNzaW9uRGVwb3NpdFJlZnVuZGVkYC4wc2V0X21ldGFkYXRhCAEUaW5kZXg4ATxSZWZlcmVuZHVtSW5kZXgAAShtYXliZV9oYXNoLQIBPE9wdGlvbjxUOjpIYXNoPgAIHJhTZXQgb3IgY2xlYXIgbWV0YWRhdGEgb2YgYSByZWZlcmVuZHVtLgAsUGFyYW1ldGVyczpFAS0gYG9yaWdpbmA6IE11c3QgYmUgYFNpZ25lZGAgYnkgYSBjcmVhdG9yIG9mIGEgcmVmZXJlbmR1bSBvciBieSBhbnlvbmUgdG8gY2xlYXIgYZAgIG1ldGFkYXRhIG9mIGEgZmluaXNoZWQgcmVmZXJlbmR1bS4NAS0gYGluZGV4YDogIFRoZSBpbmRleCBvZiBhIHJlZmVyZW5kdW0gdG8gc2V0IG9yIGNsZWFyIG1ldGFkYXRhIGZvci5RAS0gYG1heWJlX2hhc2hgOiBUaGUgaGFzaCBvZiBhbiBvbi1jaGFpbiBzdG9yZWQgcHJlaW1hZ2UuIGBOb25lYCB0byBjbGVhciBhIG1ldGFkYXRhLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy4FAghAcG9sa2Fkb3RfcnVudGltZTBPcmlnaW5DYWxsZXIAARAYc3lzdGVtBAAJAgF0ZnJhbWVfc3lzdGVtOjpPcmlnaW48UnVudGltZT4AAAAcT3JpZ2lucwQADQIBdHBhbGxldF9jdXN0b21fb3JpZ2luczo6T3JpZ2luABYAQFBhcmFjaGFpbnNPcmlnaW4EABECAWRwYXJhY2hhaW5zX29yaWdpbjo6T3JpZ2luADIAJFhjbVBhbGxldAQAGQIBSHBhbGxldF94Y206Ok9yaWdpbgBjAAAJAgw0ZnJhbWVfc3VwcG9ydCBkaXNwYXRjaCRSYXdPcmlnaW4EJEFjY291bnRJZAEEARAQUm9vdAAAABhTaWduZWQEAAQBJEFjY291bnRJZAABABBOb25lAAIAKEF1dGhvcml6ZWQAAwAADQIUQHBvbGthZG90X3J1bnRpbWUoZ292ZXJuYW5jZRxvcmlnaW5zVHBhbGxldF9jdXN0b21fb3JpZ2lucxhPcmlnaW4AATwwU3Rha2luZ0FkbWluAAAAJFRyZWFzdXJlcgABADxGZWxsb3dzaGlwQWRtaW4AAgAwR2VuZXJhbEFkbWluAAMAMEF1Y3Rpb25BZG1pbgAEAChMZWFzZUFkbWluAAUATFJlZmVyZW5kdW1DYW5jZWxsZXIABgBAUmVmZXJlbmR1bUtpbGxlcgAHACxTbWFsbFRpcHBlcgAIACRCaWdUaXBwZXIACQAwU21hbGxTcGVuZGVyAAoANE1lZGl1bVNwZW5kZXIACwAoQmlnU3BlbmRlcgAMAERXaGl0ZWxpc3RlZENhbGxlcgANADRXaXNoRm9yQ2hhbmdlAA4AABECEGxwb2xrYWRvdF9ydW50aW1lX3BhcmFjaGFpbnMYb3JpZ2luGHBhbGxldBhPcmlnaW4AAQQkUGFyYWNoYWluBAAVAgEYUGFyYUlkAAAAABUCDHRwb2xrYWRvdF9wYXJhY2hhaW5fcHJpbWl0aXZlcyhwcmltaXRpdmVzCElkAAAEADgBDHUzMgAAGQIMKHBhbGxldF94Y20YcGFsbGV0GE9yaWdpbgABCAxYY20EAKkBASBMb2NhdGlvbgAAACBSZXNwb25zZQQAqQEBIExvY2F0aW9uAAEAAB0CEDRmcmFtZV9zdXBwb3J0GHRyYWl0cyRwcmVpbWFnZXMcQm91bmRlZAgEVAEgBEgBIQIBDBhMZWdhY3kEARBoYXNoPAEkSDo6T3V0cHV0AAAAGElubGluZQQAJQIBNEJvdW5kZWRJbmxpbmUAAQAYTG9va3VwCAEQaGFzaDwBJEg6Ok91dHB1dAABDGxlbjgBDHUzMgACAAAhAgwoc3BfcnVudGltZRh0cmFpdHMsQmxha2VUd28yNTYAAAAAJQIMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AAApAhA0ZnJhbWVfc3VwcG9ydBh0cmFpdHMgc2NoZWR1bGUwRGlzcGF0Y2hUaW1lBCxCbG9ja051bWJlcgE4AQgIQXQEADgBLEJsb2NrTnVtYmVyAAAAFEFmdGVyBAA4ASxCbG9ja051bWJlcgABAAAtAgQYT3B0aW9uBARUATwBCBBOb25lAAAAEFNvbWUEADwAAAEAADECDEBwYWxsZXRfd2hpdGVsaXN0GHBhbGxldBBDYWxsBARUAAEQOHdoaXRlbGlzdF9jYWxsBAEkY2FsbF9oYXNoPAEcVDo6SGFzaAAAAFxyZW1vdmVfd2hpdGVsaXN0ZWRfY2FsbAQBJGNhbGxfaGFzaDwBHFQ6Okhhc2gAAQBkZGlzcGF0Y2hfd2hpdGVsaXN0ZWRfY2FsbAwBJGNhbGxfaGFzaDwBHFQ6Okhhc2gAAUBjYWxsX2VuY29kZWRfbGVuOAEMdTMyAAFMY2FsbF93ZWlnaHRfd2l0bmVzczUCARhXZWlnaHQAAgCcZGlzcGF0Y2hfd2hpdGVsaXN0ZWRfY2FsbF93aXRoX3ByZWltYWdlBAEQY2FsbCABfEJveDw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4AAwAEDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuNQIMKHNwX3dlaWdodHMkd2VpZ2h0X3YyGFdlaWdodAAACAEgcmVmX3RpbWWQAQx1NjQAAShwcm9vZl9zaXplkAEMdTY0AAA5AhBccG9sa2Fkb3RfcnVudGltZV9jb21tb24YY2xhaW1zGHBhbGxldBBDYWxsBARUAAEUFGNsYWltCAEQZGVzdAQBMFQ6OkFjY291bnRJZAABSGV0aGVyZXVtX3NpZ25hdHVyZT0CAThFY2RzYVNpZ25hdHVyZQAAYIhNYWtlIGEgY2xhaW0gdG8gY29sbGVjdCB5b3VyIERPVHMuAMRUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfTm9uZV8uAFBVbnNpZ25lZCBWYWxpZGF0aW9uOgUBQSBjYWxsIHRvIGNsYWltIGlzIGRlZW1lZCB2YWxpZCBpZiB0aGUgc2lnbmF0dXJlIHByb3ZpZGVkIG1hdGNoZXN8dGhlIGV4cGVjdGVkIHNpZ25lZCBtZXNzYWdlIG9mOgBoPiBFdGhlcmV1bSBTaWduZWQgTWVzc2FnZTqUPiAoY29uZmlndXJlZCBwcmVmaXggc3RyaW5nKShhZGRyZXNzKQCkYW5kIGBhZGRyZXNzYCBtYXRjaGVzIHRoZSBgZGVzdGAgYWNjb3VudC4ALFBhcmFtZXRlcnM62C0gYGRlc3RgOiBUaGUgZGVzdGluYXRpb24gYWNjb3VudCB0byBwYXlvdXQgdGhlIGNsYWltLl0BLSBgZXRoZXJldW1fc2lnbmF0dXJlYDogVGhlIHNpZ25hdHVyZSBvZiBhbiBldGhlcmV1bSBzaWduZWQgbWVzc2FnZSBtYXRjaGluZyB0aGUgZm9ybWF0SCAgZGVzY3JpYmVkIGFib3ZlLgAgPHdlaWdodD78VGhlIHdlaWdodCBvZiB0aGlzIGNhbGwgaXMgaW52YXJpYW50IG92ZXIgdGhlIGlucHV0IHBhcmFtZXRlcnMu4FdlaWdodCBpbmNsdWRlcyBsb2dpYyB0byB2YWxpZGF0ZSB1bnNpZ25lZCBgY2xhaW1gIGNhbGwuAFhUb3RhbCBDb21wbGV4aXR5OiBPKDEpJDwvd2VpZ2h0PihtaW50X2NsYWltEAEMd2hvRQIBPEV0aGVyZXVtQWRkcmVzcwABFHZhbHVlpAEwQmFsYW5jZU9mPFQ+AAFAdmVzdGluZ19zY2hlZHVsZUkCAdxPcHRpb248KEJhbGFuY2VPZjxUPiwgQmFsYW5jZU9mPFQ+LCBCbG9ja051bWJlckZvcjxUPik+AAEkc3RhdGVtZW50UQIBVE9wdGlvbjxTdGF0ZW1lbnRLaW5kPgABPIRNaW50IGEgbmV3IGNsYWltIHRvIGNvbGxlY3QgRE9Ucy4AxFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9Sb290Xy4ALFBhcmFtZXRlcnM68C0gYHdob2A6IFRoZSBFdGhlcmV1bSBhZGRyZXNzIGFsbG93ZWQgdG8gY29sbGVjdCB0aGlzIGNsYWltLswtIGB2YWx1ZWA6IFRoZSBudW1iZXIgb2YgRE9UcyB0aGF0IHdpbGwgYmUgY2xhaW1lZC4JAS0gYHZlc3Rpbmdfc2NoZWR1bGVgOiBBbiBvcHRpb25hbCB2ZXN0aW5nIHNjaGVkdWxlIGZvciB0aGVzZSBET1RzLgAgPHdlaWdodD78VGhlIHdlaWdodCBvZiB0aGlzIGNhbGwgaXMgaW52YXJpYW50IG92ZXIgdGhlIGlucHV0IHBhcmFtZXRlcnMuHQFXZSBhc3N1bWUgd29yc3QgY2FzZSB0aGF0IGJvdGggdmVzdGluZyBhbmQgc3RhdGVtZW50IGlzIGJlaW5nIGluc2VydGVkLgBYVG90YWwgQ29tcGxleGl0eTogTygxKSQ8L3dlaWdodD4wY2xhaW1fYXR0ZXN0DAEQZGVzdAQBMFQ6OkFjY291bnRJZAABSGV0aGVyZXVtX3NpZ25hdHVyZT0CAThFY2RzYVNpZ25hdHVyZQABJHN0YXRlbWVudBgBHFZlYzx1OD4AAmzkTWFrZSBhIGNsYWltIHRvIGNvbGxlY3QgeW91ciBET1RzIGJ5IHNpZ25pbmcgYSBzdGF0ZW1lbnQuAMRUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfTm9uZV8uAFBVbnNpZ25lZCBWYWxpZGF0aW9uOikBQSBjYWxsIHRvIGBjbGFpbV9hdHRlc3RgIGlzIGRlZW1lZCB2YWxpZCBpZiB0aGUgc2lnbmF0dXJlIHByb3ZpZGVkIG1hdGNoZXN8dGhlIGV4cGVjdGVkIHNpZ25lZCBtZXNzYWdlIG9mOgBoPiBFdGhlcmV1bSBTaWduZWQgTWVzc2FnZTrAPiAoY29uZmlndXJlZCBwcmVmaXggc3RyaW5nKShhZGRyZXNzKShzdGF0ZW1lbnQpAEkBYW5kIGBhZGRyZXNzYCBtYXRjaGVzIHRoZSBgZGVzdGAgYWNjb3VudDsgdGhlIGBzdGF0ZW1lbnRgIG11c3QgbWF0Y2ggdGhhdCB3aGljaCBpc8BleHBlY3RlZCBhY2NvcmRpbmcgdG8geW91ciBwdXJjaGFzZSBhcnJhbmdlbWVudC4ALFBhcmFtZXRlcnM62C0gYGRlc3RgOiBUaGUgZGVzdGluYXRpb24gYWNjb3VudCB0byBwYXlvdXQgdGhlIGNsYWltLl0BLSBgZXRoZXJldW1fc2lnbmF0dXJlYDogVGhlIHNpZ25hdHVyZSBvZiBhbiBldGhlcmV1bSBzaWduZWQgbWVzc2FnZSBtYXRjaGluZyB0aGUgZm9ybWF0SCAgZGVzY3JpYmVkIGFib3ZlLjkBLSBgc3RhdGVtZW50YDogVGhlIGlkZW50aXR5IG9mIHRoZSBzdGF0ZW1lbnQgd2hpY2ggaXMgYmVpbmcgYXR0ZXN0ZWQgdG8gaW4gdGhlMCAgc2lnbmF0dXJlLgAgPHdlaWdodD78VGhlIHdlaWdodCBvZiB0aGlzIGNhbGwgaXMgaW52YXJpYW50IG92ZXIgdGhlIGlucHV0IHBhcmFtZXRlcnMu/FdlaWdodCBpbmNsdWRlcyBsb2dpYyB0byB2YWxpZGF0ZSB1bnNpZ25lZCBgY2xhaW1fYXR0ZXN0YCBjYWxsLgBYVG90YWwgQ29tcGxleGl0eTogTygxKSQ8L3dlaWdodD4YYXR0ZXN0BAEkc3RhdGVtZW50GAEcVmVjPHU4PgADTPRBdHRlc3QgdG8gYSBzdGF0ZW1lbnQsIG5lZWRlZCB0byBmaW5hbGl6ZSB0aGUgY2xhaW1zIHByb2Nlc3MuABkBV0FSTklORzogSW5zZWN1cmUgdW5sZXNzIHlvdXIgY2hhaW4gaW5jbHVkZXMgYFByZXZhbGlkYXRlQXR0ZXN0c2AgYXMgYVxgVHJhbnNhY3Rpb25FeHRlbnNpb25gLgBQVW5zaWduZWQgVmFsaWRhdGlvbjopAUEgY2FsbCB0byBhdHRlc3QgaXMgZGVlbWVkIHZhbGlkIGlmIHRoZSBzZW5kZXIgaGFzIGEgYFByZWNsYWltYCByZWdpc3RlcmVk9GFuZCBwcm92aWRlcyBhIGBzdGF0ZW1lbnRgIHdoaWNoIGlzIGV4cGVjdGVkIGZvciB0aGUgYWNjb3VudC4ALFBhcmFtZXRlcnM6OQEtIGBzdGF0ZW1lbnRgOiBUaGUgaWRlbnRpdHkgb2YgdGhlIHN0YXRlbWVudCB3aGljaCBpcyBiZWluZyBhdHRlc3RlZCB0byBpbiB0aGUwICBzaWduYXR1cmUuACA8d2VpZ2h0PvxUaGUgd2VpZ2h0IG9mIHRoaXMgY2FsbCBpcyBpbnZhcmlhbnQgb3ZlciB0aGUgaW5wdXQgcGFyYW1ldGVycy7wV2VpZ2h0IGluY2x1ZGVzIGxvZ2ljIHRvIGRvIHByZS12YWxpZGF0aW9uIG9uIGBhdHRlc3RgIGNhbGwuAFhUb3RhbCBDb21wbGV4aXR5OiBPKDEpJDwvd2VpZ2h0Pihtb3ZlX2NsYWltDAEMb2xkRQIBPEV0aGVyZXVtQWRkcmVzcwABDG5ld0UCATxFdGhlcmV1bUFkZHJlc3MAAThtYXliZV9wcmVjbGFpbeQBUE9wdGlvbjxUOjpBY2NvdW50SWQ+AAQABA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLj0CDFxwb2xrYWRvdF9ydW50aW1lX2NvbW1vbhhjbGFpbXM4RWNkc2FTaWduYXR1cmUAAAQAQQIBIFt1ODsgNjVdAABBAgAAA0EAAAAMAEUCDFxwb2xrYWRvdF9ydW50aW1lX2NvbW1vbhhjbGFpbXM8RXRoZXJldW1BZGRyZXNzAAAEABwBIFt1ODsgMjBdAABJAgQYT3B0aW9uBARUAU0CAQgQTm9uZQAAABBTb21lBABNAgAAAQAATQIAAAQMpKQ4AFECBBhPcHRpb24EBFQBVQIBCBBOb25lAAAAEFNvbWUEAFUCAAABAABVAgxccG9sa2Fkb3RfcnVudGltZV9jb21tb24YY2xhaW1zNFN0YXRlbWVudEtpbmQAAQgcUmVndWxhcgAAABBTYWZ0AAEAAFkCDDhwYWxsZXRfdmVzdGluZxhwYWxsZXQQQ2FsbAQEVAABGBB2ZXN0AAAkuFVubG9jayBhbnkgdmVzdGVkIGZ1bmRzIG9mIHRoZSBzZW5kZXIgYWNjb3VudC4AXQFUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXyBhbmQgdGhlIHNlbmRlciBtdXN0IGhhdmUgZnVuZHMgc3RpbGxkbG9ja2VkIHVuZGVyIHRoaXMgcGFsbGV0LgDQRW1pdHMgZWl0aGVyIGBWZXN0aW5nQ29tcGxldGVkYCBvciBgVmVzdGluZ1VwZGF0ZWRgLgA0IyMgQ29tcGxleGl0eSQtIGBPKDEpYC4odmVzdF9vdGhlcgQBGHRhcmdldAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEsuFVubG9jayBhbnkgdmVzdGVkIGZ1bmRzIG9mIGEgYHRhcmdldGAgYWNjb3VudC4AzFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLgBRAS0gYHRhcmdldGA6IFRoZSBhY2NvdW50IHdob3NlIHZlc3RlZCBmdW5kcyBzaG91bGQgYmUgdW5sb2NrZWQuIE11c3QgaGF2ZSBmdW5kcyBzdGlsbGRsb2NrZWQgdW5kZXIgdGhpcyBwYWxsZXQuANBFbWl0cyBlaXRoZXIgYFZlc3RpbmdDb21wbGV0ZWRgIG9yIGBWZXN0aW5nVXBkYXRlZGAuADQjIyBDb21wbGV4aXR5JC0gYE8oMSlgLjx2ZXN0ZWRfdHJhbnNmZXIIARh0YXJnZXQAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABIHNjaGVkdWxlXQIBsFZlc3RpbmdJbmZvPEJhbGFuY2VPZjxUPiwgQmxvY2tOdW1iZXJGb3I8VD4+AAI0ZENyZWF0ZSBhIHZlc3RlZCB0cmFuc2Zlci4AzFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLgDMLSBgdGFyZ2V0YDogVGhlIGFjY291bnQgcmVjZWl2aW5nIHRoZSB2ZXN0ZWQgZnVuZHMu8C0gYHNjaGVkdWxlYDogVGhlIHZlc3Rpbmcgc2NoZWR1bGUgYXR0YWNoZWQgdG8gdGhlIHRyYW5zZmVyLgBcRW1pdHMgYFZlc3RpbmdDcmVhdGVkYC4A/E5PVEU6IFRoaXMgd2lsbCB1bmxvY2sgYWxsIHNjaGVkdWxlcyB0aHJvdWdoIHRoZSBjdXJyZW50IGJsb2NrLgA0IyMgQ29tcGxleGl0eSQtIGBPKDEpYC5UZm9yY2VfdmVzdGVkX3RyYW5zZmVyDAEYc291cmNlAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARh0YXJnZXQAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABIHNjaGVkdWxlXQIBsFZlc3RpbmdJbmZvPEJhbGFuY2VPZjxUPiwgQmxvY2tOdW1iZXJGb3I8VD4+AAM4YEZvcmNlIGEgdmVzdGVkIHRyYW5zZmVyLgDEVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1Jvb3RfLgDoLSBgc291cmNlYDogVGhlIGFjY291bnQgd2hvc2UgZnVuZHMgc2hvdWxkIGJlIHRyYW5zZmVycmVkLhEBLSBgdGFyZ2V0YDogVGhlIGFjY291bnQgdGhhdCBzaG91bGQgYmUgdHJhbnNmZXJyZWQgdGhlIHZlc3RlZCBmdW5kcy7wLSBgc2NoZWR1bGVgOiBUaGUgdmVzdGluZyBzY2hlZHVsZSBhdHRhY2hlZCB0byB0aGUgdHJhbnNmZXIuAFxFbWl0cyBgVmVzdGluZ0NyZWF0ZWRgLgD8Tk9URTogVGhpcyB3aWxsIHVubG9jayBhbGwgc2NoZWR1bGVzIHRocm91Z2ggdGhlIGN1cnJlbnQgYmxvY2suADQjIyBDb21wbGV4aXR5JC0gYE8oMSlgLjxtZXJnZV9zY2hlZHVsZXMIATxzY2hlZHVsZTFfaW5kZXg4AQx1MzIAATxzY2hlZHVsZTJfaW5kZXg4AQx1MzIABFRdAU1lcmdlIHR3byB2ZXN0aW5nIHNjaGVkdWxlcyB0b2dldGhlciwgY3JlYXRpbmcgYSBuZXcgdmVzdGluZyBzY2hlZHVsZSB0aGF0IHVubG9ja3Mgb3ZlclUBdGhlIGhpZ2hlc3QgcG9zc2libGUgc3RhcnQgYW5kIGVuZCBibG9ja3MuIElmIGJvdGggc2NoZWR1bGVzIGhhdmUgYWxyZWFkeSBzdGFydGVkIHRoZVkBY3VycmVudCBibG9jayB3aWxsIGJlIHVzZWQgYXMgdGhlIHNjaGVkdWxlIHN0YXJ0OyB3aXRoIHRoZSBjYXZlYXQgdGhhdCBpZiBvbmUgc2NoZWR1bGVdAWlzIGZpbmlzaGVkIGJ5IHRoZSBjdXJyZW50IGJsb2NrLCB0aGUgb3RoZXIgd2lsbCBiZSB0cmVhdGVkIGFzIHRoZSBuZXcgbWVyZ2VkIHNjaGVkdWxlLCx1bm1vZGlmaWVkLgD4Tk9URTogSWYgYHNjaGVkdWxlMV9pbmRleCA9PSBzY2hlZHVsZTJfaW5kZXhgIHRoaXMgaXMgYSBuby1vcC5BAU5PVEU6IFRoaXMgd2lsbCB1bmxvY2sgYWxsIHNjaGVkdWxlcyB0aHJvdWdoIHRoZSBjdXJyZW50IGJsb2NrIHByaW9yIHRvIG1lcmdpbmcuYQFOT1RFOiBJZiBib3RoIHNjaGVkdWxlcyBoYXZlIGVuZGVkIGJ5IHRoZSBjdXJyZW50IGJsb2NrLCBubyBuZXcgc2NoZWR1bGUgd2lsbCBiZSBjcmVhdGVkZGFuZCBib3RoIHdpbGwgYmUgcmVtb3ZlZC4AbE1lcmdlZCBzY2hlZHVsZSBhdHRyaWJ1dGVzOjUBLSBgc3RhcnRpbmdfYmxvY2tgOiBgTUFYKHNjaGVkdWxlMS5zdGFydGluZ19ibG9jaywgc2NoZWR1bGVkMi5zdGFydGluZ19ibG9jayxIICBjdXJyZW50X2Jsb2NrKWAuIQEtIGBlbmRpbmdfYmxvY2tgOiBgTUFYKHNjaGVkdWxlMS5lbmRpbmdfYmxvY2ssIHNjaGVkdWxlMi5lbmRpbmdfYmxvY2spYC5ZAS0gYGxvY2tlZGA6IGBzY2hlZHVsZTEubG9ja2VkX2F0KGN1cnJlbnRfYmxvY2spICsgc2NoZWR1bGUyLmxvY2tlZF9hdChjdXJyZW50X2Jsb2NrKWAuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4A6C0gYHNjaGVkdWxlMV9pbmRleGA6IGluZGV4IG9mIHRoZSBmaXJzdCBzY2hlZHVsZSB0byBtZXJnZS7sLSBgc2NoZWR1bGUyX2luZGV4YDogaW5kZXggb2YgdGhlIHNlY29uZCBzY2hlZHVsZSB0byBtZXJnZS50Zm9yY2VfcmVtb3ZlX3Zlc3Rpbmdfc2NoZWR1bGUIARh0YXJnZXQAAYw8VDo6TG9va3VwIGFzIFN0YXRpY0xvb2t1cD46OlNvdXJjZQABOHNjaGVkdWxlX2luZGV4OAEMdTMyAAUYfEZvcmNlIHJlbW92ZSBhIHZlc3Rpbmcgc2NoZWR1bGUAxFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9Sb290Xy4AyC0gYHRhcmdldGA6IEFuIGFjY291bnQgdGhhdCBoYXMgYSB2ZXN0aW5nIHNjaGVkdWxlFQEtIGBzY2hlZHVsZV9pbmRleGA6IFRoZSB2ZXN0aW5nIHNjaGVkdWxlIGluZGV4IHRoYXQgc2hvdWxkIGJlIHJlbW92ZWQEDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuXQIMOHBhbGxldF92ZXN0aW5nMHZlc3RpbmdfaW5mbyxWZXN0aW5nSW5mbwgcQmFsYW5jZQGkLEJsb2NrTnVtYmVyATgADAEYbG9ja2VkpAEcQmFsYW5jZQABJHBlcl9ibG9ja6QBHEJhbGFuY2UAAThzdGFydGluZ19ibG9jazgBLEJsb2NrTnVtYmVyAABhAgw4cGFsbGV0X3V0aWxpdHkYcGFsbGV0EENhbGwEBFQAASAUYmF0Y2gEARRjYWxsc2UCAXxWZWM8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AABIfFNlbmQgYSBiYXRjaCBvZiBkaXNwYXRjaCBjYWxscy4AsE1heSBiZSBjYWxsZWQgZnJvbSBhbnkgb3JpZ2luIGV4Y2VwdCBgTm9uZWAuAF0BLSBgY2FsbHNgOiBUaGUgY2FsbHMgdG8gYmUgZGlzcGF0Y2hlZCBmcm9tIHRoZSBzYW1lIG9yaWdpbi4gVGhlIG51bWJlciBvZiBjYWxsIG11c3Qgbm90OQEgIGV4Y2VlZCB0aGUgY29uc3RhbnQ6IGBiYXRjaGVkX2NhbGxzX2xpbWl0YCAoYXZhaWxhYmxlIGluIGNvbnN0YW50IG1ldGFkYXRhKS4AVQFJZiBvcmlnaW4gaXMgcm9vdCB0aGVuIHRoZSBjYWxscyBhcmUgZGlzcGF0Y2hlZCB3aXRob3V0IGNoZWNraW5nIG9yaWdpbiBmaWx0ZXIuIChUaGlz7GluY2x1ZGVzIGJ5cGFzc2luZyBgZnJhbWVfc3lzdGVtOjpDb25maWc6OkJhc2VDYWxsRmlsdGVyYCkuADQjIyBDb21wbGV4aXR50C0gTyhDKSB3aGVyZSBDIGlzIHRoZSBudW1iZXIgb2YgY2FsbHMgdG8gYmUgYmF0Y2hlZC4AVQFUaGlzIHdpbGwgcmV0dXJuIGBPa2AgaW4gYWxsIGNpcmN1bXN0YW5jZXMuIFRvIGRldGVybWluZSB0aGUgc3VjY2VzcyBvZiB0aGUgYmF0Y2gsIGFuMQFldmVudCBpcyBkZXBvc2l0ZWQuIElmIGEgY2FsbCBmYWlsZWQgYW5kIHRoZSBiYXRjaCB3YXMgaW50ZXJydXB0ZWQsIHRoZW4gdGhlVQFgQmF0Y2hJbnRlcnJ1cHRlZGAgZXZlbnQgaXMgZGVwb3NpdGVkLCBhbG9uZyB3aXRoIHRoZSBudW1iZXIgb2Ygc3VjY2Vzc2Z1bCBjYWxscyBtYWRlTQFhbmQgdGhlIGVycm9yIG9mIHRoZSBmYWlsZWQgY2FsbC4gSWYgYWxsIHdlcmUgc3VjY2Vzc2Z1bCwgdGhlbiB0aGUgYEJhdGNoQ29tcGxldGVkYExldmVudCBpcyBkZXBvc2l0ZWQuNGFzX2Rlcml2YXRpdmUIARRpbmRlePUBAQx1MTYAARBjYWxsIAF8Qm94PDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgABNNxTZW5kIGEgY2FsbCB0aHJvdWdoIGFuIGluZGV4ZWQgcHNldWRvbnltIG9mIHRoZSBzZW5kZXIuAFUBRmlsdGVyIGZyb20gb3JpZ2luIGFyZSBwYXNzZWQgYWxvbmcuIFRoZSBjYWxsIHdpbGwgYmUgZGlzcGF0Y2hlZCB3aXRoIGFuIG9yaWdpbiB3aGljaLx1c2UgdGhlIHNhbWUgZmlsdGVyIGFzIHRoZSBvcmlnaW4gb2YgdGhpcyBjYWxsLgBFAU5PVEU6IElmIHlvdSBuZWVkIHRvIGVuc3VyZSB0aGF0IGFueSBhY2NvdW50LWJhc2VkIGZpbHRlcmluZyBpcyBub3QgaG9ub3JlZCAoaS5lLmEBYmVjYXVzZSB5b3UgZXhwZWN0IGBwcm94eWAgdG8gaGF2ZSBiZWVuIHVzZWQgcHJpb3IgaW4gdGhlIGNhbGwgc3RhY2sgYW5kIHlvdSBkbyBub3Qgd2FudFEBdGhlIGNhbGwgcmVzdHJpY3Rpb25zIHRvIGFwcGx5IHRvIGFueSBzdWItYWNjb3VudHMpLCB0aGVuIHVzZSBgYXNfbXVsdGlfdGhyZXNob2xkXzFgfGluIHRoZSBNdWx0aXNpZyBwYWxsZXQgaW5zdGVhZC4A9E5PVEU6IFByaW9yIHRvIHZlcnNpb24gKjEyLCB0aGlzIHdhcyBjYWxsZWQgYGFzX2xpbWl0ZWRfc3ViYC4AzFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLiRiYXRjaF9hbGwEARRjYWxsc2UCAXxWZWM8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AAI07FNlbmQgYSBiYXRjaCBvZiBkaXNwYXRjaCBjYWxscyBhbmQgYXRvbWljYWxseSBleGVjdXRlIHRoZW0uIQFUaGUgd2hvbGUgdHJhbnNhY3Rpb24gd2lsbCByb2xsYmFjayBhbmQgZmFpbCBpZiBhbnkgb2YgdGhlIGNhbGxzIGZhaWxlZC4AsE1heSBiZSBjYWxsZWQgZnJvbSBhbnkgb3JpZ2luIGV4Y2VwdCBgTm9uZWAuAF0BLSBgY2FsbHNgOiBUaGUgY2FsbHMgdG8gYmUgZGlzcGF0Y2hlZCBmcm9tIHRoZSBzYW1lIG9yaWdpbi4gVGhlIG51bWJlciBvZiBjYWxsIG11c3Qgbm90OQEgIGV4Y2VlZCB0aGUgY29uc3RhbnQ6IGBiYXRjaGVkX2NhbGxzX2xpbWl0YCAoYXZhaWxhYmxlIGluIGNvbnN0YW50IG1ldGFkYXRhKS4AVQFJZiBvcmlnaW4gaXMgcm9vdCB0aGVuIHRoZSBjYWxscyBhcmUgZGlzcGF0Y2hlZCB3aXRob3V0IGNoZWNraW5nIG9yaWdpbiBmaWx0ZXIuIChUaGlz7GluY2x1ZGVzIGJ5cGFzc2luZyBgZnJhbWVfc3lzdGVtOjpDb25maWc6OkJhc2VDYWxsRmlsdGVyYCkuADQjIyBDb21wbGV4aXR50C0gTyhDKSB3aGVyZSBDIGlzIHRoZSBudW1iZXIgb2YgY2FsbHMgdG8gYmUgYmF0Y2hlZC4sZGlzcGF0Y2hfYXMIASRhc19vcmlnaW4FAgFUQm94PFQ6OlBhbGxldHNPcmlnaW4+AAEQY2FsbCABfEJveDw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4AAxjIRGlzcGF0Y2hlcyBhIGZ1bmN0aW9uIGNhbGwgd2l0aCBhIHByb3ZpZGVkIG9yaWdpbi4AxFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9Sb290Xy4ANCMjIENvbXBsZXhpdHkcLSBPKDEpLixmb3JjZV9iYXRjaAQBFGNhbGxzZQIBfFZlYzw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4ABDR8U2VuZCBhIGJhdGNoIG9mIGRpc3BhdGNoIGNhbGxzLtRVbmxpa2UgYGJhdGNoYCwgaXQgYWxsb3dzIGVycm9ycyBhbmQgd29uJ3QgaW50ZXJydXB0LgCwTWF5IGJlIGNhbGxlZCBmcm9tIGFueSBvcmlnaW4gZXhjZXB0IGBOb25lYC4AXQEtIGBjYWxsc2A6IFRoZSBjYWxscyB0byBiZSBkaXNwYXRjaGVkIGZyb20gdGhlIHNhbWUgb3JpZ2luLiBUaGUgbnVtYmVyIG9mIGNhbGwgbXVzdCBub3Q5ASAgZXhjZWVkIHRoZSBjb25zdGFudDogYGJhdGNoZWRfY2FsbHNfbGltaXRgIChhdmFpbGFibGUgaW4gY29uc3RhbnQgbWV0YWRhdGEpLgBNAUlmIG9yaWdpbiBpcyByb290IHRoZW4gdGhlIGNhbGxzIGFyZSBkaXNwYXRjaCB3aXRob3V0IGNoZWNraW5nIG9yaWdpbiBmaWx0ZXIuIChUaGlz7GluY2x1ZGVzIGJ5cGFzc2luZyBgZnJhbWVfc3lzdGVtOjpDb25maWc6OkJhc2VDYWxsRmlsdGVyYCkuADQjIyBDb21wbGV4aXR50C0gTyhDKSB3aGVyZSBDIGlzIHRoZSBudW1iZXIgb2YgY2FsbHMgdG8gYmUgYmF0Y2hlZC4sd2l0aF93ZWlnaHQIARBjYWxsIAF8Qm94PDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgABGHdlaWdodDUCARhXZWlnaHQABRjERGlzcGF0Y2ggYSBmdW5jdGlvbiBjYWxsIHdpdGggYSBzcGVjaWZpZWQgd2VpZ2h0LgAtAVRoaXMgZnVuY3Rpb24gZG9lcyBub3QgY2hlY2sgdGhlIHdlaWdodCBvZiB0aGUgY2FsbCwgYW5kIGluc3RlYWQgYWxsb3dzIHRoZbhSb290IG9yaWdpbiB0byBzcGVjaWZ5IHRoZSB3ZWlnaHQgb2YgdGhlIGNhbGwuAMRUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfUm9vdF8uHGlmX2Vsc2UIARBtYWluIAF8Qm94PDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgABIGZhbGxiYWNrIAF8Qm94PDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgAGXBUBRGlzcGF0Y2ggYSBmYWxsYmFjayBjYWxsIGluIHRoZSBldmVudCB0aGUgbWFpbiBjYWxsIGZhaWxzIHRvIGV4ZWN1dGUusE1heSBiZSBjYWxsZWQgZnJvbSBhbnkgb3JpZ2luIGV4Y2VwdCBgTm9uZWAuAORUaGlzIGZ1bmN0aW9uIGZpcnN0IGF0dGVtcHRzIHRvIGRpc3BhdGNoIHRoZSBgbWFpbmAgY2FsbC7USWYgdGhlIGBtYWluYCBjYWxsIGZhaWxzLCB0aGUgYGZhbGxiYWNrYCBpcyBhdHRlbXRlZC4VAWlmIHRoZSBmYWxsYmFjayBpcyBzdWNjZXNzZnVsbHkgZGlzcGF0Y2hlZCwgdGhlIHdlaWdodHMgb2YgYm90aCBjYWxscyUBYXJlIGFjY3VtdWxhdGVkIGFuZCBhbiBldmVudCBjb250YWluaW5nIHRoZSBtYWluIGNhbGwgZXJyb3IgaXMgZGVwb3NpdGVkLgDcSW4gdGhlIGV2ZW50IG9mIGEgZmFsbGJhY2sgZmFpbHVyZSB0aGUgd2hvbGUgY2FsbCBmYWlsc2h3aXRoIHRoZSB3ZWlnaHRzIHJldHVybmVkLgBBAS0gYG1haW5gOiBUaGUgbWFpbiBjYWxsIHRvIGJlIGRpc3BhdGNoZWQuIFRoaXMgaXMgdGhlIHByaW1hcnkgYWN0aW9uIHRvIGV4ZWN1dGUuPQEtIGBmYWxsYmFja2A6IFRoZSBmYWxsYmFjayBjYWxsIHRvIGJlIGRpc3BhdGNoZWQgaW4gY2FzZSB0aGUgYG1haW5gIGNhbGwgZmFpbHMuAEQjIyBEaXNwYXRjaCBMb2dpY0EBLSBJZiB0aGUgb3JpZ2luIGlzIGByb290YCwgYm90aCB0aGUgbWFpbiBhbmQgZmFsbGJhY2sgY2FsbHMgYXJlIGV4ZWN1dGVkIHdpdGhvdXR4ICBhcHBseWluZyBhbnkgb3JpZ2luIGZpbHRlcnMuSQEtIElmIHRoZSBvcmlnaW4gaXMgbm90IGByb290YCwgdGhlIG9yaWdpbiBmaWx0ZXIgaXMgYXBwbGllZCB0byBib3RoIHRoZSBgbWFpbmAgYW5kTCAgYGZhbGxiYWNrYCBjYWxscy4ALCMjIFVzZSBDYXNlWQEtIFNvbWUgdXNlIGNhc2VzIG1pZ2h0IGludm9sdmUgc3VibWl0dGluZyBhIGBiYXRjaGAgdHlwZSBjYWxsIGluIGVpdGhlciBtYWluLCBmYWxsYmFjayggIG9yIGJvdGguUGRpc3BhdGNoX2FzX2ZhbGxpYmxlCAEkYXNfb3JpZ2luBQIBVEJveDxUOjpQYWxsZXRzT3JpZ2luPgABEGNhbGwgAXxCb3g8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AAcUyERpc3BhdGNoZXMgYSBmdW5jdGlvbiBjYWxsIHdpdGggYSBwcm92aWRlZCBvcmlnaW4uAFEBQWxtb3N0IHRoZSBzYW1lIGFzIFtgUGFsbGV0OjpkaXNwYXRjaF9hc2BdIGJ1dCBmb3J3YXJkcyBhbnkgZXJyb3Igb2YgdGhlIGlubmVyIGNhbGwuAMRUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfUm9vdF8uBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLmUCAAACIABpAgwwcGFsbGV0X3Byb3h5GHBhbGxldBBDYWxsBARUAAEsFHByb3h5DAEQcmVhbAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAFAZm9yY2VfcHJveHlfdHlwZW0CAVBPcHRpb248VDo6UHJveHlUeXBlPgABEGNhbGwgAXxCb3g8PFQgYXMgQ29uZmlnPjo6UnVudGltZUNhbGw+AAAkTQFEaXNwYXRjaCB0aGUgZ2l2ZW4gYGNhbGxgIGZyb20gYW4gYWNjb3VudCB0aGF0IHRoZSBzZW5kZXIgaXMgYXV0aG9yaXNlZCBmb3IgdGhyb3VnaDBgYWRkX3Byb3h5YC4AzFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLgAsUGFyYW1ldGVyczoNAS0gYHJlYWxgOiBUaGUgYWNjb3VudCB0aGF0IHRoZSBwcm94eSB3aWxsIG1ha2UgYSBjYWxsIG9uIGJlaGFsZiBvZi5hAS0gYGZvcmNlX3Byb3h5X3R5cGVgOiBTcGVjaWZ5IHRoZSBleGFjdCBwcm94eSB0eXBlIHRvIGJlIHVzZWQgYW5kIGNoZWNrZWQgZm9yIHRoaXMgY2FsbC7QLSBgY2FsbGA6IFRoZSBjYWxsIHRvIGJlIG1hZGUgYnkgdGhlIGByZWFsYCBhY2NvdW50LiRhZGRfcHJveHkMASBkZWxlZ2F0ZQABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEocHJveHlfdHlwZXECATBUOjpQcm94eVR5cGUAARRkZWxheTgBREJsb2NrTnVtYmVyRm9yPFQ+AAEkRQFSZWdpc3RlciBhIHByb3h5IGFjY291bnQgZm9yIHRoZSBzZW5kZXIgdGhhdCBpcyBhYmxlIHRvIG1ha2UgY2FsbHMgb24gaXRzIGJlaGFsZi4AzFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLgAsUGFyYW1ldGVyczoRAS0gYHByb3h5YDogVGhlIGFjY291bnQgdGhhdCB0aGUgYGNhbGxlcmAgd291bGQgbGlrZSB0byBtYWtlIGEgcHJveHku/C0gYHByb3h5X3R5cGVgOiBUaGUgcGVybWlzc2lvbnMgYWxsb3dlZCBmb3IgdGhpcyBwcm94eSBhY2NvdW50Lk0BLSBgZGVsYXlgOiBUaGUgYW5ub3VuY2VtZW50IHBlcmlvZCByZXF1aXJlZCBvZiB0aGUgaW5pdGlhbCBwcm94eS4gV2lsbCBnZW5lcmFsbHkgYmUUemVyby4wcmVtb3ZlX3Byb3h5DAEgZGVsZWdhdGUAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABKHByb3h5X3R5cGVxAgEwVDo6UHJveHlUeXBlAAEUZGVsYXk4AURCbG9ja051bWJlckZvcjxUPgACHKhVbnJlZ2lzdGVyIGEgcHJveHkgYWNjb3VudCBmb3IgdGhlIHNlbmRlci4AzFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLgAsUGFyYW1ldGVyczolAS0gYHByb3h5YDogVGhlIGFjY291bnQgdGhhdCB0aGUgYGNhbGxlcmAgd291bGQgbGlrZSB0byByZW1vdmUgYXMgYSBwcm94eS5BAS0gYHByb3h5X3R5cGVgOiBUaGUgcGVybWlzc2lvbnMgY3VycmVudGx5IGVuYWJsZWQgZm9yIHRoZSByZW1vdmVkIHByb3h5IGFjY291bnQuOHJlbW92ZV9wcm94aWVzAAMYtFVucmVnaXN0ZXIgYWxsIHByb3h5IGFjY291bnRzIGZvciB0aGUgc2VuZGVyLgDMVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uAF0BV0FSTklORzogVGhpcyBtYXkgYmUgY2FsbGVkIG9uIGFjY291bnRzIGNyZWF0ZWQgYnkgYGNyZWF0ZV9wdXJlYCwgaG93ZXZlciBpZiBkb25lLCB0aGVuWQF0aGUgdW5yZXNlcnZlZCBmZWVzIHdpbGwgYmUgaW5hY2Nlc3NpYmxlLiAqKkFsbCBhY2Nlc3MgdG8gdGhpcyBhY2NvdW50IHdpbGwgYmUgbG9zdC4qKixjcmVhdGVfcHVyZQwBKHByb3h5X3R5cGVxAgEwVDo6UHJveHlUeXBlAAEUZGVsYXk4AURCbG9ja051bWJlckZvcjxUPgABFGluZGV49QEBDHUxNgAESDkBU3Bhd24gYSBmcmVzaCBuZXcgYWNjb3VudCB0aGF0IGlzIGd1YXJhbnRlZWQgdG8gYmUgb3RoZXJ3aXNlIGluYWNjZXNzaWJsZSwgYW5k/GluaXRpYWxpemUgaXQgd2l0aCBhIHByb3h5IG9mIGBwcm94eV90eXBlYCBmb3IgYG9yaWdpbmAgc2VuZGVyLgBsUmVxdWlyZXMgYSBgU2lnbmVkYCBvcmlnaW4uAFEBLSBgcHJveHlfdHlwZWA6IFRoZSB0eXBlIG9mIHRoZSBwcm94eSB0aGF0IHRoZSBzZW5kZXIgd2lsbCBiZSByZWdpc3RlcmVkIGFzIG92ZXIgdGhlTQFuZXcgYWNjb3VudC4gVGhpcyB3aWxsIGFsbW9zdCBhbHdheXMgYmUgdGhlIG1vc3QgcGVybWlzc2l2ZSBgUHJveHlUeXBlYCBwb3NzaWJsZSB0b3hhbGxvdyBmb3IgbWF4aW11bSBmbGV4aWJpbGl0eS5RAS0gYGluZGV4YDogQSBkaXNhbWJpZ3VhdGlvbiBpbmRleCwgaW4gY2FzZSB0aGlzIGlzIGNhbGxlZCBtdWx0aXBsZSB0aW1lcyBpbiB0aGUgc2FtZV0BdHJhbnNhY3Rpb24gKGUuZy4gd2l0aCBgdXRpbGl0eTo6YmF0Y2hgKS4gVW5sZXNzIHlvdSdyZSB1c2luZyBgYmF0Y2hgIHlvdSBwcm9iYWJseSBqdXN0QHdhbnQgdG8gdXNlIGAwYC5NAS0gYGRlbGF5YDogVGhlIGFubm91bmNlbWVudCBwZXJpb2QgcmVxdWlyZWQgb2YgdGhlIGluaXRpYWwgcHJveHkuIFdpbGwgZ2VuZXJhbGx5IGJlFHplcm8uAFEBRmFpbHMgd2l0aCBgRHVwbGljYXRlYCBpZiB0aGlzIGhhcyBhbHJlYWR5IGJlZW4gY2FsbGVkIGluIHRoaXMgdHJhbnNhY3Rpb24sIGZyb20gdGhlmHNhbWUgc2VuZGVyLCB3aXRoIHRoZSBzYW1lIHBhcmFtZXRlcnMuAORGYWlscyBpZiB0aGVyZSBhcmUgaW5zdWZmaWNpZW50IGZ1bmRzIHRvIHBheSBmb3IgZGVwb3NpdC4ka2lsbF9wdXJlFAEcc3Bhd25lcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEocHJveHlfdHlwZXECATBUOjpQcm94eVR5cGUAARRpbmRlePUBAQx1MTYAARhoZWlnaHRgAURCbG9ja051bWJlckZvcjxUPgABJGV4dF9pbmRleGABDHUzMgAFQKBSZW1vdmVzIGEgcHJldmlvdXNseSBzcGF3bmVkIHB1cmUgcHJveHkuAEkBV0FSTklORzogKipBbGwgYWNjZXNzIHRvIHRoaXMgYWNjb3VudCB3aWxsIGJlIGxvc3QuKiogQW55IGZ1bmRzIGhlbGQgaW4gaXQgd2lsbCBiZTRpbmFjY2Vzc2libGUuAFkBUmVxdWlyZXMgYSBgU2lnbmVkYCBvcmlnaW4sIGFuZCB0aGUgc2VuZGVyIGFjY291bnQgbXVzdCBoYXZlIGJlZW4gY3JlYXRlZCBieSBhIGNhbGwgdG+wYGNyZWF0ZV9wdXJlYCB3aXRoIGNvcnJlc3BvbmRpbmcgcGFyYW1ldGVycy4AVQEtIGBzcGF3bmVyYDogVGhlIGFjY291bnQgdGhhdCBvcmlnaW5hbGx5IGNhbGxlZCBgY3JlYXRlX3B1cmVgIHRvIGNyZWF0ZSB0aGlzIGFjY291bnQuVQEtIGBpbmRleGA6IFRoZSBkaXNhbWJpZ3VhdGlvbiBpbmRleCBvcmlnaW5hbGx5IHBhc3NlZCB0byBgY3JlYXRlX3B1cmVgLiBQcm9iYWJseSBgMGAuCQEtIGBwcm94eV90eXBlYDogVGhlIHByb3h5IHR5cGUgb3JpZ2luYWxseSBwYXNzZWQgdG8gYGNyZWF0ZV9wdXJlYC5FAS0gYGhlaWdodGA6IFRoZSBoZWlnaHQgb2YgdGhlIGNoYWluIHdoZW4gdGhlIGNhbGwgdG8gYGNyZWF0ZV9wdXJlYCB3YXMgcHJvY2Vzc2VkLlEBLSBgZXh0X2luZGV4YDogVGhlIGV4dHJpbnNpYyBpbmRleCBpbiB3aGljaCB0aGUgY2FsbCB0byBgY3JlYXRlX3B1cmVgIHdhcyBwcm9jZXNzZWQuADUBRmFpbHMgd2l0aCBgTm9QZXJtaXNzaW9uYCBpbiBjYXNlIHRoZSBjYWxsZXIgaXMgbm90IGEgcHJldmlvdXNseSBjcmVhdGVkIHB1cmX4YWNjb3VudCB3aG9zZSBgY3JlYXRlX3B1cmVgIGNhbGwgaGFzIGNvcnJlc3BvbmRpbmcgcGFyYW1ldGVycy4gYW5ub3VuY2UIARByZWFsAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AASRjYWxsX2hhc2g8ATRDYWxsSGFzaE9mPFQ+AAY8BQFQdWJsaXNoIHRoZSBoYXNoIG9mIGEgcHJveHktY2FsbCB0aGF0IHdpbGwgYmUgbWFkZSBpbiB0aGUgZnV0dXJlLgBdAVRoaXMgbXVzdCBiZSBjYWxsZWQgc29tZSBudW1iZXIgb2YgYmxvY2tzIGJlZm9yZSB0aGUgY29ycmVzcG9uZGluZyBgcHJveHlgIGlzIGF0dGVtcHRlZCUBaWYgdGhlIGRlbGF5IGFzc29jaWF0ZWQgd2l0aCB0aGUgcHJveHkgcmVsYXRpb25zaGlwIGlzIGdyZWF0ZXIgdGhhbiB6ZXJvLgARAU5vIG1vcmUgdGhhbiBgTWF4UGVuZGluZ2AgYW5ub3VuY2VtZW50cyBtYXkgYmUgbWFkZSBhdCBhbnkgb25lIHRpbWUuAAkBVGhpcyB3aWxsIHRha2UgYSBkZXBvc2l0IG9mIGBBbm5vdW5jZW1lbnREZXBvc2l0RmFjdG9yYCBhcyB3ZWxsIGFzGQFgQW5ub3VuY2VtZW50RGVwb3NpdEJhc2VgIGlmIHRoZXJlIGFyZSBubyBvdGhlciBwZW5kaW5nIGFubm91bmNlbWVudHMuACUBVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8gYW5kIGEgcHJveHkgb2YgYHJlYWxgLgAsUGFyYW1ldGVyczoNAS0gYHJlYWxgOiBUaGUgYWNjb3VudCB0aGF0IHRoZSBwcm94eSB3aWxsIG1ha2UgYSBjYWxsIG9uIGJlaGFsZiBvZi4VAS0gYGNhbGxfaGFzaGA6IFRoZSBoYXNoIG9mIHRoZSBjYWxsIHRvIGJlIG1hZGUgYnkgdGhlIGByZWFsYCBhY2NvdW50LkxyZW1vdmVfYW5ub3VuY2VtZW50CAEQcmVhbAABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEkY2FsbF9oYXNoPAE0Q2FsbEhhc2hPZjxUPgAHKHBSZW1vdmUgYSBnaXZlbiBhbm5vdW5jZW1lbnQuAFkBTWF5IGJlIGNhbGxlZCBieSBhIHByb3h5IGFjY291bnQgdG8gcmVtb3ZlIGEgY2FsbCB0aGV5IHByZXZpb3VzbHkgYW5ub3VuY2VkIGFuZCByZXR1cm4wdGhlIGRlcG9zaXQuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4ALFBhcmFtZXRlcnM6DQEtIGByZWFsYDogVGhlIGFjY291bnQgdGhhdCB0aGUgcHJveHkgd2lsbCBtYWtlIGEgY2FsbCBvbiBiZWhhbGYgb2YuFQEtIGBjYWxsX2hhc2hgOiBUaGUgaGFzaCBvZiB0aGUgY2FsbCB0byBiZSBtYWRlIGJ5IHRoZSBgcmVhbGAgYWNjb3VudC5McmVqZWN0X2Fubm91bmNlbWVudAgBIGRlbGVnYXRlAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AASRjYWxsX2hhc2g8ATRDYWxsSGFzaE9mPFQ+AAgosFJlbW92ZSB0aGUgZ2l2ZW4gYW5ub3VuY2VtZW50IG9mIGEgZGVsZWdhdGUuAGEBTWF5IGJlIGNhbGxlZCBieSBhIHRhcmdldCAocHJveGllZCkgYWNjb3VudCB0byByZW1vdmUgYSBjYWxsIHRoYXQgb25lIG9mIHRoZWlyIGRlbGVnYXRlcyUBKGBkZWxlZ2F0ZWApIGhhcyBhbm5vdW5jZWQgdGhleSB3YW50IHRvIGV4ZWN1dGUuIFRoZSBkZXBvc2l0IGlzIHJldHVybmVkLgDMVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uACxQYXJhbWV0ZXJzOvQtIGBkZWxlZ2F0ZWA6IFRoZSBhY2NvdW50IHRoYXQgcHJldmlvdXNseSBhbm5vdW5jZWQgdGhlIGNhbGwuvC0gYGNhbGxfaGFzaGA6IFRoZSBoYXNoIG9mIHRoZSBjYWxsIHRvIGJlIG1hZGUuPHByb3h5X2Fubm91bmNlZBABIGRlbGVnYXRlAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARByZWFsAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AAUBmb3JjZV9wcm94eV90eXBlbQIBUE9wdGlvbjxUOjpQcm94eVR5cGU+AAEQY2FsbCABfEJveDw8VCBhcyBDb25maWc+OjpSdW50aW1lQ2FsbD4ACSxNAURpc3BhdGNoIHRoZSBnaXZlbiBgY2FsbGAgZnJvbSBhbiBhY2NvdW50IHRoYXQgdGhlIHNlbmRlciBpcyBhdXRob3JpemVkIGZvciB0aHJvdWdoMGBhZGRfcHJveHlgLgCoUmVtb3ZlcyBhbnkgY29ycmVzcG9uZGluZyBhbm5vdW5jZW1lbnQocykuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4ALFBhcmFtZXRlcnM6DQEtIGByZWFsYDogVGhlIGFjY291bnQgdGhhdCB0aGUgcHJveHkgd2lsbCBtYWtlIGEgY2FsbCBvbiBiZWhhbGYgb2YuYQEtIGBmb3JjZV9wcm94eV90eXBlYDogU3BlY2lmeSB0aGUgZXhhY3QgcHJveHkgdHlwZSB0byBiZSB1c2VkIGFuZCBjaGVja2VkIGZvciB0aGlzIGNhbGwu0C0gYGNhbGxgOiBUaGUgY2FsbCB0byBiZSBtYWRlIGJ5IHRoZSBgcmVhbGAgYWNjb3VudC4wcG9rZV9kZXBvc2l0AAogSQFQb2tlIC8gQWRqdXN0IGRlcG9zaXRzIG1hZGUgZm9yIHByb3hpZXMgYW5kIGFubm91bmNlbWVudHMgYmFzZWQgb24gY3VycmVudCB2YWx1ZXMuDQFUaGlzIGNhbiBiZSB1c2VkIGJ5IGFjY291bnRzIHRvIHBvc3NpYmx5IGxvd2VyIHRoZWlyIGxvY2tlZCBhbW91bnQuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4AAQFUaGUgdHJhbnNhY3Rpb24gZmVlIGlzIHdhaXZlZCBpZiB0aGUgZGVwb3NpdCBhbW91bnQgaGFzIGNoYW5nZWQuAIxFbWl0cyBgRGVwb3NpdFBva2VkYCBpZiBzdWNjZXNzZnVsLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy5tAgQYT3B0aW9uBARUAXECAQgQTm9uZQAAABBTb21lBABxAgAAAQAAcQIMaHBvbGthZG90X3J1bnRpbWVfY29uc3RhbnRzFHByb3h5JFByb3h5VHlwZQABIAxBbnkAAAAsTm9uVHJhbnNmZXIAAQAoR292ZXJuYW5jZQACABxTdGFraW5nAAMALENhbmNlbFByb3h5AAYAHEF1Y3Rpb24ABwA8Tm9taW5hdGlvblBvb2xzAAgAQFBhcmFSZWdpc3RyYXRpb24ACQAAdQIMPHBhbGxldF9tdWx0aXNpZxhwYWxsZXQQQ2FsbAQEVAABFFBhc19tdWx0aV90aHJlc2hvbGRfMQgBRG90aGVyX3NpZ25hdG9yaWVzqAFEVmVjPFQ6OkFjY291bnRJZD4AARBjYWxsIAF8Qm94PDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgAAMFEBSW1tZWRpYXRlbHkgZGlzcGF0Y2ggYSBtdWx0aS1zaWduYXR1cmUgY2FsbCB1c2luZyBhIHNpbmdsZSBhcHByb3ZhbCBmcm9tIHRoZSBjYWxsZXIuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4APQEtIGBvdGhlcl9zaWduYXRvcmllc2A6IFRoZSBhY2NvdW50cyAob3RoZXIgdGhhbiB0aGUgc2VuZGVyKSB3aG8gYXJlIHBhcnQgb2YgdGhlAQFtdWx0aS1zaWduYXR1cmUsIGJ1dCBkbyBub3QgcGFydGljaXBhdGUgaW4gdGhlIGFwcHJvdmFsIHByb2Nlc3MuiC0gYGNhbGxgOiBUaGUgY2FsbCB0byBiZSBleGVjdXRlZC4AuFJlc3VsdCBpcyBlcXVpdmFsZW50IHRvIHRoZSBkaXNwYXRjaGVkIHJlc3VsdC4ANCMjIENvbXBsZXhpdHkZAU8oWiArIEMpIHdoZXJlIFogaXMgdGhlIGxlbmd0aCBvZiB0aGUgY2FsbCBhbmQgQyBpdHMgZXhlY3V0aW9uIHdlaWdodC4gYXNfbXVsdGkUASR0aHJlc2hvbGT1AQEMdTE2AAFEb3RoZXJfc2lnbmF0b3JpZXOoAURWZWM8VDo6QWNjb3VudElkPgABPG1heWJlX3RpbWVwb2ludHkCAZBPcHRpb248VGltZXBvaW50PEJsb2NrTnVtYmVyRm9yPFQ+Pj4AARBjYWxsIAF8Qm94PDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPgABKG1heF93ZWlnaHQ1AgEYV2VpZ2h0AAGcVQFSZWdpc3RlciBhcHByb3ZhbCBmb3IgYSBkaXNwYXRjaCB0byBiZSBtYWRlIGZyb20gYSBkZXRlcm1pbmlzdGljIGNvbXBvc2l0ZSBhY2NvdW50IGlm+GFwcHJvdmVkIGJ5IGEgdG90YWwgb2YgYHRocmVzaG9sZCAtIDFgIG9mIGBvdGhlcl9zaWduYXRvcmllc2AuALBJZiB0aGVyZSBhcmUgZW5vdWdoLCB0aGVuIGRpc3BhdGNoIHRoZSBjYWxsLgAtAVBheW1lbnQ6IGBEZXBvc2l0QmFzZWAgd2lsbCBiZSByZXNlcnZlZCBpZiB0aGlzIGlzIHRoZSBmaXJzdCBhcHByb3ZhbCwgcGx1cz0BYHRocmVzaG9sZGAgdGltZXMgYERlcG9zaXRGYWN0b3JgLiBJdCBpcyByZXR1cm5lZCBvbmNlIHRoaXMgZGlzcGF0Y2ggaGFwcGVucyBvcjRpcyBjYW5jZWxsZWQuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4AVQEtIGB0aHJlc2hvbGRgOiBUaGUgdG90YWwgbnVtYmVyIG9mIGFwcHJvdmFscyBmb3IgdGhpcyBkaXNwYXRjaCBiZWZvcmUgaXQgaXMgZXhlY3V0ZWQuQQEtIGBvdGhlcl9zaWduYXRvcmllc2A6IFRoZSBhY2NvdW50cyAob3RoZXIgdGhhbiB0aGUgc2VuZGVyKSB3aG8gY2FuIGFwcHJvdmUgdGhpc2xkaXNwYXRjaC4gTWF5IG5vdCBiZSBlbXB0eS5ZAS0gYG1heWJlX3RpbWVwb2ludGA6IElmIHRoaXMgaXMgdGhlIGZpcnN0IGFwcHJvdmFsLCB0aGVuIHRoaXMgbXVzdCBiZSBgTm9uZWAuIElmIGl0IGlzUQFub3QgdGhlIGZpcnN0IGFwcHJvdmFsLCB0aGVuIGl0IG11c3QgYmUgYFNvbWVgLCB3aXRoIHRoZSB0aW1lcG9pbnQgKGJsb2NrIG51bWJlciBhbmTUdHJhbnNhY3Rpb24gaW5kZXgpIG9mIHRoZSBmaXJzdCBhcHByb3ZhbCB0cmFuc2FjdGlvbi6ILSBgY2FsbGA6IFRoZSBjYWxsIHRvIGJlIGV4ZWN1dGVkLgAdAU5PVEU6IFVubGVzcyB0aGlzIGlzIHRoZSBmaW5hbCBhcHByb3ZhbCwgeW91IHdpbGwgZ2VuZXJhbGx5IHdhbnQgdG8gdXNlGQFgYXBwcm92ZV9hc19tdWx0aWAgaW5zdGVhZCwgc2luY2UgaXQgb25seSByZXF1aXJlcyBhIGhhc2ggb2YgdGhlIGNhbGwuAFkBUmVzdWx0IGlzIGVxdWl2YWxlbnQgdG8gdGhlIGRpc3BhdGNoZWQgcmVzdWx0IGlmIGB0aHJlc2hvbGRgIGlzIGV4YWN0bHkgYDFgLiBPdGhlcndpc2VVAW9uIHN1Y2Nlc3MsIHJlc3VsdCBpcyBgT2tgIGFuZCB0aGUgcmVzdWx0IGZyb20gdGhlIGludGVyaW9yIGNhbGwsIGlmIGl0IHdhcyBleGVjdXRlZCzcbWF5IGJlIGZvdW5kIGluIHRoZSBkZXBvc2l0ZWQgYE11bHRpc2lnRXhlY3V0ZWRgIGV2ZW50LgA0IyMgQ29tcGxleGl0eVAtIGBPKFMgKyBaICsgQ2FsbClgLswtIFVwIHRvIG9uZSBiYWxhbmNlLXJlc2VydmUgb3IgdW5yZXNlcnZlIG9wZXJhdGlvbi49AS0gT25lIHBhc3N0aHJvdWdoIG9wZXJhdGlvbiwgb25lIGluc2VydCwgYm90aCBgTyhTKWAgd2hlcmUgYFNgIGlzIHRoZSBudW1iZXIgb2ZFASAgc2lnbmF0b3JpZXMuIGBTYCBpcyBjYXBwZWQgYnkgYE1heFNpZ25hdG9yaWVzYCwgd2l0aCB3ZWlnaHQgYmVpbmcgcHJvcG9ydGlvbmFsLiEBLSBPbmUgY2FsbCBlbmNvZGUgJiBoYXNoLCBib3RoIG9mIGNvbXBsZXhpdHkgYE8oWilgIHdoZXJlIGBaYCBpcyB0eC1sZW4uvC0gT25lIGVuY29kZSAmIGhhc2gsIGJvdGggb2YgY29tcGxleGl0eSBgTyhTKWAu1C0gVXAgdG8gb25lIGJpbmFyeSBzZWFyY2ggYW5kIGluc2VydCAoYE8obG9nUyArIFMpYCku+C0gSS9POiAxIHJlYWQgYE8oUylgLCB1cCB0byAxIG11dGF0ZSBgTyhTKWAuIFVwIHRvIG9uZSByZW1vdmUuMC0gT25lIGV2ZW50LmwtIFRoZSB3ZWlnaHQgb2YgdGhlIGBjYWxsYC5NAS0gU3RvcmFnZTogaW5zZXJ0cyBvbmUgaXRlbSwgdmFsdWUgc2l6ZSBib3VuZGVkIGJ5IGBNYXhTaWduYXRvcmllc2AsIHdpdGggYSBkZXBvc2l0GQEgIHRha2VuIGZvciBpdHMgbGlmZXRpbWUgb2YgYERlcG9zaXRCYXNlICsgdGhyZXNob2xkICogRGVwb3NpdEZhY3RvcmAuQGFwcHJvdmVfYXNfbXVsdGkUASR0aHJlc2hvbGT1AQEMdTE2AAFEb3RoZXJfc2lnbmF0b3JpZXOoAURWZWM8VDo6QWNjb3VudElkPgABPG1heWJlX3RpbWVwb2ludHkCAZBPcHRpb248VGltZXBvaW50PEJsb2NrTnVtYmVyRm9yPFQ+Pj4AASRjYWxsX2hhc2gIASBbdTg7IDMyXQABKG1heF93ZWlnaHQ1AgEYV2VpZ2h0AAJ4VQFSZWdpc3RlciBhcHByb3ZhbCBmb3IgYSBkaXNwYXRjaCB0byBiZSBtYWRlIGZyb20gYSBkZXRlcm1pbmlzdGljIGNvbXBvc2l0ZSBhY2NvdW50IGlm+GFwcHJvdmVkIGJ5IGEgdG90YWwgb2YgYHRocmVzaG9sZCAtIDFgIG9mIGBvdGhlcl9zaWduYXRvcmllc2AuAC0BUGF5bWVudDogYERlcG9zaXRCYXNlYCB3aWxsIGJlIHJlc2VydmVkIGlmIHRoaXMgaXMgdGhlIGZpcnN0IGFwcHJvdmFsLCBwbHVzPQFgdGhyZXNob2xkYCB0aW1lcyBgRGVwb3NpdEZhY3RvcmAuIEl0IGlzIHJldHVybmVkIG9uY2UgdGhpcyBkaXNwYXRjaCBoYXBwZW5zIG9yNGlzIGNhbmNlbGxlZC4AzFRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfLgBVAS0gYHRocmVzaG9sZGA6IFRoZSB0b3RhbCBudW1iZXIgb2YgYXBwcm92YWxzIGZvciB0aGlzIGRpc3BhdGNoIGJlZm9yZSBpdCBpcyBleGVjdXRlZC5BAS0gYG90aGVyX3NpZ25hdG9yaWVzYDogVGhlIGFjY291bnRzIChvdGhlciB0aGFuIHRoZSBzZW5kZXIpIHdobyBjYW4gYXBwcm92ZSB0aGlzbGRpc3BhdGNoLiBNYXkgbm90IGJlIGVtcHR5LlkBLSBgbWF5YmVfdGltZXBvaW50YDogSWYgdGhpcyBpcyB0aGUgZmlyc3QgYXBwcm92YWwsIHRoZW4gdGhpcyBtdXN0IGJlIGBOb25lYC4gSWYgaXQgaXNRAW5vdCB0aGUgZmlyc3QgYXBwcm92YWwsIHRoZW4gaXQgbXVzdCBiZSBgU29tZWAsIHdpdGggdGhlIHRpbWVwb2ludCAoYmxvY2sgbnVtYmVyIGFuZNR0cmFuc2FjdGlvbiBpbmRleCkgb2YgdGhlIGZpcnN0IGFwcHJvdmFsIHRyYW5zYWN0aW9uLswtIGBjYWxsX2hhc2hgOiBUaGUgaGFzaCBvZiB0aGUgY2FsbCB0byBiZSBleGVjdXRlZC4ANQFOT1RFOiBJZiB0aGlzIGlzIHRoZSBmaW5hbCBhcHByb3ZhbCwgeW91IHdpbGwgd2FudCB0byB1c2UgYGFzX211bHRpYCBpbnN0ZWFkLgA0IyMgQ29tcGxleGl0eSQtIGBPKFMpYC7MLSBVcCB0byBvbmUgYmFsYW5jZS1yZXNlcnZlIG9yIHVucmVzZXJ2ZSBvcGVyYXRpb24uPQEtIE9uZSBwYXNzdGhyb3VnaCBvcGVyYXRpb24sIG9uZSBpbnNlcnQsIGJvdGggYE8oUylgIHdoZXJlIGBTYCBpcyB0aGUgbnVtYmVyIG9mRQEgIHNpZ25hdG9yaWVzLiBgU2AgaXMgY2FwcGVkIGJ5IGBNYXhTaWduYXRvcmllc2AsIHdpdGggd2VpZ2h0IGJlaW5nIHByb3BvcnRpb25hbC68LSBPbmUgZW5jb2RlICYgaGFzaCwgYm90aCBvZiBjb21wbGV4aXR5IGBPKFMpYC7ULSBVcCB0byBvbmUgYmluYXJ5IHNlYXJjaCBhbmQgaW5zZXJ0IChgTyhsb2dTICsgUylgKS74LSBJL086IDEgcmVhZCBgTyhTKWAsIHVwIHRvIDEgbXV0YXRlIGBPKFMpYC4gVXAgdG8gb25lIHJlbW92ZS4wLSBPbmUgZXZlbnQuTQEtIFN0b3JhZ2U6IGluc2VydHMgb25lIGl0ZW0sIHZhbHVlIHNpemUgYm91bmRlZCBieSBgTWF4U2lnbmF0b3JpZXNgLCB3aXRoIGEgZGVwb3NpdBkBICB0YWtlbiBmb3IgaXRzIGxpZmV0aW1lIG9mIGBEZXBvc2l0QmFzZSArIHRocmVzaG9sZCAqIERlcG9zaXRGYWN0b3JgLjxjYW5jZWxfYXNfbXVsdGkQASR0aHJlc2hvbGT1AQEMdTE2AAFEb3RoZXJfc2lnbmF0b3JpZXOoAURWZWM8VDo6QWNjb3VudElkPgABJHRpbWVwb2ludH0CAXBUaW1lcG9pbnQ8QmxvY2tOdW1iZXJGb3I8VD4+AAEkY2FsbF9oYXNoCAEgW3U4OyAzMl0AA1RVAUNhbmNlbCBhIHByZS1leGlzdGluZywgb24tZ29pbmcgbXVsdGlzaWcgdHJhbnNhY3Rpb24uIEFueSBkZXBvc2l0IHJlc2VydmVkIHByZXZpb3VzbHnEZm9yIHRoaXMgb3BlcmF0aW9uIHdpbGwgYmUgdW5yZXNlcnZlZCBvbiBzdWNjZXNzLgDMVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uAFUBLSBgdGhyZXNob2xkYDogVGhlIHRvdGFsIG51bWJlciBvZiBhcHByb3ZhbHMgZm9yIHRoaXMgZGlzcGF0Y2ggYmVmb3JlIGl0IGlzIGV4ZWN1dGVkLkEBLSBgb3RoZXJfc2lnbmF0b3JpZXNgOiBUaGUgYWNjb3VudHMgKG90aGVyIHRoYW4gdGhlIHNlbmRlcikgd2hvIGNhbiBhcHByb3ZlIHRoaXNsZGlzcGF0Y2guIE1heSBub3QgYmUgZW1wdHkuXQEtIGB0aW1lcG9pbnRgOiBUaGUgdGltZXBvaW50IChibG9jayBudW1iZXIgYW5kIHRyYW5zYWN0aW9uIGluZGV4KSBvZiB0aGUgZmlyc3QgYXBwcm92YWx4dHJhbnNhY3Rpb24gZm9yIHRoaXMgZGlzcGF0Y2guzC0gYGNhbGxfaGFzaGA6IFRoZSBoYXNoIG9mIHRoZSBjYWxsIHRvIGJlIGV4ZWN1dGVkLgA0IyMgQ29tcGxleGl0eSQtIGBPKFMpYC7MLSBVcCB0byBvbmUgYmFsYW5jZS1yZXNlcnZlIG9yIHVucmVzZXJ2ZSBvcGVyYXRpb24uPQEtIE9uZSBwYXNzdGhyb3VnaCBvcGVyYXRpb24sIG9uZSBpbnNlcnQsIGJvdGggYE8oUylgIHdoZXJlIGBTYCBpcyB0aGUgbnVtYmVyIG9mRQEgIHNpZ25hdG9yaWVzLiBgU2AgaXMgY2FwcGVkIGJ5IGBNYXhTaWduYXRvcmllc2AsIHdpdGggd2VpZ2h0IGJlaW5nIHByb3BvcnRpb25hbC68LSBPbmUgZW5jb2RlICYgaGFzaCwgYm90aCBvZiBjb21wbGV4aXR5IGBPKFMpYC4wLSBPbmUgZXZlbnQuhC0gSS9POiAxIHJlYWQgYE8oUylgLCBvbmUgcmVtb3ZlLnAtIFN0b3JhZ2U6IHJlbW92ZXMgb25lIGl0ZW0uMHBva2VfZGVwb3NpdAwBJHRocmVzaG9sZPUBAQx1MTYAAURvdGhlcl9zaWduYXRvcmllc6gBRFZlYzxUOjpBY2NvdW50SWQ+AAEkY2FsbF9oYXNoCAEgW3U4OyAzMl0ABDT0UG9rZSB0aGUgZGVwb3NpdCByZXNlcnZlZCBmb3IgYW4gZXhpc3RpbmcgbXVsdGlzaWcgb3BlcmF0aW9uLgBhAVRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfIGFuZCBtdXN0IGJlIHRoZSBvcmlnaW5hbCBkZXBvc2l0b3Igb2ZcdGhlIG11bHRpc2lnIG9wZXJhdGlvbi4AAQFUaGUgdHJhbnNhY3Rpb24gZmVlIGlzIHdhaXZlZCBpZiB0aGUgZGVwb3NpdCBhbW91bnQgaGFzIGNoYW5nZWQuABkBLSBgdGhyZXNob2xkYDogVGhlIHRvdGFsIG51bWJlciBvZiBhcHByb3ZhbHMgbmVlZGVkIGZvciB0aGlzIG11bHRpc2lnLj0BLSBgb3RoZXJfc2lnbmF0b3JpZXNgOiBUaGUgYWNjb3VudHMgKG90aGVyIHRoYW4gdGhlIHNlbmRlcikgd2hvIGFyZSBwYXJ0IG9mIHRoZSwgIG11bHRpc2lnLgUBLSBgY2FsbF9oYXNoYDogVGhlIGhhc2ggb2YgdGhlIGNhbGwgdGhpcyBkZXBvc2l0IGlzIHJlc2VydmVkIGZvci4AjEVtaXRzIGBEZXBvc2l0UG9rZWRgIGlmIHN1Y2Nlc3NmdWwuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLnkCBBhPcHRpb24EBFQBfQIBCBBOb25lAAAAEFNvbWUEAH0CAAABAAB9Agg8cGFsbGV0X211bHRpc2lnJFRpbWVwb2ludAQsQmxvY2tOdW1iZXIBOAAIARhoZWlnaHQ4ASxCbG9ja051bWJlcgABFGluZGV4OAEMdTMyAACBAgw8cGFsbGV0X2JvdW50aWVzGHBhbGxldBBDYWxsCARUAARJAAEsOHByb3Bvc2VfYm91bnR5CAEUdmFsdWWgATxCYWxhbmNlT2Y8VCwgST4AASxkZXNjcmlwdGlvbhgBHFZlYzx1OD4AADBUUHJvcG9zZSBhIG5ldyBib3VudHkuAMxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBfU2lnbmVkXy4AUQFQYXltZW50OiBgVGlwUmVwb3J0RGVwb3NpdEJhc2VgIHdpbGwgYmUgcmVzZXJ2ZWQgZnJvbSB0aGUgb3JpZ2luIGFjY291bnQsIGFzIHdlbGwgYXNRAWBEYXRhRGVwb3NpdFBlckJ5dGVgIGZvciBlYWNoIGJ5dGUgaW4gYHJlYXNvbmAuIEl0IHdpbGwgYmUgdW5yZXNlcnZlZCB1cG9uIGFwcHJvdmFsLGRvciBzbGFzaGVkIHdoZW4gcmVqZWN0ZWQuAPgtIGBjdXJhdG9yYDogVGhlIGN1cmF0b3IgYWNjb3VudCB3aG9tIHdpbGwgbWFuYWdlIHRoaXMgYm91bnR5LmQtIGBmZWVgOiBUaGUgY3VyYXRvciBmZWUuJQEtIGB2YWx1ZWA6IFRoZSB0b3RhbCBwYXltZW50IGFtb3VudCBvZiB0aGlzIGJvdW50eSwgY3VyYXRvciBmZWUgaW5jbHVkZWQuwC0gYGRlc2NyaXB0aW9uYDogVGhlIGRlc2NyaXB0aW9uIG9mIHRoaXMgYm91bnR5LjhhcHByb3ZlX2JvdW50eQQBJGJvdW50eV9pZGABLEJvdW50eUluZGV4AAEcXQFBcHByb3ZlIGEgYm91bnR5IHByb3Bvc2FsLiBBdCBhIGxhdGVyIHRpbWUsIHRoZSBib3VudHkgd2lsbCBiZSBmdW5kZWQgYW5kIGJlY29tZSBhY3RpdmWoYW5kIHRoZSBvcmlnaW5hbCBkZXBvc2l0IHdpbGwgYmUgcmV0dXJuZWQuAKRNYXkgb25seSBiZSBjYWxsZWQgZnJvbSBgVDo6U3BlbmRPcmlnaW5gLgA0IyMgQ29tcGxleGl0eRwtIE8oMSkuPHByb3Bvc2VfY3VyYXRvcgwBJGJvdW50eV9pZGABLEJvdW50eUluZGV4AAEcY3VyYXRvcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEMZmVloAE8QmFsYW5jZU9mPFQsIEk+AAIYlFByb3Bvc2UgYSBjdXJhdG9yIHRvIGEgZnVuZGVkIGJvdW50eS4ApE1heSBvbmx5IGJlIGNhbGxlZCBmcm9tIGBUOjpTcGVuZE9yaWdpbmAuADQjIyBDb21wbGV4aXR5HC0gTygxKS5AdW5hc3NpZ25fY3VyYXRvcgQBJGJvdW50eV9pZGABLEJvdW50eUluZGV4AANEfFVuYXNzaWduIGN1cmF0b3IgZnJvbSBhIGJvdW50eS4AHQFUaGlzIGZ1bmN0aW9uIGNhbiBvbmx5IGJlIGNhbGxlZCBieSB0aGUgYFJlamVjdE9yaWdpbmAgYSBzaWduZWQgb3JpZ2luLgA9AUlmIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGJ5IHRoZSBgUmVqZWN0T3JpZ2luYCwgd2UgYXNzdW1lIHRoYXQgdGhlIGN1cmF0b3IgaXMxAW1hbGljaW91cyBvciBpbmFjdGl2ZS4gQXMgYSByZXN1bHQsIHdlIHdpbGwgc2xhc2ggdGhlIGN1cmF0b3Igd2hlbiBwb3NzaWJsZS4AYQFJZiB0aGUgb3JpZ2luIGlzIHRoZSBjdXJhdG9yLCB3ZSB0YWtlIHRoaXMgYXMgYSBzaWduIHRoZXkgYXJlIHVuYWJsZSB0byBkbyB0aGVpciBqb2IgYW5kXQF0aGV5IHdpbGxpbmdseSBnaXZlIHVwLiBXZSBjb3VsZCBzbGFzaCB0aGVtLCBidXQgZm9yIG5vdyB3ZSBhbGxvdyB0aGVtIHRvIHJlY292ZXIgdGhlaXI1AWRlcG9zaXQgYW5kIGV4aXQgd2l0aG91dCBpc3N1ZS4gKFdlIG1heSB3YW50IHRvIGNoYW5nZSB0aGlzIGlmIGl0IGlzIGFidXNlZC4pAF0BRmluYWxseSwgdGhlIG9yaWdpbiBjYW4gYmUgYW55b25lIGlmIGFuZCBvbmx5IGlmIHRoZSBjdXJhdG9yIGlzICJpbmFjdGl2ZSIuIFRoaXMgYWxsb3dzYQFhbnlvbmUgaW4gdGhlIGNvbW11bml0eSB0byBjYWxsIG91dCB0aGF0IGEgY3VyYXRvciBpcyBub3QgZG9pbmcgdGhlaXIgZHVlIGRpbGlnZW5jZSwgYW5kOQF3ZSBzaG91bGQgcGljayBhIG5ldyBjdXJhdG9yLiBJbiB0aGlzIGNhc2UgdGhlIGN1cmF0b3Igc2hvdWxkIGFsc28gYmUgc2xhc2hlZC4ANCMjIENvbXBsZXhpdHkcLSBPKDEpLjhhY2NlcHRfY3VyYXRvcgQBJGJvdW50eV9pZGABLEJvdW50eUluZGV4AAQclEFjY2VwdCB0aGUgY3VyYXRvciByb2xlIGZvciBhIGJvdW50eS4pAUEgZGVwb3NpdCB3aWxsIGJlIHJlc2VydmVkIGZyb20gY3VyYXRvciBhbmQgcmVmdW5kIHVwb24gc3VjY2Vzc2Z1bCBwYXlvdXQuAJBNYXkgb25seSBiZSBjYWxsZWQgZnJvbSB0aGUgY3VyYXRvci4ANCMjIENvbXBsZXhpdHkcLSBPKDEpLjBhd2FyZF9ib3VudHkIASRib3VudHlfaWRgASxCb3VudHlJbmRleAABLGJlbmVmaWNpYXJ5AAFQQWNjb3VudElkTG9va3VwT2Y8VD4ABShZAUF3YXJkIGJvdW50eSB0byBhIGJlbmVmaWNpYXJ5IGFjY291bnQuIFRoZSBiZW5lZmljaWFyeSB3aWxsIGJlIGFibGUgdG8gY2xhaW0gdGhlIGZ1bmRzOGFmdGVyIGEgZGVsYXkuABUBVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgdGhlIGN1cmF0b3Igb2YgdGhpcyBib3VudHkuAIgtIGBib3VudHlfaWRgOiBCb3VudHkgSUQgdG8gYXdhcmQuGQEtIGBiZW5lZmljaWFyeWA6IFRoZSBiZW5lZmljaWFyeSBhY2NvdW50IHdob20gd2lsbCByZWNlaXZlIHRoZSBwYXlvdXQuADQjIyBDb21wbGV4aXR5HC0gTygxKS4wY2xhaW1fYm91bnR5BAEkYm91bnR5X2lkYAEsQm91bnR5SW5kZXgABiDsQ2xhaW0gdGhlIHBheW91dCBmcm9tIGFuIGF3YXJkZWQgYm91bnR5IGFmdGVyIHBheW91dCBkZWxheS4AJQFUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSB0aGUgYmVuZWZpY2lhcnkgb2YgdGhpcyBib3VudHkuAIgtIGBib3VudHlfaWRgOiBCb3VudHkgSUQgdG8gY2xhaW0uADQjIyBDb21wbGV4aXR5HC0gTygxKS4wY2xvc2VfYm91bnR5BAEkYm91bnR5X2lkYAEsQm91bnR5SW5kZXgAByQ5AUNhbmNlbCBhIHByb3Bvc2VkIG9yIGFjdGl2ZSBib3VudHkuIEFsbCB0aGUgZnVuZHMgd2lsbCBiZSBzZW50IHRvIHRyZWFzdXJ5IGFuZMx0aGUgY3VyYXRvciBkZXBvc2l0IHdpbGwgYmUgdW5yZXNlcnZlZCBpZiBwb3NzaWJsZS4AyE9ubHkgYFQ6OlJlamVjdE9yaWdpbmAgaXMgYWJsZSB0byBjYW5jZWwgYSBib3VudHkuAIwtIGBib3VudHlfaWRgOiBCb3VudHkgSUQgdG8gY2FuY2VsLgA0IyMgQ29tcGxleGl0eRwtIE8oMSkuUGV4dGVuZF9ib3VudHlfZXhwaXJ5CAEkYm91bnR5X2lkYAEsQm91bnR5SW5kZXgAARhyZW1hcmsYARxWZWM8dTg+AAgkrEV4dGVuZCB0aGUgZXhwaXJ5IHRpbWUgb2YgYW4gYWN0aXZlIGJvdW50eS4AFQFUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSB0aGUgY3VyYXRvciBvZiB0aGlzIGJvdW50eS4AjC0gYGJvdW50eV9pZGA6IEJvdW50eSBJRCB0byBleHRlbmQujC0gYHJlbWFya2A6IGFkZGl0aW9uYWwgaW5mb3JtYXRpb24uADQjIyBDb21wbGV4aXR5HC0gTygxKS5sYXBwcm92ZV9ib3VudHlfd2l0aF9jdXJhdG9yDAEkYm91bnR5X2lkYAEsQm91bnR5SW5kZXgAARxjdXJhdG9yAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AAQxmZWWgATxCYWxhbmNlT2Y8VCwgST4ACSzUQXBwcm92ZSBib3VudHJ5IGFuZCBwcm9wb3NlIGEgY3VyYXRvciBzaW11bHRhbmVvdXNseS5VAVRoaXMgY2FsbCBpcyBhIHNob3J0Y3V0IHRvIGNhbGxpbmcgYGFwcHJvdmVfYm91bnR5YCBhbmQgYHByb3Bvc2VfY3VyYXRvcmAgc2VwYXJhdGVseS4ApE1heSBvbmx5IGJlIGNhbGxlZCBmcm9tIGBUOjpTcGVuZE9yaWdpbmAuAJAtIGBib3VudHlfaWRgOiBCb3VudHkgSUQgdG8gYXBwcm92ZS74LSBgY3VyYXRvcmA6IFRoZSBjdXJhdG9yIGFjY291bnQgd2hvbSB3aWxsIG1hbmFnZSB0aGlzIGJvdW50eS5kLSBgZmVlYDogVGhlIGN1cmF0b3IgZmVlLgA0IyMgQ29tcGxleGl0eRwtIE8oMSkuMHBva2VfZGVwb3NpdAQBJGJvdW50eV9pZGABLEJvdW50eUluZGV4AAo85FBva2UgdGhlIGRlcG9zaXQgcmVzZXJ2ZWQgZm9yIGNyZWF0aW5nIGEgYm91bnR5IHByb3Bvc2FsLgD0VGhpcyBjYW4gYmUgdXNlZCBieSBhY2NvdW50cyB0byB1cGRhdGUgdGhlaXIgcmVzZXJ2ZWQgYW1vdW50LgDMVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgX1NpZ25lZF8uACxQYXJhbWV0ZXJzOvQtIGBib3VudHlfaWRgOiBUaGUgYm91bnR5IGlkIGZvciB3aGljaCB0byBhZGp1c3QgdGhlIGRlcG9zaXQuADkBSWYgdGhlIGRlcG9zaXQgaXMgdXBkYXRlZCwgdGhlIGRpZmZlcmVuY2Ugd2lsbCBiZSByZXNlcnZlZC91bnJlc2VydmVkIGZyb20gdGhlTHByb3Bvc2VyJ3MgYWNjb3VudC4AKQFUaGUgdHJhbnNhY3Rpb24gaXMgbWFkZSBmcmVlIGlmIHRoZSBkZXBvc2l0IGlzIHVwZGF0ZWQgYW5kIHBhaWQgb3RoZXJ3aXNlLgC8RW1pdHMgYERlcG9zaXRQb2tlZGAgaWYgdGhlIGRlcG9zaXQgaXMgdXBkYXRlZC4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuhQIMVHBhbGxldF9jaGlsZF9ib3VudGllcxhwYWxsZXQQQ2FsbAQEVAABHEBhZGRfY2hpbGRfYm91bnR5DAFAcGFyZW50X2JvdW50eV9pZGABLEJvdW50eUluZGV4AAEUdmFsdWWgATBCYWxhbmNlT2Y8VD4AASxkZXNjcmlwdGlvbhgBHFZlYzx1OD4AAExcQWRkIGEgbmV3IGNoaWxkLWJvdW50eS4A/FRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIHRoZSBjdXJhdG9yIG9mIHBhcmVudNxib3VudHkgYW5kIHRoZSBwYXJlbnQgYm91bnR5IG11c3QgYmUgaW4gImFjdGl2ZSIgc3RhdGUuAAUBQ2hpbGQtYm91bnR5IGdldHMgYWRkZWQgc3VjY2Vzc2Z1bGx5ICYgZnVuZCBnZXRzIHRyYW5zZmVycmVkIGZyb20JAXBhcmVudCBib3VudHkgdG8gY2hpbGQtYm91bnR5IGFjY291bnQsIGlmIHBhcmVudCBib3VudHkgaGFzIGVub3VnaGxmdW5kcywgZWxzZSB0aGUgY2FsbCBmYWlscy4ADQFVcHBlciBib3VuZCB0byBtYXhpbXVtIG51bWJlciBvZiBhY3RpdmUgIGNoaWxkIGJvdW50aWVzIHRoYXQgY2FuIGJlqGFkZGVkIGFyZSBtYW5hZ2VkIHZpYSBydW50aW1lIHRyYWl0IGNvbmZpZ5hbYENvbmZpZzo6TWF4QWN0aXZlQ2hpbGRCb3VudHlDb3VudGBdLgABAUlmIHRoZSBjYWxsIGlzIHN1Y2Nlc3MsIHRoZSBzdGF0dXMgb2YgY2hpbGQtYm91bnR5IGlzIHVwZGF0ZWQgdG8gIkFkZGVkIi4ATQEtIGBwYXJlbnRfYm91bnR5X2lkYDogSW5kZXggb2YgcGFyZW50IGJvdW50eSBmb3Igd2hpY2ggY2hpbGQtYm91bnR5IGlzIGJlaW5nIGFkZGVkLrAtIGB2YWx1ZWA6IFZhbHVlIGZvciBleGVjdXRpbmcgdGhlIHByb3Bvc2FsLtwtIGBkZXNjcmlwdGlvbmA6IFRleHQgZGVzY3JpcHRpb24gZm9yIHRoZSBjaGlsZC1ib3VudHkuPHByb3Bvc2VfY3VyYXRvchABQHBhcmVudF9ib3VudHlfaWRgASxCb3VudHlJbmRleAABPGNoaWxkX2JvdW50eV9pZGABLEJvdW50eUluZGV4AAEcY3VyYXRvcgABUEFjY291bnRJZExvb2t1cE9mPFQ+AAEMZmVloAEwQmFsYW5jZU9mPFQ+AAE8oFByb3Bvc2UgY3VyYXRvciBmb3IgZnVuZGVkIGNoaWxkLWJvdW50eS4ADQFUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSBjdXJhdG9yIG9mIHBhcmVudCBib3VudHkuABEBUGFyZW50IGJvdW50eSBtdXN0IGJlIGluIGFjdGl2ZSBzdGF0ZSwgZm9yIHRoaXMgY2hpbGQtYm91bnR5IGNhbGwgdG8Ud29yay4ADQFDaGlsZC1ib3VudHkgbXVzdCBiZSBpbiAiQWRkZWQiIHN0YXRlLCBmb3IgcHJvY2Vzc2luZyB0aGUgY2FsbC4gQW5kBQFzdGF0ZSBvZiBjaGlsZC1ib3VudHkgaXMgbW92ZWQgdG8gIkN1cmF0b3JQcm9wb3NlZCIgb24gc3VjY2Vzc2Z1bEBjYWxsIGNvbXBsZXRpb24uALQtIGBwYXJlbnRfYm91bnR5X2lkYDogSW5kZXggb2YgcGFyZW50IGJvdW50eS6sLSBgY2hpbGRfYm91bnR5X2lkYDogSW5kZXggb2YgY2hpbGQgYm91bnR5LrQtIGBjdXJhdG9yYDogQWRkcmVzcyBvZiBjaGlsZC1ib3VudHkgY3VyYXRvci7sLSBgZmVlYDogcGF5bWVudCBmZWUgdG8gY2hpbGQtYm91bnR5IGN1cmF0b3IgZm9yIGV4ZWN1dGlvbi44YWNjZXB0X2N1cmF0b3IIAUBwYXJlbnRfYm91bnR5X2lkYAEsQm91bnR5SW5kZXgAATxjaGlsZF9ib3VudHlfaWRgASxCb3VudHlJbmRleAACTLRBY2NlcHQgdGhlIGN1cmF0b3Igcm9sZSBmb3IgdGhlIGNoaWxkLWJvdW50eS4A9FRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIHRoZSBjdXJhdG9yIG9mIHRoaXM0Y2hpbGQtYm91bnR5LgDsQSBkZXBvc2l0IHdpbGwgYmUgcmVzZXJ2ZWQgZnJvbSB0aGUgY3VyYXRvciBhbmQgcmVmdW5kIHVwb26Ic3VjY2Vzc2Z1bCBwYXlvdXQgb3IgY2FuY2VsbGF0aW9uLgD4RmVlIGZvciBjdXJhdG9yIGlzIGRlZHVjdGVkIGZyb20gY3VyYXRvciBmZWUgb2YgcGFyZW50IGJvdW50eS4AEQFQYXJlbnQgYm91bnR5IG11c3QgYmUgaW4gYWN0aXZlIHN0YXRlLCBmb3IgdGhpcyBjaGlsZC1ib3VudHkgY2FsbCB0bxR3b3JrLgANAUNoaWxkLWJvdW50eSBtdXN0IGJlIGluICJDdXJhdG9yUHJvcG9zZWQiIHN0YXRlLCBmb3IgcHJvY2Vzc2luZyB0aGUJAWNhbGwuIEFuZCBzdGF0ZSBvZiBjaGlsZC1ib3VudHkgaXMgbW92ZWQgdG8gIkFjdGl2ZSIgb24gc3VjY2Vzc2Z1bEBjYWxsIGNvbXBsZXRpb24uALQtIGBwYXJlbnRfYm91bnR5X2lkYDogSW5kZXggb2YgcGFyZW50IGJvdW50eS6sLSBgY2hpbGRfYm91bnR5X2lkYDogSW5kZXggb2YgY2hpbGQgYm91bnR5LkB1bmFzc2lnbl9jdXJhdG9yCAFAcGFyZW50X2JvdW50eV9pZGABLEJvdW50eUluZGV4AAE8Y2hpbGRfYm91bnR5X2lkYAEsQm91bnR5SW5kZXgAA4iUVW5hc3NpZ24gY3VyYXRvciBmcm9tIGEgY2hpbGQtYm91bnR5LgAJAVRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBjYW4gYmUgZWl0aGVyIGBSZWplY3RPcmlnaW5gLCBvctx0aGUgY3VyYXRvciBvZiB0aGUgcGFyZW50IGJvdW50eSwgb3IgYW55IHNpZ25lZCBvcmlnaW4uAPhGb3IgdGhlIG9yaWdpbiBvdGhlciB0aGFuIFQ6OlJlamVjdE9yaWdpbiBhbmQgdGhlIGNoaWxkLWJvdW50eQEBY3VyYXRvciwgcGFyZW50IGJvdW50eSBtdXN0IGJlIGluIGFjdGl2ZSBzdGF0ZSwgZm9yIHRoaXMgY2FsbCB0bwkBd29yay4gV2UgYWxsb3cgY2hpbGQtYm91bnR5IGN1cmF0b3IgYW5kIFQ6OlJlamVjdE9yaWdpbiB0byBleGVjdXRlyHRoaXMgY2FsbCBpcnJlc3BlY3RpdmUgb2YgdGhlIHBhcmVudCBib3VudHkgc3RhdGUuANxJZiB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBieSB0aGUgYFJlamVjdE9yaWdpbmAgb3IgdGhlBQFwYXJlbnQgYm91bnR5IGN1cmF0b3IsIHdlIGFzc3VtZSB0aGF0IHRoZSBjaGlsZC1ib3VudHkgY3VyYXRvciBpcw0BbWFsaWNpb3VzIG9yIGluYWN0aXZlLiBBcyBhIHJlc3VsdCwgY2hpbGQtYm91bnR5IGN1cmF0b3IgZGVwb3NpdCBpcyBzbGFzaGVkLgAFAUlmIHRoZSBvcmlnaW4gaXMgdGhlIGNoaWxkLWJvdW50eSBjdXJhdG9yLCB3ZSB0YWtlIHRoaXMgYXMgYSBzaWduCQF0aGF0IHRoZXkgYXJlIHVuYWJsZSB0byBkbyB0aGVpciBqb2IsIGFuZCBhcmUgd2lsbGluZ2x5IGdpdmluZyB1cC4JAVdlIGNvdWxkIHNsYXNoIHRoZSBkZXBvc2l0LCBidXQgZm9yIG5vdyB3ZSBhbGxvdyB0aGVtIHRvIHVucmVzZXJ2ZREBdGhlaXIgZGVwb3NpdCBhbmQgZXhpdCB3aXRob3V0IGlzc3VlLiAoV2UgbWF5IHdhbnQgdG8gY2hhbmdlIHRoaXMgaWY4aXQgaXMgYWJ1c2VkLikABQFGaW5hbGx5LCB0aGUgb3JpZ2luIGNhbiBiZSBhbnlvbmUgaWZmIHRoZSBjaGlsZC1ib3VudHkgY3VyYXRvciBpcwkBImluYWN0aXZlIi4gRXhwaXJ5IHVwZGF0ZSBkdWUgb2YgcGFyZW50IGJvdW50eSBpcyB1c2VkIHRvIGVzdGltYXRlnGluYWN0aXZlIHN0YXRlIG9mIGNoaWxkLWJvdW50eSBjdXJhdG9yLgANAVRoaXMgYWxsb3dzIGFueW9uZSBpbiB0aGUgY29tbXVuaXR5IHRvIGNhbGwgb3V0IHRoYXQgYSBjaGlsZC1ib3VudHkJAWN1cmF0b3IgaXMgbm90IGRvaW5nIHRoZWlyIGR1ZSBkaWxpZ2VuY2UsIGFuZCB3ZSBzaG91bGQgcGljayBhIG5ld/hvbmUuIEluIHRoaXMgY2FzZSB0aGUgY2hpbGQtYm91bnR5IGN1cmF0b3IgZGVwb3NpdCBpcyBzbGFzaGVkLgABAVN0YXRlIG9mIGNoaWxkLWJvdW50eSBpcyBtb3ZlZCB0byBBZGRlZCBzdGF0ZSBvbiBzdWNjZXNzZnVsIGNhbGwsY29tcGxldGlvbi4AtC0gYHBhcmVudF9ib3VudHlfaWRgOiBJbmRleCBvZiBwYXJlbnQgYm91bnR5LqwtIGBjaGlsZF9ib3VudHlfaWRgOiBJbmRleCBvZiBjaGlsZCBib3VudHkuSGF3YXJkX2NoaWxkX2JvdW50eQwBQHBhcmVudF9ib3VudHlfaWRgASxCb3VudHlJbmRleAABPGNoaWxkX2JvdW50eV9pZGABLEJvdW50eUluZGV4AAEsYmVuZWZpY2lhcnkAAVBBY2NvdW50SWRMb29rdXBPZjxUPgAERJBBd2FyZCBjaGlsZC1ib3VudHkgdG8gYSBiZW5lZmljaWFyeS4A+FRoZSBiZW5lZmljaWFyeSB3aWxsIGJlIGFibGUgdG8gY2xhaW0gdGhlIGZ1bmRzIGFmdGVyIGEgZGVsYXkuAPxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbXVzdCBiZSB0aGUgcGFyZW50IGN1cmF0b3Igb3J0Y3VyYXRvciBvZiB0aGlzIGNoaWxkLWJvdW50eS4AEQFQYXJlbnQgYm91bnR5IG11c3QgYmUgaW4gYWN0aXZlIHN0YXRlLCBmb3IgdGhpcyBjaGlsZC1ib3VudHkgY2FsbCB0bxR3b3JrLgAJAUNoaWxkLWJvdW50eSBtdXN0IGJlIGluIGFjdGl2ZSBzdGF0ZSwgZm9yIHByb2Nlc3NpbmcgdGhlIGNhbGwuIEFuZBEBc3RhdGUgb2YgY2hpbGQtYm91bnR5IGlzIG1vdmVkIHRvICJQZW5kaW5nUGF5b3V0IiBvbiBzdWNjZXNzZnVsIGNhbGwsY29tcGxldGlvbi4AtC0gYHBhcmVudF9ib3VudHlfaWRgOiBJbmRleCBvZiBwYXJlbnQgYm91bnR5LqwtIGBjaGlsZF9ib3VudHlfaWRgOiBJbmRleCBvZiBjaGlsZCBib3VudHkulC0gYGJlbmVmaWNpYXJ5YDogQmVuZWZpY2lhcnkgYWNjb3VudC5IY2xhaW1fY2hpbGRfYm91bnR5CAFAcGFyZW50X2JvdW50eV9pZGABLEJvdW50eUluZGV4AAE8Y2hpbGRfYm91bnR5X2lkYAEsQm91bnR5SW5kZXgABUAFAUNsYWltIHRoZSBwYXlvdXQgZnJvbSBhbiBhd2FyZGVkIGNoaWxkLWJvdW50eSBhZnRlciBwYXlvdXQgZGVsYXkuAOxUaGUgZGlzcGF0Y2ggb3JpZ2luIGZvciB0aGlzIGNhbGwgbWF5IGJlIGFueSBzaWduZWQgb3JpZ2luLgAFAUNhbGwgd29ya3MgaW5kZXBlbmRlbnQgb2YgcGFyZW50IGJvdW50eSBzdGF0ZSwgTm8gbmVlZCBmb3IgcGFyZW50dGJvdW50eSB0byBiZSBpbiBhY3RpdmUgc3RhdGUuABEBVGhlIEJlbmVmaWNpYXJ5IGlzIHBhaWQgb3V0IHdpdGggYWdyZWVkIGJvdW50eSB2YWx1ZS4gQ3VyYXRvciBmZWUgaXOUcGFpZCAmIGN1cmF0b3IgZGVwb3NpdCBpcyB1bnJlc2VydmVkLgAFAUNoaWxkLWJvdW50eSBtdXN0IGJlIGluICJQZW5kaW5nUGF5b3V0IiBzdGF0ZSwgZm9yIHByb2Nlc3NpbmcgdGhl/GNhbGwuIEFuZCBpbnN0YW5jZSBvZiBjaGlsZC1ib3VudHkgaXMgcmVtb3ZlZCBmcm9tIHRoZSBzdGF0ZSBvbmxzdWNjZXNzZnVsIGNhbGwgY29tcGxldGlvbi4AtC0gYHBhcmVudF9ib3VudHlfaWRgOiBJbmRleCBvZiBwYXJlbnQgYm91bnR5LqwtIGBjaGlsZF9ib3VudHlfaWRgOiBJbmRleCBvZiBjaGlsZCBib3VudHkuSGNsb3NlX2NoaWxkX2JvdW50eQgBQHBhcmVudF9ib3VudHlfaWRgASxCb3VudHlJbmRleAABPGNoaWxkX2JvdW50eV9pZGABLEJvdW50eUluZGV4AAZYEQFDYW5jZWwgYSBwcm9wb3NlZCBvciBhY3RpdmUgY2hpbGQtYm91bnR5LiBDaGlsZC1ib3VudHkgYWNjb3VudCBmdW5kcwkBYXJlIHRyYW5zZmVycmVkIHRvIHBhcmVudCBib3VudHkgYWNjb3VudC4gVGhlIGNoaWxkLWJvdW50eSBjdXJhdG9ymGRlcG9zaXQgbWF5IGJlIHVucmVzZXJ2ZWQgaWYgcG9zc2libGUuAAkBVGhlIGRpc3BhdGNoIG9yaWdpbiBmb3IgdGhpcyBjYWxsIG11c3QgYmUgZWl0aGVyIHBhcmVudCBjdXJhdG9yIG9ySGBUOjpSZWplY3RPcmlnaW5gLgDwSWYgdGhlIHN0YXRlIG9mIGNoaWxkLWJvdW50eSBpcyBgQWN0aXZlYCwgY3VyYXRvciBkZXBvc2l0IGlzLHVucmVzZXJ2ZWQuAPRJZiB0aGUgc3RhdGUgb2YgY2hpbGQtYm91bnR5IGlzIGBQZW5kaW5nUGF5b3V0YCwgY2FsbCBmYWlscyAmeHJldHVybnMgYFBlbmRpbmdQYXlvdXRgIGVycm9yLgANAUZvciB0aGUgb3JpZ2luIG90aGVyIHRoYW4gVDo6UmVqZWN0T3JpZ2luLCBwYXJlbnQgYm91bnR5IG11c3QgYmUgaW7wYWN0aXZlIHN0YXRlLCBmb3IgdGhpcyBjaGlsZC1ib3VudHkgY2FsbCB0byB3b3JrLiBGb3Igb3JpZ2lukFQ6OlJlamVjdE9yaWdpbiBleGVjdXRpb24gaXMgZm9yY2VkLgABAUluc3RhbmNlIG9mIGNoaWxkLWJvdW50eSBpcyByZW1vdmVkIGZyb20gdGhlIHN0YXRlIG9uIHN1Y2Nlc3NmdWxAY2FsbCBjb21wbGV0aW9uLgC0LSBgcGFyZW50X2JvdW50eV9pZGA6IEluZGV4IG9mIHBhcmVudCBib3VudHkurC0gYGNoaWxkX2JvdW50eV9pZGA6IEluZGV4IG9mIGNoaWxkIGJvdW50eS4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMuiQIMkHBhbGxldF9lbGVjdGlvbl9wcm92aWRlcl9tdWx0aV9waGFzZRhwYWxsZXQQQ2FsbAQEVAABFDxzdWJtaXRfdW5zaWduZWQIATByYXdfc29sdXRpb26NAgGwQm94PFJhd1NvbHV0aW9uPFNvbHV0aW9uT2Y8VDo6TWluZXJDb25maWc+Pj4AARx3aXRuZXNzYQMBWFNvbHV0aW9uT3JTbmFwc2hvdFNpemUAADikU3VibWl0IGEgc29sdXRpb24gZm9yIHRoZSB1bnNpZ25lZCBwaGFzZS4AyFRoZSBkaXNwYXRjaCBvcmlnaW4gZm8gdGhpcyBjYWxsIG11c3QgYmUgX19ub25lX18uAD0BVGhpcyBzdWJtaXNzaW9uIGlzIGNoZWNrZWQgb24gdGhlIGZseS4gTW9yZW92ZXIsIHRoaXMgdW5zaWduZWQgc29sdXRpb24gaXMgb25seVUBdmFsaWRhdGVkIHdoZW4gc3VibWl0dGVkIHRvIHRoZSBwb29sIGZyb20gdGhlICoqbG9jYWwqKiBub2RlLiBFZmZlY3RpdmVseSwgdGhpcyBtZWFuc10BdGhhdCBvbmx5IGFjdGl2ZSB2YWxpZGF0b3JzIGNhbiBzdWJtaXQgdGhpcyB0cmFuc2FjdGlvbiB3aGVuIGF1dGhvcmluZyBhIGJsb2NrIChzaW1pbGFyQHRvIGFuIGluaGVyZW50KS4AWQFUbyBwcmV2ZW50IGFueSBpbmNvcnJlY3Qgc29sdXRpb24gKGFuZCB0aHVzIHdhc3RlZCB0aW1lL3dlaWdodCksIHRoaXMgdHJhbnNhY3Rpb24gd2lsbE0BcGFuaWMgaWYgdGhlIHNvbHV0aW9uIHN1Ym1pdHRlZCBieSB0aGUgdmFsaWRhdG9yIGlzIGludmFsaWQgaW4gYW55IHdheSwgZWZmZWN0aXZlbHmccHV0dGluZyB0aGVpciBhdXRob3JpbmcgcmV3YXJkIGF0IHJpc2suAOBObyBkZXBvc2l0IG9yIHJld2FyZCBpcyBhc3NvY2lhdGVkIHdpdGggdGhpcyBzdWJtaXNzaW9uLmxzZXRfbWluaW11bV91bnRydXN0ZWRfc2NvcmUEAUBtYXliZV9uZXh0X3Njb3JlZQMBVE9wdGlvbjxFbGVjdGlvblNjb3JlPgABFLBTZXQgYSBuZXcgdmFsdWUgZm9yIGBNaW5pbXVtVW50cnVzdGVkU2NvcmVgLgDYRGlzcGF0Y2ggb3JpZ2luIG11c3QgYmUgYWxpZ25lZCB3aXRoIGBUOjpGb3JjZU9yaWdpbmAuAPBUaGlzIGNoZWNrIGNhbiBiZSB0dXJuZWQgb2ZmIGJ5IHNldHRpbmcgdGhlIHZhbHVlIHRvIGBOb25lYC50c2V0X2VtZXJnZW5jeV9lbGVjdGlvbl9yZXN1bHQEASBzdXBwb3J0c2kDAVhTdXBwb3J0czxUOjpBY2NvdW50SWQ+AAIgWQFTZXQgYSBzb2x1dGlvbiBpbiB0aGUgcXVldWUsIHRvIGJlIGhhbmRlZCBvdXQgdG8gdGhlIGNsaWVudCBvZiB0aGlzIHBhbGxldCBpbiB0aGUgbmV4dIhjYWxsIHRvIGBFbGVjdGlvblByb3ZpZGVyOjplbGVjdGAuAEUBVGhpcyBjYW4gb25seSBiZSBzZXQgYnkgYFQ6OkZvcmNlT3JpZ2luYCwgYW5kIG9ubHkgd2hlbiB0aGUgcGhhc2UgaXMgYEVtZXJnZW5jeWAuAGEBVGhlIHNvbHV0aW9uIGlzIG5vdCBjaGVja2VkIGZvciBhbnkgZmVhc2liaWxpdHkgYW5kIGlzIGFzc3VtZWQgdG8gYmUgdHJ1c3R3b3J0aHksIGFzIGFueVEBZmVhc2liaWxpdHkgY2hlY2sgaXRzZWxmIGNhbiBpbiBwcmluY2lwbGUgY2F1c2UgdGhlIGVsZWN0aW9uIHByb2Nlc3MgdG8gZmFpbCAoZHVlIHRvaG1lbW9yeS93ZWlnaHQgY29uc3RyYWlucykuGHN1Ym1pdAQBMHJhd19zb2x1dGlvbo0CAbBCb3g8UmF3U29sdXRpb248U29sdXRpb25PZjxUOjpNaW5lckNvbmZpZz4+PgADJJxTdWJtaXQgYSBzb2x1dGlvbiBmb3IgdGhlIHNpZ25lZCBwaGFzZS4A0FRoZSBkaXNwYXRjaCBvcmlnaW4gZm8gdGhpcyBjYWxsIG11c3QgYmUgX19zaWduZWRfXy4AXQFUaGUgc29sdXRpb24gaXMgcG90ZW50aWFsbHkgcXVldWVkLCBiYXNlZCBvbiB0aGUgY2xhaW1lZCBzY29yZSBhbmQgcHJvY2Vzc2VkIGF0IHRoZSBlbmRQb2YgdGhlIHNpZ25lZCBwaGFzZS4AXQFBIGRlcG9zaXQgaXMgcmVzZXJ2ZWQgYW5kIHJlY29yZGVkIGZvciB0aGUgc29sdXRpb24uIEJhc2VkIG9uIHRoZSBvdXRjb21lLCB0aGUgc29sdXRpb24VAW1pZ2h0IGJlIHJld2FyZGVkLCBzbGFzaGVkLCBvciBnZXQgYWxsIG9yIGEgcGFydCBvZiB0aGUgZGVwb3NpdCBiYWNrLkxnb3Zlcm5hbmNlX2ZhbGxiYWNrAAQQgFRyaWdnZXIgdGhlIGdvdmVybmFuY2UgZmFsbGJhY2suAEkBVGhpcyBjYW4gb25seSBiZSBjYWxsZWQgd2hlbiBbYFBoYXNlOjpFbWVyZ2VuY3lgXSBpcyBlbmFibGVkLCBhcyBhbiBhbHRlcm5hdGl2ZSB0b8BjYWxsaW5nIFtgQ2FsbDo6c2V0X2VtZXJnZW5jeV9lbGVjdGlvbl9yZXN1bHRgXS4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMujQIIkHBhbGxldF9lbGVjdGlvbl9wcm92aWRlcl9tdWx0aV9waGFzZSxSYXdTb2x1dGlvbgQEUwGRAgAMASBzb2x1dGlvbpECAQRTAAEUc2NvcmVdAwE0RWxlY3Rpb25TY29yZQABFHJvdW5kOAEMdTMyAACRAghAcG9sa2Fkb3RfcnVudGltZVROcG9zQ29tcGFjdFNvbHV0aW9uMTYAAEABGHZvdGVzMZUCAAABGHZvdGVzMqECAAABGHZvdGVzM7UCAAABGHZvdGVzNMECAAABGHZvdGVzNc0CAAABGHZvdGVzNtkCAAABGHZvdGVzN+UCAAABGHZvdGVzOPECAAABGHZvdGVzOf0CAAABHHZvdGVzMTAJAwAAARx2b3RlczExFQMAAAEcdm90ZXMxMiEDAAABHHZvdGVzMTMtAwAAARx2b3RlczE0OQMAAAEcdm90ZXMxNUUDAAABHHZvdGVzMTZRAwAAAJUCAAACmQIAmQIAAAQIYJ0CAJ0CAAAG9QEAoQIAAAKlAgClAgAABAxgqQKdAgCpAgAABAidAq0CAK0CAAAGsQIAsQIMNHNwX2FyaXRobWV0aWMocGVyX3RoaW5ncxhQZXJVMTYAAAQA9QEBDHUxNgAAtQIAAAK5AgC5AgAABAxgvQKdAgC9AgAAAwIAAACpAgDBAgAAAsUCAMUCAAAEDGDJAp0CAMkCAAADAwAAAKkCAM0CAAAC0QIA0QIAAAQMYNUCnQIA1QIAAAMEAAAAqQIA2QIAAALdAgDdAgAABAxg4QKdAgDhAgAAAwUAAACpAgDlAgAAAukCAOkCAAAEDGDtAp0CAO0CAAADBgAAAKkCAPECAAAC9QIA9QIAAAQMYPkCnQIA+QIAAAMHAAAAqQIA/QIAAAIBAwABAwAABAxgBQOdAgAFAwAAAwgAAACpAgAJAwAAAg0DAA0DAAAEDGARA50CABEDAAADCQAAAKkCABUDAAACGQMAGQMAAAQMYB0DnQIAHQMAAAMKAAAAqQIAIQMAAAIlAwAlAwAABAxgKQOdAgApAwAAAwsAAACpAgAtAwAAAjEDADEDAAAEDGA1A50CADUDAAADDAAAAKkCADkDAAACPQMAPQMAAAQMYEEDnQIAQQMAAAMNAAAAqQIARQMAAAJJAwBJAwAABAxgTQOdAgBNAwAAAw4AAACpAgBRAwAAAlUDAFUDAAAEDGBZA50CAFkDAAADDwAAAKkCAF0DCERzcF9ucG9zX2VsZWN0aW9uczRFbGVjdGlvblNjb3JlAAAMATRtaW5pbWFsX3N0YWtlpAE8RXh0ZW5kZWRCYWxhbmNlAAEkc3VtX3N0YWtlpAE8RXh0ZW5kZWRCYWxhbmNlAAFEc3VtX3N0YWtlX3NxdWFyZWSkATxFeHRlbmRlZEJhbGFuY2UAAGEDCJBwYWxsZXRfZWxlY3Rpb25fcHJvdmlkZXJfbXVsdGlfcGhhc2VYU29sdXRpb25PclNuYXBzaG90U2l6ZQAACAEYdm90ZXJzYAEMdTMyAAEcdGFyZ2V0c2ABDHUzMgAAZQMEGE9wdGlvbgQEVAFdAwEIEE5vbmUAAAAQU29tZQQAXQMAAAEAAGkDAAACbQMAbQMAAAQIBHEDAHEDCERzcF9ucG9zX2VsZWN0aW9ucxxTdXBwb3J0BCRBY2NvdW50SWQBBAAIARR0b3RhbKQBPEV4dGVuZGVkQmFsYW5jZQABGHZvdGVyc3UDAYRWZWM8KEFjY291bnRJZCwgRXh0ZW5kZWRCYWxhbmNlKT4AAHUDAAACeQMAeQMAAAQIBKQAfQMMQHBhbGxldF9iYWdzX2xpc3QYcGFsbGV0EENhbGwIBFQABEkAAQwUcmViYWcEAShkaXNsb2NhdGVkAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AAChZAURlY2xhcmUgdGhhdCBzb21lIGBkaXNsb2NhdGVkYCBhY2NvdW50IGhhcywgdGhyb3VnaCByZXdhcmRzIG9yIHBlbmFsdGllcywgc3VmZmljaWVudGx5UQFjaGFuZ2VkIGl0cyBzY29yZSB0aGF0IGl0IHNob3VsZCBwcm9wZXJseSBmYWxsIGludG8gYSBkaWZmZXJlbnQgYmFnIHRoYW4gaXRzIGN1cnJlbnQQb25lLgAdAUFueW9uZSBjYW4gY2FsbCB0aGlzIGZ1bmN0aW9uIGFib3V0IGFueSBwb3RlbnRpYWxseSBkaXNsb2NhdGVkIGFjY291bnQuAEkBV2lsbCBhbHdheXMgdXBkYXRlIHRoZSBzdG9yZWQgc2NvcmUgb2YgYGRpc2xvY2F0ZWRgIHRvIHRoZSBjb3JyZWN0IHNjb3JlLCBiYXNlZCBvbkBgU2NvcmVQcm92aWRlcmAuANRJZiBgZGlzbG9jYXRlZGAgZG9lcyBub3QgZXhpc3RzLCBpdCByZXR1cm5zIGFuIGVycm9yLjxwdXRfaW5fZnJvbnRfb2YEARxsaWdodGVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AASjQTW92ZSB0aGUgY2FsbGVyJ3MgSWQgZGlyZWN0bHkgaW4gZnJvbnQgb2YgYGxpZ2h0ZXJgLgBZAVRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlIF9TaWduZWRfIGFuZCBjYW4gb25seSBiZSBjYWxsZWQgYnkgdGhlIElkIG9mNQF0aGUgYWNjb3VudCBnb2luZyBpbiBmcm9udCBvZiBgbGlnaHRlcmAuIEZlZSBpcyBwYXllZCBieSB0aGUgb3JpZ2luIHVuZGVyIGFsbDhjaXJjdW1zdGFuY2VzLgA4T25seSB3b3JrcyBpZjoAlC0gYm90aCBub2RlcyBhcmUgd2l0aGluIHRoZSBzYW1lIGJhZyzQLSBhbmQgYG9yaWdpbmAgaGFzIGEgZ3JlYXRlciBgU2NvcmVgIHRoYW4gYGxpZ2h0ZXJgLlRwdXRfaW5fZnJvbnRfb2Zfb3RoZXIIARxoZWF2aWVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AARxsaWdodGVyAAFQQWNjb3VudElkTG9va3VwT2Y8VD4AAgwRAVNhbWUgYXMgW2BQYWxsZXQ6OnB1dF9pbl9mcm9udF9vZmBdLCBidXQgaXQgY2FuIGJlIGNhbGxlZCBieSBhbnlvbmUuAMhGZWUgaXMgcGFpZCBieSB0aGUgb3JpZ2luIHVuZGVyIGFsbCBjaXJjdW1zdGFuY2VzLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy6BAwxccGFsbGV0X25vbWluYXRpb25fcG9vbHMYcGFsbGV0EENhbGwEBFQAAWgQam9pbggBGGFtb3VudKABMEJhbGFuY2VPZjxUPgABHHBvb2xfaWQ4ARhQb29sSWQAAEBFAVN0YWtlIGZ1bmRzIHdpdGggYSBwb29sLiBUaGUgYW1vdW50IHRvIGJvbmQgaXMgZGVsZWdhdGVkIChvciB0cmFuc2ZlcnJlZCBiYXNlZCBvbk0BW2BhZGFwdGVyOjpTdGFrZVN0cmF0ZWd5VHlwZWBdKSBmcm9tIHRoZSBtZW1iZXIgdG8gdGhlIHBvb2wgYWNjb3VudCBhbmQgaW1tZWRpYXRlbHloaW5jcmVhc2VzIHRoZSBwb29sJ3MgYm9uZC4AKQFUaGUgbWV0aG9kIG9mIHRyYW5zZmVycmluZyB0aGUgYW1vdW50IHRvIHRoZSBwb29sIGFjY291bnQgaXMgZGV0ZXJtaW5lZCBieQEBW2BhZGFwdGVyOjpTdGFrZVN0cmF0ZWd5VHlwZWBdLiBJZiB0aGUgcG9vbCBpcyBjb25maWd1cmVkIHRvIHVzZTEBW2BhZGFwdGVyOjpTdGFrZVN0cmF0ZWd5VHlwZTo6RGVsZWdhdGVgXSwgdGhlIGZ1bmRzIHJlbWFpbiBpbiB0aGUgYWNjb3VudCBvZjEBdGhlIGBvcmlnaW5gLCB3aGlsZSB0aGUgcG9vbCBnYWlucyB0aGUgcmlnaHQgdG8gdXNlIHRoZXNlIGZ1bmRzIGZvciBzdGFraW5nLgAYIyBOb3RlAMwqIEFuIGFjY291bnQgY2FuIG9ubHkgYmUgYSBtZW1iZXIgb2YgYSBzaW5nbGUgcG9vbC7YKiBBbiBhY2NvdW50IGNhbm5vdCBqb2luIHRoZSBzYW1lIHBvb2wgbXVsdGlwbGUgdGltZXMuQQEqIFRoaXMgY2FsbCB3aWxsICpub3QqIGR1c3QgdGhlIG1lbWJlciBhY2NvdW50LCBzbyB0aGUgbWVtYmVyIG11c3QgaGF2ZSBhdCBsZWFzdMggIGBleGlzdGVudGlhbCBkZXBvc2l0ICsgYW1vdW50YCBpbiB0aGVpciBhY2NvdW50LtAqIE9ubHkgYSBwb29sIHdpdGggW2BQb29sU3RhdGU6Ok9wZW5gXSBjYW4gYmUgam9pbmVkKGJvbmRfZXh0cmEEARRleHRyYYUDAVxCb25kRXh0cmE8QmFsYW5jZU9mPFQ+PgABHEUBQm9uZCBgZXh0cmFgIG1vcmUgZnVuZHMgZnJvbSBgb3JpZ2luYCBpbnRvIHRoZSBwb29sIHRvIHdoaWNoIHRoZXkgYWxyZWFkeSBiZWxvbmcuAEkBQWRkaXRpb25hbCBmdW5kcyBjYW4gY29tZSBmcm9tIGVpdGhlciB0aGUgZnJlZSBiYWxhbmNlIG9mIHRoZSBhY2NvdW50LCBvZiBmcm9tIHRoZZxhY2N1bXVsYXRlZCByZXdhcmRzLCBzZWUgW2BCb25kRXh0cmFgXS4APQFCb25kaW5nIGV4dHJhIGZ1bmRzIGltcGxpZXMgYW4gYXV0b21hdGljIHBheW91dCBvZiBhbGwgcGVuZGluZyByZXdhcmRzIGFzIHdlbGwuCQFTZWUgYGJvbmRfZXh0cmFfb3RoZXJgIHRvIGJvbmQgcGVuZGluZyByZXdhcmRzIG9mIGBvdGhlcmAgbWVtYmVycy4wY2xhaW1fcGF5b3V0AAIgVQFBIGJvbmRlZCBtZW1iZXIgY2FuIHVzZSB0aGlzIHRvIGNsYWltIHRoZWlyIHBheW91dCBiYXNlZCBvbiB0aGUgcmV3YXJkcyB0aGF0IHRoZSBwb29sYQFoYXMgYWNjdW11bGF0ZWQgc2luY2UgdGhlaXIgbGFzdCBjbGFpbWVkIHBheW91dCAoT1Igc2luY2Ugam9pbmluZyBpZiB0aGlzIGlzIHRoZWlyIGZpcnN0PQF0aW1lIGNsYWltaW5nIHJld2FyZHMpLiBUaGUgcGF5b3V0IHdpbGwgYmUgdHJhbnNmZXJyZWQgdG8gdGhlIG1lbWJlcidzIGFjY291bnQuAEkBVGhlIG1lbWJlciB3aWxsIGVhcm4gcmV3YXJkcyBwcm8gcmF0YSBiYXNlZCBvbiB0aGUgbWVtYmVycyBzdGFrZSB2cyB0aGUgc3VtIG9mIHRoZdBtZW1iZXJzIGluIHRoZSBwb29scyBzdGFrZS4gUmV3YXJkcyBkbyBub3QgImV4cGlyZSIuAEEBU2VlIGBjbGFpbV9wYXlvdXRfb3RoZXJgIHRvIGNsYWltIHJld2FyZHMgb24gYmVoYWxmIG9mIHNvbWUgYG90aGVyYCBwb29sIG1lbWJlci4YdW5ib25kCAE4bWVtYmVyX2FjY291bnQAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABQHVuYm9uZGluZ19wb2ludHOgATBCYWxhbmNlT2Y8VD4AA3xFAVVuYm9uZCB1cCB0byBgdW5ib25kaW5nX3BvaW50c2Agb2YgdGhlIGBtZW1iZXJfYWNjb3VudGAncyBmdW5kcyBmcm9tIHRoZSBwb29sLiBJdEUBaW1wbGljaXRseSBjb2xsZWN0cyB0aGUgcmV3YXJkcyBvbmUgbGFzdCB0aW1lLCBzaW5jZSBub3QgZG9pbmcgc28gd291bGQgbWVhbiBzb21lbHJld2FyZHMgd291bGQgYmUgZm9yZmVpdGVkLgBNAVVuZGVyIGNlcnRhaW4gY29uZGl0aW9ucywgdGhpcyBjYWxsIGNhbiBiZSBkaXNwYXRjaGVkIHBlcm1pc3Npb25sZXNzbHkgKGkuZS4gYnkgYW55JGFjY291bnQpLgCsIyBDb25kaXRpb25zIGZvciBhIHBlcm1pc3Npb25sZXNzIGRpc3BhdGNoLgBdASogVGhlIHBvb2wgaXMgYmxvY2tlZCBhbmQgdGhlIGNhbGxlciBpcyBlaXRoZXIgdGhlIHJvb3Qgb3IgYm91bmNlci4gVGhpcyBpcyByZWZlcmVlZCB0bzAgIGFzIGEga2ljay70KiBUaGUgcG9vbCBpcyBkZXN0cm95aW5nIGFuZCB0aGUgbWVtYmVyIGlzIG5vdCB0aGUgZGVwb3NpdG9yLlUBKiBUaGUgcG9vbCBpcyBkZXN0cm95aW5nLCB0aGUgbWVtYmVyIGlzIHRoZSBkZXBvc2l0b3IgYW5kIG5vIG90aGVyIG1lbWJlcnMgYXJlIGluIHRoZRwgIHBvb2wuABEBIyMgQ29uZGl0aW9ucyBmb3IgcGVybWlzc2lvbmVkIGRpc3BhdGNoIChpLmUuIHRoZSBjYWxsZXIgaXMgYWxzbyB0aGVIYG1lbWJlcl9hY2NvdW50YCk6AIgqIFRoZSBjYWxsZXIgaXMgbm90IHRoZSBkZXBvc2l0b3IuVQEqIFRoZSBjYWxsZXIgaXMgdGhlIGRlcG9zaXRvciwgdGhlIHBvb2wgaXMgZGVzdHJveWluZyBhbmQgbm8gb3RoZXIgbWVtYmVycyBhcmUgaW4gdGhlHCAgcG9vbC4AGCMgTm90ZQAdAUlmIHRoZXJlIGFyZSB0b28gbWFueSB1bmxvY2tpbmcgY2h1bmtzIHRvIHVuYm9uZCB3aXRoIHRoZSBwb29sIGFjY291bnQsUQFbYENhbGw6OnBvb2xfd2l0aGRyYXdfdW5ib25kZWRgXSBjYW4gYmUgY2FsbGVkIHRvIHRyeSBhbmQgbWluaW1pemUgdW5sb2NraW5nIGNodW5rcy5ZAVRoZSBbYFN0YWtpbmdJbnRlcmZhY2U6OnVuYm9uZGBdIHdpbGwgaW1wbGljaXRseSBjYWxsIFtgQ2FsbDo6cG9vbF93aXRoZHJhd191bmJvbmRlZGBdVQF0byB0cnkgdG8gZnJlZSBjaHVua3MgaWYgbmVjZXNzYXJ5IChpZS4gaWYgdW5ib3VuZCB3YXMgY2FsbGVkIGFuZCBubyB1bmxvY2tpbmcgY2h1bmtzYQFhcmUgYXZhaWxhYmxlKS4gSG93ZXZlciwgaXQgbWF5IG5vdCBiZSBwb3NzaWJsZSB0byByZWxlYXNlIHRoZSBjdXJyZW50IHVubG9ja2luZyBjaHVua3MsXQFpbiB3aGljaCBjYXNlLCB0aGUgcmVzdWx0IG9mIHRoaXMgY2FsbCB3aWxsIGxpa2VseSBiZSB0aGUgYE5vTW9yZUNodW5rc2AgZXJyb3IgZnJvbSB0aGU8c3Rha2luZyBzeXN0ZW0uWHBvb2xfd2l0aGRyYXdfdW5ib25kZWQIARxwb29sX2lkOAEYUG9vbElkAAFIbnVtX3NsYXNoaW5nX3NwYW5zOAEMdTMyAAQYVQFDYWxsIGB3aXRoZHJhd191bmJvbmRlZGAgZm9yIHRoZSBwb29scyBhY2NvdW50LiBUaGlzIGNhbGwgY2FuIGJlIG1hZGUgYnkgYW55IGFjY291bnQuAEEBVGhpcyBpcyB1c2VmdWwgaWYgdGhlcmUgYXJlIHRvbyBtYW55IHVubG9ja2luZyBjaHVua3MgdG8gY2FsbCBgdW5ib25kYCwgYW5kIHNvbWVhAWNhbiBiZSBjbGVhcmVkIGJ5IHdpdGhkcmF3aW5nLiBJbiB0aGUgY2FzZSB0aGVyZSBhcmUgdG9vIG1hbnkgdW5sb2NraW5nIGNodW5rcywgdGhlIHVzZXJRAXdvdWxkIHByb2JhYmx5IHNlZSBhbiBlcnJvciBsaWtlIGBOb01vcmVDaHVua3NgIGVtaXR0ZWQgZnJvbSB0aGUgc3Rha2luZyBzeXN0ZW0gd2hlblx0aGV5IGF0dGVtcHQgdG8gdW5ib25kLkR3aXRoZHJhd191bmJvbmRlZAgBOG1lbWJlcl9hY2NvdW50AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AAUhudW1fc2xhc2hpbmdfc3BhbnM4AQx1MzIABVhVAVdpdGhkcmF3IHVuYm9uZGVkIGZ1bmRzIGZyb20gYG1lbWJlcl9hY2NvdW50YC4gSWYgbm8gYm9uZGVkIGZ1bmRzIGNhbiBiZSB1bmJvbmRlZCwgYW5IZXJyb3IgaXMgcmV0dXJuZWQuAE0BVW5kZXIgY2VydGFpbiBjb25kaXRpb25zLCB0aGlzIGNhbGwgY2FuIGJlIGRpc3BhdGNoZWQgcGVybWlzc2lvbmxlc3NseSAoaS5lLiBieSBhbnkkYWNjb3VudCkuAKgjIENvbmRpdGlvbnMgZm9yIGEgcGVybWlzc2lvbmxlc3MgZGlzcGF0Y2gACQEqIFRoZSBwb29sIGlzIGluIGRlc3Ryb3kgbW9kZSBhbmQgdGhlIHRhcmdldCBpcyBub3QgdGhlIGRlcG9zaXRvci4xASogVGhlIHRhcmdldCBpcyB0aGUgZGVwb3NpdG9yIGFuZCB0aGV5IGFyZSB0aGUgb25seSBtZW1iZXIgaW4gdGhlIHN1YiBwb29scy4NASogVGhlIHBvb2wgaXMgYmxvY2tlZCBhbmQgdGhlIGNhbGxlciBpcyBlaXRoZXIgdGhlIHJvb3Qgb3IgYm91bmNlci4AmCMgQ29uZGl0aW9ucyBmb3IgcGVybWlzc2lvbmVkIGRpc3BhdGNoAOgqIFRoZSBjYWxsZXIgaXMgdGhlIHRhcmdldCBhbmQgdGhleSBhcmUgbm90IHRoZSBkZXBvc2l0b3IuABgjIE5vdGUA9C0gSWYgdGhlIHRhcmdldCBpcyB0aGUgZGVwb3NpdG9yLCB0aGUgcG9vbCB3aWxsIGJlIGRlc3Ryb3llZC5hAS0gSWYgdGhlIHBvb2wgaGFzIGFueSBwZW5kaW5nIHNsYXNoLCB3ZSBhbHNvIHRyeSB0byBzbGFzaCB0aGUgbWVtYmVyIGJlZm9yZSBsZXR0aW5nIHRoZW1dAXdpdGhkcmF3LiBUaGlzIGNhbGN1bGF0aW9uIGFkZHMgc29tZSB3ZWlnaHQgb3ZlcmhlYWQgYW5kIGlzIG9ubHkgZGVmZW5zaXZlLiBJbiByZWFsaXR5LFUBcG9vbCBzbGFzaGVzIG11c3QgaGF2ZSBiZWVuIGFscmVhZHkgYXBwbGllZCB2aWEgcGVybWlzc2lvbmxlc3MgW2BDYWxsOjphcHBseV9zbGFzaGBdLhhjcmVhdGUQARhhbW91bnSgATBCYWxhbmNlT2Y8VD4AARByb290AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AASRub21pbmF0b3IAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABHGJvdW5jZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgAGRHRDcmVhdGUgYSBuZXcgZGVsZWdhdGlvbiBwb29sLgAsIyBBcmd1bWVudHMAVQEqIGBhbW91bnRgIC0gVGhlIGFtb3VudCBvZiBmdW5kcyB0byBkZWxlZ2F0ZSB0byB0aGUgcG9vbC4gVGhpcyBhbHNvIGFjdHMgb2YgYSBzb3J0IG9mTQEgIGRlcG9zaXQgc2luY2UgdGhlIHBvb2xzIGNyZWF0b3IgY2Fubm90IGZ1bGx5IHVuYm9uZCBmdW5kcyB1bnRpbCB0aGUgcG9vbCBpcyBiZWluZzAgIGRlc3Ryb3llZC5RASogYGluZGV4YCAtIEEgZGlzYW1iaWd1YXRpb24gaW5kZXggZm9yIGNyZWF0aW5nIHRoZSBhY2NvdW50LiBMaWtlbHkgb25seSB1c2VmdWwgd2hlbsAgIGNyZWF0aW5nIG11bHRpcGxlIHBvb2xzIGluIHRoZSBzYW1lIGV4dHJpbnNpYy7UKiBgcm9vdGAgLSBUaGUgYWNjb3VudCB0byBzZXQgYXMgW2BQb29sUm9sZXM6OnJvb3RgXS4NASogYG5vbWluYXRvcmAgLSBUaGUgYWNjb3VudCB0byBzZXQgYXMgdGhlIFtgUG9vbFJvbGVzOjpub21pbmF0b3JgXS78KiBgYm91bmNlcmAgLSBUaGUgYWNjb3VudCB0byBzZXQgYXMgdGhlIFtgUG9vbFJvbGVzOjpib3VuY2VyYF0uABgjIE5vdGUAYQFJbiBhZGRpdGlvbiB0byBgYW1vdW50YCwgdGhlIGNhbGxlciB3aWxsIHRyYW5zZmVyIHRoZSBleGlzdGVudGlhbCBkZXBvc2l0OyBzbyB0aGUgY2FsbGVyDQFuZWVkcyBhdCBoYXZlIGF0IGxlYXN0IGBhbW91bnQgKyBleGlzdGVudGlhbF9kZXBvc2l0YCB0cmFuc2ZlcmFibGUuTGNyZWF0ZV93aXRoX3Bvb2xfaWQUARhhbW91bnSgATBCYWxhbmNlT2Y8VD4AARByb290AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AASRub21pbmF0b3IAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABHGJvdW5jZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABHHBvb2xfaWQ4ARhQb29sSWQABxjsQ3JlYXRlIGEgbmV3IGRlbGVnYXRpb24gcG9vbCB3aXRoIGEgcHJldmlvdXNseSB1c2VkIHBvb2wgaWQALCMgQXJndW1lbnRzAJhzYW1lIGFzIGBjcmVhdGVgIHdpdGggdGhlIGluY2x1c2lvbiBvZngqIGBwb29sX2lkYCAtIGBBIHZhbGlkIFBvb2xJZC4gbm9taW5hdGUIARxwb29sX2lkOAEYUG9vbElkAAEodmFsaWRhdG9yc6gBRFZlYzxUOjpBY2NvdW50SWQ+AAgwfE5vbWluYXRlIG9uIGJlaGFsZiBvZiB0aGUgcG9vbC4ARQFUaGUgZGlzcGF0Y2ggb3JpZ2luIG9mIHRoaXMgY2FsbCBtdXN0IGJlIHNpZ25lZCBieSB0aGUgcG9vbCBub21pbmF0b3Igb3IgdGhlIHBvb2wocm9vdCByb2xlLgBFAVRoaXMgZGlyZWN0bHkgZm9yd2FyZHMgdGhlIGNhbGwgdG8gYW4gaW1wbGVtZW50YXRpb24gb2YgYFN0YWtpbmdJbnRlcmZhY2VgIChlLmcuLEUBYHBhbGxldC1zdGFraW5nYCkgdGhyb3VnaCBbYENvbmZpZzo6U3Rha2VBZGFwdGVyYF0sIG9uIGJlaGFsZiBvZiB0aGUgYm9uZGVkIHBvb2wuABgjIE5vdGUAWQFJbiBhZGRpdGlvbiB0byBhIGByb290YCBvciBgbm9taW5hdG9yYCByb2xlIG9mIGBvcmlnaW5gLCB0aGUgcG9vbCdzIGRlcG9zaXRvciBuZWVkcyB0bw0BaGF2ZSBhdCBsZWFzdCBgZGVwb3NpdG9yX21pbl9ib25kYCBpbiB0aGUgcG9vbCB0byBzdGFydCBub21pbmF0aW5nLiRzZXRfc3RhdGUIARxwb29sX2lkOAEYUG9vbElkAAEUc3RhdGWJAwEkUG9vbFN0YXRlAAkodFNldCBhIG5ldyBzdGF0ZSBmb3IgdGhlIHBvb2wuAFUBSWYgYSBwb29sIGlzIGFscmVhZHkgaW4gdGhlIGBEZXN0cm95aW5nYCBzdGF0ZSwgdGhlbiB1bmRlciBubyBjb25kaXRpb24gY2FuIGl0cyBzdGF0ZTRjaGFuZ2UgYWdhaW4uAMBUaGUgZGlzcGF0Y2ggb3JpZ2luIG9mIHRoaXMgY2FsbCBtdXN0IGJlIGVpdGhlcjoA3DEuIHNpZ25lZCBieSB0aGUgYm91bmNlciwgb3IgdGhlIHJvb3Qgcm9sZSBvZiB0aGUgcG9vbCxdATIuIGlmIHRoZSBwb29sIGNvbmRpdGlvbnMgdG8gYmUgb3BlbiBhcmUgTk9UIG1ldCAoYXMgZGVzY3JpYmVkIGJ5IGBva190b19iZV9vcGVuYCksIGFuZDkBICAgdGhlbiB0aGUgc3RhdGUgb2YgdGhlIHBvb2wgY2FuIGJlIHBlcm1pc3Npb25sZXNzbHkgY2hhbmdlZCB0byBgRGVzdHJveWluZ2AuMHNldF9tZXRhZGF0YQgBHHBvb2xfaWQ4ARhQb29sSWQAASBtZXRhZGF0YRgBHFZlYzx1OD4AChCAU2V0IGEgbmV3IG1ldGFkYXRhIGZvciB0aGUgcG9vbC4AXQFUaGUgZGlzcGF0Y2ggb3JpZ2luIG9mIHRoaXMgY2FsbCBtdXN0IGJlIHNpZ25lZCBieSB0aGUgYm91bmNlciwgb3IgdGhlIHJvb3Qgcm9sZSBvZiB0aGUUcG9vbC4sc2V0X2NvbmZpZ3MYATRtaW5fam9pbl9ib25kjQMBWENvbmZpZ09wPEJhbGFuY2VPZjxUPj4AATxtaW5fY3JlYXRlX2JvbmSNAwFYQ29uZmlnT3A8QmFsYW5jZU9mPFQ+PgABJG1heF9wb29sc5EDATRDb25maWdPcDx1MzI+AAEsbWF4X21lbWJlcnORAwE0Q29uZmlnT3A8dTMyPgABUG1heF9tZW1iZXJzX3Blcl9wb29skQMBNENvbmZpZ09wPHUzMj4AAVRnbG9iYWxfbWF4X2NvbW1pc3Npb26VAwFEQ29uZmlnT3A8UGVyYmlsbD4ACyxBAVVwZGF0ZSBjb25maWd1cmF0aW9ucyBmb3IgdGhlIG5vbWluYXRpb24gcG9vbHMuIFRoZSBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IGJlYFtgQ29uZmlnOjpBZG1pbk9yaWdpbmBdLgAsIyBBcmd1bWVudHMAoCogYG1pbl9qb2luX2JvbmRgIC0gU2V0IFtgTWluSm9pbkJvbmRgXS6wKiBgbWluX2NyZWF0ZV9ib25kYCAtIFNldCBbYE1pbkNyZWF0ZUJvbmRgXS6EKiBgbWF4X3Bvb2xzYCAtIFNldCBbYE1heFBvb2xzYF0upCogYG1heF9tZW1iZXJzYCAtIFNldCBbYE1heFBvb2xNZW1iZXJzYF0u5CogYG1heF9tZW1iZXJzX3Blcl9wb29sYCAtIFNldCBbYE1heFBvb2xNZW1iZXJzUGVyUG9vbGBdLuAqIGBnbG9iYWxfbWF4X2NvbW1pc3Npb25gIC0gU2V0IFtgR2xvYmFsTWF4Q29tbWlzc2lvbmBdLjB1cGRhdGVfcm9sZXMQARxwb29sX2lkOAEYUG9vbElkAAEgbmV3X3Jvb3SZAwFYQ29uZmlnT3A8VDo6QWNjb3VudElkPgABNG5ld19ub21pbmF0b3KZAwFYQ29uZmlnT3A8VDo6QWNjb3VudElkPgABLG5ld19ib3VuY2VymQMBWENvbmZpZ09wPFQ6OkFjY291bnRJZD4ADBx0VXBkYXRlIHRoZSByb2xlcyBvZiB0aGUgcG9vbC4APQFUaGUgcm9vdCBpcyB0aGUgb25seSBlbnRpdHkgdGhhdCBjYW4gY2hhbmdlIGFueSBvZiB0aGUgcm9sZXMsIGluY2x1ZGluZyBpdHNlbGYsuGV4Y2x1ZGluZyB0aGUgZGVwb3NpdG9yLCB3aG8gY2FuIG5ldmVyIGNoYW5nZS4AUQFJdCBlbWl0cyBhbiBldmVudCwgbm90aWZ5aW5nIFVJcyBvZiB0aGUgcm9sZSBjaGFuZ2UuIFRoaXMgZXZlbnQgaXMgcXVpdGUgcmVsZXZhbnQgdG8dAW1vc3QgcG9vbCBtZW1iZXJzIGFuZCB0aGV5IHNob3VsZCBiZSBpbmZvcm1lZCBvZiBjaGFuZ2VzIHRvIHBvb2wgcm9sZXMuFGNoaWxsBAEccG9vbF9pZDgBGFBvb2xJZAANRHBDaGlsbCBvbiBiZWhhbGYgb2YgdGhlIHBvb2wuAEEBVGhlIGRpc3BhdGNoIG9yaWdpbiBvZiB0aGlzIGNhbGwgY2FuIGJlIHNpZ25lZCBieSB0aGUgcG9vbCBub21pbmF0b3Igb3IgdGhlIHBvb2ygcm9vdCByb2xlLCBzYW1lIGFzIFtgUGFsbGV0Ojpub21pbmF0ZWBdLgBFAVRoaXMgZGlyZWN0bHkgZm9yd2FyZHMgdGhlIGNhbGwgdG8gYW4gaW1wbGVtZW50YXRpb24gb2YgYFN0YWtpbmdJbnRlcmZhY2VgIChlLmcuLEUBYHBhbGxldC1zdGFraW5nYCkgdGhyb3VnaCBbYENvbmZpZzo6U3Rha2VBZGFwdGVyYF0sIG9uIGJlaGFsZiBvZiB0aGUgYm9uZGVkIHBvb2wuAE0BVW5kZXIgY2VydGFpbiBjb25kaXRpb25zLCB0aGlzIGNhbGwgY2FuIGJlIGRpc3BhdGNoZWQgcGVybWlzc2lvbmxlc3NseSAoaS5lLiBieSBhbnkkYWNjb3VudCkuAKwjIENvbmRpdGlvbnMgZm9yIGEgcGVybWlzc2lvbmxlc3MgZGlzcGF0Y2g6VQEqIFdoZW4gcG9vbCBkZXBvc2l0b3IgaGFzIGxlc3MgdGhhbiBgTWluTm9taW5hdG9yQm9uZGAgc3Rha2VkLCBvdGhlcndpc2UgcG9vbCBtZW1iZXJzXCAgYXJlIHVuYWJsZSB0byB1bmJvbmQuAJwjIENvbmRpdGlvbnMgZm9yIHBlcm1pc3Npb25lZCBkaXNwYXRjaDq0KiBUaGUgY2FsbGVyIGlzIHRoZSBwb29sJ3Mgbm9taW5hdG9yIG9yIHJvb3QuQGJvbmRfZXh0cmFfb3RoZXIIARhtZW1iZXIAAVBBY2NvdW50SWRMb29rdXBPZjxUPgABFGV4dHJhhQMBXEJvbmRFeHRyYTxCYWxhbmNlT2Y8VD4+AA4kVQFgb3JpZ2luYCBib25kcyBmdW5kcyBmcm9tIGBleHRyYWAgZm9yIHNvbWUgcG9vbCBtZW1iZXIgYG1lbWJlcmAgaW50byB0aGVpciByZXNwZWN0aXZlGHBvb2xzLgBJAWBvcmlnaW5gIGNhbiBib25kIGV4dHJhIGZ1bmRzIGZyb20gZnJlZSBiYWxhbmNlIG9yIHBlbmRpbmcgcmV3YXJkcyB3aGVuIGBvcmlnaW4gPT0cb3RoZXJgLgBFAUluIHRoZSBjYXNlIG9mIGBvcmlnaW4gIT0gb3RoZXJgLCBgb3JpZ2luYCBjYW4gb25seSBib25kIGV4dHJhIHBlbmRpbmcgcmV3YXJkcyBvZhUBYG90aGVyYCBtZW1iZXJzIGFzc3VtaW5nIHNldF9jbGFpbV9wZXJtaXNzaW9uIGZvciB0aGUgZ2l2ZW4gbWVtYmVyIGlzwGBQZXJtaXNzaW9ubGVzc0NvbXBvdW5kYCBvciBgUGVybWlzc2lvbmxlc3NBbGxgLlBzZXRfY2xhaW1fcGVybWlzc2lvbgQBKHBlcm1pc3Npb26dAwE8Q2xhaW1QZXJtaXNzaW9uAA8cSQFBbGxvd3MgYSBwb29sIG1lbWJlciB0byBzZXQgYSBjbGFpbSBwZXJtaXNzaW9uIHRvIGFsbG93IG9yIGRpc2FsbG93IHBlcm1pc3Npb25sZXNzYGJvbmRpbmcgYW5kIHdpdGhkcmF3aW5nLgAsIyBBcmd1bWVudHMAeCogYG9yaWdpbmAgLSBNZW1iZXIgb2YgYSBwb29sLrgqIGBwZXJtaXNzaW9uYCAtIFRoZSBwZXJtaXNzaW9uIHRvIGJlIGFwcGxpZWQuSGNsYWltX3BheW91dF9vdGhlcgQBFG90aGVyBAEwVDo6QWNjb3VudElkABAQAQFgb3JpZ2luYCBjYW4gY2xhaW0gcGF5b3V0cyBvbiBzb21lIHBvb2wgbWVtYmVyIGBvdGhlcmAncyBiZWhhbGYuAFUBUG9vbCBtZW1iZXIgYG90aGVyYCBtdXN0IGhhdmUgYSBgUGVybWlzc2lvbmxlc3NXaXRoZHJhd2Agb3IgYFBlcm1pc3Npb25sZXNzQWxsYCBjbGFpbahwZXJtaXNzaW9uIGZvciB0aGlzIGNhbGwgdG8gYmUgc3VjY2Vzc2Z1bC44c2V0X2NvbW1pc3Npb24IARxwb29sX2lkOAEYUG9vbElkAAE4bmV3X2NvbW1pc3Npb26hAwF8T3B0aW9uPChQZXJiaWxsLCBUOjpBY2NvdW50SWQpPgARFHRTZXQgdGhlIGNvbW1pc3Npb24gb2YgYSBwb29sLlUBQm90aCBhIGNvbW1pc3Npb24gcGVyY2VudGFnZSBhbmQgYSBjb21taXNzaW9uIHBheWVlIG11c3QgYmUgcHJvdmlkZWQgaW4gdGhlIGBjdXJyZW50YF0BdHVwbGUuIFdoZXJlIGEgYGN1cnJlbnRgIG9mIGBOb25lYCBpcyBwcm92aWRlZCwgYW55IGN1cnJlbnQgY29tbWlzc2lvbiB3aWxsIGJlIHJlbW92ZWQuAE0BLSBJZiBhIGBOb25lYCBpcyBzdXBwbGllZCB0byBgbmV3X2NvbW1pc3Npb25gLCBleGlzdGluZyBjb21taXNzaW9uIHdpbGwgYmUgcmVtb3ZlZC5Ic2V0X2NvbW1pc3Npb25fbWF4CAEccG9vbF9pZDgBGFBvb2xJZAABOG1heF9jb21taXNzaW9uwAEcUGVyYmlsbAASFJRTZXQgdGhlIG1heGltdW0gY29tbWlzc2lvbiBvZiBhIHBvb2wuADkBLSBJbml0aWFsIG1heCBjYW4gYmUgc2V0IHRvIGFueSBgUGVyYmlsbGAsIGFuZCBvbmx5IHNtYWxsZXIgdmFsdWVzIHRoZXJlYWZ0ZXIuNQEtIEN1cnJlbnQgY29tbWlzc2lvbiB3aWxsIGJlIGxvd2VyZWQgaW4gdGhlIGV2ZW50IGl0IGlzIGhpZ2hlciB0aGFuIGEgbmV3IG1heDQgIGNvbW1pc3Npb24uaHNldF9jb21taXNzaW9uX2NoYW5nZV9yYXRlCAEccG9vbF9pZDgBGFBvb2xJZAABLGNoYW5nZV9yYXRlqQMBnENvbW1pc3Npb25DaGFuZ2VSYXRlPEJsb2NrTnVtYmVyRm9yPFQ+PgATEKhTZXQgdGhlIGNvbW1pc3Npb24gY2hhbmdlIHJhdGUgZm9yIGEgcG9vbC4APQFJbml0aWFsIGNoYW5nZSByYXRlIGlzIG5vdCBib3VuZGVkLCB3aGVyZWFzIHN1YnNlcXVlbnQgdXBkYXRlcyBjYW4gb25seSBiZSBtb3JldHJlc3RyaWN0aXZlIHRoYW4gdGhlIGN1cnJlbnQuQGNsYWltX2NvbW1pc3Npb24EARxwb29sX2lkOAEYUG9vbElkABRAZENsYWltIHBlbmRpbmcgY29tbWlzc2lvbi4APQFUaGUgYHJvb3RgIHJvbGUgb2YgdGhlIHBvb2wgaXMgX2Fsd2F5c18gYWxsb3dlZCB0byBjbGFpbSB0aGUgcG9vbCdzIGNvbW1pc3Npb24uAFUBSWYgdGhlIHBvb2wgaGFzIHNldCBgQ29tbWlzc2lvbkNsYWltUGVybWlzc2lvbjo6UGVybWlzc2lvbmxlc3NgLCB0aGVuIGFueSBhY2NvdW50IGNhbth0cmlnZ2VyIHRoZSBwcm9jZXNzIG9mIGNsYWltaW5nIHRoZSBwb29sJ3MgY29tbWlzc2lvbi4AQQFJZiB0aGUgcG9vbCBoYXMgc2V0IGl0cyBgQ29tbWlzc2lvbkNsYWltUGVybWlzc2lvbmAgdG8gYEFjY291bnQoYWNjKWAsIHRoZW4gb25seSBhY2NvdW50czAqIGBhY2NgLCBhbmRkKiB0aGUgcG9vbCdzIHJvb3QgYWNjb3VudAC4bWF5IGNhbGwgdGhpcyBleHRyaW5zaWMgb24gYmVoYWxmIG9mIHRoZSBwb29sLgAtAVBlbmRpbmcgY29tbWlzc2lvbnMgYXJlIHBhaWQgb3V0IGFuZCBhZGRlZCB0byB0aGUgdG90YWwgY2xhaW1lZCBjb21taXNzaW9uLrhUaGUgdG90YWwgcGVuZGluZyBjb21taXNzaW9uIGlzIHJlc2V0IHRvIHplcm8uTGFkanVzdF9wb29sX2RlcG9zaXQEARxwb29sX2lkOAEYUG9vbElkABUc7FRvcCB1cCB0aGUgZGVmaWNpdCBvciB3aXRoZHJhdyB0aGUgZXhjZXNzIEVEIGZyb20gdGhlIHBvb2wuAFEBV2hlbiBhIHBvb2wgaXMgY3JlYXRlZCwgdGhlIHBvb2wgZGVwb3NpdG9yIHRyYW5zZmVycyBFRCB0byB0aGUgcmV3YXJkIGFjY291bnQgb2YgdGhlVQFwb29sLiBFRCBpcyBzdWJqZWN0IHRvIGNoYW5nZSBhbmQgb3ZlciB0aW1lLCB0aGUgZGVwb3NpdCBpbiB0aGUgcmV3YXJkIGFjY291bnQgbWF5IGJlUQFpbnN1ZmZpY2llbnQgdG8gY292ZXIgdGhlIEVEIGRlZmljaXQgb2YgdGhlIHBvb2wgb3IgdmljZS12ZXJzYSB3aGVyZSB0aGVyZSBpcyBleGNlc3MxAWRlcG9zaXQgdG8gdGhlIHBvb2wuIFRoaXMgY2FsbCBhbGxvd3MgYW55b25lIHRvIGFkanVzdCB0aGUgRUQgZGVwb3NpdCBvZiB0aGX0cG9vbCBieSBlaXRoZXIgdG9wcGluZyB1cCB0aGUgZGVmaWNpdCBvciBjbGFpbWluZyB0aGUgZXhjZXNzLnxzZXRfY29tbWlzc2lvbl9jbGFpbV9wZXJtaXNzaW9uCAEccG9vbF9pZDgBGFBvb2xJZAABKHBlcm1pc3Npb26tAwG8T3B0aW9uPENvbW1pc3Npb25DbGFpbVBlcm1pc3Npb248VDo6QWNjb3VudElkPj4AFhDMU2V0IG9yIHJlbW92ZSBhIHBvb2wncyBjb21taXNzaW9uIGNsYWltIHBlcm1pc3Npb24uAGEBRGV0ZXJtaW5lcyB3aG8gY2FuIGNsYWltIHRoZSBwb29sJ3MgcGVuZGluZyBjb21taXNzaW9uLiBPbmx5IHRoZSBgUm9vdGAgcm9sZSBvZiB0aGUgcG9vbMhpcyBhYmxlIHRvIGNvbmZpZ3VyZSBjb21taXNzaW9uIGNsYWltIHBlcm1pc3Npb25zLixhcHBseV9zbGFzaAQBOG1lbWJlcl9hY2NvdW50AAFQQWNjb3VudElkTG9va3VwT2Y8VD4AFySIQXBwbHkgYSBwZW5kaW5nIHNsYXNoIG9uIGEgbWVtYmVyLgAlAUZhaWxzIHVubGVzcyBbYGNyYXRlOjpwYWxsZXQ6OkNvbmZpZzo6U3Rha2VBZGFwdGVyYF0gaXMgb2Ygc3RyYXRlZ3kgdHlwZTqkW2BhZGFwdGVyOjpTdGFrZVN0cmF0ZWd5VHlwZTo6RGVsZWdhdGVgXS4AXQFUaGUgcGVuZGluZyBzbGFzaCBhbW91bnQgb2YgdGhlIG1lbWJlciBtdXN0IGJlIGVxdWFsIG9yIG1vcmUgdGhhbiBgRXhpc3RlbnRpYWxEZXBvc2l0YC5RAVRoaXMgY2FsbCBjYW4gYmUgZGlzcGF0Y2hlZCBwZXJtaXNzaW9ubGVzc2x5IChpLmUuIGJ5IGFueSBhY2NvdW50KS4gSWYgdGhlIGV4ZWN1dGlvbkkBaXMgc3VjY2Vzc2Z1bCwgZmVlIGlzIHJlZnVuZGVkIGFuZCBjYWxsZXIgbWF5IGJlIHJld2FyZGVkIHdpdGggYSBwYXJ0IG9mIHRoZSBzbGFzaA0BYmFzZWQgb24gdGhlIFtgY3JhdGU6OnBhbGxldDo6Q29uZmlnOjpTdGFrZUFkYXB0ZXJgXSBjb25maWd1cmF0aW9uLkhtaWdyYXRlX2RlbGVnYXRpb24EAThtZW1iZXJfYWNjb3VudAABUEFjY291bnRJZExvb2t1cE9mPFQ+ABgkHQFNaWdyYXRlcyBkZWxlZ2F0ZWQgZnVuZHMgZnJvbSB0aGUgcG9vbCBhY2NvdW50IHRvIHRoZSBgbWVtYmVyX2FjY291bnRgLgAlAUZhaWxzIHVubGVzcyBbYGNyYXRlOjpwYWxsZXQ6OkNvbmZpZzo6U3Rha2VBZGFwdGVyYF0gaXMgb2Ygc3RyYXRlZ3kgdHlwZTqkW2BhZGFwdGVyOjpTdGFrZVN0cmF0ZWd5VHlwZTo6RGVsZWdhdGVgXS4AKQFUaGlzIGlzIGEgcGVybWlzc2lvbi1sZXNzIGNhbGwgYW5kIHJlZnVuZHMgYW55IGZlZSBpZiBjbGFpbSBpcyBzdWNjZXNzZnVsLgBdAUlmIHRoZSBwb29sIGhhcyBtaWdyYXRlZCB0byBkZWxlZ2F0aW9uIGJhc2VkIHN0YWtpbmcsIHRoZSBzdGFrZWQgdG9rZW5zIG9mIHBvb2wgbWVtYmVycykBY2FuIGJlIG1vdmVkIGFuZCBoZWxkIGluIHRoZWlyIG93biBhY2NvdW50LiBTZWUgW2BhZGFwdGVyOjpEZWxlZ2F0ZVN0YWtlYF14bWlncmF0ZV9wb29sX3RvX2RlbGVnYXRlX3N0YWtlBAEccG9vbF9pZDgBGFBvb2xJZAAZJPRNaWdyYXRlIHBvb2wgZnJvbSBbYGFkYXB0ZXI6OlN0YWtlU3RyYXRlZ3lUeXBlOjpUcmFuc2ZlcmBdIHRvpFtgYWRhcHRlcjo6U3Rha2VTdHJhdGVneVR5cGU6OkRlbGVnYXRlYF0uACUBRmFpbHMgdW5sZXNzIFtgY3JhdGU6OnBhbGxldDo6Q29uZmlnOjpTdGFrZUFkYXB0ZXJgXSBpcyBvZiBzdHJhdGVneSB0eXBlOqRbYGFkYXB0ZXI6OlN0YWtlU3RyYXRlZ3lUeXBlOjpEZWxlZ2F0ZWBdLgBBAVRoaXMgY2FsbCBjYW4gYmUgZGlzcGF0Y2hlZCBwZXJtaXNzaW9ubGVzc2x5LCBhbmQgcmVmdW5kcyBhbnkgZmVlIGlmIHN1Y2Nlc3NmdWwuAEkBSWYgdGhlIHBvb2wgaGFzIGFscmVhZHkgbWlncmF0ZWQgdG8gZGVsZWdhdGlvbiBiYXNlZCBzdGFraW5nLCB0aGlzIGNhbGwgd2lsbCBmYWlsLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy6FAwhccGFsbGV0X25vbWluYXRpb25fcG9vbHMkQm9uZEV4dHJhBBxCYWxhbmNlAaQBCCxGcmVlQmFsYW5jZQQApAEcQmFsYW5jZQAAABxSZXdhcmRzAAEAAIkDCFxwYWxsZXRfbm9taW5hdGlvbl9wb29scyRQb29sU3RhdGUAAQwQT3BlbgAAABxCbG9ja2VkAAEAKERlc3Ryb3lpbmcAAgAAjQMIXHBhbGxldF9ub21pbmF0aW9uX3Bvb2xzIENvbmZpZ09wBARUAaQBDBBOb29wAAAADFNldAQApAEEVAABABhSZW1vdmUAAgAAkQMIXHBhbGxldF9ub21pbmF0aW9uX3Bvb2xzIENvbmZpZ09wBARUATgBDBBOb29wAAAADFNldAQAOAEEVAABABhSZW1vdmUAAgAAlQMIXHBhbGxldF9ub21pbmF0aW9uX3Bvb2xzIENvbmZpZ09wBARUAcABDBBOb29wAAAADFNldAQAwAEEVAABABhSZW1vdmUAAgAAmQMIXHBhbGxldF9ub21pbmF0aW9uX3Bvb2xzIENvbmZpZ09wBARUAQQBDBBOb29wAAAADFNldAQABAEEVAABABhSZW1vdmUAAgAAnQMIXHBhbGxldF9ub21pbmF0aW9uX3Bvb2xzPENsYWltUGVybWlzc2lvbgABEDBQZXJtaXNzaW9uZWQAAABYUGVybWlzc2lvbmxlc3NDb21wb3VuZAABAFhQZXJtaXNzaW9ubGVzc1dpdGhkcmF3AAIARFBlcm1pc3Npb25sZXNzQWxsAAMAAKEDBBhPcHRpb24EBFQBpQMBCBBOb25lAAAAEFNvbWUEAKUDAAABAAClAwAABAjABACpAwhccGFsbGV0X25vbWluYXRpb25fcG9vbHNQQ29tbWlzc2lvbkNoYW5nZVJhdGUELEJsb2NrTnVtYmVyATgACAEwbWF4X2luY3JlYXNlwAEcUGVyYmlsbAABJG1pbl9kZWxheTgBLEJsb2NrTnVtYmVyAACtAwQYT3B0aW9uBARUAbEDAQgQTm9uZQAAABBTb21lBACxAwAAAQAAsQMIXHBhbGxldF9ub21pbmF0aW9uX3Bvb2xzZENvbW1pc3Npb25DbGFpbVBlcm1pc3Npb24EJEFjY291bnRJZAEEAQg4UGVybWlzc2lvbmxlc3MAAAAcQWNjb3VudAQABAEkQWNjb3VudElkAAEAALUDDExwYWxsZXRfZmFzdF91bnN0YWtlGHBhbGxldBBDYWxsBARUAAEMVHJlZ2lzdGVyX2Zhc3RfdW5zdGFrZQAAaIhSZWdpc3RlciBvbmVzZWxmIGZvciBmYXN0LXVuc3Rha2UuAEgjIyBEaXNwYXRjaCBPcmlnaW4ARQFUaGUgZGlzcGF0Y2ggb3JpZ2luIG9mIHRoaXMgY2FsbCBtdXN0IGJlICpzaWduZWQqIGJ5IHdob2V2ZXIgaXMgcGVybWl0dGVkIHRvIGNhbGzwdW5ib25kIGZ1bmRzIGJ5IHRoZSBzdGFraW5nIHN5c3RlbS4gU2VlIFtgQ29uZmlnOjpTdGFraW5nYF0uACgjIyBEZXRhaWxzADkBVGhlIHN0YXNoIGFzc29jaWF0ZWQgd2l0aCB0aGUgb3JpZ2luIG11c3QgaGF2ZSBubyBvbmdvaW5nIHVubG9ja2luZyBjaHVua3MuIElmXQFzdWNjZXNzZnVsLCB0aGlzIHdpbGwgZnVsbHkgdW5ib25kIGFuZCBjaGlsbCB0aGUgc3Rhc2guIFRoZW4sIGl0IHdpbGwgZW5xdWV1ZSB0aGUgc3Rhc2iAdG8gYmUgY2hlY2tlZCBpbiBmdXJ0aGVyIGJsb2Nrcy4AUQFJZiBieSB0aGUgdGltZSB0aGlzIGlzIGNhbGxlZCwgdGhlIHN0YXNoIGlzIGFjdHVhbGx5IGVsaWdpYmxlIGZvciBmYXN0LXVuc3Rha2UsIHRoZW5FAXRoZXkgYXJlIGd1YXJhbnRlZWQgdG8gcmVtYWluIGVsaWdpYmxlLCBiZWNhdXNlIHRoZSBjYWxsIHdpbGwgY2hpbGwgdGhlbSBhcyB3ZWxsLgA9AUlmIHRoZSBjaGVjayB3b3JrcywgdGhlIGVudGlyZSBzdGFraW5nIGRhdGEgaXMgcmVtb3ZlZCwgaS5lLiB0aGUgc3Rhc2ggaXMgZnVsbHkkdW5zdGFrZWQuAF0BSWYgdGhlIGNoZWNrIGZhaWxzLCB0aGUgc3Rhc2ggcmVtYWlucyBjaGlsbGVkIGFuZCB3YWl0aW5nIGZvciBiZWluZyB1bmJvbmRlZCBhcyBpbiB3aXRoYQF0aGUgbm9ybWFsIHN0YWtpbmcgc3lzdGVtLCBidXQgdGhleSBsb3NlIHBhcnQgb2YgdGhlaXIgdW5ib25kaW5nIGNodW5rcyBkdWUgdG8gY29uc3VtaW5nWHRoZSBjaGFpbidzIHJlc291cmNlcy4AJCMjIEV2ZW50cwAJAVNvbWUgZXZlbnRzIGZyb20gdGhlIHN0YWtpbmcgYW5kIGN1cnJlbmN5IHN5c3RlbSBtaWdodCBiZSBlbWl0dGVkLihkZXJlZ2lzdGVyAAFIpERlcmVnaXN0ZXIgb25lc2VsZiBmcm9tIHRoZSBmYXN0LXVuc3Rha2UuAEgjIyBEaXNwYXRjaCBPcmlnaW4ARQFUaGUgZGlzcGF0Y2ggb3JpZ2luIG9mIHRoaXMgY2FsbCBtdXN0IGJlICpzaWduZWQqIGJ5IHdob2V2ZXIgaXMgcGVybWl0dGVkIHRvIGNhbGzwdW5ib25kIGZ1bmRzIGJ5IHRoZSBzdGFraW5nIHN5c3RlbS4gU2VlIFtgQ29uZmlnOjpTdGFraW5nYF0uACgjIyBEZXRhaWxzAGEBVGhpcyBpcyB1c2VmdWwgaWYgb25lIGlzIHJlZ2lzdGVyZWQsIHRoZXkgYXJlIHN0aWxsIHdhaXRpbmcsIGFuZCB0aGV5IGNoYW5nZSB0aGVpciBtaW5kLgBZAU5vdGUgdGhhdCB0aGUgYXNzb2NpYXRlZCBzdGFzaCBpcyBzdGlsbCBmdWxseSB1bmJvbmRlZCBhbmQgY2hpbGxlZCBhcyBhIGNvbnNlcXVlbmNlIG9mWQFjYWxsaW5nIFtgUGFsbGV0OjpyZWdpc3Rlcl9mYXN0X3Vuc3Rha2VgXS4gVGhlcmVmb3JlLCB0aGlzIHNob3VsZCBwcm9iYWJseSBiZSBmb2xsb3dlZLBieSBhIGNhbGwgdG8gYHJlYm9uZGAgaW4gdGhlIHN0YWtpbmcgc3lzdGVtLgAkIyMgRXZlbnRzAAkBU29tZSBldmVudHMgZnJvbSB0aGUgc3Rha2luZyBhbmQgY3VycmVuY3kgc3lzdGVtIG1pZ2h0IGJlIGVtaXR0ZWQuHGNvbnRyb2wEATRlcmFzX3RvX2NoZWNrOAEgRXJhSW5kZXgAAjSUQ29udHJvbCB0aGUgb3BlcmF0aW9uIG9mIHRoaXMgcGFsbGV0LgBIIyMgRGlzcGF0Y2ggT3JpZ2luAA0BVGhlIGRpc3BhdGNoIG9yaWdpbiBvZiB0aGlzIGNhbGwgbXVzdCBiZSBbYENvbmZpZzo6Q29udHJvbE9yaWdpbmBdLgAoIyMgRGV0YWlscwBBAUNhbiBzZXQgdGhlIG51bWJlciBvZiBlcmFzIHRvIGNoZWNrIHBlciBibG9jaywgYW5kIHBvdGVudGlhbGx5IG90aGVyIGFkbWluIHdvcmsuACQjIyBFdmVudHMApE5vIGV2ZW50cyBhcmUgZW1pdHRlZCBmcm9tIHRoaXMgZGlzcGF0Y2guBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLrkDDHhwYWxsZXRfc3Rha2luZ19hc3luY19haF9jbGllbnQYcGFsbGV0EENhbGwEBFQAARQ0dmFsaWRhdG9yX3NldAQBGHJlcG9ydL0DAaxyY19jbGllbnQ6OlZhbGlkYXRvclNldFJlcG9ydDxUOjpBY2NvdW50SWQ+AAAAIHNldF9tb2RlBAEQbW9kZcEDATRPcGVyYXRpbmdNb2RlAAEEAQFBbGxvd3MgZ292ZXJuYW5jZSB0byBmb3JjZSBzZXQgdGhlIG9wZXJhdGluZyBtb2RlIG9mIHRoZSBwYWxsZXQuWGZvcmNlX29uX21pZ3JhdGlvbl9lbmQAAgQlAW1hbnVhbGx5IGRvIHdoYXQgdGhpcyBwYWxsZXQgd2FzIG1lYW50IHRvIGRvIGF0IHRoZSBlbmQgb2YgdGhlIG1pZ3JhdGlvbi5Ac2V0X2tleXNfZnJvbV9haAgBFHN0YXNoBAEwVDo6QWNjb3VudElkAAEQa2V5cxgBHFZlYzx1OD4AAxzoU2V0IHNlc3Npb24ga2V5cyBmb3IgYSB2YWxpZGF0b3IsIGZvcndhcmRlZCBmcm9tIEFzc2V0SHViLgBNAVRoaXMgaXMgY2FsbGVkIHdoZW4gYSB2YWxpZGF0b3Igc2V0cyB0aGVpciBzZXNzaW9uIGtleXMgb24gQXNzZXRIdWIsIHdoaWNoIGZvcndhcmRzmHRoZSByZXF1ZXN0IHRvIHRoZSBSZWxheUNoYWluIHZpYSBYQ00uAAEBQXNzZXRIdWIgdmFsaWRhdGVzIGJvdGgga2V5cyBhbmQgb3duZXJzaGlwIHByb29mIGJlZm9yZSBzZW5kaW5nLsxSQyB0cnVzdHMgQUgncyB2YWxpZGF0aW9uIGFuZCBkb2VzIG5vdCByZS12YWxpZGF0ZS5IcHVyZ2Vfa2V5c19mcm9tX2FoBAEUc3Rhc2gEATBUOjpBY2NvdW50SWQABBDwUHVyZ2Ugc2Vzc2lvbiBrZXlzIGZvciBhIHZhbGlkYXRvciwgZm9yd2FyZGVkIGZyb20gQXNzZXRIdWIuAFUBVGhpcyBpcyBjYWxsZWQgd2hlbiBhIHZhbGlkYXRvciBwdXJnZXMgdGhlaXIgc2Vzc2lvbiBrZXlzIG9uIEFzc2V0SHViLCB3aGljaCBmb3J3YXJkc5h0aGUgcmVxdWVzdCB0byB0aGUgUmVsYXlDaGFpbiB2aWEgWENNLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy69Awh4cGFsbGV0X3N0YWtpbmdfYXN5bmNfcmNfY2xpZW50SFZhbGlkYXRvclNldFJlcG9ydAQkQWNjb3VudElkAQQAEAFEbmV3X3ZhbGlkYXRvcl9zZXSoAThWZWM8QWNjb3VudElkPgABCGlkOAEMdTMyAAEscHJ1bmVfdXBfdG/lAQFQT3B0aW9uPFNlc3Npb25JbmRleD4AASBsZWZ0b3ZlcpgBEGJvb2wAAMEDCHhwYWxsZXRfc3Rha2luZ19hc3luY19haF9jbGllbnQ0T3BlcmF0aW5nTW9kZQABDBxQYXNzaXZlAAAAIEJ1ZmZlcmVkAAEAGEFjdGl2ZQACAADFAxBscG9sa2Fkb3RfcnVudGltZV9wYXJhY2hhaW5zNGNvbmZpZ3VyYXRpb24YcGFsbGV0EENhbGwEBFQAAbh8c2V0X3ZhbGlkYXRpb25fdXBncmFkZV9jb29sZG93bgQBDG5ldzgBREJsb2NrTnVtYmVyRm9yPFQ+AAAEkFNldCB0aGUgdmFsaWRhdGlvbiB1cGdyYWRlIGNvb2xkb3duLnBzZXRfdmFsaWRhdGlvbl91cGdyYWRlX2RlbGF5BAEMbmV3OAFEQmxvY2tOdW1iZXJGb3I8VD4AAQSEU2V0IHRoZSB2YWxpZGF0aW9uIHVwZ3JhZGUgZGVsYXkuZHNldF9jb2RlX3JldGVudGlvbl9wZXJpb2QEAQxuZXc4AURCbG9ja051bWJlckZvcjxUPgACBNBTZXQgdGhlIGFjY2VwdGFuY2UgcGVyaW9kIGZvciBhbiBpbmNsdWRlZCBjYW5kaWRhdGUuRHNldF9tYXhfY29kZV9zaXplBAEMbmV3OAEMdTMyAAME3FNldCB0aGUgbWF4IHZhbGlkYXRpb24gY29kZSBzaXplIGZvciBpbmNvbWluZyB1cGdyYWRlcy5Ac2V0X21heF9wb3Zfc2l6ZQQBDG5ldzgBDHUzMgAEBMRTZXQgdGhlIG1heCBQT1YgYmxvY2sgc2l6ZSBmb3IgaW5jb21pbmcgdXBncmFkZXMuWHNldF9tYXhfaGVhZF9kYXRhX3NpemUEAQxuZXc4AQx1MzIABQSUU2V0IHRoZSBtYXggaGVhZCBkYXRhIHNpemUgZm9yIHBhcmFzLkhzZXRfY29yZXRpbWVfY29yZXMEAQxuZXc4AQx1MzIABhCsU2V0IHRoZSBudW1iZXIgb2YgY29yZXRpbWUgZXhlY3V0aW9uIGNvcmVzLgBRAU5PVEU6IHRoYXQgdGhpcyBjb25maWd1cmF0aW9uIGlzIG1hbmFnZWQgYnkgdGhlIGNvcmV0aW1lIGNoYWluLiBPbmx5IG1hbnVhbGx5IGNoYW5nZbB0aGlzLCBpZiB5b3UgcmVhbGx5IGtub3cgd2hhdCB5b3UgYXJlIGRvaW5nIXBzZXRfZ3JvdXBfcm90YXRpb25fZnJlcXVlbmN5BAEMbmV3OAFEQmxvY2tOdW1iZXJGb3I8VD4ACATQU2V0IHRoZSBwYXJhY2hhaW4gdmFsaWRhdG9yLWdyb3VwIHJvdGF0aW9uIGZyZXF1ZW5jeXRzZXRfcGFyYXNfYXZhaWxhYmlsaXR5X3BlcmlvZAQBDG5ldzgBREJsb2NrTnVtYmVyRm9yPFQ+AAkEmFNldCB0aGUgYXZhaWxhYmlsaXR5IHBlcmlvZCBmb3IgcGFyYXMuYHNldF9zY2hlZHVsaW5nX2xvb2thaGVhZAQBDG5ldzgBDHUzMgALBDkBU2V0IHRoZSBzY2hlZHVsaW5nIGxvb2thaGVhZCwgaW4gZXhwZWN0ZWQgbnVtYmVyIG9mIGJsb2NrcyBhdCBwZWFrIHRocm91Z2hwdXQubHNldF9tYXhfdmFsaWRhdG9yc19wZXJfY29yZQQBDG5ld+UBASxPcHRpb248dTMyPgAMBOxTZXQgdGhlIG1heGltdW0gbnVtYmVyIG9mIHZhbGlkYXRvcnMgdG8gYXNzaWduIHRvIGFueSBjb3JlLkhzZXRfbWF4X3ZhbGlkYXRvcnMEAQxuZXflAQEsT3B0aW9uPHUzMj4ADQQNAVNldCB0aGUgbWF4aW11bSBudW1iZXIgb2YgdmFsaWRhdG9ycyB0byB1c2UgaW4gcGFyYWNoYWluIGNvbnNlbnN1cy5Ic2V0X2Rpc3B1dGVfcGVyaW9kBAEMbmV3OAEwU2Vzc2lvbkluZGV4AA4EDQFTZXQgdGhlIGRpc3B1dGUgcGVyaW9kLCBpbiBudW1iZXIgb2Ygc2Vzc2lvbnMgdG8ga2VlcCBmb3IgZGlzcHV0ZXMutHNldF9kaXNwdXRlX3Bvc3RfY29uY2x1c2lvbl9hY2NlcHRhbmNlX3BlcmlvZAQBDG5ldzgBREJsb2NrTnVtYmVyRm9yPFQ+AA8EyFNldCB0aGUgZGlzcHV0ZSBwb3N0IGNvbmNsdXNpb24gYWNjZXB0YW5jZSBwZXJpb2QuRHNldF9ub19zaG93X3Nsb3RzBAEMbmV3OAEMdTMyABII+FNldCB0aGUgbm8gc2hvdyBzbG90cywgaW4gbnVtYmVyIG9mIG51bWJlciBvZiBjb25zZW5zdXMgc2xvdHMuTE11c3QgYmUgYXQgbGVhc3QgMS5Qc2V0X25fZGVsYXlfdHJhbmNoZXMEAQxuZXc4AQx1MzIAEwScU2V0IHRoZSB0b3RhbCBudW1iZXIgb2YgZGVsYXkgdHJhbmNoZXMueHNldF96ZXJvdGhfZGVsYXlfdHJhbmNoZV93aWR0aAQBDG5ldzgBDHUzMgAUBIxTZXQgdGhlIHplcm90aCBkZWxheSB0cmFuY2hlIHdpZHRoLlBzZXRfbmVlZGVkX2FwcHJvdmFscwQBDG5ldzgBDHUzMgAVBNxTZXQgdGhlIG51bWJlciBvZiB2YWxpZGF0b3JzIG5lZWRlZCB0byBhcHByb3ZlIGEgYmxvY2sucHNldF9yZWxheV92cmZfbW9kdWxvX3NhbXBsZXMEAQxuZXc4AQx1MzIAFgRZAVNldCB0aGUgbnVtYmVyIG9mIHNhbXBsZXMgdG8gZG8gb2YgdGhlIGBSZWxheVZSRk1vZHVsb2AgYXBwcm92YWwgYXNzaWdubWVudCBjcml0ZXJpb24uaHNldF9tYXhfdXB3YXJkX3F1ZXVlX2NvdW50BAEMbmV3OAEMdTMyABcELQFTZXRzIHRoZSBtYXhpbXVtIGl0ZW1zIHRoYXQgY2FuIHByZXNlbnQgaW4gYSB1cHdhcmQgZGlzcGF0Y2ggcXVldWUgYXQgb25jZS5kc2V0X21heF91cHdhcmRfcXVldWVfc2l6ZQQBDG5ldzgBDHUzMgAYCE0BU2V0cyB0aGUgbWF4aW11bSB0b3RhbCBzaXplIG9mIGl0ZW1zIHRoYXQgY2FuIHByZXNlbnQgaW4gYSB1cHdhcmQgZGlzcGF0Y2ggcXVldWUgYXQUb25jZS50c2V0X21heF9kb3dud2FyZF9tZXNzYWdlX3NpemUEAQxuZXc4AQx1MzIAGQScU2V0IHRoZSBjcml0aWNhbCBkb3dud2FyZCBtZXNzYWdlIHNpemUubHNldF9tYXhfdXB3YXJkX21lc3NhZ2Vfc2l6ZQQBDG5ldzgBDHUzMgAbBC0BU2V0cyB0aGUgbWF4aW11bSBzaXplIG9mIGFuIHVwd2FyZCBtZXNzYWdlIHRoYXQgY2FuIGJlIHNlbnQgYnkgYSBjYW5kaWRhdGUuoHNldF9tYXhfdXB3YXJkX21lc3NhZ2VfbnVtX3Blcl9jYW5kaWRhdGUEAQxuZXc4AQx1MzIAHAQFAVNldHMgdGhlIG1heGltdW0gbnVtYmVyIG9mIG1lc3NhZ2VzIHRoYXQgYSBjYW5kaWRhdGUgY2FuIGNvbnRhaW4uZHNldF9ocm1wX29wZW5fcmVxdWVzdF90dGwEAQxuZXc4AQx1MzIAHQQ1AVNldHMgdGhlIG51bWJlciBvZiBzZXNzaW9ucyBhZnRlciB3aGljaCBhbiBIUk1QIG9wZW4gY2hhbm5lbCByZXF1ZXN0IGV4cGlyZXMuXHNldF9ocm1wX3NlbmRlcl9kZXBvc2l0BAEMbmV3pAEcQmFsYW5jZQAeBFEBU2V0cyB0aGUgYW1vdW50IG9mIGZ1bmRzIHRoYXQgdGhlIHNlbmRlciBzaG91bGQgcHJvdmlkZSBmb3Igb3BlbmluZyBhbiBIUk1QIGNoYW5uZWwuaHNldF9ocm1wX3JlY2lwaWVudF9kZXBvc2l0BAEMbmV3pAEcQmFsYW5jZQAfCGEBU2V0cyB0aGUgYW1vdW50IG9mIGZ1bmRzIHRoYXQgdGhlIHJlY2lwaWVudCBzaG91bGQgcHJvdmlkZSBmb3IgYWNjZXB0aW5nIG9wZW5pbmcgYW4gSFJNUCBjaGFubmVsLnRzZXRfaHJtcF9jaGFubmVsX21heF9jYXBhY2l0eQQBDG5ldzgBDHUzMgAgBB0BU2V0cyB0aGUgbWF4aW11bSBudW1iZXIgb2YgbWVzc2FnZXMgYWxsb3dlZCBpbiBhbiBIUk1QIGNoYW5uZWwgYXQgb25jZS58c2V0X2hybXBfY2hhbm5lbF9tYXhfdG90YWxfc2l6ZQQBDG5ldzgBDHUzMgAhBFEBU2V0cyB0aGUgbWF4aW11bSB0b3RhbCBzaXplIG9mIG1lc3NhZ2VzIGluIGJ5dGVzIGFsbG93ZWQgaW4gYW4gSFJNUCBjaGFubmVsIGF0IG9uY2UunHNldF9ocm1wX21heF9wYXJhY2hhaW5faW5ib3VuZF9jaGFubmVscwQBDG5ldzgBDHUzMgAiBEkBU2V0cyB0aGUgbWF4aW11bSBudW1iZXIgb2YgaW5ib3VuZCBIUk1QIGNoYW5uZWxzIGEgcGFyYWNoYWluIGlzIGFsbG93ZWQgdG8gYWNjZXB0LoRzZXRfaHJtcF9jaGFubmVsX21heF9tZXNzYWdlX3NpemUEAQxuZXc4AQx1MzIAJAQ9AVNldHMgdGhlIG1heGltdW0gc2l6ZSBvZiBhIG1lc3NhZ2UgdGhhdCBjb3VsZCBldmVyIGJlIHB1dCBpbnRvIGFuIEhSTVAgY2hhbm5lbC6gc2V0X2hybXBfbWF4X3BhcmFjaGFpbl9vdXRib3VuZF9jaGFubmVscwQBDG5ldzgBDHUzMgAlBEUBU2V0cyB0aGUgbWF4aW11bSBudW1iZXIgb2Ygb3V0Ym91bmQgSFJNUCBjaGFubmVscyBhIHBhcmFjaGFpbiBpcyBhbGxvd2VkIHRvIG9wZW4umHNldF9ocm1wX21heF9tZXNzYWdlX251bV9wZXJfY2FuZGlkYXRlBAEMbmV3OAEMdTMyACcENQFTZXRzIHRoZSBtYXhpbXVtIG51bWJlciBvZiBvdXRib3VuZCBIUk1QIG1lc3NhZ2VzIGNhbiBiZSBzZW50IGJ5IGEgY2FuZGlkYXRlLkhzZXRfcHZmX3ZvdGluZ190dGwEAQxuZXc4ATBTZXNzaW9uSW5kZXgAKgRRAVNldCB0aGUgbnVtYmVyIG9mIHNlc3Npb24gY2hhbmdlcyBhZnRlciB3aGljaCBhIFBWRiBwcmUtY2hlY2tpbmcgdm90aW5nIGlzIHJlamVjdGVkLpBzZXRfbWluaW11bV92YWxpZGF0aW9uX3VwZ3JhZGVfZGVsYXkEAQxuZXc4AURCbG9ja051bWJlckZvcjxUPgArEFUBU2V0cyB0aGUgbWluaW11bSBkZWxheSBiZXR3ZWVuIGFubm91bmNpbmcgdGhlIHVwZ3JhZGUgYmxvY2sgZm9yIGEgcGFyYWNoYWluIHVudGlsIHRoZVR1cGdyYWRlIHRha2luZyBwbGFjZS4AOQFTZWUgdGhlIGZpZWxkIGRvY3VtZW50YXRpb24gZm9yIGluZm9ybWF0aW9uIGFuZCBjb25zdHJhaW50cyBmb3IgdGhlIG5ldyB2YWx1ZS5wc2V0X2J5cGFzc19jb25zaXN0ZW5jeV9jaGVjawQBDG5ld5gBEGJvb2wALAhNAVNldHRpbmcgdGhpcyB0byB0cnVlIHdpbGwgZGlzYWJsZSBjb25zaXN0ZW5jeSBjaGVja3MgZm9yIHRoZSBjb25maWd1cmF0aW9uIHNldHRlcnMuRFVzZSB3aXRoIGNhdXRpb24uYHNldF9hc3luY19iYWNraW5nX3BhcmFtcwQBDG5ld8kDAUhBc3luY0JhY2tpbmdQYXJhbXMALQSgU2V0IHRoZSBhc3luY2hyb25vdXMgYmFja2luZyBwYXJhbWV0ZXJzLkxzZXRfZXhlY3V0b3JfcGFyYW1zBAEMbmV3zQMBOEV4ZWN1dG9yUGFyYW1zAC4EcFNldCBQVkYgZXhlY3V0b3IgcGFyYW1ldGVycy5Yc2V0X29uX2RlbWFuZF9iYXNlX2ZlZQQBDG5ld6QBHEJhbGFuY2UALwSkU2V0IHRoZSBvbiBkZW1hbmQgKHBhcmF0aHJlYWRzKSBiYXNlIGZlZS50c2V0X29uX2RlbWFuZF9mZWVfdmFyaWFiaWxpdHkEAQxuZXfAARxQZXJiaWxsADAEwFNldCB0aGUgb24gZGVtYW5kIChwYXJhdGhyZWFkcykgZmVlIHZhcmlhYmlsaXR5LnBzZXRfb25fZGVtYW5kX3F1ZXVlX21heF9zaXplBAEMbmV3OAEMdTMyADEEvFNldCB0aGUgb24gZGVtYW5kIChwYXJhdGhyZWFkcykgcXVldWUgbWF4IHNpemUumHNldF9vbl9kZW1hbmRfdGFyZ2V0X3F1ZXVlX3V0aWxpemF0aW9uBAEMbmV3wAEcUGVyYmlsbAAyBMBTZXQgdGhlIG9uIGRlbWFuZCAocGFyYXRocmVhZHMpIGZlZSB2YXJpYWJpbGl0eS5kc2V0X21pbmltdW1fYmFja2luZ192b3RlcwQBDG5ldzgBDHUzMgA0BKBTZXQgdGhlIG1pbmltdW0gYmFja2luZyB2b3RlcyB0aHJlc2hvbGQuQHNldF9ub2RlX2ZlYXR1cmUIARRpbmRleAwBCHU4AAEUdmFsdWWYARBib29sADUEZFNldC9VbnNldCBhIG5vZGUgZmVhdHVyZS5oc2V0X2FwcHJvdmFsX3ZvdGluZ19wYXJhbXMEAQxuZXfhAwFQQXBwcm92YWxWb3RpbmdQYXJhbXMANgRsU2V0IGFwcHJvdmFsLXZvdGluZy1wYXJhbXMuUHNldF9zY2hlZHVsZXJfcGFyYW1zBAEMbmV35QMBiFNjaGVkdWxlclBhcmFtczxCbG9ja051bWJlckZvcjxUPj4ANwRUU2V0IHNjaGVkdWxlci1wYXJhbXMuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLskDEExwb2xrYWRvdF9wcmltaXRpdmVzCHY5NGFzeW5jX2JhY2tpbmdIQXN5bmNCYWNraW5nUGFyYW1zAAAIAUxtYXhfY2FuZGlkYXRlX2RlcHRoOAEMdTMyAAFQYWxsb3dlZF9hbmNlc3RyeV9sZW44AQx1MzIAAM0DEExwb2xrYWRvdF9wcmltaXRpdmVzCHY5PGV4ZWN1dG9yX3BhcmFtczhFeGVjdXRvclBhcmFtcwAABADRAwFIVmVjPEV4ZWN1dG9yUGFyYW0+AADRAwAAAtUDANUDEExwb2xrYWRvdF9wcmltaXRpdmVzCHY5PGV4ZWN1dG9yX3BhcmFtczRFeGVjdXRvclBhcmFtAAEcOE1heE1lbW9yeVBhZ2VzBAA4AQx1MzIAAQA8U3RhY2tMb2dpY2FsTWF4BAA4AQx1MzIAAgA4U3RhY2tOYXRpdmVNYXgEADgBDHUzMgADAFBQcmVjaGVja2luZ01heE1lbW9yeQQAKAEMdTY0AAQAOFB2ZlByZXBUaW1lb3V0CADZAwEsUHZmUHJlcEtpbmQAACgBDHU2NAAFADhQdmZFeGVjVGltZW91dAgA3QMBLFB2ZkV4ZWNLaW5kAAAoAQx1NjQABgBEV2FzbUV4dEJ1bGtNZW1vcnkABwAA2QMMTHBvbGthZG90X3ByaW1pdGl2ZXMIdjksUHZmUHJlcEtpbmQAAQggUHJlY2hlY2sAAAAcUHJlcGFyZQABAADdAwxMcG9sa2Fkb3RfcHJpbWl0aXZlcwh2OSxQdmZFeGVjS2luZAABCBxCYWNraW5nAAAAIEFwcHJvdmFsAAEAAOEDDExwb2xrYWRvdF9wcmltaXRpdmVzCHY5UEFwcHJvdmFsVm90aW5nUGFyYW1zAAAEAWxtYXhfYXBwcm92YWxfY29hbGVzY2VfY291bnQ4AQx1MzIAAOUDDExwb2xrYWRvdF9wcmltaXRpdmVzCHY5PFNjaGVkdWxlclBhcmFtcwQsQmxvY2tOdW1iZXIBOAAsAWBncm91cF9yb3RhdGlvbl9mcmVxdWVuY3k4ASxCbG9ja051bWJlcgABZHBhcmFzX2F2YWlsYWJpbGl0eV9wZXJpb2Q4ASxCbG9ja051bWJlcgABXG1heF92YWxpZGF0b3JzX3Blcl9jb3Jl5QEBLE9wdGlvbjx1MzI+AAEkbG9va2FoZWFkOAEMdTMyAAEkbnVtX2NvcmVzOAEMdTMyAAFkbWF4X2F2YWlsYWJpbGl0eV90aW1lb3V0czgBDHUzMgABYG9uX2RlbWFuZF9xdWV1ZV9tYXhfc2l6ZTgBDHUzMgABiG9uX2RlbWFuZF90YXJnZXRfcXVldWVfdXRpbGl6YXRpb27AARxQZXJiaWxsAAFkb25fZGVtYW5kX2ZlZV92YXJpYWJpbGl0ecABHFBlcmJpbGwAAUhvbl9kZW1hbmRfYmFzZV9mZWWkARxCYWxhbmNlAAEMdHRsOAEsQmxvY2tOdW1iZXIAAOkDEGxwb2xrYWRvdF9ydW50aW1lX3BhcmFjaGFpbnMYc2hhcmVkGHBhbGxldBBDYWxsBARUAAEABA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLu0DEGxwb2xrYWRvdF9ydW50aW1lX3BhcmFjaGFpbnMkaW5jbHVzaW9uGHBhbGxldBBDYWxsBARUAAEABA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLvEDEGxwb2xrYWRvdF9ydW50aW1lX3BhcmFjaGFpbnM4cGFyYXNfaW5oZXJlbnQYcGFsbGV0EENhbGwEBFQAAQQUZW50ZXIEARBkYXRh9QMBkFBhcmFjaGFpbnNJbmhlcmVudERhdGE8SGVhZGVyRm9yPFQ+PgAABDEBRW50ZXIgdGhlIHBhcmFzIGluaGVyZW50LiBUaGlzIHdpbGwgcHJvY2VzcyBiaXRmaWVsZHMgYW5kIGJhY2tlZCBjYW5kaWRhdGVzLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy71AwxMcG9sa2Fkb3RfcHJpbWl0aXZlcwh2OTBJbmhlcmVudERhdGEEDEhEUgFcABABJGJpdGZpZWxkc/kDAZBVbmNoZWNrZWRTaWduZWRBdmFpbGFiaWxpdHlCaXRmaWVsZHMAAURiYWNrZWRfY2FuZGlkYXRlcxUEAXxWZWM8QmFja2VkQ2FuZGlkYXRlPEhEUjo6SGFzaD4+AAEgZGlzcHV0ZXNZBAFgTXVsdGlEaXNwdXRlU3RhdGVtZW50U2V0AAE0cGFyZW50X2hlYWRlclwBDEhEUgAA+QMAAAL9AwD9AxBMcG9sa2Fkb3RfcHJpbWl0aXZlcwh2ORhzaWduZWQ8VW5jaGVja2VkU2lnbmVkCBxQYXlsb2FkAQEELFJlYWxQYXlsb2FkAQEEAAwBHHBheWxvYWQBBAEcUGF5bG9hZAABPHZhbGlkYXRvcl9pbmRleA0EAThWYWxpZGF0b3JJbmRleAABJHNpZ25hdHVyZREEAUhWYWxpZGF0b3JTaWduYXR1cmUAAAEEDExwb2xrYWRvdF9wcmltaXRpdmVzCHY5UEF2YWlsYWJpbGl0eUJpdGZpZWxkAAAEAAUEAXxCaXRWZWM8dTgsIGJpdHZlYzo6b3JkZXI6OkxzYjA+AAAFBAAABwwJBAAJBAwYYml0dmVjFG9yZGVyEExzYjAAAAAADQQMTHBvbGthZG90X3ByaW1pdGl2ZXMIdjk4VmFsaWRhdG9ySW5kZXgAAAQAOAEMdTMyAAARBBBMcG9sa2Fkb3RfcHJpbWl0aXZlcwh2OTR2YWxpZGF0b3JfYXBwJFNpZ25hdHVyZQAABAA1AQFIc3IyNTUxOTo6U2lnbmF0dXJlAAAVBAAAAhkEABkEDExwb2xrYWRvdF9wcmltaXRpdmVzCHY5PEJhY2tlZENhbmRpZGF0ZQQESAE8AAwBJGNhbmRpZGF0ZR0EAXhDb21taXR0ZWRDYW5kaWRhdGVSZWNlaXB0VjI8SD4AATh2YWxpZGl0eV92b3Rlc1EEAWBWZWM8VmFsaWRpdHlBdHRlc3RhdGlvbj4AAUR2YWxpZGF0b3JfaW5kaWNlcwUEAXxCaXRWZWM8dTgsIGJpdHZlYzo6b3JkZXI6OkxzYjA+AAAdBAxMcG9sa2Fkb3RfcHJpbWl0aXZlcwh2OWxDb21taXR0ZWRDYW5kaWRhdGVSZWNlaXB0VjIEBEgBPAAIAShkZXNjcmlwdG9yIQQBYENhbmRpZGF0ZURlc2NyaXB0b3JWMjxIPgABLGNvbW1pdG1lbnRzMQQBUENhbmRpZGF0ZUNvbW1pdG1lbnRzAAAhBAxMcG9sa2Fkb3RfcHJpbWl0aXZlcwh2OVRDYW5kaWRhdGVEZXNjcmlwdG9yVjIEBEgBPAAwARxwYXJhX2lkFQIBGFBhcmFJZAABMHJlbGF5X3BhcmVudDwBBEgAARx2ZXJzaW9uJQQBPEludGVybmFsVmVyc2lvbgABKGNvcmVfaW5kZXj1AQEMdTE2AAE0c2Vzc2lvbl9pbmRleDgBMFNlc3Npb25JbmRleAABJHJlc2VydmVkMSkEASBbdTg7IDI1XQABeHBlcnNpc3RlZF92YWxpZGF0aW9uX2RhdGFfaGFzaDwBEEhhc2gAASBwb3ZfaGFzaDwBEEhhc2gAATBlcmFzdXJlX3Jvb3Q8ARBIYXNoAAEkcmVzZXJ2ZWQyNQEBIFt1ODsgNjRdAAEkcGFyYV9oZWFkPAEQSGFzaAABUHZhbGlkYXRpb25fY29kZV9oYXNoLQQBSFZhbGlkYXRpb25Db2RlSGFzaAAAJQQMTHBvbGthZG90X3ByaW1pdGl2ZXMIdjk8SW50ZXJuYWxWZXJzaW9uAAAEAAwBCHU4AAApBAAAAxkAAAAMAC0EDHRwb2xrYWRvdF9wYXJhY2hhaW5fcHJpbWl0aXZlcyhwcmltaXRpdmVzSFZhbGlkYXRpb25Db2RlSGFzaAAABAA8ARBIYXNoAAAxBAxMcG9sa2Fkb3RfcHJpbWl0aXZlcwh2OVBDYW5kaWRhdGVDb21taXRtZW50cwQETgE4ABgBPHVwd2FyZF9tZXNzYWdlczUEAThVcHdhcmRNZXNzYWdlcwABTGhvcml6b250YWxfbWVzc2FnZXM5BAFISG9yaXpvbnRhbE1lc3NhZ2VzAAFMbmV3X3ZhbGlkYXRpb25fY29kZUUEAVhPcHRpb248VmFsaWRhdGlvbkNvZGU+AAEkaGVhZF9kYXRhTQQBIEhlYWREYXRhAAFscHJvY2Vzc2VkX2Rvd253YXJkX21lc3NhZ2VzOAEMdTMyAAE4aHJtcF93YXRlcm1hcms4AQROAAA1BAxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUARgEUwAABAA0ARhWZWM8VD4AADkEDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBPQQEUwAABABBBAEYVmVjPFQ+AAA9BAhgcG9sa2Fkb3RfY29yZV9wcmltaXRpdmVzTE91dGJvdW5kSHJtcE1lc3NhZ2UECElkARUCAAgBJHJlY2lwaWVudBUCAQhJZAABEGRhdGEYAUxhbGxvYzo6dmVjOjpWZWM8dTg+AABBBAAAAj0EAEUEBBhPcHRpb24EBFQBSQQBCBBOb25lAAAAEFNvbWUEAEkEAAABAABJBAx0cG9sa2Fkb3RfcGFyYWNoYWluX3ByaW1pdGl2ZXMocHJpbWl0aXZlczhWYWxpZGF0aW9uQ29kZQAABAAYARxWZWM8dTg+AABNBAx0cG9sa2Fkb3RfcGFyYWNoYWluX3ByaW1pdGl2ZXMocHJpbWl0aXZlcyBIZWFkRGF0YQAABAAYARxWZWM8dTg+AABRBAAAAlUEAFUEDExwb2xrYWRvdF9wcmltaXRpdmVzCHY5TFZhbGlkaXR5QXR0ZXN0YXRpb24AAQggSW1wbGljaXQEABEEAUhWYWxpZGF0b3JTaWduYXR1cmUAAQAgRXhwbGljaXQEABEEAUhWYWxpZGF0b3JTaWduYXR1cmUAAgAAWQQAAAJdBABdBAxMcG9sa2Fkb3RfcHJpbWl0aXZlcwh2OUxEaXNwdXRlU3RhdGVtZW50U2V0AAAMAThjYW5kaWRhdGVfaGFzaGEEATRDYW5kaWRhdGVIYXNoAAEcc2Vzc2lvbjgBMFNlc3Npb25JbmRleAABKHN0YXRlbWVudHNlBAHsVmVjPChEaXNwdXRlU3RhdGVtZW50LCBWYWxpZGF0b3JJbmRleCwgVmFsaWRhdG9yU2lnbmF0dXJlKT4AAGEECGBwb2xrYWRvdF9jb3JlX3ByaW1pdGl2ZXM0Q2FuZGlkYXRlSGFzaAAABAA8ARBIYXNoAABlBAAAAmkEAGkEAAAEDG0EDQQRBABtBAxMcG9sa2Fkb3RfcHJpbWl0aXZlcwh2OUBEaXNwdXRlU3RhdGVtZW50AAEIFFZhbGlkBABxBAFkVmFsaWREaXNwdXRlU3RhdGVtZW50S2luZAAAABxJbnZhbGlkBAB5BAFsSW52YWxpZERpc3B1dGVTdGF0ZW1lbnRLaW5kAAEAAHEEDExwb2xrYWRvdF9wcmltaXRpdmVzCHY5ZFZhbGlkRGlzcHV0ZVN0YXRlbWVudEtpbmQAARQgRXhwbGljaXQAAAA8QmFja2luZ1NlY29uZGVkBAA8ARBIYXNoAAEAMEJhY2tpbmdWYWxpZAQAPAEQSGFzaAACAEBBcHByb3ZhbENoZWNraW5nAAMAiEFwcHJvdmFsQ2hlY2tpbmdNdWx0aXBsZUNhbmRpZGF0ZXMEAHUEAUhWZWM8Q2FuZGlkYXRlSGFzaD4ABAAAdQQAAAJhBAB5BAxMcG9sa2Fkb3RfcHJpbWl0aXZlcwh2OWxJbnZhbGlkRGlzcHV0ZVN0YXRlbWVudEtpbmQAAQQgRXhwbGljaXQAAAAAfQQQbHBvbGthZG90X3J1bnRpbWVfcGFyYWNoYWlucxRwYXJhcxhwYWxsZXQQQ2FsbAQEVAABMFhmb3JjZV9zZXRfY3VycmVudF9jb2RlCAEQcGFyYRUCARhQYXJhSWQAASBuZXdfY29kZUkEAThWYWxpZGF0aW9uQ29kZQAABPhTZXQgdGhlIHN0b3JhZ2UgZm9yIHRoZSBwYXJhY2hhaW4gdmFsaWRhdGlvbiBjb2RlIGltbWVkaWF0ZWx5Llhmb3JjZV9zZXRfY3VycmVudF9oZWFkCAEQcGFyYRUCARhQYXJhSWQAASBuZXdfaGVhZE0EASBIZWFkRGF0YQABBAEBU2V0IHRoZSBzdG9yYWdlIGZvciB0aGUgY3VycmVudCBwYXJhY2hhaW4gaGVhZCBkYXRhIGltbWVkaWF0ZWx5Lmxmb3JjZV9zY2hlZHVsZV9jb2RlX3VwZ3JhZGUMARBwYXJhFQIBGFBhcmFJZAABIG5ld19jb2RlSQQBOFZhbGlkYXRpb25Db2RlAAFMcmVsYXlfcGFyZW50X251bWJlcjgBREJsb2NrTnVtYmVyRm9yPFQ+AAIELQFTY2hlZHVsZSBhbiB1cGdyYWRlIGFzIGlmIGl0IHdhcyBzY2hlZHVsZWQgaW4gdGhlIGdpdmVuIHJlbGF5IHBhcmVudCBibG9jay5MZm9yY2Vfbm90ZV9uZXdfaGVhZAgBEHBhcmEVAgEYUGFyYUlkAAEgbmV3X2hlYWRNBAEgSGVhZERhdGEAAwQdAU5vdGUgYSBuZXcgYmxvY2sgaGVhZCBmb3IgcGFyYSB3aXRoaW4gdGhlIGNvbnRleHQgb2YgdGhlIGN1cnJlbnQgYmxvY2suSGZvcmNlX3F1ZXVlX2FjdGlvbgQBEHBhcmEVAgEYUGFyYUlkAAQM+FB1dCBhIHBhcmFjaGFpbiBkaXJlY3RseSBpbnRvIHRoZSBuZXh0IHNlc3Npb24ncyBhY3Rpb24gcXVldWUu9FdlIGNhbid0IHF1ZXVlIGl0IGFueSBzb29uZXIgdGhhbiB0aGlzIHdpdGhvdXQgZ29pbmcgaW50byB0aGU4aW5pdGlhbGl6ZXIuLi5sYWRkX3RydXN0ZWRfdmFsaWRhdGlvbl9jb2RlBAE8dmFsaWRhdGlvbl9jb2RlSQQBOFZhbGlkYXRpb25Db2RlAAU4oEFkZHMgdGhlIHZhbGlkYXRpb24gY29kZSB0byB0aGUgc3RvcmFnZS4AWQFUaGUgY29kZSB3aWxsIG5vdCBiZSBhZGRlZCBpZiBpdCBpcyBhbHJlYWR5IHByZXNlbnQuIEFkZGl0aW9uYWxseSwgaWYgUFZGIHByZS1jaGVja2luZ+BpcyBydW5uaW5nIGZvciB0aGF0IGNvZGUsIGl0IHdpbGwgYmUgaW5zdGFudGx5IGFjY2VwdGVkLgBRAU90aGVyd2lzZSwgdGhlIGNvZGUgd2lsbCBiZSBhZGRlZCBpbnRvIHRoZSBzdG9yYWdlLiBOb3RlIHRoYXQgdGhlIGNvZGUgd2lsbCBiZSBhZGRlZGEBaW50byBzdG9yYWdlIHdpdGggcmVmZXJlbmNlIGNvdW50IDAuIFRoaXMgaXMgdG8gYWNjb3VudCB0aGUgZmFjdCB0aGF0IHRoZXJlIGFyZSBubyB1c2Vyc00BZm9yIHRoaXMgY29kZSB5ZXQuIFRoZSBjYWxsZXIgd2lsbCBoYXZlIHRvIG1ha2Ugc3VyZSB0aGF0IHRoaXMgY29kZSBldmVudHVhbGx5IGdldHNJAXVzZWQgYnkgc29tZSBwYXJhY2hhaW4gb3IgcmVtb3ZlZCBmcm9tIHRoZSBzdG9yYWdlIHRvIGF2b2lkIHN0b3JhZ2UgbGVha3MuIEZvciB0aGVJAWxhdHRlciBwcmVmZXIgdG8gdXNlIHRoZSBgcG9rZV91bnVzZWRfdmFsaWRhdGlvbl9jb2RlYCBkaXNwYXRjaGFibGUgdG8gcmF3IHN0b3JhZ2U0bWFuaXB1bGF0aW9uLgBRAVRoaXMgZnVuY3Rpb24gaXMgbWFpbmx5IG1lYW50IHRvIGJlIHVzZWQgZm9yIHVwZ3JhZGluZyBwYXJhY2hhaW5zIHRoYXQgZG8gbm90IGZvbGxvdwkBdGhlIGdvLWFoZWFkIHNpZ25hbCB3aGlsZSB0aGUgUFZGIHByZS1jaGVja2luZyBmZWF0dXJlIGlzIGVuYWJsZWQubHBva2VfdW51c2VkX3ZhbGlkYXRpb25fY29kZQQBUHZhbGlkYXRpb25fY29kZV9oYXNoLQQBSFZhbGlkYXRpb25Db2RlSGFzaAAGFCUBUmVtb3ZlIHRoZSB2YWxpZGF0aW9uIGNvZGUgZnJvbSB0aGUgc3RvcmFnZSBpZmYgdGhlIHJlZmVyZW5jZSBjb3VudCBpcyAwLgBZAVRoaXMgaXMgYmV0dGVyIHRoYW4gcmVtb3ZpbmcgdGhlIHN0b3JhZ2UgZGlyZWN0bHksIGJlY2F1c2UgaXQgd2lsbCBub3QgcmVtb3ZlIHRoZSBjb2RlQQF0aGF0IHdhcyBzdWRkZW5seSBnb3QgdXNlZCBieSBzb21lIHBhcmFjaGFpbiB3aGlsZSB0aGlzIGRpc3BhdGNoYWJsZSB3YXMgcGVuZGluZzBkaXNwYXRjaGluZy5saW5jbHVkZV9wdmZfY2hlY2tfc3RhdGVtZW50CAEQc3RtdIEEAURQdmZDaGVja1N0YXRlbWVudAABJHNpZ25hdHVyZREEAUhWYWxpZGF0b3JTaWduYXR1cmUABwhVAUluY2x1ZGVzIGEgc3RhdGVtZW50IGZvciBhIFBWRiBwcmUtY2hlY2tpbmcgdm90ZS4gUG90ZW50aWFsbHksIGZpbmFsaXplcyB0aGUgdm90ZSBhbmRBAWVuYWN0cyB0aGUgcmVzdWx0cyBpZiB0aGF0IHdhcyB0aGUgbGFzdCB2b3RlIGJlZm9yZSBhY2hpZXZpbmcgdGhlIHN1cGVybWFqb3JpdHkudGZvcmNlX3NldF9tb3N0X3JlY2VudF9jb250ZXh0CAEQcGFyYRUCARhQYXJhSWQAARxjb250ZXh0OAFEQmxvY2tOdW1iZXJGb3I8VD4ACAQBAVNldCB0aGUgc3RvcmFnZSBmb3IgdGhlIGN1cnJlbnQgcGFyYWNoYWluIGhlYWQgZGF0YSBpbW1lZGlhdGVseS5ccmVtb3ZlX3VwZ3JhZGVfY29vbGRvd24EARBwYXJhFQIBGFBhcmFJZAAJEKxSZW1vdmUgYW4gdXBncmFkZSBjb29sZG93biBmb3IgYSBwYXJhY2hhaW4uAFEBVGhlIGNvc3QgZm9yIHJlbW92aW5nIHRoZSBjb29sZG93biBlYXJsaWVyIGRlcGVuZHMgb24gdGhlIHRpbWUgbGVmdCBmb3IgdGhlIGNvb2xkb3duQQFtdWx0aXBsaWVkIGJ5IFtgQ29uZmlnOjpDb29sZG93blJlbW92YWxNdWx0aXBsaWVyYF0uIFRoZSBwYWlkIHRva2VucyBhcmUgYnVybmVkLpRhdXRob3JpemVfZm9yY2Vfc2V0X2N1cnJlbnRfY29kZV9oYXNoDAEQcGFyYRUCARhQYXJhSWQAATRuZXdfY29kZV9oYXNoLQQBSFZhbGlkYXRpb25Db2RlSGFzaAABMHZhbGlkX3BlcmlvZDgBREJsb2NrTnVtYmVyRm9yPFQ+AAosHQFTZXRzIHRoZSBzdG9yYWdlIGZvciB0aGUgYXV0aG9yaXplZCBjdXJyZW50IGNvZGUgaGFzaCBvZiB0aGUgcGFyYWNoYWluLmEBSWYgbm90IGFwcGxpZWQsIGl0IHdpbGwgYmUgcmVtb3ZlZCBhdCB0aGUgYFN5c3RlbTo6YmxvY2tfbnVtYmVyKCkgKyB2YWxpZF9wZXJpb2RgIGJsb2NrLgA9AVRoaXMgY2FuIGJlIHVzZWZ1bCwgd2hlbiB0cmlnZ2VyaW5nIGBQYXJhczo6Zm9yY2Vfc2V0X2N1cnJlbnRfY29kZShwYXJhLCBjb2RlKWAlAWZyb20gYSBkaWZmZXJlbnQgY2hhaW4gdGhhbiB0aGUgb25lIHdoZXJlIHRoZSBgUGFyYXNgIHBhbGxldCBpcyBkZXBsb3llZC4AVQFUaGUgbWFpbiBwdXJwb3NlIGlzIHRvIGF2b2lkIHRyYW5zZmVycmluZyB0aGUgZW50aXJlIGBjb2RlYCBXYXNtIGJsb2IgYmV0d2VlbiBjaGFpbnMuMQFJbnN0ZWFkLCB3ZSBhdXRob3JpemUgYGNvZGVfaGFzaGAgd2l0aCBgcm9vdGAsIHdoaWNoIGNhbiBsYXRlciBiZSBhcHBsaWVkIGJ5HQFgUGFyYXM6OmFwcGx5X2F1dGhvcml6ZWRfZm9yY2Vfc2V0X2N1cnJlbnRfY29kZShwYXJhLCBjb2RlKWAgYnkgYW55b25lLgDcQXV0aG9yaXphdGlvbnMgYXJlIHN0b3JlZCBpbiBhbiAqKm92ZXJ3cml0aW5nIG1hbm5lcioqLpxhcHBseV9hdXRob3JpemVkX2ZvcmNlX3NldF9jdXJyZW50X2NvZGUIARBwYXJhFQIBGFBhcmFJZAABIG5ld19jb2RlSQQBOFZhbGlkYXRpb25Db2RlAAsI+EFwcGxpZXMgdGhlIGFscmVhZHkgYXV0aG9yaXplZCBjdXJyZW50IGNvZGUgZm9yIHRoZSBwYXJhY2hhaW4s+HRyaWdnZXJpbmcgdGhlIHNhbWUgZnVuY3Rpb25hbGl0eSBhcyBgZm9yY2Vfc2V0X2N1cnJlbnRfY29kZWAuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLoEEDExwb2xrYWRvdF9wcmltaXRpdmVzCHY5RFB2ZkNoZWNrU3RhdGVtZW50AAAQARhhY2NlcHSYARBib29sAAEcc3ViamVjdC0EAUhWYWxpZGF0aW9uQ29kZUhhc2gAATRzZXNzaW9uX2luZGV4OAEwU2Vzc2lvbkluZGV4AAE8dmFsaWRhdG9yX2luZGV4DQQBOFZhbGlkYXRvckluZGV4AACFBBBscG9sa2Fkb3RfcnVudGltZV9wYXJhY2hhaW5zLGluaXRpYWxpemVyGHBhbGxldBBDYWxsBARUAAEENGZvcmNlX2FwcHJvdmUEARR1cF90bzgBLEJsb2NrTnVtYmVyAAAMOQFJc3N1ZSBhIHNpZ25hbCB0byB0aGUgY29uc2Vuc3VzIGVuZ2luZSB0byBmb3JjaWJseSBhY3QgYXMgdGhvdWdoIGFsbCBwYXJhY2hhaW5RAWJsb2NrcyBpbiBhbGwgcmVsYXkgY2hhaW4gYmxvY2tzIHVwIHRvIGFuZCBpbmNsdWRpbmcgdGhlIGdpdmVuIG51bWJlciBpbiB0aGUgY3VycmVudKBjaGFpbiBhcmUgdmFsaWQgYW5kIHNob3VsZCBiZSBmaW5hbGl6ZWQuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLokEEGxwb2xrYWRvdF9ydW50aW1lX3BhcmFjaGFpbnMQaHJtcBhwYWxsZXQQQ2FsbAQEVAABLFhocm1wX2luaXRfb3Blbl9jaGFubmVsDAEkcmVjaXBpZW50FQIBGFBhcmFJZAABVHByb3Bvc2VkX21heF9jYXBhY2l0eTgBDHUzMgABZHByb3Bvc2VkX21heF9tZXNzYWdlX3NpemU4AQx1MzIAAChNAUluaXRpYXRlIG9wZW5pbmcgYSBjaGFubmVsIGZyb20gYSBwYXJhY2hhaW4gdG8gYSBnaXZlbiByZWNpcGllbnQgd2l0aCBnaXZlbiBjaGFubmVsLHBhcmFtZXRlcnMuAFkBLSBgcHJvcG9zZWRfbWF4X2NhcGFjaXR5YCAtIHNwZWNpZmllcyBob3cgbWFueSBtZXNzYWdlcyBjYW4gYmUgaW4gdGhlIGNoYW5uZWwgYXQgb25jZS4tAS0gYHByb3Bvc2VkX21heF9tZXNzYWdlX3NpemVgIC0gc3BlY2lmaWVzIHRoZSBtYXhpbXVtIHNpemUgb2YgdGhlIG1lc3NhZ2VzLgARAVRoZXNlIG51bWJlcnMgYXJlIGEgc3ViamVjdCB0byB0aGUgcmVsYXktY2hhaW4gY29uZmlndXJhdGlvbiBsaW1pdHMuAFEBVGhlIGNoYW5uZWwgY2FuIGJlIG9wZW5lZCBvbmx5IGFmdGVyIHRoZSByZWNpcGllbnQgY29uZmlybXMgaXQgYW5kIG9ubHkgb24gYSBzZXNzaW9uHGNoYW5nZS5gaHJtcF9hY2NlcHRfb3Blbl9jaGFubmVsBAEYc2VuZGVyFQIBGFBhcmFJZAABDPBBY2NlcHQgYSBwZW5kaW5nIG9wZW4gY2hhbm5lbCByZXF1ZXN0IGZyb20gdGhlIGdpdmVuIHNlbmRlci4A9FRoZSBjaGFubmVsIHdpbGwgYmUgb3BlbmVkIG9ubHkgb24gdGhlIG5leHQgc2Vzc2lvbiBib3VuZGFyeS5IaHJtcF9jbG9zZV9jaGFubmVsBAEoY2hhbm5lbF9pZI0EATRIcm1wQ2hhbm5lbElkAAIQVQFJbml0aWF0ZSB1bmlsYXRlcmFsIGNsb3Npbmcgb2YgYSBjaGFubmVsLiBUaGUgb3JpZ2luIG11c3QgYmUgZWl0aGVyIHRoZSBzZW5kZXIgb3IgdGhlmHJlY2lwaWVudCBpbiB0aGUgY2hhbm5lbCBiZWluZyBjbG9zZWQuAMBUaGUgY2xvc3VyZSBjYW4gb25seSBoYXBwZW4gb24gYSBzZXNzaW9uIGNoYW5nZS5AZm9yY2VfY2xlYW5faHJtcAwBEHBhcmEVAgEYUGFyYUlkAAEsbnVtX2luYm91bmQ4AQx1MzIAATBudW1fb3V0Ym91bmQ4AQx1MzIAAxxdAVRoaXMgZXh0cmluc2ljIHRyaWdnZXJzIHRoZSBjbGVhbnVwIG9mIGFsbCB0aGUgSFJNUCBzdG9yYWdlIGl0ZW1zIHRoYXQgYSBwYXJhIG1heSBoYXZlLkkBTm9ybWFsbHkgdGhpcyBoYXBwZW5zIG9uY2UgcGVyIHNlc3Npb24sIGJ1dCB0aGlzIGFsbG93cyB5b3UgdG8gdHJpZ2dlciB0aGUgY2xlYW51cJRpbW1lZGlhdGVseSBmb3IgYSBzcGVjaWZpYyBwYXJhY2hhaW4uAFEBTnVtYmVyIG9mIGluYm91bmQgYW5kIG91dGJvdW5kIGNoYW5uZWxzIGZvciBgcGFyYWAgbXVzdCBiZSBwcm92aWRlZCBhcyB3aXRuZXNzIGRhdGEuAJBPcmlnaW4gbXVzdCBiZSB0aGUgYENoYW5uZWxNYW5hZ2VyYC5cZm9yY2VfcHJvY2Vzc19ocm1wX29wZW4EASBjaGFubmVsczgBDHUzMgAEIKRGb3JjZSBwcm9jZXNzIEhSTVAgb3BlbiBjaGFubmVsIHJlcXVlc3RzLgBVAUlmIHRoZXJlIGFyZSBwZW5kaW5nIEhSTVAgb3BlbiBjaGFubmVsIHJlcXVlc3RzLCB5b3UgY2FuIHVzZSB0aGlzIGZ1bmN0aW9uIHRvIHByb2Nlc3OIYWxsIG9mIHRob3NlIHJlcXVlc3RzIGltbWVkaWF0ZWx5LgAJAVRvdGFsIG51bWJlciBvZiBvcGVuaW5nIGNoYW5uZWxzIG11c3QgYmUgcHJvdmlkZWQgYXMgd2l0bmVzcyBkYXRhLgCQT3JpZ2luIG11c3QgYmUgdGhlIGBDaGFubmVsTWFuYWdlcmAuYGZvcmNlX3Byb2Nlc3NfaHJtcF9jbG9zZQQBIGNoYW5uZWxzOAEMdTMyAAUgqEZvcmNlIHByb2Nlc3MgSFJNUCBjbG9zZSBjaGFubmVsIHJlcXVlc3RzLgBZAUlmIHRoZXJlIGFyZSBwZW5kaW5nIEhSTVAgY2xvc2UgY2hhbm5lbCByZXF1ZXN0cywgeW91IGNhbiB1c2UgdGhpcyBmdW5jdGlvbiB0byBwcm9jZXNziGFsbCBvZiB0aG9zZSByZXF1ZXN0cyBpbW1lZGlhdGVseS4ACQFUb3RhbCBudW1iZXIgb2YgY2xvc2luZyBjaGFubmVscyBtdXN0IGJlIHByb3ZpZGVkIGFzIHdpdG5lc3MgZGF0YS4AkE9yaWdpbiBtdXN0IGJlIHRoZSBgQ2hhbm5lbE1hbmFnZXJgLmBocm1wX2NhbmNlbF9vcGVuX3JlcXVlc3QIAShjaGFubmVsX2lkjQQBNEhybXBDaGFubmVsSWQAATRvcGVuX3JlcXVlc3RzOAEMdTMyAAYgXQFUaGlzIGNhbmNlbHMgYSBwZW5kaW5nIG9wZW4gY2hhbm5lbCByZXF1ZXN0LiBJdCBjYW4gYmUgY2FuY2VsZWQgYnkgZWl0aGVyIG9mIHRoZSBzZW5kZXIZAW9yIHRoZSByZWNpcGllbnQgZm9yIHRoYXQgcmVxdWVzdC4gVGhlIG9yaWdpbiBtdXN0IGJlIGVpdGhlciBvZiB0aG9zZS4AXQFUaGUgY2FuY2VsbGF0aW9uIGhhcHBlbnMgaW1tZWRpYXRlbHkuIEl0IGlzIG5vdCBwb3NzaWJsZSB0byBjYW5jZWwgdGhlIHJlcXVlc3QgaWYgaXQgaXNEYWxyZWFkeSBhY2NlcHRlZC4AWQFUb3RhbCBudW1iZXIgb2Ygb3BlbiByZXF1ZXN0cyAoaS5lLiBgSHJtcE9wZW5DaGFubmVsUmVxdWVzdHNMaXN0YCkgbXVzdCBiZSBwcm92aWRlZCBhczR3aXRuZXNzIGRhdGEuXGZvcmNlX29wZW5faHJtcF9jaGFubmVsEAEYc2VuZGVyFQIBGFBhcmFJZAABJHJlY2lwaWVudBUCARhQYXJhSWQAATBtYXhfY2FwYWNpdHk4AQx1MzIAAUBtYXhfbWVzc2FnZV9zaXplOAEMdTMyAAcgYQFPcGVuIGEgY2hhbm5lbCBmcm9tIGEgYHNlbmRlcmAgdG8gYSBgcmVjaXBpZW50YCBgUGFyYUlkYC4gQWx0aG91Z2ggb3BlbmVkIGJ5IGdvdmVybmFuY2UsQQF0aGUgYG1heF9jYXBhY2l0eWAgYW5kIGBtYXhfbWVzc2FnZV9zaXplYCBhcmUgc3RpbGwgc3ViamVjdCB0byB0aGUgUmVsYXkgQ2hhaW4nc0hjb25maWd1cmVkIGxpbWl0cy4ATQFFeHBlY3RlZCB1c2UgaXMgd2hlbiBvbmUgKGFuZCBvbmx5IG9uZSkgb2YgdGhlIGBQYXJhSWRgcyBpbnZvbHZlZCBpbiB0aGUgY2hhbm5lbCBpc8Bnb3Zlcm5lZCBieSB0aGUgc3lzdGVtLCBlLmcuIGEgc3lzdGVtIHBhcmFjaGFpbi4AkE9yaWdpbiBtdXN0IGJlIHRoZSBgQ2hhbm5lbE1hbmFnZXJgLmBlc3RhYmxpc2hfc3lzdGVtX2NoYW5uZWwIARhzZW5kZXIVAgEYUGFyYUlkAAEkcmVjaXBpZW50FQIBGFBhcmFJZAAIMFEBRXN0YWJsaXNoIGFuIEhSTVAgY2hhbm5lbCBiZXR3ZWVuIHR3byBzeXN0ZW0gY2hhaW5zLiBJZiB0aGUgY2hhbm5lbCBkb2VzIG5vdCBhbHJlYWR5UQFleGlzdCwgdGhlIHRyYW5zYWN0aW9uIGZlZXMgd2lsbCBiZSByZWZ1bmRlZCB0byB0aGUgY2FsbGVyLiBUaGUgc3lzdGVtIGRvZXMgbm90IHRha2VZAWRlcG9zaXRzIGZvciBjaGFubmVscyBiZXR3ZWVuIHN5c3RlbSBjaGFpbnMsIGFuZCBhdXRvbWF0aWNhbGx5IHNldHMgdGhlIG1lc3NhZ2UgbnVtYmVyGQFhbmQgc2l6ZSBsaW1pdHMgdG8gdGhlIG1heGltdW0gYWxsb3dlZCBieSB0aGUgbmV0d29yaydzIGNvbmZpZ3VyYXRpb24uAChBcmd1bWVudHM6AJQtIGBzZW5kZXJgOiBBIHN5c3RlbSBjaGFpbiwgYFBhcmFJZGAuoC0gYHJlY2lwaWVudGA6IEEgc3lzdGVtIGNoYWluLCBgUGFyYUlkYC4AVQFBbnkgc2lnbmVkIG9yaWdpbiBjYW4gY2FsbCB0aGlzIGZ1bmN0aW9uLCBidXQgX2JvdGhfIGlucHV0cyBNVVNUIGJlIHN5c3RlbSBjaGFpbnMuIElmwHRoZSBjaGFubmVsIGRvZXMgbm90IGV4aXN0IHlldCwgdGhlcmUgaXMgbm8gZmVlLlRwb2tlX2NoYW5uZWxfZGVwb3NpdHMIARhzZW5kZXIVAgEYUGFyYUlkAAEkcmVjaXBpZW50FQIBGFBhcmFJZAAJJFEBVXBkYXRlIHRoZSBkZXBvc2l0cyBoZWxkIGZvciBhbiBIUk1QIGNoYW5uZWwgdG8gdGhlIGxhdGVzdCBgQ29uZmlndXJhdGlvbmAuIENoYW5uZWxzsHdpdGggc3lzdGVtIGNoYWlucyBkbyBub3QgcmVxdWlyZSBhIGRlcG9zaXQuAChBcmd1bWVudHM6AHgtIGBzZW5kZXJgOiBBIGNoYWluLCBgUGFyYUlkYC6ELSBgcmVjaXBpZW50YDogQSBjaGFpbiwgYFBhcmFJZGAuAKRBbnkgc2lnbmVkIG9yaWdpbiBjYW4gY2FsbCB0aGlzIGZ1bmN0aW9uLnRlc3RhYmxpc2hfY2hhbm5lbF93aXRoX3N5c3RlbQQBTHRhcmdldF9zeXN0ZW1fY2hhaW4VAgEYUGFyYUlkAAocOQFFc3RhYmxpc2ggYSBiaWRpcmVjdGlvbmFsIEhSTVAgY2hhbm5lbCBiZXR3ZWVuIGEgcGFyYWNoYWluIGFuZCBhIHN5c3RlbSBjaGFpbi4AKEFyZ3VtZW50czoAyC0gYHRhcmdldF9zeXN0ZW1fY2hhaW5gOiBBIHN5c3RlbSBjaGFpbiwgYFBhcmFJZGAuALBUaGUgb3JpZ2luIG5lZWRzIHRvIGJlIHRoZSBwYXJhY2hhaW4gb3JpZ2luLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy6NBAx0cG9sa2Fkb3RfcGFyYWNoYWluX3ByaW1pdGl2ZXMocHJpbWl0aXZlczRIcm1wQ2hhbm5lbElkAAAIARhzZW5kZXIVAgEISWQAASRyZWNpcGllbnQVAgEISWQAAJEEEGxwb2xrYWRvdF9ydW50aW1lX3BhcmFjaGFpbnMgZGlzcHV0ZXMYcGFsbGV0EENhbGwEBFQAAQQ4Zm9yY2VfdW5mcmVlemUAAAAEDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMulQQUbHBvbGthZG90X3J1bnRpbWVfcGFyYWNoYWlucyBkaXNwdXRlcyBzbGFzaGluZxhwYWxsZXQQQ2FsbAQEVAABBHByZXBvcnRfZGlzcHV0ZV9sb3N0X3Vuc2lnbmVkCAE0ZGlzcHV0ZV9wcm9vZpkEAURCb3g8RGlzcHV0ZVByb29mPgABPGtleV9vd25lcl9wcm9vZnwBQFQ6OktleU93bmVyUHJvb2YAAAAEDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMumQQQTHBvbGthZG90X3ByaW1pdGl2ZXMIdjkgc2xhc2hpbmcwRGlzcHV0ZVByb29mAAAQASR0aW1lX3Nsb3SdBAFARGlzcHV0ZXNUaW1lU2xvdAABEGtpbmShBAFIRGlzcHV0ZU9mZmVuY2VLaW5kAAE8dmFsaWRhdG9yX2luZGV4DQQBOFZhbGlkYXRvckluZGV4AAEwdmFsaWRhdG9yX2lkCQEBLFZhbGlkYXRvcklkAACdBBBMcG9sa2Fkb3RfcHJpbWl0aXZlcwh2OSBzbGFzaGluZ0BEaXNwdXRlc1RpbWVTbG90AAAIATRzZXNzaW9uX2luZGV4OAEwU2Vzc2lvbkluZGV4AAE4Y2FuZGlkYXRlX2hhc2hhBAE0Q2FuZGlkYXRlSGFzaAAAoQQMTHBvbGthZG90X3ByaW1pdGl2ZXMIdjlIRGlzcHV0ZU9mZmVuY2VLaW5kAAEMQEZvckludmFsaWRCYWNrZWQAAAAwQWdhaW5zdFZhbGlkAAEASEZvckludmFsaWRBcHByb3ZlZAACAAClBBBscG9sa2Fkb3RfcnVudGltZV9wYXJhY2hhaW5zJG9uX2RlbWFuZBhwYWxsZXQQQ2FsbAQEVAABDFxwbGFjZV9vcmRlcl9hbGxvd19kZWF0aAgBKG1heF9hbW91bnSkATBCYWxhbmNlT2Y8VD4AARxwYXJhX2lkFQIBGFBhcmFJZAAAPJRDcmVhdGUgYSBzaW5nbGUgb24gZGVtYW5kIGNvcmUgb3JkZXIuSQFXaWxsIHVzZSB0aGUgc3BvdCBwcmljZSBmb3IgdGhlIGN1cnJlbnQgYmxvY2sgYW5kIHdpbGwgcmVhcCB0aGUgYWNjb3VudCBpZiBuZWVkZWQuACxQYXJhbWV0ZXJzOjkBLSBgb3JpZ2luYDogVGhlIHNlbmRlciBvZiB0aGUgY2FsbCwgZnVuZHMgd2lsbCBiZSB3aXRoZHJhd24gZnJvbSB0aGlzIGFjY291bnQuSQEtIGBtYXhfYW1vdW50YDogVGhlIG1heGltdW0gYmFsYW5jZSB0byB3aXRoZHJhdyBmcm9tIHRoZSBvcmlnaW4gdG8gcGxhY2UgYW4gb3JkZXIuDQEtIGBwYXJhX2lkYDogQSBgUGFyYUlkYCB0aGUgb3JpZ2luIHdhbnRzIHRvIHByb3ZpZGUgYmxvY2tzcGFjZSBmb3IuABxFcnJvcnM65C0gYEluc3VmZmljaWVudEJhbGFuY2VgOiBmcm9tIHRoZSBDdXJyZW5jeSBpbXBsZW1lbnRhdGlvbjQtIGBRdWV1ZUZ1bGxggC0gYFNwb3RQcmljZUhpZ2hlclRoYW5NYXhBbW91bnRgABxFdmVudHM6XC0gYE9uRGVtYW5kT3JkZXJQbGFjZWRgWHBsYWNlX29yZGVyX2tlZXBfYWxpdmUIAShtYXhfYW1vdW50pAEwQmFsYW5jZU9mPFQ+AAEccGFyYV9pZBUCARhQYXJhSWQAATxhAVNhbWUgYXMgdGhlIFtgcGxhY2Vfb3JkZXJfYWxsb3dfZGVhdGhgXShTZWxmOjpwbGFjZV9vcmRlcl9hbGxvd19kZWF0aCkgY2FsbCAsIGJ1dCB3aXRoIGHcY2hlY2sgdGhhdCBwbGFjaW5nIHRoZSBvcmRlciB3aWxsIG5vdCByZWFwIHRoZSBhY2NvdW50LgAsUGFyYW1ldGVyczo5AS0gYG9yaWdpbmA6IFRoZSBzZW5kZXIgb2YgdGhlIGNhbGwsIGZ1bmRzIHdpbGwgYmUgd2l0aGRyYXduIGZyb20gdGhpcyBhY2NvdW50LkkBLSBgbWF4X2Ftb3VudGA6IFRoZSBtYXhpbXVtIGJhbGFuY2UgdG8gd2l0aGRyYXcgZnJvbSB0aGUgb3JpZ2luIHRvIHBsYWNlIGFuIG9yZGVyLg0BLSBgcGFyYV9pZGA6IEEgYFBhcmFJZGAgdGhlIG9yaWdpbiB3YW50cyB0byBwcm92aWRlIGJsb2Nrc3BhY2UgZm9yLgAcRXJyb3JzOuQtIGBJbnN1ZmZpY2llbnRCYWxhbmNlYDogZnJvbSB0aGUgQ3VycmVuY3kgaW1wbGVtZW50YXRpb240LSBgUXVldWVGdWxsYIAtIGBTcG90UHJpY2VIaWdoZXJUaGFuTWF4QW1vdW50YAAcRXZlbnRzOlwtIGBPbkRlbWFuZE9yZGVyUGxhY2VkYGBwbGFjZV9vcmRlcl93aXRoX2NyZWRpdHMIAShtYXhfYW1vdW50pAEwQmFsYW5jZU9mPFQ+AAEccGFyYV9pZBUCARhQYXJhSWQAAkTIQ3JlYXRlIGEgc2luZ2xlIG9uIGRlbWFuZCBjb3JlIG9yZGVyIHdpdGggY3JlZGl0cy5ZAVdpbGwgY2hhcmdlIHRoZSBvd25lcidzIG9uLWRlbWFuZCBjcmVkaXQgYWNjb3VudCB0aGUgc3BvdCBwcmljZSBmb3IgdGhlIGN1cnJlbnQgYmxvY2suACxQYXJhbWV0ZXJzOkUBLSBgb3JpZ2luYDogVGhlIHNlbmRlciBvZiB0aGUgY2FsbCwgb24tZGVtYW5kIGNyZWRpdHMgd2lsbCBiZSB3aXRoZHJhd24gZnJvbSB0aGlzKCAgYWNjb3VudC5JAS0gYG1heF9hbW91bnRgOiBUaGUgbWF4aW11bSBudW1iZXIgb2YgY3JlZGl0cyB0byBzcGVuZCBmcm9tIHRoZSBvcmlnaW4gdG8gcGxhY2UgYW4gICBvcmRlci4NAS0gYHBhcmFfaWRgOiBBIGBQYXJhSWRgIHRoZSBvcmlnaW4gd2FudHMgdG8gcHJvdmlkZSBibG9ja3NwYWNlIGZvci4AHEVycm9yczpcLSBgSW5zdWZmaWNpZW50Q3JlZGl0c2A0LSBgUXVldWVGdWxsYIAtIGBTcG90UHJpY2VIaWdoZXJUaGFuTWF4QW1vdW50YAAcRXZlbnRzOlwtIGBPbkRlbWFuZE9yZGVyUGxhY2VkYAQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy6pBBBccG9sa2Fkb3RfcnVudGltZV9jb21tb248cGFyYXNfcmVnaXN0cmFyGHBhbGxldBBDYWxsBARUAAEkIHJlZ2lzdGVyDAEIaWQVAgEYUGFyYUlkAAEwZ2VuZXNpc19oZWFkTQQBIEhlYWREYXRhAAE8dmFsaWRhdGlvbl9jb2RlSQQBOFZhbGlkYXRpb25Db2RlAABQ+FJlZ2lzdGVyIGhlYWQgZGF0YSBhbmQgdmFsaWRhdGlvbiBjb2RlIGZvciBhIHJlc2VydmVkIFBhcmEgSWQuADAjIyBBcmd1bWVudHPALSBgb3JpZ2luYDogTXVzdCBiZSBjYWxsZWQgYnkgYSBgU2lnbmVkYCBvcmlnaW4uLQEtIGBpZGA6IFRoZSBwYXJhIElELiBNdXN0IGJlIG93bmVkL21hbmFnZWQgYnkgdGhlIGBvcmlnaW5gIHNpZ25pbmcgYWNjb3VudC4BAS0gYGdlbmVzaXNfaGVhZGA6IFRoZSBnZW5lc2lzIGhlYWQgZGF0YSBvZiB0aGUgcGFyYWNoYWluL3RocmVhZC4lAS0gYHZhbGlkYXRpb25fY29kZWA6IFRoZSBpbml0aWFsIHZhbGlkYXRpb24gY29kZSBvZiB0aGUgcGFyYWNoYWluL3RocmVhZC4AQCMjIERlcG9zaXRzL0ZlZXMJAVRoZSBhY2NvdW50IHdpdGggdGhlIG9yaWdpbmF0aW5nIHNpZ25hdHVyZSBtdXN0IHJlc2VydmUgYSBkZXBvc2l0LgBNAVRoZSBkZXBvc2l0IGlzIHJlcXVpcmVkIHRvIGNvdmVyIHRoZSBjb3N0cyBhc3NvY2lhdGVkIHdpdGggc3RvcmluZyB0aGUgZ2VuZXNpcyBoZWFkdGRhdGEgYW5kIHRoZSB2YWxpZGF0aW9uIGNvZGUuMQFUaGlzIGFjY291bnRzIGZvciB0aGUgcG90ZW50aWFsIHRvIHN0b3JlIHZhbGlkYXRpb24gY29kZSBvZiBhIHNpemUgdXAgdG8gdGhl3GBtYXhfY29kZV9zaXplYCwgYXMgZGVmaW5lZCBpbiB0aGUgY29uZmlndXJhdGlvbiBwYWxsZXQAHQFBbnl0aGluZyBhbHJlYWR5IHJlc2VydmVkIHByZXZpb3VzbHkgZm9yIHRoaXMgcGFyYSBJRCBpcyBhY2NvdW50ZWQgZm9yLgAkIyMgRXZlbnRz1FRoZSBgUmVnaXN0ZXJlZGAgZXZlbnQgaXMgZW1pdHRlZCBpbiBjYXNlIG9mIHN1Y2Nlc3MuOGZvcmNlX3JlZ2lzdGVyFAEMd2hvBAEwVDo6QWNjb3VudElkAAEcZGVwb3NpdKQBMEJhbGFuY2VPZjxUPgABCGlkFQIBGFBhcmFJZAABMGdlbmVzaXNfaGVhZE0EASBIZWFkRGF0YQABPHZhbGlkYXRpb25fY29kZUkEAThWYWxpZGF0aW9uQ29kZQABGNxGb3JjZSB0aGUgcmVnaXN0cmF0aW9uIG9mIGEgUGFyYSBJZCBvbiB0aGUgcmVsYXkgY2hhaW4uALhUaGlzIGZ1bmN0aW9uIG11c3QgYmUgY2FsbGVkIGJ5IGEgUm9vdCBvcmlnaW4uABkBVGhlIGRlcG9zaXQgdGFrZW4gY2FuIGJlIHNwZWNpZmllZCBmb3IgdGhpcyByZWdpc3RyYXRpb24uIEFueSBgUGFyYUlkYBkBY2FuIGJlIHJlZ2lzdGVyZWQsIGluY2x1ZGluZyBzdWItMTAwMCBJRHMgd2hpY2ggYXJlIFN5c3RlbSBQYXJhY2hhaW5zLihkZXJlZ2lzdGVyBAEIaWQVAgEYUGFyYUlkAAIQBQFEZXJlZ2lzdGVyIGEgUGFyYSBJZCwgZnJlZWluZyBhbGwgZGF0YSBhbmQgcmV0dXJuaW5nIGFueSBkZXBvc2l0LgBRAVRoZSBjYWxsZXIgbXVzdCBiZSBSb290LCB0aGUgYHBhcmFgIG93bmVyLCBvciB0aGUgYHBhcmFgIGl0c2VsZi4gVGhlIHBhcmEgbXVzdCBiZSBhblBvbi1kZW1hbmQgcGFyYWNoYWluLhBzd2FwCAEIaWQVAgEYUGFyYUlkAAEUb3RoZXIVAgEYUGFyYUlkAAMwQQFTd2FwIGEgbGVhc2UgaG9sZGluZyBwYXJhY2hhaW4gd2l0aCBhbm90aGVyIHBhcmFjaGFpbiwgZWl0aGVyIG9uLWRlbWFuZCBvciBsZWFzZSBob2xkaW5nLgABAVRoZSBvcmlnaW4gbXVzdCBiZSBSb290LCB0aGUgYHBhcmFgIG93bmVyLCBvciB0aGUgYHBhcmFgIGl0c2VsZi4AYQFUaGUgc3dhcCB3aWxsIGhhcHBlbiBvbmx5IGlmIHRoZXJlIGlzIGFscmVhZHkgYW4gb3Bwb3NpdGUgc3dhcCBwZW5kaW5nLiBJZiB0aGVyZSBpcyBub3QsWQF0aGUgc3dhcCB3aWxsIGJlIHN0b3JlZCBpbiB0aGUgcGVuZGluZyBzd2FwcyBtYXAsIHJlYWR5IGZvciBhIGxhdGVyIGNvbmZpcm1hdG9yeSBzd2FwLgBdAVRoZSBgUGFyYUlkYHMgcmVtYWluIG1hcHBlZCB0byB0aGUgc2FtZSBoZWFkIGRhdGEgYW5kIGNvZGUgc28gZXh0ZXJuYWwgY29kZSBjYW4gcmVseSBvbj0BYFBhcmFJZGAgdG8gYmUgYSBsb25nLXRlcm0gaWRlbnRpZmllciBvZiBhIG5vdGlvbmFsICJwYXJhY2hhaW4iLiBIb3dldmVyLCB0aGVpcjUBc2NoZWR1bGluZyBpbmZvIChpLmUuIHdoZXRoZXIgdGhleSdyZSBhbiBvbi1kZW1hbmQgcGFyYWNoYWluIG9yIGxlYXNlIGhvbGRpbmcVAXBhcmFjaGFpbiksIGF1Y3Rpb24gaW5mb3JtYXRpb24gYW5kIHRoZSBhdWN0aW9uIGRlcG9zaXQgYXJlIHN3aXRjaGVkLixyZW1vdmVfbG9jawQBEHBhcmEVAgEYUGFyYUlkAAQQDQFSZW1vdmUgYSBtYW5hZ2VyIGxvY2sgZnJvbSBhIHBhcmEuIFRoaXMgd2lsbCBhbGxvdyB0aGUgbWFuYWdlciBvZiBhNQFwcmV2aW91c2x5IGxvY2tlZCBwYXJhIHRvIGRlcmVnaXN0ZXIgb3Igc3dhcCBhIHBhcmEgd2l0aG91dCB1c2luZyBnb3Zlcm5hbmNlLgDcQ2FuIG9ubHkgYmUgY2FsbGVkIGJ5IHRoZSBSb290IG9yaWdpbiBvciB0aGUgcGFyYWNoYWluLhxyZXNlcnZlAAVElFJlc2VydmUgYSBQYXJhIElkIG9uIHRoZSByZWxheSBjaGFpbi4ATQFUaGlzIGZ1bmN0aW9uIHdpbGwgcmVzZXJ2ZSBhIG5ldyBQYXJhIElkIHRvIGJlIG93bmVkL21hbmFnZWQgYnkgdGhlIG9yaWdpbiBhY2NvdW50LmEBVGhlIG9yaWdpbiBhY2NvdW50IGlzIGFibGUgdG8gcmVnaXN0ZXIgaGVhZCBkYXRhIGFuZCB2YWxpZGF0aW9uIGNvZGUgdXNpbmcgYHJlZ2lzdGVyYCB0b1kBY3JlYXRlIGFuIG9uLWRlbWFuZCBwYXJhY2hhaW4uIFVzaW5nIHRoZSBTbG90cyBwYWxsZXQsIGFuIG9uLWRlbWFuZCBwYXJhY2hhaW4gY2FuIHRoZW6kYmUgdXBncmFkZWQgdG8gYSBsZWFzZSBob2xkaW5nIHBhcmFjaGFpbi4AMCMjIEFyZ3VtZW50c1UBLSBgb3JpZ2luYDogTXVzdCBiZSBjYWxsZWQgYnkgYSBgU2lnbmVkYCBvcmlnaW4uIEJlY29tZXMgdGhlIG1hbmFnZXIvb3duZXIgb2YgdGhlIG5ldyggIHBhcmEgSUQuAEAjIyBEZXBvc2l0cy9GZWVzIQFUaGUgb3JpZ2luIG11c3QgcmVzZXJ2ZSBhIGRlcG9zaXQgb2YgYFBhcmFEZXBvc2l0YCBmb3IgdGhlIHJlZ2lzdHJhdGlvbi4AJCMjIEV2ZW50c1kBVGhlIGBSZXNlcnZlZGAgZXZlbnQgaXMgZW1pdHRlZCBpbiBjYXNlIG9mIHN1Y2Nlc3MsIHdoaWNoIHByb3ZpZGVzIHRoZSBJRCByZXNlcnZlZCBmb3IQdXNlLiBhZGRfbG9jawQBEHBhcmEVAgEYUGFyYUlkAAYUCQFBZGQgYSBtYW5hZ2VyIGxvY2sgZnJvbSBhIHBhcmEuIFRoaXMgd2lsbCBwcmV2ZW50IHRoZSBtYW5hZ2VyIG9mIGGIcGFyYSB0byBkZXJlZ2lzdGVyIG9yIHN3YXAgYSBwYXJhLgBJAUNhbiBiZSBjYWxsZWQgYnkgUm9vdCwgdGhlIHBhcmFjaGFpbiwgb3IgdGhlIHBhcmFjaGFpbiBtYW5hZ2VyIGlmIHRoZSBwYXJhY2hhaW4gaXMkdW5sb2NrZWQuVHNjaGVkdWxlX2NvZGVfdXBncmFkZQgBEHBhcmEVAgEYUGFyYUlkAAEgbmV3X2NvZGVJBAE4VmFsaWRhdGlvbkNvZGUAByx0U2NoZWR1bGUgYSBwYXJhY2hhaW4gdXBncmFkZS4AVQFUaGlzIHdpbGwga2ljayBvZmYgYSBjaGVjayBvZiBgbmV3X2NvZGVgIGJ5IGFsbCB2YWxpZGF0b3JzLiBBZnRlciB0aGUgbWFqb3JpdHkgb2YgdGhlVQF2YWxpZGF0b3JzIGhhdmUgcmVwb3J0ZWQgb24gdGhlIHZhbGlkaXR5IG9mIHRoZSBjb2RlLCB0aGUgY29kZSB3aWxsIGVpdGhlciBiZSBlbmFjdGVkVQFvciB0aGUgdXBncmFkZSB3aWxsIGJlIHJlamVjdGVkLiBJZiB0aGUgY29kZSB3aWxsIGJlIGVuYWN0ZWQsIHRoZSBjdXJyZW50IGNvZGUgb2YgdGhlXQFwYXJhY2hhaW4gd2lsbCBiZSBvdmVyd3JpdHRlbiBkaXJlY3RseS4gVGhpcyBtZWFucyB0aGF0IGFueSBQb1Ygd2lsbCBiZSBjaGVja2VkIGJ5IHRoaXNdAW5ldyBjb2RlLiBUaGUgcGFyYWNoYWluIGl0c2VsZiB3aWxsIG5vdCBiZSBpbmZvcm1lZCBleHBsaWNpdGx5IHRoYXQgdGhlIHZhbGlkYXRpb24gY29kZTBoYXMgY2hhbmdlZC4ASQFDYW4gYmUgY2FsbGVkIGJ5IFJvb3QsIHRoZSBwYXJhY2hhaW4sIG9yIHRoZSBwYXJhY2hhaW4gbWFuYWdlciBpZiB0aGUgcGFyYWNoYWluIGlzJHVubG9ja2VkLkBzZXRfY3VycmVudF9oZWFkCAEQcGFyYRUCARhQYXJhSWQAASBuZXdfaGVhZE0EASBIZWFkRGF0YQAIEIRTZXQgdGhlIHBhcmFjaGFpbidzIGN1cnJlbnQgaGVhZC4ASQFDYW4gYmUgY2FsbGVkIGJ5IFJvb3QsIHRoZSBwYXJhY2hhaW4sIG9yIHRoZSBwYXJhY2hhaW4gbWFuYWdlciBpZiB0aGUgcGFyYWNoYWluIGlzJHVubG9ja2VkLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy6tBBBccG9sa2Fkb3RfcnVudGltZV9jb21tb24Uc2xvdHMYcGFsbGV0EENhbGwEBFQAAQwsZm9yY2VfbGVhc2UUARBwYXJhFQIBGFBhcmFJZAABGGxlYXNlcgQBMFQ6OkFjY291bnRJZAABGGFtb3VudKQBMEJhbGFuY2VPZjxUPgABMHBlcmlvZF9iZWdpbjgBQExlYXNlUGVyaW9kT2Y8VD4AATBwZXJpb2RfY291bnQ4AUBMZWFzZVBlcmlvZE9mPFQ+AAAQTQFKdXN0IGEgY29ubmVjdCBpbnRvIHRoZSBgbGVhc2Vfb3V0YCBjYWxsLCBpbiBjYXNlIFJvb3Qgd2FudHMgdG8gZm9yY2Ugc29tZSBsZWFzZSB0b/xoYXBwZW4gaW5kZXBlbmRlbnRseSBvZiBhbnkgb3RoZXIgb24tY2hhaW4gbWVjaGFuaXNtIHRvIHVzZSBpdC4A+FRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IG1hdGNoIGBUOjpGb3JjZU9yaWdpbmAuQGNsZWFyX2FsbF9sZWFzZXMEARBwYXJhFQIBGFBhcmFJZAABDE0BQ2xlYXIgYWxsIGxlYXNlcyBmb3IgYSBQYXJhIElkLCByZWZ1bmRpbmcgYW55IGRlcG9zaXRzIGJhY2sgdG8gdGhlIG9yaWdpbmFsIG93bmVycy4A+FRoZSBkaXNwYXRjaCBvcmlnaW4gZm9yIHRoaXMgY2FsbCBtdXN0IG1hdGNoIGBUOjpGb3JjZU9yaWdpbmAuPHRyaWdnZXJfb25ib2FyZAQBEHBhcmEVAgEYUGFyYUlkAAIcJQFUcnkgdG8gb25ib2FyZCBhIHBhcmFjaGFpbiB0aGF0IGhhcyBhIGxlYXNlIGZvciB0aGUgY3VycmVudCBsZWFzZSBwZXJpb2QuAEUBVGhpcyBmdW5jdGlvbiBjYW4gYmUgdXNlZnVsIGlmIHRoZXJlIHdhcyBzb21lIHN0YXRlIGlzc3VlIHdpdGggYSBwYXJhIHRoYXQgc2hvdWxkOQFoYXZlIG9uYm9hcmRlZCwgYnV0IHdhcyB1bmFibGUgdG8uIEFzIGxvbmcgYXMgdGhleSBoYXZlIGEgbGVhc2UgcGVyaW9kLCB3ZSBjYW5sbGV0IHRoZW0gb25ib2FyZCBmcm9tIGhlcmUuAMxPcmlnaW4gbXVzdCBiZSBzaWduZWQsIGJ1dCBjYW4gYmUgY2FsbGVkIGJ5IGFueW9uZS4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMusQQQXHBvbGthZG90X3J1bnRpbWVfY29tbW9uIGF1Y3Rpb25zGHBhbGxldBBDYWxsBARUAAEMLG5ld19hdWN0aW9uCAEgZHVyYXRpb25gAURCbG9ja051bWJlckZvcjxUPgABSGxlYXNlX3BlcmlvZF9pbmRleGABQExlYXNlUGVyaW9kT2Y8VD4AABRUQ3JlYXRlIGEgbmV3IGF1Y3Rpb24uAFEBVGhpcyBjYW4gb25seSBoYXBwZW4gd2hlbiB0aGVyZSBpc24ndCBhbHJlYWR5IGFuIGF1Y3Rpb24gaW4gcHJvZ3Jlc3MgYW5kIG1heSBvbmx5IGJlJQFjYWxsZWQgYnkgdGhlIHJvb3Qgb3JpZ2luLiBBY2NlcHRzIHRoZSBgZHVyYXRpb25gIG9mIHRoaXMgYXVjdGlvbiBhbmQgdGhlWQFgbGVhc2VfcGVyaW9kX2luZGV4YCBvZiB0aGUgaW5pdGlhbCBsZWFzZSBwZXJpb2Qgb2YgdGhlIGZvdXIgdGhhdCBhcmUgdG8gYmUgYXVjdGlvbmVkLgxiaWQUARBwYXJhtQQBGFBhcmFJZAABNGF1Y3Rpb25faW5kZXhgATBBdWN0aW9uSW5kZXgAAShmaXJzdF9zbG90YAFATGVhc2VQZXJpb2RPZjxUPgABJGxhc3Rfc2xvdGABQExlYXNlUGVyaW9kT2Y8VD4AARhhbW91bnSgATBCYWxhbmNlT2Y8VD4AAUBJAU1ha2UgYSBuZXcgYmlkIGZyb20gYW4gYWNjb3VudCAoaW5jbHVkaW5nIGEgcGFyYWNoYWluIGFjY291bnQpIGZvciBkZXBsb3lpbmcgYSBuZXcocGFyYWNoYWluLgBZAU11bHRpcGxlIHNpbXVsdGFuZW91cyBiaWRzIGZyb20gdGhlIHNhbWUgYmlkZGVyIGFyZSBhbGxvd2VkIG9ubHkgYXMgbG9uZyBhcyBhbGwgYWN0aXZlPQFiaWRzIG92ZXJsYXAgZWFjaCBvdGhlciAoaS5lLiBhcmUgbXV0dWFsbHkgZXhjbHVzaXZlKS4gQmlkcyBjYW5ub3QgYmUgcmVkYWN0ZWQuAFUBLSBgc3ViYCBpcyB0aGUgc3ViLWJpZGRlciBJRCwgYWxsb3dpbmcgZm9yIG11bHRpcGxlIGNvbXBldGluZyBiaWRzIHRvIGJlIG1hZGUgYnkgKGFuZHBmdW5kZWQgYnkpIHRoZSBzYW1lIGFjY291bnQuTQEtIGBhdWN0aW9uX2luZGV4YCBpcyB0aGUgaW5kZXggb2YgdGhlIGF1Y3Rpb24gdG8gYmlkIG9uLiBTaG91bGQganVzdCBiZSB0aGUgcHJlc2VudGh2YWx1ZSBvZiBgQXVjdGlvbkNvdW50ZXJgLkkBLSBgZmlyc3Rfc2xvdGAgaXMgdGhlIGZpcnN0IGxlYXNlIHBlcmlvZCBpbmRleCBvZiB0aGUgcmFuZ2UgdG8gYmlkIG9uLiBUaGlzIGlzIHRoZQkBYWJzb2x1dGUgbGVhc2UgcGVyaW9kIGluZGV4IHZhbHVlLCBub3QgYW4gYXVjdGlvbi1zcGVjaWZpYyBvZmZzZXQuQQEtIGBsYXN0X3Nsb3RgIGlzIHRoZSBsYXN0IGxlYXNlIHBlcmlvZCBpbmRleCBvZiB0aGUgcmFuZ2UgdG8gYmlkIG9uLiBUaGlzIGlzIHRoZQkBYWJzb2x1dGUgbGVhc2UgcGVyaW9kIGluZGV4IHZhbHVlLCBub3QgYW4gYXVjdGlvbi1zcGVjaWZpYyBvZmZzZXQuSQEtIGBhbW91bnRgIGlzIHRoZSBhbW91bnQgdG8gYmlkIHRvIGJlIGhlbGQgYXMgZGVwb3NpdCBmb3IgdGhlIHBhcmFjaGFpbiBzaG91bGQgdGhlyGJpZCB3aW4uIFRoaXMgYW1vdW50IGlzIGhlbGQgdGhyb3VnaG91dCB0aGUgcmFuZ2UuOGNhbmNlbF9hdWN0aW9uAAIMeENhbmNlbCBhbiBpbi1wcm9ncmVzcyBhdWN0aW9uLgCIQ2FuIG9ubHkgYmUgY2FsbGVkIGJ5IFJvb3Qgb3JpZ2luLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy61BAAABhUCALkEEFxwb2xrYWRvdF9ydW50aW1lX2NvbW1vbiRjcm93ZGxvYW4YcGFsbGV0EENhbGwEBFQAASQYY3JlYXRlGAEUaW5kZXi1BAEYUGFyYUlkAAEMY2FwoAEwQmFsYW5jZU9mPFQ+AAEwZmlyc3RfcGVyaW9kYAFATGVhc2VQZXJpb2RPZjxUPgABLGxhc3RfcGVyaW9kYAFATGVhc2VQZXJpb2RPZjxUPgABDGVuZGABREJsb2NrTnVtYmVyRm9yPFQ+AAEgdmVyaWZpZXK9BAFMT3B0aW9uPE11bHRpU2lnbmVyPgAAFE0BQ3JlYXRlIGEgbmV3IGNyb3dkbG9hbmluZyBjYW1wYWlnbiBmb3IgYSBwYXJhY2hhaW4gc2xvdCB3aXRoIHRoZSBnaXZlbiBsZWFzZSBwZXJpb2QYcmFuZ2UuAF0BVGhpcyBhcHBsaWVzIGEgbG9jayB0byB5b3VyIHBhcmFjaGFpbiBjb25maWd1cmF0aW9uLCBlbnN1cmluZyB0aGF0IGl0IGNhbm5vdCBiZSBjaGFuZ2VkZGJ5IHRoZSBwYXJhY2hhaW4gbWFuYWdlci4oY29udHJpYnV0ZQwBFGluZGV4tQQBGFBhcmFJZAABFHZhbHVloAEwQmFsYW5jZU9mPFQ+AAEkc2lnbmF0dXJlxQQBWE9wdGlvbjxNdWx0aVNpZ25hdHVyZT4AAQhRAUNvbnRyaWJ1dGUgdG8gYSBjcm93ZCBzYWxlLiBUaGlzIHdpbGwgdHJhbnNmZXIgc29tZSBiYWxhbmNlIG92ZXIgdG8gZnVuZCBhIHBhcmFjaGFpblEBc2xvdC4gSXQgd2lsbCBiZSB3aXRoZHJhd2FibGUgd2hlbiB0aGUgY3Jvd2Rsb2FuIGhhcyBlbmRlZCBhbmQgdGhlIGZ1bmRzIGFyZSB1bnVzZWQuIHdpdGhkcmF3CAEMd2hvBAEwVDo6QWNjb3VudElkAAEUaW5kZXi1BAEYUGFyYUlkAAJEwFdpdGhkcmF3IGZ1bGwgYmFsYW5jZSBvZiBhIHNwZWNpZmljIGNvbnRyaWJ1dG9yLgDAT3JpZ2luIG11c3QgYmUgc2lnbmVkLCBidXQgY2FuIGNvbWUgZnJvbSBhbnlvbmUuAF0BVGhlIGZ1bmQgbXVzdCBiZSBlaXRoZXIgaW4sIG9yIHJlYWR5IGZvciwgcmV0aXJlbWVudC4gRm9yIGEgZnVuZCB0byBiZSAqaW4qIHJldGlyZW1lbnQsSQF0aGVuIHRoZSByZXRpcmVtZW50IGZsYWcgbXVzdCBiZSBzZXQuIEZvciBhIGZ1bmQgdG8gYmUgcmVhZHkgZm9yIHJldGlyZW1lbnQsIHRoZW46nC0gaXQgbXVzdCBub3QgYWxyZWFkeSBiZSBpbiByZXRpcmVtZW50O00BLSB0aGUgYW1vdW50IG9mIHJhaXNlZCBmdW5kcyBtdXN0IGJlIGJpZ2dlciB0aGFuIHRoZSBfZnJlZV8gYmFsYW5jZSBvZiB0aGUgYWNjb3VudDs0LSBhbmQgZWl0aGVyOrwgIC0gdGhlIGJsb2NrIG51bWJlciBtdXN0IGJlIGF0IGxlYXN0IGBlbmRgOyBvci0BICAtIHRoZSBjdXJyZW50IGxlYXNlIHBlcmlvZCBtdXN0IGJlIGdyZWF0ZXIgdGhhbiB0aGUgZnVuZCdzIGBsYXN0X3BlcmlvZGAuAFUBSW4gdGhpcyBjYXNlLCB0aGUgZnVuZCdzIHJldGlyZW1lbnQgZmxhZyBpcyBzZXQgYW5kIGl0cyBgZW5kYCBpcyByZXNldCB0byB0aGUgY3VycmVudDRibG9jayBudW1iZXIuAPAtIGB3aG9gOiBUaGUgYWNjb3VudCB3aG9zZSBjb250cmlidXRpb24gc2hvdWxkIGJlIHdpdGhkcmF3bi4ZAS0gYGluZGV4YDogVGhlIHBhcmFjaGFpbiB0byB3aG9zZSBjcm93ZGxvYW4gdGhlIGNvbnRyaWJ1dGlvbiB3YXMgbWFkZS4YcmVmdW5kBAEUaW5kZXi1BAEYUGFyYUlkAAMU4EF1dG9tYXRpY2FsbHkgcmVmdW5kIGNvbnRyaWJ1dG9ycyBvZiBhbiBlbmRlZCBjcm93ZGxvYW4uIQFEdWUgdG8gd2VpZ2h0IHJlc3RyaWN0aW9ucywgdGhpcyBmdW5jdGlvbiBtYXkgbmVlZCB0byBiZSBjYWxsZWQgbXVsdGlwbGVJAXRpbWVzIHRvIGZ1bGx5IHJlZnVuZCBhbGwgdXNlcnMuIFdlIHdpbGwgcmVmdW5kIGBSZW1vdmVLZXlzTGltaXRgIHVzZXJzIGF0IGEgdGltZS4AwE9yaWdpbiBtdXN0IGJlIHNpZ25lZCwgYnV0IGNhbiBjb21lIGZyb20gYW55b25lLiBkaXNzb2x2ZQQBFGluZGV4tQQBGFBhcmFJZAAEBFUBUmVtb3ZlIGEgZnVuZCBhZnRlciB0aGUgcmV0aXJlbWVudCBwZXJpb2QgaGFzIGVuZGVkIGFuZCBhbGwgZnVuZHMgaGF2ZSBiZWVuIHJldHVybmVkLhBlZGl0GAEUaW5kZXi1BAEYUGFyYUlkAAEMY2FwoAEwQmFsYW5jZU9mPFQ+AAEwZmlyc3RfcGVyaW9kYAFATGVhc2VQZXJpb2RPZjxUPgABLGxhc3RfcGVyaW9kYAFATGVhc2VQZXJpb2RPZjxUPgABDGVuZGABREJsb2NrTnVtYmVyRm9yPFQ+AAEgdmVyaWZpZXK9BAFMT3B0aW9uPE11bHRpU2lnbmVyPgAFDNBFZGl0IHRoZSBjb25maWd1cmF0aW9uIGZvciBhbiBpbi1wcm9ncmVzcyBjcm93ZGxvYW4uAIhDYW4gb25seSBiZSBjYWxsZWQgYnkgUm9vdCBvcmlnaW4uIGFkZF9tZW1vCAEUaW5kZXgVAgEYUGFyYUlkAAEQbWVtbxgBHFZlYzx1OD4ABgzsQWRkIGFuIG9wdGlvbmFsIG1lbW8gdG8gYW4gZXhpc3RpbmcgY3Jvd2Rsb2FuIGNvbnRyaWJ1dGlvbi4ALQFPcmlnaW4gbXVzdCBiZSBTaWduZWQsIGFuZCB0aGUgdXNlciBtdXN0IGhhdmUgY29udHJpYnV0ZWQgdG8gdGhlIGNyb3dkbG9hbi4QcG9rZQQBFGluZGV4FQIBGFBhcmFJZAAHDHRQb2tlIHRoZSBmdW5kIGludG8gYE5ld1JhaXNlYADcT3JpZ2luIG11c3QgYmUgU2lnbmVkLCBhbmQgdGhlIGZ1bmQgaGFzIG5vbi16ZXJvIHJhaXNlLjhjb250cmlidXRlX2FsbAgBFGluZGV4tQQBGFBhcmFJZAABJHNpZ25hdHVyZcUEAVhPcHRpb248TXVsdGlTaWduYXR1cmU+AAgMYQFDb250cmlidXRlIHlvdXIgZW50aXJlIGJhbGFuY2UgdG8gYSBjcm93ZCBzYWxlLiBUaGlzIHdpbGwgdHJhbnNmZXIgdGhlIGVudGlyZSBiYWxhbmNlIG9mUQFhIHVzZXIgb3ZlciB0byBmdW5kIGEgcGFyYWNoYWluIHNsb3QuIEl0IHdpbGwgYmUgd2l0aGRyYXdhYmxlIHdoZW4gdGhlIGNyb3dkbG9hbiBoYXN8ZW5kZWQgYW5kIHRoZSBmdW5kcyBhcmUgdW51c2VkLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy69BAQYT3B0aW9uBARUAcEEAQgQTm9uZQAAABBTb21lBADBBAAAAQAAwQQIKHNwX3J1bnRpbWUsTXVsdGlTaWduZXIAARAcRWQyNTUxOQQACAE8ZWQyNTUxOTo6UHVibGljAAAAHFNyMjU1MTkEAAgBPHNyMjU1MTk6OlB1YmxpYwABABRFY2RzYQQAGQEBNGVjZHNhOjpQdWJsaWMAAgAMRXRoBAAZAQFMZWNkc2E6OktlY2Nha1B1YmxpYwADAADFBAQYT3B0aW9uBARUAckEAQgQTm9uZQAAABBTb21lBADJBAAAAQAAyQQIKHNwX3J1bnRpbWU4TXVsdGlTaWduYXR1cmUAARAcRWQyNTUxOQQANQEBSGVkMjU1MTk6OlNpZ25hdHVyZQAAABxTcjI1NTE5BAA1AQFIc3IyNTUxOTo6U2lnbmF0dXJlAAEAFEVjZHNhBABBAgFAZWNkc2E6OlNpZ25hdHVyZQACAAxFdGgEAEECAVhlY2RzYTo6S2VjY2FrU2lnbmF0dXJlAAMAAM0EEGxwb2xrYWRvdF9ydW50aW1lX3BhcmFjaGFpbnMgY29yZXRpbWUYcGFsbGV0EENhbGwEBFQAARBIcmVxdWVzdF9jb3JlX2NvdW50BAEUY291bnT1AQEMdTE2AAEYUQFSZXF1ZXN0IHRoZSBjb25maWd1cmF0aW9uIHRvIGJlIHVwZGF0ZWQgd2l0aCB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBjb3Jlcy4gV2FybmluZzpRAVNpbmNlIHRoaXMgb25seSBzY2hlZHVsZXMgYSBjb25maWd1cmF0aW9uIHVwZGF0ZSwgaXQgdGFrZXMgdHdvIHNlc3Npb25zIHRvIGNvbWUgaW50bxxlZmZlY3QuAJgtIGBvcmlnaW5gOiBSb290IG9yIHRoZSBDb3JldGltZSBDaGFpboAtIGBjb3VudGA6IHRvdGFsIG51bWJlciBvZiBjb3Jlc0hyZXF1ZXN0X3JldmVudWVfYXQEARB3aGVuOAEsQmxvY2tOdW1iZXIAAhBhAVJlcXVlc3QgdG8gY2xhaW0gdGhlIGluc3RhbnRhbmVvdXMgY29yZXRpbWUgc2FsZXMgcmV2ZW51ZSBzdGFydGluZyBmcm9tIHRoZSBibG9jayBpdCB3YXNdAWxhc3QgY2xhaW1lZCB1bnRpbCBhbmQgdXAgdG8gdGhlIGJsb2NrIHNwZWNpZmllZC4gVGhlIGNsYWltZWQgYW1vdW50IHZhbHVlIGlzIHNlbnQgYmFja1EBdG8gdGhlIENvcmV0aW1lIGNoYWluIGluIGEgYG5vdGlmeV9yZXZlbnVlYCBtZXNzYWdlLiBBdCB0aGUgc2FtZSB0aW1lLCB0aGUgYW1vdW50IGlzhHRlbGVwb3J0ZWQgdG8gdGhlIENvcmV0aW1lIGNoYWluLjhjcmVkaXRfYWNjb3VudAgBDHdobwQBMFQ6OkFjY291bnRJZAABGGFtb3VudKQBMEJhbGFuY2VPZjxUPgADACxhc3NpZ25fY29yZRABEGNvcmX1AQE8QnJva2VyQ29yZUluZGV4AAEUYmVnaW44AURCbG9ja051bWJlckZvcjxUPgABKGFzc2lnbm1lbnTRBAGMVmVjPChDb3JlQXNzaWdubWVudCwgUGFydHNPZjU3NjAwKT4AASBlbmRfaGludOUBAWRPcHRpb248QmxvY2tOdW1iZXJGb3I8VD4+AAQkWQFSZWNlaXZlIGluc3RydWN0aW9ucyBmcm9tIHRoZSBgRXh0ZXJuYWxCcm9rZXJPcmlnaW5gLCBkZXRhaWxpbmcgaG93IGEgc3BlY2lmaWMgY29yZSBpcyx0byBiZSB1c2VkLgAsUGFyYW1ldGVyczohAS1gb3JpZ2luYDogVGhlIGBFeHRlcm5hbEJyb2tlck9yaWdpbmAsIGFzc3VtZWQgdG8gYmUgdGhlIGNvcmV0aW1lIGNoYWluLqwtYGNvcmVgOiBUaGUgY29yZSB0aGF0IHNob3VsZCBiZSBzY2hlZHVsZWQu2C1gYmVnaW5gOiBUaGUgc3RhcnRpbmcgYmxvY2toZWlnaHQgb2YgdGhlIGluc3RydWN0aW9uLtQtYGFzc2lnbm1lbnRgOiBIb3cgdGhlIGJsb2Nrc3BhY2Ugc2hvdWxkIGJlIHV0aWxpc2VkLlkBLWBlbmRfaGludGA6IEFuIG9wdGlvbmFsIGhpbnQgYXMgdG8gd2hlbiB0aGlzIHBhcnRpY3VsYXIgc2V0IG9mIGluc3RydWN0aW9ucyB3aWxsIGVuZC4EDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMu0QQAAALVBADVBAAABAjZBN0EANkEDDRwYWxsZXRfYnJva2VySGNvcmV0aW1lX2ludGVyZmFjZThDb3JlQXNzaWdubWVudAABDBBJZGxlAAAAEFBvb2wAAQAQVGFzawQAOAEYVGFza0lkAAIAAN0EDGxwb2xrYWRvdF9ydW50aW1lX3BhcmFjaGFpbnNEYXNzaWduZXJfY29yZXRpbWUwUGFydHNPZjU3NjAwAAAEAPUBAQx1MTYAAOEEDGxwYWxsZXRfc3RhdGVfdHJpZV9taWdyYXRpb24YcGFsbGV0EENhbGwEBFQAARhYY29udHJvbF9hdXRvX21pZ3JhdGlvbgQBMG1heWJlX2NvbmZpZ+UEAVxPcHRpb248TWlncmF0aW9uTGltaXRzPgAADIBDb250cm9sIHRoZSBhdXRvbWF0aWMgbWlncmF0aW9uLgANAVRoZSBkaXNwYXRjaCBvcmlnaW4gb2YgdGhpcyBjYWxsIG11c3QgYmUgW2BDb25maWc6OkNvbnRyb2xPcmlnaW5gXS5AY29udGludWVfbWlncmF0ZQwBGGxpbWl0c+kEATxNaWdyYXRpb25MaW1pdHMAATxyZWFsX3NpemVfdXBwZXI4AQx1MzIAATB3aXRuZXNzX3Rhc2vtBAFATWlncmF0aW9uVGFzazxUPgABVLhDb250aW51ZSB0aGUgbWlncmF0aW9uIGZvciB0aGUgZ2l2ZW4gYGxpbWl0c2AuAOxUaGUgZGlzcGF0Y2ggb3JpZ2luIG9mIHRoaXMgY2FsbCBjYW4gYmUgYW55IHNpZ25lZCBhY2NvdW50LgBdAVRoaXMgdHJhbnNhY3Rpb24gaGFzIE5PIE1PTkVUQVJZIElOQ0VOVElWRVMuIGNhbGxpbmcgaXQgd2lsbCBub3QgcmV3YXJkIGFueW9uZS4gQWxiZWl0LOxVcG9uIHN1Y2Nlc3NmdWwgZXhlY3V0aW9uLCB0aGUgdHJhbnNhY3Rpb24gZmVlIGlzIHJldHVybmVkLgBBAVRoZSAocG90ZW50aWFsbHkgb3Zlci1lc3RpbWF0ZWQpIG9mIHRoZSBieXRlIGxlbmd0aCBvZiBhbGwgdGhlIGRhdGEgcmVhZCBtdXN0IGJlWQFwcm92aWRlZCBmb3IgdXAtZnJvbnQgZmVlLXBheW1lbnQgYW5kIHdlaWdoaW5nLiBJbiBlc3NlbmNlLCB0aGUgY2FsbGVyIGlzIGd1YXJhbnRlZWluZ0kBdGhhdCBleGVjdXRpbmcgdGhlIGN1cnJlbnQgYE1pZ3JhdGlvblRhc2tgIHdpdGggdGhlIGdpdmVuIGBsaW1pdHNgIHdpbGwgbm90IGV4Y2VlZJRgcmVhbF9zaXplX3VwcGVyYCBieXRlcyBvZiByZWFkIGRhdGEuAEUBVGhlIGB3aXRuZXNzX3Rhc2tgIGlzIG1lcmVseSBhIGhlbHBlciB0byBwcmV2ZW50IHRoZSBjYWxsZXIgZnJvbSBiZWluZyBzbGFzaGVkIG9yXQFnZW5lcmFsbHkgdHJpZ2dlciBhIG1pZ3JhdGlvbiB0aGF0IHRoZXkgZG8gbm90IGludGVuZC4gVGhpcyBwYXJhbWV0ZXIgaXMganVzdCBhIG1lc3NhZ2U9AWZyb20gY2FsbGVyLCBzYXlpbmcgdGhhdCB0aGV5IGJlbGlldmVkIGB3aXRuZXNzX3Rhc2tgIHdhcyB0aGUgbGFzdCBzdGF0ZSBvZiB0aGVZAW1pZ3JhdGlvbiwgYW5kIHRoZXkgb25seSB3aXNoIGZvciB0aGVpciB0cmFuc2FjdGlvbiB0byBkbyBhbnl0aGluZywgaWYgdGhpcyBhc3N1bXB0aW9uEQFob2xkcy4gSW4gY2FzZSBgd2l0bmVzc190YXNrYCBkb2VzIG5vdCBtYXRjaCwgdGhlIHRyYW5zYWN0aW9uIGZhaWxzLgA5AUJhc2VkIG9uIHRoZSBkb2N1bWVudGF0aW9uIG9mIFtgTWlncmF0aW9uVGFzazo6bWlncmF0ZV91bnRpbF9leGhhdXN0aW9uYF0sIHRoZU0BcmVjb21tZW5kZWQgd2F5IG9mIGRvaW5nIHRoaXMgaXMgdG8gcGFzcyBhIGBsaW1pdGAgdGhhdCBvbmx5IGJvdW5kcyBgY291bnRgLCBhcyB0aGWcYHNpemVgIGxpbWl0IGNhbiBhbHdheXMgYmUgb3ZlcndyaXR0ZW4uSG1pZ3JhdGVfY3VzdG9tX3RvcAgBEGtleXM0ATBWZWM8VmVjPHU4Pj4AATB3aXRuZXNzX3NpemU4AQx1MzIAAhAJAU1pZ3JhdGUgdGhlIGxpc3Qgb2YgdG9wIGtleXMgYnkgaXRlcmF0aW5nIGVhY2ggb2YgdGhlbSBvbmUgYnkgb25lLgBVAVRoaXMgZG9lcyBub3QgYWZmZWN0IHRoZSBnbG9iYWwgbWlncmF0aW9uIHByb2Nlc3MgdHJhY2tlciAoW2BNaWdyYXRpb25Qcm9jZXNzYF0pLCBhbmT8c2hvdWxkIG9ubHkgYmUgdXNlZCBpbiBjYXNlIGFueSBrZXlzIGFyZSBsZWZ0b3ZlciBkdWUgdG8gYSBidWcuUG1pZ3JhdGVfY3VzdG9tX2NoaWxkDAEQcm9vdBgBHFZlYzx1OD4AAShjaGlsZF9rZXlzNAEwVmVjPFZlYzx1OD4+AAEodG90YWxfc2l6ZTgBDHUzMgADGBEBTWlncmF0ZSB0aGUgbGlzdCBvZiBjaGlsZCBrZXlzIGJ5IGl0ZXJhdGluZyBlYWNoIG9mIHRoZW0gb25lIGJ5IG9uZS4ADQFBbGwgb2YgdGhlIGdpdmVuIGNoaWxkIGtleXMgbXVzdCBiZSBwcmVzZW50IHVuZGVyIG9uZSBgY2hpbGRfcm9vdGAuAFUBVGhpcyBkb2VzIG5vdCBhZmZlY3QgdGhlIGdsb2JhbCBtaWdyYXRpb24gcHJvY2VzcyB0cmFja2VyIChbYE1pZ3JhdGlvblByb2Nlc3NgXSksIGFuZPxzaG91bGQgb25seSBiZSB1c2VkIGluIGNhc2UgYW55IGtleXMgYXJlIGxlZnRvdmVyIGR1ZSB0byBhIGJ1Zy5Uc2V0X3NpZ25lZF9tYXhfbGltaXRzBAEYbGltaXRz6QQBPE1pZ3JhdGlvbkxpbWl0cwAEBLhTZXQgdGhlIG1heGltdW0gbGltaXQgb2YgdGhlIHNpZ25lZCBtaWdyYXRpb24uSGZvcmNlX3NldF9wcm9ncmVzcwgBMHByb2dyZXNzX3RvcPEEATRQcm9ncmVzc09mPFQ+AAE4cHJvZ3Jlc3NfY2hpbGTxBAE0UHJvZ3Jlc3NPZjxUPgAFJMhGb3JjZWZ1bGx5IHNldCB0aGUgcHJvZ3Jlc3MgdGhlIHJ1bm5pbmcgbWlncmF0aW9uLgBdAVRoaXMgaXMgb25seSB1c2VmdWwgaW4gb25lIGNhc2U6IHRoZSBuZXh0IGtleSB0byBtaWdyYXRlIGlzIHRvbyBiaWcgdG8gYmUgbWlncmF0ZWQgd2l0aFUBYSBzaWduZWQgYWNjb3VudCwgaW4gYSBwYXJhY2hhaW4gY29udGV4dCwgYW5kIHdlIHNpbXBseSB3YW50IHRvIHNraXAgaXQuIEEgcmVhc29uYWJsZWEBZXhhbXBsZSBvZiB0aGlzIHdvdWxkIGJlIGA6Y29kZTpgLCB3aGljaCBpcyBib3RoIHZlcnkgZXhwZW5zaXZlIHRvIG1pZ3JhdGUsIGFuZCBjb21tb25seaR1c2VkLCBzbyBwcm9iYWJseSBpdCBpcyBhbHJlYWR5IG1pZ3JhdGVkLgBdAUluIGNhc2UgeW91IG1lc3MgdGhpbmdzIHVwLCB5b3UgY2FuIGFsc28sIGluIHByaW5jaXBsZSwgdXNlIHRoaXMgdG8gcmVzZXQgdGhlIG1pZ3JhdGlvbiBwcm9jZXNzLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy7lBAQYT3B0aW9uBARUAekEAQgQTm9uZQAAABBTb21lBADpBAAAAQAA6QQMbHBhbGxldF9zdGF0ZV90cmllX21pZ3JhdGlvbhhwYWxsZXQ8TWlncmF0aW9uTGltaXRzAAAIARBzaXplOAEMdTMyAAEQaXRlbTgBDHUzMgAA7QQMbHBhbGxldF9zdGF0ZV90cmllX21pZ3JhdGlvbhhwYWxsZXQ0TWlncmF0aW9uVGFzawQEVAAAFAEwcHJvZ3Jlc3NfdG9w8QQBNFByb2dyZXNzT2Y8VD4AAThwcm9ncmVzc19jaGlsZPEEATRQcm9ncmVzc09mPFQ+AAEQc2l6ZTgBDHUzMgABJHRvcF9pdGVtczgBDHUzMgABLGNoaWxkX2l0ZW1zOAEMdTMyAADxBAxscGFsbGV0X3N0YXRlX3RyaWVfbWlncmF0aW9uGHBhbGxldCBQcm9ncmVzcwQkTWF4S2V5TGVuAAEMHFRvU3RhcnQAAAAcTGFzdEtleQQA9QQBZEJvdW5kZWRWZWM8dTgsIE1heEtleUxlbj4AAQAgQ29tcGxldGUAAgAA9QQMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AAD5BAwocGFsbGV0X3hjbRhwYWxsZXQQQ2FsbAQEVAABRBBzZW5kCAEQZGVzdOEBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAEcbWVzc2FnZf0EAVRCb3g8VmVyc2lvbmVkWGNtPCgpPj4AAAA8dGVsZXBvcnRfYXNzZXRzEAEQZGVzdOEBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAEsYmVuZWZpY2lhcnnhAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgABGGFzc2V0czEGAVBCb3g8VmVyc2lvbmVkQXNzZXRzPgABOGZlZV9hc3NldF9pdGVtOAEMdTMyAAFIEQFUZWxlcG9ydCBzb21lIGFzc2V0cyBmcm9tIHRoZSBsb2NhbCBjaGFpbiB0byBzb21lIGRlc3RpbmF0aW9uIGNoYWluLgAdASoqVGhpcyBmdW5jdGlvbiBpcyBkZXByZWNhdGVkOiBVc2UgYGxpbWl0ZWRfdGVsZXBvcnRfYXNzZXRzYCBpbnN0ZWFkLioqAFEBRmVlIHBheW1lbnQgb24gdGhlIGRlc3RpbmF0aW9uIHNpZGUgaXMgbWFkZSBmcm9tIHRoZSBhc3NldCBpbiB0aGUgYGFzc2V0c2AgdmVjdG9yIG9mYQFpbmRleCBgZmVlX2Fzc2V0X2l0ZW1gLiBUaGUgd2VpZ2h0IGxpbWl0IGZvciBmZWVzIGlzIG5vdCBwcm92aWRlZCBhbmQgdGh1cyBpcyB1bmxpbWl0ZWQstHdpdGggYWxsIGZlZXMgdGFrZW4gYXMgbmVlZGVkIGZyb20gdGhlIGFzc2V0LgApAS0gYG9yaWdpbmA6IE11c3QgYmUgY2FwYWJsZSBvZiB3aXRoZHJhd2luZyB0aGUgYGFzc2V0c2AgYW5kIGV4ZWN1dGluZyBYQ00uJQEtIGBkZXN0YDogRGVzdGluYXRpb24gY29udGV4dCBmb3IgdGhlIGFzc2V0cy4gV2lsbCB0eXBpY2FsbHkgYmUgYFtQYXJlbnQsYQEgIFBhcmFjaGFpbiguLildYCB0byBzZW5kIGZyb20gcGFyYWNoYWluIHRvIHBhcmFjaGFpbiwgb3IgYFtQYXJhY2hhaW4oLi4pXWAgdG8gc2VuZCBmcm9tVCAgcmVsYXkgdG8gcGFyYWNoYWluLlUBLSBgYmVuZWZpY2lhcnlgOiBBIGJlbmVmaWNpYXJ5IGxvY2F0aW9uIGZvciB0aGUgYXNzZXRzIGluIHRoZSBjb250ZXh0IG9mIGBkZXN0YC4gV2lsbJggIGdlbmVyYWxseSBiZSBhbiBgQWNjb3VudElkMzJgIHZhbHVlLlkBLSBgYXNzZXRzYDogVGhlIGFzc2V0cyB0byBiZSB3aXRoZHJhd24uIFRoaXMgc2hvdWxkIGluY2x1ZGUgdGhlIGFzc2V0cyB1c2VkIHRvIHBheSB0aGVoICBmZWUgb24gdGhlIGBkZXN0YCBjaGFpbi5NAS0gYGZlZV9hc3NldF9pdGVtYDogVGhlIGluZGV4IGludG8gYGFzc2V0c2Agb2YgdGhlIGl0ZW0gd2hpY2ggc2hvdWxkIGJlIHVzZWQgdG8gcGF5HCAgZmVlcy5ccmVzZXJ2ZV90cmFuc2Zlcl9hc3NldHMQARBkZXN04QEBWEJveDxWZXJzaW9uZWRMb2NhdGlvbj4AASxiZW5lZmljaWFyeeEBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAEYYXNzZXRzMQYBUEJveDxWZXJzaW9uZWRBc3NldHM+AAE4ZmVlX2Fzc2V0X2l0ZW04AQx1MzIAAnhdAVRyYW5zZmVyIHNvbWUgYXNzZXRzIGZyb20gdGhlIGxvY2FsIGNoYWluIHRvIHRoZSBkZXN0aW5hdGlvbiBjaGFpbiB0aHJvdWdoIHRoZWlyIGxvY2FsLHhkZXN0aW5hdGlvbiBvciByZW1vdGUgcmVzZXJ2ZS4APQFgYXNzZXRzYCBtdXN0IGhhdmUgc2FtZSByZXNlcnZlIGxvY2F0aW9uIGFuZCBtYXkgbm90IGJlIHRlbGVwb3J0YWJsZSB0byBgZGVzdGAuTQEgLSBgYXNzZXRzYCBoYXZlIGxvY2FsIHJlc2VydmU6IHRyYW5zZmVyIGFzc2V0cyB0byBzb3ZlcmVpZ24gYWNjb3VudCBvZiBkZXN0aW5hdGlvbk0BICAgY2hhaW4gYW5kIGZvcndhcmQgYSBub3RpZmljYXRpb24gWENNIHRvIGBkZXN0YCB0byBtaW50IGFuZCBkZXBvc2l0IHJlc2VydmUtYmFzZWRsICAgYXNzZXRzIHRvIGBiZW5lZmljaWFyeWAuVQEgLSBgYXNzZXRzYCBoYXZlIGRlc3RpbmF0aW9uIHJlc2VydmU6IGJ1cm4gbG9jYWwgYXNzZXRzIGFuZCBmb3J3YXJkIGEgbm90aWZpY2F0aW9uIHRvWQEgICBgZGVzdGAgY2hhaW4gdG8gd2l0aGRyYXcgdGhlIHJlc2VydmUgYXNzZXRzIGZyb20gdGhpcyBjaGFpbidzIHNvdmVyZWlnbiBhY2NvdW50IGFuZIQgICBkZXBvc2l0IHRoZW0gdG8gYGJlbmVmaWNpYXJ5YC5hASAtIGBhc3NldHNgIGhhdmUgcmVtb3RlIHJlc2VydmU6IGJ1cm4gbG9jYWwgYXNzZXRzLCBmb3J3YXJkIFhDTSB0byByZXNlcnZlIGNoYWluIHRvIG1vdmVhASAgIHJlc2VydmVzIGZyb20gdGhpcyBjaGFpbidzIFNBIHRvIGBkZXN0YCBjaGFpbidzIFNBLCBhbmQgZm9yd2FyZCBhbm90aGVyIFhDTSB0byBgZGVzdGD0ICAgdG8gbWludCBhbmQgZGVwb3NpdCByZXNlcnZlLWJhc2VkIGFzc2V0cyB0byBgYmVuZWZpY2lhcnlgLgA9ASoqVGhpcyBmdW5jdGlvbiBpcyBkZXByZWNhdGVkOiBVc2UgYGxpbWl0ZWRfcmVzZXJ2ZV90cmFuc2Zlcl9hc3NldHNgIGluc3RlYWQuKioAUQFGZWUgcGF5bWVudCBvbiB0aGUgZGVzdGluYXRpb24gc2lkZSBpcyBtYWRlIGZyb20gdGhlIGFzc2V0IGluIHRoZSBgYXNzZXRzYCB2ZWN0b3Igb2ZhAWluZGV4IGBmZWVfYXNzZXRfaXRlbWAuIFRoZSB3ZWlnaHQgbGltaXQgZm9yIGZlZXMgaXMgbm90IHByb3ZpZGVkIGFuZCB0aHVzIGlzIHVubGltaXRlZCy0d2l0aCBhbGwgZmVlcyB0YWtlbiBhcyBuZWVkZWQgZnJvbSB0aGUgYXNzZXQuACkBLSBgb3JpZ2luYDogTXVzdCBiZSBjYXBhYmxlIG9mIHdpdGhkcmF3aW5nIHRoZSBgYXNzZXRzYCBhbmQgZXhlY3V0aW5nIFhDTS4lAS0gYGRlc3RgOiBEZXN0aW5hdGlvbiBjb250ZXh0IGZvciB0aGUgYXNzZXRzLiBXaWxsIHR5cGljYWxseSBiZSBgW1BhcmVudCxhASAgUGFyYWNoYWluKC4uKV1gIHRvIHNlbmQgZnJvbSBwYXJhY2hhaW4gdG8gcGFyYWNoYWluLCBvciBgW1BhcmFjaGFpbiguLildYCB0byBzZW5kIGZyb21UICByZWxheSB0byBwYXJhY2hhaW4uVQEtIGBiZW5lZmljaWFyeWA6IEEgYmVuZWZpY2lhcnkgbG9jYXRpb24gZm9yIHRoZSBhc3NldHMgaW4gdGhlIGNvbnRleHQgb2YgYGRlc3RgLiBXaWxsmCAgZ2VuZXJhbGx5IGJlIGFuIGBBY2NvdW50SWQzMmAgdmFsdWUuWQEtIGBhc3NldHNgOiBUaGUgYXNzZXRzIHRvIGJlIHdpdGhkcmF3bi4gVGhpcyBzaG91bGQgaW5jbHVkZSB0aGUgYXNzZXRzIHVzZWQgdG8gcGF5IHRoZcggIGZlZSBvbiB0aGUgYGRlc3RgIChhbmQgcG9zc2libHkgcmVzZXJ2ZSkgY2hhaW5zLk0BLSBgZmVlX2Fzc2V0X2l0ZW1gOiBUaGUgaW5kZXggaW50byBgYXNzZXRzYCBvZiB0aGUgaXRlbSB3aGljaCBzaG91bGQgYmUgdXNlZCB0byBwYXkcICBmZWVzLhxleGVjdXRlCAEcbWVzc2FnZTUGAbRCb3g8VmVyc2lvbmVkWGNtPDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsPj4AAShtYXhfd2VpZ2h0NQIBGFdlaWdodAADINBFeGVjdXRlIGFuIFhDTSBtZXNzYWdlIGZyb20gYSBsb2NhbCwgc2lnbmVkLCBvcmlnaW4uAE0BQW4gZXZlbnQgaXMgZGVwb3NpdGVkIGluZGljYXRpbmcgd2hldGhlciBgbXNnYCBjb3VsZCBiZSBleGVjdXRlZCBjb21wbGV0ZWx5IG9yIG9ubHkocGFydGlhbGx5LgBdAU5vIG1vcmUgdGhhbiBgbWF4X3dlaWdodGAgd2lsbCBiZSB1c2VkIGluIGl0cyBhdHRlbXB0ZWQgZXhlY3V0aW9uLiBJZiB0aGlzIGlzIGxlc3MgdGhhbkEBdGhlIG1heGltdW0gYW1vdW50IG9mIHdlaWdodCB0aGF0IHRoZSBtZXNzYWdlIGNvdWxkIHRha2UgdG8gYmUgZXhlY3V0ZWQsIHRoZW4gbm98ZXhlY3V0aW9uIGF0dGVtcHQgd2lsbCBiZSBtYWRlLkRmb3JjZV94Y21fdmVyc2lvbggBIGxvY2F0aW9uqQEBNEJveDxMb2NhdGlvbj4AARx2ZXJzaW9uOAEoWGNtVmVyc2lvbgAEGEkBRXh0b2xsIHRoYXQgYSBwYXJ0aWN1bGFyIGRlc3RpbmF0aW9uIGNhbiBiZSBjb21tdW5pY2F0ZWQgd2l0aCB0aHJvdWdoIGEgcGFydGljdWxhcjx2ZXJzaW9uIG9mIFhDTS4A3C0gYG9yaWdpbmA6IE11c3QgYmUgYW4gb3JpZ2luIHNwZWNpZmllZCBieSBBZG1pbk9yaWdpbi7YLSBgbG9jYXRpb25gOiBUaGUgZGVzdGluYXRpb24gdGhhdCBpcyBiZWluZyBkZXNjcmliZWQuEQEtIGB4Y21fdmVyc2lvbmA6IFRoZSBsYXRlc3QgdmVyc2lvbiBvZiBYQ00gdGhhdCBgbG9jYXRpb25gIHN1cHBvcnRzLmRmb3JjZV9kZWZhdWx0X3hjbV92ZXJzaW9uBAFEbWF5YmVfeGNtX3ZlcnNpb27lAQFIT3B0aW9uPFhjbVZlcnNpb24+AAUUWQFTZXQgYSBzYWZlIFhDTSB2ZXJzaW9uICh0aGUgdmVyc2lvbiB0aGF0IFhDTSBzaG91bGQgYmUgZW5jb2RlZCB3aXRoIGlmIHRoZSBtb3N0IHJlY2VudLR2ZXJzaW9uIGEgZGVzdGluYXRpb24gY2FuIGFjY2VwdCBpcyB1bmtub3duKS4A3C0gYG9yaWdpbmA6IE11c3QgYmUgYW4gb3JpZ2luIHNwZWNpZmllZCBieSBBZG1pbk9yaWdpbi45AS0gYG1heWJlX3hjbV92ZXJzaW9uYDogVGhlIGRlZmF1bHQgWENNIGVuY29kaW5nIHZlcnNpb24sIG9yIGBOb25lYCB0byBkaXNhYmxlLnhmb3JjZV9zdWJzY3JpYmVfdmVyc2lvbl9ub3RpZnkEASBsb2NhdGlvbuEBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAYQOQFBc2sgYSBsb2NhdGlvbiB0byBub3RpZnkgdXMgcmVnYXJkaW5nIHRoZWlyIFhDTSB2ZXJzaW9uIGFuZCBhbnkgY2hhbmdlcyB0byBpdC4A3C0gYG9yaWdpbmA6IE11c3QgYmUgYW4gb3JpZ2luIHNwZWNpZmllZCBieSBBZG1pbk9yaWdpbi5ZAS0gYGxvY2F0aW9uYDogVGhlIGxvY2F0aW9uIHRvIHdoaWNoIHdlIHNob3VsZCBzdWJzY3JpYmUgZm9yIFhDTSB2ZXJzaW9uIG5vdGlmaWNhdGlvbnMugGZvcmNlX3Vuc3Vic2NyaWJlX3ZlcnNpb25fbm90aWZ5BAEgbG9jYXRpb27hAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgAHGEkBUmVxdWlyZSB0aGF0IGEgcGFydGljdWxhciBkZXN0aW5hdGlvbiBzaG91bGQgbm8gbG9uZ2VyIG5vdGlmeSB1cyByZWdhcmRpbmcgYW55IFhDTUB2ZXJzaW9uIGNoYW5nZXMuANwtIGBvcmlnaW5gOiBNdXN0IGJlIGFuIG9yaWdpbiBzcGVjaWZpZWQgYnkgQWRtaW5PcmlnaW4uPQEtIGBsb2NhdGlvbmA6IFRoZSBsb2NhdGlvbiB0byB3aGljaCB3ZSBhcmUgY3VycmVudGx5IHN1YnNjcmliZWQgZm9yIFhDTSB2ZXJzaW9uqCAgbm90aWZpY2F0aW9ucyB3aGljaCB3ZSBubyBsb25nZXIgZGVzaXJlLnxsaW1pdGVkX3Jlc2VydmVfdHJhbnNmZXJfYXNzZXRzFAEQZGVzdOEBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAEsYmVuZWZpY2lhcnnhAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgABGGFzc2V0czEGAVBCb3g8VmVyc2lvbmVkQXNzZXRzPgABOGZlZV9hc3NldF9pdGVtOAEMdTMyAAEwd2VpZ2h0X2xpbWl0bQUBLFdlaWdodExpbWl0AAh4XQFUcmFuc2ZlciBzb21lIGFzc2V0cyBmcm9tIHRoZSBsb2NhbCBjaGFpbiB0byB0aGUgZGVzdGluYXRpb24gY2hhaW4gdGhyb3VnaCB0aGVpciBsb2NhbCx4ZGVzdGluYXRpb24gb3IgcmVtb3RlIHJlc2VydmUuAD0BYGFzc2V0c2AgbXVzdCBoYXZlIHNhbWUgcmVzZXJ2ZSBsb2NhdGlvbiBhbmQgbWF5IG5vdCBiZSB0ZWxlcG9ydGFibGUgdG8gYGRlc3RgLk0BIC0gYGFzc2V0c2AgaGF2ZSBsb2NhbCByZXNlcnZlOiB0cmFuc2ZlciBhc3NldHMgdG8gc292ZXJlaWduIGFjY291bnQgb2YgZGVzdGluYXRpb25NASAgIGNoYWluIGFuZCBmb3J3YXJkIGEgbm90aWZpY2F0aW9uIFhDTSB0byBgZGVzdGAgdG8gbWludCBhbmQgZGVwb3NpdCByZXNlcnZlLWJhc2VkbCAgIGFzc2V0cyB0byBgYmVuZWZpY2lhcnlgLlUBIC0gYGFzc2V0c2AgaGF2ZSBkZXN0aW5hdGlvbiByZXNlcnZlOiBidXJuIGxvY2FsIGFzc2V0cyBhbmQgZm9yd2FyZCBhIG5vdGlmaWNhdGlvbiB0b1kBICAgYGRlc3RgIGNoYWluIHRvIHdpdGhkcmF3IHRoZSByZXNlcnZlIGFzc2V0cyBmcm9tIHRoaXMgY2hhaW4ncyBzb3ZlcmVpZ24gYWNjb3VudCBhbmSEICAgZGVwb3NpdCB0aGVtIHRvIGBiZW5lZmljaWFyeWAuYQEgLSBgYXNzZXRzYCBoYXZlIHJlbW90ZSByZXNlcnZlOiBidXJuIGxvY2FsIGFzc2V0cywgZm9yd2FyZCBYQ00gdG8gcmVzZXJ2ZSBjaGFpbiB0byBtb3ZlYQEgICByZXNlcnZlcyBmcm9tIHRoaXMgY2hhaW4ncyBTQSB0byBgZGVzdGAgY2hhaW4ncyBTQSwgYW5kIGZvcndhcmQgYW5vdGhlciBYQ00gdG8gYGRlc3Rg9CAgIHRvIG1pbnQgYW5kIGRlcG9zaXQgcmVzZXJ2ZS1iYXNlZCBhc3NldHMgdG8gYGJlbmVmaWNpYXJ5YC4AUQFGZWUgcGF5bWVudCBvbiB0aGUgZGVzdGluYXRpb24gc2lkZSBpcyBtYWRlIGZyb20gdGhlIGFzc2V0IGluIHRoZSBgYXNzZXRzYCB2ZWN0b3Igb2ZhAWluZGV4IGBmZWVfYXNzZXRfaXRlbWAsIHVwIHRvIGVub3VnaCB0byBwYXkgZm9yIGB3ZWlnaHRfbGltaXRgIG9mIHdlaWdodC4gSWYgbW9yZSB3ZWlnaHRZAWlzIG5lZWRlZCB0aGFuIGB3ZWlnaHRfbGltaXRgLCB0aGVuIHRoZSBvcGVyYXRpb24gd2lsbCBmYWlsIGFuZCB0aGUgc2VudCBhc3NldHMgbWF5IGJlIGF0IHJpc2suACkBLSBgb3JpZ2luYDogTXVzdCBiZSBjYXBhYmxlIG9mIHdpdGhkcmF3aW5nIHRoZSBgYXNzZXRzYCBhbmQgZXhlY3V0aW5nIFhDTS4lAS0gYGRlc3RgOiBEZXN0aW5hdGlvbiBjb250ZXh0IGZvciB0aGUgYXNzZXRzLiBXaWxsIHR5cGljYWxseSBiZSBgW1BhcmVudCxhASAgUGFyYWNoYWluKC4uKV1gIHRvIHNlbmQgZnJvbSBwYXJhY2hhaW4gdG8gcGFyYWNoYWluLCBvciBgW1BhcmFjaGFpbiguLildYCB0byBzZW5kIGZyb21UICByZWxheSB0byBwYXJhY2hhaW4uVQEtIGBiZW5lZmljaWFyeWA6IEEgYmVuZWZpY2lhcnkgbG9jYXRpb24gZm9yIHRoZSBhc3NldHMgaW4gdGhlIGNvbnRleHQgb2YgYGRlc3RgLiBXaWxsmCAgZ2VuZXJhbGx5IGJlIGFuIGBBY2NvdW50SWQzMmAgdmFsdWUuWQEtIGBhc3NldHNgOiBUaGUgYXNzZXRzIHRvIGJlIHdpdGhkcmF3bi4gVGhpcyBzaG91bGQgaW5jbHVkZSB0aGUgYXNzZXRzIHVzZWQgdG8gcGF5IHRoZcggIGZlZSBvbiB0aGUgYGRlc3RgIChhbmQgcG9zc2libHkgcmVzZXJ2ZSkgY2hhaW5zLk0BLSBgZmVlX2Fzc2V0X2l0ZW1gOiBUaGUgaW5kZXggaW50byBgYXNzZXRzYCBvZiB0aGUgaXRlbSB3aGljaCBzaG91bGQgYmUgdXNlZCB0byBwYXkcICBmZWVzLkUBLSBgd2VpZ2h0X2xpbWl0YDogVGhlIHJlbW90ZS1zaWRlIHdlaWdodCBsaW1pdCwgaWYgYW55LCBmb3IgdGhlIFhDTSBmZWUgcHVyY2hhc2UuXGxpbWl0ZWRfdGVsZXBvcnRfYXNzZXRzFAEQZGVzdOEBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAEsYmVuZWZpY2lhcnnhAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgABGGFzc2V0czEGAVBCb3g8VmVyc2lvbmVkQXNzZXRzPgABOGZlZV9hc3NldF9pdGVtOAEMdTMyAAEwd2VpZ2h0X2xpbWl0bQUBLFdlaWdodExpbWl0AAlIEQFUZWxlcG9ydCBzb21lIGFzc2V0cyBmcm9tIHRoZSBsb2NhbCBjaGFpbiB0byBzb21lIGRlc3RpbmF0aW9uIGNoYWluLgBRAUZlZSBwYXltZW50IG9uIHRoZSBkZXN0aW5hdGlvbiBzaWRlIGlzIG1hZGUgZnJvbSB0aGUgYXNzZXQgaW4gdGhlIGBhc3NldHNgIHZlY3RvciBvZmEBaW5kZXggYGZlZV9hc3NldF9pdGVtYCwgdXAgdG8gZW5vdWdoIHRvIHBheSBmb3IgYHdlaWdodF9saW1pdGAgb2Ygd2VpZ2h0LiBJZiBtb3JlIHdlaWdodFkBaXMgbmVlZGVkIHRoYW4gYHdlaWdodF9saW1pdGAsIHRoZW4gdGhlIG9wZXJhdGlvbiB3aWxsIGZhaWwgYW5kIHRoZSBzZW50IGFzc2V0cyBtYXkgYmUgYXQgcmlzay4AKQEtIGBvcmlnaW5gOiBNdXN0IGJlIGNhcGFibGUgb2Ygd2l0aGRyYXdpbmcgdGhlIGBhc3NldHNgIGFuZCBleGVjdXRpbmcgWENNLiUBLSBgZGVzdGA6IERlc3RpbmF0aW9uIGNvbnRleHQgZm9yIHRoZSBhc3NldHMuIFdpbGwgdHlwaWNhbGx5IGJlIGBbUGFyZW50LGEBICBQYXJhY2hhaW4oLi4pXWAgdG8gc2VuZCBmcm9tIHBhcmFjaGFpbiB0byBwYXJhY2hhaW4sIG9yIGBbUGFyYWNoYWluKC4uKV1gIHRvIHNlbmQgZnJvbVQgIHJlbGF5IHRvIHBhcmFjaGFpbi5VAS0gYGJlbmVmaWNpYXJ5YDogQSBiZW5lZmljaWFyeSBsb2NhdGlvbiBmb3IgdGhlIGFzc2V0cyBpbiB0aGUgY29udGV4dCBvZiBgZGVzdGAuIFdpbGyYICBnZW5lcmFsbHkgYmUgYW4gYEFjY291bnRJZDMyYCB2YWx1ZS5ZAS0gYGFzc2V0c2A6IFRoZSBhc3NldHMgdG8gYmUgd2l0aGRyYXduLiBUaGlzIHNob3VsZCBpbmNsdWRlIHRoZSBhc3NldHMgdXNlZCB0byBwYXkgdGhlaCAgZmVlIG9uIHRoZSBgZGVzdGAgY2hhaW4uTQEtIGBmZWVfYXNzZXRfaXRlbWA6IFRoZSBpbmRleCBpbnRvIGBhc3NldHNgIG9mIHRoZSBpdGVtIHdoaWNoIHNob3VsZCBiZSB1c2VkIHRvIHBheRwgIGZlZXMuRQEtIGB3ZWlnaHRfbGltaXRgOiBUaGUgcmVtb3RlLXNpZGUgd2VpZ2h0IGxpbWl0LCBpZiBhbnksIGZvciB0aGUgWENNIGZlZSBwdXJjaGFzZS5AZm9yY2Vfc3VzcGVuc2lvbgQBJHN1c3BlbmRlZJgBEGJvb2wAChD0U2V0IG9yIHVuc2V0IHRoZSBnbG9iYWwgc3VzcGVuc2lvbiBzdGF0ZSBvZiB0aGUgWENNIGV4ZWN1dG9yLgDcLSBgb3JpZ2luYDogTXVzdCBiZSBhbiBvcmlnaW4gc3BlY2lmaWVkIGJ5IEFkbWluT3JpZ2luLtAtIGBzdXNwZW5kZWRgOiBgdHJ1ZWAgdG8gc3VzcGVuZCwgYGZhbHNlYCB0byByZXN1bWUuPHRyYW5zZmVyX2Fzc2V0cxQBEGRlc3ThAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgABLGJlbmVmaWNpYXJ54QEBWEJveDxWZXJzaW9uZWRMb2NhdGlvbj4AARhhc3NldHMxBgFQQm94PFZlcnNpb25lZEFzc2V0cz4AAThmZWVfYXNzZXRfaXRlbTgBDHUzMgABMHdlaWdodF9saW1pdG0FASxXZWlnaHRMaW1pdAALhF0BVHJhbnNmZXIgc29tZSBhc3NldHMgZnJvbSB0aGUgbG9jYWwgY2hhaW4gdG8gdGhlIGRlc3RpbmF0aW9uIGNoYWluIHRocm91Z2ggdGhlaXIgbG9jYWws0GRlc3RpbmF0aW9uIG9yIHJlbW90ZSByZXNlcnZlLCBvciB0aHJvdWdoIHRlbGVwb3J0cy4AUQFGZWUgcGF5bWVudCBvbiB0aGUgZGVzdGluYXRpb24gc2lkZSBpcyBtYWRlIGZyb20gdGhlIGFzc2V0IGluIHRoZSBgYXNzZXRzYCB2ZWN0b3Igb2Y1AWluZGV4IGBmZWVfYXNzZXRfaXRlbWAgKGhlbmNlIHJlZmVycmVkIHRvIGFzIGBmZWVzYCksIHVwIHRvIGVub3VnaCB0byBwYXkgZm9yQQFgd2VpZ2h0X2xpbWl0YCBvZiB3ZWlnaHQuIElmIG1vcmUgd2VpZ2h0IGlzIG5lZWRlZCB0aGFuIGB3ZWlnaHRfbGltaXRgLCB0aGVuIHRoZdxvcGVyYXRpb24gd2lsbCBmYWlsIGFuZCB0aGUgc2VudCBhc3NldHMgbWF5IGJlIGF0IHJpc2suAGEBYGFzc2V0c2AgKGV4Y2x1ZGluZyBgZmVlc2ApIG11c3QgaGF2ZSBzYW1lIHJlc2VydmUgbG9jYXRpb24gb3Igb3RoZXJ3aXNlIGJlIHRlbGVwb3J0YWJsZbB0byBgZGVzdGAsIG5vIGxpbWl0YXRpb25zIGltcG9zZWQgb24gYGZlZXNgLk0BIC0gZm9yIGxvY2FsIHJlc2VydmU6IHRyYW5zZmVyIGFzc2V0cyB0byBzb3ZlcmVpZ24gYWNjb3VudCBvZiBkZXN0aW5hdGlvbiBjaGFpbiBhbmRNASAgIGZvcndhcmQgYSBub3RpZmljYXRpb24gWENNIHRvIGBkZXN0YCB0byBtaW50IGFuZCBkZXBvc2l0IHJlc2VydmUtYmFzZWQgYXNzZXRzIHRvRCAgIGBiZW5lZmljaWFyeWAuYQEgLSBmb3IgZGVzdGluYXRpb24gcmVzZXJ2ZTogYnVybiBsb2NhbCBhc3NldHMgYW5kIGZvcndhcmQgYSBub3RpZmljYXRpb24gdG8gYGRlc3RgIGNoYWluWQEgICB0byB3aXRoZHJhdyB0aGUgcmVzZXJ2ZSBhc3NldHMgZnJvbSB0aGlzIGNoYWluJ3Mgc292ZXJlaWduIGFjY291bnQgYW5kIGRlcG9zaXQgdGhlbVAgICB0byBgYmVuZWZpY2lhcnlgLl0BIC0gZm9yIHJlbW90ZSByZXNlcnZlOiBidXJuIGxvY2FsIGFzc2V0cywgZm9yd2FyZCBYQ00gdG8gcmVzZXJ2ZSBjaGFpbiB0byBtb3ZlIHJlc2VydmVzXQEgICBmcm9tIHRoaXMgY2hhaW4ncyBTQSB0byBgZGVzdGAgY2hhaW4ncyBTQSwgYW5kIGZvcndhcmQgYW5vdGhlciBYQ00gdG8gYGRlc3RgIHRvIG1pbnTUICAgYW5kIGRlcG9zaXQgcmVzZXJ2ZS1iYXNlZCBhc3NldHMgdG8gYGJlbmVmaWNpYXJ5YC5RASAtIGZvciB0ZWxlcG9ydHM6IGJ1cm4gbG9jYWwgYXNzZXRzIGFuZCBmb3J3YXJkIFhDTSB0byBgZGVzdGAgY2hhaW4gdG8gbWludC90ZWxlcG9ydLAgICBhc3NldHMgYW5kIGRlcG9zaXQgdGhlbSB0byBgYmVuZWZpY2lhcnlgLgApAS0gYG9yaWdpbmA6IE11c3QgYmUgY2FwYWJsZSBvZiB3aXRoZHJhd2luZyB0aGUgYGFzc2V0c2AgYW5kIGV4ZWN1dGluZyBYQ00uLQEtIGBkZXN0YDogRGVzdGluYXRpb24gY29udGV4dCBmb3IgdGhlIGFzc2V0cy4gV2lsbCB0eXBpY2FsbHkgYmUgYFgyKFBhcmVudCxVASAgUGFyYWNoYWluKC4uKSlgIHRvIHNlbmQgZnJvbSBwYXJhY2hhaW4gdG8gcGFyYWNoYWluLCBvciBgWDEoUGFyYWNoYWluKC4uKSlgIHRvIHNlbmRoICBmcm9tIHJlbGF5IHRvIHBhcmFjaGFpbi5VAS0gYGJlbmVmaWNpYXJ5YDogQSBiZW5lZmljaWFyeSBsb2NhdGlvbiBmb3IgdGhlIGFzc2V0cyBpbiB0aGUgY29udGV4dCBvZiBgZGVzdGAuIFdpbGyYICBnZW5lcmFsbHkgYmUgYW4gYEFjY291bnRJZDMyYCB2YWx1ZS5ZAS0gYGFzc2V0c2A6IFRoZSBhc3NldHMgdG8gYmUgd2l0aGRyYXduLiBUaGlzIHNob3VsZCBpbmNsdWRlIHRoZSBhc3NldHMgdXNlZCB0byBwYXkgdGhlyCAgZmVlIG9uIHRoZSBgZGVzdGAgKGFuZCBwb3NzaWJseSByZXNlcnZlKSBjaGFpbnMuTQEtIGBmZWVfYXNzZXRfaXRlbWA6IFRoZSBpbmRleCBpbnRvIGBhc3NldHNgIG9mIHRoZSBpdGVtIHdoaWNoIHNob3VsZCBiZSB1c2VkIHRvIHBheRwgIGZlZXMuRQEtIGB3ZWlnaHRfbGltaXRgOiBUaGUgcmVtb3RlLXNpZGUgd2VpZ2h0IGxpbWl0LCBpZiBhbnksIGZvciB0aGUgWENNIGZlZSBwdXJjaGFzZS4wY2xhaW1fYXNzZXRzCAEYYXNzZXRzMQYBUEJveDxWZXJzaW9uZWRBc3NldHM+AAEsYmVuZWZpY2lhcnnhAQFYQm94PFZlcnNpb25lZExvY2F0aW9uPgAMGFUBQ2xhaW1zIGFzc2V0cyB0cmFwcGVkIG9uIHRoaXMgcGFsbGV0IGJlY2F1c2Ugb2YgbGVmdG92ZXIgYXNzZXRzIGR1cmluZyBYQ00gZXhlY3V0aW9uLgCsLSBgb3JpZ2luYDogQW55b25lIGNhbiBjYWxsIHRoaXMgZXh0cmluc2ljLl0BLSBgYXNzZXRzYDogVGhlIGV4YWN0IGFzc2V0cyB0aGF0IHdlcmUgdHJhcHBlZC4gVXNlIHRoZSB2ZXJzaW9uIHRvIHNwZWNpZnkgd2hhdCB2ZXJzaW9umHdhcyB0aGUgbGF0ZXN0IHdoZW4gdGhleSB3ZXJlIHRyYXBwZWQuRQEtIGBiZW5lZmljaWFyeWA6IFRoZSBsb2NhdGlvbi9hY2NvdW50IHdoZXJlIHRoZSBjbGFpbWVkIGFzc2V0cyB3aWxsIGJlIGRlcG9zaXRlZC6MdHJhbnNmZXJfYXNzZXRzX3VzaW5nX3R5cGVfYW5kX3RoZW4cARBkZXN04QEBWEJveDxWZXJzaW9uZWRMb2NhdGlvbj4AARhhc3NldHMxBgFQQm94PFZlcnNpb25lZEFzc2V0cz4AAVBhc3NldHNfdHJhbnNmZXJfdHlwZWEGAURCb3g8VHJhbnNmZXJUeXBlPgABOHJlbW90ZV9mZWVzX2lkZQYBVEJveDxWZXJzaW9uZWRBc3NldElkPgABSGZlZXNfdHJhbnNmZXJfdHlwZWEGAURCb3g8VHJhbnNmZXJUeXBlPgABSGN1c3RvbV94Y21fb25fZGVzdP0EAVRCb3g8VmVyc2lvbmVkWGNtPCgpPj4AATB3ZWlnaHRfbGltaXRtBQEsV2VpZ2h0TGltaXQADcBVAVRyYW5zZmVyIGFzc2V0cyBmcm9tIHRoZSBsb2NhbCBjaGFpbiB0byB0aGUgZGVzdGluYXRpb24gY2hhaW4gdXNpbmcgZXhwbGljaXQgdHJhbnNmZXJodHlwZXMgZm9yIGFzc2V0cyBhbmQgZmVlcy4AWQFgYXNzZXRzYCBtdXN0IGhhdmUgc2FtZSByZXNlcnZlIGxvY2F0aW9uIG9yIG1heSBiZSB0ZWxlcG9ydGFibGUgdG8gYGRlc3RgLiBDYWxsZXIgbXVzdOxwcm92aWRlIHRoZSBgYXNzZXRzX3RyYW5zZmVyX3R5cGVgIHRvIGJlIHVzZWQgZm9yIGBhc3NldHNgOlEBIC0gYFRyYW5zZmVyVHlwZTo6TG9jYWxSZXNlcnZlYDogdHJhbnNmZXIgYXNzZXRzIHRvIHNvdmVyZWlnbiBhY2NvdW50IG9mIGRlc3RpbmF0aW9uTQEgICBjaGFpbiBhbmQgZm9yd2FyZCBhIG5vdGlmaWNhdGlvbiBYQ00gdG8gYGRlc3RgIHRvIG1pbnQgYW5kIGRlcG9zaXQgcmVzZXJ2ZS1iYXNlZGwgICBhc3NldHMgdG8gYGJlbmVmaWNpYXJ5YC5ZASAtIGBUcmFuc2ZlclR5cGU6OkRlc3RpbmF0aW9uUmVzZXJ2ZWA6IGJ1cm4gbG9jYWwgYXNzZXRzIGFuZCBmb3J3YXJkIGEgbm90aWZpY2F0aW9uIHRvWQEgICBgZGVzdGAgY2hhaW4gdG8gd2l0aGRyYXcgdGhlIHJlc2VydmUgYXNzZXRzIGZyb20gdGhpcyBjaGFpbidzIHNvdmVyZWlnbiBhY2NvdW50IGFuZIQgICBkZXBvc2l0IHRoZW0gdG8gYGJlbmVmaWNpYXJ5YC5ZASAtIGBUcmFuc2ZlclR5cGU6OlJlbW90ZVJlc2VydmUocmVzZXJ2ZSlgOiBidXJuIGxvY2FsIGFzc2V0cywgZm9yd2FyZCBYQ00gdG8gYHJlc2VydmVgYQEgICBjaGFpbiB0byBtb3ZlIHJlc2VydmVzIGZyb20gdGhpcyBjaGFpbidzIFNBIHRvIGBkZXN0YCBjaGFpbidzIFNBLCBhbmQgZm9yd2FyZCBhbm90aGVyVQEgICBYQ00gdG8gYGRlc3RgIHRvIG1pbnQgYW5kIGRlcG9zaXQgcmVzZXJ2ZS1iYXNlZCBhc3NldHMgdG8gYGJlbmVmaWNpYXJ5YC4gVHlwaWNhbGx5lCAgIHRoZSByZW1vdGUgYHJlc2VydmVgIGlzIEFzc2V0IEh1Yi5FASAtIGBUcmFuc2ZlclR5cGU6OlRlbGVwb3J0YDogYnVybiBsb2NhbCBhc3NldHMgYW5kIGZvcndhcmQgWENNIHRvIGBkZXN0YCBjaGFpbiB0b+ggICBtaW50L3RlbGVwb3J0IGFzc2V0cyBhbmQgZGVwb3NpdCB0aGVtIHRvIGBiZW5lZmljaWFyeWAuAFUBT24gdGhlIGRlc3RpbmF0aW9uIGNoYWluLCBhcyB3ZWxsIGFzIGFueSBpbnRlcm1lZGlhcnkgaG9wcywgYEJ1eUV4ZWN1dGlvbmAgaXMgdXNlZCB0byEBYnV5IGV4ZWN1dGlvbiB1c2luZyB0cmFuc2ZlcnJlZCBgYXNzZXRzYCBpZGVudGlmaWVkIGJ5IGByZW1vdGVfZmVlc19pZGAuWQFNYWtlIHN1cmUgZW5vdWdoIG9mIHRoZSBzcGVjaWZpZWQgYHJlbW90ZV9mZWVzX2lkYCBhc3NldCBpcyBpbmNsdWRlZCBpbiB0aGUgZ2l2ZW4gbGlzdGEBb2YgYGFzc2V0c2AuIGByZW1vdGVfZmVlc19pZGAgc2hvdWxkIGJlIGVub3VnaCB0byBwYXkgZm9yIGB3ZWlnaHRfbGltaXRgLiBJZiBtb3JlIHdlaWdodFkBaXMgbmVlZGVkIHRoYW4gYHdlaWdodF9saW1pdGAsIHRoZW4gdGhlIG9wZXJhdGlvbiB3aWxsIGZhaWwgYW5kIHRoZSBzZW50IGFzc2V0cyBtYXkgYmUgYXQgcmlzay4ARQFgcmVtb3RlX2ZlZXNfaWRgIG1heSB1c2UgZGlmZmVyZW50IHRyYW5zZmVyIHR5cGUgdGhhbiByZXN0IG9mIGBhc3NldHNgIGFuZCBjYW4gYmWcc3BlY2lmaWVkIHRocm91Z2ggYGZlZXNfdHJhbnNmZXJfdHlwZWAuAGEBVGhlIGNhbGxlciBuZWVkcyB0byBzcGVjaWZ5IHdoYXQgc2hvdWxkIGhhcHBlbiB0byB0aGUgdHJhbnNmZXJyZWQgYXNzZXRzIG9uY2UgdGhleSByZWFjaEEBdGhlIGBkZXN0YCBjaGFpbi4gVGhpcyBpcyBkb25lIHRocm91Z2ggdGhlIGBjdXN0b21feGNtX29uX2Rlc3RgIHBhcmFtZXRlciwgd2hpY2j8Y29udGFpbnMgdGhlIGluc3RydWN0aW9ucyB0byBleGVjdXRlIG9uIGBkZXN0YCBhcyBhIGZpbmFsIHN0ZXAufCAgVGhpcyBpcyB1c3VhbGx5IGFzIHNpbXBsZSBhczpRASAgYFhjbSh2ZWMhW0RlcG9zaXRBc3NldCB7IGFzc2V0czogV2lsZChBbGxDb3VudGVkKGFzc2V0cy5sZW4oKSkpLCBiZW5lZmljaWFyeSB9XSlgLDEBICBidXQgY291bGQgYmUgc29tZXRoaW5nIG1vcmUgZXhvdGljIGxpa2Ugc2VuZGluZyB0aGUgYGFzc2V0c2AgZXZlbiBmdXJ0aGVyLgApAS0gYG9yaWdpbmA6IE11c3QgYmUgY2FwYWJsZSBvZiB3aXRoZHJhd2luZyB0aGUgYGFzc2V0c2AgYW5kIGV4ZWN1dGluZyBYQ00uJQEtIGBkZXN0YDogRGVzdGluYXRpb24gY29udGV4dCBmb3IgdGhlIGFzc2V0cy4gV2lsbCB0eXBpY2FsbHkgYmUgYFtQYXJlbnQsYQEgIFBhcmFjaGFpbiguLildYCB0byBzZW5kIGZyb20gcGFyYWNoYWluIHRvIHBhcmFjaGFpbiwgb3IgYFtQYXJhY2hhaW4oLi4pXWAgdG8gc2VuZCBmcm9tPQEgIHJlbGF5IHRvIHBhcmFjaGFpbiwgb3IgYChwYXJlbnRzOiAyLCAoR2xvYmFsQ29uc2Vuc3VzKC4uKSwgLi4pKWAgdG8gc2VuZCBmcm9t9CAgcGFyYWNoYWluIGFjcm9zcyBhIGJyaWRnZSB0byBhbm90aGVyIGVjb3N5c3RlbSBkZXN0aW5hdGlvbi5ZAS0gYGFzc2V0c2A6IFRoZSBhc3NldHMgdG8gYmUgd2l0aGRyYXduLiBUaGlzIHNob3VsZCBpbmNsdWRlIHRoZSBhc3NldHMgdXNlZCB0byBwYXkgdGhlyCAgZmVlIG9uIHRoZSBgZGVzdGAgKGFuZCBwb3NzaWJseSByZXNlcnZlKSBjaGFpbnMuPQEtIGBhc3NldHNfdHJhbnNmZXJfdHlwZWA6IFRoZSBYQ00gYFRyYW5zZmVyVHlwZWAgdXNlZCB0byB0cmFuc2ZlciB0aGUgYGFzc2V0c2AuIQEtIGByZW1vdGVfZmVlc19pZGA6IE9uZSBvZiB0aGUgaW5jbHVkZWQgYGFzc2V0c2AgdG8gYmUgdXNlZCB0byBwYXkgZmVlcy5JAS0gYGZlZXNfdHJhbnNmZXJfdHlwZWA6IFRoZSBYQ00gYFRyYW5zZmVyVHlwZWAgdXNlZCB0byB0cmFuc2ZlciB0aGUgYGZlZXNgIGFzc2V0cy5ZAS0gYGN1c3RvbV94Y21fb25fZGVzdGA6IFRoZSBYQ00gdG8gYmUgZXhlY3V0ZWQgb24gYGRlc3RgIGNoYWluIGFzIHRoZSBsYXN0IHN0ZXAgb2YgdGhlWQEgIHRyYW5zZmVyLCB3aGljaCBhbHNvIGRldGVybWluZXMgd2hhdCBoYXBwZW5zIHRvIHRoZSBhc3NldHMgb24gdGhlIGRlc3RpbmF0aW9uIGNoYWluLkUBLSBgd2VpZ2h0X2xpbWl0YDogVGhlIHJlbW90ZS1zaWRlIHdlaWdodCBsaW1pdCwgaWYgYW55LCBmb3IgdGhlIFhDTSBmZWUgcHVyY2hhc2UuUGFkZF9hdXRob3JpemVkX2FsaWFzCAEcYWxpYXNlcuEBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAEcZXhwaXJlc2kGASxPcHRpb248dTY0PgAOLF0BQXV0aG9yaXplIGFub3RoZXIgYGFsaWFzZXJgIGxvY2F0aW9uIHRvIGFsaWFzIGludG8gdGhlIGxvY2FsIGBvcmlnaW5gIG1ha2luZyB0aGlzIGNhbGwuKQFUaGUgYGFsaWFzZXJgIGlzIG9ubHkgYXV0aG9yaXplZCB1bnRpbCB0aGUgcHJvdmlkZWQgYGV4cGlyeWAgYmxvY2sgbnVtYmVyLkkBVGhlIGNhbGwgY2FuIGFsc28gYmUgdXNlZCBmb3IgYSBwcmV2aW91c2x5IGF1dGhvcml6ZWQgYWxpYXMgaW4gb3JkZXIgdG8gdXBkYXRlIGl0c1hgZXhwaXJ5YCBibG9jayBudW1iZXIuAFEBVXN1YWxseSB1c2VmdWwgdG8gYWxsb3cgeW91ciBsb2NhbCBhY2NvdW50IHRvIGJlIGFsaWFzZWQgaW50byBmcm9tIGEgcmVtb3RlIGxvY2F0aW9u9GFsc28gdW5kZXIgeW91ciBjb250cm9sIChsaWtlIHlvdXIgYWNjb3VudCBvbiBhbm90aGVyIGNoYWluKS4AUQFXQVJOSU5HOiBtYWtlIHN1cmUgdGhlIGNhbGxlciBgb3JpZ2luYCAoeW91KSB0cnVzdHMgdGhlIGBhbGlhc2VyYCBsb2NhdGlvbiB0byBhY3QgaW5ZAXRoZWlyL3lvdXIgbmFtZS4gT25jZSBhdXRob3JpemVkIHVzaW5nIHRoaXMgY2FsbCwgdGhlIGBhbGlhc2VyYCBjYW4gZnJlZWx5IGltcGVyc29uYXRl1GBvcmlnaW5gIGluIFhDTSBwcm9ncmFtcyBleGVjdXRlZCBvbiB0aGUgbG9jYWwgY2hhaW4uXHJlbW92ZV9hdXRob3JpemVkX2FsaWFzBAEcYWxpYXNlcuEBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AA8IXQFSZW1vdmUgYSBwcmV2aW91c2x5IGF1dGhvcml6ZWQgYGFsaWFzZXJgIGZyb20gdGhlIGxpc3Qgb2YgbG9jYXRpb25zIHRoYXQgY2FuIGFsaWFzIGludG+QdGhlIGxvY2FsIGBvcmlnaW5gIG1ha2luZyB0aGlzIGNhbGwudHJlbW92ZV9hbGxfYXV0aG9yaXplZF9hbGlhc2VzABAISQFSZW1vdmUgYWxsIHByZXZpb3VzbHkgYXV0aG9yaXplZCBgYWxpYXNlcmBzIHRoYXQgY2FuIGFsaWFzIGludG8gdGhlIGxvY2FsIGBvcmlnaW5gRG1ha2luZyB0aGlzIGNhbGwuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLv0ECAx4Y20wVmVyc2lvbmVkWGNtBCxSdW50aW1lQ2FsbAABDAhWMwQAAQUBUHYzOjpYY208UnVudGltZUNhbGw+AAMACFY0BABxBQFQdjQ6OlhjbTxSdW50aW1lQ2FsbD4ABAAIVjUEALkFAVB2NTo6WGNtPFJ1bnRpbWVDYWxsPgAFAAABBQwMeGNtCHYzDFhjbQQQQ2FsbAAABAAFBQFYVmVjPEluc3RydWN0aW9uPENhbGw+PgAABQUAAAIJBQAJBQwMeGNtCHYzLEluc3RydWN0aW9uBBBDYWxsAAHANFdpdGhkcmF3QXNzZXQEAA0FASxNdWx0aUFzc2V0cwAAAFRSZXNlcnZlQXNzZXREZXBvc2l0ZWQEAA0FASxNdWx0aUFzc2V0cwABAFhSZWNlaXZlVGVsZXBvcnRlZEFzc2V0BAANBQEsTXVsdGlBc3NldHMAAgA0UXVlcnlSZXNwb25zZRABIHF1ZXJ5X2lkkAEcUXVlcnlJZAABIHJlc3BvbnNlKQUBIFJlc3BvbnNlAAEobWF4X3dlaWdodDUCARhXZWlnaHQAARxxdWVyaWVyUQUBVE9wdGlvbjxNdWx0aUxvY2F0aW9uPgADADRUcmFuc2ZlckFzc2V0CAEYYXNzZXRzDQUBLE11bHRpQXNzZXRzAAEsYmVuZWZpY2lhcnlRAQE0TXVsdGlMb2NhdGlvbgAEAFBUcmFuc2ZlclJlc2VydmVBc3NldAwBGGFzc2V0cw0FASxNdWx0aUFzc2V0cwABEGRlc3RRAQE0TXVsdGlMb2NhdGlvbgABDHhjbQEFARxYY208KCk+AAUAIFRyYW5zYWN0DAEsb3JpZ2luX2tpbmRVBQEoT3JpZ2luS2luZAABWHJlcXVpcmVfd2VpZ2h0X2F0X21vc3Q1AgEYV2VpZ2h0AAEQY2FsbFkFAUxEb3VibGVFbmNvZGVkPENhbGw+AAYAZEhybXBOZXdDaGFubmVsT3BlblJlcXVlc3QMARhzZW5kZXJgAQx1MzIAAUBtYXhfbWVzc2FnZV9zaXplYAEMdTMyAAEwbWF4X2NhcGFjaXR5YAEMdTMyAAcATEhybXBDaGFubmVsQWNjZXB0ZWQEASRyZWNpcGllbnRgAQx1MzIACABISHJtcENoYW5uZWxDbG9zaW5nDAEkaW5pdGlhdG9yYAEMdTMyAAEYc2VuZGVyYAEMdTMyAAEkcmVjaXBpZW50YAEMdTMyAAkALENsZWFyT3JpZ2luAAoANERlc2NlbmRPcmlnaW4EAFUBAVRJbnRlcmlvck11bHRpTG9jYXRpb24ACwAsUmVwb3J0RXJyb3IEAF0FAURRdWVyeVJlc3BvbnNlSW5mbwAMADBEZXBvc2l0QXNzZXQIARhhc3NldHNhBQFATXVsdGlBc3NldEZpbHRlcgABLGJlbmVmaWNpYXJ5UQEBNE11bHRpTG9jYXRpb24ADQBMRGVwb3NpdFJlc2VydmVBc3NldAwBGGFzc2V0c2EFAUBNdWx0aUFzc2V0RmlsdGVyAAEQZGVzdFEBATRNdWx0aUxvY2F0aW9uAAEMeGNtAQUBHFhjbTwoKT4ADgA0RXhjaGFuZ2VBc3NldAwBEGdpdmVhBQFATXVsdGlBc3NldEZpbHRlcgABEHdhbnQNBQEsTXVsdGlBc3NldHMAARxtYXhpbWFsmAEQYm9vbAAPAFxJbml0aWF0ZVJlc2VydmVXaXRoZHJhdwwBGGFzc2V0c2EFAUBNdWx0aUFzc2V0RmlsdGVyAAEccmVzZXJ2ZVEBATRNdWx0aUxvY2F0aW9uAAEMeGNtAQUBHFhjbTwoKT4AEABASW5pdGlhdGVUZWxlcG9ydAwBGGFzc2V0c2EFAUBNdWx0aUFzc2V0RmlsdGVyAAEQZGVzdFEBATRNdWx0aUxvY2F0aW9uAAEMeGNtAQUBHFhjbTwoKT4AEQA0UmVwb3J0SG9sZGluZwgBNHJlc3BvbnNlX2luZm9dBQFEUXVlcnlSZXNwb25zZUluZm8AARhhc3NldHNhBQFATXVsdGlBc3NldEZpbHRlcgASADBCdXlFeGVjdXRpb24IARBmZWVzFQUBKE11bHRpQXNzZXQAATB3ZWlnaHRfbGltaXRtBQEsV2VpZ2h0TGltaXQAEwA0UmVmdW5kU3VycGx1cwAUADxTZXRFcnJvckhhbmRsZXIEAAEFASRYY208Q2FsbD4AFQAsU2V0QXBwZW5kaXgEAAEFASRYY208Q2FsbD4AFgAoQ2xlYXJFcnJvcgAXAChDbGFpbUFzc2V0CAEYYXNzZXRzDQUBLE11bHRpQXNzZXRzAAEYdGlja2V0UQEBNE11bHRpTG9jYXRpb24AGAAQVHJhcAQAkAEMdTY0ABkAQFN1YnNjcmliZVZlcnNpb24IASBxdWVyeV9pZJABHFF1ZXJ5SWQAAUxtYXhfcmVzcG9uc2Vfd2VpZ2h0NQIBGFdlaWdodAAaAEhVbnN1YnNjcmliZVZlcnNpb24AGwAkQnVybkFzc2V0BAANBQEsTXVsdGlBc3NldHMAHAAsRXhwZWN0QXNzZXQEAA0FASxNdWx0aUFzc2V0cwAdADBFeHBlY3RPcmlnaW4EAFEFAVRPcHRpb248TXVsdGlMb2NhdGlvbj4AHgAsRXhwZWN0RXJyb3IEAC0FAVBPcHRpb248KHUzMiwgRXJyb3IpPgAfAFBFeHBlY3RUcmFuc2FjdFN0YXR1cwQASQUBOE1heWJlRXJyb3JDb2RlACAALFF1ZXJ5UGFsbGV0CAEsbW9kdWxlX25hbWUYARxWZWM8dTg+AAE0cmVzcG9uc2VfaW5mb10FAURRdWVyeVJlc3BvbnNlSW5mbwAhADBFeHBlY3RQYWxsZXQUARRpbmRleGABDHUzMgABEG5hbWUYARxWZWM8dTg+AAEsbW9kdWxlX25hbWUYARxWZWM8dTg+AAEsY3JhdGVfbWFqb3JgAQx1MzIAATxtaW5fY3JhdGVfbWlub3JgAQx1MzIAIgBQUmVwb3J0VHJhbnNhY3RTdGF0dXMEAF0FAURRdWVyeVJlc3BvbnNlSW5mbwAjAExDbGVhclRyYW5zYWN0U3RhdHVzACQAPFVuaXZlcnNhbE9yaWdpbgQAWQEBIEp1bmN0aW9uACUANEV4cG9ydE1lc3NhZ2UMARxuZXR3b3JrYQEBJE5ldHdvcmtJZAABLGRlc3RpbmF0aW9uVQEBVEludGVyaW9yTXVsdGlMb2NhdGlvbgABDHhjbQEFARxYY208KCk+ACYAJExvY2tBc3NldAgBFGFzc2V0FQUBKE11bHRpQXNzZXQAASB1bmxvY2tlclEBATRNdWx0aUxvY2F0aW9uACcALFVubG9ja0Fzc2V0CAEUYXNzZXQVBQEoTXVsdGlBc3NldAABGHRhcmdldFEBATRNdWx0aUxvY2F0aW9uACgAOE5vdGVVbmxvY2thYmxlCAEUYXNzZXQVBQEoTXVsdGlBc3NldAABFG93bmVyUQEBNE11bHRpTG9jYXRpb24AKQA0UmVxdWVzdFVubG9jawgBFGFzc2V0FQUBKE11bHRpQXNzZXQAARhsb2NrZXJRAQE0TXVsdGlMb2NhdGlvbgAqACxTZXRGZWVzTW9kZQQBMGppdF93aXRoZHJhd5gBEGJvb2wAKwAgU2V0VG9waWMEAAgBIFt1ODsgMzJdACwAKENsZWFyVG9waWMALQAsQWxpYXNPcmlnaW4EAFEBATRNdWx0aUxvY2F0aW9uAC4APFVucGFpZEV4ZWN1dGlvbggBMHdlaWdodF9saW1pdG0FASxXZWlnaHRMaW1pdAABMGNoZWNrX29yaWdpblEFAVRPcHRpb248TXVsdGlMb2NhdGlvbj4ALwAADQUQDHhjbQh2MyhtdWx0aWFzc2V0LE11bHRpQXNzZXRzAAAEABEFATxWZWM8TXVsdGlBc3NldD4AABEFAAACFQUAFQUQDHhjbQh2MyhtdWx0aWFzc2V0KE11bHRpQXNzZXQAAAgBCGlkbQEBHEFzc2V0SWQAAQxmdW4ZBQEsRnVuZ2liaWxpdHkAABkFEAx4Y20IdjMobXVsdGlhc3NldCxGdW5naWJpbGl0eQABCCBGdW5naWJsZQQAoAEQdTEyOAAAACxOb25GdW5naWJsZQQAHQUBNEFzc2V0SW5zdGFuY2UAAQAAHQUQDHhjbQh2MyhtdWx0aWFzc2V0NEFzc2V0SW5zdGFuY2UAARgkVW5kZWZpbmVkAAAAFEluZGV4BACgARB1MTI4AAEAGEFycmF5NAQAcAEcW3U4OyA0XQACABhBcnJheTgEACEFARxbdTg7IDhdAAMAHEFycmF5MTYEACUFASBbdTg7IDE2XQAEABxBcnJheTMyBAAIASBbdTg7IDMyXQAFAAAhBQAAAwgAAAAMACUFAAADEAAAAAwAKQUMDHhjbQh2MyBSZXNwb25zZQABGBBOdWxsAAAAGEFzc2V0cwQADQUBLE11bHRpQXNzZXRzAAEAPEV4ZWN1dGlvblJlc3VsdAQALQUBUE9wdGlvbjwodTMyLCBFcnJvcik+AAIAHFZlcnNpb24EADgBOHN1cGVyOjpWZXJzaW9uAAMALFBhbGxldHNJbmZvBAA5BQGYQm91bmRlZFZlYzxQYWxsZXRJbmZvLCBNYXhQYWxsZXRzSW5mbz4ABAA4RGlzcGF0Y2hSZXN1bHQEAEkFAThNYXliZUVycm9yQ29kZQAFAAAtBQQYT3B0aW9uBARUATEFAQgQTm9uZQAAABBTb21lBAAxBQAAAQAAMQUAAAQIODUFADUFEAx4Y20IdjMYdHJhaXRzFEVycm9yAAGgIE92ZXJmbG93AAAANFVuaW1wbGVtZW50ZWQAAQBgVW50cnVzdGVkUmVzZXJ2ZUxvY2F0aW9uAAIAZFVudHJ1c3RlZFRlbGVwb3J0TG9jYXRpb24AAwAwTG9jYXRpb25GdWxsAAQAVExvY2F0aW9uTm90SW52ZXJ0aWJsZQAFACRCYWRPcmlnaW4ABgA8SW52YWxpZExvY2F0aW9uAAcANEFzc2V0Tm90Rm91bmQACABURmFpbGVkVG9UcmFuc2FjdEFzc2V0AAkAPE5vdFdpdGhkcmF3YWJsZQAKAEhMb2NhdGlvbkNhbm5vdEhvbGQACwBURXhjZWVkc01heE1lc3NhZ2VTaXplAAwAWERlc3RpbmF0aW9uVW5zdXBwb3J0ZWQADQAkVHJhbnNwb3J0AA4AKFVucm91dGFibGUADwAwVW5rbm93bkNsYWltABAAOEZhaWxlZFRvRGVjb2RlABEAQE1heFdlaWdodEludmFsaWQAEgA4Tm90SG9sZGluZ0ZlZXMAEwAwVG9vRXhwZW5zaXZlABQAEFRyYXAEACgBDHU2NAAVAEBFeHBlY3RhdGlvbkZhbHNlABYAOFBhbGxldE5vdEZvdW5kABcAME5hbWVNaXNtYXRjaAAYAExWZXJzaW9uSW5jb21wYXRpYmxlABkAUEhvbGRpbmdXb3VsZE92ZXJmbG93ABoALEV4cG9ydEVycm9yABsAOFJlYW5jaG9yRmFpbGVkABwAGE5vRGVhbAAdAChGZWVzTm90TWV0AB4AJExvY2tFcnJvcgAfADBOb1Blcm1pc3Npb24AIAAoVW5hbmNob3JlZAAhADhOb3REZXBvc2l0YWJsZQAiAExVbmhhbmRsZWRYY21WZXJzaW9uACMASFdlaWdodExpbWl0UmVhY2hlZAQANQIBGFdlaWdodAAkABxCYXJyaWVyACUATFdlaWdodE5vdENvbXB1dGFibGUAJgBERXhjZWVkc1N0YWNrTGltaXQAJwAAOQUMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAE9BQRTAAAEAEUFARhWZWM8VD4AAD0FDAx4Y20IdjMoUGFsbGV0SW5mbwAAGAEUaW5kZXhgAQx1MzIAARBuYW1lQQUBgEJvdW5kZWRWZWM8dTgsIE1heFBhbGxldE5hbWVMZW4+AAEsbW9kdWxlX25hbWVBBQGAQm91bmRlZFZlYzx1OCwgTWF4UGFsbGV0TmFtZUxlbj4AARRtYWpvcmABDHUzMgABFG1pbm9yYAEMdTMyAAEUcGF0Y2hgAQx1MzIAAEEFDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBDARTAAAEABgBGFZlYzxUPgAARQUAAAI9BQBJBQwMeGNtCHYzOE1heWJlRXJyb3JDb2RlAAEMHFN1Y2Nlc3MAAAAURXJyb3IEAE0FAYxCb3VuZGVkVmVjPHU4LCBNYXhEaXNwYXRjaEVycm9yTGVuPgABADhUcnVuY2F0ZWRFcnJvcgQATQUBjEJvdW5kZWRWZWM8dTgsIE1heERpc3BhdGNoRXJyb3JMZW4+AAIAAE0FDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBDARTAAAEABgBGFZlYzxUPgAAUQUEGE9wdGlvbgQEVAFRAQEIEE5vbmUAAAAQU29tZQQAUQEAAAEAAFUFDAx4Y20IdjMoT3JpZ2luS2luZAABEBhOYXRpdmUAAABAU292ZXJlaWduQWNjb3VudAABACRTdXBlcnVzZXIAAgAMWGNtAAMAAFkFDAx4Y204ZG91YmxlX2VuY29kZWQ0RG91YmxlRW5jb2RlZAQEVAAABAEcZW5jb2RlZBgBHFZlYzx1OD4AAF0FDAx4Y20IdjNEUXVlcnlSZXNwb25zZUluZm8AAAwBLGRlc3RpbmF0aW9uUQEBNE11bHRpTG9jYXRpb24AASBxdWVyeV9pZJABHFF1ZXJ5SWQAAShtYXhfd2VpZ2h0NQIBGFdlaWdodAAAYQUQDHhjbQh2MyhtdWx0aWFzc2V0QE11bHRpQXNzZXRGaWx0ZXIAAQggRGVmaW5pdGUEAA0FASxNdWx0aUFzc2V0cwAAABBXaWxkBABlBQE4V2lsZE11bHRpQXNzZXQAAQAAZQUQDHhjbQh2MyhtdWx0aWFzc2V0OFdpbGRNdWx0aUFzc2V0AAEQDEFsbAAAABRBbGxPZggBCGlkbQEBHEFzc2V0SWQAAQxmdW5pBQE8V2lsZEZ1bmdpYmlsaXR5AAEAKEFsbENvdW50ZWQEAGABDHUzMgACADBBbGxPZkNvdW50ZWQMAQhpZG0BARxBc3NldElkAAEMZnVuaQUBPFdpbGRGdW5naWJpbGl0eQABFGNvdW50YAEMdTMyAAMAAGkFEAx4Y20IdjMobXVsdGlhc3NldDxXaWxkRnVuZ2liaWxpdHkAAQggRnVuZ2libGUAAAAsTm9uRnVuZ2libGUAAQAAbQUMDHhjbQh2MyxXZWlnaHRMaW1pdAABCCRVbmxpbWl0ZWQAAAAcTGltaXRlZAQANQIBGFdlaWdodAABAABxBQwsc3RhZ2luZ194Y20IdjQMWGNtBBBDYWxsAAAEAHUFAVhWZWM8SW5zdHJ1Y3Rpb248Q2FsbD4+AAB1BQAAAnkFAHkFDCxzdGFnaW5nX3hjbQh2NCxJbnN0cnVjdGlvbgQQQ2FsbAABwDRXaXRoZHJhd0Fzc2V0BAB9BQEYQXNzZXRzAAAAVFJlc2VydmVBc3NldERlcG9zaXRlZAQAfQUBGEFzc2V0cwABAFhSZWNlaXZlVGVsZXBvcnRlZEFzc2V0BAB9BQEYQXNzZXRzAAIANFF1ZXJ5UmVzcG9uc2UQASBxdWVyeV9pZJABHFF1ZXJ5SWQAASByZXNwb25zZZEFASBSZXNwb25zZQABKG1heF93ZWlnaHQ1AgEYV2VpZ2h0AAEccXVlcmllcqUFAUBPcHRpb248TG9jYXRpb24+AAMANFRyYW5zZmVyQXNzZXQIARhhc3NldHN9BQEYQXNzZXRzAAEsYmVuZWZpY2lhcnlxAQEgTG9jYXRpb24ABABQVHJhbnNmZXJSZXNlcnZlQXNzZXQMARhhc3NldHN9BQEYQXNzZXRzAAEQZGVzdHEBASBMb2NhdGlvbgABDHhjbXEFARxYY208KCk+AAUAIFRyYW5zYWN0DAEsb3JpZ2luX2tpbmRVBQEoT3JpZ2luS2luZAABWHJlcXVpcmVfd2VpZ2h0X2F0X21vc3Q1AgEYV2VpZ2h0AAEQY2FsbFkFAUxEb3VibGVFbmNvZGVkPENhbGw+AAYAZEhybXBOZXdDaGFubmVsT3BlblJlcXVlc3QMARhzZW5kZXJgAQx1MzIAAUBtYXhfbWVzc2FnZV9zaXplYAEMdTMyAAEwbWF4X2NhcGFjaXR5YAEMdTMyAAcATEhybXBDaGFubmVsQWNjZXB0ZWQEASRyZWNpcGllbnRgAQx1MzIACABISHJtcENoYW5uZWxDbG9zaW5nDAEkaW5pdGlhdG9yYAEMdTMyAAEYc2VuZGVyYAEMdTMyAAEkcmVjaXBpZW50YAEMdTMyAAkALENsZWFyT3JpZ2luAAoANERlc2NlbmRPcmlnaW4EAHUBAUBJbnRlcmlvckxvY2F0aW9uAAsALFJlcG9ydEVycm9yBACpBQFEUXVlcnlSZXNwb25zZUluZm8ADAAwRGVwb3NpdEFzc2V0CAEYYXNzZXRzrQUBLEFzc2V0RmlsdGVyAAEsYmVuZWZpY2lhcnlxAQEgTG9jYXRpb24ADQBMRGVwb3NpdFJlc2VydmVBc3NldAwBGGFzc2V0c60FASxBc3NldEZpbHRlcgABEGRlc3RxAQEgTG9jYXRpb24AAQx4Y21xBQEcWGNtPCgpPgAOADRFeGNoYW5nZUFzc2V0DAEQZ2l2Za0FASxBc3NldEZpbHRlcgABEHdhbnR9BQEYQXNzZXRzAAEcbWF4aW1hbJgBEGJvb2wADwBcSW5pdGlhdGVSZXNlcnZlV2l0aGRyYXcMARhhc3NldHOtBQEsQXNzZXRGaWx0ZXIAARxyZXNlcnZlcQEBIExvY2F0aW9uAAEMeGNtcQUBHFhjbTwoKT4AEABASW5pdGlhdGVUZWxlcG9ydAwBGGFzc2V0c60FASxBc3NldEZpbHRlcgABEGRlc3RxAQEgTG9jYXRpb24AAQx4Y21xBQEcWGNtPCgpPgARADRSZXBvcnRIb2xkaW5nCAE0cmVzcG9uc2VfaW5mb6kFAURRdWVyeVJlc3BvbnNlSW5mbwABGGFzc2V0c60FASxBc3NldEZpbHRlcgASADBCdXlFeGVjdXRpb24IARBmZWVzhQUBFEFzc2V0AAEwd2VpZ2h0X2xpbWl0bQUBLFdlaWdodExpbWl0ABMANFJlZnVuZFN1cnBsdXMAFAA8U2V0RXJyb3JIYW5kbGVyBABxBQEkWGNtPENhbGw+ABUALFNldEFwcGVuZGl4BABxBQEkWGNtPENhbGw+ABYAKENsZWFyRXJyb3IAFwAoQ2xhaW1Bc3NldAgBGGFzc2V0c30FARhBc3NldHMAARh0aWNrZXRxAQEgTG9jYXRpb24AGAAQVHJhcAQAkAEMdTY0ABkAQFN1YnNjcmliZVZlcnNpb24IASBxdWVyeV9pZJABHFF1ZXJ5SWQAAUxtYXhfcmVzcG9uc2Vfd2VpZ2h0NQIBGFdlaWdodAAaAEhVbnN1YnNjcmliZVZlcnNpb24AGwAkQnVybkFzc2V0BAB9BQEYQXNzZXRzABwALEV4cGVjdEFzc2V0BAB9BQEYQXNzZXRzAB0AMEV4cGVjdE9yaWdpbgQApQUBQE9wdGlvbjxMb2NhdGlvbj4AHgAsRXhwZWN0RXJyb3IEAC0FAVBPcHRpb248KHUzMiwgRXJyb3IpPgAfAFBFeHBlY3RUcmFuc2FjdFN0YXR1cwQASQUBOE1heWJlRXJyb3JDb2RlACAALFF1ZXJ5UGFsbGV0CAEsbW9kdWxlX25hbWUYARxWZWM8dTg+AAE0cmVzcG9uc2VfaW5mb6kFAURRdWVyeVJlc3BvbnNlSW5mbwAhADBFeHBlY3RQYWxsZXQUARRpbmRleGABDHUzMgABEG5hbWUYARxWZWM8dTg+AAEsbW9kdWxlX25hbWUYARxWZWM8dTg+AAEsY3JhdGVfbWFqb3JgAQx1MzIAATxtaW5fY3JhdGVfbWlub3JgAQx1MzIAIgBQUmVwb3J0VHJhbnNhY3RTdGF0dXMEAKkFAURRdWVyeVJlc3BvbnNlSW5mbwAjAExDbGVhclRyYW5zYWN0U3RhdHVzACQAPFVuaXZlcnNhbE9yaWdpbgQAfQEBIEp1bmN0aW9uACUANEV4cG9ydE1lc3NhZ2UMARxuZXR3b3JrhQEBJE5ldHdvcmtJZAABLGRlc3RpbmF0aW9udQEBQEludGVyaW9yTG9jYXRpb24AAQx4Y21xBQEcWGNtPCgpPgAmACRMb2NrQXNzZXQIARRhc3NldIUFARRBc3NldAABIHVubG9ja2VycQEBIExvY2F0aW9uACcALFVubG9ja0Fzc2V0CAEUYXNzZXSFBQEUQXNzZXQAARh0YXJnZXRxAQEgTG9jYXRpb24AKAA4Tm90ZVVubG9ja2FibGUIARRhc3NldIUFARRBc3NldAABFG93bmVycQEBIExvY2F0aW9uACkANFJlcXVlc3RVbmxvY2sIARRhc3NldIUFARRBc3NldAABGGxvY2tlcnEBASBMb2NhdGlvbgAqACxTZXRGZWVzTW9kZQQBMGppdF93aXRoZHJhd5gBEGJvb2wAKwAgU2V0VG9waWMEAAgBIFt1ODsgMzJdACwAKENsZWFyVG9waWMALQAsQWxpYXNPcmlnaW4EAHEBASBMb2NhdGlvbgAuADxVbnBhaWRFeGVjdXRpb24IATB3ZWlnaHRfbGltaXRtBQEsV2VpZ2h0TGltaXQAATBjaGVja19vcmlnaW6lBQFAT3B0aW9uPExvY2F0aW9uPgAvAAB9BRAsc3RhZ2luZ194Y20IdjQUYXNzZXQYQXNzZXRzAAAEAIEFAShWZWM8QXNzZXQ+AACBBQAAAoUFAIUFECxzdGFnaW5nX3hjbQh2NBRhc3NldBRBc3NldAAACAEIaWSlAQEcQXNzZXRJZAABDGZ1bokFASxGdW5naWJpbGl0eQAAiQUQLHN0YWdpbmdfeGNtCHY0FGFzc2V0LEZ1bmdpYmlsaXR5AAEIIEZ1bmdpYmxlBACgARB1MTI4AAAALE5vbkZ1bmdpYmxlBACNBQE0QXNzZXRJbnN0YW5jZQABAACNBRAsc3RhZ2luZ194Y20IdjQUYXNzZXQ0QXNzZXRJbnN0YW5jZQABGCRVbmRlZmluZWQAAAAUSW5kZXgEAKABEHUxMjgAAQAYQXJyYXk0BABwARxbdTg7IDRdAAIAGEFycmF5OAQAIQUBHFt1ODsgOF0AAwAcQXJyYXkxNgQAJQUBIFt1ODsgMTZdAAQAHEFycmF5MzIEAAgBIFt1ODsgMzJdAAUAAJEFDCxzdGFnaW5nX3hjbQh2NCBSZXNwb25zZQABGBBOdWxsAAAAGEFzc2V0cwQAfQUBGEFzc2V0cwABADxFeGVjdXRpb25SZXN1bHQEAC0FAVBPcHRpb248KHUzMiwgRXJyb3IpPgACABxWZXJzaW9uBAA4AThzdXBlcjo6VmVyc2lvbgADACxQYWxsZXRzSW5mbwQAlQUBmEJvdW5kZWRWZWM8UGFsbGV0SW5mbywgTWF4UGFsbGV0c0luZm8+AAQAOERpc3BhdGNoUmVzdWx0BABJBQE4TWF5YmVFcnJvckNvZGUABQAAlQUMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAGZBQRTAAAEAKEFARhWZWM8VD4AAJkFDCxzdGFnaW5nX3hjbQh2NChQYWxsZXRJbmZvAAAYARRpbmRleGABDHUzMgABEG5hbWWdBQGAQm91bmRlZFZlYzx1OCwgTWF4UGFsbGV0TmFtZUxlbj4AASxtb2R1bGVfbmFtZZ0FAYBCb3VuZGVkVmVjPHU4LCBNYXhQYWxsZXROYW1lTGVuPgABFG1ham9yYAEMdTMyAAEUbWlub3JgAQx1MzIAARRwYXRjaGABDHUzMgAAnQUMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AAChBQAAApkFAKUFBBhPcHRpb24EBFQBcQEBCBBOb25lAAAAEFNvbWUEAHEBAAABAACpBQwsc3RhZ2luZ194Y20IdjREUXVlcnlSZXNwb25zZUluZm8AAAwBLGRlc3RpbmF0aW9ucQEBIExvY2F0aW9uAAEgcXVlcnlfaWSQARxRdWVyeUlkAAEobWF4X3dlaWdodDUCARhXZWlnaHQAAK0FECxzdGFnaW5nX3hjbQh2NBRhc3NldCxBc3NldEZpbHRlcgABCCBEZWZpbml0ZQQAfQUBGEFzc2V0cwAAABBXaWxkBACxBQEkV2lsZEFzc2V0AAEAALEFECxzdGFnaW5nX3hjbQh2NBRhc3NldCRXaWxkQXNzZXQAARAMQWxsAAAAFEFsbE9mCAEIaWSlAQEcQXNzZXRJZAABDGZ1brUFATxXaWxkRnVuZ2liaWxpdHkAAQAoQWxsQ291bnRlZAQAYAEMdTMyAAIAMEFsbE9mQ291bnRlZAwBCGlkpQEBHEFzc2V0SWQAAQxmdW61BQE8V2lsZEZ1bmdpYmlsaXR5AAEUY291bnRgAQx1MzIAAwAAtQUQLHN0YWdpbmdfeGNtCHY0FGFzc2V0PFdpbGRGdW5naWJpbGl0eQABCCBGdW5naWJsZQAAACxOb25GdW5naWJsZQABAAC5BQwsc3RhZ2luZ194Y20IdjUMWGNtBBBDYWxsAAAEAL0FAVhWZWM8SW5zdHJ1Y3Rpb248Q2FsbD4+AAC9BQAAAsEFAMEFDCxzdGFnaW5nX3hjbQh2NSxJbnN0cnVjdGlvbgQQQ2FsbAAB0DRXaXRoZHJhd0Fzc2V0BADFBQEYQXNzZXRzAAAAVFJlc2VydmVBc3NldERlcG9zaXRlZAQAxQUBGEFzc2V0cwABAFhSZWNlaXZlVGVsZXBvcnRlZEFzc2V0BADFBQEYQXNzZXRzAAIANFF1ZXJ5UmVzcG9uc2UQASBxdWVyeV9pZJABHFF1ZXJ5SWQAASByZXNwb25zZdkFASBSZXNwb25zZQABKG1heF93ZWlnaHQ1AgEYV2VpZ2h0AAEccXVlcmllcvkFAUBPcHRpb248TG9jYXRpb24+AAMANFRyYW5zZmVyQXNzZXQIARhhc3NldHPFBQEYQXNzZXRzAAEsYmVuZWZpY2lhcnmpAQEgTG9jYXRpb24ABABQVHJhbnNmZXJSZXNlcnZlQXNzZXQMARhhc3NldHPFBQEYQXNzZXRzAAEQZGVzdKkBASBMb2NhdGlvbgABDHhjbbkFARxYY208KCk+AAUAIFRyYW5zYWN0DAEsb3JpZ2luX2tpbmRVBQEoT3JpZ2luS2luZAABTGZhbGxiYWNrX21heF93ZWlnaHT9BQE4T3B0aW9uPFdlaWdodD4AARBjYWxsWQUBTERvdWJsZUVuY29kZWQ8Q2FsbD4ABgBkSHJtcE5ld0NoYW5uZWxPcGVuUmVxdWVzdAwBGHNlbmRlcmABDHUzMgABQG1heF9tZXNzYWdlX3NpemVgAQx1MzIAATBtYXhfY2FwYWNpdHlgAQx1MzIABwBMSHJtcENoYW5uZWxBY2NlcHRlZAQBJHJlY2lwaWVudGABDHUzMgAIAEhIcm1wQ2hhbm5lbENsb3NpbmcMASRpbml0aWF0b3JgAQx1MzIAARhzZW5kZXJgAQx1MzIAASRyZWNpcGllbnRgAQx1MzIACQAsQ2xlYXJPcmlnaW4ACgA0RGVzY2VuZE9yaWdpbgQArQEBQEludGVyaW9yTG9jYXRpb24ACwAsUmVwb3J0RXJyb3IEAAEGAURRdWVyeVJlc3BvbnNlSW5mbwAMADBEZXBvc2l0QXNzZXQIARhhc3NldHMFBgEsQXNzZXRGaWx0ZXIAASxiZW5lZmljaWFyeakBASBMb2NhdGlvbgANAExEZXBvc2l0UmVzZXJ2ZUFzc2V0DAEYYXNzZXRzBQYBLEFzc2V0RmlsdGVyAAEQZGVzdKkBASBMb2NhdGlvbgABDHhjbbkFARxYY208KCk+AA4ANEV4Y2hhbmdlQXNzZXQMARBnaXZlBQYBLEFzc2V0RmlsdGVyAAEQd2FudMUFARhBc3NldHMAARxtYXhpbWFsmAEQYm9vbAAPAFxJbml0aWF0ZVJlc2VydmVXaXRoZHJhdwwBGGFzc2V0cwUGASxBc3NldEZpbHRlcgABHHJlc2VydmWpAQEgTG9jYXRpb24AAQx4Y225BQEcWGNtPCgpPgAQAEBJbml0aWF0ZVRlbGVwb3J0DAEYYXNzZXRzBQYBLEFzc2V0RmlsdGVyAAEQZGVzdKkBASBMb2NhdGlvbgABDHhjbbkFARxYY208KCk+ABEANFJlcG9ydEhvbGRpbmcIATRyZXNwb25zZV9pbmZvAQYBRFF1ZXJ5UmVzcG9uc2VJbmZvAAEYYXNzZXRzBQYBLEFzc2V0RmlsdGVyABIAMEJ1eUV4ZWN1dGlvbggBEGZlZXPNBQEUQXNzZXQAATB3ZWlnaHRfbGltaXRtBQEsV2VpZ2h0TGltaXQAEwA0UmVmdW5kU3VycGx1cwAUADxTZXRFcnJvckhhbmRsZXIEALkFASRYY208Q2FsbD4AFQAsU2V0QXBwZW5kaXgEALkFASRYY208Q2FsbD4AFgAoQ2xlYXJFcnJvcgAXAChDbGFpbUFzc2V0CAEYYXNzZXRzxQUBGEFzc2V0cwABGHRpY2tldKkBASBMb2NhdGlvbgAYABBUcmFwBACQAQx1NjQAGQBAU3Vic2NyaWJlVmVyc2lvbggBIHF1ZXJ5X2lkkAEcUXVlcnlJZAABTG1heF9yZXNwb25zZV93ZWlnaHQ1AgEYV2VpZ2h0ABoASFVuc3Vic2NyaWJlVmVyc2lvbgAbACRCdXJuQXNzZXQEAMUFARhBc3NldHMAHAAsRXhwZWN0QXNzZXQEAMUFARhBc3NldHMAHQAwRXhwZWN0T3JpZ2luBAD5BQFAT3B0aW9uPExvY2F0aW9uPgAeACxFeHBlY3RFcnJvcgQA3QUBUE9wdGlvbjwodTMyLCBFcnJvcik+AB8AUEV4cGVjdFRyYW5zYWN0U3RhdHVzBABJBQE4TWF5YmVFcnJvckNvZGUAIAAsUXVlcnlQYWxsZXQIASxtb2R1bGVfbmFtZRgBHFZlYzx1OD4AATRyZXNwb25zZV9pbmZvAQYBRFF1ZXJ5UmVzcG9uc2VJbmZvACEAMEV4cGVjdFBhbGxldBQBFGluZGV4YAEMdTMyAAEQbmFtZRgBHFZlYzx1OD4AASxtb2R1bGVfbmFtZRgBHFZlYzx1OD4AASxjcmF0ZV9tYWpvcmABDHUzMgABPG1pbl9jcmF0ZV9taW5vcmABDHUzMgAiAFBSZXBvcnRUcmFuc2FjdFN0YXR1cwQAAQYBRFF1ZXJ5UmVzcG9uc2VJbmZvACMATENsZWFyVHJhbnNhY3RTdGF0dXMAJAA8VW5pdmVyc2FsT3JpZ2luBAC1AQEgSnVuY3Rpb24AJQA0RXhwb3J0TWVzc2FnZQwBHG5ldHdvcmu9AQEkTmV0d29ya0lkAAEsZGVzdGluYXRpb26tAQFASW50ZXJpb3JMb2NhdGlvbgABDHhjbbkFARxYY208KCk+ACYAJExvY2tBc3NldAgBFGFzc2V0zQUBFEFzc2V0AAEgdW5sb2NrZXKpAQEgTG9jYXRpb24AJwAsVW5sb2NrQXNzZXQIARRhc3NldM0FARRBc3NldAABGHRhcmdldKkBASBMb2NhdGlvbgAoADhOb3RlVW5sb2NrYWJsZQgBFGFzc2V0zQUBFEFzc2V0AAEUb3duZXKpAQEgTG9jYXRpb24AKQA0UmVxdWVzdFVubG9jawgBFGFzc2V0zQUBFEFzc2V0AAEYbG9ja2VyqQEBIExvY2F0aW9uACoALFNldEZlZXNNb2RlBAEwaml0X3dpdGhkcmF3mAEQYm9vbAArACBTZXRUb3BpYwQACAEgW3U4OyAzMl0ALAAoQ2xlYXJUb3BpYwAtACxBbGlhc09yaWdpbgQAqQEBIExvY2F0aW9uAC4APFVucGFpZEV4ZWN1dGlvbggBMHdlaWdodF9saW1pdG0FASxXZWlnaHRMaW1pdAABMGNoZWNrX29yaWdpbvkFAUBPcHRpb248TG9jYXRpb24+AC8AHFBheUZlZXMEARRhc3NldM0FARRBc3NldAAwAEBJbml0aWF0ZVRyYW5zZmVyFAEsZGVzdGluYXRpb26pAQEgTG9jYXRpb24AASxyZW1vdGVfZmVlcxEGAWxPcHRpb248QXNzZXRUcmFuc2ZlckZpbHRlcj4AATxwcmVzZXJ2ZV9vcmlnaW6YARBib29sAAEYYXNzZXRzGQYB4EJvdW5kZWRWZWM8QXNzZXRUcmFuc2ZlckZpbHRlciwgTWF4QXNzZXRUcmFuc2ZlckZpbHRlcnM+AAEocmVtb3RlX3hjbbkFARxYY208KCk+ADEAREV4ZWN1dGVXaXRoT3JpZ2luCAFEZGVzY2VuZGFudF9vcmlnaW4hBgFgT3B0aW9uPEludGVyaW9yTG9jYXRpb24+AAEMeGNtuQUBJFhjbTxDYWxsPgAyACBTZXRIaW50cwQBFGhpbnRzJQYBhEJvdW5kZWRWZWM8SGludCwgSGludE51bVZhcmlhbnRzPgAzAADFBRAsc3RhZ2luZ194Y20IdjUUYXNzZXQYQXNzZXRzAAAEAMkFAShWZWM8QXNzZXQ+AADJBQAAAs0FAM0FECxzdGFnaW5nX3hjbQh2NRRhc3NldBRBc3NldAAACAEIaWTdAQEcQXNzZXRJZAABDGZ1btEFASxGdW5naWJpbGl0eQAA0QUQLHN0YWdpbmdfeGNtCHY1FGFzc2V0LEZ1bmdpYmlsaXR5AAEIIEZ1bmdpYmxlBACgARB1MTI4AAAALE5vbkZ1bmdpYmxlBADVBQE0QXNzZXRJbnN0YW5jZQABAADVBRAsc3RhZ2luZ194Y20IdjUUYXNzZXQ0QXNzZXRJbnN0YW5jZQABGCRVbmRlZmluZWQAAAAUSW5kZXgEAKABEHUxMjgAAQAYQXJyYXk0BABwARxbdTg7IDRdAAIAGEFycmF5OAQAIQUBHFt1ODsgOF0AAwAcQXJyYXkxNgQAJQUBIFt1ODsgMTZdAAQAHEFycmF5MzIEAAgBIFt1ODsgMzJdAAUAANkFDCxzdGFnaW5nX3hjbQh2NSBSZXNwb25zZQABGBBOdWxsAAAAGEFzc2V0cwQAxQUBGEFzc2V0cwABADxFeGVjdXRpb25SZXN1bHQEAN0FAVBPcHRpb248KHUzMiwgRXJyb3IpPgACABxWZXJzaW9uBAA4AThzdXBlcjo6VmVyc2lvbgADACxQYWxsZXRzSW5mbwQA6QUBmEJvdW5kZWRWZWM8UGFsbGV0SW5mbywgTWF4UGFsbGV0c0luZm8+AAQAOERpc3BhdGNoUmVzdWx0BABJBQE4TWF5YmVFcnJvckNvZGUABQAA3QUEGE9wdGlvbgQEVAHhBQEIEE5vbmUAAAAQU29tZQQA4QUAAAEAAOEFAAAECDjlBQDlBRAMeGNtCHY1GHRyYWl0cxRFcnJvcgABpCBPdmVyZmxvdwAAADRVbmltcGxlbWVudGVkAAEAYFVudHJ1c3RlZFJlc2VydmVMb2NhdGlvbgACAGRVbnRydXN0ZWRUZWxlcG9ydExvY2F0aW9uAAMAMExvY2F0aW9uRnVsbAAEAFRMb2NhdGlvbk5vdEludmVydGlibGUABQAkQmFkT3JpZ2luAAYAPEludmFsaWRMb2NhdGlvbgAHADRBc3NldE5vdEZvdW5kAAgAVEZhaWxlZFRvVHJhbnNhY3RBc3NldAAJADxOb3RXaXRoZHJhd2FibGUACgBITG9jYXRpb25DYW5ub3RIb2xkAAsAVEV4Y2VlZHNNYXhNZXNzYWdlU2l6ZQAMAFhEZXN0aW5hdGlvblVuc3VwcG9ydGVkAA0AJFRyYW5zcG9ydAAOAChVbnJvdXRhYmxlAA8AMFVua25vd25DbGFpbQAQADhGYWlsZWRUb0RlY29kZQARAEBNYXhXZWlnaHRJbnZhbGlkABIAOE5vdEhvbGRpbmdGZWVzABMAMFRvb0V4cGVuc2l2ZQAUABBUcmFwBAAoAQx1NjQAFQBARXhwZWN0YXRpb25GYWxzZQAWADhQYWxsZXROb3RGb3VuZAAXADBOYW1lTWlzbWF0Y2gAGABMVmVyc2lvbkluY29tcGF0aWJsZQAZAFBIb2xkaW5nV291bGRPdmVyZmxvdwAaACxFeHBvcnRFcnJvcgAbADhSZWFuY2hvckZhaWxlZAAcABhOb0RlYWwAHQAoRmVlc05vdE1ldAAeACRMb2NrRXJyb3IAHwAwTm9QZXJtaXNzaW9uACAAKFVuYW5jaG9yZWQAIQA4Tm90RGVwb3NpdGFibGUAIgA0VG9vTWFueUFzc2V0cwAjAExVbmhhbmRsZWRYY21WZXJzaW9uACQASFdlaWdodExpbWl0UmVhY2hlZAQANQIBGFdlaWdodAAlABxCYXJyaWVyACYATFdlaWdodE5vdENvbXB1dGFibGUAJwBERXhjZWVkc1N0YWNrTGltaXQAKAAA6QUMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAHtBQRTAAAEAPUFARhWZWM8VD4AAO0FDCxzdGFnaW5nX3hjbQh2NShQYWxsZXRJbmZvAAAYARRpbmRleGABDHUzMgABEG5hbWXxBQGAQm91bmRlZFZlYzx1OCwgTWF4UGFsbGV0TmFtZUxlbj4AASxtb2R1bGVfbmFtZfEFAYBCb3VuZGVkVmVjPHU4LCBNYXhQYWxsZXROYW1lTGVuPgABFG1ham9yYAEMdTMyAAEUbWlub3JgAQx1MzIAARRwYXRjaGABDHUzMgAA8QUMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEMBFMAAAQAGAEYVmVjPFQ+AAD1BQAAAu0FAPkFBBhPcHRpb24EBFQBqQEBCBBOb25lAAAAEFNvbWUEAKkBAAABAAD9BQQYT3B0aW9uBARUATUCAQgQTm9uZQAAABBTb21lBAA1AgAAAQAAAQYMLHN0YWdpbmdfeGNtCHY1RFF1ZXJ5UmVzcG9uc2VJbmZvAAAMASxkZXN0aW5hdGlvbqkBASBMb2NhdGlvbgABIHF1ZXJ5X2lkkAEcUXVlcnlJZAABKG1heF93ZWlnaHQ1AgEYV2VpZ2h0AAAFBhAsc3RhZ2luZ194Y20IdjUUYXNzZXQsQXNzZXRGaWx0ZXIAAQggRGVmaW5pdGUEAMUFARhBc3NldHMAAAAQV2lsZAQACQYBJFdpbGRBc3NldAABAAAJBhAsc3RhZ2luZ194Y20IdjUUYXNzZXQkV2lsZEFzc2V0AAEQDEFsbAAAABRBbGxPZggBCGlk3QEBHEFzc2V0SWQAAQxmdW4NBgE8V2lsZEZ1bmdpYmlsaXR5AAEAKEFsbENvdW50ZWQEAGABDHUzMgACADBBbGxPZkNvdW50ZWQMAQhpZN0BARxBc3NldElkAAEMZnVuDQYBPFdpbGRGdW5naWJpbGl0eQABFGNvdW50YAEMdTMyAAMAAA0GECxzdGFnaW5nX3hjbQh2NRRhc3NldDxXaWxkRnVuZ2liaWxpdHkAAQggRnVuZ2libGUAAAAsTm9uRnVuZ2libGUAAQAAEQYEGE9wdGlvbgQEVAEVBgEIEE5vbmUAAAAQU29tZQQAFQYAAAEAABUGECxzdGFnaW5nX3hjbQh2NRRhc3NldExBc3NldFRyYW5zZmVyRmlsdGVyAAEMIFRlbGVwb3J0BAAFBgEsQXNzZXRGaWx0ZXIAAAA4UmVzZXJ2ZURlcG9zaXQEAAUGASxBc3NldEZpbHRlcgABADxSZXNlcnZlV2l0aGRyYXcEAAUGASxBc3NldEZpbHRlcgACAAAZBgxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUARUGBFMAAAQAHQYBGFZlYzxUPgAAHQYAAAIVBgAhBgQYT3B0aW9uBARUAa0BAQgQTm9uZQAAABBTb21lBACtAQAAAQAAJQYMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEpBgRTAAAEAC0GARhWZWM8VD4AACkGDCxzdGFnaW5nX3hjbQh2NRBIaW50AAEEMEFzc2V0Q2xhaW1lcgQBIGxvY2F0aW9uqQEBIExvY2F0aW9uAAAAAC0GAAACKQYAMQYIDHhjbTxWZXJzaW9uZWRBc3NldHMAAQwIVjMEAA0FATx2Mzo6TXVsdGlBc3NldHMAAwAIVjQEAH0FASh2NDo6QXNzZXRzAAQACFY1BADFBQEodjU6OkFzc2V0cwAFAAA1BggMeGNtMFZlcnNpb25lZFhjbQQsUnVudGltZUNhbGwAAQwIVjMEADkGAVB2Mzo6WGNtPFJ1bnRpbWVDYWxsPgADAAhWNAQASQYBUHY0OjpYY208UnVudGltZUNhbGw+AAQACFY1BABVBgFQdjU6OlhjbTxSdW50aW1lQ2FsbD4ABQAAOQYMDHhjbQh2MwxYY20EEENhbGwAAAQAPQYBWFZlYzxJbnN0cnVjdGlvbjxDYWxsPj4AAD0GAAACQQYAQQYMDHhjbQh2MyxJbnN0cnVjdGlvbgQQQ2FsbAABwDRXaXRoZHJhd0Fzc2V0BAANBQEsTXVsdGlBc3NldHMAAABUUmVzZXJ2ZUFzc2V0RGVwb3NpdGVkBAANBQEsTXVsdGlBc3NldHMAAQBYUmVjZWl2ZVRlbGVwb3J0ZWRBc3NldAQADQUBLE11bHRpQXNzZXRzAAIANFF1ZXJ5UmVzcG9uc2UQASBxdWVyeV9pZJABHFF1ZXJ5SWQAASByZXNwb25zZSkFASBSZXNwb25zZQABKG1heF93ZWlnaHQ1AgEYV2VpZ2h0AAEccXVlcmllclEFAVRPcHRpb248TXVsdGlMb2NhdGlvbj4AAwA0VHJhbnNmZXJBc3NldAgBGGFzc2V0cw0FASxNdWx0aUFzc2V0cwABLGJlbmVmaWNpYXJ5UQEBNE11bHRpTG9jYXRpb24ABABQVHJhbnNmZXJSZXNlcnZlQXNzZXQMARhhc3NldHMNBQEsTXVsdGlBc3NldHMAARBkZXN0UQEBNE11bHRpTG9jYXRpb24AAQx4Y20BBQEcWGNtPCgpPgAFACBUcmFuc2FjdAwBLG9yaWdpbl9raW5kVQUBKE9yaWdpbktpbmQAAVhyZXF1aXJlX3dlaWdodF9hdF9tb3N0NQIBGFdlaWdodAABEGNhbGxFBgFMRG91YmxlRW5jb2RlZDxDYWxsPgAGAGRIcm1wTmV3Q2hhbm5lbE9wZW5SZXF1ZXN0DAEYc2VuZGVyYAEMdTMyAAFAbWF4X21lc3NhZ2Vfc2l6ZWABDHUzMgABMG1heF9jYXBhY2l0eWABDHUzMgAHAExIcm1wQ2hhbm5lbEFjY2VwdGVkBAEkcmVjaXBpZW50YAEMdTMyAAgASEhybXBDaGFubmVsQ2xvc2luZwwBJGluaXRpYXRvcmABDHUzMgABGHNlbmRlcmABDHUzMgABJHJlY2lwaWVudGABDHUzMgAJACxDbGVhck9yaWdpbgAKADREZXNjZW5kT3JpZ2luBABVAQFUSW50ZXJpb3JNdWx0aUxvY2F0aW9uAAsALFJlcG9ydEVycm9yBABdBQFEUXVlcnlSZXNwb25zZUluZm8ADAAwRGVwb3NpdEFzc2V0CAEYYXNzZXRzYQUBQE11bHRpQXNzZXRGaWx0ZXIAASxiZW5lZmljaWFyeVEBATRNdWx0aUxvY2F0aW9uAA0ATERlcG9zaXRSZXNlcnZlQXNzZXQMARhhc3NldHNhBQFATXVsdGlBc3NldEZpbHRlcgABEGRlc3RRAQE0TXVsdGlMb2NhdGlvbgABDHhjbQEFARxYY208KCk+AA4ANEV4Y2hhbmdlQXNzZXQMARBnaXZlYQUBQE11bHRpQXNzZXRGaWx0ZXIAARB3YW50DQUBLE11bHRpQXNzZXRzAAEcbWF4aW1hbJgBEGJvb2wADwBcSW5pdGlhdGVSZXNlcnZlV2l0aGRyYXcMARhhc3NldHNhBQFATXVsdGlBc3NldEZpbHRlcgABHHJlc2VydmVRAQE0TXVsdGlMb2NhdGlvbgABDHhjbQEFARxYY208KCk+ABAAQEluaXRpYXRlVGVsZXBvcnQMARhhc3NldHNhBQFATXVsdGlBc3NldEZpbHRlcgABEGRlc3RRAQE0TXVsdGlMb2NhdGlvbgABDHhjbQEFARxYY208KCk+ABEANFJlcG9ydEhvbGRpbmcIATRyZXNwb25zZV9pbmZvXQUBRFF1ZXJ5UmVzcG9uc2VJbmZvAAEYYXNzZXRzYQUBQE11bHRpQXNzZXRGaWx0ZXIAEgAwQnV5RXhlY3V0aW9uCAEQZmVlcxUFAShNdWx0aUFzc2V0AAEwd2VpZ2h0X2xpbWl0bQUBLFdlaWdodExpbWl0ABMANFJlZnVuZFN1cnBsdXMAFAA8U2V0RXJyb3JIYW5kbGVyBAA5BgEkWGNtPENhbGw+ABUALFNldEFwcGVuZGl4BAA5BgEkWGNtPENhbGw+ABYAKENsZWFyRXJyb3IAFwAoQ2xhaW1Bc3NldAgBGGFzc2V0cw0FASxNdWx0aUFzc2V0cwABGHRpY2tldFEBATRNdWx0aUxvY2F0aW9uABgAEFRyYXAEAJABDHU2NAAZAEBTdWJzY3JpYmVWZXJzaW9uCAEgcXVlcnlfaWSQARxRdWVyeUlkAAFMbWF4X3Jlc3BvbnNlX3dlaWdodDUCARhXZWlnaHQAGgBIVW5zdWJzY3JpYmVWZXJzaW9uABsAJEJ1cm5Bc3NldAQADQUBLE11bHRpQXNzZXRzABwALEV4cGVjdEFzc2V0BAANBQEsTXVsdGlBc3NldHMAHQAwRXhwZWN0T3JpZ2luBABRBQFUT3B0aW9uPE11bHRpTG9jYXRpb24+AB4ALEV4cGVjdEVycm9yBAAtBQFQT3B0aW9uPCh1MzIsIEVycm9yKT4AHwBQRXhwZWN0VHJhbnNhY3RTdGF0dXMEAEkFAThNYXliZUVycm9yQ29kZQAgACxRdWVyeVBhbGxldAgBLG1vZHVsZV9uYW1lGAEcVmVjPHU4PgABNHJlc3BvbnNlX2luZm9dBQFEUXVlcnlSZXNwb25zZUluZm8AIQAwRXhwZWN0UGFsbGV0FAEUaW5kZXhgAQx1MzIAARBuYW1lGAEcVmVjPHU4PgABLG1vZHVsZV9uYW1lGAEcVmVjPHU4PgABLGNyYXRlX21ham9yYAEMdTMyAAE8bWluX2NyYXRlX21pbm9yYAEMdTMyACIAUFJlcG9ydFRyYW5zYWN0U3RhdHVzBABdBQFEUXVlcnlSZXNwb25zZUluZm8AIwBMQ2xlYXJUcmFuc2FjdFN0YXR1cwAkADxVbml2ZXJzYWxPcmlnaW4EAFkBASBKdW5jdGlvbgAlADRFeHBvcnRNZXNzYWdlDAEcbmV0d29ya2EBASROZXR3b3JrSWQAASxkZXN0aW5hdGlvblUBAVRJbnRlcmlvck11bHRpTG9jYXRpb24AAQx4Y20BBQEcWGNtPCgpPgAmACRMb2NrQXNzZXQIARRhc3NldBUFAShNdWx0aUFzc2V0AAEgdW5sb2NrZXJRAQE0TXVsdGlMb2NhdGlvbgAnACxVbmxvY2tBc3NldAgBFGFzc2V0FQUBKE11bHRpQXNzZXQAARh0YXJnZXRRAQE0TXVsdGlMb2NhdGlvbgAoADhOb3RlVW5sb2NrYWJsZQgBFGFzc2V0FQUBKE11bHRpQXNzZXQAARRvd25lclEBATRNdWx0aUxvY2F0aW9uACkANFJlcXVlc3RVbmxvY2sIARRhc3NldBUFAShNdWx0aUFzc2V0AAEYbG9ja2VyUQEBNE11bHRpTG9jYXRpb24AKgAsU2V0RmVlc01vZGUEATBqaXRfd2l0aGRyYXeYARBib29sACsAIFNldFRvcGljBAAIASBbdTg7IDMyXQAsAChDbGVhclRvcGljAC0ALEFsaWFzT3JpZ2luBABRAQE0TXVsdGlMb2NhdGlvbgAuADxVbnBhaWRFeGVjdXRpb24IATB3ZWlnaHRfbGltaXRtBQEsV2VpZ2h0TGltaXQAATBjaGVja19vcmlnaW5RBQFUT3B0aW9uPE11bHRpTG9jYXRpb24+AC8AAEUGDAx4Y204ZG91YmxlX2VuY29kZWQ0RG91YmxlRW5jb2RlZAQEVAAABAEcZW5jb2RlZBgBHFZlYzx1OD4AAEkGDCxzdGFnaW5nX3hjbQh2NAxYY20EEENhbGwAAAQATQYBWFZlYzxJbnN0cnVjdGlvbjxDYWxsPj4AAE0GAAACUQYAUQYMLHN0YWdpbmdfeGNtCHY0LEluc3RydWN0aW9uBBBDYWxsAAHANFdpdGhkcmF3QXNzZXQEAH0FARhBc3NldHMAAABUUmVzZXJ2ZUFzc2V0RGVwb3NpdGVkBAB9BQEYQXNzZXRzAAEAWFJlY2VpdmVUZWxlcG9ydGVkQXNzZXQEAH0FARhBc3NldHMAAgA0UXVlcnlSZXNwb25zZRABIHF1ZXJ5X2lkkAEcUXVlcnlJZAABIHJlc3BvbnNlkQUBIFJlc3BvbnNlAAEobWF4X3dlaWdodDUCARhXZWlnaHQAARxxdWVyaWVypQUBQE9wdGlvbjxMb2NhdGlvbj4AAwA0VHJhbnNmZXJBc3NldAgBGGFzc2V0c30FARhBc3NldHMAASxiZW5lZmljaWFyeXEBASBMb2NhdGlvbgAEAFBUcmFuc2ZlclJlc2VydmVBc3NldAwBGGFzc2V0c30FARhBc3NldHMAARBkZXN0cQEBIExvY2F0aW9uAAEMeGNtcQUBHFhjbTwoKT4ABQAgVHJhbnNhY3QMASxvcmlnaW5fa2luZFUFAShPcmlnaW5LaW5kAAFYcmVxdWlyZV93ZWlnaHRfYXRfbW9zdDUCARhXZWlnaHQAARBjYWxsRQYBTERvdWJsZUVuY29kZWQ8Q2FsbD4ABgBkSHJtcE5ld0NoYW5uZWxPcGVuUmVxdWVzdAwBGHNlbmRlcmABDHUzMgABQG1heF9tZXNzYWdlX3NpemVgAQx1MzIAATBtYXhfY2FwYWNpdHlgAQx1MzIABwBMSHJtcENoYW5uZWxBY2NlcHRlZAQBJHJlY2lwaWVudGABDHUzMgAIAEhIcm1wQ2hhbm5lbENsb3NpbmcMASRpbml0aWF0b3JgAQx1MzIAARhzZW5kZXJgAQx1MzIAASRyZWNpcGllbnRgAQx1MzIACQAsQ2xlYXJPcmlnaW4ACgA0RGVzY2VuZE9yaWdpbgQAdQEBQEludGVyaW9yTG9jYXRpb24ACwAsUmVwb3J0RXJyb3IEAKkFAURRdWVyeVJlc3BvbnNlSW5mbwAMADBEZXBvc2l0QXNzZXQIARhhc3NldHOtBQEsQXNzZXRGaWx0ZXIAASxiZW5lZmljaWFyeXEBASBMb2NhdGlvbgANAExEZXBvc2l0UmVzZXJ2ZUFzc2V0DAEYYXNzZXRzrQUBLEFzc2V0RmlsdGVyAAEQZGVzdHEBASBMb2NhdGlvbgABDHhjbXEFARxYY208KCk+AA4ANEV4Y2hhbmdlQXNzZXQMARBnaXZlrQUBLEFzc2V0RmlsdGVyAAEQd2FudH0FARhBc3NldHMAARxtYXhpbWFsmAEQYm9vbAAPAFxJbml0aWF0ZVJlc2VydmVXaXRoZHJhdwwBGGFzc2V0c60FASxBc3NldEZpbHRlcgABHHJlc2VydmVxAQEgTG9jYXRpb24AAQx4Y21xBQEcWGNtPCgpPgAQAEBJbml0aWF0ZVRlbGVwb3J0DAEYYXNzZXRzrQUBLEFzc2V0RmlsdGVyAAEQZGVzdHEBASBMb2NhdGlvbgABDHhjbXEFARxYY208KCk+ABEANFJlcG9ydEhvbGRpbmcIATRyZXNwb25zZV9pbmZvqQUBRFF1ZXJ5UmVzcG9uc2VJbmZvAAEYYXNzZXRzrQUBLEFzc2V0RmlsdGVyABIAMEJ1eUV4ZWN1dGlvbggBEGZlZXOFBQEUQXNzZXQAATB3ZWlnaHRfbGltaXRtBQEsV2VpZ2h0TGltaXQAEwA0UmVmdW5kU3VycGx1cwAUADxTZXRFcnJvckhhbmRsZXIEAEkGASRYY208Q2FsbD4AFQAsU2V0QXBwZW5kaXgEAEkGASRYY208Q2FsbD4AFgAoQ2xlYXJFcnJvcgAXAChDbGFpbUFzc2V0CAEYYXNzZXRzfQUBGEFzc2V0cwABGHRpY2tldHEBASBMb2NhdGlvbgAYABBUcmFwBACQAQx1NjQAGQBAU3Vic2NyaWJlVmVyc2lvbggBIHF1ZXJ5X2lkkAEcUXVlcnlJZAABTG1heF9yZXNwb25zZV93ZWlnaHQ1AgEYV2VpZ2h0ABoASFVuc3Vic2NyaWJlVmVyc2lvbgAbACRCdXJuQXNzZXQEAH0FARhBc3NldHMAHAAsRXhwZWN0QXNzZXQEAH0FARhBc3NldHMAHQAwRXhwZWN0T3JpZ2luBAClBQFAT3B0aW9uPExvY2F0aW9uPgAeACxFeHBlY3RFcnJvcgQALQUBUE9wdGlvbjwodTMyLCBFcnJvcik+AB8AUEV4cGVjdFRyYW5zYWN0U3RhdHVzBABJBQE4TWF5YmVFcnJvckNvZGUAIAAsUXVlcnlQYWxsZXQIASxtb2R1bGVfbmFtZRgBHFZlYzx1OD4AATRyZXNwb25zZV9pbmZvqQUBRFF1ZXJ5UmVzcG9uc2VJbmZvACEAMEV4cGVjdFBhbGxldBQBFGluZGV4YAEMdTMyAAEQbmFtZRgBHFZlYzx1OD4AASxtb2R1bGVfbmFtZRgBHFZlYzx1OD4AASxjcmF0ZV9tYWpvcmABDHUzMgABPG1pbl9jcmF0ZV9taW5vcmABDHUzMgAiAFBSZXBvcnRUcmFuc2FjdFN0YXR1cwQAqQUBRFF1ZXJ5UmVzcG9uc2VJbmZvACMATENsZWFyVHJhbnNhY3RTdGF0dXMAJAA8VW5pdmVyc2FsT3JpZ2luBAB9AQEgSnVuY3Rpb24AJQA0RXhwb3J0TWVzc2FnZQwBHG5ldHdvcmuFAQEkTmV0d29ya0lkAAEsZGVzdGluYXRpb251AQFASW50ZXJpb3JMb2NhdGlvbgABDHhjbXEFARxYY208KCk+ACYAJExvY2tBc3NldAgBFGFzc2V0hQUBFEFzc2V0AAEgdW5sb2NrZXJxAQEgTG9jYXRpb24AJwAsVW5sb2NrQXNzZXQIARRhc3NldIUFARRBc3NldAABGHRhcmdldHEBASBMb2NhdGlvbgAoADhOb3RlVW5sb2NrYWJsZQgBFGFzc2V0hQUBFEFzc2V0AAEUb3duZXJxAQEgTG9jYXRpb24AKQA0UmVxdWVzdFVubG9jawgBFGFzc2V0hQUBFEFzc2V0AAEYbG9ja2VycQEBIExvY2F0aW9uACoALFNldEZlZXNNb2RlBAEwaml0X3dpdGhkcmF3mAEQYm9vbAArACBTZXRUb3BpYwQACAEgW3U4OyAzMl0ALAAoQ2xlYXJUb3BpYwAtACxBbGlhc09yaWdpbgQAcQEBIExvY2F0aW9uAC4APFVucGFpZEV4ZWN1dGlvbggBMHdlaWdodF9saW1pdG0FASxXZWlnaHRMaW1pdAABMGNoZWNrX29yaWdpbqUFAUBPcHRpb248TG9jYXRpb24+AC8AAFUGDCxzdGFnaW5nX3hjbQh2NQxYY20EEENhbGwAAAQAWQYBWFZlYzxJbnN0cnVjdGlvbjxDYWxsPj4AAFkGAAACXQYAXQYMLHN0YWdpbmdfeGNtCHY1LEluc3RydWN0aW9uBBBDYWxsAAHQNFdpdGhkcmF3QXNzZXQEAMUFARhBc3NldHMAAABUUmVzZXJ2ZUFzc2V0RGVwb3NpdGVkBADFBQEYQXNzZXRzAAEAWFJlY2VpdmVUZWxlcG9ydGVkQXNzZXQEAMUFARhBc3NldHMAAgA0UXVlcnlSZXNwb25zZRABIHF1ZXJ5X2lkkAEcUXVlcnlJZAABIHJlc3BvbnNl2QUBIFJlc3BvbnNlAAEobWF4X3dlaWdodDUCARhXZWlnaHQAARxxdWVyaWVy+QUBQE9wdGlvbjxMb2NhdGlvbj4AAwA0VHJhbnNmZXJBc3NldAgBGGFzc2V0c8UFARhBc3NldHMAASxiZW5lZmljaWFyeakBASBMb2NhdGlvbgAEAFBUcmFuc2ZlclJlc2VydmVBc3NldAwBGGFzc2V0c8UFARhBc3NldHMAARBkZXN0qQEBIExvY2F0aW9uAAEMeGNtuQUBHFhjbTwoKT4ABQAgVHJhbnNhY3QMASxvcmlnaW5fa2luZFUFAShPcmlnaW5LaW5kAAFMZmFsbGJhY2tfbWF4X3dlaWdodP0FAThPcHRpb248V2VpZ2h0PgABEGNhbGxFBgFMRG91YmxlRW5jb2RlZDxDYWxsPgAGAGRIcm1wTmV3Q2hhbm5lbE9wZW5SZXF1ZXN0DAEYc2VuZGVyYAEMdTMyAAFAbWF4X21lc3NhZ2Vfc2l6ZWABDHUzMgABMG1heF9jYXBhY2l0eWABDHUzMgAHAExIcm1wQ2hhbm5lbEFjY2VwdGVkBAEkcmVjaXBpZW50YAEMdTMyAAgASEhybXBDaGFubmVsQ2xvc2luZwwBJGluaXRpYXRvcmABDHUzMgABGHNlbmRlcmABDHUzMgABJHJlY2lwaWVudGABDHUzMgAJACxDbGVhck9yaWdpbgAKADREZXNjZW5kT3JpZ2luBACtAQFASW50ZXJpb3JMb2NhdGlvbgALACxSZXBvcnRFcnJvcgQAAQYBRFF1ZXJ5UmVzcG9uc2VJbmZvAAwAMERlcG9zaXRBc3NldAgBGGFzc2V0cwUGASxBc3NldEZpbHRlcgABLGJlbmVmaWNpYXJ5qQEBIExvY2F0aW9uAA0ATERlcG9zaXRSZXNlcnZlQXNzZXQMARhhc3NldHMFBgEsQXNzZXRGaWx0ZXIAARBkZXN0qQEBIExvY2F0aW9uAAEMeGNtuQUBHFhjbTwoKT4ADgA0RXhjaGFuZ2VBc3NldAwBEGdpdmUFBgEsQXNzZXRGaWx0ZXIAARB3YW50xQUBGEFzc2V0cwABHG1heGltYWyYARBib29sAA8AXEluaXRpYXRlUmVzZXJ2ZVdpdGhkcmF3DAEYYXNzZXRzBQYBLEFzc2V0RmlsdGVyAAEccmVzZXJ2ZakBASBMb2NhdGlvbgABDHhjbbkFARxYY208KCk+ABAAQEluaXRpYXRlVGVsZXBvcnQMARhhc3NldHMFBgEsQXNzZXRGaWx0ZXIAARBkZXN0qQEBIExvY2F0aW9uAAEMeGNtuQUBHFhjbTwoKT4AEQA0UmVwb3J0SG9sZGluZwgBNHJlc3BvbnNlX2luZm8BBgFEUXVlcnlSZXNwb25zZUluZm8AARhhc3NldHMFBgEsQXNzZXRGaWx0ZXIAEgAwQnV5RXhlY3V0aW9uCAEQZmVlc80FARRBc3NldAABMHdlaWdodF9saW1pdG0FASxXZWlnaHRMaW1pdAATADRSZWZ1bmRTdXJwbHVzABQAPFNldEVycm9ySGFuZGxlcgQAVQYBJFhjbTxDYWxsPgAVACxTZXRBcHBlbmRpeAQAVQYBJFhjbTxDYWxsPgAWAChDbGVhckVycm9yABcAKENsYWltQXNzZXQIARhhc3NldHPFBQEYQXNzZXRzAAEYdGlja2V0qQEBIExvY2F0aW9uABgAEFRyYXAEAJABDHU2NAAZAEBTdWJzY3JpYmVWZXJzaW9uCAEgcXVlcnlfaWSQARxRdWVyeUlkAAFMbWF4X3Jlc3BvbnNlX3dlaWdodDUCARhXZWlnaHQAGgBIVW5zdWJzY3JpYmVWZXJzaW9uABsAJEJ1cm5Bc3NldAQAxQUBGEFzc2V0cwAcACxFeHBlY3RBc3NldAQAxQUBGEFzc2V0cwAdADBFeHBlY3RPcmlnaW4EAPkFAUBPcHRpb248TG9jYXRpb24+AB4ALEV4cGVjdEVycm9yBADdBQFQT3B0aW9uPCh1MzIsIEVycm9yKT4AHwBQRXhwZWN0VHJhbnNhY3RTdGF0dXMEAEkFAThNYXliZUVycm9yQ29kZQAgACxRdWVyeVBhbGxldAgBLG1vZHVsZV9uYW1lGAEcVmVjPHU4PgABNHJlc3BvbnNlX2luZm8BBgFEUXVlcnlSZXNwb25zZUluZm8AIQAwRXhwZWN0UGFsbGV0FAEUaW5kZXhgAQx1MzIAARBuYW1lGAEcVmVjPHU4PgABLG1vZHVsZV9uYW1lGAEcVmVjPHU4PgABLGNyYXRlX21ham9yYAEMdTMyAAE8bWluX2NyYXRlX21pbm9yYAEMdTMyACIAUFJlcG9ydFRyYW5zYWN0U3RhdHVzBAABBgFEUXVlcnlSZXNwb25zZUluZm8AIwBMQ2xlYXJUcmFuc2FjdFN0YXR1cwAkADxVbml2ZXJzYWxPcmlnaW4EALUBASBKdW5jdGlvbgAlADRFeHBvcnRNZXNzYWdlDAEcbmV0d29ya70BASROZXR3b3JrSWQAASxkZXN0aW5hdGlvbq0BAUBJbnRlcmlvckxvY2F0aW9uAAEMeGNtuQUBHFhjbTwoKT4AJgAkTG9ja0Fzc2V0CAEUYXNzZXTNBQEUQXNzZXQAASB1bmxvY2tlcqkBASBMb2NhdGlvbgAnACxVbmxvY2tBc3NldAgBFGFzc2V0zQUBFEFzc2V0AAEYdGFyZ2V0qQEBIExvY2F0aW9uACgAOE5vdGVVbmxvY2thYmxlCAEUYXNzZXTNBQEUQXNzZXQAARRvd25lcqkBASBMb2NhdGlvbgApADRSZXF1ZXN0VW5sb2NrCAEUYXNzZXTNBQEUQXNzZXQAARhsb2NrZXKpAQEgTG9jYXRpb24AKgAsU2V0RmVlc01vZGUEATBqaXRfd2l0aGRyYXeYARBib29sACsAIFNldFRvcGljBAAIASBbdTg7IDMyXQAsAChDbGVhclRvcGljAC0ALEFsaWFzT3JpZ2luBACpAQEgTG9jYXRpb24ALgA8VW5wYWlkRXhlY3V0aW9uCAEwd2VpZ2h0X2xpbWl0bQUBLFdlaWdodExpbWl0AAEwY2hlY2tfb3JpZ2lu+QUBQE9wdGlvbjxMb2NhdGlvbj4ALwAcUGF5RmVlcwQBFGFzc2V0zQUBFEFzc2V0ADAAQEluaXRpYXRlVHJhbnNmZXIUASxkZXN0aW5hdGlvbqkBASBMb2NhdGlvbgABLHJlbW90ZV9mZWVzEQYBbE9wdGlvbjxBc3NldFRyYW5zZmVyRmlsdGVyPgABPHByZXNlcnZlX29yaWdpbpgBEGJvb2wAARhhc3NldHMZBgHgQm91bmRlZFZlYzxBc3NldFRyYW5zZmVyRmlsdGVyLCBNYXhBc3NldFRyYW5zZmVyRmlsdGVycz4AAShyZW1vdGVfeGNtuQUBHFhjbTwoKT4AMQBERXhlY3V0ZVdpdGhPcmlnaW4IAURkZXNjZW5kYW50X29yaWdpbiEGAWBPcHRpb248SW50ZXJpb3JMb2NhdGlvbj4AAQx4Y21VBgEkWGNtPENhbGw+ADIAIFNldEhpbnRzBAEUaGludHMlBgGEQm91bmRlZFZlYzxIaW50LCBIaW50TnVtVmFyaWFudHM+ADMAAGEGEFBzdGFnaW5nX3hjbV9leGVjdXRvchh0cmFpdHM4YXNzZXRfdHJhbnNmZXIwVHJhbnNmZXJUeXBlAAEQIFRlbGVwb3J0AAAAMExvY2FsUmVzZXJ2ZQABAEhEZXN0aW5hdGlvblJlc2VydmUAAgA0UmVtb3RlUmVzZXJ2ZQQA4QEBRFZlcnNpb25lZExvY2F0aW9uAAMAAGUGCAx4Y21AVmVyc2lvbmVkQXNzZXRJZAABDAhWMwQAbQEBLHYzOjpBc3NldElkAAMACFY0BAClAQEsdjQ6OkFzc2V0SWQABAAIVjUEAN0BASx2NTo6QXNzZXRJZAAFAABpBgQYT3B0aW9uBARUASgBCBBOb25lAAAAEFNvbWUEACgAAAEAAG0GDFBwYWxsZXRfbWVzc2FnZV9xdWV1ZRhwYWxsZXQQQ2FsbAQEVAABCCRyZWFwX3BhZ2UIAThtZXNzYWdlX29yaWdpbnEGAUhNZXNzYWdlT3JpZ2luT2Y8VD4AAShwYWdlX2luZGV4OAEkUGFnZUluZGV4AAAEPQFSZW1vdmUgYSBwYWdlIHdoaWNoIGhhcyBubyBtb3JlIG1lc3NhZ2VzIHJlbWFpbmluZyB0byBiZSBwcm9jZXNzZWQgb3IgaXMgc3RhbGUuSGV4ZWN1dGVfb3ZlcndlaWdodBABOG1lc3NhZ2Vfb3JpZ2lucQYBSE1lc3NhZ2VPcmlnaW5PZjxUPgABEHBhZ2U4ASRQYWdlSW5kZXgAARRpbmRleDgBHFQ6OlNpemUAATB3ZWlnaHRfbGltaXQ1AgEYV2VpZ2h0AAE0eEV4ZWN1dGUgYW4gb3ZlcndlaWdodCBtZXNzYWdlLgBNAVRlbXBvcmFyeSBwcm9jZXNzaW5nIGVycm9ycyB3aWxsIGJlIHByb3BhZ2F0ZWQgd2hlcmVhcyBwZXJtYW5lbnQgZXJyb3JzIGFyZSB0cmVhdGVkVGFzIHN1Y2Nlc3MgY29uZGl0aW9uLgB0LSBgb3JpZ2luYDogTXVzdCBiZSBgU2lnbmVkYC41AS0gYG1lc3NhZ2Vfb3JpZ2luYDogVGhlIG9yaWdpbiBmcm9tIHdoaWNoIHRoZSBtZXNzYWdlIHRvIGJlIGV4ZWN1dGVkIGFycml2ZWQuPQEtIGBwYWdlYDogVGhlIHBhZ2UgaW4gdGhlIHF1ZXVlIGluIHdoaWNoIHRoZSBtZXNzYWdlIHRvIGJlIGV4ZWN1dGVkIGlzIHNpdHRpbmcuCQEtIGBpbmRleGA6IFRoZSBpbmRleCBpbnRvIHRoZSBxdWV1ZSBvZiB0aGUgbWVzc2FnZSB0byBiZSBleGVjdXRlZC5ZAS0gYHdlaWdodF9saW1pdGA6IFRoZSBtYXhpbXVtIGFtb3VudCBvZiB3ZWlnaHQgYWxsb3dlZCB0byBiZSBjb25zdW1lZCBpbiB0aGUgZXhlY3V0aW9uRCAgb2YgdGhlIG1lc3NhZ2UuAPRCZW5jaG1hcmsgY29tcGxleGl0eSBjb25zaWRlcmF0aW9uczogTyhpbmRleCArIHdlaWdodF9saW1pdCkuBA0BQ29udGFpbnMgYSB2YXJpYW50IHBlciBkaXNwYXRjaGFibGUgZXh0cmluc2ljIHRoYXQgdGhpcyBwYWxsZXQgaGFzLnEGDGxwb2xrYWRvdF9ydW50aW1lX3BhcmFjaGFpbnMkaW5jbHVzaW9uWEFnZ3JlZ2F0ZU1lc3NhZ2VPcmlnaW4AAQQMVW1wBAB1BgEoVW1wUXVldWVJZAAAAAB1BgxscG9sa2Fkb3RfcnVudGltZV9wYXJhY2hhaW5zJGluY2x1c2lvbihVbXBRdWV1ZUlkAAEEEFBhcmEEABUCARhQYXJhSWQAAAAAeQYMRHBhbGxldF9hc3NldF9yYXRlGHBhbGxldBBDYWxsBARUAAEMGGNyZWF0ZQgBKGFzc2V0X2tpbmRNAQFEQm94PFQ6OkFzc2V0S2luZD4AARByYXRlfQYBJEZpeGVkVTEyOAAAEA0BSW5pdGlhbGl6ZSBhIGNvbnZlcnNpb24gcmF0ZSB0byBuYXRpdmUgYmFsYW5jZSBmb3IgdGhlIGdpdmVuIGFzc2V0LgA0IyMgQ29tcGxleGl0eRgtIE8oMSkYdXBkYXRlCAEoYXNzZXRfa2luZE0BAURCb3g8VDo6QXNzZXRLaW5kPgABEHJhdGV9BgEkRml4ZWRVMTI4AAEQBQFVcGRhdGUgdGhlIGNvbnZlcnNpb24gcmF0ZSB0byBuYXRpdmUgYmFsYW5jZSBmb3IgdGhlIGdpdmVuIGFzc2V0LgA0IyMgQ29tcGxleGl0eRgtIE8oMSkYcmVtb3ZlBAEoYXNzZXRfa2luZE0BAURCb3g8VDo6QXNzZXRLaW5kPgACECUBUmVtb3ZlIGFuIGV4aXN0aW5nIGNvbnZlcnNpb24gcmF0ZSB0byBuYXRpdmUgYmFsYW5jZSBmb3IgdGhlIGdpdmVuIGFzc2V0LgA0IyMgQ29tcGxleGl0eRgtIE8oMSkEDQFDb250YWlucyBhIHZhcmlhbnQgcGVyIGRpc3BhdGNoYWJsZSBleHRyaW5zaWMgdGhhdCB0aGlzIHBhbGxldCBoYXMufQYMNHNwX2FyaXRobWV0aWMsZml4ZWRfcG9pbnQkRml4ZWRVMTI4AAAEAKQBEHUxMjgAAIEGDDBwYWxsZXRfYmVlZnkYcGFsbGV0EENhbGwEBFQAARxQcmVwb3J0X2RvdWJsZV92b3RpbmcIAUhlcXVpdm9jYXRpb25fcHJvb2aFBgGNAUJveDxEb3VibGVWb3RpbmdQcm9vZjxCbG9ja051bWJlckZvcjxUPiwgVDo6QmVlZnlJZCw8VDo6QmVlZnlJZAphcyBSdW50aW1lQXBwUHVibGljPjo6U2lnbmF0dXJlLD4sPgABPGtleV9vd25lcl9wcm9vZnwBQFQ6OktleU93bmVyUHJvb2YAABAJAVJlcG9ydCB2b3RlciBlcXVpdm9jYXRpb24vbWlzYmVoYXZpb3IuIFRoaXMgbWV0aG9kIHdpbGwgdmVyaWZ5IHRoZfRlcXVpdm9jYXRpb24gcHJvb2YgYW5kIHZhbGlkYXRlIHRoZSBnaXZlbiBrZXkgb3duZXJzaGlwIHByb29m+GFnYWluc3QgdGhlIGV4dHJhY3RlZCBvZmZlbmRlci4gSWYgYm90aCBhcmUgdmFsaWQsIHRoZSBvZmZlbmNlRHdpbGwgYmUgcmVwb3J0ZWQudHJlcG9ydF9kb3VibGVfdm90aW5nX3Vuc2lnbmVkCAFIZXF1aXZvY2F0aW9uX3Byb29mhQYBjQFCb3g8RG91YmxlVm90aW5nUHJvb2Y8QmxvY2tOdW1iZXJGb3I8VD4sIFQ6OkJlZWZ5SWQsPFQ6OkJlZWZ5SWQKYXMgUnVudGltZUFwcFB1YmxpYz46OlNpZ25hdHVyZSw+LD4AATxrZXlfb3duZXJfcHJvb2Z8AUBUOjpLZXlPd25lclByb29mAAEkCQFSZXBvcnQgdm90ZXIgZXF1aXZvY2F0aW9uL21pc2JlaGF2aW9yLiBUaGlzIG1ldGhvZCB3aWxsIHZlcmlmeSB0aGX0ZXF1aXZvY2F0aW9uIHByb29mIGFuZCB2YWxpZGF0ZSB0aGUgZ2l2ZW4ga2V5IG93bmVyc2hpcCBwcm9vZvhhZ2FpbnN0IHRoZSBleHRyYWN0ZWQgb2ZmZW5kZXIuIElmIGJvdGggYXJlIHZhbGlkLCB0aGUgb2ZmZW5jZUR3aWxsIGJlIHJlcG9ydGVkLgANAVRoaXMgZXh0cmluc2ljIG11c3QgYmUgY2FsbGVkIHVuc2lnbmVkIGFuZCBpdCBpcyBleHBlY3RlZCB0aGF0IG9ubHkVAWJsb2NrIGF1dGhvcnMgd2lsbCBjYWxsIGl0ICh2YWxpZGF0ZWQgaW4gYFZhbGlkYXRlVW5zaWduZWRgKSwgYXMgc3VjaBUBaWYgdGhlIGJsb2NrIGF1dGhvciBpcyBkZWZpbmVkIGl0IHdpbGwgYmUgZGVmaW5lZCBhcyB0aGUgZXF1aXZvY2F0aW9uJHJlcG9ydGVyLjxzZXRfbmV3X2dlbmVzaXMEATxkZWxheV9pbl9ibG9ja3M4AURCbG9ja051bWJlckZvcjxUPgACEF0BUmVzZXQgQkVFRlkgY29uc2Vuc3VzIGJ5IHNldHRpbmcgYSBuZXcgQkVFRlkgZ2VuZXNpcyBhdCBgZGVsYXlfaW5fYmxvY2tzYCBibG9ja3MgaW4gdGhlHGZ1dHVyZS4AtE5vdGU6IGBkZWxheV9pbl9ibG9ja3NgIGhhcyB0byBiZSBhdCBsZWFzdCAxLkhyZXBvcnRfZm9ya192b3RpbmcIAUhlcXVpdm9jYXRpb25fcHJvb2alBgGtAUJveDxGb3JrVm90aW5nUHJvb2Y8SGVhZGVyRm9yPFQ+LCBUOjpCZWVmeUlkLDxUOjpBbmNlc3RyeUhlbHBlcgphcyBBbmNlc3RyeUhlbHBlcjxIZWFkZXJGb3I8VD4+Pjo6UHJvb2YsPiw+AAE8a2V5X293bmVyX3Byb29mfAFAVDo6S2V5T3duZXJQcm9vZgADDD0BUmVwb3J0IGZvcmsgdm90aW5nIGVxdWl2b2NhdGlvbi4gVGhpcyBtZXRob2Qgd2lsbCB2ZXJpZnkgdGhlIGVxdWl2b2NhdGlvbiBwcm9vZikBYW5kIHZhbGlkYXRlIHRoZSBnaXZlbiBrZXkgb3duZXJzaGlwIHByb29mIGFnYWluc3QgdGhlIGV4dHJhY3RlZCBvZmZlbmRlci7ASWYgYm90aCBhcmUgdmFsaWQsIHRoZSBvZmZlbmNlIHdpbGwgYmUgcmVwb3J0ZWQubHJlcG9ydF9mb3JrX3ZvdGluZ191bnNpZ25lZAgBSGVxdWl2b2NhdGlvbl9wcm9vZqUGAa0BQm94PEZvcmtWb3RpbmdQcm9vZjxIZWFkZXJGb3I8VD4sIFQ6OkJlZWZ5SWQsPFQ6OkFuY2VzdHJ5SGVscGVyCmFzIEFuY2VzdHJ5SGVscGVyPEhlYWRlckZvcjxUPj4+OjpQcm9vZiw+LD4AATxrZXlfb3duZXJfcHJvb2Z8AUBUOjpLZXlPd25lclByb29mAAQgPQFSZXBvcnQgZm9yayB2b3RpbmcgZXF1aXZvY2F0aW9uLiBUaGlzIG1ldGhvZCB3aWxsIHZlcmlmeSB0aGUgZXF1aXZvY2F0aW9uIHByb29mKQFhbmQgdmFsaWRhdGUgdGhlIGdpdmVuIGtleSBvd25lcnNoaXAgcHJvb2YgYWdhaW5zdCB0aGUgZXh0cmFjdGVkIG9mZmVuZGVyLsBJZiBib3RoIGFyZSB2YWxpZCwgdGhlIG9mZmVuY2Ugd2lsbCBiZSByZXBvcnRlZC4ADQFUaGlzIGV4dHJpbnNpYyBtdXN0IGJlIGNhbGxlZCB1bnNpZ25lZCBhbmQgaXQgaXMgZXhwZWN0ZWQgdGhhdCBvbmx5FQFibG9jayBhdXRob3JzIHdpbGwgY2FsbCBpdCAodmFsaWRhdGVkIGluIGBWYWxpZGF0ZVVuc2lnbmVkYCksIGFzIHN1Y2gVAWlmIHRoZSBibG9jayBhdXRob3IgaXMgZGVmaW5lZCBpdCB3aWxsIGJlIGRlZmluZWQgYXMgdGhlIGVxdWl2b2NhdGlvbiRyZXBvcnRlci5ocmVwb3J0X2Z1dHVyZV9ibG9ja192b3RpbmcIAUhlcXVpdm9jYXRpb25fcHJvb2a1BgHoQm94PEZ1dHVyZUJsb2NrVm90aW5nUHJvb2Y8QmxvY2tOdW1iZXJGb3I8VD4sIFQ6OkJlZWZ5SWQ+PgABPGtleV9vd25lcl9wcm9vZnwBQFQ6OktleU93bmVyUHJvb2YABQxdAVJlcG9ydCBmdXR1cmUgYmxvY2sgdm90aW5nIGVxdWl2b2NhdGlvbi4gVGhpcyBtZXRob2Qgd2lsbCB2ZXJpZnkgdGhlIGVxdWl2b2NhdGlvbiBwcm9vZikBYW5kIHZhbGlkYXRlIHRoZSBnaXZlbiBrZXkgb3duZXJzaGlwIHByb29mIGFnYWluc3QgdGhlIGV4dHJhY3RlZCBvZmZlbmRlci7ASWYgYm90aCBhcmUgdmFsaWQsIHRoZSBvZmZlbmNlIHdpbGwgYmUgcmVwb3J0ZWQujHJlcG9ydF9mdXR1cmVfYmxvY2tfdm90aW5nX3Vuc2lnbmVkCAFIZXF1aXZvY2F0aW9uX3Byb29mtQYB6EJveDxGdXR1cmVCbG9ja1ZvdGluZ1Byb29mPEJsb2NrTnVtYmVyRm9yPFQ+LCBUOjpCZWVmeUlkPj4AATxrZXlfb3duZXJfcHJvb2Z8AUBUOjpLZXlPd25lclByb29mAAYgXQFSZXBvcnQgZnV0dXJlIGJsb2NrIHZvdGluZyBlcXVpdm9jYXRpb24uIFRoaXMgbWV0aG9kIHdpbGwgdmVyaWZ5IHRoZSBlcXVpdm9jYXRpb24gcHJvb2YpAWFuZCB2YWxpZGF0ZSB0aGUgZ2l2ZW4ga2V5IG93bmVyc2hpcCBwcm9vZiBhZ2FpbnN0IHRoZSBleHRyYWN0ZWQgb2ZmZW5kZXIuwElmIGJvdGggYXJlIHZhbGlkLCB0aGUgb2ZmZW5jZSB3aWxsIGJlIHJlcG9ydGVkLgANAVRoaXMgZXh0cmluc2ljIG11c3QgYmUgY2FsbGVkIHVuc2lnbmVkIGFuZCBpdCBpcyBleHBlY3RlZCB0aGF0IG9ubHkVAWJsb2NrIGF1dGhvcnMgd2lsbCBjYWxsIGl0ICh2YWxpZGF0ZWQgaW4gYFZhbGlkYXRlVW5zaWduZWRgKSwgYXMgc3VjaBUBaWYgdGhlIGJsb2NrIGF1dGhvciBpcyBkZWZpbmVkIGl0IHdpbGwgYmUgZGVmaW5lZCBhcyB0aGUgZXF1aXZvY2F0aW9uJHJlcG9ydGVyLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy6FBghIc3BfY29uc2Vuc3VzX2JlZWZ5RERvdWJsZVZvdGluZ1Byb29mDBhOdW1iZXIBOAhJZAEVASRTaWduYXR1cmUBiQYACAEUZmlyc3SNBgGIVm90ZU1lc3NhZ2U8TnVtYmVyLCBJZCwgU2lnbmF0dXJlPgABGHNlY29uZI0GAYhWb3RlTWVzc2FnZTxOdW1iZXIsIElkLCBTaWduYXR1cmU+AACJBgxIc3BfY29uc2Vuc3VzX2JlZWZ5MGVjZHNhX2NyeXB0byRTaWduYXR1cmUAAAQAQQIBQGVjZHNhOjpTaWduYXR1cmUAAI0GCEhzcF9jb25zZW5zdXNfYmVlZnksVm90ZU1lc3NhZ2UMGE51bWJlcgE4CElkARUBJFNpZ25hdHVyZQGJBgAMAShjb21taXRtZW50kQYBSENvbW1pdG1lbnQ8TnVtYmVyPgABCGlkFQEBCElkAAEkc2lnbmF0dXJliQYBJFNpZ25hdHVyZQAAkQYMSHNwX2NvbnNlbnN1c19iZWVmeShjb21taXRtZW50KENvbW1pdG1lbnQEMFRCbG9ja051bWJlcgE4AAwBHHBheWxvYWSVBgEcUGF5bG9hZAABMGJsb2NrX251bWJlcjgBMFRCbG9ja051bWJlcgABQHZhbGlkYXRvcl9zZXRfaWQoAThWYWxpZGF0b3JTZXRJZAAAlQYMSHNwX2NvbnNlbnN1c19iZWVmeRxwYXlsb2FkHFBheWxvYWQAAAQAmQYBeFZlYzwoQmVlZnlQYXlsb2FkSWQsIFZlYzx1OD4pPgAAmQYAAAKdBgCdBgAABAihBhgAoQYAAAMCAAAADAClBghIc3BfY29uc2Vuc3VzX2JlZWZ5PEZvcmtWb3RpbmdQcm9vZgwYSGVhZGVyAVwISWQBFQE0QW5jZXN0cnlQcm9vZgGpBgAMARB2b3RljQYBuFZvdGVNZXNzYWdlPEhlYWRlcjo6TnVtYmVyLCBJZCwgSWQ6OlNpZ25hdHVyZT4AAThhbmNlc3RyeV9wcm9vZqkGATRBbmNlc3RyeVByb29mAAEYaGVhZGVyXAEYSGVhZGVyAACpBghEc3BfbW1yX3ByaW1pdGl2ZXM0QW5jZXN0cnlQcm9vZgQQSGFzaAE8ABABKHByZXZfcGVha3NQASRWZWM8SGFzaD4AATxwcmV2X2xlYWZfY291bnQoAQx1NjQAAShsZWFmX2NvdW50KAEkTm9kZUluZGV4AAEUaXRlbXOtBgFAVmVjPCh1NjQsIEhhc2gpPgAArQYAAAKxBgCxBgAABAgoPAC1BghIc3BfY29uc2Vuc3VzX2JlZWZ5WEZ1dHVyZUJsb2NrVm90aW5nUHJvb2YIGE51bWJlcgE4CElkARUBAAQBEHZvdGWNBgGYVm90ZU1lc3NhZ2U8TnVtYmVyLCBJZCwgSWQ6OlNpZ25hdHVyZT4AALkGDEhwYWxsZXRfcmNfbWlncmF0b3IYcGFsbGV0EENhbGwEBFQAATw8Zm9yY2Vfc2V0X3N0YWdlBAEUc3RhZ2W9BgFgQm94PE1pZ3JhdGlvblN0YWdlT2Y8VD4+AAAQYFNldCB0aGUgbWlncmF0aW9uIHN0YWdlLgAJAVRoaXMgY2FsbCBpcyBpbnRlbmRlZCBmb3IgZW1lcmdlbmN5IHVzZSBvbmx5IGFuZCBpcyBndWFyZGVkIGJ5IHRoZWBbYENvbmZpZzo6QWRtaW5PcmlnaW5gXS5Ic2NoZWR1bGVfbWlncmF0aW9uEAEUc3RhcnQpAgF8RGlzcGF0Y2hUaW1lPEJsb2NrTnVtYmVyRm9yPFQ+PgABHHdhcm1fdXApAgF8RGlzcGF0Y2hUaW1lPEJsb2NrTnVtYmVyRm9yPFQ+PgABIGNvb2xfb2ZmKQIBfERpc3BhdGNoVGltZTxCbG9ja051bWJlckZvcjxUPj4AAYB1bnNhZmVfaWdub3JlX3N0YWtpbmdfbG9ja19jaGVja5gBEGJvb2wAAVTIU2NoZWR1bGUgdGhlIG1pZ3JhdGlvbiB0byBzdGFydCBhdCBhIGdpdmVuIG1vbWVudC4APCMjIyBQYXJhbWV0ZXJzOmEBLSBgc3RhcnRgOiBUaGUgYmxvY2sgbnVtYmVyIGF0IHdoaWNoIHRoZSBtaWdyYXRpb24gd2lsbCBzdGFydC4gYERpc3BhdGNoVGltZWAgY2FsY3VsYXRlZKwgIGF0IHRoZSBtb21lbnQgb2YgdGhlIGV4dHJpbnNpYyBleGVjdXRpb24uYQEtIGB3YXJtX3VwYDogRHVyYXRpb24gb3IgdGltZXBvaW50IHRoYXQgd2lsbCBiZSB1c2VkIHRvIHByZXBhcmUgZm9yIHRoZSBtaWdyYXRpb24uIENhbGxzVQEgIGFyZSBmaWx0ZXJlZCBkdXJpbmcgdGhpcyBwZXJpb2QuIEl0IGlzIGludGVuZGVkIHRvIGdpdmUgZW5vdWdoIHRpbWUgZm9yIFVNUCBhbmQgRE1QTQEgIHF1ZXVlcyB0byBlbXB0eS4gYERpc3BhdGNoVGltZWAgY2FsY3VsYXRlZCBhdCB0aGUgbW9tZW50IG9mIHRoZSB0cmFuc2l0aW9uIHRvIHRoZUAgIHdhcm0tdXAgc3RhZ2UuYQEtIGBjb29sX29mZmA6IFRoZSBibG9jayBudW1iZXIgYXQgd2hpY2ggdGhlIHBvc3QgbWlncmF0aW9uIGNvb2wtb2ZmIHBlcmlvZCB3aWxsIGVuZC4gVGhlSQEgIGBEaXNwYXRjaFRpbWVgIGNhbGN1bGF0ZWQgYXQgdGhlIG1vbWVudCBvZiB0aGUgdHJhbnNpdGlvbiB0byB0aGUgY29vbC1vZmYgc3RhZ2UuUQEtIGB1bnNhZmVfaWdub3JlX3N0YWtpbmdfbG9ja19jaGVja2A6IE9OTFkgRk9SIFRFU1RJTkcuIElnbm9yZSB0aGUgY2hlY2sgd2hldGhlciB0aGXMICBzY2hlZHVsZWQgdGltZSBwb2ludCBpcyBmYXIgZW5vdWdoIGluIHRoZSBmdXR1cmUuADEBTm90ZTogSWYgdGhlIHN0YWtpbmcgZWxlY3Rpb24gZm9yIG5leHQgZXJhIGlzIGFscmVhZHkgY29tcGxldGUsIGFuZCB0aGUgbmV4dD0BdmFsaWRhdG9yIHNldCBpcyBxdWV1ZWQgaW4gYHBhbGxldC1zZXNzaW9uYCwgd2Ugd2FudCB0byBhdm9pZCBzdGFydGluZyB0aGUgZGF0YU0BbWlncmF0aW9uIGF0IHRoaXMgcG9pbnQgYXMgaXQgY2FuIGxlYWQgdG8gc29tZSBtaXNzZWQgdmFsaWRhdG9yIHJld2FyZHMuIFRvIGFkZHJlc3NBAXRoaXMsIHdlIHN0b3Agc3Rha2luZyBlbGVjdGlvbiBhdCB0aGUgc3RhcnQgb2YgbWlncmF0aW9uIGFuZCBtdXN0IHdhaXQgYXRsZWFzdCAx9HNlc3Npb24gKHNldCB2aWEgd2FybV91cCkgYmVmb3JlIHN0YXJ0aW5nIHRoZSBkYXRhIG1pZ3JhdGlvbi4ACQFSZWFkIFtgTWlncmF0aW9uU3RhZ2U6OlNjaGVkdWxlZGBdIGRvY3VtZW50YXRpb24gZm9yIG1vcmUgZGV0YWlscy5Qc3RhcnRfZGF0YV9taWdyYXRpb24AAhBkU3RhcnQgdGhlIGRhdGEgbWlncmF0aW9uLgBNAVRoaXMgaXMgdHlwaWNhbGx5IGNhbGxlZCBieSB0aGUgQXNzZXQgSHViIHRvIGluZGljYXRlIGl0J3MgcmVhZGluZXNzIHRvIHJlY2VpdmUgdGhlPG1pZ3JhdGlvbiBkYXRhLlhyZWNlaXZlX3F1ZXJ5X3Jlc3BvbnNlCAEgcXVlcnlfaWQoARxRdWVyeUlkAAEgcmVzcG9uc2XZBQEgUmVzcG9uc2UAAwQ5AVJlY2VpdmUgYSBxdWVyeSByZXNwb25zZSBmcm9tIHRoZSBBc3NldCBIdWIgZm9yIGEgcHJldmlvdXNseSBzZW50IHhjbSBtZXNzYWdlLihyZXNlbmRfeGNtBAEgcXVlcnlfaWQoAQx1NjQABATUUmVzZW5kIGEgcHJldmlvdXNseSBzZW50IGFuZCB1bmNvbmZpcm1lZCBYQ00gbWVzc2FnZS5oc2V0X3VucHJvY2Vzc2VkX21zZ19idWZmZXIEAQxuZXflAQEsT3B0aW9uPHUzMj4ABQygU2V0IHRoZSB1bnByb2Nlc3NlZCBtZXNzYWdlIGJ1ZmZlciBzaXplLgCwYE5vbmVgIG1lYW5zIHRvIHVzZSB0aGUgY29uZmlndXJhdGlvbiB2YWx1ZS5kc2V0X2FoX3VtcF9xdWV1ZV9wcmlvcml0eQQBDG5ld2kHAZRBaFVtcFF1ZXVlUHJpb3JpdHk8QmxvY2tOdW1iZXJGb3I8VD4+AAYMsFNldCB0aGUgQUggVU1QIHF1ZXVlIHByaW9yaXR5IGNvbmZpZ3VyYXRpb24uAKBDYW4gb25seSBiZSBjYWxsZWQgYnkgdGhlIGBBZG1pbk9yaWdpbmAuLHNldF9tYW5hZ2VyBAEMbmV35AFQT3B0aW9uPFQ6OkFjY291bnRJZD4ABxBsU2V0IHRoZSBtYW5hZ2VyIGFjY291bnQgaWQuAEEBVGhlIG1hbmFnZXIgaGFzIHRoZSBzaW1pbGFyIHRvIFtgQ29uZmlnOjpBZG1pbk9yaWdpbmBdIHByaXZpbGVnZXMgZXhjZXB0IHRoYXQgaXToY2FuIG5vdCBzZXQgdGhlIG1hbmFnZXIgYWNjb3VudCBpZCB2aWEgYHNldF9tYW5hZ2VyYCBjYWxsLkBzZW5kX3hjbV9tZXNzYWdlCAEQZGVzdOEBAVhCb3g8VmVyc2lvbmVkTG9jYXRpb24+AAEcbWVzc2FnZf0EAVRCb3g8VmVyc2lvbmVkWGNtPCgpPj4ACAw1AVhDTSBzZW5kIGNhbGwgaWRlbnRpY2FsIHRvIHRoZSBbYHBhbGxldF94Y206OlBhbGxldDo6c2VuZGBdIGNhbGwgYnV0IHdpdGggdGhlUQFbQ29uZmlnOjpTZW5kWGNtXSByb3V0ZXIgd2hpY2ggd2lsbCBiZSBhYmxlIHRvIHNlbmQgbWVzc2FnZXMgdG8gdGhlIEFzc2V0IEh1YiBkdXJpbmc4dGhlIG1pZ3JhdGlvbi5EcHJlc2VydmVfYWNjb3VudHMEASBhY2NvdW50c6gBRFZlYzxUOjpBY2NvdW50SWQ+AAkMFQFTZXQgdGhlIGFjY291bnRzIHRvIGJlIHByZXNlcnZlZCBvbiBSZWxheSBDaGFpbiBkdXJpbmcgdGhlIG1pZ3JhdGlvbi4AvFRoZSBhY2NvdW50cyBtdXN0IGhhdmUgbm8gY29uc3VtZXJzIHJlZmVyZW5jZXMuNHNldF9jYW5jZWxsZXIEAQxuZXfkAVBPcHRpb248VDo6QWNjb3VudElkPgAKDHRTZXQgdGhlIGNhbmNlbGxlciBhY2NvdW50IGlkLgDAVGhlIGNhbmNlbGxlciBjYW4gb25seSBzdG9wIHNjaGVkdWxlZCBtaWdyYXRpb24uPHBhdXNlX21pZ3JhdGlvbgALBFBQYXVzZSB0aGUgbWlncmF0aW9uLkBjYW5jZWxfbWlncmF0aW9uAAwMVENhbmNlbCB0aGUgbWlncmF0aW9uLgBRAU1pZ3JhdGlvbiBjYW4gb25seSBiZSBjYW5jZWxsZWQgaWYgaXQgaXMgaW4gdGhlIFtgTWlncmF0aW9uU3RhZ2U6OlNjaGVkdWxlZGBdIHN0YXRlLlR2b3RlX21hbmFnZXJfbXVsdGlzaWcIARxwYXlsb2FkbQcBbEJveDxNYW5hZ2VyTXVsdGlzaWdWb3RlPFQ+PgABDHNpZ8kEAWhzcF9ydW50aW1lOjpNdWx0aVNpZ25hdHVyZQANJOhWb3RlIG9uIGJlaGFsZiBvZiBhbnkgb2YgdGhlIG1lbWJlcnMgaW4gYE11bHRpc2lnTWVtYmVyc2AuAORVbnNpZ25lZCBleHRyaW5zaWMsIHJlcXVpcmluZyB0aGUgYHBheWxvYWRgIHRvIGJlIHNpZ25lZC4AWQFVcG9uIGVhY2ggY2FsbCwgYSBuZXcgZW50cnkgaXMgY3JlYXRlZCBpbiBgTWFuYWdlck11bHRpc2lnc2AgbWFwIHRoZSBgcGF5bG9hZC5jYWxsYCB0b1UBYmUgZGlzcGF0Y2hlZC4gT25jZSBgTXVsdGlzaWdUaHJlc2hvbGRgIGlzIHJlYWNoZWQsIHRoZSBlbnRpcmUgbWFwIGlzIGRlbGV0ZWQsIGFuZCB3ZWhtb3ZlIG9uIHRvIHRoZSBuZXh0IHJvdW5kLgAtAVRoZSByb3VuZCBzeXN0ZW0gZW5zdXJlcyB0aGF0IHNpZ25hdHVyZXMgZnJvbSBvbGRlciByb3VuZCBjYW5ub3QgYmUgcmV1c2VkLjBzZXRfc2V0dGluZ3MEASBzZXR0aW5nc3EHAWRPcHRpb248TWlncmF0aW9uU2V0dGluZ3M+AA4EBQFTZXQgdGhlIG1pZ3JhdGlvbiBzZXR0aW5ncy4gQ2FuIG9ubHkgYmUgZG9uZSBieSBhZG1pbiBvciBtYW5hZ2VyLgQNAUNvbnRhaW5zIGEgdmFyaWFudCBwZXIgZGlzcGF0Y2hhYmxlIGV4dHJpbnNpYyB0aGF0IHRoaXMgcGFsbGV0IGhhcy69BghIcGFsbGV0X3JjX21pZ3JhdG9yOE1pZ3JhdGlvblN0YWdlGCRBY2NvdW50SWQBBCxCbG9ja051bWJlcgE4NEJhZ3NMaXN0U2NvcmUBKCxWb3RpbmdDbGFzcwH1ASRBc3NldEtpbmQBTQFQU2NoZWR1bGVyQmxvY2tOdW1iZXIBOAEtARxQZW5kaW5nAAAAPE1pZ3JhdGlvblBhdXNlZAABACRTY2hlZHVsZWQEARRzdGFydDgBLEJsb2NrTnVtYmVyAAIAMFdhaXRpbmdGb3JBaAADABhXYXJtVXAEARhlbmRfYXQ4ASxCbG9ja051bWJlcgAEACBTdGFydGluZwAFAIBQdXJlUHJveHlDYW5kaWRhdGVzTWlncmF0aW9uSW5pdAAGAFRBY2NvdW50c01pZ3JhdGlvbkluaXQABwBgQWNjb3VudHNNaWdyYXRpb25PbmdvaW5nBAEgbGFzdF9rZXnkAURPcHRpb248QWNjb3VudElkPgAIAFRBY2NvdW50c01pZ3JhdGlvbkRvbmUACQBUTXVsdGlzaWdNaWdyYXRpb25Jbml0AAoAYE11bHRpc2lnTWlncmF0aW9uT25nb2luZwQBIGxhc3Rfa2V5wQYBcE9wdGlvbjwoQWNjb3VudElkLFt1ODsgMzJdKT4ACwBUTXVsdGlzaWdNaWdyYXRpb25Eb25lAAwATENsYWltc01pZ3JhdGlvbkluaXQADQBYQ2xhaW1zTWlncmF0aW9uT25nb2luZwQBLGN1cnJlbnRfa2V5yQYBeE9wdGlvbjxDbGFpbXNTdGFnZTxBY2NvdW50SWQ+PgAOAExDbGFpbXNNaWdyYXRpb25Eb25lAA8ASFByb3h5TWlncmF0aW9uSW5pdAAQAFRQcm94eU1pZ3JhdGlvblByb3hpZXMEASBsYXN0X2tleeQBRE9wdGlvbjxBY2NvdW50SWQ+ABEAbFByb3h5TWlncmF0aW9uQW5ub3VuY2VtZW50cwQBIGxhc3Rfa2V55AFET3B0aW9uPEFjY291bnRJZD4AEgBIUHJveHlNaWdyYXRpb25Eb25lABMAVFByZWltYWdlTWlncmF0aW9uSW5pdAAUAHhQcmVpbWFnZU1pZ3JhdGlvbkNodW5rc09uZ29pbmcEASBsYXN0X2tledUGAWhPcHRpb248KChIMjU2LCB1MzIpLCB1MzIpPgAVAGxQcmVpbWFnZU1pZ3JhdGlvbkNodW5rc0RvbmUAFgCUUHJlaW1hZ2VNaWdyYXRpb25SZXF1ZXN0U3RhdHVzT25nb2luZwQBIG5leHRfa2V5LQIBME9wdGlvbjxIMjU2PgAXAIhQcmVpbWFnZU1pZ3JhdGlvblJlcXVlc3RTdGF0dXNEb25lABgAoFByZWltYWdlTWlncmF0aW9uTGVnYWN5UmVxdWVzdFN0YXR1c0luaXQAGQCsUHJlaW1hZ2VNaWdyYXRpb25MZWdhY3lSZXF1ZXN0U3RhdHVzT25nb2luZwQBIG5leHRfa2V5LQIBME9wdGlvbjxIMjU2PgAaAKBQcmVpbWFnZU1pZ3JhdGlvbkxlZ2FjeVJlcXVlc3RTdGF0dXNEb25lABsAVFByZWltYWdlTWlncmF0aW9uRG9uZQAcAFROb21Qb29sc01pZ3JhdGlvbkluaXQAHQBgTm9tUG9vbHNNaWdyYXRpb25PbmdvaW5nBAEgbmV4dF9rZXnhBgGAT3B0aW9uPE5vbVBvb2xzU3RhZ2U8QWNjb3VudElkPj4AHgBUTm9tUG9vbHNNaWdyYXRpb25Eb25lAB8AUFZlc3RpbmdNaWdyYXRpb25Jbml0ACAAXFZlc3RpbmdNaWdyYXRpb25PbmdvaW5nBAEgbmV4dF9rZXnkAURPcHRpb248QWNjb3VudElkPgAhAFBWZXN0aW5nTWlncmF0aW9uRG9uZQAiAHREZWxlZ2F0ZWRTdGFraW5nTWlncmF0aW9uSW5pdAAjAIBEZWxlZ2F0ZWRTdGFraW5nTWlncmF0aW9uT25nb2luZwQBIG5leHRfa2V56QYBoE9wdGlvbjxEZWxlZ2F0ZWRTdGFraW5nU3RhZ2U8QWNjb3VudElkPj4AJAB0RGVsZWdhdGVkU3Rha2luZ01pZ3JhdGlvbkRvbmUAJQBQSW5kaWNlc01pZ3JhdGlvbkluaXQAJgBcSW5kaWNlc01pZ3JhdGlvbk9uZ29pbmcEASBuZXh0X2tlefEGAShPcHRpb248KCk+ACcAUEluZGljZXNNaWdyYXRpb25Eb25lACgAWFJlZmVyZW5kYU1pZ3JhdGlvbkluaXQAKQBkUmVmZXJlbmRhTWlncmF0aW9uT25nb2luZwQBIGxhc3Rfa2V59QYBWE9wdGlvbjxSZWZlcmVuZGFTdGFnZT4AKgBYUmVmZXJlbmRhTWlncmF0aW9uRG9uZQArAFRCYWdzTGlzdE1pZ3JhdGlvbkluaXQALABgQmFnc0xpc3RNaWdyYXRpb25PbmdvaW5nBAEgbmV4dF9rZXn9BgG8T3B0aW9uPEJhZ3NMaXN0U3RhZ2U8QWNjb3VudElkLCBCYWdzTGlzdFNjb3JlPj4ALQBUQmFnc0xpc3RNaWdyYXRpb25Eb25lAC4AWFNjaGVkdWxlck1pZ3JhdGlvbkluaXQALwBkU2NoZWR1bGVyTWlncmF0aW9uT25nb2luZwQBIGxhc3Rfa2V5BQcB3E9wdGlvbjxzY2hlZHVsZXI6OlNjaGVkdWxlclN0YWdlPFNjaGVkdWxlckJsb2NrTnVtYmVyPj4AMAB8U2NoZWR1bGVyQWdlbmRhTWlncmF0aW9uT25nb2luZwQBIGxhc3Rfa2V55QEBcE9wdGlvbjxTY2hlZHVsZXJCbG9ja051bWJlcj4AMQBYU2NoZWR1bGVyTWlncmF0aW9uRG9uZQAyAHRDb252aWN0aW9uVm90aW5nTWlncmF0aW9uSW5pdAAzAIBDb252aWN0aW9uVm90aW5nTWlncmF0aW9uT25nb2luZwQBIGxhc3Rfa2V5EQcBJQFPcHRpb248Y29udmljdGlvbl92b3Rpbmc6OkNvbnZpY3Rpb25Wb3RpbmdTdGFnZTxBY2NvdW50SWQsIFZvdGluZ0NsYXNzPgo+ADQAdENvbnZpY3Rpb25Wb3RpbmdNaWdyYXRpb25Eb25lADUAVEJvdW50aWVzTWlncmF0aW9uSW5pdAA2AGBCb3VudGllc01pZ3JhdGlvbk9uZ29pbmcEASBsYXN0X2tleSEHAXxPcHRpb248Ym91bnRpZXM6OkJvdW50aWVzU3RhZ2U+ADcAVEJvdW50aWVzTWlncmF0aW9uRG9uZQA4AGhDaGlsZEJvdW50aWVzTWlncmF0aW9uSW5pdAA5AHRDaGlsZEJvdW50aWVzTWlncmF0aW9uT25nb2luZwQBIGxhc3Rfa2V5KQcBqE9wdGlvbjxjaGlsZF9ib3VudGllczo6Q2hpbGRCb3VudGllc1N0YWdlPgA6AGhDaGlsZEJvdW50aWVzTWlncmF0aW9uRG9uZQA7AFhBc3NldFJhdGVNaWdyYXRpb25Jbml0ADwAZEFzc2V0UmF0ZU1pZ3JhdGlvbk9uZ29pbmcEASBsYXN0X2tleTEHAURPcHRpb248QXNzZXRLaW5kPgA9AFhBc3NldFJhdGVNaWdyYXRpb25Eb25lAD4AWENyb3dkbG9hbk1pZ3JhdGlvbkluaXQAPwBkQ3Jvd2Rsb2FuTWlncmF0aW9uT25nb2luZwQBIGxhc3Rfa2V5NQcBhE9wdGlvbjxjcm93ZGxvYW46OkNyb3dkbG9hblN0YWdlPgBAAFhDcm93ZGxvYW5NaWdyYXRpb25Eb25lAEEAVFRyZWFzdXJ5TWlncmF0aW9uSW5pdABCAGBUcmVhc3VyeU1pZ3JhdGlvbk9uZ29pbmcEASBsYXN0X2tleUEHAXxPcHRpb248dHJlYXN1cnk6OlRyZWFzdXJ5U3RhZ2U+AEMAVFRyZWFzdXJ5TWlncmF0aW9uRG9uZQBEAFBTdGFraW5nTWlncmF0aW9uSW5pdABFAFxTdGFraW5nTWlncmF0aW9uT25nb2luZwQBIG5leHRfa2V5SQcBoE9wdGlvbjxzdGFraW5nOjpTdGFraW5nU3RhZ2U8QWNjb3VudElkPj4ARgBQU3Rha2luZ01pZ3JhdGlvbkRvbmUARwAcQ29vbE9mZgQBGGVuZF9hdDgBLEJsb2NrTnVtYmVyAEgAVFNpZ25hbE1pZ3JhdGlvbkZpbmlzaABJADRNaWdyYXRpb25Eb25lAEoAAMEGBBhPcHRpb24EBFQBxQYBCBBOb25lAAAAEFNvbWUEAMUGAAABAADFBgAABAgECADJBgQYT3B0aW9uBARUAc0GAQgQTm9uZQAAABBTb21lBADNBgAAAQAAzQYMSHBhbGxldF9yY19taWdyYXRvchhjbGFpbXMsQ2xhaW1zU3RhZ2UEJEFjY291bnRJZAEEARg0U3RvcmFnZVZhbHVlcwAAABhDbGFpbXMEANEGAVxPcHRpb248RXRoZXJldW1BZGRyZXNzPgABABxWZXN0aW5nBADRBgFcT3B0aW9uPEV0aGVyZXVtQWRkcmVzcz4AAgAcU2lnbmluZwQA0QYBXE9wdGlvbjxFdGhlcmV1bUFkZHJlc3M+AAMAJFByZWNsYWltcwQA5AFET3B0aW9uPEFjY291bnRJZD4ABAAgRmluaXNoZWQABQAA0QYEGE9wdGlvbgQEVAFFAgEIEE5vbmUAAAAQU29tZQQARQIAAAEAANUGBBhPcHRpb24EBFQB2QYBCBBOb25lAAAAEFNvbWUEANkGAAABAADZBgAABAjdBjgA3QYAAAQIPDgA4QYEGE9wdGlvbgQEVAHlBgEIEE5vbmUAAAAQU29tZQQA5QYAAAEAAOUGEEhwYWxsZXRfcmNfbWlncmF0b3Icc3Rha2luZyRub21fcG9vbHM0Tm9tUG9vbHNTdGFnZQQkQWNjb3VudElkAQQBJDRTdG9yYWdlVmFsdWVzAAAALFBvb2xNZW1iZXJzBADkAURPcHRpb248QWNjb3VudElkPgABACxCb25kZWRQb29scwQA5QEBOE9wdGlvbjxQb29sSWQ+AAIALFJld2FyZFBvb2xzBADlAQE4T3B0aW9uPFBvb2xJZD4AAwA8U3ViUG9vbHNTdG9yYWdlBADlAQE4T3B0aW9uPFBvb2xJZD4ABAAgTWV0YWRhdGEEAOUBAThPcHRpb248UG9vbElkPgAFAExSZXZlcnNlUG9vbElkTG9va3VwBADkAURPcHRpb248QWNjb3VudElkPgAGAEBDbGFpbVBlcm1pc3Npb25zBADkAURPcHRpb248QWNjb3VudElkPgAHACBGaW5pc2hlZAAIAADpBgQYT3B0aW9uBARUAe0GAQgQTm9uZQAAABBTb21lBADtBgAAAQAA7QYQSHBhbGxldF9yY19taWdyYXRvchxzdGFraW5nRGRlbGVnYXRlZF9zdGFraW5nVERlbGVnYXRlZFN0YWtpbmdTdGFnZQQkQWNjb3VudElkAQQBDChEZWxlZ2F0b3JzBADkAURPcHRpb248QWNjb3VudElkPgAAABhBZ2VudHMEAOQBRE9wdGlvbjxBY2NvdW50SWQ+AAEAIEZpbmlzaGVkAAIAAPEGBBhPcHRpb24EBFQBEAEIEE5vbmUAAAAQU29tZQQAEAAAAQAA9QYEGE9wdGlvbgQEVAH5BgEIEE5vbmUAAAAQU29tZQQA+QYAAAEAAPkGDEhwYWxsZXRfcmNfbWlncmF0b3IkcmVmZXJlbmRhOFJlZmVyZW5kYVN0YWdlAAEMNFN0b3JhZ2VWYWx1ZXMAAAAgTWV0YWRhdGEEAOUBASxPcHRpb248dTMyPgABADhSZWZlcmVuZHVtSW5mbwQA5QEBLE9wdGlvbjx1MzI+AAIAAP0GBBhPcHRpb24EBFQBAQcBCBBOb25lAAAAEFNvbWUEAAEHAAABAAABBxBIcGFsbGV0X3JjX21pZ3JhdG9yHHN0YWtpbmckYmFnc19saXN0NEJhZ3NMaXN0U3RhZ2UIJEFjY291bnRJZAEEFFNjb3JlASgBDCRMaXN0Tm9kZXMEAOQBRE9wdGlvbjxBY2NvdW50SWQ+AAAAIExpc3RCYWdzBABpBgE0T3B0aW9uPFNjb3JlPgABACBGaW5pc2hlZAACAAAFBwQYT3B0aW9uBARUAQkHAQgQTm9uZQAAABBTb21lBAAJBwAAAQAACQcMSHBhbGxldF9yY19taWdyYXRvciRzY2hlZHVsZXI4U2NoZWR1bGVyU3RhZ2UELEJsb2NrTnVtYmVyATgBEDxJbmNvbXBsZXRlU2luY2UAAAAcUmV0cmllcwQARAGAT3B0aW9uPFRhc2tBZGRyZXNzPEJsb2NrTnVtYmVyPj4AAQAYTG9va3VwBAANBwFAT3B0aW9uPFRhc2tOYW1lPgACACBGaW5pc2hlZAADAAANBwQYT3B0aW9uBARUAQgBCBBOb25lAAAAEFNvbWUEAAgAAAEAABEHBBhPcHRpb24EBFQBFQcBCBBOb25lAAAAEFNvbWUEABUHAAABAAAVBwxIcGFsbGV0X3JjX21pZ3JhdG9yRGNvbnZpY3Rpb25fdm90aW5nVENvbnZpY3Rpb25Wb3RpbmdTdGFnZQgkQWNjb3VudElkAQQUQ2xhc3MB9QEBDCRWb3RpbmdGb3IEABkHAWhPcHRpb248KEFjY291bnRJZCwgQ2xhc3MpPgAAADRDbGFzc0xvY2tzRm9yBADkAURPcHRpb248QWNjb3VudElkPgABACBGaW5pc2hlZAACAAAZBwQYT3B0aW9uBARUAR0HAQgQTm9uZQAAABBTb21lBAAdBwAAAQAAHQcAAAQIBPUBACEHBBhPcHRpb24EBFQBJQcBCBBOb25lAAAAEFNvbWUEACUHAAABAAAlBwxIcGFsbGV0X3JjX21pZ3JhdG9yIGJvdW50aWVzNEJvdW50aWVzU3RhZ2UAARQsQm91bnR5Q291bnQAAAA8Qm91bnR5QXBwcm92YWxzAAEASEJvdW50eURlc2NyaXB0aW9ucwQBIGxhc3Rfa2V55QEBTE9wdGlvbjxCb3VudHlJbmRleD4AAgAgQm91bnRpZXMEASBsYXN0X2tleeUBAUxPcHRpb248Qm91bnR5SW5kZXg+AAMAIEZpbmlzaGVkAAQAACkHBBhPcHRpb24EBFQBLQcBCBBOb25lAAAAEFNvbWUEAC0HAAABAAAtBwxIcGFsbGV0X3JjX21pZ3JhdG9yOGNoaWxkX2JvdW50aWVzSENoaWxkQm91bnRpZXNTdGFnZQABIEBDaGlsZEJvdW50eUNvdW50AAAATFBhcmVudENoaWxkQm91bnRpZXMEASRwYXJlbnRfaWTlAQFMT3B0aW9uPEJvdW50eUluZGV4PgABAGBQYXJlbnRUb3RhbENoaWxkQm91bnRpZXMEASRwYXJlbnRfaWTlAQFMT3B0aW9uPEJvdW50eUluZGV4PgACADRDaGlsZEJvdW50aWVzBAEMaWRzRAGIT3B0aW9uPChCb3VudHlJbmRleCwgQm91bnR5SW5kZXgpPgADAGRDaGlsZEJvdW50eURlc2NyaXB0aW9uc1YxBAEMaWRzRAGIT3B0aW9uPChCb3VudHlJbmRleCwgQm91bnR5SW5kZXgpPgAEAFBWMFRvVjFDaGlsZEJvdW50eUlkcwQBIGNoaWxkX2lk5QEBTE9wdGlvbjxCb3VudHlJbmRleD4ABQBMQ2hpbGRyZW5DdXJhdG9yRmVlcwQBIGNoaWxkX2lk5QEBTE9wdGlvbjxCb3VudHlJbmRleD4ABgAgRmluaXNoZWQABwAAMQcEGE9wdGlvbgQEVAFNAQEIEE5vbmUAAAAQU29tZQQATQEAAAEAADUHBBhPcHRpb24EBFQBOQcBCBBOb25lAAAAEFNvbWUEADkHAAABAAA5BwxIcGFsbGV0X3JjX21pZ3JhdG9yJGNyb3dkbG9hbjhDcm93ZGxvYW5TdGFnZQABFBRTZXR1cAAAADBMZWFzZVJlc2VydmUEASBsYXN0X2tleT0HAThPcHRpb248UGFyYUlkPgABAFRDcm93ZGxvYW5Db250cmlidXRpb24EASBsYXN0X2tleT0HAThPcHRpb248UGFyYUlkPgACAEBDcm93ZGxvYW5SZXNlcnZlAAMAIEZpbmlzaGVkAAQAAD0HBBhPcHRpb24EBFQBFQIBCBBOb25lAAAAEFNvbWUEABUCAAABAABBBwQYT3B0aW9uBARUAUUHAQgQTm9uZQAAABBTb21lBABFBwAAAQAARQcMSHBhbGxldF9yY19taWdyYXRvciB0cmVhc3VyeTRUcmVhc3VyeVN0YWdlAAEgNFByb3Bvc2FsQ291bnQAAAAkUHJvcG9zYWxzBADlAQFUT3B0aW9uPFByb3Bvc2FsSW5kZXg+AAEAJEFwcHJvdmFscwACAChTcGVuZENvdW50AAMAGFNwZW5kcwQA5QEBSE9wdGlvbjxTcGVuZEluZGV4PgAEADxMYXN0U3BlbmRQZXJpb2QABQAURnVuZHMABgAgRmluaXNoZWQABwAASQcEGE9wdGlvbgQEVAFNBwEIEE5vbmUAAAAQU29tZQQATQcAAAEAAE0HEEhwYWxsZXRfcmNfbWlncmF0b3Icc3Rha2luZzBzdGFraW5nX2ltcGwwU3Rha2luZ1N0YWdlBCRBY2NvdW50SWQBBAFYGFZhbHVlcwAAADRJbnZ1bG5lcmFibGVzAAEAGEJvbmRlZAQA5AFET3B0aW9uPEFjY291bnRJZD4AAgAYTGVkZ2VyBADkAURPcHRpb248QWNjb3VudElkPgADABRQYXllZQQA5AFET3B0aW9uPEFjY291bnRJZD4ABAAoVmFsaWRhdG9ycwQA5AFET3B0aW9uPEFjY291bnRJZD4ABQAoTm9taW5hdG9ycwQA5AFET3B0aW9uPEFjY291bnRJZD4ABgA4VmlydHVhbFN0YWtlcnMEAOQBRE9wdGlvbjxBY2NvdW50SWQ+AAcATEVyYXNTdGFrZXJzT3ZlcnZpZXcEAFEHAXRPcHRpb248KEVyYUluZGV4LCBBY2NvdW50SWQpPgAIAEBFcmFzU3Rha2Vyc1BhZ2VkBABZBwGMT3B0aW9uPChFcmFJbmRleCwgQWNjb3VudElkLCBQYWdlKT4ACQA4Q2xhaW1lZFJld2FyZHMEAFEHAXRPcHRpb248KEVyYUluZGV4LCBBY2NvdW50SWQpPgAKAEhFcmFzVmFsaWRhdG9yUHJlZnMEAFEHAXRPcHRpb248KEVyYUluZGV4LCBBY2NvdW50SWQpPgALAExFcmFzVmFsaWRhdG9yUmV3YXJkBADlAQFAT3B0aW9uPEVyYUluZGV4PgAMAEBFcmFzUmV3YXJkUG9pbnRzBADlAQFAT3B0aW9uPEVyYUluZGV4PgANADhFcmFzVG90YWxTdGFrZQQA5QEBQE9wdGlvbjxFcmFJbmRleD4ADgBAVW5hcHBsaWVkU2xhc2hlcwQA5QEBQE9wdGlvbjxFcmFJbmRleD4ADwAoQm9uZGVkRXJhcwAQAExWYWxpZGF0b3JTbGFzaEluRXJhBABRBwF0T3B0aW9uPChFcmFJbmRleCwgQWNjb3VudElkKT4AEQBMTm9taW5hdG9yU2xhc2hJbkVyYQQAUQcBdE9wdGlvbjwoRXJhSW5kZXgsIEFjY291bnRJZCk+ABIANFNsYXNoaW5nU3BhbnMEAOQBRE9wdGlvbjxBY2NvdW50SWQ+ABMAJFNwYW5TbGFzaAQAYQcBeE9wdGlvbjwoQWNjb3VudElkLCBTcGFuSW5kZXgpPgAUACBGaW5pc2hlZAAVAABRBwQYT3B0aW9uBARUAVUHAQgQTm9uZQAAABBTb21lBABVBwAAAQAAVQcAAAQIOAQAWQcEGE9wdGlvbgQEVAFdBwEIEE5vbmUAAAAQU29tZQQAXQcAAAEAAF0HAAAEDDgEOABhBwQYT3B0aW9uBARUAWUHAQgQTm9uZQAAABBTb21lBABlBwAAAQAAZQcAAAQIBDgAaQcMSHBhbGxldF9yY19taWdyYXRvchR0eXBlczRRdWV1ZVByaW9yaXR5BCxCbG9ja051bWJlcgE4AQwYQ29uZmlnAAAAOE92ZXJyaWRlQ29uZmlnCAA4ASxCbG9ja051bWJlcgAAOAEsQmxvY2tOdW1iZXIAAQAgRGlzYWJsZWQAAgAAbQcMSHBhbGxldF9yY19taWdyYXRvchhwYWxsZXRMTWFuYWdlck11bHRpc2lnVm90ZQQEVAAADAEMd2hvwQQBXHNwX3J1bnRpbWU6Ok11bHRpU2lnbmVyAAEQY2FsbCABaDxUIGFzIENvbmZpZz46OlJ1bnRpbWVDYWxsAAEUcm91bmQ4AQx1MzIAAHEHBBhPcHRpb24EBFQBdQcBCBBOb25lAAAAEFNvbWUEAHUHAAABAAB1BwhIcGFsbGV0X3JjX21pZ3JhdG9yRE1pZ3JhdGlvblNldHRpbmdzAAAIAVhtYXhfYWNjb3VudHNfcGVyX2Jsb2Nr5QEBLE9wdGlvbjx1MzI+AAFMbWF4X2l0ZW1zX3Blcl9ibG9ja+UBASxPcHRpb248dTMyPgAAeQcQMGZyYW1lX3N5c3RlbShleHRlbnNpb25zVGNoZWNrX25vbl96ZXJvX3NlbmRlckhDaGVja05vblplcm9TZW5kZXIEBFQAAAAAfQcQMGZyYW1lX3N5c3RlbShleHRlbnNpb25zSGNoZWNrX3NwZWNfdmVyc2lvbkBDaGVja1NwZWNWZXJzaW9uBARUAAAAAIEHEDBmcmFtZV9zeXN0ZW0oZXh0ZW5zaW9uc0BjaGVja190eF92ZXJzaW9uOENoZWNrVHhWZXJzaW9uBARUAAAAAIUHEDBmcmFtZV9zeXN0ZW0oZXh0ZW5zaW9uczRjaGVja19nZW5lc2lzMENoZWNrR2VuZXNpcwQEVAAAAACJBxAwZnJhbWVfc3lzdGVtKGV4dGVuc2lvbnM8Y2hlY2tfbW9ydGFsaXR5OENoZWNrTW9ydGFsaXR5BARUAAAEAI0HAQxFcmEAAI0HEChzcF9ydW50aW1lHGdlbmVyaWMMZXJhDEVyYQABAQQgSW1tb3J0YWwAAAAcTW9ydGFsMQQADAAAAQAcTW9ydGFsMgQADAAAAgAcTW9ydGFsMwQADAAAAwAcTW9ydGFsNAQADAAABAAcTW9ydGFsNQQADAAABQAcTW9ydGFsNgQADAAABgAcTW9ydGFsNwQADAAABwAcTW9ydGFsOAQADAAACAAcTW9ydGFsOQQADAAACQAgTW9ydGFsMTAEAAwAAAoAIE1vcnRhbDExBAAMAAALACBNb3J0YWwxMgQADAAADAAgTW9ydGFsMTMEAAwAAA0AIE1vcnRhbDE0BAAMAAAOACBNb3J0YWwxNQQADAAADwAgTW9ydGFsMTYEAAwAABAAIE1vcnRhbDE3BAAMAAARACBNb3J0YWwxOAQADAAAEgAgTW9ydGFsMTkEAAwAABMAIE1vcnRhbDIwBAAMAAAUACBNb3J0YWwyMQQADAAAFQAgTW9ydGFsMjIEAAwAABYAIE1vcnRhbDIzBAAMAAAXACBNb3J0YWwyNAQADAAAGAAgTW9ydGFsMjUEAAwAABkAIE1vcnRhbDI2BAAMAAAaACBNb3J0YWwyNwQADAAAGwAgTW9ydGFsMjgEAAwAABwAIE1vcnRhbDI5BAAMAAAdACBNb3J0YWwzMAQADAAAHgAgTW9ydGFsMzEEAAwAAB8AIE1vcnRhbDMyBAAMAAAgACBNb3J0YWwzMwQADAAAIQAgTW9ydGFsMzQEAAwAACIAIE1vcnRhbDM1BAAMAAAjACBNb3J0YWwzNgQADAAAJAAgTW9ydGFsMzcEAAwAACUAIE1vcnRhbDM4BAAMAAAmACBNb3J0YWwzOQQADAAAJwAgTW9ydGFsNDAEAAwAACgAIE1vcnRhbDQxBAAMAAApACBNb3J0YWw0MgQADAAAKgAgTW9ydGFsNDMEAAwAACsAIE1vcnRhbDQ0BAAMAAAsACBNb3J0YWw0NQQADAAALQAgTW9ydGFsNDYEAAwAAC4AIE1vcnRhbDQ3BAAMAAAvACBNb3J0YWw0OAQADAAAMAAgTW9ydGFsNDkEAAwAADEAIE1vcnRhbDUwBAAMAAAyACBNb3J0YWw1MQQADAAAMwAgTW9ydGFsNTIEAAwAADQAIE1vcnRhbDUzBAAMAAA1ACBNb3J0YWw1NAQADAAANgAgTW9ydGFsNTUEAAwAADcAIE1vcnRhbDU2BAAMAAA4ACBNb3J0YWw1NwQADAAAOQAgTW9ydGFsNTgEAAwAADoAIE1vcnRhbDU5BAAMAAA7ACBNb3J0YWw2MAQADAAAPAAgTW9ydGFsNjEEAAwAAD0AIE1vcnRhbDYyBAAMAAA+ACBNb3J0YWw2MwQADAAAPwAgTW9ydGFsNjQEAAwAAEAAIE1vcnRhbDY1BAAMAABBACBNb3J0YWw2NgQADAAAQgAgTW9ydGFsNjcEAAwAAEMAIE1vcnRhbDY4BAAMAABEACBNb3J0YWw2OQQADAAARQAgTW9ydGFsNzAEAAwAAEYAIE1vcnRhbDcxBAAMAABHACBNb3J0YWw3MgQADAAASAAgTW9ydGFsNzMEAAwAAEkAIE1vcnRhbDc0BAAMAABKACBNb3J0YWw3NQQADAAASwAgTW9ydGFsNzYEAAwAAEwAIE1vcnRhbDc3BAAMAABNACBNb3J0YWw3OAQADAAATgAgTW9ydGFsNzkEAAwAAE8AIE1vcnRhbDgwBAAMAABQACBNb3J0YWw4MQQADAAAUQAgTW9ydGFsODIEAAwAAFIAIE1vcnRhbDgzBAAMAABTACBNb3J0YWw4NAQADAAAVAAgTW9ydGFsODUEAAwAAFUAIE1vcnRhbDg2BAAMAABWACBNb3J0YWw4NwQADAAAVwAgTW9ydGFsODgEAAwAAFgAIE1vcnRhbDg5BAAMAABZACBNb3J0YWw5MAQADAAAWgAgTW9ydGFsOTEEAAwAAFsAIE1vcnRhbDkyBAAMAABcACBNb3J0YWw5MwQADAAAXQAgTW9ydGFsOTQEAAwAAF4AIE1vcnRhbDk1BAAMAABfACBNb3J0YWw5NgQADAAAYAAgTW9ydGFsOTcEAAwAAGEAIE1vcnRhbDk4BAAMAABiACBNb3J0YWw5OQQADAAAYwAkTW9ydGFsMTAwBAAMAABkACRNb3J0YWwxMDEEAAwAAGUAJE1vcnRhbDEwMgQADAAAZgAkTW9ydGFsMTAzBAAMAABnACRNb3J0YWwxMDQEAAwAAGgAJE1vcnRhbDEwNQQADAAAaQAkTW9ydGFsMTA2BAAMAABqACRNb3J0YWwxMDcEAAwAAGsAJE1vcnRhbDEwOAQADAAAbAAkTW9ydGFsMTA5BAAMAABtACRNb3J0YWwxMTAEAAwAAG4AJE1vcnRhbDExMQQADAAAbwAkTW9ydGFsMTEyBAAMAABwACRNb3J0YWwxMTMEAAwAAHEAJE1vcnRhbDExNAQADAAAcgAkTW9ydGFsMTE1BAAMAABzACRNb3J0YWwxMTYEAAwAAHQAJE1vcnRhbDExNwQADAAAdQAkTW9ydGFsMTE4BAAMAAB2ACRNb3J0YWwxMTkEAAwAAHcAJE1vcnRhbDEyMAQADAAAeAAkTW9ydGFsMTIxBAAMAAB5ACRNb3J0YWwxMjIEAAwAAHoAJE1vcnRhbDEyMwQADAAAewAkTW9ydGFsMTI0BAAMAAB8ACRNb3J0YWwxMjUEAAwAAH0AJE1vcnRhbDEyNgQADAAAfgAkTW9ydGFsMTI3BAAMAAB/ACRNb3J0YWwxMjgEAAwAAIAAJE1vcnRhbDEyOQQADAAAgQAkTW9ydGFsMTMwBAAMAACCACRNb3J0YWwxMzEEAAwAAIMAJE1vcnRhbDEzMgQADAAAhAAkTW9ydGFsMTMzBAAMAACFACRNb3J0YWwxMzQEAAwAAIYAJE1vcnRhbDEzNQQADAAAhwAkTW9ydGFsMTM2BAAMAACIACRNb3J0YWwxMzcEAAwAAIkAJE1vcnRhbDEzOAQADAAAigAkTW9ydGFsMTM5BAAMAACLACRNb3J0YWwxNDAEAAwAAIwAJE1vcnRhbDE0MQQADAAAjQAkTW9ydGFsMTQyBAAMAACOACRNb3J0YWwxNDMEAAwAAI8AJE1vcnRhbDE0NAQADAAAkAAkTW9ydGFsMTQ1BAAMAACRACRNb3J0YWwxNDYEAAwAAJIAJE1vcnRhbDE0NwQADAAAkwAkTW9ydGFsMTQ4BAAMAACUACRNb3J0YWwxNDkEAAwAAJUAJE1vcnRhbDE1MAQADAAAlgAkTW9ydGFsMTUxBAAMAACXACRNb3J0YWwxNTIEAAwAAJgAJE1vcnRhbDE1MwQADAAAmQAkTW9ydGFsMTU0BAAMAACaACRNb3J0YWwxNTUEAAwAAJsAJE1vcnRhbDE1NgQADAAAnAAkTW9ydGFsMTU3BAAMAACdACRNb3J0YWwxNTgEAAwAAJ4AJE1vcnRhbDE1OQQADAAAnwAkTW9ydGFsMTYwBAAMAACgACRNb3J0YWwxNjEEAAwAAKEAJE1vcnRhbDE2MgQADAAAogAkTW9ydGFsMTYzBAAMAACjACRNb3J0YWwxNjQEAAwAAKQAJE1vcnRhbDE2NQQADAAApQAkTW9ydGFsMTY2BAAMAACmACRNb3J0YWwxNjcEAAwAAKcAJE1vcnRhbDE2OAQADAAAqAAkTW9ydGFsMTY5BAAMAACpACRNb3J0YWwxNzAEAAwAAKoAJE1vcnRhbDE3MQQADAAAqwAkTW9ydGFsMTcyBAAMAACsACRNb3J0YWwxNzMEAAwAAK0AJE1vcnRhbDE3NAQADAAArgAkTW9ydGFsMTc1BAAMAACvACRNb3J0YWwxNzYEAAwAALAAJE1vcnRhbDE3NwQADAAAsQAkTW9ydGFsMTc4BAAMAACyACRNb3J0YWwxNzkEAAwAALMAJE1vcnRhbDE4MAQADAAAtAAkTW9ydGFsMTgxBAAMAAC1ACRNb3J0YWwxODIEAAwAALYAJE1vcnRhbDE4MwQADAAAtwAkTW9ydGFsMTg0BAAMAAC4ACRNb3J0YWwxODUEAAwAALkAJE1vcnRhbDE4NgQADAAAugAkTW9ydGFsMTg3BAAMAAC7ACRNb3J0YWwxODgEAAwAALwAJE1vcnRhbDE4OQQADAAAvQAkTW9ydGFsMTkwBAAMAAC+ACRNb3J0YWwxOTEEAAwAAL8AJE1vcnRhbDE5MgQADAAAwAAkTW9ydGFsMTkzBAAMAADBACRNb3J0YWwxOTQEAAwAAMIAJE1vcnRhbDE5NQQADAAAwwAkTW9ydGFsMTk2BAAMAADEACRNb3J0YWwxOTcEAAwAAMUAJE1vcnRhbDE5OAQADAAAxgAkTW9ydGFsMTk5BAAMAADHACRNb3J0YWwyMDAEAAwAAMgAJE1vcnRhbDIwMQQADAAAyQAkTW9ydGFsMjAyBAAMAADKACRNb3J0YWwyMDMEAAwAAMsAJE1vcnRhbDIwNAQADAAAzAAkTW9ydGFsMjA1BAAMAADNACRNb3J0YWwyMDYEAAwAAM4AJE1vcnRhbDIwNwQADAAAzwAkTW9ydGFsMjA4BAAMAADQACRNb3J0YWwyMDkEAAwAANEAJE1vcnRhbDIxMAQADAAA0gAkTW9ydGFsMjExBAAMAADTACRNb3J0YWwyMTIEAAwAANQAJE1vcnRhbDIxMwQADAAA1QAkTW9ydGFsMjE0BAAMAADWACRNb3J0YWwyMTUEAAwAANcAJE1vcnRhbDIxNgQADAAA2AAkTW9ydGFsMjE3BAAMAADZACRNb3J0YWwyMTgEAAwAANoAJE1vcnRhbDIxOQQADAAA2wAkTW9ydGFsMjIwBAAMAADcACRNb3J0YWwyMjEEAAwAAN0AJE1vcnRhbDIyMgQADAAA3gAkTW9ydGFsMjIzBAAMAADfACRNb3J0YWwyMjQEAAwAAOAAJE1vcnRhbDIyNQQADAAA4QAkTW9ydGFsMjI2BAAMAADiACRNb3J0YWwyMjcEAAwAAOMAJE1vcnRhbDIyOAQADAAA5AAkTW9ydGFsMjI5BAAMAADlACRNb3J0YWwyMzAEAAwAAOYAJE1vcnRhbDIzMQQADAAA5wAkTW9ydGFsMjMyBAAMAADoACRNb3J0YWwyMzMEAAwAAOkAJE1vcnRhbDIzNAQADAAA6gAkTW9ydGFsMjM1BAAMAADrACRNb3J0YWwyMzYEAAwAAOwAJE1vcnRhbDIzNwQADAAA7QAkTW9ydGFsMjM4BAAMAADuACRNb3J0YWwyMzkEAAwAAO8AJE1vcnRhbDI0MAQADAAA8AAkTW9ydGFsMjQxBAAMAADxACRNb3J0YWwyNDIEAAwAAPIAJE1vcnRhbDI0MwQADAAA8wAkTW9ydGFsMjQ0BAAMAAD0ACRNb3J0YWwyNDUEAAwAAPUAJE1vcnRhbDI0NgQADAAA9gAkTW9ydGFsMjQ3BAAMAAD3ACRNb3J0YWwyNDgEAAwAAPgAJE1vcnRhbDI0OQQADAAA+QAkTW9ydGFsMjUwBAAMAAD6ACRNb3J0YWwyNTEEAAwAAPsAJE1vcnRhbDI1MgQADAAA/AAkTW9ydGFsMjUzBAAMAAD9ACRNb3J0YWwyNTQEAAwAAP4AJE1vcnRhbDI1NQQADAAA/wAAkQcQMGZyYW1lX3N5c3RlbShleHRlbnNpb25zLGNoZWNrX25vbmNlKENoZWNrTm9uY2UEBFQAAAQAYAEgVDo6Tm9uY2UAAJUHEDBmcmFtZV9zeXN0ZW0oZXh0ZW5zaW9uczBjaGVja193ZWlnaHQsQ2hlY2tXZWlnaHQEBFQAAAAAmQcIaHBhbGxldF90cmFuc2FjdGlvbl9wYXltZW50YENoYXJnZVRyYW5zYWN0aW9uUGF5bWVudAQEVAAABACgATBCYWxhbmNlT2Y8VD4AAJ0HDFxwb2xrYWRvdF9ydW50aW1lX2NvbW1vbhhjbGFpbXNIUHJldmFsaWRhdGVBdHRlc3RzBARUAAAAAKEHCHRmcmFtZV9tZXRhZGF0YV9oYXNoX2V4dGVuc2lvbkRDaGVja01ldGFkYXRhSGFzaAQEVAAABAEQbW9kZaUHARBNb2RlAAClBwh0ZnJhbWVfbWV0YWRhdGFfaGFzaF9leHRlbnNpb24QTW9kZQABCCBEaXNhYmxlZAAAABxFbmFibGVkAAEAAKkHCDBmcmFtZV9zeXN0ZW0sQWNjb3VudEluZm8IFE5vbmNlATgsQWNjb3VudERhdGEBrQcAFAEUbm9uY2U4ARROb25jZQABJGNvbnN1bWVyczgBIFJlZkNvdW50AAEkcHJvdmlkZXJzOAEgUmVmQ291bnQAASxzdWZmaWNpZW50czgBIFJlZkNvdW50AAEQZGF0Ya0HASxBY2NvdW50RGF0YQAArQcMPHBhbGxldF9iYWxhbmNlcxR0eXBlcyxBY2NvdW50RGF0YQQcQmFsYW5jZQGkABABEGZyZWWkARxCYWxhbmNlAAEgcmVzZXJ2ZWSkARxCYWxhbmNlAAEYZnJvemVupAEcQmFsYW5jZQABFGZsYWdzsQcBKEV4dHJhRmxhZ3MAALEHDDxwYWxsZXRfYmFsYW5jZXMUdHlwZXMoRXh0cmFGbGFncwAABACkARB1MTI4AAC1Bww0ZnJhbWVfc3VwcG9ydCBkaXNwYXRjaEBQZXJEaXNwYXRjaENsYXNzBARUATUCAAwBGG5vcm1hbDUCAQRUAAEsb3BlcmF0aW9uYWw1AgEEVAABJG1hbmRhdG9yeTUCAQRUAAC5BwAAAr0HAL0HCDBmcmFtZV9zeXN0ZW0sRXZlbnRSZWNvcmQIBEUBwQcEVAE8AAwBFHBoYXNlJQkBFFBoYXNlAAEUZXZlbnTBBwEERQABGHRvcGljc1ABGFZlYzxUPgAAwQcIQHBvbGthZG90X3J1bnRpbWUwUnVudGltZUV2ZW50AAGsGFN5c3RlbQQAxQcBcGZyYW1lX3N5c3RlbTo6RXZlbnQ8UnVudGltZT4AAAAkU2NoZWR1bGVyBADtBwGAcGFsbGV0X3NjaGVkdWxlcjo6RXZlbnQ8UnVudGltZT4AAQAgUHJlaW1hZ2UEAPUHAXxwYWxsZXRfcHJlaW1hZ2U6OkV2ZW50PFJ1bnRpbWU+AAoAHEluZGljZXMEAPkHAXhwYWxsZXRfaW5kaWNlczo6RXZlbnQ8UnVudGltZT4ABAAgQmFsYW5jZXMEAP0HAXxwYWxsZXRfYmFsYW5jZXM6OkV2ZW50PFJ1bnRpbWU+AAUASFRyYW5zYWN0aW9uUGF5bWVudAQAJQgBqHBhbGxldF90cmFuc2FjdGlvbl9wYXltZW50OjpFdmVudDxSdW50aW1lPgAgABxTdGFraW5nBAApCAF4cGFsbGV0X3N0YWtpbmc6OkV2ZW50PFJ1bnRpbWU+AAcAIE9mZmVuY2VzBAAxCAFYcGFsbGV0X29mZmVuY2VzOjpFdmVudAAIAChIaXN0b3JpY2FsBAA1CAGIc2Vzc2lvbl9oaXN0b3JpY2FsOjpFdmVudDxSdW50aW1lPgAhABxTZXNzaW9uBAA5CAF4cGFsbGV0X3Nlc3Npb246OkV2ZW50PFJ1bnRpbWU+AAkAHEdyYW5kcGEEAD0IAVRwYWxsZXRfZ3JhbmRwYTo6RXZlbnQACwAgVHJlYXN1cnkEAEkIAXxwYWxsZXRfdHJlYXN1cnk6OkV2ZW50PFJ1bnRpbWU+ABMAQENvbnZpY3Rpb25Wb3RpbmcEAE0IAaBwYWxsZXRfY29udmljdGlvbl92b3Rpbmc6OkV2ZW50PFJ1bnRpbWU+ABQAJFJlZmVyZW5kYQQAUQgBgHBhbGxldF9yZWZlcmVuZGE6OkV2ZW50PFJ1bnRpbWU+ABUAJFdoaXRlbGlzdAQAWQgBgHBhbGxldF93aGl0ZWxpc3Q6OkV2ZW50PFJ1bnRpbWU+ABcAGENsYWltcwQAaQgBWGNsYWltczo6RXZlbnQ8UnVudGltZT4AGAAcVmVzdGluZwQAbQgBeHBhbGxldF92ZXN0aW5nOjpFdmVudDxSdW50aW1lPgAZABxVdGlsaXR5BABxCAFUcGFsbGV0X3V0aWxpdHk6OkV2ZW50ABoAFFByb3h5BAB1CAFwcGFsbGV0X3Byb3h5OjpFdmVudDxSdW50aW1lPgAdACBNdWx0aXNpZwQAfQgBfHBhbGxldF9tdWx0aXNpZzo6RXZlbnQ8UnVudGltZT4AHgAgQm91bnRpZXMEAIEIAXxwYWxsZXRfYm91bnRpZXM6OkV2ZW50PFJ1bnRpbWU+ACIANENoaWxkQm91bnRpZXMEAIUIAZRwYWxsZXRfY2hpbGRfYm91bnRpZXM6OkV2ZW50PFJ1bnRpbWU+ACYAaEVsZWN0aW9uUHJvdmlkZXJNdWx0aVBoYXNlBACJCAHQcGFsbGV0X2VsZWN0aW9uX3Byb3ZpZGVyX211bHRpX3BoYXNlOjpFdmVudDxSdW50aW1lPgAkACRWb3Rlckxpc3QEAJkIAfRwYWxsZXRfYmFnc19saXN0OjpFdmVudDxSdW50aW1lLCBwYWxsZXRfYmFnc19saXN0OjpJbnN0YW5jZTE+ACUAPE5vbWluYXRpb25Qb29scwQAnQgBnHBhbGxldF9ub21pbmF0aW9uX3Bvb2xzOjpFdmVudDxSdW50aW1lPgAnACxGYXN0VW5zdGFrZQQApQgBjHBhbGxldF9mYXN0X3Vuc3Rha2U6OkV2ZW50PFJ1bnRpbWU+ACgAQERlbGVnYXRlZFN0YWtpbmcEAKkIAaBwYWxsZXRfZGVsZWdhdGVkX3N0YWtpbmc6OkV2ZW50PFJ1bnRpbWU+ACkAPFN0YWtpbmdBaENsaWVudAQArQgBuHBhbGxldF9zdGFraW5nX2FzeW5jX2FoX2NsaWVudDo6RXZlbnQ8UnVudGltZT4AKgA0UGFyYUluY2x1c2lvbgQAuQgBkHBhcmFjaGFpbnNfaW5jbHVzaW9uOjpFdmVudDxSdW50aW1lPgA1ABRQYXJhcwQAyQgBgHBhcmFjaGFpbnNfcGFyYXM6OkV2ZW50PFJ1bnRpbWU+ADgAEEhybXAEAM0IAXxwYXJhY2hhaW5zX2hybXA6OkV2ZW50PFJ1bnRpbWU+ADwANFBhcmFzRGlzcHV0ZXMEANEIAYxwYXJhY2hhaW5zX2Rpc3B1dGVzOjpFdmVudDxSdW50aW1lPgA+ACBPbkRlbWFuZAQA3QgBkHBhcmFjaGFpbnNfb25fZGVtYW5kOjpFdmVudDxSdW50aW1lPgBAACRSZWdpc3RyYXIEAOEIAXxwYXJhc19yZWdpc3RyYXI6OkV2ZW50PFJ1bnRpbWU+AEYAFFNsb3RzBADlCAFUc2xvdHM6OkV2ZW50PFJ1bnRpbWU+AEcAIEF1Y3Rpb25zBADpCAFgYXVjdGlvbnM6OkV2ZW50PFJ1bnRpbWU+AEgAJENyb3dkbG9hbgQA7QgBZGNyb3dkbG9hbjo6RXZlbnQ8UnVudGltZT4ASQAgQ29yZXRpbWUEAPEIAWBjb3JldGltZTo6RXZlbnQ8UnVudGltZT4ASgBIU3RhdGVUcmllTWlncmF0aW9uBAD1CAGscGFsbGV0X3N0YXRlX3RyaWVfbWlncmF0aW9uOjpFdmVudDxSdW50aW1lPgBiACRYY21QYWxsZXQEAAEJAWhwYWxsZXRfeGNtOjpFdmVudDxSdW50aW1lPgBjADBNZXNzYWdlUXVldWUEABEJAZBwYWxsZXRfbWVzc2FnZV9xdWV1ZTo6RXZlbnQ8UnVudGltZT4AZAAkQXNzZXRSYXRlBAAZCQGEcGFsbGV0X2Fzc2V0X3JhdGU6OkV2ZW50PFJ1bnRpbWU+AGUAKFJjTWlncmF0b3IEAB0JAYhwYWxsZXRfcmNfbWlncmF0b3I6OkV2ZW50PFJ1bnRpbWU+AP8AAMUHDDBmcmFtZV9zeXN0ZW0YcGFsbGV0FEV2ZW50BARUAAEgQEV4dHJpbnNpY1N1Y2Nlc3MEATRkaXNwYXRjaF9pbmZvyQcBRERpc3BhdGNoRXZlbnRJbmZvAAAEkEFuIGV4dHJpbnNpYyBjb21wbGV0ZWQgc3VjY2Vzc2Z1bGx5LjxFeHRyaW5zaWNGYWlsZWQIAThkaXNwYXRjaF9lcnJvctUHATREaXNwYXRjaEVycm9yAAE0ZGlzcGF0Y2hfaW5mb8kHAUREaXNwYXRjaEV2ZW50SW5mbwABBFBBbiBleHRyaW5zaWMgZmFpbGVkLixDb2RlVXBkYXRlZAACBFBgOmNvZGVgIHdhcyB1cGRhdGVkLihOZXdBY2NvdW50BAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAADBGhBIG5ldyBhY2NvdW50IHdhcyBjcmVhdGVkLjRLaWxsZWRBY2NvdW50BAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAAEBFhBbiBhY2NvdW50IHdhcyByZWFwZWQuIFJlbWFya2VkCAEYc2VuZGVyBAEwVDo6QWNjb3VudElkAAEQaGFzaDwBHFQ6Okhhc2gABQRwT24gb24tY2hhaW4gcmVtYXJrIGhhcHBlbmVkLkRVcGdyYWRlQXV0aG9yaXplZAgBJGNvZGVfaGFzaDwBHFQ6Okhhc2gAATRjaGVja192ZXJzaW9umAEQYm9vbAAGBGhBbiB1cGdyYWRlIHdhcyBhdXRob3JpemVkLoBSZWplY3RlZEludmFsaWRBdXRob3JpemVkVXBncmFkZQgBJGNvZGVfaGFzaDwBHFQ6Okhhc2gAARRlcnJvctUHATREaXNwYXRjaEVycm9yAAcEEQFBbiBpbnZhbGlkIGF1dGhvcml6ZWQgdXBncmFkZSB3YXMgcmVqZWN0ZWQgd2hpbGUgdHJ5aW5nIHRvIGFwcGx5IGl0LgRwRXZlbnQgZm9yIHRoZSBTeXN0ZW0gcGFsbGV0LskHCDBmcmFtZV9zeXN0ZW1ERGlzcGF0Y2hFdmVudEluZm8AAAwBGHdlaWdodDUCARhXZWlnaHQAARRjbGFzc80HATREaXNwYXRjaENsYXNzAAEgcGF5c19mZWXRBwEQUGF5cwAAzQcMNGZyYW1lX3N1cHBvcnQgZGlzcGF0Y2g0RGlzcGF0Y2hDbGFzcwABDBhOb3JtYWwAAAAsT3BlcmF0aW9uYWwAAQAkTWFuZGF0b3J5AAIAANEHDDRmcmFtZV9zdXBwb3J0IGRpc3BhdGNoEFBheXMAAQgMWWVzAAAACE5vAAEAANUHCChzcF9ydW50aW1lNERpc3BhdGNoRXJyb3IAATwUT3RoZXIAAAAwQ2Fubm90TG9va3VwAAEAJEJhZE9yaWdpbgACABhNb2R1bGUEANkHASxNb2R1bGVFcnJvcgADAERDb25zdW1lclJlbWFpbmluZwAEACxOb1Byb3ZpZGVycwAFAEBUb29NYW55Q29uc3VtZXJzAAYAFFRva2VuBADdBwEoVG9rZW5FcnJvcgAHAChBcml0aG1ldGljBADhBwE8QXJpdGhtZXRpY0Vycm9yAAgANFRyYW5zYWN0aW9uYWwEAOUHAUhUcmFuc2FjdGlvbmFsRXJyb3IACQAkRXhoYXVzdGVkAAoAKENvcnJ1cHRpb24ACwAsVW5hdmFpbGFibGUADAA4Um9vdE5vdEFsbG93ZWQADQAQVHJpZQQA6QcBJFRyaWVFcnJvcgAOAADZBwgoc3BfcnVudGltZSxNb2R1bGVFcnJvcgAACAEUaW5kZXgMAQh1OAABFGVycm9ycAGMW3U4OyBNQVhfTU9EVUxFX0VSUk9SX0VOQ09ERURfU0laRV0AAN0HCChzcF9ydW50aW1lKFRva2VuRXJyb3IAAShARnVuZHNVbmF2YWlsYWJsZQAAADBPbmx5UHJvdmlkZXIAAQAwQmVsb3dNaW5pbXVtAAIAMENhbm5vdENyZWF0ZQADADBVbmtub3duQXNzZXQABAAYRnJvemVuAAUALFVuc3VwcG9ydGVkAAYAQENhbm5vdENyZWF0ZUhvbGQABwA0Tm90RXhwZW5kYWJsZQAIABxCbG9ja2VkAAkAAOEHCDRzcF9hcml0aG1ldGljPEFyaXRobWV0aWNFcnJvcgABDCRVbmRlcmZsb3cAAAAgT3ZlcmZsb3cAAQA4RGl2aXNpb25CeVplcm8AAgAA5QcIKHNwX3J1bnRpbWVIVHJhbnNhY3Rpb25hbEVycm9yAAEIMExpbWl0UmVhY2hlZAAAABxOb0xheWVyAAEAAOkHDChzcF9ydW50aW1lMHByb3ZpbmdfdHJpZSRUcmllRXJyb3IAAThASW52YWxpZFN0YXRlUm9vdAAAAEhJbmNvbXBsZXRlRGF0YWJhc2UAAQBQVmFsdWVBdEluY29tcGxldGVLZXkAAgAwRGVjb2RlckVycm9yAAMALEludmFsaWRIYXNoAAQAMER1cGxpY2F0ZUtleQAFADhFeHRyYW5lb3VzTm9kZQAGADxFeHRyYW5lb3VzVmFsdWUABwBcRXh0cmFuZW91c0hhc2hSZWZlcmVuY2UACABUSW52YWxpZENoaWxkUmVmZXJlbmNlAAkANFZhbHVlTWlzbWF0Y2gACgA8SW5jb21wbGV0ZVByb29mAAsAMFJvb3RNaXNtYXRjaAAMACxEZWNvZGVFcnJvcgANAADtBwxAcGFsbGV0X3NjaGVkdWxlchhwYWxsZXQURXZlbnQEBFQAASgkU2NoZWR1bGVkCAEQd2hlbjgBREJsb2NrTnVtYmVyRm9yPFQ+AAEUaW5kZXg4AQx1MzIAAARQU2NoZWR1bGVkIHNvbWUgdGFzay4gQ2FuY2VsZWQIARB3aGVuOAFEQmxvY2tOdW1iZXJGb3I8VD4AARRpbmRleDgBDHUzMgABBExDYW5jZWxlZCBzb21lIHRhc2suKERpc3BhdGNoZWQMARB0YXNrSAF4VGFza0FkZHJlc3M8QmxvY2tOdW1iZXJGb3I8VD4+AAEIaWQNBwFAT3B0aW9uPFRhc2tOYW1lPgABGHJlc3VsdPEHAThEaXNwYXRjaFJlc3VsdAACBFREaXNwYXRjaGVkIHNvbWUgdGFzay4gUmV0cnlTZXQQARB0YXNrSAF4VGFza0FkZHJlc3M8QmxvY2tOdW1iZXJGb3I8VD4+AAEIaWQNBwFAT3B0aW9uPFRhc2tOYW1lPgABGHBlcmlvZDgBREJsb2NrTnVtYmVyRm9yPFQ+AAEccmV0cmllcwwBCHU4AAMEoFNldCBhIHJldHJ5IGNvbmZpZ3VyYXRpb24gZm9yIHNvbWUgdGFzay44UmV0cnlDYW5jZWxsZWQIARB0YXNrSAF4VGFza0FkZHJlc3M8QmxvY2tOdW1iZXJGb3I8VD4+AAEIaWQNBwFAT3B0aW9uPFRhc2tOYW1lPgAEBKxDYW5jZWwgYSByZXRyeSBjb25maWd1cmF0aW9uIGZvciBzb21lIHRhc2suPENhbGxVbmF2YWlsYWJsZQgBEHRhc2tIAXhUYXNrQWRkcmVzczxCbG9ja051bWJlckZvcjxUPj4AAQhpZA0HAUBPcHRpb248VGFza05hbWU+AAUEKQFUaGUgY2FsbCBmb3IgdGhlIHByb3ZpZGVkIGhhc2ggd2FzIG5vdCBmb3VuZCBzbyB0aGUgdGFzayBoYXMgYmVlbiBhYm9ydGVkLjhQZXJpb2RpY0ZhaWxlZAgBEHRhc2tIAXhUYXNrQWRkcmVzczxCbG9ja051bWJlckZvcjxUPj4AAQhpZA0HAUBPcHRpb248VGFza05hbWU+AAYEPQFUaGUgZ2l2ZW4gdGFzayB3YXMgdW5hYmxlIHRvIGJlIHJlbmV3ZWQgc2luY2UgdGhlIGFnZW5kYSBpcyBmdWxsIGF0IHRoYXQgYmxvY2suLFJldHJ5RmFpbGVkCAEQdGFza0gBeFRhc2tBZGRyZXNzPEJsb2NrTnVtYmVyRm9yPFQ+PgABCGlkDQcBQE9wdGlvbjxUYXNrTmFtZT4ABwhdAVRoZSBnaXZlbiB0YXNrIHdhcyB1bmFibGUgdG8gYmUgcmV0cmllZCBzaW5jZSB0aGUgYWdlbmRhIGlzIGZ1bGwgYXQgdGhhdCBibG9jayBvciB0aGVyZZx3YXMgbm90IGVub3VnaCB3ZWlnaHQgdG8gcmVzY2hlZHVsZSBpdC5UUGVybWFuZW50bHlPdmVyd2VpZ2h0CAEQdGFza0gBeFRhc2tBZGRyZXNzPEJsb2NrTnVtYmVyRm9yPFQ+PgABCGlkDQcBQE9wdGlvbjxUYXNrTmFtZT4ACATwVGhlIGdpdmVuIHRhc2sgY2FuIG5ldmVyIGJlIGV4ZWN1dGVkIHNpbmNlIGl0IGlzIG92ZXJ3ZWlnaHQuQEFnZW5kYUluY29tcGxldGUEARB3aGVuOAFEQmxvY2tOdW1iZXJGb3I8VD4ACQSEQWdlbmRhIGlzIGluY29tcGxldGUgZnJvbSBgd2hlbmAuBDBFdmVudHMgdHlwZS7xBwQYUmVzdWx0CARUARAERQHVBwEICE9rBAAQAAAAAAxFcnIEANUHAAABAAD1Bww8cGFsbGV0X3ByZWltYWdlGHBhbGxldBRFdmVudAQEVAABDBROb3RlZAQBEGhhc2g8ARxUOjpIYXNoAAAEaEEgcHJlaW1hZ2UgaGFzIGJlZW4gbm90ZWQuJFJlcXVlc3RlZAQBEGhhc2g8ARxUOjpIYXNoAAEEeEEgcHJlaW1hZ2UgaGFzIGJlZW4gcmVxdWVzdGVkLhxDbGVhcmVkBAEQaGFzaDwBHFQ6Okhhc2gAAgRsQSBwcmVpbWFnZSBoYXMgYmVuIGNsZWFyZWQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0+QcMOHBhbGxldF9pbmRpY2VzGHBhbGxldBRFdmVudAQEVAABEDRJbmRleEFzc2lnbmVkCAEMd2hvBAEwVDo6QWNjb3VudElkAAEUaW5kZXg4ATxUOjpBY2NvdW50SW5kZXgAAAR0QSBhY2NvdW50IGluZGV4IHdhcyBhc3NpZ25lZC4oSW5kZXhGcmVlZAQBFGluZGV4OAE8VDo6QWNjb3VudEluZGV4AAEEvEEgYWNjb3VudCBpbmRleCBoYXMgYmVlbiBmcmVlZCB1cCAodW5hc3NpZ25lZCkuLEluZGV4RnJvemVuCAEUaW5kZXg4ATxUOjpBY2NvdW50SW5kZXgAAQx3aG8EATBUOjpBY2NvdW50SWQAAgToQSBhY2NvdW50IGluZGV4IGhhcyBiZWVuIGZyb3plbiB0byBpdHMgY3VycmVudCBhY2NvdW50IElELjBEZXBvc2l0UG9rZWQQAQx3aG8EATBUOjpBY2NvdW50SWQAARRpbmRleDgBPFQ6OkFjY291bnRJbmRleAABLG9sZF9kZXBvc2l0pAEwQmFsYW5jZU9mPFQ+AAEsbmV3X2RlcG9zaXSkATBCYWxhbmNlT2Y8VD4AAwToQSBkZXBvc2l0IHRvIHJlc2VydmUgYW4gaW5kZXggaGFzIGJlZW4gcG9rZWQvcmVjb25zaWRlcmVkLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldP0HDDxwYWxsZXRfYmFsYW5jZXMYcGFsbGV0FEV2ZW50CARUAARJAAF4HEVuZG93ZWQIARxhY2NvdW50BAEwVDo6QWNjb3VudElkAAEwZnJlZV9iYWxhbmNlpAEoVDo6QmFsYW5jZQAABLhBbiBhY2NvdW50IHdhcyBjcmVhdGVkIHdpdGggc29tZSBmcmVlIGJhbGFuY2UuIER1c3RMb3N0CAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAABGGFtb3VudKQBKFQ6OkJhbGFuY2UAAQg9AUFuIGFjY291bnQgd2FzIHJlbW92ZWQgd2hvc2UgYmFsYW5jZSB3YXMgbm9uLXplcm8gYnV0IGJlbG93IEV4aXN0ZW50aWFsRGVwb3NpdCx4cmVzdWx0aW5nIGluIGFuIG91dHJpZ2h0IGxvc3MuIFRyYW5zZmVyDAEQZnJvbQQBMFQ6OkFjY291bnRJZAABCHRvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50pAEoVDo6QmFsYW5jZQACBExUcmFuc2ZlciBzdWNjZWVkZWQuKEJhbGFuY2VTZXQIAQx3aG8EATBUOjpBY2NvdW50SWQAARBmcmVlpAEoVDo6QmFsYW5jZQADBGhBIGJhbGFuY2Ugd2FzIHNldCBieSByb290LiBSZXNlcnZlZAgBDHdobwQBMFQ6OkFjY291bnRJZAABGGFtb3VudKQBKFQ6OkJhbGFuY2UABATgU29tZSBiYWxhbmNlIHdhcyByZXNlcnZlZCAobW92ZWQgZnJvbSBmcmVlIHRvIHJlc2VydmVkKS4oVW5yZXNlcnZlZAgBDHdobwQBMFQ6OkFjY291bnRJZAABGGFtb3VudKQBKFQ6OkJhbGFuY2UABQToU29tZSBiYWxhbmNlIHdhcyB1bnJlc2VydmVkIChtb3ZlZCBmcm9tIHJlc2VydmVkIHRvIGZyZWUpLkhSZXNlcnZlUmVwYXRyaWF0ZWQQARBmcm9tBAEwVDo6QWNjb3VudElkAAEIdG8EATBUOjpBY2NvdW50SWQAARhhbW91bnSkAShUOjpCYWxhbmNlAAFIZGVzdGluYXRpb25fc3RhdHVzAQgBGFN0YXR1cwAGCE0BU29tZSBiYWxhbmNlIHdhcyBtb3ZlZCBmcm9tIHRoZSByZXNlcnZlIG9mIHRoZSBmaXJzdCBhY2NvdW50IHRvIHRoZSBzZWNvbmQgYWNjb3VudC7YRmluYWwgYXJndW1lbnQgaW5kaWNhdGVzIHRoZSBkZXN0aW5hdGlvbiBiYWxhbmNlIHR5cGUuHERlcG9zaXQIAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnSkAShUOjpCYWxhbmNlAAcE2FNvbWUgYW1vdW50IHdhcyBkZXBvc2l0ZWQgKGUuZy4gZm9yIHRyYW5zYWN0aW9uIGZlZXMpLiBXaXRoZHJhdwgBDHdobwQBMFQ6OkFjY291bnRJZAABGGFtb3VudKQBKFQ6OkJhbGFuY2UACAQdAVNvbWUgYW1vdW50IHdhcyB3aXRoZHJhd24gZnJvbSB0aGUgYWNjb3VudCAoZS5nLiBmb3IgdHJhbnNhY3Rpb24gZmVlcykuHFNsYXNoZWQIAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnSkAShUOjpCYWxhbmNlAAkEAQFTb21lIGFtb3VudCB3YXMgcmVtb3ZlZCBmcm9tIHRoZSBhY2NvdW50IChlLmcuIGZvciBtaXNiZWhhdmlvcikuGE1pbnRlZAgBDHdobwQBMFQ6OkFjY291bnRJZAABGGFtb3VudKQBKFQ6OkJhbGFuY2UACgScU29tZSBhbW91bnQgd2FzIG1pbnRlZCBpbnRvIGFuIGFjY291bnQuME1pbnRlZENyZWRpdAQBGGFtb3VudKQBKFQ6OkJhbGFuY2UACwTgU29tZSBjcmVkaXQgd2FzIGJhbGFuY2VkIGFuZCBhZGRlZCB0byB0aGUgVG90YWxJc3N1YW5jZS4YQnVybmVkCAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50pAEoVDo6QmFsYW5jZQAMBJxTb21lIGFtb3VudCB3YXMgYnVybmVkIGZyb20gYW4gYWNjb3VudC4oQnVybmVkRGVidAQBGGFtb3VudKQBKFQ6OkJhbGFuY2UADQTMU29tZSBkZWJ0IGhhcyBiZWVuIGRyb3BwZWQgZnJvbSB0aGUgVG90YWwgSXNzdWFuY2UuJFN1c3BlbmRlZAgBDHdobwQBMFQ6OkFjY291bnRJZAABGGFtb3VudKQBKFQ6OkJhbGFuY2UADgQVAVNvbWUgYW1vdW50IHdhcyBzdXNwZW5kZWQgZnJvbSBhbiBhY2NvdW50IChpdCBjYW4gYmUgcmVzdG9yZWQgbGF0ZXIpLiBSZXN0b3JlZAgBDHdobwQBMFQ6OkFjY291bnRJZAABGGFtb3VudKQBKFQ6OkJhbGFuY2UADwSkU29tZSBhbW91bnQgd2FzIHJlc3RvcmVkIGludG8gYW4gYWNjb3VudC4gVXBncmFkZWQEAQx3aG8EATBUOjpBY2NvdW50SWQAEARgQW4gYWNjb3VudCB3YXMgdXBncmFkZWQuGElzc3VlZAQBGGFtb3VudKQBKFQ6OkJhbGFuY2UAEQQtAVRvdGFsIGlzc3VhbmNlIHdhcyBpbmNyZWFzZWQgYnkgYGFtb3VudGAsIGNyZWF0aW5nIGEgY3JlZGl0IHRvIGJlIGJhbGFuY2VkLiRSZXNjaW5kZWQEARhhbW91bnSkAShUOjpCYWxhbmNlABIEJQFUb3RhbCBpc3N1YW5jZSB3YXMgZGVjcmVhc2VkIGJ5IGBhbW91bnRgLCBjcmVhdGluZyBhIGRlYnQgdG8gYmUgYmFsYW5jZWQuGExvY2tlZAgBDHdobwQBMFQ6OkFjY291bnRJZAABGGFtb3VudKQBKFQ6OkJhbGFuY2UAEwRgU29tZSBiYWxhbmNlIHdhcyBsb2NrZWQuIFVubG9ja2VkCAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50pAEoVDo6QmFsYW5jZQAUBGhTb21lIGJhbGFuY2Ugd2FzIHVubG9ja2VkLhhGcm96ZW4IAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnSkAShUOjpCYWxhbmNlABUEYFNvbWUgYmFsYW5jZSB3YXMgZnJvemVuLhhUaGF3ZWQIAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnSkAShUOjpCYWxhbmNlABYEYFNvbWUgYmFsYW5jZSB3YXMgdGhhd2VkLkxUb3RhbElzc3VhbmNlRm9yY2VkCAEMb2xkpAEoVDo6QmFsYW5jZQABDG5ld6QBKFQ6OkJhbGFuY2UAFwSsVGhlIGBUb3RhbElzc3VhbmNlYCB3YXMgZm9yY2VmdWxseSBjaGFuZ2VkLhBIZWxkDAEYcmVhc29uBQgBUFQ6OlJ1bnRpbWVIb2xkUmVhc29uAAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50pAEoVDo6QmFsYW5jZQAYBIBTb21lIGJhbGFuY2Ugd2FzIHBsYWNlZCBvbiBob2xkLihCdXJuZWRIZWxkDAEYcmVhc29uBQgBUFQ6OlJ1bnRpbWVIb2xkUmVhc29uAAEMd2hvBAEwVDo6QWNjb3VudElkAAEYYW1vdW50pAEoVDo6QmFsYW5jZQAZBKBIZWxkIGJhbGFuY2Ugd2FzIGJ1cm5lZCBmcm9tIGFuIGFjY291bnQuOFRyYW5zZmVyT25Ib2xkEAEYcmVhc29uBQgBUFQ6OlJ1bnRpbWVIb2xkUmVhc29uAAEYc291cmNlBAEwVDo6QWNjb3VudElkAAEQZGVzdAQBMFQ6OkFjY291bnRJZAABGGFtb3VudKQBKFQ6OkJhbGFuY2UAGgQVAUEgdHJhbnNmZXIgb2YgYGFtb3VudGAgb24gaG9sZCBmcm9tIGBzb3VyY2VgIHRvIGBkZXN0YCB3YXMgaW5pdGlhdGVkLjxUcmFuc2ZlckFuZEhvbGQQARhyZWFzb24FCAFQVDo6UnVudGltZUhvbGRSZWFzb24AARhzb3VyY2UEATBUOjpBY2NvdW50SWQAARBkZXN0BAEwVDo6QWNjb3VudElkAAEsdHJhbnNmZXJyZWSkAShUOjpCYWxhbmNlABsECQFUaGUgYHRyYW5zZmVycmVkYCBiYWxhbmNlIGlzIHBsYWNlZCBvbiBob2xkIGF0IHRoZSBgZGVzdGAgYWNjb3VudC4gUmVsZWFzZWQMARhyZWFzb24FCAFQVDo6UnVudGltZUhvbGRSZWFzb24AAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnSkAShUOjpCYWxhbmNlABwEkFNvbWUgYmFsYW5jZSB3YXMgcmVsZWFzZWQgZnJvbSBob2xkLihVbmV4cGVjdGVkBAAhCAE4VW5leHBlY3RlZEtpbmQAHQSwQW4gdW5leHBlY3RlZC9kZWZlbnNpdmUgZXZlbnQgd2FzIHRyaWdnZXJlZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXQBCBQ0ZnJhbWVfc3VwcG9ydBh0cmFpdHMYdG9rZW5zEG1pc2M0QmFsYW5jZVN0YXR1cwABCBBGcmVlAAAAIFJlc2VydmVkAAEAAAUICEBwb2xrYWRvdF9ydW50aW1lRFJ1bnRpbWVIb2xkUmVhc29uAAEYIFByZWltYWdlBAAJCAFscGFsbGV0X3ByZWltYWdlOjpIb2xkUmVhc29uAAoAHFN0YWtpbmcEAA0IAWhwYWxsZXRfc3Rha2luZzo6SG9sZFJlYXNvbgAHABxTZXNzaW9uBAARCAFocGFsbGV0X3Nlc3Npb246OkhvbGRSZWFzb24ACQBARGVsZWdhdGVkU3Rha2luZwQAFQgBkHBhbGxldF9kZWxlZ2F0ZWRfc3Rha2luZzo6SG9sZFJlYXNvbgApAEhTdGF0ZVRyaWVNaWdyYXRpb24EABkIAZxwYWxsZXRfc3RhdGVfdHJpZV9taWdyYXRpb246OkhvbGRSZWFzb24AYgAkWGNtUGFsbGV0BAAdCAFYcGFsbGV0X3hjbTo6SG9sZFJlYXNvbgBjAAAJCAw8cGFsbGV0X3ByZWltYWdlGHBhbGxldChIb2xkUmVhc29uAAEEIFByZWltYWdlAAAAAA0IEDhwYWxsZXRfc3Rha2luZxhwYWxsZXQYcGFsbGV0KEhvbGRSZWFzb24AAQQcU3Rha2luZwAAAAARCAw4cGFsbGV0X3Nlc3Npb24YcGFsbGV0KEhvbGRSZWFzb24AAQQQS2V5cwAAAAAVCAxgcGFsbGV0X2RlbGVnYXRlZF9zdGFraW5nGHBhbGxldChIb2xkUmVhc29uAAEERFN0YWtpbmdEZWxlZ2F0aW9uAAAAABkIDGxwYWxsZXRfc3RhdGVfdHJpZV9taWdyYXRpb24YcGFsbGV0KEhvbGRSZWFzb24AAQQ8U2xhc2hGb3JNaWdyYXRlAAAAAB0IDChwYWxsZXRfeGNtGHBhbGxldChIb2xkUmVhc29uAAEEOEF1dGhvcml6ZUFsaWFzAAAAACEIDDxwYWxsZXRfYmFsYW5jZXMYcGFsbGV0OFVuZXhwZWN0ZWRLaW5kAAEIOEJhbGFuY2VVcGRhdGVkAAAAVEZhaWxlZFRvTXV0YXRlQWNjb3VudAABAAAlCAxocGFsbGV0X3RyYW5zYWN0aW9uX3BheW1lbnQYcGFsbGV0FEV2ZW50BARUAAEESFRyYW5zYWN0aW9uRmVlUGFpZAwBDHdobwQBMFQ6OkFjY291bnRJZAABKGFjdHVhbF9mZWWkATBCYWxhbmNlT2Y8VD4AAQx0aXCkATBCYWxhbmNlT2Y8VD4AAAhZAUEgdHJhbnNhY3Rpb24gZmVlIGBhY3R1YWxfZmVlYCwgb2Ygd2hpY2ggYHRpcGAgd2FzIGFkZGVkIHRvIHRoZSBtaW5pbXVtIGluY2x1c2lvbiBmZWUsXGhhcyBiZWVuIHBhaWQgYnkgYHdob2AuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0KQgQOHBhbGxldF9zdGFraW5nGHBhbGxldBhwYWxsZXQURXZlbnQEBFQAAUwcRXJhUGFpZAwBJGVyYV9pbmRleDgBIEVyYUluZGV4AAFAdmFsaWRhdG9yX3BheW91dKQBMEJhbGFuY2VPZjxUPgABJHJlbWFpbmRlcqQBMEJhbGFuY2VPZjxUPgAACFUBVGhlIGVyYSBwYXlvdXQgaGFzIGJlZW4gc2V0OyB0aGUgZmlyc3QgYmFsYW5jZSBpcyB0aGUgdmFsaWRhdG9yLXBheW91dDsgdGhlIHNlY29uZCBpc8B0aGUgcmVtYWluZGVyIGZyb20gdGhlIG1heGltdW0gYW1vdW50IG9mIHJld2FyZC4gUmV3YXJkZWQMARRzdGFzaAQBMFQ6OkFjY291bnRJZAABEGRlc3S0AXxSZXdhcmREZXN0aW5hdGlvbjxUOjpBY2NvdW50SWQ+AAEYYW1vdW50pAEwQmFsYW5jZU9mPFQ+AAEEDQFUaGUgbm9taW5hdG9yIGhhcyBiZWVuIHJld2FyZGVkIGJ5IHRoaXMgYW1vdW50IHRvIHRoaXMgZGVzdGluYXRpb24uHFNsYXNoZWQIARhzdGFrZXIEATBUOjpBY2NvdW50SWQAARhhbW91bnSkATBCYWxhbmNlT2Y8VD4AAgQdAUEgc3Rha2VyICh2YWxpZGF0b3Igb3Igbm9taW5hdG9yKSBoYXMgYmVlbiBzbGFzaGVkIGJ5IHRoZSBnaXZlbiBhbW91bnQuNFNsYXNoUmVwb3J0ZWQMASR2YWxpZGF0b3IEATBUOjpBY2NvdW50SWQAASBmcmFjdGlvbsABHFBlcmJpbGwAASRzbGFzaF9lcmE4ASBFcmFJbmRleAADCFkBQSBzbGFzaCBmb3IgdGhlIGdpdmVuIHZhbGlkYXRvciwgZm9yIHRoZSBnaXZlbiBwZXJjZW50YWdlIG9mIHRoZWlyIHN0YWtlLCBhdCB0aGUgZ2l2ZW5UZXJhIGFzIGJlZW4gcmVwb3J0ZWQuaE9sZFNsYXNoaW5nUmVwb3J0RGlzY2FyZGVkBAE0c2Vzc2lvbl9pbmRleDgBMFNlc3Npb25JbmRleAAECBkBQW4gb2xkIHNsYXNoaW5nIHJlcG9ydCBmcm9tIGEgcHJpb3IgZXJhIHdhcyBkaXNjYXJkZWQgYmVjYXVzZSBpdCBjb3VsZERub3QgYmUgcHJvY2Vzc2VkLjhTdGFrZXJzRWxlY3RlZAAFBIRBIG5ldyBzZXQgb2Ygc3Rha2VycyB3YXMgZWxlY3RlZC4YQm9uZGVkCAEUc3Rhc2gEATBUOjpBY2NvdW50SWQAARhhbW91bnSkATBCYWxhbmNlT2Y8VD4ABhDQQW4gYWNjb3VudCBoYXMgYm9uZGVkIHRoaXMgYW1vdW50LiBcW3N0YXNoLCBhbW91bnRcXQBNAU5PVEU6IFRoaXMgZXZlbnQgaXMgb25seSBlbWl0dGVkIHdoZW4gZnVuZHMgYXJlIGJvbmRlZCB2aWEgYSBkaXNwYXRjaGFibGUuIE5vdGFibHksIQFpdCB3aWxsIG5vdCBiZSBlbWl0dGVkIGZvciBzdGFraW5nIHJld2FyZHMgd2hlbiB0aGV5IGFyZSBhZGRlZCB0byBzdGFrZS4gVW5ib25kZWQIARRzdGFzaAQBMFQ6OkFjY291bnRJZAABGGFtb3VudKQBMEJhbGFuY2VPZjxUPgAHBJBBbiBhY2NvdW50IGhhcyB1bmJvbmRlZCB0aGlzIGFtb3VudC4kV2l0aGRyYXduCAEUc3Rhc2gEATBUOjpBY2NvdW50SWQAARhhbW91bnSkATBCYWxhbmNlT2Y8VD4ACAhZAUFuIGFjY291bnQgaGFzIGNhbGxlZCBgd2l0aGRyYXdfdW5ib25kZWRgIGFuZCByZW1vdmVkIHVuYm9uZGluZyBjaHVua3Mgd29ydGggYEJhbGFuY2VgZGZyb20gdGhlIHVubG9ja2luZyBxdWV1ZS4YS2lja2VkCAEkbm9taW5hdG9yBAEwVDo6QWNjb3VudElkAAEUc3Rhc2gEATBUOjpBY2NvdW50SWQACQS0QSBub21pbmF0b3IgaGFzIGJlZW4ga2lja2VkIGZyb20gYSB2YWxpZGF0b3IuVFN0YWtpbmdFbGVjdGlvbkZhaWxlZAAKBKxUaGUgZWxlY3Rpb24gZmFpbGVkLiBObyBuZXcgZXJhIGlzIHBsYW5uZWQuHENoaWxsZWQEARRzdGFzaAQBMFQ6OkFjY291bnRJZAALBCEBQW4gYWNjb3VudCBoYXMgc3RvcHBlZCBwYXJ0aWNpcGF0aW5nIGFzIGVpdGhlciBhIHZhbGlkYXRvciBvciBub21pbmF0b3IuNFBheW91dFN0YXJ0ZWQQASRlcmFfaW5kZXg4ASBFcmFJbmRleAABPHZhbGlkYXRvcl9zdGFzaAQBMFQ6OkFjY291bnRJZAABEHBhZ2U4ARBQYWdlAAEQbmV4dOUBATBPcHRpb248UGFnZT4ADARZAUEgUGFnZSBvZiBzdGFrZXJzIHJld2FyZHMgYXJlIGdldHRpbmcgcGFpZC4gYG5leHRgIGlzIGBOb25lYCBpZiBhbGwgcGFnZXMgYXJlIGNsYWltZWQuRFZhbGlkYXRvclByZWZzU2V0CAEUc3Rhc2gEATBUOjpBY2NvdW50SWQAARRwcmVmc7gBOFZhbGlkYXRvclByZWZzAA0EmEEgdmFsaWRhdG9yIGhhcyBzZXQgdGhlaXIgcHJlZmVyZW5jZXMuaFNuYXBzaG90Vm90ZXJzU2l6ZUV4Y2VlZGVkBAEQc2l6ZTgBDHUzMgAOBGhWb3RlcnMgc2l6ZSBsaW1pdCByZWFjaGVkLmxTbmFwc2hvdFRhcmdldHNTaXplRXhjZWVkZWQEARBzaXplOAEMdTMyAA8EbFRhcmdldHMgc2l6ZSBsaW1pdCByZWFjaGVkLiBGb3JjZUVyYQQBEG1vZGUtCAEcRm9yY2luZwAQBHRBIG5ldyBmb3JjZSBlcmEgbW9kZSB3YXMgc2V0LmRDb250cm9sbGVyQmF0Y2hEZXByZWNhdGVkBAEgZmFpbHVyZXM4AQx1MzIAEQSkUmVwb3J0IG9mIGEgY29udHJvbGxlciBiYXRjaCBkZXByZWNhdGlvbi5AQ3VycmVuY3lNaWdyYXRlZAgBFHN0YXNoBAEwVDo6QWNjb3VudElkAAE4Zm9yY2Vfd2l0aGRyYXekATBCYWxhbmNlT2Y8VD4AEghVAVN0YWtpbmcgYmFsYW5jZSBtaWdyYXRlZCBmcm9tIGxvY2tzIHRvIGhvbGRzLCB3aXRoIGFueSBiYWxhbmNlIHRoYXQgY291bGQgbm90IGJlIGhlbGRMaXMgZm9yY2Ugd2l0aGRyYXduLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldC0ICDhwYWxsZXRfc3Rha2luZxxGb3JjaW5nAAEQKE5vdEZvcmNpbmcAAAAgRm9yY2VOZXcAAQAkRm9yY2VOb25lAAIALEZvcmNlQWx3YXlzAAMAADEIDDxwYWxsZXRfb2ZmZW5jZXMYcGFsbGV0FEV2ZW50AAEEHE9mZmVuY2UIARBraW5kJQUBEEtpbmQAASB0aW1lc2xvdBgBOE9wYXF1ZVRpbWVTbG90AAAMUQFUaGVyZSBpcyBhbiBvZmZlbmNlIHJlcG9ydGVkIG9mIHRoZSBnaXZlbiBga2luZGAgaGFwcGVuZWQgYXQgdGhlIGBzZXNzaW9uX2luZGV4YCBhbmQ1AShraW5kLXNwZWNpZmljKSB0aW1lIHNsb3QuIFRoaXMgZXZlbnQgaXMgbm90IGRlcG9zaXRlZCBmb3IgZHVwbGljYXRlIHNsYXNoZXMuTFxba2luZCwgdGltZXNsb3RcXS4EMEV2ZW50cyB0eXBlLjUIEDhwYWxsZXRfc2Vzc2lvbihoaXN0b3JpY2FsGHBhbGxldBRFdmVudAQEVAABCChSb290U3RvcmVkBAEUaW5kZXg4ATBTZXNzaW9uSW5kZXgAAAQFAVRoZSBtZXJrbGUgcm9vdCBvZiB0aGUgdmFsaWRhdG9ycyBvZiB0aGUgc2FpZCBzZXNzaW9uIHdlcmUgc3RvcmVkLFJvb3RzUHJ1bmVkBAEUdXBfdG84ATBTZXNzaW9uSW5kZXgAAQTgVGhlIG1lcmtsZSByb290cyBvZiB1cCB0byB0aGlzIHNlc3Npb24gaW5kZXggd2VyZSBwcnVuZWQEfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXQ5CAw4cGFsbGV0X3Nlc3Npb24YcGFsbGV0FEV2ZW50BARUAAEQKE5ld1Nlc3Npb24EATRzZXNzaW9uX2luZGV4OAEwU2Vzc2lvbkluZGV4AAAIOQFOZXcgc2Vzc2lvbiBoYXMgaGFwcGVuZWQuIE5vdGUgdGhhdCB0aGUgYXJndW1lbnQgaXMgdGhlIHNlc3Npb24gaW5kZXgsIG5vdCB0aGWcYmxvY2sgbnVtYmVyIGFzIHRoZSB0eXBlIG1pZ2h0IHN1Z2dlc3QuJE5ld1F1ZXVlZAABCEkBVGhlIGBOZXdTZXNzaW9uYCBldmVudCBpbiB0aGUgY3VycmVudCBibG9jayBhbHNvIGltcGxpZXMgYSBuZXcgdmFsaWRhdG9yIHNldCB0byBiZRxxdWV1ZWQuRFZhbGlkYXRvckRpc2FibGVkBAEkdmFsaWRhdG9yBAE4VDo6VmFsaWRhdG9ySWQAAgRwVmFsaWRhdG9yIGhhcyBiZWVuIGRpc2FibGVkLkhWYWxpZGF0b3JSZWVuYWJsZWQEASR2YWxpZGF0b3IEAThUOjpWYWxpZGF0b3JJZAADBHhWYWxpZGF0b3IgaGFzIGJlZW4gcmUtZW5hYmxlZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXQ9CAw4cGFsbGV0X2dyYW5kcGEYcGFsbGV0FEV2ZW50AAEMOE5ld0F1dGhvcml0aWVzBAE0YXV0aG9yaXR5X3NldEEIATRBdXRob3JpdHlMaXN0AAAEjE5ldyBhdXRob3JpdHkgc2V0IGhhcyBiZWVuIGFwcGxpZWQuGFBhdXNlZAABBJhDdXJyZW50IGF1dGhvcml0eSBzZXQgaGFzIGJlZW4gcGF1c2VkLhxSZXN1bWVkAAIEnEN1cnJlbnQgYXV0aG9yaXR5IHNldCBoYXMgYmVlbiByZXN1bWVkLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldEEIAAACRQgARQgAAAQIBQEoAEkIDDxwYWxsZXRfdHJlYXN1cnkYcGFsbGV0FEV2ZW50CARUAARJAAEwIFNwZW5kaW5nBAFAYnVkZ2V0X3JlbWFpbmluZ6QBPEJhbGFuY2VPZjxULCBJPgAABORXZSBoYXZlIGVuZGVkIGEgc3BlbmQgcGVyaW9kIGFuZCB3aWxsIG5vdyBhbGxvY2F0ZSBmdW5kcy4cQXdhcmRlZAwBOHByb3Bvc2FsX2luZGV4OAE0UHJvcG9zYWxJbmRleAABFGF3YXJkpAE8QmFsYW5jZU9mPFQsIEk+AAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAABBHxTb21lIGZ1bmRzIGhhdmUgYmVlbiBhbGxvY2F0ZWQuFEJ1cm50BAEsYnVybnRfZnVuZHOkATxCYWxhbmNlT2Y8VCwgST4AAgSIU29tZSBvZiBvdXIgZnVuZHMgaGF2ZSBiZWVuIGJ1cm50LiBSb2xsb3ZlcgQBQHJvbGxvdmVyX2JhbGFuY2WkATxCYWxhbmNlT2Y8VCwgST4AAwQtAVNwZW5kaW5nIGhhcyBmaW5pc2hlZDsgdGhpcyBpcyB0aGUgYW1vdW50IHRoYXQgcm9sbHMgb3ZlciB1bnRpbCBuZXh0IHNwZW5kLhxEZXBvc2l0BAEUdmFsdWWkATxCYWxhbmNlT2Y8VCwgST4ABAR8U29tZSBmdW5kcyBoYXZlIGJlZW4gZGVwb3NpdGVkLjRTcGVuZEFwcHJvdmVkDAE4cHJvcG9zYWxfaW5kZXg4ATRQcm9wb3NhbEluZGV4AAEYYW1vdW50pAE8QmFsYW5jZU9mPFQsIEk+AAEsYmVuZWZpY2lhcnkEATBUOjpBY2NvdW50SWQABQScQSBuZXcgc3BlbmQgcHJvcG9zYWwgaGFzIGJlZW4gYXBwcm92ZWQuPFVwZGF0ZWRJbmFjdGl2ZQgBLHJlYWN0aXZhdGVkpAE8QmFsYW5jZU9mPFQsIEk+AAEsZGVhY3RpdmF0ZWSkATxCYWxhbmNlT2Y8VCwgST4ABgTMVGhlIGluYWN0aXZlIGZ1bmRzIG9mIHRoZSBwYWxsZXQgaGF2ZSBiZWVuIHVwZGF0ZWQuSEFzc2V0U3BlbmRBcHByb3ZlZBgBFGluZGV4OAEoU3BlbmRJbmRleAABKGFzc2V0X2tpbmRNAQEwVDo6QXNzZXRLaW5kAAEYYW1vdW50pAFQQXNzZXRCYWxhbmNlT2Y8VCwgST4AASxiZW5lZmljaWFyeeEBAThUOjpCZW5lZmljaWFyeQABKHZhbGlkX2Zyb204AVBCbG9ja051bWJlckZvcjxULCBJPgABJGV4cGlyZV9hdDgBUEJsb2NrTnVtYmVyRm9yPFQsIEk+AAcEtEEgbmV3IGFzc2V0IHNwZW5kIHByb3Bvc2FsIGhhcyBiZWVuIGFwcHJvdmVkLkBBc3NldFNwZW5kVm9pZGVkBAEUaW5kZXg4AShTcGVuZEluZGV4AAgEdEFuIGFwcHJvdmVkIHNwZW5kIHdhcyB2b2lkZWQuEFBhaWQIARRpbmRleDgBKFNwZW5kSW5kZXgAAShwYXltZW50X2lkKAFkPFQ6OlBheW1hc3RlciBhcyBQYXk+OjpJZAAJBExBIHBheW1lbnQgaGFwcGVuZWQuNFBheW1lbnRGYWlsZWQIARRpbmRleDgBKFNwZW5kSW5kZXgAAShwYXltZW50X2lkKAFkPFQ6OlBheW1hc3RlciBhcyBQYXk+OjpJZAAKBJBBIHBheW1lbnQgZmFpbGVkIGFuZCBjYW4gYmUgcmV0cmllZC44U3BlbmRQcm9jZXNzZWQEARRpbmRleDgBKFNwZW5kSW5kZXgACwhNAUEgc3BlbmQgd2FzIHByb2Nlc3NlZCBhbmQgcmVtb3ZlZCBmcm9tIHRoZSBzdG9yYWdlLiBJdCBtaWdodCBoYXZlIGJlZW4gc3VjY2Vzc2Z1bGx5cHBhaWQgb3IgaXQgbWF5IGhhdmUgZXhwaXJlZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXRNCAxgcGFsbGV0X2NvbnZpY3Rpb25fdm90aW5nGHBhbGxldBRFdmVudAgEVAAESQABFCREZWxlZ2F0ZWQMAAQBMFQ6OkFjY291bnRJZAAABAEwVDo6QWNjb3VudElkAAD1AQE0Q2xhc3NPZjxULCBJPgAABB0BQW4gYWNjb3VudCBoYXMgZGVsZWdhdGVkIHRoZWlyIHZvdGUgdG8gYW5vdGhlciBhY2NvdW50LiBcW3dobywgdGFyZ2V0XF0sVW5kZWxlZ2F0ZWQIAAQBMFQ6OkFjY291bnRJZAAA9QEBNENsYXNzT2Y8VCwgST4AAQT0QW4gXFthY2NvdW50XF0gaGFzIGNhbmNlbGxlZCBhIHByZXZpb3VzIGRlbGVnYXRpb24gb3BlcmF0aW9uLhRWb3RlZAwBDHdobwQBMFQ6OkFjY291bnRJZAABEHZvdGXtAQFwQWNjb3VudFZvdGU8QmFsYW5jZU9mPFQsIEk+PgABKHBvbGxfaW5kZXg4AURQb2xsSW5kZXhPZjxULCBJPgACBFBBbiBhY2NvdW50IGhhcyB2b3RlZCxWb3RlUmVtb3ZlZAwBDHdobwQBMFQ6OkFjY291bnRJZAABEHZvdGXtAQFwQWNjb3VudFZvdGU8QmFsYW5jZU9mPFQsIEk+PgABKHBvbGxfaW5kZXg4AURQb2xsSW5kZXhPZjxULCBJPgADBFxBIHZvdGUgaGFzIGJlZW4gcmVtb3ZlZDBWb3RlVW5sb2NrZWQIAQx3aG8EATBUOjpBY2NvdW50SWQAARRjbGFzc/UBATRDbGFzc09mPFQsIEk+AAQERQFUaGUgbG9ja3VwIHBlcmlvZCBvZiBhIGNvbnZpY3Rpb24gdm90ZSBleHBpcmVkLCBhbmQgdGhlIGZ1bmRzIGhhdmUgYmVlbiB1bmxvY2tlZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXRRCAxAcGFsbGV0X3JlZmVyZW5kYRhwYWxsZXQURXZlbnQIBFQABEkAAUAkU3VibWl0dGVkDAEUaW5kZXg4ATxSZWZlcmVuZHVtSW5kZXgEYEluZGV4IG9mIHRoZSByZWZlcmVuZHVtLgEUdHJhY2v1AQE8VHJhY2tJZE9mPFQsIEk+BCUBVGhlIHRyYWNrIChhbmQgYnkgZXh0ZW5zaW9uIHByb3Bvc2FsIGRpc3BhdGNoIG9yaWdpbikgb2YgdGhpcyByZWZlcmVuZHVtLgEgcHJvcG9zYWwdAgFMQm91bmRlZENhbGxPZjxULCBJPgSAVGhlIHByb3Bvc2FsIGZvciB0aGUgcmVmZXJlbmR1bS4ABIBBIHJlZmVyZW5kdW0gaGFzIGJlZW4gc3VibWl0dGVkLlREZWNpc2lvbkRlcG9zaXRQbGFjZWQMARRpbmRleDgBPFJlZmVyZW5kdW1JbmRleARgSW5kZXggb2YgdGhlIHJlZmVyZW5kdW0uAQx3aG8EATBUOjpBY2NvdW50SWQEjFRoZSBhY2NvdW50IHdobyBwbGFjZWQgdGhlIGRlcG9zaXQuARhhbW91bnSkATxCYWxhbmNlT2Y8VCwgST4EhFRoZSBhbW91bnQgcGxhY2VkIGJ5IHRoZSBhY2NvdW50LgEElFRoZSBkZWNpc2lvbiBkZXBvc2l0IGhhcyBiZWVuIHBsYWNlZC5cRGVjaXNpb25EZXBvc2l0UmVmdW5kZWQMARRpbmRleDgBPFJlZmVyZW5kdW1JbmRleARgSW5kZXggb2YgdGhlIHJlZmVyZW5kdW0uAQx3aG8EATBUOjpBY2NvdW50SWQEjFRoZSBhY2NvdW50IHdobyBwbGFjZWQgdGhlIGRlcG9zaXQuARhhbW91bnSkATxCYWxhbmNlT2Y8VCwgST4EhFRoZSBhbW91bnQgcGxhY2VkIGJ5IHRoZSBhY2NvdW50LgIEnFRoZSBkZWNpc2lvbiBkZXBvc2l0IGhhcyBiZWVuIHJlZnVuZGVkLjhEZXBvc2l0U2xhc2hlZAgBDHdobwQBMFQ6OkFjY291bnRJZASMVGhlIGFjY291bnQgd2hvIHBsYWNlZCB0aGUgZGVwb3NpdC4BGGFtb3VudKQBPEJhbGFuY2VPZjxULCBJPgSEVGhlIGFtb3VudCBwbGFjZWQgYnkgdGhlIGFjY291bnQuAwRsQSBkZXBvc2l0IGhhcyBiZWVuIHNsYXNoZWQuPERlY2lzaW9uU3RhcnRlZBABFGluZGV4OAE8UmVmZXJlbmR1bUluZGV4BGBJbmRleCBvZiB0aGUgcmVmZXJlbmR1bS4BFHRyYWNr9QEBPFRyYWNrSWRPZjxULCBJPgQlAVRoZSB0cmFjayAoYW5kIGJ5IGV4dGVuc2lvbiBwcm9wb3NhbCBkaXNwYXRjaCBvcmlnaW4pIG9mIHRoaXMgcmVmZXJlbmR1bS4BIHByb3Bvc2FsHQIBTEJvdW5kZWRDYWxsT2Y8VCwgST4EgFRoZSBwcm9wb3NhbCBmb3IgdGhlIHJlZmVyZW5kdW0uARR0YWxseVUIASBUOjpUYWxseQS4VGhlIGN1cnJlbnQgdGFsbHkgb2Ygdm90ZXMgaW4gdGhpcyByZWZlcmVuZHVtLgQEvEEgcmVmZXJlbmR1bSBoYXMgbW92ZWQgaW50byB0aGUgZGVjaWRpbmcgcGhhc2UuOENvbmZpcm1TdGFydGVkBAEUaW5kZXg4ATxSZWZlcmVuZHVtSW5kZXgEYEluZGV4IG9mIHRoZSByZWZlcmVuZHVtLgUAOENvbmZpcm1BYm9ydGVkBAEUaW5kZXg4ATxSZWZlcmVuZHVtSW5kZXgEYEluZGV4IG9mIHRoZSByZWZlcmVuZHVtLgYAJENvbmZpcm1lZAgBFGluZGV4OAE8UmVmZXJlbmR1bUluZGV4BGBJbmRleCBvZiB0aGUgcmVmZXJlbmR1bS4BFHRhbGx5VQgBIFQ6OlRhbGx5BLBUaGUgZmluYWwgdGFsbHkgb2Ygdm90ZXMgaW4gdGhpcyByZWZlcmVuZHVtLgcEIQFBIHJlZmVyZW5kdW0gaGFzIGVuZGVkIGl0cyBjb25maXJtYXRpb24gcGhhc2UgYW5kIGlzIHJlYWR5IGZvciBhcHByb3ZhbC4gQXBwcm92ZWQEARRpbmRleDgBPFJlZmVyZW5kdW1JbmRleARgSW5kZXggb2YgdGhlIHJlZmVyZW5kdW0uCAQNAUEgcmVmZXJlbmR1bSBoYXMgYmVlbiBhcHByb3ZlZCBhbmQgaXRzIHByb3Bvc2FsIGhhcyBiZWVuIHNjaGVkdWxlZC4gUmVqZWN0ZWQIARRpbmRleDgBPFJlZmVyZW5kdW1JbmRleARgSW5kZXggb2YgdGhlIHJlZmVyZW5kdW0uARR0YWxseVUIASBUOjpUYWxseQSwVGhlIGZpbmFsIHRhbGx5IG9mIHZvdGVzIGluIHRoaXMgcmVmZXJlbmR1bS4JBKxBIHByb3Bvc2FsIGhhcyBiZWVuIHJlamVjdGVkIGJ5IHJlZmVyZW5kdW0uIFRpbWVkT3V0CAEUaW5kZXg4ATxSZWZlcmVuZHVtSW5kZXgEYEluZGV4IG9mIHRoZSByZWZlcmVuZHVtLgEUdGFsbHlVCAEgVDo6VGFsbHkEsFRoZSBmaW5hbCB0YWxseSBvZiB2b3RlcyBpbiB0aGlzIHJlZmVyZW5kdW0uCgTYQSByZWZlcmVuZHVtIGhhcyBiZWVuIHRpbWVkIG91dCB3aXRob3V0IGJlaW5nIGRlY2lkZWQuJENhbmNlbGxlZAgBFGluZGV4OAE8UmVmZXJlbmR1bUluZGV4BGBJbmRleCBvZiB0aGUgcmVmZXJlbmR1bS4BFHRhbGx5VQgBIFQ6OlRhbGx5BLBUaGUgZmluYWwgdGFsbHkgb2Ygdm90ZXMgaW4gdGhpcyByZWZlcmVuZHVtLgsEgEEgcmVmZXJlbmR1bSBoYXMgYmVlbiBjYW5jZWxsZWQuGEtpbGxlZAgBFGluZGV4OAE8UmVmZXJlbmR1bUluZGV4BGBJbmRleCBvZiB0aGUgcmVmZXJlbmR1bS4BFHRhbGx5VQgBIFQ6OlRhbGx5BLBUaGUgZmluYWwgdGFsbHkgb2Ygdm90ZXMgaW4gdGhpcyByZWZlcmVuZHVtLgwEdEEgcmVmZXJlbmR1bSBoYXMgYmVlbiBraWxsZWQuZFN1Ym1pc3Npb25EZXBvc2l0UmVmdW5kZWQMARRpbmRleDgBPFJlZmVyZW5kdW1JbmRleARgSW5kZXggb2YgdGhlIHJlZmVyZW5kdW0uAQx3aG8EATBUOjpBY2NvdW50SWQEjFRoZSBhY2NvdW50IHdobyBwbGFjZWQgdGhlIGRlcG9zaXQuARhhbW91bnSkATxCYWxhbmNlT2Y8VCwgST4EhFRoZSBhbW91bnQgcGxhY2VkIGJ5IHRoZSBhY2NvdW50Lg0EpFRoZSBzdWJtaXNzaW9uIGRlcG9zaXQgaGFzIGJlZW4gcmVmdW5kZWQuLE1ldGFkYXRhU2V0CAEUaW5kZXg4ATxSZWZlcmVuZHVtSW5kZXgEYEluZGV4IG9mIHRoZSByZWZlcmVuZHVtLgEQaGFzaDwBHFQ6Okhhc2gEOFByZWltYWdlIGhhc2guDgScTWV0YWRhdGEgZm9yIGEgcmVmZXJlbmR1bSBoYXMgYmVlbiBzZXQuPE1ldGFkYXRhQ2xlYXJlZAgBFGluZGV4OAE8UmVmZXJlbmR1bUluZGV4BGBJbmRleCBvZiB0aGUgcmVmZXJlbmR1bS4BEGhhc2g8ARxUOjpIYXNoBDhQcmVpbWFnZSBoYXNoLg8ErE1ldGFkYXRhIGZvciBhIHJlZmVyZW5kdW0gaGFzIGJlZW4gY2xlYXJlZC4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXRVCAxgcGFsbGV0X2NvbnZpY3Rpb25fdm90aW5nFHR5cGVzFFRhbGx5CBRWb3RlcwGkFFRvdGFsAAAMARBheWVzpAEUVm90ZXMAARBuYXlzpAEUVm90ZXMAARxzdXBwb3J0pAEUVm90ZXMAAFkIDEBwYWxsZXRfd2hpdGVsaXN0GHBhbGxldBRFdmVudAQEVAABDDxDYWxsV2hpdGVsaXN0ZWQEASRjYWxsX2hhc2g8ARxUOjpIYXNoAAAAWFdoaXRlbGlzdGVkQ2FsbFJlbW92ZWQEASRjYWxsX2hhc2g8ARxUOjpIYXNoAAEAZFdoaXRlbGlzdGVkQ2FsbERpc3BhdGNoZWQIASRjYWxsX2hhc2g8ARxUOjpIYXNoAAEYcmVzdWx0XQgBaERpc3BhdGNoUmVzdWx0V2l0aFBvc3RJbmZvAAIABHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0XQgEGFJlc3VsdAgEVAFhCARFAWUIAQgIT2sEAGEIAAAAAAxFcnIEAGUIAAABAABhCAw0ZnJhbWVfc3VwcG9ydCBkaXNwYXRjaEBQb3N0RGlzcGF0Y2hJbmZvAAAIATRhY3R1YWxfd2VpZ2h0/QUBOE9wdGlvbjxXZWlnaHQ+AAEgcGF5c19mZWXRBwEQUGF5cwAAZQgIKHNwX3J1bnRpbWVkRGlzcGF0Y2hFcnJvcldpdGhQb3N0SW5mbwQQSW5mbwFhCAAIASRwb3N0X2luZm9hCAEQSW5mbwABFGVycm9y1QcBNERpc3BhdGNoRXJyb3IAAGkIEFxwb2xrYWRvdF9ydW50aW1lX2NvbW1vbhhjbGFpbXMYcGFsbGV0FEV2ZW50BARUAAEEHENsYWltZWQMAQx3aG8EATBUOjpBY2NvdW50SWQAAUBldGhlcmV1bV9hZGRyZXNzRQIBPEV0aGVyZXVtQWRkcmVzcwABGGFtb3VudKQBMEJhbGFuY2VPZjxUPgAABGhTb21lb25lIGNsYWltZWQgc29tZSBET1RzLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldG0IDDhwYWxsZXRfdmVzdGluZxhwYWxsZXQURXZlbnQEBFQAAQw4VmVzdGluZ0NyZWF0ZWQIARxhY2NvdW50BAEwVDo6QWNjb3VudElkAAE4c2NoZWR1bGVfaW5kZXg4AQx1MzIAAASQQSB2ZXN0aW5nIHNjaGVkdWxlIGhhcyBiZWVuIGNyZWF0ZWQuOFZlc3RpbmdVcGRhdGVkCAEcYWNjb3VudAQBMFQ6OkFjY291bnRJZAABIHVudmVzdGVkpAEwQmFsYW5jZU9mPFQ+AAEIUQFUaGUgYW1vdW50IHZlc3RlZCBoYXMgYmVlbiB1cGRhdGVkLiBUaGlzIGNvdWxkIGluZGljYXRlIGEgY2hhbmdlIGluIGZ1bmRzIGF2YWlsYWJsZS4lAVRoZSBiYWxhbmNlIGdpdmVuIGlzIHRoZSBhbW91bnQgd2hpY2ggaXMgbGVmdCB1bnZlc3RlZCAoYW5kIHRodXMgbG9ja2VkKS5AVmVzdGluZ0NvbXBsZXRlZAQBHGFjY291bnQEATBUOjpBY2NvdW50SWQAAgScQW4gXFthY2NvdW50XF0gaGFzIGJlY29tZSBmdWxseSB2ZXN0ZWQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0cQgMOHBhbGxldF91dGlsaXR5GHBhbGxldBRFdmVudAABIEBCYXRjaEludGVycnVwdGVkCAEUaW5kZXg4AQx1MzIAARRlcnJvctUHATREaXNwYXRjaEVycm9yAAAIVQFCYXRjaCBvZiBkaXNwYXRjaGVzIGRpZCBub3QgY29tcGxldGUgZnVsbHkuIEluZGV4IG9mIGZpcnN0IGZhaWxpbmcgZGlzcGF0Y2ggZ2l2ZW4sIGFzSHdlbGwgYXMgdGhlIGVycm9yLjhCYXRjaENvbXBsZXRlZAABBMhCYXRjaCBvZiBkaXNwYXRjaGVzIGNvbXBsZXRlZCBmdWxseSB3aXRoIG5vIGVycm9yLmBCYXRjaENvbXBsZXRlZFdpdGhFcnJvcnMAAgS0QmF0Y2ggb2YgZGlzcGF0Y2hlcyBjb21wbGV0ZWQgYnV0IGhhcyBlcnJvcnMuNEl0ZW1Db21wbGV0ZWQAAwQdAUEgc2luZ2xlIGl0ZW0gd2l0aGluIGEgQmF0Y2ggb2YgZGlzcGF0Y2hlcyBoYXMgY29tcGxldGVkIHdpdGggbm8gZXJyb3IuKEl0ZW1GYWlsZWQEARRlcnJvctUHATREaXNwYXRjaEVycm9yAAQEEQFBIHNpbmdsZSBpdGVtIHdpdGhpbiBhIEJhdGNoIG9mIGRpc3BhdGNoZXMgaGFzIGNvbXBsZXRlZCB3aXRoIGVycm9yLjBEaXNwYXRjaGVkQXMEARhyZXN1bHTxBwE4RGlzcGF0Y2hSZXN1bHQABQRYQSBjYWxsIHdhcyBkaXNwYXRjaGVkLkRJZkVsc2VNYWluU3VjY2VzcwAGBGRNYWluIGNhbGwgd2FzIGRpc3BhdGNoZWQuUElmRWxzZUZhbGxiYWNrQ2FsbGVkBAEobWFpbl9lcnJvctUHATREaXNwYXRjaEVycm9yAAcEhFRoZSBmYWxsYmFjayBjYWxsIHdhcyBkaXNwYXRjaGVkLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldHUIDDBwYWxsZXRfcHJveHkYcGFsbGV0FEV2ZW50BARUAAEcNFByb3h5RXhlY3V0ZWQEARhyZXN1bHTxBwE4RGlzcGF0Y2hSZXN1bHQAAAS8QSBwcm94eSB3YXMgZXhlY3V0ZWQgY29ycmVjdGx5LCB3aXRoIHRoZSBnaXZlbi4sUHVyZUNyZWF0ZWQYARBwdXJlBAEwVDo6QWNjb3VudElkAAEMd2hvBAEwVDo6QWNjb3VudElkAAEocHJveHlfdHlwZXECATBUOjpQcm94eVR5cGUAAVBkaXNhbWJpZ3VhdGlvbl9pbmRlePUBAQx1MTYAAQhhdDgBREJsb2NrTnVtYmVyRm9yPFQ+AAE8ZXh0cmluc2ljX2luZGV4OAEMdTMyAAEI3EEgcHVyZSBhY2NvdW50IGhhcyBiZWVuIGNyZWF0ZWQgYnkgbmV3IHByb3h5IHdpdGggZ2l2ZW6QZGlzYW1iaWd1YXRpb24gaW5kZXggYW5kIHByb3h5IHR5cGUuKFB1cmVLaWxsZWQQARBwdXJlBAEwVDo6QWNjb3VudElkAAEcc3Bhd25lcgQBMFQ6OkFjY291bnRJZAABKHByb3h5X3R5cGVxAgEwVDo6UHJveHlUeXBlAAFQZGlzYW1iaWd1YXRpb25faW5kZXj1AQEMdTE2AAIEnEEgcHVyZSBwcm94eSB3YXMga2lsbGVkIGJ5IGl0cyBzcGF3bmVyLiRBbm5vdW5jZWQMARByZWFsBAEwVDo6QWNjb3VudElkAAEUcHJveHkEATBUOjpBY2NvdW50SWQAASRjYWxsX2hhc2g8ATRDYWxsSGFzaE9mPFQ+AAME4EFuIGFubm91bmNlbWVudCB3YXMgcGxhY2VkIHRvIG1ha2UgYSBjYWxsIGluIHRoZSBmdXR1cmUuKFByb3h5QWRkZWQQASRkZWxlZ2F0b3IEATBUOjpBY2NvdW50SWQAASRkZWxlZ2F0ZWUEATBUOjpBY2NvdW50SWQAAShwcm94eV90eXBlcQIBMFQ6OlByb3h5VHlwZQABFGRlbGF5OAFEQmxvY2tOdW1iZXJGb3I8VD4ABARIQSBwcm94eSB3YXMgYWRkZWQuMFByb3h5UmVtb3ZlZBABJGRlbGVnYXRvcgQBMFQ6OkFjY291bnRJZAABJGRlbGVnYXRlZQQBMFQ6OkFjY291bnRJZAABKHByb3h5X3R5cGVxAgEwVDo6UHJveHlUeXBlAAEUZGVsYXk4AURCbG9ja051bWJlckZvcjxUPgAFBFBBIHByb3h5IHdhcyByZW1vdmVkLjBEZXBvc2l0UG9rZWQQAQx3aG8EATBUOjpBY2NvdW50SWQAARBraW5keQgBLERlcG9zaXRLaW5kAAEsb2xkX2RlcG9zaXSkATBCYWxhbmNlT2Y8VD4AASxuZXdfZGVwb3NpdKQBMEJhbGFuY2VPZjxUPgAGBAkBQSBkZXBvc2l0IHN0b3JlZCBmb3IgcHJveGllcyBvciBhbm5vdW5jZW1lbnRzIHdhcyBwb2tlZCAvIHVwZGF0ZWQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0eQgIMHBhbGxldF9wcm94eSxEZXBvc2l0S2luZAABCBxQcm94aWVzAAAANEFubm91bmNlbWVudHMAAQAAfQgMPHBhbGxldF9tdWx0aXNpZxhwYWxsZXQURXZlbnQEBFQAARQsTmV3TXVsdGlzaWcMASRhcHByb3ZpbmcEATBUOjpBY2NvdW50SWQAASBtdWx0aXNpZwQBMFQ6OkFjY291bnRJZAABJGNhbGxfaGFzaAgBIENhbGxIYXNoAAAEjEEgbmV3IG11bHRpc2lnIG9wZXJhdGlvbiBoYXMgYmVndW4uQE11bHRpc2lnQXBwcm92YWwQASRhcHByb3ZpbmcEATBUOjpBY2NvdW50SWQAASR0aW1lcG9pbnR9AgFwVGltZXBvaW50PEJsb2NrTnVtYmVyRm9yPFQ+PgABIG11bHRpc2lnBAEwVDo6QWNjb3VudElkAAEkY2FsbF9oYXNoCAEgQ2FsbEhhc2gAAQTIQSBtdWx0aXNpZyBvcGVyYXRpb24gaGFzIGJlZW4gYXBwcm92ZWQgYnkgc29tZW9uZS5ATXVsdGlzaWdFeGVjdXRlZBQBJGFwcHJvdmluZwQBMFQ6OkFjY291bnRJZAABJHRpbWVwb2ludH0CAXBUaW1lcG9pbnQ8QmxvY2tOdW1iZXJGb3I8VD4+AAEgbXVsdGlzaWcEATBUOjpBY2NvdW50SWQAASRjYWxsX2hhc2gIASBDYWxsSGFzaAABGHJlc3VsdPEHAThEaXNwYXRjaFJlc3VsdAACBJxBIG11bHRpc2lnIG9wZXJhdGlvbiBoYXMgYmVlbiBleGVjdXRlZC5ETXVsdGlzaWdDYW5jZWxsZWQQAShjYW5jZWxsaW5nBAEwVDo6QWNjb3VudElkAAEkdGltZXBvaW50fQIBcFRpbWVwb2ludDxCbG9ja051bWJlckZvcjxUPj4AASBtdWx0aXNpZwQBMFQ6OkFjY291bnRJZAABJGNhbGxfaGFzaAgBIENhbGxIYXNoAAMEoEEgbXVsdGlzaWcgb3BlcmF0aW9uIGhhcyBiZWVuIGNhbmNlbGxlZC4wRGVwb3NpdFBva2VkEAEMd2hvBAEwVDo6QWNjb3VudElkAAEkY2FsbF9oYXNoCAEgQ2FsbEhhc2gAASxvbGRfZGVwb3NpdKQBMEJhbGFuY2VPZjxUPgABLG5ld19kZXBvc2l0pAEwQmFsYW5jZU9mPFQ+AAQE8FRoZSBkZXBvc2l0IGZvciBhIG11bHRpc2lnIG9wZXJhdGlvbiBoYXMgYmVlbiB1cGRhdGVkL3Bva2VkLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldIEIDDxwYWxsZXRfYm91bnRpZXMYcGFsbGV0FEV2ZW50CARUAARJAAEwOEJvdW50eVByb3Bvc2VkBAEUaW5kZXg4ASxCb3VudHlJbmRleAAABFBOZXcgYm91bnR5IHByb3Bvc2FsLjhCb3VudHlSZWplY3RlZAgBFGluZGV4OAEsQm91bnR5SW5kZXgAARBib25kpAE8QmFsYW5jZU9mPFQsIEk+AAEEzEEgYm91bnR5IHByb3Bvc2FsIHdhcyByZWplY3RlZDsgZnVuZHMgd2VyZSBzbGFzaGVkLkhCb3VudHlCZWNhbWVBY3RpdmUEARRpbmRleDgBLEJvdW50eUluZGV4AAIEuEEgYm91bnR5IHByb3Bvc2FsIGlzIGZ1bmRlZCBhbmQgYmVjYW1lIGFjdGl2ZS40Qm91bnR5QXdhcmRlZAgBFGluZGV4OAEsQm91bnR5SW5kZXgAASxiZW5lZmljaWFyeQQBMFQ6OkFjY291bnRJZAADBJRBIGJvdW50eSBpcyBhd2FyZGVkIHRvIGEgYmVuZWZpY2lhcnkuNEJvdW50eUNsYWltZWQMARRpbmRleDgBLEJvdW50eUluZGV4AAEYcGF5b3V0pAE8QmFsYW5jZU9mPFQsIEk+AAEsYmVuZWZpY2lhcnkEATBUOjpBY2NvdW50SWQABASMQSBib3VudHkgaXMgY2xhaW1lZCBieSBiZW5lZmljaWFyeS44Qm91bnR5Q2FuY2VsZWQEARRpbmRleDgBLEJvdW50eUluZGV4AAUEWEEgYm91bnR5IGlzIGNhbmNlbGxlZC44Qm91bnR5RXh0ZW5kZWQEARRpbmRleDgBLEJvdW50eUluZGV4AAYEcEEgYm91bnR5IGV4cGlyeSBpcyBleHRlbmRlZC44Qm91bnR5QXBwcm92ZWQEARRpbmRleDgBLEJvdW50eUluZGV4AAcEVEEgYm91bnR5IGlzIGFwcHJvdmVkLjxDdXJhdG9yUHJvcG9zZWQIASRib3VudHlfaWQ4ASxCb3VudHlJbmRleAABHGN1cmF0b3IEATBUOjpBY2NvdW50SWQACAR0QSBib3VudHkgY3VyYXRvciBpcyBwcm9wb3NlZC5EQ3VyYXRvclVuYXNzaWduZWQEASRib3VudHlfaWQ4ASxCb3VudHlJbmRleAAJBHxBIGJvdW50eSBjdXJhdG9yIGlzIHVuYXNzaWduZWQuPEN1cmF0b3JBY2NlcHRlZAgBJGJvdW50eV9pZDgBLEJvdW50eUluZGV4AAEcY3VyYXRvcgQBMFQ6OkFjY291bnRJZAAKBHRBIGJvdW50eSBjdXJhdG9yIGlzIGFjY2VwdGVkLjBEZXBvc2l0UG9rZWQQASRib3VudHlfaWQ4ASxCb3VudHlJbmRleAABIHByb3Bvc2VyBAEwVDo6QWNjb3VudElkAAEsb2xkX2RlcG9zaXSkATxCYWxhbmNlT2Y8VCwgST4AASxuZXdfZGVwb3NpdKQBPEJhbGFuY2VPZjxULCBJPgALBIBBIGJvdW50eSBkZXBvc2l0IGhhcyBiZWVuIHBva2VkLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldIUIDFRwYWxsZXRfY2hpbGRfYm91bnRpZXMYcGFsbGV0FEV2ZW50BARUAAEQFEFkZGVkCAEUaW5kZXg4ASxCb3VudHlJbmRleAABLGNoaWxkX2luZGV4OAEsQm91bnR5SW5kZXgAAARgQSBjaGlsZC1ib3VudHkgaXMgYWRkZWQuHEF3YXJkZWQMARRpbmRleDgBLEJvdW50eUluZGV4AAEsY2hpbGRfaW5kZXg4ASxCb3VudHlJbmRleAABLGJlbmVmaWNpYXJ5BAEwVDo6QWNjb3VudElkAAEErEEgY2hpbGQtYm91bnR5IGlzIGF3YXJkZWQgdG8gYSBiZW5lZmljaWFyeS4cQ2xhaW1lZBABFGluZGV4OAEsQm91bnR5SW5kZXgAASxjaGlsZF9pbmRleDgBLEJvdW50eUluZGV4AAEYcGF5b3V0pAEwQmFsYW5jZU9mPFQ+AAEsYmVuZWZpY2lhcnkEATBUOjpBY2NvdW50SWQAAgSkQSBjaGlsZC1ib3VudHkgaXMgY2xhaW1lZCBieSBiZW5lZmljaWFyeS4gQ2FuY2VsZWQIARRpbmRleDgBLEJvdW50eUluZGV4AAEsY2hpbGRfaW5kZXg4ASxCb3VudHlJbmRleAADBHBBIGNoaWxkLWJvdW50eSBpcyBjYW5jZWxsZWQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0iQgMkHBhbGxldF9lbGVjdGlvbl9wcm92aWRlcl9tdWx0aV9waGFzZRhwYWxsZXQURXZlbnQEBFQAARg4U29sdXRpb25TdG9yZWQMARxjb21wdXRljQgBPEVsZWN0aW9uQ29tcHV0ZQABGG9yaWdpbuQBUE9wdGlvbjxUOjpBY2NvdW50SWQ+AAEwcHJldl9lamVjdGVkmAEQYm9vbAAAHLRBIHNvbHV0aW9uIHdhcyBzdG9yZWQgd2l0aCB0aGUgZ2l2ZW4gY29tcHV0ZS4AUQFUaGUgYG9yaWdpbmAgaW5kaWNhdGVzIHRoZSBvcmlnaW4gb2YgdGhlIHNvbHV0aW9uLiBJZiBgb3JpZ2luYCBpcyBgU29tZShBY2NvdW50SWQpYCxZAXRoZSBzdG9yZWQgc29sdXRpb24gd2FzIHN1Ym1pdHRlZCBpbiB0aGUgc2lnbmVkIHBoYXNlIGJ5IGEgbWluZXIgd2l0aCB0aGUgYEFjY291bnRJZGAuJQFPdGhlcndpc2UsIHRoZSBzb2x1dGlvbiB3YXMgc3RvcmVkIGVpdGhlciBkdXJpbmcgdGhlIHVuc2lnbmVkIHBoYXNlIG9yIGJ5TQFgVDo6Rm9yY2VPcmlnaW5gLiBUaGUgYGJvb2xgIGlzIGB0cnVlYCB3aGVuIGEgcHJldmlvdXMgc29sdXRpb24gd2FzIGVqZWN0ZWQgdG8gbWFrZUhyb29tIGZvciB0aGlzIG9uZS5ERWxlY3Rpb25GaW5hbGl6ZWQIARxjb21wdXRljQgBPEVsZWN0aW9uQ29tcHV0ZQABFHNjb3JlXQMBNEVsZWN0aW9uU2NvcmUAAQQZAVRoZSBlbGVjdGlvbiBoYXMgYmVlbiBmaW5hbGl6ZWQsIHdpdGggdGhlIGdpdmVuIGNvbXB1dGF0aW9uIGFuZCBzY29yZS44RWxlY3Rpb25GYWlsZWQAAgxMQW4gZWxlY3Rpb24gZmFpbGVkLgABAU5vdCBtdWNoIGNhbiBiZSBzYWlkIGFib3V0IHdoaWNoIGNvbXB1dGVzIGZhaWxlZCBpbiB0aGUgcHJvY2Vzcy4gUmV3YXJkZWQIARxhY2NvdW50BAGYPFQgYXMgZnJhbWVfc3lzdGVtOjpDb25maWc+OjpBY2NvdW50SWQAARR2YWx1ZaQBMEJhbGFuY2VPZjxUPgADBCUBQW4gYWNjb3VudCBoYXMgYmVlbiByZXdhcmRlZCBmb3IgdGhlaXIgc2lnbmVkIHN1Ym1pc3Npb24gYmVpbmcgZmluYWxpemVkLhxTbGFzaGVkCAEcYWNjb3VudAQBmDxUIGFzIGZyYW1lX3N5c3RlbTo6Q29uZmlnPjo6QWNjb3VudElkAAEUdmFsdWWkATBCYWxhbmNlT2Y8VD4ABAQhAUFuIGFjY291bnQgaGFzIGJlZW4gc2xhc2hlZCBmb3Igc3VibWl0dGluZyBhbiBpbnZhbGlkIHNpZ25lZCBzdWJtaXNzaW9uLkRQaGFzZVRyYW5zaXRpb25lZAwBEGZyb22RCAFgUGhhc2U8QmxvY2tOdW1iZXJGb3I8VD4+AAEIdG+RCAFgUGhhc2U8QmxvY2tOdW1iZXJGb3I8VD4+AAEUcm91bmQ4AQx1MzIABQS4VGhlcmUgd2FzIGEgcGhhc2UgdHJhbnNpdGlvbiBpbiBhIGdpdmVuIHJvdW5kLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldI0ICJBwYWxsZXRfZWxlY3Rpb25fcHJvdmlkZXJfbXVsdGlfcGhhc2U8RWxlY3Rpb25Db21wdXRlAAEUHE9uQ2hhaW4AAAAYU2lnbmVkAAEAIFVuc2lnbmVkAAIAIEZhbGxiYWNrAAMAJEVtZXJnZW5jeQAEAACRCAiQcGFsbGV0X2VsZWN0aW9uX3Byb3ZpZGVyX211bHRpX3BoYXNlFFBoYXNlBAhCbgE4ARAMT2ZmAAAAGFNpZ25lZAABACBVbnNpZ25lZAQAlQgBKChib29sLCBCbikAAgAkRW1lcmdlbmN5AAMAAJUIAAAECJg4AJkIDEBwYWxsZXRfYmFnc19saXN0GHBhbGxldBRFdmVudAgEVAAESQABCCBSZWJhZ2dlZAwBDHdobwQBMFQ6OkFjY291bnRJZAABEGZyb20oASBUOjpTY29yZQABCHRvKAEgVDo6U2NvcmUAAASkTW92ZWQgYW4gYWNjb3VudCBmcm9tIG9uZSBiYWcgdG8gYW5vdGhlci4wU2NvcmVVcGRhdGVkCAEMd2hvBAEwVDo6QWNjb3VudElkAAEkbmV3X3Njb3JlKAEgVDo6U2NvcmUAAQTYVXBkYXRlZCB0aGUgc2NvcmUgb2Ygc29tZSBhY2NvdW50IHRvIHRoZSBnaXZlbiBhbW91bnQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0nQgMXHBhbGxldF9ub21pbmF0aW9uX3Bvb2xzGHBhbGxldBRFdmVudAQEVAABXBxDcmVhdGVkCAEkZGVwb3NpdG9yBAEwVDo6QWNjb3VudElkAAEccG9vbF9pZDgBGFBvb2xJZAAABGBBIHBvb2wgaGFzIGJlZW4gY3JlYXRlZC4YQm9uZGVkEAEYbWVtYmVyBAEwVDo6QWNjb3VudElkAAEccG9vbF9pZDgBGFBvb2xJZAABGGJvbmRlZKQBMEJhbGFuY2VPZjxUPgABGGpvaW5lZJgBEGJvb2wAAQSUQSBtZW1iZXIgaGFzIGJlY2FtZSBib25kZWQgaW4gYSBwb29sLhxQYWlkT3V0DAEYbWVtYmVyBAEwVDo6QWNjb3VudElkAAEccG9vbF9pZDgBGFBvb2xJZAABGHBheW91dKQBMEJhbGFuY2VPZjxUPgACBIxBIHBheW91dCBoYXMgYmVlbiBtYWRlIHRvIGEgbWVtYmVyLiBVbmJvbmRlZBQBGG1lbWJlcgQBMFQ6OkFjY291bnRJZAABHHBvb2xfaWQ4ARhQb29sSWQAARxiYWxhbmNlpAEwQmFsYW5jZU9mPFQ+AAEYcG9pbnRzpAEwQmFsYW5jZU9mPFQ+AAEMZXJhOAEgRXJhSW5kZXgAAyyYQSBtZW1iZXIgaGFzIHVuYm9uZGVkIGZyb20gdGhlaXIgcG9vbC4AOQEtIGBiYWxhbmNlYCBpcyB0aGUgY29ycmVzcG9uZGluZyBiYWxhbmNlIG9mIHRoZSBudW1iZXIgb2YgcG9pbnRzIHRoYXQgaGFzIGJlZW5VASAgcmVxdWVzdGVkIHRvIGJlIHVuYm9uZGVkICh0aGUgYXJndW1lbnQgb2YgdGhlIGB1bmJvbmRgIHRyYW5zYWN0aW9uKSBmcm9tIHRoZSBib25kZWQcICBwb29sLkUBLSBgcG9pbnRzYCBpcyB0aGUgbnVtYmVyIG9mIHBvaW50cyB0aGF0IGFyZSBpc3N1ZWQgYXMgYSByZXN1bHQgb2YgYGJhbGFuY2VgIGJlaW5nwGRpc3NvbHZlZCBpbnRvIHRoZSBjb3JyZXNwb25kaW5nIHVuYm9uZGluZyBwb29sLuQtIGBlcmFgIGlzIHRoZSBlcmEgaW4gd2hpY2ggdGhlIGJhbGFuY2Ugd2lsbCBiZSB1bmJvbmRlZC5VAUluIHRoZSBhYnNlbmNlIG9mIHNsYXNoaW5nLCB0aGVzZSB2YWx1ZXMgd2lsbCBtYXRjaC4gSW4gdGhlIHByZXNlbmNlIG9mIHNsYXNoaW5nLCB0aGVNAW51bWJlciBvZiBwb2ludHMgdGhhdCBhcmUgaXNzdWVkIGluIHRoZSB1bmJvbmRpbmcgcG9vbCB3aWxsIGJlIGxlc3MgdGhhbiB0aGUgYW1vdW50ZHJlcXVlc3RlZCB0byBiZSB1bmJvbmRlZC4kV2l0aGRyYXduEAEYbWVtYmVyBAEwVDo6QWNjb3VudElkAAEccG9vbF9pZDgBGFBvb2xJZAABHGJhbGFuY2WkATBCYWxhbmNlT2Y8VD4AARhwb2ludHOkATBCYWxhbmNlT2Y8VD4ABBicQSBtZW1iZXIgaGFzIHdpdGhkcmF3biBmcm9tIHRoZWlyIHBvb2wuACEBVGhlIGdpdmVuIG51bWJlciBvZiBgcG9pbnRzYCBoYXZlIGJlZW4gZGlzc29sdmVkIGluIHJldHVybiBvZiBgYmFsYW5jZWAuAFkBU2ltaWxhciB0byBgVW5ib25kZWRgIGV2ZW50LCBpbiB0aGUgYWJzZW5jZSBvZiBzbGFzaGluZywgdGhlIHJhdGlvIG9mIHBvaW50IHRvIGJhbGFuY2Uod2lsbCBiZSAxLiREZXN0cm95ZWQEARxwb29sX2lkOAEYUG9vbElkAAUEaEEgcG9vbCBoYXMgYmVlbiBkZXN0cm95ZWQuMFN0YXRlQ2hhbmdlZAgBHHBvb2xfaWQ4ARhQb29sSWQAASRuZXdfc3RhdGWJAwEkUG9vbFN0YXRlAAYEfFRoZSBzdGF0ZSBvZiBhIHBvb2wgaGFzIGNoYW5nZWQ0TWVtYmVyUmVtb3ZlZAwBHHBvb2xfaWQ4ARhQb29sSWQAARhtZW1iZXIEATBUOjpBY2NvdW50SWQAAUByZWxlYXNlZF9iYWxhbmNlpAEwQmFsYW5jZU9mPFQ+AAcUmEEgbWVtYmVyIGhhcyBiZWVuIHJlbW92ZWQgZnJvbSBhIHBvb2wuAFEBVGhlIHJlbW92YWwgY2FuIGJlIHZvbHVudGFyeSAod2l0aGRyYXduIGFsbCB1bmJvbmRlZCBmdW5kcykgb3IgaW52b2x1bnRhcnkgKGtpY2tlZCkuSQFBbnkgZnVuZHMgdGhhdCBhcmUgc3RpbGwgZGVsZWdhdGVkIChpLmUuIGRhbmdsaW5nIGRlbGVnYXRpb24pIGFyZSByZWxlYXNlZCBhbmQgYXJliHJlcHJlc2VudGVkIGJ5IGByZWxlYXNlZF9iYWxhbmNlYC4wUm9sZXNVcGRhdGVkDAEQcm9vdOQBUE9wdGlvbjxUOjpBY2NvdW50SWQ+AAEcYm91bmNlcuQBUE9wdGlvbjxUOjpBY2NvdW50SWQ+AAEkbm9taW5hdG9y5AFQT3B0aW9uPFQ6OkFjY291bnRJZD4ACAhVAVRoZSByb2xlcyBvZiBhIHBvb2wgaGF2ZSBiZWVuIHVwZGF0ZWQgdG8gdGhlIGdpdmVuIG5ldyByb2xlcy4gTm90ZSB0aGF0IHRoZSBkZXBvc2l0b3JEY2FuIG5ldmVyIGNoYW5nZS4sUG9vbFNsYXNoZWQIARxwb29sX2lkOAEYUG9vbElkAAEcYmFsYW5jZaQBMEJhbGFuY2VPZjxUPgAJBA0BVGhlIGFjdGl2ZSBiYWxhbmNlIG9mIHBvb2wgYHBvb2xfaWRgIGhhcyBiZWVuIHNsYXNoZWQgdG8gYGJhbGFuY2VgLlBVbmJvbmRpbmdQb29sU2xhc2hlZAwBHHBvb2xfaWQ4ARhQb29sSWQAAQxlcmE4ASBFcmFJbmRleAABHGJhbGFuY2WkATBCYWxhbmNlT2Y8VD4ACgQlAVRoZSB1bmJvbmQgcG9vbCBhdCBgZXJhYCBvZiBwb29sIGBwb29sX2lkYCBoYXMgYmVlbiBzbGFzaGVkIHRvIGBiYWxhbmNlYC5UUG9vbENvbW1pc3Npb25VcGRhdGVkCAEccG9vbF9pZDgBGFBvb2xJZAABHGN1cnJlbnShAwF8T3B0aW9uPChQZXJiaWxsLCBUOjpBY2NvdW50SWQpPgALBLRBIHBvb2wncyBjb21taXNzaW9uIHNldHRpbmcgaGFzIGJlZW4gY2hhbmdlZC5gUG9vbE1heENvbW1pc3Npb25VcGRhdGVkCAEccG9vbF9pZDgBGFBvb2xJZAABOG1heF9jb21taXNzaW9uwAEcUGVyYmlsbAAMBNRBIHBvb2wncyBtYXhpbXVtIGNvbW1pc3Npb24gc2V0dGluZyBoYXMgYmVlbiBjaGFuZ2VkLnxQb29sQ29tbWlzc2lvbkNoYW5nZVJhdGVVcGRhdGVkCAEccG9vbF9pZDgBGFBvb2xJZAABLGNoYW5nZV9yYXRlqQMBnENvbW1pc3Npb25DaGFuZ2VSYXRlPEJsb2NrTnVtYmVyRm9yPFQ+PgANBMxBIHBvb2wncyBjb21taXNzaW9uIGBjaGFuZ2VfcmF0ZWAgaGFzIGJlZW4gY2hhbmdlZC6QUG9vbENvbW1pc3Npb25DbGFpbVBlcm1pc3Npb25VcGRhdGVkCAEccG9vbF9pZDgBGFBvb2xJZAABKHBlcm1pc3Npb26tAwG8T3B0aW9uPENvbW1pc3Npb25DbGFpbVBlcm1pc3Npb248VDo6QWNjb3VudElkPj4ADgTIUG9vbCBjb21taXNzaW9uIGNsYWltIHBlcm1pc3Npb24gaGFzIGJlZW4gdXBkYXRlZC5UUG9vbENvbW1pc3Npb25DbGFpbWVkCAEccG9vbF9pZDgBGFBvb2xJZAABKGNvbW1pc3Npb26kATBCYWxhbmNlT2Y8VD4ADwSEUG9vbCBjb21taXNzaW9uIGhhcyBiZWVuIGNsYWltZWQuZE1pbkJhbGFuY2VEZWZpY2l0QWRqdXN0ZWQIARxwb29sX2lkOAEYUG9vbElkAAEYYW1vdW50pAEwQmFsYW5jZU9mPFQ+ABAEyFRvcHBlZCB1cCBkZWZpY2l0IGluIGZyb3plbiBFRCBvZiB0aGUgcmV3YXJkIHBvb2wuYE1pbkJhbGFuY2VFeGNlc3NBZGp1c3RlZAgBHHBvb2xfaWQ4ARhQb29sSWQAARhhbW91bnSkATBCYWxhbmNlT2Y8VD4AEQS8Q2xhaW1lZCBleGNlc3MgZnJvemVuIEVEIG9mIGFmIHRoZSByZXdhcmQgcG9vbC5wTWVtYmVyQ2xhaW1QZXJtaXNzaW9uVXBkYXRlZAgBGG1lbWJlcgQBMFQ6OkFjY291bnRJZAABKHBlcm1pc3Npb26dAwE8Q2xhaW1QZXJtaXNzaW9uABIEyEEgcG9vbCBtZW1iZXIncyBjbGFpbSBwZXJtaXNzaW9uIGhhcyBiZWVuIHVwZGF0ZWQuPE1ldGFkYXRhVXBkYXRlZAgBHHBvb2xfaWQ4ARhQb29sSWQAARhjYWxsZXIEATBUOjpBY2NvdW50SWQAEwR4QSBwb29sJ3MgbWV0YWRhdGEgd2FzIHVwZGF0ZWQuSFBvb2xOb21pbmF0aW9uTWFkZQgBHHBvb2xfaWQ4ARhQb29sSWQAARhjYWxsZXIEATBUOjpBY2NvdW50SWQAFAhZAUEgcG9vbCdzIG5vbWluYXRpbmcgYWNjb3VudCAob3IgdGhlIHBvb2wncyByb290IGFjY291bnQpIGhhcyBub21pbmF0ZWQgYSB2YWxpZGF0b3Igc2V0WG9uIGJlaGFsZiBvZiB0aGUgcG9vbC5QUG9vbE5vbWluYXRvckNoaWxsZWQIARxwb29sX2lkOAEYUG9vbElkAAEYY2FsbGVyBAEwVDo6QWNjb3VudElkABUEuFRoZSBwb29sIGlzIGNoaWxsZWQgaS5lLiBubyBsb25nZXIgbm9taW5hdGluZy5MR2xvYmFsUGFyYW1zVXBkYXRlZBgBNG1pbl9qb2luX2JvbmSkATBCYWxhbmNlT2Y8VD4AATxtaW5fY3JlYXRlX2JvbmSkATBCYWxhbmNlT2Y8VD4AASRtYXhfcG9vbHPlAQEsT3B0aW9uPHUzMj4AASxtYXhfbWVtYmVyc+UBASxPcHRpb248dTMyPgABUG1heF9tZW1iZXJzX3Blcl9wb29s5QEBLE9wdGlvbjx1MzI+AAFUZ2xvYmFsX21heF9jb21taXNzaW9uoQgBPE9wdGlvbjxQZXJiaWxsPgAWBAEBR2xvYmFsIHBhcmFtZXRlcnMgcmVndWxhdGluZyBub21pbmF0aW9uIHBvb2xzIGhhdmUgYmVlbiB1cGRhdGVkLgRYRXZlbnRzIG9mIHRoaXMgcGFsbGV0LqEIBBhPcHRpb24EBFQBwAEIEE5vbmUAAAAQU29tZQQAwAAAAQAApQgMTHBhbGxldF9mYXN0X3Vuc3Rha2UYcGFsbGV0FEV2ZW50BARUAAEUIFVuc3Rha2VkCAEUc3Rhc2gEATBUOjpBY2NvdW50SWQAARhyZXN1bHTxBwE4RGlzcGF0Y2hSZXN1bHQAAARYQSBzdGFrZXIgd2FzIHVuc3Rha2VkLhxTbGFzaGVkCAEUc3Rhc2gEATBUOjpBY2NvdW50SWQAARhhbW91bnSkATBCYWxhbmNlT2Y8VD4AAQQZAUEgc3Rha2VyIHdhcyBzbGFzaGVkIGZvciByZXF1ZXN0aW5nIGZhc3QtdW5zdGFrZSB3aGlsc3QgYmVpbmcgZXhwb3NlZC4wQmF0Y2hDaGVja2VkBAEQZXJhc8wBNFZlYzxFcmFJbmRleD4AAgRFAUEgYmF0Y2ggd2FzIHBhcnRpYWxseSBjaGVja2VkIGZvciB0aGUgZ2l2ZW4gZXJhcywgYnV0IHRoZSBwcm9jZXNzIGRpZCBub3QgZmluaXNoLjRCYXRjaEZpbmlzaGVkBAEQc2l6ZTgBDHUzMgADEJxBIGJhdGNoIG9mIGEgZ2l2ZW4gc2l6ZSB3YXMgdGVybWluYXRlZC4AVQFUaGlzIGlzIGFsd2F5cyBmb2xsb3dzIGJ5IGEgbnVtYmVyIG9mIGBVbnN0YWtlZGAgb3IgYFNsYXNoZWRgIGV2ZW50cywgbWFya2luZyB0aGUgZW5k6G9mIHRoZSBiYXRjaC4gQSBuZXcgYmF0Y2ggd2lsbCBiZSBjcmVhdGVkIHVwb24gbmV4dCBibG9jay40SW50ZXJuYWxFcnJvcgAEBOhBbiBpbnRlcm5hbCBlcnJvciBoYXBwZW5lZC4gT3BlcmF0aW9ucyB3aWxsIGJlIHBhdXNlZCBub3cuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0qQgMYHBhbGxldF9kZWxlZ2F0ZWRfc3Rha2luZxhwYWxsZXQURXZlbnQEBFQAARAkRGVsZWdhdGVkDAEUYWdlbnQEATBUOjpBY2NvdW50SWQAASRkZWxlZ2F0b3IEATBUOjpBY2NvdW50SWQAARhhbW91bnSkATBCYWxhbmNlT2Y8VD4AAAR8RnVuZHMgZGVsZWdhdGVkIGJ5IGEgZGVsZWdhdG9yLiBSZWxlYXNlZAwBFGFnZW50BAEwVDo6QWNjb3VudElkAAEkZGVsZWdhdG9yBAEwVDo6QWNjb3VudElkAAEYYW1vdW50pAEwQmFsYW5jZU9mPFQ+AAEEeEZ1bmRzIHJlbGVhc2VkIHRvIGEgZGVsZWdhdG9yLhxTbGFzaGVkDAEUYWdlbnQEATBUOjpBY2NvdW50SWQAASRkZWxlZ2F0b3IEATBUOjpBY2NvdW50SWQAARhhbW91bnSkATBCYWxhbmNlT2Y8VD4AAgR8RnVuZHMgc2xhc2hlZCBmcm9tIGEgZGVsZWdhdG9yLkhNaWdyYXRlZERlbGVnYXRpb24MARRhZ2VudAQBMFQ6OkFjY291bnRJZAABJGRlbGVnYXRvcgQBMFQ6OkFjY291bnRJZAABGGFtb3VudKQBMEJhbGFuY2VPZjxUPgADBMRVbmNsYWltZWQgZGVsZWdhdGlvbiBmdW5kcyBtaWdyYXRlZCB0byBkZWxlZ2F0b3IuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0rQgMeHBhbGxldF9zdGFraW5nX2FzeW5jX2FoX2NsaWVudBhwYWxsZXQURXZlbnQEBFQAARhQVmFsaWRhdG9yU2V0UmVjZWl2ZWQQAQhpZDgBDHUzMgABXG5ld192YWxpZGF0b3Jfc2V0X2NvdW50OAEMdTMyAAEscHJ1bmVfdXBfdG/lAQFQT3B0aW9uPFNlc3Npb25JbmRleD4AASBsZWZ0b3ZlcpgBEGJvb2wAAASYQSBuZXcgdmFsaWRhdG9yIHNldCBoYXMgYmVlbiByZWNlaXZlZC5cQ291bGROb3RNZXJnZUFuZERyb3BwZWQAARD0V2UgY291bGQgbm90IG1lcmdlLCBhbmQgdGhlcmVmb3JlIGRyb3BwZWQgYSBidWZmZXJlZCBtZXNzYWdlLgBVAU5vdGUgdGhhdCB0aGlzIGV2ZW50IGlzIG1vcmUgcmVzZW1ibGluZyBhbiBlcnJvciwgYnV0IHdlIHVzZSBhbiBldmVudCBiZWNhdXNlIGluIHRoaXPQcGFsbGV0IHdlIG5lZWQgdG8gbXV0YXRlIHN0b3JhZ2UgdXBvbiBzb21lIGZhaWx1cmVzLlRTZXRUb29TbWFsbEFuZERyb3BwZWQAAgjMVGhlIHZhbGlkYXRvciBzZXQgcmVjZWl2ZWQgaXMgd2F5IHRvbyBzbWFsbCwgYXMgcGVykFtgQ29uZmlnOjpNaW5pbXVtVmFsaWRhdG9yU2V0U2l6ZWBdLihVbmV4cGVjdGVkBACxCAE4VW5leHBlY3RlZEtpbmQAAwhZAVNvbWV0aGluZyBvY2N1cnJlZCB0aGF0IHNob3VsZCBuZXZlciBoYXBwZW4gdW5kZXIgbm9ybWFsIG9wZXJhdGlvbi4gTG9nZ2VkIGFzIGFuIGV2ZW50cGZvciBmYWlsLXNhZmUgb2JzZXJ2YWJpbGl0eS5IU2Vzc2lvbktleXNVcGRhdGVkCAEUc3Rhc2gEATBUOjpBY2NvdW50SWQAARh1cGRhdGW1CAFEU2Vzc2lvbktleXNVcGRhdGUABASUU2Vzc2lvbiBrZXlzIHVwZGF0ZWQgZm9yIGEgdmFsaWRhdG9yLlxTZXNzaW9uS2V5c1VwZGF0ZUZhaWxlZAwBFHN0YXNoBAEwVDo6QWNjb3VudElkAAEYdXBkYXRltQgBRFNlc3Npb25LZXlzVXBkYXRlAAEUZXJyb3LVBwE0RGlzcGF0Y2hFcnJvcgAFCOxTZXNzaW9uIGtleSB1cGRhdGUgZnJvbSBBc3NldEh1YiBmYWlsZWQgb24gdGhlIHJlbGF5IGNoYWluLrxMb2dnZWQgYXMgYW4gZXZlbnQgZm9yIGZhaWwtc2FmZSBvYnNlcnZhYmlsaXR5LgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldLEIDHhwYWxsZXRfc3Rha2luZ19hc3luY19haF9jbGllbnQYcGFsbGV0OFVuZXhwZWN0ZWRLaW5kAAEcgFJlY2VpdmVkVmFsaWRhdG9yU2V0V2hpbGVQYXNzaXZlAAAAYFVuZXhwZWN0ZWRNb2RlVHJhbnNpdGlvbgABAFxTZXNzaW9uUmVwb3J0U2VuZEZhaWxlZAACAFBTZXNzaW9uUmVwb3J0RHJvcHBlZAADAERPZmZlbmNlU2VuZEZhaWxlZAAEAFRWYWxpZGF0b3JQb2ludERyb3BwZWQABQBcSW52YWxpZEtleXNGcm9tQXNzZXRIdWIABgAAtQgMeHBhbGxldF9zdGFraW5nX2FzeW5jX2FoX2NsaWVudBhwYWxsZXREU2Vzc2lvbktleXNVcGRhdGUAAQgMU2V0AAAAGFB1cmdlZAABAAC5CBBscG9sa2Fkb3RfcnVudGltZV9wYXJhY2hhaW5zJGluY2x1c2lvbhhwYWxsZXQURXZlbnQEBFQAARA8Q2FuZGlkYXRlQmFja2VkEAC9CAFkQ2FuZGlkYXRlUmVjZWlwdDxUOjpIYXNoPgAATQQBIEhlYWREYXRhAADBCAEkQ29yZUluZGV4AADFCAEoR3JvdXBJbmRleAAABMBBIGNhbmRpZGF0ZSB3YXMgYmFja2VkLiBgW2NhbmRpZGF0ZSwgaGVhZF9kYXRhXWBEQ2FuZGlkYXRlSW5jbHVkZWQQAL0IAWRDYW5kaWRhdGVSZWNlaXB0PFQ6Okhhc2g+AABNBAEgSGVhZERhdGEAAMEIASRDb3JlSW5kZXgAAMUIAShHcm91cEluZGV4AAEEyEEgY2FuZGlkYXRlIHdhcyBpbmNsdWRlZC4gYFtjYW5kaWRhdGUsIGhlYWRfZGF0YV1gRENhbmRpZGF0ZVRpbWVkT3V0DAC9CAFkQ2FuZGlkYXRlUmVjZWlwdDxUOjpIYXNoPgAATQQBIEhlYWREYXRhAADBCAEkQ29yZUluZGV4AAIEvEEgY2FuZGlkYXRlIHRpbWVkIG91dC4gYFtjYW5kaWRhdGUsIGhlYWRfZGF0YV1gWFVwd2FyZE1lc3NhZ2VzUmVjZWl2ZWQIARBmcm9tFQIBGFBhcmFJZAABFGNvdW50OAEMdTMyAAME+FNvbWUgdXB3YXJkIG1lc3NhZ2VzIGhhdmUgYmVlbiByZWNlaXZlZCBhbmQgd2lsbCBiZSBwcm9jZXNzZWQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0vQgMTHBvbGthZG90X3ByaW1pdGl2ZXMIdjlIQ2FuZGlkYXRlUmVjZWlwdFYyBARIATwACAEoZGVzY3JpcHRvciEEAWBDYW5kaWRhdGVEZXNjcmlwdG9yVjI8SD4AAUBjb21taXRtZW50c19oYXNoPAEQSGFzaAAAwQgMTHBvbGthZG90X3ByaW1pdGl2ZXMIdjkkQ29yZUluZGV4AAAEADgBDHUzMgAAxQgMTHBvbGthZG90X3ByaW1pdGl2ZXMIdjkoR3JvdXBJbmRleAAABAA4AQx1MzIAAMkIEGxwb2xrYWRvdF9ydW50aW1lX3BhcmFjaGFpbnMUcGFyYXMYcGFsbGV0FEV2ZW50BARUAAEoSEN1cnJlbnRDb2RlVXBkYXRlZAQAFQIBGFBhcmFJZAAABMxDdXJyZW50IGNvZGUgaGFzIGJlZW4gdXBkYXRlZCBmb3IgYSBQYXJhLiBgcGFyYV9pZGBIQ3VycmVudEhlYWRVcGRhdGVkBAAVAgEYUGFyYUlkAAEEzEN1cnJlbnQgaGVhZCBoYXMgYmVlbiB1cGRhdGVkIGZvciBhIFBhcmEuIGBwYXJhX2lkYFBDb2RlVXBncmFkZVNjaGVkdWxlZAQAFQIBGFBhcmFJZAACBNxBIGNvZGUgdXBncmFkZSBoYXMgYmVlbiBzY2hlZHVsZWQgZm9yIGEgUGFyYS4gYHBhcmFfaWRgME5ld0hlYWROb3RlZAQAFQIBGFBhcmFJZAADBLxBIG5ldyBoZWFkIGhhcyBiZWVuIG5vdGVkIGZvciBhIFBhcmEuIGBwYXJhX2lkYDBBY3Rpb25RdWV1ZWQIABUCARhQYXJhSWQAADgBMFNlc3Npb25JbmRleAAEBPBBIHBhcmEgaGFzIGJlZW4gcXVldWVkIHRvIGV4ZWN1dGUgcGVuZGluZyBhY3Rpb25zLiBgcGFyYV9pZGA8UHZmQ2hlY2tTdGFydGVkCAAtBAFIVmFsaWRhdGlvbkNvZGVIYXNoAAAVAgEYUGFyYUlkAAUIVQFUaGUgZ2l2ZW4gcGFyYSBlaXRoZXIgaW5pdGlhdGVkIG9yIHN1YnNjcmliZWQgdG8gYSBQVkYgY2hlY2sgZm9yIHRoZSBnaXZlbiB2YWxpZGF0aW9ubGNvZGUuIGBjb2RlX2hhc2hgIGBwYXJhX2lkYEBQdmZDaGVja0FjY2VwdGVkCAAtBAFIVmFsaWRhdGlvbkNvZGVIYXNoAAAVAgEYUGFyYUlkAAYIEQFUaGUgZ2l2ZW4gdmFsaWRhdGlvbiBjb2RlIHdhcyBhY2NlcHRlZCBieSB0aGUgUFZGIHByZS1jaGVja2luZyB2b3RlLlRgY29kZV9oYXNoYCBgcGFyYV9pZGBAUHZmQ2hlY2tSZWplY3RlZAgALQQBSFZhbGlkYXRpb25Db2RlSGFzaAAAFQIBGFBhcmFJZAAHCBEBVGhlIGdpdmVuIHZhbGlkYXRpb24gY29kZSB3YXMgcmVqZWN0ZWQgYnkgdGhlIFBWRiBwcmUtY2hlY2tpbmcgdm90ZS5UYGNvZGVfaGFzaGAgYHBhcmFfaWRgWFVwZ3JhZGVDb29sZG93blJlbW92ZWQEARxwYXJhX2lkFQIBGFBhcmFJZATEVGhlIHBhcmFjaGFpbiBmb3Igd2hpY2ggdGhlIGNvb2xkb3duIGdvdCByZW1vdmVkLggEhFRoZSB1cGdyYWRlIGNvb2xkb3duIHdhcyByZW1vdmVkLjhDb2RlQXV0aG9yaXplZAwBHHBhcmFfaWQVAgEYUGFyYUlkBBBQYXJhASRjb2RlX2hhc2gtBAFIVmFsaWRhdGlvbkNvZGVIYXNoBFRBdXRob3JpemVkIGNvZGUgaGFzaC4BJGV4cGlyZV9hdDgBREJsb2NrTnVtYmVyRm9yPFQ+BORCbG9jayBhdCB3aGljaCBhdXRob3JpemF0aW9uIGV4cGlyZXMgYW5kIHdpbGwgYmUgcmVtb3ZlZC4JBLxBIG5ldyBjb2RlIGhhc2ggaGFzIGJlZW4gYXV0aG9yaXplZCBmb3IgYSBQYXJhLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldM0IEGxwb2xrYWRvdF9ydW50aW1lX3BhcmFjaGFpbnMQaHJtcBhwYWxsZXQURXZlbnQEBFQAARxQT3BlbkNoYW5uZWxSZXF1ZXN0ZWQQARhzZW5kZXIVAgEYUGFyYUlkAAEkcmVjaXBpZW50FQIBGFBhcmFJZAABVHByb3Bvc2VkX21heF9jYXBhY2l0eTgBDHUzMgABZHByb3Bvc2VkX21heF9tZXNzYWdlX3NpemU4AQx1MzIAAARwT3BlbiBIUk1QIGNoYW5uZWwgcmVxdWVzdGVkLkxPcGVuQ2hhbm5lbENhbmNlbGVkCAEwYnlfcGFyYWNoYWluFQIBGFBhcmFJZAABKGNoYW5uZWxfaWSNBAE0SHJtcENoYW5uZWxJZAABBCkBQW4gSFJNUCBjaGFubmVsIHJlcXVlc3Qgc2VudCBieSB0aGUgcmVjZWl2ZXIgd2FzIGNhbmNlbGVkIGJ5IGVpdGhlciBwYXJ0eS5MT3BlbkNoYW5uZWxBY2NlcHRlZAgBGHNlbmRlchUCARhQYXJhSWQAASRyZWNpcGllbnQVAgEYUGFyYUlkAAIEbE9wZW4gSFJNUCBjaGFubmVsIGFjY2VwdGVkLjRDaGFubmVsQ2xvc2VkCAEwYnlfcGFyYWNoYWluFQIBGFBhcmFJZAABKGNoYW5uZWxfaWSNBAE0SHJtcENoYW5uZWxJZAADBFBIUk1QIGNoYW5uZWwgY2xvc2VkLlhIcm1wQ2hhbm5lbEZvcmNlT3BlbmVkEAEYc2VuZGVyFQIBGFBhcmFJZAABJHJlY2lwaWVudBUCARhQYXJhSWQAAVRwcm9wb3NlZF9tYXhfY2FwYWNpdHk4AQx1MzIAAWRwcm9wb3NlZF9tYXhfbWVzc2FnZV9zaXplOAEMdTMyAAQErEFuIEhSTVAgY2hhbm5lbCB3YXMgb3BlbmVkIHZpYSBSb290IG9yaWdpbi5cSHJtcFN5c3RlbUNoYW5uZWxPcGVuZWQQARhzZW5kZXIVAgEYUGFyYUlkAAEkcmVjaXBpZW50FQIBGFBhcmFJZAABVHByb3Bvc2VkX21heF9jYXBhY2l0eTgBDHUzMgABZHByb3Bvc2VkX21heF9tZXNzYWdlX3NpemU4AQx1MzIABQS8QW4gSFJNUCBjaGFubmVsIHdhcyBvcGVuZWQgd2l0aCBhIHN5c3RlbSBjaGFpbi5oT3BlbkNoYW5uZWxEZXBvc2l0c1VwZGF0ZWQIARhzZW5kZXIVAgEYUGFyYUlkAAEkcmVjaXBpZW50FQIBGFBhcmFJZAAGBKBBbiBIUk1QIGNoYW5uZWwncyBkZXBvc2l0cyB3ZXJlIHVwZGF0ZWQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV00QgQbHBvbGthZG90X3J1bnRpbWVfcGFyYWNoYWlucyBkaXNwdXRlcxhwYWxsZXQURXZlbnQEBFQAAQxARGlzcHV0ZUluaXRpYXRlZAgAYQQBNENhbmRpZGF0ZUhhc2gAANUIATxEaXNwdXRlTG9jYXRpb24AAAQJAUEgZGlzcHV0ZSBoYXMgYmVlbiBpbml0aWF0ZWQuIFxbY2FuZGlkYXRlIGhhc2gsIGRpc3B1dGUgbG9jYXRpb25cXUBEaXNwdXRlQ29uY2x1ZGVkCABhBAE0Q2FuZGlkYXRlSGFzaAAA2QgBNERpc3B1dGVSZXN1bHQAAQjMQSBkaXNwdXRlIGhhcyBjb25jbHVkZWQgZm9yIG9yIGFnYWluc3QgYSBjYW5kaWRhdGUutGBcW3BhcmEgaWQsIGNhbmRpZGF0ZSBoYXNoLCBkaXNwdXRlIHJlc3VsdFxdYBhSZXZlcnQEADgBREJsb2NrTnVtYmVyRm9yPFQ+AAIQ/EEgZGlzcHV0ZSBoYXMgY29uY2x1ZGVkIHdpdGggc3VwZXJtYWpvcml0eSBhZ2FpbnN0IGEgY2FuZGlkYXRlLg0BQmxvY2sgYXV0aG9ycyBzaG91bGQgbm8gbG9uZ2VyIGJ1aWxkIG9uIHRvcCBvZiB0aGlzIGhlYWQgYW5kIHNob3VsZAEBaW5zdGVhZCByZXZlcnQgdGhlIGJsb2NrIGF0IHRoZSBnaXZlbiBoZWlnaHQuIFRoaXMgc2hvdWxkIGJlIHRoZfxudW1iZXIgb2YgdGhlIGNoaWxkIG9mIHRoZSBsYXN0IGtub3duIHZhbGlkIGJsb2NrIGluIHRoZSBjaGFpbi4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXTVCAxscG9sa2Fkb3RfcnVudGltZV9wYXJhY2hhaW5zIGRpc3B1dGVzPERpc3B1dGVMb2NhdGlvbgABCBRMb2NhbAAAABhSZW1vdGUAAQAA2QgMbHBvbGthZG90X3J1bnRpbWVfcGFyYWNoYWlucyBkaXNwdXRlczREaXNwdXRlUmVzdWx0AAEIFFZhbGlkAAAAHEludmFsaWQAAQAA3QgQbHBvbGthZG90X3J1bnRpbWVfcGFyYWNoYWlucyRvbl9kZW1hbmQYcGFsbGV0FEV2ZW50BARUAAEMTE9uRGVtYW5kT3JkZXJQbGFjZWQMARxwYXJhX2lkFQIBGFBhcmFJZAABKHNwb3RfcHJpY2WkATBCYWxhbmNlT2Y8VD4AAShvcmRlcmVkX2J5BAEwVDo6QWNjb3VudElkAAAEDQFBbiBvcmRlciB3YXMgcGxhY2VkIGF0IHNvbWUgc3BvdCBwcmljZSBhbW91bnQgYnkgb3JkZXJlciBvcmRlcmVkX2J5MFNwb3RQcmljZVNldAQBKHNwb3RfcHJpY2WkATBCYWxhbmNlT2Y8VD4AAQS4VGhlIHZhbHVlIG9mIHRoZSBzcG90IHByaWNlIGhhcyBsaWtlbHkgY2hhbmdlZDxBY2NvdW50Q3JlZGl0ZWQIAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnSkATBCYWxhbmNlT2Y8VD4AAgR0QW4gYWNjb3VudCB3YXMgZ2l2ZW4gY3JlZGl0cy4EfFRoZSBgRXZlbnRgIGVudW0gb2YgdGhpcyBwYWxsZXThCBBccG9sa2Fkb3RfcnVudGltZV9jb21tb248cGFyYXNfcmVnaXN0cmFyGHBhbGxldBRFdmVudAQEVAABEChSZWdpc3RlcmVkCAEccGFyYV9pZBUCARhQYXJhSWQAARxtYW5hZ2VyBAEwVDo6QWNjb3VudElkAAAAMERlcmVnaXN0ZXJlZAQBHHBhcmFfaWQVAgEYUGFyYUlkAAEAIFJlc2VydmVkCAEccGFyYV9pZBUCARhQYXJhSWQAAQx3aG8EATBUOjpBY2NvdW50SWQAAgAcU3dhcHBlZAgBHHBhcmFfaWQVAgEYUGFyYUlkAAEgb3RoZXJfaWQVAgEYUGFyYUlkAAMABHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV05QgQXHBvbGthZG90X3J1bnRpbWVfY29tbW9uFHNsb3RzGHBhbGxldBRFdmVudAQEVAABCDhOZXdMZWFzZVBlcmlvZAQBMGxlYXNlX3BlcmlvZDgBQExlYXNlUGVyaW9kT2Y8VD4AAASQQSBuZXcgYFtsZWFzZV9wZXJpb2RdYCBpcyBiZWdpbm5pbmcuGExlYXNlZBgBHHBhcmFfaWQVAgEYUGFyYUlkAAEYbGVhc2VyBAEwVDo6QWNjb3VudElkAAEwcGVyaW9kX2JlZ2luOAFATGVhc2VQZXJpb2RPZjxUPgABMHBlcmlvZF9jb3VudDgBQExlYXNlUGVyaW9kT2Y8VD4AAThleHRyYV9yZXNlcnZlZKQBMEJhbGFuY2VPZjxUPgABMHRvdGFsX2Ftb3VudKQBMEJhbGFuY2VPZjxUPgABDDUBQSBwYXJhIGhhcyB3b24gdGhlIHJpZ2h0IHRvIGEgY29udGludW91cyBzZXQgb2YgbGVhc2UgcGVyaW9kcyBhcyBhIHBhcmFjaGFpbi5FAUZpcnN0IGJhbGFuY2UgaXMgYW55IGV4dHJhIGFtb3VudCByZXNlcnZlZCBvbiB0b3Agb2YgdGhlIHBhcmEncyBleGlzdGluZyBkZXBvc2l0LrBTZWNvbmQgYmFsYW5jZSBpcyB0aGUgdG90YWwgYW1vdW50IHJlc2VydmVkLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldOkIEFxwb2xrYWRvdF9ydW50aW1lX2NvbW1vbiBhdWN0aW9ucxhwYWxsZXQURXZlbnQEBFQAARw4QXVjdGlvblN0YXJ0ZWQMATRhdWN0aW9uX2luZGV4OAEwQXVjdGlvbkluZGV4AAEwbGVhc2VfcGVyaW9kOAFATGVhc2VQZXJpb2RPZjxUPgABGGVuZGluZzgBREJsb2NrTnVtYmVyRm9yPFQ+AAAISQFBbiBhdWN0aW9uIHN0YXJ0ZWQuIFByb3ZpZGVzIGl0cyBpbmRleCBhbmQgdGhlIGJsb2NrIG51bWJlciB3aGVyZSBpdCB3aWxsIGJlZ2luIHRvFQFjbG9zZSBhbmQgdGhlIGZpcnN0IGxlYXNlIHBlcmlvZCBvZiB0aGUgcXVhZHJ1cGxldCB0aGF0IGlzIGF1Y3Rpb25lZC40QXVjdGlvbkNsb3NlZAQBNGF1Y3Rpb25faW5kZXg4ATBBdWN0aW9uSW5kZXgAAQS4QW4gYXVjdGlvbiBlbmRlZC4gQWxsIGZ1bmRzIGJlY29tZSB1bnJlc2VydmVkLiBSZXNlcnZlZAwBGGJpZGRlcgQBMFQ6OkFjY291bnRJZAABOGV4dHJhX3Jlc2VydmVkpAEwQmFsYW5jZU9mPFQ+AAEwdG90YWxfYW1vdW50pAEwQmFsYW5jZU9mPFQ+AAIISQFGdW5kcyB3ZXJlIHJlc2VydmVkIGZvciBhIHdpbm5pbmcgYmlkLiBGaXJzdCBiYWxhbmNlIGlzIHRoZSBleHRyYSBhbW91bnQgcmVzZXJ2ZWQuUFNlY29uZCBpcyB0aGUgdG90YWwuKFVucmVzZXJ2ZWQIARhiaWRkZXIEATBUOjpBY2NvdW50SWQAARhhbW91bnSkATBCYWxhbmNlT2Y8VD4AAwQpAUZ1bmRzIHdlcmUgdW5yZXNlcnZlZCBzaW5jZSBiaWRkZXIgaXMgbm8gbG9uZ2VyIGFjdGl2ZS4gYFtiaWRkZXIsIGFtb3VudF1gSFJlc2VydmVDb25maXNjYXRlZAwBHHBhcmFfaWQVAgEYUGFyYUlkAAEYbGVhc2VyBAEwVDo6QWNjb3VudElkAAEYYW1vdW50pAEwQmFsYW5jZU9mPFQ+AAQIVQFTb21lb25lIGF0dGVtcHRlZCB0byBsZWFzZSB0aGUgc2FtZSBzbG90IHR3aWNlIGZvciBhIHBhcmFjaGFpbi4gVGhlIGFtb3VudCBpcyBoZWxkIGluuHJlc2VydmUgYnV0IG5vIHBhcmFjaGFpbiBzbG90IGhhcyBiZWVuIGxlYXNlZC4sQmlkQWNjZXB0ZWQUARhiaWRkZXIEATBUOjpBY2NvdW50SWQAARxwYXJhX2lkFQIBGFBhcmFJZAABGGFtb3VudKQBMEJhbGFuY2VPZjxUPgABKGZpcnN0X3Nsb3Q4AUBMZWFzZVBlcmlvZE9mPFQ+AAEkbGFzdF9zbG90OAFATGVhc2VQZXJpb2RPZjxUPgAFBMhBIG5ldyBiaWQgaGFzIGJlZW4gYWNjZXB0ZWQgYXMgdGhlIGN1cnJlbnQgd2lubmVyLjRXaW5uaW5nT2Zmc2V0CAE0YXVjdGlvbl9pbmRleDgBMEF1Y3Rpb25JbmRleAABMGJsb2NrX251bWJlcjgBREJsb2NrTnVtYmVyRm9yPFQ+AAYIWQFUaGUgd2lubmluZyBvZmZzZXQgd2FzIGNob3NlbiBmb3IgYW4gYXVjdGlvbi4gVGhpcyB3aWxsIG1hcCBpbnRvIHRoZSBgV2lubmluZ2Agc3RvcmFnZRBtYXAuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV07QgQXHBvbGthZG90X3J1bnRpbWVfY29tbW9uJGNyb3dkbG9hbhhwYWxsZXQURXZlbnQEBFQAASgcQ3JlYXRlZAQBHHBhcmFfaWQVAgEYUGFyYUlkAAAEjENyZWF0ZSBhIG5ldyBjcm93ZGxvYW5pbmcgY2FtcGFpZ24uLENvbnRyaWJ1dGVkDAEMd2hvBAEwVDo6QWNjb3VudElkAAEoZnVuZF9pbmRleBUCARhQYXJhSWQAARhhbW91bnSkATBCYWxhbmNlT2Y8VD4AAQRwQ29udHJpYnV0ZWQgdG8gYSBjcm93ZCBzYWxlLiBXaXRoZHJldwwBDHdobwQBMFQ6OkFjY291bnRJZAABKGZ1bmRfaW5kZXgVAgEYUGFyYUlkAAEYYW1vdW50pAEwQmFsYW5jZU9mPFQ+AAIEnFdpdGhkcmV3IGZ1bGwgYmFsYW5jZSBvZiBhIGNvbnRyaWJ1dG9yLkRQYXJ0aWFsbHlSZWZ1bmRlZAQBHHBhcmFfaWQVAgEYUGFyYUlkAAMILQFUaGUgbG9hbnMgaW4gYSBmdW5kIGhhdmUgYmVlbiBwYXJ0aWFsbHkgZGlzc29sdmVkLCBpLmUuIHRoZXJlIGFyZSBzb21lIGxlZnS0b3ZlciBjaGlsZCBrZXlzIHRoYXQgc3RpbGwgbmVlZCB0byBiZSBraWxsZWQuLEFsbFJlZnVuZGVkBAEccGFyYV9pZBUCARhQYXJhSWQABAScQWxsIGxvYW5zIGluIGEgZnVuZCBoYXZlIGJlZW4gcmVmdW5kZWQuJERpc3NvbHZlZAQBHHBhcmFfaWQVAgEYUGFyYUlkAAUESEZ1bmQgaXMgZGlzc29sdmVkLjxIYW5kbGVCaWRSZXN1bHQIARxwYXJhX2lkFQIBGFBhcmFJZAABGHJlc3VsdPEHAThEaXNwYXRjaFJlc3VsdAAGBPRUaGUgcmVzdWx0IG9mIHRyeWluZyB0byBzdWJtaXQgYSBuZXcgYmlkIHRvIHRoZSBTbG90cyBwYWxsZXQuGEVkaXRlZAQBHHBhcmFfaWQVAgEYUGFyYUlkAAcExFRoZSBjb25maWd1cmF0aW9uIHRvIGEgY3Jvd2Rsb2FuIGhhcyBiZWVuIGVkaXRlZC4sTWVtb1VwZGF0ZWQMAQx3aG8EATBUOjpBY2NvdW50SWQAARxwYXJhX2lkFQIBGFBhcmFJZAABEG1lbW8YARxWZWM8dTg+AAgEYEEgbWVtbyBoYXMgYmVlbiB1cGRhdGVkLjxBZGRlZFRvTmV3UmFpc2UEARxwYXJhX2lkFQIBGFBhcmFJZAAJBKBBIHBhcmFjaGFpbiBoYXMgYmVlbiBtb3ZlZCB0byBgTmV3UmFpc2VgBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV08QgQbHBvbGthZG90X3J1bnRpbWVfcGFyYWNoYWlucyBjb3JldGltZRhwYWxsZXQURXZlbnQEBFQAAQhQUmV2ZW51ZUluZm9SZXF1ZXN0ZWQEARB3aGVuOAFEQmxvY2tOdW1iZXJGb3I8VD4AAAQhAVRoZSBicm9rZXIgY2hhaW4gaGFzIGFza2VkIGZvciByZXZlbnVlIGluZm9ybWF0aW9uIGZvciBhIHNwZWNpZmljIGJsb2NrLjBDb3JlQXNzaWduZWQEARBjb3JlwQgBJENvcmVJbmRleAABBOxBIGNvcmUgaGFzIHJlY2VpdmVkIGEgbmV3IGFzc2lnbm1lbnQgZnJvbSB0aGUgYnJva2VyIGNoYWluLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldPUIDGxwYWxsZXRfc3RhdGVfdHJpZV9taWdyYXRpb24YcGFsbGV0FEV2ZW50BARUAAEQIE1pZ3JhdGVkDAEMdG9wOAEMdTMyAAEUY2hpbGQ4AQx1MzIAARxjb21wdXRl+QgBQE1pZ3JhdGlvbkNvbXB1dGUAAAg5AUdpdmVuIG51bWJlciBvZiBgKHRvcCwgY2hpbGQpYCBrZXlzIHdlcmUgbWlncmF0ZWQgcmVzcGVjdGl2ZWx5LCB3aXRoIHRoZSBnaXZlbihgY29tcHV0ZWAuHFNsYXNoZWQIAQx3aG8EATBUOjpBY2NvdW50SWQAARhhbW91bnSkATBCYWxhbmNlT2Y8VD4AAQS0U29tZSBhY2NvdW50IGdvdCBzbGFzaGVkIGJ5IHRoZSBnaXZlbiBhbW91bnQuVEF1dG9NaWdyYXRpb25GaW5pc2hlZAACBIRUaGUgYXV0byBtaWdyYXRpb24gdGFzayBmaW5pc2hlZC4YSGFsdGVkBAEUZXJyb3L9CAEgRXJyb3I8VD4AAwTsTWlncmF0aW9uIGdvdCBoYWx0ZWQgZHVlIHRvIGFuIGVycm9yIG9yIG1pc3MtY29uZmlndXJhdGlvbi4EcElubmVyIGV2ZW50cyBvZiB0aGlzIHBhbGxldC75CAxscGFsbGV0X3N0YXRlX3RyaWVfbWlncmF0aW9uGHBhbGxldEBNaWdyYXRpb25Db21wdXRlAAEIGFNpZ25lZAAAABBBdXRvAAEAAP0IDGxwYWxsZXRfc3RhdGVfdHJpZV9taWdyYXRpb24YcGFsbGV0FEVycm9yBARUAAEYPE1heFNpZ25lZExpbWl0cwAABIBNYXggc2lnbmVkIGxpbWl0cyBub3QgcmVzcGVjdGVkLihLZXlUb29Mb25nAAEctEEga2V5IHdhcyBsb25nZXIgdGhhbiB0aGUgY29uZmlndXJlZCBtYXhpbXVtLgARAVRoaXMgbWVhbnMgdGhhdCB0aGUgbWlncmF0aW9uIGhhbHRlZCBhdCB0aGUgY3VycmVudCBbYFByb2dyZXNzYF0gYW5kAQFjYW4gYmUgcmVzdW1lZCB3aXRoIGEgbGFyZ2VyIFtgY3JhdGU6OkNvbmZpZzo6TWF4S2V5TGVuYF0gdmFsdWUuIQFSZXRyeWluZyB3aXRoIHRoZSBzYW1lIFtgY3JhdGU6OkNvbmZpZzo6TWF4S2V5TGVuYF0gdmFsdWUgd2lsbCBub3Qgd29yay5FAVRoZSB2YWx1ZSBzaG91bGQgb25seSBiZSBpbmNyZWFzZWQgdG8gYXZvaWQgYSBzdG9yYWdlIG1pZ3JhdGlvbiBmb3IgdGhlIGN1cnJlbnRseZBzdG9yZWQgW2BjcmF0ZTo6UHJvZ3Jlc3M6Okxhc3RLZXlgXS44Tm90RW5vdWdoRnVuZHMAAgSUc3VibWl0dGVyIGRvZXMgbm90IGhhdmUgZW5vdWdoIGZ1bmRzLihCYWRXaXRuZXNzAAMEaEJhZCB3aXRuZXNzIGRhdGEgcHJvdmlkZWQuZFNpZ25lZE1pZ3JhdGlvbk5vdEFsbG93ZWQABAQlAVNpZ25lZCBtaWdyYXRpb24gaXMgbm90IGFsbG93ZWQgYmVjYXVzZSB0aGUgbWF4aW11bSBsaW1pdCBpcyBub3Qgc2V0IHlldC4wQmFkQ2hpbGRSb290AAUEYEJhZCBjaGlsZCByb290IHByb3ZpZGVkLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC4BCQwocGFsbGV0X3hjbRhwYWxsZXQURXZlbnQEBFQAAXQkQXR0ZW1wdGVkBAEcb3V0Y29tZQUJAVB4Y206OmxhdGVzdDo6T3V0Y29tZQAABKhFeGVjdXRpb24gb2YgYW4gWENNIG1lc3NhZ2Ugd2FzIGF0dGVtcHRlZC4QU2VudBABGG9yaWdpbqkBASBMb2NhdGlvbgABLGRlc3RpbmF0aW9uqQEBIExvY2F0aW9uAAEcbWVzc2FnZbkFARxYY208KCk+AAEobWVzc2FnZV9pZAgBHFhjbUhhc2gAAQRgQW4gWENNIG1lc3NhZ2Ugd2FzIHNlbnQuKFNlbmRGYWlsZWQQARhvcmlnaW6pAQEgTG9jYXRpb24AASxkZXN0aW5hdGlvbqkBASBMb2NhdGlvbgABFGVycm9yDQkBJFNlbmRFcnJvcgABKG1lc3NhZ2VfaWQIARxYY21IYXNoAAIEeEFuIFhDTSBtZXNzYWdlIGZhaWxlZCB0byBzZW5kLjxQcm9jZXNzWGNtRXJyb3IMARhvcmlnaW6pAQEgTG9jYXRpb24AARRlcnJvcuUFASBYY21FcnJvcgABKG1lc3NhZ2VfaWQIARxYY21IYXNoAAMEhEFuIFhDTSBtZXNzYWdlIGZhaWxlZCB0byBwcm9jZXNzLkhVbmV4cGVjdGVkUmVzcG9uc2UIARhvcmlnaW6pAQEgTG9jYXRpb24AASBxdWVyeV9pZCgBHFF1ZXJ5SWQABAxZAVF1ZXJ5IHJlc3BvbnNlIHJlY2VpdmVkIHdoaWNoIGRvZXMgbm90IG1hdGNoIGEgcmVnaXN0ZXJlZCBxdWVyeS4gVGhpcyBtYXkgYmUgYmVjYXVzZSBhVQFtYXRjaGluZyBxdWVyeSB3YXMgbmV2ZXIgcmVnaXN0ZXJlZCwgaXQgbWF5IGJlIGJlY2F1c2UgaXQgaXMgYSBkdXBsaWNhdGUgcmVzcG9uc2UsIG9ycGJlY2F1c2UgdGhlIHF1ZXJ5IHRpbWVkIG91dC40UmVzcG9uc2VSZWFkeQgBIHF1ZXJ5X2lkKAEcUXVlcnlJZAABIHJlc3BvbnNl2QUBIFJlc3BvbnNlAAUIXQFRdWVyeSByZXNwb25zZSBoYXMgYmVlbiByZWNlaXZlZCBhbmQgaXMgcmVhZHkgZm9yIHRha2luZyB3aXRoIGB0YWtlX3Jlc3BvbnNlYC4gVGhlcmUgaXOAbm8gcmVnaXN0ZXJlZCBub3RpZmljYXRpb24gY2FsbC4gTm90aWZpZWQMASBxdWVyeV9pZCgBHFF1ZXJ5SWQAATBwYWxsZXRfaW5kZXgMAQh1OAABKGNhbGxfaW5kZXgMAQh1OAAGCFkBUXVlcnkgcmVzcG9uc2UgaGFzIGJlZW4gcmVjZWl2ZWQgYW5kIHF1ZXJ5IGlzIHJlbW92ZWQuIFRoZSByZWdpc3RlcmVkIG5vdGlmaWNhdGlvbiBoYXOoYmVlbiBkaXNwYXRjaGVkIGFuZCBleGVjdXRlZCBzdWNjZXNzZnVsbHkuQE5vdGlmeU92ZXJ3ZWlnaHQUASBxdWVyeV9pZCgBHFF1ZXJ5SWQAATBwYWxsZXRfaW5kZXgMAQh1OAABKGNhbGxfaW5kZXgMAQh1OAABNGFjdHVhbF93ZWlnaHQ1AgEYV2VpZ2h0AAFMbWF4X2J1ZGdldGVkX3dlaWdodDUCARhXZWlnaHQABwxJAVF1ZXJ5IHJlc3BvbnNlIGhhcyBiZWVuIHJlY2VpdmVkIGFuZCBxdWVyeSBpcyByZW1vdmVkLiBUaGUgcmVnaXN0ZXJlZCBub3RpZmljYXRpb25ZAWNvdWxkIG5vdCBiZSBkaXNwYXRjaGVkIGJlY2F1c2UgdGhlIGRpc3BhdGNoIHdlaWdodCBpcyBncmVhdGVyIHRoYW4gdGhlIG1heGltdW0gd2VpZ2h05G9yaWdpbmFsbHkgYnVkZ2V0ZWQgYnkgdGhpcyBydW50aW1lIGZvciB0aGUgcXVlcnkgcmVzdWx0LkxOb3RpZnlEaXNwYXRjaEVycm9yDAEgcXVlcnlfaWQoARxRdWVyeUlkAAEwcGFsbGV0X2luZGV4DAEIdTgAAShjYWxsX2luZGV4DAEIdTgACAhVAVF1ZXJ5IHJlc3BvbnNlIGhhcyBiZWVuIHJlY2VpdmVkIGFuZCBxdWVyeSBpcyByZW1vdmVkLiBUaGVyZSB3YXMgYSBnZW5lcmFsIGVycm9yIHdpdGiIZGlzcGF0Y2hpbmcgdGhlIG5vdGlmaWNhdGlvbiBjYWxsLkhOb3RpZnlEZWNvZGVGYWlsZWQMASBxdWVyeV9pZCgBHFF1ZXJ5SWQAATBwYWxsZXRfaW5kZXgMAQh1OAABKGNhbGxfaW5kZXgMAQh1OAAJDFEBUXVlcnkgcmVzcG9uc2UgaGFzIGJlZW4gcmVjZWl2ZWQgYW5kIHF1ZXJ5IGlzIHJlbW92ZWQuIFRoZSBkaXNwYXRjaCB3YXMgdW5hYmxlIHRvIGJlWQFkZWNvZGVkIGludG8gYSBgQ2FsbGA7IHRoaXMgbWlnaHQgYmUgZHVlIHRvIGRpc3BhdGNoIGZ1bmN0aW9uIGhhdmluZyBhIHNpZ25hdHVyZSB3aGljaJRpcyBub3QgYChvcmlnaW4sIFF1ZXJ5SWQsIFJlc3BvbnNlKWAuQEludmFsaWRSZXNwb25kZXIMARhvcmlnaW6pAQEgTG9jYXRpb24AASBxdWVyeV9pZCgBHFF1ZXJ5SWQAAURleHBlY3RlZF9sb2NhdGlvbvkFAUBPcHRpb248TG9jYXRpb24+AAoMWQFFeHBlY3RlZCBxdWVyeSByZXNwb25zZSBoYXMgYmVlbiByZWNlaXZlZCBidXQgdGhlIG9yaWdpbiBsb2NhdGlvbiBvZiB0aGUgcmVzcG9uc2UgZG9lc1UBbm90IG1hdGNoIHRoYXQgZXhwZWN0ZWQuIFRoZSBxdWVyeSByZW1haW5zIHJlZ2lzdGVyZWQgZm9yIGEgbGF0ZXIsIHZhbGlkLCByZXNwb25zZSB0b2xiZSByZWNlaXZlZCBhbmQgYWN0ZWQgdXBvbi5cSW52YWxpZFJlc3BvbmRlclZlcnNpb24IARhvcmlnaW6pAQEgTG9jYXRpb24AASBxdWVyeV9pZCgBHFF1ZXJ5SWQACxxRAUV4cGVjdGVkIHF1ZXJ5IHJlc3BvbnNlIGhhcyBiZWVuIHJlY2VpdmVkIGJ1dCB0aGUgZXhwZWN0ZWQgb3JpZ2luIGxvY2F0aW9uIHBsYWNlZCBpbk0Bc3RvcmFnZSBieSB0aGlzIHJ1bnRpbWUgcHJldmlvdXNseSBjYW5ub3QgYmUgZGVjb2RlZC4gVGhlIHF1ZXJ5IHJlbWFpbnMgcmVnaXN0ZXJlZC4AQQFUaGlzIGlzIHVuZXhwZWN0ZWQgKHNpbmNlIGEgbG9jYXRpb24gcGxhY2VkIGluIHN0b3JhZ2UgaW4gYSBwcmV2aW91c2x5IGV4ZWN1dGluZ00BcnVudGltZSBzaG91bGQgYmUgcmVhZGFibGUgcHJpb3IgdG8gcXVlcnkgdGltZW91dCkgYW5kIGRhbmdlcm91cyBzaW5jZSB0aGUgcG9zc2libHlZAXZhbGlkIHJlc3BvbnNlIHdpbGwgYmUgZHJvcHBlZC4gTWFudWFsIGdvdmVybmFuY2UgaW50ZXJ2ZW50aW9uIGlzIHByb2JhYmx5IGdvaW5nIHRvIGJlHG5lZWRlZC40UmVzcG9uc2VUYWtlbgQBIHF1ZXJ5X2lkKAEcUXVlcnlJZAAMBMhSZWNlaXZlZCBxdWVyeSByZXNwb25zZSBoYXMgYmVlbiByZWFkIGFuZCByZW1vdmVkLjRBc3NldHNUcmFwcGVkDAEQaGFzaDwBEEgyNTYAARhvcmlnaW6pAQEgTG9jYXRpb24AARhhc3NldHMxBgE8VmVyc2lvbmVkQXNzZXRzAA0EuFNvbWUgYXNzZXRzIGhhdmUgYmVlbiBwbGFjZWQgaW4gYW4gYXNzZXQgdHJhcC5UVmVyc2lvbkNoYW5nZU5vdGlmaWVkEAEsZGVzdGluYXRpb26pAQEgTG9jYXRpb24AARhyZXN1bHQ4AShYY21WZXJzaW9uAAEQY29zdMUFARhBc3NldHMAAShtZXNzYWdlX2lkCAEcWGNtSGFzaAAODCUBQW4gWENNIHZlcnNpb24gY2hhbmdlIG5vdGlmaWNhdGlvbiBtZXNzYWdlIGhhcyBiZWVuIGF0dGVtcHRlZCB0byBiZSBzZW50LgDgVGhlIGNvc3Qgb2Ygc2VuZGluZyBpdCAoYm9ybmUgYnkgdGhlIGNoYWluKSBpcyBpbmNsdWRlZC5cU3VwcG9ydGVkVmVyc2lvbkNoYW5nZWQIASBsb2NhdGlvbqkBASBMb2NhdGlvbgABHHZlcnNpb244AShYY21WZXJzaW9uAA8IOQFUaGUgc3VwcG9ydGVkIHZlcnNpb24gb2YgYSBsb2NhdGlvbiBoYXMgYmVlbiBjaGFuZ2VkLiBUaGlzIG1pZ2h0IGJlIHRocm91Z2ggYW7AYXV0b21hdGljIG5vdGlmaWNhdGlvbiBvciBhIG1hbnVhbCBpbnRlcnZlbnRpb24uUE5vdGlmeVRhcmdldFNlbmRGYWlsDAEgbG9jYXRpb26pAQEgTG9jYXRpb24AASBxdWVyeV9pZCgBHFF1ZXJ5SWQAARRlcnJvcuUFASBYY21FcnJvcgAQCFkBQSBnaXZlbiBsb2NhdGlvbiB3aGljaCBoYWQgYSB2ZXJzaW9uIGNoYW5nZSBzdWJzY3JpcHRpb24gd2FzIGRyb3BwZWQgb3dpbmcgdG8gYW4gZXJyb3J8c2VuZGluZyB0aGUgbm90aWZpY2F0aW9uIHRvIGl0LmROb3RpZnlUYXJnZXRNaWdyYXRpb25GYWlsCAEgbG9jYXRpb27hAQFEVmVyc2lvbmVkTG9jYXRpb24AASBxdWVyeV9pZCgBHFF1ZXJ5SWQAEQhZAUEgZ2l2ZW4gbG9jYXRpb24gd2hpY2ggaGFkIGEgdmVyc2lvbiBjaGFuZ2Ugc3Vic2NyaXB0aW9uIHdhcyBkcm9wcGVkIG93aW5nIHRvIGFuIGVycm9ytG1pZ3JhdGluZyB0aGUgbG9jYXRpb24gdG8gb3VyIG5ldyBYQ00gZm9ybWF0LlRJbnZhbGlkUXVlcmllclZlcnNpb24IARhvcmlnaW6pAQEgTG9jYXRpb24AASBxdWVyeV9pZCgBHFF1ZXJ5SWQAEhxVAUV4cGVjdGVkIHF1ZXJ5IHJlc3BvbnNlIGhhcyBiZWVuIHJlY2VpdmVkIGJ1dCB0aGUgZXhwZWN0ZWQgcXVlcmllciBsb2NhdGlvbiBwbGFjZWQgaW5NAXN0b3JhZ2UgYnkgdGhpcyBydW50aW1lIHByZXZpb3VzbHkgY2Fubm90IGJlIGRlY29kZWQuIFRoZSBxdWVyeSByZW1haW5zIHJlZ2lzdGVyZWQuAEEBVGhpcyBpcyB1bmV4cGVjdGVkIChzaW5jZSBhIGxvY2F0aW9uIHBsYWNlZCBpbiBzdG9yYWdlIGluIGEgcHJldmlvdXNseSBleGVjdXRpbmdNAXJ1bnRpbWUgc2hvdWxkIGJlIHJlYWRhYmxlIHByaW9yIHRvIHF1ZXJ5IHRpbWVvdXQpIGFuZCBkYW5nZXJvdXMgc2luY2UgdGhlIHBvc3NpYmx5WQF2YWxpZCByZXNwb25zZSB3aWxsIGJlIGRyb3BwZWQuIE1hbnVhbCBnb3Zlcm5hbmNlIGludGVydmVudGlvbiBpcyBwcm9iYWJseSBnb2luZyB0byBiZRxuZWVkZWQuOEludmFsaWRRdWVyaWVyEAEYb3JpZ2luqQEBIExvY2F0aW9uAAEgcXVlcnlfaWQoARxRdWVyeUlkAAFAZXhwZWN0ZWRfcXVlcmllcqkBASBMb2NhdGlvbgABUG1heWJlX2FjdHVhbF9xdWVyaWVy+QUBQE9wdGlvbjxMb2NhdGlvbj4AEwxdAUV4cGVjdGVkIHF1ZXJ5IHJlc3BvbnNlIGhhcyBiZWVuIHJlY2VpdmVkIGJ1dCB0aGUgcXVlcmllciBsb2NhdGlvbiBvZiB0aGUgcmVzcG9uc2UgZG9lc1EBbm90IG1hdGNoIHRoZSBleHBlY3RlZC4gVGhlIHF1ZXJ5IHJlbWFpbnMgcmVnaXN0ZXJlZCBmb3IgYSBsYXRlciwgdmFsaWQsIHJlc3BvbnNlIHRvbGJlIHJlY2VpdmVkIGFuZCBhY3RlZCB1cG9uLlBWZXJzaW9uTm90aWZ5U3RhcnRlZAwBLGRlc3RpbmF0aW9uqQEBIExvY2F0aW9uAAEQY29zdMUFARhBc3NldHMAAShtZXNzYWdlX2lkCAEcWGNtSGFzaAAUCFkBQSByZW1vdGUgaGFzIHJlcXVlc3RlZCBYQ00gdmVyc2lvbiBjaGFuZ2Ugbm90aWZpY2F0aW9uIGZyb20gdXMgYW5kIHdlIGhhdmUgaG9ub3JlZCBpdC4dAUEgdmVyc2lvbiBpbmZvcm1hdGlvbiBtZXNzYWdlIGlzIHNlbnQgdG8gdGhlbSBhbmQgaXRzIGNvc3QgaXMgaW5jbHVkZWQuWFZlcnNpb25Ob3RpZnlSZXF1ZXN0ZWQMASxkZXN0aW5hdGlvbqkBASBMb2NhdGlvbgABEGNvc3TFBQEYQXNzZXRzAAEobWVzc2FnZV9pZAgBHFhjbUhhc2gAFQQ9AVdlIGhhdmUgcmVxdWVzdGVkIHRoYXQgYSByZW1vdGUgY2hhaW4gc2VuZCB1cyBYQ00gdmVyc2lvbiBjaGFuZ2Ugbm90aWZpY2F0aW9ucy5gVmVyc2lvbk5vdGlmeVVucmVxdWVzdGVkDAEsZGVzdGluYXRpb26pAQEgTG9jYXRpb24AARBjb3N0xQUBGEFzc2V0cwABKG1lc3NhZ2VfaWQIARxYY21IYXNoABYIJQFXZSBoYXZlIHJlcXVlc3RlZCB0aGF0IGEgcmVtb3RlIGNoYWluIHN0b3BzIHNlbmRpbmcgdXMgWENNIHZlcnNpb24gY2hhbmdlOG5vdGlmaWNhdGlvbnMuIEZlZXNQYWlkCAEYcGF5aW5nqQEBIExvY2F0aW9uAAEQZmVlc8UFARhBc3NldHMAFwQxAUZlZXMgd2VyZSBwYWlkIGZyb20gYSBsb2NhdGlvbiBmb3IgYW4gb3BlcmF0aW9uIChvZnRlbiBmb3IgdXNpbmcgYFNlbmRYY21gKS40QXNzZXRzQ2xhaW1lZAwBEGhhc2g8ARBIMjU2AAEYb3JpZ2luqQEBIExvY2F0aW9uAAEYYXNzZXRzMQYBPFZlcnNpb25lZEFzc2V0cwAYBMBTb21lIGFzc2V0cyBoYXZlIGJlZW4gY2xhaW1lZCBmcm9tIGFuIGFzc2V0IHRyYXBgVmVyc2lvbk1pZ3JhdGlvbkZpbmlzaGVkBAEcdmVyc2lvbjgBKFhjbVZlcnNpb24AGQSEQSBYQ00gdmVyc2lvbiBtaWdyYXRpb24gZmluaXNoZWQuPEFsaWFzQXV0aG9yaXplZAwBHGFsaWFzZXKpAQEgTG9jYXRpb24AARh0YXJnZXSpAQEgTG9jYXRpb24AARhleHBpcnlpBgEsT3B0aW9uPHU2ND4AGghdAUFuIGBhbGlhc2VyYCBsb2NhdGlvbiB3YXMgYXV0aG9yaXplZCBieSBgdGFyZ2V0YCB0byBhbGlhcyBpdCwgYXV0aG9yaXphdGlvbiB2YWxpZCB1bnRpbFhgZXhwaXJ5YCBibG9jayBudW1iZXIuZEFsaWFzQXV0aG9yaXphdGlvblJlbW92ZWQIARxhbGlhc2VyqQEBIExvY2F0aW9uAAEYdGFyZ2V0qQEBIExvY2F0aW9uABsEzGB0YXJnZXRgIHJlbW92ZWQgYWxpYXMgYXV0aG9yaXphdGlvbiBmb3IgYGFsaWFzZXJgLnBBbGlhc2VzQXV0aG9yaXphdGlvbnNSZW1vdmVkBAEYdGFyZ2V0qQEBIExvY2F0aW9uABwEqGB0YXJnZXRgIHJlbW92ZWQgYWxsIGFsaWFzIGF1dGhvcml6YXRpb25zLgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldAUJECxzdGFnaW5nX3hjbQh2NRh0cmFpdHMcT3V0Y29tZQABDCBDb21wbGV0ZQQBEHVzZWQ1AgEYV2VpZ2h0AAAAKEluY29tcGxldGUIARB1c2VkNQIBGFdlaWdodAABFGVycm9yCQkBQEluc3RydWN0aW9uRXJyb3IAAQAURXJyb3IEAAkJAUBJbnN0cnVjdGlvbkVycm9yAAIAAAkJECxzdGFnaW5nX3hjbQh2NRh0cmFpdHNASW5zdHJ1Y3Rpb25FcnJvcgAACAEUaW5kZXgMAUBJbnN0cnVjdGlvbkluZGV4AAEUZXJyb3LlBQEURXJyb3IAAA0JEAx4Y20IdjMYdHJhaXRzJFNlbmRFcnJvcgABHDROb3RBcHBsaWNhYmxlAAAAJFRyYW5zcG9ydAABAChVbnJvdXRhYmxlAAIAWERlc3RpbmF0aW9uVW5zdXBwb3J0ZWQAAwBURXhjZWVkc01heE1lc3NhZ2VTaXplAAQAPE1pc3NpbmdBcmd1bWVudAAFABBGZWVzAAYAABEJDFBwYWxsZXRfbWVzc2FnZV9xdWV1ZRhwYWxsZXQURXZlbnQEBFQAARBAUHJvY2Vzc2luZ0ZhaWxlZAwBCGlkPAEQSDI1NgSUVGhlIGBibGFrZTJfMjU2YCBoYXNoIG9mIHRoZSBtZXNzYWdlLgEYb3JpZ2lucQYBSE1lc3NhZ2VPcmlnaW5PZjxUPgRkVGhlIHF1ZXVlIG9mIHRoZSBtZXNzYWdlLgEUZXJyb3IVCQFMUHJvY2Vzc01lc3NhZ2VFcnJvchBgVGhlIGVycm9yIHRoYXQgb2NjdXJyZWQuAEkBVGhpcyBlcnJvciBpcyBwcmV0dHkgb3BhcXVlLiBNb3JlIGZpbmUtZ3JhaW5lZCBlcnJvcnMgbmVlZCB0byBiZSBlbWl0dGVkIGFzIGV2ZW50c2hieSB0aGUgYE1lc3NhZ2VQcm9jZXNzb3JgLgAEVQFNZXNzYWdlIGRpc2NhcmRlZCBkdWUgdG8gYW4gZXJyb3IgaW4gdGhlIGBNZXNzYWdlUHJvY2Vzc29yYCAodXN1YWxseSBhIGZvcm1hdCBlcnJvcikuJFByb2Nlc3NlZBABCGlkPAEQSDI1NgSUVGhlIGBibGFrZTJfMjU2YCBoYXNoIG9mIHRoZSBtZXNzYWdlLgEYb3JpZ2lucQYBSE1lc3NhZ2VPcmlnaW5PZjxUPgRkVGhlIHF1ZXVlIG9mIHRoZSBtZXNzYWdlLgEsd2VpZ2h0X3VzZWQ1AgEYV2VpZ2h0BMBIb3cgbXVjaCB3ZWlnaHQgd2FzIHVzZWQgdG8gcHJvY2VzcyB0aGUgbWVzc2FnZS4BHHN1Y2Nlc3OYARBib29sGIhXaGV0aGVyIHRoZSBtZXNzYWdlIHdhcyBwcm9jZXNzZWQuAEkBTm90ZSB0aGF0IHRoaXMgZG9lcyBub3QgbWVhbiB0aGF0IHRoZSB1bmRlcmx5aW5nIGBNZXNzYWdlUHJvY2Vzc29yYCB3YXMgaW50ZXJuYWxseTUBc3VjY2Vzc2Z1bC4gSXQgKnNvbGVseSogbWVhbnMgdGhhdCB0aGUgTVEgcGFsbGV0IHdpbGwgdHJlYXQgdGhpcyBhcyBhIHN1Y2Nlc3NNAWNvbmRpdGlvbiBhbmQgZGlzY2FyZCB0aGUgbWVzc2FnZS4gQW55IGludGVybmFsIGVycm9yIG5lZWRzIHRvIGJlIGVtaXR0ZWQgYXMgZXZlbnRzaGJ5IHRoZSBgTWVzc2FnZVByb2Nlc3NvcmAuAQRUTWVzc2FnZSBpcyBwcm9jZXNzZWQuSE92ZXJ3ZWlnaHRFbnF1ZXVlZBABCGlkCAEgW3U4OyAzMl0ElFRoZSBgYmxha2UyXzI1NmAgaGFzaCBvZiB0aGUgbWVzc2FnZS4BGG9yaWdpbnEGAUhNZXNzYWdlT3JpZ2luT2Y8VD4EZFRoZSBxdWV1ZSBvZiB0aGUgbWVzc2FnZS4BKHBhZ2VfaW5kZXg4ASRQYWdlSW5kZXgEYFRoZSBwYWdlIG9mIHRoZSBtZXNzYWdlLgE0bWVzc2FnZV9pbmRleDgBHFQ6OlNpemUEpFRoZSBpbmRleCBvZiB0aGUgbWVzc2FnZSB3aXRoaW4gdGhlIHBhZ2UuAgSMTWVzc2FnZSBwbGFjZWQgaW4gb3ZlcndlaWdodCBxdWV1ZS4oUGFnZVJlYXBlZAgBGG9yaWdpbnEGAUhNZXNzYWdlT3JpZ2luT2Y8VD4EWFRoZSBxdWV1ZSBvZiB0aGUgcGFnZS4BFGluZGV4OAEkUGFnZUluZGV4BFhUaGUgaW5kZXggb2YgdGhlIHBhZ2UuAwRUVGhpcyBwYWdlIHdhcyByZWFwZWQuBHxUaGUgYEV2ZW50YCBlbnVtIG9mIHRoaXMgcGFsbGV0FQkQNGZyYW1lX3N1cHBvcnQYdHJhaXRzIG1lc3NhZ2VzTFByb2Nlc3NNZXNzYWdlRXJyb3IAARgkQmFkRm9ybWF0AAAAHENvcnJ1cHQAAQAsVW5zdXBwb3J0ZWQAAgAoT3ZlcndlaWdodAQANQIBGFdlaWdodAADABRZaWVsZAAEAERTdGFja0xpbWl0UmVhY2hlZAAFAAAZCQxEcGFsbGV0X2Fzc2V0X3JhdGUYcGFsbGV0FEV2ZW50BARUAAEMQEFzc2V0UmF0ZUNyZWF0ZWQIAShhc3NldF9raW5kTQEBMFQ6OkFzc2V0S2luZAABEHJhdGV9BgEkRml4ZWRVMTI4AAAAQEFzc2V0UmF0ZVJlbW92ZWQEAShhc3NldF9raW5kTQEBMFQ6OkFzc2V0S2luZAABAEBBc3NldFJhdGVVcGRhdGVkDAEoYXNzZXRfa2luZE0BATBUOjpBc3NldEtpbmQAAQxvbGR9BgEkRml4ZWRVMTI4AAEMbmV3fQYBJEZpeGVkVTEyOAACAAR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldB0JDEhwYWxsZXRfcmNfbWlncmF0b3IYcGFsbGV0FEV2ZW50BARUAAFUPFN0YWdlVHJhbnNpdGlvbggBDG9sZL0GAUxNaWdyYXRpb25TdGFnZU9mPFQ+BJBUaGUgb2xkIHN0YWdlIGJlZm9yZSB0aGUgdHJhbnNpdGlvbi4BDG5ld70GAUxNaWdyYXRpb25TdGFnZU9mPFQ+BIxUaGUgbmV3IHN0YWdlIGFmdGVyIHRoZSB0cmFuc2l0aW9uLgAEgEEgc3RhZ2UgdHJhbnNpdGlvbiBoYXMgb2NjdXJyZWQuYEFzc2V0SHViTWlncmF0aW9uU3RhcnRlZAABGEkBVGhlIEFzc2V0IEh1YiBNaWdyYXRpb24gc3RhcnRlZCBhbmQgaXMgYWN0aXZlIHVudGlsIGBBc3NldEh1Yk1pZ3JhdGlvbkZpbmlzaGVkYCBpcyBlbWl0dGVkLgBVAVRoaXMgZXZlbnQgaXMgZXF1aXZhbGVudCB0byBgU3RhZ2VUcmFuc2l0aW9uIHsgbmV3OiBJbml0aWFsaXppbmcsIC4uIH1gIGJ1dCBpcyBlYXNpZXItAXRvIHVuZGVyc3RhbmQuIFRoZSBhY3RpdmF0aW9uIGlzIGltbWVkaWF0ZSBhbmQgYWZmZWN0cyBhbGwgZXZlbnRzIGhhcHBlbmluZyxhZnRlcndhcmRzLmRBc3NldEh1Yk1pZ3JhdGlvbkZpbmlzaGVkAAIUhFRoZSBBc3NldCBIdWIgTWlncmF0aW9uIGZpbmlzaGVkLgBZAVRoaXMgZXZlbnQgaXMgZXF1aXZhbGVudCB0byBgU3RhZ2VUcmFuc2l0aW9uIHsgbmV3OiBNaWdyYXRpb25Eb25lLCAuLiB9YCBidXQgaXMgZWFzaWVyKQF0byB1bmRlcnN0YW5kLiBUaGUgZmluaXNoaW5nIGlzIGltbWVkaWF0ZSBhbmQgYWZmZWN0cyBhbGwgZXZlbnRzIGhhcHBlbmluZyxhZnRlcndhcmRzLlRRdWVyeVJlc3BvbnNlUmVjZWl2ZWQIASBxdWVyeV9pZCgBDHU2NAQ0VGhlIHF1ZXJ5IElELgEgcmVzcG9uc2VJBQE4TWF5YmVFcnJvckNvZGUENFRoZSByZXNwb25zZS4DBIxBIHF1ZXJ5IHJlc3BvbnNlIGhhcyBiZWVuIHJlY2VpdmVkLkBYY21SZXNlbmRBdHRlbXB0CAEgcXVlcnlfaWQoAQx1NjQENFRoZSBxdWVyeSBJRC4BKHNlbmRfZXJyb3IhCQFET3B0aW9uPFNlbmRFcnJvcj4ESFRoZSBlcnJvciBtZXNzYWdlLgQEeEEgWENNIG1lc3NhZ2UgaGFzIGJlZW4gcmVzZW50LlxVbnByb2Nlc3NlZE1zZ0J1ZmZlclNldAgBDG5ldzgBDHUzMgQ0VGhlIG5ldyBzaXplLgEMb2xkOAEMdTMyBDRUaGUgb2xkIHNpemUuBQTEVGhlIHVucHJvY2Vzc2VkIG1lc3NhZ2UgYnVmZmVyIHNpemUgaGFzIGJlZW4gc2V0LlRBaFVtcFF1ZXVlUHJpb3JpdHlTZXQMASxwcmlvcml0aXplZJgBEGJvb2wM7EluZGljYXRlcyBpZiBBSCBVTVAgcXVldWUgd2FzIHN1Y2Nlc3NmdWxseSBzZXQgYXMgcHJpb3JpdHkuLQFJZiBgZmFsc2VgLCBpdCBtZWFucyB3ZSdyZSBpbiB0aGUgcm91bmQtcm9iaW4gcGhhc2Ugb2Ygb3VyIHByaW9yaXR5IHBhdHRlcm4pAShzZWUgW2BDb25maWc6OkFoVW1wUXVldWVQcmlvcml0eVBhdHRlcm5gXSksIHdoZXJlIG5vIHF1ZXVlIGdldHMgcHJpb3JpdHkuASxjeWNsZV9ibG9jazgBREJsb2NrTnVtYmVyRm9yPFQ+BPBDdXJyZW50IGJsb2NrIG51bWJlciB3aXRoaW4gdGhlIHBhdHRlcm4gY3ljbGUgKDEgdG8gcGVyaW9kKS4BMGN5Y2xlX3BlcmlvZDgBREJsb2NrTnVtYmVyRm9yPFQ+BKxUb3RhbCBudW1iZXIgb2YgYmxvY2tzIGluIHRoZSBwYXR0ZXJuIGN5Y2xlBgTwV2hldGhlciB0aGUgQUggVU1QIHF1ZXVlIHdhcyBwcmlvcml0aXplZCBmb3IgdGhlIG5leHQgYmxvY2subEFoVW1wUXVldWVQcmlvcml0eUNvbmZpZ1NldAgBDG9sZGkHAZRBaFVtcFF1ZXVlUHJpb3JpdHk8QmxvY2tOdW1iZXJGb3I8VD4+BGRUaGUgb2xkIHByaW9yaXR5IHBhdHRlcm4uAQxuZXdpBwGUQWhVbXBRdWV1ZVByaW9yaXR5PEJsb2NrTnVtYmVyRm9yPFQ+PgRkVGhlIG5ldyBwcmlvcml0eSBwYXR0ZXJuLgcEpFRoZSBBSCBVTVAgcXVldWUgcHJpb3JpdHkgY29uZmlnIHdhcyBzZXQuYE1pZ3JhdGVkQmFsYW5jZVJlY29yZFNldAgBEGtlcHSkAShUOjpCYWxhbmNlAAEgbWlncmF0ZWSkAShUOjpCYWxhbmNlAAgEgFRoZSB0b3RhbCBpc3N1YW5jZSB3YXMgcmVjb3JkZWQuXE1pZ3JhdGVkQmFsYW5jZUNvbnN1bWVkCAEQa2VwdKQBKFQ6OkJhbGFuY2UAASBtaWdyYXRlZKQBKFQ6OkJhbGFuY2UACQSEVGhlIFJDIGtlcHQgYmFsYW5jZSB3YXMgY29uc3VtZWQuKE1hbmFnZXJTZXQIAQxvbGTkAVBPcHRpb248VDo6QWNjb3VudElkPgRsVGhlIG9sZCBtYW5hZ2VyIGFjY291bnQgaWQuAQxuZXfkAVBPcHRpb248VDo6QWNjb3VudElkPgRsVGhlIG5ldyBtYW5hZ2VyIGFjY291bnQgaWQuCgR8VGhlIG1hbmFnZXIgYWNjb3VudCBpZCB3YXMgc2V0LhxYY21TZW50EAEYb3JpZ2luqQEBIExvY2F0aW9uAAEsZGVzdGluYXRpb26pAQEgTG9jYXRpb24AARxtZXNzYWdluQUBHFhjbTwoKT4AAShtZXNzYWdlX2lkCAEcWGNtSGFzaAALBGBBbiBYQ00gbWVzc2FnZSB3YXMgc2VudC5YU3Rha2luZ0VsZWN0aW9uc1BhdXNlZAAMBIhUaGUgc3Rha2luZyBlbGVjdGlvbnMgd2VyZSBwYXVzZWQuREFjY291bnRzUHJlc2VydmVkBAEgYWNjb3VudHOoAURWZWM8VDo6QWNjb3VudElkPgSQVGhlIGFjY291bnRzIHRoYXQgd2lsbCBiZSBwcmVzZXJ2ZWQuDQTUVGhlIGFjY291bnRzIHRvIGJlIHByZXNlcnZlZCBvbiBSZWxheSBDaGFpbiB3ZXJlIHNldC4wQ2FuY2VsbGVyU2V0CAEMb2xk5AFQT3B0aW9uPFQ6OkFjY291bnRJZD4EdFRoZSBvbGQgY2FuY2VsbGVyIGFjY291bnQgaWQuAQxuZXfkAVBPcHRpb248VDo6QWNjb3VudElkPgR0VGhlIG5ldyBjYW5jZWxsZXIgYWNjb3VudCBpZC4OBIRUaGUgY2FuY2VsbGVyIGFjY291bnQgaWQgd2FzIHNldC48TWlncmF0aW9uUGF1c2VkBAEscGF1c2Vfc3RhZ2W9BgFMTWlncmF0aW9uU3RhZ2VPZjxUPgSwVGhlIHN0YWdlIGF0IHdoaWNoIHRoZSBtaWdyYXRpb24gd2FzIHBhdXNlZC4PBGRUaGUgbWlncmF0aW9uIHdhcyBwYXVzZWQuSE1pZ3JhdGlvbkNhbmNlbGxlZAAQBHBUaGUgbWlncmF0aW9uIHdhcyBjYW5jZWxsZWQuTFB1cmVBY2NvdW50c0luZGV4ZWQEAURudW1fcHVyZV9hY2NvdW50czgBDHUzMgSQVGhlIG51bWJlciBvZiBpbmRleGVkIHB1cmUgYWNjb3VudHMuEQQpAVNvbWUgcHVyZSBhY2NvdW50cyB3ZXJlIGluZGV4ZWQgZm9yIHBvc3NpYmx5IHJlY2VpdmluZyBmcmVlIGBBbnlgIHByb3hpZXMuZE1hbmFnZXJNdWx0aXNpZ0Rpc3BhdGNoZWQEAQxyZXPxBwE4RGlzcGF0Y2hSZXN1bHQAEgSoVGhlIG1hbmFnZXIgbXVsdGlzaWcgZGlzcGF0Y2hlZCBzb21ldGhpbmcuUE1hbmFnZXJNdWx0aXNpZ1ZvdGVkBAEUdm90ZXM4AQx1MzIAEwSUVGhlIG1hbmFnZXIgbXVsdGlzaWcgcmVjZWl2ZWQgYSB2b3RlLlBNaWdyYXRpb25TZXR0aW5nc1NldAgBDG9sZHEHAWRPcHRpb248TWlncmF0aW9uU2V0dGluZ3M+BGxUaGUgb2xkIG1pZ3JhdGlvbiBzZXR0aW5ncy4BDG5ld3EHAWRPcHRpb248TWlncmF0aW9uU2V0dGluZ3M+BGxUaGUgbmV3IG1pZ3JhdGlvbiBzZXR0aW5ncy4UBIBUaGUgbWlncmF0aW9uIHNldHRpbmdzIHdlcmUgc2V0LgR8VGhlIGBFdmVudGAgZW51bSBvZiB0aGlzIHBhbGxldCEJBBhPcHRpb24EBFQBDQkBCBBOb25lAAAAEFNvbWUEAA0JAAABAAAlCQgwZnJhbWVfc3lzdGVtFFBoYXNlAAEMOEFwcGx5RXh0cmluc2ljBAA4AQx1MzIAAAAwRmluYWxpemF0aW9uAAEAOEluaXRpYWxpemF0aW9uAAIAACkJAAACSAAtCQgwZnJhbWVfc3lzdGVtWExhc3RSdW50aW1lVXBncmFkZUluZm8AAAgBMHNwZWNfdmVyc2lvbmABTGNvZGVjOjpDb21wYWN0PHUzMj4AASRzcGVjX25hbWUxCQFEQ293PCdzdGF0aWMsIHN0cj4AADEJBAxDb3cEBFQBNQkABAA1CQAAADUJAAAFAgA5CQgwZnJhbWVfc3lzdGVtYENvZGVVcGdyYWRlQXV0aG9yaXphdGlvbgQEVAAACAEkY29kZV9oYXNoPAEcVDo6SGFzaAABNGNoZWNrX3ZlcnNpb26YARBib29sAAA9CQwwZnJhbWVfc3lzdGVtGGxpbWl0czBCbG9ja1dlaWdodHMAAAwBKGJhc2VfYmxvY2s1AgEYV2VpZ2h0AAEkbWF4X2Jsb2NrNQIBGFdlaWdodAABJHBlcl9jbGFzc0EJAYRQZXJEaXNwYXRjaENsYXNzPFdlaWdodHNQZXJDbGFzcz4AAEEJDDRmcmFtZV9zdXBwb3J0IGRpc3BhdGNoQFBlckRpc3BhdGNoQ2xhc3MEBFQBRQkADAEYbm9ybWFsRQkBBFQAASxvcGVyYXRpb25hbEUJAQRUAAEkbWFuZGF0b3J5RQkBBFQAAEUJDDBmcmFtZV9zeXN0ZW0YbGltaXRzPFdlaWdodHNQZXJDbGFzcwAAEAE4YmFzZV9leHRyaW5zaWM1AgEYV2VpZ2h0AAE0bWF4X2V4dHJpbnNpY/0FAThPcHRpb248V2VpZ2h0PgABJG1heF90b3RhbP0FAThPcHRpb248V2VpZ2h0PgABIHJlc2VydmVk/QUBOE9wdGlvbjxXZWlnaHQ+AABJCQwwZnJhbWVfc3lzdGVtGGxpbWl0cyxCbG9ja0xlbmd0aAAABAEMbWF4TQkBVFBlckRpc3BhdGNoQ2xhc3M8dTMyPgAATQkMNGZyYW1lX3N1cHBvcnQgZGlzcGF0Y2hAUGVyRGlzcGF0Y2hDbGFzcwQEVAE4AAwBGG5vcm1hbDgBBFQAASxvcGVyYXRpb25hbDgBBFQAASRtYW5kYXRvcnk4AQRUAABRCQgoc3Bfd2VpZ2h0czxSdW50aW1lRGJXZWlnaHQAAAgBEHJlYWQoAQx1NjQAARR3cml0ZSgBDHU2NAAAVQkIKHNwX3ZlcnNpb244UnVudGltZVZlcnNpb24AACABJHNwZWNfbmFtZTEJAURDb3c8J3N0YXRpYywgc3RyPgABJGltcGxfbmFtZTEJAURDb3c8J3N0YXRpYywgc3RyPgABRGF1dGhvcmluZ192ZXJzaW9uOAEMdTMyAAEwc3BlY192ZXJzaW9uOAEMdTMyAAEwaW1wbF92ZXJzaW9uOAEMdTMyAAEQYXBpc1kJARxBcGlzVmVjAAFMdHJhbnNhY3Rpb25fdmVyc2lvbjgBDHUzMgABOHN5c3RlbV92ZXJzaW9uDAEIdTgAAFkJBAxDb3cEBFQBXQkABABdCQAAAF0JAAACYQkAYQkAAAQIIQU4AGUJDDBmcmFtZV9zeXN0ZW0YcGFsbGV0FEVycm9yBARUAAEkPEludmFsaWRTcGVjTmFtZQAACBEBVGhlIG5hbWUgb2Ygc3BlY2lmaWNhdGlvbiBkb2VzIG5vdCBtYXRjaCBiZXR3ZWVuIHRoZSBjdXJyZW50IHJ1bnRpbWVQYW5kIHRoZSBuZXcgcnVudGltZS5oU3BlY1ZlcnNpb25OZWVkc1RvSW5jcmVhc2UAAQhBAVRoZSBzcGVjaWZpY2F0aW9uIHZlcnNpb24gaXMgbm90IGFsbG93ZWQgdG8gZGVjcmVhc2UgYmV0d2VlbiB0aGUgY3VycmVudCBydW50aW1lUGFuZCB0aGUgbmV3IHJ1bnRpbWUudEZhaWxlZFRvRXh0cmFjdFJ1bnRpbWVWZXJzaW9uAAIM7EZhaWxlZCB0byBleHRyYWN0IHRoZSBydW50aW1lIHZlcnNpb24gZnJvbSB0aGUgbmV3IHJ1bnRpbWUuAAkBRWl0aGVyIGNhbGxpbmcgYENvcmVfdmVyc2lvbmAgb3IgZGVjb2RpbmcgYFJ1bnRpbWVWZXJzaW9uYCBmYWlsZWQuTE5vbkRlZmF1bHRDb21wb3NpdGUAAwT8U3VpY2lkZSBjYWxsZWQgd2hlbiB0aGUgYWNjb3VudCBoYXMgbm9uLWRlZmF1bHQgY29tcG9zaXRlIGRhdGEuPE5vblplcm9SZWZDb3VudAAEBDUBVGhlcmUgaXMgYSBub24temVybyByZWZlcmVuY2UgY291bnQgcHJldmVudGluZyB0aGUgYWNjb3VudCBmcm9tIGJlaW5nIHB1cmdlZC4wQ2FsbEZpbHRlcmVkAAUE0FRoZSBvcmlnaW4gZmlsdGVyIHByZXZlbnQgdGhlIGNhbGwgdG8gYmUgZGlzcGF0Y2hlZC5sTXVsdGlCbG9ja01pZ3JhdGlvbnNPbmdvaW5nAAYEVQFBIG11bHRpLWJsb2NrIG1pZ3JhdGlvbiBpcyBvbmdvaW5nIGFuZCBwcmV2ZW50cyB0aGUgY3VycmVudCBjb2RlIGZyb20gYmVpbmcgcmVwbGFjZWQuRE5vdGhpbmdBdXRob3JpemVkAAcEWE5vIHVwZ3JhZGUgYXV0aG9yaXplZC4wVW5hdXRob3JpemVkAAgElFRoZSBzdWJtaXR0ZWQgY29kZSBpcyBub3QgYXV0aG9yaXplZC4EbEVycm9yIGZvciB0aGUgU3lzdGVtIHBhbGxldGkJEChzcF9ydW50aW1lHGdlbmVyaWMUYmxvY2sUQmxvY2sIGEhlYWRlcgFcJEV4dHJpbnNpYwFtCQAIARhoZWFkZXJcARhIZWFkZXIAAShleHRyaW5zaWNzdQkBOFZlYzxFeHRyaW5zaWM+AABtCRAoc3BfcnVudGltZRxnZW5lcmljTHVuY2hlY2tlZF9leHRyaW5zaWNIVW5jaGVja2VkRXh0cmluc2ljEBxBZGRyZXNzAQAQQ2FsbAEgJFNpZ25hdHVyZQHJBBRFeHRyYQFxCQAEABgAAABxCQAABCh5B30HgQeFB4kHkQeVB5kHnQehBwB1CQAAAm0JAHkJDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBfQkEUwAABACFCQEYVmVjPFQ+AAB9CQQYT3B0aW9uBARUAYEJAQgQTm9uZQAAABBTb21lBACBCQAAAQAAgQkIQHBhbGxldF9zY2hlZHVsZXIkU2NoZWR1bGVkFBBOYW1lAQgQQ2FsbAEdAixCbG9ja051bWJlcgE4NFBhbGxldHNPcmlnaW4BBQIkQWNjb3VudElkAQQAFAEgbWF5YmVfaWQNBwEwT3B0aW9uPE5hbWU+AAEgcHJpb3JpdHkMAUhzY2hlZHVsZTo6UHJpb3JpdHkAARBjYWxsHQIBEENhbGwAAThtYXliZV9wZXJpb2RpY0QBlE9wdGlvbjxzY2hlZHVsZTo6UGVyaW9kPEJsb2NrTnVtYmVyPj4AARhvcmlnaW4FAgE0UGFsbGV0c09yaWdpbgAAhQkAAAJ9CQCJCQhAcGFsbGV0X3NjaGVkdWxlcixSZXRyeUNvbmZpZwQYUGVyaW9kATgADAE0dG90YWxfcmV0cmllcwwBCHU4AAEkcmVtYWluaW5nDAEIdTgAARhwZXJpb2Q4ARhQZXJpb2QAAI0JDEBwYWxsZXRfc2NoZWR1bGVyGHBhbGxldBRFcnJvcgQEVAABFEBGYWlsZWRUb1NjaGVkdWxlAAAEZEZhaWxlZCB0byBzY2hlZHVsZSBhIGNhbGwgTm90Rm91bmQAAQR8Q2Fubm90IGZpbmQgdGhlIHNjaGVkdWxlZCBjYWxsLlxUYXJnZXRCbG9ja051bWJlckluUGFzdAACBKRHaXZlbiB0YXJnZXQgYmxvY2sgbnVtYmVyIGlzIGluIHRoZSBwYXN0LkhSZXNjaGVkdWxlTm9DaGFuZ2UAAwTwUmVzY2hlZHVsZSBmYWlsZWQgYmVjYXVzZSBpdCBkb2VzIG5vdCBjaGFuZ2Ugc2NoZWR1bGVkIHRpbWUuFE5hbWVkAAQE0EF0dGVtcHQgdG8gdXNlIGEgbm9uLW5hbWVkIGZ1bmN0aW9uIG9uIGEgbmFtZWQgdGFzay4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQukQkIPHBhbGxldF9wcmVpbWFnZUBPbGRSZXF1ZXN0U3RhdHVzCCRBY2NvdW50SWQBBBxCYWxhbmNlAaQBCCxVbnJlcXVlc3RlZAgBHGRlcG9zaXR5AwFQKEFjY291bnRJZCwgQmFsYW5jZSkAAQxsZW44AQx1MzIAAAAkUmVxdWVzdGVkDAEcZGVwb3NpdJUJAXBPcHRpb248KEFjY291bnRJZCwgQmFsYW5jZSk+AAEUY291bnQ4AQx1MzIAAQxsZW7lAQEsT3B0aW9uPHUzMj4AAQAAlQkEGE9wdGlvbgQEVAF5AwEIEE5vbmUAAAAQU29tZQQAeQMAAAEAAJkJCDxwYWxsZXRfcHJlaW1hZ2U0UmVxdWVzdFN0YXR1cwgkQWNjb3VudElkAQQYVGlja2V0AZ0JAQgsVW5yZXF1ZXN0ZWQIARh0aWNrZXShCQFMKEFjY291bnRJZCwgVGlja2V0KQABDGxlbjgBDHUzMgAAACRSZXF1ZXN0ZWQMATBtYXliZV90aWNrZXSlCQFsT3B0aW9uPChBY2NvdW50SWQsIFRpY2tldCk+AAEUY291bnQ4AQx1MzIAASRtYXliZV9sZW7lAQEsT3B0aW9uPHUzMj4AAQAAnQkUNGZyYW1lX3N1cHBvcnQYdHJhaXRzGHRva2VucyBmdW5naWJsZURIb2xkQ29uc2lkZXJhdGlvbhQEQQAERgAEUgAERAAIRnAAAAQApAEoRjo6QmFsYW5jZQAAoQkAAAQIBJ0JAKUJBBhPcHRpb24EBFQBoQkBCBBOb25lAAAAEFNvbWUEAKEJAAABAACpCQxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQwEUwAABAAYARhWZWM8VD4AAK0JDDxwYWxsZXRfcHJlaW1hZ2UYcGFsbGV0FEVycm9yBARUAAEgGFRvb0JpZwAABKBQcmVpbWFnZSBpcyB0b28gbGFyZ2UgdG8gc3RvcmUgb24tY2hhaW4uMEFscmVhZHlOb3RlZAABBKRQcmVpbWFnZSBoYXMgYWxyZWFkeSBiZWVuIG5vdGVkIG9uLWNoYWluLjROb3RBdXRob3JpemVkAAIEyFRoZSB1c2VyIGlzIG5vdCBhdXRob3JpemVkIHRvIHBlcmZvcm0gdGhpcyBhY3Rpb24uIE5vdE5vdGVkAAME/FRoZSBwcmVpbWFnZSBjYW5ub3QgYmUgcmVtb3ZlZCBzaW5jZSBpdCBoYXMgbm90IHlldCBiZWVuIG5vdGVkLiRSZXF1ZXN0ZWQABAQJAUEgcHJlaW1hZ2UgbWF5IG5vdCBiZSByZW1vdmVkIHdoZW4gdGhlcmUgYXJlIG91dHN0YW5kaW5nIHJlcXVlc3RzLjBOb3RSZXF1ZXN0ZWQABQQtAVRoZSBwcmVpbWFnZSByZXF1ZXN0IGNhbm5vdCBiZSByZW1vdmVkIHNpbmNlIG5vIG91dHN0YW5kaW5nIHJlcXVlc3RzIGV4aXN0LhxUb29NYW55AAYEVQFNb3JlIHRoYW4gYE1BWF9IQVNIX1VQR1JBREVfQlVMS19DT1VOVGAgaGFzaGVzIHdlcmUgcmVxdWVzdGVkIHRvIGJlIHVwZ3JhZGVkIGF0IG9uY2UuGFRvb0ZldwAHBORUb28gZmV3IGhhc2hlcyB3ZXJlIHJlcXVlc3RlZCB0byBiZSB1cGdyYWRlZCAoaS5lLiB6ZXJvKS4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQusQkMTGJvdW5kZWRfY29sbGVjdGlvbnNAd2Vha19ib3VuZGVkX3ZlYzhXZWFrQm91bmRlZFZlYwgEVAG1CQRTAAAEALkJARhWZWM8VD4AALUJAAAECHQoALkJAAACtQkAvQkMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEIBFMAAAQAwQkBGFZlYzxUPgAAwQkAAAIIAMUJBBhPcHRpb24EBFQByQkBCBBOb25lAAAAEFNvbWUEAMkJAAABAADJCQxEc3BfY29uc2Vuc3VzX2JhYmUcZGlnZXN0cyRQcmVEaWdlc3QAAQwcUHJpbWFyeQQAzQkBQFByaW1hcnlQcmVEaWdlc3QAAQA4U2Vjb25kYXJ5UGxhaW4EANUJAVxTZWNvbmRhcnlQbGFpblByZURpZ2VzdAACADBTZWNvbmRhcnlWUkYEANkJAVRTZWNvbmRhcnlWUkZQcmVEaWdlc3QAAwAAzQkMRHNwX2NvbnNlbnN1c19iYWJlHGRpZ2VzdHNAUHJpbWFyeVByZURpZ2VzdAAADAE8YXV0aG9yaXR5X2luZGV4OAFUc3VwZXI6OkF1dGhvcml0eUluZGV4AAEQc2xvdHgBEFNsb3QAATR2cmZfc2lnbmF0dXJl0QkBMFZyZlNpZ25hdHVyZQAA0QkQHHNwX2NvcmUcc3IyNTUxOQx2cmYwVnJmU2lnbmF0dXJlAAAIAShwcmVfb3V0cHV0CAEwVnJmUHJlT3V0cHV0AAEUcHJvb2Y1AQEgVnJmUHJvb2YAANUJDERzcF9jb25zZW5zdXNfYmFiZRxkaWdlc3RzXFNlY29uZGFyeVBsYWluUHJlRGlnZXN0AAAIATxhdXRob3JpdHlfaW5kZXg4AVRzdXBlcjo6QXV0aG9yaXR5SW5kZXgAARBzbG90eAEQU2xvdAAA2QkMRHNwX2NvbnNlbnN1c19iYWJlHGRpZ2VzdHNUU2Vjb25kYXJ5VlJGUHJlRGlnZXN0AAAMATxhdXRob3JpdHlfaW5kZXg4AVRzdXBlcjo6QXV0aG9yaXR5SW5kZXgAARBzbG90eAEQU2xvdAABNHZyZl9zaWduYXR1cmXRCQEwVnJmU2lnbmF0dXJlAADdCQhEc3BfY29uc2Vuc3VzX2JhYmVYQmFiZUVwb2NoQ29uZmlndXJhdGlvbgAACAEEY4QBKCh1NjQsIHU2NCkAATRhbGxvd2VkX3Nsb3RziAEwQWxsb3dlZFNsb3RzAADhCQxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAeUJBFMAAAQA6QkBGFZlYzxUPgAA5QkAAAQIKDgA6QkAAALlCQDtCQwscGFsbGV0X2JhYmUYcGFsbGV0FEVycm9yBARUAAEQYEludmFsaWRFcXVpdm9jYXRpb25Qcm9vZgAABDEBQW4gZXF1aXZvY2F0aW9uIHByb29mIHByb3ZpZGVkIGFzIHBhcnQgb2YgYW4gZXF1aXZvY2F0aW9uIHJlcG9ydCBpcyBpbnZhbGlkLmBJbnZhbGlkS2V5T3duZXJzaGlwUHJvb2YAAQQxAUEga2V5IG93bmVyc2hpcCBwcm9vZiBwcm92aWRlZCBhcyBwYXJ0IG9mIGFuIGVxdWl2b2NhdGlvbiByZXBvcnQgaXMgaW52YWxpZC5YRHVwbGljYXRlT2ZmZW5jZVJlcG9ydAACBBUBQSBnaXZlbiBlcXVpdm9jYXRpb24gcmVwb3J0IGlzIHZhbGlkIGJ1dCBhbHJlYWR5IHByZXZpb3VzbHkgcmVwb3J0ZWQuUEludmFsaWRDb25maWd1cmF0aW9uAAMEjFN1Ym1pdHRlZCBjb25maWd1cmF0aW9uIGlzIGludmFsaWQuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LvEJAAAEDASkmAD1CQw4cGFsbGV0X2luZGljZXMYcGFsbGV0FEVycm9yBARUAAEULE5vdEFzc2lnbmVkAAAEjFRoZSBpbmRleCB3YXMgbm90IGFscmVhZHkgYXNzaWduZWQuIE5vdE93bmVyAAEEpFRoZSBpbmRleCBpcyBhc3NpZ25lZCB0byBhbm90aGVyIGFjY291bnQuFEluVXNlAAIEcFRoZSBpbmRleCB3YXMgbm90IGF2YWlsYWJsZS4sTm90VHJhbnNmZXIAAwTIVGhlIHNvdXJjZSBhbmQgZGVzdGluYXRpb24gYWNjb3VudHMgYXJlIGlkZW50aWNhbC4kUGVybWFuZW50AAQE0FRoZSBpbmRleCBpcyBwZXJtYW5lbnQgYW5kIG1heSBub3QgYmUgZnJlZWQvY2hhbmdlZC4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQu+QkMTGJvdW5kZWRfY29sbGVjdGlvbnNAd2Vha19ib3VuZGVkX3ZlYzhXZWFrQm91bmRlZFZlYwgEVAH9CQRTAAAEAAUKARhWZWM8VD4AAP0JDDxwYWxsZXRfYmFsYW5jZXMUdHlwZXMsQmFsYW5jZUxvY2sEHEJhbGFuY2UBpAAMAQhpZCEFAThMb2NrSWRlbnRpZmllcgABGGFtb3VudKQBHEJhbGFuY2UAARxyZWFzb25zAQoBHFJlYXNvbnMAAAEKDDxwYWxsZXRfYmFsYW5jZXMUdHlwZXMcUmVhc29ucwABDAxGZWUAAAAQTWlzYwABAAxBbGwAAgAABQoAAAL9CQAJCgxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQ0KBFMAAAQAEQoBGFZlYzxUPgAADQoMPHBhbGxldF9iYWxhbmNlcxR0eXBlcyxSZXNlcnZlRGF0YQhEUmVzZXJ2ZUlkZW50aWZpZXIBIQUcQmFsYW5jZQGkAAgBCGlkIQUBRFJlc2VydmVJZGVudGlmaWVyAAEYYW1vdW50pAEcQmFsYW5jZQAAEQoAAAINCgAVCgxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUARkKBFMAAAQAHQoBGFZlYzxUPgAAGQoUNGZyYW1lX3N1cHBvcnQYdHJhaXRzGHRva2VucxBtaXNjIElkQW1vdW50CAhJZAEFCBxCYWxhbmNlAaQACAEIaWQFCAEISWQAARhhbW91bnSkARxCYWxhbmNlAAAdCgAAAhkKACEKDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBJQoEUwAABAAxCgEYVmVjPFQ+AAAlChQ0ZnJhbWVfc3VwcG9ydBh0cmFpdHMYdG9rZW5zEG1pc2MgSWRBbW91bnQICElkASkKHEJhbGFuY2UBpAAIAQhpZCkKAQhJZAABGGFtb3VudKQBHEJhbGFuY2UAACkKCEBwb2xrYWRvdF9ydW50aW1lTFJ1bnRpbWVGcmVlemVSZWFzb24AAQQ8Tm9taW5hdGlvblBvb2xzBAAtCgGUcGFsbGV0X25vbWluYXRpb25fcG9vbHM6OkZyZWV6ZVJlYXNvbgAnAAAtCgxccGFsbGV0X25vbWluYXRpb25fcG9vbHMYcGFsbGV0MEZyZWV6ZVJlYXNvbgABBDhQb29sTWluQmFsYW5jZQAAAAAxCgAAAiUKADUKDDxwYWxsZXRfYmFsYW5jZXMYcGFsbGV0FEVycm9yCARUAARJAAEwOFZlc3RpbmdCYWxhbmNlAAAEnFZlc3RpbmcgYmFsYW5jZSB0b28gaGlnaCB0byBzZW5kIHZhbHVlLlRMaXF1aWRpdHlSZXN0cmljdGlvbnMAAQTIQWNjb3VudCBsaXF1aWRpdHkgcmVzdHJpY3Rpb25zIHByZXZlbnQgd2l0aGRyYXdhbC5MSW5zdWZmaWNpZW50QmFsYW5jZQACBHhCYWxhbmNlIHRvbyBsb3cgdG8gc2VuZCB2YWx1ZS5IRXhpc3RlbnRpYWxEZXBvc2l0AAME7FZhbHVlIHRvbyBsb3cgdG8gY3JlYXRlIGFjY291bnQgZHVlIHRvIGV4aXN0ZW50aWFsIGRlcG9zaXQuNEV4cGVuZGFiaWxpdHkABASQVHJhbnNmZXIvcGF5bWVudCB3b3VsZCBraWxsIGFjY291bnQuXEV4aXN0aW5nVmVzdGluZ1NjaGVkdWxlAAUEzEEgdmVzdGluZyBzY2hlZHVsZSBhbHJlYWR5IGV4aXN0cyBmb3IgdGhpcyBhY2NvdW50LixEZWFkQWNjb3VudAAGBIxCZW5lZmljaWFyeSBhY2NvdW50IG11c3QgcHJlLWV4aXN0LjxUb29NYW55UmVzZXJ2ZXMABwS4TnVtYmVyIG9mIG5hbWVkIHJlc2VydmVzIGV4Y2VlZCBgTWF4UmVzZXJ2ZXNgLjBUb29NYW55SG9sZHMACAT4TnVtYmVyIG9mIGhvbGRzIGV4Y2VlZCBgVmFyaWFudENvdW50T2Y8VDo6UnVudGltZUhvbGRSZWFzb24+YC44VG9vTWFueUZyZWV6ZXMACQSYTnVtYmVyIG9mIGZyZWV6ZXMgZXhjZWVkIGBNYXhGcmVlemVzYC5MSXNzdWFuY2VEZWFjdGl2YXRlZAAKBAEBVGhlIGlzc3VhbmNlIGNhbm5vdCBiZSBtb2RpZmllZCBzaW5jZSBpdCBpcyBhbHJlYWR5IGRlYWN0aXZhdGVkLiREZWx0YVplcm8ACwRkVGhlIGRlbHRhIGNhbm5vdCBiZSB6ZXJvLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC45CghocGFsbGV0X3RyYW5zYWN0aW9uX3BheW1lbnQgUmVsZWFzZXMAAQgkVjFBbmNpZW50AAAACFYyAAEAAD0KEDRmcmFtZV9zdXBwb3J0GHRyYWl0cxxzdG9yYWdlGE5vRHJvcAQEVAFBCgAEAEEKAQRUAABBChg0ZnJhbWVfc3VwcG9ydBh0cmFpdHMYdG9rZW5zIGZ1bmdpYmxlJGltYmFsYW5jZSRJbWJhbGFuY2UMBEIBpBhPbkRyb3AAOE9wcG9zaXRlT25Ecm9wAAAEARhhbW91bnSkAQRCAABFCgg4cGFsbGV0X3N0YWtpbmc0U3Rha2luZ0xlZGdlcgQEVAAAFAEUc3Rhc2gEATBUOjpBY2NvdW50SWQAARR0b3RhbKABMEJhbGFuY2VPZjxUPgABGGFjdGl2ZaABMEJhbGFuY2VPZjxUPgABJHVubG9ja2luZ/AB8EJvdW5kZWRWZWM8VW5sb2NrQ2h1bms8QmFsYW5jZU9mPFQ+PiwgVDo6TWF4VW5sb2NraW5nQ2h1bmtzPgABWGxlZ2FjeV9jbGFpbWVkX3Jld2FyZHNJCgGUQm91bmRlZFZlYzxFcmFJbmRleCwgVDo6SGlzdG9yeURlcHRoPgAASQoMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAE4BFMAAAQAzAEYVmVjPFQ+AABNCgg4cGFsbGV0X3N0YWtpbmcsTm9taW5hdGlvbnMEBFQAAAwBHHRhcmdldHNRCgG0Qm91bmRlZFZlYzxUOjpBY2NvdW50SWQsIE1heE5vbWluYXRpb25zT2Y8VD4+AAEwc3VibWl0dGVkX2luOAEgRXJhSW5kZXgAAShzdXBwcmVzc2VkmAEQYm9vbAAAUQoMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAEEBFMAAAQAqAEYVmVjPFQ+AABVCgg4cGFsbGV0X3N0YWtpbmc0QWN0aXZlRXJhSW5mbwAACAEUaW5kZXg4ASBFcmFJbmRleAABFHN0YXJ0aQYBLE9wdGlvbjx1NjQ+AABZCggoc3Bfc3Rha2luZyBFeHBvc3VyZQgkQWNjb3VudElkAQQcQmFsYW5jZQGkAAwBFHRvdGFsoAEcQmFsYW5jZQABDG93bqABHEJhbGFuY2UAARhvdGhlcnNdCgGsVmVjPEluZGl2aWR1YWxFeHBvc3VyZTxBY2NvdW50SWQsIEJhbGFuY2U+PgAAXQoAAAJhCgBhCggoc3Bfc3Rha2luZ0hJbmRpdmlkdWFsRXhwb3N1cmUIJEFjY291bnRJZAEEHEJhbGFuY2UBpAAIAQx3aG8EASRBY2NvdW50SWQAARR2YWx1ZaABHEJhbGFuY2UAAGUKCChzcF9zdGFraW5nVFBhZ2VkRXhwb3N1cmVNZXRhZGF0YQQcQmFsYW5jZQGkABABFHRvdGFsoAEcQmFsYW5jZQABDG93bqABHEJhbGFuY2UAATxub21pbmF0b3JfY291bnQ4AQx1MzIAAShwYWdlX2NvdW50OAEQUGFnZQAAaQoIKHNwX3N0YWtpbmcwRXhwb3N1cmVQYWdlCCRBY2NvdW50SWQBBBxCYWxhbmNlAaQACAEocGFnZV90b3RhbKABHEJhbGFuY2UAARhvdGhlcnNdCgGsVmVjPEluZGl2aWR1YWxFeHBvc3VyZTxBY2NvdW50SWQsIEJhbGFuY2U+PgAAbQoIOHBhbGxldF9zdGFraW5nPEVyYVJld2FyZFBvaW50cwQkQWNjb3VudElkAQQACAEUdG90YWw4ASxSZXdhcmRQb2ludAABKGluZGl2aWR1YWxxCgGAQlRyZWVNYXA8QWNjb3VudElkLCBSZXdhcmRQb2ludD4AAHEKBCBCVHJlZU1hcAgESwEEBFYBOAAEAHUKAAAAdQoAAAJlBwB5CgAAAn0KAH0KCDhwYWxsZXRfc3Rha2luZzhVbmFwcGxpZWRTbGFzaAgkQWNjb3VudElkAQQcQmFsYW5jZQGkABQBJHZhbGlkYXRvcgQBJEFjY291bnRJZAABDG93bqQBHEJhbGFuY2UAARhvdGhlcnN1AwFkVmVjPChBY2NvdW50SWQsIEJhbGFuY2UpPgABJHJlcG9ydGVyc6gBOFZlYzxBY2NvdW50SWQ+AAEYcGF5b3V0pAEcQmFsYW5jZQAAgQoAAAQIwKQAhQoMOHBhbGxldF9zdGFraW5nIHNsYXNoaW5nNFNsYXNoaW5nU3BhbnMAABABKHNwYW5faW5kZXg4ASRTcGFuSW5kZXgAAShsYXN0X3N0YXJ0OAEgRXJhSW5kZXgAAUhsYXN0X25vbnplcm9fc2xhc2g4ASBFcmFJbmRleAABFHByaW9yzAE0VmVjPEVyYUluZGV4PgAAiQoMOHBhbGxldF9zdGFraW5nIHNsYXNoaW5nKFNwYW5SZWNvcmQEHEJhbGFuY2UBpAAIARxzbGFzaGVkpAEcQmFsYW5jZQABIHBhaWRfb3V0pAEcQmFsYW5jZQAAjQoQOHBhbGxldF9zdGFraW5nGHBhbGxldBhwYWxsZXQURXJyb3IEBFQAAYg0Tm90Q29udHJvbGxlcgAABGROb3QgYSBjb250cm9sbGVyIGFjY291bnQuIE5vdFN0YXNoAAEEUE5vdCBhIHN0YXNoIGFjY291bnQuNEFscmVhZHlCb25kZWQAAgRgU3Rhc2ggaXMgYWxyZWFkeSBib25kZWQuNEFscmVhZHlQYWlyZWQAAwR0Q29udHJvbGxlciBpcyBhbHJlYWR5IHBhaXJlZC4wRW1wdHlUYXJnZXRzAAQEYFRhcmdldHMgY2Fubm90IGJlIGVtcHR5LjhEdXBsaWNhdGVJbmRleAAFBEBEdXBsaWNhdGUgaW5kZXguREludmFsaWRTbGFzaEluZGV4AAYEhFNsYXNoIHJlY29yZCBpbmRleCBvdXQgb2YgYm91bmRzLkBJbnN1ZmZpY2llbnRCb25kAAcMWQFDYW5ub3QgaGF2ZSBhIHZhbGlkYXRvciBvciBub21pbmF0b3Igcm9sZSwgd2l0aCB2YWx1ZSBsZXNzIHRoYW4gdGhlIG1pbmltdW0gZGVmaW5lZCBieT0BZ292ZXJuYW5jZSAoc2VlIGBNaW5WYWxpZGF0b3JCb25kYCBhbmQgYE1pbk5vbWluYXRvckJvbmRgKS4gSWYgdW5ib25kaW5nIGlzIHRoZRUBaW50ZW50aW9uLCBgY2hpbGxgIGZpcnN0IHRvIHJlbW92ZSBvbmUncyByb2xlIGFzIHZhbGlkYXRvci9ub21pbmF0b3IuME5vTW9yZUNodW5rcwAIBJBDYW4gbm90IHNjaGVkdWxlIG1vcmUgdW5sb2NrIGNodW5rcy40Tm9VbmxvY2tDaHVuawAJBKBDYW4gbm90IHJlYm9uZCB3aXRob3V0IHVubG9ja2luZyBjaHVua3MuMEZ1bmRlZFRhcmdldAAKBMhBdHRlbXB0aW5nIHRvIHRhcmdldCBhIHN0YXNoIHRoYXQgc3RpbGwgaGFzIGZ1bmRzLkhJbnZhbGlkRXJhVG9SZXdhcmQACwRYSW52YWxpZCBlcmEgdG8gcmV3YXJkLmhJbnZhbGlkTnVtYmVyT2ZOb21pbmF0aW9ucwAMBHhJbnZhbGlkIG51bWJlciBvZiBub21pbmF0aW9ucy5ITm90U29ydGVkQW5kVW5pcXVlAA0EgEl0ZW1zIGFyZSBub3Qgc29ydGVkIGFuZCB1bmlxdWUuOEFscmVhZHlDbGFpbWVkAA4ECQFSZXdhcmRzIGZvciB0aGlzIGVyYSBoYXZlIGFscmVhZHkgYmVlbiBjbGFpbWVkIGZvciB0aGlzIHZhbGlkYXRvci4sSW52YWxpZFBhZ2UADwSETm8gbm9taW5hdG9ycyBleGlzdCBvbiB0aGlzIHBhZ2UuVEluY29ycmVjdEhpc3RvcnlEZXB0aAAQBMBJbmNvcnJlY3QgcHJldmlvdXMgaGlzdG9yeSBkZXB0aCBpbnB1dCBwcm92aWRlZC5YSW5jb3JyZWN0U2xhc2hpbmdTcGFucwARBLBJbmNvcnJlY3QgbnVtYmVyIG9mIHNsYXNoaW5nIHNwYW5zIHByb3ZpZGVkLiBCYWRTdGF0ZQASBDkBSW50ZXJuYWwgc3RhdGUgaGFzIGJlY29tZSBzb21laG93IGNvcnJ1cHRlZCBhbmQgdGhlIG9wZXJhdGlvbiBjYW5ub3QgY29udGludWUuOFRvb01hbnlUYXJnZXRzABMElFRvbyBtYW55IG5vbWluYXRpb24gdGFyZ2V0cyBzdXBwbGllZC4kQmFkVGFyZ2V0ABQEPQFBIG5vbWluYXRpb24gdGFyZ2V0IHdhcyBzdXBwbGllZCB0aGF0IHdhcyBibG9ja2VkIG9yIG90aGVyd2lzZSBub3QgYSB2YWxpZGF0b3IuQENhbm5vdENoaWxsT3RoZXIAFQRVAVRoZSB1c2VyIGhhcyBlbm91Z2ggYm9uZCBhbmQgdGh1cyBjYW5ub3QgYmUgY2hpbGxlZCBmb3JjZWZ1bGx5IGJ5IGFuIGV4dGVybmFsIHBlcnNvbi5EVG9vTWFueU5vbWluYXRvcnMAFghNAVRoZXJlIGFyZSB0b28gbWFueSBub21pbmF0b3JzIGluIHRoZSBzeXN0ZW0uIEdvdmVybmFuY2UgbmVlZHMgdG8gYWRqdXN0IHRoZSBzdGFraW5ntHNldHRpbmdzIHRvIGtlZXAgdGhpbmdzIHNhZmUgZm9yIHRoZSBydW50aW1lLkRUb29NYW55VmFsaWRhdG9ycwAXCFUBVGhlcmUgYXJlIHRvbyBtYW55IHZhbGlkYXRvciBjYW5kaWRhdGVzIGluIHRoZSBzeXN0ZW0uIEdvdmVybmFuY2UgbmVlZHMgdG8gYWRqdXN0IHRoZdRzdGFraW5nIHNldHRpbmdzIHRvIGtlZXAgdGhpbmdzIHNhZmUgZm9yIHRoZSBydW50aW1lLkBDb21taXNzaW9uVG9vTG93ABgE4ENvbW1pc3Npb24gaXMgdG9vIGxvdy4gTXVzdCBiZSBhdCBsZWFzdCBgTWluQ29tbWlzc2lvbmAuLEJvdW5kTm90TWV0ABkEWFNvbWUgYm91bmQgaXMgbm90IG1ldC5QQ29udHJvbGxlckRlcHJlY2F0ZWQAGgQBAVVzZWQgd2hlbiBhdHRlbXB0aW5nIHRvIHVzZSBkZXByZWNhdGVkIGNvbnRyb2xsZXIgYWNjb3VudCBsb2dpYy5MQ2Fubm90UmVzdG9yZUxlZGdlcgAbBFhDYW5ub3QgcmVzZXQgYSBsZWRnZXIubFJld2FyZERlc3RpbmF0aW9uUmVzdHJpY3RlZAAcBKxQcm92aWRlZCByZXdhcmQgZGVzdGluYXRpb24gaXMgbm90IGFsbG93ZWQuOE5vdEVub3VnaEZ1bmRzAB0EnE5vdCBlbm91Z2ggZnVuZHMgYXZhaWxhYmxlIHRvIHdpdGhkcmF3LlxWaXJ0dWFsU3Rha2VyTm90QWxsb3dlZAAeBKhPcGVyYXRpb24gbm90IGFsbG93ZWQgZm9yIHZpcnR1YWwgc3Rha2Vycy48Q2Fubm90UmVhcFN0YXNoAB8E9FN0YXNoIGNvdWxkIG5vdCBiZSByZWFwZWQgYXMgb3RoZXIgcGFsbGV0IG1pZ2h0IGRlcGVuZCBvbiBpdC48QWxyZWFkeU1pZ3JhdGVkACAECQFUaGUgc3Rha2Ugb2YgdGhpcyBhY2NvdW50IGlzIGFscmVhZHkgbWlncmF0ZWQgdG8gYEZ1bmdpYmxlYCBob2xkcy4oUmVzdHJpY3RlZAAhCFkBQWNjb3VudCBpcyByZXN0cmljdGVkIGZyb20gcGFydGljaXBhdGlvbiBpbiBzdGFraW5nLiBUaGlzIG1heSBoYXBwZW4gaWYgdGhlIGFjY291bnQgaXPEc3Rha2luZyBpbiBhbm90aGVyIHdheSBhbHJlYWR5LCBzdWNoIGFzIHZpYSBwb29sLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC6RCgwoc3Bfc3Rha2luZxxvZmZlbmNlOE9mZmVuY2VEZXRhaWxzCCBSZXBvcnRlcgEEIE9mZmVuZGVyAZUKAAgBIG9mZmVuZGVylQoBIE9mZmVuZGVyAAEkcmVwb3J0ZXJzqAE0VmVjPFJlcG9ydGVyPgAAlQoAAAQIBFkKAJkKAAAECCUFGACdCgAAAqEKAKEKAAAECAQBAQClCgAAAqkKAKkKAAAECDitCgCtCgwoc3Bfc3Rha2luZxxvZmZlbmNlPE9mZmVuY2VTZXZlcml0eQAABADAARxQZXJiaWxsAACxCgAABAi1ChgAtQoMHHNwX2NvcmUYY3J5cHRvJEtleVR5cGVJZAAABABwARxbdTg7IDRdAAC5Cgw4cGFsbGV0X3Nlc3Npb24YcGFsbGV0FEVycm9yBARUAAEUMEludmFsaWRQcm9vZgAABGBJbnZhbGlkIG93bmVyc2hpcCBwcm9vZi5cTm9Bc3NvY2lhdGVkVmFsaWRhdG9ySWQAAQScTm8gYXNzb2NpYXRlZCB2YWxpZGF0b3IgSUQgZm9yIGFjY291bnQuNER1cGxpY2F0ZWRLZXkAAgRkUmVnaXN0ZXJlZCBkdXBsaWNhdGUga2V5LhhOb0tleXMAAwSkTm8ga2V5cyBhcmUgYXNzb2NpYXRlZCB3aXRoIHRoaXMgYWNjb3VudC4kTm9BY2NvdW50AAQEGQFLZXkgc2V0dGluZyBhY2NvdW50IGlzIG5vdCBsaXZlLCBzbyBpdCdzIGltcG9zc2libGUgdG8gYXNzb2NpYXRlIGtleXMuBHRFcnJvciBmb3IgdGhlIHNlc3Npb24gcGFsbGV0Lr0KCDhwYWxsZXRfZ3JhbmRwYSxTdG9yZWRTdGF0ZQQETgE4ARAQTGl2ZQAAADBQZW5kaW5nUGF1c2UIATBzY2hlZHVsZWRfYXQ4AQROAAEUZGVsYXk4AQROAAEAGFBhdXNlZAACADRQZW5kaW5nUmVzdW1lCAEwc2NoZWR1bGVkX2F0OAEETgABFGRlbGF5OAEETgADAADBCgg4cGFsbGV0X2dyYW5kcGFMU3RvcmVkUGVuZGluZ0NoYW5nZQgETgE4FExpbWl0AAAQATBzY2hlZHVsZWRfYXQ4AQROAAEUZGVsYXk4AQROAAFAbmV4dF9hdXRob3JpdGllc8UKAWxCb3VuZGVkQXV0aG9yaXR5TGlzdDxMaW1pdD4AARhmb3JjZWTlAQEkT3B0aW9uPE4+AADFCgxMYm91bmRlZF9jb2xsZWN0aW9uc0B3ZWFrX2JvdW5kZWRfdmVjOFdlYWtCb3VuZGVkVmVjCARUAUUIBFMAAAQAQQgBGFZlYzxUPgAAyQoMOHBhbGxldF9ncmFuZHBhGHBhbGxldBRFcnJvcgQEVAABHCxQYXVzZUZhaWxlZAAACAUBQXR0ZW1wdCB0byBzaWduYWwgR1JBTkRQQSBwYXVzZSB3aGVuIHRoZSBhdXRob3JpdHkgc2V0IGlzbid0IGxpdmWkKGVpdGhlciBwYXVzZWQgb3IgYWxyZWFkeSBwZW5kaW5nIHBhdXNlKS4wUmVzdW1lRmFpbGVkAAEIEQFBdHRlbXB0IHRvIHNpZ25hbCBHUkFORFBBIHJlc3VtZSB3aGVuIHRoZSBhdXRob3JpdHkgc2V0IGlzbid0IHBhdXNlZKAoZWl0aGVyIGxpdmUgb3IgYWxyZWFkeSBwZW5kaW5nIHJlc3VtZSkuNENoYW5nZVBlbmRpbmcAAgToQXR0ZW1wdCB0byBzaWduYWwgR1JBTkRQQSBjaGFuZ2Ugd2l0aCBvbmUgYWxyZWFkeSBwZW5kaW5nLhxUb29Tb29uAAMEvENhbm5vdCBzaWduYWwgZm9yY2VkIGNoYW5nZSBzbyBzb29uIGFmdGVyIGxhc3QuYEludmFsaWRLZXlPd25lcnNoaXBQcm9vZgAEBDEBQSBrZXkgb3duZXJzaGlwIHByb29mIHByb3ZpZGVkIGFzIHBhcnQgb2YgYW4gZXF1aXZvY2F0aW9uIHJlcG9ydCBpcyBpbnZhbGlkLmBJbnZhbGlkRXF1aXZvY2F0aW9uUHJvb2YABQQxAUFuIGVxdWl2b2NhdGlvbiBwcm9vZiBwcm92aWRlZCBhcyBwYXJ0IG9mIGFuIGVxdWl2b2NhdGlvbiByZXBvcnQgaXMgaW52YWxpZC5YRHVwbGljYXRlT2ZmZW5jZVJlcG9ydAAGBBUBQSBnaXZlbiBlcXVpdm9jYXRpb24gcmVwb3J0IGlzIHZhbGlkIGJ1dCBhbHJlYWR5IHByZXZpb3VzbHkgcmVwb3J0ZWQuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0Ls0KDExib3VuZGVkX2NvbGxlY3Rpb25zQHdlYWtfYm91bmRlZF92ZWM4V2Vha0JvdW5kZWRWZWMIBFQBEQEEUwAABADRCgEYVmVjPFQ+AADRCgAAAhEBANUKCDxwYWxsZXRfdHJlYXN1cnkgUHJvcG9zYWwIJEFjY291bnRJZAEEHEJhbGFuY2UBpAAQASBwcm9wb3NlcgQBJEFjY291bnRJZAABFHZhbHVlpAEcQmFsYW5jZQABLGJlbmVmaWNpYXJ5BAEkQWNjb3VudElkAAEQYm9uZKQBHEJhbGFuY2UAANkKDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBOARTAAAEAMwBGFZlYzxUPgAA3QoIPHBhbGxldF90cmVhc3VyeSxTcGVuZFN0YXR1cxQkQXNzZXRLaW5kAU0BMEFzc2V0QmFsYW5jZQGkLEJlbmVmaWNpYXJ5AeEBLEJsb2NrTnVtYmVyATgkUGF5bWVudElkASgAGAEoYXNzZXRfa2luZE0BASRBc3NldEtpbmQAARhhbW91bnSkATBBc3NldEJhbGFuY2UAASxiZW5lZmljaWFyeeEBASxCZW5lZmljaWFyeQABKHZhbGlkX2Zyb204ASxCbG9ja051bWJlcgABJGV4cGlyZV9hdDgBLEJsb2NrTnVtYmVyAAEYc3RhdHVz4QoBXFBheW1lbnRTdGF0ZTxQYXltZW50SWQ+AADhCgg8cGFsbGV0X3RyZWFzdXJ5MFBheW1lbnRTdGF0ZQQISWQBKAEMHFBlbmRpbmcAAAAkQXR0ZW1wdGVkBAEIaWQoAQhJZAABABhGYWlsZWQAAgAA5QoMNHNwX2FyaXRobWV0aWMocGVyX3RoaW5ncxxQZXJtaWxsAAAEADgBDHUzMgAA6QoINGZyYW1lX3N1cHBvcnQgUGFsbGV0SWQAAAQAIQUBHFt1ODsgOF0AAO0KDDxwYWxsZXRfdHJlYXN1cnkYcGFsbGV0FEVycm9yCARUAARJAAEsMEludmFsaWRJbmRleAAABKxObyBwcm9wb3NhbCwgYm91bnR5IG9yIHNwZW5kIGF0IHRoYXQgaW5kZXguQFRvb01hbnlBcHByb3ZhbHMAAQSAVG9vIG1hbnkgYXBwcm92YWxzIGluIHRoZSBxdWV1ZS5YSW5zdWZmaWNpZW50UGVybWlzc2lvbgACCEUBVGhlIHNwZW5kIG9yaWdpbiBpcyB2YWxpZCBidXQgdGhlIGFtb3VudCBpdCBpcyBhbGxvd2VkIHRvIHNwZW5kIGlzIGxvd2VyIHRoYW4gdGhlTGFtb3VudCB0byBiZSBzcGVudC5MUHJvcG9zYWxOb3RBcHByb3ZlZAADBHxQcm9wb3NhbCBoYXMgbm90IGJlZW4gYXBwcm92ZWQuWEZhaWxlZFRvQ29udmVydEJhbGFuY2UABARRAVRoZSBiYWxhbmNlIG9mIHRoZSBhc3NldCBraW5kIGlzIG5vdCBjb252ZXJ0aWJsZSB0byB0aGUgYmFsYW5jZSBvZiB0aGUgbmF0aXZlIGFzc2V0LjBTcGVuZEV4cGlyZWQABQSwVGhlIHNwZW5kIGhhcyBleHBpcmVkIGFuZCBjYW5ub3QgYmUgY2xhaW1lZC4sRWFybHlQYXlvdXQABgSkVGhlIHNwZW5kIGlzIG5vdCB5ZXQgZWxpZ2libGUgZm9yIHBheW91dC5AQWxyZWFkeUF0dGVtcHRlZAAHBJxUaGUgcGF5bWVudCBoYXMgYWxyZWFkeSBiZWVuIGF0dGVtcHRlZC4sUGF5b3V0RXJyb3IACATMVGhlcmUgd2FzIHNvbWUgaXNzdWUgd2l0aCB0aGUgbWVjaGFuaXNtIG9mIHBheW1lbnQuME5vdEF0dGVtcHRlZAAJBKRUaGUgcGF5b3V0IHdhcyBub3QgeWV0IGF0dGVtcHRlZC9jbGFpbWVkLjBJbmNvbmNsdXNpdmUACgTEVGhlIHBheW1lbnQgaGFzIG5laXRoZXIgZmFpbGVkIG5vciBzdWNjZWVkZWQgeWV0LgR4RXJyb3IgZm9yIHRoZSB0cmVhc3VyeSBwYWxsZXQu8QoMYHBhbGxldF9jb252aWN0aW9uX3ZvdGluZxB2b3RlGFZvdGluZxQcQmFsYW5jZQGkJEFjY291bnRJZAEELEJsb2NrTnVtYmVyATgkUG9sbEluZGV4ATggTWF4Vm90ZXMAAQgcQ2FzdGluZwQA9QoByENhc3Rpbmc8QmFsYW5jZSwgQmxvY2tOdW1iZXIsIFBvbGxJbmRleCwgTWF4Vm90ZXM+AAAAKERlbGVnYXRpbmcEAA0LAaxEZWxlZ2F0aW5nPEJhbGFuY2UsIEFjY291bnRJZCwgQmxvY2tOdW1iZXI+AAEAAPUKDGBwYWxsZXRfY29udmljdGlvbl92b3RpbmcQdm90ZRxDYXN0aW5nEBxCYWxhbmNlAaQsQmxvY2tOdW1iZXIBOCRQb2xsSW5kZXgBOCBNYXhWb3RlcwAADAEUdm90ZXP5CgHcQm91bmRlZFZlYzwoUG9sbEluZGV4LCBBY2NvdW50Vm90ZTxCYWxhbmNlPiksIE1heFZvdGVzPgABLGRlbGVnYXRpb25zBQsBUERlbGVnYXRpb25zPEJhbGFuY2U+AAEUcHJpb3IJCwF8UHJpb3JMb2NrPEJsb2NrTnVtYmVyLCBCYWxhbmNlPgAA+QoMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAH9CgRTAAAEAAELARhWZWM8VD4AAP0KAAAECDjtAQABCwAAAv0KAAULDGBwYWxsZXRfY29udmljdGlvbl92b3RpbmcUdHlwZXMsRGVsZWdhdGlvbnMEHEJhbGFuY2UBpAAIARR2b3Rlc6QBHEJhbGFuY2UAARxjYXBpdGFspAEcQmFsYW5jZQAACQsMYHBhbGxldF9jb252aWN0aW9uX3ZvdGluZxB2b3RlJFByaW9yTG9jawgsQmxvY2tOdW1iZXIBOBxCYWxhbmNlAaQACAA4ASxCbG9ja051bWJlcgAApAEcQmFsYW5jZQAADQsMYHBhbGxldF9jb252aWN0aW9uX3ZvdGluZxB2b3RlKERlbGVnYXRpbmcMHEJhbGFuY2UBpCRBY2NvdW50SWQBBCxCbG9ja051bWJlcgE4ABQBHGJhbGFuY2WkARxCYWxhbmNlAAEYdGFyZ2V0BAEkQWNjb3VudElkAAEoY29udmljdGlvbvkBAShDb252aWN0aW9uAAEsZGVsZWdhdGlvbnMFCwFQRGVsZWdhdGlvbnM8QmFsYW5jZT4AARRwcmlvcgkLAXxQcmlvckxvY2s8QmxvY2tOdW1iZXIsIEJhbGFuY2U+AAARCwxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUARULBFMAAAQAGQsBGFZlYzxUPgAAFQsAAAQI9QGkABkLAAACFQsAHQsMYHBhbGxldF9jb252aWN0aW9uX3ZvdGluZxhwYWxsZXQURXJyb3IIBFQABEkAATAoTm90T25nb2luZwAABFBQb2xsIGlzIG5vdCBvbmdvaW5nLiBOb3RWb3RlcgABBKxUaGUgZ2l2ZW4gYWNjb3VudCBkaWQgbm90IHZvdGUgb24gdGhlIHBvbGwuME5vUGVybWlzc2lvbgACBMhUaGUgYWN0b3IgaGFzIG5vIHBlcm1pc3Npb24gdG8gY29uZHVjdCB0aGUgYWN0aW9uLjxOb1Blcm1pc3Npb25ZZXQAAwRZAVRoZSBhY3RvciBoYXMgbm8gcGVybWlzc2lvbiB0byBjb25kdWN0IHRoZSBhY3Rpb24gcmlnaHQgbm93IGJ1dCB3aWxsIGRvIGluIHRoZSBmdXR1cmUuREFscmVhZHlEZWxlZ2F0aW5nAAQEiFRoZSBhY2NvdW50IGlzIGFscmVhZHkgZGVsZWdhdGluZy40QWxyZWFkeVZvdGluZwAFCFUBVGhlIGFjY291bnQgY3VycmVudGx5IGhhcyB2b3RlcyBhdHRhY2hlZCB0byBpdCBhbmQgdGhlIG9wZXJhdGlvbiBjYW5ub3Qgc3VjY2VlZCB1bnRpbKB0aGVzZSBhcmUgcmVtb3ZlZCB0aHJvdWdoIGByZW1vdmVfdm90ZWAuREluc3VmZmljaWVudEZ1bmRzAAYE/FRvbyBoaWdoIGEgYmFsYW5jZSB3YXMgcHJvdmlkZWQgdGhhdCB0aGUgYWNjb3VudCBjYW5ub3QgYWZmb3JkLjROb3REZWxlZ2F0aW5nAAcEoFRoZSBhY2NvdW50IGlzIG5vdCBjdXJyZW50bHkgZGVsZWdhdGluZy4gTm9uc2Vuc2UACASURGVsZWdhdGlvbiB0byBvbmVzZWxmIG1ha2VzIG5vIHNlbnNlLjxNYXhWb3Rlc1JlYWNoZWQACQSATWF4aW11bSBudW1iZXIgb2Ygdm90ZXMgcmVhY2hlZC4sQ2xhc3NOZWVkZWQACgQ5AVRoZSBjbGFzcyBtdXN0IGJlIHN1cHBsaWVkIHNpbmNlIGl0IGlzIG5vdCBlYXNpbHkgZGV0ZXJtaW5hYmxlIGZyb20gdGhlIHN0YXRlLiBCYWRDbGFzcwALBIRUaGUgY2xhc3MgSUQgc3VwcGxpZWQgaXMgaW52YWxpZC4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuIQsMQHBhbGxldF9yZWZlcmVuZGEUdHlwZXM4UmVmZXJlbmR1bUluZm8gHFRyYWNrSWQB9QE0UnVudGltZU9yaWdpbgEFAhhNb21lbnQBOBBDYWxsAR0CHEJhbGFuY2UBpBRUYWxseQFVCCRBY2NvdW50SWQBBDxTY2hlZHVsZUFkZHJlc3MBSAEYHE9uZ29pbmcEACULAY0BUmVmZXJlbmR1bVN0YXR1czxUcmFja0lkLCBSdW50aW1lT3JpZ2luLCBNb21lbnQsIENhbGwsIEJhbGFuY2UsIFRhbGx5LApBY2NvdW50SWQsIFNjaGVkdWxlQWRkcmVzcyw+AAAAIEFwcHJvdmVkDAA4ARhNb21lbnQAAC0LAYxPcHRpb248RGVwb3NpdDxBY2NvdW50SWQsIEJhbGFuY2U+PgAALQsBjE9wdGlvbjxEZXBvc2l0PEFjY291bnRJZCwgQmFsYW5jZT4+AAEAIFJlamVjdGVkDAA4ARhNb21lbnQAAC0LAYxPcHRpb248RGVwb3NpdDxBY2NvdW50SWQsIEJhbGFuY2U+PgAALQsBjE9wdGlvbjxEZXBvc2l0PEFjY291bnRJZCwgQmFsYW5jZT4+AAIAJENhbmNlbGxlZAwAOAEYTW9tZW50AAAtCwGMT3B0aW9uPERlcG9zaXQ8QWNjb3VudElkLCBCYWxhbmNlPj4AAC0LAYxPcHRpb248RGVwb3NpdDxBY2NvdW50SWQsIEJhbGFuY2U+PgADACBUaW1lZE91dAwAOAEYTW9tZW50AAAtCwGMT3B0aW9uPERlcG9zaXQ8QWNjb3VudElkLCBCYWxhbmNlPj4AAC0LAYxPcHRpb248RGVwb3NpdDxBY2NvdW50SWQsIEJhbGFuY2U+PgAEABhLaWxsZWQEADgBGE1vbWVudAAFAAAlCwxAcGFsbGV0X3JlZmVyZW5kYRR0eXBlc0BSZWZlcmVuZHVtU3RhdHVzIBxUcmFja0lkAfUBNFJ1bnRpbWVPcmlnaW4BBQIYTW9tZW50ATgQQ2FsbAEdAhxCYWxhbmNlAaQUVGFsbHkBVQgkQWNjb3VudElkAQQ8U2NoZWR1bGVBZGRyZXNzAUgALAEUdHJhY2v1AQEcVHJhY2tJZAABGG9yaWdpbgUCATRSdW50aW1lT3JpZ2luAAEgcHJvcG9zYWwdAgEQQ2FsbAABJGVuYWN0bWVudCkCAVBEaXNwYXRjaFRpbWU8TW9tZW50PgABJHN1Ym1pdHRlZDgBGE1vbWVudAABSHN1Ym1pc3Npb25fZGVwb3NpdCkLAWxEZXBvc2l0PEFjY291bnRJZCwgQmFsYW5jZT4AAUBkZWNpc2lvbl9kZXBvc2l0LQsBjE9wdGlvbjxEZXBvc2l0PEFjY291bnRJZCwgQmFsYW5jZT4+AAEgZGVjaWRpbmcxCwF4T3B0aW9uPERlY2lkaW5nU3RhdHVzPE1vbWVudD4+AAEUdGFsbHlVCAEUVGFsbHkAASBpbl9xdWV1ZZgBEGJvb2wAARRhbGFybTkLAYRPcHRpb248KE1vbWVudCwgU2NoZWR1bGVBZGRyZXNzKT4AACkLDEBwYWxsZXRfcmVmZXJlbmRhFHR5cGVzHERlcG9zaXQIJEFjY291bnRJZAEEHEJhbGFuY2UBpAAIAQx3aG8EASRBY2NvdW50SWQAARhhbW91bnSkARxCYWxhbmNlAAAtCwQYT3B0aW9uBARUASkLAQgQTm9uZQAAABBTb21lBAApCwAAAQAAMQsEGE9wdGlvbgQEVAE1CwEIEE5vbmUAAAAQU29tZQQANQsAAAEAADULDEBwYWxsZXRfcmVmZXJlbmRhFHR5cGVzOERlY2lkaW5nU3RhdHVzBCxCbG9ja051bWJlcgE4AAgBFHNpbmNlOAEsQmxvY2tOdW1iZXIAAShjb25maXJtaW5n5QEBTE9wdGlvbjxCbG9ja051bWJlcj4AADkLBBhPcHRpb24EBFQBPQsBCBBOb25lAAAAEFNvbWUEAD0LAAABAAA9CwAABAg4SABBCwxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAUULBFMAAAQASQsBGFZlYzxUPgAARQsAAAQIOKQASQsAAAJFCwBNCwAAAlELAFELAAAECPUBVQsAVQsMQHBhbGxldF9yZWZlcmVuZGEUdHlwZXMwVHJhY2tEZXRhaWxzDBxCYWxhbmNlAaQYTW9tZW50ATgQTmFtZQE1CQAkARBuYW1lNQkBEE5hbWUAATBtYXhfZGVjaWRpbmc4AQx1MzIAAUBkZWNpc2lvbl9kZXBvc2l0pAEcQmFsYW5jZQABOHByZXBhcmVfcGVyaW9kOAEYTW9tZW50AAE8ZGVjaXNpb25fcGVyaW9kOAEYTW9tZW50AAE4Y29uZmlybV9wZXJpb2Q4ARhNb21lbnQAAVBtaW5fZW5hY3RtZW50X3BlcmlvZDgBGE1vbWVudAABMG1pbl9hcHByb3ZhbFkLARRDdXJ2ZQABLG1pbl9zdXBwb3J0WQsBFEN1cnZlAABZCwxAcGFsbGV0X3JlZmVyZW5kYRR0eXBlcxRDdXJ2ZQABDEBMaW5lYXJEZWNyZWFzaW5nDAEYbGVuZ3RowAEcUGVyYmlsbAABFGZsb29ywAEcUGVyYmlsbAABEGNlaWzAARxQZXJiaWxsAAAARFN0ZXBwZWREZWNyZWFzaW5nEAEUYmVnaW7AARxQZXJiaWxsAAEMZW5kwAEcUGVyYmlsbAABEHN0ZXDAARxQZXJiaWxsAAEYcGVyaW9kwAEcUGVyYmlsbAABAChSZWNpcHJvY2FsDAEYZmFjdG9yXQsBIEZpeGVkSTY0AAEgeF9vZmZzZXRdCwEgRml4ZWRJNjQAASB5X29mZnNldF0LASBGaXhlZEk2NAACAABdCww0c3BfYXJpdGhtZXRpYyxmaXhlZF9wb2ludCBGaXhlZEk2NAAABABhCwEMaTY0AABhCwAABQwAZQsMQHBhbGxldF9yZWZlcmVuZGEYcGFsbGV0FEVycm9yCARUAARJAAE4KE5vdE9uZ29pbmcAAARoUmVmZXJlbmR1bSBpcyBub3Qgb25nb2luZy4oSGFzRGVwb3NpdAABBLhSZWZlcmVuZHVtJ3MgZGVjaXNpb24gZGVwb3NpdCBpcyBhbHJlYWR5IHBhaWQuIEJhZFRyYWNrAAIEnFRoZSB0cmFjayBpZGVudGlmaWVyIGdpdmVuIHdhcyBpbnZhbGlkLhBGdWxsAAMEMQFUaGVyZSBhcmUgYWxyZWFkeSBhIGZ1bGwgY29tcGxlbWVudCBvZiByZWZlcmVuZGEgaW4gcHJvZ3Jlc3MgZm9yIHRoaXMgdHJhY2suKFF1ZXVlRW1wdHkABASAVGhlIHF1ZXVlIG9mIHRoZSB0cmFjayBpcyBlbXB0eS40QmFkUmVmZXJlbmR1bQAFBORUaGUgcmVmZXJlbmR1bSBpbmRleCBwcm92aWRlZCBpcyBpbnZhbGlkIGluIHRoaXMgY29udGV4dC4sTm90aGluZ1RvRG8ABgSsVGhlcmUgd2FzIG5vdGhpbmcgdG8gZG8gaW4gdGhlIGFkdmFuY2VtZW50LhxOb1RyYWNrAAcEoE5vIHRyYWNrIGV4aXN0cyBmb3IgdGhlIHByb3Bvc2FsIG9yaWdpbi4oVW5maW5pc2hlZAAIBAEBQW55IGRlcG9zaXQgY2Fubm90IGJlIHJlZnVuZGVkIHVudGlsIGFmdGVyIHRoZSBkZWNpc2lvbiBpcyBvdmVyLjBOb1Blcm1pc3Npb24ACQSoVGhlIGRlcG9zaXQgcmVmdW5kZXIgaXMgbm90IHRoZSBkZXBvc2l0b3IuJE5vRGVwb3NpdAAKBMxUaGUgZGVwb3NpdCBjYW5ub3QgYmUgcmVmdW5kZWQgc2luY2Ugbm9uZSB3YXMgbWFkZS4kQmFkU3RhdHVzAAsE0FRoZSByZWZlcmVuZHVtIHN0YXR1cyBpcyBpbnZhbGlkIGZvciB0aGlzIG9wZXJhdGlvbi5AUHJlaW1hZ2VOb3RFeGlzdAAMBHBUaGUgcHJlaW1hZ2UgZG9lcyBub3QgZXhpc3QuhFByZWltYWdlU3RvcmVkV2l0aERpZmZlcmVudExlbmd0aAANBBUBVGhlIHByZWltYWdlIGlzIHN0b3JlZCB3aXRoIGEgZGlmZmVyZW50IGxlbmd0aCB0aGFuIHRoZSBvbmUgcHJvdmlkZWQuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LmkLDEBwYWxsZXRfd2hpdGVsaXN0GHBhbGxldBRFcnJvcgQEVAABFExVbmF2YWlsYWJsZVByZUltYWdlAAAEyFRoZSBwcmVpbWFnZSBvZiB0aGUgY2FsbCBoYXNoIGNvdWxkIG5vdCBiZSBsb2FkZWQuPFVuZGVjb2RhYmxlQ2FsbAABBHhUaGUgY2FsbCBjb3VsZCBub3QgYmUgZGVjb2RlZC5gSW52YWxpZENhbGxXZWlnaHRXaXRuZXNzAAIE7FRoZSB3ZWlnaHQgb2YgdGhlIGRlY29kZWQgY2FsbCB3YXMgaGlnaGVyIHRoYW4gdGhlIHdpdG5lc3MuUENhbGxJc05vdFdoaXRlbGlzdGVkAAMEdFRoZSBjYWxsIHdhcyBub3Qgd2hpdGVsaXN0ZWQuWENhbGxBbHJlYWR5V2hpdGVsaXN0ZWQABASgVGhlIGNhbGwgd2FzIGFscmVhZHkgd2hpdGVsaXN0ZWQ7IE5vLU9wLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC5tCxBccG9sa2Fkb3RfcnVudGltZV9jb21tb24YY2xhaW1zGHBhbGxldBRFcnJvcgQEVAABGGBJbnZhbGlkRXRoZXJldW1TaWduYXR1cmUAAARsSW52YWxpZCBFdGhlcmV1bSBzaWduYXR1cmUuQFNpZ25lckhhc05vQ2xhaW0AAQR4RXRoZXJldW0gYWRkcmVzcyBoYXMgbm8gY2xhaW0uQFNlbmRlckhhc05vQ2xhaW0AAgSwQWNjb3VudCBJRCBzZW5kaW5nIHRyYW5zYWN0aW9uIGhhcyBubyBjbGFpbS4wUG90VW5kZXJmbG93AAMISQFUaGVyZSdzIG5vdCBlbm91Z2ggaW4gdGhlIHBvdCB0byBwYXkgb3V0IHNvbWUgdW52ZXN0ZWQgYW1vdW50LiBHZW5lcmFsbHkgaW1wbGllcyBhMGxvZ2ljIGVycm9yLkBJbnZhbGlkU3RhdGVtZW50AAQEkEEgbmVlZGVkIHN0YXRlbWVudCB3YXMgbm90IGluY2x1ZGVkLkxWZXN0ZWRCYWxhbmNlRXhpc3RzAAUEpFRoZSBhY2NvdW50IGFscmVhZHkgaGFzIGEgdmVzdGVkIGJhbGFuY2UuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LnELDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBXQIEUwAABAB1CwEYVmVjPFQ+AAB1CwAAAl0CAHkLCDhwYWxsZXRfdmVzdGluZyBSZWxlYXNlcwABCAhWMAAAAAhWMQABAAB9Cww4cGFsbGV0X3Zlc3RpbmcYcGFsbGV0FEVycm9yBARUAAEUKE5vdFZlc3RpbmcAAASEVGhlIGFjY291bnQgZ2l2ZW4gaXMgbm90IHZlc3RpbmcuVEF0TWF4VmVzdGluZ1NjaGVkdWxlcwABCCUBVGhlIGFjY291bnQgYWxyZWFkeSBoYXMgYE1heFZlc3RpbmdTY2hlZHVsZXNgIGNvdW50IG9mIHNjaGVkdWxlcyBhbmQgdGh1c1EBY2Fubm90IGFkZCBhbm90aGVyIG9uZS4gQ29uc2lkZXIgbWVyZ2luZyBleGlzdGluZyBzY2hlZHVsZXMgaW4gb3JkZXIgdG8gYWRkIGFub3RoZXIuJEFtb3VudExvdwACBAUBQW1vdW50IGJlaW5nIHRyYW5zZmVycmVkIGlzIHRvbyBsb3cgdG8gY3JlYXRlIGEgdmVzdGluZyBzY2hlZHVsZS5gU2NoZWR1bGVJbmRleE91dE9mQm91bmRzAAME0EFuIGluZGV4IHdhcyBvdXQgb2YgYm91bmRzIG9mIHRoZSB2ZXN0aW5nIHNjaGVkdWxlcy5USW52YWxpZFNjaGVkdWxlUGFyYW1zAAQEDQFGYWlsZWQgdG8gY3JlYXRlIGEgbmV3IHNjaGVkdWxlIGJlY2F1c2Ugc29tZSBwYXJhbWV0ZXIgd2FzIGludmFsaWQuBHRFcnJvciBmb3IgdGhlIHZlc3RpbmcgcGFsbGV0LoELDDhwYWxsZXRfdXRpbGl0eRhwYWxsZXQURXJyb3IEBFQAAQQwVG9vTWFueUNhbGxzAAAEXFRvbyBtYW55IGNhbGxzIGJhdGNoZWQuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LoULAAAECIkLpACJCwxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAY0LBFMAAAQAkQsBGFZlYzxUPgAAjQsIMHBhbGxldF9wcm94eTxQcm94eURlZmluaXRpb24MJEFjY291bnRJZAEEJFByb3h5VHlwZQFxAixCbG9ja051bWJlcgE4AAwBIGRlbGVnYXRlBAEkQWNjb3VudElkAAEocHJveHlfdHlwZXECASRQcm94eVR5cGUAARRkZWxheTgBLEJsb2NrTnVtYmVyAACRCwAAAo0LAJULAAAECJkLpACZCwxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAZ0LBFMAAAQAoQsBGFZlYzxUPgAAnQsIMHBhbGxldF9wcm94eTBBbm5vdW5jZW1lbnQMJEFjY291bnRJZAEEEEhhc2gBPCxCbG9ja051bWJlcgE4AAwBEHJlYWwEASRBY2NvdW50SWQAASRjYWxsX2hhc2g8ARBIYXNoAAEYaGVpZ2h0OAEsQmxvY2tOdW1iZXIAAKELAAACnQsApQsMMHBhbGxldF9wcm94eRhwYWxsZXQURXJyb3IEBFQAASAcVG9vTWFueQAABCEBVGhlcmUgYXJlIHRvbyBtYW55IHByb3hpZXMgcmVnaXN0ZXJlZCBvciB0b28gbWFueSBhbm5vdW5jZW1lbnRzIHBlbmRpbmcuIE5vdEZvdW5kAAEEdFByb3h5IHJlZ2lzdHJhdGlvbiBub3QgZm91bmQuIE5vdFByb3h5AAIEzFNlbmRlciBpcyBub3QgYSBwcm94eSBvZiB0aGUgYWNjb3VudCB0byBiZSBwcm94aWVkLixVbnByb3h5YWJsZQADBCEBQSBjYWxsIHdoaWNoIGlzIGluY29tcGF0aWJsZSB3aXRoIHRoZSBwcm94eSB0eXBlJ3MgZmlsdGVyIHdhcyBhdHRlbXB0ZWQuJER1cGxpY2F0ZQAEBGxBY2NvdW50IGlzIGFscmVhZHkgYSBwcm94eS4wTm9QZXJtaXNzaW9uAAUEFQFDYWxsIG1heSBub3QgYmUgbWFkZSBieSBwcm94eSBiZWNhdXNlIGl0IG1heSBlc2NhbGF0ZSBpdHMgcHJpdmlsZWdlcy4sVW5hbm5vdW5jZWQABgTQQW5ub3VuY2VtZW50LCBpZiBtYWRlIGF0IGFsbCwgd2FzIG1hZGUgdG9vIHJlY2VudGx5LixOb1NlbGZQcm94eQAHBGRDYW5ub3QgYWRkIHNlbGYgYXMgcHJveHkuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LqkLCDxwYWxsZXRfbXVsdGlzaWcgTXVsdGlzaWcQLEJsb2NrTnVtYmVyATgcQmFsYW5jZQGkJEFjY291bnRJZAEEME1heEFwcHJvdmFscwAAEAEQd2hlbn0CAVhUaW1lcG9pbnQ8QmxvY2tOdW1iZXI+AAEcZGVwb3NpdKQBHEJhbGFuY2UAASRkZXBvc2l0b3IEASRBY2NvdW50SWQAASRhcHByb3ZhbHOtCwGMQm91bmRlZFZlYzxBY2NvdW50SWQsIE1heEFwcHJvdmFscz4AAK0LDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBBARTAAAEAKgBGFZlYzxUPgAAsQsMPHBhbGxldF9tdWx0aXNpZxhwYWxsZXQURXJyb3IEBFQAAThATWluaW11bVRocmVzaG9sZAAABHxUaHJlc2hvbGQgbXVzdCBiZSAyIG9yIGdyZWF0ZXIuPEFscmVhZHlBcHByb3ZlZAABBKxDYWxsIGlzIGFscmVhZHkgYXBwcm92ZWQgYnkgdGhpcyBzaWduYXRvcnkuRE5vQXBwcm92YWxzTmVlZGVkAAIEnENhbGwgZG9lc24ndCBuZWVkIGFueSAobW9yZSkgYXBwcm92YWxzLkRUb29GZXdTaWduYXRvcmllcwADBKhUaGVyZSBhcmUgdG9vIGZldyBzaWduYXRvcmllcyBpbiB0aGUgbGlzdC5IVG9vTWFueVNpZ25hdG9yaWVzAAQErFRoZXJlIGFyZSB0b28gbWFueSBzaWduYXRvcmllcyBpbiB0aGUgbGlzdC5UU2lnbmF0b3JpZXNPdXRPZk9yZGVyAAUEDQFUaGUgc2lnbmF0b3JpZXMgd2VyZSBwcm92aWRlZCBvdXQgb2Ygb3JkZXI7IHRoZXkgc2hvdWxkIGJlIG9yZGVyZWQuTFNlbmRlckluU2lnbmF0b3JpZXMABgQNAVRoZSBzZW5kZXIgd2FzIGNvbnRhaW5lZCBpbiB0aGUgb3RoZXIgc2lnbmF0b3JpZXM7IGl0IHNob3VsZG4ndCBiZS4gTm90Rm91bmQABwSgTXVsdGlzaWcgb3BlcmF0aW9uIG5vdCBmb3VuZCBpbiBzdG9yYWdlLiBOb3RPd25lcgAICFEBT25seSB0aGUgYWNjb3VudCB0aGF0IG9yaWdpbmFsbHkgY3JlYXRlZCB0aGUgbXVsdGlzaWcgaXMgYWJsZSB0byBjYW5jZWwgaXQgb3IgdXBkYXRlNGl0cyBkZXBvc2l0cy4sTm9UaW1lcG9pbnQACQQdAU5vIHRpbWVwb2ludCB3YXMgZ2l2ZW4sIHlldCB0aGUgbXVsdGlzaWcgb3BlcmF0aW9uIGlzIGFscmVhZHkgdW5kZXJ3YXkuOFdyb25nVGltZXBvaW50AAoELQFBIGRpZmZlcmVudCB0aW1lcG9pbnQgd2FzIGdpdmVuIHRvIHRoZSBtdWx0aXNpZyBvcGVyYXRpb24gdGhhdCBpcyB1bmRlcndheS5MVW5leHBlY3RlZFRpbWVwb2ludAALBPRBIHRpbWVwb2ludCB3YXMgZ2l2ZW4sIHlldCBubyBtdWx0aXNpZyBvcGVyYXRpb24gaXMgdW5kZXJ3YXkuPE1heFdlaWdodFRvb0xvdwAMBNBUaGUgbWF4aW11bSB3ZWlnaHQgaW5mb3JtYXRpb24gcHJvdmlkZWQgd2FzIHRvbyBsb3cuNEFscmVhZHlTdG9yZWQADQSgVGhlIGRhdGEgdG8gYmUgc3RvcmVkIGlzIGFscmVhZHkgc3RvcmVkLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC61Cwg8cGFsbGV0X2JvdW50aWVzGEJvdW50eQwkQWNjb3VudElkAQQcQmFsYW5jZQGkLEJsb2NrTnVtYmVyATgAGAEgcHJvcG9zZXIEASRBY2NvdW50SWQAARR2YWx1ZaQBHEJhbGFuY2UAAQxmZWWkARxCYWxhbmNlAAE8Y3VyYXRvcl9kZXBvc2l0pAEcQmFsYW5jZQABEGJvbmSkARxCYWxhbmNlAAEYc3RhdHVzuQsBkEJvdW50eVN0YXR1czxBY2NvdW50SWQsIEJsb2NrTnVtYmVyPgAAuQsIPHBhbGxldF9ib3VudGllczBCb3VudHlTdGF0dXMIJEFjY291bnRJZAEELEJsb2NrTnVtYmVyATgBHCBQcm9wb3NlZAAAACBBcHByb3ZlZAABABhGdW5kZWQAAgA8Q3VyYXRvclByb3Bvc2VkBAEcY3VyYXRvcgQBJEFjY291bnRJZAADABhBY3RpdmUIARxjdXJhdG9yBAEkQWNjb3VudElkAAEodXBkYXRlX2R1ZTgBLEJsb2NrTnVtYmVyAAQANFBlbmRpbmdQYXlvdXQMARxjdXJhdG9yBAEkQWNjb3VudElkAAEsYmVuZWZpY2lhcnkEASRBY2NvdW50SWQAASR1bmxvY2tfYXQ4ASxCbG9ja051bWJlcgAFAExBcHByb3ZlZFdpdGhDdXJhdG9yBAEcY3VyYXRvcgQBJEFjY291bnRJZAAGAAC9CwxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQwEUwAABAAYARhWZWM8VD4AAMELDDxwYWxsZXRfYm91bnRpZXMYcGFsbGV0FEVycm9yCARUAARJAAEwcEluc3VmZmljaWVudFByb3Bvc2Vyc0JhbGFuY2UAAAR4UHJvcG9zZXIncyBiYWxhbmNlIGlzIHRvbyBsb3cuMEludmFsaWRJbmRleAABBJBObyBwcm9wb3NhbCBvciBib3VudHkgYXQgdGhhdCBpbmRleC4wUmVhc29uVG9vQmlnAAIEhFRoZSByZWFzb24gZ2l2ZW4gaXMganVzdCB0b28gYmlnLkBVbmV4cGVjdGVkU3RhdHVzAAMEgFRoZSBib3VudHkgc3RhdHVzIGlzIHVuZXhwZWN0ZWQuOFJlcXVpcmVDdXJhdG9yAAQEXFJlcXVpcmUgYm91bnR5IGN1cmF0b3IuMEludmFsaWRWYWx1ZQAFBFRJbnZhbGlkIGJvdW50eSB2YWx1ZS4oSW52YWxpZEZlZQAGBExJbnZhbGlkIGJvdW50eSBmZWUuNFBlbmRpbmdQYXlvdXQABwhsQSBib3VudHkgcGF5b3V0IGlzIHBlbmRpbmcu+FRvIGNhbmNlbCB0aGUgYm91bnR5LCB5b3UgbXVzdCB1bmFzc2lnbiBhbmQgc2xhc2ggdGhlIGN1cmF0b3IuJFByZW1hdHVyZQAIBEUBVGhlIGJvdW50aWVzIGNhbm5vdCBiZSBjbGFpbWVkL2Nsb3NlZCBiZWNhdXNlIGl0J3Mgc3RpbGwgaW4gdGhlIGNvdW50ZG93biBwZXJpb2QuUEhhc0FjdGl2ZUNoaWxkQm91bnR5AAkEBQFUaGUgYm91bnR5IGNhbm5vdCBiZSBjbG9zZWQgYmVjYXVzZSBpdCBoYXMgYWN0aXZlIGNoaWxkIGJvdW50aWVzLjRUb29NYW55UXVldWVkAAoEmFRvbyBtYW55IGFwcHJvdmFscyBhcmUgYWxyZWFkeSBxdWV1ZWQuLE5vdFByb3Bvc2VyAAsEnFVzZXIgaXMgbm90IHRoZSBwcm9wb3NlciBvZiB0aGUgYm91bnR5LgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC7FCwhUcGFsbGV0X2NoaWxkX2JvdW50aWVzLENoaWxkQm91bnR5DCRBY2NvdW50SWQBBBxCYWxhbmNlAaQsQmxvY2tOdW1iZXIBOAAUATRwYXJlbnRfYm91bnR5OAEsQm91bnR5SW5kZXgAARR2YWx1ZaQBHEJhbGFuY2UAAQxmZWWkARxCYWxhbmNlAAE8Y3VyYXRvcl9kZXBvc2l0pAEcQmFsYW5jZQABGHN0YXR1c8kLAaRDaGlsZEJvdW50eVN0YXR1czxBY2NvdW50SWQsIEJsb2NrTnVtYmVyPgAAyQsIVHBhbGxldF9jaGlsZF9ib3VudGllc0RDaGlsZEJvdW50eVN0YXR1cwgkQWNjb3VudElkAQQsQmxvY2tOdW1iZXIBOAEQFEFkZGVkAAAAPEN1cmF0b3JQcm9wb3NlZAQBHGN1cmF0b3IEASRBY2NvdW50SWQAAQAYQWN0aXZlBAEcY3VyYXRvcgQBJEFjY291bnRJZAACADRQZW5kaW5nUGF5b3V0DAEcY3VyYXRvcgQBJEFjY291bnRJZAABLGJlbmVmaWNpYXJ5BAEkQWNjb3VudElkAAEkdW5sb2NrX2F0OAEsQmxvY2tOdW1iZXIAAwAAzQsMVHBhbGxldF9jaGlsZF9ib3VudGllcxhwYWxsZXQURXJyb3IEBFQAAQxUUGFyZW50Qm91bnR5Tm90QWN0aXZlAAAEpFRoZSBwYXJlbnQgYm91bnR5IGlzIG5vdCBpbiBhY3RpdmUgc3RhdGUuZEluc3VmZmljaWVudEJvdW50eUJhbGFuY2UAAQTkVGhlIGJvdW50eSBiYWxhbmNlIGlzIG5vdCBlbm91Z2ggdG8gYWRkIG5ldyBjaGlsZC1ib3VudHkuUFRvb01hbnlDaGlsZEJvdW50aWVzAAIEDQFOdW1iZXIgb2YgY2hpbGQgYm91bnRpZXMgZXhjZWVkcyBsaW1pdCBgTWF4QWN0aXZlQ2hpbGRCb3VudHlDb3VudGAuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LtELCJBwYWxsZXRfZWxlY3Rpb25fcHJvdmlkZXJfbXVsdGlfcGhhc2U0UmVhZHlTb2x1dGlvbgwkQWNjb3VudElkAChNYXhXaW5uZXJzAExNYXhCYWNrZXJzUGVyV2lubmVyAAAMASBzdXBwb3J0c9ULAexCb3VuZGVkU3VwcG9ydHM8QWNjb3VudElkLCBNYXhXaW5uZXJzLCBNYXhCYWNrZXJzUGVyV2lubmVyPgABFHNjb3JlXQMBNEVsZWN0aW9uU2NvcmUAARxjb21wdXRljQgBPEVsZWN0aW9uQ29tcHV0ZQAA1QsIfGZyYW1lX2VsZWN0aW9uX3Byb3ZpZGVyX3N1cHBvcnQ8Qm91bmRlZFN1cHBvcnRzDCRBY2NvdW50SWQBBBhCT3V0ZXIAGEJJbm5lcgAABADZCwEJAUJvdW5kZWRWZWM8KEFjY291bnRJZCwgQm91bmRlZFN1cHBvcnQ8QWNjb3VudElkLCBCSW5uZXI+KSwgQk91dGVyPgAA2QsMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAHdCwRTAAAEAOkLARhWZWM8VD4AAN0LAAAECAThCwDhCwh8ZnJhbWVfZWxlY3Rpb25fcHJvdmlkZXJfc3VwcG9ydDhCb3VuZGVkU3VwcG9ydAgkQWNjb3VudElkAQQUQm91bmQAAAgBFHRvdGFspAE8RXh0ZW5kZWRCYWxhbmNlAAEYdm90ZXJz5QsBvEJvdW5kZWRWZWM8KEFjY291bnRJZCwgRXh0ZW5kZWRCYWxhbmNlKSwgQm91bmQ+AADlCwxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAXkDBFMAAAQAdQMBGFZlYzxUPgAA6QsAAALdCwDtCwiQcGFsbGV0X2VsZWN0aW9uX3Byb3ZpZGVyX211bHRpX3BoYXNlNFJvdW5kU25hcHNob3QIJEFjY291bnRJZAEEJFZvdGVyVHlwZQHxCwAIARh2b3RlcnP1CwE4VmVjPFZvdGVyVHlwZT4AARx0YXJnZXRzqAE4VmVjPEFjY291bnRJZD4AAPELAAAEDAQoUQoA9QsAAALxCwD5CwxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAf0LBFMAAAQAAQwBGFZlYzxUPgAA/QsAAAQMXQM4OAABDAAAAv0LAAUMDJBwYWxsZXRfZWxlY3Rpb25fcHJvdmlkZXJfbXVsdGlfcGhhc2UYc2lnbmVkQFNpZ25lZFN1Ym1pc3Npb24MJEFjY291bnRJZAEEHEJhbGFuY2UBpCBTb2x1dGlvbgGRAgAQAQx3aG8EASRBY2NvdW50SWQAARxkZXBvc2l0pAEcQmFsYW5jZQABMHJhd19zb2x1dGlvbo0CAVRSYXdTb2x1dGlvbjxTb2x1dGlvbj4AASBjYWxsX2ZlZaQBHEJhbGFuY2UAAAkMDJBwYWxsZXRfZWxlY3Rpb25fcHJvdmlkZXJfbXVsdGlfcGhhc2UYcGFsbGV0FEVycm9yBARUAAE8aFByZURpc3BhdGNoRWFybHlTdWJtaXNzaW9uAAAEZFN1Ym1pc3Npb24gd2FzIHRvbyBlYXJseS5sUHJlRGlzcGF0Y2hXcm9uZ1dpbm5lckNvdW50AAEEiFdyb25nIG51bWJlciBvZiB3aW5uZXJzIHByZXNlbnRlZC5kUHJlRGlzcGF0Y2hXZWFrU3VibWlzc2lvbgACBJBTdWJtaXNzaW9uIHdhcyB0b28gd2Vhaywgc2NvcmUtd2lzZS48U2lnbmVkUXVldWVGdWxsAAMESQFUaGUgcXVldWUgd2FzIGZ1bGwsIGFuZCB0aGUgc29sdXRpb24gd2FzIG5vdCBiZXR0ZXIgdGhhbiBhbnkgb2YgdGhlIGV4aXN0aW5nIG9uZXMuWFNpZ25lZENhbm5vdFBheURlcG9zaXQABASUVGhlIG9yaWdpbiBmYWlsZWQgdG8gcGF5IHRoZSBkZXBvc2l0LlBTaWduZWRJbnZhbGlkV2l0bmVzcwAFBKBXaXRuZXNzIGRhdGEgdG8gZGlzcGF0Y2hhYmxlIGlzIGludmFsaWQuTFNpZ25lZFRvb011Y2hXZWlnaHQABgS4VGhlIHNpZ25lZCBzdWJtaXNzaW9uIGNvbnN1bWVzIHRvbyBtdWNoIHdlaWdodDxPY3dDYWxsV3JvbmdFcmEABwSYT0NXIHN1Ym1pdHRlZCBzb2x1dGlvbiBmb3Igd3Jvbmcgcm91bmRcTWlzc2luZ1NuYXBzaG90TWV0YWRhdGEACASoU25hcHNob3QgbWV0YWRhdGEgc2hvdWxkIGV4aXN0IGJ1dCBkaWRuJ3QuWEludmFsaWRTdWJtaXNzaW9uSW5kZXgACQTQYFNlbGY6Omluc2VydF9zdWJtaXNzaW9uYCByZXR1cm5lZCBhbiBpbnZhbGlkIGluZGV4LjhDYWxsTm90QWxsb3dlZAAKBJhUaGUgY2FsbCBpcyBub3QgYWxsb3dlZCBhdCB0aGlzIHBvaW50LjhGYWxsYmFja0ZhaWxlZAALBExUaGUgZmFsbGJhY2sgZmFpbGVkLEJvdW5kTm90TWV0AAwESFNvbWUgYm91bmQgbm90IG1ldDhUb29NYW55V2lubmVycwANBJxTdWJtaXR0ZWQgc29sdXRpb24gaGFzIHRvbyBtYW55IHdpbm5lcnNkUHJlRGlzcGF0Y2hEaWZmZXJlbnRSb3VuZAAOBLhTdWJtaXNzaW9uIHdhcyBwcmVwYXJlZCBmb3IgYSBkaWZmZXJlbnQgcm91bmQuBA0BRXJyb3Igb2YgdGhlIHBhbGxldCB0aGF0IGNhbiBiZSByZXR1cm5lZCBpbiByZXNwb25zZSB0byBkaXNwYXRjaGVzLg0MDEBwYWxsZXRfYmFnc19saXN0EGxpc3QQTm9kZQgEVAAESQAAFAEIaWQEATBUOjpBY2NvdW50SWQAARBwcmV25AFQT3B0aW9uPFQ6OkFjY291bnRJZD4AARBuZXh05AFQT3B0aW9uPFQ6OkFjY291bnRJZD4AASRiYWdfdXBwZXIoASBUOjpTY29yZQABFHNjb3JlKAEgVDo6U2NvcmUAABEMDEBwYWxsZXRfYmFnc19saXN0EGxpc3QMQmFnCARUAARJAAAIARBoZWFk5AFQT3B0aW9uPFQ6OkFjY291bnRJZD4AARB0YWls5AFQT3B0aW9uPFQ6OkFjY291bnRJZD4AABUMAAACKAAZDAxAcGFsbGV0X2JhZ3NfbGlzdBhwYWxsZXQURXJyb3IIBFQABEkAAQgQTGlzdAQAHQwBJExpc3RFcnJvcgAABLRBIGVycm9yIGluIHRoZSBsaXN0IGludGVyZmFjZSBpbXBsZW1lbnRhdGlvbi4YTG9ja2VkAAEE2ENvdWxkIG5vdCB1cGRhdGUgYSBub2RlLCBiZWNhdXNlIHRoZSBwYWxsZXQgaXMgbG9ja2VkLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC4dDAxAcGFsbGV0X2JhZ3NfbGlzdBBsaXN0JExpc3RFcnJvcgABFCREdXBsaWNhdGUAAAAoTm90SGVhdmllcgABADBOb3RJblNhbWVCYWcAAgAwTm9kZU5vdEZvdW5kAAMAGExvY2tlZAAEAAAhDAAABAhpBmkGACUMCFxwYWxsZXRfbm9taW5hdGlvbl9wb29scyhQb29sTWVtYmVyBARUAAAQARxwb29sX2lkOAEYUG9vbElkAAEYcG9pbnRzpAEwQmFsYW5jZU9mPFQ+AAFwbGFzdF9yZWNvcmRlZF9yZXdhcmRfY291bnRlcn0GAUBUOjpSZXdhcmRDb3VudGVyAAE4dW5ib25kaW5nX2VyYXMpDAHgQm91bmRlZEJUcmVlTWFwPEVyYUluZGV4LCBCYWxhbmNlT2Y8VD4sIFQ6Ok1heFVuYm9uZGluZz4AACkMDExib3VuZGVkX2NvbGxlY3Rpb25zRGJvdW5kZWRfYnRyZWVfbWFwPEJvdW5kZWRCVHJlZU1hcAwESwE4BFYBpARTAAAEAC0MAThCVHJlZU1hcDxLLCBWPgAALQwEIEJUcmVlTWFwCARLATgEVgGkAAQASQsAAAAxDAhccGFsbGV0X25vbWluYXRpb25fcG9vbHM8Qm9uZGVkUG9vbElubmVyBARUAAAUAShjb21taXNzaW9uNQwBNENvbW1pc3Npb248VD4AAThtZW1iZXJfY291bnRlcjgBDHUzMgABGHBvaW50c6QBMEJhbGFuY2VPZjxUPgABFHJvbGVzPQwBXFBvb2xSb2xlczxUOjpBY2NvdW50SWQ+AAEUc3RhdGWJAwEkUG9vbFN0YXRlAAA1DAhccGFsbGV0X25vbWluYXRpb25fcG9vbHMoQ29tbWlzc2lvbgQEVAAAFAEcY3VycmVudKEDAXxPcHRpb248KFBlcmJpbGwsIFQ6OkFjY291bnRJZCk+AAEMbWF4oQgBPE9wdGlvbjxQZXJiaWxsPgABLGNoYW5nZV9yYXRlOQwBvE9wdGlvbjxDb21taXNzaW9uQ2hhbmdlUmF0ZTxCbG9ja051bWJlckZvcjxUPj4+AAE0dGhyb3R0bGVfZnJvbeUBAWRPcHRpb248QmxvY2tOdW1iZXJGb3I8VD4+AAFAY2xhaW1fcGVybWlzc2lvbq0DAbxPcHRpb248Q29tbWlzc2lvbkNsYWltUGVybWlzc2lvbjxUOjpBY2NvdW50SWQ+PgAAOQwEGE9wdGlvbgQEVAGpAwEIEE5vbmUAAAAQU29tZQQAqQMAAAEAAD0MCFxwYWxsZXRfbm9taW5hdGlvbl9wb29scyRQb29sUm9sZXMEJEFjY291bnRJZAEEABABJGRlcG9zaXRvcgQBJEFjY291bnRJZAABEHJvb3TkAURPcHRpb248QWNjb3VudElkPgABJG5vbWluYXRvcuQBRE9wdGlvbjxBY2NvdW50SWQ+AAEcYm91bmNlcuQBRE9wdGlvbjxBY2NvdW50SWQ+AABBDAhccGFsbGV0X25vbWluYXRpb25fcG9vbHMoUmV3YXJkUG9vbAQEVAAAFAFwbGFzdF9yZWNvcmRlZF9yZXdhcmRfY291bnRlcn0GAUBUOjpSZXdhcmRDb3VudGVyAAFsbGFzdF9yZWNvcmRlZF90b3RhbF9wYXlvdXRzpAEwQmFsYW5jZU9mPFQ+AAFUdG90YWxfcmV3YXJkc19jbGFpbWVkpAEwQmFsYW5jZU9mPFQ+AAFgdG90YWxfY29tbWlzc2lvbl9wZW5kaW5npAEwQmFsYW5jZU9mPFQ+AAFgdG90YWxfY29tbWlzc2lvbl9jbGFpbWVkpAEwQmFsYW5jZU9mPFQ+AABFDAhccGFsbGV0X25vbWluYXRpb25fcG9vbHMgU3ViUG9vbHMEBFQAAAgBGG5vX2VyYUkMATRVbmJvbmRQb29sPFQ+AAEgd2l0aF9lcmFNDAEBAUJvdW5kZWRCVHJlZU1hcDxFcmFJbmRleCwgVW5ib25kUG9vbDxUPiwgVG90YWxVbmJvbmRpbmdQb29sczxUPj4AAEkMCFxwYWxsZXRfbm9taW5hdGlvbl9wb29scyhVbmJvbmRQb29sBARUAAAIARhwb2ludHOkATBCYWxhbmNlT2Y8VD4AARxiYWxhbmNlpAEwQmFsYW5jZU9mPFQ+AABNDAxMYm91bmRlZF9jb2xsZWN0aW9uc0Rib3VuZGVkX2J0cmVlX21hcDxCb3VuZGVkQlRyZWVNYXAMBEsBOARWAUkMBFMAAAQAUQwBOEJUcmVlTWFwPEssIFY+AABRDAQgQlRyZWVNYXAIBEsBOARWAUkMAAQAVQwAAABVDAAAAlkMAFkMAAAECDhJDABdDAxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQwEUwAABAAYARhWZWM8VD4AAGEMDFxwYWxsZXRfbm9taW5hdGlvbl9wb29scxhwYWxsZXQURXJyb3IEBFQAAZgwUG9vbE5vdEZvdW5kAAAEiEEgKGJvbmRlZCkgcG9vbCBpZCBkb2VzIG5vdCBleGlzdC5IUG9vbE1lbWJlck5vdEZvdW5kAAEEbEFuIGFjY291bnQgaXMgbm90IGEgbWVtYmVyLkhSZXdhcmRQb29sTm90Rm91bmQAAgQhAUEgcmV3YXJkIHBvb2wgZG9lcyBub3QgZXhpc3QuIEluIGFsbCBjYXNlcyB0aGlzIGlzIGEgc3lzdGVtIGxvZ2ljIGVycm9yLkBTdWJQb29sc05vdEZvdW5kAAMEaEEgc3ViIHBvb2wgZG9lcyBub3QgZXhpc3QuZEFjY291bnRCZWxvbmdzVG9PdGhlclBvb2wABAhNAUFuIGFjY291bnQgaXMgYWxyZWFkeSBkZWxlZ2F0aW5nIGluIGFub3RoZXIgcG9vbC4gQW4gYWNjb3VudCBtYXkgb25seSBiZWxvbmcgdG8gb25lPHBvb2wgYXQgYSB0aW1lLjhGdWxseVVuYm9uZGluZwAFCD0BVGhlIG1lbWJlciBpcyBmdWxseSB1bmJvbmRlZCAoYW5kIHRodXMgY2Fubm90IGFjY2VzcyB0aGUgYm9uZGVkIGFuZCByZXdhcmQgcG9vbKhhbnltb3JlIHRvLCBmb3IgZXhhbXBsZSwgY29sbGVjdCByZXdhcmRzKS5ETWF4VW5ib25kaW5nTGltaXQABgQJAVRoZSBtZW1iZXIgY2Fubm90IHVuYm9uZCBmdXJ0aGVyIGNodW5rcyBkdWUgdG8gcmVhY2hpbmcgdGhlIGxpbWl0LkRDYW5ub3RXaXRoZHJhd0FueQAHBE0BTm9uZSBvZiB0aGUgZnVuZHMgY2FuIGJlIHdpdGhkcmF3biB5ZXQgYmVjYXVzZSB0aGUgYm9uZGluZyBkdXJhdGlvbiBoYXMgbm90IHBhc3NlZC5ETWluaW11bUJvbmROb3RNZXQACBQpAVRoZSBhbW91bnQgZG9lcyBub3QgbWVldCB0aGUgbWluaW11bSBib25kIHRvIGVpdGhlciBqb2luIG9yIGNyZWF0ZSBhIHBvb2wuAFUBVGhlIGRlcG9zaXRvciBjYW4gbmV2ZXIgdW5ib25kIHRvIGEgdmFsdWUgbGVzcyB0aGFuIGBQYWxsZXQ6OmRlcG9zaXRvcl9taW5fYm9uZGAuIFRoZV0BY2FsbGVyIGRvZXMgbm90IGhhdmUgbm9taW5hdGluZyBwZXJtaXNzaW9ucyBmb3IgdGhlIHBvb2wuIE1lbWJlcnMgY2FuIG5ldmVyIHVuYm9uZCB0byBhaHZhbHVlIGJlbG93IGBNaW5Kb2luQm9uZGAuME92ZXJmbG93UmlzawAJBCEBVGhlIHRyYW5zYWN0aW9uIGNvdWxkIG5vdCBiZSBleGVjdXRlZCBkdWUgdG8gb3ZlcmZsb3cgcmlzayBmb3IgdGhlIHBvb2wuNE5vdERlc3Ryb3lpbmcACghdAUEgcG9vbCBtdXN0IGJlIGluIFtgUG9vbFN0YXRlOjpEZXN0cm95aW5nYF0gaW4gb3JkZXIgZm9yIHRoZSBkZXBvc2l0b3IgdG8gdW5ib25kIG9yIGZvcrhvdGhlciBtZW1iZXJzIHRvIGJlIHBlcm1pc3Npb25sZXNzbHkgdW5ib25kZWQuME5vdE5vbWluYXRvcgALBPRUaGUgY2FsbGVyIGRvZXMgbm90IGhhdmUgbm9taW5hdGluZyBwZXJtaXNzaW9ucyBmb3IgdGhlIHBvb2wuVE5vdEtpY2tlck9yRGVzdHJveWluZwAMBD0BRWl0aGVyIGEpIHRoZSBjYWxsZXIgY2Fubm90IG1ha2UgYSB2YWxpZCBraWNrIG9yIGIpIHRoZSBwb29sIGlzIG5vdCBkZXN0cm95aW5nLhxOb3RPcGVuAA0EcFRoZSBwb29sIGlzIG5vdCBvcGVuIHRvIGpvaW4gTWF4UG9vbHMADgSEVGhlIHN5c3RlbSBpcyBtYXhlZCBvdXQgb24gcG9vbHMuOE1heFBvb2xNZW1iZXJzAA8EnFRvbyBtYW55IG1lbWJlcnMgaW4gdGhlIHBvb2wgb3Igc3lzdGVtLkRDYW5Ob3RDaGFuZ2VTdGF0ZQAQBIhUaGUgcG9vbHMgc3RhdGUgY2Fubm90IGJlIGNoYW5nZWQuVERvZXNOb3RIYXZlUGVybWlzc2lvbgARBLhUaGUgY2FsbGVyIGRvZXMgbm90IGhhdmUgYWRlcXVhdGUgcGVybWlzc2lvbnMuVE1ldGFkYXRhRXhjZWVkc01heExlbgASBKxNZXRhZGF0YSBleGNlZWRzIFtgQ29uZmlnOjpNYXhNZXRhZGF0YUxlbmBdJERlZmVuc2l2ZQQAZQwBOERlZmVuc2l2ZUVycm9yABMIMQFTb21lIGVycm9yIG9jY3VycmVkIHRoYXQgc2hvdWxkIG5ldmVyIGhhcHBlbi4gVGhpcyBzaG91bGQgYmUgcmVwb3J0ZWQgdG8gdGhlMG1haW50YWluZXJzLpxQYXJ0aWFsVW5ib25kTm90QWxsb3dlZFBlcm1pc3Npb25sZXNzbHkAFAS8UGFydGlhbCB1bmJvbmRpbmcgbm93IGFsbG93ZWQgcGVybWlzc2lvbmxlc3NseS5cTWF4Q29tbWlzc2lvblJlc3RyaWN0ZWQAFQQdAVRoZSBwb29sJ3MgbWF4IGNvbW1pc3Npb24gY2Fubm90IGJlIHNldCBoaWdoZXIgdGhhbiB0aGUgZXhpc3RpbmcgdmFsdWUuYENvbW1pc3Npb25FeGNlZWRzTWF4aW11bQAWBOxUaGUgc3VwcGxpZWQgY29tbWlzc2lvbiBleGNlZWRzIHRoZSBtYXggYWxsb3dlZCBjb21taXNzaW9uLnhDb21taXNzaW9uRXhjZWVkc0dsb2JhbE1heGltdW0AFwToVGhlIHN1cHBsaWVkIGNvbW1pc3Npb24gZXhjZWVkcyBnbG9iYWwgbWF4aW11bSBjb21taXNzaW9uLmRDb21taXNzaW9uQ2hhbmdlVGhyb3R0bGVkABgECQFOb3QgZW5vdWdoIGJsb2NrcyBoYXZlIHN1cnBhc3NlZCBzaW5jZSB0aGUgbGFzdCBjb21taXNzaW9uIHVwZGF0ZS54Q29tbWlzc2lvbkNoYW5nZVJhdGVOb3RBbGxvd2VkABkEAQFUaGUgc3VibWl0dGVkIGNoYW5nZXMgdG8gY29tbWlzc2lvbiBjaGFuZ2UgcmF0ZSBhcmUgbm90IGFsbG93ZWQuTE5vUGVuZGluZ0NvbW1pc3Npb24AGgSgVGhlcmUgaXMgbm8gcGVuZGluZyBjb21taXNzaW9uIHRvIGNsYWltLlhOb0NvbW1pc3Npb25DdXJyZW50U2V0ABsEjE5vIGNvbW1pc3Npb24gY3VycmVudCBoYXMgYmVlbiBzZXQuLFBvb2xJZEluVXNlABwEZFBvb2wgaWQgY3VycmVudGx5IGluIHVzZS40SW52YWxpZFBvb2xJZAAdBJxQb29sIGlkIHByb3ZpZGVkIGlzIG5vdCBjb3JyZWN0L3VzYWJsZS5MQm9uZEV4dHJhUmVzdHJpY3RlZAAeBPxCb25kaW5nIGV4dHJhIGlzIHJlc3RyaWN0ZWQgdG8gdGhlIGV4YWN0IHBlbmRpbmcgcmV3YXJkIGFtb3VudC48Tm90aGluZ1RvQWRqdXN0AB8EsE5vIGltYmFsYW5jZSBpbiB0aGUgRUQgZGVwb3NpdCBmb3IgdGhlIHBvb2wuOE5vdGhpbmdUb1NsYXNoACAEzE5vIHNsYXNoIHBlbmRpbmcgdGhhdCBjYW4gYmUgYXBwbGllZCB0byB0aGUgbWVtYmVyLixTbGFzaFRvb0xvdwAhBKhUaGUgc2xhc2ggYW1vdW50IGlzIHRvbyBsb3cgdG8gYmUgYXBwbGllZC48QWxyZWFkeU1pZ3JhdGVkACIEFQFUaGUgcG9vbCBvciBtZW1iZXIgZGVsZWdhdGlvbiBoYXMgYWxyZWFkeSBtaWdyYXRlZCB0byBkZWxlZ2F0ZSBzdGFrZS4sTm90TWlncmF0ZWQAIwQVAVRoZSBwb29sIG9yIG1lbWJlciBkZWxlZ2F0aW9uIGhhcyBub3QgbWlncmF0ZWQgeWV0IHRvIGRlbGVnYXRlIHN0YWtlLjBOb3RTdXBwb3J0ZWQAJATwVGhpcyBjYWxsIGlzIG5vdCBhbGxvd2VkIGluIHRoZSBjdXJyZW50IHN0YXRlIG9mIHRoZSBwYWxsZXQuKFJlc3RyaWN0ZWQAJQhRAUFjY291bnQgaXMgcmVzdHJpY3RlZCBmcm9tIHBhcnRpY2lwYXRpb24gaW4gcG9vbHMuIFRoaXMgbWF5IGhhcHBlbiBpZiB0aGUgYWNjb3VudCBpc3xzdGFraW5nIGluIGFub3RoZXIgd2F5IGFscmVhZHkuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LmUMDFxwYWxsZXRfbm9taW5hdGlvbl9wb29scxhwYWxsZXQ4RGVmZW5zaXZlRXJyb3IAARxoTm90RW5vdWdoU3BhY2VJblVuYm9uZFBvb2wAAAAwUG9vbE5vdEZvdW5kAAEASFJld2FyZFBvb2xOb3RGb3VuZAACAEBTdWJQb29sc05vdEZvdW5kAAMAcEJvbmRlZFN0YXNoS2lsbGVkUHJlbWF0dXJlbHkABABURGVsZWdhdGlvblVuc3VwcG9ydGVkAAUAPFNsYXNoTm90QXBwbGllZAAGAABpDAxMcGFsbGV0X2Zhc3RfdW5zdGFrZRR0eXBlczhVbnN0YWtlUmVxdWVzdAQEVAAACAEcc3Rhc2hlc20MAdhCb3VuZGVkVmVjPChUOjpBY2NvdW50SWQsIEJhbGFuY2VPZjxUPiksIFQ6OkJhdGNoU2l6ZT4AARxjaGVja2VkcQwBkEJvdW5kZWRWZWM8RXJhSW5kZXgsIE1heENoZWNraW5nPFQ+PgAAbQwMTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAF5AwRTAAAEAHUDARhWZWM8VD4AAHEMDExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBOARTAAAEAMwBGFZlYzxUPgAAdQwMTHBhbGxldF9mYXN0X3Vuc3Rha2UYcGFsbGV0FEVycm9yBARUAAEYNE5vdENvbnRyb2xsZXIAAAy4VGhlIHByb3ZpZGVkIENvbnRyb2xsZXIgYWNjb3VudCB3YXMgbm90IGZvdW5kLgDAVGhpcyBtZWFucyB0aGF0IHRoZSBnaXZlbiBhY2NvdW50IGlzIG5vdCBib25kZWQuNEFscmVhZHlRdWV1ZWQAAQSsVGhlIGJvbmRlZCBhY2NvdW50IGhhcyBhbHJlYWR5IGJlZW4gcXVldWVkLjhOb3RGdWxseUJvbmRlZAACBLxUaGUgYm9uZGVkIGFjY291bnQgaGFzIGFjdGl2ZSB1bmxvY2tpbmcgY2h1bmtzLiROb3RRdWV1ZWQAAwS0VGhlIHByb3ZpZGVkIHVuLXN0YWtlciBpcyBub3QgaW4gdGhlIGBRdWV1ZWAuLEFscmVhZHlIZWFkAAQEBQFUaGUgcHJvdmlkZWQgdW4tc3Rha2VyIGlzIGFscmVhZHkgaW4gSGVhZCwgYW5kIGNhbm5vdCBkZXJlZ2lzdGVyLjhDYWxsTm90QWxsb3dlZAAFBB0BVGhlIGNhbGwgaXMgbm90IGFsbG93ZWQgYXQgdGhpcyBwb2ludCBiZWNhdXNlIHRoZSBwYWxsZXQgaXMgbm90IGFjdGl2ZS4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQueQwMYHBhbGxldF9kZWxlZ2F0ZWRfc3Rha2luZxR0eXBlcyhEZWxlZ2F0aW9uBARUAAAIARRhZ2VudAQBMFQ6OkFjY291bnRJZAABGGFtb3VudKQBMEJhbGFuY2VPZjxUPgAAfQwMYHBhbGxldF9kZWxlZ2F0ZWRfc3Rha2luZxR0eXBlcyxBZ2VudExlZGdlcgQEVAAAEAEUcGF5ZWUEATBUOjpBY2NvdW50SWQAATx0b3RhbF9kZWxlZ2F0ZWSgATBCYWxhbmNlT2Y8VD4AAVR1bmNsYWltZWRfd2l0aGRyYXdhbHOgATBCYWxhbmNlT2Y8VD4AATRwZW5kaW5nX3NsYXNooAEwQmFsYW5jZU9mPFQ+AACBDAxgcGFsbGV0X2RlbGVnYXRlZF9zdGFraW5nGHBhbGxldBRFcnJvcgQEVAABMChOb3RBbGxvd2VkAAAEqFRoZSBhY2NvdW50IGNhbm5vdCBwZXJmb3JtIHRoaXMgb3BlcmF0aW9uLjhBbHJlYWR5U3Rha2luZwABBLhBbiBleGlzdGluZyBzdGFrZXIgY2Fubm90IHBlcmZvcm0gdGhpcyBhY3Rpb24uYEludmFsaWRSZXdhcmREZXN0aW5hdGlvbgACBNRSZXdhcmQgRGVzdGluYXRpb24gY2Fubm90IGJlIHNhbWUgYXMgYEFnZW50YCBhY2NvdW50LkRJbnZhbGlkRGVsZWdhdGlvbgADFIhEZWxlZ2F0aW9uIGNvbmRpdGlvbnMgYXJlIG5vdCBtZXQuAExQb3NzaWJsZSBpc3N1ZXMgYXJlbDEpIENhbm5vdCBkZWxlZ2F0ZSB0byBzZWxmLKQyKSBDYW5ub3QgZGVsZWdhdGUgdG8gbXVsdGlwbGUgZGVsZWdhdGVzLjhOb3RFbm91Z2hGdW5kcwAEBAEBVGhlIGFjY291bnQgZG9lcyBub3QgaGF2ZSBlbm91Z2ggZnVuZHMgdG8gcGVyZm9ybSB0aGUgb3BlcmF0aW9uLiBOb3RBZ2VudAAFBIBOb3QgYW4gZXhpc3RpbmcgYEFnZW50YCBhY2NvdW50LjBOb3REZWxlZ2F0b3IABgRgTm90IGEgRGVsZWdhdG9yIGFjY291bnQuIEJhZFN0YXRlAAcEiFNvbWUgY29ycnVwdGlvbiBpbiBpbnRlcm5hbCBzdGF0ZS44VW5hcHBsaWVkU2xhc2gACATcVW5hcHBsaWVkIHBlbmRpbmcgc2xhc2ggcmVzdHJpY3RzIG9wZXJhdGlvbiBvbiBgQWdlbnRgLjhOb3RoaW5nVG9TbGFzaAAJBKxgQWdlbnRgIGhhcyBubyBwZW5kaW5nIHNsYXNoIHRvIGJlIGFwcGxpZWQuOFdpdGhkcmF3RmFpbGVkAAoEsEZhaWxlZCB0byB3aXRoZHJhdyBhbW91bnQgZnJvbSBDb3JlIFN0YWtpbmcuME5vdFN1cHBvcnRlZAALBJxPcGVyYXRpb24gbm90IHN1cHBvcnRlZCBieSB0aGlzIHBhbGxldC4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuhQwAAAQIOKgAiQwAAAQIjQw4AI0MCHhwYWxsZXRfc3Rha2luZ19hc3luY19yY19jbGllbnQ0U2Vzc2lvblJlcG9ydAQkQWNjb3VudElkAQQAEAEkZW5kX2luZGV4OAEwU2Vzc2lvbkluZGV4AAFAdmFsaWRhdG9yX3BvaW50c3UKAVRWZWM8KEFjY291bnRJZCwgdTMyKT4AAVBhY3RpdmF0aW9uX3RpbWVzdGFtcJEMAUhPcHRpb248KHU2NCwgdTMyKT4AASBsZWZ0b3ZlcpgBEGJvb2wAAJEMBBhPcHRpb24EBFQB5QkBCBBOb25lAAAAEFNvbWUEAOUJAAABAACVDAxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAZkMBFMAAAQAoQwBGFZlYzxUPgAAmQwAAAQIOJ0MAJ0MCHhwYWxsZXRfc3Rha2luZ19hc3luY19yY19jbGllbnQcT2ZmZW5jZQQkQWNjb3VudElkAQQADAEgb2ZmZW5kZXIEASRBY2NvdW50SWQAASRyZXBvcnRlcnOoAThWZWM8QWNjb3VudElkPgABOHNsYXNoX2ZyYWN0aW9uwAEcUGVyYmlsbAAAoQwAAAKZDAClDAx4cGFsbGV0X3N0YWtpbmdfYXN5bmNfYWhfY2xpZW50GHBhbGxldBRFcnJvcgQEVAABBBxCbG9ja2VkAAAEJQFDb3VsZCBub3QgcHJvY2VzcyBpbmNvbWluZyBtZXNzYWdlIGJlY2F1c2UgaW5jb21pbmcgbWVzc2FnZXMgYXJlIGJsb2NrZWQuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LqkMDGxwb2xrYWRvdF9ydW50aW1lX3BhcmFjaGFpbnM0Y29uZmlndXJhdGlvbkRIb3N0Q29uZmlndXJhdGlvbgQsQmxvY2tOdW1iZXIBOACMATRtYXhfY29kZV9zaXplOAEMdTMyAAFIbWF4X2hlYWRfZGF0YV9zaXplOAEMdTMyAAFYbWF4X3Vwd2FyZF9xdWV1ZV9jb3VudDgBDHUzMgABVG1heF91cHdhcmRfcXVldWVfc2l6ZTgBDHUzMgABXG1heF91cHdhcmRfbWVzc2FnZV9zaXplOAEMdTMyAAGQbWF4X3Vwd2FyZF9tZXNzYWdlX251bV9wZXJfY2FuZGlkYXRlOAEMdTMyAAGIaHJtcF9tYXhfbWVzc2FnZV9udW1fcGVyX2NhbmRpZGF0ZTgBDHUzMgABbHZhbGlkYXRpb25fdXBncmFkZV9jb29sZG93bjgBLEJsb2NrTnVtYmVyAAFgdmFsaWRhdGlvbl91cGdyYWRlX2RlbGF5OAEsQmxvY2tOdW1iZXIAAVBhc3luY19iYWNraW5nX3BhcmFtc8kDAUhBc3luY0JhY2tpbmdQYXJhbXMAATBtYXhfcG92X3NpemU4AQx1MzIAAWRtYXhfZG93bndhcmRfbWVzc2FnZV9zaXplOAEMdTMyAAGQaHJtcF9tYXhfcGFyYWNoYWluX291dGJvdW5kX2NoYW5uZWxzOAEMdTMyAAFMaHJtcF9zZW5kZXJfZGVwb3NpdKQBHEJhbGFuY2UAAVhocm1wX3JlY2lwaWVudF9kZXBvc2l0pAEcQmFsYW5jZQABZGhybXBfY2hhbm5lbF9tYXhfY2FwYWNpdHk4AQx1MzIAAWxocm1wX2NoYW5uZWxfbWF4X3RvdGFsX3NpemU4AQx1MzIAAYxocm1wX21heF9wYXJhY2hhaW5faW5ib3VuZF9jaGFubmVsczgBDHUzMgABdGhybXBfY2hhbm5lbF9tYXhfbWVzc2FnZV9zaXplOAEMdTMyAAE8ZXhlY3V0b3JfcGFyYW1zzQMBOEV4ZWN1dG9yUGFyYW1zAAFUY29kZV9yZXRlbnRpb25fcGVyaW9kOAEsQmxvY2tOdW1iZXIAAThtYXhfdmFsaWRhdG9yc+UBASxPcHRpb248dTMyPgABOGRpc3B1dGVfcGVyaW9kOAEwU2Vzc2lvbkluZGV4AAGkZGlzcHV0ZV9wb3N0X2NvbmNsdXNpb25fYWNjZXB0YW5jZV9wZXJpb2Q4ASxCbG9ja051bWJlcgABNG5vX3Nob3dfc2xvdHM4AQx1MzIAAUBuX2RlbGF5X3RyYW5jaGVzOAEMdTMyAAFoemVyb3RoX2RlbGF5X3RyYW5jaGVfd2lkdGg4AQx1MzIAAUBuZWVkZWRfYXBwcm92YWxzOAEMdTMyAAFgcmVsYXlfdnJmX21vZHVsb19zYW1wbGVzOAEMdTMyAAE4cHZmX3ZvdGluZ190dGw4ATBTZXNzaW9uSW5kZXgAAYBtaW5pbXVtX3ZhbGlkYXRpb25fdXBncmFkZV9kZWxheTgBLEJsb2NrTnVtYmVyAAFUbWluaW11bV9iYWNraW5nX3ZvdGVzOAEMdTMyAAE0bm9kZV9mZWF0dXJlcwUEATBOb2RlRmVhdHVyZXMAAVhhcHByb3ZhbF92b3RpbmdfcGFyYW1z4QMBUEFwcHJvdmFsVm90aW5nUGFyYW1zAAFAc2NoZWR1bGVyX3BhcmFtc+UDAXBTY2hlZHVsZXJQYXJhbXM8QmxvY2tOdW1iZXI+AACtDAAAArEMALEMAAAECDipDAC1DBBscG9sa2Fkb3RfcnVudGltZV9wYXJhY2hhaW5zNGNvbmZpZ3VyYXRpb24YcGFsbGV0FEVycm9yBARUAAEEPEludmFsaWROZXdWYWx1ZQAABNxUaGUgbmV3IHZhbHVlIGZvciBhIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVyIGlzIGludmFsaWQuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LrkMAAACDQQAvQwAAAIJAQDBDAxscG9sa2Fkb3RfcnVudGltZV9wYXJhY2hhaW5zGHNoYXJlZGhBbGxvd2VkUmVsYXlQYXJlbnRzVHJhY2tlcggQSGFzaAE8LEJsb2NrTnVtYmVyATgACAEYYnVmZmVyxQwBfFZlY0RlcXVlPFJlbGF5UGFyZW50SW5mbzxIYXNoPj4AATRsYXRlc3RfbnVtYmVyOAEsQmxvY2tOdW1iZXIAAMUMAAACyQwAyQwMbHBvbGthZG90X3J1bnRpbWVfcGFyYWNoYWlucxhzaGFyZWQ8UmVsYXlQYXJlbnRJbmZvBBBIYXNoATwADAEwcmVsYXlfcGFyZW50PAEQSGFzaAABKHN0YXRlX3Jvb3Q8ARBIYXNoAAEsY2xhaW1fcXVldWXNDAG8QlRyZWVNYXA8SWQsIEJUcmVlTWFwPHU4LCBCVHJlZVNldDxDb3JlSW5kZXg+Pj4AAM0MBCBCVHJlZU1hcAgESwEVAgRWAdEMAAQA5QwAAADRDAQgQlRyZWVNYXAIBEsBDARWAdUMAAQA3QwAAADVDAQgQlRyZWVTZXQEBFQBwQgABADZDAAAANkMAAACwQgA3QwAAALhDADhDAAABAgM1QwA5QwAAALpDADpDAAABAgVAtEMAO0MAAAC8QwA8QwMbHBvbGthZG90X3J1bnRpbWVfcGFyYWNoYWlucyRpbmNsdXNpb25wQ2FuZGlkYXRlUGVuZGluZ0F2YWlsYWJpbGl0eQgESAE8BE4BOAAkARBjb3JlwQgBJENvcmVJbmRleAABEGhhc2hhBAE0Q2FuZGlkYXRlSGFzaAABKGRlc2NyaXB0b3IhBAFYQ2FuZGlkYXRlRGVzY3JpcHRvcjxIPgABLGNvbW1pdG1lbnRzMQQBUENhbmRpZGF0ZUNvbW1pdG1lbnRzAAFIYXZhaWxhYmlsaXR5X3ZvdGVzBQQBYEJpdFZlYzx1OCwgQml0T3JkZXJMc2IwPgABHGJhY2tlcnMFBAFgQml0VmVjPHU4LCBCaXRPcmRlckxzYjA+AAFMcmVsYXlfcGFyZW50X251bWJlcjgBBE4AAUBiYWNrZWRfaW5fbnVtYmVyOAEETgABNGJhY2tpbmdfZ3JvdXDFCAEoR3JvdXBJbmRleAAA9QwQbHBvbGthZG90X3J1bnRpbWVfcGFyYWNoYWlucyRpbmNsdXNpb24YcGFsbGV0FEVycm9yBARUAAFEZFZhbGlkYXRvckluZGV4T3V0T2ZCb3VuZHMAAAR4VmFsaWRhdG9yIGluZGV4IG91dCBvZiBib3VuZHMuUFVuc2NoZWR1bGVkQ2FuZGlkYXRlAAEErENhbmRpZGF0ZSBzdWJtaXR0ZWQgYnV0IHBhcmEgbm90IHNjaGVkdWxlZC5ASGVhZERhdGFUb29MYXJnZQACBKRIZWFkIGRhdGEgZXhjZWVkcyB0aGUgY29uZmlndXJlZCBtYXhpbXVtLlBQcmVtYXR1cmVDb2RlVXBncmFkZQADBGRDb2RlIHVwZ3JhZGUgcHJlbWF0dXJlbHkuPE5ld0NvZGVUb29MYXJnZQAEBGBPdXRwdXQgY29kZSBpcyB0b28gbGFyZ2VURGlzYWxsb3dlZFJlbGF5UGFyZW50AAUI7FRoZSBjYW5kaWRhdGUncyByZWxheS1wYXJlbnQgd2FzIG5vdCBhbGxvd2VkLiBFaXRoZXIgaXQgd2FzJQFub3QgcmVjZW50IGVub3VnaCBvciBpdCBkaWRuJ3QgYWR2YW5jZSBiYXNlZCBvbiB0aGUgbGFzdCBwYXJhY2hhaW4gYmxvY2suREludmFsaWRBc3NpZ25tZW50AAYIFQFGYWlsZWQgdG8gY29tcHV0ZSBncm91cCBpbmRleCBmb3IgdGhlIGNvcmU6IGVpdGhlciBpdCdzIG91dCBvZiBib3VuZHPob3IgdGhlIHJlbGF5IHBhcmVudCBkb2Vzbid0IGJlbG9uZyB0byB0aGUgY3VycmVudCBzZXNzaW9uLkRJbnZhbGlkR3JvdXBJbmRleAAHBJxJbnZhbGlkIGdyb3VwIGluZGV4IGluIGNvcmUgYXNzaWdubWVudC5MSW5zdWZmaWNpZW50QmFja2luZwAIBJBJbnN1ZmZpY2llbnQgKG5vbi1tYWpvcml0eSkgYmFja2luZy44SW52YWxpZEJhY2tpbmcACQTkSW52YWxpZCAoYmFkIHNpZ25hdHVyZSwgdW5rbm93biB2YWxpZGF0b3IsIGV0Yy4pIGJhY2tpbmcuaFZhbGlkYXRpb25EYXRhSGFzaE1pc21hdGNoAAoExFRoZSB2YWxpZGF0aW9uIGRhdGEgaGFzaCBkb2VzIG5vdCBtYXRjaCBleHBlY3RlZC6ASW5jb3JyZWN0RG93bndhcmRNZXNzYWdlSGFuZGxpbmcACwTYVGhlIGRvd253YXJkIG1lc3NhZ2UgcXVldWUgaXMgbm90IHByb2Nlc3NlZCBjb3JyZWN0bHkuVEludmFsaWRVcHdhcmRNZXNzYWdlcwAMBB0BQXQgbGVhc3Qgb25lIHVwd2FyZCBtZXNzYWdlIHNlbnQgZG9lcyBub3QgcGFzcyB0aGUgYWNjZXB0YW5jZSBjcml0ZXJpYS5gSHJtcFdhdGVybWFya01pc2hhbmRsaW5nAA0EEQFUaGUgY2FuZGlkYXRlIGRpZG4ndCBmb2xsb3cgdGhlIHJ1bGVzIG9mIEhSTVAgd2F0ZXJtYXJrIGFkdmFuY2VtZW50LkxJbnZhbGlkT3V0Ym91bmRIcm1wAA4E1FRoZSBIUk1QIG1lc3NhZ2VzIHNlbnQgYnkgdGhlIGNhbmRpZGF0ZSBpcyBub3QgdmFsaWQuZEludmFsaWRWYWxpZGF0aW9uQ29kZUhhc2gADwTcVGhlIHZhbGlkYXRpb24gY29kZSBoYXNoIG9mIHRoZSBjYW5kaWRhdGUgaXMgbm90IHZhbGlkLkBQYXJhSGVhZE1pc21hdGNoABAIVQFUaGUgYHBhcmFfaGVhZGAgaGFzaCBpbiB0aGUgY2FuZGlkYXRlIGRlc2NyaXB0b3IgZG9lc24ndCBtYXRjaCB0aGUgaGFzaCBvZiB0aGUgYWN0dWFsdHBhcmEgaGVhZCBpbiB0aGUgY29tbWl0bWVudHMuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LvkMDExwb2xrYWRvdF9wcmltaXRpdmVzCHY5TFNjcmFwZWRPbkNoYWluVm90ZXMEBEgBPAAMARxzZXNzaW9uOAEwU2Vzc2lvbkluZGV4AAGAYmFja2luZ192YWxpZGF0b3JzX3Blcl9jYW5kaWRhdGX9DAElAVZlYzwKKENhbmRpZGF0ZVJlY2VpcHRWMjxIPiwgVmVjPChWYWxpZGF0b3JJbmRleCwgVmFsaWRpdHlBdHRlc3RhdGlvbik+KT4AASBkaXNwdXRlc1kEAWBNdWx0aURpc3B1dGVTdGF0ZW1lbnRTZXQAAP0MAAACAQ0AAQ0AAAQIvQgFDQAFDQAAAgkNAAkNAAAECA0EVQQADQ0QbHBvbGthZG90X3J1bnRpbWVfcGFyYWNoYWluczhwYXJhc19pbmhlcmVudBhwYWxsZXQURXJyb3IEBFQAARBkVG9vTWFueUluY2x1c2lvbkluaGVyZW50cwAABMxJbmNsdXNpb24gaW5oZXJlbnQgY2FsbGVkIG1vcmUgdGhhbiBvbmNlIHBlciBibG9jay5MSW52YWxpZFBhcmVudEhlYWRlcgABCFUBVGhlIGhhc2ggb2YgdGhlIHN1Ym1pdHRlZCBwYXJlbnQgaGVhZGVyIGRvZXNuJ3QgY29ycmVzcG9uZCB0byB0aGUgc2F2ZWQgYmxvY2sgaGFzaCBvZix0aGUgcGFyZW50LoxJbmhlcmVudERhdGFGaWx0ZXJlZER1cmluZ0V4ZWN1dGlvbgACCDEBSW5oZXJlbnQgZGF0YSB3YXMgZmlsdGVyZWQgZHVyaW5nIGV4ZWN1dGlvbi4gVGhpcyBzaG91bGQgaGF2ZSBvbmx5IGJlZW4gZG9uZUBkdXJpbmcgY3JlYXRpb24uUFVuc2NoZWR1bGVkQ2FuZGlkYXRlAAMEdFRvbyBtYW55IGNhbmRpZGF0ZXMgc3VwcGxpZWQuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LhENAAACuQwAFQ0EIEJUcmVlTWFwCARLAcEIBFYBGQ0ABAAhDQAAABkNAAACHQ0AHQ0QbHBvbGthZG90X3J1bnRpbWVfcGFyYWNoYWlucyRzY2hlZHVsZXIYY29tbW9uKEFzc2lnbm1lbnQAAQgQUG9vbAgBHHBhcmFfaWQVAgEYUGFyYUlkAAEoY29yZV9pbmRleMEIASRDb3JlSW5kZXgAAAAQQnVsawQAFQIBGFBhcmFJZAABAAAhDQAAAiUNACUNAAAECMEIGQ0AKQ0MbHBvbGthZG90X3J1bnRpbWVfcGFyYWNoYWlucxRwYXJhc1xQdmZDaGVja0FjdGl2ZVZvdGVTdGF0ZQQsQmxvY2tOdW1iZXIBOAAUATB2b3Rlc19hY2NlcHQFBAFgQml0VmVjPHU4LCBCaXRPcmRlckxzYjA+AAEwdm90ZXNfcmVqZWN0BQQBYEJpdFZlYzx1OCwgQml0T3JkZXJMc2IwPgABDGFnZTgBMFNlc3Npb25JbmRleAABKGNyZWF0ZWRfYXQ4ASxCbG9ja051bWJlcgABGGNhdXNlcy0NAXxWZWM8UHZmQ2hlY2tDYXVzZTxCbG9ja051bWJlcj4+AAAtDQAAAjENADENDGxwb2xrYWRvdF9ydW50aW1lX3BhcmFjaGFpbnMUcGFyYXM0UHZmQ2hlY2tDYXVzZQQsQmxvY2tOdW1iZXIBOAEIKE9uYm9hcmRpbmcEABUCARhQYXJhSWQAAAAcVXBncmFkZQwBCGlkFQIBGFBhcmFJZAABLGluY2x1ZGVkX2F0OAEsQmxvY2tOdW1iZXIAAUB1cGdyYWRlX3N0cmF0ZWd5NQ0BPFVwZ3JhZGVTdHJhdGVneQABAAA1DQxscG9sa2Fkb3RfcnVudGltZV9wYXJhY2hhaW5zFHBhcmFzPFVwZ3JhZGVTdHJhdGVneQABCEBTZXRHb0FoZWFkU2lnbmFsAAAAUEFwcGx5QXRFeHBlY3RlZEJsb2NrAAEAADkNAAACLQQAPQ0AAAIVAgBBDQxscG9sa2Fkb3RfcnVudGltZV9wYXJhY2hhaW5zFHBhcmFzNFBhcmFMaWZlY3ljbGUAARwoT25ib2FyZGluZwAAAChQYXJhdGhyZWFkAAEAJFBhcmFjaGFpbgACAExVcGdyYWRpbmdQYXJhdGhyZWFkAAMAUERvd25ncmFkaW5nUGFyYWNoYWluAAQAVE9mZmJvYXJkaW5nUGFyYXRocmVhZAAFAFBPZmZib2FyZGluZ1BhcmFjaGFpbgAGAABFDQAABAgVAjgASQ0MbHBvbGthZG90X3J1bnRpbWVfcGFyYWNoYWlucxRwYXJhc0BQYXJhUGFzdENvZGVNZXRhBAROATgACAE0dXBncmFkZV90aW1lc00NAWBWZWM8UmVwbGFjZW1lbnRUaW1lczxOPj4AASxsYXN0X3BydW5lZOUBASRPcHRpb248Tj4AAE0NAAACUQ0AUQ0MbHBvbGthZG90X3J1bnRpbWVfcGFyYWNoYWlucxRwYXJhc0BSZXBsYWNlbWVudFRpbWVzBAROATgACAEsZXhwZWN0ZWRfYXQ4AQROAAEwYWN0aXZhdGVkX2F0OAEETgAAVQ0AAAJFDQBZDQxscG9sa2Fkb3RfcnVudGltZV9wYXJhY2hhaW5zFHBhcmFzbEF1dGhvcml6ZWRDb2RlSGFzaEFuZEV4cGlyeQQEVAE4AAgBJGNvZGVfaGFzaC0EAUhWYWxpZGF0aW9uQ29kZUhhc2gAASRleHBpcmVfYXQ4AQRUAABdDQxMcG9sa2Fkb3RfcHJpbWl0aXZlcwh2OThVcGdyYWRlR29BaGVhZAABCBRBYm9ydAAAABxHb0FoZWFkAAEAAGENDExwb2xrYWRvdF9wcmltaXRpdmVzCHY5SFVwZ3JhZGVSZXN0cmljdGlvbgABBBxQcmVzZW50AAAAAGUNDGxwb2xrYWRvdF9ydW50aW1lX3BhcmFjaGFpbnMUcGFyYXM8UGFyYUdlbmVzaXNBcmdzAAAMATBnZW5lc2lzX2hlYWRNBAEgSGVhZERhdGEAATx2YWxpZGF0aW9uX2NvZGVJBAE4VmFsaWRhdGlvbkNvZGUAASRwYXJhX2tpbmSYASBQYXJhS2luZAAAaQ0QbHBvbGthZG90X3J1bnRpbWVfcGFyYWNoYWlucxRwYXJhcxhwYWxsZXQURXJyb3IEBFQAAUA0Tm90UmVnaXN0ZXJlZAAABJRQYXJhIGlzIG5vdCByZWdpc3RlcmVkIGluIG91ciBzeXN0ZW0uNENhbm5vdE9uYm9hcmQAAQQVAVBhcmEgY2Fubm90IGJlIG9uYm9hcmRlZCBiZWNhdXNlIGl0IGlzIGFscmVhZHkgdHJhY2tlZCBieSBvdXIgc3lzdGVtLjhDYW5ub3RPZmZib2FyZAACBJxQYXJhIGNhbm5vdCBiZSBvZmZib2FyZGVkIGF0IHRoaXMgdGltZS40Q2Fubm90VXBncmFkZQADBNRQYXJhIGNhbm5vdCBiZSB1cGdyYWRlZCB0byBhIGxlYXNlIGhvbGRpbmcgcGFyYWNoYWluLjxDYW5ub3REb3duZ3JhZGUABATQUGFyYSBjYW5ub3QgYmUgZG93bmdyYWRlZCB0byBhbiBvbi1kZW1hbmQgcGFyYWNoYWluLlhQdmZDaGVja1N0YXRlbWVudFN0YWxlAAUEsFRoZSBzdGF0ZW1lbnQgZm9yIFBWRiBwcmUtY2hlY2tpbmcgaXMgc3RhbGUuXFB2ZkNoZWNrU3RhdGVtZW50RnV0dXJlAAYE7FRoZSBzdGF0ZW1lbnQgZm9yIFBWRiBwcmUtY2hlY2tpbmcgaXMgZm9yIGEgZnV0dXJlIHNlc3Npb24uhFB2ZkNoZWNrVmFsaWRhdG9ySW5kZXhPdXRPZkJvdW5kcwAHBKRDbGFpbWVkIHZhbGlkYXRvciBpbmRleCBpcyBvdXQgb2YgYm91bmRzLmBQdmZDaGVja0ludmFsaWRTaWduYXR1cmUACATIVGhlIHNpZ25hdHVyZSBmb3IgdGhlIFBWRiBwcmUtY2hlY2tpbmcgaXMgaW52YWxpZC5IUHZmQ2hlY2tEb3VibGVWb3RlAAkEsFRoZSBnaXZlbiB2YWxpZGF0b3IgYWxyZWFkeSBoYXMgY2FzdCBhIHZvdGUuWFB2ZkNoZWNrU3ViamVjdEludmFsaWQACgT0VGhlIGdpdmVuIFBWRiBkb2VzIG5vdCBleGlzdCBhdCB0aGUgbW9tZW50IG9mIHByb2Nlc3MgYSB2b3RlLkRDYW5ub3RVcGdyYWRlQ29kZQALBMxQYXJhY2hhaW4gY2Fubm90IGN1cnJlbnRseSBzY2hlZHVsZSBhIGNvZGUgdXBncmFkZS4sSW52YWxpZENvZGUADAR0SW52YWxpZCB2YWxpZGF0aW9uIGNvZGUgc2l6ZS5ETm90aGluZ0F1dGhvcml6ZWQADQRYTm8gdXBncmFkZSBhdXRob3JpemVkLjBVbmF1dGhvcml6ZWQADgSUVGhlIHN1Ym1pdHRlZCBjb2RlIGlzIG5vdCBhdXRob3JpemVkLkhJbnZhbGlkQmxvY2tOdW1iZXIADwRUSW52YWxpZCBibG9jayBudW1iZXIuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0Lm0NAAACcQ0AcQ0MbHBvbGthZG90X3J1bnRpbWVfcGFyYWNoYWlucyxpbml0aWFsaXplclRCdWZmZXJlZFNlc3Npb25DaGFuZ2UAAAwBKHZhbGlkYXRvcnO9DAFAVmVjPFZhbGlkYXRvcklkPgABGHF1ZXVlZL0MAUBWZWM8VmFsaWRhdG9ySWQ+AAE0c2Vzc2lvbl9pbmRleDgBMFNlc3Npb25JbmRleAAAdQ0AAAJ5DQB5DQhgcG9sa2Fkb3RfY29yZV9wcmltaXRpdmVzWEluYm91bmREb3dud2FyZE1lc3NhZ2UELEJsb2NrTnVtYmVyATgACAEcc2VudF9hdDgBLEJsb2NrTnVtYmVyAAEMbXNnGAE8RG93bndhcmRNZXNzYWdlAAB9DQxscG9sa2Fkb3RfcnVudGltZV9wYXJhY2hhaW5zEGhybXBYSHJtcE9wZW5DaGFubmVsUmVxdWVzdAAAGAEkY29uZmlybWVkmAEQYm9vbAABEF9hZ2U4ATBTZXNzaW9uSW5kZXgAAThzZW5kZXJfZGVwb3NpdKQBHEJhbGFuY2UAAUBtYXhfbWVzc2FnZV9zaXplOAEMdTMyAAEwbWF4X2NhcGFjaXR5OAEMdTMyAAE4bWF4X3RvdGFsX3NpemU4AQx1MzIAAIENAAACjQQAhQ0MbHBvbGthZG90X3J1bnRpbWVfcGFyYWNoYWlucxBocm1wLEhybXBDaGFubmVsAAAgATBtYXhfY2FwYWNpdHk4AQx1MzIAAThtYXhfdG90YWxfc2l6ZTgBDHUzMgABQG1heF9tZXNzYWdlX3NpemU4AQx1MzIAASRtc2dfY291bnQ4AQx1MzIAASh0b3RhbF9zaXplOAEMdTMyAAEgbXFjX2hlYWQtAgEwT3B0aW9uPEhhc2g+AAE4c2VuZGVyX2RlcG9zaXSkARxCYWxhbmNlAAFEcmVjaXBpZW50X2RlcG9zaXSkARxCYWxhbmNlAACJDQAAAo0NAI0NCGBwb2xrYWRvdF9jb3JlX3ByaW1pdGl2ZXNISW5ib3VuZEhybXBNZXNzYWdlBCxCbG9ja051bWJlcgE4AAgBHHNlbnRfYXQ4ASxCbG9ja051bWJlcgABEGRhdGEYAUxhbGxvYzo6dmVjOjpWZWM8dTg+AACRDQAAApUNAJUNAAAECDg9DQCZDRBscG9sa2Fkb3RfcnVudGltZV9wYXJhY2hhaW5zEGhybXAYcGFsbGV0FEVycm9yBARUAAFQVE9wZW5Icm1wQ2hhbm5lbFRvU2VsZgAABMRUaGUgc2VuZGVyIHRyaWVkIHRvIG9wZW4gYSBjaGFubmVsIHRvIHRoZW1zZWx2ZXMufE9wZW5Icm1wQ2hhbm5lbEludmFsaWRSZWNpcGllbnQAAQSIVGhlIHJlY2lwaWVudCBpcyBub3QgYSB2YWxpZCBwYXJhLmxPcGVuSHJtcENoYW5uZWxaZXJvQ2FwYWNpdHkAAgR8VGhlIHJlcXVlc3RlZCBjYXBhY2l0eSBpcyB6ZXJvLoxPcGVuSHJtcENoYW5uZWxDYXBhY2l0eUV4Y2VlZHNMaW1pdAADBMBUaGUgcmVxdWVzdGVkIGNhcGFjaXR5IGV4Y2VlZHMgdGhlIGdsb2JhbCBsaW1pdC54T3BlbkhybXBDaGFubmVsWmVyb01lc3NhZ2VTaXplAAQEoFRoZSByZXF1ZXN0ZWQgbWF4aW11bSBtZXNzYWdlIHNpemUgaXMgMC6YT3BlbkhybXBDaGFubmVsTWVzc2FnZVNpemVFeGNlZWRzTGltaXQABQQpAVRoZSBvcGVuIHJlcXVlc3QgcmVxdWVzdGVkIHRoZSBtZXNzYWdlIHNpemUgdGhhdCBleGNlZWRzIHRoZSBnbG9iYWwgbGltaXQucE9wZW5Icm1wQ2hhbm5lbEFscmVhZHlFeGlzdHMABgRoVGhlIGNoYW5uZWwgYWxyZWFkeSBleGlzdHN8T3BlbkhybXBDaGFubmVsQWxyZWFkeVJlcXVlc3RlZAAHBNBUaGVyZSBpcyBhbHJlYWR5IGEgcmVxdWVzdCB0byBvcGVuIHRoZSBzYW1lIGNoYW5uZWwucE9wZW5Icm1wQ2hhbm5lbExpbWl0RXhjZWVkZWQACAQdAVRoZSBzZW5kZXIgYWxyZWFkeSBoYXMgdGhlIG1heGltdW0gbnVtYmVyIG9mIGFsbG93ZWQgb3V0Ym91bmQgY2hhbm5lbHMucEFjY2VwdEhybXBDaGFubmVsRG9lc250RXhpc3QACQTgVGhlIGNoYW5uZWwgZnJvbSB0aGUgc2VuZGVyIHRvIHRoZSBvcmlnaW4gZG9lc24ndCBleGlzdC6EQWNjZXB0SHJtcENoYW5uZWxBbHJlYWR5Q29uZmlybWVkAAoEhFRoZSBjaGFubmVsIGlzIGFscmVhZHkgY29uZmlybWVkLnhBY2NlcHRIcm1wQ2hhbm5lbExpbWl0RXhjZWVkZWQACwQlAVRoZSByZWNpcGllbnQgYWxyZWFkeSBoYXMgdGhlIG1heGltdW0gbnVtYmVyIG9mIGFsbG93ZWQgaW5ib3VuZCBjaGFubmVscy5wQ2xvc2VIcm1wQ2hhbm5lbFVuYXV0aG9yaXplZAAMBFUBVGhlIG9yaWdpbiB0cmllcyB0byBjbG9zZSBhIGNoYW5uZWwgd2hlcmUgaXQgaXMgbmVpdGhlciB0aGUgc2VuZGVyIG5vciB0aGUgcmVjaXBpZW50LmxDbG9zZUhybXBDaGFubmVsRG9lc250RXhpc3QADQScVGhlIGNoYW5uZWwgdG8gYmUgY2xvc2VkIGRvZXNuJ3QgZXhpc3QufENsb3NlSHJtcENoYW5uZWxBbHJlYWR5VW5kZXJ3YXkADgS8VGhlIGNoYW5uZWwgY2xvc2UgcmVxdWVzdCBpcyBhbHJlYWR5IHJlcXVlc3RlZC6EQ2FuY2VsSHJtcE9wZW5DaGFubmVsVW5hdXRob3JpemVkAA8EXQFDYW5jZWxpbmcgaXMgcmVxdWVzdGVkIGJ5IG5laXRoZXIgdGhlIHNlbmRlciBub3IgcmVjaXBpZW50IG9mIHRoZSBvcGVuIGNoYW5uZWwgcmVxdWVzdC5oT3BlbkhybXBDaGFubmVsRG9lc250RXhpc3QAEAR8VGhlIG9wZW4gcmVxdWVzdCBkb2Vzbid0IGV4aXN0LnxPcGVuSHJtcENoYW5uZWxBbHJlYWR5Q29uZmlybWVkABEELQFDYW5ub3QgY2FuY2VsIGFuIEhSTVAgb3BlbiBjaGFubmVsIHJlcXVlc3QgYmVjYXVzZSBpdCBpcyBhbHJlYWR5IGNvbmZpcm1lZC4wV3JvbmdXaXRuZXNzABIEjFRoZSBwcm92aWRlZCB3aXRuZXNzIGRhdGEgaXMgd3JvbmcucENoYW5uZWxDcmVhdGlvbk5vdEF1dGhvcml6ZWQAEwToVGhlIGNoYW5uZWwgYmV0d2VlbiB0aGVzZSB0d28gY2hhaW5zIGNhbm5vdCBiZSBhdXRob3JpemVkLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC6dDQAAAg0BAKENDExwb2xrYWRvdF9wcmltaXRpdmVzCHY5LFNlc3Npb25JbmZvAAA0AWBhY3RpdmVfdmFsaWRhdG9yX2luZGljZXO5DAFMVmVjPFZhbGlkYXRvckluZGV4PgABLHJhbmRvbV9zZWVkCAEgW3U4OyAzMl0AAThkaXNwdXRlX3BlcmlvZDgBMFNlc3Npb25JbmRleAABKHZhbGlkYXRvcnOlDQGcSW5kZXhlZFZlYzxWYWxpZGF0b3JJbmRleCwgVmFsaWRhdG9ySWQ+AAE4ZGlzY292ZXJ5X2tleXPRCgFkVmVjPEF1dGhvcml0eURpc2NvdmVyeUlkPgABPGFzc2lnbm1lbnRfa2V5c50NAURWZWM8QXNzaWdubWVudElkPgABQHZhbGlkYXRvcl9ncm91cHOpDQGsSW5kZXhlZFZlYzxHcm91cEluZGV4LCBWZWM8VmFsaWRhdG9ySW5kZXg+PgABHG5fY29yZXM4AQx1MzIAAWh6ZXJvdGhfZGVsYXlfdHJhbmNoZV93aWR0aDgBDHUzMgABYHJlbGF5X3ZyZl9tb2R1bG9fc2FtcGxlczgBDHUzMgABQG5fZGVsYXlfdHJhbmNoZXM4AQx1MzIAATRub19zaG93X3Nsb3RzOAEMdTMyAAFAbmVlZGVkX2FwcHJvdmFsczgBDHUzMgAApQ0MTHBvbGthZG90X3ByaW1pdGl2ZXMIdjkoSW5kZXhlZFZlYwgESwENBARWAQkBAAQAvQwBGFZlYzxWPgAAqQ0MTHBvbGthZG90X3ByaW1pdGl2ZXMIdjkoSW5kZXhlZFZlYwgESwHFCARWAbkMAAQAEQ0BGFZlYzxWPgAArQ0AAAQIOGEEALENDExwb2xrYWRvdF9wcmltaXRpdmVzCHY5MERpc3B1dGVTdGF0ZQQETgE4ABABOHZhbGlkYXRvcnNfZm9yBQQBfEJpdFZlYzx1OCwgYml0dmVjOjpvcmRlcjo6THNiMD4AAUh2YWxpZGF0b3JzX2FnYWluc3QFBAF8Qml0VmVjPHU4LCBiaXR2ZWM6Om9yZGVyOjpMc2IwPgABFHN0YXJ0OAEETgABMGNvbmNsdWRlZF9hdOUBASRPcHRpb248Tj4AALUNBCBCVHJlZVNldAQEVAENBAAEALkMAAAAuQ0QbHBvbGthZG90X3J1bnRpbWVfcGFyYWNoYWlucyBkaXNwdXRlcxhwYWxsZXQURXJyb3IEBFQAASR0RHVwbGljYXRlRGlzcHV0ZVN0YXRlbWVudFNldHMAAASoRHVwbGljYXRlIGRpc3B1dGUgc3RhdGVtZW50IHNldHMgcHJvdmlkZWQuXEFuY2llbnREaXNwdXRlU3RhdGVtZW50AAEEjEFuY2llbnQgZGlzcHV0ZSBzdGF0ZW1lbnQgcHJvdmlkZWQuZFZhbGlkYXRvckluZGV4T3V0T2ZCb3VuZHMAAgToVmFsaWRhdG9yIGluZGV4IG9uIHN0YXRlbWVudCBpcyBvdXQgb2YgYm91bmRzIGZvciBzZXNzaW9uLkBJbnZhbGlkU2lnbmF0dXJlAAMEfEludmFsaWQgc2lnbmF0dXJlIG9uIHN0YXRlbWVudC5IRHVwbGljYXRlU3RhdGVtZW50AAQEzFZhbGlkYXRvciB2b3RlIHN1Ym1pdHRlZCBtb3JlIHRoYW4gb25jZSB0byBkaXNwdXRlLkhTaW5nbGVTaWRlZERpc3B1dGUABQTEQSBkaXNwdXRlIHdoZXJlIHRoZXJlIGFyZSBvbmx5IHZvdGVzIG9uIG9uZSBzaWRlLjxNYWxpY2lvdXNCYWNrZXIABgScQSBkaXNwdXRlIHZvdGUgZnJvbSBhIG1hbGljaW91cyBiYWNrZXIuTE1pc3NpbmdCYWNraW5nVm90ZXMABwTgTm8gYmFja2luZyB2b3RlcyB3ZXJlIHByb3ZpZGVzIGFsb25nIGRpc3B1dGUgc3RhdGVtZW50cy5IVW5jb25maXJtZWREaXNwdXRlAAgEsFVuY29uZmlybWVkIGRpc3B1dGUgc3RhdGVtZW50IHNldHMgcHJvdmlkZWQuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0Lr0NEExwb2xrYWRvdF9wcmltaXRpdmVzCHY5IHNsYXNoaW5nOFBlbmRpbmdTbGFzaGVzAAAIARBrZXlzwQ0BlEJUcmVlTWFwPFZhbGlkYXRvckluZGV4LCBWYWxpZGF0b3JJZD4AARBraW5koQQBSERpc3B1dGVPZmZlbmNlS2luZAAAwQ0EIEJUcmVlTWFwCARLAQ0EBFYBCQEABADFDQAAAMUNAAACyQ0AyQ0AAAQIDQQJAQDNDRRscG9sa2Fkb3RfcnVudGltZV9wYXJhY2hhaW5zIGRpc3B1dGVzIHNsYXNoaW5nGHBhbGxldBRFcnJvcgQEVAABGGBJbnZhbGlkS2V5T3duZXJzaGlwUHJvb2YAAASMVGhlIGtleSBvd25lcnNoaXAgcHJvb2YgaXMgaW52YWxpZC5MSW52YWxpZFNlc3Npb25JbmRleAABBKBUaGUgc2Vzc2lvbiBpbmRleCBpcyB0b28gb2xkIG9yIGludmFsaWQuUEludmFsaWRDYW5kaWRhdGVIYXNoAAIEeFRoZSBjYW5kaWRhdGUgaGFzaCBpcyBpbnZhbGlkLlRJbnZhbGlkVmFsaWRhdG9ySW5kZXgAAwgBAVRoZXJlIGlzIG5vIHBlbmRpbmcgc2xhc2ggZm9yIHRoZSBnaXZlbiB2YWxpZGF0b3IgaW5kZXggYW5kIHRpbWUUc2xvdC5gVmFsaWRhdG9ySW5kZXhJZE1pc21hdGNoAAQE0FRoZSB2YWxpZGF0b3IgaW5kZXggZG9lcyBub3QgbWF0Y2ggdGhlIHZhbGlkYXRvciBpZC5cRHVwbGljYXRlU2xhc2hpbmdSZXBvcnQABQQNAVRoZSBnaXZlbiBzbGFzaGluZyByZXBvcnQgaXMgdmFsaWQgYnV0IGFscmVhZHkgcHJldmlvdXNseSByZXBvcnRlZC4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQu0Q0QbHBvbGthZG90X3J1bnRpbWVfcGFyYWNoYWlucyRvbl9kZW1hbmQUdHlwZXNEQ29yZUFmZmluaXR5Q291bnQAAAgBKGNvcmVfaW5kZXjBCAEkQ29yZUluZGV4AAEUY291bnQ4AQx1MzIAANUNEGxwb2xrYWRvdF9ydW50aW1lX3BhcmFjaGFpbnMkb25fZGVtYW5kFHR5cGVzPFF1ZXVlU3RhdHVzVHlwZQAAEAEcdHJhZmZpY30GASRGaXhlZFUxMjgAAShuZXh0X2luZGV42Q0BKFF1ZXVlSW5kZXgAAThzbWFsbGVzdF9pbmRleNkNAShRdWV1ZUluZGV4AAE0ZnJlZWRfaW5kaWNlc90NAXRCaW5hcnlIZWFwPFJldmVyc2VRdWV1ZUluZGV4PgAA2Q0QbHBvbGthZG90X3J1bnRpbWVfcGFyYWNoYWlucyRvbl9kZW1hbmQUdHlwZXMoUXVldWVJbmRleAAABAA4AQx1MzIAAN0NBChCaW5hcnlIZWFwBARUAeENAAQA5Q0AAADhDRBscG9sa2Fkb3RfcnVudGltZV9wYXJhY2hhaW5zJG9uX2RlbWFuZBR0eXBlc0RSZXZlcnNlUXVldWVJbmRleAAABAA4AQx1MzIAAOUNAAAC4Q0A6Q0EKEJpbmFyeUhlYXAEBFQB7Q0ABADxDQAAAO0NEGxwb2xrYWRvdF9ydW50aW1lX3BhcmFjaGFpbnMkb25fZGVtYW5kFHR5cGVzNEVucXVldWVkT3JkZXIAAAgBHHBhcmFfaWQVAgEYUGFyYUlkAAEMaWR42Q0BKFF1ZXVlSW5kZXgAAPENAAAC7Q0A9Q0MTGJvdW5kZWRfY29sbGVjdGlvbnMsYm91bmRlZF92ZWMoQm91bmRlZFZlYwgEVAGkBFMAAAQA+Q0BGFZlYzxUPgAA+Q0AAAKkAP0NEGxwb2xrYWRvdF9ydW50aW1lX3BhcmFjaGFpbnMkb25fZGVtYW5kGHBhbGxldBRFcnJvcgQEVAABDCRRdWV1ZUZ1bGwAAATkVGhlIG9yZGVyIHF1ZXVlIGlzIGZ1bGwsIGBwbGFjZV9vcmRlcmAgd2lsbCBub3QgY29udGludWUucFNwb3RQcmljZUhpZ2hlclRoYW5NYXhBbW91bnQAAQhNAVRoZSBjdXJyZW50IHNwb3QgcHJpY2UgaXMgaGlnaGVyIHRoYW4gdGhlIG1heCBhbW91bnQgc3BlY2lmaWVkIGluIHRoZSBgcGxhY2Vfb3JkZXJgYGNhbGwsIG1ha2luZyBpdCBpbnZhbGlkLkxJbnN1ZmZpY2llbnRDcmVkaXRzAAIEHQFUaGUgYWNjb3VudCBkb2Vzbid0IGhhdmUgZW5vdWdoIGNyZWRpdHMgdG8gcHVyY2hhc2Ugb24tZGVtYW5kIGNvcmV0aW1lLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC4BDgAABAg4wQgABQ4MbHBvbGthZG90X3J1bnRpbWVfcGFyYWNoYWluc0Rhc3NpZ25lcl9jb3JldGltZSBTY2hlZHVsZQQETgE4AAwBLGFzc2lnbm1lbnRz0QQBjFZlYzwoQ29yZUFzc2lnbm1lbnQsIFBhcnRzT2Y1NzYwMCk+AAEgZW5kX2hpbnTlAQEkT3B0aW9uPE4+AAE0bmV4dF9zY2hlZHVsZeUBASRPcHRpb248Tj4AAAkODGxwb2xrYWRvdF9ydW50aW1lX3BhcmFjaGFpbnNEYXNzaWduZXJfY29yZXRpbWU4Q29yZURlc2NyaXB0b3IEBE4BOAAIARRxdWV1ZQ0OAWhPcHRpb248UXVldWVEZXNjcmlwdG9yPE4+PgABMGN1cnJlbnRfd29yaxUOAVBPcHRpb248V29ya1N0YXRlPE4+PgAADQ4EGE9wdGlvbgQEVAERDgEIEE5vbmUAAAAQU29tZQQAEQ4AAAEAABEODGxwb2xrYWRvdF9ydW50aW1lX3BhcmFjaGFpbnNEYXNzaWduZXJfY29yZXRpbWU8UXVldWVEZXNjcmlwdG9yBAROATgACAEUZmlyc3Q4AQROAAEQbGFzdDgBBE4AABUOBBhPcHRpb24EBFQBGQ4BCBBOb25lAAAAEFNvbWUEABkOAAABAAAZDgxscG9sa2Fkb3RfcnVudGltZV9wYXJhY2hhaW5zRGFzc2lnbmVyX2NvcmV0aW1lJFdvcmtTdGF0ZQQETgE4ABABLGFzc2lnbm1lbnRzHQ4BmFZlYzwoQ29yZUFzc2lnbm1lbnQsIEFzc2lnbm1lbnRTdGF0ZSk+AAEgZW5kX2hpbnTlAQEkT3B0aW9uPE4+AAEMcG9z9QEBDHUxNgABEHN0ZXDdBAEwUGFydHNPZjU3NjAwAAAdDgAAAiEOACEOAAAECNkEJQ4AJQ4MbHBvbGthZG90X3J1bnRpbWVfcGFyYWNoYWluc0Rhc3NpZ25lcl9jb3JldGltZTxBc3NpZ25tZW50U3RhdGUAAAgBFHJhdGlv3QQBMFBhcnRzT2Y1NzYwMAABJHJlbWFpbmluZ90EATBQYXJ0c09mNTc2MDAAACkOEGxwb2xrYWRvdF9ydW50aW1lX3BhcmFjaGFpbnNEYXNzaWduZXJfY29yZXRpbWUYcGFsbGV0FEVycm9yBARUAAEIQEFzc2lnbm1lbnRzRW1wdHkAAABARGlzYWxsb3dlZEluc2VydAABCFEBYXNzaWduX2NvcmUgaXMgb25seSBhbGxvd2VkIHRvIGFwcGVuZCBuZXcgYXNzaWdubWVudHMgYXQgdGhlIGVuZCBvZiBhbHJlYWR5IGV4aXN0aW5neG9uZXMgb3IgdXBkYXRlIHRoZSBsYXN0IGVudHJ5LgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC4tDgxccG9sa2Fkb3RfcnVudGltZV9jb21tb248cGFyYXNfcmVnaXN0cmFyIFBhcmFJbmZvCBxBY2NvdW50AQQcQmFsYW5jZQGkAAwBHG1hbmFnZXIEARxBY2NvdW50AAEcZGVwb3NpdKQBHEJhbGFuY2UAARhsb2NrZWQxDgEwT3B0aW9uPGJvb2w+AAAxDgQYT3B0aW9uBARUAZgBCBBOb25lAAAAEFNvbWUEAJgAAAEAADUOEFxwb2xrYWRvdF9ydW50aW1lX2NvbW1vbjxwYXJhc19yZWdpc3RyYXIYcGFsbGV0FEVycm9yBARUAAE4NE5vdFJlZ2lzdGVyZWQAAARkVGhlIElEIGlzIG5vdCByZWdpc3RlcmVkLkRBbHJlYWR5UmVnaXN0ZXJlZAABBHRUaGUgSUQgaXMgYWxyZWFkeSByZWdpc3RlcmVkLiBOb3RPd25lcgACBJxUaGUgY2FsbGVyIGlzIG5vdCB0aGUgb3duZXIgb2YgdGhpcyBJZC4wQ29kZVRvb0xhcmdlAAMEXEludmFsaWQgcGFyYSBjb2RlIHNpemUuQEhlYWREYXRhVG9vTGFyZ2UABARwSW52YWxpZCBwYXJhIGhlYWQgZGF0YSBzaXplLjBOb3RQYXJhY2hhaW4ABQRgUGFyYSBpcyBub3QgYSBQYXJhY2hhaW4uNE5vdFBhcmF0aHJlYWQABgS8UGFyYSBpcyBub3QgYSBQYXJhdGhyZWFkIChvbi1kZW1hbmQgcGFyYWNoYWluKS5AQ2Fubm90RGVyZWdpc3RlcgAHBFhDYW5ub3QgZGVyZWdpc3RlciBwYXJhPENhbm5vdERvd25ncmFkZQAIBC0BQ2Fubm90IHNjaGVkdWxlIGRvd25ncmFkZSBvZiBsZWFzZSBob2xkaW5nIHBhcmFjaGFpbiB0byBvbi1kZW1hbmQgcGFyYWNoYWluNENhbm5vdFVwZ3JhZGUACQQlAUNhbm5vdCBzY2hlZHVsZSB1cGdyYWRlIG9mIG9uLWRlbWFuZCBwYXJhY2hhaW4gdG8gbGVhc2UgaG9sZGluZyBwYXJhY2hhaW4oUGFyYUxvY2tlZAAKCEkBUGFyYSBpcyBsb2NrZWQgZnJvbSBtYW5pcHVsYXRpb24gYnkgdGhlIG1hbmFnZXIuIE11c3QgdXNlIHBhcmFjaGFpbiBvciByZWxheSBjaGFpbixnb3Zlcm5hbmNlLixOb3RSZXNlcnZlZAALBNBUaGUgSUQgZ2l2ZW4gZm9yIHJlZ2lzdHJhdGlvbiBoYXMgbm90IGJlZW4gcmVzZXJ2ZWQuLEludmFsaWRDb2RlAAwEfFRoZSB2YWxpZGF0aW9uIGNvZGUgaXMgaW52YWxpZC4oQ2Fubm90U3dhcAANCFEBQ2Fubm90IHBlcmZvcm0gYSBwYXJhY2hhaW4gc2xvdCAvIGxpZmVjeWNsZSBzd2FwLiBDaGVjayB0aGF0IHRoZSBzdGF0ZSBvZiBib3RoIHBhcmFzhGFyZSBjb3JyZWN0IGZvciB0aGUgc3dhcCB0byB3b3JrLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC45DgAAApUJAD0OEFxwb2xrYWRvdF9ydW50aW1lX2NvbW1vbhRzbG90cxhwYWxsZXQURXJyb3IEBFQAAQhEUGFyYU5vdE9uYm9hcmRpbmcAAASMVGhlIHBhcmFjaGFpbiBJRCBpcyBub3Qgb25ib2FyZGluZy4oTGVhc2VFcnJvcgABBIhUaGVyZSB3YXMgYW4gZXJyb3Igd2l0aCB0aGUgbGVhc2UuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LkEOAAAECAQVAgBFDgAAAyQAAABJDgBJDgQYT3B0aW9uBARUAU0OAQgQTm9uZQAAABBTb21lBABNDgAAAQAATQ4AAAQMBBUCpABRDhBccG9sa2Fkb3RfcnVudGltZV9jb21tb24gYXVjdGlvbnMYcGFsbGV0FEVycm9yBARUAAEcREF1Y3Rpb25JblByb2dyZXNzAAAEkFRoaXMgYXVjdGlvbiBpcyBhbHJlYWR5IGluIHByb2dyZXNzLkRMZWFzZVBlcmlvZEluUGFzdAABBIBUaGUgbGVhc2UgcGVyaW9kIGlzIGluIHRoZSBwYXN0LkRQYXJhTm90UmVnaXN0ZXJlZAACBFhQYXJhIGlzIG5vdCByZWdpc3RlcmVkRE5vdEN1cnJlbnRBdWN0aW9uAAMEWE5vdCBhIGN1cnJlbnQgYXVjdGlvbi4oTm90QXVjdGlvbgAEBDxOb3QgYW4gYXVjdGlvbi4wQXVjdGlvbkVuZGVkAAUEaEF1Y3Rpb24gaGFzIGFscmVhZHkgZW5kZWQuQEFscmVhZHlMZWFzZWRPdXQABgTYVGhlIHBhcmEgaXMgYWxyZWFkeSBsZWFzZWQgb3V0IGZvciBwYXJ0IG9mIHRoaXMgcmFuZ2UuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LlUODFxwb2xrYWRvdF9ydW50aW1lX2NvbW1vbiRjcm93ZGxvYW4gRnVuZEluZm8QJEFjY291bnRJZAEEHEJhbGFuY2UBpCxCbG9ja051bWJlcgE4LExlYXNlUGVyaW9kATgAKAEkZGVwb3NpdG9yBAEkQWNjb3VudElkAAEgdmVyaWZpZXK9BAFMT3B0aW9uPE11bHRpU2lnbmVyPgABHGRlcG9zaXSkARxCYWxhbmNlAAEYcmFpc2VkpAEcQmFsYW5jZQABDGVuZDgBLEJsb2NrTnVtYmVyAAEMY2FwpAEcQmFsYW5jZQABRGxhc3RfY29udHJpYnV0aW9uWQ4BdExhc3RDb250cmlidXRpb248QmxvY2tOdW1iZXI+AAEwZmlyc3RfcGVyaW9kOAEsTGVhc2VQZXJpb2QAASxsYXN0X3BlcmlvZDgBLExlYXNlUGVyaW9kAAEoZnVuZF9pbmRleDgBJEZ1bmRJbmRleAAAWQ4MXHBvbGthZG90X3J1bnRpbWVfY29tbW9uJGNyb3dkbG9hbkBMYXN0Q29udHJpYnV0aW9uBCxCbG9ja051bWJlcgE4AQwUTmV2ZXIAAAAkUHJlRW5kaW5nBAA4AQx1MzIAAQAYRW5kaW5nBAA4ASxCbG9ja051bWJlcgACAABdDhBccG9sa2Fkb3RfcnVudGltZV9jb21tb24kY3Jvd2Rsb2FuGHBhbGxldBRFcnJvcgQEVAABXERGaXJzdFBlcmlvZEluUGFzdAAABPRUaGUgY3VycmVudCBsZWFzZSBwZXJpb2QgaXMgbW9yZSB0aGFuIHRoZSBmaXJzdCBsZWFzZSBwZXJpb2QuZEZpcnN0UGVyaW9kVG9vRmFySW5GdXR1cmUAAQQRAVRoZSBmaXJzdCBsZWFzZSBwZXJpb2QgbmVlZHMgdG8gYXQgbGVhc3QgYmUgbGVzcyB0aGFuIDMgYG1heF92YWx1ZWAubExhc3RQZXJpb2RCZWZvcmVGaXJzdFBlcmlvZAACBOhMYXN0IGxlYXNlIHBlcmlvZCBtdXN0IGJlIGdyZWF0ZXIgdGhhbiBmaXJzdCBsZWFzZSBwZXJpb2QuYExhc3RQZXJpb2RUb29GYXJJbkZ1dHVyZQADBC0BVGhlIGxhc3QgbGVhc2UgcGVyaW9kIGNhbm5vdCBiZSBtb3JlIHRoYW4gMyBwZXJpb2RzIGFmdGVyIHRoZSBmaXJzdCBwZXJpb2QuPENhbm5vdEVuZEluUGFzdAAEBEUBVGhlIGNhbXBhaWduIGVuZHMgYmVmb3JlIHRoZSBjdXJyZW50IGJsb2NrIG51bWJlci4gVGhlIGVuZCBtdXN0IGJlIGluIHRoZSBmdXR1cmUuREVuZFRvb0ZhckluRnV0dXJlAAUEwFRoZSBlbmQgZGF0ZSBmb3IgdGhpcyBjcm93ZGxvYW4gaXMgbm90IHNlbnNpYmxlLiBPdmVyZmxvdwAGBFhUaGVyZSB3YXMgYW4gb3ZlcmZsb3cuUENvbnRyaWJ1dGlvblRvb1NtYWxsAAcE6FRoZSBjb250cmlidXRpb24gd2FzIGJlbG93IHRoZSBtaW5pbXVtLCBgTWluQ29udHJpYnV0aW9uYC40SW52YWxpZFBhcmFJZAAIBExJbnZhbGlkIGZ1bmQgaW5kZXguLENhcEV4Y2VlZGVkAAkEkENvbnRyaWJ1dGlvbnMgZXhjZWVkIG1heGltdW0gYW1vdW50LlhDb250cmlidXRpb25QZXJpb2RPdmVyAAoEqFRoZSBjb250cmlidXRpb24gcGVyaW9kIGhhcyBhbHJlYWR5IGVuZGVkLjRJbnZhbGlkT3JpZ2luAAsEjFRoZSBvcmlnaW4gb2YgdGhpcyBjYWxsIGlzIGludmFsaWQuME5vdFBhcmFjaGFpbgAMBMhUaGlzIGNyb3dkbG9hbiBkb2VzIG5vdCBjb3JyZXNwb25kIHRvIGEgcGFyYWNoYWluLixMZWFzZUFjdGl2ZQANBBUBVGhpcyBwYXJhY2hhaW4gbGVhc2UgaXMgc3RpbGwgYWN0aXZlIGFuZCByZXRpcmVtZW50IGNhbm5vdCB5ZXQgYmVnaW4uQEJpZE9yTGVhc2VBY3RpdmUADgQxAVRoaXMgcGFyYWNoYWluJ3MgYmlkIG9yIGxlYXNlIGlzIHN0aWxsIGFjdGl2ZSBhbmQgd2l0aGRyYXcgY2Fubm90IHlldCBiZWdpbi4wRnVuZE5vdEVuZGVkAA8EgFRoZSBjcm93ZGxvYW4gaGFzIG5vdCB5ZXQgZW5kZWQuPE5vQ29udHJpYnV0aW9ucwAQBNBUaGVyZSBhcmUgbm8gY29udHJpYnV0aW9ucyBzdG9yZWQgaW4gdGhpcyBjcm93ZGxvYW4uSE5vdFJlYWR5VG9EaXNzb2x2ZQARCFUBVGhlIGNyb3dkbG9hbiBpcyBub3QgcmVhZHkgdG8gZGlzc29sdmUuIFBvdGVudGlhbGx5IHN0aWxsIGhhcyBhIHNsb3Qgb3IgaW4gcmV0aXJlbWVudBxwZXJpb2QuQEludmFsaWRTaWduYXR1cmUAEgRISW52YWxpZCBzaWduYXR1cmUuME1lbW9Ub29MYXJnZQATBHxUaGUgcHJvdmlkZWQgbWVtbyBpcyB0b28gbGFyZ2UuREFscmVhZHlJbk5ld1JhaXNlABQEhFRoZSBmdW5kIGlzIGFscmVhZHkgaW4gYE5ld1JhaXNlYEhWcmZEZWxheUluUHJvZ3Jlc3MAFQS0Tm8gY29udHJpYnV0aW9ucyBhbGxvd2VkIGR1cmluZyB0aGUgVlJGIGRlbGF5NE5vTGVhc2VQZXJpb2QAFgQtAUEgbGVhc2UgcGVyaW9kIGhhcyBub3Qgc3RhcnRlZCB5ZXQsIGR1ZSB0byBhbiBvZmZzZXQgaW4gdGhlIHN0YXJ0aW5nIGJsb2NrLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC5hDhBscG9sa2Fkb3RfcnVudGltZV9wYXJhY2hhaW5zIGNvcmV0aW1lGHBhbGxldBRFcnJvcgQEVAABDCROb3RCcm9rZXIAAAQpAVRoZSBwYXJhaWQgbWFraW5nIHRoZSBjYWxsIGlzIG5vdCB0aGUgY29yZXRpbWUgYnJva2VyYWdlIHN5c3RlbSBwYXJhY2hhaW4uWFJlcXVlc3RlZEZ1dHVyZVJldmVudWUAAQhFAVJlcXVlc3RlZCByZXZlbnVlIGluZm9ybWF0aW9uIGB3aGVuYCBwYXJhbWV0ZXIgd2FzIGluIHRoZSBmdXR1cmUgZnJvbSB0aGUgY3VycmVudDRibG9jayBoZWlnaHQuTEFzc2V0VHJhbnNmZXJGYWlsZWQAAgS8RmFpbGVkIHRvIHRyYW5zZmVyIGFzc2V0cyB0byB0aGUgY29yZXRpbWUgY2hhaW4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQuZQ4MKHBhbGxldF94Y20YcGFsbGV0LFF1ZXJ5U3RhdHVzBCxCbG9ja051bWJlcgE4AQwcUGVuZGluZxABJHJlc3BvbmRlcuEBAURWZXJzaW9uZWRMb2NhdGlvbgABTG1heWJlX21hdGNoX3F1ZXJpZXJpDgFkT3B0aW9uPFZlcnNpb25lZExvY2F0aW9uPgABMG1heWJlX25vdGlmeW0OAUBPcHRpb248KHU4LCB1OCk+AAEcdGltZW91dDgBLEJsb2NrTnVtYmVyAAAAPFZlcnNpb25Ob3RpZmllcggBGG9yaWdpbuEBAURWZXJzaW9uZWRMb2NhdGlvbgABJGlzX2FjdGl2ZZgBEGJvb2wAAQAUUmVhZHkIASByZXNwb25zZXUOAURWZXJzaW9uZWRSZXNwb25zZQABCGF0OAEsQmxvY2tOdW1iZXIAAgAAaQ4EGE9wdGlvbgQEVAHhAQEIEE5vbmUAAAAQU29tZQQA4QEAAAEAAG0OBBhPcHRpb24EBFQBcQ4BCBBOb25lAAAAEFNvbWUEAHEOAAABAABxDgAABAgMDAB1DggMeGNtRFZlcnNpb25lZFJlc3BvbnNlAAEMCFYzBAApBQEwdjM6OlJlc3BvbnNlAAMACFY0BACRBQEwdjQ6OlJlc3BvbnNlAAQACFY1BADZBQEwdjU6OlJlc3BvbnNlAAUAAHkOAAAECDjhAQB9DgAABAwoNQI4AIEODExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBhQ4EUwAABACJDgEYVmVjPFQ+AACFDgAABAjhATgAiQ4AAAKFDgCNDgwocGFsbGV0X3hjbRhwYWxsZXRUVmVyc2lvbk1pZ3JhdGlvblN0YWdlAAEQXE1pZ3JhdGVTdXBwb3J0ZWRWZXJzaW9uAAAAXE1pZ3JhdGVWZXJzaW9uTm90aWZpZXJzAAEAUE5vdGlmeUN1cnJlbnRUYXJnZXRzBACRDgE8T3B0aW9uPFZlYzx1OD4+AAIAaE1pZ3JhdGVBbmROb3RpZnlPbGRUYXJnZXRzAAMAAJEOBBhPcHRpb24EBFQBGAEIEE5vbmUAAAAQU29tZQQAGAAAAQAAlQ4AAAQMOARlBgCZDgwocGFsbGV0X3hjbRhwYWxsZXRoUmVtb3RlTG9ja2VkRnVuZ2libGVSZWNvcmQISENvbnN1bWVySWRlbnRpZmllcgEQME1heENvbnN1bWVycwAAEAEYYW1vdW50pAEQdTEyOAABFG93bmVy4QEBRFZlcnNpb25lZExvY2F0aW9uAAEYbG9ja2Vy4QEBRFZlcnNpb25lZExvY2F0aW9uAAEkY29uc3VtZXJznQ4B0EJvdW5kZWRWZWM8KENvbnN1bWVySWRlbnRpZmllciwgdTEyOCksIE1heENvbnN1bWVycz4AAJ0ODExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBoQ4EUwAABAClDgEYVmVjPFQ+AAChDgAABAgQpAClDgAAAqEOAKkODExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBrQ4EUwAABACxDgEYVmVjPFQ+AACtDgAABAik4QEAsQ4AAAKtDgC1DggocGFsbGV0X3hjbVhBdXRob3JpemVkQWxpYXNlc0VudHJ5CBhUaWNrZXQBuQ4MTUFYAb0OAAgBIGFsaWFzZXJzwQ4BeEJvdW5kZWRWZWM8T3JpZ2luQWxpYXNlciwgTUFYPgABGHRpY2tldLkOARhUaWNrZXQAALkOEDRmcmFtZV9zdXBwb3J0GHRyYWl0cxxzdG9yYWdlIERpc2FibGVkAAAAAL0ODChwYWxsZXRfeGNtGHBhbGxldFBNYXhBdXRob3JpemVkQWxpYXNlcwAAAADBDgxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAcUOBFMAAAQAyQ4BGFZlYzxUPgAAxQ4MQHhjbV9ydW50aW1lX2FwaXNIYXV0aG9yaXplZF9hbGlhc2VzNE9yaWdpbkFsaWFzZXIAAAgBIGxvY2F0aW9u4QEBRFZlcnNpb25lZExvY2F0aW9uAAEYZXhwaXJ5aQYBLE9wdGlvbjx1NjQ+AADJDgAAAsUOAM0ODChwYWxsZXRfeGNtGHBhbGxldBRFcnJvcgQEVAABcCxVbnJlYWNoYWJsZQAACF0BVGhlIGRlc2lyZWQgZGVzdGluYXRpb24gd2FzIHVucmVhY2hhYmxlLCBnZW5lcmFsbHkgYmVjYXVzZSB0aGVyZSBpcyBhIG5vIHdheSBvZiByb3V0aW5nGHRvIGl0LixTZW5kRmFpbHVyZQABCEEBVGhlcmUgd2FzIHNvbWUgb3RoZXIgaXNzdWUgKGkuZS4gbm90IHRvIGRvIHdpdGggcm91dGluZykgaW4gc2VuZGluZyB0aGUgbWVzc2FnZS7IUGVyaGFwcyBhIGxhY2sgb2Ygc3BhY2UgZm9yIGJ1ZmZlcmluZyB0aGUgbWVzc2FnZS4gRmlsdGVyZWQAAgScVGhlIG1lc3NhZ2UgZXhlY3V0aW9uIGZhaWxzIHRoZSBmaWx0ZXIuSFVud2VpZ2hhYmxlTWVzc2FnZQADBLRUaGUgbWVzc2FnZSdzIHdlaWdodCBjb3VsZCBub3QgYmUgZGV0ZXJtaW5lZC5gRGVzdGluYXRpb25Ob3RJbnZlcnRpYmxlAAQE3FRoZSBkZXN0aW5hdGlvbiBgTG9jYXRpb25gIHByb3ZpZGVkIGNhbm5vdCBiZSBpbnZlcnRlZC4URW1wdHkABQSAVGhlIGFzc2V0cyB0byBiZSBzZW50IGFyZSBlbXB0eS44Q2Fubm90UmVhbmNob3IABgQ1AUNvdWxkIG5vdCByZS1hbmNob3IgdGhlIGFzc2V0cyB0byBkZWNsYXJlIHRoZSBmZWVzIGZvciB0aGUgZGVzdGluYXRpb24gY2hhaW4uNFRvb01hbnlBc3NldHMABwTEVG9vIG1hbnkgYXNzZXRzIGhhdmUgYmVlbiBhdHRlbXB0ZWQgZm9yIHRyYW5zZmVyLjRJbnZhbGlkT3JpZ2luAAgEeE9yaWdpbiBpcyBpbnZhbGlkIGZvciBzZW5kaW5nLihCYWRWZXJzaW9uAAkEIQFUaGUgdmVyc2lvbiBvZiB0aGUgYFZlcnNpb25lZGAgdmFsdWUgdXNlZCBpcyBub3QgYWJsZSB0byBiZSBpbnRlcnByZXRlZC4sQmFkTG9jYXRpb24ACghBAVRoZSBnaXZlbiBsb2NhdGlvbiBjb3VsZCBub3QgYmUgdXNlZCAoZS5nLiBiZWNhdXNlIGl0IGNhbm5vdCBiZSBleHByZXNzZWQgaW4gdGhlYGRlc2lyZWQgdmVyc2lvbiBvZiBYQ00pLjhOb1N1YnNjcmlwdGlvbgALBLxUaGUgcmVmZXJlbmNlZCBzdWJzY3JpcHRpb24gY291bGQgbm90IGJlIGZvdW5kLkRBbHJlYWR5U3Vic2NyaWJlZAAMBBEBVGhlIGxvY2F0aW9uIGlzIGludmFsaWQgc2luY2UgaXQgYWxyZWFkeSBoYXMgYSBzdWJzY3JpcHRpb24gZnJvbSB1cy5YQ2Fubm90Q2hlY2tPdXRUZWxlcG9ydAANBCkBQ291bGQgbm90IGNoZWNrLW91dCB0aGUgYXNzZXRzIGZvciB0ZWxlcG9ydGF0aW9uIHRvIHRoZSBkZXN0aW5hdGlvbiBjaGFpbi4oTG93QmFsYW5jZQAOBEEBVGhlIG93bmVyIGRvZXMgbm90IG93biAoYWxsKSBvZiB0aGUgYXNzZXQgdGhhdCB0aGV5IHdpc2ggdG8gZG8gdGhlIG9wZXJhdGlvbiBvbi4wVG9vTWFueUxvY2tzAA8EwFRoZSBhc3NldCBvd25lciBoYXMgdG9vIG1hbnkgbG9ja3Mgb24gdGhlIGFzc2V0LkxBY2NvdW50Tm90U292ZXJlaWduABAEMQFUaGUgZ2l2ZW4gYWNjb3VudCBpcyBub3QgYW4gaWRlbnRpZmlhYmxlIHNvdmVyZWlnbiBhY2NvdW50IGZvciBhbnkgbG9jYXRpb24uKEZlZXNOb3RNZXQAEQQpAVRoZSBvcGVyYXRpb24gcmVxdWlyZWQgZmVlcyB0byBiZSBwYWlkIHdoaWNoIHRoZSBpbml0aWF0b3IgY291bGQgbm90IG1lZXQuMExvY2tOb3RGb3VuZAASBPRBIHJlbW90ZSBsb2NrIHdpdGggdGhlIGNvcnJlc3BvbmRpbmcgZGF0YSBjb3VsZCBub3QgYmUgZm91bmQuFEluVXNlABMESQFUaGUgdW5sb2NrIG9wZXJhdGlvbiBjYW5ub3Qgc3VjY2VlZCBiZWNhdXNlIHRoZXJlIGFyZSBzdGlsbCBjb25zdW1lcnMgb2YgdGhlIGxvY2suaEludmFsaWRBc3NldFVua25vd25SZXNlcnZlABUE8EludmFsaWQgYXNzZXQsIHJlc2VydmUgY2hhaW4gY291bGQgbm90IGJlIGRldGVybWluZWQgZm9yIGl0LnhJbnZhbGlkQXNzZXRVbnN1cHBvcnRlZFJlc2VydmUAFgRFAUludmFsaWQgYXNzZXQsIGRvIG5vdCBzdXBwb3J0IHJlbW90ZSBhc3NldCByZXNlcnZlcyB3aXRoIGRpZmZlcmVudCBmZWVzIHJlc2VydmVzLjxUb29NYW55UmVzZXJ2ZXMAFwRJAVRvbyBtYW55IGFzc2V0cyB3aXRoIGRpZmZlcmVudCByZXNlcnZlIGxvY2F0aW9ucyBoYXZlIGJlZW4gYXR0ZW1wdGVkIGZvciB0cmFuc2Zlci5gTG9jYWxFeGVjdXRpb25JbmNvbXBsZXRlABgEfExvY2FsIFhDTSBleGVjdXRpb24gaW5jb21wbGV0ZS5gVG9vTWFueUF1dGhvcml6ZWRBbGlhc2VzABkEuFRvbyBtYW55IGxvY2F0aW9ucyBhdXRob3JpemVkIHRvIGFsaWFzIG9yaWdpbi40RXhwaXJlc0luUGFzdAAaBIxFeHBpcnkgYmxvY2sgbnVtYmVyIGlzIGluIHRoZSBwYXN0LjRBbGlhc05vdEZvdW5kABsE0FRoZSBhbGlhcyB0byByZW1vdmUgYXV0aG9yaXphdGlvbiBmb3Igd2FzIG5vdCBmb3VuZC6ETG9jYWxFeGVjdXRpb25JbmNvbXBsZXRlV2l0aEVycm9yCAEUaW5kZXgMAUBJbnN0cnVjdGlvbkluZGV4AAEUZXJyb3LRDgE4RXhlY3V0aW9uRXJyb3IAHAg1AUxvY2FsIFhDTSBleGVjdXRpb24gaW5jb21wbGV0ZSB3aXRoIHRoZSBhY3R1YWwgWENNIGVycm9yIGFuZCB0aGUgaW5kZXggb2YgdGhliGluc3RydWN0aW9uIHRoYXQgY2F1c2VkIHRoZSBlcnJvci4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQu0Q4MKHBhbGxldF94Y20YZXJyb3JzOEV4ZWN1dGlvbkVycm9yAAGkIE92ZXJmbG93AAAANFVuaW1wbGVtZW50ZWQAAQBgVW50cnVzdGVkUmVzZXJ2ZUxvY2F0aW9uAAIAZFVudHJ1c3RlZFRlbGVwb3J0TG9jYXRpb24AAwAwTG9jYXRpb25GdWxsAAQAVExvY2F0aW9uTm90SW52ZXJ0aWJsZQAFACRCYWRPcmlnaW4ABgA8SW52YWxpZExvY2F0aW9uAAcANEFzc2V0Tm90Rm91bmQACABURmFpbGVkVG9UcmFuc2FjdEFzc2V0AAkAPE5vdFdpdGhkcmF3YWJsZQAKAEhMb2NhdGlvbkNhbm5vdEhvbGQACwBURXhjZWVkc01heE1lc3NhZ2VTaXplAAwAWERlc3RpbmF0aW9uVW5zdXBwb3J0ZWQADQAkVHJhbnNwb3J0AA4AKFVucm91dGFibGUADwAwVW5rbm93bkNsYWltABAAOEZhaWxlZFRvRGVjb2RlABEAQE1heFdlaWdodEludmFsaWQAEgA4Tm90SG9sZGluZ0ZlZXMAEwAwVG9vRXhwZW5zaXZlABQAEFRyYXAAFQBARXhwZWN0YXRpb25GYWxzZQAWADhQYWxsZXROb3RGb3VuZAAXADBOYW1lTWlzbWF0Y2gAGABMVmVyc2lvbkluY29tcGF0aWJsZQAZAFBIb2xkaW5nV291bGRPdmVyZmxvdwAaACxFeHBvcnRFcnJvcgAbADhSZWFuY2hvckZhaWxlZAAcABhOb0RlYWwAHQAoRmVlc05vdE1ldAAeACRMb2NrRXJyb3IAHwAwTm9QZXJtaXNzaW9uACAAKFVuYW5jaG9yZWQAIQA4Tm90RGVwb3NpdGFibGUAIgA0VG9vTWFueUFzc2V0cwAjAExVbmhhbmRsZWRYY21WZXJzaW9uACQASFdlaWdodExpbWl0UmVhY2hlZAAlABxCYXJyaWVyACYATFdlaWdodE5vdENvbXB1dGFibGUAJwBERXhjZWVkc1N0YWNrTGltaXQAKAAA1Q4IUHBhbGxldF9tZXNzYWdlX3F1ZXVlJEJvb2tTdGF0ZQQ0TWVzc2FnZU9yaWdpbgFxBgAYARRiZWdpbjgBJFBhZ2VJbmRleAABDGVuZDgBJFBhZ2VJbmRleAABFGNvdW50OAEkUGFnZUluZGV4AAFAcmVhZHlfbmVpZ2hib3Vyc9kOAYRPcHRpb248TmVpZ2hib3VyczxNZXNzYWdlT3JpZ2luPj4AATRtZXNzYWdlX2NvdW50KAEMdTY0AAEQc2l6ZSgBDHU2NAAA2Q4EGE9wdGlvbgQEVAHdDgEIEE5vbmUAAAAQU29tZQQA3Q4AAAEAAN0OCFBwYWxsZXRfbWVzc2FnZV9xdWV1ZShOZWlnaGJvdXJzBDRNZXNzYWdlT3JpZ2luAXEGAAgBEHByZXZxBgE0TWVzc2FnZU9yaWdpbgABEG5leHRxBgE0TWVzc2FnZU9yaWdpbgAA4Q4AAAQIcQY4AOUOCFBwYWxsZXRfbWVzc2FnZV9xdWV1ZRBQYWdlCBBTaXplATggSGVhcFNpemUAABgBJHJlbWFpbmluZzgBEFNpemUAAThyZW1haW5pbmdfc2l6ZTgBEFNpemUAASxmaXJzdF9pbmRleDgBEFNpemUAARRmaXJzdDgBEFNpemUAARBsYXN0OAEQU2l6ZQABEGhlYXDpDgGcQm91bmRlZFZlYzx1OCwgSW50b1UzMjxIZWFwU2l6ZSwgU2l6ZT4+AADpDgxMYm91bmRlZF9jb2xsZWN0aW9ucyxib3VuZGVkX3ZlYyhCb3VuZGVkVmVjCARUAQwEUwAABAAYARhWZWM8VD4AAO0ODFBwYWxsZXRfbWVzc2FnZV9xdWV1ZRhwYWxsZXQURXJyb3IEBFQAASQsTm90UmVhcGFibGUAAAhJAVBhZ2UgaXMgbm90IHJlYXBhYmxlIGJlY2F1c2UgaXQgaGFzIGl0ZW1zIHJlbWFpbmluZyB0byBiZSBwcm9jZXNzZWQgYW5kIGlzIG5vdCBvbGQcZW5vdWdoLhhOb1BhZ2UAAQSEUGFnZSB0byBiZSByZWFwZWQgZG9lcyBub3QgZXhpc3QuJE5vTWVzc2FnZQACBKhUaGUgcmVmZXJlbmNlZCBtZXNzYWdlIGNvdWxkIG5vdCBiZSBmb3VuZC5AQWxyZWFkeVByb2Nlc3NlZAADBAEBVGhlIG1lc3NhZ2Ugd2FzIGFscmVhZHkgcHJvY2Vzc2VkIGFuZCBjYW5ub3QgYmUgcHJvY2Vzc2VkIGFnYWluLhhRdWV1ZWQABASsVGhlIG1lc3NhZ2UgaXMgcXVldWVkIGZvciBmdXR1cmUgZXhlY3V0aW9uLkhJbnN1ZmZpY2llbnRXZWlnaHQABQQZAVRoZXJlIGlzIHRlbXBvcmFyaWx5IG5vdCBlbm91Z2ggd2VpZ2h0IHRvIGNvbnRpbnVlIHNlcnZpY2luZyBtZXNzYWdlcy5gVGVtcG9yYXJpbHlVbnByb2Nlc3NhYmxlAAYQqFRoaXMgbWVzc2FnZSBpcyB0ZW1wb3JhcmlseSB1bnByb2Nlc3NhYmxlLgBZAVN1Y2ggZXJyb3JzIGFyZSBleHBlY3RlZCwgYnV0IG5vdCBndWFyYW50ZWVkLCB0byByZXNvbHZlIHRoZW1zZWx2ZXMgZXZlbnR1YWxseSB0aHJvdWdoJHJldHJ5aW5nLixRdWV1ZVBhdXNlZAAHDOxUaGUgcXVldWUgaXMgcGF1c2VkIGFuZCBubyBtZXNzYWdlIGNhbiBiZSBleGVjdXRlZCBmcm9tIGl0LgAdAVRoaXMgY2FuIGNoYW5nZSBhdCBhbnkgdGltZSBhbmQgbWF5IHJlc29sdmUgaW4gdGhlIGZ1dHVyZSBieSByZS10cnlpbmcuTFJlY3Vyc2l2ZURpc2FsbG93ZWQACAQxAUFub3RoZXIgY2FsbCBpcyBpbiBwcm9ncmVzcyBhbmQgbmVlZHMgdG8gZmluaXNoIGJlZm9yZSB0aGlzIGNhbGwgY2FuIGhhcHBlbi4EgFRoZSBgRXJyb3JgIGVudW0gb2YgdGhpcyBwYWxsZXQu8Q4MRHBhbGxldF9hc3NldF9yYXRlGHBhbGxldBRFcnJvcgQEVAABDEBVbmtub3duQXNzZXRLaW5kAAAEeFRoZSBnaXZlbiBhc3NldCBJRCBpcyB1bmtub3duLjRBbHJlYWR5RXhpc3RzAAEEUQFUaGUgZ2l2ZW4gYXNzZXQgSUQgYWxyZWFkeSBoYXMgYW4gYXNzaWduZWQgY29udmVyc2lvbiByYXRlIGFuZCBjYW5ub3QgYmUgcmUtY3JlYXRlZC4gT3ZlcmZsb3cAAgTMT3ZlcmZsb3cgb2N1cnJlZCB3aGVuIGNhbGN1bGF0aW5nIHRoZSBpbnZlcnNlIHJhdGUuBIBUaGUgYEVycm9yYCBlbnVtIG9mIHRoaXMgcGFsbGV0LvUODExib3VuZGVkX2NvbGxlY3Rpb25zLGJvdW5kZWRfdmVjKEJvdW5kZWRWZWMIBFQBFQEEUwAABAD5DgEYVmVjPFQ+AAD5DgAAAhUBAP0ODDBwYWxsZXRfYmVlZnkYcGFsbGV0FEVycm9yBARUAAEgYEludmFsaWRLZXlPd25lcnNoaXBQcm9vZgAABDEBQSBrZXkgb3duZXJzaGlwIHByb29mIHByb3ZpZGVkIGFzIHBhcnQgb2YgYW4gZXF1aXZvY2F0aW9uIHJlcG9ydCBpcyBpbnZhbGlkLmBJbnZhbGlkRG91YmxlVm90aW5nUHJvb2YAAQQxAUEgZG91YmxlIHZvdGluZyBwcm9vZiBwcm92aWRlZCBhcyBwYXJ0IG9mIGFuIGVxdWl2b2NhdGlvbiByZXBvcnQgaXMgaW52YWxpZC5YSW52YWxpZEZvcmtWb3RpbmdQcm9vZgACBCkBQSBmb3JrIHZvdGluZyBwcm9vZiBwcm92aWRlZCBhcyBwYXJ0IG9mIGFuIGVxdWl2b2NhdGlvbiByZXBvcnQgaXMgaW52YWxpZC50SW52YWxpZEZ1dHVyZUJsb2NrVm90aW5nUHJvb2YAAwRJAUEgZnV0dXJlIGJsb2NrIHZvdGluZyBwcm9vZiBwcm92aWRlZCBhcyBwYXJ0IG9mIGFuIGVxdWl2b2NhdGlvbiByZXBvcnQgaXMgaW52YWxpZC58SW52YWxpZEVxdWl2b2NhdGlvblByb29mU2Vzc2lvbgAEBMBUaGUgc2Vzc2lvbiBvZiB0aGUgZXF1aXZvY2F0aW9uIHByb29mIGlzIGludmFsaWSUSW52YWxpZEVxdWl2b2NhdGlvblByb29mU2Vzc2lvbk1lbWJlcgAFBBUBVGhlIHNlc3Npb24gb2YgdGhlIGVxdWl2b2NhdGlvbiBwcm9vZiBpcyBub3QgaW4gdGhlIG1hcHBpbmcgKGFueW1vcmUpWER1cGxpY2F0ZU9mZmVuY2VSZXBvcnQABgQVAUEgZ2l2ZW4gZXF1aXZvY2F0aW9uIHJlcG9ydCBpcyB2YWxpZCBidXQgYWxyZWFkeSBwcmV2aW91c2x5IHJlcG9ydGVkLlBJbnZhbGlkQ29uZmlndXJhdGlvbgAHBIxTdWJtaXR0ZWQgY29uZmlndXJhdGlvbiBpcyBpbnZhbGlkLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC4BDwxIc3BfY29uc2Vuc3VzX2JlZWZ5DG1tckRCZWVmeUF1dGhvcml0eVNldARYQXV0aG9yaXR5U2V0Q29tbWl0bWVudAE8AAwBCGlkKAFUY3JhdGU6OlZhbGlkYXRvclNldElkAAEMbGVuOAEMdTMyAAFEa2V5c2V0X2NvbW1pdG1lbnQ8AVhBdXRob3JpdHlTZXRDb21taXRtZW50AAAFDwxIcGFsbGV0X3JjX21pZ3JhdG9yIGFjY291bnRzMEFjY291bnRTdGF0ZQQcQmFsYW5jZQGkAQwcTWlncmF0ZQAAACBQcmVzZXJ2ZQABABBQYXJ0DAEQZnJlZaQBHEJhbGFuY2UAASByZXNlcnZlZKQBHEJhbGFuY2UAASRjb25zdW1lcnM4AQx1MzIAAgAACQ8MSHBhbGxldF9yY19taWdyYXRvciBhY2NvdW50c0BNaWdyYXRlZEJhbGFuY2VzBBxCYWxhbmNlAaQACAEQa2VwdKQBHEJhbGFuY2UAASBtaWdyYXRlZKQBHEJhbGFuY2UAAA0PDEhwYWxsZXRfcmNfbWlncmF0b3IYcGFsbGV0FEVycm9yBARUAAFMLFVucmVhY2hhYmxlAAAALE91dE9mV2VpZ2h0AAEAIFhjbUVycm9yAAIEhEZhaWxlZCB0byBzZW5kIFhDTSBtZXNzYWdlIHRvIEFILlxGYWlsZWRUb1dpdGhkcmF3QWNjb3VudAADBNxGYWlsZWQgdG8gd2l0aGRyYXcgYWNjb3VudCBmcm9tIFJDIGZvciBtaWdyYXRpb24gdG8gQUguPFBhc3RCbG9ja051bWJlcgAEBORJbmRpY2F0ZXMgdGhhdCB0aGUgc3BlY2lmaWVkIGJsb2NrIG51bWJlciBpcyBpbiB0aGUgcGFzdC44RXJhRW5kc1Rvb1Nvb24ABQzwSW5kaWNhdGVzIHRoYXQgdGhlcmUgaXMgbm90IGVub3VnaCB0aW1lIGZvciBzdGFraW5nIHRvIGxvY2suACUBU2NoZWR1bGUgdGhlIG1pZ3JhdGlvbiBhdCBsZWFzdCB0d28gc2Vzc2lvbnMgYmVmb3JlIHRoZSBjdXJyZW50IGVyYSBlbmRzLjxCYWxhbmNlT3ZlcmZsb3cABgRwQmFsYW5jZSBhY2NvdW50aW5nIG92ZXJmbG93LkBCYWxhbmNlVW5kZXJmbG93AAcEdEJhbGFuY2UgYWNjb3VudGluZyB1bmRlcmZsb3cuUEludmFsaWRRdWVyeVJlc3BvbnNlAAgEeFRoZSBxdWVyeSByZXNwb25zZSBpcyBpbnZhbGlkLjRRdWVyeU5vdEZvdW5kAAkEcFRoZSB4Y20gcXVlcnkgd2FzIG5vdCBmb3VuZC4wWGNtU2VuZEVycm9yAAoEbEZhaWxlZCB0byBzZW5kIFhDTSBtZXNzYWdlLkBVbnJlYWNoYWJsZVN0YWdlAAsE8FRoZSBtaWdyYXRpb24gc3RhZ2UgaXMgbm90IHJlYWNoYWJsZSBmcm9tIHRoZSBjdXJyZW50IHN0YWdlLkBJbnZhbGlkUGFyYW1ldGVyAAwESEludmFsaWQgcGFyYW1ldGVyLnBBaFVtcFF1ZXVlUHJpb3JpdHlBbHJlYWR5U2V0AA0E3FRoZSBBSCBVTVAgcXVldWUgcHJpb3JpdHkgY29uZmlndXJhdGlvbiBpcyBhbHJlYWR5IHNldC5EQWNjb3VudFJlZmVyZW5jZWQADgQ9AVRoZSBhY2NvdW50IGlzIHJlZmVyZW5jZWQgYnkgc29tZSBvdGhlciBwYWxsZXQuIEl0IG1pZ2h0IGhhdmUgZnJlZXplcyBvciBob2xkcy40QmFkWGNtVmVyc2lvbgAPBGxUaGUgWENNIHZlcnNpb24gaXMgaW52YWxpZC40SW52YWxpZE9yaWdpbgAQBFhUaGUgb3JpZ2luIGlzIGludmFsaWQuWEludmFsaWRTdGFnZVRyYW5zaXRpb24AEQSAVGhlIHN0YWdlIHRyYW5zaXRpb24gaXMgaW52YWxpZC5gVW5zaWduZWRWYWxpZGF0aW9uRmFpbGVkABIEbFVuc2lnbmVkIHZhbGlkYXRpb24gZmFpbGVkLgSAVGhlIGBFcnJvcmAgZW51bSBvZiB0aGlzIHBhbGxldC4RDxAoc3BfcnVudGltZRxnZW5lcmljFGJsb2NrJExhenlCbG9jawgYSGVhZGVyAVwkRXh0cmluc2ljAW0JAAgBGGhlYWRlclwBGEhlYWRlcgABKGV4dHJpbnNpY3MVDwFQVmVjPE9wYXF1ZUV4dHJpbnNpYz4AABUPAAACGQ8AGQ8IKHNwX3J1bnRpbWU8T3BhcXVlRXh0cmluc2ljAAAEABgBHFZlYzx1OD4AAB0PCChzcF9ydW50aW1lWEV4dHJpbnNpY0luY2x1c2lvbk1vZGUAAQg0QWxsRXh0cmluc2ljcwAAADRPbmx5SW5oZXJlbnRzAAEAACEPCBxzcF9jb3JlOE9wYXF1ZU1ldGFkYXRhAAAEABgBHFZlYzx1OD4AACUPBBhPcHRpb24EBFQBIQ8BCBBOb25lAAAAEFNvbWUEACEPAAABAAApDwQYUmVzdWx0CARUAfEHBEUBLQ8BCAhPawQA8QcAAAAADEVycgQALQ8AAAEAAC0PDChzcF9ydW50aW1lUHRyYW5zYWN0aW9uX3ZhbGlkaXR5YFRyYW5zYWN0aW9uVmFsaWRpdHlFcnJvcgABCBxJbnZhbGlkBAAxDwFISW52YWxpZFRyYW5zYWN0aW9uAAAAHFVua25vd24EADUPAUhVbmtub3duVHJhbnNhY3Rpb24AAQAAMQ8MKHNwX3J1bnRpbWVQdHJhbnNhY3Rpb25fdmFsaWRpdHlISW52YWxpZFRyYW5zYWN0aW9uAAE0EENhbGwAAAAcUGF5bWVudAABABhGdXR1cmUAAgAUU3RhbGUAAwAgQmFkUHJvb2YABABEQW5jaWVudEJpcnRoQmxvY2sABQBERXhoYXVzdHNSZXNvdXJjZXMABgAYQ3VzdG9tBAAMAQh1OAAHADBCYWRNYW5kYXRvcnkACABMTWFuZGF0b3J5VmFsaWRhdGlvbgAJACRCYWRTaWduZXIACgBUSW5kZXRlcm1pbmF0ZUltcGxpY2l0AAsANFVua25vd25PcmlnaW4ADAAANQ8MKHNwX3J1bnRpbWVQdHJhbnNhY3Rpb25fdmFsaWRpdHlIVW5rbm93blRyYW5zYWN0aW9uAAEMMENhbm5vdExvb2t1cAAAAExOb1Vuc2lnbmVkVmFsaWRhdG9yAAEAGEN1c3RvbQQADAEIdTgAAgAAOQ8IMHNwX2luaGVyZW50czBJbmhlcmVudERhdGEAAAQBEGRhdGE9DwGUQlRyZWVNYXA8SW5oZXJlbnRJZGVudGlmaWVyLCBWZWM8dTg+PgAAPQ8EIEJUcmVlTWFwCARLASEFBFYBGAAEAEEPAAAAQQ8AAAJFDwBFDwAABAghBRgASQ8IMHNwX2luaGVyZW50c1BDaGVja0luaGVyZW50c1Jlc3VsdAAADAEQb2theZgBEGJvb2wAASxmYXRhbF9lcnJvcpgBEGJvb2wAARhlcnJvcnM5DwEwSW5oZXJlbnREYXRhAABNDwAABAgEBABRDwwoc3BfcnVudGltZVB0cmFuc2FjdGlvbl92YWxpZGl0eURUcmFuc2FjdGlvblNvdXJjZQABDBxJbkJsb2NrAAAAFExvY2FsAAEAIEV4dGVybmFsAAIAAFUPBBhSZXN1bHQIBFQBWQ8ERQEtDwEICE9rBABZDwAAAAAMRXJyBAAtDwAAAQAAWQ8MKHNwX3J1bnRpbWVQdHJhbnNhY3Rpb25fdmFsaWRpdHlAVmFsaWRUcmFuc2FjdGlvbgAAFAEgcHJpb3JpdHkoAUxUcmFuc2FjdGlvblByaW9yaXR5AAEgcmVxdWlyZXM0AUxWZWM8VHJhbnNhY3Rpb25UYWc+AAEgcHJvdmlkZXM0AUxWZWM8VHJhbnNhY3Rpb25UYWc+AAEkbG9uZ2V2aXR5KAFQVHJhbnNhY3Rpb25Mb25nZXZpdHkAASRwcm9wYWdhdGWYARBib29sAABdDwAABAgRDWEPAGEPDExwb2xrYWRvdF9wcmltaXRpdmVzCHY5REdyb3VwUm90YXRpb25JbmZvBAROATgADAFMc2Vzc2lvbl9zdGFydF9ibG9jazgBBE4AAWBncm91cF9yb3RhdGlvbl9mcmVxdWVuY3k4AQROAAEMbm93OAEETgAAZQ8AAAJpDwBpDwxMcG9sa2Fkb3RfcHJpbWl0aXZlcwh2OSRDb3JlU3RhdGUIBEgBPAROATgBDCBPY2N1cGllZAQAbQ8BSE9jY3VwaWVkQ29yZTxILCBOPgAAACRTY2hlZHVsZWQEAHUPATRTY2hlZHVsZWRDb3JlAAEAEEZyZWUAAgAAbQ8MTHBvbGthZG90X3ByaW1pdGl2ZXMIdjkwT2NjdXBpZWRDb3JlCARIATwETgE4ACABUG5leHRfdXBfb25fYXZhaWxhYmxlcQ8BVE9wdGlvbjxTY2hlZHVsZWRDb3JlPgABOG9jY3VwaWVkX3NpbmNlOAEETgABLHRpbWVfb3V0X2F0OAEETgABTG5leHRfdXBfb25fdGltZV9vdXRxDwFUT3B0aW9uPFNjaGVkdWxlZENvcmU+AAEwYXZhaWxhYmlsaXR5BQQBfEJpdFZlYzx1OCwgYml0dmVjOjpvcmRlcjo6THNiMD4AAURncm91cF9yZXNwb25zaWJsZcUIAShHcm91cEluZGV4AAE4Y2FuZGlkYXRlX2hhc2hhBAE0Q2FuZGlkYXRlSGFzaAABUGNhbmRpZGF0ZV9kZXNjcmlwdG9yIQQBYENhbmRpZGF0ZURlc2NyaXB0b3JWMjxIPgAAcQ8EGE9wdGlvbgQEVAF1DwEIEE5vbmUAAAAQU29tZQQAdQ8AAAEAAHUPDExwb2xrYWRvdF9wcmltaXRpdmVzCHY5NFNjaGVkdWxlZENvcmUAAAgBHHBhcmFfaWQVAgEISWQAASBjb2xsYXRvcnkPAUhPcHRpb248Q29sbGF0b3JJZD4AAHkPBBhPcHRpb24EBFQBfQ8BCBBOb25lAAAAEFNvbWUEAH0PAAABAAB9DxBMcG9sa2Fkb3RfcHJpbWl0aXZlcwh2OTBjb2xsYXRvcl9hcHAYUHVibGljAAAEAAgBPHNyMjU1MTk6OlB1YmxpYwAAgQ8MTHBvbGthZG90X3ByaW1pdGl2ZXMIdjlYT2NjdXBpZWRDb3JlQXNzdW1wdGlvbgABDCBJbmNsdWRlZAAAACBUaW1lZE91dAABABBGcmVlAAIAAIUPBBhPcHRpb24EBFQBiQ8BCBBOb25lAAAAEFNvbWUEAIkPAAABAACJDwxMcG9sa2Fkb3RfcHJpbWl0aXZlcwh2OVxQZXJzaXN0ZWRWYWxpZGF0aW9uRGF0YQgESAE8BE4BOAAQASxwYXJlbnRfaGVhZE0EASBIZWFkRGF0YQABTHJlbGF5X3BhcmVudF9udW1iZXI4AQROAAFkcmVsYXlfcGFyZW50X3N0b3JhZ2Vfcm9vdDwBBEgAATBtYXhfcG92X3NpemU4AQx1MzIAAI0PBBhPcHRpb24EBFQBkQ8BCBBOb25lAAAAEFNvbWUEAJEPAAABAACRDwAABAiJDy0EAJUPBBhPcHRpb24EBFQBHQQBCBBOb25lAAAAEFNvbWUEAB0EAAABAACZDwAAAp0PAJ0PDExwb2xrYWRvdF9wcmltaXRpdmVzCHY5OENhbmRpZGF0ZUV2ZW50BARIATwBDDxDYW5kaWRhdGVCYWNrZWQQAL0IAVRDYW5kaWRhdGVSZWNlaXB0VjI8SD4AAE0EASBIZWFkRGF0YQAAwQgBJENvcmVJbmRleAAAxQgBKEdyb3VwSW5kZXgAAABEQ2FuZGlkYXRlSW5jbHVkZWQQAL0IAVRDYW5kaWRhdGVSZWNlaXB0VjI8SD4AAE0EASBIZWFkRGF0YQAAwQgBJENvcmVJbmRleAAAxQgBKEdyb3VwSW5kZXgAAQBEQ2FuZGlkYXRlVGltZWRPdXQMAL0IAVRDYW5kaWRhdGVSZWNlaXB0VjI8SD4AAE0EASBIZWFkRGF0YQAAwQgBJENvcmVJbmRleAACAAChDwQgQlRyZWVNYXAIBEsBFQIEVgGJDQAEAKUPAAAApQ8AAAKpDwCpDwAABAgVAokNAK0PBBhPcHRpb24EBFQB+QwBCBBOb25lAAAAEFNvbWUEAPkMAAABAACxDwQYT3B0aW9uBARUAaENAQgQTm9uZQAAABBTb21lBAChDQAAAQAAtQ8EGE9wdGlvbgQEVAEtBAEIEE5vbmUAAAAQU29tZQQALQQAAAEAALkPAAACvQ8AvQ8AAAQMOGEEsQ0AwQ8EGE9wdGlvbgQEVAHNAwEIEE5vbmUAAAAQU29tZQQAzQMAAAEAAMUPAAACyQ8AyQ8AAAQMOGEEzQ8AzQ8QTHBvbGthZG90X3ByaW1pdGl2ZXMIdjkgc2xhc2hpbmdQTGVnYWN5UGVuZGluZ1NsYXNoZXMAAAgBEGtleXPBDQGUQlRyZWVNYXA8VmFsaWRhdG9ySW5kZXgsIFZhbGlkYXRvcklkPgABEGtpbmTRDwFMU2xhc2hpbmdPZmZlbmNlS2luZAAA0Q8QTHBvbGthZG90X3ByaW1pdGl2ZXMIdjkgc2xhc2hpbmdMU2xhc2hpbmdPZmZlbmNlS2luZAABCChGb3JJbnZhbGlkAAAAMEFnYWluc3RWYWxpZAABAADVDwQYT3B0aW9uBARUAdkPAQgQTm9uZQAAABBTb21lBADZDwAAAQAA2Q8QTHBvbGthZG90X3ByaW1pdGl2ZXMIdjkgc2xhc2hpbmdcT3BhcXVlS2V5T3duZXJzaGlwUHJvb2YAAAQAGAEcVmVjPHU4PgAA3Q8EGE9wdGlvbgQEVAHhDwEIEE5vbmUAAAAQU29tZQQA4Q8AAAEAAOEPEExwb2xrYWRvdF9wcmltaXRpdmVzCHY5NGFzeW5jX2JhY2tpbmcwQmFja2luZ1N0YXRlCARIATwETgE4AAgBLGNvbnN0cmFpbnRz5Q8BkGNyYXRlOjphc3luY19iYWNraW5nOjpDb25zdHJhaW50czxOPgABUHBlbmRpbmdfYXZhaWxhYmlsaXR5BRABnFZlYzxDYW5kaWRhdGVQZW5kaW5nQXZhaWxhYmlsaXR5PEgsIE4+PgAA5Q8QTHBvbGthZG90X3ByaW1pdGl2ZXMIdjk0YXN5bmNfYmFja2luZyxDb25zdHJhaW50cwQETgE4ADwBXG1pbl9yZWxheV9wYXJlbnRfbnVtYmVyOAEETgABMG1heF9wb3Zfc2l6ZTgBDHUzMgABNG1heF9jb2RlX3NpemU4AQx1MzIAAUhtYXhfaGVhZF9kYXRhX3NpemU4AQx1MzIAATR1bXBfcmVtYWluaW5nOAEMdTMyAAFMdW1wX3JlbWFpbmluZ19ieXRlczgBDHUzMgABZG1heF91bXBfbnVtX3Blcl9jYW5kaWRhdGU4AQx1MzIAAVhkbXBfcmVtYWluaW5nX21lc3NhZ2VzzAEYVmVjPE4+AAEwaHJtcF9pbmJvdW5k6Q8BZEluYm91bmRIcm1wTGltaXRhdGlvbnM8Tj4AAURocm1wX2NoYW5uZWxzX291dO0PAaRWZWM8KElkLCBPdXRib3VuZEhybXBDaGFubmVsTGltaXRhdGlvbnMpPgABaG1heF9ocm1wX251bV9wZXJfY2FuZGlkYXRlOAEMdTMyAAE8cmVxdWlyZWRfcGFyZW50TQQBIEhlYWREYXRhAAFQdmFsaWRhdGlvbl9jb2RlX2hhc2gtBAFIVmFsaWRhdGlvbkNvZGVIYXNoAAFMdXBncmFkZV9yZXN0cmljdGlvbvkPAWhPcHRpb248VXBncmFkZVJlc3RyaWN0aW9uPgABWGZ1dHVyZV92YWxpZGF0aW9uX2NvZGX9DwF8T3B0aW9uPChOLCBWYWxpZGF0aW9uQ29kZUhhc2gpPgAA6Q8QTHBvbGthZG90X3ByaW1pdGl2ZXMIdjk0YXN5bmNfYmFja2luZ1hJbmJvdW5kSHJtcExpbWl0YXRpb25zBAROATgABAFAdmFsaWRfd2F0ZXJtYXJrc8wBGFZlYzxOPgAA7Q8AAALxDwDxDwAABAgVAvUPAPUPEExwb2xrYWRvdF9wcmltaXRpdmVzCHY5NGFzeW5jX2JhY2tpbmd4T3V0Ym91bmRIcm1wQ2hhbm5lbExpbWl0YXRpb25zAAAIATxieXRlc19yZW1haW5pbmc4AQx1MzIAAUhtZXNzYWdlc19yZW1haW5pbmc4AQx1MzIAAPkPBBhPcHRpb24EBFQBYQ0BCBBOb25lAAAAEFNvbWUEAGENAAABAAD9DwQYT3B0aW9uBARUAQEQAQgQTm9uZQAAABBTb21lBAABEAAAAQAAARAAAAQIOC0EAAUQAAACCRAACRAQTHBvbGthZG90X3ByaW1pdGl2ZXMIdjk0YXN5bmNfYmFja2luZ3BDYW5kaWRhdGVQZW5kaW5nQXZhaWxhYmlsaXR5CARIATwETgE4ABQBOGNhbmRpZGF0ZV9oYXNoYQQBNENhbmRpZGF0ZUhhc2gAAShkZXNjcmlwdG9yIQQBYENhbmRpZGF0ZURlc2NyaXB0b3JWMjxIPgABLGNvbW1pdG1lbnRzMQQBUENhbmRpZGF0ZUNvbW1pdG1lbnRzAAFMcmVsYXlfcGFyZW50X251bWJlcjgBBE4AATBtYXhfcG92X3NpemU4AQx1MzIAAA0QBCBCVHJlZU1hcAgESwHBCARWAT0NAAQAERAAAAAREAAAAhUQABUQAAAECMEIPQ0AGRAAAAIdBAAdEAQYT3B0aW9uBARUAeUPAQgQTm9uZQAAABBTb21lBADlDwAAAQAAIRAEGE9wdGlvbgQEVAElEAEIEE5vbmUAAAAQU29tZQQAJRAAAAEAACUQCEhzcF9jb25zZW5zdXNfYmVlZnkwVmFsaWRhdG9yU2V0BCxBdXRob3JpdHlJZAEVAQAIASh2YWxpZGF0b3Jz+Q4BQFZlYzxBdXRob3JpdHlJZD4AAQhpZCgBOFZhbGlkYXRvclNldElkAAApEAgoc3BfcnVudGltZSxPcGFxdWVWYWx1ZQAABAAYARxWZWM8dTg+AAAtEAhIc3BfY29uc2Vuc3VzX2JlZWZ5PEZvcmtWb3RpbmdQcm9vZgwYSGVhZGVyAVwISWQBFQE0QW5jZXN0cnlQcm9vZgEpEAAMARB2b3RljQYBuFZvdGVNZXNzYWdlPEhlYWRlcjo6TnVtYmVyLCBJZCwgSWQ6OlNpZ25hdHVyZT4AAThhbmNlc3RyeV9wcm9vZikQATRBbmNlc3RyeVByb29mAAEYaGVhZGVyXAEYSGVhZGVyAAAxEAQYT3B0aW9uBARUASkQAQgQTm9uZQAAABBTb21lBAApEAAAAQAANRAEGFJlc3VsdAgEVAE8BEUBORABCAhPawQAPAAAAAAMRXJyBAA5EAAAAQAAORAIRHNwX21tcl9wcmltaXRpdmVzFEVycm9yAAEoQEludmFsaWROdW1lcmljT3AAAAAQUHVzaAABABxHZXRSb290AAIAGENvbW1pdAADADRHZW5lcmF0ZVByb29mAAQAGFZlcmlmeQAFADBMZWFmTm90Rm91bmQABgBEUGFsbGV0Tm90SW5jbHVkZWQABwBASW52YWxpZExlYWZJbmRleAAIAFRJbnZhbGlkQmVzdEtub3duQmxvY2sACQAAPRAEGFJlc3VsdAgEVAEoBEUBORABCAhPawQAKAAAAAAMRXJyBAA5EAAAAQAAQRAEGFJlc3VsdAgEVAFFEARFATkQAQgIT2sEAEUQAAAAAAxFcnIEADkQAAABAABFEAAABAhJEFEQAEkQAAACTRAATRAIRHNwX21tcl9wcmltaXRpdmVzTEVuY29kYWJsZU9wYXF1ZUxlYWYAAAQAGAEcVmVjPHU4PgAAURAIRHNwX21tcl9wcmltaXRpdmVzJExlYWZQcm9vZgQQSGFzaAE8AAwBMGxlYWZfaW5kaWNlcxUMAThWZWM8TGVhZkluZGV4PgABKGxlYWZfY291bnQoASROb2RlSW5kZXgAARRpdGVtc1ABJFZlYzxIYXNoPgAAVRAEGFJlc3VsdAgEVAGpBgRFATkQAQgIT2sEAKkGAAAAAAxFcnIEADkQAAABAABZEAQYUmVzdWx0CARUARAERQE5EAEICE9rBAAQAAAAAAxFcnIEADkQAAABAABdEAhEc3BfY29uc2Vuc3VzX2JhYmVEQmFiZUNvbmZpZ3VyYXRpb24AABgBNHNsb3RfZHVyYXRpb24oAQx1NjQAATBlcG9jaF9sZW5ndGgoAQx1NjQAAQRjhAEoKHU2NCwgdTY0KQABLGF1dGhvcml0aWVzuQkBnFZlYzwoQXV0aG9yaXR5SWQsIEJhYmVBdXRob3JpdHlXZWlnaHQpPgABKHJhbmRvbW5lc3MIAShSYW5kb21uZXNzAAE0YWxsb3dlZF9zbG90c4gBMEFsbG93ZWRTbG90cwAAYRAIRHNwX2NvbnNlbnN1c19iYWJlFEVwb2NoAAAYASxlcG9jaF9pbmRleCgBDHU2NAABKHN0YXJ0X3Nsb3R4ARBTbG90AAEgZHVyYXRpb24oAQx1NjQAASxhdXRob3JpdGllc7kJAZxWZWM8KEF1dGhvcml0eUlkLCBCYWJlQXV0aG9yaXR5V2VpZ2h0KT4AAShyYW5kb21uZXNzCAEoUmFuZG9tbmVzcwABGGNvbmZpZ90JAVhCYWJlRXBvY2hDb25maWd1cmF0aW9uAABlEAQYT3B0aW9uBARUAWkQAQgQTm9uZQAAABBTb21lBABpEAAAAQAAaRAIRHNwX2NvbnNlbnN1c19iYWJlXE9wYXF1ZUtleU93bmVyc2hpcFByb29mAAAEABgBHFZlYzx1OD4AAG0QBBhPcHRpb24EBFQBcRABCBBOb25lAAAAEFNvbWUEAHEQAAABAABxEAAAAnUQAHUQAAAECBi1CgB5EAw0ZnJhbWVfc3VwcG9ydDh2aWV3X2Z1bmN0aW9uczhWaWV3RnVuY3Rpb25JZAAACAEYcHJlZml4JQUBIFt1ODsgMTZdAAEYc3VmZml4JQUBIFt1ODsgMTZdAAB9EAQYUmVzdWx0CARUARgERQGBEAEICE9rBAAYAAAAAAxFcnIEAIEQAAABAACBEAw0ZnJhbWVfc3VwcG9ydDh2aWV3X2Z1bmN0aW9uc2RWaWV3RnVuY3Rpb25EaXNwYXRjaEVycm9yAAEMOE5vdEltcGxlbWVudGVkAAAAIE5vdEZvdW5kBAB5EAE4Vmlld0Z1bmN0aW9uSWQAAQAUQ29kZWMAAgAAhRAMaHBhbGxldF90cmFuc2FjdGlvbl9wYXltZW50FHR5cGVzTFJ1bnRpbWVEaXNwYXRjaEluZm8IHEJhbGFuY2UBpBhXZWlnaHQBNQIADAEYd2VpZ2h0NQIBGFdlaWdodAABFGNsYXNzzQcBNERpc3BhdGNoQ2xhc3MAASxwYXJ0aWFsX2ZlZaQBHEJhbGFuY2UAAIkQDGhwYWxsZXRfdHJhbnNhY3Rpb25fcGF5bWVudBR0eXBlcyhGZWVEZXRhaWxzBBxCYWxhbmNlAaQACAE0aW5jbHVzaW9uX2ZlZY0QAXRPcHRpb248SW5jbHVzaW9uRmVlPEJhbGFuY2U+PgABDHRpcKQBHEJhbGFuY2UAAI0QBBhPcHRpb24EBFQBkRABCBBOb25lAAAAEFNvbWUEAJEQAAABAACREAxocGFsbGV0X3RyYW5zYWN0aW9uX3BheW1lbnQUdHlwZXMwSW5jbHVzaW9uRmVlBBxCYWxhbmNlAaQADAEgYmFzZV9mZWWkARxCYWxhbmNlAAEcbGVuX2ZlZaQBHEJhbGFuY2UAAUxhZGp1c3RlZF93ZWlnaHRfZmVlpAEcQmFsYW5jZQAAlRAEGFJlc3VsdAgEVAGZEARFAZ0QAQgIT2sEAJkQAAAAAAxFcnIEAJ0QAAABAACZEAAAAmUGAJ0QDEB4Y21fcnVudGltZV9hcGlzEGZlZXMURXJyb3IAARg0VW5pbXBsZW1lbnRlZAAAAGRWZXJzaW9uZWRDb252ZXJzaW9uRmFpbGVkAAEATFdlaWdodE5vdENvbXB1dGFibGUAAgBMVW5oYW5kbGVkWGNtVmVyc2lvbgADADRBc3NldE5vdEZvdW5kAAQAKFVucm91dGFibGUABQAAoRAEGFJlc3VsdAgEVAE1AgRFAZ0QAQgIT2sEADUCAAAAAAxFcnIEAJ0QAAABAAClEAQYUmVzdWx0CARUAaQERQGdEAEICE9rBACkAAAAAAxFcnIEAJ0QAAABAACpEAQYUmVzdWx0CARUATEGBEUBnRABCAhPawQAMQYAAAAADEVycgQAnRAAAAEAAK0QBBhSZXN1bHQIBFQBsRAERQHJEAEICE9rBACxEAAAAAAMRXJyBADJEAAAAQAAsRAMQHhjbV9ydW50aW1lX2FwaXMcZHJ5X3J1bkRDYWxsRHJ5UnVuRWZmZWN0cwQURXZlbnQBwQcAEAFAZXhlY3V0aW9uX3Jlc3VsdF0IAWhEaXNwYXRjaFJlc3VsdFdpdGhQb3N0SW5mbwABOGVtaXR0ZWRfZXZlbnRztRABKFZlYzxFdmVudD4AASRsb2NhbF94Y225EAFgT3B0aW9uPFZlcnNpb25lZFhjbTwoKT4+AAE4Zm9yd2FyZGVkX3hjbXO9EAG8VmVjPChWZXJzaW9uZWRMb2NhdGlvbiwgVmVjPFZlcnNpb25lZFhjbTwoKT4+KT4AALUQAAACwQcAuRAEGE9wdGlvbgQEVAH9BAEIEE5vbmUAAAAQU29tZQQA/QQAAAEAAL0QAAACwRAAwRAAAAQI4QHFEADFEAAAAv0EAMkQDEB4Y21fcnVudGltZV9hcGlzHGRyeV9ydW4URXJyb3IAAQg0VW5pbXBsZW1lbnRlZAAAAGRWZXJzaW9uZWRDb252ZXJzaW9uRmFpbGVkAAEAAM0QBBhSZXN1bHQIBFQB0RAERQHJEAEICE9rBADREAAAAAAMRXJyBADJEAAAAQAA0RAMQHhjbV9ydW50aW1lX2FwaXMcZHJ5X3J1bkBYY21EcnlSdW5FZmZlY3RzBBRFdmVudAHBBwAMAUBleGVjdXRpb25fcmVzdWx0BQkBHE91dGNvbWUAAThlbWl0dGVkX2V2ZW50c7UQAShWZWM8RXZlbnQ+AAE4Zm9yd2FyZGVkX3hjbXO9EAG8VmVjPChWZXJzaW9uZWRMb2NhdGlvbiwgVmVjPFZlcnNpb25lZFhjbTwoKT4+KT4AANUQBBhSZXN1bHQIBFQBBARFAdkQAQgIT2sEAAQAAAAADEVycgQA2RAAAAEAANkQDEB4Y21fcnVudGltZV9hcGlzLGNvbnZlcnNpb25zFEVycm9yAAEILFVuc3VwcG9ydGVkAAAAZFZlcnNpb25lZENvbnZlcnNpb25GYWlsZWQAAQAA3RAEGFJlc3VsdAgEVAEQBEUBNQkBCAhPawQAEAAAAAAMRXJyBAA1CQAAAQAA4RAEGE9wdGlvbgQEVAE1CQEIEE5vbmUAAAAQU29tZQQANQkAAAEAAOUQAAACNQkA6RAIQHBvbGthZG90X3J1bnRpbWUwUnVudGltZUVycm9yAAG4GFN5c3RlbQQAZQkBcGZyYW1lX3N5c3RlbTo6RXJyb3I8UnVudGltZT4AAAAkU2NoZWR1bGVyBACNCQGAcGFsbGV0X3NjaGVkdWxlcjo6RXJyb3I8UnVudGltZT4AAQAgUHJlaW1hZ2UEAK0JAXxwYWxsZXRfcHJlaW1hZ2U6OkVycm9yPFJ1bnRpbWU+AAoAEEJhYmUEAO0JAWxwYWxsZXRfYmFiZTo6RXJyb3I8UnVudGltZT4AAgAcSW5kaWNlcwQA9QkBeHBhbGxldF9pbmRpY2VzOjpFcnJvcjxSdW50aW1lPgAEACBCYWxhbmNlcwQANQoBfHBhbGxldF9iYWxhbmNlczo6RXJyb3I8UnVudGltZT4ABQAcU3Rha2luZwQAjQoBeHBhbGxldF9zdGFraW5nOjpFcnJvcjxSdW50aW1lPgAHABxTZXNzaW9uBAC5CgF4cGFsbGV0X3Nlc3Npb246OkVycm9yPFJ1bnRpbWU+AAkAHEdyYW5kcGEEAMkKAXhwYWxsZXRfZ3JhbmRwYTo6RXJyb3I8UnVudGltZT4ACwAgVHJlYXN1cnkEAO0KAXxwYWxsZXRfdHJlYXN1cnk6OkVycm9yPFJ1bnRpbWU+ABMAQENvbnZpY3Rpb25Wb3RpbmcEAB0LAaBwYWxsZXRfY29udmljdGlvbl92b3Rpbmc6OkVycm9yPFJ1bnRpbWU+ABQAJFJlZmVyZW5kYQQAZQsBgHBhbGxldF9yZWZlcmVuZGE6OkVycm9yPFJ1bnRpbWU+ABUAJFdoaXRlbGlzdAQAaQsBgHBhbGxldF93aGl0ZWxpc3Q6OkVycm9yPFJ1bnRpbWU+ABcAGENsYWltcwQAbQsBWGNsYWltczo6RXJyb3I8UnVudGltZT4AGAAcVmVzdGluZwQAfQsBeHBhbGxldF92ZXN0aW5nOjpFcnJvcjxSdW50aW1lPgAZABxVdGlsaXR5BACBCwF4cGFsbGV0X3V0aWxpdHk6OkVycm9yPFJ1bnRpbWU+ABoAFFByb3h5BAClCwFwcGFsbGV0X3Byb3h5OjpFcnJvcjxSdW50aW1lPgAdACBNdWx0aXNpZwQAsQsBfHBhbGxldF9tdWx0aXNpZzo6RXJyb3I8UnVudGltZT4AHgAgQm91bnRpZXMEAMELAXxwYWxsZXRfYm91bnRpZXM6OkVycm9yPFJ1bnRpbWU+ACIANENoaWxkQm91bnRpZXMEAM0LAZRwYWxsZXRfY2hpbGRfYm91bnRpZXM6OkVycm9yPFJ1bnRpbWU+ACYAaEVsZWN0aW9uUHJvdmlkZXJNdWx0aVBoYXNlBAAJDAHQcGFsbGV0X2VsZWN0aW9uX3Byb3ZpZGVyX211bHRpX3BoYXNlOjpFcnJvcjxSdW50aW1lPgAkACRWb3Rlckxpc3QEABkMAfRwYWxsZXRfYmFnc19saXN0OjpFcnJvcjxSdW50aW1lLCBwYWxsZXRfYmFnc19saXN0OjpJbnN0YW5jZTE+ACUAPE5vbWluYXRpb25Qb29scwQAYQwBnHBhbGxldF9ub21pbmF0aW9uX3Bvb2xzOjpFcnJvcjxSdW50aW1lPgAnACxGYXN0VW5zdGFrZQQAdQwBjHBhbGxldF9mYXN0X3Vuc3Rha2U6OkVycm9yPFJ1bnRpbWU+ACgAQERlbGVnYXRlZFN0YWtpbmcEAIEMAaBwYWxsZXRfZGVsZWdhdGVkX3N0YWtpbmc6OkVycm9yPFJ1bnRpbWU+ACkAPFN0YWtpbmdBaENsaWVudAQApQwBuHBhbGxldF9zdGFraW5nX2FzeW5jX2FoX2NsaWVudDo6RXJyb3I8UnVudGltZT4AKgA0Q29uZmlndXJhdGlvbgQAtQwBoHBhcmFjaGFpbnNfY29uZmlndXJhdGlvbjo6RXJyb3I8UnVudGltZT4AMwA0UGFyYUluY2x1c2lvbgQA9QwBkHBhcmFjaGFpbnNfaW5jbHVzaW9uOjpFcnJvcjxSdW50aW1lPgA1ADBQYXJhSW5oZXJlbnQEAA0NAaRwYXJhY2hhaW5zX3BhcmFzX2luaGVyZW50OjpFcnJvcjxSdW50aW1lPgA2ABRQYXJhcwQAaQ0BgHBhcmFjaGFpbnNfcGFyYXM6OkVycm9yPFJ1bnRpbWU+ADgAEEhybXAEAJkNAXxwYXJhY2hhaW5zX2hybXA6OkVycm9yPFJ1bnRpbWU+ADwANFBhcmFzRGlzcHV0ZXMEALkNAYxwYXJhY2hhaW5zX2Rpc3B1dGVzOjpFcnJvcjxSdW50aW1lPgA+ADRQYXJhc1NsYXNoaW5nBADNDQGMcGFyYWNoYWluc19zbGFzaGluZzo6RXJyb3I8UnVudGltZT4APwAgT25EZW1hbmQEAP0NAZBwYXJhY2hhaW5zX29uX2RlbWFuZDo6RXJyb3I8UnVudGltZT4AQABoQ29yZXRpbWVBc3NpZ25tZW50UHJvdmlkZXIEACkOAbBwYXJhY2hhaW5zX2Fzc2lnbmVyX2NvcmV0aW1lOjpFcnJvcjxSdW50aW1lPgBBACRSZWdpc3RyYXIEADUOAXxwYXJhc19yZWdpc3RyYXI6OkVycm9yPFJ1bnRpbWU+AEYAFFNsb3RzBAA9DgFUc2xvdHM6OkVycm9yPFJ1bnRpbWU+AEcAIEF1Y3Rpb25zBABRDgFgYXVjdGlvbnM6OkVycm9yPFJ1bnRpbWU+AEgAJENyb3dkbG9hbgQAXQ4BZGNyb3dkbG9hbjo6RXJyb3I8UnVudGltZT4ASQAgQ29yZXRpbWUEAGEOAWBjb3JldGltZTo6RXJyb3I8UnVudGltZT4ASgBIU3RhdGVUcmllTWlncmF0aW9uBAD9CAGscGFsbGV0X3N0YXRlX3RyaWVfbWlncmF0aW9uOjpFcnJvcjxSdW50aW1lPgBiACRYY21QYWxsZXQEAM0OAWhwYWxsZXRfeGNtOjpFcnJvcjxSdW50aW1lPgBjADBNZXNzYWdlUXVldWUEAO0OAZBwYWxsZXRfbWVzc2FnZV9xdWV1ZTo6RXJyb3I8UnVudGltZT4AZAAkQXNzZXRSYXRlBADxDgGEcGFsbGV0X2Fzc2V0X3JhdGU6OkVycm9yPFJ1bnRpbWU+AGUAFEJlZWZ5BAD9DgFwcGFsbGV0X2JlZWZ5OjpFcnJvcjxSdW50aW1lPgDIAChSY01pZ3JhdG9yBAANDwGIcGFsbGV0X3JjX21pZ3JhdG9yOjpFcnJvcjxSdW50aW1lPgD/AAD0GFN5c3RlbQEYU3lzdGVtTBxBY2NvdW50AQEEAgSpB0EBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAE6CBUaGUgZnVsbCBhY2NvdW50IGluZm9ybWF0aW9uIGZvciBhIHBhcnRpY3VsYXIgYWNjb3VudCBJRC4AOEV4dHJpbnNpY0NvdW50AAA4BAAEuCBUb3RhbCBleHRyaW5zaWNzIGNvdW50IGZvciB0aGUgY3VycmVudCBibG9jay4AQEluaGVyZW50c0FwcGxpZWQBAJgEAASkIFdoZXRoZXIgYWxsIGluaGVyZW50cyBoYXZlIGJlZW4gYXBwbGllZC4ALEJsb2NrV2VpZ2h0AQC1BxgAAAAAAAAEiCBUaGUgY3VycmVudCB3ZWlnaHQgZm9yIHRoZSBibG9jay4AQEFsbEV4dHJpbnNpY3NMZW4AADgEAARBASBUb3RhbCBsZW5ndGggKGluIGJ5dGVzKSBmb3IgYWxsIGV4dHJpbnNpY3MgcHV0IHRvZ2V0aGVyLCBmb3IgdGhlIGN1cnJlbnQgYmxvY2suACRCbG9ja0hhc2gBAQQFODyAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEmCBNYXAgb2YgYmxvY2sgbnVtYmVycyB0byBibG9jayBoYXNoZXMuADRFeHRyaW5zaWNEYXRhAQEEBTgYBAAEPQEgRXh0cmluc2ljcyBkYXRhIGZvciB0aGUgY3VycmVudCBibG9jayAobWFwcyBhbiBleHRyaW5zaWMncyBpbmRleCB0byBpdHMgZGF0YSkuABhOdW1iZXIBADgQAAAAAAQJASBUaGUgY3VycmVudCBibG9jayBudW1iZXIgYmVpbmcgcHJvY2Vzc2VkLiBTZXQgYnkgYGV4ZWN1dGVfYmxvY2tgLgAoUGFyZW50SGFzaAEAPIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARwIEhhc2ggb2YgdGhlIHByZXZpb3VzIGJsb2NrLgAYRGlnZXN0AQBkBAAE8CBEaWdlc3Qgb2YgdGhlIGN1cnJlbnQgYmxvY2ssIGFsc28gcGFydCBvZiB0aGUgYmxvY2sgaGVhZGVyLgAYRXZlbnRzAQC5BwQAHKAgRXZlbnRzIGRlcG9zaXRlZCBmb3IgdGhlIGN1cnJlbnQgYmxvY2suAB0BIE5PVEU6IFRoZSBpdGVtIGlzIHVuYm91bmQgYW5kIHNob3VsZCB0aGVyZWZvcmUgbmV2ZXIgYmUgcmVhZCBvbiBjaGFpbi7QIEl0IGNvdWxkIG90aGVyd2lzZSBpbmZsYXRlIHRoZSBQb1Ygc2l6ZSBvZiBhIGJsb2NrLgAtASBFdmVudHMgaGF2ZSBhIGxhcmdlIGluLW1lbW9yeSBzaXplLiBCb3ggdGhlIGV2ZW50cyB0byBub3QgZ28gb3V0LW9mLW1lbW9yefwganVzdCBpbiBjYXNlIHNvbWVvbmUgc3RpbGwgcmVhZHMgdGhlbSBmcm9tIHdpdGhpbiB0aGUgcnVudGltZS4AKEV2ZW50Q291bnQBADgQAAAAAAS4IFRoZSBudW1iZXIgb2YgZXZlbnRzIGluIHRoZSBgRXZlbnRzPFQ+YCBsaXN0LgAsRXZlbnRUb3BpY3MBAQQCPCkJBAAoJQEgTWFwcGluZyBiZXR3ZWVuIGEgdG9waWMgKHJlcHJlc2VudGVkIGJ5IFQ6Okhhc2gpIGFuZCBhIHZlY3RvciBvZiBpbmRleGVzlCBvZiBldmVudHMgaW4gdGhlIGA8RXZlbnRzPFQ+PmAgbGlzdC4AUQEgQWxsIHRvcGljIHZlY3RvcnMgaGF2ZSBkZXRlcm1pbmlzdGljIHN0b3JhZ2UgbG9jYXRpb25zIGRlcGVuZGluZyBvbiB0aGUgdG9waWMuIFRoaXNFASBhbGxvd3MgbGlnaHQtY2xpZW50cyB0byBsZXZlcmFnZSB0aGUgY2hhbmdlcyB0cmllIHN0b3JhZ2UgdHJhY2tpbmcgbWVjaGFuaXNtIGFuZOQgaW4gY2FzZSBvZiBjaGFuZ2VzIGZldGNoIHRoZSBsaXN0IG9mIGV2ZW50cyBvZiBpbnRlcmVzdC4AWQEgVGhlIHZhbHVlIGhhcyB0aGUgdHlwZSBgKEJsb2NrTnVtYmVyRm9yPFQ+LCBFdmVudEluZGV4KWAgYmVjYXVzZSBpZiB3ZSB1c2VkIG9ubHkganVzdE0BIHRoZSBgRXZlbnRJbmRleGAgdGhlbiBpbiBjYXNlIGlmIHRoZSB0b3BpYyBoYXMgdGhlIHNhbWUgY29udGVudHMgb24gdGhlIG5leHQgYmxvY2sBASBubyBub3RpZmljYXRpb24gd2lsbCBiZSB0cmlnZ2VyZWQgdGh1cyB0aGUgZXZlbnQgbWlnaHQgYmUgbG9zdC4ASExhc3RSdW50aW1lVXBncmFkZQAALQkEAARVASBTdG9yZXMgdGhlIGBzcGVjX3ZlcnNpb25gIGFuZCBgc3BlY19uYW1lYCBvZiB3aGVuIHRoZSBsYXN0IHJ1bnRpbWUgdXBncmFkZSBoYXBwZW5lZC4AVFVwZ3JhZGVkVG9VMzJSZWZDb3VudAEAmAQABE0BIFRydWUgaWYgd2UgaGF2ZSB1cGdyYWRlZCBzbyB0aGF0IGB0eXBlIFJlZkNvdW50YCBpcyBgdTMyYC4gRmFsc2UgKGRlZmF1bHQpIGlmIG5vdC4AYFVwZ3JhZGVkVG9UcmlwbGVSZWZDb3VudAEAmAQACF0BIFRydWUgaWYgd2UgaGF2ZSB1cGdyYWRlZCBzbyB0aGF0IEFjY291bnRJbmZvIGNvbnRhaW5zIHRocmVlIHR5cGVzIG9mIGBSZWZDb3VudGAuIEZhbHNlSCAoZGVmYXVsdCkgaWYgbm90LgA4RXhlY3V0aW9uUGhhc2UAACUJBAAEiCBUaGUgZXhlY3V0aW9uIHBoYXNlIG9mIHRoZSBibG9jay4AREF1dGhvcml6ZWRVcGdyYWRlAAA5CQQABLggYFNvbWVgIGlmIGEgY29kZSB1cGdyYWRlIGhhcyBiZWVuIGF1dGhvcml6ZWQuAGBFeHRyaW5zaWNXZWlnaHRSZWNsYWltZWQBADUCCAAAHKAgVGhlIHdlaWdodCByZWNsYWltZWQgZm9yIHRoZSBleHRyaW5zaWMuACEBIFRoaXMgaW5mb3JtYXRpb24gaXMgYXZhaWxhYmxlIHVudGlsIHRoZSBlbmQgb2YgdGhlIGV4dHJpbnNpYyBleGVjdXRpb24uIQEgTW9yZSBwcmVjaXNlbHkgdGhpcyBpbmZvcm1hdGlvbiBpcyByZW1vdmVkIGluIGBub3RlX2FwcGxpZWRfZXh0cmluc2ljYC4AcQEgTG9naWMgZG9pbmcgc29tZSBwb3N0IGRpc3BhdGNoIHdlaWdodCByZWR1Y3Rpb24gbXVzdCB1cGRhdGUgdGhpcyBzdG9yYWdlIHRvIGF2b2lkIGR1cGxpY2F0ZSwgcmVkdWN0aW9uLgABJAABxQcAGDBCbG9ja1dlaWdodHM9CQECB7C96TYDAAsAIEqp0QET//////////8iLQ0eAAELuIRcj1gBE6NwPQrXo3C9AQsAmPc+XQET/////////78BAAAiLQ0eAAELuAyv+cwBE6NwPQrXo3D9AQsAIEqp0QET//////////8BBwCIUmp0EwAAAAAAAABAIi0NHgAAAAAE0CBCbG9jayAmIGV4dHJpbnNpY3Mgd2VpZ2h0czogYmFzZSB2YWx1ZXMgYW5kIGxpbWl0cy4ALEJsb2NrTGVuZ3RoSQkwAAA8AAAAUAAAAFAABKggVGhlIG1heGltdW0gbGVuZ3RoIG9mIGEgYmxvY2sgKGluIGJ5dGVzKS4AOEJsb2NrSGFzaENvdW50OBAAEAAABFUBIE1heGltdW0gbnVtYmVyIG9mIGJsb2NrIG51bWJlciB0byBibG9jayBoYXNoIG1hcHBpbmdzIHRvIGtlZXAgKG9sZGVzdCBwcnVuZWQgZmlyc3QpLgAgRGJXZWlnaHRRCUA4yjgBAAAAAJiq+QQAAAAABAkBIFRoZSB3ZWlnaHQgb2YgcnVudGltZSBkYXRhYmFzZSBvcGVyYXRpb25zIHRoZSBydW50aW1lIGNhbiBpbnZva2UuABxWZXJzaW9uVQn9BCBwb2xrYWRvdDxwYXJpdHktcG9sa2Fkb3QAAAAAaYgeAAAAAABc32rLaJkHYJsFAAAAN+OX/HyR9eQCAAAAQP461AH4lZoGAAAAF6a8DQBirrMBAAAAGO9Yo7Z7p3ABAAAA0ryYl+7QjxUDAAAA94sni+U/RUwCAAAArywCl6I+bT0NAAAASeqvG1SKDLAGAAAAkdXfGLDSz1gDAAAAKl6SRlU5nmABAAAA7ZnFrLJe7fUDAAAAy8ol458UI4cCAAAAaHrUStN/A8IBAAAAqzwFcikf64sBAAAAzNneY5bImcoBAAAAvJ2JkE9bkj8BAAAAN8i7E1CpoqgEAAAA8/8U1atScFkDAAAAb/Uu6Fjmxb0CAAAAkbHIsWMo65ICAAAAn/tQWqc41pwBAAAA+8V3uddH79YBAAAAGgAAAAEEhCBHZXQgdGhlIGNoYWluJ3MgaW4tY29kZSB2ZXJzaW9uLgAoU1M1OFByZWZpePUBCAAAFKggVGhlIGRlc2lnbmF0ZWQgU1M1OCBwcmVmaXggb2YgdGhpcyBjaGFpbi4AOQEgVGhpcyByZXBsYWNlcyB0aGUgInNzNThGb3JtYXQiIHByb3BlcnR5IGRlY2xhcmVkIGluIHRoZSBjaGFpbiBzcGVjLiBSZWFzb24gaXMxASB0aGF0IHRoZSBydW50aW1lIHNob3VsZCBrbm93IGFib3V0IHRoZSBwcmVmaXggaW4gb3JkZXIgdG8gbWFrZSB1c2Ugb2YgaXQgYXNwIGFuIGlkZW50aWZpZXIgb2YgdGhlIGNoYWluLgABZQkAHCxSdW50aW1lQ2FsbCAEjCBUaGUgYWdncmVnYXRlZCBgUnVudGltZUNhbGxgIHR5cGUuFE5vbmNlOARJASBUaGlzIHN0b3JlcyB0aGUgbnVtYmVyIG9mIHByZXZpb3VzIHRyYW5zYWN0aW9ucyBhc3NvY2lhdGVkIHdpdGggYSBzZW5kZXIgYWNjb3VudC4QSGFzaDwEmCBUaGUgb3V0cHV0IG9mIHRoZSBgSGFzaGluZ2AgZnVuY3Rpb24uHEhhc2hpbmchAgQhASBUaGUgaGFzaGluZyBzeXN0ZW0gKGFsZ29yaXRobSkgYmVpbmcgdXNlZCBpbiB0aGUgcnVudGltZSAoZS5nLiBCbGFrZTIpLiRBY2NvdW50SWQEBMggVGhlIHVzZXIgYWNjb3VudCBpZGVudGlmaWVyIHR5cGUgZm9yIHRoZSBydW50aW1lLhRCbG9ja2kJCGEBIFRoZSBCbG9jayB0eXBlIHVzZWQgYnkgdGhlIHJ1bnRpbWUuIFRoaXMgaXMgdXNlZCBieSBgY29uc3RydWN0X3J1bnRpbWVgIHRvIHJldHJpZXZlIHRoZcwgZXh0cmluc2ljcyBvciBvdGhlciBibG9jayBzcGVjaWZpYyBkYXRhIGFzIG5lZWRlZC4sQWNjb3VudERhdGGtBwhhASBEYXRhIHRvIGJlIGFzc29jaWF0ZWQgd2l0aCBhbiBhY2NvdW50IChvdGhlciB0aGFuIG5vbmNlL3RyYW5zYWN0aW9uIGNvdW50ZXIsIHdoaWNoIHRoaXNkIHBhbGxldCBkb2VzIHJlZ2FyZGxlc3MpLgAAAAAkU2NoZWR1bGVyASRTY2hlZHVsZXIQPEluY29tcGxldGVTaW5jZQAAOAQABPQgQmxvY2sgbnVtYmVyIGF0IHdoaWNoIHRoZSBhZ2VuZGEgYmVnYW4gaW5jb21wbGV0ZSBleGVjdXRpb24uABhBZ2VuZGEBAQQFOHkJBAAETQEgSXRlbXMgdG8gYmUgZXhlY3V0ZWQsIGluZGV4ZWQgYnkgdGhlIGJsb2NrIG51bWJlciB0aGF0IHRoZXkgc2hvdWxkIGJlIGV4ZWN1dGVkIG9uLgAcUmV0cmllcwABBAJIiQkEAAQhASBSZXRyeSBjb25maWd1cmF0aW9ucyBmb3IgaXRlbXMgdG8gYmUgZXhlY3V0ZWQsIGluZGV4ZWQgYnkgdGFzayBhZGRyZXNzLgAYTG9va3VwAAEEBQhIBAAQ+CBMb29rdXAgZnJvbSBhIG5hbWUgdG8gdGhlIGJsb2NrIG51bWJlciBhbmQgaW5kZXggb2YgdGhlIHRhc2suAFkBIEZvciB2MyAtPiB2NCB0aGUgcHJldmlvdXNseSB1bmJvdW5kZWQgaWRlbnRpdGllcyBhcmUgQmxha2UyLTI1NiBoYXNoZWQgdG8gZm9ybSB0aGUgdjQwIGlkZW50aXRpZXMuAAFAAAHtBwAINE1heGltdW1XZWlnaHQ1AkALAIBuh3QBE8zMzMzMzMzMBCkBIFRoZSBtYXhpbXVtIHdlaWdodCB0aGF0IG1heSBiZSBzY2hlZHVsZWQgcGVyIGJsb2NrIGZvciBhbnkgZGlzcGF0Y2hhYmxlcy4AUE1heFNjaGVkdWxlZFBlckJsb2NrOBAyAAAAFB0BIFRoZSBtYXhpbXVtIG51bWJlciBvZiBzY2hlZHVsZWQgY2FsbHMgaW4gdGhlIHF1ZXVlIGZvciBhIHNpbmdsZSBibG9jay4AGCBOT1RFOlEBICsgRGVwZW5kZW50IHBhbGxldHMnIGJlbmNobWFya3MgbWlnaHQgcmVxdWlyZSBhIGhpZ2hlciBsaW1pdCBmb3IgdGhlIHNldHRpbmcuIFNldCBhxCBoaWdoZXIgbGltaXQgdW5kZXIgYHJ1bnRpbWUtYmVuY2htYXJrc2AgZmVhdHVyZS4AAY0JAAQsUnVudGltZUNhbGwgBGggVGhlIGFnZ3JlZ2F0ZWQgY2FsbCB0eXBlLgABAAAgUHJlaW1hZ2UBIFByZWltYWdlDCRTdGF0dXNGb3IAAQQGPJEJBAAEkCBUaGUgcmVxdWVzdCBzdGF0dXMgb2YgYSBnaXZlbiBoYXNoLgJAUmVxdWVzdFN0YXR1c0ZvcgBAUmVxdWVzdFN0YXR1c0ZvcgABBAY8mQkEAASQIFRoZSByZXF1ZXN0IHN0YXR1cyBvZiBhIGdpdmVuIGhhc2guACxQcmVpbWFnZUZvcgABBAbdBqkJBAAAAAFMAAH1BwAAAa0JAAAACgAAEEJhYmUBEEJhYmVEKEVwb2NoSW5kZXgBACggAAAAAAAAAAAEVCBDdXJyZW50IGVwb2NoIGluZGV4LgAsQXV0aG9yaXRpZXMBALEJBAAEbCBDdXJyZW50IGVwb2NoIGF1dGhvcml0aWVzLgAsR2VuZXNpc1Nsb3QBAHggAAAAAAAAAAAI+CBUaGUgc2xvdCBhdCB3aGljaCB0aGUgZmlyc3QgZXBvY2ggYWN0dWFsbHkgc3RhcnRlZC4gVGhpcyBpcyAwkCB1bnRpbCB0aGUgZmlyc3QgYmxvY2sgb2YgdGhlIGNoYWluLgAsQ3VycmVudFNsb3QBAHggAAAAAAAAAAAEVCBDdXJyZW50IHNsb3QgbnVtYmVyLgAoUmFuZG9tbmVzcwEACIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACi4IFRoZSBlcG9jaCByYW5kb21uZXNzIGZvciB0aGUgKmN1cnJlbnQqIGVwb2NoLgAsICMgU2VjdXJpdHkABQEgVGhpcyBNVVNUIE5PVCBiZSB1c2VkIGZvciBnYW1ibGluZywgYXMgaXQgY2FuIGJlIGluZmx1ZW5jZWQgYnkgYfggbWFsaWNpb3VzIHZhbGlkYXRvciBpbiB0aGUgc2hvcnQgdGVybS4gSXQgTUFZIGJlIHVzZWQgaW4gbWFueRUBIGNyeXB0b2dyYXBoaWMgcHJvdG9jb2xzLCBob3dldmVyLCBzbyBsb25nIGFzIG9uZSByZW1lbWJlcnMgdGhhdCB0aGlzFQEgKGxpa2UgZXZlcnl0aGluZyBlbHNlIG9uLWNoYWluKSBpdCBpcyBwdWJsaWMuIEZvciBleGFtcGxlLCBpdCBjYW4gYmUFASB1c2VkIHdoZXJlIGEgbnVtYmVyIGlzIG5lZWRlZCB0aGF0IGNhbm5vdCBoYXZlIGJlZW4gY2hvc2VuIGJ5IGFuDQEgYWR2ZXJzYXJ5LCBmb3IgcHVycG9zZXMgc3VjaCBhcyBwdWJsaWMtY29pbiB6ZXJvLWtub3dsZWRnZSBwcm9vZnMuAGBQZW5kaW5nRXBvY2hDb25maWdDaGFuZ2UAAIAEAARhASBQZW5kaW5nIGVwb2NoIGNvbmZpZ3VyYXRpb24gY2hhbmdlIHRoYXQgd2lsbCBiZSBhcHBsaWVkIHdoZW4gdGhlIG5leHQgZXBvY2ggaXMgZW5hY3RlZC4AOE5leHRSYW5kb21uZXNzAQAIgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABFwgTmV4dCBlcG9jaCByYW5kb21uZXNzLgA8TmV4dEF1dGhvcml0aWVzAQCxCQQABGAgTmV4dCBlcG9jaCBhdXRob3JpdGllcy4AMFNlZ21lbnRJbmRleAEAOBAAAAAAJHwgUmFuZG9tbmVzcyB1bmRlciBjb25zdHJ1Y3Rpb24uAPggV2UgbWFrZSBhIHRyYWRlLW9mZiBiZXR3ZWVuIHN0b3JhZ2UgYWNjZXNzZXMgYW5kIGxpc3QgbGVuZ3RoLgEBIFdlIHN0b3JlIHRoZSB1bmRlci1jb25zdHJ1Y3Rpb24gcmFuZG9tbmVzcyBpbiBzZWdtZW50cyBvZiB1cCB0b5QgYFVOREVSX0NPTlNUUlVDVElPTl9TRUdNRU5UX0xFTkdUSGAuAOwgT25jZSBhIHNlZ21lbnQgcmVhY2hlcyB0aGlzIGxlbmd0aCwgd2UgYmVnaW4gdGhlIG5leHQgb25lLgkBIFdlIHJlc2V0IGFsbCBzZWdtZW50cyBhbmQgcmV0dXJuIHRvIGAwYCBhdCB0aGUgYmVnaW5uaW5nIG9mIGV2ZXJ5HCBlcG9jaC4ARFVuZGVyQ29uc3RydWN0aW9uAQEEBTi9CQQABBUBIFRXT1gtTk9URTogYFNlZ21lbnRJbmRleGAgaXMgYW4gaW5jcmVhc2luZyBpbnRlZ2VyLCBzbyB0aGlzIGlzIG9rYXkuACxJbml0aWFsaXplZAAAxQkEAAgBASBUZW1wb3JhcnkgdmFsdWUgKGNsZWFyZWQgYXQgYmxvY2sgZmluYWxpemF0aW9uKSB3aGljaCBpcyBgU29tZWAdASBpZiBwZXItYmxvY2sgaW5pdGlhbGl6YXRpb24gaGFzIGFscmVhZHkgYmVlbiBjYWxsZWQgZm9yIGN1cnJlbnQgYmxvY2suAExBdXRob3JWcmZSYW5kb21uZXNzAQANBwQAEBUBIFRoaXMgZmllbGQgc2hvdWxkIGFsd2F5cyBiZSBwb3B1bGF0ZWQgZHVyaW5nIGJsb2NrIHByb2Nlc3NpbmcgdW5sZXNzGQEgc2Vjb25kYXJ5IHBsYWluIHNsb3RzIGFyZSBlbmFibGVkICh3aGljaCBkb24ndCBjb250YWluIGEgVlJGIG91dHB1dCkuAEkBIEl0IGlzIHNldCBpbiBgb25fZmluYWxpemVgLCBiZWZvcmUgaXQgd2lsbCBjb250YWluIHRoZSB2YWx1ZSBmcm9tIHRoZSBsYXN0IGJsb2NrLgAoRXBvY2hTdGFydAEASCAAAAAAAAAAABRdASBUaGUgYmxvY2sgbnVtYmVycyB3aGVuIHRoZSBsYXN0IGFuZCBjdXJyZW50IGVwb2NoIGhhdmUgc3RhcnRlZCwgcmVzcGVjdGl2ZWx5IGBOLTFgIGFuZBQgYE5gLkkBIE5PVEU6IFdlIHRyYWNrIHRoaXMgaXMgaW4gb3JkZXIgdG8gYW5ub3RhdGUgdGhlIGJsb2NrIG51bWJlciB3aGVuIGEgZ2l2ZW4gcG9vbCBvZlkBIGVudHJvcHkgd2FzIGZpeGVkIChpLmUuIGl0IHdhcyBrbm93biB0byBjaGFpbiBvYnNlcnZlcnMpLiBTaW5jZSBlcG9jaHMgYXJlIGRlZmluZWQgaW5ZASBzbG90cywgd2hpY2ggbWF5IGJlIHNraXBwZWQsIHRoZSBibG9jayBudW1iZXJzIG1heSBub3QgbGluZSB1cCB3aXRoIHRoZSBzbG90IG51bWJlcnMuACBMYXRlbmVzcwEAOBAAAAAAFNggSG93IGxhdGUgdGhlIGN1cnJlbnQgYmxvY2sgaXMgY29tcGFyZWQgdG8gaXRzIHBhcmVudC4AFQEgVGhpcyBlbnRyeSBpcyBwb3B1bGF0ZWQgYXMgcGFydCBvZiBibG9jayBleGVjdXRpb24gYW5kIGlzIGNsZWFuZWQgdXARASBvbiBibG9jayBmaW5hbGl6YXRpb24uIFF1ZXJ5aW5nIHRoaXMgc3RvcmFnZSBlbnRyeSBvdXRzaWRlIG9mIGJsb2NrsCBleGVjdXRpb24gY29udGV4dCBzaG91bGQgYWx3YXlzIHlpZWxkIHplcm8uACxFcG9jaENvbmZpZwAA3QkEAAhhASBUaGUgY29uZmlndXJhdGlvbiBmb3IgdGhlIGN1cnJlbnQgZXBvY2guIFNob3VsZCBuZXZlciBiZSBgTm9uZWAgYXMgaXQgaXMgaW5pdGlhbGl6ZWQgaW4kIGdlbmVzaXMuADxOZXh0RXBvY2hDb25maWcAAN0JBAAILQEgVGhlIGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBuZXh0IGVwb2NoLCBgTm9uZWAgaWYgdGhlIGNvbmZpZyB3aWxsIG5vdCBjaGFuZ2XoICh5b3UgY2FuIGZhbGxiYWNrIHRvIGBFcG9jaENvbmZpZ2AgaW5zdGVhZCBpbiB0aGF0IGNhc2UpLgA0U2tpcHBlZEVwb2NocwEA4QkEACApASBBIGxpc3Qgb2YgdGhlIGxhc3QgMTAwIHNraXBwZWQgZXBvY2hzIGFuZCB0aGUgY29ycmVzcG9uZGluZyBzZXNzaW9uIGluZGV4cCB3aGVuIHRoZSBlcG9jaCB3YXMgc2tpcHBlZC4AMQEgVGhpcyBpcyBvbmx5IHVzZWQgZm9yIHZhbGlkYXRpbmcgZXF1aXZvY2F0aW9uIHByb29mcy4gQW4gZXF1aXZvY2F0aW9uIHByb29mNQEgbXVzdCBjb250YWlucyBhIGtleS1vd25lcnNoaXAgcHJvb2YgZm9yIGEgZ2l2ZW4gc2Vzc2lvbiwgdGhlcmVmb3JlIHdlIG5lZWQgYTkBIHdheSB0byB0aWUgdG9nZXRoZXIgc2Vzc2lvbnMgYW5kIGVwb2NoIGluZGljZXMsIGkuZS4gd2UgbmVlZCB0byB2YWxpZGF0ZSB0aGF0KQEgYSB2YWxpZGF0b3Igd2FzIHRoZSBvd25lciBvZiBhIGdpdmVuIGtleSBvbiBhIGdpdmVuIHNlc3Npb24sIGFuZCB3aGF0IHRoZbAgYWN0aXZlIGVwb2NoIGluZGV4IHdhcyBkdXJpbmcgdGhhdCBzZXNzaW9uLgABVAAAEDRFcG9jaER1cmF0aW9uKCBgCQAAAAAAAAzsIFRoZSBhbW91bnQgb2YgdGltZSwgaW4gc2xvdHMsIHRoYXQgZWFjaCBlcG9jaCBzaG91bGQgbGFzdC4ZASBOT1RFOiBDdXJyZW50bHkgaXQgaXMgbm90IHBvc3NpYmxlIHRvIGNoYW5nZSB0aGUgZXBvY2ggZHVyYXRpb24gYWZ0ZXIhASB0aGUgY2hhaW4gaGFzIHN0YXJ0ZWQuIEF0dGVtcHRpbmcgdG8gZG8gc28gd2lsbCBicmljayBibG9jayBwcm9kdWN0aW9uLgBERXhwZWN0ZWRCbG9ja1RpbWUoIHAXAAAAAAAAFAUBIFRoZSBleHBlY3RlZCBhdmVyYWdlIGJsb2NrIHRpbWUgYXQgd2hpY2ggQkFCRSBzaG91bGQgYmUgY3JlYXRpbmcRASBibG9ja3MuIFNpbmNlIEJBQkUgaXMgcHJvYmFiaWxpc3RpYyBpdCBpcyBub3QgdHJpdmlhbCB0byBmaWd1cmUgb3V0BQEgd2hhdCB0aGUgZXhwZWN0ZWQgYXZlcmFnZSBibG9jayB0aW1lIHNob3VsZCBiZSBiYXNlZCBvbiB0aGUgc2xvdAkBIGR1cmF0aW9uIGFuZCB0aGUgc2VjdXJpdHkgcGFyYW1ldGVyIGBjYCAod2hlcmUgYDEgLSBjYCByZXByZXNlbnRzoCB0aGUgcHJvYmFiaWxpdHkgb2YgYSBzbG90IGJlaW5nIGVtcHR5KS4AOE1heEF1dGhvcml0aWVzOBCghgEABIggTWF4IG51bWJlciBvZiBhdXRob3JpdGllcyBhbGxvd2VkADRNYXhOb21pbmF0b3JzOBAAAgAABNQgVGhlIG1heGltdW0gbnVtYmVyIG9mIG5vbWluYXRvcnMgZm9yIGVhY2ggdmFsaWRhdG9yLgAB7QkABDRLZXlPd25lclByb29mfAwZASBUaGUgcHJvb2Ygb2Yga2V5IG93bmVyc2hpcCwgdXNlZCBmb3IgdmFsaWRhdGluZyBlcXVpdm9jYXRpb24gcmVwb3J0cy4RASBUaGUgcHJvb2YgbXVzdCBpbmNsdWRlIHRoZSBzZXNzaW9uIGluZGV4IGFuZCB2YWxpZGF0b3IgY291bnQgb2YgdGhlsCBzZXNzaW9uIGF0IHdoaWNoIHRoZSBlcXVpdm9jYXRpb24gb2NjdXJyZWQuAAIAACRUaW1lc3RhbXABJFRpbWVzdGFtcAgMTm93AQAoIAAAAAAAAAAABKAgVGhlIGN1cnJlbnQgdGltZSBmb3IgdGhlIGN1cnJlbnQgYmxvY2suACREaWRVcGRhdGUBAJgEABDYIFdoZXRoZXIgdGhlIHRpbWVzdGFtcCBoYXMgYmVlbiB1cGRhdGVkIGluIHRoaXMgYmxvY2suAFUBIFRoaXMgdmFsdWUgaXMgdXBkYXRlZCB0byBgdHJ1ZWAgdXBvbiBzdWNjZXNzZnVsIHN1Ym1pc3Npb24gb2YgYSB0aW1lc3RhbXAgYnkgYSBub2RlLkUBIEl0IGlzIHRoZW4gY2hlY2tlZCBhdCB0aGUgZW5kIG9mIGVhY2ggYmxvY2sgZXhlY3V0aW9uIGluIHRoZSBgb25fZmluYWxpemVgIGhvb2suAAGMAAAENE1pbmltdW1QZXJpb2QoILgLAAAAAAAAGIwgVGhlIG1pbmltdW0gcGVyaW9kIGJldHdlZW4gYmxvY2tzLgBNASBCZSBhd2FyZSB0aGF0IHRoaXMgaXMgZGlmZmVyZW50IHRvIHRoZSAqZXhwZWN0ZWQqIHBlcmlvZCB0aGF0IHRoZSBibG9jayBwcm9kdWN0aW9uSQEgYXBwYXJhdHVzIHByb3ZpZGVzLiBZb3VyIGNob3NlbiBjb25zZW5zdXMgc3lzdGVtIHdpbGwgZ2VuZXJhbGx5IHdvcmsgd2l0aCB0aGlzIHRvYQEgZGV0ZXJtaW5lIGEgc2Vuc2libGUgYmxvY2sgdGltZS4gRm9yIGV4YW1wbGUsIGluIHRoZSBBdXJhIHBhbGxldCBpdCB3aWxsIGJlIGRvdWJsZSB0aGlzcCBwZXJpb2Qgb24gZGVmYXVsdCBzZXR0aW5ncy4AAAQYTW9tZW50KASYIFR5cGUgdXNlZCBmb3IgZXhwcmVzc2luZyBhIHRpbWVzdGFtcC4AAwAAHEluZGljZXMBHEluZGljZXMEIEFjY291bnRzAAEEAjjxCQQABIggVGhlIGxvb2t1cCBmcm9tIGluZGV4IHRvIGFjY291bnQuAAGUAAH5BwAEHERlcG9zaXSkQADodkgXAAAAAAAAAAAAAAAErCBUaGUgZGVwb3NpdCBuZWVkZWQgZm9yIHJlc2VydmluZyBhbiBpbmRleC4AAfUJAAQwQWNjb3VudEluZGV4OAhVASBUeXBlIHVzZWQgZm9yIHN0b3JpbmcgYW4gYWNjb3VudCdzIGluZGV4OyBpbXBsaWVzIHRoZSBtYXhpbXVtIG51bWJlciBvZiBhY2NvdW50cyB0aGVEIHN5c3RlbSBjYW4gaG9sZC4ABAAAIEJhbGFuY2VzASBCYWxhbmNlcxw0VG90YWxJc3N1YW5jZQEApEAAAAAAAAAAAAAAAAAAAAAABJggVGhlIHRvdGFsIHVuaXRzIGlzc3VlZCBpbiB0aGUgc3lzdGVtLgBASW5hY3RpdmVJc3N1YW5jZQEApEAAAAAAAAAAAAAAAAAAAAAABAkBIFRoZSB0b3RhbCB1bml0cyBvZiBvdXRzdGFuZGluZyBkZWFjdGl2YXRlZCBiYWxhbmNlIGluIHRoZSBzeXN0ZW0uABxBY2NvdW50AQEEAgStBwEBAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgGAJASBUaGUgQmFsYW5jZXMgcGFsbGV0IGV4YW1wbGUgb2Ygc3RvcmluZyB0aGUgYmFsYW5jZSBvZiBhbiBhY2NvdW50LgAoICMgRXhhbXBsZQA0IGBgYG5vY29tcGlsZbAgIGltcGwgcGFsbGV0X2JhbGFuY2VzOjpDb25maWcgZm9yIFJ1bnRpbWUgexkCICAgIHR5cGUgQWNjb3VudFN0b3JlID0gU3RvcmFnZU1hcFNoaW08U2VsZjo6QWNjb3VudDxSdW50aW1lPiwgZnJhbWVfc3lzdGVtOjpQcm92aWRlcjxSdW50aW1lPiwgQWNjb3VudElkLCBTZWxmOjpBY2NvdW50RGF0YTxCYWxhbmNlPj4MICB9ECBgYGAAFQEgWW91IGNhbiBhbHNvIHN0b3JlIHRoZSBiYWxhbmNlIG9mIGFuIGFjY291bnQgaW4gdGhlIGBTeXN0ZW1gIHBhbGxldC4AKCAjIEV4YW1wbGUANCBgYGBub2NvbXBpbGWwICBpbXBsIHBhbGxldF9iYWxhbmNlczo6Q29uZmlnIGZvciBSdW50aW1lIHt0ICAgdHlwZSBBY2NvdW50U3RvcmUgPSBTeXN0ZW0MICB9ECBgYGAAUQEgQnV0IHRoaXMgY29tZXMgd2l0aCB0cmFkZW9mZnMsIHN0b3JpbmcgYWNjb3VudCBiYWxhbmNlcyBpbiB0aGUgc3lzdGVtIHBhbGxldCBzdG9yZXNtASBgZnJhbWVfc3lzdGVtYCBkYXRhIGFsb25nc2lkZSB0aGUgYWNjb3VudCBkYXRhIGNvbnRyYXJ5IHRvIHN0b3JpbmcgYWNjb3VudCBiYWxhbmNlcyBpbiB0aGUpASBgQmFsYW5jZXNgIHBhbGxldCwgd2hpY2ggdXNlcyBhIGBTdG9yYWdlTWFwYCB0byBzdG9yZSBiYWxhbmNlcyBkYXRhIG9ubHkuQQEgTk9URTogVGhpcyBpcyBvbmx5IHVzZWQgaW4gdGhlIGNhc2UgdGhhdCB0aGlzIHBhbGxldCBpcyB1c2VkIHRvIHN0b3JlIGJhbGFuY2VzLgAUTG9ja3MBAQQCBPkJBAAQuCBBbnkgbGlxdWlkaXR5IGxvY2tzIG9uIHNvbWUgYWNjb3VudCBiYWxhbmNlcy4lASBOT1RFOiBTaG91bGQgb25seSBiZSBhY2Nlc3NlZCB3aGVuIHNldHRpbmcsIGNoYW5naW5nIGFuZCBmcmVlaW5nIGEgbG9jay4ArQEgVXNlIG9mIGxvY2tzIGlzIGRlcHJlY2F0ZWQgaW4gZmF2b3VyIG9mIGZyZWV6ZXMuIFNlZSBgaHR0cHM6Ly9naXRodWIuY29tL3Bhcml0eXRlY2gvc3Vic3RyYXRlL3B1bGwvMTI5NTEvYAAgUmVzZXJ2ZXMBAQQCBAkKBAAMpCBOYW1lZCByZXNlcnZlcyBvbiBzb21lIGFjY291bnQgYmFsYW5jZXMuALEBIFVzZSBvZiByZXNlcnZlcyBpcyBkZXByZWNhdGVkIGluIGZhdm91ciBvZiBob2xkcy4gU2VlIGBodHRwczovL2dpdGh1Yi5jb20vcGFyaXR5dGVjaC9zdWJzdHJhdGUvcHVsbC8xMjk1MS9gABRIb2xkcwEBBAIEFQoEAARsIEhvbGRzIG9uIGFjY291bnQgYmFsYW5jZXMuABxGcmVlemVzAQEEAgQhCgQABIggRnJlZXplIGxvY2tzIG9uIGFjY291bnQgYmFsYW5jZXMuAAGcAAH9BwAQSEV4aXN0ZW50aWFsRGVwb3NpdKRAAOQLVAIAAAAAAAAAAAAAACBBASBUaGUgbWluaW11bSBhbW91bnQgcmVxdWlyZWQgdG8ga2VlcCBhbiBhY2NvdW50IG9wZW4uIE1VU1QgQkUgR1JFQVRFUiBUSEFOIFpFUk8hAFkBIElmIHlvdSAqcmVhbGx5KiBuZWVkIGl0IHRvIGJlIHplcm8sIHlvdSBjYW4gZW5hYmxlIHRoZSBmZWF0dXJlIGBpbnNlY3VyZV96ZXJvX2VkYCBmb3JhASB0aGlzIHBhbGxldC4gSG93ZXZlciwgeW91IGRvIHNvIGF0IHlvdXIgb3duIHJpc2s6IHRoaXMgd2lsbCBvcGVuIHVwIGEgbWFqb3IgRG9TIHZlY3Rvci5ZASBJbiBjYXNlIHlvdSBoYXZlIG11bHRpcGxlIHNvdXJjZXMgb2YgcHJvdmlkZXIgcmVmZXJlbmNlcywgeW91IG1heSBhbHNvIGdldCB1bmV4cGVjdGVkjCBiZWhhdmlvdXIgaWYgeW91IHNldCB0aGlzIHRvIHplcm8uAPAgQm90dG9tIGxpbmU6IERvIHlvdXJzZWxmIGEgZmF2b3VyIGFuZCBtYWtlIGl0IGF0IGxlYXN0IG9uZSEAIE1heExvY2tzOBAyAAAAEPQgVGhlIG1heGltdW0gbnVtYmVyIG9mIGxvY2tzIHRoYXQgc2hvdWxkIGV4aXN0IG9uIGFuIGFjY291bnQu3CBOb3Qgc3RyaWN0bHkgZW5mb3JjZWQsIGJ1dCB1c2VkIGZvciB3ZWlnaHQgZXN0aW1hdGlvbi4ArQEgVXNlIG9mIGxvY2tzIGlzIGRlcHJlY2F0ZWQgaW4gZmF2b3VyIG9mIGZyZWV6ZXMuIFNlZSBgaHR0cHM6Ly9naXRodWIuY29tL3Bhcml0eXRlY2gvc3Vic3RyYXRlL3B1bGwvMTI5NTEvYAAsTWF4UmVzZXJ2ZXM4EDIAAAAMDQEgVGhlIG1heGltdW0gbnVtYmVyIG9mIG5hbWVkIHJlc2VydmVzIHRoYXQgY2FuIGV4aXN0IG9uIGFuIGFjY291bnQuALEBIFVzZSBvZiByZXNlcnZlcyBpcyBkZXByZWNhdGVkIGluIGZhdm91ciBvZiBob2xkcy4gU2VlIGBodHRwczovL2dpdGh1Yi5jb20vcGFyaXR5dGVjaC9zdWJzdHJhdGUvcHVsbC8xMjk1MS9gAChNYXhGcmVlemVzOBAIAAAABGEBIFRoZSBtYXhpbXVtIG51bWJlciBvZiBpbmRpdmlkdWFsIGZyZWV6ZSBsb2NrcyB0aGF0IGNhbiBleGlzdCBvbiBhbiBhY2NvdW50IGF0IGFueSB0aW1lLgABNQoAEERSdW50aW1lSG9sZFJlYXNvbgUIBHQgVGhlIG92ZXJhcmNoaW5nIGhvbGQgcmVhc29uLhxCYWxhbmNlpARsIFRoZSBiYWxhbmNlIG9mIGFuIGFjY291bnQuRFJlc2VydmVJZGVudGlmaWVyIQUMaCBUaGUgSUQgdHlwZSBmb3IgcmVzZXJ2ZXMuALEBIFVzZSBvZiByZXNlcnZlcyBpcyBkZXByZWNhdGVkIGluIGZhdm91ciBvZiBob2xkcy4gU2VlIGBodHRwczovL2dpdGh1Yi5jb20vcGFyaXR5dGVjaC9zdWJzdHJhdGUvcHVsbC8xMjk1MS9gQEZyZWV6ZUlkZW50aWZpZXIpCgRkIFRoZSBJRCB0eXBlIGZvciBmcmVlemVzLgAFAABIVHJhbnNhY3Rpb25QYXltZW50AUhUcmFuc2FjdGlvblBheW1lbnQMRE5leHRGZWVNdWx0aXBsaWVyAQB9BkAAAGSns7bgDQAAAAAAAAAAAAA4U3RvcmFnZVZlcnNpb24BADkKBAAAADxUeFBheW1lbnRDcmVkaXQAAD0KBAAM8CBUaGUgYE9uQ2hhcmdlVHJhbnNhY3Rpb25gIHN0b3JlcyB0aGUgd2l0aGRyYXduIHR4IGZlZSBoZXJlLgA1ASBVc2UgYHdpdGhkcmF3X3R4ZmVlYCBhbmQgYHJlbWFpbmluZ190eGZlZWAgdG8gYWNjZXNzIGZyb20gb3V0c2lkZSB0aGUgY3JhdGUuAAABJQgABGBPcGVyYXRpb25hbEZlZU11bHRpcGxpZXIMBAVUWQEgQSBmZWUgbXVsdGlwbGllciBmb3IgYE9wZXJhdGlvbmFsYCBleHRyaW5zaWNzIHRvIGNvbXB1dGUgInZpcnR1YWwgdGlwIiB0byBib29zdCB0aGVpciwgYHByaW9yaXR5YABRASBUaGlzIHZhbHVlIGlzIG11bHRpcGxpZWQgYnkgdGhlIGBmaW5hbF9mZWVgIHRvIG9idGFpbiBhICJ2aXJ0dWFsIHRpcCIgdGhhdCBpcyBsYXRlcvQgYWRkZWQgdG8gYSB0aXAgY29tcG9uZW50IGluIHJlZ3VsYXIgYHByaW9yaXR5YCBjYWxjdWxhdGlvbnMuTQEgSXQgbWVhbnMgdGhhdCBhIGBOb3JtYWxgIHRyYW5zYWN0aW9uIGNhbiBmcm9udC1ydW4gYSBzaW1pbGFybHktc2l6ZWQgYE9wZXJhdGlvbmFsYEEBIGV4dHJpbnNpYyAod2l0aCBubyB0aXApLCBieSBpbmNsdWRpbmcgYSB0aXAgdmFsdWUgZ3JlYXRlciB0aGFuIHRoZSB2aXJ0dWFsIHRpcC4APCBgYGBydXN0LGlnbm9yZUAgLy8gRm9yIGBOb3JtYWxgjCBsZXQgcHJpb3JpdHkgPSBwcmlvcml0eV9jYWxjKHRpcCk7AFQgLy8gRm9yIGBPcGVyYXRpb25hbGARASBsZXQgdmlydHVhbF90aXAgPSAoaW5jbHVzaW9uX2ZlZSArIHRpcCkgKiBPcGVyYXRpb25hbEZlZU11bHRpcGxpZXI7xCBsZXQgcHJpb3JpdHkgPSBwcmlvcml0eV9jYWxjKHRpcCArIHZpcnR1YWxfdGlwKTsQIGBgYABRASBOb3RlIHRoYXQgc2luY2Ugd2UgdXNlIGBmaW5hbF9mZWVgIHRoZSBtdWx0aXBsaWVyIGFwcGxpZXMgYWxzbyB0byB0aGUgcmVndWxhciBgdGlwYF0BIHNlbnQgd2l0aCB0aGUgdHJhbnNhY3Rpb24uIFNvLCBub3Qgb25seSBkb2VzIHRoZSB0cmFuc2FjdGlvbiBnZXQgYSBwcmlvcml0eSBidW1wIGJhc2VkYQEgb24gdGhlIGBpbmNsdXNpb25fZmVlYCwgYnV0IHdlIGFsc28gYW1wbGlmeSB0aGUgaW1wYWN0IG9mIHRpcHMgYXBwbGllZCB0byBgT3BlcmF0aW9uYWxgOCB0cmFuc2FjdGlvbnMuAAAAACAAAChBdXRob3JzaGlwAShBdXRob3JzaGlwBBhBdXRob3IAAAQEAARkIEF1dGhvciBvZiBjdXJyZW50IGJsb2NrLgAAAAAAAAAGAAAcU3Rha2luZwEcU3Rha2luZ6g4VmFsaWRhdG9yQ291bnQBADgQAAAAAAScIFRoZSBpZGVhbCBudW1iZXIgb2YgYWN0aXZlIHZhbGlkYXRvcnMuAFRNaW5pbXVtVmFsaWRhdG9yQ291bnQBADgQAAAAAARBASBNaW5pbXVtIG51bWJlciBvZiBzdGFraW5nIHBhcnRpY2lwYW50cyBiZWZvcmUgZW1lcmdlbmN5IGNvbmRpdGlvbnMgYXJlIGltcG9zZWQuADRJbnZ1bG5lcmFibGVzAQCoBAAMWQEgQW55IHZhbGlkYXRvcnMgdGhhdCBtYXkgbmV2ZXIgYmUgc2xhc2hlZCBvciBmb3JjaWJseSBraWNrZWQuIEl0J3MgYSBWZWMgc2luY2UgdGhleSdyZU0BIGVhc3kgdG8gaW5pdGlhbGl6ZSBhbmQgdGhlIHBlcmZvcm1hbmNlIGhpdCBpcyBtaW5pbWFsICh3ZSBleHBlY3Qgbm8gbW9yZSB0aGFuIGZvdXKsIGludnVsbmVyYWJsZXMpIGFuZCByZXN0cmljdGVkIHRvIHRlc3RuZXRzLgAYQm9uZGVkAAEEBQQEBAAMAQEgTWFwIGZyb20gYWxsIGxvY2tlZCAic3Rhc2giIGFjY291bnRzIHRvIHRoZSBjb250cm9sbGVyIGFjY291bnQuANAgVFdPWC1OT1RFOiBTQUZFIHNpbmNlIGBBY2NvdW50SWRgIGlzIGEgc2VjdXJlIGhhc2guAEBNaW5Ob21pbmF0b3JCb25kAQCkQAAAAAAAAAAAAAAAAAAAAAAEIQEgVGhlIG1pbmltdW0gYWN0aXZlIGJvbmQgdG8gYmVjb21lIGFuZCBtYWludGFpbiB0aGUgcm9sZSBvZiBhIG5vbWluYXRvci4AQE1pblZhbGlkYXRvckJvbmQBAKRAAAAAAAAAAAAAAAAAAAAAAAQhASBUaGUgbWluaW11bSBhY3RpdmUgYm9uZCB0byBiZWNvbWUgYW5kIG1haW50YWluIHRoZSByb2xlIG9mIGEgdmFsaWRhdG9yLgBITWluaW11bUFjdGl2ZVN0YWtlAQCkQAAAAAAAAAAAAAAAAAAAAAAEEQEgVGhlIG1pbmltdW0gYWN0aXZlIG5vbWluYXRvciBzdGFrZSBvZiB0aGUgbGFzdCBzdWNjZXNzZnVsIGVsZWN0aW9uLgA0TWluQ29tbWlzc2lvbgEAwBAAAAAADOggVGhlIG1pbmltdW0gYW1vdW50IG9mIGNvbW1pc3Npb24gdGhhdCB2YWxpZGF0b3JzIGNhbiBzZXQuAIAgSWYgc2V0IHRvIGAwYCwgbm8gbGltaXQgZXhpc3RzLgAYTGVkZ2VyAAEEAgRFCgQAEEUBIE1hcCBmcm9tIGFsbCAodW5sb2NrZWQpICJjb250cm9sbGVyIiBhY2NvdW50cyB0byB0aGUgaW5mbyByZWdhcmRpbmcgdGhlIHN0YWtpbmcuAHUBIE5vdGU6IEFsbCB0aGUgcmVhZHMgYW5kIG11dGF0aW9ucyB0byB0aGlzIHN0b3JhZ2UgKk1VU1QqIGJlIGRvbmUgdGhyb3VnaCB0aGUgbWV0aG9kcyBleHBvc2Vk6CBieSBbYFN0YWtpbmdMZWRnZXJgXSB0byBlbnN1cmUgZGF0YSBhbmQgbG9jayBjb25zaXN0ZW5jeS4AFFBheWVlAAEEBQS0BAAM5CBXaGVyZSB0aGUgcmV3YXJkIHBheW1lbnQgc2hvdWxkIGJlIG1hZGUuIEtleWVkIGJ5IHN0YXNoLgDQIFRXT1gtTk9URTogU0FGRSBzaW5jZSBgQWNjb3VudElkYCBpcyBhIHNlY3VyZSBoYXNoLgAoVmFsaWRhdG9ycwEBBAUEuAgAAAxFASBUaGUgbWFwIGZyb20gKHdhbm5hYmUpIHZhbGlkYXRvciBzdGFzaCBrZXkgdG8gdGhlIHByZWZlcmVuY2VzIG9mIHRoYXQgdmFsaWRhdG9yLgDQIFRXT1gtTk9URTogU0FGRSBzaW5jZSBgQWNjb3VudElkYCBpcyBhIHNlY3VyZSBoYXNoLgBQQ291bnRlckZvclZhbGlkYXRvcnMBADgQAAAAAASsQ291bnRlciBmb3IgdGhlIHJlbGF0ZWQgY291bnRlZCBzdG9yYWdlIG1hcABITWF4VmFsaWRhdG9yc0NvdW50AAA4BAAMMQEgVGhlIG1heGltdW0gdmFsaWRhdG9yIGNvdW50IGJlZm9yZSB3ZSBzdG9wIGFsbG93aW5nIG5ldyB2YWxpZGF0b3JzIHRvIGpvaW4uANAgV2hlbiB0aGlzIHZhbHVlIGlzIG5vdCBzZXQsIG5vIGxpbWl0cyBhcmUgZW5mb3JjZWQuAChOb21pbmF0b3JzAAEEBQRNCgQATHUBIFRoZSBtYXAgZnJvbSBub21pbmF0b3Igc3Rhc2gga2V5IHRvIHRoZWlyIG5vbWluYXRpb24gcHJlZmVyZW5jZXMsIG5hbWVseSB0aGUgdmFsaWRhdG9ycyB0aGF0WCB0aGV5IHdpc2ggdG8gc3VwcG9ydC4AOQEgTm90ZSB0aGF0IHRoZSBrZXlzIG9mIHRoaXMgc3RvcmFnZSBtYXAgbWlnaHQgYmVjb21lIG5vbi1kZWNvZGFibGUgaW4gY2FzZSB0aGUtASBhY2NvdW50J3MgW2BOb21pbmF0aW9uc1F1b3RhOjpNYXhOb21pbmF0aW9uc2BdIGNvbmZpZ3VyYXRpb24gaXMgZGVjcmVhc2VkLpAgSW4gdGhpcyByYXJlIGNhc2UsIHRoZXNlIG5vbWluYXRvcnNlASBhcmUgc3RpbGwgZXhpc3RlbnQgaW4gc3RvcmFnZSwgdGhlaXIga2V5IGlzIGNvcnJlY3QgYW5kIHJldHJpZXZhYmxlIChpLmUuIGBjb250YWluc19rZXlgcQEgaW5kaWNhdGVzIHRoYXQgdGhleSBleGlzdCksIGJ1dCB0aGVpciB2YWx1ZSBjYW5ub3QgYmUgZGVjb2RlZC4gVGhlcmVmb3JlLCB0aGUgbm9uLWRlY29kYWJsZW0BIG5vbWluYXRvcnMgd2lsbCBlZmZlY3RpdmVseSBub3QtZXhpc3QsIHVudGlsIHRoZXkgcmUtc3VibWl0IHRoZWlyIHByZWZlcmVuY2VzIHN1Y2ggdGhhdCBpdAEBIGlzIHdpdGhpbiB0aGUgYm91bmRzIG9mIHRoZSBuZXdseSBzZXQgYENvbmZpZzo6TWF4Tm9taW5hdGlvbnNgLgBhASBUaGlzIGltcGxpZXMgdGhhdCBgOjppdGVyX2tleXMoKS5jb3VudCgpYCBhbmQgYDo6aXRlcigpLmNvdW50KClgIG1pZ2h0IHJldHVybiBkaWZmZXJlbnRtASB2YWx1ZXMgZm9yIHRoaXMgbWFwLiBNb3Jlb3ZlciwgdGhlIG1haW4gYDo6Y291bnQoKWAgaXMgYWxpZ25lZCB3aXRoIHRoZSBmb3JtZXIsIG5hbWVseSB0aGVsIG51bWJlciBvZiBrZXlzIHRoYXQgZXhpc3QuAG0BIExhc3RseSwgaWYgYW55IG9mIHRoZSBub21pbmF0b3JzIGJlY29tZSBub24tZGVjb2RhYmxlLCB0aGV5IGNhbiBiZSBjaGlsbGVkIGltbWVkaWF0ZWx5IHZpYbggW2BDYWxsOjpjaGlsbF9vdGhlcmBdIGRpc3BhdGNoYWJsZSBieSBhbnlvbmUuANAgVFdPWC1OT1RFOiBTQUZFIHNpbmNlIGBBY2NvdW50SWRgIGlzIGEgc2VjdXJlIGhhc2guAFBDb3VudGVyRm9yTm9taW5hdG9ycwEAOBAAAAAABKxDb3VudGVyIGZvciB0aGUgcmVsYXRlZCBjb3VudGVkIHN0b3JhZ2UgbWFwADhWaXJ0dWFsU3Rha2VycwABBAUEEAQAGMggU3Rha2VycyB3aG9zZSBmdW5kcyBhcmUgbWFuYWdlZCBieSBvdGhlciBwYWxsZXRzLgB1ASBUaGlzIHBhbGxldCBkb2VzIG5vdCBhcHBseSBhbnkgbG9ja3Mgb24gdGhlbSwgdGhlcmVmb3JlIHRoZXkgYXJlIG9ubHkgdmlydHVhbGx5IGJvbmRlZC4gVGhleW0BIGFyZSBleHBlY3RlZCB0byBiZSBrZXlsZXNzIGFjY291bnRzIGFuZCBoZW5jZSBzaG91bGQgbm90IGJlIGFsbG93ZWQgdG8gbXV0YXRlIHRoZWlyIGxlZGdlcnEBIGRpcmVjdGx5IHZpYSB0aGlzIHBhbGxldC4gSW5zdGVhZCwgdGhlc2UgYWNjb3VudHMgYXJlIG1hbmFnZWQgYnkgb3RoZXIgcGFsbGV0cyBhbmQgYWNjZXNzZWQpASB2aWEgbG93IGxldmVsIGFwaXMuIFdlIGtlZXAgdHJhY2sgb2YgdGhlbSB0byBkbyBtaW5pbWFsIGludGVncml0eSBjaGVja3MuAGBDb3VudGVyRm9yVmlydHVhbFN0YWtlcnMBADgQAAAAAASsQ291bnRlciBmb3IgdGhlIHJlbGF0ZWQgY291bnRlZCBzdG9yYWdlIG1hcABITWF4Tm9taW5hdG9yc0NvdW50AAA4BAAMMQEgVGhlIG1heGltdW0gbm9taW5hdG9yIGNvdW50IGJlZm9yZSB3ZSBzdG9wIGFsbG93aW5nIG5ldyB2YWxpZGF0b3JzIHRvIGpvaW4uANAgV2hlbiB0aGlzIHZhbHVlIGlzIG5vdCBzZXQsIG5vIGxpbWl0cyBhcmUgZW5mb3JjZWQuAChDdXJyZW50RXJhAAA4BAAQXCBUaGUgY3VycmVudCBlcmEgaW5kZXguAGUBIFRoaXMgaXMgdGhlIGxhdGVzdCBwbGFubmVkIGVyYSwgZGVwZW5kaW5nIG9uIGhvdyB0aGUgU2Vzc2lvbiBwYWxsZXQgcXVldWVzIHRoZSB2YWxpZGF0b3KAIHNldCwgaXQgbWlnaHQgYmUgYWN0aXZlIG9yIG5vdC4AJEFjdGl2ZUVyYQAAVQoEABDYIFRoZSBhY3RpdmUgZXJhIGluZm9ybWF0aW9uLCBpdCBob2xkcyBpbmRleCBhbmQgc3RhcnQuAFkBIFRoZSBhY3RpdmUgZXJhIGlzIHRoZSBlcmEgYmVpbmcgY3VycmVudGx5IHJld2FyZGVkLiBWYWxpZGF0b3Igc2V0IG9mIHRoaXMgZXJhIG11c3QgYmWsIGVxdWFsIHRvIFtgU2Vzc2lvbkludGVyZmFjZTo6dmFsaWRhdG9yc2BdLgBURXJhc1N0YXJ0U2Vzc2lvbkluZGV4AAEEBTg4BAAQVQEgVGhlIHNlc3Npb24gaW5kZXggYXQgd2hpY2ggdGhlIGVyYSBzdGFydCBmb3IgdGhlIGxhc3QgW2BDb25maWc6Okhpc3RvcnlEZXB0aGBdIGVyYXMuAGEBIE5vdGU6IFRoaXMgdHJhY2tzIHRoZSBzdGFydGluZyBzZXNzaW9uIChpLmUuIHNlc3Npb24gaW5kZXggd2hlbiBlcmEgc3RhcnQgYmVpbmcgYWN0aXZlKfAgZm9yIHRoZSBlcmFzIGluIGBbQ3VycmVudEVyYSAtIEhJU1RPUllfREVQVEgsIEN1cnJlbnRFcmFdYC4ALEVyYXNTdGFrZXJzAQEIBQVVB1kKDAAAACB4IEV4cG9zdXJlIG9mIHZhbGlkYXRvciBhdCBlcmEuAGEBIFRoaXMgaXMga2V5ZWQgZmlyc3QgYnkgdGhlIGVyYSBpbmRleCB0byBhbGxvdyBidWxrIGRlbGV0aW9uIGFuZCB0aGVuIHRoZSBzdGFzaCBhY2NvdW50LgDMIElzIGl0IHJlbW92ZWQgYWZ0ZXIgW2BDb25maWc6Okhpc3RvcnlEZXB0aGBdIGVyYXMuQQEgSWYgc3Rha2VycyBoYXNuJ3QgYmVlbiBzZXQgb3IgaGFzIGJlZW4gcmVtb3ZlZCB0aGVuIGVtcHR5IGV4cG9zdXJlIGlzIHJldHVybmVkLgApASBOb3RlOiBEZXByZWNhdGVkIHNpbmNlIHYxNC4gVXNlIGBFcmFJbmZvYCBpbnN0ZWFkIHRvIHdvcmsgd2l0aCBleHBvc3VyZXMuAExFcmFzU3Rha2Vyc092ZXJ2aWV3AAEIBQVVB2UKBAAwuCBTdW1tYXJ5IG9mIHZhbGlkYXRvciBleHBvc3VyZSBhdCBhIGdpdmVuIGVyYS4AcQEgVGhpcyBjb250YWlucyB0aGUgdG90YWwgc3Rha2UgaW4gc3VwcG9ydCBvZiB0aGUgdmFsaWRhdG9yIGFuZCB0aGVpciBvd24gc3Rha2UuIEluIGFkZGl0aW9uLHUBIGl0IGNhbiBhbHNvIGJlIHVzZWQgdG8gZ2V0IHRoZSBudW1iZXIgb2Ygbm9taW5hdG9ycyBiYWNraW5nIHRoaXMgdmFsaWRhdG9yIGFuZCB0aGUgbnVtYmVyIG9maQEgZXhwb3N1cmUgcGFnZXMgdGhleSBhcmUgZGl2aWRlZCBpbnRvLiBUaGUgcGFnZSBjb3VudCBpcyB1c2VmdWwgdG8gZGV0ZXJtaW5lIHRoZSBudW1iZXIgb2asIHBhZ2VzIG9mIHJld2FyZHMgdGhhdCBuZWVkcyB0byBiZSBjbGFpbWVkLgBhASBUaGlzIGlzIGtleWVkIGZpcnN0IGJ5IHRoZSBlcmEgaW5kZXggdG8gYWxsb3cgYnVsayBkZWxldGlvbiBhbmQgdGhlbiB0aGUgc3Rhc2ggYWNjb3VudC6sIFNob3VsZCBvbmx5IGJlIGFjY2Vzc2VkIHRocm91Z2ggYEVyYUluZm9gLgDMIElzIGl0IHJlbW92ZWQgYWZ0ZXIgW2BDb25maWc6Okhpc3RvcnlEZXB0aGBdIGVyYXMuQQEgSWYgc3Rha2VycyBoYXNuJ3QgYmVlbiBzZXQgb3IgaGFzIGJlZW4gcmVtb3ZlZCB0aGVuIGVtcHR5IG92ZXJ2aWV3IGlzIHJldHVybmVkLgBIRXJhc1N0YWtlcnNDbGlwcGVkAQEIBQVVB1kKDAAAAECYIENsaXBwZWQgRXhwb3N1cmUgb2YgdmFsaWRhdG9yIGF0IGVyYS4AZQEgTm90ZTogVGhpcyBpcyBkZXByZWNhdGVkLCBzaG91bGQgYmUgdXNlZCBhcyByZWFkLW9ubHkgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiB0aGUgZnV0dXJlLjEBIE5ldyBgRXhwb3N1cmVgcyBhcmUgc3RvcmVkIGluIGEgcGFnZWQgbWFubmVyIGluIGBFcmFzU3Rha2Vyc1BhZ2VkYCBpbnN0ZWFkLgBZASBUaGlzIGlzIHNpbWlsYXIgdG8gW2BFcmFzU3Rha2Vyc2BdIGJ1dCBudW1iZXIgb2Ygbm9taW5hdG9ycyBleHBvc2VkIGlzIHJlZHVjZWQgdG8gdGhlqCBgVDo6TWF4RXhwb3N1cmVQYWdlU2l6ZWAgYmlnZ2VzdCBzdGFrZXJzLh0BIChOb3RlOiB0aGUgZmllbGQgYHRvdGFsYCBhbmQgYG93bmAgb2YgdGhlIGV4cG9zdXJlIHJlbWFpbnMgdW5jaGFuZ2VkKS70IFRoaXMgaXMgdXNlZCB0byBsaW1pdCB0aGUgaS9vIGNvc3QgZm9yIHRoZSBub21pbmF0b3IgcGF5b3V0LgBdASBUaGlzIGlzIGtleWVkIGZpc3QgYnkgdGhlIGVyYSBpbmRleCB0byBhbGxvdyBidWxrIGRlbGV0aW9uIGFuZCB0aGVuIHRoZSBzdGFzaCBhY2NvdW50LgDMIEl0IGlzIHJlbW92ZWQgYWZ0ZXIgW2BDb25maWc6Okhpc3RvcnlEZXB0aGBdIGVyYXMuQQEgSWYgc3Rha2VycyBoYXNuJ3QgYmVlbiBzZXQgb3IgaGFzIGJlZW4gcmVtb3ZlZCB0aGVuIGVtcHR5IGV4cG9zdXJlIGlzIHJldHVybmVkLgApASBOb3RlOiBEZXByZWNhdGVkIHNpbmNlIHYxNC4gVXNlIGBFcmFJbmZvYCBpbnN0ZWFkIHRvIHdvcmsgd2l0aCBleHBvc3VyZXMuAEBFcmFzU3Rha2Vyc1BhZ2VkAAEMBQUFXQdpCgQAGMAgUGFnaW5hdGVkIGV4cG9zdXJlIG9mIGEgdmFsaWRhdG9yIGF0IGdpdmVuIGVyYS4AcQEgVGhpcyBpcyBrZXllZCBmaXJzdCBieSB0aGUgZXJhIGluZGV4IHRvIGFsbG93IGJ1bGsgZGVsZXRpb24sIHRoZW4gc3Rhc2ggYWNjb3VudCBhbmQgZmluYWxsedQgdGhlIHBhZ2UuIFNob3VsZCBvbmx5IGJlIGFjY2Vzc2VkIHRocm91Z2ggYEVyYUluZm9gLgDUIFRoaXMgaXMgY2xlYXJlZCBhZnRlciBbYENvbmZpZzo6SGlzdG9yeURlcHRoYF0gZXJhcy4AOENsYWltZWRSZXdhcmRzAQEIBQVVB8wEABjcIEhpc3Rvcnkgb2YgY2xhaW1lZCBwYWdlZCByZXdhcmRzIGJ5IGVyYSBhbmQgdmFsaWRhdG9yLgBpASBUaGlzIGlzIGtleWVkIGJ5IGVyYSBhbmQgdmFsaWRhdG9yIHN0YXNoIHdoaWNoIG1hcHMgdG8gdGhlIHNldCBvZiBwYWdlIGluZGV4ZXMgd2hpY2ggaGF2ZTggYmVlbiBjbGFpbWVkLgDMIEl0IGlzIHJlbW92ZWQgYWZ0ZXIgW2BDb25maWc6Okhpc3RvcnlEZXB0aGBdIGVyYXMuAEhFcmFzVmFsaWRhdG9yUHJlZnMBAQgFBVUHuAgAABQRASBTaW1pbGFyIHRvIGBFcmFzU3Rha2Vyc2AsIHRoaXMgaG9sZHMgdGhlIHByZWZlcmVuY2VzIG9mIHZhbGlkYXRvcnMuAGEBIFRoaXMgaXMga2V5ZWQgZmlyc3QgYnkgdGhlIGVyYSBpbmRleCB0byBhbGxvdyBidWxrIGRlbGV0aW9uIGFuZCB0aGVuIHRoZSBzdGFzaCBhY2NvdW50LgDMIElzIGl0IHJlbW92ZWQgYWZ0ZXIgW2BDb25maWc6Okhpc3RvcnlEZXB0aGBdIGVyYXMuAExFcmFzVmFsaWRhdG9yUmV3YXJkAAEEBTikBAAMLQEgVGhlIHRvdGFsIHZhbGlkYXRvciBlcmEgcGF5b3V0IGZvciB0aGUgbGFzdCBbYENvbmZpZzo6SGlzdG9yeURlcHRoYF0gZXJhcy4AIQEgRXJhcyB0aGF0IGhhdmVuJ3QgZmluaXNoZWQgeWV0IG9yIGhhcyBiZWVuIHJlbW92ZWQgZG9lc24ndCBoYXZlIHJld2FyZC4AQEVyYXNSZXdhcmRQb2ludHMBAQQFOG0KFAAAAAAACNAgUmV3YXJkcyBmb3IgdGhlIGxhc3QgW2BDb25maWc6Okhpc3RvcnlEZXB0aGBdIGVyYXMuJQEgSWYgcmV3YXJkIGhhc24ndCBiZWVuIHNldCBvciBoYXMgYmVlbiByZW1vdmVkIHRoZW4gMCByZXdhcmQgaXMgcmV0dXJuZWQuADhFcmFzVG90YWxTdGFrZQEBBAU4pEAAAAAAAAAAAAAAAAAAAAAACBEBIFRoZSB0b3RhbCBhbW91bnQgc3Rha2VkIGZvciB0aGUgbGFzdCBbYENvbmZpZzo6SGlzdG9yeURlcHRoYF0gZXJhcy4dASBJZiB0b3RhbCBoYXNuJ3QgYmVlbiBzZXQgb3IgaGFzIGJlZW4gcmVtb3ZlZCB0aGVuIDAgc3Rha2UgaXMgcmV0dXJuZWQuACBGb3JjZUVyYQEALQgEAARUIE1vZGUgb2YgZXJhIGZvcmNpbmcuAEBNYXhTdGFrZWRSZXdhcmRzAADIBAAMGQEgTWF4aW11bSBzdGFrZWQgcmV3YXJkcywgaS5lLiB0aGUgcGVyY2VudGFnZSBvZiB0aGUgZXJhIGluZmxhdGlvbiB0aGF0bCBpcyB1c2VkIGZvciBzdGFrZSByZXdhcmRzLqwgU2VlIFtFcmEgcGF5b3V0XSguL2luZGV4Lmh0bWwjZXJhLXBheW91dCkuAExTbGFzaFJld2FyZEZyYWN0aW9uAQDAEAAAAAAM+CBUaGUgcGVyY2VudGFnZSBvZiB0aGUgc2xhc2ggdGhhdCBpcyBkaXN0cmlidXRlZCB0byByZXBvcnRlcnMuAOQgVGhlIHJlc3Qgb2YgdGhlIHNsYXNoZWQgdmFsdWUgaXMgaGFuZGxlZCBieSB0aGUgYFNsYXNoYC4ATENhbmNlbGVkU2xhc2hQYXlvdXQBAKRAAAAAAAAAAAAAAAAAAAAAAAgVASBUaGUgYW1vdW50IG9mIGN1cnJlbmN5IGdpdmVuIHRvIHJlcG9ydGVycyBvZiBhIHNsYXNoIGV2ZW50IHdoaWNoIHdhc+wgY2FuY2VsZWQgYnkgZXh0cmFvcmRpbmFyeSBjaXJjdW1zdGFuY2VzIChlLmcuIGdvdmVybmFuY2UpLgBAVW5hcHBsaWVkU2xhc2hlcwEBBAU4eQoEAATEIEFsbCB1bmFwcGxpZWQgc2xhc2hlcyB0aGF0IGFyZSBxdWV1ZWQgZm9yIGxhdGVyLgAoQm9uZGVkRXJhcwEAKQkEABAlASBBIG1hcHBpbmcgZnJvbSBzdGlsbC1ib25kZWQgZXJhcyB0byB0aGUgZmlyc3Qgc2Vzc2lvbiBpbmRleCBvZiB0aGF0IGVyYS4AyCBNdXN0IGNvbnRhaW5zIGluZm9ybWF0aW9uIGZvciBlcmFzIGZvciB0aGUgcmFuZ2U6vCBgW2FjdGl2ZV9lcmEgLSBib3VuZGluZ19kdXJhdGlvbjsgYWN0aXZlX2VyYV1gAExWYWxpZGF0b3JTbGFzaEluRXJhAAEIBQVVB4EKBAAIRQEgQWxsIHNsYXNoaW5nIGV2ZW50cyBvbiB2YWxpZGF0b3JzLCBtYXBwZWQgYnkgZXJhIHRvIHRoZSBoaWdoZXN0IHNsYXNoIHByb3BvcnRpb25wIGFuZCBzbGFzaCB2YWx1ZSBvZiB0aGUgZXJhLgBMTm9taW5hdG9yU2xhc2hJbkVyYQABCAUFVQekBAAEYQEgQWxsIHNsYXNoaW5nIGV2ZW50cyBvbiBub21pbmF0b3JzLCBtYXBwZWQgYnkgZXJhIHRvIHRoZSBoaWdoZXN0IHNsYXNoIHZhbHVlIG9mIHRoZSBlcmEuADRTbGFzaGluZ1NwYW5zAAEEBQSFCgQABIwgU2xhc2hpbmcgc3BhbnMgZm9yIHN0YXNoIGFjY291bnRzLgAkU3BhblNsYXNoAQEEBWUHiQqAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIPQEgUmVjb3JkcyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgbWF4aW11bSBzbGFzaCBvZiBhIHN0YXNoIHdpdGhpbiBhIHNsYXNoaW5nIHNwYW4suCBhcyB3ZWxsIGFzIGhvdyBtdWNoIHJld2FyZCBoYXMgYmVlbiBwYWlkIG91dC4AVEN1cnJlbnRQbGFubmVkU2Vzc2lvbgEAOBAAAAAADOggVGhlIGxhc3QgcGxhbm5lZCBzZXNzaW9uIHNjaGVkdWxlZCBieSB0aGUgc2Vzc2lvbiBwYWxsZXQuAHEBIFRoaXMgaXMgYmFzaWNhbGx5IGluIHN5bmMgd2l0aCB0aGUgY2FsbCB0byBbYHBhbGxldF9zZXNzaW9uOjpTZXNzaW9uTWFuYWdlcjo6bmV3X3Nlc3Npb25gXS4AOENoaWxsVGhyZXNob2xkAADIBAAMUQEgVGhlIHRocmVzaG9sZCBmb3Igd2hlbiB1c2VycyBjYW4gc3RhcnQgY2FsbGluZyBgY2hpbGxfb3RoZXJgIGZvciBvdGhlciB2YWxpZGF0b3JzIC9ZASBub21pbmF0b3JzLiBUaGUgdGhyZXNob2xkIGlzIGNvbXBhcmVkIHRvIHRoZSBhY3R1YWwgbnVtYmVyIG9mIHZhbGlkYXRvcnMgLyBub21pbmF0b3JzKQEgKGBDb3VudEZvcipgKSBpbiB0aGUgc3lzdGVtIGNvbXBhcmVkIHRvIHRoZSBjb25maWd1cmVkIG1heCAoYE1heCpDb3VudGApLgABsAABKQgAHDBIaXN0b3J5RGVwdGg4EFQAAABQjCBOdW1iZXIgb2YgZXJhcyB0byBrZWVwIGluIGhpc3RvcnkuAOggRm9sbG93aW5nIGluZm9ybWF0aW9uIGlzIGtlcHQgZm9yIGVyYXMgaW4gYFtjdXJyZW50X2VyYSAtCQEgSGlzdG9yeURlcHRoLCBjdXJyZW50X2VyYV1gOiBgRXJhc1N0YWtlcnNgLCBgRXJhc1N0YWtlcnNDbGlwcGVkYCwFASBgRXJhc1ZhbGlkYXRvclByZWZzYCwgYEVyYXNWYWxpZGF0b3JSZXdhcmRgLCBgRXJhc1Jld2FyZFBvaW50c2AsRQEgYEVyYXNUb3RhbFN0YWtlYCwgYEVyYXNTdGFydFNlc3Npb25JbmRleGAsIGBDbGFpbWVkUmV3YXJkc2AsIGBFcmFzU3Rha2Vyc1BhZ2VkYCxcIGBFcmFzU3Rha2Vyc092ZXJ2aWV3YC4A5CBNdXN0IGJlIG1vcmUgdGhhbiB0aGUgbnVtYmVyIG9mIGVyYXMgZGVsYXllZCBieSBzZXNzaW9uLvggSS5lLiBhY3RpdmUgZXJhIG11c3QgYWx3YXlzIGJlIGluIGhpc3RvcnkuIEkuZS4gYGFjdGl2ZV9lcmEgPsQgY3VycmVudF9lcmEgLSBoaXN0b3J5X2RlcHRoYCBtdXN0IGJlIGd1YXJhbnRlZWQuABEBIElmIG1pZ3JhdGluZyBhbiBleGlzdGluZyBwYWxsZXQgZnJvbSBzdG9yYWdlIHZhbHVlIHRvIGNvbmZpZyB2YWx1ZSzsIHRoaXMgc2hvdWxkIGJlIHNldCB0byBzYW1lIHZhbHVlIG9yIGdyZWF0ZXIgYXMgaW4gc3RvcmFnZS4AFQEgTm90ZTogYEhpc3RvcnlEZXB0aGAgaXMgdXNlZCBhcyB0aGUgdXBwZXIgYm91bmQgZm9yIHRoZSBgQm91bmRlZFZlY2AtASBpdGVtIGBTdGFraW5nTGVkZ2VyLmxlZ2FjeV9jbGFpbWVkX3Jld2FyZHNgLiBTZXR0aW5nIHRoaXMgdmFsdWUgbG93ZXIgdGhhbtggdGhlIGV4aXN0aW5nIHZhbHVlIGNhbiBsZWFkIHRvIGluY29uc2lzdGVuY2llcyBpbiB0aGUVASBgU3Rha2luZ0xlZGdlcmAgYW5kIHdpbGwgbmVlZCB0byBiZSBoYW5kbGVkIHByb3Blcmx5IGluIGEgbWlncmF0aW9uLvAgVGhlIHRlc3QgYHJlZHVjaW5nX2hpc3RvcnlfZGVwdGhfYWJydXB0YCBzaG93cyB0aGlzIGVmZmVjdC4AOFNlc3Npb25zUGVyRXJhOBAGAAAABHAgTnVtYmVyIG9mIHNlc3Npb25zIHBlciBlcmEuADxCb25kaW5nRHVyYXRpb244EBwAAAAE5CBOdW1iZXIgb2YgZXJhcyB0aGF0IHN0YWtlZCBmdW5kcyBtdXN0IHJlbWFpbiBib25kZWQgZm9yLgBIU2xhc2hEZWZlckR1cmF0aW9uOBAbAAAAEAEBIE51bWJlciBvZiBlcmFzIHRoYXQgc2xhc2hlcyBhcmUgZGVmZXJyZWQgYnksIGFmdGVyIGNvbXB1dGF0aW9uLgANASBUaGlzIHNob3VsZCBiZSBsZXNzIHRoYW4gdGhlIGJvbmRpbmcgZHVyYXRpb24uIFNldCB0byAwIGlmIHNsYXNoZXMVASBzaG91bGQgYmUgYXBwbGllZCBpbW1lZGlhdGVseSwgd2l0aG91dCBvcHBvcnR1bml0eSBmb3IgaW50ZXJ2ZW50aW9uLgBMTWF4RXhwb3N1cmVQYWdlU2l6ZTgQAAIAACywIFRoZSBtYXhpbXVtIHNpemUgb2YgZWFjaCBgVDo6RXhwb3N1cmVQYWdlYC4AKQEgQW4gYEV4cG9zdXJlUGFnZWAgaXMgd2Vha2x5IGJvdW5kZWQgdG8gYSBtYXhpbXVtIG9mIGBNYXhFeHBvc3VyZVBhZ2VTaXplYDAgbm9taW5hdG9ycy4AIQEgRm9yIG9sZGVyIG5vbi1wYWdlZCBleHBvc3VyZSwgYSByZXdhcmQgcGF5b3V0IHdhcyByZXN0cmljdGVkIHRvIHRoZSB0b3AhASBgTWF4RXhwb3N1cmVQYWdlU2l6ZWAgbm9taW5hdG9ycy4gVGhpcyBpcyB0byBsaW1pdCB0aGUgaS9vIGNvc3QgZm9yIHRoZUggbm9taW5hdG9yIHBheW91dC4AWQEgTm90ZTogYE1heEV4cG9zdXJlUGFnZVNpemVgIGlzIHVzZWQgdG8gYm91bmQgYENsYWltZWRSZXdhcmRzYCBhbmQgaXMgdW5zYWZlIHRvIHJlZHVjZZAgd2l0aG91dCBoYW5kbGluZyBpdCBpbiBhIG1pZ3JhdGlvbi4APE1heFZhbGlkYXRvclNldDgQsAQAAAQVASBUaGUgYWJzb2x1dGUgbWF4aW11bSBvZiB3aW5uZXIgdmFsaWRhdG9ycyB0aGlzIHBhbGxldCBzaG91bGQgcmV0dXJuLgBITWF4VW5sb2NraW5nQ2h1bmtzOBAgAAAAKAUBIFRoZSBtYXhpbXVtIG51bWJlciBvZiBgdW5sb2NraW5nYCBjaHVua3MgYSBbYFN0YWtpbmdMZWRnZXJgXSBjYW4JASBoYXZlLiBFZmZlY3RpdmVseSBkZXRlcm1pbmVzIGhvdyBtYW55IHVuaXF1ZSBlcmFzIGEgc3Rha2VyIG1heSBiZTggdW5ib25kaW5nIGluLgD4IE5vdGU6IGBNYXhVbmxvY2tpbmdDaHVua3NgIGlzIHVzZWQgYXMgdGhlIHVwcGVyIGJvdW5kIGZvciB0aGUBASBgQm91bmRlZFZlY2AgaXRlbSBgU3Rha2luZ0xlZGdlci51bmxvY2tpbmdgLiBTZXR0aW5nIHRoaXMgdmFsdWUFASBsb3dlciB0aGFuIHRoZSBleGlzdGluZyB2YWx1ZSBjYW4gbGVhZCB0byBpbmNvbnNpc3RlbmNpZXMgaW4gdGhlCQEgYFN0YWtpbmdMZWRnZXJgIGFuZCB3aWxsIG5lZWQgdG8gYmUgaGFuZGxlZCBwcm9wZXJseSBpbiBhIHJ1bnRpbWUFASBtaWdyYXRpb24uIFRoZSB0ZXN0IGByZWR1Y2luZ19tYXhfdW5sb2NraW5nX2NodW5rc19hYnJ1cHRgIHNob3dzNCB0aGlzIGVmZmVjdC4AAY0KAAQ8Q3VycmVuY3lCYWxhbmNlpAhRASBKdXN0IHRoZSBgQ3VycmVuY3k6OkJhbGFuY2VgIHR5cGU7IHdlIGhhdmUgdGhpcyBpdGVtIHRvIGFsbG93IHVzIHRvIGNvbnN0cmFpbiBpdCB0bzQgYEZyb208dTY0PmAuAAcAACBPZmZlbmNlcwEgT2ZmZW5jZXMIHFJlcG9ydHMAAQQFPJEKBAAESQEgVGhlIHByaW1hcnkgc3RydWN0dXJlIHRoYXQgaG9sZHMgYWxsIG9mZmVuY2UgcmVjb3JkcyBrZXllZCBieSByZXBvcnQgaWRlbnRpZmllcnMuAFhDb25jdXJyZW50UmVwb3J0c0luZGV4AQEIBQWZClAEAAQpASBBIHZlY3RvciBvZiByZXBvcnRzIG9mIHRoZSBzYW1lIGtpbmQgdGhhdCBoYXBwZW5lZCBhdCB0aGUgc2FtZSB0aW1lIHNsb3QuAAABMQgAAAAETElkZW50aWZpY2F0aW9uVHVwbGWVCgSYIEZ1bGwgaWRlbnRpZmljYXRpb24gb2YgdGhlIHZhbGlkYXRvci4ACAAAKEhpc3RvcmljYWwBKEhpc3RvcmljYWwISEhpc3RvcmljYWxTZXNzaW9ucwABBAU43QYEAARdASBNYXBwaW5nIGZyb20gaGlzdG9yaWNhbCBzZXNzaW9uIGluZGljZXMgdG8gc2Vzc2lvbi1kYXRhIHJvb3QgaGFzaCBhbmQgdmFsaWRhdG9yIGNvdW50LgAsU3RvcmVkUmFuZ2UAAEgEAATkIFRoZSByYW5nZSBvZiBoaXN0b3JpY2FsIHNlc3Npb25zIHdlIHN0b3JlLiBbZmlyc3QsIGxhc3QpAAABNQgAAAAESEZ1bGxJZGVudGlmaWNhdGlvblkKBJggRnVsbCBpZGVudGlmaWNhdGlvbiBvZiB0aGUgdmFsaWRhdG9yLgAhAAAcU2Vzc2lvbgEcU2Vzc2lvbiAoVmFsaWRhdG9ycwEAqAQABHwgVGhlIGN1cnJlbnQgc2V0IG9mIHZhbGlkYXRvcnMuADBDdXJyZW50SW5kZXgBADgQAAAAAAR4IEN1cnJlbnQgaW5kZXggb2YgdGhlIHNlc3Npb24uADRRdWV1ZWRDaGFuZ2VkAQCYBAAIOQEgVHJ1ZSBpZiB0aGUgdW5kZXJseWluZyBlY29ub21pYyBpZGVudGl0aWVzIG9yIHdlaWdodGluZyBiZWhpbmQgdGhlIHZhbGlkYXRvcnOkIGhhcyBjaGFuZ2VkIGluIHRoZSBxdWV1ZWQgdmFsaWRhdG9yIHNldC4AKFF1ZXVlZEtleXMBAJ0KBAAIPQEgVGhlIHF1ZXVlZCBrZXlzIGZvciB0aGUgbmV4dCBzZXNzaW9uLiBXaGVuIHRoZSBuZXh0IHNlc3Npb24gYmVnaW5zLCB0aGVzZSBrZXlz4CB3aWxsIGJlIHVzZWQgdG8gZGV0ZXJtaW5lIHRoZSB2YWxpZGF0b3IncyBzZXNzaW9uIGtleXMuAEhEaXNhYmxlZFZhbGlkYXRvcnMBAKUKBAAUgCBJbmRpY2VzIG9mIGRpc2FibGVkIHZhbGlkYXRvcnMuAD0BIFRoZSB2ZWMgaXMgYWx3YXlzIGtlcHQgc29ydGVkIHNvIHRoYXQgd2UgY2FuIGZpbmQgd2hldGhlciBhIGdpdmVuIHZhbGlkYXRvciBpcz0BIGRpc2FibGVkIHVzaW5nIGJpbmFyeSBzZWFyY2guIEl0IGdldHMgY2xlYXJlZCB3aGVuIGBvbl9zZXNzaW9uX2VuZGluZ2AgcmV0dXJuc2QgYSBuZXcgc2V0IG9mIGlkZW50aXRpZXMuACBOZXh0S2V5cwABBAUEAQEEAAScIFRoZSBuZXh0IHNlc3Npb24ga2V5cyBmb3IgYSB2YWxpZGF0b3IuACBLZXlPd25lcgABBAWxCgQEAAQJASBUaGUgb3duZXIgb2YgYSBrZXkuIFRoZSBrZXkgaXMgdGhlIGBLZXlUeXBlSWRgICsgdGhlIGVuY29kZWQga2V5LgBERXh0ZXJuYWxseVNldEtleXMAAQQFBBAEABAxASBBY2NvdW50cyB3aG9zZSBrZXlzIHdlcmUgc2V0IHZpYSBgU2Vzc2lvbkludGVyZmFjZWAgKGV4dGVybmFsIHBhdGgpIHdpdGhvdXQ5ASBpbmNyZW1lbnRpbmcgdGhlIGNvbnN1bWVyIHJlZmVyZW5jZSBvciBwbGFjaW5nIGEga2V5IGRlcG9zaXQuIGBkb19wdXJnZV9rZXlzYDkBIG9ubHkgZGVjcmVtZW50cyBjb25zdW1lcnMgZm9yIGFjY291bnRzIHRoYXQgd2VyZSByZWdpc3RlcmVkIHRocm91Z2ggdGhlIGxvY2FsQCBzZXNzaW9uIHBhbGxldC4AAfwAATkIAAQoS2V5RGVwb3NpdKRAAAAAAAAAAAAAAAAAAAAAAASkIFRoZSBhbW91bnQgdG8gYmUgaGVsZCB3aGVuIHNldHRpbmcga2V5cy4AAbkKAAgsVmFsaWRhdG9ySWQEBHQgQSBzdGFibGUgSUQgZm9yIGEgdmFsaWRhdG9yLhBLZXlzAQEEKCBUaGUga2V5cy4ACQAAHEdyYW5kcGEBHEdyYW5kcGEcFFN0YXRlAQC9CgQABJAgU3RhdGUgb2YgdGhlIGN1cnJlbnQgYXV0aG9yaXR5IHNldC4ANFBlbmRpbmdDaGFuZ2UAAMEKBAAExCBQZW5kaW5nIGNoYW5nZTogKHNpZ25hbGVkIGF0LCBzY2hlZHVsZWQgY2hhbmdlKS4AKE5leHRGb3JjZWQAADgEAAS8IG5leHQgYmxvY2sgbnVtYmVyIHdoZXJlIHdlIGNhbiBmb3JjZSBhIGNoYW5nZS4AHFN0YWxsZWQAAEgEAASQIGB0cnVlYCBpZiB3ZSBhcmUgY3VycmVudGx5IHN0YWxsZWQuADBDdXJyZW50U2V0SWQBACggAAAAAAAAAAAIXQEgVGhlIG51bWJlciBvZiBjaGFuZ2VzIChib3RoIGluIHRlcm1zIG9mIGtleXMgYW5kIHVuZGVybHlpbmcgZWNvbm9taWMgcmVzcG9uc2liaWxpdGllcynEIGluIHRoZSAic2V0IiBvZiBHcmFuZHBhIHZhbGlkYXRvcnMgZnJvbSBnZW5lc2lzLgAwU2V0SWRTZXNzaW9uAAEEBSg4BAAoWQEgQSBtYXBwaW5nIGZyb20gZ3JhbmRwYSBzZXQgSUQgdG8gdGhlIGluZGV4IG9mIHRoZSAqbW9zdCByZWNlbnQqIHNlc3Npb24gZm9yIHdoaWNoIGl0c2ggbWVtYmVycyB3ZXJlIHJlc3BvbnNpYmxlLgBFASBUaGlzIGlzIG9ubHkgdXNlZCBmb3IgdmFsaWRhdGluZyBlcXVpdm9jYXRpb24gcHJvb2ZzLiBBbiBlcXVpdm9jYXRpb24gcHJvb2YgbXVzdE0BIGNvbnRhaW5zIGEga2V5LW93bmVyc2hpcCBwcm9vZiBmb3IgYSBnaXZlbiBzZXNzaW9uLCB0aGVyZWZvcmUgd2UgbmVlZCBhIHdheSB0byB0aWVFASB0b2dldGhlciBzZXNzaW9ucyBhbmQgR1JBTkRQQSBzZXQgaWRzLCBpLmUuIHdlIG5lZWQgdG8gdmFsaWRhdGUgdGhhdCBhIHZhbGlkYXRvckEBIHdhcyB0aGUgb3duZXIgb2YgYSBnaXZlbiBrZXkgb24gYSBnaXZlbiBzZXNzaW9uLCBhbmQgd2hhdCB0aGUgYWN0aXZlIHNldCBJRCB3YXNUIGR1cmluZyB0aGF0IHNlc3Npb24uALggVFdPWC1OT1RFOiBgU2V0SWRgIGlzIG5vdCB1bmRlciB1c2VyIGNvbnRyb2wuACxBdXRob3JpdGllcwEAxQoEAASEIFRoZSBjdXJyZW50IGxpc3Qgb2YgYXV0aG9yaXRpZXMuAAEdAQABPQgADDhNYXhBdXRob3JpdGllczgQoIYBAARcIE1heCBBdXRob3JpdGllcyBpbiB1c2UANE1heE5vbWluYXRvcnM4EAACAAAE1CBUaGUgbWF4aW11bSBudW1iZXIgb2Ygbm9taW5hdG9ycyBmb3IgZWFjaCB2YWxpZGF0b3IuAFhNYXhTZXRJZFNlc3Npb25FbnRyaWVzKCCoAAAAAAAAABg5ASBUaGUgbWF4aW11bSBudW1iZXIgb2YgZW50cmllcyB0byBrZWVwIGluIHRoZSBzZXQgaWQgdG8gc2Vzc2lvbiBpbmRleCBtYXBwaW5nLgAxASBTaW5jZSB0aGUgYFNldElkU2Vzc2lvbmAgbWFwIGlzIG9ubHkgdXNlZCBmb3IgdmFsaWRhdGluZyBlcXVpdm9jYXRpb25zIHRoaXMpASB2YWx1ZSBzaG91bGQgcmVsYXRlIHRvIHRoZSBib25kaW5nIGR1cmF0aW9uIG9mIHdoYXRldmVyIHN0YWtpbmcgc3lzdGVtIGlzNQEgYmVpbmcgdXNlZCAoaWYgYW55KS4gSWYgZXF1aXZvY2F0aW9uIGhhbmRsaW5nIGlzIG5vdCBlbmFibGVkIHRoZW4gdGhpcyB2YWx1ZTQgY2FuIGJlIHplcm8uAAHJCgAENEtleU93bmVyUHJvb2Z8DBUBIFRoZSBwcm9vZiBvZiBrZXkgb3duZXJzaGlwLCB1c2VkIGZvciB2YWxpZGF0aW5nIGVxdWl2b2NhdGlvbiByZXBvcnRz/CBUaGUgcHJvb2YgaW5jbHVkZSB0aGUgc2Vzc2lvbiBpbmRleCBhbmQgdmFsaWRhdG9yIGNvdW50IG9mIHRoZbAgc2Vzc2lvbiBhdCB3aGljaCB0aGUgZXF1aXZvY2F0aW9uIG9jY3VycmVkLgALAABIQXV0aG9yaXR5RGlzY292ZXJ5AUhBdXRob3JpdHlEaXNjb3ZlcnkIEEtleXMBAM0KBAAEjCBLZXlzIG9mIHRoZSBjdXJyZW50IGF1dGhvcml0eSBzZXQuACBOZXh0S2V5cwEAzQoEAASAIEtleXMgb2YgdGhlIG5leHQgYXV0aG9yaXR5IHNldC4AAAAAAAAADQAAIFRyZWFzdXJ5ASBUcmVhc3VyeRw0UHJvcG9zYWxDb3VudAEAOBAAAAAAEEEBIERFUFJFQ0FURUQ6IGFzc29jaWF0ZWQgd2l0aCBgc3BlbmRfbG9jYWxgIGNhbGwgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBNYXkgMjAyNS5pASBSZWZlciB0byA8aHR0cHM6Ly9naXRodWIuY29tL3Bhcml0eXRlY2gvcG9sa2Fkb3Qtc2RrL3B1bGwvNTk2MT4gZm9yIG1pZ3JhdGlvbiB0byBgc3BlbmRgLgCkIE51bWJlciBvZiBwcm9wb3NhbHMgdGhhdCBoYXZlIGJlZW4gbWFkZS4AJFByb3Bvc2FscwABBAU41QoEABBBASBERVBSRUNBVEVEOiBhc3NvY2lhdGVkIHdpdGggYHNwZW5kX2xvY2FsYCBjYWxsIGFuZCB3aWxsIGJlIHJlbW92ZWQgaW4gTWF5IDIwMjUuaQEgUmVmZXIgdG8gPGh0dHBzOi8vZ2l0aHViLmNvbS9wYXJpdHl0ZWNoL3BvbGthZG90LXNkay9wdWxsLzU5NjE+IGZvciBtaWdyYXRpb24gdG8gYHNwZW5kYC4AfCBQcm9wb3NhbHMgdGhhdCBoYXZlIGJlZW4gbWFkZS4ALERlYWN0aXZhdGVkAQCkQAAAAAAAAAAAAAAAAAAAAAAE8CBUaGUgYW1vdW50IHdoaWNoIGhhcyBiZWVuIHJlcG9ydGVkIGFzIGluYWN0aXZlIHRvIEN1cnJlbmN5LgAkQXBwcm92YWxzAQDZCgQAEEEBIERFUFJFQ0FURUQ6IGFzc29jaWF0ZWQgd2l0aCBgc3BlbmRfbG9jYWxgIGNhbGwgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBNYXkgMjAyNS5pASBSZWZlciB0byA8aHR0cHM6Ly9naXRodWIuY29tL3Bhcml0eXRlY2gvcG9sa2Fkb3Qtc2RrL3B1bGwvNTk2MT4gZm9yIG1pZ3JhdGlvbiB0byBgc3BlbmRgLgD4IFByb3Bvc2FsIGluZGljZXMgdGhhdCBoYXZlIGJlZW4gYXBwcm92ZWQgYnV0IG5vdCB5ZXQgYXdhcmRlZC4AKFNwZW5kQ291bnQBADgQAAAAAASkIFRoZSBjb3VudCBvZiBzcGVuZHMgdGhhdCBoYXZlIGJlZW4gbWFkZS4AGFNwZW5kcwABBAU43QoEAATQIFNwZW5kcyB0aGF0IGhhdmUgYmVlbiBhcHByb3ZlZCBhbmQgYmVpbmcgcHJvY2Vzc2VkLgA8TGFzdFNwZW5kUGVyaW9kAAA4BAAE1CBUaGUgYmxvY2tudW1iZXIgZm9yIHRoZSBsYXN0IHRyaWdnZXJlZCBzcGVuZCBwZXJpb2QuAAFJAQgDApUBVGhlIGBzcGVuZF9sb2NhbGAgY2FsbCB3aWxsIGJlIHJlbW92ZWQgYnkgTWF5IDIwMjUuIE1pZ3JhdGUgdG8gdGhlIG5ldyBmbG93IGFuZCB1c2UgdGhlIGBzcGVuZGAgY2FsbC4ABAK1AVRoZSBgcmVtb3ZlX2FwcHJvdmFsYCBjYWxsIHdpbGwgYmUgcmVtb3ZlZCBieSBNYXkgMjAyNS4gSXQgYXNzb2NpYXRlZCB3aXRoIHRoZSBkZXByZWNhdGVkIGBzcGVuZF9sb2NhbGAgY2FsbC4AAUkIABgsU3BlbmRQZXJpb2Q4EABGBQAEiCBQZXJpb2QgYmV0d2VlbiBzdWNjZXNzaXZlIHNwZW5kcy4AEEJ1cm7lChAQJwAABBEBIFBlcmNlbnRhZ2Ugb2Ygc3BhcmUgZnVuZHMgKGlmIGFueSkgdGhhdCBhcmUgYnVybnQgcGVyIHNwZW5kIHBlcmlvZC4AIFBhbGxldElk6QogcHkvdHJzcnkEGQEgVGhlIHRyZWFzdXJ5J3MgcGFsbGV0IGlkLCB1c2VkIGZvciBkZXJpdmluZyBpdHMgc292ZXJlaWduIGFjY291bnQgSUQuADBNYXhBcHByb3ZhbHM4EGQAAAAYQQEgREVQUkVDQVRFRDogYXNzb2NpYXRlZCB3aXRoIGBzcGVuZF9sb2NhbGAgY2FsbCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIE1heSAyMDI1LmkBIFJlZmVyIHRvIDxodHRwczovL2dpdGh1Yi5jb20vcGFyaXR5dGVjaC9wb2xrYWRvdC1zZGsvcHVsbC81OTYxPiBmb3IgbWlncmF0aW9uIHRvIGBzcGVuZGAuABUBIFRoZSBtYXhpbXVtIG51bWJlciBvZiBhcHByb3ZhbHMgdGhhdCBjYW4gd2FpdCBpbiB0aGUgc3BlbmRpbmcgcXVldWUuAE0BIE5PVEU6IFRoaXMgcGFyYW1ldGVyIGlzIGFsc28gdXNlZCB3aXRoaW4gdGhlIEJvdW50aWVzIFBhbGxldCBleHRlbnNpb24gaWYgZW5hYmxlZC4AMFBheW91dFBlcmlvZDgQgMYTAAQZASBUaGUgcGVyaW9kIGR1cmluZyB3aGljaCBhbiBhcHByb3ZlZCB0cmVhc3VyeSBzcGVuZCBoYXMgdG8gYmUgY2xhaW1lZC4ALHBvdF9hY2NvdW50BIBtb2RscHkvdHJzcnkAAAAAAAAAAAAAAAAAAAAAAAAAAASgIEdldHMgdGhpcyBwYWxsZXQncyBkZXJpdmVkIHBvdCBhY2NvdW50LgAB7QoACCRBc3NldEtpbmRNAQQtASBUeXBlIHBhcmFtZXRlciByZXByZXNlbnRpbmcgdGhlIGFzc2V0IGtpbmRzIHRvIGJlIHNwZW50IGZyb20gdGhlIHRyZWFzdXJ5LixCZW5lZmljaWFyeeEBBF0BIFR5cGUgcGFyYW1ldGVyIHVzZWQgdG8gaWRlbnRpZnkgdGhlIGJlbmVmaWNpYXJpZXMgZWxpZ2libGUgdG8gcmVjZWl2ZSB0cmVhc3VyeSBzcGVuZHMuABMAAEBDb252aWN0aW9uVm90aW5nAUBDb252aWN0aW9uVm90aW5nCCRWb3RpbmdGb3IBAQgFBR0H8QrYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACHUBIEFsbCB2b3RpbmcgZm9yIGEgcGFydGljdWxhciB2b3RlciBpbiBhIHBhcnRpY3VsYXIgdm90aW5nIGNsYXNzLiBXZSBzdG9yZSB0aGUgYmFsYW5jZSBmb3IgdGhlnCBudW1iZXIgb2Ygdm90ZXMgdGhhdCB3ZSBoYXZlIHJlY29yZGVkLgA0Q2xhc3NMb2Nrc0ZvcgEBBAUEEQsEAAxpASBUaGUgdm90aW5nIGNsYXNzZXMgd2hpY2ggaGF2ZSBhIG5vbi16ZXJvIGxvY2sgcmVxdWlyZW1lbnQgYW5kIHRoZSBsb2NrIGFtb3VudHMgd2hpY2ggdGhleW0BIHJlcXVpcmUuIFRoZSBhY3R1YWwgYW1vdW50IGxvY2tlZCBvbiBiZWhhbGYgb2YgdGhpcyBwYWxsZXQgc2hvdWxkIGFsd2F5cyBiZSB0aGUgbWF4aW11bSBvZiwgdGhpcyBsaXN0LgAB6QEAAU0IAAggTWF4Vm90ZXM4EAACAAAQ8CBUaGUgbWF4aW11bSBudW1iZXIgb2YgY29uY3VycmVudCB2b3RlcyBhbiBhY2NvdW50IG1heSBoYXZlLgBVASBBbHNvIHVzZWQgdG8gY29tcHV0ZSB3ZWlnaHQsIGFuIG92ZXJseSBsYXJnZSB2YWx1ZSBjYW4gbGVhZCB0byBleHRyaW5zaWNzIHdpdGggbGFyZ2XAIHdlaWdodCBlc3RpbWF0aW9uOiBzZWUgYGRlbGVnYXRlYCBmb3IgaW5zdGFuY2UuAERWb3RlTG9ja2luZ1BlcmlvZDgQwIkBABCQIFRoZSBtaW5pbXVtIHBlcmlvZCBvZiB2b3RlIGxvY2tpbmcuAGUBIEl0IHNob3VsZCBiZSBubyBzaG9ydGVyIHRoYW4gZW5hY3RtZW50IHBlcmlvZCB0byBlbnN1cmUgdGhhdCBpbiB0aGUgY2FzZSBvZiBhbiBhcHByb3ZhbCxJASB0aG9zZSBzdWNjZXNzZnVsIHZvdGVycyBhcmUgbG9ja2VkIGludG8gdGhlIGNvbnNlcXVlbmNlcyB0aGF0IHRoZWlyIHZvdGVzIGVudGFpbC4AAR0LAAAAFAAAJFJlZmVyZW5kYQEkUmVmZXJlbmRhFDxSZWZlcmVuZHVtQ291bnQBADgQAAAAAAQxASBUaGUgbmV4dCBmcmVlIHJlZmVyZW5kdW0gaW5kZXgsIGFrYSB0aGUgbnVtYmVyIG9mIHJlZmVyZW5kYSBzdGFydGVkIHNvIGZhci4ARFJlZmVyZW5kdW1JbmZvRm9yAAEEAjghCwQABLQgSW5mb3JtYXRpb24gY29uY2VybmluZyBhbnkgZ2l2ZW4gcmVmZXJlbmR1bS4AKFRyYWNrUXVldWUBAQQF9QFBCwQAEF0BIFRoZSBzb3J0ZWQgbGlzdCBvZiByZWZlcmVuZGEgcmVhZHkgdG8gYmUgZGVjaWRlZCBidXQgbm90IHlldCBiZWluZyBkZWNpZGVkLCBvcmRlcmVkIGJ5fCBjb252aWN0aW9uLXdlaWdodGVkIGFwcHJvdmFscy4AQQEgVGhpcyBzaG91bGQgYmUgZW1wdHkgaWYgYERlY2lkaW5nQ291bnRgIGlzIGxlc3MgdGhhbiBgVHJhY2tJbmZvOjptYXhfZGVjaWRpbmdgLgA0RGVjaWRpbmdDb3VudAEBBAX1ATgQAAAAAATEIFRoZSBudW1iZXIgb2YgcmVmZXJlbmRhIGJlaW5nIGRlY2lkZWQgY3VycmVudGx5LgAoTWV0YWRhdGFPZgABBAI4PAQAGAUBIFRoZSBtZXRhZGF0YSBpcyBhIGdlbmVyYWwgaW5mb3JtYXRpb24gY29uY2VybmluZyB0aGUgcmVmZXJlbmR1bS5JASBUaGUgYEhhc2hgIHJlZmVycyB0byB0aGUgcHJlaW1hZ2Ugb2YgdGhlIGBQcmVpbWFnZXNgIHByb3ZpZGVyIHdoaWNoIGNhbiBiZSBhIEpTT06IIGR1bXAgb3IgSVBGUyBoYXNoIG9mIGEgSlNPTiBmaWxlLgB1ASBDb25zaWRlciBhIGdhcmJhZ2UgY29sbGVjdGlvbiBmb3IgYSBtZXRhZGF0YSBvZiBmaW5pc2hlZCByZWZlcmVuZHVtcyB0byBgdW5yZXF1ZXN0YCAocmVtb3ZlKUQgbGFyZ2UgcHJlaW1hZ2VzLgABAQIAAVEIABREU3VibWlzc2lvbkRlcG9zaXSkQADkC1QCAAAAAAAAAAAAAAAENQEgVGhlIG1pbmltdW0gYW1vdW50IHRvIGJlIHVzZWQgYXMgYSBkZXBvc2l0IGZvciBhIHB1YmxpYyByZWZlcmVuZHVtIHByb3Bvc2FsLgAkTWF4UXVldWVkOBBkAAAABOQgTWF4aW11bSBzaXplIG9mIHRoZSByZWZlcmVuZHVtIHF1ZXVlIGZvciBhIHNpbmdsZSB0cmFjay4ARFVuZGVjaWRpbmdUaW1lb3V0OBCAEwMACFUBIFRoZSBudW1iZXIgb2YgYmxvY2tzIGFmdGVyIHN1Ym1pc3Npb24gdGhhdCBhIHJlZmVyZW5kdW0gbXVzdCBiZWdpbiBiZWluZyBkZWNpZGVkIGJ5LuQgT25jZSB0aGlzIHBhc3NlcywgdGhlbiBhbnlvbmUgbWF5IGNhbmNlbCB0aGUgcmVmZXJlbmR1bS4ANEFsYXJtSW50ZXJ2YWw4EAEAAAAMXQEgUXVhbnRpemF0aW9uIGxldmVsIGZvciB0aGUgcmVmZXJlbmR1bSB3YWtldXAgc2NoZWR1bGVyLiBBIGhpZ2hlciBudW1iZXIgd2lsbCByZXN1bHQgaW5dASBmZXdlciBzdG9yYWdlIHJlYWRzL3dyaXRlcyBuZWVkZWQgZm9yIHNtYWxsZXIgdm90ZXJzLCBidXQgYWxzbyByZXN1bHQgaW4gZGVsYXlzIHRvIHRoZVUBIGF1dG9tYXRpYyByZWZlcmVuZHVtIHN0YXR1cyBjaGFuZ2VzLiBFeHBsaWNpdCBzZXJ2aWNpbmcgaW5zdHJ1Y3Rpb25zIGFyZSB1bmFmZmVjdGVkLgAYVHJhY2tzTQsVGkAAAGRyb290AAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAACAxqR+jQMAAAAAAAAAAACwBAAAACcGAEA4AABAOAAAApDXPg0AAAAAV0PeEwAAAABUQ94TAAAAAAAAypo7AAAAAABlzR0BAGR3aGl0ZWxpc3RlZF9jYWxsZXIAAAAAAAAAZAAAAABAehDzWgAAAAAAAAAAAAAsAQAAACcGAGQAAABkAAAAAuyXJRAAAAAAe1c8FwAAAABCOS8SAAAAAAIOAIQAAAAAANbmHwEAAAAAOWJ5AgAAAAACAGR3aXNoX2Zvcl9jaGFuZ2UAAAAAAAAAAAAACgAAAACA9CDmtQAAAAAAAAAAAACwBAAAACcGAEA4AABkAAAAApDXPg0AAAAAV0PeEwAAAABUQ94TAAAAAAAAypo7AAAAAABlzR0KAGRzdGFraW5nX2FkbWluAAAAAAAAAAAAAAAACgAAAAAgPYh5LQAAAAAAAAAAAACwBAAAACcGAAgHAABkAAAAAMlDMCQAZc0dAMqaOwJdb3gAAAAAAOgu7QAAAAAAjGiJ//////8LAGR0cmVhc3VyZXIAAAAAAAAAAAAAAAAAAAAACgAAAACgck4YCQAAAAAAAAAAAACwBAAAACcGAMCJAQBAOAAAApDXPg0AAAAAV0PeEwAAAABUQ94TAAAAAAAAypo7AAAAAABlzR0MAGRsZWFzZV9hZG1pbgAAAAAAAAAAAAAAAAAACgAAAAAgPYh5LQAAAAAAAAAAAACwBAAAACcGAAgHAABkAAAAAMlDMCQAZc0dAMqaOwJdb3gAAAAAAOgu7QAAAAAAjGiJ//////8NAGRmZWxsb3dzaGlwX2FkbWluAAAAAAAAAAAACgAAAAAgPYh5LQAAAAAAAAAAAACwBAAAACcGAAgHAABkAAAAAMlDMCQAZc0dAMqaOwJdb3gAAAAAAOgu7QAAAAAAjGiJ//////8OAGRnZW5lcmFsX2FkbWluAAAAAAAAAAAAAAAACgAAAAAgPYh5LQAAAAAAAAAAAACwBAAAACcGAAgHAABkAAAAApDXPg0AAAAAV0PeEwAAAABUQ94TAAAAAAJZovQCAAAAAKMpawUAAAAALmtK/f////8PAGRhdWN0aW9uX2FkbWluAAAAAAAAAAAAAAAACgAAAAAgPYh5LQAAAAAAAAAAAACwBAAAACcGAAgHAABkAAAAApDXPg0AAAAAV0PeEwAAAABUQ94TAAAAAAJZovQCAAAAAKMpawUAAAAALmtK/f////8UAGRyZWZlcmVuZHVtX2NhbmNlbGxlcgAAAAAA6AMAAABAehDzWgAAAAAAAAAAAACwBAAAwIkBAAgHAABkAAAAAMlDMCQAZc0dAMqaOwJdb3gAAAAAAOgu7QAAAAAAjGiJ//////8VAGRyZWZlcmVuZHVtX2tpbGxlcgAAAAAAAAAA6AMAAABAY1K/xgEAAAAAAAAAAACwBAAAACcGAAgHAABkAAAAAMlDMCQAZc0dAMqaOwJdb3gAAAAAAOgu7QAAAAAAjGiJ//////8eAGRzbWFsbF90aXBwZXIAAAAAAAAAAAAAAAAAyAAAAADkC1QCAAAAAAAAAAAAAAAKAAAAwIkBAGQAAAAKAAAAAEmRSRUAZc0dAMqaOwL5uhgAAAAAACpNMQAAAAAAa1nn//////8fAGRiaWdfdGlwcGVyAAAAAAAAAAAAAAAAAAAAZAAAAADodkgXAAAAAAAAAAAAAABkAAAAwIkBAFgCAABkAAAAAEmRSRUAZc0dAMqaOwJpTz8AAAAAADWWfQAAAAAA5TTB//////8gAGRzbWFsbF9zcGVuZGVyAAAAAAAAAAAAAAAAMgAAAAAQpdToAAAAAAAAAAAAAABgCQAAACcGAIBwAABAOAAAAMlDMCQAZc0dAMqaOwJdb3gAAAAAAOgu7QAAAAAAjGiJ//////8hAGRtZWRpdW1fc3BlbmRlcgAAAAAAAAAAAAAAMgAAAAAgSqnRAQAAAAAAAAAAAABgCQAAACcGAADhAABAOAAAAFsB9jAAZc0dAMqaOwIRYdsAAAAAAL/RqgEAAAAAIJcq//////8iAGRiaWdfc3BlbmRlcgAAAAAAAAAAAAAAAAAAMgAAAABAlFKjAwAAAAAAAAAAAABgCQAAACcGAMCJAQBAOAAAAADKmjsAZc0dAMqaOwJBPLABAAAAAHVdNAMAAAAARdFl/v////8MSCBBIGxpc3Qgb2YgdHJhY2tzLgBdASBOb3RlOiBpZiB0aGUgdHJhY2tzIGFyZSBkeW5hbWljLCB0aGUgdmFsdWUgaW4gdGhlIHN0YXRpYyBtZXRhZGF0YSBtaWdodCBiZSBpbmFjY3VyYXRlLgABZQsADCxSdW50aW1lQ2FsbCAAFFZvdGVzpATMIFRoZSBjb3VudGluZyB0eXBlIGZvciB2b3Rlcy4gVXN1YWxseSBqdXN0IGJhbGFuY2UuFFRhbGx5VQgETCBUaGUgdGFsbHlpbmcgdHlwZS4AFQAAHE9yaWdpbnMAAAAAAAAAFgAAJFdoaXRlbGlzdAEkV2hpdGVsaXN0BDxXaGl0ZWxpc3RlZENhbGwAAQQFPBAEAAAAATECAAFZCAAAAWkLAAQsUnVudGltZUNhbGwgBGwgVGhlIG92ZXJhcmNoaW5nIGNhbGwgdHlwZS4AFwAAGENsYWltcwEYQ2xhaW1zFBhDbGFpbXMAAQQGRQKkBAAAABRUb3RhbAEApEAAAAAAAAAAAAAAAAAAAAAAAAAcVmVzdGluZwABBAZFAk0CBAAQeCBWZXN0aW5nIHNjaGVkdWxlIGZvciBhIGNsYWltLg0BIEZpcnN0IGJhbGFuY2UgaXMgdGhlIHRvdGFsIGFtb3VudCB0aGF0IHNob3VsZCBiZSBoZWxkIGZvciB2ZXN0aW5nLuQgU2Vjb25kIGJhbGFuY2UgaXMgaG93IG11Y2ggc2hvdWxkIGJlIHVubG9ja2VkIHBlciBibG9jay7MIFRoZSBibG9jayBudW1iZXIgaXMgd2hlbiB0aGUgdmVzdGluZyBzaG91bGQgc3RhcnQuABxTaWduaW5nAAEEBkUCVQIEAATAIFRoZSBzdGF0ZW1lbnQga2luZCB0aGF0IG11c3QgYmUgc2lnbmVkLCBpZiBhbnkuACRQcmVjbGFpbXMAAQQGBEUCBAAELQEgUHJlLWNsYWltZWQgRXRoZXJldW0gYWNjb3VudHMsIGJ5IHRoZSBBY2NvdW50IElEIHRoYXQgdGhleSBhcmUgY2xhaW1lZCB0by4AATkCAAFpCAAEGFByZWZpeBiIhFBheSBET1RzIHRvIHRoZSBQb2xrYWRvdCBhY2NvdW50OgAAAW0LAAAAGAAAHFZlc3RpbmcBHFZlc3RpbmcIHFZlc3RpbmcAAQQCBHELBAAE2CBJbmZvcm1hdGlvbiByZWdhcmRpbmcgdGhlIHZlc3Rpbmcgb2YgYSBnaXZlbiBhY2NvdW50LgA4U3RvcmFnZVZlcnNpb24BAHkLBAAMfCBTdG9yYWdlIHZlcnNpb24gb2YgdGhlIHBhbGxldC4AMQEgTmV3IG5ldHdvcmtzIHN0YXJ0IHdpdGggbGF0ZXN0IHZlcnNpb24sIGFzIGRldGVybWluZWQgYnkgdGhlIGdlbmVzaXMgYnVpbGQuAAFZAgABbQgACERNaW5WZXN0ZWRUcmFuc2ZlcqRAAOQLVAIAAAAAAAAAAAAAAAToIFRoZSBtaW5pbXVtIGFtb3VudCB0cmFuc2ZlcnJlZCB0byBjYWxsIGB2ZXN0ZWRfdHJhbnNmZXJgLgBMTWF4VmVzdGluZ1NjaGVkdWxlczgQHAAAAAAAAX0LAAAAGQAAHFV0aWxpdHkAAWECAAFxCAAETGJhdGNoZWRfY2FsbHNfbGltaXQ4EKoqAAAEqCBUaGUgbGltaXQgb24gdGhlIG51bWJlciBvZiBiYXRjaGVkIGNhbGxzLgABgQsACCxSdW50aW1lQ2FsbCAEbCBUaGUgb3ZlcmFyY2hpbmcgY2FsbCB0eXBlLjRQYWxsZXRzT3JpZ2luBQIE8CBUaGUgY2FsbGVyIG9yaWdpbiwgb3ZlcmFyY2hpbmcgdHlwZSBvZiBhbGwgcGFsbGV0cyBvcmlnaW5zLgAaAAAUUHJveHkBFFByb3h5CBxQcm94aWVzAQEEBQSFC0QAAAAAAAAAAAAAAAAAAAAAAAhFASBUaGUgc2V0IG9mIGFjY291bnQgcHJveGllcy4gTWFwcyB0aGUgYWNjb3VudCB3aGljaCBoYXMgZGVsZWdhdGVkIHRvIHRoZSBhY2NvdW50cyEBIHdoaWNoIGFyZSBiZWluZyBkZWxlZ2F0ZWQgdG8sIHRvZ2V0aGVyIHdpdGggdGhlIGFtb3VudCBoZWxkIG9uIGRlcG9zaXQuADRBbm5vdW5jZW1lbnRzAQEEBQSVC0QAAAAAAAAAAAAAAAAAAAAAAASsIFRoZSBhbm5vdW5jZW1lbnRzIG1hZGUgYnkgdGhlIHByb3h5IChrZXkpLgABaQIAAXUIABhAUHJveHlEZXBvc2l0QmFzZaRAAISylS4AAAAAAAAAAAAAABARASBUaGUgYmFzZSBhbW91bnQgb2YgY3VycmVuY3kgbmVlZGVkIHRvIHJlc2VydmUgZm9yIGNyZWF0aW5nIGEgcHJveHkuAAEBIFRoaXMgaXMgaGVsZCBmb3IgYW4gYWRkaXRpb25hbCBzdG9yYWdlIGl0ZW0gd2hvc2UgdmFsdWUgc2l6ZSBpcyUBIGBzaXplb2YoQmFsYW5jZSlgIGJ5dGVzIGFuZCB3aG9zZSBrZXkgc2l6ZSBpcyBgc2l6ZW9mKEFjY291bnRJZClgIGJ5dGVzLgBIUHJveHlEZXBvc2l0RmFjdG9ypECAZqsTAAAAAAAAAAAAAAAAFLwgVGhlIGFtb3VudCBvZiBjdXJyZW5jeSBuZWVkZWQgcGVyIHByb3h5IGFkZGVkLgA1ASBUaGlzIGlzIGhlbGQgZm9yIGFkZGluZyAzMiBieXRlcyBwbHVzIGFuIGluc3RhbmNlIG9mIGBQcm94eVR5cGVgIG1vcmUgaW50byBhYQEgcHJlLWV4aXN0aW5nIHN0b3JhZ2UgdmFsdWUuIFRodXMsIHdoZW4gY29uZmlndXJpbmcgYFByb3h5RGVwb3NpdEZhY3RvcmAgb25lIHNob3VsZCB0YWtl9CBpbnRvIGFjY291bnQgYDMyICsgcHJveHlfdHlwZS5lbmNvZGUoKS5sZW4oKWAgYnl0ZXMgb2YgZGF0YS4AKE1heFByb3hpZXM4ECAAAAAE8CBUaGUgbWF4aW11bSBhbW91bnQgb2YgcHJveGllcyBhbGxvd2VkIGZvciBhIHNpbmdsZSBhY2NvdW50LgAoTWF4UGVuZGluZzgQIAAAAARFASBUaGUgbWF4aW11bSBhbW91bnQgb2YgdGltZS1kZWxheWVkIGFubm91bmNlbWVudHMgdGhhdCBhcmUgYWxsb3dlZCB0byBiZSBwZW5kaW5nLgBcQW5ub3VuY2VtZW50RGVwb3NpdEJhc2WkQACEspUuAAAAAAAAAAAAAAAQMQEgVGhlIGJhc2UgYW1vdW50IG9mIGN1cnJlbmN5IG5lZWRlZCB0byByZXNlcnZlIGZvciBjcmVhdGluZyBhbiBhbm5vdW5jZW1lbnQuAEkBIFRoaXMgaXMgaGVsZCB3aGVuIGEgbmV3IHN0b3JhZ2UgaXRlbSBob2xkaW5nIGEgYEJhbGFuY2VgIGlzIGNyZWF0ZWQgKHR5cGljYWxseSAxNiAgYnl0ZXMpLgBkQW5ub3VuY2VtZW50RGVwb3NpdEZhY3RvcqRAAM1WJwAAAAAAAAAAAAAAABDUIFRoZSBhbW91bnQgb2YgY3VycmVuY3kgbmVlZGVkIHBlciBhbm5vdW5jZW1lbnQgbWFkZS4AWQEgVGhpcyBpcyBoZWxkIGZvciBhZGRpbmcgYW4gYEFjY291bnRJZGAsIGBIYXNoYCBhbmQgYEJsb2NrTnVtYmVyYCAodHlwaWNhbGx5IDY4IGJ5dGVzKYwgaW50byBhIHByZS1leGlzdGluZyBzdG9yYWdlIHZhbHVlLgABpQsACCxSdW50aW1lQ2FsbCAEbCBUaGUgb3ZlcmFyY2hpbmcgY2FsbCB0eXBlLiRQcm94eVR5cGVxAhBVASBBIGtpbmQgb2YgcHJveHk7IHNwZWNpZmllZCB3aXRoIHRoZSBwcm94eSBhbmQgcGFzc2VkIGluIHRvIHRoZSBgSXNQcm94eWFibGVgIGZpbHRlci5RASBUaGUgaW5zdGFuY2UgZmlsdGVyIGRldGVybWluZXMgd2hldGhlciBhIGdpdmVuIGNhbGwgbWF5IGJlIHByb3hpZWQgdW5kZXIgdGhpcyB0eXBlLgBNASBJTVBPUlRBTlQ6IGBEZWZhdWx0YCBtdXN0IGJlIHByb3ZpZGVkIGFuZCBNVVNUIEJFIHRoZSB0aGUgKm1vc3QgcGVybWlzc2l2ZSogdmFsdWUuCBgJ14NGcnoO9YwPoDuvoyPLxRSI2SoapxN7A7+1DvwXRGNoZWNrX3Blcm1pc3Npb25zCBBjYWxsIChwcm94eV90eXBlcQKYBPQgQ2hlY2sgaWYgYSBgUnVudGltZUNhbGxgIGlzIGFsbG93ZWQgZm9yIGEgZ2l2ZW4gYFByb3h5VHlwZWAuABgJ14NGcnoO9YwPoDuvoyMXFLBgfWKvCjs7CtLF1VxYLGlzX3N1cGVyc2V0CCB0b19jaGVja3ECHGFnYWluc3RxApgE9CBDaGVjayBpZiBvbmUgYFByb3h5VHlwZWAgaXMgYSBzdWJzZXQgb2YgYW5vdGhlciBgUHJveHlUeXBlYC4AHQAAIE11bHRpc2lnASBNdWx0aXNpZwQkTXVsdGlzaWdzAAEIBQLFBqkLBAAElCBUaGUgc2V0IG9mIG9wZW4gbXVsdGlzaWcgb3BlcmF0aW9ucy4AAXUCAAF9CAAMLERlcG9zaXRCYXNlpEAAjGHFLgAAAAAAAAAAAAAAGFkBIFRoZSBiYXNlIGFtb3VudCBvZiBjdXJyZW5jeSBuZWVkZWQgdG8gcmVzZXJ2ZSBmb3IgY3JlYXRpbmcgYSBtdWx0aXNpZyBleGVjdXRpb24gb3IgdG+EIHN0b3JlIGEgZGlzcGF0Y2ggY2FsbCBmb3IgbGF0ZXIuAAEBIFRoaXMgaXMgaGVsZCBmb3IgYW4gYWRkaXRpb25hbCBzdG9yYWdlIGl0ZW0gd2hvc2UgdmFsdWUgc2l6ZSBpczEBIGA0ICsgc2l6ZW9mKChCbG9ja051bWJlciwgQmFsYW5jZSwgQWNjb3VudElkKSlgIGJ5dGVzIGFuZCB3aG9zZSBrZXkgc2l6ZSBpc4AgYDMyICsgc2l6ZW9mKEFjY291bnRJZClgIGJ5dGVzLgA0RGVwb3NpdEZhY3RvcqRAANASEwAAAAAAAAAAAAAAAAxVASBUaGUgYW1vdW50IG9mIGN1cnJlbmN5IG5lZWRlZCBwZXIgdW5pdCB0aHJlc2hvbGQgd2hlbiBjcmVhdGluZyBhIG11bHRpc2lnIGV4ZWN1dGlvbi4AJQEgVGhpcyBpcyBoZWxkIGZvciBhZGRpbmcgMzIgYnl0ZXMgbW9yZSBpbnRvIGEgcHJlLWV4aXN0aW5nIHN0b3JhZ2UgdmFsdWUuADhNYXhTaWduYXRvcmllczgQZAAAAATsIFRoZSBtYXhpbXVtIGFtb3VudCBvZiBzaWduYXRvcmllcyBhbGxvd2VkIGluIHRoZSBtdWx0aXNpZy4AAbELAAQsUnVudGltZUNhbGwgBGwgVGhlIG92ZXJhcmNoaW5nIGNhbGwgdHlwZS4AHgAAIEJvdW50aWVzASBCb3VudGllcxAsQm91bnR5Q291bnQBADgQAAAAAATAIE51bWJlciBvZiBib3VudHkgcHJvcG9zYWxzIHRoYXQgaGF2ZSBiZWVuIG1hZGUuACBCb3VudGllcwABBAU4tQsEAAR4IEJvdW50aWVzIHRoYXQgaGF2ZSBiZWVuIG1hZGUuAEhCb3VudHlEZXNjcmlwdGlvbnMAAQQFOL0LBAAEgCBUaGUgZGVzY3JpcHRpb24gb2YgZWFjaCBib3VudHkuADxCb3VudHlBcHByb3ZhbHMBANkKBAAE7CBCb3VudHkgaW5kaWNlcyB0aGF0IGhhdmUgYmVlbiBhcHByb3ZlZCBidXQgbm90IHlldCBmdW5kZWQuAAGBAgABgQgAJERCb3VudHlEZXBvc2l0QmFzZaRAAOQLVAIAAAAAAAAAAAAAAAToIFRoZSBhbW91bnQgaGVsZCBvbiBkZXBvc2l0IGZvciBwbGFjaW5nIGEgYm91bnR5IHByb3Bvc2FsLgBgQm91bnR5RGVwb3NpdFBheW91dERlbGF5OBAAAAAABFkBIFRoZSBkZWxheSBwZXJpb2QgZm9yIHdoaWNoIGEgYm91bnR5IGJlbmVmaWNpYXJ5IG5lZWQgdG8gd2FpdCBiZWZvcmUgY2xhaW0gdGhlIHBheW91dC4ASEJvdW50eVVwZGF0ZVBlcmlvZDgQAAQXAxj0IFRoZSB0aW1lIGxpbWl0IGZvciBhIGN1cmF0b3IgdG8gYWN0IGJlZm9yZSBhIGJvdW50eSBleHBpcmVzLgBVASBUaGUgcGVyaW9kIHRoYXQgc3RhcnRzIHdoZW4gYSBjdXJhdG9yIGlzIGFwcHJvdmVkLCBkdXJpbmcgd2hpY2ggdGhleSBtdXN0IGV4ZWN1dGUgb3JVASB1cGRhdGUgdGhlIGJvdW50eSB2aWEgYGV4dGVuZF9ib3VudHlfZXhwaXJ5YC4gSWYgbWlzc2VkLCB0aGUgYm91bnR5IGV4cGlyZXMsIGFuZCB0aGVVASBjdXJhdG9yIG1heSBiZSBzbGFzaGVkLiBJZiBgQmxvY2tOdW1iZXJGb3I6Ok1BWGAsIGJvdW50aWVzIHN0YXkgYWN0aXZlIGluZGVmaW5pdGVseSy4IHJlbW92aW5nIHRoZSBuZWVkIGZvciBgZXh0ZW5kX2JvdW50eV9leHBpcnlgLgBgQ3VyYXRvckRlcG9zaXRNdWx0aXBsaWVy5QoQIKEHABAZASBUaGUgY3VyYXRvciBkZXBvc2l0IGlzIGNhbGN1bGF0ZWQgYXMgYSBwZXJjZW50YWdlIG9mIHRoZSBjdXJhdG9yIGZlZS4AOQEgVGhpcyBkZXBvc2l0IGhhcyBvcHRpb25hbCB1cHBlciBhbmQgbG93ZXIgYm91bmRzIHdpdGggYEN1cmF0b3JEZXBvc2l0TWF4YCBhbmRUIGBDdXJhdG9yRGVwb3NpdE1pbmAuAERDdXJhdG9yRGVwb3NpdE1heOhEAQAgSqnRAQAAAAAAAAAAAAAESQEgTWF4aW11bSBhbW91bnQgb2YgZnVuZHMgdGhhdCBzaG91bGQgYmUgcGxhY2VkIGluIGEgZGVwb3NpdCBmb3IgbWFraW5nIGEgcHJvcG9zYWwuAERDdXJhdG9yRGVwb3NpdE1pbuhEAQDodkgXAAAAAAAAAAAAAAAESQEgTWluaW11bSBhbW91bnQgb2YgZnVuZHMgdGhhdCBzaG91bGQgYmUgcGxhY2VkIGluIGEgZGVwb3NpdCBmb3IgbWFraW5nIGEgcHJvcG9zYWwuAEhCb3VudHlWYWx1ZU1pbmltdW2kQADodkgXAAAAAAAAAAAAAAAEcCBNaW5pbXVtIHZhbHVlIGZvciBhIGJvdW50eS4ASERhdGFEZXBvc2l0UGVyQnl0ZaRAAOH1BQAAAAAAAAAAAAAAAARhASBUaGUgYW1vdW50IGhlbGQgb24gZGVwb3NpdCBwZXIgYnl0ZSB3aXRoaW4gdGhlIHRpcCByZXBvcnQgcmVhc29uIG9yIGJvdW50eSBkZXNjcmlwdGlvbi4ATE1heGltdW1SZWFzb25MZW5ndGg4EABAAAAMiCBNYXhpbXVtIGFjY2VwdGFibGUgcmVhc29uIGxlbmd0aC4AZQEgQmVuY2htYXJrcyBkZXBlbmQgb24gdGhpcyB2YWx1ZSwgYmUgc3VyZSB0byB1cGRhdGUgd2VpZ2h0cyBmaWxlIHdoZW4gY2hhbmdpbmcgdGhpcyB2YWx1ZQABwQsAAAAiAAA0Q2hpbGRCb3VudGllcwE0Q2hpbGRCb3VudGllcxxAQ2hpbGRCb3VudHlDb3VudAEAOBAAAAAACG0BIERFUFJFQ0FURUQ6IFJlcGxhY2VkIHdpdGggYFBhcmVudFRvdGFsQ2hpbGRCb3VudGllc2Agc3RvcmFnZSBpdGVtIGtlZXBpbmcgZGVkaWNhdGVkIGNvdW50c1UBIGZvciBlYWNoIHBhcmVudCBib3VudHkuIE51bWJlciBvZiB0b3RhbCBjaGlsZCBib3VudGllcy4gV2lsbCBiZSByZW1vdmVkIGluIE1heSAyMDI1LgBMUGFyZW50Q2hpbGRCb3VudGllcwEBBAU4OBAAAAAACMwgTnVtYmVyIG9mIGFjdGl2ZSBjaGlsZCBib3VudGllcyBwZXIgcGFyZW50IGJvdW50eS7gIE1hcCBvZiBwYXJlbnQgYm91bnR5IGluZGV4IHRvIG51bWJlciBvZiBjaGlsZCBib3VudGllcy4AYFBhcmVudFRvdGFsQ2hpbGRCb3VudGllcwEBBAU4OBAAAAAABEEBIE51bWJlciBvZiB0b3RhbCBjaGlsZCBib3VudGllcyBwZXIgcGFyZW50IGJvdW50eSwgaW5jbHVkaW5nIGNvbXBsZXRlZCBib3VudGllcy4ANENoaWxkQm91bnRpZXMAAQgFBUjFCwQABJQgQ2hpbGQgYm91bnRpZXMgdGhhdCBoYXZlIGJlZW4gYWRkZWQuAGRDaGlsZEJvdW50eURlc2NyaXB0aW9uc1YxAAEIBQVIvQsEAAwpASBUaGUgZGVzY3JpcHRpb24gb2YgZWFjaCBjaGlsZC1ib3VudHkuIEluZGV4ZWQgYnkgYChwYXJlbnRfaWQsIGNoaWxkX2lkKWAuAG0BIFRoaXMgaXRlbSByZXBsYWNlcyB0aGUgYENoaWxkQm91bnR5RGVzY3JpcHRpb25zYCBzdG9yYWdlIGl0ZW0gZnJvbSB0aGUgVjAgc3RvcmFnZSB2ZXJzaW9uLgBQVjBUb1YxQ2hpbGRCb3VudHlJZHMAAQQFOEgEABRdASBUaGUgbWFwcGluZyBvZiB0aGUgY2hpbGQgYm91bnR5IGlkcyBmcm9tIHN0b3JhZ2UgdmVyc2lvbiBgVjBgIHRvIHRoZSBuZXcgYFYxYCB2ZXJzaW9uLgBtASBUaGUgYFYwYCBpZHMgYmFzZWQgb24gdG90YWwgY2hpbGQgYm91bnR5IGNvdW50IFtgQ2hpbGRCb3VudHlDb3VudGBdYC4gVGhlIGBWMWAgdmVyc2lvbiBpZHNBASBiYXNlZCBvbiB0aGUgY2hpbGQgYm91bnR5IGNvdW50IHBlciBwYXJlbnQgYm91bnR5IFtgUGFyZW50VG90YWxDaGlsZEJvdW50aWVzYF0uZQEgVGhlIGl0ZW0gaW50ZW5kZWQgc29sZWx5IGZvciBjbGllbnQgY29udmVuaWVuY2UgYW5kIG5vdCB1c2VkIGluIHRoZSBwYWxsZXQncyBjb3JlIGxvZ2ljLgBMQ2hpbGRyZW5DdXJhdG9yRmVlcwEBBAU4pEAAAAAAAAAAAAAAAAAAAAAABAEBIFRoZSBjdW11bGF0aXZlIGNoaWxkLWJvdW50eSBjdXJhdG9yIGZlZSBmb3IgZWFjaCBwYXJlbnQgYm91bnR5LgABhQIAAYUIAAhkTWF4QWN0aXZlQ2hpbGRCb3VudHlDb3VudDgQZAAAAAQdASBNYXhpbXVtIG51bWJlciBvZiBjaGlsZCBib3VudGllcyB0aGF0IGNhbiBiZSBhZGRlZCB0byBhIHBhcmVudCBib3VudHkuAFxDaGlsZEJvdW50eVZhbHVlTWluaW11baRAAOQLVAIAAAAAAAAAAAAAAASIIE1pbmltdW0gdmFsdWUgZm9yIGEgY2hpbGQtYm91bnR5LgABzQsAAAAmAABoRWxlY3Rpb25Qcm92aWRlck11bHRpUGhhc2UBaEVsZWN0aW9uUHJvdmlkZXJNdWx0aVBoYXNlKBRSb3VuZAEAOBABAAAAGKwgSW50ZXJuYWwgY291bnRlciBmb3IgdGhlIG51bWJlciBvZiByb3VuZHMuAFUBIFRoaXMgaXMgdXNlZnVsIGZvciBkZS1kdXBsaWNhdGlvbiBvZiB0cmFuc2FjdGlvbnMgc3VibWl0dGVkIHRvIHRoZSBwb29sLCBhbmQgZ2VuZXJhbGwgZGlhZ25vc3RpY3Mgb2YgdGhlIHBhbGxldC4ATQEgVGhpcyBpcyBtZXJlbHkgaW5jcmVtZW50ZWQgb25jZSBwZXIgZXZlcnkgdGltZSB0aGF0IGFuIHVwc3RyZWFtIGBlbGVjdGAgaXMgY2FsbGVkLgAwQ3VycmVudFBoYXNlAQCRCAQABDwgQ3VycmVudCBwaGFzZS4AOFF1ZXVlZFNvbHV0aW9uAADRCwQADD0BIEN1cnJlbnQgYmVzdCBzb2x1dGlvbiwgc2lnbmVkIG9yIHVuc2lnbmVkLCBxdWV1ZWQgdG8gYmUgcmV0dXJuZWQgdXBvbiBgZWxlY3RgLgBgIEFsd2F5cyBzb3J0ZWQgYnkgc2NvcmUuACBTbmFwc2hvdAAA7QsEABBwIFNuYXBzaG90IGRhdGEgb2YgdGhlIHJvdW5kLgBdASBUaGlzIGlzIGNyZWF0ZWQgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgc2lnbmVkIHBoYXNlIGFuZCBjbGVhcmVkIHVwb24gY2FsbGluZyBgZWxlY3RgLikBIE5vdGU6IFRoaXMgc3RvcmFnZSB0eXBlIG11c3Qgb25seSBiZSBtdXRhdGVkIHRocm91Z2ggW2BTbmFwc2hvdFdyYXBwZXJgXS4AOERlc2lyZWRUYXJnZXRzAAA4BAAQzCBEZXNpcmVkIG51bWJlciBvZiB0YXJnZXRzIHRvIGVsZWN0IGZvciB0aGlzIHJvdW5kLgCoIE9ubHkgZXhpc3RzIHdoZW4gW2BTbmFwc2hvdGBdIGlzIHByZXNlbnQuKQEgTm90ZTogVGhpcyBzdG9yYWdlIHR5cGUgbXVzdCBvbmx5IGJlIG11dGF0ZWQgdGhyb3VnaCBbYFNuYXBzaG90V3JhcHBlcmBdLgBAU25hcHNob3RNZXRhZGF0YQAAYQMEABCYIFRoZSBtZXRhZGF0YSBvZiB0aGUgW2BSb3VuZFNuYXBzaG90YF0AqCBPbmx5IGV4aXN0cyB3aGVuIFtgU25hcHNob3RgXSBpcyBwcmVzZW50LikBIE5vdGU6IFRoaXMgc3RvcmFnZSB0eXBlIG11c3Qgb25seSBiZSBtdXRhdGVkIHRocm91Z2ggW2BTbmFwc2hvdFdyYXBwZXJgXS4AZFNpZ25lZFN1Ym1pc3Npb25OZXh0SW5kZXgBADgQAAAAACQBASBUaGUgbmV4dCBpbmRleCB0byBiZSBhc3NpZ25lZCB0byBhbiBpbmNvbWluZyBzaWduZWQgc3VibWlzc2lvbi4AdQEgRXZlcnkgYWNjZXB0ZWQgc3VibWlzc2lvbiBpcyBhc3NpZ25lZCBhIHVuaXF1ZSBpbmRleDsgdGhhdCBpbmRleCBpcyBib3VuZCB0byB0aGF0IHBhcnRpY3VsYXJlASBzdWJtaXNzaW9uIGZvciB0aGUgZHVyYXRpb24gb2YgdGhlIGVsZWN0aW9uLiBPbiBlbGVjdGlvbiBmaW5hbGl6YXRpb24sIHRoZSBuZXh0IGluZGV4IGlzMCByZXNldCB0byAwLgBpASBXZSBjYW4ndCBqdXN0IHVzZSBgU2lnbmVkU3VibWlzc2lvbkluZGljZXMubGVuKClgLCBiZWNhdXNlIHRoYXQncyBhIGJvdW5kZWQgc2V0OyBwYXN0IGl0c1kBIGNhcGFjaXR5LCBpdCB3aWxsIHNpbXBseSBzYXR1cmF0ZS4gV2UgY2FuJ3QganVzdCBpdGVyYXRlIG92ZXIgYFNpZ25lZFN1Ym1pc3Npb25zTWFwYCz0IGJlY2F1c2UgaXRlcmF0aW9uIGlzIHNsb3cuIEluc3RlYWQsIHdlIHN0b3JlIHRoZSB2YWx1ZSBoZXJlLgBcU2lnbmVkU3VibWlzc2lvbkluZGljZXMBAPkLBAAYbQEgQSBzb3J0ZWQsIGJvdW5kZWQgdmVjdG9yIG9mIGAoc2NvcmUsIGJsb2NrX251bWJlciwgaW5kZXgpYCwgd2hlcmUgZWFjaCBgaW5kZXhgIHBvaW50cyB0byBheCB2YWx1ZSBpbiBgU2lnbmVkU3VibWlzc2lvbnNgLgBxASBXZSBuZXZlciBuZWVkIHRvIHByb2Nlc3MgbW9yZSB0aGFuIGEgc2luZ2xlIHNpZ25lZCBzdWJtaXNzaW9uIGF0IGEgdGltZS4gU2lnbmVkIHN1Ym1pc3Npb25zdQEgY2FuIGJlIHF1aXRlIGxhcmdlLCBzbyB3ZSdyZSB3aWxsaW5nIHRvIHBheSB0aGUgY29zdCBvZiBtdWx0aXBsZSBkYXRhYmFzZSBhY2Nlc3NlcyB0byBhY2Nlc3MhASB0aGVtIG9uZSBhdCBhIHRpbWUgaW5zdGVhZCBvZiByZWFkaW5nIGFuZCBkZWNvZGluZyBhbGwgb2YgdGhlbSBhdCBvbmNlLgBQU2lnbmVkU3VibWlzc2lvbnNNYXAAAQQFOAUMBAAcdCBVbmNoZWNrZWQsIHNpZ25lZCBzb2x1dGlvbnMuAGkBIFRvZ2V0aGVyIHdpdGggYFN1Ym1pc3Npb25JbmRpY2VzYCwgdGhpcyBzdG9yZXMgYSBib3VuZGVkIHNldCBvZiBgU2lnbmVkU3VibWlzc2lvbnNgIHdoaWxl7CBhbGxvd2luZyB1cyB0byBrZWVwIG9ubHkgYSBzaW5nbGUgb25lIGluIG1lbW9yeSBhdCBhIHRpbWUuAGkBIFR3b3ggbm90ZTogdGhlIGtleSBvZiB0aGUgbWFwIGlzIGFuIGF1dG8taW5jcmVtZW50aW5nIGluZGV4IHdoaWNoIHVzZXJzIGNhbm5vdCBpbnNwZWN0IG9y9CBhZmZlY3Q7IHdlIHNob3VsZG4ndCBuZWVkIGEgY3J5cHRvZ3JhcGhpY2FsbHkgc2VjdXJlIGhhc2hlci4AVE1pbmltdW1VbnRydXN0ZWRTY29yZQAAXQMEABBdASBUaGUgbWluaW11bSBzY29yZSB0aGF0IGVhY2ggJ3VudHJ1c3RlZCcgc29sdXRpb24gbXVzdCBhdHRhaW4gaW4gb3JkZXIgdG8gYmUgY29uc2lkZXJlZCggZmVhc2libGUuALggQ2FuIGJlIHNldCB2aWEgYHNldF9taW5pbXVtX3VudHJ1c3RlZF9zY29yZWAuAAGJAgABiQgAPFRCZXR0ZXJTaWduZWRUaHJlc2hvbGTAEAAAAAAITQEgVGhlIG1pbmltdW0gYW1vdW50IG9mIGltcHJvdmVtZW50IHRvIHRoZSBzb2x1dGlvbiBzY29yZSB0aGF0IGRlZmluZXMgYSBzb2x1dGlvbiBhc3ggImJldHRlciIgaW4gdGhlIFNpZ25lZCBwaGFzZS4AOE9mZmNoYWluUmVwZWF0OBASAAAAELQgVGhlIHJlcGVhdCB0aHJlc2hvbGQgb2YgdGhlIG9mZmNoYWluIHdvcmtlci4AYQEgRm9yIGV4YW1wbGUsIGlmIGl0IGlzIDUsIHRoYXQgbWVhbnMgdGhhdCBhdCBsZWFzdCA1IGJsb2NrcyB3aWxsIGVsYXBzZSBiZXR3ZWVuIGF0dGVtcHRzhCB0byBzdWJtaXQgdGhlIHdvcmtlcidzIHNvbHV0aW9uLgA8TWluZXJUeFByaW9yaXR5KCBlZmZmZmZm5gQlASBUaGUgcHJpb3JpdHkgb2YgdGhlIHVuc2lnbmVkIHRyYW5zYWN0aW9uIHN1Ym1pdHRlZCBpbiB0aGUgdW5zaWduZWQtcGhhc2UAUFNpZ25lZE1heFN1Ym1pc3Npb25zOBAQAAAAHOQgTWF4aW11bSBudW1iZXIgb2Ygc2lnbmVkIHN1Ym1pc3Npb25zIHRoYXQgY2FuIGJlIHF1ZXVlZC4AVQEgSXQgaXMgYmVzdCB0byBhdm9pZCBhZGp1c3RpbmcgdGhpcyBkdXJpbmcgYW4gZWxlY3Rpb24sIGFzIGl0IGltcGFjdHMgZG93bnN0cmVhbSBkYXRhZQEgc3RydWN0dXJlcy4gSW4gcGFydGljdWxhciwgYFNpZ25lZFN1Ym1pc3Npb25JbmRpY2VzPFQ+YCBpcyBib3VuZGVkIG9uIHRoaXMgdmFsdWUuIElmIHlvdfQgdXBkYXRlIHRoaXMgdmFsdWUgZHVyaW5nIGFuIGVsZWN0aW9uLCB5b3UgX211c3RfIGVuc3VyZSB0aGF0TQEgYFNpZ25lZFN1Ym1pc3Npb25JbmRpY2VzLmxlbigpYCBpcyBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gdGhlIG5ldyB2YWx1ZS4gT3RoZXJ3aXNlLPAgYXR0ZW1wdHMgdG8gc3VibWl0IG5ldyBzb2x1dGlvbnMgbWF5IGNhdXNlIGEgcnVudGltZSBwYW5pYy4APFNpZ25lZE1heFdlaWdodDUCQAsIx3JYVQETo3A9CtejcL0UlCBNYXhpbXVtIHdlaWdodCBvZiBhIHNpZ25lZCBzb2x1dGlvbi4AXQEgSWYgW2BDb25maWc6Ok1pbmVyQ29uZmlnYF0gaXMgYmVpbmcgaW1wbGVtZW50ZWQgdG8gc3VibWl0IHNpZ25lZCBzb2x1dGlvbnMgKG91dHNpZGUgb2Y9ASB0aGlzIHBhbGxldCksIHRoZW4gW2BNaW5lckNvbmZpZzo6c29sdXRpb25fd2VpZ2h0YF0gaXMgdXNlZCB0byBjb21wYXJlIGFnYWluc3QwIHRoaXMgdmFsdWUuAEBTaWduZWRNYXhSZWZ1bmRzOBAEAAAABBkBIFRoZSBtYXhpbXVtIGFtb3VudCBvZiB1bmNoZWNrZWQgc29sdXRpb25zIHRvIHJlZnVuZCB0aGUgY2FsbCBmZWUgZm9yLgBAU2lnbmVkUmV3YXJkQmFzZaRAAOQLVAIAAAAAAAAAAAAAAASIIEJhc2UgcmV3YXJkIGZvciBhIHNpZ25lZCBzb2x1dGlvbgBEU2lnbmVkRGVwb3NpdEJ5dGWkQHh9AQAAAAAAAAAAAAAAAAAEoCBQZXItYnl0ZSBkZXBvc2l0IGZvciBhIHNpZ25lZCBzb2x1dGlvbi4ATFNpZ25lZERlcG9zaXRXZWlnaHSkQAAAAAAAAAAAAAAAAAAAAAAEqCBQZXItd2VpZ2h0IGRlcG9zaXQgZm9yIGEgc2lnbmVkIHNvbHV0aW9uLgAoTWF4V2lubmVyczgQsAQAAAzUIE1heGltdW0gbnVtYmVyIG9mIHdpbm5lcnMgdGhhdCBhbiBlbGVjdGlvbiBzdXBwb3J0cy4AUQEgTm90ZTogVGhpcyBtdXN0IGFsd2F5cyBiZSBncmVhdGVyIG9yIGVxdWFsIHRvIGBUOjpEYXRhUHJvdmlkZXI6OmRlc2lyZWRfdGFyZ2V0cygpYC4ATE1heEJhY2tlcnNQZXJXaW5uZXI4EORXAAAMMQEgTWF4aW11bSBudW1iZXIgb2Ygdm90ZXJzIHRoYXQgY2FuIHN1cHBvcnQgYSB3aW5uZXIgaW4gYW4gZWxlY3Rpb24gc29sdXRpb24uAOggVGhpcyBpcyBuZWVkZWQgdG8gZW5zdXJlIGVsZWN0aW9uIGNvbXB1dGF0aW9uIGlzIGJvdW5kZWQuADhNaW5lck1heExlbmd0aDgQAAA2AAAAOE1pbmVyTWF4V2VpZ2h0NQJACwjHclhVAROjcD0K16NwvQAAVE1pbmVyTWF4Vm90ZXNQZXJWb3RlcjgQEAAAAAAAPE1pbmVyTWF4V2lubmVyczgQsAQAAAAAAQkMAAAAJAAAJFZvdGVyTGlzdAEkVm90ZXJMaXN0HCRMaXN0Tm9kZXMAAQQFBA0MBAAMgCBBIHNpbmdsZSBub2RlLCB3aXRoaW4gc29tZSBiYWcuAAUBIE5vZGVzIHN0b3JlIGxpbmtzIGZvcndhcmQgYW5kIGJhY2sgd2l0aGluIHRoZWlyIHJlc3BlY3RpdmUgYmFncy4ATENvdW50ZXJGb3JMaXN0Tm9kZXMBADgQAAAAAASsQ291bnRlciBmb3IgdGhlIHJlbGF0ZWQgY291bnRlZCBzdG9yYWdlIG1hcAAgTGlzdEJhZ3MAAQQFKBEMBAAMZCBBIGJhZyBzdG9yZWQgaW4gc3RvcmFnZS4AGQEgU3RvcmVzIGEgYEJhZ2Agc3RydWN0LCB3aGljaCBzdG9yZXMgaGVhZCBhbmQgdGFpbCBwb2ludGVycyB0byBpdHNlbGYuAFBOZXh0Tm9kZUF1dG9SZWJhZ2dlZAAABAQACAUBIFBvaW50ZXIgdGhhdCByZW1lbWJlcnMgdGhlIG5leHQgbm9kZSB0aGF0IHdpbGwgYmUgYXV0by1yZWJhZ2dlZC4BASBXaGVuIGBOb25lYCwgdGhlIG5leHQgc2NhbiB3aWxsIHN0YXJ0IGZyb20gdGhlIGxpc3QgaGVhZCBhZ2Fpbi4AEExvY2sAABAEABCEIExvY2sgYWxsIHVwZGF0ZXMgdG8gdGhpcyBwYWxsZXQuADkBIElmIGFueSBub2RlcyBuZWVkcyB1cGRhdGluZywgcmVtb3ZhbCBvciBhZGRpdGlvbiBkdWUgdG8gYSB0ZW1wb3JhcnkgbG9jaywgdGhldCBbYENhbGw6OnJlYmFnYF0gY2FuIGJlIHVzZWQuADBQZW5kaW5nUmViYWcAAQQFBBAEADgdASBBY2NvdW50cyB0aGF0IGZhaWxlZCB0byBiZSBpbnNlcnRlZCBpbnRvIHRoZSBiYWdzLWxpc3QgZHVlIHRvIGxvY2tpbmcuWQEgVGhlc2UgYWNjb3VudHMgd2lsbCBiZSBwcm9jZXNzZWQgd2l0aCBwcmlvcml0eSBpbiBgb25faWRsZWAgb3IgdmlhIGByZWJhZ2AgZXh0cmluc2ljLgBNASBOb3RlOiBUaGlzIHN0b3JhZ2UgaXMgaW50ZW50aW9uYWxseSB1bmJvdW5kZWQuIFRoZSBmb2xsb3dpbmcgZmFjdG9ycyBtYWtlIGJvdW5kaW5nNCB1bm5lY2Vzc2FyeTpRASAxLiBUaGUgc3RvcmFnZSB1c2FnZSBpcyB0ZW1wb3JhcnkgLSBhY2NvdW50cyBhcmUgcHJvY2Vzc2VkIGFuZCByZW1vdmVkIGluIGBvbl9pZGxlYEUBIDIuIFRoZSBwYWxsZXQgaXMgb25seSBsb2NrZWQgZHVyaW5nIHNuYXBzaG90IGdlbmVyYXRpb24sIHdoaWNoIGlzIHdlaWdodC1saW1pdGVkbQEgMy4gUHJvY2Vzc2luZyBoYXBwZW5zIGF0IG11bHRpcGxlIGFjY291bnRzIHBlciBibG9jaywgY2xlYXJpbmcgZXZlbiBsYXJnZSBiYWNrbG9ncyBxdWlja2x5QQEgNC4gQW4gYXJ0aWZpY2lhbCBsaW1pdCBjb3VsZCBiZSBleGhhdXN0ZWQgYnkgYW4gYXR0YWNrZXIsIHByZXZlbnRpbmcgbGVnaXRpbWF0ZQEBICAgIGF1dG8tcmViYWdnaW5nIGZyb20gcHV0dGluZyBhY2NvdW50cyBpbiB0aGUgY29ycmVjdCBwb3NpdGlvbgBpASBXZSBkb24ndCBzdG9yZSB0aGUgc2NvcmUgaGVyZSAtIGl0J3MgYWx3YXlzIGZldGNoZWQgZnJvbSBgU2NvcmVQcm92aWRlcmAgd2hlbiBwcm9jZXNzaW5nLGkBIGVuc3VyaW5nIHdlIHVzZSB0aGUgbW9zdCB1cC10by1kYXRlIHNjb3JlIChhY2NvdW50cyBtYXkgaGF2ZSBiZWVuIHNsYXNoZWQsIHJld2FyZGVkLCBldGMudCB3aGlsZSB3YWl0aW5nIGluIHRoZSBxdWV1ZSkuAFhDb3VudGVyRm9yUGVuZGluZ1JlYmFnAQA4EAAAAAAErENvdW50ZXIgZm9yIHRoZSByZWxhdGVkIGNvdW50ZWQgc3RvcmFnZSBtYXAAAX0DAAGZCAAINEJhZ1RocmVzaG9sZHMVDAkZIQMA5AtUAgAAAPOegJcCAAAAqLGX4gIAAACUSS42AwAAACecOpMDAAAAA7zO+gMAAABCwBtuBAAAABtHde4EAAAAOF5VfQUAAABG3GAcBgAAAIk4bM0GAAAAtu6AkgcAAAD+fuNtCAAAAOgbGmIJAAAAsBn0cQoAAAAQNZKgCwAAAM/Jb/EMAAAAQRRtaA4AAADnm9oJEAAAAM7ohdoRAAAAKKnH3xMAAAC7cJMfFgAAAI5AiaAYAAAAgQoJahsAAAA2akiEHgAAAFvTavghAAAAgHyc0CUAAADJVTAYKgAAAL1jwdsuAAAAceBXKTQAAABokJIQOgAAAO3E1KJAAAAAaZN580cAAACP2AwYUAAAAEuviihZAAAAahamP2MAAAAJlRd7bgAAAHjF9Pt6AAAAYsgR54gAAABRv21lmAAAAASOq6SpAAAAVEaY17wAAACRysA20gAAABdfGAHqAAAAvRWyfAQBAABDNY/3IQEAALj8hMhCAQAAmWc8UGcBAAAH5E76jwEAALNBgz69AQAAAn8uou8BAACYg7y5JwIAABZNZSpmAgAAtJUTrKsCAAAtjoIL+QIAAKHmmCxPAwAAphYIDa8DAADMnTfHGQQAAKDVhJWQBAAAQufg1RQFAAACjNcNqAUAAA91Cu9LBgAA6o0uXAIHAADDy5luzQcAALHlcXyvCAAAqiuOH6sJAAC1wSA9wwoAACbQPQ77CwAAcMdZKVYNAADrrdqM2A4AAPeX26qGEAAAz/BEdmUSAAAfJmBxehQAAAmmEb7LFgAAHfvoL2AZAACUOjxgPxwAAIr+icRxHwAAztljxwAjAAADqSrk9iYAAP5y7sVfKwAANsnMaUgwAADa4zJFvzUAAAYqdHDUOwAAfJcy1plCAACEoyRoI0oAAFca1FmHUgAA5/ECYt5bAAANuHYDRGYAAK4EAd7WcQAAfZ6zCLl+AAAeBEp2EI0AADod8GQHnQAA4E+v2syuAABWefAvlcIAAJXDqqma2AAAlnwFJR7xAAAXembWZwwBACjLHx7IKgEA+igvdZhMAQDVfch0PHIBAH3Es/sinAEANlzedMfKAQCeuOFCs/4BAAwxrlR/OAIAX+EB6NV4AgBjc9p+dMACAFHRpg0uEAMAx+mkaO1oAwBhwJH3t8sDAL8nobewOQQAexSZlBu0BACFI+0iYTwFAGml1MUS1AUA7IyTTe98BgD1qpAb6DgHAIy+XdsmCggAApeM4RPzCAD64xRDXfYJAN3xLbr+FgsALrrcb0pYDAAMVRjE8r0NAPC7VDEVTA8ASY6Ga0YHEQCywVPen/QSACeKL7LOGRUAsjmfhCR9FwDhmecEqiUaALoT9aszGx0AJkeFzHhmIACIv4A/LREkAByYI/gdJigAzMQi1FCxLADwiIIFKMAxADZ8bX6JYTcAbpMp0wqmPQCMvGwTIqBEAABw8ypcZEwAtDuEaZkJVQCAtKvkUKleAKDNqXnbX2kATMJ/TMdMdQDQrA66NJOCAEg+DM89WpEAaMaOdGnNoQAoHm+lKx20AJipIyZ0f8gA8Jp0Y00w3wCAzfxLjXL4AJAUYC2akBQB8LQT2UXdMwEglzWWwbRWAVDc+66tfX0B4BGYuUeqqAEwx+4Wu7nYASBuSIaXOQ4CoPpLHXLHSQLAEXFwtRKMAoCKFkOm3tUCwPgjsaIEKAOAr1lwonaDA8BvLYf/QekDQJN/rI+SWgQAkQlxF7bYBEAP31shIGUFAEnBSURuAQYAjrym5WyvBgBZVoaFHHEHgGiqNKS3SAiAoeKeUrk4CQC9q+iA5EMKACpytCBMbQuA8cATM1y4DACgPMvc4ygOgLhimp4gww8A3laT0sqLEQBdf0yTI4gTABqH3zUEvhUAp85LhO8zGAABEPvqJPEaAIAq5dG1/R0AIqE0YJ1iIQBEIWvw2iklAAJh8YKPXikAZiDPhR4NLgCEEBlSUkMzAKDBj8qEEDkAJq0Uk8yFPwDQzSRmL7ZGAJzhmhzatk4AWMzCDF+fVwAgCnV4+4lhADC7u9bkk2wAYMun3J7deAC4O8BCW4uGALiGI2FkxZUA+PFf3JO4pgAgapHA1pa5ANjv4o/Al84AaCmb9S755f//////////rNAgVGhlIGxpc3Qgb2YgdGhyZXNob2xkcyBzZXBhcmF0aW5nIHRoZSB2YXJpb3VzIGJhZ3MuAEkBIElkcyBhcmUgc2VwYXJhdGVkIGludG8gdW5zb3J0ZWQgYmFncyBhY2NvcmRpbmcgdG8gdGhlaXIgc2NvcmUuIFRoaXMgc3BlY2lmaWVzIHRoZWEBIHRocmVzaG9sZHMgc2VwYXJhdGluZyB0aGUgYmFncy4gQW4gaWQncyBiYWcgaXMgdGhlIGxhcmdlc3QgYmFnIGZvciB3aGljaCB0aGUgaWQncyBzY29yZbggaXMgbGVzcyB0aGFuIG9yIGVxdWFsIHRvIGl0cyB1cHBlciB0aHJlc2hvbGQuAGUBIFdoZW4gaWRzIGFyZSBpdGVyYXRlZCwgaGlnaGVyIGJhZ3MgYXJlIGl0ZXJhdGVkIGNvbXBsZXRlbHkgYmVmb3JlIGxvd2VyIGJhZ3MuIFRoaXMgbWVhbnNZASB0aGF0IGl0ZXJhdGlvbiBpcyBfc2VtaS1zb3J0ZWRfOiBpZHMgb2YgaGlnaGVyIHNjb3JlIHRlbmQgdG8gY29tZSBiZWZvcmUgaWRzIG9mIGxvd2VyLQEgc2NvcmUsIGJ1dCBwZWVyIGlkcyB3aXRoaW4gYSBwYXJ0aWN1bGFyIGJhZyBhcmUgc29ydGVkIGluIGluc2VydGlvbiBvcmRlci4AaCAjIEV4cHJlc3NpbmcgdGhlIGNvbnN0YW50AE0BIFRoaXMgY29uc3RhbnQgbXVzdCBiZSBzb3J0ZWQgaW4gc3RyaWN0bHkgaW5jcmVhc2luZyBvcmRlci4gRHVwbGljYXRlIGl0ZW1zIGFyZSBub3QsIHBlcm1pdHRlZC4AQQEgVGhlcmUgaXMgYW4gaW1wbGllZCB1cHBlciBsaW1pdCBvZiBgU2NvcmU6Ok1BWGA7IHRoYXQgdmFsdWUgZG9lcyBub3QgbmVlZCB0byBiZSEBIHNwZWNpZmllZCB3aXRoaW4gdGhlIGJhZy4gRm9yIGFueSB0d28gdGhyZXNob2xkIGxpc3RzLCBpZiBvbmUgZW5kcyB3aXRoMQEgYFNjb3JlOjpNQVhgLCB0aGUgb3RoZXIgb25lIGRvZXMgbm90LCBhbmQgdGhleSBhcmUgb3RoZXJ3aXNlIGVxdWFsLCB0aGUgdHdvfCBsaXN0cyB3aWxsIGJlaGF2ZSBpZGVudGljYWxseS4AOCAjIENhbGN1bGF0aW9uAFUBIEl0IGlzIHJlY29tbWVuZGVkIHRvIGdlbmVyYXRlIHRoZSBzZXQgb2YgdGhyZXNob2xkcyBpbiBhIGdlb21ldHJpYyBzZXJpZXMsIHN1Y2ggdGhhdEEBIHRoZXJlIGV4aXN0cyBzb21lIGNvbnN0YW50IHJhdGlvIHN1Y2ggdGhhdCBgdGhyZXNob2xkW2sgKyAxXSA9PSAodGhyZXNob2xkW2tdICrQIGNvbnN0YW50X3JhdGlvKS5tYXgodGhyZXNob2xkW2tdICsgMSlgIGZvciBhbGwgYGtgLgBZASBUaGUgaGVscGVycyBpbiB0aGUgYC91dGlscy9mcmFtZS9nZW5lcmF0ZS1iYWdzYCBtb2R1bGUgY2FuIHNpbXBsaWZ5IHRoaXMgY2FsY3VsYXRpb24uACwgIyBFeGFtcGxlcwBRASAtIElmIGBCYWdUaHJlc2hvbGRzOjpnZXQoKS5pc19lbXB0eSgpYCwgdGhlbiBhbGwgaWRzIGFyZSBwdXQgaW50byB0aGUgc2FtZSBiYWcsIGFuZLAgICBpdGVyYXRpb24gaXMgc3RyaWN0bHkgaW4gaW5zZXJ0aW9uIG9yZGVyLmEBIC0gSWYgYEJhZ1RocmVzaG9sZHM6OmdldCgpLmxlbigpID09IDY0YCwgYW5kIHRoZSB0aHJlc2hvbGRzIGFyZSBkZXRlcm1pbmVkIGFjY29yZGluZyB0bxEBICAgdGhlIHByb2NlZHVyZSBnaXZlbiBhYm92ZSwgdGhlbiB0aGUgY29uc3RhbnQgcmF0aW8gaXMgZXF1YWwgdG8gMi5lASAtIElmIGBCYWdUaHJlc2hvbGRzOjpnZXQoKS5sZW4oKSA9PSAyMDBgLCBhbmQgdGhlIHRocmVzaG9sZHMgYXJlIGRldGVybWluZWQgYWNjb3JkaW5nIHRvWQEgICB0aGUgcHJvY2VkdXJlIGdpdmVuIGFib3ZlLCB0aGVuIHRoZSBjb25zdGFudCByYXRpbyBpcyBhcHByb3hpbWF0ZWx5IGVxdWFsIHRvIDEuMjQ4LmEBIC0gSWYgdGhlIHRocmVzaG9sZCBsaXN0IGJlZ2lucyBgWzEsIDIsIDMsIC4uLl1gLCB0aGVuIGFuIGlkIHdpdGggc2NvcmUgMCBvciAxIHdpbGwgZmFsbPAgICBpbnRvIGJhZyAwLCBhbiBpZCB3aXRoIHNjb3JlIDIgd2lsbCBmYWxsIGludG8gYmFnIDEsIGV0Yy4AMCAjIE1pZ3JhdGlvbgBhASBJbiB0aGUgZXZlbnQgdGhhdCB0aGlzIGxpc3QgZXZlciBjaGFuZ2VzLCBhIGNvcHkgb2YgdGhlIG9sZCBiYWdzIGxpc3QgbXVzdCBiZSByZXRhaW5lZC5dASBXaXRoIHRoYXQgYExpc3Q6Om1pZ3JhdGVgIGNhbiBiZSBjYWxsZWQsIHdoaWNoIHdpbGwgcGVyZm9ybSB0aGUgYXBwcm9wcmlhdGUgbWlncmF0aW9uLgBQTWF4QXV0b1JlYmFnUGVyQmxvY2s4EAAAAAAQNQEgTWF4aW11bSBudW1iZXIgb2YgYWNjb3VudHMgdGhhdCBtYXkgYmUgcmUtYmFnZ2VkIGF1dG9tYXRpY2FsbHkgaW4gYG9uX2lkbGVgLgBRASBBIHZhbHVlIG9mIGAwYCAob2J0YWluZWQgYnkgY29uZmlndXJpbmcgYHR5cGUgTWF4QXV0b1JlYmFnUGVyQmxvY2sgPSAoKTtgKSBkaXNhYmxlczQgdGhlIGZlYXR1cmUuAAEZDAAEFFNjb3JlKAQJASBUaGUgdHlwZSB1c2VkIHRvIGRpY3RhdGUgYSBub2RlIHBvc2l0aW9uIHJlbGF0aXZlIHRvIG90aGVyIG5vZGVzLgR03XAtpG9316z3f1pI1K99EkZQnSHNsSbousVoE8SinhhzY29yZXMEDHdobwQhDBywIEdldCB0aGUgY3VycmVudCBgc2NvcmVgIG9mIGEgZ2l2ZW4gYWNjb3VudC4AYQEgUmV0dXJucyBgKGN1cnJlbnQsIHJlYWxfc2NvcmUpYCwgdGhlIGZvcm1lciBiZWluZyB0aGUgY3VycmVudCBzY29yZSB0aGF0IHRoaXMgcGFsbGV0IGlzWQEgYXdhcmUgb2YsIHdoaWNoIG1heSBvciBtYXkgbm90IGJlIHVwIHRvIGRhdGUsIGFuZCB0aGUgbGF0dGVyIGJlaW5nIHRoZSByZWFsIHNjb3JlLCBhczAgcHJvdmlkZWQgYnkAHQEgSWYgdGhlIHR3byBkaWZmZXIsIGl0IG1lYW5zIHRoaXMgbm9kZSBpcyBlbGlnaWJsZSBmb3IgW2BDYWxsOjpyZWJhZ2BdLgAlAAA8Tm9taW5hdGlvblBvb2xzATxOb21pbmF0aW9uUG9vbHNUQFRvdGFsVmFsdWVMb2NrZWQBAKRAAAAAAAAAAAAAAAAAAAAAABSMIFRoZSBzdW0gb2YgZnVuZHMgYWNyb3NzIGFsbCBwb29scy4AcQEgVGhpcyBtaWdodCBiZSBsb3dlciBidXQgbmV2ZXIgaGlnaGVyIHRoYW4gdGhlIHN1bSBvZiBgdG90YWxfYmFsYW5jZWAgb2YgYWxsIFtgUG9vbE1lbWJlcnNgXVkBIGJlY2F1c2UgY2FsbGluZyBgcG9vbF93aXRoZHJhd191bmJvbmRlZGAgbWlnaHQgZGVjcmVhc2UgdGhlIHRvdGFsIHN0YWtlIG9mIHRoZSBwb29sJ3MpASBgYm9uZGVkX2FjY291bnRgIHdpdGhvdXQgYWRqdXN0aW5nIHRoZSBwYWxsZXQtaW50ZXJuYWwgYFVuYm9uZGluZ1Bvb2xgJ3MuACxNaW5Kb2luQm9uZAEApEAAAAAAAAAAAAAAAAAAAAAABJwgTWluaW11bSBhbW91bnQgdG8gYm9uZCB0byBqb2luIGEgcG9vbC4ANE1pbkNyZWF0ZUJvbmQBAKRAAAAAAAAAAAAAAAAAAAAAABygIE1pbmltdW0gYm9uZCByZXF1aXJlZCB0byBjcmVhdGUgYSBwb29sLgBlASBUaGlzIGlzIHRoZSBhbW91bnQgdGhhdCB0aGUgZGVwb3NpdG9yIG11c3QgcHV0IGFzIHRoZWlyIGluaXRpYWwgc3Rha2UgaW4gdGhlIHBvb2wsIGFzIGFuiCBpbmRpY2F0aW9uIG9mICJza2luIGluIHRoZSBnYW1lIi4AaQEgVGhpcyBpcyB0aGUgdmFsdWUgdGhhdCB3aWxsIGFsd2F5cyBleGlzdCBpbiB0aGUgc3Rha2luZyBsZWRnZXIgb2YgdGhlIHBvb2wgYm9uZGVkIGFjY291bnSAIHdoaWxlIGFsbCBvdGhlciBhY2NvdW50cyBsZWF2ZS4AIE1heFBvb2xzAAA4BAAIaQEgTWF4aW11bSBudW1iZXIgb2Ygbm9taW5hdGlvbiBwb29scyB0aGF0IGNhbiBleGlzdC4gSWYgYE5vbmVgLCB0aGVuIGFuIHVuYm91bmRlZCBudW1iZXIgb2ZEIHBvb2xzIGNhbiBleGlzdC4AOE1heFBvb2xNZW1iZXJzAAA4BAAISQEgTWF4aW11bSBudW1iZXIgb2YgbWVtYmVycyB0aGF0IGNhbiBleGlzdCBpbiB0aGUgc3lzdGVtLiBJZiBgTm9uZWAsIHRoZW4gdGhlIGNvdW50uCBtZW1iZXJzIGFyZSBub3QgYm91bmQgb24gYSBzeXN0ZW0gd2lkZSBiYXNpcy4AVE1heFBvb2xNZW1iZXJzUGVyUG9vbAAAOAQACEEBIE1heGltdW0gbnVtYmVyIG9mIG1lbWJlcnMgdGhhdCBtYXkgYmVsb25nIHRvIHBvb2wuIElmIGBOb25lYCwgdGhlbiB0aGUgY291bnQgb2aoIG1lbWJlcnMgaXMgbm90IGJvdW5kIG9uIGEgcGVyIHBvb2wgYmFzaXMuAExHbG9iYWxNYXhDb21taXNzaW9uAADABAAMaQEgVGhlIG1heGltdW0gY29tbWlzc2lvbiB0aGF0IGNhbiBiZSBjaGFyZ2VkIGJ5IGEgcG9vbC4gVXNlZCBvbiBjb21taXNzaW9uIHBheW91dHMgdG8gYm91bmQlASBwb29sIGNvbW1pc3Npb25zIHRoYXQgYXJlID4gYEdsb2JhbE1heENvbW1pc3Npb25gLCBuZWNlc3NhcnkgaWYgYSBmdXR1cmUNASBgR2xvYmFsTWF4Q29tbWlzc2lvbmAgaXMgbG93ZXIgdGhhbiBzb21lIGN1cnJlbnQgcG9vbCBjb21taXNzaW9ucy4ALFBvb2xNZW1iZXJzAAEEBQQlDAQADEAgQWN0aXZlIG1lbWJlcnMuANAgVFdPWC1OT1RFOiBTQUZFIHNpbmNlIGBBY2NvdW50SWRgIGlzIGEgc2VjdXJlIGhhc2guAFRDb3VudGVyRm9yUG9vbE1lbWJlcnMBADgQAAAAAASsQ291bnRlciBmb3IgdGhlIHJlbGF0ZWQgY291bnRlZCBzdG9yYWdlIG1hcAAsQm9uZGVkUG9vbHMAAQQFODEMBAAEaCBTdG9yYWdlIGZvciBib25kZWQgcG9vbHMuAFRDb3VudGVyRm9yQm9uZGVkUG9vbHMBADgQAAAAAASsQ291bnRlciBmb3IgdGhlIHJlbGF0ZWQgY291bnRlZCBzdG9yYWdlIG1hcAAsUmV3YXJkUG9vbHMAAQQFOEEMBAAIdQEgUmV3YXJkIHBvb2xzLiBUaGlzIGlzIHdoZXJlIHRoZXJlIHJld2FyZHMgZm9yIGVhY2ggcG9vbCBhY2N1bXVsYXRlLiBXaGVuIGEgbWVtYmVycyBwYXlvdXQgaXNZASBjbGFpbWVkLCB0aGUgYmFsYW5jZSBjb21lcyBvdXQgb2YgdGhlIHJld2FyZCBwb29sLiBLZXllZCBieSB0aGUgYm9uZGVkIHBvb2xzIGFjY291bnQuAFRDb3VudGVyRm9yUmV3YXJkUG9vbHMBADgQAAAAAASsQ291bnRlciBmb3IgdGhlIHJlbGF0ZWQgY291bnRlZCBzdG9yYWdlIG1hcAA8U3ViUG9vbHNTdG9yYWdlAAEEBThFDAQACBkBIEdyb3VwcyBvZiB1bmJvbmRpbmcgcG9vbHMuIEVhY2ggZ3JvdXAgb2YgdW5ib25kaW5nIHBvb2xzIGJlbG9uZ3MgdG8gYSkBIGJvbmRlZCBwb29sLCBoZW5jZSB0aGUgbmFtZSBzdWItcG9vbHMuIEtleWVkIGJ5IHRoZSBib25kZWQgcG9vbHMgYWNjb3VudC4AZENvdW50ZXJGb3JTdWJQb29sc1N0b3JhZ2UBADgQAAAAAASsQ291bnRlciBmb3IgdGhlIHJlbGF0ZWQgY291bnRlZCBzdG9yYWdlIG1hcAAgTWV0YWRhdGEBAQQFOF0MBAAEXCBNZXRhZGF0YSBmb3IgdGhlIHBvb2wuAEhDb3VudGVyRm9yTWV0YWRhdGEBADgQAAAAAASsQ291bnRlciBmb3IgdGhlIHJlbGF0ZWQgY291bnRlZCBzdG9yYWdlIG1hcAAoTGFzdFBvb2xJZAEAOBAAAAAABNAgRXZlciBpbmNyZWFzaW5nIG51bWJlciBvZiBhbGwgcG9vbHMgY3JlYXRlZCBzbyBmYXIuAExSZXZlcnNlUG9vbElkTG9va3VwAAEEBQQ4BAAQ3CBBIHJldmVyc2UgbG9va3VwIGZyb20gdGhlIHBvb2wncyBhY2NvdW50IGlkIHRvIGl0cyBpZC4AdQEgVGhpcyBpcyBvbmx5IHVzZWQgZm9yIHNsYXNoaW5nIGFuZCBvbiBhdXRvbWF0aWMgd2l0aGRyYXcgdXBkYXRlLiBJbiBhbGwgb3RoZXIgaW5zdGFuY2VzLCB0aGUlASBwb29sIGlkIGlzIHVzZWQsIGFuZCB0aGUgYWNjb3VudHMgYXJlIGRldGVybWluaXN0aWNhbGx5IGRlcml2ZWQgZnJvbSBpdC4AdENvdW50ZXJGb3JSZXZlcnNlUG9vbElkTG9va3VwAQA4EAAAAAAErENvdW50ZXIgZm9yIHRoZSByZWxhdGVkIGNvdW50ZWQgc3RvcmFnZSBtYXAAQENsYWltUGVybWlzc2lvbnMBAQQFBJ0DBAIEAQEgTWFwIGZyb20gYSBwb29sIG1lbWJlciBhY2NvdW50IHRvIHRoZWlyIG9wdGVkIGNsYWltIHBlcm1pc3Npb24uAAGBAwABnQgADCBQYWxsZXRJZOkKIHB5L25vcGxzBIQgVGhlIG5vbWluYXRpb24gcG9vbCdzIHBhbGxldCBpZC4ASE1heFBvaW50c1RvQmFsYW5jZQwECjAdASBUaGUgbWF4aW11bSBwb29sIHBvaW50cy10by1iYWxhbmNlIHJhdGlvIHRoYXQgYW4gYG9wZW5gIHBvb2wgY2FuIGhhdmUuAFUBIFRoaXMgaXMgaW1wb3J0YW50IGluIHRoZSBldmVudCBzbGFzaGluZyB0YWtlcyBwbGFjZSBhbmQgdGhlIHBvb2wncyBwb2ludHMtdG8tYmFsYW5jZXwgcmF0aW8gYmVjb21lcyBkaXNwcm9wb3J0aW9uYWwuAGUBIE1vcmVvdmVyLCB0aGlzIHJlbGF0ZXMgdG8gdGhlIGBSZXdhcmRDb3VudGVyYCB0eXBlIGFzIHdlbGwsIGFzIHRoZSBhcml0aG1ldGljIG9wZXJhdGlvbnNVASBhcmUgYSBmdW5jdGlvbiBvZiBudW1iZXIgb2YgcG9pbnRzLCBhbmQgYnkgc2V0dGluZyB0aGlzIHZhbHVlIHRvIGUuZy4gMTAsIHlvdSBlbnN1cmVlASB0aGF0IHRoZSB0b3RhbCBudW1iZXIgb2YgcG9pbnRzIGluIHRoZSBzeXN0ZW0gYXJlIGF0IG1vc3QgMTAgdGltZXMgdGhlIHRvdGFsX2lzc3VhbmNlIG9mnCB0aGUgY2hhaW4sIGluIHRoZSBhYnNvbHV0ZSB3b3JzZSBjYXNlLgBJASBGb3IgYSB2YWx1ZSBvZiAxMCwgdGhlIHRocmVzaG9sZCB3b3VsZCBiZSBhIHBvb2wgcG9pbnRzLXRvLWJhbGFuY2UgcmF0aW8gb2YgMTA6MS4xASBTdWNoIGEgc2NlbmFyaW8gd291bGQgYWxzbyBiZSB0aGUgZXF1aXZhbGVudCBvZiB0aGUgcG9vbCBiZWluZyA5MCUgc2xhc2hlZC4AME1heFVuYm9uZGluZzgQIAAAAAQ9ASBUaGUgbWF4aW11bSBudW1iZXIgb2Ygc2ltdWx0YW5lb3VzIHVuYm9uZGluZyBjaHVua3MgdGhhdCBjYW4gZXhpc3QgcGVyIG1lbWJlci4AAWEMAAQ0UmV3YXJkQ291bnRlcn0GMKggVGhlIHR5cGUgdGhhdCBpcyB1c2VkIGZvciByZXdhcmQgY291bnRlci4ANQEgVGhlIGFyaXRobWV0aWMgb2YgdGhlIHJld2FyZCBjb3VudGVyIG1pZ2h0IHNhdHVyYXRlIGJhc2VkIG9uIHRoZSBzaXplIG9mIHRoZWUBIGBDdXJyZW5jeTo6QmFsYW5jZWAuIElmIHRoaXMgaGFwcGVucywgb3BlcmF0aW9ucyBmYWlscy4gTm9uZXRoZWxlc3MsIHRoaXMgdHlwZSBzaG91bGQgYmVlASBjaG9zZW4gc3VjaCB0aGF0IHRoaXMgZmFpbHVyZSBhbG1vc3QgbmV2ZXIgaGFwcGVucywgYXMgaWYgaXQgaGFwcGVucywgdGhlIHBvb2wgYmFzaWNhbGx5ZQEgbmVlZHMgdG8gYmUgZGlzbWFudGxlZCAob3IgYWxsIHBvb2xzIG1pZ3JhdGVkIHRvIGEgbGFyZ2VyIGBSZXdhcmRDb3VudGVyYCB0eXBlLCB3aGljaCBpczwgYSBQSVRBIHRvIGRvKS4AYQEgU2VlIHRoZSBpbmxpbmUgY29kZSBkb2NzIG9mIGBNZW1iZXI6OnBlbmRpbmdfcmV3YXJkc2AgYW5kIGBSZXdhcmRQb29sOjp1cGRhdGVfcmVjb3JkZWRgZQEgZm9yIGV4YW1wbGUgYW5hbHlzaXMuIEEgW2BzcF9ydW50aW1lOjpGaXhlZFUxMjhgXSBzaG91bGQgYmUgZmluZSBmb3IgY2hhaW5zIHdpdGggYmFsYW5jZVEBIHR5cGVzIHNpbWlsYXIgdG8gdGhhdCBvZiBQb2xrYWRvdCBhbmQgS3VzYW1hLCBpbiB0aGUgYWJzZW5jZSBvZiBzZXZlcmUgc2xhc2hpbmcgKG9yPQEgcHJldmVudGVkIHZpYSBhIHJlYXNvbmFibGUgYE1heFBvaW50c1RvQmFsYW5jZWApLCBmb3IgbWFueSBtYW55IHllYXJzIHRvIGNvbWUuACcAACxGYXN0VW5zdGFrZQEsRmFzdFVuc3Rha2UQEEhlYWQAAGkMBAAMwCBUaGUgY3VycmVudCAiaGVhZCBvZiB0aGUgcXVldWUiIGJlaW5nIHVuc3Rha2VkLgApASBUaGUgaGVhZCBpbiBpdHNlbGYgY2FuIGJlIGEgYmF0Y2ggb2YgdXAgdG8gW2BDb25maWc6OkJhdGNoU2l6ZWBdIHN0YWtlcnMuABRRdWV1ZQABBAUEpAQADMAgVGhlIG1hcCBvZiBhbGwgYWNjb3VudHMgd2lzaGluZyB0byBiZSB1bnN0YWtlZC4AOQEgS2VlcHMgdHJhY2sgb2YgYEFjY291bnRJZGAgd2lzaGluZyB0byB1bnN0YWtlIGFuZCBpdCdzIGNvcnJlc3BvbmRpbmcgZGVwb3NpdC4APENvdW50ZXJGb3JRdWV1ZQEAOBAAAAAABKxDb3VudGVyIGZvciB0aGUgcmVsYXRlZCBjb3VudGVkIHN0b3JhZ2UgbWFwAExFcmFzVG9DaGVja1BlckJsb2NrAQA4EAAAAAAgjCBOdW1iZXIgb2YgZXJhcyB0byBjaGVjayBwZXIgYmxvY2suADUBIElmIHNldCB0byAwLCB0aGlzIHBhbGxldCBkb2VzIGFic29sdXRlbHkgbm90aGluZy4gQ2Fubm90IGJlIHNldCB0byBtb3JlIHRoYW6QIFtgQ29uZmlnOjpNYXhFcmFzVG9DaGVja1BlckJsb2NrYF0uAGUBIEJhc2VkIG9uIHRoZSBhbW91bnQgb2Ygd2VpZ2h0IGF2YWlsYWJsZSBhdCBbYFBhbGxldDo6b25faWRsZWBdLCB1cCB0byB0aGlzIG1hbnkgZXJhcyBhcmVdASBjaGVja2VkLiBUaGUgY2hlY2tpbmcgaXMgcmVwcmVzZW50ZWQgYnkgdXBkYXRpbmcgW2BVbnN0YWtlUmVxdWVzdDo6Y2hlY2tlZGBdLCB3aGljaCBpc1Agc3RvcmVkIGluIFtgSGVhZGBdLgABtQMAAaUIAAQcRGVwb3NpdKRAAOQLVAIAAAAAAAAAAAAAAAhlASBEZXBvc2l0IHRvIHRha2UgZm9yIHVuc3Rha2luZywgdG8gbWFrZSBzdXJlIHdlJ3JlIGFibGUgdG8gc2xhc2ggdGhlIGl0IGluIG9yZGVyIHRvIGNvdmVywCB0aGUgY29zdHMgb2YgcmVzb3VyY2VzIG9uIHVuc3VjY2Vzc2Z1bCB1bnN0YWtlLgABdQwAAAAoAABARGVsZWdhdGVkU3Rha2luZwFARGVsZWdhdGVkU3Rha2luZxAoRGVsZWdhdG9ycwABBAUEeQwEABCkIE1hcCBvZiBEZWxlZ2F0b3JzIHRvIHRoZWlyIGBEZWxlZ2F0aW9uYC4AYQEgSW1wbGVtZW50YXRpb24gbm90ZTogV2UgYXJlIG5vdCB1c2luZyBhIGRvdWJsZSBtYXAgd2l0aCBgZGVsZWdhdG9yYCBhbmQgYGFnZW50YCBhY2NvdW50YQEgYXMga2V5cyBzaW5jZSB3ZSB3YW50IHRvIHJlc3RyaWN0IGRlbGVnYXRvcnMgdG8gZGVsZWdhdGUgb25seSB0byBvbmUgYWNjb3VudCBhdCBhIHRpbWUuAFBDb3VudGVyRm9yRGVsZWdhdG9ycwEAOBAAAAAABKxDb3VudGVyIGZvciB0aGUgcmVsYXRlZCBjb3VudGVkIHN0b3JhZ2UgbWFwABhBZ2VudHMAAQQFBH0MBAAEiCBNYXAgb2YgYEFnZW50YCB0byB0aGVpciBgTGVkZ2VyYC4AQENvdW50ZXJGb3JBZ2VudHMBADgQAAAAAASsQ291bnRlciBmb3IgdGhlIHJlbGF0ZWQgY291bnRlZCBzdG9yYWdlIG1hcAAAAakIAAggUGFsbGV0SWTpCiBweS9kbHN0awSQIEluamVjdGVkIGlkZW50aWZpZXIgZm9yIHRoZSBwYWxsZXQuAExTbGFzaFJld2FyZEZyYWN0aW9uwBCAlpgABFEBIEZyYWN0aW9uIG9mIHRoZSBzbGFzaCB0aGF0IGlzIHJld2FyZGVkIHRvIHRoZSBjYWxsZXIgb2YgcGVuZGluZyBzbGFzaCB0byB0aGUgYWdlbnQuAAGBDAAAACkAADxTdGFraW5nQWhDbGllbnQBPFN0YWtpbmdBaENsaWVudCQwVmFsaWRhdG9yU2V0AACFDAQADPggVGhlIHF1ZXVlZCB2YWxpZGF0b3Igc2V0cyBmb3IgYSBnaXZlbiBwbGFubmluZyBzZXNzaW9uIGluZGV4LgCsIFRoaXMgaXMgcmVjZWl2ZWQgdmlhIGEgY2FsbCBmcm9tIEFzc2V0SHViLgBwSW5jb21wbGV0ZVZhbGlkYXRvclNldFJlcG9ydAAAvQMEAASQIEFuIGluY29tcGxldGUgdmFsaWRhdG9yIHNldCByZXBvcnQuADxWYWxpZGF0b3JQb2ludHMBAQQFBDgQAAAAABCUIEFsbCBvZiB0aGUgcG9pbnRzIG9mIHRoZSB2YWxpZGF0b3JzLgBhASBUaGlzIGlzIHBvcHVsYXRlZCBkdXJpbmcgYSBzZXNzaW9uLCBhbmQgaXMgZmx1c2hlZCBhbmQgc2VudCBvdmVyIHZpYSBbYFNlbmRUb0Fzc2V0SHViYF1UIGF0IGVhY2ggc2Vzc2lvbiBlbmQuABBNb2RlAQDBAwQAENAgSW5kaWNhdGVzIHRoZSBjdXJyZW50IG9wZXJhdGluZyBtb2RlIG9mIHRoZSBwYWxsZXQuAHEBIFRoaXMgdmFsdWUgZGV0ZXJtaW5lcyBob3cgdGhlIHBhbGxldCBiZWhhdmVzIGluIHJlc3BvbnNlIHRvIGluY29taW5nIGFuZCBvdXRnb2luZyBtZXNzYWdlcyxpASBwYXJ0aWN1bGFybHkgd2hldGhlciBpdCBzaG91bGQgZXhlY3V0ZSBsb2dpYyBkaXJlY3RseSwgZGVmZXIgaXQsIG9yIGRlbGVnYXRlIGl0IGVudGlyZWx5LgBwTmV4dFNlc3Npb25DaGFuZ2VzVmFsaWRhdG9ycwAAOAQAIGkBIEEgc3RvcmFnZSB2YWx1ZSB0aGF0IGlzIHNldCB3aGVuIGEgYG5ld19zZXNzaW9uYCBnaXZlcyBhIG5ldyB2YWxpZGF0b3Igc2V0IHRvIHRoZSBzZXNzaW9upCBwYWxsZXQsIGFuZCBpcyBjbGVhcmVkIG9uIHRoZSBuZXh0IGNhbGwuAG0BIFRoZSBpbm5lciB1MzIgaXMgdGhlIGlkIG9mIHRoZSBzYWlkIGFjdGl2YXRlZCB2YWxpZGF0b3Igc2V0LiBXaGlsZSBub3QgcmVsZXZhbnQgaGVyZSwgZ29vZPwgdG8ga25vdyB0aGlzIGlzIHRoZSBwbGFubmluZyBlcmEgaW5kZXggb2Ygc3Rha2luZy1hc3luYyBvbiBBSC4AWQEgT25jZSBjbGVhcmVkLCB3ZSBrbm93IGEgdmFsaWRhdG9yIHNldCBoYXMgYmVlbiBhY3RpdmF0ZWQsIGFuZCB0aGVyZWZvcmUgd2UgY2FuIHNlbmQgYUQgdGltZXN0YW1wIHRvIEFILgBUVmFsaWRhdG9yU2V0QXBwbGllZEF0AAA4BAAQJQEgVGhlIHNlc3Npb24gaW5kZXggYXQgd2hpY2ggdGhlIGxhdGVzdCBlbGVjdGVkIHZhbGlkYXRvciBzZXQgd2FzIGFwcGxpZWQuAHUBIFRoaXMgaXMgdXNlZCB0byBkZXRlcm1pbmUgaWYgYW4gb2ZmZW5jZSwgZ2l2ZW4gYSBzZXNzaW9uIGluZGV4LCBpcyBpbiB0aGUgY3VycmVudCBhY3RpdmUgZXJhICBvciBub3QuAFRPdXRnb2luZ1Nlc3Npb25SZXBvcnQAAIkMBAAQ3CBBIHNlc3Npb24gcmVwb3J0IHRoYXQgaXMgb3V0Z29pbmcsIGFuZCBzaG91bGQgYmUgc2VudC4AdQEgVGhpcyB3aWxsIGJlIGF0dGVtcHRlZCB0byBiZSBzZW50LCBwb3NzaWJseSBvbiBldmVyeSBgb25faW5pdGlhbGl6ZWAgY2FsbCwgdW50aWwgaXQgaXMgc2VudCz0IG9yIHRoZSBzZWNvbmQgdmFsdWUgcmVhY2hlcyB6ZXJvLCBhdCB3aGljaCBwb2ludCB3ZSBkcm9wIGl0LgBgT2ZmZW5jZVNlbmRRdWV1ZU9mZmVuY2VzAQEEBTiVDAQABDEBIEludGVybmFsIHN0b3JhZ2UgaXRlbSBvZiBbYE9mZmVuY2VTZW5kUXVldWVgXS4gU2hvdWxkIG5vdCBiZSB1c2VkIG1hbnVhbGx5LgBYT2ZmZW5jZVNlbmRRdWV1ZUN1cnNvcgEAOBAAAAAABDEBIEludGVybmFsIHN0b3JhZ2UgaXRlbSBvZiBbYE9mZmVuY2VTZW5kUXVldWVgXS4gU2hvdWxkIG5vdCBiZSB1c2VkIG1hbnVhbGx5LgABuQMAAa0IAAABpQwABDxDdXJyZW5jeUJhbGFuY2WkBNggVGhlIGJhbGFuY2UgdHlwZSBvZiB0aGUgcnVudGltZSdzIGN1cnJlbmN5IGludGVyZmFjZS4AKgAAQFBhcmFjaGFpbnNPcmlnaW4AAAAAAAAAMhB5ASBUaGVyZSBpcyBubyB3YXkgdG8gcmVnaXN0ZXIgYW4gb3JpZ2luIHR5cGUgaW4gYGNvbnN0cnVjdF9ydW50aW1lYCB3aXRob3V0IGEgcGFsbGV0IHRoZSBvcmlnaW4wIGJlbG9uZ3MgdG8uAHUBIFRoaXMgbW9kdWxlIGZ1bGZpbGxzIG9ubHkgdGhlIHNpbmdsZSBwdXJwb3NlIG9mIGhvdXNpbmcgdGhlIGBPcmlnaW5gIGluIGBjb25zdHJ1Y3RfcnVudGltZWAuADRDb25maWd1cmF0aW9uATRDb25maWd1cmF0aW9uDDBBY3RpdmVDb25maWcBAKkMQQMAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAABkAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAACAAAAAgAAAAIAAAAAAQAAAAEAAAABAAAAAAEAAAAAAAAAAAAAABAnAACAsuYOgMPJAYCWmAAAAAAAAAAAAAAAAAAFAAAABMggVGhlIGFjdGl2ZSBjb25maWd1cmF0aW9uIGZvciB0aGUgY3VycmVudCBzZXNzaW9uLgA4UGVuZGluZ0NvbmZpZ3MBAK0MBAAcfCBQZW5kaW5nIGNvbmZpZ3VyYXRpb24gY2hhbmdlcy4AWQEgVGhpcyBpcyBhIGxpc3Qgb2YgY29uZmlndXJhdGlvbiBjaGFuZ2VzLCBlYWNoIHdpdGggYSBzZXNzaW9uIGluZGV4IGF0IHdoaWNoIGl0IHNob3VsZDAgYmUgYXBwbGllZC4AYQEgVGhlIGxpc3QgaXMgc29ydGVkIGFzY2VuZGluZyBieSBzZXNzaW9uIGluZGV4LiBBbHNvLCB0aGlzIGxpc3QgY2FuIG9ubHkgY29udGFpbiBhdCBtb3N0/CAyIGl0ZW1zOiBmb3IgdGhlIG5leHQgc2Vzc2lvbiBhbmQgZm9yIHRoZSBgc2NoZWR1bGVkX3Nlc3Npb25gLgBYQnlwYXNzQ29uc2lzdGVuY3lDaGVjawEAmAQACGEBIElmIHRoaXMgaXMgc2V0LCB0aGVuIHRoZSBjb25maWd1cmF0aW9uIHNldHRlcnMgd2lsbCBieXBhc3MgdGhlIGNvbnNpc3RlbmN5IGNoZWNrcy4gVGhpc7QgaXMgbWVhbnQgdG8gYmUgdXNlZCBvbmx5IGFzIHRoZSBsYXN0IHJlc29ydC4AAcUDAAAAAbUMAAAAMwAALFBhcmFzU2hhcmVkASxQYXJhc1NoYXJlZBBMQ3VycmVudFNlc3Npb25JbmRleAEAOBAAAAAABGwgVGhlIGN1cnJlbnQgc2Vzc2lvbiBpbmRleC4AWEFjdGl2ZVZhbGlkYXRvckluZGljZXMBALkMBAAICQEgQWxsIHRoZSB2YWxpZGF0b3JzIGFjdGl2ZWx5IHBhcnRpY2lwYXRpbmcgaW4gcGFyYWNoYWluIGNvbnNlbnN1cy6wIEluZGljZXMgYXJlIGludG8gdGhlIGJyb2FkZXIgdmFsaWRhdG9yIHNldC4ATEFjdGl2ZVZhbGlkYXRvcktleXMBAL0MBAAIVQEgVGhlIHBhcmFjaGFpbiBhdHRlc3RhdGlvbiBrZXlzIG9mIHRoZSB2YWxpZGF0b3JzIGFjdGl2ZWx5IHBhcnRpY2lwYXRpbmcgaW4gcGFyYWNoYWluHQEgY29uc2Vuc3VzLiBUaGlzIHNob3VsZCBiZSB0aGUgc2FtZSBsZW5ndGggYXMgYEFjdGl2ZVZhbGlkYXRvckluZGljZXNgLgBMQWxsb3dlZFJlbGF5UGFyZW50cwEAwQwUAAAAAAAEbCBBbGwgYWxsb3dlZCByZWxheS1wYXJlbnRzLgAB6QMAAAAAAAA0AAA0UGFyYUluY2x1c2lvbgE0UGFyYUluY2x1c2lvbgQIVjEAAQQFFQLtDAQAFGEBIENhbmRpZGF0ZXMgcGVuZGluZyBhdmFpbGFiaWxpdHkgYnkgYFBhcmFJZGAuIFRoZXkgZm9ybSBhIGNoYWluIHN0YXJ0aW5nIGZyb20gdGhlIGxhdGVzdGwgaW5jbHVkZWQgaGVhZCBvZiB0aGUgcGFyYS5hASBVc2UgYSBkaWZmZXJlbnQgcHJlZml4IHBvc3QtbWlncmF0aW9uIHRvIHYxLCBzaW5jZSB0aGUgdjAgYFBlbmRpbmdBdmFpbGFiaWxpdHlgIHN0b3JhZ2VxASB3b3VsZCBvdGhlcndpc2UgaGF2ZSB0aGUgZXhhY3Qgc2FtZSBwcmVmaXggd2hpY2ggY291bGQgY2F1c2UgdW5kZWZpbmVkIGJlaGF2aW91ciB3aGVuIGRvaW5nPCB0aGUgbWlncmF0aW9uLgAB7QMAAbkIAAAB9QwAAAA1AAAwUGFyYUluaGVyZW50ATBQYXJhSW5oZXJlbnQIIEluY2x1ZGVkAAAQBAAY7CBXaGV0aGVyIHRoZSBwYXJhcyBpbmhlcmVudCB3YXMgaW5jbHVkZWQgd2l0aGluIHRoaXMgYmxvY2suAGkBIFRoZSBgT3B0aW9uPCgpPmAgaXMgZWZmZWN0aXZlbHkgYSBgYm9vbGAsIGJ1dCBpdCBuZXZlciBoaXRzIHN0b3JhZ2UgaW4gdGhlIGBOb25lYCB2YXJpYW50vCBkdWUgdG8gdGhlIGd1YXJhbnRlZXMgb2YgRlJBTUUncyBzdG9yYWdlIEFQSXMuAEkBIElmIHRoaXMgaXMgYE5vbmVgIGF0IHRoZSBlbmQgb2YgdGhlIGJsb2NrLCB3ZSBwYW5pYyBhbmQgcmVuZGVyIHRoZSBibG9jayBpbnZhbGlkLgAwT25DaGFpblZvdGVzAAD5DAQABEUBIFNjcmFwZWQgb24gY2hhaW4gZGF0YSBmb3IgZXh0cmFjdGluZyByZXNvbHZlZCBkaXNwdXRlcyBhcyB3ZWxsIGFzIGJhY2tpbmcgdm90ZXMuAAHxAwAAAAENDQAAADYAADRQYXJhU2NoZWR1bGVyATRQYXJhU2NoZWR1bGVyDDxWYWxpZGF0b3JHcm91cHMBABENBAAcbQEgQWxsIHRoZSB2YWxpZGF0b3IgZ3JvdXBzLiBPbmUgZm9yIGVhY2ggY29yZS4gSW5kaWNlcyBhcmUgaW50byBgQWN0aXZlVmFsaWRhdG9yc2AgLSBub3QgdGhlbQEgYnJvYWRlciBzZXQgb2YgUG9sa2Fkb3QgdmFsaWRhdG9ycywgYnV0IGluc3RlYWQganVzdCB0aGUgc3Vic2V0IHVzZWQgZm9yIHBhcmFjaGFpbnMgZHVyaW5nOCB0aGlzIHNlc3Npb24uAEkBIEJvdW5kOiBUaGUgbnVtYmVyIG9mIGNvcmVzIGlzIHRoZSBzdW0gb2YgdGhlIG51bWJlcnMgb2YgcGFyYWNoYWlucyBhbmQgcGFyYXRocmVhZGkBIG11bHRpcGxleGVycy4gUmVhc29uYWJseSwgMTAwLTEwMDAuIFRoZSBkb21pbmFudCBmYWN0b3IgaXMgdGhlIG51bWJlciBvZiB2YWxpZGF0b3JzOiBzYWZlUCB1cHBlciBib3VuZCBhdCAxMGsuAERTZXNzaW9uU3RhcnRCbG9jawEAOBAAAAAAHGkBIFRoZSBibG9jayBudW1iZXIgd2hlcmUgdGhlIHNlc3Npb24gc3RhcnQgb2NjdXJyZWQuIFVzZWQgdG8gdHJhY2sgaG93IG1hbnkgZ3JvdXAgcm90YXRpb25zPCBoYXZlIG9jY3VycmVkLgBVASBOb3RlIHRoYXQgaW4gdGhlIGNvbnRleHQgb2YgcGFyYWNoYWlucyBtb2R1bGVzIHRoZSBzZXNzaW9uIGNoYW5nZSBpcyBzaWduYWxlZCBkdXJpbmdhASB0aGUgYmxvY2sgYW5kIGVuYWN0ZWQgYXQgdGhlIGVuZCBvZiB0aGUgYmxvY2sgKGF0IHRoZSBmaW5hbGl6YXRpb24gc3RhZ2UsIHRvIGJlIGV4YWN0KS5ZASBUaHVzIGZvciBhbGwgaW50ZW50cyBhbmQgcHVycG9zZXMgdGhlIGVmZmVjdCBvZiB0aGUgc2Vzc2lvbiBjaGFuZ2UgaXMgb2JzZXJ2ZWQgYXQgdGhlZQEgYmxvY2sgZm9sbG93aW5nIHRoZSBzZXNzaW9uIGNoYW5nZSwgYmxvY2sgbnVtYmVyIG9mIHdoaWNoIHdlIHNhdmUgaW4gdGhpcyBzdG9yYWdlIHZhbHVlLgAoQ2xhaW1RdWV1ZQEAFQ0EAAhZASBPbmUgZW50cnkgZm9yIGVhY2ggYXZhaWxhYmlsaXR5IGNvcmUuIFRoZSBgVmVjRGVxdWVgIHJlcHJlc2VudHMgdGhlIGFzc2lnbm1lbnRzIHRvIGJlYCBzY2hlZHVsZWQgb24gdGhhdCBjb3JlLgAAAAAAAAA3AAAUUGFyYXMBFFBhcmFzWEBQdmZBY3RpdmVWb3RlTWFwAAEEBS0EKQ0EABC0IEFsbCBjdXJyZW50bHkgYWN0aXZlIFBWRiBwcmUtY2hlY2tpbmcgdm90ZXMuACwgSW52YXJpYW50OnUBIC0gVGhlcmUgYXJlIG5vIFBWRiBwcmUtY2hlY2tpbmcgdm90ZXMgdGhhdCBleGlzdHMgaW4gbGlzdCBidXQgbm90IGluIHRoZSBzZXQgYW5kIHZpY2UgdmVyc2EuAERQdmZBY3RpdmVWb3RlTGlzdAEAOQ0EAAQ1ASBUaGUgbGlzdCBvZiBhbGwgY3VycmVudGx5IGFjdGl2ZSBQVkYgdm90ZXMuIEF1eGlsaWFyeSB0byBgUHZmQWN0aXZlVm90ZU1hcGAuAChQYXJhY2hhaW5zAQA9DQQAEGkBIEFsbCBsZWFzZSBob2xkaW5nIHBhcmFjaGFpbnMuIE9yZGVyZWQgYXNjZW5kaW5nIGJ5IGBQYXJhSWRgLiBPbiBkZW1hbmQgcGFyYWNoYWlucyBhcmUgbm90KCBpbmNsdWRlZC4A6CBDb25zaWRlciB1c2luZyB0aGUgW2BQYXJhY2hhaW5zQ2FjaGVgXSB0eXBlIG9mIG1vZGlmeWluZy4AOFBhcmFMaWZlY3ljbGVzAAEEBRUCQQ0EAAS8IFRoZSBjdXJyZW50IGxpZmVjeWNsZSBvZiBhIGFsbCBrbm93biBQYXJhIElEcy4AFEhlYWRzAAEEBRUCTQQEAASgIFRoZSBoZWFkLWRhdGEgb2YgZXZlcnkgcmVnaXN0ZXJlZCBwYXJhLgBETW9zdFJlY2VudENvbnRleHQAAQQFFQI4BAAEKQEgVGhlIGNvbnRleHQgKHJlbGF5LWNoYWluIGJsb2NrIG51bWJlcikgb2YgdGhlIG1vc3QgcmVjZW50IHBhcmFjaGFpbiBoZWFkLgA8Q3VycmVudENvZGVIYXNoAAEEBRUCLQQEAAy0IFRoZSB2YWxpZGF0aW9uIGNvZGUgaGFzaCBvZiBldmVyeSBsaXZlIHBhcmEuAOQgQ29ycmVzcG9uZGluZyBjb2RlIGNhbiBiZSByZXRyaWV2ZWQgd2l0aCBbYENvZGVCeUhhc2hgXS4AMFBhc3RDb2RlSGFzaAABBAVFDS0EBAAQYQEgQWN0dWFsIHBhc3QgY29kZSBoYXNoLCBpbmRpY2F0ZWQgYnkgdGhlIHBhcmEgaWQgYXMgd2VsbCBhcyB0aGUgYmxvY2sgbnVtYmVyIGF0IHdoaWNoIGl0RCBiZWNhbWUgb3V0ZGF0ZWQuAOQgQ29ycmVzcG9uZGluZyBjb2RlIGNhbiBiZSByZXRyaWV2ZWQgd2l0aCBbYENvZGVCeUhhc2hgXS4AMFBhc3RDb2RlTWV0YQEBBAUVAkkNCAAADEkBIFBhc3QgY29kZSBvZiBwYXJhY2hhaW5zLiBUaGUgcGFyYWNoYWlucyB0aGVtc2VsdmVzIG1heSBub3QgYmUgcmVnaXN0ZXJlZCBhbnltb3JlLEkBIGJ1dCB3ZSBhbHNvIGtlZXAgdGhlaXIgY29kZSBvbi1jaGFpbiBmb3IgdGhlIHNhbWUgYW1vdW50IG9mIHRpbWUgYXMgb3V0ZGF0ZWQgY29kZbAgdG8ga2VlcCBpdCBhdmFpbGFibGUgZm9yIGFwcHJvdmFsIGNoZWNrZXJzLgA8UGFzdENvZGVQcnVuaW5nAQBVDQQAGGkBIFdoaWNoIHBhcmFzIGhhdmUgcGFzdCBjb2RlIHRoYXQgbmVlZHMgcHJ1bmluZyBhbmQgdGhlIHJlbGF5LWNoYWluIGJsb2NrIGF0IHdoaWNoIHRoZSBjb2RlaQEgd2FzIHJlcGxhY2VkLiBOb3RlIHRoYXQgdGhpcyBpcyB0aGUgYWN0dWFsIGhlaWdodCBvZiB0aGUgaW5jbHVkZWQgYmxvY2ssIG5vdCB0aGUgZXhwZWN0ZWQ9ASBoZWlnaHQgYXQgd2hpY2ggdGhlIGNvZGUgdXBncmFkZSB3b3VsZCBiZSBhcHBsaWVkLCBhbHRob3VnaCB0aGV5IG1heSBiZSBlcXVhbC5tASBUaGlzIGlzIHRvIGVuc3VyZSB0aGUgZW50aXJlIGFjY2VwdGFuY2UgcGVyaW9kIGlzIGNvdmVyZWQsIG5vdCBhbiBvZmZzZXQgYWNjZXB0YW5jZSBwZXJpb2RtASBzdGFydGluZyBmcm9tIHRoZSB0aW1lIGF0IHdoaWNoIHRoZSBwYXJhY2hhaW4gcGVyY2VpdmVzIGEgY29kZSB1cGdyYWRlIGFzIGhhdmluZyBvY2N1cnJlZC5VASBNdWx0aXBsZSBlbnRyaWVzIGZvciBhIHNpbmdsZSBwYXJhIGFyZSBwZXJtaXR0ZWQuIE9yZGVyZWQgYXNjZW5kaW5nIGJ5IGJsb2NrIG51bWJlci4ASEZ1dHVyZUNvZGVVcGdyYWRlcwABBAUVAjgEABA9ASBUaGUgYmxvY2sgbnVtYmVyIGF0IHdoaWNoIHRoZSBwbGFubmVkIGNvZGUgY2hhbmdlIGlzIGV4cGVjdGVkIGZvciBhIHBhcmFjaGFpbi4AZQEgVGhlIGNoYW5nZSB3aWxsIGJlIGFwcGxpZWQgYWZ0ZXIgdGhlIGZpcnN0IHBhcmFibG9jayBmb3IgdGhpcyBJRCBpbmNsdWRlZCB3aGljaCBleGVjdXRlcxkBIGluIHRoZSBjb250ZXh0IG9mIGEgcmVsYXkgY2hhaW4gYmxvY2sgd2l0aCBhIG51bWJlciA+PSBgZXhwZWN0ZWRfYXRgLgBQRnV0dXJlQ29kZVVwZ3JhZGVzQXQBAFUNBAAgrCBUaGUgbGlzdCBvZiB1cGNvbWluZyBmdXR1cmUgY29kZSB1cGdyYWRlcy4AbQEgRWFjaCBpdGVtIGlzIGEgcGFpciBvZiB0aGUgcGFyYWNoYWluIGFuZCB0aGUgZXhwZWN0ZWQgYmxvY2sgYXQgd2hpY2ggdGhlIHVwZ3JhZGUgc2hvdWxkIGJlUQEgYXBwbGllZC4gVGhlIHVwZ3JhZGUgd2lsbCBiZSBhcHBsaWVkIGF0IHRoZSBnaXZlbiByZWxheSBjaGFpbiBibG9jay4gSW4gY29udHJhc3QgdG91ASBbYEZ1dHVyZUNvZGVVcGdyYWRlc2BdIHRoaXMgY29kZSB1cGdyYWRlIHdpbGwgYmUgYXBwbGllZCByZWdhcmRsZXNzIHRoZSBwYXJhY2hhaW4gbWFraW5nIGFueUQgcHJvZ3Jlc3Mgb3Igbm90LgCMIE9yZGVyZWQgYXNjZW5kaW5nIGJ5IGJsb2NrIG51bWJlci4AOEZ1dHVyZUNvZGVIYXNoAAEEBRUCLQQEAAycIFRoZSBhY3R1YWwgZnV0dXJlIGNvZGUgaGFzaCBvZiBhIHBhcmEuAOQgQ29ycmVzcG9uZGluZyBjb2RlIGNhbiBiZSByZXRyaWV2ZWQgd2l0aCBbYENvZGVCeUhhc2hgXS4ASEF1dGhvcml6ZWRDb2RlSGFzaAABBAUVAlkNBAAEbQEgVGhlIGNvZGUgaGFzaCBhdXRob3JpemF0aW9ucyBmb3IgYSBwYXJhIHdoaWNoIHdpbGwgZXhwaXJlIGBleHBpcmVfYXRgIGBCbG9ja051bWJlckZvcjxUPmAuAFBVcGdyYWRlR29BaGVhZFNpZ25hbAABBAUVAl0NBAAodQEgVGhpcyBpcyB1c2VkIGJ5IHRoZSByZWxheS1jaGFpbiB0byBjb21tdW5pY2F0ZSB0byBhIHBhcmFjaGFpbiBhIGdvLWFoZWFkIHdpdGggaW4gdGhlIHVwZ3JhZGUsIHByb2NlZHVyZS4AdQEgVGhpcyB2YWx1ZSBpcyBhYnNlbnQgd2hlbiB0aGVyZSBhcmUgbm8gdXBncmFkZXMgc2NoZWR1bGVkIG9yIGR1cmluZyB0aGUgdGltZSB0aGUgcmVsYXkgY2hhaW5VASBwZXJmb3JtcyB0aGUgY2hlY2tzLiBJdCBpcyBzZXQgYXQgdGhlIGZpcnN0IHJlbGF5LWNoYWluIGJsb2NrIHdoZW4gdGhlIGNvcnJlc3BvbmRpbmd1ASBwYXJhY2hhaW4gY2FuIHN3aXRjaCBpdHMgdXBncmFkZSBmdW5jdGlvbi4gQXMgc29vbiBhcyB0aGUgcGFyYWNoYWluJ3MgYmxvY2sgaXMgaW5jbHVkZWQsIHRoZXAgdmFsdWUgZ2V0cyByZXNldCB0byBgTm9uZWAuAGUBIE5PVEUgdGhhdCB0aGlzIGZpZWxkIGlzIHVzZWQgYnkgcGFyYWNoYWlucyB2aWEgbWVya2xlIHN0b3JhZ2UgcHJvb2ZzLCB0aGVyZWZvcmUgY2hhbmdpbmfEIHRoZSBmb3JtYXQgd2lsbCByZXF1aXJlIG1pZ3JhdGlvbiBvZiBwYXJhY2hhaW5zLgBgVXBncmFkZVJlc3RyaWN0aW9uU2lnbmFsAAEEBRUCYQ0EACRpASBUaGlzIGlzIHVzZWQgYnkgdGhlIHJlbGF5LWNoYWluIHRvIGNvbW11bmljYXRlIHRoYXQgdGhlcmUgYXJlIHJlc3RyaWN0aW9ucyBmb3IgcGVyZm9ybWluZ3wgYW4gdXBncmFkZSBmb3IgdGhpcyBwYXJhY2hhaW4uAFkBIFRoaXMgbWF5IGJlIGEgYmVjYXVzZSB0aGUgcGFyYWNoYWluIHdhaXRzIGZvciB0aGUgdXBncmFkZSBjb29sZG93biB0byBleHBpcmUuIEFub3RoZXJtASBwb3RlbnRpYWwgdXNlIGNhc2UgaXMgd2hlbiB3ZSB3YW50IHRvIHBlcmZvcm0gc29tZSBtYWludGVuYW5jZSAoc3VjaCBhcyBzdG9yYWdlIG1pZ3JhdGlvbingIHdlIGNvdWxkIHJlc3RyaWN0IHVwZ3JhZGVzIHRvIG1ha2UgdGhlIHByb2Nlc3Mgc2ltcGxlci4AZQEgTk9URSB0aGF0IHRoaXMgZmllbGQgaXMgdXNlZCBieSBwYXJhY2hhaW5zIHZpYSBtZXJrbGUgc3RvcmFnZSBwcm9vZnMsIHRoZXJlZm9yZSBjaGFuZ2luZ8QgdGhlIGZvcm1hdCB3aWxsIHJlcXVpcmUgbWlncmF0aW9uIG9mIHBhcmFjaGFpbnMuAEBVcGdyYWRlQ29vbGRvd25zAQBVDQQADFEBIFRoZSBsaXN0IG9mIHBhcmFjaGFpbnMgdGhhdCBhcmUgYXdhaXRpbmcgZm9yIHRoZWlyIHVwZ3JhZGUgcmVzdHJpY3Rpb24gdG8gY29vbGRvd24uAIwgT3JkZXJlZCBhc2NlbmRpbmcgYnkgYmxvY2sgbnVtYmVyLgBAVXBjb21pbmdVcGdyYWRlcwEAVQ0EABiQIFRoZSBsaXN0IG9mIHVwY29taW5nIGNvZGUgdXBncmFkZXMuAHEBIEVhY2ggaXRlbSBpcyBhIHBhaXIgb2Ygd2hpY2ggcGFyYSBwZXJmb3JtcyBhIGNvZGUgdXBncmFkZSBhbmQgYXQgd2hpY2ggcmVsYXktY2hhaW4gYmxvY2sgaXRAIGlzIGV4cGVjdGVkIGF0LgCMIE9yZGVyZWQgYXNjZW5kaW5nIGJ5IGJsb2NrIG51bWJlci4AMEFjdGlvbnNRdWV1ZQEBBAU4PQ0EAAQVASBUaGUgYWN0aW9ucyB0byBwZXJmb3JtIGR1cmluZyB0aGUgc3RhcnQgb2YgYSBzcGVjaWZpYyBzZXNzaW9uIGluZGV4LgBQVXBjb21pbmdQYXJhc0dlbmVzaXMAAQQFFQJlDQQAEKAgVXBjb21pbmcgcGFyYXMgaW5zdGFudGlhdGlvbiBhcmd1bWVudHMuAGUBIE5PVEUgdGhhdCBhZnRlciBQVkYgcHJlLWNoZWNraW5nIGlzIGVuYWJsZWQgdGhlIHBhcmEgZ2VuZXNpcyBhcmcgd2lsbCBoYXZlIGl0J3MgY29kZSBzZXRhASB0byBlbXB0eS4gSW5zdGVhZCwgdGhlIGNvZGUgd2lsbCBiZSBzYXZlZCBpbnRvIHRoZSBzdG9yYWdlIHJpZ2h0IGF3YXkgdmlhIGBDb2RlQnlIYXNoYC4AOENvZGVCeUhhc2hSZWZzAQEEBi0EOBAAAAAABCkBIFRoZSBudW1iZXIgb2YgcmVmZXJlbmNlIG9uIHRoZSB2YWxpZGF0aW9uIGNvZGUgaW4gW2BDb2RlQnlIYXNoYF0gc3RvcmFnZS4AKENvZGVCeUhhc2gAAQQGLQRJBAQAEJAgVmFsaWRhdGlvbiBjb2RlIHN0b3JlZCBieSBpdHMgaGFzaC4AMQEgVGhpcyBzdG9yYWdlIGlzIGNvbnNpc3RlbnQgd2l0aCBbYEZ1dHVyZUNvZGVIYXNoYF0sIFtgQ3VycmVudENvZGVIYXNoYF0gYW5kSCBbYFBhc3RDb2RlSGFzaGBdLgABfQQAAckIAARAVW5zaWduZWRQcmlvcml0eSgg//////////8AAAFpDQAABM1xCzC9LqsDUt3MJkF6oZR1ygRJAdr/aJAUe8l/QVY5cHJlbW92ZV91cGdyYWRlX2Nvb2xkb3duX2Nvc3QEEHBhcmEVAqQEIQEgUmV0dXJucyB0aGUgY29zdCBmb3IgcmVtb3ZpbmcgYW4gdXBncmFkZSBjb29sZG93biBmb3IgdGhlIGdpdmVuIGBwYXJhYC4AOAAALEluaXRpYWxpemVyASxJbml0aWFsaXplcgg4SGFzSW5pdGlhbGl6ZWQAABAEACAhASBXaGV0aGVyIHRoZSBwYXJhY2hhaW5zIG1vZHVsZXMgaGF2ZSBiZWVuIGluaXRpYWxpemVkIHdpdGhpbiB0aGlzIGJsb2NrLgAlASBTZW1hbnRpY2FsbHkgYSBgYm9vbGAsIGJ1dCB0aGlzIGd1YXJhbnRlZXMgaXQgc2hvdWxkIG5ldmVyIGhpdCB0aGUgdHJpZSxpASBhcyB0aGlzIGlzIGNsZWFyZWQgaW4gYG9uX2ZpbmFsaXplYCBhbmQgRnJhbWUgb3B0aW1pemVzIGBOb25lYCB2YWx1ZXMgdG8gYmUgZW1wdHkgdmFsdWVzLgBxASBBcyBhIGBib29sYCwgYHNldChmYWxzZSlgIGFuZCBgcmVtb3ZlKClgIGJvdGggbGVhZCB0byB0aGUgbmV4dCBgZ2V0KClgIGJlaW5nIGZhbHNlLCBidXQgb25ldQEgb2YgdGhlbSB3cml0ZXMgdG8gdGhlIHRyaWUgYW5kIG9uZSBkb2VzIG5vdC4gVGhpcyBjb25mdXNpb24gbWFrZXMgYE9wdGlvbjwoKT5gIG1vcmUgc3VpdGFibGWQIGZvciB0aGUgc2VtYW50aWNzIG9mIHRoaXMgdmFyaWFibGUuAFhCdWZmZXJlZFNlc3Npb25DaGFuZ2VzAQBtDQQAHGggQnVmZmVyZWQgc2Vzc2lvbiBjaGFuZ2VzLgBdASBUeXBpY2FsbHkgdGhpcyB3aWxsIGJlIGVtcHR5IG9yIG9uZSBlbGVtZW50IGxvbmcuIEFwYXJ0IGZyb20gdGhhdCB0aGlzIGl0ZW0gbmV2ZXIgaGl0czQgdGhlIHN0b3JhZ2UuAGkBIEhvd2V2ZXIgdGhpcyBpcyBhIGBWZWNgIHJlZ2FyZGxlc3MgdG8gaGFuZGxlIHZhcmlvdXMgZWRnZSBjYXNlcyB0aGF0IG1heSBvY2N1ciBhdCBydW50aW1lwCB1cGdyYWRlIGJvdW5kYXJpZXMgb3IgaWYgZ292ZXJuYW5jZSBpbnRlcnZlbmVzLgABhQQAAAAAAAA5AAAMRG1wAQxEbXAMVERvd253YXJkTWVzc2FnZVF1ZXVlcwEBBAUVAnUNBAAE0CBUaGUgZG93bndhcmQgbWVzc2FnZXMgYWRkcmVzc2VkIGZvciBhIGNlcnRhaW4gcGFyYS4AZERvd253YXJkTWVzc2FnZVF1ZXVlSGVhZHMBAQQFFQI8gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHCUBIEEgbWFwcGluZyB0aGF0IHN0b3JlcyB0aGUgZG93bndhcmQgbWVzc2FnZSBxdWV1ZSBNUUMgaGVhZCBmb3IgZWFjaCBwYXJhLgCQIEVhY2ggbGluayBpbiB0aGlzIGNoYWluIGhhcyBhIGZvcm06eCBgKHByZXZfaGVhZCwgQiwgSChNKSlgLCB3aGVyZeggLSBgcHJldl9oZWFkYDogaXMgdGhlIHByZXZpb3VzIGhlYWQgaGFzaCBvciB6ZXJvIGlmIG5vbmUuIQEgLSBgQmA6IGlzIHRoZSByZWxheS1jaGFpbiBibG9jayBudW1iZXIgaW4gd2hpY2ggYSBtZXNzYWdlIHdhcyBhcHBlbmRlZC7UIC0gYEgoTSlgOiBpcyB0aGUgaGFzaCBvZiB0aGUgbWVzc2FnZSBiZWluZyBhcHBlbmRlZC4ARERlbGl2ZXJ5RmVlRmFjdG9yAQEEBRUCfQZAAABkp7O24A0AAAAAAAAAAATEIFRoZSBmYWN0b3IgdG8gbXVsdGlwbHkgdGhlIGJhc2UgZGVsaXZlcnkgZmVlIGJ5LgAAAAAAAAA6AAAQSHJtcAEQSHJtcDBcSHJtcE9wZW5DaGFubmVsUmVxdWVzdHMAAQQFjQR9DQQAGLwgVGhlIHNldCBvZiBwZW5kaW5nIEhSTVAgb3BlbiBjaGFubmVsIHJlcXVlc3RzLgDAIFRoZSBzZXQgaXMgYWNjb21wYW5pZWQgYnkgYSBsaXN0IGZvciBpdGVyYXRpb24uACwgSW52YXJpYW50Oj0BIC0gVGhlcmUgYXJlIG5vIGNoYW5uZWxzIHRoYXQgZXhpc3RzIGluIGxpc3QgYnV0IG5vdCBpbiB0aGUgc2V0IGFuZCB2aWNlIHZlcnNhLgBsSHJtcE9wZW5DaGFubmVsUmVxdWVzdHNMaXN0AQCBDQQAAABsSHJtcE9wZW5DaGFubmVsUmVxdWVzdENvdW50AQEEBRUCOBAAAAAADGUBIFRoaXMgbWFwcGluZyB0cmFja3MgaG93IG1hbnkgb3BlbiBjaGFubmVsIHJlcXVlc3RzIGFyZSBpbml0aWF0ZWQgYnkgYSBnaXZlbiBzZW5kZXIgcGFyYS5ZASBJbnZhcmlhbnQ6IGBIcm1wT3BlbkNoYW5uZWxSZXF1ZXN0c2Agc2hvdWxkIGNvbnRhaW4gdGhlIHNhbWUgbnVtYmVyIG9mIGl0ZW1zIHRoYXQgaGFzBQEgYChYLCBfKWAgYXMgdGhlIG51bWJlciBvZiBgSHJtcE9wZW5DaGFubmVsUmVxdWVzdENvdW50YCBmb3IgYFhgLgB8SHJtcEFjY2VwdGVkQ2hhbm5lbFJlcXVlc3RDb3VudAEBBAUVAjgQAAAAAAxxASBUaGlzIG1hcHBpbmcgdHJhY2tzIGhvdyBtYW55IG9wZW4gY2hhbm5lbCByZXF1ZXN0cyB3ZXJlIGFjY2VwdGVkIGJ5IGEgZ2l2ZW4gcmVjaXBpZW50IHBhcmEubQEgSW52YXJpYW50OiBgSHJtcE9wZW5DaGFubmVsUmVxdWVzdHNgIHNob3VsZCBjb250YWluIHRoZSBzYW1lIG51bWJlciBvZiBpdGVtcyBgKF8sIFgpYCB3aXRoVQEgYGNvbmZpcm1lZGAgc2V0IHRvIHRydWUsIGFzIHRoZSBudW1iZXIgb2YgYEhybXBBY2NlcHRlZENoYW5uZWxSZXF1ZXN0Q291bnRgIGZvciBgWGAuAGBIcm1wQ2xvc2VDaGFubmVsUmVxdWVzdHMAAQQFjQQQBAAccQEgQSBzZXQgb2YgcGVuZGluZyBIUk1QIGNsb3NlIGNoYW5uZWwgcmVxdWVzdHMgdGhhdCBhcmUgZ29pbmcgdG8gYmUgY2xvc2VkIGR1cmluZyB0aGUgc2Vzc2lvbiEBIGNoYW5nZS4gVXNlZCBmb3IgY2hlY2tpbmcgaWYgYSBnaXZlbiBjaGFubmVsIGlzIHJlZ2lzdGVyZWQgZm9yIGNsb3N1cmUuAMAgVGhlIHNldCBpcyBhY2NvbXBhbmllZCBieSBhIGxpc3QgZm9yIGl0ZXJhdGlvbi4ALCBJbnZhcmlhbnQ6PQEgLSBUaGVyZSBhcmUgbm8gY2hhbm5lbHMgdGhhdCBleGlzdHMgaW4gbGlzdCBidXQgbm90IGluIHRoZSBzZXQgYW5kIHZpY2UgdmVyc2EuAHBIcm1wQ2xvc2VDaGFubmVsUmVxdWVzdHNMaXN0AQCBDQQAAAA4SHJtcFdhdGVybWFya3MAAQQFFQI4BAAQuCBUaGUgSFJNUCB3YXRlcm1hcmsgYXNzb2NpYXRlZCB3aXRoIGVhY2ggcGFyYS4sIEludmFyaWFudDpVASAtIGVhY2ggcGFyYSBgUGAgdXNlZCBoZXJlIGFzIGEga2V5IHNob3VsZCBzYXRpc2Z5IGBQYXJhczo6aXNfdmFsaWRfcGFyYShQKWAgd2l0aGluIGEsICAgc2Vzc2lvbi4AMEhybXBDaGFubmVscwABBAWNBIUNBAAMtCBIUk1QIGNoYW5uZWwgZGF0YSBhc3NvY2lhdGVkIHdpdGggZWFjaCBwYXJhLiwgSW52YXJpYW50OnUBIC0gZWFjaCBwYXJ0aWNpcGFudCBpbiB0aGUgY2hhbm5lbCBzaG91bGQgc2F0aXNmeSBgUGFyYXM6OmlzX3ZhbGlkX3BhcmEoUClgIHdpdGhpbiBhIHNlc3Npb24uAGBIcm1wSW5ncmVzc0NoYW5uZWxzSW5kZXgBAQQFFQI9DQQANHEBIEluZ3Jlc3MvZWdyZXNzIGluZGV4ZXMgYWxsb3cgdG8gZmluZCBhbGwgdGhlIHNlbmRlcnMgYW5kIHJlY2VpdmVycyBnaXZlbiB0aGUgb3Bwb3NpdGUgc2lkZS4UIEkuZS4AIQEgKGEpIGluZ3Jlc3MgaW5kZXggYWxsb3dzIHRvIGZpbmQgYWxsIHRoZSBzZW5kZXJzIGZvciBhIGdpdmVuIHJlY2lwaWVudC4dASAoYikgZWdyZXNzIGluZGV4IGFsbG93cyB0byBmaW5kIGFsbCB0aGUgcmVjaXBpZW50cyBmb3IgYSBnaXZlbiBzZW5kZXIuADAgSW52YXJpYW50czpRASAtIGZvciBlYWNoIGluZ3Jlc3MgaW5kZXggZW50cnkgZm9yIGBQYCBlYWNoIGl0ZW0gYElgIGluIHRoZSBpbmRleCBzaG91bGQgcHJlc2VudCBpbnggICBgSHJtcENoYW5uZWxzYCBhcyBgKEksIFApYC5NASAtIGZvciBlYWNoIGVncmVzcyBpbmRleCBlbnRyeSBmb3IgYFBgIGVhY2ggaXRlbSBgRWAgaW4gdGhlIGluZGV4IHNob3VsZCBwcmVzZW50IGlueCAgIGBIcm1wQ2hhbm5lbHNgIGFzIGAoUCwgRSlgLgEBIC0gdGhlcmUgc2hvdWxkIGJlIG5vIG90aGVyIGRhbmdsaW5nIGNoYW5uZWxzIGluIGBIcm1wQ2hhbm5lbHNgLmggLSB0aGUgdmVjdG9ycyBhcmUgc29ydGVkLgBcSHJtcEVncmVzc0NoYW5uZWxzSW5kZXgBAQQFFQI9DQQAAABMSHJtcENoYW5uZWxDb250ZW50cwEBBAWNBIkNBAAIrCBTdG9yYWdlIGZvciB0aGUgbWVzc2FnZXMgZm9yIGVhY2ggY2hhbm5lbC5lASBJbnZhcmlhbnQ6IGNhbm5vdCBiZSBub24tZW1wdHkgaWYgdGhlIGNvcnJlc3BvbmRpbmcgY2hhbm5lbCBpbiBgSHJtcENoYW5uZWxzYCBpcyBgTm9uZWAuAEhIcm1wQ2hhbm5lbERpZ2VzdHMBAQQFFQKRDQQAGGkBIE1haW50YWlucyBhIG1hcHBpbmcgdGhhdCBjYW4gYmUgdXNlZCB0byBhbnN3ZXIgdGhlIHF1ZXN0aW9uOiBXaGF0IHBhcmFzIHNlbnQgYSBtZXNzYWdlIGF05CB0aGUgZ2l2ZW4gYmxvY2sgbnVtYmVyIGZvciBhIGdpdmVuIHJlY2VpdmVyLiBJbnZhcmlhbnRzOqggLSBUaGUgaW5uZXIgYFZlYzxQYXJhSWQ+YCBpcyBuZXZlciBlbXB0eS7oIC0gVGhlIGlubmVyIGBWZWM8UGFyYUlkPmAgY2Fubm90IHN0b3JlIHR3byBzYW1lIGBQYXJhSWRgLm0BIC0gVGhlIG91dGVyIHZlY3RvciBpcyBzb3J0ZWQgYXNjZW5kaW5nIGJ5IGJsb2NrIG51bWJlciBhbmQgY2Fubm90IHN0b3JlIHR3byBpdGVtcyB3aXRoIHRoZVQgICBzYW1lIGJsb2NrIG51bWJlci4AAYkEAAHNCAAAAZkNAAAAPAAAPFBhcmFTZXNzaW9uSW5mbwE8UGFyYVNlc3Npb25JbmZvFFBBc3NpZ25tZW50S2V5c1Vuc2FmZQEAnQ0EAAykIEFzc2lnbm1lbnQga2V5cyBmb3IgdGhlIGN1cnJlbnQgc2Vzc2lvbi5tASBOb3RlIHRoYXQgdGhpcyBBUEkgaXMgcHJpdmF0ZSBkdWUgdG8gaXQgYmVpbmcgcHJvbmUgdG8gJ29mZi1ieS1vbmUnIGF0IHNlc3Npb24gYm91bmRhcmllcy6sIFdoZW4gaW4gZG91YnQsIHVzZSBgU2Vzc2lvbnNgIEFQSSBpbnN0ZWFkLgBURWFybGllc3RTdG9yZWRTZXNzaW9uAQA4EAAAAAAEAQEgVGhlIGVhcmxpZXN0IHNlc3Npb24gZm9yIHdoaWNoIHByZXZpb3VzIHNlc3Npb24gaW5mbyBpcyBzdG9yZWQuACBTZXNzaW9ucwABBAY4oQ0EAAykIFNlc3Npb24gaW5mb3JtYXRpb24gaW4gYSByb2xsaW5nIHdpbmRvdy41ASBTaG91bGQgaGF2ZSBhbiBlbnRyeSBpbiByYW5nZSBgRWFybGllc3RTdG9yZWRTZXNzaW9uLi49Q3VycmVudFNlc3Npb25JbmRleGAudQEgRG9lcyBub3QgaGF2ZSBhbnkgZW50cmllcyBiZWZvcmUgdGhlIHNlc3Npb24gaW5kZXggaW4gdGhlIGZpcnN0IHNlc3Npb24gY2hhbmdlIG5vdGlmaWNhdGlvbi4ALEFjY291bnRLZXlzAAEEBjioBAAEcQEgVGhlIHZhbGlkYXRvciBhY2NvdW50IGtleXMgb2YgdGhlIHZhbGlkYXRvcnMgYWN0aXZlbHkgcGFydGljaXBhdGluZyBpbiBwYXJhY2hhaW4gY29uc2Vuc3VzLgBUU2Vzc2lvbkV4ZWN1dG9yUGFyYW1zAAEEBjjNAwQABMQgRXhlY3V0b3IgcGFyYW1ldGVyIHNldCBmb3IgYSBnaXZlbiBzZXNzaW9uIGluZGV4AAAAAAAAAD0AADRQYXJhc0Rpc3B1dGVzATRQYXJhc0Rpc3B1dGVzFERMYXN0UHJ1bmVkU2Vzc2lvbgAAOAQACAEBIFRoZSBsYXN0IHBydW5lZCBzZXNzaW9uLCBpZiBhbnkuIEFsbCBkYXRhIHN0b3JlZCBieSB0aGlzIG1vZHVsZVQgcmVmZXJlbmNlcyBzZXNzaW9ucy4AIERpc3B1dGVzAAEIBQKtDbENBAAEBQEgQWxsIG9uZ29pbmcgb3IgY29uY2x1ZGVkIGRpc3B1dGVzIGZvciB0aGUgbGFzdCBzZXZlcmFsIHNlc3Npb25zLgBEQmFja2Vyc09uRGlzcHV0ZXMAAQgFAq0NtQ0EAAicIEJhY2tpbmcgdm90ZXMgc3RvcmVkIGZvciBlYWNoIGRpc3B1dGUujCBUaGlzIHN0b3JhZ2UgaXMgdXNlZCBmb3Igc2xhc2hpbmcuACBJbmNsdWRlZAABCAUCrQ04BAAIRQEgQWxsIGluY2x1ZGVkIGJsb2NrcyBvbiB0aGUgY2hhaW4sIGFzIHdlbGwgYXMgdGhlIGJsb2NrIG51bWJlciBpbiB0aGlzIGNoYWluIHRoYXRZASBzaG91bGQgYmUgcmV2ZXJ0ZWQgYmFjayB0byBpZiB0aGUgY2FuZGlkYXRlIGlzIGRpc3B1dGVkIGFuZCBkZXRlcm1pbmVkIHRvIGJlIGludmFsaWQuABhGcm96ZW4BAOUBBAAQEQEgV2hldGhlciB0aGUgY2hhaW4gaXMgZnJvemVuLiBTdGFydHMgYXMgYE5vbmVgLiBXaGVuIHRoaXMgaXMgYFNvbWVgLDUBIHRoZSBjaGFpbiB3aWxsIG5vdCBhY2NlcHQgYW55IG5ldyBwYXJhY2hhaW4gYmxvY2tzIGZvciBiYWNraW5nIG9yIGluY2x1c2lvbiwJASBhbmQgaXRzIHZhbHVlIGluZGljYXRlcyB0aGUgbGFzdCB2YWxpZCBibG9jayBudW1iZXIgaW4gdGhlIGNoYWluLvggSXQgY2FuIG9ubHkgYmUgc2V0IGJhY2sgdG8gYE5vbmVgIGJ5IGdvdmVybmFuY2UgaW50ZXJ2ZW50aW9uLgABkQQAAdEIAAABuQ0AAAA+AAA0UGFyYXNTbGFzaGluZwE0UGFyYXNTbGFzaGluZwhAVW5hcHBsaWVkU2xhc2hlcwABCAUCrQ29DQQABJAgVmFsaWRhdG9ycyBwZW5kaW5nIGRpc3B1dGUgc2xhc2hlcy4ASFZhbGlkYXRvclNldENvdW50cwABBAU4OAQABIQgYFZhbGlkYXRvclNldENvdW50YCBwZXIgc2Vzc2lvbi4AAZUEAAAAAc0NAAg0S2V5T3duZXJQcm9vZnwMCQEgVGhlIHByb29mIG9mIGtleSBvd25lcnNoaXAsIHVzZWQgZm9yIHZhbGlkYXRpbmcgc2xhc2hpbmcgcmVwb3J0cy4RASBUaGUgcHJvb2YgbXVzdCBpbmNsdWRlIHRoZSBzZXNzaW9uIGluZGV4IGFuZCB2YWxpZGF0b3IgY291bnQgb2YgdGhlnCBzZXNzaW9uIGF0IHdoaWNoIHRoZSBvZmZlbmNlIG9jY3VycmVkLlhLZXlPd25lcklkZW50aWZpY2F0aW9ulQoEAQEgVGhlIGlkZW50aWZpY2F0aW9uIG9mIGEga2V5IG93bmVyLCB1c2VkIHdoZW4gcmVwb3J0aW5nIHNsYXNoZXMuAD8AACBPbkRlbWFuZAEgT25EZW1hbmQYOFBhcmFJZEFmZmluaXR5AAEEBRUC0Q0EAAxxASBNYXBzIGEgYFBhcmFJZGAgdG8gYENvcmVJbmRleGAgYW5kIGtlZXBzIHRyYWNrIG9mIGhvdyBtYW55IGFzc2lnbm1lbnRzIHRoZSBzY2hlZHVsZXIgaGFzIGluXQEgaXQncyBsb29rYWhlYWQuIEtlZXBpbmcgdHJhY2sgb2YgdGhpcyBhZmZpbml0eSBwcmV2ZW50cyBwYXJhbGxlbCBleGVjdXRpb24gb2YgdGhlIHNhbWWcIGBQYXJhSWRgIG9uIHR3byBvciBtb3JlIGBDb3JlSW5kZXhgZXMuACxRdWV1ZVN0YXR1cwEA1Q1kAABkp7O24A0AAAAAAAAAAAAAAAAAAAAAAATcIE92ZXJhbGwgc3RhdHVzIG9mIHF1ZXVlIChib3RoIGZyZWUgKyBhZmZpbml0eSBlbnRyaWVzKQAsRnJlZUVudHJpZXMBAOkNBAAEYQEgUHJpb3JpdHkgcXVldWUgZm9yIGFsbCBvcmRlcnMgd2hpY2ggZG9uJ3QgeWV0IChvciBub3QgYW55IG1vcmUpIGhhdmUgYW55IGNvcmUgYWZmaW5pdHkuADxBZmZpbml0eUVudHJpZXMBAQQFwQjpDQQABEkBIFF1ZXVlIGVudHJpZXMgdGhhdCBhcmUgY3VycmVudGx5IGJvdW5kIHRvIGEgcGFydGljdWxhciBjb3JlIGR1ZSB0byBjb3JlIGFmZmluaXR5LgAcUmV2ZW51ZQEA9Q0EAAT8IEtlZXBzIHRyYWNrIG9mIGFjY3VtdWxhdGVkIHJldmVudWUgZnJvbSBvbiBkZW1hbmQgb3JkZXIgc2FsZXMuABxDcmVkaXRzAQEEAgSkQAAAAAAAAAAAAAAAAAAAAAAEuCBLZWVwcyB0cmFjayBvZiBjcmVkaXRzIG93bmVkIGJ5IGVhY2ggYWNjb3VudC4AAaUECAACBQFUaGlzIHdpbGwgYmUgcmVtb3ZlZCBpbiBmYXZvciBvZiB1c2luZyBgcGxhY2Vfb3JkZXJfd2l0aF9jcmVkaXRzYAABAgUBVGhpcyB3aWxsIGJlIHJlbW92ZWQgaW4gZmF2b3Igb2YgdXNpbmcgYHBsYWNlX29yZGVyX3dpdGhfY3JlZGl0c2AAAd0IAAxMVHJhZmZpY0RlZmF1bHRWYWx1ZX0GQAAAZKeztuANAAAAAAAAAAAEzCBUaGUgZGVmYXVsdCB2YWx1ZSBmb3IgdGhlIHNwb3QgdHJhZmZpYyBtdWx0aXBsaWVyLgBQTWF4SGlzdG9yaWNhbFJldmVudWU4EKAAAAAI1CBUaGUgbWF4aW11bSBudW1iZXIgb2YgYmxvY2tzIHNvbWUgaGlzdG9yaWNhbCByZXZlbnVlYCBpbmZvcm1hdGlvbiBzdG9yZWQgZm9yLgAgUGFsbGV0SWTpCiBweS9vbmRtZAS0IElkZW50aWZpZXIgZm9yIHRoZSBpbnRlcm5hbCByZXZlbnVlIGJhbGFuY2UuAAH9DQAAAEAAAGhDb3JldGltZUFzc2lnbm1lbnRQcm92aWRlcgFoQ29yZXRpbWVBc3NpZ25tZW50UHJvdmlkZXIINENvcmVTY2hlZHVsZXMAAQQEAQ4FDgQAEGwgU2NoZWR1bGVkIGFzc2lnbm1lbnQgc2V0cy4AbQEgQXNzaWdubWVudHMgYXMgb2YgdGhlIGdpdmVuIGJsb2NrIG51bWJlci4gVGhleSB3aWxsIGdvIGludG8gc3RhdGUgb25jZSB0aGUgYmxvY2sgbnVtYmVyIGlz0CByZWFjaGVkIChhbmQgcmVwbGFjZSB3aGF0ZXZlciB3YXMgaW4gdGhlcmUgYmVmb3JlKS4APENvcmVEZXNjcmlwdG9ycwEBBATBCAkOCAAAEKAgQXNzaWdubWVudHMgd2hpY2ggYXJlIGN1cnJlbnRseSBhY3RpdmUuAGkBIFRoZXkgd2lsbCBiZSBwaWNrZWQgZnJvbSBgUGVuZGluZ0Fzc2lnbm1lbnRzYCBvbmNlIHdlIHJlYWNoIHRoZSBzY2hlZHVsZWQgYmxvY2sgbnVtYmVyIGluWCBgUGVuZGluZ0Fzc2lnbm1lbnRzYC4AAAAAASkOAAAAQQAAJFJlZ2lzdHJhcgEkUmVnaXN0cmFyDCxQZW5kaW5nU3dhcAABBAUVAhUCBAAEZCBQZW5kaW5nIHN3YXAgb3BlcmF0aW9ucy4AFFBhcmFzAAEEBRUCLQ4EABAFASBBbW91bnQgaGVsZCBvbiBkZXBvc2l0IGZvciBlYWNoIHBhcmEgYW5kIHRoZSBvcmlnaW5hbCBkZXBvc2l0b3IuAHEBIFRoZSBnaXZlbiBhY2NvdW50IElEIGlzIHJlc3BvbnNpYmxlIGZvciByZWdpc3RlcmluZyB0aGUgY29kZSBhbmQgaW5pdGlhbCBoZWFkIGRhdGEsIGJ1dCBtYXlVASBvbmx5IGRvIHNvIGlmIGl0IGlzbid0IHlldCByZWdpc3RlcmVkLiAoQWZ0ZXIgdGhhdCwgaXQncyB1cCB0byBnb3Zlcm5hbmNlIHRvIGRvIHNvLikAOE5leHRGcmVlUGFyYUlkAQAVAhAAAAAABGAgVGhlIG5leHQgZnJlZSBgUGFyYUlkYC4AAakEAAHhCAAILFBhcmFEZXBvc2l0pEAAEKXU6AAAAAAAAAAAAAAACNQgVGhlIGRlcG9zaXQgdG8gYmUgcGFpZCB0byBydW4gYSBvbi1kZW1hbmQgcGFyYWNoYWluLj0BIFRoaXMgc2hvdWxkIGluY2x1ZGUgdGhlIGNvc3QgZm9yIHN0b3JpbmcgdGhlIGdlbmVzaXMgaGVhZCBhbmQgdmFsaWRhdGlvbiBjb2RlLgBIRGF0YURlcG9zaXRQZXJCeXRlpECAlpgAAAAAAAAAAAAAAAAABMQgVGhlIGRlcG9zaXQgdG8gYmUgcGFpZCBwZXIgYnl0ZSBzdG9yZWQgb24gY2hhaW4uAAE1DgAAAEYAABRTbG90cwEUU2xvdHMEGExlYXNlcwEBBAUVAjkOBABAFQEgQW1vdW50cyBoZWxkIG9uIGRlcG9zaXQgZm9yIGVhY2ggKHBvc3NpYmx5IGZ1dHVyZSkgbGVhc2VkIHBhcmFjaGFpbi4AYQEgVGhlIGFjdHVhbCBhbW91bnQgbG9ja2VkIG9uIGl0cyBiZWhhbGYgYnkgYW55IGFjY291bnQgYXQgYW55IHRpbWUgaXMgdGhlIG1heGltdW0gb2YgdGhlKQEgc2Vjb25kIHZhbHVlcyBvZiB0aGUgaXRlbXMgaW4gdGhpcyBsaXN0IHdob3NlIGZpcnN0IHZhbHVlIGlzIHRoZSBhY2NvdW50LgBhASBUaGUgZmlyc3QgaXRlbSBpbiB0aGUgbGlzdCBpcyB0aGUgYW1vdW50IGxvY2tlZCBmb3IgdGhlIGN1cnJlbnQgTGVhc2UgUGVyaW9kLiBGb2xsb3dpbmewIGl0ZW1zIGFyZSBmb3IgdGhlIHN1YnNlcXVlbnQgbGVhc2UgcGVyaW9kcy4AYQEgVGhlIGRlZmF1bHQgdmFsdWUgKGFuIGVtcHR5IGxpc3QpIGltcGxpZXMgdGhhdCB0aGUgcGFyYWNoYWluIG5vIGxvbmdlciBleGlzdHMgKG9yIG5ldmVytCBleGlzdGVkKSBhcyBmYXIgYXMgdGhpcyBwYWxsZXQgaXMgY29uY2VybmVkLgBRASBJZiBhIHBhcmFjaGFpbiBkb2Vzbid0IGV4aXN0ICp5ZXQqIGJ1dCBpcyBzY2hlZHVsZWQgdG8gZXhpc3QgaW4gdGhlIGZ1dHVyZSwgdGhlbiBpdGEBIHdpbGwgYmUgbGVmdC1wYWRkZWQgd2l0aCBvbmUgb3IgbW9yZSBgTm9uZWBzIHRvIGRlbm90ZSB0aGUgZmFjdCB0aGF0IG5vdGhpbmcgaXMgaGVsZCBvbl0BIGRlcG9zaXQgZm9yIHRoZSBub24tZXhpc3RlbnQgY2hhaW4gY3VycmVudGx5LCBidXQgaXMgaGVsZCBhdCBzb21lIHBvaW50IGluIHRoZSBmdXR1cmUuANwgSXQgaXMgaWxsZWdhbCBmb3IgYSBgTm9uZWAgdmFsdWUgdG8gdHJhaWwgaW4gdGhlIGxpc3QuAAGtBAAB5QgACCxMZWFzZVBlcmlvZDgQAHUSAATcIFRoZSBudW1iZXIgb2YgYmxvY2tzIG92ZXIgd2hpY2ggYSBzaW5nbGUgcGVyaW9kIGxhc3RzLgAsTGVhc2VPZmZzZXQ4EAAQDgAE1CBUaGUgbnVtYmVyIG9mIGJsb2NrcyB0byBvZmZzZXQgZWFjaCBsZWFzZSBwZXJpb2QgYnkuAAE9DgAAAEcAACBBdWN0aW9ucwEgQXVjdGlvbnMQOEF1Y3Rpb25Db3VudGVyAQA4EAAAAAAEjCBOdW1iZXIgb2YgYXVjdGlvbnMgc3RhcnRlZCBzbyBmYXIuACxBdWN0aW9uSW5mbwAASAQAFPggSW5mb3JtYXRpb24gcmVsYXRpbmcgdG8gdGhlIGN1cnJlbnQgYXVjdGlvbiwgaWYgdGhlcmUgaXMgb25lLgBFASBUaGUgZmlyc3QgaXRlbSBpbiB0aGUgdHVwbGUgaXMgdGhlIGxlYXNlIHBlcmlvZCBpbmRleCB0aGF0IHRoZSBmaXJzdCBvZiB0aGUgZm91clEBIGNvbnRpZ3VvdXMgbGVhc2UgcGVyaW9kcyBvbiBhdWN0aW9uIGlzIGZvci4gVGhlIHNlY29uZCBpcyB0aGUgYmxvY2sgbnVtYmVyIHdoZW4gdGhlXQEgYXVjdGlvbiB3aWxsICJiZWdpbiB0byBlbmQiLCBpLmUuIHRoZSBmaXJzdCBibG9jayBvZiB0aGUgRW5kaW5nIFBlcmlvZCBvZiB0aGUgYXVjdGlvbi4APFJlc2VydmVkQW1vdW50cwABBAVBDqQEAAgxASBBbW91bnRzIGN1cnJlbnRseSByZXNlcnZlZCBpbiB0aGUgYWNjb3VudHMgb2YgdGhlIGJpZGRlcnMgY3VycmVudGx5IHdpbm5pbmc4IChzdWItKXJhbmdlcy4AHFdpbm5pbmcAAQQFOEUOBAAMYQEgVGhlIHdpbm5pbmcgYmlkcyBmb3IgZWFjaCBvZiB0aGUgMTAgcmFuZ2VzIGF0IGVhY2ggc2FtcGxlIGluIHRoZSBmaW5hbCBFbmRpbmcgUGVyaW9kIG9mSQEgdGhlIGN1cnJlbnQgYXVjdGlvbi4gVGhlIG1hcCdzIGtleSBpcyB0aGUgMC1iYXNlZCBpbmRleCBpbnRvIHRoZSBTYW1wbGUgU2l6ZS4gVGhlHQEgZmlyc3Qgc2FtcGxlIG9mIHRoZSBlbmRpbmcgcGVyaW9kIGlzIDA7IHRoZSBsYXN0IGlzIGBTYW1wbGUgU2l6ZSAtIDFgLgABsQQAAekIABAwRW5kaW5nUGVyaW9kOBBAGQEABB0BIFRoZSBudW1iZXIgb2YgYmxvY2tzIG92ZXIgd2hpY2ggYW4gYXVjdGlvbiBtYXkgYmUgcmV0cm9hY3RpdmVseSBlbmRlZC4AMFNhbXBsZUxlbmd0aDgQFAAAAAzwIFRoZSBsZW5ndGggb2YgZWFjaCBzYW1wbGUgdG8gdGFrZSBkdXJpbmcgdGhlIGVuZGluZyBwZXJpb2QuANQgYEVuZGluZ1BlcmlvZGAgLyBgU2FtcGxlTGVuZ3RoYCA9IFRvdGFsICMgb2YgU2FtcGxlcwA4U2xvdFJhbmdlQ291bnQ4ECQAAAAAAExMZWFzZVBlcmlvZHNQZXJTbG90OBAIAAAAAAABUQ4AAABIAAAkQ3Jvd2Rsb2FuASRDcm93ZGxvYW4QFEZ1bmRzAAEEBRUCVQ4EAARoIEluZm8gb24gYWxsIG9mIHRoZSBmdW5kcy4AIE5ld1JhaXNlAQA9DQQACFUBIFRoZSBmdW5kcyB0aGF0IGhhdmUgaGFkIGFkZGl0aW9uYWwgY29udHJpYnV0aW9ucyBkdXJpbmcgdGhlIGxhc3QgYmxvY2suIFRoaXMgaXMgdXNlZBUBIGluIG9yZGVyIHRvIGRldGVybWluZSB3aGljaCBmdW5kcyBzaG91bGQgc3VibWl0IG5ldyBvciB1cGRhdGVkIGJpZHMuADBFbmRpbmdzQ291bnQBADgQAAAAAAQpASBUaGUgbnVtYmVyIG9mIGF1Y3Rpb25zIHRoYXQgaGF2ZSBlbnRlcmVkIGludG8gdGhlaXIgZW5kaW5nIHBlcmlvZCBzbyBmYXIuADROZXh0RnVuZEluZGV4AQA4EAAAAAAEqCBUcmFja2VyIGZvciB0aGUgbmV4dCBhdmFpbGFibGUgZnVuZCBpbmRleAABuQQAAe0IAAwgUGFsbGV0SWTpCiBweS9jZnVuZAgNASBgUGFsbGV0SWRgIGZvciB0aGUgY3Jvd2Rsb2FuIHBhbGxldC4gQW4gYXBwcm9wcmlhdGUgdmFsdWUgY291bGQgYmVkIGBQYWxsZXRJZCgqYiJweS9jZnVuZCIpYAA8TWluQ29udHJpYnV0aW9upEAAdDukCwAAAAAAAAAAAAAACGEBIFRoZSBtaW5pbXVtIGFtb3VudCB0aGF0IG1heSBiZSBjb250cmlidXRlZCBpbnRvIGEgY3Jvd2Rsb2FuLiBTaG91bGQgYWxtb3N0IGNlcnRhaW5seSBiZXwgYXQgbGVhc3QgYEV4aXN0ZW50aWFsRGVwb3NpdGAuADxSZW1vdmVLZXlzTGltaXQ4EOgDAAAE5CBNYXggbnVtYmVyIG9mIHN0b3JhZ2Uga2V5cyB0byByZW1vdmUgcGVyIGV4dHJpbnNpYyBjYWxsLgABXQ4AAABJAAAgQ29yZXRpbWUAAc0EAAHxCAAIIEJyb2tlcklkOBDtAwAABIggVGhlIFBhcmFJZCBvZiB0aGUgY29yZXRpbWUgY2hhaW4uAERCcm9rZXJQb3RMb2NhdGlvbq0BjAEBAG1vZGxweS9icm9rZQAAAAAAAAAAAAAAAAAAAAAAAAAABIQgVGhlIGNvcmV0aW1lIGNoYWluIHBvdCBsb2NhdGlvbi4AAWEOAAAASgAASFN0YXRlVHJpZU1pZ3JhdGlvbgFIU3RhdGVUcmllTWlncmF0aW9uDEBNaWdyYXRpb25Qcm9jZXNzAQDtBDgAAAAAAAAAAAAAAAAAABBQIE1pZ3JhdGlvbiBwcm9ncmVzcy4AXQEgVGhpcyBzdG9yZXMgdGhlIHNuYXBzaG90IG9mIHRoZSBsYXN0IG1pZ3JhdGVkIGtleXMuIEl0IGNhbiBiZSBzZXQgaW50byBtb3Rpb24gYW5kIG1vdmXUIGZvcndhcmQgYnkgYW55IG9mIHRoZSBtZWFucyBwcm92aWRlZCBieSB0aGlzIHBhbGxldC4AKEF1dG9MaW1pdHMBAOUEBAAM1CBUaGUgbGltaXRzIHRoYXQgYXJlIGltcG9zZWQgb24gYXV0b21hdGljIG1pZ3JhdGlvbnMuANQgSWYgc2V0IHRvIE5vbmUsIHRoZW4gbm8gYXV0b21hdGljIG1pZ3JhdGlvbiBoYXBwZW5zLgBgU2lnbmVkTWlncmF0aW9uTWF4TGltaXRzAADpBAQADOAgVGhlIG1heGltdW0gbGltaXRzIHRoYXQgdGhlIHNpZ25lZCBtaWdyYXRpb24gY291bGQgdXNlLgC0IElmIG5vdCBzZXQsIG5vIHNpZ25lZCBzdWJtaXNzaW9uIGlzIGFsbG93ZWQuAAHhBAAB9QgABCRNYXhLZXlMZW44EAACAABUtCBNYXhpbWFsIG51bWJlciBvZiBieXRlcyB0aGF0IGEga2V5IGNhbiBoYXZlLgCwIEZSQU1FIGl0c2VsZiBkb2VzIG5vdCBsaW1pdCB0aGUga2V5IGxlbmd0aC4BASBUaGUgY29uY3JldGUgdmFsdWUgbXVzdCB0aGVyZWZvcmUgZGVwZW5kIG9uIHlvdXIgc3RvcmFnZSB1c2FnZS5ZASBBIFtgZnJhbWVfc3VwcG9ydDo6c3RvcmFnZTo6U3RvcmFnZU5NYXBgXSBmb3IgZXhhbXBsZSBjYW4gaGF2ZSBhbiBhcmJpdHJhcnkgbnVtYmVyIG9mRQEga2V5cyB3aGljaCBhcmUgdGhlbiBoYXNoZWQgYW5kIGNvbmNhdGVuYXRlZCwgcmVzdWx0aW5nIGluIGFyYml0cmFyaWx5IGxvbmcga2V5cy4AQQEgVXNlIHRoZSAqc3RhdGUgbWlncmF0aW9uIFJQQyogdG8gcmV0cmlldmUgdGhlIGxlbmd0aCBvZiB0aGUgbG9uZ2VzdCBrZXkgaW4geW91cgEBIHN0b3JhZ2U6IDxodHRwczovL2dpdGh1Yi5jb20vcGFyaXR5dGVjaC9zdWJzdHJhdGUvaXNzdWVzLzExNjQyPgApASBUaGUgbWlncmF0aW9uIHdpbGwgaGFsdCB3aXRoIGEgYEhhbHRlZGAgZXZlbnQgaWYgdGhpcyB2YWx1ZSBpcyB0b28gc21hbGwuSQEgU2luY2UgdGhlcmUgaXMgbm8gcmVhbCBwZW5hbHR5IGZyb20gb3Zlci1lc3RpbWF0aW5nLCBpdCBpcyBhZHZpc2VkIHRvIHVzZSBhIGxhcmdlgCB2YWx1ZS4gVGhlIGRlZmF1bHQgaXMgNTEyIGJ5dGUuAIAgU29tZSBrZXkgbGVuZ3RocyBmb3IgcmVmZXJlbmNlOtAgLSBbYGZyYW1lX3N1cHBvcnQ6OnN0b3JhZ2U6OlN0b3JhZ2VWYWx1ZWBdOiAzMiBieXRlyCAtIFtgZnJhbWVfc3VwcG9ydDo6c3RvcmFnZTo6U3RvcmFnZU1hcGBdOiA2NCBieXRl4CAtIFtgZnJhbWVfc3VwcG9ydDo6c3RvcmFnZTo6U3RvcmFnZURvdWJsZU1hcGBdOiA5NiBieXRlAEggRm9yIG1vcmUgaW5mbyBzZWVJASA8aHR0cHM6Ly93d3cuc2hhd250YWJyaXppLmNvbS9ibG9nL3N1YnN0cmF0ZS9xdWVyeWluZy1zdWJzdHJhdGUtc3RvcmFnZS12aWEtcnBjLz4AAf0IAAAAYgAAJFhjbVBhbGxldAEkWGNtUGFsbGV0PDBRdWVyeUNvdW50ZXIBACggAAAAAAAAAAAEiCBUaGUgbGF0ZXN0IGF2YWlsYWJsZSBxdWVyeSBpbmRleC4AHFF1ZXJpZXMAAQQCKGUOBAAEVCBUaGUgb25nb2luZyBxdWVyaWVzLgAoQXNzZXRUcmFwcwEBBAY8OBAAAAAAEGggVGhlIGV4aXN0aW5nIGFzc2V0IHRyYXBzLgBhASBLZXkgaXMgdGhlIGJsYWtlMiAyNTYgaGFzaCBvZiAob3JpZ2luLCB2ZXJzaW9uZWQgYEFzc2V0c2ApIHBhaXIuIFZhbHVlIGlzIHRoZSBudW1iZXIgb2YdASB0aW1lcyB0aGlzIHBhaXIgaGFzIGJlZW4gdHJhcHBlZCAodXN1YWxseSBqdXN0IDEgaWYgaXQgZXhpc3RzIGF0IGFsbCkuADhTYWZlWGNtVmVyc2lvbgAAOAQACGEBIERlZmF1bHQgdmVyc2lvbiB0byBlbmNvZGUgWENNIHdoZW4gbGF0ZXN0IHZlcnNpb24gb2YgZGVzdGluYXRpb24gaXMgdW5rbm93bi4gSWYgYE5vbmVgLD0BIHRoZW4gdGhlIGRlc3RpbmF0aW9ucyB3aG9zZSBYQ00gdmVyc2lvbiBpcyB1bmtub3duIGFyZSBjb25zaWRlcmVkIHVucmVhY2hhYmxlLgBAU3VwcG9ydGVkVmVyc2lvbgABCAUCeQ44BAAE8CBUaGUgTGF0ZXN0IHZlcnNpb25zIHRoYXQgd2Uga25vdyB2YXJpb3VzIGxvY2F0aW9ucyBzdXBwb3J0LgBAVmVyc2lvbk5vdGlmaWVycwABCAUCeQ4oBAAEBQEgQWxsIGxvY2F0aW9ucyB0aGF0IHdlIGhhdmUgcmVxdWVzdGVkIHZlcnNpb24gbm90aWZpY2F0aW9ucyBmcm9tLgBQVmVyc2lvbk5vdGlmeVRhcmdldHMAAQgFAnkOfQ4EAAhxASBUaGUgdGFyZ2V0IGxvY2F0aW9ucyB0aGF0IGFyZSBzdWJzY3JpYmVkIHRvIG91ciB2ZXJzaW9uIGNoYW5nZXMsIGFzIHdlbGwgYXMgdGhlIG1vc3QgcmVjZW50lCBvZiBvdXIgdmVyc2lvbnMgd2UgaW5mb3JtZWQgdGhlbSBvZi4AVFZlcnNpb25EaXNjb3ZlcnlRdWV1ZQEAgQ4EAAxlASBEZXN0aW5hdGlvbnMgd2hvc2UgbGF0ZXN0IFhDTSB2ZXJzaW9uIHdlIHdvdWxkIGxpa2UgdG8ga25vdy4gRHVwbGljYXRlcyBub3QgYWxsb3dlZCwgYW5kcQEgdGhlIGB1MzJgIGNvdW50ZXIgaXMgdGhlIG51bWJlciBvZiB0aW1lcyB0aGF0IGEgc2VuZCB0byB0aGUgZGVzdGluYXRpb24gaGFzIGJlZW4gYXR0ZW1wdGVkLIwgd2hpY2ggaXMgdXNlZCBhcyBhIHByaW9yaXRpemF0aW9uLgBAQ3VycmVudE1pZ3JhdGlvbgAAjQ4EAAScIFRoZSBjdXJyZW50IG1pZ3JhdGlvbidzIHN0YWdlLCBpZiBhbnkuAFRSZW1vdGVMb2NrZWRGdW5naWJsZXMAAQwFAgKVDpkOBAAE8CBGdW5naWJsZSBhc3NldHMgd2hpY2ggd2Uga25vdyBhcmUgbG9ja2VkIG9uIGEgcmVtb3RlIGNoYWluLgA8TG9ja2VkRnVuZ2libGVzAAEEAgSpDgQABOAgRnVuZ2libGUgYXNzZXRzIHdoaWNoIHdlIGtub3cgYXJlIGxvY2tlZCBvbiB0aGlzIGNoYWluLgBUWGNtRXhlY3V0aW9uU3VzcGVuZGVkAQCYBAAEtCBHbG9iYWwgc3VzcGVuc2lvbiBzdGF0ZSBvZiB0aGUgWENNIGV4ZWN1dG9yLgA8U2hvdWxkUmVjb3JkWGNtAQCYBAAcWQEgV2hldGhlciBvciBub3QgaW5jb21pbmcgWENNcyAoYm90aCBleGVjdXRlZCBsb2NhbGx5IGFuZCByZWNlaXZlZCkgc2hvdWxkIGJlIHJlY29yZGVkLsQgT25seSBvbmUgWENNIHByb2dyYW0gd2lsbCBiZSByZWNvcmRlZCBhdCBhIHRpbWUuKQEgVGhpcyBpcyBtZWFudCB0byBiZSB1c2VkIGluIHJ1bnRpbWUgQVBJcywgYW5kIGl0J3MgYWR2aXNlZCBpdCBzdGF5cyBmYWxzZQ0BIGZvciBhbGwgb3RoZXIgdXNlIGNhc2VzLCBzbyBhcyB0byBub3QgZGVncmFkZSByZWd1bGFyIHBlcmZvcm1hbmNlLgBZASBPbmx5IHJlbGV2YW50IGlmIHRoaXMgcGFsbGV0IGlzIGJlaW5nIHVzZWQgYXMgdGhlIFtgeGNtX2V4ZWN1dG9yOjp0cmFpdHM6OlJlY29yZFhjbWBdyCBpbXBsZW1lbnRhdGlvbiBpbiB0aGUgWENNIGV4ZWN1dG9yIGNvbmZpZ3VyYXRpb24uACxSZWNvcmRlZFhjbQAAuQUEABhJASBJZiBbYFNob3VsZFJlY29yZFhjbWBdIGlzIHNldCB0byB0cnVlLCB0aGVuIHRoZSBsYXN0IFhDTSBwcm9ncmFtIGV4ZWN1dGVkIGxvY2FsbHlUIHdpbGwgYmUgc3RvcmVkIGhlcmUuKQEgUnVudGltZSBBUElzIGNhbiBmZXRjaCB0aGUgWENNIHRoYXQgd2FzIGV4ZWN1dGVkIGJ5IGFjY2Vzc2luZyB0aGlzIHZhbHVlLgBZASBPbmx5IHJlbGV2YW50IGlmIHRoaXMgcGFsbGV0IGlzIGJlaW5nIHVzZWQgYXMgdGhlIFtgeGNtX2V4ZWN1dG9yOjp0cmFpdHM6OlJlY29yZFhjbWBdyCBpbXBsZW1lbnRhdGlvbiBpbiB0aGUgWENNIGV4ZWN1dG9yIGNvbmZpZ3VyYXRpb24uAERBdXRob3JpemVkQWxpYXNlcwABBALhAbUOBAAMZQEgTWFwIG9mIGF1dGhvcml6ZWQgYWxpYXNlcnMgb2YgbG9jYWwgb3JpZ2lucy4gRWFjaCBsb2NhbCBsb2NhdGlvbiBjYW4gYXV0aG9yaXplIGEgbGlzdCBvZlkBIG90aGVyIGxvY2F0aW9ucyB0byBhbGlhcyBpbnRvIGl0LiBFYWNoIGFsaWFzZXIgaXMgb25seSB2YWxpZCB1bnRpbCBpdHMgaW5uZXIgYGV4cGlyeWA4IGJsb2NrIG51bWJlci4AAfkECAECuQFUaGlzIGV4dHJpbnNpYyB1c2VzIGBXZWlnaHRMaW1pdDo6VW5saW1pdGVkYCwgcGxlYXNlIG1pZ3JhdGUgdG8gYGxpbWl0ZWRfdGVsZXBvcnRfYXNzZXRzYCBvciBgdHJhbnNmZXJfYXNzZXRzYAACAtkBVGhpcyBleHRyaW5zaWMgdXNlcyBgV2VpZ2h0TGltaXQ6OlVubGltaXRlZGAsIHBsZWFzZSBtaWdyYXRlIHRvIGBsaW1pdGVkX3Jlc2VydmVfdHJhbnNmZXJfYXNzZXRzYCBvciBgdHJhbnNmZXJfYXNzZXRzYAABAQkAEERVbml2ZXJzYWxMb2NhdGlvbq0BDAEJAgSEIFRoaXMgY2hhaW4ncyBVbml2ZXJzYWwgTG9jYXRpb24uAFBBZHZlcnRpc2VkWGNtVmVyc2lvbjgQBQAAAAglASBUaGUgbGF0ZXN0IHN1cHBvcnRlZCB2ZXJzaW9uIHRoYXQgd2UgYWR2ZXJ0aXNlLiBHZW5lcmFsbHkganVzdCBzZXQgaXQgdG+EIGBwYWxsZXRfeGNtOjpDdXJyZW50WGNtVmVyc2lvbmAuAChNYXhMb2NrZXJzOBAIAAAABBkBIFRoZSBtYXhpbXVtIG51bWJlciBvZiBsb2NhbCBYQ00gbG9ja3MgdGhhdCBhIHNpbmdsZSBhY2NvdW50IG1heSBoYXZlLgBYTWF4UmVtb3RlTG9ja0NvbnN1bWVyczgQAAAAAAT8IFRoZSBtYXhpbXVtIG51bWJlciBvZiBjb25zdW1lcnMgYSBzaW5nbGUgcmVtb3RlIGxvY2sgbWF5IGhhdmUuAAHNDgQYArxVc2UgYExvY2FsRXhlY3V0aW9uSW5jb21wbGV0ZVdpdGhFcnJvcmAgaW5zdGVhZAEYMjAuMC4wCCxSdW50aW1lQ2FsbCAEZCBUaGUgcnVudGltZSBgQ2FsbGAgdHlwZS5wUmVtb3RlTG9ja0NvbnN1bWVySWRlbnRpZmllchAExCBUaGUgSUQgdHlwZSBmb3IgbG9jYWwgY29uc3VtZXJzIG9mIHJlbW90ZSBsb2Nrcy4AYwAAME1lc3NhZ2VRdWV1ZQEwTWVzc2FnZVF1ZXVlDDBCb29rU3RhdGVGb3IBAQQFcQbVDnQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAATMIFRoZSBpbmRleCBvZiB0aGUgZmlyc3QgYW5kIGxhc3QgKG5vbi1lbXB0eSkgcGFnZXMuACxTZXJ2aWNlSGVhZAAAcQYEAAS8IFRoZSBvcmlnaW4gYXQgd2hpY2ggd2Ugc2hvdWxkIGJlZ2luIHNlcnZpY2luZy4AFFBhZ2VzAAEIBQXhDuUOBAAEiCBUaGUgbWFwIG9mIHBhZ2UgaW5kaWNlcyB0byBwYWdlcy4AAW0GAAERCQAQIEhlYXBTaXplOBAAAAEAFD0BIFRoZSBzaXplIG9mIHRoZSBwYWdlOyB0aGlzIGltcGxpZXMgdGhlIG1heGltdW0gbWVzc2FnZSBzaXplIHdoaWNoIGNhbiBiZSBzZW50LgBZASBBIGdvb2QgdmFsdWUgZGVwZW5kcyBvbiB0aGUgZXhwZWN0ZWQgbWVzc2FnZSBzaXplcywgdGhlaXIgd2VpZ2h0cywgdGhlIHdlaWdodCB0aGF0IGlzXQEgYXZhaWxhYmxlIGZvciBwcm9jZXNzaW5nIHRoZW0gYW5kIHRoZSBtYXhpbWFsIG5lZWRlZCBtZXNzYWdlIHNpemUuIFRoZSBtYXhpbWFsIG1lc3NhZ2URASBzaXplIGlzIHNsaWdodGx5IGxvd2VyIHRoYW4gdGhpcyBhcyBkZWZpbmVkIGJ5IFtgTWF4TWVzc2FnZUxlbk9mYF0uACBNYXhTdGFsZTgQCAAAAAxdASBUaGUgbWF4aW11bSBudW1iZXIgb2Ygc3RhbGUgcGFnZXMgKGkuZS4gb2Ygb3ZlcndlaWdodCBtZXNzYWdlcykgYWxsb3dlZCBiZWZvcmUgY3VsbGluZ1EBIGNhbiBoYXBwZW4uIE9uY2UgdGhlcmUgYXJlIG1vcmUgc3RhbGUgcGFnZXMgdGhhbiB0aGlzLCB0aGVuIGhpc3RvcmljYWwgcGFnZXMgbWF5IGJl/CBkcm9wcGVkLCBldmVuIGlmIHRoZXkgY29udGFpbiB1bnByb2Nlc3NlZCBvdmVyd2VpZ2h0IG1lc3NhZ2VzLgA0U2VydmljZVdlaWdodP0FQAEHAKDbIV0TMzMzMzMzMzMYQQEgVGhlIGFtb3VudCBvZiB3ZWlnaHQgKGlmIGFueSkgd2hpY2ggc2hvdWxkIGJlIHByb3ZpZGVkIHRvIHRoZSBtZXNzYWdlIHF1ZXVlIGZvcqggc2VydmljaW5nIGVucXVldWVkIGl0ZW1zIGBvbl9pbml0aWFsaXplYC4A/CBUaGlzIG1heSBiZSBsZWdpdGltYXRlbHkgYE5vbmVgIGluIHRoZSBjYXNlIHRoYXQgeW91IHdpbGwgY2FsbF0BIGBTZXJ2aWNlUXVldWVzOjpzZXJ2aWNlX3F1ZXVlc2AgbWFudWFsbHkgb3Igc2V0IFtgU2VsZjo6SWRsZU1heFNlcnZpY2VXZWlnaHRgXSB0byBoYXZlVCBpdCBydW4gaW4gYG9uX2lkbGVgLgBQSWRsZU1heFNlcnZpY2VXZWlnaHT9BUABBwCg2yFdEzMzMzMzMzMzFF0BIFRoZSBtYXhpbXVtIGFtb3VudCBvZiB3ZWlnaHQgKGlmIGFueSkgdG8gYmUgdXNlZCBmcm9tIHJlbWFpbmluZyB3ZWlnaHQgYG9uX2lkbGVgIHdoaWNoQQEgc2hvdWxkIGJlIHByb3ZpZGVkIHRvIHRoZSBtZXNzYWdlIHF1ZXVlIGZvciBzZXJ2aWNpbmcgZW5xdWV1ZWQgaXRlbXMgYG9uX2lkbGVgLj0BIFVzZWZ1bCBmb3IgcGFyYWNoYWlucyB0byBwcm9jZXNzIG1lc3NhZ2VzIGF0IHRoZSBzYW1lIGJsb2NrIHRoZXkgYXJlIHJlY2VpdmVkLgApASBJZiBgTm9uZWAsIGl0IHdpbGwgbm90IGNhbGwgYFNlcnZpY2VRdWV1ZXM6OnNlcnZpY2VfcXVldWVzYCBpbiBgb25faWRsZWAuAAHtDgAEEFNpemU4BFQgUGFnZS9oZWFwIHNpemUgdHlwZS4AZAAAJEFzc2V0UmF0ZQEkQXNzZXRSYXRlBFhDb252ZXJzaW9uUmF0ZVRvTmF0aXZlAAEEAk0BfQYEAAwdASBNYXBzIGFuIGFzc2V0IHRvIGl0cyBmaXhlZCBwb2ludCByZXByZXNlbnRhdGlvbiBpbiB0aGUgbmF0aXZlIGJhbGFuY2UuAE0BIEUuZy4gYG5hdGl2ZV9hbW91bnQgPSBhc3NldF9hbW91bnQgKiBDb252ZXJzaW9uUmF0ZVRvTmF0aXZlOjo8VD46OmdldChhc3NldF9raW5kKWAAAXkGAAEZCQAAAfEOAAQkQXNzZXRLaW5kTQEERQEgVGhlIHR5cGUgZm9yIGFzc2V0IGtpbmRzIGZvciB3aGljaCB0aGUgY29udmVyc2lvbiByYXRlIHRvIG5hdGl2ZSBiYWxhbmNlIGlzIHNldC4AZQAAFEJlZWZ5ARRCZWVmeRQsQXV0aG9yaXRpZXMBAPUOBAAEcCBUaGUgY3VycmVudCBhdXRob3JpdGllcyBzZXQAOFZhbGlkYXRvclNldElkAQAoIAAAAAAAAAAABHQgVGhlIGN1cnJlbnQgdmFsaWRhdG9yIHNldCBpZAA8TmV4dEF1dGhvcml0aWVzAQD1DgQABOwgQXV0aG9yaXRpZXMgc2V0IHNjaGVkdWxlZCB0byBiZSB1c2VkIHdpdGggdGhlIG5leHQgc2Vzc2lvbgAwU2V0SWRTZXNzaW9uAAEEBSg4BAAoUQEgQSBtYXBwaW5nIGZyb20gQkVFRlkgc2V0IElEIHRvIHRoZSBpbmRleCBvZiB0aGUgKm1vc3QgcmVjZW50KiBzZXNzaW9uIGZvciB3aGljaCBpdHNoIG1lbWJlcnMgd2VyZSByZXNwb25zaWJsZS4ARQEgVGhpcyBpcyBvbmx5IHVzZWQgZm9yIHZhbGlkYXRpbmcgZXF1aXZvY2F0aW9uIHByb29mcy4gQW4gZXF1aXZvY2F0aW9uIHByb29mIG11c3RNASBjb250YWlucyBhIGtleS1vd25lcnNoaXAgcHJvb2YgZm9yIGEgZ2l2ZW4gc2Vzc2lvbiwgdGhlcmVmb3JlIHdlIG5lZWQgYSB3YXkgdG8gdGllPQEgdG9nZXRoZXIgc2Vzc2lvbnMgYW5kIEJFRUZZIHNldCBpZHMsIGkuZS4gd2UgbmVlZCB0byB2YWxpZGF0ZSB0aGF0IGEgdmFsaWRhdG9yQQEgd2FzIHRoZSBvd25lciBvZiBhIGdpdmVuIGtleSBvbiBhIGdpdmVuIHNlc3Npb24sIGFuZCB3aGF0IHRoZSBhY3RpdmUgc2V0IElEIHdhc1QgZHVyaW5nIHRoYXQgc2Vzc2lvbi4A3CBUV09YLU5PVEU6IGBWYWxpZGF0b3JTZXRJZGAgaXMgbm90IHVuZGVyIHVzZXIgY29udHJvbC4AMEdlbmVzaXNCbG9jawEA5QEEAAzcIEJsb2NrIG51bWJlciB3aGVyZSBCRUVGWSBjb25zZW5zdXMgaXMgZW5hYmxlZC9zdGFydGVkLmkBIEJ5IGNoYW5naW5nIHRoaXMgKHRocm91Z2ggcHJpdmlsZWdlZCBgc2V0X25ld19nZW5lc2lzKClgKSwgQkVFRlkgY29uc2Vuc3VzIGlzIGVmZmVjdGl2ZWx5rCByZXN0YXJ0ZWQgZnJvbSB0aGUgbmV3bHkgc2V0IGJsb2NrIG51bWJlci4AAYEGAAAMOE1heEF1dGhvcml0aWVzOBCghgEABNQgVGhlIG1heGltdW0gbnVtYmVyIG9mIGF1dGhvcml0aWVzIHRoYXQgY2FuIGJlIGFkZGVkLgA0TWF4Tm9taW5hdG9yczgQAAIAAATUIFRoZSBtYXhpbXVtIG51bWJlciBvZiBub21pbmF0b3JzIGZvciBlYWNoIHZhbGlkYXRvci4AWE1heFNldElkU2Vzc2lvbkVudHJpZXMoIKgAAAAAAAAAGDkBIFRoZSBtYXhpbXVtIG51bWJlciBvZiBlbnRyaWVzIHRvIGtlZXAgaW4gdGhlIHNldCBpZCB0byBzZXNzaW9uIGluZGV4IG1hcHBpbmcuADEBIFNpbmNlIHRoZSBgU2V0SWRTZXNzaW9uYCBtYXAgaXMgb25seSB1c2VkIGZvciB2YWxpZGF0aW5nIGVxdWl2b2NhdGlvbnMgdGhpcykBIHZhbHVlIHNob3VsZCByZWxhdGUgdG8gdGhlIGJvbmRpbmcgZHVyYXRpb24gb2Ygd2hhdGV2ZXIgc3Rha2luZyBzeXN0ZW0gaXM1ASBiZWluZyB1c2VkIChpZiBhbnkpLiBJZiBlcXVpdm9jYXRpb24gaGFuZGxpbmcgaXMgbm90IGVuYWJsZWQgdGhlbiB0aGlzIHZhbHVlNCBjYW4gYmUgemVyby4AAf0OAAgcQmVlZnlJZBUBBGggQXV0aG9yaXR5IGlkZW50aWZpZXIgdHlwZTRLZXlPd25lclByb29mfAwVASBUaGUgcHJvb2Ygb2Yga2V5IG93bmVyc2hpcCwgdXNlZCBmb3IgdmFsaWRhdGluZyBlcXVpdm9jYXRpb24gcmVwb3J0cxEBIFRoZSBwcm9vZiBtdXN0IGluY2x1ZGUgdGhlIHNlc3Npb24gaW5kZXggYW5kIHZhbGlkYXRvciBjb3VudCBvZiB0aGWwIHNlc3Npb24gYXQgd2hpY2ggdGhlIGVxdWl2b2NhdGlvbiBvY2N1cnJlZC4AyAAADE1tcgEMTW1yDCBSb290SGFzaAEAPIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARYIExhdGVzdCBNTVIgUm9vdCBoYXNoLgA4TnVtYmVyT2ZMZWF2ZXMBACggAAAAAAAAAAAEsCBDdXJyZW50IHNpemUgb2YgdGhlIE1NUiAobnVtYmVyIG9mIGxlYXZlcykuABROb2RlcwABBAYoPAQAEIAgSGFzaGVzIG9mIHRoZSBub2RlcyBpbiB0aGUgTU1SLgAtASBOb3RlIHRoaXMgY29sbGVjdGlvbiBvbmx5IGNvbnRhaW5zIE1NUiBwZWFrcywgdGhlIGlubmVyIG5vZGVzIChhbmQgbGVhdmVzKbwgYXJlIHBydW5lZCBhbmQgb25seSBzdG9yZWQgaW4gdGhlIE9mZmNoYWluIERCLgAAAAAAAADJAAAwQmVlZnlNbXJMZWFmATBCZWVmeU1tckxlYWYIQEJlZWZ5QXV0aG9yaXRpZXMBAAEPsAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABKAgRGV0YWlscyBvZiBjdXJyZW50IEJFRUZZIGF1dGhvcml0eSBzZXQuAFBCZWVmeU5leHRBdXRob3JpdGllcwEAAQ+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMlCBEZXRhaWxzIG9mIG5leHQgQkVFRlkgYXV0aG9yaXR5IHNldC4AUQEgVGhpcyBzdG9yYWdlIGVudHJ5IGlzIHVzZWQgYXMgY2FjaGUgZm9yIGNhbGxzIHRvIGB1cGRhdGVfYmVlZnlfbmV4dF9hdXRob3JpdHlfc2V0YC4AAAAAAAAAygAAKFJjTWlncmF0b3IBKFJjTWlncmF0b3JUQFJjTWlncmF0aW9uU3RhZ2UBAL0GBAAEhCBUaGUgUmVsYXkgQ2hhaW4gbWlncmF0aW9uIHN0YXRlLgAoUmNBY2NvdW50cwABBAUEBQ8EAAhxASBIZWxwZXIgc3RvcmFnZSBpdGVtIHRvIG9idGFpbiBhbmQgc3RvcmUgdGhlIGtub3duIGFjY291bnRzIHRoYXQgc2hvdWxkIGJlIGtlcHQgcGFydGlhbGx5IG9yWCBmdWxseSBvbiBSZWxheSBDaGFpbi4AUENvdW50ZXJGb3JSY0FjY291bnRzAQA4EAAAAAAErENvdW50ZXIgZm9yIHRoZSByZWxhdGVkIGNvdW50ZWQgc3RvcmFnZSBtYXAARFJjTWlncmF0ZWRCYWxhbmNlAQAJD4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAARNASBIZWxwZXIgc3RvcmFnZSBpdGVtIHRvIHN0b3JlIHRoZSB0b3RhbCBiYWxhbmNlIHRoYXQgc2hvdWxkIGJlIGtlcHQgb24gUmVsYXkgQ2hhaW4uAGBSY01pZ3JhdGVkQmFsYW5jZUFyY2hpdmUBAAkPgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGGEBIEhlbHBlciBzdG9yYWdlIGl0ZW0gdG8gc3RvcmUgdGhlIHRvdGFsIGJhbGFuY2UgdGhhdCBzaG91bGQgYmUga2VwdCBvbiBSZWxheSBDaGFpbiBhZnRlclEBIGl0IGlzIGNvbnN1bWVkIGZyb20gdGhlIGBSY01pZ3JhdGVkQmFsYW5jZWAgc3RvcmFnZSBpdGVtIGFuZCBzZW50IHRvIHRoZSBBc3NldCBIdWIuAFUBIFRoaXMgbGV0IHVzIHRvIHRha2UgdGhlIHZhbHVlIGZyb20gdGhlIGBSY01pZ3JhdGVkQmFsYW5jZWAgc3RvcmFnZSBpdGVtIGFuZCBrZWVwIHRoZW0BIGBTaWduYWxNaWdyYXRpb25GaW5pc2hgIHN0YWdlIHRvIGJlIGlkZW1wb3RlbnQgd2hpbGUgcHJlc2VydmluZyB0aGVzZSB2YWx1ZXMgZm9yIHRlc3RzIGFuZEwgbGF0ZXIgZGlzY292ZXJpZXMuAEhQZW5kaW5nWGNtTWVzc2FnZXMAAQQFsQa5BQQAFGggVGhlIHBlbmRpbmcgWENNIG1lc3NhZ2VzLgBNASBDb250YWlucyBkYXRhIG1lc3NhZ2VzIHRoYXQgaGF2ZSBiZWVuIHNlbnQgdG8gdGhlIEFzc2V0IEh1YiBidXQgbm90IHlldCBjb25maXJtZWQuAE0BIFVuY29uZmlybWVkIG1lc3NhZ2VzIGNhbiBiZSByZXNlbnQgYnkgY2FsbGluZyB0aGUgW2BQYWxsZXQ6OnJlc2VuZF94Y21gXSBmdW5jdGlvbi4AcENvdW50ZXJGb3JQZW5kaW5nWGNtTWVzc2FnZXMBADgQAAAAAASsQ291bnRlciBmb3IgdGhlIHJlbGF0ZWQgY291bnRlZCBzdG9yYWdlIG1hcABsUHVyZVByb3h5Q2FuZGlkYXRlc01pZ3JhdGVkAAEEBQSYBAAMOQEgQWNjb3VudHMgdGhhdCB1c2UgdGhlIHByb3h5IHBhbGxldCB0byBkZWxlZ2F0ZSBwZXJtaXNzaW9ucyBhbmQgaGF2ZSBubyBub25jZS4AbQEgQm9vbGVhbiB2YWx1ZSBpcyB3aGV0aGVyIHRoZXkgaGF2ZSBiZWVuIG1pZ3JhdGVkIHRvIHRoZSBBc3NldCBIdWIuIE5lZWRlZCBmb3IgaWRlbXBvdGVuY3kuAERQZW5kaW5nWGNtUXVlcmllcwABBAUoPAQAHE0BIFRoZSBwZW5kaW5nIFhDTSByZXNwb25zZSBxdWVyaWVzIGFuZCB0aGVpciBYQ00gaGFzaCByZWZlcmVuY2luZyB0aGUgbWVzc2FnZSBpbiB0aGWAIFtgUGVuZGluZ1hjbU1lc3NhZ2VzYF0gc3RvcmFnZS4AYQEgVGhlIGBRdWVyeUlkYCBpcyB0aGUgaWRlbnRpZmllciBmcm9tIHRoZSBbYHBhbGxldF94Y21gXSBxdWVyeSBoYW5kbGVyIHJlZ2lzdHJ5LiBUaGUgWENNCQEgcGFsbGV0IHdpbGwgbm90aWZ5IGFib3V0IHRoZSBzdGF0dXMgb2YgdGhlIG1lc3NhZ2UgYnkgY2FsbGluZyB0aGUdASBbYFBhbGxldDo6cmVjZWl2ZV9xdWVyeV9yZXNwb25zZWBdIGZ1bmN0aW9uIHdpdGggdGhlIGBRdWVyeUlkYCBhbmQgdGhlKCByZXNwb25zZS4AUFVucHJvY2Vzc2VkTXNnQnVmZmVyAAA4BAAEQQEgTWFudWFsIG92ZXJyaWRlIGZvciBgdHlwZSBVbnByb2Nlc3NlZE1zZ0J1ZmZlcjogR2V0PHUzMj5gLiBMb29rIHRoZXJlIGZvciBkb2NzLgBgQWhVbXBRdWV1ZVByaW9yaXR5Q29uZmlnAQBpBwQAGOggVGhlIHByaW9yaXR5IG9mIHRoZSBBc3NldCBIdWIgVU1QIHF1ZXVlIGR1cmluZyBtaWdyYXRpb24uAHUBIENvbnRyb2xzIGhvdyB0aGUgQXNzZXQgSHViIFVNUCAoVXB3YXJkIE1lc3NhZ2UgUGFzc2luZykgcXVldWUgaXMgcHJvY2Vzc2VkIHJlbGF0aXZlIHRvIG90aGVyWQEgcXVldWVzIGR1cmluZyB0aGUgbWlncmF0aW9uIHByb2Nlc3MuIFRoaXMgaGVscHMgZW5zdXJlIHRpbWVseSBwcm9jZXNzaW5nIG9mIG1pZ3JhdGlvbmkBIG1lc3NhZ2VzLiBUaGUgZGVmYXVsdCBwcmlvcml0eSBwYXR0ZXJuIGlzIGRlZmluZWQgaW4gdGhlIHBhbGxldCBjb25maWd1cmF0aW9uLCBidXQgY2FuIGJlsCBvdmVycmlkZGVuIGJ5IGEgc3RvcmFnZSB2YWx1ZSBvZiB0aGlzIHR5cGUuABxNYW5hZ2VyAAAEBAAQlCBBbiBvcHRpb25hbCBhY2NvdW50IGlkIG9mIGEgbWFuYWdlci4ARQEgVGhpcyBhY2NvdW50IGlkIGhhcyBzaW1pbGFyIHByaXZpbGVnZXMgdG8gW2BDb25maWc6OkFkbWluT3JpZ2luYF0gZXhjZXB0IHRoYXQgaXTsIGNhbiBub3Qgc2V0IHRoZSBtYW5hZ2VyIGFjY291bnQgaWQgdmlhIGBzZXRfbWFuYWdlcmAgY2FsbC4AJENhbmNlbGxlcgAABAQADJwgQW4gb3B0aW9uYWwgYWNjb3VudCBpZCBvZiBhIGNhbmNlbGxlci4AzCBUaGlzIGFjY291bnQgaWQgY2FuIG9ubHkgc3RvcCBzY2hlZHVsZWQgbWlncmF0aW9uLgBMTWlncmF0aW9uU3RhcnRCbG9jawAAOAQAEF0BIFRoZSBibG9jayBudW1iZXIgYXQgd2hpY2ggdGhlIG1pZ3JhdGlvbiBiZWdhbiBhbmQgdGhlIHBhbGxldCdzIGV4dHJpbnNpY3Mgd2VyZSBsb2NrZWQuABUBIFRoaXMgdmFsdWUgaXMgc2V0IHdoZW4gZW50ZXJpbmcgdGhlIGBXYWl0aW5nRm9yQWhgIHN0YWdlLCBpLmUuLCB3aGVuxCBgUmNNaWdyYXRpb25TdGFnZTo6aXNfb25nb2luZygpYCBiZWNvbWVzIGB0cnVlYC4ARE1pZ3JhdGlvbkVuZEJsb2NrAAA4BAAQDQEgQmxvY2sgbnVtYmVyIHdoZW4gbWlncmF0aW9uIGZpbmlzaGVkIGFuZCBleHRyaW5zaWNzIHdlcmUgdW5sb2NrZWQuAPwgVGhpcyBpcyBzZXQgd2hlbiBlbnRlcmluZyB0aGUgYE1pZ3JhdGlvbkRvbmVgIHN0YWdlIGhlbmNlIHdoZW7IIGBSY01pZ3JhdGlvblN0YWdlOjppc19maW5pc2hlZCgpYCBiZWNvbWVzIGB0cnVlYC4AMFdhcm1VcFBlcmlvZAAAKQIEABDIIFRoZSBkdXJhdGlvbiBvZiB0aGUgcHJlIG1pZ3JhdGlvbiB3YXJtLXVwIHBlcmlvZC4AZQEgVGhpcyBpcyB0aGUgZHVyYXRpb24gb2YgdGhlIHdhcm0tdXAgcGVyaW9kIGJlZm9yZSB0aGUgZGF0YSBtaWdyYXRpb24gc3RhcnRzLiBEdXJpbmcgdGhpc3EBIHBlcmlvZCwgdGhlIG1pZ3JhdGlvbiB3aWxsIGJlIGluIG9uZ29pbmcgc3RhdGUgYW5kIHRoZSBjb25jZXJuZWQgZXh0cmluc2ljcyB3aWxsIGJlIGxvY2tlZC4ANENvb2xPZmZQZXJpb2QAACkCBAAU0CBUaGUgZHVyYXRpb24gb2YgdGhlIHBvc3QgbWlncmF0aW9uIGNvb2wtb2ZmIHBlcmlvZC4AZQEgVGhpcyBpcyB0aGUgZHVyYXRpb24gb2YgdGhlIGNvb2wtb2ZmIHBlcmlvZCBhZnRlciB0aGUgZGF0YSBtaWdyYXRpb24gaXMgZmluaXNoZWQuIER1cmluZ3EBIHRoaXMgcGVyaW9kLCB0aGUgbWlncmF0aW9uIHdpbGwgYmUgc3RpbGwgaW4gb25nb2luZyBzdGF0ZSBhbmQgdGhlIGNvbmNlcm5lZCBleHRyaW5zaWNzIHdpbGwsIGJlIGxvY2tlZC4AIFNldHRpbmdzAAB1BwQABGAgVGhlIG1pZ3JhdGlvbiBzZXR0aW5ncy4AQE1hbmFnZXJNdWx0aXNpZ3MBAQQFIKgEAAT8IFRoZSBtdWx0aXNpZyBBY2NvdW50SURzIHRoYXQgdm90ZXMgdG8gZXhlY3V0ZSBhIHNwZWNpZmljIGNhbGwuAFBNYW5hZ2VyTXVsdGlzaWdSb3VuZAEAOBAAAAAADKggVGhlIGN1cnJlbnQgcm91bmQgb2YgdGhlIG11bHRpc2lnIHZvdGluZy4AsCBWb3RlcyBhcmUgb25seSB2YWxpZCBmb3IgdGhlIGN1cnJlbnQgcm91bmQuAGhNYW5hZ2VyVm90ZXNJbkN1cnJlbnRSb3VuZAEBBAIEOBAAAAAADNwgSG93IG9mdGVuIGVhY2ggcGFydGljaXBhbnQgdm90ZWQgaW4gdGhlIGN1cnJlbnQgcm91bmQuAKggV2lsbCBiZSBjbGVhcmVkIGF0IHRoZSBlbmQgb2YgZWFjaCByb3VuZC4AAbkGAAEdCQAAAQ0PAAwsUnVudGltZUNhbGwgBHwgVGhlIG92ZXJhbGwgcnVudGltZSBjYWxsIHR5cGUuRFJ1bnRpbWVIb2xkUmVhc29uBQgEaCBUaGUgcnVudGltZSBob2xkIHJlYXNvbnMuTFJ1bnRpbWVGcmVlemVSZWFzb24pCgRwIFRoZSBydW50aW1lIGZyZWV6ZSByZWFzb25zLgD/AAAIBAUAIMkEBAAoAAQIDBAUGBwgJChIQ2hlY2tOb25aZXJvU2VuZGVyeQcQQENoZWNrU3BlY1ZlcnNpb259Bzg4Q2hlY2tUeFZlcnNpb26BBzgwQ2hlY2tHZW5lc2lzhQc8OENoZWNrTW9ydGFsaXR5iQc8KENoZWNrTm9uY2WRBxAsQ2hlY2tXZWlnaHSVBxBgQ2hhcmdlVHJhbnNhY3Rpb25QYXltZW50mQcQSFByZXZhbGlkYXRlQXR0ZXN0c50HEERDaGVja01ldGFkYXRhSGFzaKEHDQdcEENvcmUMHHZlcnNpb24AVQkEkCBSZXR1cm5zIHRoZSB2ZXJzaW9uIG9mIHRoZSBydW50aW1lLgA0ZXhlY3V0ZV9ibG9jawQUYmxvY2sRDxAEZCBFeGVjdXRlIHRoZSBnaXZlbiBibG9jay4AQGluaXRpYWxpemVfYmxvY2sEGGhlYWRlclwdDwRBASBJbml0aWFsaXplIGEgYmxvY2sgd2l0aCB0aGUgZ2l2ZW4gaGVhZGVyIGFuZCByZXR1cm4gdGhlIHJ1bnRpbWUgZXhlY3V0aXZlIG1vZGUuAAQhASBUaGUgYENvcmVgIHJ1bnRpbWUgYXBpIHRoYXQgZXZlcnkgU3Vic3RyYXRlIHJ1bnRpbWUgbmVlZHMgdG8gaW1wbGVtZW50LhQAIE1ldGFkYXRhDCBtZXRhZGF0YQAhDwSMIFJldHVybnMgdGhlIG1ldGFkYXRhIG9mIGEgcnVudGltZS4ATG1ldGFkYXRhX2F0X3ZlcnNpb24EHHZlcnNpb244JQ8QpCBSZXR1cm5zIHRoZSBtZXRhZGF0YSBhdCBhIGdpdmVuIHZlcnNpb24uAAUBIElmIHRoZSBnaXZlbiBgdmVyc2lvbmAgaXNuJ3Qgc3VwcG9ydGVkLCB0aGlzIHdpbGwgcmV0dXJuIGBOb25lYC51ASBVc2UgW2BTZWxmOjptZXRhZGF0YV92ZXJzaW9uc2BdIHRvIGZpbmQgb3V0IGFib3V0IHN1cHBvcnRlZCBtZXRhZGF0YSB2ZXJzaW9uIG9mIHRoZSBydW50aW1lLgBEbWV0YWRhdGFfdmVyc2lvbnMAzAykIFJldHVybnMgdGhlIHN1cHBvcnRlZCBtZXRhZGF0YSB2ZXJzaW9ucy4AwCBUaGlzIGNhbiBiZSB1c2VkIHRvIGNhbGwgYG1ldGFkYXRhX2F0X3ZlcnNpb25gLgAEAQEgVGhlIGBNZXRhZGF0YWAgYXBpIHRyYWl0IHRoYXQgcmV0dXJucyBtZXRhZGF0YSBmb3IgdGhlIHJ1bnRpbWUuCAAwQmxvY2tCdWlsZGVyEDxhcHBseV9leHRyaW5zaWMEJGV4dHJpbnNpY20JKQ8QbCBBcHBseSB0aGUgZ2l2ZW4gZXh0cmluc2ljLgA5ASBSZXR1cm5zIGFuIGluY2x1c2lvbiBvdXRjb21lIHdoaWNoIHNwZWNpZmllcyBpZiB0aGlzIGV4dHJpbnNpYyBpcyBpbmNsdWRlZCBpbkwgdGhpcyBibG9jayBvciBub3QuADhmaW5hbGl6ZV9ibG9jawBcBGggRmluaXNoIHRoZSBjdXJyZW50IGJsb2NrLgBMaW5oZXJlbnRfZXh0cmluc2ljcwQgaW5oZXJlbnQ5D3UJBD0BIEdlbmVyYXRlIGluaGVyZW50IGV4dHJpbnNpY3MuIFRoZSBpbmhlcmVudCBkYXRhIHdpbGwgdmFyeSBmcm9tIGNoYWluIHRvIGNoYWluLgA8Y2hlY2tfaW5oZXJlbnRzCBRibG9jaxEPEGRhdGE5D0kPBFUBIENoZWNrIHRoYXQgdGhlIGluaGVyZW50cyBhcmUgdmFsaWQuIFRoZSBpbmhlcmVudCBkYXRhIHdpbGwgdmFyeSBmcm9tIGNoYWluIHRvIGNoYWluLgAEcQEgVGhlIGBCbG9ja0J1aWxkZXJgIGFwaSB0cmFpdCB0aGF0IHByb3ZpZGVzIHRoZSByZXF1aXJlZCBmdW5jdGlvbmFsaXR5IGZvciBidWlsZGluZyBhIGJsb2NrLhgASE5vbWluYXRpb25Qb29sc0FwaSg8cGVuZGluZ19yZXdhcmRzBAx3aG8EpAQ1ASBSZXR1cm5zIHRoZSBwZW5kaW5nIHJld2FyZHMgZm9yIHRoZSBtZW1iZXIgdGhhdCB0aGUgQWNjb3VudElkIHdhcyBnaXZlbiBmb3IuAERwb2ludHNfdG9fYmFsYW5jZQgccG9vbF9pZDgYcG9pbnRzpKQE9CBSZXR1cm5zIHRoZSBlcXVpdmFsZW50IGJhbGFuY2Ugb2YgYHBvaW50c2AgZm9yIGEgZ2l2ZW4gcG9vbC4ARGJhbGFuY2VfdG9fcG9pbnRzCBxwb29sX2lkOCRuZXdfZnVuZHOkpAT8IFJldHVybnMgdGhlIGVxdWl2YWxlbnQgcG9pbnRzIG9mIGBuZXdfZnVuZHNgIGZvciBhIGdpdmVuIHBvb2wuAEhwb29sX3BlbmRpbmdfc2xhc2gEHHBvb2xfaWQ4pASwIFJldHVybnMgdGhlIHBlbmRpbmcgc2xhc2ggZm9yIGEgZ2l2ZW4gcG9vbC4AUG1lbWJlcl9wZW5kaW5nX3NsYXNoBBhtZW1iZXIEpBDMIFJldHVybnMgdGhlIHBlbmRpbmcgc2xhc2ggZm9yIGEgZ2l2ZW4gcG9vbCBtZW1iZXIuAE0BIElmIHBlbmRpbmcgc2xhc2ggb2YgdGhlIG1lbWJlciBleGNlZWRzIGBFeGlzdGVudGlhbERlcG9zaXRgLCBpdCBjYW4gYmUgcmVwb3J0ZWQgb24cIGNoYWluLgB0cG9vbF9uZWVkc19kZWxlZ2F0ZV9taWdyYXRpb24EHHBvb2xfaWQ4mCDkIFJldHVybnMgdHJ1ZSBpZiB0aGUgcG9vbCB3aXRoIGBwb29sX2lkYCBuZWVkcyBtaWdyYXRpb24uAEkBIFRoaXMgY2FuIGhhcHBlbiB3aGVuIHRoZSBgcGFsbGV0LW5vbWluYXRpb24tcG9vbHNgIGhhcyBzd2l0Y2hlZCB0byB1c2luZyBzdHJhdGVneUEBIFtgRGVsZWdhdGVTdGFrZWBdKHBhbGxldF9ub21pbmF0aW9uX3Bvb2xzOjphZGFwdGVyOjpEZWxlZ2F0ZVN0YWtlKSBidXQgdGhlIHBvb2zoIHN0aWxsIGhhcyBmdW5kcyB0aGF0IHdlcmUgc3Rha2VkIHVzaW5nIHRoZSBvbGRlciBzdHJhdGVneRkBIFtUcmFuc2ZlclN0YWtlXShwYWxsZXRfbm9taW5hdGlvbl9wb29sczo6YWRhcHRlcjo6VHJhbnNmZXJTdGFrZSkuIFVzZYkBIFtgbWlncmF0ZV9wb29sX3RvX2RlbGVnYXRlX3N0YWtlYF0ocGFsbGV0X25vbWluYXRpb25fcG9vbHM6OkNhbGw6Om1pZ3JhdGVfcG9vbF90b19kZWxlZ2F0ZV9zdGFrZSlUIHRvIG1pZ3JhdGUgdGhlIHBvb2wuAHxtZW1iZXJfbmVlZHNfZGVsZWdhdGVfbWlncmF0aW9uBBhtZW1iZXIEmBwpASBSZXR1cm5zIHRydWUgaWYgdGhlIGRlbGVnYXRlZCBmdW5kcyBvZiB0aGUgcG9vbCBgbWVtYmVyYCBuZWVkcyBtaWdyYXRpb24uANggT25jZSBhIHBvb2wgaGFzIHN1Y2Nlc3NmdWxseSBtaWdyYXRlZCB0byB0aGUgc3RyYXRlZ3lVASBbYERlbGVnYXRlU3Rha2VgXShwYWxsZXRfbm9taW5hdGlvbl9wb29sczo6YWRhcHRlcjo6RGVsZWdhdGVTdGFrZSksIHRoZSBmdW5kcyBvZiB0aGUZASBtZW1iZXIgY2FuIGJlIG1pZ3JhdGVkIGZyb20gcG9vbCBhY2NvdW50IHRvIHRoZSBtZW1iZXIncyBhY2NvdW50LiBVc2UpASBbYG1pZ3JhdGVfZGVsZWdhdGlvbmBdKHBhbGxldF9ub21pbmF0aW9uX3Bvb2xzOjpDYWxsOjptaWdyYXRlX2RlbGVnYXRpb24ppCB0byBtaWdyYXRlIHRoZSBmdW5kcyBvZiB0aGUgcG9vbCBtZW1iZXIuAFBtZW1iZXJfdG90YWxfYmFsYW5jZQQMd2hvBKQEZQEgUmV0dXJucyB0aGUgdG90YWwgY29udHJpYnV0aW9uIG9mIGEgcG9vbCBtZW1iZXIgaW5jbHVkaW5nIGFueSBiYWxhbmNlIHRoYXQgaXMgdW5ib25kaW5nLgAwcG9vbF9iYWxhbmNlBBxwb29sX2lkOKQEnCBUb3RhbCBiYWxhbmNlIGNvbnRyaWJ1dGVkIHRvIHRoZSBwb29sLgA0cG9vbF9hY2NvdW50cwQccG9vbF9pZDhNDwQtASBSZXR1cm5zIHRoZSBib25kZWQgYWNjb3VudCBhbmQgcmV3YXJkIGFjY291bnQgYXNzb2NpYXRlZCB3aXRoIHRoZSBwb29sX2lkLgAE+CBSdW50aW1lIGFwaSBmb3IgYWNjZXNzaW5nIGluZm9ybWF0aW9uIGFib3V0IG5vbWluYXRpb24gcG9vbHMuBAAoU3Rha2luZ0FwaQxEbm9taW5hdGlvbnNfcXVvdGEEHGJhbGFuY2WkOAQRASBSZXR1cm5zIHRoZSBub21pbmF0aW9ucyBxdW90YSBmb3IgYSBub21pbmF0b3Igd2l0aCBhIGdpdmVuIGJhbGFuY2UuAFxlcmFzX3N0YWtlcnNfcGFnZV9jb3VudAgMZXJhOBxhY2NvdW50BDgEOQEgUmV0dXJucyB0aGUgcGFnZSBjb3VudCBvZiBleHBvc3VyZXMgZm9yIGEgdmFsaWRhdG9yIGBhY2NvdW50YCBpbiBhIGdpdmVuIGVyYS4APHBlbmRpbmdfcmV3YXJkcwgMZXJhOBxhY2NvdW50BJgERQEgUmV0dXJucyB0cnVlIGlmIGEgdmFsaWRhdG9yIGBhY2NvdW50YCBoYXMgcGFnZXMgdG8gYmUgY2xhaW1lZCBmb3IgdGhlIGdpdmVuIGVyYS4AAAQAWFRhZ2dlZFRyYW5zYWN0aW9uUXVldWUEUHZhbGlkYXRlX3RyYW5zYWN0aW9uDBhzb3VyY2VRDwh0eG0JKGJsb2NrX2hhc2g8VQ8kaCBWYWxpZGF0ZSB0aGUgdHJhbnNhY3Rpb24uAGUBIFRoaXMgbWV0aG9kIGlzIGludm9rZWQgYnkgdGhlIHRyYW5zYWN0aW9uIHBvb2wgdG8gbGVhcm4gZGV0YWlscyBhYm91dCBnaXZlbiB0cmFuc2FjdGlvbi5FASBUaGUgaW1wbGVtZW50YXRpb24gc2hvdWxkIG1ha2Ugc3VyZSB0byB2ZXJpZnkgdGhlIGNvcnJlY3RuZXNzIG9mIHRoZSB0cmFuc2FjdGlvbk0BIGFnYWluc3QgY3VycmVudCBzdGF0ZS4gVGhlIGdpdmVuIGBibG9ja19oYXNoYCBjb3JyZXNwb25kcyB0byB0aGUgaGFzaCBvZiB0aGUgYmxvY2t8IHRoYXQgaXMgdXNlZCBhcyBjdXJyZW50IHN0YXRlLgBFASBOb3RlIHRoYXQgdGhpcyBjYWxsIG1heSBiZSBwZXJmb3JtZWQgYnkgdGhlIHBvb2wgbXVsdGlwbGUgdGltZXMgYW5kIHRyYW5zYWN0aW9uc6QgbWlnaHQgYmUgdmVyaWZpZWQgaW4gYW55IHBvc3NpYmxlIG9yZGVyLgAETQEgVGhlIGBUYWdnZWRUcmFuc2FjdGlvblF1ZXVlYCBhcGkgdHJhaXQgZm9yIGludGVyZmVyaW5nIHdpdGggdGhlIHRyYW5zYWN0aW9uIHF1ZXVlLgwARE9mZmNoYWluV29ya2VyQXBpBDxvZmZjaGFpbl93b3JrZXIEGGhlYWRlclwQBMggU3RhcnRzIHRoZSBvZmYtY2hhaW4gdGFzayBmb3IgZ2l2ZW4gYmxvY2sgaGVhZGVyLgAEZCBUaGUgb2ZmY2hhaW4gd29ya2VyIGFwaS4IADRQYXJhY2hhaW5Ib3N0iCh2YWxpZGF0b3JzAL0MBHAgR2V0IHRoZSBjdXJyZW50IHZhbGlkYXRvcnMuAEB2YWxpZGF0b3JfZ3JvdXBzAF0PDGUBIFJldHVybnMgdGhlIHZhbGlkYXRvciBncm91cHMgYW5kIHJvdGF0aW9uIGluZm8gbG9jYWxpemVkIGJhc2VkIG9uIHRoZSBoeXBvdGhldGljYWwgY2hpbGRhASAgb2YgYSBibG9jayB3aG9zZSBzdGF0ZSAgdGhpcyBpcyBpbnZva2VkIG9uLiBOb3RlIHRoYXQgYG5vd2AgaW4gdGhlIGBHcm91cFJvdGF0aW9uSW5mb2DQIHNob3VsZCBiZSB0aGUgc3VjY2Vzc29yIG9mIHRoZSBudW1iZXIgb2YgdGhlIGJsb2NrLgBIYXZhaWxhYmlsaXR5X2NvcmVzAGUPCDUBIFlpZWxkcyBpbmZvcm1hdGlvbiBvbiBhbGwgYXZhaWxhYmlsaXR5IGNvcmVzIGFzIHJlbGV2YW50IHRvIHRoZSBjaGlsZCBibG9jay49ASBDb3JlcyBhcmUgZWl0aGVyIGZyZWUgb3Igb2NjdXBpZWQuIEZyZWUgY29yZXMgY2FuIGhhdmUgcGFyYXMgYXNzaWduZWQgdG8gdGhlbS4AZHBlcnNpc3RlZF92YWxpZGF0aW9uX2RhdGEIHHBhcmFfaWQVAihhc3N1bXB0aW9ugQ+FDxRpASBZaWVsZHMgdGhlIHBlcnNpc3RlZCB2YWxpZGF0aW9uIGRhdGEgZm9yIHRoZSBnaXZlbiBgUGFyYUlkYCBhbG9uZyB3aXRoIGFuIGFzc3VtcHRpb24gdGhhdNggc2hvdWxkIGJlIHVzZWQgaWYgdGhlIHBhcmEgY3VycmVudGx5IG9jY3VwaWVzIGEgY29yZS4ARQEgUmV0dXJucyBgTm9uZWAgaWYgZWl0aGVyIHRoZSBwYXJhIGlzIG5vdCByZWdpc3RlcmVkIG9yIHRoZSBhc3N1bXB0aW9uIGlzIGBGcmVlZGCYIGFuZCB0aGUgcGFyYSBhbHJlYWR5IG9jY3VwaWVzIGEgY29yZS4AXGFzc3VtZWRfdmFsaWRhdGlvbl9kYXRhCBxwYXJhX2lkFQKcZXhwZWN0ZWRfcGVyc2lzdGVkX3ZhbGlkYXRpb25fZGF0YV9oYXNoPI0PDGkBIFJldHVybnMgdGhlIHBlcnNpc3RlZCB2YWxpZGF0aW9uIGRhdGEgZm9yIHRoZSBnaXZlbiBgUGFyYUlkYCBhbG9uZyB3aXRoIHRoZSBjb3JyZXNwb25kaW5ndQEgdmFsaWRhdGlvbiBjb2RlIGhhc2guIEluc3RlYWQgb2YgYWNjZXB0aW5nIGFzc3VtcHRpb24gYWJvdXQgdGhlIHBhcmEsIG1hdGNoZXMgdGhlIHZhbGlkYXRpb24pASBkYXRhIGhhc2ggYWdhaW5zdCBhbiBleHBlY3RlZCBvbmUgYW5kIHlpZWxkcyBgTm9uZWAgaWYgdGhleSdyZSBub3QgZXF1YWwuAGBjaGVja192YWxpZGF0aW9uX291dHB1dHMIHHBhcmFfaWQVAhxvdXRwdXRzMQSYBBUBIENoZWNrcyBpZiB0aGUgZ2l2ZW4gdmFsaWRhdGlvbiBvdXRwdXRzIHBhc3MgdGhlIGFjY2VwdGFuY2UgY3JpdGVyaWEuAFxzZXNzaW9uX2luZGV4X2Zvcl9jaGlsZAA4DPAgUmV0dXJucyB0aGUgc2Vzc2lvbiBpbmRleCBleHBlY3RlZCBhdCBhIGNoaWxkIG9mIHRoZSBibG9jay4A0CBUaGlzIGNhbiBiZSB1c2VkIHRvIGluc3RhbnRpYXRlIGEgYFNpZ25pbmdDb250ZXh0YC4APHZhbGlkYXRpb25fY29kZQgccGFyYV9pZBUCKGFzc3VtcHRpb26BD0UEEFUBIEZldGNoIHRoZSB2YWxpZGF0aW9uIGNvZGUgdXNlZCBieSBhIHBhcmEsIG1ha2luZyB0aGUgZ2l2ZW4gYE9jY3VwaWVkQ29yZUFzc3VtcHRpb25gLgBFASBSZXR1cm5zIGBOb25lYCBpZiBlaXRoZXIgdGhlIHBhcmEgaXMgbm90IHJlZ2lzdGVyZWQgb3IgdGhlIGFzc3VtcHRpb24gaXMgYEZyZWVkYJggYW5kIHRoZSBwYXJhIGFscmVhZHkgb2NjdXBpZXMgYSBjb3JlLgB4Y2FuZGlkYXRlX3BlbmRpbmdfYXZhaWxhYmlsaXR5BBxwYXJhX2lkFQKVDwhdASBHZXQgdGhlIHJlY2VpcHQgb2YgYSBjYW5kaWRhdGUgcGVuZGluZyBhdmFpbGFiaWxpdHkuIFRoaXMgcmV0dXJucyBgU29tZWAgZm9yIGFueSBwYXJhcyUBIGFzc2lnbmVkIHRvIG9jY3VwaWVkIGNvcmVzIGluIGBhdmFpbGFiaWxpdHlfY29yZXNgIGFuZCBgTm9uZWAgb3RoZXJ3aXNlLgBAY2FuZGlkYXRlX2V2ZW50cwCZDwQtASBHZXQgYSB2ZWN0b3Igb2YgZXZlbnRzIGNvbmNlcm5pbmcgY2FuZGlkYXRlcyB0aGF0IG9jY3VycmVkIHdpdGhpbiBhIGJsb2NrLgAwZG1xX2NvbnRlbnRzBCRyZWNpcGllbnQVAnUNBD0BIEdldCBhbGwgdGhlIHBlbmRpbmcgaW5ib3VuZCBtZXNzYWdlcyBpbiB0aGUgZG93bndhcmQgbWVzc2FnZSBxdWV1ZSBmb3IgYSBwYXJhLgB4aW5ib3VuZF9ocm1wX2NoYW5uZWxzX2NvbnRlbnRzBCRyZWNpcGllbnQVAqEPCGUBIEdldCB0aGUgY29udGVudHMgb2YgYWxsIGNoYW5uZWxzIGFkZHJlc3NlZCB0byB0aGUgZ2l2ZW4gcmVjaXBpZW50LiBDaGFubmVscyB0aGF0IGhhdmUgbm+QIG1lc3NhZ2VzIGluIHRoZW0gYXJlIGFsc28gaW5jbHVkZWQuAFx2YWxpZGF0aW9uX2NvZGVfYnlfaGFzaAQQaGFzaC0ERQQEnCBHZXQgdGhlIHZhbGlkYXRpb24gY29kZSBmcm9tIGl0cyBoYXNoLgA4b25fY2hhaW5fdm90ZXMArQ8EMQEgU2NyYXBlIGRpc3B1dGUgcmVsZXZhbnQgZnJvbSBvbi1jaGFpbiwgYmFja2luZyB2b3RlcyBhbmQgcmVzb2x2ZWQgZGlzcHV0ZXMuADBzZXNzaW9uX2luZm8EFGluZGV4OLEPDNwgR2V0IHRoZSBzZXNzaW9uIGluZm8gZm9yIHRoZSBnaXZlbiBzZXNzaW9uLCBpZiBzdG9yZWQuABkBIE5PVEU6IFRoaXMgZnVuY3Rpb24gaXMgb25seSBhdmFpbGFibGUgc2luY2UgcGFyYWNoYWluIGhvc3QgdmVyc2lvbiAyLgBoc3VibWl0X3B2Zl9jaGVja19zdGF0ZW1lbnQIEHN0bXSBBCRzaWduYXR1cmURBBAMAQEgU3VibWl0cyBhIFBWRiBwcmUtY2hlY2tpbmcgc3RhdGVtZW50IGludG8gdGhlIHRyYW5zYWN0aW9uIHBvb2wuABkBIE5PVEU6IFRoaXMgZnVuY3Rpb24gaXMgb25seSBhdmFpbGFibGUgc2luY2UgcGFyYWNoYWluIGhvc3QgdmVyc2lvbiAyLgBUcHZmc19yZXF1aXJlX3ByZWNoZWNrADkNDF0BIFJldHVybnMgY29kZSBoYXNoZXMgb2YgUFZGcyB0aGF0IHJlcXVpcmUgcHJlLWNoZWNraW5nIGJ5IHZhbGlkYXRvcnMgaW4gdGhlIGFjdGl2ZSBzZXQuABkBIE5PVEU6IFRoaXMgZnVuY3Rpb24gaXMgb25seSBhdmFpbGFibGUgc2luY2UgcGFyYWNoYWluIGhvc3QgdmVyc2lvbiAyLgBQdmFsaWRhdGlvbl9jb2RlX2hhc2gIHHBhcmFfaWQVAihhc3N1bXB0aW9ugQ+1DwyFASBGZXRjaCB0aGUgaGFzaCBvZiB0aGUgdmFsaWRhdGlvbiBjb2RlIHVzZWQgYnkgYSBwYXJhLCBtYWtpbmcgdGhlIGdpdmVuIGBPY2N1cGllZENvcmVBc3N1bXB0aW9uYC4AGQEgTk9URTogVGhpcyBmdW5jdGlvbiBpcyBvbmx5IGF2YWlsYWJsZSBzaW5jZSBwYXJhY2hhaW4gaG9zdCB2ZXJzaW9uIDIuACBkaXNwdXRlcwC5DwR4IFJldHVybnMgYWxsIG9uY2hhaW4gZGlzcHV0ZXMuAFxzZXNzaW9uX2V4ZWN1dG9yX3BhcmFtcwQ0c2Vzc2lvbl9pbmRleDjBDwS4IFJldHVybnMgZXhlY3V0aW9uIHBhcmFtZXRlcnMgZm9yIHRoZSBzZXNzaW9uLgBEdW5hcHBsaWVkX3NsYXNoZXMAxQ8MWQEgUmV0dXJucyBhIGxpc3Qgb2YgdmFsaWRhdG9ycyB0aGF0IGxvc3QgYSBwYXN0IHNlc3Npb24gZGlzcHV0ZSBhbmQgbmVlZCB0byBiZSBzbGFzaGVkLgDAIERlcHJlY2F0ZWQuIFVzZSBgdW5hcHBsaWVkX3NsYXNoZXNfdjJgIGluc3RlYWQuAExrZXlfb3duZXJzaGlwX3Byb29mBDB2YWxpZGF0b3JfaWQJAdUPCMwgUmV0dXJucyBhIG1lcmtsZSBwcm9vZiBvZiBhIHZhbGlkYXRvciBzZXNzaW9uIGtleS4ZASBOT1RFOiBUaGlzIGZ1bmN0aW9uIGlzIG9ubHkgYXZhaWxhYmxlIHNpbmNlIHBhcmFjaGFpbiBob3N0IHZlcnNpb24gNS4AaHN1Ym1pdF9yZXBvcnRfZGlzcHV0ZV9sb3N0CDRkaXNwdXRlX3Byb29mmQRMa2V5X293bmVyc2hpcF9wcm9vZtkP8QYMKQEgU3VibWl0IGFuIHVuc2lnbmVkIGV4dHJpbnNpYyB0byBzbGFzaCB2YWxpZGF0b3JzIHdobyBsb3N0IGEgZGlzcHV0ZSBhYm91dHwgYSBjYW5kaWRhdGUgb2YgYSBwYXN0IHNlc3Npb24uGQEgTk9URTogVGhpcyBmdW5jdGlvbiBpcyBvbmx5IGF2YWlsYWJsZSBzaW5jZSBwYXJhY2hhaW4gaG9zdCB2ZXJzaW9uIDUuAFRtaW5pbXVtX2JhY2tpbmdfdm90ZXMAOAgNASBHZXQgdGhlIG1pbmltdW0gbnVtYmVyIG9mIGJhY2tpbmcgdm90ZXMgZm9yIGEgcGFyYWNoYWluIGNhbmRpZGF0ZS70IFRoaXMgaXMgYSBzdGFnaW5nIG1ldGhvZCEgRG8gbm90IHVzZSBvbiBwcm9kdWN0aW9uIHJ1bnRpbWVzIQBIcGFyYV9iYWNraW5nX3N0YXRlBIBfX3J1bnRpbWVfYXBpX2dlbmVyYXRlZF9uYW1lXzBfXxUC3Q8E5CBSZXR1cm5zIHRoZSBzdGF0ZSBvZiBwYXJhY2hhaW4gYmFja2luZyBmb3IgYSBnaXZlbiBwYXJhLgBQYXN5bmNfYmFja2luZ19wYXJhbXMAyQMEYQEgUmV0dXJucyBjYW5kaWRhdGUncyBhY2NlcHRhbmNlIGxpbWl0YXRpb25zIGZvciBhc3luY2hyb25vdXMgYmFja2luZyBmb3IgYSByZWxheSBwYXJlbnQuAExkaXNhYmxlZF92YWxpZGF0b3JzALkMBPggUmV0dXJucyBhIGxpc3Qgb2YgYWxsIGRpc2FibGVkIHZhbGlkYXRvcnMgYXQgdGhlIGdpdmVuIGJsb2NrLgA0bm9kZV9mZWF0dXJlcwAFBAhMIEdldCBub2RlIGZlYXR1cmVzLvQgVGhpcyBpcyBhIHN0YWdpbmcgbWV0aG9kISBEbyBub3QgdXNlIG9uIHByb2R1Y3Rpb24gcnVudGltZXMhAFhhcHByb3ZhbF92b3RpbmdfcGFyYW1zAOEDBKQgQXBwcm92YWwgdm90aW5nIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVycwAsY2xhaW1fcXVldWUADRAEMCBDbGFpbSBxdWV1ZQB8Y2FuZGlkYXRlc19wZW5kaW5nX2F2YWlsYWJpbGl0eQQccGFyYV9pZBUCGRAEYCBFbGFzdGljIHNjYWxpbmcgc3VwcG9ydABodmFsaWRhdGlvbl9jb2RlX2JvbWJfbGltaXQAOAS0IFJldHJpZXZlIHRoZSBtYXhpbXVtIHVuY29tcHJlc3NlZCBjb2RlIHNpemUuAExiYWNraW5nX2NvbnN0cmFpbnRzBBxwYXJhX2lkFQIdEAgxASBSZXR1cm5zIHRoZSBjb25zdHJhaW50cyBvbiB0aGUgYWN0aW9ucyB0aGF0IGNhbiBiZSB0YWtlbiBieSBhIG5ldyBwYXJhY2hhaW4cIGJsb2NrLgBQc2NoZWR1bGluZ19sb29rYWhlYWQAOASIIFJldHJpZXZlIHRoZSBzY2hlZHVsaW5nIGxvb2thaGVhZAAE3CBUaGUgQVBJIGZvciBxdWVyeWluZyB0aGUgc3RhdGUgb2YgcGFyYWNoYWlucyBvbi1jaGFpbi40ACBCZWVmeUFwaRg0YmVlZnlfZ2VuZXNpcwDlAQQFASBSZXR1cm4gdGhlIGJsb2NrIG51bWJlciB3aGVyZSBCRUVGWSBjb25zZW5zdXMgaXMgZW5hYmxlZC9zdGFydGVkADR2YWxpZGF0b3Jfc2V0ACEQBLggUmV0dXJuIHRoZSBjdXJyZW50IGFjdGl2ZSBCRUVGWSB2YWxpZGF0b3Igc2V0ALhzdWJtaXRfcmVwb3J0X2RvdWJsZV92b3RpbmdfdW5zaWduZWRfZXh0cmluc2ljCEhlcXVpdm9jYXRpb25fcHJvb2aFBjxrZXlfb3duZXJfcHJvb2YpEPEGIEUBIFN1Ym1pdHMgYW4gdW5zaWduZWQgZXh0cmluc2ljIHRvIHJlcG9ydCBhIGRvdWJsZSB2b3RpbmcgZXF1aXZvY2F0aW9uLiBUaGUgY2FsbGVy/CBtdXN0IHByb3ZpZGUgdGhlIGRvdWJsZSB2b3RpbmcgcHJvb2YgYW5kIGEga2V5IG93bmVyc2hpcCBwcm9vZvwgKHNob3VsZCBiZSBvYnRhaW5lZCB1c2luZyBgZ2VuZXJhdGVfa2V5X293bmVyc2hpcF9wcm9vZmApLiBUaGUFASBleHRyaW5zaWMgd2lsbCBiZSB1bnNpZ25lZCBhbmQgc2hvdWxkIG9ubHkgYmUgYWNjZXB0ZWQgZm9yIGxvY2FsFQEgYXV0aG9yc2hpcCAobm90IHRvIGJlIGJyb2FkY2FzdCB0byB0aGUgbmV0d29yaykuIFRoaXMgbWV0aG9kIHJldHVybnMJASBgTm9uZWAgd2hlbiBjcmVhdGlvbiBvZiB0aGUgZXh0cmluc2ljIGZhaWxzLCBlLmcuIGlmIGVxdWl2b2NhdGlvbgUBIHJlcG9ydGluZyBpcyBkaXNhYmxlZCBmb3IgdGhlIGdpdmVuIHJ1bnRpbWUgKGkuZS4gdGhpcyBtZXRob2QgaXMFASBoYXJkY29kZWQgdG8gcmV0dXJuIGBOb25lYCkuIE9ubHkgdXNlZnVsIGluIGFuIG9mZmNoYWluIGNvbnRleHQuALBzdWJtaXRfcmVwb3J0X2Zvcmtfdm90aW5nX3Vuc2lnbmVkX2V4dHJpbnNpYwhIZXF1aXZvY2F0aW9uX3Byb29mLRA8a2V5X293bmVyX3Byb29mKRDxBiA9ASBTdWJtaXRzIGFuIHVuc2lnbmVkIGV4dHJpbnNpYyB0byByZXBvcnQgYSBmb3JrIHZvdGluZyBlcXVpdm9jYXRpb24uIFRoZSBjYWxsZXJBASBtdXN0IHByb3ZpZGUgdGhlIGZvcmsgdm90aW5nIHByb29mICh0aGUgYW5jZXN0cnkgcHJvb2Ygc2hvdWxkIGJlIG9idGFpbmVkIHVzaW5nPQEgYGdlbmVyYXRlX2FuY2VzdHJ5X3Byb29mYCkgYW5kIGEga2V5IG93bmVyc2hpcCBwcm9vZiAoc2hvdWxkIGJlIG9idGFpbmVkIHVzaW5nQQEgYGdlbmVyYXRlX2tleV9vd25lcnNoaXBfcHJvb2ZgKS4gVGhlIGV4dHJpbnNpYyB3aWxsIGJlIHVuc2lnbmVkIGFuZCBzaG91bGQgb25seU0BIGJlIGFjY2VwdGVkIGZvciBsb2NhbCBhdXRob3JzaGlwIChub3QgdG8gYmUgYnJvYWRjYXN0IHRvIHRoZSBuZXR3b3JrKS4gVGhpcyBtZXRob2QpASByZXR1cm5zIGBOb25lYCB3aGVuIGNyZWF0aW9uIG9mIHRoZSBleHRyaW5zaWMgZmFpbHMsIGUuZy4gaWYgZXF1aXZvY2F0aW9uBQEgcmVwb3J0aW5nIGlzIGRpc2FibGVkIGZvciB0aGUgZ2l2ZW4gcnVudGltZSAoaS5lLiB0aGlzIG1ldGhvZCBpcwUBIGhhcmRjb2RlZCB0byByZXR1cm4gYE5vbmVgKS4gT25seSB1c2VmdWwgaW4gYW4gb2ZmY2hhaW4gY29udGV4dC4A0HN1Ym1pdF9yZXBvcnRfZnV0dXJlX2Jsb2NrX3ZvdGluZ191bnNpZ25lZF9leHRyaW5zaWMISGVxdWl2b2NhdGlvbl9wcm9vZrUGPGtleV9vd25lcl9wcm9vZikQ8QYgXQEgU3VibWl0cyBhbiB1bnNpZ25lZCBleHRyaW5zaWMgdG8gcmVwb3J0IGEgZnV0dXJlIGJsb2NrIHZvdGluZyBlcXVpdm9jYXRpb24uIFRoZSBjYWxsZXIVASBtdXN0IHByb3ZpZGUgdGhlIGZ1dHVyZSBibG9jayB2b3RpbmcgcHJvb2YgYW5kIGEga2V5IG93bmVyc2hpcCBwcm9vZuwgKHNob3VsZCBiZSBvYnRhaW5lZCB1c2luZyBgZ2VuZXJhdGVfa2V5X293bmVyc2hpcF9wcm9vZmApLhUBIFRoZSBleHRyaW5zaWMgd2lsbCBiZSB1bnNpZ25lZCBhbmQgc2hvdWxkIG9ubHkgYmUgYWNjZXB0ZWQgZm9yIGxvY2FsFQEgYXV0aG9yc2hpcCAobm90IHRvIGJlIGJyb2FkY2FzdCB0byB0aGUgbmV0d29yaykuIFRoaXMgbWV0aG9kIHJldHVybnMJASBgTm9uZWAgd2hlbiBjcmVhdGlvbiBvZiB0aGUgZXh0cmluc2ljIGZhaWxzLCBlLmcuIGlmIGVxdWl2b2NhdGlvbgUBIHJlcG9ydGluZyBpcyBkaXNhYmxlZCBmb3IgdGhlIGdpdmVuIHJ1bnRpbWUgKGkuZS4gdGhpcyBtZXRob2QgaXMFASBoYXJkY29kZWQgdG8gcmV0dXJuIGBOb25lYCkuIE9ubHkgdXNlZnVsIGluIGFuIG9mZmNoYWluIGNvbnRleHQuAHBnZW5lcmF0ZV9rZXlfb3duZXJzaGlwX3Byb29mCBhzZXRfaWQoMGF1dGhvcml0eV9pZBUBMRAsCQEgR2VuZXJhdGVzIGEgcHJvb2Ygb2Yga2V5IG93bmVyc2hpcCBmb3IgdGhlIGdpdmVuIGF1dGhvcml0eSBpbiB0aGX8IGdpdmVuIHNldC4gQW4gZXhhbXBsZSB1c2FnZSBvZiB0aGlzIG1vZHVsZSBpcyBjb3VwbGVkIHdpdGggdGhlBQEgc2Vzc2lvbiBoaXN0b3JpY2FsIG1vZHVsZSB0byBwcm92ZSB0aGF0IGEgZ2l2ZW4gYXV0aG9yaXR5IGtleSBpcw0BIHRpZWQgdG8gYSBnaXZlbiBzdGFraW5nIGlkZW50aXR5IGR1cmluZyBhIHNwZWNpZmljIHNlc3Npb24uIFByb29mcxEBIG9mIGtleSBvd25lcnNoaXAgYXJlIG5lY2Vzc2FyeSBmb3Igc3VibWl0dGluZyBlcXVpdm9jYXRpb24gcmVwb3J0cy4RASBOT1RFOiBldmVuIHRob3VnaCB0aGUgQVBJIHRha2VzIGEgYHNldF9pZGAgYXMgcGFyYW1ldGVyIHRoZSBjdXJyZW50CQEgaW1wbGVtZW50YXRpb25zIGlnbm9yZXMgdGhpcyBwYXJhbWV0ZXIgYW5kIGluc3RlYWQgcmVsaWVzIG9uIHRoaXMNASBtZXRob2QgYmVpbmcgY2FsbGVkIGF0IHRoZSBjb3JyZWN0IGJsb2NrIGhlaWdodCwgaS5lLiBhbnkgcG9pbnQgYXQVASB3aGljaCB0aGUgZ2l2ZW4gc2V0IGlkIGlzIGxpdmUgb24tY2hhaW4uIEZ1dHVyZSBpbXBsZW1lbnRhdGlvbnMgd2lsbA0BIGluc3RlYWQgdXNlIGluZGV4ZWQgZGF0YSB0aHJvdWdoIGFuIG9mZmNoYWluIHdvcmtlciwgbm90IHJlcXVpcmluZ3ggb2xkZXIgc3RhdGVzIHRvIGJlIGF2YWlsYWJsZS4ABIAgQVBJIG5lY2Vzc2FyeSBmb3IgQkVFRlkgdm90ZXJzLhgAGE1tckFwaRggbW1yX3Jvb3QANRAEjCBSZXR1cm4gdGhlIG9uLWNoYWluIE1NUiByb290IGhhc2guADhtbXJfbGVhZl9jb3VudAA9EAS4IFJldHVybiB0aGUgbnVtYmVyIG9mIE1NUiBibG9ja3MgaW4gdGhlIGNoYWluLgA4Z2VuZXJhdGVfcHJvb2YINGJsb2NrX251bWJlcnPMXGJlc3Rfa25vd25fYmxvY2tfbnVtYmVy5QFBEAhpASBHZW5lcmF0ZSBNTVIgcHJvb2YgZm9yIGEgc2VyaWVzIG9mIGJsb2NrIG51bWJlcnMuIElmIGBiZXN0X2tub3duX2Jsb2NrX251bWJlciA9IFNvbWUobilgLEUBIHVzZSBoaXN0b3JpY2FsIE1NUiBzdGF0ZSBhdCBnaXZlbiBibG9jayBoZWlnaHQgYG5gLiBFbHNlLCB1c2UgY3VycmVudCBNTVIgc3RhdGUuAFxnZW5lcmF0ZV9hbmNlc3RyeV9wcm9vZghEcHJldl9ibG9ja19udW1iZXI4XGJlc3Rfa25vd25fYmxvY2tfbnVtYmVy5QFVEAhFASBHZW5lcmF0ZXMgYSBwcm9vZiB0aGF0IHRoZSBgcHJldl9ibG9ja19udW1iZXJgIGlzIHBhcnQgb2YgdGhlIGNhbm9uaWNhbCBjaGFpbiBhdGwgYGJlc3Rfa25vd25fYmxvY2tfbnVtYmVyYC4AMHZlcmlmeV9wcm9vZggYbGVhdmVzSRAUcHJvb2ZREFkQFPQgVmVyaWZ5IE1NUiBwcm9vZiBhZ2FpbnN0IG9uLWNoYWluIE1NUiBmb3IgYSBiYXRjaCBvZiBsZWF2ZXMuAHEBIE5vdGUgdGhpcyBmdW5jdGlvbiB3aWxsIHVzZSBvbi1jaGFpbiBNTVIgcm9vdCBoYXNoIGFuZCBjaGVjayBpZiB0aGUgcHJvb2YgbWF0Y2hlcyB0aGUgaGFzaC5tASBOb3RlLCB0aGUgbGVhdmVzIHNob3VsZCBiZSBzb3J0ZWQgc3VjaCB0aGF0IGNvcnJlc3BvbmRpbmcgbGVhdmVzIGFuZCBsZWFmIGluZGljZXMgaGF2ZSB0aGWVASBzYW1lIHBvc2l0aW9uIGluIGJvdGggdGhlIGBsZWF2ZXNgIHZlY3RvciBhbmQgdGhlIGBsZWFmX2luZGljZXNgIHZlY3RvciBjb250YWluZWQgaW4gdGhlIFtMZWFmUHJvb2ZdAFh2ZXJpZnlfcHJvb2Zfc3RhdGVsZXNzDBByb290PBhsZWF2ZXNJEBRwcm9vZlEQWRAcAQEgVmVyaWZ5IE1NUiBwcm9vZiBhZ2FpbnN0IGdpdmVuIHJvb3QgaGFzaCBmb3IgYSBiYXRjaCBvZiBsZWF2ZXMuAPwgTm90ZSB0aGlzIGZ1bmN0aW9uIGRvZXMgbm90IHJlcXVpcmUgYW55IG9uLWNoYWluIHN0b3JhZ2UgLSB0aGW8IHByb29mIGlzIHZlcmlmaWVkIGFnYWluc3QgZ2l2ZW4gTU1SIHJvb3QgaGFzaC4AbQEgTm90ZSwgdGhlIGxlYXZlcyBzaG91bGQgYmUgc29ydGVkIHN1Y2ggdGhhdCBjb3JyZXNwb25kaW5nIGxlYXZlcyBhbmQgbGVhZiBpbmRpY2VzIGhhdmUgdGhllQEgc2FtZSBwb3NpdGlvbiBpbiBib3RoIHRoZSBgbGVhdmVzYCB2ZWN0b3IgYW5kIHRoZSBgbGVhZl9pbmRpY2VzYCB2ZWN0b3IgY29udGFpbmVkIGluIHRoZSBbTGVhZlByb29mXQAEhCBBUEkgdG8gaW50ZXJhY3Qgd2l0aCBNTVIgcGFsbGV0LgwALEJlZWZ5TW1yQXBpCExhdXRob3JpdHlfc2V0X3Byb29mAAEPBNwgUmV0dXJuIHRoZSBjdXJyZW50bHkgYWN0aXZlIEJFRUZZIGF1dGhvcml0eSBzZXQgcHJvb2YuAGBuZXh0X2F1dGhvcml0eV9zZXRfcHJvb2YAAQ8EyCBSZXR1cm4gdGhlIG5leHQvcXVldWVkIEJFRUZZIGF1dGhvcml0eSBzZXQgcHJvb2YuAASQIEFQSSB1c2VmdWwgZm9yIEJFRUZZIGxpZ2h0IGNsaWVudHMuBAAoR3JhbmRwYUFwaRBMZ3JhbmRwYV9hdXRob3JpdGllcwBBCBg9ASBHZXQgdGhlIGN1cnJlbnQgR1JBTkRQQSBhdXRob3JpdGllcyBhbmQgd2VpZ2h0cy4gVGhpcyBzaG91bGQgbm90IGNoYW5nZSBleGNlcHQdASBmb3Igd2hlbiBjaGFuZ2VzIGFyZSBzY2hlZHVsZWQgYW5kIHRoZSBjb3JyZXNwb25kaW5nIGRlbGF5IGhhcyBwYXNzZWQuADUBIFdoZW4gY2FsbGVkIGF0IGJsb2NrIEIsIGl0IHdpbGwgcmV0dXJuIHRoZSBzZXQgb2YgYXV0aG9yaXRpZXMgdGhhdCBzaG91bGQgYmU9ASB1c2VkIHRvIGZpbmFsaXplIGRlc2NlbmRhbnRzIG9mIHRoaXMgYmxvY2sgKEIrMSwgQisyLCAuLi4pLiBUaGUgYmxvY2sgQiBpdHNlbGbAIGlzIGZpbmFsaXplZCBieSB0aGUgYXV0aG9yaXRpZXMgZnJvbSBibG9jayBCLTEuALRzdWJtaXRfcmVwb3J0X2VxdWl2b2NhdGlvbl91bnNpZ25lZF9leHRyaW5zaWMISGVxdWl2b2NhdGlvbl9wcm9vZiEBPGtleV9vd25lcl9wcm9vZikQ8QYgEQEgU3VibWl0cyBhbiB1bnNpZ25lZCBleHRyaW5zaWMgdG8gcmVwb3J0IGFuIGVxdWl2b2NhdGlvbi4gVGhlIGNhbGxlcvggbXVzdCBwcm92aWRlIHRoZSBlcXVpdm9jYXRpb24gcHJvb2YgYW5kIGEga2V5IG93bmVyc2hpcCBwcm9vZvwgKHNob3VsZCBiZSBvYnRhaW5lZCB1c2luZyBgZ2VuZXJhdGVfa2V5X293bmVyc2hpcF9wcm9vZmApLiBUaGUFASBleHRyaW5zaWMgd2lsbCBiZSB1bnNpZ25lZCBhbmQgc2hvdWxkIG9ubHkgYmUgYWNjZXB0ZWQgZm9yIGxvY2FsFQEgYXV0aG9yc2hpcCAobm90IHRvIGJlIGJyb2FkY2FzdCB0byB0aGUgbmV0d29yaykuIFRoaXMgbWV0aG9kIHJldHVybnMJASBgTm9uZWAgd2hlbiBjcmVhdGlvbiBvZiB0aGUgZXh0cmluc2ljIGZhaWxzLCBlLmcuIGlmIGVxdWl2b2NhdGlvbgUBIHJlcG9ydGluZyBpcyBkaXNhYmxlZCBmb3IgdGhlIGdpdmVuIHJ1bnRpbWUgKGkuZS4gdGhpcyBtZXRob2QgaXMFASBoYXJkY29kZWQgdG8gcmV0dXJuIGBOb25lYCkuIE9ubHkgdXNlZnVsIGluIGFuIG9mZmNoYWluIGNvbnRleHQuAHBnZW5lcmF0ZV9rZXlfb3duZXJzaGlwX3Byb29mCBhzZXRfaWQoMGF1dGhvcml0eV9pZAUBMRAsCQEgR2VuZXJhdGVzIGEgcHJvb2Ygb2Yga2V5IG93bmVyc2hpcCBmb3IgdGhlIGdpdmVuIGF1dGhvcml0eSBpbiB0aGX8IGdpdmVuIHNldC4gQW4gZXhhbXBsZSB1c2FnZSBvZiB0aGlzIG1vZHVsZSBpcyBjb3VwbGVkIHdpdGggdGhlBQEgc2Vzc2lvbiBoaXN0b3JpY2FsIG1vZHVsZSB0byBwcm92ZSB0aGF0IGEgZ2l2ZW4gYXV0aG9yaXR5IGtleSBpcw0BIHRpZWQgdG8gYSBnaXZlbiBzdGFraW5nIGlkZW50aXR5IGR1cmluZyBhIHNwZWNpZmljIHNlc3Npb24uIFByb29mcxEBIG9mIGtleSBvd25lcnNoaXAgYXJlIG5lY2Vzc2FyeSBmb3Igc3VibWl0dGluZyBlcXVpdm9jYXRpb24gcmVwb3J0cy4RASBOT1RFOiBldmVuIHRob3VnaCB0aGUgQVBJIHRha2VzIGEgYHNldF9pZGAgYXMgcGFyYW1ldGVyIHRoZSBjdXJyZW50/CBpbXBsZW1lbnRhdGlvbnMgaWdub3JlIHRoaXMgcGFyYW1ldGVyIGFuZCBpbnN0ZWFkIHJlbHkgb24gdGhpcw0BIG1ldGhvZCBiZWluZyBjYWxsZWQgYXQgdGhlIGNvcnJlY3QgYmxvY2sgaGVpZ2h0LCBpLmUuIGFueSBwb2ludCBhdBUBIHdoaWNoIHRoZSBnaXZlbiBzZXQgaWQgaXMgbGl2ZSBvbi1jaGFpbi4gRnV0dXJlIGltcGxlbWVudGF0aW9ucyB3aWxsDQEgaW5zdGVhZCB1c2UgaW5kZXhlZCBkYXRhIHRocm91Z2ggYW4gb2ZmY2hhaW4gd29ya2VyLCBub3QgcmVxdWlyaW5neCBvbGRlciBzdGF0ZXMgdG8gYmUgYXZhaWxhYmxlLgA4Y3VycmVudF9zZXRfaWQAKASYIEdldCBjdXJyZW50IEdSQU5EUEEgYXV0aG9yaXR5IHNldCBpZC4AJAEBIEFQSXMgZm9yIGludGVncmF0aW5nIHRoZSBHUkFORFBBIGZpbmFsaXR5IGdhZGdldCBpbnRvIHJ1bnRpbWVzLsAgVGhpcyBzaG91bGQgYmUgaW1wbGVtZW50ZWQgb24gdGhlIHJ1bnRpbWUgc2lkZS4AFQEgVGhpcyBpcyBwcmltYXJpbHkgdXNlZCBmb3IgbmVnb3RpYXRpbmcgYXV0aG9yaXR5LXNldCBjaGFuZ2VzIGZvciB0aGUNASBnYWRnZXQuIEdSQU5EUEEgdXNlcyBhIHNpZ25hbGluZyBtb2RlbCBvZiBjaGFuZ2luZyBhdXRob3JpdHkgc2V0czoxASBjaGFuZ2VzIHNob3VsZCBiZSBzaWduYWxlZCB3aXRoIGEgZGVsYXkgb2YgTiBibG9ja3MsIGFuZCB0aGVuIGF1dG9tYXRpY2FsbHnkIGFwcGxpZWQgaW4gdGhlIHJ1bnRpbWUgYWZ0ZXIgdGhvc2UgTiBibG9ja3MgaGF2ZSBwYXNzZWQuAPwgVGhlIGNvbnNlbnN1cyBwcm90b2NvbCB3aWxsIGNvb3JkaW5hdGUgdGhlIGhhbmRvZmYgZXh0ZXJuYWxseS4MABxCYWJlQXBpGDRjb25maWd1cmF0aW9uAF0QBIwgUmV0dXJuIHRoZSBjb25maWd1cmF0aW9uIGZvciBCQUJFLgBMY3VycmVudF9lcG9jaF9zdGFydAB4BMQgUmV0dXJucyB0aGUgc2xvdCB0aGF0IHN0YXJ0ZWQgdGhlIGN1cnJlbnQgZXBvY2guADRjdXJyZW50X2Vwb2NoAGEQBMQgUmV0dXJucyBpbmZvcm1hdGlvbiByZWdhcmRpbmcgdGhlIGN1cnJlbnQgZXBvY2guAChuZXh0X2Vwb2NoAGEQCAEBIFJldHVybnMgaW5mb3JtYXRpb24gcmVnYXJkaW5nIHRoZSBuZXh0IGVwb2NoICh3aGljaCB3YXMgYWxyZWFkeVwgcHJldmlvdXNseSBhbm5vdW5jZWQpLgBwZ2VuZXJhdGVfa2V5X293bmVyc2hpcF9wcm9vZggQc2xvdHgwYXV0aG9yaXR5X2lkdGUQLAkBIEdlbmVyYXRlcyBhIHByb29mIG9mIGtleSBvd25lcnNoaXAgZm9yIHRoZSBnaXZlbiBhdXRob3JpdHkgaW4gdGhlDQEgY3VycmVudCBlcG9jaC4gQW4gZXhhbXBsZSB1c2FnZSBvZiB0aGlzIG1vZHVsZSBpcyBjb3VwbGVkIHdpdGggdGhlBQEgc2Vzc2lvbiBoaXN0b3JpY2FsIG1vZHVsZSB0byBwcm92ZSB0aGF0IGEgZ2l2ZW4gYXV0aG9yaXR5IGtleSBpcw0BIHRpZWQgdG8gYSBnaXZlbiBzdGFraW5nIGlkZW50aXR5IGR1cmluZyBhIHNwZWNpZmljIHNlc3Npb24uIFByb29mcxEBIG9mIGtleSBvd25lcnNoaXAgYXJlIG5lY2Vzc2FyeSBmb3Igc3VibWl0dGluZyBlcXVpdm9jYXRpb24gcmVwb3J0cy4JASBOT1RFOiBldmVuIHRob3VnaCB0aGUgQVBJIHRha2VzIGEgYHNsb3RgIGFzIHBhcmFtZXRlciB0aGUgY3VycmVudAkBIGltcGxlbWVudGF0aW9ucyBpZ25vcmVzIHRoaXMgcGFyYW1ldGVyIGFuZCBpbnN0ZWFkIHJlbGllcyBvbiB0aGlzDQEgbWV0aG9kIGJlaW5nIGNhbGxlZCBhdCB0aGUgY29ycmVjdCBibG9jayBoZWlnaHQsIGkuZS4gYW55IHBvaW50IGF08CB3aGljaCB0aGUgZXBvY2ggZm9yIHRoZSBnaXZlbiBzbG90IGlzIGxpdmUgb24tY2hhaW4uIEZ1dHVyZQkBIGltcGxlbWVudGF0aW9ucyB3aWxsIGluc3RlYWQgdXNlIGluZGV4ZWQgZGF0YSB0aHJvdWdoIGFuIG9mZmNoYWlu0CB3b3JrZXIsIG5vdCByZXF1aXJpbmcgb2xkZXIgc3RhdGVzIHRvIGJlIGF2YWlsYWJsZS4AtHN1Ym1pdF9yZXBvcnRfZXF1aXZvY2F0aW9uX3Vuc2lnbmVkX2V4dHJpbnNpYwhIZXF1aXZvY2F0aW9uX3Byb29mWDxrZXlfb3duZXJfcHJvb2ZpEPEGIBEBIFN1Ym1pdHMgYW4gdW5zaWduZWQgZXh0cmluc2ljIHRvIHJlcG9ydCBhbiBlcXVpdm9jYXRpb24uIFRoZSBjYWxsZXL4IG11c3QgcHJvdmlkZSB0aGUgZXF1aXZvY2F0aW9uIHByb29mIGFuZCBhIGtleSBvd25lcnNoaXAgcHJvb2b8IChzaG91bGQgYmUgb2J0YWluZWQgdXNpbmcgYGdlbmVyYXRlX2tleV9vd25lcnNoaXBfcHJvb2ZgKS4gVGhlBQEgZXh0cmluc2ljIHdpbGwgYmUgdW5zaWduZWQgYW5kIHNob3VsZCBvbmx5IGJlIGFjY2VwdGVkIGZvciBsb2NhbBUBIGF1dGhvcnNoaXAgKG5vdCB0byBiZSBicm9hZGNhc3QgdG8gdGhlIG5ldHdvcmspLiBUaGlzIG1ldGhvZCByZXR1cm5zCQEgYE5vbmVgIHdoZW4gY3JlYXRpb24gb2YgdGhlIGV4dHJpbnNpYyBmYWlscywgZS5nLiBpZiBlcXVpdm9jYXRpb24FASByZXBvcnRpbmcgaXMgZGlzYWJsZWQgZm9yIHRoZSBnaXZlbiBydW50aW1lIChpLmUuIHRoaXMgbWV0aG9kIGlzBQEgaGFyZGNvZGVkIHRvIHJldHVybiBgTm9uZWApLiBPbmx5IHVzZWZ1bCBpbiBhbiBvZmZjaGFpbiBjb250ZXh0LgAEuCBBUEkgbmVjZXNzYXJ5IGZvciBibG9jayBhdXRob3JzaGlwIHdpdGggQkFCRS4IAFRBdXRob3JpdHlEaXNjb3ZlcnlBcGkELGF1dGhvcml0aWVzANEKBBkBIFJldHJpZXZlIGF1dGhvcml0eSBpZGVudGlmaWVycyBvZiB0aGUgY3VycmVudCBhbmQgbmV4dCBhdXRob3JpdHkgc2V0LgAQdCBUaGUgYXV0aG9yaXR5IGRpc2NvdmVyeSBhcGkuAFEBIFRoaXMgYXBpIGlzIHVzZWQgYnkgdGhlIGBjbGllbnQvYXV0aG9yaXR5LWRpc2NvdmVyeWAgbW9kdWxlIHRvIHJldHJpZXZlIGlkZW50aWZpZXJznCBvZiB0aGUgY3VycmVudCBhbmQgbmV4dCBhdXRob3JpdHkgc2V0LgQALFNlc3Npb25LZXlzCFRnZW5lcmF0ZV9zZXNzaW9uX2tleXMEEHNlZWSRDhgcFQEgR2VuZXJhdGUgYSBzZXQgb2Ygc2Vzc2lvbiBrZXlzIHdpdGggb3B0aW9uYWxseSB1c2luZyB0aGUgZ2l2ZW4gc2VlZC4JASBUaGUga2V5cyBzaG91bGQgYmUgc3RvcmVkIHdpdGhpbiB0aGUga2V5c3RvcmUgZXhwb3NlZCB2aWEgcnVudGltZTwgZXh0ZXJuYWxpdGllcy4AsCBUaGUgc2VlZCBuZWVkcyB0byBiZSBhIHZhbGlkIGB1dGY4YCBzdHJpbmcuANAgUmV0dXJucyB0aGUgY29uY2F0ZW5hdGVkIFNDQUxFIGVuY29kZWQgcHVibGljIGtleXMuAExkZWNvZGVfc2Vzc2lvbl9rZXlzBBxlbmNvZGVkGG0QDJggRGVjb2RlIHRoZSBnaXZlbiBwdWJsaWMgc2Vzc2lvbiBrZXlzLgDcIFJldHVybnMgdGhlIGxpc3Qgb2YgcHVibGljIHJhdyBwdWJsaWMga2V5cyArIGtleSB0eXBlLgAEaCBTZXNzaW9uIGtleXMgcnVudGltZSBhcGkuBABMUnVudGltZVZpZXdGdW5jdGlvbgRUZXhlY3V0ZV92aWV3X2Z1bmN0aW9uCCBxdWVyeV9pZHkQFGlucHV0GH0QBHwgRXhlY3V0ZSBhIHZpZXcgZnVuY3Rpb24gcXVlcnkuAASkIFJ1bnRpbWUgQVBJIGZvciBleGVjdXRpbmcgdmlldyBmdW5jdGlvbnMEADxBY2NvdW50Tm9uY2VBcGkENGFjY291bnRfbm9uY2UEHGFjY291bnQEOATAIEdldCBjdXJyZW50IGFjY291bnQgbm9uY2Ugb2YgZ2l2ZW4gYEFjY291bnRJZGAuAASAIFRoZSBBUEkgdG8gcXVlcnkgYWNjb3VudCBub25jZS4EAFRUcmFuc2FjdGlvblBheW1lbnRBcGkQKHF1ZXJ5X2luZm8IDHV4dG0JDGxlbjiFEAAARHF1ZXJ5X2ZlZV9kZXRhaWxzCAx1eHRtCQxsZW44iRAAAExxdWVyeV93ZWlnaHRfdG9fZmVlBBh3ZWlnaHQ1AqQAAExxdWVyeV9sZW5ndGhfdG9fZmVlBBhsZW5ndGg4pAAAABAAZFRyYW5zYWN0aW9uUGF5bWVudENhbGxBcGkQPHF1ZXJ5X2NhbGxfaW5mbwgQY2FsbCAMbGVuOIUQBEkBIFF1ZXJ5IGluZm9ybWF0aW9uIG9mIGEgZGlzcGF0Y2ggY2xhc3MsIHdlaWdodCwgYW5kIGZlZSBvZiBhIGdpdmVuIGVuY29kZWQgYENhbGxgLgBYcXVlcnlfY2FsbF9mZWVfZGV0YWlscwgQY2FsbCAMbGVuOIkQBLQgUXVlcnkgZmVlIGRldGFpbHMgb2YgYSBnaXZlbiBlbmNvZGVkIGBDYWxsYC4ATHF1ZXJ5X3dlaWdodF90b19mZWUEGHdlaWdodDUCpAQBASBRdWVyeSB0aGUgb3V0cHV0IG9mIHRoZSBjdXJyZW50IGBXZWlnaHRUb0ZlZWAgZ2l2ZW4gc29tZSBpbnB1dC4ATHF1ZXJ5X2xlbmd0aF90b19mZWUEGGxlbmd0aDikBAEBIFF1ZXJ5IHRoZSBvdXRwdXQgb2YgdGhlIGN1cnJlbnQgYExlbmd0aFRvRmVlYCBnaXZlbiBzb21lIGlucHV0LgAADAA0WGNtUGF5bWVudEFwaRB8cXVlcnlfYWNjZXB0YWJsZV9wYXltZW50X2Fzc2V0cwQseGNtX3ZlcnNpb244lRAUtCBSZXR1cm5zIGEgbGlzdCBvZiBhY2NlcHRhYmxlIHBheW1lbnQgYXNzZXRzLgAwICMgQXJndW1lbnRzAGggKiBgeGNtX3ZlcnNpb25gOiBWZXJzaW9uLgBAcXVlcnlfeGNtX3dlaWdodAQcbWVzc2FnZf0EoRAUqCBSZXR1cm5zIGEgd2VpZ2h0IG5lZWRlZCB0byBleGVjdXRlIGEgWENNLgAwICMgQXJndW1lbnRzAHQgKiBgbWVzc2FnZWA6IGBWZXJzaW9uZWRYY21gLgBkcXVlcnlfd2VpZ2h0X3RvX2Fzc2V0X2ZlZQgYd2VpZ2h0NQIUYXNzZXRlBqUQGOggQ29udmVydHMgYSB3ZWlnaHQgaW50byBhIGZlZSBmb3IgdGhlIHNwZWNpZmllZCBgQXNzZXRJZGAuADAgIyBBcmd1bWVudHMAiCAqIGB3ZWlnaHRgOiBjb252ZXJ0aWJsZSBgV2VpZ2h0YC58ICogYGFzc2V0YDogYFZlcnNpb25lZEFzc2V0SWRgLgBMcXVlcnlfZGVsaXZlcnlfZmVlcwwsZGVzdGluYXRpb27hARxtZXNzYWdl/QQgYXNzZXRfaWRlBqkQKGAgUXVlcnkgZGVsaXZlcnkgZmVlcyBWMi4AHQEgR2V0IGRlbGl2ZXJ5IGZlZXMgZm9yIHNlbmRpbmcgYSBzcGVjaWZpYyBgbWVzc2FnZWAgdG8gYSBgZGVzdGluYXRpb25gLvQgVGhlc2UgYWx3YXlzIGNvbWUgaW4gYSBzcGVjaWZpYyBhc3NldCwgZGVmaW5lZCBieSB0aGUgY2hhaW4uADAgIyBBcmd1bWVudHOBASAqIGBtZXNzYWdlYDogVGhlIG1lc3NhZ2UgdGhhdCdsbCBiZSBzZW50LCBuZWNlc3NhcnkgYmVjYXVzZSBtb3N0IGRlbGl2ZXJ5IGZlZXMgYXJlIGJhc2VkIG9uIHRoZVwgICBzaXplIG9mIHRoZSBtZXNzYWdlLmEBICogYGRlc3RpbmF0aW9uYDogVGhlIGRlc3RpbmF0aW9uIHRvIHNlbmQgdGhlIG1lc3NhZ2UgdG8uIERpZmZlcmVudCBkZXN0aW5hdGlvbnMgbWF5IHVzZcAgICBkaWZmZXJlbnQgc2VuZGVycyB0aGF0IGNoYXJnZSBkaWZmZXJlbnQgZmVlcy4ALHAgQSB0cmFpdCBvZiBYQ00gcGF5bWVudCBBUEkuAKggQVBJIHByb3ZpZGVzIGZ1bmN0aW9uYWxpdHkgZm9yIG9idGFpbmluZzoAxCAqIHRoZSB3ZWlnaHQgcmVxdWlyZWQgdG8gZXhlY3V0ZSBhbiBYQ00gbWVzc2FnZSwFASAqIGEgbGlzdCBvZiBhY2NlcHRhYmxlIGBBc3NldElkYHMgZm9yIG1lc3NhZ2UgZXhlY3V0aW9uIHBheW1lbnQsAQEgKiB0aGUgY29zdCBvZiB0aGUgd2VpZ2h0IGluIHRoZSBzcGVjaWZpZWQgYWNjZXB0YWJsZSBgQXNzZXRJZGAuoCAqIHRoZSBmZWVzIGZvciBhbiBYQ00gbWVzc2FnZSBkZWxpdmVyeS4A8CBUbyBkZXRlcm1pbmUgdGhlIGV4ZWN1dGlvbiB3ZWlnaHQgb2YgdGhlIGNhbGxzIHJlcXVpcmVkIGZvcnUBIFtgeGNtOjpsYXRlc3Q6Okluc3RydWN0aW9uOjpUcmFuc2FjdGBdIGluc3RydWN0aW9uLCBgVHJhbnNhY3Rpb25QYXltZW50Q2FsbEFwaWAgY2FuIGJlIHVzZWQuCAAkRHJ5UnVuQXBpCDBkcnlfcnVuX2NhbGwMGG9yaWdpbgUCEGNhbGwgTHJlc3VsdF94Y21zX3ZlcnNpb244rRAERCBEcnkgcnVuIGNhbGwgVjIuACxkcnlfcnVuX3hjbQg8b3JpZ2luX2xvY2F0aW9u4QEMeGNtNQbNEARQIERyeSBydW4gWENNIHByb2dyYW0AJLEBIEFQSSBmb3IgZHJ5LXJ1bm5pbmcgZXh0cmluc2ljcyBhbmQgWENNIHByb2dyYW1zIHRvIGdldCB0aGUgcHJvZ3JhbXMgdGhhdCBuZWVkIHRvIGJlIHBhc3NlZCB0byB0aGUgZmVlcyBBUEkuAIEBIEFsbCBjYWxscyByZXR1cm4gYSB2ZWN0b3Igb2YgdHVwbGVzIChsb2NhdGlvbiwgeGNtKSB3aGVyZSBlYWNoICJ4Y20iIGlzIGV4ZWN1dGVkIGluICJsb2NhdGlvbiIu5CBJZiB0aGVyZSdzIGxvY2FsIGV4ZWN1dGlvbiwgdGhlIGxvY2F0aW9uIHdpbGwgYmUgIkhlcmUiLh0BIFRoaXMgdmVjdG9yIGNhbiBiZSB1c2VkIHRvIGNhbGN1bGF0ZSBib3RoIGV4ZWN1dGlvbiBhbmQgZGVsaXZlcnkgZmVlcy4AmQEgQ2FsbHMgb3IgWENNcyBtaWdodCBmYWlsIHdoZW4gZXhlY3V0ZWQsIHRoaXMgZG9lc24ndCBtZWFuIHRoZSByZXN1bHQgb2YgdGhlc2UgY2FsbHMgd2lsbCBiZSBhbiBgRXJyYC5lASBJbiB0aG9zZSBjYXNlcywgdGhlcmUgbWlnaHQgc3RpbGwgYmUgYSB2YWxpZCByZXN1bHQsIHdpdGggdGhlIGV4ZWN1dGlvbiBlcnJvciBpbnNpZGUgaXQuZQEgVGhlIG9ubHkgcmVhc29ucyB3aHkgdGhlc2UgY2FsbHMgbWlnaHQgcmV0dXJuIGFuIGVycm9yIGFyZSBsaXN0ZWQgaW4gdGhlIFtgRXJyb3JgXSBlbnVtLggAUExvY2F0aW9uVG9BY2NvdW50QXBpBEBjb252ZXJ0X2xvY2F0aW9uBCBsb2NhdGlvbuEB1RAEkCBDb252ZXJ0cyBgTG9jYXRpb25gIHRvIGBBY2NvdW50SWRgLgAEDQEgQVBJIGZvciB1c2VmdWwgY29udmVyc2lvbnMgYmV0d2VlbiBYQ00gYExvY2F0aW9uYCBhbmQgYEFjY291bnRJZGAuBAA4R2VuZXNpc0J1aWxkZXIMLGJ1aWxkX3N0YXRlBBBqc29uGN0QKGUBIEJ1aWxkIGBSdW50aW1lR2VuZXNpc0NvbmZpZ2AgZnJvbSBhIEpTT04gYmxvYiBub3QgdXNpbmcgYW55IGRlZmF1bHRzIGFuZCBzdG9yZSBpdCBpbiB0aGUkIHN0b3JhZ2UuACkBIEluIHRoZSBjYXNlIG9mIGEgRlJBTUUtYmFzZWQgcnVudGltZSwgdGhpcyBmdW5jdGlvbiBkZXNlcmlhbGl6ZXMgdGhlIGZ1bGxVASBgUnVudGltZUdlbmVzaXNDb25maWdgIGZyb20gdGhlIGdpdmVuIEpTT04gYmxvYiBhbmQgcHV0cyBpdCBpbnRvIHRoZSBzdG9yYWdlLiBJZiB0aGVVASBwcm92aWRlZCBKU09OIGJsb2IgaXMgaW5jb3JyZWN0IG9yIGluY29tcGxldGUgb3IgdGhlIGRlc2VyaWFsaXphdGlvbiBmYWlscywgYW4gZXJyb3I0IGlzIHJldHVybmVkLgBdASBQbGVhc2Ugbm90ZSB0aGF0IHByb3ZpZGVkIEpTT04gYmxvYiBtdXN0IGNvbnRhaW4gYWxsIGBSdW50aW1lR2VuZXNpc0NvbmZpZ2AgZmllbGRzLCBub1wgZGVmYXVsdHMgd2lsbCBiZSB1c2VkLgAoZ2V0X3ByZXNldAQIaWThEJEOOGEBIFJldHVybnMgYSBKU09OIGJsb2IgcmVwcmVzZW50YXRpb24gb2YgdGhlIGJ1aWx0LWluIGBSdW50aW1lR2VuZXNpc0NvbmZpZ2AgaWRlbnRpZmllZCBieRggYGlkYC4AVQEgSWYgYGlkYCBpcyBgTm9uZWAgdGhlIGZ1bmN0aW9uIHNob3VsZCByZXR1cm4gSlNPTiBibG9iIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBkZWZhdWx0SQEgYFJ1bnRpbWVHZW5lc2lzQ29uZmlnYCBzdHJ1Y3Qgb2YgdGhlIHJ1bnRpbWUuIEltcGxlbWVudGF0aW9uIG11c3QgcHJvdmlkZSBkZWZhdWx0YCBgUnVudGltZUdlbmVzaXNDb25maWdgLgAhASBPdGhlcndpc2UgZnVuY3Rpb24gcmV0dXJucyBhIEpTT04gcmVwcmVzZW50YXRpb24gb2YgdGhlIGJ1aWx0LWluLCBuYW1lZFEBIGBSdW50aW1lR2VuZXNpc0NvbmZpZ2AgcHJlc2V0IGlkZW50aWZpZWQgYnkgYGlkYCwgb3IgYE5vbmVgIGlmIHN1Y2ggcHJlc2V0IGRvZXMgbm90YQEgZXhpc3QuIFJldHVybmVkIGBWZWM8dTg+YCBjb250YWlucyBieXRlcyBvZiBKU09OIGJsb2IgKHBhdGNoKSB3aGljaCBjb21wcmlzZXMgYSBsaXN0IG9mTQEgKHBvdGVudGlhbGx5IG5lc3RlZCkga2V5LXZhbHVlIHBhaXJzIHRoYXQgYXJlIGludGVuZGVkIGZvciBjdXN0b21pemluZyB0aGUgZGVmYXVsdGUBIHJ1bnRpbWUgZ2VuZXNpcyBjb25maWcuIFRoZSBwYXRjaCBzaGFsbCBiZSBtZXJnZWQgKHJmYzczODYpIHdpdGggdGhlIEpTT04gcmVwcmVzZW50YXRpb25hASBvZiB0aGUgZGVmYXVsdCBgUnVudGltZUdlbmVzaXNDb25maWdgIHRvIGNyZWF0ZSBhIGNvbXByZWhlbnNpdmUgZ2VuZXNpcyBjb25maWcgdGhhdCBjYW6EIGJlIHVzZWQgaW4gYGJ1aWxkX3N0YXRlYCBtZXRob2QuADBwcmVzZXRfbmFtZXMA5RAQUQEgUmV0dXJucyBhIGxpc3Qgb2YgaWRlbnRpZmllcnMgZm9yIGF2YWlsYWJsZSBidWlsdGluIGBSdW50aW1lR2VuZXNpc0NvbmZpZ2AgcHJlc2V0cy4AYQEgVGhlIHByZXNldHMgZnJvbSB0aGUgbGlzdCBjYW4gYmUgcXVlcmllZCB3aXRoIFtgR2VuZXNpc0J1aWxkZXI6OmdldF9wcmVzZXRgXSBtZXRob2QuIElmAQEgbm8gbmFtZWQgcHJlc2V0cyBhcmUgcHJvdmlkZWQgYnkgdGhlIHJ1bnRpbWUgdGhlIGxpc3QgaXMgZW1wdHkuAATwIEFQSSB0byBpbnRlcmFjdCB3aXRoIGBSdW50aW1lR2VuZXNpc0NvbmZpZ2AgZm9yIHRoZSBydW50aW1lBAAgwQfpEAA=";
2
+
3
+ export { binMeta as default };
4
+ //# sourceMappingURL=relay_metadata-BAI7pjXf.js.map