608060405234801561000f575f5ffd5b50336040518060400160405280600881526020017f4e465420546573740000000000000000000000000000000000000000000000008152506040518060400160405280600381526020017f4e46540000000000000000000000000000000000000000000000000000000000815250815f908161008b919061043e565b50806001908161009b919061043e565b5050505f600a5f6101000a81548160ff0219169083151502179055505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610127575f6040517f1e4fbdf700000000000000000000000000000000000000000000000000000000815260040161011e919061054c565b60405180910390fd5b6101368161013c60201b60201c565b50610565565b5f600a60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600a60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061027c57607f821691505b60208210810361028f5761028e610238565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026102f17fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826102b6565b6102fb86836102b6565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f61033f61033a61033584610313565b61031c565b610313565b9050919050565b5f819050919050565b61035883610325565b61036c61036482610346565b8484546102c2565b825550505050565b5f5f905090565b610383610374565b61038e81848461034f565b505050565b5b818110156103b1576103a65f8261037b565b600181019050610394565b5050565b601f8211156103f6576103c781610295565b6103d0846102a7565b810160208510156103df578190505b6103f36103eb856102a7565b830182610393565b50505b505050565b5f82821c905092915050565b5f6104165f19846008026103fb565b1980831691505092915050565b5f61042e8383610407565b9150826002028217905092915050565b61044782610201565b67ffffffffffffffff8111156104605761045f61020b565b5b61046a8254610265565b6104758282856103b5565b5f60209050601f8311600181146104a6575f8415610494578287015190505b61049e8582610423565b865550610505565b601f1984166104b486610295565b5f5b828110156104db578489015182556001820191506020850194506020810190506104b6565b868310156104f857848901516104f4601f891682610407565b8355505b6001600288020188555050505b505050505050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6105368261050d565b9050919050565b6105468161052c565b82525050565b5f60208201905061055f5f83018461053d565b92915050565b6138d0806105725f395ff3fe6080604052600436106101cc575f3560e01c80635f3cbff5116100f657806395d89b4111610094578063b88d4fde11610063578063b88d4fde14610666578063c87b56dd1461068e578063e985e9c5146106ca578063f2fde38b14610706576101cc565b806395d89b411461059c57806399b956a0146105c6578063a22cb46514610602578063ad1def421461062a576101cc565b8063715018a6116100d0578063715018a61461050a578063830caa19146105205780638456cb591461055c5780638da5cb5b14610572576101cc565b80635f3cbff5146104765780636352211e1461049257806370a08231146104ce576101cc565b806326092b831161016e5780634f6ccce71161013d5780634f6ccce7146103b857806351cff8d9146103f457806356dfb13e146104105780635c975abb1461044c576101cc565b806326092b83146103285780632f745c591461033e5780633f4ba83a1461037a57806342842e0e14610390576101cc565b8063095ea7b3116101aa578063095ea7b3146102725780630e5d075f1461029a57806318160ddd146102d657806323b872dd14610300576101cc565b806301ffc9a7146101d057806306fdde031461020c578063081812fc14610236575b5f5ffd5b3480156101db575f5ffd5b506101f660048036038101906101f19190612ae9565b61072e565b6040516102039190612b2e565b60405180910390f35b348015610217575f5ffd5b5061022061073f565b60405161022d9190612bb7565b60405180910390f35b348015610241575f5ffd5b5061025c60048036038101906102579190612c0a565b6107ce565b6040516102699190612c74565b60405180910390f35b34801561027d575f5ffd5b5061029860048036038101906102939190612cb7565b6107e9565b005b3480156102a5575f5ffd5b506102c060048036038101906102bb9190612cf5565b6107ff565b6040516102cd9190612dd7565b60405180910390f35b3480156102e1575f5ffd5b506102ea610895565b6040516102f79190612e06565b60405180910390f35b34801561030b575f5ffd5b5061032660048036038101906103219190612e1f565b6108a1565b005b348015610333575f5ffd5b5061033c6109a0565b005b348015610349575f5ffd5b50610364600480360381019061035f9190612cb7565b610c4a565b6040516103719190612e06565b60405180910390f35b348015610385575f5ffd5b5061038e610cee565b005b34801561039b575f5ffd5b506103b660048036038101906103b19190612e1f565b610d00565b005b3480156103c3575f5ffd5b506103de60048036038101906103d99190612c0a565b610d1f565b6040516103eb9190612e06565b60405180910390f35b61040e60048036038101906104099190612eaa565b610d91565b005b34801561041b575f5ffd5b5061043660048036038101906104319190612cf5565b610de0565b6040516104439190612bb7565b60405180910390f35b348015610457575f5ffd5b50610460610ead565b60405161046d9190612b2e565b60405180910390f35b610490600480360381019061048b9190613001565b610ec2565b005b34801561049d575f5ffd5b506104b860048036038101906104b39190612c0a565b610fa6565b6040516104c59190612c74565b60405180910390f35b3480156104d9575f5ffd5b506104f460048036038101906104ef9190612cf5565b610fb7565b6040516105019190612e06565b60405180910390f35b348015610515575f5ffd5b5061051e61106d565b005b34801561052b575f5ffd5b5061054660048036038101906105419190612cf5565b611080565b6040516105539190612bb7565b60405180910390f35b348015610567575f5ffd5b5061057061111b565b005b34801561057d575f5ffd5b5061058661112d565b6040516105939190612c74565b60405180910390f35b3480156105a7575f5ffd5b506105b0611156565b6040516105bd9190612bb7565b60405180910390f35b3480156105d1575f5ffd5b506105ec60048036038101906105e79190612cf5565b6111e6565b6040516105f99190612c74565b60405180910390f35b34801561060d575f5ffd5b5061062860048036038101906106239190613072565b61121f565b005b348015610635575f5ffd5b50610650600480360381019061064b9190612cf5565b611235565b60405161065d9190612b2e565b60405180910390f35b348015610671575f5ffd5b5061068c6004803603810190610687919061314e565b611252565b005b348015610699575f5ffd5b506106b460048036038101906106af9190612c0a565b61126f565b6040516106c19190612bb7565b60405180910390f35b3480156106d5575f5ffd5b506106f060048036038101906106eb91906131ce565b6112d5565b6040516106fd9190612b2e565b60405180910390f35b348015610711575f5ffd5b5061072c60048036038101906107279190612cf5565b611363565b005b5f610738826113e7565b9050919050565b60605f805461074d90613239565b80601f016020809104026020016040519081016040528092919081815260200182805461077990613239565b80156107c45780601f1061079b576101008083540402835291602001916107c4565b820191905f5260205f20905b8154815290600101906020018083116107a757829003601f168201915b5050505050905090565b5f6107d882611460565b506107e2826114e6565b9050919050565b6107fb82826107f661151f565b611526565b5050565b6060600c5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2060010180548060200260200160405190810160405280929190818152602001828054801561088957602002820191905f5260205f20905b815481526020019060010190808311610875575b50505050509050919050565b5f600880549050905090565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610911575f6040517f64a0ae920000000000000000000000000000000000000000000000000000000081526004016109089190612c74565b60405180910390fd5b5f610924838361091f61151f565b611538565b90508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461099a578382826040517f64283d7b00000000000000000000000000000000000000000000000000000000815260040161099193929190613269565b60405180910390fd5b50505050565b6109a93361154d565b6109e8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109df906132e8565b60405180910390fd5b600d5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16610b715733600c5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600c5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2060010142908060018154018082558091505060019003905f5260205f20015f90919091909150556001600d5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550610bd6565b600c5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2060010142908060018154018082558091505060019003905f5260205f20015f90919091909150555b5f600b5f815480929190610be990613333565b919050559050610bf9338261159d565b3373ffffffffffffffffffffffffffffffffffffffff167f0f6798a560793a54c3bcfe86a93cde1e73087d944c0ea20544137d412139688542604051610c3f9190612e06565b60405180910390a250565b5f610c5483610fb7565b8210610c995782826040517fa57d13dc000000000000000000000000000000000000000000000000000000008152600401610c9092919061337a565b60405180910390fd5b60065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8381526020019081526020015f2054905092915050565b610cf66115ba565b610cfe611641565b565b610d1a83838360405180602001604052805f815250611252565b505050565b5f610d28610895565b8210610d6d575f826040517fa57d13dc000000000000000000000000000000000000000000000000000000008152600401610d6492919061337a565b60405180910390fd5b60088281548110610d8157610d806133a1565b5b905f5260205f2001549050919050565b610d996115ba565b8073ffffffffffffffffffffffffffffffffffffffff166108fc4790811502906040515f60405180830381858888f19350505050158015610ddc573d5f5f3e3d5ffd5b5050565b6060600e5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208054610e2a90613239565b80601f0160208091040260200160405190810160405280929190818152602001828054610e5690613239565b8015610ea15780601f10610e7857610100808354040283529160200191610ea1565b820191905f5260205f20905b815481529060010190602001808311610e8457829003601f168201915b50505050509050919050565b5f600a5f9054906101000a900460ff16905090565b655af3107a40003414610f0a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f0190613418565b60405180910390fd5b80600e5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f209081610f5491906135d6565b503373ffffffffffffffffffffffffffffffffffffffff167fd8feb579cf629cd75b8f8ef24ab838e32a2b55b85d336733640bc2016abcbe3d82604051610f9b9190612bb7565b60405180910390a250565b5f610fb082611460565b9050919050565b5f5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611028575f6040517f89c62b6400000000000000000000000000000000000000000000000000000000815260040161101f9190612c74565b60405180910390fd5b60035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6110756115ba565b61107e5f6116a2565b565b600e602052805f5260405f205f91509050805461109c90613239565b80601f01602080910402602001604051908101604052809291908181526020018280546110c890613239565b80156111135780601f106110ea57610100808354040283529160200191611113565b820191905f5260205f20905b8154815290600101906020018083116110f657829003601f168201915b505050505081565b6111236115ba565b61112b611767565b565b5f600a60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606001805461116590613239565b80601f016020809104026020016040519081016040528092919081815260200182805461119190613239565b80156111dc5780601f106111b3576101008083540402835291602001916111dc565b820191905f5260205f20905b8154815290600101906020018083116111bf57829003601f168201915b5050505050905090565b600c602052805f5260405f205f91509050805f015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081565b61123161122a61151f565b83836117c9565b5050565b600d602052805f5260405f205f915054906101000a900460ff1681565b61125d8484846108a1565b61126984848484611932565b50505050565b606061127a82611460565b505f611284611ae4565b90505f8151116112a25760405180602001604052805f8152506112cd565b806112ac84611afa565b6040516020016112bd9291906136df565b6040516020818303038152906040525b915050919050565b5f60055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16905092915050565b61136b6115ba565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036113db575f6040517f1e4fbdf70000000000000000000000000000000000000000000000000000000081526004016113d29190612c74565b60405180910390fd5b6113e4816116a2565b50565b5f7f780e9d63000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611459575061145882611bc4565b5b9050919050565b5f5f61146b83611ca5565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036114dd57826040517f7e2732890000000000000000000000000000000000000000000000000000000081526004016114d49190612e06565b60405180910390fd5b80915050919050565b5f60045f8381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b5f33905090565b6115338383836001611cde565b505050565b5f611544848484611e9d565b90509392505050565b5f5f61155883611eba565b90505f810361156b576001915050611598565b5f620151808261157b919061372f565b90505f620151804261158d919061372f565b905081811193505050505b919050565b6115b6828260405180602001604052805f815250611fc0565b5050565b6115c261151f565b73ffffffffffffffffffffffffffffffffffffffff166115e061112d565b73ffffffffffffffffffffffffffffffffffffffff161461163f5761160361151f565b6040517f118cdaa70000000000000000000000000000000000000000000000000000000081526004016116369190612c74565b60405180910390fd5b565b611649611fdb565b5f600a5f6101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa61168b61151f565b6040516116989190612c74565b60405180910390a1565b5f600a60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600a60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b61176f61201b565b6001600a5f6101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586117b261151f565b6040516117bf9190612c74565b60405180910390a1565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361183957816040517f5b08ba180000000000000000000000000000000000000000000000000000000081526004016118309190612c74565b60405180910390fd5b8060055f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516119259190612b2e565b60405180910390a3505050565b5f8373ffffffffffffffffffffffffffffffffffffffff163b1115611ade578273ffffffffffffffffffffffffffffffffffffffff1663150b7a0261197561151f565b8685856040518563ffffffff1660e01b815260040161199794939291906137b1565b6020604051808303815f875af19250505080156119d257506040513d601f19601f820116820180604052508101906119cf919061380f565b60015b611a53573d805f8114611a00576040519150601f19603f3d011682016040523d82523d5f602084013e611a05565b606091505b505f815103611a4b57836040517f64a0ae92000000000000000000000000000000000000000000000000000000008152600401611a429190612c74565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614611adc57836040517f64a0ae92000000000000000000000000000000000000000000000000000000008152600401611ad39190612c74565b60405180910390fd5b505b50505050565b606060405180602001604052805f815250905090565b60605f6001611b088461205c565b0190505f8167ffffffffffffffff811115611b2657611b25612edd565b5b6040519080825280601f01601f191660200182016040528015611b585781602001600182028036833780820191505090505b5090505f82602001820190505b600115611bb9578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a8581611bae57611bad613702565b5b0494505f8503611b65575b819350505050919050565b5f7f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480611c8e57507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80611c9e5750611c9d826121ad565b5b9050919050565b5f60025f8381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b8080611d1657505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611e48575f611d2584611460565b90505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611d8f57508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b8015611da25750611da081846112d5565b155b15611de457826040517fa9fbf51f000000000000000000000000000000000000000000000000000000008152600401611ddb9190612c74565b60405180910390fd5b8115611e4657838573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b8360045f8581526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050565b5f611ea661201b565b611eb1848484612216565b90509392505050565b5f5f600c5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20600101805490501115611fb757600c5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f206001016001600c5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2060010180549050611f96919061383a565b81548110611fa757611fa66133a1565b5b905f5260205f2001549050611fbb565b5f90505b919050565b611fca8383612330565b611fd65f848484611932565b505050565b611fe3610ead565b612019576040517f8dfc202b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b612023610ead565b1561205a576040517fd93c066500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b565b5f5f5f90507a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083106120b8577a184f03e93ff9f4daa797ed6e38ed64bf6a1f01000000000000000083816120ae576120ad613702565b5b0492506040810190505b6d04ee2d6d415b85acef810000000083106120f5576d04ee2d6d415b85acef810000000083816120eb576120ea613702565b5b0492506020810190505b662386f26fc10000831061212457662386f26fc10000838161211a57612119613702565b5b0492506010810190505b6305f5e100831061214d576305f5e100838161214357612142613702565b5b0492506008810190505b612710831061217257612710838161216857612167613702565b5b0492506004810190505b60648310612195576064838161218b5761218a613702565b5b0492506002810190505b600a83106121a4576001810190505b80915050919050565b5f7f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b5f5f612223858585612423565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612266576122618461262e565b6122a5565b8473ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146122a4576122a38185612672565b5b5b5f73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16036122e6576122e1846127bc565b612325565b8473ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461232457612323858561287c565b5b5b809150509392505050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036123a0575f6040517f64a0ae920000000000000000000000000000000000000000000000000000000081526004016123979190612c74565b60405180910390fd5b5f6123ac83835f611538565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161461241e575f6040517f73c6ac6e0000000000000000000000000000000000000000000000000000000081526004016124159190612c74565b60405180910390fd5b505050565b5f5f61242e84611ca5565b90505f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461246f5761246e818486612900565b5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146124fa576124ae5f855f5f611cde565b600160035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825403925050819055505b5f73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161461257957600160035f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8460025f8681526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550838573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4809150509392505050565b60088054905060095f8381526020019081526020015f2081905550600881908060018154018082558091505060019003905f5260205f20015f909190919091505550565b5f61267c83610fb7565b90505f60075f8481526020019081526020015f20549050818114612753575f60065f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8481526020019081526020015f205490508060065f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8481526020019081526020015f20819055508160075f8381526020019081526020015f2081905550505b60075f8481526020019081526020015f205f905560065f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8381526020019081526020015f205f905550505050565b5f60016008805490506127cf919061383a565b90505f60095f8481526020019081526020015f205490505f600883815481106127fb576127fa6133a1565b5b905f5260205f2001549050806008838154811061281b5761281a6133a1565b5b905f5260205f2001819055508160095f8381526020019081526020015f208190555060095f8581526020019081526020015f205f905560088054806128635761286261386d565b5b600190038181905f5260205f20015f9055905550505050565b5f600161288884610fb7565b612892919061383a565b90508160065f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8381526020019081526020015f20819055508060075f8481526020019081526020015f2081905550505050565b61290b8383836129c3565b6129be575f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361297f57806040517f7e2732890000000000000000000000000000000000000000000000000000000081526004016129769190612e06565b60405180910390fd5b81816040517f177e802f0000000000000000000000000000000000000000000000000000000081526004016129b592919061337a565b60405180910390fd5b505050565b5f5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015612a7a57508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480612a3b5750612a3a84846112d5565b5b80612a7957508273ffffffffffffffffffffffffffffffffffffffff16612a61836114e6565b73ffffffffffffffffffffffffffffffffffffffff16145b5b90509392505050565b5f604051905090565b5f5ffd5b5f5ffd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b612ac881612a94565b8114612ad2575f5ffd5b50565b5f81359050612ae381612abf565b92915050565b5f60208284031215612afe57612afd612a8c565b5b5f612b0b84828501612ad5565b91505092915050565b5f8115159050919050565b612b2881612b14565b82525050565b5f602082019050612b415f830184612b1f565b92915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f612b8982612b47565b612b938185612b51565b9350612ba3818560208601612b61565b612bac81612b6f565b840191505092915050565b5f6020820190508181035f830152612bcf8184612b7f565b905092915050565b5f819050919050565b612be981612bd7565b8114612bf3575f5ffd5b50565b5f81359050612c0481612be0565b92915050565b5f60208284031215612c1f57612c1e612a8c565b5b5f612c2c84828501612bf6565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612c5e82612c35565b9050919050565b612c6e81612c54565b82525050565b5f602082019050612c875f830184612c65565b92915050565b612c9681612c54565b8114612ca0575f5ffd5b50565b5f81359050612cb181612c8d565b92915050565b5f5f60408385031215612ccd57612ccc612a8c565b5b5f612cda85828601612ca3565b9250506020612ceb85828601612bf6565b9150509250929050565b5f60208284031215612d0a57612d09612a8c565b5b5f612d1784828501612ca3565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b612d5281612bd7565b82525050565b5f612d638383612d49565b60208301905092915050565b5f602082019050919050565b5f612d8582612d20565b612d8f8185612d2a565b9350612d9a83612d3a565b805f5b83811015612dca578151612db18882612d58565b9750612dbc83612d6f565b925050600181019050612d9d565b5085935050505092915050565b5f6020820190508181035f830152612def8184612d7b565b905092915050565b612e0081612bd7565b82525050565b5f602082019050612e195f830184612df7565b92915050565b5f5f5f60608486031215612e3657612e35612a8c565b5b5f612e4386828701612ca3565b9350506020612e5486828701612ca3565b9250506040612e6586828701612bf6565b9150509250925092565b5f612e7982612c35565b9050919050565b612e8981612e6f565b8114612e93575f5ffd5b50565b5f81359050612ea481612e80565b92915050565b5f60208284031215612ebf57612ebe612a8c565b5b5f612ecc84828501612e96565b91505092915050565b5f5ffd5b5f5ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612f1382612b6f565b810181811067ffffffffffffffff82111715612f3257612f31612edd565b5b80604052505050565b5f612f44612a83565b9050612f508282612f0a565b919050565b5f67ffffffffffffffff821115612f6f57612f6e612edd565b5b612f7882612b6f565b9050602081019050919050565b828183375f83830152505050565b5f612fa5612fa084612f55565b612f3b565b905082815260208101848484011115612fc157612fc0612ed9565b5b612fcc848285612f85565b509392505050565b5f82601f830112612fe857612fe7612ed5565b5b8135612ff8848260208601612f93565b91505092915050565b5f6020828403121561301657613015612a8c565b5b5f82013567ffffffffffffffff81111561303357613032612a90565b5b61303f84828501612fd4565b91505092915050565b61305181612b14565b811461305b575f5ffd5b50565b5f8135905061306c81613048565b92915050565b5f5f6040838503121561308857613087612a8c565b5b5f61309585828601612ca3565b92505060206130a68582860161305e565b9150509250929050565b5f67ffffffffffffffff8211156130ca576130c9612edd565b5b6130d382612b6f565b9050602081019050919050565b5f6130f26130ed846130b0565b612f3b565b90508281526020810184848401111561310e5761310d612ed9565b5b613119848285612f85565b509392505050565b5f82601f83011261313557613134612ed5565b5b81356131458482602086016130e0565b91505092915050565b5f5f5f5f6080858703121561316657613165612a8c565b5b5f61317387828801612ca3565b945050602061318487828801612ca3565b935050604061319587828801612bf6565b925050606085013567ffffffffffffffff8111156131b6576131b5612a90565b5b6131c287828801613121565b91505092959194509250565b5f5f604083850312156131e4576131e3612a8c565b5b5f6131f185828601612ca3565b925050602061320285828601612ca3565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061325057607f821691505b6020821081036132635761326261320c565b5b50919050565b5f60608201905061327c5f830186612c65565b6132896020830185612df7565b6132966040830184612c65565b949350505050565b7f596f752043616e204f6e6c7920474d204f6e63652041204461790000000000005f82015250565b5f6132d2601a83612b51565b91506132dd8261329e565b602082019050919050565b5f6020820190508181035f8301526132ff816132c6565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61333d82612bd7565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361336f5761336e613306565b5b600182019050919050565b5f60408201905061338d5f830185612c65565b61339a6020830184612df7565b9392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f302e3030303120455448206973207265717569726564000000000000000000005f82015250565b5f613402601683612b51565b915061340d826133ce565b602082019050919050565b5f6020820190508181035f83015261342f816133f6565b9050919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026134927fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82613457565b61349c8683613457565b95508019841693508086168417925050509392505050565b5f819050919050565b5f6134d76134d26134cd84612bd7565b6134b4565b612bd7565b9050919050565b5f819050919050565b6134f0836134bd565b6135046134fc826134de565b848454613463565b825550505050565b5f5f905090565b61351b61350c565b6135268184846134e7565b505050565b5b818110156135495761353e5f82613513565b60018101905061352c565b5050565b601f82111561358e5761355f81613436565b61356884613448565b81016020851015613577578190505b61358b61358385613448565b83018261352b565b50505b505050565b5f82821c905092915050565b5f6135ae5f1984600802613593565b1980831691505092915050565b5f6135c6838361359f565b9150826002028217905092915050565b6135df82612b47565b67ffffffffffffffff8111156135f8576135f7612edd565b5b6136028254613239565b61360d82828561354d565b5f60209050601f83116001811461363e575f841561362c578287015190505b61363685826135bb565b86555061369d565b601f19841661364c86613436565b5f5b828110156136735784890151825560018201915060208501945060208101905061364e565b86831015613690578489015161368c601f89168261359f565b8355505b6001600288020188555050505b505050505050565b5f81905092915050565b5f6136b982612b47565b6136c381856136a5565b93506136d3818560208601612b61565b80840191505092915050565b5f6136ea82856136af565b91506136f682846136af565b91508190509392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61373982612bd7565b915061374483612bd7565b92508261375457613753613702565b5b828204905092915050565b5f81519050919050565b5f82825260208201905092915050565b5f6137838261375f565b61378d8185613769565b935061379d818560208601612b61565b6137a681612b6f565b840191505092915050565b5f6080820190506137c45f830187612c65565b6137d16020830186612c65565b6137de6040830185612df7565b81810360608301526137f08184613779565b905095945050505050565b5f8151905061380981612abf565b92915050565b5f6020828403121561382457613823612a8c565b5b5f613831848285016137fb565b91505092915050565b5f61384482612bd7565b915061384f83612bd7565b925082820390508181111561386757613866613306565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603160045260245ffdfea2646970667358221220e989cdafe864de60db2a2d4c7f83bfd12131c97816f15885050a285a53edb4c764736f6c634300081b0033