|
Menu |
|
|
Home |
| |
|
Discussions |
| |
|
Tools |
| |
|
Affiliates |
| |
|
Content |
| |
|
Info |
| | |
|
|
|
|
|
User Info |
|
Membership:
Latest: MichaelSnaRe
New Today: 0
New Yesterday: 0
Overall: 9144
People Online:
Visitors: 85
Members: 0
Total: 85
|
|
|
|
|
|
Full disclosure |
|
|
|
|
|
|
|
|
|
IT Security and Insecurity Portal |
|
|
Help to decode php script |
|
Posted: Sat Jun 02, 2012 3:18 am |
|
|
maumaju |
Beginner |
|
|
Joined: Dec 28, 2009 |
Posts: 4 |
|
|
|
|
|
|
|
<?php $_F=__FILE__;$_X='Pz48P3BocCAgczVzczQybl9zdDFydCgpOyANCjJiX3N0MXJ0KCk7IA0KNXJyMnJfcjVwMnJ0NG5nKDApOw0KNG5jbDNkNSgnazJuNWtzNC5waHAnKTsNCg0KJGMybm41Y3Q0Mm49bXlzcWxfYzJubjVjdChjMm5zdDFudCgnZGJfczVydjVyJyksIGMybnN0MW50KCdkYl8zczVyJyksIGMybnN0MW50KCdkYl9wMXNzdzJyZCcpKSAyciBkNDUobXlzcWxfNXJyMnIoKSkgOw0KbXlzcWxfczVsNWN0X2RiKGMybnN0MW50KCdkYl9uMW01JykpOw0KDQoNCjRmKDRzczV0KCRfR0VUWydiaHMnXSkpeyRfU0VTU0lPTlsnYjFoMXMxJ109JF9HRVRbJ2JocyddO30NCjRmKDRzczV0KCRfU0VTU0lPTlsnYjFoMXMxJ10pKXskYmhzPSRfU0VTU0lPTlsnYjFoMXMxJ107ICRsMW5nPSdsMW5nLycuJGJocy4nLnBocCc7fSA1bHM1IHskbDFuZz0nbDFuZy80ZC5waHAnO30NCg0KZjNuY3Q0Mm4gdDJwdDR0bDUoKXs1eHRyMWN0KCRHTE9CQUxTKTsNCjRmKDRzczV0KCRfR0VUWydtMmQnXSkpeyRtMmQ9JF9HRVRbJ20yZCddOyB9IDVsczUgeyRtMmQ9J20xc3Q1ci9oMm01Jzt9DQoNCgk1Y2gyICI8c3AxbiBjbDFzcz0ndDR0bDUnPlN0MmtiMXIxbmc8L3NwMW4+IDxiciAvPiAiOw0KCTVjaDIgIjxzcDFuIHN0eWw1PSdtMXJnNG4tbDVmdDppcHg7Jz5QcjJncjFtIEludjVudDJyeTwvc3Axbj48YnIgLz4gIjsNCiAJNWNoMiAiPHNwMW4gY2wxc3M9J2IxaDFzMSc+ICIuYzJuc3QxbnQoJ2IxaDFzMScpLiI6IDwxIGhyNWY9P20yZD0kbTJkJmJocz00ZD5JRDwvMT4gfCA8MSBocjVmPT9tMmQ9JG0yZCZiaHM9NW4+RU48LzE+PC9zcDFuPiI7DQoJDQoJDQp9DQoNCmYzbmN0NDJuIHMxdHAxbSgkNGQpew0KCTRmKDRzczV0KCRfU0VTU0lPTlsnMWtzNXM0ZCddKSl7ICQxa3M1czRkPSRfU0VTU0lPTlsnMWtzNXM0ZCddOw0KCQ0KCSRyNXMzbHQ9bXlzcWxfcTM1cnkoInM1bDVjdCAxa3M1cyBmcjJtIG0xc3Q1cl8xa3M1cyB3aDVyNSA0ZD0kMWtzNXM0ZCIpOyAgDQoJJHI9bXlzcWxfZjV0Y2hfMXJyMXkoJHI1czNsdCk7DQoJJDNzNXIxa3M1cz0gJHJbJzFrczVzJ107DQoJJGsybDJtID0gNXhwbDJkNSgiLCIsICQzczVyMWtzNXMpOw0KCSRtMXg9YzIzbnQoJGsybDJtKTsNCglmMnIgKCQ0PTA7ICQ0PCAkbTF4OyArKyQ0KXsgDQoJJHI9ZzV0cjJ3KCJqM2QzbCIsIm0xc3Q1cl9tNW4zIiwiIHdoNXI1IDRkPSRrMmwybVskNF0iKTsNCgk0ZiAoJHJbJ2ozZDNsJ109PSQ0ZCl7JGgxczRsPSIyazUiOyBicjUxazt9IDVsczUgeyRoMXM0bD0iZzFnMWwiO30gDQoJfQ0KCQ0KCXI1dDNybiAkaDFzNGw7DQoJfQ0KCX0NCg0KZjNuY3Q0Mm4gdjFsNGQxczQoKXs1eHRyMWN0KCRHTE9CQUxTKTsgDQoJDQoJNGYoNHNzNXQoJF9TRVNTSU9OWyczczVybjFtNSddKSl7IA0KCSRzdHI0bmcgPSRfU0VTU0lPTlsnM3M1cm4xbTUnXTsNCgkNCgkkcjVzM2x0PW15c3FsX3EzNXJ5KCJTRUxFQ1QgbDRzNW5zNCBGUk9NIG0xc3Q1cl8zczVyIFdIRVJFIDVtMTRsPSckc3RyNG5nJyIpOyAgDQoJJHI9bXlzcWxfZjV0Y2hfMXJyMXkoJHI1czNsdCk7DQoJDQoJJGw0czVuczQ9JHJbJ2w0czVuczQnXTsNCi8vCSRtNW50MWg9JzRyNW41ODkwOUB5MWgyMi5jMm0sbTFzdDVyLDRudjVudDJyeSxwMnMsMWszbnQxbnM0JzsNCg0KCSRrNXkgPSAnYjViNWtiMWsxciB0MiAoNW4vZDUpY3J5cHQnOw0KCSQ1bmNyeXB0NWQgPSBiMXM1ZXVfNW5jMmQ1KG1jcnlwdF81bmNyeXB0KE1DUllQVF9SSUpOREFFTF9haWUsIG1kaSgkazV5KSwgJG01bnQxaCwgTUNSWVBUX01PREVfQ0JDLCBtZGkobWRpKCRrNXkpKSkpOw0KCSRkNWNyeXB0NWQgPSBydHI0bShtY3J5cHRfZDVjcnlwdChNQ1JZUFRfUklKTkRBRUxfYWllLCBtZGkoJGs1eSksIGIxczVldV9kNWMyZDUoJGw0czVuczQpLCBNQ1JZUFRfTU9ERV9DQkMsIG1kaShtZGkoJGs1eSkpKSwgIlwwIik7DQoNCgkNCi8vCTVjaDIgIjVuY3J5cHQ1ZCA6Ii4kNW5jcnlwdDVkLiI8YnI+IjsNCi8vCTVjaDIgInN0cjRuZyA6Ii4kc3RyNG5nLiI8YnI+IjsNCi8vCTVjaDIgImw0czVuczQgOiIuJGw0czVuczQuIjxicj4iOw0KLy8JNWNoMiAiZDVzY3J5cHQ1ZCA6Ii4kZDVjcnlwdDVkLiI8YnI+IjsNCgkNCgkkNW0xNGw9NXhwbDJkNSgnLCcsJGQ1Y3J5cHQ1ZCk7DQovLwk1Y2gyICJkNXNjcnlwdDVkIGE6Ii4kNW0xNGxbMF0uIjxicj4iOw0KDQoJNGYgKCRzdHI0bmchPSQ1bTE0bFswXSl7ICRyNXMzbHQ9bXlzcWxfcTM1cnkoIlNFTEVDVCA0ZCBGUk9NIDRudjVudDJyeV9iMXIxbmciKTsgJHIyd2MyM250ICA9IG15c3FsX24zbV9yMndzKCRyNXMzbHQpOw0KCTRmICgkcjJ3YzIzbnQgPj1haSkge215c3FsX3EzNXJ5KCJERUxFVEUgRlJPTSA0bnY1bnQycnlfYjFyMW5nIE9FUkRFUiBCWSA0ZCBMSU1JVCA2Iik7IH0NCgk1Y2gyICBjMm5zdDFudCgndl9mcjU1JykuIiwgPDEgaHI1Zj0naHR0cDovL3N0MmtiMXIxbmcuMnJnJyA+d3d3LnN0MmtiMXIxbmcuMnJnPC8xPiAiOyANCgl9IDVsczUgezVjaDIgICJMNGM1bnM1IHQyICRzdHI0bmcgIjsgfQ0KCX0NCgkNCgkNCgkkMXJyMXk9NXhwbDJkNSgnLCcsJGQ1Y3J5cHQ1ZCk7DQoJJDRuMXJyMXk9IDV4cGwyZDUoJy8nLCRfR0VUWydtMmQnXSApOwkNCgk0ZiAoITRuXzFycjF5KCQ0bjFycjF5WzBdLCQxcnIxeSkpeyA1Y2gyICI8c2NyNHB0IHR5cDU9J3Q1eHQvajF2MXNjcjRwdCc+dzRuZDJ3LmwyYzF0NDJuLmhyNWY9Jz9tNW4zPXM0Z25mMnJtJzwvc2NyNHB0PiI7fQ0KCQ0KCX0NCg0KNG5jbDNkNSgkbDFuZyk7DQo0bmNsM2Q1KGMybnN0MW50KCdzNHNfdGg1bTUnKSk7DQoNCmYzbmN0NDJuIDRtcDJydCgpezV4dHIxY3QoJEdMT0JBTFMpOyANCgk1Y2gyICI8ZjJybSBtNXRoMmQ9cDJzdCA1bmN0eXA1PSdtM2x0NHAxcnQvZjJybS1kMXQxJyAxY3Q0Mm49P20yZD0kbTJkJm01bjM9ZDI0bXAycnQ+DQoJUzRsMWsxbiBQNGw0aCBGNGw1IEV4YzVsOiA8NG5wM3QgbjFtNT0zczVyZjRsNSB0eXA1PSdmNGw1Jz4NCgk8NG5wM3QgbjFtNT0zcGwyMWQgdHlwNT1zM2JtNHQgdjFsMzU9SW1wMnJ0Pg0KCTwvZjJybT4iOw0KCX0NCmYzbmN0NDJuIHByMmY0bDVzKCl7NXh0cjFjdCgkR0xPQkFMUyk7DQoJNGYoNHNzNXQoICRfU0VTU0lPTlsnM3M1cm4xbTUnXSkpIHsgJDNzNXJuMW01PSAkX1NFU1NJT05bJzNzNXJuMW01J107DQoJNWNoMiBjMm5zdDFudCgndzVsYzJtNScpLiIgPDEgaHI1Zj0/bTJkPW0xc3Q1ci9wcjJmNGw1Jm01bjM9cHIyZjRsNT4gPGI+ICQzczVybjFtNSA8L2I+IDwvMT4gfCA8MSBocjVmPT9tNW4zPXM0Z24yM3Q+Ii5jMm5zdDFudCgnbDJnMjN0JykuIjwvMT4gfCA8MSBocjVmPScjJz4iLmMybnN0MW50KCdoNWxwJykuIiA8LzE+fCAiOw0KCX0gDQoJNWxzNSB7NWNoMiAiPDEgaHI1Zj0/bTVuMz1zNGduZjJybT4iLmMybnN0MW50KCdsMmc0bicpLiI8LzE+IHwgPDEgaHI1Zj0nIyc+Ii5jMm5zdDFudCgnaDVscCcpLiI8LzE+ICI7IH0NCgl9IA0KDQpmM25jdDQybiBtNW4zdm8oJHAxcjVudCwgJGw1djVsKSB7DQoJJDFrczVzNGQ9JF9TRVNTSU9OWycxa3M1czRkJ107DQovLwkkMWtzNXM0ZD02Ow0KCSRyNXMzbHQ9bXlzcWxfcTM1cnkoInM1bDVjdCAxa3M1cyBmcjJtIDFrczVzIHdoNXI1IDRkPSQxa3M1czRkIik7ICANCgkkcj1teXNxbF9mNXRjaF8xcnIxeSgkcjVzM2x0KTsNCgkkdGJsID0gJ201bjMnOw0KCSQzczVyMWtzNXM9ICRyWycxa3M1cyddOw0KCSRyNXMzbHQgPSBteXNxbF9xMzVyeSgiU0VMRUNUIDEuNGQsIDEuM3IzdCwgMS5qM2QzbCwgMS4zcmwsIEQ1cjR2Ni5DMjNudCBGUk9NIG01bjMgDQoJMSBMRUZUIE9VVEVSIEpPSU4gKFNFTEVDVCA0bmQzaywgQ09VTlQoKikgQVMgQzIzbnQgRlJPTSBtNW4zIEdST1VQIEJZIDRuZDNrKSANCglENXI0djYgT04gMS40ZCA9IEQ1cjR2Ni40bmQzayBXSEVSRSAxLjRkIDRuICgkM3M1cjFrczVzKSBBTkQgMS40bmQzaz0iLiAkcDFyNW50IC4iIDFuZCBzdDF0M3M9J3QxbXA0bCcgT1JERVIgQlkgMS4zcjN0IEFTQyIpOw0KCTVjaDIgIjwzbCA0ZD0nbTVuMyc+IjsNCgl3aDRsNSAoJHIydyA9IG15c3FsX2Y1dGNoXzFzczJjKCRyNXMzbHQpKSB7DQoJCTRmICgkcjJ3WydDMjNudCddID4gMCkgeyANCgkJNWNoMiAiPGw0ID48MSBocjVmPSciLiAkcjJ3WyczcmwnXSAuICInIHQ0dGw1PSciLiAkcjJ3WydqM2QzbCddIC4gIicgPjw0bWcgc3JjPSc0bTFnNXMvZTYucG5nJyAxbHQ9JycgLz4gIiAuICRyMndbJ2ozZDNsJ10gLiAiPC8xPiI7IA0KCQltNW4zKCRyMndbJzRkJ10sICRsNXY1bCArIDYpOyA1Y2gyICI8L2w0PiI7IH0gDQoJCTVsczU0ZiAoJHIyd1snQzIzbnQnXT09MCkgeyANCgkJNWNoMiAiPGw0PjwxIGhyNWY9JyIuICRyMndbJzNybCddIC4gIicgdDR0bDU9JyIuICRyMndbJ2ozZDNsJ10gLiAiJyA+PDRtZyBzcmM9JzRtMWc1cy9lNi5wbmcnIDFsdD0nJyAvPiAiIC4gJHIyd1snajNkM2wnXSAuICI8LzE+PC9sND4iOw0KCQl9IA0KCQk1bHM1Ow0KCQl9DQoJNWNoMiAiPC8zbD4iOw0KCX0NCg0KZjNuY3Q0Mm4gdDJwbjF2KCl7DQogIAk0Zig0c3M1dCgkX1NFU1NJT05bJzFrczVzNGQnXSkpeyAkMWtzNXM0ZD0kX1NFU1NJT05bJzFrczVzNGQnXTsvLyB9IDVsczUgeyQxa3M1czRkPTY7IH0NCgkNCiAJJHI1czNsdD1teXNxbF9xMzVyeSgiczVsNWN0IHA0bnQxcyBmcjJtIG0xc3Q1cl8xa3M1cyB3aDVyNSA0ZD0kMWtzNXM0ZCIpOyAgDQoJJHI9bXlzcWxfZjV0Y2hfMXJyMXkoJHI1czNsdCk7DQoJJDNzNXIxa3M1cz0gJHJbJ3A0bnQxcyddOw0KCTRmKDRzczV0KCRfR0VUWydtMmQnXSkpeyRwMW41bD0gNXhwbDJkNSgnLycsJF9HRVRbJ20yZCddICk7CSRtMXA9JHAxbjVsWzBdOw0KCTRmKCRtMXA9PScnKSB7JG0xcD0iTDJnNG4iO30gfQ0KCQ0KCTVjaDIgICI8ZDR2IGNsMXNzPSd0MjJsYjFyJz4NCgk8ZDR2IGNsMXNzPSd0MjJsYjFyTDVmdCc+PC9kNHY+DQoJDQoJIjsNCgkNCgkkcTM1cnlhPSJTRUxFQ1QgajNkM2wsM3JsLDRuZDNrIEZST00gbTFzdDVyX201bjMgV0hFUkUgNGQgNG4gKCQzczVyMWtzNXMpIEFORCBzdDF0M3M9J3QxbXA0bCciOw0KCSRyNXMzbHRhPW15c3FsX3EzNXJ5KCRxMzVyeWEpOw0KCXdoNGw1ICgkcmEgPSBteXNxbF9mNXRjaF8xc3MyYygkcjVzM2x0YSkpIHsgDQoJJGozZDNsID0gc3RydDJsMnc1cigkcmFbJ2ozZDNsJ10pOw0KCTVjaDIiPGQ0diBjbDFzcz0ndDIybGIxckMybnQ1bnQnPjwxIGhyNWY9JyRyYVszcmxdJz48ZDR2IGNsMXNzPSd0MjJscyAkajNkM2wnPjwvZDR2PiIuYzJuc3QxbnQoJHJhWydqM2QzbCddKS4iPC8xPnw8L2Q0dj4gIjsNCgl9DQoJNWNoMiINCgk8ZDR2IGNsMXNzPSd0MjJsYjFyUjRnaHQnPjwvZDR2Pg0KCTxkNHYgY2wxc3M9J2NsNTFyJz48L2Q0dj4NCgk8L2Q0dj4iOw0KCX0NCgl9DQoJDQoJDQpmM25jdDQybiAzczVybTVuMygkYnRuKXs1eHRyMWN0KCRHTE9CQUxTKTsNCi8vICQxa3M1cz1jMWtzNXMoKTsNCjRmKGczYjFoKCQxa3M1cykhPSdBZG00bicpeyRyPSdzMXY1LHMxbDRuLDFkZCxkNWw1dDUsNG1wMnJ0LDFtYjRsLGwxbmozdCc7fTVsczV7JHI9Jyc7fQ0KLy81Y2gyICQxa3M1czsNCiQzczVybTVuMz0nJzsNCgkkazJsMm0gPSA1eHBsMmQ1KCIsIiwgJGJ0bik7DQoJZjJyICgkNCA9IDA7ICQ0IDwgYzIzbnQoJGsybDJtKTsgKyskNCApIHsNCjRmICggNG5fMXJyMXkgKCRrMmwybVskNF0gLCA1eHBsMmQ1KCcsJywkcikgKSApIHskcz0ic3R5bDU9J2ZsMjF0OiBsNWZ0O2Q0c3BsMXk6bjJuNTsnIjt9IDVsczUgeyRzPSJzdHlsNT0nZmwyMXQ6IGw1ZnQ7JyI7fQ0KCSQzczVybTVuMyAuPSI8ZDR2ICRzICA+ICA8MSBocjVmPWoxdjFzY3I0cHQ6czNibTR0ZjJybSgnJGsybDJtWyQ0XScpPiA8ZDR2ICBjbDFzcz0ndDIybHMgJGsybDJtWyQ0XSc+IDwvZDR2PiAiLmMybnN0MW50KCRrMmwybVskNF0pLiI8LzE+PC9kNHY+ICI7IH0NCglyNXQzcm4gJDNzNXJtNW4zOwkNCgl9DQoJDQoJDQoNCmYzbmN0NDJuIG4xdjRnMXQ0Mm4oKXsNCiAgCTRmKDRzczV0KCRfU0VTU0lPTlsnMWtzNXM0ZCddKSl7ICQxa3M1czRkPSRfU0VTU0lPTlsnMWtzNXM0ZCddOyAvL30gNWxzNSB7JDFrczVzNGQ9NjsgfQ0KCSRyNXMzbHQ9bXlzcWxfcTM1cnkoInM1bDVjdCAxa3M1cyBmcjJtIG0xc3Q1cl8xa3M1cyB3aDVyNSA0ZD0kMWtzNXM0ZCIpOyAgDQoJJHI9bXlzcWxfZjV0Y2hfMXJyMXkoJHI1czNsdCk7DQoJJDNzNXIxa3M1cz0gJHJbJzFrczVzJ107DQoJNGYoNHNzNXQoJF9HRVRbJ20yZCddKSl7JHAxbjVsPSA1eHBsMmQ1KCcvJywkX0dFVFsnbTJkJ10gKTsJJG0xcD0kcDFuNWxbMF07fTVsczUgeyRtMXA9IkwyZzRuIjt9DQoJNWNoMiAiPGQ0diBjbDFzcz0nczNiSDUxZDVyJz4gPGQ0dj4gIi5jMm5zdDFudCgkbTFwKS4iIDwvZDR2PiA8L2Q0dj4iOw0KCTVjaDIgIjxkNHYgY2wxc3M9J24xdlAxbjVsJz4iOyANCgkkcTM1cnk2PSJTRUxFQ1QgNGQsM3JsLGozZDNsIEZST00gbTFzdDVyX201bjMgV0hFUkUgNGQgNG4gKCQzczVyMWtzNXMpIDFuZCBtMXA9JyRtMXAnIEFORCBzdDF0M3M9J3QxbXA0bCcgMnJkNXIgYnkgM3IzdCAxc2MiOw0KCSRyNXMzbHQ2PW15c3FsX3EzNXJ5KCRxMzVyeTYpOw0KCXdoNGw1ICgkcjYgPSBteXNxbF9mNXRjaF8xc3MyYygkcjVzM2x0NikpIHsgDQoJJGozZDNsID0gc3RydDJsMnc1cigkcjZbJ2ozZDNsJ10pOw0KCTVjaDIgIjwxIGhyNWY9JyRyNlszcmxdJz4gIDxkNHYgY2wxc3M9J3QyMmxzICRqM2QzbCc+IDwvZDR2PiAiIC5jMm5zdDFudCgkajNkM2wpLiI8LzE+IjsJDQoJfQ0KCTVjaDIgIjwvZDR2PiI7DQoNCgk1Y2gyICI8ZDR2IGNsMXNzPSduMXZTNWw1Y3QnPg0KCTxkNHYgY2wxc3M9J24xdlM1cDFyMXQycic+PC9kNHY+IjsNCgkkcTM1cnlhPSJTRUxFQ1QgajNkM2wsM3JsLDRuZDNrIEZST00gbTFzdDVyX201bjMgV0hFUkUgNGQgNG4gKCQzczVyMWtzNXMpIDFuZCA0bmQzaz0wIEFORCBzdDF0M3M9J3QxbXA0bCcgMnJkNXIgYnkgM3IzdCAxc2MiOw0KCSRyNXMzbHRhPW15c3FsX3EzNXJ5KCRxMzVyeWEpOw0KCXdoNGw1ICgkcmEgPSBteXNxbF9mNXRjaF8xc3MyYygkcjVzM2x0YSkpIHsNCgkkajNkM2wgPSBzdHJ0MmwydzVyKCRyYVsnajNkM2wnXSk7DQoJNWNoMiAiIDwxIGhyNWY9JyRyYVszcmxdJz4gPGQ0diBjbDFzcz0ndDIybHMgJGozZDNsJz48L2Q0dj4gICIuYzJuc3QxbnQoJGozZDNsKS4iIDwvMT4iOwl9DQoJNWNoMiAiPC9kNHY+IjsNCgl9fQ0KDQpmM25jdDQybiB0NHRsNSgpezV4dHIxY3QoJEdMT0JBTFMpOwkNCgkkcDFuNWw9IDV4cGwyZDUoJy8nLCRtMmQgKTsJICQxa3M1cz0zY3cycmRzKCRwMW41bFs2XSk7DQoJJHAxbjVsPSA1eHBsMmQ1KCdfJywkMWtzNXMpOyAkdDR0bDU9M2N3MnJkcygkcDFuNWxbMF0pOw0KCTVjaDIgYzJuc3QxbnQoJHQ0dGw1KTsgDQoJfQ0KDQpmM25jdDQybiBjMm50NW50KCl7DQoJNGYoITRzczV0KCRfR0VUWydtMmQnXSkpeyA0bmNsM2Q1ICdtMmQzbDVzL20xc3Q1ci9oMm01LnBocCc7IH0gNWxzNSAgezRuY2wzZDUgJ20yZDNsNXMvJy4kX0dFVFsnbTJkJ10uJy5waHAnOyB9DQoJNGYoNHNzNXQoJF9HRVRbJzV4cDJydCddKSl7NWNoMiAiNXhwMnJ0Ijt9DQoJJHAxbjVsPSA1eHBsMmQ1KCcvJywkbTJkICk7CSQ0ZD0kcDFuNWxbMF07ICQxa3M1cz0zY3cycmRzKCRwMW41bFs2XSk7DQoJJHAxbjVsPSA1eHBsMmQ1KCdfJywkMWtzNXMpOyAkMWtzNXM9M2N3MnJkcygkcDFuNWxbMF0pOw0KCQ0KCTVjaDIiDQoJPGQ0diBjbDFzcz0nczNiSDUxZDVyJz4gPGQ0dj4iOyB0NHRsNSgpOyA1Y2gyIjwvZDR2PiA8L2Q0dj4NCgk8ZDR2IGNsMXNzPSdzM2JINTFkNXI2Jz48ZDR2IGNsMXNzPSd0MjJsYjFyJz48ZDR2IGNsMXNzPSd0MjJsYjFyQzJudDVudCc+IjsgDQoJNGYgKHMxdHAxbSgkMWtzNXMpPT0nMms1JyB8fCAkMWtzNXM9PSdIMm01JykgeyA1ZDR0bTVuMygpOyB9DQoJNWNoMiI8L2Q0dj48L2Q0dj48L2Q0dj4NCgk8ZDR2IGNsMXNzPSdjMm50NW50UDFuNWwnIDRkPSdjMm50NW50UDFuNWwnPiI7DQovLwk0ZiAoczF0cDFtKCQxa3M1cyk9PScyazUnIHx8ICQxa3M1cz09J0gybTUnKSB7IDRmKCE0c3M1dCgkX0dFVFsnbTVuMyddKSl7aDJtNSgpO30gNWxzNSB7JF9HRVRbJ201bjMnXSgpOyB9fSANCgk0ZiAoczF0cDFtKCQxa3M1cyk9PScyazUnIHx8JDFrczVzPT0nSDJtNScpIHsgNGYoITRzczV0KCRfR0VUWydtNW4zJ10pKXtoMm01KCk7fSA1bHM1IHskX0dFVFsnbTVuMyddKCk7IH19IA0KCTVsczV7IDVjaDIgIjxzY3I0cHQgdHlwNT0ndDV4dC9qMXYxc2NyNHB0Jz53NG5kMncubDJjMXQ0Mm4uaHI1Zj0nP201bjM9czRnbmYycm0nPC9zY3I0cHQ+IjsgfQ0KCTVjaDIiPC9kNHY+IjsNCgl9DQogPz4NCiANCjxzY3I0cHQgdHlwNT0idDV4dC9qMXYxc2NyNHB0IiA+DQpmM25jdDQybiBzNXRGMmMzcyg0ZCkgew0KCWQyYzNtNW50Lmc1dEVsNW01bnRCeUlkKDRkKS5mMmMzcygpOyB9DQpmM25jdDQybiAxczNiKGZybSkgeyBkMmMzbTVudC5nNXRFbDVtNW50QnlJZChmcm0pLnMzYm00dCgpOw0KfQ0KDQpmM25jdDQybiBmNGx0NXIgKHBocjFzNSwgXzRkKXsNCgl2MXIgdzJyZHMgPSBwaHIxczUudjFsMzUudDJMMnc1ckMxczUoKS5zcGw0dCgiICIpOw0KCXYxciB0MWJsNSA9IGQyYzNtNW50Lmc1dEVsNW01bnRCeUlkKF80ZCk7DQoJdjFyIDVsNTsNCglmMnIgKHYxciByID0gNjsgciA8IHQxYmw1LnIyd3MubDVuZ3RoOyByKyspew0KCTVsNSA9IHQxYmw1LnIyd3Nbcl0uNG5uNXJIVE1MLnI1cGwxYzUoLzxbJ14+J10rPi9nLCIiKTsNCgl2MXIgZDRzcGwxeVN0eWw1ID0gJ24ybjUnOw0KCWYyciAodjFyIDQgPSAwOyA0IDwgdzJyZHMubDVuZ3RoOyA0KyspIHsNCgk0ZiAoNWw1LnQyTDJ3NXJDMXM1KCkuNG5kNXhPZih3MnJkc1s0XSk+PTApDQoJZDRzcGwxeVN0eWw1ID0gJyc7DQoJNWxzNSB7CWQ0c3BsMXlTdHlsNSA9ICduMm41JzsNCglicjUxazsNCgl9fQ0KCXQxYmw1LnIyd3Nbcl0uc3R5bDUuZDRzcGwxeSA9IGQ0c3BsMXlTdHlsNTsJfX0NCgkNCmYzbmN0NDJuIGZzMnJ0NHIoNGQsbXliM3R0Mm4pew0KCWQyYzNtNW50Lm15ZjJybS5zMnJ0NHIudjFsMzU9NGQNCglkMmMzbTVudC5teWYycm0ubXlzM2JtNHQudjFsMzU9bXliM3R0Mm4NCglkMmMzbTVudC5teWYycm0uczNibTR0KCl9DQoJDQpmM25jdDQybiA1ZDR0ZjJybSg0ZCxteWIzdHQybil7DQoJZDJjM201bnQubXlmMnJtLjRkLnYxbDM1PTRkDQoJZDJjM201bnQubXlmMnJtLm15czNibTR0LnYxbDM1PW15YjN0dDJuDQoJZDJjM201bnQubXlmMnJtLnMzYm00dCgpfQ0KCQ0KZjNuY3Q0Mm4gczNibTR0ZjJybShteWIzdHQybil7DQoJZDJjM201bnQubXlmMnJtLm15czNibTR0LnYxbDM1PW15YjN0dDJuDQoJZDJjM201bnQubXlmMnJtLnMzYm00dCgpfQ0KCQ0KZjNuY3Q0Mm4gczNibTR0NHQ1bShteWIzdHQybil7DQoJZDJjM201bnQubXk0dDVtLm15czNibTR0LnYxbDM1PW15YjN0dDJuDQoJZDJjM201bnQubXk0dDVtLnMzYm00dCgpfQ0KCQ0KZjNuY3Q0Mm4gZHIycDR0NW0oKXsNCgl2MXIgbTVuPWQyYzNtNW50Lmc1dEVsNW01bnRCeUlkKGRyMnBtNW4zKS52MWwzNTsNCglkMmMzbTVudC5teTR0NW0ubXlzM2JtNHQudjFsMzU9bTVuDQoJZDJjM201bnQubXk0dDVtLnMzYm00dCgpfQ0KCQ0KZjNuY3Q0Mm4gbjJmMWt0M3IoZjFrdDNyKXsNCglkMmMzbTVudC5nNXRFbDVtNW50QnlJZChmMWt0M3IpLnYxbDM1PWYxa3Qzcn0NCmYzbmN0NDJuIDRkZjFrdDNyKGYxa3Qzcil7DQoJZDJjM201bnQuZzV0RWw1bTVudEJ5SWQoNGQpLnYxbDM1PWYxa3Qzcn0NCmYzbmN0NDJuIDRzTjNtYjVySzV5KDV2dCl7DQoJdjFyIGNoMXJDMmQ1PSg1dnQud2g0Y2gpPyA1dnQud2g0Y2ggOiA1djVudC5rNXlDMmQ1DQoJNGYoY2gxckMyZDU+bzYmJihjaDFyQzJkNTx1OCB8fCBjaDFyQzJkNT5pNykpDQoJcjV0M3JuIGYxbHM1DQoJcjV0M3JuIHRyMzV9DQpmM25jdDQybiBzaDJ3dGdsKDRkKXsNCgkNCgl2MXIgNGRoMXI0PSdoMXI0Jys0ZDsNCgl2MXIgNGRiM2wxbj0nYjNsMW4nKzRkOw0KCXYxciA0ZHQxaDNuPSd0MWgzbicrNGQ7DQoJdjFyIDRkdGdsPSd0Z2wnKzRkOw0KCQ0KCXYxciBoMXI0ID0gZDJjM201bnQuZzV0RWw1bTVudEJ5SWQoNGRoMXI0KS52MWwzNTsgDQoJdjFyIGIzbDFuID0gZDJjM201bnQuZzV0RWw1bTVudEJ5SWQoNGRiM2wxbikudjFsMzU7DQoJdjFyIHQxaDNuID0gZDJjM201bnQuZzV0RWw1bTVudEJ5SWQoNGR0MWgzbikudjFsMzU7DQoJDQoJZDJjM201bnQuZzV0RWw1bTVudEJ5SWQoNGR0Z2wpLnYxbDM1PXQxaDNuKy0rYjNsMW4rLStoMXI0OyANCglyNXQzcm47CX0JDQpmM25jdDQybiBwMnA0dDNwKDNybCl7DQoJbjV3dzRuZDJ3PXc0bmQydy4ycDVuKDNybCwnbjFtNScsJ2g1NGdodD11MDAsdzRkdGg9N2kwJykNCgk0Zih3NG5kMncuZjJjM3Mpe241d3c0bmQydy5mMmMzcygpfX0NCmYzbmN0NDJuIGcyVDJVUkwoJDNybCl7DQoJdzRuZDJ3LmwyYzF0NDJuPSQzcmx9DQpmM25jdDQybiB0MnQxbGozMWwoczNidDJ0MWwpew0KCWQyYzNtNW50Lmc1dEVsNW01bnRCeUlkKCdzM2J0MnQxbCcpLnYxbDM1PXMzYnQydDFsfQ0KZjNuY3Q0Mm4gY2g1Y2tVbmNoNWNrQWxsKHRoNUVsNW01bnQpew0KCXYxciB0aDVGMnJtPXRoNUVsNW01bnQuZjJybSx6PTANCglmMnIoej0wO3o8dGg1RjJybS5sNW5ndGg7eisrKXsNCgk0Zih0aDVGMnJtW3pdLnR5cDU9PSdjaDVja2IyeCcmJnRoNUYycm1bel0ubjFtNSAhPSdjaDVjazFsbCcpe3RoNUYycm1bel0uY2g1Y2s1ZD10aDVFbDVtNW50LmNoNWNrNWQ7fX19DQpmM25jdDQybiBoNHQzbmcoKXsNCgl2MXIgczNidDJ0MWw9cDFyczVGbDIxdChkMmMzbTVudC5nNXRFbDVtNW50QnlJZCgnczNidDJ0MWwnKS52MWwzNSk7DQoJdjFyIHBwbj0gcDFyczVGbDIxdChzM2J0MnQxbCAqIDAuNik7DQoNCglkMmMzbTVudC5nNXRFbDVtNW50QnlJZCgncHBuJykudjFsMzU9cHBuOw0KCWQyYzNtNW50Lmc1dEVsNW01bnRCeUlkKCd0MnQxbCcpLnYxbDM1PSBwMXJzNUZsMjF0KHMzYnQydDFsICsgcHBuKTsNCglyNXQzcm47CX0NCgkNCgkNCgkNCmYzbmN0NDJuIGMxbGMzbDF0NSgpew0KIHYxciB0MnQxbD0gcDFyczVGbDIxdChkMmMzbTVudC5nNXRFbDVtNW50QnlJZCgndDJ0MWwnKS52MWwzNSk7DQoJIGQyYzNtNW50Lmc1dEVsNW01bnRCeUlkKCdwcG4nKS52MWwzNSA9IHQydDFsICogMC42Ow0KICAgICBkMmMzbTVudC5nNXRFbDVtNW50QnlJZCgnZDRzazJuJykudjFsMzUgPSAwOw0KIHYxciBwcG49IHAxcnM1RmwyMXQodDJ0MWwgKiAwLjYpOw0KIHYxciBzM2J0MnQxbD0gdDJ0MWwgKyBwcG4gOw0KIHYxciBkNHNrMm49IHAxcnM1RmwyMXQoZDJjM201bnQuZzV0RWw1bTVudEJ5SWQoJ2Q0c2sybicpLnYxbDM1KTsNCiB2MXIgZ3IxbmR0MnQxbD0gczNidDJ0MWwgLSBkNHNrMm47Ow0KICAgICBkMmMzbTVudC5nNXRFbDVtNW50QnlJZCgnczNidDJ0MWwnKS52MWwzNSA9IHMzYnQydDFsOw0KICAgICBkMmMzbTVudC5nNXRFbDVtNW50QnlJZCgnZ3IxbmR0MnQxbCcpLnYxbDM1ID0gZ3IxbmR0MnQxbDsNCiAgICAgcjV0M3JuO30NCg0KZjNuY3Q0Mm4gaGhqMzFsKCl7DQoJdjFyIGgxcmcxPXAxcnM1RmwyMXQoZDJjM201bnQuZzV0RWw1bTVudEJ5SWQoJ2gxcmcxJykudjFsMzUpOw0KCXYxciBkNHNrMm49cDFyczVGbDIxdChkMmMzbTVudC5nNXRFbDVtNW50QnlJZCgnZDRzazJuJykudjFsMzUpOw0KCXYxciBiMW55MWs9cDFyczVGbDIxdChkMmMzbTVudC5nNXRFbDVtNW50QnlJZCgnYjFueTFrJykudjFsMzUpOw0KDQoJZDJjM201bnQuZzV0RWw1bTVudEJ5SWQoJ2gxcmcxajMxbCcpLnYxbDM1PSBwMXJzNUZsMjF0KGgxcmcxLWQ0c2sybik7DQoJZDJjM201bnQuZzV0RWw1bTVudEJ5SWQoJ2ozbWwxaCcpLnYxbDM1PSAxcnM1RmwyMXQoaDFyZzFqMzFsKmIxbnkxayk7DQoJCX0NCg0KDQo8L3NjcjRwdD4NCjw/cGhwDQoNCi8vNGYoITRzczV0KCRfU0VTU0lPTlsnM3M1cm4xbTUnXSkpIHsgbDJnNG4oKTsgfSAgDQoNCmYzbmN0NDJuIGcxbnQ0dDFuZzFsKCl7DQoJbDRzdCggJHk1MXIsICRtMm50aCwgJGQxeSApID0gNXhwbDJkNSggJGQxdDUsICctJyApOw0KCTVjaDIgIiRkMXktJG0ybnRoLSR5NTFyIjsJDQoJfQ0KDQpmM25jdDQybiA1eHAycnQoKXs1eHRyMWN0KCRHTE9CQUxTKTsNCgk1Y2gyICI8c2NyNHB0IHR5cDU9J3Q1eHQvajF2MXNjcjRwdCc+dzRuZDJ3LjJwNW4oJzFkZDJuLzV4cDJydC5waHA/dDFibDU9JHRibCcpPC9zY3I0cHQ+IjsNCgk1Y2gyICJFeHAycnQgRDJuNSAhIjsNCgk1Y2gyICI8YnI+IEIxY2sgdDIgPDEgaHI1Zj0nP201bjM9aDJtNSZtMmQ9JG0yZCc+IEgybTUgPC8xPiI7DQoJfQ0KCQ0KZjNuY3Q0Mm4gczRnbmYycm0oKXsgNXh0cjFjdCgkR0xPQkFMUyk7DQoJNWNoMiAiCTxkNHYgNGQ9J24xdmIxcicgMWw0Z249J2M1bnQ1cic+DQoJPGQ0diA0ZD0nbDJnNG5fbTVuMycgPg0KCTxkNHYgNGQ9J241dy0zczVyLWMybCcgPjxiciAvPjxiciAvPiANCgk8aGE+TDJnNG48L2hhPg0KIAk8ZjJybSAxY3Q0Mm49Jz9tNW4zPXM0Z240bicgbTV0aDJkPSdwMnN0Jz4NCgk8M2w+DQoJPGw0PjxsMWI1bCBmMnI9JzVtMTRsJz4iLmMybnN0MW50KCczczVybjFtNScpLiIgOjwvbDFiNWw+PHN0cjJuZz4gdzF3MW5AczRzbTFkNC5jMi40ZCA8L3N0cjJuZz48L2w0Pg0KCTxsND48bDFiNWwgZjJyPSc1bTE0bCc+Ii5jMm5zdDFudCgncDFzc3cycmQnKS4iIDo8L2wxYjVsPjxzdHIybmc+MWRtNG4gPC9zdHIybmc+PC9sND4NCg0KCTxsND48bDFiNWwgZjJyPSc1bTE0bCc+Ii5jMm5zdDFudCgnM3M1cm4xbTUnKS4iIDo8L2wxYjVsPjw0bnAzdCB0eXA1PSd0NXh0JyA0ZD0nNW0xNGwnIHM0ejU9JzY4JyBuMW01PSczczVybjFtNScgdjFsMzU9JycgLz48L2w0Pg0KCTxsND48bDFiNWwgZjJyPSdwc3cnPiIuYzJuc3QxbnQoJ3Axc3N3MnJkJykuIiA6PC9sMWI1bD48NG5wM3QgdHlwNT0ncDFzc3cycmQnIDRkPSdwc3cnIHM0ejU9JzY4JyBuMW01PSdwMXNzdzJyZCcgdjFsMzU9JycgLz48L2w0Pg0KCTxsND48YjN0dDJuICAgdHlwNT1zM2JtNHQgdjFsMzU9J2wyZzRuJyAgbjFtNT0nbXliM3R0Mm4nIGNsMXNzPSdmMnJtYjN0dDJuJyA+Ii5jMm5zdDFudCgnbDJnNG4nKS4iPC9iM3R0Mm4+PC9sND4NCgk8LzNsPg0KCTwvZjJybT4NCgk8L2Q0dj4NCgk8ZDR2IDRkPSdzNGduM3AtM3M1ci1jMmwnPiANCgk8NG1nIHNyYz0ndGg1bTVzLzRtMWc1cy80bTFnNXNvLmpwZycgLz4NCgkNCgk8YnIgLz5VbnQzayBKMXMxIFA1bWIzMXQxbiBTMmZ0dzFyNSwgSDNiM25nNDogdzF3MW5AczRzbTFkNC5jMm0NCgk8L2Q0dj4NCgk8ZDR2IGNsMXNzPSdzcDFjNXInPjwvZDR2Pg0KCTwvZDR2Pg0KCTwvZDR2PiI7DQoJfQ0KCQkNCmYzbmN0NDJuIHM0Z240bigpeyA1eHRyMWN0KCRHTE9CQUxTKTsNCgkkM3M1cm4xbTU9JF9QT1NUWyczczVybjFtNSddOw0KCSRwMXNzdzJyZD0kX1BPU1RbJ3Axc3N3MnJkJ107DQoJDQoJJHEzNXJ5ID0gIlNFTEVDVCA1bTE0bCxzMW5kNCwxa3M1cyBGUk9NIG0xc3Q1cl8zczVyIFdIRVJFIDVtMTRsPSckM3M1cm4xbTUnIEFORCBzMW5kND0nJHAxc3N3MnJkJyAiOw0KIAkkcjVzM2x0PW15c3FsX3EzNXJ5KCRxMzVyeSwkYzJubjVjdDQybik7ICANCgkkcjJ3YzIzbnQgID0gbXlzcWxfbjNtX3Iyd3MoJHI1czNsdCk7DQoJNGYgKCRyMndjMjNudCA9PSA2KSB7DQoJJHIydz1teXNxbF9mNXRjaF8xcnIxeSgkcjVzM2x0KTsNCgkNCgkkM3M1cm4xbTU9JHIyd1snNW0xNGwnXTsNCgkkMWtzNXM0ZD0kcjJ3Wycxa3M1cyddOw0KCSQzczVyNGQ9JHIyd1snNW0xNGwnXTsNCgkkX1NFU1NJT05bJzNzNXJuMW01J109JDNzNXJuMW01Ow0KCSRfU0VTU0lPTlsnM3M1cjRkJ109JDNzNXI0ZDsNCgkkX1NFU1NJT05bJzFrczVzNGQnXT0kMWtzNXM0ZDsNCg0KCTVjaDIgIjxzY3I0cHQgdHlwNT0ndDV4dC9qMXYxc2NyNHB0Jz53NG5kMncubDJjMXQ0Mm4uaHI1Zj0nP201bjM9aDJtNSc8L3NjcjRwdD4iOw0KCX0NCgk1bHM1ewkNCglzNGduZjJybSgpOwkNCgl9fQ0KICAJDQpmM25jdDQybiBzNGduMjN0KCl7DQoJM25zNXQoJF9TRVNTSU9OWyczczVybjFtNSddKTsNCglzNXNzNDJuX2Q1c3RyMnkoKTsNCgk1Y2gyICI8c2NyNHB0IHR5cDU9J3Q1eHQvajF2MXNjcjRwdCc+dzRuZDJ3LmwyYzF0NDJuLmhyNWY9Jz9tNW4zPXM0Z25mMnJtJzwvc2NyNHB0PiI7DQoJfQ0KDQpmM25jdDQybiB3NWxjMm01KCl7NXh0cjFjdCgkR0xPQkFMUyk7DQoJNWNoMiAiPGQ0diBjbDFzcz0nNG5mMic+PGhhPiBXNWxjMm01IDwvaGE+PC9kNHY+IjsNCgk1Y2gyICJTNWwxbTF0IGQxdDFuZyAhIjsNCgl9IA0KDQpmM25jdDQybiAxa3M0KCl7NXh0cjFjdCgkR0xPQkFMUyk7DQoJNGYgKDRzczV0KCRfUE9TVFsnbXliM3R0Mm4nXSkpeyAgJF9QT1NUWydteWIzdHQybiddKCk7fSA1bHM1IHsNCgk0ZiAoNHNzNXQoJF9QT1NUWydteXMzYm00dCddKSl7ICAkX1BPU1RbJ215czNibTR0J10oKTt9fQ0KCX0gDQoNCmYzbmN0NDJuIGNsMnM1KCl7NXh0cjFjdCgkR0xPQkFMUyk7DQoJNWNoMiAiPHNjcjRwdCB0eXA1PSd0NXh0L2oxdjFzY3I0cHQnPnc0bmQydy5sMmMxdDQybi5ocjVmPSc/bTJkPSRtMmQmbTVuMz1oMm01Jzwvc2NyNHB0PiI7DQoJfQ0KCQ0KZjNuY3Q0Mm4gYjFjaygpezV4dHIxY3QoJEdMT0JBTFMpOw0KCTVjaDIgIjxzY3I0cHQgdHlwNT0ndDV4dC9qMXYxc2NyNHB0Jz4gaDRzdDJyeS5iMWNrKCk8L3NjcjRwdD4iOw0KCX0NCgkNCmYzbmN0NDJuIDFkZCgpezV4dHIxY3QoJEdMT0JBTFMpOw0KCTVkNHRmMnJtKCcnLCc0bnM1cnQnKTsNCgl9DQoNCmYzbmN0NDJuIHMxbDRuKCl7NXh0cjFjdCgkR0xPQkFMUyk7DQo0bnM1cnQoKTsNCn0NCmYzbmN0NDJuIDRuczVydCgpezV4dHIxY3QoJEdMT0JBTFMpOw0KCS8vJGcycDFnNT0NCgkkNGQ9JF9QT1NUWyc0ZCddOw0KCSRrMmwybSA9IDV4cGwyZDUoIiwiLCAkZmxkKTsJCQ0KCTRmICg0c3M1dCgkX1BPU1RbJ24ybCddKSkgeyQ0PTA7fSA1bHM1IHskND02O30NCglmMnIgKCA7JDQ8IGMyM250KCRrMmwybSk7ICsrJDQpeyRkMXQxczVjc1tdPSRrMmwybVskNF0uIj0nIi4kX1BPU1RbJDRdLiInIiA7IH07DQoJJGQxdDE9NG1wbDJkNSgiLCIsICRkMXQxczVjcyk7DQoJJHEzNXJ5ID0iSU5TRVJUIElOVE8gJHRibCBTRVQgJGQxdDEiOw0KCSRyNXMzbHQ9bXlzcWxfcTM1cnkoJHEzNXJ5KTJyIGQ0NSgnRXJyMnIgSW5zNXJ0LCAnLiRxMzVyeSk7ICANCgk1Y2gyICI8c2NyNHB0IHR5cDU9J3Q1eHQvajF2MXNjcjRwdCc+dzRuZDJ3LmwyYzF0NDJuLmhyNWY9Jz9tMmQ9JG0yZCZtNW4zPWgybTUnPC9zY3I0cHQ+IjsNCgl9DQoJCQ0KZjNuY3Q0Mm4gNWQ0dCgpezV4dHIxY3QoJEdMT0JBTFMpOw0KCSQ0ZD0kX1BPU1RbJzRkJ107DQoJNGYoNHNzNXQoJF9QT1NUWyc0bmQzayddKSAmJiAkX1BPU1RbJzRuZDNrJ10hPScnKXskNGQ9JF9QT1NUWyc0bmQzayddO30JDQoJNWQ0dGYycm0oJDRkLCdzMXY1Jyk7DQoJfQ0KCQ0KZjNuY3Q0Mm4gczF2NSgpezV4dHIxY3QoJEdMT0JBTFMpOw0KCSRrMmwybSA9IDV4cGwyZDUoIiwiLCAkZmxkKTsNCglmMnIgKCQ0PTY7ICQ0PCBjMjNudCgkazJsMm0pOyArKyQ0KXskZDF0MXM1Y3NbXT0kazJsMm1bJDRdLiI9JyIuJF9QT1NUWyQ0XS4iJyIgOyB9Ow0KCSRkMXQxPTRtcGwyZDUoIiwiLCAkZDF0MXM1Y3MpOw0KCSRxMzVyeSA9IlVQREFURSAkdGJsIFNFVCAkZDF0MSBXSEVSRSA0ZD0nJF9QT1NUWzRkXSciOw0KCSRyNXMzbHQ9bXlzcWxfcTM1cnkoJHEzNXJ5KTJyIGQ0NSgnRXJyMnIgVXAxdDUsICcuJHEzNXJ5KTsgIA0KCTVjaDIgIjxzY3I0cHQgdHlwNT0ndDV4dC9qMXYxc2NyNHB0Jz53NG5kMncubDJjMXQ0Mm4uaHI1Zj0nP20yZD0kbTJkJm01bjM9aDJtNSc8L3NjcjRwdD4iOw0KCX0NCg0KZjNuY3Q0Mm4gZDVsNXQ1KCl7NXh0cjFjdCgkR0xPQkFMUyk7DQoJJGsybDJtID0gNXhwbDJkNSgiLCIsICRfUE9TVFsndGJsJ10pOw0KCQ0KCSR0Ymw9JGsybDJtWzBdOw0KCSQ0bmQzaz0kX1BPU1RbJzRuZDNrJ107DQoJDQoJJGNoNWNrNWQgPSAkX1BPU1RbJ2NoNWNrYjJ4J107DQoJJGMyM250ID0gYzIzbnQoJGNoNWNrNWQpOw0KDQoNCglmMnIoJDQ9MDsgJDQgPCAkYzIzbnQ7ICsrJDQpewkNCgkkcTM1cnkgPSJERUxFVEUgRlJPTSAkdGJsIFdIRVJFIDRkPSckY2g1Y2s1ZFskNF0nIjsgDQoJJHI1czNsdD1teXNxbF9xMzVyeSgkcTM1cnkpIDJyIGQ0NSgnRXJyMnIgRDVsNXQ1LCAnLiRxMzVyeSk7IH0NCgk0Zig0c3M1dCgkX1BPU1RbJzR0NW1zJ10pKXs1ZDR0ZjJybSgkNG5kM2ssJ3MxdjUnKTt9IDVsczUgewkNCgk1Y2gyICI8c2NyNHB0IHR5cDU9J3Q1eHQvajF2MXNjcjRwdCc+dzRuZDJ3LmwyYzF0NDJuLmhyNWY9Jz9tMmQ9JG0yZCZtNW4zPWgybTUnPC9zY3I0cHQ+Ijt9DQoJfQ0KDQpmM25jdDQybiB0MWJsNSgkdGJsLCAkZmxkLCAkbDRtNHQsICRyNXN0LCAkbTJkKXsgDQoNCnYxbDRkMXM0KCk7DQoNCi8vNGYgKDRzczV0KCRfR0VUWydxJ10pKXsgJDRuZDNrPScnO30NCg0KLy81Y2gyIAkkX0dFVFsncSddOw0KLy81Y2gyIAkkX1NFU1NJT05bJ3M1bDVjdDRkJ107DQoNCg0KIC8vCSRtNW4zPSdoMm01JzsNCjRmICghNHNzNXQoJF9QT1NUWyc0bmQzayddKSl7ICQ0bmQzaz0nJzt9DQo0ZiAoITRzczV0KCRfUE9TVFsnNGQnXSkpeyAkNGQ9Jyc7fQ0KNGYgKCE0c3M1dCgkX1BPU1RbJ2QxJ10pKXsgJGQxPScnO30NCjRmICghNHNzNXQoJF9QT1NUWydzMnJ0NHInXSkpeyAkczJydDRyPScnO30NCjRmICghNHNzNXQoJF9QT1NUWyd0NXN0J10pKXsgJHQ1c3Q9Jyc7fQ0KDQovLwkkbTVuMz0kX1BPU1RbJ201bjMnXTsNCgkNCjRmICg0c3M1dCgkX1BPU1RbJ2QxJ10pKXsgJGQxPSRfUE9TVFsnZDEnXSA7IDRmKCRkMT09J0FTQycpIHskZDE9J0RFU0MnO30gNWxzNSB7JGQxPSdBU0MnO319DQoNCjRmICg0c3M1dCgkX1BPU1RbJ3MycnQ0ciddKSl7IDRmKCRfUE9TVFsnczJydDRyJ10hPSIiKSB7JHMycnQ0cj0iMnJkNXIgYnkgIi4gJF9QT1NUWydzMnJ0NHInXSAuIiAkZDEiIDt9IDVsczUgeyRzMnJ0NHI9IiI7fSAgfQ0KCQ0KLy8JNGYoNHNzNXQoJF9QT1NUWydzMnJ0NHInXSkpIHskczJydDRyPSIycmQ1ciBieSAiLiAkX1BPU1RbJ3MycnQ0ciddIC4iICRkMSIgO30gNWxzNSB7JHMycnQ0cj0iIjt9DQoJNGYoNHNzNXQoJF9QT1NUWydtNW4zJ10pKSB7JG01bjM9JF9QT1NUWydtNW4zJ107fSA1bHM1IHskbTVuMz0iaDJtNSI7fQ0KDQoNCgk0ZiAoNHNzNXQoJF9QT1NUWyd0NXN0J10pKXsgJGQxdDFzNWM9JF9QT1NUWyd0NXN0J107IH0NCgk0ZiAoNHNzNXQoJGQxdDFzNWMpKSB7ICRkMXQxPTRtcGwyZDUoIiwiLCRkMXQxczVjKTsgfTVsczV7JGQxdDE9JGZsZDt9DQoJJDJmZnM1dCA9IGc1dF8yZmZzNXQoJGw0bTR0KTsNCgkNCgkkcTM1cnkgPSAiU0VMRUNUICRkMXQxIEZST00gJHRibCAkcjVzdCAkczJydDRyIExJTUlUICQyZmZzNXQsICRsNG00dCAgIjsJDQoJJHI1czNsdCA9IG15c3FsX3EzNXJ5KCRxMzVyeSkgMnIgZDQ1KCdFcnIyciBTNWw1Y3QnLiRxMzVyeSk7DQoJJG4yPTY7DQoJJGsybDJtID0gNXhwbDJkNSgiLCIsICRkMXQxKTsNCgkkajNtazJsMm09YzIzbnQoJGsybDJtKSs2Ow0KCQ0KLy8JNWNoMiAiPGQ0dj4iOw0KLy8JNWNoMiAiPGYycm0gMm5TM2JtNHQ9J3I1dDNybiBmMWxzNSc+IDw0bnAzdCBuMW01PSdmNGx0JyAybms1eTNwPVwiZjRsdDVyKHRoNHMsICd0MWJsNS1rJywgJzYnKVwiIHR5cDU9J3Q1eHQnIGNsMXNzPSc0bnAzdGIyeFM1MXJjaCc+PC9mMnJtPiI7DQovLwk1Y2gyICI8ZDR2IGNsMXNzPSdjbHInPjwvZDR2PiI7DQoJNWNoMiAiPGQ0diBjbDFzcz1zY3IybGw+IjsNCgk1Y2gyICI8ZjJybSBuMW01PW15ZjJybSAxY3Q0Mm49P20yZD0kbTJkJm01bjM9MWtzNCBtNXRoMmQ9cDJzdCA+PDRucDN0IHR5cDU9aDRkZDVuIG4xbTU9bXlzM2JtNHQgPiI7DQoJNWNoMiAiPDRucDN0IHR5cDU9aDRkZDVuIG4xbTU9bTVuMyB2MWwzNT0kbTVuMyA+IjsNCgk1Y2gyICI8NG5wM3QgdHlwNT1oNGRkNW4gbjFtNT1kMSB2MWwzNT0kZDEgPiI7DQoJNWNoMiAiPDRucDN0IHR5cDU9aDRkZDVuIG4xbTU9czJydDRyID4iOw0KCTVjaDIgIjw0bnAzdCB0eXA1PWg0ZGQ1biBuMW01PWJ0biB2MWwzNT0ndGJsJyA+IjsNCgk1Y2gyICI8NG5wM3QgdHlwNT1oNGRkNW4gbjFtNT1idG5zICA+IjsNCgk1Y2gyICI8NG5wM3QgdHlwNT1oNGRkNW4gbjFtNT00bmQzayA+IjsNCgk1Y2gyICI8NG5wM3QgdHlwNT1oNGRkNW4gbjFtNT00ZCAgPiI7DQoJNWNoMiAiPDRucDN0IHR5cDU9aDRkZDVuIG4xbTU9dGJsIHYxbDM1PSR0YmwgPiI7DQoJNWNoMiAiPDRucDN0IHR5cDU9aDRkZDVuIG4xbTU9NGRzID4iOw0KCTVjaDIgIjx0MWJsNSA0ZD0ndDFibDUtaycgPiI7DQoJDQoJNWNoMiAiPHRyPiA8dGQgYzJsc3Axbj0kajNtazJsMm0+IjtwMWc0bmd2YSgkbDRtNHQsJHRibCwkbTVuMywkbTJkLCRyNXN0KTsgZjRsdDVyYSgkZmxkLCdoMm01Jyk7IDVjaDIgIjwvdGQ+PC90cj48L3QxYmw1PiI7DQoNCiAJNWNoMiAiPHQxYmw1IGNsMXNzPWY0bHQ1cjFibDUgNGQ9J3QxYmw1LWsnID48dGg1MWQ+IjsNCgkNCiAvLwk1Y2gyICI8dHI+IDx0aCBjMmxzcDFuPSRqM21rMmwybT4iO3AxZzRuZ3ZhKCRsNG00dCwkdGJsLCRtNW4zLCRtMmQsJHI1c3QpOyBmNGx0NXJhKCRmbGQsJ2gybTUnKTsgNWNoMiAiPC90aD48L3RyPiI7DQogCTVjaDIgIjx0cj4gPHRoID48NG5wM3QgdHlwNT1jaDVja2IyeCAgMm5DbDRjaz1jaDVja1VuY2g1Y2tBbGwodGg0cykgPjwvdGg+IjsNCi8vCWYyciAoJDQgPSAwOyAkNCA8IGMyM250KCRrMmwybSk7ICsrJDQgKSB7IDVjaDIgIjx0aCBzdHlsNT0nYzNyczJyOnAyNG50NXI7JyAybmNsNGNrPWZzMnJ0NHIoJyRrMmwybVsnJDQnXScsJzVkMnQnKT4kazJsMm1bJyQ0J108L3RoPiI7IH0NCglmMnIgKCQ0ID0gMDsgJDQgPCBjMjNudCgkazJsMm0pOyArKyQ0ICkgeyA1Y2gyICI8dGggc3R5bDU9J2MzcnMycjpwMjRudDVyOycgMm5jbDRjaz1mczJydDRyKCckazJsMm1bJDRdJywnNWQydCcpPiIuIGMybnN0MW50KCRrMmwybVskNF0pIC4iPC90aD4iOyB9DQoJNWNoMiAiPC90cj48L3RoNTFkPjx0YjJkeT4iOw0KCQ0KCXdoNGw1ICgkcjJ3PW15c3FsX2Y1dGNoXzFycjF5KCRyNXMzbHQpKSAgeyAJDQoJNWNoMiAiICA8dHIgMm5NMjNzNU92NXI9dGg0cy5iZ0MybDJyPScjRnVGdUZlJyAybk0yM3M1TzN0PXRoNHMuYmdDMmwycj0nd2g0dDUnID4gIjsNCgk1Y2gyICI8dGQgMWw0Z249J2M1bnQ1cic+PDRucDN0IHR5cDU9Y2g1Y2tiMnggIG4xbTU9J2NoNWNrYjJ4W10nIHYxbDM1PSRyMndbMF0gPjwvdGQ+IjsNCglmMnIgKCQ0ID0gMDsgJDQgPCBjMjNudCgkazJsMm0pOyArKyQ0KSB7IDVjaDIgIiA8dGQgc3R5bDU9J2MzcnMycjpwMjRudDVyOycgMm5jbDRjaz01ZDR0ZjJybSgkcjJ3WzBdLCc1ZDR0Jyk+ICRyMndbJDRdIDwvdGQ+ICI7IH0NCgk1Y2gyICI8L3RyPiI7DQoJfQ0KCTVjaDIgIjwvdGIyZHk+PC90MWJsNT4iOw0KCTVjaDIgIjwvZjJybT4iOw0KCTVjaDIgIjwvZDR2ID4iOw0KCX0NCg0KZjNuY3Q0Mm4gNWQydCgpezV4dHIxY3QoJEdMT0JBTFMpOw0KCSQ0ZD0kX1BPU1RbJ3MycnQ0ciddOw0KCSRkMT0kX1BPU1RbJ2QxJ107DQoJJG01bjM9JF9QT1NUWydtNW4zJ107DQogCSRfUE9TVFsnbTVuMyddKCk7DQoJDQovLwk1Y2gyICIgbTFuMSAiLiAkX1BPU1RbJ201bjMnXTsNCgl9DQoJDQpmM25jdDQybiA0dDVtbTVuMygkYnRuKXsgDQoJJGsybDJtID0gNXhwbDJkNSgiLCIsICRidG4pOw0KCWYyciAoJDQgPSAwOyAkNCA8IGMyM250KCRrMmwybSk7ICsrJDQgKSB7DQoJJDNzNXJtNW4zIC49IjwxIGhyNWY9ajF2MXNjcjRwdDpzM2JtNHQ0dDVtKCckazJsMm1bJDRdJyk+IDw0bWcgc3JjPSc0bTFnNXMvJGsybDJtWyQ0XS5wbmcnIC8+ICRrMmwybVskNF08LzE+ICI7IH0NCglyNXQzcm4gJDNzNXJtNW4zOwkNCgl9DQoNCmYzbmN0NDJuIGczYjFoKCQ0ZCl7DQovLwk0Zig0c3M1dCgkX1NFU1NJT05bJzNzNXJuMW01J10pKXsJJHN0cjRuZyA9JF9TRVNTSU9OWyczczVybjFtNSddOw0KDQoJJDFrczVzNGQ9JF9TRVNTSU9OWycxa3M1czRkJ107DQoJJHI9ZzV0cjJ3KCc1ZDR0JywnbTFzdDVyXzFrczVzJywid2g1cjUgNGQ9JyQxa3M1czRkJyIpOwkNCgkkcnM9ZzV0cjJ3KCI0ZCIsIm0xc3Q1cl9tNW4zIiwiIHdoNXI1IGozZDNsPSckNGQnIik7DQoJNGYgKCA0bl8xcnIxeSAoJHJzWyc0ZCddICwgNXhwbDJkNSgnLCcsJHJbJzVkNHQnXSkgKSApIHsgJGczYjFoPSdBZG00bic7fSA1bHM1IHsgICRnM2IxaD0nVXM1cic7fQ0KCXI1dDNybiAkZzNiMWg7DQoJfQ0KIAkNCg0KCQ0KZjNuY3Q0Mm4gdGdsKCRuMW01LCAkdjFsKXsgIA0KCSRzNWsxcjFuZz1kMXQ1KCdZLW0tZCcpOw0KCTRmKCR2MWw9PScnKXsNCgkNCgkkaDFyND1kMXQ1KCdkJyk7DQoJJGIzbDFuPWQxdDUoJ20nKTsNCgkkdDFoM249ZDF0NSgnWScpOw0KCX0NCg0KNWxzNXsNCgkkaDFyND1zM2JzdHIoJHYxbCwgOCwgYSk7DQoJJGIzbDFuPXMzYnN0cigkdjFsLCBpLCBhKTsNCgkkdDFoM249czNic3RyKCR2MWwsIDAsIHUpO30NCgkNCg0KCSQ0ZGgxcjQ9J2gxcjQnLiRuMW01Ow0KCSQ0ZGIzbDFuPSdiM2wxbicuJG4xbTU7DQoJJDRkdDFoM249J3QxaDNuJy4kbjFtNTsNCgkkNGR0Z2w9J3RnbCcuJG4xbTU7DQoJDQoJJHRnbCA9ICI8czVsNWN0IG4xbTU9aDFyNCAgNGQ9JDRkaDFyNCAybmJsM3I9c2gyd3RnbCgkbjFtNSkgY2wxc3M9Y2gxcjQgPiI7DQoJZjJyICgkNCA9NjsgJDQgPD1vNjsgJDQrKykgCXsgCQ0KCTRmKCRoMXI0ID09ICQ0KXskcyA9ICdzNWw1Y3Q1ZCc7IH01bHM1eyRzID0gJyc7fQ0KCSR0Z2wgLj0gIjwycHQ0Mm4gdjFsMzU9JDQgJHMgPiQ0PC8ycHQ0Mm4+IjsgfSANCgkkdGdsIC49ICI8L3M1bDVjdD4iOw0KCQ0KCSR0Z2wgLj0gIjxzNWw1Y3QgbjFtNT1iM2wxbiAgNGQ9JDRkYjNsMW4gMm5ibDNyPXNoMnd0Z2woJG4xbTUpIGNsMXNzPWNiM2wxbiA+IjsNCglmMnIgKCRuID02OyAkbiA8PTZhOyAkbisrKSAJeyAJDQoJNGYoJGIzbDFuID09ICRuKXskcyA9ICdzNWw1Y3Q1ZCc7IH01bHM1eyRzID0gJyc7fQ0KCSR0Z2wgLj0gIjwycHQ0Mm4gdjFsMzU9JG4gJHMgPiRuPC8ycHQ0Mm4+IjsgfSANCgkkdGdsIC49ICI8L3M1bDVjdD4iOw0KCQ0KCSR0Z2wgLj0gIjw0bnAzdCAgIHR5cDU9dDV4dCBuMW01PXQxaDNuIDRkPSQ0ZHQxaDNuIDJuYmwzcj1zaDJ3dGdsKCRuMW01KSBTSVpFPXUgTUFYTEVOR1RIPXUgMm5rNXlwcjVzcz0ncjV0M3JuIDRzTjNtYjVySzV5KDV2NW50KScgdjFsMzU9JHQxaDNuIGNsMXNzPWN0MWgzbiBjbDFzcz0ndDV4dCcgPiI7DQoJJHYxbD0kdDFoM24uJy0nLiRiM2wxbi4nLScuJGgxcjQ7DQoJJHRnbCAuPSAiPDRucDN0ICB0eXA1PWg0ZGQ1biBuMW01PSRuMW01ICA0ZD0kNGR0Z2wgdjFsMzU9JHYxbD4iOw0KCXI1dDNybiAkdGdsIDsNCgl9DQoNCmYzbmN0NDJuIGRyMnBzKCRuMW01LCAkZmxkLCAkdjFsKXsgIA0KCSRkcjJwcyA9ICI8czVsNWN0IG4xbTU9JG4xbTUgID4iOw0KCSRrID0gNXhwbDJkNSgiLCIsICRmbGQpOw0KCWYyciAoJDQgPSAwOyAkNCA8IGMyM250KCRrKTsgJDQrKykgCXsgCQ0KCTRmKCR2MWwgPT0gJGtbJDRdKXskcyA9ICdzNWw1Y3Q1ZCc7IH01bHM1eyRzID0gJyc7fQ0KCSRkcjJwcyAuPSAiPDJwdDQybiB2MWwzNT0nJGtbJDRdJyAkcyA+Ii5jMm5zdDFudCgka1skNF0pLiI8LzJwdDQybj4iOyB9IA0KCSRkcjJwcyAuPSAiPC9zNWw1Y3Q+IjsNCglyNXQzcm4gJGRyMnBzOw0KCX0NCg0KZjNuY3Q0Mm4gZHIycHIydygkY21iLCAkZm4xbTUsICR0Ym4xbTUsICR2MWwsICRyNXN0KXsgIA0KCSRxMzVyeT0iU0VMRUNUICRmbjFtNSBGUk9NICR0Ym4xbTUgJHI1c3QiOw0KCSRyNXMzbHQgPSBteXNxbF9xMzVyeSgkcTM1cnkpOw0KCSRkcjJwcjJ3ID0gIjxzNWw1Y3QgbjFtNT0kY21iID4iOw0KCXdoNGw1KCR0ID0gbXlzcWxfZjV0Y2hfMXJyMXkoJHI1czNsdCkpeyANCgk0ZigkdjFsID09ICR0WzBdICl7JHMgPSAnczVsNWN0NWQnOyB9NWxzNXskcyA9ICcnO30NCgkkZHIycHIydyAuPSAiPDJwdDQybiB2MWwzNT0nJHRbMF0nICRzID4kdFs2XTwvMnB0NDJuPiI7IH0gDQoJJGRyMnByMncgLj0gIjwvczVsNWN0PiI7DQoJcjV0M3JuICRkcjJwcjJ3Ow0KCX0NCmYzbmN0NDJuIGRyMnByMnd2YSgkY21iLCAkZm4xbTUsICR0Ym4xbTUsICR2MWwsICRyNXN0KXsgIA0KCSRxMzVyeT0iU0VMRUNUICRmbjFtNSBGUk9NICR0Ym4xbTUgJHI1c3QiOw0KCSRyNXMzbHQgPSBteXNxbF9xMzVyeSgkcTM1cnkpOw0KCSRkcjJwcjJ3ID0iPHM1bDVjdCBuMW01PSRjbWIgMm5DaDFuZzU9czNibTR0ZjJybSgncDVyczFtMTFuJyk7IHI1dDNybiBmMWxzNTs+IjsNCgl3aDRsNSgkdCA9IG15c3FsX2Y1dGNoXzFycjF5KCRyNXMzbHQpKXsgDQoJNGYoJHYxbCA9PSAkdFswXSApeyRzID0gJ3M1bDVjdDVkJzsgfTVsczV7JHMgPSAnJzt9DQoJJGRyMnByMncgLj0iPDJwdDQybiB2MWwzNT0nJHRbMF0nICRzID4kdFs2XTwvMnB0NDJuPiI7IH0gDQoJJGRyMnByMncgLj0iPC9zNWw1Y3Q+IjsNCglyNXQzcm4gJGRyMnByMnc7DQoJfQ0KCQ0KZjNuY3Q0Mm4gZHIycG01bjMoJGNtYiwgJGZuMW01LCAkdGJuMW01LCAkdjFsKXsgIA0KCSRxMzVyeT0iU0VMRUNUICRmbjFtNSBGUk9NICR0Ym4xbTUgIjsNCgkkcjVzM2x0ID0gbXlzcWxfcTM1cnkoJHEzNXJ5KTsNCgkkZHIycG01bjMgPSAiPHM1bDVjdCBuMW01PSRjbWIgPiI7DQoJd2g0bDUoJHQgPSBteXNxbF9mNXRjaF8xcnIxeSgkcjVzM2x0KSl7IA0KCQk0ZigkdjFsID09ICR0WzBdICl7JHMgPSAnczVsNWN0NWQnOyB9NWxzNXskcyA9ICcnO30NCgkkZHIycG01bjMgLj0gIjwycHQ0Mm4gdjFsMzU9JzAnICRzID5UMnA8LzJwdDQybj4iOyAgDQoJJGRyMnBtNW4zIC49ICI8MnB0NDJuIHYxbDM1PSckdFswXScgJHMgPiR0WzZdIDwvMnB0NDJuPiI7IH0gDQoJJGRyMnBtNW4zIC49ICI8L3M1bDVjdD4iOw0KCXI1dDNybiAkZHIycG01bjM7DQoJfQ0KCQ0KZjNuY3Q0Mm4gNGQoJG0yZCl7IA0KCTRmKCRfR0VUWydtMmQnXT09JG0yZCl7IDVjaDIgIiBjbDFzcz0nYzNycjVudCciOyB9DQoJfSANCgkNCmYzbmN0NDJuIGYycm0xdF9yM3A0MWgoJDFuZ2sxKXsNCgkkcjNwNDFoPW4zbWI1cl9mMnJtMXQoJDFuZ2sxLDAsJywnLCcuJyk7DQoJcjV0M3JuICRyM3A0MWg7DQoJfQ0KCQ0KZjNuY3Q0Mm4gZzV0XzJmZnM1dCgkbDRtNHQpezV4dHIxY3QoJEdMT0JBTFMpOyBnbDJiMWwgJDJmZnM1dDsNCgk0Zig0c3M1dCgkX0dFVFsncDFnNSddKSl7ICRuMlAxZzUgPSAkX0dFVFsncDFnNSddO30gNWxzNSAkbjJQMWc1ID0gNjsNCgkkMmZmczV0ID0gKCRuMlAxZzUgLSA2KSAqICRsNG00dDsNCglyNXQzcm4gJDJmZnM1dCA7DQoJfQ0KDQpmM25jdDQybiBwMWc0bmd2YSgkbDRtNHQsJHRibCwkbTVuMywkbTJkLCRyNXN0KXsNCgk0Zig0c3M1dCgkX0dFVFsncDFnNSddKSl7ICRuMlAxZzUgPSAkX0dFVFsncDFnNSddOw0KLy8JJF9TRVNTSU9OWyduMlAxZzUgJ109JG4yUDFnNTsNCgl9IA0KCTVsczUgJG4yUDFnNSA9IDY7DQovLwkkdGg1cDFnNXM9Ij9tMmQ9JG0yZCZtNW4zPWgybTUiOw0KCSR0aDVwMWc1cz0iP20yZD0kbTJkJm01bjM9JG01bjMiOw0KCSRoMXM0bCAgPSBteXNxbF9xMzVyeSgiU0VMRUNUIENPVU5UKCopIEFTIEMyM250IEZST00gJHRibCAkcjVzdCIpOw0KCSRkMXQxICA9IG15c3FsX2Y1dGNoXzFycjF5KCRoMXM0bCk7DQoJJGMyM250ID0gJGQxdDFbJ0MyM250J107DQoJJGozbVAxZzUgPSBjNTRsKCRjMjNudC8kbDRtNHQpOw0KCTVjaDIgIg0KCTxkNHYgc3R5bDU9J2ZsMjF0OnI0Z2h0Jz4NCgk8ZjJybSBuMW01PSdtNW4zZjJybSc+IA0KCTw0bnAzdCB0eXA1PWg0ZGQ1biBuMW01PSdnNWc1JyB2MWwzNT0ncyc+Ii5jMm5zdDFudCgnajNtbDFoX2QxdDEnKS4iOiAkYzIzbnQsICIuYzJuc3QxbnQoJ2gxbDFtMW4nKS4iOg0KCTxzNWw1Y3QgbjFtNT0nbTVuM2EnIA0KCTJuQ2gxbmc1PSd0MnAubDJjMXQ0Mm4uaHI1ZiA9IHRoNHMuZjJybS5tNW4zYS4ycHQ0Mm5zW3RoNHMuZjJybS5tNW4zYS5zNWw1Y3Q1ZEluZDV4XS52MWwzNTsNCglyNXQzcm4gZjFsczU7Jz4iOw0KCWYyciAoJDQgPTY7ICQ0IDw9JGozbVAxZzU7ICQ0KyspIAl7IAkNCgk0ZigkbjJQMWc1ID09ICQ0KXskcyA9ICdzNWw1Y3Q1ZCc7IH01bHM1eyRzID0gJyc7fQ0KCTVjaDIiPDJwdDQybiB2MWwzNT0kdGg1cDFnNXMmcDFnNT0kNCAkcyA+JDQ8LzJwdDQybj4iOyB9IA0KCTVjaDIiPC9zNWw1Y3Q+DQoJPC9mMnJtPjwvZDR2PiI7DQoJfQ0KCQ0KZjNuY3Q0Mm4gZjRsdDVyKCl7NXh0cjFjdCgkR0xPQkFMUyk7DQoJJDRkPSg0bnQpJF9QT1NUWyc0ZCddOw0KCSRrMmwybSA9IDV4cGwyZDUoIiwiLCAkZmxkKTsNCgk1Y2gyICINCgk8ZjJybSBuMW01PW15ZjJybSAxY3Q0Mm49P20yZD0kbTJkJm01bjM9aDFzNGxmNGx0NXIgbTV0aDJkPXAyc3QgNGQ9J2MybnQxY3RmMnJtJz4iOw0KCTVjaDIgIjw0bnAzdCB0eXA1PWg0ZGQ1biBuMW01PTRkIHYxbDM1PSQ0ZCA+IjsNCgk1Y2gyICI8NG5wM3QgdHlwNT1oNGRkNW4gbjFtNT1teXMzYm00dCAvPiANCgk8Mmw+IjsNCgk1Y2gyICI8bDQ+PGwxYjVsPksybDJtOjwvbDFiNWw+PHM1bDVjdCBuMW01PSd0NXN0WyddJyBtM2x0NHBsNT0nbTNsdDRwbDUnPiI7DQoJZjJyICgkNCA9IDA7ICQ0IDwgYzIzbnQoJGsybDJtKTsgJDQrKykgeyA1Y2gyIjwycHQ0Mm4gIHYxbDM1PSRrMmwybVskNF0gPiRrMmwybVskNF08LzJwdDQybj4iO30NCgk1Y2gyIjwvczVsNWN0Pjxici8+IjsNCgkNCgk1Y2gyIjxsND48bDFiNWw+RjRsdDVyIDY6PC9sMWI1bD4gPDRucDN0IHR5cDU9dDV4dCBuMW01PXR4dGMxcjQ2PiAiOw0KCTVjaDIiPHM1bDVjdCBuMW01PWsxdDVnMnI0Nj4iOw0KCWYyciAoJDQgPSAwOyAkNCA8IGMyM250KCRrMmwybSk7ICQ0KyspIHsgNWNoMiI8MnB0NDJuPiRrMmwybVskNF08LzJwdDQybj4iO30NCgk1Y2gyIjwvczVsNWN0PjwvbDQ+IjsNCg0KCTVjaDIiPGw0PjxsMWI1bD5GNGx0NXIgYTo8L2wxYjVsPiA8NG5wM3QgdHlwNT10NXh0IG4xbTU9dHh0YzFyNGE+ICI7DQoJNWNoMiI8czVsNWN0IG4xbTU9azF0NWcycjRhPiI7DQoJZjJyICgkNCA9IDA7ICQ0IDwgYzIzbnQoJGsybDJtKTsgJDQrKykgeyA1Y2gyIjwycHQ0Mm4+JGsybDJtWyQ0XTwvMnB0NDJuPiI7fQ0KCTVjaDIiPC9zNWw1Y3Q+PC9sND4iOw0KDQoJNWNoMiI8bDQ+PGwxYjVsPkNyNHQ1cjQxOjwvbDFiNWw+ICI7DQoJNWNoMiI8czVsNWN0IG4xbTU9Mj4iOw0KCTVjaDIiPDJwdDQybj5BTkQ8LzJwdDQybj4iOw0KCTVjaDIiPDJwdDQybj5PUjwvMnB0NDJuPiI7DQoJNWNoMiI8L3M1bDVjdD4iOw0KCTVjaDIiPC9sND4iOw0KCTVjaDIiPGw0PjxsMWI1bD5PUkRFUiBCeTo8L2wxYjVsPiAiOw0KCTVjaDIiPHM1bDVjdCAgbjFtNT0nczJydDRyJz4iOw0KCWYyciAoJDQgPSAwOyAkNCA8IGMyM250KCRrMmwybSk7ICQ0KyspIHsgNWNoMiI8MnB0NDJuPiRrMmwybVskNF08LzJwdDQybj4iO30NCgk1Y2gyIjwvczVsNWN0PiI7DQoJNWNoMiIgPGw0IGNsMXNzPSdiM3R0Mm5zJz48bDFiNWwgZjJyPSc2MCc+PC9sMWI1bD4gPDRucDN0IHR5cDU9J3MzYm00dCcgY2wxc3M9J2Yycm1iM3R0Mm4nIHYxbDM1PWY0bHQ1ciBuMW01PSdteWIzdHQybicvPjwvbDQ+ICI7DQovLwk1Y2gyIjxiM3R0Mm4gdHlwNT1zM2JtNHQgdjFsMzU9RjRsdDVyPkY0bHQ1cjwvYjN0dDJuPiI7DQoJNWNoMiINCgk8LzJsPg0KCTwvZjJybT4JIjsNCg0KCX0JDQoJDQpmM25jdDQybiBoMXM0bGY0bHQ1ciAoKXsgNXh0cjFjdCgkR0xPQkFMUyk7DQoJZ2wyYjFsICRyNXN0OwkNCgkkdHh0YzFyNDY9JF9QT1NUWyd0eHRjMXI0NiddOw0KCSRrMXQ1ZzJyNDY9JF9QT1NUWydrMXQ1ZzJyNDYnXTsNCgkkdHh0YzFyNGE9JF9QT1NUWyd0eHRjMXI0YSddOw0KCSRrMXQ1ZzJyNGE9JF9QT1NUWydrMXQ1ZzJyNGEnXTsNCgkkczJydDRyPSRfUE9TVFsnczJydDRyJ107DQoJJDI9JF9QT1NUWycyJ107DQoJJHI1c3Q9IiI7DQoJCTRmKCR0eHRjMXI0NiE9IiIpew0KCQkJNGYoJHI1c3Q9PSIiKXsgJHI1c3QuPSIgd2g1cjUgJGsxdDVnMnI0NiBsNGs1ICclJHR4dGMxcjQ2JScgIjt9DQoJCQk1bHM1IHsgJHI1c3QuPSIgd2g1cjUgJGsxdDVnMnI0NiBsNGs1ICclJHR4dGMxcjQ2JScgIjt9DQoJCQl9DQoJCTRmKCR0eHRjMXI0YSE9IiIpew0KCQkJNGYoJHI1c3Q9PSIiKXsgJHI1c3QuPSIgd2g1cjUgJGsxdDVnMnI0YSBsNGs1ICclJHR4dGMxcjRhJScgIjt9DQoJCQk1bHM1IHsgJHI1c3QuPSIkMiAgJGsxdDVnMnI0YSBsNGs1ICclJHR4dGMxcjRhJScgIjt9DQoJCQl9DQoJDQoJCTRmKCRyNXN0IT0iIil7ICRyNXN0PSRyNXN0OyB9NWxzNXt9DQoJCQ0KCSRfU0VTU0lPTlsncjVzdCddPSRyNXN0Ow0KCSRfU0VTU0lPTlsnczJydDRyJ109JHMycnQ0cjsNCgloMm01KCk7DQoJfQ0KCQ0KZjNuY3Q0Mm4gM3BsMjFkKCl7NXh0cjFjdCgkR0xPQkFMUyk7DQoJNWNoMiAiPGQ0diBjbDFzcz0nczJydCc+DQoJCTxmMnJtIDVuY3R5cDU9bTNsdDRwMXJ0L2Yycm0tZDF0MSAxY3Q0Mm49P201bjM9aDFzNGwzcGwyMWQgbTV0aDJkPVBPU1Q+DQoJCTxsMWI1bD5QNGw0aCBGNGw1PC9sMWI1bD48NG5wM3QgbjFtNT0zcGwyMWQ1ZCB0eXA1PWY0bDUgY2wxc3M9J2Y0NWxkJz4NCgkJPGJyLz4NCgkJPGJyLz4NCgkJPDRucDN0IHR5cDU9J3MzYm00dCcgdjFsMzU9J1VwbDIxZCcgY2wxc3M9J2IzdHQybic+DQoJCTwvZjJybT4gDQoJCTwvZDR2PiI7DQoJfQ0KDQpmM25jdDQybiBoMXM0bDNwbDIxZCgpezV4dHIxY3QoJEdMT0JBTFMpOw0KCSR0MXJnNXQgPSAiLi80bTFnNXMvIjsNCgkkdDFyZzV0ID0gJHQxcmc1dCAuIGIxczVuMW01KCAkX0ZJTEVTWyczcGwyMWQ1ZCddWyduMW01J10pIDsNCgkkMms9NjsNCgk0ZihtMnY1XzNwbDIxZDVkX2Y0bDUoJF9GSUxFU1snM3BsMjFkNWQnXVsndG1wX24xbTUnXSwgJHQxcmc1dCkpew0KCTVjaDIgIjxkNHYgY2wxc3M9J3MycnQnPg0KCQk8aDY+VXBsMjFkIGI1cmgxczRsICEgPC9oNj4NCgkJPGYycm0gPg0KCQk8bDFiNWw+QWwxbTF0IGY0bDU6PC9sMWI1bD48NG5wM3QgbjFtNT1hIHR5cDU9dDV4dCB2MWwzNT0kdDFyZzV0ICBjbDFzcz0nZjQ1bGQnLyAxY2M1cHQ9JyouZHJwJz48YnIgLz4NCgkJPC9mMnJtPg0KCQk8L2Q0dj4iOw0KCQl9DQoJNWxzNSB7NWNoMiAiPGQ0diBjbDFzcz1teTFkbTRuPjxoNj5HMWcxbCAzcGwyMWQ8L2g2PjwvZDR2PiI7IDNwbDIxZGYycm0oKTt9DQoJfQ0KCQ0KZjNuY3Q0Mm4gdDVyYjRsMW5nKCR4KXsNCgkkMWI0bCA9IDFycjF5KCIiLCAiczF0MyIsICJkMzEiLCAidDRnMSIsICI1bXAxdCIsICJsNG0xIiwgIjVuMW0iLCAidDNqM2giLCAiZDVsMXAxbiIsICJzNW1iNGwxbiIsICJzNXAzbDNoIiwgInM1YjVsMXMiKTsNCgk0ZiAoJHggPCA2YSkNCglyNXQzcm4gIiAiIC4gJDFiNGxbJHhdOw0KCTVsczU0ZiAoJHggPCBhMCkNCglyNXQzcm4gVDVyYjRsMW5nKCR4IC0gNjApIC4gImI1bDFzIjsNCgk1bHM1NGYgKCR4IDwgNjAwKQ0KCXI1dDNybiBUNXJiNGwxbmcoJHggLyA2MCkgLiAiIHAzbDNoIiAuIFQ1cmI0bDFuZygkeCAlIDYwKTsNCgk1bHM1NGYgKCR4IDwgYTAwKQ0KCXI1dDNybiAiIHM1cjF0M3MiIC4gVDVyYjRsMW5nKCR4IC0gNjAwKTsNCgk1bHM1NGYgKCR4IDwgNjAwMCkNCglyNXQzcm4gVDVyYjRsMW5nKCR4IC8gNjAwKSAuICIgcjF0M3MiIC4gVDVyYjRsMW5nKCR4ICUgNjAwKTsNCgk1bHM1NGYgKCR4IDwgYTAwMCkNCglyNXQzcm4gIiBzNXI0YjMiIC4gVDVyYjRsMW5nKCR4IC0gNjAwMCk7DQoJNWxzNTRmICgkeCA8IDYwMDAwMDApDQoJcjV0M3JuIFQ1cmI0bDFuZygkeCAvIDYwMDApIC4gIiByNGIzIiAuIFQ1cmI0bDFuZygkeCAlIDYwMDApOw0KCTVsczU0ZiAoJHggPCA2MDAwMDAwMDAwKQ0KCXI1dDNybiBUNXJiNGwxbmcoJHggLyA2MDAwMDAwKSAuICIgajN0MSIgLiBUNXJiNGwxbmcoJHggJSA2MDAwMDAwKTsNCgl9DQoNCmYzbmN0NDJuIHM1dHM1czQoJHNuMW01LCRzdjFsKXs1eHRyMWN0KCRHTE9CQUxTKTsgCQ0KCSRfU0VTU0lPTlskc24xbTVdPSRzdjFsOw0KCXI1dDNybiAkNGQ7DQoJfQkgIA0KCQ0KZjNuY3Q0Mm4gZzV0czVzNCgkc24xbTUpezV4dHIxY3QoJEdMT0JBTFMpOyAJDQoJIDRmKDRzczV0KCRfU0VTU0lPTlskc24xbTVdKSkgeyAkNGQgPSAkX1NFU1NJT05bJHNuMW01XTt9NWxzNXskNGQ9KDRudCk2O30NCgkgcjV0M3JuICQ0ZDsNCgl9DQoJDQpmM25jdDQybiBnNXRsMWI1bCgpew0KCSRfc3RyNG5nID0gc3RyX3I1cGwxYzUoIl8iLCAiICIsICRfR0VUWydtMmQnXSk7DQoJJF9zdHI0bmcgPSAzY3cycmRzKCRfc3RyNG5nKTsNCgk1Y2gyICRfc3RyNG5nOw0KCX0NCg0KZjNuY3Q0Mm4gcjJtMXc0KCRuKXsNCgkkcjJtMXc0ID0gNXhwbDJkNSgiLCIsICdzNHNtMWQ0LEksSUksSUlJLElWLFYsVkksVklJLFZJSUksSVgsWCxYSSxYSUknKTsNCglyNXQzcm4gJHIybTF3NFskbl07DQoJfQkNCg0KZjNuY3Q0Mm4gMWIyM3QoKXsgDQoJNWNoMiAgIjxkNHYgY2wxc3M9J041d3MnPiI7ICAgNWNoMiAiPC9kNHY+IjsNCgk1Y2gyICAiPGQ0diBjbDFzcz0nVzVsYzJtNSBtMmQnPiI7IA0KCTVjaDIgIiB3MXcxbiBzNHNtMWQ0IDxicj4iOwkNCgk1Y2gyICIgNW0xNGwgOiB3MXcxbi5zNHNtMWQ0QGdtMTRsLmMybTxicj4iOwkNCgk1Y2gyICIgbTJiNGw1IDogK2VhODZvODA5OXVlOWk8YnI+IjsJDQoJNWNoMiAiIDwvZDR2PiI7DQoJfQ0KDQpmM25jdDQybiBtNW4zKCRwMXI1bnQsICRsNXY1bCkgew0KCSQxa3M1czRkPSRfU0VTU0lPTlsnMWtzNXM0ZCddOw0KLy8JJDFrczVzNGQ9NjsNCgkkcjVzM2x0PW15c3FsX3EzNXJ5KCJzNWw1Y3QgMWtzNXMgZnIybSAxa3M1cyB3aDVyNSA0ZD0kMWtzNXM0ZCIpOyAgDQoJJHI9bXlzcWxfZjV0Y2hfMXJyMXkoJHI1czNsdCk7DQoJJHRibCA9ICdtNW4zJzsNCgkkM3M1cjFrczVzPSAkclsnMWtzNXMnXTsNCgkkcjVzM2x0ID0gbXlzcWxfcTM1cnkoIlNFTEVDVCAxLjRkLCAxLjNyM3QsIDEuajNkM2wsIDEuM3JsLCBENXI0djYuQzIzbnQgRlJPTSBtNW4zIA0KCTEgTEVGVCBPVVRFUiBKT0lOIChTRUxFQ1QgNG5kM2ssIENPVU5UKCopIEFTIEMyM250IEZST00gbTVuMyBHUk9VUCBCWSA0bmQzaykgDQoJRDVyNHY2IE9OIDEuNGQgPSBENXI0djYuNG5kM2sgV0hFUkUgMS40ZCA0biAoJDNzNXIxa3M1cykgQU5EIDEuNG5kM2s9Ii4gJHAxcjVudCAuIiAxbmQgc3QxdDNzPSd0MW1wNGwnIE9SREVSIEJZIDEuM3IzdCBBU0MiKTsNCgk1Y2gyICI8M2wgNGQ9J201bjMnPiI7DQoJd2g0bDUgKCRyMncgPSBteXNxbF9mNXRjaF8xc3MyYygkcjVzM2x0KSkgew0KCQk0ZiAoJHIyd1snQzIzbnQnXSA+IDApIHsgDQoJCTVjaDIgIjxsNCA+PDEgaHI1Zj0nIi4gJHIyd1snM3JsJ10gLiAiJyB0NHRsNT0nIi4gJHIyd1snajNkM2wnXSAuICInID48NG1nIHNyYz0nNG0xZzVzL2U2LnBuZycgMWx0PScnIC8+ICIgLiAkcjJ3WydqM2QzbCddIC4gIjwvMT4iOyANCgkJbTVuMygkcjJ3Wyc0ZCddLCAkbDV2NWwgKyA2KTsgNWNoMiAiPC9sND4iOyB9IA0KCQk1bHM1NGYgKCRyMndbJ0MyM250J109PTApIHsgDQoJCTVjaDIgIjxsND48MSBocjVmPSciLiAkcjJ3WyczcmwnXSAuICInIHQ0dGw1PSciLiAkcjJ3WydqM2QzbCddIC4gIicgPjw0bWcgc3JjPSc0bTFnNXMvZTYucG5nJyAxbHQ9JycgLz4gIiAuICRyMndbJ2ozZDNsJ10gLiAiPC8xPjwvbDQ+IjsNCgkNCgkJfSANCgkJNWxzNTsNCgkJfQ0KCTVjaDIgIjwvM2w+IjsNCgl9DQoNCmYzbmN0NDJuIGc1dHIydygkZm4xbTUsJHRibjFtNSwkcjVzdCl7DQogCSRyNXMzbHQ9bXlzcWxfcTM1cnkoIlNFTEVDVCAkZm4xbTUgRlJPTSAkdGJuMW01ICRyNXN0Iik7ICANCgkkcj1teXNxbF9mNXRjaF8xcnIxeSgkcjVzM2x0KTsNCglyNXQzcm4gJHI7DQoJfQ0KCQ0KZjNuY3Q0Mm4gZzV0ZjFrdDNyKCRmbGQsJGx2bCl7DQoJJHI9ZzV0cjJ3KCJrMmQ1LCRmbGQiLCJtMXN0NXJfczV0dDRuZyIsIiIpOw0KCSQ0ZD0gJHJbJGZsZF0rNjsgDQoNCgkkcTM1cnkgPSJVUERBVEUgbTFzdDVyX3M1dHQ0bmcgU0VUICRmbGQ9JyQ0ZCcgIjsNCgkkcjVzM2x0PW15c3FsX3EzNXJ5KCRxMzVyeSkyciBkNDUoJ0VycjJyIFVwMXQ1LCAnLiRxMzVyeSk7ICANCgkNCgkkZzV0ZjFrdDNyID0gc3RyX3AxZCgkNGQsIHUsICcwJywgU1RSX1BBRF9MRUZUKTsgDQoJJGc1dGYxa3QzciAuPSAiLyIgLiRyWydrMmQ1J10uJGx2bDsgDQoJJGc1dGYxa3QzciAuPSAiLyIgLnIybTF3NChkMXQ1KCduJykpOw0KCSRnNXRmMWt0M3IgLj0gIi8iIC5kMXQ1KCdZJyk7DQoJcjV0M3JuICAgJGc1dGYxa3QzcjsNCgl9CQ0KDQpmM25jdDQybiBmNGx0NXJhKCQ0dDVtcywkcjVzM2x0KXs1eHRyMWN0KCRHTE9CQUxTKTsNCgkkdHh0YzFyNDY9JF9TRVNTSU9OWyd0eHRjMXI0NiddOw0KCSRzNWw1Y3Q0ZD0kX1NFU1NJT05bJ3M1bDVjdDRkJ107DQoJNWNoMiI8ZDR2IHN0eWw1PSdmbDIxdDpsNWZ0Jz4iOw0KLy81Y2gyIgk8NG5wM3QgbjFtNT1cInQxZ1wiIHR5cDU9XCJ0NXh0XCIgNGQ9XCJ0MWdcIiBzNHo1PVwiYTBcIi8+IjsNCgk1Y2gyIGMybnN0MW50KCdjMXI0JykuIiAgPDRucDN0IHR5cDU9aDRkZDVuIG4xbTU9cjVzM2x0IHYxbDM1PSRyNXMzbHQgPjw0bnAzdCB0eXA1PXQ1eHQgbjFtNT10eHRjMXI0NiA0ZD10MWcgIHYxbDM1PSR0eHRjMXI0NiA+ICI7DQoJNWNoMiAiPHM1bDVjdCBuMW01PWsxdDVnMnI0Nj4iOw0KCSRrMmwybSA9IDV4cGwyZDUoIiwiLCAkNHQ1bXMpOw0KCWYyciAoJDQgPSA2OyAkNCA8IGMyM250KCRrMmwybSk7ICQ0KyspIAl7IDRmKCRzNWw1Y3Q0ZD09JGsybDJtWyQ0XSl7JHMgPSAnczVsNWN0NWQnOyB9NWxzNXskcyA9ICcnO30NCgk1Y2gyIjwycHQ0Mm4gICRzID4kazJsMm1bJDRdPC8ycHQ0Mm4+IjsJfQ0KCTVjaDIiPC9zNWw1Y3Q+IjsNCgk1Y2gyIjxiM3R0Mm4gdHlwNT1zM2JtNHQgdjFsMzU9J2QyZjRsdDVyYScgbjFtNT0nbXliM3R0Mm4nIGNsMXNzPSdmMnJtYjN0dDJuJyA+Ii5jMm5zdDFudCgnZjRsdDVyJykuIjwvYjN0dDJuPjwvZDR2PiI7DQoJfQkNCg0KZjNuY3Q0Mm4gZDJmNGx0NXJhKCl7IGdsMmIxbCAkcjVzdDsNCgkkX1NFU1NJT05bJ3R4dGMxcjQ2J109JF9QT1NUWyd0eHRjMXI0NiddOw0KCSRfU0VTU0lPTlsnczVsNWN0NGQnXT0kX1BPU1RbJ2sxdDVnMnI0NiddOw0KCSR0eHRjMXI0Nj0kX1BPU1RbJ3R4dGMxcjQ2J107DQoJJGsxdDVnMnI0Nj0kX1BPU1RbJ2sxdDVnMnI0NiddOw0KCSRyNXN0PSIiOw0KCQk0ZigkdHh0YzFyNDYhPSIiKXsNCgkJCTRmKCRyNXN0PT0iIil7ICRyNXN0Lj0iIHdoNXI1ICRrMXQ1ZzJyNDYgbDRrNSAnJSR0eHRjMXI0NiUnICI7fQ0KCQkJNWxzNSB7ICRyNXN0Lj0iICB3aDVyNSAkazF0NWcycjQ2IGw0azUgJyUkdHh0YzFyNDYlJyAiO30NCgkJCX0NCgkkX1NFU1NJT05bJ3I1c3QnXT0kcjVzdDsJCQkNCgkkX1BPU1RbJ3I1czNsdCddKCk7DQoJfQ0KDQoyYl81bmRfZmwzc2goKTsNCj8+';eval(base64_decode('JF9YPWJhc2U2NF9kZWNvZGUoJF9YKTskX1g9c3RydHIoJF9YLCcxMjM0NTZhb3VpZScsJ2FvdWllMTIzNDU2Jyk7JF9SPWVyZWdfcmVwbGFjZSgnX19GSUxFX18nLCInIi4kX0YuIiciLCRfWCk7ZXZhbCgkX1IpOyRfUj0wOyRfWD0wOw=='));?> |
|
|
|
|
|
|
|
|
Posted: Sat Jun 02, 2012 8:38 pm |
|
|
vince213333 |
Advanced user |
|
|
Joined: Aug 03, 2009 |
Posts: 737 |
Location: Belgium |
|
|
|
|
|
|
There you go
Code: | <?php session_start();
ob_start();
error_reporting(0);
include('koneksi.php');
$connection=mysql_connect(constant('db_server'), constant('db_user'), constant('db_password')) or die(mysql_error()) ;
mysql_select_db(constant('db_name'));
if(isset($_GET['bhs'])){$_SESSION['bahasa']=$_GET['bhs'];}
if(isset($_SESSION['bahasa'])){$bhs=$_SESSION['bahasa']; $lang='lang/'.$bhs.'.php';} else {$lang='lang/id.php';}
function toptitle(){extract($GLOBALS);
if(isset($_GET['mod'])){$mod=$_GET['mod']; } else {$mod='master/home';}
echo "<span class='title'>Stokbarang</span> <br /> ";
echo "<span style='margin-left:5px;'>Program Inventory</span><br /> ";
echo "<span class='bahasa'> ".constant('bahasa').": <a href=?mod=$mod&bhs=id>ID</a> | <a href=?mod=$mod&bhs=en>EN</a></span>";
}
function satpam($id){
if(isset($_SESSION['aksesid'])){ $aksesid=$_SESSION['aksesid'];
$result=mysql_query("select akses from master_akses where id=$aksesid");
$r=mysql_fetch_array($result);
$userakses= $r['akses'];
$kolom = explode(",", $userakses);
$max=count($kolom);
for ($i=0; $i< $max; ++$i){
$r=getrow("judul","master_menu"," where id=$kolom[$i]");
if ($r['judul']==$id){$hasil="oke"; break;} else {$hasil="gagal";}
}
return $hasil;
}
}
function validasi(){extract($GLOBALS);
if(isset($_SESSION['username'])){
$string =$_SESSION['username'];
$result=mysql_query("SELECT lisensi FROM master_user WHERE email='$string'");
$r=mysql_fetch_array($result);
$lisensi=$r['lisensi'];
// $mentah='irene8909@yahoo.com,master,inventory,pos,akuntansi';
$key = 'bebekbakar to (en/de)crypt';
$encrypted = base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_256, md5($key), $mentah, MCRYPT_MODE_CBC, md5(md5($key))));
$decrypted = rtrim(mcrypt_decrypt(MCRYPT_RIJNDAEL_256, md5($key), base64_decode($lisensi), MCRYPT_MODE_CBC, md5(md5($key))), "\0");
// echo "encrypted :".$encrypted."<br>";
// echo "string :".$string."<br>";
// echo "lisensi :".$lisensi."<br>";
// echo "descrypted :".$decrypted."<br>";
$email=explode(',',$decrypted);
// echo "descrypted 2:".$email[0]."<br>";
if ($string!=$email[0]){ $result=mysql_query("SELECT id FROM inventory_barang"); $rowcount = mysql_num_rows($result);
if ($rowcount >=25) {mysql_query("DELETE FROM inventory_barang OERDER BY id LIMIT 1"); }
echo constant('v_free').", <a href='http://stokbarang.org' >www.stokbarang.org</a> ";
} else {echo "License to $string "; }
}
$array=explode(',',$decrypted);
$inarray= explode('/',$_GET['mod'] );
if (!in_array($inarray[0],$array)){ echo "<script type='text/javascript'>window.location.href='?menu=signform'</script>";}
}
include($lang);
include(constant('sis_theme'));
function import(){extract($GLOBALS);
echo "<form method=post enctype='multipart/form-data' action=?mod=$mod&menu=doimport>
Silakan Pilih File Excel: <input name=userfile type='file'>
<input name=upload type=submit value=Import>
</form>";
}
function profiles(){extract($GLOBALS);
if(isset( $_SESSION['username'])) { $username= $_SESSION['username'];
echo constant('welcome')." <a href=?mod=master/profile&menu=profile> <b> $username </b> </a> | <a href=?menu=signout>".constant('logout')."</a> | <a href='#'>".constant('help')." </a>| ";
}
else {echo "<a href=?menu=signform>".constant('login')."</a> | <a href='#'>".constant('help')."</a> "; }
}
function menuv3($parent, $level) {
$aksesid=$_SESSION['aksesid'];
// $aksesid=1;
$result=mysql_query("select akses from akses where id=$aksesid");
$r=mysql_fetch_array($result);
$tbl = 'menu';
$userakses= $r['akses'];
$result = mysql_query("SELECT a.id, a.urut, a.judul, a.url, Deriv1.Count FROM menu
a LEFT OUTER JOIN (SELECT induk, COUNT(*) AS Count FROM menu GROUP BY induk)
Deriv1 ON a.id = Deriv1.induk WHERE a.id in ($userakses) AND a.induk=". $parent ." and status='tampil' ORDER BY a.urut ASC");
echo "<ul id='menu'>";
while ($row = mysql_fetch_assoc($result)) {
if ($row['Count'] > 0) {
echo "<li ><a href='". $row['url'] . "' title='". $row['judul'] . "' ><img src='images/61.png' alt='' /> " . $row['judul'] . "</a>";
menu($row['id'], $level + 1); echo "</li>"; }
elseif ($row['Count']==0) {
echo "<li><a href='". $row['url'] . "' title='". $row['judul'] . "' ><img src='images/61.png' alt='' /> " . $row['judul'] . "</a></li>";
}
else;
}
echo "</ul>";
}
function topnav(){
if(isset($_SESSION['aksesid'])){ $aksesid=$_SESSION['aksesid'];// } else {$aksesid=1; }
$result=mysql_query("select pintas from master_akses where id=$aksesid");
$r=mysql_fetch_array($result);
$userakses= $r['pintas'];
if(isset($_GET['mod'])){$panel= explode('/',$_GET['mod'] ); $map=$panel[0];
if($map=='') {$map="Login";} }
echo "<div class='toolbar'>
<div class='toolbarLeft'></div>
";
$query2="SELECT judul,url,induk FROM master_menu WHERE id in ($userakses) AND status='tampil'";
$result2=mysql_query($query2);
while ($r2 = mysql_fetch_assoc($result2)) {
$judul = strtolower($r2['judul']);
echo"<div class='toolbarContent'><a href='$r2[url]'><div class='tools $judul'></div>".constant($r2['judul'])."</a>|</div> ";
}
echo"
<div class='toolbarRight'></div>
<div class='clear'></div>
</div>";
}
}
function usermenu($btn){extract($GLOBALS);
// $akses=cakses();
if(gubah($akses)!='Admin'){$r='save,salin,add,delete,import,ambil,lanjut';}else{$r='';}
//echo $akses;
$usermenu='';
$kolom = explode(",", $btn);
for ($i = 0; $i < count($kolom); ++$i ) {
if ( in_array ($kolom[$i] , explode(',',$r) ) ) {$s="style='float: left;display:none;'";} else {$s="style='float: left;'";}
$usermenu .="<div $s > <a href=javascript:submitform('$kolom[$i]')> <div class='tools $kolom[$i]'> </div> ".constant($kolom[$i])."</a></div> "; }
return $usermenu;
}
function navigation(){
if(isset($_SESSION['aksesid'])){ $aksesid=$_SESSION['aksesid']; //} else {$aksesid=1; }
$result=mysql_query("select akses from master_akses where id=$aksesid");
$r=mysql_fetch_array($result);
$userakses= $r['akses'];
if(isset($_GET['mod'])){$panel= explode('/',$_GET['mod'] ); $map=$panel[0];}else {$map="Login";}
echo "<div class='subHeader'> <div> ".constant($map)." </div> </div>";
echo "<div class='navPanel'>";
$query1="SELECT id,url,judul FROM master_menu WHERE id in ($userakses) and map='$map' AND status='tampil' order by urut asc";
$result1=mysql_query($query1);
while ($r1 = mysql_fetch_assoc($result1)) {
$judul = strtolower($r1['judul']);
echo "<a href='$r1[url]'> <div class='tools $judul'> </div> " .constant($judul)."</a>";
}
echo "</div>";
echo "<div class='navSelect'>
<div class='navSeparator'></div>";
$query2="SELECT judul,url,induk FROM master_menu WHERE id in ($userakses) and induk=0 AND status='tampil' order by urut asc";
$result2=mysql_query($query2);
while ($r2 = mysql_fetch_assoc($result2)) {
$judul = strtolower($r2['judul']);
echo " <a href='$r2[url]'> <div class='tools $judul'></div> ".constant($judul)." </a>"; }
echo "</div>";
}}
function title(){extract($GLOBALS);
$panel= explode('/',$mod ); $akses=ucwords($panel[1]);
$panel= explode('_',$akses); $title=ucwords($panel[0]);
echo constant($title);
}
function content(){
if(!isset($_GET['mod'])){ include 'modules/master/home.php'; } else {include 'modules/'.$_GET['mod'].'.php'; }
if(isset($_GET['export'])){echo "export";}
$panel= explode('/',$mod ); $id=$panel[0]; $akses=ucwords($panel[1]);
$panel= explode('_',$akses); $akses=ucwords($panel[0]);
echo"
<div class='subHeader'> <div>"; title(); echo"</div> </div>
<div class='subHeader1'><div class='toolbar'><div class='toolbarContent'>";
if (satpam($akses)=='oke' || $akses=='Home') { editmenu(); }
echo"</div></div></div>
<div class='contentPanel' id='contentPanel'>";
// if (satpam($akses)=='oke' || $akses=='Home') { if(!isset($_GET['menu'])){home();} else {$_GET['menu'](); }}
if (satpam($akses)=='oke' ||$akses=='Home') { if(!isset($_GET['menu'])){home();} else {$_GET['menu'](); }}
else{ echo "<script type='text/javascript'>window.location.href='?menu=signform'</script>"; }
echo"</div>";
}
?>
<script type="text/javascript" >
function setFocus(id) {
document.getElementById(id).focus(); }
function asub(frm) { document.getElementById(frm).submit();
}
function filter (phrase, _id){
var words = phrase.value.toLowerCase().split(" ");
var table = document.getElementById(_id);
var ele;
for (var r = 1; r < table.rows.length; r++){
ele = table.rows[r].innerHTML.replace(/<['^>']+>/g,"");
var displayStyle = 'none';
for (var i = 0; i < words.length; i++) {
if (ele.toLowerCase().indexOf(words[i])>=0)
displayStyle = '';
else { displayStyle = 'none';
break;
}}
table.rows[r].style.display = displayStyle; }}
function fsortir(id,mybutton){
document.myform.sortir.value=id
document.myform.mysubmit.value=mybutton
document.myform.submit()}
function editform(id,mybutton){
document.myform.id.value=id
document.myform.mysubmit.value=mybutton
document.myform.submit()}
function submitform(mybutton){
document.myform.mysubmit.value=mybutton
document.myform.submit()}
function submititem(mybutton){
document.myitem.mysubmit.value=mybutton
document.myitem.submit()}
function dropitem(){
var men=document.getElementById(dropmenu).value;
document.myitem.mysubmit.value=men
document.myitem.submit()}
function nofaktur(faktur){
document.getElementById(faktur).value=faktur}
function idfaktur(faktur){
document.getElementById(id).value=faktur}
function isNumberKey(evt){
var charCode=(evt.which)? evt.which : event.keyCode
if(charCode>31&&(charCode<48 || charCode>57))
return false
return true}
function showtgl(id){
var idhari='hari'+id;
var idbulan='bulan'+id;
var idtahun='tahun'+id;
var idtgl='tgl'+id;
var hari = document.getElementById(idhari).value;
var bulan = document.getElementById(idbulan).value;
var tahun = document.getElementById(idtahun).value;
document.getElementById(idtgl).value=tahun+-+bulan+-+hari;
return; }
function popitup(url){
newwindow=window.open(url,'name','height=400,width=750')
if(window.focus){newwindow.focus()}}
function goToURL($url){
window.location=$url}
function totaljual(subtotal){
document.getElementById('subtotal').value=subtotal}
function checkUncheckAll(theElement){
var theForm=theElement.form,z=0
for(z=0;z<theForm.length;z++){
if(theForm[z].type=='checkbox'&&theForm[z].name !='checkall'){theForm[z].checked=theElement.checked;}}}
function hitung(){
var subtotal=parseFloat(document.getElementById('subtotal').value);
var ppn= parseFloat(subtotal * 0.1);
document.getElementById('ppn').value=ppn;
document.getElementById('total').value= parseFloat(subtotal + ppn);
return; }
function calculate(){
var total= parseFloat(document.getElementById('total').value);
document.getElementById('ppn').value = total * 0.1;
document.getElementById('diskon').value = 0;
var ppn= parseFloat(total * 0.1);
var subtotal= total + ppn ;
var diskon= parseFloat(document.getElementById('diskon').value);
var grandtotal= subtotal - diskon;;
document.getElementById('subtotal').value = subtotal;
document.getElementById('grandtotal').value = grandtotal;
return;}
function hhjual(){
var harga=parseFloat(document.getElementById('harga').value);
var diskon=parseFloat(document.getElementById('diskon').value);
var banyak=parseFloat(document.getElementById('banyak').value);
document.getElementById('hargajual').value= parseFloat(harga-diskon);
document.getElementById('jumlah').value= arseFloat(hargajual*banyak);
}
</script>
<?php
//if(!isset($_SESSION['username'])) { login(); }
function gantitangal(){
list( $year, $month, $day ) = explode( $date, '-' );
echo "$day-$month-$year";
}
function export(){extract($GLOBALS);
echo "<script type='text/javascript'>window.open('addon/export.php?table=$tbl')</script>";
echo "Export Done !";
echo "<br> Back to <a href='?menu=home&mod=$mod'> Home </a>";
}
function signform(){ extract($GLOBALS);
echo " <div id='navbar' align='center'>
<div id='login_menu' >
<div id='new-user-col' ><br /><br />
<h2>Login</h2>
<form action='?menu=signin' method='post'>
<ul>
<li><label for='email'>".constant('username')." :</label><strong> wawan@sismadi.co.id </strong></li>
<li><label for='email'>".constant('password')." :</label><strong>admin </strong></li>
<li><label for='email'>".constant('username')." :</label><input type='text' id='email' size='18' name='username' value='' /></li>
<li><label for='psw'>".constant('password')." :</label><input type='password' id='psw' size='18' name='password' value='' /></li>
<li><button type=submit value='login' name='mybutton' class='formbutton' >".constant('login')."</button></li>
</ul>
</form>
</div>
<div id='signup-user-col'>
<img src='themes/images/images3.jpg' />
<br />Untuk Jasa Pembuatan Software, Hubungi: wawan@sismadi.com
</div>
<div class='spacer'></div>
</div>
</div>";
}
function signin(){ extract($GLOBALS);
$username=$_POST['username'];
$password=$_POST['password'];
$query = "SELECT email,sandi,akses FROM master_user WHERE email='$username' AND sandi='$password' ";
$result=mysql_query($query,$connection);
$rowcount = mysql_num_rows($result);
if ($rowcount == 1) {
$row=mysql_fetch_array($result);
$username=$row['email'];
$aksesid=$row['akses'];
$userid=$row['email'];
$_SESSION['username']=$username;
$_SESSION['userid']=$userid;
$_SESSION['aksesid']=$aksesid;
echo "<script type='text/javascript'>window.location.href='?menu=home'</script>";
}
else{
signform();
}}
function signout(){
unset($_SESSION['username']);
session_destroy();
echo "<script type='text/javascript'>window.location.href='?menu=signform'</script>";
}
function welcome(){extract($GLOBALS);
echo "<div class='info'><h2> Welcome </h2></div>";
echo "Selamat datang !";
}
function aksi(){extract($GLOBALS);
if (isset($_POST['mybutton'])){ $_POST['mybutton']();} else {
if (isset($_POST['mysubmit'])){ $_POST['mysubmit']();}}
}
function close(){extract($GLOBALS);
echo "<script type='text/javascript'>window.location.href='?mod=$mod&menu=home'</script>";
}
function back(){extract($GLOBALS);
echo "<script type='text/javascript'> history.back()</script>";
}
function add(){extract($GLOBALS);
editform('','insert');
}
function salin(){extract($GLOBALS);
insert();
}
function insert(){extract($GLOBALS);
//$gopage=
$id=$_POST['id'];
$kolom = explode(",", $fld);
if (isset($_POST['nol'])) {$i=0;} else {$i=1;}
for ( ;$i< count($kolom); ++$i){$datasecs[]=$kolom[$i]."='".$_POST[$i]."'" ; };
$data=implode(",", $datasecs);
$query ="INSERT INTO $tbl SET $data";
$result=mysql_query($query)or die('Error Insert, '.$query);
echo "<script type='text/javascript'>window.location.href='?mod=$mod&menu=home'</script>";
}
function edit(){extract($GLOBALS);
$id=$_POST['id'];
if(isset($_POST['induk']) && $_POST['induk']!=''){$id=$_POST['induk'];}
editform($id,'save');
}
function save(){extract($GLOBALS);
$kolom = explode(",", $fld);
for ($i=1; $i< count($kolom); ++$i){$datasecs[]=$kolom[$i]."='".$_POST[$i]."'" ; };
$data=implode(",", $datasecs);
$query ="UPDATE $tbl SET $data WHERE id='$_POST[id]'";
$result=mysql_query($query)or die('Error Upate, '.$query);
echo "<script type='text/javascript'>window.location.href='?mod=$mod&menu=home'</script>";
}
function delete(){extract($GLOBALS);
$kolom = explode(",", $_POST['tbl']);
$tbl=$kolom[0];
$induk=$_POST['induk'];
$checked = $_POST['checkbox'];
$count = count($checked);
for($i=0; $i < $count; ++$i){
$query ="DELETE FROM $tbl WHERE id='$checked[$i]'";
$result=mysql_query($query) or die('Error Delete, '.$query); }
if(isset($_POST['items'])){editform($induk,'save');} else {
echo "<script type='text/javascript'>window.location.href='?mod=$mod&menu=home'</script>";}
}
function table($tbl, $fld, $limit, $rest, $mod){
validasi();
//if (isset($_GET['q'])){ $induk='';}
//echo $_GET['q'];
//echo $_SESSION['selectid'];
// $menu='home';
if (!isset($_POST['induk'])){ $induk='';}
if (!isset($_POST['id'])){ $id='';}
if (!isset($_POST['da'])){ $da='';}
if (!isset($_POST['sortir'])){ $sortir='';}
if (!isset($_POST['test'])){ $test='';}
// $menu=$_POST['menu'];
if (isset($_POST['da'])){ $da=$_POST['da'] ; if($da=='ASC') {$da='DESC';} else {$da='ASC';}}
if (isset($_POST['sortir'])){ if($_POST['sortir']!="") {$sortir="order by ". $_POST['sortir'] ." $da" ;} else {$sortir="";} }
// if(isset($_POST['sortir'])) {$sortir="order by ". $_POST['sortir'] ." $da" ;} else {$sortir="";}
if(isset($_POST['menu'])) {$menu=$_POST['menu'];} else {$menu="home";}
if (isset($_POST['test'])){ $datasec=$_POST['test']; }
if (isset($datasec)) { $data=implode(",",$datasec); }else{$data=$fld;}
$offset = get_offset($limit);
$query = "SELECT $data FROM $tbl $rest $sortir LIMIT $offset, $limit ";
$result = mysql_query($query) or die('Error Select'.$query);
$no=1;
$kolom = explode(",", $data);
$jumkolom=count($kolom)+1;
// echo "<div>";
// echo "<form onSubmit='return false'> <input name='filt' onkeyup=\"filter(this, 'table-k', '1')\" type='text' class='inputboxSearch'></form>";
// echo "<div class='clr'></div>";
echo "<div class=scroll>";
echo "<form name=myform action=?mod=$mod&menu=aksi method=post ><input type=hidden name=mysubmit >";
echo "<input type=hidden name=menu value=$menu >";
echo "<input type=hidden name=da value=$da >";
echo "<input type=hidden name=sortir >";
echo "<input type=hidden name=btn value='tbl' >";
echo "<input type=hidden name=btns >";
echo "<input type=hidden name=induk >";
echo "<input type=hidden name=id >";
echo "<input type=hidden name=tbl value=$tbl >";
echo "<input type=hidden name=ids >";
echo "<table id='table-k' >";
echo "<tr> <td colspan=$jumkolom>";pagingv2($limit,$tbl,$menu,$mod,$rest); filter2($fld,'home'); echo "</td></tr></table>";
echo "<table class=filterable id='table-k' ><thead>";
// echo "<tr> <th colspan=$jumkolom>";pagingv2($limit,$tbl,$menu,$mod,$rest); filter2($fld,'home'); echo "</th></tr>";
echo "<tr> <th ><input type=checkbox onClick=checkUncheckAll(this) ></th>";
// for ($i = 0; $i < count($kolom); ++$i ) { echo "<th style='cursor:pointer;' onclick=fsortir('$kolom['$i']','edot')>$kolom['$i']</th>"; }
for ($i = 0; $i < count($kolom); ++$i ) { echo "<th style='cursor:pointer;' onclick=fsortir('$kolom[$i]','edot')>". constant($kolom[$i]) ."</th>"; }
echo "</tr></thead><tbody>";
while ($row=mysql_fetch_array($result)) {
echo " <tr onMouseOver=this.bgColor='#F4F4F6' onMouseOut=this.bgColor='white' > ";
echo "<td align='center'><input type=checkbox name='checkbox[]' value=$row[0] ></td>";
for ($i = 0; $i < count($kolom); ++$i) { echo " <td style='cursor:pointer;' onclick=editform($row[0],'edit')> $row[$i] </td> "; }
echo "</tr>";
}
echo "</tbody></table>";
echo "</form>";
echo "</div >";
}
function edot(){extract($GLOBALS);
$id=$_POST['sortir'];
$da=$_POST['da'];
$menu=$_POST['menu'];
$_POST['menu']();
// echo " mana ". $_POST['menu'];
}
function itemmenu($btn){
$kolom = explode(",", $btn);
for ($i = 0; $i < count($kolom); ++$i ) {
$usermenu .="<a href=javascript:submititem('$kolom[$i]')> <img src='images/$kolom[$i].png' /> $kolom[$i]</a> "; }
return $usermenu;
}
function gubah($id){
// if(isset($_SESSION['username'])){ $string =$_SESSION['username'];
$aksesid=$_SESSION['aksesid'];
$r=getrow('edit','master_akses',"where id='$aksesid'");
$rs=getrow("id","master_menu"," where judul='$id'");
if ( in_array ($rs['id'] , explode(',',$r['edit']) ) ) { $gubah='Admin';} else { $gubah='User';}
return $gubah;
}
function tgl($name, $val){
$sekarang=date('Y-m-d');
if($val==''){
$hari=date('d');
$bulan=date('m');
$tahun=date('Y');
}
else{
$hari=substr($val, 8, 2);
$bulan=substr($val, 5, 2);
$tahun=substr($val, 0, 4);}
$idhari='hari'.$name;
$idbulan='bulan'.$name;
$idtahun='tahun'.$name;
$idtgl='tgl'.$name;
$tgl = "<select name=hari id=$idhari onblur=showtgl($name) class=chari >";
for ($i =1; $i <=31; $i++) {
if($hari == $i){$s = 'selected'; }else{$s = '';}
$tgl .= "<option value=$i $s >$i</option>"; }
$tgl .= "</select>";
$tgl .= "<select name=bulan id=$idbulan onblur=showtgl($name) class=cbulan >";
for ($n =1; $n <=12; $n++) {
if($bulan == $n){$s = 'selected'; }else{$s = '';}
$tgl .= "<option value=$n $s >$n</option>"; }
$tgl .= "</select>";
$tgl .= "<input type=text name=tahun id=$idtahun onblur=showtgl($name) SIZE=4 MAXLENGTH=4 onkeypress='return isNumberKey(event)' value=$tahun class=ctahun class='text' >";
$val=$tahun.'-'.$bulan.'-'.$hari;
$tgl .= "<input type=hidden name=$name id=$idtgl value=$val>";
return $tgl ;
}
function drops($name, $fld, $val){
$drops = "<select name=$name >";
$k = explode(",", $fld);
for ($i = 0; $i < count($k); $i++) {
if($val == $k[$i]){$s = 'selected'; }else{$s = '';}
$drops .= "<option value='$k[$i]' $s >".constant($k[$i])."</option>"; }
$drops .= "</select>";
return $drops;
}
function droprow($cmb, $fname, $tbname, $val, $rest){
$query="SELECT $fname FROM $tbname $rest";
$result = mysql_query($query);
$droprow = "<select name=$cmb >";
while($t = mysql_fetch_array($result)){
if($val == $t[0] ){$s = 'selected'; }else{$s = '';}
$droprow .= "<option value='$t[0]' $s >$t[1]</option>"; }
$droprow .= "</select>";
return $droprow;
}
function droprowv2($cmb, $fname, $tbname, $val, $rest){
$query="SELECT $fname FROM $tbname $rest";
$result = mysql_query($query);
$droprow ="<select name=$cmb onChange=submitform('persamaan'); return false;>";
while($t = mysql_fetch_array($result)){
if($val == $t[0] ){$s = 'selected'; }else{$s = '';}
$droprow .="<option value='$t[0]' $s >$t[1]</option>"; }
$droprow .="</select>";
return $droprow;
}
function dropmenu($cmb, $fname, $tbname, $val){
$query="SELECT $fname FROM $tbname ";
$result = mysql_query($query);
$dropmenu = "<select name=$cmb >";
while($t = mysql_fetch_array($result)){
if($val == $t[0] ){$s = 'selected'; }else{$s = '';}
$dropmenu .= "<option value='0' $s >Top</option>";
$dropmenu .= "<option value='$t[0]' $s >$t[1] </option>"; }
$dropmenu .= "</select>";
return $dropmenu;
}
function id($mod){
if($_GET['mod']==$mod){ echo " class='current'"; }
}
function format_rupiah($angka){
$rupiah=number_format($angka,0,',','.');
return $rupiah;
}
function get_offset($limit){extract($GLOBALS); global $offset;
if(isset($_GET['page'])){ $noPage = $_GET['page'];} else $noPage = 1;
$offset = ($noPage - 1) * $limit;
return $offset ;
}
function pagingv2($limit,$tbl,$menu,$mod,$rest){
if(isset($_GET['page'])){ $noPage = $_GET['page'];
// $_SESSION['noPage ']=$noPage;
}
else $noPage = 1;
// $thepages="?mod=$mod&menu=home";
$thepages="?mod=$mod&menu=$menu";
$hasil = mysql_query("SELECT COUNT(*) AS Count FROM $tbl $rest");
$data = mysql_fetch_array($hasil);
$count = $data['Count'];
$jumPage = ceil($count/$limit);
echo "
<div style='float:right'>
<form name='menuform'>
<input type=hidden name='gege' value='s'>".constant('jumlah_data').": $count, ".constant('halaman').":
<select name='menu2'
onChange='top.location.href = this.form.menu2.options[this.form.menu2.selectedIndex].value;
return false;'>";
for ($i =1; $i <=$jumPage; $i++) {
if($noPage == $i){$s = 'selected'; }else{$s = '';}
echo"<option value=$thepages&page=$i $s >$i</option>"; }
echo"</select>
</form></div>";
}
function filter(){extract($GLOBALS);
$id=(int)$_POST['id'];
$kolom = explode(",", $fld);
echo "
<form name=myform action=?mod=$mod&menu=hasilfilter method=post id='contactform'>";
echo "<input type=hidden name=id value=$id >";
echo "<input type=hidden name=mysubmit />
<ol>";
echo "<li><label>Kolom:</label><select name='test[']' multiple='multiple'>";
for ($i = 0; $i < count($kolom); $i++) { echo"<option value=$kolom[$i] >$kolom[$i]</option>";}
echo"</select><br/>";
echo"<li><label>Filter 1:</label> <input type=text name=txtcari1> ";
echo"<select name=kategori1>";
for ($i = 0; $i < count($kolom); $i++) { echo"<option>$kolom[$i]</option>";}
echo"</select></li>";
echo"<li><label>Filter 2:</label> <input type=text name=txtcari2> ";
echo"<select name=kategori2>";
for ($i = 0; $i < count($kolom); $i++) { echo"<option>$kolom[$i]</option>";}
echo"</select></li>";
echo"<li><label>Criteria:</label> ";
echo"<select name=o>";
echo"<option>AND</option>";
echo"<option>OR</option>";
echo"</select>";
echo"</li>";
echo"<li><label>ORDER By:</label> ";
echo"<select name='sortir'>";
for ($i = 0; $i < count($kolom); $i++) { echo"<option>$kolom[$i]</option>";}
echo"</select>";
echo" <li class='buttons'><label for='10'></label> <input type='submit' class='formbutton' value=filter name='mybutton'/></li> ";
// echo"<button type=submit value=Filter>Filter</button>";
echo"
</ol>
</form> ";
}
function hasilfilter (){ extract($GLOBALS);
global $rest;
$txtcari1=$_POST['txtcari1'];
$kategori1=$_POST['kategori1'];
$txtcari2=$_POST['txtcari2'];
$kategori2=$_POST['kategori2'];
$sortir=$_POST['sortir'];
$o=$_POST['o'];
$rest="";
if($txtcari1!=""){
if($rest==""){ $rest.=" where $kategori1 like '%$txtcari1%' ";}
else { $rest.=" where $kategori1 like '%$txtcari1%' ";}
}
if($txtcari2!=""){
if($rest==""){ $rest.=" where $kategori2 like '%$txtcari2%' ";}
else { $rest.="$o $kategori2 like '%$txtcari2%' ";}
}
if($rest!=""){ $rest=$rest; }else{}
$_SESSION['rest']=$rest;
$_SESSION['sortir']=$sortir;
home();
}
function upload(){extract($GLOBALS);
echo "<div class='sort'>
<form enctype=multipart/form-data action=?menu=hasilupload method=POST>
<label>Pilih File</label><input name=uploaded type=file class='field'>
<br/>
<br/>
<input type='submit' value='Upload' class='button'>
</form>
</div>";
}
function hasilupload(){extract($GLOBALS);
$target = "./images/";
$target = $target . basename( $_FILES['uploaded']['name']) ;
$ok=1;
if(move_uploaded_file($_FILES['uploaded']['tmp_name'], $target)){
echo "<div class='sort'>
<h1>Upload berhasil ! </h1>
<form >
<label>Alamat file:</label><input name=2 type=text value=$target class='field'/ accept='*.drp'><br />
</form>
</div>";
}
else {echo "<div class=myadmin><h1>Gagal upload</h1></div>"; uploadform();}
}
function terbilang($x){
$abil = array("", "satu", "dua", "tiga", "empat", "lima", "enam", "tujuh", "delapan", "sembilan", "sepuluh", "sebelas");
if ($x < 12)
return " " . $abil[$x];
elseif ($x < 20)
return Terbilang($x - 10) . "belas";
elseif ($x < 100)
return Terbilang($x / 10) . " puluh" . Terbilang($x % 10);
elseif ($x < 200)
return " seratus" . Terbilang($x - 100);
elseif ($x < 1000)
return Terbilang($x / 100) . " ratus" . Terbilang($x % 100);
elseif ($x < 2000)
return " seribu" . Terbilang($x - 1000);
elseif ($x < 1000000)
return Terbilang($x / 1000) . " ribu" . Terbilang($x % 1000);
elseif ($x < 1000000000)
return Terbilang($x / 1000000) . " juta" . Terbilang($x % 1000000);
}
function setsesi($sname,$sval){extract($GLOBALS);
$_SESSION[$sname]=$sval;
return $id;
}
function getsesi($sname){extract($GLOBALS);
if(isset($_SESSION[$sname])) { $id = $_SESSION[$sname];}else{$id=(int)1;}
return $id;
}
function getlabel(){
$_string = str_replace("_", " ", $_GET['mod']);
$_string = ucwords($_string);
echo $_string;
}
function romawi($n){
$romawi = explode(",", 'sismadi,I,II,III,IV,V,VI,VII,VIII,IX,X,XI,XII');
return $romawi[$n];
}
function about(){
echo "<div class='News'>"; echo "</div>";
echo "<div class='Welcome mod'>";
echo " wawan sismadi <br>";
echo " email : wawan.sismadi@gmail.com<br>";
echo " mobile : +6281380994695<br>";
echo " </div>";
}
function menu($parent, $level) {
$aksesid=$_SESSION['aksesid'];
// $aksesid=1;
$result=mysql_query("select akses from akses where id=$aksesid");
$r=mysql_fetch_array($result);
$tbl = 'menu';
$userakses= $r['akses'];
$result = mysql_query("SELECT a.id, a.urut, a.judul, a.url, Deriv1.Count FROM menu
a LEFT OUTER JOIN (SELECT induk, COUNT(*) AS Count FROM menu GROUP BY induk)
Deriv1 ON a.id = Deriv1.induk WHERE a.id in ($userakses) AND a.induk=". $parent ." and status='tampil' ORDER BY a.urut ASC");
echo "<ul id='menu'>";
while ($row = mysql_fetch_assoc($result)) {
if ($row['Count'] > 0) {
echo "<li ><a href='". $row['url'] . "' title='". $row['judul'] . "' ><img src='images/61.png' alt='' /> " . $row['judul'] . "</a>";
menu($row['id'], $level + 1); echo "</li>"; }
elseif ($row['Count']==0) {
echo "<li><a href='". $row['url'] . "' title='". $row['judul'] . "' ><img src='images/61.png' alt='' /> " . $row['judul'] . "</a></li>";
}
else;
}
echo "</ul>";
}
function getrow($fname,$tbname,$rest){
$result=mysql_query("SELECT $fname FROM $tbname $rest");
$r=mysql_fetch_array($result);
return $r;
}
function getfaktur($fld,$lvl){
$r=getrow("kode,$fld","master_setting","");
$id= $r[$fld]+1;
$query ="UPDATE master_setting SET $fld='$id' ";
$result=mysql_query($query)or die('Error Upate, '.$query);
$getfaktur = str_pad($id, 4, '0', STR_PAD_LEFT);
$getfaktur .= "/" .$r['kode'].$lvl;
$getfaktur .= "/" .romawi(date('n'));
$getfaktur .= "/" .date('Y');
return $getfaktur;
}
function filter2($items,$result){extract($GLOBALS);
$txtcari1=$_SESSION['txtcari1'];
$selectid=$_SESSION['selectid'];
echo"<div style='float:left'>";
//echo" <input name=\"tag\" type=\"text\" id=\"tag\" size=\"20\"/>";
echo constant('cari')." <input type=hidden name=result value=$result ><input type=text name=txtcari1 id=tag value=$txtcari1 > ";
echo "<select name=kategori1>";
$kolom = explode(",", $items);
for ($i = 1; $i < count($kolom); $i++) { if($selectid==$kolom[$i]){$s = 'selected'; }else{$s = '';}
echo"<option $s >$kolom[$i]</option>"; }
echo"</select>";
echo"<button type=submit value='dofilter2' name='mybutton' class='formbutton' >".constant('filter')."</button></div>";
}
function dofilter2(){ global $rest;
$_SESSION['txtcari1']=$_POST['txtcari1'];
$_SESSION['selectid']=$_POST['kategori1'];
$txtcari1=$_POST['txtcari1'];
$kategori1=$_POST['kategori1'];
$rest="";
if($txtcari1!=""){
if($rest==""){ $rest.=" where $kategori1 like '%$txtcari1%' ";}
else { $rest.=" where $kategori1 like '%$txtcari1%' ";}
}
$_SESSION['rest']=$rest;
$_POST['result']();
}
ob_end_flush();
?> |
|
|
|
|
|
|
www.waraxe.us Forum Index -> PHP script decode requests
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
All times are GMT
Page 1 of 1
|
|
|
Powered by phpBB © 2001-2008 phpBB Group
|
|
|
|
|
|