585 lines
54 KiB
Plaintext
585 lines
54 KiB
Plaintext
From: <Saved by Blink>
|
||
Snapshot-Content-Location: https://docs.google.com/document/u/0/d/1XWr9JrV4BaVyKzFuXzz2geNiib_SJd5iTNaVsfb599A/mobilebasic?hl=th-TH&pli=1
|
||
Subject: =?utf-8?Q?LCBP3-DMS=20Frontend=20Documentation=20(=E0=B8=89=E0=B8=9A=E0?=
|
||
=?utf-8?Q?=B8=B1=E0=B8=9A=E0=B8=AA=E0=B8=A1=E0=B8=9A=E0=B8=B9=E0=B8=A3=E0?=
|
||
=?utf-8?Q?=B8=93=E0=B9=8C)?=
|
||
Date: Thu, 16 Oct 2025 23:11:12 +0700
|
||
MIME-Version: 1.0
|
||
Content-Type: multipart/related;
|
||
type="text/html";
|
||
boundary="----MultipartBoundary--csF0EXC0RJ3vOG6iJZx4sbJHPtjAmchlkrKXyomDzE----"
|
||
|
||
|
||
------MultipartBoundary--csF0EXC0RJ3vOG6iJZx4sbJHPtjAmchlkrKXyomDzE----
|
||
Content-Type: text/html
|
||
Content-ID: <frame-1C41C5125892804C8FB745ED459184D9@mhtml.blink>
|
||
Content-Transfer-Encoding: binary
|
||
Content-Location: https://docs.google.com/document/u/0/d/1XWr9JrV4BaVyKzFuXzz2geNiib_SJd5iTNaVsfb599A/mobilebasic?hl=th-TH&pli=1
|
||
|
||
<!DOCTYPE html><html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><link rel="stylesheet" type="text/css" href="cid:css-bd8b2cc7-75cc-46b8-a328-efe9163c4ba6@mhtml.blink" /><link rel="stylesheet" type="text/css" href="cid:css-9de096d4-9a52-4c93-8eaf-1d5aa6aa425a@mhtml.blink" /><link rel="stylesheet" type="text/css" href="cid:css-8579d4bc-81a4-446d-b2aa-5e3d220689ab@mhtml.blink" /><title>LCBP3-DMS Frontend Documentation (ฉบับสมบูรณ์)</title><link rel="shortcut icon" href="https://ssl.gstatic.com/docs/documents/images/kix-favicon-2023q4.ico"><meta property="og:title" content="LCBP3-DMS Frontend Documentation (ฉบับสมบูรณ์)"><meta property="og:type" content="article"><meta property="og:site_name" content="Google Docs"><meta property="og:url" content="https://docs.google.com/document/u/0/d/1XWr9JrV4BaVyKzFuXzz2geNiib_SJd5iTNaVsfb599A/mobilebasic?hl=th-TH&pli=1&usp=embed_facebook"><meta property="og:description" content="LCBP3-DMS: Frontend Documentation (ฉบับสมบูรณ์) เอกสารนี้รวบรวมรายละเอียดทั้งหมดของส่วน Frontend สำหรับระบบ LCBP3 Document Management System ซึ่งพัฒนาด้วย Next.js (App Router), TypeScript, Tailwind CSS, และ shadcn/ui 1. ข้อกำหนดเบื้องต้น (Prerequisites) ก่อนเริ่มการติดตั้งและพัฒนา คุณจะต้องมีเครื..."><meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,minimum-scale=1,user-scalable=0"><meta name="referrer" content="strict-origin-when-cross-origin"></head><body><div><div class="docs-ml-promotion docs-ml-promotion-off-screen" role="alertdialog" aria-labelledby="docs-ml-promotion-aria-label" aria-hidden="true"><div id="docs-ml-promotion-aria-label" style="display:none;">Alert message displayed.</div><div class="docs-ml-promotion-content"><div class="docs-ml-promotion-header"><span class="docs-ml-promotion-app-icon-container" aria-hidden="true"><div class="docs-ml-icon docs-ml-promotion-app-icon"><svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" x="0" y="0" viewBox="0 0 36 36"><path fill="none" d="M0 0h36v36H0z"></path><path fill="#fff" d="M10.9 18.4h14.2V21H10.9zM10.9 22.9h10.5v2.6H10.9z"></path><path fill="#1967d2" d="M21.8 9.8l4.5.8 3.7-.8-8.2-8.3-1.2 3.9z"></path><path fill="#fff" d="M10.9 13.9h14.2v2.6H10.9z"></path><path d="M21.8 9.8V1.5H8.2C7 1.5 6 2.5 6 3.8v28.5c0 1.2 1 2.2 2.2 2.2h19.5c1.2 0 2.2-1 2.2-2.2V9.8h-8.1zM21 25.1h-9.8v-1.9H21v1.9zm3.8-4.5H11.2v-1.9h13.5v1.9zm0-4.5H11.2v-1.9h13.5v1.9z" fill="#4285f4"></path></svg></div></span><span class="docs-ml-promotion-text"><div class="docs-ml-promotion-text-heading">Edit with the Docs app</div><div class="docs-ml-promotion-text-body">Make tweaks, leave comments, and share with others to edit at the same time.</div></span></div><div class="docs-ml-promotion-action-row"><span class="docs-ml-promotion-action-container"><span class="docs-ml-promotion-action-button-wrapper docs-ml-promotion-no-button-wrapper" role="button" tabindex="0"><span class="docs-ml-promotion-action-button docs-ml-promotion-no-button">NO THANKS</span></span></span><span class="docs-ml-promotion-action-container"><span class="docs-ml-promotion-action-button-wrapper docs-ml-promotion-yes-button-wrapper" role="button" tabindex="0"><span class="docs-ml-promotion-action-button docs-ml-promotion-yes-button">USE THE APP</span></span></span></div></div></div></div><div id="docs-ml-header-id" class="docs-ml-header"><span class="docs-ml-header-item docs-ml-header-drive-link"><div id="docs-ml-header-drive-link-aria-label" style="display:none;">Go to Drive</div><a href="https://drive.google.com/u/0?usp=docs_web" aria-labelledby="docs-ml-header-drive-link-aria-label" role="button"><div class="docs-ml-header-icon-container"><div class="docs-ml-icon docs-ml-header-icon docs-ml-arrow-back-dir"><div class="docs-ml-img-container docs-ml-img docs-ml-arrow-back-icon"></div></div></div></a></span><span class="docs-ml-header-item docs-ml-header-document-title"><div class="docs-ml-header-document-title-text">LCBP3-DMS Frontend Documentation (ฉบับสมบูรณ์)</div></span><div id="docs-ml-header-edit-button-aria-label" style="display:none;">Edit</div><span class="docs-ml-header-item docs-ml-header-edit-button" aria-labelledby="docs-ml-header-edit-button-aria-label" role="button" tabindex="0"><div class="docs-ml-header-icon-container"><div class="docs-ml-icon docs-ml-header-icon"><div class="docs-ml-img-container docs-ml-img docs-ml-edit-icon"></div></div></div></span></div><div class="app-container"><div class="doc-container"><div class="doc"><div class="doc-content" style="background-color:#ffffff;max-width:468pt;padding:72pt 72pt 72pt 72pt"><h1 style="padding-top:12pt;margin:0;color:#000000;font-weight:700;padding-left:0;font-size:24pt;padding-bottom:12pt;font-family:"Arial";line-height:1.0;text-align:left;padding-right:0"><span style="color:#000000;font-weight:700;text-decoration:none;vertical-align:baseline;font-size:24pt;font-family:"Arial";font-style:normal">LCBP3-DMS: Frontend Documentation (ฉบับสมบูรณ์)</span></h1><p style="padding-top:0pt;margin:0;color:#000000;padding-left:0;font-size:11pt;padding-bottom:11.2pt;font-family:"Arial";line-height:1.0;text-align:left;padding-right:0"><span style="color:#000000;font-weight:400;text-decoration:none;vertical-align:baseline;font-size:11pt;font-family:"Arial";font-style:normal">เอกสารนี้รวบรวมรายละเอียดทั้งหมดของส่วน Frontend สำหรับระบบ LCBP3 Document Management System ซึ่งพัฒนาด้วย Next.js (App Router), TypeScript, Tailwind CSS, และ shadcn/ui</span></p><h2 style="padding-top:0pt;margin:0;color:#000000;font-weight:700;padding-left:0;font-size:18pt;padding-bottom:11.2pt;font-family:"Arial";line-height:1.0;text-align:left;padding-right:0"><span style="color:#000000;font-weight:700;text-decoration:none;vertical-align:baseline;font-size:18pt;font-family:"Arial";font-style:normal">1. ข้อกำหนดเบื้องต้น (Prerequisites)</span></h2><p style="padding:0;margin:0;color:#000000;font-size:11pt;font-family:"Arial";line-height:1.0;text-align:left"><span style="color:#000000;font-weight:400;text-decoration:none;vertical-align:baseline;font-size:11pt;font-family:"Arial";font-style:normal">ก่อนเริ่มการติดตั้งและพัฒนา คุณจะต้องมีเครื่องมือต่อไปนี้ติดตั้งบนเครื่องคอมพิวเตอร์ของคุณ:</span></p><ul class="lst-kix_list_1-0 start" style="padding:0;margin:0"><li style="padding:0;color:#000000;font-size:11pt;line-height:1.0;margin-right:0;margin-left:30pt;font-family:"Arial";margin-top:0;margin-bottom:0;text-align:left"><span style="font-weight:700">Node.js:</span><span style="color:#000000;font-weight:400;text-decoration:none;vertical-align:baseline;font-size:11pt;font-family:"Arial";font-style:normal"> เวอร์ชัน 18.x หรือสูงกว่า</span></li><li style="padding:0;color:#000000;font-size:11pt;line-height:1.0;margin-right:0;margin-left:30pt;font-family:"Arial";margin-top:0;margin-bottom:0;text-align:left"><span style="font-weight:700">NPM</span><span> หรือ </span><span style="font-weight:700">Yarn:</span><span style="color:#000000;font-weight:400;text-decoration:none;vertical-align:baseline;font-size:11pt;font-family:"Arial";font-style:normal"> ตัวจัดการ Package (มาพร้อมกับ Node.js)</span></li><li style="padding:0;color:#000000;font-size:11pt;line-height:1.0;margin-right:0;margin-left:30pt;font-family:"Arial";margin-top:0;margin-bottom:0;text-align:left"><span style="font-weight:700">Git:</span><span style="color:#000000;font-weight:400;text-decoration:none;vertical-align:baseline;font-size:11pt;font-family:"Arial";font-style:normal"> สำหรับการ Clone โปรเจกต์จาก Gitea</span></li></ul><h2 style="padding-top:11.2pt;margin:0;color:#000000;font-weight:700;padding-left:0;font-size:18pt;padding-bottom:11.2pt;font-family:"Arial";line-height:1.0;text-align:left;padding-right:0"><span style="color:#000000;font-weight:700;text-decoration:none;vertical-align:baseline;font-size:18pt;font-family:"Arial";font-style:normal">2. ขั้นตอนการติดตั้งและเริ่มใช้งาน (Installation & Setup)</span></h2><ol class="lst-kix_list_2-0 start" start="1" style="padding:0;margin:0"><li style="padding:0;color:#000000;font-size:11pt;line-height:1.0;margin-right:0;margin-left:30pt;font-family:"Arial";margin-top:0;margin-bottom:0;text-align:left"><span style="color:#000000;font-weight:700;text-decoration:none;vertical-align:baseline;font-size:11pt;font-family:"Arial";font-style:normal">Clone โปรเจกต์:</span></li></ol><ul class="lst-kix_list_3-1 start" style="padding:0;margin:0"><li style="padding:0;color:#000000;font-size:11pt;line-height:1.0;margin-right:0;margin-left:60pt;font-family:"Arial";margin-top:0;margin-bottom:0;text-align:left"><span style="color:#000000;font-weight:400;text-decoration:none;vertical-align:baseline;font-size:11pt;font-family:"Arial";font-style:normal">คัดลอกโปรเจกต์จาก Gitea repository ของคุณมาไว้ที่เครื่อง</span></li></ul><p style="margin-left:30pt;padding:0;color:#000000;font-size:11pt;font-family:"Arial";line-height:1.0;margin-top:0;margin-bottom:0;text-align:left;margin-right:0"><span><!-- end list --></span><span style="color:#000000;font-weight:400;text-decoration:none;vertical-align:baseline;font-size:11pt;font-family:"Courier";font-style:normal">git clone [http://git.np-dms.work/your-repo/frontend-np-dms.git](http://git.np-dms.work/your-repo/frontend-np-dms.git)<br>cd frontend-np-dms<br></span></p><ol class="lst-kix_list_2-0" start="2" style="padding:0;margin:0"><li style="padding:0;color:#000000;font-size:11pt;line-height:1.0;margin-right:0;margin-left:30pt;font-family:"Arial";margin-top:0;margin-bottom:0;text-align:left"><span style="color:#000000;font-weight:700;text-decoration:none;vertical-align:baseline;font-size:11pt;font-family:"Arial";font-style:normal">ติดตั้ง Dependencies:</span></li></ol><ul class="lst-kix_list_4-1 start" style="padding:0;margin:0"><li style="padding:0;color:#000000;font-size:11pt;line-height:1.0;margin-right:0;margin-left:60pt;font-family:"Arial";margin-top:0;margin-bottom:0;text-align:left"><span style="color:#000000;font-weight:400;text-decoration:none;vertical-align:baseline;font-size:11pt;font-family:"Arial";font-style:normal">ใช้ npm เพื่อติดตั้ง Library ทั้งหมดที่โปรเจกต์ต้องการ</span></li></ul><p style="margin-left:30pt;padding:0;color:#000000;font-size:11pt;font-family:"Arial";line-height:1.0;margin-top:0;margin-bottom:0;text-align:left;margin-right:0"><span><!-- end list --></span><span style="color:#000000;font-weight:400;text-decoration:none;vertical-align:baseline;font-size:11pt;font-family:"Courier";font-style:normal">npm install<br></span></p><ol class="lst-kix_list_2-0" start="3" style="padding:0;margin:0"><li style="padding:0;color:#000000;font-size:11pt;line-height:1.0;margin-right:0;margin-left:30pt;font-family:"Arial";margin-top:0;margin-bottom:0;text-align:left"><span style="color:#000000;font-weight:700;text-decoration:none;vertical-align:baseline;font-size:11pt;font-family:"Arial";font-style:normal">ตั้งค่า Environment File:</span></li></ol><ul class="lst-kix_list_5-1 start" style="padding:0;margin:0"><li style="padding:0;color:#000000;font-size:11pt;line-height:1.0;margin-right:0;margin-left:60pt;font-family:"Arial";margin-top:0;margin-bottom:0;text-align:left"><span style="color:#000000;font-weight:400;text-decoration:none;vertical-align:baseline;font-size:11pt;font-family:"Arial";font-style:normal">สร้างไฟล์ใหม่ชื่อ .env.local ที่รากของโปรเจกต์</span></li><li style="padding:0;color:#000000;font-size:11pt;line-height:1.0;margin-right:0;margin-left:60pt;font-family:"Arial";margin-top:0;margin-bottom:0;text-align:left"><span style="color:#000000;font-weight:400;text-decoration:none;vertical-align:baseline;font-size:11pt;font-family:"Arial";font-style:normal">กำหนด URL ของ Backend API ที่จะให้ Frontend เชื่อมต่อ</span></li></ul><p style="margin-left:30pt;padding:0;color:#000000;font-size:11pt;font-family:"Arial";line-height:1.0;margin-top:0;margin-bottom:0;text-align:left;margin-right:0"><span style="font-weight:700">ไฟล์ .env.local:</span><span style="color:#000000;font-weight:400;text-decoration:none;vertical-align:baseline;font-size:11pt;font-family:"Courier";font-style:normal"># URL ของ NestJS Backend (ที่รันผ่าน Docker)<br>NEXT_PUBLIC_API_BASE_URL=http://localhost:3001<br></span></p><ol class="lst-kix_list_2-0" start="4" style="padding:0;margin:0"><li style="padding:0;color:#000000;font-size:11pt;line-height:1.0;margin-right:0;margin-left:30pt;font-family:"Arial";margin-top:0;margin-bottom:0;text-align:left"><span style="color:#000000;font-weight:700;text-decoration:none;vertical-align:baseline;font-size:11pt;font-family:"Arial";font-style:normal">รันแอปพลิเคชัน (Development Mode):</span></li></ol><ul class="lst-kix_list_6-1 start" style="padding:0;margin:0"><li style="padding:0;color:#000000;font-size:11pt;line-height:1.0;margin-right:0;margin-left:60pt;font-family:"Arial";margin-top:0;margin-bottom:0;text-align:left"><span style="color:#000000;font-weight:400;text-decoration:none;vertical-align:baseline;font-size:11pt;font-family:"Arial";font-style:normal">ใช้คำสั่งนี้เพื่อเริ่ม Frontend server ในโหมดพัฒนา</span></li></ul><p style="margin-left:30pt;padding:0;color:#000000;font-size:11pt;font-family:"Arial";line-height:1.0;margin-top:0;margin-bottom:0;text-align:left;margin-right:0"><span><!-- end list --></span><span style="color:#000000;font-weight:400;text-decoration:none;vertical-align:baseline;font-size:11pt;font-family:"Courier";font-style:normal">npm run dev<br></span></p><ol class="lst-kix_list_2-0" start="5" style="padding:0;margin:0"><li style="padding:0;color:#000000;font-size:11pt;line-height:1.0;margin-right:0;margin-left:30pt;font-family:"Arial";margin-top:0;margin-bottom:0;text-align:left"><span style="color:#000000;font-weight:700;text-decoration:none;vertical-align:baseline;font-size:11pt;font-family:"Arial";font-style:normal">ตรวจสอบการทำงาน:</span></li></ol><ul class="lst-kix_list_7-1 start" style="padding:0;margin:0"><li style="padding:0;color:#000000;font-size:11pt;line-height:1.0;margin-right:0;margin-left:60pt;font-family:"Arial";margin-top:0;margin-bottom:0;text-align:left"><span style="color:#000000;font-weight:400;text-decoration:none;vertical-align:baseline;font-size:11pt;font-family:"Arial";font-style:normal">เปิดเว็บเบราว์เซอร์แล้วไปที่ http://localhost:3000</span></li><li style="padding:0;color:#000000;font-size:11pt;line-height:1.0;margin-right:0;margin-left:60pt;font-family:"Arial";margin-top:0;margin-bottom:0;text-align:left"><span style="color:#000000;font-weight:400;text-decoration:none;vertical-align:baseline;font-size:11pt;font-family:"Arial";font-style:normal">คุณควรจะเห็นหน้า Landing Page ของระบบ</span></li></ul><h2 style="padding-top:11.2pt;margin:0;color:#000000;font-weight:700;padding-left:0;font-size:18pt;padding-bottom:11.2pt;font-family:"Arial";line-height:1.0;text-align:left;padding-right:0"><span style="color:#000000;font-weight:700;text-decoration:none;vertical-align:baseline;font-size:18pt;font-family:"Arial";font-style:normal">3. สถาปัตยกรรมและโครงสร้างโปรเจกต์</span></h2><p style="padding:0;margin:0;color:#000000;font-size:11pt;font-family:"Arial";line-height:1.0;text-align:left"><span>Frontend นี้ใช้ </span><span style="font-weight:700">App Router</span><span style="color:#000000;font-weight:400;text-decoration:none;vertical-align:baseline;font-size:11pt;font-family:"Arial";font-style:normal"> ของ Next.js ซึ่งเป็นสถาปัตยกรรมสมัยใหม่ที่เน้นการทำ Server-Side Rendering (SSR) และ Server Components เพื่อประสิทธิภาพสูงสุด</span></p><ul class="lst-kix_list_8-0 start" style="padding:0;margin:0"><li style="padding:0;color:#000000;font-size:11pt;line-height:1.0;margin-right:0;margin-left:30pt;font-family:"Arial";margin-top:0;margin-bottom:0;text-align:left"><span style="font-weight:700">Framework:</span><span style="color:#000000;font-weight:400;text-decoration:none;vertical-align:baseline;font-size:11pt;font-family:"Arial";font-style:normal"> Next.js 14+ (App Router)</span></li><li style="padding:0;color:#000000;font-size:11pt;line-height:1.0;margin-right:0;margin-left:30pt;font-family:"Arial";margin-top:0;margin-bottom:0;text-align:left"><span style="font-weight:700">ภาษา:</span><span style="color:#000000;font-weight:400;text-decoration:none;vertical-align:baseline;font-size:11pt;font-family:"Arial";font-style:normal"> TypeScript</span></li><li style="padding:0;color:#000000;font-size:11pt;line-height:1.0;margin-right:0;margin-left:30pt;font-family:"Arial";margin-top:0;margin-bottom:0;text-align:left"><span style="font-weight:700">Styling:</span><span style="color:#000000;font-weight:400;text-decoration:none;vertical-align:baseline;font-size:11pt;font-family:"Arial";font-style:normal"> Tailwind CSS</span></li><li style="padding:0;color:#000000;font-size:11pt;line-height:1.0;margin-right:0;margin-left:30pt;font-family:"Arial";margin-top:0;margin-bottom:0;text-align:left"><span style="font-weight:700">Component Library:</span><span style="color:#000000;font-weight:400;text-decoration:none;vertical-align:baseline;font-size:11pt;font-family:"Arial";font-style:normal"> shadcn/ui (ไม่ใช่ Library แต่เป็นชุดของ Reusable Components ที่สามารถปรับแต่งได้)</span></li><li style="padding:0;color:#000000;font-size:11pt;line-height:1.0;margin-right:0;margin-left:30pt;font-family:"Arial";margin-top:0;margin-bottom:0;text-align:left"><span style="font-weight:700">State Management:</span><span style="color:#000000;font-weight:400;text-decoration:none;vertical-align:baseline;font-size:11pt;font-family:"Arial";font-style:normal"> React Context API (สำหรับ Global Authentication State)</span></li><li style="padding:0;color:#000000;font-size:11pt;line-height:1.0;margin-right:0;margin-left:30pt;font-family:"Arial";margin-top:0;margin-bottom:0;text-align:left"><span style="font-weight:700">Data Fetching:</span><span style="color:#000000;font-weight:400;text-decoration:none;vertical-align:baseline;font-size:11pt;font-family:"Arial";font-style:normal"> ใช้ API Routes ของ Next.js เป็น Proxy เพื่อสื่อสารกับ Backend อย่างปลอดภัย</span></li></ul><p style="padding:0;margin:0;color:#000000;font-size:11pt;font-family:"Arial";line-height:1.0;text-align:left"><span style="color:#000000;font-weight:700;text-decoration:none;vertical-align:baseline;font-size:11pt;font-family:"Arial";font-style:normal">โครงสร้างโฟลเดอร์หลัก:</span></p><p style="padding:0;margin:0;color:#000000;font-size:11pt;font-family:"Arial";line-height:1.0;text-align:left"><span style="color:#000000;font-weight:400;text-decoration:none;vertical-align:baseline;font-size:11pt;font-family:"Courier";font-style:normal">frontend-np-dms/<br>├── app/<br>│ ├── (auth)/ # Group สำหรับหน้าหลัง Login (มี Layout พร้อม Navbar/Sidebar)<br>│ │ ├── admin/<br>│ │ ├── correspondences/<br>│ │ ├── dashboard/<br>│ │ └── layout.tsx<br>│ ├── (public)/ # Group สำหรับหน้าสาธารณะ (มี Layout แบบว่าง)<br>│ │ ├── login/<br>│ │ └── layout.tsx<br>│ ├── api/ # API Routes ที่ทำหน้าที่เป็น Proxy ไปยัง Backend<br>│ ├── globals.css<br>│ └── layout.tsx # Root Layout (ที่ห่อหุ้มด้วย AuthProvider)<br>├── components/ # ที่เก็บ UI Components ที่สร้างด้วย shadcn และ Components ที่สร้างขึ้นเอง<br>│ ├── dashboard/<br>│ ├── layout/<br>│ ├── rfa/<br>│ └── ui/<br>├── contexts/ # ที่เก็บ React Context สำหรับ Global State<br>│ └── AuthContext.tsx<br>├── lib/ # ที่เก็บฟังก์ชันเสริม (เช่น utils.ts จาก shadcn)<br>├── public/ # ที่เก็บไฟล์สาธารณะ เช่น รูปภาพ, favicon<br>├── types/ # (แนะนำ) ที่เก็บ TypeScript type definitions ที่ใช้ร่วมกัน<br>├── middleware.ts # ไฟล์สำคัญสำหรับป้องกัน Route (Route Protection)<br>└── package.json<br></span></p></div></div></div></div></body></html>
|
||
------MultipartBoundary--csF0EXC0RJ3vOG6iJZx4sbJHPtjAmchlkrKXyomDzE----
|
||
Content-Type: text/css
|
||
Content-Transfer-Encoding: binary
|
||
Content-Location: https://themes.googleusercontent.com/fonts/css?kit=kbffV7V9BIH3Ot2AQ2LQRA
|
||
|
||
@charset "utf-8";
|
||
|
||
@font-face { font-family: Courier; font-style: normal; font-weight: 400; src: url("https://fonts.gstatic.com/l/font?kit=i7dKIFtyYSaNG9A_JrmedWxeSFI&skey=415f62b718dd1a36&v=v12") format("woff2"); unicode-range: U+0-FF, U+131, U+152-153, U+2BB-2BC, U+2C6, U+2DA, U+2DC, U+304, U+308, U+329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
|
||
------MultipartBoundary--csF0EXC0RJ3vOG6iJZx4sbJHPtjAmchlkrKXyomDzE----
|
||
Content-Type: text/css
|
||
Content-Transfer-Encoding: binary
|
||
Content-Location: cid:css-8579d4bc-81a4-446d-b2aa-5e3d220689ab@mhtml.blink
|
||
|
||
@charset "utf-8";
|
||
|
||
@import url("https://themes.googleusercontent.com/fonts/css?kit=kbffV7V9BIH3Ot2AQ2LQRA");
|
||
|
||
ol.lst-kix_list_7-0 { list-style-type: none; }
|
||
|
||
ul.lst-kix_list_1-0 { list-style-type: none; }
|
||
|
||
ol.lst-kix_list_3-0 { list-style-type: none; }
|
||
|
||
.lst-kix_list_3-0 > li::before { content: "" counter(lst-ctn-kix_list_3-0) ". "; }
|
||
|
||
ul.lst-kix_list_5-7 { list-style-type: none; }
|
||
|
||
ul.lst-kix_list_5-8 { list-style-type: none; }
|
||
|
||
.lst-kix_list_3-1 > li::before { content: "○ "; }
|
||
|
||
.lst-kix_list_3-2 > li::before { content: "■ "; }
|
||
|
||
ul.lst-kix_list_5-5 { list-style-type: none; }
|
||
|
||
ul.lst-kix_list_5-6 { list-style-type: none; }
|
||
|
||
.lst-kix_list_8-1 > li::before { content: "○ "; }
|
||
|
||
.lst-kix_list_4-0 > li { counter-increment: lst-ctn-kix_list_4-0 1; }
|
||
|
||
.lst-kix_list_8-2 > li::before { content: "■ "; }
|
||
|
||
.lst-kix_list_5-0 > li { counter-increment: lst-ctn-kix_list_5-0 1; }
|
||
|
||
.lst-kix_list_6-0 > li { counter-increment: lst-ctn-kix_list_6-0 1; }
|
||
|
||
.lst-kix_list_7-0 > li { counter-increment: lst-ctn-kix_list_7-0 1; }
|
||
|
||
ul.lst-kix_list_1-3 { list-style-type: none; }
|
||
|
||
.lst-kix_list_3-5 > li::before { content: "■ "; }
|
||
|
||
ul.lst-kix_list_1-4 { list-style-type: none; }
|
||
|
||
ul.lst-kix_list_1-1 { list-style-type: none; }
|
||
|
||
.lst-kix_list_3-4 > li::before { content: "■ "; }
|
||
|
||
ul.lst-kix_list_1-2 { list-style-type: none; }
|
||
|
||
ul.lst-kix_list_5-3 { list-style-type: none; }
|
||
|
||
ul.lst-kix_list_1-7 { list-style-type: none; }
|
||
|
||
.lst-kix_list_3-3 > li::before { content: "■ "; }
|
||
|
||
ul.lst-kix_list_5-4 { list-style-type: none; }
|
||
|
||
ul.lst-kix_list_1-8 { list-style-type: none; }
|
||
|
||
ul.lst-kix_list_5-1 { list-style-type: none; }
|
||
|
||
.lst-kix_list_8-0 > li::before { content: "● "; }
|
||
|
||
ul.lst-kix_list_1-5 { list-style-type: none; }
|
||
|
||
ul.lst-kix_list_5-2 { list-style-type: none; }
|
||
|
||
ul.lst-kix_list_1-6 { list-style-type: none; }
|
||
|
||
.lst-kix_list_8-7 > li::before { content: "■ "; }
|
||
|
||
.lst-kix_list_3-8 > li::before { content: "■ "; }
|
||
|
||
.lst-kix_list_8-5 > li::before { content: "■ "; }
|
||
|
||
.lst-kix_list_8-6 > li::before { content: "■ "; }
|
||
|
||
.lst-kix_list_2-0 > li { counter-increment: lst-ctn-kix_list_2-0 1; }
|
||
|
||
.lst-kix_list_8-3 > li::before { content: "■ "; }
|
||
|
||
.lst-kix_list_3-6 > li::before { content: "■ "; }
|
||
|
||
.lst-kix_list_3-7 > li::before { content: "■ "; }
|
||
|
||
.lst-kix_list_8-4 > li::before { content: "■ "; }
|
||
|
||
ol.lst-kix_list_5-0.start { counter-reset: lst-ctn-kix_list_5-0 0; }
|
||
|
||
.lst-kix_list_8-8 > li::before { content: "■ "; }
|
||
|
||
.lst-kix_list_5-0 > li::before { content: "" counter(lst-ctn-kix_list_5-0) ". "; }
|
||
|
||
ol.lst-kix_list_6-0 { list-style-type: none; }
|
||
|
||
ol.lst-kix_list_2-0 { list-style-type: none; }
|
||
|
||
.lst-kix_list_4-8 > li::before { content: "■ "; }
|
||
|
||
.lst-kix_list_5-3 > li::before { content: "■ "; }
|
||
|
||
.lst-kix_list_4-7 > li::before { content: "■ "; }
|
||
|
||
.lst-kix_list_5-2 > li::before { content: "■ "; }
|
||
|
||
.lst-kix_list_5-1 > li::before { content: "○ "; }
|
||
|
||
ul.lst-kix_list_4-8 { list-style-type: none; }
|
||
|
||
.lst-kix_list_5-7 > li::before { content: "■ "; }
|
||
|
||
ul.lst-kix_list_8-4 { list-style-type: none; }
|
||
|
||
ul.lst-kix_list_8-5 { list-style-type: none; }
|
||
|
||
ul.lst-kix_list_4-6 { list-style-type: none; }
|
||
|
||
.lst-kix_list_5-6 > li::before { content: "■ "; }
|
||
|
||
.lst-kix_list_5-8 > li::before { content: "■ "; }
|
||
|
||
ul.lst-kix_list_8-2 { list-style-type: none; }
|
||
|
||
ul.lst-kix_list_4-7 { list-style-type: none; }
|
||
|
||
ul.lst-kix_list_8-3 { list-style-type: none; }
|
||
|
||
ul.lst-kix_list_8-8 { list-style-type: none; }
|
||
|
||
ul.lst-kix_list_8-6 { list-style-type: none; }
|
||
|
||
ul.lst-kix_list_8-7 { list-style-type: none; }
|
||
|
||
ul.lst-kix_list_4-1 { list-style-type: none; }
|
||
|
||
.lst-kix_list_5-4 > li::before { content: "■ "; }
|
||
|
||
ul.lst-kix_list_4-4 { list-style-type: none; }
|
||
|
||
.lst-kix_list_5-5 > li::before { content: "■ "; }
|
||
|
||
ul.lst-kix_list_8-0 { list-style-type: none; }
|
||
|
||
ul.lst-kix_list_4-5 { list-style-type: none; }
|
||
|
||
ul.lst-kix_list_8-1 { list-style-type: none; }
|
||
|
||
ul.lst-kix_list_4-2 { list-style-type: none; }
|
||
|
||
ul.lst-kix_list_4-3 { list-style-type: none; }
|
||
|
||
.lst-kix_list_6-1 > li::before { content: "○ "; }
|
||
|
||
.lst-kix_list_6-3 > li::before { content: "■ "; }
|
||
|
||
.lst-kix_list_6-0 > li::before { content: "" counter(lst-ctn-kix_list_6-0) ". "; }
|
||
|
||
.lst-kix_list_6-4 > li::before { content: "■ "; }
|
||
|
||
.lst-kix_list_3-0 > li { counter-increment: lst-ctn-kix_list_3-0 1; }
|
||
|
||
ol.lst-kix_list_4-0.start { counter-reset: lst-ctn-kix_list_4-0 0; }
|
||
|
||
.lst-kix_list_6-2 > li::before { content: "■ "; }
|
||
|
||
.lst-kix_list_6-8 > li::before { content: "■ "; }
|
||
|
||
.lst-kix_list_6-5 > li::before { content: "■ "; }
|
||
|
||
.lst-kix_list_6-7 > li::before { content: "■ "; }
|
||
|
||
.lst-kix_list_7-0 > li::before { content: "" counter(lst-ctn-kix_list_7-0) ". "; }
|
||
|
||
.lst-kix_list_6-6 > li::before { content: "■ "; }
|
||
|
||
ol.lst-kix_list_5-0 { list-style-type: none; }
|
||
|
||
.lst-kix_list_2-6 > li::before { content: "■ "; }
|
||
|
||
.lst-kix_list_2-7 > li::before { content: "■ "; }
|
||
|
||
.lst-kix_list_7-4 > li::before { content: "■ "; }
|
||
|
||
.lst-kix_list_7-6 > li::before { content: "■ "; }
|
||
|
||
.lst-kix_list_2-4 > li::before { content: "■ "; }
|
||
|
||
.lst-kix_list_2-5 > li::before { content: "■ "; }
|
||
|
||
.lst-kix_list_2-8 > li::before { content: "■ "; }
|
||
|
||
.lst-kix_list_7-1 > li::before { content: "○ "; }
|
||
|
||
.lst-kix_list_7-5 > li::before { content: "■ "; }
|
||
|
||
.lst-kix_list_7-2 > li::before { content: "■ "; }
|
||
|
||
.lst-kix_list_7-3 > li::before { content: "■ "; }
|
||
|
||
ul.lst-kix_list_7-5 { list-style-type: none; }
|
||
|
||
ul.lst-kix_list_7-6 { list-style-type: none; }
|
||
|
||
ul.lst-kix_list_7-3 { list-style-type: none; }
|
||
|
||
ul.lst-kix_list_3-7 { list-style-type: none; }
|
||
|
||
ul.lst-kix_list_7-4 { list-style-type: none; }
|
||
|
||
ul.lst-kix_list_3-8 { list-style-type: none; }
|
||
|
||
ul.lst-kix_list_7-7 { list-style-type: none; }
|
||
|
||
ul.lst-kix_list_7-8 { list-style-type: none; }
|
||
|
||
ol.lst-kix_list_3-0.start { counter-reset: lst-ctn-kix_list_3-0 0; }
|
||
|
||
ul.lst-kix_list_3-1 { list-style-type: none; }
|
||
|
||
ul.lst-kix_list_3-2 { list-style-type: none; }
|
||
|
||
.lst-kix_list_7-8 > li::before { content: "■ "; }
|
||
|
||
ul.lst-kix_list_7-1 { list-style-type: none; }
|
||
|
||
ul.lst-kix_list_3-5 { list-style-type: none; }
|
||
|
||
ul.lst-kix_list_7-2 { list-style-type: none; }
|
||
|
||
ul.lst-kix_list_3-6 { list-style-type: none; }
|
||
|
||
ul.lst-kix_list_3-3 { list-style-type: none; }
|
||
|
||
.lst-kix_list_7-7 > li::before { content: "■ "; }
|
||
|
||
ul.lst-kix_list_3-4 { list-style-type: none; }
|
||
|
||
.lst-kix_list_4-0 > li::before { content: "" counter(lst-ctn-kix_list_4-0) ". "; }
|
||
|
||
.lst-kix_list_4-1 > li::before { content: "○ "; }
|
||
|
||
.lst-kix_list_4-4 > li::before { content: "■ "; }
|
||
|
||
.lst-kix_list_4-3 > li::before { content: "■ "; }
|
||
|
||
.lst-kix_list_4-5 > li::before { content: "■ "; }
|
||
|
||
.lst-kix_list_4-2 > li::before { content: "■ "; }
|
||
|
||
.lst-kix_list_4-6 > li::before { content: "■ "; }
|
||
|
||
ol.lst-kix_list_7-0.start { counter-reset: lst-ctn-kix_list_7-0 0; }
|
||
|
||
ol.lst-kix_list_4-0 { list-style-type: none; }
|
||
|
||
ul.lst-kix_list_6-6 { list-style-type: none; }
|
||
|
||
ul.lst-kix_list_6-7 { list-style-type: none; }
|
||
|
||
ul.lst-kix_list_6-4 { list-style-type: none; }
|
||
|
||
ul.lst-kix_list_2-8 { list-style-type: none; }
|
||
|
||
ul.lst-kix_list_6-5 { list-style-type: none; }
|
||
|
||
ul.lst-kix_list_6-8 { list-style-type: none; }
|
||
|
||
ul.lst-kix_list_2-2 { list-style-type: none; }
|
||
|
||
.lst-kix_list_1-0 > li::before { content: "● "; }
|
||
|
||
ul.lst-kix_list_2-3 { list-style-type: none; }
|
||
|
||
ul.lst-kix_list_2-1 { list-style-type: none; }
|
||
|
||
ul.lst-kix_list_6-2 { list-style-type: none; }
|
||
|
||
ul.lst-kix_list_2-6 { list-style-type: none; }
|
||
|
||
ul.lst-kix_list_6-3 { list-style-type: none; }
|
||
|
||
.lst-kix_list_1-1 > li::before { content: "○ "; }
|
||
|
||
.lst-kix_list_1-2 > li::before { content: "■ "; }
|
||
|
||
ol.lst-kix_list_2-0.start { counter-reset: lst-ctn-kix_list_2-0 0; }
|
||
|
||
ul.lst-kix_list_2-7 { list-style-type: none; }
|
||
|
||
ul.lst-kix_list_2-4 { list-style-type: none; }
|
||
|
||
ul.lst-kix_list_6-1 { list-style-type: none; }
|
||
|
||
ul.lst-kix_list_2-5 { list-style-type: none; }
|
||
|
||
.lst-kix_list_1-3 > li::before { content: "■ "; }
|
||
|
||
.lst-kix_list_1-4 > li::before { content: "■ "; }
|
||
|
||
.lst-kix_list_1-7 > li::before { content: "■ "; }
|
||
|
||
.lst-kix_list_1-5 > li::before { content: "■ "; }
|
||
|
||
.lst-kix_list_1-6 > li::before { content: "■ "; }
|
||
|
||
.lst-kix_list_2-0 > li::before { content: "" counter(lst-ctn-kix_list_2-0) ". "; }
|
||
|
||
.lst-kix_list_2-1 > li::before { content: "○ "; }
|
||
|
||
ol.lst-kix_list_6-0.start { counter-reset: lst-ctn-kix_list_6-0 0; }
|
||
|
||
.lst-kix_list_1-8 > li::before { content: "■ "; }
|
||
|
||
.lst-kix_list_2-2 > li::before { content: "■ "; }
|
||
|
||
.lst-kix_list_2-3 > li::before { content: "■ "; }
|
||
------MultipartBoundary--csF0EXC0RJ3vOG6iJZx4sbJHPtjAmchlkrKXyomDzE----
|
||
Content-Type: image/png
|
||
Content-Transfer-Encoding: binary
|
||
Content-Location: https://ssl.gstatic.com/docs/common/mobileweb_sprite1.png
|
||
|
||
<EFBFBD>PNG
|
||
|
||
|