60e06040523480156200001157600080fd5b5060405162004a2438038062004a2483398181016040528101906200003791906200078f565b6040518060400160405280600d81526020017f52616e646f6d497066734e6674000000000000000000000000000000000000008152506040518060400160405280600381526020017f52494e00000000000000000000000000000000000000000000000000000000008152503380600087878173ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff16815250508073ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff16815250505050600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000185576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200017c9062000881565b60405180910390fd5b816000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146200020c576200020b816200026360201b60201c565b5b505050816002908162000220919062000ae4565b50806003908162000232919062000ae4565b5050508360c0818152505080600f9060036200025092919062000392565b506000600e819055505050505062000c3d565b3373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603620002d4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002cb9062000c1b565b60405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae127860405160405180910390a350565b8260038101928215620003d2579160200282015b82811115620003d1578251829081620003c0919062000ae4565b5091602001919060010190620003a6565b5b509050620003e19190620003e5565b5090565b5b80821115620004095760008181620003ff91906200040d565b50600101620003e6565b5090565b5080546200041b90620008dd565b6000825580601f106200042f575062000450565b601f0160209004906000526020600020908101906200044f919062000453565b5b50565b5b808211156200046e57600081600090555060010162000454565b5090565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b6200049b8162000486565b8114620004a757600080fd5b50565b600081519050620004bb8162000490565b92915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000620004ee82620004c1565b9050919050565b6200050081620004e1565b81146200050c57600080fd5b50565b6000815190506200052081620004f5565b92915050565b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b62000576826200052b565b810181811067ffffffffffffffff821117156200059857620005976200053c565b5b80604052505050565b6000620005ad62000472565b9050620005bb82826200056b565b919050565b600067ffffffffffffffff821115620005de57620005dd6200053c565b5b602082029050919050565b600080fd5b600080fd5b600067ffffffffffffffff8211156200061157620006106200053c565b5b6200061c826200052b565b9050602081019050919050565b60005b83811015620006495780820151818401526020810190506200062c565b60008484015250505050565b60006200066c6200066684620005f3565b620005a1565b9050828152602081018484840111156200068b576200068a620005ee565b5b6200069884828562000629565b509392505050565b600082601f830112620006b857620006b762000526565b5b8151620006ca84826020860162000655565b91505092915050565b6000620006ea620006e484620005c0565b620005a1565b90508060208402830185811115620007075762000706620005e9565b5b835b818110156200075557805167ffffffffffffffff81111562000730576200072f62000526565b5b8086016200073f8982620006a0565b8552602085019450505060208101905062000709565b5050509392505050565b600082601f83011262000777576200077662000526565b5b600362000786848285620006d3565b91505092915050565b60008060008060808587031215620007ac57620007ab6200047c565b5b6000620007bc87828801620004aa565b9450506020620007cf878288016200050f565b9350506040620007e2878288016200050f565b925050606085015167ffffffffffffffff81111562000806576200080562000481565b5b62000814878288016200075f565b91505092959194509250565b600082825260208201905092915050565b7f43616e6e6f7420736574206f776e657220746f207a65726f0000000000000000600082015250565b60006200086960188362000820565b9150620008768262000831565b602082019050919050565b600060208201905081810360008301526200089c816200085a565b9050919050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620008f657607f821691505b6020821081036200090c576200090b620008ae565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620009767fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000937565b62000982868362000937565b95508019841693508086168417925050509392505050565b6000819050919050565b6000620009c5620009bf620009b98462000486565b6200099a565b62000486565b9050919050565b6000819050919050565b620009e183620009a4565b620009f9620009f082620009cc565b84845462000944565b825550505050565b600090565b62000a1062000a01565b62000a1d818484620009d6565b505050565b5b8181101562000a455762000a3960008262000a06565b60018101905062000a23565b5050565b601f82111562000a945762000a5e8162000912565b62000a698462000927565b8101602085101562000a79578190505b62000a9162000a888562000927565b83018262000a22565b50505b505050565b600082821c905092915050565b600062000ab96000198460080262000a99565b1980831691505092915050565b600062000ad4838362000aa6565b9150826002028217905092915050565b62000aef82620008a3565b67ffffffffffffffff81111562000b0b5762000b0a6200053c565b5b62000b178254620008dd565b62000b2482828562000a49565b600060209050601f83116001811462000b5c576000841562000b47578287015190505b62000b53858262000ac6565b86555062000bc3565b601f19841662000b6c8662000912565b60005b8281101562000b965784890151825560018201915060208501945060208101905062000b6f565b8683101562000bb6578489015162000bb2601f89168262000aa6565b8355505b6001600288020188555050505b505050505050565b7f43616e6e6f74207472616e7366657220746f2073656c66000000000000000000600082015250565b600062000c0360178362000820565b915062000c108262000bcb565b602082019050919050565b6000602082019050818103600083015262000c368162000bf4565b9050919050565b60805160a05160c051613d9462000c90600039600081816109d20152610e5e0152600081816107fa01528181610ed701528181611d3a01528181611d5b0152611e7b01526000611cfe0152613d946000f3fe6080604052600436106101b75760003560e01c8063879aebde116100ec578063b88d4fde1161008a578063e985e9c511610064578063e985e9c514610605578063f2fde38b14610642578063fc2a88c31461066b578063fe6d238714610696576101b7565b8063b88d4fde14610562578063c87b56dd1461058b578063e37bbc5e146105c8576101b7565b8063a0ef91df116100c6578063a0ef91df146104e7578063a168fa89146104f1578063a22cb4651461052f578063aa15249114610558576101b7565b8063879aebde146104545780638da5cb5b1461049157806395d89b41146104bc576101b7565b80634d0d8eb51161015957806370a082311161013357806370a082311461039857806378a89567146103d557806379ba5097146104005780638796ba8c14610417576101b7565b80634d0d8eb5146103055780636352211e146103305780636c3135f51461036d576101b7565b8063095ea7b311610195578063095ea7b3146102615780631fe543e31461028a57806323b872dd146102b357806342842e0e146102dc576101b7565b806301ffc9a7146101bc57806306fdde03146101f9578063081812fc14610224575b600080fd5b3480156101c857600080fd5b506101e360048036038101906101de9190612aeb565b6106d3565b6040516101f09190612b33565b60405180910390f35b34801561020557600080fd5b5061020e610734565b60405161021b9190612bde565b60405180910390f35b34801561023057600080fd5b5061024b60048036038101906102469190612c36565b6107c6565b6040516102589190612ca4565b60405180910390f35b34801561026d57600080fd5b5061028860048036038101906102839190612ceb565b6107e2565b005b34801561029657600080fd5b506102b160048036038101906102ac9190612e73565b6107f8565b005b3480156102bf57600080fd5b506102da60048036038101906102d59190612ecf565b610894565b005b3480156102e857600080fd5b5061030360048036038101906102fe9190612ecf565b610996565b005b34801561031157600080fd5b5061031a6109b6565b6040516103279190612f31565b60405180910390f35b34801561033c57600080fd5b5061035760048036038101906103529190612c36565b6109bc565b6040516103649190612ca4565b60405180910390f35b34801561037957600080fd5b506103826109ce565b60405161038f9190612f31565b60405180910390f35b3480156103a457600080fd5b506103bf60048036038101906103ba9190612f4c565b6109f6565b6040516103cc9190612f31565b60405180910390f35b3480156103e157600080fd5b506103ea610ab0565b6040516103f79190612f31565b60405180910390f35b34801561040c57600080fd5b50610415610aba565b005b34801561042357600080fd5b5061043e60048036038101906104399190612c36565b610c4f565b60405161044b9190612f31565b60405180910390f35b34801561046057600080fd5b5061047b60048036038101906104769190612c36565b610c73565b6040516104889190612ca4565b60405180910390f35b34801561049d57600080fd5b506104a6610ca6565b6040516104b39190612ca4565b60405180910390f35b3480156104c857600080fd5b506104d1610ccf565b6040516104de9190612bde565b60405180910390f35b6104ef610d61565b005b3480156104fd57600080fd5b5061051860048036038101906105139190612c36565b610e15565b604051610526929190612f79565b60405180910390f35b34801561053b57600080fd5b5061055660048036038101906105519190612fce565b610e46565b005b610560610e5c565b005b34801561056e57600080fd5b50610589600480360381019061058491906130c3565b6110e9565b005b34801561059757600080fd5b506105b260048036038101906105ad9190612c36565b611106565b6040516105bf9190612bde565b60405180910390f35b3480156105d457600080fd5b506105ef60048036038101906105ea9190612c36565b611219565b6040516105fc91906131bd565b60405180910390f35b34801561061157600080fd5b5061062c600480360381019061062791906131d8565b611311565b6040516106399190612b33565b60405180910390f35b34801561064e57600080fd5b5061066960048036038101906106649190612f4c565b6113a5565b005b34801561067757600080fd5b506106806113b9565b60405161068d9190612f31565b60405180910390f35b3480156106a257600080fd5b506106bd60048036038101906106b89190612c36565b6113bf565b6040516106ca9190612bde565b60405180910390f35b6000634906490660e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061072d575061072c82611462565b5b9050919050565b60606002805461074390613247565b80601f016020809104026020016040519081016040528092919081815260200182805461076f90613247565b80156107bc5780601f10610791576101008083540402835291602001916107bc565b820191906000526020600020905b81548152906001019060200180831161079f57829003601f168201915b5050505050905090565b60006107d182611544565b506107db826115cc565b9050919050565b6107f482826107ef611609565b611611565b5050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610886576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161087d906132c4565b60405180910390fd5b6108908282611623565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036109065760006040517f64a0ae920000000000000000000000000000000000000000000000000000000081526004016108fd9190612ca4565b60405180910390fd5b600061091a8383610915611609565b6118e1565b90508373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610990578382826040517f64283d7b000000000000000000000000000000000000000000000000000000008152600401610987939291906132e4565b60405180910390fd5b50505050565b6109b1838383604051806020016040528060008152506110e9565b505050565b600d5481565b60006109c782611544565b9050919050565b60007f0000000000000000000000000000000000000000000000000000000000000000905090565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610a695760006040517f89c62b64000000000000000000000000000000000000000000000000000000008152600401610a609190612ca4565b60405180910390fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000600e54905090565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4190613367565b60405180910390fd5b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b600b8181548110610c5f57600080fd5b906000526020600020016000915090505481565b600a6020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060038054610cde90613247565b80601f0160208091040260200160405190810160405280929190818152602001828054610d0a90613247565b8015610d575780601f10610d2c57610100808354040283529160200191610d57565b820191906000526020600020905b815481529060010190602001808311610d3a57829003601f168201915b5050505050905090565b610d69611afb565b600047905060003373ffffffffffffffffffffffffffffffffffffffff1682604051610d94906133b8565b60006040518083038185875af1925050503d8060008114610dd1576040519150601f19603f3d011682016040523d82523d6000602084013e610dd6565b606091505b5050905080610e11576040517fca7e25b700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5050565b60096020528060005260406000206000915090508060000154908060010160009054906101000a900460ff16905082565b610e58610e51611609565b8383611b8b565b5050565b7f0000000000000000000000000000000000000000000000000000000000000000341015610eb6576040517f3964ba4b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6000610ec86207a12060036001611cfa565b905060405180606001604052807f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16634306d3546207a1206040518263ffffffff1660e01b8152600401610f3191906133ec565b602060405180830381865afa158015610f4e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f72919061341c565b8152602001600015158152602001600067ffffffffffffffff811115610f9b57610f9a612d30565b5b604051908082528060200260200182016040528015610fc95781602001602082028036833780820191505090505b50815250600960008381526020019081526020016000206000820151816000015560208201518160010160006101000a81548160ff0219169083151502179055506040820151816002019080519060200190611026929190612a15565b5090505033600a600083815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600b81908060018154018082558091505060019003906000526020600020016000909190919091505580600c819055507fcc58b13ad3eab50626c6a6300b1d139cd6ebb1688a7cced9461c2f7e762665ee8160016040516110de929190613449565b60405180910390a150565b6110f4848484610894565b61110084848484611f11565b50505050565b606061111182611544565b50600060086000848152602001908152602001600020805461113290613247565b80601f016020809104026020016040519081016040528092919081815260200182805461115e90613247565b80156111ab5780601f10611180576101008083540402835291602001916111ab565b820191906000526020600020905b81548152906001019060200180831161118e57829003601f168201915b5050505050905060006111bc6120c8565b905060008151036111d1578192505050611214565b6000825111156112065780826040516020016111ee9291906134ae565b60405160208183030381529060405292505050611214565b61120f846120df565b925050505b919050565b6000806040518060600160405280600a60ff168152602001601e60ff168152602001606460ff1681525090506000805b60038110156112d95781851015801561127c57508281600381106112705761126f6134d2565b5b602002015160ff168511155b1561129e5780600281111561129457611293613146565b5b935050505061130c565b8281600381106112b1576112b06134d2565b5b602002015160ff16826112c49190613530565b915080806112d190613564565b915050611249565b506040517f05cbffeb00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6113ad611afb565b6113b681612148565b50565b600c5481565b600f81600381106113cf57600080fd5b0160009150905080546113e190613247565b80601f016020809104026020016040519081016040528092919081815260200182805461140d90613247565b801561145a5780601f1061142f5761010080835404028352916020019161145a565b820191906000526020600020905b81548152906001019060200180831161143d57829003601f168201915b505050505081565b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061152d57507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061153d575061153c82612274565b5b9050919050565b600080611550836122de565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036115c357826040517f7e2732890000000000000000000000000000000000000000000000000000000081526004016115ba9190612f31565b60405180910390fd5b80915050919050565b60006006600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b600033905090565b61161e838383600161231b565b505050565b600060096000848152602001908152602001600020600001541161167c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611673906135f8565b60405180910390fd5b60016009600084815260200190815260200160002060010160006101000a81548160ff021916908315150217905550806009600084815260200190815260200160002060020190805190602001906116d5929190612a15565b507f147eb1ff0c82f87f2b03e2c43f5a36488ff63ec6b730195fde4605f612f8db518282600960008681526020019081526020016000206000015460405161171f939291906136d6565b60405180910390a18060008151811061173b5761173a6134d2565b5b6020026020010151600d8190555060006064600d5461175a9190613743565b9050600061176782611219565b90506000600e5490506001600e5461177f9190613530565b600e819055506117c2600a600087815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16826124e0565b61187b81600f8460028111156117db576117da613146565b5b600381106117ec576117eb6134d2565b5b0180546117f890613247565b80601f016020809104026020016040519081016040528092919081815260200182805461182490613247565b80156118715780601f1061184657610100808354040283529160200191611871565b820191906000526020600020905b81548152906001019060200180831161185457829003601f168201915b50505050506124fe565b7fe578c8f75165e747c939a516a93901610990f0f120d839b08ce89b77ad220f1e81600f8460028111156118b2576118b1613146565b5b600381106118c3576118c26134d2565b5b016040516118d292919061380d565b60405180910390a15050505050565b6000806118ed846122de565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161461192f5761192e81848661255a565b5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16146119c05761197160008560008061231b565b6001600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825403925050819055505b600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614611a43576001600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505b846004600086815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550838573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4809150509392505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611b89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b8090613889565b60405180910390fd5b565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611bfc57816040517f5b08ba18000000000000000000000000000000000000000000000000000000008152600401611bf39190612ca4565b60405180910390fd5b80600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c3183604051611ced9190612b33565b60405180910390a3505050565b60007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16634000aea07f00000000000000000000000000000000000000000000000000000000000000007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16634306d354886040518263ffffffff1660e01b8152600401611db291906133ec565b602060405180830381865afa158015611dcf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611df3919061341c565b878787604051602001611e08939291906138c6565b6040516020818303038152906040526040518463ffffffff1660e01b8152600401611e3593929190613952565b6020604051808303816000875af1158015611e54573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e7891906139a5565b507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663fc2a88c36040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ee4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611f08919061341c565b90509392505050565b60008373ffffffffffffffffffffffffffffffffffffffff163b11156120c2578273ffffffffffffffffffffffffffffffffffffffff1663150b7a02611f55611609565b8685856040518563ffffffff1660e01b8152600401611f7794939291906139d2565b6020604051808303816000875af1925050508015611fb357506040513d601f19601f82011682018060405250810190611fb09190613a33565b60015b612037573d8060008114611fe3576040519150601f19603f3d011682016040523d82523d6000602084013e611fe8565b606091505b50600081510361202f57836040517f64a0ae920000000000000000000000000000000000000000000000000000000081526004016120269190612ca4565b60405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916146120c057836040517f64a0ae920000000000000000000000000000000000000000000000000000000081526004016120b79190612ca4565b60405180910390fd5b505b50505050565b606060405180602001604052806000815250905090565b60606120ea82611544565b5060006120f56120c8565b905060008151116121155760405180602001604052806000815250612140565b8061211f8461261e565b6040516020016121309291906134ae565b6040516020818303038152906040525b915050919050565b3373ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036121b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121ad90613aac565b60405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fed8889f560326eb138920d842192f0eb3dd22b4f139c87a2c57538e05bae127860405160405180910390a350565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b60006004600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b80806123545750600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b1561248857600061236484611544565b9050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156123cf57508273ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614155b80156123e257506123e08184611311565b155b1561242457826040517fa9fbf51f00000000000000000000000000000000000000000000000000000000815260040161241b9190612ca4565b60405180910390fd5b811561248657838573ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a45b505b836006600085815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050565b6124fa8282604051806020016040528060008152506126ec565b5050565b8060086000848152602001908152602001600020908161251e9190613c63565b507ff8e1a15aba9398e019f0b49df1a4fde98ee17ae345cb5f6b5e2c27f5033e8ce78260405161254e9190612f31565b60405180910390a15050565b612565838383612708565b61261957600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036125da57806040517f7e2732890000000000000000000000000000000000000000000000000000000081526004016125d19190612f31565b60405180910390fd5b81816040517f177e802f000000000000000000000000000000000000000000000000000000008152600401612610929190613d35565b60405180910390fd5b505050565b60606000600161262d846127c9565b01905060008167ffffffffffffffff81111561264c5761264b612d30565b5b6040519080825280601f01601f19166020018201604052801561267e5781602001600182028036833780820191505090505b509050600082602001820190505b6001156126e1578080600190039150507f3031323334353637383961626364656600000000000000000000000000000000600a86061a8153600a85816126d5576126d4613714565b5b0494506000850361268c575b819350505050919050565b6126f6838361291c565b6127036000848484611f11565b505050565b60008073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156127c057508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148061278157506127808484611311565b5b806127bf57508273ffffffffffffffffffffffffffffffffffffffff166127a7836115cc565b73ffffffffffffffffffffffffffffffffffffffff16145b5b90509392505050565b600080600090507a184f03e93ff9f4daa797ed6e38ed64bf6a1f0100000000000000008310612827577a184f03e93ff9f4daa797ed6e38ed64bf6a1f010000000000000000838161281d5761281c613714565b5b0492506040810190505b6d04ee2d6d415b85acef81000000008310612864576d04ee2d6d415b85acef8100000000838161285a57612859613714565b5b0492506020810190505b662386f26fc10000831061289357662386f26fc10000838161288957612888613714565b5b0492506010810190505b6305f5e10083106128bc576305f5e10083816128b2576128b1613714565b5b0492506008810190505b61271083106128e15761271083816128d7576128d6613714565b5b0492506004810190505b6064831061290457606483816128fa576128f9613714565b5b0492506002810190505b600a8310612913576001810190505b80915050919050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361298e5760006040517f64a0ae920000000000000000000000000000000000000000000000000000000081526004016129859190612ca4565b60405180910390fd5b600061299c838360006118e1565b9050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614612a105760006040517f73c6ac6e000000000000000000000000000000000000000000000000000000008152600401612a079190612ca4565b60405180910390fd5b505050565b828054828255906000526020600020908101928215612a51579160200282015b82811115612a50578251825591602001919060010190612a35565b5b509050612a5e9190612a62565b5090565b5b80821115612a7b576000816000905550600101612a63565b5090565b6000604051905090565b600080fd5b600080fd5b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b612ac881612a93565b8114612ad357600080fd5b50565b600081359050612ae581612abf565b92915050565b600060208284031215612b0157612b00612a89565b5b6000612b0f84828501612ad6565b91505092915050565b60008115159050919050565b612b2d81612b18565b82525050565b6000602082019050612b486000830184612b24565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612b88578082015181840152602081019050612b6d565b60008484015250505050565b6000601f19601f8301169050919050565b6000612bb082612b4e565b612bba8185612b59565b9350612bca818560208601612b6a565b612bd381612b94565b840191505092915050565b60006020820190508181036000830152612bf88184612ba5565b905092915050565b6000819050919050565b612c1381612c00565b8114612c1e57600080fd5b50565b600081359050612c3081612c0a565b92915050565b600060208284031215612c4c57612c4b612a89565b5b6000612c5a84828501612c21565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612c8e82612c63565b9050919050565b612c9e81612c83565b82525050565b6000602082019050612cb96000830184612c95565b92915050565b612cc881612c83565b8114612cd357600080fd5b50565b600081359050612ce581612cbf565b92915050565b60008060408385031215612d0257612d01612a89565b5b6000612d1085828601612cd6565b9250506020612d2185828601612c21565b9150509250929050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612d6882612b94565b810181811067ffffffffffffffff82111715612d8757612d86612d30565b5b80604052505050565b6000612d9a612a7f565b9050612da68282612d5f565b919050565b600067ffffffffffffffff821115612dc657612dc5612d30565b5b602082029050602081019050919050565b600080fd5b6000612def612dea84612dab565b612d90565b90508083825260208201905060208402830185811115612e1257612e11612dd7565b5b835b81811015612e3b5780612e278882612c21565b845260208401935050602081019050612e14565b5050509392505050565b600082601f830112612e5a57612e59612d2b565b5b8135612e6a848260208601612ddc565b91505092915050565b60008060408385031215612e8a57612e89612a89565b5b6000612e9885828601612c21565b925050602083013567ffffffffffffffff811115612eb957612eb8612a8e565b5b612ec585828601612e45565b9150509250929050565b600080600060608486031215612ee857612ee7612a89565b5b6000612ef686828701612cd6565b9350506020612f0786828701612cd6565b9250506040612f1886828701612c21565b9150509250925092565b612f2b81612c00565b82525050565b6000602082019050612f466000830184612f22565b92915050565b600060208284031215612f6257612f61612a89565b5b6000612f7084828501612cd6565b91505092915050565b6000604082019050612f8e6000830185612f22565b612f9b6020830184612b24565b9392505050565b612fab81612b18565b8114612fb657600080fd5b50565b600081359050612fc881612fa2565b92915050565b60008060408385031215612fe557612fe4612a89565b5b6000612ff385828601612cd6565b925050602061300485828601612fb9565b9150509250929050565b600080fd5b600067ffffffffffffffff82111561302e5761302d612d30565b5b61303782612b94565b9050602081019050919050565b82818337600083830152505050565b600061306661306184613013565b612d90565b9050828152602081018484840111156130825761308161300e565b5b61308d848285613044565b509392505050565b600082601f8301126130aa576130a9612d2b565b5b81356130ba848260208601613053565b91505092915050565b600080600080608085870312156130dd576130dc612a89565b5b60006130eb87828801612cd6565b94505060206130fc87828801612cd6565b935050604061310d87828801612c21565b925050606085013567ffffffffffffffff81111561312e5761312d612a8e565b5b61313a87828801613095565b91505092959194509250565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602160045260246000fd5b6003811061318657613185613146565b5b50565b600081905061319782613175565b919050565b60006131a782613189565b9050919050565b6131b78161319c565b82525050565b60006020820190506131d260008301846131ae565b92915050565b600080604083850312156131ef576131ee612a89565b5b60006131fd85828601612cd6565b925050602061320e85828601612cd6565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061325f57607f821691505b60208210810361327257613271613218565b5b50919050565b7f6f6e6c792056524620563220777261707065722063616e2066756c66696c6c00600082015250565b60006132ae601f83612b59565b91506132b982613278565b602082019050919050565b600060208201905081810360008301526132dd816132a1565b9050919050565b60006060820190506132f96000830186612c95565b6133066020830185612f22565b6133136040830184612c95565b949350505050565b7f4d7573742062652070726f706f736564206f776e657200000000000000000000600082015250565b6000613351601683612b59565b915061335c8261331b565b602082019050919050565b6000602082019050818103600083015261338081613344565b9050919050565b600081905092915050565b50565b60006133a2600083613387565b91506133ad82613392565b600082019050919050565b60006133c382613395565b9150819050919050565b600063ffffffff82169050919050565b6133e6816133cd565b82525050565b600060208201905061340160008301846133dd565b92915050565b60008151905061341681612c0a565b92915050565b60006020828403121561343257613431612a89565b5b600061344084828501613407565b91505092915050565b600060408201905061345e6000830185612f22565b61346b60208301846133dd565b9392505050565b600081905092915050565b600061348882612b4e565b6134928185613472565b93506134a2818560208601612b6a565b80840191505092915050565b60006134ba828561347d565b91506134c6828461347d565b91508190509392505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061353b82612c00565b915061354683612c00565b925082820190508082111561355e5761355d613501565b5b92915050565b600061356f82612c00565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036135a1576135a0613501565b5b600182019050919050565b7f72657175657374206e6f7420666f756e64000000000000000000000000000000600082015250565b60006135e2601183612b59565b91506135ed826135ac565b602082019050919050565b60006020820190508181036000830152613611816135d5565b9050919050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61364d81612c00565b82525050565b600061365f8383613644565b60208301905092915050565b6000602082019050919050565b600061368382613618565b61368d8185613623565b935061369883613634565b8060005b838110156136c95781516136b08882613653565b97506136bb8361366b565b92505060018101905061369c565b5085935050505092915050565b60006060820190506136eb6000830186612f22565b81810360208301526136fd8185613678565b905061370c6040830184612f22565b949350505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061374e82612c00565b915061375983612c00565b92508261376957613768613714565b5b828206905092915050565b60008190508160005260206000209050919050565b6000815461379681613247565b6137a08186612b59565b945060018216600081146137bb57600181146137d157613804565b60ff198316865281151560200286019350613804565b6137da85613774565b60005b838110156137fc578154818901526001820191506020810190506137dd565b808801955050505b50505092915050565b60006040820190506138226000830185612f22565b81810360208301526138348184613789565b90509392505050565b7f4f6e6c792063616c6c61626c65206279206f776e657200000000000000000000600082015250565b6000613873601683612b59565b915061387e8261383d565b602082019050919050565b600060208201905081810360008301526138a281613866565b9050919050565b600061ffff82169050919050565b6138c0816138a9565b82525050565b60006060820190506138db60008301866133dd565b6138e860208301856138b7565b6138f560408301846133dd565b949350505050565b600081519050919050565b600082825260208201905092915050565b6000613924826138fd565b61392e8185613908565b935061393e818560208601612b6a565b61394781612b94565b840191505092915050565b60006060820190506139676000830186612c95565b6139746020830185612f22565b81810360408301526139868184613919565b9050949350505050565b60008151905061399f81612fa2565b92915050565b6000602082840312156139bb576139ba612a89565b5b60006139c984828501613990565b91505092915050565b60006080820190506139e76000830187612c95565b6139f46020830186612c95565b613a016040830185612f22565b8181036060830152613a138184613919565b905095945050505050565b600081519050613a2d81612abf565b92915050565b600060208284031215613a4957613a48612a89565b5b6000613a5784828501613a1e565b91505092915050565b7f43616e6e6f74207472616e7366657220746f2073656c66000000000000000000600082015250565b6000613a96601783612b59565b9150613aa182613a60565b602082019050919050565b60006020820190508181036000830152613ac581613a89565b9050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302613b197fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82613adc565b613b238683613adc565b95508019841693508086168417925050509392505050565b6000819050919050565b6000613b60613b5b613b5684612c00565b613b3b565b612c00565b9050919050565b6000819050919050565b613b7a83613b45565b613b8e613b8682613b67565b848454613ae9565b825550505050565b600090565b613ba3613b96565b613bae818484613b71565b505050565b5b81811015613bd257613bc7600082613b9b565b600181019050613bb4565b5050565b601f821115613c1757613be881613774565b613bf184613acc565b81016020851015613c00578190505b613c14613c0c85613acc565b830182613bb3565b50505b505050565b600082821c905092915050565b6000613c3a60001984600802613c1c565b1980831691505092915050565b6000613c538383613c29565b9150826002028217905092915050565b613c6c82612b4e565b67ffffffffffffffff811115613c8557613c84612d30565b5b613c8f8254613247565b613c9a828285613bd6565b600060209050601f831160018114613ccd5760008415613cbb578287015190505b613cc58582613c47565b865550613d2d565b601f198416613cdb86613774565b60005b82811015613d0357848901518255600182019150602085019450602081019050613cde565b86831015613d205784890151613d1c601f891682613c29565b8355505b6001600288020188555050505b505050505050565b6000604082019050613d4a6000830185612c95565b613d576020830184612f22565b939250505056fea26469706673582212202e4f4c972dc609cab227fd20e7afd34946b0bb5f4b690e594191f785ae83fe9564736f6c6343000814003300000000000000000000000000000000000000000000000000470de4df820000000000000000000000000000779877a7b0d9e8603169ddbd7836e478b4624789000000000000000000000000ab18414cd93297b0d12ac29e63ca20f515b3db460000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000e00000000000000000000000000000000000000000000000000000000000000160000000000000000000000000000000000000000000000000000000000000005068747470733a2f2f697066732e696f2f697066732f6261666b726569666164733661336d6f3579626e6a676e677369756f6e756677756468717934626532336379677436626f3476636c6e6b6e35686900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005068747470733a2f2f697066732e696f2f697066732f6261666b7265696679366d657779666d6463686a766f777a6e6676667075336f376b683473776d727a716275726637656c7564676d6f35627a7a6d00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000005068747470733a2f2f697066732e696f2f697066732f6261666b72656966766a70366c7670736c35356874363734797867376b62797071357a743379646c6e763668766d676d656367636232766362627100000000000000000000000000000000