ZGlmZiAtLWdpdCBhL3J1bnRpbWUvZG9jL2ZhcnNpLnR4dCBiL3J1bnRpbWUvZG9jL2ZhcnNpLnR4dAppbmRleCA0OTM3MTRlLi4yNzI5ODU5IDEwMDY0NAotLS0gYS9ydW50aW1lL2RvYy9mYXJzaS50eHQKKysrIGIvcnVudGltZS9kb2MvZmFyc2kudHh0CkBAIC0xLDQgKzEsNCBAQAotKmZhcnNpLnR4dCogICAgIEZvciBWaW0gdmVyc2lvbiA4LjEuICBMYXN0IGNoYW5nZTogMjAxNSBBdWcgMjkKKypmYXJzaS50eHQqICAgICBGb3IgVmltIHZlcnNpb24gOC4xLiAgTGFzdCBjaGFuZ2U6IDIwMTkgRmViIDE2CiAKIAogCQkgIFZJTSBSRUZFUkVOQ0UgTUFOVUFMICAgIGJ5IE1vcnRhemEgR2hhc3NhYiBTaGlyYW4KQEAgLTksMjYxICs5LDEyIEBACiB7VmkgZG9lcyBub3QgaGF2ZSBhbnkgb2YgdGhlc2UgY29tbWFuZHN9CiAKIAkJCQkJCSpFMjcqCi1JbiBvcmRlciB0byB1c2UgcmlnaHQtdG8tbGVmdCBhbmQgRmFyc2kgbWFwcGluZyBzdXBwb3J0LCBpdCBpcyBuZWNlc3NhcnkgdG8KLWNvbXBpbGUgVmltIHdpdGggdGhlIHwrZmFyc2l8IGZlYXR1cmUuCitGYXJzaSBzdXBwb3J0IGhhcyBiZWVuIHJlbW92ZWQgaW4gcGF0Y2ggOC4xLjA5MzIuICBBdCB0aGF0IHRpbWUgaXQgd2FzCitvdXRkYXRlZCBhbmQgdW51c2VkLgogCi1UaGVzZSBmdW5jdGlvbnMgaGF2ZSBiZWVuIG1hZGUgYnkgTW9ydGF6YSBHLiBTaGlyYW4gPHNoaXJhbkBqcHMubmV0PgotCi0KLUludHJvZHVjdGlvbgotLS0tLS0tLS0tLS0tCi1JbiByaWdodC10by1sZWZ0IG9yaWVudGVkIGZpbGVzIHRoZSBjaGFyYWN0ZXJzIGFwcGVhciBvbiB0aGUgc2NyZWVuIGZyb20gcmlnaHQKLXRvIGxlZnQuICBUaGlzIGtpbmQgb2YgZmlsZSBpcyBtb3N0IHVzZWZ1bCB3aGVuIHdyaXRpbmcgRmFyc2kgZG9jdW1lbnRzLAotY29tcG9zaW5nIGZheGVzIG9yIHdyaXRpbmcgRmFyc2kgbWVtb3MuCi0KLVRoZSBjb21tYW5kcywgcHJvbXB0cyBhbmQgaGVscCBmaWxlcyBhcmUgbm90IGluIEZhcnNpLCB0aGVyZWZvcmUgdGhlIHVzZXIKLWludGVyZmFjZSByZW1haW5zIHRoZSBzdGFuZGFyZCBWaSBpbnRlcmZhY2UuCi0KLQotSGlnaGxpZ2h0cwotLS0tLS0tLS0tLQotbyAgRWRpdGluZyBsZWZ0LXRvLXJpZ2h0IGZpbGVzIGFzIGluIHRoZSBvcmlnaW5hbCBWaW0sIG5vIGNoYW5nZS4KLQotbyAgVmlld2luZyBhbmQgZWRpdGluZyBmaWxlcyBpbiByaWdodC10by1sZWZ0IHdpbmRvd3MuICAgRmlsZSBvcmllbnRhdGlvbiBpcwotICAgcGVyIHdpbmRvdywgc28gaXQgaXMgcG9zc2libGUgdG8gdmlldyB0aGUgc2FtZSBmaWxlIGluIHJpZ2h0LXRvLWxlZnQgYW5kCi0gICBsZWZ0LXRvLXJpZ2h0IG1vZGVzLCBzaW11bHRhbmVvdXNseS4KLQotbyAgQ29tcGF0aWJpbGl0eSB0byB0aGUgb3JpZ2luYWwgVmltLiAgIEFsbW9zdCBhbGwgZmVhdHVyZXMgd29yayBpbgotICAgcmlnaHQtdG8tbGVmdCBtb2RlIChzZWUgYnVncyBiZWxvdykuCi0KLW8gIENoYW5naW5nIGtleWJvYXJkIG1hcHBpbmcgYW5kIHJldmVyc2UgaW5zZXJ0IG1vZGVzIHVzaW5nIGEgc2luZ2xlCi0gICBjb21tYW5kLgotCi1vICBCYWNraW5nIGZyb20gcmV2ZXJzZSBpbnNlcnQgbW9kZSB0byB0aGUgY29ycmVjdCBwbGFjZSBpbiB0aGUgZmlsZQotICAgKGlmIHBvc3NpYmxlKS4KLQotbyAgV2hpbGUgaW4gRmFyc2kgbW9kZSwgbnVtYmVycyBhcmUgZW50ZXJlZCBmcm9tIGxlZnQgdG8gcmlnaHQuICBVcG9uIGVudGVyaW5nCi0gICBhIG5vbmUgbnVtYmVyIGNoYXJhY3RlciwgdGhhdCBjaGFyYWN0ZXIgd2lsbCBiZSBpbnNlcnRlZCBqdXN0IGludG8gdGhlCi0gICBsZWZ0IG9mIHRoZSBsYXN0IG51bWJlci4KLQotbyAgTm8gc3BlY2lhbCB0ZXJtaW5hbCB3aXRoIHJpZ2h0LXRvLWxlZnQgY2FwYWJpbGl0aWVzIGlzIHJlcXVpcmVkLiAgVGhlCi0gICByaWdodC10by1sZWZ0IGNoYW5nZXMgYXJlIGNvbXBsZXRlbHkgaGFyZHdhcmUgaW5kZXBlbmRlbnQuICBPbmx5Ci0gICBGYXJzaSBmb250IGlzIG5lY2Vzc2FyeS4KLQotbyAgRmFyc2kga2V5bWFwcGluZyBvbiB0aGUgY29tbWFuZCBsaW5lIGluIHJldmVyc2UgaW5zZXJ0IG1vZGUuCi0KLW8gIFRvZ2dsaW5nIGJldHdlZW4gbGVmdC10by1yaWdodCBhbmQgcmlnaHQtdG8tbGVmdCB2aWEgRjggZnVuY3Rpb24ga2V5LgotCi1vICBUb2dnbGluZyBiZXR3ZWVuIEZhcnNpIElTSVItMzM0MiBzdGFuZGFyZCBlbmNvZGluZyBhbmQgVmltIEZhcnNpIHZpYSBGOQotICAgZnVuY3Rpb24ga2V5LiAgU2luY2UgdGhpcyBtYWtlcyBzZW5zZSBvbmx5IGZvciB0aGUgdGV4dCB3cml0dGVuIGluCi0gICByaWdodC10by1sZWZ0IG1vZGUsIHRoaXMgZnVuY3Rpb24gaXMgYWxzbyBzdXBwb3J0ZWQgb25seSBpbiByaWdodC10by1sZWZ0Ci0gICBtb2RlLgotCi1GYXJzaSBGb250cwkJCQkJKmZhcnNpLWZvbnRzKgotLS0tLS0tLS0tLS0KLQotVGhlIGZvbGxvd2luZyBmaWxlcyBhcmUgZm91bmQgaW4gdGhlIHN1YmRpcmVjdG9yaWVzIG9mIHRoZSAnJFZJTS9mYXJzaS9mb250cycKLWRpcmVjdG9yeToKLQotICAgKyAgZmFyLWEwMS5wY2YgICAgWCBXaW5kb3dzIGZvbnRzIGZvciBVbml4IGluY2x1ZGluZyBMaW51eCBzeXN0ZW1zCi0gICArICBmYXItYTAxLmJmICAgICBYIFdpbmRvd3MgZm9udHMgZm9yIFN1bk9TCi0gICArICBmYXItYTAxLmYxNiAgICBhIHNjcmVlbiBmb250cyBmb3IgVW5peCBpbmNsdWRpbmcgTGludXggc3lzdGVtcwotICAgKyAgZmFyLWEwMS5mb24gICAgYSBtb25vc3BhY2VkIGZvbnRzIGZvciBXaW5kb3dzIE5ULzk1Lzk4Ci0gICArICBmYXItYTAxLmNvbSAgICBhIHNjcmVlbiBmb250cyBmb3IgRE9TCi0KLQotRm9udCBJbnN0YWxsYXRpb24KLS0tLS0tLS0tLS0tLS0tLS0tCi0KLW8gIEluc3RhbGxhdGlvbiBvZiBmb250cyBmb3IgTVMgV2luZG93IHN5c3RlbXMgKE5ULzk1Lzk4KQotCi0gICBGcm9tICdDb250cm9sIFBhbmVsJyBmb2xkZXIsIHN0YXJ0IHRoZSAnRm9udHMnIHByb2dyYW0uICBUaGVuIGZyb20gJ2ZpbGUnCi0gICBtZW51IGl0ZW0gc2VsZWN0ICdJbnN0YWxsIE5ldyBGb250cyAuLi4nLiAgQnJvd3NlIGFuZCBzZWxlY3QgdGhlCi0gICAnZmFyLWEwMS5mb24nLCB0aGVuIGZvbGxvdyB0aGUgaW5zdGFsbGF0aW9uIGd1aWRlLgotICAgTk9URTogc2V2ZXJhbCBwZW9wbGUgaGF2ZSByZXBvcnRlZCB0aGF0IHRoaXMgZG9lcyBub3Qgd29yay4gIFRoZSBzb2x1dGlvbgotICAgaXMgdW5rbm93bi4KLQotbyAgSW5zdGFsbGF0aW9uIG9mIGZvbnRzIGZvciBYIFdpbmRvdyBzeXN0ZW1zIChVbml4L0xpbnV4KQotCi0gICBEZXBlbmRpbmcgb24geW91ciBzeXN0ZW0sIGNvcHkgZmFyLWEwMS5wY2YuWiBvciBmYXItYTAxLnBjZi5neiBpbnRvIGEKLSAgIGRpcmVjdG9yeSBvZiB5b3VyIGNob2ljZS4gIENoYW5nZSB0byB0aGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcgdGhlIEZhcnNpCi0gICBmb250cyBhbmQgZXhlY3V0ZSB0aGUgZm9sbG93aW5nIGNvbW1hbmRzOgotCi0gICA+ICBta2ZvbnRkaXIKLSAgID4gIHhzZXQgK2ZwIHBhdGhfbmFtZV9vZl9mYXJzaV9mb250c19kaXJlY3RvcnkKLQotbyAgSW5zdGFsbGF0aW9uIG9mIGZvbnRzIGZvciBYIFdpbmRvdyBzeXN0ZW1zIChTdW5PUykKLQotICAgQ29weSBmYXItYTAxLmJmIGZvbnQgaW50byBhIGRpcmVjdG9yeSBvZiB5b3VyIGNob2ljZS4KLSAgIENoYW5nZSB0byB0aGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcgdGhlIGZhci1hMDEuZmIgZm9udHMgYW5kCi0gICBleGVjdXRlIHRoZSBmb2xsb3dpbmcgY29tbWFuZHM6Ci0KLSAgID4gIGZsZGZhbWlseQotICAgPiAgeHNldCArZnAgcGF0aF9uYW1lX29mX2ZvbnRzX2RpcmVjdG9yeQotCi1vICBJbnN0YWxsYXRpb24gb2YgQVNDSUkgc2NyZWVuIGZvbnRzIChVbml4L0xpbnV4KQotCi0gICBGb3IgTGludXggc3lzdGVtLCBjb3B5IHRoZSBmYXItYTAxLmYxNiBmb250cyBpbnRvIC91c3IvbGliL2tiZC9jb25zb2xlZm9udHMKLSAgIGRpcmVjdG9yeSBhbmQgZXhlY3V0ZSB0aGUgc2V0Zm9udCBwcm9ncmFtIGFzICJzZXRmb250IGZhci1hMDEuZjE2Ii4gIEZvcgotICAgb3RoZXIgc3lzdGVtcyAoZS5nLiBTQ08gVW5peCksIHBsZWFzZSByZWZlciB0byB0aGUgZm9udHMgaW5zdGFsbGF0aW9uCi0gICBzZWN0aW9uIG9mIHlvdXIgc3lzdGVtIGFkbWluaXN0cmF0aW9uIG1hbnVhbHMuCi0KLW8gIEluc3RhbGxhdGlvbiBvZiBBU0NJSSBzY3JlZW4gZm9udHMgKERPUykKLQotICAgQWZ0ZXIgc3lzdGVtIHBvd2VyIG9uLCBwcmlvciB0byB0aGUgZmlyc3QgdXNlIG9mIFZpbSwgdXBsb2FkIHRoZSBGYXJzaQotICAgZm9udHMgYnkgZXhlY3V0aW5nIHRoZSBmYXItYTAxLmNvbSBmb250IHVwbG9hZGluZyBwcm9ncmFtLgotCi0KLVVzYWdlCi0tLS0tLQotUHJpb3IgdG8gc3RhcnRpbmcgVmltLCB0aGUgZW52aXJvbm1lbnQgaW4gd2hpY2ggVmltIGNhbiBydW4gaW4gRmFyc2kgbW9kZSwKLW11c3QgYmUgc2V0LiAgSW4gYWRkaXRpb24gdG8gaW5zdGFsbGF0aW9uIG9mIEZhcnNpIGZvbnRzLCBmb2xsb3dpbmcgcG9pbnRzCi1yZWZlciB0byBzb21lIG9mIHRoZSBzeXN0ZW0gZW52aXJvbm1lbnRzLCB3aGljaCB5b3UgbWF5IG5lZWQgdG8gc2V0OgotS2V5IGNvZGUgbWFwcGluZywgbG9hZGluZyBncmFwaGljIGNhcmQgaW4gQVNDSUkgc2NyZWVuIG1vZGUsIHNldHRpbmcgdGhlIElPCi1kcml2ZXIgaW4gOCBiaXQgY2xlYW4gbW9kZSAuLi4gLgotCi1vICBTZXR0aW5nIHRoZSBGYXJzaSBmb250cwotCi0gICArICBGb3IgVmltIEdVSSBzZXQgdGhlICdndWlmb250JyB0byBmYXItYTAxLiAgVGhpcyBpcyBkb25lIGJ5IGVudGVyaW5nCi0gICAgICAnOnNldCBndWlmb250PWZhci1hMDEnIGluIHRoZSBWaW0gd2luZG93LgotCi0gICAgICBZb3UgY2FuIGhhdmUgJ2d1aWZvbnQnIHNldCB0byBmYXItYTAxIGJ5IFZpbSBkdXJpbmcgdGhlIFZpbSBzdGFydHVwCi0gICAgICBieSBhcHBlbmRpbmcgdGhlICc6c2V0IGd1aWZvbnQ9ZmFyLWEwMScgaW50byB5b3VyIC52aW1yYyBmaWxlCi0gICAgICAoaW4gY2FzZSBvZiBOVC85NS85OCBwbGF0Zm9ybXMgX3ZpbXJjKS4KLQotICAgICAgVW5kZXIgdGhlIFggV2luZG93IGVudmlyb25tZW50LCB5b3UgY2FuIGFsc28gc3RhcnQgVmltIHdpdGggdGhlCi0gICAgICAnLWZuIGZhci1hMDEnIG9wdGlvbi4KLQotICAgKyAgRm9yIFZpbSB3aXRoaW4gYSB4dGVybSwgc3RhcnQgYSB4dGVybSB3aXRoIHRoZSBGYXJzaSBmb250cyAoZS5nLgotICAgICAga3Rlcm0gLWZuIGZhci1hMDEpLiAgVGhlbiBzdGFydCBWaW0gaW5zaWRlIHRoZSBrdGVybS4KLQotICAgKyAgRm9yIFZpbSB1bmRlciBET1MsIHByaW9yIHRvIHRoZSBmaXJzdCB1c2FnZSBvZiBWaW0sIHVwbG9hZCB0aGUgRmFyc2kKLSAgICAgIGZvbnRzIGJ5IGV4ZWN1dGluZyB0aGUgZmFyLWEwMS5jb20gZm9udHMgdXBsb2FkaW5nIHByb2dyYW0uCi0KLW8gIEZhcnNpIEtleW1hcHBpbmcgQWN0aXZhdGlvbgotCi0gICBUbyBhY3RpdmF0ZSB0aGUgRmFyc2kga2V5bWFwcGluZywgc2V0IGVpdGhlciAnYWx0a2V5bWFwJyBvciAnZmttYXAnLgotICAgVGhpcyBpcyBkb25lIGJ5IGVudGVyaW5nICc6c2V0IGFrbScgb3IgJzpzZXQgZmsnIGluIHRoZSBWaW0gd2luZG93LgotICAgWW91IGNhbiBoYXZlICdhbHRrZXltYXAnIG9yICdma21hcCcgc2V0IGFzIGRlZmF1bHQgYnkgYXBwZW5kaW5nICc6c2V0IGFrbScKLSAgIG9yICc6c2V0IGZrJyBpbiB5b3VyIC52aW1yYyBmaWxlIG9yIF92aW1yYyBpbiBjYXNlIG9mIE5ULzk1Lzk4IHBsYXRmb3Jtcy4KLQotICAgVG8gdHVybiBvZmYgdGhlIEZhcnNpIGtleW1hcHBpbmcgYXMgYSBkZWZhdWx0IHNlY29uZCBsYW5ndWFnZSBrZXltYXBwaW5nLAotICAgcmVzZXQgdGhlICdhbHRrZXltYXAnIGJ5IGVudGVyaW5nICc6c2V0IG5vYWttJy4KLQotbyAgcmlnaHQtdG8tbGVmdCBGYXJzaSBNb2RlCi0KLSAgIEJ5IGRlZmF1bHQgVmltIHN0YXJ0cyBpbiBMZWZ0LXRvLXJpZ2h0IG1vZGUuICBGb2xsb3dpbmcgYXJlIHdheXMgdG8gY2hhbmdlCi0gICB0aGUgd2luZG93IG9yaWVudGF0aW9uOgotCi0gICArIFN0YXJ0IFZpbSB3aXRoIHRoZSAtRiBvcHRpb24gKGUuZy4gdmltIC1GIC4uLikuCi0KLSAgICsgVXNlIHRoZSBGOCBmdW5jdGlvbiBrZXkgdG8gdG9nZ2xlIGJldHdlZW4gbGVmdC10by1yaWdodCBhbmQgcmlnaHQtdG8tbGVmdC4KLQotICAgKyBXaGlsZSBpbiBMZWZ0LXRvLXJpZ2h0IG1vZGUsIGVudGVyICdzZXQgcmwnIGluIHRoZSBjb21tYW5kIGxpbmUgKCdybCcgaXMKLSAgICAgdGhlIGFiYnJldmlhdGlvbiBmb3IgcmlnaHRsZWZ0KS4KLQotICAgKyBQdXQgdGhlICdzZXQgcmwnIGxpbmUgaW4geW91ciAnLnZpbXJjJyBmaWxlIHRvIHN0YXJ0IFZpbSBpbgotICAgICByaWdodC10by1sZWZ0IG1vZGUgcGVybWFuZW50bHkuCi0KLUVuY29kaW5nCi0tLS0tLS0tLQotCi1UaGUgbGV0dGVyIGVuY29kaW5nIHVzZWQgaXMgdGhlIFZpbSBleHRlbmRlZCBJU0lSLTMzNDIgc3RhbmRhcmQgd2l0aCBhIGJ1aWx0Ci1pbiBmdW5jdGlvbiB0byBjb252ZXJ0IGJldHdlZW4gVmltIGV4dGVuZGVkIElTSVItMzM0MiBhbmQgSVNJUi0zMzQyIHN0YW5kYXJkLgotCi1Gb3IgZG9jdW1lbnQgcG9ydGFiaWxpdHkgcmVhc29ucywgdGhlIGxldHRlciBlbmNvZGluZyBpcyBrZXB0IHRoZSBzYW1lIGFjcm9zcwotZGlmZmVyZW50IHBsYXRmb3JtcyAoaS5lLiBVTklYJ3MsIE5ULzk1Lzk4LCBNUyBET1MsIC4uLikuCi0KLQotbyAgS2V5Ym9hcmQKLQotICAgKyAgQ1RSTC1fIGluIGluc2VydC9yZXBsYWNlIG1vZGVzIHRvZ2dsZXMgYmV0d2VlbiBGYXJzaShha20pL0xhdGluCi0gICAgICBtb2RlIGFzIGZvbGxvd3M6Ci0KLSAgICsgIENUUkwtXyBtb3ZlcyB0aGUgY3Vyc29yIHRvIHRoZSBlbmQgb2YgdGhlIHR5cGVkIHRleHQgaW4gZWRpdCBtb2RlLgotCi0gICArICBDVFJMLV8gaW4gY29tbWFuZCBtb2RlIG9ubHkgdG9nZ2xlcyBrZXlib2FyZCBtYXBwaW5nIGJldHdlZW4gRmFyc2koYWttKS8KLSAgICAgIExhdGluLiAgVGhlIEZhcnNpIHRleHQgaXMgdGhlbiBlbnRlcmVkIGluIHJldmVyc2UgaW5zZXJ0IG1vZGUuCi0KLSAgICsgIEY4IC0gVG9nZ2xlcyBiZXR3ZWVuIGxlZnQtdG8tcmlnaHQgYW5kIHJpZ2h0LXRvLWxlZnQuCi0KLSAgICsgIEY5IC0gVG9nZ2xlcyB0aGUgZW5jb2RpbmcgYmV0d2VlbiBJU0lSLTMzNDIgc3RhbmRhcmQgYW5kIFZpbSBleHRlbmRlZAotICAgICAgSVNJUi0zMzQyIChzdXBwb3J0ZWQgb25seSBpbiByaWdodC10by1sZWZ0IG1vZGUpLgotCi0gICArICBLZXlib2FyZCBtYXBwaW5nIGlzIGJhc2VkIG9uIHRoZSBJcmFuaWFuIElTSVJJLTI5MDEgc3RhbmRhcmQuCi0gICAgICBGb2xsb3dpbmcgdGFibGUgc2hvd3MgdGhlIGtleWJvYXJkIG1hcHBpbmcgd2hpbGUgRmFyc2koYWttKSBtb2RlIHNldDoKLQotCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQlgICAxICAyICAzICA0ICA1ICA2ICA3ICA4ICA5ICAwICAtICA9Ci0JoiAgsSAgsiAgsyAgtCAgtSAgtiAgtyAguCAguSAgsCAgrSAgvQotCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQl+ICAhICBAICAjICAkICAlICBeICAmICAqICAoICApICBfICArCi0JfiAgoyAgpyAgriAgpCAgpSAgqiAgrCAg6CAgqCAgqSAg6SAgqwotCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQlxICB3ICBlICByICB0ICB6ICB1ICBpICBvICBwICBbICBdCi0J0yAg0iAgxiAg2SAg2CAg1SAg1iAg4CAgyiAgySAgxyAgiAotCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQlRICBXICBFICBSICBUICBaICBVICBJICBPICBQICB7ICB9Ci0J9yAg9SAg9CAg8yAg8iAg/SAg8CAg9iAgWyAgXSAgeyAgfQotCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQlhICBzICBkICBmICBnICBoICBqICBrICBsICA7ICAnICBcCi0J0SAg0CAg4SAgwyAg3CAgwSAgxSAg3iAg3SAg2iAg2yAg6wotCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQlBICBTICBEICBGICBHICBIICBKICBLICBMICA6ICAiICB8Ci0J+SAg+6Ag/iAg+iAg+CAgwCAg/CAg5iAg5yAguiAguyAg6gotCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQk8ICB5ICB4ICBjICB2ICBiICBuICBtICAsICAuICAvCi0JviAg1yAg1CAgziAgzSAgzCAgyyAgxCAg3yAgpiAgrwotCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQk+ICBZICBYICBDICBWICBCICBOICBNICA8ICA+ICA/Ci0JvCAg8SAg1CAgzyAgzSAgoSAgyyAgwiAgviAgvCAgvwotCS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotTm90ZToKLQmhICBzdGFuZHMgZm9yIEZhcnNpIFBTUCAoYnJlYWsgd2l0aG91dCBzcGFjZSkKLQotCaIgIHN0YW5kcyBmb3IgRmFyc2kgUENOIChmb3IgSEFNWkUgYXR0cmlidXRlKQotCi1SZXN0cmljdGlvbnMKLS0tLS0tLS0tLS0tLQotCi1vICBJbiBpbnNlcnQvcmVwbGFjZSBtb2RlIGFuZCBma21hcCAoRmFyc2kgbW9kZSkgc2V0LCBDVFJMLUIgaXMgbm90Ci0gICBzdXBwb3J0ZWQuCi0KLW8gIElmIHlvdSBjaGFuZ2UgdGhlIGNoYXJhY3RlciBtYXBwaW5nIGJldHdlZW4gTGF0aW4vRmFyc2ksIHRoZSByZWRvIGJ1ZmZlcgotICAgd2lsbCBiZSByZXNldCAoZW1wdGllZCkuICBUaGF0IGlzLCByZWRvIGlzIHZhbGlkIGFuZCB3aWxsIGZ1bmN0aW9uICh1c2luZwotICAgJy4nKSBvbmx5IHdpdGhpbiB0aGUgbW9kZSB5b3UgYXJlIGluLgotCi1vICBXaGlsZSBudW1iZXJzIGFyZSBlbnRlcmVkIGluIEZhcnNpIG1vZGUsIHRoZSByZWRvIGJ1ZmZlciB3aWxsIGJlIHJlc2V0Ci0gICAoZW1wdGllZCkuICBUaGF0IGlzLCB5b3UgY2Fubm90IHJlZG8gdGhlIGxhc3QgY2hhbmdlcyAodXNpbmcgJy4nKSBhZnRlcgotICAgZW50ZXJpbmcgbnVtYmVycy4KLQotbyAgV2hpbGUgaW4gbGVmdC10by1yaWdodCBtb2RlIGFuZCBGYXJzaSBtb2RlIHNldCwgQ1RSTC1SIGlzIG5vdCBzdXBwb3J0ZWQuCi0KLW8gIFdoaWxlIGluIHJpZ2h0LXRvLWxlZnQgbW9kZSwgdGhlIHNlYXJjaCBvbiAnTGF0aW4nIHBhdHRlcm4gZG9lcyBub3Qgd29yaywKLSAgIGV4Y2VwdCBpZiB5b3UgZW50ZXIgdGhlIExhdGluIHNlYXJjaCBwYXR0ZXJuIGluIHJldmVyc2UuCi0KLW8gIEluIGNvbW1hbmQgbW9kZSB0aGVyZSBpcyBubyBzdXBwb3J0IGZvciBlbnRlcmluZyBudW1iZXJzIGZyb20gbGVmdAotICAgdG8gcmlnaHQgYW5kIGFsc28gZm9yIHRoZSBzYWtlIG9mIGZsZXhpYmlsaXR5IHRoZSBrZXltYXBwaW5nIGxvZ2ljIGlzCi0gICByZXN0cmljdGVkLgotCi1vICBVbmRlciB0aGUgWCBXaW5kb3cgZW52aXJvbm1lbnQsIGlmIHlvdSB3YW50IHRvIHJ1biBWaW0gd2l0aGluIGEgeHRlcm0KLSAgIHRlcm1pbmFsIGVtdWxhdG9yIGFuZCBGYXJzaSBtb2RlIHNldCwgeW91IG5lZWQgdG8gaGF2ZSBhbiBBTlNJIGNvbXBhdGlibGUKLSAgIHh0ZXJtIHRlcm1pbmFsIGVtdWxhdG9yLiAgVGhpcyBpcyBiZWNhdXNlIHRoZSBsZXR0ZXIgY29kZXMgYWJvdmUgMTI4IGRlY2ltYWwKLSAgIGhhdmUgY2VydGFpbiBtZWFuaW5ncyBpbiB0aGUgc3RhbmRhcmQgeHRlcm0gdGVybWluYWwgZW11bGF0b3IuCi0KLSAgIE5vdGU6IFVuZGVyIFggV2luZG93IGVudmlyb25tZW50LCBWaW0gR1VJIHdvcmtzIGZpbmUgaW4gRmFyc2kgbW9kZS4KLQkgVGhpcyBlbGltaW5hdGVzIHRoZSBuZWVkIG9mIGFueSB4dGVybSB0ZXJtaW5hbCBlbXVsYXRvci4KLQotCi1CdWdzCi0tLS0tCi1XaGlsZSBpbiBpbnNlcnQvcmVwbGFjZSBhbmQgRmFyc2kgbW9kZSBzZXQsIGlmIHlvdSByZXBlYXRlZGx5IGNoYW5nZSB0aGUKLWN1cnNvciBwb3NpdGlvbiAodmlhIGN1cnNvciBtb3ZlbWVudCkgYW5kIGVudGVyIG5ldyB0ZXh0IGFuZCB0aGVuIHRyeSB0byB1bmRvCi10aGUgbGFzdCBjaGFuZ2UsIHRoZSB1bmRvIHdpbGwgbGFnIG9uZSBjaGFuZ2UgYmVoaW5kLiAgQnV0IGFzIHlvdSBjb250aW51ZSB0bwotdW5kbywgeW91IHdpbGwgcmVhY2ggdGhlIG9yaWdpbmFsIGxpbmUgb2YgdGV4dC4gIFlvdSBjYW4gYWxzbyB1c2UgVSB0byB1bmRvIGFsbAotY2hhbmdlcyBtYWRlIGluIHRoZSBjdXJyZW50IGxpbmUuCitJZiB5b3Ugd291bGQgbGlrZSB0byBicmluZyBGYXJzaSBzdXBwb3J0IGJhY2ssIHBsZWFzZSBoYXZlIGEgbG9vayBhdCB0aGUgb2xkCitGYXJzaSBjb2RlLCBhcyBpdCB3YXMgcHJlc2VudCBhdCB0aGUgOC4xIHJlbGVhc2UuICBJdCBzaG91bGQgYmUgbWVyZ2VkIHdpdGgKK0FyYWJpYyBzdXBwb3J0IHVzaW5nIHRoZSBVbmljb2RlIGNoYXJhY3RlciBzZXQuCiAKLUZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBidWdzIHJlZmVyIHRvIHJpbGVmdC50eHQuCiAKICB2aW06dHc9Nzg6dHM9ODpub2V0OmZ0PWhlbHA6bm9ybDoK