60806040526040518060400160405280601081526020017f457468657265756d205265776172647300000000000000000000000000000000815250600890816200004a91906200052c565b506040518060400160405280600781526020017f4554484554465200000000000000000000000000000000000000000000000000815250600990816200009191906200052c565b506009600a5f6101000a81548160ff021916908360ff160217905550604051620000bb90620002ba565b604051809103905ff080158015620000d5573d5f803e3d5ffd5b50600c5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610e10601055737a250d5630b4cf539739df2c5dacb4c659f2488d60115f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503480156200017b575f80fd5b505f6200018d620002b360201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506040518060a00160405280678ac7230489e800008152602001671bc16d674ec800008152602001670de0b6b3a764000081526020016706f05b59d3b2000081526020016703782dace9d9000081525060125f820151815f01556020820151816001015560408201518160020155606082015181600301556080820151816004015590505062000610565b5f33905090565b610a9680620047ba83390190565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806200034457607f821691505b6020821081036200035a5762000359620002ff565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302620003be7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000381565b620003ca868362000381565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f620004146200040e6200040884620003e2565b620003eb565b620003e2565b9050919050565b5f819050919050565b6200042f83620003f4565b620004476200043e826200041b565b8484546200038d565b825550505050565b5f90565b6200045d6200044f565b6200046a81848462000424565b505050565b5b818110156200049157620004855f8262000453565b60018101905062000470565b5050565b601f821115620004e057620004aa8162000360565b620004b58462000372565b81016020851015620004c5578190505b620004dd620004d48562000372565b8301826200046f565b50505b505050565b5f82821c905092915050565b5f620005025f1984600802620004e5565b1980831691505092915050565b5f6200051c8383620004f1565b9150826002028217905092915050565b6200053782620002c8565b67ffffffffffffffff811115620005535762000552620002d2565b5b6200055f82546200032c565b6200056c82828562000495565b5f60209050601f831160018114620005a2575f84156200058d578287015190505b6200059985826200050f565b86555062000608565b601f198416620005b28662000360565b5f5b82811015620005db57848901518255600182019150602085019450602081019050620005b4565b86831015620005fb5784890151620005f7601f891682620004f1565b8355505b6001600288020188555050505b505050505050565b61419c806200061e5f395ff3fe608060405260043610610228575f3560e01c8063804974ea11610122578063aafd847a116100aa578063e7841ec01161006e578063e7841ec014610840578063e98030c71461086a578063f2fde38b14610892578063fbcbc0f1146108ba578063ffb2c479146108fd57610237565b8063aafd847a1461075c578063bcb4691614610798578063cac8d538146107c6578063dd62ed3e146107ee578063e0fb0f351461082a57610237565b806391b89fba116100f157806391b89fba1461064257806395d89b411461067e578063a457c2d7146106a8578063a8b9d240146106e4578063a9059cbb1461072057610237565b8063804974ea1461058a57806385a6b3ae146105c657806389774282146105f05780638da5cb5b1461061857610237565b8063313ce567116101b05780635f9d7cb6116101745780635f9d7cb6146104bb5780636a474002146104f85780636f2789ec1461050e57806370a0823114610538578063715018a61461057457610237565b8063313ce567146103dd57806331e79db014610407578063395093511461042f5780633974d3b11461046b5780634b1727ff1461049357610237565b806318160ddd116101f757806318160ddd146102d5578063226cfa3d146102ff57806323b872dd1461033b57806327ce0147146103775780633009a609146103b357610237565b806303c833021461023b57806306fdde0314610245578063095ea7b31461026f57806309bbedde146102ab57610237565b366102375761023561093b565b005b5f80fd5b61024361093b565b005b348015610250575f80fd5b50610259610a11565b6040516102669190613171565b60405180910390f35b34801561027a575f80fd5b506102956004803603810190610290919061322f565b610aa1565b6040516102a29190613287565b60405180910390f35b3480156102b6575f80fd5b506102bf610abe565b6040516102cc91906132af565b60405180910390f35b3480156102e0575f80fd5b506102e9610b52565b6040516102f691906132af565b60405180910390f35b34801561030a575f80fd5b50610325600480360381019061032091906132c8565b610b5b565b60405161033291906132af565b60405180910390f35b348015610346575f80fd5b50610361600480360381019061035c91906132f3565b610b70565b60405161036e9190613287565b60405180910390f35b348015610382575f80fd5b5061039d600480360381019061039891906132c8565b610bbc565b6040516103aa91906132af565b60405180910390f35b3480156103be575f80fd5b506103c7610c5c565b6040516103d491906132af565b60405180910390f35b3480156103e8575f80fd5b506103f1610c62565b6040516103fe919061335e565b60405180910390f35b348015610412575f80fd5b5061042d600480360381019061042891906132c8565b610c77565b005b34801561043a575f80fd5b506104556004803603810190610450919061322f565b610de2565b6040516104629190613287565b60405180910390f35b348015610476575f80fd5b50610491600480360381019061048c91906132c8565b610e90565b005b34801561049e575f80fd5b506104b960048036038101906104b491906134b7565b6111c1565b005b3480156104c6575f80fd5b506104e160048036038101906104dc91906134fe565b611207565b6040516104ef929190613529565b60405180910390f35b348015610503575f80fd5b5061050c6113e1565b005b348015610519575f80fd5b506105226113ed565b60405161052f91906132af565b60405180910390f35b348015610543575f80fd5b5061055e600480360381019061055991906132c8565b6113f3565b60405161056b91906132af565b60405180910390f35b34801561057f575f80fd5b50610588611439565b005b348015610595575f80fd5b506105b060048036038101906105ab91906132c8565b611587565b6040516105bd91906132af565b60405180910390f35b3480156105d1575f80fd5b506105da6115cd565b6040516105e791906132af565b60405180910390f35b3480156105fb575f80fd5b50610616600480360381019061061191906135bc565b6115d3565b005b348015610623575f80fd5b5061062c611676565b6040516106399190613609565b60405180910390f35b34801561064d575f80fd5b50610668600480360381019061066391906132c8565b61169d565b60405161067591906132af565b60405180910390f35b348015610689575f80fd5b506106926116ae565b60405161069f9190613171565b60405180910390f35b3480156106b3575f80fd5b506106ce60048036038101906106c9919061322f565b61173e565b6040516106db9190613287565b60405180910390f35b3480156106ef575f80fd5b5061070a600480360381019061070591906132c8565b611806565b60405161071791906132af565b60405180910390f35b34801561072b575f80fd5b506107466004803603810190610741919061322f565b611866565b6040516107539190613287565b60405180910390f35b348015610767575f80fd5b50610782600480360381019061077d91906132c8565b6118b1565b60405161078f91906132af565b60405180910390f35b3480156107a3575f80fd5b506107ac6118f7565b6040516107bd959493929190613622565b60405180910390f35b3480156107d1575f80fd5b506107ec60048036038101906107e791906132c8565b61191a565b005b3480156107f9575f80fd5b50610814600480360381019061080f9190613673565b6119f1565b60405161082191906132af565b60405180910390f35b348015610835575f80fd5b5061083e611a73565b005b34801561084b575f80fd5b50610854611b59565b60405161086191906132af565b60405180910390f35b348015610875575f80fd5b50610890600480360381019061088b91906134fe565b611b62565b005b34801561089d575f80fd5b506108b860048036038101906108b391906132c8565b611cc8565b005b3480156108c5575f80fd5b506108e060048036038101906108db91906132c8565b611e85565b6040516108f49897969594939291906136c9565b60405180910390f35b348015610908575f80fd5b50610923600480360381019061091e91906134fe565b61217e565b60405161093293929190613745565b60405180910390f35b5f610944610b52565b1161094d575f80fd5b5f341115610a0f5761099f610960610b52565b6109847001000000000000000000000000000000003461246490919063ffffffff16565b61098e91906137d4565b6001546124db90919063ffffffff16565b6001819055503373ffffffffffffffffffffffffffffffffffffffff167fa493a9229478c3fcd73f66d2cdeb7f94fd0f341da924d1054236d78454116511346040516109eb91906132af565b60405180910390a2610a0834600b546124db90919063ffffffff16565b600b819055505b565b606060088054610a2090613831565b80601f0160208091040260200160405190810160405280929190818152602001828054610a4c90613831565b8015610a975780601f10610a6e57610100808354040283529160200191610a97565b820191905f5260205f20905b815481529060010190602001808311610a7a57829003601f168201915b5050505050905090565b5f610ab4610aad612538565b848461253f565b6001905092915050565b5f600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663949d225d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b29573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610b4d9190613875565b905090565b5f600754905090565b600f602052805f5260405f205f915090505481565b5f80610bb1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ba890613910565b60405180910390fd5b600190509392505050565b5f700100000000000000000000000000000000610c4b610c4660025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610c38610c33610c22886113f3565b60015461246490919063ffffffff16565b612702565b61271c90919063ffffffff16565b612763565b610c5591906137d4565b9050919050565b600e5481565b5f600a5f9054906101000a900460ff16905090565b610c7f612538565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d0290613978565b60405180910390fd5b610d15815f612778565b600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166329092d0e826040518263ffffffff1660e01b8152600401610d6f9190613609565b5f604051808303815f87803b158015610d86575f80fd5b505af1158015610d98573d5f803e3d5ffd5b505050508073ffffffffffffffffffffffffffffffffffffffff167fa878b31040b2e6d0a9a3d3361209db3908ba62014b0dca52adbaee451d128b2560405160405180910390a250565b5f610e86610dee612538565b84610e818560065f610dfe612538565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546124db90919063ffffffff16565b61253f565b6001905092915050565b5f600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663345487d0836040518263ffffffff1660e01b8152600401610eeb9190613609565b602060405180830381865afa158015610f06573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f2a9190613875565b9050600d5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16630e832273836040518263ffffffff1660e01b8152600401610f869190613609565b602060405180830381865afa158015610fa1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fc591906139aa565b61110e575f610fd382611207565b5090505f81111561107657610fe88382612778565b600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633825d82884836040518363ffffffff1660e01b81526004016110449291906139d5565b5f604051808303815f87803b15801561105b575f80fd5b505af115801561106d573d5f803e3d5ffd5b50505050611108565b611080835f612778565b600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166329092d0e846040518263ffffffff1660e01b81526004016110da9190613609565b5f604051808303815f87803b1580156110f1575f80fd5b505af1158015611103573d5f803e3d5ffd5b505050505b506111b1565b5f611118836113f3565b11156111b057611128825f612778565b600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166329092d0e836040518263ffffffff1660e01b81526004016111829190613609565b5f604051808303815f87803b158015611199575f80fd5b505af11580156111ab573d5f803e3d5ffd5b505050505b5b6111bc8260016127e2565b505050565b5f5b8151811015611203576111ef8282815181106111e2576111e16139fc565b5b6020026020010151610e90565b6001816111fc9190613a29565b90506111c3565b5050565b5f60605f806040518060400160405280600c81526020017f4e6f7420456c696769626c6500000000000000000000000000000000000000008152509050601260040154851061129457670de0b6b3a764000091506040518060400160405280600381526020017f534246000000000000000000000000000000000000000000000000000000000081525090505b60126003015485106112e4576729a2241af62c000091506040518060400160405280600881526020017f476967614368616400000000000000000000000000000000000000000000000081525090505b601260020154851061133457674563918244f4000091506040518060400160405280600981526020017f456c6f6e204d75736b000000000000000000000000000000000000000000000081525090505b601260010154851061138457678ac7230489e8000091506040518060400160405280600781526020017f566974616c696b0000000000000000000000000000000000000000000000000081525090505b60125f015485106113d4576803cb71f51fc558000091506040518060400160405280600381526020017f564950000000000000000000000000000000000000000000000000000000000081525090505b8181935093505050915091565b6113ea33612935565b50565b60105481565b5f60055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b611441612538565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146114cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114c490613978565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b600b5481565b6115db612538565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611667576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165e90613978565b60405180910390fd5b61167182826127e2565b505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f6116a782611806565b9050919050565b6060600980546116bd90613831565b80601f01602080910402602001604051908101604052809291908181526020018280546116e990613831565b80156117345780601f1061170b57610100808354040283529160200191611734565b820191905f5260205f20905b81548152906001019060200180831161171757829003601f168201915b5050505050905090565b5f6117fc61174a612538565b846117f7856040518060600160405280602581526020016141426025913960065f611773612538565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612b4a9092919063ffffffff16565b61253f565b6001905092915050565b5f61185f60035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461185184610bbc565b612bac90919063ffffffff16565b9050919050565b5f806118a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189e90613910565b60405180910390fd5b6001905092915050565b5f60035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6012805f0154908060010154908060020154908060030154908060040154905085565b611922612538565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146119ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119a590613978565b60405180910390fd5b80600d5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f60065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b611a7b612538565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611b07576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611afe90613978565b60405180910390fd5b5f479050611b13611676565b73ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015611b55573d5f803e3d5ffd5b5050565b5f600e54905090565b611b6a612538565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611bf6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bed90613978565b60405180910390fd5b610e108110158015611c0b5750620151808111155b611c4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c4190613acc565b60405180910390fd5b6010548103611c8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c8590613b5a565b60405180910390fd5b601054817f474ea64804364a1e29a4487ddb63c3342a2dd826ccd8acf48825e680a0e6f20f60405160405180910390a38060108190555050565b611cd0612538565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d5390613978565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611dca576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dc190613be8565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f805f805f805f80889750600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663564c8d11896040518263ffffffff1660e01b8152600401611eea9190613609565b602060405180830381865afa158015611f05573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611f299190613c30565b96507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff95505f87126120d557600e54871115611f7b57611f74600e5488612bf590919063ffffffff16565b95506120d4565b5f600e54600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663949d225d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611fe9573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061200d9190613875565b11612018575f6120bb565b6120ba600e54600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663949d225d6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612088573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906120ac9190613875565b612bac90919063ffffffff16565b5b90506120d0818961271c90919063ffffffff16565b9650505b5b6120de88611806565b94506120e988610bbc565b9350600f5f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205492505f8311612138575f61214e565b61214d601054846124db90919063ffffffff16565b5b915042821161215d575f612171565b6121704283612bac90919063ffffffff16565b5b9050919395975091939597565b5f805f80600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663949d225d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156121ec573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122109190613875565b90505f810361222a575f80600e549350935093505061245d565b5f600e5490505f805a90505f805b898410801561224657508582105b1561244457848061225690613c5b565b955050600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663949d225d6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156122c3573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906122e79190613875565b85106122f1575f94505b5f600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663663037ac876040518263ffffffff1660e01b815260040161234c91906132af565b602060405180830381865afa158015612367573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061238b9190613cb6565b90506123d3600f5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612c3c565b156123f8576123e38160016127e2565b156123f75781806123f390613c5b565b9250505b5b828061240390613c5b565b9350505f5a90508085111561243a576124376124288287612bac90919063ffffffff16565b876124db90919063ffffffff16565b95505b8094505050612238565b84600e819055508181600e549850985098505050505050505b9193909250565b5f808303612474575f90506124d5565b5f82846124819190613ce1565b905082848261249091906137d4565b146124d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124c790613d92565b60405180910390fd5b809150505b92915050565b5f8082846124e99190613a29565b90508381101561252e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161252590613dfa565b60405180910390fd5b8091505092915050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036125ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125a490613e88565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361261b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161261290613f16565b60405180910390fd5b8060065f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516126f591906132af565b60405180910390a3505050565b5f808290505f811215612713575f80fd5b80915050919050565b5f80828461272a9190613f34565b90505f831215801561273c5750838112155b8061275157505f8312801561275057508381125b5b612759575f80fd5b8091505092915050565b5f80821215612770575f80fd5b819050919050565b5f612782836113f3565b9050808211156127b2575f6127a08284612bac90919063ffffffff16565b90506127ac8482612c6d565b506127dd565b808210156127dc575f6127ce8383612bac90919063ffffffff16565b90506127da8482612e9d565b505b5b505050565b5f806127ed84612935565b90505f81111561292a575f60045f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905061284b81836124db90919063ffffffff16565b60045f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555042600f5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508315158573ffffffffffffffffffffffffffffffffffffffff167fa2c38e2d2fb7e3e1912d937fd1ca11ed6d51864dee4cfa7a7bf02becd7acf0928460405161291791906132af565b60405180910390a360019250505061292f565b5f9150505b92915050565b5f8061294083611806565b90505f811115612b405761299a8160035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546124db90919063ffffffff16565b60035f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff167fee503bee2bb6a87e57bc57db795f98137327401a0e7b7ce42e37926cc1a9ca4d82604051612a2191906132af565b60405180910390a25f8373ffffffffffffffffffffffffffffffffffffffff1682610bb890604051612a5290613fa2565b5f60405180830381858888f193505050503d805f8114612a8d576040519150601f19603f3d011682016040523d82523d5f602084013e612a92565b606091505b5050905080612b3657612aeb8260035f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612bac90919063ffffffff16565b60035f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f92505050612b45565b8192505050612b45565b5f9150505b919050565b5f838311158290612b91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b889190613171565b60405180910390fd5b505f8385612b9f9190613fb6565b9050809150509392505050565b5f612bed83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612b4a565b905092915050565b5f808284612c039190613fe9565b90505f8312158015612c155750838113155b80612c2a57505f83128015612c2957508381135b5b612c32575f80fd5b8091505092915050565b5f42821115612c4d575f9050612c68565b601054612c638342612bac90919063ffffffff16565b101590505b919050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612cdb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612cd290614073565b60405180910390fd5b612cf0816007546124db90919063ffffffff16565b600781905550612d468160055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546124db90919063ffffffff16565b60055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612de491906132af565b60405180910390a3612e58612e0c612e078360015461246490919063ffffffff16565b612702565b60025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612bf590919063ffffffff16565b60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612f0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f0290614101565b60405180910390fd5b612f75816040518060600160405280602281526020016141206022913960055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612b4a9092919063ffffffff16565b60055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550612fcb81600754612bac90919063ffffffff16565b6007819055505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161302e91906132af565b60405180910390a36130a26130566130518360015461246490919063ffffffff16565b612702565b60025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461271c90919063ffffffff16565b60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561311e578082015181840152602081019050613103565b5f8484015250505050565b5f601f19601f8301169050919050565b5f613143826130e7565b61314d81856130f1565b935061315d818560208601613101565b61316681613129565b840191505092915050565b5f6020820190508181035f8301526131898184613139565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6131cb826131a2565b9050919050565b6131db816131c1565b81146131e5575f80fd5b50565b5f813590506131f6816131d2565b92915050565b5f819050919050565b61320e816131fc565b8114613218575f80fd5b50565b5f8135905061322981613205565b92915050565b5f80604083850312156132455761324461319a565b5b5f613252858286016131e8565b92505060206132638582860161321b565b9150509250929050565b5f8115159050919050565b6132818161326d565b82525050565b5f60208201905061329a5f830184613278565b92915050565b6132a9816131fc565b82525050565b5f6020820190506132c25f8301846132a0565b92915050565b5f602082840312156132dd576132dc61319a565b5b5f6132ea848285016131e8565b91505092915050565b5f805f6060848603121561330a5761330961319a565b5b5f613317868287016131e8565b9350506020613328868287016131e8565b92505060406133398682870161321b565b9150509250925092565b5f60ff82169050919050565b61335881613343565b82525050565b5f6020820190506133715f83018461334f565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6133b182613129565b810181811067ffffffffffffffff821117156133d0576133cf61337b565b5b80604052505050565b5f6133e2613191565b90506133ee82826133a8565b919050565b5f67ffffffffffffffff82111561340d5761340c61337b565b5b602082029050602081019050919050565b5f80fd5b5f61343461342f846133f3565b6133d9565b905080838252602082019050602084028301858111156134575761345661341e565b5b835b81811015613480578061346c88826131e8565b845260208401935050602081019050613459565b5050509392505050565b5f82601f83011261349e5761349d613377565b5b81356134ae848260208601613422565b91505092915050565b5f602082840312156134cc576134cb61319a565b5b5f82013567ffffffffffffffff8111156134e9576134e861319e565b5b6134f58482850161348a565b91505092915050565b5f602082840312156135135761351261319a565b5b5f6135208482850161321b565b91505092915050565b5f60408201905061353c5f8301856132a0565b818103602083015261354e8184613139565b90509392505050565b5f613561826131a2565b9050919050565b61357181613557565b811461357b575f80fd5b50565b5f8135905061358c81613568565b92915050565b61359b8161326d565b81146135a5575f80fd5b50565b5f813590506135b681613592565b92915050565b5f80604083850312156135d2576135d161319a565b5b5f6135df8582860161357e565b92505060206135f0858286016135a8565b9150509250929050565b613603816131c1565b82525050565b5f60208201905061361c5f8301846135fa565b92915050565b5f60a0820190506136355f8301886132a0565b61364260208301876132a0565b61364f60408301866132a0565b61365c60608301856132a0565b61366960808301846132a0565b9695505050505050565b5f80604083850312156136895761368861319a565b5b5f613696858286016131e8565b92505060206136a7858286016131e8565b9150509250929050565b5f819050919050565b6136c3816136b1565b82525050565b5f610100820190506136dd5f83018b6135fa565b6136ea602083018a6136ba565b6136f760408301896136ba565b61370460608301886132a0565b61371160808301876132a0565b61371e60a08301866132a0565b61372b60c08301856132a0565b61373860e08301846132a0565b9998505050505050505050565b5f6060820190506137585f8301866132a0565b61376560208301856132a0565b61377260408301846132a0565b949350505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6137de826131fc565b91506137e9836131fc565b9250826137f9576137f861377a565b5b828204905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061384857607f821691505b60208210810361385b5761385a613804565b5b50919050565b5f8151905061386f81613205565b92915050565b5f6020828403121561388a5761388961319a565b5b5f61389784828501613861565b91505092915050565b7f4e6f207472616e736665727320616c6c6f77656420696e206469766964656e645f8201527f20747261636b6572000000000000000000000000000000000000000000000000602082015250565b5f6138fa6028836130f1565b9150613905826138a0565b604082019050919050565b5f6020820190508181035f830152613927816138ee565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6139626020836130f1565b915061396d8261392e565b602082019050919050565b5f6020820190508181035f83015261398f81613956565b9050919050565b5f815190506139a481613592565b92915050565b5f602082840312156139bf576139be61319a565b5b5f6139cc84828501613996565b91505092915050565b5f6040820190506139e85f8301856135fa565b6139f560208301846132a0565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f613a33826131fc565b9150613a3e836131fc565b9250828201905080821115613a5657613a556137a7565b5b92915050565b7f436c61696d57616974206d757374206265207570646174656420746f206265745f8201527f7765656e203120616e6420323420686f75727300000000000000000000000000602082015250565b5f613ab66033836130f1565b9150613ac182613a5c565b604082019050919050565b5f6020820190508181035f830152613ae381613aaa565b9050919050565b7f43616e6e6f742075706461746520636c61696d5761697420746f2073616d65205f8201527f76616c7565000000000000000000000000000000000000000000000000000000602082015250565b5f613b446025836130f1565b9150613b4f82613aea565b604082019050919050565b5f6020820190508181035f830152613b7181613b38565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f613bd26026836130f1565b9150613bdd82613b78565b604082019050919050565b5f6020820190508181035f830152613bff81613bc6565b9050919050565b613c0f816136b1565b8114613c19575f80fd5b50565b5f81519050613c2a81613c06565b92915050565b5f60208284031215613c4557613c4461319a565b5b5f613c5284828501613c1c565b91505092915050565b5f613c65826131fc565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613c9757613c966137a7565b5b600182019050919050565b5f81519050613cb0816131d2565b92915050565b5f60208284031215613ccb57613cca61319a565b5b5f613cd884828501613ca2565b91505092915050565b5f613ceb826131fc565b9150613cf6836131fc565b9250828202613d04816131fc565b91508282048414831517613d1b57613d1a6137a7565b5b5092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613d7c6021836130f1565b9150613d8782613d22565b604082019050919050565b5f6020820190508181035f830152613da981613d70565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f613de4601b836130f1565b9150613def82613db0565b602082019050919050565b5f6020820190508181035f830152613e1181613dd8565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f613e726024836130f1565b9150613e7d82613e18565b604082019050919050565b5f6020820190508181035f830152613e9f81613e66565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f613f006022836130f1565b9150613f0b82613ea6565b604082019050919050565b5f6020820190508181035f830152613f2d81613ef4565b9050919050565b5f613f3e826136b1565b9150613f49836136b1565b92508282019050828112155f8312168382125f841215161715613f6f57613f6e6137a7565b5b92915050565b5f81905092915050565b50565b5f613f8d5f83613f75565b9150613f9882613f7f565b5f82019050919050565b5f613fac82613f82565b9150819050919050565b5f613fc0826131fc565b9150613fcb836131fc565b9250828203905081811115613fe357613fe26137a7565b5b92915050565b5f613ff3826136b1565b9150613ffe836136b1565b925082820390508181125f8412168282135f851215161715614023576140226137a7565b5b92915050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f61405d601f836130f1565b915061406882614029565b602082019050919050565b5f6020820190508181035f83015261408a81614051565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f206164647265735f8201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b5f6140eb6021836130f1565b91506140f682614091565b604082019050919050565b5f6020820190508181035f830152614118816140df565b905091905056fe45524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212200efde2a854acf3255a139ef3c0e804e143bcbc688016ef36bf09a754d2a959f964736f6c63430008160033608060405234801561000f575f80fd5b50610a798061001d5f395ff3fe608060405234801561000f575f80fd5b506004361061007b575f3560e01c8063663037ac11610059578063663037ac146100e7578063949d225d14610117578063c2bc2efc14610135578063cd413329146101655761007b565b806329092d0e1461007f5780633825d8281461009b578063564c8d11146100b7575b5f80fd5b6100996004803603810190610094919061080e565b610195565b005b6100b560048036038101906100b0919061086c565b61043c565b005b6100d160048036038101906100cc919061080e565b610621565b6040516100de91906108c2565b60405180910390f35b61010160048036038101906100fc91906108db565b6106e2565b60405161010e9190610915565b60405180910390f35b61011f610727565b60405161012c919061093d565b60405180910390f35b61014f600480360381019061014a919061080e565b610734565b60405161015c919061093d565b60405180910390f35b61017f600480360381019061017a919061080e565b61077c565b60405161018c9190610970565b60405180910390f35b5f6003015f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615610439575f6003015f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81549060ff02191690555f6001015f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f90555f806002015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f60015f8001805490506102cd91906109b6565b90505f805f0182815481106102e5576102e46109e9565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050825f6002015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f6002015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9055805f800184815481106103ab576103aa6109e9565b5b905f5260205f20015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f800180548061040357610402610a16565b5b600190038181905f5260205f20015f6101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905590555050505b50565b5f6003015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156104d657805f6001015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061061d565b60015f6003015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550805f6001015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f8001805490505f6002015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f800182908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b5050565b5f806003015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1661069a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90506106dd565b5f6002015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505b919050565b5f805f0182815481106106f8576106f76109e9565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b5f805f0180549050905090565b5f806001015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6107a783610621565b14159050919050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6107dd826107b4565b9050919050565b6107ed816107d3565b81146107f7575f80fd5b50565b5f81359050610808816107e4565b92915050565b5f60208284031215610823576108226107b0565b5b5f610830848285016107fa565b91505092915050565b5f819050919050565b61084b81610839565b8114610855575f80fd5b50565b5f8135905061086681610842565b92915050565b5f8060408385031215610882576108816107b0565b5b5f61088f858286016107fa565b92505060206108a085828601610858565b9150509250929050565b5f819050919050565b6108bc816108aa565b82525050565b5f6020820190506108d55f8301846108b3565b92915050565b5f602082840312156108f0576108ef6107b0565b5b5f6108fd84828501610858565b91505092915050565b61090f816107d3565b82525050565b5f6020820190506109285f830184610906565b92915050565b61093781610839565b82525050565b5f6020820190506109505f83018461092e565b92915050565b5f8115159050919050565b61096a81610956565b82525050565b5f6020820190506109835f830184610961565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6109c082610839565b91506109cb83610839565b92508282039050818111156109e3576109e2610989565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffdfea2646970667358221220d99eea145e88311d98832bcea000201d9998daf49989011d0ecfe2baa2026aee64736f6c63430008160033