PCFET0NUWVBFIGFydGljbGUgUFVCTElDICItLy9PQVNJUy8vRFREIERvY0Jvb2sgVjMuMS8vRU4iIFsKPCFFTlRJVFkgZmNhdG9taWMgU1lTVEVNICJmY2F0b21pYy5zZ21sIj4KPCFFTlRJVFkgZmNibGFua3MgU1lTVEVNICJmY2JsYW5rcy5zZ21sIj4KPCFFTlRJVFkgZmNjaGFyc2V0IFNZU1RFTSAiZmNjaGFyc2V0LnNnbWwiPgo8IUVOVElUWSBmY2NvbmZpZyBTWVNURU0gImZjY29uZmlnLnNnbWwiPgo8IUVOVElUWSBmY2NvbnN0YW50IFNZU1RFTSAiZmNjb25zdGFudC5zZ21sIj4KPCFFTlRJVFkgZmNmaWxlIFNZU1RFTSAiZmNmaWxlLnNnbWwiPgo8IUVOVElUWSBmY2ZvbnRzZXQgU1lTVEVNICJmY2ZvbnRzZXQuc2dtbCI+CjwhRU5USVRZIGZjZnJlZXR5cGUgU1lTVEVNICJmY2ZyZWV0eXBlLnNnbWwiPgo8IUVOVElUWSBmY2luaXQgU1lTVEVNICJmY2luaXQuc2dtbCI+CjwhRU5USVRZIGZjbWF0cml4IFNZU1RFTSAiZmNtYXRyaXguc2dtbCI+CjwhRU5USVRZIGZjb2JqZWN0c2V0IFNZU1RFTSAiZmNvYmplY3RzZXQuc2dtbCI+CjwhRU5USVRZIGZjb2JqZWN0dHlwZSBTWVNURU0gImZjb2JqZWN0dHlwZS5zZ21sIj4KPCFFTlRJVFkgZmNwYXR0ZXJuIFNZU1RFTSAiZmNwYXR0ZXJuLnNnbWwiPgo8IUVOVElUWSBmY3N0cmluZyBTWVNURU0gImZjc3RyaW5nLnNnbWwiPgo8IUVOVElUWSBmY3N0cnNldCBTWVNURU0gImZjc3Ryc2V0LnNnbWwiPgo8IUVOVElUWSBmY3ZhbHVlIFNZU1RFTSAiZmN2YWx1ZS5zZ21sIj4KPCFFTlRJVFkgdmVyc2lvbiBTWVNURU0gInZlcnNpb24uc2dtbCI+Cl0+CjwhLS0KICAgICRJZCQKICAgCiAgICBDb3B5cmlnaHQgqSAyMDAzIEtlaXRoIFBhY2thcmQKICAgCiAgICBQZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBkaXN0cmlidXRlLCBhbmQgc2VsbCB0aGlzIHNvZnR3YXJlIGFuZCBpdHMKICAgIGRvY3VtZW50YXRpb24gZm9yIGFueSBwdXJwb3NlIGlzIGhlcmVieSBncmFudGVkIHdpdGhvdXQgZmVlLCBwcm92aWRlZCB0aGF0CiAgICB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhcHBlYXIgaW4gYWxsIGNvcGllcyBhbmQgdGhhdCBib3RoIHRoYXQKICAgIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgYXBwZWFyIGluIHN1cHBvcnRpbmcKICAgIGRvY3VtZW50YXRpb24sIGFuZCB0aGF0IHRoZSBuYW1lIG9mIEtlaXRoIFBhY2thcmQgbm90IGJlIHVzZWQgaW4KICAgIGFkdmVydGlzaW5nIG9yIHB1YmxpY2l0eSBwZXJ0YWluaW5nIHRvIGRpc3RyaWJ1dGlvbiBvZiB0aGUgc29mdHdhcmUgd2l0aG91dAogICAgc3BlY2lmaWMsIHdyaXR0ZW4gcHJpb3IgcGVybWlzc2lvbi4gIEtlaXRoIFBhY2thcmQgbWFrZXMgbm8KICAgIHJlcHJlc2VudGF0aW9ucyBhYm91dCB0aGUgc3VpdGFiaWxpdHkgb2YgdGhpcyBzb2Z0d2FyZSBmb3IgYW55IHB1cnBvc2UuICBJdAogICAgaXMgcHJvdmlkZWQgImFzIGlzIiB3aXRob3V0IGV4cHJlc3Mgb3IgaW1wbGllZCB3YXJyYW50eS4KICAgCiAgICBLRUlUSCBQQUNLQVJEIERJU0NMQUlNUyBBTEwgV0FSUkFOVElFUyBXSVRIIFJFR0FSRCBUTyBUSElTIFNPRlRXQVJFLAogICAgSU5DTFVESU5HIEFMTCBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTLCBJTiBOTwogICAgRVZFTlQgU0hBTEwgS0VJVEggUEFDS0FSRCBCRSBMSUFCTEUgRk9SIEFOWSBTUEVDSUFMLCBJTkRJUkVDVCBPUgogICAgQ09OU0VRVUVOVElBTCBEQU1BR0VTIE9SIEFOWSBEQU1BR0VTIFdIQVRTT0VWRVIgUkVTVUxUSU5HIEZST00gTE9TUyBPRiBVU0UsCiAgICBEQVRBIE9SIFBST0ZJVFMsIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBORUdMSUdFTkNFIE9SIE9USEVSCiAgICBUT1JUSU9VUyBBQ1RJT04sIEFSSVNJTkcgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgVVNFIE9SCiAgICBQRVJGT1JNQU5DRSBPRiBUSElTIFNPRlRXQVJFLgotLT4KPGFydGljbGU+Cgk8dGl0bGU+Rm9udGNvbmZpZyBEZXZlbG9wZXJzIFJlZmVyZW5jZSwgVmVyc2lvbiAmdmVyc2lvbjsgPC90aXRsZT4KCTxhcnRoZWFkZXI+CgkJPGF1dGhvcj4KCQkJPGZpcnN0bmFtZT5LZWl0aDwvZmlyc3RuYW1lPgoJCQk8c3VybmFtZT5QYWNrYXJkPC9zdXJuYW1lPgoJCQk8YWZmaWxpYXRpb24+PG9yZ25hbWU+CgkJCQlIUCBDYW1icmlkZ2UgUmVzZWFyY2ggTGFiCgkJCTwvb3JnbmFtZT48L2FmZmlsaWF0aW9uPgoJCTwvYXV0aG9yPgoJCTxhdXRob3Jpbml0aWFscz5LUlA8L2F1dGhvcmluaXRpYWxzPgoJCTxwcm9kdWN0bmFtZT5Gb250Y29uZmlnPC9wcm9kdWN0bmFtZT4KCQk8cHJvZHVjdG51bWJlcj4mdmVyc2lvbjs8L3Byb2R1Y3RudW1iZXI+CgkJPExlZ2FsTm90aWNlPgoJCQk8c2ltcGFyYT4JCQpDb3B5cmlnaHQgqSAyMDAyIEtlaXRoIFBhY2thcmQKCQkJPC9zaW1wYXJhPjxzaW1wYXJhPgpQZXJtaXNzaW9uIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBkaXN0cmlidXRlLCBhbmQgc2VsbCB0aGlzIHNvZnR3YXJlIGFuZCBpdHMKZG9jdW1lbnRhdGlvbiBmb3IgYW55IHB1cnBvc2UgaXMgaGVyZWJ5IGdyYW50ZWQgd2l0aG91dCBmZWUsIHByb3ZpZGVkIHRoYXQKdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYXBwZWFyIGluIGFsbCBjb3BpZXMgYW5kIHRoYXQgYm90aCB0aGF0CmNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgYXBwZWFyIGluIHN1cHBvcnRpbmcKZG9jdW1lbnRhdGlvbiwgYW5kIHRoYXQgdGhlIG5hbWUgb2YgS2VpdGggUGFja2FyZCBub3QgYmUgdXNlZCBpbgphZHZlcnRpc2luZyBvciBwdWJsaWNpdHkgcGVydGFpbmluZyB0byBkaXN0cmlidXRpb24gb2YgdGhlIHNvZnR3YXJlIHdpdGhvdXQKc3BlY2lmaWMsIHdyaXR0ZW4gcHJpb3IgcGVybWlzc2lvbi4gIEtlaXRoIFBhY2thcmQgbWFrZXMgbm8KcmVwcmVzZW50YXRpb25zIGFib3V0IHRoZSBzdWl0YWJpbGl0eSBvZiB0aGlzIHNvZnR3YXJlIGZvciBhbnkgcHVycG9zZS4gIEl0CmlzIHByb3ZpZGVkICJhcyBpcyIgd2l0aG91dCBleHByZXNzIG9yIGltcGxpZWQgd2FycmFudHkuCgkJCTwvc2ltcGFyYT48c2ltcGFyYT4KS0VJVEggUEFDS0FSRCBESVNDTEFJTVMgQUxMIFdBUlJBTlRJRVMgV0lUSCBSRUdBUkQgVE8gVEhJUyBTT0ZUV0FSRSwKSU5DTFVESU5HIEFMTCBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTLCBJTiBOTwpFVkVOVCBTSEFMTCBLRUlUSCBQQUNLQVJEIEJFIExJQUJMRSBGT1IgQU5ZIFNQRUNJQUwsIElORElSRUNUIE9SCkNPTlNFUVVFTlRJQUwgREFNQUdFUyBPUiBBTlkgREFNQUdFUyBXSEFUU09FVkVSIFJFU1VMVElORyBGUk9NIExPU1MgT0YgVVNFLApEQVRBIE9SIFBST0ZJVFMsIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBORUdMSUdFTkNFIE9SIE9USEVSClRPUlRJT1VTIEFDVElPTiwgQVJJU0lORyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBVU0UgT1IKUEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS4KCQkJPC9zaW1wYXJhPgoJCTwvTGVnYWxOb3RpY2U+Cgk8L2FydGhlYWRlcj4KPHNlY3QxPjx0aXRsZT5ERVNDUklQVElPTjwvdGl0bGU+CiAgPHBhcmE+CkZvbnRjb25maWcgaXMgYSBsaWJyYXJ5IGRlc2lnbmVkIHRvIHByb3ZpZGUgc3lzdGVtLXdpZGUgZm9udCBjb25maWd1cmF0aW9uLApjdXN0b21pemF0aW9uIGFuZCBhcHBsaWNhdGlvbiBhY2Nlc3MuCiAgPC9wYXJhPgo8L3NlY3QxPgo8c2VjdDE+PHRpdGxlPkZVTkNUSU9OQUwgT1ZFUlZJRVc8L3RpdGxlPgogIDxwYXJhPgpGb250Y29uZmlnIGNvbnRhaW5zIHR3byBlc3NlbnRpYWwgbW9kdWxlcywgdGhlIGNvbmZpZ3VyYXRpb24gbW9kdWxlIHdoaWNoCmJ1aWxkcyBhbiBpbnRlcm5hbCBjb25maWd1cmF0aW9uIGZyb20gWE1MIGZpbGVzIGFuZCB0aGUgbWF0Y2hpbmcgbW9kdWxlCndoaWNoIGFjY2VwdHMgZm9udCBwYXR0ZXJucyBhbmQgcmV0dXJucyB0aGUgbmVhcmVzdCBtYXRjaGluZyBmb250LgogIDwvcGFyYT4KICA8c2VjdDI+PHRpdGxlPkZPTlQgQ09ORklHVVJBVElPTjwvdGl0bGU+CiAgICA8cGFyYT4KVGhlIGNvbmZpZ3VyYXRpb24gbW9kdWxlIGNvbnNpc3RzIG9mIHRoZSBGY0NvbmZpZyBkYXRhdHlwZSwgbGliZXhwYXQgYW5kCkZjQ29uZmlnUGFyc2Ugd2hpY2ggd2Fsa3Mgb3ZlciBhbiBYTUwgdHJlZSBhbmQgYW1tZW5kcyBhIGNvbmZpZ3VyYXRpb24gd2l0aApkYXRhIGZvdW5kIHdpdGhpbi4gIEZyb20gYW4gZXh0ZXJuYWwgcGVyc3BlY3RpdmUsIGNvbmZpZ3VyYXRpb24gb2YgdGhlCmxpYnJhcnkgY29uc2lzdHMgb2YgZ2VuZXJhdGluZyBhIHZhbGlkIFhNTCB0cmVlIGFuZCBmZWVkaW5nIHRoYXQgdG8KRmNDb25maWdQYXJzZS4gIFRoZSBvbmx5IG90aGVyIG1lY2hhbmlzbSBwcm92aWRlZCB0byBhcHBsaWNhdGlvbnMgZm9yCmNoYW5naW5nIHRoZSBydW5uaW5nIGNvbmZpZ3VyYXRpb24gaXMgdG8gYWRkIGZvbnRzIGFuZCBkaXJlY3RvcmllcyB0byB0aGUKbGlzdCBvZiBhcHBsaWNhdGlvbi1wcm92aWRlZCBmb250IGZpbGVzLiAgCiAgICA8L3BhcmE+PHBhcmE+ClRoZSBpbnRlbnQgaXMgdG8gbWFrZSBmb250IGNvbmZpZ3VyYXRpb25zIHJlbGF0aXZlbHkgc3RhdGljLCBhbmQgc2hhcmVkIGJ5CmFzIG1hbnkgYXBwbGljYXRpb25zIGFzIHBvc3NpYmxlLiAgSXQgaXMgaG9wZWQgdGhhdCB0aGlzIHdpbGwgbGVhZCB0byBtb3JlCnN0YWJsZSBmb250IHNlbGVjdGlvbiB3aGVuIHBhc3NpbmcgbmFtZXMgZnJvbSBvbmUgYXBwbGljYXRpb24gdG8gYW5vdGhlci4KWE1MIHdhcyBjaG9zZW4gYXMgYSBjb25maWd1cmF0aW9uIGZpbGUgZm9ybWF0IGJlY2F1c2UgaXQgcHJvdmlkZXMgYSBmb3JtYXQKd2hpY2ggaXMgZWFzeSBmb3IgZXh0ZXJuYWwgYWdlbnRzIHRvIGVkaXQgd2hpbGUgcmV0YWluaW5nIHRoZSBjb3JyZWN0CnN0cnVjdHVyZSBhbmQgc3ludGF4LgogICAgPC9wYXJhPjxwYXJhPgpGb250IGNvbmZpZ3VyYXRpb24gaXMgc2VwYXJhdGUgZnJvbSBmb250IG1hdGNoaW5nOyBhcHBsaWNhdGlvbnMgbmVlZGluZyB0bwpkbyB0aGVpciBvd24gbWF0Y2hpbmcgY2FuIGFjY2VzcyB0aGUgYXZhaWxhYmxlIGZvbnRzIGZyb20gdGhlIGxpYnJhcnkgYW5kCnBlcmZvcm0gcHJpdmF0ZSBtYXRjaGluZy4gIFRoZSBpbnRlbnQgaXMgdG8gcGVybWl0IGFwcGxpY2F0aW9ucyB0byBwaWNrIGFuZApjaG9vc2UgYXBwcm9wcmlhdGUgZnVuY3Rpb25hbGl0eSBmcm9tIHRoZSBsaWJyYXJ5IGluc3RlYWQgb2YgZm9yY2luZyB0aGVtIHRvCmNob29zZSBiZXR3ZWVuIHRoaXMgbGlicmFyeSBhbmQgYSBwcml2YXRlIGNvbmZpZ3VyYXRpb24gbWVjaGFuaXNtLiAgVGhlIGhvcGUKaXMgdGhhdCB0aGlzIHdpbGwgZW5zdXJlIHRoYXQgY29uZmlndXJhdGlvbiBvZiBmb250cyBmb3IgYWxsIGFwcGxpY2F0aW9ucwpjYW4gYmUgY2VudHJhbGl6ZWQgaW4gb25lIHBsYWNlLiAgQ2VudHJhbGl6aW5nIGZvbnQgY29uZmlndXJhdGlvbiB3aWxsCnNpbXBsaWZ5IGFuZCByZWd1bGFyaXplIGZvbnQgaW5zdGFsbGF0aW9uIGFuZCBjdXN0b21pemF0aW9uLgogICAgPC9wYXJhPgogIDwvc2VjdDI+CiAgPHNlY3QyPgogICAgPHRpdGxlPkZPTlQgUFJPUEVSVElFUzwvdGl0bGU+CiAgICA8cGFyYT4KV2hpbGUgZm9udCBwYXR0ZXJucyBtYXkgY29udGFpbiBlc3NlbnRpYWxseSBhbnkgcHJvcGVydGllcywgdGhlcmUgYXJlIHNvbWUKd2VsbCBrbm93biBwcm9wZXJ0aWVzIHdpdGggYXNzb2NpYXRlZCB0eXBlcy4gIEZvbnRjb25maWcgdXNlcyBzb21lIG9mIHRoZXNlCnByb3BlcnRpZXMgZm9yIGZvbnQgbWF0Y2hpbmcgYW5kIGZvbnQgY29tcGxldGlvbi4gIE90aGVycyBhcmUgcHJvdmlkZWQgYXMgYQpjb252ZW5pZW5jZSBmb3IgdGhlIGFwcGxpY2F0aW9ucyByZW5kZXJpbmcgbWVjaGFuaXNtLgogICAgPC9wYXJhPgogICAgPHByb2dyYW1saXN0aW5nPgogICAgICAgICAgICAgICAgIFByb3BlcnR5IERlZmluaXRpb25zCgogICAgUHJvcGVydHkgICAgQ1BQIFN5bWJvbCAgICAgIFR5cGUgICAgRGVzY3JpcHRpb24KICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgIGZhbWlseSAgICAgICAgIEZDX0ZBTUlMWSAgICAgICAgICAgIFN0cmluZyAgRm9udCBmYW1pbHkgbmFtZQogICAgc3R5bGUgICAgICAgICAgRkNfU1RZTEUgICAgICAgICAgICAgU3RyaW5nICBGb250IHN0eWxlLiBPdmVycmlkZXMgd2VpZ2h0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBzbGFudAogICAgc2xhbnQgICAgICAgICAgRkNfU0xBTlQgICAgICAgICAgICAgSW50ICAgICBJdGFsaWMsIG9ibGlxdWUgb3Igcm9tYW4KICAgIHdlaWdodCAgICAgICAgIEZDX1dFSUdIVCAgICAgICAgICAgIEludCAgICAgTGlnaHQsIG1lZGl1bSwgZGVtaWJvbGQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvbGQgb3IgYmxhY2sKICAgIHNpemUgICAgICAgICAgIEZDX1NJWkUgICAgICAgICAgICAgIERvdWJsZSAgUG9pbnQgc2l6ZQogICAgYXNwZWN0ICAgICAgICAgRkNfQVNQRUNUICAgICAgICAgICAgRG91YmxlICBTdHJldGNoZXMgZ2x5cGhzIGhvcml6b250YWxseQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWZvcmUgaGludGluZwogICAgcGl4ZWxzaXplICAgICAgRkNfUElYRUxfU0laRSAgICAgICAgRG91YmxlICBQaXhlbCBzaXplCiAgICBzcGFjaW5nICAgICAgICBGQ19TUEFDSU5HICAgICAgICAgICBJbnQgICAgIFByb3BvcnRpb25hbCwgbW9ub3NwYWNlIG9yCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXJjZWxsCiAgICBmb3VuZHJ5ICAgICAgICBGQ19GT1VORFJZICAgICAgICAgICBTdHJpbmcgIEZvbnQgZm91bmRyeSBuYW1lCiAgICBhbnRpYWxpYXMgICAgICBGQ19BTlRJQUxJQVMgICAgICAgICBCb29sICAgIFdoZXRoZXIgZ2x5cGhzIGNhbiBiZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbnRpYWxpYXNlZAogICAgaGludGluZyAgICAgICAgRkNfSElOVElORyAgICAgICAgICAgQm9vbCAgICBXaGV0aGVyIHRoZSByYXN0ZXJpemVyIHNob3VsZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2UgaGludGluZwogICAgdmVydGljYWxsYXlvdXQgRkNfVkVSVElDQUxfTEFZT1VUICAgQm9vbCAgICBVc2UgdmVydGljYWwgbGF5b3V0CiAgICBhdXRvaGludCAgICAgICBGQ19BVVRPSElOVCAgICAgICAgICBCb29sICAgIFVzZSBhdXRvaGludGVyIGluc3RlYWQgb2YKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9ybWFsIGhpbnRlcgogICAgZ2xvYmFsYWR2YW5jZSAgRkNfR0xPQkFMX0FEVkFOQ0UgICAgQm9vbCAgICBVc2UgZm9udCBnbG9iYWwgYWR2YW5jZSBkYXRhCiAgICBmaWxlICAgICAgICAgICBGQ19GSUxFICAgICAgICAgICAgICBTdHJpbmcgIFRoZSBmaWxlbmFtZSBob2xkaW5nIHRoZSBmb250CiAgICBpbmRleCAgICAgICAgICBGQ19JTkRFWCAgICAgICAgICAgICBJbnQgICAgIFRoZSBpbmRleCBvZiB0aGUgZm9udCB3aXRoaW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIGZpbGUKICAgIGZ0ZmFjZSAgICAgICAgIEZDX0ZUX0ZBQ0UgICAgICAgICAgIEZUX0ZhY2UgVXNlIHRoZSBzcGVjaWZpZWQgRnJlZVR5cGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFjZSBvYmplY3QKICAgIHJhc3Rlcml6ZXIgICAgIEZDX1JBU1RFUklaRVIgICAgICAgIFN0cmluZyAgV2hpY2ggcmFzdGVyaXplciBpcyBpbiB1c2UKICAgIG91dGxpbmUgICAgICAgIEZDX09VVExJTkUgICAgICAgICAgIEJvb2wgICAgV2hldGhlciB0aGUgZ2x5cGhzIGFyZSBvdXRsaW5lcwogICAgc2NhbGFibGUgICAgICAgRkNfU0NBTEFCTEUgICAgICAgICAgQm9vbCAgICBXaGV0aGVyIGdseXBocyBjYW4gYmUgc2NhbGVkCiAgICBzY2FsZSAgICAgICAgICBGQ19TQ0FMRSAgICAgICAgICAgICBEb3VibGUgIFNjYWxlIGZhY3RvciBmb3IgcG9pbnQtPnBpeGVsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnZlcnNpb25zCiAgICBkcGkgICAgICAgICAgICBGQ19EUEkgICAgICAgICAgICAgICBEb3VibGUgIFRhcmdldCBkb3RzIHBlciBpbmNoCiAgICByZ2JhICAgICAgICAgICBGQ19SR0JBICAgICAgICAgICAgICBJbnQgICAgIHVua25vd24sIHJnYiwgYmdyLCB2cmdiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YmdyLCBub25lIC0gc3VicGl4ZWwgZ2VvbWV0cnkKICAgIG1pbnNwYWNlICAgICAgIEZDX01JTlNQQUNFICAgICAgICAgIEJvb2wgICAgRWxpbWluYXRlIGxlYWRpbmcgZnJvbSBsaW5lCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwYWNpbmcKICAgIGNoYXJzZXQgICAgICAgIEZDX0NIQVJTRVQgICAgICAgICAgIENoYXJTZXQgVW5pY29kZSBjaGFycyBlbmNvZGVkIGJ5CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBmb250CiAgICBsYW5nICAgICAgICAgICBGQ19MQU5HICAgICAgICAgICAgICBTdHJpbmcgIExpc3Qgb2YgUkZDLTMwNjYtc3R5bGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFuZ3VhZ2VzIHRoaXMgZm9udCBzdXBwb3J0cwogICAgPC9wcm9ncmFtbGlzdGluZz4KICA8L3NlY3QyPgo8L3NlY3QxPgo8c2VjdDE+PHRpdGxlPkRhdGF0eXBlczwvdGl0bGU+CiAgPHBhcmE+CkZvbnRjb25maWcgdXNlcyBhYnN0cmFjdCBkYXRhdHlwZXMgdG8gaGlkZSBpbnRlcm5hbCBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzCmZvciBtb3N0IGRhdGEgc3RydWN0dXJlcy4gIEEgZmV3IHN0cnVjdHVyZXMgYXJlIGV4cG9zZWQgd2hlcmUgYXBwcm9wcmlhdGUuCiAgPC9wYXJhPgogIDxzZWN0Mj48dGl0bGU+RmNDaGFyOCwgRmNDaGFyMTYsIEZjQ2hhcjMyLCBGY0Jvb2w8L3RpdGxlPgogICAgPHBhcmE+ClRoZXNlIGFyZSBwcmltaXRpdmUgZGF0YXR5cGVzOyB0aGUgRmNDaGFyKiB0eXBlcyBob2xkIHByZWNpc2VseSB0aGUgbnVtYmVyCm9mIGJpdHMgc3RhdGVkIChpZiBzdXBwb3J0ZWQgYnkgdGhlIEMgaW1wbGVtZW50YXRpb24pLiAgRmNCb29sIGhvbGRzCm9uZSBvZiB0d28gQ1BQIHN5bWJvbHM6IEZjRmFsc2Ugb3IgRmNUcnVlLgogICAgPC9wYXJhPgogIDwvc2VjdDI+CiAgPHNlY3QyPjx0aXRsZT5GY01hdHJpeDwvdGl0bGU+CiAgICA8cGFyYT4KQW4gRmNNYXRyaXggaG9sZHMgYW4gYWZmaW5lIHRyYW5zZm9ybWF0aW9uLCB1c3VhbGx5IHVzZWQgdG8gcmVzaGFwZSBnbHlwaHMuCkEgc21hbGwgc2V0IG9mIG1hdHJpeCBvcGVyYXRpb25zIGFyZSBwcm92aWRlZCB0byBtYW5pcHVsYXRlIHRoZXNlLgogICAgPHByb2dyYW1saXN0aW5nPgogICAgICAgIHR5cGVkZWYgc3RydWN0IF9GY01hdHJpeCB7CiAgICAgICAgICAgICAgICBkb3VibGUgeHgsIHh5LCB5eCwgeXk7CiAgICAgICAgfSBGY01hdHJpeDsKICAgIDwvcHJvZ3JhbWxpc3Rpbmc+CiAgICA8L3BhcmE+CiAgPC9zZWN0Mj4KICA8c2VjdDI+PHRpdGxlPkZjQ2hhclNldDwvdGl0bGU+CiAgICA8cGFyYT4KQW4gRmNDaGFyU2V0IGlzIGFuIGFic3RyYWN0IHR5cGUgdGhhdCBob2xkcyB0aGUgc2V0IG9mIGVuY29kZWQgdW5pY29kZSBjaGFycwppbiBhIGZvbnQuICBPcGVyYXRpb25zIHRvIGJ1aWxkIGFuZCBjb21wYXJlIHRoZXNlIHNldHMgYXJlIHByb3ZpZGVkLgogICAgPC9wYXJhPgogIDwvc2VjdDI+CiAgPHNlY3QyPjx0aXRsZT5GY1R5cGU8L3RpdGxlPgogICAgPHBhcmE+ClRhZ3MgdGhlIGtpbmQgb2YgZGF0YSBzdG9yZWQgaW4gYW4gRmNWYWx1ZS4KICAgIDwvcGFyYT4KICA8L3NlY3QyPgogIDxzZWN0Mj48dGl0bGU+RmNWYWx1ZTwvdGl0bGU+CiAgICA8cGFyYT4KQW4gRmNWYWx1ZSBvYmplY3QgaG9sZHMgYSBzaW5nbGUgdmFsdWUgd2l0aCBvbmUgb2YgYSBudW1iZXIgb2YgZGlmZmVyZW50CnR5cGVzLiAgVGhlICd0eXBlJyB0YWcgaW5kaWNhdGVzIHdoaWNoIG1lbWJlciBpcyB2YWxpZC4KICAgIDxwcm9ncmFtbGlzdGluZz4KICAgICAgICB0eXBlZGVmIHN0cnVjdCBfRmNWYWx1ZSB7CiAgICAgICAgICAgICAgICBGY1R5cGUgdHlwZTsKICAgICAgICAgICAgICAgIHVuaW9uIHsKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRmNDaGFyOCAqczsKICAgICAgICAgICAgICAgICAgICAgICAgaW50IGk7CiAgICAgICAgICAgICAgICAgICAgICAgIEZjQm9vbCBiOwogICAgICAgICAgICAgICAgICAgICAgICBkb3VibGUgZDsKICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgRmNNYXRyaXggKm07CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEZjQ2hhclNldCAqYzsKICAgICAgICAgICAgICAgIH0gdTsKICAgICAgICB9IEZjVmFsdWU7CiAgICA8L3Byb2dyYW1saXN0aW5nPgogICAgPHByb2dyYW1saXN0aW5nPgogICAgICAgICAgICAgICAgICBGY1ZhbHVlIE1lbWJlcnMKCiAgICAgICAgVHlwZSAgICAgICAgICAgIFVuaW9uIG1lbWJlciAgICBEYXRhdHlwZQogICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgICAgRmNUeXBlVm9pZCAgICAgIChub25lKSAgICAgICAgICAobm9uZSkKICAgICAgICBGY1R5cGVJbnRlZ2VyICAgaSAgICAgICAgICAgICAgIGludAogICAgICAgIEZjVHlwZURvdWJsZSAgICBkICAgICAgICAgICAgICAgZG91YmxlCiAgICAgICAgRmNUeXBlU3RyaW5nICAgIHMgICAgICAgICAgICAgICBjaGFyICoKICAgICAgICBGY1R5cGVCb29sICAgICAgYiAgICAgICAgICAgICAgIGIKICAgICAgICBGY1R5cGVNYXRyaXggICAgbSAgICAgICAgICAgICAgIEZjTWF0cml4ICoKICAgICAgICBGY1R5cGVDaGFyU2V0ICAgYyAgICAgICAgICAgICAgIEZjQ2hhclNldCAqCiAgICA8L3Byb2dyYW1saXN0aW5nPgogICAgPC9wYXJhPgogIDwvc2VjdDI+CiAgPHNlY3QyPjx0aXRsZT5GY1BhdHRlcm48L3RpdGxlPgogICAgPHBhcmE+CmhvbGRzIGEgc2V0IG9mIG5hbWVzIHdpdGggYXNzb2NpYXRlZCB2YWx1ZSBsaXN0czsgZWFjaCBuYW1lIHJlZmVycyB0byBhCnByb3BlcnR5IG9mIGEgZm9udC4gIEZjUGF0dGVybnMgYXJlIHVzZWQgYXMgaW5wdXRzIHRvIHRoZSBtYXRjaGluZyBjb2RlIGFzCndlbGwgYXMgaG9sZGluZyBpbmZvcm1hdGlvbiBhYm91dCBzcGVjaWZpYyBmb250cy4gIEVhY2ggcHJvcGVydHkgY2FuIGhvbGQKb25lIG9yIG1vcmUgdmFsdWVzOyBjb252ZW50aW9uYWxseSBhbGwgb2YgdGhlIHNhbWUgdHlwZSwgYWx0aG91Z2ggdGhlCmludGVyZmFjZSBkb2Vzbid0IGRlbWFuZCB0aGF0LgogICAgPC9wYXJhPgogIDwvc2VjdDI+CiAgPHNlY3QyPjx0aXRsZT5GY0ZvbnRTZXQ8L3RpdGxlPgogICAgPHBhcmE+CiAgICA8cHJvZ3JhbWxpc3Rpbmc+CiAgICAgICAgdHlwZWRlZiBzdHJ1Y3QgX0ZjRm9udFNldCB7CiAgICAgICAgICAgICAgICBpbnQgbmZvbnQ7CiAgICAgICAgICAgICAgICBpbnQgc2ZvbnQ7CiAgICAgICAgICAgICAgICBGY1BhdHRlcm4gKipmb250czsKICAgICAgICB9IEZjRm9udFNldDsKICAgIDwvcHJvZ3JhbWxpc3Rpbmc+CkFuIEZjRm9udFNldCBjb250YWlucyBhIGxpc3Qgb2YgRmNQYXR0ZXJucy4gIEludGVybmFsbHkgZm9udGNvbmZpZyB1c2VzIHRoaXMKZGF0YSBzdHJ1Y3R1cmUgdG8gaG9sZCBzZXRzIG9mIGZvbnRzLiAgRXh0ZXJuYWxseSwgZm9udGNvbmZpZyByZXR1cm5zIHRoZQpyZXN1bHRzIG9mIGxpc3RpbmcgZm9udHMgaW4gdGhpcyBmb3JtYXQuICAnbmZvbnQnIGhvbGRzIHRoZSBudW1iZXIgb2YKcGF0dGVybnMgaW4gdGhlICdmb250cycgYXJyYXk7ICdzZm9udCcgaXMgdXNlZCB0byBpbmRpY2F0ZSB0aGUgc2l6ZSBvZiB0aGF0CmFycmF5LgogICAgPC9wYXJhPgogIDwvc2VjdDI+CiAgPHNlY3QyPjx0aXRsZT5GY1N0clNldCwgRmNTdHJMaXN0PC90aXRsZT4KICAgIDxwYXJhPgpGY1N0clNldCBob2xkcyBhIGxpc3Qgb2Ygc3RyaW5ncyB0aGF0IGNhbiBiZSBhcHBlbmRlZCB0byBhbmQgZW51bWVyYXRlZC4KSXRzIHVuaXF1ZSBjaGFyYWN0ZXJpc3RpYyBpcyB0aGF0IHRoZSBlbnVtZXJhdGlvbiB3b3JrcyBldmVuIHdoaWxlIHN0cmluZ3MKYXJlIGFwcGVuZGVkIGR1cmluZyBlbnVtZXJhdGlvbi4gIEZjU3RyTGlzdCBpcyB1c2VkIGR1cmluZyBlbnVtZXJhdGlvbiB0bwpzYWZlbHkgYW5kIGNvcnJlY3RseSB3YWxrIHRoZSBsaXN0IG9mIHN0cmluZ3MgZXZlbiB3aGlsZSB0aGF0IGxpc3QgaXMgZWRpdGVkCmluIHRoZSBtaWRkbGUgb2YgZW51bWVyYXRpb24uCiAgICA8L3BhcmE+CiAgPC9zZWN0Mj4KICA8c2VjdDI+PHRpdGxlPkZjT2JqZWN0U2V0PC90aXRsZT4KICAgIDxwYXJhPgogICAgICA8cHJvZ3JhbWxpc3Rpbmc+CiAgICAgICAgdHlwZWRlZiBzdHJ1Y3QgX0ZjT2JqZWN0U2V0IHsKICAgICAgICAgICAgICAgIGludCBub2JqZWN0OwogICAgICAgICAgICAgICAgaW50IHNvYmplY3Q7CiAgICAgICAgICAgICAgICBjb25zdCBjaGFyICoqb2JqZWN0czsKICAgICAgICB9IEZjT2JqZWN0U2V0OwogICAgICA8L3Byb2dyYW1saXN0aW5nPgpob2xkcyBhIHNldCBvZiBuYW1lcyBhbmQgaXMgdXNlZCB0byBzcGVjaWZ5IHdoaWNoIGZpZWxkcyBmcm9tIGZvbnRzIGFyZQpwbGFjZWQgaW4gdGhlIHRoZSBsaXN0IG9mIHJldHVybmVkIHBhdHRlcm5zIHdoZW4gbGlzdGluZyBmb250cy4KICAgIDwvcGFyYT4KICA8L3NlY3QyPgogIDxzZWN0Mj48dGl0bGU+RmNPYmplY3RUeXBlPC90aXRsZT4KICAgIDxwYXJhPgogICAgICA8cHJvZ3JhbWxpc3Rpbmc+CiAgICAgICAgdHlwZWRlZiBzdHJ1Y3QgX0ZjT2JqZWN0VHlwZSB7CiAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpvYmplY3Q7CiAgICAgICAgICAgICAgICBGY1R5cGUgdHlwZTsKICAgICAgICB9IEZjT2JqZWN0VHlwZTsKICAgICAgPC9wcm9ncmFtbGlzdGluZz4KbWFya3MgdGhlIHR5cGUgb2YgYSBwYXR0ZXJuIGVsZW1lbnQgZ2VuZXJhdGVkIHdoZW4gcGFyc2luZyBmb250IG5hbWVzLgpBcHBsaWNhdGlvbnMgY2FuIGFkZCBuZXcgb2JqZWN0IHR5cGVzIHNvIHRoYXQgZm9udCBuYW1lcyBtYXkgY29udGFpbiB0aGUgbmV3CmVsZW1lbnRzLgogICAgPC9wYXJhPgogIDwvc2VjdDI+CiAgPHNlY3QyPjx0aXRsZT5GY0NvbnN0YW50PC90aXRsZT4KICAgIDxwYXJhPgogICAgICA8cHJvZ3JhbWxpc3Rpbmc+CiAgICAgICAgdHlwZWRlZiBzdHJ1Y3QgX0ZjQ29uc3RhbnQgewogICAgICAgICAgICBjb25zdCBGY0NoYXI4ICpuYW1lOwogICAgICAgICAgICBjb25zdCBjaGFyICpvYmplY3Q7CiAgICAgICAgICAgIGludCB2YWx1ZTsKICAgICAgICB9IEZjQ29uc3RhbnQ7CiAgICAgIDwvcHJvZ3JhbWxpc3Rpbmc+ClByb3ZpZGVzIGZvciBzeW1ib2xpYyBjb25zdGFudHMgZm9yIG5ldyBwYXR0ZXJuIGVsZW1lbnRzLiAgV2hlbiAnbmFtZScgaXMKc2VlbiBpbiBhIGZvbnQgbmFtZSwgYW4gJ29iamVjdCcgZWxlbWVudCBpcyBjcmVhdGVkIHdpdGggdmFsdWUgJ3ZhbHVlJy4KICAgIDwvcGFyYT4KICA8L3NlY3QyPgogIDxzZWN0Mj48dGl0bGU+RmNCbGFua3M8L3RpdGxlPgogICAgPHBhcmE+CmhvbGRzIGEgbGlzdCBvZiBVbmljb2RlIGNoYXJzIHdoaWNoIGFyZSBleHBlY3RlZCB0byBiZSBibGFuazsgdW5leHBlY3RlZGx5CmJsYW5rIGNoYXJzIGFyZSBhc3N1bWVkIHRvIGJlIGludmFsaWQgYW5kIGFyZSBlbGlkZWQgZnJvbSB0aGUgY2hhcnNldAphc3NvY2lhdGVkIHdpdGggdGhlIGZvbnQuCiAgICA8L3BhcmE+CiAgPC9zZWN0Mj4KICA8c2VjdDI+PHRpdGxlPkZjRmlsZUNhY2hlPC90aXRsZT4KICAgIDxwYXJhPgpob2xkcyB0aGUgcGVyLXVzZXIgY2FjaGUgaW5mb3JtYXRpb24gZm9yIHVzZSB3aGlsZSBsb2FkaW5nIHRoZSBmb250CmRhdGFiYXNlLiBUaGlzIGlzIGJ1aWx0IGF1dG9tYXRpY2FsbHkgZm9yIHRoZSBjdXJyZW50IGNvbmZpZ3VyYXRpb24gd2hlbgp0aGF0IGlzIGxvYWRlZC4gIEFwcGxpY2F0aW9ucyBtdXN0IGFsd2F5cyBwYXNzICcwJyB3aGVuIG9uZSBpcyByZXF1ZXN0ZWQuCiAgICA8L3BhcmE+CiAgPC9zZWN0Mj4KICA8c2VjdDI+PHRpdGxlPkZjQ29uZmlnPC90aXRsZT4KICAgIDxwYXJhPgpob2xkcyBhIGNvbXBsZXRlIGNvbmZpZ3VyYXRpb24gb2YgdGhlIGxpYnJhcnk7IHRoZXJlIGlzIG9uZSBkZWZhdWx0CmNvbmZpZ3VyYXRpb24sIG90aGVyIGNhbiBiZSBjb25zdHJ1Y3RlZCBmcm9tIFhNTCBkYXRhIHN0cnVjdHVyZXMuICBBbGwKcHVibGljIGVudHJ5IHBvaW50cyB0aGF0IG5lZWQgZ2xvYmFsIGRhdGEgY2FuIHRha2UgYW4gb3B0aW9uYWwgRmNDb25maWcqCmFyZ3VtZW50OyBwYXNzaW5nIDAgdXNlcyB0aGUgZGVmYXVsdCBjb25maWd1cmF0aW9uLiAgRmNDb25maWcgb2JqZWN0cyBob2xkIHR3bwpzZXRzIG9mIGZvbnRzLCB0aGUgZmlyc3QgY29udGFpbnMgdGhvc2Ugc3BlY2lmaWVkIGJ5IHRoZSBjb25maWd1cmF0aW9uLCB0aGUKc2Vjb25kIHNldCBob2xkcyB0aG9zZSBhZGRlZCBieSB0aGUgYXBwbGljYXRpb24gYXQgcnVuLXRpbWUuICBJbnRlcmZhY2VzCnRoYXQgbmVlZCB0byByZWZlcmVuY2UgYSBwYXJ0aWN1bGF0IHNldCB1c2Ugb25lIG9mIHRoZSBGY1NldE5hbWUgZW51bWVyYXRlZAp2YWx1ZXMuCiAgICA8L3BhcmE+CiAgPC9zZWN0Mj4KICA8c2VjdDI+PHRpdGxlPkZjU2V0TmFtZTwvdGl0bGU+CiAgICA8cGFyYT4KU3BlY2lmaWVzIG9uZSBvZiB0aGUgdHdvIHNldHMgb2YgZm9udHMgYXZhaWxhYmxlIGluIGEgY29uZmlndXJhdGlvbjsKRmNTZXRTeXN0ZW0gZm9yIHRob3NlIGZvbnRzIHNwZWNpZmllZCBpbiB0aGUgY29uZmlndXJhdGlvbiBhbmQKRmNTZXRBcHBsaWNhdGlvbiB3aGljaCBob2xkcyBmb250cyBwcm92aWRlZCBieSB0aGUgYXBwbGljYXRpb24uCiAgICA8L3BhcmE+CiAgPC9zZWN0Mj4KICA8c2VjdDI+PHRpdGxlPkZjUmVzdWx0PC90aXRsZT4KICAgIDxwYXJhPgpVc2VkIGFzIGEgcmV0dXJuIHR5cGUgZm9yIGZ1bmN0aW9ucyBtYW5pcHVsYXRpbmcgRmNQYXR0ZXJuIG9iamVjdHMuCiAgICA8cHJvZ3JhbWxpc3Rpbmc+CiAgICAgIEZjUmVzdWx0IFZhbHVlcwogICAgICAgIFJlc3VsdCBDb2RlICAgICAgICAgICAgIE1lYW5pbmcKICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAgICAgIEZjUmVzdWx0TWF0Y2ggICAgICAgICAgIE9iamVjdCBleGlzdHMgd2l0aCB0aGUgc3BlY2lmaWVkIElECiAgICAgICAgRmNSZXN1bHROb01hdGNoICAgICAgICAgT2JqZWN0IGRvZXNuJ3QgZXhpc3QgYXQgYWxsCiAgICAgICAgRmNSZXN1bHRUeXBlTWlzbWF0Y2ggICAgT2JqZWN0IGV4aXN0cywgYnV0IHRoZSB0eXBlIGRvZXNuJ3QgbWF0Y2gKICAgICAgICBGY1Jlc3VsdE5vSWQgICAgICAgICAgICBPYmplY3QgZXhpc3RzLCBidXQgaGFzIGZld2VyIHZhbHVlcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoYW4gc3BlY2lmaWVkCiAgICA8L3Byb2dyYW1saXN0aW5nPgogICAgPC9wYXJhPgogIDwvc2VjdDI+CiAgPHNlY3QyPjx0aXRsZT5GY0F0b21pYzwvdGl0bGU+CiAgICA8cGFyYT4KVXNlZCBmb3IgbG9ja2luZyBhY2Nlc3MgdG8gY29uZmlnIGZpbGVzLiAgUHJvdmlkZXMgYSBzYWZlIHdheSB0byB1cGRhdGUKY29uZmlndXJhdGlvbiBmaWxlcy4KICAgIDwvcGFyYT4KICA8L3NlY3QyPgo8L3NlY3QxPgo8c2VjdDE+PHRpdGxlPkZVTkNUSU9OUzwvdGl0bGU+CiAgPHBhcmE+ClRoZXNlIGFyZSBncm91cGVkIGJ5IGZ1bmN0aW9uYWxpdHksIG9mdGVuIHVzaW5nIHRoZSBtYWluIGRhdGF0eXBlIGJlaW5nCm1hbmlwdWxhdGVkLgogIDwvcGFyYT4KICA8c2VjdDI+PHRpdGxlPkluaXRpYWxpemF0aW9uPC90aXRsZT4KICAgIDxwYXJhPgpUaGVzZSBmdW5jdGlvbnMgcHJvdmlkZSBzb21lIGNvbnRyb2wgb3ZlciBob3cgdGhlIGxpYnJhcnkgaXMgaW5pdGlhbGl6ZWQuCiAgICA8L3BhcmE+CiAgICAmZmNpbml0OwogIDwvc2VjdDI+CiAgPHNlY3QyPjx0aXRsZT5GY1BhdHRlcm48L3RpdGxlPgogICAgPHBhcmE+CkFuIEZjUGF0dGVybiBpcyBhbiBvcGFxdWUgdHlwZSB0aGF0IGhvbGRzIGJvdGggcGF0dGVybnMgdG8gbWF0Y2ggYWdhaW5zdCB0aGUKYXZhaWxhYmxlIGZvbnRzLCBhcyB3ZWxsIGFzIHRoZSBpbmZvcm1hdGlvbiBhYm91dCBlYWNoIGZvbnQuCiAgICA8L3BhcmE+CiAgICAmZmNwYXR0ZXJuOwogIDwvc2VjdDI+CiAgPHNlY3QyPjx0aXRsZT5GY0ZvbnRTZXQ8L3RpdGxlPgogICAgPHBhcmE+CkFuIEZjRm9udFNldCBzaW1wbHkgaG9sZHMgYSBsaXN0IG9mIHBhdHRlcm5zOyB0aGVzZSBhcmUgdXNlZCB0byByZXR1cm4gdGhlCnJlc3VsdHMgb2YgbGlzdGluZyBhdmFpbGFibGUgZm9udHMuCiAgICA8L3BhcmE+CiAgICAmZmNmb250c2V0OwogIDwvc2VjdDI+CiAgPHNlY3QyPjx0aXRsZT5GY09iamVjdFNldDwvdGl0bGU+CiAgICA8cGFyYT4KQW4gRmNPYmplY3RTZXQgaG9sZHMgYSBsaXN0IG9mIHBhdHRlcm4gcHJvcGVydHkgbmFtZXM7IGl0IGlzIHVzZWQgdG8KaW5kaWNpYXRlIHdoaWNoIHByb3BlcnRpZXMgYXJlIHRvIGJlIHJldHVybmVkIGluIHRoZSBwYXR0ZXJucyBmcm9tCkZjRm9udExpc3QuCiAgICA8L3BhcmE+CiAgICAmZmNvYmplY3RzZXQ7CiAgPC9zZWN0Mj4KICA8c2VjdDI+PHRpdGxlPkZyZWVUeXBlIHNwZWNpZmljIGZ1bmN0aW9uczwvdGl0bGU+CiAgICA8cGFyYT4KV2hpbGUgdGhlIGZvbnRjb25maWcgbGlicmFyeSBkb2Vzbid0IGluc2lzdCB0aGF0IEZyZWVUeXBlIGJlIHVzZWQgYXMgdGhlCnJhc3Rlcml6YXRpb24gbWVjaGFuaXNtIGZvciBmb250cywgaXQgZG9lcyBwcm92aWRlIHNvbWUgY29udmVuaWVuY2UKZnVuY3Rpb25zLgogICAgPC9wYXJhPgogICAgJmZjZnJlZXR5cGU7CiAgPC9zZWN0Mj4KICA8c2VjdDI+PHRpdGxlPkZjVmFsdWU8L3RpdGxlPgogICAgPHBhcmE+CkZjVmFsdWUgaXMgYSBzdHJ1Y3R1cmUgY29udGFpbmluZyBhIHR5cGUgdGFnIGFuZCBhIHVuaW9uIG9mIGFsbCBwb3NzaWJsZQpkYXRhdHlwZXMuICBUaGUgdGFnIGlzIGFuIGVudW0gb2YgdHlwZSAKPGVtcGhhc2lzPkZjVHlwZTwvZW1waGFzaXM+CmFuZCBpcyBpbnRlbmRlZCB0byBwcm92aWRlIGEgbWVhc3VyZSBvZiBydW4tdGltZQp0eXBlY2hlY2tpbmcsIGFsdGhvdWdoIHRoYXQgZGVwZW5kcyBvbiBjYXJlZnVsIHByb2dyYW1taW5nLgogICAgPC9wYXJhPgogICAgJmZjdmFsdWU7CiAgPC9zZWN0Mj4KICA8c2VjdDI+PHRpdGxlPkZjQ2hhclNldDwvdGl0bGU+CiAgICA8cGFyYT4KQW4gRmNDaGFyU2V0IGlzIGEgYm9vbGVhbiBhcnJheSBpbmRpY2F0aW5nIGEgc2V0IG9mIHVuaWNvZGUgY2hhcnMuICBUaG9zZQphc3NvY2lhdGVkIHdpdGggYSBmb250IGFyZSBtYXJrZWQgY29uc3RhbnQgYW5kIGNhbm5vdCBiZSBlZGl0ZWQuCkZjQ2hhclNldHMgbWF5IGJlIHJlZmVyZW5jZSBjb3VudGVkIGludGVybmFsbHkgdG8gcmVkdWNlIG1lbW9yeSBjb25zdW1wdGlvbjsKdGhpcyBtYXkgYmUgdmlzaWJsZSB0byBhcHBsaWNhdGlvbnMgYXMgdGhlIHJlc3VsdCBvZiBGY0NoYXJTZXRDb3B5IG1heQpyZXR1cm4gaXQncyBhcmd1bWVudCwgYW5kIHRoYXQgQ2hhclNldCBtYXkgcmVtYWluIHVubW9kaWZpYWJsZS4KICAgIDwvcGFyYT4KICAgICZmY2NoYXJzZXQ7CiAgPC9zZWN0Mj4KICA8c2VjdDI+PHRpdGxlPkZjTWF0cml4PC90aXRsZT4KICAgIDxwYXJhPgpGY01hdHJpeCBzdHJ1Y3R1cmVzIGhvbGQgYW4gYWZmaW5lIHRyYW5zZm9ybWF0aW9uIGluIG1hdHJpeCBmb3JtLgogICAgPC9wYXJhPgogICAgJmZjbWF0cml4OwogIDwvc2VjdDI+CiAgPHNlY3QyPjx0aXRsZT5GY0NvbmZpZzwvdGl0bGU+CiAgICA8cGFyYT4KQW4gRmNDb25maWcgb2JqZWN0IGhvbGRzIHRoZSBpbnRlcm5hbCByZXByZXNlbnRhdGlvbiBvZiBhIGNvbmZpZ3VyYXRpb24uClRoZXJlIGlzIGEgZGVmYXVsdCBjb25maWd1cmF0aW9uIHdoaWNoIGFwcGxpY2F0aW9ucyBtYXkgdXNlIGJ5IHBhc3NpbmcgMCB0bwphbnkgZnVuY3Rpb24gdXNpbmcgdGhlIGRhdGEgd2l0aGluIGFuIEZjQ29uZmlnLgogICAgPC9wYXJhPgogICAgJmZjY29uZmlnOwogIDwvc2VjdDI+CiAgPHNlY3QyPjx0aXRsZT5GY09iamVjdFR5cGU8L3RpdGxlPgogICAgPHBhcmE+ClByb3ZpZGVzIGZvciBhcHBsY2F0aW9uLXNwZWNpZmllZCBmb250IG5hbWUgb2JqZWN0IHR5cGVzIHNvIHRoYXQgbmV3CnBhdHRlcm4gZWxlbWVudHMgY2FuIGJlIGdlbmVyYXRlZCBmcm9tIGZvbnQgbmFtZXMuCiAgICA8L3BhcmE+CiAgICAmZmNvYmplY3R0eXBlOwogIDwvc2VjdDI+CiAgPHNlY3QyPjx0aXRsZT5GY0NvbnN0YW50PC90aXRsZT4KICAgIDxwYXJhPgpQcm92aWRlcyBmb3IgYXBwbGljYXRpb24tc3BlY2lmaWVkIHN5bWJvbGljIGNvbnN0YW50cyBmb3IgZm9udCBuYW1lcy4KICAgIDwvcGFyYT4KICAgICZmY2NvbnN0YW50OwogIDwvc2VjdDI+CiAgPHNlY3QyPjx0aXRsZT5GY0JsYW5rczwvdGl0bGU+CiAgICA8cGFyYT4KQW4gRmNCbGFua3Mgb2JqZWN0IGhvbGRzIGEgbGlzdCBvZiBVbmljb2RlIGNoYXJzIHdoaWNoIGFyZSBleHBlY3RlZCB0bwpiZSBibGFuayB3aGVuIGRyYXduLiAgV2hlbiBzY2FubmluZyBuZXcgZm9udHMsIGFueSBnbHlwaHMgd2hpY2ggYXJlCmVtcHR5IGFuZCBub3QgaW4gdGhpcyBsaXN0IHdpbGwgYmUgYXNzdW1lZCB0byBiZSBicm9rZW4gYW5kIG5vdCBwbGFjZWQgaW4KdGhlIEZjQ2hhclNldCBhc3NvY2lhdGVkIHdpdGggdGhlIGZvbnQuICBUaGlzIHByb3ZpZGVzIGEgc2lnbmlmaWNhbnRseSBtb3JlCmFjY3VyYXRlIENoYXJTZXQgZm9yIGFwcGxpY2F0aW9ucy4KICAgIDwvcGFyYT4KICAgICZmY2JsYW5rczsKICA8L3NlY3QyPgogIDxzZWN0Mj48dGl0bGU+RmNBdG9taWM8L3RpdGxlPgogICAgPHBhcmE+ClRoZXNlIGZ1bmN0aW9ucyBwcm92aWRlIGEgc2FmZSB3YXkgdG8gdXBkYXRlIGNvbmZpZyBmaWxlcywgYWxsb3dpbmcgb25nb2luZwpyZWFkaW5nIG9mIHRoZSBvbGQgY29uZmlnIGZpbGUgd2hpbGUgbG9ja2VkIGZvciB3cml0aW5nIGFuZCBlbnN1cmluZyB0aGF0IGEKY29uc2lzdGVudCBhbmQgY29tcGxldGUgdmVyc2lvbiBvZiB0aGUgY29uZmlnIGZpbGUgaXMgYWx3YXlzIGF2YWlsYWJsZS4KICAgIDwvcGFyYT4KICAgICZmY2F0b21pYzsKICA8L3NlY3QyPgogIDxzZWN0Mj48dGl0bGU+RmlsZSBhbmQgRGlyZWN0b3J5IHJvdXRpbmVzPC90aXRsZT4KICAgIDxwYXJhPgpUaGVzZSByb3V0aW5lcyB3b3JrIHdpdGggZm9udCBmaWxlcyBhbmQgZGlyZWN0b3JpZXMsIGluY2x1ZGluZyBmb250CmRpcmVjdG9yeSBjYWNoZSBmaWxlcy4KICAgIDwvcGFyYT4KICAgICZmY2ZpbGU7CiAgPC9zZWN0Mj4KICA8c2VjdDI+PHRpdGxlPkZjU3RyU2V0IGFuZCBGY1N0ckxpc3Q8L3RpdGxlPgogICAgPHBhcmE+CkEgZGF0YSBzdHJ1Y3R1cmUgZm9yIGVudW1lcmF0aW5nIHN0cmluZ3MsIHVzZWQgdG8gbGlzdCBkaXJlY3RvcmllcyB3aGlsZQpzY2FubmluZyB0aGUgY29uZmlndXJhdGlvbiBhcyBkaXJlY3RvcmllcyBhcmUgYWRkZWQgd2hpbGUgc2Nhbm5pbmcuCiAgICA8L3BhcmE+CiAgICAmZmNzdHJzZXQ7CiAgPC9zZWN0Mj4KICA8c2VjdDI+PHRpdGxlPlN0cmluZyB1dGlsaXRpZXM8L3RpdGxlPgogICAgPHBhcmE+CkZvbnRjb25maWcgbWFuaXB1bGF0ZXMgbWFueSBVVEYtOCBzdHJpbmdzIHJlcHJlc2VudGVkIHdpdGggdGhlIEZjQ2hhcjggdHlwZS4KVGhlc2UgZnVuY3Rpb25zIGFyZSBleHBvc2VkIHRvIGhlbHAgYXBwbGljYXRpb25zIGRlYWwgd2l0aCB0aGVzZSBVVEYtOApzdHJpbmdzIGluIGEgbG9jYWxlLWluc2Vuc2l0aXZlIG1hbm5lci4KICAgIDwvcGFyYT4KICAgICZmY3N0cmluZzsKICA8L3NlY3QyPgo8L3NlY3QxPgo8L2FydGljbGU+Cg==