object(yii\web\NotFoundHttpException)#121 (8) {
  ["statusCode"] => int(404)
  ["message":protected] => string(0) ""
  ["string":"Exception":private] => string(0) ""
  ["code":protected] => int(0)
  ["file":protected] => string(78) "/data/web/zhengmu/yiiframework/modules/mobile/controllers/ColumnController.php"
  ["line":protected] => int(45)
  ["trace":"Exception":private] => array(7) {
    [0] => array(4) {
      ["function"] => string(11) "actionIndex"
      ["class"] => string(47) "app\modules\mobile\controllers\ColumnController"
      ["type"] => string(2) "->"
      ["args"] => array(2) {
        [0] => string(2) "27"
        [1] => int(1)
      }
    }
    [1] => array(4) {
      ["file"] => string(72) "/data/web/zhengmu/yiiframework/vendor/yiisoft/yii2/base/InlineAction.php"
      ["line"] => int(57)
      ["function"] => string(20) "call_user_func_array"
      ["args"] => array(2) {
        [0] => array(2) {
          [0] => object(app\modules\mobile\controllers\ColumnController)#109 (16) {
            ["request"] => object(yii\web\Request)#10 (34) {
              ["enableCsrfValidation"] => bool(false)
              ["csrfParam"] => string(5) "_csrf"
              ["csrfCookie"] => array(1) {
                ["httpOnly"] => bool(true)
              }
              ["enableCsrfCookie"] => bool(true)
              ["enableCookieValidation"] => bool(true)
              ["cookieValidationKey"] => string(32) "rJ9H7j2a1y3MkNxw6QEQPtI0YEm4NZ71"
              ["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)#101 (1) {
                ["_headers":"yii\web\HeaderCollection":private] => array(5) {
                  ["host"] => array(1) {
                    [0] => string(15) "m.cnzhengmu.com"
                  }
                  ["user-agent"] => array(1) {
                    [0] => string(9) "claudebot"
                  }
                  ["accept"] => array(1) {
                    [0] => string(3) "*/*"
                  }
                  ["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] => string(23) "https://m.cnzhengmu.com"
              ["_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(12) "list-27.html"
              ["_url":"yii\web\Request":private] => string(13) "/list-27.html"
              ["_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
              ["_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
            }
            ["params"] => array(19) {
              ["webName"] => string(15) "中华整木网"
              ["webKeywords"] => string(236) "整木定制行业门户网站,中华整木网,整木网,整体家居网,中国整木家装网,整木家装,实木定制,整木家居,整木家装品牌,实木定制品牌,整木定制,整体家居,整装,全屋定制,整木家居品牌"
              ["webDescription"] => string(570) "中华整木网是中国整木定制行业门户网站,国内最大的整木定制行业产品供求、品牌营销、招商加盟、供应链平台。提供关于整木家装,实木定制,整木家居,整木家装品牌,整体家居,整装,实木定制品牌,整木家居品牌,整木家装十大品牌等相关资讯,收录了包括简木、图森、国振、关亨美学木作、首席公馆、木斯特、戈雅印象、实木堂、豪利、艾博尼斯、冠宁木业、泰尚名居、风鸟、德嘉印象、迈丹尼等诸多整木家居品牌的最新信息。"
              ["webUrl"] => string(25) "https://www.cnzhengmu.com"
              ["webEmail"] => string(12) "xfdsh@qq.com"
              ["pageFirst"] => int(1)
              ["pageLimit"] => int(10)
              ["upload"] => array(3) {
                ["path"] => string(7) "uploads"
                ["fileType"] => array(6) {
                  [0] => string(3) "jpg"
                  [1] => string(4) "jpeg"
                  [2] => string(3) "png"
                  [3] => string(3) "gif"
                  [4] => string(3) "mp3"
                  [5] => string(3) "mp4"
                }
                ["remoteUrl"] => string(26) "https://file.cnzhengmu.com"
              }
              ["user"] => array(3) {
                ["loginExpire"] => int(28800)
                ["passwordResetTokenExpire"] => int(3600)
                ["initPassword"] => string(9) "i@shenyao"
              }
              ["sms"] => array(3) {
                ["isOpen"] => int(1)
                ["baidu"] => array(6) {
                  ["accessKey"] => string(32) "c9d457de5b9d49628edc57a593714900"
                  ["secretKey"] => string(32) "d0b1199cf3804678a74a087d98a3e999"
                  ["invokeId"] => string(18) "xzvvLgVW-1uPG-zucI"
                  ["verifyCodeTemplateCode"] => string(10) "M49C23E31F"
                  ["initPasswordTemplateCode"] => string(10) "MFA1B5675C"
                  ["createAccountTemplateCode"] => string(10) "M3E0B0FD97"
                }
                ["sendMaxLimit"] => int(1000)
              }
              ["mail"] => array(5) {
                ["isOpen"] => int(1)
                ["manage"] => array(2) {
                  ["name"] => string(31) "中华整木网-系统管理员"
                  ["email"] => string(12) "xfdsh@qq.com"
                }
                ["support"] => array(2) {
                  ["name"] => string(28) "中华整木网-技术中心"
                  ["email"] => string(21) "service@cnzhengmu.com"
                }
                ["service"] => array(2) {
                  ["name"] => string(28) "中华整木网-客服中心"
                  ["email"] => string(21) "service@cnzhengmu.com"
                }
                ["sendMaxLimit"] => int(100)
              }
              ["safeModule"] => array(2) {
                [0] => string(8) "document"
                [1] => string(3) "api"
              }
              ["safeController"] => array(12) {
                [0] => string(11) "/site/index"
                [1] => string(11) "/site/error"
                [2] => string(11) "/user/login"
                [3] => string(11) "/user/oauth"
                [4] => string(21) "/user/get-mobile-code"
                [5] => string(26) "/user/validate-mobile-code"
                [6] => string(20) "/user/reset-password"
                [7] => string(11) "/view/login"
                [8] => string(23) "/view/retrieve-password"
                [9] => string(17) "/ajax/get-captcha"
                [10] => string(19) "/ajax/check-captcha"
                [11] => string(19) "/ajax/get-wallpaper"
              }
              ["defaultAuth"] => array(5) {
                [0] => string(19) "/user/get-user-data"
                [1] => string(12) "/user/logout"
                [2] => string(22) "/user/get-contact-list"
                [3] => string(21) "/user/get-online-list"
                [4] => string(10) "/menu/tree"
              }
              ["errorCode"] => array(2) {
                ["userNotLogin"] => int(300)
                ["userNotPermission"] => int(301)
              }
              ["wechat"] => array(9) {
                ["appId"] => string(18) "wxceb2477874afd6c7"
                ["appSecret"] => string(32) "63fec594350a7d8826838f9b5872771b"
                ["token"] => string(32) "K7R9G7nWsnC8Jj7jSGJC7lLedd90b2sL"
                ["encodingAESKey"] => string(43) "mMsAPsB30yMsSM3S004a0OaamyvA0SATSm0mMMPyAMF"
                ["merchantId"] => string(10) "1508630771"
                ["apiCert"] => string(32) "YXU1dkFYu5J2bPfFV2J81TroKg11iVIq"
                ["sslKey"] => string(64) "/data/web/zhengmu/yiiframework/config/prod/cert/apiclientKey.pem"
                ["sslCert"] => string(65) "/data/web/zhengmu/yiiframework/config/prod/cert/apiclientCert.pem"
                ["cachePath"] => string(52) "/data/web/zhengmu/web/../yiiframework/runtime/wechat"
              }
              ["map"] => array(3) {
                ["qq"] => array(1) {
                  ["key"] => string(35) "T5KBZ-F33R3-YUO3Z-3CHYK-YGFJF-VCBEL"
                }
                ["baidu"] => array(1) {
                  ["ak"] => string(32) "O6DLzFCOXTWoPFGjZfyDvSaxQGaC5IYk"
                }
                ["amap"] => array(1) {
                  ["key"] => string(32) "7e6eef8329895afc9ac1e2a86a739235"
                }
              }
              ["qiniu"] => array(5) {
                ["isOpen"] => int(0)
                ["accessKey"] => string(0) ""
                ["secretKey"] => string(0) ""
                ["domain"] => string(26) "https://file.cnzhengmu.com"
                ["bucket"] => string(7) "zhengmu"
              }
              ["baidu"] => array(1) {
                ["zhanzhang"] => array(1) {
                  ["token"] => string(16) "mV0tYmTAGs4IQHXN"
                }
              }
            }
            ["moduleParams"] => array(6) {
              ["demo"] => array(2) {
                ["key1"] => string(6) "value1"
                ["key2"] => string(6) "value2"
              }
              ["codeMsg"] => array(5) {
                [1] => string(12) "非法请求"
                [2] => string(12) "未知错误"
                [3] => string(12) "系统错误"
                [4] => string(12) "拒绝访问"
                [5] => string(12) "内部错误"
              }
              ["safeController"] => array(9) {
                [0] => string(18) "/mobile/user/login"
                [1] => string(24) "/mobile/user/quick-login"
                [2] => string(21) "/mobile/user/register"
                [3] => string(30) "/mobile/user/retrieve-password"
                [4] => string(18) "/mobile/user/oauth"
                [5] => string(25) "/mobile/user/oauth-create"
                [6] => string(23) "/mobile/user/oauth-bind"
                [7] => string(20) "/mobile/ajax/captcha"
                [8] => string(26) "/mobile/ajax/check-captcha"
              }
              ["errorCode"] => array(2) {
                ["userNotLogin"] => int(300)
                ["userNotPermission"] => int(301)
              }
              ["weixin"] => array(5) {
                ["appId"] => string(18) "wxa2b745742ef1ddd1"
                ["appSecret"] => string(32) "6f2efb22411f9bba9e6abead90384e24"
                ["token"] => string(18) "rh1vMi9NCsRkF6rkg2"
                ["encodingAESKey"] => string(43) "LINqd9F5pX1yqnhX2geBqZfSVpeL4eR2Z8pYuEnhaT0"
                ["templateMsg"] => array(1) {
                  ["sign"] => string(43) "RP0CjEp9e-68Qp3fGj6nsTMSmRjioULUJogy0W-NY4Q"
                }
              }
              ["baidu"] => array(1) {
                ["map"] => array(1) {
                  ["apiAk"] => string(32) "Lb5KavMt6TgFBMDkWYyZ5GqCNNG9wzhf"
                }
              }
            }
            ["webData"] => array(32) {
              ["web_api_key"] => string(16) "pXnVnhqBD7EWrTE6"
              ["web_status"] => string(1) "1"
              ["web_reason"] => string(30) "网站升级中,请稍后..."
              ["web_jump_url"] => string(17) "http://www.gov.cn"
              ["web_title"] => string(9) "整木网"
              ["web_url"] => string(25) "https://www.cnzhengmu.com"
              ["web_name"] => string(9) "整木网"
              ["web_seo_title"] => string(31) "|整木定制行业门户网站"
              ["web_company"] => string(15) "中华整木网"
              ["web_address"] => string(75) "中国·浙江省湖州市南浔区人瑞路9999号南方新世界B栋11楼"
              ["web_zip_code"] => string(6) "200000"
              ["web_telephone"] => string(15) "86-0572-3711633"
              ["web_fax"] => string(15) "86-0572-3711633"
              ["web_email"] => string(25) "zhengmuwang@cnzhengmu.com"
              ["web_qq"] => string(10) "1930302345"
              ["web_keywords"] => string(236) "整木定制行业门户网站,中华整木网,整木网,整体家居网,中国整木家装网,整木家装,实木定制,整木家居,整木家装品牌,实木定制品牌,整木定制,整体家居,整装,全屋定制,整木家居品牌"
              ["web_description"] => string(540) "整木网是中国整木定制行业门户网站,国内知名的整木定制行业产品供求、品牌营销、招商加盟、供应链平台。提供关于整木家装,实木定制,整木家居,整木家装品牌,整体家居,整装,实木定制品牌,整木家居品牌等相关资讯,收录了包括简木、图森、国振、关亨美学木作、首席公馆、木斯特、戈雅印象、实木堂、豪利、艾博尼斯、冠宁木业、泰尚名居、风鸟、德嘉印象、迈丹尼等诸多整木家居品牌的最新信息。 "
              ["web_stat"] => string(0) ""
              ["web_icp_number"] => string(24) "浙ICP备2021004169号-1"
              ["web_video"] => string(0) ""
              ["web_logo"] => string(53) "/uploads/photo/20211110/WechatIMG2678130859557701.png"
              ["web_small_logo"] => string(53) "/uploads/photo/20211110/WechatIMG2678130915055879.png"
              ["web_big_logo"] => string(53) "/uploads/photo/20211110/WechatIMG2678130922959450.png"
              ["web_map_coordinate"] => string(7) "100|100"
              ["web_detail"] => string(0) ""
              ["web_wechat_qrcode"] => string(39) "/uploads/file/20181205/104834356958.jpg"
              ["web_mobile_logo"] => string(53) "/uploads/photo/20211110/WechatIMG2678130930161986.png"
              ["web_mobile_qrcode"] => string(49) "/uploads/file/20181122/1542872632154429225768.png"
              ["web_white_logo"] => string(53) "/uploads/photo/20211110/WechatIMG2683131310333430.png"
              ["web_mobile_white_logo"] => string(53) "/uploads/photo/20211110/WechatIMG2683131303253345.png"
              ["web_pc_count"] => string(279) "<script>
var _hmt = _hmt || [];
(function() {
  var hm = document.createElement("script");
  hm.src = "https://hm.baidu.com/hm.js?083a0a797e34fd19aa6af22268972488";
  var s = document.getElementsByTagName("script")[0]; 
  s.parentNode.insertBefore(hm, s);
})();
</script>"
              ["web_mobile_count"] => string(279) "<script>
var _hmt = _hmt || [];
(function() {
  var hm = document.createElement("script");
  hm.src = "https://hm.baidu.com/hm.js?3be1d1d16e175ee044bdbcf9a936332e";
  var s = document.getElementsByTagName("script")[0]; 
  s.parentNode.insertBefore(hm, s);
})();
</script>"
            }
            ["enableCsrfValidation"] => bool(true)
            ["actionParams"] => array(2) {
              ["id"] => string(2) "27"
              ["page"] => int(1)
            }
            ["id"] => string(6) "column"
            ["module"] => object(app\modules\mobile\Module)#106 (17) {
              ["controllerNamespace"] => string(30) "app\modules\mobile\controllers"
              ["params"] => array(6) {
                ["demo"] => array(2) {
                  ["key1"] => string(6) "value1"
                  ["key2"] => string(6) "value2"
                }
                ["codeMsg"] => array(5) {
                  [1] => string(12) "非法请求"
                  [2] => string(12) "未知错误"
                  [3] => string(12) "系统错误"
                  [4] => string(12) "拒绝访问"
                  [5] => string(12) "内部错误"
                }
                ["safeController"] => array(9) {
                  [0] => string(18) "/mobile/user/login"
                  [1] => string(24) "/mobile/user/quick-login"
                  [2] => string(21) "/mobile/user/register"
                  [3] => string(30) "/mobile/user/retrieve-password"
                  [4] => string(18) "/mobile/user/oauth"
                  [5] => string(25) "/mobile/user/oauth-create"
                  [6] => string(23) "/mobile/user/oauth-bind"
                  [7] => string(20) "/mobile/ajax/captcha"
                  [8] => string(26) "/mobile/ajax/check-captcha"
                }
                ["errorCode"] => array(2) {
                  ["userNotLogin"] => int(300)
                  ["userNotPermission"] => int(301)
                }
                ["weixin"] => array(5) {
                  ["appId"] => string(18) "wxa2b745742ef1ddd1"
                  ["appSecret"] => string(32) "6f2efb22411f9bba9e6abead90384e24"
                  ["token"] => string(18) "rh1vMi9NCsRkF6rkg2"
                  ["encodingAESKey"] => string(43) "LINqd9F5pX1yqnhX2geBqZfSVpeL4eR2Z8pYuEnhaT0"
                  ["templateMsg"] => array(1) {
                    ["sign"] => string(43) "RP0CjEp9e-68Qp3fGj6nsTMSmRjioULUJogy0W-NY4Q"
                  }
                }
                ["baidu"] => array(1) {
                  ["map"] => array(1) {
                    ["apiAk"] => string(32) "Lb5KavMt6TgFBMDkWYyZ5GqCNNG9wzhf"
                  }
                }
              }
              ["id"] => string(6) "mobile"
              ["module"] => object(yii\web\Application)#5 (33) {
                ["defaultRoute"] => string(10) "pc/default"
                ["catchAll"] => NULL
                ["controller"] => object(app\modules\mobile\controllers\ErrorController)#132 (16) {
                  ["request"] => object(yii\web\Request)#10 (34) {
                    ["enableCsrfValidation"] => bool(false)
                    ["csrfParam"] => string(5) "_csrf"
                    ["csrfCookie"] => array(1) {
                      ["httpOnly"] => bool(true)
                    }
                    ["enableCsrfCookie"] => bool(true)
                    ["enableCookieValidation"] => bool(true)
                    ["cookieValidationKey"] => string(32) "rJ9H7j2a1y3MkNxw6QEQPtI0YEm4NZ71"
                    ["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)#101 (1) {
                      ["_headers":"yii\web\HeaderCollection":private] => array(5) {
                        ["host"] => array(1) {
                          [0] => string(15) "m.cnzhengmu.com"
                        }
                        ["user-agent"] => array(1) {
                          [0] => string(9) "claudebot"
                        }
                        ["accept"] => array(1) {
                          [0] => string(3) "*/*"
                        }
                        ["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] => string(23) "https://m.cnzhengmu.com"
                    ["_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(12) "list-27.html"
                    ["_url":"yii\web\Request":private] => string(13) "/list-27.html"
                    ["_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
                    ["_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
                  }
                  ["params"] => array(19) {
                    ["webName"] => string(15) "中华整木网"
                    ["webKeywords"] => string(236) "整木定制行业门户网站,中华整木网,整木网,整体家居网,中国整木家装网,整木家装,实木定制,整木家居,整木家装品牌,实木定制品牌,整木定制,整体家居,整装,全屋定制,整木家居品牌"
                    ["webDescription"] => string(570) "中华整木网是中国整木定制行业门户网站,国内最大的整木定制行业产品供求、品牌营销、招商加盟、供应链平台。提供关于整木家装,实木定制,整木家居,整木家装品牌,整体家居,整装,实木定制品牌,整木家居品牌,整木家装十大品牌等相关资讯,收录了包括简木、图森、国振、关亨美学木作、首席公馆、木斯特、戈雅印象、实木堂、豪利、艾博尼斯、冠宁木业、泰尚名居、风鸟、德嘉印象、迈丹尼等诸多整木家居品牌的最新信息。"
                    ["webUrl"] => string(25) "https://www.cnzhengmu.com"
                    ["webEmail"] => string(12) "xfdsh@qq.com"
                    ["pageFirst"] => int(1)
                    ["pageLimit"] => int(10)
                    ["upload"] => array(3) {
                      ["path"] => string(7) "uploads"
                      ["fileType"] => array(6) {
                        [0] => string(3) "jpg"
                        [1] => string(4) "jpeg"
                        [2] => string(3) "png"
                        [3] => string(3) "gif"
                        [4] => string(3) "mp3"
                        [5] => string(3) "mp4"
                      }
                      ["remoteUrl"] => string(26) "https://file.cnzhengmu.com"
                    }
                    ["user"] => array(3) {
                      ["loginExpire"] => int(28800)
                      ["passwordResetTokenExpire"] => int(3600)
                      ["initPassword"] => string(9) "i@shenyao"
                    }
                    ["sms"] => array(3) {
                      ["isOpen"] => int(1)
                      ["baidu"] => array(6) {
                        ["accessKey"] => string(32) "c9d457de5b9d49628edc57a593714900"
                        ["secretKey"] => string(32) "d0b1199cf3804678a74a087d98a3e999"
                        ["invokeId"] => string(18) "xzvvLgVW-1uPG-zucI"
                        ["verifyCodeTemplateCode"] => string(10) "M49C23E31F"
                        ["initPasswordTemplateCode"] => string(10) "MFA1B5675C"
                        ["createAccountTemplateCode"] => string(10) "M3E0B0FD97"
                      }
                      ["sendMaxLimit"] => int(1000)
                    }
                    ["mail"] => array(5) {
                      ["isOpen"] => int(1)
                      ["manage"] => array(2) {
                        ["name"] => string(31) "中华整木网-系统管理员"
                        ["email"] => string(12) "xfdsh@qq.com"
                      }
                      ["support"] => array(2) {
                        ["name"] => string(28) "中华整木网-技术中心"
                        ["email"] => string(21) "service@cnzhengmu.com"
                      }
                      ["service"] => array(2) {
                        ["name"] => string(28) "中华整木网-客服中心"
                        ["email"] => string(21) "service@cnzhengmu.com"
                      }
                      ["sendMaxLimit"] => int(100)
                    }
                    ["safeModule"] => array(2) {
                      [0] => string(8) "document"
                      [1] => string(3) "api"
                    }
                    ["safeController"] => array(12) {
                      [0] => string(11) "/site/index"
                      [1] => string(11) "/site/error"
                      [2] => string(11) "/user/login"
                      [3] => string(11) "/user/oauth"
                      [4] => string(21) "/user/get-mobile-code"
                      [5] => string(26) "/user/validate-mobile-code"
                      [6] => string(20) "/user/reset-password"
                      [7] => string(11) "/view/login"
                      [8] => string(23) "/view/retrieve-password"
                      [9] => string(17) "/ajax/get-captcha"
                      [10] => string(19) "/ajax/check-captcha"
                      [11] => string(19) "/ajax/get-wallpaper"
                    }
                    ["defaultAuth"] => array(5) {
                      [0] => string(19) "/user/get-user-data"
                      [1] => string(12) "/user/logout"
                      [2] => string(22) "/user/get-contact-list"
                      [3] => string(21) "/user/get-online-list"
                      [4] => string(10) "/menu/tree"
                    }
                    ["errorCode"] => array(2) {
                      ["userNotLogin"] => int(300)
                      ["userNotPermission"] => int(301)
                    }
                    ["wechat"] => array(9) {
                      ["appId"] => string(18) "wxceb2477874afd6c7"
                      ["appSecret"] => string(32) "63fec594350a7d8826838f9b5872771b"
                      ["token"] => string(32) "K7R9G7nWsnC8Jj7jSGJC7lLedd90b2sL"
                      ["encodingAESKey"] => string(43) "mMsAPsB30yMsSM3S004a0OaamyvA0SATSm0mMMPyAMF"
                      ["merchantId"] => string(10) "1508630771"
                      ["apiCert"] => string(32) "YXU1dkFYu5J2bPfFV2J81TroKg11iVIq"
                      ["sslKey"] => string(64) "/data/web/zhengmu/yiiframework/config/prod/cert/apiclientKey.pem"
                      ["sslCert"] => string(65) "/data/web/zhengmu/yiiframework/config/prod/cert/apiclientCert.pem"
                      ["cachePath"] => string(52) "/data/web/zhengmu/web/../yiiframework/runtime/wechat"
                    }
                    ["map"] => array(3) {
                      ["qq"] => array(1) {
                        ["key"] => string(35) "T5KBZ-F33R3-YUO3Z-3CHYK-YGFJF-VCBEL"
                      }
                      ["baidu"] => array(1) {
                        ["ak"] => string(32) "O6DLzFCOXTWoPFGjZfyDvSaxQGaC5IYk"
                      }
                      ["amap"] => array(1) {
                        ["key"] => string(32) "7e6eef8329895afc9ac1e2a86a739235"
                      }
                    }
                    ["qiniu"] => array(5) {
                      ["isOpen"] => int(0)
                      ["accessKey"] => string(0) ""
                      ["secretKey"] => string(0) ""
                      ["domain"] => string(26) "https://file.cnzhengmu.com"
                      ["bucket"] => string(7) "zhengmu"
                    }
                    ["baidu"] => array(1) {
                      ["zhanzhang"] => array(1) {
                        ["token"] => string(16) "mV0tYmTAGs4IQHXN"
                      }
                    }
                  }
                  ["moduleParams"] => array(6) {
                    ["demo"] => array(2) {
                      ["key1"] => string(6) "value1"
                      ["key2"] => string(6) "value2"
                    }
                    ["codeMsg"] => array(5) {
                      [1] => string(12) "非法请求"
                      [2] => string(12) "未知错误"
                      [3] => string(12) "系统错误"
                      [4] => string(12) "拒绝访问"
                      [5] => string(12) "内部错误"
                    }
                    ["safeController"] => array(9) {
                      [0] => string(18) "/mobile/user/login"
                      [1] => string(24) "/mobile/user/quick-login"
                      [2] => string(21) "/mobile/user/register"
                      [3] => string(30) "/mobile/user/retrieve-password"
                      [4] => string(18) "/mobile/user/oauth"
                      [5] => string(25) "/mobile/user/oauth-create"
                      [6] => string(23) "/mobile/user/oauth-bind"
                      [7] => string(20) "/mobile/ajax/captcha"
                      [8] => string(26) "/mobile/ajax/check-captcha"
                    }
                    ["errorCode"] => array(2) {
                      ["userNotLogin"] => int(300)
                      ["userNotPermission"] => int(301)
                    }
                    ["weixin"] => array(5) {
                      ["appId"] => string(18) "wxa2b745742ef1ddd1"
                      ["appSecret"] => string(32) "6f2efb22411f9bba9e6abead90384e24"
                      ["token"] => string(18) "rh1vMi9NCsRkF6rkg2"
                      ["encodingAESKey"] => string(43) "LINqd9F5pX1yqnhX2geBqZfSVpeL4eR2Z8pYuEnhaT0"
                      ["templateMsg"] => array(1) {
                        ["sign"] => string(43) "RP0CjEp9e-68Qp3fGj6nsTMSmRjioULUJogy0W-NY4Q"
                      }
                    }
                    ["baidu"] => array(1) {
                      ["map"] => array(1) {
                        ["apiAk"] => string(32) "Lb5KavMt6TgFBMDkWYyZ5GqCNNG9wzhf"
                      }
                    }
                  }
                  ["webData"] => array(32) {
                    ["web_api_key"] => string(16) "pXnVnhqBD7EWrTE6"
                    ["web_status"] => string(1) "1"
                    ["web_reason"] => string(30) "网站升级中,请稍后..."
                    ["web_jump_url"] => string(17) "http://www.gov.cn"
                    ["web_title"] => string(9) "整木网"
                    ["web_url"] => string(25) "https://www.cnzhengmu.com"
                    ["web_name"] => string(9) "整木网"
                    ["web_seo_title"] => string(31) "|整木定制行业门户网站"
                    ["web_company"] => string(15) "中华整木网"
                    ["web_address"] => string(75) "中国·浙江省湖州市南浔区人瑞路9999号南方新世界B栋11楼"
                    ["web_zip_code"] => string(6) "200000"
                    ["web_telephone"] => string(15) "86-0572-3711633"
                    ["web_fax"] => string(15) "86-0572-3711633"
                    ["web_email"] => string(25) "zhengmuwang@cnzhengmu.com"
                    ["web_qq"] => string(10) "1930302345"
                    ["web_keywords"] => string(236) "整木定制行业门户网站,中华整木网,整木网,整体家居网,中国整木家装网,整木家装,实木定制,整木家居,整木家装品牌,实木定制品牌,整木定制,整体家居,整装,全屋定制,整木家居品牌"
                    ["web_description"] => string(540) "整木网是中国整木定制行业门户网站,国内知名的整木定制行业产品供求、品牌营销、招商加盟、供应链平台。提供关于整木家装,实木定制,整木家居,整木家装品牌,整体家居,整装,实木定制品牌,整木家居品牌等相关资讯,收录了包括简木、图森、国振、关亨美学木作、首席公馆、木斯特、戈雅印象、实木堂、豪利、艾博尼斯、冠宁木业、泰尚名居、风鸟、德嘉印象、迈丹尼等诸多整木家居品牌的最新信息。 "
                    ["web_stat"] => string(0) ""
                    ["web_icp_number"] => string(24) "浙ICP备2021004169号-1"
                    ["web_video"] => string(0) ""
                    ["web_logo"] => string(53) "/uploads/photo/20211110/WechatIMG2678130859557701.png"
                    ["web_small_logo"] => string(53) "/uploads/photo/20211110/WechatIMG2678130915055879.png"
                    ["web_big_logo"] => string(53) "/uploads/photo/20211110/WechatIMG2678130922959450.png"
                    ["web_map_coordinate"] => string(7) "100|100"
                    ["web_detail"] => string(0) ""
                    ["web_wechat_qrcode"] => string(39) "/uploads/file/20181205/104834356958.jpg"
                    ["web_mobile_logo"] => string(53) "/uploads/photo/20211110/WechatIMG2678130930161986.png"
                    ["web_mobile_qrcode"] => string(49) "/uploads/file/20181122/1542872632154429225768.png"
                    ["web_white_logo"] => string(53) "/uploads/photo/20211110/WechatIMG2683131310333430.png"
                    ["web_mobile_white_logo"] => string(53) "/uploads/photo/20211110/WechatIMG2683131303253345.png"
                    ["web_pc_count"] => string(279) "<script>
var _hmt = _hmt || [];
(function() {
  var hm = document.createElement("script");
  hm.src = "https://hm.baidu.com/hm.js?083a0a797e34fd19aa6af22268972488";
  var s = document.getElementsByTagName("script")[0]; 
  s.parentNode.insertBefore(hm, s);
})();
</script>"
                    ["web_mobile_count"] => string(279) "<script>
var _hmt = _hmt || [];
(function() {
  var hm = document.createElement("script");
  hm.src = "https://hm.baidu.com/hm.js?3be1d1d16e175ee044bdbcf9a936332e";
  var s = document.getElementsByTagName("script")[0]; 
  s.parentNode.insertBefore(hm, s);
})();
</script>"
                  }
                  ["enableCsrfValidation"] => bool(true)
                  ["actionParams"] => array(0) {
                  }
                  ["id"] => string(5) "error"
                  ["module"] => *RECURSION*
                  ["defaultAction"] => string(5) "index"
                  ["layout"] => NULL
                  ["action"] => object(yii\base\InlineAction)#131 (6) {
                    ["actionMethod"] => string(11) "actionIndex"
                    ["id"] => string(5) "index"
                    ["controller"] => *RECURSION*
                    ["_events":"yii\base\Component":private] => array(0) {
                    }
                    ["_eventWildcards":"yii\base\Component":private] => array(0) {
                    }
                    ["_behaviors":"yii\base\Component":private] => NULL
                  }
                  ["_view":"yii\base\Controller":private] => NULL
                  ["_viewPath":"yii\base\Controller":private] => NULL
                  ["_events":"yii\base\Component":private] => array(2) {
                    ["beforeAction"] => array(1) {
                      [0] => array(2) {
                        [0] => array(2) {
                          [0] => object(yii\filters\Cors)#130 (7) {
                            ["request"] => object(yii\web\Request)#10 (34) {
                              ["enableCsrfValidation"] => bool(false)
                              ["csrfParam"] => string(5) "_csrf"
                              ["csrfCookie"] => array(1) {
                                ["httpOnly"] => bool(true)
                              }
                              ["enableCsrfCookie"] => bool(true)
                              ["enableCookieValidation"] => bool(true)
                              ["cookieValidationKey"] => string(32) "rJ9H7j2a1y3MkNxw6QEQPtI0YEm4NZ71"
                              ["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)#101 (1) {
                                ["_headers":"yii\web\HeaderCollection":private] => array(5) {
                                  ["host"] => array(1) {
                                    [0] => string(15) "m.cnzhengmu.com"
                                  }
                                  ["user-agent"] => array(1) {
                                    [0] => string(9) "claudebot"
                                  }
                                  ["accept"] => array(1) {
                                    [0] => string(3) "*/*"
                                  }
                                  ["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] => string(23) "https://m.cnzhengmu.com"
                              ["_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(12) "list-27.html"
                              ["_url":"yii\web\Request":private] => string(13) "/list-27.html"
                              ["_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
                              ["_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
                            }
                            ["response"] => object(yii\web\Response)#117 (18) {
                              ["format"] => string(4) "html"
                              ["acceptMimeType"] => NULL
                              ["acceptParams"] => array(0) {
                              }
                              ["formatters"] => array(4) {
                                ["html"] => array(1) {
                                  ["class"] => string(29) "yii\web\HtmlResponseFormatter"
                                }
                                ["xml"] => array(1) {
                                  ["class"] => string(28) "yii\web\XmlResponseFormatter"
                                }
                                ["json"] => array(1) {
                                  ["class"] => string(29) "yii\web\JsonResponseFormatter"
                                }
                                ["jsonp"] => array(2) {
                                  ["class"] => string(29) "yii\web\JsonResponseFormatter"
                                  ["useJsonp"] => bool(true)
                                }
                              }
                              ["data"] => NULL
                              ["content"] => NULL
                              ["stream"] => NULL
                              ["charset"] => string(5) "UTF-8"
                              ["statusText"] => string(9) "Not Found"
                              ["version"] => string(3) "1.1"
                              ["isSent"] => bool(false)
                              ["_statusCode":"yii\web\Response":private] => int(404)
                              ["_headers":"yii\web\Response":private] => object(yii\web\HeaderCollection)#116 (1) {
                                ["_headers":"yii\web\HeaderCollection":private] => array(2) {
                                  ["access-control-allow-credentials"] => array(1) {
                                    [0] => string(4) "true"
                                  }
                                  ["access-control-expose-headers"] => array(1) {
                                    [0] => string(25) "X-Pagination-Current-Page"
                                  }
                                }
                              }
                              ["_cookies":"yii\web\Response":private] => NULL
                              ["exitStatus"] => int(0)
                              ["_events":"yii\base\Component":private] => array(0) {
                              }
                              ["_eventWildcards":"yii\base\Component":private] => array(0) {
                              }
                              ["_behaviors":"yii\base\Component":private] => NULL
                            }
                            ["actions"] => array(0) {
                            }
                            ["cors"] => array(6) {
                              ["Origin"] => array(1) {
                                [0] => string(1) "*"
                              }
                              ["Access-Control-Request-Method"] => array(4) {
                                [0] => string(3) "GET"
                                [1] => string(4) "POST"
                                [2] => string(3) "PUT"
                                [3] => string(7) "OPTIONS"
                              }
                              ["Access-Control-Request-Headers"] => array(1) {
                                [0] => string(1) "*"
                              }
                              ["Access-Control-Allow-Credentials"] => bool(true)
                              ["Access-Control-Max-Age"] => int(3600)
                              ["Access-Control-Expose-Headers"] => array(1) {
                                [0] => string(25) "X-Pagination-Current-Page"
                              }
                            }
                            ["only"] => NULL
                            ["except"] => array(0) {
                            }
                            ["owner"] => *RECURSION*
                          }
                          [1] => string(12) "beforeFilter"
                        }
                        [1] => NULL
                      }
                    }
                    ["afterAction"] => array(1) {
                      [0] => array(2) {
                        [0] => array(2) {
                          [0] => object(yii\filters\Cors)#130 (7) {
                            ["request"] => object(yii\web\Request)#10 (34) {
                              ["enableCsrfValidation"] => bool(false)
                              ["csrfParam"] => string(5) "_csrf"
                              ["csrfCookie"] => array(1) {
                                ["httpOnly"] => bool(true)
                              }
                              ["enableCsrfCookie"] => bool(true)
                              ["enableCookieValidation"] => bool(true)
                              ["cookieValidationKey"] => string(32) "rJ9H7j2a1y3MkNxw6QEQPtI0YEm4NZ71"
                              ["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)#101 (1) {
                                ["_headers":"yii\web\HeaderCollection":private] => array(5) {
                                  ["host"] => array(1) {
                                    [0] => string(15) "m.cnzhengmu.com"
                                  }
                                  ["user-agent"] => array(1) {
                                    [0] => string(9) "claudebot"
                                  }
                                  ["accept"] => array(1) {
                                    [0] => string(3) "*/*"
                                  }
                                  ["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] => string(23) "https://m.cnzhengmu.com"
                              ["_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(12) "list-27.html"
                              ["_url":"yii\web\Request":private] => string(13) "/list-27.html"
                              ["_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
                              ["_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
                            }
                            ["response"] => object(yii\web\Response)#117 (18) {
                              ["format"] => string(4) "html"
                              ["acceptMimeType"] => NULL
                              ["acceptParams"] => array(0) {
                              }
                              ["formatters"] => array(4) {
                                ["html"] => array(1) {
                                  ["class"] => string(29) "yii\web\HtmlResponseFormatter"
                                }
                                ["xml"] => array(1) {
                                  ["class"] => string(28) "yii\web\XmlResponseFormatter"
                                }
                                ["json"] => array(1) {
                                  ["class"] => string(29) "yii\web\JsonResponseFormatter"
                                }
                                ["jsonp"] => array(2) {
                                  ["class"] => string(29) "yii\web\JsonResponseFormatter"
                                  ["useJsonp"] => bool(true)
                                }
                              }
                              ["data"] => NULL
                              ["content"] => NULL
                              ["stream"] => NULL
                              ["charset"] => string(5) "UTF-8"
                              ["statusText"] => string(9) "Not Found"
                              ["version"] => string(3) "1.1"
                              ["isSent"] => bool(false)
                              ["_statusCode":"yii\web\Response":private] => int(404)
                              ["_headers":"yii\web\Response":private] => object(yii\web\HeaderCollection)#116 (1) {
                                ["_headers":"yii\web\HeaderCollection":private] => array(2) {
                                  ["access-control-allow-credentials"] => array(1) {
                                    [0] => string(4) "true"
                                  }
                                  ["access-control-expose-headers"] => array(1) {
                                    [0] => string(25) "X-Pagination-Current-Page"
                                  }
                                }
                              }
                              ["_cookies":"yii\web\Response":private] => NULL
                              ["exitStatus"] => int(0)
                              ["_events":"yii\base\Component":private] => array(0) {
                              }
                              ["_eventWildcards":"yii\base\Component":private] => array(0) {
                              }
                              ["_behaviors":"yii\base\Component":private] => NULL
                            }
                            ["actions"] => array(0) {
                            }
                            ["cors"] => array(6) {
                              ["Origin"] => array(1) {
                                [0] => string(1) "*"
                              }
                              ["Access-Control-Request-Method"] => array(4) {
                                [0] => string(3) "GET"
                                [1] => string(4) "POST"
                                [2] => string(3) "PUT"
                                [3] => string(7) "OPTIONS"
                              }
                              ["Access-Control-Request-Headers"] => array(1) {
                                [0] => string(1) "*"
                              }
                              ["Access-Control-Allow-Credentials"] => bool(true)
                              ["Access-Control-Max-Age"] => int(3600)
                              ["Access-Control-Expose-Headers"] => array(1) {
                                [0] => string(25) "X-Pagination-Current-Page"
                              }
                            }
                            ["only"] => NULL
                            ["except"] => array(0) {
                            }
                            ["owner"] => *RECURSION*
                          }
                          [1] => string(11) "afterFilter"
                        }
                        [1] => NULL
                      }
                    }
                  }
                  ["_eventWildcards":"yii\base\Component":private] => array(0) {
                  }
                  ["_behaviors":"yii\base\Component":private] => array(1) {
                    ["corsFilter"] => object(yii\filters\Cors)#130 (7) {
                      ["request"] => object(yii\web\Request)#10 (34) {
                        ["enableCsrfValidation"] => bool(false)
                        ["csrfParam"] => string(5) "_csrf"
                        ["csrfCookie"] => array(1) {
                          ["httpOnly"] => bool(true)
                        }
                        ["enableCsrfCookie"] => bool(true)
                        ["enableCookieValidation"] => bool(true)
                        ["cookieValidationKey"] => string(32) "rJ9H7j2a1y3MkNxw6QEQPtI0YEm4NZ71"
                        ["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)#101 (1) {
                          ["_headers":"yii\web\HeaderCollection":private] => array(5) {
                            ["host"] => array(1) {
                              [0] => string(15) "m.cnzhengmu.com"
                            }
                            ["user-agent"] => array(1) {
                              [0] => string(9) "claudebot"
                            }
                            ["accept"] => array(1) {
                              [0] => string(3) "*/*"
                            }
                            ["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] => string(23) "https://m.cnzhengmu.com"
                        ["_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(12) "list-27.html"
                        ["_url":"yii\web\Request":private] => string(13) "/list-27.html"
                        ["_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
                        ["_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
                      }
                      ["response"] => object(yii\web\Response)#117 (18) {
                        ["format"] => string(4) "html"
                        ["acceptMimeType"] => NULL
                        ["acceptParams"] => array(0) {
                        }
                        ["formatters"] => array(4) {
                          ["html"] => array(1) {
                            ["class"] => string(29) "yii\web\HtmlResponseFormatter"
                          }
                          ["xml"] => array(1) {
                            ["class"] => string(28) "yii\web\XmlResponseFormatter"
                          }
                          ["json"] => array(1) {
                            ["class"] => string(29) "yii\web\JsonResponseFormatter"
                          }
                          ["jsonp"] => array(2) {
                            ["class"] => string(29) "yii\web\JsonResponseFormatter"
                            ["useJsonp"] => bool(true)
                          }
                        }
                        ["data"] => NULL
                        ["content"] => NULL
                        ["stream"] => NULL
                        ["charset"] => string(5) "UTF-8"
                        ["statusText"] => string(9) "Not Found"
                        ["version"] => string(3) "1.1"
                        ["isSent"] => bool(false)
                        ["_statusCode":"yii\web\Response":private] => int(404)
                        ["_headers":"yii\web\Response":private] => object(yii\web\HeaderCollection)#116 (1) {
                          ["_headers":"yii\web\HeaderCollection":private] => array(2) {
                            ["access-control-allow-credentials"] => array(1) {
                              [0] => string(4) "true"
                            }
                            ["access-control-expose-headers"] => array(1) {
                              [0] => string(25) "X-Pagination-Current-Page"
                            }
                          }
                        }
                        ["_cookies":"yii\web\Response":private] => NULL
                        ["exitStatus"] => int(0)
                        ["_events":"yii\base\Component":private] => array(0) {
                        }
                        ["_eventWildcards":"yii\base\Component":private] => array(0) {
                        }
                        ["_behaviors":"yii\base\Component":private] => NULL
                      }
                      ["actions"] => array(0) {
                      }
                      ["cors"] => array(6) {
                        ["Origin"] => array(1) {
                          [0] => string(1) "*"
                        }
                        ["Access-Control-Request-Method"] => array(4) {
                          [0] => string(3) "GET"
                          [1] => string(4) "POST"
                          [2] => string(3) "PUT"
                          [3] => string(7) "OPTIONS"
                        }
                        ["Access-Control-Request-Headers"] => array(1) {
                          [0] => string(1) "*"
                        }
                        ["Access-Control-Allow-Credentials"] => bool(true)
                        ["Access-Control-Max-Age"] => int(3600)
                        ["Access-Control-Expose-Headers"] => array(1) {
                          [0] => string(25) "X-Pagination-Current-Page"
                        }
                      }
                      ["only"] => NULL
                      ["except"] => array(0) {
                      }
                      ["owner"] => *RECURSION*
                    }
                  }
                }
                ["_homeUrl":"yii\web\Application":private] => NULL
                ["controllerNamespace"] => string(15) "app\controllers"
                ["name"] => string(14) "My Application"
                ["charset"] => string(5) "UTF-8"
                ["language"] => string(5) "zh-CN"
                ["sourceLanguage"] => string(5) "en-US"
                ["layout"] => string(4) "main"
                ["requestedRoute"] => string(19) "mobile/column/index"
                ["requestedAction"] => object(yii\base\InlineAction)#104 (6) {
                  ["actionMethod"] => string(11) "actionIndex"
                  ["id"] => string(5) "index"
                  ["controller"] => *RECURSION*
                  ["_events":"yii\base\Component":private] => array(0) {
                  }
                  ["_eventWildcards":"yii\base\Component":private] => array(0) {
                  }
                  ["_behaviors":"yii\base\Component":private] => NULL
                }
                ["requestedParams"] => array(2) {
                  [0] => string(2) "27"
                  [1] => int(1)
                }
                ["extensions"] => array(10) {
                  ["yiisoft/yii2-swiftmailer"] => array(3) {
                    ["name"] => string(24) "yiisoft/yii2-swiftmailer"
                    ["version"] => string(7) "2.0.7.0"
                    ["alias"] => array(1) {
                      ["@yii/swiftmailer"] => string(62) "/data/web/zhengmu/yiiframework/vendor/yiisoft/yii2-swiftmailer"
                    }
                  }
                  ["yiisoft/yii2-bootstrap"] => array(3) {
                    ["name"] => string(22) "yiisoft/yii2-bootstrap"
                    ["version"] => string(7) "2.0.8.0"
                    ["alias"] => array(1) {
                      ["@yii/bootstrap"] => string(64) "/data/web/zhengmu/yiiframework/vendor/yiisoft/yii2-bootstrap/src"
                    }
                  }
                  ["yiisoft/yii2-gii"] => array(3) {
                    ["name"] => string(16) "yiisoft/yii2-gii"
                    ["version"] => string(7) "2.0.7.0"
                    ["alias"] => array(1) {
                      ["@yii/gii"] => string(58) "/data/web/zhengmu/yiiframework/vendor/yiisoft/yii2-gii/src"
                    }
                  }
                  ["yiisoft/yii2-faker"] => array(3) {
                    ["name"] => string(18) "yiisoft/yii2-faker"
                    ["version"] => string(7) "2.0.4.0"
                    ["alias"] => array(1) {
                      ["@yii/faker"] => string(56) "/data/web/zhengmu/yiiframework/vendor/yiisoft/yii2-faker"
                    }
                  }
                  ["yiisoft/yii2-imagine"] => array(3) {
                    ["name"] => string(20) "yiisoft/yii2-imagine"
                    ["version"] => string(7) "2.1.1.0"
                    ["alias"] => array(1) {
                      ["@yii/imagine"] => string(62) "/data/web/zhengmu/yiiframework/vendor/yiisoft/yii2-imagine/src"
                    }
                  }
                  ["yiisoft/yii2-httpclient"] => array(3) {
                    ["name"] => string(23) "yiisoft/yii2-httpclient"
                    ["version"] => string(7) "2.0.7.0"
                    ["alias"] => array(1) {
                      ["@yii/httpclient"] => string(65) "/data/web/zhengmu/yiiframework/vendor/yiisoft/yii2-httpclient/src"
                    }
                  }
                  ["yiisoft/yii2-authclient"] => array(3) {
                    ["name"] => string(23) "yiisoft/yii2-authclient"
                    ["version"] => string(7) "2.1.7.0"
                    ["alias"] => array(1) {
                      ["@yii/authclient"] => string(65) "/data/web/zhengmu/yiiframework/vendor/yiisoft/yii2-authclient/src"
                    }
                  }
                  ["yiisoft/yii2-redis"] => array(3) {
                    ["name"] => string(18) "yiisoft/yii2-redis"
                    ["version"] => string(7) "2.0.9.0"
                    ["alias"] => array(1) {
                      ["@yii/redis"] => string(60) "/data/web/zhengmu/yiiframework/vendor/yiisoft/yii2-redis/src"
                    }
                  }
                  ["yiisoft/yii2-debug"] => array(3) {
                    ["name"] => string(18) "yiisoft/yii2-debug"
                    ["version"] => string(8) "2.0.14.0"
                    ["alias"] => array(1) {
                      ["@yii/debug"] => string(60) "/data/web/zhengmu/yiiframework/vendor/yiisoft/yii2-debug/src"
                    }
                  }
                  ["auto/Jwt"] => array(3) {
                    ["name"] => string(3) "jwt"
                    ["version"] => string(5) "0.0.1"
                    ["alias"] => array(1) {
                      ["@auto/hello"] => string(42) "/data/web/zhengmu/yiiframework/vendor/auto"
                    }
                  }
                }
                ["bootstrap"] => array(1) {
                  [0] => string(3) "log"
                }
                ["state"] => int(3)
                ["loadedModules"] => array(2) {
                  ["yii\web\Application"] => *RECURSION*
                  ["app\modules\mobile\Module"] => *RECURSION*
                }
                ["_runtimePath":"yii\base\Application":private] => string(38) "/data/web/zhengmu/yiiframework/runtime"
                ["_vendorPath":"yii\base\Application":private] => string(37) "/data/web/zhengmu/yiiframework/vendor"
                ["params"] => array(19) {
                  ["webName"] => string(15) "中华整木网"
                  ["webKeywords"] => string(236) "整木定制行业门户网站,中华整木网,整木网,整体家居网,中国整木家装网,整木家装,实木定制,整木家居,整木家装品牌,实木定制品牌,整木定制,整体家居,整装,全屋定制,整木家居品牌"
                  ["webDescription"] => string(570) "中华整木网是中国整木定制行业门户网站,国内最大的整木定制行业产品供求、品牌营销、招商加盟、供应链平台。提供关于整木家装,实木定制,整木家居,整木家装品牌,整体家居,整装,实木定制品牌,整木家居品牌,整木家装十大品牌等相关资讯,收录了包括简木、图森、国振、关亨美学木作、首席公馆、木斯特、戈雅印象、实木堂、豪利、艾博尼斯、冠宁木业、泰尚名居、风鸟、德嘉印象、迈丹尼等诸多整木家居品牌的最新信息。"
                  ["webUrl"] => string(25) "https://www.cnzhengmu.com"
                  ["webEmail"] => string(12) "xfdsh@qq.com"
                  ["pageFirst"] => int(1)
                  ["pageLimit"] => int(10)
                  ["upload"] => array(3) {
                    ["path"] => string(7) "uploads"
                    ["fileType"] => array(6) {
                      [0] => string(3) "jpg"
                      [1] => string(4) "jpeg"
                      [2] => string(3) "png"
                      [3] => string(3) "gif"
                      [4] => string(3) "mp3"
                      [5] => string(3) "mp4"
                    }
                    ["remoteUrl"] => string(26) "https://file.cnzhengmu.com"
                  }
                  ["user"] => array(3) {
                    ["loginExpire"] => int(28800)
                    ["passwordResetTokenExpire"] => int(3600)
                    ["initPassword"] => string(9) "i@shenyao"
                  }
                  ["sms"] => array(3) {
                    ["isOpen"] => int(1)
                    ["baidu"] => array(6) {
                      ["accessKey"] => string(32) "c9d457de5b9d49628edc57a593714900"
                      ["secretKey"] => string(32) "d0b1199cf3804678a74a087d98a3e999"
                      ["invokeId"] => string(18) "xzvvLgVW-1uPG-zucI"
                      ["verifyCodeTemplateCode"] => string(10) "M49C23E31F"
                      ["initPasswordTemplateCode"] => string(10) "MFA1B5675C"
                      ["createAccountTemplateCode"] => string(10) "M3E0B0FD97"
                    }
                    ["sendMaxLimit"] => int(1000)
                  }
                  ["mail"] => array(5) {
                    ["isOpen"] => int(1)
                    ["manage"] => array(2) {
                      ["name"] => string(31) "中华整木网-系统管理员"
                      ["email"] => string(12) "xfdsh@qq.com"
                    }
                    ["support"] => array(2) {
                      ["name"] => string(28) "中华整木网-技术中心"
                      ["email"] => string(21) "service@cnzhengmu.com"
                    }
                    ["service"] => array(2) {
                      ["name"] => string(28) "中华整木网-客服中心"
                      ["email"] => string(21) "service@cnzhengmu.com"
                    }
                    ["sendMaxLimit"] => int(100)
                  }
                  ["safeModule"] => array(2) {
                    [0] => string(8) "document"
                    [1] => string(3) "api"
                  }
                  ["safeController"] => array(12) {
                    [0] => string(11) "/site/index"
                    [1] => string(11) "/site/error"
                    [2] => string(11) "/user/login"
                    [3] => string(11) "/user/oauth"
                    [4] => string(21) "/user/get-mobile-code"
                    [5] => string(26) "/user/validate-mobile-code"
                    [6] => string(20) "/user/reset-password"
                    [7] => string(11) "/view/login"
                    [8] => string(23) "/view/retrieve-password"
                    [9] => string(17) "/ajax/get-captcha"
                    [10] => string(19) "/ajax/check-captcha"
                    [11] => string(19) "/ajax/get-wallpaper"
                  }
                  ["defaultAuth"] => array(5) {
                    [0] => string(19) "/user/get-user-data"
                    [1] => string(12) "/user/logout"
                    [2] => string(22) "/user/get-contact-list"
                    [3] => string(21) "/user/get-online-list"
                    [4] => string(10) "/menu/tree"
                  }
                  ["errorCode"] => array(2) {
                    ["userNotLogin"] => int(300)
                    ["userNotPermission"] => int(301)
                  }
                  ["wechat"] => array(9) {
                    ["appId"] => string(18) "wxceb2477874afd6c7"
                    ["appSecret"] => string(32) "63fec594350a7d8826838f9b5872771b"
                    ["token"] => string(32) "K7R9G7nWsnC8Jj7jSGJC7lLedd90b2sL"
                    ["encodingAESKey"] => string(43) "mMsAPsB30yMsSM3S004a0OaamyvA0SATSm0mMMPyAMF"
                    ["merchantId"] => string(10) "1508630771"
                    ["apiCert"] => string(32) "YXU1dkFYu5J2bPfFV2J81TroKg11iVIq"
                    ["sslKey"] => string(64) "/data/web/zhengmu/yiiframework/config/prod/cert/apiclientKey.pem"
                    ["sslCert"] => string(65) "/data/web/zhengmu/yiiframework/config/prod/cert/apiclientCert.pem"
                    ["cachePath"] => string(52) "/data/web/zhengmu/web/../yiiframework/runtime/wechat"
                  }
                  ["map"] => array(3) {
                    ["qq"] => array(1) {
                      ["key"] => string(35) "T5KBZ-F33R3-YUO3Z-3CHYK-YGFJF-VCBEL"
                    }
                    ["baidu"] => array(1) {
                      ["ak"] => string(32) "O6DLzFCOXTWoPFGjZfyDvSaxQGaC5IYk"
                    }
                    ["amap"] => array(1) {
                      ["key"] => string(32) "7e6eef8329895afc9ac1e2a86a739235"
                    }
                  }
                  ["qiniu"] => array(5) {
                    ["isOpen"] => int(0)
                    ["accessKey"] => string(0) ""
                    ["secretKey"] => string(0) ""
                    ["domain"] => string(26) "https://file.cnzhengmu.com"
                    ["bucket"] => string(7) "zhengmu"
                  }
                  ["baidu"] => array(1) {
                    ["zhanzhang"] => array(1) {
                      ["token"] => string(16) "mV0tYmTAGs4IQHXN"
                    }
                  }
                }
                ["id"] => string(5) "basic"
                ["module"] => NULL
                ["controllerMap"] => array(0) {
                }
                ["_basePath":"yii\base\Module":private] => string(30) "/data/web/zhengmu/yiiframework"
                ["_viewPath":"yii\base\Module":private] => NULL
                ["_layoutPath":"yii\base\Module":private] => NULL
                ["_modules":"yii\base\Module":private] => array(7) {
                  ["api"] => array(1) {
                    ["class"] => string(22) "app\modules\api\Module"
                  }
                  ["mobile"] => *RECURSION*
                  ["manage"] => array(1) {
                    ["class"] => string(25) "app\modules\manage\Module"
                  }
                  ["pc"] => array(1) {
                    ["class"] => string(21) "app\modules\pc\Module"
                  }
                  ["user"] => array(1) {
                    ["class"] => string(23) "app\modules\user\Module"
                  }
                  ["platform"] => array(1) {
                    ["class"] => string(27) "app\modules\platform\Module"
                  }
                  ["company"] => array(1) {
                    ["class"] => string(26) "app\modules\company\Module"
                  }
                }
                ["_version":"yii\base\Module":private] => NULL
                ["_components":"yii\di\ServiceLocator":private] => array(8) {
                  ["errorHandler"] => object(yii\web\ErrorHandler)#8 (17) {
                    ["maxSourceLines"] => int(19)
                    ["maxTraceSourceLines"] => int(13)
                    ["errorAction"] => string(12) "mobile/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"] => *RECURSION*
                    ["_memoryReserve":"yii\base\ErrorHandler":private] => string(262144) "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
                    ["_hhvmException":"yii\base\ErrorHandler":private] => NULL
                    ["_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)#10 (34) {
                    ["enableCsrfValidation"] => bool(false)
                    ["csrfParam"] => string(5) "_csrf"
                    ["csrfCookie"] => array(1) {
                      ["httpOnly"] => bool(true)
                    }
                    ["enableCsrfCookie"] => bool(true)
                    ["enableCookieValidation"] => bool(true)
                    ["cookieValidationKey"] => string(32) "rJ9H7j2a1y3MkNxw6QEQPtI0YEm4NZ71"
                    ["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)#101 (1) {
                      ["_headers":"yii\web\HeaderCollection":private] => array(5) {
                        ["host"] => array(1) {
                          [0] => string(15) "m.cnzhengmu.com"
                        }
                        ["user-agent"] => array(1) {
                          [0] => string(9) "claudebot"
                        }
                        ["accept"] => array(1) {
                          [0] => string(3) "*/*"
                        }
                        ["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] => string(23) "https://m.cnzhengmu.com"
                    ["_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(12) "list-27.html"
                    ["_url":"yii\web\Request":private] => string(13) "/list-27.html"
                    ["_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
                    ["_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
                  }
                  ["log"] => object(yii\log\Dispatcher)#12 (5) {
                    ["targets"] => array(1) {
                      [0] => object(yii\log\FileTarget)#17 (19) {
                        ["logFile"] => string(51) "/data/web/zhengmu/yiiframework/runtime/logs/app.log"
                        ["enableRotation"] => bool(true)
                        ["maxFileSize"] => int(10240)
                        ["maxLogFiles"] => int(5)
                        ["fileMode"] => NULL
                        ["dirMode"] => int(509)
                        ["rotateByCopy"] => bool(true)
                        ["categories"] => array(2) {
                          [0] => string(8) "yii\db\*"
                          [1] => string(23) "yii\web\HttpException:*"
                        }
                        ["except"] => array(1) {
                          [0] => string(25) "yii\web\HttpException:404"
                        }
                        ["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"
                        }
                        ["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
                      }
                    }
                    ["_logger":"yii\log\Dispatcher":private] => object(yii\log\Logger)#14 (7) {
                      ["messages"] => array(58) {
                        [0] => array(6) {
                          [0] => string(33) "Bootstrap with yii\log\Dispatcher"
                          [1] => int(8)
                          [2] => string(31) "yii\base\Application::bootstrap"
                          [3] => float(1710830825.8845)
                          [4] => array(0) {
                          }
                          [5] => int(2073640)
                        }
                        [1] => array(6) {
                          [0] => array(3) {
                            ["rule"] => string(51) "https://www.cnzhengmu.com/endorsement/<id:\d+>.html"
                            ["match"] => bool(false)
                            ["parent"] => NULL
                          }
                          [1] => int(8)
                          [2] => string(32) "yii\web\UrlManager::parseRequest"
                          [3] => float(1710830825.8885)
                          [4] => array(0) {
                          }
                          [5] => int(2646168)
                        }
                        [2] => array(6) {
                          [0] => array(3) {
                            ["rule"] => string(64) "https://www.cnzhengmu.com/shangxueyuan/specialnews/<id:\d+>.html"
                            ["match"] => bool(false)
                            ["parent"] => NULL
                          }
                          [1] => int(8)
                          [2] => string(32) "yii\web\UrlManager::parseRequest"
                          [3] => float(1710830825.8886)
                          [4] => array(0) {
                          }
                          [5] => int(2647016)
                        }
                        [3] => array(6) {
                          [0] => array(3) {
                            ["rule"] => string(51) "https://www.cnzhengmu.com/speciallist/<id:\d+>.html"
                            ["match"] => bool(false)
                            ["parent"] => NULL
                          }
                          [1] => int(8)
                          [2] => string(32) "yii\web\UrlManager::parseRequest"
                          [3] => float(1710830825.8886)
                          [4] => array(0) {
                          }
                          [5] => int(2647848)
                        }
                        [4] => array(6) {
                          [0] => array(3) {
                            ["rule"] => string(51) "https://www.cnzhengmu.com/memberstore/<id:\d+>.html"
                            ["match"] => bool(false)
                            ["parent"] => NULL
                          }
                          [1] => int(8)
                          [2] => string(32) "yii\web\UrlManager::parseRequest"
                          [3] => float(1710830825.8886)
                          [4] => array(0) {
                          }
                          [5] => int(2648680)
                        }
                        [5] => array(6) {
                          [0] => array(3) {
                            ["rule"] => string(52) "https://www.cnzhengmu.com/strategynews/<id:\d+>.html"
                            ["match"] => bool(false)
                            ["parent"] => NULL
                          }
                          [1] => int(8)
                          [2] => string(32) "yii\web\UrlManager::parseRequest"
                          [3] => float(1710830825.8886)
                          [4] => array(0) {
                          }
                          [5] => int(2649512)
                        }
                        [6] => array(6) {
                          [0] => array(3) {
                            ["rule"] => string(35) "https://www.cnzhengmu.com/knowledge"
                            ["match"] => bool(false)
                            ["parent"] => NULL
                          }
                          [1] => int(8)
                          [2] => string(32) "yii\web\UrlManager::parseRequest"
                          [3] => float(1710830825.8886)
                          [4] => array(0) {
                          }
                          [5] => int(2650328)
                        }
                        [7] => array(6) {
                          [0] => array(3) {
                            ["rule"] => string(39) "https://www.cnzhengmu.com/news/logdiary"
                            ["match"] => bool(false)
                            ["parent"] => NULL
                          }
                          [1] => int(8)
                          [2] => string(32) "yii\web\UrlManager::parseRequest"
                          [3] => float(1710830825.8886)
                          [4] => array(0) {
                          }
                          [5] => int(2651144)
                        }
                        [8] => array(6) {
                          [0] => array(3) {
                            ["rule"] => string(53) "https://www.cnzhengmu.com/news/logdiary/<id:\d+>.html"
                            ["match"] => bool(false)
                            ["parent"] => NULL
                          }
                          [1] => int(8)
                          [2] => string(32) "yii\web\UrlManager::parseRequest"
                          [3] => float(1710830825.8886)
                          [4] => array(0) {
                          }
                          [5] => int(2651976)
                        }
                        [9] => array(6) {
                          [0] => array(3) {
                            ["rule"] => string(35) "https://www.cnzhengmu.com/news/home"
                            ["match"] => bool(false)
                            ["parent"] => NULL
                          }
                          [1] => int(8)
                          [2] => string(32) "yii\web\UrlManager::parseRequest"
                          [3] => float(1710830825.8886)
                          [4] => array(0) {
                          }
                          [5] => int(2653112)
                        }
                        [10] => array(6) {
                          [0] => array(3) {
                            ["rule"] => string(49) "https://www.cnzhengmu.com/news/home/<id:\d+>.html"
                            ["match"] => bool(false)
                            ["parent"] => NULL
                          }
                          [1] => int(8)
                          [2] => string(32) "yii\web\UrlManager::parseRequest"
                          [3] => float(1710830825.8886)
                          [4] => array(0) {
                          }
                          [5] => int(2653944)
                        }
                        [11] => array(6) {
                          [0] => array(3) {
                            ["rule"] => string(36) "https://www.cnzhengmu.com/news/brand"
                            ["match"] => bool(false)
                            ["parent"] => NULL
                          }
                          [1] => int(8)
                          [2] => string(32) "yii\web\UrlManager::parseRequest"
                          [3] => float(1710830825.8886)
                          [4] => array(0) {
                          }
                          [5] => int(2654760)
                        }
                        [12] => array(6) {
                          [0] => array(3) {
                            ["rule"] => string(50) "https://www.cnzhengmu.com/news/brand/<id:\d+>.html"
                            ["match"] => bool(false)
                            ["parent"] => NULL
                          }
                          [1] => int(8)
                          [2] => string(32) "yii\web\UrlManager::parseRequest"
                          [3] => float(1710830825.8886)
                          [4] => array(0) {
                          }
                          [5] => int(2655592)
                        }
                        [13] => array(6) {
                          [0] => array(3) {
                            ["rule"] => string(37) "https://www.cnzhengmu.com/news/choose"
                            ["match"] => bool(false)
                            ["parent"] => NULL
                          }
                          [1] => int(8)
                          [2] => string(32) "yii\web\UrlManager::parseRequest"
                          [3] => float(1710830825.8886)
                          [4] => array(0) {
                          }
                          [5] => int(2656408)
                        }
                        [14] => array(6) {
                          [0] => array(3) {
                            ["rule"] => string(51) "https://www.cnzhengmu.com/news/choose/<id:\d+>.html"
                            ["match"] => bool(false)
                            ["parent"] => NULL
                          }
                          [1] => int(8)
                          [2] => string(32) "yii\web\UrlManager::parseRequest"
                          [3] => float(1710830825.8886)
                          [4] => array(0) {
                          }
                          [5] => int(2657240)
                        }
                        [15] => array(6) {
                          [0] => array(3) {
                            ["rule"] => string(42) "https://www.cnzhengmu.com/news/collocation"
                            ["match"] => bool(false)
                            ["parent"] => NULL
                          }
                          [1] => int(8)
                          [2] => string(32) "yii\web\UrlManager::parseRequest"
                          [3] => float(1710830825.8886)
                          [4] => array(0) {
                          }
                          [5] => int(2658072)
                        }
                        [16] => array(6) {
                          [0] => array(3) {
                            ["rule"] => string(56) "https://www.cnzhengmu.com/news/collocation/<id:\d+>.html"
                            ["match"] => bool(false)
                            ["parent"] => NULL
                          }
                          [1] => int(8)
                          [2] => string(32) "yii\web\UrlManager::parseRequest"
                          [3] => float(1710830825.8887)
                          [4] => array(0) {
                          }
                          [5] => int(2658920)
                        }
                        [17] => array(6) {
                          [0] => array(3) {
                            ["rule"] => string(31) "https://www.cnzhengmu.com/wshop"
                            ["match"] => bool(false)
                            ["parent"] => NULL
                          }
                          [1] => int(8)
                          [2] => string(32) "yii\web\UrlManager::parseRequest"
                          [3] => float(1710830825.8887)
                          [4] => array(0) {
                          }
                          [5] => int(2660368)
                        }
                        [18] => array(6) {
                          [0] => array(3) {
                            ["rule"] => string(32) "https://www.cnzhengmu.com/member"
                            ["match"] => bool(false)
                            ["parent"] => NULL
                          }
                          [1] => int(8)
                          [2] => string(32) "yii\web\UrlManager::parseRequest"
                          [3] => float(1710830825.8887)
                          [4] => array(0) {
                          }
                          [5] => int(2661184)
                        }
                        [19] => array(6) {
                          [0] => array(3) {
                            ["rule"] => string(36) "https://www.cnzhengmu.com/news/cnews"
                            ["match"] => bool(false)
                            ["parent"] => NULL
                          }
                          [1] => int(8)
                          [2] => string(32) "yii\web\UrlManager::parseRequest"
                          [3] => float(1710830825.8887)
                          [4] => array(0) {
                          }
                          [5] => int(2662000)
                        }
                        [20] => array(6) {
                          [0] => array(3) {
                            ["rule"] => string(29) "https://www.cnzhengmu.com/wei"
                            ["match"] => bool(false)
                            ["parent"] => NULL
                          }
                          [1] => int(8)
                          [2] => string(32) "yii\web\UrlManager::parseRequest"
                          [3] => float(1710830825.8887)
                          [4] => array(0) {
                          }
                          [5] => int(2662808)
                        }
                        [21] => array(6) {
                          [0] => array(3) {
                            ["rule"] => string(49) "https://m.cnzhengmu.com/memberstore/<id:\d+>.html"
                            ["match"] => bool(false)
                            ["parent"] => NULL
                          }
                          [1] => int(8)
                          [2] => string(32) "yii\web\UrlManager::parseRequest"
                          [3] => float(1710830825.8887)
                          [4] => array(0) {
                          }
                          [5] => int(2663640)
                        }
                        [22] => array(6) {
                          [0] => array(3) {
                            ["rule"] => string(44) "https://m.cnzhengmu.com/author/<id:\d+>.html"
                            ["match"] => bool(false)
                            ["parent"] => NULL
                          }
                          [1] => int(8)
                          [2] => string(32) "yii\web\UrlManager::parseRequest"
                          [3] => float(1710830825.8887)
                          [4] => array(0) {
                          }
                          [5] => int(2664472)
                        }
                        [23] => array(6) {
                          [0] => array(3) {
                            ["rule"] => string(52) "https://m.cnzhengmu.com/author_article/<id:\d+>.html"
                            ["match"] => bool(false)
                            ["parent"] => NULL
                          }
                          [1] => int(8)
                          [2] => string(32) "yii\web\UrlManager::parseRequest"
                          [3] => float(1710830825.8887)
                          [4] => array(0) {
                          }
                          [5] => int(2665304)
                        }
                        [24] => array(6) {
                          [0] => array(3) {
                            ["rule"] => string(45) "https://m.cnzhengmu.com/company/<id:\d+>.html"
                            ["match"] => bool(false)
                            ["parent"] => NULL
                          }
                          [1] => int(8)
                          [2] => string(32) "yii\web\UrlManager::parseRequest"
                          [3] => float(1710830825.8887)
                          [4] => array(0) {
                          }
                          [5] => int(2666136)
                        }
                        [25] => array(6) {
                          [0] => array(3) {
                            ["rule"] => string(53) "https://m.cnzhengmu.com/company_aboutus/<id:\d+>.html"
                            ["match"] => bool(false)
                            ["parent"] => NULL
                          }
                          [1] => int(8)
                          [2] => string(32) "yii\web\UrlManager::parseRequest"
                          [3] => float(1710830825.8887)
                          [4] => array(0) {
                          }
                          [5] => int(2666968)
                        }
                        [26] => array(6) {
                          [0] => array(3) {
                            ["rule"] => string(50) "https://m.cnzhengmu.com/company_news/<id:\d+>.html"
                            ["match"] => bool(false)
                            ["parent"] => NULL
                          }
                          [1] => int(8)
                          [2] => string(32) "yii\web\UrlManager::parseRequest"
                          [3] => float(1710830825.8887)
                          [4] => array(0) {
                          }
                          [5] => int(2667800)
                        }
                        [27] => array(6) {
                          [0] => array(3) {
                            ["rule"] => string(65) "https://m.cnzhengmu.com/companynews/<companyId:\d+>-<id:\d+>.html"
                            ["match"] => bool(false)
                            ["parent"] => NULL
                          }
                          [1] => int(8)
                          [2] => string(32) "yii\web\UrlManager::parseRequest"
                          [3] => float(1710830825.8887)
                          [4] => array(0) {
                          }
                          [5] => int(2668648)
                        }
                        [28] => array(6) {
                          [0] => array(3) {
                            ["rule"] => string(53) "https://m.cnzhengmu.com/company_contact/<id:\d+>.html"
                            ["match"] => bool(false)
                            ["parent"] => NULL
                          }
                          [1] => int(8)
                          [2] => string(32) "yii\web\UrlManager::parseRequest"
                          [3] => float(1710830825.8887)
                          [4] => array(0) {
                          }
                          [5] => int(2669480)
                        }
                        [29] => array(6) {
                          [0] => array(3) {
                            ["rule"] => string(53) "https://m.cnzhengmu.com/company_product/<id:\d+>.html"
                            ["match"] => bool(false)
                            ["parent"] => NULL
                          }
                          [1] => int(8)
                          [2] => string(32) "yii\web\UrlManager::parseRequest"
                          [3] => float(1710830825.8887)
                          [4] => array(0) {
                          }
                          [5] => int(2670312)
                        }
                        [30] => array(6) {
                          [0] => array(3) {
                            ["rule"] => string(68) "https://m.cnzhengmu.com/productdetails/<companyId:\d+>-<id:\d+>.html"
                            ["match"] => bool(false)
                            ["parent"] => NULL
                          }
                          [1] => int(8)
                          [2] => string(32) "yii\web\UrlManager::parseRequest"
                          [3] => float(1710830825.8887)
                          [4] => array(0) {
                          }
                          [5] => int(2671160)
                        }
                        [31] => array(6) {
                          [0] => array(3) {
                            ["rule"] => string(53) "https://m.cnzhengmu.com/company_recruit/<id:\d+>.html"
                            ["match"] => bool(false)
                            ["parent"] => NULL
                          }
                          [1] => int(8)
                          [2] => string(32) "yii\web\UrlManager::parseRequest"
                          [3] => float(1710830825.8887)
                          [4] => array(0) {
                          }
                          [5] => int(2671992)
                        }
                        [32] => array(6) {
                          [0] => array(3) {
                            ["rule"] => string(68) "https://m.cnzhengmu.com/recruitdetails/<companyId:\d+>-<id:\d+>.html"
                            ["match"] => bool(false)
                            ["parent"] => NULL
                          }
                          [1] => int(8)
                          [2] => string(32) "yii\web\UrlManager::parseRequest"
                          [3] => float(1710830825.8888)
                          [4] => array(0) {
                          }
                          [5] => int(2672840)
                        }
                        [33] => array(6) {
                          [0] => array(3) {
                            ["rule"] => string(66) "https://m.cnzhengmu.com/resume_apply/<companyId:\d+>-<id:\d+>.html"
                            ["match"] => bool(false)
                            ["parent"] => NULL
                          }
                          [1] => int(8)
                          [2] => string(32) "yii\web\UrlManager::parseRequest"
                          [3] => float(1710830825.8888)
                          [4] => array(0) {
                          }
                          [5] => int(2674968)
                        }
                        [34] => array(6) {
                          [0] => array(3) {
                            ["rule"] => string(31) "https://m.cnzhengmu.com/recruit"
                            ["match"] => bool(false)
                            ["parent"] => NULL
                          }
                          [1] => int(8)
                          [2] => string(32) "yii\web\UrlManager::parseRequest"
                          [3] => float(1710830825.8888)
                          [4] => array(0) {
                          }
                          [5] => int(2675776)
                        }
                        [35] => array(6) {
                          [0] => array(3) {
                            ["rule"] => string(38) "https://m.cnzhengmu.com/recruit/talent"
                            ["match"] => bool(false)
                            ["parent"] => NULL
                          }
                          [1] => int(8)
                          [2] => string(32) "yii\web\UrlManager::parseRequest"
                          [3] => float(1710830825.8888)
                          [4] => array(0) {
                          }
                          [5] => int(2676592)
                        }
                        [36] => array(6) {
                          [0] => array(3) {
                            ["rule"] => string(53) "https://m.cnzhengmu.com/list-<id:\d+>-<page:\d+>.html"
                            ["match"] => bool(false)
                            ["parent"] => NULL
                          }
                          [1] => int(8)
                          [2] => string(32) "yii\web\UrlManager::parseRequest"
                          [3] => float(1710830825.8888)
                          [4] => array(0) {
                          }
                          [5] => int(2677424)
                        }
                        [37] => array(6) {
                          [0] => string(72) "Request parsed with URL rule: https://m.cnzhengmu.com/list-<id:\d+>.html"
                          [1] => int(8)
                          [2] => string(29) "yii\web\UrlRule::parseRequest"
                          [3] => float(1710830825.8888)
                          [4] => array(0) {
                          }
                          [5] => int(2679256)
                        }
                        [38] => array(6) {
                          [0] => array(3) {
                            ["rule"] => string(42) "https://m.cnzhengmu.com/list-<id:\d+>.html"
                            ["match"] => bool(true)
                            ["parent"] => NULL
                          }
                          [1] => int(8)
                          [2] => string(32) "yii\web\UrlManager::parseRequest"
                          [3] => float(1710830825.8888)
                          [4] => array(0) {
                          }
                          [5] => int(2679528)
                        }
                        [39] => array(6) {
                          [0] => string(38) "Route requested: 'mobile/column/index'"
                          [1] => int(8)
                          [2] => string(34) "yii\web\Application::handleRequest"
                          [3] => float(1710830825.8888)
                          [4] => array(0) {
                          }
                          [5] => int(2678840)
                        }
                        [40] => array(6) {
                          [0] => string(22) "Loading module: mobile"
                          [1] => int(8)
                          [2] => string(26) "yii\base\Module::getModule"
                          [3] => float(1710830825.8888)
                          [4] => array(0) {
                          }
                          [5] => int(2680464)
                        }
                        [41] => array(6) {
                          [0] => string(55) "Opening redis DB connection: 127.0.0.1:6379, database=3"
                          [1] => int(8)
                          [2] => string(26) "yii\redis\Connection::open"
                          [3] => float(1710830825.8933)
                          [4] => array(2) {
                            [0] => array(5) {
                              ["file"] => string(54) "/data/web/zhengmu/yiiframework/services/WebService.php"
                              ["line"] => int(25)
                              ["function"] => string(6) "__call"
                              ["class"] => string(20) "yii\redis\Connection"
                              ["type"] => string(2) "->"
                            }
                            [1] => array(5) {
                              ["file"] => string(61) "/data/web/zhengmu/yiiframework/controllers/BaseController.php"
                              ["line"] => int(34)
                              ["function"] => string(7) "getData"
                              ["class"] => string(23) "app\services\WebService"
                              ["type"] => string(2) "->"
                            }
                          }
                          [5] => int(3097152)
                        }
                        [42] => array(6) {
                          [0] => string(29) "Executing Redis Command: AUTH"
                          [1] => int(8)
                          [2] => string(36) "yii\redis\Connection::executeCommand"
                          [3] => float(1710830825.8934)
                          [4] => array(2) {
                            [0] => array(5) {
                              ["file"] => string(54) "/data/web/zhengmu/yiiframework/services/WebService.php"
                              ["line"] => int(25)
                              ["function"] => string(6) "__call"
                              ["class"] => string(20) "yii\redis\Connection"
                              ["type"] => string(2) "->"
                            }
                            [1] => array(5) {
                              ["file"] => string(61) "/data/web/zhengmu/yiiframework/controllers/BaseController.php"
                              ["line"] => int(34)
                              ["function"] => string(7) "getData"
                              ["class"] => string(23) "app\services\WebService"
                              ["type"] => string(2) "->"
                            }
                          }
                          [5] => int(3100032)
                        }
                        [43] => array(6) {
                          [0] => string(31) "Executing Redis Command: SELECT"
                          [1] => int(8)
                          [2] => string(36) "yii\redis\Connection::executeCommand"
                          [3] => float(1710830825.8935)
                          [4] => array(2) {
                            [0] => array(5) {
                              ["file"] => string(54) "/data/web/zhengmu/yiiframework/services/WebService.php"
                              ["line"] => int(25)
                              ["function"] => string(6) "__call"
                              ["class"] => string(20) "yii\redis\Connection"
                              ["type"] => string(2) "->"
                            }
                            [1] => array(5) {
                              ["file"] => string(61) "/data/web/zhengmu/yiiframework/controllers/BaseController.php"
                              ["line"] => int(34)
                              ["function"] => string(7) "getData"
                              ["class"] => string(23) "app\services\WebService"
                              ["type"] => string(2) "->"
                            }
                          }
                          [5] => int(3109768)
                        }
                        [44] => array(6) {
                          [0] => string(28) "Executing Redis Command: GET"
                          [1] => int(8)
                          [2] => string(36) "yii\redis\Connection::executeCommand"
                          [3] => float(1710830825.8936)
                          [4] => array(2) {
                            [0] => array(5) {
                              ["file"] => string(54) "/data/web/zhengmu/yiiframework/services/WebService.php"
                              ["line"] => int(25)
                              ["function"] => string(6) "__call"
                              ["class"] => string(20) "yii\redis\Connection"
                              ["type"] => string(2) "->"
                            }
                            [1] => array(5) {
                              ["file"] => string(61) "/data/web/zhengmu/yiiframework/controllers/BaseController.php"
                              ["line"] => int(34)
                              ["function"] => string(7) "getData"
                              ["class"] => string(23) "app\services\WebService"
                              ["type"] => string(2) "->"
                            }
                          }
                          [5] => int(3110480)
                        }
                        [45] => array(6) {
                          [0] => string(33) "Route to run: mobile/column/index"
                          [1] => int(8)
                          [2] => string(30) "yii\base\Controller::runAction"
                          [3] => float(1710830825.8941)
                          [4] => array(0) {
                          }
                          [5] => int(3125264)
                        }
                        [46] => array(6) {
                          [0] => string(78) "Running action: app\modules\mobile\controllers\ColumnController::actionIndex()"
                          [1] => int(8)
                          [2] => string(36) "yii\base\InlineAction::runWithParams"
                          [3] => float(1710830825.8971)
                          [4] => array(0) {
                          }
                          [5] => int(3439216)
                        }
                        [47] => array(6) {
                          [0] => string(29) "Executing Redis Command: HGET"
                          [1] => int(8)
                          [2] => string(36) "yii\redis\Connection::executeCommand"
                          [3] => float(1710830825.8984)
                          [4] => array(2) {
                            [0] => array(5) {
                              ["file"] => string(72) "/data/web/zhengmu/yiiframework/modules/mobile/services/ColumnService.php"
                              ["line"] => int(133)
                              ["function"] => string(6) "__call"
                              ["class"] => string(20) "yii\redis\Connection"
                              ["type"] => string(2) "->"
                            }
                            [1] => array(5) {
                              ["file"] => string(78) "/data/web/zhengmu/yiiframework/modules/mobile/controllers/ColumnController.php"
                              ["line"] => int(44)
                              ["function"] => string(11) "getDataById"
                              ["class"] => string(41) "app\modules\mobile\services\ColumnService"
                              ["type"] => string(2) "->"
                            }
                          }
                          [5] => int(3584896)
                        }
                        [48] => array(6) {
                          [0] => string(68) "Opening DB connection: mysql:host=127.0.0.1;port=3306;dbname=zhengmu"
                          [1] => int(4)
                          [2] => string(23) "yii\db\Connection::open"
                          [3] => float(1710830825.913)
                          [4] => array(3) {
                            [0] => array(5) {
                              ["file"] => string(51) "/data/web/zhengmu/yiiframework/models/BaseModel.php"
                              ["line"] => int(48)
                              ["function"] => string(3) "one"
                              ["class"] => string(18) "yii\db\ActiveQuery"
                              ["type"] => string(2) "->"
                            }
                            [1] => array(5) {
                              ["file"] => string(72) "/data/web/zhengmu/yiiframework/modules/mobile/services/ColumnService.php"
                              ["line"] => int(94)
                              ["function"] => string(7) "getData"
                              ["class"] => string(20) "app\models\BaseModel"
                              ["type"] => string(2) "::"
                            }
                            [2] => array(5) {
                              ["file"] => string(72) "/data/web/zhengmu/yiiframework/modules/mobile/services/ColumnService.php"
                              ["line"] => int(137)
                              ["function"] => string(7) "getData"
                              ["class"] => string(41) "app\modules\mobile\services\ColumnService"
                              ["type"] => string(2) "->"
                            }
                          }
                          [5] => int(5182952)
                        }
                        [49] => array(6) {
                          [0] => string(68) "Opening DB connection: mysql:host=127.0.0.1;port=3306;dbname=zhengmu"
                          [1] => int(80)
                          [2] => string(23) "yii\db\Connection::open"
                          [3] => float(1710830825.9131)
                          [4] => array(3) {
                            [0] => array(5) {
                              ["file"] => string(51) "/data/web/zhengmu/yiiframework/models/BaseModel.php"
                              ["line"] => int(48)
                              ["function"] => string(3) "one"
                              ["class"] => string(18) "yii\db\ActiveQuery"
                              ["type"] => string(2) "->"
                            }
                            [1] => array(5) {
                              ["file"] => string(72) "/data/web/zhengmu/yiiframework/modules/mobile/services/ColumnService.php"
                              ["line"] => int(94)
                              ["function"] => string(7) "getData"
                              ["class"] => string(20) "app\models\BaseModel"
                              ["type"] => string(2) "::"
                            }
                            [2] => array(5) {
                              ["file"] => string(72) "/data/web/zhengmu/yiiframework/modules/mobile/services/ColumnService.php"
                              ["line"] => int(137)
                              ["function"] => string(7) "getData"
                              ["class"] => string(41) "app\modules\mobile\services\ColumnService"
                              ["type"] => string(2) "->"
                            }
                          }
                          [5] => int(5184832)
                        }
                        [50] => array(6) {
                          [0] => string(68) "Opening DB connection: mysql:host=127.0.0.1;port=3306;dbname=zhengmu"
                          [1] => int(96)
                          [2] => string(23) "yii\db\Connection::open"
                          [3] => float(1710830825.9137)
                          [4] => array(3) {
                            [0] => array(5) {
                              ["file"] => string(51) "/data/web/zhengmu/yiiframework/models/BaseModel.php"
                              ["line"] => int(48)
                              ["function"] => string(3) "one"
                              ["class"] => string(18) "yii\db\ActiveQuery"
                              ["type"] => string(2) "->"
                            }
                            [1] => array(5) {
                              ["file"] => string(72) "/data/web/zhengmu/yiiframework/modules/mobile/services/ColumnService.php"
                              ["line"] => int(94)
                              ["function"] => string(7) "getData"
                              ["class"] => string(20) "app\models\BaseModel"
                              ["type"] => string(2) "::"
                            }
                            [2] => array(5) {
                              ["file"] => string(72) "/data/web/zhengmu/yiiframework/modules/mobile/services/ColumnService.php"
                              ["line"] => int(137)
                              ["function"] => string(7) "getData"
                              ["class"] => string(41) "app\modules\mobile\services\ColumnService"
                              ["type"] => string(2) "->"
                            }
                          }
                          [5] => int(5197704)
                        }
                        [51] => array(6) {
                          [0] => string(38) "SELECT * FROM `column` WHERE `id`='27'"
                          [1] => int(4)
                          [2] => string(21) "yii\db\Command::query"
                          [3] => float(1710830825.9137)
                          [4] => array(3) {
                            [0] => array(5) {
                              ["file"] => string(51) "/data/web/zhengmu/yiiframework/models/BaseModel.php"
                              ["line"] => int(48)
                              ["function"] => string(3) "one"
                              ["class"] => string(18) "yii\db\ActiveQuery"
                              ["type"] => string(2) "->"
                            }
                            [1] => array(5) {
                              ["file"] => string(72) "/data/web/zhengmu/yiiframework/modules/mobile/services/ColumnService.php"
                              ["line"] => int(94)
                              ["function"] => string(7) "getData"
                              ["class"] => string(20) "app\models\BaseModel"
                              ["type"] => string(2) "::"
                            }
                            [2] => array(5) {
                              ["file"] => string(72) "/data/web/zhengmu/yiiframework/modules/mobile/services/ColumnService.php"
                              ["line"] => int(137)
                              ["function"] => string(7) "getData"
                              ["class"] => string(41) "app\modules\mobile\services\ColumnService"
                              ["type"] => string(2) "->"
                            }
                          }
                          [5] => int(5197392)
                        }
                        [52] => array(6) {
                          [0] => string(38) "SELECT * FROM `column` WHERE `id`='27'"
                          [1] => int(80)
                          [2] => string(21) "yii\db\Command::query"
                          [3] => float(1710830825.9137)
                          [4] => array(3) {
                            [0] => array(5) {
                              ["file"] => string(51) "/data/web/zhengmu/yiiframework/models/BaseModel.php"
                              ["line"] => int(48)
                              ["function"] => string(3) "one"
                              ["class"] => string(18) "yii\db\ActiveQuery"
                              ["type"] => string(2) "->"
                            }
                            [1] => array(5) {
                              ["file"] => string(72) "/data/web/zhengmu/yiiframework/modules/mobile/services/ColumnService.php"
                              ["line"] => int(94)
                              ["function"] => string(7) "getData"
                              ["class"] => string(20) "app\models\BaseModel"
                              ["type"] => string(2) "::"
                            }
                            [2] => array(5) {
                              ["file"] => string(72) "/data/web/zhengmu/yiiframework/modules/mobile/services/ColumnService.php"
                              ["line"] => int(137)
                              ["function"] => string(7) "getData"
                              ["class"] => string(41) "app\modules\mobile\services\ColumnService"
                              ["type"] => string(2) "->"
                            }
                          }
                          [5] => int(5199040)
                        }
                        [53] => array(6) {
                          [0] => string(38) "SELECT * FROM `column` WHERE `id`='27'"
                          [1] => int(96)
                          [2] => string(21) "yii\db\Command::query"
                          [3] => float(1710830825.9141)
                          [4] => array(3) {
                            [0] => array(5) {
                              ["file"] => string(51) "/data/web/zhengmu/yiiframework/models/BaseModel.php"
                              ["line"] => int(48)
                              ["function"] => string(3) "one"
                              ["class"] => string(18) "yii\db\ActiveQuery"
                              ["type"] => string(2) "->"
                            }
                            [1] => array(5) {
                              ["file"] => string(72) "/data/web/zhengmu/yiiframework/modules/mobile/services/ColumnService.php"
                              ["line"] => int(94)
                              ["function"] => string(7) "getData"
                              ["class"] => string(20) "app\models\BaseModel"
                              ["type"] => string(2) "::"
                            }
                            [2] => array(5) {
                              ["file"] => string(72) "/data/web/zhengmu/yiiframework/modules/mobile/services/ColumnService.php"
                              ["line"] => int(137)
                              ["function"] => string(7) "getData"
                              ["class"] => string(41) "app\modules\mobile\services\ColumnService"
                              ["type"] => string(2) "->"
                            }
                          }
                          [5] => int(5203880)
                        }
                        [54] => array(6) {
                          [0] => *RECURSION*
                          [1] => int(1)
                          [2] => string(25) "yii\web\HttpException:404"
                          [3] => float(1710830825.9145)
                          [4] => array(0) {
                          }
                          [5] => int(5206064)
                        }
                        [55] => array(6) {
                          [0] => string(28) "Executing Redis Command: GET"
                          [1] => int(8)
                          [2] => string(36) "yii\redis\Connection::executeCommand"
                          [3] => float(1710830825.9147)
                          [4] => array(2) {
                            [0] => array(5) {
                              ["file"] => string(54) "/data/web/zhengmu/yiiframework/services/WebService.php"
                              ["line"] => int(25)
                              ["function"] => string(6) "__call"
                              ["class"] => string(20) "yii\redis\Connection"
                              ["type"] => string(2) "->"
                            }
                            [1] => array(5) {
                              ["file"] => string(61) "/data/web/zhengmu/yiiframework/controllers/BaseController.php"
                              ["line"] => int(34)
                              ["function"] => string(7) "getData"
                              ["class"] => string(23) "app\services\WebService"
                              ["type"] => string(2) "->"
                            }
                          }
                          [5] => int(5215824)
                        }
                        [56] => array(6) {
                          [0] => string(32) "Route to run: mobile/error/index"
                          [1] => int(8)
                          [2] => string(30) "yii\base\Controller::runAction"
                          [3] => float(1710830825.9149)
                          [4] => array(0) {
                          }
                          [5] => int(5214888)
                        }
                        [57] => array(6) {
                          [0] => string(77) "Running action: app\modules\mobile\controllers\ErrorController::actionIndex()"
                          [1] => int(8)
                          [2] => string(36) "yii\base\InlineAction::runWithParams"
                          [3] => float(1710830825.915)
                          [4] => array(0) {
                          }
                          [5] => int(5219352)
                        }
                      }
                      ["flushInterval"] => int(1000)
                      ["traceLevel"] => int(3)
                      ["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)#21 (12) {
                    ["keyPrefix"] => string(0) ""
                    ["cachePath"] => string(44) "/data/web/zhengmu/yiiframework/runtime/cache"
                    ["cacheFileSuffix"] => string(4) ".bin"
                    ["directoryLevel"] => int(1)
                    ["gcProbability"] => int(10)
                    ["fileMode"] => NULL
                    ["dirMode"] => int(509)
                    ["serializer"] => NULL
                    ["defaultDuration"] => int(0)
                    ["_events":"yii\base\Component":private] => array(0) {
                    }
                    ["_eventWildcards":"yii\base\Component":private] => array(0) {
                    }
                    ["_behaviors":"yii\base\Component":private] => NULL
                  }
                  ["urlManager"] => object(yii\web\UrlManager)#19 (17) {
                    ["enablePrettyUrl"] => bool(true)
                    ["enableStrictParsing"] => bool(false)
                    ["rules"] => array(80) {
                      [0] => object(yii\web\UrlRule)#20 (16) {
                        ["name"] => string(51) "https://www.cnzhengmu.com/endorsement/<id:\d+>.html"
                        ["pattern"] => string(69) "#^https://www\.cnzhengmu\.com/endorsement/(?P<abf396750>\d+)\.html$#u"
                        ["host"] => string(25) "https://www.cnzhengmu.com"
                        ["route"] => string(19) "pc/specials/details"
                        ["defaults"] => array(0) {
                        }
                        ["suffix"] => NULL
                        ["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(47) "https://www.cnzhengmu.com/endorsement/<id>.html"
                        ["_routeRule":"yii\web\UrlRule":private] => NULL
                        ["_paramRules":"yii\web\UrlRule":private] => array(1) {
                          ["id"] => string(8) "#^\d+$#u"
                        }
                        ["_routeParams":"yii\web\UrlRule":private] => array(0) {
                        }
                      }
                      [1] => object(yii\web\UrlRule)#22 (16) {
                        ["name"] => string(64) "https://www.cnzhengmu.com/shangxueyuan/specialnews/<id:\d+>.html"
                        ["pattern"] => string(82) "#^https://www\.cnzhengmu\.com/shangxueyuan/specialnews/(?P<abf396750>\d+)\.html$#u"
                        ["host"] => string(25) "https://www.cnzhengmu.com"
                        ["route"] => string(29) "pc/personalcolumn/specialnews"
                        ["defaults"] => array(0) {
                        }
                        ["suffix"] => NULL
                        ["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(60) "https://www.cnzhengmu.com/shangxueyuan/specialnews/<id>.html"
                        ["_routeRule":"yii\web\UrlRule":private] => NULL
                        ["_paramRules":"yii\web\UrlRule":private] => array(1) {
                          ["id"] => string(8) "#^\d+$#u"
                        }
                        ["_routeParams":"yii\web\UrlRule":private] => array(0) {
                        }
                      }
                      [2] => object(yii\web\UrlRule)#23 (16) {
                        ["name"] => string(51) "https://www.cnzhengmu.com/speciallist/<id:\d+>.html"
                        ["pattern"] => string(69) "#^https://www\.cnzhengmu\.com/speciallist/(?P<abf396750>\d+)\.html$#u"
                        ["host"] => string(25) "https://www.cnzhengmu.com"
                        ["route"] => string(29) "pc/personalcolumn/speciallist"
                        ["defaults"] => array(0) {
                        }
                        ["suffix"] => NULL
                        ["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(47) "https://www.cnzhengmu.com/speciallist/<id>.html"
                        ["_routeRule":"yii\web\UrlRule":private] => NULL
                        ["_paramRules":"yii\web\UrlRule":private] => array(1) {
                          ["id"] => string(8) "#^\d+$#u"
                        }
                        ["_routeParams":"yii\web\UrlRule":private] => array(0) {
                        }
                      }
                      [3] => object(yii\web\UrlRule)#24 (16) {
                        ["name"] => string(51) "https://www.cnzhengmu.com/memberstore/<id:\d+>.html"
                        ["pattern"] => string(69) "#^https://www\.cnzhengmu\.com/memberstore/(?P<abf396750>\d+)\.html$#u"
                        ["host"] => string(25) "https://www.cnzhengmu.com"
                        ["route"] => string(20) "pc/memberstore/index"
                        ["defaults"] => array(0) {
                        }
                        ["suffix"] => NULL
                        ["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(47) "https://www.cnzhengmu.com/memberstore/<id>.html"
                        ["_routeRule":"yii\web\UrlRule":private] => NULL
                        ["_paramRules":"yii\web\UrlRule":private] => array(1) {
                          ["id"] => string(8) "#^\d+$#u"
                        }
                        ["_routeParams":"yii\web\UrlRule":private] => array(0) {
                        }
                      }
                      [4] => object(yii\web\UrlRule)#25 (16) {
                        ["name"] => string(52) "https://www.cnzhengmu.com/strategynews/<id:\d+>.html"
                        ["pattern"] => string(70) "#^https://www\.cnzhengmu\.com/strategynews/(?P<abf396750>\d+)\.html$#u"
                        ["host"] => string(25) "https://www.cnzhengmu.com"
                        ["route"] => string(25) "pc/knowledge/strategynews"
                        ["defaults"] => array(0) {
                        }
                        ["suffix"] => NULL
                        ["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(48) "https://www.cnzhengmu.com/strategynews/<id>.html"
                        ["_routeRule":"yii\web\UrlRule":private] => NULL
                        ["_paramRules":"yii\web\UrlRule":private] => array(1) {
                          ["id"] => string(8) "#^\d+$#u"
                        }
                        ["_routeParams":"yii\web\UrlRule":private] => array(0) {
                        }
                      }
                      [5] => object(yii\web\UrlRule)#26 (16) {
                        ["name"] => string(35) "https://www.cnzhengmu.com/knowledge"
                        ["pattern"] => string(42) "#^https://www\.cnzhengmu\.com/knowledge$#u"
                        ["host"] => string(25) "https://www.cnzhengmu.com"
                        ["route"] => string(18) "pc/knowledge/index"
                        ["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(35) "https://www.cnzhengmu.com/knowledge"
                        ["_routeRule":"yii\web\UrlRule":private] => NULL
                        ["_paramRules":"yii\web\UrlRule":private] => array(0) {
                        }
                        ["_routeParams":"yii\web\UrlRule":private] => array(0) {
                        }
                      }
                      [6] => object(yii\web\UrlRule)#27 (16) {
                        ["name"] => string(39) "https://www.cnzhengmu.com/news/logdiary"
                        ["pattern"] => string(46) "#^https://www\.cnzhengmu\.com/news/logdiary$#u"
                        ["host"] => string(25) "https://www.cnzhengmu.com"
                        ["route"] => string(17) "pc/logdiary/index"
                        ["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(39) "https://www.cnzhengmu.com/news/logdiary"
                        ["_routeRule":"yii\web\UrlRule":private] => NULL
                        ["_paramRules":"yii\web\UrlRule":private] => array(0) {
                        }
                        ["_routeParams":"yii\web\UrlRule":private] => array(0) {
                        }
                      }
                      [7] => object(yii\web\UrlRule)#28 (16) {
                        ["name"] => string(53) "https://www.cnzhengmu.com/news/logdiary/<id:\d+>.html"
                        ["pattern"] => string(71) "#^https://www\.cnzhengmu\.com/news/logdiary/(?P<abf396750>\d+)\.html$#u"
                        ["host"] => string(25) "https://www.cnzhengmu.com"
                        ["route"] => string(24) "pc/logdiary/strategynews"
                        ["defaults"] => array(0) {
                        }
                        ["suffix"] => NULL
                        ["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(49) "https://www.cnzhengmu.com/news/logdiary/<id>.html"
                        ["_routeRule":"yii\web\UrlRule":private] => NULL
                        ["_paramRules":"yii\web\UrlRule":private] => array(1) {
                          ["id"] => string(8) "#^\d+$#u"
                        }
                        ["_routeParams":"yii\web\UrlRule":private] => array(0) {
                        }
                      }
                      [8] => object(yii\web\UrlRule)#29 (16) {
                        ["name"] => string(35) "https://www.cnzhengmu.com/news/home"
                        ["pattern"] => string(42) "#^https://www\.cnzhengmu\.com/news/home$#u"
                        ["host"] => string(25) "https://www.cnzhengmu.com"
                        ["route"] => string(13) "pc/home/index"
                        ["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(35) "https://www.cnzhengmu.com/news/home"
                        ["_routeRule":"yii\web\UrlRule":private] => NULL
                        ["_paramRules":"yii\web\UrlRule":private] => array(0) {
                        }
                        ["_routeParams":"yii\web\UrlRule":private] => array(0) {
                        }
                      }
                      [9] => object(yii\web\UrlRule)#30 (16) {
                        ["name"] => string(49) "https://www.cnzhengmu.com/news/home/<id:\d+>.html"
                        ["pattern"] => string(67) "#^https://www\.cnzhengmu\.com/news/home/(?P<abf396750>\d+)\.html$#u"
                        ["host"] => string(25) "https://www.cnzhengmu.com"
                        ["route"] => string(20) "pc/home/strategynews"
                        ["defaults"] => array(0) {
                        }
                        ["suffix"] => NULL
                        ["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(45) "https://www.cnzhengmu.com/news/home/<id>.html"
                        ["_routeRule":"yii\web\UrlRule":private] => NULL
                        ["_paramRules":"yii\web\UrlRule":private] => array(1) {
                          ["id"] => string(8) "#^\d+$#u"
                        }
                        ["_routeParams":"yii\web\UrlRule":private] => array(0) {
                        }
                      }
                      [10] => object(yii\web\UrlRule)#31 (16) {
                        ["name"] => string(36) "https://www.cnzhengmu.com/news/brand"
                        ["pattern"] => string(43) "#^https://www\.cnzhengmu\.com/news/brand$#u"
                        ["host"] => string(25) "https://www.cnzhengmu.com"
                        ["route"] => string(14) "pc/brand/index"
                        ["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(36) "https://www.cnzhengmu.com/news/brand"
                        ["_routeRule":"yii\web\UrlRule":private] => NULL
                        ["_paramRules":"yii\web\UrlRule":private] => array(0) {
                        }
                        ["_routeParams":"yii\web\UrlRule":private] => array(0) {
                        }
                      }
                      [11] => object(yii\web\UrlRule)#32 (16) {
                        ["name"] => string(50) "https://www.cnzhengmu.com/news/brand/<id:\d+>.html"
                        ["pattern"] => string(68) "#^https://www\.cnzhengmu\.com/news/brand/(?P<abf396750>\d+)\.html$#u"
                        ["host"] => string(25) "https://www.cnzhengmu.com"
                        ["route"] => string(21) "pc/brand/strategynews"
                        ["defaults"] => array(0) {
                        }
                        ["suffix"] => NULL
                        ["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(46) "https://www.cnzhengmu.com/news/brand/<id>.html"
                        ["_routeRule":"yii\web\UrlRule":private] => NULL
                        ["_paramRules":"yii\web\UrlRule":private] => array(1) {
                          ["id"] => string(8) "#^\d+$#u"
                        }
                        ["_routeParams":"yii\web\UrlRule":private] => array(0) {
                        }
                      }
                      [12] => object(yii\web\UrlRule)#33 (16) {
                        ["name"] => string(37) "https://www.cnzhengmu.com/news/choose"
                        ["pattern"] => string(44) "#^https://www\.cnzhengmu\.com/news/choose$#u"
                        ["host"] => string(25) "https://www.cnzhengmu.com"
                        ["route"] => string(15) "pc/choose/index"
                        ["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(37) "https://www.cnzhengmu.com/news/choose"
                        ["_routeRule":"yii\web\UrlRule":private] => NULL
                        ["_paramRules":"yii\web\UrlRule":private] => array(0) {
                        }
                        ["_routeParams":"yii\web\UrlRule":private] => array(0) {
                        }
                      }
                      [13] => object(yii\web\UrlRule)#34 (16) {
                        ["name"] => string(51) "https://www.cnzhengmu.com/news/choose/<id:\d+>.html"
                        ["pattern"] => string(69) "#^https://www\.cnzhengmu\.com/news/choose/(?P<abf396750>\d+)\.html$#u"
                        ["host"] => string(25) "https://www.cnzhengmu.com"
                        ["route"] => string(22) "pc/choose/strategynews"
                        ["defaults"] => array(0) {
                        }
                        ["suffix"] => NULL
                        ["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(47) "https://www.cnzhengmu.com/news/choose/<id>.html"
                        ["_routeRule":"yii\web\UrlRule":private] => NULL
                        ["_paramRules":"yii\web\UrlRule":private] => array(1) {
                          ["id"] => string(8) "#^\d+$#u"
                        }
                        ["_routeParams":"yii\web\UrlRule":private] => array(0) {
                        }
                      }
                      [14] => object(yii\web\UrlRule)#35 (16) {
                        ["name"] => string(42) "https://www.cnzhengmu.com/news/collocation"
                        ["pattern"] => string(49) "#^https://www\.cnzhengmu\.com/news/collocation$#u"
                        ["host"] => string(25) "https://www.cnzhengmu.com"
                        ["route"] => string(20) "pc/collocation/index"
                        ["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(42) "https://www.cnzhengmu.com/news/collocation"
                        ["_routeRule":"yii\web\UrlRule":private] => NULL
                        ["_paramRules":"yii\web\UrlRule":private] => array(0) {
                        }
                        ["_routeParams":"yii\web\UrlRule":private] => array(0) {
                        }
                      }
                      [15] => object(yii\web\UrlRule)#36 (16) {
                        ["name"] => string(56) "https://www.cnzhengmu.com/news/collocation/<id:\d+>.html"
                        ["pattern"] => string(74) "#^https://www\.cnzhengmu\.com/news/collocation/(?P<abf396750>\d+)\.html$#u"
                        ["host"] => string(25) "https://www.cnzhengmu.com"
                        ["route"] => string(27) "pc/collocation/strategynews"
                        ["defaults"] => array(0) {
                        }
                        ["suffix"] => NULL
                        ["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(52) "https://www.cnzhengmu.com/news/collocation/<id>.html"
                        ["_routeRule":"yii\web\UrlRule":private] => NULL
                        ["_paramRules":"yii\web\UrlRule":private] => array(1) {
                          ["id"] => string(8) "#^\d+$#u"
                        }
                        ["_routeParams":"yii\web\UrlRule":private] => array(0) {
                        }
                      }
                      [16] => object(yii\web\UrlRule)#37 (16) {
                        ["name"] => string(31) "https://www.cnzhengmu.com/wshop"
                        ["pattern"] => string(38) "#^https://www\.cnzhengmu\.com/wshop$#u"
                        ["host"] => string(25) "https://www.cnzhengmu.com"
                        ["route"] => string(16) "pc/display/wshop"
                        ["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(31) "https://www.cnzhengmu.com/wshop"
                        ["_routeRule":"yii\web\UrlRule":private] => NULL
                        ["_paramRules":"yii\web\UrlRule":private] => array(0) {
                        }
                        ["_routeParams":"yii\web\UrlRule":private] => array(0) {
                        }
                      }
                      [17] => object(yii\web\UrlRule)#38 (16) {
                        ["name"] => string(32) "https://www.cnzhengmu.com/member"
                        ["pattern"] => string(39) "#^https://www\.cnzhengmu\.com/member$#u"
                        ["host"] => string(25) "https://www.cnzhengmu.com"
                        ["route"] => string(17) "pc/display/member"
                        ["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(32) "https://www.cnzhengmu.com/member"
                        ["_routeRule":"yii\web\UrlRule":private] => NULL
                        ["_paramRules":"yii\web\UrlRule":private] => array(0) {
                        }
                        ["_routeParams":"yii\web\UrlRule":private] => array(0) {
                        }
                      }
                      [18] => object(yii\web\UrlRule)#39 (16) {
                        ["name"] => string(36) "https://www.cnzhengmu.com/news/cnews"
                        ["pattern"] => string(43) "#^https://www\.cnzhengmu\.com/news/cnews$#u"
                        ["host"] => string(25) "https://www.cnzhengmu.com"
                        ["route"] => string(21) "pc/column/companynews"
                        ["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(36) "https://www.cnzhengmu.com/news/cnews"
                        ["_routeRule":"yii\web\UrlRule":private] => NULL
                        ["_paramRules":"yii\web\UrlRule":private] => array(0) {
                        }
                        ["_routeParams":"yii\web\UrlRule":private] => array(0) {
                        }
                      }
                      [19] => object(yii\web\UrlRule)#40 (16) {
                        ["name"] => string(29) "https://www.cnzhengmu.com/wei"
                        ["pattern"] => string(36) "#^https://www\.cnzhengmu\.com/wei$#u"
                        ["host"] => string(25) "https://www.cnzhengmu.com"
                        ["route"] => string(14) "pc/default/wei"
                        ["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(29) "https://www.cnzhengmu.com/wei"
                        ["_routeRule":"yii\web\UrlRule":private] => NULL
                        ["_paramRules":"yii\web\UrlRule":private] => array(0) {
                        }
                        ["_routeParams":"yii\web\UrlRule":private] => array(0) {
                        }
                      }
                      [20] => object(yii\web\UrlRule)#41 (16) {
                        ["name"] => string(49) "https://m.cnzhengmu.com/memberstore/<id:\d+>.html"
                        ["pattern"] => string(67) "#^https://m\.cnzhengmu\.com/memberstore/(?P<abf396750>\d+)\.html$#u"
                        ["host"] => string(23) "https://m.cnzhengmu.com"
                        ["route"] => string(24) "mobile/memberstore/index"
                        ["defaults"] => array(0) {
                        }
                        ["suffix"] => NULL
                        ["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(45) "https://m.cnzhengmu.com/memberstore/<id>.html"
                        ["_routeRule":"yii\web\UrlRule":private] => NULL
                        ["_paramRules":"yii\web\UrlRule":private] => array(1) {
                          ["id"] => string(8) "#^\d+$#u"
                        }
                        ["_routeParams":"yii\web\UrlRule":private] => array(0) {
                        }
                      }
                      [21] => object(yii\web\UrlRule)#42 (16) {
                        ["name"] => string(44) "https://m.cnzhengmu.com/author/<id:\d+>.html"
                        ["pattern"] => string(62) "#^https://m\.cnzhengmu\.com/author/(?P<abf396750>\d+)\.html$#u"
                        ["host"] => string(23) "https://m.cnzhengmu.com"
                        ["route"] => string(25) "mobile/author/speciallist"
                        ["defaults"] => array(0) {
                        }
                        ["suffix"] => NULL
                        ["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(40) "https://m.cnzhengmu.com/author/<id>.html"
                        ["_routeRule":"yii\web\UrlRule":private] => NULL
                        ["_paramRules":"yii\web\UrlRule":private] => array(1) {
                          ["id"] => string(8) "#^\d+$#u"
                        }
                        ["_routeParams":"yii\web\UrlRule":private] => array(0) {
                        }
                      }
                      [22] => object(yii\web\UrlRule)#43 (16) {
                        ["name"] => string(52) "https://m.cnzhengmu.com/author_article/<id:\d+>.html"
                        ["pattern"] => string(70) "#^https://m\.cnzhengmu\.com/author_article/(?P<abf396750>\d+)\.html$#u"
                        ["host"] => string(23) "https://m.cnzhengmu.com"
                        ["route"] => string(25) "mobile/author/specialnews"
                        ["defaults"] => array(0) {
                        }
                        ["suffix"] => NULL
                        ["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(48) "https://m.cnzhengmu.com/author_article/<id>.html"
                        ["_routeRule":"yii\web\UrlRule":private] => NULL
                        ["_paramRules":"yii\web\UrlRule":private] => array(1) {
                          ["id"] => string(8) "#^\d+$#u"
                        }
                        ["_routeParams":"yii\web\UrlRule":private] => array(0) {
                        }
                      }
                      [23] => object(yii\web\UrlRule)#44 (16) {
                        ["name"] => string(45) "https://m.cnzhengmu.com/company/<id:\d+>.html"
                        ["pattern"] => string(63) "#^https://m\.cnzhengmu\.com/company/(?P<abf396750>\d+)\.html$#u"
                        ["host"] => string(23) "https://m.cnzhengmu.com"
                        ["route"] => string(19) "mobile/company/view"
                        ["defaults"] => array(0) {
                        }
                        ["suffix"] => NULL
                        ["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(41) "https://m.cnzhengmu.com/company/<id>.html"
                        ["_routeRule":"yii\web\UrlRule":private] => NULL
                        ["_paramRules":"yii\web\UrlRule":private] => array(1) {
                          ["id"] => string(8) "#^\d+$#u"
                        }
                        ["_routeParams":"yii\web\UrlRule":private] => array(0) {
                        }
                      }
                      [24] => object(yii\web\UrlRule)#45 (16) {
                        ["name"] => string(53) "https://m.cnzhengmu.com/company_aboutus/<id:\d+>.html"
                        ["pattern"] => string(71) "#^https://m\.cnzhengmu\.com/company_aboutus/(?P<abf396750>\d+)\.html$#u"
                        ["host"] => string(23) "https://m.cnzhengmu.com"
                        ["route"] => string(22) "mobile/company/aboutus"
                        ["defaults"] => array(0) {
                        }
                        ["suffix"] => NULL
                        ["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(49) "https://m.cnzhengmu.com/company_aboutus/<id>.html"
                        ["_routeRule":"yii\web\UrlRule":private] => NULL
                        ["_paramRules":"yii\web\UrlRule":private] => array(1) {
                          ["id"] => string(8) "#^\d+$#u"
                        }
                        ["_routeParams":"yii\web\UrlRule":private] => array(0) {
                        }
                      }
                      [25] => object(yii\web\UrlRule)#46 (16) {
                        ["name"] => string(50) "https://m.cnzhengmu.com/company_news/<id:\d+>.html"
                        ["pattern"] => string(68) "#^https://m\.cnzhengmu\.com/company_news/(?P<abf396750>\d+)\.html$#u"
                        ["host"] => string(23) "https://m.cnzhengmu.com"
                        ["route"] => string(19) "mobile/company/news"
                        ["defaults"] => array(0) {
                        }
                        ["suffix"] => NULL
                        ["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(46) "https://m.cnzhengmu.com/company_news/<id>.html"
                        ["_routeRule":"yii\web\UrlRule":private] => NULL
                        ["_paramRules":"yii\web\UrlRule":private] => array(1) {
                          ["id"] => string(8) "#^\d+$#u"
                        }
                        ["_routeParams":"yii\web\UrlRule":private] => array(0) {
                        }
                      }
                      [26] => object(yii\web\UrlRule)#47 (16) {
                        ["name"] => string(65) "https://m.cnzhengmu.com/companynews/<companyId:\d+>-<id:\d+>.html"
                        ["pattern"] => string(86) "#^https://m\.cnzhengmu\.com/companynews/(?P<a2480e723>\d+)-(?P<abf396750>\d+)\.html$#u"
                        ["host"] => string(23) "https://m.cnzhengmu.com"
                        ["route"] => string(26) "mobile/company/newsdetails"
                        ["defaults"] => array(0) {
                        }
                        ["suffix"] => NULL
                        ["verb"] => NULL
                        ["mode"] => NULL
                        ["encodeParams"] => bool(true)
                        ["normalizer"] => NULL
                        ["createStatus":protected] => NULL
                        ["placeholders":protected] => array(2) {
                          ["a2480e723"] => string(9) "companyId"
                          ["abf396750"] => string(2) "id"
                        }
                        ["_template":"yii\web\UrlRule":private] => string(57) "https://m.cnzhengmu.com/companynews/<companyId>-<id>.html"
                        ["_routeRule":"yii\web\UrlRule":private] => NULL
                        ["_paramRules":"yii\web\UrlRule":private] => array(2) {
                          ["companyId"] => string(8) "#^\d+$#u"
                          ["id"] => string(8) "#^\d+$#u"
                        }
                        ["_routeParams":"yii\web\UrlRule":private] => array(0) {
                        }
                      }
                      [27] => object(yii\web\UrlRule)#48 (16) {
                        ["name"] => string(53) "https://m.cnzhengmu.com/company_contact/<id:\d+>.html"
                        ["pattern"] => string(71) "#^https://m\.cnzhengmu\.com/company_contact/(?P<abf396750>\d+)\.html$#u"
                        ["host"] => string(23) "https://m.cnzhengmu.com"
                        ["route"] => string(22) "mobile/company/contact"
                        ["defaults"] => array(0) {
                        }
                        ["suffix"] => NULL
                        ["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(49) "https://m.cnzhengmu.com/company_contact/<id>.html"
                        ["_routeRule":"yii\web\UrlRule":private] => NULL
                        ["_paramRules":"yii\web\UrlRule":private] => array(1) {
                          ["id"] => string(8) "#^\d+$#u"
                        }
                        ["_routeParams":"yii\web\UrlRule":private] => array(0) {
                        }
                      }
                      [28] => object(yii\web\UrlRule)#49 (16) {
                        ["name"] => string(53) "https://m.cnzhengmu.com/company_product/<id:\d+>.html"
                        ["pattern"] => string(71) "#^https://m\.cnzhengmu\.com/company_product/(?P<abf396750>\d+)\.html$#u"
                        ["host"] => string(23) "https://m.cnzhengmu.com"
                        ["route"] => string(22) "mobile/company/product"
                        ["defaults"] => array(0) {
                        }
                        ["suffix"] => NULL
                        ["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(49) "https://m.cnzhengmu.com/company_product/<id>.html"
                        ["_routeRule":"yii\web\UrlRule":private] => NULL
                        ["_paramRules":"yii\web\UrlRule":private] => array(1) {
                          ["id"] => string(8) "#^\d+$#u"
                        }
                        ["_routeParams":"yii\web\UrlRule":private] => array(0) {
                        }
                      }
                      [29] => object(yii\web\UrlRule)#50 (16) {
                        ["name"] => string(68) "https://m.cnzhengmu.com/productdetails/<companyId:\d+>-<id:\d+>.html"
                        ["pattern"] => string(89) "#^https://m\.cnzhengmu\.com/productdetails/(?P<a2480e723>\d+)-(?P<abf396750>\d+)\.html$#u"
                        ["host"] => string(23) "https://m.cnzhengmu.com"
                        ["route"] => string(29) "mobile/company/productdetails"
                        ["defaults"] => array(0) {
                        }
                        ["suffix"] => NULL
                        ["verb"] => NULL
                        ["mode"] => NULL
                        ["encodeParams"] => bool(true)
                        ["normalizer"] => NULL
                        ["createStatus":protected] => NULL
                        ["placeholders":protected] => array(2) {
                          ["a2480e723"] => string(9) "companyId"
                          ["abf396750"] => string(2) "id"
                        }
                        ["_template":"yii\web\UrlRule":private] => string(60) "https://m.cnzhengmu.com/productdetails/<companyId>-<id>.html"
                        ["_routeRule":"yii\web\UrlRule":private] => NULL
                        ["_paramRules":"yii\web\UrlRule":private] => array(2) {
                          ["companyId"] => string(8) "#^\d+$#u"
                          ["id"] => string(8) "#^\d+$#u"
                        }
                        ["_routeParams":"yii\web\UrlRule":private] => array(0) {
                        }
                      }
                      [30] => object(yii\web\UrlRule)#51 (16) {
                        ["name"] => string(53) "https://m.cnzhengmu.com/company_recruit/<id:\d+>.html"
                        ["pattern"] => string(71) "#^https://m\.cnzhengmu\.com/company_recruit/(?P<abf396750>\d+)\.html$#u"
                        ["host"] => string(23) "https://m.cnzhengmu.com"
                        ["route"] => string(22) "mobile/company/recruit"
                        ["defaults"] => array(0) {
                        }
                        ["suffix"] => NULL
                        ["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(49) "https://m.cnzhengmu.com/company_recruit/<id>.html"
                        ["_routeRule":"yii\web\UrlRule":private] => NULL
                        ["_paramRules":"yii\web\UrlRule":private] => array(1) {
                          ["id"] => string(8) "#^\d+$#u"
                        }
                        ["_routeParams":"yii\web\UrlRule":private] => array(0) {
                        }
                      }
                      [31] => object(yii\web\UrlRule)#52 (16) {
                        ["name"] => string(68) "https://m.cnzhengmu.com/recruitdetails/<companyId:\d+>-<id:\d+>.html"
                        ["pattern"] => string(89) "#^https://m\.cnzhengmu\.com/recruitdetails/(?P<a2480e723>\d+)-(?P<abf396750>\d+)\.html$#u"
                        ["host"] => string(23) "https://m.cnzhengmu.com"
                        ["route"] => string(29) "mobile/company/recruitdetails"
                        ["defaults"] => array(0) {
                        }
                        ["suffix"] => NULL
                        ["verb"] => NULL
                        ["mode"] => NULL
                        ["encodeParams"] => bool(true)
                        ["normalizer"] => NULL
                        ["createStatus":protected] => NULL
                        ["placeholders":protected] => array(2) {
                          ["a2480e723"] => string(9) "companyId"
                          ["abf396750"] => string(2) "id"
                        }
                        ["_template":"yii\web\UrlRule":private] => string(60) "https://m.cnzhengmu.com/recruitdetails/<companyId>-<id>.html"
                        ["_routeRule":"yii\web\UrlRule":private] => NULL
                        ["_paramRules":"yii\web\UrlRule":private] => array(2) {
                          ["companyId"] => string(8) "#^\d+$#u"
                          ["id"] => string(8) "#^\d+$#u"
                        }
                        ["_routeParams":"yii\web\UrlRule":private] => array(0) {
                        }
                      }
                      [32] => object(yii\web\UrlRule)#53 (16) {
                        ["name"] => string(66) "https://m.cnzhengmu.com/resume_apply/<companyId:\d+>-<id:\d+>.html"
                        ["pattern"] => string(87) "#^https://m\.cnzhengmu\.com/resume_apply/(?P<a2480e723>\d+)-(?P<abf396750>\d+)\.html$#u"
                        ["host"] => string(23) "https://m.cnzhengmu.com"
                        ["route"] => string(24) "mobile/resumeapply/index"
                        ["defaults"] => array(0) {
                        }
                        ["suffix"] => NULL
                        ["verb"] => NULL
                        ["mode"] => NULL
                        ["encodeParams"] => bool(true)
                        ["normalizer"] => NULL
                        ["createStatus":protected] => NULL
                        ["placeholders":protected] => array(2) {
                          ["a2480e723"] => string(9) "companyId"
                          ["abf396750"] => string(2) "id"
                        }
                        ["_template":"yii\web\UrlRule":private] => string(58) "https://m.cnzhengmu.com/resume_apply/<companyId>-<id>.html"
                        ["_routeRule":"yii\web\UrlRule":private] => NULL
                        ["_paramRules":"yii\web\UrlRule":private] => array(2) {
                          ["companyId"] => string(8) "#^\d+$#u"
                          ["id"] => string(8) "#^\d+$#u"
                        }
                        ["_routeParams":"yii\web\UrlRule":private] => array(0) {
                        }
                      }
                      [33] => object(yii\web\UrlRule)#54 (16) {
                        ["name"] => string(31) "https://m.cnzhengmu.com/recruit"
                        ["pattern"] => string(38) "#^https://m\.cnzhengmu\.com/recruit$#u"
                        ["host"] => string(23) "https://m.cnzhengmu.com"
                        ["route"] => string(14) "mobile/recruit"
                        ["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(31) "https://m.cnzhengmu.com/recruit"
                        ["_routeRule":"yii\web\UrlRule":private] => NULL
                        ["_paramRules":"yii\web\UrlRule":private] => array(0) {
                        }
                        ["_routeParams":"yii\web\UrlRule":private] => array(0) {
                        }
                      }
                      [34] => object(yii\web\UrlRule)#55 (16) {
                        ["name"] => string(38) "https://m.cnzhengmu.com/recruit/talent"
                        ["pattern"] => string(45) "#^https://m\.cnzhengmu\.com/recruit/talent$#u"
                        ["host"] => string(23) "https://m.cnzhengmu.com"
                        ["route"] => string(21) "mobile/recruit/talent"
                        ["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(38) "https://m.cnzhengmu.com/recruit/talent"
                        ["_routeRule":"yii\web\UrlRule":private] => NULL
                        ["_paramRules":"yii\web\UrlRule":private] => array(0) {
                        }
                        ["_routeParams":"yii\web\UrlRule":private] => array(0) {
                        }
                      }
                      [35] => object(yii\web\UrlRule)#56 (16) {
                        ["name"] => string(53) "https://m.cnzhengmu.com/list-<id:\d+>-<page:\d+>.html"
                        ["pattern"] => string(79) "#^https://m\.cnzhengmu\.com/list-(?P<abf396750>\d+)-(?P<a140ab620>\d+)\.html$#u"
                        ["host"] => string(23) "https://m.cnzhengmu.com"
                        ["route"] => string(19) "mobile/column/index"
                        ["defaults"] => array(0) {
                        }
                        ["suffix"] => NULL
                        ["verb"] => NULL
                        ["mode"] => NULL
                        ["encodeParams"] => bool(true)
                        ["normalizer"] => NULL
                        ["createStatus":protected] => NULL
                        ["placeholders":protected] => array(2) {
                          ["abf396750"] => string(2) "id"
                          ["a140ab620"] => string(4) "page"
                        }
                        ["_template":"yii\web\UrlRule":private] => string(45) "https://m.cnzhengmu.com/list-<id>-<page>.html"
                        ["_routeRule":"yii\web\UrlRule":private] => NULL
                        ["_paramRules":"yii\web\UrlRule":private] => array(2) {
                          ["id"] => string(8) "#^\d+$#u"
                          ["page"] => string(8) "#^\d+$#u"
                        }
                        ["_routeParams":"yii\web\UrlRule":private] => array(0) {
                        }
                      }
                      [36] => object(yii\web\UrlRule)#57 (16) {
                        ["name"] => string(42) "https://m.cnzhengmu.com/list-<id:\d+>.html"
                        ["pattern"] => string(60) "#^https://m\.cnzhengmu\.com/list-(?P<abf396750>\d+)\.html$#u"
                        ["host"] => string(23) "https://m.cnzhengmu.com"
                        ["route"] => string(19) "mobile/column/index"
                        ["defaults"] => array(0) {
                        }
                        ["suffix"] => NULL
                        ["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(38) "https://m.cnzhengmu.com/list-<id>.html"
                        ["_routeRule":"yii\web\UrlRule":private] => NULL
                        ["_paramRules":"yii\web\UrlRule":private] => array(1) {
                          ["id"] => string(8) "#^\d+$#u"
                        }
                        ["_routeParams":"yii\web\UrlRule":private] => array(0) {
                        }
                      }
                      [37] => object(yii\web\UrlRule)#58 (16) {
                        ["name"] => string(68) "https://m.cnzhengmu.com/show-<columnId:\d+>-<id:\d+>-<page:\d+>.html"
                        ["pattern"] => string(98) "#^https://m\.cnzhengmu\.com/show-(?P<ae8dd7c5a>\d+)-(?P<abf396750>\d+)-(?P<a140ab620>\d+)\.html$#u"
                        ["host"] => string(23) "https://m.cnzhengmu.com"
                        ["route"] => string(21) "mobile/document/index"
                        ["defaults"] => array(0) {
                        }
                        ["suffix"] => NULL
                        ["verb"] => NULL
                        ["mode"] => NULL
                        ["encodeParams"] => bool(true)
                        ["normalizer"] => NULL
                        ["createStatus":protected] => NULL
                        ["placeholders":protected] => array(3) {
                          ["ae8dd7c5a"] => string(8) "columnId"
                          ["abf396750"] => string(2) "id"
                          ["a140ab620"] => string(4) "page"
                        }
                        ["_template":"yii\web\UrlRule":private] => string(56) "https://m.cnzhengmu.com/show-<columnId>-<id>-<page>.html"
                        ["_routeRule":"yii\web\UrlRule":private] => NULL
                        ["_paramRules":"yii\web\UrlRule":private] => array(3) {
                          ["columnId"] => string(8) "#^\d+$#u"
                          ["id"] => string(8) "#^\d+$#u"
                          ["page"] => string(8) "#^\d+$#u"
                        }
                        ["_routeParams":"yii\web\UrlRule":private] => array(0) {
                        }
                      }
                      [38] => object(yii\web\UrlRule)#59 (16) {
                        ["name"] => string(57) "https://m.cnzhengmu.com/show-<columnId:\d+>-<id:\d+>.html"
                        ["pattern"] => string(79) "#^https://m\.cnzhengmu\.com/show-(?P<ae8dd7c5a>\d+)-(?P<abf396750>\d+)\.html$#u"
                        ["host"] => string(23) "https://m.cnzhengmu.com"
                        ["route"] => string(21) "mobile/document/index"
                        ["defaults"] => array(0) {
                        }
                        ["suffix"] => NULL
                        ["verb"] => NULL
                        ["mode"] => NULL
                        ["encodeParams"] => bool(true)
                        ["normalizer"] => NULL
                        ["createStatus":protected] => NULL
                        ["placeholders":protected] => array(2) {
                          ["ae8dd7c5a"] => string(8) "columnId"
                          ["abf396750"] => string(2) "id"
                        }
                        ["_template":"yii\web\UrlRule":private] => string(49) "https://m.cnzhengmu.com/show-<columnId>-<id>.html"
                        ["_routeRule":"yii\web\UrlRule":private] => NULL
                        ["_paramRules":"yii\web\UrlRule":private] => array(2) {
                          ["columnId"] => string(8) "#^\d+$#u"
                          ["id"] => string(8) "#^\d+$#u"
                        }
                        ["_routeParams":"yii\web\UrlRule":private] => array(0) {
                        }
                      }
                      [39] => object(yii\web\UrlRule)#60 (16) {
                        ["name"] => string(35) "https://m.cnzhengmu.com/search.html"
                        ["pattern"] => string(43) "#^https://m\.cnzhengmu\.com/search\.html$#u"
                        ["host"] => string(23) "https://m.cnzhengmu.com"
                        ["route"] => string(13) "mobile/search"
                        ["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(35) "https://m.cnzhengmu.com/search.html"
                        ["_routeRule":"yii\web\UrlRule":private] => NULL
                        ["_paramRules":"yii\web\UrlRule":private] => array(0) {
                        }
                        ["_routeParams":"yii\web\UrlRule":private] => array(0) {
                        }
                      }
                      [40] => object(yii\web\UrlRule)#61 (16) {
                        ["name"] => string(40) "https://m.cnzhengmu.com/search-list.html"
                        ["pattern"] => string(48) "#^https://m\.cnzhengmu\.com/search-list\.html$#u"
                        ["host"] => string(23) "https://m.cnzhengmu.com"
                        ["route"] => string(18) "mobile/search/list"
                        ["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(40) "https://m.cnzhengmu.com/search-list.html"
                        ["_routeRule":"yii\web\UrlRule":private] => NULL
                        ["_paramRules":"yii\web\UrlRule":private] => array(0) {
                        }
                        ["_routeParams":"yii\web\UrlRule":private] => array(0) {
                        }
                      }
                      [41] => object(yii\web\UrlRule)#62 (16) {
                        ["name"] => string(42) "https://m.cnzhengmu.com/live-<id:\d+>.html"
                        ["pattern"] => string(60) "#^https://m\.cnzhengmu\.com/live-(?P<abf396750>\d+)\.html$#u"
                        ["host"] => string(23) "https://m.cnzhengmu.com"
                        ["route"] => string(16) "mobile/live/view"
                        ["defaults"] => array(0) {
                        }
                        ["suffix"] => NULL
                        ["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(38) "https://m.cnzhengmu.com/live-<id>.html"
                        ["_routeRule":"yii\web\UrlRule":private] => NULL
                        ["_paramRules":"yii\web\UrlRule":private] => array(1) {
                          ["id"] => string(8) "#^\d+$#u"
                        }
                        ["_routeParams":"yii\web\UrlRule":private] => array(0) {
                        }
                      }
                      [42] => object(yii\web\UrlRule)#63 (16) {
                        ["name"] => string(33) "https://m.cnzhengmu.com/news.html"
                        ["pattern"] => string(41) "#^https://m\.cnzhengmu\.com/news\.html$#u"
                        ["host"] => string(23) "https://m.cnzhengmu.com"
                        ["route"] => string(19) "mobile/default/news"
                        ["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(33) "https://m.cnzhengmu.com/news.html"
                        ["_routeRule":"yii\web\UrlRule":private] => NULL
                        ["_paramRules":"yii\web\UrlRule":private] => array(0) {
                        }
                        ["_routeParams":"yii\web\UrlRule":private] => array(0) {
                        }
                      }
                      [43] => object(yii\web\UrlRule)#64 (16) {
                        ["name"] => string(41) "https://m.cnzhengmu.com/shangxueyuan.html"
                        ["pattern"] => string(49) "#^https://m\.cnzhengmu\.com/shangxueyuan\.html$#u"
                        ["host"] => string(23) "https://m.cnzhengmu.com"
                        ["route"] => string(27) "mobile/default/shangxueyuan"
                        ["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(41) "https://m.cnzhengmu.com/shangxueyuan.html"
                        ["_routeRule":"yii\web\UrlRule":private] => NULL
                        ["_paramRules":"yii\web\UrlRule":private] => array(0) {
                        }
                        ["_routeParams":"yii\web\UrlRule":private] => array(0) {
                        }
                      }
                      [44] => object(yii\web\UrlRule)#65 (16) {
                        ["name"] => string(31) "https://m.cnzhengmu.com/company"
                        ["pattern"] => string(38) "#^https://m\.cnzhengmu\.com/company$#u"
                        ["host"] => string(23) "https://m.cnzhengmu.com"
                        ["route"] => string(22) "mobile/default/company"
                        ["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(31) "https://m.cnzhengmu.com/company"
                        ["_routeRule":"yii\web\UrlRule":private] => NULL
                        ["_paramRules":"yii\web\UrlRule":private] => array(0) {
                        }
                        ["_routeParams":"yii\web\UrlRule":private] => array(0) {
                        }
                      }
                      [45] => object(yii\web\UrlRule)#66 (16) {
                        ["name"] => string(26) "https://m.cnzhengmu.com/zh"
                        ["pattern"] => string(33) "#^https://m\.cnzhengmu\.com/zh$#u"
                        ["host"] => string(23) "https://m.cnzhengmu.com"
                        ["route"] => string(22) "mobile/default/zhanhui"
                        ["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(26) "https://m.cnzhengmu.com/zh"
                        ["_routeRule":"yii\web\UrlRule":private] => NULL
                        ["_paramRules":"yii\web\UrlRule":private] => array(0) {
                        }
                        ["_routeParams":"yii\web\UrlRule":private] => array(0) {
                        }
                      }
                      [46] => object(yii\web\UrlRule)#67 (16) {
                        ["name"] => string(27) "https://m.cnzhengmu.com/swt"
                        ["pattern"] => string(34) "#^https://m\.cnzhengmu\.com/swt$#u"
                        ["host"] => string(23) "https://m.cnzhengmu.com"
                        ["route"] => string(18) "mobile/default/swt"
                        ["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(27) "https://m.cnzhengmu.com/swt"
                        ["_routeRule":"yii\web\UrlRule":private] => NULL
                        ["_paramRules":"yii\web\UrlRule":private] => array(0) {
                        }
                        ["_routeParams":"yii\web\UrlRule":private] => array(0) {
                        }
                      }
                      [47] => object(yii\web\UrlRule)#68 (16) {
                        ["name"] => string(28) "https://m.cnzhengmu.com/join"
                        ["pattern"] => string(35) "#^https://m\.cnzhengmu\.com/join$#u"
                        ["host"] => string(23) "https://m.cnzhengmu.com"
                        ["route"] => string(19) "mobile/default/join"
                        ["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(28) "https://m.cnzhengmu.com/join"
                        ["_routeRule":"yii\web\UrlRule":private] => NULL
                        ["_paramRules":"yii\web\UrlRule":private] => array(0) {
                        }
                        ["_routeParams":"yii\web\UrlRule":private] => array(0) {
                        }
                      }
                      [48] => object(yii\web\UrlRule)#69 (16) {
                        ["name"] => string(27) "https://m.cnzhengmu.com/wei"
                        ["pattern"] => string(34) "#^https://m\.cnzhengmu\.com/wei$#u"
                        ["host"] => string(23) "https://m.cnzhengmu.com"
                        ["route"] => string(18) "mobile/default/wei"
                        ["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(27) "https://m.cnzhengmu.com/wei"
                        ["_routeRule":"yii\web\UrlRule":private] => NULL
                        ["_paramRules":"yii\web\UrlRule":private] => array(0) {
                        }
                        ["_routeParams":"yii\web\UrlRule":private] => array(0) {
                        }
                      }
                      [49] => object(yii\web\UrlRule)#70 (16) {
                        ["name"] => string(30) "https://m.cnzhengmu.com<_q:.*>"
                        ["pattern"] => string(47) "#^https://m\.cnzhengmu\.com(?P<a5bf812ce>.*)$#u"
                        ["host"] => string(30) "https://m.cnzhengmu.com<_q:.*>"
                        ["route"] => string(10) "mobile<_q>"
                        ["defaults"] => array(0) {
                        }
                        ["suffix"] => NULL
                        ["verb"] => NULL
                        ["mode"] => NULL
                        ["encodeParams"] => bool(true)
                        ["normalizer"] => NULL
                        ["createStatus":protected] => NULL
                        ["placeholders":protected] => array(1) {
                          ["a5bf812ce"] => string(2) "_q"
                        }
                        ["_template":"yii\web\UrlRule":private] => string(27) "https://m.cnzhengmu.com<_q>"
                        ["_routeRule":"yii\web\UrlRule":private] => string(28) "#^mobile(?P<a5bf812ce>.*)$#u"
                        ["_paramRules":"yii\web\UrlRule":private] => array(0) {
                        }
                        ["_routeParams":"yii\web\UrlRule":private] => array(1) {
                          ["_q"] => string(4) "<_q>"
                        }
                      }
                      [50] => object(yii\web\UrlRule)#71 (16) {
                        ["name"] => string(37) "https://www.cnzhengmu.com/companynews"
                        ["pattern"] => string(44) "#^https://www\.cnzhengmu\.com/companynews$#u"
                        ["host"] => string(25) "https://www.cnzhengmu.com"
                        ["route"] => string(23) "company/default/default"
                        ["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(37) "https://www.cnzhengmu.com/companynews"
                        ["_routeRule":"yii\web\UrlRule":private] => NULL
                        ["_paramRules":"yii\web\UrlRule":private] => array(0) {
                        }
                        ["_routeParams":"yii\web\UrlRule":private] => array(0) {
                        }
                      }
                      [51] => object(yii\web\UrlRule)#72 (16) {
                        ["name"] => string(30) "https://www.cnzhengmu.com/info"
                        ["pattern"] => string(37) "#^https://www\.cnzhengmu\.com/info$#u"
                        ["host"] => string(25) "https://www.cnzhengmu.com"
                        ["route"] => string(23) "company/default/default"
                        ["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(30) "https://www.cnzhengmu.com/info"
                        ["_routeRule":"yii\web\UrlRule":private] => NULL
                        ["_paramRules":"yii\web\UrlRule":private] => array(0) {
                        }
                        ["_routeParams":"yii\web\UrlRule":private] => array(0) {
                        }
                      }
                      [52] => object(yii\web\UrlRule)#73 (16) {
                        ["name"] => string(29) "https://www.cnzhengmu.com/map"
                        ["pattern"] => string(36) "#^https://www\.cnzhengmu\.com/map$#u"
                        ["host"] => string(25) "https://www.cnzhengmu.com"
                        ["route"] => string(14) "pc/map/default"
                        ["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(29) "https://www.cnzhengmu.com/map"
                        ["_routeRule":"yii\web\UrlRule":private] => NULL
                        ["_paramRules":"yii\web\UrlRule":private] => array(0) {
                        }
                        ["_routeParams":"yii\web\UrlRule":private] => array(0) {
                        }
                      }
                      [53] => object(yii\web\UrlRule)#74 (16) {
                        ["name"] => string(60) "https://www.cnzhengmu.com/info/<companyId:\d+>-<id:\d+>.html"
                        ["pattern"] => string(81) "#^https://www\.cnzhengmu\.com/info/(?P<a2480e723>\d+)-(?P<abf396750>\d+)\.html$#u"
                        ["host"] => string(25) "https://www.cnzhengmu.com"
                        ["route"] => string(20) "company/news/newview"
                        ["defaults"] => array(0) {
                        }
                        ["suffix"] => NULL
                        ["verb"] => NULL
                        ["mode"] => NULL
                        ["encodeParams"] => bool(true)
                        ["normalizer"] => NULL
                        ["createStatus":protected] => NULL
                        ["placeholders":protected] => array(2) {
                          ["a2480e723"] => string(9) "companyId"
                          ["abf396750"] => string(2) "id"
                        }
                        ["_template":"yii\web\UrlRule":private] => string(52) "https://www.cnzhengmu.com/info/<companyId>-<id>.html"
                        ["_routeRule":"yii\web\UrlRule":private] => NULL
                        ["_paramRules":"yii\web\UrlRule":private] => array(2) {
                          ["companyId"] => string(8) "#^\d+$#u"
                          ["id"] => string(8) "#^\d+$#u"
                        }
                        ["_routeParams":"yii\web\UrlRule":private] => array(0) {
                        }
                      }
                      [54] => object(yii\web\UrlRule)#75 (16) {
                        ["name"] => string(67) "https://www.cnzhengmu.com/companynews/<companyId:\d+>-<id:\d+>.html"
                        ["pattern"] => string(88) "#^https://www\.cnzhengmu\.com/companynews/(?P<a2480e723>\d+)-(?P<abf396750>\d+)\.html$#u"
                        ["host"] => string(25) "https://www.cnzhengmu.com"
                        ["route"] => string(17) "company/news/view"
                        ["defaults"] => array(0) {
                        }
                        ["suffix"] => NULL
                        ["verb"] => NULL
                        ["mode"] => NULL
                        ["encodeParams"] => bool(true)
                        ["normalizer"] => NULL
                        ["createStatus":protected] => NULL
                        ["placeholders":protected] => array(2) {
                          ["a2480e723"] => string(9) "companyId"
                          ["abf396750"] => string(2) "id"
                        }
                        ["_template":"yii\web\UrlRule":private] => string(59) "https://www.cnzhengmu.com/companynews/<companyId>-<id>.html"
                        ["_routeRule":"yii\web\UrlRule":private] => NULL
                        ["_paramRules":"yii\web\UrlRule":private] => array(2) {
                          ["companyId"] => string(8) "#^\d+$#u"
                          ["id"] => string(8) "#^\d+$#u"
                        }
                        ["_routeParams":"yii\web\UrlRule":private] => array(0) {
                        }
                      }
                      [55] => object(yii\web\UrlRule)#76 (16) {
                        ["name"] => string(47) "https://www.cnzhengmu.com/company/<id:\d+>.html"
                        ["pattern"] => string(65) "#^https://www\.cnzhengmu\.com/company/(?P<abf396750>\d+)\.html$#u"
                        ["host"] => string(25) "https://www.cnzhengmu.com"
                        ["route"] => string(12) "company/view"
                        ["defaults"] => array(0) {
                        }
                        ["suffix"] => NULL
                        ["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(43) "https://www.cnzhengmu.com/company/<id>.html"
                        ["_routeRule":"yii\web\UrlRule":private] => NULL
                        ["_paramRules":"yii\web\UrlRule":private] => array(1) {
                          ["id"] => string(8) "#^\d+$#u"
                        }
                        ["_routeParams":"yii\web\UrlRule":private] => array(0) {
                        }
                      }
                      [56] => object(yii\web\UrlRule)#77 (16) {
                        ["name"] => string(60) "https://www.cnzhengmu.com/company_introduction/<id:\d+>.html"
                        ["pattern"] => string(78) "#^https://www\.cnzhengmu\.com/company_introduction/(?P<abf396750>\d+)\.html$#u"
                        ["host"] => string(25) "https://www.cnzhengmu.com"
                        ["route"] => string(20) "company/introduction"
                        ["defaults"] => array(0) {
                        }
                        ["suffix"] => NULL
                        ["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(56) "https://www.cnzhengmu.com/company_introduction/<id>.html"
                        ["_routeRule":"yii\web\UrlRule":private] => NULL
                        ["_paramRules":"yii\web\UrlRule":private] => array(1) {
                          ["id"] => string(8) "#^\d+$#u"
                        }
                        ["_routeParams":"yii\web\UrlRule":private] => array(0) {
                        }
                      }
                      [57] => object(yii\web\UrlRule)#78 (16) {
                        ["name"] => string(53) "https://www.cnzhengmu.com/company_video/<id:\d+>.html"
                        ["pattern"] => string(71) "#^https://www\.cnzhengmu\.com/company_video/(?P<abf396750>\d+)\.html$#u"
                        ["host"] => string(25) "https://www.cnzhengmu.com"
                        ["route"] => string(13) "company/video"
                        ["defaults"] => array(0) {
                        }
                        ["suffix"] => NULL
                        ["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(49) "https://www.cnzhengmu.com/company_video/<id>.html"
                        ["_routeRule":"yii\web\UrlRule":private] => NULL
                        ["_paramRules":"yii\web\UrlRule":private] => array(1) {
                          ["id"] => string(8) "#^\d+$#u"
                        }
                        ["_routeParams":"yii\web\UrlRule":private] => array(0) {
                        }
                      }
                      [58] => object(yii\web\UrlRule)#79 (16) {
                        ["name"] => string(52) "https://www.cnzhengmu.com/company_news/<id:\d+>.html"
                        ["pattern"] => string(70) "#^https://www\.cnzhengmu\.com/company_news/(?P<abf396750>\d+)\.html$#u"
                        ["host"] => string(25) "https://www.cnzhengmu.com"
                        ["route"] => string(12) "company/news"
                        ["defaults"] => array(0) {
                        }
                        ["suffix"] => NULL
                        ["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(48) "https://www.cnzhengmu.com/company_news/<id>.html"
                        ["_routeRule":"yii\web\UrlRule":private] => NULL
                        ["_paramRules":"yii\web\UrlRule":private] => array(1) {
                          ["id"] => string(8) "#^\d+$#u"
                        }
                        ["_routeParams":"yii\web\UrlRule":private] => array(0) {
                        }
                      }
                      [59] => object(yii\web\UrlRule)#80 (16) {
                        ["name"] => string(55) "https://www.cnzhengmu.com/company_product/<id:\d+>.html"
                        ["pattern"] => string(73) "#^https://www\.cnzhengmu\.com/company_product/(?P<abf396750>\d+)\.html$#u"
                        ["host"] => string(25) "https://www.cnzhengmu.com"
                        ["route"] => string(15) "company/product"
                        ["defaults"] => array(0) {
                        }
                        ["suffix"] => NULL
                        ["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(51) "https://www.cnzhengmu.com/company_product/<id>.html"
                        ["_routeRule":"yii\web\UrlRule":private] => NULL
                        ["_paramRules":"yii\web\UrlRule":private] => array(1) {
                          ["id"] => string(8) "#^\d+$#u"
                        }
                        ["_routeParams":"yii\web\UrlRule":private] => array(0) {
                        }
                      }
                      [60] => object(yii\web\UrlRule)#81 (16) {
                        ["name"] => string(58) "https://www.cnzhengmu.com/company_investment/<id:\d+>.html"
                        ["pattern"] => string(76) "#^https://www\.cnzhengmu\.com/company_investment/(?P<abf396750>\d+)\.html$#u"
                        ["host"] => string(25) "https://www.cnzhengmu.com"
                        ["route"] => string(18) "company/investment"
                        ["defaults"] => array(0) {
                        }
                        ["suffix"] => NULL
                        ["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(54) "https://www.cnzhengmu.com/company_investment/<id>.html"
                        ["_routeRule":"yii\web\UrlRule":private] => NULL
                        ["_paramRules":"yii\web\UrlRule":private] => array(1) {
                          ["id"] => string(8) "#^\d+$#u"
                        }
                        ["_routeParams":"yii\web\UrlRule":private] => array(0) {
                        }
                      }
                      [61] => object(yii\web\UrlRule)#82 (16) {
                        ["name"] => string(50) "https://www.cnzhengmu.com/company_vr/<id:\d+>.html"
                        ["pattern"] => string(68) "#^https://www\.cnzhengmu\.com/company_vr/(?P<abf396750>\d+)\.html$#u"
                        ["host"] => string(25) "https://www.cnzhengmu.com"
                        ["route"] => string(10) "company/vr"
                        ["defaults"] => array(0) {
                        }
                        ["suffix"] => NULL
                        ["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(46) "https://www.cnzhengmu.com/company_vr/<id>.html"
                        ["_routeRule":"yii\web\UrlRule":private] => NULL
                        ["_paramRules":"yii\web\UrlRule":private] => array(1) {
                          ["id"] => string(8) "#^\d+$#u"
                        }
                        ["_routeParams":"yii\web\UrlRule":private] => array(0) {
                        }
                      }
                      [62] => object(yii\web\UrlRule)#83 (16) {
                        ["name"] => string(61) "https://www.cnzhengmu.com/company_qualification/<id:\d+>.html"
                        ["pattern"] => string(79) "#^https://www\.cnzhengmu\.com/company_qualification/(?P<abf396750>\d+)\.html$#u"
                        ["host"] => string(25) "https://www.cnzhengmu.com"
                        ["route"] => string(21) "company/qualification"
                        ["defaults"] => array(0) {
                        }
                        ["suffix"] => NULL
                        ["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(57) "https://www.cnzhengmu.com/company_qualification/<id>.html"
                        ["_routeRule":"yii\web\UrlRule":private] => NULL
                        ["_paramRules":"yii\web\UrlRule":private] => array(1) {
                          ["id"] => string(8) "#^\d+$#u"
                        }
                        ["_routeParams":"yii\web\UrlRule":private] => array(0) {
                        }
                      }
                      [63] => object(yii\web\UrlRule)#84 (16) {
                        ["name"] => string(55) "https://www.cnzhengmu.com/company_recruit/<id:\d+>.html"
                        ["pattern"] => string(73) "#^https://www\.cnzhengmu\.com/company_recruit/(?P<abf396750>\d+)\.html$#u"
                        ["host"] => string(25) "https://www.cnzhengmu.com"
                        ["route"] => string(15) "company/recruit"
                        ["defaults"] => array(0) {
                        }
                        ["suffix"] => NULL
                        ["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(51) "https://www.cnzhengmu.com/company_recruit/<id>.html"
                        ["_routeRule":"yii\web\UrlRule":private] => NULL
                        ["_paramRules":"yii\web\UrlRule":private] => array(1) {
                          ["id"] => string(8) "#^\d+$#u"
                        }
                        ["_routeParams":"yii\web\UrlRule":private] => array(0) {
                        }
                      }
                      [64] => object(yii\web\UrlRule)#85 (16) {
                        ["name"] => string(55) "https://www.cnzhengmu.com/company_contact/<id:\d+>.html"
                        ["pattern"] => string(73) "#^https://www\.cnzhengmu\.com/company_contact/(?P<abf396750>\d+)\.html$#u"
                        ["host"] => string(25) "https://www.cnzhengmu.com"
                        ["route"] => string(15) "company/contact"
                        ["defaults"] => array(0) {
                        }
                        ["suffix"] => NULL
                        ["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(51) "https://www.cnzhengmu.com/company_contact/<id>.html"
                        ["_routeRule":"yii\web\UrlRule":private] => NULL
                        ["_paramRules":"yii\web\UrlRule":private] => array(1) {
                          ["id"] => string(8) "#^\d+$#u"
                        }
                        ["_routeParams":"yii\web\UrlRule":private] => array(0) {
                        }
                      }
                      [65] => object(yii\web\UrlRule)#86 (16) {
                        ["name"] => string(37) "https://www.cnzhengmu.com/mobile.html"
                        ["pattern"] => string(45) "#^https://www\.cnzhengmu\.com/mobile\.html$#u"
                        ["host"] => string(25) "https://www.cnzhengmu.com"
                        ["route"] => string(17) "pc/default/mobile"
                        ["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(37) "https://www.cnzhengmu.com/mobile.html"
                        ["_routeRule":"yii\web\UrlRule":private] => NULL
                        ["_paramRules":"yii\web\UrlRule":private] => array(0) {
                        }
                        ["_routeParams":"yii\web\UrlRule":private] => array(0) {
                        }
                      }
                      [66] => object(yii\web\UrlRule)#87 (16) {
                        ["name"] => string(55) "https://www.cnzhengmu.com/list-<id:\d+>-<page:\d+>.html"
                        ["pattern"] => string(81) "#^https://www\.cnzhengmu\.com/list-(?P<abf396750>\d+)-(?P<a140ab620>\d+)\.html$#u"
                        ["host"] => string(25) "https://www.cnzhengmu.com"
                        ["route"] => string(15) "pc/column/index"
                        ["defaults"] => array(0) {
                        }
                        ["suffix"] => NULL
                        ["verb"] => NULL
                        ["mode"] => NULL
                        ["encodeParams"] => bool(true)
                        ["normalizer"] => NULL
                        ["createStatus":protected] => NULL
                        ["placeholders":protected] => array(2) {
                          ["abf396750"] => string(2) "id"
                          ["a140ab620"] => string(4) "page"
                        }
                        ["_template":"yii\web\UrlRule":private] => string(47) "https://www.cnzhengmu.com/list-<id>-<page>.html"
                        ["_routeRule":"yii\web\UrlRule":private] => NULL
                        ["_paramRules":"yii\web\UrlRule":private] => array(2) {
                          ["id"] => string(8) "#^\d+$#u"
                          ["page"] => string(8) "#^\d+$#u"
                        }
                        ["_routeParams":"yii\web\UrlRule":private] => array(0) {
                        }
                      }
                      [67] => object(yii\web\UrlRule)#88 (16) {
                        ["name"] => string(44) "https://www.cnzhengmu.com/list-<id:\d+>.html"
                        ["pattern"] => string(62) "#^https://www\.cnzhengmu\.com/list-(?P<abf396750>\d+)\.html$#u"
                        ["host"] => string(25) "https://www.cnzhengmu.com"
                        ["route"] => string(15) "pc/column/index"
                        ["defaults"] => array(0) {
                        }
                        ["suffix"] => NULL
                        ["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(40) "https://www.cnzhengmu.com/list-<id>.html"
                        ["_routeRule":"yii\web\UrlRule":private] => NULL
                        ["_paramRules":"yii\web\UrlRule":private] => array(1) {
                          ["id"] => string(8) "#^\d+$#u"
                        }
                        ["_routeParams":"yii\web\UrlRule":private] => array(0) {
                        }
                      }
                      [68] => object(yii\web\UrlRule)#89 (16) {
                        ["name"] => string(70) "https://www.cnzhengmu.com/show-<columnId:\d+>-<id:\d+>-<page:\d+>.html"
                        ["pattern"] => string(100) "#^https://www\.cnzhengmu\.com/show-(?P<ae8dd7c5a>\d+)-(?P<abf396750>\d+)-(?P<a140ab620>\d+)\.html$#u"
                        ["host"] => string(25) "https://www.cnzhengmu.com"
                        ["route"] => string(17) "pc/document/index"
                        ["defaults"] => array(0) {
                        }
                        ["suffix"] => NULL
                        ["verb"] => NULL
                        ["mode"] => NULL
                        ["encodeParams"] => bool(true)
                        ["normalizer"] => NULL
                        ["createStatus":protected] => NULL
                        ["placeholders":protected] => array(3) {
                          ["ae8dd7c5a"] => string(8) "columnId"
                          ["abf396750"] => string(2) "id"
                          ["a140ab620"] => string(4) "page"
                        }
                        ["_template":"yii\web\UrlRule":private] => string(58) "https://www.cnzhengmu.com/show-<columnId>-<id>-<page>.html"
                        ["_routeRule":"yii\web\UrlRule":private] => NULL
                        ["_paramRules":"yii\web\UrlRule":private] => array(3) {
                          ["columnId"] => string(8) "#^\d+$#u"
                          ["id"] => string(8) "#^\d+$#u"
                          ["page"] => string(8) "#^\d+$#u"
                        }
                        ["_routeParams":"yii\web\UrlRule":private] => array(0) {
                        }
                      }
                      [69] => object(yii\web\UrlRule)#90 (16) {
                        ["name"] => string(59) "https://www.cnzhengmu.com/show-<columnId:\d+>-<id:\d+>.html"
                        ["pattern"] => string(81) "#^https://www\.cnzhengmu\.com/show-(?P<ae8dd7c5a>\d+)-(?P<abf396750>\d+)\.html$#u"
                        ["host"] => string(25) "https://www.cnzhengmu.com"
                        ["route"] => string(17) "pc/document/index"
                        ["defaults"] => array(0) {
                        }
                        ["suffix"] => NULL
                        ["verb"] => NULL
                        ["mode"] => NULL
                        ["encodeParams"] => bool(true)
                        ["normalizer"] => NULL
                        ["createStatus":protected] => NULL
                        ["placeholders":protected] => array(2) {
                          ["ae8dd7c5a"] => string(8) "columnId"
                          ["abf396750"] => string(2) "id"
                        }
                        ["_template":"yii\web\UrlRule":private] => string(51) "https://www.cnzhengmu.com/show-<columnId>-<id>.html"
                        ["_routeRule":"yii\web\UrlRule":private] => NULL
                        ["_paramRules":"yii\web\UrlRule":private] => array(2) {
                          ["columnId"] => string(8) "#^\d+$#u"
                          ["id"] => string(8) "#^\d+$#u"
                        }
                        ["_routeParams":"yii\web\UrlRule":private] => array(0) {
                        }
                      }
                      [70] => object(yii\web\UrlRule)#91 (16) {
                        ["name"] => string(32) "https://api.cnzhengmu.com<_q:.*>"
                        ["pattern"] => string(49) "#^https://api\.cnzhengmu\.com(?P<a5bf812ce>.*)$#u"
                        ["host"] => string(32) "https://api.cnzhengmu.com<_q:.*>"
                        ["route"] => string(7) "api<_q>"
                        ["defaults"] => array(0) {
                        }
                        ["suffix"] => NULL
                        ["verb"] => NULL
                        ["mode"] => NULL
                        ["encodeParams"] => bool(true)
                        ["normalizer"] => NULL
                        ["createStatus":protected] => NULL
                        ["placeholders":protected] => array(1) {
                          ["a5bf812ce"] => string(2) "_q"
                        }
                        ["_template":"yii\web\UrlRule":private] => string(29) "https://api.cnzhengmu.com<_q>"
                        ["_routeRule":"yii\web\UrlRule":private] => string(25) "#^api(?P<a5bf812ce>.*)$#u"
                        ["_paramRules":"yii\web\UrlRule":private] => array(0) {
                        }
                        ["_routeParams":"yii\web\UrlRule":private] => array(1) {
                          ["_q"] => string(4) "<_q>"
                        }
                      }
                      [71] => object(yii\web\UrlRule)#92 (16) {
                        ["name"] => string(35) "https://manage.cnzhengmu.com<_q:.*>"
                        ["pattern"] => string(52) "#^https://manage\.cnzhengmu\.com(?P<a5bf812ce>.*)$#u"
                        ["host"] => string(35) "https://manage.cnzhengmu.com<_q:.*>"
                        ["route"] => string(10) "manage<_q>"
                        ["defaults"] => array(0) {
                        }
                        ["suffix"] => NULL
                        ["verb"] => NULL
                        ["mode"] => NULL
                        ["encodeParams"] => bool(true)
                        ["normalizer"] => NULL
                        ["createStatus":protected] => NULL
                        ["placeholders":protected] => array(1) {
                          ["a5bf812ce"] => string(2) "_q"
                        }
                        ["_template":"yii\web\UrlRule":private] => string(32) "https://manage.cnzhengmu.com<_q>"
                        ["_routeRule":"yii\web\UrlRule":private] => string(28) "#^manage(?P<a5bf812ce>.*)$#u"
                        ["_paramRules":"yii\web\UrlRule":private] => array(0) {
                        }
                        ["_routeParams":"yii\web\UrlRule":private] => array(1) {
                          ["_q"] => string(4) "<_q>"
                        }
                      }
                      [72] => object(yii\web\UrlRule)#93 (16) {
                        ["name"] => string(37) "https://www.cnzhengmu.com/user<_q:.*>"
                        ["pattern"] => string(54) "#^https://www\.cnzhengmu\.com/user(?P<a5bf812ce>.*)$#u"
                        ["host"] => string(25) "https://www.cnzhengmu.com"
                        ["route"] => string(8) "user<_q>"
                        ["defaults"] => array(0) {
                        }
                        ["suffix"] => NULL
                        ["verb"] => NULL
                        ["mode"] => NULL
                        ["encodeParams"] => bool(true)
                        ["normalizer"] => NULL
                        ["createStatus":protected] => NULL
                        ["placeholders":protected] => array(1) {
                          ["a5bf812ce"] => string(2) "_q"
                        }
                        ["_template":"yii\web\UrlRule":private] => string(34) "https://www.cnzhengmu.com/user<_q>"
                        ["_routeRule":"yii\web\UrlRule":private] => string(26) "#^user(?P<a5bf812ce>.*)$#u"
                        ["_paramRules":"yii\web\UrlRule":private] => array(0) {
                        }
                        ["_routeParams":"yii\web\UrlRule":private] => array(1) {
                          ["_q"] => string(4) "<_q>"
                        }
                      }
                      [73] => object(yii\web\UrlRule)#94 (16) {
                        ["name"] => string(52) "https://www.cnzhengmu.com/company/view-<id:\d+>.html"
                        ["pattern"] => string(70) "#^https://www\.cnzhengmu\.com/company/view-(?P<abf396750>\d+)\.html$#u"
                        ["host"] => string(25) "https://www.cnzhengmu.com"
                        ["route"] => string(18) "company/view/index"
                        ["defaults"] => array(0) {
                        }
                        ["suffix"] => NULL
                        ["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(48) "https://www.cnzhengmu.com/company/view-<id>.html"
                        ["_routeRule":"yii\web\UrlRule":private] => NULL
                        ["_paramRules":"yii\web\UrlRule":private] => array(1) {
                          ["id"] => string(8) "#^\d+$#u"
                        }
                        ["_routeParams":"yii\web\UrlRule":private] => array(0) {
                        }
                      }
                      [74] => object(yii\web\UrlRule)#95 (16) {
                        ["name"] => string(42) "https://www.cnzhengmu.com/company/<id:\d+>"
                        ["pattern"] => string(59) "#^https://www\.cnzhengmu\.com/company/(?P<abf396750>\d+)$#u"
                        ["host"] => string(25) "https://www.cnzhengmu.com"
                        ["route"] => string(18) "company/view/index"
                        ["defaults"] => array(0) {
                        }
                        ["suffix"] => NULL
                        ["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(38) "https://www.cnzhengmu.com/company/<id>"
                        ["_routeRule":"yii\web\UrlRule":private] => NULL
                        ["_paramRules":"yii\web\UrlRule":private] => array(1) {
                          ["id"] => string(8) "#^\d+$#u"
                        }
                        ["_routeParams":"yii\web\UrlRule":private] => array(0) {
                        }
                      }
                      [75] => object(yii\web\UrlRule)#96 (16) {
                        ["name"] => string(40) "https://www.cnzhengmu.com/company<_q:.*>"
                        ["pattern"] => string(57) "#^https://www\.cnzhengmu\.com/company(?P<a5bf812ce>.*)$#u"
                        ["host"] => string(25) "https://www.cnzhengmu.com"
                        ["route"] => string(11) "company<_q>"
                        ["defaults"] => array(0) {
                        }
                        ["suffix"] => NULL
                        ["verb"] => NULL
                        ["mode"] => NULL
                        ["encodeParams"] => bool(true)
                        ["normalizer"] => NULL
                        ["createStatus":protected] => NULL
                        ["placeholders":protected] => array(1) {
                          ["a5bf812ce"] => string(2) "_q"
                        }
                        ["_template":"yii\web\UrlRule":private] => string(37) "https://www.cnzhengmu.com/company<_q>"
                        ["_routeRule":"yii\web\UrlRule":private] => string(29) "#^company(?P<a5bf812ce>.*)$#u"
                        ["_paramRules":"yii\web\UrlRule":private] => array(0) {
                        }
                        ["_routeParams":"yii\web\UrlRule":private] => array(1) {
                          ["_q"] => string(4) "<_q>"
                        }
                      }
                      [76] => object(yii\web\UrlRule)#97 (16) {
                        ["name"] => string(41) "https://www.cnzhengmu.com/platform<_q:.*>"
                        ["pattern"] => string(58) "#^https://www\.cnzhengmu\.com/platform(?P<a5bf812ce>.*)$#u"
                        ["host"] => string(25) "https://www.cnzhengmu.com"
                        ["route"] => string(12) "platform<_q>"
                        ["defaults"] => array(0) {
                        }
                        ["suffix"] => NULL
                        ["verb"] => NULL
                        ["mode"] => NULL
                        ["encodeParams"] => bool(true)
                        ["normalizer"] => NULL
                        ["createStatus":protected] => NULL
                        ["placeholders":protected] => array(1) {
                          ["a5bf812ce"] => string(2) "_q"
                        }
                        ["_template":"yii\web\UrlRule":private] => string(38) "https://www.cnzhengmu.com/platform<_q>"
                        ["_routeRule":"yii\web\UrlRule":private] => string(30) "#^platform(?P<a5bf812ce>.*)$#u"
                        ["_paramRules":"yii\web\UrlRule":private] => array(0) {
                        }
                        ["_routeParams":"yii\web\UrlRule":private] => array(1) {
                          ["_q"] => string(4) "<_q>"
                        }
                      }
                      [77] => object(yii\web\UrlRule)#98 (16) {
                        ["name"] => string(25) "https://www.cnzhengmu.com"
                        ["pattern"] => string(32) "#^https://www\.cnzhengmu\.com$#u"
                        ["host"] => string(25) "https://www.cnzhengmu.com"
                        ["route"] => string(2) "pc"
                        ["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(25) "https://www.cnzhengmu.com"
                        ["_routeRule":"yii\web\UrlRule":private] => NULL
                        ["_paramRules":"yii\web\UrlRule":private] => array(0) {
                        }
                        ["_routeParams":"yii\web\UrlRule":private] => array(0) {
                        }
                      }
                      [78] => object(yii\web\UrlRule)#99 (16) {
                        ["name"] => string(38) "https://www.cnzhengmu.com/<controller>"
                        ["pattern"] => string(54) "#^https://www\.cnzhengmu\.com/(?P<a4cf2669a>[^\/]+)$#u"
                        ["host"] => string(25) "https://www.cnzhengmu.com"
                        ["route"] => string(15) "pc/<controller>"
                        ["defaults"] => array(0) {
                        }
                        ["suffix"] => NULL
                        ["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(38) "https://www.cnzhengmu.com/<controller>"
                        ["_routeRule":"yii\web\UrlRule":private] => string(29) "#^pc/(?P<a4cf2669a>[^\/]+)$#u"
                        ["_paramRules":"yii\web\UrlRule":private] => array(0) {
                        }
                        ["_routeParams":"yii\web\UrlRule":private] => array(1) {
                          ["controller"] => string(12) "<controller>"
                        }
                      }
                      [79] => object(yii\web\UrlRule)#100 (16) {
                        ["name"] => string(47) "https://www.cnzhengmu.com/<controller>/<action>"
                        ["pattern"] => string(76) "#^https://www\.cnzhengmu\.com/(?P<a4cf2669a>[^\/]+)/(?P<a47cc8c92>[^\/]+)$#u"
                        ["host"] => string(25) "https://www.cnzhengmu.com"
                        ["route"] => string(24) "pc/<controller>/<action>"
                        ["defaults"] => array(0) {
                        }
                        ["suffix"] => NULL
                        ["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(47) "https://www.cnzhengmu.com/<controller>/<action>"
                        ["_routeRule":"yii\web\UrlRule":private] => string(51) "#^pc/(?P<a4cf2669a>[^\/]+)/(?P<a47cc8c92>[^\/]+)$#u"
                        ["_paramRules":"yii\web\UrlRule":private] => array(0) {
                        }
                        ["_routeParams":"yii\web\UrlRule":private] => array(2) {
                          ["controller"] => string(12) "<controller>"
                          ["action"] => string(8) "<action>"
                        }
                      }
                    }
                    ["suffix"] => NULL
                    ["showScriptName"] => bool(false)
                    ["routeParam"] => string(1) "r"
                    ["cache"] => object(yii\caching\FileCache)#21 (12) {
                      ["keyPrefix"] => string(0) ""
                      ["cachePath"] => string(44) "/data/web/zhengmu/yiiframework/runtime/cache"
                      ["cacheFileSuffix"] => string(4) ".bin"
                      ["directoryLevel"] => int(1)
                      ["gcProbability"] => int(10)
                      ["fileMode"] => NULL
                      ["dirMode"] => int(509)
                      ["serializer"] => NULL
                      ["defaultDuration"] => int(0)
                      ["_events":"yii\base\Component":private] => array(0) {
                      }
                      ["_eventWildcards":"yii\base\Component":private] => array(0) {
                      }
                      ["_behaviors":"yii\base\Component":private] => NULL
                    }
                    ["ruleConfig"] => array(1) {
                      ["class"] => string(15) "yii\web\UrlRule"
                    }
                    ["normalizer"] => bool(false)
                    ["cacheKey":protected] => string(18) "yii\web\UrlManager"
                    ["_baseUrl":"yii\web\UrlManager":private] => NULL
                    ["_scriptUrl":"yii\web\UrlManager":private] => NULL
                    ["_hostInfo":"yii\web\UrlManager":private] => NULL
                    ["_ruleCache":"yii\web\UrlManager":private] => NULL
                    ["_events":"yii\base\Component":private] => array(0) {
                    }
                    ["_eventWildcards":"yii\base\Component":private] => array(0) {
                    }
                    ["_behaviors":"yii\base\Component":private] => NULL
                  }
                  ["redis"] => object(yii\redis\Connection)#112 (14) {
                    ["hostname"] => string(9) "127.0.0.1"
                    ["port"] => int(6379)
                    ["unixSocket"] => NULL
                    ["password"] => string(16) "15bZrvYmGUEyR107"
                    ["database"] => int(3)
                    ["connectionTimeout"] => NULL
                    ["dataTimeout"] => NULL
                    ["socketClientFlags"] => int(4)
                    ["retries"] => int(0)
                    ["redisCommands"] => array(198) {
                      [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) "ZADD"
                      [175] => string(5) "ZCARD"
                      [176] => string(6) "ZCOUNT"
                      [177] => string(7) "ZINCRBY"
                      [178] => string(11) "ZINTERSTORE"
                      [179] => string(9) "ZLEXCOUNT"
                      [180] => string(6) "ZRANGE"
                      [181] => string(11) "ZRANGEBYLEX"
                      [182] => string(14) "ZREVRANGEBYLEX"
                      [183] => string(13) "ZRANGEBYSCORE"
                      [184] => string(5) "ZRANK"
                      [185] => string(4) "ZREM"
                      [186] => string(14) "ZREMRANGEBYLEX"
                      [187] => string(15) "ZREMRANGEBYRANK"
                      [188] => string(16) "ZREMRANGEBYSCORE"
                      [189] => string(9) "ZREVRANGE"
                      [190] => string(16) "ZREVRANGEBYSCORE"
                      [191] => string(8) "ZREVRANK"
                      [192] => string(6) "ZSCORE"
                      [193] => string(11) "ZUNIONSTORE"
                      [194] => string(4) "SCAN"
                      [195] => string(5) "SSCAN"
                      [196] => string(5) "HSCAN"
                      [197] => string(5) "ZSCAN"
                    }
                    ["_socket":"yii\redis\Connection":private] => resource(73) of type (stream)
                    ["_events":"yii\base\Component":private] => array(0) {
                    }
                    ["_eventWildcards":"yii\base\Component":private] => array(0) {
                    }
                    ["_behaviors":"yii\base\Component":private] => array(0) {
                    }
                  }
                  ["response"] => object(yii\web\Response)#117 (18) {
                    ["format"] => string(4) "html"
                    ["acceptMimeType"] => NULL
                    ["acceptParams"] => array(0) {
                    }
                    ["formatters"] => array(4) {
                      ["html"] => array(1) {
                        ["class"] => string(29) "yii\web\HtmlResponseFormatter"
                      }
                      ["xml"] => array(1) {
                        ["class"] => string(28) "yii\web\XmlResponseFormatter"
                      }
                      ["json"] => array(1) {
                        ["class"] => string(29) "yii\web\JsonResponseFormatter"
                      }
                      ["jsonp"] => array(2) {
                        ["class"] => string(29) "yii\web\JsonResponseFormatter"
                        ["useJsonp"] => bool(true)
                      }
                    }
                    ["data"] => NULL
                    ["content"] => NULL
                    ["stream"] => NULL
                    ["charset"] => string(5) "UTF-8"
                    ["statusText"] => string(9) "Not Found"
                    ["version"] => string(3) "1.1"
                    ["isSent"] => bool(false)
                    ["_statusCode":"yii\web\Response":private] => int(404)
                    ["_headers":"yii\web\Response":private] => object(yii\web\HeaderCollection)#116 (1) {
                      ["_headers":"yii\web\HeaderCollection":private] => array(2) {
                        ["access-control-allow-credentials"] => array(1) {
                          [0] => string(4) "true"
                        }
                        ["access-control-expose-headers"] => array(1) {
                          [0] => string(25) "X-Pagination-Current-Page"
                        }
                      }
                    }
                    ["_cookies":"yii\web\Response":private] => NULL
                    ["exitStatus"] => int(0)
                    ["_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)#123 (39) {
                    ["dsn"] => string(45) "mysql:host=127.0.0.1;port=3306;dbname=zhengmu"
                    ["username"] => string(4) "root"
                    ["password"] => string(16) "B3foMrhpVXjUOl7D"
                    ["attributes"] => NULL
                    ["pdo"] => object(PDO)#127 (0) {
                    }
                    ["enableSchemaCache"] => bool(false)
                    ["schemaCacheDuration"] => int(3600)
                    ["schemaCacheExclude"] => array(0) {
                    }
                    ["schemaCache"] => string(5) "cache"
                    ["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(14) "yii\db\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(0) {
                    }
                    ["slaveConfig"] => array(0) {
                    }
                    ["masters"] => array(0) {
                    }
                    ["masterConfig"] => array(0) {
                    }
                    ["shuffleMasters"] => bool(true)
                    ["enableLogging"] => bool(true)
                    ["enableProfiling"] => bool(true)
                    ["_transaction":"yii\db\Connection":private] => NULL
                    ["_schema":"yii\db\Connection":private] => object(yii\db\mysql\Schema)#125 (13) {
                      ["columnSchemaClass"] => string(25) "yii\db\mysql\ColumnSchema"
                      ["_oldMysql":"yii\db\mysql\Schema":private] => NULL
                      ["typeMap"] => array(29) {
                        ["tinyint"] => string(7) "tinyint"
                        ["bit"] => string(7) "integer"
                        ["smallint"] => string(8) "smallint"
                        ["mediumint"] => string(7) "integer"
                        ["int"] => string(7) "integer"
                        ["integer"] => string(7) "integer"
                        ["bigint"] => string(6) "bigint"
                        ["float"] => string(5) "float"
                        ["double"] => string(6) "double"
                        ["real"] => string(5) "float"
                        ["decimal"] => string(7) "decimal"
                        ["numeric"] => string(7) "decimal"
                        ["tinytext"] => string(4) "text"
                        ["mediumtext"] => string(4) "text"
                        ["longtext"] => string(4) "text"
                        ["longblob"] => string(6) "binary"
                        ["blob"] => string(6) "binary"
                        ["text"] => string(4) "text"
                        ["varchar"] => string(6) "string"
                        ["string"] => string(6) "string"
                        ["char"] => string(4) "char"
                        ["datetime"] => string(8) "datetime"
                        ["year"] => string(4) "date"
                        ["date"] => string(4) "date"
                        ["time"] => string(4) "time"
                        ["timestamp"] => string(9) "timestamp"
                        ["enum"] => string(6) "string"
                        ["varbinary"] => string(6) "binary"
                        ["json"] => string(4) "json"
                      }
                      ["tableQuoteCharacter":protected] => string(1) "`"
                      ["columnQuoteCharacter":protected] => string(1) "`"
                      ["db"] => *RECURSION*
                      ["defaultSchema"] => NULL
                      ["exceptionMap"] => array(1) {
                        ["SQLSTATE[23"] => string(25) "yii\db\IntegrityException"
                      }
                      ["_schemaNames":"yii\db\Schema":private] => NULL
                      ["_tableNames":"yii\db\Schema":private] => array(0) {
                      }
                      ["_tableMetadata":"yii\db\Schema":private] => array(0) {
                      }
                      ["_builder":"yii\db\Schema":private] => object(yii\db\mysql\QueryBuilder)#124 (6) {
                        ["typeMap"] => array(22) {
                          ["pk"] => string(43) "int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY"
                          ["upk"] => string(52) "int(10) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY"
                          ["bigpk"] => string(46) "bigint(20) NOT NULL AUTO_INCREMENT PRIMARY KEY"
                          ["ubigpk"] => string(55) "bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY"
                          ["char"] => string(7) "char(1)"
                          ["string"] => string(12) "varchar(255)"
                          ["text"] => string(4) "text"
                          ["tinyint"] => string(10) "tinyint(3)"
                          ["smallint"] => string(11) "smallint(6)"
                          ["integer"] => string(7) "int(11)"
                          ["bigint"] => string(10) "bigint(20)"
                          ["float"] => string(5) "float"
                          ["double"] => string(6) "double"
                          ["decimal"] => string(13) "decimal(10,0)"
                          ["datetime"] => string(8) "datetime"
                          ["timestamp"] => string(9) "timestamp"
                          ["time"] => string(4) "time"
                          ["date"] => string(4) "date"
                          ["binary"] => string(4) "blob"
                          ["boolean"] => string(10) "tinyint(1)"
                          ["money"] => string(13) "decimal(19,4)"
                          ["json"] => string(4) "json"
                        }
                        ["db"] => *RECURSION*
                        ["separator"] => string(1) " "
                        ["conditionBuilders":protected] => array(0) {
                        }
                        ["conditionClasses":protected] => array(13) {
                          ["NOT"] => string(30) "yii\db\conditions\NotCondition"
                          ["AND"] => string(30) "yii\db\conditions\AndCondition"
                          ["OR"] => string(29) "yii\db\conditions\OrCondition"
                          ["BETWEEN"] => string(34) "yii\db\conditions\BetweenCondition"
                          ["NOT BETWEEN"] => string(34) "yii\db\conditions\BetweenCondition"
                          ["IN"] => string(29) "yii\db\conditions\InCondition"
                          ["NOT IN"] => string(29) "yii\db\conditions\InCondition"
                          ["LIKE"] => string(31) "yii\db\conditions\LikeCondition"
                          ["NOT LIKE"] => string(31) "yii\db\conditions\LikeCondition"
                          ["OR LIKE"] => string(31) "yii\db\conditions\LikeCondition"
                          ["OR NOT LIKE"] => string(31) "yii\db\conditions\LikeCondition"
                          ["EXISTS"] => string(33) "yii\db\conditions\ExistsCondition"
                          ["NOT EXISTS"] => string(33) "yii\db\conditions\ExistsCondition"
                        }
                        ["expressionBuilders":protected] => array(15) {
                          ["yii\db\Query"] => string(29) "yii\db\QueryExpressionBuilder"
                          ["yii\db\PdoValue"] => string(22) "yii\db\PdoValueBuilder"
                          ["yii\db\Expression"] => string(24) "yii\db\ExpressionBuilder"
                          ["yii\db\conditions\ConjunctionCondition"] => string(45) "yii\db\conditions\ConjunctionConditionBuilder"
                          ["yii\db\conditions\NotCondition"] => string(37) "yii\db\conditions\NotConditionBuilder"
                          ["yii\db\conditions\AndCondition"] => string(45) "yii\db\conditions\ConjunctionConditionBuilder"
                          ["yii\db\conditions\OrCondition"] => string(45) "yii\db\conditions\ConjunctionConditionBuilder"
                          ["yii\db\conditions\BetweenCondition"] => string(41) "yii\db\conditions\BetweenConditionBuilder"
                          ["yii\db\conditions\InCondition"] => string(36) "yii\db\conditions\InConditionBuilder"
                          ["yii\db\conditions\LikeCondition"] => string(38) "yii\db\conditions\LikeConditionBuilder"
                          ["yii\db\conditions\ExistsCondition"] => string(40) "yii\db\conditions\ExistsConditionBuilder"
                          ["yii\db\conditions\SimpleCondition"] => string(40) "yii\db\conditions\SimpleConditionBuilder"
                          ["yii\db\conditions\HashCondition"] => object(yii\db\conditions\HashConditionBuilder)#128 (1) {
                            ["queryBuilder":protected] => *RECURSION*
                          }
                          ["yii\db\conditions\BetweenColumnsCondition"] => string(48) "yii\db\conditions\BetweenColumnsConditionBuilder"
                          ["yii\db\JsonExpression"] => string(34) "yii\db\mysql\JsonExpressionBuilder"
                        }
                      }
                      ["_serverVersion":"yii\db\Schema":private] => NULL
                    }
                    ["_driverName":"yii\db\Connection":private] => string(5) "mysql"
                    ["_master":"yii\db\Connection":private] => bool(false)
                    ["_slave":"yii\db\Connection":private] => NULL
                    ["_queryCacheInfo":"yii\db\Connection":private] => array(0) {
                    }
                    ["_events":"yii\base\Component":private] => array(0) {
                    }
                    ["_eventWildcards":"yii\base\Component":private] => array(0) {
                    }
                    ["_behaviors":"yii\base\Component":private] => array(0) {
                    }
                  }
                }
                ["_definitions":"yii\di\ServiceLocator":private] => array(19) {
                  ["errorHandler"] => array(2) {
                    ["class"] => string(20) "yii\web\ErrorHandler"
                    ["errorAction"] => string(8) "pc/error"
                  }
                  ["request"] => array(4) {
                    ["cookieValidationKey"] => string(32) "rJ9H7j2a1y3MkNxw6QEQPtI0YEm4NZ71"
                    ["enableCsrfValidation"] => bool(false)
                    ["parsers"] => array(1) {
                      ["application/json"] => string(18) "yii\web\JsonParser"
                    }
                    ["class"] => string(15) "yii\web\Request"
                  }
                  ["cache"] => array(1) {
                    ["class"] => string(21) "yii\caching\FileCache"
                  }
                  ["user"] => array(7) {
                    ["identityClass"] => string(20) "app\models\UserModel"
                    ["enableAutoLogin"] => bool(true)
                    ["identityCookie"] => array(4) {
                      ["name"] => string(12) "userIdentity"
                      ["path"] => string(1) "/"
                      ["domain"] => string(14) ".cnzhengmu.com"
                      ["httpOnly"] => bool(true)
                    }
                    ["authTimeout"] => int(28800)
                    ["idParam"] => string(6) "__user"
                    ["loginUrl"] => array(1) {
                      [0] => string(10) "user/login"
                    }
                    ["class"] => string(12) "yii\web\User"
                  }
                  ["manage"] => array(7) {
                    ["class"] => string(12) "yii\web\User"
                    ["identityClass"] => string(20) "app\models\UserModel"
                    ["enableAutoLogin"] => bool(true)
                    ["identityCookie"] => array(2) {
                      ["name"] => string(14) "manageIdentity"
                      ["httpOnly"] => bool(true)
                    }
                    ["authTimeout"] => int(28800)
                    ["idParam"] => string(8) "__manage"
                    ["loginUrl"] => array(1) {
                      [0] => string(17) "manage/user/login"
                    }
                  }
                  ["mailer"] => array(5) {
                    ["class"] => string(22) "yii\swiftmailer\Mailer"
                    ["viewPath"] => string(15) "@app/views/mail"
                    ["useFileTransport"] => bool(false)
                    ["transport"] => array(6) {
                      ["class"] => string(19) "Swift_SmtpTransport"
                      ["host"] => string(18) "smtp.exmail.qq.com"
                      ["username"] => string(21) "service@cnzhengmu.com"
                      ["password"] => string(8) "Whtx3XWE"
                      ["port"] => string(3) "465"
                      ["encryption"] => string(3) "ssl"
                    }
                    ["messageConfig"] => array(2) {
                      ["charset"] => string(5) "UTF-8"
                      ["from"] => array(1) {
                        ["service@cnzhengmu.com"] => string(15) "中华整木网"
                      }
                    }
                  }
                  ["log"] => array(3) {
                    ["traceLevel"] => int(3)
                    ["targets"] => array(1) {
                      [0] => array(4) {
                        ["class"] => string(18) "yii\log\FileTarget"
                        ["levels"] => array(2) {
                          [0] => string(5) "error"
                          [1] => string(7) "warning"
                        }
                        ["categories"] => array(2) {
                          [0] => string(8) "yii\db\*"
                          [1] => string(23) "yii\web\HttpException:*"
                        }
                        ["except"] => array(1) {
                          [0] => string(25) "yii\web\HttpException:404"
                        }
                      }
                    }
                    ["class"] => string(18) "yii\log\Dispatcher"
                  }
                  ["db"] => array(5) {
                    ["class"] => string(17) "yii\db\Connection"
                    ["dsn"] => string(45) "mysql:host=127.0.0.1;port=3306;dbname=zhengmu"
                    ["username"] => string(4) "root"
                    ["password"] => string(16) "B3foMrhpVXjUOl7D"
                    ["charset"] => string(4) "utf8"
                  }
                  ["redis"] => array(5) {
                    ["class"] => string(20) "yii\redis\Connection"
                    ["hostname"] => string(9) "127.0.0.1"
                    ["password"] => string(16) "15bZrvYmGUEyR107"
                    ["port"] => int(6379)
                    ["database"] => int(3)
                  }
                  ["session"] => array(7) {
                    ["class"] => string(17) "yii\web\DbSession"
                    ["db"] => string(2) "db"
                    ["cookieParams"] => array(4) {
                      ["name"] => string(7) "zhengmu"
                      ["path"] => string(1) "/"
                      ["domain"] => string(14) ".cnzhengmu.com"
                      ["lifetime"] => int(0)
                    }
                    ["timeout"] => int(3600)
                    ["gCProbability"] => int(50)
                    ["readCallback"] => object(Closure)#2 (1) {
                      ["parameter"] => array(1) {
                        ["$fields"] => string(10) "<required>"
                      }
                    }
                    ["writeCallback"] => object(Closure)#4 (1) {
                      ["parameter"] => array(1) {
                        ["$session"] => string(10) "<required>"
                      }
                    }
                  }
                  ["urlManager"] => array(5) {
                    ["enablePrettyUrl"] => bool(true)
                    ["showScriptName"] => bool(false)
                    ["enableStrictParsing"] => bool(false)
                    ["rules"] => array(80) {
                      ["https://www.cnzhengmu.com/endorsement/<id:\d+>.html"] => string(20) "/pc/specials/details"
                      ["https://www.cnzhengmu.com/shangxueyuan/specialnews/<id:\d+>.html"] => string(30) "/pc/personalcolumn/specialnews"
                      ["https://www.cnzhengmu.com/speciallist/<id:\d+>.html"] => string(30) "/pc/personalcolumn/speciallist"
                      ["https://www.cnzhengmu.com/memberstore/<id:\d+>.html"] => string(21) "/pc/memberstore/index"
                      ["https://www.cnzhengmu.com/strategynews/<id:\d+>.html"] => string(26) "/pc/knowledge/strategynews"
                      ["https://www.cnzhengmu.com/knowledge"] => string(19) "/pc/knowledge/index"
                      ["https://www.cnzhengmu.com/news/logdiary"] => string(18) "/pc/logdiary/index"
                      ["https://www.cnzhengmu.com/news/logdiary/<id:\d+>.html"] => string(25) "/pc/logdiary/strategynews"
                      ["https://www.cnzhengmu.com/news/home"] => string(14) "/pc/home/index"
                      ["https://www.cnzhengmu.com/news/home/<id:\d+>.html"] => string(21) "/pc/home/strategynews"
                      ["https://www.cnzhengmu.com/news/brand"] => string(15) "/pc/brand/index"
                      ["https://www.cnzhengmu.com/news/brand/<id:\d+>.html"] => string(22) "/pc/brand/strategynews"
                      ["https://www.cnzhengmu.com/news/choose"] => string(16) "/pc/choose/index"
                      ["https://www.cnzhengmu.com/news/choose/<id:\d+>.html"] => string(23) "/pc/choose/strategynews"
                      ["https://www.cnzhengmu.com/news/collocation"] => string(21) "/pc/collocation/index"
                      ["https://www.cnzhengmu.com/news/collocation/<id:\d+>.html"] => string(28) "/pc/collocation/strategynews"
                      ["https://www.cnzhengmu.com/wshop"] => string(17) "/pc/display/wshop"
                      ["https://www.cnzhengmu.com/member"] => string(18) "/pc/display/member"
                      ["https://www.cnzhengmu.com/news/cnews"] => string(22) "/pc/column/companynews"
                      ["https://www.cnzhengmu.com/wei"] => string(15) "/pc/default/wei"
                      ["https://m.cnzhengmu.com/memberstore/<id:\d+>.html"] => string(25) "/mobile/memberstore/index"
                      ["https://m.cnzhengmu.com/author/<id:\d+>.html"] => string(26) "/mobile/author/speciallist"
                      ["https://m.cnzhengmu.com/author_article/<id:\d+>.html"] => string(26) "/mobile/author/specialnews"
                      ["https://m.cnzhengmu.com/company/<id:\d+>.html"] => string(20) "/mobile/company/view"
                      ["https://m.cnzhengmu.com/company_aboutus/<id:\d+>.html"] => string(23) "/mobile/company/aboutus"
                      ["https://m.cnzhengmu.com/company_news/<id:\d+>.html"] => string(20) "/mobile/company/news"
                      ["https://m.cnzhengmu.com/companynews/<companyId:\d+>-<id:\d+>.html"] => string(27) "/mobile/company/newsdetails"
                      ["https://m.cnzhengmu.com/company_contact/<id:\d+>.html"] => string(23) "/mobile/company/contact"
                      ["https://m.cnzhengmu.com/company_product/<id:\d+>.html"] => string(23) "/mobile/company/product"
                      ["https://m.cnzhengmu.com/productdetails/<companyId:\d+>-<id:\d+>.html"] => string(30) "/mobile/company/productdetails"
                      ["https://m.cnzhengmu.com/company_recruit/<id:\d+>.html"] => string(23) "/mobile/company/recruit"
                      ["https://m.cnzhengmu.com/recruitdetails/<companyId:\d+>-<id:\d+>.html"] => string(30) "/mobile/company/recruitdetails"
                      ["https://m.cnzhengmu.com/resume_apply/<companyId:\d+>-<id:\d+>.html"] => string(25) "/mobile/resumeapply/index"
                      ["https://m.cnzhengmu.com/recruit"] => string(15) "/mobile/recruit"
                      ["https://m.cnzhengmu.com/recruit/talent"] => string(22) "/mobile/recruit/talent"
                      ["https://m.cnzhengmu.com/list-<id:\d+>-<page:\d+>.html"] => string(20) "/mobile/column/index"
                      ["https://m.cnzhengmu.com/list-<id:\d+>.html"] => string(20) "/mobile/column/index"
                      ["https://m.cnzhengmu.com/show-<columnId:\d+>-<id:\d+>-<page:\d+>.html"] => string(22) "/mobile/document/index"
                      ["https://m.cnzhengmu.com/show-<columnId:\d+>-<id:\d+>.html"] => string(22) "/mobile/document/index"
                      ["https://m.cnzhengmu.com/search.html"] => string(14) "/mobile/search"
                      ["https://m.cnzhengmu.com/search-list.html"] => string(19) "/mobile/search/list"
                      ["https://m.cnzhengmu.com/live-<id:\d+>.html"] => string(17) "/mobile/live/view"
                      ["https://m.cnzhengmu.com/news.html"] => string(20) "/mobile/default/news"
                      ["https://m.cnzhengmu.com/shangxueyuan.html"] => string(28) "/mobile/default/shangxueyuan"
                      ["https://m.cnzhengmu.com/company"] => string(23) "/mobile/default/company"
                      ["https://m.cnzhengmu.com/zh"] => string(23) "/mobile/default/zhanhui"
                      ["https://m.cnzhengmu.com/swt"] => string(19) "/mobile/default/swt"
                      ["https://m.cnzhengmu.com/join"] => string(20) "/mobile/default/join"
                      ["https://m.cnzhengmu.com/wei"] => string(19) "/mobile/default/wei"
                      ["https://m.cnzhengmu.com<_q:.*>"] => string(11) "/mobile<_q>"
                      ["https://www.cnzhengmu.com/companynews"] => string(24) "/company/default/default"
                      ["https://www.cnzhengmu.com/info"] => string(24) "/company/default/default"
                      ["https://www.cnzhengmu.com/map"] => string(15) "/pc/map/default"
                      ["https://www.cnzhengmu.com/info/<companyId:\d+>-<id:\d+>.html"] => string(21) "/company/news/newview"
                      ["https://www.cnzhengmu.com/companynews/<companyId:\d+>-<id:\d+>.html"] => string(18) "/company/news/view"
                      ["https://www.cnzhengmu.com/company/<id:\d+>.html"] => string(13) "/company/view"
                      ["https://www.cnzhengmu.com/company_introduction/<id:\d+>.html"] => string(21) "/company/introduction"
                      ["https://www.cnzhengmu.com/company_video/<id:\d+>.html"] => string(14) "/company/video"
                      ["https://www.cnzhengmu.com/company_news/<id:\d+>.html"] => string(13) "/company/news"
                      ["https://www.cnzhengmu.com/company_product/<id:\d+>.html"] => string(16) "/company/product"
                      ["https://www.cnzhengmu.com/company_investment/<id:\d+>.html"] => string(19) "/company/investment"
                      ["https://www.cnzhengmu.com/company_vr/<id:\d+>.html"] => string(11) "/company/vr"
                      ["https://www.cnzhengmu.com/company_qualification/<id:\d+>.html"] => string(22) "/company/qualification"
                      ["https://www.cnzhengmu.com/company_recruit/<id:\d+>.html"] => string(16) "/company/recruit"
                      ["https://www.cnzhengmu.com/company_contact/<id:\d+>.html"] => string(16) "/company/contact"
                      ["https://www.cnzhengmu.com/mobile.html"] => string(18) "/pc/default/mobile"
                      ["https://www.cnzhengmu.com/list-<id:\d+>-<page:\d+>.html"] => string(16) "/pc/column/index"
                      ["https://www.cnzhengmu.com/list-<id:\d+>.html"] => string(16) "/pc/column/index"
                      ["https://www.cnzhengmu.com/show-<columnId:\d+>-<id:\d+>-<page:\d+>.html"] => string(18) "/pc/document/index"
                      ["https://www.cnzhengmu.com/show-<columnId:\d+>-<id:\d+>.html"] => string(18) "/pc/document/index"
                      ["https://api.cnzhengmu.com<_q:.*>"] => string(8) "/api<_q>"
                      ["https://manage.cnzhengmu.com<_q:.*>"] => string(11) "/manage<_q>"
                      ["https://www.cnzhengmu.com/user<_q:.*>"] => string(9) "/user<_q>"
                      ["https://www.cnzhengmu.com/company/view-<id:\d+>.html"] => string(19) "/company/view/index"
                      ["https://www.cnzhengmu.com/company/<id:\d+>"] => string(19) "/company/view/index"
                      ["https://www.cnzhengmu.com/company<_q:.*>"] => string(12) "/company<_q>"
                      ["https://www.cnzhengmu.com/platform<_q:.*>"] => string(13) "/platform<_q>"
                      ["https://www.cnzhengmu.com"] => string(3) "/pc"
                      ["https://www.cnzhengmu.com/<controller>"] => string(16) "/pc/<controller>"
                      ["https://www.cnzhengmu.com/<controller>/<action>"] => string(25) "/pc/<controller>/<action>"
                    }
                    ["class"] => string(18) "yii\web\UrlManager"
                  }
                  ["authManager"] => array(2) {
                    ["class"] => string(18) "yii\rbac\DbManager"
                    ["defaultRoles"] => array(1) {
                      [0] => string(5) "guest"
                    }
                  }
                  ["authClientCollection"] => array(2) {
                    ["class"] => string(25) "yii\authclient\Collection"
                    ["clients"] => array(5) {
                      ["weixin"] => array(3) {
                        ["class"] => string(29) "yii\authclient\clients\Weixin"
                        ["clientId"] => string(18) "wx7cf05ff786c73167"
                        ["clientSecret"] => string(32) "108d700017499a8c9045997acce9aac5"
                      }
                      ["wechat"] => array(3) {
                        ["class"] => string(29) "yii\authclient\clients\Wechat"
                        ["clientId"] => string(18) "wxceb2477874afd6c7"
                        ["clientSecret"] => string(32) "6d45d9bfd4bc9624cb20ba9f18aa5490"
                      }
                      ["weibo"] => array(3) {
                        ["class"] => string(28) "yii\authclient\clients\Weibo"
                        ["clientId"] => string(9) "406976624"
                        ["clientSecret"] => string(32) "078ce25e5b27d3d6a99fed25d4d96399"
                      }
                      ["qq"] => array(3) {
                        ["class"] => string(25) "yii\authclient\clients\Qq"
                        ["clientId"] => string(9) "101508122"
                        ["clientSecret"] => string(32) "bc6bd4745f4c0fbf679e751a3f7b628d"
                      }
                      ["baidu"] => array(3) {
                        ["class"] => string(28) "yii\authclient\clients\Baidu"
                        ["clientId"] => string(24) "X4KeGlXzADmwSie8eXxVVblg"
                        ["clientSecret"] => string(32) "ha6rMqGucYjmt7BByWIekMjjLtsX1QS4"
                      }
                    }
                  }
                  ["view"] => array(1) {
                    ["class"] => string(12) "yii\web\View"
                  }
                  ["formatter"] => array(1) {
                    ["class"] => string(18) "yii\i18n\Formatter"
                  }
                  ["i18n"] => array(1) {
                    ["class"] => string(13) "yii\i18n\I18N"
                  }
                  ["assetManager"] => array(1) {
                    ["class"] => string(20) "yii\web\AssetManager"
                  }
                  ["security"] => array(1) {
                    ["class"] => string(17) "yii\base\Security"
                  }
                  ["response"] => array(1) {
                    ["class"] => string(16) "yii\web\Response"
                  }
                }
                ["_events":"yii\base\Component":private] => array(0) {
                }
                ["_eventWildcards":"yii\base\Component":private] => array(0) {
                }
                ["_behaviors":"yii\base\Component":private] => array(0) {
                }
              }
              ["layout"] => NULL
              ["controllerMap"] => array(0) {
              }
              ["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) {
                ["errorHandler"] => array(2) {
                  ["class"] => string(19) "yii\web\ErrorAction"
                  ["errorAction"] => string(12) "mobile/error"
                }
              }
              ["_events":"yii\base\Component":private] => array(0) {
              }
              ["_eventWildcards":"yii\base\Component":private] => array(0) {
              }
              ["_behaviors":"yii\base\Component":private] => array(0) {
              }
            }
            ["defaultAction"] => string(5) "index"
            ["layout"] => NULL
            ["action"] => object(yii\base\InlineAction)#104 (6) {
              ["actionMethod"] => string(11) "actionIndex"
              ["id"] => string(5) "index"
              ["controller"] => *RECURSION*
              ["_events":"yii\base\Component":private] => array(0) {
              }
              ["_eventWildcards":"yii\base\Component":private] => array(0) {
              }
              ["_behaviors":"yii\base\Component":private] => NULL
            }
            ["_view":"yii\base\Controller":private] => NULL
            ["_viewPath":"yii\base\Controller":private] => NULL
            ["_events":"yii\base\Component":private] => array(2) {
              ["beforeAction"] => array(1) {
                [0] => array(2) {
                  [0] => array(2) {
                    [0] => object(yii\filters\Cors)#115 (7) {
                      ["request"] => object(yii\web\Request)#10 (34) {
                        ["enableCsrfValidation"] => bool(false)
                        ["csrfParam"] => string(5) "_csrf"
                        ["csrfCookie"] => array(1) {
                          ["httpOnly"] => bool(true)
                        }
                        ["enableCsrfCookie"] => bool(true)
                        ["enableCookieValidation"] => bool(true)
                        ["cookieValidationKey"] => string(32) "rJ9H7j2a1y3MkNxw6QEQPtI0YEm4NZ71"
                        ["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)#101 (1) {
                          ["_headers":"yii\web\HeaderCollection":private] => array(5) {
                            ["host"] => array(1) {
                              [0] => string(15) "m.cnzhengmu.com"
                            }
                            ["user-agent"] => array(1) {
                              [0] => string(9) "claudebot"
                            }
                            ["accept"] => array(1) {
                              [0] => string(3) "*/*"
                            }
                            ["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] => string(23) "https://m.cnzhengmu.com"
                        ["_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(12) "list-27.html"
                        ["_url":"yii\web\Request":private] => string(13) "/list-27.html"
                        ["_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
                        ["_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
                      }
                      ["response"] => object(yii\web\Response)#117 (18) {
                        ["format"] => string(4) "html"
                        ["acceptMimeType"] => NULL
                        ["acceptParams"] => array(0) {
                        }
                        ["formatters"] => array(4) {
                          ["html"] => array(1) {
                            ["class"] => string(29) "yii\web\HtmlResponseFormatter"
                          }
                          ["xml"] => array(1) {
                            ["class"] => string(28) "yii\web\XmlResponseFormatter"
                          }
                          ["json"] => array(1) {
                            ["class"] => string(29) "yii\web\JsonResponseFormatter"
                          }
                          ["jsonp"] => array(2) {
                            ["class"] => string(29) "yii\web\JsonResponseFormatter"
                            ["useJsonp"] => bool(true)
                          }
                        }
                        ["data"] => NULL
                        ["content"] => NULL
                        ["stream"] => NULL
                        ["charset"] => string(5) "UTF-8"
                        ["statusText"] => string(9) "Not Found"
                        ["version"] => string(3) "1.1"
                        ["isSent"] => bool(false)
                        ["_statusCode":"yii\web\Response":private] => int(404)
                        ["_headers":"yii\web\Response":private] => object(yii\web\HeaderCollection)#116 (1) {
                          ["_headers":"yii\web\HeaderCollection":private] => array(2) {
                            ["access-control-allow-credentials"] => array(1) {
                              [0] => string(4) "true"
                            }
                            ["access-control-expose-headers"] => array(1) {
                              [0] => string(25) "X-Pagination-Current-Page"
                            }
                          }
                        }
                        ["_cookies":"yii\web\Response":private] => NULL
                        ["exitStatus"] => int(0)
                        ["_events":"yii\base\Component":private] => array(0) {
                        }
                        ["_eventWildcards":"yii\base\Component":private] => array(0) {
                        }
                        ["_behaviors":"yii\base\Component":private] => NULL
                      }
                      ["actions"] => array(0) {
                      }
                      ["cors"] => array(6) {
                        ["Origin"] => array(1) {
                          [0] => string(1) "*"
                        }
                        ["Access-Control-Request-Method"] => array(4) {
                          [0] => string(3) "GET"
                          [1] => string(4) "POST"
                          [2] => string(3) "PUT"
                          [3] => string(7) "OPTIONS"
                        }
                        ["Access-Control-Request-Headers"] => array(1) {
                          [0] => string(1) "*"
                        }
                        ["Access-Control-Allow-Credentials"] => bool(true)
                        ["Access-Control-Max-Age"] => int(3600)
                        ["Access-Control-Expose-Headers"] => array(1) {
                          [0] => string(25) "X-Pagination-Current-Page"
                        }
                      }
                      ["only"] => NULL
                      ["except"] => array(0) {
                      }
                      ["owner"] => *RECURSION*
                    }
                    [1] => string(12) "beforeFilter"
                  }
                  [1] => NULL
                }
              }
              ["afterAction"] => array(1) {
                [0] => array(2) {
                  [0] => array(2) {
                    [0] => object(yii\filters\Cors)#115 (7) {
                      ["request"] => object(yii\web\Request)#10 (34) {
                        ["enableCsrfValidation"] => bool(false)
                        ["csrfParam"] => string(5) "_csrf"
                        ["csrfCookie"] => array(1) {
                          ["httpOnly"] => bool(true)
                        }
                        ["enableCsrfCookie"] => bool(true)
                        ["enableCookieValidation"] => bool(true)
                        ["cookieValidationKey"] => string(32) "rJ9H7j2a1y3MkNxw6QEQPtI0YEm4NZ71"
                        ["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)#101 (1) {
                          ["_headers":"yii\web\HeaderCollection":private] => array(5) {
                            ["host"] => array(1) {
                              [0] => string(15) "m.cnzhengmu.com"
                            }
                            ["user-agent"] => array(1) {
                              [0] => string(9) "claudebot"
                            }
                            ["accept"] => array(1) {
                              [0] => string(3) "*/*"
                            }
                            ["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] => string(23) "https://m.cnzhengmu.com"
                        ["_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(12) "list-27.html"
                        ["_url":"yii\web\Request":private] => string(13) "/list-27.html"
                        ["_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
                        ["_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
                      }
                      ["response"] => object(yii\web\Response)#117 (18) {
                        ["format"] => string(4) "html"
                        ["acceptMimeType"] => NULL
                        ["acceptParams"] => array(0) {
                        }
                        ["formatters"] => array(4) {
                          ["html"] => array(1) {
                            ["class"] => string(29) "yii\web\HtmlResponseFormatter"
                          }
                          ["xml"] => array(1) {
                            ["class"] => string(28) "yii\web\XmlResponseFormatter"
                          }
                          ["json"] => array(1) {
                            ["class"] => string(29) "yii\web\JsonResponseFormatter"
                          }
                          ["jsonp"] => array(2) {
                            ["class"] => string(29) "yii\web\JsonResponseFormatter"
                            ["useJsonp"] => bool(true)
                          }
                        }
                        ["data"] => NULL
                        ["content"] => NULL
                        ["stream"] => NULL
                        ["charset"] => string(5) "UTF-8"
                        ["statusText"] => string(9) "Not Found"
                        ["version"] => string(3) "1.1"
                        ["isSent"] => bool(false)
                        ["_statusCode":"yii\web\Response":private] => int(404)
                        ["_headers":"yii\web\Response":private] => object(yii\web\HeaderCollection)#116 (1) {
                          ["_headers":"yii\web\HeaderCollection":private] => array(2) {
                            ["access-control-allow-credentials"] => array(1) {
                              [0] => string(4) "true"
                            }
                            ["access-control-expose-headers"] => array(1) {
                              [0] => string(25) "X-Pagination-Current-Page"
                            }
                          }
                        }
                        ["_cookies":"yii\web\Response":private] => NULL
                        ["exitStatus"] => int(0)
                        ["_events":"yii\base\Component":private] => array(0) {
                        }
                        ["_eventWildcards":"yii\base\Component":private] => array(0) {
                        }
                        ["_behaviors":"yii\base\Component":private] => NULL
                      }
                      ["actions"] => array(0) {
                      }
                      ["cors"] => array(6) {
                        ["Origin"] => array(1) {
                          [0] => string(1) "*"
                        }
                        ["Access-Control-Request-Method"] => array(4) {
                          [0] => string(3) "GET"
                          [1] => string(4) "POST"
                          [2] => string(3) "PUT"
                          [3] => string(7) "OPTIONS"
                        }
                        ["Access-Control-Request-Headers"] => array(1) {
                          [0] => string(1) "*"
                        }
                        ["Access-Control-Allow-Credentials"] => bool(true)
                        ["Access-Control-Max-Age"] => int(3600)
                        ["Access-Control-Expose-Headers"] => array(1) {
                          [0] => string(25) "X-Pagination-Current-Page"
                        }
                      }
                      ["only"] => NULL
                      ["except"] => array(0) {
                      }
                      ["owner"] => *RECURSION*
                    }
                    [1] => string(11) "afterFilter"
                  }
                  [1] => NULL
                }
              }
            }
            ["_eventWildcards":"yii\base\Component":private] => array(0) {
            }
            ["_behaviors":"yii\base\Component":private] => array(1) {
              ["corsFilter"] => object(yii\filters\Cors)#115 (7) {
                ["request"] => object(yii\web\Request)#10 (34) {
                  ["enableCsrfValidation"] => bool(false)
                  ["csrfParam"] => string(5) "_csrf"
                  ["csrfCookie"] => array(1) {
                    ["httpOnly"] => bool(true)
                  }
                  ["enableCsrfCookie"] => bool(true)
                  ["enableCookieValidation"] => bool(true)
                  ["cookieValidationKey"] => string(32) "rJ9H7j2a1y3MkNxw6QEQPtI0YEm4NZ71"
                  ["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)#101 (1) {
                    ["_headers":"yii\web\HeaderCollection":private] => array(5) {
                      ["host"] => array(1) {
                        [0] => string(15) "m.cnzhengmu.com"
                      }
                      ["user-agent"] => array(1) {
                        [0] => string(9) "claudebot"
                      }
                      ["accept"] => array(1) {
                        [0] => string(3) "*/*"
                      }
                      ["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] => string(23) "https://m.cnzhengmu.com"
                  ["_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(12) "list-27.html"
                  ["_url":"yii\web\Request":private] => string(13) "/list-27.html"
                  ["_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
                  ["_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
                }
                ["response"] => object(yii\web\Response)#117 (18) {
                  ["format"] => string(4) "html"
                  ["acceptMimeType"] => NULL
                  ["acceptParams"] => array(0) {
                  }
                  ["formatters"] => array(4) {
                    ["html"] => array(1) {
                      ["class"] => string(29) "yii\web\HtmlResponseFormatter"
                    }
                    ["xml"] => array(1) {
                      ["class"] => string(28) "yii\web\XmlResponseFormatter"
                    }
                    ["json"] => array(1) {
                      ["class"] => string(29) "yii\web\JsonResponseFormatter"
                    }
                    ["jsonp"] => array(2) {
                      ["class"] => string(29) "yii\web\JsonResponseFormatter"
                      ["useJsonp"] => bool(true)
                    }
                  }
                  ["data"] => NULL
                  ["content"] => NULL
                  ["stream"] => NULL
                  ["charset"] => string(5) "UTF-8"
                  ["statusText"] => string(9) "Not Found"
                  ["version"] => string(3) "1.1"
                  ["isSent"] => bool(false)
                  ["_statusCode":"yii\web\Response":private] => int(404)
                  ["_headers":"yii\web\Response":private] => object(yii\web\HeaderCollection)#116 (1) {
                    ["_headers":"yii\web\HeaderCollection":private] => array(2) {
                      ["access-control-allow-credentials"] => array(1) {
                        [0] => string(4) "true"
                      }
                      ["access-control-expose-headers"] => array(1) {
                        [0] => string(25) "X-Pagination-Current-Page"
                      }
                    }
                  }
                  ["_cookies":"yii\web\Response":private] => NULL
                  ["exitStatus"] => int(0)
                  ["_events":"yii\base\Component":private] => array(0) {
                  }
                  ["_eventWildcards":"yii\base\Component":private] => array(0) {
                  }
                  ["_behaviors":"yii\base\Component":private] => NULL
                }
                ["actions"] => array(0) {
                }
                ["cors"] => array(6) {
                  ["Origin"] => array(1) {
                    [0] => string(1) "*"
                  }
                  ["Access-Control-Request-Method"] => array(4) {
                    [0] => string(3) "GET"
                    [1] => string(4) "POST"
                    [2] => string(3) "PUT"
                    [3] => string(7) "OPTIONS"
                  }
                  ["Access-Control-Request-Headers"] => array(1) {
                    [0] => string(1) "*"
                  }
                  ["Access-Control-Allow-Credentials"] => bool(true)
                  ["Access-Control-Max-Age"] => int(3600)
                  ["Access-Control-Expose-Headers"] => array(1) {
                    [0] => string(25) "X-Pagination-Current-Page"
                  }
                }
                ["only"] => NULL
                ["except"] => array(0) {
                }
                ["owner"] => *RECURSION*
              }
            }
          }
          [1] => string(11) "actionIndex"
        }
        [1] => array(2) {
          [0] => string(2) "27"
          [1] => int(1)
        }
      }
    }
    [2] => array(6) {
      ["file"] => string(70) "/data/web/zhengmu/yiiframework/vendor/yiisoft/yii2/base/Controller.php"
      ["line"] => int(157)
      ["function"] => string(13) "runWithParams"
      ["class"] => string(21) "yii\base\InlineAction"
      ["type"] => string(2) "->"
      ["args"] => array(1) {
        [0] => array(1) {
          ["id"] => string(2) "27"
        }
      }
    }
    [3] => array(6) {
      ["file"] => string(66) "/data/web/zhengmu/yiiframework/vendor/yiisoft/yii2/base/Module.php"
      ["line"] => int(528)
      ["function"] => string(9) "runAction"
      ["class"] => string(19) "yii\base\Controller"
      ["type"] => string(2) "->"
      ["args"] => array(2) {
        [0] => string(5) "index"
        [1] => array(1) {
          ["id"] => string(2) "27"
        }
      }
    }
    [4] => array(6) {
      ["file"] => string(70) "/data/web/zhengmu/yiiframework/vendor/yiisoft/yii2/web/Application.php"
      ["line"] => int(103)
      ["function"] => string(9) "runAction"
      ["class"] => string(15) "yii\base\Module"
      ["type"] => string(2) "->"
      ["args"] => array(2) {
        [0] => string(19) "mobile/column/index"
        [1] => array(1) {
          ["id"] => string(2) "27"
        }
      }
    }
    [5] => array(6) {
      ["file"] => string(71) "/data/web/zhengmu/yiiframework/vendor/yiisoft/yii2/base/Application.php"
      ["line"] => int(386)
      ["function"] => string(13) "handleRequest"
      ["class"] => string(19) "yii\web\Application"
      ["type"] => string(2) "->"
      ["args"] => array(1) {
        [0] => object(yii\web\Request)#10 (34) {
          ["enableCsrfValidation"] => bool(false)
          ["csrfParam"] => string(5) "_csrf"
          ["csrfCookie"] => array(1) {
            ["httpOnly"] => bool(true)
          }
          ["enableCsrfCookie"] => bool(true)
          ["enableCookieValidation"] => bool(true)
          ["cookieValidationKey"] => string(32) "rJ9H7j2a1y3MkNxw6QEQPtI0YEm4NZ71"
          ["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)#101 (1) {
            ["_headers":"yii\web\HeaderCollection":private] => array(5) {
              ["host"] => array(1) {
                [0] => string(15) "m.cnzhengmu.com"
              }
              ["user-agent"] => array(1) {
                [0] => string(9) "claudebot"
              }
              ["accept"] => array(1) {
                [0] => string(3) "*/*"
              }
              ["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] => string(23) "https://m.cnzhengmu.com"
          ["_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(12) "list-27.html"
          ["_url":"yii\web\Request":private] => string(13) "/list-27.html"
          ["_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
          ["_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
        }
      }
    }
    [6] => array(6) {
      ["file"] => string(31) "/data/web/zhengmu/web/index.php"
      ["line"] => int(97)
      ["function"] => string(3) "run"
      ["class"] => string(20) "yii\base\Application"
      ["type"] => string(2) "->"
      ["args"] => array(0) {
      }
    }
  }
  ["previous":"Exception":private] => NULL
}