Documentation for 0953376d31

This commit is contained in:
github-actions
2023-06-16 21:18:14 +00:00
parent 26f1eee566
commit 14deeecd50
7241 changed files with 234176 additions and 54779 deletions

View File

@@ -3,7 +3,7 @@
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=11"/>
<meta name="generator" content="Doxygen 1.9.6"/>
<meta name="generator" content="Doxygen 1.9.7"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>Algorithms_in_C++: graphics/spirograph.cpp File Reference</title>
<link href="../../tabs.css" rel="stylesheet" type="text/css"/>
@@ -41,7 +41,7 @@ MathJax.Hub.Config({
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.9.6 -->
<!-- Generated by Doxygen 1.9.7 -->
<script type="text/javascript">
/* @license magnet:?xt=urn:btih:d3d9a9a6595521f9666a5e94cc830dab83b65699&amp;dn=expat.txt MIT */
var searchBox = new SearchBox("searchBox", "../../search/",'.html');
@@ -118,8 +118,7 @@ $(document).ready(function(){initNavTree('da/d77/spirograph_8cpp.html','../../')
</div><div class="textblock"><div class="dynheader">
Include dependency graph for spirograph.cpp:</div>
<div class="dyncontent">
<div class="center"><div class="zoom"><iframe scrolling="no" frameborder="0" src="../../d2/d4b/spirograph_8cpp__incl.svg" width="100%" height="383"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
</div>
<div class="center"><div class="zoom"><iframe scrolling="no" frameborder="0" src="../../d2/d4b/spirograph_8cpp__incl.svg" width="100%" height="383"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div></div>
</div>
</div><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a id="namespaces" name="namespaces"></a>
@@ -208,12 +207,11 @@ Functions</h2></td></tr>
<div class="line"><span class="lineno"> 282</span> </div>
<div class="line"><span class="lineno"> 283</span> <span class="keywordflow">return</span> 0;</div>
<div class="line"><span class="lineno"> 284</span>}</div>
<div class="ttc" id="anamespacespirograph_html_a8e83a64e8443fff1e5ffdc1c299c1e99"><div class="ttname"><a href="../../da/dd3/namespacespirograph.html#a8e83a64e8443fff1e5ffdc1c299c1e99">spirograph::test</a></div><div class="ttdeci">void test()</div><div class="ttdoc">Test function to save resulting points to a CSV file.</div><div class="ttdef"><b>Definition:</b> spirograph.cpp:93</div></div>
<div class="ttc" id="anamespacespirograph_html_a8e83a64e8443fff1e5ffdc1c299c1e99"><div class="ttname"><a href="../../da/dd3/namespacespirograph.html#a8e83a64e8443fff1e5ffdc1c299c1e99">spirograph::test</a></div><div class="ttdeci">void test()</div><div class="ttdoc">Test function to save resulting points to a CSV file.</div><div class="ttdef"><b>Definition</b> spirograph.cpp:93</div></div>
</div><!-- fragment --><div class="dynheader">
Here is the call graph for this function:</div>
<div class="dyncontent">
<div class="center"><iframe scrolling="no" frameborder="0" src="../../da/d77/spirograph_8cpp_a3c04138a5bfe5d72780bb7e82a18e627_cgraph.svg" width="419" height="184"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
<div class="center"><iframe scrolling="no" frameborder="0" src="../../da/d77/spirograph_8cpp_a3c04138a5bfe5d72780bb7e82a18e627_cgraph.svg" width="419" height="184"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe></div>
</div>
</div>
@@ -224,7 +222,7 @@ Here is the call graph for this function:</div>
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
<ul>
<li class="navelem"><a class="el" href="../../dir_e79632891301b850df87e9c0030293fa.html">graphics</a></li><li class="navelem"><a class="el" href="../../da/d77/spirograph_8cpp.html">spirograph.cpp</a></li>
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.6 </li>
<li class="footer">Generated by <a href="https://www.doxygen.org/index.html"><img class="footer" src="../../doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.9.7 </li>
</ul>
</div>
</body>

View File

@@ -1,8 +1,13 @@
<map id="main" name="main">
<area shape="rect" id="node1" title=" " alt="" coords="5,80,55,106"/>
<area shape="rect" id="node2" href="$da/dd3/namespacespirograph.html#a8e83a64e8443fff1e5ffdc1c299c1e99" title="Test function to save resulting points to a CSV file." alt="" coords="103,80,214,106"/>
<area shape="rect" id="node3" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/io/basic_ofstream/close.html#" title=" " alt="" coords="269,5,406,31"/>
<area shape="rect" id="node4" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/io/basic_ofstream/is_open.html#" title=" " alt="" coords="262,55,413,80"/>
<area shape="rect" id="node5" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/io/manip/setw.html#" title=" " alt="" coords="300,104,375,130"/>
<area shape="rect" id="node6" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/io/basic_stringstream/str.html#" title=" " alt="" coords="267,153,409,179"/>
<area shape="rect" id="Node000001" title=" " alt="" coords="5,80,55,106"/>
<area shape="rect" id="Node000002" href="$da/dd3/namespacespirograph.html#a8e83a64e8443fff1e5ffdc1c299c1e99" title="Test function to save resulting points to a CSV file." alt="" coords="103,80,214,106"/>
<area shape="poly" id="edge1_Node000001_Node000002" title=" " alt="" coords="55,90,88,90,88,96,55,96"/>
<area shape="rect" id="Node000003" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/io/basic_ofstream/close.html#" title=" " alt="" coords="269,5,406,31"/>
<area shape="poly" id="edge2_Node000002_Node000003" title=" " alt="" coords="183,77,261,40,276,34,278,39,263,45,185,82"/>
<area shape="rect" id="Node000004" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/io/basic_ofstream/is_open.html#" title=" " alt="" coords="262,55,413,80"/>
<area shape="poly" id="edge3_Node000002_Node000004" title=" " alt="" coords="214,82,247,78,248,83,215,88"/>
<area shape="rect" id="Node000005" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/io/manip/setw.html#" title=" " alt="" coords="300,104,375,130"/>
<area shape="poly" id="edge4_Node000002_Node000005" title=" " alt="" coords="215,98,286,107,286,113,214,103"/>
<area shape="rect" id="Node000006" href="/Users/runner/work/C-Plus-Plus/C-Plus-Plus/doc/cppreference-doxygen-web.tag.xml$cpp/io/basic_stringstream/str.html#" title=" " alt="" coords="267,153,409,179"/>
<area shape="poly" id="edge5_Node000002_Node000006" title=" " alt="" coords="186,104,263,140,278,145,276,150,261,145,184,109"/>
</map>

View File

@@ -1 +1 @@
42c29831c99998250a3a8266f724773f
e4a41e74615008325e45e5d6d3f87018

View File

@@ -6,91 +6,131 @@
<!-- Title: main Pages: 1 -->
<svg width="314pt" height="138pt"
viewBox="0.00 0.00 314.00 138.25" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<svg id="main" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" onload="init(evt)">
<style type="text/css"><![CDATA[
.node, .edge {opacity: 0.7;}
.node.selected, .edge.selected {opacity: 1;}
.edge:hover path { stroke: red; }
.edge:hover polygon { stroke: red; fill: red; }
]]></style>
<script type="application/ecmascript" xlink:href="../../svg.min.js"/>
<svg id="graph" class="graph">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 134.25)">
<title>main</title>
<!-- Node1 -->
<g id="node1" class="node">
<g id="Node000001" class="node">
<title>Node1</title>
<g id="a_node1"><a xlink:title=" ">
<g id="a_Node000001"><a xlink:title=" ">
<polygon fill="#999999" stroke="#666666" points="37,-74.25 0,-74.25 0,-55 37,-55 37,-74.25"/>
<text text-anchor="middle" x="18.5" y="-60.75" font-family="Helvetica,sans-Serif" font-size="10.00">main</text>
</a>
</g>
</g>
<!-- Node2 -->
<g id="node2" class="node">
<g id="Node000002" class="node">
<title>Node2</title>
<g id="a_node2"><a xlink:href="../../da/dd3/namespacespirograph.html#a8e83a64e8443fff1e5ffdc1c299c1e99" target="_top" xlink:title="Test function to save resulting points to a CSV file.">
<g id="a_Node000002"><a xlink:href="../../da/dd3/namespacespirograph.html#a8e83a64e8443fff1e5ffdc1c299c1e99" target="_top" xlink:title="Test function to save resulting points to a CSV file.">
<polygon fill="white" stroke="#666666" points="156.5,-74.25 73,-74.25 73,-55 156.5,-55 156.5,-74.25"/>
<text text-anchor="middle" x="114.75" y="-60.75" font-family="Helvetica,sans-Serif" font-size="10.00">spirograph::test</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node2 -->
<g id="edge1" class="edge">
<g id="edge1_Node000001_Node000002" class="edge">
<title>Node1&#45;&gt;Node2</title>
<g id="a_edge1_Node000001_Node000002"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M37.23,-64.62C44.35,-64.62 52.98,-64.62 61.82,-64.62"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="61.65,-68.13 71.65,-64.62 61.65,-61.13 61.65,-68.13"/>
</a>
</g>
</g>
<!-- Node3 -->
<g id="node3" class="node">
<g id="Node000003" class="node">
<title>Node3</title>
<g id="a_node3"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/io/basic_ofstream/close.html#" xlink:title=" ">
<g id="a_Node000003"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/io/basic_ofstream/close.html#" xlink:title=" ">
<polygon fill="white" stroke="#666666" points="300.75,-130.25 197.75,-130.25 197.75,-111 300.75,-111 300.75,-130.25"/>
<text text-anchor="middle" x="249.25" y="-116.75" font-family="Helvetica,sans-Serif" font-size="10.00">std::ofstream::close</text>
</a>
</g>
</g>
<!-- Node2&#45;&gt;Node3 -->
<g id="edge2" class="edge">
<g id="edge2_Node000002_Node000003" class="edge">
<title>Node2&#45;&gt;Node3</title>
<g id="a_edge2_Node000002_Node000003"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M134.01,-74.62C149.34,-82.78 171.98,-94.28 192.5,-102.62 196.2,-104.13 200.09,-105.6 204,-107"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="202.76,-110.62 213.35,-110.56 205.04,-104 202.76,-110.62"/>
</a>
</g>
</g>
<!-- Node4 -->
<g id="node4" class="node">
<g id="Node000004" class="node">
<title>Node4</title>
<g id="a_node4"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/io/basic_ofstream/is_open.html#" xlink:title=" ">
<g id="a_Node000004"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/io/basic_ofstream/is_open.html#" xlink:title=" ">
<polygon fill="white" stroke="#666666" points="306,-93.25 192.5,-93.25 192.5,-74 306,-74 306,-93.25"/>
<text text-anchor="middle" x="249.25" y="-79.75" font-family="Helvetica,sans-Serif" font-size="10.00">std::ofstream::is_open</text>
</a>
</g>
</g>
<!-- Node2&#45;&gt;Node4 -->
<g id="edge3" class="edge">
<g id="edge3_Node000002_Node000004" class="edge">
<title>Node2&#45;&gt;Node4</title>
<g id="a_edge3_Node000002_Node000004"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M156.95,-70.53C164.85,-71.67 173.32,-72.88 181.78,-74.09"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="181.08,-77.67 191.47,-75.63 182.07,-70.74 181.08,-77.67"/>
</a>
</g>
</g>
<!-- Node5 -->
<g id="node5" class="node">
<g id="Node000005" class="node">
<title>Node5</title>
<g id="a_node5"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/io/manip/setw.html#" xlink:title=" ">
<g id="a_Node000005"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/io/manip/setw.html#" xlink:title=" ">
<polygon fill="white" stroke="#666666" points="277.5,-56.25 221,-56.25 221,-37 277.5,-37 277.5,-56.25"/>
<text text-anchor="middle" x="249.25" y="-42.75" font-family="Helvetica,sans-Serif" font-size="10.00">std::setw</text>
</a>
</g>
</g>
<!-- Node2&#45;&gt;Node5 -->
<g id="edge4" class="edge">
<g id="edge4_Node000002_Node000005" class="edge">
<title>Node2&#45;&gt;Node5</title>
<g id="a_edge4_Node000002_Node000005"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M156.95,-59.03C174.02,-56.71 193.7,-54.04 210.41,-51.77"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="210.46,-55.15 219.9,-50.34 209.52,-48.22 210.46,-55.15"/>
</a>
</g>
</g>
<!-- Node6 -->
<g id="node6" class="node">
<g id="Node000006" class="node">
<title>Node6</title>
<g id="a_node6"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/io/basic_stringstream/str.html#" xlink:title=" ">
<g id="a_Node000006"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/io/basic_stringstream/str.html#" xlink:title=" ">
<polygon fill="white" stroke="#666666" points="302.62,-19.25 195.88,-19.25 195.88,0 302.62,0 302.62,-19.25"/>
<text text-anchor="middle" x="249.25" y="-5.75" font-family="Helvetica,sans-Serif" font-size="10.00">std::stringstream::str</text>
</a>
</g>
</g>
<!-- Node2&#45;&gt;Node6 -->
<g id="edge5" class="edge">
<g id="edge5_Node000002_Node000006" class="edge">
<title>Node2&#45;&gt;Node6</title>
<g id="a_edge5_Node000002_Node000006"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M134.66,-54.61C150,-46.71 172.31,-35.71 192.5,-27.62 196.21,-26.14 200.1,-24.69 204.02,-23.29"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="205.05,-26.29 213.38,-19.74 202.78,-19.67 205.05,-26.29"/>
</a>
</g>
</g>
</g>
</svg>
</svg>
<style type='text/css'>
<![CDATA[
[data-mouse-over-selected='false'] { opacity: 0.7; }
[data-mouse-over-selected='true'] { opacity: 1.0; }
]]>
</style>
<script type="application/ecmascript"><![CDATA[
document.addEventListener('DOMContentLoaded', (event) => {
highlightEdges();
highlightAdjacentNodes();
});
]]></script>
</svg>

Before

Width:  |  Height:  |  Size: 4.6 KiB

After

Width:  |  Height:  |  Size: 5.8 KiB

View File

@@ -0,0 +1,111 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<!-- Generated by graphviz version 8.0.5 (20230430.1635)
-->
<!-- Title: main Pages: 1 -->
<svg width="314pt" height="138pt"
viewBox="0.00 0.00 314.00 138.25" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 134.25)">
<title>main</title>
<!-- Node1 -->
<g id="Node000001" class="node">
<title>Node1</title>
<g id="a_Node000001"><a xlink:title=" ">
<polygon fill="#999999" stroke="#666666" points="37,-74.25 0,-74.25 0,-55 37,-55 37,-74.25"/>
<text text-anchor="middle" x="18.5" y="-60.75" font-family="Helvetica,sans-Serif" font-size="10.00">main</text>
</a>
</g>
</g>
<!-- Node2 -->
<g id="Node000002" class="node">
<title>Node2</title>
<g id="a_Node000002"><a xlink:href="../../da/dd3/namespacespirograph.html#a8e83a64e8443fff1e5ffdc1c299c1e99" target="_top" xlink:title="Test function to save resulting points to a CSV file.">
<polygon fill="white" stroke="#666666" points="156.5,-74.25 73,-74.25 73,-55 156.5,-55 156.5,-74.25"/>
<text text-anchor="middle" x="114.75" y="-60.75" font-family="Helvetica,sans-Serif" font-size="10.00">spirograph::test</text>
</a>
</g>
</g>
<!-- Node1&#45;&gt;Node2 -->
<g id="edge1_Node000001_Node000002" class="edge">
<title>Node1&#45;&gt;Node2</title>
<g id="a_edge1_Node000001_Node000002"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M37.23,-64.62C44.35,-64.62 52.98,-64.62 61.82,-64.62"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="61.65,-68.13 71.65,-64.62 61.65,-61.13 61.65,-68.13"/>
</a>
</g>
</g>
<!-- Node3 -->
<g id="Node000003" class="node">
<title>Node3</title>
<g id="a_Node000003"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/io/basic_ofstream/close.html#" xlink:title=" ">
<polygon fill="white" stroke="#666666" points="300.75,-130.25 197.75,-130.25 197.75,-111 300.75,-111 300.75,-130.25"/>
<text text-anchor="middle" x="249.25" y="-116.75" font-family="Helvetica,sans-Serif" font-size="10.00">std::ofstream::close</text>
</a>
</g>
</g>
<!-- Node2&#45;&gt;Node3 -->
<g id="edge2_Node000002_Node000003" class="edge">
<title>Node2&#45;&gt;Node3</title>
<g id="a_edge2_Node000002_Node000003"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M134.01,-74.62C149.34,-82.78 171.98,-94.28 192.5,-102.62 196.2,-104.13 200.09,-105.6 204,-107"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="202.76,-110.62 213.35,-110.56 205.04,-104 202.76,-110.62"/>
</a>
</g>
</g>
<!-- Node4 -->
<g id="Node000004" class="node">
<title>Node4</title>
<g id="a_Node000004"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/io/basic_ofstream/is_open.html#" xlink:title=" ">
<polygon fill="white" stroke="#666666" points="306,-93.25 192.5,-93.25 192.5,-74 306,-74 306,-93.25"/>
<text text-anchor="middle" x="249.25" y="-79.75" font-family="Helvetica,sans-Serif" font-size="10.00">std::ofstream::is_open</text>
</a>
</g>
</g>
<!-- Node2&#45;&gt;Node4 -->
<g id="edge3_Node000002_Node000004" class="edge">
<title>Node2&#45;&gt;Node4</title>
<g id="a_edge3_Node000002_Node000004"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M156.95,-70.53C164.85,-71.67 173.32,-72.88 181.78,-74.09"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="181.08,-77.67 191.47,-75.63 182.07,-70.74 181.08,-77.67"/>
</a>
</g>
</g>
<!-- Node5 -->
<g id="Node000005" class="node">
<title>Node5</title>
<g id="a_Node000005"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/io/manip/setw.html#" xlink:title=" ">
<polygon fill="white" stroke="#666666" points="277.5,-56.25 221,-56.25 221,-37 277.5,-37 277.5,-56.25"/>
<text text-anchor="middle" x="249.25" y="-42.75" font-family="Helvetica,sans-Serif" font-size="10.00">std::setw</text>
</a>
</g>
</g>
<!-- Node2&#45;&gt;Node5 -->
<g id="edge4_Node000002_Node000005" class="edge">
<title>Node2&#45;&gt;Node5</title>
<g id="a_edge4_Node000002_Node000005"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M156.95,-59.03C174.02,-56.71 193.7,-54.04 210.41,-51.77"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="210.46,-55.15 219.9,-50.34 209.52,-48.22 210.46,-55.15"/>
</a>
</g>
</g>
<!-- Node6 -->
<g id="Node000006" class="node">
<title>Node6</title>
<g id="a_Node000006"><a target="_blank" xlink:href="http://en.cppreference.com/w/cpp/io/basic_stringstream/str.html#" xlink:title=" ">
<polygon fill="white" stroke="#666666" points="302.62,-19.25 195.88,-19.25 195.88,0 302.62,0 302.62,-19.25"/>
<text text-anchor="middle" x="249.25" y="-5.75" font-family="Helvetica,sans-Serif" font-size="10.00">std::stringstream::str</text>
</a>
</g>
</g>
<!-- Node2&#45;&gt;Node6 -->
<g id="edge5_Node000002_Node000006" class="edge">
<title>Node2&#45;&gt;Node6</title>
<g id="a_edge5_Node000002_Node000006"><a xlink:title=" ">
<path fill="none" stroke="#63b8ff" d="M134.66,-54.61C150,-46.71 172.31,-35.71 192.5,-27.62 196.21,-26.14 200.1,-24.69 204.02,-23.29"/>
<polygon fill="#63b8ff" stroke="#63b8ff" points="205.05,-26.29 213.38,-19.74 202.78,-19.67 205.05,-26.29"/>
</a>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 5.1 KiB