string(19) "linkassistant/order"
string(4) "page"
object(frontend\modules\page\Module)#235 (17) {
["params"]=>
array(0) {
}
["id"]=>
string(4) "page"
["module"]=>
object(frontend\components\yii\Application)#17 (33) {
["defaultRoute"]=>
string(4) "site"
["catchAll"]=>
NULL
["controller"]=>
NULL
["_homeUrl":"yii\web\Application":private]=>
NULL
["controllerNamespace"]=>
string(20) "frontend\controllers"
["name"]=>
string(14) "My Application"
["charset"]=>
string(5) "UTF-8"
["language"]=>
string(2) "en"
["sourceLanguage"]=>
string(2) "en"
["layout"]=>
string(4) "main"
["requestedRoute"]=>
string(24) "page/linkassistant/order"
["requestedAction"]=>
NULL
["requestedParams"]=>
NULL
["extensions"]=>
array(32) {
["yiisoft/yii2-imagine"]=>
array(3) {
["name"]=>
string(20) "yiisoft/yii2-imagine"
["version"]=>
string(7) "2.3.1.0"
["alias"]=>
array(1) {
["@yii/imagine"]=>
string(69) "/home/linkassi/www/link-assistant.com/vendor/yiisoft/yii2-imagine/src"
}
}
["kak/clickhouse"]=>
array(3) {
["name"]=>
string(14) "kak/clickhouse"
["version"]=>
string(7) "1.1.1.0"
["alias"]=>
array(1) {
["@kak/clickhouse"]=>
string(59) "/home/linkassi/www/link-assistant.com/vendor/kak/clickhouse"
}
}
["himiklab/yii2-recaptcha-widget"]=>
array(3) {
["name"]=>
string(30) "himiklab/yii2-recaptcha-widget"
["version"]=>
string(7) "1.1.2.0"
["alias"]=>
array(1) {
["@himiklab/yii2/recaptcha"]=>
string(75) "/home/linkassi/www/link-assistant.com/vendor/himiklab/yii2-recaptcha-widget"
}
}
["yiisoft/yii2-redis"]=>
array(3) {
["name"]=>
string(18) "yiisoft/yii2-redis"
["version"]=>
string(10) "dev-master"
["alias"]=>
array(1) {
["@yii/redis"]=>
string(67) "/home/linkassi/www/link-assistant.com/vendor/yiisoft/yii2-redis/src"
}
}
["yiisoft/yii2-swiftmailer"]=>
array(3) {
["name"]=>
string(24) "yiisoft/yii2-swiftmailer"
["version"]=>
string(7) "2.0.7.0"
["alias"]=>
array(1) {
["@yii/swiftmailer"]=>
string(69) "/home/linkassi/www/link-assistant.com/vendor/yiisoft/yii2-swiftmailer"
}
}
["justinvoelker/yii2-separatedpager"]=>
array(3) {
["name"]=>
string(33) "justinvoelker/yii2-separatedpager"
["version"]=>
string(7) "1.0.2.0"
["alias"]=>
array(1) {
["@justinvoelker/separatedpager"]=>
string(78) "/home/linkassi/www/link-assistant.com/vendor/justinvoelker/yii2-separatedpager"
}
}
["kartik-v/yii2-widget-select2"]=>
array(3) {
["name"]=>
string(28) "kartik-v/yii2-widget-select2"
["version"]=>
string(7) "2.2.5.0"
["alias"]=>
array(1) {
["@kartik/select2"]=>
string(77) "/home/linkassi/www/link-assistant.com/vendor/kartik-v/yii2-widget-select2/src"
}
}
["alexandernst/yii2-device-detect"]=>
array(3) {
["name"]=>
string(31) "alexandernst/yii2-device-detect"
["version"]=>
string(8) "0.0.12.0"
["alias"]=>
array(1) {
["@alexandernst/devicedetect"]=>
string(76) "/home/linkassi/www/link-assistant.com/vendor/alexandernst/yii2-device-detect"
}
}
["yiisoft/yii2-sphinx"]=>
array(3) {
["name"]=>
string(19) "yiisoft/yii2-sphinx"
["version"]=>
string(8) "2.0.16.0"
["alias"]=>
array(1) {
["@yii/sphinx"]=>
string(68) "/home/linkassi/www/link-assistant.com/vendor/yiisoft/yii2-sphinx/src"
}
}
["yiisoft/yii2-jui"]=>
array(3) {
["name"]=>
string(16) "yiisoft/yii2-jui"
["version"]=>
string(7) "2.0.7.0"
["alias"]=>
array(1) {
["@yii/jui"]=>
string(61) "/home/linkassi/www/link-assistant.com/vendor/yiisoft/yii2-jui"
}
}
["creocoder/yii2-nested-sets"]=>
array(3) {
["name"]=>
string(26) "creocoder/yii2-nested-sets"
["version"]=>
string(7) "0.9.0.0"
["alias"]=>
array(1) {
["@creocoder/nestedsets"]=>
string(75) "/home/linkassi/www/link-assistant.com/vendor/creocoder/yii2-nested-sets/src"
}
}
["bupy7/yii2-embed"]=>
array(3) {
["name"]=>
string(16) "bupy7/yii2-embed"
["version"]=>
string(7) "1.0.0.0"
["alias"]=>
array(1) {
["@bupy7/embed"]=>
string(61) "/home/linkassi/www/link-assistant.com/vendor/bupy7/yii2-embed"
}
}
["yiisoft/yii2-queue"]=>
array(3) {
["name"]=>
string(18) "yiisoft/yii2-queue"
["version"]=>
string(7) "2.3.7.0"
["alias"]=>
array(11) {
["@yii/queue"]=>
string(67) "/home/linkassi/www/link-assistant.com/vendor/yiisoft/yii2-queue/src"
["@yii/queue/db"]=>
string(78) "/home/linkassi/www/link-assistant.com/vendor/yiisoft/yii2-queue/src/drivers/db"
["@yii/queue/sqs"]=>
string(79) "/home/linkassi/www/link-assistant.com/vendor/yiisoft/yii2-queue/src/drivers/sqs"
["@yii/queue/amqp"]=>
string(80) "/home/linkassi/www/link-assistant.com/vendor/yiisoft/yii2-queue/src/drivers/amqp"
["@yii/queue/file"]=>
string(80) "/home/linkassi/www/link-assistant.com/vendor/yiisoft/yii2-queue/src/drivers/file"
["@yii/queue/sync"]=>
string(80) "/home/linkassi/www/link-assistant.com/vendor/yiisoft/yii2-queue/src/drivers/sync"
["@yii/queue/redis"]=>
string(81) "/home/linkassi/www/link-assistant.com/vendor/yiisoft/yii2-queue/src/drivers/redis"
["@yii/queue/stomp"]=>
string(81) "/home/linkassi/www/link-assistant.com/vendor/yiisoft/yii2-queue/src/drivers/stomp"
["@yii/queue/gearman"]=>
string(83) "/home/linkassi/www/link-assistant.com/vendor/yiisoft/yii2-queue/src/drivers/gearman"
["@yii/queue/beanstalk"]=>
string(85) "/home/linkassi/www/link-assistant.com/vendor/yiisoft/yii2-queue/src/drivers/beanstalk"
["@yii/queue/amqp_interop"]=>
string(88) "/home/linkassi/www/link-assistant.com/vendor/yiisoft/yii2-queue/src/drivers/amqp_interop"
}
}
["himiklab/yii2-sitemap-module"]=>
array(3) {
["name"]=>
string(28) "himiklab/yii2-sitemap-module"
["version"]=>
string(7) "1.2.1.0"
["alias"]=>
array(1) {
["@himiklab/sitemap"]=>
string(73) "/home/linkassi/www/link-assistant.com/vendor/himiklab/yii2-sitemap-module"
}
}
["kartik-v/yii2-krajee-base"]=>
array(3) {
["name"]=>
string(25) "kartik-v/yii2-krajee-base"
["version"]=>
string(7) "3.0.5.0"
["alias"]=>
array(1) {
["@kartik/base"]=>
string(74) "/home/linkassi/www/link-assistant.com/vendor/kartik-v/yii2-krajee-base/src"
}
}
["mihaildev/yii2-elfinder"]=>
array(3) {
["name"]=>
string(23) "mihaildev/yii2-elfinder"
["version"]=>
string(7) "1.4.0.0"
["alias"]=>
array(1) {
["@mihaildev/elfinder"]=>
string(68) "/home/linkassi/www/link-assistant.com/vendor/mihaildev/yii2-elfinder"
}
}
["miloschuman/yii2-highcharts-widget"]=>
array(3) {
["name"]=>
string(34) "miloschuman/yii2-highcharts-widget"
["version"]=>
string(8) "10.0.1.0"
["alias"]=>
array(1) {
["@miloschuman/highcharts"]=>
string(83) "/home/linkassi/www/link-assistant.com/vendor/miloschuman/yii2-highcharts-widget/src"
}
}
["ptheofan/yii2-meta"]=>
array(3) {
["name"]=>
string(18) "ptheofan/yii2-meta"
["version"]=>
string(7) "1.0.1.0"
["alias"]=>
array(1) {
["@ptheofan/meta"]=>
string(63) "/home/linkassi/www/link-assistant.com/vendor/ptheofan/yii2-meta"
}
}
["xj/yii2-rsa"]=>
array(3) {
["name"]=>
string(11) "xj/yii2-rsa"
["version"]=>
string(7) "1.0.0.0"
["alias"]=>
array(1) {
["@xj/rsa"]=>
string(56) "/home/linkassi/www/link-assistant.com/vendor/xj/yii2-rsa"
}
}
["yiisoft/yii2-bootstrap"]=>
array(3) {
["name"]=>
string(22) "yiisoft/yii2-bootstrap"
["version"]=>
string(8) "2.0.11.0"
["alias"]=>
array(1) {
["@yii/bootstrap"]=>
string(71) "/home/linkassi/www/link-assistant.com/vendor/yiisoft/yii2-bootstrap/src"
}
}
["belprime/search-engines"]=>
array(3) {
["name"]=>
string(23) "belprime/search-engines"
["version"]=>
string(7) "0.1.0.0"
["alias"]=>
array(1) {
["@belprime/search"]=>
string(68) "/home/linkassi/www/link-assistant.com/vendor/belprime/search-engines"
}
}
["belprime/sps-agencies"]=>
array(3) {
["name"]=>
string(21) "belprime/sps-agencies"
["version"]=>
string(10) "dev-master"
["alias"]=>
array(1) {
["@belprime/sps/agencies"]=>
string(66) "/home/linkassi/www/link-assistant.com/vendor/belprime/sps-agencies"
}
}
["notamedia/yii2-sentry"]=>
array(3) {
["name"]=>
string(21) "notamedia/yii2-sentry"
["version"]=>
string(7) "1.7.0.0"
["alias"]=>
array(1) {
["@notamedia/sentry"]=>
string(70) "/home/linkassi/www/link-assistant.com/vendor/notamedia/yii2-sentry/src"
}
}
["belprime/sps-tracker"]=>
array(3) {
["name"]=>
string(20) "belprime/sps-tracker"
["version"]=>
string(7) "2.2.1.0"
["alias"]=>
array(1) {
["@belprime/sps/tracker"]=>
string(65) "/home/linkassi/www/link-assistant.com/vendor/belprime/sps-tracker"
}
}
["belprime/sps-currency"]=>
array(3) {
["name"]=>
string(21) "belprime/sps-currency"
["version"]=>
string(7) "0.0.3.0"
["alias"]=>
array(1) {
["@belprime/sps/currency"]=>
string(66) "/home/linkassi/www/link-assistant.com/vendor/belprime/sps-currency"
}
}
["belprime/sps-blex"]=>
array(3) {
["name"]=>
string(17) "belprime/sps-blex"
["version"]=>
string(7) "0.0.4.0"
["alias"]=>
array(1) {
["@belprime/sps/blex"]=>
string(62) "/home/linkassi/www/link-assistant.com/vendor/belprime/sps-blex"
}
}
["belprime/sps-changes"]=>
array(3) {
["name"]=>
string(20) "belprime/sps-changes"
["version"]=>
string(8) "0.2.16.0"
["alias"]=>
array(1) {
["@belprime/sps/changes"]=>
string(65) "/home/linkassi/www/link-assistant.com/vendor/belprime/sps-changes"
}
}
["codemix/yii2-localeurls"]=>
array(3) {
["name"]=>
string(23) "codemix/yii2-localeurls"
["version"]=>
string(7) "1.8.1.0"
["alias"]=>
array(1) {
["@codemix/localeurls"]=>
string(68) "/home/linkassi/www/link-assistant.com/vendor/codemix/yii2-localeurls"
}
}
["belprime/sps-offers"]=>
array(3) {
["name"]=>
string(19) "belprime/sps-offers"
["version"]=>
string(8) "0.7.14.0"
["alias"]=>
array(1) {
["@belprime/sps/offers"]=>
string(64) "/home/linkassi/www/link-assistant.com/vendor/belprime/sps-offers"
}
}
["yiisoft/yii2-httpclient"]=>
array(3) {
["name"]=>
string(23) "yiisoft/yii2-httpclient"
["version"]=>
string(8) "2.0.16.0"
["alias"]=>
array(1) {
["@yii/httpclient"]=>
string(72) "/home/linkassi/www/link-assistant.com/vendor/yiisoft/yii2-httpclient/src"
}
}
["yiisoft/yii2-authclient"]=>
array(3) {
["name"]=>
string(23) "yiisoft/yii2-authclient"
["version"]=>
string(8) "2.2.17.0"
["alias"]=>
array(1) {
["@yii/authclient"]=>
string(72) "/home/linkassi/www/link-assistant.com/vendor/yiisoft/yii2-authclient/src"
}
}
["belprime/blog"]=>
array(3) {
["name"]=>
string(13) "belprime/blog"
["version"]=>
string(8) "1.13.8.0"
["alias"]=>
array(1) {
["@belprime/blog"]=>
string(58) "/home/linkassi/www/link-assistant.com/vendor/belprime/blog"
}
}
}
["bootstrap"]=>
array(9) {
[0]=>
string(5) "queue"
[1]=>
string(8) "appQueue"
[2]=>
string(3) "log"
[3]=>
string(46) "frontend\extensions\partners\BootstrapPartners"
[4]=>
string(37) "frontend\extensions\tracking\Tracking"
[5]=>
string(8) "rankdots"
[6]=>
string(4) "news"
[7]=>
string(4) "help"
[8]=>
string(8) "seo-wiki"
}
["state"]=>
int(3)
["loadedModules"]=>
array(3) {
["frontend\components\yii\Application"]=>
*RECURSION*
["belprime\blog\modules\frontend\Module"]=>
object(belprime\blog\modules\frontend\Module)#229 (29) {
["bundles"]=>
array(1) {
["yii\web\JqueryAsset"]=>
array(1) {
["jsOptions"]=>
array(1) {
["position"]=>
int(3)
}
}
}
["postWidgetsNamespace"]=>
string(31) "\frontend\modules\news\widgets\"
["srcSets"]=>
bool(false)
["macroMarking"]=>
bool(false)
["bootstrapViewCallback"]=>
NULL
["id"]=>
string(8) "seo-wiki"
["db"]=>
string(9) "dbSeoWiki"
["theme"]=>
array(3) {
["baseUrl"]=>
string(12) "@web/seowiki"
["basePath"]=>
string(44) "@vendor/belprime/blog/modules/frontend/views"
["pathMap"]=>
array(2) {
["@app/views"]=>
array(1) {
[0]=>
string(17) "@app/themes/basic"
}
["@vendor/belprime/blog/modules/frontend/views"]=>
array(1) {
[0]=>
string(25) "@app/themes/basic/seowiki"
}
}
}
["localized"]=>
bool(false)
["baseUrl"]=>
NULL
["openExternalLinksInNewWindow"]=>
bool(false)
["postFullPathParentsLimit"]=>
int(0)
["app":protected]=>
NULL
["params"]=>
array(0) {
}
["module"]=>
*RECURSION*
["layout"]=>
string(7) "seowiki"
["controllerMap"]=>
array(3) {
["default"]=>
array(2) {
["class"]=>
string(54) "frontend\modules\seowiki\controllers\DefaultController"
["layout"]=>
string(17) "//seowiki/default"
}
["category"]=>
array(2) {
["class"]=>
string(55) "frontend\modules\seowiki\controllers\CategoryController"
["layout"]=>
string(17) "//seowiki/default"
}
["post"]=>
array(2) {
["class"]=>
string(51) "frontend\modules\seowiki\controllers\PostController"
["layout"]=>
string(14) "//seowiki/post"
}
}
["controllerNamespace"]=>
string(36) "frontend\modules\seowiki\controllers"
["defaultRoute"]=>
string(7) "default"
["_basePath":"yii\base\Module":private]=>
NULL
["_viewPath":"yii\base\Module":private]=>
NULL
["_layoutPath":"yii\base\Module":private]=>
NULL
["_modules":"yii\base\Module":private]=>
array(0) {
}
["_version":"yii\base\Module":private]=>
NULL
["_components":"yii\di\ServiceLocator":private]=>
array(0) {
}
["_definitions":"yii\di\ServiceLocator":private]=>
array(1) {
["core"]=>
array(4) {
["class"]=>
string(34) "belprime\blog\extensions\core\Core"
["thread"]=>
string(8) "seo_wiki"
["searchPostIndexName"]=>
string(23) "sps_seo_wiki_post_index"
["components"]=>
array(2) {
["category"]=>
array(2) {
["class"]=>
string(47) "common\modules\seowiki\core\components\Category"
["thread"]=>
string(8) "seo_wiki"
}
["post"]=>
array(7) {
["class"]=>
string(45) "belprime\blog\extensions\core\components\Post"
["thread"]=>
string(8) "seo_wiki"
["relatedPostsCacheTime"]=>
int(86400)
["uploadPath"]=>
string(29) "@webroot/upload/seowiki/posts"
["uploadUrl"]=>
string(25) "@web/upload/seowiki/posts"
["validationRules"]=>
array(1) {
[0]=>
array(3) {
[0]=>
array(1) {
[0]=>
string(3) "uri"
}
[1]=>
string(6) "unique"
["on"]=>
string(4) "post"
}
}
["postModelClass"]=>
string(45) "common\modules\seowiki\core\models\queue\Post"
}
}
}
}
["_events":"yii\base\Component":private]=>
array(1) {
["afterRenderContent"]=>
array(1) {
[0]=>
array(2) {
[0]=>
array(2) {
[0]=>
object(belprime\sps\base\components\behaviors\SeoImagesBehavior)#230 (20) {
["lazyLoading"]=>
bool(true)
["resizeStep"]=>
int(250)
["resizeSet"]=>
array(0) {
}
["dpr"]=>
array(2) {
[0]=>
int(1)
[1]=>
int(2)
}
["scheme"]=>
string(4) "@cdn"
["notResizedExtensions"]=>
array(4) {
[0]=>
string(3) "svg"
[1]=>
string(3) "gif"
[2]=>
string(4) "webp"
[3]=>
string(0) ""
}
["basePath"]=>
string(8) "@webroot"
["downloadPath"]=>
string(7) "/thumbs"
["downloadUrl"]=>
string(11) "@web/thumbs"
["compress"]=>
bool(true)
["placeholderImage"]=>
string(115) "data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20viewBox=%220%200%201800%201818%22%3E%3C/svg%3E"
["imageAttributes"]=>
array(8) {
[0]=>
string(8) "decoding"
[1]=>
string(7) "loading"
[2]=>
string(5) "class"
[3]=>
string(5) "width"
[4]=>
string(6) "height"
[5]=>
string(3) "src"
[6]=>
string(6) "srcset"
[7]=>
string(5) "sizes"
}
["skipAttributes"]=>
array(9) {
[0]=>
string(8) "data-src"
[1]=>
string(6) "srcset"
[2]=>
string(11) "data-srcset"
[3]=>
string(5) "sizes"
[4]=>
string(10) "data-sizes"
[5]=>
string(6) "ng-src"
[6]=>
string(10) "data:image"
[7]=>
string(9) "createnew"
[8]=>
string(9) "data-skip"
}
["saveThumbs"]=>
bool(false)
["enabled"]=>
bool(true)
["template"]=>
string(37) "@frontend/themes/basic/_image_preview"
["forcePreview"]=>
bool(false)
["view":protected]=>
NULL
["owner"]=>
*RECURSION*
["_attachedEvents":"yii\base\Behavior":private]=>
array(1) {
["afterRenderContent"]=>
string(13) "replaceImages"
}
}
[1]=>
string(13) "replaceImages"
}
[1]=>
NULL
}
}
}
["_eventWildcards":"yii\base\Component":private]=>
array(0) {
}
["_behaviors":"yii\base\Component":private]=>
array(1) {
["seoImages"]=>
object(belprime\sps\base\components\behaviors\SeoImagesBehavior)#230 (20) {
["lazyLoading"]=>
bool(true)
["resizeStep"]=>
int(250)
["resizeSet"]=>
array(0) {
}
["dpr"]=>
array(2) {
[0]=>
int(1)
[1]=>
int(2)
}
["scheme"]=>
string(4) "@cdn"
["notResizedExtensions"]=>
array(4) {
[0]=>
string(3) "svg"
[1]=>
string(3) "gif"
[2]=>
string(4) "webp"
[3]=>
string(0) ""
}
["basePath"]=>
string(8) "@webroot"
["downloadPath"]=>
string(7) "/thumbs"
["downloadUrl"]=>
string(11) "@web/thumbs"
["compress"]=>
bool(true)
["placeholderImage"]=>
string(115) "data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20viewBox=%220%200%201800%201818%22%3E%3C/svg%3E"
["imageAttributes"]=>
array(8) {
[0]=>
string(8) "decoding"
[1]=>
string(7) "loading"
[2]=>
string(5) "class"
[3]=>
string(5) "width"
[4]=>
string(6) "height"
[5]=>
string(3) "src"
[6]=>
string(6) "srcset"
[7]=>
string(5) "sizes"
}
["skipAttributes"]=>
array(9) {
[0]=>
string(8) "data-src"
[1]=>
string(6) "srcset"
[2]=>
string(11) "data-srcset"
[3]=>
string(5) "sizes"
[4]=>
string(10) "data-sizes"
[5]=>
string(6) "ng-src"
[6]=>
string(10) "data:image"
[7]=>
string(9) "createnew"
[8]=>
string(9) "data-skip"
}
["saveThumbs"]=>
bool(false)
["enabled"]=>
bool(true)
["template"]=>
string(37) "@frontend/themes/basic/_image_preview"
["forcePreview"]=>
bool(false)
["view":protected]=>
NULL
["owner"]=>
*RECURSION*
["_attachedEvents":"yii\base\Behavior":private]=>
array(1) {
["afterRenderContent"]=>
string(13) "replaceImages"
}
}
}
}
["frontend\modules\page\Module"]=>
*RECURSION*
}
["_runtimePath":"yii\base\Application":private]=>
string(54) "/home/linkassi/www/link-assistant.com/frontend/runtime"
["_vendorPath":"yii\base\Application":private]=>
string(44) "/home/linkassi/www/link-assistant.com/vendor"
["params"]=>
array(23) {
["domain"]=>
string(18) "link-assistant.com"
["adminEmail"]=>
string(24) "admin@link-assistant.com"
["adminPassword"]=>
string(16) "WDwe3lCPlSckAvlA"
["supportEmail"]=>
string(26) "support@link-assistant.com"
["affiliatesEmail"]=>
string(28) "affiliates@seopowersuite.com"
["user.passwordResetTokenExpire"]=>
int(3600)
["user.emailDomain"]=>
string(18) "link-assistant.com"
["environments"]=>
array(11) {
["development"]=>
array(2) {
["mainSiteUrl"]=>
string(34) "https://www.link-assistant.com.dev"
["apiSiteUrl"]=>
string(34) "https://api.link-assistant.com.dev"
}
["docker-development-core"]=>
array(2) {
["mainSiteUrl"]=>
string(34) "https://www.dev.link-assistant.com"
["apiSiteUrl"]=>
string(34) "https://api.dev.link-assistant.com"
}
["qa1-core"]=>
array(2) {
["mainSiteUrl"]=>
string(33) "https://www.qa.link-assistant.com"
["apiSiteUrl"]=>
string(33) "https://api.qa.link-assistant.com"
}
["qa2-core"]=>
array(2) {
["mainSiteUrl"]=>
string(34) "https://www2.qa.link-assistant.com"
["apiSiteUrl"]=>
string(33) "https://api.qa.link-assistant.com"
}
["qa3-core"]=>
array(2) {
["mainSiteUrl"]=>
string(34) "https://www3.qa.link-assistant.com"
["apiSiteUrl"]=>
string(33) "https://api.qa.link-assistant.com"
}
["qa4-core"]=>
array(2) {
["mainSiteUrl"]=>
string(34) "https://www4.qa.link-assistant.com"
["apiSiteUrl"]=>
string(33) "https://api.qa.link-assistant.com"
}
["production-main"]=>
array(2) {
["mainSiteUrl"]=>
string(30) "https://www.link-assistant.com"
["apiSiteUrl"]=>
string(30) "https://api.link-assistant.com"
}
["production-ap-south"]=>
array(2) {
["mainSiteUrl"]=>
string(30) "https://www.link-assistant.com"
["apiSiteUrl"]=>
string(30) "https://api.link-assistant.com"
}
["production-ap-south1"]=>
array(2) {
["mainSiteUrl"]=>
string(30) "https://www.link-assistant.com"
["apiSiteUrl"]=>
string(30) "https://api.link-assistant.com"
}
["production-us-east"]=>
array(2) {
["mainSiteUrl"]=>
string(30) "https://www.link-assistant.com"
["apiSiteUrl"]=>
string(30) "https://api.link-assistant.com"
}
["production-us-west2"]=>
array(2) {
["mainSiteUrl"]=>
string(30) "https://www.link-assistant.com"
["apiSiteUrl"]=>
string(30) "https://api.link-assistant.com"
}
}
["templatedAliases"]=>
array(1) {
[0]=>
string(4) "@cdn"
}
["sitesSettings"]=>
array(6) {
["seopowersuite.de"]=>
array(1) {
["language"]=>
string(2) "de"
}
["seopowersuite.fr"]=>
array(1) {
["language"]=>
string(2) "fr"
}
["seopowersuite.nl"]=>
array(1) {
["language"]=>
string(2) "nl"
}
["seopowersuite.ru"]=>
array(1) {
["language"]=>
string(2) "ru"
}
["seopowersuite.jp"]=>
array(1) {
["language"]=>
string(2) "ja"
}
["seopowersuite.es"]=>
array(1) {
["language"]=>
string(2) "es"
}
}
["terms"]=>
array(5) {
[0]=>
array(4) {
["title"]=>
string(7) "1 Month"
["description"]=>
array(1) {
["default"]=>
string(23) "0% off"
}
["value"]=>
string(7) "1 month"
["months"]=>
int(1)
}
[1]=>
array(4) {
["title"]=>
string(8) "6 Months"
["description"]=>
array(1) {
["default"]=>
string(25) "~30% off"
}
["value"]=>
string(8) "6 months"
["months"]=>
int(6)
}
[2]=>
array(4) {
["title"]=>
string(9) "12 Months"
["description"]=>
array(1) {
["default"]=>
string(25) "~50% off"
}
["value"]=>
string(9) "12 months"
["months"]=>
int(12)
}
[3]=>
array(4) {
["title"]=>
string(9) "24 Months"
["description"]=>
array(1) {
["default"]=>
string(25) "~60% off"
}
["value"]=>
string(9) "24 months"
["months"]=>
int(24)
}
[4]=>
array(4) {
["title"]=>
string(9) "36 Months"
["description"]=>
array(1) {
["default"]=>
string(25) "~70% off"
}
["value"]=>
string(9) "36 months"
["months"]=>
int(36)
}
}
["selectedTermIndex"]=>
int(3)
["application"]=>
array(6) {
["sps"]=>
array(3) {
["abbr"]=>
string(3) "sps"
["shortName"]=>
string(13) "seopowersuite"
["title"]=>
string(14) "SEO PowerSuite"
}
["la"]=>
array(3) {
["abbr"]=>
string(2) "la"
["shortName"]=>
string(13) "linkassistant"
["title"]=>
string(13) "LinkAssistant"
}
["rt"]=>
array(3) {
["abbr"]=>
string(2) "rt"
["shortName"]=>
string(11) "ranktracker"
["title"]=>
string(12) "Rank Tracker"
}
["ssg"]=>
array(3) {
["abbr"]=>
string(3) "ssg"
["shortName"]=>
string(11) "seospyglass"
["title"]=>
string(12) "SEO SpyGlass"
}
["wa"]=>
array(3) {
["abbr"]=>
string(2) "wa"
["shortName"]=>
string(14) "websiteauditor"
["title"]=>
string(15) "Website Auditor"
}
["bz"]=>
array(3) {
["abbr"]=>
string(2) "bz"
["shortName"]=>
string(10) "buzzbundle"
["title"]=>
string(10) "BuzzBundle"
}
}
["blex"]=>
array(1) {
["access"]=>
array(6) {
["SPS"]=>
array(2) {
["client"]=>
array(1) {
["ttl"]=>
int(3600)
}
["quota"]=>
array(2) {
["limit"]=>
string(7) "3600000"
["rateLimit"]=>
string(4) "1000"
}
}
["SPS-FREE"]=>
array(2) {
["client"]=>
array(1) {
["ttl"]=>
int(3600)
}
["quota"]=>
array(2) {
["limit"]=>
string(4) "7200"
["rateLimit"]=>
string(2) "20"
}
}
["WEB-CHECKER"]=>
array(2) {
["client"]=>
array(1) {
["ttl"]=>
int(86400)
}
["quota"]=>
array(2) {
["limit"]=>
int(100)
["rateLimit"]=>
int(1)
}
}
["WEB-CHECKER-FREE"]=>
array(2) {
["client"]=>
array(1) {
["ttl"]=>
int(86400)
}
["quota"]=>
array(2) {
["limit"]=>
int(20)
["rateLimit"]=>
float(0.2)
}
}
["NEWS-BLEX-WIDGET"]=>
array(2) {
["client"]=>
array(1) {
["ttl"]=>
int(86400)
}
["quota"]=>
array(2) {
["limit"]=>
int(10000)
["rateLimit"]=>
int(100)
}
}
["DOMAIN-CHECKER"]=>
array(2) {
["client"]=>
array(1) {
["ttl"]=>
int(86400)
}
["quota"]=>
array(2) {
["limit"]=>
int(200)
["rateLimit"]=>
int(2)
}
}
}
}
["livestorm"]=>
array(3) {
["apiKey"]=>
string(243) "eyJhbGciOiJIUzI1NiJ9.eyJhdWQiOiJhcGkubGl2ZXN0b3JtLmNvIiwianRpIjoiNzg5MjQxODAtOTYzMi00OTZjLWFjMDUtZTYyOTNkZDJkM2IwIiwiaWF0IjoxNjkyMTkxOTIwLCJvcmciOiJlZDkzNDBlNS01M2YzLTQ3Y2UtOGYwOC1hN2IxOGZmYzE1OTgifQ.AW1WNxc6Z83-T3Ojr-5SyNu1zpisL6CdIPzYF9yWYmY"
["server"]=>
string(24) "https://api.livestorm.co"
["version"]=>
string(2) "v1"
}
["languages"]=>
array(11) {
["en"]=>
string(7) "English"
["es"]=>
string(8) "Español"
["fr"]=>
string(9) "Français"
["ja"]=>
string(9) "日本語"
["nl"]=>
string(10) "Nederlands"
["de"]=>
string(7) "Deutsch"
["pl"]=>
string(6) "Polski"
["ko"]=>
string(9) "한국어"
["ru"]=>
string(13) "Pусский"
["pt"]=>
string(10) "Português"
["hu"]=>
string(6) "Magyar"
}
["bundles"]=>
array(351) {
[0]=>
string(43) "frontend\assets\app\components\faq\FaqAsset"
[1]=>
string(61) "frontend\assets\app\components\toggle\CollapsedWithArrowAsset"
[2]=>
string(52) "frontend\assets\app\components\tabs\TabSwitcherAsset"
[3]=>
string(55) "frontend\assets\app\components\slider\SliderDottedAsset"
[4]=>
string(55) "frontend\assets\app\components\slider\SliderMobileAsset"
[5]=>
string(60) "frontend\assets\app\components\slider\PopupSliderReviewAsset"
[6]=>
string(54) "frontend\assets\app\components\forms\DownloadFormAsset"
[7]=>
string(66) "frontend\assets\app\components\forms\ClearDownloadProductFormAsset"
[8]=>
string(54) "frontend\assets\app\components\popup\DefaultPopupAsset"
[9]=>
string(57) "frontend\assets\app\components\video\VideoBackgroundAsset"
[10]=>
string(57) "frontend\assets\app\components\youtube\YoutubeFrameAssets"
[11]=>
string(57) "frontend\assets\app\components\scroll\SyncScrollbarsAsset"
[12]=>
string(55) "frontend\assets\app\components\scroll\SmoothScrollAsset"
[13]=>
string(58) "frontend\assets\app\components\scroll\ScrollIfDesktopAsset"
[14]=>
string(57) "frontend\assets\app\components\base\GoogleRobotoFontAsset"
[15]=>
string(68) "frontend\assets\app\components\base\GoogleRobotoFontDisplaySwapAsset"
[16]=>
string(66) "frontend\assets\app\components\base\GoogleRobotoCondensedFontAsset"
[17]=>
string(49) "frontend\assets\app\components\toggle\ToggleAsset"
[18]=>
string(55) "frontend\assets\app\components\tables\UpgradeTableAsset"
[19]=>
string(50) "frontend\assets\app\components\tabs\PriceTabsAsset"
[20]=>
string(53) "frontend\assets\app\components\tabs\PriceTabsNewAsset"
[21]=>
string(59) "frontend\assets\app\components\banners\BlackFriday2024Asset"
[22]=>
string(61) "frontend\assets\app\components\banners\SaleBannerPresaleAsset"
[23]=>
string(54) "frontend\assets\app\components\banners\SaleBannerAsset"
[24]=>
string(60) "frontend\assets\app\components\banners\ValentineDay2025Asset"
[25]=>
string(64) "frontend\assets\app\components\banners\IndependenceDay2025Assets"
[26]=>
string(61) "frontend\assets\app\components\banners\PatrickBanner2025Asset"
[27]=>
string(59) "frontend\assets\app\components\banners\EasterOffer2025Asset"
[28]=>
string(42) "frontend\assets\app\layouts\NormalizeAsset"
[29]=>
string(48) "frontend\assets\app\pages\homepage\HomePageAsset"
[30]=>
string(60) "frontend\assets\app\pages\websiteauditor\WebsiteAuditorAsset"
[31]=>
string(51) "frontend\assets\app\pages\websiteauditor\TfIadAsset"
[32]=>
string(54) "frontend\assets\app\pages\ranktracker\RankTrackerAsset"
[33]=>
string(58) "frontend\assets\app\pages\linkassistant\LinkassistantAsset"
[34]=>
string(54) "frontend\assets\app\pages\seospyglass\SeoSpyglassAsset"
[35]=>
string(61) "frontend\assets\app\pages\seospyglass\BadBacklinkCheckerAsset"
[36]=>
string(44) "frontend\assets\app\pages\about\AboutUsAsset"
[37]=>
string(54) "frontend\assets\app\pages\ga4\GoogleAnalyticsFourAsset"
[38]=>
string(60) "frontend\assets\app\pages\ranktracker\GoogleRankCheckerAsset"
[39]=>
string(56) "frontend\assets\app\pages\ranktracker\LocalRankingsAsset"
[40]=>
string(61) "frontend\assets\app\pages\ranktracker\YoutubeRankCheckerAsset"
[41]=>
string(70) "frontend\assets\app\pages\nodirectories\SeoCompetitorAnalysisToolAsset"
[42]=>
string(57) "frontend\assets\app\pages\ranktracker\DomainAnalysisAsset"
[43]=>
string(56) "frontend\assets\app\pages\ranktracker\SeoDashboardsAsset"
[44]=>
string(55) "frontend\assets\app\pages\ranktracker\SerpAnalysisAsset"
[45]=>
string(61) "frontend\assets\app\pages\keywordresearch\KeywordGrouperAsset"
[46]=>
string(65) "frontend\assets\app\pages\keywordresearch\YoutubeKeywordToolAsset"
[47]=>
string(64) "frontend\assets\app\pages\keywordresearch\KeywordDifficultyAsset"
[48]=>
string(48) "frontend\assets\app\pages\rankdots\RankDotsAsset"
[49]=>
string(62) "frontend\assets\app\pages\keywordresearch\KeywordResearchAsset"
[50]=>
string(61) "frontend\assets\app\pages\keywordresearch\CompetitorToolAsset"
[51]=>
string(62) "frontend\assets\app\pages\keywordresearch\BingKeywordToolAsset"
[52]=>
string(57) "frontend\assets\app\pages\keywordresearch\KeywordGapAsset"
[53]=>
string(50) "frontend\assets\app\pages\affiliates\PartnersAsset"
[54]=>
string(72) "frontend\assets\app\pages\googlepenaltychecker\GooglePenaltyCheckerAsset"
[55]=>
string(52) "frontend\assets\app\pages\seoreports\SeoReportsAsset"
[56]=>
string(52) "frontend\assets\app\pages\freetools\WordCounterAsset"
[57]=>
string(54) "frontend\assets\app\pages\freetools\CaseConverterAsset"
[58]=>
string(67) "frontend\assets\app\pages\freetools\DomainAuthorityCheckerToolAsset"
[59]=>
string(54) "frontend\assets\app\pages\backlinkapi\BacklinkApiAsset"
[60]=>
string(62) "frontend\assets\app\pages\downloadsuccess\DownloadSuccessAsset"
[61]=>
string(46) "frontend\assets\app\pages\pricing\PricingAsset"
[62]=>
string(50) "frontend\assets\app\pages\seowiki\MainSeoWikiAsset"
[63]=>
string(56) "frontend\assets\app\pages\seowiki\MainSeoWikiLayoutAsset"
[64]=>
string(42) "frontend\assets\app\pages\video\VideoAsset"
[65]=>
string(55) "frontend\assets\app\pages\affiliates\AffiliatesAssetsJP"
[66]=>
string(43) "frontend\assets\app\pages\sale\PresaleAsset"
[67]=>
string(40) "frontend\assets\app\pages\sale\SaleAsset"
[68]=>
string(37) "belprime\base\components\AngularAsset"
[69]=>
string(42) "belprime\base\components\AngularCacheAsset"
[70]=>
string(44) "belprime\base\components\AngularCookiesAsset"
[71]=>
string(48) "belprime\base\components\AngularDefaultPackAsset"
[72]=>
string(44) "belprime\base\components\AngularMinPackAsset"
[73]=>
string(45) "belprime\base\components\AngularResourceAsset"
[74]=>
string(42) "belprime\base\components\AngularRouteAsset"
[75]=>
string(45) "belprime\base\components\AngularSanitizeAsset"
[76]=>
string(42) "belprime\blog\assets\BlogManageModuleAsset"
[77]=>
string(36) "belprime\blog\assets\BlogModuleAsset"
[78]=>
string(40) "belprime\blog\assets\BlogModuleBaseAsset"
[79]=>
string(30) "belprime\blog\assets\CropAsset"
[80]=>
string(34) "belprime\blog\assets\FancyBoxAsset"
[81]=>
string(34) "belprime\blog\assets\JqueryUiAsset"
[82]=>
string(35) "belprime\blog\assets\SearchBoxAsset"
[83]=>
string(34) "belprime\blog\assets\ShowMoreAsset"
[84]=>
string(32) "belprime\blog\assets\UploadAsset"
[85]=>
string(32) "belprime\blog\assets\SearchAsset"
[86]=>
string(38) "belprime\sps\base\assets\FancyBoxAsset"
[87]=>
string(41) "belprime\sps\base\assets\LazyLoadingAsset"
[88]=>
string(41) "belprime\sps\changes\components\BaseAsset"
[89]=>
string(44) "belprime\sps\changes\components\ChangesAsset"
[90]=>
string(42) "belprime\sps\download\components\BaseAsset"
[91]=>
string(46) "belprime\sps\download\components\DownloadAsset"
[92]=>
string(60) "belprime\sps\download\components\DownloadWithoutAngularAsset"
[93]=>
string(40) "belprime\sps\offers\components\BaseAsset"
[94]=>
string(43) "belprime\sps\offers\components\CaptchaAsset"
[95]=>
string(42) "belprime\sps\offers\components\UpdateAsset"
[96]=>
string(43) "belprime\sps\offers\components\UpgradeAsset"
[97]=>
string(41) "frontend\assets\layouts\appasset\AppAsset"
[98]=>
string(56) "frontend\assets\layouts\appasset\AppAssetLandingsDesktop"
[99]=>
string(55) "frontend\assets\layouts\appasset\AppAssetLandingsMobile"
[100]=>
string(46) "frontend\assets\layouts\appasset\AppAssetLight"
[101]=>
string(48) "frontend\assets\layouts\appasset\AppAssetNoStyle"
[102]=>
string(46) "frontend\assets\layouts\appasset\AppAssetSpeed"
[103]=>
string(52) "frontend\assets\layouts\auditreport\AuditReportAsset"
[104]=>
string(72) "frontend\assets\layouts\featuresandeditions\BaseFeaturesAndEditionsAsset"
[105]=>
string(50) "frontend\assets\layouts\features\BaseFeaturesAsset"
[106]=>
string(63) "frontend\assets\layouts\basiclandings\BasicLandingsDesktopAsset"
[107]=>
string(62) "frontend\assets\layouts\basiclandings\BasicLandingsMobileAsset"
[108]=>
string(47) "frontend\assets\layouts\upgrade\CalculatorAsset"
[109]=>
string(28) "frontend\assets\ChangesAsset"
[110]=>
string(66) "frontend\assets\layouts\competitortracking\CompetitorTrackingAsset"
[111]=>
string(72) "frontend\assets\layouts\competitortracking\CompetitorTrackingMobileAsset"
[112]=>
string(43) "frontend\assets\layouts\cls\ContentClsAsset"
[113]=>
string(51) "frontend\assets\layouts\cls\ContentElementsClsAsset"
[114]=>
string(42) "frontend\assets\layouts\cls\HeaderClsAsset"
[115]=>
string(46) "frontend\assets\layouts\cls\HeaderMenuClsAsset"
[116]=>
string(48) "frontend\assets\widgets\countdown\CountdownAsset"
[117]=>
string(31) "frontend\assets\DataTablesAsset"
[118]=>
string(45) "frontend\assets\widgets\socials\FacebookAsset"
[119]=>
string(42) "frontend\assets\widgets\socials\ShareAsset"
[120]=>
string(46) "frontend\assets\widgets\fancybox\FancyboxAsset"
[121]=>
string(70) "frontend\assets\layouts\featuresandeditions\FeaturesAndEditionsDesktop"
[122]=>
string(69) "frontend\assets\layouts\featuresandeditions\FeaturesAndEditionsMobile"
[123]=>
string(53) "frontend\assets\layouts\features\FeaturesDesktopAsset"
[124]=>
string(52) "frontend\assets\layouts\features\FeaturesMobileAsset"
[125]=>
string(69) "frontend\assets\layouts\freebacklinkchecker\BacklinkCheckerPopupAsset"
[126]=>
string(68) "frontend\assets\layouts\freebacklinkchecker\FreeBacklinkCheckerAsset"
[127]=>
string(74) "frontend\assets\layouts\freebacklinkchecker\FreeBacklinkCheckerMobileAsset"
[128]=>
string(70) "frontend\assets\layouts\freebacklinkchecker\FreeBacklinkCheckerEnAsset"
[129]=>
string(76) "frontend\assets\layouts\freebacklinkchecker\FreeBacklinkCheckerEnMobileAsset"
[130]=>
string(30) "frontend\assets\help\HelpAsset"
[131]=>
string(36) "frontend\assets\help\HelpLayoutAsset"
[132]=>
string(31) "frontend\assets\HighchartsAsset"
[133]=>
string(33) "frontend\assets\JqueryCookieAsset"
[134]=>
string(52) "frontend\assets\widgets\fancybox\JqueryFancyboxAsset"
[135]=>
string(36) "frontend\assets\jquery\JqueryUiAsset"
[136]=>
string(41) "frontend\assets\jquery\JqueryUiLightAsset"
[137]=>
string(46) "frontend\assets\layouts\landings\LandingsAsset"
[138]=>
string(52) "frontend\assets\layouts\landings\LandingsMobileAsset"
[139]=>
string(26) "frontend\assets\ModalAsset"
[140]=>
string(27) "frontend\assets\MomentAsset"
[141]=>
string(37) "frontend\assets\rankdots\ArticleAsset"
[142]=>
string(46) "frontend\assets\rankdots\ArticleBacklinkAssets"
[143]=>
string(44) "frontend\assets\rankdots\CategoriesViewAsset"
[144]=>
string(40) "frontend\assets\rankdots\ArticleOldAsset"
[145]=>
string(45) "frontend\assets\rankdots\ArticleSideMenuAsset"
[146]=>
string(36) "frontend\assets\rankdots\AuthorAsset"
[147]=>
string(38) "frontend\assets\rankdots\FeedbackAsset"
[148]=>
string(37) "frontend\assets\rankdots\AuthorsAsset"
[149]=>
string(34) "frontend\assets\rankdots\MainAsset"
[150]=>
string(44) "frontend\assets\rankdots\ProductBannersAsset"
[151]=>
string(33) "frontend\assets\rankdots\OldAsset"
[152]=>
string(36) "frontend\assets\rankdots\SliderAsset"
[153]=>
string(37) "frontend\assets\news\NewsArticleAsset"
[154]=>
string(46) "frontend\assets\news\NewsArticleBacklinkAssets"
[155]=>
string(44) "frontend\assets\news\NewsCategoriesViewAsset"
[156]=>
string(40) "frontend\assets\news\NewsArticleOldAsset"
[157]=>
string(45) "frontend\assets\news\NewsArticleSideMenuAsset"
[158]=>
string(36) "frontend\assets\news\NewsAuthorAsset"
[159]=>
string(38) "frontend\assets\news\NewsFeedbackAsset"
[160]=>
string(37) "frontend\assets\news\NewsAuthorsAsset"
[161]=>
string(34) "frontend\assets\news\NewsMainAsset"
[162]=>
string(44) "frontend\assets\news\NewsProductBannersAsset"
[163]=>
string(33) "frontend\assets\news\NewsOldAsset"
[164]=>
string(36) "frontend\assets\news\NewsSliderAsset"
[165]=>
string(56) "frontend\assets\layouts\nofirstscreen\NoFirstScreenAsset"
[166]=>
string(62) "frontend\assets\layouts\nofirstscreen\NoFirstScreenMobileAsset"
[167]=>
string(79) "frontend\assets\layouts\quickdomainanalysis\QuickDomainAnalysisToolDesktopAsset"
[168]=>
string(78) "frontend\assets\layouts\quickdomainanalysis\QuickDomainAnalysisToolMobileAsset"
[169]=>
string(48) "frontend\assets\widgets\banner\SaleBannerRuAsset"
[170]=>
string(66) "frontend\assets\layouts\otherlandings\SeoPowerSuiteEnterpriseAsset"
[171]=>
string(64) "frontend\assets\layouts\seoreports\SeoReportsLandingDesktopAsset"
[172]=>
string(63) "frontend\assets\layouts\seoreports\SeoReportsLandingMobileAsset"
[173]=>
string(67) "frontend\assets\layouts\nofirstscreen\SeoSpyglassNoFirstScreenAsset"
[174]=>
string(73) "frontend\assets\layouts\nofirstscreen\SeoSpyglassNoFirstScreenMobileAsset"
[175]=>
string(42) "frontend\assets\widgets\slider\SliderAsset"
[176]=>
string(47) "frontend\assets\widgets\slider\SliderAssetSpeed"
[177]=>
string(34) "frontend\assets\widgets\ToolsAsset"
[178]=>
string(52) "frontend\assets\widgets\videodialog\VideoDialogAsset"
[179]=>
string(55) "frontend\assets\widgets\videodialog\VideoDialogNewAsset"
[180]=>
string(75) "frontend\assets\layouts\whitelabel\WhiteLabelSeoSoftwareReportsDesktopAsset"
[181]=>
string(74) "frontend\assets\layouts\whitelabel\WhiteLabelSeoSoftwareReportsMobileAsset"
[182]=>
string(44) "frontend\assets\widgets\youtube\YouTubeAsset"
[183]=>
string(47) "frontend\assets\widgets\youtube\YouTubeNewAsset"
[184]=>
string(51) "frontend\assets\base\GoogleRobotoCondensedFontAsset"
[185]=>
string(42) "frontend\assets\base\GoogleRobotoFontAsset"
[186]=>
string(46) "frontend\assets\base\GoogleRobotoFontFullAsset"
[187]=>
string(53) "frontend\assets\base\GoogleRobotoFontDisplaySwapAsset"
[188]=>
string(35) "frontend\assets\base\NormalizeAsset"
[189]=>
string(55) "frontend\assets\components\breadcrumbs\BreadcrumbsAsset"
[190]=>
string(39) "frontend\assets\components\faq\FaqAsset"
[191]=>
string(45) "frontend\assets\components\footer\FooterAsset"
[192]=>
string(49) "frontend\assets\components\footer\FooterTempAsset"
[193]=>
string(44) "frontend\assets\components\menu\TopMenuAsset"
[194]=>
string(53) "frontend\assets\components\samples\SamplesSliderAsset"
[195]=>
string(51) "frontend\assets\components\slider\SliderDottedAsset"
[196]=>
string(51) "frontend\assets\components\slider\SliderMobileAsset"
[197]=>
string(52) "frontend\assets\components\tables\FeaturesTableAsset"
[198]=>
string(50) "frontend\assets\components\tabs\PriceTabsSaleAsset"
[199]=>
string(48) "frontend\assets\components\tabs\TabSwitcherAsset"
[200]=>
string(52) "frontend\assets\components\widgets\AvailableForAsset"
[201]=>
string(49) "frontend\assets\components\widgets\CloseMenuAsset"
[202]=>
string(47) "frontend\assets\components\widgets\ReviewsAsset"
[203]=>
string(46) "frontend\assets\components\widgets\LoaderAsset"
[204]=>
string(47) "frontend\assets\components\widgets\WarningAsset"
[205]=>
string(53) "frontend\assets\layouts\affiliates\AffiliatesAssetsJP"
[206]=>
string(40) "frontend\assets\widgets\AntiCaptchaAsset"
[207]=>
string(41) "frontend\assets\widgets\AppSumoPopupAsset"
[208]=>
string(64) "frontend\assets\layouts\otherlandings\BacklinkApiComparisonAsset"
[209]=>
string(56) "frontend\assets\layouts\otherlandings\BacklinkAuditAsset"
[210]=>
string(58) "frontend\assets\layouts\otherlandings\BacklinkHistoryAsset"
[211]=>
string(59) "frontend\assets\layouts\otherlandings\BaiduRankingToolAsset"
[212]=>
string(58) "frontend\assets\layouts\otherlandings\BingRankTrackerAsset"
[213]=>
string(45) "frontend\assets\layouts\banners\BannerG2Asset"
[214]=>
string(53) "frontend\assets\layouts\banners\BannerSitegroundAsset"
[215]=>
string(51) "frontend\assets\layouts\banners\BannerPartnersAsset"
[216]=>
string(42) "frontend\assets\widgets\BootstrapMenuAsset"
[217]=>
string(50) "frontend\assets\layouts\upgrade\BundleUpgradeAsset"
[218]=>
string(50) "frontend\assets\layouts\buzzbundle\BuzzbundleAsset"
[219]=>
string(62) "frontend\assets\layouts\buzzbundle\BuzzbundleNotAvailableAsset"
[220]=>
string(67) "frontend\assets\layouts\buzzbundle\BuzzbundleNotAvailableInnerAsset"
[221]=>
string(58) "frontend\assets\layouts\buzzbundle\BuzzbundlePageFullAsset"
[222]=>
string(54) "frontend\assets\layouts\otherlandings\CaseStudiesAsset"
[223]=>
string(53) "frontend\assets\layouts\otherlandings\ChangeListAsset"
[224]=>
string(58) "frontend\assets\layouts\otherlandings\CompareSeoToolsAsset"
[225]=>
string(53) "frontend\assets\layouts\otherlandings\ComparisonAsset"
[226]=>
string(61) "frontend\assets\layouts\otherlandings\CoreWebVitalsAuditAsset"
[227]=>
string(48) "frontend\assets\layouts\otherlandings\CrackAsset"
[228]=>
string(53) "frontend\assets\layouts\otherlandings\CwvSpecialAsset"
[229]=>
string(44) "frontend\assets\layouts\cssbase\CssBaseAsset"
[230]=>
string(49) "frontend\assets\layouts\cssbase\CssBaseCleanAsset"
[231]=>
string(55) "frontend\assets\layouts\cssbase\CssBaseCleanMobileAsset"
[232]=>
string(50) "frontend\assets\layouts\cssbase\CssBaseMobileAsset"
[233]=>
string(60) "frontend\assets\layouts\learninghub\seoplan\DaysSeoPlanAsset"
[234]=>
string(65) "frontend\assets\layouts\learninghub\seoplan\DaysSeoPlanFontsAsset"
[235]=>
string(64) "frontend\assets\layouts\learninghub\seoplan\DaysSeoPlanHomeAsset"
[236]=>
string(47) "frontend\assets\layouts\otherlandings\DemoAsset"
[237]=>
string(41) "frontend\assets\widgets\DownloadFormAsset"
[238]=>
string(60) "frontend\assets\layouts\downloadsuccess\DownloadSuccessAsset"
[239]=>
string(65) "frontend\assets\layouts\downloadsuccess\DownloadSuccessPopupAsset"
[240]=>
string(73) "frontend\assets\layouts\downloadsuccess\DownloadSuccessPopupCenteredAsset"
[241]=>
string(71) "frontend\assets\layouts\downloadsuccess\DownloadSuccessPopupMobileAsset"
[242]=>
string(57) "frontend\assets\layouts\otherlandings\EmailMarketingAsset"
[243]=>
string(59) "frontend\assets\layouts\otherlandings\EmailScraperToolAsset"
[244]=>
string(58) "frontend\assets\layouts\otherlandings\EnterpriseTrialAsset"
[245]=>
string(36) "frontend\assets\layouts\faq\FaqAsset"
[246]=>
string(40) "frontend\assets\layouts\faq\FaqTabsAsset"
[247]=>
string(46) "frontend\assets\layouts\features\FeaturesAsset"
[248]=>
string(51) "frontend\assets\layouts\otherlandings\GlossaryAsset"
[249]=>
string(40) "frontend\assets\widgets\HiddenBlockAsset"
[250]=>
string(65) "frontend\assets\layouts\otherlandings\HreflangManagementToolAsset"
[251]=>
string(51) "frontend\assets\layouts\otherlandings\HtmlTagsAsset"
[252]=>
string(53) "frontend\assets\layouts\otherlandings\IndexVideoAsset"
[253]=>
string(53) "frontend\assets\layouts\otherlandings\InlinkRankAsset"
[254]=>
string(55) "frontend\assets\layouts\otherlandings\InstallationAsset"
[255]=>
string(62) "frontend\assets\layouts\otherlandings\KeywordRankTrackingAsset"
[256]=>
string(60) "frontend\assets\layouts\keywordresearch\KeywordResearchAsset"
[257]=>
string(67) "frontend\assets\layouts\keywordresearch\KeywordResearchWebinarAsset"
[258]=>
string(38) "frontend\assets\widgets\LanguagesAsset"
[259]=>
string(62) "frontend\assets\layouts\otherlandings\LinkProspectingToolAsset"
[260]=>
string(66) "frontend\assets\layouts\otherlandings\LinkassistantEnterpriseAsset"
[261]=>
string(34) "frontend\assets\widgets\LogosAsset"
[262]=>
string(39) "frontend\assets\layouts\MainLayoutAsset"
[263]=>
string(62) "frontend\assets\layouts\otherlandings\MixedContentCheckerAsset"
[264]=>
string(60) "frontend\assets\layouts\otherlandings\MobileRankCheckerAsset"
[265]=>
string(57) "frontend\assets\layouts\otherlandings\NewRankTrackerAsset"
[266]=>
string(54) "frontend\assets\layouts\otherlandings\OnPageToolsAsset"
[267]=>
string(44) "frontend\assets\layouts\order\OrderPageAsset"
[268]=>
string(51) "frontend\assets\layouts\order\OrderPageDesktopAsset"
[269]=>
string(50) "frontend\assets\layouts\order\OrderPageMobileAsset"
[270]=>
string(48) "frontend\assets\layouts\order\BaseOrderPageAsset"
[271]=>
string(40) "frontend\assets\layouts\order\OrderAsset"
[272]=>
string(46) "frontend\assets\layouts\partners\PartnersAsset"
[273]=>
string(51) "frontend\assets\layouts\partners\PartnersIndexAsset"
[274]=>
string(47) "frontend\assets\widgets\PictureWithCaptionAsset"
[275]=>
string(42) "frontend\assets\widgets\PlatformLinksAsset"
[276]=>
string(48) "frontend\assets\layouts\otherlandings\PressAsset"
[277]=>
string(56) "frontend\assets\layouts\otherlandings\PrivacyPolicyAsset"
[278]=>
string(58) "frontend\assets\layouts\productpage\ProductPageMobileAsset"
[279]=>
string(58) "frontend\assets\layouts\productpage\ProductPageMobileAsset"
[280]=>
string(56) "frontend\assets\layouts\learninghub\QuickStartGuideAsset"
[281]=>
string(52) "frontend\assets\layouts\learninghub\LearningHubAsset"
[282]=>
string(53) "frontend\assets\layouts\learninghub\HowToMigrateAsset"
[283]=>
string(59) "frontend\assets\layouts\learninghub\AdvancedQuickGuideAsset"
[284]=>
string(56) "frontend\assets\layouts\otherlandings\RankingReportAsset"
[285]=>
string(61) "frontend\assets\layouts\otherlandings\RobotsTxtGeneratorAsset"
[286]=>
string(47) "frontend\assets\layouts\otherlandings\SaleAsset"
[287]=>
string(46) "frontend\assets\widgets\ScreenshotsSlidesAsset"
[288]=>
string(60) "frontend\assets\layouts\otherlandings\SearchEnginesListAsset"
[289]=>
string(48) "frontend\assets\layouts\seoalerts\SeoAlertsAsset"
[290]=>
string(64) "frontend\assets\layouts\otherlandings\SeoCompetitorAnalysisAsset"
[291]=>
string(59) "frontend\assets\layouts\otherlandings\SeoContentEditorAsset"
[292]=>
string(62) "frontend\assets\layouts\otherlandings\SeoPowersuiteCracksAsset"
[293]=>
string(52) "frontend\assets\layouts\otherlandings\SeoSpiderAsset"
[294]=>
string(54) "frontend\assets\layouts\otherlandings\SeoWorkflowAsset"
[295]=>
string(55) "frontend\assets\layouts\otherlandings\ShoppingCartAsset"
[296]=>
string(61) "frontend\assets\layouts\otherlandings\SiteVisualizationsAsset"
[297]=>
string(61) "frontend\assets\layouts\otherlandings\SpyglassEnterpriseAsset"
[298]=>
string(41) "frontend\assets\widgets\TestimonialsAsset"
[299]=>
string(60) "frontend\assets\layouts\otherlandings\ThreeMonthSpecialAsset"
[300]=>
string(47) "frontend\assets\widgets\TimerBannerUpgradeAsset"
[301]=>
string(36) "frontend\assets\widgets\TooltipAsset"
[302]=>
string(43) "frontend\assets\layouts\upgrade\UpdateAsset"
[303]=>
string(44) "frontend\assets\layouts\upgrade\UpgradeAsset"
[304]=>
string(46) "frontend\assets\layouts\upgrade\UpgradeB1Asset"
[305]=>
string(54) "frontend\assets\layouts\upgrade\UpgradeCalculatorAsset"
[306]=>
string(52) "frontend\assets\layouts\upgrade\UpgradeDiscountAsset"
[307]=>
string(40) "frontend\assets\widgets\UserReviewsAsset"
[308]=>
string(51) "frontend\assets\layouts\otherlandings\WebinarsAsset"
[309]=>
string(67) "frontend\assets\layouts\otherlandings\WebsiteAuditorEnterpriseAsset"
[310]=>
string(57) "frontend\assets\layouts\upgrade\WidgetCounterUpgradeAsset"
[311]=>
string(62) "frontend\assets\layouts\otherlandings\XmlSitemapGeneratorAsset"
[312]=>
string(59) "frontend\assets\layouts\otherlandings\YahooRankCheckerAsset"
[313]=>
string(60) "frontend\assets\layouts\otherlandings\YandexRankTrackerAsset"
[314]=>
string(40) "frontend\assets\widgets\OldLangMenuAsset"
[315]=>
string(46) "frontend\assets\pages\expages\rankInsightAsset"
[316]=>
string(43) "frontend\assets\pages\expages\EasySerpAsset"
[317]=>
string(42) "frontend\assets\pages\appsumo\AppSumoAsset"
[318]=>
string(57) "frontend\assets\pages\appsumo\AppSumoCustomerSpecialAsset"
[319]=>
string(53) "frontend\assets\pages\appsumo\AppSumoReviewOfferAsset"
[320]=>
string(48) "frontend\assets\pages\buysuccess\BuySuccessAsset"
[321]=>
string(48) "frontend\assets\pages\download\DownloadMainAsset"
[322]=>
string(46) "frontend\assets\pages\homepage\HomePageAbAsset"
[323]=>
string(46) "frontend\assets\pages\newyear\NewYear2023Asset"
[324]=>
string(52) "frontend\assets\pages\newyear\NewYear2023MobileAsset"
[325]=>
string(47) "frontend\assets\pages\agencies\SeoAgenciesAsset"
[326]=>
string(51) "frontend\assets\pages\referral\ReferralProgramAsset"
[327]=>
string(49) "frontend\assets\pages\ranktracker\PricingRTAssets"
[328]=>
string(50) "frontend\assets\pages\ranktracker\RankTrackerAsset"
[329]=>
string(52) "frontend\assets\pages\ranktracker\RankTrackerAbAsset"
[330]=>
string(46) "frontend\assets\widgets\banner\SaleBannerAsset"
[331]=>
string(52) "frontend\assets\widgets\banner\SaleBannerMobileAsset"
[332]=>
string(53) "frontend\assets\widgets\banner\SaleBannerPresaleAsset"
[333]=>
string(59) "frontend\assets\widgets\banner\SaleBannerPresaleMobileAsset"
[334]=>
string(38) "frontend\assets\widgets\VideoLazyAsset"
[335]=>
string(53) "frontend\extensions\seotools\components\SeoToolsAsset"
[336]=>
string(55) "frontend\assets\widgets\blog\ProductDownloadBannerAsset"
[337]=>
string(38) "miloschuman\highcharts\HighchartsAsset"
[338]=>
string(38) "yii\authclient\widgets\AuthChoiceAsset"
[339]=>
string(43) "yii\authclient\widgets\AuthChoiceStyleAsset"
[340]=>
string(28) "yii\bootstrap\BootstrapAsset"
[341]=>
string(34) "yii\bootstrap\BootstrapPluginAsset"
[342]=>
string(16) "yii\jui\JuiAsset"
[343]=>
string(30) "yii\validators\ValidationAsset"
[344]=>
string(19) "yii\web\JqueryAsset"
[345]=>
string(16) "yii\web\YiiAsset"
[346]=>
string(27) "yii\widgets\ActiveFormAsset"
[347]=>
string(21) "yii\widgets\PjaxAsset"
[348]=>
string(27) "kartik\select2\Select2Asset"
[349]=>
string(33) "kartik\select2\Select2KrajeeAsset"
[350]=>
string(28) "yii\widgets\MaskedInputAsset"
}
["nodeId"]=>
string(18) "production-us-east"
["environment"]=>
string(18) "production-us-east"
["user.rememberMeDuration"]=>
int(2592000)
["ipWhitelist"]=>
array(4) {
[0]=>
string(13) "134.17.31.249"
[1]=>
string(9) "127.0.0.1"
[2]=>
string(12) "49.12.223.23"
[3]=>
string(11) "93.84.83.64"
}
["onesignal"]=>
array(6) {
["appId"]=>
string(36) "3887dbad-1c25-42ed-87e7-3ca45df44061"
["safari_web_id"]=>
string(55) "web.onesignal.auto.14c8c5b3-a149-48e9-849f-677a5e5d7747"
["autoRegister"]=>
bool(false)
["notifyButton"]=>
array(2) {
["enable"]=>
bool(false)
["showCredit"]=>
bool(false)
}
["promptOptions"]=>
array(3) {
["actionMessage"]=>
string(66) "Want to get notified about latest SEO news & guides from our blog?"
["acceptButtonText"]=>
string(5) "SURE!"
["cancelButtonText"]=>
string(7) "NOT NOW"
}
["welcomeNotification"]=>
array(2) {
["title"]=>
string(32) "All set - thanks for signing up!"
["message"]=>
string(41) "We'll send you only the best SEO content."
}
}
["downloadAction"]=>
array(1) {
["emailCheck"]=>
bool(true)
}
}
["id"]=>
string(12) "app-frontend"
["module"]=>
NULL
["controllerMap"]=>
array(0) {
}
["_basePath":"yii\base\Module":private]=>
string(46) "/home/linkassi/www/link-assistant.com/frontend"
["_viewPath":"yii\base\Module":private]=>
NULL
["_layoutPath":"yii\base\Module":private]=>
NULL
["_modules":"yii\base\Module":private]=>
array(17) {
["page"]=>
*RECURSION*
["old"]=>
array(2) {
["class"]=>
string(27) "frontend\modules\old\Module"
["layout"]=>
bool(false)
}
["spa"]=>
array(6) {
["class"]=>
string(26) "belprime\sps\offers\Module"
["apiServer"]=>
string(30) "https://api.link-assistant.com"
["domain"]=>
string(18) "link-assistant.com"
["keysServer"]=>
string(30) "https://www.link-assistant.com"
["cacheKey"]=>
string(11) "apiCacheKey"
["controllerMap"]=>
array(2) {
["amount-key"]=>
array(1) {
["class"]=>
string(51) "belprime\sps\offers\controllers\AmountKeyController"
}
["expiration-key"]=>
array(1) {
["class"]=>
string(55) "belprime\sps\offers\controllers\ExpirationKeyController"
}
}
}
["siteMap"]=>
array(4) {
["class"]=>
string(24) "himiklab\sitemap\Sitemap"
["cacheKey"]=>
string(7) "siteMap"
["controllerMap"]=>
array(1) {
["default"]=>
string(38) "frontend\controllers\SitemapController"
}
["controllerNamespace"]=>
string(20) "frontend\controllers"
}
["rankdotsSiteMap"]=>
array(5) {
["class"]=>
string(24) "himiklab\sitemap\Sitemap"
["cacheKey"]=>
string(15) "rankdotsSiteMap"
["controllerMap"]=>
array(1) {
["default"]=>
string(38) "frontend\controllers\SitemapController"
}
["models"]=>
array(3) {
[0]=>
string(29) "frontend\models\rankdots\Post"
[1]=>
string(29) "frontend\models\news\Category"
[2]=>
string(29) "frontend\models\rankdots\User"
}
["urls"]=>
array(1) {
[0]=>
array(4) {
["loc"]=>
string(17) "/rankdots/author/"
["changefreq"]=>
string(6) "weekly"
["priority"]=>
float(0.8)
["lastmod"]=>
string(25) "2024-03-18T00:00:00+01:00"
}
}
}
["newsSiteMap"]=>
array(5) {
["class"]=>
string(24) "himiklab\sitemap\Sitemap"
["cacheKey"]=>
string(11) "newsSiteMap"
["controllerMap"]=>
array(1) {
["default"]=>
string(38) "frontend\controllers\SitemapController"
}
["models"]=>
array(3) {
[0]=>
string(25) "frontend\models\news\Post"
[1]=>
string(29) "frontend\models\news\Category"
[2]=>
string(25) "frontend\models\news\User"
}
["urls"]=>
array(1) {
[0]=>
array(4) {
["loc"]=>
string(13) "/news/author/"
["changefreq"]=>
string(6) "weekly"
["priority"]=>
float(0.8)
["lastmod"]=>
string(25) "2024-03-18T00:00:00+01:00"
}
}
}
["helpSiteMap"]=>
array(5) {
["class"]=>
string(24) "himiklab\sitemap\Sitemap"
["cacheKey"]=>
string(11) "helpSiteMap"
["controllerMap"]=>
array(1) {
["default"]=>
string(38) "frontend\controllers\SitemapController"
}
["models"]=>
array(1) {
[0]=>
string(25) "frontend\models\help\Post"
}
["urls"]=>
array(24) {
[0]=>
array(4) {
["loc"]=>
string(30) "/learning-hub/seo-academy.html"
["changefreq"]=>
string(6) "weekly"
["priority"]=>
float(0.8)
["lastmod"]=>
string(25) "2024-03-18T00:00:00+01:00"
}
[1]=>
array(4) {
["loc"]=>
string(30) "/translation/instructions.html"
["changefreq"]=>
string(6) "weekly"
["priority"]=>
float(0.8)
["lastmod"]=>
string(25) "2024-03-18T00:00:00+01:00"
}
[2]=>
array(4) {
["loc"]=>
string(41) "/sample-seo-reports/backlink-summary.html"
["changefreq"]=>
string(6) "weekly"
["priority"]=>
float(0.8)
["lastmod"]=>
string(25) "2024-03-18T00:00:00+01:00"
}
[3]=>
array(4) {
["loc"]=>
string(39) "/sample-seo-reports/backlinkreport.html"
["changefreq"]=>
string(6) "weekly"
["priority"]=>
float(0.8)
["lastmod"]=>
string(25) "2024-03-18T00:00:00+01:00"
}
[4]=>
array(4) {
["loc"]=>
string(45) "/sample-seo-reports/competition-rankings.html"
["changefreq"]=>
string(6) "weekly"
["priority"]=>
float(0.8)
["lastmod"]=>
string(25) "2024-03-18T00:00:00+01:00"
}
[5]=>
array(4) {
["loc"]=>
string(54) "/sample-seo-reports/domain-strength-linkassistant.html"
["changefreq"]=>
string(6) "weekly"
["priority"]=>
float(0.8)
["lastmod"]=>
string(25) "2024-03-18T00:00:00+01:00"
}
[6]=>
array(4) {
["loc"]=>
string(53) "/sample-seo-reports/domain-strength-rank-tracker.html"
["changefreq"]=>
string(6) "weekly"
["priority"]=>
float(0.8)
["lastmod"]=>
string(25) "2024-03-18T00:00:00+01:00"
}
[7]=>
array(4) {
["loc"]=>
string(53) "/sample-seo-reports/domain-strength-seo-spyglass.html"
["changefreq"]=>
string(6) "weekly"
["priority"]=>
float(0.8)
["lastmod"]=>
string(25) "2024-03-18T00:00:00+01:00"
}
[8]=>
array(4) {
["loc"]=>
string(56) "/sample-seo-reports/domain-strength-website-auditor.html"
["changefreq"]=>
string(6) "weekly"
["priority"]=>
float(0.8)
["lastmod"]=>
string(25) "2024-03-18T00:00:00+01:00"
}
[9]=>
array(4) {
["loc"]=>
string(56) "/sample-seo-reports/keyword-rankings-and-visibility.html"
["changefreq"]=>
string(6) "weekly"
["priority"]=>
float(0.8)
["lastmod"]=>
string(25) "2024-03-18T00:00:00+01:00"
}
[10]=>
array(4) {
["loc"]=>
string(60) "/sample-seo-reports/keyword-rankings-grouped-by-keyword.html"
["changefreq"]=>
string(6) "weekly"
["priority"]=>
float(0.8)
["lastmod"]=>
string(25) "2024-03-18T00:00:00+01:00"
}
[11]=>
array(4) {
["loc"]=>
string(55) "/sample-seo-reports/keyword-rankings-grouped-by-se.html"
["changefreq"]=>
string(6) "weekly"
["priority"]=>
float(0.8)
["lastmod"]=>
string(25) "2024-03-18T00:00:00+01:00"
}
[12]=>
array(4) {
["loc"]=>
string(41) "/sample-seo-reports/keyword-research.html"
["changefreq"]=>
string(6) "weekly"
["priority"]=>
float(0.8)
["lastmod"]=>
string(25) "2024-03-18T00:00:00+01:00"
}
[13]=>
array(4) {
["loc"]=>
string(38) "/sample-seo-reports/link-building.html"
["changefreq"]=>
string(6) "weekly"
["priority"]=>
float(0.8)
["lastmod"]=>
string(25) "2024-03-18T00:00:00+01:00"
}
[14]=>
array(4) {
["loc"]=>
string(48) "/sample-seo-reports/link-profile-comparison.html"
["changefreq"]=>
string(6) "weekly"
["priority"]=>
float(0.8)
["lastmod"]=>
string(25) "2024-03-18T00:00:00+01:00"
}
[15]=>
array(4) {
["loc"]=>
string(41) "/sample-seo-reports/link-prospecting.html"
["changefreq"]=>
string(6) "weekly"
["priority"]=>
float(0.8)
["lastmod"]=>
string(25) "2024-03-18T00:00:00+01:00"
}
[16]=>
array(4) {
["loc"]=>
string(48) "/sample-seo-reports/organic-website-traffic.html"
["changefreq"]=>
string(6) "weekly"
["priority"]=>
float(0.8)
["lastmod"]=>
string(25) "2024-03-18T00:00:00+01:00"
}
[17]=>
array(4) {
["loc"]=>
string(43) "/sample-seo-reports/page-audit-details.html"
["changefreq"]=>
string(6) "weekly"
["priority"]=>
float(0.8)
["lastmod"]=>
string(25) "2024-03-18T00:00:00+01:00"
}
[18]=>
array(4) {
["loc"]=>
string(43) "/sample-seo-reports/page-audit-summary.html"
["changefreq"]=>
string(6) "weekly"
["priority"]=>
float(0.8)
["lastmod"]=>
string(25) "2024-03-18T00:00:00+01:00"
}
[19]=>
array(4) {
["loc"]=>
string(53) "/sample-seo-reports/page-usability-report-custom.html"
["changefreq"]=>
string(6) "weekly"
["priority"]=>
float(0.8)
["lastmod"]=>
string(25) "2024-03-18T00:00:00+01:00"
}
[20]=>
array(4) {
["loc"]=>
string(40) "/sample-seo-reports/ranking-summary.html"
["changefreq"]=>
string(6) "weekly"
["priority"]=>
float(0.8)
["lastmod"]=>
string(25) "2024-03-18T00:00:00+01:00"
}
[21]=>
array(4) {
["loc"]=>
string(43) "/sample-seo-reports/site-audit-details.html"
["changefreq"]=>
string(6) "weekly"
["priority"]=>
float(0.8)
["lastmod"]=>
string(25) "2024-03-18T00:00:00+01:00"
}
[22]=>
array(4) {
["loc"]=>
string(43) "/sample-seo-reports/site-audit-summary.html"
["changefreq"]=>
string(6) "weekly"
["priority"]=>
float(0.8)
["lastmod"]=>
string(25) "2024-03-18T00:00:00+01:00"
}
[23]=>
array(4) {
["loc"]=>
string(55) "/sample-seo-reports/visual-backlink-summary-custom.html"
["changefreq"]=>
string(6) "weekly"
["priority"]=>
float(0.8)
["lastmod"]=>
string(25) "2024-03-18T00:00:00+01:00"
}
}
}
["seowikiSiteMap"]=>
array(4) {
["class"]=>
string(24) "himiklab\sitemap\Sitemap"
["cacheKey"]=>
string(14) "seowikiSiteMap"
["controllerMap"]=>
array(1) {
["default"]=>
string(38) "frontend\controllers\SitemapController"
}
["models"]=>
array(1) {
[0]=>
string(28) "frontend\models\seowiki\Post"
}
}
["tutorial"]=>
array(1) {
["class"]=>
string(32) "frontend\modules\tutorial\Module"
}
["trackerModule"]=>
array(3) {
["class"]=>
string(34) "belprime\sps\tracker\server\Module"
["domain"]=>
string(18) "link-assistant.com"
["components"]=>
array(1) {
["tracker"]=>
array(4) {
["class"]=>
string(46) "belprime\sps\tracker\server\components\Tracker"
["enableGa"]=>
bool(false)
["enableGtm"]=>
bool(true)
["components"]=>
array(1) {
["googleAnalytics"]=>
array(7) {
["class"]=>
string(61) "belprime\sps\tracker\server\components\google\GoogleAnalytics"
["accountId"]=>
string(7) "1114258"
["profileId"]=>
string(7) "3923680"
["cacheDuration"]=>
int(43200)
["components"]=>
array(1) {
["measurementProtocolCollection"]=>
array(2) {
["class"]=>
string(87) "belprime\sps\tracker\server\components\google\measurement\MeasurementProtocolCollection"
["components"]=>
array(1) {
["measurementProtocolGa4"]=>
array(4) {
["class"]=>
string(80) "belprime\sps\tracker\server\components\google\measurement\MeasurementProtocolGa4"
["measurementId"]=>
string(12) "G-EFCMHRZ58V"
["measurementApiSecret"]=>
string(22) "njDaCwbASNS4JvW6PEK-9Q"
["clientId"]=>
string(9) "210808329"
}
}
}
}
["gaTrackerId"]=>
string(12) "UA-1114258-2"
["gtmContainerId"]=>
string(10) "GTM-TKVM4B"
}
}
}
}
}
["promotion"]=>
array(2) {
["class"]=>
string(33) "frontend\modules\promotion\Module"
["layout"]=>
string(6) "/clean"
}
["changes"]=>
array(1) {
["class"]=>
string(27) "belprime\sps\changes\Module"
}
["academy"]=>
array(2) {
["class"]=>
string(31) "frontend\modules\academy\Module"
["as seoImages"]=>
array(8) {
["class"]=>
string(56) "belprime\sps\base\components\behaviors\SeoImagesBehavior"
["lazyLoading"]=>
bool(true)
["resizeStep"]=>
int(250)
["scheme"]=>
string(4) "@cdn"
["compress"]=>
bool(true)
["notResizedExtensions"]=>
array(4) {
[0]=>
string(3) "svg"
[1]=>
string(3) "gif"
[2]=>
string(4) "webp"
[3]=>
string(0) ""
}
["downloadPath"]=>
string(7) "/thumbs"
["downloadUrl"]=>
string(11) "@web/thumbs"
}
}
["rankdots"]=>
object(belprime\blog\modules\frontend\Module)#60 (29) {
["bundles"]=>
array(1) {
["yii\web\JqueryAsset"]=>
array(1) {
["jsOptions"]=>
array(1) {
["position"]=>
int(3)
}
}
}
["postWidgetsNamespace"]=>
string(35) "\frontend\modules\rankdots\widgets\"
["srcSets"]=>
bool(false)
["macroMarking"]=>
string(50) "@app/themes/basic/rankdots/post/macro_marking_view"
["bootstrapViewCallback"]=>
NULL
["id"]=>
string(8) "rankdots"
["db"]=>
string(10) "dbRankdots"
["theme"]=>
array(3) {
["baseUrl"]=>
string(13) "@web/rankdots"
["basePath"]=>
string(44) "@vendor/belprime/blog/modules/frontend/views"
["pathMap"]=>
array(2) {
["@app/views"]=>
array(1) {
[0]=>
string(17) "@app/themes/basic"
}
["@vendor/belprime/blog/modules/frontend/views"]=>
array(1) {
[0]=>
string(26) "@app/themes/basic/rankdots"
}
}
}
["localized"]=>
bool(true)
["baseUrl"]=>
NULL
["openExternalLinksInNewWindow"]=>
bool(false)
["postFullPathParentsLimit"]=>
int(1)
["app":protected]=>
NULL
["params"]=>
array(3) {
["footer"]=>
array(1) {
["nav"]=>
array(5) {
["mainTools"]=>
array(1) {
["itemTemplate"]=>
string(245) "
"
}
["mustRead"]=>
array(1) {
["itemTemplate"]=>
string(108) ""
}
["learnSeo"]=>
array(1) {
["itemTemplate"]=>
string(265) ""
}
["getInTouch"]=>
array(1) {
["itemTemplate"]=>
string(414) ""
}
["policy"]=>
array(1) {
["itemTemplate"]=>
string(265) ""
}
}
}
["post"]=>
array(1) {
["cache"]=>
array(1) {
["enabled"]=>
bool(true)
}
}
["must-read-posts"]=>
array(1) {
["cache"]=>
array(1) {
["duration"]=>
int(3600)
}
}
}
["module"]=>
*RECURSION*
["layout"]=>
string(8) "rankdots"
["controllerMap"]=>
array(4) {
["default"]=>
array(2) {
["class"]=>
string(56) "frontend\modules\rankdots\controllers\RankdotsController"
["layout"]=>
string(15) "//rankdots/news"
}
["category"]=>
array(6) {
["class"]=>
string(56) "frontend\modules\rankdots\controllers\CategoryController"
["layout"]=>
string(15) "//rankdots/news"
["pageSize"]=>
int(6)
["latestPosts"]=>
bool(false)
["includeWidgetPosts"]=>
bool(true)
["widgets"]=>
array(0) {
}
}
["post"]=>
array(5) {
["class"]=>
string(52) "frontend\modules\rankdots\controllers\PostController"
["useComments"]=>
bool(false)
["layout"]=>
string(20) "//rankdots/news_post"
["pageSize"]=>
int(9)
["registerHrefLangTags"]=>
bool(false)
}
["user"]=>
array(4) {
["class"]=>
string(57) "belprime\blog\modules\frontend\controllers\UserController"
["layout"]=>
string(21) "//rankdots/news_inner"
["userPageSize"]=>
NULL
["postPageSize"]=>
int(9)
}
}
["controllerNamespace"]=>
string(42) "belprime\blog\modules\frontend\controllers"
["defaultRoute"]=>
string(7) "default"
["_basePath":"yii\base\Module":private]=>
NULL
["_viewPath":"yii\base\Module":private]=>
NULL
["_layoutPath":"yii\base\Module":private]=>
NULL
["_modules":"yii\base\Module":private]=>
array(0) {
}
["_version":"yii\base\Module":private]=>
NULL
["_components":"yii\di\ServiceLocator":private]=>
array(0) {
}
["_definitions":"yii\di\ServiceLocator":private]=>
array(2) {
["core"]=>
array(9) {
["class"]=>
string(34) "belprime\blog\extensions\core\Core"
["thread"]=>
string(12) "seo_rankdots"
["searchPostIndexName"]=>
string(23) "sps_rankdots_post_index"
["searchPageRoute"]=>
string(9) "rankdots/"
["searchPageSize"]=>
int(5)
["searchCallback"]=>
array(2) {
[0]=>
string(38) "frontend\modules\rankdots\helpers\Core"
[1]=>
string(6) "search"
}
["searchFieldWeights"]=>
array(4) {
["tags"]=>
int(100)
["title"]=>
int(100)
["intro"]=>
int(50)
["content"]=>
int(10)
}
["searchNoResultsMessage"]=>
string(24) "Sorry, no results found."
["components"]=>
array(5) {
["user"]=>
array(4) {
["class"]=>
string(45) "belprime\blog\extensions\core\components\User"
["defaultUserPic"]=>
string(36) "/rankdots/images/profile-default.png"
["uploadPath"]=>
string(29) "@webroot/upload/rankdots/user"
["uploadUrl"]=>
string(25) "@web/upload/rankdots/user"
}
["category"]=>
array(2) {
["class"]=>
string(48) "common\modules\rankdots\core\components\Category"
["thread"]=>
string(12) "seo_rankdots"
}
["post"]=>
array(8) {
["class"]=>
string(45) "belprime\blog\extensions\core\components\Post"
["thread"]=>
string(12) "seo_rankdots"
["relatedPostsCacheTime"]=>
int(86400)
["uploadPath"]=>
string(30) "@webroot/upload/rankdots/posts"
["uploadUrl"]=>
string(26) "@web/upload/rankdots/posts"
["postModelClass"]=>
string(40) "common\modules\rankdots\core\models\Post"
["postLinkPostprocessors"]=>
array(1) {
[0]=>
string(68) "common\modules\rankdots\core\models\postprocessor\post\LinkLocalizer"
}
["validationRules"]=>
array(2) {
[0]=>
array(3) {
[0]=>
array(1) {
[0]=>
string(3) "uri"
}
[1]=>
string(6) "unique"
["on"]=>
string(4) "post"
}
[1]=>
array(4) {
[0]=>
array(1) {
[0]=>
string(3) "uri"
}
[1]=>
string(5) "match"
["pattern"]=>
string(130) "/^(?:(https?:\/\/(([A-Z0-9][A-Z0-9_-]*)(\.[A-Z0-9][A-Z0-9_-]*)+)\/)([A-z\/]|-|[0-9])+(\.html)?|([А-ЯA-Z0-9][А-ЯA-Z0-9_-]*))$/i"
["on"]=>
string(4) "post"
}
}
}
["snippet"]=>
array(2) {
["class"]=>
string(48) "belprime\blog\extensions\core\components\Snippet"
["thread"]=>
string(12) "seo_rankdots"
}
["locale"]=>
array(3) {
["class"]=>
string(47) "belprime\blog\extensions\core\components\Locale"
["thread"]=>
string(12) "seo_rankdots"
["defaultLanguage"]=>
string(2) "en"
}
}
}
["social"]=>
array(2) {
["class"]=>
string(38) "belprime\blog\extensions\social\Social"
["components"]=>
array(2) {
["facebook"]=>
array(2) {
["class"]=>
string(49) "belprime\blog\extensions\social\facebook\Facebook"
["components"]=>
array(1) {
["commentPlugin"]=>
array(1) {
["class"]=>
string(65) "belprime\blog\extensions\social\facebook\components\CommentPlugin"
}
}
}
["graphApi"]=>
array(2) {
["class"]=>
string(49) "belprime\blog\extensions\social\facebook\GraphApi"
["components"]=>
array(2) {
["v6"]=>
array(5) {
["class"]=>
string(56) "belprime\blog\extensions\social\facebook\graphapi\v6\Api"
["server"]=>
string(27) "https://graph.facebook.com/"
["version"]=>
string(4) "v6.0"
["accessToken"]=>
string(43) "280903218597678|Zkbabi-rR-EgO_0XalwgRffNPwI"
["verifyToken"]=>
string(24) "UAtXcGpgBPNxUoAbItnamOPD"
}
["v12"]=>
array(5) {
["class"]=>
string(57) "belprime\blog\extensions\social\facebook\graphapi\v12\Api"
["server"]=>
string(27) "https://graph.facebook.com/"
["version"]=>
string(5) "v12.0"
["accessToken"]=>
string(43) "280903218597678|Zkbabi-rR-EgO_0XalwgRffNPwI"
["verifyToken"]=>
string(24) "UAtXcGpgBPNxUoAbItnamOPD"
}
}
}
}
}
}
["_events":"yii\base\Component":private]=>
array(1) {
["afterRenderContent"]=>
array(1) {
[0]=>
array(2) {
[0]=>
array(2) {
[0]=>
object(belprime\sps\base\components\behaviors\SeoImagesBehavior)#58 (20) {
["lazyLoading"]=>
bool(true)
["resizeStep"]=>
int(250)
["resizeSet"]=>
array(7) {
[""]=>
int(700)
[700]=>
int(620)
[640]=>
int(560)
[512]=>
int(437)
[400]=>
int(342)
[375]=>
int(320)
[360]=>
int(307)
}
["dpr"]=>
array(2) {
[0]=>
int(1)
[1]=>
int(2)
}
["scheme"]=>
string(4) "@cdn"
["notResizedExtensions"]=>
array(4) {
[0]=>
string(3) "svg"
[1]=>
string(3) "gif"
[2]=>
string(4) "webp"
[3]=>
string(0) ""
}
["basePath"]=>
string(8) "@webroot"
["downloadPath"]=>
string(7) "/thumbs"
["downloadUrl"]=>
string(11) "@web/thumbs"
["compress"]=>
bool(true)
["placeholderImage"]=>
string(115) "data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20viewBox=%220%200%201800%201818%22%3E%3C/svg%3E"
["imageAttributes"]=>
array(8) {
[0]=>
string(8) "decoding"
[1]=>
string(7) "loading"
[2]=>
string(5) "class"
[3]=>
string(5) "width"
[4]=>
string(6) "height"
[5]=>
string(3) "src"
[6]=>
string(6) "srcset"
[7]=>
string(5) "sizes"
}
["skipAttributes"]=>
array(9) {
[0]=>
string(8) "data-src"
[1]=>
string(6) "srcset"
[2]=>
string(11) "data-srcset"
[3]=>
string(5) "sizes"
[4]=>
string(10) "data-sizes"
[5]=>
string(6) "ng-src"
[6]=>
string(10) "data:image"
[7]=>
string(9) "createnew"
[8]=>
string(9) "data-skip"
}
["saveThumbs"]=>
bool(false)
["enabled"]=>
bool(true)
["template"]=>
string(37) "@frontend/themes/basic/_image_preview"
["forcePreview"]=>
bool(false)
["view":protected]=>
NULL
["owner"]=>
*RECURSION*
["_attachedEvents":"yii\base\Behavior":private]=>
array(1) {
["afterRenderContent"]=>
string(13) "replaceImages"
}
}
[1]=>
string(13) "replaceImages"
}
[1]=>
NULL
}
}
}
["_eventWildcards":"yii\base\Component":private]=>
array(0) {
}
["_behaviors":"yii\base\Component":private]=>
array(1) {
["seoImages"]=>
object(belprime\sps\base\components\behaviors\SeoImagesBehavior)#58 (20) {
["lazyLoading"]=>
bool(true)
["resizeStep"]=>
int(250)
["resizeSet"]=>
array(7) {
[""]=>
int(700)
[700]=>
int(620)
[640]=>
int(560)
[512]=>
int(437)
[400]=>
int(342)
[375]=>
int(320)
[360]=>
int(307)
}
["dpr"]=>
array(2) {
[0]=>
int(1)
[1]=>
int(2)
}
["scheme"]=>
string(4) "@cdn"
["notResizedExtensions"]=>
array(4) {
[0]=>
string(3) "svg"
[1]=>
string(3) "gif"
[2]=>
string(4) "webp"
[3]=>
string(0) ""
}
["basePath"]=>
string(8) "@webroot"
["downloadPath"]=>
string(7) "/thumbs"
["downloadUrl"]=>
string(11) "@web/thumbs"
["compress"]=>
bool(true)
["placeholderImage"]=>
string(115) "data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20viewBox=%220%200%201800%201818%22%3E%3C/svg%3E"
["imageAttributes"]=>
array(8) {
[0]=>
string(8) "decoding"
[1]=>
string(7) "loading"
[2]=>
string(5) "class"
[3]=>
string(5) "width"
[4]=>
string(6) "height"
[5]=>
string(3) "src"
[6]=>
string(6) "srcset"
[7]=>
string(5) "sizes"
}
["skipAttributes"]=>
array(9) {
[0]=>
string(8) "data-src"
[1]=>
string(6) "srcset"
[2]=>
string(11) "data-srcset"
[3]=>
string(5) "sizes"
[4]=>
string(10) "data-sizes"
[5]=>
string(6) "ng-src"
[6]=>
string(10) "data:image"
[7]=>
string(9) "createnew"
[8]=>
string(9) "data-skip"
}
["saveThumbs"]=>
bool(false)
["enabled"]=>
bool(true)
["template"]=>
string(37) "@frontend/themes/basic/_image_preview"
["forcePreview"]=>
bool(false)
["view":protected]=>
NULL
["owner"]=>
*RECURSION*
["_attachedEvents":"yii\base\Behavior":private]=>
array(1) {
["afterRenderContent"]=>
string(13) "replaceImages"
}
}
}
}
["news"]=>
object(belprime\blog\modules\frontend\Module)#225 (29) {
["bundles"]=>
array(1) {
["yii\web\JqueryAsset"]=>
array(1) {
["jsOptions"]=>
array(1) {
["position"]=>
int(3)
}
}
}
["postWidgetsNamespace"]=>
string(31) "\frontend\modules\news\widgets\"
["srcSets"]=>
bool(false)
["macroMarking"]=>
string(46) "@app/themes/basic/news/post/macro_marking_view"
["bootstrapViewCallback"]=>
NULL
["id"]=>
string(4) "news"
["db"]=>
string(6) "dbNews"
["theme"]=>
array(3) {
["baseUrl"]=>
string(9) "@web/news"
["basePath"]=>
string(44) "@vendor/belprime/blog/modules/frontend/views"
["pathMap"]=>
array(2) {
["@app/views"]=>
array(1) {
[0]=>
string(17) "@app/themes/basic"
}
["@vendor/belprime/blog/modules/frontend/views"]=>
array(1) {
[0]=>
string(22) "@app/themes/basic/news"
}
}
}
["localized"]=>
bool(true)
["baseUrl"]=>
NULL
["openExternalLinksInNewWindow"]=>
bool(false)
["postFullPathParentsLimit"]=>
int(1)
["app":protected]=>
NULL
["params"]=>
array(3) {
["footer"]=>
array(1) {
["nav"]=>
array(5) {
["mainTools"]=>
array(1) {
["itemTemplate"]=>
string(245) ""
}
["mustRead"]=>
array(1) {
["itemTemplate"]=>
string(108) ""
}
["learnSeo"]=>
array(1) {
["itemTemplate"]=>
string(265) ""
}
["getInTouch"]=>
array(1) {
["itemTemplate"]=>
string(414) ""
}
["policy"]=>
array(1) {
["itemTemplate"]=>
string(265) ""
}
}
}
["post"]=>
array(1) {
["cache"]=>
array(1) {
["enabled"]=>
bool(true)
}
}
["must-read-posts"]=>
array(1) {
["cache"]=>
array(1) {
["duration"]=>
int(3600)
}
}
}
["module"]=>
*RECURSION*
["layout"]=>
string(4) "news"
["controllerMap"]=>
array(4) {
["default"]=>
array(2) {
["class"]=>
string(48) "frontend\modules\news\controllers\NewsController"
["layout"]=>
string(11) "//news/news"
}
["category"]=>
array(6) {
["class"]=>
string(52) "frontend\modules\news\controllers\CategoryController"
["layout"]=>
string(11) "//news/news"
["pageSize"]=>
int(6)
["latestPosts"]=>
bool(false)
["includeWidgetPosts"]=>
bool(true)
["widgets"]=>
array(0) {
}
}
["post"]=>
array(5) {
["class"]=>
string(48) "frontend\modules\news\controllers\PostController"
["useComments"]=>
bool(false)
["layout"]=>
string(16) "//news/news_post"
["pageSize"]=>
int(9)
["registerHrefLangTags"]=>
bool(false)
}
["user"]=>
array(4) {
["class"]=>
string(57) "belprime\blog\modules\frontend\controllers\UserController"
["layout"]=>
string(17) "//news/news_inner"
["userPageSize"]=>
NULL
["postPageSize"]=>
int(9)
}
}
["controllerNamespace"]=>
string(42) "belprime\blog\modules\frontend\controllers"
["defaultRoute"]=>
string(7) "default"
["_basePath":"yii\base\Module":private]=>
NULL
["_viewPath":"yii\base\Module":private]=>
NULL
["_layoutPath":"yii\base\Module":private]=>
NULL
["_modules":"yii\base\Module":private]=>
array(0) {
}
["_version":"yii\base\Module":private]=>
NULL
["_components":"yii\di\ServiceLocator":private]=>
array(0) {
}
["_definitions":"yii\di\ServiceLocator":private]=>
array(2) {
["core"]=>
array(10) {
["class"]=>
string(34) "belprime\blog\extensions\core\Core"
["thread"]=>
string(8) "seo_news"
["searchPostIndexName"]=>
string(19) "sps_news_post_index"
["searchPageRoute"]=>
string(5) "news/"
["searchPageSize"]=>
int(5)
["searchCallback"]=>
array(2) {
[0]=>
string(34) "frontend\modules\news\helpers\Core"
[1]=>
string(6) "search"
}
["searchFieldWeights"]=>
array(4) {
["tags"]=>
int(100)
["title"]=>
int(100)
["intro"]=>
int(50)
["content"]=>
int(10)
}
["searchNoResultsMessage"]=>
string(24) "Sorry, no results found."
["components"]=>
array(5) {
["user"]=>
array(4) {
["class"]=>
string(45) "belprime\blog\extensions\core\components\User"
["defaultUserPic"]=>
string(32) "/news/images/profile-default.png"
["uploadPath"]=>
string(25) "@webroot/upload/news/user"
["uploadUrl"]=>
string(21) "@web/upload/news/user"
}
["category"]=>
array(2) {
["class"]=>
string(44) "common\modules\news\core\components\Category"
["thread"]=>
string(8) "seo_news"
}
["post"]=>
array(8) {
["class"]=>
string(45) "belprime\blog\extensions\core\components\Post"
["thread"]=>
string(8) "seo_news"
["relatedPostsCacheTime"]=>
int(86400)
["uploadPath"]=>
string(26) "@webroot/upload/news/posts"
["uploadUrl"]=>
string(22) "@web/upload/news/posts"
["postModelClass"]=>
string(42) "common\modules\news\core\models\queue\Post"
["postLinkPostprocessors"]=>
array(1) {
[0]=>
string(64) "common\modules\news\core\models\postprocessor\post\LinkLocalizer"
}
["validationRules"]=>
array(2) {
[0]=>
array(3) {
[0]=>
array(1) {
[0]=>
string(3) "uri"
}
[1]=>
string(6) "unique"
["on"]=>
string(4) "post"
}
[1]=>
array(4) {
[0]=>
array(1) {
[0]=>
string(3) "uri"
}
[1]=>
string(5) "match"
["pattern"]=>
string(130) "/^(?:(https?:\/\/(([A-Z0-9][A-Z0-9_-]*)(\.[A-Z0-9][A-Z0-9_-]*)+)\/)([A-z\/]|-|[0-9])+(\.html)?|([А-ЯA-Z0-9][А-ЯA-Z0-9_-]*))$/i"
["on"]=>
string(4) "post"
}
}
}
["snippet"]=>
array(2) {
["class"]=>
string(48) "belprime\blog\extensions\core\components\Snippet"
["thread"]=>
string(8) "seo_news"
}
["locale"]=>
array(3) {
["class"]=>
string(47) "belprime\blog\extensions\core\components\Locale"
["thread"]=>
string(8) "seo_news"
["defaultLanguage"]=>
string(2) "en"
}
}
["searchServer"]=>
string(23) "main.link-assistant.com"
}
["social"]=>
array(2) {
["class"]=>
string(38) "belprime\blog\extensions\social\Social"
["components"]=>
array(2) {
["facebook"]=>
array(2) {
["class"]=>
string(49) "belprime\blog\extensions\social\facebook\Facebook"
["components"]=>
array(1) {
["commentPlugin"]=>
array(1) {
["class"]=>
string(65) "belprime\blog\extensions\social\facebook\components\CommentPlugin"
}
}
}
["graphApi"]=>
array(2) {
["class"]=>
string(49) "belprime\blog\extensions\social\facebook\GraphApi"
["components"]=>
array(2) {
["v6"]=>
array(5) {
["class"]=>
string(56) "belprime\blog\extensions\social\facebook\graphapi\v6\Api"
["server"]=>
string(27) "https://graph.facebook.com/"
["version"]=>
string(4) "v6.0"
["accessToken"]=>
string(43) "280903218597678|Zkbabi-rR-EgO_0XalwgRffNPwI"
["verifyToken"]=>
string(24) "UAtXcGpgBPNxUoAbItnamOPD"
}
["v12"]=>
array(5) {
["class"]=>
string(57) "belprime\blog\extensions\social\facebook\graphapi\v12\Api"
["server"]=>
string(27) "https://graph.facebook.com/"
["version"]=>
string(5) "v12.0"
["accessToken"]=>
string(43) "280903218597678|Zkbabi-rR-EgO_0XalwgRffNPwI"
["verifyToken"]=>
string(24) "UAtXcGpgBPNxUoAbItnamOPD"
}
}
}
}
}
}
["_events":"yii\base\Component":private]=>
array(1) {
["afterRenderContent"]=>
array(1) {
[0]=>
array(2) {
[0]=>
array(2) {
[0]=>
object(belprime\sps\base\components\behaviors\SeoImagesBehavior)#226 (20) {
["lazyLoading"]=>
bool(true)
["resizeStep"]=>
int(250)
["resizeSet"]=>
array(7) {
[""]=>
int(700)
[700]=>
int(620)
[640]=>
int(560)
[512]=>
int(437)
[400]=>
int(342)
[375]=>
int(320)
[360]=>
int(307)
}
["dpr"]=>
array(2) {
[0]=>
int(1)
[1]=>
int(2)
}
["scheme"]=>
string(4) "@cdn"
["notResizedExtensions"]=>
array(4) {
[0]=>
string(3) "svg"
[1]=>
string(3) "gif"
[2]=>
string(4) "webp"
[3]=>
string(0) ""
}
["basePath"]=>
string(8) "@webroot"
["downloadPath"]=>
string(7) "/thumbs"
["downloadUrl"]=>
string(11) "@web/thumbs"
["compress"]=>
bool(true)
["placeholderImage"]=>
string(115) "data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20viewBox=%220%200%201800%201818%22%3E%3C/svg%3E"
["imageAttributes"]=>
array(8) {
[0]=>
string(8) "decoding"
[1]=>
string(7) "loading"
[2]=>
string(5) "class"
[3]=>
string(5) "width"
[4]=>
string(6) "height"
[5]=>
string(3) "src"
[6]=>
string(6) "srcset"
[7]=>
string(5) "sizes"
}
["skipAttributes"]=>
array(9) {
[0]=>
string(8) "data-src"
[1]=>
string(6) "srcset"
[2]=>
string(11) "data-srcset"
[3]=>
string(5) "sizes"
[4]=>
string(10) "data-sizes"
[5]=>
string(6) "ng-src"
[6]=>
string(10) "data:image"
[7]=>
string(9) "createnew"
[8]=>
string(9) "data-skip"
}
["saveThumbs"]=>
bool(false)
["enabled"]=>
bool(true)
["template"]=>
string(37) "@frontend/themes/basic/_image_preview"
["forcePreview"]=>
bool(false)
["view":protected]=>
NULL
["owner"]=>
*RECURSION*
["_attachedEvents":"yii\base\Behavior":private]=>
array(1) {
["afterRenderContent"]=>
string(13) "replaceImages"
}
}
[1]=>
string(13) "replaceImages"
}
[1]=>
NULL
}
}
}
["_eventWildcards":"yii\base\Component":private]=>
array(0) {
}
["_behaviors":"yii\base\Component":private]=>
array(1) {
["seoImages"]=>
object(belprime\sps\base\components\behaviors\SeoImagesBehavior)#226 (20) {
["lazyLoading"]=>
bool(true)
["resizeStep"]=>
int(250)
["resizeSet"]=>
array(7) {
[""]=>
int(700)
[700]=>
int(620)
[640]=>
int(560)
[512]=>
int(437)
[400]=>
int(342)
[375]=>
int(320)
[360]=>
int(307)
}
["dpr"]=>
array(2) {
[0]=>
int(1)
[1]=>
int(2)
}
["scheme"]=>
string(4) "@cdn"
["notResizedExtensions"]=>
array(4) {
[0]=>
string(3) "svg"
[1]=>
string(3) "gif"
[2]=>
string(4) "webp"
[3]=>
string(0) ""
}
["basePath"]=>
string(8) "@webroot"
["downloadPath"]=>
string(7) "/thumbs"
["downloadUrl"]=>
string(11) "@web/thumbs"
["compress"]=>
bool(true)
["placeholderImage"]=>
string(115) "data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20viewBox=%220%200%201800%201818%22%3E%3C/svg%3E"
["imageAttributes"]=>
array(8) {
[0]=>
string(8) "decoding"
[1]=>
string(7) "loading"
[2]=>
string(5) "class"
[3]=>
string(5) "width"
[4]=>
string(6) "height"
[5]=>
string(3) "src"
[6]=>
string(6) "srcset"
[7]=>
string(5) "sizes"
}
["skipAttributes"]=>
array(9) {
[0]=>
string(8) "data-src"
[1]=>
string(6) "srcset"
[2]=>
string(11) "data-srcset"
[3]=>
string(5) "sizes"
[4]=>
string(10) "data-sizes"
[5]=>
string(6) "ng-src"
[6]=>
string(10) "data:image"
[7]=>
string(9) "createnew"
[8]=>
string(9) "data-skip"
}
["saveThumbs"]=>
bool(false)
["enabled"]=>
bool(true)
["template"]=>
string(37) "@frontend/themes/basic/_image_preview"
["forcePreview"]=>
bool(false)
["view":protected]=>
NULL
["owner"]=>
*RECURSION*
["_attachedEvents":"yii\base\Behavior":private]=>
array(1) {
["afterRenderContent"]=>
string(13) "replaceImages"
}
}
}
}
["help"]=>
object(belprime\blog\modules\frontend\Module)#227 (29) {
["bundles"]=>
array(1) {
["yii\bootstrap\BootstrapAsset"]=>
array(1) {
["css"]=>
array(1) {
[0]=>
string(17) "css/bootstrap.css"
}
}
}
["postWidgetsNamespace"]=>
bool(false)
["srcSets"]=>
bool(false)
["macroMarking"]=>
bool(false)
["bootstrapViewCallback"]=>
NULL
["id"]=>
string(4) "help"
["db"]=>
string(6) "dbHelp"
["theme"]=>
array(3) {
["baseUrl"]=>
string(9) "@web/help"
["basePath"]=>
string(44) "@vendor/belprime/blog/modules/frontend/views"
["pathMap"]=>
array(2) {
["@app/views"]=>
array(1) {
[0]=>
string(17) "@app/themes/basic"
}
["@vendor/belprime/blog/modules/frontend/views"]=>
array(1) {
[0]=>
string(22) "@app/themes/basic/help"
}
}
}
["localized"]=>
bool(false)
["baseUrl"]=>
NULL
["openExternalLinksInNewWindow"]=>
bool(true)
["postFullPathParentsLimit"]=>
int(1)
["app":protected]=>
NULL
["params"]=>
array(0) {
}
["module"]=>
*RECURSION*
["layout"]=>
string(4) "help"
["controllerMap"]=>
array(4) {
["default"]=>
array(2) {
["class"]=>
string(51) "frontend\modules\help\controllers\DefaultController"
["layout"]=>
string(11) "//help/help"
}
["category"]=>
array(6) {
["class"]=>
string(52) "frontend\modules\help\controllers\CategoryController"
["layout"]=>
string(11) "//help/help"
["pageSize"]=>
NULL
["orderBy"]=>
array(1) {
["lft"]=>
int(4)
}
["includeWidgetPosts"]=>
bool(false)
["widgets"]=>
array(0) {
}
}
["post"]=>
array(5) {
["class"]=>
string(48) "frontend\modules\help\controllers\PostController"
["layout"]=>
string(11) "//help/help"
["pageSize"]=>
NULL
["redirectToFirstPost"]=>
bool(true)
["redirectToFullPath"]=>
bool(true)
}
["user"]=>
array(3) {
["class"]=>
string(48) "frontend\modules\help\controllers\UserController"
["layout"]=>
string(11) "//help/help"
["pageSize"]=>
NULL
}
}
["controllerNamespace"]=>
string(42) "belprime\blog\modules\frontend\controllers"
["defaultRoute"]=>
string(7) "default"
["_basePath":"yii\base\Module":private]=>
NULL
["_viewPath":"yii\base\Module":private]=>
NULL
["_layoutPath":"yii\base\Module":private]=>
NULL
["_modules":"yii\base\Module":private]=>
array(0) {
}
["_version":"yii\base\Module":private]=>
NULL
["_components":"yii\di\ServiceLocator":private]=>
array(0) {
}
["_definitions":"yii\di\ServiceLocator":private]=>
array(1) {
["core"]=>
array(3) {
["class"]=>
string(34) "belprime\blog\extensions\core\Core"
["searchPostIndexName"]=>
string(19) "sps_help_post_index"
["components"]=>
array(2) {
["user"]=>
array(4) {
["class"]=>
string(45) "belprime\blog\extensions\core\components\User"
["defaultUserPic"]=>
string(32) "/help/images/profile-default.png"
["uploadPath"]=>
string(25) "@webroot/upload/help/user"
["uploadUrl"]=>
string(21) "@web/upload/help/user"
}
["post"]=>
array(6) {
["class"]=>
string(45) "belprime\blog\extensions\core\components\Post"
["relatedPostsCacheTime"]=>
int(86400)
["uploadPath"]=>
string(25) "@webroot/upload/help/post"
["uploadUrl"]=>
string(21) "@web/upload/help/post"
["validationRules"]=>
array(1) {
[0]=>
array(4) {
[0]=>
array(1) {
[0]=>
string(3) "uri"
}
[1]=>
string(20) "checkUniqueNestedUri"
["on"]=>
string(4) "post"
["params"]=>
array(1) {
["level"]=>
int(1)
}
}
}
["postModelClass"]=>
string(42) "common\modules\help\core\models\queue\Post"
}
}
}
}
["_events":"yii\base\Component":private]=>
array(1) {
["afterRenderContent"]=>
array(1) {
[0]=>
array(2) {
[0]=>
array(2) {
[0]=>
object(belprime\sps\base\components\behaviors\SeoImagesBehavior)#228 (20) {
["lazyLoading"]=>
bool(true)
["resizeStep"]=>
int(250)
["resizeSet"]=>
array(0) {
}
["dpr"]=>
array(0) {
}
["scheme"]=>
string(4) "@cdn"
["notResizedExtensions"]=>
array(4) {
[0]=>
string(3) "svg"
[1]=>
string(3) "gif"
[2]=>
string(4) "webp"
[3]=>
string(0) ""
}
["basePath"]=>
string(8) "@webroot"
["downloadPath"]=>
string(7) "/thumbs"
["downloadUrl"]=>
string(11) "@web/thumbs"
["compress"]=>
bool(true)
["placeholderImage"]=>
string(115) "data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20viewBox=%220%200%201800%201818%22%3E%3C/svg%3E"
["imageAttributes"]=>
array(8) {
[0]=>
string(8) "decoding"
[1]=>
string(7) "loading"
[2]=>
string(5) "class"
[3]=>
string(5) "width"
[4]=>
string(6) "height"
[5]=>
string(3) "src"
[6]=>
string(6) "srcset"
[7]=>
string(5) "sizes"
}
["skipAttributes"]=>
array(9) {
[0]=>
string(8) "data-src"
[1]=>
string(6) "srcset"
[2]=>
string(11) "data-srcset"
[3]=>
string(5) "sizes"
[4]=>
string(10) "data-sizes"
[5]=>
string(6) "ng-src"
[6]=>
string(10) "data:image"
[7]=>
string(9) "createnew"
[8]=>
string(9) "data-skip"
}
["saveThumbs"]=>
bool(false)
["enabled"]=>
bool(true)
["template"]=>
string(37) "@frontend/themes/basic/_image_preview"
["forcePreview"]=>
bool(true)
["view":protected]=>
NULL
["owner"]=>
*RECURSION*
["_attachedEvents":"yii\base\Behavior":private]=>
array(1) {
["afterRenderContent"]=>
string(13) "replaceImages"
}
}
[1]=>
string(13) "replaceImages"
}
[1]=>
NULL
}
}
}
["_eventWildcards":"yii\base\Component":private]=>
array(0) {
}
["_behaviors":"yii\base\Component":private]=>
array(1) {
["seoImages"]=>
object(belprime\sps\base\components\behaviors\SeoImagesBehavior)#228 (20) {
["lazyLoading"]=>
bool(true)
["resizeStep"]=>
int(250)
["resizeSet"]=>
array(0) {
}
["dpr"]=>
array(0) {
}
["scheme"]=>
string(4) "@cdn"
["notResizedExtensions"]=>
array(4) {
[0]=>
string(3) "svg"
[1]=>
string(3) "gif"
[2]=>
string(4) "webp"
[3]=>
string(0) ""
}
["basePath"]=>
string(8) "@webroot"
["downloadPath"]=>
string(7) "/thumbs"
["downloadUrl"]=>
string(11) "@web/thumbs"
["compress"]=>
bool(true)
["placeholderImage"]=>
string(115) "data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20viewBox=%220%200%201800%201818%22%3E%3C/svg%3E"
["imageAttributes"]=>
array(8) {
[0]=>
string(8) "decoding"
[1]=>
string(7) "loading"
[2]=>
string(5) "class"
[3]=>
string(5) "width"
[4]=>
string(6) "height"
[5]=>
string(3) "src"
[6]=>
string(6) "srcset"
[7]=>
string(5) "sizes"
}
["skipAttributes"]=>
array(9) {
[0]=>
string(8) "data-src"
[1]=>
string(6) "srcset"
[2]=>
string(11) "data-srcset"
[3]=>
string(5) "sizes"
[4]=>
string(10) "data-sizes"
[5]=>
string(6) "ng-src"
[6]=>
string(10) "data:image"
[7]=>
string(9) "createnew"
[8]=>
string(9) "data-skip"
}
["saveThumbs"]=>
bool(false)
["enabled"]=>
bool(true)
["template"]=>
string(37) "@frontend/themes/basic/_image_preview"
["forcePreview"]=>
bool(true)
["view":protected]=>
NULL
["owner"]=>
*RECURSION*
["_attachedEvents":"yii\base\Behavior":private]=>
array(1) {
["afterRenderContent"]=>
string(13) "replaceImages"
}
}
}
}
["seo-wiki"]=>
object(belprime\blog\modules\frontend\Module)#229 (29) {
["bundles"]=>
array(1) {
["yii\web\JqueryAsset"]=>
array(1) {
["jsOptions"]=>
array(1) {
["position"]=>
int(3)
}
}
}
["postWidgetsNamespace"]=>
string(31) "\frontend\modules\news\widgets\"
["srcSets"]=>
bool(false)
["macroMarking"]=>
bool(false)
["bootstrapViewCallback"]=>
NULL
["id"]=>
string(8) "seo-wiki"
["db"]=>
string(9) "dbSeoWiki"
["theme"]=>
array(3) {
["baseUrl"]=>
string(12) "@web/seowiki"
["basePath"]=>
string(44) "@vendor/belprime/blog/modules/frontend/views"
["pathMap"]=>
array(2) {
["@app/views"]=>
array(1) {
[0]=>
string(17) "@app/themes/basic"
}
["@vendor/belprime/blog/modules/frontend/views"]=>
array(1) {
[0]=>
string(25) "@app/themes/basic/seowiki"
}
}
}
["localized"]=>
bool(false)
["baseUrl"]=>
NULL
["openExternalLinksInNewWindow"]=>
bool(false)
["postFullPathParentsLimit"]=>
int(0)
["app":protected]=>
NULL
["params"]=>
array(0) {
}
["module"]=>
*RECURSION*
["layout"]=>
string(7) "seowiki"
["controllerMap"]=>
array(3) {
["default"]=>
array(2) {
["class"]=>
string(54) "frontend\modules\seowiki\controllers\DefaultController"
["layout"]=>
string(17) "//seowiki/default"
}
["category"]=>
array(2) {
["class"]=>
string(55) "frontend\modules\seowiki\controllers\CategoryController"
["layout"]=>
string(17) "//seowiki/default"
}
["post"]=>
array(2) {
["class"]=>
string(51) "frontend\modules\seowiki\controllers\PostController"
["layout"]=>
string(14) "//seowiki/post"
}
}
["controllerNamespace"]=>
string(36) "frontend\modules\seowiki\controllers"
["defaultRoute"]=>
string(7) "default"
["_basePath":"yii\base\Module":private]=>
NULL
["_viewPath":"yii\base\Module":private]=>
NULL
["_layoutPath":"yii\base\Module":private]=>
NULL
["_modules":"yii\base\Module":private]=>
array(0) {
}
["_version":"yii\base\Module":private]=>
NULL
["_components":"yii\di\ServiceLocator":private]=>
array(0) {
}
["_definitions":"yii\di\ServiceLocator":private]=>
array(1) {
["core"]=>
array(4) {
["class"]=>
string(34) "belprime\blog\extensions\core\Core"
["thread"]=>
string(8) "seo_wiki"
["searchPostIndexName"]=>
string(23) "sps_seo_wiki_post_index"
["components"]=>
array(2) {
["category"]=>
array(2) {
["class"]=>
string(47) "common\modules\seowiki\core\components\Category"
["thread"]=>
string(8) "seo_wiki"
}
["post"]=>
array(7) {
["class"]=>
string(45) "belprime\blog\extensions\core\components\Post"
["thread"]=>
string(8) "seo_wiki"
["relatedPostsCacheTime"]=>
int(86400)
["uploadPath"]=>
string(29) "@webroot/upload/seowiki/posts"
["uploadUrl"]=>
string(25) "@web/upload/seowiki/posts"
["validationRules"]=>
array(1) {
[0]=>
array(3) {
[0]=>
array(1) {
[0]=>
string(3) "uri"
}
[1]=>
string(6) "unique"
["on"]=>
string(4) "post"
}
}
["postModelClass"]=>
string(45) "common\modules\seowiki\core\models\queue\Post"
}
}
}
}
["_events":"yii\base\Component":private]=>
array(1) {
["afterRenderContent"]=>
array(1) {
[0]=>
array(2) {
[0]=>
array(2) {
[0]=>
object(belprime\sps\base\components\behaviors\SeoImagesBehavior)#230 (20) {
["lazyLoading"]=>
bool(true)
["resizeStep"]=>
int(250)
["resizeSet"]=>
array(0) {
}
["dpr"]=>
array(2) {
[0]=>
int(1)
[1]=>
int(2)
}
["scheme"]=>
string(4) "@cdn"
["notResizedExtensions"]=>
array(4) {
[0]=>
string(3) "svg"
[1]=>
string(3) "gif"
[2]=>
string(4) "webp"
[3]=>
string(0) ""
}
["basePath"]=>
string(8) "@webroot"
["downloadPath"]=>
string(7) "/thumbs"
["downloadUrl"]=>
string(11) "@web/thumbs"
["compress"]=>
bool(true)
["placeholderImage"]=>
string(115) "data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20viewBox=%220%200%201800%201818%22%3E%3C/svg%3E"
["imageAttributes"]=>
array(8) {
[0]=>
string(8) "decoding"
[1]=>
string(7) "loading"
[2]=>
string(5) "class"
[3]=>
string(5) "width"
[4]=>
string(6) "height"
[5]=>
string(3) "src"
[6]=>
string(6) "srcset"
[7]=>
string(5) "sizes"
}
["skipAttributes"]=>
array(9) {
[0]=>
string(8) "data-src"
[1]=>
string(6) "srcset"
[2]=>
string(11) "data-srcset"
[3]=>
string(5) "sizes"
[4]=>
string(10) "data-sizes"
[5]=>
string(6) "ng-src"
[6]=>
string(10) "data:image"
[7]=>
string(9) "createnew"
[8]=>
string(9) "data-skip"
}
["saveThumbs"]=>
bool(false)
["enabled"]=>
bool(true)
["template"]=>
string(37) "@frontend/themes/basic/_image_preview"
["forcePreview"]=>
bool(false)
["view":protected]=>
NULL
["owner"]=>
*RECURSION*
["_attachedEvents":"yii\base\Behavior":private]=>
array(1) {
["afterRenderContent"]=>
string(13) "replaceImages"
}
}
[1]=>
string(13) "replaceImages"
}
[1]=>
NULL
}
}
}
["_eventWildcards":"yii\base\Component":private]=>
array(0) {
}
["_behaviors":"yii\base\Component":private]=>
array(1) {
["seoImages"]=>
object(belprime\sps\base\components\behaviors\SeoImagesBehavior)#230 (20) {
["lazyLoading"]=>
bool(true)
["resizeStep"]=>
int(250)
["resizeSet"]=>
array(0) {
}
["dpr"]=>
array(2) {
[0]=>
int(1)
[1]=>
int(2)
}
["scheme"]=>
string(4) "@cdn"
["notResizedExtensions"]=>
array(4) {
[0]=>
string(3) "svg"
[1]=>
string(3) "gif"
[2]=>
string(4) "webp"
[3]=>
string(0) ""
}
["basePath"]=>
string(8) "@webroot"
["downloadPath"]=>
string(7) "/thumbs"
["downloadUrl"]=>
string(11) "@web/thumbs"
["compress"]=>
bool(true)
["placeholderImage"]=>
string(115) "data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20viewBox=%220%200%201800%201818%22%3E%3C/svg%3E"
["imageAttributes"]=>
array(8) {
[0]=>
string(8) "decoding"
[1]=>
string(7) "loading"
[2]=>
string(5) "class"
[3]=>
string(5) "width"
[4]=>
string(6) "height"
[5]=>
string(3) "src"
[6]=>
string(6) "srcset"
[7]=>
string(5) "sizes"
}
["skipAttributes"]=>
array(9) {
[0]=>
string(8) "data-src"
[1]=>
string(6) "srcset"
[2]=>
string(11) "data-srcset"
[3]=>
string(5) "sizes"
[4]=>
string(10) "data-sizes"
[5]=>
string(6) "ng-src"
[6]=>
string(10) "data:image"
[7]=>
string(9) "createnew"
[8]=>
string(9) "data-skip"
}
["saveThumbs"]=>
bool(false)
["enabled"]=>
bool(true)
["template"]=>
string(37) "@frontend/themes/basic/_image_preview"
["forcePreview"]=>
bool(false)
["view":protected]=>
NULL
["owner"]=>
*RECURSION*
["_attachedEvents":"yii\base\Behavior":private]=>
array(1) {
["afterRenderContent"]=>
string(13) "replaceImages"
}
}
}
}
}
["_version":"yii\base\Module":private]=>
NULL
["_components":"yii\di\ServiceLocator":private]=>
array(9) {
["errorHandler"]=>
object(yii\web\ErrorHandler)#20 (19) {
["maxSourceLines"]=>
int(19)
["maxTraceSourceLines"]=>
int(13)
["errorAction"]=>
string(19) "/page/default/error"
["errorView"]=>
string(33) "@yii/views/errorHandler/error.php"
["exceptionView"]=>
string(37) "@yii/views/errorHandler/exception.php"
["callStackItemView"]=>
string(41) "@yii/views/errorHandler/callStackItem.php"
["previousExceptionView"]=>
string(45) "@yii/views/errorHandler/previousException.php"
["displayVars"]=>
array(5) {
[0]=>
string(4) "_GET"
[1]=>
string(5) "_POST"
[2]=>
string(6) "_FILES"
[3]=>
string(7) "_COOKIE"
[4]=>
string(8) "_SESSION"
}
["traceLine"]=>
string(6) "{html}"
["discardExistingOutput"]=>
bool(true)
["memoryReserveSize"]=>
int(262144)
["exception"]=>
NULL
["silentExitOnException"]=>
bool(false)
["_memoryReserve":"yii\base\ErrorHandler":private]=>
string(262144) "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
["_hhvmException":"yii\base\ErrorHandler":private]=>
NULL
["_registered":"yii\base\ErrorHandler":private]=>
bool(true)
["_events":"yii\base\Component":private]=>
array(0) {
}
["_eventWildcards":"yii\base\Component":private]=>
array(0) {
}
["_behaviors":"yii\base\Component":private]=>
NULL
}
["request"]=>
object(yii\web\Request)#22 (35) {
["enableCsrfValidation"]=>
bool(true)
["csrfParam"]=>
string(5) "_csrf"
["csrfCookie"]=>
array(1) {
["httpOnly"]=>
bool(true)
}
["enableCsrfCookie"]=>
bool(true)
["enableCookieValidation"]=>
bool(true)
["cookieValidationKey"]=>
string(11) "HHjॖik"
["methodParam"]=>
string(7) "_method"
["parsers"]=>
array(1) {
["application/json"]=>
string(18) "yii\web\JsonParser"
}
["trustedHosts"]=>
array(0) {
}
["secureHeaders"]=>
array(5) {
[0]=>
string(15) "X-Forwarded-For"
[1]=>
string(16) "X-Forwarded-Host"
[2]=>
string(17) "X-Forwarded-Proto"
[3]=>
string(15) "Front-End-Https"
[4]=>
string(13) "X-Rewrite-Url"
}
["ipHeaders"]=>
array(1) {
[0]=>
string(15) "X-Forwarded-For"
}
["secureProtocolHeaders"]=>
array(2) {
["X-Forwarded-Proto"]=>
array(1) {
[0]=>
string(5) "https"
}
["Front-End-Https"]=>
array(1) {
[0]=>
string(2) "on"
}
}
["_cookies":"yii\web\Request":private]=>
NULL
["_headers":"yii\web\Request":private]=>
object(yii\web\HeaderCollection)#51 (1) {
["_headers":"yii\web\HeaderCollection":private]=>
array(6) {
["accept-encoding"]=>
array(1) {
[0]=>
string(23) "gzip, br, zstd, deflate"
}
["user-agent"]=>
array(1) {
[0]=>
string(103) "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)"
}
["accept"]=>
array(1) {
[0]=>
string(3) "*/*"
}
["host"]=>
array(1) {
[0]=>
string(22) "www.link-assistant.com"
}
["content-length"]=>
array(1) {
[0]=>
string(0) ""
}
["content-type"]=>
array(1) {
[0]=>
string(0) ""
}
}
}
["_rawBody":"yii\web\Request":private]=>
NULL
["_bodyParams":"yii\web\Request":private]=>
NULL
["_queryParams":"yii\web\Request":private]=>
NULL
["_hostInfo":"yii\web\Request":private]=>
NULL
["_hostName":"yii\web\Request":private]=>
NULL
["_baseUrl":"yii\web\Request":private]=>
string(0) ""
["_scriptUrl":"yii\web\Request":private]=>
string(10) "/index.php"
["_scriptFile":"yii\web\Request":private]=>
NULL
["_pathInfo":"yii\web\Request":private]=>
string(22) "linkassistant/buy.html"
["_url":"yii\web\Request":private]=>
string(51) "/linkassistant/buy.html?currency=JPY&id=LA_ENT_YEAR"
["_port":"yii\web\Request":private]=>
NULL
["_securePort":"yii\web\Request":private]=>
NULL
["_contentTypes":"yii\web\Request":private]=>
NULL
["_languages":"yii\web\Request":private]=>
NULL
["_csrfToken":"yii\web\Request":private]=>
NULL
["_secureForwardedHeaderParts":"yii\web\Request":private]=>
NULL
["_isConsoleRequest":"yii\base\Request":private]=>
NULL
["_events":"yii\base\Component":private]=>
array(0) {
}
["_eventWildcards":"yii\base\Component":private]=>
array(0) {
}
["_behaviors":"yii\base\Component":private]=>
NULL
["_scriptFile":"yii\base\Request":private]=>
NULL
}
["dbRedis"]=>
object(yii\redis\Connection)#29 (19) {
["hostname"]=>
string(9) "localhost"
["redirectConnectionString"]=>
NULL
["port"]=>
int(6379)
["unixSocket"]=>
NULL
["username"]=>
string(3) "sps"
["password"]=>
string(42) "fb7f278f42ea1073de621cdfbb1ccb95d4177a088b"
["database"]=>
int(0)
["connectionTimeout"]=>
NULL
["dataTimeout"]=>
NULL
["useSSL"]=>
bool(false)
["contextOptions"]=>
array(0) {
}
["socketClientFlags"]=>
int(4)
["retries"]=>
int(0)
["retryInterval"]=>
int(0)
["redisCommands"]=>
array(211) {
[0]=>
string(6) "APPEND"
[1]=>
string(4) "AUTH"
[2]=>
string(12) "BGREWRITEAOF"
[3]=>
string(6) "BGSAVE"
[4]=>
string(8) "BITCOUNT"
[5]=>
string(8) "BITFIELD"
[6]=>
string(5) "BITOP"
[7]=>
string(6) "BITPOS"
[8]=>
string(5) "BLPOP"
[9]=>
string(5) "BRPOP"
[10]=>
string(10) "BRPOPLPUSH"
[11]=>
string(11) "CLIENT KILL"
[12]=>
string(11) "CLIENT LIST"
[13]=>
string(14) "CLIENT GETNAME"
[14]=>
string(12) "CLIENT PAUSE"
[15]=>
string(12) "CLIENT REPLY"
[16]=>
string(14) "CLIENT SETNAME"
[17]=>
string(16) "CLUSTER ADDSLOTS"
[18]=>
string(23) "CLUSTER COUNTKEYSINSLOT"
[19]=>
string(16) "CLUSTER DELSLOTS"
[20]=>
string(16) "CLUSTER FAILOVER"
[21]=>
string(14) "CLUSTER FORGET"
[22]=>
string(21) "CLUSTER GETKEYSINSLOT"
[23]=>
string(12) "CLUSTER INFO"
[24]=>
string(15) "CLUSTER KEYSLOT"
[25]=>
string(12) "CLUSTER MEET"
[26]=>
string(13) "CLUSTER NODES"
[27]=>
string(17) "CLUSTER REPLICATE"
[28]=>
string(13) "CLUSTER RESET"
[29]=>
string(18) "CLUSTER SAVECONFIG"
[30]=>
string(15) "CLUSTER SETSLOT"
[31]=>
string(14) "CLUSTER SLAVES"
[32]=>
string(13) "CLUSTER SLOTS"
[33]=>
string(7) "COMMAND"
[34]=>
string(13) "COMMAND COUNT"
[35]=>
string(15) "COMMAND GETKEYS"
[36]=>
string(12) "COMMAND INFO"
[37]=>
string(10) "CONFIG GET"
[38]=>
string(14) "CONFIG REWRITE"
[39]=>
string(10) "CONFIG SET"
[40]=>
string(16) "CONFIG RESETSTAT"
[41]=>
string(6) "DBSIZE"
[42]=>
string(12) "DEBUG OBJECT"
[43]=>
string(14) "DEBUG SEGFAULT"
[44]=>
string(4) "DECR"
[45]=>
string(6) "DECRBY"
[46]=>
string(3) "DEL"
[47]=>
string(7) "DISCARD"
[48]=>
string(4) "DUMP"
[49]=>
string(4) "ECHO"
[50]=>
string(4) "EVAL"
[51]=>
string(7) "EVALSHA"
[52]=>
string(4) "EXEC"
[53]=>
string(6) "EXISTS"
[54]=>
string(6) "EXPIRE"
[55]=>
string(8) "EXPIREAT"
[56]=>
string(8) "FLUSHALL"
[57]=>
string(7) "FLUSHDB"
[58]=>
string(6) "GEOADD"
[59]=>
string(7) "GEOHASH"
[60]=>
string(6) "GEOPOS"
[61]=>
string(7) "GEODIST"
[62]=>
string(9) "GEORADIUS"
[63]=>
string(17) "GEORADIUSBYMEMBER"
[64]=>
string(3) "GET"
[65]=>
string(6) "GETBIT"
[66]=>
string(8) "GETRANGE"
[67]=>
string(6) "GETSET"
[68]=>
string(4) "HDEL"
[69]=>
string(7) "HEXISTS"
[70]=>
string(4) "HGET"
[71]=>
string(7) "HGETALL"
[72]=>
string(7) "HINCRBY"
[73]=>
string(12) "HINCRBYFLOAT"
[74]=>
string(5) "HKEYS"
[75]=>
string(4) "HLEN"
[76]=>
string(5) "HMGET"
[77]=>
string(5) "HMSET"
[78]=>
string(4) "HSET"
[79]=>
string(6) "HSETNX"
[80]=>
string(7) "HSTRLEN"
[81]=>
string(5) "HVALS"
[82]=>
string(4) "INCR"
[83]=>
string(6) "INCRBY"
[84]=>
string(11) "INCRBYFLOAT"
[85]=>
string(4) "INFO"
[86]=>
string(4) "KEYS"
[87]=>
string(8) "LASTSAVE"
[88]=>
string(6) "LINDEX"
[89]=>
string(7) "LINSERT"
[90]=>
string(4) "LLEN"
[91]=>
string(4) "LPOP"
[92]=>
string(5) "LPUSH"
[93]=>
string(6) "LPUSHX"
[94]=>
string(6) "LRANGE"
[95]=>
string(4) "LREM"
[96]=>
string(4) "LSET"
[97]=>
string(5) "LTRIM"
[98]=>
string(4) "MGET"
[99]=>
string(7) "MIGRATE"
[100]=>
string(7) "MONITOR"
[101]=>
string(4) "MOVE"
[102]=>
string(4) "MSET"
[103]=>
string(6) "MSETNX"
[104]=>
string(5) "MULTI"
[105]=>
string(6) "OBJECT"
[106]=>
string(7) "PERSIST"
[107]=>
string(7) "PEXPIRE"
[108]=>
string(9) "PEXPIREAT"
[109]=>
string(5) "PFADD"
[110]=>
string(7) "PFCOUNT"
[111]=>
string(7) "PFMERGE"
[112]=>
string(4) "PING"
[113]=>
string(6) "PSETEX"
[114]=>
string(10) "PSUBSCRIBE"
[115]=>
string(6) "PUBSUB"
[116]=>
string(4) "PTTL"
[117]=>
string(7) "PUBLISH"
[118]=>
string(12) "PUNSUBSCRIBE"
[119]=>
string(4) "QUIT"
[120]=>
string(9) "RANDOMKEY"
[121]=>
string(8) "READONLY"
[122]=>
string(9) "READWRITE"
[123]=>
string(6) "RENAME"
[124]=>
string(8) "RENAMENX"
[125]=>
string(7) "RESTORE"
[126]=>
string(4) "ROLE"
[127]=>
string(4) "RPOP"
[128]=>
string(9) "RPOPLPUSH"
[129]=>
string(5) "RPUSH"
[130]=>
string(6) "RPUSHX"
[131]=>
string(4) "SADD"
[132]=>
string(4) "SAVE"
[133]=>
string(5) "SCARD"
[134]=>
string(12) "SCRIPT DEBUG"
[135]=>
string(13) "SCRIPT EXISTS"
[136]=>
string(12) "SCRIPT FLUSH"
[137]=>
string(11) "SCRIPT KILL"
[138]=>
string(11) "SCRIPT LOAD"
[139]=>
string(5) "SDIFF"
[140]=>
string(10) "SDIFFSTORE"
[141]=>
string(6) "SELECT"
[142]=>
string(3) "SET"
[143]=>
string(6) "SETBIT"
[144]=>
string(5) "SETEX"
[145]=>
string(5) "SETNX"
[146]=>
string(8) "SETRANGE"
[147]=>
string(8) "SHUTDOWN"
[148]=>
string(6) "SINTER"
[149]=>
string(11) "SINTERSTORE"
[150]=>
string(9) "SISMEMBER"
[151]=>
string(7) "SLAVEOF"
[152]=>
string(7) "SLOWLOG"
[153]=>
string(8) "SMEMBERS"
[154]=>
string(5) "SMOVE"
[155]=>
string(4) "SORT"
[156]=>
string(4) "SPOP"
[157]=>
string(11) "SRANDMEMBER"
[158]=>
string(4) "SREM"
[159]=>
string(6) "STRLEN"
[160]=>
string(9) "SUBSCRIBE"
[161]=>
string(6) "SUNION"
[162]=>
string(11) "SUNIONSTORE"
[163]=>
string(6) "SWAPDB"
[164]=>
string(4) "SYNC"
[165]=>
string(4) "TIME"
[166]=>
string(5) "TOUCH"
[167]=>
string(3) "TTL"
[168]=>
string(4) "TYPE"
[169]=>
string(11) "UNSUBSCRIBE"
[170]=>
string(6) "UNLINK"
[171]=>
string(7) "UNWATCH"
[172]=>
string(4) "WAIT"
[173]=>
string(5) "WATCH"
[174]=>
string(4) "XACK"
[175]=>
string(4) "XADD"
[176]=>
string(6) "XCLAIM"
[177]=>
string(4) "XDEL"
[178]=>
string(6) "XGROUP"
[179]=>
string(5) "XINFO"
[180]=>
string(4) "XLEN"
[181]=>
string(8) "XPENDING"
[182]=>
string(6) "XRANGE"
[183]=>
string(5) "XREAD"
[184]=>
string(10) "XREADGROUP"
[185]=>
string(9) "XREVRANGE"
[186]=>
string(5) "XTRIM"
[187]=>
string(4) "ZADD"
[188]=>
string(5) "ZCARD"
[189]=>
string(6) "ZCOUNT"
[190]=>
string(7) "ZINCRBY"
[191]=>
string(11) "ZINTERSTORE"
[192]=>
string(9) "ZLEXCOUNT"
[193]=>
string(6) "ZRANGE"
[194]=>
string(11) "ZRANGEBYLEX"
[195]=>
string(14) "ZREVRANGEBYLEX"
[196]=>
string(13) "ZRANGEBYSCORE"
[197]=>
string(5) "ZRANK"
[198]=>
string(4) "ZREM"
[199]=>
string(14) "ZREMRANGEBYLEX"
[200]=>
string(15) "ZREMRANGEBYRANK"
[201]=>
string(16) "ZREMRANGEBYSCORE"
[202]=>
string(9) "ZREVRANGE"
[203]=>
string(16) "ZREVRANGEBYSCORE"
[204]=>
string(8) "ZREVRANK"
[205]=>
string(6) "ZSCORE"
[206]=>
string(11) "ZUNIONSTORE"
[207]=>
string(4) "SCAN"
[208]=>
string(5) "SSCAN"
[209]=>
string(5) "HSCAN"
[210]=>
string(5) "ZSCAN"
}
["_pool":"yii\redis\Connection":private]=>
array(0) {
}
["_events":"yii\base\Component":private]=>
array(0) {
}
["_eventWildcards":"yii\base\Component":private]=>
array(0) {
}
["_behaviors":"yii\base\Component":private]=>
NULL
}
["queue"]=>
object(yii\queue\redis\Queue)#24 (18) {
["redis"]=>
object(yii\redis\Connection)#29 (19) {
["hostname"]=>
string(9) "localhost"
["redirectConnectionString"]=>
NULL
["port"]=>
int(6379)
["unixSocket"]=>
NULL
["username"]=>
string(3) "sps"
["password"]=>
string(42) "fb7f278f42ea1073de621cdfbb1ccb95d4177a088b"
["database"]=>
int(0)
["connectionTimeout"]=>
NULL
["dataTimeout"]=>
NULL
["useSSL"]=>
bool(false)
["contextOptions"]=>
array(0) {
}
["socketClientFlags"]=>
int(4)
["retries"]=>
int(0)
["retryInterval"]=>
int(0)
["redisCommands"]=>
array(211) {
[0]=>
string(6) "APPEND"
[1]=>
string(4) "AUTH"
[2]=>
string(12) "BGREWRITEAOF"
[3]=>
string(6) "BGSAVE"
[4]=>
string(8) "BITCOUNT"
[5]=>
string(8) "BITFIELD"
[6]=>
string(5) "BITOP"
[7]=>
string(6) "BITPOS"
[8]=>
string(5) "BLPOP"
[9]=>
string(5) "BRPOP"
[10]=>
string(10) "BRPOPLPUSH"
[11]=>
string(11) "CLIENT KILL"
[12]=>
string(11) "CLIENT LIST"
[13]=>
string(14) "CLIENT GETNAME"
[14]=>
string(12) "CLIENT PAUSE"
[15]=>
string(12) "CLIENT REPLY"
[16]=>
string(14) "CLIENT SETNAME"
[17]=>
string(16) "CLUSTER ADDSLOTS"
[18]=>
string(23) "CLUSTER COUNTKEYSINSLOT"
[19]=>
string(16) "CLUSTER DELSLOTS"
[20]=>
string(16) "CLUSTER FAILOVER"
[21]=>
string(14) "CLUSTER FORGET"
[22]=>
string(21) "CLUSTER GETKEYSINSLOT"
[23]=>
string(12) "CLUSTER INFO"
[24]=>
string(15) "CLUSTER KEYSLOT"
[25]=>
string(12) "CLUSTER MEET"
[26]=>
string(13) "CLUSTER NODES"
[27]=>
string(17) "CLUSTER REPLICATE"
[28]=>
string(13) "CLUSTER RESET"
[29]=>
string(18) "CLUSTER SAVECONFIG"
[30]=>
string(15) "CLUSTER SETSLOT"
[31]=>
string(14) "CLUSTER SLAVES"
[32]=>
string(13) "CLUSTER SLOTS"
[33]=>
string(7) "COMMAND"
[34]=>
string(13) "COMMAND COUNT"
[35]=>
string(15) "COMMAND GETKEYS"
[36]=>
string(12) "COMMAND INFO"
[37]=>
string(10) "CONFIG GET"
[38]=>
string(14) "CONFIG REWRITE"
[39]=>
string(10) "CONFIG SET"
[40]=>
string(16) "CONFIG RESETSTAT"
[41]=>
string(6) "DBSIZE"
[42]=>
string(12) "DEBUG OBJECT"
[43]=>
string(14) "DEBUG SEGFAULT"
[44]=>
string(4) "DECR"
[45]=>
string(6) "DECRBY"
[46]=>
string(3) "DEL"
[47]=>
string(7) "DISCARD"
[48]=>
string(4) "DUMP"
[49]=>
string(4) "ECHO"
[50]=>
string(4) "EVAL"
[51]=>
string(7) "EVALSHA"
[52]=>
string(4) "EXEC"
[53]=>
string(6) "EXISTS"
[54]=>
string(6) "EXPIRE"
[55]=>
string(8) "EXPIREAT"
[56]=>
string(8) "FLUSHALL"
[57]=>
string(7) "FLUSHDB"
[58]=>
string(6) "GEOADD"
[59]=>
string(7) "GEOHASH"
[60]=>
string(6) "GEOPOS"
[61]=>
string(7) "GEODIST"
[62]=>
string(9) "GEORADIUS"
[63]=>
string(17) "GEORADIUSBYMEMBER"
[64]=>
string(3) "GET"
[65]=>
string(6) "GETBIT"
[66]=>
string(8) "GETRANGE"
[67]=>
string(6) "GETSET"
[68]=>
string(4) "HDEL"
[69]=>
string(7) "HEXISTS"
[70]=>
string(4) "HGET"
[71]=>
string(7) "HGETALL"
[72]=>
string(7) "HINCRBY"
[73]=>
string(12) "HINCRBYFLOAT"
[74]=>
string(5) "HKEYS"
[75]=>
string(4) "HLEN"
[76]=>
string(5) "HMGET"
[77]=>
string(5) "HMSET"
[78]=>
string(4) "HSET"
[79]=>
string(6) "HSETNX"
[80]=>
string(7) "HSTRLEN"
[81]=>
string(5) "HVALS"
[82]=>
string(4) "INCR"
[83]=>
string(6) "INCRBY"
[84]=>
string(11) "INCRBYFLOAT"
[85]=>
string(4) "INFO"
[86]=>
string(4) "KEYS"
[87]=>
string(8) "LASTSAVE"
[88]=>
string(6) "LINDEX"
[89]=>
string(7) "LINSERT"
[90]=>
string(4) "LLEN"
[91]=>
string(4) "LPOP"
[92]=>
string(5) "LPUSH"
[93]=>
string(6) "LPUSHX"
[94]=>
string(6) "LRANGE"
[95]=>
string(4) "LREM"
[96]=>
string(4) "LSET"
[97]=>
string(5) "LTRIM"
[98]=>
string(4) "MGET"
[99]=>
string(7) "MIGRATE"
[100]=>
string(7) "MONITOR"
[101]=>
string(4) "MOVE"
[102]=>
string(4) "MSET"
[103]=>
string(6) "MSETNX"
[104]=>
string(5) "MULTI"
[105]=>
string(6) "OBJECT"
[106]=>
string(7) "PERSIST"
[107]=>
string(7) "PEXPIRE"
[108]=>
string(9) "PEXPIREAT"
[109]=>
string(5) "PFADD"
[110]=>
string(7) "PFCOUNT"
[111]=>
string(7) "PFMERGE"
[112]=>
string(4) "PING"
[113]=>
string(6) "PSETEX"
[114]=>
string(10) "PSUBSCRIBE"
[115]=>
string(6) "PUBSUB"
[116]=>
string(4) "PTTL"
[117]=>
string(7) "PUBLISH"
[118]=>
string(12) "PUNSUBSCRIBE"
[119]=>
string(4) "QUIT"
[120]=>
string(9) "RANDOMKEY"
[121]=>
string(8) "READONLY"
[122]=>
string(9) "READWRITE"
[123]=>
string(6) "RENAME"
[124]=>
string(8) "RENAMENX"
[125]=>
string(7) "RESTORE"
[126]=>
string(4) "ROLE"
[127]=>
string(4) "RPOP"
[128]=>
string(9) "RPOPLPUSH"
[129]=>
string(5) "RPUSH"
[130]=>
string(6) "RPUSHX"
[131]=>
string(4) "SADD"
[132]=>
string(4) "SAVE"
[133]=>
string(5) "SCARD"
[134]=>
string(12) "SCRIPT DEBUG"
[135]=>
string(13) "SCRIPT EXISTS"
[136]=>
string(12) "SCRIPT FLUSH"
[137]=>
string(11) "SCRIPT KILL"
[138]=>
string(11) "SCRIPT LOAD"
[139]=>
string(5) "SDIFF"
[140]=>
string(10) "SDIFFSTORE"
[141]=>
string(6) "SELECT"
[142]=>
string(3) "SET"
[143]=>
string(6) "SETBIT"
[144]=>
string(5) "SETEX"
[145]=>
string(5) "SETNX"
[146]=>
string(8) "SETRANGE"
[147]=>
string(8) "SHUTDOWN"
[148]=>
string(6) "SINTER"
[149]=>
string(11) "SINTERSTORE"
[150]=>
string(9) "SISMEMBER"
[151]=>
string(7) "SLAVEOF"
[152]=>
string(7) "SLOWLOG"
[153]=>
string(8) "SMEMBERS"
[154]=>
string(5) "SMOVE"
[155]=>
string(4) "SORT"
[156]=>
string(4) "SPOP"
[157]=>
string(11) "SRANDMEMBER"
[158]=>
string(4) "SREM"
[159]=>
string(6) "STRLEN"
[160]=>
string(9) "SUBSCRIBE"
[161]=>
string(6) "SUNION"
[162]=>
string(11) "SUNIONSTORE"
[163]=>
string(6) "SWAPDB"
[164]=>
string(4) "SYNC"
[165]=>
string(4) "TIME"
[166]=>
string(5) "TOUCH"
[167]=>
string(3) "TTL"
[168]=>
string(4) "TYPE"
[169]=>
string(11) "UNSUBSCRIBE"
[170]=>
string(6) "UNLINK"
[171]=>
string(7) "UNWATCH"
[172]=>
string(4) "WAIT"
[173]=>
string(5) "WATCH"
[174]=>
string(4) "XACK"
[175]=>
string(4) "XADD"
[176]=>
string(6) "XCLAIM"
[177]=>
string(4) "XDEL"
[178]=>
string(6) "XGROUP"
[179]=>
string(5) "XINFO"
[180]=>
string(4) "XLEN"
[181]=>
string(8) "XPENDING"
[182]=>
string(6) "XRANGE"
[183]=>
string(5) "XREAD"
[184]=>
string(10) "XREADGROUP"
[185]=>
string(9) "XREVRANGE"
[186]=>
string(5) "XTRIM"
[187]=>
string(4) "ZADD"
[188]=>
string(5) "ZCARD"
[189]=>
string(6) "ZCOUNT"
[190]=>
string(7) "ZINCRBY"
[191]=>
string(11) "ZINTERSTORE"
[192]=>
string(9) "ZLEXCOUNT"
[193]=>
string(6) "ZRANGE"
[194]=>
string(11) "ZRANGEBYLEX"
[195]=>
string(14) "ZREVRANGEBYLEX"
[196]=>
string(13) "ZRANGEBYSCORE"
[197]=>
string(5) "ZRANK"
[198]=>
string(4) "ZREM"
[199]=>
string(14) "ZREMRANGEBYLEX"
[200]=>
string(15) "ZREMRANGEBYRANK"
[201]=>
string(16) "ZREMRANGEBYSCORE"
[202]=>
string(9) "ZREVRANGE"
[203]=>
string(16) "ZREVRANGEBYSCORE"
[204]=>
string(8) "ZREVRANK"
[205]=>
string(6) "ZSCORE"
[206]=>
string(11) "ZUNIONSTORE"
[207]=>
string(4) "SCAN"
[208]=>
string(5) "SSCAN"
[209]=>
string(5) "HSCAN"
[210]=>
string(5) "ZSCAN"
}
["_pool":"yii\redis\Connection":private]=>
array(0) {
}
["_events":"yii\base\Component":private]=>
array(0) {
}
["_eventWildcards":"yii\base\Component":private]=>
array(0) {
}
["_behaviors":"yii\base\Component":private]=>
NULL
}
["channel"]=>
string(5) "queue"
["commandClass"]=>
string(23) "yii\queue\redis\Command"
["_statistcsProvider":"yii\queue\redis\Queue":private]=>
NULL
["loopConfig"]=>
string(24) "yii\queue\cli\SignalLoop"
["commandOptions"]=>
array(0) {
}
["messageHandler"]=>
NULL
["_workerPid":"yii\queue\cli\Queue":private]=>
NULL
["strictJobType"]=>
bool(true)
["serializer"]=>
object(common\components\JsonSerializer)#27 (2) {
["classKey"]=>
string(5) "class"
["options"]=>
int(0)
}
["ttr"]=>
int(300)
["attempts"]=>
int(1)
["pushTtr":"yii\queue\Queue":private]=>
NULL
["pushDelay":"yii\queue\Queue":private]=>
NULL
["pushPriority":"yii\queue\Queue":private]=>
NULL
["_events":"yii\base\Component":private]=>
array(0) {
}
["_eventWildcards":"yii\base\Component":private]=>
array(0) {
}
["_behaviors":"yii\base\Component":private]=>
NULL
}
["db"]=>
object(yii\db\Connection)#35 (42) {
["dsn"]=>
string(53) "mysql:host=db.link-assistant.com;dbname=seopowersuite"
["username"]=>
string(3) "sps"
["password"]=>
string(10) "8NRaQTD8Kn"
["attributes"]=>
NULL
["pdo"]=>
NULL
["enableSchemaCache"]=>
bool(true)
["schemaCacheDuration"]=>
int(0)
["schemaCacheExclude"]=>
array(0) {
}
["schemaCache"]=>
string(13) "dbSchemaCache"
["enableQueryCache"]=>
bool(true)
["queryCacheDuration"]=>
int(3600)
["queryCache"]=>
string(5) "cache"
["charset"]=>
string(4) "utf8"
["emulatePrepare"]=>
NULL
["tablePrefix"]=>
string(0) ""
["schemaMap"]=>
array(10) {
["pgsql"]=>
string(19) "yii\db\pgsql\Schema"
["mysqli"]=>
string(19) "yii\db\mysql\Schema"
["mysql"]=>
string(19) "yii\db\mysql\Schema"
["sqlite"]=>
string(20) "yii\db\sqlite\Schema"
["sqlite2"]=>
string(20) "yii\db\sqlite\Schema"
["sqlsrv"]=>
string(19) "yii\db\mssql\Schema"
["oci"]=>
string(17) "yii\db\oci\Schema"
["mssql"]=>
string(19) "yii\db\mssql\Schema"
["dblib"]=>
string(19) "yii\db\mssql\Schema"
["cubrid"]=>
string(20) "yii\db\cubrid\Schema"
}
["pdoClass"]=>
NULL
["commandClass"]=>
string(14) "yii\db\Command"
["commandMap"]=>
array(10) {
["pgsql"]=>
string(14) "yii\db\Command"
["mysqli"]=>
string(14) "yii\db\Command"
["mysql"]=>
string(14) "yii\db\Command"
["sqlite"]=>
string(21) "yii\db\sqlite\Command"
["sqlite2"]=>
string(21) "yii\db\sqlite\Command"
["sqlsrv"]=>
string(14) "yii\db\Command"
["oci"]=>
string(18) "yii\db\oci\Command"
["mssql"]=>
string(14) "yii\db\Command"
["dblib"]=>
string(14) "yii\db\Command"
["cubrid"]=>
string(14) "yii\db\Command"
}
["enableSavepoint"]=>
bool(true)
["serverStatusCache"]=>
string(5) "cache"
["serverRetryInterval"]=>
int(600)
["enableSlaves"]=>
bool(true)
["slaves"]=>
array(1) {
[0]=>
array(1) {
["dsn"]=>
string(41) "mysql:host=localhost;dbname=seopowersuite"
}
}
["slaveConfig"]=>
array(3) {
["username"]=>
string(3) "sps"
["password"]=>
string(10) "8NRaQTD8Kn"
["attributes"]=>
array(1) {
[2]=>
int(10)
}
}
["masters"]=>
array(0) {
}
["masterConfig"]=>
array(0) {
}
["shuffleMasters"]=>
bool(true)
["enableLogging"]=>
bool(false)
["enableProfiling"]=>
bool(false)
["isSybase"]=>
bool(false)
["_transaction":"yii\db\Connection":private]=>
NULL
["_schema":"yii\db\Connection":private]=>
NULL
["_driverName":"yii\db\Connection":private]=>
string(5) "mysql"
["_master":"yii\db\Connection":private]=>
bool(false)
["_slave":"yii\db\Connection":private]=>
bool(false)
["_queryCacheInfo":"yii\db\Connection":private]=>
array(0) {
}
["_quotedTableNames":"yii\db\Connection":private]=>
NULL
["_quotedColumnNames":"yii\db\Connection":private]=>
NULL
["_events":"yii\base\Component":private]=>
array(1) {
["afterOpen"]=>
array(1) {
[0]=>
array(2) {
[0]=>
object(Closure)#7 (1) {
["parameter"]=>
array(1) {
["$event"]=>
string(10) ""
}
}
[1]=>
NULL
}
}
}
["_eventWildcards":"yii\base\Component":private]=>
array(0) {
}
["_behaviors":"yii\base\Component":private]=>
array(0) {
}
}
["appQueue"]=>
object(belprime\sps\queue\drivers\db\Queue)#30 (25) {
["failedTableName"]=>
string(21) "{{%app_queue_failed}}"
["tick"]=>
int(0)
["db"]=>
object(yii\db\Connection)#35 (42) {
["dsn"]=>
string(53) "mysql:host=db.link-assistant.com;dbname=seopowersuite"
["username"]=>
string(3) "sps"
["password"]=>
string(10) "8NRaQTD8Kn"
["attributes"]=>
NULL
["pdo"]=>
NULL
["enableSchemaCache"]=>
bool(true)
["schemaCacheDuration"]=>
int(0)
["schemaCacheExclude"]=>
array(0) {
}
["schemaCache"]=>
string(13) "dbSchemaCache"
["enableQueryCache"]=>
bool(true)
["queryCacheDuration"]=>
int(3600)
["queryCache"]=>
string(5) "cache"
["charset"]=>
string(4) "utf8"
["emulatePrepare"]=>
NULL
["tablePrefix"]=>
string(0) ""
["schemaMap"]=>
array(10) {
["pgsql"]=>
string(19) "yii\db\pgsql\Schema"
["mysqli"]=>
string(19) "yii\db\mysql\Schema"
["mysql"]=>
string(19) "yii\db\mysql\Schema"
["sqlite"]=>
string(20) "yii\db\sqlite\Schema"
["sqlite2"]=>
string(20) "yii\db\sqlite\Schema"
["sqlsrv"]=>
string(19) "yii\db\mssql\Schema"
["oci"]=>
string(17) "yii\db\oci\Schema"
["mssql"]=>
string(19) "yii\db\mssql\Schema"
["dblib"]=>
string(19) "yii\db\mssql\Schema"
["cubrid"]=>
string(20) "yii\db\cubrid\Schema"
}
["pdoClass"]=>
NULL
["commandClass"]=>
string(14) "yii\db\Command"
["commandMap"]=>
array(10) {
["pgsql"]=>
string(14) "yii\db\Command"
["mysqli"]=>
string(14) "yii\db\Command"
["mysql"]=>
string(14) "yii\db\Command"
["sqlite"]=>
string(21) "yii\db\sqlite\Command"
["sqlite2"]=>
string(21) "yii\db\sqlite\Command"
["sqlsrv"]=>
string(14) "yii\db\Command"
["oci"]=>
string(18) "yii\db\oci\Command"
["mssql"]=>
string(14) "yii\db\Command"
["dblib"]=>
string(14) "yii\db\Command"
["cubrid"]=>
string(14) "yii\db\Command"
}
["enableSavepoint"]=>
bool(true)
["serverStatusCache"]=>
string(5) "cache"
["serverRetryInterval"]=>
int(600)
["enableSlaves"]=>
bool(true)
["slaves"]=>
array(1) {
[0]=>
array(1) {
["dsn"]=>
string(41) "mysql:host=localhost;dbname=seopowersuite"
}
}
["slaveConfig"]=>
array(3) {
["username"]=>
string(3) "sps"
["password"]=>
string(10) "8NRaQTD8Kn"
["attributes"]=>
array(1) {
[2]=>
int(10)
}
}
["masters"]=>
array(0) {
}
["masterConfig"]=>
array(0) {
}
["shuffleMasters"]=>
bool(true)
["enableLogging"]=>
bool(false)
["enableProfiling"]=>
bool(false)
["isSybase"]=>
bool(false)
["_transaction":"yii\db\Connection":private]=>
NULL
["_schema":"yii\db\Connection":private]=>
NULL
["_driverName":"yii\db\Connection":private]=>
string(5) "mysql"
["_master":"yii\db\Connection":private]=>
bool(false)
["_slave":"yii\db\Connection":private]=>
bool(false)
["_queryCacheInfo":"yii\db\Connection":private]=>
array(0) {
}
["_quotedTableNames":"yii\db\Connection":private]=>
NULL
["_quotedColumnNames":"yii\db\Connection":private]=>
NULL
["_events":"yii\base\Component":private]=>
array(1) {
["afterOpen"]=>
array(1) {
[0]=>
array(2) {
[0]=>
object(Closure)#7 (1) {
["parameter"]=>
array(1) {
["$event"]=>
string(10) ""
}
}
[1]=>
NULL
}
}
}
["_eventWildcards":"yii\base\Component":private]=>
array(0) {
}
["_behaviors":"yii\base\Component":private]=>
array(0) {
}
}
["mutex"]=>
object(yii\mutex\MysqlMutex)#37 (6) {
["db"]=>
object(yii\db\Connection)#35 (42) {
["dsn"]=>
string(53) "mysql:host=db.link-assistant.com;dbname=seopowersuite"
["username"]=>
string(3) "sps"
["password"]=>
string(10) "8NRaQTD8Kn"
["attributes"]=>
NULL
["pdo"]=>
NULL
["enableSchemaCache"]=>
bool(true)
["schemaCacheDuration"]=>
int(0)
["schemaCacheExclude"]=>
array(0) {
}
["schemaCache"]=>
string(13) "dbSchemaCache"
["enableQueryCache"]=>
bool(true)
["queryCacheDuration"]=>
int(3600)
["queryCache"]=>
string(5) "cache"
["charset"]=>
string(4) "utf8"
["emulatePrepare"]=>
NULL
["tablePrefix"]=>
string(0) ""
["schemaMap"]=>
array(10) {
["pgsql"]=>
string(19) "yii\db\pgsql\Schema"
["mysqli"]=>
string(19) "yii\db\mysql\Schema"
["mysql"]=>
string(19) "yii\db\mysql\Schema"
["sqlite"]=>
string(20) "yii\db\sqlite\Schema"
["sqlite2"]=>
string(20) "yii\db\sqlite\Schema"
["sqlsrv"]=>
string(19) "yii\db\mssql\Schema"
["oci"]=>
string(17) "yii\db\oci\Schema"
["mssql"]=>
string(19) "yii\db\mssql\Schema"
["dblib"]=>
string(19) "yii\db\mssql\Schema"
["cubrid"]=>
string(20) "yii\db\cubrid\Schema"
}
["pdoClass"]=>
NULL
["commandClass"]=>
string(14) "yii\db\Command"
["commandMap"]=>
array(10) {
["pgsql"]=>
string(14) "yii\db\Command"
["mysqli"]=>
string(14) "yii\db\Command"
["mysql"]=>
string(14) "yii\db\Command"
["sqlite"]=>
string(21) "yii\db\sqlite\Command"
["sqlite2"]=>
string(21) "yii\db\sqlite\Command"
["sqlsrv"]=>
string(14) "yii\db\Command"
["oci"]=>
string(18) "yii\db\oci\Command"
["mssql"]=>
string(14) "yii\db\Command"
["dblib"]=>
string(14) "yii\db\Command"
["cubrid"]=>
string(14) "yii\db\Command"
}
["enableSavepoint"]=>
bool(true)
["serverStatusCache"]=>
string(5) "cache"
["serverRetryInterval"]=>
int(600)
["enableSlaves"]=>
bool(true)
["slaves"]=>
array(1) {
[0]=>
array(1) {
["dsn"]=>
string(41) "mysql:host=localhost;dbname=seopowersuite"
}
}
["slaveConfig"]=>
array(3) {
["username"]=>
string(3) "sps"
["password"]=>
string(10) "8NRaQTD8Kn"
["attributes"]=>
array(1) {
[2]=>
int(10)
}
}
["masters"]=>
array(0) {
}
["masterConfig"]=>
array(0) {
}
["shuffleMasters"]=>
bool(true)
["enableLogging"]=>
bool(false)
["enableProfiling"]=>
bool(false)
["isSybase"]=>
bool(false)
["_transaction":"yii\db\Connection":private]=>
NULL
["_schema":"yii\db\Connection":private]=>
NULL
["_driverName":"yii\db\Connection":private]=>
string(5) "mysql"
["_master":"yii\db\Connection":private]=>
bool(false)
["_slave":"yii\db\Connection":private]=>
bool(false)
["_queryCacheInfo":"yii\db\Connection":private]=>
array(0) {
}
["_quotedTableNames":"yii\db\Connection":private]=>
NULL
["_quotedColumnNames":"yii\db\Connection":private]=>
NULL
["_events":"yii\base\Component":private]=>
array(1) {
["afterOpen"]=>
array(1) {
[0]=>
array(2) {
[0]=>
object(Closure)#7 (1) {
["parameter"]=>
array(1) {
["$event"]=>
string(10) ""
}
}
[1]=>
NULL
}
}
}
["_eventWildcards":"yii\base\Component":private]=>
array(0) {
}
["_behaviors":"yii\base\Component":private]=>
array(0) {
}
}
["autoRelease"]=>
bool(true)
["_locks":"yii\mutex\Mutex":private]=>
&array(0) {
}
["_events":"yii\base\Component":private]=>
array(0) {
}
["_eventWildcards":"yii\base\Component":private]=>
array(0) {
}
["_behaviors":"yii\base\Component":private]=>
NULL
}
["mutexTimeout"]=>
int(3)
["tableName"]=>
string(14) "{{%app_queue}}"
["channel"]=>
string(3) "app"
["deleteReleased"]=>
bool(false)
["commandClass"]=>
string(37) "belprime\sps\queue\drivers\db\Command"
["reserveTime":protected]=>
NULL
["_statistcsProvider":"yii\queue\db\Queue":private]=>
NULL
["loopConfig"]=>
string(24) "yii\queue\cli\SignalLoop"
["commandOptions"]=>
array(0) {
}
["messageHandler"]=>
NULL
["_workerPid":"yii\queue\cli\Queue":private]=>
NULL
["strictJobType"]=>
bool(true)
["serializer"]=>
object(yii\queue\serializers\PhpSerializer)#33 (0) {
}
["ttr"]=>
int(300)
["attempts"]=>
int(1)
["pushTtr":"yii\queue\Queue":private]=>
NULL
["pushDelay":"yii\queue\Queue":private]=>
NULL
["pushPriority":"yii\queue\Queue":private]=>
NULL
["_events":"yii\base\Component":private]=>
array(0) {
}
["_eventWildcards":"yii\base\Component":private]=>
array(0) {
}
["_behaviors":"yii\base\Component":private]=>
NULL
}
["log"]=>
object(yii\log\Dispatcher)#39 (5) {
["targets"]=>
array(6) {
["errors"]=>
object(yii\log\FileTarget)#44 (20) {
["logFile"]=>
string(70) "/home/linkassi/www/link-assistant.com/frontend/runtime/logs/errors.log"
["enableRotation"]=>
bool(true)
["maxFileSize"]=>
int(10240)
["maxLogFiles"]=>
int(40)
["fileMode"]=>
int(436)
["dirMode"]=>
int(509)
["rotateByCopy"]=>
bool(false)
["categories"]=>
array(0) {
}
["except"]=>
array(7) {
[0]=>
string(24) "yii\web\HttpException:4*"
[1]=>
string(58) "belprime\locale\components\GeoIp2Api::findCountryCodeByIp4"
[2]=>
string(33) "belprime\sps\base\helpers\Image:*"
[3]=>
string(36) "belprime\sps\base\widgets\SeoImage:*"
[4]=>
string(41) "belprime\sps\base\extensions\spamfilter\*"
[5]=>
string(41) "belprime\sps\base\extensions\thechecker\*"
[6]=>
string(21) "yii\web\Session::init"
}
["logVars"]=>
array(6) {
[0]=>
string(4) "_GET"
[1]=>
string(5) "_POST"
[2]=>
string(6) "_FILES"
[3]=>
string(7) "_COOKIE"
[4]=>
string(8) "_SESSION"
[5]=>
string(7) "_SERVER"
}
["maskVars"]=>
array(3) {
[0]=>
string(26) "_SERVER.HTTP_AUTHORIZATION"
[1]=>
string(21) "_SERVER.PHP_AUTH_USER"
[2]=>
string(19) "_SERVER.PHP_AUTH_PW"
}
["prefix"]=>
NULL
["exportInterval"]=>
int(1000)
["messages"]=>
array(0) {
}
["microtime"]=>
bool(false)
["_levels":"yii\log\Target":private]=>
int(3)
["_enabled":"yii\log\Target":private]=>
bool(true)
["_events":"yii\base\Component":private]=>
array(0) {
}
["_eventWildcards":"yii\base\Component":private]=>
array(0) {
}
["_behaviors":"yii\base\Component":private]=>
NULL
}
["mails"]=>
object(yii\log\FileTarget)#43 (20) {
["logFile"]=>
string(69) "/home/linkassi/www/link-assistant.com/frontend/runtime/logs/mails.log"
["enableRotation"]=>
bool(true)
["maxFileSize"]=>
int(10240)
["maxLogFiles"]=>
int(20)
["fileMode"]=>
int(436)
["dirMode"]=>
int(509)
["rotateByCopy"]=>
bool(false)
["categories"]=>
array(2) {
[0]=>
string(17) "yii\swiftmailer\*"
[1]=>
string(24) "console\helpers\Mailer:*"
}
["except"]=>
array(0) {
}
["logVars"]=>
array(0) {
}
["maskVars"]=>
array(3) {
[0]=>
string(26) "_SERVER.HTTP_AUTHORIZATION"
[1]=>
string(21) "_SERVER.PHP_AUTH_USER"
[2]=>
string(19) "_SERVER.PHP_AUTH_PW"
}
["prefix"]=>
NULL
["exportInterval"]=>
int(1000)
["messages"]=>
array(0) {
}
["microtime"]=>
bool(false)
["_levels":"yii\log\Target":private]=>
int(7)
["_enabled":"yii\log\Target":private]=>
bool(true)
["_events":"yii\base\Component":private]=>
array(0) {
}
["_eventWildcards":"yii\base\Component":private]=>
array(0) {
}
["_behaviors":"yii\base\Component":private]=>
NULL
}
["sales"]=>
object(yii\log\FileTarget)#45 (20) {
["logFile"]=>
string(69) "/home/linkassi/www/link-assistant.com/frontend/runtime/logs/sales.log"
["enableRotation"]=>
bool(true)
["maxFileSize"]=>
int(10240)
["maxLogFiles"]=>
int(20)
["fileMode"]=>
int(436)
["dirMode"]=>
int(509)
["rotateByCopy"]=>
bool(false)
["categories"]=>
array(2) {
[0]=>
string(20) "belprime\sps\sales\*"
[1]=>
string(5) "sales"
}
["except"]=>
array(0) {
}
["logVars"]=>
array(6) {
[0]=>
string(4) "_GET"
[1]=>
string(5) "_POST"
[2]=>
string(6) "_FILES"
[3]=>
string(7) "_COOKIE"
[4]=>
string(8) "_SESSION"
[5]=>
string(7) "_SERVER"
}
["maskVars"]=>
array(3) {
[0]=>
string(26) "_SERVER.HTTP_AUTHORIZATION"
[1]=>
string(21) "_SERVER.PHP_AUTH_USER"
[2]=>
string(19) "_SERVER.PHP_AUTH_PW"
}
["prefix"]=>
NULL
["exportInterval"]=>
int(1000)
["messages"]=>
array(0) {
}
["microtime"]=>
bool(false)
["_levels":"yii\log\Target":private]=>
int(7)
["_enabled":"yii\log\Target":private]=>
bool(true)
["_events":"yii\base\Component":private]=>
array(0) {
}
["_eventWildcards":"yii\base\Component":private]=>
array(0) {
}
["_behaviors":"yii\base\Component":private]=>
NULL
}
["sales-trace"]=>
object(yii\log\FileTarget)#46 (20) {
["logFile"]=>
string(75) "/home/linkassi/www/link-assistant.com/frontend/runtime/logs/sales-trace.log"
["enableRotation"]=>
bool(true)
["maxFileSize"]=>
int(10240)
["maxLogFiles"]=>
int(20)
["fileMode"]=>
int(436)
["dirMode"]=>
int(509)
["rotateByCopy"]=>
bool(false)
["categories"]=>
array(2) {
[0]=>
string(20) "belprime\sps\sales\*"
[1]=>
string(5) "sales"
}
["except"]=>
array(0) {
}
["logVars"]=>
array(0) {
}
["maskVars"]=>
array(3) {
[0]=>
string(26) "_SERVER.HTTP_AUTHORIZATION"
[1]=>
string(21) "_SERVER.PHP_AUTH_USER"
[2]=>
string(19) "_SERVER.PHP_AUTH_PW"
}
["prefix"]=>
NULL
["exportInterval"]=>
int(1000)
["messages"]=>
array(0) {
}
["microtime"]=>
bool(false)
["_levels":"yii\log\Target":private]=>
int(7)
["_enabled":"yii\log\Target":private]=>
bool(true)
["_events":"yii\base\Component":private]=>
array(0) {
}
["_eventWildcards":"yii\base\Component":private]=>
array(0) {
}
["_behaviors":"yii\base\Component":private]=>
NULL
}
["bots-protection"]=>
object(yii\log\FileTarget)#47 (20) {
["logFile"]=>
string(79) "/home/linkassi/www/link-assistant.com/frontend/runtime/logs/bots-protection.log"
["enableRotation"]=>
bool(true)
["maxFileSize"]=>
int(10240)
["maxLogFiles"]=>
int(5)
["fileMode"]=>
int(436)
["dirMode"]=>
int(509)
["rotateByCopy"]=>
bool(false)
["categories"]=>
array(2) {
[0]=>
string(41) "belprime\sps\base\extensions\spamfilter\*"
[1]=>
string(41) "belprime\sps\base\extensions\thechecker\*"
}
["except"]=>
array(0) {
}
["logVars"]=>
array(0) {
}
["maskVars"]=>
array(3) {
[0]=>
string(26) "_SERVER.HTTP_AUTHORIZATION"
[1]=>
string(21) "_SERVER.PHP_AUTH_USER"
[2]=>
string(19) "_SERVER.PHP_AUTH_PW"
}
["prefix"]=>
NULL
["exportInterval"]=>
int(1000)
["messages"]=>
array(0) {
}
["microtime"]=>
bool(false)
["_levels":"yii\log\Target":private]=>
int(7)
["_enabled":"yii\log\Target":private]=>
bool(true)
["_events":"yii\base\Component":private]=>
array(0) {
}
["_eventWildcards":"yii\base\Component":private]=>
array(0) {
}
["_behaviors":"yii\base\Component":private]=>
NULL
}
["imagick-errors"]=>
object(yii\log\FileTarget)#48 (20) {
["logFile"]=>
string(78) "/home/linkassi/www/link-assistant.com/frontend/runtime/logs/imagick-errors.log"
["enableRotation"]=>
bool(true)
["maxFileSize"]=>
int(10240)
["maxLogFiles"]=>
int(10)
["fileMode"]=>
int(436)
["dirMode"]=>
int(509)
["rotateByCopy"]=>
bool(false)
["categories"]=>
array(2) {
[0]=>
string(33) "belprime\sps\base\helpers\Image:*"
[1]=>
string(36) "belprime\sps\base\widgets\SeoImage:*"
}
["except"]=>
array(0) {
}
["logVars"]=>
array(6) {
[0]=>
string(4) "_GET"
[1]=>
string(5) "_POST"
[2]=>
string(6) "_FILES"
[3]=>
string(7) "_COOKIE"
[4]=>
string(8) "_SESSION"
[5]=>
string(7) "_SERVER"
}
["maskVars"]=>
array(3) {
[0]=>
string(26) "_SERVER.HTTP_AUTHORIZATION"
[1]=>
string(21) "_SERVER.PHP_AUTH_USER"
[2]=>
string(19) "_SERVER.PHP_AUTH_PW"
}
["prefix"]=>
NULL
["exportInterval"]=>
int(1000)
["messages"]=>
array(0) {
}
["microtime"]=>
bool(false)
["_levels":"yii\log\Target":private]=>
int(7)
["_enabled":"yii\log\Target":private]=>
bool(true)
["_events":"yii\base\Component":private]=>
array(0) {
}
["_eventWildcards":"yii\base\Component":private]=>
array(0) {
}
["_behaviors":"yii\base\Component":private]=>
NULL
}
}
["_logger":"yii\log\Dispatcher":private]=>
object(yii\log\Logger)#41 (7) {
["messages"]=>
array(0) {
}
["flushInterval"]=>
int(1)
["traceLevel"]=>
int(0)
["dispatcher"]=>
*RECURSION*
["_events":"yii\base\Component":private]=>
array(0) {
}
["_eventWildcards":"yii\base\Component":private]=>
array(0) {
}
["_behaviors":"yii\base\Component":private]=>
NULL
}
["_events":"yii\base\Component":private]=>
array(0) {
}
["_eventWildcards":"yii\base\Component":private]=>
array(0) {
}
["_behaviors":"yii\base\Component":private]=>
NULL
}
["cache"]=>
object(yii\caching\FileCache)#67 (13) {
["keyPrefix"]=>
string(0) ""
["cachePath"]=>
string(60) "/home/linkassi/www/link-assistant.com/frontend/runtime/cache"
["cacheFileSuffix"]=>
string(4) ".bin"
["directoryLevel"]=>
int(1)
["gcProbability"]=>
int(10)
["fileMode"]=>
NULL
["dirMode"]=>
int(509)
["serializer"]=>
NULL
["defaultDuration"]=>
int(0)
["_igbinaryAvailable":"yii\caching\Cache":private]=>
bool(false)
["_events":"yii\base\Component":private]=>
array(0) {
}
["_eventWildcards":"yii\base\Component":private]=>
array(0) {
}
["_behaviors":"yii\base\Component":private]=>
NULL
}
["urlManager"]=>
object(belprime\sps\translator\url\UrlManager)#62 (37) {
["queryCacheDuration"]=>
int(0)
["isRequest"]=>
bool(true)
["languages"]=>
array(11) {
[0]=>
string(2) "en"
[1]=>
string(2) "es"
[2]=>
string(2) "fr"
[3]=>
string(2) "ja"
[4]=>
string(2) "nl"
[5]=>
string(2) "de"
[6]=>
string(2) "pl"
[7]=>
string(2) "ko"
[8]=>
string(2) "ru"
[9]=>
string(2) "pt"
[10]=>
string(2) "hu"
}
["enableLocaleUrls"]=>
bool(true)
["enableDefaultLanguageUrlCode"]=>
bool(false)
["enableLanguageDetection"]=>
bool(false)
["enableLanguagePersistence"]=>
bool(false)
["keepUppercaseLanguageCode"]=>
bool(false)
["languageSessionKey"]=>
bool(false)
["languageCookieName"]=>
string(9) "_language"
["languageCookieDuration"]=>
int(2592000)
["languageCookieOptions"]=>
array(0) {
}
["ignoreLanguageUrlPatterns"]=>
array(0) {
}
["enablePrettyUrl"]=>
bool(true)
["languageParam"]=>
string(8) "language"
["geoIpServerVar"]=>
string(18) "HTTP_X_GEO_COUNTRY"
["geoIpLanguageCountries"]=>
array(0) {
}
["languageRedirectCode"]=>
int(302)
["_defaultLanguage":protected]=>
string(2) "en"
["_request":protected]=>
object(yii\web\Request)#22 (35) {
["enableCsrfValidation"]=>
bool(true)
["csrfParam"]=>
string(5) "_csrf"
["csrfCookie"]=>
array(1) {
["httpOnly"]=>
bool(true)
}
["enableCsrfCookie"]=>
bool(true)
["enableCookieValidation"]=>
bool(true)
["cookieValidationKey"]=>
string(11) "HHjॖik"
["methodParam"]=>
string(7) "_method"
["parsers"]=>
array(1) {
["application/json"]=>
string(18) "yii\web\JsonParser"
}
["trustedHosts"]=>
array(0) {
}
["secureHeaders"]=>
array(5) {
[0]=>
string(15) "X-Forwarded-For"
[1]=>
string(16) "X-Forwarded-Host"
[2]=>
string(17) "X-Forwarded-Proto"
[3]=>
string(15) "Front-End-Https"
[4]=>
string(13) "X-Rewrite-Url"
}
["ipHeaders"]=>
array(1) {
[0]=>
string(15) "X-Forwarded-For"
}
["secureProtocolHeaders"]=>
array(2) {
["X-Forwarded-Proto"]=>
array(1) {
[0]=>
string(5) "https"
}
["Front-End-Https"]=>
array(1) {
[0]=>
string(2) "on"
}
}
["_cookies":"yii\web\Request":private]=>
NULL
["_headers":"yii\web\Request":private]=>
object(yii\web\HeaderCollection)#51 (1) {
["_headers":"yii\web\HeaderCollection":private]=>
array(6) {
["accept-encoding"]=>
array(1) {
[0]=>
string(23) "gzip, br, zstd, deflate"
}
["user-agent"]=>
array(1) {
[0]=>
string(103) "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)"
}
["accept"]=>
array(1) {
[0]=>
string(3) "*/*"
}
["host"]=>
array(1) {
[0]=>
string(22) "www.link-assistant.com"
}
["content-length"]=>
array(1) {
[0]=>
string(0) ""
}
["content-type"]=>
array(1) {
[0]=>
string(0) ""
}
}
}
["_rawBody":"yii\web\Request":private]=>
NULL
["_bodyParams":"yii\web\Request":private]=>
NULL
["_queryParams":"yii\web\Request":private]=>
NULL
["_hostInfo":"yii\web\Request":private]=>
NULL
["_hostName":"yii\web\Request":private]=>
NULL
["_baseUrl":"yii\web\Request":private]=>
string(0) ""
["_scriptUrl":"yii\web\Request":private]=>
string(10) "/index.php"
["_scriptFile":"yii\web\Request":private]=>
NULL
["_pathInfo":"yii\web\Request":private]=>
string(22) "linkassistant/buy.html"
["_url":"yii\web\Request":private]=>
string(51) "/linkassistant/buy.html?currency=JPY&id=LA_ENT_YEAR"
["_port":"yii\web\Request":private]=>
NULL
["_securePort":"yii\web\Request":private]=>
NULL
["_contentTypes":"yii\web\Request":private]=>
NULL
["_languages":"yii\web\Request":private]=>
NULL
["_csrfToken":"yii\web\Request":private]=>
NULL
["_secureForwardedHeaderParts":"yii\web\Request":private]=>
NULL
["_isConsoleRequest":"yii\base\Request":private]=>
NULL
["_events":"yii\base\Component":private]=>
array(0) {
}
["_eventWildcards":"yii\base\Component":private]=>
array(0) {
}
["_behaviors":"yii\base\Component":private]=>
NULL
["_scriptFile":"yii\base\Request":private]=>
NULL
}
["_processed":protected]=>
bool(true)
["enableStrictParsing"]=>
bool(false)
["rules"]=>
array(152) {
[0]=>
object(frontend\components\XmlUrlRule)#63 (16) {
["suffix"]=>
string(4) ".xml"
["name"]=>
string(13) "rankdots/blog"
["pattern"]=>
string(18) "#^rankdots/blog$#u"
["host"]=>
NULL
["route"]=>
string(29) "rankdotsSiteMap/default/index"
["defaults"]=>
array(0) {
}
["verb"]=>
NULL
["mode"]=>
NULL
["encodeParams"]=>
bool(true)
["normalizer"]=>
NULL
["createStatus":protected]=>
NULL
["placeholders":protected]=>
array(0) {
}
["_template":"yii\web\UrlRule":private]=>
string(15) "/rankdots/blog/"
["_routeRule":"yii\web\UrlRule":private]=>
NULL
["_paramRules":"yii\web\UrlRule":private]=>
array(0) {
}
["_routeParams":"yii\web\UrlRule":private]=>
array(0) {
}
}
[1]=>
object(frontend\components\SectionUrlRule)#66 (16) {
["suffix"]=>
string(1) "/"
["name"]=>
string(22) "rankdots/blog/forward/"
["pattern"]=>
string(26) "#^rankdots/blog/forward$#u"
["host"]=>
NULL
["route"]=>
string(24) "rankdots/default/forward"
["defaults"]=>
array(0) {
}
["verb"]=>
NULL
["mode"]=>
NULL
["encodeParams"]=>
bool(true)
["normalizer"]=>
NULL
["createStatus":protected]=>
NULL
["placeholders":protected]=>
array(0) {
}
["_template":"yii\web\UrlRule":private]=>
string(23) "/rankdots/blog/forward/"
["_routeRule":"yii\web\UrlRule":private]=>
NULL
["_paramRules":"yii\web\UrlRule":private]=>
array(0) {
}
["_routeParams":"yii\web\UrlRule":private]=>
array(0) {
}
}
[2]=>
object(frontend\components\SectionUrlRule)#68 (16) {
["suffix"]=>
string(1) "/"
["name"]=>
string(13) "rankdots/blog"
["pattern"]=>
string(18) "#^rankdots/blog$#u"
["host"]=>
NULL
["route"]=>
string(23) "rankdots/category/index"
["defaults"]=>
array(0) {
}
["verb"]=>
NULL
["mode"]=>
NULL
["encodeParams"]=>
bool(true)
["normalizer"]=>
NULL
["createStatus":protected]=>
NULL
["placeholders":protected]=>
array(0) {
}
["_template":"yii\web\UrlRule":private]=>
string(15) "/rankdots/blog/"
["_routeRule":"yii\web\UrlRule":private]=>
NULL
["_paramRules":"yii\web\UrlRule":private]=>
array(0) {
}
["_routeParams":"yii\web\UrlRule":private]=>
array(0) {
}
}
[3]=>
object(frontend\components\XmlUrlRule)#69 (16) {
["suffix"]=>
string(4) ".xml"
["name"]=>
string(18) "rankdots/blog/feed"
["pattern"]=>
string(23) "#^rankdots/blog/feed$#u"
["host"]=>
NULL
["route"]=>
string(20) "rankdots/default/rss"
["defaults"]=>
array(0) {
}
["verb"]=>
NULL
["mode"]=>
NULL
["encodeParams"]=>
bool(true)
["normalizer"]=>
NULL
["createStatus":protected]=>
NULL
["placeholders":protected]=>
array(0) {
}
["_template":"yii\web\UrlRule":private]=>
string(20) "/rankdots/blog/feed/"
["_routeRule":"yii\web\UrlRule":private]=>
NULL
["_paramRules":"yii\web\UrlRule":private]=>
array(0) {
}
["_routeParams":"yii\web\UrlRule":private]=>
array(0) {
}
}
[4]=>
object(frontend\components\SectionUrlRule)#70 (16) {
["suffix"]=>
string(1) "/"
["name"]=>
string(30) "rankdots/blog/default/"
["pattern"]=>
string(48) "#^rankdots/blog/default/(?P[^\/]+)$#u"
["host"]=>
NULL
["route"]=>
string(25) "rankdots/default/"
["defaults"]=>
array(0) {
}
["verb"]=>
NULL
["mode"]=>
NULL
["encodeParams"]=>
bool(true)
["normalizer"]=>
NULL
["createStatus":protected]=>
NULL
["placeholders":protected]=>
array(1) {
["a47cc8c92"]=>
string(6) "action"
}
["_template":"yii\web\UrlRule":private]=>
string(32) "/rankdots/blog/default//"
["_routeRule":"yii\web\UrlRule":private]=>
string(43) "#^rankdots/default/(?P[^\/]+)$#u"
["_paramRules":"yii\web\UrlRule":private]=>
array(0) {
}
["_routeParams":"yii\web\UrlRule":private]=>
array(1) {
["action"]=>
string(8) ""
}
}
[5]=>
object(frontend\components\SectionUrlRule)#71 (16) {
["suffix"]=>
string(1) "/"
["name"]=>
string(21) "rankdots/blog/author/"
["pattern"]=>
string(25) "#^rankdots/blog/author$#u"
["host"]=>
NULL
["route"]=>
string(19) "rankdots/user/index"
["defaults"]=>
array(0) {
}
["verb"]=>
NULL
["mode"]=>
NULL
["encodeParams"]=>
bool(false)
["normalizer"]=>
NULL
["createStatus":protected]=>
NULL
["placeholders":protected]=>
array(0) {
}
["_template":"yii\web\UrlRule":private]=>
string(22) "/rankdots/blog/author/"
["_routeRule":"yii\web\UrlRule":private]=>
NULL
["_paramRules":"yii\web\UrlRule":private]=>
array(0) {
}
["_routeParams":"yii\web\UrlRule":private]=>
array(0) {
}
}
[6]=>
object(frontend\components\SectionUrlRule)#72 (16) {
["suffix"]=>
string(1) "/"
["name"]=>
string(35) "rankdots/blog/author/"
["pattern"]=>
string(49) "#^rankdots/blog/author/(?P[\w\-/]+)$#u"
["host"]=>
NULL
["route"]=>
string(18) "rankdots/user/view"
["defaults"]=>
array(0) {
}
["verb"]=>
NULL
["mode"]=>
NULL
["encodeParams"]=>
bool(false)
["normalizer"]=>
NULL
["createStatus":protected]=>
NULL
["placeholders":protected]=>
array(1) {
["a841cb121"]=>
string(3) "uri"
}
["_template":"yii\web\UrlRule":private]=>
string(28) "/rankdots/blog/author//"
["_routeRule":"yii\web\UrlRule":private]=>
NULL
["_paramRules":"yii\web\UrlRule":private]=>
array(1) {
["uri"]=>
string(13) "#^[\w\-/]+$#u"
}
["_routeParams":"yii\web\UrlRule":private]=>
array(0) {
}
}
[7]=>
object(frontend\components\SectionUrlRule)#73 (16) {
["suffix"]=>
string(1) "/"
["name"]=>
string(35) "rankdots/blog/feedback/"
["pattern"]=>
string(46) "#^rankdots/blog/feedback/(?P\d+)$#u"
["host"]=>
NULL
["route"]=>
string(23) "rankdots/feedback/index"
["defaults"]=>
array(0) {
}
["verb"]=>
NULL
["mode"]=>
NULL
["encodeParams"]=>
bool(false)
["normalizer"]=>
NULL
["createStatus":protected]=>
NULL
["placeholders":protected]=>
array(1) {
["ae094d20d"]=>
string(6) "postId"
}
["_template":"yii\web\UrlRule":private]=>
string(33) "/rankdots/blog/feedback//"
["_routeRule":"yii\web\UrlRule":private]=>
NULL
["_paramRules":"yii\web\UrlRule":private]=>
array(1) {
["postId"]=>
string(8) "#^\d+$#u"
}
["_routeParams":"yii\web\UrlRule":private]=>
array(0) {
}
}
[8]=>
object(frontend\components\SectionUrlRule)#74 (16) {
["suffix"]=>
string(1) "/"
["name"]=>
string(53) "rankdots/blog/feedback/toggle//"
["pattern"]=>
string(72) "#^rankdots/blog/feedback/toggle/(?P\d+)/(?P\w+)$#u"
["host"]=>
NULL
["route"]=>
string(24) "rankdots/feedback/toggle"
["defaults"]=>
array(0) {
}
["verb"]=>
NULL
["mode"]=>
NULL
["encodeParams"]=>
bool(false)
["normalizer"]=>
NULL
["createStatus":protected]=>
NULL
["placeholders":protected]=>
array(2) {
["ae094d20d"]=>
string(6) "postId"
["a8cde5729"]=>
string(4) "type"
}
["_template":"yii\web\UrlRule":private]=>
string(47) "/rankdots/blog/feedback/toggle///"
["_routeRule":"yii\web\UrlRule":private]=>
NULL
["_paramRules":"yii\web\UrlRule":private]=>
array(2) {
["postId"]=>
string(8) "#^\d+$#u"
["type"]=>
string(8) "#^\w+$#u"
}
["_routeParams":"yii\web\UrlRule":private]=>
array(0) {
}
}
[9]=>
object(frontend\components\SectionUrlRule)#75 (16) {
["suffix"]=>
string(1) "/"
["name"]=>
string(41) "rankdots/blog/feedback/reset/"
["pattern"]=>
string(52) "#^rankdots/blog/feedback/reset/(?P\d+)$#u"
["host"]=>
NULL
["route"]=>
string(23) "rankdots/feedback/reset"
["defaults"]=>
array(0) {
}
["verb"]=>
NULL
["mode"]=>
NULL
["encodeParams"]=>
bool(false)
["normalizer"]=>
NULL
["createStatus":protected]=>
NULL
["placeholders":protected]=>
array(1) {
["ae094d20d"]=>
string(6) "postId"
}
["_template":"yii\web\UrlRule":private]=>
string(39) "/rankdots/blog/feedback/reset//"
["_routeRule":"yii\web\UrlRule":private]=>
NULL
["_paramRules":"yii\web\UrlRule":private]=>
array(1) {
["postId"]=>
string(8) "#^\d+$#u"
}
["_routeParams":"yii\web\UrlRule":private]=>
array(0) {
}
}
[10]=>
object(frontend\components\SectionUrlRule)#76 (16) {
["suffix"]=>
string(1) "/"
["name"]=>
string(25) "rankdots/blog/post/visits"
["pattern"]=>
string(30) "#^rankdots/blog/post/visits$#u"
["host"]=>
NULL
["route"]=>
string(20) "rankdots/post/visits"
["defaults"]=>
array(0) {
}
["verb"]=>
NULL
["mode"]=>
NULL
["encodeParams"]=>
bool(true)
["normalizer"]=>
NULL
["createStatus":protected]=>
NULL
["placeholders":protected]=>
array(0) {
}
["_template":"yii\web\UrlRule":private]=>
string(27) "/rankdots/blog/post/visits/"
["_routeRule":"yii\web\UrlRule":private]=>
NULL
["_paramRules":"yii\web\UrlRule":private]=>
array(0) {
}
["_routeParams":"yii\web\UrlRule":private]=>
array(0) {
}
}
[11]=>
object(frontend\components\SectionUrlRule)#77 (16) {
["suffix"]=>
string(1) "/"
["name"]=>
string(24) "rankdots/blog/post/views"
["pattern"]=>
string(29) "#^rankdots/blog/post/views$#u"
["host"]=>
NULL
["route"]=>
string(19) "rankdots/post/views"
["defaults"]=>
array(0) {
}
["verb"]=>
NULL
["mode"]=>
NULL
["encodeParams"]=>
bool(true)
["normalizer"]=>
NULL
["createStatus":protected]=>
NULL
["placeholders":protected]=>
array(0) {
}
["_template":"yii\web\UrlRule":private]=>
string(26) "/rankdots/blog/post/views/"
["_routeRule":"yii\web\UrlRule":private]=>
NULL
["_paramRules":"yii\web\UrlRule":private]=>
array(0) {
}
["_routeParams":"yii\web\UrlRule":private]=>
array(0) {
}
}
[12]=>
object(frontend\components\SectionUrlRule)#78 (16) {
["suffix"]=>
string(1) "/"
["name"]=>
string(28) "rankdots/blog/"
["pattern"]=>
string(42) "#^rankdots/blog/(?P[\w\-/]+)$#u"
["host"]=>
NULL
["route"]=>
string(22) "rankdots/category/view"
["defaults"]=>
array(0) {
}
["verb"]=>
NULL
["mode"]=>
NULL
["encodeParams"]=>
bool(false)
["normalizer"]=>
NULL
["createStatus":protected]=>
NULL
["placeholders":protected]=>
array(1) {
["a841cb121"]=>
string(3) "uri"
}
["_template":"yii\web\UrlRule":private]=>
string(21) "/rankdots/blog//"
["_routeRule":"yii\web\UrlRule":private]=>
NULL
["_paramRules":"yii\web\UrlRule":private]=>
array(1) {
["uri"]=>
string(13) "#^[\w\-/]+$#u"
}
["_routeParams":"yii\web\UrlRule":private]=>
array(0) {
}
}
[13]=>
object(frontend\components\HtmlUrlRule)#79 (16) {
["suffix"]=>
string(5) ".html"
["name"]=>
string(32) "rankdots/blog/"
["pattern"]=>
string(46) "#^rankdots/blog/(?P[\w\-.html]+)$#u"
["host"]=>
NULL
["route"]=>
string(18) "rankdots/post/view"
["defaults"]=>
array(0) {
}
["verb"]=>
NULL
["mode"]=>
NULL
["encodeParams"]=>
bool(false)
["normalizer"]=>
NULL
["createStatus":protected]=>
NULL
["placeholders":protected]=>
array(1) {
["a841cb121"]=>
string(3) "uri"
}
["_template":"yii\web\UrlRule":private]=>
string(21) "/rankdots/blog//"
["_routeRule":"yii\web\UrlRule":private]=>
NULL
["_paramRules":"yii\web\UrlRule":private]=>
array(1) {
["uri"]=>
string(17) "#^[\w\-.html]+$#u"
}
["_routeParams":"yii\web\UrlRule":private]=>
array(0) {
}
}
[14]=>
object(frontend\components\SectionUrlRule)#80 (16) {
["suffix"]=>
string(1) "/"
["name"]=>
string(17) "rankdots/blog/rss"
["pattern"]=>
string(22) "#^rankdots/blog/rss$#u"
["host"]=>
NULL
["route"]=>
string(20) "rankdots/default/rss"
["defaults"]=>
array(0) {
}
["verb"]=>
NULL
["mode"]=>
NULL
["encodeParams"]=>
bool(true)
["normalizer"]=>
NULL
["createStatus":protected]=>
NULL
["placeholders":protected]=>
array(0) {
}
["_template":"yii\web\UrlRule":private]=>
string(19) "/rankdots/blog/rss/"
["_routeRule":"yii\web\UrlRule":private]=>
NULL
["_paramRules":"yii\web\UrlRule":private]=>
array(0) {
}
["_routeParams":"yii\web\UrlRule":private]=>
array(0) {
}
}
[15]=>
object(frontend\components\HtmlUrlRule)#81 (16) {
["suffix"]=>
string(5) ".html"
["name"]=>
string(26) "rankdots/blog/updatesignup"
["pattern"]=>
string(31) "#^rankdots/blog/updatesignup$#u"
["host"]=>
NULL
["route"]=>
string(29) "rankdots/default/updatesignup"
["defaults"]=>
array(0) {
}
["verb"]=>
NULL
["mode"]=>
NULL
["encodeParams"]=>
bool(true)
["normalizer"]=>
NULL
["createStatus":protected]=>
NULL
["placeholders":protected]=>
array(0) {
}
["_template":"yii\web\UrlRule":private]=>
string(28) "/rankdots/blog/updatesignup/"
["_routeRule":"yii\web\UrlRule":private]=>
NULL
["_paramRules":"yii\web\UrlRule":private]=>
array(0) {
}
["_routeParams":"yii\web\UrlRule":private]=>
array(0) {
}
}
[16]=>
object(frontend\components\SectionUrlRule)#82 (16) {
["suffix"]=>
string(1) "/"
["name"]=>
string(31) "rankdots/blog/subscribe/"
["pattern"]=>
string(46) "#^rankdots/blog/subscribe/(?P.*)$#u"
["host"]=>
NULL
["route"]=>
string(26) "rankdots/default/subscribe"
["defaults"]=>
array(0) {
}
["verb"]=>
NULL
["mode"]=>
NULL
["encodeParams"]=>
bool(true)
["normalizer"]=>
NULL
["createStatus":protected]=>
NULL
["placeholders":protected]=>
array(1) {
["abf396750"]=>
string(2) "id"
}
["_template":"yii\web\UrlRule":private]=>
string(30) "/rankdots/blog/subscribe//"
["_routeRule":"yii\web\UrlRule":private]=>
NULL
["_paramRules":"yii\web\UrlRule":private]=>
array(1) {
["id"]=>
string(7) "#^.*$#u"
}
["_routeParams":"yii\web\UrlRule":private]=>
array(0) {
}
}
[17]=>
object(frontend\components\SectionUrlRule)#83 (16) {
["suffix"]=>
string(1) "/"
["name"]=>
string(35) "rankdots/blog/summary/"
["pattern"]=>
string(49) "#^rankdots/blog/summary/(?P[\w\-]+)$#u"
["host"]=>
NULL
["route"]=>
string(21) "rankdots/post/summary"
["defaults"]=>
array(0) {
}
["verb"]=>
NULL
["mode"]=>
NULL
["encodeParams"]=>
bool(true)
["normalizer"]=>
NULL
["createStatus":protected]=>
NULL
["placeholders":protected]=>
array(1) {
["a841cb121"]=>
string(3) "uri"
}
["_template":"yii\web\UrlRule":private]=>
string(29) "/rankdots/blog/summary//"
["_routeRule":"yii\web\UrlRule":private]=>
NULL
["_paramRules":"yii\web\UrlRule":private]=>
array(1) {
["uri"]=>
string(12) "#^[\w\-]+$#u"
}
["_routeParams":"yii\web\UrlRule":private]=>
array(0) {
}
}
[18]=>
object(frontend\components\SectionUrlRule)#84 (16) {
["suffix"]=>
string(1) "/"
["name"]=>
string(82) "rankdots/blog///"
["pattern"]=>
string(105) "#^rankdots/blog/(?P(post|comment))/(?P(create|update|delete))/(?P\d+)$#u"
["host"]=>
NULL
["route"]=>
string(30) "rankdots//"
["defaults"]=>
array(0) {
}
["verb"]=>
NULL
["mode"]=>
NULL
["encodeParams"]=>
bool(true)
["normalizer"]=>
NULL
["createStatus":protected]=>
NULL
["placeholders":protected]=>
array(3) {
["a4cf2669a"]=>
string(10) "controller"
["a47cc8c92"]=>
string(6) "action"
["abf396750"]=>
string(2) "id"
}
["_template":"yii\web\UrlRule":private]=>
string(42) "/rankdots/blog////"
["_routeRule":"yii\web\UrlRule":private]=>
string(81) "#^rankdots/(?P(post|comment))/(?P(create|update|delete))$#u"
["_paramRules":"yii\web\UrlRule":private]=>
array(1) {
["id"]=>
string(8) "#^\d+$#u"
}
["_routeParams":"yii\web\UrlRule":private]=>
array(2) {
["controller"]=>
string(12) ""
["action"]=>
string(8) ""
}
}
[19]=>
object(frontend\components\SectionUrlRule)#85 (16) {
["suffix"]=>
string(1) "/"
["name"]=>
string(39) "rankdots/blog/user/"
["pattern"]=>
string(50) "#^rankdots/blog/user/(?P(subscribe))$#u"
["host"]=>
NULL
["route"]=>
string(22) "rankdots/user/"
["defaults"]=>
array(0) {
}
["verb"]=>
NULL
["mode"]=>
NULL
["encodeParams"]=>
bool(true)
["normalizer"]=>
NULL
["createStatus":protected]=>
NULL
["placeholders":protected]=>
array(1) {
["a47cc8c92"]=>
string(6) "action"
}
["_template":"yii\web\UrlRule":private]=>
string(29) "/rankdots/blog/user//"
["_routeRule":"yii\web\UrlRule":private]=>
string(45) "#^rankdots/user/(?P(subscribe))$#u"
["_paramRules":"yii\web\UrlRule":private]=>
array(0) {
}
["_routeParams":"yii\web\UrlRule":private]=>
array(1) {
["action"]=>
string(8) ""
}
}
[20]=>
object(frontend\components\SectionUrlRule)#86 (16) {
["suffix"]=>
string(1) "/"
["name"]=>
string(34) "rankdots/blog/author/"
["pattern"]=>
string(48) "#^rankdots/blog/author/(?P[\w\-]+)$#u"
["host"]=>
NULL
["route"]=>
string(18) "rankdots/user/view"
["defaults"]=>
array(0) {
}
["verb"]=>
NULL
["mode"]=>
NULL
["encodeParams"]=>
bool(true)
["normalizer"]=>
NULL
["createStatus":protected]=>
NULL
["placeholders":protected]=>
array(1) {
["a841cb121"]=>
string(3) "uri"
}
["_template":"yii\web\UrlRule":private]=>
string(28) "/rankdots/blog/author//"
["_routeRule":"yii\web\UrlRule":private]=>
NULL
["_paramRules":"yii\web\UrlRule":private]=>
array(1) {
["uri"]=>
string(12) "#^[\w\-]+$#u"
}
["_routeParams":"yii\web\UrlRule":private]=>
array(0) {
}
}
[21]=>
object(frontend\components\SectionUrlRule)#87 (16) {
["suffix"]=>
string(1) "/"
["name"]=>
string(22) "news/"
["pattern"]=>
string(33) "#^news/(?P(search))$#u"
["host"]=>
NULL
["route"]=>
string(21) "news/default/"
["defaults"]=>
array(0) {
}
["verb"]=>
NULL
["mode"]=>
NULL
["encodeParams"]=>
bool(true)
["normalizer"]=>
NULL
["createStatus":protected]=>
NULL
["placeholders":protected]=>
array(1) {
["a47cc8c92"]=>
string(6) "action"
}
["_template":"yii\web\UrlRule":private]=>
string(15) "/news//"
["_routeRule":"yii\web\UrlRule":private]=>
string(41) "#^news/default/(?P(search))$#u"
["_paramRules":"yii\web\UrlRule":private]=>
array(0) {
}
["_routeParams":"yii\web\UrlRule":private]=>
array(1) {
["action"]=>
string(8) ""
}
}
[22]=>
object(frontend\components\XmlUrlRule)#88 (16) {
["suffix"]=>
string(4) ".xml"
["name"]=>
string(4) "news"
["pattern"]=>
string(9) "#^news$#u"
["host"]=>
NULL
["route"]=>
string(25) "newsSiteMap/default/index"
["defaults"]=>
array(0) {
}
["verb"]=>
NULL
["mode"]=>
NULL
["encodeParams"]=>
bool(true)
["normalizer"]=>
NULL
["createStatus":protected]=>
NULL
["placeholders":protected]=>
array(0) {
}
["_template":"yii\web\UrlRule":private]=>
string(6) "/news/"
["_routeRule":"yii\web\UrlRule":private]=>
NULL
["_paramRules":"yii\web\UrlRule":private]=>
array(0) {
}
["_routeParams":"yii\web\UrlRule":private]=>
array(0) {
}
}
[23]=>
object(frontend\components\SectionUrlRule)#89 (16) {
["suffix"]=>
string(1) "/"
["name"]=>
string(13) "news/forward/"
["pattern"]=>
string(17) "#^news/forward$#u"
["host"]=>
NULL
["route"]=>
string(20) "news/default/forward"
["defaults"]=>
array(0) {
}
["verb"]=>
NULL
["mode"]=>
NULL
["encodeParams"]=>
bool(true)
["normalizer"]=>
NULL
["createStatus":protected]=>
NULL
["placeholders":protected]=>
array(0) {
}
["_template":"yii\web\UrlRule":private]=>
string(14) "/news/forward/"
["_routeRule":"yii\web\UrlRule":private]=>
NULL
["_paramRules":"yii\web\UrlRule":private]=>
array(0) {
}
["_routeParams":"yii\web\UrlRule":private]=>
array(0) {
}
}
[24]=>
object(frontend\components\SectionUrlRule)#90 (16) {
["suffix"]=>
string(1) "/"
["name"]=>
string(4) "news"
["pattern"]=>
string(9) "#^news$#u"
["host"]=>
NULL
["route"]=>
string(19) "news/category/index"
["defaults"]=>
array(0) {
}
["verb"]=>
NULL
["mode"]=>
NULL
["encodeParams"]=>
bool(true)
["normalizer"]=>
NULL
["createStatus":protected]=>
NULL
["placeholders":protected]=>
array(0) {
}
["_template":"yii\web\UrlRule":private]=>
string(6) "/news/"
["_routeRule":"yii\web\UrlRule":private]=>
NULL
["_paramRules":"yii\web\UrlRule":private]=>
array(0) {
}
["_routeParams":"yii\web\UrlRule":private]=>
array(0) {
}
}
[25]=>
object(frontend\components\XmlUrlRule)#91 (16) {
["suffix"]=>
string(4) ".xml"
["name"]=>
string(9) "news/feed"
["pattern"]=>
string(14) "#^news/feed$#u"
["host"]=>
NULL
["route"]=>
string(16) "news/default/rss"
["defaults"]=>
array(0) {
}
["verb"]=>
NULL
["mode"]=>
NULL
["encodeParams"]=>
bool(true)
["normalizer"]=>
NULL
["createStatus":protected]=>
NULL
["placeholders":protected]=>
array(0) {
}
["_template":"yii\web\UrlRule":private]=>
string(11) "/news/feed/"
["_routeRule":"yii\web\UrlRule":private]=>
NULL
["_paramRules":"yii\web\UrlRule":private]=>
array(0) {
}
["_routeParams":"yii\web\UrlRule":private]=>
array(0) {
}
}
[26]=>
object(frontend\components\SectionUrlRule)#92 (16) {
["suffix"]=>
string(1) "/"
["name"]=>
string(21) "news/default/"
["pattern"]=>
string(39) "#^news/default/(?P[^\/]+)$#u"
["host"]=>
NULL
["route"]=>
string(21) "news/default/"
["defaults"]=>
array(0) {
}
["verb"]=>
NULL
["mode"]=>
NULL
["encodeParams"]=>
bool(true)
["normalizer"]=>
NULL
["createStatus":protected]=>
NULL
["placeholders":protected]=>
array(1) {
["a47cc8c92"]=>
string(6) "action"
}
["_template":"yii\web\UrlRule":private]=>
string(23) "/news/default//"
["_routeRule":"yii\web\UrlRule":private]=>
string(39) "#^news/default/(?P[^\/]+)$#u"
["_paramRules":"yii\web\UrlRule":private]=>
array(0) {
}
["_routeParams":"yii\web\UrlRule":private]=>
array(1) {
["action"]=>
string(8) ""
}
}
[27]=>
object(frontend\components\SectionUrlRule)#93 (16) {
["suffix"]=>
string(1) "/"
["name"]=>
string(12) "news/author/"
["pattern"]=>
string(16) "#^news/author$#u"
["host"]=>
NULL
["route"]=>
string(15) "news/user/index"
["defaults"]=>
array(0) {
}
["verb"]=>
NULL
["mode"]=>
NULL
["encodeParams"]=>
bool(false)
["normalizer"]=>
NULL
["createStatus":protected]=>
NULL
["placeholders":protected]=>
array(0) {
}
["_template":"yii\web\UrlRule":private]=>
string(13) "/news/author/"
["_routeRule":"yii\web\UrlRule":private]=>
NULL
["_paramRules":"yii\web\UrlRule":private]=>
array(0) {
}
["_routeParams":"yii\web\UrlRule":private]=>
array(0) {
}
}
[28]=>
object(frontend\components\SectionUrlRule)#94 (16) {
["suffix"]=>
string(1) "/"
["name"]=>
string(26) "news/author/"
["pattern"]=>
string(40) "#^news/author/(?P[\w\-/]+)$#u"
["host"]=>
NULL
["route"]=>
string(14) "news/user/view"
["defaults"]=>
array(0) {
}
["verb"]=>
NULL
["mode"]=>
NULL
["encodeParams"]=>
bool(false)
["normalizer"]=>
NULL
["createStatus":protected]=>
NULL
["placeholders":protected]=>
array(1) {
["a841cb121"]=>
string(3) "uri"
}
["_template":"yii\web\UrlRule":private]=>
string(19) "/news/author//"
["_routeRule":"yii\web\UrlRule":private]=>
NULL
["_paramRules":"yii\web\UrlRule":private]=>
array(1) {
["uri"]=>
string(13) "#^[\w\-/]+$#u"
}
["_routeParams":"yii\web\UrlRule":private]=>
array(0) {
}
}
[29]=>
object(frontend\components\SectionUrlRule)#95 (16) {
["suffix"]=>
string(1) "/"
["name"]=>
string(26) "news/feedback/"
["pattern"]=>
string(37) "#^news/feedback/(?P\d+)$#u"
["host"]=>
NULL
["route"]=>
string(19) "news/feedback/index"
["defaults"]=>
array(0) {
}
["verb"]=>
NULL
["mode"]=>
NULL
["encodeParams"]=>
bool(false)
["normalizer"]=>
NULL
["createStatus":protected]=>
NULL
["placeholders":protected]=>
array(1) {
["ae094d20d"]=>
string(6) "postId"
}
["_template":"yii\web\UrlRule":private]=>
string(24) "/news/feedback//"
["_routeRule":"yii\web\UrlRule":private]=>
NULL
["_paramRules":"yii\web\UrlRule":private]=>
array(1) {
["postId"]=>
string(8) "#^\d+$#u"
}
["_routeParams":"yii\web\UrlRule":private]=>
array(0) {
}
}
[30]=>
object(frontend\components\SectionUrlRule)#96 (16) {
["suffix"]=>
string(1) "/"
["name"]=>
string(44) "news/feedback/toggle//"
["pattern"]=>
string(63) "#^news/feedback/toggle/(?P\d+)/(?P\w+)$#u"
["host"]=>
NULL
["route"]=>
string(20) "news/feedback/toggle"
["defaults"]=>
array(0) {
}
["verb"]=>
NULL
["mode"]=>
NULL
["encodeParams"]=>
bool(false)
["normalizer"]=>
NULL
["createStatus":protected]=>
NULL
["placeholders":protected]=>
array(2) {
["ae094d20d"]=>
string(6) "postId"
["a8cde5729"]=>
string(4) "type"
}
["_template":"yii\web\UrlRule":private]=>
string(38) "/news/feedback/toggle///"
["_routeRule":"yii\web\UrlRule":private]=>
NULL
["_paramRules":"yii\web\UrlRule":private]=>
array(2) {
["postId"]=>
string(8) "#^\d+$#u"
["type"]=>
string(8) "#^\w+$#u"
}
["_routeParams":"yii\web\UrlRule":private]=>
array(0) {
}
}
[31]=>
object(frontend\components\SectionUrlRule)#97 (16) {
["suffix"]=>
string(1) "/"
["name"]=>
string(32) "news/feedback/reset/"
["pattern"]=>
string(43) "#^news/feedback/reset/(?P\d+)$#u"
["host"]=>
NULL
["route"]=>
string(19) "news/feedback/reset"
["defaults"]=>
array(0) {
}
["verb"]=>
NULL
["mode"]=>
NULL
["encodeParams"]=>
bool(false)
["normalizer"]=>
NULL
["createStatus":protected]=>
NULL
["placeholders":protected]=>
array(1) {
["ae094d20d"]=>
string(6) "postId"
}
["_template":"yii\web\UrlRule":private]=>
string(30) "/news/feedback/reset//"
["_routeRule":"yii\web\UrlRule":private]=>
NULL
["_paramRules":"yii\web\UrlRule":private]=>
array(1) {
["postId"]=>
string(8) "#^\d+$#u"
}
["_routeParams":"yii\web\UrlRule":private]=>
array(0) {
}
}
[32]=>
object(frontend\components\SectionUrlRule)#98 (16) {
["suffix"]=>
string(1) "/"
["name"]=>
string(16) "news/post/visits"
["pattern"]=>
string(21) "#^news/post/visits$#u"
["host"]=>
NULL
["route"]=>
string(16) "news/post/visits"
["defaults"]=>
array(0) {
}
["verb"]=>
NULL
["mode"]=>
NULL
["encodeParams"]=>
bool(true)
["normalizer"]=>
NULL
["createStatus":protected]=>
NULL
["placeholders":protected]=>
array(0) {
}
["_template":"yii\web\UrlRule":private]=>
string(18) "/news/post/visits/"
["_routeRule":"yii\web\UrlRule":private]=>
NULL
["_paramRules":"yii\web\UrlRule":private]=>
array(0) {
}
["_routeParams":"yii\web\UrlRule":private]=>
array(0) {
}
}
[33]=>
object(frontend\components\SectionUrlRule)#99 (16) {
["suffix"]=>
string(1) "/"
["name"]=>
string(15) "news/post/views"
["pattern"]=>
string(20) "#^news/post/views$#u"
["host"]=>
NULL
["route"]=>
string(15) "news/post/views"
["defaults"]=>
array(0) {
}
["verb"]=>
NULL
["mode"]=>
NULL
["encodeParams"]=>
bool(true)
["normalizer"]=>
NULL
["createStatus":protected]=>
NULL
["placeholders":protected]=>
array(0) {
}
["_template":"yii\web\UrlRule":private]=>
string(17) "/news/post/views/"
["_routeRule":"yii\web\UrlRule":private]=>
NULL
["_paramRules":"yii\web\UrlRule":private]=>
array(0) {
}
["_routeParams":"yii\web\UrlRule":private]=>
array(0) {
}
}
[34]=>
object(frontend\components\SectionUrlRule)#100 (16) {
["suffix"]=>
string(1) "/"
["name"]=>
string(19) "news/"
["pattern"]=>
string(33) "#^news/(?P[\w\-/]+)$#u"
["host"]=>
NULL
["route"]=>
string(18) "news/category/view"
["defaults"]=>
array(0) {
}
["verb"]=>
NULL
["mode"]=>
NULL
["encodeParams"]=>
bool(false)
["normalizer"]=>
NULL
["createStatus":protected]=>
NULL
["placeholders":protected]=>
array(1) {
["a841cb121"]=>
string(3) "uri"
}
["_template":"yii\web\UrlRule":private]=>
string(12) "/news//"
["_routeRule":"yii\web\UrlRule":private]=>
NULL
["_paramRules":"yii\web\UrlRule":private]=>
array(1) {
["uri"]=>
string(13) "#^[\w\-/]+$#u"
}
["_routeParams":"yii\web\UrlRule":private]=>
array(0) {
}
}
[35]=>
object(frontend\components\HtmlUrlRule)#101 (16) {
["suffix"]=>
string(5) ".html"
["name"]=>
string(23) "news/"
["pattern"]=>
string(37) "#^news/(?P[\w\-.html]+)$#u"
["host"]=>
NULL
["route"]=>
string(14) "news/post/view"
["defaults"]=>
array(0) {
}
["verb"]=>
NULL
["mode"]=>
NULL
["encodeParams"]=>
bool(false)
["normalizer"]=>
NULL
["createStatus":protected]=>
NULL
["placeholders":protected]=>
array(1) {
["a841cb121"]=>
string(3) "uri"
}
["_template":"yii\web\UrlRule":private]=>
string(12) "/news//"
["_routeRule":"yii\web\UrlRule":private]=>
NULL
["_paramRules":"yii\web\UrlRule":private]=>
array(1) {
["uri"]=>
string(17) "#^[\w\-.html]+$#u"
}
["_routeParams":"yii\web\UrlRule":private]=>
array(0) {
}
}
[36]=>
object(frontend\components\SectionUrlRule)#102 (16) {
["suffix"]=>
string(1) "/"
["name"]=>
string(8) "news/rss"
["pattern"]=>
string(13) "#^news/rss$#u"
["host"]=>
NULL
["route"]=>
string(16) "news/default/rss"
["defaults"]=>
array(0) {
}
["verb"]=>
NULL
["mode"]=>
NULL
["encodeParams"]=>
bool(true)
["normalizer"]=>
NULL
["createStatus":protected]=>
NULL
["placeholders":protected]=>
array(0) {
}
["_template":"yii\web\UrlRule":private]=>
string(10) "/news/rss/"
["_routeRule":"yii\web\UrlRule":private]=>
NULL
["_paramRules":"yii\web\UrlRule":private]=>
array(0) {
}
["_routeParams":"yii\web\UrlRule":private]=>
array(0) {
}
}
[37]=>
object(frontend\components\HtmlUrlRule)#103 (16) {
["suffix"]=>
string(5) ".html"
["name"]=>
string(17) "news/updatesignup"
["pattern"]=>
string(22) "#^news/updatesignup$#u"
["host"]=>
NULL
["route"]=>
string(25) "news/default/updatesignup"
["defaults"]=>
array(0) {
}
["verb"]=>
NULL
["mode"]=>
NULL
["encodeParams"]=>
bool(true)
["normalizer"]=>
NULL
["createStatus":protected]=>
NULL
["placeholders":protected]=>
array(0) {
}
["_template":"yii\web\UrlRule":private]=>
string(19) "/news/updatesignup/"
["_routeRule":"yii\web\UrlRule":private]=>
NULL
["_paramRules":"yii\web\UrlRule":private]=>
array(0) {
}
["_routeParams":"yii\web\UrlRule":private]=>
array(0) {
}
}
[38]=>
object(frontend\components\SectionUrlRule)#104 (16) {
["suffix"]=>
string(1) "/"
["name"]=>
string(22) "news/subscribe/"
["pattern"]=>
string(37) "#^news/subscribe/(?P.*)$#u"
["host"]=>
NULL
["route"]=>
string(22) "news/default/subscribe"
["defaults"]=>
array(0) {
}
["verb"]=>
NULL
["mode"]=>
NULL
["encodeParams"]=>
bool(true)
["normalizer"]=>
NULL
["createStatus":protected]=>
NULL
["placeholders":protected]=>
array(1) {
["abf396750"]=>
string(2) "id"
}
["_template":"yii\web\UrlRule":private]=>
string(21) "/news/subscribe//"
["_routeRule":"yii\web\UrlRule":private]=>
NULL
["_paramRules":"yii\web\UrlRule":private]=>
array(1) {
["id"]=>
string(7) "#^.*$#u"
}
["_routeParams":"yii\web\UrlRule":private]=>
array(0) {
}
}
[39]=>
object(frontend\components\SectionUrlRule)#105 (16) {
["suffix"]=>
string(1) "/"
["name"]=>
string(26) "news/summary/"
["pattern"]=>
string(40) "#^news/summary/(?P[\w\-]+)$#u"
["host"]=>
NULL
["route"]=>
string(17) "news/post/summary"
["defaults"]=>
array(0) {
}
["verb"]=>
NULL
["mode"]=>
NULL
["encodeParams"]=>
bool(true)
["normalizer"]=>
NULL
["createStatus":protected]=>
NULL
["placeholders":protected]=>
array(1) {
["a841cb121"]=>
string(3) "uri"
}
["_template":"yii\web\UrlRule":private]=>
string(20) "/news/summary//"
["_routeRule":"yii\web\UrlRule":private]=>
NULL
["_paramRules":"yii\web\UrlRule":private]=>
array(1) {
["uri"]=>
string(12) "#^[\w\-]+$#u"
}
["_routeParams":"yii\web\UrlRule":private]=>
array(0) {
}
}
[40]=>
object(frontend\components\SectionUrlRule)#106 (16) {
["suffix"]=>
string(1) "/"
["name"]=>
string(73) "news///"
["pattern"]=>
string(96) "#^news/(?P(post|comment))/(?P(create|update|delete))/(?P\d+)$#u"
["host"]=>
NULL
["route"]=>
string(26) "news//"
["defaults"]=>
array(0) {
}
["verb"]=>
NULL
["mode"]=>
NULL
["encodeParams"]=>
bool(true)
["normalizer"]=>
NULL
["createStatus":protected]=>
NULL
["placeholders":protected]=>
array(3) {
["a4cf2669a"]=>
string(10) "controller"
["a47cc8c92"]=>
string(6) "action"
["abf396750"]=>
string(2) "id"
}
["_template":"yii\web\UrlRule":private]=>
string(33) "/news////"
["_routeRule":"yii\web\UrlRule":private]=>
string(77) "#^news/(?P(post|comment))/(?P(create|update|delete))$#u"
["_paramRules":"yii\web\UrlRule":private]=>
array(1) {
["id"]=>
string(8) "#^\d+$#u"
}
["_routeParams":"yii\web\UrlRule":private]=>
array(2) {
["controller"]=>
string(12) ""
["action"]=>
string(8) ""
}
}
[41]=>
object(frontend\components\SectionUrlRule)#107 (16) {
["suffix"]=>
string(1) "/"
["name"]=>
string(30) "news/user/"
["pattern"]=>
string(41) "#^news/user/(?P(subscribe))$#u"
["host"]=>
NULL
["route"]=>
string(18) "news/user/"
["defaults"]=>
array(0) {
}
["verb"]=>
NULL
["mode"]=>
NULL
["encodeParams"]=>
bool(true)
["normalizer"]=>
NULL
["createStatus":protected]=>
NULL
["placeholders":protected]=>
array(1) {
["a47cc8c92"]=>
string(6) "action"
}
["_template":"yii\web\UrlRule":private]=>
string(20) "/news/user//"
["_routeRule":"yii\web\UrlRule":private]=>
string(41) "#^news/user/(?P(subscribe))$#u"
["_paramRules":"yii\web\UrlRule":private]=>
array(0) {
}
["_routeParams":"yii\web\UrlRule":private]=>
array(1) {
["action"]=>
string(8) ""
}
}
[42]=>
object(frontend\components\SectionUrlRule)#108 (16) {
["suffix"]=>
string(1) "/"
["name"]=>
string(25) "news/author/"
["pattern"]=>
string(39) "#^news/author/(?P[\w\-]+)$#u"
["host"]=>
NULL
["route"]=>
string(14) "news/user/view"
["defaults"]=>
array(0) {
}
["verb"]=>
NULL
["mode"]=>
NULL
["encodeParams"]=>
bool(true)
["normalizer"]=>
NULL
["createStatus":protected]=>
NULL
["placeholders":protected]=>
array(1) {
["a841cb121"]=>
string(3) "uri"
}
["_template":"yii\web\UrlRule":private]=>
string(19) "/news/author//"
["_routeRule":"yii\web\UrlRule":private]=>
NULL
["_paramRules":"yii\web\UrlRule":private]=>
array(1) {
["uri"]=>
string(12) "#^[\w\-]+$#u"
}
["_routeParams":"yii\web\UrlRule":private]=>
array(0) {
}
}
[43]=>
object(frontend\components\SectionUrlRule)#109 (16) {
["suffix"]=>
string(1) "/"
["name"]=>
string(22) "help/"
["pattern"]=>
string(33) "#^help/(?P(search))$#u"
["host"]=>
NULL
["route"]=>
string(21) "help/default/"
["defaults"]=>
array(0) {
}
["verb"]=>
NULL
["mode"]=>
NULL
["encodeParams"]=>
bool(true)
["normalizer"]=>
NULL
["createStatus":protected]=>
NULL
["placeholders":protected]=>
array(1) {
["a47cc8c92"]=>
string(6) "action"
}
["_template":"yii\web\UrlRule":private]=>
string(15) "/help//"
["_routeRule":"yii\web\UrlRule":private]=>
string(41) "#^help/default/(?P(search))$#u"
["_paramRules":"yii\web\UrlRule":private]=>
array(0) {
}
["_routeParams":"yii\web\UrlRule":private]=>
array(1) {
["action"]=>
string(8) ""
}
}
[44]=>
object(frontend\components\XmlUrlRule)#110 (16) {
["suffix"]=>
string(4) ".xml"
["name"]=>
string(4) "help"
["pattern"]=>
string(9) "#^help$#u"
["host"]=>
NULL
["route"]=>
string(25) "helpSiteMap/default/index"
["defaults"]=>
array(0) {
}
["verb"]=>
NULL
["mode"]=>
NULL
["encodeParams"]=>
bool(true)
["normalizer"]=>
NULL
["createStatus":protected]=>
NULL
["placeholders":protected]=>
array(0) {
}
["_template":"yii\web\UrlRule":private]=>
string(6) "/help/"
["_routeRule":"yii\web\UrlRule":private]=>
NULL
["_paramRules":"yii\web\UrlRule":private]=>
array(0) {
}
["_routeParams":"yii\web\UrlRule":private]=>
array(0) {
}
}
[45]=>
object(frontend\components\SectionUrlRule)#111 (16) {
["suffix"]=>
string(1) "/"
["name"]=>
string(4) "help"
["pattern"]=>
string(9) "#^help$#u"
["host"]=>
NULL
["route"]=>
string(18) "help/default/index"
["defaults"]=>
array(0) {
}
["verb"]=>
NULL
["mode"]=>
NULL
["encodeParams"]=>
bool(true)
["normalizer"]=>
NULL
["createStatus":protected]=>
NULL
["placeholders":protected]=>
array(0) {
}
["_template":"yii\web\UrlRule":private]=>
string(6) "/help/"
["_routeRule":"yii\web\UrlRule":private]=>
NULL
["_paramRules":"yii\web\UrlRule":private]=>
array(0) {
}
["_routeParams":"yii\web\UrlRule":private]=>
array(0) {
}
}
[46]=>
object(frontend\components\HtmlUrlRule)#112 (16) {
["suffix"]=>
string(5) ".html"
["name"]=>
string(45) "/help/"
["pattern"]=>
string(63) "#^(?P(?:(?!en).){2})/help/(?P[\w\-/]+)$#u"
["host"]=>
NULL
["route"]=>
string(14) "help/post/view"
["defaults"]=>
array(0) {
}
["verb"]=>
NULL
["mode"]=>
NULL
["encodeParams"]=>
bool(false)
["normalizer"]=>
NULL
["createStatus":protected]=>
NULL
["placeholders":protected]=>
array(2) {
["ad4db71b5"]=>
string(8) "language"
["a841cb121"]=>
string(3) "uri"
}
["_template":"yii\web\UrlRule":private]=>
string(23) "//help//"
["_routeRule":"yii\web\UrlRule":private]=>
NULL
["_paramRules":"yii\web\UrlRule":private]=>
array(2) {
["language"]=>
string(19) "#^(?:(?!en).){2}$#u"
["uri"]=>
string(13) "#^[\w\-/]+$#u"
}
["_routeParams":"yii\web\UrlRule":private]=>
array(0) {
}
}
[47]=>
object(frontend\components\HtmlUrlRule)#113 (16) {
["suffix"]=>
string(5) ".html"
["name"]=>
string(19) "help/"
["pattern"]=>
string(33) "#^help/(?P[\w\-/]+)$#u"
["host"]=>
NULL
["route"]=>
string(14) "help/post/view"
["defaults"]=>
array(0) {
}
["verb"]=>
NULL
["mode"]=>
NULL
["encodeParams"]=>
bool(false)
["normalizer"]=>
NULL
["createStatus":protected]=>
NULL
["placeholders":protected]=>
array(1) {
["a841cb121"]=>
string(3) "uri"
}
["_template":"yii\web\UrlRule":private]=>
string(12) "/help//"
["_routeRule":"yii\web\UrlRule":private]=>
NULL
["_paramRules":"yii\web\UrlRule":private]=>
array(1) {
["uri"]=>
string(13) "#^[\w\-/]+$#u"
}
["_routeParams":"yii\web\UrlRule":private]=>
array(0) {
}
}
[48]=>
object(frontend\components\SectionUrlRule)#114 (16) {
["suffix"]=>
string(1) "/"
["name"]=>
string(19) "help/"
["pattern"]=>
string(33) "#^help/(?P[\w\-/]+)$#u"
["host"]=>
NULL
["route"]=>
string(14) "help/post/view"
["defaults"]=>
array(0) {
}
["verb"]=>
NULL
["mode"]=>
NULL
["encodeParams"]=>
bool(true)
["normalizer"]=>
NULL
["createStatus":protected]=>
NULL
["placeholders":protected]=>
array(1) {
["a841cb121"]=>
string(3) "uri"
}
["_template":"yii\web\UrlRule":private]=>
string(12) "/help//"
["_routeRule":"yii\web\UrlRule":private]=>
NULL
["_paramRules":"yii\web\UrlRule":private]=>
array(1) {
["uri"]=>
string(13) "#^[\w\-/]+$#u"
}
["_routeParams":"yii\web\UrlRule":private]=>
array(0) {
}
}
[49]=>
object(frontend\components\SectionUrlRule)#115 (16) {
["suffix"]=>
string(1) "/"
["name"]=>
string(27) "help/category/"
["pattern"]=>
string(41) "#^help/category/(?P[\w\-]+)$#u"
["host"]=>
NULL
["route"]=>
string(18) "help/category/view"
["defaults"]=>
array(0) {
}
["verb"]=>
NULL
["mode"]=>
NULL
["encodeParams"]=>
bool(true)
["normalizer"]=>
NULL
["createStatus":protected]=>
NULL
["placeholders":protected]=>
array(1) {
["a841cb121"]=>
string(3) "uri"
}
["_template":"yii\web\UrlRule":private]=>
string(21) "/help/category//"
["_routeRule":"yii\web\UrlRule":private]=>
NULL
["_paramRules":"yii\web\UrlRule":private]=>
array(1) {
["uri"]=>
string(12) "#^[\w\-]+$#u"
}
["_routeParams":"yii\web\UrlRule":private]=>
array(0) {
}
}
[50]=>
object(frontend\components\SectionUrlRule)#116 (16) {
["suffix"]=>
string(1) "/"
["name"]=>
string(8) "help/rss"
["pattern"]=>
string(13) "#^help/rss$#u"
["host"]=>
NULL
["route"]=>
string(16) "help/default/rss"
["defaults"]=>
array(0) {
}
["verb"]=>
NULL
["mode"]=>
NULL
["encodeParams"]=>
bool(true)
["normalizer"]=>
NULL
["createStatus":protected]=>
NULL
["placeholders":protected]=>
array(0) {
}
["_template":"yii\web\UrlRule":private]=>
string(10) "/help/rss/"
["_routeRule":"yii\web\UrlRule":private]=>
NULL
["_paramRules":"yii\web\UrlRule":private]=>
array(0) {
}
["_routeParams":"yii\web\UrlRule":private]=>
array(0) {
}
}
[51]=>
object(frontend\components\HtmlUrlRule)#117 (16) {
["suffix"]=>
string(5) ".html"
["name"]=>
string(17) "help/updatesignup"
["pattern"]=>
string(22) "#^help/updatesignup$#u"
["host"]=>
NULL
["route"]=>
string(25) "help/default/updatesignup"
["defaults"]=>
array(0) {
}
["verb"]=>
NULL
["mode"]=>
NULL
["encodeParams"]=>
bool(true)
["normalizer"]=>
NULL
["createStatus":protected]=>
NULL
["placeholders":protected]=>
array(0) {
}
["_template":"yii\web\UrlRule":private]=>
string(19) "/help/updatesignup/"
["_routeRule":"yii\web\UrlRule":private]=>
NULL
["_paramRules":"yii\web\UrlRule":private]=>
array(0) {
}
["_routeParams":"yii\web\UrlRule":private]=>
array(0) {
}
}
[52]=>
object(frontend\components\SectionUrlRule)#118 (16) {
["suffix"]=>
string(1) "/"
["name"]=>
string(22) "help/subscribe/"
["pattern"]=>
string(37) "#^help/subscribe/(?P.*)$#u"
["host"]=>
NULL
["route"]=>
string(22) "help/default/subscribe"
["defaults"]=>
array(0) {
}
["verb"]=>
NULL
["mode"]=>
NULL
["encodeParams"]=>
bool(true)
["normalizer"]=>
NULL
["createStatus":protected]=>
NULL
["placeholders":protected]=>
array(1) {
["abf396750"]=>
string(2) "id"
}
["_template":"yii\web\UrlRule":private]=>
string(21) "/help/subscribe//"
["_routeRule":"yii\web\UrlRule":private]=>
NULL
["_paramRules":"yii\web\UrlRule":private]=>
array(1) {
["id"]=>
string(7) "#^.*$#u"
}
["_routeParams":"yii\web\UrlRule":private]=>
array(0) {
}
}
[53]=>
object(frontend\components\SectionUrlRule)#119 (16) {
["suffix"]=>
string(1) "/"
["name"]=>
string(26) "help/summary/"
["pattern"]=>
string(40) "#^help/summary/(?P[\w\-]+)$#u"
["host"]=>
NULL
["route"]=>
string(17) "help/post/summary"
["defaults"]=>
array(0) {
}
["verb"]=>
NULL
["mode"]=>
NULL
["encodeParams"]=>
bool(true)
["normalizer"]=>
NULL
["createStatus":protected]=>
NULL
["placeholders":protected]=>
array(1) {
["a841cb121"]=>
string(3) "uri"
}
["_template":"yii\web\UrlRule":private]=>
string(20) "/help/summary//"
["_routeRule":"yii\web\UrlRule":private]=>
NULL
["_paramRules":"yii\web\UrlRule":private]=>
array(1) {
["uri"]=>
string(12) "#^[\w\-]+$#u"
}
["_routeParams":"yii\web\UrlRule":private]=>
array(0) {
}
}
[54]=>
object(frontend\components\SectionUrlRule)#120 (16) {
["suffix"]=>
string(1) "/"
["name"]=>
string(73) "help///"
["pattern"]=>
string(96) "#^help/(?P(post|comment))/(?P(create|update|delete))/(?P\d+)$#u"
["host"]=>
NULL
["route"]=>
string(26) "help//"
["defaults"]=>
array(0) {
}
["verb"]=>
NULL
["mode"]=>
NULL
["encodeParams"]=>
bool(true)
["normalizer"]=>
NULL
["createStatus":protected]=>
NULL
["placeholders":protected]=>
array(3) {
["a4cf2669a"]=>
string(10) "controller"
["a47cc8c92"]=>
string(6) "action"
["abf396750"]=>
string(2) "id"
}
["_template":"yii\web\UrlRule":private]=>
string(33) "/help////"
["_routeRule":"yii\web\UrlRule":private]=>
string(77) "#^help/(?P(post|comment))/(?P(create|update|delete))$#u"
["_paramRules":"yii\web\UrlRule":private]=>
array(1) {
["id"]=>
string(8) "#^\d+$#u"
}
["_routeParams":"yii\web\UrlRule":private]=>
array(2) {
["controller"]=>
string(12) ""
["action"]=>
string(8) ""
}
}
[55]=>
object(frontend\components\SectionUrlRule)#121 (16) {
["suffix"]=>
string(1) "/"
["name"]=>
string(21) "help/user/(subscribe)"
["pattern"]=>
string(28) "#^help/user/\(subscribe\)$#u"
["host"]=>
NULL
["route"]=>
string(18) "help/user/"
["defaults"]=>
array(0) {
}
["verb"]=>
NULL
["mode"]=>
NULL
["encodeParams"]=>
bool(true)
["normalizer"]=>
NULL
["createStatus":protected]=>
NULL
["placeholders":protected]=>
array(0) {
}
["_template":"yii\web\UrlRule":private]=>
string(23) "/help/user/(subscribe)/"
["_routeRule":"yii\web\UrlRule":private]=>
string(23) "#^help/user/$#u"
["_paramRules":"yii\web\UrlRule":private]=>
array(0) {
}
["_routeParams":"yii\web\UrlRule":private]=>
array(1) {
["action"]=>
string(8) ""
}
}
[56]=>
object(frontend\components\SectionUrlRule)#122 (16) {
["suffix"]=>
string(1) "/"
["name"]=>
string(25) "help/author/"
["pattern"]=>
string(39) "#^help/author/(?P[\w\-]+)$#u"
["host"]=>
NULL
["route"]=>
string(14) "help/user/view"
["defaults"]=>
array(0) {
}
["verb"]=>
NULL
["mode"]=>
NULL
["encodeParams"]=>
bool(true)
["normalizer"]=>
NULL
["createStatus":protected]=>
NULL
["placeholders":protected]=>
array(1) {
["a841cb121"]=>
string(3) "uri"
}
["_template":"yii\web\UrlRule":private]=>
string(19) "/help/author//"
["_routeRule":"yii\web\UrlRule":private]=>
NULL
["_paramRules":"yii\web\UrlRule":private]=>
array(1) {
["uri"]=>
string(12) "#^[\w\-]+$#u"
}
["_routeParams":"yii\web\UrlRule":private]=>
array(0) {
}
}
[57]=>
object(frontend\components\SectionUrlRule)#123 (16) {
["suffix"]=>
string(1) "/"
["name"]=>
string(26) "seo-wiki/"
["pattern"]=>
string(37) "#^seo-wiki/(?P(search))$#u"
["host"]=>
NULL
["route"]=>
string(25) "seo-wiki/default/"
["defaults"]=>
array(0) {
}
["verb"]=>
NULL
["mode"]=>
NULL
["encodeParams"]=>
bool(true)
["normalizer"]=>
NULL
["createStatus":protected]=>
NULL
["placeholders":protected]=>
array(1) {
["a47cc8c92"]=>
string(6) "action"
}
["_template":"yii\web\UrlRule":private]=>
string(19) "/seo-wiki//"
["_routeRule":"yii\web\UrlRule":private]=>
string(45) "#^seo-wiki/default/(?P(search))$#u"
["_paramRules":"yii\web\UrlRule":private]=>
array(0) {
}
["_routeParams":"yii\web\UrlRule":private]=>
array(1) {
["action"]=>
string(8) ""
}
}
[58]=>
object(frontend\components\XmlUrlRule)#124 (16) {
["suffix"]=>
string(4) ".xml"
["name"]=>
string(8) "seo-wiki"
["pattern"]=>
string(13) "#^seo-wiki$#u"
["host"]=>
NULL
["route"]=>
string(28) "seowikiSiteMap/default/index"
["defaults"]=>
array(0) {
}
["verb"]=>
NULL
["mode"]=>
NULL
["encodeParams"]=>
bool(true)
["normalizer"]=>
NULL
["createStatus":protected]=>
NULL
["placeholders":protected]=>
array(0) {
}
["_template":"yii\web\UrlRule":private]=>
string(10) "/seo-wiki/"
["_routeRule":"yii\web\UrlRule":private]=>
NULL
["_paramRules":"yii\web\UrlRule":private]=>
array(0) {
}
["_routeParams":"yii\web\UrlRule":private]=>
array(0) {
}
}
[59]=>
object(frontend\components\SectionUrlRule)#125 (16) {
["suffix"]=>
string(1) "/"
["name"]=>
string(8) "seo-wiki"
["pattern"]=>
string(13) "#^seo-wiki$#u"
["host"]=>
NULL
["route"]=>
string(23) "seo-wiki/category/index"
["defaults"]=>
array(0) {
}
["verb"]=>
NULL
["mode"]=>
NULL
["encodeParams"]=>
bool(true)
["normalizer"]=>
NULL
["createStatus":protected]=>
NULL
["placeholders":protected]=>
array(0) {
}
["_template":"yii\web\UrlRule":private]=>
string(10) "/seo-wiki/"
["_routeRule":"yii\web\UrlRule":private]=>
NULL
["_paramRules":"yii\web\UrlRule":private]=>
array(0) {
}
["_routeParams":"yii\web\UrlRule":private]=>
array(0) {
}
}
[60]=>
object(frontend\components\SectionUrlRule)#126 (16) {
["suffix"]=>
string(1) "/"
["name"]=>
string(23) "seo-wiki/"
["pattern"]=>
string(37) "#^seo-wiki/(?P[\w\-/]+)$#u"
["host"]=>
NULL
["route"]=>
string(18) "seo-wiki/post/view"
["defaults"]=>
array(0) {
}
["verb"]=>
NULL
["mode"]=>
NULL
["encodeParams"]=>
bool(false)
["normalizer"]=>
NULL
["createStatus":protected]=>
NULL
["placeholders":protected]=>
array(1) {
["a841cb121"]=>
string(3) "uri"
}
["_template":"yii\web\UrlRule":private]=>
string(16) "/seo-wiki//"
["_routeRule":"yii\web\UrlRule":private]=>
NULL
["_paramRules":"yii\web\UrlRule":private]=>
array(1) {
["uri"]=>
string(13) "#^[\w\-/]+$#u"
}
["_routeParams":"yii\web\UrlRule":private]=>
array(0) {
}
}
[61]=>
object(frontend\components\HomeUrlRule)#127 (16) {
["suffix"]=>
NULL
["name"]=>
string(1) "/"
["pattern"]=>
string(5) "#^$#u"
["host"]=>
NULL
["route"]=>
string(18) "page/default/index"
["defaults"]=>
array(0) {
}
["verb"]=>
NULL
["mode"]=>
NULL
["encodeParams"]=>
bool(true)
["normalizer"]=>
NULL
["createStatus":protected]=>
NULL
["placeholders":protected]=>
array(0) {
}
["_template":"yii\web\UrlRule":private]=>
string(0) ""
["_routeRule":"yii\web\UrlRule":private]=>
NULL
["_paramRules":"yii\web\UrlRule":private]=>
array(0) {
}
["_routeParams":"yii\web\UrlRule":private]=>
array(0) {
}
}
[62]=>
object(frontend\components\HtmlUrlRule)#128 (16) {
["suffix"]=>
string(5) ".html"
["name"]=>
string(16) "/dsa-"
["pattern"]=>
string(29) "#^dsa-(?P[\d]+)$#u"
["host"]=>
NULL
["route"]=>
string(18) "page/default/index"
["defaults"]=>
array(0) {
}
["verb"]=>
NULL
["mode"]=>
NULL
["encodeParams"]=>
bool(true)
["normalizer"]=>
NULL
["createStatus":protected]=>
NULL
["placeholders":protected]=>
array(1) {
["a8e38c115"]=>
string(3) "dsa"
}
["_template":"yii\web\UrlRule":private]=>
string(11) "/dsa-/"
["_routeRule":"yii\web\UrlRule":private]=>
NULL
["_paramRules":"yii\web\UrlRule":private]=>
array(1) {
["dsa"]=>
string(10) "#^[\d]+$#u"
}
["_routeParams":"yii\web\UrlRule":private]=>
array(0) {
}
}
[63]=>
object(frontend\components\HtmlUrlRule)#129 (16) {
["suffix"]=>
string(5) ".html"
["name"]=>
int(62)
["pattern"]=>
string(7) "#^62$#u"
["host"]=>
NULL
["route"]=>
string(16) "page/default/404"
["defaults"]=>
array(0) {
}
["verb"]=>
NULL
["mode"]=>
NULL
["encodeParams"]=>
bool(true)
["normalizer"]=>
NULL
["createStatus":protected]=>
NULL
["placeholders":protected]=>
array(0) {
}
["_template":"yii\web\UrlRule":private]=>
string(4) "/62/"
["_routeRule":"yii\web\UrlRule":private]=>
NULL
["_paramRules":"yii\web\UrlRule":private]=>
array(0) {
}
["_routeParams":"yii\web\UrlRule":private]=>
array(0) {
}
}
[64]=>
object(yii\web\UrlRule)#130 (16) {
["name"]=>
string(4) "page"
["pattern"]=>
string(9) "#^page$#u"
["host"]=>
NULL
["route"]=>
string(16) "page/default/404"
["defaults"]=>
array(0) {
}
["suffix"]=>
NULL
["verb"]=>
NULL
["mode"]=>
NULL
["encodeParams"]=>
bool(true)
["normalizer"]=>
NULL
["createStatus":protected]=>
NULL
["placeholders":protected]=>
array(0) {
}
["_template":"yii\web\UrlRule":private]=>
string(6) "/page/"
["_routeRule":"yii\web\UrlRule":private]=>
NULL
["_paramRules":"yii\web\UrlRule":private]=>
array(0) {
}
["_routeParams":"yii\web\UrlRule":private]=>
array(0) {
}
}
[65]=>
object(frontend\components\HtmlUrlRule)#131 (16) {
["suffix"]=>
string(5) ".html"
["name"]=>
string(11) "fb-download"
["pattern"]=>
string(16) "#^fb-download$#u"
["host"]=>
NULL
["route"]=>
string(24) "page/default/fb-download"
["defaults"]=>
array(0) {
}
["verb"]=>
NULL
["mode"]=>
NULL
["encodeParams"]=>
bool(true)
["normalizer"]=>
NULL
["createStatus":protected]=>
NULL
["placeholders":protected]=>
array(0) {
}
["_template":"yii\web\UrlRule":private]=>
string(13) "/fb-download/"
["_routeRule":"yii\web\UrlRule":private]=>
NULL
["_paramRules":"yii\web\UrlRule":private]=>
array(0) {
}
["_routeParams":"yii\web\UrlRule":private]=>
array(0) {
}
}
[66]=>
object(frontend\components\HtmlUrlRule)#132 (16) {
["suffix"]=>
string(5) ".html"
["name"]=>
string(4) "auth"
["pattern"]=>
string(9) "#^auth$#u"
["host"]=>
NULL
["route"]=>
string(9) "site/auth"
["defaults"]=>
array(0) {
}
["verb"]=>
NULL
["mode"]=>
NULL
["encodeParams"]=>
bool(true)
["normalizer"]=>
NULL
["createStatus":protected]=>
NULL
["placeholders":protected]=>
array(0) {
}
["_template":"yii\web\UrlRule":private]=>
string(6) "/auth/"
["_routeRule":"yii\web\UrlRule":private]=>
NULL
["_paramRules":"yii\web\UrlRule":private]=>
array(0) {
}
["_routeParams":"yii\web\UrlRule":private]=>
array(0) {
}
}
[67]=>
object(frontend\components\SectionUrlRule)#133 (16) {
["suffix"]=>
string(1) "/"
["name"]=>
string(14) "//"
["pattern"]=>
string(23) "#^(?P(8))$#u"
["host"]=>
NULL
["route"]=>
string(18) "page/default/index"
["defaults"]=>
array(0) {
}
["verb"]=>
NULL
["mode"]=>
NULL
["encodeParams"]=>
bool(true)
["normalizer"]=>
NULL
["createStatus":protected]=>
NULL
["placeholders":protected]=>
array(1) {
["ac891575f"]=>
string(6) "abTest"
}
["_template":"yii\web\UrlRule":private]=>
string(10) "//"
["_routeRule":"yii\web\UrlRule":private]=>
NULL
["_paramRules":"yii\web\UrlRule":private]=>
array(1) {
["abTest"]=>
string(8) "#^(8)$#u"
}
["_routeParams":"yii\web\UrlRule":private]=>
array(0) {
}
}
[68]=>
object(frontend\components\HtmlUrlRule)#134 (16) {
["suffix"]=>
string(5) ".html"
["name"]=>
string(3) "xdc"
["pattern"]=>
string(8) "#^xdc$#u"
["host"]=>
NULL
["route"]=>
string(16) "page/default/xdc"
["defaults"]=>
array(0) {
}
["verb"]=>
NULL
["mode"]=>
NULL
["encodeParams"]=>
bool(true)
["normalizer"]=>
NULL
["createStatus":protected]=>
NULL
["placeholders":protected]=>
array(0) {
}
["_template":"yii\web\UrlRule":private]=>
string(5) "/xdc/"
["_routeRule":"yii\web\UrlRule":private]=>
NULL
["_paramRules":"yii\web\UrlRule":private]=>
array(0) {
}
["_routeParams":"yii\web\UrlRule":private]=>
array(0) {
}
}
[69]=>
object(frontend\components\HtmlUrlRule)#135 (16) {
["suffix"]=>
string(5) ".html"
["name"]=>
string(22) "subscribe-to-2checkout"
["pattern"]=>
string(27) "#^subscribe-to-2checkout$#u"
["host"]=>
NULL
["route"]=>
string(35) "page/default/subscribe-to-2checkout"
["defaults"]=>
array(0) {
}
["verb"]=>
NULL
["mode"]=>
NULL
["encodeParams"]=>
bool(true)
["normalizer"]=>
NULL
["createStatus":protected]=>
NULL
["placeholders":protected]=>
array(0) {
}
["_template":"yii\web\UrlRule":private]=>
string(24) "/subscribe-to-2checkout/"
["_routeRule":"yii\web\UrlRule":private]=>
NULL
["_paramRules":"yii\web\UrlRule":private]=>
array(0) {
}
["_routeParams":"yii\web\UrlRule":private]=>
array(0) {
}
}
[70]=>
object(frontend\components\HtmlUrlRule)#136 (16) {
["suffix"]=>
string(5) ".html"
["name"]=>
string(15) "beta-wsa-update"
["pattern"]=>
string(20) "#^beta-wsa-update$#u"
["host"]=>
NULL
["route"]=>
string(28) "page/default/beta-wsa-update"
["defaults"]=>
array(0) {
}
["verb"]=>
NULL
["mode"]=>
NULL
["encodeParams"]=>
bool(true)
["normalizer"]=>
NULL
["createStatus":protected]=>
NULL
["placeholders":protected]=>
array(0) {
}
["_template":"yii\web\UrlRule":private]=>
string(17) "/beta-wsa-update/"
["_routeRule":"yii\web\UrlRule":private]=>
NULL
["_paramRules":"yii\web\UrlRule":private]=>
array(0) {
}
["_routeParams":"yii\web\UrlRule":private]=>
array(0) {
}
}
[71]=>
object(frontend\components\HtmlUrlRule)#137 (16) {
["suffix"]=>
string(5) ".html"
["name"]=>
string(26) "covid-19-anti-crisis-offer"
["pattern"]=>
string(31) "#^covid-19-anti-crisis-offer$#u"
["host"]=>
NULL
["route"]=>
string(36) "page/default/covid-anti-crisis-offer"
["defaults"]=>
array(0) {
}
["verb"]=>
NULL
["mode"]=>
NULL
["encodeParams"]=>
bool(true)
["normalizer"]=>
NULL
["createStatus":protected]=>
NULL
["placeholders":protected]=>
array(0) {
}
["_template":"yii\web\UrlRule":private]=>
string(28) "/covid-19-anti-crisis-offer/"
["_routeRule":"yii\web\UrlRule":private]=>
NULL
["_paramRules":"yii\web\UrlRule":private]=>
array(0) {
}
["_routeParams":"yii\web\UrlRule":private]=>
array(0) {
}
}
[72]=>
object(frontend\components\HtmlUrlRule)#138 (16) {
["suffix"]=>
string(5) ".html"
["name"]=>
string(19) "manage-subscription"
["pattern"]=>
string(24) "#^manage-subscription$#u"
["host"]=>
NULL
["route"]=>
string(32) "page/default/manage-subscription"
["defaults"]=>
array(0) {
}
["verb"]=>
NULL
["mode"]=>
NULL
["encodeParams"]=>
bool(true)
["normalizer"]=>
NULL
["createStatus":protected]=>
NULL
["placeholders":protected]=>
array(0) {
}
["_template":"yii\web\UrlRule":private]=>
string(21) "/manage-subscription/"
["_routeRule":"yii\web\UrlRule":private]=>
NULL
["_paramRules":"yii\web\UrlRule":private]=>
array(0) {
}
["_routeParams":"yii\web\UrlRule":private]=>
array(0) {
}
}
[73]=>
object(frontend\components\HtmlUrlRule)#139 (16) {
["suffix"]=>
string(5) ".html"
["name"]=>
string(24) "fb-app-blog-notification"
["pattern"]=>
string(29) "#^fb-app-blog-notification$#u"
["host"]=>
NULL
["route"]=>
string(37) "page/default/fb-app-blog-notification"
["defaults"]=>
array(0) {
}
["verb"]=>
NULL
["mode"]=>
NULL
["encodeParams"]=>
bool(true)
["normalizer"]=>
NULL
["createStatus":protected]=>
NULL
["placeholders":protected]=>
array(0) {
}
["_template":"yii\web\UrlRule":private]=>
string(26) "/fb-app-blog-notification/"
["_routeRule":"yii\web\UrlRule":private]=>
NULL
["_paramRules":"yii\web\UrlRule":private]=>
array(0) {
}
["_routeParams":"yii\web\UrlRule":private]=>
array(0) {
}
}
[74]=>
object(frontend\components\HtmlUrlRule)#140 (16) {
["suffix"]=>
string(5) ".html"
["name"]=>
string(40) "/seo-spyglass/free-backlink-checker-tool"
["pattern"]=>
string(44) "#^seo-spyglass/free-backlink-checker-tool$#u"
["host"]=>
NULL
["route"]=>
string(26) "page/blex/backlink-checker"
["defaults"]=>
array(0) {
}
["verb"]=>
NULL
["mode"]=>
NULL
["encodeParams"]=>
bool(true)
["normalizer"]=>
NULL
["createStatus":protected]=>
NULL
["placeholders":protected]=>
array(0) {
}
["_template":"yii\web\UrlRule":private]=>
string(41) "/seo-spyglass/free-backlink-checker-tool/"
["_routeRule":"yii\web\UrlRule":private]=>
NULL
["_paramRules":"yii\web\UrlRule":private]=>
array(0) {
}
["_routeParams":"yii\web\UrlRule":private]=>
array(0) {
}
}
[75]=>
object(frontend\components\HtmlUrlRule)#141 (16) {
["suffix"]=>
string(5) ".html"
["name"]=>
string(19) "/blex/backlink-info"
["pattern"]=>
string(23) "#^blex/backlink-info$#u"
["host"]=>
NULL
["route"]=>
string(23) "page/blex/backlink-info"
["defaults"]=>
array(0) {
}
["verb"]=>
NULL
["mode"]=>
NULL
["encodeParams"]=>
bool(true)
["normalizer"]=>
NULL
["createStatus":protected]=>
NULL
["placeholders":protected]=>
array(0) {
}
["_template":"yii\web\UrlRule":private]=>
string(20) "/blex/backlink-info/"
["_routeRule":"yii\web\UrlRule":private]=>
NULL
["_paramRules":"yii\web\UrlRule":private]=>
array(0) {
}
["_routeParams":"yii\web\UrlRule":private]=>
array(0) {
}
}
[76]=>
object(frontend\components\SectionUrlRule)#142 (16) {
["suffix"]=>
string(1) "/"
["name"]=>
string(23) "onboarding-video-course"
["pattern"]=>
string(28) "#^onboarding-video-course$#u"
["host"]=>
NULL
["route"]=>
string(29) "page/default/youtube-redirect"
["defaults"]=>
array(0) {
}
["verb"]=>
NULL
["mode"]=>
NULL
["encodeParams"]=>
bool(true)
["normalizer"]=>
NULL
["createStatus":protected]=>
NULL
["placeholders":protected]=>
array(0) {
}
["_template":"yii\web\UrlRule":private]=>
string(25) "/onboarding-video-course/"
["_routeRule":"yii\web\UrlRule":private]=>
NULL
["_paramRules":"yii\web\UrlRule":private]=>
array(0) {
}
["_routeParams":"yii\web\UrlRule":private]=>
array(0) {
}
}
[77]=>
object(frontend\components\SectionUrlRule)#143 (16) {
["suffix"]=>
string(1) "/"
["name"]=>
string(24) "embed/"
["pattern"]=>
string(35) "#^embed/(?P[\w\d\-]+)$#u"
["host"]=>
NULL
["route"]=>
string(19) "page/embed/"
["defaults"]=>
array(0) {
}
["verb"]=>
NULL
["mode"]=>
NULL
["encodeParams"]=>
bool(true)
["normalizer"]=>
NULL
["createStatus":protected]=>
NULL
["placeholders":protected]=>
array(1) {
["a47cc8c92"]=>
string(6) "action"
}
["_template":"yii\web\UrlRule":private]=>
string(16) "/embed//"
["_routeRule":"yii\web\UrlRule":private]=>
string(40) "#^page/embed/(?P[\w\d\-]+)$#u"
["_paramRules":"yii\web\UrlRule":private]=>
array(0) {
}
["_routeParams":"yii\web\UrlRule":private]=>
array(1) {
["action"]=>
string(8) ""
}
}
[78]=>
object(frontend\components\HtmlUrlRule)#144 (16) {
["suffix"]=>
string(5) ".html"
["name"]=>
string(32) "press/linkassistant-2.3.2-win-pr"
["pattern"]=>
string(39) "#^press/linkassistant-2\.3\.2-win-pr$#u"
["host"]=>
NULL
["route"]=>
string(18) "page/default/press"
["defaults"]=>
array(1) {
["view"]=>
string(26) "linkassistant-2.3.2-win-pr"
}
["verb"]=>
NULL
["mode"]=>
NULL
["encodeParams"]=>
bool(false)
["normalizer"]=>
NULL
["createStatus":protected]=>
NULL
["placeholders":protected]=>
array(0) {
}
["_template":"yii\web\UrlRule":private]=>
string(34) "/press/linkassistant-2.3.2-win-pr/"
["_routeRule":"yii\web\UrlRule":private]=>
NULL
["_paramRules":"yii\web\UrlRule":private]=>
array(0) {
}
["_routeParams":"yii\web\UrlRule":private]=>
array(0) {
}
}
[79]=>
object(frontend\components\HtmlUrlRule)#145 (16) {
["suffix"]=>
string(5) ".html"
["name"]=>
string(16) "news/penguin-3.0"
["pattern"]=>
string(22) "#^news/penguin-3\.0$#u"
["host"]=>
NULL
["route"]=>
string(17) "page/default/news"
["defaults"]=>
array(1) {
["view"]=>
string(11) "penguin-3.0"
}
["verb"]=>
NULL
["mode"]=>
NULL
["encodeParams"]=>
bool(false)
["normalizer"]=>
NULL
["createStatus":protected]=>
NULL
["placeholders":protected]=>
array(0) {
}
["_template":"yii\web\UrlRule":private]=>
string(18) "/news/penguin-3.0/"
["_routeRule":"yii\web\UrlRule":private]=>
NULL
["_paramRules":"yii\web\UrlRule":private]=>
array(0) {
}
["_routeParams":"yii\web\UrlRule":private]=>
array(0) {
}
}
[80]=>
object(frontend\components\HtmlUrlRule)#146 (16) {
["suffix"]=>
string(5) ".html"
["name"]=>
string(27) "rank-tracker/local-rankings"
["pattern"]=>
string(32) "#^rank-tracker/local-rankings$#u"
["host"]=>
NULL
["route"]=>
string(22) "page/rank-tracker/page"
["defaults"]=>
array(1) {
["view"]=>
string(14) "local-rankings"
}
["verb"]=>
NULL
["mode"]=>
NULL
["encodeParams"]=>
bool(false)
["normalizer"]=>
NULL
["createStatus":protected]=>
NULL
["placeholders":protected]=>
array(0) {
}
["_template":"yii\web\UrlRule":private]=>
string(29) "/rank-tracker/local-rankings/"
["_routeRule":"yii\web\UrlRule":private]=>
NULL
["_paramRules":"yii\web\UrlRule":private]=>
array(0) {
}
["_routeParams":"yii\web\UrlRule":private]=>
array(0) {
}
}
[81]=>
object(frontend\components\SectionUrlRule)#147 (16) {
["suffix"]=>
string(1) "/"
["name"]=>
string(16) "keyword-research"
["pattern"]=>
string(21) "#^keyword-research$#u"
["host"]=>
NULL
["route"]=>
string(22) "page/rank-tracker/page"
["defaults"]=>
array(1) {
["view"]=>
string(21) "keyword-research-tool"
}
["verb"]=>
NULL
["mode"]=>
NULL
["encodeParams"]=>
bool(false)
["normalizer"]=>
NULL
["createStatus":protected]=>
NULL
["placeholders":protected]=>
array(0) {
}
["_template":"yii\web\UrlRule":private]=>
string(18) "/keyword-research/"
["_routeRule":"yii\web\UrlRule":private]=>
NULL
["_paramRules":"yii\web\UrlRule":private]=>
array(0) {
}
["_routeParams":"yii\web\UrlRule":private]=>
array(0) {
}
}
[82]=>
object(frontend\components\HtmlUrlRule)#148 (16) {
["suffix"]=>
string(5) ".html"
["name"]=>
string(28) "keyword-research/keyword-gap"
["pattern"]=>
string(33) "#^keyword-research/keyword-gap$#u"
["host"]=>
NULL
["route"]=>
string(22) "page/rank-tracker/page"
["defaults"]=>
array(1) {
["view"]=>
string(11) "keyword-gap"
}
["verb"]=>
NULL
["mode"]=>
NULL
["encodeParams"]=>
bool(false)
["normalizer"]=>
NULL
["createStatus":protected]=>
NULL
["placeholders":protected]=>
array(0) {
}
["_template":"yii\web\UrlRule":private]=>
string(30) "/keyword-research/keyword-gap/"
["_routeRule":"yii\web\UrlRule":private]=>
NULL
["_paramRules":"yii\web\UrlRule":private]=>
array(0) {
}
["_routeParams":"yii\web\UrlRule":private]=>
array(0) {
}
}
[83]=>
object(frontend\components\HtmlUrlRule)#149 (16) {
["suffix"]=>
string(5) ".html"
["name"]=>
string(40) "keyword-research/keyword-difficulty-tool"
["pattern"]=>
string(45) "#^keyword-research/keyword-difficulty-tool$#u"
["host"]=>
NULL
["route"]=>
string(22) "page/rank-tracker/page"
["defaults"]=>
array(1) {
["view"]=>
string(23) "keyword-difficulty-tool"
}
["verb"]=>
NULL
["mode"]=>
NULL
["encodeParams"]=>
bool(false)
["normalizer"]=>
NULL
["createStatus":protected]=>
NULL
["placeholders":protected]=>
array(0) {
}
["_template":"yii\web\UrlRule":private]=>
string(42) "/keyword-research/keyword-difficulty-tool/"
["_routeRule":"yii\web\UrlRule":private]=>
NULL
["_paramRules":"yii\web\UrlRule":private]=>
array(0) {
}
["_routeParams":"yii\web\UrlRule":private]=>
array(0) {
}
}
[84]=>
object(frontend\components\HtmlUrlRule)#150 (16) {
["suffix"]=>
string(5) ".html"
["name"]=>
string(32) "keyword-research/competitor-tool"
["pattern"]=>
string(37) "#^keyword-research/competitor-tool$#u"
["host"]=>
NULL
["route"]=>
string(22) "page/rank-tracker/page"
["defaults"]=>
array(1) {
["view"]=>
string(15) "competitor-tool"
}
["verb"]=>
NULL
["mode"]=>
NULL
["encodeParams"]=>
bool(false)
["normalizer"]=>
NULL
["createStatus":protected]=>
NULL
["placeholders":protected]=>
array(0) {
}
["_template":"yii\web\UrlRule":private]=>
string(34) "/keyword-research/competitor-tool/"
["_routeRule":"yii\web\UrlRule":private]=>
NULL
["_paramRules":"yii\web\UrlRule":private]=>
array(0) {
}
["_routeParams":"yii\web\UrlRule":private]=>
array(0) {
}
}
[85]=>
object(frontend\components\SectionUrlRule)#151 (16) {
["suffix"]=>
string(1) "/"
["name"]=>
string(16) "new-rank-tracker"
["pattern"]=>
string(21) "#^new-rank-tracker$#u"
["host"]=>
NULL
["route"]=>
string(22) "page/rank-tracker/page"
["defaults"]=>
array(1) {
["view"]=>
string(16) "new-rank-tracker"
}
["verb"]=>
NULL
["mode"]=>
NULL
["encodeParams"]=>
bool(false)
["normalizer"]=>
NULL
["createStatus":protected]=>
NULL
["placeholders":protected]=>
array(0) {
}
["_template":"yii\web\UrlRule":private]=>
string(18) "/new-rank-tracker/"
["_routeRule":"yii\web\UrlRule":private]=>
NULL
["_paramRules":"yii\web\UrlRule":private]=>
array(0) {
}
["_routeParams":"yii\web\UrlRule":private]=>
array(0) {
}
}
[86]=>
object(frontend\components\XmlUrlRule)#152 (16) {
["suffix"]=>
string(4) ".xml"
["name"]=>
string(7) "sitemap"
["pattern"]=>
string(12) "#^sitemap$#u"
["host"]=>
NULL
["route"]=>
string(20) "siteMap/default/pack"
["defaults"]=>
array(0) {
}
["verb"]=>
NULL
["mode"]=>
NULL
["encodeParams"]=>
bool(true)
["normalizer"]=>
NULL
["createStatus":protected]=>
NULL
["placeholders":protected]=>
array(0) {
}
["_template":"yii\web\UrlRule":private]=>
string(9) "/sitemap/"
["_routeRule":"yii\web\UrlRule":private]=>
NULL
["_paramRules":"yii\web\UrlRule":private]=>
array(0) {
}
["_routeParams":"yii\web\UrlRule":private]=>
array(0) {
}
}
[87]=>
object(frontend\components\XmlUrlRule)#153 (16) {
["suffix"]=>
string(4) ".xml"
["name"]=>
string(18) "sitemap-"
["pattern"]=>
string(34) "#^sitemap-(?P[^\/]+)$#u"
["host"]=>
NULL
["route"]=>
string(28) "siteMap/default/multilingual"
["defaults"]=>
array(0) {
}
["verb"]=>
NULL
["mode"]=>
NULL
["encodeParams"]=>
bool(true)
["normalizer"]=>
NULL
["createStatus":protected]=>
NULL
["placeholders":protected]=>
array(1) {
["ad4db71b5"]=>
string(8) "language"
}
["_template":"yii\web\UrlRule":private]=>
string(20) "/sitemap-/"
["_routeRule":"yii\web\UrlRule":private]=>
NULL
["_paramRules":"yii\web\UrlRule":private]=>
array(1) {
["language"]=>
string(0) ""
}
["_routeParams":"yii\web\UrlRule":private]=>
array(0) {
}
}
[88]=>
object(frontend\components\SectionUrlRule)#154 (16) {
["suffix"]=>
string(1) "/"
["name"]=>
string(5) "press"
["pattern"]=>
string(10) "#^press$#u"
["host"]=>
NULL
["route"]=>
string(18) "page/default/press"
["defaults"]=>
array(1) {
["view"]=>
string(5) "index"
}
["verb"]=>
NULL
["mode"]=>
NULL
["encodeParams"]=>
bool(true)
["normalizer"]=>
NULL
["createStatus":protected]=>
NULL
["placeholders":protected]=>
array(0) {
}
["_template":"yii\web\UrlRule":private]=>
string(7) "/press/"
["_routeRule":"yii\web\UrlRule":private]=>
NULL
["_paramRules":"yii\web\UrlRule":private]=>
array(0) {
}
["_routeParams":"yii\web\UrlRule":private]=>
array(0) {
}
}
[89]=>
object(frontend\components\SectionUrlRule)#155 (16) {
["suffix"]=>
string(1) "/"
["name"]=>
string(18) "sample-seo-reports"
["pattern"]=>
string(23) "#^sample-seo-reports$#u"
["host"]=>
NULL
["route"]=>
string(31) "page/default/sample-seo-reports"
["defaults"]=>
array(1) {
["view"]=>
string(5) "index"
}
["verb"]=>
NULL
["mode"]=>
NULL
["encodeParams"]=>
bool(true)
["normalizer"]=>
NULL
["createStatus":protected]=>
NULL
["placeholders":protected]=>
array(0) {
}
["_template":"yii\web\UrlRule":private]=>
string(20) "/sample-seo-reports/"
["_routeRule":"yii\web\UrlRule":private]=>
NULL
["_paramRules":"yii\web\UrlRule":private]=>
array(0) {
}
["_routeParams":"yii\web\UrlRule":private]=>
array(0) {
}
}
[90]=>
object(frontend\components\SectionUrlRule)#156 (16) {
["suffix"]=>
string(1) "/"
["name"]=>
string(12) "seo-workflow"
["pattern"]=>
string(17) "#^seo-workflow$#u"
["host"]=>
NULL
["route"]=>
string(25) "page/default/seo-workflow"
["defaults"]=>
array(1) {
["view"]=>
string(5) "index"
}
["verb"]=>
NULL
["mode"]=>
NULL
["encodeParams"]=>
bool(true)
["normalizer"]=>
NULL
["createStatus":protected]=>
NULL
["placeholders":protected]=>
array(0) {
}
["_template":"yii\web\UrlRule":private]=>
string(14) "/seo-workflow/"
["_routeRule":"yii\web\UrlRule":private]=>
NULL
["_paramRules":"yii\web\UrlRule":private]=>
array(0) {
}
["_routeParams":"yii\web\UrlRule":private]=>
array(0) {
}
}
[91]=>
object(frontend\components\HtmlUrlRule)#157 (16) {
["suffix"]=>
string(5) ".html"
["name"]=>
string(12) "xmas-upgrade"
["pattern"]=>
string(17) "#^xmas-upgrade$#u"
["host"]=>
NULL
["route"]=>
string(17) "page/default/page"
["defaults"]=>
array(4) {
["view"]=>
string(12) "xmas-upgrade"
["packs"]=>
array(10) {
[0]=>
string(13) "SPS_PRO_MONTH"
[1]=>
string(13) "SPS_ENT_MONTH"
[2]=>
string(12) "SPS_PRO_YEAR"
[3]=>
string(12) "SPS_ENT_YEAR"
[4]=>
string(14) "SPS_PRO_2YEARS"
[5]=>
string(14) "SPS_ENT_2YEARS"
[6]=>
string(14) "SPS_PRO_3YEARS"
[7]=>
string(14) "SPS_ENT_3YEARS"
[8]=>
string(7) "SPS_PRO"
[9]=>
string(7) "SPS_ENT"
}
["overrideVersion"]=>
string(4) "xmas"
["options"]=>
array(1) {
["currentPlan"]=>
string(16) "currentPlanPrice"
}
}
["verb"]=>
NULL
["mode"]=>
NULL
["encodeParams"]=>
bool(true)
["normalizer"]=>
NULL
["createStatus":protected]=>
NULL
["placeholders":protected]=>
array(0) {
}
["_template":"yii\web\UrlRule":private]=>
string(14) "/xmas-upgrade/"
["_routeRule":"yii\web\UrlRule":private]=>
NULL
["_paramRules":"yii\web\UrlRule":private]=>
array(0) {
}
["_routeParams":"yii\web\UrlRule":private]=>
array(0) {
}
}
[92]=>
object(frontend\components\HtmlUrlRule)#158 (16) {
["suffix"]=>
string(5) ".html"
["name"]=>
string(13) "upgrade-offer"
["pattern"]=>
string(18) "#^upgrade-offer$#u"
["host"]=>
NULL
["route"]=>
string(17) "page/default/page"
["defaults"]=>
array(4) {
["view"]=>
string(13) "upgrade-offer"
["packs"]=>
array(10) {
[0]=>
string(13) "SPS_PRO_MONTH"
[1]=>
string(13) "SPS_ENT_MONTH"
[2]=>
string(12) "SPS_PRO_YEAR"
[3]=>
string(12) "SPS_ENT_YEAR"
[4]=>
string(14) "SPS_PRO_2YEARS"
[5]=>
string(14) "SPS_ENT_2YEARS"
[6]=>
string(14) "SPS_PRO_3YEARS"
[7]=>
string(14) "SPS_ENT_3YEARS"
[8]=>
string(7) "SPS_PRO"
[9]=>
string(7) "SPS_ENT"
}
["overrideVersion"]=>
string(4) "xmas"
["options"]=>
array(1) {
["currentPlan"]=>
string(16) "currentPlanPrice"
}
}
["verb"]=>
NULL
["mode"]=>
NULL
["encodeParams"]=>
bool(true)
["normalizer"]=>
NULL
["createStatus":protected]=>
NULL
["placeholders":protected]=>
array(0) {
}
["_template":"yii\web\UrlRule":private]=>
string(15) "/upgrade-offer/"
["_routeRule":"yii\web\UrlRule":private]=>
NULL
["_paramRules":"yii\web\UrlRule":private]=>
array(0) {
}
["_routeParams":"yii\web\UrlRule":private]=>
array(0) {
}
}
[93]=>
object(frontend\components\HtmlUrlRule)#159 (16) {
["suffix"]=>
string(5) ".html"
["name"]=>
string(16) "upgrade-discount"
["pattern"]=>
string(21) "#^upgrade-discount$#u"
["host"]=>
NULL
["route"]=>
string(17) "page/default/page"
["defaults"]=>
array(3) {
["view"]=>
string(16) "upgrade-discount"
["packs"]=>
array(2) {
[0]=>
string(12) "SPS_PRO_YEAR"
[1]=>
string(12) "SPS_ENT_YEAR"
}
["options"]=>
array(1) {
["currentPlan"]=>
string(16) "currentPlanPrice"
}
}
["verb"]=>
NULL
["mode"]=>
NULL
["encodeParams"]=>
bool(true)
["normalizer"]=>
NULL
["createStatus":protected]=>
NULL
["placeholders":protected]=>
array(0) {
}
["_template":"yii\web\UrlRule":private]=>
string(18) "/upgrade-discount/"
["_routeRule":"yii\web\UrlRule":private]=>
NULL
["_paramRules":"yii\web\UrlRule":private]=>
array(0) {
}
["_routeParams":"yii\web\UrlRule":private]=>
array(0) {
}
}
[94]=>
object(frontend\components\SectionUrlRule)#160 (16) {
["suffix"]=>
string(1) "/"
["name"]=>
string(26) ""
["pattern"]=>
string(39) "#^(?P(facebook|partners))$#u"
["host"]=>
NULL
["route"]=>
string(17) "page/default/page"
["defaults"]=>
array(0) {
}
["verb"]=>
NULL
["mode"]=>
NULL
["encodeParams"]=>
bool(true)
["normalizer"]=>
NULL
["createStatus":protected]=>
NULL
["placeholders":protected]=>
array(1) {
["afefdab8e"]=>
string(4) "view"
}
["_template":"yii\web\UrlRule":private]=>
string(8) "//"
["_routeRule":"yii\web\UrlRule":private]=>
NULL
["_paramRules":"yii\web\UrlRule":private]=>
array(1) {
["view"]=>
string(24) "#^(facebook|partners)$#u"
}
["_routeParams":"yii\web\UrlRule":private]=>
array(0) {
}
}
[95]=>
object(frontend\components\HtmlUrlRule)#161 (16) {
["suffix"]=>
string(5) ".html"
["name"]=>
string(99) ""
["pattern"]=>
string(112) "#^(?Ppartners/(bloggertipstricks|trafficcrow|noshameincome|bloggingx|bloggingwizard|yourmetalife))$#u"
["host"]=>
NULL
["route"]=>
string(17) "page/default/page"
["defaults"]=>
array(0) {
}
["verb"]=>
NULL
["mode"]=>
NULL
["encodeParams"]=>
bool(true)
["normalizer"]=>
NULL
["createStatus":protected]=>
NULL
["placeholders":protected]=>
array(1) {
["afefdab8e"]=>
string(4) "view"
}
["_template":"yii\web\UrlRule":private]=>
string(8) "//"
["_routeRule":"yii\web\UrlRule":private]=>
NULL
["_paramRules":"yii\web\UrlRule":private]=>
array(1) {
["view"]=>
string(97) "#^partners/(bloggertipstricks|trafficcrow|noshameincome|bloggingx|bloggingwizard|yourmetalife)$#u"
}
["_routeParams":"yii\web\UrlRule":private]=>
array(0) {
}
}
[96]=>
object(frontend\components\HtmlUrlRule)#162 (16) {
["suffix"]=>
string(5) ".html"
["name"]=>
string(57) "partners/"
["pattern"]=>
string(68) "#^partners/(?P(affiliate-resource-center|non-english))$#u"
["host"]=>
NULL
["route"]=>
string(18) "affiliate/"
["defaults"]=>
array(0) {
}
["verb"]=>
NULL
["mode"]=>
NULL
["encodeParams"]=>
bool(true)
["normalizer"]=>
NULL
["createStatus":protected]=>
NULL
["placeholders":protected]=>
array(1) {
["a47cc8c92"]=>
string(6) "action"
}
["_template":"yii\web\UrlRule":private]=>
string(19) "/partners//"
["_routeRule":"yii\web\UrlRule":private]=>
string(69) "#^affiliate/(?P(affiliate-resource-center|non-english))$#u"
["_paramRules":"yii\web\UrlRule":private]=>
array(0) {
}
["_routeParams":"yii\web\UrlRule":private]=>
array(1) {
["action"]=>
string(8) ""
}
}
[97]=>
object(frontend\components\HtmlUrlRule)#163 (16) {
["suffix"]=>
string(5) ".html"
["name"]=>
string(25) "partners/"
["pattern"]=>
string(38) "#^partners/(?P[\w\-\/]+)$#u"
["host"]=>
NULL
["route"]=>
string(14) "affiliate/page"
["defaults"]=>
array(0) {
}
["verb"]=>
NULL
["mode"]=>
NULL
["encodeParams"]=>
bool(true)
["normalizer"]=>
NULL
["createStatus":protected]=>
NULL
["placeholders":protected]=>
array(1) {
["afefdab8e"]=>
string(4) "view"
}
["_template":"yii\web\UrlRule":private]=>
string(17) "/partners//"
["_routeRule":"yii\web\UrlRule":private]=>
NULL
["_paramRules":"yii\web\UrlRule":private]=>
array(1) {
["view"]=>
string(14) "#^[\w\-\/]+$#u"
}
["_routeParams":"yii\web\UrlRule":private]=>
array(0) {
}
}
[98]=>
object(frontend\components\HtmlUrlRule)#164 (16) {
["suffix"]=>
string(5) ".html"
["name"]=>
string(7) "appsumo"
["pattern"]=>
string(12) "#^appsumo$#u"
["host"]=>
NULL
["route"]=>
string(26) "promotion/default/app-sumo"
["defaults"]=>
array(0) {
}
["verb"]=>
NULL
["mode"]=>
NULL
["encodeParams"]=>
bool(true)
["normalizer"]=>
NULL
["createStatus":protected]=>
NULL
["placeholders":protected]=>
array(0) {
}
["_template":"yii\web\UrlRule":private]=>
string(9) "/appsumo/"
["_routeRule":"yii\web\UrlRule":private]=>
NULL
["_paramRules":"yii\web\UrlRule":private]=>
array(0) {
}
["_routeParams":"yii\web\UrlRule":private]=>
array(0) {
}
}
[99]=>
object(frontend\components\HtmlUrlRule)#165 (16) {
["suffix"]=>
string(5) ".html"
["name"]=>
string(19) "appsumo-seospyglass"
["pattern"]=>
string(24) "#^appsumo-seospyglass$#u"
["host"]=>
NULL
["route"]=>
string(30) "promotion/default/app-sumo-ssg"
["defaults"]=>
array(0) {
}
["verb"]=>
NULL
["mode"]=>
NULL
["encodeParams"]=>
bool(true)
["normalizer"]=>
NULL
["createStatus":protected]=>
NULL
["placeholders":protected]=>
array(0) {
}
["_template":"yii\web\UrlRule":private]=>
string(21) "/appsumo-seospyglass/"
["_routeRule":"yii\web\UrlRule":private]=>
NULL
["_paramRules":"yii\web\UrlRule":private]=>
array(0) {
}
["_routeParams":"yii\web\UrlRule":private]=>
array(0) {
}
}
[100]=>
object(frontend\components\HtmlUrlRule)#166 (16) {
["suffix"]=>
string(5) ".html"
["name"]=>
string(12) "briefcase-wa"
["pattern"]=>
string(17) "#^briefcase-wa$#u"
["host"]=>
NULL
["route"]=>
string(27) "promotion/default/briefcase"
["defaults"]=>
array(0) {
}
["verb"]=>
NULL
["mode"]=>
NULL
["encodeParams"]=>
bool(true)
["normalizer"]=>
NULL
["createStatus":protected]=>
NULL
["placeholders":protected]=>
array(0) {
}
["_template":"yii\web\UrlRule":private]=>
string(14) "/briefcase-wa/"
["_routeRule":"yii\web\UrlRule":private]=>
NULL
["_paramRules":"yii\web\UrlRule":private]=>
array(0) {
}
["_routeParams":"yii\web\UrlRule":private]=>
array(0) {
}
}
[101]=>
object(frontend\components\HtmlUrlRule)#167 (16) {
["suffix"]=>
string(5) ".html"
["name"]=>
string(8) "trialjar"
["pattern"]=>
string(13) "#^trialjar$#u"
["host"]=>
NULL
["route"]=>
string(26) "promotion/default/trialjar"
["defaults"]=>
array(0) {
}
["verb"]=>
NULL
["mode"]=>
NULL
["encodeParams"]=>
bool(true)
["normalizer"]=>
NULL
["createStatus":protected]=>
NULL
["placeholders":protected]=>
array(0) {
}
["_template":"yii\web\UrlRule":private]=>
string(10) "/trialjar/"
["_routeRule":"yii\web\UrlRule":private]=>
NULL
["_paramRules":"yii\web\UrlRule":private]=>
array(0) {
}
["_routeParams":"yii\web\UrlRule":private]=>
array(0) {
}
}
[102]=>
object(frontend\components\HtmlUrlRule)#168 (16) {
["suffix"]=>
string(5) ".html"
["name"]=>
string(10) "saasmantra"
["pattern"]=>
string(15) "#^saasmantra$#u"
["host"]=>
NULL
["route"]=>
string(29) "promotion/default/saas-mantra"
["defaults"]=>
array(0) {
}
["verb"]=>
NULL
["mode"]=>
NULL
["encodeParams"]=>
bool(true)
["normalizer"]=>
NULL
["createStatus":protected]=>
NULL
["placeholders":protected]=>
array(0) {
}
["_template":"yii\web\UrlRule":private]=>
string(12) "/saasmantra/"
["_routeRule":"yii\web\UrlRule":private]=>
NULL
["_paramRules":"yii\web\UrlRule":private]=>
array(0) {
}
["_routeParams":"yii\web\UrlRule":private]=>
array(0) {
}
}
[103]=>
object(frontend\components\HtmlUrlRule)#169 (16) {
["suffix"]=>
string(5) ".html"
["name"]=>
string(40) "learning-hub/seo-academy/30-day-seo-plan"
["pattern"]=>
string(45) "#^learning-hub/seo-academy/30-day-seo-plan$#u"
["host"]=>
NULL
["route"]=>
string(24) "academy/default/tutorial"
["defaults"]=>
array(0) {
}
["verb"]=>
NULL
["mode"]=>
NULL
["encodeParams"]=>
bool(true)
["normalizer"]=>
NULL
["createStatus":protected]=>
NULL
["placeholders":protected]=>
array(0) {
}
["_template":"yii\web\UrlRule":private]=>
string(42) "/learning-hub/seo-academy/30-day-seo-plan/"
["_routeRule":"yii\web\UrlRule":private]=>
NULL
["_paramRules":"yii\web\UrlRule":private]=>
array(0) {
}
["_routeParams":"yii\web\UrlRule":private]=>
array(0) {
}
}
[104]=>
object(frontend\components\SectionUrlRule)#170 (16) {
["suffix"]=>
string(1) "/"
["name"]=>
string(40) "learning-hub/seo-academy/30-day-seo-plan"
["pattern"]=>
string(45) "#^learning-hub/seo-academy/30-day-seo-plan$#u"
["host"]=>
NULL
["route"]=>
string(24) "academy/default/tutorial"
["defaults"]=>
array(0) {
}
["verb"]=>
NULL
["mode"]=>
NULL
["encodeParams"]=>
bool(true)
["normalizer"]=>
NULL
["createStatus":protected]=>
NULL
["placeholders":protected]=>
array(0) {
}
["_template":"yii\web\UrlRule":private]=>
string(42) "/learning-hub/seo-academy/30-day-seo-plan/"
["_routeRule":"yii\web\UrlRule":private]=>
NULL
["_paramRules":"yii\web\UrlRule":private]=>
array(0) {
}
["_routeParams":"yii\web\UrlRule":private]=>
array(0) {
}
}
[105]=>
object(frontend\components\HtmlUrlRule)#171 (16) {
["suffix"]=>
string(5) ".html"
["name"]=>
string(60) "learning-hub/seo-academy/30-day-seo-plan/day-"
["pattern"]=>
string(74) "#^learning-hub/seo-academy/30-day-seo-plan/day-(?P[\w\-\/]+)$#u"
["host"]=>
NULL
["route"]=>
string(24) "academy/default/tutorial"
["defaults"]=>
array(0) {
}
["verb"]=>
NULL
["mode"]=>
NULL
["encodeParams"]=>
bool(true)
["normalizer"]=>
NULL
["createStatus":protected]=>
NULL
["placeholders":protected]=>
array(1) {
["ae5a02990"]=>
string(3) "day"
}
["_template":"yii\web\UrlRule":private]=>
string(52) "/learning-hub/seo-academy/30-day-seo-plan/day-/"
["_routeRule":"yii\web\UrlRule":private]=>
NULL
["_paramRules":"yii\web\UrlRule":private]=>
array(1) {
["day"]=>
string(14) "#^[\w\-\/]+$#u"
}
["_routeParams":"yii\web\UrlRule":private]=>
array(0) {
}
}
[106]=>
object(frontend\components\SectionUrlRule)#172 (16) {
["suffix"]=>
string(1) "/"
["name"]=>
string(22) ""
["pattern"]=>
string(29) "#^(?P(partner))$#u"
["host"]=>
NULL
["route"]=>
string(18) "/index"
["defaults"]=>
array(0) {
}
["verb"]=>
NULL
["mode"]=>
NULL
["encodeParams"]=>
bool(true)
["normalizer"]=>
NULL
["createStatus":protected]=>
NULL
["placeholders":protected]=>
array(1) {
["a4cf2669a"]=>
string(10) "controller"
}
["_template":"yii\web\UrlRule":private]=>
string(14) "//"
["_routeRule":"yii\web\UrlRule":private]=>
string(35) "#^(?P(partner))/index$#u"
["_paramRules":"yii\web\UrlRule":private]=>
array(0) {
}
["_routeParams":"yii\web\UrlRule":private]=>
array(1) {
["controller"]=>
string(12) ""
}
}
[107]=>
object(frontend\components\HtmlUrlRule)#173 (16) {
["suffix"]=>
string(5) ".html"
["name"]=>
string(68) "/"
["pattern"]=>
string(81) "#^(?P(partner))/(?P(login|logout|report|profile|keygen))$#u"
["host"]=>
NULL
["route"]=>
string(21) "/"
["defaults"]=>
array(0) {
}
["verb"]=>
NULL
["mode"]=>
NULL
["encodeParams"]=>
bool(true)
["normalizer"]=>
NULL
["createStatus":protected]=>
NULL
["placeholders":protected]=>
array(2) {
["a4cf2669a"]=>
string(10) "controller"
["a47cc8c92"]=>
string(6) "action"
}
["_template":"yii\web\UrlRule":private]=>
string(23) "///"
["_routeRule":"yii\web\UrlRule":private]=>
string(81) "#^(?P(partner))/(?P(login|logout|report|profile|keygen))$#u"
["_paramRules":"yii\web\UrlRule":private]=>
array(0) {
}
["_routeParams":"yii\web\UrlRule":private]=>
array(2) {
["controller"]=>
string(12) ""
["action"]=>
string(8) ""
}
}
[108]=>
object(frontend\components\SectionUrlRule)#174 (16) {
["suffix"]=>
string(1) "/"
["name"]=>
string(15) "partner/key-gen"
["pattern"]=>
string(20) "#^partner/key-gen$#u"
["host"]=>
NULL
["route"]=>
string(14) "partner/keygen"
["defaults"]=>
array(0) {
}
["verb"]=>
NULL
["mode"]=>
NULL
["encodeParams"]=>
bool(true)
["normalizer"]=>
NULL
["createStatus":protected]=>
NULL
["placeholders":protected]=>
array(0) {
}
["_template":"yii\web\UrlRule":private]=>
string(17) "/partner/key-gen/"
["_routeRule":"yii\web\UrlRule":private]=>
NULL
["_paramRules":"yii\web\UrlRule":private]=>
array(0) {
}
["_routeParams":"yii\web\UrlRule":private]=>
array(0) {
}
}
[109]=>
object(frontend\components\HtmlUrlRule)#175 (16) {
["suffix"]=>
string(5) ".html"
["name"]=>
string(27) "-algo-updates"
["pattern"]=>
string(42) "#^(?P[\w\-\/]+)-algo-updates$#u"
["host"]=>
NULL
["route"]=>
string(26) "page/search-engine/updates"
["defaults"]=>
array(0) {
}
["verb"]=>
NULL
["mode"]=>
NULL
["encodeParams"]=>
bool(true)
["normalizer"]=>
NULL
["createStatus":protected]=>
NULL
["placeholders":protected]=>
array(1) {
["a7813ad1d"]=>
string(2) "se"
}
["_template":"yii\web\UrlRule":private]=>
string(19) "/-algo-updates/"
["_routeRule":"yii\web\UrlRule":private]=>
NULL
["_paramRules":"yii\web\UrlRule":private]=>
array(1) {
["se"]=>
string(14) "#^[\w\-\/]+$#u"
}
["_routeParams":"yii\web\UrlRule":private]=>
array(0) {
}
}
[110]=>
object(frontend\components\SectionUrlRule)#176 (16) {
["suffix"]=>
string(1) "/"
["name"]=>
string(81) ""
["pattern"]=>
string(88) "#^(?P(linkassistant|rank-tracker|seo-spyglass|website-auditor|buzzbundle))$#u"
["host"]=>
NULL
["route"]=>
string(23) "page//index"
["defaults"]=>
array(0) {
}
["verb"]=>
NULL
["mode"]=>
NULL
["encodeParams"]=>
bool(true)
["normalizer"]=>
NULL
["createStatus":protected]=>
NULL
["placeholders":protected]=>
array(1) {
["a4cf2669a"]=>
string(10) "controller"
}
["_template":"yii\web\UrlRule":private]=>
string(14) "//"
["_routeRule":"yii\web\UrlRule":private]=>
string(99) "#^page/(?P(linkassistant|rank-tracker|seo-spyglass|website-auditor|buzzbundle))/index$#u"
["_paramRules":"yii\web\UrlRule":private]=>
array(0) {
}
["_routeParams":"yii\web\UrlRule":private]=>
array(1) {
["controller"]=>
string(12) ""
}
}
[111]=>
object(frontend\components\SectionUrlRule)#177 (16) {
["suffix"]=>
string(1) "/"
["name"]=>
string(21) ""
["pattern"]=>
string(28) "#^(?Prankdots)$#u"
["host"]=>
NULL
["route"]=>
string(23) "page//index"
["defaults"]=>
array(0) {
}
["verb"]=>
NULL
["mode"]=>
NULL
["encodeParams"]=>
bool(true)
["normalizer"]=>
NULL
["createStatus":protected]=>
NULL
["placeholders":protected]=>
array(1) {
["a4cf2669a"]=>
string(10) "controller"
}
["_template":"yii\web\UrlRule":private]=>
string(14) "//"
["_routeRule":"yii\web\UrlRule":private]=>
string(39) "#^page/(?Prankdots)/index$#u"
["_paramRules":"yii\web\UrlRule":private]=>
array(0) {
}
["_routeParams":"yii\web\UrlRule":private]=>
array(1) {
["controller"]=>
string(12) ""
}
}
[112]=>
object(frontend\components\SectionUrlRule)#178 (16) {
["suffix"]=>
string(1) "/"
["name"]=>
string(30) "ref/"
["pattern"]=>
string(40) "#^ref/(?P[0-9a-zA-Z]{16}+)$#u"
["host"]=>
NULL
["route"]=>
string(25) "page/referrer/ref-payment"
["defaults"]=>
array(0) {
}
["verb"]=>
NULL
["mode"]=>
NULL
["encodeParams"]=>
bool(true)
["normalizer"]=>
NULL
["createStatus":protected]=>
NULL
["placeholders":protected]=>
array(1) {
["a5eb342c2"]=>
string(7) "refCode"
}
["_template":"yii\web\UrlRule":private]=>
string(15) "/ref//"
["_routeRule":"yii\web\UrlRule":private]=>
NULL
["_paramRules":"yii\web\UrlRule":private]=>
array(1) {
["refCode"]=>
string(21) "#^[0-9a-zA-Z]{16}+$#u"
}
["_routeParams":"yii\web\UrlRule":private]=>
array(0) {
}
}
[113]=>
object(frontend\components\SectionUrlRule)#179 (16) {
["suffix"]=>
string(1) "/"
["name"]=>
string(38) "referrer/"
["pattern"]=>
string(44) "#^referrer/(?P[0-9a-zA-Z]{16})$#u"
["host"]=>
NULL
["route"]=>
string(29) "page/referrer/by-cabinet-code"
["defaults"]=>
array(0) {
}
["verb"]=>
NULL
["mode"]=>
NULL
["encodeParams"]=>
bool(true)
["normalizer"]=>
object(belprime\sps\translator\url\UrlNormalizer)#180 (5) {
["lowerCase"]=>
bool(false)
["ignoreRedirectPatterns"]=>
array(0) {
}
["collapseSlashes"]=>
bool(true)
["normalizeTrailingSlash"]=>
bool(true)
["action"]=>
int(301)
}
["createStatus":protected]=>
NULL
["placeholders":protected]=>
array(1) {
["a582493cd"]=>
string(11) "cabinetCode"
}
["_template":"yii\web\UrlRule":private]=>
string(24) "/referrer//"
["_routeRule":"yii\web\UrlRule":private]=>
NULL
["_paramRules":"yii\web\UrlRule":private]=>
array(1) {
["cabinetCode"]=>
string(20) "#^[0-9a-zA-Z]{16}$#u"
}
["_routeParams":"yii\web\UrlRule":private]=>
array(0) {
}
}
[114]=>
object(frontend\components\HtmlUrlRule)#181 (16) {
["suffix"]=>
string(5) ".html"
["name"]=>
string(86) "/