60806040527304fc0c6ba1252c504ba5e34c5c9cac5ae68fefd0600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503480156200006657600080fd5b50604051620040923803806200409283398181016040528101906200008c919062000ece565b848481600090816200009f9190620011f4565b508060019081620000b19190620011f4565b5050508260089081620000c59190620011f4565b508160098190555080600a8190555033600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166386388be16040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200018057600080fd5b505af115801562000195573d6000803e3d6000fd5b505050506001600a54036200026d57600060076000815480929190620001bb906200130a565b919050559050620001d333826200027860201b60201c565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663301a52298260095460006040518463ffffffff1660e01b81526004016200023793929190620013ab565b600060405180830381600087803b1580156200025257600080fd5b505af115801562000267573d6000803e3d6000fd5b50505050505b5050505050620015d4565b6200029a8282604051806020016040528060008152506200029e60201b60201c565b5050565b620002b08383620002ca60201b60201c565b620002c56000848484620003d160201b60201c565b505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036200033f5760006040517f64a0ae920000000000000000000000000000000000000000000000000000000081526004016200033691906200142d565b60405180910390fd5b600062000355838360006200059f60201b60201c565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614620003cc5760006040517f73c6ac6e000000000000000000000000000000000000000000000000000000008152600401620003c391906200142d565b60405180910390fd5b505050565b60008373ffffffffffffffffffffffffffffffffffffffff163b111562000599578273ffffffffffffffffffffffffffffffffffffffff1663150b7a026200041e620007d460201b60201c565b8685856040518563ffffffff1660e01b8152600401620004429493929190620014a7565b6020604051808303816000875af19250505080156200048157506040513d601f19601f820116820180604052508101906200047e919062001558565b60015b6200050b573d8060008114620004b4576040519150601f19603f3d011682016040523d82523d6000602084013e620004b9565b606091505b5060008151036200050357836040517f64a0ae92000000000000000000000000000000000000000000000000000000008152600401620004fa91906200142d565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916146200059757836040517f64a0ae920000000000000000000000000000000000000000000000000000000081526004016200058e91906200142d565b60405180910390fd5b505b50505050565b600080620005b384620007dc60201b60201c565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614620005fe57620005fd8184866200081960201b60201c565b5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614620006985762000649600085600080620008eb60201b60201c565b6001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055505b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16146200071c576001600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b846002600086815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550838573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4809150509392505050565b600033905090565b60006002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6200082c83838362000ac860201b60201c565b620008e657600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603620008a557806040517f7e2732890000000000000000000000000000000000000000000000000000000081526004016200089c91906200158a565b60405180910390fd5b81816040517f177e802f000000000000000000000000000000000000000000000000000000008152600401620008dd929190620015a7565b60405180910390fd5b505050565b8080620009255750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1562000a705760006200093e8462000b9c60201b60201c565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015620009aa57508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b8015620009c65750620009c4818462000c2f60201b60201c565b155b1562000a0b57826040517fa9fbf51f00000000000000000000000000000000000000000000000000000000815260040162000a0291906200142d565b60405180910390fd5b811562000a6e57838573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b836004600085815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801562000b9357508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148062000b4b575062000b4a848462000c2f60201b60201c565b5b8062000b9257508273ffffffffffffffffffffffffffffffffffffffff1662000b7a8362000cc360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16145b5b90509392505050565b60008062000bb083620007dc60201b60201c565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160362000c2657826040517f7e27328900000000000000000000000000000000000000000000000000000000815260040162000c1d91906200158a565b60405180910390fd5b80915050919050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b60006004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b62000d698262000d1e565b810181811067ffffffffffffffff8211171562000d8b5762000d8a62000d2f565b5b80604052505050565b600062000da062000d00565b905062000dae828262000d5e565b919050565b600067ffffffffffffffff82111562000dd15762000dd062000d2f565b5b62000ddc8262000d1e565b9050602081019050919050565b60005b8381101562000e0957808201518184015260208101905062000dec565b60008484015250505050565b600062000e2c62000e268462000db3565b62000d94565b90508281526020810184848401111562000e4b5762000e4a62000d19565b5b62000e5884828562000de9565b509392505050565b600082601f83011262000e785762000e7762000d14565b5b815162000e8a84826020860162000e15565b91505092915050565b6000819050919050565b62000ea88162000e93565b811462000eb457600080fd5b50565b60008151905062000ec88162000e9d565b92915050565b600080600080600060a0868803121562000eed5762000eec62000d0a565b5b600086015167ffffffffffffffff81111562000f0e5762000f0d62000d0f565b5b62000f1c8882890162000e60565b955050602086015167ffffffffffffffff81111562000f405762000f3f62000d0f565b5b62000f4e8882890162000e60565b945050604086015167ffffffffffffffff81111562000f725762000f7162000d0f565b5b62000f808882890162000e60565b935050606062000f938882890162000eb7565b925050608062000fa68882890162000eb7565b9150509295509295909350565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200100657607f821691505b6020821081036200101c576200101b62000fbe565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620010867fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262001047565b62001092868362001047565b95508019841693508086168417925050509392505050565b6000819050919050565b6000620010d5620010cf620010c98462000e93565b620010aa565b62000e93565b9050919050565b6000819050919050565b620010f183620010b4565b620011096200110082620010dc565b84845462001054565b825550505050565b600090565b6200112062001111565b6200112d818484620010e6565b505050565b5b8181101562001155576200114960008262001116565b60018101905062001133565b5050565b601f821115620011a4576200116e8162001022565b620011798462001037565b8101602085101562001189578190505b620011a1620011988562001037565b83018262001132565b50505b505050565b600082821c905092915050565b6000620011c960001984600802620011a9565b1980831691505092915050565b6000620011e48383620011b6565b9150826002028217905092915050565b620011ff8262000fb3565b67ffffffffffffffff8111156200121b576200121a62000d2f565b5b62001227825462000fed565b6200123482828562001159565b600060209050601f8311600181146200126c576000841562001257578287015190505b620012638582620011d6565b865550620012d3565b601f1984166200127c8662001022565b60005b82811015620012a6578489015182556001820191506020850194506020810190506200127f565b86831015620012c65784890151620012c2601f891682620011b6565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620013178262000e93565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036200134c576200134b620012db565b5b600182019050919050565b620013628162000e93565b82525050565b6000819050919050565b6000620013936200138d620013878462001368565b620010aa565b62000e93565b9050919050565b620013a58162001372565b82525050565b6000606082019050620013c2600083018662001357565b620013d1602083018562001357565b620013e060408301846200139a565b949350505050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200141582620013e8565b9050919050565b620014278162001408565b82525050565b60006020820190506200144460008301846200141c565b92915050565b600081519050919050565b600082825260208201905092915050565b600062001473826200144a565b6200147f818562001455565b93506200149181856020860162000de9565b6200149c8162000d1e565b840191505092915050565b6000608082019050620014be60008301876200141c565b620014cd60208301866200141c565b620014dc604083018562001357565b8181036060830152620014f0818462001466565b905095945050505050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b6200153281620014fb565b81146200153e57600080fd5b50565b600081519050620015528162001527565b92915050565b60006020828403121562001571576200157062000d0a565b5b6000620015818482850162001541565b91505092915050565b6000602082019050620015a1600083018462001357565b92915050565b6000604082019050620015be60008301856200141c565b620015cd602083018462001357565b9392505050565b612aae80620015e46000396000f3fe60806040526004361061011f5760003560e01c806342966c68116100a057806395d89b411161006457806395d89b41146103b9578063a22cb465146103e4578063b88d4fde1461040d578063c87b56dd14610436578063e985e9c5146104735761011f565b806342966c68146102c05780636352211e146102e95780636817c76c1461032657806370a08231146103515780638da5cb5b1461038e5761011f565b806323b872dd116100e757806323b872dd1461021d578063370158ea146102465780633ccfd60b1461027157806340d097c31461027b57806342842e0e146102975761011f565b806301ffc9a71461012457806306fdde0314610161578063081812fc1461018c578063095ea7b3146101c957806318160ddd146101f2575b600080fd5b34801561013057600080fd5b5061014b60048036038101906101469190611f55565b6104b0565b6040516101589190611f9d565b60405180910390f35b34801561016d57600080fd5b50610176610592565b6040516101839190612048565b60405180910390f35b34801561019857600080fd5b506101b360048036038101906101ae91906120a0565b610624565b6040516101c0919061210e565b60405180910390f35b3480156101d557600080fd5b506101f060048036038101906101eb9190612155565b610640565b005b3480156101fe57600080fd5b50610207610656565b60405161021491906121a4565b60405180910390f35b34801561022957600080fd5b50610244600480360381019061023f91906121bf565b61065c565b005b34801561025257600080fd5b5061025b610701565b6040516102689190612311565b60405180910390f35b6102796107e8565b005b61029560048036038101906102909190612333565b610994565b005b3480156102a357600080fd5b506102be60048036038101906102b991906121bf565b610c2b565b005b3480156102cc57600080fd5b506102e760048036038101906102e291906120a0565b610c4b565b005b3480156102f557600080fd5b50610310600480360381019061030b91906120a0565b610ce8565b60405161031d919061210e565b60405180910390f35b34801561033257600080fd5b5061033b610cfa565b60405161034891906121a4565b60405180910390f35b34801561035d57600080fd5b5061037860048036038101906103739190612333565b610d00565b60405161038591906121a4565b60405180910390f35b34801561039a57600080fd5b506103a3610dba565b6040516103b0919061210e565b60405180910390f35b3480156103c557600080fd5b506103ce610de0565b6040516103db9190612048565b60405180910390f35b3480156103f057600080fd5b5061040b6004803603810190610406919061238c565b610e72565b005b34801561041957600080fd5b50610434600480360381019061042f9190612501565b610e88565b005b34801561044257600080fd5b5061045d600480360381019061045891906120a0565b610ea5565b60405161046a9190612048565b60405180910390f35b34801561047f57600080fd5b5061049a60048036038101906104959190612584565b610f0e565b6040516104a79190611f9d565b60405180910390f35b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061057b57507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061058b575061058a82610fa2565b5b9050919050565b6060600080546105a1906125f3565b80601f01602080910402602001604051908101604052809291908181526020018280546105cd906125f3565b801561061a5780601f106105ef5761010080835404028352916020019161061a565b820191906000526020600020905b8154815290600101906020018083116105fd57829003601f168201915b5050505050905090565b600061062f8261100c565b5061063982611094565b9050919050565b610652828261064d6110d1565b6110d9565b5050565b600a5481565b6106678383836110eb565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663503426578285856009546040518563ffffffff1660e01b81526004016106ca9493929190612624565b600060405180830381600087803b1580156106e457600080fd5b505af11580156106f8573d6000803e3d6000fd5b50505050505050565b610709611eb1565b600181600001901515908115158152505060088054610727906125f3565b80601f0160208091040260200160405190810160405280929190818152602001828054610753906125f3565b80156107a05780601f10610775576101008083540402835291602001916107a0565b820191906000526020600020905b81548152906001019060200180831161078357829003601f168201915b50505050508160200181905250600954816080018181525050600a548160a00181815250506107cd610592565b81604001819052506107dd610de0565b816060018190525090565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461084257600080fd5b60004790506000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168260405161088f9061269a565b60006040518083038185875af1925050503d80600081146108cc576040519150601f19603f3d011682016040523d82523d6000602084013e6108d1565b606091505b50509050806108df57600080fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635f76a72d600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b815260040161095e9291906126af565b600060405180830381600087803b15801561097857600080fd5b505af115801561098c573d6000803e3d6000fd5b505050505050565b600954341480156109a85750600a54600754105b6109b157600080fd5b6000600760008154809291906109c690612707565b9190505590506109d682826111ed565b6000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663cc32d1766040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a45573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a699190612764565b9050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663301a522983600954846040518463ffffffff1660e01b8152600401610acc93929190612791565b600060405180830381600087803b158015610ae657600080fd5b505af1158015610afa573d6000803e3d6000fd5b505050506000811115610c26576000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166361d027b36040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b76573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b9a9190612806565b73ffffffffffffffffffffffffffffffffffffffff1682606434610bbe9190612862565b610bc89190612893565b604051610bd49061269a565b60006040518083038185875af1925050503d8060008114610c11576040519150601f19603f3d011682016040523d82523d6000602084013e610c16565b606091505b5050905080610c2457600080fd5b505b505050565b610c4683838360405180602001604052806000815250610e88565b505050565b610c548161120b565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340af1ac5826009546040518363ffffffff1660e01b8152600401610cb39291906128d5565b600060405180830381600087803b158015610ccd57600080fd5b505af1158015610ce1573d6000803e3d6000fd5b5050505050565b6000610cf38261100c565b9050919050565b60095481565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610d735760006040517f89c62b64000000000000000000000000000000000000000000000000000000008152600401610d6a919061210e565b60405180910390fd5b600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b606060018054610def906125f3565b80601f0160208091040260200160405190810160405280929190818152602001828054610e1b906125f3565b8015610e685780601f10610e3d57610100808354040283529160200191610e68565b820191906000526020600020905b815481529060010190602001808311610e4b57829003601f168201915b5050505050905090565b610e84610e7d6110d1565b8383611222565b5050565b610e9384848461065c565b610e9f84848484611391565b50505050565b6060610eb08261100c565b506000610ebb611548565b90506000815111610edb5760405180602001604052806000815250610f06565b80610ee5846115da565b604051602001610ef692919061293a565b6040516020818303038152906040525b915050919050565b6000600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600080611018836116a8565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361108b57826040517f7e27328900000000000000000000000000000000000000000000000000000000815260040161108291906121a4565b60405180910390fd5b80915050919050565b60006004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600033905090565b6110e683838360016116e5565b505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361115d5760006040517f64a0ae92000000000000000000000000000000000000000000000000000000008152600401611154919061210e565b60405180910390fd5b6000611171838361116c6110d1565b6118aa565b90508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146111e7578382826040517f64283d7b0000000000000000000000000000000000000000000000000000000081526004016111de9392919061295e565b60405180910390fd5b50505050565b611207828260405180602001604052806000815250611ac4565b5050565b61121e6000826112196110d1565b6118aa565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361129357816040517f5b08ba1800000000000000000000000000000000000000000000000000000000815260040161128a919061210e565b60405180910390fd5b80600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516113849190611f9d565b60405180910390a3505050565b60008373ffffffffffffffffffffffffffffffffffffffff163b1115611542578273ffffffffffffffffffffffffffffffffffffffff1663150b7a026113d56110d1565b8685856040518563ffffffff1660e01b81526004016113f794939291906129ea565b6020604051808303816000875af192505050801561143357506040513d601f19601f820116820180604052508101906114309190612a4b565b60015b6114b7573d8060008114611463576040519150601f19603f3d011682016040523d82523d6000602084013e611468565b606091505b5060008151036114af57836040517f64a0ae920000000000000000000000000000000000000000000000000000000081526004016114a6919061210e565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161461154057836040517f64a0ae92000000000000000000000000000000000000000000000000000000008152600401611537919061210e565b60405180910390fd5b505b50505050565b606060088054611557906125f3565b80601f0160208091040260200160405190810160405280929190818152602001828054611583906125f3565b80156115d05780601f106115a5576101008083540402835291602001916115d0565b820191906000526020600020905b8154815290600101906020018083116115b357829003601f168201915b5050505050905090565b6060600060016115e984611ae0565b01905060008167ffffffffffffffff811115611608576116076123d6565b5b6040519080825280601f01601f19166020018201604052801561163a5781602001600182028036833780820191505090505b509050600082602001820190505b60011561169d578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a858161169157611690612833565b5b04945060008503611648575b819350505050919050565b60006002600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b808061171e5750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561185257600061172e8461100c565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561179957508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b80156117ac57506117aa8184610f0e565b155b156117ee57826040517fa9fbf51f0000000000000000000000000000000000000000000000000000000081526004016117e5919061210e565b60405180910390fd5b811561185057838573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b836004600085815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050565b6000806118b6846116a8565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146118f8576118f7818486611c33565b5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146119895761193a6000856000806116e5565b6001600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055505b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614611a0c576001600360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b846002600086815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550838573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4809150509392505050565b611ace8383611cf7565b611adb6000848484611391565b505050565b600080600090507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310611b3e577a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008381611b3457611b33612833565b5b0492506040810190505b6d04ee2d6d415b85acef81000000008310611b7b576d04ee2d6d415b85acef81000000008381611b7157611b70612833565b5b0492506020810190505b662386f26fc100008310611baa57662386f26fc100008381611ba057611b9f612833565b5b0492506010810190505b6305f5e1008310611bd3576305f5e1008381611bc957611bc8612833565b5b0492506008810190505b6127108310611bf8576127108381611bee57611bed612833565b5b0492506004810190505b60648310611c1b5760648381611c1157611c10612833565b5b0492506002810190505b600a8310611c2a576001810190505b80915050919050565b611c3e838383611df0565b611cf257600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611cb357806040517f7e273289000000000000000000000000000000000000000000000000000000008152600401611caa91906121a4565b60405180910390fd5b81816040517f177e802f000000000000000000000000000000000000000000000000000000008152600401611ce99291906126af565b60405180910390fd5b505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611d695760006040517f64a0ae92000000000000000000000000000000000000000000000000000000008152600401611d60919061210e565b60405180910390fd5b6000611d77838360006118aa565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614611deb5760006040517f73c6ac6e000000000000000000000000000000000000000000000000000000008152600401611de2919061210e565b60405180910390fd5b505050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611ea857508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480611e695750611e688484610f0e565b5b80611ea757508273ffffffffffffffffffffffffffffffffffffffff16611e8f83611094565b73ffffffffffffffffffffffffffffffffffffffff16145b5b90509392505050565b6040518060c0016040528060001515815260200160608152602001606081526020016060815260200160008152602001600081525090565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611f3281611efd565b8114611f3d57600080fd5b50565b600081359050611f4f81611f29565b92915050565b600060208284031215611f6b57611f6a611ef3565b5b6000611f7984828501611f40565b91505092915050565b60008115159050919050565b611f9781611f82565b82525050565b6000602082019050611fb26000830184611f8e565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611ff2578082015181840152602081019050611fd7565b60008484015250505050565b6000601f19601f8301169050919050565b600061201a82611fb8565b6120248185611fc3565b9350612034818560208601611fd4565b61203d81611ffe565b840191505092915050565b60006020820190508181036000830152612062818461200f565b905092915050565b6000819050919050565b61207d8161206a565b811461208857600080fd5b50565b60008135905061209a81612074565b92915050565b6000602082840312156120b6576120b5611ef3565b5b60006120c48482850161208b565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006120f8826120cd565b9050919050565b612108816120ed565b82525050565b600060208201905061212360008301846120ff565b92915050565b612132816120ed565b811461213d57600080fd5b50565b60008135905061214f81612129565b92915050565b6000806040838503121561216c5761216b611ef3565b5b600061217a85828601612140565b925050602061218b8582860161208b565b9150509250929050565b61219e8161206a565b82525050565b60006020820190506121b96000830184612195565b92915050565b6000806000606084860312156121d8576121d7611ef3565b5b60006121e686828701612140565b93505060206121f786828701612140565b92505060406122088682870161208b565b9150509250925092565b61221b81611f82565b82525050565b600082825260208201905092915050565b600061223d82611fb8565b6122478185612221565b9350612257818560208601611fd4565b61226081611ffe565b840191505092915050565b6122748161206a565b82525050565b600060c0830160008301516122926000860182612212565b50602083015184820360208601526122aa8282612232565b915050604083015184820360408601526122c48282612232565b915050606083015184820360608601526122de8282612232565b91505060808301516122f3608086018261226b565b5060a083015161230660a086018261226b565b508091505092915050565b6000602082019050818103600083015261232b818461227a565b905092915050565b60006020828403121561234957612348611ef3565b5b600061235784828501612140565b91505092915050565b61236981611f82565b811461237457600080fd5b50565b60008135905061238681612360565b92915050565b600080604083850312156123a3576123a2611ef3565b5b60006123b185828601612140565b92505060206123c285828601612377565b9150509250929050565b600080fd5b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b61240e82611ffe565b810181811067ffffffffffffffff8211171561242d5761242c6123d6565b5b80604052505050565b6000612440611ee9565b905061244c8282612405565b919050565b600067ffffffffffffffff82111561246c5761246b6123d6565b5b61247582611ffe565b9050602081019050919050565b82818337600083830152505050565b60006124a461249f84612451565b612436565b9050828152602081018484840111156124c0576124bf6123d1565b5b6124cb848285612482565b509392505050565b600082601f8301126124e8576124e76123cc565b5b81356124f8848260208601612491565b91505092915050565b6000806000806080858703121561251b5761251a611ef3565b5b600061252987828801612140565b945050602061253a87828801612140565b935050604061254b8782880161208b565b925050606085013567ffffffffffffffff81111561256c5761256b611ef8565b5b612578878288016124d3565b91505092959194509250565b6000806040838503121561259b5761259a611ef3565b5b60006125a985828601612140565b92505060206125ba85828601612140565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061260b57607f821691505b60208210810361261e5761261d6125c4565b5b50919050565b60006080820190506126396000830187612195565b61264660208301866120ff565b61265360408301856120ff565b6126606060830184612195565b95945050505050565b600081905092915050565b50565b6000612684600083612669565b915061268f82612674565b600082019050919050565b60006126a582612677565b9150819050919050565b60006040820190506126c460008301856120ff565b6126d16020830184612195565b9392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006127128261206a565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612744576127436126d8565b5b600182019050919050565b60008151905061275e81612074565b92915050565b60006020828403121561277a57612779611ef3565b5b60006127888482850161274f565b91505092915050565b60006060820190506127a66000830186612195565b6127b36020830185612195565b6127c06040830184612195565b949350505050565b60006127d3826120cd565b9050919050565b6127e3816127c8565b81146127ee57600080fd5b50565b600081519050612800816127da565b92915050565b60006020828403121561281c5761281b611ef3565b5b600061282a848285016127f1565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061286d8261206a565b91506128788361206a565b92508261288857612887612833565b5b828204905092915050565b600061289e8261206a565b91506128a98361206a565b92508282026128b78161206a565b915082820484148315176128ce576128cd6126d8565b5b5092915050565b60006040820190506128ea6000830185612195565b6128f76020830184612195565b9392505050565b600081905092915050565b600061291482611fb8565b61291e81856128fe565b935061292e818560208601611fd4565b80840191505092915050565b60006129468285612909565b91506129528284612909565b91508190509392505050565b600060608201905061297360008301866120ff565b6129806020830185612195565b61298d60408301846120ff565b949350505050565b600081519050919050565b600082825260208201905092915050565b60006129bc82612995565b6129c681856129a0565b93506129d6818560208601611fd4565b6129df81611ffe565b840191505092915050565b60006080820190506129ff60008301876120ff565b612a0c60208301866120ff565b612a196040830185612195565b8181036060830152612a2b81846129b1565b905095945050505050565b600081519050612a4581611f29565b92915050565b600060208284031215612a6157612a60611ef3565b5b6000612a6f84828501612a36565b9150509291505056fea26469706673582212208fffc78fa55844f0e46b0343b9ce38d95d84caeabf9473517e7e64f631a66aaf64736f6c6343000814003300000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000012000000000000000000000000000000000000000000000000000038d7ea4c680000000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000000b4d414e544c45204c4f474f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000054d4e544c47000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005968747470733a2f2f62616679626569666a74726f71666c37326576707677747466706c6e617a6e7573786d613436747961783779796a32367a6a37336678696d6d36752e697066732e6e667473746f726167652e6c696e6b2f00000000000000