Waraxe IT Security Portal  
  Login or Register
::  Home  ::  Search  ::  Your Account  ::  Forums  ::   Waraxe Advisories  ::  Tools  ::
May 4, 2024
Menu
 Home
 Logout
 Discussions
 Forums
 Members List
 IRC chat
 Tools
 Base64 coder
 MD5 hash
 CRC32 checksum
 ROT13 coder
 SHA-1 hash
 URL-decoder
 Sql Char Encoder
 Affiliates
 y3dips ITsec
 Md5 Cracker
 User Manuals
 AlbumNow
 Content
 Content
 Sections
 FAQ
 Top
 Info
 Feedback
 Recommend Us
 Search
 Journal
 Your Account



User Info
Welcome, Anonymous
Nickname
Password
(Register)

Membership:
Latest: MichaelSnaRe
New Today: 0
New Yesterday: 0
Overall: 9145

People Online:
Visitors: 571
Members: 0
Total: 571
PacketStorm News
·301 Moved Permanently

read more...
Log in Register Forum FAQ Memberlist Search
IT Security and Insecurity Portal

www.waraxe.us Forum Index -> PHP script decode requests -> Help to decode php script
Post new topic  Reply to topic View previous topic :: View next topic 
Help to decode php script
PostPosted: Sat Jun 02, 2012 3:18 am Reply with quote
maumaju
Beginner
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=='));?>
View user's profile Send private message
PostPosted: Sat Jun 02, 2012 8:38 pm Reply with quote
vince213333
Advanced user
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();
?>
View user's profile Send private message
Help to decode php script
  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  

  
  
 Post new topic  Reply to topic  




Powered by phpBB © 2001-2008 phpBB Group






Space Raider game for Android, free download - Space Raider gameplay video - Zone Raider mobile games
All logos and trademarks in this site are property of their respective owner. The comments and posts are property of their posters, all the rest (c) 2004-2020 Janek Vind "waraxe"
Page Generation: 0.201 Seconds