LyoKICogQ29weXJpZ2h0IDE5OTkgRXJpYyBQb3VlY2gKICogQ29weXJpZ2h0IDIwMDMgSXZhbiBMZW8gTXVycmF5LVNtaXRoCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCiAqCiAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAogKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgogKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQogKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgogKgogKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCiAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgIFVTQQogKi8KClNUUklOR1RBQkxFIExBTkdVQUdFIExBTkdfSVRBTElBTiwgU1VCTEFOR19ORVVUUkFMCkJFR0lOCgovKiBNTVNZUyBlcnJvcnMgKi8KTU1TWVNFUlJfTk9FUlJPUiwgCQkiSWwgY29tYW5kbyBzcGVjaWZpY2F0byDoIHN0YXRvIGVzZWd1aXRvLiIKTU1TWVNFUlJfRVJST1IsIAkJIkVycm9yZSBlc3Rlcm5vIHNjb25vc2NpdXRvLiIKTU1TWVNFUlJfQkFEREVWSUNFSUQsIAkJIkUnIHN0YXRvIHVzYXRvIGwnSUQgZGkgdW4gZGlzcG9zaXRpdm8gY2hlIOggZnVvcmkgZGFsbGEgcG9ydGF0YSBkZWwgc2lzdGVtYS4iCk1NU1lTRVJSX05PVEVOQUJMRUQsIAkJIklsIGRyaXZlciBub24g6CBhYmlsaXRhdG8uIgpNTVNZU0VSUl9BTExPQ0FURUQsIAkJIklsIGRyaXZlciBzcGVjaWZpY2F0byDoIGdp4CBpbiB1c28uIEF0dGVuZGVyZSBjaGUgc2lhIG51b3ZhbWVudGUgZGlzcG9uaWJpbGUsIGUgcmlwcm92YXJlLiIKTU1TWVNFUlJfSU5WQUxIQU5ETEUsIAkJIklsIGhhbmRsZSBkZWwgZGlzcG9zaXRpdm8gc3BlY2lmaWNhdG8g6CBpbnZhbGlkby4iCk1NU1lTRVJSX05PRFJJVkVSLCAJCSJOb24g6CBpbnN0YWxsYXRvIG5lc3N1biBkcml2ZXIgbmVsIHNpc3RlbWEgIVxuIgpNTVNZU0VSUl9OT01FTSwgCQkiTWVtb3JpYSBpbnN1ZmZpY2VudGUgcGVyIGVzZWd1aXJlIHF1ZXN0YSBvcGVyYXppb25lLiBDaGl1ZGVyZSB1bmEgbyBwafkgYXBwbGljYXppb25pIHBlciBhdW1lbnRhcmUgbGEgbWVtb3JpYSBkaXNwb25pYmlsZSwgZSByaXByb3ZhcmUuIgpNTVNZU0VSUl9OT1RTVVBQT1JURUQsIAkJIlF1ZXN0YSBmdW56aW9uZSBub24g6CBzdXBwb3J0YXRhLiBVc2FyZSBsYSBmdW56aW9uZSBDYXBhYmlsaXRpZXMgcGVyIGRldGVybWluYXJlIHF1YWxpIGZ1bnppb25pIGUgbWVzc2FnZ2kgc29ubyBzdXBwb3J0YXRpIGRhbCBkcml2ZXIuIgpNTVNZU0VSUl9CQURFUlJOVU0sIAkJIkUnIHN0YXRvIHNwZWNpZmljYXRvIHVuIG51bWVybyBkaSBlcnJvcmUgbm9uIGRlZmluaXRvIGRhbCBzaXN0ZW1hLiIKTU1TWVNFUlJfSU5WQUxGTEFHLCAJCSJVbiBmbGFnIGludmFsaWRvIOggc3RhdG8gcGFzc2F0byBhIHVuYSBmdW56aW9uZSBkaSBzaXN0ZW1hLiIKTU1TWVNFUlJfSU5WQUxQQVJBTSwgCQkiVW4gcGFyYW1ldHJvIGludmFsaWRvIOggc3RhdG8gcGFzYXRvIGEgdW5hIGZ1bnppb25lIGRpIHNpc3RlbWEuIgoKLyogV0FWRSBlcnJvcnMgKi8KV0FWRVJSX0JBREZPUk1BVCwgCQkiSWwgZm9ybWF0byBzcGVjaWZpY2F0byBub24g6CBzdXBwb3J0YXRvIG8gbm9uIHB18iBlc3NlcmUgdHJhZG90dG8uIFVzYXJlIGxhIGZ1bnppb25lIENhcGFiaWxpdGllcyBwZXIgZGV0ZXJtaW5hcmUgbGUgZnVuemlvbmkgc3VwcG9ydGF0ZSIKV0FWRVJSX1NUSUxMUExBWUlORywgCQkiTm9uIOggcG9zc2liaWxlIGVmZmV0dWFyZSBxdWVzdGEgb3BlcmF6aW9uZSBkdXJhbnRlIGwnZXNlY3V6aW9uZS4gUmVpbml6aWFsaXp6YXJlIGlsIGRpc3Bvc2l0aXZvLCBvIGF0dGVuZGVyZSBsYSBmaW5lIGRlbGwnZXNlY3V6aW9uZS4iCldBVkVSUl9VTlBSRVBBUkVELCAJCSJJbCBoZWFkZXIgd2F2ZSBub24g6CBzdGF0byBwcmVwYXJhdG8uIFVzYXJlIGxhIGZ1bnppb25lIFByZXBhcmUgcGVyIHByZXBhcmFsZSBsJ2hlYWRlciwgZSByaXByb3ZhcmUuIgpXQVZFUlJfU1lOQywgCQkJIk5vbiDoIHBvc3NpYmlsZSBhcHJpcmUgaWwgZGlzcG9zaXRpdm8gc2VuemEgdXNhcmUgaWwgZmxhZyBXQVZFX0FMTE9XU1lOQy4gVXNhcmUgaWwgZmxhZywgZSByaXByb3ZhcmUuIgoKLyogTUlESSBlcnJvcnMgKi8KTUlESUVSUl9VTlBSRVBBUkVELCAJCSJMJ2hlYWRlciBNSURJIG5vbiDoIHN0YXRvIHByZXBhcmF0by4gVXNhcmUgbGEgZnVuemlvbmUgUHJlcGFyZSBwZXIgcHJlcGFyYXJlIGwnaGVhZGVyLCBlIHJpcHJvdmFyZS4iCk1JRElFUlJfU1RJTExQTEFZSU5HLCAJCSJOb24g6CBwb3NzaWJpbGUgZWZmZXR1YXJlIHF1ZXN0YSBvcGVyYXppb25lIGR1cmFudGUgbCdlc2VjdXppb25lLiBSZWluaXppYWxpenphcmUgaWwgZGlzcG9zaXRpdm8sIG8gYXR0ZW5kZXJlIGxhIGZpbmUgZGVsbCdlc2VjdXppb25lLiIKTUlESUVSUl9OT01BUCwgCQkJIk5vbiDoIHN0YXRhIHRyb3ZhdGEgdW5hIG1hcHBhIE1JREkuIENpIHBvdHJlYmJlIGVzc2VyZSB1biBwcm9ibGVtYSBjb24gaWwgZHJpdmVyLCBvIGlsIGZpbGUgTUlESU1BUC5DRkcgcG90cmViYmUgZXNzZXJlIGRhbm5lZ2dpYXRvIG8gbWFuY2FudGUuIgpNSURJRVJSX05PVFJFQURZLCAJCSJMYSBwb3J0YSBzdGEgdHJhc21ldHRlbmRvIGRlaSBkYXRpIGFsIGRpc3Bvc2l0aXZvLiBBdHRlbmRlcmUgbGEgdHJhc21pc3Npb25lIGRpIHR1dHRpIGkgZGF0aSwgZSByaXByb3ZhcmUuIgpNSURJRVJSX05PREVWSUNFLCAJCSJMYSBjb25maWd1cmF6aW9uZSBhdHR1YWxlIGRlbCBNYXBwZXIgTUlESSBzaSByaWZlcmlzY2UgYSB1biBkaXNwb3NpdGl2byBNSURJIGNoZSBub24g6CBwcmVzZW50ZSBuZWwgc2lzdGVtYS4gVXNhcmUgaWwgTWFwcGVyIE1JREkgcGVyIG1vZGlmaWNhcmUgbGEgY29uZmlndXJhemlvbmUuIgpNSURJRVJSX0lOVkFMSURTRVRVUCwgCQkiTGEgY29uZmlndXRhemlvbmUgTUlESSBhdHR1YWxlIOggZGFubmVnZ2lhdGEuIENvcGlhcmUgaWwgZmlsZSBNSURJTUFQLkNGRyBuZWxsYSBkaXJlY3RvcnkgU1lTVEVNIGRpIFdpbmRvd3MsIGUgcmlwcm92YXJlLiIKCi8qIE1DSSBlcnJvcnMgKi8KTUNJRVJSX0lOVkFMSURfREVWSUNFX0lELCAJIklEIGRlbCBkaXNwb3NpdGl2byBNQ0kgaW52YWxpZG8uIFVzYXJlIGwnSUQgcmVzdGl0dWl0byBxdWFuZG8gc2kg6CBhcGVydG8gaWwgZGlzcG9zaXRpdm8gTUNJLiIKTUNJRVJSX1VOUkVDT0dOSVpFRF9LRVlXT1JELCAJIklsIGRyaXZlciBub24gcmljb25vc2NlIGlsIHBhcmFtZXRybyBkZWwgY29tYW5kbyBzcGVjaWZpY2F0by4iCk1DSUVSUl9VTlJFQ09HTklaRURfQ09NTUFORCwJIklsIGRyaXZlciBub24gcmljb25vc2NlIGlsIGNvbWFuZG8gc3BlY2lmaWNhdG8uIgpNQ0lFUlJfSEFSRFdBUkUsIAkJIkMn6CB1biBwcm9ibGVtYSBjb24gaWwgZGlzcG9zaXRpdm8gbXVsdGltZWRpYWxlLiBDb250cm9sbGFyZSBjaGUgaWwgZnVuemlvbmFtZW50byBkZWwgZGlzcG9zaXRpdm8gbyBjb250YXR0YXJlIGlsIHByb2R1dHRvcmUuIgpNQ0lFUlJfSU5WQUxJRF9ERVZJQ0VfTkFNRSwgCSJJbCBkaXNwb3NpdGl2byBzcGVjaWZpY2F0byBub24g6CBhcGVydG8gbyBub24g6CBzdXBwb3J0YXRvIGRhIE1DSS4iCk1DSUVSUl9PVVRfT0ZfTUVNT1JZLCAJCSJNZW1vcmlhIGluc3VmZmljZW50ZSBwZXIgZXNlZ3VpcmUgcXVlc3RhIG9wZXJhemlvbmUuIFxuQ2hpdWRlcmUgdW5hIG8gcGn5IGFwcGxpY2F6aW9uaSBwZXIgYXVtZW50YXJlIGxhIG1lbW9yaWEgZGlzcG9uaWJpbGUsIGUgcmlwcm92YXJlLiIKTUNJRVJSX0RFVklDRV9PUEVOLCAJCSJJbCBub21lIGRlbCBkaXNwb3NpdGl2byDoIGdp4CBpbiB1c28gY29tZSBhbGlhcyBkYSBwYXJ0ZSBkaSBxdWVzdGEgYXBwbGljYXppb25lLiBVc2FyZSB1biBhbGlhcyB1bml2b2NvLiIKTUNJRVJSX0NBTk5PVF9MT0FEX0RSSVZFUiwgCSJTaSDoIHZlcmlmaWNhdG8gdW4gcHJvYmxlbWEgbm9uIHJpbGV2YWJpbGUgbmVsIGNhcmljYW1lbnRvIGRlbCBkcml2ZXIgc3BlY2lmaWNhdG8uIgpNQ0lFUlJfTUlTU0lOR19DT01NQU5EX1NUUklORywgCSJOb24g6CBzdGF0byBzcGVjaWZpY2F0byBuZXNzdW4gY29tYW5kby4iCk1DSUVSUl9QQVJBTV9PVkVSRkxPVywgCQkiTGEgc3RyaW5nYSBkaSBvdXRwdXQg6CB0cm9wcG8gZ3JhbmRlIHBlciBlbnRyYXJlIG5lbCBidWZmZXIgZGkgcml0b3Juby4gQXVtZW50YXJlIGxhIGRpbWVuc2lvbmUgZGVsIGJ1ZmZlci4iCk1DSUVSUl9NSVNTSU5HX1NUUklOR19BUkdVTUVOVCwgIklsIGNvbWFuZG8gc3BlY2lmaWNhdG8gcmljaGllZGUgdW4gcGFyYW1ldHJvIGNoZSBzaWEgdW5hIHN0cmluZ2EgZGkgY2FyYXR0ZXJpLiBGb3JuaXJuZSB1bm8uIgpNQ0lFUlJfQkFEX0lOVEVHRVIsIAkJIklsIG51bWVybyBpbnRyZW8gc3BlY2lmaWNhdG8gbm9uIOggdmFsaWRvIHBlciBxdWVzdG8gY29tYW5kby4iCk1DSUVSUl9QQVJTRVJfSU5URVJOQUwsIAkiSWwgZHJpdmVyIGhhIHJlc3RpdHVpdG8gdW4gdGlwbyBub24gdmFsaWRvLiBDb250YXR0YXJlIGlsIHByb2R1dHRvcmUgZGVsIGRpc3Bvc2l0aXZvIHBlciBvdHRlbmVyZSB1biBudW92byBkcml2ZXIuIgpNQ0lFUlJfRFJJVkVSX0lOVEVSTkFMLCAJIkMn6CB1biBwcm9ibGVtYSBjb24gaWwgZHJpdmVyLiBDb250YXR0YXJlIGlsIHByb2R1dHRvcmUgZGVsIGRpc3Bvc2l0aXZvIHBlciBvdHRlbmVyZSB1biBudW92byBkcml2ZXIuIgpNQ0lFUlJfTUlTU0lOR19QQVJBTUVURVIsIAkiSWwgY29tYW5kbyBzcGVjaWZpY2F0byByaWNoaWVkZSB1biBwYXJhbWV0cm8uIEZvcm5pcm5lIHVuby4iCk1DSUVSUl9VTlNVUFBPUlRFRF9GVU5DVElPTiwgCSJJbCBkaXNwb3NpdGl2byBNQ0kgaW4gdXNvIG5vbiBzdXBwb3J0YSBpbCBjb21hbmRvIHNwZWNpZmljYXRvLiIKTUNJRVJSX0ZJTEVfTk9UX0ZPVU5ELCAJCSJJbCBmaWxlIHNwZWNpZmljYXRvIG5vbiDoIHN0YXRvIHRyb3ZhdG8uIENvbnRyb2xsYXJlIGNoZSBsJ2luZGlyaXp6byBlIGlsIG5vbWUgZGVsIGZpbGUgc2lhbm8gY29ycmV0dGkuIgpNQ0lFUlJfREVWSUNFX05PVF9SRUFEWSwgCSJJbCBkcml2ZXIgbm9uIOggcHJvbnRvLiIKTUNJRVJSX0lOVEVSTkFMLCAJCSJTaSDoIHZlcmlmaWNhdG8gdW4gcHJvYmxlbWEgbmVsbCdpbml6aWFsaXphemlvbmUgZGkgTUNJLiBQcm92YXJlIGEgcmlhdnZpYXJlIFdpbmRvd3MuIgpNQ0lFUlJfRFJJVkVSLCAJCQkiU2kg6CB2ZXJpZmljYXRvIHVuIGVycm9yZSBuZWwgZHJpdmVyLiBJbCBkcml2ZXIg6CBzdGF0byBjaGl1c28uIEVycm9yZSBub24gYWNjZXNzaWJpbGUuIgpNQ0lFUlJfQ0FOTk9UX1VTRV9BTEwsIAkJIk5vbiDoIHBvc3NpYmlsZSB1c2FyZSAnYWxsJyBjb21lIG5vbWUgZGVsIGRpc3Bvc2l0aXZvIGNvbiBpbCBjb21hbmRvIHNwZWNpZmljYXRvLiIKTUNJRVJSX01VTFRJUExFLCAJCSJTaSBzb25vIHZlcmlmaWNhdGkgZGVnbGkgZXJyb3JpIGluIHBp+SBkaSB1biBkaXNwb3NpdGl2by4gU3BlY2lmaWNhcmUgb2duaSBjb21hbmRvIGUgZGlzcG9zaXRpdm8gc2VwYXJhdGFtZW50ZSBwZXIgZGV0ZXJtaW5hcmUgcXVhbGUgZGlzcG9zaXRpdm8gaGEgY2F1c2F0byBsJ2Vycm9yZSIKTUNJRVJSX0VYVEVOU0lPTl9OT1RfRk9VTkQsIAkiSW1wb3NzaWJpbGUgZGV0ZXJtaW5hcmUgaWwgdGlwbyBkaSBkaXNwb3NpdGl2byBkYWxsJ2VzdGVuc2lvbmUgZGF0YS4iCk1DSUVSUl9PVVRPRlJBTkdFLCAJCSJJbCBwYXJhbWV0cm8gc3BlY2lmaWNhdG8g6CBmdW9yaSBkYWxsYSBwb3J0YXRhIGRlbCBjb21hbmRvIHNwZWNpZmljYXRvLiIKTUNJRVJSX0ZMQUdTX05PVF9DT01QQVRJQkxFLCAJIkkgcGFyYW1ldHJpIHNwZWNpZmljYXRpIG5vbiBwb3Nzb25vIGVzc2VyZSB1c2F0aSBpbnNpZW1lLiIKTUNJRVJSX0ZJTEVfTk9UX1NBVkVELCAJCSJJbXBvc3NpYmlsZSBzYWx2YXJlIGlsIGZpbGUgc3BlY2lmaWNhdG8uIENvbnRyb2xsYXJlIGRpIGF2ZXJlIGFiYmFzdGFuemEgc3BhemlvIGxpYmVybyBlIGRpIGVzc2VyZSBhbmNvcmEgY29ubmVzc2kgYWxsYSByZXRlLiIKTUNJRVJSX0RFVklDRV9UWVBFX1JFUVVJUkVELCAJIkltcG9zc2liaWxlIHRyb3ZhcmUgaWwgZGlzcG9zaXRpdm8gc3BlY2lmaWNhdG8uIENvbnRyb2xsYXJlIGNoZSBzaWEgaW5zdGFsbGF0byBlIGNoZSBpbCBub21lIHNpYSBkaWdpdGF0byBjb3JyZXR0YW1lbnRlLiIKTUNJRVJSX0RFVklDRV9MT0NLRUQsIAkJIklsIGRpc3Bvc2l0aXZvIHNwZWNpZmljYXRvIHZlcnLgIGNoaXVzby4gQXR0ZW5kZXJlIGFsY3VuaSBzZWNvbmRpIGUgcmlwcm92YXJlLiIKTUNJRVJSX0RVUExJQ0FURV9BTElBUywgCSJMJ2FsaWFzIHNwZWNpZmljYXRvIOggZ2ngIGluIHVzbyBkYSBwYXJ0ZSBkaSBxdWVzdGEgYXBwbGljYXppb25lLiBVc2FyZSB1biBhbGlhcyB1bml2b2NvLiIKTUNJRVJSX0JBRF9DT05TVEFOVCwgCQkiSWwgcGFyYW1ldHJvIHNwZWNpZmljYXRvIOggaW52YWxpZG8gcGVyIHF1ZXN0byBjb21hbmRvLiIKTUNJRVJSX01VU1RfVVNFX1NIQVJFQUJMRSwgCSJJbCBkcml2ZXIg6CBnaeAgaW4gdXNvLiBQZXIgY29uZGl2aWRlcmxvLCB1c2FyZSBpbCBwYXJhbWV0cm8gICdzaGFyZWFibGUnIGNvbiBvZ25pIGNvbWFuZG8gJ29wZW4nLiIKTUNJRVJSX01JU1NJTkdfREVWSUNFX05BTUUsIAkiSWwgY29tYW5kbyBzcGVjaWZpY2F0byByaWNoaWVkZSB1biBhbGlhcywgdW4gZmlsZSwgdW4gZHJpdmVyIG8gaWwgbm9tZSBkaSB1biBkaXNwb3NpdGl2by4gRm9ybmlybmUgdW5vLiIKTUNJRVJSX0JBRF9USU1FX0ZPUk1BVCwgCSJJbCB2YWxvcmUgc3BlY2lmaWNhdG8g6CBpbnZhbGlkbyBwZXIgaWwgZm9ybWF0byBkZWxsJ29yYXJpby4gQ29uc3VsdGFyZSBsYSBkb2N1bWVudGF6aW9uZSBkZWxsJ01DSSBwZXIgaSBmb3JtYXRpIHZhbGlkaS4iCk1DSUVSUl9OT19DTE9TSU5HX1FVT1RFLCAJIk1hbmNhIHVuYSBkb3BwaWEgdm9yZ29sZXR0YSBkaSBjaGl1c3VyYSBkYWwgdmFsb3JlIGRlbCBwYXJhbWV0cm8uIEZvcm5pcm5lIHVuYS4iCk1DSUVSUl9EVVBMSUNBVEVfRkxBR1MsIAkiVW4gdmFsb3JlIG8gcGFyYW1ldHJvIOggc3RhdG8gc3BlY2lmaWNhdG8gZHVlIHZvbHRlLiBTcGVjaWZpY2FybG8gc29sbyB1bmEgdm9sdGEuIgpNQ0lFUlJfSU5WQUxJRF9GSUxFLCAJCSJJbCBmaWxlIHNwZWNpZmljYXRvIG5vbiBwdfIgZXNzZXJlIGFwZXJ0byBjb24gaWwgZGlzcG9zaXRpdm8gTUNJIHNwZWNpZmljYXRvLiBJbCBmaWxlIHBvdHJlYmJlIGVzc2VyZSBkYW5lZ2dpYXRvLCBvIGluIHVuIGZvcm1hdG8gZXJyYXRvLiIKTUNJRVJSX05VTExfUEFSQU1FVEVSX0JMT0NLLCAJIlVuIG51bGwgcGFyYW1ldGVyIGJsb2NrIOggc3RhdG8gcGFzc2F0byBhIE1DSS4iCk1DSUVSUl9VTk5BTUVEX1JFU09VUkNFLCAJIk5vbiDoIHBvc3NpYmlsZSBzYWx2YXJlIHVuIGZpbGUgc2VuemEgbm9tZS4gRm9ybmlyZSB1biBub21lIGFsIGZpbGUuIgpNQ0lFUlJfTkVXX1JFUVVJUkVTX0FMSUFTLCAJIkUnIG5lY2Vzc2FyaW8gc3BlY2lmaWNhcmUgdW4gYWxpYXMgcXVhbmRvIHNpIHVzYSBpbCBwYXJhbWV0cm8gJ25ldycuIgpNQ0lFUlJfTk9USUZZX09OX0FVVE9fT1BFTiwgCSJOb24g6CBwb3NzaWJpbGUgdXNhcmUgaWwgZmxhZyAnbm90aWZ5JyBjb24gZGlzcG9zaXRpdmkgYXV0by1hcGVydGkuIgpNQ0lFUlJfTk9fRUxFTUVOVF9BTExPV0VELCAJIk5vbiDoIHBvc3NpYmlsZSB1c2FyZSB1biBub21lIGZpbGUgY29uIGlsIGRpc3Bvc2l0aXZvIHNwZWNpZmljYXRvLiIKTUNJRVJSX05PTkFQUExJQ0FCTEVfRlVOQ1RJT04sIAkiTm9uIOggcG9zc2liaWxlIGVzZWd1aXJlIGkgY29tYW5kaSBuZWxsJ29yZGluZSBzcGVjaWZpY2F0by4gQ29ycmVnZ2VyZSBsYSBzZXF1ZW56YSwgZSByaXByb3ZhcmUuIgpNQ0lFUlJfSUxMRUdBTF9GT1JfQVVUT19PUEVOLCAJIk5vbiDoIHBvc3NpYmlsZSBlc2VndWlyZSBpbCBjb21hbmRvIHNwZWNpZmljYXRvIGNvbiB1biBkaXNwb3NpdGl2byBhdXRvLWFwZXJ0by4gQXR0ZW5kZXJlIGNoZSBpbCBkaXNwb3NpdGl2byBzaSBzaWEgY2hpdXNvLCBlIHJpcHJvdmFyZS4iCk1DSUVSUl9GSUxFTkFNRV9SRVFVSVJFRCwgCSJJbCBub21lIGRlbCBmaWxlIOggaW52YWxpZG8uIENvbnRyb2xsYXJlIGNoZSBpbCBub21lIGRlbCBmaWxlIG5vbiBzaWEgcGn5IGx1bmdvIGRpIDggY2FyYXR0ZXJpLCBzZWd1aXRvIGRhIHVuIHBlcmlvZG8gZSB1bidlc3RlbnNpb25lLiIKTUNJRVJSX0VYVFJBX0NIQVJBQ1RFUlMsIAkiTm9uIOggcG9zc2liaWxlIHNwZWNpZmljYXJlIGFsdHJpIGNhcmF0dGVyaSBkb3BvIHVuYSBzdHJpbmdhIGNvbXByZXNhIHRyYSB2aXJnb2xldHRlLiIKTUNJRVJSX0RFVklDRV9OT1RfSU5TVEFMTEVELCAJIklsIGRpc3Bvc2l0aXZvIHNwZWNpZmljYXRvIG5vbiDoIGluc3RhbGxhdG8gbmVsIHNpc3RlbWEuIFVzYXJlIGwnb3B6aW9uZSBEcml2ZXJzIG5lbCBQYW5uZWxsbyBkaSBDb250cm9sbG8gcGVyIGluc3RhbGxhcmUgaWwgZGlzcG9zaXRpdm8uIgpNQ0lFUlJfR0VUX0NELCAJCQkiSW1wb3NzaWJpbGUgYWNjZWRlcmUgYWwgZmlsZSBvIGRpc3Bvc2l0aXZvIE1DSSBzcGVjaWZpY2F0by4gUHJvdmFyZSBhIGNhbWJpYXJlIGRpcmVjdG9yeSBvIHJpYXZ2aWFyZSBpbCBjb21wdXRlci4iCk1DSUVSUl9TRVRfQ0QsIAkJCSJJbXBvc3NpYmlsZSBhY2NlZGVyZSBhbCBmaWxlIG8gZGlzcG9zaXRpdm8gTUNJIHNwZWNpZmljYXRvIHBlcmNo6CBsJ2FwcGxpY2F6aW9uZSBub24gcHXyIGNhbWJpYXJlIGRpcmVjdG9yeS4iCk1DSUVSUl9TRVRfRFJJVkUsIAkJIkltcG9zc2liaWxlIGFjY2VkZXJlIGFsIGZpbGUgbyBkaXNwb3NpdGl2byBNQ0kgc3BlY2lmaWNhdG8gcGVyY2joIGwnYXBwbGljYXppb25lIG5vbiBwdfIgY2FtYmlhcmUgZHJpdmUuIgpNQ0lFUlJfREVWSUNFX0xFTkdUSCwgCQkiU3BlY2lmaWNhcmUgdW4gZHJpdmVyIG8gZGlzcG9zaXRpdm8gY29uIG1lbm8gZGkgNzkgY2FyYXR0ZXJpLiIKTUNJRVJSX0RFVklDRV9PUkRfTEVOR1RILCAJIlNwZWNpZmljYXJlIHVuIGRyaXZlciBvIGRpc3Bvc2l0aXZvIGNvbiBtZW5vIGRpIDY5IGNhcmF0dGVyaS4iCk1DSUVSUl9OT19JTlRFR0VSLCAJCSJJbCBjb21hbmRvIHNwZWNpZmljYXRvIHJpY2hpZWRlIHVuIG51bWVybyBpbnRlcm8gY29tZSBwYXJhbWV0cm8uIEZvcm5pcm5lIHVuby4iCk1DSUVSUl9XQVZFX09VVFBVVFNJTlVTRSwgCSJUdXR0aSBpIGRpc3Bvc2l0aXZpIHdhdmUgY2hlIHBvc3Nvbm8gbGVnZ2VyZSBpbCBmaWxlIG5lbCBmb3JtYXRvIGF0dHVhbGUgc29ubyBpbiB1c28uIEF0dGVuZGVyZSBjaGUgdW4gZGlzcG9zaXRpdm8gd2F2ZSBzaWEgbGliZXJvLCBlIHJpcHJvdmFyZS4iCk1DSUVSUl9XQVZFX1NFVE9VVFBVVElOVVNFLCAJIk5vbiDoIHBvc3NpYmlsZSBpbXBvc3RhcmUgaWwgZGlzcG9zaXRpdm8gd2F2ZSBhdHR1YWxlIHBlciBpbCBwbGF5IGJhY2sgcGVyY2joIOggaW4gdXNvLiBBdHRlbmRlcmUgY2hlIGlsIGRpc3Bvc2l0aXZvIHNpYSBsaWJlcm8sIGUgcmlwcm92YXJlLiIKTUNJRVJSX1dBVkVfSU5QVVRTSU5VU0UsIAkiVHV0dGkgaSBkaXNwb3NpdGl2aSB3YXZlIGNoZSBwb3Nzb25vIHJlZ2lzdHJhcmUgbmVsIGZvcm1hdG8gYXR0dWFsZSBzb25vIGluIHVzby4gQXR0ZW5kZXJlIGNoZSB1biBkaXNwb3NpdGl2byB3YXZlIHNpYSBkaXNwb25pYmlsZSwgZSByaXByb3ZhcmUuIgpNQ0lFUlJfV0FWRV9TRVRJTlBVVElOVVNFLCAJIk5vbiDoIHBvc3NpYmlsZSBpbXBvc3RhcmUgaWwgZGlzcG9zaXRpdm8gcGVyIHJlZ2lzdHJhcmUgcGVyY2joIOggaW4gdXNvLiBBdHRlbmRlcmUgY2hlIGlsIGRpc3Bvc2l0aXZvIHNpYSBkaXNwb25pYmlsZSwgZSByaXByb3ZhcmUuIgpNQ0lFUlJfV0FWRV9PVVRQVVRVTlNQRUNJRklFRCwJIlB18iBlc3NlcmUgdXNhdG8gcXVhbHVucXVlIGRpc3Bvc2l0aXZvIGNvbXBhdGliaWxlIHdhdmVmb3JtIHBlciBpbCBwbGF5YmFjay4iCk1DSUVSUl9XQVZFX0lOUFVUVU5TUEVDSUZJRUQsIAkiUHXyIGVzc2VyZSB1c2F0byBxdWFsdW5xdWUgZGlzcG9zaXRpdm8gY29tcGF0aWJpbGUgd2F2ZWZvcm0gcGVyIHJlZ2lzdHJhcmUuIgpNQ0lFUlJfV0FWRV9PVVRQVVRTVU5TVUlUQUJMRSwgCSJOZXNzdW4gZGlzcG9zaXRpdm8gd2F2ZSBpbnN0YWxsYXRvIHB18iBsZWdnZXJlIGkgZmlsZSBuZWwgZm9ybWF0byBhdHR1YWxlLiBVc2FyZSBsJ29wemlvbmUgZHJpdmVycyBwZXIgaW5zdGFsbGFyZSB1biBkaXNwb3NpdGl2byB3YXZlLiIKTUNJRVJSX1dBVkVfU0VUT1VUUFVUVU5TVUlUQUJMRSwiSWwgZGlzcG9zaXRpdm8gY2hlIHNpIHN0YSB1c2FuZG8gcGVyIGxlZ2dlcmUgaWwgZmlsZSBub24gcmlzb25vc2NlIGlsIGZvcm1hdG8gZGVsIGZpbGUgYXR0dWFsZS4iCk1DSUVSUl9XQVZFX0lOUFVUU1VOU1VJVEFCTEUsIAkiTm9uIOggaW5zdGFsbGF0byBuZXNzdW4gZGlwb3NpdGl2byB3YXZlIGNoZSBwb3NzYSByZWdpc3RyYXJlIGRlaSBmaWxlIG5lbCBmb3JtYXRvIGF0dHVhbGUuIFVzYXJlIGwnb3B6aW9uZSBEcml2ZXJzIHBlciBpbnN0YWxsYXJlIHVuIGRpc3Bvc2l0aXZvIHdhdmUuIgpNQ0lFUlJfV0FWRV9TRVRJTlBVVFVOU1VJVEFCTEUsICJJbCBkaXNwb3NpdGl2byBjaGUgc2kgc3RhIHVzYW5kbyBwZXIgcmVnaXN0cmFyZSBub24gcmlzb25vc2NlIGlsIGZvcm1hdG8gYXR0dWFsZS4iCk1DSUVSUl9OT19XSU5ET1csIAkJIk5vbiBjJ+ggbmVzc3VuYSBmaW5lc3RyYSBkaSB2aXN1YWxpenphemlvbmUuIgpNQ0lFUlJfQ1JFQVRFV0lORE9XLCAJCSJJbXBvc3NpYmlsZSB1c2FyZSBvIGNyZWFyZSBsYSBmaW5lc3RyYS4iCk1DSUVSUl9GSUxFX1JFQUQsIAkJIkltcG9zc2liaWxlIGxlZ2dlcmUgaWwgZmlsZSBzcGVjaWZpY2F0by4gQXNzaWN1cmFyc2kgY2hlIGlsIGZpbGUgc2lhIGFuY29yYSBwcmVzZW50ZSwgbyBjb250cm9sbGFyZSBpbCBkaXNjbyBvIGxhIGNvbm5lc3Npb25lIGRpIHJldGUuIgpNQ0lFUlJfRklMRV9XUklURSwgCQkiSW1wb3NzaWJpbGUgc2NyaXZlcmUgaWwgZmlsZSBzcGVjaWZpY2F0by4gQ29udHJvbGxhcmUgZGkgYXZlcmUgc3BhemlvIGxpYmVybyBzdWZmaWNlbnRlIHN1bCBkaXNjbyBvIGRpIGVzc2VyZSBhbmNvcmEgY29ubmVzc2kgYWxsYSByZXRlLiIKTUNJRVJSX1NFUV9ESVZfSU5DT01QQVRJQkxFLCAJIkkgZm9ybWF0aSBkZWxsJ29yYXJpbyBkZWwgIiJzb25nIHBvaW50ZXIiIiBlICBTTVBURSBzaSBlc2NsdWRvbm8gdmljZW5kZXZvbG1lbnRlLiBOb24gc2kgcG9zc29ubyB1c2FyZSBpbnNpZW1lLiIKTUNJRVJSX1NFUV9OT01JRElQUkVTRU5ULCAJIk5lbCBzaXN0ZW1hIG5vbiBzb25vIGluc3RhbGxhdGkgZGlzcG9zaXRpdmkgTUlESS4gVXNhcmUgbCdvcHppb25lIERyaXZlcnMgZGFsIFBhbm5lbGxvIGRpIENvbnRyb2xsbyBwZXIgaW5zdGFsbGFyZSB1biBkcml2ZXIgTUlESS4iCk1DSUVSUl9TRVFfUE9SVF9JTlVTRSwgCQkiTGEgcG9ydGEgTUlESSBzcGVjaWZpY2F0YSDoIGdp4CBpbiB1c28uIEF0dGVuZGVyZSBjaGUgc2lhIGxpYmVyYSwgZSByaXByb3ZhcmUuIgpNQ0lFUlJfU0VRX1BPUlRfTUFQTk9ERVZJQ0UsIAkiTGEgY29uZmlndXJhemlvbmUgZGVsIE1hcHBlciBNSURJIHNpIHJpZmVyaXNjZSBhIHVuIGRpc3Bvc2l0aXZvIE1JREkgY2hlIG5vbiDoIGluc3RhbGxhdG8gbmVsIHNpc3RlbWEuIFVzYXJlIGwnb3B6aW9uZSBNYXBwZXIgTUlESSBuZWwgUGFubmVsbG8gZGkgQ29udHJvbGxvIHBlciBjYW1iaWFyZSBsYSBjb25maWd1cmF6aW9uZS4iCk1DSUVSUl9TRVFfUE9SVF9NSVNDRVJST1IsIAkiU2kg6CB2ZXJpZmljYXRvIHVuIGVycm9yZSBjb24gbGEgcG9ydGEgc3BlY2lmaWNhdGEuIgpNQ0lFUlJfU0VRX1BPUlRfTk9ORVhJU1RFTlQsIAkiSWwgZGlzcG9zaXRpdm8gTUlESSBzcGVjaWZpY2F0byBub24g6CBpbnN0YWxsYXRvIG5lbCBzaXN0ZW1hLiBVc2FyZSBsJ29wemlvbmUgRFJJVkVSUyBuZWwgUGFubmVsbG8gZGkgQ29udHJvbGxvIHBlciBpbnN0YWxsYXJlIHVuIGRpc3Bvc2l0aXZvIE1JREkuIgpNQ0lFUlJfU0VRX1BPUlRVTlNQRUNJRklFRCwgCSJOb24g6CBzdGF0YSBzcGVjaWZpY2F0YSB1bmEgcG9ydGEgTUlESSBuZWwgc2lzdGVtYS4iCk1DSUVSUl9TRVFfVElNRVIsIAkJIlR1dHRpIGkgdGltZXIgbXVsdGltZWRpYWxpIHNvbm8gaW4gdXNvIGRhIHBhcnRlIGRpIGFsdHJlIGFwcGxpY2F6aW9uaS4gQ2hpdWRlcmUgdW5hIGRpIHF1ZXN0YSBhcHBsaWNhemlvbmksIGUgcmlwcm92YXJlLiIKCkVORAo=