PCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiI+CjxIVE1MPgo8SEVBRD4KICAgIDxUSVRMRT5DbGFzcyBUZW1wbGF0ZSBjb2RlX2NvbnZlcnRlcjwvVElUTEU+CiAgICA8TElOSyBSRUw9InN0eWxlc2hlZXQiIEhSRUY9Ii4uLy4uLy4uLy4uL2Jvb3N0LmNzcyI+CiAgICA8TElOSyBSRUw9InN0eWxlc2hlZXQiIEhSRUY9Ii4uL3RoZW1lL2lvc3RyZWFtcy5jc3MiPgo8L0hFQUQ+CjxCT0RZPgoKPCEtLSBCZWdpbiBCYW5uZXIgLS0+CgogICAgPEgxIENMQVNTPSJ0aXRsZSI+Q2xhc3MgVGVtcGxhdGUgPENPREU+Y29kZV9jb252ZXJ0ZXI8L0NPREU+PC9IMT4KICAgIDxIUiBDTEFTUz0iYmFubmVyIj4KCjwhLS0gRW5kIEJhbm5lciAtLT4KCjxETCBjbGFzcz0icGFnZS1pbmRleCI+CiAgPERUPjxBIGhyZWY9IiNkZXNjcmlwdGlvbiI+RGVzY3JpcHRpb248L0E+PC9EVD4KICA8RFQ+PEEgaHJlZj0iI2hlYWRlcnMiPkhlYWRlcnM8L0E+PC9EVD4KICA8RFQ+PEEgaHJlZj0iI3JlZmVyZW5jZSI+UmVmZXJlbmNlPC9BPjwvRFQ+CjwvREw+Cgo8SFI+Cgo8QSBOQU1FPSJkZXNjcmlwdGlvbiI+PC9BPgo8SDI+RGVzY3JpcHRpb248L0gyPgoKPFA+CiAgICBUaGUgY2xhc3MgdGVtcGxhdGVzIDxDT0RFPmNvZGVfY29udmVydGVyPC9DT0RFPiBpcyBhIDxTUEFOIENMQVNTPSJ0ZXJtIj5EZXZpY2UgYWRhcHRlcjwvU1BBTj4gd2hpY2ggdGFrZXMgYSBEZXZpY2Ugd2l0aCBhIG5hcnJvdyA8QSBIUkVGPSIuLi9ndWlkZS90cmFpdHMuaHRtbCNjaGFyX3R5cGUiPmNoYXJhY3RlciB0eXBlPC9BPiCXIHR5cGljYWxseSA8Q09ERT5jaGFyPC9DT0RFPiCXIGFuZCBwcm9kdWNlcyBhIERldmljZSB3aXRoIHdpZGUgY2hhcmFjdGVyIHR5cGUglyB0eXBpY2FsbHkgPENPREU+d2NoYXJfdDwvQ09ERT4glyBieSBpbnRyb2R1Y2luZyBhIGxheWVyIG9mIDxBIEhSRUY9Ii4uL2d1aWRlL2NvZGVfY29udmVyc2lvbi5odG1sIj5jb2RlIGNvbnZlcnNpb248L0E+LiBUaGUgY29kZSBjb252ZXJzaW9uIGlzIHBlcmZvcm1lZCB1c2luZyBhIDxDT0RFPnN0ZDo6Y29kZWN2dDwvQ09ERT4gZmFjZXQgd2hpY2ggY2FuIGVpdGhlciBiZSBzcGVjaWZpZWQgYXMgYSB0ZW1wbGF0ZSBwYXJhbWV0ZXIgb3IgYmUgZmV0Y2hlZCBmcm9tIGEgPENPREU+c3RkOjpsb2NhbGU8L0NPREU+IHByb3ZpZGVkIGF0IHJ1bnRpbWUuIAo8L1A+CjxQPgogICAgRm9yIGV4YW1wbGUsIHdlIGNhbiBkZWZpbmUgYSB3aWRlLWNoYXJhY3RlciBEZXZpY2UgZm9yIHJlYWRpbmcgZnJvbSBhIG1lbW9yeS1tYXBwZWQgZmlsZSBhcyBmb2xsb3dzOgogICAgPFBSRSBDTEFTUz0iYnJva2VuX2llIj4gICAgPFNQQU4gQ0xBU1M9InByZXByb2Nlc3NvciI+I2luY2x1ZGU8L1NQQU4+IDxBIENMQVNTPSJoZWFkZXIiIEhSRUY9Ii4uLy4uLy4uLy4uL2Jvb3N0L2lvc3RyZWFtcy9kZXZpY2UvbWFwcGVkX2ZpbGUuaHBwIj48U1BBTiBDTEFTUz0ibGl0ZXJhbCI+Jmx0O2Jvb3N0L2lvc3RyZWFtcy9tYXBlZF9maWxlLmhwcCZndDs8L1NQQU4+PC9BPgoKICAgIDxTUEFOIENMQVNTPSJrZXl3b3JkIj50eXBlZGVmPC9TUEFOPiBjb2RlX2NvbnZlcnRlciZsdDttYXBwZWRfZmlsZV9zb3VyY2UmZ3Q7IG15X3NvdXJjZTs8L1BSRT4KCiAgICBTaW1pbGFybHksIHdlIGNhbiBkZWZpbmUgYSB3aWRlLWNoYXJhY3RlciBEZXZpY2Ugd2hpY2ggd3JpdGVzIG11bHRpYnl0ZSBjaGFyYWN0ZXJzIHRvIGFuIGluLW1lbW9yeSBjaGFyYWN0ZXIgc2VxdWVuY2UgYXMgZm9sbG93czoKCiAgICA8UFJFIENMQVNTPSJicm9rZW5faWUiPiAgICA8U1BBTiBDTEFTUz0icHJlcHJvY2Vzc29yIj4jaW5jbHVkZTwvU1BBTj4gPEEgQ0xBU1M9ImhlYWRlciIgSFJFRj0iLi4vLi4vLi4vLi4vYm9vc3QvaW9zdHJlYW1zL2RldmljZS9hcnJheS5ocHAiPjxTUEFOIENMQVNTPSJsaXRlcmFsIj4mbHQ7Ym9vc3QvaW9zdHJlYW1zL2RldmljZS9hcnJheS5ocHAmZ3Q7PC9TUEFOPjwvQT4KCiAgICA8U1BBTiBDTEFTUz0ia2V5d29yZCI+dHlwZWRlZjwvU1BBTj4gY29kZV9jb252ZXJ0ZXImbHQ7YXJyYXlfc2luayZndDsgbXlfc2luazs8L1BSRT4KPC9QPgo8UD4KICAgIFRoZSA8QSBIUkVGPSIuLi9ndWlkZS9tb2Rlcy5odG1sIj5tb2RlPC9BPiBvZiBhIHNwZWNpYWxpemF0aW9uIG9mIDxDT0RFPmNvZGVfY29udmVydGVyPC9DT0RFPiBpcyBkZXRlcm1pbmVkIGFzIGZvbGxvd3MuIElmIGEgbmFycm93IGNoYXJhY3RlciBEZXZpY2UgaXMgcmVhZC1vbmx5LCB0aGUgcmVzdWx0aW5nIHNwZWNpYWxpemF0aW9uIG9mIDxDT0RFPmNvZGVfY29udmVydGVyPC9DT0RFPiBoYXMgbW9kZSA8QSBIUkVGPSIuLi9ndWlkZS9tb2Rlcy5odG1sI2lucHV0Ij5pbnB1dDwvQT4uIElmIGEgbmFycm93IGNoYXJhY3RlciBEZXZpY2UgaXMgd3JpdGUtb25seSwgdGhlIHJlc3VsdGluZyBzcGVjaWFsaXphdGlvbiBvZiA8Q09ERT5jb2RlX2NvbnZlcnRlcjwvQ09ERT4gaGFzIG1vZGUgPEEgSFJFRj0iLi4vZ3VpZGUvbW9kZXMuaHRtbCNvdXRwdXQiPm91dHB1dDwvQT4uIElmIGEgbmFycm93IGNoYXJhY3RlciBEZXZpY2UgcGVyZm9ybXMgaW5wdXQgYW5kIG91dHB1dCB1c2luZyB0d28gZGlzdGluY3Qgc2VxdWVuY2VzICg8ST5zZWU8L0k+IDxBIEhSRUY9Ii4uL2d1aWRlL21vZGVzLmh0bWwiPk1vZGVzPC9BPiksIHRoZSByZXN1bHRpbmcgc3BlY2lhbGl6YXRpb24gb2YgPENPREU+Y29kZV9jb252ZXJ0ZXI8L0NPREU+IGhhcyBtb2RlIDxBIEhSRUY9Ii4uL2d1aWRlL21vZGVzLmh0bWwjYmlkaXJlY3Rpb25hbCI+YmlkaXJlY3Rpb25hbDwvQT4uIE90aGVyd2lzZSwgYXR0ZW1wdGluZyB0byBzcGNpYWxpemUgPENPREU+Y29kZV9jb252ZXJ0ZXI8L0NPREU+IHJlc3VsdHMgaW4gYSBjb21waWxlLXRpbWUgZXJyb3IuCjwvUD4KCjxBIE5BTUU9ImhlYWRlcnMiPjwvQT4KPEgyPkhlYWRlcnM8L0gyPgoKPERMIGNsYXNzPSJwYWdlLWluZGV4Ij4KICA8RFQ+PEEgQ0xBU1M9ImhlYWRlciIgSFJFRj0iLi4vLi4vLi4vLi4vYm9vc3QvaW9zdHJlYW1zL2NvZGVfY29udmVydGVyLmhwcCI+PENPREU+Jmx0O2Jvb3N0L2lvc3RyZWFtcy9jb2RlX2NvbnZlcnRlci5ocHAmZ3Q7PC9DT0RFPjwvQT48L0RUPgo8L0RMPgoKPEEgTkFNRT0icmVmZXJlbmNlIj48L0E+CjxIMj5SZWZlcmVuY2U8L0gyPgoKPEg0PlN5bm9wc2lzPC9IND4KCjxQUkUgQ0xBU1M9ImJyb2tlbl9pZSI+PFNQQU4gQ0xBU1M9ImtleXdvcmQiPm5hbWVzcGFjZTwvU1BBTj4gYm9vc3QgeyA8U1BBTiBDTEFTUz0ia2V5d29yZCI+bmFtZXNwYWNlPC9TUEFOPiBpb3N0cmVhbXMgewoKPFNQQU4gQ0xBU1M9ImtleXdvcmQiPnRlbXBsYXRlPC9TUEFOPiZsdDsgPFNQQU4gQ0xBU1M9ImtleXdvcmQiPnR5cGVuYW1lPC9TUEFOPiA8QSBDTEFTUz0iZG9jdW1lbnRlZCIgSFJFRj0iI3RlbXBsYXRlX3BhcmFtcyI+RGV2aWNlPC9BPiwgCiAgICAgICAgICA8U1BBTiBDTEFTUz0ia2V5d29yZCI+dHlwZW5hbWU8L1NQQU4+IDxBIENMQVNTPSJkb2N1bWVudGVkIiBIUkVGPSIjdGVtcGxhdGVfcGFyYW1zIj5Db2RlY3Z0PC9BPiA9IDxTUEFOIENMQVNTPSdvbWl0dGVkJz5kZWZhdWx0X3ZhbHVlPC9TUEFOPgogICAgICAgICAgPFNQQU4gQ0xBU1M9ImtleXdvcmQiPnR5cGVuYW1lPC9TUEFOPiA8QSBDTEFTUz0iZG9jdW1lbnRlZCIgSFJFRj0iI3RlbXBsYXRlX3BhcmFtcyI+QWxsb2M8L0E+ID0gc3RkOjphbGxvY2F0b3ImbHQ7PENPREU+Y2hhcjwvQ09ERT4mZ3Q7ICZndDsKPFNQQU4gQ0xBU1M9ImtleXdvcmQiPmNsYXNzPC9TUEFOPiA8QSBDTEFTUz0iZG9jdW1lbnRlZCIgSFJFRj0iI3RlbXBsYXRlX3BhcmFtcyI+Y29kZV9jb252ZXJ0ZXI8L0E+IHsKPFNQQU4gQ0xBU1M9ImtleXdvcmQiPnB1YmxpYzwvU1BBTj46CiAgICA8U1BBTiBDTEFTUz0ia2V5d29yZCI+dHlwZWRlZjwvU1BBTj4gPFNQQU4gQ0xBU1M9ImtleXdvcmQiPnR5cGVuYW1lPC9TUEFOPiBDb2RlY3Z0OjppbnRlcm5fdHlwZSAgY2hhcl90eXBlOwogICAgPFNQQU4gQ0xBU1M9ImtleXdvcmQiPnR5cGVkZWY8L1NQQU4+IDxTUEFOIENMQVNTPSJvbWl0dGVkIj5pbXBsZW1lbnRhdGlvbi1kZWZpbmVkPC9TUEFOPiAgICAgICAgIGNhdGVnb3J5OwogICAgPEEgQ0xBU1M9ImRvY3VtZW50ZWQiIEhSRUY9IiNjb25zdHJ1Y3RvcnMiPmNvZGVfY29udmVydGVyPC9BPigpOwogICAgPEEgQ0xBU1M9ImRvY3VtZW50ZWQiIEhSRUY9IiNjb25zdHJ1Y3RvcnMiPmNvZGVfY29udmVydGVyPC9BPiggPFNQQU4gQ0xBU1M9ImtleXdvcmQiPmNvbnN0PC9TUEFOPiBEZXZpY2UmIGRldiwgCiAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJlYW1zaXplIGJ1ZmZlcl9zaXplID0gPFNQQU4gQ0xBU1M9Im9taXR0ZWQiPmRlZmF1bHRfdmFsdWU8L1NQQU4+ICk7CiAgICA8U1BBTiBDTEFTUz0ia2V5d29yZCI+dm9pZDwvU1BBTj4gPEEgQ0xBU1M9ImRvY3VtZW50ZWQiIEhSRUY9IiNvcGVuIj5vcGVuPC9BPiggPFNQQU4gQ0xBU1M9ImtleXdvcmQiPmNvbnN0PC9TUEFOPiBEZXZpY2UmIGRldiwgCiAgICAgICAgICAgICAgIHN0ZDo6c3RyZWFtc2l6ZSBidWZmZXJfc2l6ZSA9IDxTUEFOIENMQVNTPSJvbWl0dGVkIj5kZWZhdWx0X3ZhbHVlPC9TUEFOPiApOwogICAgPFNQQU4gQ0xBU1M9ImtleXdvcmQiPmJvb2w8L1NQQU4+IDxBIENMQVNTPSJkb2N1bWVudGVkIiBIUkVGPSIjaXNfb3BlbiI+aXNfb3BlbjwvQT4oKSA8U1BBTiBDTEFTUz0ia2V5d29yZCI+Y29uc3Q8L1NQQU4+OwogICAgPFNQQU4gQ0xBU1M9ImtleXdvcmQiPnZvaWQ8L1NQQU4+IDxBIENMQVNTPSJkb2N1bWVudGVkIiBIUkVGPSIjY2xvc2UiPmNsb3NlPC9BPigpOwogICAgc3RkOjpsb2NhbGUgPEEgQ0xBU1M9ImRvY3VtZW50ZWQiIEhSRUY9IiNpbWJ1ZSI+aW1idWU8L0E+KDxTUEFOIENMQVNTPSJrZXl3b3JkIj5jb25zdDwvU1BBTj4gc3RkOjpsb2NhbGUmIGxvYyk7IAogICAgRGV2aWNlJiA8QSBDTEFTUz0iZG9jdW1lbnRlZCIgSFJFRj0iI29wZXJhdG9yX3N0YXIiPm9wZXJhdG9yKjwvQT4oKTsKICAgIERldmljZSogPEEgQ0xBU1M9ImRvY3VtZW50ZWQiIEhSRUY9IiNvcGVyYXRvcl9hcnJvdyI+b3BlcmF0b3ItJmd0OzwvQT4oKTsKfTsKCn0gfSA8U1BBTiBDTEFTUz0iY29tbWVudCI+Ly8gRW5kIG5hbWVzcGFjZSBib29zdDo6aW88L1NQQU4+PC9QUkU+Cgo8QSBOQU1FPSJ0ZW1wbGF0ZV9wYXJhbXMiPjwvQT4KPEg0PlRlbXBsYXRlIHBhcmFtZXRlcnM8L0g0PgoKPFRBQkxFIFNUWUxFPSJtYXJnaW4tbGVmdDoyZW0iIEJPUkRFUj0wIENFTExQQURESU5HPTI+CjxUUj4KICAgIDxUUj4KICAgICAgICA8VEQgVkFMSUdOPSJ0b3AiPjxJPkRldmljZTwvST48L1REPjxURCBXSURUSD0iMmVtIiBWQUxJR049InRvcCI+LTwvVEQ+CiAgICAgICAgPFREPkEgbW9kZWwgb2Ygb25lIG9mIHRoZSA8QSBIUkVGPSIuLi9ndWlkZS9jb25jZXB0cy5odG1sI2RldmljZV9jb25jZXB0cyI+RGV2aWNlPC9BPiBjb25jZXB0czsgdHlwaWNhbGx5IGhhcyA8QSBIUkVGPSIuLi9ndWlkZS90cmFpdHMuaHRtbCNjaGFyX3R5cGUiPmNoYXJhY3RlciB0eXBlPC9BPiA8Q09ERT5jaGFyPC9DT0RFPi48L1REPgogICAgPC9UUj4KICAgIDxUUj4KICAgICAgICA8VEQgVkFMSUdOPSJ0b3AiPjxJPkNvZGVjdnQ8L0k+PC9URD48VEQgV0lEVEg9IjJlbSIgVkFMSUdOPSJ0b3AiPi08L1REPgogICAgICAgIDxURD4KICAgICAgICAgICAgQSBzdGFuZGFyZCBsaWJyYXJ5IGNvZGVjdnQgZmFjZXQsIHdoaWNoIG11c3QgYmUgZGVmYXVsdCBjb25zdHJ1Y3RpYmxlLiBJZiB0aGlzIHBhcmFtZXRlciBpcyBub3Qgc3BlY2lmaWVkLAogICAgICAgICAgICBhbiBpbnN0YW5jZSBvZiA8Q09ERT5zdGQ6OmNvZGVjdnQmbHQ7d2NoYXJfdCwgY2hhciwgc3RkOjptYnN0YXRlX3QmZ3Q7PC9DT0RFPiB3aWxsIGJlIGZldGNoZWQgZnJvbSB0aGUgZ2xvYmFsCiAgICAgICAgICAgIGxvY2FsIHdoZW4gYSA8Q09ERT5jb2RlX2NvbnZlcnRlcjwvQ09ERT4gaXMgY29uc3RydWN0ZWQgb3Igb3BlbmVkLgogICAgICAgIDwvVEQ+CiAgICA8L1RSPgogICAgPFRSPgogICAgICAgIDxURCBWQUxJR049InRvcCI+PEk+QWxsb2M8L0k+PC9URD48VEQgV0lEVEg9IjJlbSIgVkFMSUdOPSJ0b3AiPi08L1REPgogICAgICAgIDxURD5BIHN0YW5kYXJkIGxpYnJhcnkgYWxsb2NhdG9yIHR5cGUgKDxBIENMQVNTPSJiaWJfcmVmIiBIUkVGPSIuLi9iaWJsaW9ncmFwaHkuaHRtbCNpc28iPltJU09dPC9BPiwgMjAuMS41KSwgdXNlZCB0byBhbGxvY2F0ZSBjaGFyYWN0ZXIgYnVmZmVyczwvVEQ+CiAgICA8L1RSPgo8L1RBQkxFPgoKPEEgTkFNRT0iY29uc3RydWN0b3JzIj48L0E+CjxIND48Q09ERT5jb2RlX2NvbnZlcnRlcjo6Y29kZV9jb252ZXJ0ZXI8L0NPREU+PC9IND4KCjxQUkUgQ0xBU1M9ImJyb2tlbl9pZSI+ICAgIGNvZGVfY29udmVydGVyKCk7CiAgICBjb2RlX2NvbnZlcnRlciggPFNQQU4gQ0xBU1M9ImtleXdvcmQiPmNvbnN0PC9TUEFOPiBEZXZpY2UmIGRldiwgCiAgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJlYW1zaXplIGJ1ZmZlcl9zaXplICk7PC9QUkU+CiAgICAKPFA+CiAgICBUaGUgZmlyc3QgbWVtYmVyIGNvbnN0cnVjdHMgYSA8Q09ERT5jb2RlX2NvbnZlcnRlcjwvQ09ERT4gd2l0aCBubyBhc3NvY2lhdGVkIGluc3RhbmNlIG9mIHRoZSBEZXZpY2UgdHlwZSA8Q09ERT5EZXZpY2U8L0NPREU+LiBCZWZvcmUgdGhlIGluc3RhbmNlIGNhbiBiZSB1c2VkIGZvciBpL28sIHRoZSBtZW1iZXIgZnVuY3Rpb24gPENPREU+b3BlbigpPC9DT0RFPiBtdXN0IGJlIGludm9rZWQuIAo8L1A+CiAgICAKPFA+CiAgICBUaGUgc2Vjb25kIG1lbWJlciBjb25zdHJ1Y3RzIGEgPENPREU+Y29kZV9jb252ZXJ0ZXI8L0NPREU+IGJhc2VkIG9uIHRoZSBnaXZlbiBpbnN0YW5jZSBvZiA8Q09ERT5EZXZpY2U8L0NPREU+LiBUaGUgc2Vjb25kIHBhcmFtZXRlciBkZXRlcm1pbmVzIHRoZSBzaXplIG9mIHRoZSBidWZmZXJzIG9yIGJ1ZmZlcnMgdXNlZCBmb3IgY29kZSBjb252ZXJzaW9uLiBJZiBhIDxDT0RFPnN0ZDo6Y29kZWN2dDwvQ09ERT4gd2FzIHNwZWNpZmllZCBhcyBhIHRlbXBsYXRlIHBhcmFtZXRlciwgYW4gaW5zdGFuY2Ugb2YgaXQgd2lsbCBiZSBkZWZhdWx0IGNvbnN0cnVjdGVkLiBPdGhlcndpc2UsIGEgY29weSBvZiB0aGUgZ2xvYmFsIDxDT0RFPmxvY2FsZTwvQ09ERT4gd2lsbCBiZSBtYWRlLCBhbmQgYW4gaW5zdGFuY2Ugb2YgPENPREU+c3RkOjpjb2RlY3Z0Jmx0O3djaGFyX3QsIGNoYXIsIHN0ZDo6bWJzdGF0ZV90Jmd0OzwvQ09ERT4gd2lsbCBiZSBmZXRjaGVkIGZyb20gaXQuCjwvUD4KCjxBIE5BTUU9ImltYnVlIj48L0E+CjxIND48Q09ERT5jb2RlX2NvbnZlcnRlcjo6aW1idWU8L0NPREU+PC9IND4KCjxQUkUgQ0xBU1M9ImJyb2tlbl9pZSI+ICAgIHN0ZDo6bG9jYWxlIGltYnVlKDxTUEFOIENMQVNTPSJrZXl3b3JkIj5jb25zdDwvU1BBTj4gc3RkOjpsb2NhbGUmIGxvYyk7PC9QUkU+Cgo8UD4KICAgIFVzZWQgdG8gc3BlY2lmeSBhIGxvY2FsZSBmcm9tIHdoaWNoIGEgPENPREU+c3RkOjpjb2RlY3Z0PC9DT0RFPiBmYWNldCB3aWxsIGJlIGZldGNoZWQgdG8gcGVyZm9ybSBjb2RlIGNvbnZlcnNpb24uIFRoZSBlZmZlY3Qgb2YgaW52b2tpbmcgaW1idWUgd2hpbGUgY29kZSBjb252ZXJzaW9uIGlzIGluIHByb2dyZXNzIGlzIHVuZGVmaW5lZC4KPC9QPgoKPFA+CiAgICBUaGlzIGZ1bmN0aW9uIGlzIGEgbm8tb3AgaWYgYSA8Q09ERT5zdGQ6OmNvZGVjdnQ8L0NPREU+IGZhY2V0IHdhcyBzcGVjaWZpZWQgYXMgYSB0ZW1wbGF0ZSBwYXJhbWV0ZXIuCjwvUD4KCjxBIE5BTUU9Im9wZW4iPjwvQT4KPEg0PjxDT0RFPmNvZGVfY29udmVydGVyOjpvcGVuPC9DT0RFPjwvSDQ+Cgo8UFJFIENMQVNTPSJicm9rZW5faWUiPiAgICAgPFNQQU4gQ0xBU1M9ImtleXdvcmQiPnZvaWQ8L1NQQU4+IG9wZW4oIDxTUEFOIENMQVNTPSJrZXl3b3JkIj5jb25zdDwvU1BBTj4gRGV2aWNlJiBkZXYsIAogICAgICAgICAgICAgICAgc3RkOjpzdHJlYW1zaXplIGJ1ZmZlcl9zaXplID0gPFNQQU4gQ0xBU1M9Im9taXR0ZWQiPmRlZmF1bHRfdmFsdWU8L1NQQU4+ICk7PC9QUkU+Cgo8UD4KICAgIEFzc29jYWl0ZXMgdGhlIGdpdmVuIGluc3RhbmNlIG9mIDxDT0RFPkRldmljZTwvQ09ERT4gd2l0aCA8Q09ERT50aGlzPC9DT0RFPiBpbnN0YW5jZSBvZiA8Q09ERT5jb2RlX2NvbnZlcnRlcjwvQ09ERT4sIGlmIHRoZXJlIGlzIG5vIHN1Y2ggaW5zdGFuY2UgY3VycmVudGx5IGFzc29jaWF0ZWQ7IG90aGVyd2lzZSwgdGhyb3dzIDxDT0RFPnN0ZDo6aW9zX2Jhc2U6OmZhaWx1cmU8L0NPREU+LiBUaGUgc2Vjb25kIHBhcmFtZXRlciBkZXRlcm1pbmVzIHRoZSBzaXplIG9mIHRoZSBidWZmZXIgb3IgYnVmZmVycyB1c2VkIGZvciBjb2RlIGNvbnZlcnNpb24uIElmIGEgPENPREU+c3RkOjpjb2RlY3Z0PC9DT0RFPiB3YXMgc3BlY2lmaWVkIGFzIGEgdGVtcGxhdGUgcGFyYW1ldGVyLCBhbiBpbnN0YW5jZSBvZiBpdCB3aWxsIGJlIGRlZmF1bHQgY29uc3RydWN0ZWQuIE90aGVyd2lzZSwgYSBjb3B5IG9mIHRoZSBnbG9iYWwgPENPREU+bG9jYWxlPC9DT0RFPiB3aWxsIGJlIG1hZGUsIGFuZCBhbiBpbnN0YW5jZSBvZiA8Q09ERT5zdGQ6OmNvZGVjdnQmbHQ7d2NoYXJfdCwgY2hhciwgc3RkOjptYnN0YXRlX3QmZ3Q7PC9DT0RFPiB3aWxsIGJlIGZldGNoZWQgZnJvbSBpdC4KPC9QPgoKPEEgTkFNRT0iaXNfb3BlbiI+PC9BPgo8SDQ+PENPREU+Y29kZV9jb252ZXJ0ZXI6OmlzX29wZW48L0NPREU+PC9IND4KCjxQUkUgQ0xBU1M9ImJyb2tlbl9pZSI+ICAgIDxTUEFOIENMQVNTPSJrZXl3b3JkIj5ib29sPC9TUEFOPiBpc19vcGVuKCkgPFNQQU4gQ0xBU1M9ImtleXdvcmQiPmNvbnN0PC9TUEFOPjs8L1BSRT4KCjxQPlJldHVybnMgdHJ1ZSBpZiB0aGVyZSBpcyBhbiBpbnN0YW5jZSBvZiB0aGUgRGV2aWNlIHR5cGUgPENPREU+RGV2aWNlPC9DT0RFPiBhc3NvY2lhdGVkIHdpdGggPENPREU+dGhpczwvQ09ERT4gaW5zdGFuY2Ugb2YgPENPREU+Y29kZV9jb252ZXJ0ZXI8L0NPREU+LjwvUD4KCjxBIE5BTUU9ImNsb3NlIj48L0E+CjxIND48Q09ERT5jb2RlX2NvbnZlcnRlcjo6Y2xvc2U8L0NPREU+PC9IND4KCjxQUkUgQ0xBU1M9ImJyb2tlbl9pZSI+ICAgIDxTUEFOIENMQVNTPSJrZXl3b3JkIj52b2lkPC9TUEFOPiBjbG9zZSgpOzwvUFJFPgoKPFA+CiAgICBEaXNhc3NvY2lhdGVzIGZyb20gPENPREU+dGhpczwvQ09ERT4gaW5zdGFuY2Ugb2YgPENPREU+Y29kZV9jb252ZXJ0ZXI8L0NPREU+IGFueSBpbnN0YW5jZSBvZiB0aGUgRGV2aWNlIHR5cGUgPENPREU+RGV2aWNlPC9DT0RFPiBjdXJyZW50bHkgYXNzb2NpYXRlZCB3aXRoIGl0LCBjYWxsaW5nIGNsZWFudXAgZnVuY3Rpb25zIGFzIGFwcHJvcHJpYXRlIGFuZCBkZXN0cm95aW5nIHRoZSBhc3NvY2lhdGVkIGluc3RhbmNlIG9mIDxDT0RFPkRldmljZTwvQ09ERT4uCjwvUD4KCjxBIE5BTUU9Im9wZXJhdG9yX3N0YXIiPjwvQT4KPEg0PjxDT0RFPmNvZGVfY29udmVydGVyOjpvcGVyYXRvcio8L0NPREU+PC9IND4KCjxQUkUgQ0xBU1M9ImJyb2tlbl9pZSI+ICAgIERldmljZSYgb3BlcmF0b3IqKCk7PC9QUkU+Cgo8UD4KICAgICBSZXR1cm5zIGEgcmVmZXJlbmNlIHRvIHRoZSBpbnN0YW5jZSBvZiBEZXZpY2UgYXNzb2NpYXRlZCB3aXRoIHRoaXMgaW5zdGFuY2Ugb2YgPENPREU+Y29kZV9jb252ZXJ0ZXI8L0NPREU+LCB3aGljaCBtdXN0IGJlIDxBIEhSRUY9IiNpc19vcGVuIj5vcGVuPC9BPi4KPC9QPgoKPEEgTkFNRT0ib3BlcmF0b3JfYXJyb3ciPjwvQT4KPEg0PjxDT0RFPmNvZGVfY29udmVydGVyOjpvcGVyYXRvci0+PC9DT0RFPjwvSDQ+Cgo8UFJFIENMQVNTPSJicm9rZW5faWUiPiAgICBEZXZpY2UqIG9wZXJhdG9yLT4oKTs8L1BSRT4KCjxQPgogICAgUmV0dXJucyBhIHBvaW50ZXIgdG8gdGhlIGluc3RhbmNlIG9mIERldmljZSBhc3NvY2lhdGVkIHdpdGggdGhpcyBpbnN0YW5jZSBvZiA8Q09ERT5jb2RlX2NvbnZlcnRlcjwvQ09ERT4sIHdoaWNoIG11c3QgYmUgPEEgSFJFRj0iI2lzX29wZW4iPm9wZW48L0E+Lgo8L1A+CiAgICAKPCEtLSBCZWdpbiBGb290ZXIgLS0+Cgo8SFI+CjxQIENMQVNTPSJjb3B5cmlnaHQiPlJldmlzZWQgMDIgRmViIDIwMDg8L1A+Cgo8UCBDTEFTUz0iY29weXJpZ2h0Ij4mY29weTsgQ29weXJpZ2h0IDIwMDggPGEgaHJlZj0iaHR0cDovL3d3dy5jb2RlcmFnZS5jb20vIiB0YXJnZXQ9Il90b3AiPkNvZGVSYWdlLCBMTEM8L2E+PGJyLz4mY29weTsgQ29weXJpZ2h0IDIwMDQtMjAwNyA8YSBocmVmPSJodHRwOi8vd3d3LmNvZGVyYWdlLmNvbS90dXJrYW5pcy8iIHRhcmdldD0iX3RvcCI+Sm9uYXRoYW4gVHVya2FuaXM8L2E+PC9QPgo8UCBDTEFTUz0iY29weXJpZ2h0Ij4gCiAgICBEaXN0cmlidXRlZCB1bmRlciB0aGUgQm9vc3QgU29mdHdhcmUgTGljZW5zZSwgVmVyc2lvbiAxLjAuIChTZWUgYWNjb21wYW55aW5nIGZpbGUgTElDRU5TRV8xXzAudHh0IG9yIGNvcHkgYXQgPEEgSFJFRj0iaHR0cDovL3d3dy5ib29zdC5vcmcvTElDRU5TRV8xXzAudHh0Ij5odHRwOi8vd3d3LmJvb3N0Lm9yZy9MSUNFTlNFXzFfMC50eHQ8L0E+KQo8L1A+Cgo8IS0tIEVuZCBGb290ZXIgLS0+Cgo8L0JPRFk+Cg==