LyoKICogV2luZSBjb21tYW5kIHByb21wdAogKiBTcGFuaXNoIExhbmd1YWdlIFN1cHBvcnQKICoKICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA3IEpvc+kgTWFudWVsIEZlcnJlciBPcnRpegogKgogKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCiAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogKgogKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICoKICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCiAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EKICovCgojaW5jbHVkZSAid2NtZC5oIgoKTEFOR1VBR0UgTEFOR19TUEFOSVNILCBTVUJMQU5HX05FVVRSQUwKClNUUklOR1RBQkxFCnsKICBXQ01EX0FUVFJJQiwgIkF5dWRhIHNvYnJlIEFUVFJJQlxuIgogIFdDTURfQ0FMTCwKIkNBTEwgPG5vbWJyZSBkZSBhcmNoaXZvIHBvciBsb3Rlcz4gc2UgdXRpbGl6YSBkZW50cm8gZGUgdW4gYXJjaGl2byBwb3JcblwKbG90ZXMgcGFyYSBlamVjdXRhciBjb21hbmRvcyBkZXNkZSBvdHJvIGFyY2hpdm8gcG9yIGxvdGVzLiBDdWFuZG8gZWxcblwKYXJjaGl2byBwb3IgbG90ZXMgZXhpc3RlLCBlbCBjb250cm9sIHJlZ3Jlc2EgYWwgYXJjaGl2byBxdWUgbG8gbGxhbfMuIEVsXG5cCmNvbWFuZG8gQ0FMTCBwdWVkZSBwcm9wb3JjaW9uYXIgcGFy4W1ldHJvcyBwYXJhIGVsIHByb2NlZGltaWVudG8gbGxhbWFkby5cblwKXG5cCkxvcyBjYW1iaW9zIHNvYnJlIGVsIGRpcmVjdG9yaW8gcG9yIGRlZmVjdG8sIHZhcmlhYmxlcyBkZSBlbnRvcm5vLCBldGMuXG5cCnJlYWxpemFkb3MgZGVzZGUgZGVudHJvIGRlIHVuIHByb2NlZGltaWVudG8gbGxhbWFkbyBzb24gaGVyZWRhZG9zIHBvciBlbFxuXApsbGFtYW50ZS5cbiIKCiAgV0NNRF9DRCwgICAgICJBeXVkYSBzb2JyZSBDRFxuIgogIFdDTURfQ0hESVIsICAiQXl1ZGEgc29icmUgQ0hESVJcbiIKCiAgV0NNRF9DTFMsICAgICJDTFMgbGltcGlhIGxhIHBhbnRhbGxhIGRlIGxhIGNvbnNvbGFcbiIKCiAgV0NNRF9DT1BZLCAgICJBeXVkYSBzb2JyZSBDT1BZXG4iCiAgV0NNRF9DVFRZLCAgICJBeXVkYSBzb2JyZSBDVFRZXG4iCiAgV0NNRF9EQVRFLCAgICJBeXVkYSBzb2JyZSBEQVRFXG4iCiAgV0NNRF9ERUwsICAgICJBeXVkYSBzb2JyZSBERUxcbiIKICBXQ01EX0RJUiwgICAgIkF5dWRhIHNvYnJlIERJUlxuIgoKICBXQ01EX0VDSE8sCiJFQ0hPIDxjYWRlbmE+IG11ZXN0cmEgPGNhZGVuYT4gZW4gZWwgZGlzcG9zaXRpdm8gZGUgdGVybWluYWwgYWN0dWFsLlxuXApcblwKRUNITyBPTiBwcm92b2NhIHF1ZSB0b2RvcyBsb3MgY29tYW5kb3Mgc3Vic2lndWllbnRlcyBlbiB1biBhcmNoaXZvIHBvclxuXApsb3RlcyBzZWFuIG1vc3RyYWRvcyBlbiBlbCB0ZXJtaW5hbCBhbnRlcyBkZSBzZXIgZWplY3V0YWRvcy5cblwKXG5cCkVDSE8gT0ZGIGludmllcnRlIGVsIGVmZWN0byBkZSB1biBwcmV2aW8gRUNITyBPTiAoRUNITyBlcyBPRkYgcG9yXG5cCmRlZmVjdG8pLiBFbCBjb21hbmRvIEVDSE8gT0ZGIHB1ZWRlIHByZXZlbmlyc2UgZGUgc2VyIG1vc3RyYWRvXG5cCnByZWNlZGnpbmRvbG8gcG9yIHVuIHNpZ25vIEAuXG4iCgogIFdDTURfRVJBU0UsICAiQXl1ZGEgc29icmUgRVJBU0VcbiIKCiAgV0NNRF9GT1IsCiJFbCBjb21hbmRvIEZPUiBzZSB1dGlsaXphIHBhcmEgZWplY3V0YXIgdW4gY29tYW5kbyBwYXJhIGNhZGEgdW5vIGRlXG5cCnVuIGNvbmp1bnRvIGRlIGFyY2hpdm9zLlxuXApcblwKU2ludGF4aXM6IEZPUiAldmFyaWFibGUgSU4gKGNvbmp1bnRvKSBETyBjb21hbmRvXG5cClxuXApMYSBuZWNlc2lkYWQgZGUgZG9ibGFyIGVsIHNpZ25vICUgY3VhbmRvIHNlIHV0aWxpemEgRk9SIGVuIHVuIGFyY2hpdm9cblwKcG9yIGxvdGVzIG5vIGV4aXN0ZSBlbiBjbWQuXG4iCgogIFdDTURfR09UTywKIkVsIGNvbWFuZG8gR09UTyB0cmFuc2ZpZXJlIGxhIGVqZWN1Y2nzbiBhIG90cm8gbWFuZGF0byBkZW50cm8gZGUgdW5cblwKYXJjaGl2byBwb3IgbG90ZXMuXG5cClxuXApMYSBldGlxdWV0YSBxdWUgZXMgZWwgb2JqZXRpdm8gZGUgdW4gY29tYW5kbyBHT1RPIHB1ZWRlIHNlciBkZSBoYXN0YVxuXAoyNTUgY2FyYWN0ZXJlcyBkZSBsb25naXR1ZCBwZXJvIG5vIHB1ZWRlIGluY2x1aXIgZXNwYWNpb3MgKGVzdG8gZXNcblwKZGlmZXJlbnRlIGEgb3Ryb3Mgc2lzdGVtYXMgb3BlcmF0aXZvcykuIFNpIGRvcyBvIG3hcyBldGlxdWV0YXNcblwKaWTpbnRpY2FzIGV4aXN0ZW4gZW4gdW4gYXJjaGl2byBwb3IgbG90ZXMsIGxhIHByaW1lcmEgZGUgZWxsYXMgc2Vy4VxuXApzaWVtcHJlIGxhIHF1ZSBzZSBlamVjdXRhcuEuIEVsIGludGVudG8gZGUgaGFjZXIgR09UTyBhIHVuYSBldGlxdWV0YVxuXApubyBleGlzdGVudGUgdGVybWluYSBsYSBlamVjdWNp824gZGVsIGFyY2hpdm8gcG9yIGxvdGVzLlxuXApcblwKR09UTyBubyB0aWVuZSBlZmVjdG8gY3VhbmRvIHNlIHVzYSBpbnRlcmFjdGl2YW1lbnRlLlxuIgoKICBXQ01EX0hFTFAsICAgIkF5dWRhIHNvYnJlIEhFTFBcbiIKCiAgV0NNRF9JRiwKIklGIHNlIHV0aWxpemEgcGFyYSBlamVjdXRhciBjb25kaWNpb25hbG1lbnRlIHVuIGNvbWFuZG8uXG5cClxuXApTaW50YXhpczoJSUYgW05PVF0gRVhJU1Qgbm9tYnJlX2FyY2hpdm8gY29tYW5kb1xuXAoJCUlGIFtOT1RdIGNhZGVuYTE9PWNhZGVuYTIgY29tYW5kb1xuXAoJCUlGIFtOT1RdIEVSUk9STEVWRUwgbvptZXJvIGNvbWFuZG9cblwKXG5cCkVuIGxhIHNlZ3VuZGEgZm9ybWEgZGVsIGNvbWFuZG8sIGNhZGVuYTEgeSBjYWRlbmEyIGRlYmVuIGVzdGFyIGVudHJlXG5cCmNvbWlsbGFzIGRvYmxlcy4gTGEgY29tcGFyYWNp824gbm8gZGlzdGluZ3VlIG1hefpzY3VsYXMgZGUgbWlu+nNjdWxhcy5cbiIKCiAgV0NNRF9MQUJFTCwgICJMQUJFTCBzZSB1dGlsaXphIHBhcmEgYWp1c3RhciB1bmEgZXRpcXVldGEgZGUgdm9sdW1lblxuXAogIGRlIGRpc2NvLlxuXApcblwKU2ludGF4aXM6IExBQkVMIFt1bmlkYWQ6XVxuXApFbCBjb21hbmRvIGxlIHBlZGly4SBsYSBudWV2YSBldGlxdWV0YSBkZSB2b2x1bWVuIHBhcmEgbGEgdW5pZGFkIGRhZGEuXG5cClB1ZWRlIHZlciBsYSBldGlxdWV0YSBkZSB2b2x1bWVuIGRlbCBkaXNjbyBjb24gZWwgY29tYW5kbyBWT0wuXG4iCgogIFdDTURfTUQsICAgICAiQXl1ZGEgc29icmUgTURcbiIKICBXQ01EX01LRElSLCAgIkF5dWRhIHNvYnJlIE1LRElSXG4iCiAgV0NNRF9NT1ZFLAoiTU9WRSByZWFsb2phIHVuIGFyY2hpdm8gbyBkaXJlY3RvcmlvIGEgdW4gbnVldm8gcHVudG8gZGVsIHNpc3RlbWEgZGVcblwKYXJjaGl2b3MuXG5cClxuXApTaSBlbCBlbGVtZW50byBzaWVuZG8gbW92aWRvIGVzIHVuIGRpcmVjdG9yaW8sIGVudG9uY2VzIHRvZG9zIGxvc1xuXAphcmNoaXZvcyB5IHN1YmRpcmVjdG9yaW9zIHBvciBkZWJham8gZGVsIGVsZW1lbnRvIHNvbiBtb3ZpZG9zIHRhbWJp6W4uXG5cClxuXApNT1ZFIGZhbGxhIHNpIGxhIGxvY2FsaXphY2nzbiB2aWVqYSB5IGxhIG51ZXZhIGVzdOFuIGVuIGRpZmVyZW50ZXNcblwKbGV0cmFzIGRlIHVuaWRhZCBkZSBET1MuXG4iCgogIFdDTURfUEFUSCwKIlBBVEggbXVlc3RyYSBvIGNhbWJpYSBsYSBydXRhIGRlIGL6c3F1ZWRhIGRlIGNtZC5cblwKXG5cCkFsIGludHJvZHVjaXIgUEFUSCBzZSBtb3N0cmFy4SBsYSBjb25maWd1cmFjafNuIGFjdHVhbCBkZSBQQVRIXG5cCihpbmljaWFsbWVudGUgZXN0byBlcyBlbCB2YWxvciBkYWRvIGVuIHN1IGFyY2hpdm8gd2luZS5jb25mKS4gUGFyYVxuXApjYW1iaWFyIGxhIGNvbmZpZ3VyYWNp824gYWNvbXBh8WUgYWwgY29tYW5kbyBQQVRIIGNvbiBlbCBudWV2byB2YWxvci5cblwKXG5cClRhbWJp6W4gZXMgcG9zaWJsZSBtb2RpZmljYXIgZWwgUEFUSCB1c2FuZG8gbGEgdmFyaWFibGUgZGUgZW50b3Jub1xuXApQQVRILCBwb3IgZWphbXBsbzpcblwKCQlQQVRIICVQQVRIJTtjOlxcdGVtcFxuIgoKICBXQ01EX1BBVVNFLAoiUEFVU0UgbXVlc3RyYSB1biBtZW5zYWplIGVuIGxhIHBhbnRhbGxhICdQdWxzZSBsYSB0ZWNsYSBSZXR1cm4gcGFyYVxuXApjb250aW51YXInIHkgZXNwZXJhIHF1ZSBlbCB1c3VhcmlvIHB1bHNlIGxhIHRlY2xhIFJldHVybi4gRXNcblwKcHJpbmNpcGFsbWVudGUg+nRpbCBlbiBhcmNoaXZvcyBwb3IgbG90ZXMgcGFyYSBwZXJtaXRpciBhbCB1c3VhcmlvXG5cCmxlZXIgbGEgc2FsaWRhIGRlIHVuIGNvbWFuZG8gYW50ZXJpb3IgYW50ZXMgZGUgcXVlIHNlIGRlc3BsYWNlIGZ1ZXJhXG5cCmRlIGxhIHBhbnRhbGxhLlxuIgoKICBXQ01EX1BST01QVCwKIlBST01QVCBhanVzdGEgZWwgcHJvbXB0IGRlIGxhIGztbmVhIGRlIGNvbWFuZG9zLlxuXApcblwKTGEgY2FkZW5hIHF1ZSBzaWd1ZSBhbCBjb21hbmRvIFBST01QVCAoeSBlbCBlc3BhY2lvIGlubWVkaWF0YW1lbnRlXG5cCmRlc3B16XMpIGFwYXJlY2UgYWwgcHJpbmNpcGlvIGRlIGxhIGztbmVhIGN1YW5kbyBjbWQgZXN04SBlc3BlcmFuZG9cblwKbGEgZW50cmFkYS5cblwKXG5cCkxhcyBzaWd1aWVudGVzIGNhZGVuYXMgZGUgY2FyYWN0ZXJlcyB0aWVuZW4gZWwgc2lnbmlmaWNhZG8gZXNwZWNpYWxcblwKcXVlIHNlIG11ZXN0cmE6XG5cClxuXAokJCAgICBTaWdubyBk82xhciAgICAgICAgICRfICAgIE51ZXZhIGztbmVhICAgICAgICAgJGIgICAgU2lnbm8gZGUgdHVibyAofClcblwKJGQgICAgRmVjaGEgYWN0dWFsICAgICAgICAkZSAgICBFc2NhcGUgICAgICAgICAgICAgICRnICAgIFNpZ25vID5cblwKJGwgICAgU2lnbm8gPCAgICAgICAgICAgICAkbiAgICBVbmlkYWQgYWN0dWFsICAgICAgICRwICAgIFJ1dGEgYWN0dWFsXG5cCiRxICAgIFNpZ25vIGlndWFsICAgICAgICAgJHQgICAgSG9yYSBhY3R1YWwgICAgICAgICAkdiAgICBWZXJzafNuIGRlIGNtZFxuXApcblwKTvN0ZXNlIHF1ZSBzaSBzZSBpbnRyb2R1Y2UgZWwgY29tYW5kbyBQUk9NUFQgc2luIHVuYSBjYWRlbmEgZGUgcHJvbXB0XG5cCnJlaW5pY2lhbGl6YSBlbCBwcm9tcHQgYWwgdmFsb3IgcG9yIGRlZmVjdG8sIHF1ZSBlcyBlbCBkaXJlY3RvcmlvXG5cCmFjdHVhbCAocXVlIGluY2x1eWUgbGEgbGV0cmEgZGUgbGEgdW5pZGFkIGFjdHVhbCkgc2VndWlkbyBwb3IgdW4gc2lnbm9cblwKbWF5b3IgcXVlICg+KS5cblwKKGNvbW8gdW4gY29tYW5kbyBQUk9NUFQgJHAkZykuXG5cClxuXApFbCBwcm9tcHQgcHVlZGUgdGFtYmnpbiBzZXIgY2FtYmlhZG8gYWx0ZXJhbmRvIGxhIHZhcmlhYmxlIGRlIGVudG9ybm9cblwKUFJPTVBULCBwb3IgbG8gcXVlIGVsIGNvbWFuZG8gJ1NFVCBQUk9NUFQ9dGV4dG8nIHRpZW5lIGVsIG1pc21vIGVmZWN0b1xuXApxdWUgJ1BST01QVCB0ZXh0bydcbiIKCiAgV0NNRF9SRU0sCiJVbmEgbO1uZWEgZGUgY29tYW5kb3MgcXVlIGVtcGllemEgcG9yIFJFTSAoc2VndWlkbyBkZSB1biBlc3BhY2lvKSBub1xuXApyZWFsaXphIG5pbmd1bmEgYWNjafNuLCB5IHB1ZWRlIHBvciB0YW50byBzZXIgdXRpbGl6YWRhIGNvbW8gdW5cblwKY29tZW50YXJpbyBlbiB1biBhcmNoaXZvIHBvciBsb3Rlcy5cbiIKCiAgV0NNRF9SRU4sICAgICJBeXVkYSBzb2JyZSBSRU5cbiIKICBXQ01EX1JFTkFNRSwgIkF5dWRhIHNvYnJlIFJFTkFNRVxuIgogIFdDTURfUkQsICAgICAiQXl1ZGEgc29icmUgUkRcbiIKICBXQ01EX1JNRElSLCAgIkF5dWRhIHNvYnJlIFJNRElSXG4iCgogIFdDTURfU0VULAoiU0VUIG11ZXN0cmEgbyBjYW1iaWEgbGFzIHZhcmlhYmxlcyBkZSBlbnRvcm5vIGRlIGNtZC5cblwKXG5cClNFVCBzaW4gcGFy4W1ldHJvcyBtdWVzdHJhIHRvZGFzIGxhcyB2YXJpYWJsZXMgZGUgZW50b3JubyBhY3R1YWxlcy5cblwKXG5cClBhcmEgY3JlYXIgbyBtb2RpZmljYXIgdW5hIHZhcmlhYmxlIGRlIGVudG9ybm8gbGEgc2ludGF4aXMgZXM6XG5cClxuXAogICAgICBTRVQgPHZhcmlhYmxlPj08dmFsb3I+XG5cClxuXApkb25kZSA8dmFyaWFibGU+IHkgPHZhbG9yPiBzb24gY2FkZW5hcyBkZSBjYXJhY3RlcmVzLiBObyBkZWJlIGhhYmVyXG5cCmVzcGFjaW9zIGFudGVzIGRlbCBzaWdubyBpZ3VhbCwgbmkgbGEgdmFyaWFibGUgcHVlZGUgY29udGVuZXIgZXNwYWNpb3NcblwKZW1iZWJpZG9zLlxuXApcblwKQmFqbyBXaW5lLCBlbCBlbnRvcm5vIGRlbCBzaXN0ZW1hIG9wZXJhdGl2byBxdWUgaGF5IHBvciBkZWJham8gc2VcblwKaW5jbHV5ZSBlbiBlbCBlbnRvcm5vIGRlIFdpbjMyIHBvciBsbyBxdWUsIHBvciBsbyBnZW5lcmFsLCBoYWJy4SBtdWNob3NcblwKbeFzIHZhbG9yZXMgcXVlIGVuIHVuYSBpbXBsZW1lbnRhY2nzbiBXaW4zMiBuYXRpdmEuIE7zdGVzZSBxdWUgbm8gZXNcblwKcG9zaWJsZSBhZmVjdGFyIGFsIGVudG9ybm8gZGVsIHNpc3RlbWEgb3BlcmF0aXZvIGRlc2RlIGNtZC5cbiIKCiAgV0NNRF9TSElGVCwKIlNISUZUIHNlIHV0aWxpemEgZW4gdW4gYXJjaGl2byBwb3IgbG90ZXMgcGFyYSBlbGltaW5hciB1biBwYXLhbWV0cm9cblwKZGUgbGEgY2FiZXphIGRlIGxhIGxpc3RhLCBwb3IgbG8gcXVlIGVsIHBhcuFtZXRybyAyIHNlIGNvbnZpZXJ0ZSBlblxuXAplbCBwYXLhbWV0cm8gMSB5IGRlbeFzLiBObyB0aWVuZSBlZmVjdG8gc2kgc2UgbGxhbWEgZGVzZGUgbGEgbO1uZWFcblwKZGUgY29tYW5kby5cbiIKCiAgV0NNRF9USU1FLCAgICJBeXVkYSBzb2JyZSBUSU1FXG4iCgogIFdDTURfVElUTEUsCiJBanVzdGEgZWwgdO10dWxvIGRlIGxhIHZlbnRhbmEgZGUgY21kLCBzaW50YXhpcyBUSVRMRSBbY2FkZW5hXVxuIgoKICBXQ01EX1RZUEUsCiJUWVBFIDxub21icmUgZGUgYXJjaGl2bz4gY29waWEgPG5vbWJyZSBkZSBhcmNoaXZvPiBhbCBkaXNwb3NpdGl2byBkZVxuXApjb25zb2xhIChvIGEgZG9uZGUgc2VhIHNpIHNlIHJlZGlyZWNjaW9uYSkuIE5vIHNlIHJlYWxpemEgbmluZ3VuYVxuXApjb21wcm9iYWNp824gZGUgc2kgZWwgYXJjaGl2byBlcyB0ZXh0byBsZWdpYmxlLlxuIgoKICBXQ01EX1ZFUklGWSwKIlZFUklGWSBzZSB1c2EgcGFyYSBwb25lciwgcXVpdGFyIG8gcHJvYmFyIGxhIGV0aXF1ZXRhIGRlIHZlcmlmaWNhY2nzbi5cblwKTGFzIGZvcm1hcyB24WxpZGFzIHNvbjpcblwKXG5cClZFUklGWSBPTglQb25lciBsYSBiYW5kZXJhXG5cClZFUklGWSBPRkYJUXVpdGFyIGxhIGJhbmRlcmFcblwKVkVSSUZZCQlNdWVzdHJhIE9OIHUgT0ZGIGNvbW8gY29ycmVzcG9uZGEuXG5cClxuXApMYSBiYW5kZXJhIGRlIHZlcmlmaWNhY2nzbiBubyB0aWVuZSBmdW5jaW9uYWxpZGFkIGVuIFdpbmUuXG4iCgogIFdDTURfVkVSLAoiVkVSIG11ZXN0cmEgbGEgdmVyc2nzbiBkZSBjbWQgcXVlIGVzdOEgZWplY3V0YW5kb1xuIgoKICBXQ01EX1ZPTCwgICAgIkF5dWRhIHNvYnJlIFZPTFxuIgoKICBXQ01EX1BVU0hELAoiUFVTSEQgPG5vbWJyZSBkZSBkaXJlY3RvcmlvPiBhbG1hY2VuYSBlbCBkaXJlY3RvcmlvIGFjdHVhbCBhIHVuYVxuXApwaWxhLCB5IGx1ZWdvIGNhbWJpYSBlbCBkaXJlY3RvcmlvIGFjdHVhbCBhbCBwcm9wb3JjaW9uYWRvLlxuIgoKICBXQ01EX1BPUEQsICAgIlBPUEQgY2FtYmlhIGVsIGRpcmVjdG9yaW8gYWN0dWFsIGFsIPpsdGltbyBhbG1hY2VuYWRvIGNvblxuXApQVVNIRC5cbiIKCiAgV0NNRF9NT1JFLCAgICJNT1JFIG11ZXN0cmEgbGEgc2FsaWRhIGRlIGFyY2hpdm9zIG8gZW50cmFkYSBlbnR1YmFkYSBwb3IgcOFnaW5hcy5cbiIKCiAgV0NNRF9FWElULAoiRVhJVCB0ZXJtaW5hIGxhIHNlc2nzbiBkZSBjb21hbmRvcyBhY3R1YWwgeSByZWdyZXNhIGFsIHNpc3RlbWFcblwKb3BlcmF0aXZvIG8gaW506XJwcmV0ZSBkZSBjb21hbmRvcyBkZXNkZSBlbCBxdWUgaW52b2PzIGNtZC5cbiIKCiAgV0NNRF9BTExIRUxQLCAiTG9zIGNvbWFuZG9zIGludGVybm9zIGRlIENNRCBzb246XG5cCkFUVFJJQlx0XHRNb3N0cmFyIG8gY2FtYmlhciBsb3MgYXRyaWJ1dG9zIGRlIGFyY2hpdm8gZGUgRE9TXG5cCkNBTExcdFx0SW52b2NhciB1biBhcmNoaXZvIHBvciBsb3RlcyBkZXNkZSBkZW50cm8gZGUgb3Ryb1xuXApDRCAoQ0hESVIpXHRDYW1iaWFyIGVsIGRpcmVjdG9yaW8gcG9yIGRlZmVjdG8gYWN0dWFsXG5cCkNMU1x0XHRWYWNpYXIgbGEgcGFudGFsbGEgZGUgbGEgY29uc29sYVxuXApDT1BZXHRcdENvcGlhciB1biBhcmNoaXZvXG5cCkNUVFlcdFx0Q2FtYmlhciBlbCBkaXNwb3NpdGl2byBkZSBlbnRyYWRhL3NhbGlkYVxuXApEQVRFXHRcdE1vc3RyYXIgbyBjYW1iaWFyIGxhIGZlY2hhIGRlbCBzaXN0ZW1hXG5cCkRFTCAoRVJBU0UpXHRFbGltaW5hciB1biBhcmNoaXZvIG8gY29uanVudG8gZGUgYXJjaGl2b3NcblwKRElSXHRcdExpc3RhciBlbCBjb250ZW5pZG8gZGUgdW4gZGlyZWN0b3Jpb1xuXApFQ0hPXHRcdENvcGlhciB0ZXh0byBkaXJlY3RhbWVudGUgYSBsYSBzYWxpZGEgZGUgY29uc29sYVxuXApIRUxQXHRcdE1vc3RyYXIgZGV0YWxsZXMgYnJldmVzIGRlIGF5dWRhIHNvYnJlIHVuIHRlbWFcblwKTUQgKE1LRElSKVx0Q3JlYXIgdW4gc3ViZGlyZWN0b3Jpb1xuXApNT1JFXHRcdE1vc3RyYXIgbGEgc2FsaWRhIHBvciBw4WdpbmFzXG5cCk1PVkVcdFx0TW92ZXIgdW4gYXJjaGl2bywgY29uanVudG8gZGUgYXJjaGl2b3MgbyDhcmJvbCBkZSBkaXJlY3RvcmlvXG5cClBBVEhcdFx0QWp1c3RhciBvIGNhbWJpYXIgbGEgcnV0YSBkZSBi+nNxdWVkYVxuXApQT1BEXHRcdFJlc3RhdXJhciBlbCBkaXJlY3RvcmlvIGFsIPpsdGltbyBhbG1hY2VuYWRvIGNvbiBQVVNIRFxuXApQUk9NUFRcdFx0Q2FtYmlhciBlbCBwcm9tcHQgZGUgY29tYW5kb3NcblwKUFVTSERcdFx0Q2FtYmlhciBhIHVuIG51ZXZvIGRpcmVjdG9yaW8sIGFsbWFjZW5hbmRvIGVsIGFjdHVhbFxuXApSRU4gKFJFTkFNRSlcdFJlbm9tYnJhciB1biBhcmNoaXZvXG5cClJEIChSTURJUilcdEVsaW1pbmFyIHVuIHN1YmRpcmVjdG9yaW9cblwKU0VUXHRcdEFqdXN0YXIgbyBtb3N0cmFyIHZhcmlhYmxlcyBkZSBlbnRvcm5vXG5cClRJTUVcdFx0QWp1c3RhciBvIG1vc3RyYXIgbGEgaG9yYSBhY3R1YWwgZGVsIHNpc3RlbWFcblwKVElUTEVcdFx0QWp1c3RhciBlbCB07XR1bG8gZGUgbGEgdmVudGFuYSBwYXJhIGxhIHNlc2nzbiBkZSBDTURcblwKVFlQRVx0XHRUZWNsZWFyIGVsIGNvbnRlbmlkbyBkZSB1biBhcmNoaXZvIGRlIHRleHRvXG5cClZFUlx0XHRNb3N0cmFyIGxhIHZlcnNp824gYWN0dWFsIGRlIENNRFxuXApWT0xcdFx0TW9zdHJhciBsYSBldGlxdWV0YSBkZSB2b2x1bWVuIGRlIHVuIGRpc3Bvc2l0aXZvIGRlIGRpc2NvXG5cCkVYSVRcdFx0Q29uY2x1aXIgQ01EXG5cblwKSW50cm9kdXpjYSBIRUxQIDxjb21hbmRvPiBwYXJhIG3hcyBpbmZvcm1hY2nzbiBzb2JyZSBjdWFscXVpZXJhIGRlIGxvcyBjb21hbmRvc1xuZGUgYXJyaWJhXG4iCgogIFdDTURfQ09ORklSTSwgIkVzdOEgc2VndXJvIgogIFdDTURfWUVTLCAiUyIKICBXQ01EX05PLCAiTiIKICBXQ01EX05PQVNTT0MsICJGYWx0YSB1bmEgYXNvY2lhY2nzbiBkZSBhcmNoaXZvIHBhcmEgbGEgZXh0ZW5zafNuICVzXG4iCiAgV0NNRF9OT0ZUWVBFLCAiTmluZ/puIGNvbWFuZG8gZGUgYXBlcnR1cmEgYXNvY2lhZG8gY29uIGVsIHRpcG8gZGUgYXJjaGl2byAnJXMnXG4iCiAgV0NNRF9PVkVSV1JJVEUsICJTb2JyZXNjcmliaXIgJXMiCiAgV0NNRF9NT1JFU1RSLCAiTeFzLi4uIgogIFdDTURfVFJVTkNBVEVETElORSwgIkztbmVhIGVuIHByb2Nlc2FtaWVudG8gcG9yIGxvdGVzIHBvc2libGVtZW50ZSB0cnVuY2FkYS4gVXNhbmRvOlxuIgogIFdDTURfTllJLCAiTm8gaW1wbGVtZW50YWRvXG5cbiIKICBXQ01EX05PQVJHLCAiQXJndW1lbnRvIGZhbHRhbnRlXG4iCiAgV0NNRF9TWU5UQVhFUlIsICJFcnJvciBkZSBzaW50YXhpc1xuIgogIFdDTURfRklMRU5PVEZPVU5ELCAiJXMgOiBBcmNoaXZvIG5vIGVuY29udHJhZG9cbiIKICBXQ01EX05PQ01ESEVMUCwgIk5vIGhheSBheXVkYSBkaXNwb25pYmxlIHBhcmEgJXNcbiIKICBXQ01EX05PVEFSR0VULCAiRWwgZGVzdGlubyBkZSBsYSBpbnN0cnVjY2nzbiBHT1RPIG5vIHNlIGhhIGVuY29udHJhZG9cbiIKICBXQ01EX0NVUlJFTlREQVRFLCAiTGEgZmVjaGEgYWN0dWFsIGVzICVzXG4iCiAgV0NNRF9DVVJSRU5UVElNRSwgIkxhIGhvcmEgYWN0dWFsIGVzICVzXG4iCiAgV0NNRF9ORVdEQVRFLCAiSW5ncmVzZSBsYSBudWV2YSBmZWNoYTogIgogIFdDTURfTkVXVElNRSwgIkluZ3Jlc2UgbGEgbnVldmEgaG9yYTogIgogIFdDTURfTUlTU0lOR0VOViwgIlZhcmlhYmxlIGRlIGVudG9ybm8gJXMgbm8gZGVmaW5pZGFcbiIKICBXQ01EX1JFQURGQUlMLCAiTm8gc2UgcHVkbyBhYnJpciAnJXMnXG4iCiAgV0NNRF9DQUxMSU5TQ1JJUFQsICJObyBzZSBwdWVkZSBsbGFtYXIgYSB1bmEgZXRpcXVldGEgZnVlcmEgZGUgdW4gc2NyaXB0IHBvciBsb3Rlc1xuIgogIFdDTURfQUxMLCAiQSIKICBXQ01EX0RFTFBST01QVCwgIiVzLCBCb3JyYXIiCiAgV0NNRF9FQ0hPUFJPTVBULCAiRWNobyBlcyAlc1xuIgogIFdDTURfVkVSSUZZUFJPTVBULCAiVmVyaWZpY2FyIGVzICVzXG4iCiAgV0NNRF9WRVJJRllFUlIsICJWZXJpZmljYXIgZGViZSBlc3RhciBPTiBvIE9GRlxuIgogIFdDTURfQVJHRVJSLCAiRXJyb3IgZGUgcGFy4W1ldHJvXG4iCiAgV0NNRF9WT0xVTUVERVRBSUwsICJFbCB2b2x1bWVuIGVuIGxhIHVuaWRhZCAlYyBlcyAlc1xuRWwgbvptZXJvIGRlIHNlcmllIGRlbCB2b2x1bWVuIGVzICUwNHgtJTA0eFxuXG4iCiAgV0NNRF9WT0xVTUVQUk9NUFQsICJFdGlxdWV0YSBkZWwgdm9sdW1lbiAoMTEgY2FyYWN0ZXJlcywgUmV0dXJuIHBhcmEgbmluZ3Vubyk/IgogIFdDTURfTk9QQVRILCAiUEFUSCBubyBlbmNvbnRyYWRvXG4iCiAgV0NNRF9BTllLRVksIlB1bHNlIGxhIHRlY2xhIFJldHVybiBwYXJhIGNvbnRpbnVhcjogIgogIFdDTURfQ09OU1RJVExFLCJXaW5lIFPtbWJvbG8gZGVsIHNpc3RlbWEiCiAgV0NNRF9WRVJTSU9OLCJDTUQgVmVyc2nzbiAlc1xuXG4iCiAgV0NNRF9NT1JFUFJPTVBULCAiTeFzPyAiCiAgV0NNRF9MSU5FVE9PTE9ORywgIkxhIGztbmVhIGRlIGVudHJhZGEgZXMgZGVtYXNpYWRvIGxhcmdhLlxuIgp9Cg==