diff options
Diffstat (limited to 'doc/parts')
-rw-r--r-- | doc/parts/.keep | 0 | ||||
-rw-r--r-- | doc/parts/initialize.svg | 34 | ||||
-rw-r--r-- | doc/parts/on_screen_message.svg | 20 | ||||
-rw-r--r-- | doc/parts/software-stack.png | bin | 0 -> 197208 bytes | |||
-rw-r--r-- | doc/parts/tap_shortcut.svg | 24 |
5 files changed, 78 insertions, 0 deletions
diff --git a/doc/parts/.keep b/doc/parts/.keep new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/doc/parts/.keep diff --git a/doc/parts/initialize.svg b/doc/parts/initialize.svg new file mode 100644 index 0000000..4ebf927 --- /dev/null +++ b/doc/parts/initialize.svg @@ -0,0 +1,34 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="399px" preserveAspectRatio="none" style="width:383px;height:399px;" version="1.1" viewBox="0 0 383 399" width="383px" zoomAndPan="magnify"><defs><filter height="300%" id="f1d1g4haip41mn" width="300%" x="-1" y="-1"><feGaussianBlur result="blurOut" stdDeviation="2.0"/><feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/><feOffset dx="4.0" dy="4.0" in="blurOut2" result="blurOut3"/><feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/></filter></defs><g><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="238" x="73.5" y="22.9951">Application initialization phase</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;" x1="24" x2="24" y1="81.5938" y2="341.7891"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;" x1="176" x2="176" y1="81.5938" y2="341.7891"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;" x1="317" x2="317" y1="81.5938" y2="341.7891"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="27" x="8" y="78.292">App</text><ellipse cx="24.5" cy="49.2969" fill="#FEFECE" filter="url(#f1d1g4haip41mn)" rx="12" ry="12" style="stroke: #A80036; stroke-width: 2.0;"/><line style="stroke: #A80036; stroke-width: 2.0;" x1="12.5" x2="36.5" y1="63.2969" y2="63.2969"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="27" x="8" y="353.7842">App</text><ellipse cx="24.5" cy="373.0859" fill="#FEFECE" filter="url(#f1d1g4haip41mn)" rx="12" ry="12" style="stroke: #A80036; stroke-width: 2.0;"/><line style="stroke: #A80036; stroke-width: 2.0;" x1="12.5" x2="36.5" y1="387.0859" y2="387.0859"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="135" x="106" y="78.292">HomeScreenBinder</text><ellipse cx="176.5" cy="49.2969" fill="#FEFECE" filter="url(#f1d1g4haip41mn)" rx="12" ry="12" style="stroke: #A80036; stroke-width: 2.0;"/><line style="stroke: #A80036; stroke-width: 2.0;" x1="164.5" x2="188.5" y1="63.2969" y2="63.2969"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="135" x="106" y="353.7842">HomeScreenBinder</text><ellipse cx="176.5" cy="373.0859" fill="#FEFECE" filter="url(#f1d1g4haip41mn)" rx="12" ry="12" style="stroke: #A80036; stroke-width: 2.0;"/><line style="stroke: #A80036; stroke-width: 2.0;" x1="164.5" x2="188.5" y1="387.0859" y2="387.0859"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="114" x="257" y="78.292">HomeScreenGUI</text><ellipse cx="317" cy="49.2969" fill="#FEFECE" filter="url(#f1d1g4haip41mn)" rx="12" ry="12" style="stroke: #A80036; stroke-width: 2.0;"/><line style="stroke: #A80036; stroke-width: 2.0;" x1="305" x2="329" y1="63.2969" y2="63.2969"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="114" x="257" y="353.7842">HomeScreenGUI</text><ellipse cx="317" cy="373.0859" fill="#FEFECE" filter="url(#f1d1g4haip41mn)" rx="12" ry="12" style="stroke: #A80036; stroke-width: 2.0;"/><line style="stroke: #A80036; stroke-width: 2.0;" x1="305" x2="329" y1="387.0859" y2="387.0859"/><polygon fill="#A80036" points="164.5,108.5938,174.5,112.5938,164.5,116.5938,168.5,112.5938" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="24.5" x2="170.5" y1="112.5938" y2="112.5938"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="99" x="31.5" y="107.6606">init(port, token)</text><polygon fill="#A80036" points="164.5,137.7266,174.5,141.7266,164.5,145.7266,168.5,141.7266" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="24.5" x2="170.5" y1="141.7266" y2="141.7266"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="71" x="31.5" y="136.7935">subscribe()</text><polygon fill="#FBFB77" filter="url(#f1d1g4haip41mn)" points="54,154.8594,54,194.8594,295,194.8594,295,164.8594,285,154.8594,54,154.8594" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="285" x2="285" y1="154.8594" y2="164.8594"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="295" x2="285" y1="164.8594" y2="164.8594"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="220" x="60" y="171.9263">Appが受信したいイベントを登録する</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="94" x="60" y="187.0591">・tap_shortcut</text><polygon fill="#A80036" points="164.5,221.125,174.5,225.125,164.5,229.125,168.5,225.125" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="24.5" x2="170.5" y1="225.125" y2="225.125"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="112" x="31.5" y="220.1919">registerCallback()</text><polygon fill="#A80036" points="164.5,250.2578,174.5,254.2578,164.5,258.2578,168.5,254.2578" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="24.5" x2="170.5" y1="254.2578" y2="254.2578"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="128" x="31.5" y="249.3247">set_event_handler()</text><polygon fill="#FBFB77" filter="url(#f1d1g4haip41mn)" points="31,267.3906,31,322.3906,318,322.3906,318,277.3906,308,267.3906,31,267.3906" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="308" x2="308" y1="267.3906" y2="277.3906"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="318" x2="308" y1="277.3906" y2="277.3906"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="195" x="37" y="284.4575">イベント受信のコールバック登録</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="206" x="37" y="299.5903">registerCallbackによる登録または</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="266" x="37" y="314.7231">set_event_handlerによる登録どちらかでOK</text><!--
+@startuml
+title Application initialization phase
+entity App
+entity HomeScreenBinder
+entity HomeScreenGUI
+App->HomeScreenBinder: init(port, token)
+App->HomeScreenBinder: subscribe()
+
+note over HomeScreenBinder
+ Appが受信したいイベントを登録する
+ ・tap_shortcut
+end note
+
+App->HomeScreenBinder: registerCallback()
+App->HomeScreenBinder: set_event_handler()
+
+note over HomeScreenBinder
+ イベント受信のコールバック登録
+ registerCallbackによる登録または
+ set_event_handlerによる登録どちらかでOK
+end note
+@enduml
+
+PlantUML version 1.2017.18beta10(Unknown compile time)
+(GPL source distribution)
+Java Runtime: Java(TM) SE Runtime Environment
+JVM: Java HotSpot(TM) 64-Bit Server VM
+Java Version: 1.7.0_25-b15
+Operating System: Linux
+Default Encoding: UTF-8
+Language: en
+Country: US
+--></g></svg>
\ No newline at end of file diff --git a/doc/parts/on_screen_message.svg b/doc/parts/on_screen_message.svg new file mode 100644 index 0000000..b7a82bd --- /dev/null +++ b/doc/parts/on_screen_message.svg @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="217px" preserveAspectRatio="none" style="width:585px;height:217px;" version="1.1" viewBox="0 0 585 217" width="585px" zoomAndPan="magnify"><defs><filter height="300%" id="f1tu3ie33v7cnu" width="300%" x="-1" y="-1"><feGaussianBlur result="blurOut" stdDeviation="2.0"/><feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/><feOffset dx="4.0" dy="4.0" in="blurOut2" result="blurOut3"/><feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/></filter></defs><g><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="361" x="113.25" y="22.9951">Application Callback Event TapShortcut phase</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;" x1="24" x2="24" y1="81.5938" y2="159.8594"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;" x1="286" x2="286" y1="81.5938" y2="159.8594"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;" x1="519.5" x2="519.5" y1="81.5938" y2="159.8594"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="27" x="8" y="78.292">App</text><ellipse cx="24.5" cy="49.2969" fill="#FEFECE" filter="url(#f1tu3ie33v7cnu)" rx="12" ry="12" style="stroke: #A80036; stroke-width: 2.0;"/><line style="stroke: #A80036; stroke-width: 2.0;" x1="12.5" x2="36.5" y1="63.2969" y2="63.2969"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="27" x="8" y="171.8545">App</text><ellipse cx="24.5" cy="191.1563" fill="#FEFECE" filter="url(#f1tu3ie33v7cnu)" rx="12" ry="12" style="stroke: #A80036; stroke-width: 2.0;"/><line style="stroke: #A80036; stroke-width: 2.0;" x1="12.5" x2="36.5" y1="205.1563" y2="205.1563"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="135" x="216" y="78.292">HomeScreenBinder</text><ellipse cx="286.5" cy="49.2969" fill="#FEFECE" filter="url(#f1tu3ie33v7cnu)" rx="12" ry="12" style="stroke: #A80036; stroke-width: 2.0;"/><line style="stroke: #A80036; stroke-width: 2.0;" x1="274.5" x2="298.5" y1="63.2969" y2="63.2969"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="135" x="216" y="171.8545">HomeScreenBinder</text><ellipse cx="286.5" cy="191.1563" fill="#FEFECE" filter="url(#f1tu3ie33v7cnu)" rx="12" ry="12" style="stroke: #A80036; stroke-width: 2.0;"/><line style="stroke: #A80036; stroke-width: 2.0;" x1="274.5" x2="298.5" y1="205.1563" y2="205.1563"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="114" x="459.5" y="78.292">HomeScreenGUI</text><ellipse cx="519.5" cy="49.2969" fill="#FEFECE" filter="url(#f1tu3ie33v7cnu)" rx="12" ry="12" style="stroke: #A80036; stroke-width: 2.0;"/><line style="stroke: #A80036; stroke-width: 2.0;" x1="507.5" x2="531.5" y1="63.2969" y2="63.2969"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="114" x="459.5" y="171.8545">HomeScreenGUI</text><ellipse cx="519.5" cy="191.1563" fill="#FEFECE" filter="url(#f1tu3ie33v7cnu)" rx="12" ry="12" style="stroke: #A80036; stroke-width: 2.0;"/><line style="stroke: #A80036; stroke-width: 2.0;" x1="507.5" x2="531.5" y1="205.1563" y2="205.1563"/><polygon fill="#A80036" points="274.5,108.5938,284.5,112.5938,274.5,116.5938,278.5,112.5938" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="24.5" x2="280.5" y1="112.5938" y2="112.5938"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="238" x="31.5" y="107.6606">onScreenMessage(display_message)</text><polygon fill="#A80036" points="507.5,137.7266,517.5,141.7266,507.5,145.7266,511.5,141.7266" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="286.5" x2="513.5" y1="141.7266" y2="141.7266"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="209" x="293.5" y="136.7935">eventCallback(display_message)</text><!-- +@startuml
+title Application Callback Event TapShortcut phase
+entity App
+entity HomeScreenBinder
+entity HomeScreenGUI
+App->HomeScreenBinder: onScreenMessage(display_message)
+HomeScreenBinder->HomeScreenGUI: eventCallback(display_message)
+@enduml
+ +PlantUML version 1.2017.18beta10(Unknown compile time) +(GPL source distribution) +Java Runtime: Java(TM) SE Runtime Environment +JVM: Java HotSpot(TM) 64-Bit Server VM +Java Version: 1.7.0_25-b15 +Operating System: Linux +Default Encoding: UTF-8 +Language: en +Country: US +--></g></svg>
\ No newline at end of file diff --git a/doc/parts/software-stack.png b/doc/parts/software-stack.png Binary files differnew file mode 100644 index 0000000..e449868 --- /dev/null +++ b/doc/parts/software-stack.png diff --git a/doc/parts/tap_shortcut.svg b/doc/parts/tap_shortcut.svg new file mode 100644 index 0000000..2d2436b --- /dev/null +++ b/doc/parts/tap_shortcut.svg @@ -0,0 +1,24 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentScriptType="application/ecmascript" contentStyleType="text/css" height="271px" preserveAspectRatio="none" style="width:707px;height:271px;" version="1.1" viewBox="0 0 707 271" width="707px" zoomAndPan="magnify"><defs><filter height="300%" id="fh1g4l6nfhbas" width="300%" x="-1" y="-1"><feGaussianBlur result="blurOut" stdDeviation="2.0"/><feColorMatrix in="blurOut" result="blurOut2" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .4 0"/><feOffset dx="4.0" dy="4.0" in="blurOut2" result="blurOut3"/><feBlend in="SourceGraphic" in2="blurOut3" mode="normal"/></filter></defs><g><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacingAndGlyphs" textLength="361" x="174.25" y="22.9951">Application Callback Event TapShortcut phase</text><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;" x1="182" x2="182" y1="81.5938" y2="214.125"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;" x1="418" x2="418" y1="81.5938" y2="214.125"/><line style="stroke: #A80036; stroke-width: 1.0; stroke-dasharray: 5.0,5.0;" x1="641.5" x2="641.5" y1="81.5938" y2="214.125"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="27" x="166" y="78.292">App</text><ellipse cx="182.5" cy="49.2969" fill="#FEFECE" filter="url(#fh1g4l6nfhbas)" rx="12" ry="12" style="stroke: #A80036; stroke-width: 2.0;"/><line style="stroke: #A80036; stroke-width: 2.0;" x1="170.5" x2="194.5" y1="63.2969" y2="63.2969"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="27" x="166" y="226.1201">App</text><ellipse cx="182.5" cy="245.4219" fill="#FEFECE" filter="url(#fh1g4l6nfhbas)" rx="12" ry="12" style="stroke: #A80036; stroke-width: 2.0;"/><line style="stroke: #A80036; stroke-width: 2.0;" x1="170.5" x2="194.5" y1="259.4219" y2="259.4219"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="135" x="348" y="78.292">HomeScreenBinder</text><ellipse cx="418.5" cy="49.2969" fill="#FEFECE" filter="url(#fh1g4l6nfhbas)" rx="12" ry="12" style="stroke: #A80036; stroke-width: 2.0;"/><line style="stroke: #A80036; stroke-width: 2.0;" x1="406.5" x2="430.5" y1="63.2969" y2="63.2969"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="135" x="348" y="226.1201">HomeScreenBinder</text><ellipse cx="418.5" cy="245.4219" fill="#FEFECE" filter="url(#fh1g4l6nfhbas)" rx="12" ry="12" style="stroke: #A80036; stroke-width: 2.0;"/><line style="stroke: #A80036; stroke-width: 2.0;" x1="406.5" x2="430.5" y1="259.4219" y2="259.4219"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="114" x="581.5" y="78.292">HomeScreenGUI</text><ellipse cx="641.5" cy="49.2969" fill="#FEFECE" filter="url(#fh1g4l6nfhbas)" rx="12" ry="12" style="stroke: #A80036; stroke-width: 2.0;"/><line style="stroke: #A80036; stroke-width: 2.0;" x1="629.5" x2="653.5" y1="63.2969" y2="63.2969"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacingAndGlyphs" textLength="114" x="581.5" y="226.1201">HomeScreenGUI</text><ellipse cx="641.5" cy="245.4219" fill="#FEFECE" filter="url(#fh1g4l6nfhbas)" rx="12" ry="12" style="stroke: #A80036; stroke-width: 2.0;"/><line style="stroke: #A80036; stroke-width: 2.0;" x1="629.5" x2="653.5" y1="259.4219" y2="259.4219"/><polygon fill="#FBFB77" filter="url(#fh1g4l6nfhbas)" points="8,96.5938,8,136.5938,354,136.5938,354,106.5938,344,96.5938,8,96.5938" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="344" x2="344" y1="96.5938" y2="106.5938"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="354" x2="344" y1="106.5938" y2="106.5938"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="103" x="14" y="113.6606">Appは初期化時に</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="325" x="14" y="128.7935">TapShortcutのイベントを受け取る設定をしていること</text><polygon fill="#A80036" points="429.5,162.8594,419.5,166.8594,429.5,170.8594,425.5,166.8594" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="423.5" x2="640.5" y1="166.8594" y2="166.8594"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="199" x="435.5" y="161.9263">tapShortcut(application_name)</text><polygon fill="#A80036" points="193.5,191.9922,183.5,195.9922,193.5,199.9922,189.5,195.9922" style="stroke: #A80036; stroke-width: 1.0;"/><line style="stroke: #A80036; stroke-width: 1.0;" x1="187.5" x2="417.5" y1="195.9922" y2="195.9922"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacingAndGlyphs" textLength="212" x="199.5" y="191.0591">eventCallback(application_name)</text><!-- +@startuml
+title Application Callback Event TapShortcut phase
+entity App
+entity HomeScreenBinder
+entity HomeScreenGUI
+note over App
+ Appは初期化時に
+ TapShortcutのイベントを受け取る設定をしていること
+end note
+HomeScreenGUI->HomeScreenBinder: tapShortcut(application_name)
+HomeScreenBinder->App: eventCallback(application_name)
+@enduml
+ +PlantUML version 1.2017.18beta10(Unknown compile time) +(GPL source distribution) +Java Runtime: Java(TM) SE Runtime Environment +JVM: Java HotSpot(TM) 64-Bit Server VM +Java Version: 1.7.0_25-b15 +Operating System: Linux +Default Encoding: UTF-8 +Language: en +Country: US +--></g></svg>
\ No newline at end of file |