PHPerkaigi 2022 Day2 Track B
ຊ쎂썙썺썶ා썛੬ऑੑ쎅3PLV !BEKQ
View Slide
썴쎣쎆ɺલ쎅य़
ࢁా썬쎪 Ծʮ3PLV썬쎪ɺอकҾܧҊ݅쎛쎠쎏쎪ʁ։ൃ썮썶ձࣾ쎅ରԠѱ썦썽쎡썶썛쎪쎛썺썽ɻূ݊ձࣾ쎅ސ٬쏨쎮쏤썗쏂쏁쏃쏐쏪쎁쎪쎛써쎀ʯ
쎆쎁쎪썷썢ݏ쎁༧ײ썣썮썶쎅썾ɾɾɾ썿쎡썙썟썱ɺࣄલௐࠪ쎅쎖डୗ
썴쎣썣ɺ썪쎅ڪ쎤썮썛ޠ쎅࢝쎕쎡썷썺썶
;Γ͕ͳʹࣈͱ͔ೖΔ͚Ͳɾɾɾ·͊Өڹͳ͍͔ɻ͓ɾɾɾʁ썿쎙썙쎣ɺձһొʢޱ࠲։ઃʣ썢쎠ௐࠪ։࢝
͓͓͓ɾɾɾʁ
ΜΜΜΜʁ쏧쏋ɾɾɾ 쏛쏍
썡쎦썢쎡썛썶썷써썶썷쎤썝썢
쎵쏋쎵쏋ɾɾɾ쏍쏉썗썗쏽ʂ썛쎛ɺ썴쎪쎁쎆썱쎆쎁썛ɻ
썴쎅࣌ɺ쎅쎂ඈ쎊ࠐ쎪썾썤썶쎅쎆
શવ쎠쎁썛썡썯썬쎪쎅໔ڐূ
ݸਓใ쏟쏵쎴썗쏡쏽
쎦쎡썿ਅ໘쎂ɾɾɾ썪쎪쎁࣮썮썽쎕썲쎪썢ʁ
쎦쎡썿ਅ໘쎂ɾɾɾ썪쎪쎁࣮썮썽쎕썲쎪썢ʁ썪쎪쎁ࡶ쎁࣮썮썽쎟썛쎅쎆ɺੈքத쎅ਓ쎂ݟ쎠쎣썽쎙쎁썛쏟쎫쎮쏵썷써썾썰ɻ
ྫ썟쎇ɺɾ쏰썗쏀썣쎿쎮쏒্썢쎠ੜ썮ɺɹ쏊쎰쏽쏷썗쏓썾썤쎢ݟੵॻ1%'ɾاۀ쏁쏃쏐쏪쎅ɺ1%'ੜ썮썶ٻॻɾ쏕쏯썗쏃쎿쎮쏒쎅ɺެ։લهࣄ쎅ఴ쏟쎫쎮쏵
ྫ썟쎇ɺɾ쏰썗쏀썣쎿쎮쏒্썢쎠ੜ썮ɺɹ쏊쎰쏽쏷썗쏓썾썤쎢ݟੵॻ1%'ɾاۀ쏁쏃쏐쏪쎅ɺ1%'ੜ썮썶ٻॻɾ쏕쏯썗쏃쎿쎮쏒쎅ɺެ։લهࣄ쎅ఴ쏟쎫쎮쏵ˠશ෦ެ։쏑쎭쏶쎹쏒쏴쎂ஔ썛썽쎆쏊쏫ʂ
썪쎪쎁썪썿쎩ݴ썝ਓ썣썛쎕썰ʮ63-쎆쏳쏽쏊쏪ʢ쏙쏍쏁쏯ʣ쎁쎪썷썢쎠ɺɹ63-쎠쎣쎁썛ݶ쎡ݟ쎣쎁썛썯쎚쎁썛썾썰썢ʯ
썪쎪쎁썪썿쎩ݴ썝ਓ썣썛쎕썰ʮ63-쎆쏳쏽쏊쏪ʢ쏙쏍쏁쏯ʣ쎁쎪썷썢쎠ɺɹ63-쎠쎣쎁썛ݶ쎡ݟ쎣쎁썛썯쎚쎁썛썾썰썢ʯɹɹ63-쎩쎠쎁썤쎚ݟ쎣쎁썛ɹɹ63-썬썟썺썽썛쎣쎇ੈքத썷쎣썾쎙ݟ쎣쎢✕
࣮ྫ1̋5*.&4ใ࿙썟썛ࣄ݅ެ։લ쎅쏡쏶쏃쏴쏴썗쏃쎅ఴ쏟쎫쎮쏵ʢ1%'ʣ썣ୈࡾऀ썢쎠쎬쎹쏅쏃Մೳ쎁ঢ়ଶ쎂쎁썺썽썡쎡ɺྲྀग़ɻˠҰาؒҧ썟쎇쎮쏽쎿쎮쏊썗औҾ쎂쎙ܨ썣쎡ɹ썢쎄쎁썛ࣄҊɻ
썾쎙ඇެ։ྖҬ쎂ஔ썛썶쎠ɺݟ썲쎢쎐썤쏰썗쏀쎂쎙ݟ썲쎠쎣쎁썛쎅썾쎆ʁ
썪썝썰쎢ɻ쎕썱쏟쎫쎮쏵쎆ඇެ։ྖҬ쎂ஔ썤ɺ쏰썗쏀*%썿썿쎙쎂%#쎂อଘpublic function upload(Request $request){//ϦΫΤετऔಘ$uploaded_file = $request->file('upload');//…தུ…//privateσΟεΫʹอଘ$save_path = $uploaded_file->store('userfiles');//DBʹอଘ$private_file = new PrivateFile();$private_file->user_id = Auth::id();$private_file->file_path = $save_path;$private_file->mime_type = $uploaded_file->getMimeType();$private_file->save();//ϓϨϏϡʔ༻ʹURLΛฦ٫return response()->json(['url' => route('private-file', [$private_file->file_id,$uploaded_file->extension()]),]);}
썪썝썰쎢ɻ쏟쎫쎮쏵༻쎅쏵썗쏐쎭쏽쎺쎩༻ҙRoute::get(‘/private-files/{private_file}.{ext}',[PrivateFileController::class, ‘view'])->name('private-file');
썪썝썰쎢ɻ쎽쏽쏒쏷썗쏳썢쎠쏟쎫쎮쏵쎩ฦ٫public function view(PrivateFile $private_file, string $ext){//ϢʔβIDνΣοΫif ($private_file->user_id !== Auth::id()) {abort(404);}//ଘࡏνΣοΫif (!Storage::exists($private_file->file_path)) {abort(404);}//Ϩεϙϯε$headers = ['Content-Type' => $private_file->mime_type];$content = Storage::get($private_file->file_path);return response($content, 200, $headers);}
썪썝썰쎢ɻ쏵썗쏐쎭쏽쎺썬쎣썶63-쎩༻썮썽ը૾쎩දࣔɻˠ쎬쏍쏡쏷썗쏓썮썶ຊਓҎ֎썣쎬쎹쏅쏃썮썽쎙ɹ썿쎁쎢ɻ
썶쎕쎂쏷쎺쎮쏽ೝূࠔ쎁ཁ݅쎙썙쎡쎕썰ɻྫ썟쎇֎෦쎏쎅쏟쎫쎮쏵ڞ༗ɻˠ썴쎣썾쎙쏵썗쏐쎭쏽쎺쎆௨썮썶্썾ɺɾਪఆࠔ쎁63-쎂썰쎢ɾදࣔՄೳ쎁ظؒ쎩੍ݶɾදࣔՄೳ쎁ճ쎩੍ݶɾ쎬쎹쏅쏃쎅ཤྺ쎩썰
썸쎁쎖쎂쎖쎪쎁େ썤8PSE1SFTTߘ썣Լॻ썤썾쎙ඇެ։썾쎙ɺఴ쏟쎫쎮쏵쎆ެ։쏑쎭쏶쎹쏒쏴쎂ஔ썢쎣쎕썰ɻ썮썢쎙جຊ쎬쏍쏡쏷썗쏓썮썶쎕쎕쎅쏟쎫쎮쏵໊썾ɻˠެ։લهࣄ쎂ݟ쎠쎣썽쎆썛써쎁썛쏟쎫쎮쏵썣ɹఴ썬쎣쎢Մೳੑ썣썙쎢쎁쎠ɺཁ쎵쏃쏉쏨쎮쏄ɻ
ʮࢁా썬썗쎪ɺௐࠪ։࢝썾ɺɹɹ썸쎞썺썿쎛쎇썛쎛썻ݟ썻써쎕썮썶ʯࢁా썬쎪 Ծʮ쎛쎐썗͆͆͆͆ɹɾɾɾ썪쎅݅쎆ޱ֎ແ༻썾썡ئ썛썮쎕썰ɻɹ໌쎢쎖쎂ग़썶쎠ࢮਓ썣ग़쎕썰ɻʯ
썡٬༷썢쎠Ұචऔ썺썽쎙쎠썺썽ɺௐࠪଓߦɻ
ɾɾɾʁ
·͔͔ͬͪ͜͞ΒύεϫʔυϦηοτͰ͖ͨΓ͠ͳ͍ΑͶɾɾɾ
Μɾɾɾʁ
쏛쏃쏹썗쏓ฏจอଘ
໌썮썶ӡ༻쏟쏷썗ޱ࠲։ઃϑΥʔϜొ༰֬ೝը໘ొ ৹ࠪ쏛쏃쏹썗쏓௨*%࠾൪쏛쏃쏹썗쏓ੜ
ɹɹӡ༻쏟쏷썗্ɺฏจอଘ썲썭쎢쎩ಘ쎁썛ฉ썤썤썶ݴ썛༁
ɹɹӡ༻쏟쏷썗্ɺฏจอଘ썲썭쎢쎩ಘ쎁썛ɹɹۀཁ݅쎩ຬ썶썮썻썻ɺฏจอଘෆཁ쎁ɹɹӡ༻쏟쏷썗쎩ఏҊ썰쎢쎅썣4&쎅ࣄ썾썰ɻ✕ฉ썤썤썶ݴ썛༁
썶썿썟쎇ɺ৹ࠪྃ࣌쎂༗ޮظݶ썤쎅쏒썗쎹쏽쎩ੜ썮ɺ쏒썗쎹쏽쎅ॳظઃఆ63-쎩쏫썗쏵썾ࣗಈૹɻˠظݶ쎂ਖ਼썮썛쏒썗쎹쏽쎅63-썢쎠쎬쎹쏅쏃ɹ썮썶߹쎅쎖쏛쏃쏹썗쏓ઃఆը໘쎩։썦ɻˠ쏰썗쏀ࣗ썣쏛쏃쏹썗쏓쎩ઃఆɻ
쎀썝썮썽쎙༣ૹ썮쎁써쎣쎇썛써쎁썛쎁쎠ɺॳظ쏛쏃쏹썗쏓쎆༗ޮظݶ쎅Ծ쏛쏃쏹썗쏓썿썰쎢ʢ썪쎣썷써쎆ฏจอ࣋ʣɻˠॳճ쏷쎺쎮쏽࣌쎂ɺ쏛쏃쏹썗쏓มߋ쎩ڧ੍썰쎢ɻʢ썪쎅썿썤ฏจ쎅Ծ쏛쏃쏹썗쏓쎙%#썢쎠আʣ
쎁썳쏛쏃쏹썗쏓ฏจอଘ썣썷쎘쎁쎅썢ʁ
ʮѱҙ쎅ཧऀʯ쎁썳쏛쏃쏹썗쏓ฏจอଘ썣썷쎘쎁쎅썢ʁ
ɾӡӦձࣾ쎩ୀ৬썮썶ݩࣾһɾ։ൃձࣾ쎅ݩ֎쏫쏽쏚썗ɾFUDશһ쎩৴༻썾썤쎕썰썢ʁ
࣮ྫদ̋ূ݊ސ٬ޱ࠲ෆਖ਼ग़ۚࣄ݅쏁쏃쏐쏪։ൃ쎩डୗ썮썶4*FS쎅ࣾһ썣ɺސ٬쎅쏛쏃쏹썗쏓쎩ෆਖ਼쎂ೖख썮ɺࣗ쎅ޱ࠲쎂ૹۚɻඃֹ쎆ԯԁ༨쎡ɻ
ɾ쏛쏃쏹썗쏓ฏจอଘɾཧऀ썣쏛쏃쏹썗쏓쎩ݟ쎣쎢ɾཧऀ썣쏛쏃쏹썗쏓쎩มߋ썾썤쎢جຊత쎂શ෦쏊쏫썾썰ɻ
썿썛썝쎦써썾ɺཧը໘썾쏛쏃쏹썗쏓쎩֬ೝ썮썽쏷쎺쎮쏽ɻௐࠪଓߦ
쏷쎺쎮쏽
쎁쎪썷썢ؾ쎂쎁쎢쏫쏕쏯썗쎩ຊೳ썣
썴썺썿൶쎩։썦ɾɾɾ
썪썝썛썝༷썷썿ཧղೖۚೖྗ ೖۚ֬ೝ ܾࡁը໘8FCIPPLΤϯυϙΠϯτܾࡁྃߴߋ৽"1*쏴쏊쎮쏶쎹쏒ຊ쏁쏃쏐쏪 ֎෦ܾࡁ쎿쎮쏒ผ쏁쏃쏐쏪8FCIPPL쎽썗쏵ೖۚ༧ఆ쏑썗쏉ొೖۚࡁ쎂ߋ৽
썪썝썛썝༷썷썿ཧղೖۚೖྗ ೖۚ֬ೝ ܾࡁը໘8FCIPPLΤϯυϙΠϯτܾࡁྃߴߋ৽"1*쏴쏊쎮쏶쎹쏒ຊ쏁쏃쏐쏪 ֎෦ܾࡁ쎿쎮쏒ผ쏁쏃쏐쏪8FCIPPL쎽썗쏵ೖۚ༧ఆ쏑썗쏉ొೖۚࡁ쎂ߋ৽ܾࡁ͕શ֎෦ͳΒܾࡁใอ࣋PS௨աͱ͔ͷ৺ͳ͍͚ͲɺҰԠ͚ͩ͜͜ݟͱ͔͘ɻ
쏇썗쏃쏋쎱쏍쎹public function webhook(Request $request){//ϦΫΤετऔಘ$deposit_id = $request->input('rid');$tran_id = $request->input('tid');$tran_date = $request->input('tdt');//֘ͷೖۚ༧ఆΛऔಘ$deposit = Deposit::find($deposit_id);if (!$deposit_id) {abort(400);}//σʔλΛߋ৽$deposit->status = Status::SUCCESS;$deposit->tran_id = $tran_id;$deposit->tran_date = $tran_date;$deposit->save();//ӡ༻γεςϜͷߴՃࢉ (API)DataLinkService::add($deposit->user_id, $deposit->amount);//ਖ਼ৗϨεϙϯεdie("0");}
public function webhook(Request $request){//ϦΫΤετऔಘ$deposit_id = $request->input('rid');$tran_id = $request->input('tid');$tran_date = $request->input('tdt');//֘ͷೖۚ༧ఆΛऔಘ$deposit = Deposit::find($deposit_id);if (!$deposit_id) {abort(400);}//σʔλΛߋ৽$deposit->status = Status::SUCCESS;$deposit->tran_id = $tran_id;$deposit->tran_date = $tran_date;$deposit->save();//ӡ༻γεςϜͷߴՃࢉ (API)DataLinkService::add($deposit->user_id, $deposit->amount);//ਖ਼ৗϨεϙϯεdie("0");}쎙썝Ұ
쏤쎮쏷썗쏓쎂ਖ਼썮썛lSJEz썬썟썙쎣쎇ɺແ݅쎂ೖۚࡁ썿썮썽ॲཧ썬쎣쎢ɻpublic function webhook(Request $request){//ϦΫΤετऔಘ$deposit_id = $request->input('rid');$tran_id = $request->input('tid');$tran_date = $request->input('tdt');//֘ͷೖۚ༧ఆΛऔಘ$deposit = Deposit::find($deposit_id);if (!$deposit_id) {abort(400);}//σʔλΛߋ৽$deposit->status = Status::SUCCESS;$deposit->tran_id = $tran_id;$deposit->tran_date = $tran_date;$deposit->save();//ӡ༻γεςϜͷߴՃࢉ (API)DataLinkService::add($deposit->user_id, $deposit->amount);//ਖ਼ৗϨεϙϯεdie("0");}쎙썝Ұ
썻쎕쎡썪썝썰쎢썿ೖۚೖྗ ೖۚ֬ೝ ܾࡁը໘8FCIPPLΤϯυϙΠϯτܾࡁྃߴߋ৽"1*쏴쏊쎮쏶쎹쏒ຊ쏁쏃쏐쏪 ֎෦ܾࡁ쎿쎮쏒ผ쏁쏃쏐쏪8FCIPPL쎽썗쏵ೖۚ༧ఆ쏑썗쏉ొೖۚࡁ쎂ߋ৽ܾࡁ썲썱쎂DVSM91045ESJEIUUQT[BSV[BSVFYBNQMFDPNXFCIPPL
ِೖۚ썮์
쏁쏃쏐쏪֎෦썢쎠ॴఆ쎅쏴쎹쎲쏃쏒쎩डऔ쎡ɺ썴쎅༰쎂Ԡ썯썽ɺ쏑썗쏉쎅࡞쎛ߋ৽쎅֤छॲཧ쎩ߦ썝썪썿ɻʹී௨썾쎆ઈର쎂쎛쎠쎁썛ةݥ쎁ॲཧ쎩ɹྫ֎త쎂쎛썺썽썛쎢ɻɹɾɾɾ썿썛썝썪썿쎩쎕썱ೝࣝ썮쎕썮쎞썝ɻ8FCIPPL썿쎆
ɾ௨ৗ8FCIPPL쎩ఏڙ썮썽썛쎢쎿썗쏝쏃쎂쎆ɹ쏰썗쏀썫썿쎂ݻ༗쎅ʮൿີ伴ʯ썣༻ҙ썬쎣썽썡쎡ɺɹ썴쎣쎩༻썛썽쏴쎹쎲쏃쏒쏦쏑쎭쎩쏙쏍쏁쏯썮썶ʮॺ໊ʯ쎩ɹ쏴쎹쎲쏃쏒쏢쏍쏊썾ૹ썺썽썤쎕썰ɻɹ썪쎅썣ਖ਼썮썛썪썿쎩֬ೝ썮ɺਖ਼썮썛࣌쎅쎖ॲཧ쎩࣮ߦ썰쎢쎟썝ɹ࣮썰쎢ɻɾ쏴쎹쎲쏃쏒ݩ쎅*1쎬쏓쏶쏃썣ެ։썬쎣썽썛쎢쎁쎠ɺɹ*1쎬쏓쏶쏃쎅쏋쎱쏍쎹쎙ߦ썝ɻ쎀썝썰쎢쎅ʁ
썪썪썣࠷େ쎅ةػཧ쏧쎮쏽쏒썺쎔썛쎅썾ೖۚೖྗ ೖۚ֬ೝ ܾࡁը໘8FCIPPLΤϯυϙΠϯτܾࡁྃߴߋ৽"1*쏴쏊쎮쏶쎹쏒ຊ쏁쏃쏐쏪 ֎෦ܾࡁ쎿쎮쏒ผ쏁쏃쏐쏪8FCIPPL쎽썗쏵ೖۚ༧ఆ쏑썗쏉ొೖۚࡁ쎂ߋ৽
쎁쎪썸쎚쎠쎿썗쏝쏃썾HSFQ͓ʁਵγϯϓϧ͚ͩͲɺ͜ΕͬͯΔͷʁpublic function transaction(Request $request){$amount = $request->input('amount');$user_id = Auth::id();//ӡ༻γεςϜͷߴՃࢉ (API)DataLinkService::add($user_id, $amount);return ['success' => true];}
쎽쏽쏒쏷썗쏳໊썾HSFQRoute::post('/api/transaction', [ApiController::class, 'transaction']);ΘΕͱΔΜ͚ɾɾɾ
쎅63*썾(3&1$('#transaction').submit(function () {$.ajax('/api/transaction','POST',$(this).serialize());})͓͍͓͍͓͍͓͍
JEUSBOTBDUJPO썾HSFQͳΜίϝϯτΞτ͞ΕͱΔͳ͍͔͍͋ʔͼͬ͘Γͨ͠ɻͬͯɾɾɾ{{--ೖֹۚۚೖۚ--}}
BQJUSBOTBDUJPO쎆ੜ썤썽쎕썰ɻ쏰썗쏀쏨쎮쏤썗쏂쎂쏷쎺쎮쏽썮썽썶쎠ୟ써쎕썰ɻpublic function transaction(Request $request){$amount = $request->input('amount');$user_id = Auth::id();//ӡ༻γεςϜͷߴՃࢉ (API)DataLinkService::add($user_id, $amount);return ['success' => true];}Route::post('/api/transaction', [ApiController::class, 'transaction']);
썮썢쎙썪쎅63*ɺ+4쏟쎫쎮쏵썾େެ։썬쎣썽쎕썰ɻ$('#transaction').submit(function () {$.ajax('/api/transaction','POST',$(this).serialize());})
썻쎕쎡썶썺썶썪쎣썷써썾ɺBQJUSBOTBDUJPOϚΠϖʔδͷͲ͔͜GPSN%FW5PPM썾)5.-Ճ1045
ِೖۚ썮์1BSU
ɾɾɾ썰쎢썪썿쎆Կ쎙썙쎡쎕썲쎪ɻ쏐쏃쏒༻쏡쏷쎺쏳쏪쎆ফ썮쎕썮쎞썝ɻڧ썛썽ݴ썝쎁쎠ɺສҰ쎣ڈ쎠쎣썶࣌쎅썶쎘ɺ쏐쏃쏒쏡쏷쎺쏳쏪쎆ɺ࠷ॳ썢쎠-PDBM&OW썾썮썢ಈ썢쎁썛쎟썝쎂݅써썮썽썡썦썿ྑ썛썾썰ɻղઆ
썴썝썛썟쎇944쎆େৎ썢
쎕썘େৎ썺쎔썛ి൪߸{{ $input->phone_1 }}ܞଳి൪߸{{ $input->phone_2 }}උߟ{!! nl2br(e($input->note)) !!}
썴썝썛썟쎇$43'쎆େৎ썢
protected $middlewareGroups = ['web' => [\App\Http\Middleware\EncryptCookies::class,\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,\Illuminate\Session\Middleware\StartSession::class,\Illuminate\View\Middleware\ShareErrorsFromSession::class,//\App\Http\Middleware\VerifyCsrfToken::class,\Illuminate\Routing\Middleware\SubstituteBindings::class,\App\Http\Middleware\RedirectIfHasProblem::class,],
$43'쏘썗쎶썗쏓
$43'쎂썻썛썽쎆ɺ썪썸쎠쎅هࣄ썾࠷େݶט쎖ࡅ썛썽આ໌썮썽썡쎡쎕썰쎅썾ɺ썫Ұಡ썦썷썬썛ɻIUUQT[FOOEFWBEBSUJDMFTFFDFFEDC
-BSBWFM썾쎆ɺಛఆ63-쎅쎖$43'쏋쎱쏍쎹쎩֎썲쎕썰ɻຊ݅ݩ쏗쏉쏁쏃쏐쏪썾༻썬쎣썽썛썶쏟쏶썗쏪쏹썗쎹쎂쎆썴썝썛썝ؾ쎅ར썛썶ػߏ썣쎁썦ɺશମ썾0/0''썮썢썾썤쎁썢썺썶쎅썾ɺ8FCIPPL쎅߹썾0''쎂썮썶쎙쎅썿ࢥ쎦쎣쎕썰ɻ쎬쏥썣ɻ썶썷ɺԾ쎂ಛఆ63-쎅쎖쎆썱썲쎢썿썮썽쎙ɺຊ쎂$43'쏋쎱쏍쎹쎩֎썰Ҏ֎쎅ํ๏썣쎁썛썢ɺ֎썮썽쎙҆શੑ썣֬อ썾썤쎢쎅썢쎀썝썢쎆ɺ쎟썦ۛຯ썮쎕썮쎞썝ɻɿ
࣮ྫ쏫̋쏍쏡쏃쎹쏶쏂쏍쏒쎵썗쏓ใྲྀग़ࣄ݅쎹쏶쏂쏍쏒쎵썗쏓ܾࡁ쏡쏳쏍쏒쏟쎳썗쏪쎩ఏڙ썰쎢ಉࣾ쎅쏁쏃쏐쏪썣ɺ쎿썗쏚쎏쎅ෆਖ਼쏷쎺쎮쏽ɺ42-쎮쏽쏂쎱쎹쏁쏱쏽ɺ쏚쏍쎹쏓쎬༷ʑ쎁߈ܸ쎩ड써ɺ쎹쏶쏂쏍쏒쎵썗쏓ใ࠷େສ݅썣ྲྀग़썮썶Մೳੑɻ
ࢁా썬쎪 Ծʮ쎁쎪썢쎹쏳쎮쎬쏽쏒ۚ༥ி썢쎠ౖ쎠쎣썶쎠썮썦ɺɹ৭ʑվमґཔདྷ썴썝썾썰ʯʮɾɾɾݏ썾썰ʯ
ແ쎆࠷େ쎅ࡑূ݊ձࣾ썿썛썝쏅쏽쏁쏐쎭쏠쎁ۀք쎂썬썟ɺ썪쎪쎁ྼѱ쎁쏁쏃쏐쏪썣쎕썢쎡௨썺썽썛쎕썰ɻ쏅쎷쏯쏴쏐쎭쎂썻썛썽ແ썰썥쎢։ൃձࣾɻʑ쎅੬ऑੑ쎂ؾ썼썤쎙썮쎁썛ൃऀɻ쎠쎁썢썺썶썾쎆ࡁ쎕쎁썛쎅썣ɺ쏁쏃쏐쏪ʢ쎬쏡쏴쎻썗쏁쏱쏽ʣ썾썰ɻ
࠷ޙʹࣗݾհגࣜձࣾ"%දऔకେࡕࡏॅ1)1FSྺ͘Β͍!BEKQ