# boy_enduser_docs 0.6 # Creates a tab in content 'Help' intended for providing reference information for clients # Mike Small # http://www.surgerywebsites.co.uk # ..................................................................... # This is a plugin for Textpattern - http://textpattern.com/ # To install: textpattern > admin > plugins # Paste the following text into the 'Install plugin' box: # ..................................................................... YTo5OntzOjQ6Im5hbWUiO3M6MTY6ImJveV9lbmR1c2VyX2RvY3MiO3M6NjoiYXV0aG9yIjtzOjEwOiJNaWtlIFNtYWxsIjtzOjEwOiJhdXRob3JfdXJpIjtzOjMyOiJodHRwOi8vd3d3LnN1cmdlcnl3ZWJzaXRlcy5jby51ayI7czo3OiJ2ZXJzaW9uIjtzOjM6IjAuNiI7czoxMToiZGVzY3JpcHRpb24iO3M6ODg6IkNyZWF0ZXMgYSB0YWIgaW4gY29udGVudCAnSGVscCcgaW50ZW5kZWQgZm9yIHByb3ZpZGluZyByZWZlcmVuY2UgaW5mb3JtYXRpb24gZm9yIGNsaWVudHMiO3M6NDoiaGVscCI7czoyNjI1OiI8aDI+T3ZlcnZpZXc8YnIgLz48L2gyPjxwPkFkZHMgYSAmIzM5O2hlbHAmIzM5OyB0YWIgdG8gdGhlICYjMzk7Q29udGVudCYjMzk7IGFyZWEgb2YgYWRtaW4uIEludGVuZGVkIHRvIGJlIHVzZWQgdG8gcHJvdmlkZSBkb2N1bWVudGF0aW9uIGFuZCBoZWxwIGZvciBlbmQgdXNlcnMvc2l0ZSBlZGl0b3JzLjwvcD48cD5JdCBpcyBlYXNpbHkgZWRpdGVkIChieSB0aG9zZSB3aXRoICYjMzk7cHVibGlzaGVyJiMzOTsgcHJpdmlsZWdlcykgZnJvbSB0aGUgYWRtaW5pc3RyYXRpb24gc2VjdGlvbi4gSXQgaW50ZWdyYXRlcyB3aXRoIGhha190aW55bWNlIHRvIGFsbG93IGNvbnZlbmllbnQgV1lTSVdZRyBlZGl0aW5nLCBhbmQgaGFzIGl0cyBvd24gc3R5bGUgc2hlZXQgKHNlZSBjb25maWd1cmF0aW9uIGJlbG93KS4gPC9wPjxoMj5JbnN0YWxsYXRpb248L2gyPjxwPlRoZSBwbHVnaW4gc2hvdWxkIGJlIGluc3RhbGxlZCBpbiB0aGUgc2FtZSB3YXkgYXMgb3RoZXIgcGx1Z2lucy4gSXQgd2lsbCBhdXRvbWF0aWNhbGx5IGFkZCB0aGUgYSBNeVNRTCB0YWJsZSAodHhwX3RhbWVfZW5kdXNlcl9kb2NzKSB0byB5b3VyIGRhdGFiYXNlIHdoZW4geW91IGZpcnN0IHVzZSBpdC4gVGhpcyBzaG91bGQgbm90IGNhdXNlIGFueSBwcm9ibGVtcyBidXQgeW91IGFyZSBhZHZpc2VkIHRvIGJhY2sgdXAgeW91ciBkYXRhYmFzZSBiZWZvcmUgbWFraW5nIGFueSBhbHRlcmF0aW9ucyB0byBpdCwgaW5jbHVkaW5nIGluc3RhbGxpbmcgdGhpcyBwbHVnaW4uIDwvcD48aDM+VXBncmFkaW5nPC9oMz48cD5VcGdyYWRpbmcgZnJvbSBwcmV2aW91cyB2ZXJzaW9ucyByZXF1aXJlcyBhIGxpdHRsZSB0aW5rZXJpbmcuIEkgd291bGQgYWR2aXNlZCB0aGUgZm9sbG93aW5nIHByb2Nlc3M6PC9wPjxvbD48bGk+Q29weSB0aGUgSFRNTCBzb3VyY2UgZnJvbSB5b3VyIGN1cnJlbnQgYm95X2VuZHVzZXJfZG9jcyBkb2N1bWVudGF0aW9uLiBJZiB5b3UgaGF2ZSB1c2VkIGhha190aW55TUNFIHlvdSBjYW4gZWl0aGVyIHVzZSB0aGUgSFRNTCBidXR0b24gb24gdGhlIHRpbnlNQ0UgdG9vbCBiYXIgb3IganVzdCBzd2l0Y2ggaGFrX3RpbnlNQ0UgaW50ZWdyYXRpb24gb2ZmIChzZWUgYmVsb3cpIHNvIHRoYXQgeW91IGNhbiB2aWV3IHRoZSBIVE1MIHNvdXJjZSBjb2RlLjwvbGk+PGxpPlBhc3RlIHRoaXMgaW50byBhIG5ldyBmaWxlIG9uIHlvdXIgaGFyZCBkcml2ZSBhbmQgc2F2ZSBpdCBzb21ld2hlcmUgeW91IHdpbGwgcmVtZW1iZXIuPC9saT48bGk+RGVsZXRlIHRoZSB0eHBfYm95X2VuZHVzZXJfZG9jcyAodHhwX3RhbWVfZW5kdXNlcl9kb2NzIHByZSB2MC41KSB0YWJsZSBmcm9tIHlvdXIgTXlTUUwgZGF0YWJhc2UuIFlvdSBjYW4gZWl0aGVyIGRvIHRoaXMgdmlhIHdoYXRldmVyIGFwcGxpY2F0aW9uIHlvdSB1c3VhbGx5IHVzZSB0byBhZG1pbmlzdGVyIHlvdXIgZGF0YWJhc2Ugb3IgdXNlIG9uZSBvZiB0aGVzZSBNeVNRTCBxdWVyaWVzOjwvbGk+PC9vbD48YmxvY2txdW90ZT48dWw+PGxpPkRST1AgVEFCTEUgdHhwX2JveV9lbmR1c2VyX2RvY3Mgb3I8L2xpPjxsaT5EUk9QIFRBQkxFIHR4cF90YW1lX2VuZHVzZXJfZG9jcyAoZm9yIHZlcnNpb25zIHByZSAwLjUpIDwvbGk+PC91bD48L2Jsb2NrcXVvdGU+PGgyPkNvbmZpZ3VyYXRpb248L2gyPjxwPk9uY2UgeW91IGhhdmUgaW5zdGFsbGVkIHlvdSBjYW4gdmlldyB0aGUgY29uZmlndXJhdGlvbiBvcHRpb25zIGluIHRoZSBFeHRlbnNpb25zIC0mZ3Q7IGVuZCB1c2VyIGRvY3MgdGFiLjwvcD48cD5Zb3UgY2FuIHN3aXRjaCBpbnRlZ3JhdGlvbiB3aXRoIGhha190aW55bWNlIG9uIGFuZCBvZmYuJm5ic3A7IDwvcD48cD48Zm9udCBjb2xvcj0iI2ZmMDAwMCI+PHN0cm9uZz5ORVc6PC9zdHJvbmc+PC9mb250PiBZb3UgY2FuIGNvbmZpZ3VyZSB0aGUgaGFrX3RpbnltY2UgV1lTSVdZRyB0b29sIGJhcnMuPC9wPjxwPjxmb250IGNvbG9yPSIjZmYwMDAwIj48c3Ryb25nPk5FVzo8L3N0cm9uZz48L2ZvbnQ+IFlvdSBjaG9zZSB0byBhdXRvbWF0aWNhbGx5IGRpcmVjdCBjbGllbnRzIHRvIHlvdXIgaGVscCBwYWdlIHdoZW4gdGhleSBzaWduIGluLiZuYnNwOyA8L3A+PHA+PGZvbnQgY29sb3I9IiNmZjAwMDAiPjxzdHJvbmc+TkVXOjwvc3Ryb25nPjwvZm9udD4gWW91IGNhbiBlZGl0IHRoZSB0aXRsZSBvZiB0aGUgdGFiIChkZWZhdWx0IHRpdGxlIGlzICYjMzk7SGVscCYjMzk7KSB3aGljaCBpcyBhZGRlZCB0byB0aGUgY2xpZW50cyAmIzM5O0NvbnRlbnQmIzM5OyBhcmVhIGluIHR4cCBhZG1pbi4mbmJzcDsgPC9wPjxwPllvdSBjYW4gc3R5bGUgeW91ciBoZWxwIGRvY3VtZW50cyB1c2luZyBhIHN0eWxlIHNoZWV0IGNhbGxlZCA8YSBocmVmPSJpbmRleC5waHA/ZXZlbnQ9Y3NzJmFtcDtuYW1lPWJveV9lbmR1c2VyX2RvY3MiIHRpdGxlPSJFZGl0IHRoZSBzdHlsZSBzaGVldCI+Ym95X2VuZHVzZXJfZG9jczwvYT4uIENyZWF0ZSB0aGlzIHdpdGhpbiB0ZXh0cGF0dGVybiBhcyB5b3Ugd291bGQgYW55IHN0YW5kYXJkIHN0eWxlIHNoZWV0IGFuZCBuYW1lIGl0IGJveV9lbmR1c2VyX2RvY3MuIFlvdXIgaGVscCBkb2N1bWVudGF0aW9uIHdpbGwgYXV0b21hdGljYWxseSBsaW5rIHRvIHRoaXMgc3R5bGUgc2hlZXQuIDwvcD4iO3M6NDoiY29kZSI7czo3ODE2OiIjIyBib3lfZW5kdXNlcl9kb2NzDQojIyBmaXJzdCBsb2FkIHByZWZlcmVuY2VzICMjDQpnbG9iYWwgJGJveV9lbmR1c2VyX2RvY3NfcHJlZnM7DQppZihib3lfZW5kdXNlcl9kb2NzX2NoZWNrX2luc3RhbGwoKSkgew0KICAkYm95X2VuZHVzZXJfZG9jc19wcmVmcyA9IGJveV9lbmR1c2VyX2RvY3NfcHJlZnMoKTsNCiAgaWYgKGdwcygncF9wYXNzd29yZCcpICYmICFncHMoJ2V2ZW50JykgJiYgJGJveV9lbmR1c2VyX2RvY3NfcHJlZnNbJ2RlZmF1bHRwYWdlJ10pIHsNCiAgICAkdXJpID0gJ2h0dHA6Ly8nIC4gJEdMT0JBTFNbJ3NpdGV1cmwnXSAuICcvdGV4dHBhdHRlcm4vaW5kZXgucGhwP2V2ZW50PWJveV9lbmR1c2VyX2RvY3MnOw0KICAgIHR4cF9zdGF0dXNfaGVhZGVyKCIzMDIgRm91bmQiKTsNCiAgICBoZWFkZXIoIkxvY2F0aW9uOiAkdXJpIik7DQogICAgZXhpdDsNCiAgfQ0KfQ0KaWYoQHR4cGludGVyZmFjZSA9PSAnYWRtaW4nKSB7DQphZGRfcHJpdnMoJ2JveV9lbmR1c2VyX2RvY3MnLCcxLDIsMyw0LDUnKTsNCmFkZF9wcml2cygnYm95X2VuZHVzZXJfZG9jc19hZG1pbicsJzEnKTsNCmFkZF9wcml2cygnYm95X2VuZHVzZXJfZG9jc19pbnN0YWxsJywnMSwyLDMsNCw1Jyk7DQpyZWdpc3Rlcl90YWIoJ2NvbnRlbnQnLCAnYm95X2VuZHVzZXJfZG9jcycsICRib3lfZW5kdXNlcl9kb2NzX3ByZWZzWyd0YWJ0aXRsZSddKTsNCnJlZ2lzdGVyX2NhbGxiYWNrKCdib3lfZW5kdXNlcl9kb2NzJywgJ2JveV9lbmR1c2VyX2RvY3MnKTsNCnJlZ2lzdGVyX3RhYignZXh0ZW5zaW9ucycsICdib3lfZW5kdXNlcl9kb2NzX2FkbWluJywgImVuZHVzZXIgZG9jcyIpOw0KcmVnaXN0ZXJfY2FsbGJhY2soJ2JveV9lbmR1c2VyX2RvY3NfYWRtaW4nLCAnYm95X2VuZHVzZXJfZG9jc19hZG1pbicpOw0KcmVnaXN0ZXJfY2FsbGJhY2soJ2JveV9lbmR1c2VyX2RvY3NfaW5zdGFsbCcsICdib3lfZW5kdXNlcl9kb2NzX2luc3RhbGwnKTsNCn0gDQpmdW5jdGlvbiBib3lfZW5kdXNlcl9kb2NzKCRldmVudCwkc3RlcCkgew0KZ2xvYmFsICRib3lfZW5kdXNlcl9kb2NzX3ByZWZzOw0KJG1lc3NhZ2UgPSBncHMoIm1lc3NhZ2UiKTsNCmVjaG8gcGFnZXRvcCgnYm95X2VuZHVzZXJfZG9jcycsJG1lc3NhZ2UpOw0KZWNobyBuLicnLicNCjxzY3JpcHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiIHR5cGU9InRleHQvamF2YXNjcmlwdCI+DQovLyBhZGRzIHRoZSBib3lfZW5kdXNlcl9kb2NzIGNzcyBmaWxlIHRvIHRoZSBkb2N1bWVudA0KZnVuY3Rpb24gYWRkU3R5bGUoY3NzX2ZpbGUpIHsNCiAgaWYodHlwZW9mKGRvY3VtZW50LmNyZWF0ZVN0eWxlU2hlZXQpPT0idW5kZWZpbmVkIikgew0KICAgIGVsbT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJsaW5rIik7DQogICAgZWxtLnJlbD0ic3R5bGVzaGVldCI7DQogICAgZWxtLmhyZWY9Y3NzX2ZpbGU7DQogICAgaWYoKGhlYWRBcnI9ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImhlYWQiKSkhPW51bGwmJmhlYWRBcnIubGVuZ3RoPjApIHsNCiAgICAgIHZhciBoZWFkZXJQbGFjZSA9IGhlYWRBcnIubGVuZ3RoIC0gMQ0KICAgICAgaGVhZEFycltoZWFkZXJQbGFjZV0uYXBwZW5kQ2hpbGQoZWxtKQ0KICAgIH0gZWxzZSB7DQogICAgICBkb2N1bWVudC5jcmVhdGVTdHlsZVNoZWV0KGNzc19maWxlKQ0KICAgIH0NCiAgfQ0KfQ0KYWRkU3R5bGUoImNzcy5waHA/bj1ib3lfZW5kdXNlcl9kb2NzIik7DQo8L3NjcmlwdD4nOw0KZWNobyBzdGFydFRhYmxlKCdib3lfZW5kdXNlcl9kb2NzJywkYWxpZ249JycsJGNsYXNzPScnLCRwPScyJywkdz0nNjAwJykuDQp0cih0ZChoZWQoJGJveV9lbmR1c2VyX2RvY3NfcHJlZnNbJ3RpdGxlJ10sMSkuJGJveV9lbmR1c2VyX2RvY3NfcHJlZnNbJ2NvbnRlbnQnXSkpLg0KZW5kVGFibGUoKTsNCn0NCmZ1bmN0aW9uIGJveV9lbmR1c2VyX2RvY3NfcHJlZnMoKSB7DQokYXJyYXkgPSBnZXRSb3dzKCJTRUxFQ1QgdGl0bGUsY29udGVudCBGUk9NIHR4cF9ib3lfZW5kdXNlcl9kb2NzIG9yZGVyIGJ5IGlkIik7DQokYm95X2VuZHVzZXJfZG9jc19wcmVmc1sndGl0bGUnXSA9ICRhcnJheVswXVsndGl0bGUnXTsNCiRib3lfZW5kdXNlcl9kb2NzX3ByZWZzWydjb250ZW50J10gPSAkYXJyYXlbMF1bJ2NvbnRlbnQnXTsNCiRib3lfZW5kdXNlcl9kb2NzX3ByZWZzWyd0aW55bWNlJ10gPSAkYXJyYXlbMV1bJ2NvbnRlbnQnXTsNCiRib3lfZW5kdXNlcl9kb2NzX3ByZWZzWyd0aW55bWNlX3N0YXR1cyddID0gJGFycmF5WzJdWydjb250ZW50J107DQokYm95X2VuZHVzZXJfZG9jc19wcmVmc1snZGVmYXVsdHBhZ2UnXSA9ICRhcnJheVszXVsnY29udGVudCddOw0KJGJveV9lbmR1c2VyX2RvY3NfcHJlZnNbJ3RhYnRpdGxlJ10gPSAkYXJyYXlbNF1bJ2NvbnRlbnQnXTsNCnJldHVybiAkYm95X2VuZHVzZXJfZG9jc19wcmVmczsNCn0NCmZ1bmN0aW9uIGJveV9lbmR1c2VyX2RvY3NfYWRtaW4oJGV2ZW50LCRzdGVwKSB7DQpnbG9iYWwgJGJveV9lbmR1c2VyX2RvY3NfcHJlZnM7DQokbWVzc2FnZSA9IGdwcygibWVzc2FnZSIpOw0KJHBhZ2V0b3AgPSBwYWdldG9wKCdib3lfZW5kdXNlcl9kb2NzX2FkbWluJywkbWVzc2FnZSk7DQppZigkc3RlcD09InVwZGF0ZSIpIHsNCnNhZmVfdXBkYXRlKCd0eHBfYm95X2VuZHVzZXJfZG9jcycsICJ0aXRsZSA9ICd7JF9QT1NUWyd0aXRsZSddfScsY29udGVudCA9ICd7JF9QT1NUWydjb250ZW50J119JyIsImlkPTAiKTsNCnNhZmVfdXBkYXRlKCd0eHBfYm95X2VuZHVzZXJfZG9jcycsICJjb250ZW50ID0gJ3skX1BPU1RbJ3VzZV90aW55TUNFJ119JyIsImlkPTIiKTsNCnNhZmVfdXBkYXRlKCd0eHBfYm95X2VuZHVzZXJfZG9jcycsICJjb250ZW50ID0gJ3skX1BPU1RbJ3RpbnltY2VwcmVmcyddfSciLCJpZD0xIik7DQpzYWZlX3VwZGF0ZSgndHhwX2JveV9lbmR1c2VyX2RvY3MnLCAiY29udGVudCA9ICd7JF9QT1NUWydkZWZhdWx0cGFnZSddfSciLCJpZD0zIik7ICANCiMjIHJlbG9hZCBwcmVmcw0KJGJveV9lbmR1c2VyX2RvY3NfcHJlZnM9Ym95X2VuZHVzZXJfZG9jc19wcmVmcygpOw0KfQ0KJHRpbnltY2UgPSAnPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCIgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9IicuaHUuJ3RleHRwYXR0ZXJuL3RpbnlfbWNlL3RpbnlfbWNlLmpzIj48L3NjcmlwdD4nLg0Kbi4nPHNjcmlwdCBsYW5ndWFnZT0iamF2YXNjcmlwdCIgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4NCnZhciB0aW55TUNFc3RhdHVzID0gdHlwZW9mKHRpbnlNQ0UpOw0KaWYodGlueU1DRXN0YXR1cyAhPSAidW5kZWZpbmVkIikgew0KdGlueU1DRS5pbml0KHsNCicuJGJveV9lbmR1c2VyX2RvY3NfcHJlZnNbJ3RpbnltY2UnXS4nDQp9KTsNCn0NCjwvc2NyaXB0Pic7DQppZighJGJveV9lbmR1c2VyX2RvY3NfcHJlZnNbJ3RpbnltY2Vfc3RhdHVzJ10pICR0aW55bWNlPSIiOw0KZWNobyAkcGFnZXRvcC4kdGlueW1jZTsNCmlmKCFib3lfZW5kdXNlcl9kb2NzX2NoZWNrX2luc3RhbGwoKSkgew0KZWNobyBncmFmKCdNeVNRTCB0YWJsZSBtaXNzaW5nJywnIHN0eWxlPSJ0ZXh0LWFsaWduOmNlbnRlciInKS4NCmdyYWYoJ1RvIGluc3RhbGwgdGhpcyBwbHVnaW4geW91IHdpbGwgbmVlZCB0byA8YSBocmVmPSJpbmRleC5waHA/ZXZlbnQ9Ym95X2VuZHVzZXJfZG9jc19pbnN0YWxsIj5hZGQgTXlTUUwgdGFibGVzPC9hPicsJyBzdHlsZT0idGV4dC1hbGlnbjpjZW50ZXIiJyk7DQpyZXR1cm47DQp9DQplY2hvIG4ubi5mb3JtKHN0YXJ0VGFibGUoJ2VkaXQnLCRhbGlnbj0nY2VudGVyJywkY2xhc3M9JycsJHA9JzInLCR3PSc2MDAnKS4NCnRyKHRkKCkuDQp0ZChoZWQoIkVuZHVzZXIgRG9jcyBBZG1pbmlzdHJhdGlvbiIsICcxJykpKS4NCnRyKHRkKCJUaXRsZSIpLg0KdGQobi5lSW5wdXQoJ2JveV9lbmR1c2VyX2RvY3NfYWRtaW4nKS4NCm4uc0lucHV0KCd1cGRhdGUnKS4NCm4uaElucHV0KCdtZXNzYWdlJywnZG9jdW1lbnQgdXBkYXRlZCcpLg0Kbi5mSW5wdXQoJ3RleHQnLCd0aXRsZScsJGJveV9lbmR1c2VyX2RvY3NfcHJlZnNbJ3RpdGxlJ10sJ2VkaXQnLCR0aXRsZT0nJywkb25DbGljaz0nJywkc2l6ZT0nODAnLCAkdGFiPScnLCRpZD0nJykpKS4NCnRyKHRkKCc8bGFiZWwgZm9yPSJjb250ZW50Ij5Db250ZW50PC9sYWJlbD4nKS4NCnRkKCc8dGV4dGFyZWEgcm93cz0iMzEiIGNvbHM9IjU1IiBpZD0iY29udGVudCIgY2xhc3M9Im1jZUVkaXRvciIgbmFtZT0iY29udGVudCI+Jy4kYm95X2VuZHVzZXJfZG9jc19wcmVmc1snY29udGVudCddLic8L3RleHRhcmVhPicpKS4NCnRyKHRkKCdUYWIgVGl0bGUnKS50ZChmSW5wdXQoJ3RleHQnLCd0YWJ0aXRsZScsJGJveV9lbmR1c2VyX2RvY3NfcHJlZnNbJ3RhYnRpdGxlJ10sJ2VkaXQnLCR0aXRsZT0nJywkb25DbGljaz0nJywkc2l6ZT0nODAnLCAkdGFiPScnLCRpZD0nJykpKS4NCnRyKHRkKCkudGQoJzxhIGhyZWY9Ii90ZXh0cGF0dGVybi9pbmRleC5waHA/ZXZlbnQ9Y3NzJm5hbWU9Ym95X2VuZHVzZXJfZG9jcyI+Ym95X2VuZHVzZXJfZG9jcyBzdHlsZSBzaGVldDwvYT4nKSkuDQp0cih0ZCgnVXNlIGhha190aW55TUNFPycpLg0KdGQoeWVzbm9SYWRpbygndXNlX3RpbnlNQ0UnLCRib3lfZW5kdXNlcl9kb2NzX3ByZWZzWyd0aW55bWNlX3N0YXR1cyddKSkpLg0KdHIodGQoJ0dvIHRvIGhlbHAgcGFnZSBvbiBzaWduIGluPycpLg0KdGQoeWVzbm9SYWRpbygnZGVmYXVsdHBhZ2UnLCRib3lfZW5kdXNlcl9kb2NzX3ByZWZzWydkZWZhdWx0cGFnZSddKSkpLg0KdHIodGQoKS50ZChmSW5wdXQoJ3N1Ym1pdCcsICd1cGRhdGUnLCAnVXBkYXRlJywgJ3NtYWxsZXJib3gnKSkpLg0KdHIodGQoJ2hha190aW55TUNFIFNldHRpbmdzJykudGQoJzx0ZXh0YXJlYSByb3dzPSIyMCIgY29scz0iNTUiIGlkPSJ0aW55bWNlcHJlZnMiIG5hbWU9InRpbnltY2VwcmVmcyI+Jy4kYm95X2VuZHVzZXJfZG9jc19wcmVmc1sndGlueW1jZSddLic8L3RleHRhcmVhPicpKQ0KKS5lbmRUYWJsZSgpOw0KfQ0KZnVuY3Rpb24gYm95X2VuZHVzZXJfZG9jc19jaGVja19pbnN0YWxsKCkgew0KLy8gQ2hlY2sgaWYgdGhlIHR4cF9ib3lfZW5kdXNlcl9kb2NzIHRhYmxlIGFscmVhZHkgZXhpc3RzDQppZiAoZ2V0VGhpbmdzKCJTaG93IHRhYmxlcyBsaWtlICciLlBGWC4idHhwX2JveV9lbmR1c2VyX2RvY3MnIikpIHsNCnJldHVybiB0cnVlOw0KfQ0KcmV0dXJuIGZhbHNlOw0KfQ0KLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KZnVuY3Rpb24gYm95X2VuZHVzZXJfZG9jc19pbnN0YWxsKCkgew0KLy9maWd1cmUgb3V0IHdoYXQgTXlTUUwgdmVyc2lvbiB3ZSBhcmUgdXNpbmcgKGZyb20gX3VwZGF0ZS5waHApDQokbXlzcWx2ZXJzaW9uID0gbXlzcWxfZ2V0X3NlcnZlcl9pbmZvKCk7DQokdGFibGV0eXBlID0gKCBpbnR2YWwoJG15c3FsdmVyc2lvblswXSkgPj0gNSB8fCBwcmVnX21hdGNoKCcjXjRcLigwXC5bMi05XXwoMVs4OV0pKXwoMVwuWzItOV0pIycsJG15c3FsdmVyc2lvbikpIA0KPyAiIEVOR0lORT1NeUlTQU0gIg0KOiAiIFRZUEU9TXlJU0FNICI7DQppZiAoIGlzc2V0KCR0eHBjZmdbJ2RiY2hhcnNldCddKSAmJiAoaW50dmFsKCRteXNxbHZlcnNpb25bMF0pID49IDUgfHwgcHJlZ19tYXRjaCgnI140XC5bMS05XSMnLCRteXNxbHZlcnNpb24pKSkgDQp7DQokdGFibGV0eXBlIC49ICIgQ0hBUkFDVEVSIFNFVCA9ICIuICR0eHBjZmdbJ2RiY2hhcnNldCddIC4iICI7DQp9DQojIyBDcmVhdGUgdGhlIGJveV9lbmR1c2VyX2RvY3MgdGFibGUNCiRib3lfZW5kdXNlcl9kb2NzX3RhYmxlID0gc2FmZV9xdWVyeSgiQ1JFQVRFIFRBQkxFIGAiLlBGWC4idHhwX2JveV9lbmR1c2VyX2RvY3NgICgNCmBpZGAgSU5UKDEwKSBVTlNJR05FRCwNCmB0aXRsZWAgVkFSQ0hBUigyNTUpIE5PVCBOVUxMLCANCmBjb250ZW50YCBURVhUIE5PVCBOVUxMLA0KUFJJTUFSWSBLRVkgKGBpZGApDQopICR0YWJsZXR5cGUiKTsNCg0KIyMgaWYgdGhlIHRhYmxlIGNyZWF0aW9uIHN1Y2NlZWRzIHBvcHVsYXRlIHdpdGggdmFsdWVzDQppZiAoJGJveV9lbmR1c2VyX2RvY3NfdGFibGUpIHsNCg0KJG1jZV9kZWZhdWx0ID0gIm1vZGU6IFwic3BlY2lmaWNfdGV4dGFyZWFzXCIsXG4iOw0KJG1jZV9kZWZhdWx0IC49ICJ0aGVtZSA6IFwiYWR2YW5jZWRcIixcbiI7DQokbWNlX2RlZmF1bHQgLj0gImxhbmd1YWdlIDogXCJlblwiLFxuIjsNCiRtY2VfZGVmYXVsdCAuPSAiaGVpZ2h0OiBcIjQyMFwiLFxuIjsNCiRtY2VfZGVmYXVsdCAuPSAid2lkdGg6IFwiNjAwXCIsXG4iOw0KJG1jZV9kZWZhdWx0IC49ICJjb250ZW50X2NzcyA6IFwiY3NzLnBocD9uPWJveV9lbmR1c2VyX2RvY3NcIixcbiI7DQokbWNlX2RlZmF1bHQgLj0gInRoZW1lX2FkdmFuY2VkX2Jsb2NrZm9ybWF0cyA6IFwicCxoMixoMyxoNCxoNSxkaXYsYWRkcmVzc1wiLFxuIjsNCiRtY2VfZGVmYXVsdC49ICJlZGl0b3Jfc2VsZWN0b3IgOiBcIm1jZUVkaXRvclwiLFxuIjsNCiRtY2VfZGVmYXVsdCAuPSAicmVtb3ZlX3NjcmlwdF9ob3N0IDogXCJmYWxzZVwiLFxuIjsNCiRtY2VfZGVmYXVsdC49ICJwbHVnaW5zIDogXCJ0YWJsZXMsdHhwaW1hZ2VcIixcbiI7DQokbWNlX2RlZmF1bHQgLj0gInRoZW1lX2FkdmFuY2VkX2J1dHRvbnMxIDogXCJib2xkLGl0YWxpYyx1bmRlcmxpbmUsc3RyaWtldGhyb3VnaCxmb3JlY29sb3IsYmFja2NvbG9yLHJlbW92ZWZvcm1hdCxudW1saXN0LGJ1bGxpc3Qsb3V0ZGVudCxpbmRlbnQsanVzdGlmeWxlZnQsanVzdGlmeWNlbnRlcixqdXN0aWZ5cmlnaHQsanVzdGlmeWZ1bGxcIixcbiI7DQokbWNlX2RlZmF1bHQgLj0gInRoZW1lX2FkdmFuY2VkX2J1dHRvbnMyIDogXCJsaW5rLHVubGluayxzZXBhcmF0b3IsY3V0LGNvcHkscGFzdGUsc2VwYXJhdG9yLGNvZGUsc2VwYXJhdG9yLGZvcm1hdHNlbGVjdCxzdHlsZXNlbGVjdCxzZXBhcmF0b3IsaW1hZ2Usc2VwYXJhdG9yLHRhYmxlY29udHJvbHNcIixcbiI7DQokbWNlX2RlZmF1bHQgLj0gInRoZW1lX2FkdmFuY2VkX2J1dHRvbnMzIDogXCJcIixcbiI7DQokbWNlX2RlZmF1bHQuPSAidGhlbWVfYWR2YW5jZWRfdG9vbGJhcl9sb2NhdGlvbiA6IFwidG9wXCIsXG4iOw0KJG1jZV9kZWZhdWx0IC49ICJ0aGVtZV9hZHZhbmNlZF90b29sYmFyX2FsaWduIDogXCJsZWZ0XCIsIjsgDQoNCi8vIGluc2VydCB0aGVtIGludG8gdGhlIG5ldyB0YWJsZQ0Kc2FmZV9pbnNlcnQoInR4cF9ib3lfZW5kdXNlcl9kb2NzIiwgImlkPTEsdGl0bGU9J3RpbnltY2UnLCBjb250ZW50PSckbWNlX2RlZmF1bHQnIik7DQpzYWZlX2luc2VydCgidHhwX2JveV9lbmR1c2VyX2RvY3MiLCAiaWQ9MCx0aXRsZT0nRW5kIFVzZXIgRG9jdW1lbnRhdGlvbicsY29udGVudD0nY29udGVudCciKTsNCnNhZmVfaW5zZXJ0KCJ0eHBfYm95X2VuZHVzZXJfZG9jcyIsICJpZD0yLHRpdGxlPSd0aW55bWNlX3N0YXR1cycsY29udGVudD0neWVzJyIpOw0Kc2FmZV9pbnNlcnQoInR4cF9ib3lfZW5kdXNlcl9kb2NzIiwgImlkPTMsdGl0bGU9J2RlZmF1bHRwYWdlJyxjb250ZW50PSd5ZXMnIik7DQpzYWZlX2luc2VydCgidHhwX2JveV9lbmR1c2VyX2RvY3MiLCAiaWQ9NCx0aXRsZT0ndGFidGl0bGUnLGNvbnRlbnQ9J0hlbHAnIik7DQp9IGVsc2Ugew0KZWNobyAkcGFnZXRvcDsNCmVjaG8gZ3JhZigiUHJvYmxlbSBJbnN0YWxsaW5nIFRhYmxlcy4iKTsNCn0NCmhlYWRlcigiTG9jYXRpb246IGluZGV4LnBocD9ldmVudD1ib3lfZW5kdXNlcl9kb2NzX2FkbWluJm1lc3NhZ2U9dHhwX2JveV9lbmRfdXNlcmRvY3MlMjBNeVNRTCUyMHRhYmxlJTIwaW5zdGFsbGVkIik7DQp9IjtzOjQ6InR5cGUiO3M6MToiMSI7czozOiJtZDUiO3M6MzI6ImIzNGY3YjJlYjJmMzViOThiM2NlN2M5MTA1MmNlYzZjIjt9