60806040523480156200001157600080fd5b506040516200451538038062004515833981810160405281019062000037919062000896565b6040518060400160405280601581526020017f4c75636b79204170657320596163687420436c756200000000000000000000008152506040518060400160405280600481526020017f4c415943000000000000000000000000000000000000000000000000000000008152508160029081620000b4919062000b52565b508060039081620000c6919062000b52565b50620000d76200014a60201b60201c565b6000819055505050620000ff620000f36200015360201b60201c565b6200015b60201b60201c565b826009908162000110919062000b52565b5081600b8190555080600c8190555062000141620001336200015360201b60201c565b60016200022160201b60201c565b50505062000dcf565b60006001905090565b600033905090565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b620002438282604051806020016040528060008152506200024760201b60201c565b5050565b620002598383620002f860201b60201c565b60008373ffffffffffffffffffffffffffffffffffffffff163b14620002f357600080549050600083820390505b620002a26000868380600101945086620004df60201b60201c565b620002d9576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81811062000287578160005414620002f057600080fd5b50505b505050565b6000805490506000820362000339576040517fb562e8dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6200034e60008483856200064060201b60201c565b600160406001901b178202600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550620003dd83620003bf60008660006200064660201b60201c565b620003d0856200067660201b60201c565b176200068660201b60201c565b6004600083815260200190815260200160002081905550600080838301905073ffffffffffffffffffffffffffffffffffffffff85169150828260007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600080a4600183015b8181146200048057808360007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600080a460018101905062000443565b5060008203620004bc576040517f2e07630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806000819055505050620004da6000848385620006b160201b60201c565b505050565b60008373ffffffffffffffffffffffffffffffffffffffff1663150b7a026200050d620006b760201b60201c565b8786866040518563ffffffff1660e01b815260040162000531949392919062000cec565b6020604051808303816000875af19250505080156200057057506040513d601f19601f820116820180604052508101906200056d919062000d9d565b60015b620005ed573d8060008114620005a3576040519150601f19603f3d011682016040523d82523d6000602084013e620005a8565b606091505b506000815103620005e5576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050949350505050565b50505050565b60008060e883901c905060e862000665868684620006bf60201b60201c565b62ffffff16901b9150509392505050565b60006001821460e11b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff83169250814260a01b178317905092915050565b50505050565b600033905090565b60009392505050565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6200073182620006e6565b810181811067ffffffffffffffff82111715620007535762000752620006f7565b5b80604052505050565b600062000768620006c8565b905062000776828262000726565b919050565b600067ffffffffffffffff821115620007995762000798620006f7565b5b620007a482620006e6565b9050602081019050919050565b60005b83811015620007d1578082015181840152602081019050620007b4565b60008484015250505050565b6000620007f4620007ee846200077b565b6200075c565b905082815260208101848484011115620008135762000812620006e1565b5b62000820848285620007b1565b509392505050565b600082601f83011262000840576200083f620006dc565b5b815162000852848260208601620007dd565b91505092915050565b6000819050919050565b62000870816200085b565b81146200087c57600080fd5b50565b600081519050620008908162000865565b92915050565b600080600060608486031215620008b257620008b1620006d2565b5b600084015167ffffffffffffffff811115620008d357620008d2620006d7565b5b620008e18682870162000828565b9350506020620008f4868287016200087f565b925050604062000907868287016200087f565b9150509250925092565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200096457607f821691505b6020821081036200097a57620009796200091c565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620009e47fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620009a5565b620009f08683620009a5565b95508019841693508086168417925050509392505050565b6000819050919050565b600062000a3362000a2d62000a27846200085b565b62000a08565b6200085b565b9050919050565b6000819050919050565b62000a4f8362000a12565b62000a6762000a5e8262000a3a565b848454620009b2565b825550505050565b600090565b62000a7e62000a6f565b62000a8b81848462000a44565b505050565b5b8181101562000ab35762000aa760008262000a74565b60018101905062000a91565b5050565b601f82111562000b025762000acc8162000980565b62000ad78462000995565b8101602085101562000ae7578190505b62000aff62000af68562000995565b83018262000a90565b50505b505050565b600082821c905092915050565b600062000b276000198460080262000b07565b1980831691505092915050565b600062000b42838362000b14565b9150826002028217905092915050565b62000b5d8262000911565b67ffffffffffffffff81111562000b795762000b78620006f7565b5b62000b8582546200094b565b62000b9282828562000ab7565b600060209050601f83116001811462000bca576000841562000bb5578287015190505b62000bc1858262000b34565b86555062000c31565b601f19841662000bda8662000980565b60005b8281101562000c045784890151825560018201915060208501945060208101905062000bdd565b8683101562000c24578489015162000c20601f89168262000b14565b8355505b6001600288020188555050505b505050505050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600062000c668262000c39565b9050919050565b62000c788162000c59565b82525050565b62000c89816200085b565b82525050565b600081519050919050565b600082825260208201905092915050565b600062000cb88262000c8f565b62000cc4818562000c9a565b935062000cd6818560208601620007b1565b62000ce181620006e6565b840191505092915050565b600060808201905062000d03600083018762000c6d565b62000d12602083018662000c6d565b62000d21604083018562000c7e565b818103606083015262000d35818462000cab565b905095945050505050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b62000d778162000d40565b811462000d8357600080fd5b50565b60008151905062000d978162000d6c565b92915050565b60006020828403121562000db65762000db5620006d2565b5b600062000dc68482850162000d86565b91505092915050565b6137368062000ddf6000396000f3fe6080604052600436106101d85760003560e01c8063963bfe1211610102578063c87b56dd11610095578063dc33e68111610064578063dc33e68114610689578063e9014f9d146106c6578063e985e9c5146106e2578063f2fde38b1461071f576101d8565b8063c87b56dd146105cd578063d547cfb71461060a578063d5abeb0114610635578063da1b9e0814610660576101d8565b8063ac446002116100d1578063ac4460021461053b578063ae3aab3b14610552578063b88d4fde1461057b578063c6275255146105a4576101d8565b8063963bfe12146104a05780639b6860c8146104cb578063a0712d68146104f6578063a22cb46514610512576101d8565b806342842e0e1161017a57806370a082311161014957806370a08231146103f6578063715018a6146104335780638da5cb5b1461044a57806395d89b4114610475576101d8565b806342842e0e1461032a57806355f804b3146103535780636352211e1461037c578063648b5be1146103b9576101d8565b8063095ea7b3116101b6578063095ea7b31461028257806318160ddd146102ab57806323b872dd146102d657806326202370146102ff576101d8565b806301ffc9a7146101dd57806306fdde031461021a578063081812fc14610245575b600080fd5b3480156101e957600080fd5b5061020460048036038101906101ff919061239d565b610748565b60405161021191906123e5565b60405180910390f35b34801561022657600080fd5b5061022f6107da565b60405161023c9190612490565b60405180910390f35b34801561025157600080fd5b5061026c600480360381019061026791906124e8565b61086c565b6040516102799190612556565b60405180910390f35b34801561028e57600080fd5b506102a960048036038101906102a4919061259d565b6108eb565b005b3480156102b757600080fd5b506102c0610a2f565b6040516102cd91906125ec565b60405180910390f35b3480156102e257600080fd5b506102fd60048036038101906102f89190612607565b610a46565b005b34801561030b57600080fd5b50610314610d68565b60405161032191906126d1565b60405180910390f35b34801561033657600080fd5b50610351600480360381019061034c9190612607565b610d7b565b005b34801561035f57600080fd5b5061037a60048036038101906103759190612751565b610d9b565b005b34801561038857600080fd5b506103a3600480360381019061039e91906124e8565b610db9565b6040516103b09190612556565b60405180910390f35b3480156103c557600080fd5b506103e060048036038101906103db919061279e565b610dcb565b6040516103ed91906125ec565b60405180910390f35b34801561040257600080fd5b5061041d6004803603810190610418919061279e565b610de3565b60405161042a91906125ec565b60405180910390f35b34801561043f57600080fd5b50610448610e9b565b005b34801561045657600080fd5b5061045f610eaf565b60405161046c9190612556565b60405180910390f35b34801561048157600080fd5b5061048a610ed9565b6040516104979190612490565b60405180910390f35b3480156104ac57600080fd5b506104b5610f6b565b6040516104c29190612490565b60405180910390f35b3480156104d757600080fd5b506104e0610ff9565b6040516104ed91906125ec565b60405180910390f35b610510600480360381019061050b91906124e8565b610fff565b005b34801561051e57600080fd5b50610539600480360381019061053491906127f7565b6112e5565b005b34801561054757600080fd5b5061055061145c565b005b34801561055e57600080fd5b50610579600480360381019061057491906124e8565b611513565b005b34801561058757600080fd5b506105a2600480360381019061059d9190612967565b61155a565b005b3480156105b057600080fd5b506105cb60048036038101906105c691906124e8565b6115cd565b005b3480156105d957600080fd5b506105f460048036038101906105ef91906124e8565b6115df565b6040516106019190612490565b60405180910390f35b34801561061657600080fd5b5061061f611701565b60405161062c9190612490565b60405180910390f35b34801561064157600080fd5b5061064a61178f565b60405161065791906125ec565b60405180910390f35b34801561066c57600080fd5b5061068760048036038101906106829190612751565b611795565b005b34801561069557600080fd5b506106b060048036038101906106ab919061279e565b6117b3565b6040516106bd91906125ec565b60405180910390f35b6106e060048036038101906106db9190612b70565b6117c5565b005b3480156106ee57600080fd5b5061070960048036038101906107049190612be8565b6118a0565b60405161071691906123e5565b60405180910390f35b34801561072b57600080fd5b506107466004803603810190610741919061279e565b611934565b005b60006301ffc9a760e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614806107a357506380ac58cd60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b806107d35750635b5e139f60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b6060600280546107e990612c57565b80601f016020809104026020016040519081016040528092919081815260200182805461081590612c57565b80156108625780601f1061083757610100808354040283529160200191610862565b820191906000526020600020905b81548152906001019060200180831161084557829003601f168201915b5050505050905090565b6000610877826119b7565b6108ad576040517fcf4700e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6006600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b60006108f682610db9565b90508073ffffffffffffffffffffffffffffffffffffffff16610917611a16565b73ffffffffffffffffffffffffffffffffffffffff161461097a576109438161093e611a16565b6118a0565b610979576040517fcfb3b94200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b826006600084815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b6000610a39611a1e565b6001546000540303905090565b6000610a5182611a27565b90508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610ab8576040517fa114810000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600080610ac484611af3565b91509150610ada8187610ad5611a16565b611b1a565b610b2657610aef86610aea611a16565b6118a0565b610b25576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603610b8c576040517fea553b3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610b998686866001611b5e565b8015610ba457600082555b600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600081546001900391905081905550600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815460010191905081905550610c7285610c4e888887611b64565b7c020000000000000000000000000000000000000000000000000000000017611b8c565b600460008681526020019081526020016000208190555060007c0200000000000000000000000000000000000000000000000000000000841603610cf85760006001850190506000600460008381526020019081526020016000205403610cf6576000548114610cf5578360046000838152602001908152602001600020819055505b5b505b838573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4610d608686866001611bb7565b505050505050565b600860149054906101000a900460ff1681565b610d968383836040518060200160405280600081525061155a565b505050565b610da3611bbd565b818160099182610db4929190612e3f565b505050565b6000610dc482611a27565b9050919050565b600d6020528060005260406000206000915090505481565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610e4a576040517f8f4eb60400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b67ffffffffffffffff600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054169050919050565b610ea3611bbd565b610ead6000611c3b565b565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060038054610ee890612c57565b80601f0160208091040260200160405190810160405280929190818152602001828054610f1490612c57565b8015610f615780601f10610f3657610100808354040283529160200191610f61565b820191906000526020600020905b815481529060010190602001808311610f4457829003601f168201915b5050505050905090565b600a8054610f7890612c57565b80601f0160208091040260200160405190810160405280929190818152602001828054610fa490612c57565b8015610ff15780601f10610fc657610100808354040283529160200191610ff1565b820191906000526020600020905b815481529060010190602001808311610fd457829003601f168201915b505050505081565b600c5481565b3373ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff161461106d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161106490612f5b565b60405180910390fd5b600260038111156110815761108061265a565b5b600860149054906101000a900460ff1660038111156110a3576110a261265a565b5b146110e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110da90612fc7565b60405180910390fd5b6014811115611127576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161111e90613033565b60405180910390fd5b600b5481611133610a2f565b61113d9190613082565b111561117e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161117590613102565b60405180910390fd5b6000600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546001111561121757600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205460016112149190613122565b90505b60008183111561123d57600c5482846112309190613122565b61123a9190613156565b90505b80341015611280576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611277906131fc565b60405180910390fd5b82600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546112cf9190613082565b925050819055506112e03384611d01565b505050565b6112ed611a16565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611351576040517fb06307db00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806007600061135e611a16565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff1661140b611a16565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405161145091906123e5565b60405180910390a35050565b611464611bbd565b60003373ffffffffffffffffffffffffffffffffffffffff164760405161148a9061324d565b60006040518083038185875af1925050503d80600081146114c7576040519150601f19603f3d011682016040523d82523d6000602084013e6114cc565b606091505b5050905080611510576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611507906132ae565b60405180910390fd5b50565b61151b611bbd565b80600381111561152e5761152d61265a565b5b600860146101000a81548160ff021916908360038111156115525761155161265a565b5b021790555050565b611565848484610a46565b60008373ffffffffffffffffffffffffffffffffffffffff163b146115c75761159084848484611d1f565b6115c6576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b50505050565b6115d5611bbd565b80600c8190555050565b60606115ea826119b7565b611629576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161162090613340565b60405180910390fd5b6000611633611e6f565b905060008151116116ce57600a805461164b90612c57565b80601f016020809104026020016040519081016040528092919081815260200182805461167790612c57565b80156116c45780601f10611699576101008083540402835291602001916116c4565b820191906000526020600020905b8154815290600101906020018083116116a757829003601f168201915b50505050506116f9565b806116d884611f01565b6040516020016116e99291906133e8565b6040516020818303038152906040525b915050919050565b6009805461170e90612c57565b80601f016020809104026020016040519081016040528092919081815260200182805461173a90612c57565b80156117875780601f1061175c57610100808354040283529160200191611787565b820191906000526020600020905b81548152906001019060200180831161176a57829003601f168201915b505050505081565b600b5481565b61179d611bbd565b8181600a91826117ae929190612e3f565b505050565b60006117be82612061565b9050919050565b6117cd611bbd565b60005b825181101561189b57600b548282815181106117ef576117ee613417565b5b60200260200101516117ff610a2f565b6118099190613082565b111561184a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184190613102565b60405180910390fd5b6118888382815181106118605761185f613417565b5b602002602001015183838151811061187b5761187a613417565b5b6020026020010151611d01565b808061189390613446565b9150506117d0565b505050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b61193c611bbd565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036119ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119a290613500565b60405180910390fd5b6119b481611c3b565b50565b6000816119c2611a1e565b111580156119d1575060005482105b8015611a0f575060007c0100000000000000000000000000000000000000000000000000000000600460008581526020019081526020016000205416145b9050919050565b600033905090565b60006001905090565b60008082905080611a36611a1e565b11611abc57600054811015611abb5760006004600083815260200190815260200160002054905060007c0100000000000000000000000000000000000000000000000000000000821603611ab9575b60008103611aaf576004600083600190039350838152602001908152602001600020549050611a85565b8092505050611aee565b505b5b6040517fdf2d9b4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b60008060006006600085815260200190815260200160002090508092508254915050915091565b600073ffffffffffffffffffffffffffffffffffffffff8316925073ffffffffffffffffffffffffffffffffffffffff821691508382148383141790509392505050565b50505050565b60008060e883901c905060e8611b7b8686846120b8565b62ffffff16901b9150509392505050565b600073ffffffffffffffffffffffffffffffffffffffff83169250814260a01b178317905092915050565b50505050565b611bc56120c1565b73ffffffffffffffffffffffffffffffffffffffff16611be3610eaf565b73ffffffffffffffffffffffffffffffffffffffff1614611c39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c309061356c565b60405180910390fd5b565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b611d1b8282604051806020016040528060008152506120c9565b5050565b60008373ffffffffffffffffffffffffffffffffffffffff1663150b7a02611d45611a16565b8786866040518563ffffffff1660e01b8152600401611d6794939291906135e1565b6020604051808303816000875af1925050508015611da357506040513d601f19601f82011682018060405250810190611da09190613642565b60015b611e1c573d8060008114611dd3576040519150601f19603f3d011682016040523d82523d6000602084013e611dd8565b606091505b506000815103611e14576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050949350505050565b606060098054611e7e90612c57565b80601f0160208091040260200160405190810160405280929190818152602001828054611eaa90612c57565b8015611ef75780601f10611ecc57610100808354040283529160200191611ef7565b820191906000526020600020905b815481529060010190602001808311611eda57829003601f168201915b5050505050905090565b606060008203611f48576040518060400160405280600181526020017f3000000000000000000000000000000000000000000000000000000000000000815250905061205c565b600082905060005b60008214611f7a578080611f6390613446565b915050600a82611f73919061369e565b9150611f50565b60008167ffffffffffffffff811115611f9657611f9561283c565b5b6040519080825280601f01601f191660200182016040528015611fc85781602001600182028036833780820191505090505b5090505b6000851461205557600182611fe19190613122565b9150600a85611ff091906136cf565b6030611ffc9190613082565b60f81b81838151811061201257612011613417565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a8561204e919061369e565b9450611fcc565b8093505050505b919050565b600067ffffffffffffffff6040600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054901c169050919050565b60009392505050565b600033905090565b6120d38383612166565b60008373ffffffffffffffffffffffffffffffffffffffff163b1461216157600080549050600083820390505b6121136000868380600101945086611d1f565b612149576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81811061210057816000541461215e57600080fd5b50505b505050565b600080549050600082036121a6576040517fb562e8dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6121b36000848385611b5e565b600160406001901b178202600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254019250508190555061222a8361221b6000866000611b64565b61222485612321565b17611b8c565b6004600083815260200190815260200160002081905550600080838301905073ffffffffffffffffffffffffffffffffffffffff85169150828260007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600080a4600183015b8181146122cb57808360007fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600080a4600181019050612290565b5060008203612306576040517f2e07630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600081905550505061231c6000848385611bb7565b505050565b60006001821460e11b9050919050565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b61237a81612345565b811461238557600080fd5b50565b60008135905061239781612371565b92915050565b6000602082840312156123b3576123b261233b565b5b60006123c184828501612388565b91505092915050565b60008115159050919050565b6123df816123ca565b82525050565b60006020820190506123fa60008301846123d6565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561243a57808201518184015260208101905061241f565b60008484015250505050565b6000601f19601f8301169050919050565b600061246282612400565b61246c818561240b565b935061247c81856020860161241c565b61248581612446565b840191505092915050565b600060208201905081810360008301526124aa8184612457565b905092915050565b6000819050919050565b6124c5816124b2565b81146124d057600080fd5b50565b6000813590506124e2816124bc565b92915050565b6000602082840312156124fe576124fd61233b565b5b600061250c848285016124d3565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061254082612515565b9050919050565b61255081612535565b82525050565b600060208201905061256b6000830184612547565b92915050565b61257a81612535565b811461258557600080fd5b50565b60008135905061259781612571565b92915050565b600080604083850312156125b4576125b361233b565b5b60006125c285828601612588565b92505060206125d3858286016124d3565b9150509250929050565b6125e6816124b2565b82525050565b600060208201905061260160008301846125dd565b92915050565b6000806000606084860312156126205761261f61233b565b5b600061262e86828701612588565b935050602061263f86828701612588565b9250506040612650868287016124d3565b9150509250925092565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b6004811061269a5761269961265a565b5b50565b60008190506126ab82612689565b919050565b60006126bb8261269d565b9050919050565b6126cb816126b0565b82525050565b60006020820190506126e660008301846126c2565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f840112612711576127106126ec565b5b8235905067ffffffffffffffff81111561272e5761272d6126f1565b5b60208301915083600182028301111561274a576127496126f6565b5b9250929050565b600080602083850312156127685761276761233b565b5b600083013567ffffffffffffffff81111561278657612785612340565b5b612792858286016126fb565b92509250509250929050565b6000602082840312156127b4576127b361233b565b5b60006127c284828501612588565b91505092915050565b6127d4816123ca565b81146127df57600080fd5b50565b6000813590506127f1816127cb565b92915050565b6000806040838503121561280e5761280d61233b565b5b600061281c85828601612588565b925050602061282d858286016127e2565b9150509250929050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61287482612446565b810181811067ffffffffffffffff821117156128935761289261283c565b5b80604052505050565b60006128a6612331565b90506128b2828261286b565b919050565b600067ffffffffffffffff8211156128d2576128d161283c565b5b6128db82612446565b9050602081019050919050565b82818337600083830152505050565b600061290a612905846128b7565b61289c565b90508281526020810184848401111561292657612925612837565b5b6129318482856128e8565b509392505050565b600082601f83011261294e5761294d6126ec565b5b813561295e8482602086016128f7565b91505092915050565b600080600080608085870312156129815761298061233b565b5b600061298f87828801612588565b94505060206129a087828801612588565b93505060406129b1878288016124d3565b925050606085013567ffffffffffffffff8111156129d2576129d1612340565b5b6129de87828801612939565b91505092959194509250565b600067ffffffffffffffff821115612a0557612a0461283c565b5b602082029050602081019050919050565b6000612a29612a24846129ea565b61289c565b90508083825260208201905060208402830185811115612a4c57612a4b6126f6565b5b835b81811015612a755780612a618882612588565b845260208401935050602081019050612a4e565b5050509392505050565b600082601f830112612a9457612a936126ec565b5b8135612aa4848260208601612a16565b91505092915050565b600067ffffffffffffffff821115612ac857612ac761283c565b5b602082029050602081019050919050565b6000612aec612ae784612aad565b61289c565b90508083825260208201905060208402830185811115612b0f57612b0e6126f6565b5b835b81811015612b385780612b2488826124d3565b845260208401935050602081019050612b11565b5050509392505050565b600082601f830112612b5757612b566126ec565b5b8135612b67848260208601612ad9565b91505092915050565b60008060408385031215612b8757612b8661233b565b5b600083013567ffffffffffffffff811115612ba557612ba4612340565b5b612bb185828601612a7f565b925050602083013567ffffffffffffffff811115612bd257612bd1612340565b5b612bde85828601612b42565b9150509250929050565b60008060408385031215612bff57612bfe61233b565b5b6000612c0d85828601612588565b9250506020612c1e85828601612588565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680612c6f57607f821691505b602082108103612c8257612c81612c28565b5b50919050565b600082905092915050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302612cf57fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82612cb8565b612cff8683612cb8565b95508019841693508086168417925050509392505050565b6000819050919050565b6000612d3c612d37612d32846124b2565b612d17565b6124b2565b9050919050565b6000819050919050565b612d5683612d21565b612d6a612d6282612d43565b848454612cc5565b825550505050565b600090565b612d7f612d72565b612d8a818484612d4d565b505050565b5b81811015612dae57612da3600082612d77565b600181019050612d90565b5050565b601f821115612df357612dc481612c93565b612dcd84612ca8565b81016020851015612ddc578190505b612df0612de885612ca8565b830182612d8f565b50505b505050565b600082821c905092915050565b6000612e1660001984600802612df8565b1980831691505092915050565b6000612e2f8383612e05565b9150826002028217905092915050565b612e498383612c88565b67ffffffffffffffff811115612e6257612e6161283c565b5b612e6c8254612c57565b612e77828285612db2565b6000601f831160018114612ea65760008415612e94578287013590505b612e9e8582612e23565b865550612f06565b601f198416612eb486612c93565b60005b82811015612edc57848901358255600182019150602085019450602081019050612eb7565b86831015612ef95784890135612ef5601f891682612e05565b8355505b6001600288020188555050505b50505050505050565b7f4d7573742066726f6d207265616c2077616c6c65742061646472657373000000600082015250565b6000612f45601d8361240b565b9150612f5082612f0f565b602082019050919050565b60006020820190508181036000830152612f7481612f38565b9050919050565b7f5075626c69632073616c6520636c6f7365640000000000000000000000000000600082015250565b6000612fb160128361240b565b9150612fbc82612f7b565b602082019050919050565b60006020820190508181036000830152612fe081612fa4565b9050919050565b7f496e76616c6964207175616e7469747900000000000000000000000000000000600082015250565b600061301d60108361240b565b915061302882612fe7565b602082019050919050565b6000602082019050818103600083015261304c81613010565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061308d826124b2565b9150613098836124b2565b92508282019050808211156130b0576130af613053565b5b92915050565b7f45786365656420737570706c7900000000000000000000000000000000000000600082015250565b60006130ec600d8361240b565b91506130f7826130b6565b602082019050919050565b6000602082019050818103600083015261311b816130df565b9050919050565b600061312d826124b2565b9150613138836124b2565b92508282039050818111156131505761314f613053565b5b92915050565b6000613161826124b2565b915061316c836124b2565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156131a5576131a4613053565b5b828202905092915050565b7f4574686572206973206e6f7420656e6f75676800000000000000000000000000600082015250565b60006131e660138361240b565b91506131f1826131b0565b602082019050919050565b60006020820190508181036000830152613215816131d9565b9050919050565b600081905092915050565b50565b600061323760008361321c565b915061324282613227565b600082019050919050565b60006132588261322a565b9150819050919050565b7f5472616e73666572206661696c65642e00000000000000000000000000000000600082015250565b600061329860108361240b565b91506132a382613262565b602082019050919050565b600060208201905081810360008301526132c78161328b565b9050919050565b7f4552433732314d657461646174613a204e6f6e6578697374656e7420746f6b6560008201527f6e00000000000000000000000000000000000000000000000000000000000000602082015250565b600061332a60218361240b565b9150613335826132ce565b604082019050919050565b600060208201905081810360008301526133598161331d565b9050919050565b600081905092915050565b600061337682612400565b6133808185613360565b935061339081856020860161241c565b80840191505092915050565b7f2e6a736f6e000000000000000000000000000000000000000000000000000000600082015250565b60006133d2600583613360565b91506133dd8261339c565b600582019050919050565b60006133f4828561336b565b9150613400828461336b565b915061340b826133c5565b91508190509392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000613451826124b2565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361348357613482613053565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006134ea60268361240b565b91506134f58261348e565b604082019050919050565b60006020820190508181036000830152613519816134dd565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061355660208361240b565b915061356182613520565b602082019050919050565b6000602082019050818103600083015261358581613549565b9050919050565b600081519050919050565b600082825260208201905092915050565b60006135b38261358c565b6135bd8185613597565b93506135cd81856020860161241c565b6135d681612446565b840191505092915050565b60006080820190506135f66000830187612547565b6136036020830186612547565b61361060408301856125dd565b818103606083015261362281846135a8565b905095945050505050565b60008151905061363c81612371565b92915050565b6000602082840312156136585761365761233b565b5b60006136668482850161362d565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006136a9826124b2565b91506136b4836124b2565b9250826136c4576136c361366f565b5b828204905092915050565b60006136da826124b2565b91506136e5836124b2565b9250826136f5576136f461366f565b5b82820690509291505056fea26469706673582212203cac7be3de1bcf6bd19c27e68aaeb81df08076fd7bde6784845d6060ceeb022d64736f6c6343000810003300000000000000000000000000000000000000000000000000000000000000600000000000000000000000000000000000000000000000000000000000001e610000000000000000000000000000000000000000000000000008e1bc9bf040000000000000000000000000000000000000000000000000000000000000000036697066733a2f2f516d576a4d524b36777645414262414e4678637075546844777466446a37644b7674613576314c79534744704c4b2f00000000000000000000