diff --git a/.gitattributes b/.gitattributes index 957b2579c6ef20995a09efd9a17f8fd90606f5ed..8b62e1fdfcbc62e7bc30cc2651e9e4c82ac1a5f8 100644 --- a/.gitattributes +++ b/.gitattributes @@ -25,3 +25,4 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text *.zip filter=lfs diff=lfs merge=lfs -text *.zstandard filter=lfs diff=lfs merge=lfs -text *tfevents* filter=lfs diff=lfs merge=lfs -text +moonlit-flower-278.ckpt filter=lfs diff=lfs merge=lfs -text diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..eae9231543b2fe3f29794be89c4b3599111c7eff --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +*.DS_Store +__pycache__/ +*.py[cod] +*$py.class diff --git a/README.md b/README.md index 3ed69629806402a9dc40d33a6029a78f1c885fe8..00bdbcc960594531a7c6661f3088d676029dc903 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,8 @@ --- title: Interpretable Vertebral Fracture Diagnosis -emoji: 🐠 -colorFrom: red -colorTo: red +emoji: 🦴 +colorFrom: indigo +colorTo: yellow sdk: streamlit sdk_version: 1.2.0 app_file: app.py diff --git a/app.py b/app.py new file mode 100644 index 0000000000000000000000000000000000000000..d1a1e2e0aca9ab05a44e7bb73ab06c415d6ebd35 --- /dev/null +++ b/app.py @@ -0,0 +1,288 @@ +import streamlit as st +import numpy as np +import PIL.Image +from st_clickable_images import clickable_images +import os +from monai.transforms import CenterSpatialCrop, ScaleIntensityRange, Orientation +import base64 +from io import BytesIO +import torch +from glob import glob +from model import VerseFxClassifier +from netdissect import nethook, imgviz +import tempfile +import nibabel as nib +import pathlib + +import warnings +warnings.filterwarnings("ignore") + +# inlined Network Dissection results +unit_levels = torch.tensor([1.8715330362319946, 1.5618106126785278, 1.2870054244995117, 2.801919937133789, 1.1172661781311035, 2.2070984840393066, 2.3209457397460938, 2.022796392440796, 2.0127036571502686, 2.782788038253784, 1.013718843460083, 2.491750955581665, 1.5298184156417847, 1.7949274778366089, 2.1840720176696777, 2.73867130279541, 1.9927071332931519, 1.4070216417312622, 1.8516860008239746, 1.4621922969818115, 1.7988444566726685, 2.0956199169158936, 2.890246629714966, 0.9635668992996216, 1.8309086561203003, 1.8866947889328003, 1.8208155632019043, 1.3282618522644043, 2.787090301513672, 1.6975336074829102, 2.388171434402466, 3.1032965183258057, 1.996658444404602, 1.8226428031921387, 2.557448148727417, 1.8223134279251099, 1.2595659494400024, 1.8109630346298218, 2.6617250442504883, 1.9107582569122314, 2.254500389099121, 1.218552827835083, 3.087602376937866, 3.3800148963928223, 3.153672218322754, 2.919377326965332, 2.0350027084350586, 3.0219407081604004, 2.4654042720794678, 1.4958505630493164, 2.2895171642303467, 1.3284631967544556, 3.229510545730591, 1.9460035562515259, 1.855022668838501, 3.15183424949646, 2.582113742828369, 1.8321630954742432, 2.7707386016845703, 2.824443817138672, 2.662318468093872, 2.466081380844116, 1.0707639455795288, 1.856846570968628, 1.9820237159729004, 2.5840156078338623, 1.603718638420105, 2.741654396057129, 1.7408792972564697, 1.5616865158081055, 2.621121406555176, 2.187910318374634, 2.029402494430542, 2.3087165355682373, 2.3417551517486572, 2.4370405673980713, 2.363990545272827, 1.7908833026885986, 2.29636287689209, 2.5254483222961426, 3.2696034908294678, 1.4013628959655762, 1.645676851272583, 2.7126476764678955, 2.717543125152588, 1.0994248390197754, 1.9232852458953857, 1.985698938369751, 2.004666328430176, 2.385585069656372, 2.5118658542633057, 3.444154977798462, 2.0752625465393066, 2.9441027641296387, 1.6907892227172852, 2.695660352706909, 3.08571457862854, 1.8869487047195435, 1.5935581922531128, 2.224071502685547, 2.877380609512329, 3.0157597064971924, 2.1446480751037598, 2.4394376277923584, 3.298722267150879, 2.208728313446045, 1.9590588808059692, 1.789717197418213, 2.6814987659454346, 2.2261674404144287, 3.002722978591919, 3.0650651454925537, 1.9212583303451538, 1.6315948963165283, 1.6328997611999512, 2.4739739894866943, 0.9252153635025024, 3.089088201522827, 2.7511496543884277, 1.997342586517334, 2.5561487674713135, 1.6858017444610596, 2.7134108543395996, 2.513460159301758, 1.8604570627212524, 2.7962076663970947, 1.111690878868103, 2.1877119541168213, 2.1126585006713867, 2.9239501953125, 1.4319941997528076, 3.041599988937378, 2.2168679237365723, 1.792368769645691, 2.1387674808502197, 1.3679250478744507, 1.347702145576477, 3.0506792068481445, 1.5423274040222168, 1.8090440034866333, 1.869529366493225, 2.8993425369262695, 1.5416679382324219, 3.003296375274658, 3.1893210411071777, 2.3816075325012207, 2.281187057495117, 2.7733864784240723, 1.3033744096755981, 1.4627212285995483, 1.942519187927246, 1.4943166971206665, 2.48635196685791, 1.9112900495529175, 2.908750534057617, 1.9310427904129028, 1.8946770429611206, 1.2220033407211304, 2.0171048641204834, 1.197824478149414, 2.093484878540039, 2.240743398666382, 1.4367271661758423, 1.5200153589248657, 2.6623482704162598, 2.34277606010437, 2.378328323364258, 3.4981000423431396, 1.8303442001342773, 2.1322264671325684, 1.8304965496063232, 2.0963211059570312, 1.932998776435852, 0.9879118800163269, 1.989233136177063, 2.0391933917999268, 3.078193187713623, 2.9010426998138428, 1.451486587524414, 1.4458937644958496, 3.3362858295440674, 0.8172016143798828, 2.8464856147766113, 2.3619463443756104, 2.0269312858581543, 1.87027108669281, 2.5867714881896973, 1.0947588682174683, 2.485373020172119, 1.4596120119094849, 2.9054574966430664, 2.267271041870117, 1.9901957511901855, 1.708791971206665, 1.5335347652435303, 3.0039384365081787, 1.581254482269287, 1.6688708066940308, 2.138035535812378, 1.8489503860473633, 1.463232398033142, 2.745103597640991, 1.7890992164611816, 3.209639310836792, 2.186699628829956, 1.384399175643921, 2.347090482711792, 2.911564350128174, 2.7910614013671875, 3.0139355659484863, 2.8508076667785645, 3.1651434898376465, 2.020735263824463, 1.3879002332687378, 1.347353458404541, 1.3600330352783203, 1.563052773475647, 2.427166223526001, 2.3583383560180664, 2.0502967834472656, 1.0467418432235718, 1.5168964862823486, 2.550285816192627, 2.2569706439971924, 1.280961275100708, 2.153566360473633, 0.8621286749839783, 1.5903816223144531, 1.6175390481948853, 1.2808561325073242, 2.129512310028076, 1.923080563545227, 2.4000368118286133, 2.7758114337921143, 2.756497859954834, 2.8936665058135986, 1.9632121324539185, 1.4698351621627808, 2.9193220138549805, 2.2707347869873047, 2.1808905601501465, 2.915626049041748, 2.199504852294922, 2.225417375564575, 1.8788528442382812, 1.6902912855148315, 2.703303098678589, 1.6111797094345093, 1.4749184846878052, 2.7335896492004395, 1.1770113706588745, 1.5911366939544678, 2.5799360275268555, 2.450134515762329, 1.584707498550415, 2.0303263664245605, 1.5416966676712036, 1.6474940776824951, 3.166107654571533, 1.8914194107055664, 2.731400489807129, 3.456698179244995, 3.1407928466796875, 2.657524585723877, 1.8312366008758545, 1.3835384845733643, 1.3457938432693481, 1.1902421712875366, 1.739147663116455, 2.8404054641723633, 1.5782982110977173, 1.4647060632705688, 1.3077998161315918, 1.8057410717010498, 1.1732816696166992, 1.4494800567626953, 2.1183741092681885, 3.5306854248046875, 2.348907470703125, 1.5650557279586792, 1.6930912733078003, 2.298933267593384, 1.1758023500442505, 1.6107817888259888, 1.3251513242721558, 2.080108404159546, 1.862548589706421, 3.099520206451416, 2.8438494205474854, 1.6832661628723145, 2.074307680130005, 2.0457262992858887, 2.8403425216674805, 3.117814540863037, 2.058823823928833, 2.234037160873413, 1.2487999200820923, 1.7322322130203247, 2.6813132762908936, 2.924269199371338, 1.7503197193145752, 3.2688212394714355, 1.8045146465301514, 3.1042702198028564, 2.327272891998291, 2.7761642932891846, 2.3101589679718018, 2.8489952087402344, 2.132847547531128, 1.554833173751831, 1.3879495859146118, 1.8847209215164185, 1.728200912475586, 1.6019946336746216, 3.04852294921875, 3.0847041606903076, 2.528338670730591, 2.277801275253296, 3.1020517349243164, 2.7520859241485596, 3.03950834274292, 1.8526620864868164, 2.6675875186920166, 2.201525926589966, 1.3852479457855225, 1.744421362876892, 2.172621488571167, 2.681896924972534, 2.4530863761901855, 2.0969560146331787, 1.3115235567092896, 2.049104928970337, 1.7683310508728027, 1.7026116847991943, 2.3060457706451416, 3.208275318145752, 2.6523375511169434, 1.7658361196517944, 1.9047954082489014, 2.9763565063476562, 1.834631323814392, 3.142353057861328, 1.9534238576889038, 1.7625831365585327, 2.1041769981384277, 1.945776104927063, 2.970412015914917, 1.8245426416397095, 1.4031907320022583, 1.3985518217086792, 2.8565142154693604, 1.8306998014450073, 2.6509435176849365, 1.452415108680725, 2.7498743534088135, 2.0770175457000732, 1.8407188653945923, 1.5940998792648315, 2.4943857192993164, 3.0113513469696045, 3.450936794281006, 1.2603273391723633, 1.5098024606704712, 1.647451400756836, 2.344951868057251, 2.499359369277954, 1.9027211666107178, 1.6656138896942139, 1.5507005453109741, 2.177579641342163, 1.4274533987045288, 2.7495903968811035, 1.4635711908340454, 2.0104260444641113, 2.4939937591552734, 2.069014072418213, 1.3013184070587158, 3.4216034412384033, 1.9525243043899536, 2.196475028991699, 2.7452564239501953, 2.1965861320495605, 2.8216114044189453, 2.2089548110961914, 2.936760902404785, 1.3354514837265015, 1.3799076080322266, 2.2054338455200195, 1.3158196210861206, 1.084631085395813, 2.4761247634887695, 1.4672796726226807, 1.7008095979690552, 1.5144485235214233, 1.7634273767471313, 2.5879948139190674, 2.024614095687866, 1.7365692853927612, 1.5214873552322388, 1.1093666553497314, 1.7518495321273804, 2.188833713531494, 3.439579963684082, 2.6817214488983154, 1.636168122291565, 2.1104257106781006, 3.0666251182556152, 3.1396965980529785, 1.7993018627166748, 1.897646427154541, 1.2042944431304932, 2.8433687686920166, 2.068439483642578, 2.4039862155914307, 1.3701140880584717, 1.262689471244812, 1.827138066291809, 2.1528568267822266, 3.259542465209961, 1.7049492597579956, 1.9919352531433105, 2.1563854217529297, 2.035381317138672, 3.0388429164886475, 1.8345075845718384, 2.22445011138916, 1.5946440696716309, 2.3479206562042236, 1.281639575958252, 1.4048471450805664, 1.0306495428085327, 1.05494225025177, 1.9470269680023193, 1.6934491395950317, 2.1934640407562256, 2.6225905418395996, 1.974666714668274, 3.4361391067504883, 1.148988127708435, 2.7689907550811768, 2.478999614715576, 2.292860984802246, 1.380311131477356, 1.8914124965667725, 1.251215934753418, 1.3892083168029785, 3.1640305519104004, 2.3226025104522705, 2.3283731937408447, 3.2135708332061768, 1.2665305137634277, 2.8611419200897217, 2.735239267349243, 1.348517894744873, 1.2256826162338257, 2.5687448978424072, 1.9984424114227295, 2.913726568222046, 1.79617440700531, 3.3642163276672363, 1.405514121055603, 1.7745602130889893, 2.080112934112549, 2.5899147987365723, 1.9730525016784668, 1.6167746782302856, 1.2985221147537231, 1.6463950872421265, 1.2983338832855225, 3.4439616203308105, 1.8814938068389893, 1.1827762126922607, 3.0138072967529297, 2.0302090644836426, 3.2060086727142334, 1.7749220132827759, 1.6361336708068848, 2.207552194595337, 3.1703994274139404, 2.6205763816833496, 2.2056334018707275, 1.3571845293045044, 2.4915218353271484, 1.3841928243637085, 1.9503673315048218, 1.6178065538406372, 3.2435460090637207, 1.1473424434661865, 2.2226922512054443, 1.9872846603393555, 2.009683132171631, 3.1938722133636475, 3.248166799545288, 2.4461867809295654, 1.8230010271072388, 2.1673691272735596, 2.776118278503418, 2.054086685180664, 1.6877385377883911, 2.3526558876037598, 2.648297071456909, 1.3525688648223877, 2.819364309310913, 2.9533910751342773, 1.636002540588379, 1.5173200368881226, 2.315584421157837, 1.5832545757293701, 3121535301208496, 1.679909348487854, 2.9136874675750732, 2.4349215030670166]) +corr_rank = {299: 98, 194: 401, 281: 441, 1: 419, 289: 227, 65: 268, 23: 101, 453: 418, 321: 362, 259: 431, 257: 446, 477: 17, 92: 497, 17: 234, 314: 60, 331: 354, 315: 123, 318: 192, 445: 233, 238: 240, 311: 489, 265: 7, 126: 22, 431: 254, 223: 10, 179: 14, 362: 230, 448: 78, 478: 199, 418: 197, 139: 249, 403: 111, 262: 206, 316: 282, 150: 34, 142: 12, 444: 288, 261: 147, 180: 205, 413: 455, 322: 11, 5: 400, 474: 198, 167: 204, 226: 257, 230: 304, 225: 406, 482: 222, 373: 77, 352: 164, 2: 299, 329: 136, 152: 74, 271: 420, 386: 369, 377: 196, 165: 13, 229: 106, 457: 170, 192: 466, 99: 440, 214: 316, 461: 511, 19: 430, 82: 337, 505: 344, 199: 457, 416: 329, 484: 390, 104: 83, 496: 210, 465: 301, 462: 484, 361: 91, 231: 317, 100: 32, 467: 477, 63: 310, 421: 320, 273: 387, 368: 307, 449: 220, 385: 328, 8: 336, 432: 168, 217: 182, 255: 436, 366: 461, 151: 487, 67: 159, 14: 503, 36: 27, 131: 131, 112: 300, 37: 470, 29: 391, 163: 449, 510: 212, 21: 303, 202: 402, 409: 277, 158: 315, 16: 464, 44: 173, 197: 479, 410: 35, 495: 366, 341: 163, 425: 124, 77: 296, 38: 67, 175: 498, 181: 252, 248: 396, 15: 65, 301: 149, 18: 172, 81: 372, 154: 237, 306: 504, 123: 176, 105: 408, 185: 456, 145: 338, 398: 99, 40: 331, 451: 184, 108: 57, 94: 425, 213: 6, 286: 30, 203: 120, 39: 404, 64: 463, 10: 126, 348: 241, 28: 295, 278: 207, 216: 216, 224: 263, 330: 421, 303: 52, 206: 395, 417: 166, 354: 291, 228: 264, 446: 154, 509: 346, 440: 385, 85: 201, 363: 313, 121: 393, 423: 232, 277: 162, 86: 188, 483: 411, 364: 505, 374: 287, 176: 251, 78: 415, 351: 374, 227: 414, 51: 39, 250: 368, 488: 363, 288: 253, 434: 501, 68: 323, 276: 469, 469: 115, 130: 248, 168: 333, 397: 428, 365: 25, 128: 214, 3: 185, 26: 447, 307: 183, 419: 417, 222: 133, 493: 157, 382: 4, 319: 193, 60: 40, 327: 416, 433: 424, 430: 62, 345: 460, 486: 155, 35: 18, 45: 267, 407: 112, 507: 375, 141: 23, 260: 96, 338: 492, 387: 454, 189: 85, 182: 58, 282: 191, 350: 153, 323: 427, 143: 179, 472: 26, 302: 361, 0: 378, 244: 379, 426: 355, 215: 334, 140: 281, 253: 318, 489: 494, 267: 305, 111: 33, 346: 152, 390: 139, 210: 105, 212: 273, 188: 413, 239: 258, 439: 208, 391: 308, 378: 422, 312: 382, 97: 224, 491: 63, 162: 359, 389: 265, 272: 97, 443: 386, 75: 118, 245: 297, 263: 148, 284: 107, 137: 178, 415: 399, 209: 161, 201: 42, 335: 90, 135: 73, 310: 432, 122: 29, 172: 405, 328: 478, 173: 215, 308: 459, 480: 491, 412: 388, 494: 36, 476: 246, 479: 9, 9: 64, 344: 383, 119: 332, 55: 174, 103: 202, 395: 506, 56: 28, 73: 512, 353: 326, 120: 94, 339: 218, 12: 266, 193: 16, 295: 458, 106: 495, 287: 217, 304: 228, 124: 499, 148: 250, 422: 483, 264: 46, 113: 3, 166: 103, 369: 327, 156: 2, 498: 321, 334: 151, 169: 442, 506: 48, 4: 352, 43: 158, 249: 135, 31: 127, 233: 134, 427: 356, 375: 510, 107: 409, 183: 144, 320: 89, 138: 465, 211: 189, 41: 358, 292: 51, 79: 235, 456: 389, 116: 130, 280: 306, 343: 342, 473: 438, 357: 351, 511: 93, 450: 209, 279: 451, 144: 236, 293: 108, 187: 256, 11: 171, 127: 5, 471: 302, 313: 319, 13: 330, 468: 380, 291: 340, 243: 480, 475: 261, 487: 294, 160: 41, 254: 481, 429: 8, 59: 213, 326: 150, 57: 142, 125: 247, 359: 298, 87: 70, 258: 95, 70: 69, 383: 486, 347: 325, 497: 493, 69: 223, 129: 271, 492: 156, 384: 219, 91: 160, 360: 137, 74: 117, 285: 398, 340: 473, 240: 121, 424: 467, 266: 397, 508: 140, 178: 50, 400: 474, 388: 259, 235: 59, 420: 433, 376: 243, 294: 452, 232: 353, 402: 231, 49: 371, 317: 341, 408: 423, 372: 276, 48: 102, 102: 269, 256: 472, 428: 167, 171: 439, 275: 349, 435: 245, 84: 175, 134: 203, 71: 116, 161: 410, 324: 194, 342: 496, 207: 43, 242: 360, 25: 284, 218: 239, 499: 37, 195: 145, 83: 187, 186: 238, 283: 286, 247: 75, 490: 407, 464: 345, 436: 384, 164: 488, 219: 365, 118: 49, 251: 445, 503: 211, 394: 448, 190: 226, 153: 272, 62: 79, 170: 290, 96: 82, 80: 143, 305: 53, 157: 412, 191: 364, 332: 350, 7: 507, 101: 72, 399: 335, 437: 169, 333: 502, 447: 475, 401: 462, 290: 482, 252: 24, 370: 109, 438: 55, 452: 125, 241: 312, 297: 429, 184: 15, 93: 81, 337: 476, 463: 221, 349: 229, 208: 44, 61: 289, 136: 177, 355: 242, 20: 500, 356: 76, 381: 47, 33: 370, 296: 275, 274: 426, 117: 84, 442: 490, 458: 260, 34: 186, 236: 86, 481: 468, 309: 373, 269: 88, 455: 113, 500: 255, 66: 471, 58: 434, 174: 119, 396: 110, 268: 87, 504: 322, 155: 435, 298: 122, 200: 181, 6: 485, 72: 129, 76: 508, 109: 392, 204: 339, 46: 347, 237: 274, 196: 367, 454: 293, 110: 21, 90: 19, 502: 38, 325: 453, 52: 128, 95: 71, 159: 225, 441: 278, 459: 92, 42: 56, 405: 403, 485: 200, 54: 444, 205: 285, 32: 66, 30: 357, 336: 61, 234: 190, 379: 244, 393: 309, 146: 394, 404: 292, 221: 348, 147: 180, 115: 270, 53: 314, 24: 443, 371: 165, 246: 146, 411: 31, 88: 1, 133: 324, 380: 138, 22: 280, 98: 20, 460: 114, 114: 262, 27: 141, 466: 343, 501: 279, 358: 195, 470: 381, 50: 376, 132: 311, 270: 437, 220: 45, 47: 68, 89: 80, 149: 132, 367: 283, 406: 100, 392: 450, 177: 104, 198: 509, 414: 54, 300: 377} + +# inlined and adapted pytorch_grad_cam/activations_and_gradients.py +class ActivationsAndGradients: + """ Class for extracting activations and + registering gradients from targetted intermediate layers """ + + def __init__(self, model, target_layer, reshape_transform): + self.model = model + self.gradients = [] + self.activations = [] + self.reshape_transform = reshape_transform + + target_layer.register_forward_hook(self.save_activation) + + #Backward compitability with older pytorch versions: + if hasattr(target_layer, 'register_full_backward_hook'): + target_layer.register_full_backward_hook(self.save_gradient) + else: + target_layer.register_backward_hook(self.save_gradient) + + def save_activation(self, module, input, output): + activation = output[0] + if self.reshape_transform is not None: + activation = self.reshape_transform(activation) + self.activations.append(activation.cpu().detach()) + + def save_gradient(self, module, grad_input, grad_output): + # Gradients are computed in reverse order + grad = grad_output[0] + if self.reshape_transform is not None: + grad = self.reshape_transform(grad) + self.gradients = [grad.cpu().detach()] + self.gradients + + def __call__(self, x): + self.gradients = [] + self.activations = [] + return self.model(x) + +# inlined and adapted pytorch_grad_cam/grad_cam.py +class DetectorGradCAM: + def __init__(self, model, target_layer, use_cuda=False, reshape_transform=None): + self.model = model.eval() + self.target_layer = target_layer + self.cuda = use_cuda + if self.cuda: + self.model = model.cuda() + self.reshape_transform = reshape_transform + self.activations_and_grads = ActivationsAndGradients(self.model, + target_layer, reshape_transform) + + def forward(self, input_img): + return self.model(input_img) + + def get_cam_weights(self, input_tensor, target_category, activations, grads, k=5): + a = torch.tensor(activations) + return torch.topk((a * (a > unit_levels.view(unit_levels.shape[0], 1, 1, 1).repeat(1, 8, 8, 8)))[0].sum(dim=(1,2,3)), k=k).indices + + def get_loss(self, output, target_category): + loss = 0 + for i in range(len(target_category)): + loss = loss + output[i, target_category[i]] + return loss + + def get_cam_image(self, input_tensor, target_category, activations, grads, eigen_smooth=False): + weights = self.get_cam_weights(input_tensor, target_category, activations, grads) + weighted_activations = weights[:, :, None, None] * activations + cam = weighted_activations.sum(axis=1) + return cam + + def forward(self, input_tensor, target_category=None, k=5): + + if self.cuda: + input_tensor = input_tensor.cuda() + + output = self.activations_and_grads(input_tensor) + + if type(target_category) is int: + target_category = [target_category] * input_tensor.size(0) + + if target_category is None: + target_category = np.argmax(output.cpu().data.numpy(), axis=-1) + else: + assert(len(target_category) == input_tensor.size(0)) + + self.model.zero_grad() + loss = self.get_loss(output, target_category) + loss.backward(retain_graph=True) + + activations = self.activations_and_grads.activations[-1].cpu().data.numpy() + grads = self.activations_and_grads.gradients[-1].cpu().data.numpy() + + return self.get_cam_weights(input_tensor, target_category, activations, grads, k=k).tolist() + +class AttrDict(dict): + def __init__(self, *args, **kwargs): + super(AttrDict, self).__init__(*args, **kwargs) + self.__dict__ = self + +# hide header bar for print +hide_streamlit_style = """ + +""" + +st.markdown(hide_streamlit_style, unsafe_allow_html=True) + +received_input = None + +scale = ScaleIntensityRange(a_min=-1000, a_max=1000, b_min=0, b_max=1, clip=True) +crop = CenterSpatialCrop(roi_size=(64,64,64)) + +preprocess = lambda arr: scale(crop(arr[None, ...].clip(-1000, 1000))) +to_image = lambda v: PIL.Image.fromarray((255*v[0,:,:,v.shape[-1]//2]).astype('uint8')).convert('RGB') + +def to_base64(image: PIL.Image): + buffered = BytesIO() + image.save(buffered, format="PNG") + return "data:image/png;base64," + base64.b64encode(buffered.getvalue()).decode("utf-8") + +def base64_slice(path: str): + return to_base64(to_image(preprocess(np.load(path)))) + +def bundle_builder(path: str, local=True, desc=""): + if local: path = os.path.join(".", path) + + vertebra = np.float32(preprocess(np.load(path))) + slice = to_base64(to_image(vertebra)) + + return (slice, desc, vertebra) + +examples = [ + bundle_builder("examples/l5.npy", desc="L5 - no fracture"), +] + +with st.empty(): + with st.container(): + upload = st.file_uploader("Upload vertebra to classify (nii, nii.gz, npy)") + + if upload is not None: + suffix = ''.join(pathlib.Path(upload.name).suffixes) + with tempfile.NamedTemporaryFile(suffix=suffix) as fp: + fp.write(upload.getvalue()) + fp.seek(0) + + if 'nii' in suffix: + try: + nii = nib.load(fp.name) + except: + raise Exception("Unable to load uploaded NIfTI file. Please ensure that it has the correct file extensions.") + + nifti_data = nii.get_fdata() + data = Orientation(axcodes='IPL')(nifti_data[None, ...], affine=nii.affine)[0][0] + elif 'npy' in suffix: + try: + data = np.load(fp) + except: + raise Exception("Unable to load provided NumPy file.") + else: + raise Exception("Invalid input data format. Please provide a NIfTI or NumPy array file.") + + assert len(data.shape) == 3, "Invalid number of dimensions. Expects three-dimensional input." + assert all([a >= 64 for a in data.shape]), "Invalid shape. Shape must not be smaller than 64x64x64." + + fp.close() + + vertebra = np.float32(preprocess(data)) + slice = to_base64(to_image(vertebra)) + + received_input = (slice, upload.name, vertebra) + + with st.container(): + st.caption("Or pick one of these examples:") + + clicked = clickable_images( + [ex[0] for ex in examples], + titles=[ex[1] for ex in examples], + div_style={"display": "flex", "justify-content": "left", "flex-wrap": "wrap"}, + img_style={"margin": "0 5px 5px 0", "height": "135px"}, + ) + + if clicked > -1: + received_input = examples[clicked] + + if received_input is not None: + with st.container(): + col1, col2 = st.columns([1,3]) + with col1: + st.image(received_input[0], width=140) + with col2: + top_container = st.container() + top_container.write("**Concept Visualization**") + top_container.write(f"Input: {received_input[1]}") + with st.spinner('Running inference'): + saved_checkpoint = "moonlit-flower-278.ckpt" + + # TODO inline config + checkpoint = torch.load(saved_checkpoint, map_location="cpu") + + checkpoint['hyper_parameters']['dataset_path'] = '.' + checkpoint['hyper_parameters']['batch_size'] = 1 + + module = VerseFxClassifier.load_from_checkpoint(saved_checkpoint, hparams=checkpoint['hyper_parameters'], map_location="cpu") + model = module.backbone + + model.eval() + + sample = torch.tensor(received_input[2][None, ...]) + + cam = DetectorGradCAM(model, model.down_tr512, use_cuda=False) + + detectors = cam.forward(input_tensor=sample, target_category=0, k=5) + ranks = [corr_rank[unit] for unit in detectors] + + model = nethook.InstrumentedModel(model) + model.retain_layer("down_tr512") + + pred = (torch.sigmoid(model(sample)) > 0.5).long().item() + + acts = model.retained_layer("down_tr512")[0] + + ld_res = acts.shape[-1] + img_slices = torch.linspace(int(64/ld_res/2), 64-int(64/ld_res/2), ld_res, dtype=torch.long) + + iv = imgviz.ImageVisualizer(224, image_size=64, source="zc", percent_level=0.99) + + top_container.write(f"Prediction: {'fracture' if pred==1 else 'no fracture'}") + + image_margin = """ + + """ + st.markdown(image_margin, unsafe_allow_html=True) + + for i, detector in enumerate(detectors): + def paper_typo_fix(d): + # in the paper, unit 424 is mistakenly referred to as unit 22. + # to ensure consistency, we simply swap the label of both + if d != 424 and d!= 22: return str(d) + if d == 424: return "22" + else: return "424" + + st.markdown(f"Detector unit #{paper_typo_fix(detector)} (relevance rank {i+1}, positive correlation rank {ranks[i]})") + concepts = glob(f"concepts/{detector}_*.png") + if len(concepts) == 0: + st.caption("No statistically significant activations, unable to show general concept") + else: + st.caption("General concept") + sorted_concepts = sorted(concepts, key=lambda x: int(x.replace('.png', '').split('/')[-1].split('_')[1])) + st.image([to_base64(PIL.Image.open(c)) for c in sorted_concepts], width=75) + activations = [to_base64(PIL.Image.fromarray(iv.pytorch_masked_image( + (sample[0, ..., img_slices[slice]]).repeat(3, 1, 1), + acts[..., slice], + detector, + level=unit_levels[detector]).permute(1,2,0).cpu().numpy())) for slice in range(0, ld_res)] + st.caption("Image-specific activation") + st.image(activations, width=75) + + st.markdown('
', unsafe_allow_html=True) + + def on_click(*args, **kwargs): + # force reload of the page to reset internal state + st.markdown('', unsafe_allow_html=True) + + st.button("Reset", on_click=on_click) \ No newline at end of file diff --git a/backbones/__init__.py b/backbones/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..f8aab7393ffd41cdf050814b071266cac9ac01f0 --- /dev/null +++ b/backbones/__init__.py @@ -0,0 +1,93 @@ +import os +import torch + +from monai.networks.nets import DenseNet121, DenseNet169, DenseNet201, DenseNet264 +from backbones.unet3d import UNet3D + +import utils.config + +def _freeze_layers_if_any(model, hparams): + if len(hparams.frozen_layers) == 0: + return model + + for (name, param) in model.named_parameters(): + if any([name.startswith(to_freeze_name) for to_freeze_name in hparams.frozen_layers]): + param.requires_grad = False + + return model + +def _replace_inplace_operations(model): + # Grad-CAM compatibility + for module in model.modules(): + if hasattr(module, "inplace"): + setattr(module, "inplace", False) + return model + +def get_backbone(hparams): + backbone = None + + in_channels = 1 + (hparams.mask == 'channel') + hparams.input_dim * hparams.coordinates + + if hparams.model_name.startswith('DenseNet'): + if hparams.model_name == "DenseNet121": + net_selection = DenseNet121 + elif hparams.model_name == "DenseNet169": + net_selection = DenseNet169 + elif hparams.model_name == "DenseNet201": + net_selection = DenseNet201 + elif hparams.model_name == "DenseNet264": + net_selection = DenseNet264 + else: + raise ValueError(f"Unknown DenseNet: {hparams.model_name}") + + backbone = net_selection( + spatial_dims = hparams.input_dim, + in_channels = in_channels, + out_channels = hparams.num_classes - (hparams.loss == 'ordinal_regression'), + dropout_prob = hparams.dropout, + act = ("relu", {"inplace": False}) # inplace has to be set to False to enable use of Grad-CAM + ) + + # ensure activation maps are not shrunk too much + backbone.features.transition2.pool = torch.nn.Identity() + backbone.features.transition3.pool = torch.nn.Identity() + + elif hparams.model_name.lower().startswith("resne"): + # if you use pre-trained models, please add "pretrained_resnet" to the transforms hyperparameter + backbone = torch.hub.load('pytorch/vision:v0.10.0', hparams.model_name, pretrained=hparams.model_name.lower().endswith('-pretrained')) + + # reset final fully connected layer to expected number of classes + backbone.fc.out_features = hparams.num_classes - (hparams.loss == 'ordinal_regression') + + elif hparams.model_name == 'ModelsGenesis': + backbone = UNet3D( + in_channels=in_channels, + input_size=hparams.input_size, + n_class=hparams.num_classes - (hparams.loss == 'ordinal_regression') + ) + + weight_dir = os.path.join('data_sl', utils.config.globals["MODELS_GENESIS_PATH"]) + + checkpoint = torch.load(weight_dir,map_location=torch.device('cpu')) + state_dict = checkpoint['state_dict'] + unparalled_state_dict = {} + + for key in state_dict.keys(): + unparalled_state_dict[key.replace("module.", "")] = state_dict[key] + + backbone.load_state_dict(unparalled_state_dict, strict=False) + + elif hparams.model_name == 'UNet3D': + # this is the architecture of Models Genesis minus the pretraining + backbone = UNet3D( + in_channels=in_channels, + input_size=hparams.input_size, + n_class=hparams.num_classes - (hparams.loss == 'ordinal_regression') + ) + else: + raise NotImplementedError + + backbone = _replace_inplace_operations(backbone) + backbone = _freeze_layers_if_any(backbone, hparams) + + return backbone \ No newline at end of file diff --git a/backbones/classifier.py b/backbones/classifier.py new file mode 100644 index 0000000000000000000000000000000000000000..bcd59e07cc8fe1249e542d325b9b59e258b5d718 --- /dev/null +++ b/backbones/classifier.py @@ -0,0 +1,80 @@ +import torch.nn as nn + +class LinearBlock(nn.Module): + def __init__(self, in_channels, out_channels): + super(LinearBlock, self).__init__() + self.linear_block = nn.Sequential( + nn.Linear(in_channels, out_channels), + nn.BatchNorm1d(out_channels), + nn.LeakyReLU() + ) + + def forward(self, x): + x = self.linear_block(x) + return x + +class FracClassifier(nn.Module): + + def __init__( + self, + encoder_channels, + classifier_channels=(256, 128, 64), + final_channels=2, + linear_kernel=4096, + p = 0. + ): + super(FracClassifier, self).__init__() + + # resnet gives + self.linear_kernel = linear_kernel + self.initial_conv = nn.Conv3d(encoder_channels, 256, kernel_size=3,stride=1, padding=1) + self.bn_init = nn.InstanceNorm3d(256, affine=True) + self.drop_1 = nn.Dropout(p=p) + + self.initial_conv1 = nn.Conv3d(256, 128, kernel_size=3,stride=1, padding=1) + self.bn_init1 = nn.InstanceNorm3d(128, affine=True) + self.drop_2 = nn.Dropout(p=p) + + self.initial_conv2 = nn.Conv3d(128, 64, kernel_size=3,stride=1, padding=1) + self.bn_init2 = nn.InstanceNorm3d(64, affine=True) + self.drop_3 = nn.Dropout(p=p) + + self.initial_conv3 = nn.Conv3d(64, 8, kernel_size=3,stride=1, padding=1) + self.bn_init3 = nn.InstanceNorm3d(8, affine=True) + self.drop_4 = nn.Dropout(p=p) + + self.vector_shape = encoder_channels + self.layer1 = LinearBlock(self.linear_kernel, classifier_channels[0]) + self.drop_5 = nn.Dropout(p=p) + + self.layer2 = LinearBlock(classifier_channels[0], classifier_channels[1]) + self.drop_6 = nn.Dropout(p=p) + + self.layer3 = LinearBlock(classifier_channels[1], classifier_channels[2]) + self.drop_7 = nn.Dropout(p=p) + + self.final_dense = nn.Linear(classifier_channels[2], final_channels) + # initialization of weights dropped as pytorch already uses them (now) + + + def forward(self, x): + x = self.initial_conv(x) + x = self.drop_1(self.bn_init(x)) + + x = self.initial_conv1(x) + x = self.drop_2(self.bn_init1(x)) + + x = self.initial_conv2(x) + x = self.drop_3(self.bn_init2(x)) + + x = self.initial_conv3(x) + x = self.drop_4(self.bn_init3(x)) + + x = x.view(x.shape[0], -1) + + x = self.drop_5(self.layer1(x)) + x = self.drop_6(self.layer2(x)) + x = self.drop_7(self.layer3(x)) + x = self.final_dense(x) + + return x \ No newline at end of file diff --git a/backbones/unet3d.py b/backbones/unet3d.py new file mode 100644 index 0000000000000000000000000000000000000000..8ab23b67bead4dc106dfe80d3d6feee3a4844bbd --- /dev/null +++ b/backbones/unet3d.py @@ -0,0 +1,116 @@ +# Used for Models Genesis +import math +import torch +import torch.nn as nn +import torch.nn.functional as F + +from backbones.classifier import FracClassifier + + +class ContBatchNorm3d(nn.modules.batchnorm._BatchNorm): + def _check_input_dim(self, input): + + if input.dim() != 5: + raise ValueError('expected 5D input (got {}D input)'.format(input.dim())) + + def forward(self, input): + self._check_input_dim(input) + return F.batch_norm( + input, self.running_mean, self.running_var, self.weight, self.bias, + True, self.momentum, self.eps) + + +class LUConv(nn.Module): + def __init__(self, in_chan, out_chan, act): + super(LUConv, self).__init__() + self.conv1 = nn.Conv3d(in_chan, out_chan, kernel_size=3, padding=1) + self.bn1 = ContBatchNorm3d(out_chan) + + if act == 'relu': + self.activation = nn.ReLU(out_chan) + elif act == 'prelu': + self.activation = nn.PReLU(out_chan) + elif act == 'elu': + self.activation = nn.ELU(inplace=True) + else: + raise + + def forward(self, x): + out = self.activation(self.bn1(self.conv1(x))) + return out + + +def _make_nConv(in_channel, depth, act, double_chnnel=False): + if double_chnnel: + layer1 = LUConv(in_channel, 32 * (2 ** (depth+1)),act) + layer2 = LUConv(32 * (2 ** (depth+1)), 32 * (2 ** (depth+1)),act) + else: + layer1 = LUConv(in_channel, 32*(2**depth),act) + layer2 = LUConv(32*(2**depth), 32*(2**depth)*2,act) + + return nn.Sequential(layer1,layer2) + +class DownTransition(nn.Module): + def __init__(self, in_channel,depth, act): + super(DownTransition, self).__init__() + self.ops = _make_nConv(in_channel, depth,act) + self.maxpool = nn.MaxPool3d(2) + self.current_depth = depth + + def forward(self, x): + if self.current_depth == 3: + out = self.ops(x) + out_before_pool = out + else: + out_before_pool = self.ops(x) + out = self.maxpool(out_before_pool) + return out, out_before_pool + +class UpTransition(nn.Module): + def __init__(self, inChans, outChans, depth,act): + super(UpTransition, self).__init__() + self.depth = depth + self.up_conv = nn.ConvTranspose3d(inChans, outChans, kernel_size=2, stride=2) + self.ops = _make_nConv(inChans+ outChans//2,depth, act, double_chnnel=True) + + def forward(self, x, skip_x): + out_up_conv = self.up_conv(x) + concat = torch.cat((out_up_conv,skip_x),1) + out = self.ops(concat) + return out + + +class OutputTransition(nn.Module): + def __init__(self, inChans, n_labels): + + super(OutputTransition, self).__init__() + self.final_conv = nn.Conv3d(inChans, n_labels, kernel_size=1) + #self.sigmoid = nn.Sigmoid() + + def forward(self, x): + out = torch.sigmoid(self.final_conv(x)) + return out + +class UNet3D(nn.Module): + # the number of convolutions in each layer corresponds + # to what is in the actual prototxt, not the intent + def __init__(self, input_size, n_class=1, act='relu', in_channels=1): + super(UNet3D, self).__init__() + + self.down_tr64 = DownTransition(in_channels,0,act) + self.down_tr128 = DownTransition(64,1,act) + self.down_tr256 = DownTransition(128,2,act) + self.down_tr512 = DownTransition(256,3,act) + + # Classification + self.classifier = FracClassifier(encoder_channels=512, final_channels=n_class, linear_kernel=int(math.pow(input_size / 32, 3) * 512)) + + def forward(self, x): + self.out64, _ = self.down_tr64(x) + self.out128, _ = self.down_tr128(self.out64) + self.out256, _ = self.down_tr256(self.out128) + self.out512, _ = self.down_tr512(self.out256) + + self.out = self.classifier(self.out512) + + return self.out \ No newline at end of file diff --git a/concepts/0_0.png b/concepts/0_0.png new file mode 100644 index 0000000000000000000000000000000000000000..d990a9168599157e833b14fa631774fd15fafd14 Binary files /dev/null and b/concepts/0_0.png differ diff --git a/concepts/0_1.png b/concepts/0_1.png new file mode 100644 index 0000000000000000000000000000000000000000..ab74ca02f5704800b072698637c6747605c78fee Binary files /dev/null and b/concepts/0_1.png differ diff --git a/concepts/0_10.png b/concepts/0_10.png new file mode 100644 index 0000000000000000000000000000000000000000..f2ee5e0914eda85299c11bf7a0ad02166a7163b3 Binary files /dev/null and b/concepts/0_10.png differ diff --git a/concepts/0_11.png b/concepts/0_11.png new file mode 100644 index 0000000000000000000000000000000000000000..4ba735fae748711ded45460bdd21f7a7371ee83f Binary files /dev/null and b/concepts/0_11.png differ diff --git a/concepts/0_2.png b/concepts/0_2.png new file mode 100644 index 0000000000000000000000000000000000000000..737a3688a56c8d57d3d3b06dfa1f1a21cbda49ef Binary files /dev/null and b/concepts/0_2.png differ diff --git a/concepts/0_3.png b/concepts/0_3.png new file mode 100644 index 0000000000000000000000000000000000000000..f40e88c52996e9c73665451cd28176d6c6ee46ac Binary files /dev/null and b/concepts/0_3.png differ diff --git a/concepts/0_8.png b/concepts/0_8.png new file mode 100644 index 0000000000000000000000000000000000000000..b3d545d3177b6e8e45a0b65f18411765825a2c25 Binary files /dev/null and b/concepts/0_8.png differ diff --git a/concepts/0_9.png b/concepts/0_9.png new file mode 100644 index 0000000000000000000000000000000000000000..fb10b8fc8c2f6740ceeeec20cfe13c6174a27127 Binary files /dev/null and b/concepts/0_9.png differ diff --git a/concepts/100_0.png b/concepts/100_0.png new file mode 100644 index 0000000000000000000000000000000000000000..3ffe2610a839ad6d74b939cc485b64fb117c0ab6 Binary files /dev/null and b/concepts/100_0.png differ diff --git a/concepts/100_2.png b/concepts/100_2.png new file mode 100644 index 0000000000000000000000000000000000000000..9e0142655341aad26207ea7d4838affb2728868e Binary files /dev/null and b/concepts/100_2.png differ diff --git a/concepts/100_4.png b/concepts/100_4.png new file mode 100644 index 0000000000000000000000000000000000000000..f4b257e1af41aae70eba6203154badcfe11080ee Binary files /dev/null and b/concepts/100_4.png differ diff --git a/concepts/100_5.png b/concepts/100_5.png new file mode 100644 index 0000000000000000000000000000000000000000..4e49c2bebacda573c6e4de5bf59658c2083e9280 Binary files /dev/null and b/concepts/100_5.png differ diff --git a/concepts/100_6.png b/concepts/100_6.png new file mode 100644 index 0000000000000000000000000000000000000000..dc44a91aa79e13fec01edb6923173eb598f52d4a Binary files /dev/null and b/concepts/100_6.png differ diff --git a/concepts/100_7.png b/concepts/100_7.png new file mode 100644 index 0000000000000000000000000000000000000000..17bee03b8664a0f51bdf54c06329c33ef849515c Binary files /dev/null and b/concepts/100_7.png differ diff --git a/concepts/100_8.png b/concepts/100_8.png new file mode 100644 index 0000000000000000000000000000000000000000..4f361b8912093f0d1f2de7aca5e18509b5fd503d Binary files /dev/null and b/concepts/100_8.png differ diff --git a/concepts/100_9.png b/concepts/100_9.png new file mode 100644 index 0000000000000000000000000000000000000000..823440b9fc1c6da4b543c5b05092d354677b73cc Binary files /dev/null and b/concepts/100_9.png differ diff --git a/concepts/101_0.png b/concepts/101_0.png new file mode 100644 index 0000000000000000000000000000000000000000..d1d9a5d8e97009a9cd6c8497aa6a1e2f20501a4f Binary files /dev/null and b/concepts/101_0.png differ diff --git a/concepts/101_1.png b/concepts/101_1.png new file mode 100644 index 0000000000000000000000000000000000000000..64602af895eb8b3e74b3f07a872fc791d083f5f1 Binary files /dev/null and b/concepts/101_1.png differ diff --git a/concepts/101_10.png b/concepts/101_10.png new file mode 100644 index 0000000000000000000000000000000000000000..3983992a2e81d4c5ad10e2d6ba334a4ed6c73d05 Binary files /dev/null and b/concepts/101_10.png differ diff --git a/concepts/101_2.png b/concepts/101_2.png new file mode 100644 index 0000000000000000000000000000000000000000..a9ca3d72aca2511b1bfe3afd06b6be123488b9f9 Binary files /dev/null and b/concepts/101_2.png differ diff --git a/concepts/101_3.png b/concepts/101_3.png new file mode 100644 index 0000000000000000000000000000000000000000..28ba8882e298064da53918aeb8726385b3d792fb Binary files /dev/null and b/concepts/101_3.png differ diff --git a/concepts/101_6.png b/concepts/101_6.png new file mode 100644 index 0000000000000000000000000000000000000000..9e61547817ba64d9151393cfd476dbc8c449df03 Binary files /dev/null and b/concepts/101_6.png differ diff --git a/concepts/101_8.png b/concepts/101_8.png new file mode 100644 index 0000000000000000000000000000000000000000..a214f79ea99523c9c1f3b80bc91ecca72dc63b70 Binary files /dev/null and b/concepts/101_8.png differ diff --git a/concepts/101_9.png b/concepts/101_9.png new file mode 100644 index 0000000000000000000000000000000000000000..c9d34f02f6778bf4a90583a7a7c39dfeea7140f8 Binary files /dev/null and b/concepts/101_9.png differ diff --git a/concepts/102_0.png b/concepts/102_0.png new file mode 100644 index 0000000000000000000000000000000000000000..7536887f8e54a0bf122c171ee990fa27179caa44 Binary files /dev/null and b/concepts/102_0.png differ diff --git a/concepts/102_1.png b/concepts/102_1.png new file mode 100644 index 0000000000000000000000000000000000000000..0eeb6772f54ddcf42d34616b95342eb6026178d5 Binary files /dev/null and b/concepts/102_1.png differ diff --git a/concepts/102_10.png b/concepts/102_10.png new file mode 100644 index 0000000000000000000000000000000000000000..0be6b630f4130a953a29e33e07fb7809c449d588 Binary files /dev/null and b/concepts/102_10.png differ diff --git a/concepts/102_13.png b/concepts/102_13.png new file mode 100644 index 0000000000000000000000000000000000000000..f0e50778556fe7c2ca27451ac3360e6560f6f528 Binary files /dev/null and b/concepts/102_13.png differ diff --git a/concepts/102_2.png b/concepts/102_2.png new file mode 100644 index 0000000000000000000000000000000000000000..48b69db143fb4453080a042c1d6e301055ebb0e4 Binary files /dev/null and b/concepts/102_2.png differ diff --git a/concepts/102_5.png b/concepts/102_5.png new file mode 100644 index 0000000000000000000000000000000000000000..f0df4b5336fb56a01556612afbc091b859804ed2 Binary files /dev/null and b/concepts/102_5.png differ diff --git a/concepts/102_7.png b/concepts/102_7.png new file mode 100644 index 0000000000000000000000000000000000000000..b12df8116f0ffee2639336eb7373342552bf746a Binary files /dev/null and b/concepts/102_7.png differ diff --git a/concepts/102_8.png b/concepts/102_8.png new file mode 100644 index 0000000000000000000000000000000000000000..518ba6924d67f59dcd1adff6855634fa666e3c5c Binary files /dev/null and b/concepts/102_8.png differ diff --git a/concepts/103_0.png b/concepts/103_0.png new file mode 100644 index 0000000000000000000000000000000000000000..21cf3e9ee51de84ee2a527ac8800ea6b68c7b907 Binary files /dev/null and b/concepts/103_0.png differ diff --git a/concepts/103_1.png b/concepts/103_1.png new file mode 100644 index 0000000000000000000000000000000000000000..b90b27c9159ba365353f210a104dfc61827a659e Binary files /dev/null and b/concepts/103_1.png differ diff --git a/concepts/103_2.png b/concepts/103_2.png new file mode 100644 index 0000000000000000000000000000000000000000..e1d971c12345cf1bc2de292f0e12325bb4c36eae Binary files /dev/null and b/concepts/103_2.png differ diff --git a/concepts/103_3.png b/concepts/103_3.png new file mode 100644 index 0000000000000000000000000000000000000000..72af2743a3be75a60b547eb9fe1e435e5d94d59e Binary files /dev/null and b/concepts/103_3.png differ diff --git a/concepts/103_4.png b/concepts/103_4.png new file mode 100644 index 0000000000000000000000000000000000000000..77d21b63a24d90d8c7e8cc9b1bda586cc2bc6680 Binary files /dev/null and b/concepts/103_4.png differ diff --git a/concepts/103_7.png b/concepts/103_7.png new file mode 100644 index 0000000000000000000000000000000000000000..d3a53c6475a9469e152092490f20bb2b98caa24c Binary files /dev/null and b/concepts/103_7.png differ diff --git a/concepts/103_8.png b/concepts/103_8.png new file mode 100644 index 0000000000000000000000000000000000000000..369b1cd90d473f433e5408748ed478f6934aad0e Binary files /dev/null and b/concepts/103_8.png differ diff --git a/concepts/103_9.png b/concepts/103_9.png new file mode 100644 index 0000000000000000000000000000000000000000..b46e716e5287f1a8cb3f7f4b0e40ceaa1a3b431f Binary files /dev/null and b/concepts/103_9.png differ diff --git a/concepts/104_0.png b/concepts/104_0.png new file mode 100644 index 0000000000000000000000000000000000000000..e110b16ad9d26b072436aa4198c6bb198f0b115f Binary files /dev/null and b/concepts/104_0.png differ diff --git a/concepts/104_1.png b/concepts/104_1.png new file mode 100644 index 0000000000000000000000000000000000000000..0476ab6a525f45cd551d66e86846b9cd5797bee8 Binary files /dev/null and b/concepts/104_1.png differ diff --git a/concepts/104_10.png b/concepts/104_10.png new file mode 100644 index 0000000000000000000000000000000000000000..49ac80b7f443352e67921defa4463b7983c3fb68 Binary files /dev/null and b/concepts/104_10.png differ diff --git a/concepts/104_2.png b/concepts/104_2.png new file mode 100644 index 0000000000000000000000000000000000000000..610feba9cc499793b8c2ad2a221208c37d2b8249 Binary files /dev/null and b/concepts/104_2.png differ diff --git a/concepts/104_4.png b/concepts/104_4.png new file mode 100644 index 0000000000000000000000000000000000000000..4f7a919bbb969fa4b01d0251b614fac3dd1210aa Binary files /dev/null and b/concepts/104_4.png differ diff --git a/concepts/104_5.png b/concepts/104_5.png new file mode 100644 index 0000000000000000000000000000000000000000..b7555b4047bce643ed85e0e07ab502bb5af9f2dc Binary files /dev/null and b/concepts/104_5.png differ diff --git a/concepts/104_6.png b/concepts/104_6.png new file mode 100644 index 0000000000000000000000000000000000000000..92fdd53f9019905b45b6dc752b875f753c1eb2c0 Binary files /dev/null and b/concepts/104_6.png differ diff --git a/concepts/104_8.png b/concepts/104_8.png new file mode 100644 index 0000000000000000000000000000000000000000..1cc7fa58aab22935fe4f7400fe191c8ac1c19ab5 Binary files /dev/null and b/concepts/104_8.png differ diff --git a/concepts/105_10.png b/concepts/105_10.png new file mode 100644 index 0000000000000000000000000000000000000000..a2f1f6b68586f5577f66a3cfa44a3921bda37336 Binary files /dev/null and b/concepts/105_10.png differ diff --git a/concepts/105_2.png b/concepts/105_2.png new file mode 100644 index 0000000000000000000000000000000000000000..75a2167c6799ef79f42dd360d0b49647cf5e32c2 Binary files /dev/null and b/concepts/105_2.png differ diff --git a/concepts/105_4.png b/concepts/105_4.png new file mode 100644 index 0000000000000000000000000000000000000000..a1ff17c461359f284bb901a6b7ffd306288c296c Binary files /dev/null and b/concepts/105_4.png differ diff --git a/concepts/105_5.png b/concepts/105_5.png new file mode 100644 index 0000000000000000000000000000000000000000..eb4527627fe87ffc47908e581511f03e97518dd4 Binary files /dev/null and b/concepts/105_5.png differ diff --git a/concepts/105_6.png b/concepts/105_6.png new file mode 100644 index 0000000000000000000000000000000000000000..a958ce1e626be34a7df0e4c9322ee0717c91cc75 Binary files /dev/null and b/concepts/105_6.png differ diff --git a/concepts/105_7.png b/concepts/105_7.png new file mode 100644 index 0000000000000000000000000000000000000000..ac0d2bb0f1e73b1a4689004afa8e1d911962411a Binary files /dev/null and b/concepts/105_7.png differ diff --git a/concepts/105_8.png b/concepts/105_8.png new file mode 100644 index 0000000000000000000000000000000000000000..399071d2706a3b86a318a09eaacaf4b32bcf27a1 Binary files /dev/null and b/concepts/105_8.png differ diff --git a/concepts/105_9.png b/concepts/105_9.png new file mode 100644 index 0000000000000000000000000000000000000000..0ef967d4b6706294ce26c9d0fdbb4a6454ea5834 Binary files /dev/null and b/concepts/105_9.png differ diff --git a/concepts/106_0.png b/concepts/106_0.png new file mode 100644 index 0000000000000000000000000000000000000000..fcb6de95fbeb9ea1c0b56a9fd4201e7d1748d42b Binary files /dev/null and b/concepts/106_0.png differ diff --git a/concepts/106_1.png b/concepts/106_1.png new file mode 100644 index 0000000000000000000000000000000000000000..319b02727008bf045dba5f5510fd8c3e445ee4d5 Binary files /dev/null and b/concepts/106_1.png differ diff --git a/concepts/106_11.png b/concepts/106_11.png new file mode 100644 index 0000000000000000000000000000000000000000..1308ebcdc665d4aa539223c0737742f6bfab83f7 Binary files /dev/null and b/concepts/106_11.png differ diff --git a/concepts/106_3.png b/concepts/106_3.png new file mode 100644 index 0000000000000000000000000000000000000000..453e51f571a1e4ca68829f48973e5b244fc3f080 Binary files /dev/null and b/concepts/106_3.png differ diff --git a/concepts/106_4.png b/concepts/106_4.png new file mode 100644 index 0000000000000000000000000000000000000000..b9a1b430a2a58997c1161c95349fa8edd70b2714 Binary files /dev/null and b/concepts/106_4.png differ diff --git a/concepts/106_5.png b/concepts/106_5.png new file mode 100644 index 0000000000000000000000000000000000000000..6d35d28efbc80d937634a5c92f8be547da17b4d4 Binary files /dev/null and b/concepts/106_5.png differ diff --git a/concepts/106_7.png b/concepts/106_7.png new file mode 100644 index 0000000000000000000000000000000000000000..08f1d356dfd3314020f4211ed1cf930a10ba0d46 Binary files /dev/null and b/concepts/106_7.png differ diff --git a/concepts/106_8.png b/concepts/106_8.png new file mode 100644 index 0000000000000000000000000000000000000000..c2eb67a4baf1aae094580dc26f3e421382fc792a Binary files /dev/null and b/concepts/106_8.png differ diff --git a/concepts/107_1.png b/concepts/107_1.png new file mode 100644 index 0000000000000000000000000000000000000000..86c14c43c0ea40bf4b8871c2217478e1e2cffc91 Binary files /dev/null and b/concepts/107_1.png differ diff --git a/concepts/107_12.png b/concepts/107_12.png new file mode 100644 index 0000000000000000000000000000000000000000..afd0f8620b82e0aa7348c75b083d55d0be8f1857 Binary files /dev/null and b/concepts/107_12.png differ diff --git a/concepts/107_13.png b/concepts/107_13.png new file mode 100644 index 0000000000000000000000000000000000000000..d074d2dc9fed27037dbb8280eaa9fd969249371c Binary files /dev/null and b/concepts/107_13.png differ diff --git a/concepts/107_15.png b/concepts/107_15.png new file mode 100644 index 0000000000000000000000000000000000000000..373625e71c620de719c0a422109b0b170884aa0a Binary files /dev/null and b/concepts/107_15.png differ diff --git a/concepts/107_20.png b/concepts/107_20.png new file mode 100644 index 0000000000000000000000000000000000000000..f2acb11146326f5ebd354eca7e6d25de4b53d0a8 Binary files /dev/null and b/concepts/107_20.png differ diff --git a/concepts/107_21.png b/concepts/107_21.png new file mode 100644 index 0000000000000000000000000000000000000000..6eff389f0a8e86b09798437c711b4e67b2d757d3 Binary files /dev/null and b/concepts/107_21.png differ diff --git a/concepts/107_6.png b/concepts/107_6.png new file mode 100644 index 0000000000000000000000000000000000000000..e3cbd53a56c35c69c0468f683985e6c026038ee9 Binary files /dev/null and b/concepts/107_6.png differ diff --git a/concepts/107_8.png b/concepts/107_8.png new file mode 100644 index 0000000000000000000000000000000000000000..7071b2a1da7c3a5f2b1739ab07db4777e9789966 Binary files /dev/null and b/concepts/107_8.png differ diff --git a/concepts/108_0.png b/concepts/108_0.png new file mode 100644 index 0000000000000000000000000000000000000000..4ec7141382273ed06cf2f9b1d69df27583e7f087 Binary files /dev/null and b/concepts/108_0.png differ diff --git a/concepts/108_1.png b/concepts/108_1.png new file mode 100644 index 0000000000000000000000000000000000000000..d852633139f6614da40e2f09d4486e2b5f0f6bdc Binary files /dev/null and b/concepts/108_1.png differ diff --git a/concepts/108_2.png b/concepts/108_2.png new file mode 100644 index 0000000000000000000000000000000000000000..f93c1cd127b710441bd7f638f60adf58b227df1f Binary files /dev/null and b/concepts/108_2.png differ diff --git a/concepts/108_3.png b/concepts/108_3.png new file mode 100644 index 0000000000000000000000000000000000000000..a952c57a2c59c2196e98bbe25c2683641c1ad3de Binary files /dev/null and b/concepts/108_3.png differ diff --git a/concepts/108_4.png b/concepts/108_4.png new file mode 100644 index 0000000000000000000000000000000000000000..070cd855065d7ce0fbb1612a3327443005cf8c4e Binary files /dev/null and b/concepts/108_4.png differ diff --git a/concepts/108_5.png b/concepts/108_5.png new file mode 100644 index 0000000000000000000000000000000000000000..078c450058ec15a5480ba4d388dadcdf4809abdf Binary files /dev/null and b/concepts/108_5.png differ diff --git a/concepts/108_6.png b/concepts/108_6.png new file mode 100644 index 0000000000000000000000000000000000000000..23b5ec78f9762a30dee7a976b18f14e8024e035a Binary files /dev/null and b/concepts/108_6.png differ diff --git a/concepts/108_8.png b/concepts/108_8.png new file mode 100644 index 0000000000000000000000000000000000000000..90600e28582ec577190276523d9ff502a3f25f89 Binary files /dev/null and b/concepts/108_8.png differ diff --git a/concepts/109_0.png b/concepts/109_0.png new file mode 100644 index 0000000000000000000000000000000000000000..1ab79d329fa21ad8c22164b795448372c9f9bab5 Binary files /dev/null and b/concepts/109_0.png differ diff --git a/concepts/109_1.png b/concepts/109_1.png new file mode 100644 index 0000000000000000000000000000000000000000..3fd8ca25624f5581e5d920dab877d7ed82a2c379 Binary files /dev/null and b/concepts/109_1.png differ diff --git a/concepts/109_10.png b/concepts/109_10.png new file mode 100644 index 0000000000000000000000000000000000000000..0369526e965c8bf227b54f883417812a1d401e6a Binary files /dev/null and b/concepts/109_10.png differ diff --git a/concepts/109_2.png b/concepts/109_2.png new file mode 100644 index 0000000000000000000000000000000000000000..9cbde7fb3c43ac7908d5a85fd1a9ec07f5c9f034 Binary files /dev/null and b/concepts/109_2.png differ diff --git a/concepts/109_3.png b/concepts/109_3.png new file mode 100644 index 0000000000000000000000000000000000000000..c60d579024b5fefe69cc3594a71370abefa6c612 Binary files /dev/null and b/concepts/109_3.png differ diff --git a/concepts/109_4.png b/concepts/109_4.png new file mode 100644 index 0000000000000000000000000000000000000000..b1d95304f9add5cf00a90a57095bb7bcb0c4ac2f Binary files /dev/null and b/concepts/109_4.png differ diff --git a/concepts/109_6.png b/concepts/109_6.png new file mode 100644 index 0000000000000000000000000000000000000000..742aef842b65486809b6e0349c6dfc5c7ffe94d2 Binary files /dev/null and b/concepts/109_6.png differ diff --git a/concepts/109_8.png b/concepts/109_8.png new file mode 100644 index 0000000000000000000000000000000000000000..52f672fb777c44ac843abadd46a62aeae1a50c55 Binary files /dev/null and b/concepts/109_8.png differ diff --git a/concepts/110_0.png b/concepts/110_0.png new file mode 100644 index 0000000000000000000000000000000000000000..380e60e4fbc9c0d0b0e1cbcec19c9c39732245c5 Binary files /dev/null and b/concepts/110_0.png differ diff --git a/concepts/110_14.png b/concepts/110_14.png new file mode 100644 index 0000000000000000000000000000000000000000..8fe8af5d3645bb6188b7ca9da8971bf4d543fc3e Binary files /dev/null and b/concepts/110_14.png differ diff --git a/concepts/110_17.png b/concepts/110_17.png new file mode 100644 index 0000000000000000000000000000000000000000..429ea8444ce6d643f42e5688c27b36dacd673fed Binary files /dev/null and b/concepts/110_17.png differ diff --git a/concepts/110_3.png b/concepts/110_3.png new file mode 100644 index 0000000000000000000000000000000000000000..bbd32cb9def25b299b6fca1e10ecacc783815a29 Binary files /dev/null and b/concepts/110_3.png differ diff --git a/concepts/110_5.png b/concepts/110_5.png new file mode 100644 index 0000000000000000000000000000000000000000..821fc3682b8af64f414b5e4de9fc498059e6a2d9 Binary files /dev/null and b/concepts/110_5.png differ diff --git a/concepts/110_6.png b/concepts/110_6.png new file mode 100644 index 0000000000000000000000000000000000000000..b647d6b1753c2c6daca68453fb386a6b66f1c0f2 Binary files /dev/null and b/concepts/110_6.png differ diff --git a/concepts/110_8.png b/concepts/110_8.png new file mode 100644 index 0000000000000000000000000000000000000000..914eb350195c8d508ac92db7fe62372edca31c12 Binary files /dev/null and b/concepts/110_8.png differ diff --git a/concepts/110_9.png b/concepts/110_9.png new file mode 100644 index 0000000000000000000000000000000000000000..9277b71592e6dab8042ec43ebe1336d24d963cd7 Binary files /dev/null and b/concepts/110_9.png differ diff --git a/concepts/111_0.png b/concepts/111_0.png new file mode 100644 index 0000000000000000000000000000000000000000..01aadf5be6e96953f55ad3a4dc9a922fb01af5fa Binary files /dev/null and b/concepts/111_0.png differ diff --git a/concepts/111_1.png b/concepts/111_1.png new file mode 100644 index 0000000000000000000000000000000000000000..ea2b45ed9c887a192377508eb05508db3ba16d04 Binary files /dev/null and b/concepts/111_1.png differ diff --git a/concepts/111_14.png b/concepts/111_14.png new file mode 100644 index 0000000000000000000000000000000000000000..3c8648dba9d7bca6a13d299a55aa1cad7711661a Binary files /dev/null and b/concepts/111_14.png differ diff --git a/concepts/111_4.png b/concepts/111_4.png new file mode 100644 index 0000000000000000000000000000000000000000..5d2fb836c4e03130c401ea8b2993e94df7eb3fc9 Binary files /dev/null and b/concepts/111_4.png differ diff --git a/concepts/111_5.png b/concepts/111_5.png new file mode 100644 index 0000000000000000000000000000000000000000..dc360eec460646dfa0a2ce6eca1b652df989e3ad Binary files /dev/null and b/concepts/111_5.png differ diff --git a/concepts/111_6.png b/concepts/111_6.png new file mode 100644 index 0000000000000000000000000000000000000000..e2e9f136e0bd3c845427ed9bc2f9e6a81c888733 Binary files /dev/null and b/concepts/111_6.png differ diff --git a/concepts/111_8.png b/concepts/111_8.png new file mode 100644 index 0000000000000000000000000000000000000000..b636f655712a9e3925cffa2e6a86b04d50fc1784 Binary files /dev/null and b/concepts/111_8.png differ diff --git a/concepts/111_9.png b/concepts/111_9.png new file mode 100644 index 0000000000000000000000000000000000000000..bac66ec3d20227f052aed778d822658be24d9610 Binary files /dev/null and b/concepts/111_9.png differ diff --git a/concepts/112_0.png b/concepts/112_0.png new file mode 100644 index 0000000000000000000000000000000000000000..6c899b20f160ed89e68feea6bad34f1aa7365251 Binary files /dev/null and b/concepts/112_0.png differ diff --git a/concepts/112_1.png b/concepts/112_1.png new file mode 100644 index 0000000000000000000000000000000000000000..2486eaee58f48657a106006c4f4b452b19cb6cef Binary files /dev/null and b/concepts/112_1.png differ diff --git a/concepts/112_11.png b/concepts/112_11.png new file mode 100644 index 0000000000000000000000000000000000000000..425040bf41a0d2a782390ea86b8045132c33c4f3 Binary files /dev/null and b/concepts/112_11.png differ diff --git a/concepts/112_2.png b/concepts/112_2.png new file mode 100644 index 0000000000000000000000000000000000000000..4c605d61ca74a7712df1695fee68d2827deba7a6 Binary files /dev/null and b/concepts/112_2.png differ diff --git a/concepts/112_3.png b/concepts/112_3.png new file mode 100644 index 0000000000000000000000000000000000000000..82fcec0004b0515bdb85dfcbfa7b2df34f539b0c Binary files /dev/null and b/concepts/112_3.png differ diff --git a/concepts/112_6.png b/concepts/112_6.png new file mode 100644 index 0000000000000000000000000000000000000000..a0925779aeae7067ff902e5c8852d1eda47f153a Binary files /dev/null and b/concepts/112_6.png differ diff --git a/concepts/112_7.png b/concepts/112_7.png new file mode 100644 index 0000000000000000000000000000000000000000..443318ab7c2a4ad0bb90f463155c6cd268a79d34 Binary files /dev/null and b/concepts/112_7.png differ diff --git a/concepts/112_8.png b/concepts/112_8.png new file mode 100644 index 0000000000000000000000000000000000000000..5ced9b75e4227b3472775dfb5e0d1643a0f4f407 Binary files /dev/null and b/concepts/112_8.png differ diff --git a/concepts/114_0.png b/concepts/114_0.png new file mode 100644 index 0000000000000000000000000000000000000000..9999f22771ea1c8ef5cc7eb49fb22cf7e326eb89 Binary files /dev/null and b/concepts/114_0.png differ diff --git a/concepts/114_11.png b/concepts/114_11.png new file mode 100644 index 0000000000000000000000000000000000000000..8e86f8dbcbbeef4aed6a2bdf994cd832bc3c0503 Binary files /dev/null and b/concepts/114_11.png differ diff --git a/concepts/114_12.png b/concepts/114_12.png new file mode 100644 index 0000000000000000000000000000000000000000..5f0d1506f977f85fc38257ace67430466de2f894 Binary files /dev/null and b/concepts/114_12.png differ diff --git a/concepts/114_3.png b/concepts/114_3.png new file mode 100644 index 0000000000000000000000000000000000000000..415aaa20516d4e316efaf60bf4cb37cc852b64f1 Binary files /dev/null and b/concepts/114_3.png differ diff --git a/concepts/114_4.png b/concepts/114_4.png new file mode 100644 index 0000000000000000000000000000000000000000..5fe04e98001feb04f1af7a26d8d9738fbe4dd6fb Binary files /dev/null and b/concepts/114_4.png differ diff --git a/concepts/114_5.png b/concepts/114_5.png new file mode 100644 index 0000000000000000000000000000000000000000..0249d4a8ff3a4269d593d977e5db78727d30de6e Binary files /dev/null and b/concepts/114_5.png differ diff --git a/concepts/114_6.png b/concepts/114_6.png new file mode 100644 index 0000000000000000000000000000000000000000..1b23dcb6447feb27666b02aeae9173d140a3e4a9 Binary files /dev/null and b/concepts/114_6.png differ diff --git a/concepts/114_8.png b/concepts/114_8.png new file mode 100644 index 0000000000000000000000000000000000000000..83538cca01206463ff68a000043b0697c904f652 Binary files /dev/null and b/concepts/114_8.png differ diff --git a/concepts/115_0.png b/concepts/115_0.png new file mode 100644 index 0000000000000000000000000000000000000000..de13955df7090ac014cbac8ab5130559ce05ec90 Binary files /dev/null and b/concepts/115_0.png differ diff --git a/concepts/115_1.png b/concepts/115_1.png new file mode 100644 index 0000000000000000000000000000000000000000..9f75867954551b0bff6ce05f09a6784bc17f4e2a Binary files /dev/null and b/concepts/115_1.png differ diff --git a/concepts/115_10.png b/concepts/115_10.png new file mode 100644 index 0000000000000000000000000000000000000000..b4938bf55be4ff6db9ce72e927618528afe42baa Binary files /dev/null and b/concepts/115_10.png differ diff --git a/concepts/115_2.png b/concepts/115_2.png new file mode 100644 index 0000000000000000000000000000000000000000..2cf27d195f6e9f9d156039897f6f8232da37c84d Binary files /dev/null and b/concepts/115_2.png differ diff --git a/concepts/115_4.png b/concepts/115_4.png new file mode 100644 index 0000000000000000000000000000000000000000..2d71c5eb14e82cdf9e7ca862514b11fd324b1bf2 Binary files /dev/null and b/concepts/115_4.png differ diff --git a/concepts/115_5.png b/concepts/115_5.png new file mode 100644 index 0000000000000000000000000000000000000000..b97493e587ee90371aee02f78192322b907ee3ba Binary files /dev/null and b/concepts/115_5.png differ diff --git a/concepts/115_6.png b/concepts/115_6.png new file mode 100644 index 0000000000000000000000000000000000000000..d56f55ac562a552ab7f3a5e920420360f359bd11 Binary files /dev/null and b/concepts/115_6.png differ diff --git a/concepts/115_9.png b/concepts/115_9.png new file mode 100644 index 0000000000000000000000000000000000000000..d316b046c7061e3d5b3f09588c94b25a04b12ba8 Binary files /dev/null and b/concepts/115_9.png differ diff --git a/concepts/117_0.png b/concepts/117_0.png new file mode 100644 index 0000000000000000000000000000000000000000..5bfe98b2a24be9b5a08d4f289d438532703275b8 Binary files /dev/null and b/concepts/117_0.png differ diff --git a/concepts/117_2.png b/concepts/117_2.png new file mode 100644 index 0000000000000000000000000000000000000000..a224b24234614c8adf68216ef3fbb1a4dd61ef17 Binary files /dev/null and b/concepts/117_2.png differ diff --git a/concepts/117_3.png b/concepts/117_3.png new file mode 100644 index 0000000000000000000000000000000000000000..7db0c2064497aae61fb64c695f536f83f15e3673 Binary files /dev/null and b/concepts/117_3.png differ diff --git a/concepts/117_4.png b/concepts/117_4.png new file mode 100644 index 0000000000000000000000000000000000000000..594d935beeac7a8acc02d7380d437334466b7851 Binary files /dev/null and b/concepts/117_4.png differ diff --git a/concepts/117_6.png b/concepts/117_6.png new file mode 100644 index 0000000000000000000000000000000000000000..b89b2fa72c9199c390debb5d68b3555ec38bff98 Binary files /dev/null and b/concepts/117_6.png differ diff --git a/concepts/117_7.png b/concepts/117_7.png new file mode 100644 index 0000000000000000000000000000000000000000..54395d1c8ec30ef187af18c393876cfe4206063b Binary files /dev/null and b/concepts/117_7.png differ diff --git a/concepts/117_8.png b/concepts/117_8.png new file mode 100644 index 0000000000000000000000000000000000000000..c18a9d346913190c8b13a695a4f9ac8cfe678d52 Binary files /dev/null and b/concepts/117_8.png differ diff --git a/concepts/117_9.png b/concepts/117_9.png new file mode 100644 index 0000000000000000000000000000000000000000..b2312e19b49a871101fdcd6ceb348d0c65ba607b Binary files /dev/null and b/concepts/117_9.png differ diff --git a/concepts/118_0.png b/concepts/118_0.png new file mode 100644 index 0000000000000000000000000000000000000000..539481d1075541ed464941f70960be87698133ac Binary files /dev/null and b/concepts/118_0.png differ diff --git a/concepts/118_1.png b/concepts/118_1.png new file mode 100644 index 0000000000000000000000000000000000000000..e88a0ce47b19ffdb761925ec48311b073cb40ed3 Binary files /dev/null and b/concepts/118_1.png differ diff --git a/concepts/118_2.png b/concepts/118_2.png new file mode 100644 index 0000000000000000000000000000000000000000..fcf21e74df3b5e5d30bf47b212744c3428664d4f Binary files /dev/null and b/concepts/118_2.png differ diff --git a/concepts/118_3.png b/concepts/118_3.png new file mode 100644 index 0000000000000000000000000000000000000000..11f21239f30f354f0164fd54ddce8b117f897d59 Binary files /dev/null and b/concepts/118_3.png differ diff --git a/concepts/118_4.png b/concepts/118_4.png new file mode 100644 index 0000000000000000000000000000000000000000..d70abfd06092072c5c186e868bb71291d5f0c449 Binary files /dev/null and b/concepts/118_4.png differ diff --git a/concepts/118_5.png b/concepts/118_5.png new file mode 100644 index 0000000000000000000000000000000000000000..d95bcf646ad24ea2589bfb159a0b4efa39e44543 Binary files /dev/null and b/concepts/118_5.png differ diff --git a/concepts/118_6.png b/concepts/118_6.png new file mode 100644 index 0000000000000000000000000000000000000000..0b8fa0cfeebbf1e0a3226e2916892ab299871799 Binary files /dev/null and b/concepts/118_6.png differ diff --git a/concepts/118_7.png b/concepts/118_7.png new file mode 100644 index 0000000000000000000000000000000000000000..b24f7a83792d753e1d81f029abb907e3876db895 Binary files /dev/null and b/concepts/118_7.png differ diff --git a/concepts/119_1.png b/concepts/119_1.png new file mode 100644 index 0000000000000000000000000000000000000000..8f92181b8808aa97b5a0f6ef2825af66c2fbede4 Binary files /dev/null and b/concepts/119_1.png differ diff --git a/concepts/119_10.png b/concepts/119_10.png new file mode 100644 index 0000000000000000000000000000000000000000..8d17db5081f1fc8c8f0ee2a4f8df41a79020611c Binary files /dev/null and b/concepts/119_10.png differ diff --git a/concepts/119_13.png b/concepts/119_13.png new file mode 100644 index 0000000000000000000000000000000000000000..0ae5b5411e996a60df61dbe13849a314cf021078 Binary files /dev/null and b/concepts/119_13.png differ diff --git a/concepts/119_17.png b/concepts/119_17.png new file mode 100644 index 0000000000000000000000000000000000000000..3d7f3aa88a01608ad218e595b934884c4b03b300 Binary files /dev/null and b/concepts/119_17.png differ diff --git a/concepts/119_2.png b/concepts/119_2.png new file mode 100644 index 0000000000000000000000000000000000000000..f8176115cbcf236d10215814f4844810614dd998 Binary files /dev/null and b/concepts/119_2.png differ diff --git a/concepts/119_5.png b/concepts/119_5.png new file mode 100644 index 0000000000000000000000000000000000000000..5007c0da90df1aeac474d8c7c2fa3ca45ff3aab4 Binary files /dev/null and b/concepts/119_5.png differ diff --git a/concepts/119_6.png b/concepts/119_6.png new file mode 100644 index 0000000000000000000000000000000000000000..b05355baeb799579727ccbb663154afdd61ce28a Binary files /dev/null and b/concepts/119_6.png differ diff --git a/concepts/11_0.png b/concepts/11_0.png new file mode 100644 index 0000000000000000000000000000000000000000..acd85bc23fbf2275ca596caa62f019a38aea4b8f Binary files /dev/null and b/concepts/11_0.png differ diff --git a/concepts/11_1.png b/concepts/11_1.png new file mode 100644 index 0000000000000000000000000000000000000000..662c7fca4e273bc76eaeabaa1b5f949339992635 Binary files /dev/null and b/concepts/11_1.png differ diff --git a/concepts/11_2.png b/concepts/11_2.png new file mode 100644 index 0000000000000000000000000000000000000000..b81af9204cd03835f394d8d6138b499a839b9c36 Binary files /dev/null and b/concepts/11_2.png differ diff --git a/concepts/11_3.png b/concepts/11_3.png new file mode 100644 index 0000000000000000000000000000000000000000..8e14a99e5c9991fc8b0f455766343061d9d28e64 Binary files /dev/null and b/concepts/11_3.png differ diff --git a/concepts/11_4.png b/concepts/11_4.png new file mode 100644 index 0000000000000000000000000000000000000000..8d713782b3d6bd11ef075a691476d00d60331b88 Binary files /dev/null and b/concepts/11_4.png differ diff --git a/concepts/11_6.png b/concepts/11_6.png new file mode 100644 index 0000000000000000000000000000000000000000..4c65c85dee72fb1c8954f5b4950001553dd16a02 Binary files /dev/null and b/concepts/11_6.png differ diff --git a/concepts/11_7.png b/concepts/11_7.png new file mode 100644 index 0000000000000000000000000000000000000000..e03a4ed46a4075ab376b271c11ead839dbd336a5 Binary files /dev/null and b/concepts/11_7.png differ diff --git a/concepts/11_8.png b/concepts/11_8.png new file mode 100644 index 0000000000000000000000000000000000000000..d69e9b63e9ceb451a90a369125b1711039010341 Binary files /dev/null and b/concepts/11_8.png differ diff --git a/concepts/120_0.png b/concepts/120_0.png new file mode 100644 index 0000000000000000000000000000000000000000..40805a53ad13f53a78a102fdceafc1795223ba36 Binary files /dev/null and b/concepts/120_0.png differ diff --git a/concepts/120_1.png b/concepts/120_1.png new file mode 100644 index 0000000000000000000000000000000000000000..74fccac54bf8e51e24b9a3d7a446912dc318405e Binary files /dev/null and b/concepts/120_1.png differ diff --git a/concepts/120_10.png b/concepts/120_10.png new file mode 100644 index 0000000000000000000000000000000000000000..86e1077be235b5ae2a82ff63ceb941da5b3ea411 Binary files /dev/null and b/concepts/120_10.png differ diff --git a/concepts/120_11.png b/concepts/120_11.png new file mode 100644 index 0000000000000000000000000000000000000000..a56582d205e5eee0eafeecced7d749b00e189f74 Binary files /dev/null and b/concepts/120_11.png differ diff --git a/concepts/120_3.png b/concepts/120_3.png new file mode 100644 index 0000000000000000000000000000000000000000..064a47cddf92ceec23b7bf1f0553554330e13530 Binary files /dev/null and b/concepts/120_3.png differ diff --git a/concepts/120_4.png b/concepts/120_4.png new file mode 100644 index 0000000000000000000000000000000000000000..8390d0e1194f3e48567c21968b266f69c60d5812 Binary files /dev/null and b/concepts/120_4.png differ diff --git a/concepts/120_5.png b/concepts/120_5.png new file mode 100644 index 0000000000000000000000000000000000000000..e7ec011d138136e1311e2c3c91ce7d4f58d9e363 Binary files /dev/null and b/concepts/120_5.png differ diff --git a/concepts/120_9.png b/concepts/120_9.png new file mode 100644 index 0000000000000000000000000000000000000000..dbfce9f6d8f5ec72f6caa6a28f869ccff4d2cdff Binary files /dev/null and b/concepts/120_9.png differ diff --git a/concepts/121_0.png b/concepts/121_0.png new file mode 100644 index 0000000000000000000000000000000000000000..d03bd99e0a082f96421a76a498e5b27ac2c3de16 Binary files /dev/null and b/concepts/121_0.png differ diff --git a/concepts/121_1.png b/concepts/121_1.png new file mode 100644 index 0000000000000000000000000000000000000000..b76aba7c89373d68f97c33667503b542ecfb004b Binary files /dev/null and b/concepts/121_1.png differ diff --git a/concepts/121_2.png b/concepts/121_2.png new file mode 100644 index 0000000000000000000000000000000000000000..4b84f8c0396fb9fe0a2e2ff340e86b9a54085cff Binary files /dev/null and b/concepts/121_2.png differ diff --git a/concepts/121_3.png b/concepts/121_3.png new file mode 100644 index 0000000000000000000000000000000000000000..ea67e86106055a62f3d83b3c0c256e5c2f0d6713 Binary files /dev/null and b/concepts/121_3.png differ diff --git a/concepts/121_5.png b/concepts/121_5.png new file mode 100644 index 0000000000000000000000000000000000000000..dd518129ff597f860031b8c6d28c26c25e96f868 Binary files /dev/null and b/concepts/121_5.png differ diff --git a/concepts/121_6.png b/concepts/121_6.png new file mode 100644 index 0000000000000000000000000000000000000000..959c297b4b385438c27a0297aa82434ef0f277e3 Binary files /dev/null and b/concepts/121_6.png differ diff --git a/concepts/121_7.png b/concepts/121_7.png new file mode 100644 index 0000000000000000000000000000000000000000..34511f8cd485f38156a2cb2dadf7a4a867d77043 Binary files /dev/null and b/concepts/121_7.png differ diff --git a/concepts/121_9.png b/concepts/121_9.png new file mode 100644 index 0000000000000000000000000000000000000000..44cbf08e2bc9fa2ad04db96e6aeab5dc7e4c3278 Binary files /dev/null and b/concepts/121_9.png differ diff --git a/concepts/122_0.png b/concepts/122_0.png new file mode 100644 index 0000000000000000000000000000000000000000..b402583eef02075dbc0cf9c29c5bfddb71bfcbb0 Binary files /dev/null and b/concepts/122_0.png differ diff --git a/concepts/122_1.png b/concepts/122_1.png new file mode 100644 index 0000000000000000000000000000000000000000..103cb1580de7eeca66bd3056c03c6135412bf5fe Binary files /dev/null and b/concepts/122_1.png differ diff --git a/concepts/122_2.png b/concepts/122_2.png new file mode 100644 index 0000000000000000000000000000000000000000..534dbea098221bfa93e98f6d3733f9cdcdde8397 Binary files /dev/null and b/concepts/122_2.png differ diff --git a/concepts/122_3.png b/concepts/122_3.png new file mode 100644 index 0000000000000000000000000000000000000000..85146cacecd46e537b5523c9a4bb90132a03a97b Binary files /dev/null and b/concepts/122_3.png differ diff --git a/concepts/122_4.png b/concepts/122_4.png new file mode 100644 index 0000000000000000000000000000000000000000..50b47c12a18668751cdd1a3959e86496cdda1d84 Binary files /dev/null and b/concepts/122_4.png differ diff --git a/concepts/122_5.png b/concepts/122_5.png new file mode 100644 index 0000000000000000000000000000000000000000..3d450879615c179b0fa915e6be216f741d282c8e Binary files /dev/null and b/concepts/122_5.png differ diff --git a/concepts/122_6.png b/concepts/122_6.png new file mode 100644 index 0000000000000000000000000000000000000000..82f4cd954143c5add352a646c85b3a0e81280ec2 Binary files /dev/null and b/concepts/122_6.png differ diff --git a/concepts/122_8.png b/concepts/122_8.png new file mode 100644 index 0000000000000000000000000000000000000000..edab8b3406e07b7f41a36b1f27ab0c8401e0b9fe Binary files /dev/null and b/concepts/122_8.png differ diff --git a/concepts/123_0.png b/concepts/123_0.png new file mode 100644 index 0000000000000000000000000000000000000000..4e78de07b17bdd7deb1158e0f43e0a3121b035a2 Binary files /dev/null and b/concepts/123_0.png differ diff --git a/concepts/123_1.png b/concepts/123_1.png new file mode 100644 index 0000000000000000000000000000000000000000..1f17db20737775e73f0b77733ff59851dc4f0974 Binary files /dev/null and b/concepts/123_1.png differ diff --git a/concepts/123_2.png b/concepts/123_2.png new file mode 100644 index 0000000000000000000000000000000000000000..e33a3f8faa493828c6f5360c4bf122b312a627ad Binary files /dev/null and b/concepts/123_2.png differ diff --git a/concepts/123_3.png b/concepts/123_3.png new file mode 100644 index 0000000000000000000000000000000000000000..549771638f011b77c629f40c9e2ed8ae0f80fc36 Binary files /dev/null and b/concepts/123_3.png differ diff --git a/concepts/123_5.png b/concepts/123_5.png new file mode 100644 index 0000000000000000000000000000000000000000..f2f3c2836e3dfa0140c401bd642dcaeddcda54fc Binary files /dev/null and b/concepts/123_5.png differ diff --git a/concepts/123_6.png b/concepts/123_6.png new file mode 100644 index 0000000000000000000000000000000000000000..13952fefbe22df4bffe3dbc603053c28bcf826c2 Binary files /dev/null and b/concepts/123_6.png differ diff --git a/concepts/123_7.png b/concepts/123_7.png new file mode 100644 index 0000000000000000000000000000000000000000..7404cf1f29c36e9cb960397c06960c030bbb9f25 Binary files /dev/null and b/concepts/123_7.png differ diff --git a/concepts/123_8.png b/concepts/123_8.png new file mode 100644 index 0000000000000000000000000000000000000000..4e678843d78623950534ac681e7820c5536eddf3 Binary files /dev/null and b/concepts/123_8.png differ diff --git a/concepts/124_1.png b/concepts/124_1.png new file mode 100644 index 0000000000000000000000000000000000000000..71a97227aa99564280454c55dfc7bfe49eb716b0 Binary files /dev/null and b/concepts/124_1.png differ diff --git a/concepts/124_10.png b/concepts/124_10.png new file mode 100644 index 0000000000000000000000000000000000000000..496bfd08f1fd69e9e6909c7036590648060d2c8f Binary files /dev/null and b/concepts/124_10.png differ diff --git a/concepts/124_15.png b/concepts/124_15.png new file mode 100644 index 0000000000000000000000000000000000000000..2c4d7a4037ab670e17f280320af04b0584644b3b Binary files /dev/null and b/concepts/124_15.png differ diff --git a/concepts/124_3.png b/concepts/124_3.png new file mode 100644 index 0000000000000000000000000000000000000000..7cc0d4e93e2e1db4a9e0f0ae531fa7b799c2eaa0 Binary files /dev/null and b/concepts/124_3.png differ diff --git a/concepts/124_6.png b/concepts/124_6.png new file mode 100644 index 0000000000000000000000000000000000000000..25366df7d8dd21f4b6344a1fee6897e0b54d3d96 Binary files /dev/null and b/concepts/124_6.png differ diff --git a/concepts/124_7.png b/concepts/124_7.png new file mode 100644 index 0000000000000000000000000000000000000000..6872fbc65334769fb90c8626f200ffe5960ddf00 Binary files /dev/null and b/concepts/124_7.png differ diff --git a/concepts/124_9.png b/concepts/124_9.png new file mode 100644 index 0000000000000000000000000000000000000000..44cceb175ffc6490f910c07cf106158881b34dd7 Binary files /dev/null and b/concepts/124_9.png differ diff --git a/concepts/125_0.png b/concepts/125_0.png new file mode 100644 index 0000000000000000000000000000000000000000..f1bd1086859a2ca6f27c6fc6b710e58caa1f70cb Binary files /dev/null and b/concepts/125_0.png differ diff --git a/concepts/125_1.png b/concepts/125_1.png new file mode 100644 index 0000000000000000000000000000000000000000..6bdea5a1ab4838e03583d5331c18196754e16c0e Binary files /dev/null and b/concepts/125_1.png differ diff --git a/concepts/125_10.png b/concepts/125_10.png new file mode 100644 index 0000000000000000000000000000000000000000..99833e123e3119a87b1734bd63e5212c3a89ba4a Binary files /dev/null and b/concepts/125_10.png differ diff --git a/concepts/125_2.png b/concepts/125_2.png new file mode 100644 index 0000000000000000000000000000000000000000..bcba20f557911cf7dff54c846a4b82a068a4c1e1 Binary files /dev/null and b/concepts/125_2.png differ diff --git a/concepts/125_3.png b/concepts/125_3.png new file mode 100644 index 0000000000000000000000000000000000000000..a23a3fa312c4b9939b5a93b45d82e0be66b57cb6 Binary files /dev/null and b/concepts/125_3.png differ diff --git a/concepts/125_6.png b/concepts/125_6.png new file mode 100644 index 0000000000000000000000000000000000000000..4447fdaafb08fd55b0884f3668a363e13bef14c6 Binary files /dev/null and b/concepts/125_6.png differ diff --git a/concepts/125_7.png b/concepts/125_7.png new file mode 100644 index 0000000000000000000000000000000000000000..b6c0438ff151da8ecd06a73fa171a83976068c15 Binary files /dev/null and b/concepts/125_7.png differ diff --git a/concepts/125_9.png b/concepts/125_9.png new file mode 100644 index 0000000000000000000000000000000000000000..f9d1b93d1a32904091d524beb2115d99e47bc355 Binary files /dev/null and b/concepts/125_9.png differ diff --git a/concepts/126_0.png b/concepts/126_0.png new file mode 100644 index 0000000000000000000000000000000000000000..81386b365c02b875e29799d3bebee7eff42d46ae Binary files /dev/null and b/concepts/126_0.png differ diff --git a/concepts/126_11.png b/concepts/126_11.png new file mode 100644 index 0000000000000000000000000000000000000000..c929d26e53513a137e048c8d436cd0bdfcf081b8 Binary files /dev/null and b/concepts/126_11.png differ diff --git a/concepts/126_15.png b/concepts/126_15.png new file mode 100644 index 0000000000000000000000000000000000000000..128e1fd57cd9b8b6656bc997b84b9da97e8bb628 Binary files /dev/null and b/concepts/126_15.png differ diff --git a/concepts/126_16.png b/concepts/126_16.png new file mode 100644 index 0000000000000000000000000000000000000000..919dfb113be08f927e13172f70be28ffcb60f4f6 Binary files /dev/null and b/concepts/126_16.png differ diff --git a/concepts/126_18.png b/concepts/126_18.png new file mode 100644 index 0000000000000000000000000000000000000000..29fe8a89dbbe50f3d49beacdf739da5ddd94abe0 Binary files /dev/null and b/concepts/126_18.png differ diff --git a/concepts/126_21.png b/concepts/126_21.png new file mode 100644 index 0000000000000000000000000000000000000000..7eac77fa2968baed8b136a77b4bbc46d07db3359 Binary files /dev/null and b/concepts/126_21.png differ diff --git a/concepts/126_6.png b/concepts/126_6.png new file mode 100644 index 0000000000000000000000000000000000000000..2ba64fa42adc734bfb64ee52e8e6d4dad5755acb Binary files /dev/null and b/concepts/126_6.png differ diff --git a/concepts/127_11.png b/concepts/127_11.png new file mode 100644 index 0000000000000000000000000000000000000000..16ed602cceb0128b390ad01c96892bf8cc703bdc Binary files /dev/null and b/concepts/127_11.png differ diff --git a/concepts/127_16.png b/concepts/127_16.png new file mode 100644 index 0000000000000000000000000000000000000000..c8f9f25b17253d91c65657444ad6a1975297cac8 Binary files /dev/null and b/concepts/127_16.png differ diff --git a/concepts/127_19.png b/concepts/127_19.png new file mode 100644 index 0000000000000000000000000000000000000000..56913e54089942341834f47d9b0c7a231a5adc5b Binary files /dev/null and b/concepts/127_19.png differ diff --git a/concepts/127_2.png b/concepts/127_2.png new file mode 100644 index 0000000000000000000000000000000000000000..487735e07827ba715981bf929b2b9fc9694b9fed Binary files /dev/null and b/concepts/127_2.png differ diff --git a/concepts/127_3.png b/concepts/127_3.png new file mode 100644 index 0000000000000000000000000000000000000000..590fc9f7bf0873c5c626f4cc4a743ecd7904dc78 Binary files /dev/null and b/concepts/127_3.png differ diff --git a/concepts/127_4.png b/concepts/127_4.png new file mode 100644 index 0000000000000000000000000000000000000000..789cc17414d7d14fbc4e1c4ebb779a371d2184e7 Binary files /dev/null and b/concepts/127_4.png differ diff --git a/concepts/127_5.png b/concepts/127_5.png new file mode 100644 index 0000000000000000000000000000000000000000..075b7ded2566ad694dd454f289a5d829c84eb1f0 Binary files /dev/null and b/concepts/127_5.png differ diff --git a/concepts/127_9.png b/concepts/127_9.png new file mode 100644 index 0000000000000000000000000000000000000000..a372385960ef5db78b6a17649c0887ddd30e7fa8 Binary files /dev/null and b/concepts/127_9.png differ diff --git a/concepts/128_0.png b/concepts/128_0.png new file mode 100644 index 0000000000000000000000000000000000000000..f052c9018935f681eb522418de53fda6dce81f8a Binary files /dev/null and b/concepts/128_0.png differ diff --git a/concepts/128_1.png b/concepts/128_1.png new file mode 100644 index 0000000000000000000000000000000000000000..8b437c941ba7e58b163dc475b1f74071d4f5a353 Binary files /dev/null and b/concepts/128_1.png differ diff --git a/concepts/128_10.png b/concepts/128_10.png new file mode 100644 index 0000000000000000000000000000000000000000..b310eb96099688e94c3f16d3413a1ebe0e0b70ce Binary files /dev/null and b/concepts/128_10.png differ diff --git a/concepts/128_11.png b/concepts/128_11.png new file mode 100644 index 0000000000000000000000000000000000000000..c8b67b7e075ffeac89df57a80cbdc3841d1cab61 Binary files /dev/null and b/concepts/128_11.png differ diff --git a/concepts/128_12.png b/concepts/128_12.png new file mode 100644 index 0000000000000000000000000000000000000000..29794c3a8e6ae143643c8fbb1e1a10635eecd4f8 Binary files /dev/null and b/concepts/128_12.png differ diff --git a/concepts/128_13.png b/concepts/128_13.png new file mode 100644 index 0000000000000000000000000000000000000000..645c9f4502192a9bf7f499aeeb88a20c65b70a7d Binary files /dev/null and b/concepts/128_13.png differ diff --git a/concepts/128_3.png b/concepts/128_3.png new file mode 100644 index 0000000000000000000000000000000000000000..b18ece095db06da45c2f0a3a2f2cb96158c28144 Binary files /dev/null and b/concepts/128_3.png differ diff --git a/concepts/128_6.png b/concepts/128_6.png new file mode 100644 index 0000000000000000000000000000000000000000..089ecfcd9a4ac9fe2f8f3203522be108618ef0b8 Binary files /dev/null and b/concepts/128_6.png differ diff --git a/concepts/129_0.png b/concepts/129_0.png new file mode 100644 index 0000000000000000000000000000000000000000..7442f30eed6c11a6b783cc02d0ab0b46ff739e8d Binary files /dev/null and b/concepts/129_0.png differ diff --git a/concepts/129_1.png b/concepts/129_1.png new file mode 100644 index 0000000000000000000000000000000000000000..f6303d6970116bb1af1ac3c44e0a57e36e4b502b Binary files /dev/null and b/concepts/129_1.png differ diff --git a/concepts/129_2.png b/concepts/129_2.png new file mode 100644 index 0000000000000000000000000000000000000000..a61b41be9375faed85d0a609d19e47309b1afa95 Binary files /dev/null and b/concepts/129_2.png differ diff --git a/concepts/129_3.png b/concepts/129_3.png new file mode 100644 index 0000000000000000000000000000000000000000..5ddab2428a972f37bc264e8315a1fad4b85f0b51 Binary files /dev/null and b/concepts/129_3.png differ diff --git a/concepts/129_4.png b/concepts/129_4.png new file mode 100644 index 0000000000000000000000000000000000000000..83c94c65c61af6bf290d4babac3d19b922659ee0 Binary files /dev/null and b/concepts/129_4.png differ diff --git a/concepts/129_6.png b/concepts/129_6.png new file mode 100644 index 0000000000000000000000000000000000000000..81dcc8b09d3e1720e3a2a55acfb60fe079420554 Binary files /dev/null and b/concepts/129_6.png differ diff --git a/concepts/129_7.png b/concepts/129_7.png new file mode 100644 index 0000000000000000000000000000000000000000..5eecfa0972b12a18f56fe6ab9516e46c1e445db2 Binary files /dev/null and b/concepts/129_7.png differ diff --git a/concepts/129_8.png b/concepts/129_8.png new file mode 100644 index 0000000000000000000000000000000000000000..73666fa0c50be3e58181fc3bf19a5077041b6102 Binary files /dev/null and b/concepts/129_8.png differ diff --git a/concepts/12_0.png b/concepts/12_0.png new file mode 100644 index 0000000000000000000000000000000000000000..c0f6e1aa9c5a25a1cbd24e58b96a290a905f86d3 Binary files /dev/null and b/concepts/12_0.png differ diff --git a/concepts/12_1.png b/concepts/12_1.png new file mode 100644 index 0000000000000000000000000000000000000000..79447c1e21403ee9b546e81c583e8a40cdc3aa9f Binary files /dev/null and b/concepts/12_1.png differ diff --git a/concepts/12_11.png b/concepts/12_11.png new file mode 100644 index 0000000000000000000000000000000000000000..beda0d71e762cc042ac475bde75ffed1ee8e474b Binary files /dev/null and b/concepts/12_11.png differ diff --git a/concepts/12_2.png b/concepts/12_2.png new file mode 100644 index 0000000000000000000000000000000000000000..b181f2bc0f28a6557a98e5f4edd0a801792965da Binary files /dev/null and b/concepts/12_2.png differ diff --git a/concepts/12_3.png b/concepts/12_3.png new file mode 100644 index 0000000000000000000000000000000000000000..8fac1e8235c5f48efac0d86eb39a9203c67567dc Binary files /dev/null and b/concepts/12_3.png differ diff --git a/concepts/12_7.png b/concepts/12_7.png new file mode 100644 index 0000000000000000000000000000000000000000..346fa2cafeada3e9a474cfba5f64bfec4d7ef72c Binary files /dev/null and b/concepts/12_7.png differ diff --git a/concepts/12_8.png b/concepts/12_8.png new file mode 100644 index 0000000000000000000000000000000000000000..2256e541a3b6893517dfc23477f99e6a70926d6e Binary files /dev/null and b/concepts/12_8.png differ diff --git a/concepts/12_9.png b/concepts/12_9.png new file mode 100644 index 0000000000000000000000000000000000000000..b8ab1fbc421db735794c190a86caba2c36dec7fb Binary files /dev/null and b/concepts/12_9.png differ diff --git a/concepts/130_12.png b/concepts/130_12.png new file mode 100644 index 0000000000000000000000000000000000000000..73f9572190d8994abdfb318bbcd5f2d9a9bf5603 Binary files /dev/null and b/concepts/130_12.png differ diff --git a/concepts/130_16.png b/concepts/130_16.png new file mode 100644 index 0000000000000000000000000000000000000000..1e87758d0a4a87d9d8cc7a2e04213b5c6a0157dd Binary files /dev/null and b/concepts/130_16.png differ diff --git a/concepts/130_20.png b/concepts/130_20.png new file mode 100644 index 0000000000000000000000000000000000000000..dea2bc00a614ff5263ae696f1af0d78932980957 Binary files /dev/null and b/concepts/130_20.png differ diff --git a/concepts/130_22.png b/concepts/130_22.png new file mode 100644 index 0000000000000000000000000000000000000000..ea07ead527e22ff5f5893a3ae1fe2a33991364ae Binary files /dev/null and b/concepts/130_22.png differ diff --git a/concepts/130_23.png b/concepts/130_23.png new file mode 100644 index 0000000000000000000000000000000000000000..6c635f15fdfba21d91b54cf06ea99ab25713297a Binary files /dev/null and b/concepts/130_23.png differ diff --git a/concepts/130_5.png b/concepts/130_5.png new file mode 100644 index 0000000000000000000000000000000000000000..66fcb25c1ffd17af72229ea4742297cb9e91ea86 Binary files /dev/null and b/concepts/130_5.png differ diff --git a/concepts/130_7.png b/concepts/130_7.png new file mode 100644 index 0000000000000000000000000000000000000000..9d92f04015a79a41b60ce03d61c76a86666e3df4 Binary files /dev/null and b/concepts/130_7.png differ diff --git a/concepts/130_8.png b/concepts/130_8.png new file mode 100644 index 0000000000000000000000000000000000000000..8b5608acebcba72c5c43f55ca062c64a8539e4a3 Binary files /dev/null and b/concepts/130_8.png differ diff --git a/concepts/131_0.png b/concepts/131_0.png new file mode 100644 index 0000000000000000000000000000000000000000..3a58b5e8c723167a226c80d07c02e093549c2da0 Binary files /dev/null and b/concepts/131_0.png differ diff --git a/concepts/131_1.png b/concepts/131_1.png new file mode 100644 index 0000000000000000000000000000000000000000..8cba37c1a470d7427684de5afeffea6d2745720d Binary files /dev/null and b/concepts/131_1.png differ diff --git a/concepts/131_2.png b/concepts/131_2.png new file mode 100644 index 0000000000000000000000000000000000000000..43bd4a5fc51f122551abe7e9e2ad4afaecc1d0df Binary files /dev/null and b/concepts/131_2.png differ diff --git a/concepts/131_3.png b/concepts/131_3.png new file mode 100644 index 0000000000000000000000000000000000000000..a533da24ec5db974d6484b051803233ff226f1e3 Binary files /dev/null and b/concepts/131_3.png differ diff --git a/concepts/131_5.png b/concepts/131_5.png new file mode 100644 index 0000000000000000000000000000000000000000..d6b322b38dae62c157635ab320be1696ff252eba Binary files /dev/null and b/concepts/131_5.png differ diff --git a/concepts/131_6.png b/concepts/131_6.png new file mode 100644 index 0000000000000000000000000000000000000000..ef3f3e75152d9c123465fc22dc2ac1810ed95a9b Binary files /dev/null and b/concepts/131_6.png differ diff --git a/concepts/131_7.png b/concepts/131_7.png new file mode 100644 index 0000000000000000000000000000000000000000..be83442a3438cc97510aa926ce8af65e5ff9fd86 Binary files /dev/null and b/concepts/131_7.png differ diff --git a/concepts/131_8.png b/concepts/131_8.png new file mode 100644 index 0000000000000000000000000000000000000000..857caba4338e03ea6f4cba57ce7947ea0f124ce9 Binary files /dev/null and b/concepts/131_8.png differ diff --git a/concepts/132_0.png b/concepts/132_0.png new file mode 100644 index 0000000000000000000000000000000000000000..f7ffb52f4f8e5423cb7027a3345ff4af1465d124 Binary files /dev/null and b/concepts/132_0.png differ diff --git a/concepts/132_12.png b/concepts/132_12.png new file mode 100644 index 0000000000000000000000000000000000000000..4c199d5707989361af5503aba0fc6d73e405fb9b Binary files /dev/null and b/concepts/132_12.png differ diff --git a/concepts/132_13.png b/concepts/132_13.png new file mode 100644 index 0000000000000000000000000000000000000000..15d690c9c43ca4a85d20e1bab7ca34bc68d6b6bc Binary files /dev/null and b/concepts/132_13.png differ diff --git a/concepts/132_2.png b/concepts/132_2.png new file mode 100644 index 0000000000000000000000000000000000000000..aea3d960f2bc5e6468db07d7f650a617c206e834 Binary files /dev/null and b/concepts/132_2.png differ diff --git a/concepts/132_21.png b/concepts/132_21.png new file mode 100644 index 0000000000000000000000000000000000000000..78c7dd60e1a278d7f0ef4f101d6c4d8d22ddd50f Binary files /dev/null and b/concepts/132_21.png differ diff --git a/concepts/132_3.png b/concepts/132_3.png new file mode 100644 index 0000000000000000000000000000000000000000..a079739a1efe8988c384afd34054b3e6159b78d3 Binary files /dev/null and b/concepts/132_3.png differ diff --git a/concepts/132_6.png b/concepts/132_6.png new file mode 100644 index 0000000000000000000000000000000000000000..bed29e246ecafdd08f2562375edd475bd50e09cd Binary files /dev/null and b/concepts/132_6.png differ diff --git a/concepts/133_0.png b/concepts/133_0.png new file mode 100644 index 0000000000000000000000000000000000000000..e0e38379b5228dda40d4b90abd17338e4b1766d2 Binary files /dev/null and b/concepts/133_0.png differ diff --git a/concepts/133_1.png b/concepts/133_1.png new file mode 100644 index 0000000000000000000000000000000000000000..9c998471e21e96ecca55109130e10b915f88e3e4 Binary files /dev/null and b/concepts/133_1.png differ diff --git a/concepts/133_12.png b/concepts/133_12.png new file mode 100644 index 0000000000000000000000000000000000000000..412c75eccbba90de13a063cd60aba2e053ded7d8 Binary files /dev/null and b/concepts/133_12.png differ diff --git a/concepts/133_13.png b/concepts/133_13.png new file mode 100644 index 0000000000000000000000000000000000000000..e10d89b2a652c7f92dba41b717b77353dfdf2618 Binary files /dev/null and b/concepts/133_13.png differ diff --git a/concepts/133_2.png b/concepts/133_2.png new file mode 100644 index 0000000000000000000000000000000000000000..941b0e4d857f860d7b343b49a20b1168779ff187 Binary files /dev/null and b/concepts/133_2.png differ diff --git a/concepts/133_4.png b/concepts/133_4.png new file mode 100644 index 0000000000000000000000000000000000000000..30a3ebfff65fb6abbb418bd70b6eaea2ff95be67 Binary files /dev/null and b/concepts/133_4.png differ diff --git a/concepts/133_7.png b/concepts/133_7.png new file mode 100644 index 0000000000000000000000000000000000000000..b8c199b6fed65b7ccf730f6c9f18697f35ea9bb2 Binary files /dev/null and b/concepts/133_7.png differ diff --git a/concepts/133_9.png b/concepts/133_9.png new file mode 100644 index 0000000000000000000000000000000000000000..2d17c27d4e2753f6b29f43a9ec26599d4fb0f23b Binary files /dev/null and b/concepts/133_9.png differ diff --git a/concepts/134_0.png b/concepts/134_0.png new file mode 100644 index 0000000000000000000000000000000000000000..18b9785942bae02d130104bb1833bc250287cbcb Binary files /dev/null and b/concepts/134_0.png differ diff --git a/concepts/134_1.png b/concepts/134_1.png new file mode 100644 index 0000000000000000000000000000000000000000..723b58170e28780f732b3e2b25e2e3bac653abab Binary files /dev/null and b/concepts/134_1.png differ diff --git a/concepts/134_2.png b/concepts/134_2.png new file mode 100644 index 0000000000000000000000000000000000000000..9add5df33a304177120d8f38b1232ddb8526a7a5 Binary files /dev/null and b/concepts/134_2.png differ diff --git a/concepts/134_3.png b/concepts/134_3.png new file mode 100644 index 0000000000000000000000000000000000000000..42d82facbb4e2f8e6fa47acd7825290f463e3ec1 Binary files /dev/null and b/concepts/134_3.png differ diff --git a/concepts/134_4.png b/concepts/134_4.png new file mode 100644 index 0000000000000000000000000000000000000000..811a1572eeeca34d6379ce92e8365f54e8f55d98 Binary files /dev/null and b/concepts/134_4.png differ diff --git a/concepts/134_6.png b/concepts/134_6.png new file mode 100644 index 0000000000000000000000000000000000000000..617e648ce49e69d3079af02afc9295e57c465d30 Binary files /dev/null and b/concepts/134_6.png differ diff --git a/concepts/134_7.png b/concepts/134_7.png new file mode 100644 index 0000000000000000000000000000000000000000..09c037868c3ef65cd2c127d98177ac27444d3cc6 Binary files /dev/null and b/concepts/134_7.png differ diff --git a/concepts/134_8.png b/concepts/134_8.png new file mode 100644 index 0000000000000000000000000000000000000000..3ab4facfda3fcb72693d3c3c8a120653d9a25160 Binary files /dev/null and b/concepts/134_8.png differ diff --git a/concepts/135_0.png b/concepts/135_0.png new file mode 100644 index 0000000000000000000000000000000000000000..ca00c7c95450696d31bd6c83628aab077ad22131 Binary files /dev/null and b/concepts/135_0.png differ diff --git a/concepts/137_1.png b/concepts/137_1.png new file mode 100644 index 0000000000000000000000000000000000000000..3d8f8c787f0182a867afe9e2c80886415a02e7a1 Binary files /dev/null and b/concepts/137_1.png differ diff --git a/concepts/137_2.png b/concepts/137_2.png new file mode 100644 index 0000000000000000000000000000000000000000..d429c609e9f71afb2791121cd84fa23cfaaac304 Binary files /dev/null and b/concepts/137_2.png differ diff --git a/concepts/137_3.png b/concepts/137_3.png new file mode 100644 index 0000000000000000000000000000000000000000..b897cf9842c1974d05fddc8e326fccb37db20f64 Binary files /dev/null and b/concepts/137_3.png differ diff --git a/concepts/137_4.png b/concepts/137_4.png new file mode 100644 index 0000000000000000000000000000000000000000..90cac8942fa45150bad8ddab99e42c1ba72281bf Binary files /dev/null and b/concepts/137_4.png differ diff --git a/concepts/137_5.png b/concepts/137_5.png new file mode 100644 index 0000000000000000000000000000000000000000..5cb9394a3c407452ad5c71a3c82db043f02a8241 Binary files /dev/null and b/concepts/137_5.png differ diff --git a/concepts/137_6.png b/concepts/137_6.png new file mode 100644 index 0000000000000000000000000000000000000000..f1fc38186ec464f39aed9517d2d6ebf7337fcc71 Binary files /dev/null and b/concepts/137_6.png differ diff --git a/concepts/137_7.png b/concepts/137_7.png new file mode 100644 index 0000000000000000000000000000000000000000..76e4dfa9bf4ce978d854d40909329bf988aaeaa0 Binary files /dev/null and b/concepts/137_7.png differ diff --git a/concepts/137_8.png b/concepts/137_8.png new file mode 100644 index 0000000000000000000000000000000000000000..5e210a81a4c37cc4bc7594f16fd9ad5bf3556c51 Binary files /dev/null and b/concepts/137_8.png differ diff --git a/concepts/138_11.png b/concepts/138_11.png new file mode 100644 index 0000000000000000000000000000000000000000..10fccb917154f766c37760e1a75e6b52f0fc9a47 Binary files /dev/null and b/concepts/138_11.png differ diff --git a/concepts/138_16.png b/concepts/138_16.png new file mode 100644 index 0000000000000000000000000000000000000000..e961f9261725bb7b0c47fe2e85dbb0e43db0587c Binary files /dev/null and b/concepts/138_16.png differ diff --git a/concepts/138_2.png b/concepts/138_2.png new file mode 100644 index 0000000000000000000000000000000000000000..c2784a3aef0ef53977de0739859ba4b42e845ae4 Binary files /dev/null and b/concepts/138_2.png differ diff --git a/concepts/138_23.png b/concepts/138_23.png new file mode 100644 index 0000000000000000000000000000000000000000..50a374d0a4b82b33eda9baf9522cb1186528945d Binary files /dev/null and b/concepts/138_23.png differ diff --git a/concepts/138_5.png b/concepts/138_5.png new file mode 100644 index 0000000000000000000000000000000000000000..b9fad1b1745204a035f972c655f6a73710a31f1e Binary files /dev/null and b/concepts/138_5.png differ diff --git a/concepts/138_6.png b/concepts/138_6.png new file mode 100644 index 0000000000000000000000000000000000000000..df0ae8af2d77c2f5f1c45d5566f5091fc6178945 Binary files /dev/null and b/concepts/138_6.png differ diff --git a/concepts/138_7.png b/concepts/138_7.png new file mode 100644 index 0000000000000000000000000000000000000000..96ee3ffd4e7fb47087a31c8eef3cdc7e7f04bdc3 Binary files /dev/null and b/concepts/138_7.png differ diff --git a/concepts/140_0.png b/concepts/140_0.png new file mode 100644 index 0000000000000000000000000000000000000000..f838e6192e89b395a849e312102067c7b18c1f3a Binary files /dev/null and b/concepts/140_0.png differ diff --git a/concepts/140_1.png b/concepts/140_1.png new file mode 100644 index 0000000000000000000000000000000000000000..63a8fac294ca7e2fbf849b87f7315530f9baf264 Binary files /dev/null and b/concepts/140_1.png differ diff --git a/concepts/140_11.png b/concepts/140_11.png new file mode 100644 index 0000000000000000000000000000000000000000..9274123095035a39ddf1e9480f2f44d26cac677d Binary files /dev/null and b/concepts/140_11.png differ diff --git a/concepts/140_13.png b/concepts/140_13.png new file mode 100644 index 0000000000000000000000000000000000000000..0556d7aaaa99a2a0388d1baa482c437817acebde Binary files /dev/null and b/concepts/140_13.png differ diff --git a/concepts/140_2.png b/concepts/140_2.png new file mode 100644 index 0000000000000000000000000000000000000000..f12a22daaba372b5af590d6a22d10a620711078c Binary files /dev/null and b/concepts/140_2.png differ diff --git a/concepts/140_3.png b/concepts/140_3.png new file mode 100644 index 0000000000000000000000000000000000000000..862ea53ec88502c94dba0896172e5ea4c341ebe6 Binary files /dev/null and b/concepts/140_3.png differ diff --git a/concepts/140_4.png b/concepts/140_4.png new file mode 100644 index 0000000000000000000000000000000000000000..3a73e0b5d2a16fa3341a9dad458ee345250fc58a Binary files /dev/null and b/concepts/140_4.png differ diff --git a/concepts/140_5.png b/concepts/140_5.png new file mode 100644 index 0000000000000000000000000000000000000000..2a018de922e5397c5a6837a878aab106b0b8b9ef Binary files /dev/null and b/concepts/140_5.png differ diff --git a/concepts/141_0.png b/concepts/141_0.png new file mode 100644 index 0000000000000000000000000000000000000000..7c50435c38f06737321df820974885dc46b63e85 Binary files /dev/null and b/concepts/141_0.png differ diff --git a/concepts/141_1.png b/concepts/141_1.png new file mode 100644 index 0000000000000000000000000000000000000000..b158791714dd7fdff83154aaae5d0221ef1078f8 Binary files /dev/null and b/concepts/141_1.png differ diff --git a/concepts/141_15.png b/concepts/141_15.png new file mode 100644 index 0000000000000000000000000000000000000000..e463b6e62a54cbba332cf22b1741908cffa8396c Binary files /dev/null and b/concepts/141_15.png differ diff --git a/concepts/141_16.png b/concepts/141_16.png new file mode 100644 index 0000000000000000000000000000000000000000..7f25d4c66c3c423e4c5ee65179891d4587c539dc Binary files /dev/null and b/concepts/141_16.png differ diff --git a/concepts/141_3.png b/concepts/141_3.png new file mode 100644 index 0000000000000000000000000000000000000000..a7daac18bf0f41308597995a0eeca36ff8290893 Binary files /dev/null and b/concepts/141_3.png differ diff --git a/concepts/141_5.png b/concepts/141_5.png new file mode 100644 index 0000000000000000000000000000000000000000..e83814c6b158dac99ea847ae215df08ed37dd177 Binary files /dev/null and b/concepts/141_5.png differ diff --git a/concepts/141_6.png b/concepts/141_6.png new file mode 100644 index 0000000000000000000000000000000000000000..a46d24aa9e6b211b9f0eabde1188af40377dece3 Binary files /dev/null and b/concepts/141_6.png differ diff --git a/concepts/141_8.png b/concepts/141_8.png new file mode 100644 index 0000000000000000000000000000000000000000..56caf586ef0a029fa7fefec7d5487d5a22d379b4 Binary files /dev/null and b/concepts/141_8.png differ diff --git a/concepts/142_0.png b/concepts/142_0.png new file mode 100644 index 0000000000000000000000000000000000000000..f55a7f810f5bbcdbb15403c4593fb72794440bde Binary files /dev/null and b/concepts/142_0.png differ diff --git a/concepts/142_10.png b/concepts/142_10.png new file mode 100644 index 0000000000000000000000000000000000000000..41ed99237eaaa97b4e998afc72a265188ab88b0f Binary files /dev/null and b/concepts/142_10.png differ diff --git a/concepts/142_12.png b/concepts/142_12.png new file mode 100644 index 0000000000000000000000000000000000000000..9c12ccf3ac8d0adfa7bb7da710e18838f5be5e3b Binary files /dev/null and b/concepts/142_12.png differ diff --git a/concepts/142_2.png b/concepts/142_2.png new file mode 100644 index 0000000000000000000000000000000000000000..dcec536282753f0b8ae78fe959f6962c85fec751 Binary files /dev/null and b/concepts/142_2.png differ diff --git a/concepts/142_3.png b/concepts/142_3.png new file mode 100644 index 0000000000000000000000000000000000000000..d21ea3bfc110b805c010ee1a12bed6b947d4ab3a Binary files /dev/null and b/concepts/142_3.png differ diff --git a/concepts/142_5.png b/concepts/142_5.png new file mode 100644 index 0000000000000000000000000000000000000000..ef959765f9d09e05e0eaea4c977f8dee633f9692 Binary files /dev/null and b/concepts/142_5.png differ diff --git a/concepts/142_6.png b/concepts/142_6.png new file mode 100644 index 0000000000000000000000000000000000000000..0b29111f283c04c3045f12eea04f64df9d2cb8bc Binary files /dev/null and b/concepts/142_6.png differ diff --git a/concepts/142_8.png b/concepts/142_8.png new file mode 100644 index 0000000000000000000000000000000000000000..b170df991eb304a4849a38b62eb93e3ef0bd8558 Binary files /dev/null and b/concepts/142_8.png differ diff --git a/concepts/143_0.png b/concepts/143_0.png new file mode 100644 index 0000000000000000000000000000000000000000..1c74de855016a94537b55dd5cf8621370d1c66ac Binary files /dev/null and b/concepts/143_0.png differ diff --git a/concepts/143_1.png b/concepts/143_1.png new file mode 100644 index 0000000000000000000000000000000000000000..b7291a989a4fd2b26a265c3b39c6b190f3534013 Binary files /dev/null and b/concepts/143_1.png differ diff --git a/concepts/143_10.png b/concepts/143_10.png new file mode 100644 index 0000000000000000000000000000000000000000..5ac2aaed701a62d03929480d7f7a0ef64893b9b8 Binary files /dev/null and b/concepts/143_10.png differ diff --git a/concepts/143_2.png b/concepts/143_2.png new file mode 100644 index 0000000000000000000000000000000000000000..af03fabbda1d1dde0cc3e855a90df55aaa53efa7 Binary files /dev/null and b/concepts/143_2.png differ diff --git a/concepts/143_3.png b/concepts/143_3.png new file mode 100644 index 0000000000000000000000000000000000000000..513b14db018b6db012d8ab4363524175a9ebc688 Binary files /dev/null and b/concepts/143_3.png differ diff --git a/concepts/143_6.png b/concepts/143_6.png new file mode 100644 index 0000000000000000000000000000000000000000..ef02f06ce535467e6ada0764fb2e396646b2b1a0 Binary files /dev/null and b/concepts/143_6.png differ diff --git a/concepts/143_7.png b/concepts/143_7.png new file mode 100644 index 0000000000000000000000000000000000000000..53c8a335c16733c15a38db6f59097f720cb39bc6 Binary files /dev/null and b/concepts/143_7.png differ diff --git a/concepts/143_8.png b/concepts/143_8.png new file mode 100644 index 0000000000000000000000000000000000000000..c012ed6625c4cf80ea2ba1df24bed8c522295f3a Binary files /dev/null and b/concepts/143_8.png differ diff --git a/concepts/144_0.png b/concepts/144_0.png new file mode 100644 index 0000000000000000000000000000000000000000..44370fea40956c4111a5d37e00b3d87da22b5a22 Binary files /dev/null and b/concepts/144_0.png differ diff --git a/concepts/144_1.png b/concepts/144_1.png new file mode 100644 index 0000000000000000000000000000000000000000..9d57a15ba98fc61f01cd8cdc513c73618148a5af Binary files /dev/null and b/concepts/144_1.png differ diff --git a/concepts/144_2.png b/concepts/144_2.png new file mode 100644 index 0000000000000000000000000000000000000000..7b62a0235facbd9d4ce0c62d5b5fd41c1c0a1f6f Binary files /dev/null and b/concepts/144_2.png differ diff --git a/concepts/144_3.png b/concepts/144_3.png new file mode 100644 index 0000000000000000000000000000000000000000..539ea37e112b330cf1d08b749249750d0b2de252 Binary files /dev/null and b/concepts/144_3.png differ diff --git a/concepts/144_4.png b/concepts/144_4.png new file mode 100644 index 0000000000000000000000000000000000000000..d0ae099bf10df3cd2de00f8948e996b3bba655e2 Binary files /dev/null and b/concepts/144_4.png differ diff --git a/concepts/144_6.png b/concepts/144_6.png new file mode 100644 index 0000000000000000000000000000000000000000..90addcab02affbe640e5dded653694b9d7e030d7 Binary files /dev/null and b/concepts/144_6.png differ diff --git a/concepts/144_7.png b/concepts/144_7.png new file mode 100644 index 0000000000000000000000000000000000000000..a8e0feedab75019c543c72bc859b395c49082b37 Binary files /dev/null and b/concepts/144_7.png differ diff --git a/concepts/144_8.png b/concepts/144_8.png new file mode 100644 index 0000000000000000000000000000000000000000..612d1fbb6348fc9c58c0f1ecf59b2a809be0ee58 Binary files /dev/null and b/concepts/144_8.png differ diff --git a/concepts/145_0.png b/concepts/145_0.png new file mode 100644 index 0000000000000000000000000000000000000000..e2b1d2cab660290c997e6e7bdc7f3edb984b8c38 Binary files /dev/null and b/concepts/145_0.png differ diff --git a/concepts/145_1.png b/concepts/145_1.png new file mode 100644 index 0000000000000000000000000000000000000000..9fb5e6258d957f3ac645958ad5c22d61c66969ed Binary files /dev/null and b/concepts/145_1.png differ diff --git a/concepts/145_10.png b/concepts/145_10.png new file mode 100644 index 0000000000000000000000000000000000000000..29c10bba816f4c54fdab46f9df77959c3f1bf588 Binary files /dev/null and b/concepts/145_10.png differ diff --git a/concepts/145_11.png b/concepts/145_11.png new file mode 100644 index 0000000000000000000000000000000000000000..9872e752df640827377f60d0634387002b7add01 Binary files /dev/null and b/concepts/145_11.png differ diff --git a/concepts/145_2.png b/concepts/145_2.png new file mode 100644 index 0000000000000000000000000000000000000000..2d276d818c0f14d81ab41f4c1213d6a3d0bde267 Binary files /dev/null and b/concepts/145_2.png differ diff --git a/concepts/145_6.png b/concepts/145_6.png new file mode 100644 index 0000000000000000000000000000000000000000..0cbd67df1d9b37e6a62046c50155cc5f41a12f96 Binary files /dev/null and b/concepts/145_6.png differ diff --git a/concepts/145_7.png b/concepts/145_7.png new file mode 100644 index 0000000000000000000000000000000000000000..222d85540c6d6d6b3f4b25089c95026a515cefbb Binary files /dev/null and b/concepts/145_7.png differ diff --git a/concepts/145_8.png b/concepts/145_8.png new file mode 100644 index 0000000000000000000000000000000000000000..9d1fce6c3e2ffc1a0d2144e62f3dda119c63eaea Binary files /dev/null and b/concepts/145_8.png differ diff --git a/concepts/146_0.png b/concepts/146_0.png new file mode 100644 index 0000000000000000000000000000000000000000..1c2f097caaa76e98a9fa702c18d074d65b193a55 Binary files /dev/null and b/concepts/146_0.png differ diff --git a/concepts/146_1.png b/concepts/146_1.png new file mode 100644 index 0000000000000000000000000000000000000000..fdb542cf806676a1e80ed1c5787f0c160b5a37fd Binary files /dev/null and b/concepts/146_1.png differ diff --git a/concepts/146_11.png b/concepts/146_11.png new file mode 100644 index 0000000000000000000000000000000000000000..f788fa1e4c99b88e6b008d416bd0c9e4fa7138a4 Binary files /dev/null and b/concepts/146_11.png differ diff --git a/concepts/146_12.png b/concepts/146_12.png new file mode 100644 index 0000000000000000000000000000000000000000..2dd86034c26c2e77a660ecf7db39c59017fda7c3 Binary files /dev/null and b/concepts/146_12.png differ diff --git a/concepts/146_2.png b/concepts/146_2.png new file mode 100644 index 0000000000000000000000000000000000000000..a3ef31280ce6b4bb2ecedb4e58ddd75eea97d975 Binary files /dev/null and b/concepts/146_2.png differ diff --git a/concepts/146_3.png b/concepts/146_3.png new file mode 100644 index 0000000000000000000000000000000000000000..ccae27cf86d7e6181b86ca7cf7738627ae7ee75e Binary files /dev/null and b/concepts/146_3.png differ diff --git a/concepts/146_6.png b/concepts/146_6.png new file mode 100644 index 0000000000000000000000000000000000000000..cdae7b0fc2a567753ee2b5d878329edd98e62500 Binary files /dev/null and b/concepts/146_6.png differ diff --git a/concepts/146_7.png b/concepts/146_7.png new file mode 100644 index 0000000000000000000000000000000000000000..6204c4df8fca0cfb528654a58e69113d07363643 Binary files /dev/null and b/concepts/146_7.png differ diff --git a/concepts/147_0.png b/concepts/147_0.png new file mode 100644 index 0000000000000000000000000000000000000000..30d55c755f85140541bc8e64ef7510a81877791e Binary files /dev/null and b/concepts/147_0.png differ diff --git a/concepts/147_1.png b/concepts/147_1.png new file mode 100644 index 0000000000000000000000000000000000000000..f33af29b8c856e03b42b9a726814ce8b12cc475e Binary files /dev/null and b/concepts/147_1.png differ diff --git a/concepts/147_10.png b/concepts/147_10.png new file mode 100644 index 0000000000000000000000000000000000000000..51e88b03a2abc43ae50889cf43d410c38d88a35c Binary files /dev/null and b/concepts/147_10.png differ diff --git a/concepts/147_2.png b/concepts/147_2.png new file mode 100644 index 0000000000000000000000000000000000000000..73181e5432589c94fdfa2b7a7b3a7a9700da266a Binary files /dev/null and b/concepts/147_2.png differ diff --git a/concepts/147_3.png b/concepts/147_3.png new file mode 100644 index 0000000000000000000000000000000000000000..654cd8583407e2608f9e2938c56b05a9057a9fe7 Binary files /dev/null and b/concepts/147_3.png differ diff --git a/concepts/147_5.png b/concepts/147_5.png new file mode 100644 index 0000000000000000000000000000000000000000..75103a6016fc1cfd5fefc43dd028ec558aaa1dce Binary files /dev/null and b/concepts/147_5.png differ diff --git a/concepts/147_6.png b/concepts/147_6.png new file mode 100644 index 0000000000000000000000000000000000000000..8ef9ef3e557c0716fadc19d7e0892e55ec0525f1 Binary files /dev/null and b/concepts/147_6.png differ diff --git a/concepts/147_9.png b/concepts/147_9.png new file mode 100644 index 0000000000000000000000000000000000000000..8788877dd0b17727255a18b453e9d7d6bdb0362c Binary files /dev/null and b/concepts/147_9.png differ diff --git a/concepts/148_7.png b/concepts/148_7.png new file mode 100644 index 0000000000000000000000000000000000000000..e115cb7dba652d6be19b9c81239e9fab5fbedd14 Binary files /dev/null and b/concepts/148_7.png differ diff --git a/concepts/149_1.png b/concepts/149_1.png new file mode 100644 index 0000000000000000000000000000000000000000..ac841606b9e27f8dfbf4fe6e4ab77610670b2961 Binary files /dev/null and b/concepts/149_1.png differ diff --git a/concepts/149_10.png b/concepts/149_10.png new file mode 100644 index 0000000000000000000000000000000000000000..d966b1ed0ae4c9d9fac27b1c979cf66724144194 Binary files /dev/null and b/concepts/149_10.png differ diff --git a/concepts/149_17.png b/concepts/149_17.png new file mode 100644 index 0000000000000000000000000000000000000000..4ee4665a0835e9c0b55f7c9f8ab97eb0c2c4b18d Binary files /dev/null and b/concepts/149_17.png differ diff --git a/concepts/149_19.png b/concepts/149_19.png new file mode 100644 index 0000000000000000000000000000000000000000..e52376c20e1803c88ce4f54e87890befc7b5a28e Binary files /dev/null and b/concepts/149_19.png differ diff --git a/concepts/149_21.png b/concepts/149_21.png new file mode 100644 index 0000000000000000000000000000000000000000..0b8b44d5b7394c1f7ebd2a9a566cae4863fc1c81 Binary files /dev/null and b/concepts/149_21.png differ diff --git a/concepts/149_4.png b/concepts/149_4.png new file mode 100644 index 0000000000000000000000000000000000000000..e2c1535c2a6c1b218080626e70f462ca51371fee Binary files /dev/null and b/concepts/149_4.png differ diff --git a/concepts/149_6.png b/concepts/149_6.png new file mode 100644 index 0000000000000000000000000000000000000000..064bba937ea3d2df2f7e43b9c0c8ebefc62a2c97 Binary files /dev/null and b/concepts/149_6.png differ diff --git a/concepts/149_9.png b/concepts/149_9.png new file mode 100644 index 0000000000000000000000000000000000000000..8e7191e07005b2e94242081b79bc5d5ce7d59e41 Binary files /dev/null and b/concepts/149_9.png differ diff --git a/concepts/14_0.png b/concepts/14_0.png new file mode 100644 index 0000000000000000000000000000000000000000..13d36217ac617959ddffd0d72c87f6484fe654ec Binary files /dev/null and b/concepts/14_0.png differ diff --git a/concepts/14_1.png b/concepts/14_1.png new file mode 100644 index 0000000000000000000000000000000000000000..8fe1c0d5abae0957819e7c2aed613d2eba5a9a51 Binary files /dev/null and b/concepts/14_1.png differ diff --git a/concepts/14_3.png b/concepts/14_3.png new file mode 100644 index 0000000000000000000000000000000000000000..7cce0ee3e8b035b47ff291231d16facbb023e485 Binary files /dev/null and b/concepts/14_3.png differ diff --git a/concepts/14_4.png b/concepts/14_4.png new file mode 100644 index 0000000000000000000000000000000000000000..e7344ccdfa23fb19ed2d699855efd7c29b17637f Binary files /dev/null and b/concepts/14_4.png differ diff --git a/concepts/14_6.png b/concepts/14_6.png new file mode 100644 index 0000000000000000000000000000000000000000..32c59432fc65d06227bdf233eeb576fd5a98f12d Binary files /dev/null and b/concepts/14_6.png differ diff --git a/concepts/14_7.png b/concepts/14_7.png new file mode 100644 index 0000000000000000000000000000000000000000..3eaeca652d5f740206950ab69bfff22dac510be7 Binary files /dev/null and b/concepts/14_7.png differ diff --git a/concepts/14_8.png b/concepts/14_8.png new file mode 100644 index 0000000000000000000000000000000000000000..ce2da076c6021c1265787d672eadf0219ed0ead7 Binary files /dev/null and b/concepts/14_8.png differ diff --git a/concepts/14_9.png b/concepts/14_9.png new file mode 100644 index 0000000000000000000000000000000000000000..336493e857374e247d8e8e43a05803954f7a7596 Binary files /dev/null and b/concepts/14_9.png differ diff --git a/concepts/150_0.png b/concepts/150_0.png new file mode 100644 index 0000000000000000000000000000000000000000..d01c2c64827b2f41568c636016ccffc056017841 Binary files /dev/null and b/concepts/150_0.png differ diff --git a/concepts/150_11.png b/concepts/150_11.png new file mode 100644 index 0000000000000000000000000000000000000000..762cac90e1a44819d25689635c6e85167d7b79b1 Binary files /dev/null and b/concepts/150_11.png differ diff --git a/concepts/150_17.png b/concepts/150_17.png new file mode 100644 index 0000000000000000000000000000000000000000..b028c1f6ef4a3569e3c90afd8a90e2e333b4c1f0 Binary files /dev/null and b/concepts/150_17.png differ diff --git a/concepts/150_2.png b/concepts/150_2.png new file mode 100644 index 0000000000000000000000000000000000000000..6f726ae55c19ee9888b39a0d118521c0f5593a88 Binary files /dev/null and b/concepts/150_2.png differ diff --git a/concepts/150_20.png b/concepts/150_20.png new file mode 100644 index 0000000000000000000000000000000000000000..46bcdb45d1c620375cb49fe715d0fb3261e28331 Binary files /dev/null and b/concepts/150_20.png differ diff --git a/concepts/150_4.png b/concepts/150_4.png new file mode 100644 index 0000000000000000000000000000000000000000..09ef6b7e8a9ae2a475b3df296d3aacddac0613f6 Binary files /dev/null and b/concepts/150_4.png differ diff --git a/concepts/150_8.png b/concepts/150_8.png new file mode 100644 index 0000000000000000000000000000000000000000..e443ef455c011baf82549a174e1d0e1514101a80 Binary files /dev/null and b/concepts/150_8.png differ diff --git a/concepts/150_9.png b/concepts/150_9.png new file mode 100644 index 0000000000000000000000000000000000000000..814949ed2d7a583505fdf305d1deb67050ae49fc Binary files /dev/null and b/concepts/150_9.png differ diff --git a/concepts/151_0.png b/concepts/151_0.png new file mode 100644 index 0000000000000000000000000000000000000000..83b5e4e045e9797ce17f305a37126f27645f9e6b Binary files /dev/null and b/concepts/151_0.png differ diff --git a/concepts/151_11.png b/concepts/151_11.png new file mode 100644 index 0000000000000000000000000000000000000000..2784801c9bae6e4dbc73bda39142ae2a49943689 Binary files /dev/null and b/concepts/151_11.png differ diff --git a/concepts/151_12.png b/concepts/151_12.png new file mode 100644 index 0000000000000000000000000000000000000000..9ea8f50c16389aa0c2447421d1cd2aa20d550d46 Binary files /dev/null and b/concepts/151_12.png differ diff --git a/concepts/151_21.png b/concepts/151_21.png new file mode 100644 index 0000000000000000000000000000000000000000..e86bb9a9a1483ad5aba61c997ee197ad899d89f6 Binary files /dev/null and b/concepts/151_21.png differ diff --git a/concepts/151_3.png b/concepts/151_3.png new file mode 100644 index 0000000000000000000000000000000000000000..144cb6b56d47e1356fcb902abc3d048462482b67 Binary files /dev/null and b/concepts/151_3.png differ diff --git a/concepts/151_6.png b/concepts/151_6.png new file mode 100644 index 0000000000000000000000000000000000000000..f2aefa5ef5e71c3ac4a907a6f5fb303c581732d4 Binary files /dev/null and b/concepts/151_6.png differ diff --git a/concepts/151_8.png b/concepts/151_8.png new file mode 100644 index 0000000000000000000000000000000000000000..bc3d2f2655bae0ee91542b1324c14c42776745a8 Binary files /dev/null and b/concepts/151_8.png differ diff --git a/concepts/152_0.png b/concepts/152_0.png new file mode 100644 index 0000000000000000000000000000000000000000..8c56c64a9eb135255f6806d759699759add5f95a Binary files /dev/null and b/concepts/152_0.png differ diff --git a/concepts/152_1.png b/concepts/152_1.png new file mode 100644 index 0000000000000000000000000000000000000000..00d835736aa139acafbd8fbfe41482a49b78a0d7 Binary files /dev/null and b/concepts/152_1.png differ diff --git a/concepts/152_2.png b/concepts/152_2.png new file mode 100644 index 0000000000000000000000000000000000000000..54b108a2220d133d056063eb9d834ca64cc17b33 Binary files /dev/null and b/concepts/152_2.png differ diff --git a/concepts/152_3.png b/concepts/152_3.png new file mode 100644 index 0000000000000000000000000000000000000000..aee0ca8a369c301ad574f843e1e8f9158dc862cc Binary files /dev/null and b/concepts/152_3.png differ diff --git a/concepts/152_4.png b/concepts/152_4.png new file mode 100644 index 0000000000000000000000000000000000000000..129bd0a757535c99f7f4996d6770c9b08b2da77b Binary files /dev/null and b/concepts/152_4.png differ diff --git a/concepts/152_5.png b/concepts/152_5.png new file mode 100644 index 0000000000000000000000000000000000000000..c6551b5a14aed0794ee35e8308810dd141996d08 Binary files /dev/null and b/concepts/152_5.png differ diff --git a/concepts/152_7.png b/concepts/152_7.png new file mode 100644 index 0000000000000000000000000000000000000000..8a0876502140a85e8eeae0af3eaecd9cd1f70314 Binary files /dev/null and b/concepts/152_7.png differ diff --git a/concepts/152_8.png b/concepts/152_8.png new file mode 100644 index 0000000000000000000000000000000000000000..7fb4682d4b0a34146496ce6533956aef13db8668 Binary files /dev/null and b/concepts/152_8.png differ diff --git a/concepts/153_0.png b/concepts/153_0.png new file mode 100644 index 0000000000000000000000000000000000000000..231ec67aedcc4d00e61aa6d1d1f92810aa900721 Binary files /dev/null and b/concepts/153_0.png differ diff --git a/concepts/153_1.png b/concepts/153_1.png new file mode 100644 index 0000000000000000000000000000000000000000..c0381c3a085dccd3ba43f96a65fb131ec5869d3c Binary files /dev/null and b/concepts/153_1.png differ diff --git a/concepts/153_10.png b/concepts/153_10.png new file mode 100644 index 0000000000000000000000000000000000000000..e1eea93c8e13c0d957592eda95f1ebf1814177c4 Binary files /dev/null and b/concepts/153_10.png differ diff --git a/concepts/153_2.png b/concepts/153_2.png new file mode 100644 index 0000000000000000000000000000000000000000..8c737aeedba5657897a4ca7723706776847f6a80 Binary files /dev/null and b/concepts/153_2.png differ diff --git a/concepts/153_3.png b/concepts/153_3.png new file mode 100644 index 0000000000000000000000000000000000000000..224aace0848f0861bdf024dac486225f9dc48895 Binary files /dev/null and b/concepts/153_3.png differ diff --git a/concepts/153_4.png b/concepts/153_4.png new file mode 100644 index 0000000000000000000000000000000000000000..ecf46a2de2bc6800012a37ec2aa860129d1d8fe2 Binary files /dev/null and b/concepts/153_4.png differ diff --git a/concepts/153_5.png b/concepts/153_5.png new file mode 100644 index 0000000000000000000000000000000000000000..3cb45b4cbd61ae3e0d0dbd377f21124a9a52c781 Binary files /dev/null and b/concepts/153_5.png differ diff --git a/concepts/153_6.png b/concepts/153_6.png new file mode 100644 index 0000000000000000000000000000000000000000..bf326267708cc5deeadd20df76eb2a3877b3cba5 Binary files /dev/null and b/concepts/153_6.png differ diff --git a/concepts/154_0.png b/concepts/154_0.png new file mode 100644 index 0000000000000000000000000000000000000000..bc3ace3553b43a8e0483c87897b533fce8719185 Binary files /dev/null and b/concepts/154_0.png differ diff --git a/concepts/154_1.png b/concepts/154_1.png new file mode 100644 index 0000000000000000000000000000000000000000..1c0836d28d9e26f07289bf8dc5a4b7760349cc87 Binary files /dev/null and b/concepts/154_1.png differ diff --git a/concepts/154_2.png b/concepts/154_2.png new file mode 100644 index 0000000000000000000000000000000000000000..396a68f5be03b071be591ed1d876eef474f400db Binary files /dev/null and b/concepts/154_2.png differ diff --git a/concepts/154_4.png b/concepts/154_4.png new file mode 100644 index 0000000000000000000000000000000000000000..71c5bd878ea87cac9ba554054e9a9daeb4c96546 Binary files /dev/null and b/concepts/154_4.png differ diff --git a/concepts/154_5.png b/concepts/154_5.png new file mode 100644 index 0000000000000000000000000000000000000000..87450c039d1822e970fc1d6aad68e4fc764bcc06 Binary files /dev/null and b/concepts/154_5.png differ diff --git a/concepts/154_6.png b/concepts/154_6.png new file mode 100644 index 0000000000000000000000000000000000000000..ae2c87c7b18f6762f3a8c02af2cca5cdc73e9ffc Binary files /dev/null and b/concepts/154_6.png differ diff --git a/concepts/154_7.png b/concepts/154_7.png new file mode 100644 index 0000000000000000000000000000000000000000..79b3942c7c4ebecf59bdb92a50b8922a7d5318ca Binary files /dev/null and b/concepts/154_7.png differ diff --git a/concepts/154_8.png b/concepts/154_8.png new file mode 100644 index 0000000000000000000000000000000000000000..4f4d5b1499b11aa8226e2c9d46456a5fc6852145 Binary files /dev/null and b/concepts/154_8.png differ diff --git a/concepts/155_0.png b/concepts/155_0.png new file mode 100644 index 0000000000000000000000000000000000000000..bfb67b02b25474189e6cc60082771c6ac70645c2 Binary files /dev/null and b/concepts/155_0.png differ diff --git a/concepts/155_1.png b/concepts/155_1.png new file mode 100644 index 0000000000000000000000000000000000000000..db72eb3d1ba7d6ce929f7c61961816dbbad5f954 Binary files /dev/null and b/concepts/155_1.png differ diff --git a/concepts/155_19.png b/concepts/155_19.png new file mode 100644 index 0000000000000000000000000000000000000000..919f1f763b84d6bec4a067f0d55799c6c58fa379 Binary files /dev/null and b/concepts/155_19.png differ diff --git a/concepts/155_4.png b/concepts/155_4.png new file mode 100644 index 0000000000000000000000000000000000000000..7e10eba800ea498b2fdbe2a388e4ed0efb82b810 Binary files /dev/null and b/concepts/155_4.png differ diff --git a/concepts/155_9.png b/concepts/155_9.png new file mode 100644 index 0000000000000000000000000000000000000000..899bddd9480de1f064e7a6184822290d511e2db4 Binary files /dev/null and b/concepts/155_9.png differ diff --git a/concepts/156_1.png b/concepts/156_1.png new file mode 100644 index 0000000000000000000000000000000000000000..eb7cba3300f281db9f9776e2cab3904aafd9fdd0 Binary files /dev/null and b/concepts/156_1.png differ diff --git a/concepts/156_11.png b/concepts/156_11.png new file mode 100644 index 0000000000000000000000000000000000000000..e0ba2acb9a697ead81aadd563a52e62f1df672de Binary files /dev/null and b/concepts/156_11.png differ diff --git a/concepts/156_14.png b/concepts/156_14.png new file mode 100644 index 0000000000000000000000000000000000000000..4db15ed8889ff3eb704a07ff6c5c52beb08fdf32 Binary files /dev/null and b/concepts/156_14.png differ diff --git a/concepts/156_2.png b/concepts/156_2.png new file mode 100644 index 0000000000000000000000000000000000000000..66233d24c1ecd9b2cd8db2dbc608ef9d083191a7 Binary files /dev/null and b/concepts/156_2.png differ diff --git a/concepts/156_3.png b/concepts/156_3.png new file mode 100644 index 0000000000000000000000000000000000000000..6b38aa811f09cea5ef07aa01459c94c1d75360ee Binary files /dev/null and b/concepts/156_3.png differ diff --git a/concepts/156_4.png b/concepts/156_4.png new file mode 100644 index 0000000000000000000000000000000000000000..430c36fd3a3533868cf6978977399d0b6a0d2f8d Binary files /dev/null and b/concepts/156_4.png differ diff --git a/concepts/156_7.png b/concepts/156_7.png new file mode 100644 index 0000000000000000000000000000000000000000..74385aca142a9b705485491e2de8f7f702967c39 Binary files /dev/null and b/concepts/156_7.png differ diff --git a/concepts/156_8.png b/concepts/156_8.png new file mode 100644 index 0000000000000000000000000000000000000000..edee46d15c587310216a86ad3b03d6178eaf6159 Binary files /dev/null and b/concepts/156_8.png differ diff --git a/concepts/157_1.png b/concepts/157_1.png new file mode 100644 index 0000000000000000000000000000000000000000..533122ec5de6820a83bcf494a1cc7bbbf4e4b7a5 Binary files /dev/null and b/concepts/157_1.png differ diff --git a/concepts/157_14.png b/concepts/157_14.png new file mode 100644 index 0000000000000000000000000000000000000000..ce72cca49673fd71913be5be96f647138edc688e Binary files /dev/null and b/concepts/157_14.png differ diff --git a/concepts/157_15.png b/concepts/157_15.png new file mode 100644 index 0000000000000000000000000000000000000000..367578b16ed74ecd905fae3da4c2e68cceacf2ac Binary files /dev/null and b/concepts/157_15.png differ diff --git a/concepts/157_18.png b/concepts/157_18.png new file mode 100644 index 0000000000000000000000000000000000000000..26a23f1f979534fbf9794f71a6c2006f91e97351 Binary files /dev/null and b/concepts/157_18.png differ diff --git a/concepts/157_19.png b/concepts/157_19.png new file mode 100644 index 0000000000000000000000000000000000000000..0370e0a4cc4dfce11aa4f3b7838b3b0ab825d533 Binary files /dev/null and b/concepts/157_19.png differ diff --git a/concepts/157_20.png b/concepts/157_20.png new file mode 100644 index 0000000000000000000000000000000000000000..f9047d36f8cd30c5e328eaa308b589da7ba70d76 Binary files /dev/null and b/concepts/157_20.png differ diff --git a/concepts/157_24.png b/concepts/157_24.png new file mode 100644 index 0000000000000000000000000000000000000000..bb40db6f7da70f0a252e3598b57ffd6635530420 Binary files /dev/null and b/concepts/157_24.png differ diff --git a/concepts/158_11.png b/concepts/158_11.png new file mode 100644 index 0000000000000000000000000000000000000000..acfc473fa82f9cc0acc98df28799579afbfcd7c5 Binary files /dev/null and b/concepts/158_11.png differ diff --git a/concepts/158_14.png b/concepts/158_14.png new file mode 100644 index 0000000000000000000000000000000000000000..5d467d396570b4eedc1cc13b1285e5c6c4f23bf4 Binary files /dev/null and b/concepts/158_14.png differ diff --git a/concepts/158_18.png b/concepts/158_18.png new file mode 100644 index 0000000000000000000000000000000000000000..b055d3c1a0733cbb9a09dc7ae071247e99727a3b Binary files /dev/null and b/concepts/158_18.png differ diff --git a/concepts/158_2.png b/concepts/158_2.png new file mode 100644 index 0000000000000000000000000000000000000000..571a781b4c9820f0f1713a7b7e09047c3d22cef4 Binary files /dev/null and b/concepts/158_2.png differ diff --git a/concepts/158_3.png b/concepts/158_3.png new file mode 100644 index 0000000000000000000000000000000000000000..146ed18b82c4a6a596ea9ed04be65ed8f65511cb Binary files /dev/null and b/concepts/158_3.png differ diff --git a/concepts/158_4.png b/concepts/158_4.png new file mode 100644 index 0000000000000000000000000000000000000000..5dfe1fade802f5c367d49ac55eea5e56948a9f1c Binary files /dev/null and b/concepts/158_4.png differ diff --git a/concepts/158_6.png b/concepts/158_6.png new file mode 100644 index 0000000000000000000000000000000000000000..f6c8060366a9d9e85c0486f5710cb712c105aac3 Binary files /dev/null and b/concepts/158_6.png differ diff --git a/concepts/158_9.png b/concepts/158_9.png new file mode 100644 index 0000000000000000000000000000000000000000..3fad452295bcb69e5d2cc06b4caab0ad98c0a26c Binary files /dev/null and b/concepts/158_9.png differ diff --git a/concepts/159_10.png b/concepts/159_10.png new file mode 100644 index 0000000000000000000000000000000000000000..9da94ba28e63d9415f32cf23b2ad797c0016b28e Binary files /dev/null and b/concepts/159_10.png differ diff --git a/concepts/159_12.png b/concepts/159_12.png new file mode 100644 index 0000000000000000000000000000000000000000..2414105fc803e11026d629112378c8f0e504abe1 Binary files /dev/null and b/concepts/159_12.png differ diff --git a/concepts/159_14.png b/concepts/159_14.png new file mode 100644 index 0000000000000000000000000000000000000000..152ca148361a078fd89cf152cd3c0e528a590354 Binary files /dev/null and b/concepts/159_14.png differ diff --git a/concepts/159_15.png b/concepts/159_15.png new file mode 100644 index 0000000000000000000000000000000000000000..d345eefe41404ca1d64a9b69b5996dc70a52abbd Binary files /dev/null and b/concepts/159_15.png differ diff --git a/concepts/159_4.png b/concepts/159_4.png new file mode 100644 index 0000000000000000000000000000000000000000..70908a8517888703850136d3f20967b0133d7ea0 Binary files /dev/null and b/concepts/159_4.png differ diff --git a/concepts/159_7.png b/concepts/159_7.png new file mode 100644 index 0000000000000000000000000000000000000000..ecb1adad1525232d6b0b1af42584bc6266ac4c60 Binary files /dev/null and b/concepts/159_7.png differ diff --git a/concepts/159_8.png b/concepts/159_8.png new file mode 100644 index 0000000000000000000000000000000000000000..8380b64b0e4758a09e4c1656fb843c6be9a4c21c Binary files /dev/null and b/concepts/159_8.png differ diff --git a/concepts/159_9.png b/concepts/159_9.png new file mode 100644 index 0000000000000000000000000000000000000000..bd6036c8acdc1b5920e91d5f7edc4c1605394768 Binary files /dev/null and b/concepts/159_9.png differ diff --git a/concepts/15_0.png b/concepts/15_0.png new file mode 100644 index 0000000000000000000000000000000000000000..f9ebd7f9b24e9dc564cb1eb297aad0dc8baeee7f Binary files /dev/null and b/concepts/15_0.png differ diff --git a/concepts/15_1.png b/concepts/15_1.png new file mode 100644 index 0000000000000000000000000000000000000000..1da8b8001469ab4170e74b0014234146afb2768f Binary files /dev/null and b/concepts/15_1.png differ diff --git a/concepts/15_2.png b/concepts/15_2.png new file mode 100644 index 0000000000000000000000000000000000000000..cda0eb5b288da8c6ee57c33386a76015bcc61232 Binary files /dev/null and b/concepts/15_2.png differ diff --git a/concepts/15_3.png b/concepts/15_3.png new file mode 100644 index 0000000000000000000000000000000000000000..dce7f4e6f0b48f4ae4bb399dadf73edce2489ede Binary files /dev/null and b/concepts/15_3.png differ diff --git a/concepts/15_5.png b/concepts/15_5.png new file mode 100644 index 0000000000000000000000000000000000000000..635f68fb24c334238acc019bfc97363317ce40dc Binary files /dev/null and b/concepts/15_5.png differ diff --git a/concepts/15_6.png b/concepts/15_6.png new file mode 100644 index 0000000000000000000000000000000000000000..ee839c9b57fee9cf591dceb899e2538221365cfd Binary files /dev/null and b/concepts/15_6.png differ diff --git a/concepts/15_7.png b/concepts/15_7.png new file mode 100644 index 0000000000000000000000000000000000000000..8c8a7e7dc954fe297d447c621f8c58c87747130f Binary files /dev/null and b/concepts/15_7.png differ diff --git a/concepts/15_8.png b/concepts/15_8.png new file mode 100644 index 0000000000000000000000000000000000000000..f86f11746cc4888c7f5e38015b32566ccf432967 Binary files /dev/null and b/concepts/15_8.png differ diff --git a/concepts/160_1.png b/concepts/160_1.png new file mode 100644 index 0000000000000000000000000000000000000000..3835eb64544f2371099fbbb31d2c60176e73a52a Binary files /dev/null and b/concepts/160_1.png differ diff --git a/concepts/160_12.png b/concepts/160_12.png new file mode 100644 index 0000000000000000000000000000000000000000..1bf60a8bff58676cad052fa232b83fc77f9677a2 Binary files /dev/null and b/concepts/160_12.png differ diff --git a/concepts/160_13.png b/concepts/160_13.png new file mode 100644 index 0000000000000000000000000000000000000000..387ab302254bdece3cdd83ed8568edad7d258c18 Binary files /dev/null and b/concepts/160_13.png differ diff --git a/concepts/160_15.png b/concepts/160_15.png new file mode 100644 index 0000000000000000000000000000000000000000..ddff11d2a17dffc316ced7b6fe657a176b6f6de1 Binary files /dev/null and b/concepts/160_15.png differ diff --git a/concepts/160_16.png b/concepts/160_16.png new file mode 100644 index 0000000000000000000000000000000000000000..82d8ff2106525ef3a4919c9d569c3f8a1a91bef0 Binary files /dev/null and b/concepts/160_16.png differ diff --git a/concepts/160_4.png b/concepts/160_4.png new file mode 100644 index 0000000000000000000000000000000000000000..e9c29fa4da1b59086a079c88a35c6ba3e247e77c Binary files /dev/null and b/concepts/160_4.png differ diff --git a/concepts/160_5.png b/concepts/160_5.png new file mode 100644 index 0000000000000000000000000000000000000000..e7030627ace2fbc789cdb4d1bdeeb0755014adc3 Binary files /dev/null and b/concepts/160_5.png differ diff --git a/concepts/160_8.png b/concepts/160_8.png new file mode 100644 index 0000000000000000000000000000000000000000..25d9d9b0025667eb65aa4c091b195dc8c5b9bd44 Binary files /dev/null and b/concepts/160_8.png differ diff --git a/concepts/161_0.png b/concepts/161_0.png new file mode 100644 index 0000000000000000000000000000000000000000..87bc9754802121a62c9f61a029b22c1e8b3645ed Binary files /dev/null and b/concepts/161_0.png differ diff --git a/concepts/161_11.png b/concepts/161_11.png new file mode 100644 index 0000000000000000000000000000000000000000..0adbe0b18a4837f648c9a9d417c9ca9fb901d79e Binary files /dev/null and b/concepts/161_11.png differ diff --git a/concepts/161_15.png b/concepts/161_15.png new file mode 100644 index 0000000000000000000000000000000000000000..fdb86672afd2112ad730cda3bee1c85dcef61b9d Binary files /dev/null and b/concepts/161_15.png differ diff --git a/concepts/161_17.png b/concepts/161_17.png new file mode 100644 index 0000000000000000000000000000000000000000..ce3c16c79edca64b4bd4c082814e290cd1237255 Binary files /dev/null and b/concepts/161_17.png differ diff --git a/concepts/161_19.png b/concepts/161_19.png new file mode 100644 index 0000000000000000000000000000000000000000..7230b38517d6f8daa772a1c7df0a6eada15b703c Binary files /dev/null and b/concepts/161_19.png differ diff --git a/concepts/161_2.png b/concepts/161_2.png new file mode 100644 index 0000000000000000000000000000000000000000..9a4c3f3b78d27b6183424fdbba179c6ab8ad409f Binary files /dev/null and b/concepts/161_2.png differ diff --git a/concepts/161_7.png b/concepts/161_7.png new file mode 100644 index 0000000000000000000000000000000000000000..cb5b2681aa5cc03b03a1cefc6b3869a36bd06b7e Binary files /dev/null and b/concepts/161_7.png differ diff --git a/concepts/161_9.png b/concepts/161_9.png new file mode 100644 index 0000000000000000000000000000000000000000..f304900348ab27a083844ff732f2c57ae7d514cf Binary files /dev/null and b/concepts/161_9.png differ diff --git a/concepts/162_1.png b/concepts/162_1.png new file mode 100644 index 0000000000000000000000000000000000000000..4360eb9c1594562faa209878a8abf50dc7002808 Binary files /dev/null and b/concepts/162_1.png differ diff --git a/concepts/162_15.png b/concepts/162_15.png new file mode 100644 index 0000000000000000000000000000000000000000..33ee7626d182452b4b6392d4bdf424108a507ea6 Binary files /dev/null and b/concepts/162_15.png differ diff --git a/concepts/162_19.png b/concepts/162_19.png new file mode 100644 index 0000000000000000000000000000000000000000..b55626e76ae4b2f41460a7374369c37a8e5333a7 Binary files /dev/null and b/concepts/162_19.png differ diff --git a/concepts/162_2.png b/concepts/162_2.png new file mode 100644 index 0000000000000000000000000000000000000000..e7a3606ca93121bf7bd06d3c8937aa18ce51022c Binary files /dev/null and b/concepts/162_2.png differ diff --git a/concepts/162_22.png b/concepts/162_22.png new file mode 100644 index 0000000000000000000000000000000000000000..d9a305837c6cc38effa96a6f7222050b61c68eb9 Binary files /dev/null and b/concepts/162_22.png differ diff --git a/concepts/162_6.png b/concepts/162_6.png new file mode 100644 index 0000000000000000000000000000000000000000..96387dd034594ab451c761823fa9b967d29a29f4 Binary files /dev/null and b/concepts/162_6.png differ diff --git a/concepts/162_7.png b/concepts/162_7.png new file mode 100644 index 0000000000000000000000000000000000000000..57c28f91be1c896c01c574956f09209e0da58c08 Binary files /dev/null and b/concepts/162_7.png differ diff --git a/concepts/163_0.png b/concepts/163_0.png new file mode 100644 index 0000000000000000000000000000000000000000..af6a7d1cf1d161f3ae3a3b4efeca33215a15c3c7 Binary files /dev/null and b/concepts/163_0.png differ diff --git a/concepts/163_2.png b/concepts/163_2.png new file mode 100644 index 0000000000000000000000000000000000000000..c0b0c00413d52e322cf2f7821edfb9672a70d31a Binary files /dev/null and b/concepts/163_2.png differ diff --git a/concepts/163_3.png b/concepts/163_3.png new file mode 100644 index 0000000000000000000000000000000000000000..b467d2358bd4aa18961c78f74f4a0769030a3ea2 Binary files /dev/null and b/concepts/163_3.png differ diff --git a/concepts/163_4.png b/concepts/163_4.png new file mode 100644 index 0000000000000000000000000000000000000000..4c43d09f45a042a498fb09e7c755d35c2e005748 Binary files /dev/null and b/concepts/163_4.png differ diff --git a/concepts/163_5.png b/concepts/163_5.png new file mode 100644 index 0000000000000000000000000000000000000000..e7a71ad3d7635fbbc5736de600c78b92a9e5cb9e Binary files /dev/null and b/concepts/163_5.png differ diff --git a/concepts/163_7.png b/concepts/163_7.png new file mode 100644 index 0000000000000000000000000000000000000000..6d708747780e39ed1be17905cc1eb25a6c6e9b3b Binary files /dev/null and b/concepts/163_7.png differ diff --git a/concepts/163_8.png b/concepts/163_8.png new file mode 100644 index 0000000000000000000000000000000000000000..4f67a70eacec119ba601b10e9876fe95f95e4e78 Binary files /dev/null and b/concepts/163_8.png differ diff --git a/concepts/163_9.png b/concepts/163_9.png new file mode 100644 index 0000000000000000000000000000000000000000..469d7ac91f143239ccd937b4d362b6e19d0fd2f0 Binary files /dev/null and b/concepts/163_9.png differ diff --git a/concepts/164_0.png b/concepts/164_0.png new file mode 100644 index 0000000000000000000000000000000000000000..90ee87cd66f7a2d0299a72049bf799747f722d89 Binary files /dev/null and b/concepts/164_0.png differ diff --git a/concepts/164_1.png b/concepts/164_1.png new file mode 100644 index 0000000000000000000000000000000000000000..b277714b32a2726963ea82bae2f551e77dfb73ab Binary files /dev/null and b/concepts/164_1.png differ diff --git a/concepts/164_12.png b/concepts/164_12.png new file mode 100644 index 0000000000000000000000000000000000000000..10c06a48d828a95affd13c7e7a694b7feb2f24f6 Binary files /dev/null and b/concepts/164_12.png differ diff --git a/concepts/164_2.png b/concepts/164_2.png new file mode 100644 index 0000000000000000000000000000000000000000..095e741849b46817bdc04e4e25ed53732cb26bf9 Binary files /dev/null and b/concepts/164_2.png differ diff --git a/concepts/164_3.png b/concepts/164_3.png new file mode 100644 index 0000000000000000000000000000000000000000..830d1a0efced1fa1d005a23c81436bbeebca38d5 Binary files /dev/null and b/concepts/164_3.png differ diff --git a/concepts/164_4.png b/concepts/164_4.png new file mode 100644 index 0000000000000000000000000000000000000000..b7512f92e9ffe848ba5b5e3dc842f3253cee1287 Binary files /dev/null and b/concepts/164_4.png differ diff --git a/concepts/164_7.png b/concepts/164_7.png new file mode 100644 index 0000000000000000000000000000000000000000..597fbf967d71ee96aaffbf2675f742e0206befbc Binary files /dev/null and b/concepts/164_7.png differ diff --git a/concepts/164_9.png b/concepts/164_9.png new file mode 100644 index 0000000000000000000000000000000000000000..af0059e67fc1b3668c8adf772a5085ebd4298205 Binary files /dev/null and b/concepts/164_9.png differ diff --git a/concepts/165_1.png b/concepts/165_1.png new file mode 100644 index 0000000000000000000000000000000000000000..7ffe142679ab078f6726b886d71dff5cfac78e15 Binary files /dev/null and b/concepts/165_1.png differ diff --git a/concepts/165_10.png b/concepts/165_10.png new file mode 100644 index 0000000000000000000000000000000000000000..35c25e7674c15ac7165954fdb0e7be7cfee28a90 Binary files /dev/null and b/concepts/165_10.png differ diff --git a/concepts/165_14.png b/concepts/165_14.png new file mode 100644 index 0000000000000000000000000000000000000000..c5c6802eb586cbf355a46ff156140fce54ebb133 Binary files /dev/null and b/concepts/165_14.png differ diff --git a/concepts/165_22.png b/concepts/165_22.png new file mode 100644 index 0000000000000000000000000000000000000000..f2e4115702434a1bc4ec93580161b3228b188e45 Binary files /dev/null and b/concepts/165_22.png differ diff --git a/concepts/165_3.png b/concepts/165_3.png new file mode 100644 index 0000000000000000000000000000000000000000..99073115a236afae9c7af3fd95d0340ab9f63263 Binary files /dev/null and b/concepts/165_3.png differ diff --git a/concepts/165_6.png b/concepts/165_6.png new file mode 100644 index 0000000000000000000000000000000000000000..18f844fbb66db43d21abb92807982c46116a89ea Binary files /dev/null and b/concepts/165_6.png differ diff --git a/concepts/165_7.png b/concepts/165_7.png new file mode 100644 index 0000000000000000000000000000000000000000..85b499151220e76c756df744e687d86beb21b2cd Binary files /dev/null and b/concepts/165_7.png differ diff --git a/concepts/165_9.png b/concepts/165_9.png new file mode 100644 index 0000000000000000000000000000000000000000..3049056fb2c701149c96554c9ddaf64700e4d232 Binary files /dev/null and b/concepts/165_9.png differ diff --git a/concepts/166_0.png b/concepts/166_0.png new file mode 100644 index 0000000000000000000000000000000000000000..b8916c959469356d2f1e1b303a340b8c7e801877 Binary files /dev/null and b/concepts/166_0.png differ diff --git a/concepts/166_2.png b/concepts/166_2.png new file mode 100644 index 0000000000000000000000000000000000000000..0d3031ca3fc2a80578db32570c350e10a330f3a9 Binary files /dev/null and b/concepts/166_2.png differ diff --git a/concepts/166_3.png b/concepts/166_3.png new file mode 100644 index 0000000000000000000000000000000000000000..08accfa0c480246b3e8082564ded91b7ee2b29aa Binary files /dev/null and b/concepts/166_3.png differ diff --git a/concepts/166_4.png b/concepts/166_4.png new file mode 100644 index 0000000000000000000000000000000000000000..f104feb88e8e2e24ae590dbd3f077b658b43743a Binary files /dev/null and b/concepts/166_4.png differ diff --git a/concepts/166_5.png b/concepts/166_5.png new file mode 100644 index 0000000000000000000000000000000000000000..065629ee34de4bb7a949a62ed7a84aff7d2d77f1 Binary files /dev/null and b/concepts/166_5.png differ diff --git a/concepts/166_6.png b/concepts/166_6.png new file mode 100644 index 0000000000000000000000000000000000000000..4c7bc42068fddf086b211e2de2c7f607ebd92b42 Binary files /dev/null and b/concepts/166_6.png differ diff --git a/concepts/166_7.png b/concepts/166_7.png new file mode 100644 index 0000000000000000000000000000000000000000..cb9659732b5a144e83437f978dfbd42b3e6eac4b Binary files /dev/null and b/concepts/166_7.png differ diff --git a/concepts/166_8.png b/concepts/166_8.png new file mode 100644 index 0000000000000000000000000000000000000000..116e2ef6fb4296e7a7b895f8aab440d9cc3c093a Binary files /dev/null and b/concepts/166_8.png differ diff --git a/concepts/167_0.png b/concepts/167_0.png new file mode 100644 index 0000000000000000000000000000000000000000..9772e97d088d99353f74b51af655bb4d911eab69 Binary files /dev/null and b/concepts/167_0.png differ diff --git a/concepts/167_1.png b/concepts/167_1.png new file mode 100644 index 0000000000000000000000000000000000000000..9a8245e4daba6143eab2b6ed0a6cd66e3862fa95 Binary files /dev/null and b/concepts/167_1.png differ diff --git a/concepts/167_3.png b/concepts/167_3.png new file mode 100644 index 0000000000000000000000000000000000000000..6600210e61165184d65cf9babe08671e223a17be Binary files /dev/null and b/concepts/167_3.png differ diff --git a/concepts/167_4.png b/concepts/167_4.png new file mode 100644 index 0000000000000000000000000000000000000000..ac709df497da30cfc628072616c32b8e2512a4d9 Binary files /dev/null and b/concepts/167_4.png differ diff --git a/concepts/167_5.png b/concepts/167_5.png new file mode 100644 index 0000000000000000000000000000000000000000..fe7225f92058990222515ef95d9c8f717dcc398b Binary files /dev/null and b/concepts/167_5.png differ diff --git a/concepts/167_6.png b/concepts/167_6.png new file mode 100644 index 0000000000000000000000000000000000000000..b34ae7ba19327d83fe400e0604456339b8b0e7e0 Binary files /dev/null and b/concepts/167_6.png differ diff --git a/concepts/167_7.png b/concepts/167_7.png new file mode 100644 index 0000000000000000000000000000000000000000..72f429f81985ed52fef5719908ba5b754dc2b8f7 Binary files /dev/null and b/concepts/167_7.png differ diff --git a/concepts/167_8.png b/concepts/167_8.png new file mode 100644 index 0000000000000000000000000000000000000000..5fcfef976d40459f20f9cec0256ae3dab2037567 Binary files /dev/null and b/concepts/167_8.png differ diff --git a/concepts/168_0.png b/concepts/168_0.png new file mode 100644 index 0000000000000000000000000000000000000000..ed284dec50b46ade18f4c9c45689939a60addafa Binary files /dev/null and b/concepts/168_0.png differ diff --git a/concepts/168_1.png b/concepts/168_1.png new file mode 100644 index 0000000000000000000000000000000000000000..9f490fa1cf52023db71a9a9f01f64ce75b573141 Binary files /dev/null and b/concepts/168_1.png differ diff --git a/concepts/168_10.png b/concepts/168_10.png new file mode 100644 index 0000000000000000000000000000000000000000..30bb69178a0a9869254f927573fc762f5e13e53f Binary files /dev/null and b/concepts/168_10.png differ diff --git a/concepts/168_2.png b/concepts/168_2.png new file mode 100644 index 0000000000000000000000000000000000000000..4fb9b5aa73469266cd023fee7ce2a79e8acb704c Binary files /dev/null and b/concepts/168_2.png differ diff --git a/concepts/168_5.png b/concepts/168_5.png new file mode 100644 index 0000000000000000000000000000000000000000..51483ca6b95fa99b39ace971edcd9107df5f9ff7 Binary files /dev/null and b/concepts/168_5.png differ diff --git a/concepts/168_6.png b/concepts/168_6.png new file mode 100644 index 0000000000000000000000000000000000000000..d133c2b37c937ba1ed3d48d4ce0fcbcb96762270 Binary files /dev/null and b/concepts/168_6.png differ diff --git a/concepts/168_7.png b/concepts/168_7.png new file mode 100644 index 0000000000000000000000000000000000000000..dda6aea7bc5bc346753fe3b522c8ede4ecbc97f0 Binary files /dev/null and b/concepts/168_7.png differ diff --git a/concepts/168_9.png b/concepts/168_9.png new file mode 100644 index 0000000000000000000000000000000000000000..e257389ad8e8fdf987db591550e59fd60013bb28 Binary files /dev/null and b/concepts/168_9.png differ diff --git a/concepts/169_0.png b/concepts/169_0.png new file mode 100644 index 0000000000000000000000000000000000000000..2d7fda53c87a8184d38b603ab83dc3468201d53b Binary files /dev/null and b/concepts/169_0.png differ diff --git a/concepts/169_1.png b/concepts/169_1.png new file mode 100644 index 0000000000000000000000000000000000000000..1b32d247d480323cbba4b508aa0e6c274da3c003 Binary files /dev/null and b/concepts/169_1.png differ diff --git a/concepts/169_2.png b/concepts/169_2.png new file mode 100644 index 0000000000000000000000000000000000000000..674804056239e8806cfb7aa4743ae38bf98368c1 Binary files /dev/null and b/concepts/169_2.png differ diff --git a/concepts/169_3.png b/concepts/169_3.png new file mode 100644 index 0000000000000000000000000000000000000000..78a348eb518224b24f51ff9d39e1b3f5f1abfeb9 Binary files /dev/null and b/concepts/169_3.png differ diff --git a/concepts/169_4.png b/concepts/169_4.png new file mode 100644 index 0000000000000000000000000000000000000000..ca324a70921165567efc35d17b5aed7be74a07a8 Binary files /dev/null and b/concepts/169_4.png differ diff --git a/concepts/169_5.png b/concepts/169_5.png new file mode 100644 index 0000000000000000000000000000000000000000..4a9218ebbd8dfe814a5f2189a870c14d5142e44c Binary files /dev/null and b/concepts/169_5.png differ diff --git a/concepts/169_6.png b/concepts/169_6.png new file mode 100644 index 0000000000000000000000000000000000000000..2c1a221a8672465d373b3870b731787f65c17351 Binary files /dev/null and b/concepts/169_6.png differ diff --git a/concepts/169_8.png b/concepts/169_8.png new file mode 100644 index 0000000000000000000000000000000000000000..0e59ea65413b228538f2f35a57db15deb3764c73 Binary files /dev/null and b/concepts/169_8.png differ diff --git a/concepts/16_1.png b/concepts/16_1.png new file mode 100644 index 0000000000000000000000000000000000000000..a2e5daac893e8db6956157fca8afc6a4a4712eb7 Binary files /dev/null and b/concepts/16_1.png differ diff --git a/concepts/16_10.png b/concepts/16_10.png new file mode 100644 index 0000000000000000000000000000000000000000..e7fe9b5ac92ffe84bc4f3678b3bbe5c17fc69547 Binary files /dev/null and b/concepts/16_10.png differ diff --git a/concepts/16_12.png b/concepts/16_12.png new file mode 100644 index 0000000000000000000000000000000000000000..de184447915d8aff9fefcf123252ffa3afe3d592 Binary files /dev/null and b/concepts/16_12.png differ diff --git a/concepts/16_15.png b/concepts/16_15.png new file mode 100644 index 0000000000000000000000000000000000000000..16e3b9ea0ed289cd7d116663be6190728ba53406 Binary files /dev/null and b/concepts/16_15.png differ diff --git a/concepts/16_4.png b/concepts/16_4.png new file mode 100644 index 0000000000000000000000000000000000000000..98ab0054a9093cb1420915be52a73c49e4fe3cc2 Binary files /dev/null and b/concepts/16_4.png differ diff --git a/concepts/16_7.png b/concepts/16_7.png new file mode 100644 index 0000000000000000000000000000000000000000..5457e376fe74200d4e6c191cca63544876564966 Binary files /dev/null and b/concepts/16_7.png differ diff --git a/concepts/16_8.png b/concepts/16_8.png new file mode 100644 index 0000000000000000000000000000000000000000..994596f24c88d77d808635c5a26282e4348a5088 Binary files /dev/null and b/concepts/16_8.png differ diff --git a/concepts/16_9.png b/concepts/16_9.png new file mode 100644 index 0000000000000000000000000000000000000000..533751b195f0f3caa0d94debf89489f4f15fc89f Binary files /dev/null and b/concepts/16_9.png differ diff --git a/concepts/170_1.png b/concepts/170_1.png new file mode 100644 index 0000000000000000000000000000000000000000..aff61def5f628ea59328f209d5bf6ad11a7e2630 Binary files /dev/null and b/concepts/170_1.png differ diff --git a/concepts/170_10.png b/concepts/170_10.png new file mode 100644 index 0000000000000000000000000000000000000000..119fdb55105a9c18648658959fafcd9d9c52de71 Binary files /dev/null and b/concepts/170_10.png differ diff --git a/concepts/170_11.png b/concepts/170_11.png new file mode 100644 index 0000000000000000000000000000000000000000..7a1170c142e43b2e195840537c29a582b39a7ede Binary files /dev/null and b/concepts/170_11.png differ diff --git a/concepts/170_17.png b/concepts/170_17.png new file mode 100644 index 0000000000000000000000000000000000000000..bca54a0aaed922ff59906f978a7cbdc1ee083e49 Binary files /dev/null and b/concepts/170_17.png differ diff --git a/concepts/170_3.png b/concepts/170_3.png new file mode 100644 index 0000000000000000000000000000000000000000..6faec2ee603efee01446a82397ebe1e97f13f1d6 Binary files /dev/null and b/concepts/170_3.png differ diff --git a/concepts/170_6.png b/concepts/170_6.png new file mode 100644 index 0000000000000000000000000000000000000000..a510e57a53f9d97a750cec8d1b65dd5d585c760a Binary files /dev/null and b/concepts/170_6.png differ diff --git a/concepts/170_7.png b/concepts/170_7.png new file mode 100644 index 0000000000000000000000000000000000000000..2f461171eb9974d9350626a0f386d2c853ad6133 Binary files /dev/null and b/concepts/170_7.png differ diff --git a/concepts/170_9.png b/concepts/170_9.png new file mode 100644 index 0000000000000000000000000000000000000000..1661fe3f579d62a3a0c500a3b8b00bf747f98eb5 Binary files /dev/null and b/concepts/170_9.png differ diff --git a/concepts/171_0.png b/concepts/171_0.png new file mode 100644 index 0000000000000000000000000000000000000000..4e2a983d42c4d49e71ccbe47e0dfbd91745fb753 Binary files /dev/null and b/concepts/171_0.png differ diff --git a/concepts/171_1.png b/concepts/171_1.png new file mode 100644 index 0000000000000000000000000000000000000000..5c5a3f1a8de61e3b64032f483dc22b6cb8dc5b72 Binary files /dev/null and b/concepts/171_1.png differ diff --git a/concepts/171_10.png b/concepts/171_10.png new file mode 100644 index 0000000000000000000000000000000000000000..a9af434ad42d9dbf73815f217f4a9ff8880f930b Binary files /dev/null and b/concepts/171_10.png differ diff --git a/concepts/171_11.png b/concepts/171_11.png new file mode 100644 index 0000000000000000000000000000000000000000..2ad78d87781d4a1675e23c9347797ad264d014e8 Binary files /dev/null and b/concepts/171_11.png differ diff --git a/concepts/171_13.png b/concepts/171_13.png new file mode 100644 index 0000000000000000000000000000000000000000..6fbd53a1e5e090e93d8535c6130c5dea7c1a21ef Binary files /dev/null and b/concepts/171_13.png differ diff --git a/concepts/171_14.png b/concepts/171_14.png new file mode 100644 index 0000000000000000000000000000000000000000..7f3378a47d580c729cf55d85db34cc2f9f2b793f Binary files /dev/null and b/concepts/171_14.png differ diff --git a/concepts/171_6.png b/concepts/171_6.png new file mode 100644 index 0000000000000000000000000000000000000000..d70c0d58fea0ea1d5e693a0ea44bc67ea88d8149 Binary files /dev/null and b/concepts/171_6.png differ diff --git a/concepts/171_8.png b/concepts/171_8.png new file mode 100644 index 0000000000000000000000000000000000000000..69b637e279740aa7cb537dad6b6e74e28c179115 Binary files /dev/null and b/concepts/171_8.png differ diff --git a/concepts/172_10.png b/concepts/172_10.png new file mode 100644 index 0000000000000000000000000000000000000000..4037925bc1e8826166fc367c11e3a16c4946cb13 Binary files /dev/null and b/concepts/172_10.png differ diff --git a/concepts/172_11.png b/concepts/172_11.png new file mode 100644 index 0000000000000000000000000000000000000000..18d7bd5bf20345c126d39b2d621a55c7938862c2 Binary files /dev/null and b/concepts/172_11.png differ diff --git a/concepts/172_3.png b/concepts/172_3.png new file mode 100644 index 0000000000000000000000000000000000000000..a74158282a3b9ac101264a9f265f7fd019ceec6c Binary files /dev/null and b/concepts/172_3.png differ diff --git a/concepts/172_4.png b/concepts/172_4.png new file mode 100644 index 0000000000000000000000000000000000000000..205b5dff460b0dca75bcda736486c0d9a0900ba6 Binary files /dev/null and b/concepts/172_4.png differ diff --git a/concepts/172_5.png b/concepts/172_5.png new file mode 100644 index 0000000000000000000000000000000000000000..bc1725a721d4aa026fed6723c72d32c25878731e Binary files /dev/null and b/concepts/172_5.png differ diff --git a/concepts/172_6.png b/concepts/172_6.png new file mode 100644 index 0000000000000000000000000000000000000000..3e9fb6244e08a81a20eade007edad8dd2d6669d5 Binary files /dev/null and b/concepts/172_6.png differ diff --git a/concepts/172_7.png b/concepts/172_7.png new file mode 100644 index 0000000000000000000000000000000000000000..de97f7607bf53c704b5b88660511af3ec57b79ca Binary files /dev/null and b/concepts/172_7.png differ diff --git a/concepts/172_9.png b/concepts/172_9.png new file mode 100644 index 0000000000000000000000000000000000000000..601218ea830fd9ac8e4ed7fe47b2115f48270cfc Binary files /dev/null and b/concepts/172_9.png differ diff --git a/concepts/173_1.png b/concepts/173_1.png new file mode 100644 index 0000000000000000000000000000000000000000..93d767e0b278146a1cf07090d24c34b0a55b1f84 Binary files /dev/null and b/concepts/173_1.png differ diff --git a/concepts/173_12.png b/concepts/173_12.png new file mode 100644 index 0000000000000000000000000000000000000000..71eef91f804e34b1c374a106a7a43571b054fb21 Binary files /dev/null and b/concepts/173_12.png differ diff --git a/concepts/173_17.png b/concepts/173_17.png new file mode 100644 index 0000000000000000000000000000000000000000..a693424993819be83640398dd9264102ec5b4cfc Binary files /dev/null and b/concepts/173_17.png differ diff --git a/concepts/173_20.png b/concepts/173_20.png new file mode 100644 index 0000000000000000000000000000000000000000..e09c334a966c1a1aaff5c97d31edaa70971993db Binary files /dev/null and b/concepts/173_20.png differ diff --git a/concepts/173_5.png b/concepts/173_5.png new file mode 100644 index 0000000000000000000000000000000000000000..7cbfadc20288e869174144d469579174fc860430 Binary files /dev/null and b/concepts/173_5.png differ diff --git a/concepts/173_7.png b/concepts/173_7.png new file mode 100644 index 0000000000000000000000000000000000000000..ba101dfc1b5bad019a9ee3056ebf3df15f227237 Binary files /dev/null and b/concepts/173_7.png differ diff --git a/concepts/174_0.png b/concepts/174_0.png new file mode 100644 index 0000000000000000000000000000000000000000..007f26662009e0475f89ceea35f132ef5090798f Binary files /dev/null and b/concepts/174_0.png differ diff --git a/concepts/174_1.png b/concepts/174_1.png new file mode 100644 index 0000000000000000000000000000000000000000..6dae07c18c69f5a32eb19c586eb6183f0364ba44 Binary files /dev/null and b/concepts/174_1.png differ diff --git a/concepts/174_10.png b/concepts/174_10.png new file mode 100644 index 0000000000000000000000000000000000000000..ec02eb3f112c60c884cbd8157820c15040cd0d8c Binary files /dev/null and b/concepts/174_10.png differ diff --git a/concepts/174_12.png b/concepts/174_12.png new file mode 100644 index 0000000000000000000000000000000000000000..28bb8427938aaec234632fd0bf5f5083453f23e5 Binary files /dev/null and b/concepts/174_12.png differ diff --git a/concepts/174_3.png b/concepts/174_3.png new file mode 100644 index 0000000000000000000000000000000000000000..b210709590d155584fe91d9f2db44391213c622c Binary files /dev/null and b/concepts/174_3.png differ diff --git a/concepts/174_4.png b/concepts/174_4.png new file mode 100644 index 0000000000000000000000000000000000000000..02cdcfc4db373445b542f95ebb5d765f9d514cc9 Binary files /dev/null and b/concepts/174_4.png differ diff --git a/concepts/174_7.png b/concepts/174_7.png new file mode 100644 index 0000000000000000000000000000000000000000..4db31a3ddd9870c6027dbbd17ebe2a7562e2d7b2 Binary files /dev/null and b/concepts/174_7.png differ diff --git a/concepts/174_8.png b/concepts/174_8.png new file mode 100644 index 0000000000000000000000000000000000000000..e25837afebe5e416730a75787b9622d51b4eaaed Binary files /dev/null and b/concepts/174_8.png differ diff --git a/concepts/175_0.png b/concepts/175_0.png new file mode 100644 index 0000000000000000000000000000000000000000..9c19020f2bd1761c39364fccaf606fe441b190d4 Binary files /dev/null and b/concepts/175_0.png differ diff --git a/concepts/175_1.png b/concepts/175_1.png new file mode 100644 index 0000000000000000000000000000000000000000..90a065beda33e569a2689130d9062295d5093b29 Binary files /dev/null and b/concepts/175_1.png differ diff --git a/concepts/175_3.png b/concepts/175_3.png new file mode 100644 index 0000000000000000000000000000000000000000..9ba06e64bbb2c7b5adc9e4cc99a809e5992f93ee Binary files /dev/null and b/concepts/175_3.png differ diff --git a/concepts/175_4.png b/concepts/175_4.png new file mode 100644 index 0000000000000000000000000000000000000000..3e48e324998e5a77f666adaaafab372dfd116e9e Binary files /dev/null and b/concepts/175_4.png differ diff --git a/concepts/175_5.png b/concepts/175_5.png new file mode 100644 index 0000000000000000000000000000000000000000..8059c534e1d9e24f6483a6e5962d904120d5d062 Binary files /dev/null and b/concepts/175_5.png differ diff --git a/concepts/175_7.png b/concepts/175_7.png new file mode 100644 index 0000000000000000000000000000000000000000..f887ffbee52fa68662d59d2167128288386472ae Binary files /dev/null and b/concepts/175_7.png differ diff --git a/concepts/175_8.png b/concepts/175_8.png new file mode 100644 index 0000000000000000000000000000000000000000..2bf95266e24a9541a3fc1dc4455f25a8a404c5fb Binary files /dev/null and b/concepts/175_8.png differ diff --git a/concepts/175_9.png b/concepts/175_9.png new file mode 100644 index 0000000000000000000000000000000000000000..beb7d3f42b2feece9394ece2808872b0c9cb6f7a Binary files /dev/null and b/concepts/175_9.png differ diff --git a/concepts/176_0.png b/concepts/176_0.png new file mode 100644 index 0000000000000000000000000000000000000000..bdc9d123cccfeb85205107d412cd794dd9b65a16 Binary files /dev/null and b/concepts/176_0.png differ diff --git a/concepts/176_1.png b/concepts/176_1.png new file mode 100644 index 0000000000000000000000000000000000000000..31b092f40c9e8a65abe3b3e1f5347a5ae2593108 Binary files /dev/null and b/concepts/176_1.png differ diff --git a/concepts/176_10.png b/concepts/176_10.png new file mode 100644 index 0000000000000000000000000000000000000000..4f7e7ef045159b3974e69da4513e2eb424f7a336 Binary files /dev/null and b/concepts/176_10.png differ diff --git a/concepts/176_2.png b/concepts/176_2.png new file mode 100644 index 0000000000000000000000000000000000000000..644c9ac239a05e952913433e195720c3ba63c19f Binary files /dev/null and b/concepts/176_2.png differ diff --git a/concepts/176_4.png b/concepts/176_4.png new file mode 100644 index 0000000000000000000000000000000000000000..ab1e7d6109f5473f0ab59a7143c7d250f6759587 Binary files /dev/null and b/concepts/176_4.png differ diff --git a/concepts/176_6.png b/concepts/176_6.png new file mode 100644 index 0000000000000000000000000000000000000000..0a9e2ecf2827fbd0ed6ecd5ec378419d281242b8 Binary files /dev/null and b/concepts/176_6.png differ diff --git a/concepts/176_7.png b/concepts/176_7.png new file mode 100644 index 0000000000000000000000000000000000000000..96ebf8a378b7492444736abd1b470346ec5529b2 Binary files /dev/null and b/concepts/176_7.png differ diff --git a/concepts/176_9.png b/concepts/176_9.png new file mode 100644 index 0000000000000000000000000000000000000000..5ed2beb7d0702a32bb5649ecde5627cd374a4978 Binary files /dev/null and b/concepts/176_9.png differ diff --git a/concepts/177_0.png b/concepts/177_0.png new file mode 100644 index 0000000000000000000000000000000000000000..d42c9c6fd821ff485b272a36d2453cd46b394d8b Binary files /dev/null and b/concepts/177_0.png differ diff --git a/concepts/177_10.png b/concepts/177_10.png new file mode 100644 index 0000000000000000000000000000000000000000..b9c5d46ff8013bf4c83497991d85d68b38bf9ef5 Binary files /dev/null and b/concepts/177_10.png differ diff --git a/concepts/177_12.png b/concepts/177_12.png new file mode 100644 index 0000000000000000000000000000000000000000..e53f544569685cfb5d1056ccc6544d1b4bd6e91e Binary files /dev/null and b/concepts/177_12.png differ diff --git a/concepts/177_17.png b/concepts/177_17.png new file mode 100644 index 0000000000000000000000000000000000000000..3d5da89ff10ed5d856f42e5cff05363926538583 Binary files /dev/null and b/concepts/177_17.png differ diff --git a/concepts/177_4.png b/concepts/177_4.png new file mode 100644 index 0000000000000000000000000000000000000000..0f1bd6bb6e92ce136cbe24fcdbce5957329473e2 Binary files /dev/null and b/concepts/177_4.png differ diff --git a/concepts/177_5.png b/concepts/177_5.png new file mode 100644 index 0000000000000000000000000000000000000000..ee7e9bdd6a32855e71067f0c66f0a6bbee194e49 Binary files /dev/null and b/concepts/177_5.png differ diff --git a/concepts/177_7.png b/concepts/177_7.png new file mode 100644 index 0000000000000000000000000000000000000000..68cb893e640f398170b48c6107eedd8a11ca3e00 Binary files /dev/null and b/concepts/177_7.png differ diff --git a/concepts/177_8.png b/concepts/177_8.png new file mode 100644 index 0000000000000000000000000000000000000000..6fcaceb50a3a6ea12eee01226327677f87912496 Binary files /dev/null and b/concepts/177_8.png differ diff --git a/concepts/178_15.png b/concepts/178_15.png new file mode 100644 index 0000000000000000000000000000000000000000..a7fb345e4f15b9ae32bf58332998485f37593220 Binary files /dev/null and b/concepts/178_15.png differ diff --git a/concepts/178_5.png b/concepts/178_5.png new file mode 100644 index 0000000000000000000000000000000000000000..5774c702849238272c976cd240adebb0e98b43d7 Binary files /dev/null and b/concepts/178_5.png differ diff --git a/concepts/178_9.png b/concepts/178_9.png new file mode 100644 index 0000000000000000000000000000000000000000..e8f3c1f438a140894dc6ffe1fd8b0ec5c864d05d Binary files /dev/null and b/concepts/178_9.png differ diff --git a/concepts/179_1.png b/concepts/179_1.png new file mode 100644 index 0000000000000000000000000000000000000000..399c5d5b01014b021326766075a2bda8237f1389 Binary files /dev/null and b/concepts/179_1.png differ diff --git a/concepts/179_10.png b/concepts/179_10.png new file mode 100644 index 0000000000000000000000000000000000000000..6e7bfc7a18fb3c431e76d1db6783ac5f53426952 Binary files /dev/null and b/concepts/179_10.png differ diff --git a/concepts/179_2.png b/concepts/179_2.png new file mode 100644 index 0000000000000000000000000000000000000000..86a917766dacf2d51b7ddd496d3c01594843e029 Binary files /dev/null and b/concepts/179_2.png differ diff --git a/concepts/179_3.png b/concepts/179_3.png new file mode 100644 index 0000000000000000000000000000000000000000..e2383b7408ebbb361bbe9f6bb73106ba55f8a997 Binary files /dev/null and b/concepts/179_3.png differ diff --git a/concepts/179_4.png b/concepts/179_4.png new file mode 100644 index 0000000000000000000000000000000000000000..c59db10d31c47cc4ebc8e38815b87325f1a7b075 Binary files /dev/null and b/concepts/179_4.png differ diff --git a/concepts/179_5.png b/concepts/179_5.png new file mode 100644 index 0000000000000000000000000000000000000000..c9e569da387adae8ee6116b60c7902e914b82d6f Binary files /dev/null and b/concepts/179_5.png differ diff --git a/concepts/179_6.png b/concepts/179_6.png new file mode 100644 index 0000000000000000000000000000000000000000..a01b51f0913ebaf49534e7615c5b43b77d29546d Binary files /dev/null and b/concepts/179_6.png differ diff --git a/concepts/179_7.png b/concepts/179_7.png new file mode 100644 index 0000000000000000000000000000000000000000..103a0a94a76f20298bf4e3dd44323ab3fe44f26e Binary files /dev/null and b/concepts/179_7.png differ diff --git a/concepts/17_0.png b/concepts/17_0.png new file mode 100644 index 0000000000000000000000000000000000000000..a5086ec9630e1f0a3dc8a99b96fb6008f1e88906 Binary files /dev/null and b/concepts/17_0.png differ diff --git a/concepts/17_10.png b/concepts/17_10.png new file mode 100644 index 0000000000000000000000000000000000000000..64f9f196a14cab028c33051c4a11090ff607dbda Binary files /dev/null and b/concepts/17_10.png differ diff --git a/concepts/17_11.png b/concepts/17_11.png new file mode 100644 index 0000000000000000000000000000000000000000..95e7babf52ebfc5fb49f9b78cf2f46c70d7be1c6 Binary files /dev/null and b/concepts/17_11.png differ diff --git a/concepts/17_2.png b/concepts/17_2.png new file mode 100644 index 0000000000000000000000000000000000000000..90a1f4792878d21f7a56a798f6e11f781204e7a2 Binary files /dev/null and b/concepts/17_2.png differ diff --git a/concepts/17_4.png b/concepts/17_4.png new file mode 100644 index 0000000000000000000000000000000000000000..dc0b27aea4e19e069f070943bb209581b93b3806 Binary files /dev/null and b/concepts/17_4.png differ diff --git a/concepts/17_5.png b/concepts/17_5.png new file mode 100644 index 0000000000000000000000000000000000000000..7d3c83799e48c27b21e2ef94f015f6b8dca07a46 Binary files /dev/null and b/concepts/17_5.png differ diff --git a/concepts/17_7.png b/concepts/17_7.png new file mode 100644 index 0000000000000000000000000000000000000000..70358e79e3059a10c21d90fd778865a0841980d3 Binary files /dev/null and b/concepts/17_7.png differ diff --git a/concepts/17_8.png b/concepts/17_8.png new file mode 100644 index 0000000000000000000000000000000000000000..19e3e280d83a074fbe8cdb943ae49b936a55e5b1 Binary files /dev/null and b/concepts/17_8.png differ diff --git a/concepts/180_0.png b/concepts/180_0.png new file mode 100644 index 0000000000000000000000000000000000000000..bc86ede9a401385b6bf3f5dac32aecf9659e8dfe Binary files /dev/null and b/concepts/180_0.png differ diff --git a/concepts/180_1.png b/concepts/180_1.png new file mode 100644 index 0000000000000000000000000000000000000000..3d15beb399c6e17bb07c2ee447c86cc52b558bc6 Binary files /dev/null and b/concepts/180_1.png differ diff --git a/concepts/180_3.png b/concepts/180_3.png new file mode 100644 index 0000000000000000000000000000000000000000..1a59cc839aeb09f3f2eed69bdfbfc25208ea067d Binary files /dev/null and b/concepts/180_3.png differ diff --git a/concepts/180_4.png b/concepts/180_4.png new file mode 100644 index 0000000000000000000000000000000000000000..c96b7a1a20304d3255bb33a48927bd3558ded943 Binary files /dev/null and b/concepts/180_4.png differ diff --git a/concepts/180_5.png b/concepts/180_5.png new file mode 100644 index 0000000000000000000000000000000000000000..35ce55df9034b93ec4fd3abe24f0fa64805d6991 Binary files /dev/null and b/concepts/180_5.png differ diff --git a/concepts/180_6.png b/concepts/180_6.png new file mode 100644 index 0000000000000000000000000000000000000000..60fceebd965b8fe07fc88b046394abbd7d609337 Binary files /dev/null and b/concepts/180_6.png differ diff --git a/concepts/180_7.png b/concepts/180_7.png new file mode 100644 index 0000000000000000000000000000000000000000..195788fae324bdd82ca7d3ca83c71a93c8570676 Binary files /dev/null and b/concepts/180_7.png differ diff --git a/concepts/180_8.png b/concepts/180_8.png new file mode 100644 index 0000000000000000000000000000000000000000..484755d2f510c7b0940d770cedb5d2974abeb3f1 Binary files /dev/null and b/concepts/180_8.png differ diff --git a/concepts/182_0.png b/concepts/182_0.png new file mode 100644 index 0000000000000000000000000000000000000000..cbc857a8f4856ee06ace2c1fa7d48c2809966c62 Binary files /dev/null and b/concepts/182_0.png differ diff --git a/concepts/182_1.png b/concepts/182_1.png new file mode 100644 index 0000000000000000000000000000000000000000..6ca22b3e07f89903f7fb5695fa5a75d13534fc0d Binary files /dev/null and b/concepts/182_1.png differ diff --git a/concepts/182_2.png b/concepts/182_2.png new file mode 100644 index 0000000000000000000000000000000000000000..29b4a8542db023e991d52b1b5add5e2f54baa236 Binary files /dev/null and b/concepts/182_2.png differ diff --git a/concepts/182_3.png b/concepts/182_3.png new file mode 100644 index 0000000000000000000000000000000000000000..f742f07d79b726409cff28188afa7e36570de08a Binary files /dev/null and b/concepts/182_3.png differ diff --git a/concepts/182_4.png b/concepts/182_4.png new file mode 100644 index 0000000000000000000000000000000000000000..e37be3f15aa3ae5e6282cfa70d66212f3a6e71eb Binary files /dev/null and b/concepts/182_4.png differ diff --git a/concepts/182_6.png b/concepts/182_6.png new file mode 100644 index 0000000000000000000000000000000000000000..96b865b2ac50c662fb655db03df3e025dbde9dd4 Binary files /dev/null and b/concepts/182_6.png differ diff --git a/concepts/182_7.png b/concepts/182_7.png new file mode 100644 index 0000000000000000000000000000000000000000..d3eef8aeb381cb552688cb52ce8a7f692e1cd5db Binary files /dev/null and b/concepts/182_7.png differ diff --git a/concepts/182_8.png b/concepts/182_8.png new file mode 100644 index 0000000000000000000000000000000000000000..17f2a54d64836f08707ba0200976c49b3b491a16 Binary files /dev/null and b/concepts/182_8.png differ diff --git a/concepts/183_0.png b/concepts/183_0.png new file mode 100644 index 0000000000000000000000000000000000000000..d7fbea2377b93de64ed6e241674eb9ff4cb2cfdf Binary files /dev/null and b/concepts/183_0.png differ diff --git a/concepts/183_1.png b/concepts/183_1.png new file mode 100644 index 0000000000000000000000000000000000000000..479d56ade795074ebb062ef9cd1a26356d3f20a1 Binary files /dev/null and b/concepts/183_1.png differ diff --git a/concepts/183_2.png b/concepts/183_2.png new file mode 100644 index 0000000000000000000000000000000000000000..05dd300ac497375cec424af5f080a803f917a3f6 Binary files /dev/null and b/concepts/183_2.png differ diff --git a/concepts/183_3.png b/concepts/183_3.png new file mode 100644 index 0000000000000000000000000000000000000000..2dee8fcf30b19263ae1807cc270b634c23da75f4 Binary files /dev/null and b/concepts/183_3.png differ diff --git a/concepts/183_4.png b/concepts/183_4.png new file mode 100644 index 0000000000000000000000000000000000000000..d8c8d945f8c0ed030f2c08ad85f5df551e1d5a37 Binary files /dev/null and b/concepts/183_4.png differ diff --git a/concepts/183_5.png b/concepts/183_5.png new file mode 100644 index 0000000000000000000000000000000000000000..29ed4e2def4acb2278b8db82a503ac99e98c749e Binary files /dev/null and b/concepts/183_5.png differ diff --git a/concepts/183_6.png b/concepts/183_6.png new file mode 100644 index 0000000000000000000000000000000000000000..f5ed973c287bca5783fcac47beec6c627935c30c Binary files /dev/null and b/concepts/183_6.png differ diff --git a/concepts/183_7.png b/concepts/183_7.png new file mode 100644 index 0000000000000000000000000000000000000000..d0d936bacbdca181ae0c8211a28041d2ccf7fa58 Binary files /dev/null and b/concepts/183_7.png differ diff --git a/concepts/184_0.png b/concepts/184_0.png new file mode 100644 index 0000000000000000000000000000000000000000..59412790dd81268cdfbebaf31fff37cbe8c198d7 Binary files /dev/null and b/concepts/184_0.png differ diff --git a/concepts/184_11.png b/concepts/184_11.png new file mode 100644 index 0000000000000000000000000000000000000000..3ef19ef9edd4cda79ee135454970f486e71c7e62 Binary files /dev/null and b/concepts/184_11.png differ diff --git a/concepts/184_14.png b/concepts/184_14.png new file mode 100644 index 0000000000000000000000000000000000000000..37f1e3208cff1f6ab997ad75a4a956f3b5fd6748 Binary files /dev/null and b/concepts/184_14.png differ diff --git a/concepts/184_17.png b/concepts/184_17.png new file mode 100644 index 0000000000000000000000000000000000000000..e6897ce257ff0dd04f3936f38b956e3aa92b672d Binary files /dev/null and b/concepts/184_17.png differ diff --git a/concepts/184_19.png b/concepts/184_19.png new file mode 100644 index 0000000000000000000000000000000000000000..f29a659a3cbdd31f8c479543b3a87e7b81515952 Binary files /dev/null and b/concepts/184_19.png differ diff --git a/concepts/184_3.png b/concepts/184_3.png new file mode 100644 index 0000000000000000000000000000000000000000..86794518b4d0b3486915d7cd5aa33bfd63430101 Binary files /dev/null and b/concepts/184_3.png differ diff --git a/concepts/184_7.png b/concepts/184_7.png new file mode 100644 index 0000000000000000000000000000000000000000..bc212cac126eaf5cf3bbddabe28af533fe6c199b Binary files /dev/null and b/concepts/184_7.png differ diff --git a/concepts/184_9.png b/concepts/184_9.png new file mode 100644 index 0000000000000000000000000000000000000000..60291d2b335040ad820c4b2dacc1937034269b79 Binary files /dev/null and b/concepts/184_9.png differ diff --git a/concepts/185_0.png b/concepts/185_0.png new file mode 100644 index 0000000000000000000000000000000000000000..6ec1483ee1e2bf1d326b0d7a77eb5101e18bca97 Binary files /dev/null and b/concepts/185_0.png differ diff --git a/concepts/185_1.png b/concepts/185_1.png new file mode 100644 index 0000000000000000000000000000000000000000..5ed75e87fc1a5a22222487c7e2695160accc5d38 Binary files /dev/null and b/concepts/185_1.png differ diff --git a/concepts/185_2.png b/concepts/185_2.png new file mode 100644 index 0000000000000000000000000000000000000000..47ca85c866191d11f08ce9cdf12ddbdbcf67554d Binary files /dev/null and b/concepts/185_2.png differ diff --git a/concepts/185_3.png b/concepts/185_3.png new file mode 100644 index 0000000000000000000000000000000000000000..ec4e6131c7e0421b8adf8c97b12a0675ef93e99a Binary files /dev/null and b/concepts/185_3.png differ diff --git a/concepts/185_5.png b/concepts/185_5.png new file mode 100644 index 0000000000000000000000000000000000000000..8ab527a0fdc16639b2706e2e56b6cc9fb1f2d7b3 Binary files /dev/null and b/concepts/185_5.png differ diff --git a/concepts/185_6.png b/concepts/185_6.png new file mode 100644 index 0000000000000000000000000000000000000000..ec64656bcd68b25bab9afa87e9882091b9a0caa6 Binary files /dev/null and b/concepts/185_6.png differ diff --git a/concepts/185_7.png b/concepts/185_7.png new file mode 100644 index 0000000000000000000000000000000000000000..80103ee7567c61df829b053d327691455d1c01a7 Binary files /dev/null and b/concepts/185_7.png differ diff --git a/concepts/185_8.png b/concepts/185_8.png new file mode 100644 index 0000000000000000000000000000000000000000..485bebc188a8c5f233b58f364669e35e9578b445 Binary files /dev/null and b/concepts/185_8.png differ diff --git a/concepts/186_0.png b/concepts/186_0.png new file mode 100644 index 0000000000000000000000000000000000000000..91fc3c556fc80982ea54e83e8b4ad058a4a20580 Binary files /dev/null and b/concepts/186_0.png differ diff --git a/concepts/186_1.png b/concepts/186_1.png new file mode 100644 index 0000000000000000000000000000000000000000..85158db6dcac0669e835eba1840d455cdef9579f Binary files /dev/null and b/concepts/186_1.png differ diff --git a/concepts/186_2.png b/concepts/186_2.png new file mode 100644 index 0000000000000000000000000000000000000000..80ecdde676bec452d10cc986e15dbe3cd4e5b3e5 Binary files /dev/null and b/concepts/186_2.png differ diff --git a/concepts/186_3.png b/concepts/186_3.png new file mode 100644 index 0000000000000000000000000000000000000000..276d0f64cf54b73163f8ac59cd151e5c4059aad1 Binary files /dev/null and b/concepts/186_3.png differ diff --git a/concepts/186_5.png b/concepts/186_5.png new file mode 100644 index 0000000000000000000000000000000000000000..616c88598823040d1db85fb5be090bb8a9db5eef Binary files /dev/null and b/concepts/186_5.png differ diff --git a/concepts/186_6.png b/concepts/186_6.png new file mode 100644 index 0000000000000000000000000000000000000000..755c7cc740e23022ccb7c401f3487fa781e45964 Binary files /dev/null and b/concepts/186_6.png differ diff --git a/concepts/186_7.png b/concepts/186_7.png new file mode 100644 index 0000000000000000000000000000000000000000..2642cb4abf8735c6edff78a089de378ec2988a97 Binary files /dev/null and b/concepts/186_7.png differ diff --git a/concepts/186_8.png b/concepts/186_8.png new file mode 100644 index 0000000000000000000000000000000000000000..b3c1171fd3a63f03131abda4b3b9fec0b2330b71 Binary files /dev/null and b/concepts/186_8.png differ diff --git a/concepts/188_0.png b/concepts/188_0.png new file mode 100644 index 0000000000000000000000000000000000000000..c8a3461a7b86b5e556c2f55009767a5dc327a603 Binary files /dev/null and b/concepts/188_0.png differ diff --git a/concepts/188_1.png b/concepts/188_1.png new file mode 100644 index 0000000000000000000000000000000000000000..6e6c2f96b9013977020de7603041520fa83b1a98 Binary files /dev/null and b/concepts/188_1.png differ diff --git a/concepts/188_10.png b/concepts/188_10.png new file mode 100644 index 0000000000000000000000000000000000000000..77c11828cc0bd619721d05dc0122d923bdc074a6 Binary files /dev/null and b/concepts/188_10.png differ diff --git a/concepts/188_11.png b/concepts/188_11.png new file mode 100644 index 0000000000000000000000000000000000000000..7f7e4e733b8758495afb90346f850173ea83e508 Binary files /dev/null and b/concepts/188_11.png differ diff --git a/concepts/188_4.png b/concepts/188_4.png new file mode 100644 index 0000000000000000000000000000000000000000..f7f5c9800622790fa640a031f3ea422ab3eb28e0 Binary files /dev/null and b/concepts/188_4.png differ diff --git a/concepts/188_6.png b/concepts/188_6.png new file mode 100644 index 0000000000000000000000000000000000000000..859ca6eb94e38fddffa3d8ec738fa4350b9337cf Binary files /dev/null and b/concepts/188_6.png differ diff --git a/concepts/188_8.png b/concepts/188_8.png new file mode 100644 index 0000000000000000000000000000000000000000..974ccd22948d299ccdcc364e722e85b5019c1170 Binary files /dev/null and b/concepts/188_8.png differ diff --git a/concepts/18_0.png b/concepts/18_0.png new file mode 100644 index 0000000000000000000000000000000000000000..236f730dbfb2f8c774b71e4b33979081a5464af6 Binary files /dev/null and b/concepts/18_0.png differ diff --git a/concepts/18_11.png b/concepts/18_11.png new file mode 100644 index 0000000000000000000000000000000000000000..1e55cd86b7ad3899d8235e68de53f7f23b87c3a0 Binary files /dev/null and b/concepts/18_11.png differ diff --git a/concepts/18_13.png b/concepts/18_13.png new file mode 100644 index 0000000000000000000000000000000000000000..ae2e78ad174884194e59051f630ce66225646745 Binary files /dev/null and b/concepts/18_13.png differ diff --git a/concepts/18_2.png b/concepts/18_2.png new file mode 100644 index 0000000000000000000000000000000000000000..ab36062266ae9c66db6320b196add07ee01ef0de Binary files /dev/null and b/concepts/18_2.png differ diff --git a/concepts/18_3.png b/concepts/18_3.png new file mode 100644 index 0000000000000000000000000000000000000000..b56ff0180f18a73fdc56f29cf50a6fd2783a2d26 Binary files /dev/null and b/concepts/18_3.png differ diff --git a/concepts/18_5.png b/concepts/18_5.png new file mode 100644 index 0000000000000000000000000000000000000000..c95e563f669c2415d2ec3f272eb24e8ec0bbab05 Binary files /dev/null and b/concepts/18_5.png differ diff --git a/concepts/18_8.png b/concepts/18_8.png new file mode 100644 index 0000000000000000000000000000000000000000..0a21f845c7999ce116910a7df12c0ed774a78e03 Binary files /dev/null and b/concepts/18_8.png differ diff --git a/concepts/18_9.png b/concepts/18_9.png new file mode 100644 index 0000000000000000000000000000000000000000..82357842666d1f50b4fbca38ac8319521c51eed3 Binary files /dev/null and b/concepts/18_9.png differ diff --git a/concepts/190_0.png b/concepts/190_0.png new file mode 100644 index 0000000000000000000000000000000000000000..a487df5171265c45c2e2ea457c288205d6878f29 Binary files /dev/null and b/concepts/190_0.png differ diff --git a/concepts/190_1.png b/concepts/190_1.png new file mode 100644 index 0000000000000000000000000000000000000000..82797e8a8cf4a5cbd8f804ed7d3d45e70e3368de Binary files /dev/null and b/concepts/190_1.png differ diff --git a/concepts/190_2.png b/concepts/190_2.png new file mode 100644 index 0000000000000000000000000000000000000000..7742ee24b1eaee5990c3547f1c058248c7423298 Binary files /dev/null and b/concepts/190_2.png differ diff --git a/concepts/190_3.png b/concepts/190_3.png new file mode 100644 index 0000000000000000000000000000000000000000..20b70f9ebc31f68bbbb4cef31a32faa377e32635 Binary files /dev/null and b/concepts/190_3.png differ diff --git a/concepts/190_4.png b/concepts/190_4.png new file mode 100644 index 0000000000000000000000000000000000000000..e8ae63b28fd4d795bd81bcef419f72ac664e6169 Binary files /dev/null and b/concepts/190_4.png differ diff --git a/concepts/190_6.png b/concepts/190_6.png new file mode 100644 index 0000000000000000000000000000000000000000..bbabe2f8a045e3342f9c41f3b188b06ac9888cb9 Binary files /dev/null and b/concepts/190_6.png differ diff --git a/concepts/190_7.png b/concepts/190_7.png new file mode 100644 index 0000000000000000000000000000000000000000..7bd90a63819c8fdf52d123122ef9d156641fbe00 Binary files /dev/null and b/concepts/190_7.png differ diff --git a/concepts/190_8.png b/concepts/190_8.png new file mode 100644 index 0000000000000000000000000000000000000000..a35f7138c15e15bebfe38cd715f8325322d67623 Binary files /dev/null and b/concepts/190_8.png differ diff --git a/concepts/191_0.png b/concepts/191_0.png new file mode 100644 index 0000000000000000000000000000000000000000..2e42ffd3a2168ee71b4dc885200d91a4a2b7e4dc Binary files /dev/null and b/concepts/191_0.png differ diff --git a/concepts/191_1.png b/concepts/191_1.png new file mode 100644 index 0000000000000000000000000000000000000000..7fb46693c642d5b0bd9c41c91d16d5e5e0345c8a Binary files /dev/null and b/concepts/191_1.png differ diff --git a/concepts/191_10.png b/concepts/191_10.png new file mode 100644 index 0000000000000000000000000000000000000000..553769845073261a2556cbcfd22a5e9fa8155162 Binary files /dev/null and b/concepts/191_10.png differ diff --git a/concepts/191_3.png b/concepts/191_3.png new file mode 100644 index 0000000000000000000000000000000000000000..4619215a5a12fbd7105b1d253e699a77d17b6a2a Binary files /dev/null and b/concepts/191_3.png differ diff --git a/concepts/191_4.png b/concepts/191_4.png new file mode 100644 index 0000000000000000000000000000000000000000..cd1536ab22b7b04ea7cf986bfba819c0b4143bfd Binary files /dev/null and b/concepts/191_4.png differ diff --git a/concepts/191_5.png b/concepts/191_5.png new file mode 100644 index 0000000000000000000000000000000000000000..3bb2a4845fd1b15a5d36b95ee597edb1ad41ee96 Binary files /dev/null and b/concepts/191_5.png differ diff --git a/concepts/191_7.png b/concepts/191_7.png new file mode 100644 index 0000000000000000000000000000000000000000..e0d3611a3242b0ca126825824f06d1e1a9a1fc4f Binary files /dev/null and b/concepts/191_7.png differ diff --git a/concepts/191_9.png b/concepts/191_9.png new file mode 100644 index 0000000000000000000000000000000000000000..6f50a4292620b9b7264c76b8928445667e9e1c68 Binary files /dev/null and b/concepts/191_9.png differ diff --git a/concepts/192_0.png b/concepts/192_0.png new file mode 100644 index 0000000000000000000000000000000000000000..e8779c2c3ca2c711fd475f26ee2355af354770cf Binary files /dev/null and b/concepts/192_0.png differ diff --git a/concepts/192_1.png b/concepts/192_1.png new file mode 100644 index 0000000000000000000000000000000000000000..1209ba4d7f0d81471146de346b1edd05f0c0417e Binary files /dev/null and b/concepts/192_1.png differ diff --git a/concepts/192_2.png b/concepts/192_2.png new file mode 100644 index 0000000000000000000000000000000000000000..dbd7f6bf104e90e1cb4017ed94cf5d08a0f65173 Binary files /dev/null and b/concepts/192_2.png differ diff --git a/concepts/192_3.png b/concepts/192_3.png new file mode 100644 index 0000000000000000000000000000000000000000..fa0a8e68568c577b250ceff014c75463912eeaf7 Binary files /dev/null and b/concepts/192_3.png differ diff --git a/concepts/192_4.png b/concepts/192_4.png new file mode 100644 index 0000000000000000000000000000000000000000..5cd13a7ce3cb345a45d39c3919712cd68fbaaaec Binary files /dev/null and b/concepts/192_4.png differ diff --git a/concepts/192_5.png b/concepts/192_5.png new file mode 100644 index 0000000000000000000000000000000000000000..63b595bd2d6fd807008590cab1e8a64b0988cea0 Binary files /dev/null and b/concepts/192_5.png differ diff --git a/concepts/192_6.png b/concepts/192_6.png new file mode 100644 index 0000000000000000000000000000000000000000..d2749a1c2b15623782dd2b53c96c02e16952ad04 Binary files /dev/null and b/concepts/192_6.png differ diff --git a/concepts/192_8.png b/concepts/192_8.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac47bf328d4f01a53637532dc2d0aaaa72e95e0 Binary files /dev/null and b/concepts/192_8.png differ diff --git a/concepts/193_0.png b/concepts/193_0.png new file mode 100644 index 0000000000000000000000000000000000000000..12f31025f945b7160eef506836eba2c07a06bf6c Binary files /dev/null and b/concepts/193_0.png differ diff --git a/concepts/193_1.png b/concepts/193_1.png new file mode 100644 index 0000000000000000000000000000000000000000..864774055c124fecdc9dcfe0aea472a87344a9bc Binary files /dev/null and b/concepts/193_1.png differ diff --git a/concepts/193_13.png b/concepts/193_13.png new file mode 100644 index 0000000000000000000000000000000000000000..84d8ac33b536120e077c68d5240ce53eb4c06d68 Binary files /dev/null and b/concepts/193_13.png differ diff --git a/concepts/193_14.png b/concepts/193_14.png new file mode 100644 index 0000000000000000000000000000000000000000..b40c62c2568136e15113bcf38fb05659fde6dfaf Binary files /dev/null and b/concepts/193_14.png differ diff --git a/concepts/193_19.png b/concepts/193_19.png new file mode 100644 index 0000000000000000000000000000000000000000..ee09493b44c9c8ddc1412956e0074f960a55eac5 Binary files /dev/null and b/concepts/193_19.png differ diff --git a/concepts/193_8.png b/concepts/193_8.png new file mode 100644 index 0000000000000000000000000000000000000000..832bce4e0a82968283d75b43a87c00f7eef897cf Binary files /dev/null and b/concepts/193_8.png differ diff --git a/concepts/193_9.png b/concepts/193_9.png new file mode 100644 index 0000000000000000000000000000000000000000..7417c66bb8299575cabcf6eb9bf4fa9a47fb5c23 Binary files /dev/null and b/concepts/193_9.png differ diff --git a/concepts/194_0.png b/concepts/194_0.png new file mode 100644 index 0000000000000000000000000000000000000000..ac9b8dfb6759ac401746772ba2c523954e7c98fd Binary files /dev/null and b/concepts/194_0.png differ diff --git a/concepts/194_11.png b/concepts/194_11.png new file mode 100644 index 0000000000000000000000000000000000000000..d8f5ba5798a7a830abc4a96bc19e07e4fce9c7bf Binary files /dev/null and b/concepts/194_11.png differ diff --git a/concepts/194_2.png b/concepts/194_2.png new file mode 100644 index 0000000000000000000000000000000000000000..822058692776bfc0b3784a0ec81ca815883e2947 Binary files /dev/null and b/concepts/194_2.png differ diff --git a/concepts/194_3.png b/concepts/194_3.png new file mode 100644 index 0000000000000000000000000000000000000000..4ed6891042140bcb27d311880f547ebede8bfb98 Binary files /dev/null and b/concepts/194_3.png differ diff --git a/concepts/194_5.png b/concepts/194_5.png new file mode 100644 index 0000000000000000000000000000000000000000..663b3037b8c966a4fc3a454e97f99b4dd3f43136 Binary files /dev/null and b/concepts/194_5.png differ diff --git a/concepts/194_7.png b/concepts/194_7.png new file mode 100644 index 0000000000000000000000000000000000000000..ba7790451b175972ae60ee907faa464231bb5e6d Binary files /dev/null and b/concepts/194_7.png differ diff --git a/concepts/194_8.png b/concepts/194_8.png new file mode 100644 index 0000000000000000000000000000000000000000..6e54b15d274e502cb80584c12598781422eb5379 Binary files /dev/null and b/concepts/194_8.png differ diff --git a/concepts/194_9.png b/concepts/194_9.png new file mode 100644 index 0000000000000000000000000000000000000000..543c5606f4457bc2e7e8b8d283cf4f13417faf7e Binary files /dev/null and b/concepts/194_9.png differ diff --git a/concepts/195_0.png b/concepts/195_0.png new file mode 100644 index 0000000000000000000000000000000000000000..2352045fa2ce588be0b28a8f6aa16254c2f997f1 Binary files /dev/null and b/concepts/195_0.png differ diff --git a/concepts/195_2.png b/concepts/195_2.png new file mode 100644 index 0000000000000000000000000000000000000000..8a15658c92b0ee38291339116f66b8faef08a83d Binary files /dev/null and b/concepts/195_2.png differ diff --git a/concepts/195_3.png b/concepts/195_3.png new file mode 100644 index 0000000000000000000000000000000000000000..7983a3b86665d6a8c1c4fdd2de2ed391bcd3a939 Binary files /dev/null and b/concepts/195_3.png differ diff --git a/concepts/195_4.png b/concepts/195_4.png new file mode 100644 index 0000000000000000000000000000000000000000..87e6b16b8418d186dc2335cb9335ba202924e995 Binary files /dev/null and b/concepts/195_4.png differ diff --git a/concepts/195_5.png b/concepts/195_5.png new file mode 100644 index 0000000000000000000000000000000000000000..310554a4a28a502e607f35aa24a2aa6f35b6582f Binary files /dev/null and b/concepts/195_5.png differ diff --git a/concepts/195_6.png b/concepts/195_6.png new file mode 100644 index 0000000000000000000000000000000000000000..ca6dc83917539ff5beef303ef203aeb53b800c32 Binary files /dev/null and b/concepts/195_6.png differ diff --git a/concepts/195_7.png b/concepts/195_7.png new file mode 100644 index 0000000000000000000000000000000000000000..15e00b23419d1dcfb9fc7c41aed2bb6f44e5b0bd Binary files /dev/null and b/concepts/195_7.png differ diff --git a/concepts/195_8.png b/concepts/195_8.png new file mode 100644 index 0000000000000000000000000000000000000000..f17fba0dbb02e4993fd6cab3457e87cdb4932c32 Binary files /dev/null and b/concepts/195_8.png differ diff --git a/concepts/196_10.png b/concepts/196_10.png new file mode 100644 index 0000000000000000000000000000000000000000..166b13be56f1697c3260b323d4f5cf45c69bd1ed Binary files /dev/null and b/concepts/196_10.png differ diff --git a/concepts/196_2.png b/concepts/196_2.png new file mode 100644 index 0000000000000000000000000000000000000000..5d04f3a35ee0b6e21a24a11973c8714ba5909f57 Binary files /dev/null and b/concepts/196_2.png differ diff --git a/concepts/196_21.png b/concepts/196_21.png new file mode 100644 index 0000000000000000000000000000000000000000..c175436f0a30ba526ed0ef0257ba9eb1ee7c1e02 Binary files /dev/null and b/concepts/196_21.png differ diff --git a/concepts/196_6.png b/concepts/196_6.png new file mode 100644 index 0000000000000000000000000000000000000000..881f68a7d06a7ec08ef37b42974b1d3aef22fef8 Binary files /dev/null and b/concepts/196_6.png differ diff --git a/concepts/196_8.png b/concepts/196_8.png new file mode 100644 index 0000000000000000000000000000000000000000..7732b67e861eeeff2b4e4a8a2776ac3d093e1104 Binary files /dev/null and b/concepts/196_8.png differ diff --git a/concepts/196_9.png b/concepts/196_9.png new file mode 100644 index 0000000000000000000000000000000000000000..79f431f35edddabad5b3af86d7d24f168ce730f9 Binary files /dev/null and b/concepts/196_9.png differ diff --git a/concepts/197_0.png b/concepts/197_0.png new file mode 100644 index 0000000000000000000000000000000000000000..bedd852460e02f7fb5d3f129ffe2e36b67e45fc3 Binary files /dev/null and b/concepts/197_0.png differ diff --git a/concepts/197_1.png b/concepts/197_1.png new file mode 100644 index 0000000000000000000000000000000000000000..7967b100e732daff8a6b5274fd8de9be493c3945 Binary files /dev/null and b/concepts/197_1.png differ diff --git a/concepts/197_10.png b/concepts/197_10.png new file mode 100644 index 0000000000000000000000000000000000000000..f3b7243a4cca5c2a184db32ab15e4e862a3953de Binary files /dev/null and b/concepts/197_10.png differ diff --git a/concepts/197_2.png b/concepts/197_2.png new file mode 100644 index 0000000000000000000000000000000000000000..62512d7e1220468ba7eb39bdcadd1e5fbda4c4bb Binary files /dev/null and b/concepts/197_2.png differ diff --git a/concepts/197_3.png b/concepts/197_3.png new file mode 100644 index 0000000000000000000000000000000000000000..942e2ea4338c5cfc6f9f13fe0f0881b876544ac9 Binary files /dev/null and b/concepts/197_3.png differ diff --git a/concepts/197_5.png b/concepts/197_5.png new file mode 100644 index 0000000000000000000000000000000000000000..527497bdd52d521531d3bf698f5927624ae8dd65 Binary files /dev/null and b/concepts/197_5.png differ diff --git a/concepts/197_6.png b/concepts/197_6.png new file mode 100644 index 0000000000000000000000000000000000000000..eda2da98bd068f5dceaeddd096de0b33b5a8cd90 Binary files /dev/null and b/concepts/197_6.png differ diff --git a/concepts/197_9.png b/concepts/197_9.png new file mode 100644 index 0000000000000000000000000000000000000000..0f8926d3269bce647b86b956226c4d49bd9200d3 Binary files /dev/null and b/concepts/197_9.png differ diff --git a/concepts/198_0.png b/concepts/198_0.png new file mode 100644 index 0000000000000000000000000000000000000000..4f22ae2e2bcffe89926e261070d773b10e0dfd9b Binary files /dev/null and b/concepts/198_0.png differ diff --git a/concepts/198_1.png b/concepts/198_1.png new file mode 100644 index 0000000000000000000000000000000000000000..f22ab23d7551e843b3f2c0b9cd580c7f8925e49d Binary files /dev/null and b/concepts/198_1.png differ diff --git a/concepts/198_11.png b/concepts/198_11.png new file mode 100644 index 0000000000000000000000000000000000000000..8d6eec0642967311af5e2e498e3d836f6e785b76 Binary files /dev/null and b/concepts/198_11.png differ diff --git a/concepts/198_2.png b/concepts/198_2.png new file mode 100644 index 0000000000000000000000000000000000000000..f9dda90d676ee8de21badd4c401bf92f7aac8bd9 Binary files /dev/null and b/concepts/198_2.png differ diff --git a/concepts/198_3.png b/concepts/198_3.png new file mode 100644 index 0000000000000000000000000000000000000000..a0819948a7e8cab9cacbfbe8d4e70387be29559b Binary files /dev/null and b/concepts/198_3.png differ diff --git a/concepts/198_4.png b/concepts/198_4.png new file mode 100644 index 0000000000000000000000000000000000000000..f46574854c03f915f290015314da52c92bff9bd4 Binary files /dev/null and b/concepts/198_4.png differ diff --git a/concepts/198_6.png b/concepts/198_6.png new file mode 100644 index 0000000000000000000000000000000000000000..2a43717a4b3620344659b1ba95e1d0ce30046d8f Binary files /dev/null and b/concepts/198_6.png differ diff --git a/concepts/198_8.png b/concepts/198_8.png new file mode 100644 index 0000000000000000000000000000000000000000..a25eb3587fb00c21c0356d05fd441adfa2395aee Binary files /dev/null and b/concepts/198_8.png differ diff --git a/concepts/199_1.png b/concepts/199_1.png new file mode 100644 index 0000000000000000000000000000000000000000..4db9e8cd01580e59217d9cfe43981b09d93c1e2c Binary files /dev/null and b/concepts/199_1.png differ diff --git a/concepts/199_14.png b/concepts/199_14.png new file mode 100644 index 0000000000000000000000000000000000000000..5fd0ed69816c29249eb350634092297ebae94e9f Binary files /dev/null and b/concepts/199_14.png differ diff --git a/concepts/199_19.png b/concepts/199_19.png new file mode 100644 index 0000000000000000000000000000000000000000..91698322b5cf11dc6992b4b129045d99d5f8a8dd Binary files /dev/null and b/concepts/199_19.png differ diff --git a/concepts/199_2.png b/concepts/199_2.png new file mode 100644 index 0000000000000000000000000000000000000000..14360ac9c5f89d9b3859910b3d39e660ae477370 Binary files /dev/null and b/concepts/199_2.png differ diff --git a/concepts/199_5.png b/concepts/199_5.png new file mode 100644 index 0000000000000000000000000000000000000000..0452e9273731460febf2adaa971988fa0f776462 Binary files /dev/null and b/concepts/199_5.png differ diff --git a/concepts/199_6.png b/concepts/199_6.png new file mode 100644 index 0000000000000000000000000000000000000000..da2f9868dc6daa505cabcc62155deb7fd5c64570 Binary files /dev/null and b/concepts/199_6.png differ diff --git a/concepts/199_7.png b/concepts/199_7.png new file mode 100644 index 0000000000000000000000000000000000000000..d32011d1d0ccb8774a7b92ae28e291f47a5ad3ef Binary files /dev/null and b/concepts/199_7.png differ diff --git a/concepts/199_8.png b/concepts/199_8.png new file mode 100644 index 0000000000000000000000000000000000000000..3437f1b598b89d9a79afa77221b07677f6255ff9 Binary files /dev/null and b/concepts/199_8.png differ diff --git a/concepts/19_0.png b/concepts/19_0.png new file mode 100644 index 0000000000000000000000000000000000000000..012225dbef9502e5281bf7e75f97da70b803de59 Binary files /dev/null and b/concepts/19_0.png differ diff --git a/concepts/19_10.png b/concepts/19_10.png new file mode 100644 index 0000000000000000000000000000000000000000..ecba046914da68429ad7de776d4f638a0fd649fc Binary files /dev/null and b/concepts/19_10.png differ diff --git a/concepts/19_11.png b/concepts/19_11.png new file mode 100644 index 0000000000000000000000000000000000000000..5fc9e4540e2862014e0cbe0b6b121140f547c922 Binary files /dev/null and b/concepts/19_11.png differ diff --git a/concepts/19_2.png b/concepts/19_2.png new file mode 100644 index 0000000000000000000000000000000000000000..214c4631a1825950457509068b04ffeff9e317ed Binary files /dev/null and b/concepts/19_2.png differ diff --git a/concepts/19_3.png b/concepts/19_3.png new file mode 100644 index 0000000000000000000000000000000000000000..7777b127cc7dc351184ea64fad8dbb7b9ffb9292 Binary files /dev/null and b/concepts/19_3.png differ diff --git a/concepts/19_4.png b/concepts/19_4.png new file mode 100644 index 0000000000000000000000000000000000000000..65eec2cb420c39b8c7b8d709963ff3c14b8a355f Binary files /dev/null and b/concepts/19_4.png differ diff --git a/concepts/19_5.png b/concepts/19_5.png new file mode 100644 index 0000000000000000000000000000000000000000..c173115cd26735c4aa93910ce85a22e2b80a79a6 Binary files /dev/null and b/concepts/19_5.png differ diff --git a/concepts/19_6.png b/concepts/19_6.png new file mode 100644 index 0000000000000000000000000000000000000000..6c186d9e4f6494b99a12020a6a48f7c282764d27 Binary files /dev/null and b/concepts/19_6.png differ diff --git a/concepts/1_0.png b/concepts/1_0.png new file mode 100644 index 0000000000000000000000000000000000000000..1b2e0e0497b3fbe912ae75d2cb145eead89c6cf9 Binary files /dev/null and b/concepts/1_0.png differ diff --git a/concepts/1_12.png b/concepts/1_12.png new file mode 100644 index 0000000000000000000000000000000000000000..d045056645a8dcd6de2a97c32328f1c9409e27e2 Binary files /dev/null and b/concepts/1_12.png differ diff --git a/concepts/1_14.png b/concepts/1_14.png new file mode 100644 index 0000000000000000000000000000000000000000..46c2f21a698fec6432fe16c538302a0f9e3e2ac4 Binary files /dev/null and b/concepts/1_14.png differ diff --git a/concepts/1_19.png b/concepts/1_19.png new file mode 100644 index 0000000000000000000000000000000000000000..9d77c02c3d50545d3a06c127290d83869f95468d Binary files /dev/null and b/concepts/1_19.png differ diff --git a/concepts/1_2.png b/concepts/1_2.png new file mode 100644 index 0000000000000000000000000000000000000000..1b76f13f5a588178823e2dcff3105eb3199d1716 Binary files /dev/null and b/concepts/1_2.png differ diff --git a/concepts/1_24.png b/concepts/1_24.png new file mode 100644 index 0000000000000000000000000000000000000000..636f3ec7f4e4e7a9022fa5a7c3153a7d29d99f80 Binary files /dev/null and b/concepts/1_24.png differ diff --git a/concepts/1_6.png b/concepts/1_6.png new file mode 100644 index 0000000000000000000000000000000000000000..76895b39a1650e097e1e0764063628d02688178c Binary files /dev/null and b/concepts/1_6.png differ diff --git a/concepts/1_7.png b/concepts/1_7.png new file mode 100644 index 0000000000000000000000000000000000000000..caf4b9a51cd5c5707fc67205faa9f264376d7649 Binary files /dev/null and b/concepts/1_7.png differ diff --git a/concepts/200_1.png b/concepts/200_1.png new file mode 100644 index 0000000000000000000000000000000000000000..5991ff586b7346ce48bb4d365842761fffc50eca Binary files /dev/null and b/concepts/200_1.png differ diff --git a/concepts/200_11.png b/concepts/200_11.png new file mode 100644 index 0000000000000000000000000000000000000000..92e85a2d2e43b3c5d7eabf8de65a3097ae3e081c Binary files /dev/null and b/concepts/200_11.png differ diff --git a/concepts/200_2.png b/concepts/200_2.png new file mode 100644 index 0000000000000000000000000000000000000000..2d52c6ed1583beb44103ddffee559f56878034d2 Binary files /dev/null and b/concepts/200_2.png differ diff --git a/concepts/200_3.png b/concepts/200_3.png new file mode 100644 index 0000000000000000000000000000000000000000..8812b6d9f64e4302563f49f46f8f901e1bb74911 Binary files /dev/null and b/concepts/200_3.png differ diff --git a/concepts/200_5.png b/concepts/200_5.png new file mode 100644 index 0000000000000000000000000000000000000000..83021ccb1d97e8a4a9965b36741e3cb79b89c445 Binary files /dev/null and b/concepts/200_5.png differ diff --git a/concepts/200_6.png b/concepts/200_6.png new file mode 100644 index 0000000000000000000000000000000000000000..16ea4ef2289c49f07ccfac98b961087e4aaaa424 Binary files /dev/null and b/concepts/200_6.png differ diff --git a/concepts/200_7.png b/concepts/200_7.png new file mode 100644 index 0000000000000000000000000000000000000000..a73e1703e164637be3d2ccc96614f853bc54868d Binary files /dev/null and b/concepts/200_7.png differ diff --git a/concepts/200_8.png b/concepts/200_8.png new file mode 100644 index 0000000000000000000000000000000000000000..c18a9d954796258327bfb0a5f20c2c8880ee29ae Binary files /dev/null and b/concepts/200_8.png differ diff --git a/concepts/201_0.png b/concepts/201_0.png new file mode 100644 index 0000000000000000000000000000000000000000..9a9d47a3c5f4f79c9c23cfdbf3a43b0431d80d0d Binary files /dev/null and b/concepts/201_0.png differ diff --git a/concepts/201_1.png b/concepts/201_1.png new file mode 100644 index 0000000000000000000000000000000000000000..5f1f8bda2eb8f20238cf58acee5ada04f7579215 Binary files /dev/null and b/concepts/201_1.png differ diff --git a/concepts/201_2.png b/concepts/201_2.png new file mode 100644 index 0000000000000000000000000000000000000000..cdde4615dd292a11d64e125f210eb15aed894f88 Binary files /dev/null and b/concepts/201_2.png differ diff --git a/concepts/201_3.png b/concepts/201_3.png new file mode 100644 index 0000000000000000000000000000000000000000..a2017f0371afa1e81498451a736d682e82f9b7e1 Binary files /dev/null and b/concepts/201_3.png differ diff --git a/concepts/201_5.png b/concepts/201_5.png new file mode 100644 index 0000000000000000000000000000000000000000..0ccd1961419a743db8ada7db5168005e8a40001f Binary files /dev/null and b/concepts/201_5.png differ diff --git a/concepts/201_6.png b/concepts/201_6.png new file mode 100644 index 0000000000000000000000000000000000000000..1cb8192e30dd853771a157f1fa63c7a54b87e24d Binary files /dev/null and b/concepts/201_6.png differ diff --git a/concepts/201_7.png b/concepts/201_7.png new file mode 100644 index 0000000000000000000000000000000000000000..645e08b3e743ce00ca390747c298ce49b729c319 Binary files /dev/null and b/concepts/201_7.png differ diff --git a/concepts/201_9.png b/concepts/201_9.png new file mode 100644 index 0000000000000000000000000000000000000000..1108204c6789a3fcb1c87954ed49c7cfceeff128 Binary files /dev/null and b/concepts/201_9.png differ diff --git a/concepts/202_10.png b/concepts/202_10.png new file mode 100644 index 0000000000000000000000000000000000000000..029775a63e7b280b45d781ff7c4ad066b2b4db1d Binary files /dev/null and b/concepts/202_10.png differ diff --git a/concepts/202_11.png b/concepts/202_11.png new file mode 100644 index 0000000000000000000000000000000000000000..dcbe0675213fd3c076797c6a401a0b9a7f0f8cc6 Binary files /dev/null and b/concepts/202_11.png differ diff --git a/concepts/202_3.png b/concepts/202_3.png new file mode 100644 index 0000000000000000000000000000000000000000..a3fc4f29514885668f92266ef85ebdc0d605cc13 Binary files /dev/null and b/concepts/202_3.png differ diff --git a/concepts/202_4.png b/concepts/202_4.png new file mode 100644 index 0000000000000000000000000000000000000000..a2078549b777676c9fd8772bede4684c689f37d8 Binary files /dev/null and b/concepts/202_4.png differ diff --git a/concepts/202_5.png b/concepts/202_5.png new file mode 100644 index 0000000000000000000000000000000000000000..57787fd254125cd7c1b2d3f4f8d8bfeebe5cc511 Binary files /dev/null and b/concepts/202_5.png differ diff --git a/concepts/202_7.png b/concepts/202_7.png new file mode 100644 index 0000000000000000000000000000000000000000..d918b41d9ad45a15ba1e8f9e3f2e21126ad9f360 Binary files /dev/null and b/concepts/202_7.png differ diff --git a/concepts/202_8.png b/concepts/202_8.png new file mode 100644 index 0000000000000000000000000000000000000000..b6f58f7fa5889a31a7c10648280bcc5bed890375 Binary files /dev/null and b/concepts/202_8.png differ diff --git a/concepts/202_9.png b/concepts/202_9.png new file mode 100644 index 0000000000000000000000000000000000000000..3d98098acaa22aaa51d3b5c992fdb016b7c5e236 Binary files /dev/null and b/concepts/202_9.png differ diff --git a/concepts/203_0.png b/concepts/203_0.png new file mode 100644 index 0000000000000000000000000000000000000000..be3d44047ccd56debe68343d8051d1a42f11a03e Binary files /dev/null and b/concepts/203_0.png differ diff --git a/concepts/203_1.png b/concepts/203_1.png new file mode 100644 index 0000000000000000000000000000000000000000..5baa0e0fe4a392c3b760bfcd7a93b28143ee2bd9 Binary files /dev/null and b/concepts/203_1.png differ diff --git a/concepts/203_10.png b/concepts/203_10.png new file mode 100644 index 0000000000000000000000000000000000000000..14d0ec274e02f3fbef41251eeb4698aee6488310 Binary files /dev/null and b/concepts/203_10.png differ diff --git a/concepts/203_2.png b/concepts/203_2.png new file mode 100644 index 0000000000000000000000000000000000000000..5b33a225c7798326a48b1d0ca5161c38b43e7154 Binary files /dev/null and b/concepts/203_2.png differ diff --git a/concepts/203_3.png b/concepts/203_3.png new file mode 100644 index 0000000000000000000000000000000000000000..0e17f4f4cdc726d94fde29e408d878f3e89f3c57 Binary files /dev/null and b/concepts/203_3.png differ diff --git a/concepts/203_4.png b/concepts/203_4.png new file mode 100644 index 0000000000000000000000000000000000000000..6d6a6cc75f44c01b0b0d987c6a92cd1398eead0f Binary files /dev/null and b/concepts/203_4.png differ diff --git a/concepts/203_7.png b/concepts/203_7.png new file mode 100644 index 0000000000000000000000000000000000000000..83ad5a82863bf0c9390755a968bddfb5fbd21ae6 Binary files /dev/null and b/concepts/203_7.png differ diff --git a/concepts/203_9.png b/concepts/203_9.png new file mode 100644 index 0000000000000000000000000000000000000000..d2c2d1d2f91a916bf8df2928a9f924ecfab412d6 Binary files /dev/null and b/concepts/203_9.png differ diff --git a/concepts/204_1.png b/concepts/204_1.png new file mode 100644 index 0000000000000000000000000000000000000000..e22afb3e32d74732a312d54ab0cb1e7cf3a0aed9 Binary files /dev/null and b/concepts/204_1.png differ diff --git a/concepts/204_12.png b/concepts/204_12.png new file mode 100644 index 0000000000000000000000000000000000000000..045dd598ea610d163dc7a54192b1f8356580b28f Binary files /dev/null and b/concepts/204_12.png differ diff --git a/concepts/204_13.png b/concepts/204_13.png new file mode 100644 index 0000000000000000000000000000000000000000..9738f29ea684efcfbd82379f5b6cc846bc83133e Binary files /dev/null and b/concepts/204_13.png differ diff --git a/concepts/204_2.png b/concepts/204_2.png new file mode 100644 index 0000000000000000000000000000000000000000..a708853b42813322e412a7c8520deba74343cac1 Binary files /dev/null and b/concepts/204_2.png differ diff --git a/concepts/204_20.png b/concepts/204_20.png new file mode 100644 index 0000000000000000000000000000000000000000..f93576786190919b9d97ed9af60d5b0a5d82f365 Binary files /dev/null and b/concepts/204_20.png differ diff --git a/concepts/204_22.png b/concepts/204_22.png new file mode 100644 index 0000000000000000000000000000000000000000..5df414cee6976179e9d26a2a4f8182e2bd4f9441 Binary files /dev/null and b/concepts/204_22.png differ diff --git a/concepts/204_3.png b/concepts/204_3.png new file mode 100644 index 0000000000000000000000000000000000000000..fed1b19af6ae545af96c74ff1589005066be1ca8 Binary files /dev/null and b/concepts/204_3.png differ diff --git a/concepts/204_7.png b/concepts/204_7.png new file mode 100644 index 0000000000000000000000000000000000000000..270cf4d61212c1cdde06f53572174e71f2e66754 Binary files /dev/null and b/concepts/204_7.png differ diff --git a/concepts/206_0.png b/concepts/206_0.png new file mode 100644 index 0000000000000000000000000000000000000000..9857c6300a5b163a273b7498beeecf70746dce54 Binary files /dev/null and b/concepts/206_0.png differ diff --git a/concepts/206_1.png b/concepts/206_1.png new file mode 100644 index 0000000000000000000000000000000000000000..56551538cda059602ef604b62f6d46bd1251e044 Binary files /dev/null and b/concepts/206_1.png differ diff --git a/concepts/206_2.png b/concepts/206_2.png new file mode 100644 index 0000000000000000000000000000000000000000..13cc341ca72e72a2c23b5266bd1153c40318897d Binary files /dev/null and b/concepts/206_2.png differ diff --git a/concepts/206_3.png b/concepts/206_3.png new file mode 100644 index 0000000000000000000000000000000000000000..2158a313ea0c7430cc66175bd6df8c5fa142dd94 Binary files /dev/null and b/concepts/206_3.png differ diff --git a/concepts/206_4.png b/concepts/206_4.png new file mode 100644 index 0000000000000000000000000000000000000000..27a9a8eda0f47d15a5e22b99d7860042233b1254 Binary files /dev/null and b/concepts/206_4.png differ diff --git a/concepts/206_5.png b/concepts/206_5.png new file mode 100644 index 0000000000000000000000000000000000000000..7070c1a06584ee8bd346e0064414262f847dc178 Binary files /dev/null and b/concepts/206_5.png differ diff --git a/concepts/206_7.png b/concepts/206_7.png new file mode 100644 index 0000000000000000000000000000000000000000..db959510c95451060e994c655aa954dc8f334ac1 Binary files /dev/null and b/concepts/206_7.png differ diff --git a/concepts/206_9.png b/concepts/206_9.png new file mode 100644 index 0000000000000000000000000000000000000000..15bd5365de56b2fad53be138009509fce55017f3 Binary files /dev/null and b/concepts/206_9.png differ diff --git a/concepts/207_0.png b/concepts/207_0.png new file mode 100644 index 0000000000000000000000000000000000000000..bc3472f2308618e7a81d735828fb2000ce3602db Binary files /dev/null and b/concepts/207_0.png differ diff --git a/concepts/207_1.png b/concepts/207_1.png new file mode 100644 index 0000000000000000000000000000000000000000..80001e9fce0c5ac07e8b9690887f5e0487354080 Binary files /dev/null and b/concepts/207_1.png differ diff --git a/concepts/207_10.png b/concepts/207_10.png new file mode 100644 index 0000000000000000000000000000000000000000..e72a5cb58d132c61ff39821c452221fed8af6e2a Binary files /dev/null and b/concepts/207_10.png differ diff --git a/concepts/207_2.png b/concepts/207_2.png new file mode 100644 index 0000000000000000000000000000000000000000..aac4e19d689f8841efae61007c5917622e5da3ab Binary files /dev/null and b/concepts/207_2.png differ diff --git a/concepts/207_3.png b/concepts/207_3.png new file mode 100644 index 0000000000000000000000000000000000000000..e6cd3d587cf5ae9d79986da37743231f4f314b18 Binary files /dev/null and b/concepts/207_3.png differ diff --git a/concepts/207_5.png b/concepts/207_5.png new file mode 100644 index 0000000000000000000000000000000000000000..e0c000a096ba7dd45f46ae3ac5c922bfb6757657 Binary files /dev/null and b/concepts/207_5.png differ diff --git a/concepts/207_7.png b/concepts/207_7.png new file mode 100644 index 0000000000000000000000000000000000000000..d17d4a946363be3904376e366557501ac1eb7d14 Binary files /dev/null and b/concepts/207_7.png differ diff --git a/concepts/207_9.png b/concepts/207_9.png new file mode 100644 index 0000000000000000000000000000000000000000..5bab4406d8deebc8a0e1eeb1e267b360f28de505 Binary files /dev/null and b/concepts/207_9.png differ diff --git a/concepts/208_0.png b/concepts/208_0.png new file mode 100644 index 0000000000000000000000000000000000000000..86f4674e78dadbc717c1480b8d80e2fa934f5971 Binary files /dev/null and b/concepts/208_0.png differ diff --git a/concepts/208_1.png b/concepts/208_1.png new file mode 100644 index 0000000000000000000000000000000000000000..204b4c36b59a5aba38216fb3c731931ad659d643 Binary files /dev/null and b/concepts/208_1.png differ diff --git a/concepts/208_2.png b/concepts/208_2.png new file mode 100644 index 0000000000000000000000000000000000000000..672bc9297e970defed51c6c04fbe5b706747b954 Binary files /dev/null and b/concepts/208_2.png differ diff --git a/concepts/208_3.png b/concepts/208_3.png new file mode 100644 index 0000000000000000000000000000000000000000..38f49ebeb4a6a70ce4bf852f6ffa6217ffa56b9e Binary files /dev/null and b/concepts/208_3.png differ diff --git a/concepts/208_4.png b/concepts/208_4.png new file mode 100644 index 0000000000000000000000000000000000000000..985addf8fc6048775a5446932c73bd0bde5b0536 Binary files /dev/null and b/concepts/208_4.png differ diff --git a/concepts/208_7.png b/concepts/208_7.png new file mode 100644 index 0000000000000000000000000000000000000000..88d75cf8df9e4e70110952f72f23e140f567d65c Binary files /dev/null and b/concepts/208_7.png differ diff --git a/concepts/208_8.png b/concepts/208_8.png new file mode 100644 index 0000000000000000000000000000000000000000..69f28a3bec2bdc976bb90f0fe8d42a3d6d0be4c2 Binary files /dev/null and b/concepts/208_8.png differ diff --git a/concepts/208_9.png b/concepts/208_9.png new file mode 100644 index 0000000000000000000000000000000000000000..853f2ea9550807e9045f8ee725a341175385c07d Binary files /dev/null and b/concepts/208_9.png differ diff --git a/concepts/209_0.png b/concepts/209_0.png new file mode 100644 index 0000000000000000000000000000000000000000..f83c6fef20265e76f7995826edfb6c4b5543da72 Binary files /dev/null and b/concepts/209_0.png differ diff --git a/concepts/209_1.png b/concepts/209_1.png new file mode 100644 index 0000000000000000000000000000000000000000..f49aae2a252125f0ef38b2293e169e4495d92a8c Binary files /dev/null and b/concepts/209_1.png differ diff --git a/concepts/209_10.png b/concepts/209_10.png new file mode 100644 index 0000000000000000000000000000000000000000..d7da3ff6d4cb42b7eb69d3420e46a7b6f13acd3d Binary files /dev/null and b/concepts/209_10.png differ diff --git a/concepts/209_2.png b/concepts/209_2.png new file mode 100644 index 0000000000000000000000000000000000000000..10d15ddf56da71e2b5daa801162024ce3b716cc6 Binary files /dev/null and b/concepts/209_2.png differ diff --git a/concepts/209_3.png b/concepts/209_3.png new file mode 100644 index 0000000000000000000000000000000000000000..5a9d552fa64339072ebd6730fbd3174c28598af9 Binary files /dev/null and b/concepts/209_3.png differ diff --git a/concepts/209_5.png b/concepts/209_5.png new file mode 100644 index 0000000000000000000000000000000000000000..c7028eaf8e4ac9f6b84baf027201d9ae5e97c122 Binary files /dev/null and b/concepts/209_5.png differ diff --git a/concepts/209_7.png b/concepts/209_7.png new file mode 100644 index 0000000000000000000000000000000000000000..735bc7554831ebc74753a3357b9f45f04cd992f7 Binary files /dev/null and b/concepts/209_7.png differ diff --git a/concepts/209_9.png b/concepts/209_9.png new file mode 100644 index 0000000000000000000000000000000000000000..c077b7b1146bfb54ffe1e51984f2415373544b4e Binary files /dev/null and b/concepts/209_9.png differ diff --git a/concepts/20_0.png b/concepts/20_0.png new file mode 100644 index 0000000000000000000000000000000000000000..3bdc4cfebb50ffb90a7e392bfb2969bf26fefcb9 Binary files /dev/null and b/concepts/20_0.png differ diff --git a/concepts/20_1.png b/concepts/20_1.png new file mode 100644 index 0000000000000000000000000000000000000000..277b3ca81908a41d6ebdac6bded6515a150da719 Binary files /dev/null and b/concepts/20_1.png differ diff --git a/concepts/20_10.png b/concepts/20_10.png new file mode 100644 index 0000000000000000000000000000000000000000..0d92c65b65c209ce2af483c207cc4e54ea2755c3 Binary files /dev/null and b/concepts/20_10.png differ diff --git a/concepts/20_12.png b/concepts/20_12.png new file mode 100644 index 0000000000000000000000000000000000000000..01b7e501ac60696c32ed0e1c9b97bafb4081c72f Binary files /dev/null and b/concepts/20_12.png differ diff --git a/concepts/20_3.png b/concepts/20_3.png new file mode 100644 index 0000000000000000000000000000000000000000..cea03e4aa0f0bebff2da3e0668ac139f85d5f2b5 Binary files /dev/null and b/concepts/20_3.png differ diff --git a/concepts/20_4.png b/concepts/20_4.png new file mode 100644 index 0000000000000000000000000000000000000000..8c9306d812744e4f477c622aa7d37d6f811268e0 Binary files /dev/null and b/concepts/20_4.png differ diff --git a/concepts/20_6.png b/concepts/20_6.png new file mode 100644 index 0000000000000000000000000000000000000000..66c564b75105a52c32df7d54af87852cbb99b180 Binary files /dev/null and b/concepts/20_6.png differ diff --git a/concepts/20_8.png b/concepts/20_8.png new file mode 100644 index 0000000000000000000000000000000000000000..0a25232c3be73e995308348401a5d6aea596465d Binary files /dev/null and b/concepts/20_8.png differ diff --git a/concepts/210_0.png b/concepts/210_0.png new file mode 100644 index 0000000000000000000000000000000000000000..57c8702bcfbd73fe6a5f5b9037d3529d3e9e2122 Binary files /dev/null and b/concepts/210_0.png differ diff --git a/concepts/210_1.png b/concepts/210_1.png new file mode 100644 index 0000000000000000000000000000000000000000..ead5f72267964cd9aed0d9043c89c01d0de309b9 Binary files /dev/null and b/concepts/210_1.png differ diff --git a/concepts/210_2.png b/concepts/210_2.png new file mode 100644 index 0000000000000000000000000000000000000000..16d314c65df80d7e4884b9495432109c2640b3c0 Binary files /dev/null and b/concepts/210_2.png differ diff --git a/concepts/210_3.png b/concepts/210_3.png new file mode 100644 index 0000000000000000000000000000000000000000..2c089b1f8d8d1a3141490b8545e11aad417f755d Binary files /dev/null and b/concepts/210_3.png differ diff --git a/concepts/210_4.png b/concepts/210_4.png new file mode 100644 index 0000000000000000000000000000000000000000..4bf1778f752f7fa890e5728d34bcd6f56eb87d80 Binary files /dev/null and b/concepts/210_4.png differ diff --git a/concepts/210_5.png b/concepts/210_5.png new file mode 100644 index 0000000000000000000000000000000000000000..c163a2d5894619967d119a9c71e8df85f52a23a8 Binary files /dev/null and b/concepts/210_5.png differ diff --git a/concepts/210_7.png b/concepts/210_7.png new file mode 100644 index 0000000000000000000000000000000000000000..e0f53ed43d6f7c4b8849cf3829218d9c406b3203 Binary files /dev/null and b/concepts/210_7.png differ diff --git a/concepts/210_9.png b/concepts/210_9.png new file mode 100644 index 0000000000000000000000000000000000000000..f73951f16309a0dbcfccd2a0fc32ea53d015ee4a Binary files /dev/null and b/concepts/210_9.png differ diff --git a/concepts/211_0.png b/concepts/211_0.png new file mode 100644 index 0000000000000000000000000000000000000000..a87c371265ff396a9c9b3466bef5e1af8d608d17 Binary files /dev/null and b/concepts/211_0.png differ diff --git a/concepts/211_2.png b/concepts/211_2.png new file mode 100644 index 0000000000000000000000000000000000000000..ccb99233f82e0b83c782c34176d46f34675380d7 Binary files /dev/null and b/concepts/211_2.png differ diff --git a/concepts/211_3.png b/concepts/211_3.png new file mode 100644 index 0000000000000000000000000000000000000000..be5c27e6cea48b3e00bcdff1fcfbd942e92b9a54 Binary files /dev/null and b/concepts/211_3.png differ diff --git a/concepts/211_4.png b/concepts/211_4.png new file mode 100644 index 0000000000000000000000000000000000000000..e86e3942e296d780340efa05cbce47702d993823 Binary files /dev/null and b/concepts/211_4.png differ diff --git a/concepts/211_5.png b/concepts/211_5.png new file mode 100644 index 0000000000000000000000000000000000000000..fdc9b31b5080ab58cee0018518d154222ffcbe9b Binary files /dev/null and b/concepts/211_5.png differ diff --git a/concepts/211_6.png b/concepts/211_6.png new file mode 100644 index 0000000000000000000000000000000000000000..5c8da9aeb4967cf9dda266652c75d7c9481b4d86 Binary files /dev/null and b/concepts/211_6.png differ diff --git a/concepts/211_7.png b/concepts/211_7.png new file mode 100644 index 0000000000000000000000000000000000000000..2aaca4d04fd553360a70e4f85ed44e6041b53bdf Binary files /dev/null and b/concepts/211_7.png differ diff --git a/concepts/211_9.png b/concepts/211_9.png new file mode 100644 index 0000000000000000000000000000000000000000..1c038b4158791eb8e028bff7674ee6bf85a4ff9b Binary files /dev/null and b/concepts/211_9.png differ diff --git a/concepts/212_10.png b/concepts/212_10.png new file mode 100644 index 0000000000000000000000000000000000000000..56af153c3c1af2b8af32cecf4adfd7965bf572b5 Binary files /dev/null and b/concepts/212_10.png differ diff --git a/concepts/212_14.png b/concepts/212_14.png new file mode 100644 index 0000000000000000000000000000000000000000..3af00b4cd31f6b98d8055c06b6ca8d6896be3154 Binary files /dev/null and b/concepts/212_14.png differ diff --git a/concepts/212_22.png b/concepts/212_22.png new file mode 100644 index 0000000000000000000000000000000000000000..4040154d49795bc79eef389522ce786d63702b34 Binary files /dev/null and b/concepts/212_22.png differ diff --git a/concepts/212_23.png b/concepts/212_23.png new file mode 100644 index 0000000000000000000000000000000000000000..c15c421271b957f6a0e46ec19df7f2ac1be49ead Binary files /dev/null and b/concepts/212_23.png differ diff --git a/concepts/212_3.png b/concepts/212_3.png new file mode 100644 index 0000000000000000000000000000000000000000..e9363701db447a43f8a1eff6e1bf6529383da7bd Binary files /dev/null and b/concepts/212_3.png differ diff --git a/concepts/212_6.png b/concepts/212_6.png new file mode 100644 index 0000000000000000000000000000000000000000..1ee9f1180df94d896693ce44243a8fcb2272ddac Binary files /dev/null and b/concepts/212_6.png differ diff --git a/concepts/212_7.png b/concepts/212_7.png new file mode 100644 index 0000000000000000000000000000000000000000..b9c6f085d3b4744a110114d21915b19437399b84 Binary files /dev/null and b/concepts/212_7.png differ diff --git a/concepts/213_11.png b/concepts/213_11.png new file mode 100644 index 0000000000000000000000000000000000000000..7f85756e34ba70d33901a78c18c6c72886fdb1a0 Binary files /dev/null and b/concepts/213_11.png differ diff --git a/concepts/213_18.png b/concepts/213_18.png new file mode 100644 index 0000000000000000000000000000000000000000..584a396f1ca876d8b28914346a83caebc505971d Binary files /dev/null and b/concepts/213_18.png differ diff --git a/concepts/214_0.png b/concepts/214_0.png new file mode 100644 index 0000000000000000000000000000000000000000..6d7975612f224d57da6786b4d1ad712459b9ed72 Binary files /dev/null and b/concepts/214_0.png differ diff --git a/concepts/214_1.png b/concepts/214_1.png new file mode 100644 index 0000000000000000000000000000000000000000..80252a439e0307f0eaf95385f02c5aec7db152b7 Binary files /dev/null and b/concepts/214_1.png differ diff --git a/concepts/214_2.png b/concepts/214_2.png new file mode 100644 index 0000000000000000000000000000000000000000..84dd1d45739eae2505c433eda5b3cce7e016ac5f Binary files /dev/null and b/concepts/214_2.png differ diff --git a/concepts/214_3.png b/concepts/214_3.png new file mode 100644 index 0000000000000000000000000000000000000000..a89104239adb2a58b724e840b09167da28185d41 Binary files /dev/null and b/concepts/214_3.png differ diff --git a/concepts/214_4.png b/concepts/214_4.png new file mode 100644 index 0000000000000000000000000000000000000000..be1f645021e16d99eba10c622d47355778ae4c1e Binary files /dev/null and b/concepts/214_4.png differ diff --git a/concepts/214_5.png b/concepts/214_5.png new file mode 100644 index 0000000000000000000000000000000000000000..3378553c357f128095e1fdfe0456f2d961adc6d0 Binary files /dev/null and b/concepts/214_5.png differ diff --git a/concepts/214_7.png b/concepts/214_7.png new file mode 100644 index 0000000000000000000000000000000000000000..ad3b7cf140dabbbb68b0e9d0082351b129fc8c84 Binary files /dev/null and b/concepts/214_7.png differ diff --git a/concepts/214_9.png b/concepts/214_9.png new file mode 100644 index 0000000000000000000000000000000000000000..708f122fe6229bcd8544f4d1a1d268b9fb2ad198 Binary files /dev/null and b/concepts/214_9.png differ diff --git a/concepts/216_10.png b/concepts/216_10.png new file mode 100644 index 0000000000000000000000000000000000000000..dc07d83790896ebe7fe586d87809f2b113ce07ec Binary files /dev/null and b/concepts/216_10.png differ diff --git a/concepts/216_18.png b/concepts/216_18.png new file mode 100644 index 0000000000000000000000000000000000000000..f1445e71ffbeee1cd6c1bfcfa7ce2baae99bc276 Binary files /dev/null and b/concepts/216_18.png differ diff --git a/concepts/216_4.png b/concepts/216_4.png new file mode 100644 index 0000000000000000000000000000000000000000..932233489089760f90295b942f720c2bcfe345bd Binary files /dev/null and b/concepts/216_4.png differ diff --git a/concepts/216_7.png b/concepts/216_7.png new file mode 100644 index 0000000000000000000000000000000000000000..988e337c0e21bedaec36cf3c0de0f136763421f1 Binary files /dev/null and b/concepts/216_7.png differ diff --git a/concepts/216_8.png b/concepts/216_8.png new file mode 100644 index 0000000000000000000000000000000000000000..872330c4f60d8afc0519ed3bc17b5799a8fdaa72 Binary files /dev/null and b/concepts/216_8.png differ diff --git a/concepts/216_9.png b/concepts/216_9.png new file mode 100644 index 0000000000000000000000000000000000000000..064fb8fea70031d09ddf3ab2438229543a726e5e Binary files /dev/null and b/concepts/216_9.png differ diff --git a/concepts/217_0.png b/concepts/217_0.png new file mode 100644 index 0000000000000000000000000000000000000000..c09ba9c2aaf1c1ad273a7ba93089c8e1deeeba3c Binary files /dev/null and b/concepts/217_0.png differ diff --git a/concepts/217_1.png b/concepts/217_1.png new file mode 100644 index 0000000000000000000000000000000000000000..c8b52b8edb023b585aca3b7e06a4258cc763035e Binary files /dev/null and b/concepts/217_1.png differ diff --git a/concepts/217_10.png b/concepts/217_10.png new file mode 100644 index 0000000000000000000000000000000000000000..038fb654dbd43cb4f5baf2ee2db66d934fa327f9 Binary files /dev/null and b/concepts/217_10.png differ diff --git a/concepts/217_2.png b/concepts/217_2.png new file mode 100644 index 0000000000000000000000000000000000000000..e2d14e294687682e92ebe989bf2e43c0be577ae8 Binary files /dev/null and b/concepts/217_2.png differ diff --git a/concepts/217_3.png b/concepts/217_3.png new file mode 100644 index 0000000000000000000000000000000000000000..a0822cccd9b123f7c41ea8db7e662dd7f2d38a65 Binary files /dev/null and b/concepts/217_3.png differ diff --git a/concepts/217_4.png b/concepts/217_4.png new file mode 100644 index 0000000000000000000000000000000000000000..c39aa273b626f8cf9b310c3253359e394bdf4a50 Binary files /dev/null and b/concepts/217_4.png differ diff --git a/concepts/217_6.png b/concepts/217_6.png new file mode 100644 index 0000000000000000000000000000000000000000..efc973af868c199025bf1f7367743fc9fd3af0b6 Binary files /dev/null and b/concepts/217_6.png differ diff --git a/concepts/217_7.png b/concepts/217_7.png new file mode 100644 index 0000000000000000000000000000000000000000..4e8c6e85711c2aa30456518205ef1991d31a8fef Binary files /dev/null and b/concepts/217_7.png differ diff --git a/concepts/218_0.png b/concepts/218_0.png new file mode 100644 index 0000000000000000000000000000000000000000..65631b7f373b6a29f0b4aa4211d7f4f316b5e4d8 Binary files /dev/null and b/concepts/218_0.png differ diff --git a/concepts/218_1.png b/concepts/218_1.png new file mode 100644 index 0000000000000000000000000000000000000000..723e80cd44e454d83628a76e649c119c86b45a46 Binary files /dev/null and b/concepts/218_1.png differ diff --git a/concepts/218_2.png b/concepts/218_2.png new file mode 100644 index 0000000000000000000000000000000000000000..ff85fd1ae514d66ae86ebd34b5faee5ac3f8f5de Binary files /dev/null and b/concepts/218_2.png differ diff --git a/concepts/218_3.png b/concepts/218_3.png new file mode 100644 index 0000000000000000000000000000000000000000..9152d9bf5cd2d944fd6f7f6db816649d8665ac5f Binary files /dev/null and b/concepts/218_3.png differ diff --git a/concepts/218_4.png b/concepts/218_4.png new file mode 100644 index 0000000000000000000000000000000000000000..217411540fd4ba5b496027350acba0247256f00e Binary files /dev/null and b/concepts/218_4.png differ diff --git a/concepts/218_6.png b/concepts/218_6.png new file mode 100644 index 0000000000000000000000000000000000000000..0cf0d15abfda77a51ddccb87907b66efda8170a6 Binary files /dev/null and b/concepts/218_6.png differ diff --git a/concepts/218_7.png b/concepts/218_7.png new file mode 100644 index 0000000000000000000000000000000000000000..36001f58b977e967bdee59e7ba0fb793fb0a93b8 Binary files /dev/null and b/concepts/218_7.png differ diff --git a/concepts/218_8.png b/concepts/218_8.png new file mode 100644 index 0000000000000000000000000000000000000000..d187ecb22aab4a90aabc4af55d377e01c85baf6b Binary files /dev/null and b/concepts/218_8.png differ diff --git a/concepts/219_0.png b/concepts/219_0.png new file mode 100644 index 0000000000000000000000000000000000000000..225d02c388e1e2c289a3fd91a99eaf57cd07265e Binary files /dev/null and b/concepts/219_0.png differ diff --git a/concepts/219_1.png b/concepts/219_1.png new file mode 100644 index 0000000000000000000000000000000000000000..34851b66724a2dc99c86bb781707b357ca7547f7 Binary files /dev/null and b/concepts/219_1.png differ diff --git a/concepts/219_13.png b/concepts/219_13.png new file mode 100644 index 0000000000000000000000000000000000000000..9f5334dda2d3c360cbe2ea7ebafd6e9489d9159e Binary files /dev/null and b/concepts/219_13.png differ diff --git a/concepts/219_15.png b/concepts/219_15.png new file mode 100644 index 0000000000000000000000000000000000000000..5043a896d34622c22e83605dde446f8b77b37459 Binary files /dev/null and b/concepts/219_15.png differ diff --git a/concepts/219_2.png b/concepts/219_2.png new file mode 100644 index 0000000000000000000000000000000000000000..41b030f733c52d1d7c4ec4c0995a31142d4f78a4 Binary files /dev/null and b/concepts/219_2.png differ diff --git a/concepts/219_4.png b/concepts/219_4.png new file mode 100644 index 0000000000000000000000000000000000000000..46360c1118c1fe4f02598c04dbf1c7a889dd0346 Binary files /dev/null and b/concepts/219_4.png differ diff --git a/concepts/219_5.png b/concepts/219_5.png new file mode 100644 index 0000000000000000000000000000000000000000..5f5b814546706f06880c032f99d278eaecfd97ae Binary files /dev/null and b/concepts/219_5.png differ diff --git a/concepts/219_6.png b/concepts/219_6.png new file mode 100644 index 0000000000000000000000000000000000000000..d951fc887b38e4315b09cf08e183ccc06b172067 Binary files /dev/null and b/concepts/219_6.png differ diff --git a/concepts/21_0.png b/concepts/21_0.png new file mode 100644 index 0000000000000000000000000000000000000000..0b14e3dbcc010f1ea222c428dafce4a06519f017 Binary files /dev/null and b/concepts/21_0.png differ diff --git a/concepts/21_1.png b/concepts/21_1.png new file mode 100644 index 0000000000000000000000000000000000000000..2c4833e100b59d5251aee6741a0d6c7abe780377 Binary files /dev/null and b/concepts/21_1.png differ diff --git a/concepts/21_10.png b/concepts/21_10.png new file mode 100644 index 0000000000000000000000000000000000000000..91ed446e3edec0da6db8c1e33b7edc906e698958 Binary files /dev/null and b/concepts/21_10.png differ diff --git a/concepts/21_11.png b/concepts/21_11.png new file mode 100644 index 0000000000000000000000000000000000000000..0acaffd36f025976d20cbc7b5ed95e58092196fb Binary files /dev/null and b/concepts/21_11.png differ diff --git a/concepts/21_13.png b/concepts/21_13.png new file mode 100644 index 0000000000000000000000000000000000000000..6d6d53de8b9c5765bf9e0425c2c49aed8be683a3 Binary files /dev/null and b/concepts/21_13.png differ diff --git a/concepts/21_2.png b/concepts/21_2.png new file mode 100644 index 0000000000000000000000000000000000000000..27e2566ffb2b8e1f1441cc019656a158dafd12d0 Binary files /dev/null and b/concepts/21_2.png differ diff --git a/concepts/21_5.png b/concepts/21_5.png new file mode 100644 index 0000000000000000000000000000000000000000..dc7a5aebad56a03de031efa3025c46a8aa7211fa Binary files /dev/null and b/concepts/21_5.png differ diff --git a/concepts/21_8.png b/concepts/21_8.png new file mode 100644 index 0000000000000000000000000000000000000000..ce8ea0bafeb089425a91d45378e0ef8d9617f667 Binary files /dev/null and b/concepts/21_8.png differ diff --git a/concepts/220_16.png b/concepts/220_16.png new file mode 100644 index 0000000000000000000000000000000000000000..64b35ca5595e4a4bebf673776aef7399f5023de9 Binary files /dev/null and b/concepts/220_16.png differ diff --git a/concepts/220_5.png b/concepts/220_5.png new file mode 100644 index 0000000000000000000000000000000000000000..95f2e57320c0ddc7fcb7ccbb84809c0f425cffb7 Binary files /dev/null and b/concepts/220_5.png differ diff --git a/concepts/220_6.png b/concepts/220_6.png new file mode 100644 index 0000000000000000000000000000000000000000..b3c0c1337cbe33096b13b75936a9716d671de5f1 Binary files /dev/null and b/concepts/220_6.png differ diff --git a/concepts/221_0.png b/concepts/221_0.png new file mode 100644 index 0000000000000000000000000000000000000000..bace1082ab13be68502fb5c968125f83654c92d8 Binary files /dev/null and b/concepts/221_0.png differ diff --git a/concepts/221_10.png b/concepts/221_10.png new file mode 100644 index 0000000000000000000000000000000000000000..5975c0784472f6b4529d7eced5d8ff2e6dfd8b73 Binary files /dev/null and b/concepts/221_10.png differ diff --git a/concepts/221_12.png b/concepts/221_12.png new file mode 100644 index 0000000000000000000000000000000000000000..63d32685c5c8a3d59a40b99c83d5885c4fbcc578 Binary files /dev/null and b/concepts/221_12.png differ diff --git a/concepts/221_15.png b/concepts/221_15.png new file mode 100644 index 0000000000000000000000000000000000000000..3e1de314a28cca036d5620fccd7c713aff37fd32 Binary files /dev/null and b/concepts/221_15.png differ diff --git a/concepts/221_18.png b/concepts/221_18.png new file mode 100644 index 0000000000000000000000000000000000000000..a5ce6e58f0b23ceda9584772cc8b03fe1fc8bf7f Binary files /dev/null and b/concepts/221_18.png differ diff --git a/concepts/221_2.png b/concepts/221_2.png new file mode 100644 index 0000000000000000000000000000000000000000..476b922476f017ac2deacdf833088144285cd165 Binary files /dev/null and b/concepts/221_2.png differ diff --git a/concepts/221_5.png b/concepts/221_5.png new file mode 100644 index 0000000000000000000000000000000000000000..2e96284ff705e40efba3001a26e0259d77cfa68e Binary files /dev/null and b/concepts/221_5.png differ diff --git a/concepts/222_0.png b/concepts/222_0.png new file mode 100644 index 0000000000000000000000000000000000000000..1f21c01145281d5e05da2299cde5345213ca2be6 Binary files /dev/null and b/concepts/222_0.png differ diff --git a/concepts/222_1.png b/concepts/222_1.png new file mode 100644 index 0000000000000000000000000000000000000000..2c4e5934d994c24a0fee5bf128b696000932088e Binary files /dev/null and b/concepts/222_1.png differ diff --git a/concepts/222_2.png b/concepts/222_2.png new file mode 100644 index 0000000000000000000000000000000000000000..2100d4ca329f94ca9bffc6c443fc354f8b65d0da Binary files /dev/null and b/concepts/222_2.png differ diff --git a/concepts/222_3.png b/concepts/222_3.png new file mode 100644 index 0000000000000000000000000000000000000000..9b338a97bd6843bad49d5ef41cdb6e7c32dc14e5 Binary files /dev/null and b/concepts/222_3.png differ diff --git a/concepts/222_4.png b/concepts/222_4.png new file mode 100644 index 0000000000000000000000000000000000000000..10a8b7bb40aebf667d8e7593e1073ff1cf17d1c4 Binary files /dev/null and b/concepts/222_4.png differ diff --git a/concepts/222_6.png b/concepts/222_6.png new file mode 100644 index 0000000000000000000000000000000000000000..3d5ae05928e55e75a106db5f7f2ddbfe7d738a83 Binary files /dev/null and b/concepts/222_6.png differ diff --git a/concepts/222_7.png b/concepts/222_7.png new file mode 100644 index 0000000000000000000000000000000000000000..71de1e3f1fe8693c8d2caa15a87984919d6e55ab Binary files /dev/null and b/concepts/222_7.png differ diff --git a/concepts/222_9.png b/concepts/222_9.png new file mode 100644 index 0000000000000000000000000000000000000000..0639efaef931343d7b1b504f145965617d89df2c Binary files /dev/null and b/concepts/222_9.png differ diff --git a/concepts/223_0.png b/concepts/223_0.png new file mode 100644 index 0000000000000000000000000000000000000000..c9f618688b68ae7879c3a56b536d90db2cb14e11 Binary files /dev/null and b/concepts/223_0.png differ diff --git a/concepts/223_1.png b/concepts/223_1.png new file mode 100644 index 0000000000000000000000000000000000000000..3b52b026046529b417c7755772c20a2dad09767d Binary files /dev/null and b/concepts/223_1.png differ diff --git a/concepts/223_12.png b/concepts/223_12.png new file mode 100644 index 0000000000000000000000000000000000000000..3f064a51c957d176a626813046f6081e77cdbb6f Binary files /dev/null and b/concepts/223_12.png differ diff --git a/concepts/223_15.png b/concepts/223_15.png new file mode 100644 index 0000000000000000000000000000000000000000..2b7e0afd88d0320c482b1818e63633f684d91156 Binary files /dev/null and b/concepts/223_15.png differ diff --git a/concepts/223_2.png b/concepts/223_2.png new file mode 100644 index 0000000000000000000000000000000000000000..6f55ed4e9682bc56445b1fe86289284dbad268c8 Binary files /dev/null and b/concepts/223_2.png differ diff --git a/concepts/223_3.png b/concepts/223_3.png new file mode 100644 index 0000000000000000000000000000000000000000..9eb4f2a84b51052a6a3d41659583f49edea7ba03 Binary files /dev/null and b/concepts/223_3.png differ diff --git a/concepts/223_4.png b/concepts/223_4.png new file mode 100644 index 0000000000000000000000000000000000000000..e506da5c8887670f71cafc4a856d4b5bec6f572b Binary files /dev/null and b/concepts/223_4.png differ diff --git a/concepts/223_5.png b/concepts/223_5.png new file mode 100644 index 0000000000000000000000000000000000000000..b2dae56b9172035b52815d179d83cb9b2b9671c5 Binary files /dev/null and b/concepts/223_5.png differ diff --git a/concepts/225_10.png b/concepts/225_10.png new file mode 100644 index 0000000000000000000000000000000000000000..e55902b9b099d600e21e71bee69b928fa8fe37ca Binary files /dev/null and b/concepts/225_10.png differ diff --git a/concepts/225_13.png b/concepts/225_13.png new file mode 100644 index 0000000000000000000000000000000000000000..7cd0dc46c2f3910de7e993339aeca46c47447c0a Binary files /dev/null and b/concepts/225_13.png differ diff --git a/concepts/225_15.png b/concepts/225_15.png new file mode 100644 index 0000000000000000000000000000000000000000..325999ce1a01c026757f57865386d8548ee1ee0e Binary files /dev/null and b/concepts/225_15.png differ diff --git a/concepts/225_2.png b/concepts/225_2.png new file mode 100644 index 0000000000000000000000000000000000000000..159a7c1cdc9663742f53880d34d18668418cd826 Binary files /dev/null and b/concepts/225_2.png differ diff --git a/concepts/225_3.png b/concepts/225_3.png new file mode 100644 index 0000000000000000000000000000000000000000..a4fc56629f6725184d814ea4367960679c5a5708 Binary files /dev/null and b/concepts/225_3.png differ diff --git a/concepts/225_5.png b/concepts/225_5.png new file mode 100644 index 0000000000000000000000000000000000000000..e3ae655775c35b3c59ee142f2af9badd986fc411 Binary files /dev/null and b/concepts/225_5.png differ diff --git a/concepts/225_6.png b/concepts/225_6.png new file mode 100644 index 0000000000000000000000000000000000000000..caaa90d6265e4cdcf88e20537c44a269f40cdc63 Binary files /dev/null and b/concepts/225_6.png differ diff --git a/concepts/225_9.png b/concepts/225_9.png new file mode 100644 index 0000000000000000000000000000000000000000..328081e205545084ccbd4ac2b6aebf4b49f0ecb4 Binary files /dev/null and b/concepts/225_9.png differ diff --git a/concepts/226_11.png b/concepts/226_11.png new file mode 100644 index 0000000000000000000000000000000000000000..3b7876fcdbf5e3c3a87f918d345c845e11de0504 Binary files /dev/null and b/concepts/226_11.png differ diff --git a/concepts/226_7.png b/concepts/226_7.png new file mode 100644 index 0000000000000000000000000000000000000000..07f4caf7ba642938171e6c092b77f291e1561daf Binary files /dev/null and b/concepts/226_7.png differ diff --git a/concepts/227_1.png b/concepts/227_1.png new file mode 100644 index 0000000000000000000000000000000000000000..f273ad307596311eae04e6f9f3819028df82c8eb Binary files /dev/null and b/concepts/227_1.png differ diff --git a/concepts/227_12.png b/concepts/227_12.png new file mode 100644 index 0000000000000000000000000000000000000000..d6bf940bc9e11c3223b2f43f0a63bf81d49182d2 Binary files /dev/null and b/concepts/227_12.png differ diff --git a/concepts/227_14.png b/concepts/227_14.png new file mode 100644 index 0000000000000000000000000000000000000000..46f96fe0548072398d6d8d2b58e3eac3c7faf13a Binary files /dev/null and b/concepts/227_14.png differ diff --git a/concepts/227_2.png b/concepts/227_2.png new file mode 100644 index 0000000000000000000000000000000000000000..e5850b4c0e840ad1547621c2b7f7fdedd41469e8 Binary files /dev/null and b/concepts/227_2.png differ diff --git a/concepts/227_24.png b/concepts/227_24.png new file mode 100644 index 0000000000000000000000000000000000000000..a6c32de9e4a3220c1838685ff0dcc974ff1235a9 Binary files /dev/null and b/concepts/227_24.png differ diff --git a/concepts/227_4.png b/concepts/227_4.png new file mode 100644 index 0000000000000000000000000000000000000000..932dab59d0b26c074acdf5c03358056898b3f937 Binary files /dev/null and b/concepts/227_4.png differ diff --git a/concepts/228_0.png b/concepts/228_0.png new file mode 100644 index 0000000000000000000000000000000000000000..d12667309fedea4478e4301f69546728a6a00598 Binary files /dev/null and b/concepts/228_0.png differ diff --git a/concepts/228_11.png b/concepts/228_11.png new file mode 100644 index 0000000000000000000000000000000000000000..f364666b5227407024a0de91d46cd84b3d840325 Binary files /dev/null and b/concepts/228_11.png differ diff --git a/concepts/228_4.png b/concepts/228_4.png new file mode 100644 index 0000000000000000000000000000000000000000..42a2461f6b9eb6c45ca6ca2408ec6f84782d5714 Binary files /dev/null and b/concepts/228_4.png differ diff --git a/concepts/228_5.png b/concepts/228_5.png new file mode 100644 index 0000000000000000000000000000000000000000..2db90a4ddd2b32d7621d51c36941a95f559f9f32 Binary files /dev/null and b/concepts/228_5.png differ diff --git a/concepts/228_6.png b/concepts/228_6.png new file mode 100644 index 0000000000000000000000000000000000000000..2c44c5f334f875a0efe0aadb112d4be3a9e6c117 Binary files /dev/null and b/concepts/228_6.png differ diff --git a/concepts/228_7.png b/concepts/228_7.png new file mode 100644 index 0000000000000000000000000000000000000000..1a9476ee0cabcc9d72dd1342e8d8011cb0060360 Binary files /dev/null and b/concepts/228_7.png differ diff --git a/concepts/228_8.png b/concepts/228_8.png new file mode 100644 index 0000000000000000000000000000000000000000..d9421a28930e5e8d64961729b8daf57f4454cd77 Binary files /dev/null and b/concepts/228_8.png differ diff --git a/concepts/228_9.png b/concepts/228_9.png new file mode 100644 index 0000000000000000000000000000000000000000..d47dc0da42b02db9e4dcf6728688b10ef1f3ab8b Binary files /dev/null and b/concepts/228_9.png differ diff --git a/concepts/229_10.png b/concepts/229_10.png new file mode 100644 index 0000000000000000000000000000000000000000..748004be12eb28a72557802bc2d0a0825c94d039 Binary files /dev/null and b/concepts/229_10.png differ diff --git a/concepts/229_15.png b/concepts/229_15.png new file mode 100644 index 0000000000000000000000000000000000000000..4b4c464621b2cbe9c1fbc003160dad0d117ac43f Binary files /dev/null and b/concepts/229_15.png differ diff --git a/concepts/229_19.png b/concepts/229_19.png new file mode 100644 index 0000000000000000000000000000000000000000..21a5bf824a2ece400bc87334a89b6842b804c425 Binary files /dev/null and b/concepts/229_19.png differ diff --git a/concepts/229_21.png b/concepts/229_21.png new file mode 100644 index 0000000000000000000000000000000000000000..26fc5f7512078cf860bedb71c59ad87538ebf975 Binary files /dev/null and b/concepts/229_21.png differ diff --git a/concepts/229_23.png b/concepts/229_23.png new file mode 100644 index 0000000000000000000000000000000000000000..53e7caabc25187623f5c0d29c36027418937e0f9 Binary files /dev/null and b/concepts/229_23.png differ diff --git a/concepts/229_24.png b/concepts/229_24.png new file mode 100644 index 0000000000000000000000000000000000000000..80486a61693255673ddce2e1f04f9a3c8745fac6 Binary files /dev/null and b/concepts/229_24.png differ diff --git a/concepts/229_3.png b/concepts/229_3.png new file mode 100644 index 0000000000000000000000000000000000000000..2abb690f0b0352918973eea90b3cf8d1f6145b82 Binary files /dev/null and b/concepts/229_3.png differ diff --git a/concepts/22_0.png b/concepts/22_0.png new file mode 100644 index 0000000000000000000000000000000000000000..bb7e55ef844da74fd17727a75bcb0ec3c80d0d38 Binary files /dev/null and b/concepts/22_0.png differ diff --git a/concepts/22_1.png b/concepts/22_1.png new file mode 100644 index 0000000000000000000000000000000000000000..0ca86c539555011d85161911cd2d1320331dec5d Binary files /dev/null and b/concepts/22_1.png differ diff --git a/concepts/22_2.png b/concepts/22_2.png new file mode 100644 index 0000000000000000000000000000000000000000..af767c54e606f4446a6f36592507d9a46596d6c6 Binary files /dev/null and b/concepts/22_2.png differ diff --git a/concepts/22_3.png b/concepts/22_3.png new file mode 100644 index 0000000000000000000000000000000000000000..3e66b65ca6ce4258ef5307e00161f1c14ef31b36 Binary files /dev/null and b/concepts/22_3.png differ diff --git a/concepts/22_4.png b/concepts/22_4.png new file mode 100644 index 0000000000000000000000000000000000000000..c6ffe2183706cd524338e9b69978ca555fec20a0 Binary files /dev/null and b/concepts/22_4.png differ diff --git a/concepts/22_5.png b/concepts/22_5.png new file mode 100644 index 0000000000000000000000000000000000000000..8b352f365725d802e3573c1c7b5a71c5c52aa3bf Binary files /dev/null and b/concepts/22_5.png differ diff --git a/concepts/22_7.png b/concepts/22_7.png new file mode 100644 index 0000000000000000000000000000000000000000..f1d8c19c04a50b1156e69d6511e1890201c008e4 Binary files /dev/null and b/concepts/22_7.png differ diff --git a/concepts/22_8.png b/concepts/22_8.png new file mode 100644 index 0000000000000000000000000000000000000000..6cb51f080f3cd9c48511180aaa9d55941e548943 Binary files /dev/null and b/concepts/22_8.png differ diff --git a/concepts/230_0.png b/concepts/230_0.png new file mode 100644 index 0000000000000000000000000000000000000000..9f28207fc91e398ce6bfdb987647e08098505ff9 Binary files /dev/null and b/concepts/230_0.png differ diff --git a/concepts/230_1.png b/concepts/230_1.png new file mode 100644 index 0000000000000000000000000000000000000000..51926fe08bdd6fa5678bee1fc2b478affd0258a6 Binary files /dev/null and b/concepts/230_1.png differ diff --git a/concepts/230_10.png b/concepts/230_10.png new file mode 100644 index 0000000000000000000000000000000000000000..02db338a58f115eb287a2168bdaf64e796fae86c Binary files /dev/null and b/concepts/230_10.png differ diff --git a/concepts/230_2.png b/concepts/230_2.png new file mode 100644 index 0000000000000000000000000000000000000000..7a08aca13367ae156214a96f9cfe556010c84eec Binary files /dev/null and b/concepts/230_2.png differ diff --git a/concepts/230_3.png b/concepts/230_3.png new file mode 100644 index 0000000000000000000000000000000000000000..2da3eb2570b430fa23665f727e2114b001aa5153 Binary files /dev/null and b/concepts/230_3.png differ diff --git a/concepts/230_4.png b/concepts/230_4.png new file mode 100644 index 0000000000000000000000000000000000000000..ab9df28b08059adffe2623ef8eee3b54e43fcfc2 Binary files /dev/null and b/concepts/230_4.png differ diff --git a/concepts/230_7.png b/concepts/230_7.png new file mode 100644 index 0000000000000000000000000000000000000000..05ccfcc23a5baa629a63ff81adbcba3213d229be Binary files /dev/null and b/concepts/230_7.png differ diff --git a/concepts/230_8.png b/concepts/230_8.png new file mode 100644 index 0000000000000000000000000000000000000000..dcf60428a5e859696dc9adacfedcf3978f588b35 Binary files /dev/null and b/concepts/230_8.png differ diff --git a/concepts/231_0.png b/concepts/231_0.png new file mode 100644 index 0000000000000000000000000000000000000000..96274129356b2938929f6c91c725de06f55b1a65 Binary files /dev/null and b/concepts/231_0.png differ diff --git a/concepts/231_1.png b/concepts/231_1.png new file mode 100644 index 0000000000000000000000000000000000000000..d2640b2eebdf3c183661b0564ce2878ecaf492ce Binary files /dev/null and b/concepts/231_1.png differ diff --git a/concepts/231_15.png b/concepts/231_15.png new file mode 100644 index 0000000000000000000000000000000000000000..447072dfb7841dee1e5c58f14900c81f9b2f90fd Binary files /dev/null and b/concepts/231_15.png differ diff --git a/concepts/231_16.png b/concepts/231_16.png new file mode 100644 index 0000000000000000000000000000000000000000..8305862b6272c2a60ece5e934d38b89c87af1ba9 Binary files /dev/null and b/concepts/231_16.png differ diff --git a/concepts/231_17.png b/concepts/231_17.png new file mode 100644 index 0000000000000000000000000000000000000000..a485de862403c622743133e952c9c904d22c49ae Binary files /dev/null and b/concepts/231_17.png differ diff --git a/concepts/231_2.png b/concepts/231_2.png new file mode 100644 index 0000000000000000000000000000000000000000..3c3bc8896648a31aa06b5aed3da522c52c30f22d Binary files /dev/null and b/concepts/231_2.png differ diff --git a/concepts/231_3.png b/concepts/231_3.png new file mode 100644 index 0000000000000000000000000000000000000000..8dd85de4fe416f1079a68d6d0c478028477474dd Binary files /dev/null and b/concepts/231_3.png differ diff --git a/concepts/231_8.png b/concepts/231_8.png new file mode 100644 index 0000000000000000000000000000000000000000..02ec96448e678ad3c21d556a2ca2381d9eb7a4f5 Binary files /dev/null and b/concepts/231_8.png differ diff --git a/concepts/232_0.png b/concepts/232_0.png new file mode 100644 index 0000000000000000000000000000000000000000..08c1679755368f7426aec121fd8aeba69f8659ca Binary files /dev/null and b/concepts/232_0.png differ diff --git a/concepts/232_10.png b/concepts/232_10.png new file mode 100644 index 0000000000000000000000000000000000000000..40247f9dd7f87ae0bb7e34b09cc80ad6454f43a6 Binary files /dev/null and b/concepts/232_10.png differ diff --git a/concepts/232_11.png b/concepts/232_11.png new file mode 100644 index 0000000000000000000000000000000000000000..7bd49ca350a80e18ab88ceb4c0e9d0635aebdb72 Binary files /dev/null and b/concepts/232_11.png differ diff --git a/concepts/232_12.png b/concepts/232_12.png new file mode 100644 index 0000000000000000000000000000000000000000..5735457955895ab0fd2f9f354438e8559cb5c767 Binary files /dev/null and b/concepts/232_12.png differ diff --git a/concepts/232_2.png b/concepts/232_2.png new file mode 100644 index 0000000000000000000000000000000000000000..bbe9023ad2a33aec9aeab28677ddd86c2cb8a05d Binary files /dev/null and b/concepts/232_2.png differ diff --git a/concepts/232_3.png b/concepts/232_3.png new file mode 100644 index 0000000000000000000000000000000000000000..4a9be28e64a805999e2fb4e243ef0a5a02d210fe Binary files /dev/null and b/concepts/232_3.png differ diff --git a/concepts/232_4.png b/concepts/232_4.png new file mode 100644 index 0000000000000000000000000000000000000000..aad08142138b4c60b459707849970700514a8790 Binary files /dev/null and b/concepts/232_4.png differ diff --git a/concepts/232_9.png b/concepts/232_9.png new file mode 100644 index 0000000000000000000000000000000000000000..87620e55eb4b6b5296d2bb8890500c1435ad3fa3 Binary files /dev/null and b/concepts/232_9.png differ diff --git a/concepts/233_0.png b/concepts/233_0.png new file mode 100644 index 0000000000000000000000000000000000000000..3ef66ca4b02f084591bad643a7593fbe29f83798 Binary files /dev/null and b/concepts/233_0.png differ diff --git a/concepts/233_1.png b/concepts/233_1.png new file mode 100644 index 0000000000000000000000000000000000000000..06512db98dd313c1675fd06dfca431d97c1a1e05 Binary files /dev/null and b/concepts/233_1.png differ diff --git a/concepts/233_10.png b/concepts/233_10.png new file mode 100644 index 0000000000000000000000000000000000000000..05430dc3cc66398c7231ac15389209b5f83396ae Binary files /dev/null and b/concepts/233_10.png differ diff --git a/concepts/233_2.png b/concepts/233_2.png new file mode 100644 index 0000000000000000000000000000000000000000..1ce4d09fe7b2c2aa4850b76c81c8d720ce830a22 Binary files /dev/null and b/concepts/233_2.png differ diff --git a/concepts/233_3.png b/concepts/233_3.png new file mode 100644 index 0000000000000000000000000000000000000000..44e1118b277c7b9148efbb592e6131ca7352af3d Binary files /dev/null and b/concepts/233_3.png differ diff --git a/concepts/233_5.png b/concepts/233_5.png new file mode 100644 index 0000000000000000000000000000000000000000..0b65e9c8320e439d96062198bc4530990e700fa9 Binary files /dev/null and b/concepts/233_5.png differ diff --git a/concepts/233_6.png b/concepts/233_6.png new file mode 100644 index 0000000000000000000000000000000000000000..cf8e2d31defa35e872344c32369bf7fe545778b0 Binary files /dev/null and b/concepts/233_6.png differ diff --git a/concepts/233_8.png b/concepts/233_8.png new file mode 100644 index 0000000000000000000000000000000000000000..94f01ecb4450bcd4152c9ab569b31d071a6b9870 Binary files /dev/null and b/concepts/233_8.png differ diff --git a/concepts/234_0.png b/concepts/234_0.png new file mode 100644 index 0000000000000000000000000000000000000000..f49352d5925749241203a52f9456855ba11e90b6 Binary files /dev/null and b/concepts/234_0.png differ diff --git a/concepts/234_1.png b/concepts/234_1.png new file mode 100644 index 0000000000000000000000000000000000000000..0a36163395f1b5c6a95ba6a01e5c4a6177e7e338 Binary files /dev/null and b/concepts/234_1.png differ diff --git a/concepts/234_2.png b/concepts/234_2.png new file mode 100644 index 0000000000000000000000000000000000000000..5c71ab7a671243969dfbb4d0bcac8d18312fdeeb Binary files /dev/null and b/concepts/234_2.png differ diff --git a/concepts/234_3.png b/concepts/234_3.png new file mode 100644 index 0000000000000000000000000000000000000000..ecdb55171ff836c04957376c015f56868a74142e Binary files /dev/null and b/concepts/234_3.png differ diff --git a/concepts/234_4.png b/concepts/234_4.png new file mode 100644 index 0000000000000000000000000000000000000000..5addb1acf6851d50ef3650c152dadd21012f23c0 Binary files /dev/null and b/concepts/234_4.png differ diff --git a/concepts/234_7.png b/concepts/234_7.png new file mode 100644 index 0000000000000000000000000000000000000000..d24708e7bed7172fd4b10fe8b5032bff42aaf60c Binary files /dev/null and b/concepts/234_7.png differ diff --git a/concepts/234_8.png b/concepts/234_8.png new file mode 100644 index 0000000000000000000000000000000000000000..8865ea648874ebde22d11d0eff7e496e78f97337 Binary files /dev/null and b/concepts/234_8.png differ diff --git a/concepts/234_9.png b/concepts/234_9.png new file mode 100644 index 0000000000000000000000000000000000000000..1f521d391e618e80c9af5f76d799736ee8d5f455 Binary files /dev/null and b/concepts/234_9.png differ diff --git a/concepts/235_0.png b/concepts/235_0.png new file mode 100644 index 0000000000000000000000000000000000000000..e8892db944d04d4314208184fa7aafb80e9b2b74 Binary files /dev/null and b/concepts/235_0.png differ diff --git a/concepts/235_1.png b/concepts/235_1.png new file mode 100644 index 0000000000000000000000000000000000000000..5694d39795568389ac7b70dfdaec9c8f5bb214a2 Binary files /dev/null and b/concepts/235_1.png differ diff --git a/concepts/235_2.png b/concepts/235_2.png new file mode 100644 index 0000000000000000000000000000000000000000..a124a7c1058769f42407d1342a68cb89de8f7dde Binary files /dev/null and b/concepts/235_2.png differ diff --git a/concepts/235_3.png b/concepts/235_3.png new file mode 100644 index 0000000000000000000000000000000000000000..6c9d68c9ad5538233787da43d31d83a816b19003 Binary files /dev/null and b/concepts/235_3.png differ diff --git a/concepts/235_5.png b/concepts/235_5.png new file mode 100644 index 0000000000000000000000000000000000000000..4582e4b53591d6643140c975f5d0bc1e4974f047 Binary files /dev/null and b/concepts/235_5.png differ diff --git a/concepts/235_6.png b/concepts/235_6.png new file mode 100644 index 0000000000000000000000000000000000000000..ade0334096e24de71904e940bc5016948e99314d Binary files /dev/null and b/concepts/235_6.png differ diff --git a/concepts/235_7.png b/concepts/235_7.png new file mode 100644 index 0000000000000000000000000000000000000000..1b715ca1b789bbc41b486ea65a757cecf6208523 Binary files /dev/null and b/concepts/235_7.png differ diff --git a/concepts/235_8.png b/concepts/235_8.png new file mode 100644 index 0000000000000000000000000000000000000000..f9cec897264c109b38410a1497e46332ddacd537 Binary files /dev/null and b/concepts/235_8.png differ diff --git a/concepts/236_0.png b/concepts/236_0.png new file mode 100644 index 0000000000000000000000000000000000000000..546305068ad34577b6a2ee42f8748d5a6b14904a Binary files /dev/null and b/concepts/236_0.png differ diff --git a/concepts/236_10.png b/concepts/236_10.png new file mode 100644 index 0000000000000000000000000000000000000000..63c879c6b10b97db26af224696093365d4e1a14c Binary files /dev/null and b/concepts/236_10.png differ diff --git a/concepts/236_2.png b/concepts/236_2.png new file mode 100644 index 0000000000000000000000000000000000000000..500e981718188a491e9b81fb30fcdfa6cf04f841 Binary files /dev/null and b/concepts/236_2.png differ diff --git a/concepts/236_4.png b/concepts/236_4.png new file mode 100644 index 0000000000000000000000000000000000000000..7f88fb528d282036eb2bba4ba086665e4f41aad7 Binary files /dev/null and b/concepts/236_4.png differ diff --git a/concepts/236_5.png b/concepts/236_5.png new file mode 100644 index 0000000000000000000000000000000000000000..3e2a2bc15b0fa25b3e41524f2cc7762c62059731 Binary files /dev/null and b/concepts/236_5.png differ diff --git a/concepts/236_6.png b/concepts/236_6.png new file mode 100644 index 0000000000000000000000000000000000000000..4ab4a0748c4da58134cb77adfe569da0cc320146 Binary files /dev/null and b/concepts/236_6.png differ diff --git a/concepts/236_7.png b/concepts/236_7.png new file mode 100644 index 0000000000000000000000000000000000000000..734812c130b59436d7fd4c1be14fe05d44d0a264 Binary files /dev/null and b/concepts/236_7.png differ diff --git a/concepts/236_8.png b/concepts/236_8.png new file mode 100644 index 0000000000000000000000000000000000000000..d99f659588ea8d212b2b85c30bb9fee195ef7af5 Binary files /dev/null and b/concepts/236_8.png differ diff --git a/concepts/237_0.png b/concepts/237_0.png new file mode 100644 index 0000000000000000000000000000000000000000..1bfa464494e72b1bb312166afbc0a4c5871b55f5 Binary files /dev/null and b/concepts/237_0.png differ diff --git a/concepts/237_1.png b/concepts/237_1.png new file mode 100644 index 0000000000000000000000000000000000000000..5b06e03be707be0e415b6dd11b23838da13d5ea0 Binary files /dev/null and b/concepts/237_1.png differ diff --git a/concepts/237_11.png b/concepts/237_11.png new file mode 100644 index 0000000000000000000000000000000000000000..79537f0ae1f54257d797089ea21d3c58d382385f Binary files /dev/null and b/concepts/237_11.png differ diff --git a/concepts/237_4.png b/concepts/237_4.png new file mode 100644 index 0000000000000000000000000000000000000000..9ed957632450bc4f70a2a804e057b5a31c84852d Binary files /dev/null and b/concepts/237_4.png differ diff --git a/concepts/237_5.png b/concepts/237_5.png new file mode 100644 index 0000000000000000000000000000000000000000..38d92a6c824d7f7fe262cc093ee0684f22ea3700 Binary files /dev/null and b/concepts/237_5.png differ diff --git a/concepts/237_6.png b/concepts/237_6.png new file mode 100644 index 0000000000000000000000000000000000000000..ac5374154afdb42fbd2a74a9061ec97a42014084 Binary files /dev/null and b/concepts/237_6.png differ diff --git a/concepts/237_7.png b/concepts/237_7.png new file mode 100644 index 0000000000000000000000000000000000000000..6d511721ac3ff6cd9e51c194406938d55ef4efc9 Binary files /dev/null and b/concepts/237_7.png differ diff --git a/concepts/237_8.png b/concepts/237_8.png new file mode 100644 index 0000000000000000000000000000000000000000..47e5a506c21b976721bed950f0344f25e4badc6b Binary files /dev/null and b/concepts/237_8.png differ diff --git a/concepts/238_0.png b/concepts/238_0.png new file mode 100644 index 0000000000000000000000000000000000000000..14b4c545de01f53a5d3553b096069de967d68766 Binary files /dev/null and b/concepts/238_0.png differ diff --git a/concepts/238_1.png b/concepts/238_1.png new file mode 100644 index 0000000000000000000000000000000000000000..25aa52b18c1b436a9f469de1458f6782b88d953c Binary files /dev/null and b/concepts/238_1.png differ diff --git a/concepts/238_2.png b/concepts/238_2.png new file mode 100644 index 0000000000000000000000000000000000000000..cbc932329a760d1370f325e2d8d0d7fc5a068ea3 Binary files /dev/null and b/concepts/238_2.png differ diff --git a/concepts/238_3.png b/concepts/238_3.png new file mode 100644 index 0000000000000000000000000000000000000000..d722396f52f493f7a1486ff08dee23eb23364533 Binary files /dev/null and b/concepts/238_3.png differ diff --git a/concepts/238_4.png b/concepts/238_4.png new file mode 100644 index 0000000000000000000000000000000000000000..ddb016d613707431874c0ec84cbadd422977470c Binary files /dev/null and b/concepts/238_4.png differ diff --git a/concepts/238_5.png b/concepts/238_5.png new file mode 100644 index 0000000000000000000000000000000000000000..fb17335ee4d393bf36153bce72340a49cc77082e Binary files /dev/null and b/concepts/238_5.png differ diff --git a/concepts/238_6.png b/concepts/238_6.png new file mode 100644 index 0000000000000000000000000000000000000000..8f55a5b057e7a4773d45e8b9b22bca483101593d Binary files /dev/null and b/concepts/238_6.png differ diff --git a/concepts/238_9.png b/concepts/238_9.png new file mode 100644 index 0000000000000000000000000000000000000000..3e00bf7fe2c5592a80a378f87c679bb7d63462ba Binary files /dev/null and b/concepts/238_9.png differ diff --git a/concepts/239_0.png b/concepts/239_0.png new file mode 100644 index 0000000000000000000000000000000000000000..df30f85482f10d183ac95f56b2a7490a94894468 Binary files /dev/null and b/concepts/239_0.png differ diff --git a/concepts/239_1.png b/concepts/239_1.png new file mode 100644 index 0000000000000000000000000000000000000000..2a57139c2d0822df102cc4c8c90c0662365c229b Binary files /dev/null and b/concepts/239_1.png differ diff --git a/concepts/239_10.png b/concepts/239_10.png new file mode 100644 index 0000000000000000000000000000000000000000..abc03619fdcb406d9194839a3e1088729d00f95f Binary files /dev/null and b/concepts/239_10.png differ diff --git a/concepts/239_2.png b/concepts/239_2.png new file mode 100644 index 0000000000000000000000000000000000000000..27328666a1477bb0d52f35636eb2e8f5d939fa00 Binary files /dev/null and b/concepts/239_2.png differ diff --git a/concepts/239_3.png b/concepts/239_3.png new file mode 100644 index 0000000000000000000000000000000000000000..b145aa58dc5ef5d6ce2e8a494aa2e4b5db9ca9a8 Binary files /dev/null and b/concepts/239_3.png differ diff --git a/concepts/239_4.png b/concepts/239_4.png new file mode 100644 index 0000000000000000000000000000000000000000..af7cef0d766f62b03fb41052f4785ccdd5f8a1b8 Binary files /dev/null and b/concepts/239_4.png differ diff --git a/concepts/239_6.png b/concepts/239_6.png new file mode 100644 index 0000000000000000000000000000000000000000..30a7e3691050a1c9f3feaa55b21dd3fa71b38f92 Binary files /dev/null and b/concepts/239_6.png differ diff --git a/concepts/239_8.png b/concepts/239_8.png new file mode 100644 index 0000000000000000000000000000000000000000..00c374386b74ccfdb0e8bb4818308254b0a832d5 Binary files /dev/null and b/concepts/239_8.png differ diff --git a/concepts/23_12.png b/concepts/23_12.png new file mode 100644 index 0000000000000000000000000000000000000000..390257f1e7bac89fd0356bd5718be3c00bc266b2 Binary files /dev/null and b/concepts/23_12.png differ diff --git a/concepts/23_13.png b/concepts/23_13.png new file mode 100644 index 0000000000000000000000000000000000000000..4d136b369893557d7cbac6337e85638353d7a853 Binary files /dev/null and b/concepts/23_13.png differ diff --git a/concepts/23_14.png b/concepts/23_14.png new file mode 100644 index 0000000000000000000000000000000000000000..3bdcafc33ac59b10781165bc4e42ed1dce3b7901 Binary files /dev/null and b/concepts/23_14.png differ diff --git a/concepts/23_17.png b/concepts/23_17.png new file mode 100644 index 0000000000000000000000000000000000000000..8685e27d11f979de708293bcfe0e397bf233670a Binary files /dev/null and b/concepts/23_17.png differ diff --git a/concepts/23_22.png b/concepts/23_22.png new file mode 100644 index 0000000000000000000000000000000000000000..56d07efb72a1931d293940d704a29f5fc2a40820 Binary files /dev/null and b/concepts/23_22.png differ diff --git a/concepts/23_24.png b/concepts/23_24.png new file mode 100644 index 0000000000000000000000000000000000000000..cf49938da2459b6fc3b77ff609b725b7ba7e8e7d Binary files /dev/null and b/concepts/23_24.png differ diff --git a/concepts/23_9.png b/concepts/23_9.png new file mode 100644 index 0000000000000000000000000000000000000000..6e699037827e3b0d7c96cdf4b1b4b5be0e6cb086 Binary files /dev/null and b/concepts/23_9.png differ diff --git a/concepts/240_0.png b/concepts/240_0.png new file mode 100644 index 0000000000000000000000000000000000000000..0f23c5eb12a91d18caaab91bc05ad221394601bf Binary files /dev/null and b/concepts/240_0.png differ diff --git a/concepts/240_1.png b/concepts/240_1.png new file mode 100644 index 0000000000000000000000000000000000000000..f89226263a9620cb049029a3cd82796260d1c89f Binary files /dev/null and b/concepts/240_1.png differ diff --git a/concepts/240_2.png b/concepts/240_2.png new file mode 100644 index 0000000000000000000000000000000000000000..3e4c5b6066aa154474187bc5c9096795ea6483a3 Binary files /dev/null and b/concepts/240_2.png differ diff --git a/concepts/240_3.png b/concepts/240_3.png new file mode 100644 index 0000000000000000000000000000000000000000..20e4f6005c5c8c13de91f61be95d275a2a8baa7c Binary files /dev/null and b/concepts/240_3.png differ diff --git a/concepts/240_4.png b/concepts/240_4.png new file mode 100644 index 0000000000000000000000000000000000000000..27ffc4c68e2fd71d98b0c0cad68631ee84beec86 Binary files /dev/null and b/concepts/240_4.png differ diff --git a/concepts/240_5.png b/concepts/240_5.png new file mode 100644 index 0000000000000000000000000000000000000000..a5e7e2d9f49169e2e33b5050b8854ec7b73f59a5 Binary files /dev/null and b/concepts/240_5.png differ diff --git a/concepts/240_6.png b/concepts/240_6.png new file mode 100644 index 0000000000000000000000000000000000000000..4727e533e1e94d4052829ce3b34a7827ded377e8 Binary files /dev/null and b/concepts/240_6.png differ diff --git a/concepts/240_7.png b/concepts/240_7.png new file mode 100644 index 0000000000000000000000000000000000000000..e181f726c8810ecfc462c71725850b00a79dad62 Binary files /dev/null and b/concepts/240_7.png differ diff --git a/concepts/241_0.png b/concepts/241_0.png new file mode 100644 index 0000000000000000000000000000000000000000..4ec7f3c10a5188be40d6716a738f955b479e76dc Binary files /dev/null and b/concepts/241_0.png differ diff --git a/concepts/241_1.png b/concepts/241_1.png new file mode 100644 index 0000000000000000000000000000000000000000..0a7edd5acda7e7141ae986ace2033d9997c1e838 Binary files /dev/null and b/concepts/241_1.png differ diff --git a/concepts/241_10.png b/concepts/241_10.png new file mode 100644 index 0000000000000000000000000000000000000000..0e21c812be220ef07fe06f79affe1b79dfd83c54 Binary files /dev/null and b/concepts/241_10.png differ diff --git a/concepts/241_11.png b/concepts/241_11.png new file mode 100644 index 0000000000000000000000000000000000000000..34e6d0a40930506621b3a48ca154acaf7022a1fe Binary files /dev/null and b/concepts/241_11.png differ diff --git a/concepts/241_2.png b/concepts/241_2.png new file mode 100644 index 0000000000000000000000000000000000000000..df0b20fa20321ed688869b62d1bfcf0424fd04f2 Binary files /dev/null and b/concepts/241_2.png differ diff --git a/concepts/241_4.png b/concepts/241_4.png new file mode 100644 index 0000000000000000000000000000000000000000..f256dcc2700cfe6e6fe3849dcb8d2c00ed3646b0 Binary files /dev/null and b/concepts/241_4.png differ diff --git a/concepts/241_7.png b/concepts/241_7.png new file mode 100644 index 0000000000000000000000000000000000000000..8a0ea949d4f2172680a98a497ee7adaebd45f763 Binary files /dev/null and b/concepts/241_7.png differ diff --git a/concepts/241_8.png b/concepts/241_8.png new file mode 100644 index 0000000000000000000000000000000000000000..8e69eb9fc178bbd4a35bacb53552df497f563072 Binary files /dev/null and b/concepts/241_8.png differ diff --git a/concepts/242_0.png b/concepts/242_0.png new file mode 100644 index 0000000000000000000000000000000000000000..cb23fa50d28c9415c274dfc22f896e8758d92ee0 Binary files /dev/null and b/concepts/242_0.png differ diff --git a/concepts/242_1.png b/concepts/242_1.png new file mode 100644 index 0000000000000000000000000000000000000000..4d4089b0e70de5181a53be827e83e30940839d8d Binary files /dev/null and b/concepts/242_1.png differ diff --git a/concepts/242_10.png b/concepts/242_10.png new file mode 100644 index 0000000000000000000000000000000000000000..31014b4254f8d2735f70ff2c5a7b481079f8d270 Binary files /dev/null and b/concepts/242_10.png differ diff --git a/concepts/242_12.png b/concepts/242_12.png new file mode 100644 index 0000000000000000000000000000000000000000..e55e5a010d9208ae9fdc7b4ec4863e65d6b6ee40 Binary files /dev/null and b/concepts/242_12.png differ diff --git a/concepts/242_14.png b/concepts/242_14.png new file mode 100644 index 0000000000000000000000000000000000000000..01c70801cc819fd60b97d04d47a149a481fb0b93 Binary files /dev/null and b/concepts/242_14.png differ diff --git a/concepts/242_5.png b/concepts/242_5.png new file mode 100644 index 0000000000000000000000000000000000000000..669bc37e5959a52292879626eeb10995242b417b Binary files /dev/null and b/concepts/242_5.png differ diff --git a/concepts/242_7.png b/concepts/242_7.png new file mode 100644 index 0000000000000000000000000000000000000000..87297d676224da032e46b973d85ec78561c650c3 Binary files /dev/null and b/concepts/242_7.png differ diff --git a/concepts/242_9.png b/concepts/242_9.png new file mode 100644 index 0000000000000000000000000000000000000000..db40f12c1a500a138334f063910d46f86b7e1c36 Binary files /dev/null and b/concepts/242_9.png differ diff --git a/concepts/243_0.png b/concepts/243_0.png new file mode 100644 index 0000000000000000000000000000000000000000..05843f1781cef8f450d4f20e4623aa9941961e21 Binary files /dev/null and b/concepts/243_0.png differ diff --git a/concepts/243_1.png b/concepts/243_1.png new file mode 100644 index 0000000000000000000000000000000000000000..1bd5064b3968903a84fbd5bf7bee366ffe304b76 Binary files /dev/null and b/concepts/243_1.png differ diff --git a/concepts/243_2.png b/concepts/243_2.png new file mode 100644 index 0000000000000000000000000000000000000000..68e02388a2e90cf11b82152bfc72da69f5a51682 Binary files /dev/null and b/concepts/243_2.png differ diff --git a/concepts/243_3.png b/concepts/243_3.png new file mode 100644 index 0000000000000000000000000000000000000000..957242c1ce9ffe1c1b3ad43810a380bd886d205b Binary files /dev/null and b/concepts/243_3.png differ diff --git a/concepts/243_4.png b/concepts/243_4.png new file mode 100644 index 0000000000000000000000000000000000000000..39f59e356dd8169349e1eeb2ef41f268e1ded48a Binary files /dev/null and b/concepts/243_4.png differ diff --git a/concepts/243_5.png b/concepts/243_5.png new file mode 100644 index 0000000000000000000000000000000000000000..6ecd5f733d40d77261699569c692f020fb9bbb81 Binary files /dev/null and b/concepts/243_5.png differ diff --git a/concepts/243_7.png b/concepts/243_7.png new file mode 100644 index 0000000000000000000000000000000000000000..c8e3cee10114d38b66649e9245adcc808880ee31 Binary files /dev/null and b/concepts/243_7.png differ diff --git a/concepts/243_8.png b/concepts/243_8.png new file mode 100644 index 0000000000000000000000000000000000000000..7fe7d3fe1a3352b3e68e103559f3ca61626c69dd Binary files /dev/null and b/concepts/243_8.png differ diff --git a/concepts/244_10.png b/concepts/244_10.png new file mode 100644 index 0000000000000000000000000000000000000000..3c9f2ce2aac3fd80e56253a841d2b5e350372b11 Binary files /dev/null and b/concepts/244_10.png differ diff --git a/concepts/244_15.png b/concepts/244_15.png new file mode 100644 index 0000000000000000000000000000000000000000..0953321e8025b677b5c45c1268068525a2a085ce Binary files /dev/null and b/concepts/244_15.png differ diff --git a/concepts/244_16.png b/concepts/244_16.png new file mode 100644 index 0000000000000000000000000000000000000000..0548c6d49e944ec7a9dbe9952558262c9e4a041b Binary files /dev/null and b/concepts/244_16.png differ diff --git a/concepts/244_20.png b/concepts/244_20.png new file mode 100644 index 0000000000000000000000000000000000000000..d8a643585ca7035b606ea26fe8e2afebf37ac1e2 Binary files /dev/null and b/concepts/244_20.png differ diff --git a/concepts/244_22.png b/concepts/244_22.png new file mode 100644 index 0000000000000000000000000000000000000000..e4ca9c15d82b0352d06dd4de2ae15e51d8ebfc85 Binary files /dev/null and b/concepts/244_22.png differ diff --git a/concepts/244_4.png b/concepts/244_4.png new file mode 100644 index 0000000000000000000000000000000000000000..a3b9c50a78b197ea37106993c92f54c13ae23878 Binary files /dev/null and b/concepts/244_4.png differ diff --git a/concepts/244_6.png b/concepts/244_6.png new file mode 100644 index 0000000000000000000000000000000000000000..3bc7b16d4b435cbfb7daec5834ac98e96bd53f09 Binary files /dev/null and b/concepts/244_6.png differ diff --git a/concepts/244_7.png b/concepts/244_7.png new file mode 100644 index 0000000000000000000000000000000000000000..94e6b6e8bdef4fb15ccf47450aa6f48ba5ff4f24 Binary files /dev/null and b/concepts/244_7.png differ diff --git a/concepts/246_0.png b/concepts/246_0.png new file mode 100644 index 0000000000000000000000000000000000000000..1ea412ba3e4bcd196f50cda3af88bb2136eea0d3 Binary files /dev/null and b/concepts/246_0.png differ diff --git a/concepts/246_1.png b/concepts/246_1.png new file mode 100644 index 0000000000000000000000000000000000000000..9149ba654f638c0c2cd4af057745790aa18a0bcd Binary files /dev/null and b/concepts/246_1.png differ diff --git a/concepts/246_2.png b/concepts/246_2.png new file mode 100644 index 0000000000000000000000000000000000000000..3308fddc0c0b353b71c70150dc4f30b75d10612e Binary files /dev/null and b/concepts/246_2.png differ diff --git a/concepts/246_3.png b/concepts/246_3.png new file mode 100644 index 0000000000000000000000000000000000000000..0dd0841c5b03113dbce1ef60851f93d8f5bff2bd Binary files /dev/null and b/concepts/246_3.png differ diff --git a/concepts/246_4.png b/concepts/246_4.png new file mode 100644 index 0000000000000000000000000000000000000000..8fa565de64be1bab167dba492769476e7eb90c0c Binary files /dev/null and b/concepts/246_4.png differ diff --git a/concepts/246_5.png b/concepts/246_5.png new file mode 100644 index 0000000000000000000000000000000000000000..dba64af390fd4ce7374af7f2040cda2c508b37e8 Binary files /dev/null and b/concepts/246_5.png differ diff --git a/concepts/246_7.png b/concepts/246_7.png new file mode 100644 index 0000000000000000000000000000000000000000..67c84de720da5972905cc4fb2dc4c3e3e90e8c6f Binary files /dev/null and b/concepts/246_7.png differ diff --git a/concepts/246_8.png b/concepts/246_8.png new file mode 100644 index 0000000000000000000000000000000000000000..d7b856ade4643a102e7604b045f8a84a262dfbe5 Binary files /dev/null and b/concepts/246_8.png differ diff --git a/concepts/247_0.png b/concepts/247_0.png new file mode 100644 index 0000000000000000000000000000000000000000..042617ebdfb34a967785e17ab57d1ef6effd8ffa Binary files /dev/null and b/concepts/247_0.png differ diff --git a/concepts/247_1.png b/concepts/247_1.png new file mode 100644 index 0000000000000000000000000000000000000000..5124805053ae341c0e14f1a8cf71ef2651a73225 Binary files /dev/null and b/concepts/247_1.png differ diff --git a/concepts/247_15.png b/concepts/247_15.png new file mode 100644 index 0000000000000000000000000000000000000000..af716ef56c2fcf8e7d4147832bc0bcbf97788ad6 Binary files /dev/null and b/concepts/247_15.png differ diff --git a/concepts/247_16.png b/concepts/247_16.png new file mode 100644 index 0000000000000000000000000000000000000000..861b3864b460fe5e14a684a422585ed3acea5d37 Binary files /dev/null and b/concepts/247_16.png differ diff --git a/concepts/247_17.png b/concepts/247_17.png new file mode 100644 index 0000000000000000000000000000000000000000..6ba2bac34f3238b780d3d592dbae94c3db74473e Binary files /dev/null and b/concepts/247_17.png differ diff --git a/concepts/247_19.png b/concepts/247_19.png new file mode 100644 index 0000000000000000000000000000000000000000..51affad5094e01f9d1a288ac6ff796b44017d8b4 Binary files /dev/null and b/concepts/247_19.png differ diff --git a/concepts/247_2.png b/concepts/247_2.png new file mode 100644 index 0000000000000000000000000000000000000000..bd30cd827d7b354b1e6123307a18645d620d2547 Binary files /dev/null and b/concepts/247_2.png differ diff --git a/concepts/247_3.png b/concepts/247_3.png new file mode 100644 index 0000000000000000000000000000000000000000..c81138210b5013715dfa5a954058c4780b808dcd Binary files /dev/null and b/concepts/247_3.png differ diff --git a/concepts/248_1.png b/concepts/248_1.png new file mode 100644 index 0000000000000000000000000000000000000000..37101d74cddf12e25f9ff739aff9095a7cee7d7e Binary files /dev/null and b/concepts/248_1.png differ diff --git a/concepts/248_11.png b/concepts/248_11.png new file mode 100644 index 0000000000000000000000000000000000000000..9aa33fe53a0023a47fe42e78f7d6128d6957c763 Binary files /dev/null and b/concepts/248_11.png differ diff --git a/concepts/248_13.png b/concepts/248_13.png new file mode 100644 index 0000000000000000000000000000000000000000..f5fe5b767e9f01205639de88c7b2ef8777403775 Binary files /dev/null and b/concepts/248_13.png differ diff --git a/concepts/248_14.png b/concepts/248_14.png new file mode 100644 index 0000000000000000000000000000000000000000..2ea7c1870ce82193199e7de3a1cc3cfd9c6c4e34 Binary files /dev/null and b/concepts/248_14.png differ diff --git a/concepts/248_2.png b/concepts/248_2.png new file mode 100644 index 0000000000000000000000000000000000000000..d5fb6a13d99796edfc51f85c945e063f604011c4 Binary files /dev/null and b/concepts/248_2.png differ diff --git a/concepts/248_3.png b/concepts/248_3.png new file mode 100644 index 0000000000000000000000000000000000000000..ff04cbc8eba973450fb9d980d2cb3c22eb0e2f51 Binary files /dev/null and b/concepts/248_3.png differ diff --git a/concepts/248_5.png b/concepts/248_5.png new file mode 100644 index 0000000000000000000000000000000000000000..c04942bd6e689249ee0e19be60f7d031b1ea0cdc Binary files /dev/null and b/concepts/248_5.png differ diff --git a/concepts/248_7.png b/concepts/248_7.png new file mode 100644 index 0000000000000000000000000000000000000000..a7a674fec2af318e771dd15337b21b4838a6243c Binary files /dev/null and b/concepts/248_7.png differ diff --git a/concepts/249_0.png b/concepts/249_0.png new file mode 100644 index 0000000000000000000000000000000000000000..f2d06e22b88dcd585e623e37e24cb38f9813db2f Binary files /dev/null and b/concepts/249_0.png differ diff --git a/concepts/249_1.png b/concepts/249_1.png new file mode 100644 index 0000000000000000000000000000000000000000..3a2b3b5563c396fbbcc266992e7e9d4e406a3479 Binary files /dev/null and b/concepts/249_1.png differ diff --git a/concepts/249_2.png b/concepts/249_2.png new file mode 100644 index 0000000000000000000000000000000000000000..3d1076808a0be46d203596b3aa76df6c01a5cd1d Binary files /dev/null and b/concepts/249_2.png differ diff --git a/concepts/249_4.png b/concepts/249_4.png new file mode 100644 index 0000000000000000000000000000000000000000..0a9a2176d1eaef211931a451e369b61a152b1ce5 Binary files /dev/null and b/concepts/249_4.png differ diff --git a/concepts/249_5.png b/concepts/249_5.png new file mode 100644 index 0000000000000000000000000000000000000000..860dc68cdccfc7edb2ab914067c72873016557b6 Binary files /dev/null and b/concepts/249_5.png differ diff --git a/concepts/249_6.png b/concepts/249_6.png new file mode 100644 index 0000000000000000000000000000000000000000..cdceaf6fc164a93e60c53c78d2b74011c50134ef Binary files /dev/null and b/concepts/249_6.png differ diff --git a/concepts/249_8.png b/concepts/249_8.png new file mode 100644 index 0000000000000000000000000000000000000000..18bfaf57aea191e14860d799d19de81502639a16 Binary files /dev/null and b/concepts/249_8.png differ diff --git a/concepts/249_9.png b/concepts/249_9.png new file mode 100644 index 0000000000000000000000000000000000000000..15228a102d3e7daa9879b5ec715bf21097415ee3 Binary files /dev/null and b/concepts/249_9.png differ diff --git a/concepts/24_1.png b/concepts/24_1.png new file mode 100644 index 0000000000000000000000000000000000000000..ab310fc5f68501ca89e88fbb5f62a231e6aeef5c Binary files /dev/null and b/concepts/24_1.png differ diff --git a/concepts/24_10.png b/concepts/24_10.png new file mode 100644 index 0000000000000000000000000000000000000000..39d0cc97ac52a1f2e910a60374fc466506c17b89 Binary files /dev/null and b/concepts/24_10.png differ diff --git a/concepts/24_13.png b/concepts/24_13.png new file mode 100644 index 0000000000000000000000000000000000000000..c4476c96eb14b547c89a9f94a27f8e41a9fbc99f Binary files /dev/null and b/concepts/24_13.png differ diff --git a/concepts/24_15.png b/concepts/24_15.png new file mode 100644 index 0000000000000000000000000000000000000000..a403e9f726ca671cc9ba14f79fd4830799f69d56 Binary files /dev/null and b/concepts/24_15.png differ diff --git a/concepts/24_3.png b/concepts/24_3.png new file mode 100644 index 0000000000000000000000000000000000000000..4e301f3d5db1b712dccd1fc34b410df1d49048b4 Binary files /dev/null and b/concepts/24_3.png differ diff --git a/concepts/24_6.png b/concepts/24_6.png new file mode 100644 index 0000000000000000000000000000000000000000..15d95afb5434584eb33f6560925b0481b835f3ab Binary files /dev/null and b/concepts/24_6.png differ diff --git a/concepts/24_7.png b/concepts/24_7.png new file mode 100644 index 0000000000000000000000000000000000000000..53aec7afe2b22df178df45c4057732494665b02b Binary files /dev/null and b/concepts/24_7.png differ diff --git a/concepts/24_8.png b/concepts/24_8.png new file mode 100644 index 0000000000000000000000000000000000000000..757b44a8f37de1a267a8df654312bd2cb4b6ce4d Binary files /dev/null and b/concepts/24_8.png differ diff --git a/concepts/250_0.png b/concepts/250_0.png new file mode 100644 index 0000000000000000000000000000000000000000..c8b96f1610ecbd5fd17e9288d69a81fd32b91167 Binary files /dev/null and b/concepts/250_0.png differ diff --git a/concepts/250_12.png b/concepts/250_12.png new file mode 100644 index 0000000000000000000000000000000000000000..53806e4db70c74327fe63d753f3108fa47718b82 Binary files /dev/null and b/concepts/250_12.png differ diff --git a/concepts/250_14.png b/concepts/250_14.png new file mode 100644 index 0000000000000000000000000000000000000000..5da767d225a05fce1487a6f7d0cd7c0d7afb7258 Binary files /dev/null and b/concepts/250_14.png differ diff --git a/concepts/250_15.png b/concepts/250_15.png new file mode 100644 index 0000000000000000000000000000000000000000..efb69a98dedcd64627f4455a60513895592bda0b Binary files /dev/null and b/concepts/250_15.png differ diff --git a/concepts/250_17.png b/concepts/250_17.png new file mode 100644 index 0000000000000000000000000000000000000000..2ced17268823014bc4270109987673a7d74d4e5a Binary files /dev/null and b/concepts/250_17.png differ diff --git a/concepts/250_2.png b/concepts/250_2.png new file mode 100644 index 0000000000000000000000000000000000000000..cc8cf2fe8ce99f52070f0fb86b40408abca4913c Binary files /dev/null and b/concepts/250_2.png differ diff --git a/concepts/250_6.png b/concepts/250_6.png new file mode 100644 index 0000000000000000000000000000000000000000..00ecba44897b1933b0c6a4a61aeabf99c3390ffb Binary files /dev/null and b/concepts/250_6.png differ diff --git a/concepts/250_7.png b/concepts/250_7.png new file mode 100644 index 0000000000000000000000000000000000000000..8f100004e7a831200377bc80ce2d0c4db163d506 Binary files /dev/null and b/concepts/250_7.png differ diff --git a/concepts/251_10.png b/concepts/251_10.png new file mode 100644 index 0000000000000000000000000000000000000000..1b967dfc13b4a0be28d2459ec8be373a5f549ab4 Binary files /dev/null and b/concepts/251_10.png differ diff --git a/concepts/251_11.png b/concepts/251_11.png new file mode 100644 index 0000000000000000000000000000000000000000..1b00ad25f12713c8995dbfdc637933aa1d3bbbee Binary files /dev/null and b/concepts/251_11.png differ diff --git a/concepts/251_15.png b/concepts/251_15.png new file mode 100644 index 0000000000000000000000000000000000000000..e99cc356b1cceb71bcef25dc72d11196bfd63b9b Binary files /dev/null and b/concepts/251_15.png differ diff --git a/concepts/251_2.png b/concepts/251_2.png new file mode 100644 index 0000000000000000000000000000000000000000..49724109cea526a52a8b4e5527ed97ee83a51996 Binary files /dev/null and b/concepts/251_2.png differ diff --git a/concepts/251_20.png b/concepts/251_20.png new file mode 100644 index 0000000000000000000000000000000000000000..cb9664a112dfbd91bbd9389b8700a15735d19006 Binary files /dev/null and b/concepts/251_20.png differ diff --git a/concepts/251_4.png b/concepts/251_4.png new file mode 100644 index 0000000000000000000000000000000000000000..208368e14757bd28ebbf11e26e18ad43d1d0e903 Binary files /dev/null and b/concepts/251_4.png differ diff --git a/concepts/251_6.png b/concepts/251_6.png new file mode 100644 index 0000000000000000000000000000000000000000..b1523f0889f5a9bd9bec6dd2f11de831551f0766 Binary files /dev/null and b/concepts/251_6.png differ diff --git a/concepts/251_8.png b/concepts/251_8.png new file mode 100644 index 0000000000000000000000000000000000000000..2d87a1c54cf2d025c003786c8147240904ca527d Binary files /dev/null and b/concepts/251_8.png differ diff --git a/concepts/252_0.png b/concepts/252_0.png new file mode 100644 index 0000000000000000000000000000000000000000..6bb9cf1de01d1da4ab8568f58a7496b92acf5cc5 Binary files /dev/null and b/concepts/252_0.png differ diff --git a/concepts/252_1.png b/concepts/252_1.png new file mode 100644 index 0000000000000000000000000000000000000000..6e0e181fc1c0c748658d59f83b9b9d1541082173 Binary files /dev/null and b/concepts/252_1.png differ diff --git a/concepts/252_2.png b/concepts/252_2.png new file mode 100644 index 0000000000000000000000000000000000000000..f8bdebd7b529c6b6dcb11faa27a17579837482c3 Binary files /dev/null and b/concepts/252_2.png differ diff --git a/concepts/252_3.png b/concepts/252_3.png new file mode 100644 index 0000000000000000000000000000000000000000..62d84b122b440508e2e29543f8f4988af9ebe57b Binary files /dev/null and b/concepts/252_3.png differ diff --git a/concepts/252_5.png b/concepts/252_5.png new file mode 100644 index 0000000000000000000000000000000000000000..ec942fc9e409054f375b4afe4f7ca6686e32118d Binary files /dev/null and b/concepts/252_5.png differ diff --git a/concepts/252_6.png b/concepts/252_6.png new file mode 100644 index 0000000000000000000000000000000000000000..b56500600a0c8ff43e43f50165a1d3a83e0541e4 Binary files /dev/null and b/concepts/252_6.png differ diff --git a/concepts/252_7.png b/concepts/252_7.png new file mode 100644 index 0000000000000000000000000000000000000000..2f9a1d81314ed78b9bdc50c2af5c5e4e7dd4d4f1 Binary files /dev/null and b/concepts/252_7.png differ diff --git a/concepts/252_8.png b/concepts/252_8.png new file mode 100644 index 0000000000000000000000000000000000000000..628300ef1ba8ddc071520e634f3083abd833f3b4 Binary files /dev/null and b/concepts/252_8.png differ diff --git a/concepts/253_0.png b/concepts/253_0.png new file mode 100644 index 0000000000000000000000000000000000000000..654108eb92e7ad6391e935562870035c77cd0050 Binary files /dev/null and b/concepts/253_0.png differ diff --git a/concepts/253_1.png b/concepts/253_1.png new file mode 100644 index 0000000000000000000000000000000000000000..cfcc9df028f6849f80ad24a85cba74138b5b7595 Binary files /dev/null and b/concepts/253_1.png differ diff --git a/concepts/253_11.png b/concepts/253_11.png new file mode 100644 index 0000000000000000000000000000000000000000..344478093c51b2ea0d9eab12315fc0ba8f6a76e0 Binary files /dev/null and b/concepts/253_11.png differ diff --git a/concepts/253_2.png b/concepts/253_2.png new file mode 100644 index 0000000000000000000000000000000000000000..109225e5a76b406b7883d2156dc5e8e72d18c644 Binary files /dev/null and b/concepts/253_2.png differ diff --git a/concepts/253_5.png b/concepts/253_5.png new file mode 100644 index 0000000000000000000000000000000000000000..b29294ac9a8d18b1095cfedb8059d9cee4325491 Binary files /dev/null and b/concepts/253_5.png differ diff --git a/concepts/253_7.png b/concepts/253_7.png new file mode 100644 index 0000000000000000000000000000000000000000..18e92fcef1cfc00909444f1a7434c3cfcb6f035b Binary files /dev/null and b/concepts/253_7.png differ diff --git a/concepts/253_8.png b/concepts/253_8.png new file mode 100644 index 0000000000000000000000000000000000000000..8d016cf0106c80e6dcb91e22bc8551d5615f7472 Binary files /dev/null and b/concepts/253_8.png differ diff --git a/concepts/253_9.png b/concepts/253_9.png new file mode 100644 index 0000000000000000000000000000000000000000..7367f174330c806d3d1129ac35860dfbca68fcbe Binary files /dev/null and b/concepts/253_9.png differ diff --git a/concepts/254_0.png b/concepts/254_0.png new file mode 100644 index 0000000000000000000000000000000000000000..dbb02dc1d84511659760b95af0c5001efef00a0f Binary files /dev/null and b/concepts/254_0.png differ diff --git a/concepts/254_1.png b/concepts/254_1.png new file mode 100644 index 0000000000000000000000000000000000000000..44bcec4cae990d7aa8823b50e8e9b31353fc353f Binary files /dev/null and b/concepts/254_1.png differ diff --git a/concepts/254_13.png b/concepts/254_13.png new file mode 100644 index 0000000000000000000000000000000000000000..91327a0c42f7f0599449ef6d5ca638c518af235c Binary files /dev/null and b/concepts/254_13.png differ diff --git a/concepts/254_22.png b/concepts/254_22.png new file mode 100644 index 0000000000000000000000000000000000000000..957085cfbbbb7b9ce254688bbf0fe615f50e2c42 Binary files /dev/null and b/concepts/254_22.png differ diff --git a/concepts/254_6.png b/concepts/254_6.png new file mode 100644 index 0000000000000000000000000000000000000000..ec6032f946e2a5e7511a549721e4d912d576c1c3 Binary files /dev/null and b/concepts/254_6.png differ diff --git a/concepts/254_8.png b/concepts/254_8.png new file mode 100644 index 0000000000000000000000000000000000000000..4574565f73450523cc6a368f65698c2093df4ab3 Binary files /dev/null and b/concepts/254_8.png differ diff --git a/concepts/255_0.png b/concepts/255_0.png new file mode 100644 index 0000000000000000000000000000000000000000..38e625a30df60aeb78893ff9ad20f7666ac2ebc5 Binary files /dev/null and b/concepts/255_0.png differ diff --git a/concepts/255_1.png b/concepts/255_1.png new file mode 100644 index 0000000000000000000000000000000000000000..b342daf79f7b32114b4021cabf5011c5bb2f5c5b Binary files /dev/null and b/concepts/255_1.png differ diff --git a/concepts/255_2.png b/concepts/255_2.png new file mode 100644 index 0000000000000000000000000000000000000000..8efd3b9f986b2a46180ee90a7ddeb349cf492903 Binary files /dev/null and b/concepts/255_2.png differ diff --git a/concepts/255_3.png b/concepts/255_3.png new file mode 100644 index 0000000000000000000000000000000000000000..e350a2cb2dbf2bc2301b60808bd380a3a8732177 Binary files /dev/null and b/concepts/255_3.png differ diff --git a/concepts/255_4.png b/concepts/255_4.png new file mode 100644 index 0000000000000000000000000000000000000000..2a0169e510113d6077aeaa5767ca846a85b9ff21 Binary files /dev/null and b/concepts/255_4.png differ diff --git a/concepts/255_5.png b/concepts/255_5.png new file mode 100644 index 0000000000000000000000000000000000000000..e6fb8e9b64b160da8d560b6c3fb45abbeeb59cdb Binary files /dev/null and b/concepts/255_5.png differ diff --git a/concepts/255_6.png b/concepts/255_6.png new file mode 100644 index 0000000000000000000000000000000000000000..a54b1a16ed2f0326b10fca71ddab5631426a6a75 Binary files /dev/null and b/concepts/255_6.png differ diff --git a/concepts/255_8.png b/concepts/255_8.png new file mode 100644 index 0000000000000000000000000000000000000000..ee4377c4a1b774a6aa49747c926ed5c47071b461 Binary files /dev/null and b/concepts/255_8.png differ diff --git a/concepts/256_0.png b/concepts/256_0.png new file mode 100644 index 0000000000000000000000000000000000000000..91c98a9d48e7802978da498bf5271c1dc4510386 Binary files /dev/null and b/concepts/256_0.png differ diff --git a/concepts/256_1.png b/concepts/256_1.png new file mode 100644 index 0000000000000000000000000000000000000000..dba9088a61b80e096e7aaa646128d8c10cd0b54f Binary files /dev/null and b/concepts/256_1.png differ diff --git a/concepts/256_10.png b/concepts/256_10.png new file mode 100644 index 0000000000000000000000000000000000000000..92082ad0037612f5f9743a3709e0a797404c08f0 Binary files /dev/null and b/concepts/256_10.png differ diff --git a/concepts/256_17.png b/concepts/256_17.png new file mode 100644 index 0000000000000000000000000000000000000000..f5b44ef5c7c788c4bf1bea28787d5f9bfa44e416 Binary files /dev/null and b/concepts/256_17.png differ diff --git a/concepts/256_3.png b/concepts/256_3.png new file mode 100644 index 0000000000000000000000000000000000000000..f31090bc8e07889fc7038b2c67cd11e41743b828 Binary files /dev/null and b/concepts/256_3.png differ diff --git a/concepts/256_4.png b/concepts/256_4.png new file mode 100644 index 0000000000000000000000000000000000000000..6f8b698bb0812085b52cfebf3a74df984125b984 Binary files /dev/null and b/concepts/256_4.png differ diff --git a/concepts/257_0.png b/concepts/257_0.png new file mode 100644 index 0000000000000000000000000000000000000000..a69db0073c892ad78da6bd623c72a66f16a8e4a2 Binary files /dev/null and b/concepts/257_0.png differ diff --git a/concepts/257_14.png b/concepts/257_14.png new file mode 100644 index 0000000000000000000000000000000000000000..243d96c2907f7e549f065a13bc5399a490ed40e2 Binary files /dev/null and b/concepts/257_14.png differ diff --git a/concepts/257_16.png b/concepts/257_16.png new file mode 100644 index 0000000000000000000000000000000000000000..8e384ba73584c89826a71ee06037f648c1ac2de1 Binary files /dev/null and b/concepts/257_16.png differ diff --git a/concepts/257_18.png b/concepts/257_18.png new file mode 100644 index 0000000000000000000000000000000000000000..88abaf23ad0c3099fd19572d370b89350ecd251c Binary files /dev/null and b/concepts/257_18.png differ diff --git a/concepts/257_3.png b/concepts/257_3.png new file mode 100644 index 0000000000000000000000000000000000000000..0f2e36742952d927ac2fdd5c6879ce8e15f29061 Binary files /dev/null and b/concepts/257_3.png differ diff --git a/concepts/257_4.png b/concepts/257_4.png new file mode 100644 index 0000000000000000000000000000000000000000..96996d969288cd82cae0e3c8a994af813810f6c0 Binary files /dev/null and b/concepts/257_4.png differ diff --git a/concepts/257_5.png b/concepts/257_5.png new file mode 100644 index 0000000000000000000000000000000000000000..884d9c701a6a44d748bf3d0f8e99788babe6b0b0 Binary files /dev/null and b/concepts/257_5.png differ diff --git a/concepts/257_9.png b/concepts/257_9.png new file mode 100644 index 0000000000000000000000000000000000000000..085b3831181ad81c5cbc85ce0b23ea6ce8648ddb Binary files /dev/null and b/concepts/257_9.png differ diff --git a/concepts/258_0.png b/concepts/258_0.png new file mode 100644 index 0000000000000000000000000000000000000000..8634d53174a687c3f2f32fc67ffc9560e9d2c073 Binary files /dev/null and b/concepts/258_0.png differ diff --git a/concepts/258_1.png b/concepts/258_1.png new file mode 100644 index 0000000000000000000000000000000000000000..dafca609de0ecde7dae2e0614533ce8b7acb6efb Binary files /dev/null and b/concepts/258_1.png differ diff --git a/concepts/258_2.png b/concepts/258_2.png new file mode 100644 index 0000000000000000000000000000000000000000..d8419a2338ee076f5398e6c4faf95cc1a5bd6cef Binary files /dev/null and b/concepts/258_2.png differ diff --git a/concepts/258_3.png b/concepts/258_3.png new file mode 100644 index 0000000000000000000000000000000000000000..b13bca8450a559127f1bfb6dfe1ce155fb964b56 Binary files /dev/null and b/concepts/258_3.png differ diff --git a/concepts/258_4.png b/concepts/258_4.png new file mode 100644 index 0000000000000000000000000000000000000000..c0e257a64d2b6da32aed6ec662441bb5b39f92ca Binary files /dev/null and b/concepts/258_4.png differ diff --git a/concepts/258_6.png b/concepts/258_6.png new file mode 100644 index 0000000000000000000000000000000000000000..a9e87bf41ea31338a49e71919a90f6469e0784e3 Binary files /dev/null and b/concepts/258_6.png differ diff --git a/concepts/258_8.png b/concepts/258_8.png new file mode 100644 index 0000000000000000000000000000000000000000..e37e37e29ecd405982e7f4e23f0a15403763c44b Binary files /dev/null and b/concepts/258_8.png differ diff --git a/concepts/258_9.png b/concepts/258_9.png new file mode 100644 index 0000000000000000000000000000000000000000..c0a21310472078c32d3f4273c727a46dfab1b769 Binary files /dev/null and b/concepts/258_9.png differ diff --git a/concepts/259_0.png b/concepts/259_0.png new file mode 100644 index 0000000000000000000000000000000000000000..30af09ff0fc78cc42ce33c8499743f4b44a9782e Binary files /dev/null and b/concepts/259_0.png differ diff --git a/concepts/259_1.png b/concepts/259_1.png new file mode 100644 index 0000000000000000000000000000000000000000..c9839a67094acf1168f3ebeb745fd1af339a41aa Binary files /dev/null and b/concepts/259_1.png differ diff --git a/concepts/259_2.png b/concepts/259_2.png new file mode 100644 index 0000000000000000000000000000000000000000..cb431533adf000306512988beed3d21654dfa093 Binary files /dev/null and b/concepts/259_2.png differ diff --git a/concepts/259_3.png b/concepts/259_3.png new file mode 100644 index 0000000000000000000000000000000000000000..e829365580cc7fbe6a3e58e643c21130a20443b7 Binary files /dev/null and b/concepts/259_3.png differ diff --git a/concepts/259_4.png b/concepts/259_4.png new file mode 100644 index 0000000000000000000000000000000000000000..eae8754a611c0db96144bab120b65851d0f951d5 Binary files /dev/null and b/concepts/259_4.png differ diff --git a/concepts/259_5.png b/concepts/259_5.png new file mode 100644 index 0000000000000000000000000000000000000000..b600b57c785a62b4795746f2d495bd5a432f9713 Binary files /dev/null and b/concepts/259_5.png differ diff --git a/concepts/259_6.png b/concepts/259_6.png new file mode 100644 index 0000000000000000000000000000000000000000..90e100e43068efeab023e22035dc6df89407573c Binary files /dev/null and b/concepts/259_6.png differ diff --git a/concepts/259_7.png b/concepts/259_7.png new file mode 100644 index 0000000000000000000000000000000000000000..bc8928e75c60abb8b995902a41ea512a4fae0de2 Binary files /dev/null and b/concepts/259_7.png differ diff --git a/concepts/25_1.png b/concepts/25_1.png new file mode 100644 index 0000000000000000000000000000000000000000..1086874f6018bd03388bcfd37d7b10c53cd4779d Binary files /dev/null and b/concepts/25_1.png differ diff --git a/concepts/25_10.png b/concepts/25_10.png new file mode 100644 index 0000000000000000000000000000000000000000..9d89868007543e963877860677e9d087c34cae6d Binary files /dev/null and b/concepts/25_10.png differ diff --git a/concepts/25_15.png b/concepts/25_15.png new file mode 100644 index 0000000000000000000000000000000000000000..1edaae137a353f21ff58045716e7fe7e351d298d Binary files /dev/null and b/concepts/25_15.png differ diff --git a/concepts/25_2.png b/concepts/25_2.png new file mode 100644 index 0000000000000000000000000000000000000000..a18919a4e31fad8588811066141b5bc581cb058f Binary files /dev/null and b/concepts/25_2.png differ diff --git a/concepts/25_3.png b/concepts/25_3.png new file mode 100644 index 0000000000000000000000000000000000000000..e5539e413822d0f99e1585c04d0c96f0dd14cbd5 Binary files /dev/null and b/concepts/25_3.png differ diff --git a/concepts/25_6.png b/concepts/25_6.png new file mode 100644 index 0000000000000000000000000000000000000000..1e51e479feaf679182f81846ce787de82e74b8e9 Binary files /dev/null and b/concepts/25_6.png differ diff --git a/concepts/25_8.png b/concepts/25_8.png new file mode 100644 index 0000000000000000000000000000000000000000..32bd9deb5fd52ccebac77e5dd505c861d71d9f26 Binary files /dev/null and b/concepts/25_8.png differ diff --git a/concepts/25_9.png b/concepts/25_9.png new file mode 100644 index 0000000000000000000000000000000000000000..0631619a7275449b5837128db774ab486a44411c Binary files /dev/null and b/concepts/25_9.png differ diff --git a/concepts/260_0.png b/concepts/260_0.png new file mode 100644 index 0000000000000000000000000000000000000000..e0f96455c12f5192eb61d4980dd0d389c764f8cc Binary files /dev/null and b/concepts/260_0.png differ diff --git a/concepts/260_1.png b/concepts/260_1.png new file mode 100644 index 0000000000000000000000000000000000000000..5c965a7a62ebedb38dacffc41d5961a20b8731f2 Binary files /dev/null and b/concepts/260_1.png differ diff --git a/concepts/260_2.png b/concepts/260_2.png new file mode 100644 index 0000000000000000000000000000000000000000..ede8268ad7d207b017b70ac59dff1a688780a458 Binary files /dev/null and b/concepts/260_2.png differ diff --git a/concepts/260_3.png b/concepts/260_3.png new file mode 100644 index 0000000000000000000000000000000000000000..3c864201b7f460c71d635f3d1a49c8fce02629e9 Binary files /dev/null and b/concepts/260_3.png differ diff --git a/concepts/260_4.png b/concepts/260_4.png new file mode 100644 index 0000000000000000000000000000000000000000..34e738294d003a58585a4d0333dff39adbed5a78 Binary files /dev/null and b/concepts/260_4.png differ diff --git a/concepts/260_7.png b/concepts/260_7.png new file mode 100644 index 0000000000000000000000000000000000000000..6e72e5d034fb14cdd08c92346af67db84907a3f3 Binary files /dev/null and b/concepts/260_7.png differ diff --git a/concepts/260_8.png b/concepts/260_8.png new file mode 100644 index 0000000000000000000000000000000000000000..a000edc4b2f703da871bd45689dbdbfe6b92eaef Binary files /dev/null and b/concepts/260_8.png differ diff --git a/concepts/260_9.png b/concepts/260_9.png new file mode 100644 index 0000000000000000000000000000000000000000..f96f1313cbbaf75900d89f855406808e779eb0d7 Binary files /dev/null and b/concepts/260_9.png differ diff --git a/concepts/261_0.png b/concepts/261_0.png new file mode 100644 index 0000000000000000000000000000000000000000..6f8d66fb63f0ca56e1374611e148e146f8213cb7 Binary files /dev/null and b/concepts/261_0.png differ diff --git a/concepts/261_1.png b/concepts/261_1.png new file mode 100644 index 0000000000000000000000000000000000000000..8510ccde5ba7a963692506d25ca48edb63336383 Binary files /dev/null and b/concepts/261_1.png differ diff --git a/concepts/261_3.png b/concepts/261_3.png new file mode 100644 index 0000000000000000000000000000000000000000..ce9fbb2b58897848d0a32f83e1458450d16995ed Binary files /dev/null and b/concepts/261_3.png differ diff --git a/concepts/261_4.png b/concepts/261_4.png new file mode 100644 index 0000000000000000000000000000000000000000..18c5e4d813a09104ca9e00aacae37116493f3e42 Binary files /dev/null and b/concepts/261_4.png differ diff --git a/concepts/261_5.png b/concepts/261_5.png new file mode 100644 index 0000000000000000000000000000000000000000..bf57d7b6fec173a96d0c4970880cb8d6e78045dc Binary files /dev/null and b/concepts/261_5.png differ diff --git a/concepts/261_6.png b/concepts/261_6.png new file mode 100644 index 0000000000000000000000000000000000000000..940e0e55b67f85d8d9f4936594da1f664308927d Binary files /dev/null and b/concepts/261_6.png differ diff --git a/concepts/261_7.png b/concepts/261_7.png new file mode 100644 index 0000000000000000000000000000000000000000..d69b9c1291d4d5d19dafc804dead3928d4d0c345 Binary files /dev/null and b/concepts/261_7.png differ diff --git a/concepts/261_8.png b/concepts/261_8.png new file mode 100644 index 0000000000000000000000000000000000000000..2af903651ec282e42998001276580e35da5c4995 Binary files /dev/null and b/concepts/261_8.png differ diff --git a/concepts/262_0.png b/concepts/262_0.png new file mode 100644 index 0000000000000000000000000000000000000000..ae25861225efa19096575f01a4e41bb8f3dec912 Binary files /dev/null and b/concepts/262_0.png differ diff --git a/concepts/262_1.png b/concepts/262_1.png new file mode 100644 index 0000000000000000000000000000000000000000..94df68240da832417cf3a622e662de685072502d Binary files /dev/null and b/concepts/262_1.png differ diff --git a/concepts/262_2.png b/concepts/262_2.png new file mode 100644 index 0000000000000000000000000000000000000000..7c10bbe189c0959d18d38fcc361411c8ee59180d Binary files /dev/null and b/concepts/262_2.png differ diff --git a/concepts/262_4.png b/concepts/262_4.png new file mode 100644 index 0000000000000000000000000000000000000000..2db859589696538e8bf26849cfae21144ba27db4 Binary files /dev/null and b/concepts/262_4.png differ diff --git a/concepts/262_5.png b/concepts/262_5.png new file mode 100644 index 0000000000000000000000000000000000000000..85ca7c769088c570b82ed88919bd06f6512f413f Binary files /dev/null and b/concepts/262_5.png differ diff --git a/concepts/262_6.png b/concepts/262_6.png new file mode 100644 index 0000000000000000000000000000000000000000..347e2b4947e890d7abf30e2b9ee00401a8b1efed Binary files /dev/null and b/concepts/262_6.png differ diff --git a/concepts/262_7.png b/concepts/262_7.png new file mode 100644 index 0000000000000000000000000000000000000000..688c1232c89a55831b9c5a6de3b65e5fe2d9ec2d Binary files /dev/null and b/concepts/262_7.png differ diff --git a/concepts/262_8.png b/concepts/262_8.png new file mode 100644 index 0000000000000000000000000000000000000000..3efba2242336e5ee483b79c8cf32858ea9c667c4 Binary files /dev/null and b/concepts/262_8.png differ diff --git a/concepts/263_0.png b/concepts/263_0.png new file mode 100644 index 0000000000000000000000000000000000000000..8a7be36f3127fdb107e8926a37d6ab8ab943277b Binary files /dev/null and b/concepts/263_0.png differ diff --git a/concepts/263_1.png b/concepts/263_1.png new file mode 100644 index 0000000000000000000000000000000000000000..3a39563939514771e2cd8bc5a12f12972e87a346 Binary files /dev/null and b/concepts/263_1.png differ diff --git a/concepts/263_3.png b/concepts/263_3.png new file mode 100644 index 0000000000000000000000000000000000000000..abc2f07c7c3da1aa9fac3a9dd755c86e29b21c06 Binary files /dev/null and b/concepts/263_3.png differ diff --git a/concepts/263_4.png b/concepts/263_4.png new file mode 100644 index 0000000000000000000000000000000000000000..c1f055955f8b577d5e6005cefa7ed21e3b021855 Binary files /dev/null and b/concepts/263_4.png differ diff --git a/concepts/263_6.png b/concepts/263_6.png new file mode 100644 index 0000000000000000000000000000000000000000..101e12f84804c774ace2e10acc911664dda1a170 Binary files /dev/null and b/concepts/263_6.png differ diff --git a/concepts/263_7.png b/concepts/263_7.png new file mode 100644 index 0000000000000000000000000000000000000000..51022d8311c6d73f2f3001912314d1eadb3aadce Binary files /dev/null and b/concepts/263_7.png differ diff --git a/concepts/263_8.png b/concepts/263_8.png new file mode 100644 index 0000000000000000000000000000000000000000..0dab9096dd0df28d00c30a977521e031b98d6bfb Binary files /dev/null and b/concepts/263_8.png differ diff --git a/concepts/263_9.png b/concepts/263_9.png new file mode 100644 index 0000000000000000000000000000000000000000..22776165c5e9a88e6dce28468ed6614f7e4a379e Binary files /dev/null and b/concepts/263_9.png differ diff --git a/concepts/264_0.png b/concepts/264_0.png new file mode 100644 index 0000000000000000000000000000000000000000..9e8d860bdf9503f0c726c819c6d469cbb4934107 Binary files /dev/null and b/concepts/264_0.png differ diff --git a/concepts/264_1.png b/concepts/264_1.png new file mode 100644 index 0000000000000000000000000000000000000000..d738cddadd5dc03494d626db1ccf615827bebbf3 Binary files /dev/null and b/concepts/264_1.png differ diff --git a/concepts/264_11.png b/concepts/264_11.png new file mode 100644 index 0000000000000000000000000000000000000000..03bfc54baeeeb147c1c79bc0d215b5adb09300f0 Binary files /dev/null and b/concepts/264_11.png differ diff --git a/concepts/264_12.png b/concepts/264_12.png new file mode 100644 index 0000000000000000000000000000000000000000..8970186f06688365e642576d5da1a8dcfa6fb1bc Binary files /dev/null and b/concepts/264_12.png differ diff --git a/concepts/264_13.png b/concepts/264_13.png new file mode 100644 index 0000000000000000000000000000000000000000..ff8ef7323e008cb7f9d0c3ec04d57d168072fedf Binary files /dev/null and b/concepts/264_13.png differ diff --git a/concepts/264_14.png b/concepts/264_14.png new file mode 100644 index 0000000000000000000000000000000000000000..e1c1666ea6725601c1b54a44ef2b71ee4e85c020 Binary files /dev/null and b/concepts/264_14.png differ diff --git a/concepts/264_2.png b/concepts/264_2.png new file mode 100644 index 0000000000000000000000000000000000000000..20725cd0efa98a9436a1a29334c9560d00e74ac6 Binary files /dev/null and b/concepts/264_2.png differ diff --git a/concepts/264_6.png b/concepts/264_6.png new file mode 100644 index 0000000000000000000000000000000000000000..edaa071ec0fada752ba7612679a6af4a993f793b Binary files /dev/null and b/concepts/264_6.png differ diff --git a/concepts/265_14.png b/concepts/265_14.png new file mode 100644 index 0000000000000000000000000000000000000000..7cae717830adfcbf30d9e8d489550a02f9c76a39 Binary files /dev/null and b/concepts/265_14.png differ diff --git a/concepts/266_1.png b/concepts/266_1.png new file mode 100644 index 0000000000000000000000000000000000000000..cd6082b58922d6cc06c6e15c4f2c2b90290f64cd Binary files /dev/null and b/concepts/266_1.png differ diff --git a/concepts/266_10.png b/concepts/266_10.png new file mode 100644 index 0000000000000000000000000000000000000000..037c56005593d0f61c291ccd671d62aeb80e40e1 Binary files /dev/null and b/concepts/266_10.png differ diff --git a/concepts/266_13.png b/concepts/266_13.png new file mode 100644 index 0000000000000000000000000000000000000000..e1297e99ccc665468093a000f15add2054793f08 Binary files /dev/null and b/concepts/266_13.png differ diff --git a/concepts/266_17.png b/concepts/266_17.png new file mode 100644 index 0000000000000000000000000000000000000000..04becf342b740c5f8b01cab02985db7c057561d4 Binary files /dev/null and b/concepts/266_17.png differ diff --git a/concepts/266_2.png b/concepts/266_2.png new file mode 100644 index 0000000000000000000000000000000000000000..b3159dc8a4b9fd5b2646a2344dca7591b7343aed Binary files /dev/null and b/concepts/266_2.png differ diff --git a/concepts/266_5.png b/concepts/266_5.png new file mode 100644 index 0000000000000000000000000000000000000000..84ab7f2c787d397302fe54e523f0849b57f076ee Binary files /dev/null and b/concepts/266_5.png differ diff --git a/concepts/266_6.png b/concepts/266_6.png new file mode 100644 index 0000000000000000000000000000000000000000..4ddb8f100f1fb798ee11927f2fca9ffde442a1c5 Binary files /dev/null and b/concepts/266_6.png differ diff --git a/concepts/266_9.png b/concepts/266_9.png new file mode 100644 index 0000000000000000000000000000000000000000..ad39fba0147c08fea329450d30ce8ea0a3b82273 Binary files /dev/null and b/concepts/266_9.png differ diff --git a/concepts/268_10.png b/concepts/268_10.png new file mode 100644 index 0000000000000000000000000000000000000000..d48df2f1616bb8a2406a55312092082ee81d42dc Binary files /dev/null and b/concepts/268_10.png differ diff --git a/concepts/268_2.png b/concepts/268_2.png new file mode 100644 index 0000000000000000000000000000000000000000..edc4bfef9c1baa061cea9a29dbae260683ac071e Binary files /dev/null and b/concepts/268_2.png differ diff --git a/concepts/268_3.png b/concepts/268_3.png new file mode 100644 index 0000000000000000000000000000000000000000..d51df0a67693ecd2bca76cf33fabcfa05ea7c98e Binary files /dev/null and b/concepts/268_3.png differ diff --git a/concepts/268_4.png b/concepts/268_4.png new file mode 100644 index 0000000000000000000000000000000000000000..91030fec618a1f4b21e93e293230b3b59da295e5 Binary files /dev/null and b/concepts/268_4.png differ diff --git a/concepts/268_5.png b/concepts/268_5.png new file mode 100644 index 0000000000000000000000000000000000000000..4bd01c4bd56418f6d7f427c893b28bb918a20615 Binary files /dev/null and b/concepts/268_5.png differ diff --git a/concepts/268_6.png b/concepts/268_6.png new file mode 100644 index 0000000000000000000000000000000000000000..80c7f01d2a387ee0b6ce962258a69b305a0beeff Binary files /dev/null and b/concepts/268_6.png differ diff --git a/concepts/268_7.png b/concepts/268_7.png new file mode 100644 index 0000000000000000000000000000000000000000..486f7761649373318ed4fa2089d4ce5e11b5b15a Binary files /dev/null and b/concepts/268_7.png differ diff --git a/concepts/268_9.png b/concepts/268_9.png new file mode 100644 index 0000000000000000000000000000000000000000..fb599d5161b28b5195b8463af4f1bd77bca214c4 Binary files /dev/null and b/concepts/268_9.png differ diff --git a/concepts/269_0.png b/concepts/269_0.png new file mode 100644 index 0000000000000000000000000000000000000000..31dfc3e652a88251ca9008b1ef056e4ce68ab8d2 Binary files /dev/null and b/concepts/269_0.png differ diff --git a/concepts/269_1.png b/concepts/269_1.png new file mode 100644 index 0000000000000000000000000000000000000000..32c5bfc9af4e68a70c2d6187d7c00d52de9cbb06 Binary files /dev/null and b/concepts/269_1.png differ diff --git a/concepts/269_2.png b/concepts/269_2.png new file mode 100644 index 0000000000000000000000000000000000000000..d43d9d908bbdd2c1f0987fc211711d42ac24b655 Binary files /dev/null and b/concepts/269_2.png differ diff --git a/concepts/269_3.png b/concepts/269_3.png new file mode 100644 index 0000000000000000000000000000000000000000..51d634e2f02f235c93978f7f268d995d4b05a9d7 Binary files /dev/null and b/concepts/269_3.png differ diff --git a/concepts/269_4.png b/concepts/269_4.png new file mode 100644 index 0000000000000000000000000000000000000000..06bc2bce85537535ec6fa92c0843f572c4d99ef4 Binary files /dev/null and b/concepts/269_4.png differ diff --git a/concepts/269_6.png b/concepts/269_6.png new file mode 100644 index 0000000000000000000000000000000000000000..bcbddd4b800fa5fd07637c590e957228fbd1d6ac Binary files /dev/null and b/concepts/269_6.png differ diff --git a/concepts/269_8.png b/concepts/269_8.png new file mode 100644 index 0000000000000000000000000000000000000000..4acf430c41ef2de3686a98d62159793ed262d3bc Binary files /dev/null and b/concepts/269_8.png differ diff --git a/concepts/269_9.png b/concepts/269_9.png new file mode 100644 index 0000000000000000000000000000000000000000..680bec64443abe161cd43edc06bc6e0ffba4dfac Binary files /dev/null and b/concepts/269_9.png differ diff --git a/concepts/26_0.png b/concepts/26_0.png new file mode 100644 index 0000000000000000000000000000000000000000..9b706dbd1f04bce402504d06a07fd6bb974e3f10 Binary files /dev/null and b/concepts/26_0.png differ diff --git a/concepts/26_1.png b/concepts/26_1.png new file mode 100644 index 0000000000000000000000000000000000000000..0c938bfebd417c94859a3fc0d4a764ddb595ee52 Binary files /dev/null and b/concepts/26_1.png differ diff --git a/concepts/26_2.png b/concepts/26_2.png new file mode 100644 index 0000000000000000000000000000000000000000..fee490e6c93e1ebc5cdb4a26a0e89a1ce9b1fb65 Binary files /dev/null and b/concepts/26_2.png differ diff --git a/concepts/26_3.png b/concepts/26_3.png new file mode 100644 index 0000000000000000000000000000000000000000..b88009f813a147dc5ac30812da4611966d35bb6c Binary files /dev/null and b/concepts/26_3.png differ diff --git a/concepts/26_4.png b/concepts/26_4.png new file mode 100644 index 0000000000000000000000000000000000000000..fc576f1809684819ebc333b70f2ade2ef364e2bf Binary files /dev/null and b/concepts/26_4.png differ diff --git a/concepts/26_5.png b/concepts/26_5.png new file mode 100644 index 0000000000000000000000000000000000000000..2007ef428d1d9ba901523fd4105260cb6ad3da53 Binary files /dev/null and b/concepts/26_5.png differ diff --git a/concepts/26_6.png b/concepts/26_6.png new file mode 100644 index 0000000000000000000000000000000000000000..6bfa2ba85a280c8021511bf73ac2a72d250cdb42 Binary files /dev/null and b/concepts/26_6.png differ diff --git a/concepts/26_7.png b/concepts/26_7.png new file mode 100644 index 0000000000000000000000000000000000000000..0050ec3edd157fab1fef4721b8d99cfb5d8c5a22 Binary files /dev/null and b/concepts/26_7.png differ diff --git a/concepts/270_1.png b/concepts/270_1.png new file mode 100644 index 0000000000000000000000000000000000000000..f923500d5932390031895bcc8bea61d3af892029 Binary files /dev/null and b/concepts/270_1.png differ diff --git a/concepts/270_10.png b/concepts/270_10.png new file mode 100644 index 0000000000000000000000000000000000000000..bc04daca55e1807968b89d692c46c81a356d376a Binary files /dev/null and b/concepts/270_10.png differ diff --git a/concepts/270_12.png b/concepts/270_12.png new file mode 100644 index 0000000000000000000000000000000000000000..943855043751a6acf196cf4be07beb4dc0dca9fe Binary files /dev/null and b/concepts/270_12.png differ diff --git a/concepts/270_2.png b/concepts/270_2.png new file mode 100644 index 0000000000000000000000000000000000000000..4d1b13b6f31f44e9e6075ee58c3a0e9467e038d4 Binary files /dev/null and b/concepts/270_2.png differ diff --git a/concepts/270_20.png b/concepts/270_20.png new file mode 100644 index 0000000000000000000000000000000000000000..06b9028f0d0aa2051d72a1058896799e43b397f4 Binary files /dev/null and b/concepts/270_20.png differ diff --git a/concepts/270_4.png b/concepts/270_4.png new file mode 100644 index 0000000000000000000000000000000000000000..ec70b8e50d4d7b0bbf0ecaf5e3859a50caf7fa55 Binary files /dev/null and b/concepts/270_4.png differ diff --git a/concepts/270_5.png b/concepts/270_5.png new file mode 100644 index 0000000000000000000000000000000000000000..907fbf84f7f64d14e5e08175eb73ae01c5b0eabc Binary files /dev/null and b/concepts/270_5.png differ diff --git a/concepts/270_8.png b/concepts/270_8.png new file mode 100644 index 0000000000000000000000000000000000000000..45df1cf4b653faef792370fcca8e5a8f60c32da7 Binary files /dev/null and b/concepts/270_8.png differ diff --git a/concepts/271_0.png b/concepts/271_0.png new file mode 100644 index 0000000000000000000000000000000000000000..b1051c2313f7b23f8bd288fb62354bdb51736b34 Binary files /dev/null and b/concepts/271_0.png differ diff --git a/concepts/271_1.png b/concepts/271_1.png new file mode 100644 index 0000000000000000000000000000000000000000..80076dc8c372d321f9e2fac3d5e2f5804b6d4a09 Binary files /dev/null and b/concepts/271_1.png differ diff --git a/concepts/271_10.png b/concepts/271_10.png new file mode 100644 index 0000000000000000000000000000000000000000..90b5f87da63780b492de8e3ebd2f62660d154bf7 Binary files /dev/null and b/concepts/271_10.png differ diff --git a/concepts/271_11.png b/concepts/271_11.png new file mode 100644 index 0000000000000000000000000000000000000000..c73c681f3c92156e62503b94ed65a932cbe01f8b Binary files /dev/null and b/concepts/271_11.png differ diff --git a/concepts/271_16.png b/concepts/271_16.png new file mode 100644 index 0000000000000000000000000000000000000000..da80d585597537dd21414712b28a8ae12995ba4b Binary files /dev/null and b/concepts/271_16.png differ diff --git a/concepts/271_5.png b/concepts/271_5.png new file mode 100644 index 0000000000000000000000000000000000000000..348ebb9643d9a527762c4c86300042a5cda2cd12 Binary files /dev/null and b/concepts/271_5.png differ diff --git a/concepts/271_6.png b/concepts/271_6.png new file mode 100644 index 0000000000000000000000000000000000000000..99e06cdb52867d58d6657fba405f5ff90215ee20 Binary files /dev/null and b/concepts/271_6.png differ diff --git a/concepts/271_7.png b/concepts/271_7.png new file mode 100644 index 0000000000000000000000000000000000000000..84547bea1b569ff8b33eaa393fa9451576c10d9f Binary files /dev/null and b/concepts/271_7.png differ diff --git a/concepts/272_12.png b/concepts/272_12.png new file mode 100644 index 0000000000000000000000000000000000000000..72e5cc8c4f0ad8c2fd9ca9b13e031756271b7228 Binary files /dev/null and b/concepts/272_12.png differ diff --git a/concepts/272_13.png b/concepts/272_13.png new file mode 100644 index 0000000000000000000000000000000000000000..8f7499a33d8b74a06cff6de625c33a7b67154395 Binary files /dev/null and b/concepts/272_13.png differ diff --git a/concepts/272_14.png b/concepts/272_14.png new file mode 100644 index 0000000000000000000000000000000000000000..746932f1f5138f0b39036c793c717277faf3e466 Binary files /dev/null and b/concepts/272_14.png differ diff --git a/concepts/272_18.png b/concepts/272_18.png new file mode 100644 index 0000000000000000000000000000000000000000..f45e0187a24a8600eef3b578f27eebfc04da5201 Binary files /dev/null and b/concepts/272_18.png differ diff --git a/concepts/272_19.png b/concepts/272_19.png new file mode 100644 index 0000000000000000000000000000000000000000..93fede513c2c709b1f0da114b384d439695e185b Binary files /dev/null and b/concepts/272_19.png differ diff --git a/concepts/272_5.png b/concepts/272_5.png new file mode 100644 index 0000000000000000000000000000000000000000..26f719049b5ad75466c8fb32d57fccec7fa324bf Binary files /dev/null and b/concepts/272_5.png differ diff --git a/concepts/272_6.png b/concepts/272_6.png new file mode 100644 index 0000000000000000000000000000000000000000..95b3e28853c59d2ed06eec47de3073d8e62ca790 Binary files /dev/null and b/concepts/272_6.png differ diff --git a/concepts/273_0.png b/concepts/273_0.png new file mode 100644 index 0000000000000000000000000000000000000000..5b0eba45d16154fc18ed5f7e31bc7de12d85ea67 Binary files /dev/null and b/concepts/273_0.png differ diff --git a/concepts/273_1.png b/concepts/273_1.png new file mode 100644 index 0000000000000000000000000000000000000000..f3a1cde92034083aaa1b3f2c11082be724f83372 Binary files /dev/null and b/concepts/273_1.png differ diff --git a/concepts/273_21.png b/concepts/273_21.png new file mode 100644 index 0000000000000000000000000000000000000000..5ffef41d661589318146284b9bf9d047994f2293 Binary files /dev/null and b/concepts/273_21.png differ diff --git a/concepts/273_23.png b/concepts/273_23.png new file mode 100644 index 0000000000000000000000000000000000000000..3a315ccec74d8b3dfe8bd81190166d58063dbf9b Binary files /dev/null and b/concepts/273_23.png differ diff --git a/concepts/273_5.png b/concepts/273_5.png new file mode 100644 index 0000000000000000000000000000000000000000..799ff0ca16d0013cbd910160ecba652360f15f18 Binary files /dev/null and b/concepts/273_5.png differ diff --git a/concepts/273_6.png b/concepts/273_6.png new file mode 100644 index 0000000000000000000000000000000000000000..81d7bb064a6cf8962315966846be5f1a2dbdccc6 Binary files /dev/null and b/concepts/273_6.png differ diff --git a/concepts/273_7.png b/concepts/273_7.png new file mode 100644 index 0000000000000000000000000000000000000000..ce65faa77c55fbc4ed3d1e543bcd0ab98c31f3fd Binary files /dev/null and b/concepts/273_7.png differ diff --git a/concepts/274_0.png b/concepts/274_0.png new file mode 100644 index 0000000000000000000000000000000000000000..a17da567380debc2faa2e1db76c50cc6f9cc3e0a Binary files /dev/null and b/concepts/274_0.png differ diff --git a/concepts/274_10.png b/concepts/274_10.png new file mode 100644 index 0000000000000000000000000000000000000000..0deaa96e5084ca7a01bf56289482093565a30120 Binary files /dev/null and b/concepts/274_10.png differ diff --git a/concepts/274_19.png b/concepts/274_19.png new file mode 100644 index 0000000000000000000000000000000000000000..d2bb3ff997a9da6802a4f13298c7f48ce09a550a Binary files /dev/null and b/concepts/274_19.png differ diff --git a/concepts/274_3.png b/concepts/274_3.png new file mode 100644 index 0000000000000000000000000000000000000000..9ed259b4b2d4e4bd8843144b62784ba0562f67d8 Binary files /dev/null and b/concepts/274_3.png differ diff --git a/concepts/274_4.png b/concepts/274_4.png new file mode 100644 index 0000000000000000000000000000000000000000..925e4132f11e06e3a7ab689a6254da66f9f83b7f Binary files /dev/null and b/concepts/274_4.png differ diff --git a/concepts/274_8.png b/concepts/274_8.png new file mode 100644 index 0000000000000000000000000000000000000000..2a01d26833b470cd40d698e3a71cc7a48c5c73e3 Binary files /dev/null and b/concepts/274_8.png differ diff --git a/concepts/274_9.png b/concepts/274_9.png new file mode 100644 index 0000000000000000000000000000000000000000..331b459ce3582e764152f18a3e56a3d985c3977e Binary files /dev/null and b/concepts/274_9.png differ diff --git a/concepts/275_1.png b/concepts/275_1.png new file mode 100644 index 0000000000000000000000000000000000000000..0df2e2dc9cf92c7e13edc23a2c0c9f84fbba44fa Binary files /dev/null and b/concepts/275_1.png differ diff --git a/concepts/275_11.png b/concepts/275_11.png new file mode 100644 index 0000000000000000000000000000000000000000..aecbbfece487f64c561639e12508b253d334633f Binary files /dev/null and b/concepts/275_11.png differ diff --git a/concepts/275_12.png b/concepts/275_12.png new file mode 100644 index 0000000000000000000000000000000000000000..ff0d8aceb92dde2c48fae0eb07f0c0a791d0cd47 Binary files /dev/null and b/concepts/275_12.png differ diff --git a/concepts/275_14.png b/concepts/275_14.png new file mode 100644 index 0000000000000000000000000000000000000000..bab43d480d532c410b48dcf0a9381503bd0fc333 Binary files /dev/null and b/concepts/275_14.png differ diff --git a/concepts/275_16.png b/concepts/275_16.png new file mode 100644 index 0000000000000000000000000000000000000000..390a4fad69231ae9426ca8eba8f8ddaa0e3adc8e Binary files /dev/null and b/concepts/275_16.png differ diff --git a/concepts/275_4.png b/concepts/275_4.png new file mode 100644 index 0000000000000000000000000000000000000000..b67cf03876ecd04efac2765c873b11d5dbcd0c0d Binary files /dev/null and b/concepts/275_4.png differ diff --git a/concepts/275_7.png b/concepts/275_7.png new file mode 100644 index 0000000000000000000000000000000000000000..95fbd7d338177d6bcf49e02f51b2bf9f86ca4d85 Binary files /dev/null and b/concepts/275_7.png differ diff --git a/concepts/275_8.png b/concepts/275_8.png new file mode 100644 index 0000000000000000000000000000000000000000..220979b19a94352e6535e0a3f6ae514427514d37 Binary files /dev/null and b/concepts/275_8.png differ diff --git a/concepts/276_0.png b/concepts/276_0.png new file mode 100644 index 0000000000000000000000000000000000000000..a4d3759266e18c127a8bd24d83cf7f640fb9ca7e Binary files /dev/null and b/concepts/276_0.png differ diff --git a/concepts/276_10.png b/concepts/276_10.png new file mode 100644 index 0000000000000000000000000000000000000000..9723b2ad6ad75640f5a545f8f3f0942657fa168d Binary files /dev/null and b/concepts/276_10.png differ diff --git a/concepts/276_2.png b/concepts/276_2.png new file mode 100644 index 0000000000000000000000000000000000000000..d0ee4a5f343b41d84365cc3980211a3cf4bbda3f Binary files /dev/null and b/concepts/276_2.png differ diff --git a/concepts/276_3.png b/concepts/276_3.png new file mode 100644 index 0000000000000000000000000000000000000000..f5e0a439275da16d348b017d9a42d9b258334918 Binary files /dev/null and b/concepts/276_3.png differ diff --git a/concepts/276_4.png b/concepts/276_4.png new file mode 100644 index 0000000000000000000000000000000000000000..877d80c1d46615490e677a9749ceb800100fd31f Binary files /dev/null and b/concepts/276_4.png differ diff --git a/concepts/276_5.png b/concepts/276_5.png new file mode 100644 index 0000000000000000000000000000000000000000..0d4a1149612ca6d039792e77b82b24ad9d43cbe7 Binary files /dev/null and b/concepts/276_5.png differ diff --git a/concepts/276_6.png b/concepts/276_6.png new file mode 100644 index 0000000000000000000000000000000000000000..73351a639e45f1fcfd7b60f3d4b02c526c890ee1 Binary files /dev/null and b/concepts/276_6.png differ diff --git a/concepts/276_8.png b/concepts/276_8.png new file mode 100644 index 0000000000000000000000000000000000000000..5738066c82784d00b9486d91773af305b6866bc7 Binary files /dev/null and b/concepts/276_8.png differ diff --git a/concepts/277_0.png b/concepts/277_0.png new file mode 100644 index 0000000000000000000000000000000000000000..a912b4e0c0e428d83314e26ec93dd0d2bb44c3b7 Binary files /dev/null and b/concepts/277_0.png differ diff --git a/concepts/277_1.png b/concepts/277_1.png new file mode 100644 index 0000000000000000000000000000000000000000..795ff1a349deee2035ebadabc04cfe97f690846d Binary files /dev/null and b/concepts/277_1.png differ diff --git a/concepts/277_11.png b/concepts/277_11.png new file mode 100644 index 0000000000000000000000000000000000000000..169316d25824d1f66e4990083745b2d6f0b7ee95 Binary files /dev/null and b/concepts/277_11.png differ diff --git a/concepts/277_3.png b/concepts/277_3.png new file mode 100644 index 0000000000000000000000000000000000000000..5e89dfa878121fd46c63a19774f60b4fa8428abd Binary files /dev/null and b/concepts/277_3.png differ diff --git a/concepts/277_4.png b/concepts/277_4.png new file mode 100644 index 0000000000000000000000000000000000000000..81ddce3a25d58fe0955cd759858afb7d4918d1c3 Binary files /dev/null and b/concepts/277_4.png differ diff --git a/concepts/277_5.png b/concepts/277_5.png new file mode 100644 index 0000000000000000000000000000000000000000..e2320fe67e5dee981ee55889fbfe7c241d84fca5 Binary files /dev/null and b/concepts/277_5.png differ diff --git a/concepts/277_7.png b/concepts/277_7.png new file mode 100644 index 0000000000000000000000000000000000000000..53f04293cb7c29197e47b11d8105285294b06d74 Binary files /dev/null and b/concepts/277_7.png differ diff --git a/concepts/277_9.png b/concepts/277_9.png new file mode 100644 index 0000000000000000000000000000000000000000..7d9e98e5fda63d198f02caf9a148417c6a41c00d Binary files /dev/null and b/concepts/277_9.png differ diff --git a/concepts/278_0.png b/concepts/278_0.png new file mode 100644 index 0000000000000000000000000000000000000000..e76bf0a5fb5f0ba55cea5e04d6831f306a19f4ac Binary files /dev/null and b/concepts/278_0.png differ diff --git a/concepts/278_2.png b/concepts/278_2.png new file mode 100644 index 0000000000000000000000000000000000000000..7ec7bb22a6aa25bdfdba29f30c6414f91e0ea7d7 Binary files /dev/null and b/concepts/278_2.png differ diff --git a/concepts/278_3.png b/concepts/278_3.png new file mode 100644 index 0000000000000000000000000000000000000000..3533ea02d6af45096231161fd45cf5c51b4e556d Binary files /dev/null and b/concepts/278_3.png differ diff --git a/concepts/278_5.png b/concepts/278_5.png new file mode 100644 index 0000000000000000000000000000000000000000..f98e597b3d8e0e31aad2783d7a8f33ce7f68a8a1 Binary files /dev/null and b/concepts/278_5.png differ diff --git a/concepts/278_6.png b/concepts/278_6.png new file mode 100644 index 0000000000000000000000000000000000000000..1896b487b44d5348c638d3b127b7ca52842a956a Binary files /dev/null and b/concepts/278_6.png differ diff --git a/concepts/278_7.png b/concepts/278_7.png new file mode 100644 index 0000000000000000000000000000000000000000..922169609d0159a2257008f64132435c1c67760e Binary files /dev/null and b/concepts/278_7.png differ diff --git a/concepts/278_8.png b/concepts/278_8.png new file mode 100644 index 0000000000000000000000000000000000000000..335f7512fdca2ebe3d76db79c3c95f52db55cc8e Binary files /dev/null and b/concepts/278_8.png differ diff --git a/concepts/278_9.png b/concepts/278_9.png new file mode 100644 index 0000000000000000000000000000000000000000..6a735101d4c744f8a94a2927b9fc682ffcdfc134 Binary files /dev/null and b/concepts/278_9.png differ diff --git a/concepts/279_0.png b/concepts/279_0.png new file mode 100644 index 0000000000000000000000000000000000000000..7ec51284a51790de77981b9d4289d80f0fcfab21 Binary files /dev/null and b/concepts/279_0.png differ diff --git a/concepts/279_1.png b/concepts/279_1.png new file mode 100644 index 0000000000000000000000000000000000000000..ed0bbcc12722d023514f04f5f2f8834b11458fac Binary files /dev/null and b/concepts/279_1.png differ diff --git a/concepts/279_11.png b/concepts/279_11.png new file mode 100644 index 0000000000000000000000000000000000000000..15a35dbf38d2520baf11ad78b368024474227ccb Binary files /dev/null and b/concepts/279_11.png differ diff --git a/concepts/279_14.png b/concepts/279_14.png new file mode 100644 index 0000000000000000000000000000000000000000..3d7f8571a62ae2d1b6162af407a0c7895aa33c79 Binary files /dev/null and b/concepts/279_14.png differ diff --git a/concepts/279_3.png b/concepts/279_3.png new file mode 100644 index 0000000000000000000000000000000000000000..f2933d0c079d2b759d0a4b7708bc32ba5e6d314f Binary files /dev/null and b/concepts/279_3.png differ diff --git a/concepts/279_5.png b/concepts/279_5.png new file mode 100644 index 0000000000000000000000000000000000000000..9450677649a62a79cf8b3364f6cab71a36b9da19 Binary files /dev/null and b/concepts/279_5.png differ diff --git a/concepts/279_8.png b/concepts/279_8.png new file mode 100644 index 0000000000000000000000000000000000000000..684791b928522a00f97f4e02585099f2e315e9a8 Binary files /dev/null and b/concepts/279_8.png differ diff --git a/concepts/279_9.png b/concepts/279_9.png new file mode 100644 index 0000000000000000000000000000000000000000..2b38e32b611065b35e984f85c53708c70632ef66 Binary files /dev/null and b/concepts/279_9.png differ diff --git a/concepts/281_0.png b/concepts/281_0.png new file mode 100644 index 0000000000000000000000000000000000000000..c0a3048c3d1238e48b9afce8dd8950bd2646a368 Binary files /dev/null and b/concepts/281_0.png differ diff --git a/concepts/281_14.png b/concepts/281_14.png new file mode 100644 index 0000000000000000000000000000000000000000..85427a687eda9cda1135b6c4eeea00059c1b1c5d Binary files /dev/null and b/concepts/281_14.png differ diff --git a/concepts/281_16.png b/concepts/281_16.png new file mode 100644 index 0000000000000000000000000000000000000000..d6477505d04f036b942bb8dffa604db6b15ebf78 Binary files /dev/null and b/concepts/281_16.png differ diff --git a/concepts/281_19.png b/concepts/281_19.png new file mode 100644 index 0000000000000000000000000000000000000000..a6f433837fab73c096248e6df8f5441f8c862be5 Binary files /dev/null and b/concepts/281_19.png differ diff --git a/concepts/281_2.png b/concepts/281_2.png new file mode 100644 index 0000000000000000000000000000000000000000..3ecad6d7229d9925cf4c1e38f87a5fa9aca3808d Binary files /dev/null and b/concepts/281_2.png differ diff --git a/concepts/281_24.png b/concepts/281_24.png new file mode 100644 index 0000000000000000000000000000000000000000..246fd1fd2d61058ed90aa68dc48823f482547876 Binary files /dev/null and b/concepts/281_24.png differ diff --git a/concepts/281_5.png b/concepts/281_5.png new file mode 100644 index 0000000000000000000000000000000000000000..cec956ac47076f8fafe6082a9f6d800487563dba Binary files /dev/null and b/concepts/281_5.png differ diff --git a/concepts/281_8.png b/concepts/281_8.png new file mode 100644 index 0000000000000000000000000000000000000000..1fbd02f1738183b668845c54186822a0d9c327f4 Binary files /dev/null and b/concepts/281_8.png differ diff --git a/concepts/282_0.png b/concepts/282_0.png new file mode 100644 index 0000000000000000000000000000000000000000..1c96150f4c700797a65bf0337214e969b811e40d Binary files /dev/null and b/concepts/282_0.png differ diff --git a/concepts/283_0.png b/concepts/283_0.png new file mode 100644 index 0000000000000000000000000000000000000000..abc786d6d322153f548fec57fadbffc3bdf77764 Binary files /dev/null and b/concepts/283_0.png differ diff --git a/concepts/283_13.png b/concepts/283_13.png new file mode 100644 index 0000000000000000000000000000000000000000..b55d9f286b4eb8dc9aec7a968cb6e6721a1ee91d Binary files /dev/null and b/concepts/283_13.png differ diff --git a/concepts/283_2.png b/concepts/283_2.png new file mode 100644 index 0000000000000000000000000000000000000000..1910bc2bf6c86db7573f385911370c4f46bdfaa8 Binary files /dev/null and b/concepts/283_2.png differ diff --git a/concepts/283_23.png b/concepts/283_23.png new file mode 100644 index 0000000000000000000000000000000000000000..1e401b70c77d8a3cdeb71b4e8a5bff0153c4da5e Binary files /dev/null and b/concepts/283_23.png differ diff --git a/concepts/283_24.png b/concepts/283_24.png new file mode 100644 index 0000000000000000000000000000000000000000..6aba439926089c0dfe70027fc103f726c2274f32 Binary files /dev/null and b/concepts/283_24.png differ diff --git a/concepts/283_5.png b/concepts/283_5.png new file mode 100644 index 0000000000000000000000000000000000000000..9aad115e72774c125008f84b98645668f9740bc7 Binary files /dev/null and b/concepts/283_5.png differ diff --git a/concepts/283_9.png b/concepts/283_9.png new file mode 100644 index 0000000000000000000000000000000000000000..56d65e969f8e021b747c11e41b907470700f52c1 Binary files /dev/null and b/concepts/283_9.png differ diff --git a/concepts/284_10.png b/concepts/284_10.png new file mode 100644 index 0000000000000000000000000000000000000000..998d2f91d1b650efcae99a68560a27e9fc02cab5 Binary files /dev/null and b/concepts/284_10.png differ diff --git a/concepts/284_16.png b/concepts/284_16.png new file mode 100644 index 0000000000000000000000000000000000000000..5c7d7ecd346f58dc660455693bdddc9bf1e41c1a Binary files /dev/null and b/concepts/284_16.png differ diff --git a/concepts/284_19.png b/concepts/284_19.png new file mode 100644 index 0000000000000000000000000000000000000000..c7da3a3a414e8d12408293328215cd0de02e0307 Binary files /dev/null and b/concepts/284_19.png differ diff --git a/concepts/284_2.png b/concepts/284_2.png new file mode 100644 index 0000000000000000000000000000000000000000..b34bdf495399e52b6d7ce653cf48717ae6946191 Binary files /dev/null and b/concepts/284_2.png differ diff --git a/concepts/284_3.png b/concepts/284_3.png new file mode 100644 index 0000000000000000000000000000000000000000..bcd79a00c028bcdf67df22e1573094375557e7ed Binary files /dev/null and b/concepts/284_3.png differ diff --git a/concepts/284_5.png b/concepts/284_5.png new file mode 100644 index 0000000000000000000000000000000000000000..0656d3d6d402a4bb687e506330bcdc39922f16ad Binary files /dev/null and b/concepts/284_5.png differ diff --git a/concepts/284_8.png b/concepts/284_8.png new file mode 100644 index 0000000000000000000000000000000000000000..6304bd034a934dd4f2b73d8dfbaabe3e15d765da Binary files /dev/null and b/concepts/284_8.png differ diff --git a/concepts/284_9.png b/concepts/284_9.png new file mode 100644 index 0000000000000000000000000000000000000000..de844379cb89d569ebbe327598462ea057e1892d Binary files /dev/null and b/concepts/284_9.png differ diff --git a/concepts/285_0.png b/concepts/285_0.png new file mode 100644 index 0000000000000000000000000000000000000000..93ce9409a16acf28a23a66c33d5fcaa213932213 Binary files /dev/null and b/concepts/285_0.png differ diff --git a/concepts/285_1.png b/concepts/285_1.png new file mode 100644 index 0000000000000000000000000000000000000000..56ef4835a3c6ac39bcf3432443c9263e6a8039e6 Binary files /dev/null and b/concepts/285_1.png differ diff --git a/concepts/285_3.png b/concepts/285_3.png new file mode 100644 index 0000000000000000000000000000000000000000..333e494bfd13aaf7601cdf9adc1ad05fd733dd9e Binary files /dev/null and b/concepts/285_3.png differ diff --git a/concepts/285_4.png b/concepts/285_4.png new file mode 100644 index 0000000000000000000000000000000000000000..a448eb245d34d6ae119b11d9763ed4daf8825cd6 Binary files /dev/null and b/concepts/285_4.png differ diff --git a/concepts/285_5.png b/concepts/285_5.png new file mode 100644 index 0000000000000000000000000000000000000000..fe9cd942585155f2b10a73a51a389bfc71be7712 Binary files /dev/null and b/concepts/285_5.png differ diff --git a/concepts/285_6.png b/concepts/285_6.png new file mode 100644 index 0000000000000000000000000000000000000000..8784994aea06c68c25334aa53609dfa9d672a6c4 Binary files /dev/null and b/concepts/285_6.png differ diff --git a/concepts/285_7.png b/concepts/285_7.png new file mode 100644 index 0000000000000000000000000000000000000000..486ef07496583afd36d6a4e985382acf6b209562 Binary files /dev/null and b/concepts/285_7.png differ diff --git a/concepts/285_8.png b/concepts/285_8.png new file mode 100644 index 0000000000000000000000000000000000000000..bcfb9dfbad20cc6c57be843dd9dda97f8573434f Binary files /dev/null and b/concepts/285_8.png differ diff --git a/concepts/286_0.png b/concepts/286_0.png new file mode 100644 index 0000000000000000000000000000000000000000..1a6003abec498cb7f9d9549deaff3b7fedd7e888 Binary files /dev/null and b/concepts/286_0.png differ diff --git a/concepts/286_1.png b/concepts/286_1.png new file mode 100644 index 0000000000000000000000000000000000000000..538261e992fd20c2f06aae1dcc2de714a96645f4 Binary files /dev/null and b/concepts/286_1.png differ diff --git a/concepts/286_10.png b/concepts/286_10.png new file mode 100644 index 0000000000000000000000000000000000000000..adb30730de67d429eab7883f58972f3142438e94 Binary files /dev/null and b/concepts/286_10.png differ diff --git a/concepts/286_2.png b/concepts/286_2.png new file mode 100644 index 0000000000000000000000000000000000000000..01fc30792414b651200f6d0bef81187d53d01734 Binary files /dev/null and b/concepts/286_2.png differ diff --git a/concepts/286_3.png b/concepts/286_3.png new file mode 100644 index 0000000000000000000000000000000000000000..e9a356a3a2800e3a5a4c39e87cd127e29d7f9185 Binary files /dev/null and b/concepts/286_3.png differ diff --git a/concepts/286_6.png b/concepts/286_6.png new file mode 100644 index 0000000000000000000000000000000000000000..2c13a5439ece3075300b44fc859a216c7b9d8e4c Binary files /dev/null and b/concepts/286_6.png differ diff --git a/concepts/286_8.png b/concepts/286_8.png new file mode 100644 index 0000000000000000000000000000000000000000..d41d1babe6682ead3c2aa7a380540fca818a1ce5 Binary files /dev/null and b/concepts/286_8.png differ diff --git a/concepts/286_9.png b/concepts/286_9.png new file mode 100644 index 0000000000000000000000000000000000000000..cd6a65ad1307b61345db8f736c5feab66895d9ec Binary files /dev/null and b/concepts/286_9.png differ diff --git a/concepts/287_0.png b/concepts/287_0.png new file mode 100644 index 0000000000000000000000000000000000000000..a417d044273c3547daa10ccda56c283affe18343 Binary files /dev/null and b/concepts/287_0.png differ diff --git a/concepts/287_1.png b/concepts/287_1.png new file mode 100644 index 0000000000000000000000000000000000000000..569a5b504bd8a16bc954aa923fe58a6bfd8f8492 Binary files /dev/null and b/concepts/287_1.png differ diff --git a/concepts/287_2.png b/concepts/287_2.png new file mode 100644 index 0000000000000000000000000000000000000000..a43162daf881a3e1b77e1e16bd2c44a876bc899a Binary files /dev/null and b/concepts/287_2.png differ diff --git a/concepts/287_3.png b/concepts/287_3.png new file mode 100644 index 0000000000000000000000000000000000000000..beceec7b7cfb43dba55926843140966874b32fa4 Binary files /dev/null and b/concepts/287_3.png differ diff --git a/concepts/287_4.png b/concepts/287_4.png new file mode 100644 index 0000000000000000000000000000000000000000..af4635e83c9ceb06235e1490335f51a0d24b38bb Binary files /dev/null and b/concepts/287_4.png differ diff --git a/concepts/287_6.png b/concepts/287_6.png new file mode 100644 index 0000000000000000000000000000000000000000..72f1b3f1cadfd8a08f33e59db825dd60e406ff79 Binary files /dev/null and b/concepts/287_6.png differ diff --git a/concepts/287_7.png b/concepts/287_7.png new file mode 100644 index 0000000000000000000000000000000000000000..7ffe64a871960f147b4f1dfa58f00533841bcf32 Binary files /dev/null and b/concepts/287_7.png differ diff --git a/concepts/287_9.png b/concepts/287_9.png new file mode 100644 index 0000000000000000000000000000000000000000..611df1a30622de13f0480821c829a0fd066e986a Binary files /dev/null and b/concepts/287_9.png differ diff --git a/concepts/288_0.png b/concepts/288_0.png new file mode 100644 index 0000000000000000000000000000000000000000..71f88c35b9ce9268129257f24bb236a131d6131a Binary files /dev/null and b/concepts/288_0.png differ diff --git a/concepts/288_1.png b/concepts/288_1.png new file mode 100644 index 0000000000000000000000000000000000000000..f2eedd178dc6386d83d58b0745b7b9fd2196bd8f Binary files /dev/null and b/concepts/288_1.png differ diff --git a/concepts/288_10.png b/concepts/288_10.png new file mode 100644 index 0000000000000000000000000000000000000000..77dbfba2069d73e41dfe7da13aaf8aaaa65cddbf Binary files /dev/null and b/concepts/288_10.png differ diff --git a/concepts/288_2.png b/concepts/288_2.png new file mode 100644 index 0000000000000000000000000000000000000000..22f90e823a01be7618cd6800c0e3ee484af8fef5 Binary files /dev/null and b/concepts/288_2.png differ diff --git a/concepts/288_3.png b/concepts/288_3.png new file mode 100644 index 0000000000000000000000000000000000000000..7a304c0ff024599c1c8ffd6856f06d6612351026 Binary files /dev/null and b/concepts/288_3.png differ diff --git a/concepts/288_4.png b/concepts/288_4.png new file mode 100644 index 0000000000000000000000000000000000000000..6e16766baf80e4969869ff0f112e87247b333740 Binary files /dev/null and b/concepts/288_4.png differ diff --git a/concepts/288_6.png b/concepts/288_6.png new file mode 100644 index 0000000000000000000000000000000000000000..ce6b32c30c67d27021eecfd4de982d1555816911 Binary files /dev/null and b/concepts/288_6.png differ diff --git a/concepts/288_9.png b/concepts/288_9.png new file mode 100644 index 0000000000000000000000000000000000000000..dd490fdeb5e9c8bedfd5f8b07df4e6fd78c2c61a Binary files /dev/null and b/concepts/288_9.png differ diff --git a/concepts/289_0.png b/concepts/289_0.png new file mode 100644 index 0000000000000000000000000000000000000000..8edc10007614382df0b29cb179abe5fb0cb4f8d3 Binary files /dev/null and b/concepts/289_0.png differ diff --git a/concepts/289_13.png b/concepts/289_13.png new file mode 100644 index 0000000000000000000000000000000000000000..209d6aa2b8d8d0b24776119d377a7476796d76e2 Binary files /dev/null and b/concepts/289_13.png differ diff --git a/concepts/289_2.png b/concepts/289_2.png new file mode 100644 index 0000000000000000000000000000000000000000..8b6d51793ec81372ff45b9185270b340d8ac72b3 Binary files /dev/null and b/concepts/289_2.png differ diff --git a/concepts/289_3.png b/concepts/289_3.png new file mode 100644 index 0000000000000000000000000000000000000000..acb1cc2a06a2fae91f8a1bc6a3c2c3bd3ec38692 Binary files /dev/null and b/concepts/289_3.png differ diff --git a/concepts/289_5.png b/concepts/289_5.png new file mode 100644 index 0000000000000000000000000000000000000000..2f548893c9756c5c1cce1f846de2a056eaccd065 Binary files /dev/null and b/concepts/289_5.png differ diff --git a/concepts/289_6.png b/concepts/289_6.png new file mode 100644 index 0000000000000000000000000000000000000000..6005ad312e0b9852f6064bd89709ab4a55715599 Binary files /dev/null and b/concepts/289_6.png differ diff --git a/concepts/289_8.png b/concepts/289_8.png new file mode 100644 index 0000000000000000000000000000000000000000..6bf21937d3ccba2787218bd2131f77c75d24a50d Binary files /dev/null and b/concepts/289_8.png differ diff --git a/concepts/289_9.png b/concepts/289_9.png new file mode 100644 index 0000000000000000000000000000000000000000..dacf6537c6de7b9456496c03c092774e699f1e9f Binary files /dev/null and b/concepts/289_9.png differ diff --git a/concepts/28_1.png b/concepts/28_1.png new file mode 100644 index 0000000000000000000000000000000000000000..93341a0ebd093c1bac2bd2534649e2dc7e51ba4b Binary files /dev/null and b/concepts/28_1.png differ diff --git a/concepts/28_10.png b/concepts/28_10.png new file mode 100644 index 0000000000000000000000000000000000000000..127d133093472e3ba3cb148bf357f7d738f5fbd1 Binary files /dev/null and b/concepts/28_10.png differ diff --git a/concepts/28_13.png b/concepts/28_13.png new file mode 100644 index 0000000000000000000000000000000000000000..65f1c9e0df1a693a6f4596bff9a0466e735cc0e2 Binary files /dev/null and b/concepts/28_13.png differ diff --git a/concepts/28_15.png b/concepts/28_15.png new file mode 100644 index 0000000000000000000000000000000000000000..7494b3d8310537d7eb3f318a14cb6f7c7876c1dd Binary files /dev/null and b/concepts/28_15.png differ diff --git a/concepts/28_18.png b/concepts/28_18.png new file mode 100644 index 0000000000000000000000000000000000000000..d1a9e27cb3b47550f1a2b2731c194f6a38e249b0 Binary files /dev/null and b/concepts/28_18.png differ diff --git a/concepts/28_2.png b/concepts/28_2.png new file mode 100644 index 0000000000000000000000000000000000000000..cb67c0ec77196843cddcfbcc6b41fb045b12f171 Binary files /dev/null and b/concepts/28_2.png differ diff --git a/concepts/28_5.png b/concepts/28_5.png new file mode 100644 index 0000000000000000000000000000000000000000..d7b33396fe9d1519f61fd4161862f1c4c54fc967 Binary files /dev/null and b/concepts/28_5.png differ diff --git a/concepts/28_9.png b/concepts/28_9.png new file mode 100644 index 0000000000000000000000000000000000000000..01834fc49b049f59535271b6944cf8b5251cb501 Binary files /dev/null and b/concepts/28_9.png differ diff --git a/concepts/290_0.png b/concepts/290_0.png new file mode 100644 index 0000000000000000000000000000000000000000..04acc61d9ff1652df126bfa320a20b4af0d21a52 Binary files /dev/null and b/concepts/290_0.png differ diff --git a/concepts/290_1.png b/concepts/290_1.png new file mode 100644 index 0000000000000000000000000000000000000000..beac34bdbdca27bf928fea73b44805d0c7a14042 Binary files /dev/null and b/concepts/290_1.png differ diff --git a/concepts/290_10.png b/concepts/290_10.png new file mode 100644 index 0000000000000000000000000000000000000000..108029df678dac90b063ff63a10d9041ad2f2e67 Binary files /dev/null and b/concepts/290_10.png differ diff --git a/concepts/290_2.png b/concepts/290_2.png new file mode 100644 index 0000000000000000000000000000000000000000..1029fd992cfa41293d261afc6d444a96d5ab93e1 Binary files /dev/null and b/concepts/290_2.png differ diff --git a/concepts/290_3.png b/concepts/290_3.png new file mode 100644 index 0000000000000000000000000000000000000000..2cc56eb34464672df1c97c1504f38fde61b7ec9d Binary files /dev/null and b/concepts/290_3.png differ diff --git a/concepts/290_5.png b/concepts/290_5.png new file mode 100644 index 0000000000000000000000000000000000000000..5f088696c9a00488e06035a9aaa0556892075481 Binary files /dev/null and b/concepts/290_5.png differ diff --git a/concepts/290_6.png b/concepts/290_6.png new file mode 100644 index 0000000000000000000000000000000000000000..e968175e88a4a09355803c141cfe0675adf9acea Binary files /dev/null and b/concepts/290_6.png differ diff --git a/concepts/290_7.png b/concepts/290_7.png new file mode 100644 index 0000000000000000000000000000000000000000..6c89bed74a1bcc00bcd6d129fd6035e811df94a7 Binary files /dev/null and b/concepts/290_7.png differ diff --git a/concepts/291_1.png b/concepts/291_1.png new file mode 100644 index 0000000000000000000000000000000000000000..59b9f08300b61e5d8889e40e8278d3d87e1dcc62 Binary files /dev/null and b/concepts/291_1.png differ diff --git a/concepts/291_10.png b/concepts/291_10.png new file mode 100644 index 0000000000000000000000000000000000000000..94c75b6194bf2078057c21d13bb882b85f3ccde9 Binary files /dev/null and b/concepts/291_10.png differ diff --git a/concepts/291_11.png b/concepts/291_11.png new file mode 100644 index 0000000000000000000000000000000000000000..247cab81d63a75ac3fafc8492e3ba999319b3f2f Binary files /dev/null and b/concepts/291_11.png differ diff --git a/concepts/291_12.png b/concepts/291_12.png new file mode 100644 index 0000000000000000000000000000000000000000..e79e260e988b6de073904c2eacf7034d04d67a1d Binary files /dev/null and b/concepts/291_12.png differ diff --git a/concepts/291_3.png b/concepts/291_3.png new file mode 100644 index 0000000000000000000000000000000000000000..e9944e636b331b35eb256cd5cb1c25ecaa43a416 Binary files /dev/null and b/concepts/291_3.png differ diff --git a/concepts/291_6.png b/concepts/291_6.png new file mode 100644 index 0000000000000000000000000000000000000000..99658532ee0cb6d09ac5a03abee80dd54792297f Binary files /dev/null and b/concepts/291_6.png differ diff --git a/concepts/291_7.png b/concepts/291_7.png new file mode 100644 index 0000000000000000000000000000000000000000..b8e150c5d7080298ca3f0d7946288c05c9e3c9b3 Binary files /dev/null and b/concepts/291_7.png differ diff --git a/concepts/291_9.png b/concepts/291_9.png new file mode 100644 index 0000000000000000000000000000000000000000..37ca1cac8f1467e137144dc6ff6d6f11fd3c5bae Binary files /dev/null and b/concepts/291_9.png differ diff --git a/concepts/292_0.png b/concepts/292_0.png new file mode 100644 index 0000000000000000000000000000000000000000..ec78cf1f104d062bfa72ca092912dce30f19159a Binary files /dev/null and b/concepts/292_0.png differ diff --git a/concepts/292_1.png b/concepts/292_1.png new file mode 100644 index 0000000000000000000000000000000000000000..8e9760abf05d80dd876f2fccbfc63f21606c1ce4 Binary files /dev/null and b/concepts/292_1.png differ diff --git a/concepts/292_2.png b/concepts/292_2.png new file mode 100644 index 0000000000000000000000000000000000000000..80e670e2d2c45197bc3b90dfc4d3aa8b8c70290b Binary files /dev/null and b/concepts/292_2.png differ diff --git a/concepts/292_3.png b/concepts/292_3.png new file mode 100644 index 0000000000000000000000000000000000000000..b6d6e135f2b23015eb7bd6a8dbf04f7226eabe5b Binary files /dev/null and b/concepts/292_3.png differ diff --git a/concepts/292_4.png b/concepts/292_4.png new file mode 100644 index 0000000000000000000000000000000000000000..0cb3a36053523497653ac562459d594407aaf287 Binary files /dev/null and b/concepts/292_4.png differ diff --git a/concepts/292_6.png b/concepts/292_6.png new file mode 100644 index 0000000000000000000000000000000000000000..14d1f3bc6391ece87fd454087740005176b13159 Binary files /dev/null and b/concepts/292_6.png differ diff --git a/concepts/292_8.png b/concepts/292_8.png new file mode 100644 index 0000000000000000000000000000000000000000..bc79299212251a7fbda42fdff754477975c435fd Binary files /dev/null and b/concepts/292_8.png differ diff --git a/concepts/292_9.png b/concepts/292_9.png new file mode 100644 index 0000000000000000000000000000000000000000..2df75efdb9bee99b9f00ee81a1dde4332d4814e9 Binary files /dev/null and b/concepts/292_9.png differ diff --git a/concepts/293_0.png b/concepts/293_0.png new file mode 100644 index 0000000000000000000000000000000000000000..4a6440c5af39654789f9735960eda53f49d349cf Binary files /dev/null and b/concepts/293_0.png differ diff --git a/concepts/293_1.png b/concepts/293_1.png new file mode 100644 index 0000000000000000000000000000000000000000..6267a6576d6d1d8e173221ac9f30627787fdf9b0 Binary files /dev/null and b/concepts/293_1.png differ diff --git a/concepts/293_2.png b/concepts/293_2.png new file mode 100644 index 0000000000000000000000000000000000000000..087035f26db6531d4bef85566003081f1976756e Binary files /dev/null and b/concepts/293_2.png differ diff --git a/concepts/293_3.png b/concepts/293_3.png new file mode 100644 index 0000000000000000000000000000000000000000..eb615b8dac807d12e55af5282c39998997979d83 Binary files /dev/null and b/concepts/293_3.png differ diff --git a/concepts/293_5.png b/concepts/293_5.png new file mode 100644 index 0000000000000000000000000000000000000000..eb4fd3014b207c2c63e3b0c345c38adffe8f252c Binary files /dev/null and b/concepts/293_5.png differ diff --git a/concepts/293_6.png b/concepts/293_6.png new file mode 100644 index 0000000000000000000000000000000000000000..236258cea2357ecd9c026b90ab5b3c31de1ba42d Binary files /dev/null and b/concepts/293_6.png differ diff --git a/concepts/293_8.png b/concepts/293_8.png new file mode 100644 index 0000000000000000000000000000000000000000..ae27cabfedfad581686a521b120137e80f93aebf Binary files /dev/null and b/concepts/293_8.png differ diff --git a/concepts/293_9.png b/concepts/293_9.png new file mode 100644 index 0000000000000000000000000000000000000000..d4398eedc14577d4f264313847c07b4eade54537 Binary files /dev/null and b/concepts/293_9.png differ diff --git a/concepts/294_0.png b/concepts/294_0.png new file mode 100644 index 0000000000000000000000000000000000000000..21b44bf4a48b607753dcc4616671f37289a491a2 Binary files /dev/null and b/concepts/294_0.png differ diff --git a/concepts/294_1.png b/concepts/294_1.png new file mode 100644 index 0000000000000000000000000000000000000000..bf9024ccb8b6790b288609b65cf193448bc0dfae Binary files /dev/null and b/concepts/294_1.png differ diff --git a/concepts/294_10.png b/concepts/294_10.png new file mode 100644 index 0000000000000000000000000000000000000000..af69620b3d5e55f71bc4e7a8d4f001a05e4cf344 Binary files /dev/null and b/concepts/294_10.png differ diff --git a/concepts/294_2.png b/concepts/294_2.png new file mode 100644 index 0000000000000000000000000000000000000000..2806104f9616d7a429cb7916573112a072e92192 Binary files /dev/null and b/concepts/294_2.png differ diff --git a/concepts/294_3.png b/concepts/294_3.png new file mode 100644 index 0000000000000000000000000000000000000000..900437b4ec95ac6f0a6abe1cc0815b0d2d3b571a Binary files /dev/null and b/concepts/294_3.png differ diff --git a/concepts/294_4.png b/concepts/294_4.png new file mode 100644 index 0000000000000000000000000000000000000000..fd3297b3226148daaafc0c0248d45e51e1c726cc Binary files /dev/null and b/concepts/294_4.png differ diff --git a/concepts/294_5.png b/concepts/294_5.png new file mode 100644 index 0000000000000000000000000000000000000000..98a59e922d2f1717ef4769324f8a27907cd714e4 Binary files /dev/null and b/concepts/294_5.png differ diff --git a/concepts/294_9.png b/concepts/294_9.png new file mode 100644 index 0000000000000000000000000000000000000000..2eb4e7322dac652f00fa06699b8fd70866606a9e Binary files /dev/null and b/concepts/294_9.png differ diff --git a/concepts/295_0.png b/concepts/295_0.png new file mode 100644 index 0000000000000000000000000000000000000000..cd56fc1ff38889a3a34e0d2b8ca1f940dd57e556 Binary files /dev/null and b/concepts/295_0.png differ diff --git a/concepts/295_1.png b/concepts/295_1.png new file mode 100644 index 0000000000000000000000000000000000000000..43709b0a177c179950ae12330535bfc856853de9 Binary files /dev/null and b/concepts/295_1.png differ diff --git a/concepts/295_2.png b/concepts/295_2.png new file mode 100644 index 0000000000000000000000000000000000000000..551a8a1ab9de02803963970312b5e3a762b0d056 Binary files /dev/null and b/concepts/295_2.png differ diff --git a/concepts/295_3.png b/concepts/295_3.png new file mode 100644 index 0000000000000000000000000000000000000000..b9b7124d98a211035f550b87c69ec6c05aa83700 Binary files /dev/null and b/concepts/295_3.png differ diff --git a/concepts/295_4.png b/concepts/295_4.png new file mode 100644 index 0000000000000000000000000000000000000000..687fded53fab1d906490d6350f6611b99d06ba36 Binary files /dev/null and b/concepts/295_4.png differ diff --git a/concepts/295_5.png b/concepts/295_5.png new file mode 100644 index 0000000000000000000000000000000000000000..c8cf59cc137813acf0a486f43321584118157d31 Binary files /dev/null and b/concepts/295_5.png differ diff --git a/concepts/295_7.png b/concepts/295_7.png new file mode 100644 index 0000000000000000000000000000000000000000..75964423b705d385b538cd9cbd7bdafb77803103 Binary files /dev/null and b/concepts/295_7.png differ diff --git a/concepts/295_9.png b/concepts/295_9.png new file mode 100644 index 0000000000000000000000000000000000000000..fabd8ded0816d4399b9d65ca1da2391cb47421f0 Binary files /dev/null and b/concepts/295_9.png differ diff --git a/concepts/296_0.png b/concepts/296_0.png new file mode 100644 index 0000000000000000000000000000000000000000..a2bb454ba16a74ac6c1bd6c051735d4f302fa1aa Binary files /dev/null and b/concepts/296_0.png differ diff --git a/concepts/296_1.png b/concepts/296_1.png new file mode 100644 index 0000000000000000000000000000000000000000..d26f38df4535cd35748a54e6c04470113019a548 Binary files /dev/null and b/concepts/296_1.png differ diff --git a/concepts/296_10.png b/concepts/296_10.png new file mode 100644 index 0000000000000000000000000000000000000000..83da5d48c3526b98bb9721a9290f40fdc1bfc761 Binary files /dev/null and b/concepts/296_10.png differ diff --git a/concepts/296_19.png b/concepts/296_19.png new file mode 100644 index 0000000000000000000000000000000000000000..4366ebf080d43bad3b54811c9dcbc7449c79c0c6 Binary files /dev/null and b/concepts/296_19.png differ diff --git a/concepts/296_4.png b/concepts/296_4.png new file mode 100644 index 0000000000000000000000000000000000000000..2968571373596748e5af9119edecf9ccc40efbbc Binary files /dev/null and b/concepts/296_4.png differ diff --git a/concepts/296_5.png b/concepts/296_5.png new file mode 100644 index 0000000000000000000000000000000000000000..7906fbd4f7f7e4a1cb58772cdf3f84accbcdbc89 Binary files /dev/null and b/concepts/296_5.png differ diff --git a/concepts/296_7.png b/concepts/296_7.png new file mode 100644 index 0000000000000000000000000000000000000000..9fa3c8759ca35cae204ecdfff2ac39ba1d60c59d Binary files /dev/null and b/concepts/296_7.png differ diff --git a/concepts/296_8.png b/concepts/296_8.png new file mode 100644 index 0000000000000000000000000000000000000000..5322c24221c77c12ae400cd229effa45a8b3f2af Binary files /dev/null and b/concepts/296_8.png differ diff --git a/concepts/297_0.png b/concepts/297_0.png new file mode 100644 index 0000000000000000000000000000000000000000..cc61b81585ff7170d242194943de1a23bbcb34e3 Binary files /dev/null and b/concepts/297_0.png differ diff --git a/concepts/297_14.png b/concepts/297_14.png new file mode 100644 index 0000000000000000000000000000000000000000..5d6672b29a4cea1574c10ac6b0d675a260753597 Binary files /dev/null and b/concepts/297_14.png differ diff --git a/concepts/297_2.png b/concepts/297_2.png new file mode 100644 index 0000000000000000000000000000000000000000..b5f21970df03e4617de5594c1a329a1e51ae7e46 Binary files /dev/null and b/concepts/297_2.png differ diff --git a/concepts/297_4.png b/concepts/297_4.png new file mode 100644 index 0000000000000000000000000000000000000000..cfd1133f7d7606eef204d1fefba746d81a06d74f Binary files /dev/null and b/concepts/297_4.png differ diff --git a/concepts/297_6.png b/concepts/297_6.png new file mode 100644 index 0000000000000000000000000000000000000000..2458d33a2cda4b70f4ecf87446211636482710cc Binary files /dev/null and b/concepts/297_6.png differ diff --git a/concepts/297_7.png b/concepts/297_7.png new file mode 100644 index 0000000000000000000000000000000000000000..f2dbea582fbfad562df63a86212f0674b537e0b9 Binary files /dev/null and b/concepts/297_7.png differ diff --git a/concepts/297_8.png b/concepts/297_8.png new file mode 100644 index 0000000000000000000000000000000000000000..cd203cf5860bda9ec14681842458c96b8702d660 Binary files /dev/null and b/concepts/297_8.png differ diff --git a/concepts/297_9.png b/concepts/297_9.png new file mode 100644 index 0000000000000000000000000000000000000000..c9a962fab51cc5560bcb1fdbeec906019218188f Binary files /dev/null and b/concepts/297_9.png differ diff --git a/concepts/298_0.png b/concepts/298_0.png new file mode 100644 index 0000000000000000000000000000000000000000..4fd32a051e254ec71c3d5096c18a4bde9512c815 Binary files /dev/null and b/concepts/298_0.png differ diff --git a/concepts/298_1.png b/concepts/298_1.png new file mode 100644 index 0000000000000000000000000000000000000000..08673467faa859a1148f421924a93278d878826c Binary files /dev/null and b/concepts/298_1.png differ diff --git a/concepts/298_10.png b/concepts/298_10.png new file mode 100644 index 0000000000000000000000000000000000000000..51086254e6a1f162ffa2e4c308616a324dda150f Binary files /dev/null and b/concepts/298_10.png differ diff --git a/concepts/298_2.png b/concepts/298_2.png new file mode 100644 index 0000000000000000000000000000000000000000..5d0d8f7af0f0cd5194ff2bf713df3d34b8594a5e Binary files /dev/null and b/concepts/298_2.png differ diff --git a/concepts/298_3.png b/concepts/298_3.png new file mode 100644 index 0000000000000000000000000000000000000000..90c2be7bf1dfad517e620dac109ebf4c7376d05b Binary files /dev/null and b/concepts/298_3.png differ diff --git a/concepts/298_5.png b/concepts/298_5.png new file mode 100644 index 0000000000000000000000000000000000000000..7751fb59a6e350538f7301658a1e9b170a3504e1 Binary files /dev/null and b/concepts/298_5.png differ diff --git a/concepts/298_7.png b/concepts/298_7.png new file mode 100644 index 0000000000000000000000000000000000000000..d3d2784061fe8dc9d82ef97362a4d92f80be0854 Binary files /dev/null and b/concepts/298_7.png differ diff --git a/concepts/298_8.png b/concepts/298_8.png new file mode 100644 index 0000000000000000000000000000000000000000..2fc756b895f9e8e3470dae74884084e6f8a2cc89 Binary files /dev/null and b/concepts/298_8.png differ diff --git a/concepts/299_0.png b/concepts/299_0.png new file mode 100644 index 0000000000000000000000000000000000000000..7ceb27379d8b60fc239d189fbbf0b7deaba32e2e Binary files /dev/null and b/concepts/299_0.png differ diff --git a/concepts/299_1.png b/concepts/299_1.png new file mode 100644 index 0000000000000000000000000000000000000000..8492bd355f5013ab49021227f89fb8bf7c8e5298 Binary files /dev/null and b/concepts/299_1.png differ diff --git a/concepts/299_2.png b/concepts/299_2.png new file mode 100644 index 0000000000000000000000000000000000000000..4a29bef4df1581c6b0235bf8ae3d3f920bc3c1e2 Binary files /dev/null and b/concepts/299_2.png differ diff --git a/concepts/299_3.png b/concepts/299_3.png new file mode 100644 index 0000000000000000000000000000000000000000..6fec13c4c9f877f51c8fcec7cab3a327c633f5d2 Binary files /dev/null and b/concepts/299_3.png differ diff --git a/concepts/299_4.png b/concepts/299_4.png new file mode 100644 index 0000000000000000000000000000000000000000..906c844229066989a9269f8fd5d5088a4e23ae47 Binary files /dev/null and b/concepts/299_4.png differ diff --git a/concepts/299_6.png b/concepts/299_6.png new file mode 100644 index 0000000000000000000000000000000000000000..21cb4f3ae932d9e026d8bc33f0b77c7387145a18 Binary files /dev/null and b/concepts/299_6.png differ diff --git a/concepts/299_7.png b/concepts/299_7.png new file mode 100644 index 0000000000000000000000000000000000000000..c91bb2366f618f5a8f7c11ebe3a45684fec692a7 Binary files /dev/null and b/concepts/299_7.png differ diff --git a/concepts/299_9.png b/concepts/299_9.png new file mode 100644 index 0000000000000000000000000000000000000000..edafef16f2501df1dedb75c94b6a4ba5de3395bb Binary files /dev/null and b/concepts/299_9.png differ diff --git a/concepts/29_0.png b/concepts/29_0.png new file mode 100644 index 0000000000000000000000000000000000000000..16f9e745fc3092119b369fc3e9970054ca2ad4a4 Binary files /dev/null and b/concepts/29_0.png differ diff --git a/concepts/29_1.png b/concepts/29_1.png new file mode 100644 index 0000000000000000000000000000000000000000..94a363e7bfe1d8f8fedf0fd165331d8bf3dd3c21 Binary files /dev/null and b/concepts/29_1.png differ diff --git a/concepts/29_18.png b/concepts/29_18.png new file mode 100644 index 0000000000000000000000000000000000000000..a3cf43974547a4dc34de4c0f544b92ae894e035e Binary files /dev/null and b/concepts/29_18.png differ diff --git a/concepts/29_19.png b/concepts/29_19.png new file mode 100644 index 0000000000000000000000000000000000000000..cc29c5ecd6555dfc7919614a518aa7651a909623 Binary files /dev/null and b/concepts/29_19.png differ diff --git a/concepts/29_2.png b/concepts/29_2.png new file mode 100644 index 0000000000000000000000000000000000000000..9fc725c63f2a6f5291e01d58797798bd5aa89c84 Binary files /dev/null and b/concepts/29_2.png differ diff --git a/concepts/29_4.png b/concepts/29_4.png new file mode 100644 index 0000000000000000000000000000000000000000..6de5af281415dd5df3f9dd21cf278ed68d83c377 Binary files /dev/null and b/concepts/29_4.png differ diff --git a/concepts/29_5.png b/concepts/29_5.png new file mode 100644 index 0000000000000000000000000000000000000000..b125a996598c2d6c4e4049e8c4cfc66005596014 Binary files /dev/null and b/concepts/29_5.png differ diff --git a/concepts/29_6.png b/concepts/29_6.png new file mode 100644 index 0000000000000000000000000000000000000000..a8c0f8c1462e5d12dd13155c18b38b488f727e4b Binary files /dev/null and b/concepts/29_6.png differ diff --git a/concepts/2_0.png b/concepts/2_0.png new file mode 100644 index 0000000000000000000000000000000000000000..9f9adb10db1377f2c851a479a633a11f2f0b82ef Binary files /dev/null and b/concepts/2_0.png differ diff --git a/concepts/2_1.png b/concepts/2_1.png new file mode 100644 index 0000000000000000000000000000000000000000..03c3781d345685130f8bf95769d5de5f82bd0eba Binary files /dev/null and b/concepts/2_1.png differ diff --git a/concepts/2_10.png b/concepts/2_10.png new file mode 100644 index 0000000000000000000000000000000000000000..38f8009c3f0f644c5bc7604a59738e49c359b2f9 Binary files /dev/null and b/concepts/2_10.png differ diff --git a/concepts/2_11.png b/concepts/2_11.png new file mode 100644 index 0000000000000000000000000000000000000000..b10eb1ac84470ad1736da58e4390dba04273ac9a Binary files /dev/null and b/concepts/2_11.png differ diff --git a/concepts/2_2.png b/concepts/2_2.png new file mode 100644 index 0000000000000000000000000000000000000000..7e9c585342b18e465c67c53206f0f9350e2fc3eb Binary files /dev/null and b/concepts/2_2.png differ diff --git a/concepts/2_6.png b/concepts/2_6.png new file mode 100644 index 0000000000000000000000000000000000000000..86e97ebe6d87c731d8154ede681a0fa5f725057c Binary files /dev/null and b/concepts/2_6.png differ diff --git a/concepts/2_8.png b/concepts/2_8.png new file mode 100644 index 0000000000000000000000000000000000000000..7e9c68cc91b100eab8e2ec3abd050bb7ba77bb02 Binary files /dev/null and b/concepts/2_8.png differ diff --git a/concepts/2_9.png b/concepts/2_9.png new file mode 100644 index 0000000000000000000000000000000000000000..8983c7636fc06b6e215fba01fd273b44c9c83529 Binary files /dev/null and b/concepts/2_9.png differ diff --git a/concepts/300_1.png b/concepts/300_1.png new file mode 100644 index 0000000000000000000000000000000000000000..2e6fb8700f118b4b8dcfed37906849127c90b951 Binary files /dev/null and b/concepts/300_1.png differ diff --git a/concepts/300_15.png b/concepts/300_15.png new file mode 100644 index 0000000000000000000000000000000000000000..4a46ae26b4588876b92af99ef43ac7dd3eec1e30 Binary files /dev/null and b/concepts/300_15.png differ diff --git a/concepts/300_17.png b/concepts/300_17.png new file mode 100644 index 0000000000000000000000000000000000000000..e048babbf090c1b92efd120005ce65f3d150913b Binary files /dev/null and b/concepts/300_17.png differ diff --git a/concepts/300_19.png b/concepts/300_19.png new file mode 100644 index 0000000000000000000000000000000000000000..be3ee89c7bb1f46e57de11b17a9c343594a4a638 Binary files /dev/null and b/concepts/300_19.png differ diff --git a/concepts/300_23.png b/concepts/300_23.png new file mode 100644 index 0000000000000000000000000000000000000000..dc7235f7769e8ede3d78beec5d5829633ac94860 Binary files /dev/null and b/concepts/300_23.png differ diff --git a/concepts/300_6.png b/concepts/300_6.png new file mode 100644 index 0000000000000000000000000000000000000000..399ea21c1a0a290d7959c53784556b563f82aeaf Binary files /dev/null and b/concepts/300_6.png differ diff --git a/concepts/300_7.png b/concepts/300_7.png new file mode 100644 index 0000000000000000000000000000000000000000..76ef97a459633bf93e6ef3872861f4a39ac0103c Binary files /dev/null and b/concepts/300_7.png differ diff --git a/concepts/300_9.png b/concepts/300_9.png new file mode 100644 index 0000000000000000000000000000000000000000..e5b3f947a2150ed7ff07cb4b3db67c1a695d7701 Binary files /dev/null and b/concepts/300_9.png differ diff --git a/concepts/301_0.png b/concepts/301_0.png new file mode 100644 index 0000000000000000000000000000000000000000..1770693d61ce85b83340502849f5b1b52b6d738d Binary files /dev/null and b/concepts/301_0.png differ diff --git a/concepts/301_1.png b/concepts/301_1.png new file mode 100644 index 0000000000000000000000000000000000000000..f2b36e6be4d6662b7dc505e16bb4ee7f946b3fff Binary files /dev/null and b/concepts/301_1.png differ diff --git a/concepts/301_2.png b/concepts/301_2.png new file mode 100644 index 0000000000000000000000000000000000000000..0158f9696fffa8a1cb230bc38e62b1a986056ad7 Binary files /dev/null and b/concepts/301_2.png differ diff --git a/concepts/301_4.png b/concepts/301_4.png new file mode 100644 index 0000000000000000000000000000000000000000..7d65f1206379af3be2cd337dfbc6a240c7f63f49 Binary files /dev/null and b/concepts/301_4.png differ diff --git a/concepts/301_5.png b/concepts/301_5.png new file mode 100644 index 0000000000000000000000000000000000000000..f9ca509b91ef12b8aae896bf4f4b32cb57efe2b8 Binary files /dev/null and b/concepts/301_5.png differ diff --git a/concepts/301_6.png b/concepts/301_6.png new file mode 100644 index 0000000000000000000000000000000000000000..68aa00f1454159ea9d5003397a76a9d92c0dff02 Binary files /dev/null and b/concepts/301_6.png differ diff --git a/concepts/301_7.png b/concepts/301_7.png new file mode 100644 index 0000000000000000000000000000000000000000..28e57da31f1dbc42ada8d63830bb6993618103b1 Binary files /dev/null and b/concepts/301_7.png differ diff --git a/concepts/301_8.png b/concepts/301_8.png new file mode 100644 index 0000000000000000000000000000000000000000..548a0d07dbd020df8d38913fdc023c3abf3734d5 Binary files /dev/null and b/concepts/301_8.png differ diff --git a/concepts/302_1.png b/concepts/302_1.png new file mode 100644 index 0000000000000000000000000000000000000000..792bfd37d8ea941adfee9f78480472ac14b6a5b2 Binary files /dev/null and b/concepts/302_1.png differ diff --git a/concepts/302_10.png b/concepts/302_10.png new file mode 100644 index 0000000000000000000000000000000000000000..7f51f844c16132fa242630e4689c482f03fc3a67 Binary files /dev/null and b/concepts/302_10.png differ diff --git a/concepts/302_11.png b/concepts/302_11.png new file mode 100644 index 0000000000000000000000000000000000000000..3395d2bd35af1f09f341c17893264a646a8394a9 Binary files /dev/null and b/concepts/302_11.png differ diff --git a/concepts/302_14.png b/concepts/302_14.png new file mode 100644 index 0000000000000000000000000000000000000000..3e9646a49e5fcc78b9a99d6b2862623e34f84bb6 Binary files /dev/null and b/concepts/302_14.png differ diff --git a/concepts/302_16.png b/concepts/302_16.png new file mode 100644 index 0000000000000000000000000000000000000000..ccb9cbcd2db2e6c6c01a60e046a71ca8b5ee7afc Binary files /dev/null and b/concepts/302_16.png differ diff --git a/concepts/302_3.png b/concepts/302_3.png new file mode 100644 index 0000000000000000000000000000000000000000..54ebc8cef05c7679b642965e7110ec510c8264d8 Binary files /dev/null and b/concepts/302_3.png differ diff --git a/concepts/302_4.png b/concepts/302_4.png new file mode 100644 index 0000000000000000000000000000000000000000..583644ab91c2682ef3c1fe14b1ee887f4afbde2c Binary files /dev/null and b/concepts/302_4.png differ diff --git a/concepts/302_9.png b/concepts/302_9.png new file mode 100644 index 0000000000000000000000000000000000000000..a7c66d1a637016f2ce2d7f2d8379013a76cc1d80 Binary files /dev/null and b/concepts/302_9.png differ diff --git a/concepts/303_0.png b/concepts/303_0.png new file mode 100644 index 0000000000000000000000000000000000000000..69eae4348c72cdcdbcf7357d0214208991b9d68b Binary files /dev/null and b/concepts/303_0.png differ diff --git a/concepts/303_1.png b/concepts/303_1.png new file mode 100644 index 0000000000000000000000000000000000000000..d0acad901883a0814b07c56fd125908c311d866b Binary files /dev/null and b/concepts/303_1.png differ diff --git a/concepts/303_14.png b/concepts/303_14.png new file mode 100644 index 0000000000000000000000000000000000000000..ef2ed6c7a86d4f71d24acc5935f1289838cfa5a3 Binary files /dev/null and b/concepts/303_14.png differ diff --git a/concepts/303_16.png b/concepts/303_16.png new file mode 100644 index 0000000000000000000000000000000000000000..d9a1bc48fbfa1ee66c816a63e3c69d83c8002559 Binary files /dev/null and b/concepts/303_16.png differ diff --git a/concepts/303_19.png b/concepts/303_19.png new file mode 100644 index 0000000000000000000000000000000000000000..ec7459670f525adc4a00678f593bb1acab255f00 Binary files /dev/null and b/concepts/303_19.png differ diff --git a/concepts/303_21.png b/concepts/303_21.png new file mode 100644 index 0000000000000000000000000000000000000000..e684c6cd3fe3aeba3bb7030288798912abeeb339 Binary files /dev/null and b/concepts/303_21.png differ diff --git a/concepts/303_8.png b/concepts/303_8.png new file mode 100644 index 0000000000000000000000000000000000000000..0b5880c0c156df37d368ddc2689ffb4e276cb715 Binary files /dev/null and b/concepts/303_8.png differ diff --git a/concepts/303_9.png b/concepts/303_9.png new file mode 100644 index 0000000000000000000000000000000000000000..ec75aa9091b6958124b2f746eb7e0dd62e657128 Binary files /dev/null and b/concepts/303_9.png differ diff --git a/concepts/304_0.png b/concepts/304_0.png new file mode 100644 index 0000000000000000000000000000000000000000..0c0e185f2a8b575128a5fd411c2c5fda19f81a8e Binary files /dev/null and b/concepts/304_0.png differ diff --git a/concepts/304_1.png b/concepts/304_1.png new file mode 100644 index 0000000000000000000000000000000000000000..3dc7b3505065b2f8ea4077f2d1307d3cb2376b2d Binary files /dev/null and b/concepts/304_1.png differ diff --git a/concepts/304_2.png b/concepts/304_2.png new file mode 100644 index 0000000000000000000000000000000000000000..b369c6378b48d0592e2a206b0029eb41fb9cc9cf Binary files /dev/null and b/concepts/304_2.png differ diff --git a/concepts/304_3.png b/concepts/304_3.png new file mode 100644 index 0000000000000000000000000000000000000000..a5ed74734b92670790796c57c8dd0b7689360e0e Binary files /dev/null and b/concepts/304_3.png differ diff --git a/concepts/304_4.png b/concepts/304_4.png new file mode 100644 index 0000000000000000000000000000000000000000..25a12e70133eb5d0f1f3343c447fa4c2b728a9a5 Binary files /dev/null and b/concepts/304_4.png differ diff --git a/concepts/304_6.png b/concepts/304_6.png new file mode 100644 index 0000000000000000000000000000000000000000..813ca78d3e7d63f4055c188561d65f0d361040b9 Binary files /dev/null and b/concepts/304_6.png differ diff --git a/concepts/304_7.png b/concepts/304_7.png new file mode 100644 index 0000000000000000000000000000000000000000..465e3e27d06597b054009d98755821e724c7c730 Binary files /dev/null and b/concepts/304_7.png differ diff --git a/concepts/304_8.png b/concepts/304_8.png new file mode 100644 index 0000000000000000000000000000000000000000..f838922173e7d2a6ce100b3d301cbe761fbf67a1 Binary files /dev/null and b/concepts/304_8.png differ diff --git a/concepts/305_0.png b/concepts/305_0.png new file mode 100644 index 0000000000000000000000000000000000000000..ad4e11c69461d6e2bcccb59ddc8ffea3bc00f7ac Binary files /dev/null and b/concepts/305_0.png differ diff --git a/concepts/305_1.png b/concepts/305_1.png new file mode 100644 index 0000000000000000000000000000000000000000..a2dd7653d44386760ed8015ac2b0e3a091327e6b Binary files /dev/null and b/concepts/305_1.png differ diff --git a/concepts/305_2.png b/concepts/305_2.png new file mode 100644 index 0000000000000000000000000000000000000000..79084e1f0f96391f72b9f6dfff0888d7d9e14bfa Binary files /dev/null and b/concepts/305_2.png differ diff --git a/concepts/305_3.png b/concepts/305_3.png new file mode 100644 index 0000000000000000000000000000000000000000..430ea2c3182161434c45209d47318357222f91bf Binary files /dev/null and b/concepts/305_3.png differ diff --git a/concepts/305_4.png b/concepts/305_4.png new file mode 100644 index 0000000000000000000000000000000000000000..cea5550c6f80e169d449cbde6827105c2e5ca166 Binary files /dev/null and b/concepts/305_4.png differ diff --git a/concepts/305_6.png b/concepts/305_6.png new file mode 100644 index 0000000000000000000000000000000000000000..4f6df8090f455dfdc16f47b20a820e96e117f8e1 Binary files /dev/null and b/concepts/305_6.png differ diff --git a/concepts/305_7.png b/concepts/305_7.png new file mode 100644 index 0000000000000000000000000000000000000000..208277d7fed8409ff592df5c5c394552a2aba0a4 Binary files /dev/null and b/concepts/305_7.png differ diff --git a/concepts/305_9.png b/concepts/305_9.png new file mode 100644 index 0000000000000000000000000000000000000000..a822be323a41c5e378812926d842896f4abc781f Binary files /dev/null and b/concepts/305_9.png differ diff --git a/concepts/306_0.png b/concepts/306_0.png new file mode 100644 index 0000000000000000000000000000000000000000..65473005a42b6c43a441fcbf3b0c5bb8d9a21f92 Binary files /dev/null and b/concepts/306_0.png differ diff --git a/concepts/306_1.png b/concepts/306_1.png new file mode 100644 index 0000000000000000000000000000000000000000..a3de0469f48aa41dd09de86915c9ad035f7108b7 Binary files /dev/null and b/concepts/306_1.png differ diff --git a/concepts/306_10.png b/concepts/306_10.png new file mode 100644 index 0000000000000000000000000000000000000000..00989f4e3da865f413d3bd9dcc5da46ce2fb9d48 Binary files /dev/null and b/concepts/306_10.png differ diff --git a/concepts/306_2.png b/concepts/306_2.png new file mode 100644 index 0000000000000000000000000000000000000000..2e37acae59996582a393268e5f2e0280f6edbb4a Binary files /dev/null and b/concepts/306_2.png differ diff --git a/concepts/306_3.png b/concepts/306_3.png new file mode 100644 index 0000000000000000000000000000000000000000..ba24f9fba79f2e10cd26fa86e08393598d262243 Binary files /dev/null and b/concepts/306_3.png differ diff --git a/concepts/306_4.png b/concepts/306_4.png new file mode 100644 index 0000000000000000000000000000000000000000..b71711f7e113dd72b944b8c47fc670b57b57dda1 Binary files /dev/null and b/concepts/306_4.png differ diff --git a/concepts/306_5.png b/concepts/306_5.png new file mode 100644 index 0000000000000000000000000000000000000000..a6c9aad74219dd46c3a7e9fe3ba552b7a9133b05 Binary files /dev/null and b/concepts/306_5.png differ diff --git a/concepts/306_6.png b/concepts/306_6.png new file mode 100644 index 0000000000000000000000000000000000000000..7e2b61fd005b7f827e5ff90fca93c51a1423c6dd Binary files /dev/null and b/concepts/306_6.png differ diff --git a/concepts/307_0.png b/concepts/307_0.png new file mode 100644 index 0000000000000000000000000000000000000000..209019a84fb177b2a6cf1bf79a055ab7c12d2d74 Binary files /dev/null and b/concepts/307_0.png differ diff --git a/concepts/307_1.png b/concepts/307_1.png new file mode 100644 index 0000000000000000000000000000000000000000..a39f2e7ae8018a237627ffe54c61180c7d900c94 Binary files /dev/null and b/concepts/307_1.png differ diff --git a/concepts/307_10.png b/concepts/307_10.png new file mode 100644 index 0000000000000000000000000000000000000000..119c60603c931f9d8033737e327b54e92187c2ce Binary files /dev/null and b/concepts/307_10.png differ diff --git a/concepts/307_11.png b/concepts/307_11.png new file mode 100644 index 0000000000000000000000000000000000000000..e61f3756e36356666d861d42c6f98f5884d227d2 Binary files /dev/null and b/concepts/307_11.png differ diff --git a/concepts/307_2.png b/concepts/307_2.png new file mode 100644 index 0000000000000000000000000000000000000000..c0c49bc0e4cda043e9071e5c4d83f7980f89134b Binary files /dev/null and b/concepts/307_2.png differ diff --git a/concepts/307_4.png b/concepts/307_4.png new file mode 100644 index 0000000000000000000000000000000000000000..198b9e750b5dcb6fdd71bdb24ec5a2e57a1a53bb Binary files /dev/null and b/concepts/307_4.png differ diff --git a/concepts/307_5.png b/concepts/307_5.png new file mode 100644 index 0000000000000000000000000000000000000000..576b27c0894f6bcd11fdf0592e5e34e336bd3eb7 Binary files /dev/null and b/concepts/307_5.png differ diff --git a/concepts/307_6.png b/concepts/307_6.png new file mode 100644 index 0000000000000000000000000000000000000000..b466f4ac95f4b7682518bbc9863e0026639bbda6 Binary files /dev/null and b/concepts/307_6.png differ diff --git a/concepts/308_0.png b/concepts/308_0.png new file mode 100644 index 0000000000000000000000000000000000000000..2935a840cddc4d2dda8f237e42d291a59b0a7e31 Binary files /dev/null and b/concepts/308_0.png differ diff --git a/concepts/308_1.png b/concepts/308_1.png new file mode 100644 index 0000000000000000000000000000000000000000..fc10cd6435241c63480d5b38b9906b328d1dfdac Binary files /dev/null and b/concepts/308_1.png differ diff --git a/concepts/308_2.png b/concepts/308_2.png new file mode 100644 index 0000000000000000000000000000000000000000..07619f67fdd5b4276899ceb979c4590932fd2375 Binary files /dev/null and b/concepts/308_2.png differ diff --git a/concepts/308_3.png b/concepts/308_3.png new file mode 100644 index 0000000000000000000000000000000000000000..a5bf86c2fc995f8a0c40b7718692a34011c1a960 Binary files /dev/null and b/concepts/308_3.png differ diff --git a/concepts/308_4.png b/concepts/308_4.png new file mode 100644 index 0000000000000000000000000000000000000000..1f547db93948659bc62564fdd3ff896e616448ef Binary files /dev/null and b/concepts/308_4.png differ diff --git a/concepts/308_5.png b/concepts/308_5.png new file mode 100644 index 0000000000000000000000000000000000000000..fe7269064b72d674686dc6b2b0c1e5a73b5cb7cb Binary files /dev/null and b/concepts/308_5.png differ diff --git a/concepts/308_6.png b/concepts/308_6.png new file mode 100644 index 0000000000000000000000000000000000000000..3c2e8c905a277edf8aa47e02c94fc745a99a98ff Binary files /dev/null and b/concepts/308_6.png differ diff --git a/concepts/308_9.png b/concepts/308_9.png new file mode 100644 index 0000000000000000000000000000000000000000..76782c01763e25c7a75c10083822fdf2a6e33438 Binary files /dev/null and b/concepts/308_9.png differ diff --git a/concepts/309_1.png b/concepts/309_1.png new file mode 100644 index 0000000000000000000000000000000000000000..f23e142d77c7b2a4da238bcb9fa32a63a8105d24 Binary files /dev/null and b/concepts/309_1.png differ diff --git a/concepts/309_15.png b/concepts/309_15.png new file mode 100644 index 0000000000000000000000000000000000000000..1b84ab637199e566257287a780fd36bbd003e6d9 Binary files /dev/null and b/concepts/309_15.png differ diff --git a/concepts/309_19.png b/concepts/309_19.png new file mode 100644 index 0000000000000000000000000000000000000000..6332af2fff267a19295294f4a5d0b4fbb3433655 Binary files /dev/null and b/concepts/309_19.png differ diff --git a/concepts/309_2.png b/concepts/309_2.png new file mode 100644 index 0000000000000000000000000000000000000000..68d4c8398487ff9ed1d8d547dfa0b056922e09fe Binary files /dev/null and b/concepts/309_2.png differ diff --git a/concepts/309_20.png b/concepts/309_20.png new file mode 100644 index 0000000000000000000000000000000000000000..66df365534d1107a044aec27f462cfee0c13bbab Binary files /dev/null and b/concepts/309_20.png differ diff --git a/concepts/309_6.png b/concepts/309_6.png new file mode 100644 index 0000000000000000000000000000000000000000..a8617794356fe3baa15c5c229025b34da3643da4 Binary files /dev/null and b/concepts/309_6.png differ diff --git a/concepts/309_7.png b/concepts/309_7.png new file mode 100644 index 0000000000000000000000000000000000000000..33b298fb8af8da5183000875d89f12b6f2e37b98 Binary files /dev/null and b/concepts/309_7.png differ diff --git a/concepts/309_8.png b/concepts/309_8.png new file mode 100644 index 0000000000000000000000000000000000000000..3288b41d596b3e7ef2253590dfd8a593749bf405 Binary files /dev/null and b/concepts/309_8.png differ diff --git a/concepts/30_0.png b/concepts/30_0.png new file mode 100644 index 0000000000000000000000000000000000000000..2a5cf654131484a811fba172717fca2735efae61 Binary files /dev/null and b/concepts/30_0.png differ diff --git a/concepts/30_1.png b/concepts/30_1.png new file mode 100644 index 0000000000000000000000000000000000000000..8aed79c17c2f49fdacae0fe5ff0ad6ab60a06c92 Binary files /dev/null and b/concepts/30_1.png differ diff --git a/concepts/30_10.png b/concepts/30_10.png new file mode 100644 index 0000000000000000000000000000000000000000..7fe972460bd387d955be4458bb7c5dfad4bc9237 Binary files /dev/null and b/concepts/30_10.png differ diff --git a/concepts/30_11.png b/concepts/30_11.png new file mode 100644 index 0000000000000000000000000000000000000000..437b4973128e58bd3e87d626e3dffa9c8e3b8529 Binary files /dev/null and b/concepts/30_11.png differ diff --git a/concepts/30_12.png b/concepts/30_12.png new file mode 100644 index 0000000000000000000000000000000000000000..5ad370a672d2bf783e2808696c4e31df591ad5e5 Binary files /dev/null and b/concepts/30_12.png differ diff --git a/concepts/30_13.png b/concepts/30_13.png new file mode 100644 index 0000000000000000000000000000000000000000..04f7933f57b7a26ca549450977968127456b33f7 Binary files /dev/null and b/concepts/30_13.png differ diff --git a/concepts/30_7.png b/concepts/30_7.png new file mode 100644 index 0000000000000000000000000000000000000000..7a6014f198d5501807291e78b5786e043f31a007 Binary files /dev/null and b/concepts/30_7.png differ diff --git a/concepts/30_9.png b/concepts/30_9.png new file mode 100644 index 0000000000000000000000000000000000000000..53445a6f9d6ccb86156f59e37980d2f9cf64daad Binary files /dev/null and b/concepts/30_9.png differ diff --git a/concepts/310_0.png b/concepts/310_0.png new file mode 100644 index 0000000000000000000000000000000000000000..cba73ecd1707db7da222755c66eb2efb7db73127 Binary files /dev/null and b/concepts/310_0.png differ diff --git a/concepts/310_1.png b/concepts/310_1.png new file mode 100644 index 0000000000000000000000000000000000000000..6abad3b0ba3e779ea7a045157478c17bc0a323f4 Binary files /dev/null and b/concepts/310_1.png differ diff --git a/concepts/310_13.png b/concepts/310_13.png new file mode 100644 index 0000000000000000000000000000000000000000..11df3699bf167d8d3146c78b69be714f02449f68 Binary files /dev/null and b/concepts/310_13.png differ diff --git a/concepts/310_2.png b/concepts/310_2.png new file mode 100644 index 0000000000000000000000000000000000000000..bd37b155266c27b63014c94c519ea26f71a0f99b Binary files /dev/null and b/concepts/310_2.png differ diff --git a/concepts/310_3.png b/concepts/310_3.png new file mode 100644 index 0000000000000000000000000000000000000000..e5cc788859344f3be40b6169614688aa67da3ebc Binary files /dev/null and b/concepts/310_3.png differ diff --git a/concepts/310_6.png b/concepts/310_6.png new file mode 100644 index 0000000000000000000000000000000000000000..e74b5df851d6bfaff3bfab641c61b6f6d4d0dc28 Binary files /dev/null and b/concepts/310_6.png differ diff --git a/concepts/310_7.png b/concepts/310_7.png new file mode 100644 index 0000000000000000000000000000000000000000..9ad8901a31d064edd3c74b293862be16d9909002 Binary files /dev/null and b/concepts/310_7.png differ diff --git a/concepts/310_9.png b/concepts/310_9.png new file mode 100644 index 0000000000000000000000000000000000000000..8d1af1e99361b369e2ef7e63969a760cc25fe6cf Binary files /dev/null and b/concepts/310_9.png differ diff --git a/concepts/311_0.png b/concepts/311_0.png new file mode 100644 index 0000000000000000000000000000000000000000..45d411580ae19e09e9f2c216e6c07859d163a8f8 Binary files /dev/null and b/concepts/311_0.png differ diff --git a/concepts/311_1.png b/concepts/311_1.png new file mode 100644 index 0000000000000000000000000000000000000000..c3b8807cb2a44ab47e34d9e2ff8f5f0a5e3e2722 Binary files /dev/null and b/concepts/311_1.png differ diff --git a/concepts/311_10.png b/concepts/311_10.png new file mode 100644 index 0000000000000000000000000000000000000000..b4cadf616bf5285dad811fd511c0ae3787588637 Binary files /dev/null and b/concepts/311_10.png differ diff --git a/concepts/311_2.png b/concepts/311_2.png new file mode 100644 index 0000000000000000000000000000000000000000..262cd14b6d877db1f69b8d39dbbcfb6a8956edb5 Binary files /dev/null and b/concepts/311_2.png differ diff --git a/concepts/311_3.png b/concepts/311_3.png new file mode 100644 index 0000000000000000000000000000000000000000..d8dfeabf21dc4c500a7891dc7d8ed9b34329a03f Binary files /dev/null and b/concepts/311_3.png differ diff --git a/concepts/311_4.png b/concepts/311_4.png new file mode 100644 index 0000000000000000000000000000000000000000..f8caeadedd81a32eb1917993d2b8aee0de052f31 Binary files /dev/null and b/concepts/311_4.png differ diff --git a/concepts/311_6.png b/concepts/311_6.png new file mode 100644 index 0000000000000000000000000000000000000000..f733d9f87616295209824bc0de165df1cbbe84a9 Binary files /dev/null and b/concepts/311_6.png differ diff --git a/concepts/311_8.png b/concepts/311_8.png new file mode 100644 index 0000000000000000000000000000000000000000..ab1fe8604b24ae2a3963bb90d05cef2fa3813c17 Binary files /dev/null and b/concepts/311_8.png differ diff --git a/concepts/312_0.png b/concepts/312_0.png new file mode 100644 index 0000000000000000000000000000000000000000..5db11d2b54d70ebe7042bd5a64ccc2d4eea0a005 Binary files /dev/null and b/concepts/312_0.png differ diff --git a/concepts/312_1.png b/concepts/312_1.png new file mode 100644 index 0000000000000000000000000000000000000000..d645d58adc18b636691cafac9e27ab4109458505 Binary files /dev/null and b/concepts/312_1.png differ diff --git a/concepts/312_10.png b/concepts/312_10.png new file mode 100644 index 0000000000000000000000000000000000000000..e33d396c8de91fbbd0fb460861102fe41c351ae6 Binary files /dev/null and b/concepts/312_10.png differ diff --git a/concepts/312_2.png b/concepts/312_2.png new file mode 100644 index 0000000000000000000000000000000000000000..d19d605f139e2a98d23b23dc5eb6cfb3f364b5b4 Binary files /dev/null and b/concepts/312_2.png differ diff --git a/concepts/312_3.png b/concepts/312_3.png new file mode 100644 index 0000000000000000000000000000000000000000..804fcfec5e3084bef8753e078cc9842f3f0eed17 Binary files /dev/null and b/concepts/312_3.png differ diff --git a/concepts/312_5.png b/concepts/312_5.png new file mode 100644 index 0000000000000000000000000000000000000000..846921d342816f6a3db3c4f021506ef58626e00e Binary files /dev/null and b/concepts/312_5.png differ diff --git a/concepts/312_6.png b/concepts/312_6.png new file mode 100644 index 0000000000000000000000000000000000000000..c1a0ce879744282fe30d032ae0b26477f06e7be3 Binary files /dev/null and b/concepts/312_6.png differ diff --git a/concepts/312_7.png b/concepts/312_7.png new file mode 100644 index 0000000000000000000000000000000000000000..9c26842eb82c244c37f1cb6a96d24abe120af473 Binary files /dev/null and b/concepts/312_7.png differ diff --git a/concepts/313_10.png b/concepts/313_10.png new file mode 100644 index 0000000000000000000000000000000000000000..68089077d2b14839394001f4318227b36d906529 Binary files /dev/null and b/concepts/313_10.png differ diff --git a/concepts/313_14.png b/concepts/313_14.png new file mode 100644 index 0000000000000000000000000000000000000000..a2584da58f38166440e899cd8522adc8b21159ac Binary files /dev/null and b/concepts/313_14.png differ diff --git a/concepts/313_16.png b/concepts/313_16.png new file mode 100644 index 0000000000000000000000000000000000000000..7cfb8ef2c8c06275ef9583ae68e6c6ff4717b8ab Binary files /dev/null and b/concepts/313_16.png differ diff --git a/concepts/313_19.png b/concepts/313_19.png new file mode 100644 index 0000000000000000000000000000000000000000..4ba955151ff552989166c12ea457443e740f79c9 Binary files /dev/null and b/concepts/313_19.png differ diff --git a/concepts/313_23.png b/concepts/313_23.png new file mode 100644 index 0000000000000000000000000000000000000000..74f16527535846ec9987a6a32a3edefa279ba7ae Binary files /dev/null and b/concepts/313_23.png differ diff --git a/concepts/313_5.png b/concepts/313_5.png new file mode 100644 index 0000000000000000000000000000000000000000..6ad78879847049e3a1d25233a431ed5487fbef4e Binary files /dev/null and b/concepts/313_5.png differ diff --git a/concepts/313_6.png b/concepts/313_6.png new file mode 100644 index 0000000000000000000000000000000000000000..b2e6d8c7eb59514d400e6197c1000545033882d9 Binary files /dev/null and b/concepts/313_6.png differ diff --git a/concepts/313_7.png b/concepts/313_7.png new file mode 100644 index 0000000000000000000000000000000000000000..8f88893d0a966bc3f407d6aa6e549d149048dbac Binary files /dev/null and b/concepts/313_7.png differ diff --git a/concepts/314_0.png b/concepts/314_0.png new file mode 100644 index 0000000000000000000000000000000000000000..62e812a7a8243afcd183242b7316e0d595c61e3f Binary files /dev/null and b/concepts/314_0.png differ diff --git a/concepts/314_10.png b/concepts/314_10.png new file mode 100644 index 0000000000000000000000000000000000000000..34d0b3bb3db6074ee34b0ce7cf6c0c0f32705322 Binary files /dev/null and b/concepts/314_10.png differ diff --git a/concepts/314_15.png b/concepts/314_15.png new file mode 100644 index 0000000000000000000000000000000000000000..5618856b6722676b60fb69fa6543fd1dc8649861 Binary files /dev/null and b/concepts/314_15.png differ diff --git a/concepts/314_18.png b/concepts/314_18.png new file mode 100644 index 0000000000000000000000000000000000000000..8fb83b7f87011f9790372b42280e97c04fc16ec2 Binary files /dev/null and b/concepts/314_18.png differ diff --git a/concepts/314_2.png b/concepts/314_2.png new file mode 100644 index 0000000000000000000000000000000000000000..60e82db6710d278f4aac07dc224bf3fc479ca254 Binary files /dev/null and b/concepts/314_2.png differ diff --git a/concepts/314_6.png b/concepts/314_6.png new file mode 100644 index 0000000000000000000000000000000000000000..92ae0124e61e7c266a668c2b30bb8904e0f44e88 Binary files /dev/null and b/concepts/314_6.png differ diff --git a/concepts/314_8.png b/concepts/314_8.png new file mode 100644 index 0000000000000000000000000000000000000000..1e1fa79175337cff51926042ecdaaa9ab7827c5c Binary files /dev/null and b/concepts/314_8.png differ diff --git a/concepts/314_9.png b/concepts/314_9.png new file mode 100644 index 0000000000000000000000000000000000000000..5d070c3a6514a73b49b083019818a12e3dfb16aa Binary files /dev/null and b/concepts/314_9.png differ diff --git a/concepts/315_0.png b/concepts/315_0.png new file mode 100644 index 0000000000000000000000000000000000000000..7f9b31a4831211f6501bac81057301e43b2dcdec Binary files /dev/null and b/concepts/315_0.png differ diff --git a/concepts/315_1.png b/concepts/315_1.png new file mode 100644 index 0000000000000000000000000000000000000000..54250d6aac5f800806ad9a23c448d021a834376c Binary files /dev/null and b/concepts/315_1.png differ diff --git a/concepts/315_2.png b/concepts/315_2.png new file mode 100644 index 0000000000000000000000000000000000000000..59465cf2afc29c2b5653588796d8b3440d2e8e00 Binary files /dev/null and b/concepts/315_2.png differ diff --git a/concepts/315_3.png b/concepts/315_3.png new file mode 100644 index 0000000000000000000000000000000000000000..e7ed2aa7ff5fe35cef0d7d88a21d3c28a88a4b0d Binary files /dev/null and b/concepts/315_3.png differ diff --git a/concepts/315_4.png b/concepts/315_4.png new file mode 100644 index 0000000000000000000000000000000000000000..725c7d14e9b58d5a2f39efc7b33848f5f172490c Binary files /dev/null and b/concepts/315_4.png differ diff --git a/concepts/315_6.png b/concepts/315_6.png new file mode 100644 index 0000000000000000000000000000000000000000..c0c6c3cfd781461f77eee68e91cc9ce4430c528a Binary files /dev/null and b/concepts/315_6.png differ diff --git a/concepts/315_8.png b/concepts/315_8.png new file mode 100644 index 0000000000000000000000000000000000000000..ddefce16375c10064a0a2a07f001bae864dca6ec Binary files /dev/null and b/concepts/315_8.png differ diff --git a/concepts/315_9.png b/concepts/315_9.png new file mode 100644 index 0000000000000000000000000000000000000000..950035309b295c1c5e2951da7934680918ba99eb Binary files /dev/null and b/concepts/315_9.png differ diff --git a/concepts/316_0.png b/concepts/316_0.png new file mode 100644 index 0000000000000000000000000000000000000000..29622800251a2abe58d0884b82d7b555138610c6 Binary files /dev/null and b/concepts/316_0.png differ diff --git a/concepts/316_1.png b/concepts/316_1.png new file mode 100644 index 0000000000000000000000000000000000000000..0c1044111cd5a30cf16a4e765bf64124bdfbdf8e Binary files /dev/null and b/concepts/316_1.png differ diff --git a/concepts/316_3.png b/concepts/316_3.png new file mode 100644 index 0000000000000000000000000000000000000000..9f7819a1a3ab92a23b719f91454d63151bcb7932 Binary files /dev/null and b/concepts/316_3.png differ diff --git a/concepts/316_4.png b/concepts/316_4.png new file mode 100644 index 0000000000000000000000000000000000000000..3e6381527ad53ee8ad23b0d8e9d6af4fdc4f54b3 Binary files /dev/null and b/concepts/316_4.png differ diff --git a/concepts/316_5.png b/concepts/316_5.png new file mode 100644 index 0000000000000000000000000000000000000000..3da5e3c37f2bc0718ae7a05f03fcacfcd72555b6 Binary files /dev/null and b/concepts/316_5.png differ diff --git a/concepts/316_7.png b/concepts/316_7.png new file mode 100644 index 0000000000000000000000000000000000000000..8f8fdf0c400994c6c994958c9dc6e3d37fcebb32 Binary files /dev/null and b/concepts/316_7.png differ diff --git a/concepts/316_8.png b/concepts/316_8.png new file mode 100644 index 0000000000000000000000000000000000000000..d4896a4b4b9ebcdd326d8b2bc2de1d6be0847aae Binary files /dev/null and b/concepts/316_8.png differ diff --git a/concepts/316_9.png b/concepts/316_9.png new file mode 100644 index 0000000000000000000000000000000000000000..6d1c8e7432a2dfc765aff410a0cfef44c728ac8f Binary files /dev/null and b/concepts/316_9.png differ diff --git a/concepts/317_0.png b/concepts/317_0.png new file mode 100644 index 0000000000000000000000000000000000000000..719a89cf7e5c434639211e37903e81af0a4b5085 Binary files /dev/null and b/concepts/317_0.png differ diff --git a/concepts/317_2.png b/concepts/317_2.png new file mode 100644 index 0000000000000000000000000000000000000000..b13dbcf7464b9fabaa9ce08d0e7ae2ed1e79c6ad Binary files /dev/null and b/concepts/317_2.png differ diff --git a/concepts/317_3.png b/concepts/317_3.png new file mode 100644 index 0000000000000000000000000000000000000000..285d5d0a6803e6d486e1db6308b9ed1ca9083275 Binary files /dev/null and b/concepts/317_3.png differ diff --git a/concepts/317_4.png b/concepts/317_4.png new file mode 100644 index 0000000000000000000000000000000000000000..e787c2293156f3bf84f59d32b978b51e2f6954d6 Binary files /dev/null and b/concepts/317_4.png differ diff --git a/concepts/317_6.png b/concepts/317_6.png new file mode 100644 index 0000000000000000000000000000000000000000..87c5381b5b54febd8608ac3561474963d854c082 Binary files /dev/null and b/concepts/317_6.png differ diff --git a/concepts/317_7.png b/concepts/317_7.png new file mode 100644 index 0000000000000000000000000000000000000000..f570c9c01dffcb1459b36ce0c223be6246995054 Binary files /dev/null and b/concepts/317_7.png differ diff --git a/concepts/317_8.png b/concepts/317_8.png new file mode 100644 index 0000000000000000000000000000000000000000..4262b68e1ead228f8d23ef420245aa650e706ccd Binary files /dev/null and b/concepts/317_8.png differ diff --git a/concepts/317_9.png b/concepts/317_9.png new file mode 100644 index 0000000000000000000000000000000000000000..1dca7ec52df6d30b9c4f38dfbe3005d99987e055 Binary files /dev/null and b/concepts/317_9.png differ diff --git a/concepts/318_0.png b/concepts/318_0.png new file mode 100644 index 0000000000000000000000000000000000000000..608fffd4c3639e13fd754eeaed8389f85f0829bf Binary files /dev/null and b/concepts/318_0.png differ diff --git a/concepts/318_1.png b/concepts/318_1.png new file mode 100644 index 0000000000000000000000000000000000000000..d32c76904b8fe5532b2eb01744fbdaf0b5f06856 Binary files /dev/null and b/concepts/318_1.png differ diff --git a/concepts/318_2.png b/concepts/318_2.png new file mode 100644 index 0000000000000000000000000000000000000000..38112e480c659c3775ea6ede64330a958218cb3c Binary files /dev/null and b/concepts/318_2.png differ diff --git a/concepts/318_4.png b/concepts/318_4.png new file mode 100644 index 0000000000000000000000000000000000000000..b394035c8359c1e0d3a7fc008470bd39f6fee30a Binary files /dev/null and b/concepts/318_4.png differ diff --git a/concepts/318_5.png b/concepts/318_5.png new file mode 100644 index 0000000000000000000000000000000000000000..a0ec7b7e85e231dedf83b5a9bdd056d07c9cec24 Binary files /dev/null and b/concepts/318_5.png differ diff --git a/concepts/318_6.png b/concepts/318_6.png new file mode 100644 index 0000000000000000000000000000000000000000..e096479886805896fb9d61bf2b1cd64daf0ddbe8 Binary files /dev/null and b/concepts/318_6.png differ diff --git a/concepts/318_8.png b/concepts/318_8.png new file mode 100644 index 0000000000000000000000000000000000000000..41426193f6c594192a6b9b3850e21b3d6d77a25c Binary files /dev/null and b/concepts/318_8.png differ diff --git a/concepts/318_9.png b/concepts/318_9.png new file mode 100644 index 0000000000000000000000000000000000000000..fdb40d413c81e8e670a95443c714f0c55105898c Binary files /dev/null and b/concepts/318_9.png differ diff --git a/concepts/319_0.png b/concepts/319_0.png new file mode 100644 index 0000000000000000000000000000000000000000..51ae0de98a8bbb4b89718c906367c64fdbe936c1 Binary files /dev/null and b/concepts/319_0.png differ diff --git a/concepts/319_1.png b/concepts/319_1.png new file mode 100644 index 0000000000000000000000000000000000000000..2b1535b55aa3581db2ac87a1343d238fda1ac8c2 Binary files /dev/null and b/concepts/319_1.png differ diff --git a/concepts/319_2.png b/concepts/319_2.png new file mode 100644 index 0000000000000000000000000000000000000000..567df7884d3e95c052a04ad3270f2a1a42e15698 Binary files /dev/null and b/concepts/319_2.png differ diff --git a/concepts/319_3.png b/concepts/319_3.png new file mode 100644 index 0000000000000000000000000000000000000000..3527fb904a9e5b3b0fb078fe6d66c99fc2b47e45 Binary files /dev/null and b/concepts/319_3.png differ diff --git a/concepts/319_4.png b/concepts/319_4.png new file mode 100644 index 0000000000000000000000000000000000000000..d1a3eb2ef3cf80a87bb4d7cee92135a305cfbab5 Binary files /dev/null and b/concepts/319_4.png differ diff --git a/concepts/319_6.png b/concepts/319_6.png new file mode 100644 index 0000000000000000000000000000000000000000..0914729a268db1284414290d3fb7759bf69c7b3f Binary files /dev/null and b/concepts/319_6.png differ diff --git a/concepts/319_7.png b/concepts/319_7.png new file mode 100644 index 0000000000000000000000000000000000000000..82eb943b5a6e7ac47356aaf74fdd2234ed32049b Binary files /dev/null and b/concepts/319_7.png differ diff --git a/concepts/319_8.png b/concepts/319_8.png new file mode 100644 index 0000000000000000000000000000000000000000..70a96a26071295ca0daf82bb2c4c83d334d34634 Binary files /dev/null and b/concepts/319_8.png differ diff --git a/concepts/31_0.png b/concepts/31_0.png new file mode 100644 index 0000000000000000000000000000000000000000..ab05ea5a61d743eb5a39a65b12d2d183cc312fd3 Binary files /dev/null and b/concepts/31_0.png differ diff --git a/concepts/31_1.png b/concepts/31_1.png new file mode 100644 index 0000000000000000000000000000000000000000..9f119414e2b3c5ab500460c6ddec9ed1b13ad255 Binary files /dev/null and b/concepts/31_1.png differ diff --git a/concepts/31_2.png b/concepts/31_2.png new file mode 100644 index 0000000000000000000000000000000000000000..b65508a637f0e9b0ce9ec7bd566e216e401deea3 Binary files /dev/null and b/concepts/31_2.png differ diff --git a/concepts/31_3.png b/concepts/31_3.png new file mode 100644 index 0000000000000000000000000000000000000000..2579e969aa5f2e272cf78459e3a0ab782eb50bc6 Binary files /dev/null and b/concepts/31_3.png differ diff --git a/concepts/31_5.png b/concepts/31_5.png new file mode 100644 index 0000000000000000000000000000000000000000..45442d24b45e44e8f372c6fec717284409e9b0aa Binary files /dev/null and b/concepts/31_5.png differ diff --git a/concepts/31_6.png b/concepts/31_6.png new file mode 100644 index 0000000000000000000000000000000000000000..c5662b2e72f8d7a2b0607c6a84f74cb048578c23 Binary files /dev/null and b/concepts/31_6.png differ diff --git a/concepts/31_7.png b/concepts/31_7.png new file mode 100644 index 0000000000000000000000000000000000000000..083da8af87adeff78d250bc43c7973b50de48a2b Binary files /dev/null and b/concepts/31_7.png differ diff --git a/concepts/31_9.png b/concepts/31_9.png new file mode 100644 index 0000000000000000000000000000000000000000..d6f6e022039b5dcdfd90e0295fbc923f2eff6c73 Binary files /dev/null and b/concepts/31_9.png differ diff --git a/concepts/320_0.png b/concepts/320_0.png new file mode 100644 index 0000000000000000000000000000000000000000..5bc1d9c09fba8407d5df919bfdcbaed441045c91 Binary files /dev/null and b/concepts/320_0.png differ diff --git a/concepts/320_1.png b/concepts/320_1.png new file mode 100644 index 0000000000000000000000000000000000000000..505bd716ca88141a36d7db43e81b3ccc687d213f Binary files /dev/null and b/concepts/320_1.png differ diff --git a/concepts/320_2.png b/concepts/320_2.png new file mode 100644 index 0000000000000000000000000000000000000000..073978fadb6197eae9a89d0b742e33e0703092b1 Binary files /dev/null and b/concepts/320_2.png differ diff --git a/concepts/320_3.png b/concepts/320_3.png new file mode 100644 index 0000000000000000000000000000000000000000..2801ca071dc3d433774070b2ab4f63b75f153b8f Binary files /dev/null and b/concepts/320_3.png differ diff --git a/concepts/320_4.png b/concepts/320_4.png new file mode 100644 index 0000000000000000000000000000000000000000..495a8f420fbe7da3a31dce65253a8735d5f852ea Binary files /dev/null and b/concepts/320_4.png differ diff --git a/concepts/320_6.png b/concepts/320_6.png new file mode 100644 index 0000000000000000000000000000000000000000..e0cf29eb538809e1d06c97054871873765c06267 Binary files /dev/null and b/concepts/320_6.png differ diff --git a/concepts/320_7.png b/concepts/320_7.png new file mode 100644 index 0000000000000000000000000000000000000000..2d9b6280de7ccd489507360324df212edd67de7e Binary files /dev/null and b/concepts/320_7.png differ diff --git a/concepts/320_9.png b/concepts/320_9.png new file mode 100644 index 0000000000000000000000000000000000000000..ca23ccb034081081cd9d3ebee64e58f942519aa4 Binary files /dev/null and b/concepts/320_9.png differ diff --git a/concepts/321_0.png b/concepts/321_0.png new file mode 100644 index 0000000000000000000000000000000000000000..f651b8552fa419b2a36b12267f0e463fec985643 Binary files /dev/null and b/concepts/321_0.png differ diff --git a/concepts/321_10.png b/concepts/321_10.png new file mode 100644 index 0000000000000000000000000000000000000000..1c704fde2617ccee012babb4befb27d34a1d50fb Binary files /dev/null and b/concepts/321_10.png differ diff --git a/concepts/321_12.png b/concepts/321_12.png new file mode 100644 index 0000000000000000000000000000000000000000..6b927fac758dbacc0149d3737bc1b02e5da168ee Binary files /dev/null and b/concepts/321_12.png differ diff --git a/concepts/321_13.png b/concepts/321_13.png new file mode 100644 index 0000000000000000000000000000000000000000..002a888046015e6307ebf18f88d07cf75105cf73 Binary files /dev/null and b/concepts/321_13.png differ diff --git a/concepts/321_17.png b/concepts/321_17.png new file mode 100644 index 0000000000000000000000000000000000000000..9d25d55685f421c007a349786d4447e818354498 Binary files /dev/null and b/concepts/321_17.png differ diff --git a/concepts/321_5.png b/concepts/321_5.png new file mode 100644 index 0000000000000000000000000000000000000000..925b4a181fe6439ce3df76ee8fc90d4ca5ae0be3 Binary files /dev/null and b/concepts/321_5.png differ diff --git a/concepts/321_7.png b/concepts/321_7.png new file mode 100644 index 0000000000000000000000000000000000000000..729911a83b2edc78bab3142bad3c0b5cd345ea35 Binary files /dev/null and b/concepts/321_7.png differ diff --git a/concepts/321_9.png b/concepts/321_9.png new file mode 100644 index 0000000000000000000000000000000000000000..7bab851f202dcefee65247a887e628220bf96e95 Binary files /dev/null and b/concepts/321_9.png differ diff --git a/concepts/322_0.png b/concepts/322_0.png new file mode 100644 index 0000000000000000000000000000000000000000..585dc41b50c7990b3767403c0ce2436597e3113e Binary files /dev/null and b/concepts/322_0.png differ diff --git a/concepts/322_1.png b/concepts/322_1.png new file mode 100644 index 0000000000000000000000000000000000000000..7d5b4a5d6971f03307bce91bbe40dc4a04aea454 Binary files /dev/null and b/concepts/322_1.png differ diff --git a/concepts/322_11.png b/concepts/322_11.png new file mode 100644 index 0000000000000000000000000000000000000000..737ce9be06a43a3f2cfb901208f05c2d947ba100 Binary files /dev/null and b/concepts/322_11.png differ diff --git a/concepts/322_15.png b/concepts/322_15.png new file mode 100644 index 0000000000000000000000000000000000000000..f61f53596dcf7d69b66c3015afaafa5adaa822f5 Binary files /dev/null and b/concepts/322_15.png differ diff --git a/concepts/322_16.png b/concepts/322_16.png new file mode 100644 index 0000000000000000000000000000000000000000..d6ce535d35821cd3ee534b4efab5edd609c0ea81 Binary files /dev/null and b/concepts/322_16.png differ diff --git a/concepts/322_17.png b/concepts/322_17.png new file mode 100644 index 0000000000000000000000000000000000000000..c1defcdda3fefdd1ba4a94ad7c080c724674f848 Binary files /dev/null and b/concepts/322_17.png differ diff --git a/concepts/322_3.png b/concepts/322_3.png new file mode 100644 index 0000000000000000000000000000000000000000..a1c9b0280ef3eed5305d2668916cf0111c8e9d89 Binary files /dev/null and b/concepts/322_3.png differ diff --git a/concepts/322_6.png b/concepts/322_6.png new file mode 100644 index 0000000000000000000000000000000000000000..21bce979533dbc2188f1bc733e49e627a5229e7c Binary files /dev/null and b/concepts/322_6.png differ diff --git a/concepts/323_0.png b/concepts/323_0.png new file mode 100644 index 0000000000000000000000000000000000000000..c87a6c09f6b4fddf28ce5eb45c7dcdb5efc09f64 Binary files /dev/null and b/concepts/323_0.png differ diff --git a/concepts/323_1.png b/concepts/323_1.png new file mode 100644 index 0000000000000000000000000000000000000000..2266c9223e990e098560dd29fee06d543c884be7 Binary files /dev/null and b/concepts/323_1.png differ diff --git a/concepts/323_13.png b/concepts/323_13.png new file mode 100644 index 0000000000000000000000000000000000000000..89e6f1c49be18cbf17acc1179ecce52c4cb7e2c4 Binary files /dev/null and b/concepts/323_13.png differ diff --git a/concepts/323_18.png b/concepts/323_18.png new file mode 100644 index 0000000000000000000000000000000000000000..752f5ea1cb1356d414097b7e960dc4c667af9079 Binary files /dev/null and b/concepts/323_18.png differ diff --git a/concepts/323_6.png b/concepts/323_6.png new file mode 100644 index 0000000000000000000000000000000000000000..8f653b6100409a731a3177556b21dd0dc2d9a2de Binary files /dev/null and b/concepts/323_6.png differ diff --git a/concepts/323_7.png b/concepts/323_7.png new file mode 100644 index 0000000000000000000000000000000000000000..1650bf475558a57a25ac4d39b0b5ec1dfaceb4e5 Binary files /dev/null and b/concepts/323_7.png differ diff --git a/concepts/324_11.png b/concepts/324_11.png new file mode 100644 index 0000000000000000000000000000000000000000..7944dd21e7562ae625cde2f7eb0b9cd16b403e42 Binary files /dev/null and b/concepts/324_11.png differ diff --git a/concepts/324_15.png b/concepts/324_15.png new file mode 100644 index 0000000000000000000000000000000000000000..9af9f9195783a11e3ee023aa3c65efabb4413222 Binary files /dev/null and b/concepts/324_15.png differ diff --git a/concepts/324_2.png b/concepts/324_2.png new file mode 100644 index 0000000000000000000000000000000000000000..2fc19ee2b0bda53da37b4e332117df7d30e82232 Binary files /dev/null and b/concepts/324_2.png differ diff --git a/concepts/324_3.png b/concepts/324_3.png new file mode 100644 index 0000000000000000000000000000000000000000..1ab97f42c814c624260981f9824b2e019f19b808 Binary files /dev/null and b/concepts/324_3.png differ diff --git a/concepts/324_4.png b/concepts/324_4.png new file mode 100644 index 0000000000000000000000000000000000000000..c0e5995e050f6cfdf1a875726f44d4eb4a1a73f4 Binary files /dev/null and b/concepts/324_4.png differ diff --git a/concepts/324_5.png b/concepts/324_5.png new file mode 100644 index 0000000000000000000000000000000000000000..e3b307734effd9135bfe0a042d5c1f19b6ac8648 Binary files /dev/null and b/concepts/324_5.png differ diff --git a/concepts/324_6.png b/concepts/324_6.png new file mode 100644 index 0000000000000000000000000000000000000000..5dba524da1db383e931e9127249099f8b0545ac8 Binary files /dev/null and b/concepts/324_6.png differ diff --git a/concepts/324_9.png b/concepts/324_9.png new file mode 100644 index 0000000000000000000000000000000000000000..7793c442d318e3d922dab01e4a0b84d367e4768d Binary files /dev/null and b/concepts/324_9.png differ diff --git a/concepts/325_1.png b/concepts/325_1.png new file mode 100644 index 0000000000000000000000000000000000000000..1f833e7d125e31bd63e0fec0ae358d48eb2cac61 Binary files /dev/null and b/concepts/325_1.png differ diff --git a/concepts/325_10.png b/concepts/325_10.png new file mode 100644 index 0000000000000000000000000000000000000000..bf84f1137a59f7569387801f595330346f67ffb4 Binary files /dev/null and b/concepts/325_10.png differ diff --git a/concepts/325_11.png b/concepts/325_11.png new file mode 100644 index 0000000000000000000000000000000000000000..573eee01c32e4c65d74e4e912f9165a4c3d2d9ae Binary files /dev/null and b/concepts/325_11.png differ diff --git a/concepts/325_2.png b/concepts/325_2.png new file mode 100644 index 0000000000000000000000000000000000000000..372851c64b14cc4ac3ace5dddd492960f57cd678 Binary files /dev/null and b/concepts/325_2.png differ diff --git a/concepts/325_4.png b/concepts/325_4.png new file mode 100644 index 0000000000000000000000000000000000000000..31d90011e714f7c07159fc910a0bedaf70ff1a06 Binary files /dev/null and b/concepts/325_4.png differ diff --git a/concepts/325_6.png b/concepts/325_6.png new file mode 100644 index 0000000000000000000000000000000000000000..51b99aaf4c689170ab6d253ef0a6d515d6880586 Binary files /dev/null and b/concepts/325_6.png differ diff --git a/concepts/325_7.png b/concepts/325_7.png new file mode 100644 index 0000000000000000000000000000000000000000..e3b0e5b0ba1ce5084909e9c0a40b7ad4502ff350 Binary files /dev/null and b/concepts/325_7.png differ diff --git a/concepts/325_8.png b/concepts/325_8.png new file mode 100644 index 0000000000000000000000000000000000000000..d1b1d2a243bb48c2560ab49859a1ac432d049027 Binary files /dev/null and b/concepts/325_8.png differ diff --git a/concepts/326_0.png b/concepts/326_0.png new file mode 100644 index 0000000000000000000000000000000000000000..c7534ced7cbd77d28748caa01b9a2e647a48a406 Binary files /dev/null and b/concepts/326_0.png differ diff --git a/concepts/326_11.png b/concepts/326_11.png new file mode 100644 index 0000000000000000000000000000000000000000..1241a512f16ee3f19745a6e7b0ddd4eff0c8f63f Binary files /dev/null and b/concepts/326_11.png differ diff --git a/concepts/326_12.png b/concepts/326_12.png new file mode 100644 index 0000000000000000000000000000000000000000..d203a6110d04cb582021ccf72b90ff498ce763ab Binary files /dev/null and b/concepts/326_12.png differ diff --git a/concepts/326_2.png b/concepts/326_2.png new file mode 100644 index 0000000000000000000000000000000000000000..7ef9340736edfc68e1efc395f9c0283dc314df6a Binary files /dev/null and b/concepts/326_2.png differ diff --git a/concepts/326_3.png b/concepts/326_3.png new file mode 100644 index 0000000000000000000000000000000000000000..f11e503ca1f6900280d55e8abc7c1412d8c6be7a Binary files /dev/null and b/concepts/326_3.png differ diff --git a/concepts/326_5.png b/concepts/326_5.png new file mode 100644 index 0000000000000000000000000000000000000000..6b478b858cb1603e4853b53b129390e5cd4e1917 Binary files /dev/null and b/concepts/326_5.png differ diff --git a/concepts/326_6.png b/concepts/326_6.png new file mode 100644 index 0000000000000000000000000000000000000000..31d2959e8fe5fd3bf3da0a5e26c662ba599882a5 Binary files /dev/null and b/concepts/326_6.png differ diff --git a/concepts/326_7.png b/concepts/326_7.png new file mode 100644 index 0000000000000000000000000000000000000000..d7ec4b817901b914786361b68e74642ff3ed62c8 Binary files /dev/null and b/concepts/326_7.png differ diff --git a/concepts/327_0.png b/concepts/327_0.png new file mode 100644 index 0000000000000000000000000000000000000000..4348c35683624bf7557c55d01b8c17876571b1c0 Binary files /dev/null and b/concepts/327_0.png differ diff --git a/concepts/327_1.png b/concepts/327_1.png new file mode 100644 index 0000000000000000000000000000000000000000..484dee5ace68065b0c1e137253b6d6986c06a9f9 Binary files /dev/null and b/concepts/327_1.png differ diff --git a/concepts/327_10.png b/concepts/327_10.png new file mode 100644 index 0000000000000000000000000000000000000000..11bea4e73494178606c8866ab253cf03523c6392 Binary files /dev/null and b/concepts/327_10.png differ diff --git a/concepts/327_14.png b/concepts/327_14.png new file mode 100644 index 0000000000000000000000000000000000000000..fee72fa5e99b2fe5ca8bcda8d9b4ea29b7738cd1 Binary files /dev/null and b/concepts/327_14.png differ diff --git a/concepts/327_2.png b/concepts/327_2.png new file mode 100644 index 0000000000000000000000000000000000000000..b1c4a57118745f97b68b9299134eba0d8de43d3f Binary files /dev/null and b/concepts/327_2.png differ diff --git a/concepts/327_3.png b/concepts/327_3.png new file mode 100644 index 0000000000000000000000000000000000000000..cf4039048a01ec1ccf03fbef1cd065de506e596a Binary files /dev/null and b/concepts/327_3.png differ diff --git a/concepts/327_4.png b/concepts/327_4.png new file mode 100644 index 0000000000000000000000000000000000000000..afb8c73976214d4b8fd54ed53bddb2a9ecb3aba3 Binary files /dev/null and b/concepts/327_4.png differ diff --git a/concepts/327_6.png b/concepts/327_6.png new file mode 100644 index 0000000000000000000000000000000000000000..52c773a0a647b05c12532a5a7a1c3c6161deda98 Binary files /dev/null and b/concepts/327_6.png differ diff --git a/concepts/328_0.png b/concepts/328_0.png new file mode 100644 index 0000000000000000000000000000000000000000..65c16f595417b15639107f7e4919922511d55dd0 Binary files /dev/null and b/concepts/328_0.png differ diff --git a/concepts/328_1.png b/concepts/328_1.png new file mode 100644 index 0000000000000000000000000000000000000000..aeebce856f3163575da47f52bee81e1b46c43bed Binary files /dev/null and b/concepts/328_1.png differ diff --git a/concepts/328_2.png b/concepts/328_2.png new file mode 100644 index 0000000000000000000000000000000000000000..cd9da7851dfa8654e452bc5cff3317fc29392f9f Binary files /dev/null and b/concepts/328_2.png differ diff --git a/concepts/328_3.png b/concepts/328_3.png new file mode 100644 index 0000000000000000000000000000000000000000..b5e183f2d4e00e714b449d8d6e04135bf91e6cfb Binary files /dev/null and b/concepts/328_3.png differ diff --git a/concepts/328_4.png b/concepts/328_4.png new file mode 100644 index 0000000000000000000000000000000000000000..3bc3bfd5369f4aa252c5e87d34c90672591f27aa Binary files /dev/null and b/concepts/328_4.png differ diff --git a/concepts/328_5.png b/concepts/328_5.png new file mode 100644 index 0000000000000000000000000000000000000000..f0679d24ed8dc814caa5d808ec2f31b84853c372 Binary files /dev/null and b/concepts/328_5.png differ diff --git a/concepts/328_6.png b/concepts/328_6.png new file mode 100644 index 0000000000000000000000000000000000000000..8dd951f02e182242ea3a4acbf534b5f0886d0302 Binary files /dev/null and b/concepts/328_6.png differ diff --git a/concepts/328_7.png b/concepts/328_7.png new file mode 100644 index 0000000000000000000000000000000000000000..459f32fc836e5e4314c8b9085e8e9f548134d4a0 Binary files /dev/null and b/concepts/328_7.png differ diff --git a/concepts/329_0.png b/concepts/329_0.png new file mode 100644 index 0000000000000000000000000000000000000000..04f539d1c273a3da434f19de985e800a78511ef2 Binary files /dev/null and b/concepts/329_0.png differ diff --git a/concepts/329_1.png b/concepts/329_1.png new file mode 100644 index 0000000000000000000000000000000000000000..e95b3f67f959cf828c6f5097b5a3685303fc8db2 Binary files /dev/null and b/concepts/329_1.png differ diff --git a/concepts/329_2.png b/concepts/329_2.png new file mode 100644 index 0000000000000000000000000000000000000000..230e5dd87d4141be1d57fe5e0eae4e736f408fd3 Binary files /dev/null and b/concepts/329_2.png differ diff --git a/concepts/329_3.png b/concepts/329_3.png new file mode 100644 index 0000000000000000000000000000000000000000..4c032751dcbba912f895acd6589d20d5775ee66a Binary files /dev/null and b/concepts/329_3.png differ diff --git a/concepts/329_5.png b/concepts/329_5.png new file mode 100644 index 0000000000000000000000000000000000000000..327a3a028b5f51962cbfee024b89bfc914b11ad3 Binary files /dev/null and b/concepts/329_5.png differ diff --git a/concepts/329_6.png b/concepts/329_6.png new file mode 100644 index 0000000000000000000000000000000000000000..617752df998262517d6590f01e42265a0981c640 Binary files /dev/null and b/concepts/329_6.png differ diff --git a/concepts/329_7.png b/concepts/329_7.png new file mode 100644 index 0000000000000000000000000000000000000000..5e358a83f4fae1879e1b152606596fcef7999617 Binary files /dev/null and b/concepts/329_7.png differ diff --git a/concepts/329_8.png b/concepts/329_8.png new file mode 100644 index 0000000000000000000000000000000000000000..b8fa26a79214f0665c2163495906766287299505 Binary files /dev/null and b/concepts/329_8.png differ diff --git a/concepts/32_0.png b/concepts/32_0.png new file mode 100644 index 0000000000000000000000000000000000000000..88b9ecfad65424f1ff9db9e40e925ff7e1e512ec Binary files /dev/null and b/concepts/32_0.png differ diff --git a/concepts/32_1.png b/concepts/32_1.png new file mode 100644 index 0000000000000000000000000000000000000000..600305def43a870c208993b52a1a966957d925e7 Binary files /dev/null and b/concepts/32_1.png differ diff --git a/concepts/32_10.png b/concepts/32_10.png new file mode 100644 index 0000000000000000000000000000000000000000..95d42cc89f0f9bb6202d05fd6ce3b6bd9be32ace Binary files /dev/null and b/concepts/32_10.png differ diff --git a/concepts/32_3.png b/concepts/32_3.png new file mode 100644 index 0000000000000000000000000000000000000000..8fadbf222b01749eccb903ad2dc97ede712b069a Binary files /dev/null and b/concepts/32_3.png differ diff --git a/concepts/32_4.png b/concepts/32_4.png new file mode 100644 index 0000000000000000000000000000000000000000..c5130c5e01779690500cc1500af3611d7ae5986f Binary files /dev/null and b/concepts/32_4.png differ diff --git a/concepts/32_5.png b/concepts/32_5.png new file mode 100644 index 0000000000000000000000000000000000000000..83e4b4ee36cad38be36878c5bea53443d83c8e90 Binary files /dev/null and b/concepts/32_5.png differ diff --git a/concepts/32_6.png b/concepts/32_6.png new file mode 100644 index 0000000000000000000000000000000000000000..ff05193c66dbb2f1885c6d46614c3be6cc94569d Binary files /dev/null and b/concepts/32_6.png differ diff --git a/concepts/32_7.png b/concepts/32_7.png new file mode 100644 index 0000000000000000000000000000000000000000..a6cd6c7111a0d220940ff7b8eb63ad6f6c214b57 Binary files /dev/null and b/concepts/32_7.png differ diff --git a/concepts/330_0.png b/concepts/330_0.png new file mode 100644 index 0000000000000000000000000000000000000000..e1ea9c5454b529d08ae99f39cf9cc95fffa71113 Binary files /dev/null and b/concepts/330_0.png differ diff --git a/concepts/330_1.png b/concepts/330_1.png new file mode 100644 index 0000000000000000000000000000000000000000..28b9e363ccfe2445106d11c1b7adbf6b0a7c427e Binary files /dev/null and b/concepts/330_1.png differ diff --git a/concepts/330_10.png b/concepts/330_10.png new file mode 100644 index 0000000000000000000000000000000000000000..39b8d6401088e0cfef0392e084e0a0d7882facce Binary files /dev/null and b/concepts/330_10.png differ diff --git a/concepts/330_3.png b/concepts/330_3.png new file mode 100644 index 0000000000000000000000000000000000000000..a5f3ebf1e8a50d1dbb6aa9420ec223d454c2fe4f Binary files /dev/null and b/concepts/330_3.png differ diff --git a/concepts/330_4.png b/concepts/330_4.png new file mode 100644 index 0000000000000000000000000000000000000000..384b98f84dba26fd007398c29dec1614ca463a47 Binary files /dev/null and b/concepts/330_4.png differ diff --git a/concepts/330_5.png b/concepts/330_5.png new file mode 100644 index 0000000000000000000000000000000000000000..02f45af81f37f4f9db613dea0fa3b70521e944be Binary files /dev/null and b/concepts/330_5.png differ diff --git a/concepts/330_6.png b/concepts/330_6.png new file mode 100644 index 0000000000000000000000000000000000000000..9067d30679cb61486d377008382f1d53befd2840 Binary files /dev/null and b/concepts/330_6.png differ diff --git a/concepts/330_9.png b/concepts/330_9.png new file mode 100644 index 0000000000000000000000000000000000000000..a28fe7fddeb1ec7415b87de5525f7517beda763c Binary files /dev/null and b/concepts/330_9.png differ diff --git a/concepts/331_0.png b/concepts/331_0.png new file mode 100644 index 0000000000000000000000000000000000000000..ae1e65b3bed6cf01a444a25083f3d33d472f6a82 Binary files /dev/null and b/concepts/331_0.png differ diff --git a/concepts/331_1.png b/concepts/331_1.png new file mode 100644 index 0000000000000000000000000000000000000000..1a92fe98e98d5c354c05130fd73440be9eca9975 Binary files /dev/null and b/concepts/331_1.png differ diff --git a/concepts/331_10.png b/concepts/331_10.png new file mode 100644 index 0000000000000000000000000000000000000000..73a54efab4e179ea73118f2fd09de939ad9cd235 Binary files /dev/null and b/concepts/331_10.png differ diff --git a/concepts/331_13.png b/concepts/331_13.png new file mode 100644 index 0000000000000000000000000000000000000000..f61b007f39017887b1e2443ef627f1c973b7ad83 Binary files /dev/null and b/concepts/331_13.png differ diff --git a/concepts/331_4.png b/concepts/331_4.png new file mode 100644 index 0000000000000000000000000000000000000000..9ed2f03388d43ca769129f9f5d59892881505a01 Binary files /dev/null and b/concepts/331_4.png differ diff --git a/concepts/331_5.png b/concepts/331_5.png new file mode 100644 index 0000000000000000000000000000000000000000..6123785e1c5eaf621c512a60835446b6507cf482 Binary files /dev/null and b/concepts/331_5.png differ diff --git a/concepts/331_6.png b/concepts/331_6.png new file mode 100644 index 0000000000000000000000000000000000000000..1f3ed9c8deb381f67b91f1c0b25e66b965ac4760 Binary files /dev/null and b/concepts/331_6.png differ diff --git a/concepts/331_9.png b/concepts/331_9.png new file mode 100644 index 0000000000000000000000000000000000000000..336cd7cdf184d46c601b640b60d871bdf95588ec Binary files /dev/null and b/concepts/331_9.png differ diff --git a/concepts/332_1.png b/concepts/332_1.png new file mode 100644 index 0000000000000000000000000000000000000000..b10d74aee5bac3e6b6902bab8612de2fb89ceba0 Binary files /dev/null and b/concepts/332_1.png differ diff --git a/concepts/332_13.png b/concepts/332_13.png new file mode 100644 index 0000000000000000000000000000000000000000..bbfb706a31cee3dd9703f2d74dfff38aed7bb13e Binary files /dev/null and b/concepts/332_13.png differ diff --git a/concepts/332_19.png b/concepts/332_19.png new file mode 100644 index 0000000000000000000000000000000000000000..c6c9169002d36dc9e8947f91657a0bd0f720dc13 Binary files /dev/null and b/concepts/332_19.png differ diff --git a/concepts/332_20.png b/concepts/332_20.png new file mode 100644 index 0000000000000000000000000000000000000000..36224c37d4df7b74709dc9d96fe10f859a0f761c Binary files /dev/null and b/concepts/332_20.png differ diff --git a/concepts/332_21.png b/concepts/332_21.png new file mode 100644 index 0000000000000000000000000000000000000000..87285f71793dca792952d2c278000243c47a949f Binary files /dev/null and b/concepts/332_21.png differ diff --git a/concepts/332_5.png b/concepts/332_5.png new file mode 100644 index 0000000000000000000000000000000000000000..2a51804d0cd159b7870acf9301a555b75818c4a4 Binary files /dev/null and b/concepts/332_5.png differ diff --git a/concepts/332_7.png b/concepts/332_7.png new file mode 100644 index 0000000000000000000000000000000000000000..1ffcbfbd2f7c3c46f58666f2fd8dca8ebfb31262 Binary files /dev/null and b/concepts/332_7.png differ diff --git a/concepts/332_8.png b/concepts/332_8.png new file mode 100644 index 0000000000000000000000000000000000000000..6c3aa6a458c829d5fbbcc926798dff45a5990cbb Binary files /dev/null and b/concepts/332_8.png differ diff --git a/concepts/333_0.png b/concepts/333_0.png new file mode 100644 index 0000000000000000000000000000000000000000..5054a13a94e59c73b2c27be4559f0c19d6c3a6e2 Binary files /dev/null and b/concepts/333_0.png differ diff --git a/concepts/333_1.png b/concepts/333_1.png new file mode 100644 index 0000000000000000000000000000000000000000..1f571fc07c281bb84ba4f62476e562185d255a71 Binary files /dev/null and b/concepts/333_1.png differ diff --git a/concepts/333_2.png b/concepts/333_2.png new file mode 100644 index 0000000000000000000000000000000000000000..71932e4a9cebe43ceeb21777230f57ba6eb08372 Binary files /dev/null and b/concepts/333_2.png differ diff --git a/concepts/333_3.png b/concepts/333_3.png new file mode 100644 index 0000000000000000000000000000000000000000..d7ee59ec927ad842050a5126165c09e62f29e91f Binary files /dev/null and b/concepts/333_3.png differ diff --git a/concepts/333_4.png b/concepts/333_4.png new file mode 100644 index 0000000000000000000000000000000000000000..024b15ccc60ffd9df530dcd09ae0fad3635f8c18 Binary files /dev/null and b/concepts/333_4.png differ diff --git a/concepts/333_5.png b/concepts/333_5.png new file mode 100644 index 0000000000000000000000000000000000000000..6463940d0a95c638c78461ba1e5a775696ef0f89 Binary files /dev/null and b/concepts/333_5.png differ diff --git a/concepts/333_6.png b/concepts/333_6.png new file mode 100644 index 0000000000000000000000000000000000000000..ff37476a5b1e003dcd465a956ee0511678a212f5 Binary files /dev/null and b/concepts/333_6.png differ diff --git a/concepts/333_8.png b/concepts/333_8.png new file mode 100644 index 0000000000000000000000000000000000000000..a9df891b0973ce20f67b6f4b86c403fadd5ddfd0 Binary files /dev/null and b/concepts/333_8.png differ diff --git a/concepts/334_0.png b/concepts/334_0.png new file mode 100644 index 0000000000000000000000000000000000000000..f7ccbb99b3fbcbd291399d922b645bbbef9879cf Binary files /dev/null and b/concepts/334_0.png differ diff --git a/concepts/334_1.png b/concepts/334_1.png new file mode 100644 index 0000000000000000000000000000000000000000..caee6061663d55632c2ebd88e48df48156f18ceb Binary files /dev/null and b/concepts/334_1.png differ diff --git a/concepts/334_2.png b/concepts/334_2.png new file mode 100644 index 0000000000000000000000000000000000000000..1a0190225f345ea60c457cee8f2334ed40ba9d8e Binary files /dev/null and b/concepts/334_2.png differ diff --git a/concepts/334_3.png b/concepts/334_3.png new file mode 100644 index 0000000000000000000000000000000000000000..2d1e224a7003f6be2fba8bce0130b6be4466dbc3 Binary files /dev/null and b/concepts/334_3.png differ diff --git a/concepts/334_4.png b/concepts/334_4.png new file mode 100644 index 0000000000000000000000000000000000000000..8abee34a82b5637f328357195545709567b359e3 Binary files /dev/null and b/concepts/334_4.png differ diff --git a/concepts/334_5.png b/concepts/334_5.png new file mode 100644 index 0000000000000000000000000000000000000000..e834cbd85228e92d4167f92280b6fd2b9347b619 Binary files /dev/null and b/concepts/334_5.png differ diff --git a/concepts/334_6.png b/concepts/334_6.png new file mode 100644 index 0000000000000000000000000000000000000000..4b1701a55f74b43e92341ee3dd0b0eafce2c87ad Binary files /dev/null and b/concepts/334_6.png differ diff --git a/concepts/334_8.png b/concepts/334_8.png new file mode 100644 index 0000000000000000000000000000000000000000..258b1988d637bd22816af9e9157d4513ab8c8076 Binary files /dev/null and b/concepts/334_8.png differ diff --git a/concepts/335_0.png b/concepts/335_0.png new file mode 100644 index 0000000000000000000000000000000000000000..b77bd457783be2fb5353637560fd45a3827694ee Binary files /dev/null and b/concepts/335_0.png differ diff --git a/concepts/335_1.png b/concepts/335_1.png new file mode 100644 index 0000000000000000000000000000000000000000..54a4ce9909c657cb6de7ccb7689f4115b739953a Binary files /dev/null and b/concepts/335_1.png differ diff --git a/concepts/335_2.png b/concepts/335_2.png new file mode 100644 index 0000000000000000000000000000000000000000..d00e936f4d616c3534aba6a4150a85a61fc9a171 Binary files /dev/null and b/concepts/335_2.png differ diff --git a/concepts/335_4.png b/concepts/335_4.png new file mode 100644 index 0000000000000000000000000000000000000000..6b8c4135a21a3db5e944d02389dcae1869b49ad1 Binary files /dev/null and b/concepts/335_4.png differ diff --git a/concepts/335_5.png b/concepts/335_5.png new file mode 100644 index 0000000000000000000000000000000000000000..e2b04cecc9f549313fdeea4b753076615fde45ba Binary files /dev/null and b/concepts/335_5.png differ diff --git a/concepts/335_6.png b/concepts/335_6.png new file mode 100644 index 0000000000000000000000000000000000000000..ed39bfbabc94061dd5ece55c87f6d33d55a042e4 Binary files /dev/null and b/concepts/335_6.png differ diff --git a/concepts/335_7.png b/concepts/335_7.png new file mode 100644 index 0000000000000000000000000000000000000000..c94d9348985f1b4814b4303589080574c2bc7337 Binary files /dev/null and b/concepts/335_7.png differ diff --git a/concepts/335_8.png b/concepts/335_8.png new file mode 100644 index 0000000000000000000000000000000000000000..bb35eb7f04e6847325df2d9938d89396a382c214 Binary files /dev/null and b/concepts/335_8.png differ diff --git a/concepts/336_0.png b/concepts/336_0.png new file mode 100644 index 0000000000000000000000000000000000000000..c199ba70ebd72822c5912bf2849f9ab09c8d0a7b Binary files /dev/null and b/concepts/336_0.png differ diff --git a/concepts/336_1.png b/concepts/336_1.png new file mode 100644 index 0000000000000000000000000000000000000000..7414fcfedf31817ba644a15721dfcd12fc65e148 Binary files /dev/null and b/concepts/336_1.png differ diff --git a/concepts/336_2.png b/concepts/336_2.png new file mode 100644 index 0000000000000000000000000000000000000000..607532fa44d010c95cb26f3acb950e853e1cafeb Binary files /dev/null and b/concepts/336_2.png differ diff --git a/concepts/336_3.png b/concepts/336_3.png new file mode 100644 index 0000000000000000000000000000000000000000..e78dd03b0bc3de07bb1d2173e339acd7e5a60ff3 Binary files /dev/null and b/concepts/336_3.png differ diff --git a/concepts/336_4.png b/concepts/336_4.png new file mode 100644 index 0000000000000000000000000000000000000000..fc67289c430d6729a2bb02cc601485897abbd856 Binary files /dev/null and b/concepts/336_4.png differ diff --git a/concepts/336_5.png b/concepts/336_5.png new file mode 100644 index 0000000000000000000000000000000000000000..d3fd09bafc45d84c52567217909a291ae4141540 Binary files /dev/null and b/concepts/336_5.png differ diff --git a/concepts/336_6.png b/concepts/336_6.png new file mode 100644 index 0000000000000000000000000000000000000000..991eb9cf40c8d95676e42b442b6964b46ca52cb3 Binary files /dev/null and b/concepts/336_6.png differ diff --git a/concepts/336_7.png b/concepts/336_7.png new file mode 100644 index 0000000000000000000000000000000000000000..140af53d9425b50e4a12e9ea643e605d017f49ff Binary files /dev/null and b/concepts/336_7.png differ diff --git a/concepts/337_11.png b/concepts/337_11.png new file mode 100644 index 0000000000000000000000000000000000000000..4444e0dd04f90a264f7324d11be0815d9e0a6d6a Binary files /dev/null and b/concepts/337_11.png differ diff --git a/concepts/337_13.png b/concepts/337_13.png new file mode 100644 index 0000000000000000000000000000000000000000..ead23f769b804a417d2c439252692ce0d34d9ef5 Binary files /dev/null and b/concepts/337_13.png differ diff --git a/concepts/337_14.png b/concepts/337_14.png new file mode 100644 index 0000000000000000000000000000000000000000..b873a9949f8f4af230a0c2f992d1f4ab80630da5 Binary files /dev/null and b/concepts/337_14.png differ diff --git a/concepts/337_21.png b/concepts/337_21.png new file mode 100644 index 0000000000000000000000000000000000000000..fc9ea0fca4a72ad5ec8f538292806dc9515ea989 Binary files /dev/null and b/concepts/337_21.png differ diff --git a/concepts/337_24.png b/concepts/337_24.png new file mode 100644 index 0000000000000000000000000000000000000000..ad1c58a991bfc97c969385ae4a06f18460a61374 Binary files /dev/null and b/concepts/337_24.png differ diff --git a/concepts/337_5.png b/concepts/337_5.png new file mode 100644 index 0000000000000000000000000000000000000000..3939146515602b19d438da849b7e938a650f72ca Binary files /dev/null and b/concepts/337_5.png differ diff --git a/concepts/337_6.png b/concepts/337_6.png new file mode 100644 index 0000000000000000000000000000000000000000..5d1721e27d20dc1f886f3545940e4252e3cd60d5 Binary files /dev/null and b/concepts/337_6.png differ diff --git a/concepts/337_9.png b/concepts/337_9.png new file mode 100644 index 0000000000000000000000000000000000000000..6320efdd08017d4ad95095144345c53744cc1410 Binary files /dev/null and b/concepts/337_9.png differ diff --git a/concepts/338_0.png b/concepts/338_0.png new file mode 100644 index 0000000000000000000000000000000000000000..50dbf39daef7915a8adc1930164ed9d476394dba Binary files /dev/null and b/concepts/338_0.png differ diff --git a/concepts/338_1.png b/concepts/338_1.png new file mode 100644 index 0000000000000000000000000000000000000000..62e1d3ff252bd38656a0abb29851c68eada9907a Binary files /dev/null and b/concepts/338_1.png differ diff --git a/concepts/338_2.png b/concepts/338_2.png new file mode 100644 index 0000000000000000000000000000000000000000..dedb9572d2c8e623b7cc168a2d9811c12355fc8a Binary files /dev/null and b/concepts/338_2.png differ diff --git a/concepts/338_3.png b/concepts/338_3.png new file mode 100644 index 0000000000000000000000000000000000000000..008bc391c1aab5e17d44cf3c2f62dfdc4ce12fe2 Binary files /dev/null and b/concepts/338_3.png differ diff --git a/concepts/338_4.png b/concepts/338_4.png new file mode 100644 index 0000000000000000000000000000000000000000..c324b91b00b5ce86d50266d5355057c3c0875a55 Binary files /dev/null and b/concepts/338_4.png differ diff --git a/concepts/338_5.png b/concepts/338_5.png new file mode 100644 index 0000000000000000000000000000000000000000..c6740546987f7f1aaf016f3e9c5e1a3abdc65b66 Binary files /dev/null and b/concepts/338_5.png differ diff --git a/concepts/338_6.png b/concepts/338_6.png new file mode 100644 index 0000000000000000000000000000000000000000..4cc8073e86f50c2f9b0eca58ecffa369f69a6242 Binary files /dev/null and b/concepts/338_6.png differ diff --git a/concepts/338_7.png b/concepts/338_7.png new file mode 100644 index 0000000000000000000000000000000000000000..b305cb2039929ade3237a39867d3722b0cda9bca Binary files /dev/null and b/concepts/338_7.png differ diff --git a/concepts/339_0.png b/concepts/339_0.png new file mode 100644 index 0000000000000000000000000000000000000000..dde0d9a171e0b17cce64091dcce273791bd8052f Binary files /dev/null and b/concepts/339_0.png differ diff --git a/concepts/339_1.png b/concepts/339_1.png new file mode 100644 index 0000000000000000000000000000000000000000..0d15f1b7995f66ab84820be22c4668e293c644d7 Binary files /dev/null and b/concepts/339_1.png differ diff --git a/concepts/339_11.png b/concepts/339_11.png new file mode 100644 index 0000000000000000000000000000000000000000..f4bf2c2de3f9ad66c9a8bcb4954ddc6224d80569 Binary files /dev/null and b/concepts/339_11.png differ diff --git a/concepts/339_12.png b/concepts/339_12.png new file mode 100644 index 0000000000000000000000000000000000000000..b84be26566d33b650c6fdb9ade10f21305519af8 Binary files /dev/null and b/concepts/339_12.png differ diff --git a/concepts/339_2.png b/concepts/339_2.png new file mode 100644 index 0000000000000000000000000000000000000000..05724e1876cc6711440f13a1e83bdc8de13101df Binary files /dev/null and b/concepts/339_2.png differ diff --git a/concepts/339_4.png b/concepts/339_4.png new file mode 100644 index 0000000000000000000000000000000000000000..03a39d24ca1f1ef2aacdad13460fe4c4d65aef86 Binary files /dev/null and b/concepts/339_4.png differ diff --git a/concepts/339_7.png b/concepts/339_7.png new file mode 100644 index 0000000000000000000000000000000000000000..a03cc71f7381c37db197b0997a0288ea25cff20c Binary files /dev/null and b/concepts/339_7.png differ diff --git a/concepts/339_8.png b/concepts/339_8.png new file mode 100644 index 0000000000000000000000000000000000000000..7e8e855532f7fbeb0ac0c4761e20f85a35e77d0c Binary files /dev/null and b/concepts/339_8.png differ diff --git a/concepts/33_0.png b/concepts/33_0.png new file mode 100644 index 0000000000000000000000000000000000000000..347b8aea9530c182a5df8830334c0dcaa2a7d0cf Binary files /dev/null and b/concepts/33_0.png differ diff --git a/concepts/33_1.png b/concepts/33_1.png new file mode 100644 index 0000000000000000000000000000000000000000..090cb16724d4d823076fbbdac26fb507b5959743 Binary files /dev/null and b/concepts/33_1.png differ diff --git a/concepts/33_12.png b/concepts/33_12.png new file mode 100644 index 0000000000000000000000000000000000000000..595d70b816d41b19d3a85dc5615a9f48d4dc8771 Binary files /dev/null and b/concepts/33_12.png differ diff --git a/concepts/33_13.png b/concepts/33_13.png new file mode 100644 index 0000000000000000000000000000000000000000..2849772d8e2481335bf8b02c9fa2a8ae6d07fa6f Binary files /dev/null and b/concepts/33_13.png differ diff --git a/concepts/33_2.png b/concepts/33_2.png new file mode 100644 index 0000000000000000000000000000000000000000..757cd5fb852842f2781d03f92d9b582569419f1d Binary files /dev/null and b/concepts/33_2.png differ diff --git a/concepts/33_5.png b/concepts/33_5.png new file mode 100644 index 0000000000000000000000000000000000000000..75f883f316645001d8567f7af2987ec5b1bfce85 Binary files /dev/null and b/concepts/33_5.png differ diff --git a/concepts/33_6.png b/concepts/33_6.png new file mode 100644 index 0000000000000000000000000000000000000000..b96d13b2f94972088f543870ea2f9ff857b2c2cb Binary files /dev/null and b/concepts/33_6.png differ diff --git a/concepts/33_7.png b/concepts/33_7.png new file mode 100644 index 0000000000000000000000000000000000000000..71476826a8af03c9bb1e191d7d454174dd9e31a5 Binary files /dev/null and b/concepts/33_7.png differ diff --git a/concepts/340_1.png b/concepts/340_1.png new file mode 100644 index 0000000000000000000000000000000000000000..55a779236e77e2c5cefb4d6c3d14720d081e3995 Binary files /dev/null and b/concepts/340_1.png differ diff --git a/concepts/340_13.png b/concepts/340_13.png new file mode 100644 index 0000000000000000000000000000000000000000..4c4bf1e7ba087297e9506617748900b43113340d Binary files /dev/null and b/concepts/340_13.png differ diff --git a/concepts/340_2.png b/concepts/340_2.png new file mode 100644 index 0000000000000000000000000000000000000000..604702292463ef40a49bb6a7b338006dbd984bf0 Binary files /dev/null and b/concepts/340_2.png differ diff --git a/concepts/340_20.png b/concepts/340_20.png new file mode 100644 index 0000000000000000000000000000000000000000..cc607475a34cbb0208d45011b3d7cf53d3c9e225 Binary files /dev/null and b/concepts/340_20.png differ diff --git a/concepts/340_24.png b/concepts/340_24.png new file mode 100644 index 0000000000000000000000000000000000000000..c96cc4869ee066df67c2e805d8aa59521dad6fdd Binary files /dev/null and b/concepts/340_24.png differ diff --git a/concepts/340_5.png b/concepts/340_5.png new file mode 100644 index 0000000000000000000000000000000000000000..8ccad60f01d48c6a8908eec6b7b231fd40a222be Binary files /dev/null and b/concepts/340_5.png differ diff --git a/concepts/340_6.png b/concepts/340_6.png new file mode 100644 index 0000000000000000000000000000000000000000..1e42d898d5d39f1d7a6262f103e9129a3d680a92 Binary files /dev/null and b/concepts/340_6.png differ diff --git a/concepts/340_8.png b/concepts/340_8.png new file mode 100644 index 0000000000000000000000000000000000000000..d114c6a3b5755ddcec2740801cf67000428b4374 Binary files /dev/null and b/concepts/340_8.png differ diff --git a/concepts/341_0.png b/concepts/341_0.png new file mode 100644 index 0000000000000000000000000000000000000000..57dec951262aa2f09206a295e5b2f71b74556d95 Binary files /dev/null and b/concepts/341_0.png differ diff --git a/concepts/341_1.png b/concepts/341_1.png new file mode 100644 index 0000000000000000000000000000000000000000..d90789d0788d5fb56642f7b35c9cd86bf7883159 Binary files /dev/null and b/concepts/341_1.png differ diff --git a/concepts/341_2.png b/concepts/341_2.png new file mode 100644 index 0000000000000000000000000000000000000000..cfb6af31925729fd16814f8f292787c97ab4b29d Binary files /dev/null and b/concepts/341_2.png differ diff --git a/concepts/341_3.png b/concepts/341_3.png new file mode 100644 index 0000000000000000000000000000000000000000..a869ed228a24613727e240049fb9b0a051e76566 Binary files /dev/null and b/concepts/341_3.png differ diff --git a/concepts/341_4.png b/concepts/341_4.png new file mode 100644 index 0000000000000000000000000000000000000000..194fb224ca89f0f545774c830512c8ea6d6565b9 Binary files /dev/null and b/concepts/341_4.png differ diff --git a/concepts/341_6.png b/concepts/341_6.png new file mode 100644 index 0000000000000000000000000000000000000000..1dbfb31ec071b762e267a6525079e748b733ba0c Binary files /dev/null and b/concepts/341_6.png differ diff --git a/concepts/341_7.png b/concepts/341_7.png new file mode 100644 index 0000000000000000000000000000000000000000..60d35a68ea3754459d1c905e5b2020f73e2a3cab Binary files /dev/null and b/concepts/341_7.png differ diff --git a/concepts/341_8.png b/concepts/341_8.png new file mode 100644 index 0000000000000000000000000000000000000000..d3433e0595c7e146276a582f9b51d52060a72b7c Binary files /dev/null and b/concepts/341_8.png differ diff --git a/concepts/342_0.png b/concepts/342_0.png new file mode 100644 index 0000000000000000000000000000000000000000..94ed6b5c94f8da987dcbb5be3c6ca22985a37a76 Binary files /dev/null and b/concepts/342_0.png differ diff --git a/concepts/342_10.png b/concepts/342_10.png new file mode 100644 index 0000000000000000000000000000000000000000..6800af60c7ba358e16fceb9a4b6743829c449095 Binary files /dev/null and b/concepts/342_10.png differ diff --git a/concepts/342_2.png b/concepts/342_2.png new file mode 100644 index 0000000000000000000000000000000000000000..8453df7733326b35adc182e61d88e026300fc841 Binary files /dev/null and b/concepts/342_2.png differ diff --git a/concepts/342_3.png b/concepts/342_3.png new file mode 100644 index 0000000000000000000000000000000000000000..1aeff53dae8575cac34541c13e7b64142d280fb4 Binary files /dev/null and b/concepts/342_3.png differ diff --git a/concepts/342_4.png b/concepts/342_4.png new file mode 100644 index 0000000000000000000000000000000000000000..f1862123a8bc7f3ef82c5057929be188f61ca798 Binary files /dev/null and b/concepts/342_4.png differ diff --git a/concepts/342_7.png b/concepts/342_7.png new file mode 100644 index 0000000000000000000000000000000000000000..3342a8373fe05a3c4b9e3250b85ee079f0174b7d Binary files /dev/null and b/concepts/342_7.png differ diff --git a/concepts/342_8.png b/concepts/342_8.png new file mode 100644 index 0000000000000000000000000000000000000000..2ae92f88b665817b428440958777231258a56f96 Binary files /dev/null and b/concepts/342_8.png differ diff --git a/concepts/342_9.png b/concepts/342_9.png new file mode 100644 index 0000000000000000000000000000000000000000..15d766724f16d4a721980ff271c8ff1323f33281 Binary files /dev/null and b/concepts/342_9.png differ diff --git a/concepts/343_0.png b/concepts/343_0.png new file mode 100644 index 0000000000000000000000000000000000000000..03b96c58841e23e14ee922a55f3ffe41120d1a9b Binary files /dev/null and b/concepts/343_0.png differ diff --git a/concepts/343_13.png b/concepts/343_13.png new file mode 100644 index 0000000000000000000000000000000000000000..18dcdc0c317bbd5af7a80845ab25fffc5f903d72 Binary files /dev/null and b/concepts/343_13.png differ diff --git a/concepts/343_14.png b/concepts/343_14.png new file mode 100644 index 0000000000000000000000000000000000000000..6a7c4aef51187b7d5c9893dd1b8a81c4847be6e4 Binary files /dev/null and b/concepts/343_14.png differ diff --git a/concepts/343_16.png b/concepts/343_16.png new file mode 100644 index 0000000000000000000000000000000000000000..88a3189278772fa70c5100c3572853f16ba89b83 Binary files /dev/null and b/concepts/343_16.png differ diff --git a/concepts/343_3.png b/concepts/343_3.png new file mode 100644 index 0000000000000000000000000000000000000000..b369f2a56de34408a6add510e8f88537c9bdcba7 Binary files /dev/null and b/concepts/343_3.png differ diff --git a/concepts/343_4.png b/concepts/343_4.png new file mode 100644 index 0000000000000000000000000000000000000000..83229e609dec8a65d93a37fed9363d77dd54333b Binary files /dev/null and b/concepts/343_4.png differ diff --git a/concepts/343_7.png b/concepts/343_7.png new file mode 100644 index 0000000000000000000000000000000000000000..c2e695f06a3b085739248f94b2399bdc4cad9ca4 Binary files /dev/null and b/concepts/343_7.png differ diff --git a/concepts/343_8.png b/concepts/343_8.png new file mode 100644 index 0000000000000000000000000000000000000000..4623fc7667acb59ebff76dcfb36a3e408fd38e6a Binary files /dev/null and b/concepts/343_8.png differ diff --git a/concepts/344_11.png b/concepts/344_11.png new file mode 100644 index 0000000000000000000000000000000000000000..1c696e37c7bdf7c3d7bea4e6daacc6ce4785834c Binary files /dev/null and b/concepts/344_11.png differ diff --git a/concepts/344_2.png b/concepts/344_2.png new file mode 100644 index 0000000000000000000000000000000000000000..3a28b2b4d166679779ea6dad55fc9404b416438e Binary files /dev/null and b/concepts/344_2.png differ diff --git a/concepts/344_3.png b/concepts/344_3.png new file mode 100644 index 0000000000000000000000000000000000000000..717bbde0c890da3f0b4781d96e73cec5eb7661ac Binary files /dev/null and b/concepts/344_3.png differ diff --git a/concepts/344_4.png b/concepts/344_4.png new file mode 100644 index 0000000000000000000000000000000000000000..54a59b381ea1b0bfcb14edb825aa063aa66faa4f Binary files /dev/null and b/concepts/344_4.png differ diff --git a/concepts/344_6.png b/concepts/344_6.png new file mode 100644 index 0000000000000000000000000000000000000000..893e96d0b170f4bec66d90a76c359a12516f14b5 Binary files /dev/null and b/concepts/344_6.png differ diff --git a/concepts/344_7.png b/concepts/344_7.png new file mode 100644 index 0000000000000000000000000000000000000000..aeee1e05f9550dfbcd966f1ec63b02983585131d Binary files /dev/null and b/concepts/344_7.png differ diff --git a/concepts/344_8.png b/concepts/344_8.png new file mode 100644 index 0000000000000000000000000000000000000000..4b741040721a8fa9ab7b60f6e01acd61a4284054 Binary files /dev/null and b/concepts/344_8.png differ diff --git a/concepts/344_9.png b/concepts/344_9.png new file mode 100644 index 0000000000000000000000000000000000000000..d6bc7bc9b34101403b774435e62bd075173affd0 Binary files /dev/null and b/concepts/344_9.png differ diff --git a/concepts/345_10.png b/concepts/345_10.png new file mode 100644 index 0000000000000000000000000000000000000000..e877b997948f41100c82b80023fc669c4c491554 Binary files /dev/null and b/concepts/345_10.png differ diff --git a/concepts/345_2.png b/concepts/345_2.png new file mode 100644 index 0000000000000000000000000000000000000000..cabecd0f828eb24433b6a92c3dcbde389e70189e Binary files /dev/null and b/concepts/345_2.png differ diff --git a/concepts/345_3.png b/concepts/345_3.png new file mode 100644 index 0000000000000000000000000000000000000000..c7b0e466ea23b5096256df6f6f69b0bc69f17047 Binary files /dev/null and b/concepts/345_3.png differ diff --git a/concepts/345_4.png b/concepts/345_4.png new file mode 100644 index 0000000000000000000000000000000000000000..5855ef9d7dee52a38ffd0999f001425d514fc790 Binary files /dev/null and b/concepts/345_4.png differ diff --git a/concepts/345_6.png b/concepts/345_6.png new file mode 100644 index 0000000000000000000000000000000000000000..57279cc840d94a3a9e1bd059548b5e373661831c Binary files /dev/null and b/concepts/345_6.png differ diff --git a/concepts/345_7.png b/concepts/345_7.png new file mode 100644 index 0000000000000000000000000000000000000000..c6044f2443ef011051d00c2aa2b6c2978c9f716f Binary files /dev/null and b/concepts/345_7.png differ diff --git a/concepts/345_8.png b/concepts/345_8.png new file mode 100644 index 0000000000000000000000000000000000000000..978d91a5cc95f00880ca9ca5cb9b8d6c53b9732b Binary files /dev/null and b/concepts/345_8.png differ diff --git a/concepts/345_9.png b/concepts/345_9.png new file mode 100644 index 0000000000000000000000000000000000000000..4b192479887496a7373b8d09bb6e62277c18e055 Binary files /dev/null and b/concepts/345_9.png differ diff --git a/concepts/346_0.png b/concepts/346_0.png new file mode 100644 index 0000000000000000000000000000000000000000..a7f6de95d8d5b1df5ad5dd30b26119f1cdf7e853 Binary files /dev/null and b/concepts/346_0.png differ diff --git a/concepts/346_1.png b/concepts/346_1.png new file mode 100644 index 0000000000000000000000000000000000000000..7858d6f8e71a9a1355553da175adae9d2ed985d5 Binary files /dev/null and b/concepts/346_1.png differ diff --git a/concepts/346_2.png b/concepts/346_2.png new file mode 100644 index 0000000000000000000000000000000000000000..d9cb8ffb8c856978ac9c6ab8db25f881e9ae6b61 Binary files /dev/null and b/concepts/346_2.png differ diff --git a/concepts/346_3.png b/concepts/346_3.png new file mode 100644 index 0000000000000000000000000000000000000000..a8dabbd2d9b6502790248648165a6f4e6465053b Binary files /dev/null and b/concepts/346_3.png differ diff --git a/concepts/346_4.png b/concepts/346_4.png new file mode 100644 index 0000000000000000000000000000000000000000..d41c1ac3873dfa4a1b3d3d086973a00645306ec9 Binary files /dev/null and b/concepts/346_4.png differ diff --git a/concepts/346_6.png b/concepts/346_6.png new file mode 100644 index 0000000000000000000000000000000000000000..50889ad97e26810fc63431d8adc381c6dd9815ed Binary files /dev/null and b/concepts/346_6.png differ diff --git a/concepts/346_7.png b/concepts/346_7.png new file mode 100644 index 0000000000000000000000000000000000000000..26681eb8cde973ab220833915f2ae2590b8fdb42 Binary files /dev/null and b/concepts/346_7.png differ diff --git a/concepts/346_8.png b/concepts/346_8.png new file mode 100644 index 0000000000000000000000000000000000000000..69f0211f5d22c8d17e3ee7040a10e25785af479d Binary files /dev/null and b/concepts/346_8.png differ diff --git a/concepts/347_17.png b/concepts/347_17.png new file mode 100644 index 0000000000000000000000000000000000000000..ad582296a5a9c6068e2b1a4c6132865551249839 Binary files /dev/null and b/concepts/347_17.png differ diff --git a/concepts/347_2.png b/concepts/347_2.png new file mode 100644 index 0000000000000000000000000000000000000000..2e630e9e9f6198a8fdc4242b6a0f4506e6b34253 Binary files /dev/null and b/concepts/347_2.png differ diff --git a/concepts/347_5.png b/concepts/347_5.png new file mode 100644 index 0000000000000000000000000000000000000000..5cefefd1c3efd3ccb522b6b241f1263e1d3eaeb0 Binary files /dev/null and b/concepts/347_5.png differ diff --git a/concepts/347_6.png b/concepts/347_6.png new file mode 100644 index 0000000000000000000000000000000000000000..767e1cce3696540237ffa114d403900b1f908d9e Binary files /dev/null and b/concepts/347_6.png differ diff --git a/concepts/347_7.png b/concepts/347_7.png new file mode 100644 index 0000000000000000000000000000000000000000..3b2f80ffa4ca89cccf9bf3fb2a0b257968968c3f Binary files /dev/null and b/concepts/347_7.png differ diff --git a/concepts/347_8.png b/concepts/347_8.png new file mode 100644 index 0000000000000000000000000000000000000000..e517e8a862c4eff92bc136a224273ff38683aabc Binary files /dev/null and b/concepts/347_8.png differ diff --git a/concepts/348_10.png b/concepts/348_10.png new file mode 100644 index 0000000000000000000000000000000000000000..96af6c2c171379e2e3d9517a0ba604866f8beb94 Binary files /dev/null and b/concepts/348_10.png differ diff --git a/concepts/348_16.png b/concepts/348_16.png new file mode 100644 index 0000000000000000000000000000000000000000..d018c6ccdafb59fc153f016994acd322890e3f7b Binary files /dev/null and b/concepts/348_16.png differ diff --git a/concepts/348_2.png b/concepts/348_2.png new file mode 100644 index 0000000000000000000000000000000000000000..f7ba03c99bd8729c0d64946d1fbdf2af648947cf Binary files /dev/null and b/concepts/348_2.png differ diff --git a/concepts/348_20.png b/concepts/348_20.png new file mode 100644 index 0000000000000000000000000000000000000000..1067898c3383c5c5ed9bdc447270132cbcb3a3bf Binary files /dev/null and b/concepts/348_20.png differ diff --git a/concepts/348_23.png b/concepts/348_23.png new file mode 100644 index 0000000000000000000000000000000000000000..8a449faa63abfba7ff629f462b53eacc0b59080c Binary files /dev/null and b/concepts/348_23.png differ diff --git a/concepts/348_3.png b/concepts/348_3.png new file mode 100644 index 0000000000000000000000000000000000000000..4c63685a0488208ee6bd3a44003a2cc91cc7fc53 Binary files /dev/null and b/concepts/348_3.png differ diff --git a/concepts/348_4.png b/concepts/348_4.png new file mode 100644 index 0000000000000000000000000000000000000000..dc89551369fea590f65e9e2e3d88be21004d3b29 Binary files /dev/null and b/concepts/348_4.png differ diff --git a/concepts/348_6.png b/concepts/348_6.png new file mode 100644 index 0000000000000000000000000000000000000000..67a01005230e6d4c52f5e6fe5671783a4d89ff89 Binary files /dev/null and b/concepts/348_6.png differ diff --git a/concepts/349_0.png b/concepts/349_0.png new file mode 100644 index 0000000000000000000000000000000000000000..be9ae402ef0f65a2e05e045952a82fa3789c5c3d Binary files /dev/null and b/concepts/349_0.png differ diff --git a/concepts/349_1.png b/concepts/349_1.png new file mode 100644 index 0000000000000000000000000000000000000000..c878962f75f8b2f05bea41a0320e325e8f781c30 Binary files /dev/null and b/concepts/349_1.png differ diff --git a/concepts/349_15.png b/concepts/349_15.png new file mode 100644 index 0000000000000000000000000000000000000000..5566779059072e2a7f6ab14d62fb485f95282f3f Binary files /dev/null and b/concepts/349_15.png differ diff --git a/concepts/349_17.png b/concepts/349_17.png new file mode 100644 index 0000000000000000000000000000000000000000..a88f009b7bc6f3363c220a456850cd3b1884cacb Binary files /dev/null and b/concepts/349_17.png differ diff --git a/concepts/349_22.png b/concepts/349_22.png new file mode 100644 index 0000000000000000000000000000000000000000..b66e3e51bad329edcd875adb528a21a1a79b4adc Binary files /dev/null and b/concepts/349_22.png differ diff --git a/concepts/349_3.png b/concepts/349_3.png new file mode 100644 index 0000000000000000000000000000000000000000..d512711698152358328cb70a46f5ae4e36ec9b25 Binary files /dev/null and b/concepts/349_3.png differ diff --git a/concepts/349_9.png b/concepts/349_9.png new file mode 100644 index 0000000000000000000000000000000000000000..3e6b8da33021ebc360c9a7ac1716038562a0bcb4 Binary files /dev/null and b/concepts/349_9.png differ diff --git a/concepts/34_0.png b/concepts/34_0.png new file mode 100644 index 0000000000000000000000000000000000000000..e6d7765cd94f7eaecf3ed3c35aed2d575db80729 Binary files /dev/null and b/concepts/34_0.png differ diff --git a/concepts/34_1.png b/concepts/34_1.png new file mode 100644 index 0000000000000000000000000000000000000000..7642d0480826d502e75b414aaa86b8c38bf1c7cd Binary files /dev/null and b/concepts/34_1.png differ diff --git a/concepts/34_2.png b/concepts/34_2.png new file mode 100644 index 0000000000000000000000000000000000000000..d776d65f9d761158091cd2056886360d40e7a116 Binary files /dev/null and b/concepts/34_2.png differ diff --git a/concepts/34_3.png b/concepts/34_3.png new file mode 100644 index 0000000000000000000000000000000000000000..03e2abee69525cb9eb24bc1817d14328a6ee5e15 Binary files /dev/null and b/concepts/34_3.png differ diff --git a/concepts/34_5.png b/concepts/34_5.png new file mode 100644 index 0000000000000000000000000000000000000000..46adfd7817dd6d958d6cd60217d4b81d920c7048 Binary files /dev/null and b/concepts/34_5.png differ diff --git a/concepts/34_6.png b/concepts/34_6.png new file mode 100644 index 0000000000000000000000000000000000000000..0ac8d3e26acd7adc33119dcd96cc89a632c8b2da Binary files /dev/null and b/concepts/34_6.png differ diff --git a/concepts/34_7.png b/concepts/34_7.png new file mode 100644 index 0000000000000000000000000000000000000000..eec944e107bee6427244e9773aac06bc22c685a6 Binary files /dev/null and b/concepts/34_7.png differ diff --git a/concepts/34_8.png b/concepts/34_8.png new file mode 100644 index 0000000000000000000000000000000000000000..88d9f2eceea935653b3ceeda262b5e4de4eb7a6d Binary files /dev/null and b/concepts/34_8.png differ diff --git a/concepts/350_0.png b/concepts/350_0.png new file mode 100644 index 0000000000000000000000000000000000000000..4d9b9219299516d246c64708d85c2b29e49a34b3 Binary files /dev/null and b/concepts/350_0.png differ diff --git a/concepts/350_1.png b/concepts/350_1.png new file mode 100644 index 0000000000000000000000000000000000000000..72ebc3718e04622a1a962dc8edd2119472e6c49d Binary files /dev/null and b/concepts/350_1.png differ diff --git a/concepts/350_10.png b/concepts/350_10.png new file mode 100644 index 0000000000000000000000000000000000000000..f82a2683f3ab35a1dfd30808bb17b4d0bcb065ec Binary files /dev/null and b/concepts/350_10.png differ diff --git a/concepts/350_2.png b/concepts/350_2.png new file mode 100644 index 0000000000000000000000000000000000000000..63cfbeeb74f68d373167189bc6efb118c88dd7bf Binary files /dev/null and b/concepts/350_2.png differ diff --git a/concepts/350_3.png b/concepts/350_3.png new file mode 100644 index 0000000000000000000000000000000000000000..d21efb54b5b1ef7a932cbda2b743da5ad146bee0 Binary files /dev/null and b/concepts/350_3.png differ diff --git a/concepts/350_4.png b/concepts/350_4.png new file mode 100644 index 0000000000000000000000000000000000000000..8d73c1629bf506324d727b97c2199bc525861acd Binary files /dev/null and b/concepts/350_4.png differ diff --git a/concepts/350_5.png b/concepts/350_5.png new file mode 100644 index 0000000000000000000000000000000000000000..961c2c8159a4e81ebf7ce7dcceffaa64e5ceb91c Binary files /dev/null and b/concepts/350_5.png differ diff --git a/concepts/350_7.png b/concepts/350_7.png new file mode 100644 index 0000000000000000000000000000000000000000..88f9ad556ba0885d6c64c0a7d26fdd96a243695b Binary files /dev/null and b/concepts/350_7.png differ diff --git a/concepts/351_1.png b/concepts/351_1.png new file mode 100644 index 0000000000000000000000000000000000000000..72ae52b898bc7cdba97addd9e917e5016d2364d2 Binary files /dev/null and b/concepts/351_1.png differ diff --git a/concepts/351_10.png b/concepts/351_10.png new file mode 100644 index 0000000000000000000000000000000000000000..d66244df309dac36a44c41bb9f1a678ff8f264e3 Binary files /dev/null and b/concepts/351_10.png differ diff --git a/concepts/351_13.png b/concepts/351_13.png new file mode 100644 index 0000000000000000000000000000000000000000..b58a54a87e06d331d670a33037ce939ea95e6963 Binary files /dev/null and b/concepts/351_13.png differ diff --git a/concepts/351_18.png b/concepts/351_18.png new file mode 100644 index 0000000000000000000000000000000000000000..9e23e0dbe38cf79ceb77a7785de472899a4efe76 Binary files /dev/null and b/concepts/351_18.png differ diff --git a/concepts/351_2.png b/concepts/351_2.png new file mode 100644 index 0000000000000000000000000000000000000000..697c0d1b3371c9c24fdd5ea3754d113fe127246f Binary files /dev/null and b/concepts/351_2.png differ diff --git a/concepts/351_5.png b/concepts/351_5.png new file mode 100644 index 0000000000000000000000000000000000000000..63cb8527780945ff135751aa2b5420d54f1417d9 Binary files /dev/null and b/concepts/351_5.png differ diff --git a/concepts/351_6.png b/concepts/351_6.png new file mode 100644 index 0000000000000000000000000000000000000000..0bf7359753c01a9920753ce880bf54036d6c29d2 Binary files /dev/null and b/concepts/351_6.png differ diff --git a/concepts/351_7.png b/concepts/351_7.png new file mode 100644 index 0000000000000000000000000000000000000000..818ee79cfee9c898bca12def7f414e9583ab380e Binary files /dev/null and b/concepts/351_7.png differ diff --git a/concepts/352_0.png b/concepts/352_0.png new file mode 100644 index 0000000000000000000000000000000000000000..cf08a744257c8a42e6defe4bb6ebe07e4278f642 Binary files /dev/null and b/concepts/352_0.png differ diff --git a/concepts/352_1.png b/concepts/352_1.png new file mode 100644 index 0000000000000000000000000000000000000000..80050a03549bea5018b4450926cdf2b5fde4aa76 Binary files /dev/null and b/concepts/352_1.png differ diff --git a/concepts/352_2.png b/concepts/352_2.png new file mode 100644 index 0000000000000000000000000000000000000000..c1ddd1eb974e2cdd97340e50d03d8e18ab329272 Binary files /dev/null and b/concepts/352_2.png differ diff --git a/concepts/352_3.png b/concepts/352_3.png new file mode 100644 index 0000000000000000000000000000000000000000..e0a3d086fb54d9309e022f0f5655378c3af45b42 Binary files /dev/null and b/concepts/352_3.png differ diff --git a/concepts/352_4.png b/concepts/352_4.png new file mode 100644 index 0000000000000000000000000000000000000000..7ae16068d0a9ff89f2bfb5e00389053cc960d9bc Binary files /dev/null and b/concepts/352_4.png differ diff --git a/concepts/352_6.png b/concepts/352_6.png new file mode 100644 index 0000000000000000000000000000000000000000..b9c3f5234e2373df4081bd7cf6ad16df68c23e16 Binary files /dev/null and b/concepts/352_6.png differ diff --git a/concepts/352_7.png b/concepts/352_7.png new file mode 100644 index 0000000000000000000000000000000000000000..67b00681687fbffd1e01ad32e9b8558d92073faa Binary files /dev/null and b/concepts/352_7.png differ diff --git a/concepts/352_8.png b/concepts/352_8.png new file mode 100644 index 0000000000000000000000000000000000000000..3f3b736658b44355ee99783baec728d25f36ef18 Binary files /dev/null and b/concepts/352_8.png differ diff --git a/concepts/353_1.png b/concepts/353_1.png new file mode 100644 index 0000000000000000000000000000000000000000..f8d6601f57679ae8fa0c573109a3286dcf6d907d Binary files /dev/null and b/concepts/353_1.png differ diff --git a/concepts/353_14.png b/concepts/353_14.png new file mode 100644 index 0000000000000000000000000000000000000000..c440955e4d2774720d3f697d4045277667510f79 Binary files /dev/null and b/concepts/353_14.png differ diff --git a/concepts/353_17.png b/concepts/353_17.png new file mode 100644 index 0000000000000000000000000000000000000000..1f3d622c6ae16e58a6a604c298b1028b7cbdd589 Binary files /dev/null and b/concepts/353_17.png differ diff --git a/concepts/353_19.png b/concepts/353_19.png new file mode 100644 index 0000000000000000000000000000000000000000..bd4e108bb0070682d615dbc22994f4782ba3dbed Binary files /dev/null and b/concepts/353_19.png differ diff --git a/concepts/353_21.png b/concepts/353_21.png new file mode 100644 index 0000000000000000000000000000000000000000..3a79f7d95fadf1d81097e21aa150721b74ecc019 Binary files /dev/null and b/concepts/353_21.png differ diff --git a/concepts/353_22.png b/concepts/353_22.png new file mode 100644 index 0000000000000000000000000000000000000000..a2aa57ceb2457bb6491168b098d4c9fd298ff309 Binary files /dev/null and b/concepts/353_22.png differ diff --git a/concepts/353_3.png b/concepts/353_3.png new file mode 100644 index 0000000000000000000000000000000000000000..3a755733deb70d116b4cc0fc8291e1e8902153b9 Binary files /dev/null and b/concepts/353_3.png differ diff --git a/concepts/353_7.png b/concepts/353_7.png new file mode 100644 index 0000000000000000000000000000000000000000..b44514e6f5edbe1f4463637727a3020940657e30 Binary files /dev/null and b/concepts/353_7.png differ diff --git a/concepts/354_0.png b/concepts/354_0.png new file mode 100644 index 0000000000000000000000000000000000000000..6bef5ce24166c44c6e1c0caca595fad2a4a944d3 Binary files /dev/null and b/concepts/354_0.png differ diff --git a/concepts/354_10.png b/concepts/354_10.png new file mode 100644 index 0000000000000000000000000000000000000000..2c5e16844637ffd8c9251cd04463ca12298d9659 Binary files /dev/null and b/concepts/354_10.png differ diff --git a/concepts/354_11.png b/concepts/354_11.png new file mode 100644 index 0000000000000000000000000000000000000000..f776e0c7724cc0e5c8828c3e403c322d08fdad94 Binary files /dev/null and b/concepts/354_11.png differ diff --git a/concepts/354_12.png b/concepts/354_12.png new file mode 100644 index 0000000000000000000000000000000000000000..25f8d4ecd4baaba57026f03ea68d30477f17deb9 Binary files /dev/null and b/concepts/354_12.png differ diff --git a/concepts/354_2.png b/concepts/354_2.png new file mode 100644 index 0000000000000000000000000000000000000000..a17aee4d3786a7716863a7d6991418250137ffe4 Binary files /dev/null and b/concepts/354_2.png differ diff --git a/concepts/354_3.png b/concepts/354_3.png new file mode 100644 index 0000000000000000000000000000000000000000..1d54186646af1de332189eb84281b900c4740b50 Binary files /dev/null and b/concepts/354_3.png differ diff --git a/concepts/354_6.png b/concepts/354_6.png new file mode 100644 index 0000000000000000000000000000000000000000..d231e5a06d259d82163a9436852332ba6b9718c4 Binary files /dev/null and b/concepts/354_6.png differ diff --git a/concepts/354_9.png b/concepts/354_9.png new file mode 100644 index 0000000000000000000000000000000000000000..b0665dac0d96581e60df7fc52f803b83d5c1a278 Binary files /dev/null and b/concepts/354_9.png differ diff --git a/concepts/355_0.png b/concepts/355_0.png new file mode 100644 index 0000000000000000000000000000000000000000..e4d8de7c54a25062cecf7f8bbcabba175cc2e0bb Binary files /dev/null and b/concepts/355_0.png differ diff --git a/concepts/355_1.png b/concepts/355_1.png new file mode 100644 index 0000000000000000000000000000000000000000..8067580e682f4d60c86a07d668fb6707a695e4d0 Binary files /dev/null and b/concepts/355_1.png differ diff --git a/concepts/355_11.png b/concepts/355_11.png new file mode 100644 index 0000000000000000000000000000000000000000..bd38b0ea8f347aab842ba5e5eabc7f59ffe4143f Binary files /dev/null and b/concepts/355_11.png differ diff --git a/concepts/355_2.png b/concepts/355_2.png new file mode 100644 index 0000000000000000000000000000000000000000..5f6b4c92285e98a3d3b01784f1168d0144c5b699 Binary files /dev/null and b/concepts/355_2.png differ diff --git a/concepts/355_3.png b/concepts/355_3.png new file mode 100644 index 0000000000000000000000000000000000000000..0ac5b16871ff05ec4e5a16733e81bd9487aed708 Binary files /dev/null and b/concepts/355_3.png differ diff --git a/concepts/355_5.png b/concepts/355_5.png new file mode 100644 index 0000000000000000000000000000000000000000..a7c579b030af9166bb39ab7018fe8b5428351cb5 Binary files /dev/null and b/concepts/355_5.png differ diff --git a/concepts/355_7.png b/concepts/355_7.png new file mode 100644 index 0000000000000000000000000000000000000000..bb5c42766facecf671ec9f93a4636923f52fb858 Binary files /dev/null and b/concepts/355_7.png differ diff --git a/concepts/355_8.png b/concepts/355_8.png new file mode 100644 index 0000000000000000000000000000000000000000..3fc7cdc23d1217b9417cb56cd48e3499ab019032 Binary files /dev/null and b/concepts/355_8.png differ diff --git a/concepts/356_0.png b/concepts/356_0.png new file mode 100644 index 0000000000000000000000000000000000000000..33d8b7692fc969864099200e671f4186df752837 Binary files /dev/null and b/concepts/356_0.png differ diff --git a/concepts/356_1.png b/concepts/356_1.png new file mode 100644 index 0000000000000000000000000000000000000000..c91daa6ed3ce3cc47f3d3993e120318921cf3ec2 Binary files /dev/null and b/concepts/356_1.png differ diff --git a/concepts/356_12.png b/concepts/356_12.png new file mode 100644 index 0000000000000000000000000000000000000000..eec4f37b8137f00371e35dcc56c61efa08faf2fe Binary files /dev/null and b/concepts/356_12.png differ diff --git a/concepts/356_3.png b/concepts/356_3.png new file mode 100644 index 0000000000000000000000000000000000000000..3154a5345f43964688175fff00b6e0030e23986e Binary files /dev/null and b/concepts/356_3.png differ diff --git a/concepts/356_4.png b/concepts/356_4.png new file mode 100644 index 0000000000000000000000000000000000000000..dc92231b4d484aaaa78812fdea42fff8d328d76c Binary files /dev/null and b/concepts/356_4.png differ diff --git a/concepts/356_5.png b/concepts/356_5.png new file mode 100644 index 0000000000000000000000000000000000000000..d995baec06c5522d8ea4a751ace9e0380eea3e3b Binary files /dev/null and b/concepts/356_5.png differ diff --git a/concepts/356_6.png b/concepts/356_6.png new file mode 100644 index 0000000000000000000000000000000000000000..6dd457175be5266ee320db2d6855d449faa096a3 Binary files /dev/null and b/concepts/356_6.png differ diff --git a/concepts/356_7.png b/concepts/356_7.png new file mode 100644 index 0000000000000000000000000000000000000000..b143cff2c34a55def83d23a40bb809c5e531d101 Binary files /dev/null and b/concepts/356_7.png differ diff --git a/concepts/357_0.png b/concepts/357_0.png new file mode 100644 index 0000000000000000000000000000000000000000..dade1f0ec76c2835a6890c6552ba1edbf6022242 Binary files /dev/null and b/concepts/357_0.png differ diff --git a/concepts/357_1.png b/concepts/357_1.png new file mode 100644 index 0000000000000000000000000000000000000000..ba70c322313018249066697320ebb9890dfad71f Binary files /dev/null and b/concepts/357_1.png differ diff --git a/concepts/357_2.png b/concepts/357_2.png new file mode 100644 index 0000000000000000000000000000000000000000..a3aa30ca9d6c0ec788a8eee92ae3528d238fa479 Binary files /dev/null and b/concepts/357_2.png differ diff --git a/concepts/357_3.png b/concepts/357_3.png new file mode 100644 index 0000000000000000000000000000000000000000..2d54e1eb39d2a2c26d6cd198b16b3d1bacb72c14 Binary files /dev/null and b/concepts/357_3.png differ diff --git a/concepts/357_4.png b/concepts/357_4.png new file mode 100644 index 0000000000000000000000000000000000000000..4d71ffa3ace48fe058eb082243415806fbaedeca Binary files /dev/null and b/concepts/357_4.png differ diff --git a/concepts/357_6.png b/concepts/357_6.png new file mode 100644 index 0000000000000000000000000000000000000000..490cb0bf2c66b621f0941cc0a875327da3708395 Binary files /dev/null and b/concepts/357_6.png differ diff --git a/concepts/357_7.png b/concepts/357_7.png new file mode 100644 index 0000000000000000000000000000000000000000..e6b72aaece8130a8993e16472b14a070c3ec9592 Binary files /dev/null and b/concepts/357_7.png differ diff --git a/concepts/357_8.png b/concepts/357_8.png new file mode 100644 index 0000000000000000000000000000000000000000..096433b81c17cfa27537d763ffc81a80fc5deec9 Binary files /dev/null and b/concepts/357_8.png differ diff --git a/concepts/358_0.png b/concepts/358_0.png new file mode 100644 index 0000000000000000000000000000000000000000..189ef3023fa91ae738f9e2b1e8aa7fc4da94da0e Binary files /dev/null and b/concepts/358_0.png differ diff --git a/concepts/358_10.png b/concepts/358_10.png new file mode 100644 index 0000000000000000000000000000000000000000..6316f7108d46e5aecabb9cbe5d05d877ebfc9604 Binary files /dev/null and b/concepts/358_10.png differ diff --git a/concepts/358_12.png b/concepts/358_12.png new file mode 100644 index 0000000000000000000000000000000000000000..e34e19cc9d92f92c6d70c3246ce5c7da40b0caa8 Binary files /dev/null and b/concepts/358_12.png differ diff --git a/concepts/358_14.png b/concepts/358_14.png new file mode 100644 index 0000000000000000000000000000000000000000..c636e7f73009345003cecc46b58b0e3d2938f545 Binary files /dev/null and b/concepts/358_14.png differ diff --git a/concepts/358_4.png b/concepts/358_4.png new file mode 100644 index 0000000000000000000000000000000000000000..394164550ffb1eedab02549ed06d98f4c2e609b0 Binary files /dev/null and b/concepts/358_4.png differ diff --git a/concepts/358_6.png b/concepts/358_6.png new file mode 100644 index 0000000000000000000000000000000000000000..77395c836d087b3a5a185ab7d0cb461562e7a756 Binary files /dev/null and b/concepts/358_6.png differ diff --git a/concepts/358_7.png b/concepts/358_7.png new file mode 100644 index 0000000000000000000000000000000000000000..7d7eb170754d9406c9c10572dacb09ba562fc920 Binary files /dev/null and b/concepts/358_7.png differ diff --git a/concepts/358_8.png b/concepts/358_8.png new file mode 100644 index 0000000000000000000000000000000000000000..b24c58a2a6a906c090b423ad75604f0b65c46cb0 Binary files /dev/null and b/concepts/358_8.png differ diff --git a/concepts/359_0.png b/concepts/359_0.png new file mode 100644 index 0000000000000000000000000000000000000000..1f634ac866caa6d8a8304f812b835c27bfe6693b Binary files /dev/null and b/concepts/359_0.png differ diff --git a/concepts/359_1.png b/concepts/359_1.png new file mode 100644 index 0000000000000000000000000000000000000000..cfe6ddc9d8b78a4dd51ed99c077726bd333763a9 Binary files /dev/null and b/concepts/359_1.png differ diff --git a/concepts/359_10.png b/concepts/359_10.png new file mode 100644 index 0000000000000000000000000000000000000000..c9d420dd36049c4fd2e915a928053653c123e4fa Binary files /dev/null and b/concepts/359_10.png differ diff --git a/concepts/359_2.png b/concepts/359_2.png new file mode 100644 index 0000000000000000000000000000000000000000..9483fc2be7a03640430eed1e0823fa5039ae4052 Binary files /dev/null and b/concepts/359_2.png differ diff --git a/concepts/359_3.png b/concepts/359_3.png new file mode 100644 index 0000000000000000000000000000000000000000..9833304597412d11aa1eae5a4fd6dd7b9a4bca26 Binary files /dev/null and b/concepts/359_3.png differ diff --git a/concepts/359_5.png b/concepts/359_5.png new file mode 100644 index 0000000000000000000000000000000000000000..4a57c289bc07504c644601a155f8b5ca6ec82e04 Binary files /dev/null and b/concepts/359_5.png differ diff --git a/concepts/359_6.png b/concepts/359_6.png new file mode 100644 index 0000000000000000000000000000000000000000..fc63dba44e2fb8854275ab4ea4ecb0b60274fe95 Binary files /dev/null and b/concepts/359_6.png differ diff --git a/concepts/359_9.png b/concepts/359_9.png new file mode 100644 index 0000000000000000000000000000000000000000..61beab8cac071490641e07b713c38b2165cadd53 Binary files /dev/null and b/concepts/359_9.png differ diff --git a/concepts/35_0.png b/concepts/35_0.png new file mode 100644 index 0000000000000000000000000000000000000000..a9ccd9b3382a8c71de36e7d5765e337020d16a34 Binary files /dev/null and b/concepts/35_0.png differ diff --git a/concepts/35_1.png b/concepts/35_1.png new file mode 100644 index 0000000000000000000000000000000000000000..4722e69787684e2d523edf7a7fde1000a43f6b1e Binary files /dev/null and b/concepts/35_1.png differ diff --git a/concepts/35_11.png b/concepts/35_11.png new file mode 100644 index 0000000000000000000000000000000000000000..0b07c9555a57b27b208a613656c892cf865e7999 Binary files /dev/null and b/concepts/35_11.png differ diff --git a/concepts/35_4.png b/concepts/35_4.png new file mode 100644 index 0000000000000000000000000000000000000000..07fef955eb0914c45e1a4bed124ad1b1be0348a8 Binary files /dev/null and b/concepts/35_4.png differ diff --git a/concepts/35_5.png b/concepts/35_5.png new file mode 100644 index 0000000000000000000000000000000000000000..c60ae46823bb3de42586f74d96852e91135c2611 Binary files /dev/null and b/concepts/35_5.png differ diff --git a/concepts/35_6.png b/concepts/35_6.png new file mode 100644 index 0000000000000000000000000000000000000000..5a4e1e758c16c5899438e83ed5959356d7997a30 Binary files /dev/null and b/concepts/35_6.png differ diff --git a/concepts/360_0.png b/concepts/360_0.png new file mode 100644 index 0000000000000000000000000000000000000000..24cf1be6b2771f0ac1ecfe9985aed2890f080b93 Binary files /dev/null and b/concepts/360_0.png differ diff --git a/concepts/360_1.png b/concepts/360_1.png new file mode 100644 index 0000000000000000000000000000000000000000..d57b6c72989a61dcf7cd48a77ed2ed792d525b39 Binary files /dev/null and b/concepts/360_1.png differ diff --git a/concepts/360_2.png b/concepts/360_2.png new file mode 100644 index 0000000000000000000000000000000000000000..67f97ef3c1aaad099422055509329a8de5bcbcfd Binary files /dev/null and b/concepts/360_2.png differ diff --git a/concepts/360_3.png b/concepts/360_3.png new file mode 100644 index 0000000000000000000000000000000000000000..ab14a783ba93a2153aeccaf4e991950d80b4b8f9 Binary files /dev/null and b/concepts/360_3.png differ diff --git a/concepts/360_5.png b/concepts/360_5.png new file mode 100644 index 0000000000000000000000000000000000000000..a96a65d7963d1f7c07314c754de9e6c2785b3a43 Binary files /dev/null and b/concepts/360_5.png differ diff --git a/concepts/360_6.png b/concepts/360_6.png new file mode 100644 index 0000000000000000000000000000000000000000..0f79976889c8a8928bc2599ad8c15e3ac8011f66 Binary files /dev/null and b/concepts/360_6.png differ diff --git a/concepts/360_7.png b/concepts/360_7.png new file mode 100644 index 0000000000000000000000000000000000000000..341d1444274ee79d91ccc7d0d726e3f9131078c1 Binary files /dev/null and b/concepts/360_7.png differ diff --git a/concepts/360_8.png b/concepts/360_8.png new file mode 100644 index 0000000000000000000000000000000000000000..84ede420e2bf299d0943f82f05aeaae1138286ee Binary files /dev/null and b/concepts/360_8.png differ diff --git a/concepts/361_14.png b/concepts/361_14.png new file mode 100644 index 0000000000000000000000000000000000000000..573cd0ddca6c43e34965c9cea126c193131061cb Binary files /dev/null and b/concepts/361_14.png differ diff --git a/concepts/361_3.png b/concepts/361_3.png new file mode 100644 index 0000000000000000000000000000000000000000..6e97281f623a324c27df46ced3af569a45027203 Binary files /dev/null and b/concepts/361_3.png differ diff --git a/concepts/361_4.png b/concepts/361_4.png new file mode 100644 index 0000000000000000000000000000000000000000..10990648fbc32a6030a0632f5da2698813b310c0 Binary files /dev/null and b/concepts/361_4.png differ diff --git a/concepts/361_9.png b/concepts/361_9.png new file mode 100644 index 0000000000000000000000000000000000000000..aa25a41f90b697b5f61d1c67200c52bef6f20b6f Binary files /dev/null and b/concepts/361_9.png differ diff --git a/concepts/362_1.png b/concepts/362_1.png new file mode 100644 index 0000000000000000000000000000000000000000..03472f7f8cc22a772ae432e23e800a02447a5c43 Binary files /dev/null and b/concepts/362_1.png differ diff --git a/concepts/362_11.png b/concepts/362_11.png new file mode 100644 index 0000000000000000000000000000000000000000..d91cb9ed0ac75634b0140276015a7b4da62ccc21 Binary files /dev/null and b/concepts/362_11.png differ diff --git a/concepts/362_16.png b/concepts/362_16.png new file mode 100644 index 0000000000000000000000000000000000000000..22f239348390c076e646c1291e5642db42e9ebca Binary files /dev/null and b/concepts/362_16.png differ diff --git a/concepts/362_17.png b/concepts/362_17.png new file mode 100644 index 0000000000000000000000000000000000000000..2e08c43757edd82b0d185952b1664c4498f63d4b Binary files /dev/null and b/concepts/362_17.png differ diff --git a/concepts/362_18.png b/concepts/362_18.png new file mode 100644 index 0000000000000000000000000000000000000000..ff814b07a421d15e620317914bb80c4abd9fc87f Binary files /dev/null and b/concepts/362_18.png differ diff --git a/concepts/362_2.png b/concepts/362_2.png new file mode 100644 index 0000000000000000000000000000000000000000..597ffa1c6f1532902be28ed6200cd3d4bdfe027d Binary files /dev/null and b/concepts/362_2.png differ diff --git a/concepts/362_4.png b/concepts/362_4.png new file mode 100644 index 0000000000000000000000000000000000000000..5de8a0d60e45bfd7377ff68a63d7369ab4d0ef31 Binary files /dev/null and b/concepts/362_4.png differ diff --git a/concepts/362_7.png b/concepts/362_7.png new file mode 100644 index 0000000000000000000000000000000000000000..baece742fbb028884555f8243f28632af324082e Binary files /dev/null and b/concepts/362_7.png differ diff --git a/concepts/363_0.png b/concepts/363_0.png new file mode 100644 index 0000000000000000000000000000000000000000..102e9edc26d536edcbf12a4277b11f46fc02ce41 Binary files /dev/null and b/concepts/363_0.png differ diff --git a/concepts/363_1.png b/concepts/363_1.png new file mode 100644 index 0000000000000000000000000000000000000000..8ff288ee5142255641d80603537e51a6d04b3582 Binary files /dev/null and b/concepts/363_1.png differ diff --git a/concepts/363_10.png b/concepts/363_10.png new file mode 100644 index 0000000000000000000000000000000000000000..6a24f1734421d475a33d24e964094d0370a1bbe3 Binary files /dev/null and b/concepts/363_10.png differ diff --git a/concepts/363_11.png b/concepts/363_11.png new file mode 100644 index 0000000000000000000000000000000000000000..5bbecccf184d92b87ef8c7eca3d51a9e40653f29 Binary files /dev/null and b/concepts/363_11.png differ diff --git a/concepts/363_3.png b/concepts/363_3.png new file mode 100644 index 0000000000000000000000000000000000000000..39624ee850d7695445f3c71cb90cdfe2c7fb478e Binary files /dev/null and b/concepts/363_3.png differ diff --git a/concepts/363_4.png b/concepts/363_4.png new file mode 100644 index 0000000000000000000000000000000000000000..bec243500ca515673c2941e512872f6e7bb71761 Binary files /dev/null and b/concepts/363_4.png differ diff --git a/concepts/363_7.png b/concepts/363_7.png new file mode 100644 index 0000000000000000000000000000000000000000..ce72a69ac9b79049b9c674e03c98c25143344854 Binary files /dev/null and b/concepts/363_7.png differ diff --git a/concepts/363_9.png b/concepts/363_9.png new file mode 100644 index 0000000000000000000000000000000000000000..688b59e0e74a42e414b9be367d664c1cbb5f670d Binary files /dev/null and b/concepts/363_9.png differ diff --git a/concepts/364_0.png b/concepts/364_0.png new file mode 100644 index 0000000000000000000000000000000000000000..df15a32eb58df3c44408da0fd6c62ec347973e99 Binary files /dev/null and b/concepts/364_0.png differ diff --git a/concepts/364_1.png b/concepts/364_1.png new file mode 100644 index 0000000000000000000000000000000000000000..648bec1ad6348f98a6ba95727f9213db15fffb05 Binary files /dev/null and b/concepts/364_1.png differ diff --git a/concepts/364_2.png b/concepts/364_2.png new file mode 100644 index 0000000000000000000000000000000000000000..9f78bb94c4f195d6cbb0634a6e8d4c5048952191 Binary files /dev/null and b/concepts/364_2.png differ diff --git a/concepts/364_3.png b/concepts/364_3.png new file mode 100644 index 0000000000000000000000000000000000000000..d3e5d9e3f3790f3c277af63d035f3fc41c155ad1 Binary files /dev/null and b/concepts/364_3.png differ diff --git a/concepts/364_4.png b/concepts/364_4.png new file mode 100644 index 0000000000000000000000000000000000000000..9b2ad630bcd4a10b1f1b63308b77d027def3a897 Binary files /dev/null and b/concepts/364_4.png differ diff --git a/concepts/364_6.png b/concepts/364_6.png new file mode 100644 index 0000000000000000000000000000000000000000..a76ebd004508de7963e33d10f2c7d10ec78ba10b Binary files /dev/null and b/concepts/364_6.png differ diff --git a/concepts/364_7.png b/concepts/364_7.png new file mode 100644 index 0000000000000000000000000000000000000000..c16c865fc11bd1724328cbb94d70ef5235208996 Binary files /dev/null and b/concepts/364_7.png differ diff --git a/concepts/364_8.png b/concepts/364_8.png new file mode 100644 index 0000000000000000000000000000000000000000..30452388e4c21ecc21eb2381c1156c86ed231dbc Binary files /dev/null and b/concepts/364_8.png differ diff --git a/concepts/365_0.png b/concepts/365_0.png new file mode 100644 index 0000000000000000000000000000000000000000..a091d7b3b12e0ff06e36ec7af5287d1c1b66b5f9 Binary files /dev/null and b/concepts/365_0.png differ diff --git a/concepts/365_1.png b/concepts/365_1.png new file mode 100644 index 0000000000000000000000000000000000000000..6887dbb9399f47035bce35df694c366081aabf7d Binary files /dev/null and b/concepts/365_1.png differ diff --git a/concepts/365_2.png b/concepts/365_2.png new file mode 100644 index 0000000000000000000000000000000000000000..2b841c68c0c69b815323f5388e6391cd409332e2 Binary files /dev/null and b/concepts/365_2.png differ diff --git a/concepts/365_3.png b/concepts/365_3.png new file mode 100644 index 0000000000000000000000000000000000000000..bfb0e8af92d7e76004419a586b2e7c8a4c266730 Binary files /dev/null and b/concepts/365_3.png differ diff --git a/concepts/365_4.png b/concepts/365_4.png new file mode 100644 index 0000000000000000000000000000000000000000..167f6e8f93acc7c79824de24cc9d7e5944d86cb6 Binary files /dev/null and b/concepts/365_4.png differ diff --git a/concepts/365_6.png b/concepts/365_6.png new file mode 100644 index 0000000000000000000000000000000000000000..dfe5e61e4c0f5256e837c54a8f895c2d1dcbead0 Binary files /dev/null and b/concepts/365_6.png differ diff --git a/concepts/365_8.png b/concepts/365_8.png new file mode 100644 index 0000000000000000000000000000000000000000..cdea358f378dabf2b1d7d8c5923f0ce391197b07 Binary files /dev/null and b/concepts/365_8.png differ diff --git a/concepts/365_9.png b/concepts/365_9.png new file mode 100644 index 0000000000000000000000000000000000000000..de0a239f7c8d1e66f5fe4358845fc06551f0f2e5 Binary files /dev/null and b/concepts/365_9.png differ diff --git a/concepts/366_0.png b/concepts/366_0.png new file mode 100644 index 0000000000000000000000000000000000000000..b57660733bfed04c18ff3d974a039cee56bb4925 Binary files /dev/null and b/concepts/366_0.png differ diff --git a/concepts/366_10.png b/concepts/366_10.png new file mode 100644 index 0000000000000000000000000000000000000000..a254f1450632c0f37d61cbd17c4bdfdb36176d0e Binary files /dev/null and b/concepts/366_10.png differ diff --git a/concepts/366_11.png b/concepts/366_11.png new file mode 100644 index 0000000000000000000000000000000000000000..1f482dd1fa0d6eb740d9975b6240788180a1b245 Binary files /dev/null and b/concepts/366_11.png differ diff --git a/concepts/366_2.png b/concepts/366_2.png new file mode 100644 index 0000000000000000000000000000000000000000..7c2f82363a4371f0af3094df832c5b4624e14593 Binary files /dev/null and b/concepts/366_2.png differ diff --git a/concepts/366_3.png b/concepts/366_3.png new file mode 100644 index 0000000000000000000000000000000000000000..4c37e000c31f5a32610cf447eef13b6c78231a9c Binary files /dev/null and b/concepts/366_3.png differ diff --git a/concepts/366_5.png b/concepts/366_5.png new file mode 100644 index 0000000000000000000000000000000000000000..73292b39a8821401c96bf8ca969e93f1769a57d1 Binary files /dev/null and b/concepts/366_5.png differ diff --git a/concepts/366_7.png b/concepts/366_7.png new file mode 100644 index 0000000000000000000000000000000000000000..7e4945cb82c6f881f0fc473d19c98de677a1af59 Binary files /dev/null and b/concepts/366_7.png differ diff --git a/concepts/366_9.png b/concepts/366_9.png new file mode 100644 index 0000000000000000000000000000000000000000..48cccdbec300812d48c73f7bae745d4ad4924500 Binary files /dev/null and b/concepts/366_9.png differ diff --git a/concepts/367_0.png b/concepts/367_0.png new file mode 100644 index 0000000000000000000000000000000000000000..c05f3081fcbfab7fb5f1d0178359fcb21aa19605 Binary files /dev/null and b/concepts/367_0.png differ diff --git a/concepts/367_1.png b/concepts/367_1.png new file mode 100644 index 0000000000000000000000000000000000000000..2c0472c7d817889558a8fb966ca369f55dc0511b Binary files /dev/null and b/concepts/367_1.png differ diff --git a/concepts/367_10.png b/concepts/367_10.png new file mode 100644 index 0000000000000000000000000000000000000000..6a9593e5b05462b8ac443a36c720638dbd647f45 Binary files /dev/null and b/concepts/367_10.png differ diff --git a/concepts/367_11.png b/concepts/367_11.png new file mode 100644 index 0000000000000000000000000000000000000000..5f9cfbb1c0bbc3a301e44445fc7047b6337695bf Binary files /dev/null and b/concepts/367_11.png differ diff --git a/concepts/367_3.png b/concepts/367_3.png new file mode 100644 index 0000000000000000000000000000000000000000..6251f5f7f7274e03965386e631e07ab07114d226 Binary files /dev/null and b/concepts/367_3.png differ diff --git a/concepts/367_5.png b/concepts/367_5.png new file mode 100644 index 0000000000000000000000000000000000000000..51b3a8a1446405e541a435560700b3c30923b427 Binary files /dev/null and b/concepts/367_5.png differ diff --git a/concepts/367_6.png b/concepts/367_6.png new file mode 100644 index 0000000000000000000000000000000000000000..031e4dc9eae1319ff4f85a5a3110522a7932983a Binary files /dev/null and b/concepts/367_6.png differ diff --git a/concepts/367_8.png b/concepts/367_8.png new file mode 100644 index 0000000000000000000000000000000000000000..4b82d02c408af58d1dcdce70477609d725c6a15d Binary files /dev/null and b/concepts/367_8.png differ diff --git a/concepts/368_17.png b/concepts/368_17.png new file mode 100644 index 0000000000000000000000000000000000000000..c64cdd1f3cf2ae387e214d9d78f8f73d2bb6b219 Binary files /dev/null and b/concepts/368_17.png differ diff --git a/concepts/368_6.png b/concepts/368_6.png new file mode 100644 index 0000000000000000000000000000000000000000..fbd1e32f0445956b17fab1055bb87831e114264c Binary files /dev/null and b/concepts/368_6.png differ diff --git a/concepts/368_8.png b/concepts/368_8.png new file mode 100644 index 0000000000000000000000000000000000000000..007c784aa093f602836b99a047a7cd7ddd5d94ec Binary files /dev/null and b/concepts/368_8.png differ diff --git a/concepts/368_9.png b/concepts/368_9.png new file mode 100644 index 0000000000000000000000000000000000000000..301d26a76d0ecbfee321734273524b5b3dced8d6 Binary files /dev/null and b/concepts/368_9.png differ diff --git a/concepts/369_0.png b/concepts/369_0.png new file mode 100644 index 0000000000000000000000000000000000000000..4d3b54fbf9bfce616145bca8b083defae8367605 Binary files /dev/null and b/concepts/369_0.png differ diff --git a/concepts/369_10.png b/concepts/369_10.png new file mode 100644 index 0000000000000000000000000000000000000000..e875970edd62fa82d1ccf7ac155a7dba9205d2af Binary files /dev/null and b/concepts/369_10.png differ diff --git a/concepts/369_16.png b/concepts/369_16.png new file mode 100644 index 0000000000000000000000000000000000000000..80e837fdf0aa366909da4743314354c797213478 Binary files /dev/null and b/concepts/369_16.png differ diff --git a/concepts/369_3.png b/concepts/369_3.png new file mode 100644 index 0000000000000000000000000000000000000000..2c695679596f57aab4b93f80023902bf8cf1e8be Binary files /dev/null and b/concepts/369_3.png differ diff --git a/concepts/369_4.png b/concepts/369_4.png new file mode 100644 index 0000000000000000000000000000000000000000..96a9bd1531754d5ccf72b260f4930dc3e4226429 Binary files /dev/null and b/concepts/369_4.png differ diff --git a/concepts/369_5.png b/concepts/369_5.png new file mode 100644 index 0000000000000000000000000000000000000000..03a32d3e1d70d3731a308051e08d360b3ab2532d Binary files /dev/null and b/concepts/369_5.png differ diff --git a/concepts/369_8.png b/concepts/369_8.png new file mode 100644 index 0000000000000000000000000000000000000000..9aa85a9aaa5bc20e426c64faf7fc1b7b041c67d3 Binary files /dev/null and b/concepts/369_8.png differ diff --git a/concepts/369_9.png b/concepts/369_9.png new file mode 100644 index 0000000000000000000000000000000000000000..db3d79a2b54f127132863e6a5cbc47c50645b2af Binary files /dev/null and b/concepts/369_9.png differ diff --git a/concepts/36_10.png b/concepts/36_10.png new file mode 100644 index 0000000000000000000000000000000000000000..c6acc60c3265b17c4466e8a0f2f3c49ad3ab4579 Binary files /dev/null and b/concepts/36_10.png differ diff --git a/concepts/36_19.png b/concepts/36_19.png new file mode 100644 index 0000000000000000000000000000000000000000..7c32013e7b27e03ab161d9718a5b8edac14b67b5 Binary files /dev/null and b/concepts/36_19.png differ diff --git a/concepts/36_22.png b/concepts/36_22.png new file mode 100644 index 0000000000000000000000000000000000000000..7bd27c101b1fac4682271dcf26e29b3b3b5815c4 Binary files /dev/null and b/concepts/36_22.png differ diff --git a/concepts/36_5.png b/concepts/36_5.png new file mode 100644 index 0000000000000000000000000000000000000000..3aaf8a8ad5e502e0e2c1031077f2ea32ace89298 Binary files /dev/null and b/concepts/36_5.png differ diff --git a/concepts/370_17.png b/concepts/370_17.png new file mode 100644 index 0000000000000000000000000000000000000000..9035016ccf6194c7e25573fbed93a17c9a05c367 Binary files /dev/null and b/concepts/370_17.png differ diff --git a/concepts/370_2.png b/concepts/370_2.png new file mode 100644 index 0000000000000000000000000000000000000000..be5c324e4342fef4ea77af18cb26739e485e4349 Binary files /dev/null and b/concepts/370_2.png differ diff --git a/concepts/370_3.png b/concepts/370_3.png new file mode 100644 index 0000000000000000000000000000000000000000..f5ad57aa124dfc8ec575fb1358b9fe57347afe96 Binary files /dev/null and b/concepts/370_3.png differ diff --git a/concepts/370_5.png b/concepts/370_5.png new file mode 100644 index 0000000000000000000000000000000000000000..b8de7fa1caf258747c9fc38c7be6977f0ce5da18 Binary files /dev/null and b/concepts/370_5.png differ diff --git a/concepts/370_6.png b/concepts/370_6.png new file mode 100644 index 0000000000000000000000000000000000000000..27bccf6cad84fabc565af9675c6380b642f8e2b7 Binary files /dev/null and b/concepts/370_6.png differ diff --git a/concepts/370_7.png b/concepts/370_7.png new file mode 100644 index 0000000000000000000000000000000000000000..a9b2d700f7227465ef2a3b1c66ef2b2ebf3e488b Binary files /dev/null and b/concepts/370_7.png differ diff --git a/concepts/370_9.png b/concepts/370_9.png new file mode 100644 index 0000000000000000000000000000000000000000..00ef98db75abaed5be04fffd10ccd86a3d6bcb9a Binary files /dev/null and b/concepts/370_9.png differ diff --git a/concepts/371_0.png b/concepts/371_0.png new file mode 100644 index 0000000000000000000000000000000000000000..0b0786ffd7120f4929ff0e56296fcfe0589e3b80 Binary files /dev/null and b/concepts/371_0.png differ diff --git a/concepts/371_1.png b/concepts/371_1.png new file mode 100644 index 0000000000000000000000000000000000000000..d41d4f5f2794cfa0121bac7de1bc073e67bd9691 Binary files /dev/null and b/concepts/371_1.png differ diff --git a/concepts/371_3.png b/concepts/371_3.png new file mode 100644 index 0000000000000000000000000000000000000000..16e48faa969ffdce316792403bfb4bc7acab11b2 Binary files /dev/null and b/concepts/371_3.png differ diff --git a/concepts/371_4.png b/concepts/371_4.png new file mode 100644 index 0000000000000000000000000000000000000000..31c2246fe440a076b2b44d4775b69e8e60dc1117 Binary files /dev/null and b/concepts/371_4.png differ diff --git a/concepts/371_5.png b/concepts/371_5.png new file mode 100644 index 0000000000000000000000000000000000000000..80f5c522c8c73480c4cfe99c0bc2e499e65d8d04 Binary files /dev/null and b/concepts/371_5.png differ diff --git a/concepts/371_7.png b/concepts/371_7.png new file mode 100644 index 0000000000000000000000000000000000000000..e2f636e8d20e0b402c3927759bd98828da7c5bd4 Binary files /dev/null and b/concepts/371_7.png differ diff --git a/concepts/371_8.png b/concepts/371_8.png new file mode 100644 index 0000000000000000000000000000000000000000..2a93f6c30da21e009ecb17a86519c9a7d951b303 Binary files /dev/null and b/concepts/371_8.png differ diff --git a/concepts/371_9.png b/concepts/371_9.png new file mode 100644 index 0000000000000000000000000000000000000000..442e753d0d7617de3ebe573fcc673be5872f1a48 Binary files /dev/null and b/concepts/371_9.png differ diff --git a/concepts/372_0.png b/concepts/372_0.png new file mode 100644 index 0000000000000000000000000000000000000000..f684f4021aaadd107ae196321ae8b041505f1329 Binary files /dev/null and b/concepts/372_0.png differ diff --git a/concepts/372_10.png b/concepts/372_10.png new file mode 100644 index 0000000000000000000000000000000000000000..f7b1d06280d5a104accf995f05bad86bc6fc953c Binary files /dev/null and b/concepts/372_10.png differ diff --git a/concepts/372_11.png b/concepts/372_11.png new file mode 100644 index 0000000000000000000000000000000000000000..bce3e453c4327956fe6bb4d6319ce533655121be Binary files /dev/null and b/concepts/372_11.png differ diff --git a/concepts/372_14.png b/concepts/372_14.png new file mode 100644 index 0000000000000000000000000000000000000000..b4670eb98a109856717e32c421ad16f715cb6fd4 Binary files /dev/null and b/concepts/372_14.png differ diff --git a/concepts/372_2.png b/concepts/372_2.png new file mode 100644 index 0000000000000000000000000000000000000000..cd3814b8395996bf17b5da3bd10c2884757e5c52 Binary files /dev/null and b/concepts/372_2.png differ diff --git a/concepts/372_5.png b/concepts/372_5.png new file mode 100644 index 0000000000000000000000000000000000000000..08eae137313e7086a5d7f9926a09592d86429ac6 Binary files /dev/null and b/concepts/372_5.png differ diff --git a/concepts/372_7.png b/concepts/372_7.png new file mode 100644 index 0000000000000000000000000000000000000000..a070941c3e061e21e5bcd4fe1c8be3686ed261d9 Binary files /dev/null and b/concepts/372_7.png differ diff --git a/concepts/372_8.png b/concepts/372_8.png new file mode 100644 index 0000000000000000000000000000000000000000..91d7e8ebe4d98d2804f72d249fa3cd6d37e2027d Binary files /dev/null and b/concepts/372_8.png differ diff --git a/concepts/373_0.png b/concepts/373_0.png new file mode 100644 index 0000000000000000000000000000000000000000..c57146d84fc8e3460f65dfc275a4d9cf65cb16c2 Binary files /dev/null and b/concepts/373_0.png differ diff --git a/concepts/373_10.png b/concepts/373_10.png new file mode 100644 index 0000000000000000000000000000000000000000..1ba7950e3c7db91a94364c594e44ac05c7370468 Binary files /dev/null and b/concepts/373_10.png differ diff --git a/concepts/373_14.png b/concepts/373_14.png new file mode 100644 index 0000000000000000000000000000000000000000..db6e76d3ae55811cef0283adea8f0acab373465d Binary files /dev/null and b/concepts/373_14.png differ diff --git a/concepts/373_2.png b/concepts/373_2.png new file mode 100644 index 0000000000000000000000000000000000000000..fdaa57e2509ce42ea27648486046e4e69c469430 Binary files /dev/null and b/concepts/373_2.png differ diff --git a/concepts/373_4.png b/concepts/373_4.png new file mode 100644 index 0000000000000000000000000000000000000000..a1ee62d474188bfe4b0134d09207cf8a12c18083 Binary files /dev/null and b/concepts/373_4.png differ diff --git a/concepts/373_5.png b/concepts/373_5.png new file mode 100644 index 0000000000000000000000000000000000000000..ad6bc1e4f813f30b23fb3d9583a3ac5da8ae594f Binary files /dev/null and b/concepts/373_5.png differ diff --git a/concepts/373_6.png b/concepts/373_6.png new file mode 100644 index 0000000000000000000000000000000000000000..5a4a88eb2540d0f3ef188c904cc7efd5b0f418a1 Binary files /dev/null and b/concepts/373_6.png differ diff --git a/concepts/373_7.png b/concepts/373_7.png new file mode 100644 index 0000000000000000000000000000000000000000..2cbfa2b8e09c6f6453cef877512f9bedadbc82fd Binary files /dev/null and b/concepts/373_7.png differ diff --git a/concepts/374_0.png b/concepts/374_0.png new file mode 100644 index 0000000000000000000000000000000000000000..cc3290b0804bd768df12e71bd2a98ed36ceba0f6 Binary files /dev/null and b/concepts/374_0.png differ diff --git a/concepts/374_1.png b/concepts/374_1.png new file mode 100644 index 0000000000000000000000000000000000000000..819319b9dec5e10bc260022309699843e777e58c Binary files /dev/null and b/concepts/374_1.png differ diff --git a/concepts/374_2.png b/concepts/374_2.png new file mode 100644 index 0000000000000000000000000000000000000000..32b7fdb4306d454cb3a9ca39c23fc53c1fea8ee0 Binary files /dev/null and b/concepts/374_2.png differ diff --git a/concepts/374_3.png b/concepts/374_3.png new file mode 100644 index 0000000000000000000000000000000000000000..34e8aa17c3d9dcf300229ca0c73270591c3e9448 Binary files /dev/null and b/concepts/374_3.png differ diff --git a/concepts/374_5.png b/concepts/374_5.png new file mode 100644 index 0000000000000000000000000000000000000000..b5fe7095261b716da7e43d571ceefc713eea2369 Binary files /dev/null and b/concepts/374_5.png differ diff --git a/concepts/374_7.png b/concepts/374_7.png new file mode 100644 index 0000000000000000000000000000000000000000..eee03220a50301c0be901037febcd3aeb76c45ce Binary files /dev/null and b/concepts/374_7.png differ diff --git a/concepts/374_8.png b/concepts/374_8.png new file mode 100644 index 0000000000000000000000000000000000000000..0781f30f2658d8ec0d076500edf1c30dee60cfc5 Binary files /dev/null and b/concepts/374_8.png differ diff --git a/concepts/374_9.png b/concepts/374_9.png new file mode 100644 index 0000000000000000000000000000000000000000..f323404cd35e8338de29afdc0170bf100ddf94ce Binary files /dev/null and b/concepts/374_9.png differ diff --git a/concepts/375_0.png b/concepts/375_0.png new file mode 100644 index 0000000000000000000000000000000000000000..88a1912c6cd52d0df924bfaf452667720c0df2bb Binary files /dev/null and b/concepts/375_0.png differ diff --git a/concepts/375_1.png b/concepts/375_1.png new file mode 100644 index 0000000000000000000000000000000000000000..a293578c1b31818f9d9eed70b5d6eb157dd13161 Binary files /dev/null and b/concepts/375_1.png differ diff --git a/concepts/375_12.png b/concepts/375_12.png new file mode 100644 index 0000000000000000000000000000000000000000..9c59e8f559ec79cc09fa8c2220f97395be9ef4c8 Binary files /dev/null and b/concepts/375_12.png differ diff --git a/concepts/375_13.png b/concepts/375_13.png new file mode 100644 index 0000000000000000000000000000000000000000..1c52d867850bd435dd3602e6fb245a32635bdf68 Binary files /dev/null and b/concepts/375_13.png differ diff --git a/concepts/375_3.png b/concepts/375_3.png new file mode 100644 index 0000000000000000000000000000000000000000..c6a17482f7b1b6c4277c0e96cc2c799452254ee2 Binary files /dev/null and b/concepts/375_3.png differ diff --git a/concepts/375_5.png b/concepts/375_5.png new file mode 100644 index 0000000000000000000000000000000000000000..c29709704f1bdd90d0ed3f68877f16a76c8eef3f Binary files /dev/null and b/concepts/375_5.png differ diff --git a/concepts/375_7.png b/concepts/375_7.png new file mode 100644 index 0000000000000000000000000000000000000000..10ea539bcae8b8e27b0c490c9f95ff247b08cab0 Binary files /dev/null and b/concepts/375_7.png differ diff --git a/concepts/375_9.png b/concepts/375_9.png new file mode 100644 index 0000000000000000000000000000000000000000..91820ff2a211eeaf8591459352ef42a3b4a70631 Binary files /dev/null and b/concepts/375_9.png differ diff --git a/concepts/376_0.png b/concepts/376_0.png new file mode 100644 index 0000000000000000000000000000000000000000..12d055aecc5bd23845b3f90db399ddad75f14b33 Binary files /dev/null and b/concepts/376_0.png differ diff --git a/concepts/376_10.png b/concepts/376_10.png new file mode 100644 index 0000000000000000000000000000000000000000..66444be31cb3b02b46391dab764e8fbcbf8d2565 Binary files /dev/null and b/concepts/376_10.png differ diff --git a/concepts/376_11.png b/concepts/376_11.png new file mode 100644 index 0000000000000000000000000000000000000000..572b4a0636f9a43d757f0abcb2d649b2b590e55a Binary files /dev/null and b/concepts/376_11.png differ diff --git a/concepts/376_12.png b/concepts/376_12.png new file mode 100644 index 0000000000000000000000000000000000000000..3899d9b9635e76e09b3f78496a91e416336a7062 Binary files /dev/null and b/concepts/376_12.png differ diff --git a/concepts/376_16.png b/concepts/376_16.png new file mode 100644 index 0000000000000000000000000000000000000000..733aa19526f004fd90448436a877403ef32687ca Binary files /dev/null and b/concepts/376_16.png differ diff --git a/concepts/376_4.png b/concepts/376_4.png new file mode 100644 index 0000000000000000000000000000000000000000..8b27c5cb497adb0bf105604250d0c412f7b1cc74 Binary files /dev/null and b/concepts/376_4.png differ diff --git a/concepts/376_5.png b/concepts/376_5.png new file mode 100644 index 0000000000000000000000000000000000000000..ee06900584bb7f30c8cc012819d09d555708e27b Binary files /dev/null and b/concepts/376_5.png differ diff --git a/concepts/376_8.png b/concepts/376_8.png new file mode 100644 index 0000000000000000000000000000000000000000..aaa7bcff3d1dfaffd9c22827a9939e6f5235c907 Binary files /dev/null and b/concepts/376_8.png differ diff --git a/concepts/377_0.png b/concepts/377_0.png new file mode 100644 index 0000000000000000000000000000000000000000..a5e221cdc8fa99830210bef2e6f02c1fe8f84e3b Binary files /dev/null and b/concepts/377_0.png differ diff --git a/concepts/377_1.png b/concepts/377_1.png new file mode 100644 index 0000000000000000000000000000000000000000..be4fd474b515f4166d38535940dfa296db2944e7 Binary files /dev/null and b/concepts/377_1.png differ diff --git a/concepts/377_2.png b/concepts/377_2.png new file mode 100644 index 0000000000000000000000000000000000000000..81e219d7fb51e08e6709aa2d862fd2b3f987f7a9 Binary files /dev/null and b/concepts/377_2.png differ diff --git a/concepts/377_3.png b/concepts/377_3.png new file mode 100644 index 0000000000000000000000000000000000000000..dbe62f7112ef65a9eb891b75a64015a8947aadb5 Binary files /dev/null and b/concepts/377_3.png differ diff --git a/concepts/377_4.png b/concepts/377_4.png new file mode 100644 index 0000000000000000000000000000000000000000..2c7e23999fc8edc23f190388617417701b441ea3 Binary files /dev/null and b/concepts/377_4.png differ diff --git a/concepts/377_6.png b/concepts/377_6.png new file mode 100644 index 0000000000000000000000000000000000000000..e6e4a002b8ff2eae4579ded4bfbc8a67ea426ebf Binary files /dev/null and b/concepts/377_6.png differ diff --git a/concepts/377_7.png b/concepts/377_7.png new file mode 100644 index 0000000000000000000000000000000000000000..1d2c9147230b7668ef095c4bfd63b3ca1471fe80 Binary files /dev/null and b/concepts/377_7.png differ diff --git a/concepts/377_8.png b/concepts/377_8.png new file mode 100644 index 0000000000000000000000000000000000000000..07d8fd75e5382766ab0ea42827f734427cdae4e8 Binary files /dev/null and b/concepts/377_8.png differ diff --git a/concepts/378_0.png b/concepts/378_0.png new file mode 100644 index 0000000000000000000000000000000000000000..86ccab90b7a6424a6631b76c3bed4f6a5ad061fd Binary files /dev/null and b/concepts/378_0.png differ diff --git a/concepts/378_1.png b/concepts/378_1.png new file mode 100644 index 0000000000000000000000000000000000000000..06952c2093077a150a532412bde8af0c3f5ba280 Binary files /dev/null and b/concepts/378_1.png differ diff --git a/concepts/378_2.png b/concepts/378_2.png new file mode 100644 index 0000000000000000000000000000000000000000..15ec494413db8636b5a490e060807c6cb822df3f Binary files /dev/null and b/concepts/378_2.png differ diff --git a/concepts/378_3.png b/concepts/378_3.png new file mode 100644 index 0000000000000000000000000000000000000000..c8280e72ed292ebca59a9c567d3154aaa039d15c Binary files /dev/null and b/concepts/378_3.png differ diff --git a/concepts/378_4.png b/concepts/378_4.png new file mode 100644 index 0000000000000000000000000000000000000000..93d42fc408973d3441a0a30371bd682f3eb64027 Binary files /dev/null and b/concepts/378_4.png differ diff --git a/concepts/378_5.png b/concepts/378_5.png new file mode 100644 index 0000000000000000000000000000000000000000..912bf74a2209c1d329477400b0dd2ca18de651d5 Binary files /dev/null and b/concepts/378_5.png differ diff --git a/concepts/378_6.png b/concepts/378_6.png new file mode 100644 index 0000000000000000000000000000000000000000..1eef476e967c6c0dfddbc2310e0a9ff8d4d42c69 Binary files /dev/null and b/concepts/378_6.png differ diff --git a/concepts/378_7.png b/concepts/378_7.png new file mode 100644 index 0000000000000000000000000000000000000000..b492a90cba2dc9e3201c98b35f436c0cbeba6a08 Binary files /dev/null and b/concepts/378_7.png differ diff --git a/concepts/379_0.png b/concepts/379_0.png new file mode 100644 index 0000000000000000000000000000000000000000..d3c752185f7b1e3317564dcf73294dc16618850f Binary files /dev/null and b/concepts/379_0.png differ diff --git a/concepts/379_1.png b/concepts/379_1.png new file mode 100644 index 0000000000000000000000000000000000000000..bcb1728cecba6beda05d9e1932412666c8c9c791 Binary files /dev/null and b/concepts/379_1.png differ diff --git a/concepts/379_2.png b/concepts/379_2.png new file mode 100644 index 0000000000000000000000000000000000000000..1133e8c1a8921235c7798c866021f4454e5924a2 Binary files /dev/null and b/concepts/379_2.png differ diff --git a/concepts/379_3.png b/concepts/379_3.png new file mode 100644 index 0000000000000000000000000000000000000000..f452803b047f85b608758e3a7be542c65f009cf1 Binary files /dev/null and b/concepts/379_3.png differ diff --git a/concepts/379_4.png b/concepts/379_4.png new file mode 100644 index 0000000000000000000000000000000000000000..ecbbb072e5d9dd9108262ba7f37d42e2b8c5c1ed Binary files /dev/null and b/concepts/379_4.png differ diff --git a/concepts/379_7.png b/concepts/379_7.png new file mode 100644 index 0000000000000000000000000000000000000000..93097e49d90c3979448ad93764b6c607a882f24e Binary files /dev/null and b/concepts/379_7.png differ diff --git a/concepts/379_8.png b/concepts/379_8.png new file mode 100644 index 0000000000000000000000000000000000000000..6fac49ceef3d20b3ab11759f2a5aced1be982712 Binary files /dev/null and b/concepts/379_8.png differ diff --git a/concepts/379_9.png b/concepts/379_9.png new file mode 100644 index 0000000000000000000000000000000000000000..d3dcb6f8e051e3fa0928ed3d53f1a23d519d1614 Binary files /dev/null and b/concepts/379_9.png differ diff --git a/concepts/37_1.png b/concepts/37_1.png new file mode 100644 index 0000000000000000000000000000000000000000..6a1c2620fb34a2c1529e7c226752b949aad051e7 Binary files /dev/null and b/concepts/37_1.png differ diff --git a/concepts/37_10.png b/concepts/37_10.png new file mode 100644 index 0000000000000000000000000000000000000000..2b7ed01f9522d2a96d939619e0597c90cfa68158 Binary files /dev/null and b/concepts/37_10.png differ diff --git a/concepts/37_14.png b/concepts/37_14.png new file mode 100644 index 0000000000000000000000000000000000000000..05b15c59df05480f1125be139cc6bae8f84852dd Binary files /dev/null and b/concepts/37_14.png differ diff --git a/concepts/37_2.png b/concepts/37_2.png new file mode 100644 index 0000000000000000000000000000000000000000..3be6b9079c7cc2b14e03b8e4854872cfb3ada0f9 Binary files /dev/null and b/concepts/37_2.png differ diff --git a/concepts/37_20.png b/concepts/37_20.png new file mode 100644 index 0000000000000000000000000000000000000000..b39b3dc85b38c96c261bfd8dd746ae62016abcea Binary files /dev/null and b/concepts/37_20.png differ diff --git a/concepts/37_4.png b/concepts/37_4.png new file mode 100644 index 0000000000000000000000000000000000000000..ec13777d2b5e73f3f85048d31a62b78c4136ca9c Binary files /dev/null and b/concepts/37_4.png differ diff --git a/concepts/37_5.png b/concepts/37_5.png new file mode 100644 index 0000000000000000000000000000000000000000..431327590e92cb4bffe878e8e66ca0c6875cea9a Binary files /dev/null and b/concepts/37_5.png differ diff --git a/concepts/37_6.png b/concepts/37_6.png new file mode 100644 index 0000000000000000000000000000000000000000..b58ce5e2be308928124cce0ea871883e5b29798d Binary files /dev/null and b/concepts/37_6.png differ diff --git a/concepts/380_0.png b/concepts/380_0.png new file mode 100644 index 0000000000000000000000000000000000000000..23e5914f27b07923c96d6a89a4f4cfe7234de095 Binary files /dev/null and b/concepts/380_0.png differ diff --git a/concepts/380_1.png b/concepts/380_1.png new file mode 100644 index 0000000000000000000000000000000000000000..62d53113e64de7452b8a741310c71b8a4b6db050 Binary files /dev/null and b/concepts/380_1.png differ diff --git a/concepts/380_2.png b/concepts/380_2.png new file mode 100644 index 0000000000000000000000000000000000000000..1f109ce6195e7b18207f75562577c05d4d00e864 Binary files /dev/null and b/concepts/380_2.png differ diff --git a/concepts/380_4.png b/concepts/380_4.png new file mode 100644 index 0000000000000000000000000000000000000000..21afa2fc5806e397ce36c99ed45ad16fe5e487e3 Binary files /dev/null and b/concepts/380_4.png differ diff --git a/concepts/380_5.png b/concepts/380_5.png new file mode 100644 index 0000000000000000000000000000000000000000..67a5ca6409f39ed46d09dccf344602a97d646afb Binary files /dev/null and b/concepts/380_5.png differ diff --git a/concepts/380_6.png b/concepts/380_6.png new file mode 100644 index 0000000000000000000000000000000000000000..f4117378ed42a2fc89a32d4941501c748188563b Binary files /dev/null and b/concepts/380_6.png differ diff --git a/concepts/380_7.png b/concepts/380_7.png new file mode 100644 index 0000000000000000000000000000000000000000..57e262a8f9b7844675dba1af4aa33cf8545b7ae6 Binary files /dev/null and b/concepts/380_7.png differ diff --git a/concepts/380_8.png b/concepts/380_8.png new file mode 100644 index 0000000000000000000000000000000000000000..4906288011da218d7c4b4ad4755d741e64fd3ecf Binary files /dev/null and b/concepts/380_8.png differ diff --git a/concepts/381_0.png b/concepts/381_0.png new file mode 100644 index 0000000000000000000000000000000000000000..ad8598dab9e320564aba6b491f5e6490065e6f77 Binary files /dev/null and b/concepts/381_0.png differ diff --git a/concepts/381_2.png b/concepts/381_2.png new file mode 100644 index 0000000000000000000000000000000000000000..ae228403d18395154d86ef5f0521af4c5e223234 Binary files /dev/null and b/concepts/381_2.png differ diff --git a/concepts/381_3.png b/concepts/381_3.png new file mode 100644 index 0000000000000000000000000000000000000000..e26078fefbf20139c5d73ed504e7268a7c1d6b88 Binary files /dev/null and b/concepts/381_3.png differ diff --git a/concepts/381_4.png b/concepts/381_4.png new file mode 100644 index 0000000000000000000000000000000000000000..c7230ce2e33293cd46b7bf970a91b43795605582 Binary files /dev/null and b/concepts/381_4.png differ diff --git a/concepts/381_5.png b/concepts/381_5.png new file mode 100644 index 0000000000000000000000000000000000000000..6445437392fd350f525c2af0bfc7564cf6623023 Binary files /dev/null and b/concepts/381_5.png differ diff --git a/concepts/381_6.png b/concepts/381_6.png new file mode 100644 index 0000000000000000000000000000000000000000..297be39d913cdf4446418e316f58bbee372d5fd9 Binary files /dev/null and b/concepts/381_6.png differ diff --git a/concepts/381_7.png b/concepts/381_7.png new file mode 100644 index 0000000000000000000000000000000000000000..08603e13f2e76d72c09f0448835dcd7f62eee097 Binary files /dev/null and b/concepts/381_7.png differ diff --git a/concepts/381_8.png b/concepts/381_8.png new file mode 100644 index 0000000000000000000000000000000000000000..ebaa31cf858e0b90035befe2e9569beaead2671d Binary files /dev/null and b/concepts/381_8.png differ diff --git a/concepts/382_1.png b/concepts/382_1.png new file mode 100644 index 0000000000000000000000000000000000000000..9d1e1717d966cb5d6976649bb8ee2f3b8805f347 Binary files /dev/null and b/concepts/382_1.png differ diff --git a/concepts/382_11.png b/concepts/382_11.png new file mode 100644 index 0000000000000000000000000000000000000000..35d95dd54079bd37485b4f93bf79a110c2d5d218 Binary files /dev/null and b/concepts/382_11.png differ diff --git a/concepts/382_12.png b/concepts/382_12.png new file mode 100644 index 0000000000000000000000000000000000000000..e304966fedab2a3bd89c9c4f02ad0cd271e6fa1e Binary files /dev/null and b/concepts/382_12.png differ diff --git a/concepts/382_14.png b/concepts/382_14.png new file mode 100644 index 0000000000000000000000000000000000000000..67b0eed3f949eca55a6536d62978757a40ab456d Binary files /dev/null and b/concepts/382_14.png differ diff --git a/concepts/382_2.png b/concepts/382_2.png new file mode 100644 index 0000000000000000000000000000000000000000..acaef1448c211ef6bdb679009f5e613a4a4afadc Binary files /dev/null and b/concepts/382_2.png differ diff --git a/concepts/382_4.png b/concepts/382_4.png new file mode 100644 index 0000000000000000000000000000000000000000..604cb30ff46dd6767209ec2271c1e6ac9a789aa8 Binary files /dev/null and b/concepts/382_4.png differ diff --git a/concepts/382_5.png b/concepts/382_5.png new file mode 100644 index 0000000000000000000000000000000000000000..d8e13528775a380493b2a452c911a24bd3b01a09 Binary files /dev/null and b/concepts/382_5.png differ diff --git a/concepts/382_6.png b/concepts/382_6.png new file mode 100644 index 0000000000000000000000000000000000000000..b3115f430a357ce488e4f5878bf656d6306a667e Binary files /dev/null and b/concepts/382_6.png differ diff --git a/concepts/383_0.png b/concepts/383_0.png new file mode 100644 index 0000000000000000000000000000000000000000..e263527080fb796b74499b86587618984624fb88 Binary files /dev/null and b/concepts/383_0.png differ diff --git a/concepts/383_1.png b/concepts/383_1.png new file mode 100644 index 0000000000000000000000000000000000000000..7b085b65a85fa10a3b4c06d9e03ddb7334795a04 Binary files /dev/null and b/concepts/383_1.png differ diff --git a/concepts/383_2.png b/concepts/383_2.png new file mode 100644 index 0000000000000000000000000000000000000000..521bd7e32ba5f206f11eddb773571eaf6906c4bb Binary files /dev/null and b/concepts/383_2.png differ diff --git a/concepts/383_3.png b/concepts/383_3.png new file mode 100644 index 0000000000000000000000000000000000000000..ed6c8a898bfc2155641b9142743abee3b27ff2f3 Binary files /dev/null and b/concepts/383_3.png differ diff --git a/concepts/383_4.png b/concepts/383_4.png new file mode 100644 index 0000000000000000000000000000000000000000..f5ffa15a2441cf59e9fd34e9d1725106386d0a89 Binary files /dev/null and b/concepts/383_4.png differ diff --git a/concepts/383_5.png b/concepts/383_5.png new file mode 100644 index 0000000000000000000000000000000000000000..68c9c0f48bed1087de9ee37792a07a60a68417aa Binary files /dev/null and b/concepts/383_5.png differ diff --git a/concepts/383_6.png b/concepts/383_6.png new file mode 100644 index 0000000000000000000000000000000000000000..4587784c84d3887c0280d1d9e5cad49de2b40c00 Binary files /dev/null and b/concepts/383_6.png differ diff --git a/concepts/383_7.png b/concepts/383_7.png new file mode 100644 index 0000000000000000000000000000000000000000..56303ddacfe50b66eedb38dbcdce2e1f499b3aff Binary files /dev/null and b/concepts/383_7.png differ diff --git a/concepts/384_0.png b/concepts/384_0.png new file mode 100644 index 0000000000000000000000000000000000000000..9ba21ce474b1a3fe0a9c70bfc3c2908a3a924f22 Binary files /dev/null and b/concepts/384_0.png differ diff --git a/concepts/384_1.png b/concepts/384_1.png new file mode 100644 index 0000000000000000000000000000000000000000..493aee880a5dda6857c6b58f2caf65e86a797cab Binary files /dev/null and b/concepts/384_1.png differ diff --git a/concepts/384_2.png b/concepts/384_2.png new file mode 100644 index 0000000000000000000000000000000000000000..32f2b9f4b95f2bac1e4b9f1df34c96f155840ece Binary files /dev/null and b/concepts/384_2.png differ diff --git a/concepts/384_3.png b/concepts/384_3.png new file mode 100644 index 0000000000000000000000000000000000000000..52bb6005566a5139bcb1c279472dc9e477ca892d Binary files /dev/null and b/concepts/384_3.png differ diff --git a/concepts/384_4.png b/concepts/384_4.png new file mode 100644 index 0000000000000000000000000000000000000000..4dfc1a07b592ad80d48afc995a2a8403f1c36017 Binary files /dev/null and b/concepts/384_4.png differ diff --git a/concepts/384_6.png b/concepts/384_6.png new file mode 100644 index 0000000000000000000000000000000000000000..29c423ec77c438d92091de6bc2e6ae5ad6a3a5d6 Binary files /dev/null and b/concepts/384_6.png differ diff --git a/concepts/384_7.png b/concepts/384_7.png new file mode 100644 index 0000000000000000000000000000000000000000..55db734d5d30e4fd5e30da0d15604bc1158b6d56 Binary files /dev/null and b/concepts/384_7.png differ diff --git a/concepts/384_8.png b/concepts/384_8.png new file mode 100644 index 0000000000000000000000000000000000000000..d973bd70a2d6e2f52d43532dad5f3c7a4687fe93 Binary files /dev/null and b/concepts/384_8.png differ diff --git a/concepts/385_19.png b/concepts/385_19.png new file mode 100644 index 0000000000000000000000000000000000000000..3b4d36d4ed8ff694ff962dd67987638159d560a7 Binary files /dev/null and b/concepts/385_19.png differ diff --git a/concepts/385_21.png b/concepts/385_21.png new file mode 100644 index 0000000000000000000000000000000000000000..596bda2353d7515301348c21f1ce3648afd26e40 Binary files /dev/null and b/concepts/385_21.png differ diff --git a/concepts/385_3.png b/concepts/385_3.png new file mode 100644 index 0000000000000000000000000000000000000000..28cca59e438c3d8d0d04a60f8b9e622ad1b8bd73 Binary files /dev/null and b/concepts/385_3.png differ diff --git a/concepts/385_4.png b/concepts/385_4.png new file mode 100644 index 0000000000000000000000000000000000000000..1551ba0d3d37cbf4d7ad7305a4b4c5b762262c32 Binary files /dev/null and b/concepts/385_4.png differ diff --git a/concepts/385_5.png b/concepts/385_5.png new file mode 100644 index 0000000000000000000000000000000000000000..0acba9188f9115b9756bfa21b3990abbbc33335e Binary files /dev/null and b/concepts/385_5.png differ diff --git a/concepts/385_6.png b/concepts/385_6.png new file mode 100644 index 0000000000000000000000000000000000000000..508d9a725553d3350e61db48c96ff0a6f7a7f0e7 Binary files /dev/null and b/concepts/385_6.png differ diff --git a/concepts/385_7.png b/concepts/385_7.png new file mode 100644 index 0000000000000000000000000000000000000000..38f6c813d308fab287c08e618d69de4341a9272a Binary files /dev/null and b/concepts/385_7.png differ diff --git a/concepts/385_9.png b/concepts/385_9.png new file mode 100644 index 0000000000000000000000000000000000000000..746a6d5a6ff4a97357bdc7f56303e1eae2fed8e5 Binary files /dev/null and b/concepts/385_9.png differ diff --git a/concepts/386_0.png b/concepts/386_0.png new file mode 100644 index 0000000000000000000000000000000000000000..91e6e40c5249dc3f692fb01e71a38f0e0dbc2eb3 Binary files /dev/null and b/concepts/386_0.png differ diff --git a/concepts/386_10.png b/concepts/386_10.png new file mode 100644 index 0000000000000000000000000000000000000000..cc5407eb41beb1697231f767cd7424d610d6d704 Binary files /dev/null and b/concepts/386_10.png differ diff --git a/concepts/386_11.png b/concepts/386_11.png new file mode 100644 index 0000000000000000000000000000000000000000..2008a88348ec9ac00fdd8d56868d79b4be62b464 Binary files /dev/null and b/concepts/386_11.png differ diff --git a/concepts/386_13.png b/concepts/386_13.png new file mode 100644 index 0000000000000000000000000000000000000000..a9a10c9fc2bbaffb5d3678a6a6ff9d76ca199d0e Binary files /dev/null and b/concepts/386_13.png differ diff --git a/concepts/386_15.png b/concepts/386_15.png new file mode 100644 index 0000000000000000000000000000000000000000..3c016945ab23cb37ca31dcea4d93b5299b17d548 Binary files /dev/null and b/concepts/386_15.png differ diff --git a/concepts/386_2.png b/concepts/386_2.png new file mode 100644 index 0000000000000000000000000000000000000000..cb1a1834bad6d10c6f2070a0c16e1454a5a186d8 Binary files /dev/null and b/concepts/386_2.png differ diff --git a/concepts/386_23.png b/concepts/386_23.png new file mode 100644 index 0000000000000000000000000000000000000000..0b370f37558962ec6cb38f7f50624c6b2bd6bdcc Binary files /dev/null and b/concepts/386_23.png differ diff --git a/concepts/386_8.png b/concepts/386_8.png new file mode 100644 index 0000000000000000000000000000000000000000..83b556694cc3d108f8f31d746c5431dca691b688 Binary files /dev/null and b/concepts/386_8.png differ diff --git a/concepts/387_0.png b/concepts/387_0.png new file mode 100644 index 0000000000000000000000000000000000000000..ea6048a55042e27d5207eeb09344385a35d0a69d Binary files /dev/null and b/concepts/387_0.png differ diff --git a/concepts/387_2.png b/concepts/387_2.png new file mode 100644 index 0000000000000000000000000000000000000000..d0e33627576cf9c11eaa606009c961ca5d2fa983 Binary files /dev/null and b/concepts/387_2.png differ diff --git a/concepts/387_3.png b/concepts/387_3.png new file mode 100644 index 0000000000000000000000000000000000000000..36d0ca07faedc52ef4e408b4557a355d769215cc Binary files /dev/null and b/concepts/387_3.png differ diff --git a/concepts/387_4.png b/concepts/387_4.png new file mode 100644 index 0000000000000000000000000000000000000000..a171173c74b5c1176c319e8247bbf9dab22c8223 Binary files /dev/null and b/concepts/387_4.png differ diff --git a/concepts/387_5.png b/concepts/387_5.png new file mode 100644 index 0000000000000000000000000000000000000000..046b3ad8c13c41e295f72072d116beafc3093b13 Binary files /dev/null and b/concepts/387_5.png differ diff --git a/concepts/387_7.png b/concepts/387_7.png new file mode 100644 index 0000000000000000000000000000000000000000..da48c10b7d3a36423b70c42884fd7a817d8d87e4 Binary files /dev/null and b/concepts/387_7.png differ diff --git a/concepts/387_8.png b/concepts/387_8.png new file mode 100644 index 0000000000000000000000000000000000000000..a5e7e676ca391c5c50f90424584699d5ee1c329c Binary files /dev/null and b/concepts/387_8.png differ diff --git a/concepts/387_9.png b/concepts/387_9.png new file mode 100644 index 0000000000000000000000000000000000000000..23336c8654602a090fbdc9c6f5caa60c744515b1 Binary files /dev/null and b/concepts/387_9.png differ diff --git a/concepts/388_1.png b/concepts/388_1.png new file mode 100644 index 0000000000000000000000000000000000000000..0028b6ba3de8fc79ec4d541e06481fd6d4452ef2 Binary files /dev/null and b/concepts/388_1.png differ diff --git a/concepts/388_10.png b/concepts/388_10.png new file mode 100644 index 0000000000000000000000000000000000000000..dfdd78d13b3c7fef3d077cb9ca593dbff4bd0993 Binary files /dev/null and b/concepts/388_10.png differ diff --git a/concepts/388_11.png b/concepts/388_11.png new file mode 100644 index 0000000000000000000000000000000000000000..6d97e9c1d848e7459eedd7dd5d241794e16c5c71 Binary files /dev/null and b/concepts/388_11.png differ diff --git a/concepts/388_13.png b/concepts/388_13.png new file mode 100644 index 0000000000000000000000000000000000000000..1236f31dcbb518dfa459a46e20288c7b1f032438 Binary files /dev/null and b/concepts/388_13.png differ diff --git a/concepts/388_2.png b/concepts/388_2.png new file mode 100644 index 0000000000000000000000000000000000000000..a4c8a33d130bba0b14c12c801e942d5243a25f77 Binary files /dev/null and b/concepts/388_2.png differ diff --git a/concepts/388_3.png b/concepts/388_3.png new file mode 100644 index 0000000000000000000000000000000000000000..2edef9e2145a0cab22b4eeed88157e483228b4bc Binary files /dev/null and b/concepts/388_3.png differ diff --git a/concepts/388_4.png b/concepts/388_4.png new file mode 100644 index 0000000000000000000000000000000000000000..98858f73f3f217a37245fad18c1fd99b1e353515 Binary files /dev/null and b/concepts/388_4.png differ diff --git a/concepts/388_6.png b/concepts/388_6.png new file mode 100644 index 0000000000000000000000000000000000000000..4d40c6ae181f1f08a0930d232d47015ee55822de Binary files /dev/null and b/concepts/388_6.png differ diff --git a/concepts/389_0.png b/concepts/389_0.png new file mode 100644 index 0000000000000000000000000000000000000000..b9138161632b903b36c2e33b81b22747c1f61359 Binary files /dev/null and b/concepts/389_0.png differ diff --git a/concepts/389_1.png b/concepts/389_1.png new file mode 100644 index 0000000000000000000000000000000000000000..5b8825947e47290a3f2d9733a3ac0f0e9e0726c6 Binary files /dev/null and b/concepts/389_1.png differ diff --git a/concepts/389_13.png b/concepts/389_13.png new file mode 100644 index 0000000000000000000000000000000000000000..5b27c4519b42e123f8adb8e032e69b2005ed1fda Binary files /dev/null and b/concepts/389_13.png differ diff --git a/concepts/389_16.png b/concepts/389_16.png new file mode 100644 index 0000000000000000000000000000000000000000..aa16d60341c4d8b938f41b6ee450a5d25aa10080 Binary files /dev/null and b/concepts/389_16.png differ diff --git a/concepts/389_18.png b/concepts/389_18.png new file mode 100644 index 0000000000000000000000000000000000000000..cebd3e74355c02d4d242210f5f23fed39ec24e62 Binary files /dev/null and b/concepts/389_18.png differ diff --git a/concepts/389_20.png b/concepts/389_20.png new file mode 100644 index 0000000000000000000000000000000000000000..16b1f9205fd7d62c9e43820c91215dbc18ecc84e Binary files /dev/null and b/concepts/389_20.png differ diff --git a/concepts/389_7.png b/concepts/389_7.png new file mode 100644 index 0000000000000000000000000000000000000000..cd7f5f74ffd8a4afb0bccadb1d2d662c658028eb Binary files /dev/null and b/concepts/389_7.png differ diff --git a/concepts/38_0.png b/concepts/38_0.png new file mode 100644 index 0000000000000000000000000000000000000000..3fd2133315ade85726e85bc032f4d11df6802281 Binary files /dev/null and b/concepts/38_0.png differ diff --git a/concepts/38_10.png b/concepts/38_10.png new file mode 100644 index 0000000000000000000000000000000000000000..182c601389b2385941d454269b387dbf9049bcd7 Binary files /dev/null and b/concepts/38_10.png differ diff --git a/concepts/38_15.png b/concepts/38_15.png new file mode 100644 index 0000000000000000000000000000000000000000..397b7aae18b1918918b40e23159c3c0f68c4f167 Binary files /dev/null and b/concepts/38_15.png differ diff --git a/concepts/38_2.png b/concepts/38_2.png new file mode 100644 index 0000000000000000000000000000000000000000..ccbbd985ab17532437369235a4b1c23df1d5195b Binary files /dev/null and b/concepts/38_2.png differ diff --git a/concepts/38_6.png b/concepts/38_6.png new file mode 100644 index 0000000000000000000000000000000000000000..f732512f199250799c565a202ca23fd8218a8a07 Binary files /dev/null and b/concepts/38_6.png differ diff --git a/concepts/38_7.png b/concepts/38_7.png new file mode 100644 index 0000000000000000000000000000000000000000..5eb2f8154fc26d52e69372be880638587bae01c2 Binary files /dev/null and b/concepts/38_7.png differ diff --git a/concepts/38_8.png b/concepts/38_8.png new file mode 100644 index 0000000000000000000000000000000000000000..a25900e9f8b64693d98e096ed35d1e62d90aaa82 Binary files /dev/null and b/concepts/38_8.png differ diff --git a/concepts/38_9.png b/concepts/38_9.png new file mode 100644 index 0000000000000000000000000000000000000000..911c4d7d4a7c78761a3a40b343d96e36901aead0 Binary files /dev/null and b/concepts/38_9.png differ diff --git a/concepts/390_0.png b/concepts/390_0.png new file mode 100644 index 0000000000000000000000000000000000000000..362ea378ee318142684663d8963f0f34e0c11da6 Binary files /dev/null and b/concepts/390_0.png differ diff --git a/concepts/390_1.png b/concepts/390_1.png new file mode 100644 index 0000000000000000000000000000000000000000..22d3e13c0d5a4db7e6962213b19e49e54de20df9 Binary files /dev/null and b/concepts/390_1.png differ diff --git a/concepts/390_2.png b/concepts/390_2.png new file mode 100644 index 0000000000000000000000000000000000000000..f7b19d998e4de5d331fae90a24fbe5eea4443902 Binary files /dev/null and b/concepts/390_2.png differ diff --git a/concepts/390_3.png b/concepts/390_3.png new file mode 100644 index 0000000000000000000000000000000000000000..65dd1e6e336ffd991d63cbec026077094f910826 Binary files /dev/null and b/concepts/390_3.png differ diff --git a/concepts/390_4.png b/concepts/390_4.png new file mode 100644 index 0000000000000000000000000000000000000000..9417ad9c3f72cb2056c161d0b09f55f6d63b7e7f Binary files /dev/null and b/concepts/390_4.png differ diff --git a/concepts/390_5.png b/concepts/390_5.png new file mode 100644 index 0000000000000000000000000000000000000000..8a8e405465531633a3b9290a1c509ce8f8050b99 Binary files /dev/null and b/concepts/390_5.png differ diff --git a/concepts/390_7.png b/concepts/390_7.png new file mode 100644 index 0000000000000000000000000000000000000000..c38c2bf087c504c7ebe507b9e9f135896f36b0d4 Binary files /dev/null and b/concepts/390_7.png differ diff --git a/concepts/390_9.png b/concepts/390_9.png new file mode 100644 index 0000000000000000000000000000000000000000..688ff0ec34c34b8930b62b5686c0e262a070323b Binary files /dev/null and b/concepts/390_9.png differ diff --git a/concepts/392_4.png b/concepts/392_4.png new file mode 100644 index 0000000000000000000000000000000000000000..13c2990aa7df62fb611b66536f447c6ac2d5ea6f Binary files /dev/null and b/concepts/392_4.png differ diff --git a/concepts/392_5.png b/concepts/392_5.png new file mode 100644 index 0000000000000000000000000000000000000000..d30398bd2ae36d3a3b4c551043e29d8082d4b19b Binary files /dev/null and b/concepts/392_5.png differ diff --git a/concepts/392_6.png b/concepts/392_6.png new file mode 100644 index 0000000000000000000000000000000000000000..3919d4484605c916db6d9148efc16a98295cf57c Binary files /dev/null and b/concepts/392_6.png differ diff --git a/concepts/393_1.png b/concepts/393_1.png new file mode 100644 index 0000000000000000000000000000000000000000..7182d4e661851026e7a87bc606f38345726afaf4 Binary files /dev/null and b/concepts/393_1.png differ diff --git a/concepts/393_2.png b/concepts/393_2.png new file mode 100644 index 0000000000000000000000000000000000000000..a32f90c20386e3f54b64e630a346e6b744c918f9 Binary files /dev/null and b/concepts/393_2.png differ diff --git a/concepts/393_4.png b/concepts/393_4.png new file mode 100644 index 0000000000000000000000000000000000000000..69ef5d5ba0bcb2183c8cc45beee72ca8a85edcd3 Binary files /dev/null and b/concepts/393_4.png differ diff --git a/concepts/393_5.png b/concepts/393_5.png new file mode 100644 index 0000000000000000000000000000000000000000..5677f00699f94fe9759590a3a79b08960a533629 Binary files /dev/null and b/concepts/393_5.png differ diff --git a/concepts/393_6.png b/concepts/393_6.png new file mode 100644 index 0000000000000000000000000000000000000000..83f668885e0ae02c6be707f4e87adfa66019795a Binary files /dev/null and b/concepts/393_6.png differ diff --git a/concepts/393_7.png b/concepts/393_7.png new file mode 100644 index 0000000000000000000000000000000000000000..8519a3ff4cd46c915eda3f12462f6e71adc1f00c Binary files /dev/null and b/concepts/393_7.png differ diff --git a/concepts/393_8.png b/concepts/393_8.png new file mode 100644 index 0000000000000000000000000000000000000000..dc80b85f9ecff35b579c007ec75af4ce0f18fa98 Binary files /dev/null and b/concepts/393_8.png differ diff --git a/concepts/393_9.png b/concepts/393_9.png new file mode 100644 index 0000000000000000000000000000000000000000..06df65000b1403687a98119db0006c73f7e2127e Binary files /dev/null and b/concepts/393_9.png differ diff --git a/concepts/394_1.png b/concepts/394_1.png new file mode 100644 index 0000000000000000000000000000000000000000..c8d2a440313a201605e00ddad428034a48820572 Binary files /dev/null and b/concepts/394_1.png differ diff --git a/concepts/394_10.png b/concepts/394_10.png new file mode 100644 index 0000000000000000000000000000000000000000..566988c434a232c6e3360f34632a5def10f8ca41 Binary files /dev/null and b/concepts/394_10.png differ diff --git a/concepts/394_16.png b/concepts/394_16.png new file mode 100644 index 0000000000000000000000000000000000000000..735a4cfdf930fc5515f8b0e5a525c3eab75cdaff Binary files /dev/null and b/concepts/394_16.png differ diff --git a/concepts/394_2.png b/concepts/394_2.png new file mode 100644 index 0000000000000000000000000000000000000000..8f8df8fe8b7b7085bfce286248a3a75816a1e483 Binary files /dev/null and b/concepts/394_2.png differ diff --git a/concepts/394_5.png b/concepts/394_5.png new file mode 100644 index 0000000000000000000000000000000000000000..d387b2782570ceca2e429b3aaed3df3187ff606f Binary files /dev/null and b/concepts/394_5.png differ diff --git a/concepts/394_6.png b/concepts/394_6.png new file mode 100644 index 0000000000000000000000000000000000000000..bf566bc9ea1304f7210306edc09e5385e2995af9 Binary files /dev/null and b/concepts/394_6.png differ diff --git a/concepts/394_7.png b/concepts/394_7.png new file mode 100644 index 0000000000000000000000000000000000000000..4cace8a5aba5c53e07c6c20803cc8884f51848d5 Binary files /dev/null and b/concepts/394_7.png differ diff --git a/concepts/394_8.png b/concepts/394_8.png new file mode 100644 index 0000000000000000000000000000000000000000..5b0667f6f2cb0edbf38ec6cc15bde8ea3a84f4ce Binary files /dev/null and b/concepts/394_8.png differ diff --git a/concepts/395_0.png b/concepts/395_0.png new file mode 100644 index 0000000000000000000000000000000000000000..0780f939a18493aa90d0c37820fef9ab73540b47 Binary files /dev/null and b/concepts/395_0.png differ diff --git a/concepts/395_1.png b/concepts/395_1.png new file mode 100644 index 0000000000000000000000000000000000000000..48a3ae37b8ae198b1b6422b988cce1c89dbecfef Binary files /dev/null and b/concepts/395_1.png differ diff --git a/concepts/395_11.png b/concepts/395_11.png new file mode 100644 index 0000000000000000000000000000000000000000..b740af167094d010de438cc8e98484a1d1bba4cc Binary files /dev/null and b/concepts/395_11.png differ diff --git a/concepts/395_13.png b/concepts/395_13.png new file mode 100644 index 0000000000000000000000000000000000000000..a164456e25d3ecb04877515916f23d8c782487f8 Binary files /dev/null and b/concepts/395_13.png differ diff --git a/concepts/395_2.png b/concepts/395_2.png new file mode 100644 index 0000000000000000000000000000000000000000..9af68b94606886aace98dd90764cd043e84f5299 Binary files /dev/null and b/concepts/395_2.png differ diff --git a/concepts/395_3.png b/concepts/395_3.png new file mode 100644 index 0000000000000000000000000000000000000000..3daf7d4c7144873adca585cb86f79d4526b77c69 Binary files /dev/null and b/concepts/395_3.png differ diff --git a/concepts/395_4.png b/concepts/395_4.png new file mode 100644 index 0000000000000000000000000000000000000000..789480a08bea167a7422b7b7596385ae005c6d8d Binary files /dev/null and b/concepts/395_4.png differ diff --git a/concepts/395_6.png b/concepts/395_6.png new file mode 100644 index 0000000000000000000000000000000000000000..3e7bdd37ce5024ef552fb706c81456b5048240f9 Binary files /dev/null and b/concepts/395_6.png differ diff --git a/concepts/396_0.png b/concepts/396_0.png new file mode 100644 index 0000000000000000000000000000000000000000..4913106b9d5cf54f2934e224dd8f1d3095b10bb1 Binary files /dev/null and b/concepts/396_0.png differ diff --git a/concepts/396_1.png b/concepts/396_1.png new file mode 100644 index 0000000000000000000000000000000000000000..7f0746c0636a947e42181b014c3f430baaf51562 Binary files /dev/null and b/concepts/396_1.png differ diff --git a/concepts/396_2.png b/concepts/396_2.png new file mode 100644 index 0000000000000000000000000000000000000000..100342ce4d0c7861d620491d05fbf6c7e8d51ec3 Binary files /dev/null and b/concepts/396_2.png differ diff --git a/concepts/396_4.png b/concepts/396_4.png new file mode 100644 index 0000000000000000000000000000000000000000..1fb07f53c81e70c7a87d0059ba80aba393d1d22a Binary files /dev/null and b/concepts/396_4.png differ diff --git a/concepts/396_6.png b/concepts/396_6.png new file mode 100644 index 0000000000000000000000000000000000000000..f2997419adddde54279d91a763334fe21e4a0824 Binary files /dev/null and b/concepts/396_6.png differ diff --git a/concepts/396_7.png b/concepts/396_7.png new file mode 100644 index 0000000000000000000000000000000000000000..643b9c1c4db5e8db1997c1c0bd9c0f38096ca083 Binary files /dev/null and b/concepts/396_7.png differ diff --git a/concepts/396_8.png b/concepts/396_8.png new file mode 100644 index 0000000000000000000000000000000000000000..aeaf141ec126e2e9573c0ffa3ed9d64c17f3fdab Binary files /dev/null and b/concepts/396_8.png differ diff --git a/concepts/396_9.png b/concepts/396_9.png new file mode 100644 index 0000000000000000000000000000000000000000..d21fbed3ceee037fad8d8f97b25e40dffac23731 Binary files /dev/null and b/concepts/396_9.png differ diff --git a/concepts/397_1.png b/concepts/397_1.png new file mode 100644 index 0000000000000000000000000000000000000000..fe0bc63e9b9b5f7eb1d1f0cd7d8169150e97e1fe Binary files /dev/null and b/concepts/397_1.png differ diff --git a/concepts/397_2.png b/concepts/397_2.png new file mode 100644 index 0000000000000000000000000000000000000000..f8edcea799c05ae53fa90913fe356966520cb2d3 Binary files /dev/null and b/concepts/397_2.png differ diff --git a/concepts/397_3.png b/concepts/397_3.png new file mode 100644 index 0000000000000000000000000000000000000000..203d669e9c74f78743edc2825809005a0bda2c4d Binary files /dev/null and b/concepts/397_3.png differ diff --git a/concepts/397_4.png b/concepts/397_4.png new file mode 100644 index 0000000000000000000000000000000000000000..b25af63867cb7744d5831c74f62f784e249f840c Binary files /dev/null and b/concepts/397_4.png differ diff --git a/concepts/397_5.png b/concepts/397_5.png new file mode 100644 index 0000000000000000000000000000000000000000..6b044132ad571e76e1ec5b12dc530f350d891abd Binary files /dev/null and b/concepts/397_5.png differ diff --git a/concepts/397_6.png b/concepts/397_6.png new file mode 100644 index 0000000000000000000000000000000000000000..dc65f845d00adac1516c388984ef550ea9549c21 Binary files /dev/null and b/concepts/397_6.png differ diff --git a/concepts/397_8.png b/concepts/397_8.png new file mode 100644 index 0000000000000000000000000000000000000000..2907e19c93f10675d1ee556103f4ab113eced031 Binary files /dev/null and b/concepts/397_8.png differ diff --git a/concepts/397_9.png b/concepts/397_9.png new file mode 100644 index 0000000000000000000000000000000000000000..925b1e4d3cfe829c7a3b31fd7ff93245ac8f87b5 Binary files /dev/null and b/concepts/397_9.png differ diff --git a/concepts/399_0.png b/concepts/399_0.png new file mode 100644 index 0000000000000000000000000000000000000000..5b46fb79b9a5156b61a392987c6e2aa0b173ceb9 Binary files /dev/null and b/concepts/399_0.png differ diff --git a/concepts/399_10.png b/concepts/399_10.png new file mode 100644 index 0000000000000000000000000000000000000000..76755e1154772843269f835e7d1db5effd37c1b1 Binary files /dev/null and b/concepts/399_10.png differ diff --git a/concepts/399_11.png b/concepts/399_11.png new file mode 100644 index 0000000000000000000000000000000000000000..36924322b50e3d441d85a0000af2f0a0a8445b10 Binary files /dev/null and b/concepts/399_11.png differ diff --git a/concepts/399_12.png b/concepts/399_12.png new file mode 100644 index 0000000000000000000000000000000000000000..e4af1e1c83b3afae3d42ec0c49e6e7c15e9addc1 Binary files /dev/null and b/concepts/399_12.png differ diff --git a/concepts/39_0.png b/concepts/39_0.png new file mode 100644 index 0000000000000000000000000000000000000000..3741f1b99c1df41f393713cde580a565f720a192 Binary files /dev/null and b/concepts/39_0.png differ diff --git a/concepts/39_1.png b/concepts/39_1.png new file mode 100644 index 0000000000000000000000000000000000000000..7483593028302eda6b63efb1a5048aea7c362701 Binary files /dev/null and b/concepts/39_1.png differ diff --git a/concepts/39_15.png b/concepts/39_15.png new file mode 100644 index 0000000000000000000000000000000000000000..841e9984b5b54ff83147cf18bf54e3b80cc4f0c8 Binary files /dev/null and b/concepts/39_15.png differ diff --git a/concepts/39_16.png b/concepts/39_16.png new file mode 100644 index 0000000000000000000000000000000000000000..e22107697abcd385571375ac17ad054e54be414f Binary files /dev/null and b/concepts/39_16.png differ diff --git a/concepts/39_3.png b/concepts/39_3.png new file mode 100644 index 0000000000000000000000000000000000000000..32018034299b9a729e6ed5b3c164927364567830 Binary files /dev/null and b/concepts/39_3.png differ diff --git a/concepts/39_6.png b/concepts/39_6.png new file mode 100644 index 0000000000000000000000000000000000000000..447ef1f9c98774d9974b1c2df7a940582870f149 Binary files /dev/null and b/concepts/39_6.png differ diff --git a/concepts/39_8.png b/concepts/39_8.png new file mode 100644 index 0000000000000000000000000000000000000000..fb55221776c73ea7713b54eced429922b2a27e20 Binary files /dev/null and b/concepts/39_8.png differ diff --git a/concepts/39_9.png b/concepts/39_9.png new file mode 100644 index 0000000000000000000000000000000000000000..444c72c22e888d954c5f7301b00bf99f8657c8c5 Binary files /dev/null and b/concepts/39_9.png differ diff --git a/concepts/3_0.png b/concepts/3_0.png new file mode 100644 index 0000000000000000000000000000000000000000..4b8dbf3f3c840963c134ebad962565c43cdf63b7 Binary files /dev/null and b/concepts/3_0.png differ diff --git a/concepts/3_1.png b/concepts/3_1.png new file mode 100644 index 0000000000000000000000000000000000000000..6a6eb9011c1413a2886ac1d62f1a67a9b290b58a Binary files /dev/null and b/concepts/3_1.png differ diff --git a/concepts/3_3.png b/concepts/3_3.png new file mode 100644 index 0000000000000000000000000000000000000000..cd14789411fa1fec1e2262b39f0fc2debeff1be3 Binary files /dev/null and b/concepts/3_3.png differ diff --git a/concepts/3_4.png b/concepts/3_4.png new file mode 100644 index 0000000000000000000000000000000000000000..ce550fb968040cef72eb6a4ddd0eeeb802070213 Binary files /dev/null and b/concepts/3_4.png differ diff --git a/concepts/3_5.png b/concepts/3_5.png new file mode 100644 index 0000000000000000000000000000000000000000..ad532bbc54bc5a35a737edad6ec7e6f807074e29 Binary files /dev/null and b/concepts/3_5.png differ diff --git a/concepts/3_7.png b/concepts/3_7.png new file mode 100644 index 0000000000000000000000000000000000000000..f739ce86f976eb519fbca7338b18702e459e3d00 Binary files /dev/null and b/concepts/3_7.png differ diff --git a/concepts/3_8.png b/concepts/3_8.png new file mode 100644 index 0000000000000000000000000000000000000000..a2f291a80d96882135d85ddaa35dede79ba114c5 Binary files /dev/null and b/concepts/3_8.png differ diff --git a/concepts/3_9.png b/concepts/3_9.png new file mode 100644 index 0000000000000000000000000000000000000000..f312d5681d830f676748a2fb042d0621fb7e7271 Binary files /dev/null and b/concepts/3_9.png differ diff --git a/concepts/400_0.png b/concepts/400_0.png new file mode 100644 index 0000000000000000000000000000000000000000..16e3c36d18e801f01ffe8882b66c2e2a0a7a9daa Binary files /dev/null and b/concepts/400_0.png differ diff --git a/concepts/400_1.png b/concepts/400_1.png new file mode 100644 index 0000000000000000000000000000000000000000..f8a51b72ccba6424fe84e1d81630d9fb62556299 Binary files /dev/null and b/concepts/400_1.png differ diff --git a/concepts/400_2.png b/concepts/400_2.png new file mode 100644 index 0000000000000000000000000000000000000000..49ce6fa27c80770d9c2dc8121c16ccb1448f73f6 Binary files /dev/null and b/concepts/400_2.png differ diff --git a/concepts/400_3.png b/concepts/400_3.png new file mode 100644 index 0000000000000000000000000000000000000000..14b554b7fec9a41711d979bb64a8855e545378f4 Binary files /dev/null and b/concepts/400_3.png differ diff --git a/concepts/400_5.png b/concepts/400_5.png new file mode 100644 index 0000000000000000000000000000000000000000..8f758bc7085f7ca93056a1fc005973849bf1aed1 Binary files /dev/null and b/concepts/400_5.png differ diff --git a/concepts/400_6.png b/concepts/400_6.png new file mode 100644 index 0000000000000000000000000000000000000000..3c00385d9d2beabd88f67f6ade8a99c9eeddf278 Binary files /dev/null and b/concepts/400_6.png differ diff --git a/concepts/400_7.png b/concepts/400_7.png new file mode 100644 index 0000000000000000000000000000000000000000..bcd1840dce8d3986444761057e79ffd16b6252b4 Binary files /dev/null and b/concepts/400_7.png differ diff --git a/concepts/400_8.png b/concepts/400_8.png new file mode 100644 index 0000000000000000000000000000000000000000..62b66fd8c385729ddf6b6a63b04ff41e39c235bf Binary files /dev/null and b/concepts/400_8.png differ diff --git a/concepts/401_0.png b/concepts/401_0.png new file mode 100644 index 0000000000000000000000000000000000000000..e5dcf5829a37ad77c681903bbc5c1d069f8e499e Binary files /dev/null and b/concepts/401_0.png differ diff --git a/concepts/401_1.png b/concepts/401_1.png new file mode 100644 index 0000000000000000000000000000000000000000..93ca6774b65d16ec8a197712ce088f550ae6e140 Binary files /dev/null and b/concepts/401_1.png differ diff --git a/concepts/401_14.png b/concepts/401_14.png new file mode 100644 index 0000000000000000000000000000000000000000..d3b6e5231ada0a369944d0b2cadba9ec83bdd7ac Binary files /dev/null and b/concepts/401_14.png differ diff --git a/concepts/401_2.png b/concepts/401_2.png new file mode 100644 index 0000000000000000000000000000000000000000..b97abea6b83e96000752d997fc5ce6711761d10f Binary files /dev/null and b/concepts/401_2.png differ diff --git a/concepts/401_3.png b/concepts/401_3.png new file mode 100644 index 0000000000000000000000000000000000000000..87c4cfe11637ac1b8a12392cfb7f984c4d72666b Binary files /dev/null and b/concepts/401_3.png differ diff --git a/concepts/401_5.png b/concepts/401_5.png new file mode 100644 index 0000000000000000000000000000000000000000..23193b81c43f5f4de674ff518520eb9d6ef28f43 Binary files /dev/null and b/concepts/401_5.png differ diff --git a/concepts/401_6.png b/concepts/401_6.png new file mode 100644 index 0000000000000000000000000000000000000000..8832c56dd0da3115a775c8f7591a9e1a0a24f7da Binary files /dev/null and b/concepts/401_6.png differ diff --git a/concepts/401_8.png b/concepts/401_8.png new file mode 100644 index 0000000000000000000000000000000000000000..7a75bd2466d755a81a3ca10de52e590e6f3f2fe1 Binary files /dev/null and b/concepts/401_8.png differ diff --git a/concepts/402_0.png b/concepts/402_0.png new file mode 100644 index 0000000000000000000000000000000000000000..53e587e71309417447542957c2760669291995dc Binary files /dev/null and b/concepts/402_0.png differ diff --git a/concepts/402_1.png b/concepts/402_1.png new file mode 100644 index 0000000000000000000000000000000000000000..48762e31bae520befbce37c5737a0fce8d2e14b2 Binary files /dev/null and b/concepts/402_1.png differ diff --git a/concepts/402_3.png b/concepts/402_3.png new file mode 100644 index 0000000000000000000000000000000000000000..cf2ab982fd69a6c1b08c62fd1e39fc7fc5710fe2 Binary files /dev/null and b/concepts/402_3.png differ diff --git a/concepts/402_4.png b/concepts/402_4.png new file mode 100644 index 0000000000000000000000000000000000000000..80ef1e3f1fab89ed7efc6952ab89811c6c3717b5 Binary files /dev/null and b/concepts/402_4.png differ diff --git a/concepts/402_5.png b/concepts/402_5.png new file mode 100644 index 0000000000000000000000000000000000000000..c68eb18c40f53267ad8e6fdbc3c6ccb1bac1247b Binary files /dev/null and b/concepts/402_5.png differ diff --git a/concepts/402_6.png b/concepts/402_6.png new file mode 100644 index 0000000000000000000000000000000000000000..91360633ffb76dc467254dfed9fc07035bf6721e Binary files /dev/null and b/concepts/402_6.png differ diff --git a/concepts/402_7.png b/concepts/402_7.png new file mode 100644 index 0000000000000000000000000000000000000000..0e08302da9208ed6a8a90365b33f1aad95d703af Binary files /dev/null and b/concepts/402_7.png differ diff --git a/concepts/402_8.png b/concepts/402_8.png new file mode 100644 index 0000000000000000000000000000000000000000..f14321e3a171eabcace62deae42700f1a5f81b8c Binary files /dev/null and b/concepts/402_8.png differ diff --git a/concepts/403_0.png b/concepts/403_0.png new file mode 100644 index 0000000000000000000000000000000000000000..3276dff0532374e689a90a7c139e23a60c5631e6 Binary files /dev/null and b/concepts/403_0.png differ diff --git a/concepts/403_1.png b/concepts/403_1.png new file mode 100644 index 0000000000000000000000000000000000000000..27fa0879e48842041a56dc0c3f354e87c8f1d3a5 Binary files /dev/null and b/concepts/403_1.png differ diff --git a/concepts/403_2.png b/concepts/403_2.png new file mode 100644 index 0000000000000000000000000000000000000000..915bab84691ecba51c829811057cf4d269e04041 Binary files /dev/null and b/concepts/403_2.png differ diff --git a/concepts/403_3.png b/concepts/403_3.png new file mode 100644 index 0000000000000000000000000000000000000000..099707afd08a31875d75faa81f4131c5ae555506 Binary files /dev/null and b/concepts/403_3.png differ diff --git a/concepts/403_4.png b/concepts/403_4.png new file mode 100644 index 0000000000000000000000000000000000000000..a9aa5746425f7c253e0e916dab2a22d0b988bc71 Binary files /dev/null and b/concepts/403_4.png differ diff --git a/concepts/403_5.png b/concepts/403_5.png new file mode 100644 index 0000000000000000000000000000000000000000..e7b213019258d5f90ac9741c6b0c393fef44314f Binary files /dev/null and b/concepts/403_5.png differ diff --git a/concepts/403_6.png b/concepts/403_6.png new file mode 100644 index 0000000000000000000000000000000000000000..f5c5b9aff02bd5e65706cc9f29447eafac7cd67a Binary files /dev/null and b/concepts/403_6.png differ diff --git a/concepts/403_8.png b/concepts/403_8.png new file mode 100644 index 0000000000000000000000000000000000000000..d6e46a89b19f3049a61c7e528f9addcfeeedda22 Binary files /dev/null and b/concepts/403_8.png differ diff --git a/concepts/404_0.png b/concepts/404_0.png new file mode 100644 index 0000000000000000000000000000000000000000..14be0ce44603fd1d403d5f4f0ee0a44741a0afce Binary files /dev/null and b/concepts/404_0.png differ diff --git a/concepts/404_10.png b/concepts/404_10.png new file mode 100644 index 0000000000000000000000000000000000000000..9b25fde91e970a32b042c406bf091fab4fd7ca4b Binary files /dev/null and b/concepts/404_10.png differ diff --git a/concepts/404_2.png b/concepts/404_2.png new file mode 100644 index 0000000000000000000000000000000000000000..a4ac09347e0f1638b0cca34a4af83c6df4942055 Binary files /dev/null and b/concepts/404_2.png differ diff --git a/concepts/404_3.png b/concepts/404_3.png new file mode 100644 index 0000000000000000000000000000000000000000..e5249bcb2f7df44aa01bb4e832c479fc4b312a44 Binary files /dev/null and b/concepts/404_3.png differ diff --git a/concepts/404_4.png b/concepts/404_4.png new file mode 100644 index 0000000000000000000000000000000000000000..58a5ffab7493df9e3367d9ab5ccdd348c0a1f31b Binary files /dev/null and b/concepts/404_4.png differ diff --git a/concepts/404_5.png b/concepts/404_5.png new file mode 100644 index 0000000000000000000000000000000000000000..fa6b496ccdb3812ecadfa6dc42063f15524bd1e9 Binary files /dev/null and b/concepts/404_5.png differ diff --git a/concepts/404_6.png b/concepts/404_6.png new file mode 100644 index 0000000000000000000000000000000000000000..9231db001f4a479ccb6de2d3581d905b58979232 Binary files /dev/null and b/concepts/404_6.png differ diff --git a/concepts/404_7.png b/concepts/404_7.png new file mode 100644 index 0000000000000000000000000000000000000000..f69e30cd7f7273d8c7a715fee82f25a1570a7e62 Binary files /dev/null and b/concepts/404_7.png differ diff --git a/concepts/405_0.png b/concepts/405_0.png new file mode 100644 index 0000000000000000000000000000000000000000..cf36fc61af31d9a4a85d30317ad9df2f31db1046 Binary files /dev/null and b/concepts/405_0.png differ diff --git a/concepts/405_11.png b/concepts/405_11.png new file mode 100644 index 0000000000000000000000000000000000000000..6eb7dd0baaef8480d0d45f4877d76a091366879a Binary files /dev/null and b/concepts/405_11.png differ diff --git a/concepts/405_12.png b/concepts/405_12.png new file mode 100644 index 0000000000000000000000000000000000000000..cecd4548c95ca620d908627ab5b7066607ed7c88 Binary files /dev/null and b/concepts/405_12.png differ diff --git a/concepts/405_14.png b/concepts/405_14.png new file mode 100644 index 0000000000000000000000000000000000000000..1dacdc8728fb12dd19c5e3cfbb5c5495b7886146 Binary files /dev/null and b/concepts/405_14.png differ diff --git a/concepts/405_2.png b/concepts/405_2.png new file mode 100644 index 0000000000000000000000000000000000000000..19a08a8a05ec4db5129329cea359e994b26b7b56 Binary files /dev/null and b/concepts/405_2.png differ diff --git a/concepts/405_3.png b/concepts/405_3.png new file mode 100644 index 0000000000000000000000000000000000000000..4a3d30ef77f79e943c21a131238902d02f99a54e Binary files /dev/null and b/concepts/405_3.png differ diff --git a/concepts/405_6.png b/concepts/405_6.png new file mode 100644 index 0000000000000000000000000000000000000000..8058cccec8f8f9eef67402fa13a1a8f13b101ed9 Binary files /dev/null and b/concepts/405_6.png differ diff --git a/concepts/405_7.png b/concepts/405_7.png new file mode 100644 index 0000000000000000000000000000000000000000..c209212728e9ea66953f8def0d187f12dde53f77 Binary files /dev/null and b/concepts/405_7.png differ diff --git a/concepts/406_0.png b/concepts/406_0.png new file mode 100644 index 0000000000000000000000000000000000000000..c69e152802b2c4e2d7f9ab1ac88563e2aa8c43bb Binary files /dev/null and b/concepts/406_0.png differ diff --git a/concepts/406_1.png b/concepts/406_1.png new file mode 100644 index 0000000000000000000000000000000000000000..b5898fe91d2cbde0946632ab46d408f64a07a60a Binary files /dev/null and b/concepts/406_1.png differ diff --git a/concepts/406_3.png b/concepts/406_3.png new file mode 100644 index 0000000000000000000000000000000000000000..9d64f0069d059c61ecb8e69fc8a958ae4b5d445c Binary files /dev/null and b/concepts/406_3.png differ diff --git a/concepts/406_4.png b/concepts/406_4.png new file mode 100644 index 0000000000000000000000000000000000000000..8358ba00a72497f913cae0fc6278e3bf05ec1f98 Binary files /dev/null and b/concepts/406_4.png differ diff --git a/concepts/406_5.png b/concepts/406_5.png new file mode 100644 index 0000000000000000000000000000000000000000..0f08c64303beeb0d1e34bfc29eb1b1b14f81da63 Binary files /dev/null and b/concepts/406_5.png differ diff --git a/concepts/406_6.png b/concepts/406_6.png new file mode 100644 index 0000000000000000000000000000000000000000..d6b62159f452bf4e45d8718310ba3ea44a821635 Binary files /dev/null and b/concepts/406_6.png differ diff --git a/concepts/406_7.png b/concepts/406_7.png new file mode 100644 index 0000000000000000000000000000000000000000..c5cc8a281a0990a4bea1a34af4c03a5f97a9f629 Binary files /dev/null and b/concepts/406_7.png differ diff --git a/concepts/406_8.png b/concepts/406_8.png new file mode 100644 index 0000000000000000000000000000000000000000..8b4018445a8c367b56e3af82d3d72d37bbfe8305 Binary files /dev/null and b/concepts/406_8.png differ diff --git a/concepts/407_0.png b/concepts/407_0.png new file mode 100644 index 0000000000000000000000000000000000000000..25e97b45dbdf9c8d0e748a09410c8d3c9a7f8229 Binary files /dev/null and b/concepts/407_0.png differ diff --git a/concepts/407_1.png b/concepts/407_1.png new file mode 100644 index 0000000000000000000000000000000000000000..ef2f2ba18707e3c809b7caafdd3d7096eb6f9b64 Binary files /dev/null and b/concepts/407_1.png differ diff --git a/concepts/407_2.png b/concepts/407_2.png new file mode 100644 index 0000000000000000000000000000000000000000..c9adbee3228d3b2fe49cc9b01cb1c0af0351862a Binary files /dev/null and b/concepts/407_2.png differ diff --git a/concepts/407_3.png b/concepts/407_3.png new file mode 100644 index 0000000000000000000000000000000000000000..46dd59a1674e2c061e186fc79362b832e6f7e10f Binary files /dev/null and b/concepts/407_3.png differ diff --git a/concepts/407_4.png b/concepts/407_4.png new file mode 100644 index 0000000000000000000000000000000000000000..d00ba4f4cfcb933bb2be0a070cd02c2deff8a899 Binary files /dev/null and b/concepts/407_4.png differ diff --git a/concepts/407_6.png b/concepts/407_6.png new file mode 100644 index 0000000000000000000000000000000000000000..33c2118eef25cc67ddd4ff72b8c211c583210f8b Binary files /dev/null and b/concepts/407_6.png differ diff --git a/concepts/407_7.png b/concepts/407_7.png new file mode 100644 index 0000000000000000000000000000000000000000..9f0a8a542e6d8288c9a5ccdd8f09bcd9c79eb789 Binary files /dev/null and b/concepts/407_7.png differ diff --git a/concepts/407_9.png b/concepts/407_9.png new file mode 100644 index 0000000000000000000000000000000000000000..ba525cd67b30830dc2debd31e952a3354f9afe2c Binary files /dev/null and b/concepts/407_9.png differ diff --git a/concepts/408_0.png b/concepts/408_0.png new file mode 100644 index 0000000000000000000000000000000000000000..84ccd51eeb48f840258000df3b0cc945e5ac70af Binary files /dev/null and b/concepts/408_0.png differ diff --git a/concepts/408_14.png b/concepts/408_14.png new file mode 100644 index 0000000000000000000000000000000000000000..8b7e88ccf82fac111b9845326e2e6d926f9cfe34 Binary files /dev/null and b/concepts/408_14.png differ diff --git a/concepts/408_15.png b/concepts/408_15.png new file mode 100644 index 0000000000000000000000000000000000000000..a4ce6247a05935681ad961dae3e0ce0b1b01f9d8 Binary files /dev/null and b/concepts/408_15.png differ diff --git a/concepts/408_2.png b/concepts/408_2.png new file mode 100644 index 0000000000000000000000000000000000000000..cf97ee566cd9418952db3ef3744aae13f9a662fb Binary files /dev/null and b/concepts/408_2.png differ diff --git a/concepts/408_5.png b/concepts/408_5.png new file mode 100644 index 0000000000000000000000000000000000000000..fc4bf219e083f64c8e636a08de53d21adb40018f Binary files /dev/null and b/concepts/408_5.png differ diff --git a/concepts/408_6.png b/concepts/408_6.png new file mode 100644 index 0000000000000000000000000000000000000000..3037cd5a559c947c3e09d7563a3fe84e15807933 Binary files /dev/null and b/concepts/408_6.png differ diff --git a/concepts/409_0.png b/concepts/409_0.png new file mode 100644 index 0000000000000000000000000000000000000000..425b2f1714d37fd2abb2f1eefe16fb62a135dc42 Binary files /dev/null and b/concepts/409_0.png differ diff --git a/concepts/409_1.png b/concepts/409_1.png new file mode 100644 index 0000000000000000000000000000000000000000..0a82aec4239af869b81ddab3660af737e71a368a Binary files /dev/null and b/concepts/409_1.png differ diff --git a/concepts/409_13.png b/concepts/409_13.png new file mode 100644 index 0000000000000000000000000000000000000000..6b959efd9f8b12e1550f41b3540eab121c471435 Binary files /dev/null and b/concepts/409_13.png differ diff --git a/concepts/409_16.png b/concepts/409_16.png new file mode 100644 index 0000000000000000000000000000000000000000..2ac49efa41bf9d54153f300564a4411fec4c16b2 Binary files /dev/null and b/concepts/409_16.png differ diff --git a/concepts/409_19.png b/concepts/409_19.png new file mode 100644 index 0000000000000000000000000000000000000000..a9289928bd817130b131b94b5f9f02f10761a935 Binary files /dev/null and b/concepts/409_19.png differ diff --git a/concepts/409_2.png b/concepts/409_2.png new file mode 100644 index 0000000000000000000000000000000000000000..f2fd6418ebc3e13f3cb8454162c9ccee1b415000 Binary files /dev/null and b/concepts/409_2.png differ diff --git a/concepts/409_5.png b/concepts/409_5.png new file mode 100644 index 0000000000000000000000000000000000000000..7ff3fd6d31386453e74dbfb12d20f1d02a93cb55 Binary files /dev/null and b/concepts/409_5.png differ diff --git a/concepts/409_6.png b/concepts/409_6.png new file mode 100644 index 0000000000000000000000000000000000000000..0a32cdcc6c085f15e6ecf2054ef8a096c30f8ad2 Binary files /dev/null and b/concepts/409_6.png differ diff --git a/concepts/40_0.png b/concepts/40_0.png new file mode 100644 index 0000000000000000000000000000000000000000..bfa99bd65f5c71f7facfd053b03a2ad66eef3b43 Binary files /dev/null and b/concepts/40_0.png differ diff --git a/concepts/40_1.png b/concepts/40_1.png new file mode 100644 index 0000000000000000000000000000000000000000..55c5ca41b71afa1fc63073c278b54ca568b814ee Binary files /dev/null and b/concepts/40_1.png differ diff --git a/concepts/40_12.png b/concepts/40_12.png new file mode 100644 index 0000000000000000000000000000000000000000..ff3ab8995edee287c32dcbce2dda052b7f2cd3cf Binary files /dev/null and b/concepts/40_12.png differ diff --git a/concepts/40_13.png b/concepts/40_13.png new file mode 100644 index 0000000000000000000000000000000000000000..32bb0a2e036d06750af00878de86445212a437f7 Binary files /dev/null and b/concepts/40_13.png differ diff --git a/concepts/40_2.png b/concepts/40_2.png new file mode 100644 index 0000000000000000000000000000000000000000..3e351ab941cef83e051edf211fccee4c9dd977d5 Binary files /dev/null and b/concepts/40_2.png differ diff --git a/concepts/40_5.png b/concepts/40_5.png new file mode 100644 index 0000000000000000000000000000000000000000..1aeca67a89828c08697e62ec077b3f39b90c5263 Binary files /dev/null and b/concepts/40_5.png differ diff --git a/concepts/40_6.png b/concepts/40_6.png new file mode 100644 index 0000000000000000000000000000000000000000..bc1def727011a83b9429de75e8935278ca1985b6 Binary files /dev/null and b/concepts/40_6.png differ diff --git a/concepts/40_8.png b/concepts/40_8.png new file mode 100644 index 0000000000000000000000000000000000000000..233f57158aabea5436712611f8bc8d49caab3c5d Binary files /dev/null and b/concepts/40_8.png differ diff --git a/concepts/410_0.png b/concepts/410_0.png new file mode 100644 index 0000000000000000000000000000000000000000..fc2d5c3953d06294a093f4850afe72018b8251b0 Binary files /dev/null and b/concepts/410_0.png differ diff --git a/concepts/410_1.png b/concepts/410_1.png new file mode 100644 index 0000000000000000000000000000000000000000..d391480451955af1f714243ba669dccf50850075 Binary files /dev/null and b/concepts/410_1.png differ diff --git a/concepts/410_10.png b/concepts/410_10.png new file mode 100644 index 0000000000000000000000000000000000000000..51d6630723964de270ebda38e871cb58702287be Binary files /dev/null and b/concepts/410_10.png differ diff --git a/concepts/410_14.png b/concepts/410_14.png new file mode 100644 index 0000000000000000000000000000000000000000..dac9efcf0cadb61dd2b9c280efa201f819c71523 Binary files /dev/null and b/concepts/410_14.png differ diff --git a/concepts/410_17.png b/concepts/410_17.png new file mode 100644 index 0000000000000000000000000000000000000000..233ab330538142a7bc055f4a2f0d0b3e4405ad1b Binary files /dev/null and b/concepts/410_17.png differ diff --git a/concepts/410_19.png b/concepts/410_19.png new file mode 100644 index 0000000000000000000000000000000000000000..a9fd2b2911e73291c0fedf5a61055a7d9c1d9fed Binary files /dev/null and b/concepts/410_19.png differ diff --git a/concepts/410_8.png b/concepts/410_8.png new file mode 100644 index 0000000000000000000000000000000000000000..536146629f6a55221c1a05a60c0f17a92a47a460 Binary files /dev/null and b/concepts/410_8.png differ diff --git a/concepts/411_1.png b/concepts/411_1.png new file mode 100644 index 0000000000000000000000000000000000000000..e80ef6b433263425116f35ff22d26ab9dfc24c24 Binary files /dev/null and b/concepts/411_1.png differ diff --git a/concepts/411_11.png b/concepts/411_11.png new file mode 100644 index 0000000000000000000000000000000000000000..816ce98ad502c10502494734e3bd00627a082eae Binary files /dev/null and b/concepts/411_11.png differ diff --git a/concepts/411_19.png b/concepts/411_19.png new file mode 100644 index 0000000000000000000000000000000000000000..ad50e1b2988617e79e194833ff9fd6cf96672772 Binary files /dev/null and b/concepts/411_19.png differ diff --git a/concepts/411_5.png b/concepts/411_5.png new file mode 100644 index 0000000000000000000000000000000000000000..dec61a617fb4bab9cccb6b653e9d302582f451a9 Binary files /dev/null and b/concepts/411_5.png differ diff --git a/concepts/411_6.png b/concepts/411_6.png new file mode 100644 index 0000000000000000000000000000000000000000..59ad365a53237e12efa22cdbe01566b90b8a58e2 Binary files /dev/null and b/concepts/411_6.png differ diff --git a/concepts/411_7.png b/concepts/411_7.png new file mode 100644 index 0000000000000000000000000000000000000000..8afafef734316f94c9202a55c763d71cb7163baf Binary files /dev/null and b/concepts/411_7.png differ diff --git a/concepts/411_8.png b/concepts/411_8.png new file mode 100644 index 0000000000000000000000000000000000000000..19541ec4fcb182b08263d96c5344bac36a7571ac Binary files /dev/null and b/concepts/411_8.png differ diff --git a/concepts/411_9.png b/concepts/411_9.png new file mode 100644 index 0000000000000000000000000000000000000000..eaf92b41a22a75d114a7cc8c0c6f1d08b2b8de95 Binary files /dev/null and b/concepts/411_9.png differ diff --git a/concepts/412_1.png b/concepts/412_1.png new file mode 100644 index 0000000000000000000000000000000000000000..c4047eda6eb1ebd9bfd610746a9af12b006d4af0 Binary files /dev/null and b/concepts/412_1.png differ diff --git a/concepts/412_10.png b/concepts/412_10.png new file mode 100644 index 0000000000000000000000000000000000000000..b8517c110b6bf7260d36eb9fca4dae0a047cb0cb Binary files /dev/null and b/concepts/412_10.png differ diff --git a/concepts/412_15.png b/concepts/412_15.png new file mode 100644 index 0000000000000000000000000000000000000000..578904aa5dd7be40ebd23d01fabed52052c9f99e Binary files /dev/null and b/concepts/412_15.png differ diff --git a/concepts/412_16.png b/concepts/412_16.png new file mode 100644 index 0000000000000000000000000000000000000000..f011e01bfc7dd60e911e921f3aee9ec362c0cc29 Binary files /dev/null and b/concepts/412_16.png differ diff --git a/concepts/412_19.png b/concepts/412_19.png new file mode 100644 index 0000000000000000000000000000000000000000..919365077b079db14f4efe336810bd273077edd3 Binary files /dev/null and b/concepts/412_19.png differ diff --git a/concepts/412_5.png b/concepts/412_5.png new file mode 100644 index 0000000000000000000000000000000000000000..6da44b587a5271848373fe3d3e46c3c4f6a49bba Binary files /dev/null and b/concepts/412_5.png differ diff --git a/concepts/412_7.png b/concepts/412_7.png new file mode 100644 index 0000000000000000000000000000000000000000..8cf5c6763803a818a8098d5c90b32586defbfe80 Binary files /dev/null and b/concepts/412_7.png differ diff --git a/concepts/412_9.png b/concepts/412_9.png new file mode 100644 index 0000000000000000000000000000000000000000..eb8df3d6b1da5d26c97131aa36ba52651708ffc0 Binary files /dev/null and b/concepts/412_9.png differ diff --git a/concepts/413_0.png b/concepts/413_0.png new file mode 100644 index 0000000000000000000000000000000000000000..fa6fcc273e168a435d10ee642b072daa967b2855 Binary files /dev/null and b/concepts/413_0.png differ diff --git a/concepts/413_1.png b/concepts/413_1.png new file mode 100644 index 0000000000000000000000000000000000000000..d033eb837ef650fcfffbc50dc0361e86e8bf6ec5 Binary files /dev/null and b/concepts/413_1.png differ diff --git a/concepts/413_2.png b/concepts/413_2.png new file mode 100644 index 0000000000000000000000000000000000000000..1f6b272ed665a29c11193f8d7f76d79f422231fe Binary files /dev/null and b/concepts/413_2.png differ diff --git a/concepts/413_3.png b/concepts/413_3.png new file mode 100644 index 0000000000000000000000000000000000000000..9e856ddd3b311580d8dd1edb6195b6117cb8185c Binary files /dev/null and b/concepts/413_3.png differ diff --git a/concepts/413_4.png b/concepts/413_4.png new file mode 100644 index 0000000000000000000000000000000000000000..7149a7cdc8b07732483dfeda1d68f0877a7de2b7 Binary files /dev/null and b/concepts/413_4.png differ diff --git a/concepts/413_5.png b/concepts/413_5.png new file mode 100644 index 0000000000000000000000000000000000000000..ed1e80a35aa8369422797207a5800f01af355b20 Binary files /dev/null and b/concepts/413_5.png differ diff --git a/concepts/413_7.png b/concepts/413_7.png new file mode 100644 index 0000000000000000000000000000000000000000..a8e453d8b544a31af738417ea889c07a2454485b Binary files /dev/null and b/concepts/413_7.png differ diff --git a/concepts/413_8.png b/concepts/413_8.png new file mode 100644 index 0000000000000000000000000000000000000000..a033ebacee9c34c8415bcaf1996b22c177eacd6b Binary files /dev/null and b/concepts/413_8.png differ diff --git a/concepts/414_14.png b/concepts/414_14.png new file mode 100644 index 0000000000000000000000000000000000000000..451406cc636df31feb940306818f99718c438ea6 Binary files /dev/null and b/concepts/414_14.png differ diff --git a/concepts/414_17.png b/concepts/414_17.png new file mode 100644 index 0000000000000000000000000000000000000000..f4b48b9540e588f327239efb69c7762631781678 Binary files /dev/null and b/concepts/414_17.png differ diff --git a/concepts/414_20.png b/concepts/414_20.png new file mode 100644 index 0000000000000000000000000000000000000000..8eeb624f95e051474b8b47c41331899b887c1afc Binary files /dev/null and b/concepts/414_20.png differ diff --git a/concepts/414_23.png b/concepts/414_23.png new file mode 100644 index 0000000000000000000000000000000000000000..2dc9860d8587c201be4c84788e86fd1234c8dc4a Binary files /dev/null and b/concepts/414_23.png differ diff --git a/concepts/414_3.png b/concepts/414_3.png new file mode 100644 index 0000000000000000000000000000000000000000..fe850761fbe67d486fd8e9a6c9f272c831fd87d7 Binary files /dev/null and b/concepts/414_3.png differ diff --git a/concepts/414_4.png b/concepts/414_4.png new file mode 100644 index 0000000000000000000000000000000000000000..5e2ed4006080afff46f9a0572ce5e868282bcf8c Binary files /dev/null and b/concepts/414_4.png differ diff --git a/concepts/414_7.png b/concepts/414_7.png new file mode 100644 index 0000000000000000000000000000000000000000..b0fdf9a49d96e6b6bf049432d7c513ffe985dd07 Binary files /dev/null and b/concepts/414_7.png differ diff --git a/concepts/415_10.png b/concepts/415_10.png new file mode 100644 index 0000000000000000000000000000000000000000..6176ae973e027e32c5a028db707c39c1ea64b067 Binary files /dev/null and b/concepts/415_10.png differ diff --git a/concepts/415_15.png b/concepts/415_15.png new file mode 100644 index 0000000000000000000000000000000000000000..eee8b6b3fac61f3d08f95fa0e4ad1d8b65483169 Binary files /dev/null and b/concepts/415_15.png differ diff --git a/concepts/415_20.png b/concepts/415_20.png new file mode 100644 index 0000000000000000000000000000000000000000..7182dc952bf9548fa34fa2660a668a64b814d173 Binary files /dev/null and b/concepts/415_20.png differ diff --git a/concepts/415_22.png b/concepts/415_22.png new file mode 100644 index 0000000000000000000000000000000000000000..8f4600f244eecca4755a55e77074bf2260a9c03b Binary files /dev/null and b/concepts/415_22.png differ diff --git a/concepts/415_4.png b/concepts/415_4.png new file mode 100644 index 0000000000000000000000000000000000000000..cdb8f55d7d28ca6796ecb257a85518f4fe121afd Binary files /dev/null and b/concepts/415_4.png differ diff --git a/concepts/415_6.png b/concepts/415_6.png new file mode 100644 index 0000000000000000000000000000000000000000..176f2d3d67dec1892a23f6935df9441d01dd44e0 Binary files /dev/null and b/concepts/415_6.png differ diff --git a/concepts/415_7.png b/concepts/415_7.png new file mode 100644 index 0000000000000000000000000000000000000000..99174e7bd8fdc05b87664ff92273d702083a1431 Binary files /dev/null and b/concepts/415_7.png differ diff --git a/concepts/415_8.png b/concepts/415_8.png new file mode 100644 index 0000000000000000000000000000000000000000..1ddfb62d3293ef47aac58a7cb75218f7b8fd4a48 Binary files /dev/null and b/concepts/415_8.png differ diff --git a/concepts/416_0.png b/concepts/416_0.png new file mode 100644 index 0000000000000000000000000000000000000000..4efb2c53fa68e51282527c80226746e7f19b5798 Binary files /dev/null and b/concepts/416_0.png differ diff --git a/concepts/416_1.png b/concepts/416_1.png new file mode 100644 index 0000000000000000000000000000000000000000..81d54e4a5800b5f6180e3d2cda105761117451c8 Binary files /dev/null and b/concepts/416_1.png differ diff --git a/concepts/416_2.png b/concepts/416_2.png new file mode 100644 index 0000000000000000000000000000000000000000..a1f075a1999d4d9d625f44b410204408c8dc315f Binary files /dev/null and b/concepts/416_2.png differ diff --git a/concepts/416_4.png b/concepts/416_4.png new file mode 100644 index 0000000000000000000000000000000000000000..51f436cb5cf0e775517be7412f3e87793e3444b8 Binary files /dev/null and b/concepts/416_4.png differ diff --git a/concepts/416_5.png b/concepts/416_5.png new file mode 100644 index 0000000000000000000000000000000000000000..61bfbb417253b7535893be4802f2a7ae87c6a35b Binary files /dev/null and b/concepts/416_5.png differ diff --git a/concepts/416_6.png b/concepts/416_6.png new file mode 100644 index 0000000000000000000000000000000000000000..a5c8a5b681aa0cd8a3c056b52dcacd088b0ad9ce Binary files /dev/null and b/concepts/416_6.png differ diff --git a/concepts/416_7.png b/concepts/416_7.png new file mode 100644 index 0000000000000000000000000000000000000000..728a189fb52f6e6360d9dc8f87654c49a48f3e2d Binary files /dev/null and b/concepts/416_7.png differ diff --git a/concepts/416_9.png b/concepts/416_9.png new file mode 100644 index 0000000000000000000000000000000000000000..6fd355c81300ea3ea3a4b5079ea6ee56c88f5ba4 Binary files /dev/null and b/concepts/416_9.png differ diff --git a/concepts/417_0.png b/concepts/417_0.png new file mode 100644 index 0000000000000000000000000000000000000000..bb094ccf3ea5236e64b0f34f9ddcbc5604bf00b7 Binary files /dev/null and b/concepts/417_0.png differ diff --git a/concepts/417_10.png b/concepts/417_10.png new file mode 100644 index 0000000000000000000000000000000000000000..b2d94b2590cff034c5b7d0e4c7b3c7f14aaa70f0 Binary files /dev/null and b/concepts/417_10.png differ diff --git a/concepts/417_11.png b/concepts/417_11.png new file mode 100644 index 0000000000000000000000000000000000000000..d776538697459a8dcd02e8e8195d6a1dd3dd3561 Binary files /dev/null and b/concepts/417_11.png differ diff --git a/concepts/417_2.png b/concepts/417_2.png new file mode 100644 index 0000000000000000000000000000000000000000..be7935ccee7f2356953c0000dc038de7f75985f0 Binary files /dev/null and b/concepts/417_2.png differ diff --git a/concepts/417_4.png b/concepts/417_4.png new file mode 100644 index 0000000000000000000000000000000000000000..f9888ff3e50012180fcd41fb3225a4c20d3bc259 Binary files /dev/null and b/concepts/417_4.png differ diff --git a/concepts/417_5.png b/concepts/417_5.png new file mode 100644 index 0000000000000000000000000000000000000000..1b7dc870540d396ce7288fce80011f1fcd99d17e Binary files /dev/null and b/concepts/417_5.png differ diff --git a/concepts/417_7.png b/concepts/417_7.png new file mode 100644 index 0000000000000000000000000000000000000000..f295b2b8a5fbf566037e153baaa8891c25c0a444 Binary files /dev/null and b/concepts/417_7.png differ diff --git a/concepts/417_9.png b/concepts/417_9.png new file mode 100644 index 0000000000000000000000000000000000000000..cfbe54e14b5febb8573a69e7b5502c3772a6d072 Binary files /dev/null and b/concepts/417_9.png differ diff --git a/concepts/418_0.png b/concepts/418_0.png new file mode 100644 index 0000000000000000000000000000000000000000..8d0a8b576e3c82c3f4cf068b94fee9ca667e30cb Binary files /dev/null and b/concepts/418_0.png differ diff --git a/concepts/418_1.png b/concepts/418_1.png new file mode 100644 index 0000000000000000000000000000000000000000..b20c7c6dddde8a1b01ebff3b993d7713e0d493e7 Binary files /dev/null and b/concepts/418_1.png differ diff --git a/concepts/418_2.png b/concepts/418_2.png new file mode 100644 index 0000000000000000000000000000000000000000..60871fea24c9a071ee89d630913d3988c36e128f Binary files /dev/null and b/concepts/418_2.png differ diff --git a/concepts/418_3.png b/concepts/418_3.png new file mode 100644 index 0000000000000000000000000000000000000000..c31664d4cb2ef916eff46170ea8b5f867ffdba00 Binary files /dev/null and b/concepts/418_3.png differ diff --git a/concepts/418_4.png b/concepts/418_4.png new file mode 100644 index 0000000000000000000000000000000000000000..b24b1cc44ccd882980662283a506e515a5ef6510 Binary files /dev/null and b/concepts/418_4.png differ diff --git a/concepts/418_6.png b/concepts/418_6.png new file mode 100644 index 0000000000000000000000000000000000000000..d335891af550cc062bfb8ee0476cb03f25da2ace Binary files /dev/null and b/concepts/418_6.png differ diff --git a/concepts/418_7.png b/concepts/418_7.png new file mode 100644 index 0000000000000000000000000000000000000000..26cf8e313035f0286b0d0afdfd2d84b41ab9e541 Binary files /dev/null and b/concepts/418_7.png differ diff --git a/concepts/418_9.png b/concepts/418_9.png new file mode 100644 index 0000000000000000000000000000000000000000..9bf6df588474e22b89a8b1aa14dfc7fecfc89865 Binary files /dev/null and b/concepts/418_9.png differ diff --git a/concepts/419_0.png b/concepts/419_0.png new file mode 100644 index 0000000000000000000000000000000000000000..0aded42226c7f34f5138fa894c8999bc47517a78 Binary files /dev/null and b/concepts/419_0.png differ diff --git a/concepts/419_14.png b/concepts/419_14.png new file mode 100644 index 0000000000000000000000000000000000000000..8e5bcb84ed6622922b79d6a05f052436052eae90 Binary files /dev/null and b/concepts/419_14.png differ diff --git a/concepts/419_22.png b/concepts/419_22.png new file mode 100644 index 0000000000000000000000000000000000000000..13f4bcae1fcdef44390fa9ebeb13c964b9f4263e Binary files /dev/null and b/concepts/419_22.png differ diff --git a/concepts/419_3.png b/concepts/419_3.png new file mode 100644 index 0000000000000000000000000000000000000000..d7d76f0c20f8c54fe0b5f0e465b78582c8d05a7f Binary files /dev/null and b/concepts/419_3.png differ diff --git a/concepts/419_7.png b/concepts/419_7.png new file mode 100644 index 0000000000000000000000000000000000000000..54504d28c90039bd2c48fe3380d5040dd9eafc6a Binary files /dev/null and b/concepts/419_7.png differ diff --git a/concepts/419_9.png b/concepts/419_9.png new file mode 100644 index 0000000000000000000000000000000000000000..9c062e6f1bb7f1815b6edafbdcf7725cf614a945 Binary files /dev/null and b/concepts/419_9.png differ diff --git a/concepts/41_0.png b/concepts/41_0.png new file mode 100644 index 0000000000000000000000000000000000000000..bdbb1e4509134502522d1b0c4191272f0a06f492 Binary files /dev/null and b/concepts/41_0.png differ diff --git a/concepts/41_1.png b/concepts/41_1.png new file mode 100644 index 0000000000000000000000000000000000000000..96376fb43e6a7f5d8ab900b68f3b3f4f0e99840e Binary files /dev/null and b/concepts/41_1.png differ diff --git a/concepts/41_2.png b/concepts/41_2.png new file mode 100644 index 0000000000000000000000000000000000000000..fd736ce943cdaa0f0d7290a6572f5a54cb0b3ee8 Binary files /dev/null and b/concepts/41_2.png differ diff --git a/concepts/41_3.png b/concepts/41_3.png new file mode 100644 index 0000000000000000000000000000000000000000..f7687888c43e345e66f9959a69de431fbd71c468 Binary files /dev/null and b/concepts/41_3.png differ diff --git a/concepts/41_4.png b/concepts/41_4.png new file mode 100644 index 0000000000000000000000000000000000000000..c0aa422d74091cee29c473a9f215b35807374a21 Binary files /dev/null and b/concepts/41_4.png differ diff --git a/concepts/41_5.png b/concepts/41_5.png new file mode 100644 index 0000000000000000000000000000000000000000..5568728d091f4d398c6a9118b6c0f0d120045244 Binary files /dev/null and b/concepts/41_5.png differ diff --git a/concepts/41_8.png b/concepts/41_8.png new file mode 100644 index 0000000000000000000000000000000000000000..b091bf21f429a5b1e576f9b2e3f289a6354e9311 Binary files /dev/null and b/concepts/41_8.png differ diff --git a/concepts/41_9.png b/concepts/41_9.png new file mode 100644 index 0000000000000000000000000000000000000000..d3210c87dc97cf96d64de6096172b4aa3c601f14 Binary files /dev/null and b/concepts/41_9.png differ diff --git a/concepts/420_0.png b/concepts/420_0.png new file mode 100644 index 0000000000000000000000000000000000000000..a82bce148bfb3d23b8b927620c82a621d824c8a9 Binary files /dev/null and b/concepts/420_0.png differ diff --git a/concepts/420_1.png b/concepts/420_1.png new file mode 100644 index 0000000000000000000000000000000000000000..d2ca6b5ac6e6f13a652e3b5d022d1644c9691d10 Binary files /dev/null and b/concepts/420_1.png differ diff --git a/concepts/420_2.png b/concepts/420_2.png new file mode 100644 index 0000000000000000000000000000000000000000..25eb21623ba8430262dccc7392e620fbdcdf2956 Binary files /dev/null and b/concepts/420_2.png differ diff --git a/concepts/420_3.png b/concepts/420_3.png new file mode 100644 index 0000000000000000000000000000000000000000..fb92457228b71838a7ebf560035c458a1130ab8a Binary files /dev/null and b/concepts/420_3.png differ diff --git a/concepts/420_4.png b/concepts/420_4.png new file mode 100644 index 0000000000000000000000000000000000000000..3cbd0064f39c26c706505aa1ec04030f1cbb1bdc Binary files /dev/null and b/concepts/420_4.png differ diff --git a/concepts/420_5.png b/concepts/420_5.png new file mode 100644 index 0000000000000000000000000000000000000000..1022f3b42c6d6b407fdf94c4f8e6b868762e338c Binary files /dev/null and b/concepts/420_5.png differ diff --git a/concepts/420_7.png b/concepts/420_7.png new file mode 100644 index 0000000000000000000000000000000000000000..bbe82e3663762b246d6159b8bce4e02bd0cb602a Binary files /dev/null and b/concepts/420_7.png differ diff --git a/concepts/420_8.png b/concepts/420_8.png new file mode 100644 index 0000000000000000000000000000000000000000..5b8472314f68170c8e70b939076426f87bb571b5 Binary files /dev/null and b/concepts/420_8.png differ diff --git a/concepts/421_0.png b/concepts/421_0.png new file mode 100644 index 0000000000000000000000000000000000000000..23beec2cda99b7f3ffa860fc5512d03b254cfbae Binary files /dev/null and b/concepts/421_0.png differ diff --git a/concepts/421_11.png b/concepts/421_11.png new file mode 100644 index 0000000000000000000000000000000000000000..eea8b48c529aac886816ce8444779cfd3927dc3d Binary files /dev/null and b/concepts/421_11.png differ diff --git a/concepts/421_15.png b/concepts/421_15.png new file mode 100644 index 0000000000000000000000000000000000000000..f735e5cd39b6d37f69f48c4fca8c877f2b1a5dc0 Binary files /dev/null and b/concepts/421_15.png differ diff --git a/concepts/421_17.png b/concepts/421_17.png new file mode 100644 index 0000000000000000000000000000000000000000..4bce3184a0122940630fd1504b9c1d0ab38dfbf5 Binary files /dev/null and b/concepts/421_17.png differ diff --git a/concepts/421_18.png b/concepts/421_18.png new file mode 100644 index 0000000000000000000000000000000000000000..b20977040a0cedeb1d06e183f0f07ca7b4d40ebc Binary files /dev/null and b/concepts/421_18.png differ diff --git a/concepts/421_24.png b/concepts/421_24.png new file mode 100644 index 0000000000000000000000000000000000000000..9407c8254ca5e19a335574cdc618c144cbd1cc61 Binary files /dev/null and b/concepts/421_24.png differ diff --git a/concepts/421_3.png b/concepts/421_3.png new file mode 100644 index 0000000000000000000000000000000000000000..34ddb438536dace0cec8765c9b948e5a7f655df3 Binary files /dev/null and b/concepts/421_3.png differ diff --git a/concepts/421_6.png b/concepts/421_6.png new file mode 100644 index 0000000000000000000000000000000000000000..19d29a72b074badb6191c42085f19f2bab719625 Binary files /dev/null and b/concepts/421_6.png differ diff --git a/concepts/422_0.png b/concepts/422_0.png new file mode 100644 index 0000000000000000000000000000000000000000..2d07f00194548c9cb7a6aafdc906df0979fdf30c Binary files /dev/null and b/concepts/422_0.png differ diff --git a/concepts/422_1.png b/concepts/422_1.png new file mode 100644 index 0000000000000000000000000000000000000000..b12c3622a13f3386f36a2c21c2d935813efd7e20 Binary files /dev/null and b/concepts/422_1.png differ diff --git a/concepts/422_2.png b/concepts/422_2.png new file mode 100644 index 0000000000000000000000000000000000000000..ec68c6dab81d80c1f54dd9eef251c81f688f5df2 Binary files /dev/null and b/concepts/422_2.png differ diff --git a/concepts/422_3.png b/concepts/422_3.png new file mode 100644 index 0000000000000000000000000000000000000000..356201ee82d22b98cbb7915929498036bb37e3a7 Binary files /dev/null and b/concepts/422_3.png differ diff --git a/concepts/422_4.png b/concepts/422_4.png new file mode 100644 index 0000000000000000000000000000000000000000..ffa54c62d975363d8fd405ca92a4d26f4f53931d Binary files /dev/null and b/concepts/422_4.png differ diff --git a/concepts/422_6.png b/concepts/422_6.png new file mode 100644 index 0000000000000000000000000000000000000000..c06dc263abb6f4a96938f66d2e29b32375443183 Binary files /dev/null and b/concepts/422_6.png differ diff --git a/concepts/422_7.png b/concepts/422_7.png new file mode 100644 index 0000000000000000000000000000000000000000..298f414de84f2cfa5637e3156f13e45f8667bff0 Binary files /dev/null and b/concepts/422_7.png differ diff --git a/concepts/422_8.png b/concepts/422_8.png new file mode 100644 index 0000000000000000000000000000000000000000..91837aa53949fa002bd18b93bd5b2c7dd5be9598 Binary files /dev/null and b/concepts/422_8.png differ diff --git a/concepts/423_0.png b/concepts/423_0.png new file mode 100644 index 0000000000000000000000000000000000000000..da33233af7fe5298847a4d4723f3a312f82c8245 Binary files /dev/null and b/concepts/423_0.png differ diff --git a/concepts/423_1.png b/concepts/423_1.png new file mode 100644 index 0000000000000000000000000000000000000000..086bc7bf2b602505b2732ebbe1c04258c099775d Binary files /dev/null and b/concepts/423_1.png differ diff --git a/concepts/423_3.png b/concepts/423_3.png new file mode 100644 index 0000000000000000000000000000000000000000..6cf8644a48c5dcde2d26a1553e7dcdf7d6734536 Binary files /dev/null and b/concepts/423_3.png differ diff --git a/concepts/423_4.png b/concepts/423_4.png new file mode 100644 index 0000000000000000000000000000000000000000..29d95f4db2ae380977a4fc3c837d891fa61f6fc4 Binary files /dev/null and b/concepts/423_4.png differ diff --git a/concepts/423_5.png b/concepts/423_5.png new file mode 100644 index 0000000000000000000000000000000000000000..5186a99e6f5aa441335d0b11322a20f3bb4e4f69 Binary files /dev/null and b/concepts/423_5.png differ diff --git a/concepts/423_6.png b/concepts/423_6.png new file mode 100644 index 0000000000000000000000000000000000000000..e3f571ab0f3eed2cbf8edcc5e809a1a95671eba8 Binary files /dev/null and b/concepts/423_6.png differ diff --git a/concepts/423_7.png b/concepts/423_7.png new file mode 100644 index 0000000000000000000000000000000000000000..213c7a45167a28b64e43e521ed2f1dddd996ba5d Binary files /dev/null and b/concepts/423_7.png differ diff --git a/concepts/423_8.png b/concepts/423_8.png new file mode 100644 index 0000000000000000000000000000000000000000..ed20b854346a1a7908b2967c8ba447dc3e38e87c Binary files /dev/null and b/concepts/423_8.png differ diff --git a/concepts/424_0.png b/concepts/424_0.png new file mode 100644 index 0000000000000000000000000000000000000000..525421c7e3d7c1374f80fc8895222e3d3c016978 Binary files /dev/null and b/concepts/424_0.png differ diff --git a/concepts/424_1.png b/concepts/424_1.png new file mode 100644 index 0000000000000000000000000000000000000000..dc593e57520ce8efcae54f614e9eb5507526ff79 Binary files /dev/null and b/concepts/424_1.png differ diff --git a/concepts/424_12.png b/concepts/424_12.png new file mode 100644 index 0000000000000000000000000000000000000000..9a17b49d6f522d98d571b9b5564fda78aaee73e3 Binary files /dev/null and b/concepts/424_12.png differ diff --git a/concepts/424_2.png b/concepts/424_2.png new file mode 100644 index 0000000000000000000000000000000000000000..63f8ab1c01aa60398dbb171729144d4e1710dcd7 Binary files /dev/null and b/concepts/424_2.png differ diff --git a/concepts/424_3.png b/concepts/424_3.png new file mode 100644 index 0000000000000000000000000000000000000000..0479c26cd5970558539afa285d6de22b5d160e12 Binary files /dev/null and b/concepts/424_3.png differ diff --git a/concepts/424_5.png b/concepts/424_5.png new file mode 100644 index 0000000000000000000000000000000000000000..f7dc722312e86071d98aeffd0e283e6e2980642a Binary files /dev/null and b/concepts/424_5.png differ diff --git a/concepts/424_7.png b/concepts/424_7.png new file mode 100644 index 0000000000000000000000000000000000000000..8d6d1d0de1e1dfadcb6b844f1ac3385ab5f4d35e Binary files /dev/null and b/concepts/424_7.png differ diff --git a/concepts/424_8.png b/concepts/424_8.png new file mode 100644 index 0000000000000000000000000000000000000000..633bcd33321939270c9015c006b6e15250b42deb Binary files /dev/null and b/concepts/424_8.png differ diff --git a/concepts/425_0.png b/concepts/425_0.png new file mode 100644 index 0000000000000000000000000000000000000000..37b68a0443aea9ed8083b5de06922d6146c4e72b Binary files /dev/null and b/concepts/425_0.png differ diff --git a/concepts/425_1.png b/concepts/425_1.png new file mode 100644 index 0000000000000000000000000000000000000000..2c8f39da48e8b44a426a4505a032aa91cede9685 Binary files /dev/null and b/concepts/425_1.png differ diff --git a/concepts/425_2.png b/concepts/425_2.png new file mode 100644 index 0000000000000000000000000000000000000000..ea1fccf496ca0b1190c053e3adf84d5a07cd7108 Binary files /dev/null and b/concepts/425_2.png differ diff --git a/concepts/425_3.png b/concepts/425_3.png new file mode 100644 index 0000000000000000000000000000000000000000..d24203b4cabe6058ce14408c142b4011eb6c51ee Binary files /dev/null and b/concepts/425_3.png differ diff --git a/concepts/425_4.png b/concepts/425_4.png new file mode 100644 index 0000000000000000000000000000000000000000..e4a6283c2f06a2d598a992edff21e8e9bc333905 Binary files /dev/null and b/concepts/425_4.png differ diff --git a/concepts/425_7.png b/concepts/425_7.png new file mode 100644 index 0000000000000000000000000000000000000000..142284dceb9bf965e37b89d922a0618a60a081c3 Binary files /dev/null and b/concepts/425_7.png differ diff --git a/concepts/425_8.png b/concepts/425_8.png new file mode 100644 index 0000000000000000000000000000000000000000..0070806a82a77932568f8250eb306097ed080e21 Binary files /dev/null and b/concepts/425_8.png differ diff --git a/concepts/425_9.png b/concepts/425_9.png new file mode 100644 index 0000000000000000000000000000000000000000..e370a4535eac9ee2121affdc34b9af2ead0c208c Binary files /dev/null and b/concepts/425_9.png differ diff --git a/concepts/426_0.png b/concepts/426_0.png new file mode 100644 index 0000000000000000000000000000000000000000..c4dbdd58424bd80dcb192cbbb8fd6ffcc99c158d Binary files /dev/null and b/concepts/426_0.png differ diff --git a/concepts/426_10.png b/concepts/426_10.png new file mode 100644 index 0000000000000000000000000000000000000000..940d9ce3da7666026e616df6638dd73962bc88f8 Binary files /dev/null and b/concepts/426_10.png differ diff --git a/concepts/426_12.png b/concepts/426_12.png new file mode 100644 index 0000000000000000000000000000000000000000..552da5c3b0b3ae81e3acb2f684f3e7c2d321bcd0 Binary files /dev/null and b/concepts/426_12.png differ diff --git a/concepts/426_2.png b/concepts/426_2.png new file mode 100644 index 0000000000000000000000000000000000000000..3fcfaac19c4cf449a07006d66b05f16d062cc020 Binary files /dev/null and b/concepts/426_2.png differ diff --git a/concepts/426_3.png b/concepts/426_3.png new file mode 100644 index 0000000000000000000000000000000000000000..a1ac830ba0a2dbf44c8071ceb6618c36a9bad679 Binary files /dev/null and b/concepts/426_3.png differ diff --git a/concepts/426_5.png b/concepts/426_5.png new file mode 100644 index 0000000000000000000000000000000000000000..d11f2b95bcadd5e043ce46078aeb2f480a2bd51e Binary files /dev/null and b/concepts/426_5.png differ diff --git a/concepts/426_8.png b/concepts/426_8.png new file mode 100644 index 0000000000000000000000000000000000000000..ed60c98beef90d7959073fdac72ad3e645da1a95 Binary files /dev/null and b/concepts/426_8.png differ diff --git a/concepts/426_9.png b/concepts/426_9.png new file mode 100644 index 0000000000000000000000000000000000000000..ac5079c490fafa58008d510f3664c99728315542 Binary files /dev/null and b/concepts/426_9.png differ diff --git a/concepts/427_0.png b/concepts/427_0.png new file mode 100644 index 0000000000000000000000000000000000000000..372d42ff6a65347c206607f4a1e4d383c88d6e1d Binary files /dev/null and b/concepts/427_0.png differ diff --git a/concepts/427_11.png b/concepts/427_11.png new file mode 100644 index 0000000000000000000000000000000000000000..cdf55e57f306d41a92046e1afed75c068162d78c Binary files /dev/null and b/concepts/427_11.png differ diff --git a/concepts/427_2.png b/concepts/427_2.png new file mode 100644 index 0000000000000000000000000000000000000000..013c9af8ffa809a39830fc606bc9f62d19de2038 Binary files /dev/null and b/concepts/427_2.png differ diff --git a/concepts/427_3.png b/concepts/427_3.png new file mode 100644 index 0000000000000000000000000000000000000000..8a780590a717335d5b1b58cb11d9528c1f9786d0 Binary files /dev/null and b/concepts/427_3.png differ diff --git a/concepts/427_4.png b/concepts/427_4.png new file mode 100644 index 0000000000000000000000000000000000000000..f63fa5eba1525c23447b380639cacea259d747a0 Binary files /dev/null and b/concepts/427_4.png differ diff --git a/concepts/427_5.png b/concepts/427_5.png new file mode 100644 index 0000000000000000000000000000000000000000..208186fce73f346651b59113af6320a36f7128a0 Binary files /dev/null and b/concepts/427_5.png differ diff --git a/concepts/427_6.png b/concepts/427_6.png new file mode 100644 index 0000000000000000000000000000000000000000..bcacda09ce3d8f397860660abd12b10a10d2dc83 Binary files /dev/null and b/concepts/427_6.png differ diff --git a/concepts/427_8.png b/concepts/427_8.png new file mode 100644 index 0000000000000000000000000000000000000000..bfb6a5d6e3f3d87d446858651395987fa86b2163 Binary files /dev/null and b/concepts/427_8.png differ diff --git a/concepts/428_20.png b/concepts/428_20.png new file mode 100644 index 0000000000000000000000000000000000000000..4a3cea0a7c7d16fc00a783dbd5bd12024d1f1349 Binary files /dev/null and b/concepts/428_20.png differ diff --git a/concepts/428_8.png b/concepts/428_8.png new file mode 100644 index 0000000000000000000000000000000000000000..0bd00e50041f66576b8f046bc666ec287b908731 Binary files /dev/null and b/concepts/428_8.png differ diff --git a/concepts/429_20.png b/concepts/429_20.png new file mode 100644 index 0000000000000000000000000000000000000000..88e075d895094382609f4cef436d13e3a0f2ba90 Binary files /dev/null and b/concepts/429_20.png differ diff --git a/concepts/429_21.png b/concepts/429_21.png new file mode 100644 index 0000000000000000000000000000000000000000..d916ae8cf567d75a0dcabd014e28437b7c6681e5 Binary files /dev/null and b/concepts/429_21.png differ diff --git a/concepts/429_3.png b/concepts/429_3.png new file mode 100644 index 0000000000000000000000000000000000000000..75941a57737436b3e7a36e5940dd1d8465a70e7b Binary files /dev/null and b/concepts/429_3.png differ diff --git a/concepts/42_0.png b/concepts/42_0.png new file mode 100644 index 0000000000000000000000000000000000000000..19ab1670869dd0daa38dd073140a43c4c39c7f14 Binary files /dev/null and b/concepts/42_0.png differ diff --git a/concepts/42_1.png b/concepts/42_1.png new file mode 100644 index 0000000000000000000000000000000000000000..d896b3f6858b9199b6e38f60743f0d3a1499915a Binary files /dev/null and b/concepts/42_1.png differ diff --git a/concepts/42_2.png b/concepts/42_2.png new file mode 100644 index 0000000000000000000000000000000000000000..8ee17c1a4212b0688977097f22344703597333db Binary files /dev/null and b/concepts/42_2.png differ diff --git a/concepts/42_3.png b/concepts/42_3.png new file mode 100644 index 0000000000000000000000000000000000000000..31ae31e497c0abd747eb23fca82f9578cf6673f2 Binary files /dev/null and b/concepts/42_3.png differ diff --git a/concepts/42_4.png b/concepts/42_4.png new file mode 100644 index 0000000000000000000000000000000000000000..85c9c48fc949b73ee86e53c9f72c67d030efd067 Binary files /dev/null and b/concepts/42_4.png differ diff --git a/concepts/42_5.png b/concepts/42_5.png new file mode 100644 index 0000000000000000000000000000000000000000..e782afdfb5d98a9f5d54ac7d0d7e0130137d25f0 Binary files /dev/null and b/concepts/42_5.png differ diff --git a/concepts/42_6.png b/concepts/42_6.png new file mode 100644 index 0000000000000000000000000000000000000000..bf295b4dd895b5373a42e8a94fe5e84138ab52c5 Binary files /dev/null and b/concepts/42_6.png differ diff --git a/concepts/42_8.png b/concepts/42_8.png new file mode 100644 index 0000000000000000000000000000000000000000..e2d0acad3ba51106efb7fa31c259e1073753ae9b Binary files /dev/null and b/concepts/42_8.png differ diff --git a/concepts/430_1.png b/concepts/430_1.png new file mode 100644 index 0000000000000000000000000000000000000000..a7a3cb70be95ab2bc0de2da332d1d2e13b6f7b7e Binary files /dev/null and b/concepts/430_1.png differ diff --git a/concepts/430_11.png b/concepts/430_11.png new file mode 100644 index 0000000000000000000000000000000000000000..d11b25d558e5d463776e91a34b3304e2380f10a8 Binary files /dev/null and b/concepts/430_11.png differ diff --git a/concepts/430_13.png b/concepts/430_13.png new file mode 100644 index 0000000000000000000000000000000000000000..173684af94ed3f86ad7deed89d315025f85af45e Binary files /dev/null and b/concepts/430_13.png differ diff --git a/concepts/430_4.png b/concepts/430_4.png new file mode 100644 index 0000000000000000000000000000000000000000..0e6da7aebcdc4398e9ba1cd19fd8e231149fe1a4 Binary files /dev/null and b/concepts/430_4.png differ diff --git a/concepts/430_6.png b/concepts/430_6.png new file mode 100644 index 0000000000000000000000000000000000000000..efb0d81492c809a31b621fd0c7d0819b13f0299f Binary files /dev/null and b/concepts/430_6.png differ diff --git a/concepts/430_7.png b/concepts/430_7.png new file mode 100644 index 0000000000000000000000000000000000000000..0b049de2ceaf3a09075404759ea8a9c16b94196f Binary files /dev/null and b/concepts/430_7.png differ diff --git a/concepts/430_8.png b/concepts/430_8.png new file mode 100644 index 0000000000000000000000000000000000000000..0e51092eb6297238dd91259bccef56dbe5be28bd Binary files /dev/null and b/concepts/430_8.png differ diff --git a/concepts/430_9.png b/concepts/430_9.png new file mode 100644 index 0000000000000000000000000000000000000000..3790a15d1885b37fc1bb1d406f5c91c04ef0fc21 Binary files /dev/null and b/concepts/430_9.png differ diff --git a/concepts/431_13.png b/concepts/431_13.png new file mode 100644 index 0000000000000000000000000000000000000000..ecbe759ccc5ad3624e65a0fe298d31ce6e4cc113 Binary files /dev/null and b/concepts/431_13.png differ diff --git a/concepts/431_2.png b/concepts/431_2.png new file mode 100644 index 0000000000000000000000000000000000000000..b4f10a3a23ef05f84f5f8620e3bce7a0e27179d5 Binary files /dev/null and b/concepts/431_2.png differ diff --git a/concepts/432_12.png b/concepts/432_12.png new file mode 100644 index 0000000000000000000000000000000000000000..3fb246914196514d1472c4b79843a0ffe857147e Binary files /dev/null and b/concepts/432_12.png differ diff --git a/concepts/432_16.png b/concepts/432_16.png new file mode 100644 index 0000000000000000000000000000000000000000..682005fc123beefbbb9e7b88b74003be2019b094 Binary files /dev/null and b/concepts/432_16.png differ diff --git a/concepts/432_6.png b/concepts/432_6.png new file mode 100644 index 0000000000000000000000000000000000000000..ccc7c5a4fa839bc9d8c783392fee2ad9a4f8eed7 Binary files /dev/null and b/concepts/432_6.png differ diff --git a/concepts/432_7.png b/concepts/432_7.png new file mode 100644 index 0000000000000000000000000000000000000000..432b23dbc564482c2e5309902733e434219a6527 Binary files /dev/null and b/concepts/432_7.png differ diff --git a/concepts/433_11.png b/concepts/433_11.png new file mode 100644 index 0000000000000000000000000000000000000000..319b2bc05ce41a2f37d951a88c951774c9164fbb Binary files /dev/null and b/concepts/433_11.png differ diff --git a/concepts/433_14.png b/concepts/433_14.png new file mode 100644 index 0000000000000000000000000000000000000000..5d35bf5b74bb7a7c5899c94d298da0479fcef120 Binary files /dev/null and b/concepts/433_14.png differ diff --git a/concepts/433_2.png b/concepts/433_2.png new file mode 100644 index 0000000000000000000000000000000000000000..d15da9f815adc9e5ce5ee64d6bfffabe3e9e8ff9 Binary files /dev/null and b/concepts/433_2.png differ diff --git a/concepts/433_4.png b/concepts/433_4.png new file mode 100644 index 0000000000000000000000000000000000000000..b2a69f7aca96309aeba5036cae107746ebf85ee1 Binary files /dev/null and b/concepts/433_4.png differ diff --git a/concepts/433_5.png b/concepts/433_5.png new file mode 100644 index 0000000000000000000000000000000000000000..76f80b31c57d915b8ce5797c39861bee381526a6 Binary files /dev/null and b/concepts/433_5.png differ diff --git a/concepts/433_6.png b/concepts/433_6.png new file mode 100644 index 0000000000000000000000000000000000000000..b5e3b6833628d439f47f1af8d73c7e03ecf422c5 Binary files /dev/null and b/concepts/433_6.png differ diff --git a/concepts/433_7.png b/concepts/433_7.png new file mode 100644 index 0000000000000000000000000000000000000000..5044a535903813c25b14fb6932af03ce020c1aa1 Binary files /dev/null and b/concepts/433_7.png differ diff --git a/concepts/433_9.png b/concepts/433_9.png new file mode 100644 index 0000000000000000000000000000000000000000..20662bdf21f629bf4b47afa04e2c9930b7958dab Binary files /dev/null and b/concepts/433_9.png differ diff --git a/concepts/434_0.png b/concepts/434_0.png new file mode 100644 index 0000000000000000000000000000000000000000..d29290530f86e48f954f0defac70375f29c1a025 Binary files /dev/null and b/concepts/434_0.png differ diff --git a/concepts/434_1.png b/concepts/434_1.png new file mode 100644 index 0000000000000000000000000000000000000000..e6c9e5519b864d1ba31832ed8112d58579fab842 Binary files /dev/null and b/concepts/434_1.png differ diff --git a/concepts/434_2.png b/concepts/434_2.png new file mode 100644 index 0000000000000000000000000000000000000000..e0d94902b07e660e4cd501b33734588516066819 Binary files /dev/null and b/concepts/434_2.png differ diff --git a/concepts/434_3.png b/concepts/434_3.png new file mode 100644 index 0000000000000000000000000000000000000000..15aa39015918f15c3a7704af2a8c765ed2e476b5 Binary files /dev/null and b/concepts/434_3.png differ diff --git a/concepts/434_4.png b/concepts/434_4.png new file mode 100644 index 0000000000000000000000000000000000000000..4645abd9b71573f762517f5506c550cdb8d7c36b Binary files /dev/null and b/concepts/434_4.png differ diff --git a/concepts/434_5.png b/concepts/434_5.png new file mode 100644 index 0000000000000000000000000000000000000000..95689dfdafecbd0245d7a4926872ebfec8514e13 Binary files /dev/null and b/concepts/434_5.png differ diff --git a/concepts/434_6.png b/concepts/434_6.png new file mode 100644 index 0000000000000000000000000000000000000000..6dfd910ce7e7ff45f0dc2083b5494ed95b8de6eb Binary files /dev/null and b/concepts/434_6.png differ diff --git a/concepts/434_9.png b/concepts/434_9.png new file mode 100644 index 0000000000000000000000000000000000000000..b368e8109389e616f4c6a9da43f73f21a2c888e7 Binary files /dev/null and b/concepts/434_9.png differ diff --git a/concepts/435_0.png b/concepts/435_0.png new file mode 100644 index 0000000000000000000000000000000000000000..a4b6a0cbdb4ab181f80a63b39bae31db06710ffb Binary files /dev/null and b/concepts/435_0.png differ diff --git a/concepts/435_1.png b/concepts/435_1.png new file mode 100644 index 0000000000000000000000000000000000000000..fe124976a951cc8ec151ebbc90ed1b2481c71d09 Binary files /dev/null and b/concepts/435_1.png differ diff --git a/concepts/435_10.png b/concepts/435_10.png new file mode 100644 index 0000000000000000000000000000000000000000..44e41c07d562b77920386a178cc34cb9f20f7df7 Binary files /dev/null and b/concepts/435_10.png differ diff --git a/concepts/435_2.png b/concepts/435_2.png new file mode 100644 index 0000000000000000000000000000000000000000..4f5d37f24c58ddd4757661ede524961ede9acdfa Binary files /dev/null and b/concepts/435_2.png differ diff --git a/concepts/435_3.png b/concepts/435_3.png new file mode 100644 index 0000000000000000000000000000000000000000..a76f95a0791b61fdd5e37cc7069a01d578110581 Binary files /dev/null and b/concepts/435_3.png differ diff --git a/concepts/435_4.png b/concepts/435_4.png new file mode 100644 index 0000000000000000000000000000000000000000..36acf630714b69d0cbe16861dcbfbaf33172e4e9 Binary files /dev/null and b/concepts/435_4.png differ diff --git a/concepts/435_6.png b/concepts/435_6.png new file mode 100644 index 0000000000000000000000000000000000000000..04a8a56bce18a3cd5531db6ea84cebe342591206 Binary files /dev/null and b/concepts/435_6.png differ diff --git a/concepts/435_9.png b/concepts/435_9.png new file mode 100644 index 0000000000000000000000000000000000000000..404b78be0d7572c1c217f3e293b2f5fec58781f3 Binary files /dev/null and b/concepts/435_9.png differ diff --git a/concepts/436_0.png b/concepts/436_0.png new file mode 100644 index 0000000000000000000000000000000000000000..ca8887314bfdc9b5a67a418c6f6ccf4c021c7f93 Binary files /dev/null and b/concepts/436_0.png differ diff --git a/concepts/436_1.png b/concepts/436_1.png new file mode 100644 index 0000000000000000000000000000000000000000..c3c07cd94494f513ece08468105d90875342397c Binary files /dev/null and b/concepts/436_1.png differ diff --git a/concepts/436_2.png b/concepts/436_2.png new file mode 100644 index 0000000000000000000000000000000000000000..c1cda81893536ef6bfac4b9370b461c13d693501 Binary files /dev/null and b/concepts/436_2.png differ diff --git a/concepts/436_3.png b/concepts/436_3.png new file mode 100644 index 0000000000000000000000000000000000000000..e845a0e3de222839ac3871b2c3978e7195cef017 Binary files /dev/null and b/concepts/436_3.png differ diff --git a/concepts/436_4.png b/concepts/436_4.png new file mode 100644 index 0000000000000000000000000000000000000000..ebf7660da21816c77f186e9ffff6c3a6f8565b27 Binary files /dev/null and b/concepts/436_4.png differ diff --git a/concepts/436_5.png b/concepts/436_5.png new file mode 100644 index 0000000000000000000000000000000000000000..64446017f8dcf9f1a90bc5f67e5cac84706c603d Binary files /dev/null and b/concepts/436_5.png differ diff --git a/concepts/436_7.png b/concepts/436_7.png new file mode 100644 index 0000000000000000000000000000000000000000..cf8e3b4378bce61f4c9a5c7e080df44efbc1e048 Binary files /dev/null and b/concepts/436_7.png differ diff --git a/concepts/436_8.png b/concepts/436_8.png new file mode 100644 index 0000000000000000000000000000000000000000..31508084f596a6ce9a4106205199a3db0c7afbdb Binary files /dev/null and b/concepts/436_8.png differ diff --git a/concepts/437_0.png b/concepts/437_0.png new file mode 100644 index 0000000000000000000000000000000000000000..50d25391e5be7e2ca72a4f26afa64689e19b0f00 Binary files /dev/null and b/concepts/437_0.png differ diff --git a/concepts/437_1.png b/concepts/437_1.png new file mode 100644 index 0000000000000000000000000000000000000000..2b33bc23a8a6c43b04c4caa94344542c52a90916 Binary files /dev/null and b/concepts/437_1.png differ diff --git a/concepts/437_10.png b/concepts/437_10.png new file mode 100644 index 0000000000000000000000000000000000000000..d8ea9f9d85aa07f7b8d7a5bbb163322e38038a54 Binary files /dev/null and b/concepts/437_10.png differ diff --git a/concepts/437_2.png b/concepts/437_2.png new file mode 100644 index 0000000000000000000000000000000000000000..08ed63713de77afce3a08c0b2b8283f8d3086525 Binary files /dev/null and b/concepts/437_2.png differ diff --git a/concepts/437_3.png b/concepts/437_3.png new file mode 100644 index 0000000000000000000000000000000000000000..9b80b312471b68aa192d24e6c592fdadea3a1520 Binary files /dev/null and b/concepts/437_3.png differ diff --git a/concepts/437_5.png b/concepts/437_5.png new file mode 100644 index 0000000000000000000000000000000000000000..1962d2af516eea7695b58d2992401041969edb65 Binary files /dev/null and b/concepts/437_5.png differ diff --git a/concepts/437_7.png b/concepts/437_7.png new file mode 100644 index 0000000000000000000000000000000000000000..9d2a70af58cc6920088ee7a33c050bc1469cd35a Binary files /dev/null and b/concepts/437_7.png differ diff --git a/concepts/437_9.png b/concepts/437_9.png new file mode 100644 index 0000000000000000000000000000000000000000..427619c8f59f6a771249cd5fc24c0496d045fba0 Binary files /dev/null and b/concepts/437_9.png differ diff --git a/concepts/439_0.png b/concepts/439_0.png new file mode 100644 index 0000000000000000000000000000000000000000..023ea2e74e2a8826afd2ec735e2104f3ed8b6b39 Binary files /dev/null and b/concepts/439_0.png differ diff --git a/concepts/439_1.png b/concepts/439_1.png new file mode 100644 index 0000000000000000000000000000000000000000..0c77ccba0d2d8dfc420011fb3e8dbf477f042fba Binary files /dev/null and b/concepts/439_1.png differ diff --git a/concepts/439_3.png b/concepts/439_3.png new file mode 100644 index 0000000000000000000000000000000000000000..a323264d9e92ea1cc8cee695610c7598b988f6ef Binary files /dev/null and b/concepts/439_3.png differ diff --git a/concepts/439_4.png b/concepts/439_4.png new file mode 100644 index 0000000000000000000000000000000000000000..c56f35c01a83cb6af3dc6fcd93af79fcdb2bd9c6 Binary files /dev/null and b/concepts/439_4.png differ diff --git a/concepts/439_5.png b/concepts/439_5.png new file mode 100644 index 0000000000000000000000000000000000000000..e9815987a37a20d2f670b9ddebe3fd3ac795a3bc Binary files /dev/null and b/concepts/439_5.png differ diff --git a/concepts/439_7.png b/concepts/439_7.png new file mode 100644 index 0000000000000000000000000000000000000000..77ccc6728a7e4e9d59e003b2b2c0283d90674d04 Binary files /dev/null and b/concepts/439_7.png differ diff --git a/concepts/439_8.png b/concepts/439_8.png new file mode 100644 index 0000000000000000000000000000000000000000..bfa1d21e877a1e89268242f3716233f5b918f4ab Binary files /dev/null and b/concepts/439_8.png differ diff --git a/concepts/439_9.png b/concepts/439_9.png new file mode 100644 index 0000000000000000000000000000000000000000..b05f7bd4caf71632d5f8ed574a93f3963d3ed016 Binary files /dev/null and b/concepts/439_9.png differ diff --git a/concepts/43_0.png b/concepts/43_0.png new file mode 100644 index 0000000000000000000000000000000000000000..bdb34097c6d8c86c626db6d55635a36a90cf68a8 Binary files /dev/null and b/concepts/43_0.png differ diff --git a/concepts/43_1.png b/concepts/43_1.png new file mode 100644 index 0000000000000000000000000000000000000000..9cefd381ba55040c5459cb7aecfee8f4b37182da Binary files /dev/null and b/concepts/43_1.png differ diff --git a/concepts/43_2.png b/concepts/43_2.png new file mode 100644 index 0000000000000000000000000000000000000000..cc17faed9ea41648243da7ef3a6fe92e17a29f4d Binary files /dev/null and b/concepts/43_2.png differ diff --git a/concepts/43_4.png b/concepts/43_4.png new file mode 100644 index 0000000000000000000000000000000000000000..4fbe855b8d4adef0fd44adfc68491de50d00bbdd Binary files /dev/null and b/concepts/43_4.png differ diff --git a/concepts/43_5.png b/concepts/43_5.png new file mode 100644 index 0000000000000000000000000000000000000000..0153ae82cdc2c4f1f09e58f9e780286048be1126 Binary files /dev/null and b/concepts/43_5.png differ diff --git a/concepts/43_6.png b/concepts/43_6.png new file mode 100644 index 0000000000000000000000000000000000000000..ecaa293e15e51fa62d7bb919dd3891fd4b677642 Binary files /dev/null and b/concepts/43_6.png differ diff --git a/concepts/43_7.png b/concepts/43_7.png new file mode 100644 index 0000000000000000000000000000000000000000..4b8ed165ab7e6ffdcd68124e3db51e691e68c87a Binary files /dev/null and b/concepts/43_7.png differ diff --git a/concepts/43_8.png b/concepts/43_8.png new file mode 100644 index 0000000000000000000000000000000000000000..c1f53f9155d8cd1daba05905461c9817d0d9cd9c Binary files /dev/null and b/concepts/43_8.png differ diff --git a/concepts/440_0.png b/concepts/440_0.png new file mode 100644 index 0000000000000000000000000000000000000000..6415e06d856fd8da49dabb52f3b9a92555960f74 Binary files /dev/null and b/concepts/440_0.png differ diff --git a/concepts/440_1.png b/concepts/440_1.png new file mode 100644 index 0000000000000000000000000000000000000000..8e3dd60db03760828994044f0e5796363fa24d7e Binary files /dev/null and b/concepts/440_1.png differ diff --git a/concepts/440_2.png b/concepts/440_2.png new file mode 100644 index 0000000000000000000000000000000000000000..1b1668a96f07937df1a07ad391e17c7fd0621565 Binary files /dev/null and b/concepts/440_2.png differ diff --git a/concepts/440_3.png b/concepts/440_3.png new file mode 100644 index 0000000000000000000000000000000000000000..0fbc596e985098b8a69347bdfeb67f83433376c9 Binary files /dev/null and b/concepts/440_3.png differ diff --git a/concepts/440_4.png b/concepts/440_4.png new file mode 100644 index 0000000000000000000000000000000000000000..3079e703bcb28c9ebfb9698b8da9aa2b8f262261 Binary files /dev/null and b/concepts/440_4.png differ diff --git a/concepts/440_5.png b/concepts/440_5.png new file mode 100644 index 0000000000000000000000000000000000000000..c49b3b0abbae4e2233eaed57066431f161bbdb81 Binary files /dev/null and b/concepts/440_5.png differ diff --git a/concepts/440_7.png b/concepts/440_7.png new file mode 100644 index 0000000000000000000000000000000000000000..3c7ab663a0bec4b3cb5bc7a771d7f2216f01a6f4 Binary files /dev/null and b/concepts/440_7.png differ diff --git a/concepts/440_8.png b/concepts/440_8.png new file mode 100644 index 0000000000000000000000000000000000000000..d3a55af855b0346a3de431f09e6f69e7b54f1aa9 Binary files /dev/null and b/concepts/440_8.png differ diff --git a/concepts/441_0.png b/concepts/441_0.png new file mode 100644 index 0000000000000000000000000000000000000000..ad0c4333af93d0bd3821c167735f8263ad4715c1 Binary files /dev/null and b/concepts/441_0.png differ diff --git a/concepts/441_1.png b/concepts/441_1.png new file mode 100644 index 0000000000000000000000000000000000000000..fe9c1aacc853e6eaaaa340e0a258701c89babb94 Binary files /dev/null and b/concepts/441_1.png differ diff --git a/concepts/441_2.png b/concepts/441_2.png new file mode 100644 index 0000000000000000000000000000000000000000..224fae0c34c710f0df0b1817b2ff6e65d0f265e1 Binary files /dev/null and b/concepts/441_2.png differ diff --git a/concepts/441_3.png b/concepts/441_3.png new file mode 100644 index 0000000000000000000000000000000000000000..22e47db32fe204e3091bdd852163cfabd44fcafd Binary files /dev/null and b/concepts/441_3.png differ diff --git a/concepts/441_4.png b/concepts/441_4.png new file mode 100644 index 0000000000000000000000000000000000000000..48e0bb259776acd22e8e2a20cc7c3d6627aabb62 Binary files /dev/null and b/concepts/441_4.png differ diff --git a/concepts/441_5.png b/concepts/441_5.png new file mode 100644 index 0000000000000000000000000000000000000000..8b0bedb8c283d7e23dd83e737c783239ee62e3f6 Binary files /dev/null and b/concepts/441_5.png differ diff --git a/concepts/441_7.png b/concepts/441_7.png new file mode 100644 index 0000000000000000000000000000000000000000..40291c31fd313bf0844862f54f512ff883f99d11 Binary files /dev/null and b/concepts/441_7.png differ diff --git a/concepts/441_8.png b/concepts/441_8.png new file mode 100644 index 0000000000000000000000000000000000000000..815367e3d3eb8d31d55d4539b84704fce660acfb Binary files /dev/null and b/concepts/441_8.png differ diff --git a/concepts/442_1.png b/concepts/442_1.png new file mode 100644 index 0000000000000000000000000000000000000000..294bcd8b93c4f97bf488649e7e0f65e39a55971b Binary files /dev/null and b/concepts/442_1.png differ diff --git a/concepts/442_11.png b/concepts/442_11.png new file mode 100644 index 0000000000000000000000000000000000000000..bb0958509a36943ee14532cd2834bca5ad588a76 Binary files /dev/null and b/concepts/442_11.png differ diff --git a/concepts/442_13.png b/concepts/442_13.png new file mode 100644 index 0000000000000000000000000000000000000000..819cca53673465c50677b759b0ab148452dc3985 Binary files /dev/null and b/concepts/442_13.png differ diff --git a/concepts/442_15.png b/concepts/442_15.png new file mode 100644 index 0000000000000000000000000000000000000000..2120be82f537aff2cbb2801b84fec2e219d6ccad Binary files /dev/null and b/concepts/442_15.png differ diff --git a/concepts/442_2.png b/concepts/442_2.png new file mode 100644 index 0000000000000000000000000000000000000000..ca36a99ea0d50760c5f274a96773d7d8afd0eb61 Binary files /dev/null and b/concepts/442_2.png differ diff --git a/concepts/442_4.png b/concepts/442_4.png new file mode 100644 index 0000000000000000000000000000000000000000..2eebf36c8683eb317b11b1f4665252118a4749b8 Binary files /dev/null and b/concepts/442_4.png differ diff --git a/concepts/442_7.png b/concepts/442_7.png new file mode 100644 index 0000000000000000000000000000000000000000..4beabc410e8f9dc2cb2858e65b2e09a1e050e6af Binary files /dev/null and b/concepts/442_7.png differ diff --git a/concepts/442_9.png b/concepts/442_9.png new file mode 100644 index 0000000000000000000000000000000000000000..49bddce4fd4caab937c51d592932e0981bf1157d Binary files /dev/null and b/concepts/442_9.png differ diff --git a/concepts/443_1.png b/concepts/443_1.png new file mode 100644 index 0000000000000000000000000000000000000000..dc64a09e5c72c4ab2afb4bf24d6eaafbc4eaf32d Binary files /dev/null and b/concepts/443_1.png differ diff --git a/concepts/443_12.png b/concepts/443_12.png new file mode 100644 index 0000000000000000000000000000000000000000..5d307e15de3430c9dedeae1452a05b4d8df15e0e Binary files /dev/null and b/concepts/443_12.png differ diff --git a/concepts/443_13.png b/concepts/443_13.png new file mode 100644 index 0000000000000000000000000000000000000000..0ce079dabd41aa2fdf8706242458d889ac04e374 Binary files /dev/null and b/concepts/443_13.png differ diff --git a/concepts/443_2.png b/concepts/443_2.png new file mode 100644 index 0000000000000000000000000000000000000000..9450f6819b32ce33ad77c8692861a8f152e84876 Binary files /dev/null and b/concepts/443_2.png differ diff --git a/concepts/443_3.png b/concepts/443_3.png new file mode 100644 index 0000000000000000000000000000000000000000..a94f908349259d0c58c2befdb5dcdc730d91ac61 Binary files /dev/null and b/concepts/443_3.png differ diff --git a/concepts/443_4.png b/concepts/443_4.png new file mode 100644 index 0000000000000000000000000000000000000000..cd8b9d28f2181c511b9c6014aae810631d6faeb5 Binary files /dev/null and b/concepts/443_4.png differ diff --git a/concepts/443_5.png b/concepts/443_5.png new file mode 100644 index 0000000000000000000000000000000000000000..59c574d57463edf002a09f6ce4bfc0cde3858369 Binary files /dev/null and b/concepts/443_5.png differ diff --git a/concepts/443_7.png b/concepts/443_7.png new file mode 100644 index 0000000000000000000000000000000000000000..125b5b545debdd3de8e57077795378264d163be3 Binary files /dev/null and b/concepts/443_7.png differ diff --git a/concepts/444_0.png b/concepts/444_0.png new file mode 100644 index 0000000000000000000000000000000000000000..574d1aa90e3af171ba18907e9438a176bf6e38e1 Binary files /dev/null and b/concepts/444_0.png differ diff --git a/concepts/444_10.png b/concepts/444_10.png new file mode 100644 index 0000000000000000000000000000000000000000..68cb15416f580e66defb60a82293035a2dd383d4 Binary files /dev/null and b/concepts/444_10.png differ diff --git a/concepts/444_11.png b/concepts/444_11.png new file mode 100644 index 0000000000000000000000000000000000000000..8320da1c0e092c38eeb076a548647c3e2b76afcf Binary files /dev/null and b/concepts/444_11.png differ diff --git a/concepts/444_13.png b/concepts/444_13.png new file mode 100644 index 0000000000000000000000000000000000000000..aebab50459459f84cf0dfaacb73d2fb932b557a7 Binary files /dev/null and b/concepts/444_13.png differ diff --git a/concepts/444_16.png b/concepts/444_16.png new file mode 100644 index 0000000000000000000000000000000000000000..305adff24763cf20be09b1de9e2837d4baeda870 Binary files /dev/null and b/concepts/444_16.png differ diff --git a/concepts/444_2.png b/concepts/444_2.png new file mode 100644 index 0000000000000000000000000000000000000000..57ff11b5674f156c5dc0e37344c5a09ad7962b2b Binary files /dev/null and b/concepts/444_2.png differ diff --git a/concepts/444_7.png b/concepts/444_7.png new file mode 100644 index 0000000000000000000000000000000000000000..7ec8c8dfef22253e58d426e98aec1533f443df9c Binary files /dev/null and b/concepts/444_7.png differ diff --git a/concepts/444_9.png b/concepts/444_9.png new file mode 100644 index 0000000000000000000000000000000000000000..f05b8a56f37f44a947af865a801a6f70474e3e12 Binary files /dev/null and b/concepts/444_9.png differ diff --git a/concepts/446_0.png b/concepts/446_0.png new file mode 100644 index 0000000000000000000000000000000000000000..45eff775da437d9f068290a37770e7966d9cfb6a Binary files /dev/null and b/concepts/446_0.png differ diff --git a/concepts/446_1.png b/concepts/446_1.png new file mode 100644 index 0000000000000000000000000000000000000000..a3e2b0b78e9206e011ee570a015e2105743bbb90 Binary files /dev/null and b/concepts/446_1.png differ diff --git a/concepts/446_2.png b/concepts/446_2.png new file mode 100644 index 0000000000000000000000000000000000000000..8ac8cf6dddfb3172927a2bb58eff1c735f40c5f9 Binary files /dev/null and b/concepts/446_2.png differ diff --git a/concepts/446_3.png b/concepts/446_3.png new file mode 100644 index 0000000000000000000000000000000000000000..6472e8d25338cbaad5bf512121e2d0ebe21a86c6 Binary files /dev/null and b/concepts/446_3.png differ diff --git a/concepts/446_4.png b/concepts/446_4.png new file mode 100644 index 0000000000000000000000000000000000000000..88dd613a796f51dca1769ae897e6e2d918cbacec Binary files /dev/null and b/concepts/446_4.png differ diff --git a/concepts/446_5.png b/concepts/446_5.png new file mode 100644 index 0000000000000000000000000000000000000000..d3d59a6634693bd572109345dd6f8f6b0b5b99b4 Binary files /dev/null and b/concepts/446_5.png differ diff --git a/concepts/446_6.png b/concepts/446_6.png new file mode 100644 index 0000000000000000000000000000000000000000..8f6f39f3e53c575daf7fe387f46557f771ce44e7 Binary files /dev/null and b/concepts/446_6.png differ diff --git a/concepts/446_7.png b/concepts/446_7.png new file mode 100644 index 0000000000000000000000000000000000000000..cdad309418f99f1353d642280e4fb181a6e28a47 Binary files /dev/null and b/concepts/446_7.png differ diff --git a/concepts/447_0.png b/concepts/447_0.png new file mode 100644 index 0000000000000000000000000000000000000000..c15a07531a4abc83599368d7f443216e673aa848 Binary files /dev/null and b/concepts/447_0.png differ diff --git a/concepts/447_1.png b/concepts/447_1.png new file mode 100644 index 0000000000000000000000000000000000000000..69b3fa999c750f0e003eb737aaf26f880ad9199f Binary files /dev/null and b/concepts/447_1.png differ diff --git a/concepts/447_10.png b/concepts/447_10.png new file mode 100644 index 0000000000000000000000000000000000000000..3c8ab7605627e2cc5d33a8146e04a5b861ed8fe4 Binary files /dev/null and b/concepts/447_10.png differ diff --git a/concepts/447_2.png b/concepts/447_2.png new file mode 100644 index 0000000000000000000000000000000000000000..ddda6a4cb43d957dd7115d0d436627d1cf0ba6b9 Binary files /dev/null and b/concepts/447_2.png differ diff --git a/concepts/447_3.png b/concepts/447_3.png new file mode 100644 index 0000000000000000000000000000000000000000..673e77a7c7b74b072af085bc932a33bac875412c Binary files /dev/null and b/concepts/447_3.png differ diff --git a/concepts/447_4.png b/concepts/447_4.png new file mode 100644 index 0000000000000000000000000000000000000000..e4b1ce975d2f976cac385dfdba60636ea56b11df Binary files /dev/null and b/concepts/447_4.png differ diff --git a/concepts/447_6.png b/concepts/447_6.png new file mode 100644 index 0000000000000000000000000000000000000000..a1a1de913ec80d4dbf188ea487575150de30b914 Binary files /dev/null and b/concepts/447_6.png differ diff --git a/concepts/447_9.png b/concepts/447_9.png new file mode 100644 index 0000000000000000000000000000000000000000..1ce1d4e92af38f917c57320f31913857718437c7 Binary files /dev/null and b/concepts/447_9.png differ diff --git a/concepts/448_0.png b/concepts/448_0.png new file mode 100644 index 0000000000000000000000000000000000000000..a42bd139e98516ce2f71c92a8d203f45843d5720 Binary files /dev/null and b/concepts/448_0.png differ diff --git a/concepts/448_1.png b/concepts/448_1.png new file mode 100644 index 0000000000000000000000000000000000000000..70926837d48b8d7fc5ef88e085a9ad1514ccf6d3 Binary files /dev/null and b/concepts/448_1.png differ diff --git a/concepts/448_2.png b/concepts/448_2.png new file mode 100644 index 0000000000000000000000000000000000000000..30317eda651fede2bd2eaf36ea5c016d2dbd74fc Binary files /dev/null and b/concepts/448_2.png differ diff --git a/concepts/448_3.png b/concepts/448_3.png new file mode 100644 index 0000000000000000000000000000000000000000..f41669e4ab1685085aa4e8be96cfc5e0b5b20d66 Binary files /dev/null and b/concepts/448_3.png differ diff --git a/concepts/448_5.png b/concepts/448_5.png new file mode 100644 index 0000000000000000000000000000000000000000..537db2dec72657799583dc14d5c89c792d51bc4e Binary files /dev/null and b/concepts/448_5.png differ diff --git a/concepts/448_6.png b/concepts/448_6.png new file mode 100644 index 0000000000000000000000000000000000000000..4e6cc815ac90f53fad40917ca63ddb96429ed8bc Binary files /dev/null and b/concepts/448_6.png differ diff --git a/concepts/448_7.png b/concepts/448_7.png new file mode 100644 index 0000000000000000000000000000000000000000..660d6a1721730450fd5048107e2c30451f11a77d Binary files /dev/null and b/concepts/448_7.png differ diff --git a/concepts/448_8.png b/concepts/448_8.png new file mode 100644 index 0000000000000000000000000000000000000000..175a8758dc1bc7205a414b2c6ef9174a4cd47fe1 Binary files /dev/null and b/concepts/448_8.png differ diff --git a/concepts/449_0.png b/concepts/449_0.png new file mode 100644 index 0000000000000000000000000000000000000000..e4954eb8fb55ca36196334d289ab715e4f4391d7 Binary files /dev/null and b/concepts/449_0.png differ diff --git a/concepts/449_1.png b/concepts/449_1.png new file mode 100644 index 0000000000000000000000000000000000000000..4e8692917e7e4fd164a7477b0fc9fea824727ef3 Binary files /dev/null and b/concepts/449_1.png differ diff --git a/concepts/449_2.png b/concepts/449_2.png new file mode 100644 index 0000000000000000000000000000000000000000..86a2f315b451c67b429a52f22b565a9f5c9b9855 Binary files /dev/null and b/concepts/449_2.png differ diff --git a/concepts/449_3.png b/concepts/449_3.png new file mode 100644 index 0000000000000000000000000000000000000000..6c0e69f969788d681c478c0b7e499a52cb82228f Binary files /dev/null and b/concepts/449_3.png differ diff --git a/concepts/449_4.png b/concepts/449_4.png new file mode 100644 index 0000000000000000000000000000000000000000..b337e04ba4fdf715ee48512d9cd278749d6c1c8b Binary files /dev/null and b/concepts/449_4.png differ diff --git a/concepts/449_6.png b/concepts/449_6.png new file mode 100644 index 0000000000000000000000000000000000000000..a7bf5c2041979f46b2e9a5cd93f1410dee373625 Binary files /dev/null and b/concepts/449_6.png differ diff --git a/concepts/449_7.png b/concepts/449_7.png new file mode 100644 index 0000000000000000000000000000000000000000..e729561e2cd536062f763b3659f3832a498e05e1 Binary files /dev/null and b/concepts/449_7.png differ diff --git a/concepts/449_8.png b/concepts/449_8.png new file mode 100644 index 0000000000000000000000000000000000000000..e6d40455c248cdf6f68f48b795b8751b1b873937 Binary files /dev/null and b/concepts/449_8.png differ diff --git a/concepts/44_0.png b/concepts/44_0.png new file mode 100644 index 0000000000000000000000000000000000000000..c3a71183a4d30d952091dd699fbdb1a0e1816981 Binary files /dev/null and b/concepts/44_0.png differ diff --git a/concepts/44_1.png b/concepts/44_1.png new file mode 100644 index 0000000000000000000000000000000000000000..d1ed637ee00ea7caf5dbbc3618656b06ff6d8fa5 Binary files /dev/null and b/concepts/44_1.png differ diff --git a/concepts/44_2.png b/concepts/44_2.png new file mode 100644 index 0000000000000000000000000000000000000000..fb1b80f4915424d086e37ac2c1b6fcce9337e9bf Binary files /dev/null and b/concepts/44_2.png differ diff --git a/concepts/44_3.png b/concepts/44_3.png new file mode 100644 index 0000000000000000000000000000000000000000..0c01ac5aa95fb994812e8f87eb38f64489bd160c Binary files /dev/null and b/concepts/44_3.png differ diff --git a/concepts/44_4.png b/concepts/44_4.png new file mode 100644 index 0000000000000000000000000000000000000000..6cb259372d98904da51845b1297a6595aa0ec4b9 Binary files /dev/null and b/concepts/44_4.png differ diff --git a/concepts/44_6.png b/concepts/44_6.png new file mode 100644 index 0000000000000000000000000000000000000000..a527acb7db7b254c88bd5a8c8e75acb464151131 Binary files /dev/null and b/concepts/44_6.png differ diff --git a/concepts/44_7.png b/concepts/44_7.png new file mode 100644 index 0000000000000000000000000000000000000000..26755a08ce7e772e8d94aabaeb0fc1996c86e6f0 Binary files /dev/null and b/concepts/44_7.png differ diff --git a/concepts/44_9.png b/concepts/44_9.png new file mode 100644 index 0000000000000000000000000000000000000000..405eb8e0d9027cfc2135acc24a0387d0363e19f4 Binary files /dev/null and b/concepts/44_9.png differ diff --git a/concepts/450_1.png b/concepts/450_1.png new file mode 100644 index 0000000000000000000000000000000000000000..1a5d0d8adb01a91af60d6e176ff36e477df76e43 Binary files /dev/null and b/concepts/450_1.png differ diff --git a/concepts/450_19.png b/concepts/450_19.png new file mode 100644 index 0000000000000000000000000000000000000000..651c323655efe74b86a547cca107b1333c376ef6 Binary files /dev/null and b/concepts/450_19.png differ diff --git a/concepts/450_20.png b/concepts/450_20.png new file mode 100644 index 0000000000000000000000000000000000000000..22896780120d7147e9d8b79ff4966334181e856c Binary files /dev/null and b/concepts/450_20.png differ diff --git a/concepts/450_21.png b/concepts/450_21.png new file mode 100644 index 0000000000000000000000000000000000000000..b932e5f6695c0c477ca202ae31c439863f9e998a Binary files /dev/null and b/concepts/450_21.png differ diff --git a/concepts/450_22.png b/concepts/450_22.png new file mode 100644 index 0000000000000000000000000000000000000000..aebf54af4b6f30a3fb6b78e76c1368cf6b2aafcf Binary files /dev/null and b/concepts/450_22.png differ diff --git a/concepts/450_5.png b/concepts/450_5.png new file mode 100644 index 0000000000000000000000000000000000000000..617625c9ad53516174fde08e0935a34d880b9b6b Binary files /dev/null and b/concepts/450_5.png differ diff --git a/concepts/450_6.png b/concepts/450_6.png new file mode 100644 index 0000000000000000000000000000000000000000..f5742bccc56a4eaeed9f00fe3527a5313bbe819a Binary files /dev/null and b/concepts/450_6.png differ diff --git a/concepts/451_0.png b/concepts/451_0.png new file mode 100644 index 0000000000000000000000000000000000000000..47e2e596c17b116f336d60076a34721e7b923a29 Binary files /dev/null and b/concepts/451_0.png differ diff --git a/concepts/451_1.png b/concepts/451_1.png new file mode 100644 index 0000000000000000000000000000000000000000..d6dde848cc4b82e03a8547ddd3d12e72609f834b Binary files /dev/null and b/concepts/451_1.png differ diff --git a/concepts/451_2.png b/concepts/451_2.png new file mode 100644 index 0000000000000000000000000000000000000000..d35eace6d944901785229882876b602b6aa82253 Binary files /dev/null and b/concepts/451_2.png differ diff --git a/concepts/451_3.png b/concepts/451_3.png new file mode 100644 index 0000000000000000000000000000000000000000..1adf626c24da5dfb5b9f46de3b3e9538b0d8f6b2 Binary files /dev/null and b/concepts/451_3.png differ diff --git a/concepts/451_4.png b/concepts/451_4.png new file mode 100644 index 0000000000000000000000000000000000000000..474af9abb1b0c429657c5749ad80f537a6aedfdc Binary files /dev/null and b/concepts/451_4.png differ diff --git a/concepts/451_6.png b/concepts/451_6.png new file mode 100644 index 0000000000000000000000000000000000000000..6eaeb6c2f5a109d23bf925dcfa1ca205aa325206 Binary files /dev/null and b/concepts/451_6.png differ diff --git a/concepts/451_7.png b/concepts/451_7.png new file mode 100644 index 0000000000000000000000000000000000000000..b4ef5a9deb7a4cce1b524fa2d85de6ed4300746e Binary files /dev/null and b/concepts/451_7.png differ diff --git a/concepts/451_8.png b/concepts/451_8.png new file mode 100644 index 0000000000000000000000000000000000000000..4ed86e4af6143ad3b31866c4dc410204b6ac0908 Binary files /dev/null and b/concepts/451_8.png differ diff --git a/concepts/452_0.png b/concepts/452_0.png new file mode 100644 index 0000000000000000000000000000000000000000..7f487bbbe8cff2383321e7de0e717db12d9fe297 Binary files /dev/null and b/concepts/452_0.png differ diff --git a/concepts/452_1.png b/concepts/452_1.png new file mode 100644 index 0000000000000000000000000000000000000000..f62ae9c9ecc43d80f85d76739df8ddcefbff204f Binary files /dev/null and b/concepts/452_1.png differ diff --git a/concepts/452_2.png b/concepts/452_2.png new file mode 100644 index 0000000000000000000000000000000000000000..92ce3ea8d68153188494b2a12142f23493b872bb Binary files /dev/null and b/concepts/452_2.png differ diff --git a/concepts/452_3.png b/concepts/452_3.png new file mode 100644 index 0000000000000000000000000000000000000000..8e255293cae11f969107de4066e955cd8bb17629 Binary files /dev/null and b/concepts/452_3.png differ diff --git a/concepts/452_4.png b/concepts/452_4.png new file mode 100644 index 0000000000000000000000000000000000000000..c26c07fdfdb09a0c43ce2989e82435755234decf Binary files /dev/null and b/concepts/452_4.png differ diff --git a/concepts/452_5.png b/concepts/452_5.png new file mode 100644 index 0000000000000000000000000000000000000000..b84ad48c3ee5aadd77f8eed3791172aaf769f7e2 Binary files /dev/null and b/concepts/452_5.png differ diff --git a/concepts/452_7.png b/concepts/452_7.png new file mode 100644 index 0000000000000000000000000000000000000000..3c560b501453d01a6501539a664282b3d310a1eb Binary files /dev/null and b/concepts/452_7.png differ diff --git a/concepts/452_9.png b/concepts/452_9.png new file mode 100644 index 0000000000000000000000000000000000000000..b361d1f5ba8f660855535cc7c95225744208fe07 Binary files /dev/null and b/concepts/452_9.png differ diff --git a/concepts/453_10.png b/concepts/453_10.png new file mode 100644 index 0000000000000000000000000000000000000000..58a572d077c5d571318a11bf02978e7040aed33e Binary files /dev/null and b/concepts/453_10.png differ diff --git a/concepts/453_13.png b/concepts/453_13.png new file mode 100644 index 0000000000000000000000000000000000000000..657dbf5d5014f6c746575123a8a8a3ab9b43ef49 Binary files /dev/null and b/concepts/453_13.png differ diff --git a/concepts/453_15.png b/concepts/453_15.png new file mode 100644 index 0000000000000000000000000000000000000000..d954f125e73267b88ceb4ef56395ff5ba26d5b68 Binary files /dev/null and b/concepts/453_15.png differ diff --git a/concepts/453_17.png b/concepts/453_17.png new file mode 100644 index 0000000000000000000000000000000000000000..a1f29497fa123a14e274ee3743d1a58e7f7611ad Binary files /dev/null and b/concepts/453_17.png differ diff --git a/concepts/453_21.png b/concepts/453_21.png new file mode 100644 index 0000000000000000000000000000000000000000..ab847e2e6336775d360f4409cb0f4f902e775cfd Binary files /dev/null and b/concepts/453_21.png differ diff --git a/concepts/453_4.png b/concepts/453_4.png new file mode 100644 index 0000000000000000000000000000000000000000..fe3a99284c9ca53c9033597531b013af4386cf0d Binary files /dev/null and b/concepts/453_4.png differ diff --git a/concepts/453_5.png b/concepts/453_5.png new file mode 100644 index 0000000000000000000000000000000000000000..ec1c7a715b055d9dd6e5116230c32ac2b66c90f0 Binary files /dev/null and b/concepts/453_5.png differ diff --git a/concepts/453_8.png b/concepts/453_8.png new file mode 100644 index 0000000000000000000000000000000000000000..9525247c7ee94f3af803c968e728aff30da967fb Binary files /dev/null and b/concepts/453_8.png differ diff --git a/concepts/455_0.png b/concepts/455_0.png new file mode 100644 index 0000000000000000000000000000000000000000..7a8b67599c83edb87f1db3b35687ffa899f9f79e Binary files /dev/null and b/concepts/455_0.png differ diff --git a/concepts/455_1.png b/concepts/455_1.png new file mode 100644 index 0000000000000000000000000000000000000000..8f9903d3f40fa9969d770369fcc8f7cdb51301f8 Binary files /dev/null and b/concepts/455_1.png differ diff --git a/concepts/455_2.png b/concepts/455_2.png new file mode 100644 index 0000000000000000000000000000000000000000..d3805d0e34d58ed633e32135953f8a1c5f956162 Binary files /dev/null and b/concepts/455_2.png differ diff --git a/concepts/455_3.png b/concepts/455_3.png new file mode 100644 index 0000000000000000000000000000000000000000..3f0b2705bd97318fed47250d63f8a62909a09aa1 Binary files /dev/null and b/concepts/455_3.png differ diff --git a/concepts/455_4.png b/concepts/455_4.png new file mode 100644 index 0000000000000000000000000000000000000000..2fdf15ec4bf52d36242ca7ee166dc85a75d40b66 Binary files /dev/null and b/concepts/455_4.png differ diff --git a/concepts/455_6.png b/concepts/455_6.png new file mode 100644 index 0000000000000000000000000000000000000000..239cc89a254daeb77785031ef6483abb78937ac3 Binary files /dev/null and b/concepts/455_6.png differ diff --git a/concepts/455_7.png b/concepts/455_7.png new file mode 100644 index 0000000000000000000000000000000000000000..aaa1a9133b0ac2a465f16e1a84ac126d3f56c20e Binary files /dev/null and b/concepts/455_7.png differ diff --git a/concepts/455_8.png b/concepts/455_8.png new file mode 100644 index 0000000000000000000000000000000000000000..725ac9614bde290cf9259a5c084156d7a9081927 Binary files /dev/null and b/concepts/455_8.png differ diff --git a/concepts/456_0.png b/concepts/456_0.png new file mode 100644 index 0000000000000000000000000000000000000000..dfdeb07b1493043cfcbb65bb8b15122719408ba4 Binary files /dev/null and b/concepts/456_0.png differ diff --git a/concepts/456_11.png b/concepts/456_11.png new file mode 100644 index 0000000000000000000000000000000000000000..df4d86d35c02a89733ff097ca3d182621155f8b9 Binary files /dev/null and b/concepts/456_11.png differ diff --git a/concepts/456_14.png b/concepts/456_14.png new file mode 100644 index 0000000000000000000000000000000000000000..a297d5d966cdb521982716fe2d305a77ff5fca91 Binary files /dev/null and b/concepts/456_14.png differ diff --git a/concepts/456_15.png b/concepts/456_15.png new file mode 100644 index 0000000000000000000000000000000000000000..823eb53c2ab7ea705672d10a6c5ecd4490753c1c Binary files /dev/null and b/concepts/456_15.png differ diff --git a/concepts/456_2.png b/concepts/456_2.png new file mode 100644 index 0000000000000000000000000000000000000000..442ce1f8f0b85412b9c09a3b3dfdb35a904870a8 Binary files /dev/null and b/concepts/456_2.png differ diff --git a/concepts/456_3.png b/concepts/456_3.png new file mode 100644 index 0000000000000000000000000000000000000000..cf9234c63b00f64656e3a756d796c45171a80301 Binary files /dev/null and b/concepts/456_3.png differ diff --git a/concepts/456_4.png b/concepts/456_4.png new file mode 100644 index 0000000000000000000000000000000000000000..010a3073a7cea612e2a11f29b00100d20ca7614c Binary files /dev/null and b/concepts/456_4.png differ diff --git a/concepts/456_9.png b/concepts/456_9.png new file mode 100644 index 0000000000000000000000000000000000000000..0661ef41cf8f36f2f8409e751f9100044070525d Binary files /dev/null and b/concepts/456_9.png differ diff --git a/concepts/457_0.png b/concepts/457_0.png new file mode 100644 index 0000000000000000000000000000000000000000..678a69df95bd761d02b33204b4bc75862160ec13 Binary files /dev/null and b/concepts/457_0.png differ diff --git a/concepts/457_1.png b/concepts/457_1.png new file mode 100644 index 0000000000000000000000000000000000000000..c78fc1e31dee7e38dbabd06d573c084972e73eea Binary files /dev/null and b/concepts/457_1.png differ diff --git a/concepts/457_2.png b/concepts/457_2.png new file mode 100644 index 0000000000000000000000000000000000000000..d0ddd6c9eab5bd7751fb30f7a40589020982b1d1 Binary files /dev/null and b/concepts/457_2.png differ diff --git a/concepts/457_3.png b/concepts/457_3.png new file mode 100644 index 0000000000000000000000000000000000000000..c091f18c6f1ebd5d7d9f73bc6041af5524de7625 Binary files /dev/null and b/concepts/457_3.png differ diff --git a/concepts/457_4.png b/concepts/457_4.png new file mode 100644 index 0000000000000000000000000000000000000000..cff35659e6eba36e99e32cc0b9a328b0fd4bdc6d Binary files /dev/null and b/concepts/457_4.png differ diff --git a/concepts/457_6.png b/concepts/457_6.png new file mode 100644 index 0000000000000000000000000000000000000000..596f928f7dcdb4b6fb17a501a5bc1bc0722d0ddb Binary files /dev/null and b/concepts/457_6.png differ diff --git a/concepts/457_7.png b/concepts/457_7.png new file mode 100644 index 0000000000000000000000000000000000000000..6133f55c6ddfb8111b24187c134a2929bea42ffd Binary files /dev/null and b/concepts/457_7.png differ diff --git a/concepts/457_8.png b/concepts/457_8.png new file mode 100644 index 0000000000000000000000000000000000000000..2e8a3421180878ac0f293d8447ac382fd6ba05b3 Binary files /dev/null and b/concepts/457_8.png differ diff --git a/concepts/458_1.png b/concepts/458_1.png new file mode 100644 index 0000000000000000000000000000000000000000..0b7706330858913cd95d12c24e5b0e5802a48b52 Binary files /dev/null and b/concepts/458_1.png differ diff --git a/concepts/458_10.png b/concepts/458_10.png new file mode 100644 index 0000000000000000000000000000000000000000..323636a0d0cf3321b31c9e76cead3d694d13caf7 Binary files /dev/null and b/concepts/458_10.png differ diff --git a/concepts/458_11.png b/concepts/458_11.png new file mode 100644 index 0000000000000000000000000000000000000000..8eed54adeb12ae7c84d3a22dc108b2599e0fae43 Binary files /dev/null and b/concepts/458_11.png differ diff --git a/concepts/458_12.png b/concepts/458_12.png new file mode 100644 index 0000000000000000000000000000000000000000..e37725ac72a79985fc1a1eabbce788846706fbd6 Binary files /dev/null and b/concepts/458_12.png differ diff --git a/concepts/458_3.png b/concepts/458_3.png new file mode 100644 index 0000000000000000000000000000000000000000..31a484df2f4cbd57a19f4ca79a83f1b01b2b9a7a Binary files /dev/null and b/concepts/458_3.png differ diff --git a/concepts/458_4.png b/concepts/458_4.png new file mode 100644 index 0000000000000000000000000000000000000000..f5fb6da2c867b6ff23276eb4bc085f866a70bb22 Binary files /dev/null and b/concepts/458_4.png differ diff --git a/concepts/458_6.png b/concepts/458_6.png new file mode 100644 index 0000000000000000000000000000000000000000..e4107dfb450db46d54badc1d96753beb7944ede2 Binary files /dev/null and b/concepts/458_6.png differ diff --git a/concepts/458_7.png b/concepts/458_7.png new file mode 100644 index 0000000000000000000000000000000000000000..700a5cf73b88dbf58414f611af5249a9430e9dee Binary files /dev/null and b/concepts/458_7.png differ diff --git a/concepts/459_0.png b/concepts/459_0.png new file mode 100644 index 0000000000000000000000000000000000000000..9bd598aedec994bb9db8da0e1556fcad947ff90c Binary files /dev/null and b/concepts/459_0.png differ diff --git a/concepts/459_1.png b/concepts/459_1.png new file mode 100644 index 0000000000000000000000000000000000000000..08755ab3711e7a4879314ec89c55f2674098bd56 Binary files /dev/null and b/concepts/459_1.png differ diff --git a/concepts/459_3.png b/concepts/459_3.png new file mode 100644 index 0000000000000000000000000000000000000000..0d98bf328b8229830c459f922644d323918f904e Binary files /dev/null and b/concepts/459_3.png differ diff --git a/concepts/459_4.png b/concepts/459_4.png new file mode 100644 index 0000000000000000000000000000000000000000..24d2be48e5602cb0f7a34a17db97c96461cdd004 Binary files /dev/null and b/concepts/459_4.png differ diff --git a/concepts/459_5.png b/concepts/459_5.png new file mode 100644 index 0000000000000000000000000000000000000000..b8ebd3949812432e71ee7cd4356568ac32813946 Binary files /dev/null and b/concepts/459_5.png differ diff --git a/concepts/459_6.png b/concepts/459_6.png new file mode 100644 index 0000000000000000000000000000000000000000..412cf6d883ca702ff68fe32a9fc76a987e6e84cb Binary files /dev/null and b/concepts/459_6.png differ diff --git a/concepts/459_8.png b/concepts/459_8.png new file mode 100644 index 0000000000000000000000000000000000000000..f1ee08029550da67d97fd27f4d83b7daef5fa331 Binary files /dev/null and b/concepts/459_8.png differ diff --git a/concepts/459_9.png b/concepts/459_9.png new file mode 100644 index 0000000000000000000000000000000000000000..74cd15c18632498e2a2c532f517ada5fb3c31437 Binary files /dev/null and b/concepts/459_9.png differ diff --git a/concepts/45_0.png b/concepts/45_0.png new file mode 100644 index 0000000000000000000000000000000000000000..5ba7e3fa47d0be837120ba8a150d5587effca058 Binary files /dev/null and b/concepts/45_0.png differ diff --git a/concepts/45_1.png b/concepts/45_1.png new file mode 100644 index 0000000000000000000000000000000000000000..f3a405ce67edb74015016e04a1cceabc7302d3b3 Binary files /dev/null and b/concepts/45_1.png differ diff --git a/concepts/45_2.png b/concepts/45_2.png new file mode 100644 index 0000000000000000000000000000000000000000..cc1ac7555bf9e0f2a4d718cafd4f630fc9dedc88 Binary files /dev/null and b/concepts/45_2.png differ diff --git a/concepts/45_3.png b/concepts/45_3.png new file mode 100644 index 0000000000000000000000000000000000000000..cf0eb54590832074c6e907522a720b08767e594d Binary files /dev/null and b/concepts/45_3.png differ diff --git a/concepts/45_4.png b/concepts/45_4.png new file mode 100644 index 0000000000000000000000000000000000000000..b3531076598cf9da3111be65797033bad55b2453 Binary files /dev/null and b/concepts/45_4.png differ diff --git a/concepts/45_6.png b/concepts/45_6.png new file mode 100644 index 0000000000000000000000000000000000000000..dfc1ab1887c9631ae0e36e1fe0a63f2e15aca220 Binary files /dev/null and b/concepts/45_6.png differ diff --git a/concepts/45_7.png b/concepts/45_7.png new file mode 100644 index 0000000000000000000000000000000000000000..9212ac7d73d8ef61038e5886d759f9bb362a5275 Binary files /dev/null and b/concepts/45_7.png differ diff --git a/concepts/45_8.png b/concepts/45_8.png new file mode 100644 index 0000000000000000000000000000000000000000..08521ea33199f16b7413d2ec9e255f31d81dfe97 Binary files /dev/null and b/concepts/45_8.png differ diff --git a/concepts/460_0.png b/concepts/460_0.png new file mode 100644 index 0000000000000000000000000000000000000000..4e768bddc26653b025ffb30b811ee5ab08021394 Binary files /dev/null and b/concepts/460_0.png differ diff --git a/concepts/460_10.png b/concepts/460_10.png new file mode 100644 index 0000000000000000000000000000000000000000..658fc92d6aaf29c2a0818657bd9e1c6065cbc425 Binary files /dev/null and b/concepts/460_10.png differ diff --git a/concepts/460_13.png b/concepts/460_13.png new file mode 100644 index 0000000000000000000000000000000000000000..0be0dddc5a21c933cdeb520331db43d56564ffbf Binary files /dev/null and b/concepts/460_13.png differ diff --git a/concepts/460_16.png b/concepts/460_16.png new file mode 100644 index 0000000000000000000000000000000000000000..ae9c5c5841d02daabfc71ff2ee056742c2b1d4d4 Binary files /dev/null and b/concepts/460_16.png differ diff --git a/concepts/460_4.png b/concepts/460_4.png new file mode 100644 index 0000000000000000000000000000000000000000..ae48dca758097dcf43a499815a862b4698bda90e Binary files /dev/null and b/concepts/460_4.png differ diff --git a/concepts/460_5.png b/concepts/460_5.png new file mode 100644 index 0000000000000000000000000000000000000000..530316d47b357ebb066428bc8e530b840443544b Binary files /dev/null and b/concepts/460_5.png differ diff --git a/concepts/460_9.png b/concepts/460_9.png new file mode 100644 index 0000000000000000000000000000000000000000..8fa2a83b94dc90ab4dadf9c491781403d4f85ebf Binary files /dev/null and b/concepts/460_9.png differ diff --git a/concepts/461_1.png b/concepts/461_1.png new file mode 100644 index 0000000000000000000000000000000000000000..656f472b8b913979e1b41ce10a7ddd345d078855 Binary files /dev/null and b/concepts/461_1.png differ diff --git a/concepts/461_16.png b/concepts/461_16.png new file mode 100644 index 0000000000000000000000000000000000000000..dd5dac48c66566f558ece562e91590ec4b7e52aa Binary files /dev/null and b/concepts/461_16.png differ diff --git a/concepts/461_18.png b/concepts/461_18.png new file mode 100644 index 0000000000000000000000000000000000000000..0e43ad549b6a6b6d6f4c2b776494661de45ce001 Binary files /dev/null and b/concepts/461_18.png differ diff --git a/concepts/461_2.png b/concepts/461_2.png new file mode 100644 index 0000000000000000000000000000000000000000..d7055fda421542d88923039239163edaca5ca097 Binary files /dev/null and b/concepts/461_2.png differ diff --git a/concepts/461_6.png b/concepts/461_6.png new file mode 100644 index 0000000000000000000000000000000000000000..f0450e612bf7710eef8a2e70a037e570b3f88c41 Binary files /dev/null and b/concepts/461_6.png differ diff --git a/concepts/462_0.png b/concepts/462_0.png new file mode 100644 index 0000000000000000000000000000000000000000..6e5e07dfa2b6f09e7a35903fdb016ca6ab02fdc3 Binary files /dev/null and b/concepts/462_0.png differ diff --git a/concepts/462_1.png b/concepts/462_1.png new file mode 100644 index 0000000000000000000000000000000000000000..4763ecaa11e7ad4d3a95a4afc820a672de136e6c Binary files /dev/null and b/concepts/462_1.png differ diff --git a/concepts/462_2.png b/concepts/462_2.png new file mode 100644 index 0000000000000000000000000000000000000000..a63196dabe79814c3be2eaa45dfe4806e7107055 Binary files /dev/null and b/concepts/462_2.png differ diff --git a/concepts/462_3.png b/concepts/462_3.png new file mode 100644 index 0000000000000000000000000000000000000000..233864ab77d01b3d4419bcae2da26bb6dc12b368 Binary files /dev/null and b/concepts/462_3.png differ diff --git a/concepts/462_4.png b/concepts/462_4.png new file mode 100644 index 0000000000000000000000000000000000000000..89dfc51e871a8523e7df14bcc394019938635752 Binary files /dev/null and b/concepts/462_4.png differ diff --git a/concepts/462_5.png b/concepts/462_5.png new file mode 100644 index 0000000000000000000000000000000000000000..7a44dbf28f050ade90de858019ab00f314cbf030 Binary files /dev/null and b/concepts/462_5.png differ diff --git a/concepts/462_6.png b/concepts/462_6.png new file mode 100644 index 0000000000000000000000000000000000000000..32f1c1244763dac7fa7ea386267e39541ae02916 Binary files /dev/null and b/concepts/462_6.png differ diff --git a/concepts/462_7.png b/concepts/462_7.png new file mode 100644 index 0000000000000000000000000000000000000000..962184a2008258539013c641a55fc3798fd1b33f Binary files /dev/null and b/concepts/462_7.png differ diff --git a/concepts/463_0.png b/concepts/463_0.png new file mode 100644 index 0000000000000000000000000000000000000000..d414e5ee1880ced675234bfae6b101095ff6728b Binary files /dev/null and b/concepts/463_0.png differ diff --git a/concepts/463_1.png b/concepts/463_1.png new file mode 100644 index 0000000000000000000000000000000000000000..8668da11c8b5dfb62313952c43a64cbae9026a37 Binary files /dev/null and b/concepts/463_1.png differ diff --git a/concepts/463_10.png b/concepts/463_10.png new file mode 100644 index 0000000000000000000000000000000000000000..a3422b537fdc001be7d12272829e91cdd30c0751 Binary files /dev/null and b/concepts/463_10.png differ diff --git a/concepts/463_2.png b/concepts/463_2.png new file mode 100644 index 0000000000000000000000000000000000000000..1af6193627214350d001ca056be98806d3ec9909 Binary files /dev/null and b/concepts/463_2.png differ diff --git a/concepts/463_3.png b/concepts/463_3.png new file mode 100644 index 0000000000000000000000000000000000000000..4d52e7f7eec9a1542feaa80ab56be7c2cc33ac89 Binary files /dev/null and b/concepts/463_3.png differ diff --git a/concepts/463_5.png b/concepts/463_5.png new file mode 100644 index 0000000000000000000000000000000000000000..6cfe891f352989b45278612ce7152808be560d9a Binary files /dev/null and b/concepts/463_5.png differ diff --git a/concepts/463_6.png b/concepts/463_6.png new file mode 100644 index 0000000000000000000000000000000000000000..4c1e992e775910e92e1412926fdcfa0c935f4060 Binary files /dev/null and b/concepts/463_6.png differ diff --git a/concepts/463_9.png b/concepts/463_9.png new file mode 100644 index 0000000000000000000000000000000000000000..ef7b01b90256957170b1fb58799fb54850a2d305 Binary files /dev/null and b/concepts/463_9.png differ diff --git a/concepts/465_1.png b/concepts/465_1.png new file mode 100644 index 0000000000000000000000000000000000000000..489711371a6e40e880c031f7406a08e624f708d7 Binary files /dev/null and b/concepts/465_1.png differ diff --git a/concepts/465_10.png b/concepts/465_10.png new file mode 100644 index 0000000000000000000000000000000000000000..b7c08e6cbc4e46f447ddc0628d49274aeacf948b Binary files /dev/null and b/concepts/465_10.png differ diff --git a/concepts/465_18.png b/concepts/465_18.png new file mode 100644 index 0000000000000000000000000000000000000000..366d20af51dd7083dad82b819fdb80c2cf7bc0fd Binary files /dev/null and b/concepts/465_18.png differ diff --git a/concepts/465_4.png b/concepts/465_4.png new file mode 100644 index 0000000000000000000000000000000000000000..69bb3d1c8525137f5fc8664f5e9a52ae9778bed2 Binary files /dev/null and b/concepts/465_4.png differ diff --git a/concepts/465_5.png b/concepts/465_5.png new file mode 100644 index 0000000000000000000000000000000000000000..5021d6f7f688ecf081bc8ada6d2059fa9c01b5ec Binary files /dev/null and b/concepts/465_5.png differ diff --git a/concepts/465_6.png b/concepts/465_6.png new file mode 100644 index 0000000000000000000000000000000000000000..0ab32a26d28c76e0976d71e204af86d7a3470106 Binary files /dev/null and b/concepts/465_6.png differ diff --git a/concepts/465_7.png b/concepts/465_7.png new file mode 100644 index 0000000000000000000000000000000000000000..05a2f77c265fe459d318f38d95b91df143572c60 Binary files /dev/null and b/concepts/465_7.png differ diff --git a/concepts/465_8.png b/concepts/465_8.png new file mode 100644 index 0000000000000000000000000000000000000000..0a8dc747905ae7ad536c004f8016b89eb403eec2 Binary files /dev/null and b/concepts/465_8.png differ diff --git a/concepts/466_0.png b/concepts/466_0.png new file mode 100644 index 0000000000000000000000000000000000000000..374d2ea866e48810bfdac3c5cf26c5fc6b6c2359 Binary files /dev/null and b/concepts/466_0.png differ diff --git a/concepts/466_15.png b/concepts/466_15.png new file mode 100644 index 0000000000000000000000000000000000000000..cd0ff169648da2756292157143e194396c0a1c52 Binary files /dev/null and b/concepts/466_15.png differ diff --git a/concepts/466_2.png b/concepts/466_2.png new file mode 100644 index 0000000000000000000000000000000000000000..5607a9c44dd0f038b127fa5e95f9ab1ac0a2dfe5 Binary files /dev/null and b/concepts/466_2.png differ diff --git a/concepts/466_3.png b/concepts/466_3.png new file mode 100644 index 0000000000000000000000000000000000000000..3b275ee19c1fe423d1352099845abff17eacd832 Binary files /dev/null and b/concepts/466_3.png differ diff --git a/concepts/466_4.png b/concepts/466_4.png new file mode 100644 index 0000000000000000000000000000000000000000..1a9ca3f1e15c7d4bfeb177e1d07f120b789ba1bc Binary files /dev/null and b/concepts/466_4.png differ diff --git a/concepts/466_6.png b/concepts/466_6.png new file mode 100644 index 0000000000000000000000000000000000000000..5fde81259ecfbe8d70779fb3f9a8fe0f6dbbc069 Binary files /dev/null and b/concepts/466_6.png differ diff --git a/concepts/466_7.png b/concepts/466_7.png new file mode 100644 index 0000000000000000000000000000000000000000..bcb9aa90ce297167f9c5d6c5e80f02b49c6e81a2 Binary files /dev/null and b/concepts/466_7.png differ diff --git a/concepts/466_9.png b/concepts/466_9.png new file mode 100644 index 0000000000000000000000000000000000000000..00d479260b47b453991dbab61544780f331ff224 Binary files /dev/null and b/concepts/466_9.png differ diff --git a/concepts/467_0.png b/concepts/467_0.png new file mode 100644 index 0000000000000000000000000000000000000000..4e3c498e944e807929c78efc3709010605e9e718 Binary files /dev/null and b/concepts/467_0.png differ diff --git a/concepts/467_1.png b/concepts/467_1.png new file mode 100644 index 0000000000000000000000000000000000000000..bedd303833d898b429744bfc51a72d566aa9650e Binary files /dev/null and b/concepts/467_1.png differ diff --git a/concepts/467_10.png b/concepts/467_10.png new file mode 100644 index 0000000000000000000000000000000000000000..9bae4ae2f37c4eb178707717a92ed039292dc60f Binary files /dev/null and b/concepts/467_10.png differ diff --git a/concepts/467_3.png b/concepts/467_3.png new file mode 100644 index 0000000000000000000000000000000000000000..a8b3b0ec7b127018b7f7e3146e645a936121f71a Binary files /dev/null and b/concepts/467_3.png differ diff --git a/concepts/467_4.png b/concepts/467_4.png new file mode 100644 index 0000000000000000000000000000000000000000..2d7494100e0b7380d723bb85d639b75c8b1a51ee Binary files /dev/null and b/concepts/467_4.png differ diff --git a/concepts/467_6.png b/concepts/467_6.png new file mode 100644 index 0000000000000000000000000000000000000000..d36f0afefd6a2acaf8cc72f8121671d4e9551182 Binary files /dev/null and b/concepts/467_6.png differ diff --git a/concepts/467_7.png b/concepts/467_7.png new file mode 100644 index 0000000000000000000000000000000000000000..e87751711ecb7fe86decfb14b2b97d39bf0d5f30 Binary files /dev/null and b/concepts/467_7.png differ diff --git a/concepts/467_9.png b/concepts/467_9.png new file mode 100644 index 0000000000000000000000000000000000000000..89d153b02fd3ce9d90d9502a2cca8c8a238ce509 Binary files /dev/null and b/concepts/467_9.png differ diff --git a/concepts/468_0.png b/concepts/468_0.png new file mode 100644 index 0000000000000000000000000000000000000000..f301f9e0f5526f781c67642b9f5f948cc4d22251 Binary files /dev/null and b/concepts/468_0.png differ diff --git a/concepts/468_11.png b/concepts/468_11.png new file mode 100644 index 0000000000000000000000000000000000000000..867e58ec24c02d89f3697f048aafc0267e8d33ef Binary files /dev/null and b/concepts/468_11.png differ diff --git a/concepts/468_17.png b/concepts/468_17.png new file mode 100644 index 0000000000000000000000000000000000000000..e378233fb0414e19cacf553138b8dc81108d0ac9 Binary files /dev/null and b/concepts/468_17.png differ diff --git a/concepts/468_24.png b/concepts/468_24.png new file mode 100644 index 0000000000000000000000000000000000000000..66de55d405c289c22d3420639c88d902a3f3ab80 Binary files /dev/null and b/concepts/468_24.png differ diff --git a/concepts/468_4.png b/concepts/468_4.png new file mode 100644 index 0000000000000000000000000000000000000000..ccf9af631d34a313a7e139ceb1804b3f1c5b6b45 Binary files /dev/null and b/concepts/468_4.png differ diff --git a/concepts/468_7.png b/concepts/468_7.png new file mode 100644 index 0000000000000000000000000000000000000000..bded510850d2bef2243706c3bdea079b56c6a2f8 Binary files /dev/null and b/concepts/468_7.png differ diff --git a/concepts/468_8.png b/concepts/468_8.png new file mode 100644 index 0000000000000000000000000000000000000000..d068b6b8093276b5d7ee8f3646da89250bdba1fd Binary files /dev/null and b/concepts/468_8.png differ diff --git a/concepts/468_9.png b/concepts/468_9.png new file mode 100644 index 0000000000000000000000000000000000000000..85979f75f0d4ffb5b64425c6e8771253907f4cc0 Binary files /dev/null and b/concepts/468_9.png differ diff --git a/concepts/469_0.png b/concepts/469_0.png new file mode 100644 index 0000000000000000000000000000000000000000..14a201b53c7851ba6557320a61ef71fa3ca4ad64 Binary files /dev/null and b/concepts/469_0.png differ diff --git a/concepts/469_1.png b/concepts/469_1.png new file mode 100644 index 0000000000000000000000000000000000000000..df12fc2795b46f4b80f16318dfccbc48ad1bfd41 Binary files /dev/null and b/concepts/469_1.png differ diff --git a/concepts/469_2.png b/concepts/469_2.png new file mode 100644 index 0000000000000000000000000000000000000000..f81756aa381fd8d830319ceae8ceb995f79bbdbc Binary files /dev/null and b/concepts/469_2.png differ diff --git a/concepts/469_4.png b/concepts/469_4.png new file mode 100644 index 0000000000000000000000000000000000000000..1ad515eb9c4d32d994e810add79b22df47697a6c Binary files /dev/null and b/concepts/469_4.png differ diff --git a/concepts/469_5.png b/concepts/469_5.png new file mode 100644 index 0000000000000000000000000000000000000000..b4511401292dbdf21e21163f4c915326c689e63c Binary files /dev/null and b/concepts/469_5.png differ diff --git a/concepts/469_6.png b/concepts/469_6.png new file mode 100644 index 0000000000000000000000000000000000000000..ea98a0d92e35768238f59eeb923abf1d76674a9c Binary files /dev/null and b/concepts/469_6.png differ diff --git a/concepts/469_7.png b/concepts/469_7.png new file mode 100644 index 0000000000000000000000000000000000000000..22ad7ea6467da8bc8ba924217f988ac3a203cb04 Binary files /dev/null and b/concepts/469_7.png differ diff --git a/concepts/469_8.png b/concepts/469_8.png new file mode 100644 index 0000000000000000000000000000000000000000..6bef437ccbc0a5091291c59a6bbcef2a96f04853 Binary files /dev/null and b/concepts/469_8.png differ diff --git a/concepts/46_0.png b/concepts/46_0.png new file mode 100644 index 0000000000000000000000000000000000000000..8d20da5e8cd9e67917fc9da31aae4aa4844a0944 Binary files /dev/null and b/concepts/46_0.png differ diff --git a/concepts/46_10.png b/concepts/46_10.png new file mode 100644 index 0000000000000000000000000000000000000000..21a9a454e139c045c857dac1241dd76ed6b7eb05 Binary files /dev/null and b/concepts/46_10.png differ diff --git a/concepts/46_15.png b/concepts/46_15.png new file mode 100644 index 0000000000000000000000000000000000000000..121f5aea7ecb592c77fa63c5651e608e66e69a5d Binary files /dev/null and b/concepts/46_15.png differ diff --git a/concepts/46_2.png b/concepts/46_2.png new file mode 100644 index 0000000000000000000000000000000000000000..ee87fa76e1096dedc80727cfdfac08c2d33d489b Binary files /dev/null and b/concepts/46_2.png differ diff --git a/concepts/46_3.png b/concepts/46_3.png new file mode 100644 index 0000000000000000000000000000000000000000..264060b29f3dd4dc7d6c5e2bb84e85ae02875da7 Binary files /dev/null and b/concepts/46_3.png differ diff --git a/concepts/46_7.png b/concepts/46_7.png new file mode 100644 index 0000000000000000000000000000000000000000..226e908b6568e963f637c310c27e96d21b3021a6 Binary files /dev/null and b/concepts/46_7.png differ diff --git a/concepts/46_8.png b/concepts/46_8.png new file mode 100644 index 0000000000000000000000000000000000000000..f68e6f8b3fedd5809aab98cd7a37c40db6ec8c93 Binary files /dev/null and b/concepts/46_8.png differ diff --git a/concepts/46_9.png b/concepts/46_9.png new file mode 100644 index 0000000000000000000000000000000000000000..5753a7c7bb501533a6857fb20b9da9c749128bae Binary files /dev/null and b/concepts/46_9.png differ diff --git a/concepts/470_0.png b/concepts/470_0.png new file mode 100644 index 0000000000000000000000000000000000000000..6bddbfad72c9ffbbced30ab4ff909a95a93fd2b5 Binary files /dev/null and b/concepts/470_0.png differ diff --git a/concepts/470_1.png b/concepts/470_1.png new file mode 100644 index 0000000000000000000000000000000000000000..a35a2af1a91a9db06b0f658a27dcb7e87963cafa Binary files /dev/null and b/concepts/470_1.png differ diff --git a/concepts/470_2.png b/concepts/470_2.png new file mode 100644 index 0000000000000000000000000000000000000000..893fa719c73faf314585db589bca71763e1b1b57 Binary files /dev/null and b/concepts/470_2.png differ diff --git a/concepts/470_3.png b/concepts/470_3.png new file mode 100644 index 0000000000000000000000000000000000000000..b379d0fa47d0f9b8845a1ae79f45c96edbb1d88c Binary files /dev/null and b/concepts/470_3.png differ diff --git a/concepts/470_4.png b/concepts/470_4.png new file mode 100644 index 0000000000000000000000000000000000000000..c5593e0232c7751495d2406c4a1075893ad2a3a0 Binary files /dev/null and b/concepts/470_4.png differ diff --git a/concepts/470_5.png b/concepts/470_5.png new file mode 100644 index 0000000000000000000000000000000000000000..9b5c212c5e6978e23015c50af84b1389a7c11d7a Binary files /dev/null and b/concepts/470_5.png differ diff --git a/concepts/470_6.png b/concepts/470_6.png new file mode 100644 index 0000000000000000000000000000000000000000..2f4a1545ba90961363e482d199239f8879671a0f Binary files /dev/null and b/concepts/470_6.png differ diff --git a/concepts/470_7.png b/concepts/470_7.png new file mode 100644 index 0000000000000000000000000000000000000000..243ebb43aa46e0b626ffdeee1b815e488f1cd22c Binary files /dev/null and b/concepts/470_7.png differ diff --git a/concepts/471_0.png b/concepts/471_0.png new file mode 100644 index 0000000000000000000000000000000000000000..3fb912218a0ebc5f445c0da6b5dc0aab724768e2 Binary files /dev/null and b/concepts/471_0.png differ diff --git a/concepts/472_0.png b/concepts/472_0.png new file mode 100644 index 0000000000000000000000000000000000000000..99de0e2ac25be38a8f8f27adab43c36716de7f03 Binary files /dev/null and b/concepts/472_0.png differ diff --git a/concepts/472_1.png b/concepts/472_1.png new file mode 100644 index 0000000000000000000000000000000000000000..0f01c386e72b1759e028645f571db751d5276c67 Binary files /dev/null and b/concepts/472_1.png differ diff --git a/concepts/472_12.png b/concepts/472_12.png new file mode 100644 index 0000000000000000000000000000000000000000..2060643d850453d4fc9c18006ae393faea285b25 Binary files /dev/null and b/concepts/472_12.png differ diff --git a/concepts/472_15.png b/concepts/472_15.png new file mode 100644 index 0000000000000000000000000000000000000000..be32a9f062c3d2ddad0191fe1c67d3d0a602606f Binary files /dev/null and b/concepts/472_15.png differ diff --git a/concepts/472_4.png b/concepts/472_4.png new file mode 100644 index 0000000000000000000000000000000000000000..9e66d77fcc5387a076689b7575278ca0146956fc Binary files /dev/null and b/concepts/472_4.png differ diff --git a/concepts/472_5.png b/concepts/472_5.png new file mode 100644 index 0000000000000000000000000000000000000000..b8e311ae1b309f15b1d002cdf221d583c74b3d21 Binary files /dev/null and b/concepts/472_5.png differ diff --git a/concepts/472_6.png b/concepts/472_6.png new file mode 100644 index 0000000000000000000000000000000000000000..48eca14221ec3c54a5913198a3ef71f3fd518b41 Binary files /dev/null and b/concepts/472_6.png differ diff --git a/concepts/472_7.png b/concepts/472_7.png new file mode 100644 index 0000000000000000000000000000000000000000..05dc33bd101ef036f357947f8310617d493be5c3 Binary files /dev/null and b/concepts/472_7.png differ diff --git a/concepts/473_0.png b/concepts/473_0.png new file mode 100644 index 0000000000000000000000000000000000000000..ada8ba6a53f41a4fec26defa910485647d206841 Binary files /dev/null and b/concepts/473_0.png differ diff --git a/concepts/473_1.png b/concepts/473_1.png new file mode 100644 index 0000000000000000000000000000000000000000..87f647f9250b43b86178839984cc80fbd7272bb5 Binary files /dev/null and b/concepts/473_1.png differ diff --git a/concepts/473_2.png b/concepts/473_2.png new file mode 100644 index 0000000000000000000000000000000000000000..17bd2d677e81fe99bc8b7938bb8b168842f022d4 Binary files /dev/null and b/concepts/473_2.png differ diff --git a/concepts/473_3.png b/concepts/473_3.png new file mode 100644 index 0000000000000000000000000000000000000000..483f410a153599125455472dabbac69d4456b22f Binary files /dev/null and b/concepts/473_3.png differ diff --git a/concepts/473_4.png b/concepts/473_4.png new file mode 100644 index 0000000000000000000000000000000000000000..e0fb14ae36c9df4015f4cffd33c3eeae24fe7a08 Binary files /dev/null and b/concepts/473_4.png differ diff --git a/concepts/473_5.png b/concepts/473_5.png new file mode 100644 index 0000000000000000000000000000000000000000..b2e45271f1084c520d85b5ca5e5b891e3a5e803b Binary files /dev/null and b/concepts/473_5.png differ diff --git a/concepts/473_7.png b/concepts/473_7.png new file mode 100644 index 0000000000000000000000000000000000000000..41f327e03e17cdb26102b60750bf67d05376ab7d Binary files /dev/null and b/concepts/473_7.png differ diff --git a/concepts/473_9.png b/concepts/473_9.png new file mode 100644 index 0000000000000000000000000000000000000000..cab755ffb79908d2f7b0959ac45247bb749347f8 Binary files /dev/null and b/concepts/473_9.png differ diff --git a/concepts/474_0.png b/concepts/474_0.png new file mode 100644 index 0000000000000000000000000000000000000000..0d6a58fca15d8fbdb97b41dfbbde183e7cb14b6a Binary files /dev/null and b/concepts/474_0.png differ diff --git a/concepts/474_1.png b/concepts/474_1.png new file mode 100644 index 0000000000000000000000000000000000000000..38d8fb65073a47e29571992a26c5630fa6f75f15 Binary files /dev/null and b/concepts/474_1.png differ diff --git a/concepts/474_2.png b/concepts/474_2.png new file mode 100644 index 0000000000000000000000000000000000000000..038c6b5bc3a055cb79881ad6c613d355605f2e86 Binary files /dev/null and b/concepts/474_2.png differ diff --git a/concepts/474_3.png b/concepts/474_3.png new file mode 100644 index 0000000000000000000000000000000000000000..95a9bc8ea42b127faf736e86f977df0a83409a13 Binary files /dev/null and b/concepts/474_3.png differ diff --git a/concepts/474_5.png b/concepts/474_5.png new file mode 100644 index 0000000000000000000000000000000000000000..0d7ff6abe8b9c0c78fd7d16418c2f2d48cdcbf01 Binary files /dev/null and b/concepts/474_5.png differ diff --git a/concepts/474_6.png b/concepts/474_6.png new file mode 100644 index 0000000000000000000000000000000000000000..f5bdee90eb148b786f66eacdb706889676a7929e Binary files /dev/null and b/concepts/474_6.png differ diff --git a/concepts/474_7.png b/concepts/474_7.png new file mode 100644 index 0000000000000000000000000000000000000000..4c2f25439fbe51a13456b63fe526b161c522ceee Binary files /dev/null and b/concepts/474_7.png differ diff --git a/concepts/474_8.png b/concepts/474_8.png new file mode 100644 index 0000000000000000000000000000000000000000..f285cb017ad8769b031db9d93cfbc97d1c636bac Binary files /dev/null and b/concepts/474_8.png differ diff --git a/concepts/475_0.png b/concepts/475_0.png new file mode 100644 index 0000000000000000000000000000000000000000..54de32a0c885d7f8e13812b750bb35dfc3839181 Binary files /dev/null and b/concepts/475_0.png differ diff --git a/concepts/475_1.png b/concepts/475_1.png new file mode 100644 index 0000000000000000000000000000000000000000..3266654294ab594b5b6a2f7ac93faae4d3240111 Binary files /dev/null and b/concepts/475_1.png differ diff --git a/concepts/475_10.png b/concepts/475_10.png new file mode 100644 index 0000000000000000000000000000000000000000..8369b65a0e27856f582b039b389bc44d78afd3a3 Binary files /dev/null and b/concepts/475_10.png differ diff --git a/concepts/475_11.png b/concepts/475_11.png new file mode 100644 index 0000000000000000000000000000000000000000..e78a3ae5d1f511af5d73fe43d7c4c0b9496450af Binary files /dev/null and b/concepts/475_11.png differ diff --git a/concepts/475_2.png b/concepts/475_2.png new file mode 100644 index 0000000000000000000000000000000000000000..ed6edcbb5bb1dcb8cdb8ff6c5c109d1fbe1cd2b4 Binary files /dev/null and b/concepts/475_2.png differ diff --git a/concepts/475_3.png b/concepts/475_3.png new file mode 100644 index 0000000000000000000000000000000000000000..9bc40acec1cf5dd9ed46d6589e3715b83e596fcb Binary files /dev/null and b/concepts/475_3.png differ diff --git a/concepts/475_4.png b/concepts/475_4.png new file mode 100644 index 0000000000000000000000000000000000000000..0a96ee498488db32c6b7ca151fd4ae7eb38597ff Binary files /dev/null and b/concepts/475_4.png differ diff --git a/concepts/475_7.png b/concepts/475_7.png new file mode 100644 index 0000000000000000000000000000000000000000..25e04290d4ad87f5d6a338acd060aa67375b078b Binary files /dev/null and b/concepts/475_7.png differ diff --git a/concepts/476_0.png b/concepts/476_0.png new file mode 100644 index 0000000000000000000000000000000000000000..8da1bed3880521620de83585db1c6a550f721f66 Binary files /dev/null and b/concepts/476_0.png differ diff --git a/concepts/476_12.png b/concepts/476_12.png new file mode 100644 index 0000000000000000000000000000000000000000..f2647b818e66584cffab15a9a2b470f19215393a Binary files /dev/null and b/concepts/476_12.png differ diff --git a/concepts/476_14.png b/concepts/476_14.png new file mode 100644 index 0000000000000000000000000000000000000000..cb236fefa6d138d00dd944330c79457afbceaff2 Binary files /dev/null and b/concepts/476_14.png differ diff --git a/concepts/476_2.png b/concepts/476_2.png new file mode 100644 index 0000000000000000000000000000000000000000..97b57b730f3deff6f8eea720b8d4fa50b9e4df46 Binary files /dev/null and b/concepts/476_2.png differ diff --git a/concepts/476_5.png b/concepts/476_5.png new file mode 100644 index 0000000000000000000000000000000000000000..78edacfca963fef37bfe91d7e9da8e795e0ff31d Binary files /dev/null and b/concepts/476_5.png differ diff --git a/concepts/476_6.png b/concepts/476_6.png new file mode 100644 index 0000000000000000000000000000000000000000..d662e5366377bde9919ecf041b630c407dd6305c Binary files /dev/null and b/concepts/476_6.png differ diff --git a/concepts/476_7.png b/concepts/476_7.png new file mode 100644 index 0000000000000000000000000000000000000000..8499e66f8d09cb65fb84d339849ec9b6aa73a4db Binary files /dev/null and b/concepts/476_7.png differ diff --git a/concepts/476_9.png b/concepts/476_9.png new file mode 100644 index 0000000000000000000000000000000000000000..66d3287034d27de6fd10fcc7090e49d643b0b743 Binary files /dev/null and b/concepts/476_9.png differ diff --git a/concepts/477_0.png b/concepts/477_0.png new file mode 100644 index 0000000000000000000000000000000000000000..fefcce7b562acc296be0d01665380794ec925dec Binary files /dev/null and b/concepts/477_0.png differ diff --git a/concepts/477_17.png b/concepts/477_17.png new file mode 100644 index 0000000000000000000000000000000000000000..27951252c430e3f0e63c845d73cd4b86b52d03db Binary files /dev/null and b/concepts/477_17.png differ diff --git a/concepts/477_19.png b/concepts/477_19.png new file mode 100644 index 0000000000000000000000000000000000000000..9839baf1a26989c0aebd5a76f8378fb0696bc9fc Binary files /dev/null and b/concepts/477_19.png differ diff --git a/concepts/477_4.png b/concepts/477_4.png new file mode 100644 index 0000000000000000000000000000000000000000..18a7297c1eed01bccc6dab89886e7eecbc07ca3e Binary files /dev/null and b/concepts/477_4.png differ diff --git a/concepts/477_5.png b/concepts/477_5.png new file mode 100644 index 0000000000000000000000000000000000000000..bec5e62ed5665430cd93a92c734a0ee042aeac10 Binary files /dev/null and b/concepts/477_5.png differ diff --git a/concepts/477_6.png b/concepts/477_6.png new file mode 100644 index 0000000000000000000000000000000000000000..c0b3a43ebf3ef1ea338edb2bac5f10dad620b9c7 Binary files /dev/null and b/concepts/477_6.png differ diff --git a/concepts/477_7.png b/concepts/477_7.png new file mode 100644 index 0000000000000000000000000000000000000000..805a8c158f3a6c6ac21cf191b40d6cec48361c3a Binary files /dev/null and b/concepts/477_7.png differ diff --git a/concepts/477_8.png b/concepts/477_8.png new file mode 100644 index 0000000000000000000000000000000000000000..34ff1774afb134e08d26567f6519f3612d62c797 Binary files /dev/null and b/concepts/477_8.png differ diff --git a/concepts/478_0.png b/concepts/478_0.png new file mode 100644 index 0000000000000000000000000000000000000000..79062f67823154e27f201de63ecccb2a07f7ee4f Binary files /dev/null and b/concepts/478_0.png differ diff --git a/concepts/478_1.png b/concepts/478_1.png new file mode 100644 index 0000000000000000000000000000000000000000..d3682536aa2e2af912f226027a56f4d7988f23fb Binary files /dev/null and b/concepts/478_1.png differ diff --git a/concepts/478_2.png b/concepts/478_2.png new file mode 100644 index 0000000000000000000000000000000000000000..1d51a333adcd1a0569b4d3866391d7ddd840317e Binary files /dev/null and b/concepts/478_2.png differ diff --git a/concepts/478_4.png b/concepts/478_4.png new file mode 100644 index 0000000000000000000000000000000000000000..e5162700d82c13ed79d029cb1761fd72a72dd46d Binary files /dev/null and b/concepts/478_4.png differ diff --git a/concepts/478_5.png b/concepts/478_5.png new file mode 100644 index 0000000000000000000000000000000000000000..99f6f2201ff48915bb02649450e5027c6e6308d5 Binary files /dev/null and b/concepts/478_5.png differ diff --git a/concepts/478_6.png b/concepts/478_6.png new file mode 100644 index 0000000000000000000000000000000000000000..388d2b5cd629e070a5effc1b46595b025bbe7a74 Binary files /dev/null and b/concepts/478_6.png differ diff --git a/concepts/478_7.png b/concepts/478_7.png new file mode 100644 index 0000000000000000000000000000000000000000..d3301385ddc629828ce821ce07c2f43a0a527ba7 Binary files /dev/null and b/concepts/478_7.png differ diff --git a/concepts/478_8.png b/concepts/478_8.png new file mode 100644 index 0000000000000000000000000000000000000000..2c0d381dd7fe2d9110d066c0eab3e53005a9018d Binary files /dev/null and b/concepts/478_8.png differ diff --git a/concepts/479_0.png b/concepts/479_0.png new file mode 100644 index 0000000000000000000000000000000000000000..ecee12e71d665419e5c6a24641e7d84d4f42870d Binary files /dev/null and b/concepts/479_0.png differ diff --git a/concepts/479_1.png b/concepts/479_1.png new file mode 100644 index 0000000000000000000000000000000000000000..ac3b94bc670e4e3b56fc48c6f92b853e6d8901a3 Binary files /dev/null and b/concepts/479_1.png differ diff --git a/concepts/479_2.png b/concepts/479_2.png new file mode 100644 index 0000000000000000000000000000000000000000..ec3df3808c237791d77ca01b9308bd222f131fde Binary files /dev/null and b/concepts/479_2.png differ diff --git a/concepts/479_3.png b/concepts/479_3.png new file mode 100644 index 0000000000000000000000000000000000000000..3a3a9a40e35d9bbb992cf537e1c4dff4beb0b68a Binary files /dev/null and b/concepts/479_3.png differ diff --git a/concepts/479_4.png b/concepts/479_4.png new file mode 100644 index 0000000000000000000000000000000000000000..9822d7b8f5a2b686443f96b006a88eb190e19355 Binary files /dev/null and b/concepts/479_4.png differ diff --git a/concepts/479_7.png b/concepts/479_7.png new file mode 100644 index 0000000000000000000000000000000000000000..5f1abf11413a794ea65428db6a6e371ed5888b0d Binary files /dev/null and b/concepts/479_7.png differ diff --git a/concepts/479_8.png b/concepts/479_8.png new file mode 100644 index 0000000000000000000000000000000000000000..80bf8a86382973e9ccf14cb2a8f11c5db94fdcc6 Binary files /dev/null and b/concepts/479_8.png differ diff --git a/concepts/479_9.png b/concepts/479_9.png new file mode 100644 index 0000000000000000000000000000000000000000..6dadb665d973f5470c67cc193dfbd4a412a425cc Binary files /dev/null and b/concepts/479_9.png differ diff --git a/concepts/47_0.png b/concepts/47_0.png new file mode 100644 index 0000000000000000000000000000000000000000..dc4cd1f1c35ab1a361fa72895535c0eb378d20ae Binary files /dev/null and b/concepts/47_0.png differ diff --git a/concepts/47_1.png b/concepts/47_1.png new file mode 100644 index 0000000000000000000000000000000000000000..0941a43a7f3ff008e019fd63735d73727b89be40 Binary files /dev/null and b/concepts/47_1.png differ diff --git a/concepts/47_2.png b/concepts/47_2.png new file mode 100644 index 0000000000000000000000000000000000000000..01370ca0c48118fb137d2c986dc1ae5f9ac0f32b Binary files /dev/null and b/concepts/47_2.png differ diff --git a/concepts/47_3.png b/concepts/47_3.png new file mode 100644 index 0000000000000000000000000000000000000000..d2ebdafc39d01a3e15b2ae6ebea0a73848257ca9 Binary files /dev/null and b/concepts/47_3.png differ diff --git a/concepts/47_4.png b/concepts/47_4.png new file mode 100644 index 0000000000000000000000000000000000000000..84f74eec221aa479777abaf18b603e3119988af3 Binary files /dev/null and b/concepts/47_4.png differ diff --git a/concepts/47_5.png b/concepts/47_5.png new file mode 100644 index 0000000000000000000000000000000000000000..b7425fc885bf0b9a4773271de1d1066a56017299 Binary files /dev/null and b/concepts/47_5.png differ diff --git a/concepts/47_8.png b/concepts/47_8.png new file mode 100644 index 0000000000000000000000000000000000000000..2d52e6abd054ea8015b808e287e7362495257fc3 Binary files /dev/null and b/concepts/47_8.png differ diff --git a/concepts/47_9.png b/concepts/47_9.png new file mode 100644 index 0000000000000000000000000000000000000000..f75d644573caf82a411a34990517f87f89825ef9 Binary files /dev/null and b/concepts/47_9.png differ diff --git a/concepts/480_0.png b/concepts/480_0.png new file mode 100644 index 0000000000000000000000000000000000000000..aedd64b8ed4abed1c05335cbe8036c7222d63386 Binary files /dev/null and b/concepts/480_0.png differ diff --git a/concepts/480_1.png b/concepts/480_1.png new file mode 100644 index 0000000000000000000000000000000000000000..9aacc1925eb425c8681d7e948bc27347736e484d Binary files /dev/null and b/concepts/480_1.png differ diff --git a/concepts/480_2.png b/concepts/480_2.png new file mode 100644 index 0000000000000000000000000000000000000000..b924953cd1744e45972ade116fd4b3e369820132 Binary files /dev/null and b/concepts/480_2.png differ diff --git a/concepts/480_3.png b/concepts/480_3.png new file mode 100644 index 0000000000000000000000000000000000000000..47a0c57e72a8d32180be59dbb6502e3a855c750f Binary files /dev/null and b/concepts/480_3.png differ diff --git a/concepts/480_4.png b/concepts/480_4.png new file mode 100644 index 0000000000000000000000000000000000000000..1e9c2653e213b6462064dbf97deac969d0e70c2b Binary files /dev/null and b/concepts/480_4.png differ diff --git a/concepts/480_6.png b/concepts/480_6.png new file mode 100644 index 0000000000000000000000000000000000000000..9373d6aecec3068a829e0ef98fd1cda1673275dc Binary files /dev/null and b/concepts/480_6.png differ diff --git a/concepts/480_8.png b/concepts/480_8.png new file mode 100644 index 0000000000000000000000000000000000000000..d88e6fe56edbfd23045a0f83c475dbc190844086 Binary files /dev/null and b/concepts/480_8.png differ diff --git a/concepts/480_9.png b/concepts/480_9.png new file mode 100644 index 0000000000000000000000000000000000000000..c939b0a2da30b9a9e0bc9394c1e0d9706ccc05b1 Binary files /dev/null and b/concepts/480_9.png differ diff --git a/concepts/481_0.png b/concepts/481_0.png new file mode 100644 index 0000000000000000000000000000000000000000..9ff641fc5861fcb60396c1fcea68bc9f06a493f0 Binary files /dev/null and b/concepts/481_0.png differ diff --git a/concepts/481_1.png b/concepts/481_1.png new file mode 100644 index 0000000000000000000000000000000000000000..eea3839cd05d14fc86f85a75157854b881b4d3be Binary files /dev/null and b/concepts/481_1.png differ diff --git a/concepts/481_10.png b/concepts/481_10.png new file mode 100644 index 0000000000000000000000000000000000000000..e58f55b747689d122787de927a2abf4d06702bbb Binary files /dev/null and b/concepts/481_10.png differ diff --git a/concepts/481_11.png b/concepts/481_11.png new file mode 100644 index 0000000000000000000000000000000000000000..51946c86245ab44e7a2c5a17a5d4bef83dd5fae4 Binary files /dev/null and b/concepts/481_11.png differ diff --git a/concepts/481_12.png b/concepts/481_12.png new file mode 100644 index 0000000000000000000000000000000000000000..6cb2ab78b6011e3198af195c6967308af6d95893 Binary files /dev/null and b/concepts/481_12.png differ diff --git a/concepts/481_15.png b/concepts/481_15.png new file mode 100644 index 0000000000000000000000000000000000000000..bb023d74f791815f2da0dc3228f51c7519a9e48e Binary files /dev/null and b/concepts/481_15.png differ diff --git a/concepts/481_8.png b/concepts/481_8.png new file mode 100644 index 0000000000000000000000000000000000000000..0427cb7d2c0bfd2464f4b402d265b80d18da54b5 Binary files /dev/null and b/concepts/481_8.png differ diff --git a/concepts/481_9.png b/concepts/481_9.png new file mode 100644 index 0000000000000000000000000000000000000000..7479805339b1c91a6b6a5354d775b3b56e01b2ac Binary files /dev/null and b/concepts/481_9.png differ diff --git a/concepts/482_0.png b/concepts/482_0.png new file mode 100644 index 0000000000000000000000000000000000000000..506da9b0f99ec0d52c612efdf8fa70d4f830d512 Binary files /dev/null and b/concepts/482_0.png differ diff --git a/concepts/482_1.png b/concepts/482_1.png new file mode 100644 index 0000000000000000000000000000000000000000..6a14179547be232a0e68b2057e8a9452fb0e4307 Binary files /dev/null and b/concepts/482_1.png differ diff --git a/concepts/482_2.png b/concepts/482_2.png new file mode 100644 index 0000000000000000000000000000000000000000..3621e5c1f6586f10d0c4a0bfe942364a8042afd2 Binary files /dev/null and b/concepts/482_2.png differ diff --git a/concepts/482_3.png b/concepts/482_3.png new file mode 100644 index 0000000000000000000000000000000000000000..28416d7619b77e0c158b16e79c3d1c85bc190324 Binary files /dev/null and b/concepts/482_3.png differ diff --git a/concepts/482_5.png b/concepts/482_5.png new file mode 100644 index 0000000000000000000000000000000000000000..c3792147a6efe2a4e003f713233979c998e18d6a Binary files /dev/null and b/concepts/482_5.png differ diff --git a/concepts/482_7.png b/concepts/482_7.png new file mode 100644 index 0000000000000000000000000000000000000000..bf8c1a41f18f73b2b8504d820202e53c235620db Binary files /dev/null and b/concepts/482_7.png differ diff --git a/concepts/482_8.png b/concepts/482_8.png new file mode 100644 index 0000000000000000000000000000000000000000..17b6b205abdde87c8a66daa16ffcf2f8edc71111 Binary files /dev/null and b/concepts/482_8.png differ diff --git a/concepts/482_9.png b/concepts/482_9.png new file mode 100644 index 0000000000000000000000000000000000000000..eedb21f103b3f0b89d00f5ff4472320aba0abc39 Binary files /dev/null and b/concepts/482_9.png differ diff --git a/concepts/483_13.png b/concepts/483_13.png new file mode 100644 index 0000000000000000000000000000000000000000..468f5692ec1bc1dd3ef2b5a46e0fcff75ca22d45 Binary files /dev/null and b/concepts/483_13.png differ diff --git a/concepts/483_15.png b/concepts/483_15.png new file mode 100644 index 0000000000000000000000000000000000000000..67ae787ba2b622e348271cf4b43bb101ffc08aed Binary files /dev/null and b/concepts/483_15.png differ diff --git a/concepts/483_16.png b/concepts/483_16.png new file mode 100644 index 0000000000000000000000000000000000000000..330a6531102a623e454bbb7fc17618da1e5d9e96 Binary files /dev/null and b/concepts/483_16.png differ diff --git a/concepts/483_18.png b/concepts/483_18.png new file mode 100644 index 0000000000000000000000000000000000000000..bc9ca693a61611c02339ec3134c5a8a145c383f7 Binary files /dev/null and b/concepts/483_18.png differ diff --git a/concepts/483_20.png b/concepts/483_20.png new file mode 100644 index 0000000000000000000000000000000000000000..3bb98ccb6c99849253757da4bc3c73919ce453c4 Binary files /dev/null and b/concepts/483_20.png differ diff --git a/concepts/483_3.png b/concepts/483_3.png new file mode 100644 index 0000000000000000000000000000000000000000..b8c02ec94128bf7b69692e7af3537d1430e10920 Binary files /dev/null and b/concepts/483_3.png differ diff --git a/concepts/483_6.png b/concepts/483_6.png new file mode 100644 index 0000000000000000000000000000000000000000..ba33497437bcf46e00bd02832a4a64008cd5f7a6 Binary files /dev/null and b/concepts/483_6.png differ diff --git a/concepts/483_9.png b/concepts/483_9.png new file mode 100644 index 0000000000000000000000000000000000000000..2e300e1f3ad844031f1e57757f4101b25ca41ad1 Binary files /dev/null and b/concepts/483_9.png differ diff --git a/concepts/484_0.png b/concepts/484_0.png new file mode 100644 index 0000000000000000000000000000000000000000..ed93ebb86d8ee739204efd5027d7d5ef0d60359c Binary files /dev/null and b/concepts/484_0.png differ diff --git a/concepts/484_1.png b/concepts/484_1.png new file mode 100644 index 0000000000000000000000000000000000000000..2f467e198250519a2a41d95186e4432cd43b8511 Binary files /dev/null and b/concepts/484_1.png differ diff --git a/concepts/484_10.png b/concepts/484_10.png new file mode 100644 index 0000000000000000000000000000000000000000..7d4132ed4aeabea113f3b7d2b71bbc76b22ad268 Binary files /dev/null and b/concepts/484_10.png differ diff --git a/concepts/484_14.png b/concepts/484_14.png new file mode 100644 index 0000000000000000000000000000000000000000..4d895a233be499067edcbc102a072c85fc16a745 Binary files /dev/null and b/concepts/484_14.png differ diff --git a/concepts/484_5.png b/concepts/484_5.png new file mode 100644 index 0000000000000000000000000000000000000000..02a143db918373dd76379cd8d5a4d3a7dd3e13cb Binary files /dev/null and b/concepts/484_5.png differ diff --git a/concepts/484_7.png b/concepts/484_7.png new file mode 100644 index 0000000000000000000000000000000000000000..ca4069e619d799170da692e691a45590f0f808de Binary files /dev/null and b/concepts/484_7.png differ diff --git a/concepts/484_8.png b/concepts/484_8.png new file mode 100644 index 0000000000000000000000000000000000000000..40bfebe746f8430d887708e28db698af38acfc91 Binary files /dev/null and b/concepts/484_8.png differ diff --git a/concepts/484_9.png b/concepts/484_9.png new file mode 100644 index 0000000000000000000000000000000000000000..0a8ea6e589743df7d32f09d27ea067a2f1217e91 Binary files /dev/null and b/concepts/484_9.png differ diff --git a/concepts/485_10.png b/concepts/485_10.png new file mode 100644 index 0000000000000000000000000000000000000000..83f89835f4f717c15cb2fc0878e69638ff8840c4 Binary files /dev/null and b/concepts/485_10.png differ diff --git a/concepts/485_11.png b/concepts/485_11.png new file mode 100644 index 0000000000000000000000000000000000000000..5c7ed9024506169e15edc4f20d0a2ae2b3af9f8f Binary files /dev/null and b/concepts/485_11.png differ diff --git a/concepts/485_14.png b/concepts/485_14.png new file mode 100644 index 0000000000000000000000000000000000000000..73981ae596982d284b273fc04297657e0b201cbc Binary files /dev/null and b/concepts/485_14.png differ diff --git a/concepts/485_19.png b/concepts/485_19.png new file mode 100644 index 0000000000000000000000000000000000000000..0589d30ccc1cd389ba1a54d7c9660c6b6040d8b1 Binary files /dev/null and b/concepts/485_19.png differ diff --git a/concepts/485_20.png b/concepts/485_20.png new file mode 100644 index 0000000000000000000000000000000000000000..6501ce503329e1791bd147154e9fd8db8d4c21df Binary files /dev/null and b/concepts/485_20.png differ diff --git a/concepts/485_4.png b/concepts/485_4.png new file mode 100644 index 0000000000000000000000000000000000000000..c19d215d44c52b93707c0690a88c54fbb7645d98 Binary files /dev/null and b/concepts/485_4.png differ diff --git a/concepts/485_5.png b/concepts/485_5.png new file mode 100644 index 0000000000000000000000000000000000000000..05bb72da681e7d67e9977b16eaa4b4d6827e3e39 Binary files /dev/null and b/concepts/485_5.png differ diff --git a/concepts/485_9.png b/concepts/485_9.png new file mode 100644 index 0000000000000000000000000000000000000000..d68ca10487a394fd020a4f2c38a191f256047039 Binary files /dev/null and b/concepts/485_9.png differ diff --git a/concepts/486_0.png b/concepts/486_0.png new file mode 100644 index 0000000000000000000000000000000000000000..6d2dd8a43dcf53cd4907ae705f11d41f2454d839 Binary files /dev/null and b/concepts/486_0.png differ diff --git a/concepts/486_1.png b/concepts/486_1.png new file mode 100644 index 0000000000000000000000000000000000000000..ddca4e7ca2511016051e0ed3bed0e6146dc70021 Binary files /dev/null and b/concepts/486_1.png differ diff --git a/concepts/486_2.png b/concepts/486_2.png new file mode 100644 index 0000000000000000000000000000000000000000..b2bb18c97f9fc89fc2d318aae143e2fedf402066 Binary files /dev/null and b/concepts/486_2.png differ diff --git a/concepts/486_3.png b/concepts/486_3.png new file mode 100644 index 0000000000000000000000000000000000000000..15865167f085925d93f34c3779be464df703846c Binary files /dev/null and b/concepts/486_3.png differ diff --git a/concepts/486_4.png b/concepts/486_4.png new file mode 100644 index 0000000000000000000000000000000000000000..3be791b056aedb02ecf4f67b5223b1aaecc319dd Binary files /dev/null and b/concepts/486_4.png differ diff --git a/concepts/486_6.png b/concepts/486_6.png new file mode 100644 index 0000000000000000000000000000000000000000..bbbb93ab77b059991c66d24017062a36d9c02a88 Binary files /dev/null and b/concepts/486_6.png differ diff --git a/concepts/486_7.png b/concepts/486_7.png new file mode 100644 index 0000000000000000000000000000000000000000..2f3f05bbb9ec4704f83a80cec2b2953fa064fc9f Binary files /dev/null and b/concepts/486_7.png differ diff --git a/concepts/486_8.png b/concepts/486_8.png new file mode 100644 index 0000000000000000000000000000000000000000..7ddd8f0d4e578b6607d4686db027aace913b75a0 Binary files /dev/null and b/concepts/486_8.png differ diff --git a/concepts/488_0.png b/concepts/488_0.png new file mode 100644 index 0000000000000000000000000000000000000000..00874a01750da7c73044e308781b5a787725c799 Binary files /dev/null and b/concepts/488_0.png differ diff --git a/concepts/488_11.png b/concepts/488_11.png new file mode 100644 index 0000000000000000000000000000000000000000..18972fcd7f4d1d0f534c2da0342237a072124ca8 Binary files /dev/null and b/concepts/488_11.png differ diff --git a/concepts/488_13.png b/concepts/488_13.png new file mode 100644 index 0000000000000000000000000000000000000000..26ff5c6882154a03adcd0923a15042d4d69ff400 Binary files /dev/null and b/concepts/488_13.png differ diff --git a/concepts/488_14.png b/concepts/488_14.png new file mode 100644 index 0000000000000000000000000000000000000000..97f4acbff12a7bd954b01f898fa989b081bee9bc Binary files /dev/null and b/concepts/488_14.png differ diff --git a/concepts/488_3.png b/concepts/488_3.png new file mode 100644 index 0000000000000000000000000000000000000000..1cc84eb206f67407c43ed410172e60cc6c806e9e Binary files /dev/null and b/concepts/488_3.png differ diff --git a/concepts/488_5.png b/concepts/488_5.png new file mode 100644 index 0000000000000000000000000000000000000000..f26824cd3447876d0d1d8f0707cbf671c5e1772e Binary files /dev/null and b/concepts/488_5.png differ diff --git a/concepts/488_6.png b/concepts/488_6.png new file mode 100644 index 0000000000000000000000000000000000000000..b45f316e71cfe6977aba9e29ccce599afb36e6a3 Binary files /dev/null and b/concepts/488_6.png differ diff --git a/concepts/488_7.png b/concepts/488_7.png new file mode 100644 index 0000000000000000000000000000000000000000..1c43b8fb86c11b96d03eb473828ad1dfa4cc4edc Binary files /dev/null and b/concepts/488_7.png differ diff --git a/concepts/489_0.png b/concepts/489_0.png new file mode 100644 index 0000000000000000000000000000000000000000..56f29351c148a43dc3b14cbaff16c0498ea649d6 Binary files /dev/null and b/concepts/489_0.png differ diff --git a/concepts/489_1.png b/concepts/489_1.png new file mode 100644 index 0000000000000000000000000000000000000000..27d437fd0cc5e551fc0ed9e4198ad38f0c3e34e1 Binary files /dev/null and b/concepts/489_1.png differ diff --git a/concepts/489_2.png b/concepts/489_2.png new file mode 100644 index 0000000000000000000000000000000000000000..a5300c0f7043fa8bd85d3adb225906861aa48c41 Binary files /dev/null and b/concepts/489_2.png differ diff --git a/concepts/489_3.png b/concepts/489_3.png new file mode 100644 index 0000000000000000000000000000000000000000..44610a1b2db332d0d6e87b28c59c6c32683751c0 Binary files /dev/null and b/concepts/489_3.png differ diff --git a/concepts/489_5.png b/concepts/489_5.png new file mode 100644 index 0000000000000000000000000000000000000000..b5b78d94ab3b8348b543ae2b3f69b2da5b8fb43b Binary files /dev/null and b/concepts/489_5.png differ diff --git a/concepts/489_6.png b/concepts/489_6.png new file mode 100644 index 0000000000000000000000000000000000000000..abc762afc97e53f4ca1c475a3d556aad85b150c3 Binary files /dev/null and b/concepts/489_6.png differ diff --git a/concepts/489_7.png b/concepts/489_7.png new file mode 100644 index 0000000000000000000000000000000000000000..c1579ccd0eed6095a59a13471c7a89c2d743fa43 Binary files /dev/null and b/concepts/489_7.png differ diff --git a/concepts/489_8.png b/concepts/489_8.png new file mode 100644 index 0000000000000000000000000000000000000000..d1a0d296ea3d9a9588932b38401ea2baef766a4e Binary files /dev/null and b/concepts/489_8.png differ diff --git a/concepts/48_0.png b/concepts/48_0.png new file mode 100644 index 0000000000000000000000000000000000000000..9623f6a36b77e2a1efd5e32f440fdc5f390493c5 Binary files /dev/null and b/concepts/48_0.png differ diff --git a/concepts/48_1.png b/concepts/48_1.png new file mode 100644 index 0000000000000000000000000000000000000000..63c8533d46a4c390aa3eeeed9f4adab77b8ecadf Binary files /dev/null and b/concepts/48_1.png differ diff --git a/concepts/48_2.png b/concepts/48_2.png new file mode 100644 index 0000000000000000000000000000000000000000..b1316d5220bc42174ac633213fd941d07271acf5 Binary files /dev/null and b/concepts/48_2.png differ diff --git a/concepts/48_3.png b/concepts/48_3.png new file mode 100644 index 0000000000000000000000000000000000000000..35222e57d5b1ecd835674e01e02a32200dcb9cc9 Binary files /dev/null and b/concepts/48_3.png differ diff --git a/concepts/48_4.png b/concepts/48_4.png new file mode 100644 index 0000000000000000000000000000000000000000..3affe7a72341d092bb9f04de6a7faafd05f1c152 Binary files /dev/null and b/concepts/48_4.png differ diff --git a/concepts/48_6.png b/concepts/48_6.png new file mode 100644 index 0000000000000000000000000000000000000000..148d0002db02c56c194966aa6e39538732f1a967 Binary files /dev/null and b/concepts/48_6.png differ diff --git a/concepts/48_7.png b/concepts/48_7.png new file mode 100644 index 0000000000000000000000000000000000000000..b5fd7a39ee75a377d06329db71b4d63bae48d4f1 Binary files /dev/null and b/concepts/48_7.png differ diff --git a/concepts/48_8.png b/concepts/48_8.png new file mode 100644 index 0000000000000000000000000000000000000000..3e6227224c9c3f941f7af148a8a4103ba3a6646d Binary files /dev/null and b/concepts/48_8.png differ diff --git a/concepts/490_0.png b/concepts/490_0.png new file mode 100644 index 0000000000000000000000000000000000000000..bf4b0d39a150ace3e15651a32d07dee759dff4cc Binary files /dev/null and b/concepts/490_0.png differ diff --git a/concepts/490_1.png b/concepts/490_1.png new file mode 100644 index 0000000000000000000000000000000000000000..e0d438461263353aae07194b8277df10d8b79850 Binary files /dev/null and b/concepts/490_1.png differ diff --git a/concepts/490_3.png b/concepts/490_3.png new file mode 100644 index 0000000000000000000000000000000000000000..aaca04f5a3036e2caefe00b7cfa075a129d9540d Binary files /dev/null and b/concepts/490_3.png differ diff --git a/concepts/490_4.png b/concepts/490_4.png new file mode 100644 index 0000000000000000000000000000000000000000..0ab81649bb75bc78d5aab952c1294d217f39527e Binary files /dev/null and b/concepts/490_4.png differ diff --git a/concepts/490_5.png b/concepts/490_5.png new file mode 100644 index 0000000000000000000000000000000000000000..998f153e11d73599feaa6b871b91d6b445ee6319 Binary files /dev/null and b/concepts/490_5.png differ diff --git a/concepts/490_6.png b/concepts/490_6.png new file mode 100644 index 0000000000000000000000000000000000000000..d1531c33e7d85dbe7eb45fede24fe2410f7a2f98 Binary files /dev/null and b/concepts/490_6.png differ diff --git a/concepts/490_7.png b/concepts/490_7.png new file mode 100644 index 0000000000000000000000000000000000000000..e8526e38a5725b19f942174050ab994defe4bd95 Binary files /dev/null and b/concepts/490_7.png differ diff --git a/concepts/490_8.png b/concepts/490_8.png new file mode 100644 index 0000000000000000000000000000000000000000..5fe9932468c5673ccffc715ccab643b1528db0d0 Binary files /dev/null and b/concepts/490_8.png differ diff --git a/concepts/491_0.png b/concepts/491_0.png new file mode 100644 index 0000000000000000000000000000000000000000..46679d085a969f8f93761ad25da578db06ee97ef Binary files /dev/null and b/concepts/491_0.png differ diff --git a/concepts/491_1.png b/concepts/491_1.png new file mode 100644 index 0000000000000000000000000000000000000000..3c6b7a236a3036d30c63ef9403b419f92fb1cb49 Binary files /dev/null and b/concepts/491_1.png differ diff --git a/concepts/491_14.png b/concepts/491_14.png new file mode 100644 index 0000000000000000000000000000000000000000..5e366f8a08f149898954cc6a2a1d8c0dd2de64ee Binary files /dev/null and b/concepts/491_14.png differ diff --git a/concepts/491_15.png b/concepts/491_15.png new file mode 100644 index 0000000000000000000000000000000000000000..3b1c4a1d1493ddfc30c8df40b559100887c31f25 Binary files /dev/null and b/concepts/491_15.png differ diff --git a/concepts/491_2.png b/concepts/491_2.png new file mode 100644 index 0000000000000000000000000000000000000000..5d0f8ebde6da947e6880e1b4b188e83b40a86714 Binary files /dev/null and b/concepts/491_2.png differ diff --git a/concepts/491_3.png b/concepts/491_3.png new file mode 100644 index 0000000000000000000000000000000000000000..20b35148c2bfdb2509e023345d91bb5e3c4f313c Binary files /dev/null and b/concepts/491_3.png differ diff --git a/concepts/491_7.png b/concepts/491_7.png new file mode 100644 index 0000000000000000000000000000000000000000..e39cfdd95f112cfa236664f2a4c5eb0286a9a9be Binary files /dev/null and b/concepts/491_7.png differ diff --git a/concepts/491_8.png b/concepts/491_8.png new file mode 100644 index 0000000000000000000000000000000000000000..eb425c2c6b0be0cc61ba4cc6f993f6609a455bec Binary files /dev/null and b/concepts/491_8.png differ diff --git a/concepts/492_0.png b/concepts/492_0.png new file mode 100644 index 0000000000000000000000000000000000000000..59dd37fa15a4041b0d919b7769203ec64663fb53 Binary files /dev/null and b/concepts/492_0.png differ diff --git a/concepts/492_1.png b/concepts/492_1.png new file mode 100644 index 0000000000000000000000000000000000000000..31054b50c46447cf31b9795c8ba8785cead0b2ea Binary files /dev/null and b/concepts/492_1.png differ diff --git a/concepts/492_2.png b/concepts/492_2.png new file mode 100644 index 0000000000000000000000000000000000000000..a8ad529e36227144fef83cc1dedbb3fd046ca89d Binary files /dev/null and b/concepts/492_2.png differ diff --git a/concepts/492_3.png b/concepts/492_3.png new file mode 100644 index 0000000000000000000000000000000000000000..5c4775106cd86b451edbdfe8e9f2e20989250492 Binary files /dev/null and b/concepts/492_3.png differ diff --git a/concepts/492_5.png b/concepts/492_5.png new file mode 100644 index 0000000000000000000000000000000000000000..44c033666f75857cf42dc353203a1b79ac03e6c2 Binary files /dev/null and b/concepts/492_5.png differ diff --git a/concepts/492_6.png b/concepts/492_6.png new file mode 100644 index 0000000000000000000000000000000000000000..9608ab156aba15973a18ccc129228f6d2b35f4a5 Binary files /dev/null and b/concepts/492_6.png differ diff --git a/concepts/492_7.png b/concepts/492_7.png new file mode 100644 index 0000000000000000000000000000000000000000..2e93c2e8c89520be42b5c478f5f7555d4d4fc1be Binary files /dev/null and b/concepts/492_7.png differ diff --git a/concepts/492_8.png b/concepts/492_8.png new file mode 100644 index 0000000000000000000000000000000000000000..1871105f511a153a4e6736568bb3275310c7dfd6 Binary files /dev/null and b/concepts/492_8.png differ diff --git a/concepts/493_0.png b/concepts/493_0.png new file mode 100644 index 0000000000000000000000000000000000000000..eeb0b1a1002b9a651cb289239b64c4b5ae356373 Binary files /dev/null and b/concepts/493_0.png differ diff --git a/concepts/493_1.png b/concepts/493_1.png new file mode 100644 index 0000000000000000000000000000000000000000..76aeef0143072cc00fe2074a4d2c77157656bca6 Binary files /dev/null and b/concepts/493_1.png differ diff --git a/concepts/493_2.png b/concepts/493_2.png new file mode 100644 index 0000000000000000000000000000000000000000..5823cb9d457d439e04b9f32705ff3053ca528ddb Binary files /dev/null and b/concepts/493_2.png differ diff --git a/concepts/493_3.png b/concepts/493_3.png new file mode 100644 index 0000000000000000000000000000000000000000..1ba593a58f09efda016afbe4d09bd15b34a37b89 Binary files /dev/null and b/concepts/493_3.png differ diff --git a/concepts/493_4.png b/concepts/493_4.png new file mode 100644 index 0000000000000000000000000000000000000000..226d2241d46535023ca81aa0248ec11aa70ff816 Binary files /dev/null and b/concepts/493_4.png differ diff --git a/concepts/493_5.png b/concepts/493_5.png new file mode 100644 index 0000000000000000000000000000000000000000..bf4fb9b4c4040f536826a4cba96156d06ff47e82 Binary files /dev/null and b/concepts/493_5.png differ diff --git a/concepts/493_7.png b/concepts/493_7.png new file mode 100644 index 0000000000000000000000000000000000000000..1bded68981160dc780b383ad06b4f3762c16af4b Binary files /dev/null and b/concepts/493_7.png differ diff --git a/concepts/493_8.png b/concepts/493_8.png new file mode 100644 index 0000000000000000000000000000000000000000..07e47f3915b53cff5ccca60dd3390278a16f3da4 Binary files /dev/null and b/concepts/493_8.png differ diff --git a/concepts/494_12.png b/concepts/494_12.png new file mode 100644 index 0000000000000000000000000000000000000000..7da7bd6f2a0b28e2020016f313c3565f541f79a1 Binary files /dev/null and b/concepts/494_12.png differ diff --git a/concepts/494_13.png b/concepts/494_13.png new file mode 100644 index 0000000000000000000000000000000000000000..e0f52280312b7525567e412329a1cf5bbc1a2ad5 Binary files /dev/null and b/concepts/494_13.png differ diff --git a/concepts/494_3.png b/concepts/494_3.png new file mode 100644 index 0000000000000000000000000000000000000000..1377d8c75a49d2fde0552bc79f606537d45feb93 Binary files /dev/null and b/concepts/494_3.png differ diff --git a/concepts/494_4.png b/concepts/494_4.png new file mode 100644 index 0000000000000000000000000000000000000000..2ae4b858dca2c5be574cbbd02dde01caa134f961 Binary files /dev/null and b/concepts/494_4.png differ diff --git a/concepts/494_5.png b/concepts/494_5.png new file mode 100644 index 0000000000000000000000000000000000000000..f8d26dbae77c0487f32ef1cf2f233c078bcb7ea5 Binary files /dev/null and b/concepts/494_5.png differ diff --git a/concepts/494_6.png b/concepts/494_6.png new file mode 100644 index 0000000000000000000000000000000000000000..a70de2d4a51bfb34d83c93e31771a4c8711cea59 Binary files /dev/null and b/concepts/494_6.png differ diff --git a/concepts/494_8.png b/concepts/494_8.png new file mode 100644 index 0000000000000000000000000000000000000000..400f74eba3743fb0dd13a6efc4d81b706b6b365a Binary files /dev/null and b/concepts/494_8.png differ diff --git a/concepts/494_9.png b/concepts/494_9.png new file mode 100644 index 0000000000000000000000000000000000000000..75171a35e8b58b1751c7a029af19aa5886c953dc Binary files /dev/null and b/concepts/494_9.png differ diff --git a/concepts/495_1.png b/concepts/495_1.png new file mode 100644 index 0000000000000000000000000000000000000000..c1d5011f90d2c5a10742aeb74ffe232c05509815 Binary files /dev/null and b/concepts/495_1.png differ diff --git a/concepts/495_10.png b/concepts/495_10.png new file mode 100644 index 0000000000000000000000000000000000000000..072eac323009106cd3fbf7104d544cd8973e5686 Binary files /dev/null and b/concepts/495_10.png differ diff --git a/concepts/495_11.png b/concepts/495_11.png new file mode 100644 index 0000000000000000000000000000000000000000..d5f7c4fa828416a2adf8f2785ebc0ba3e91f50e7 Binary files /dev/null and b/concepts/495_11.png differ diff --git a/concepts/495_12.png b/concepts/495_12.png new file mode 100644 index 0000000000000000000000000000000000000000..888a11bf333e5b8ee3afb758ff708205e016dbdb Binary files /dev/null and b/concepts/495_12.png differ diff --git a/concepts/495_13.png b/concepts/495_13.png new file mode 100644 index 0000000000000000000000000000000000000000..1cd225e6655b6b20acb6f76dccca74e7297aad9d Binary files /dev/null and b/concepts/495_13.png differ diff --git a/concepts/495_2.png b/concepts/495_2.png new file mode 100644 index 0000000000000000000000000000000000000000..56a172f9d1129e61e4dd509d61ff415e7987e2fe Binary files /dev/null and b/concepts/495_2.png differ diff --git a/concepts/495_7.png b/concepts/495_7.png new file mode 100644 index 0000000000000000000000000000000000000000..5f38e7f04d4974189ee94b62546d67804e861250 Binary files /dev/null and b/concepts/495_7.png differ diff --git a/concepts/495_9.png b/concepts/495_9.png new file mode 100644 index 0000000000000000000000000000000000000000..08dd04e4be444694615aebb83a29770d0b435c23 Binary files /dev/null and b/concepts/495_9.png differ diff --git a/concepts/496_1.png b/concepts/496_1.png new file mode 100644 index 0000000000000000000000000000000000000000..4ea603228675fbaeaa03598d1bbd7b0cadc7cbda Binary files /dev/null and b/concepts/496_1.png differ diff --git a/concepts/496_2.png b/concepts/496_2.png new file mode 100644 index 0000000000000000000000000000000000000000..e5c8401db4618b07627d15562dc133ce65626a4f Binary files /dev/null and b/concepts/496_2.png differ diff --git a/concepts/496_3.png b/concepts/496_3.png new file mode 100644 index 0000000000000000000000000000000000000000..ae62b09eba13e49efa7c5f399c7517bbd50c6122 Binary files /dev/null and b/concepts/496_3.png differ diff --git a/concepts/496_4.png b/concepts/496_4.png new file mode 100644 index 0000000000000000000000000000000000000000..2414ddca236b92fed1cebbd221f7f05c28a4abb7 Binary files /dev/null and b/concepts/496_4.png differ diff --git a/concepts/496_5.png b/concepts/496_5.png new file mode 100644 index 0000000000000000000000000000000000000000..e71eaf571a5570c8c58e06ae36e28c4fdafdee06 Binary files /dev/null and b/concepts/496_5.png differ diff --git a/concepts/496_6.png b/concepts/496_6.png new file mode 100644 index 0000000000000000000000000000000000000000..138d7c33e94c0f19a9635e858a891a1103112cbc Binary files /dev/null and b/concepts/496_6.png differ diff --git a/concepts/496_7.png b/concepts/496_7.png new file mode 100644 index 0000000000000000000000000000000000000000..f0dee726881a420e23caee344fdbb83e73509ff9 Binary files /dev/null and b/concepts/496_7.png differ diff --git a/concepts/496_8.png b/concepts/496_8.png new file mode 100644 index 0000000000000000000000000000000000000000..861dd467fc5c4f26ea2d98fc81b4eeafe53670e6 Binary files /dev/null and b/concepts/496_8.png differ diff --git a/concepts/497_0.png b/concepts/497_0.png new file mode 100644 index 0000000000000000000000000000000000000000..50c94380c84573f2dff26e2bfcd3dae76790f7a9 Binary files /dev/null and b/concepts/497_0.png differ diff --git a/concepts/497_1.png b/concepts/497_1.png new file mode 100644 index 0000000000000000000000000000000000000000..8b8188c473ee7683eca904901a3c08ab164224e8 Binary files /dev/null and b/concepts/497_1.png differ diff --git a/concepts/497_2.png b/concepts/497_2.png new file mode 100644 index 0000000000000000000000000000000000000000..bb3786eba482135c523010ef7a39833ff74c0541 Binary files /dev/null and b/concepts/497_2.png differ diff --git a/concepts/497_3.png b/concepts/497_3.png new file mode 100644 index 0000000000000000000000000000000000000000..a364dc2e25eb36badc2045a2907353af62053621 Binary files /dev/null and b/concepts/497_3.png differ diff --git a/concepts/497_4.png b/concepts/497_4.png new file mode 100644 index 0000000000000000000000000000000000000000..b1ffb1ae196578886275eea751f8ce3210b94177 Binary files /dev/null and b/concepts/497_4.png differ diff --git a/concepts/497_5.png b/concepts/497_5.png new file mode 100644 index 0000000000000000000000000000000000000000..6a7d77caa6005ce147638f6994dbc242c320b906 Binary files /dev/null and b/concepts/497_5.png differ diff --git a/concepts/497_6.png b/concepts/497_6.png new file mode 100644 index 0000000000000000000000000000000000000000..da4f9bff61536ef55c99f660d22d124ddc91248a Binary files /dev/null and b/concepts/497_6.png differ diff --git a/concepts/497_7.png b/concepts/497_7.png new file mode 100644 index 0000000000000000000000000000000000000000..f7c83642e6faae760efc05654afea1f87605662a Binary files /dev/null and b/concepts/497_7.png differ diff --git a/concepts/498_0.png b/concepts/498_0.png new file mode 100644 index 0000000000000000000000000000000000000000..bf7f4e7272dc35d1546c5f93cd736479ed9157e7 Binary files /dev/null and b/concepts/498_0.png differ diff --git a/concepts/498_10.png b/concepts/498_10.png new file mode 100644 index 0000000000000000000000000000000000000000..5e24d80371e21bdf0c2c56a52c413e0effe8ec85 Binary files /dev/null and b/concepts/498_10.png differ diff --git a/concepts/498_14.png b/concepts/498_14.png new file mode 100644 index 0000000000000000000000000000000000000000..9c5ccd7bff2b831bb970475cf6fdce8d126ed1fa Binary files /dev/null and b/concepts/498_14.png differ diff --git a/concepts/498_18.png b/concepts/498_18.png new file mode 100644 index 0000000000000000000000000000000000000000..b29241512a4c27be86e50fbd7b556b5a5b8e2054 Binary files /dev/null and b/concepts/498_18.png differ diff --git a/concepts/498_2.png b/concepts/498_2.png new file mode 100644 index 0000000000000000000000000000000000000000..d3eaadc777c04c77618908ab69d958d9bf1709e7 Binary files /dev/null and b/concepts/498_2.png differ diff --git a/concepts/498_6.png b/concepts/498_6.png new file mode 100644 index 0000000000000000000000000000000000000000..2901ba5a5ce4cfa3607e7614b19f8b7ebb039704 Binary files /dev/null and b/concepts/498_6.png differ diff --git a/concepts/498_7.png b/concepts/498_7.png new file mode 100644 index 0000000000000000000000000000000000000000..00a771c23be5bf1b59d2715f671965468089f4e4 Binary files /dev/null and b/concepts/498_7.png differ diff --git a/concepts/498_8.png b/concepts/498_8.png new file mode 100644 index 0000000000000000000000000000000000000000..e46658a37c609648b9adcdf57996d2fa4a89ef51 Binary files /dev/null and b/concepts/498_8.png differ diff --git a/concepts/499_0.png b/concepts/499_0.png new file mode 100644 index 0000000000000000000000000000000000000000..66b9ac3a88e05922928506dcb34c7b10d47b4484 Binary files /dev/null and b/concepts/499_0.png differ diff --git a/concepts/499_1.png b/concepts/499_1.png new file mode 100644 index 0000000000000000000000000000000000000000..51c62f5fc635470d3c9084a07d0db9a1d8513bd1 Binary files /dev/null and b/concepts/499_1.png differ diff --git a/concepts/499_2.png b/concepts/499_2.png new file mode 100644 index 0000000000000000000000000000000000000000..caf90a08fd36824128bd4baeaeccac64508558a1 Binary files /dev/null and b/concepts/499_2.png differ diff --git a/concepts/499_3.png b/concepts/499_3.png new file mode 100644 index 0000000000000000000000000000000000000000..92a19bc94da9057a5cdb3013e254d3baa697575a Binary files /dev/null and b/concepts/499_3.png differ diff --git a/concepts/499_4.png b/concepts/499_4.png new file mode 100644 index 0000000000000000000000000000000000000000..4b724b393a74245cec20a687b4475de1db824c78 Binary files /dev/null and b/concepts/499_4.png differ diff --git a/concepts/499_6.png b/concepts/499_6.png new file mode 100644 index 0000000000000000000000000000000000000000..2fefce6fbc6811bfc44099896359a00ac15d4831 Binary files /dev/null and b/concepts/499_6.png differ diff --git a/concepts/499_7.png b/concepts/499_7.png new file mode 100644 index 0000000000000000000000000000000000000000..bd1579a7b48f7fd368024b1bcd2d98a6bbc76216 Binary files /dev/null and b/concepts/499_7.png differ diff --git a/concepts/499_8.png b/concepts/499_8.png new file mode 100644 index 0000000000000000000000000000000000000000..3ca0ca59798a0fff547bf727cd1daf43dabb9614 Binary files /dev/null and b/concepts/499_8.png differ diff --git a/concepts/49_13.png b/concepts/49_13.png new file mode 100644 index 0000000000000000000000000000000000000000..2efa1eef8f30a1e6241c356a5325ed8e5dec5731 Binary files /dev/null and b/concepts/49_13.png differ diff --git a/concepts/49_14.png b/concepts/49_14.png new file mode 100644 index 0000000000000000000000000000000000000000..6606175c433c246b8bbb36501018985b5af933b4 Binary files /dev/null and b/concepts/49_14.png differ diff --git a/concepts/49_15.png b/concepts/49_15.png new file mode 100644 index 0000000000000000000000000000000000000000..ec36369efc822b52640921e10c4285434a7dc804 Binary files /dev/null and b/concepts/49_15.png differ diff --git a/concepts/49_2.png b/concepts/49_2.png new file mode 100644 index 0000000000000000000000000000000000000000..082268ce9ed73a6db01f68b058c0a5205b12a0e4 Binary files /dev/null and b/concepts/49_2.png differ diff --git a/concepts/49_5.png b/concepts/49_5.png new file mode 100644 index 0000000000000000000000000000000000000000..5e1366e783524cc0da828b9a8ec18a2c8f7ccf0f Binary files /dev/null and b/concepts/49_5.png differ diff --git a/concepts/49_7.png b/concepts/49_7.png new file mode 100644 index 0000000000000000000000000000000000000000..d40c8901bbd8030cba96ea9947ec2ea33b1fd160 Binary files /dev/null and b/concepts/49_7.png differ diff --git a/concepts/49_8.png b/concepts/49_8.png new file mode 100644 index 0000000000000000000000000000000000000000..173261d062de910afd0536e74b78dc2324a97d96 Binary files /dev/null and b/concepts/49_8.png differ diff --git a/concepts/49_9.png b/concepts/49_9.png new file mode 100644 index 0000000000000000000000000000000000000000..74e8ab1ef809340fc9cdd01487cf25121e1b6777 Binary files /dev/null and b/concepts/49_9.png differ diff --git a/concepts/4_0.png b/concepts/4_0.png new file mode 100644 index 0000000000000000000000000000000000000000..008314f35bba8bcbac037740a3c9faf9b874211e Binary files /dev/null and b/concepts/4_0.png differ diff --git a/concepts/4_13.png b/concepts/4_13.png new file mode 100644 index 0000000000000000000000000000000000000000..9ede677cb31dd0030814525b48c3dd3a36f97fd7 Binary files /dev/null and b/concepts/4_13.png differ diff --git a/concepts/4_17.png b/concepts/4_17.png new file mode 100644 index 0000000000000000000000000000000000000000..5ac059eadc6a0326cbbf0328898d32e0a49ebe25 Binary files /dev/null and b/concepts/4_17.png differ diff --git a/concepts/4_4.png b/concepts/4_4.png new file mode 100644 index 0000000000000000000000000000000000000000..637eb3d29fde064201eebdfe737b0e2941e49151 Binary files /dev/null and b/concepts/4_4.png differ diff --git a/concepts/4_5.png b/concepts/4_5.png new file mode 100644 index 0000000000000000000000000000000000000000..9e73723ad8b21b9070e922e164bb932cf56be78c Binary files /dev/null and b/concepts/4_5.png differ diff --git a/concepts/4_6.png b/concepts/4_6.png new file mode 100644 index 0000000000000000000000000000000000000000..3659e1aae033174d14516f61016e17962ac9aa90 Binary files /dev/null and b/concepts/4_6.png differ diff --git a/concepts/4_7.png b/concepts/4_7.png new file mode 100644 index 0000000000000000000000000000000000000000..8435563288dfe6fb6badd45cdffe9cf59ee2c9ad Binary files /dev/null and b/concepts/4_7.png differ diff --git a/concepts/4_8.png b/concepts/4_8.png new file mode 100644 index 0000000000000000000000000000000000000000..a20614d1aa6a3b6a744fe301cd43fb3d5fc49c69 Binary files /dev/null and b/concepts/4_8.png differ diff --git a/concepts/500_0.png b/concepts/500_0.png new file mode 100644 index 0000000000000000000000000000000000000000..a34c3b7496ed52aa1d9a829adbc93419b6b0a0bd Binary files /dev/null and b/concepts/500_0.png differ diff --git a/concepts/500_1.png b/concepts/500_1.png new file mode 100644 index 0000000000000000000000000000000000000000..9bd0affb947012d2c2a0fb2e858c2fc4820b3c2e Binary files /dev/null and b/concepts/500_1.png differ diff --git a/concepts/500_2.png b/concepts/500_2.png new file mode 100644 index 0000000000000000000000000000000000000000..9758c94f35aae15cfdcc95c19e7200908c4f5b83 Binary files /dev/null and b/concepts/500_2.png differ diff --git a/concepts/500_3.png b/concepts/500_3.png new file mode 100644 index 0000000000000000000000000000000000000000..7e4e66102e2252eb77a60194a230fac760548468 Binary files /dev/null and b/concepts/500_3.png differ diff --git a/concepts/500_4.png b/concepts/500_4.png new file mode 100644 index 0000000000000000000000000000000000000000..0f9728ab346667742cfc87821f8f0273a36bdb6c Binary files /dev/null and b/concepts/500_4.png differ diff --git a/concepts/500_5.png b/concepts/500_5.png new file mode 100644 index 0000000000000000000000000000000000000000..86909cfb51818f2a952bc4f61c566a5e97de1ecf Binary files /dev/null and b/concepts/500_5.png differ diff --git a/concepts/500_7.png b/concepts/500_7.png new file mode 100644 index 0000000000000000000000000000000000000000..b1ef127f98cdc825283e423e1f0b712c3e22ea4c Binary files /dev/null and b/concepts/500_7.png differ diff --git a/concepts/500_8.png b/concepts/500_8.png new file mode 100644 index 0000000000000000000000000000000000000000..51a4fe5b24f55f646e1cc1e1970deafdd79d333b Binary files /dev/null and b/concepts/500_8.png differ diff --git a/concepts/501_0.png b/concepts/501_0.png new file mode 100644 index 0000000000000000000000000000000000000000..7d6ef36be792bd2ad273270671fcf961e27fc5be Binary files /dev/null and b/concepts/501_0.png differ diff --git a/concepts/502_0.png b/concepts/502_0.png new file mode 100644 index 0000000000000000000000000000000000000000..57052081bf5cf61ebbe46aba8524f0aafe11f579 Binary files /dev/null and b/concepts/502_0.png differ diff --git a/concepts/502_1.png b/concepts/502_1.png new file mode 100644 index 0000000000000000000000000000000000000000..d3bda2f04dea0e2153f0e987b35d2e8ba9927e93 Binary files /dev/null and b/concepts/502_1.png differ diff --git a/concepts/502_11.png b/concepts/502_11.png new file mode 100644 index 0000000000000000000000000000000000000000..26ae3d0410b315bc01ec0344b813c03eaf0a4657 Binary files /dev/null and b/concepts/502_11.png differ diff --git a/concepts/502_2.png b/concepts/502_2.png new file mode 100644 index 0000000000000000000000000000000000000000..51de7595719c24274e212674820964e154855c36 Binary files /dev/null and b/concepts/502_2.png differ diff --git a/concepts/502_3.png b/concepts/502_3.png new file mode 100644 index 0000000000000000000000000000000000000000..ea8f27676a159a56934f13f989a5d2e1a3658992 Binary files /dev/null and b/concepts/502_3.png differ diff --git a/concepts/502_5.png b/concepts/502_5.png new file mode 100644 index 0000000000000000000000000000000000000000..edf0f91a1cc7ef6a07ad4359c609a928e7e48f1e Binary files /dev/null and b/concepts/502_5.png differ diff --git a/concepts/502_6.png b/concepts/502_6.png new file mode 100644 index 0000000000000000000000000000000000000000..18a3f5b16871dff183660afef6ee428c1e372a5e Binary files /dev/null and b/concepts/502_6.png differ diff --git a/concepts/502_9.png b/concepts/502_9.png new file mode 100644 index 0000000000000000000000000000000000000000..bb475ec2c1588b372d84579f35fe394728ccc6ea Binary files /dev/null and b/concepts/502_9.png differ diff --git a/concepts/503_0.png b/concepts/503_0.png new file mode 100644 index 0000000000000000000000000000000000000000..971f79413235675910bb681bfb049b93a3fb6d82 Binary files /dev/null and b/concepts/503_0.png differ diff --git a/concepts/503_1.png b/concepts/503_1.png new file mode 100644 index 0000000000000000000000000000000000000000..a6b01e58523f5eca320f561bb288f3dfa7a8192b Binary files /dev/null and b/concepts/503_1.png differ diff --git a/concepts/503_2.png b/concepts/503_2.png new file mode 100644 index 0000000000000000000000000000000000000000..4ffc2cd67edb63e77762469aa9914ecf468a0926 Binary files /dev/null and b/concepts/503_2.png differ diff --git a/concepts/503_3.png b/concepts/503_3.png new file mode 100644 index 0000000000000000000000000000000000000000..998aeea06029e784032177c59edf73efe4359006 Binary files /dev/null and b/concepts/503_3.png differ diff --git a/concepts/503_4.png b/concepts/503_4.png new file mode 100644 index 0000000000000000000000000000000000000000..c45e9a4677abcc07245d784b0e70e5dbd5177d3c Binary files /dev/null and b/concepts/503_4.png differ diff --git a/concepts/503_6.png b/concepts/503_6.png new file mode 100644 index 0000000000000000000000000000000000000000..f5541285edaf3e357c8f71d18860731fca06b6f7 Binary files /dev/null and b/concepts/503_6.png differ diff --git a/concepts/503_7.png b/concepts/503_7.png new file mode 100644 index 0000000000000000000000000000000000000000..4bdd73220b30766d11a49b4a8703947377e68947 Binary files /dev/null and b/concepts/503_7.png differ diff --git a/concepts/503_8.png b/concepts/503_8.png new file mode 100644 index 0000000000000000000000000000000000000000..1ed7b69d4554f05886b5747bb996d932292bb7a7 Binary files /dev/null and b/concepts/503_8.png differ diff --git a/concepts/504_0.png b/concepts/504_0.png new file mode 100644 index 0000000000000000000000000000000000000000..d82d2d63df1f4592449cf820c64db0f1336725d9 Binary files /dev/null and b/concepts/504_0.png differ diff --git a/concepts/504_1.png b/concepts/504_1.png new file mode 100644 index 0000000000000000000000000000000000000000..30713ccc6a03e1fb51ae2bab2dd08b33b50dc5a7 Binary files /dev/null and b/concepts/504_1.png differ diff --git a/concepts/504_10.png b/concepts/504_10.png new file mode 100644 index 0000000000000000000000000000000000000000..d9bdaf33ed37791b984bf0658a4aaec0052a208c Binary files /dev/null and b/concepts/504_10.png differ diff --git a/concepts/504_11.png b/concepts/504_11.png new file mode 100644 index 0000000000000000000000000000000000000000..e0cd05152e59c7845a63a75e53f483552558f587 Binary files /dev/null and b/concepts/504_11.png differ diff --git a/concepts/504_14.png b/concepts/504_14.png new file mode 100644 index 0000000000000000000000000000000000000000..4d8650c68bd9de191a336a234b8bb5b068e04acc Binary files /dev/null and b/concepts/504_14.png differ diff --git a/concepts/504_5.png b/concepts/504_5.png new file mode 100644 index 0000000000000000000000000000000000000000..baa7f0eb0c8bd5cbdee4d9fdb6a0f798a3e189d8 Binary files /dev/null and b/concepts/504_5.png differ diff --git a/concepts/504_6.png b/concepts/504_6.png new file mode 100644 index 0000000000000000000000000000000000000000..ade24527b7e9f348b7a80fddc49a7fe0b2e25bba Binary files /dev/null and b/concepts/504_6.png differ diff --git a/concepts/504_8.png b/concepts/504_8.png new file mode 100644 index 0000000000000000000000000000000000000000..9379d22ba0932f28dccb00f5bf611e7a1f92d750 Binary files /dev/null and b/concepts/504_8.png differ diff --git a/concepts/505_0.png b/concepts/505_0.png new file mode 100644 index 0000000000000000000000000000000000000000..cd86651945872e251d8b852841d5e5d8dff4b0eb Binary files /dev/null and b/concepts/505_0.png differ diff --git a/concepts/505_10.png b/concepts/505_10.png new file mode 100644 index 0000000000000000000000000000000000000000..b3e23fccb76883c3b0e62b53e1e7e725b2b9fb94 Binary files /dev/null and b/concepts/505_10.png differ diff --git a/concepts/505_17.png b/concepts/505_17.png new file mode 100644 index 0000000000000000000000000000000000000000..637613c0ff538b5e6f59a03b8a3a10c3459991db Binary files /dev/null and b/concepts/505_17.png differ diff --git a/concepts/505_18.png b/concepts/505_18.png new file mode 100644 index 0000000000000000000000000000000000000000..ca16d7b3aa1a468af01fdb7c41f3379abf8bec2b Binary files /dev/null and b/concepts/505_18.png differ diff --git a/concepts/505_2.png b/concepts/505_2.png new file mode 100644 index 0000000000000000000000000000000000000000..30cf10cbab68c569414c3f2d67c09cb23d3876b1 Binary files /dev/null and b/concepts/505_2.png differ diff --git a/concepts/505_22.png b/concepts/505_22.png new file mode 100644 index 0000000000000000000000000000000000000000..d8d280d13242698161e8f27675a095d262e8c8c0 Binary files /dev/null and b/concepts/505_22.png differ diff --git a/concepts/505_5.png b/concepts/505_5.png new file mode 100644 index 0000000000000000000000000000000000000000..d37b3392a0cf2f3aa58dbfea166de7e0d666e94a Binary files /dev/null and b/concepts/505_5.png differ diff --git a/concepts/505_6.png b/concepts/505_6.png new file mode 100644 index 0000000000000000000000000000000000000000..aa7bd23a448b3912840329d9de393e84284c8a12 Binary files /dev/null and b/concepts/505_6.png differ diff --git a/concepts/506_0.png b/concepts/506_0.png new file mode 100644 index 0000000000000000000000000000000000000000..bc44845341870559405425bedbebeada6e7ab2c5 Binary files /dev/null and b/concepts/506_0.png differ diff --git a/concepts/506_1.png b/concepts/506_1.png new file mode 100644 index 0000000000000000000000000000000000000000..8a7234874221807385a3eeb7e4302b9d2f7934e3 Binary files /dev/null and b/concepts/506_1.png differ diff --git a/concepts/506_10.png b/concepts/506_10.png new file mode 100644 index 0000000000000000000000000000000000000000..92f84923e49e47bd3446b48eaf285ae5f4cb95ef Binary files /dev/null and b/concepts/506_10.png differ diff --git a/concepts/506_11.png b/concepts/506_11.png new file mode 100644 index 0000000000000000000000000000000000000000..87e6137e0274efcbf52f21d6bbc2fd20673a06ea Binary files /dev/null and b/concepts/506_11.png differ diff --git a/concepts/506_14.png b/concepts/506_14.png new file mode 100644 index 0000000000000000000000000000000000000000..2ea597e80a09f0b6701502cea438a93c55bcc2f6 Binary files /dev/null and b/concepts/506_14.png differ diff --git a/concepts/506_17.png b/concepts/506_17.png new file mode 100644 index 0000000000000000000000000000000000000000..f267babd064ec536499e1e2508a0714efa4bb5f9 Binary files /dev/null and b/concepts/506_17.png differ diff --git a/concepts/506_2.png b/concepts/506_2.png new file mode 100644 index 0000000000000000000000000000000000000000..35294955fdcdd0160e12381cf95eee158da00189 Binary files /dev/null and b/concepts/506_2.png differ diff --git a/concepts/506_7.png b/concepts/506_7.png new file mode 100644 index 0000000000000000000000000000000000000000..e763382e9b374ef1c3a2edb94630762138dc1951 Binary files /dev/null and b/concepts/506_7.png differ diff --git a/concepts/507_1.png b/concepts/507_1.png new file mode 100644 index 0000000000000000000000000000000000000000..12ae05eb481ed7bb707a7383939a7c79988de467 Binary files /dev/null and b/concepts/507_1.png differ diff --git a/concepts/507_11.png b/concepts/507_11.png new file mode 100644 index 0000000000000000000000000000000000000000..d8af1c73c78a2a42130e081295af8a411885b219 Binary files /dev/null and b/concepts/507_11.png differ diff --git a/concepts/507_12.png b/concepts/507_12.png new file mode 100644 index 0000000000000000000000000000000000000000..5cdb90a32a983d26529bb025e7b007faba44b477 Binary files /dev/null and b/concepts/507_12.png differ diff --git a/concepts/507_13.png b/concepts/507_13.png new file mode 100644 index 0000000000000000000000000000000000000000..45172ec27d172b1ea26828905ff43c5f6fb17d0c Binary files /dev/null and b/concepts/507_13.png differ diff --git a/concepts/507_16.png b/concepts/507_16.png new file mode 100644 index 0000000000000000000000000000000000000000..f929d7640fb0a02f5cb7f5ee8ca11364038670ed Binary files /dev/null and b/concepts/507_16.png differ diff --git a/concepts/507_17.png b/concepts/507_17.png new file mode 100644 index 0000000000000000000000000000000000000000..eb154aed20ce3ea2a21370d31ebcd93f4a479e51 Binary files /dev/null and b/concepts/507_17.png differ diff --git a/concepts/507_3.png b/concepts/507_3.png new file mode 100644 index 0000000000000000000000000000000000000000..98942dbd0989083597387821a34f5669b83a2539 Binary files /dev/null and b/concepts/507_3.png differ diff --git a/concepts/507_5.png b/concepts/507_5.png new file mode 100644 index 0000000000000000000000000000000000000000..2526cc8a4491ffef3eeff5a38ca87d158428698b Binary files /dev/null and b/concepts/507_5.png differ diff --git a/concepts/508_0.png b/concepts/508_0.png new file mode 100644 index 0000000000000000000000000000000000000000..79558de2c44fdf12d76c8467e98fdfa61c1f5bdf Binary files /dev/null and b/concepts/508_0.png differ diff --git a/concepts/508_1.png b/concepts/508_1.png new file mode 100644 index 0000000000000000000000000000000000000000..8129731ef6963610e2e1b48ab2882c5e11ea2078 Binary files /dev/null and b/concepts/508_1.png differ diff --git a/concepts/508_10.png b/concepts/508_10.png new file mode 100644 index 0000000000000000000000000000000000000000..7fb65727db3fd5a0d0ad9a20a4937e38ca344ee6 Binary files /dev/null and b/concepts/508_10.png differ diff --git a/concepts/508_2.png b/concepts/508_2.png new file mode 100644 index 0000000000000000000000000000000000000000..965cefaa787939943346c9dd0fff84b3ab0e0336 Binary files /dev/null and b/concepts/508_2.png differ diff --git a/concepts/508_3.png b/concepts/508_3.png new file mode 100644 index 0000000000000000000000000000000000000000..756bbb3b5dc7fe1f4a21c732f68575ebe385909f Binary files /dev/null and b/concepts/508_3.png differ diff --git a/concepts/508_4.png b/concepts/508_4.png new file mode 100644 index 0000000000000000000000000000000000000000..ab663574ed1a0b21c5771b78a69b3b6ef19f52da Binary files /dev/null and b/concepts/508_4.png differ diff --git a/concepts/508_5.png b/concepts/508_5.png new file mode 100644 index 0000000000000000000000000000000000000000..dcd9ffd98b00de72d58368ef56ea164142cd7ea3 Binary files /dev/null and b/concepts/508_5.png differ diff --git a/concepts/508_6.png b/concepts/508_6.png new file mode 100644 index 0000000000000000000000000000000000000000..50987aa8ab49bdc8a1b6339dcfb0866d912d5705 Binary files /dev/null and b/concepts/508_6.png differ diff --git a/concepts/509_1.png b/concepts/509_1.png new file mode 100644 index 0000000000000000000000000000000000000000..fa4fc966fd7ece1d5c6fafc856581b04d32d5dac Binary files /dev/null and b/concepts/509_1.png differ diff --git a/concepts/509_10.png b/concepts/509_10.png new file mode 100644 index 0000000000000000000000000000000000000000..a651cde561abb028d0e4810bf7ed6012132ddba0 Binary files /dev/null and b/concepts/509_10.png differ diff --git a/concepts/509_11.png b/concepts/509_11.png new file mode 100644 index 0000000000000000000000000000000000000000..1598e6a632b9ecccf85ef73e4cad7df007a3bacc Binary files /dev/null and b/concepts/509_11.png differ diff --git a/concepts/509_3.png b/concepts/509_3.png new file mode 100644 index 0000000000000000000000000000000000000000..19a26de007ea46482640f4e8745922e447580798 Binary files /dev/null and b/concepts/509_3.png differ diff --git a/concepts/509_6.png b/concepts/509_6.png new file mode 100644 index 0000000000000000000000000000000000000000..a8dc0ecb4d71e3b94034109d53867f7a6293ca09 Binary files /dev/null and b/concepts/509_6.png differ diff --git a/concepts/509_7.png b/concepts/509_7.png new file mode 100644 index 0000000000000000000000000000000000000000..8156bc2001848118223cf1e0a32eb263deb0134b Binary files /dev/null and b/concepts/509_7.png differ diff --git a/concepts/509_8.png b/concepts/509_8.png new file mode 100644 index 0000000000000000000000000000000000000000..1271e6ca9495c3e5376c23f09149a6bb91c9e8dd Binary files /dev/null and b/concepts/509_8.png differ diff --git a/concepts/509_9.png b/concepts/509_9.png new file mode 100644 index 0000000000000000000000000000000000000000..5c7204d32509b16958f23a2d7c3a9a44e8f24cc6 Binary files /dev/null and b/concepts/509_9.png differ diff --git a/concepts/50_0.png b/concepts/50_0.png new file mode 100644 index 0000000000000000000000000000000000000000..c6a664622597f23d9331317a273fa864d4b8cb64 Binary files /dev/null and b/concepts/50_0.png differ diff --git a/concepts/50_1.png b/concepts/50_1.png new file mode 100644 index 0000000000000000000000000000000000000000..2d997fa6990c24b0b77f6deaa628d570e4d55ca5 Binary files /dev/null and b/concepts/50_1.png differ diff --git a/concepts/50_2.png b/concepts/50_2.png new file mode 100644 index 0000000000000000000000000000000000000000..d416f9306932393a14750e36f33d0e2188355037 Binary files /dev/null and b/concepts/50_2.png differ diff --git a/concepts/50_3.png b/concepts/50_3.png new file mode 100644 index 0000000000000000000000000000000000000000..3e2dc7eda7839c0e34555bb978fb7d0847be2888 Binary files /dev/null and b/concepts/50_3.png differ diff --git a/concepts/50_5.png b/concepts/50_5.png new file mode 100644 index 0000000000000000000000000000000000000000..be83b5e0ef9875e46ed159fcba922309488f1cfa Binary files /dev/null and b/concepts/50_5.png differ diff --git a/concepts/50_7.png b/concepts/50_7.png new file mode 100644 index 0000000000000000000000000000000000000000..d5949e4e7c0d35a1f4b13237fbdb55e62f59253f Binary files /dev/null and b/concepts/50_7.png differ diff --git a/concepts/50_8.png b/concepts/50_8.png new file mode 100644 index 0000000000000000000000000000000000000000..c987cc803f0cb1b1265025862d0ee7d9fa377ee3 Binary files /dev/null and b/concepts/50_8.png differ diff --git a/concepts/50_9.png b/concepts/50_9.png new file mode 100644 index 0000000000000000000000000000000000000000..afb212ec1a4949bdc9d05929aa0f76cf49fbd8b1 Binary files /dev/null and b/concepts/50_9.png differ diff --git a/concepts/510_0.png b/concepts/510_0.png new file mode 100644 index 0000000000000000000000000000000000000000..77a375754a8c3363459005c8dfa503169fbb8e7d Binary files /dev/null and b/concepts/510_0.png differ diff --git a/concepts/510_1.png b/concepts/510_1.png new file mode 100644 index 0000000000000000000000000000000000000000..aca78e0e518badb5d83df72ee4d59d012591d98d Binary files /dev/null and b/concepts/510_1.png differ diff --git a/concepts/510_2.png b/concepts/510_2.png new file mode 100644 index 0000000000000000000000000000000000000000..d24eab9f4771d6d0f0bcf97c572e999d5138a1cc Binary files /dev/null and b/concepts/510_2.png differ diff --git a/concepts/510_3.png b/concepts/510_3.png new file mode 100644 index 0000000000000000000000000000000000000000..7b0776616854f5693aa21bee6c450714caa94165 Binary files /dev/null and b/concepts/510_3.png differ diff --git a/concepts/510_4.png b/concepts/510_4.png new file mode 100644 index 0000000000000000000000000000000000000000..fa6c6df963cdb4d9524ed781b980ecee8dab8983 Binary files /dev/null and b/concepts/510_4.png differ diff --git a/concepts/510_7.png b/concepts/510_7.png new file mode 100644 index 0000000000000000000000000000000000000000..092a34da1c5526f1612cac1db34b084b9e7ed3b5 Binary files /dev/null and b/concepts/510_7.png differ diff --git a/concepts/510_8.png b/concepts/510_8.png new file mode 100644 index 0000000000000000000000000000000000000000..7f6ce5ab40880598c445a11609411c727205605d Binary files /dev/null and b/concepts/510_8.png differ diff --git a/concepts/510_9.png b/concepts/510_9.png new file mode 100644 index 0000000000000000000000000000000000000000..deae2024abbc8c9dc6a7c1678990035660a0e624 Binary files /dev/null and b/concepts/510_9.png differ diff --git a/concepts/511_0.png b/concepts/511_0.png new file mode 100644 index 0000000000000000000000000000000000000000..e5810bdca5daa8e16673da7ffdfc13afba34046f Binary files /dev/null and b/concepts/511_0.png differ diff --git a/concepts/511_1.png b/concepts/511_1.png new file mode 100644 index 0000000000000000000000000000000000000000..ca09aa11a97dafa1b4e31ba1b6e19fd083ebb5f3 Binary files /dev/null and b/concepts/511_1.png differ diff --git a/concepts/511_2.png b/concepts/511_2.png new file mode 100644 index 0000000000000000000000000000000000000000..a88d8cb034f63ed713883bf44f92ccc7ab4c868b Binary files /dev/null and b/concepts/511_2.png differ diff --git a/concepts/511_3.png b/concepts/511_3.png new file mode 100644 index 0000000000000000000000000000000000000000..3b7cf81d778d8da9869deada77b7001df97b39d8 Binary files /dev/null and b/concepts/511_3.png differ diff --git a/concepts/511_5.png b/concepts/511_5.png new file mode 100644 index 0000000000000000000000000000000000000000..c97c52f5885037cad47e449f875f4ebdc03e3a64 Binary files /dev/null and b/concepts/511_5.png differ diff --git a/concepts/511_6.png b/concepts/511_6.png new file mode 100644 index 0000000000000000000000000000000000000000..303fa9471de9c6ad22e08124dd4e5332d56f0f9d Binary files /dev/null and b/concepts/511_6.png differ diff --git a/concepts/511_7.png b/concepts/511_7.png new file mode 100644 index 0000000000000000000000000000000000000000..c76cb93e7c01417697f1a9142a253ba502cd76f7 Binary files /dev/null and b/concepts/511_7.png differ diff --git a/concepts/511_8.png b/concepts/511_8.png new file mode 100644 index 0000000000000000000000000000000000000000..16cd6f72d0028bb28d433a3dec6dba626edaa58d Binary files /dev/null and b/concepts/511_8.png differ diff --git a/concepts/51_0.png b/concepts/51_0.png new file mode 100644 index 0000000000000000000000000000000000000000..2a577393d2607886b5bc3534887fb4b1b51ab489 Binary files /dev/null and b/concepts/51_0.png differ diff --git a/concepts/51_10.png b/concepts/51_10.png new file mode 100644 index 0000000000000000000000000000000000000000..3095990f6b82af21c8845f5497de145c0e8a071c Binary files /dev/null and b/concepts/51_10.png differ diff --git a/concepts/51_12.png b/concepts/51_12.png new file mode 100644 index 0000000000000000000000000000000000000000..6bc2a4fef25fece364b48ca3382fdefd2abcbb34 Binary files /dev/null and b/concepts/51_12.png differ diff --git a/concepts/51_16.png b/concepts/51_16.png new file mode 100644 index 0000000000000000000000000000000000000000..7745011c1404ddf4bb0aee136c4b6c320e39da8b Binary files /dev/null and b/concepts/51_16.png differ diff --git a/concepts/51_22.png b/concepts/51_22.png new file mode 100644 index 0000000000000000000000000000000000000000..eb1333e8ead5df7a88834cb6c7547486c1fbfef9 Binary files /dev/null and b/concepts/51_22.png differ diff --git a/concepts/51_8.png b/concepts/51_8.png new file mode 100644 index 0000000000000000000000000000000000000000..e9903c958c50b4ebe3e1c0205aad6886e0cea6cc Binary files /dev/null and b/concepts/51_8.png differ diff --git a/concepts/52_0.png b/concepts/52_0.png new file mode 100644 index 0000000000000000000000000000000000000000..356e0c45e3138206a7940ef1b3f60ef734bbd62b Binary files /dev/null and b/concepts/52_0.png differ diff --git a/concepts/52_1.png b/concepts/52_1.png new file mode 100644 index 0000000000000000000000000000000000000000..d9c42fb3998fdae013a5fd9eb57c00e7f7fda8b2 Binary files /dev/null and b/concepts/52_1.png differ diff --git a/concepts/52_2.png b/concepts/52_2.png new file mode 100644 index 0000000000000000000000000000000000000000..570dcb4789963db01d38b35b9bf0cb4acd9e6e8a Binary files /dev/null and b/concepts/52_2.png differ diff --git a/concepts/52_3.png b/concepts/52_3.png new file mode 100644 index 0000000000000000000000000000000000000000..52ffeca7b99fe2c6a0d2918c057fab39efe3b249 Binary files /dev/null and b/concepts/52_3.png differ diff --git a/concepts/52_4.png b/concepts/52_4.png new file mode 100644 index 0000000000000000000000000000000000000000..56a3d5a1d1317225902d629ef14452295725c012 Binary files /dev/null and b/concepts/52_4.png differ diff --git a/concepts/52_6.png b/concepts/52_6.png new file mode 100644 index 0000000000000000000000000000000000000000..c7857b8c99bc97d21a0903d297e70e5d9bb483c4 Binary files /dev/null and b/concepts/52_6.png differ diff --git a/concepts/52_8.png b/concepts/52_8.png new file mode 100644 index 0000000000000000000000000000000000000000..21b4251c8683e1cff3632a2d0a1e0e8ec05b3967 Binary files /dev/null and b/concepts/52_8.png differ diff --git a/concepts/52_9.png b/concepts/52_9.png new file mode 100644 index 0000000000000000000000000000000000000000..795165479eaee6978df9ed3be58ce2069ce325b9 Binary files /dev/null and b/concepts/52_9.png differ diff --git a/concepts/53_0.png b/concepts/53_0.png new file mode 100644 index 0000000000000000000000000000000000000000..61d75975b8996f8bd59ac2ceed68c1f9eeecf472 Binary files /dev/null and b/concepts/53_0.png differ diff --git a/concepts/53_1.png b/concepts/53_1.png new file mode 100644 index 0000000000000000000000000000000000000000..db1c0caa60571a215d55a95240ef39b057811f27 Binary files /dev/null and b/concepts/53_1.png differ diff --git a/concepts/53_2.png b/concepts/53_2.png new file mode 100644 index 0000000000000000000000000000000000000000..2ccebd7c7c15ef205db7fa34259b142ca0ce3843 Binary files /dev/null and b/concepts/53_2.png differ diff --git a/concepts/53_3.png b/concepts/53_3.png new file mode 100644 index 0000000000000000000000000000000000000000..f2c34d2534c551c21c7750f87de98453f78071d0 Binary files /dev/null and b/concepts/53_3.png differ diff --git a/concepts/53_4.png b/concepts/53_4.png new file mode 100644 index 0000000000000000000000000000000000000000..7b4176289241a10c18b967861fd61399b11134c3 Binary files /dev/null and b/concepts/53_4.png differ diff --git a/concepts/53_5.png b/concepts/53_5.png new file mode 100644 index 0000000000000000000000000000000000000000..bc40c1596486e1e74ce566d18ece654d2ed073cb Binary files /dev/null and b/concepts/53_5.png differ diff --git a/concepts/53_6.png b/concepts/53_6.png new file mode 100644 index 0000000000000000000000000000000000000000..0c7045bddb2d412872563a4fc57e9be8334ed561 Binary files /dev/null and b/concepts/53_6.png differ diff --git a/concepts/53_8.png b/concepts/53_8.png new file mode 100644 index 0000000000000000000000000000000000000000..6ae738877696232c95aa8dc2a798958851417d4e Binary files /dev/null and b/concepts/53_8.png differ diff --git a/concepts/54_12.png b/concepts/54_12.png new file mode 100644 index 0000000000000000000000000000000000000000..38f523080519d1197c737b90f027957658fe12a8 Binary files /dev/null and b/concepts/54_12.png differ diff --git a/concepts/54_14.png b/concepts/54_14.png new file mode 100644 index 0000000000000000000000000000000000000000..801a2ad2eef2ac874e9d3a8c92b59fbc1fe380f6 Binary files /dev/null and b/concepts/54_14.png differ diff --git a/concepts/54_2.png b/concepts/54_2.png new file mode 100644 index 0000000000000000000000000000000000000000..4405622c1f58fbefe670132e3c97bdac9215f08d Binary files /dev/null and b/concepts/54_2.png differ diff --git a/concepts/54_20.png b/concepts/54_20.png new file mode 100644 index 0000000000000000000000000000000000000000..49b398a08e8468b63293360bb097f0ae8da144a0 Binary files /dev/null and b/concepts/54_20.png differ diff --git a/concepts/54_22.png b/concepts/54_22.png new file mode 100644 index 0000000000000000000000000000000000000000..3b4d1f79401912fad2fdc85db9d77ff0f082886f Binary files /dev/null and b/concepts/54_22.png differ diff --git a/concepts/54_5.png b/concepts/54_5.png new file mode 100644 index 0000000000000000000000000000000000000000..ac026c18e117d3ab998a859497854db6cf826a8f Binary files /dev/null and b/concepts/54_5.png differ diff --git a/concepts/54_7.png b/concepts/54_7.png new file mode 100644 index 0000000000000000000000000000000000000000..c232077abb0ba9f17127a9e5d533917e3f41beee Binary files /dev/null and b/concepts/54_7.png differ diff --git a/concepts/54_9.png b/concepts/54_9.png new file mode 100644 index 0000000000000000000000000000000000000000..a2cab47e7defbdf17998b0aaa609b3fe3620b9d2 Binary files /dev/null and b/concepts/54_9.png differ diff --git a/concepts/55_0.png b/concepts/55_0.png new file mode 100644 index 0000000000000000000000000000000000000000..03c23793aefe1514f8b6930e2f78b63d1d6948a0 Binary files /dev/null and b/concepts/55_0.png differ diff --git a/concepts/55_1.png b/concepts/55_1.png new file mode 100644 index 0000000000000000000000000000000000000000..75d916b6abaacab260c2253d0b31a6f34beb4c7d Binary files /dev/null and b/concepts/55_1.png differ diff --git a/concepts/55_2.png b/concepts/55_2.png new file mode 100644 index 0000000000000000000000000000000000000000..7f867265a098ac10fe29144f81f57495fffdd143 Binary files /dev/null and b/concepts/55_2.png differ diff --git a/concepts/55_3.png b/concepts/55_3.png new file mode 100644 index 0000000000000000000000000000000000000000..fca1e3513c593e4c21ed3443149108a33784fd4f Binary files /dev/null and b/concepts/55_3.png differ diff --git a/concepts/55_5.png b/concepts/55_5.png new file mode 100644 index 0000000000000000000000000000000000000000..be64def54ee5b674d74c02fd6bbc70c9248fdf07 Binary files /dev/null and b/concepts/55_5.png differ diff --git a/concepts/55_6.png b/concepts/55_6.png new file mode 100644 index 0000000000000000000000000000000000000000..3fbfaac2821edd8aae30f7062089cda6cfe7c2bb Binary files /dev/null and b/concepts/55_6.png differ diff --git a/concepts/55_7.png b/concepts/55_7.png new file mode 100644 index 0000000000000000000000000000000000000000..7bb36968a03d66b50e72270029bd675eacbf5e20 Binary files /dev/null and b/concepts/55_7.png differ diff --git a/concepts/55_8.png b/concepts/55_8.png new file mode 100644 index 0000000000000000000000000000000000000000..47928288c10d439c721567524a4c4f1366243a7b Binary files /dev/null and b/concepts/55_8.png differ diff --git a/concepts/56_0.png b/concepts/56_0.png new file mode 100644 index 0000000000000000000000000000000000000000..bfc982e587ab996ddacfd71b566fa9c61c63a045 Binary files /dev/null and b/concepts/56_0.png differ diff --git a/concepts/56_15.png b/concepts/56_15.png new file mode 100644 index 0000000000000000000000000000000000000000..60786d315a690cb0456177fa72f444141b00099a Binary files /dev/null and b/concepts/56_15.png differ diff --git a/concepts/56_16.png b/concepts/56_16.png new file mode 100644 index 0000000000000000000000000000000000000000..eb2da237f77e035b8498520fbce6b1fbd7819395 Binary files /dev/null and b/concepts/56_16.png differ diff --git a/concepts/56_2.png b/concepts/56_2.png new file mode 100644 index 0000000000000000000000000000000000000000..95a3d78ab8696266ac1f666bc7b2955ba5c71d07 Binary files /dev/null and b/concepts/56_2.png differ diff --git a/concepts/56_4.png b/concepts/56_4.png new file mode 100644 index 0000000000000000000000000000000000000000..77091029f7e003b78d5a640ed76937219ba3108d Binary files /dev/null and b/concepts/56_4.png differ diff --git a/concepts/56_6.png b/concepts/56_6.png new file mode 100644 index 0000000000000000000000000000000000000000..b64764f01cd57c51932a7acf33e9c6c26e14d778 Binary files /dev/null and b/concepts/56_6.png differ diff --git a/concepts/56_7.png b/concepts/56_7.png new file mode 100644 index 0000000000000000000000000000000000000000..ec8f802808a39be7f7e0f4d72b8ff16e0863c02c Binary files /dev/null and b/concepts/56_7.png differ diff --git a/concepts/56_8.png b/concepts/56_8.png new file mode 100644 index 0000000000000000000000000000000000000000..bc5b9a041d63a541e6e4fcad4a66c14433d191dc Binary files /dev/null and b/concepts/56_8.png differ diff --git a/concepts/58_0.png b/concepts/58_0.png new file mode 100644 index 0000000000000000000000000000000000000000..341587876c7fdae3b92358aaaa604dd13f468ae5 Binary files /dev/null and b/concepts/58_0.png differ diff --git a/concepts/58_19.png b/concepts/58_19.png new file mode 100644 index 0000000000000000000000000000000000000000..d81e886580787b8e034ee9f2bf2419cd085f70ed Binary files /dev/null and b/concepts/58_19.png differ diff --git a/concepts/58_2.png b/concepts/58_2.png new file mode 100644 index 0000000000000000000000000000000000000000..dd1a3b7ca89bfc73d6e85ba113ac349b342efa94 Binary files /dev/null and b/concepts/58_2.png differ diff --git a/concepts/58_6.png b/concepts/58_6.png new file mode 100644 index 0000000000000000000000000000000000000000..6b06d31bc7fe15a5b9562b7468ab46fedc5ce115 Binary files /dev/null and b/concepts/58_6.png differ diff --git a/concepts/58_7.png b/concepts/58_7.png new file mode 100644 index 0000000000000000000000000000000000000000..592e9a1d0e00c34df474a8e452aca379ab560f06 Binary files /dev/null and b/concepts/58_7.png differ diff --git a/concepts/58_8.png b/concepts/58_8.png new file mode 100644 index 0000000000000000000000000000000000000000..70002ab856c828e8808aa8f194e5646d75f56735 Binary files /dev/null and b/concepts/58_8.png differ diff --git a/concepts/58_9.png b/concepts/58_9.png new file mode 100644 index 0000000000000000000000000000000000000000..716ece25f787a36e2073709699af5b61a9a435dc Binary files /dev/null and b/concepts/58_9.png differ diff --git a/concepts/59_0.png b/concepts/59_0.png new file mode 100644 index 0000000000000000000000000000000000000000..194ac90edc6dc4751842ec8281338f663085635a Binary files /dev/null and b/concepts/59_0.png differ diff --git a/concepts/59_1.png b/concepts/59_1.png new file mode 100644 index 0000000000000000000000000000000000000000..cf38a186beb8450333e39215c5b345cb146ae2cb Binary files /dev/null and b/concepts/59_1.png differ diff --git a/concepts/59_2.png b/concepts/59_2.png new file mode 100644 index 0000000000000000000000000000000000000000..1cd6798510499def9e2345ef3a433a8e7d99ab0b Binary files /dev/null and b/concepts/59_2.png differ diff --git a/concepts/59_3.png b/concepts/59_3.png new file mode 100644 index 0000000000000000000000000000000000000000..74ae1a843767b43b83d4f715ee0d7f2a94fe657b Binary files /dev/null and b/concepts/59_3.png differ diff --git a/concepts/59_4.png b/concepts/59_4.png new file mode 100644 index 0000000000000000000000000000000000000000..4d53c1f6692f4cbf4d556be4b400c4ea0d7e112d Binary files /dev/null and b/concepts/59_4.png differ diff --git a/concepts/59_6.png b/concepts/59_6.png new file mode 100644 index 0000000000000000000000000000000000000000..d32b5273a12a9001afa67275b7e40eafada838b5 Binary files /dev/null and b/concepts/59_6.png differ diff --git a/concepts/59_7.png b/concepts/59_7.png new file mode 100644 index 0000000000000000000000000000000000000000..8d0083feafba5d7d22121cd3517007bd89b6b4f3 Binary files /dev/null and b/concepts/59_7.png differ diff --git a/concepts/59_9.png b/concepts/59_9.png new file mode 100644 index 0000000000000000000000000000000000000000..0d31d7b640b6addfc1a8265d16e3fe8cc1cdb189 Binary files /dev/null and b/concepts/59_9.png differ diff --git a/concepts/5_0.png b/concepts/5_0.png new file mode 100644 index 0000000000000000000000000000000000000000..2839792aa34434be2d3333af47582dd34fe6c47e Binary files /dev/null and b/concepts/5_0.png differ diff --git a/concepts/5_1.png b/concepts/5_1.png new file mode 100644 index 0000000000000000000000000000000000000000..b825f3de27deff0eb45c1a32748a35701b445593 Binary files /dev/null and b/concepts/5_1.png differ diff --git a/concepts/5_10.png b/concepts/5_10.png new file mode 100644 index 0000000000000000000000000000000000000000..1a10f485ffddea54e1d388c8179af6c49766abb8 Binary files /dev/null and b/concepts/5_10.png differ diff --git a/concepts/5_11.png b/concepts/5_11.png new file mode 100644 index 0000000000000000000000000000000000000000..82338286741410a748b68caa9f312ad837f38549 Binary files /dev/null and b/concepts/5_11.png differ diff --git a/concepts/5_13.png b/concepts/5_13.png new file mode 100644 index 0000000000000000000000000000000000000000..0663460f9555bfb51e5c8cbf492704888d900cef Binary files /dev/null and b/concepts/5_13.png differ diff --git a/concepts/5_15.png b/concepts/5_15.png new file mode 100644 index 0000000000000000000000000000000000000000..65a264b683d38b7fdf5e41b22596b02d6e529e9b Binary files /dev/null and b/concepts/5_15.png differ diff --git a/concepts/5_16.png b/concepts/5_16.png new file mode 100644 index 0000000000000000000000000000000000000000..9d572bbdf4400badd9dd86c96cb1196e31b4825e Binary files /dev/null and b/concepts/5_16.png differ diff --git a/concepts/5_2.png b/concepts/5_2.png new file mode 100644 index 0000000000000000000000000000000000000000..57c650c11ab209d3f65228e9fe6ccb6d26415912 Binary files /dev/null and b/concepts/5_2.png differ diff --git a/concepts/60_0.png b/concepts/60_0.png new file mode 100644 index 0000000000000000000000000000000000000000..7e809d2c13cb743beb0a2de750e0bd46dcbd1316 Binary files /dev/null and b/concepts/60_0.png differ diff --git a/concepts/60_1.png b/concepts/60_1.png new file mode 100644 index 0000000000000000000000000000000000000000..95a8c1cf1d4357562fe17b244160b7ce94c95590 Binary files /dev/null and b/concepts/60_1.png differ diff --git a/concepts/60_2.png b/concepts/60_2.png new file mode 100644 index 0000000000000000000000000000000000000000..3433e687c04c42adba54f8b7ac25ec2265ac6a67 Binary files /dev/null and b/concepts/60_2.png differ diff --git a/concepts/60_3.png b/concepts/60_3.png new file mode 100644 index 0000000000000000000000000000000000000000..c46477848d5543458ff0ab2c514cc07ec5e1c83b Binary files /dev/null and b/concepts/60_3.png differ diff --git a/concepts/60_4.png b/concepts/60_4.png new file mode 100644 index 0000000000000000000000000000000000000000..5ff61ccb30f3de53a4ae462a39dd180a2f7a00d3 Binary files /dev/null and b/concepts/60_4.png differ diff --git a/concepts/60_5.png b/concepts/60_5.png new file mode 100644 index 0000000000000000000000000000000000000000..215fe635f6948491fc8ed221323e231da0a53f62 Binary files /dev/null and b/concepts/60_5.png differ diff --git a/concepts/60_6.png b/concepts/60_6.png new file mode 100644 index 0000000000000000000000000000000000000000..d864f927d883b1836263cb57fbf43802653fd4f5 Binary files /dev/null and b/concepts/60_6.png differ diff --git a/concepts/60_8.png b/concepts/60_8.png new file mode 100644 index 0000000000000000000000000000000000000000..7d6b7faba83634ee6d0dcae4503f4dbe425bfced Binary files /dev/null and b/concepts/60_8.png differ diff --git a/concepts/61_0.png b/concepts/61_0.png new file mode 100644 index 0000000000000000000000000000000000000000..f6770368bacd48081f52195c8e0aaeda112aa24b Binary files /dev/null and b/concepts/61_0.png differ diff --git a/concepts/61_1.png b/concepts/61_1.png new file mode 100644 index 0000000000000000000000000000000000000000..c975eafcd3fba5ade66101275387f252f84930f9 Binary files /dev/null and b/concepts/61_1.png differ diff --git a/concepts/61_3.png b/concepts/61_3.png new file mode 100644 index 0000000000000000000000000000000000000000..feefea67dab02a0e5e1fb21a0a458f0fd24f77d9 Binary files /dev/null and b/concepts/61_3.png differ diff --git a/concepts/61_4.png b/concepts/61_4.png new file mode 100644 index 0000000000000000000000000000000000000000..bf58c4789327a32089229561b6bff464d631f1a0 Binary files /dev/null and b/concepts/61_4.png differ diff --git a/concepts/61_6.png b/concepts/61_6.png new file mode 100644 index 0000000000000000000000000000000000000000..af5e464603f4ad4082b81b8aabc8d630c7862435 Binary files /dev/null and b/concepts/61_6.png differ diff --git a/concepts/61_7.png b/concepts/61_7.png new file mode 100644 index 0000000000000000000000000000000000000000..7a1b0e642002fd421f7a8ca0a9706528186e936d Binary files /dev/null and b/concepts/61_7.png differ diff --git a/concepts/61_8.png b/concepts/61_8.png new file mode 100644 index 0000000000000000000000000000000000000000..c23116a13345d9484ae415cf912ee92cface538b Binary files /dev/null and b/concepts/61_8.png differ diff --git a/concepts/61_9.png b/concepts/61_9.png new file mode 100644 index 0000000000000000000000000000000000000000..39a6783b099256f14a5ec78392b9fa11cda3e142 Binary files /dev/null and b/concepts/61_9.png differ diff --git a/concepts/62_16.png b/concepts/62_16.png new file mode 100644 index 0000000000000000000000000000000000000000..da0224fce795ac0b271cc329a134bd01ea778113 Binary files /dev/null and b/concepts/62_16.png differ diff --git a/concepts/62_20.png b/concepts/62_20.png new file mode 100644 index 0000000000000000000000000000000000000000..a1e7ef623876e544ed25e218cbef2ad1fb2937c3 Binary files /dev/null and b/concepts/62_20.png differ diff --git a/concepts/62_22.png b/concepts/62_22.png new file mode 100644 index 0000000000000000000000000000000000000000..2f470107c27eaa11d062761088f72cfe807f1ab0 Binary files /dev/null and b/concepts/62_22.png differ diff --git a/concepts/63_1.png b/concepts/63_1.png new file mode 100644 index 0000000000000000000000000000000000000000..6ff4d58079af05b4e0e6f42dbc79d93ff3e56d2a Binary files /dev/null and b/concepts/63_1.png differ diff --git a/concepts/63_11.png b/concepts/63_11.png new file mode 100644 index 0000000000000000000000000000000000000000..06eaacd154f765b462268a4493b406a11ac34c20 Binary files /dev/null and b/concepts/63_11.png differ diff --git a/concepts/63_3.png b/concepts/63_3.png new file mode 100644 index 0000000000000000000000000000000000000000..51324abed501cb3607074ced3ba0dd5f57bd7a3b Binary files /dev/null and b/concepts/63_3.png differ diff --git a/concepts/63_4.png b/concepts/63_4.png new file mode 100644 index 0000000000000000000000000000000000000000..06208e884320e1ae169a721e149f8761ac5a3ef9 Binary files /dev/null and b/concepts/63_4.png differ diff --git a/concepts/63_5.png b/concepts/63_5.png new file mode 100644 index 0000000000000000000000000000000000000000..a5c43d7c4406501cd5120eed7e208b63c339f652 Binary files /dev/null and b/concepts/63_5.png differ diff --git a/concepts/63_6.png b/concepts/63_6.png new file mode 100644 index 0000000000000000000000000000000000000000..69e4a3f72e5b66e2d1a3894681cd539f5fe1294f Binary files /dev/null and b/concepts/63_6.png differ diff --git a/concepts/63_7.png b/concepts/63_7.png new file mode 100644 index 0000000000000000000000000000000000000000..04d4637926951568ac87aa9df26a838cf389de6c Binary files /dev/null and b/concepts/63_7.png differ diff --git a/concepts/63_8.png b/concepts/63_8.png new file mode 100644 index 0000000000000000000000000000000000000000..8ebdc7bedbd2215769a5231df5192b097f93a912 Binary files /dev/null and b/concepts/63_8.png differ diff --git a/concepts/64_0.png b/concepts/64_0.png new file mode 100644 index 0000000000000000000000000000000000000000..e8ccf2b2da101913363c47ddb09012aa8846e866 Binary files /dev/null and b/concepts/64_0.png differ diff --git a/concepts/64_1.png b/concepts/64_1.png new file mode 100644 index 0000000000000000000000000000000000000000..580c451455194bc0cb664cb2db9cf5b41c880e6c Binary files /dev/null and b/concepts/64_1.png differ diff --git a/concepts/64_2.png b/concepts/64_2.png new file mode 100644 index 0000000000000000000000000000000000000000..5e41423201d503e268d226f3a748e2a11faf804d Binary files /dev/null and b/concepts/64_2.png differ diff --git a/concepts/64_3.png b/concepts/64_3.png new file mode 100644 index 0000000000000000000000000000000000000000..c5250ecad606e9bc8ed2e1bf36b9a45e9fd5fc22 Binary files /dev/null and b/concepts/64_3.png differ diff --git a/concepts/64_4.png b/concepts/64_4.png new file mode 100644 index 0000000000000000000000000000000000000000..a5942690c866ca46b82c77288d278cc6dba114af Binary files /dev/null and b/concepts/64_4.png differ diff --git a/concepts/64_5.png b/concepts/64_5.png new file mode 100644 index 0000000000000000000000000000000000000000..5efc7987e3f66fc2c218d8c117a2b6a81cb4921c Binary files /dev/null and b/concepts/64_5.png differ diff --git a/concepts/64_6.png b/concepts/64_6.png new file mode 100644 index 0000000000000000000000000000000000000000..bbba5ab96a0db7923d3d474d538c098f6e618035 Binary files /dev/null and b/concepts/64_6.png differ diff --git a/concepts/64_7.png b/concepts/64_7.png new file mode 100644 index 0000000000000000000000000000000000000000..a56afdf5d5f436848a624d643a975dec087330ba Binary files /dev/null and b/concepts/64_7.png differ diff --git a/concepts/65_0.png b/concepts/65_0.png new file mode 100644 index 0000000000000000000000000000000000000000..f25ec90097b1e59546743779382c50915591fd26 Binary files /dev/null and b/concepts/65_0.png differ diff --git a/concepts/65_12.png b/concepts/65_12.png new file mode 100644 index 0000000000000000000000000000000000000000..63b585cb457fa396248b141782de3462c7f2035c Binary files /dev/null and b/concepts/65_12.png differ diff --git a/concepts/65_14.png b/concepts/65_14.png new file mode 100644 index 0000000000000000000000000000000000000000..b7b3f0e01c2f7c8e2dd603adda46bfdf802195a4 Binary files /dev/null and b/concepts/65_14.png differ diff --git a/concepts/65_2.png b/concepts/65_2.png new file mode 100644 index 0000000000000000000000000000000000000000..63da1bb2eb6973a0338db6c0b84c3920cbd324e2 Binary files /dev/null and b/concepts/65_2.png differ diff --git a/concepts/65_4.png b/concepts/65_4.png new file mode 100644 index 0000000000000000000000000000000000000000..7f5cbee79b11a9346312509334ebf92a2f4e04c8 Binary files /dev/null and b/concepts/65_4.png differ diff --git a/concepts/65_5.png b/concepts/65_5.png new file mode 100644 index 0000000000000000000000000000000000000000..52051545820de9368e2aeac7360ce01e05dd3a79 Binary files /dev/null and b/concepts/65_5.png differ diff --git a/concepts/65_9.png b/concepts/65_9.png new file mode 100644 index 0000000000000000000000000000000000000000..73e0d6c5bd72760dd463dfe9677b19d0196b29cd Binary files /dev/null and b/concepts/65_9.png differ diff --git a/concepts/66_0.png b/concepts/66_0.png new file mode 100644 index 0000000000000000000000000000000000000000..c0b2679d5e26280e982024702b8f738ffce4b949 Binary files /dev/null and b/concepts/66_0.png differ diff --git a/concepts/66_11.png b/concepts/66_11.png new file mode 100644 index 0000000000000000000000000000000000000000..2bb57ca44c96b7bede43e40288e5613dad74eb6b Binary files /dev/null and b/concepts/66_11.png differ diff --git a/concepts/66_15.png b/concepts/66_15.png new file mode 100644 index 0000000000000000000000000000000000000000..f261ac0d54e5e6fd005e9bb4e31f9c8ba0ccdca7 Binary files /dev/null and b/concepts/66_15.png differ diff --git a/concepts/66_18.png b/concepts/66_18.png new file mode 100644 index 0000000000000000000000000000000000000000..4eadb7ba3ae65f8a5970f321e0ce201e3a1ed8a3 Binary files /dev/null and b/concepts/66_18.png differ diff --git a/concepts/66_4.png b/concepts/66_4.png new file mode 100644 index 0000000000000000000000000000000000000000..00fad16f624c0d5262442f8dca4e5abd66ae62d6 Binary files /dev/null and b/concepts/66_4.png differ diff --git a/concepts/66_6.png b/concepts/66_6.png new file mode 100644 index 0000000000000000000000000000000000000000..58acebd7a369c1953e4b5c78cfbdda2549653635 Binary files /dev/null and b/concepts/66_6.png differ diff --git a/concepts/66_7.png b/concepts/66_7.png new file mode 100644 index 0000000000000000000000000000000000000000..2237653e21a5a979107c654c5878b524758702b2 Binary files /dev/null and b/concepts/66_7.png differ diff --git a/concepts/66_9.png b/concepts/66_9.png new file mode 100644 index 0000000000000000000000000000000000000000..a13a1c8e04e5855508b999045df6e49a193ac826 Binary files /dev/null and b/concepts/66_9.png differ diff --git a/concepts/67_0.png b/concepts/67_0.png new file mode 100644 index 0000000000000000000000000000000000000000..1a9b2f668c770a89ef061120ddcb241d05610362 Binary files /dev/null and b/concepts/67_0.png differ diff --git a/concepts/67_1.png b/concepts/67_1.png new file mode 100644 index 0000000000000000000000000000000000000000..9a6cf5415e377863de7afb285efd99ebab2cab56 Binary files /dev/null and b/concepts/67_1.png differ diff --git a/concepts/67_2.png b/concepts/67_2.png new file mode 100644 index 0000000000000000000000000000000000000000..bddd63388335895c95e482d691fa28ce9659b308 Binary files /dev/null and b/concepts/67_2.png differ diff --git a/concepts/67_3.png b/concepts/67_3.png new file mode 100644 index 0000000000000000000000000000000000000000..235169fdca66f8d25ed935a1fd1b10702d566325 Binary files /dev/null and b/concepts/67_3.png differ diff --git a/concepts/67_4.png b/concepts/67_4.png new file mode 100644 index 0000000000000000000000000000000000000000..ad18950cdcb2a1e690f7524e56bde20ba5750ebe Binary files /dev/null and b/concepts/67_4.png differ diff --git a/concepts/67_5.png b/concepts/67_5.png new file mode 100644 index 0000000000000000000000000000000000000000..1599e4ac19912a7e3685e244e10b6601687a17c5 Binary files /dev/null and b/concepts/67_5.png differ diff --git a/concepts/67_7.png b/concepts/67_7.png new file mode 100644 index 0000000000000000000000000000000000000000..b78b8417612f93a7db1e4d35850fc0cad9979282 Binary files /dev/null and b/concepts/67_7.png differ diff --git a/concepts/67_9.png b/concepts/67_9.png new file mode 100644 index 0000000000000000000000000000000000000000..a6f50b51e13b0743e11c933edcfdc37f988c7f54 Binary files /dev/null and b/concepts/67_9.png differ diff --git a/concepts/68_0.png b/concepts/68_0.png new file mode 100644 index 0000000000000000000000000000000000000000..2297e77220d15242efc1dadfcb78af3b3f9da7bc Binary files /dev/null and b/concepts/68_0.png differ diff --git a/concepts/68_1.png b/concepts/68_1.png new file mode 100644 index 0000000000000000000000000000000000000000..48f3a6054d9375b87ffe5a430ff65434ee3b9569 Binary files /dev/null and b/concepts/68_1.png differ diff --git a/concepts/68_2.png b/concepts/68_2.png new file mode 100644 index 0000000000000000000000000000000000000000..e1007593383441617ed5da95a9506ac9d9e39a1b Binary files /dev/null and b/concepts/68_2.png differ diff --git a/concepts/68_3.png b/concepts/68_3.png new file mode 100644 index 0000000000000000000000000000000000000000..b58793e9350495b409ec80dea8da4eab5630d8c9 Binary files /dev/null and b/concepts/68_3.png differ diff --git a/concepts/68_4.png b/concepts/68_4.png new file mode 100644 index 0000000000000000000000000000000000000000..4a1280e1fb8cf191ff895a3f15672fb0e702ef82 Binary files /dev/null and b/concepts/68_4.png differ diff --git a/concepts/68_5.png b/concepts/68_5.png new file mode 100644 index 0000000000000000000000000000000000000000..b22a2ffe39ce31516f393552eff1ca6d9cc42610 Binary files /dev/null and b/concepts/68_5.png differ diff --git a/concepts/68_6.png b/concepts/68_6.png new file mode 100644 index 0000000000000000000000000000000000000000..ae8963933689054eecb5476ce3ea3ad2d42d2db3 Binary files /dev/null and b/concepts/68_6.png differ diff --git a/concepts/68_7.png b/concepts/68_7.png new file mode 100644 index 0000000000000000000000000000000000000000..84ec749ade942a07412e75710e58ebb0ac40c19b Binary files /dev/null and b/concepts/68_7.png differ diff --git a/concepts/69_0.png b/concepts/69_0.png new file mode 100644 index 0000000000000000000000000000000000000000..5651bc4fc21faba896ffdac2396540343a853c35 Binary files /dev/null and b/concepts/69_0.png differ diff --git a/concepts/69_1.png b/concepts/69_1.png new file mode 100644 index 0000000000000000000000000000000000000000..e2715bc25a5c708ee038e442f6974a10ec33ee56 Binary files /dev/null and b/concepts/69_1.png differ diff --git a/concepts/69_10.png b/concepts/69_10.png new file mode 100644 index 0000000000000000000000000000000000000000..7b438ab60fb0cfaa35c9e2ef39c27baab6e8066a Binary files /dev/null and b/concepts/69_10.png differ diff --git a/concepts/69_11.png b/concepts/69_11.png new file mode 100644 index 0000000000000000000000000000000000000000..b845c1cf98950b0cf1b56141aad6b7273e261263 Binary files /dev/null and b/concepts/69_11.png differ diff --git a/concepts/69_4.png b/concepts/69_4.png new file mode 100644 index 0000000000000000000000000000000000000000..e5c01f7afd6373c95a1c5a6b311871a22a707aa1 Binary files /dev/null and b/concepts/69_4.png differ diff --git a/concepts/69_6.png b/concepts/69_6.png new file mode 100644 index 0000000000000000000000000000000000000000..2b7b6c99253fb782736c213d079c3edcdd09af27 Binary files /dev/null and b/concepts/69_6.png differ diff --git a/concepts/69_7.png b/concepts/69_7.png new file mode 100644 index 0000000000000000000000000000000000000000..f355fc182b321573ab7ad219f460d98fd4234d96 Binary files /dev/null and b/concepts/69_7.png differ diff --git a/concepts/69_9.png b/concepts/69_9.png new file mode 100644 index 0000000000000000000000000000000000000000..9e25416add04c190773efe3bdfd76391c907ed8c Binary files /dev/null and b/concepts/69_9.png differ diff --git a/concepts/6_0.png b/concepts/6_0.png new file mode 100644 index 0000000000000000000000000000000000000000..0e4c35c724c92dca2640301e01c1b7e166298c99 Binary files /dev/null and b/concepts/6_0.png differ diff --git a/concepts/6_1.png b/concepts/6_1.png new file mode 100644 index 0000000000000000000000000000000000000000..156ea95b04abec7b8f1d6a2eaf71ab3ec433b3fb Binary files /dev/null and b/concepts/6_1.png differ diff --git a/concepts/6_2.png b/concepts/6_2.png new file mode 100644 index 0000000000000000000000000000000000000000..8ae2fa152cc1f9f0f9961a31e32bda15962d4f4f Binary files /dev/null and b/concepts/6_2.png differ diff --git a/concepts/6_3.png b/concepts/6_3.png new file mode 100644 index 0000000000000000000000000000000000000000..0d435f1258d01ee815e9e51b834040b9a8ceedf4 Binary files /dev/null and b/concepts/6_3.png differ diff --git a/concepts/6_4.png b/concepts/6_4.png new file mode 100644 index 0000000000000000000000000000000000000000..a722b096f5f41362e705cb8e563481000875bea1 Binary files /dev/null and b/concepts/6_4.png differ diff --git a/concepts/6_5.png b/concepts/6_5.png new file mode 100644 index 0000000000000000000000000000000000000000..82fc9e9f9ba2e211eb9e562fcc4b019645549e50 Binary files /dev/null and b/concepts/6_5.png differ diff --git a/concepts/6_6.png b/concepts/6_6.png new file mode 100644 index 0000000000000000000000000000000000000000..6266b206ff2e62d33233ec3e3b53fab7e1ceb359 Binary files /dev/null and b/concepts/6_6.png differ diff --git a/concepts/6_7.png b/concepts/6_7.png new file mode 100644 index 0000000000000000000000000000000000000000..6e54274ca708192870b8abbce93d37eaace4055d Binary files /dev/null and b/concepts/6_7.png differ diff --git a/concepts/70_0.png b/concepts/70_0.png new file mode 100644 index 0000000000000000000000000000000000000000..be58717ecd30a240ed5c188ab69cc3339f50fde3 Binary files /dev/null and b/concepts/70_0.png differ diff --git a/concepts/70_1.png b/concepts/70_1.png new file mode 100644 index 0000000000000000000000000000000000000000..84dce79077ebf132cae76d493d7a5db2a3de5136 Binary files /dev/null and b/concepts/70_1.png differ diff --git a/concepts/70_10.png b/concepts/70_10.png new file mode 100644 index 0000000000000000000000000000000000000000..1a8c98099b376be134e295bc7caca3633f4f3e8a Binary files /dev/null and b/concepts/70_10.png differ diff --git a/concepts/70_11.png b/concepts/70_11.png new file mode 100644 index 0000000000000000000000000000000000000000..64443399b9f0e50a4c6a5f64b6735dc18f25de99 Binary files /dev/null and b/concepts/70_11.png differ diff --git a/concepts/70_2.png b/concepts/70_2.png new file mode 100644 index 0000000000000000000000000000000000000000..35329bc7ed89eb02841f0a0873c2b358c08c107b Binary files /dev/null and b/concepts/70_2.png differ diff --git a/concepts/70_3.png b/concepts/70_3.png new file mode 100644 index 0000000000000000000000000000000000000000..0e79e3abec56e9c5dc9bab5f66dbab6fa04f6aae Binary files /dev/null and b/concepts/70_3.png differ diff --git a/concepts/70_4.png b/concepts/70_4.png new file mode 100644 index 0000000000000000000000000000000000000000..95d7bcd5d2e1401dbc42a8f870c5df1d7ec12fa1 Binary files /dev/null and b/concepts/70_4.png differ diff --git a/concepts/70_9.png b/concepts/70_9.png new file mode 100644 index 0000000000000000000000000000000000000000..d9841eceae4bb5c1aa1281bb2da8073f73070206 Binary files /dev/null and b/concepts/70_9.png differ diff --git a/concepts/71_0.png b/concepts/71_0.png new file mode 100644 index 0000000000000000000000000000000000000000..83021d2a33591a40c578ca1a9961726f7ca8e821 Binary files /dev/null and b/concepts/71_0.png differ diff --git a/concepts/71_1.png b/concepts/71_1.png new file mode 100644 index 0000000000000000000000000000000000000000..b2bb334f6ba71232147772459ddc071d8e2350c4 Binary files /dev/null and b/concepts/71_1.png differ diff --git a/concepts/71_2.png b/concepts/71_2.png new file mode 100644 index 0000000000000000000000000000000000000000..ca2fac5431e07198fc3a9f43f529ce88b0183421 Binary files /dev/null and b/concepts/71_2.png differ diff --git a/concepts/71_3.png b/concepts/71_3.png new file mode 100644 index 0000000000000000000000000000000000000000..173f71352f4bf6d8bdc8c8e4f8d1e26e1f2eaf2d Binary files /dev/null and b/concepts/71_3.png differ diff --git a/concepts/71_5.png b/concepts/71_5.png new file mode 100644 index 0000000000000000000000000000000000000000..ae22c250563e96ea6f2417e1f86c7826608a4e7a Binary files /dev/null and b/concepts/71_5.png differ diff --git a/concepts/71_6.png b/concepts/71_6.png new file mode 100644 index 0000000000000000000000000000000000000000..d0d8d8cad2f53e1ac13cf8b661fe81394b43e6b8 Binary files /dev/null and b/concepts/71_6.png differ diff --git a/concepts/71_8.png b/concepts/71_8.png new file mode 100644 index 0000000000000000000000000000000000000000..48406a2c2ae91935a273f059c21330449b2f303d Binary files /dev/null and b/concepts/71_8.png differ diff --git a/concepts/71_9.png b/concepts/71_9.png new file mode 100644 index 0000000000000000000000000000000000000000..828d902007fc1d787a5f4e261081ff6b57de05f6 Binary files /dev/null and b/concepts/71_9.png differ diff --git a/concepts/72_0.png b/concepts/72_0.png new file mode 100644 index 0000000000000000000000000000000000000000..9c8bd4b765c93e71ee73cdba94d754d721e27cd8 Binary files /dev/null and b/concepts/72_0.png differ diff --git a/concepts/72_1.png b/concepts/72_1.png new file mode 100644 index 0000000000000000000000000000000000000000..68eaa1ef1aea29fdc3b53b7339b7ce28627b94b5 Binary files /dev/null and b/concepts/72_1.png differ diff --git a/concepts/72_2.png b/concepts/72_2.png new file mode 100644 index 0000000000000000000000000000000000000000..f04999e198ce254337512038dcd764eb9efc0390 Binary files /dev/null and b/concepts/72_2.png differ diff --git a/concepts/72_3.png b/concepts/72_3.png new file mode 100644 index 0000000000000000000000000000000000000000..902865ff2bc10b4e1a4dfb28ae8834265d85d842 Binary files /dev/null and b/concepts/72_3.png differ diff --git a/concepts/72_4.png b/concepts/72_4.png new file mode 100644 index 0000000000000000000000000000000000000000..1e691fc24cc5256468f670cdd428ca25976ad2ee Binary files /dev/null and b/concepts/72_4.png differ diff --git a/concepts/72_5.png b/concepts/72_5.png new file mode 100644 index 0000000000000000000000000000000000000000..a16648ea701e794191902402b7c4908942881355 Binary files /dev/null and b/concepts/72_5.png differ diff --git a/concepts/72_6.png b/concepts/72_6.png new file mode 100644 index 0000000000000000000000000000000000000000..8cd2823acd9ccdecb36ee8741189be17a388b918 Binary files /dev/null and b/concepts/72_6.png differ diff --git a/concepts/72_7.png b/concepts/72_7.png new file mode 100644 index 0000000000000000000000000000000000000000..2fc0c8731a3a5b055fd290001dfbbf9434664329 Binary files /dev/null and b/concepts/72_7.png differ diff --git a/concepts/73_0.png b/concepts/73_0.png new file mode 100644 index 0000000000000000000000000000000000000000..f42f53ab9b8b93fbe855bd76d76e24848d811851 Binary files /dev/null and b/concepts/73_0.png differ diff --git a/concepts/73_1.png b/concepts/73_1.png new file mode 100644 index 0000000000000000000000000000000000000000..90c85e340f47bacd6c7f74f8ce0917655d570d70 Binary files /dev/null and b/concepts/73_1.png differ diff --git a/concepts/73_10.png b/concepts/73_10.png new file mode 100644 index 0000000000000000000000000000000000000000..48ec239d1ca8f4c6b2f4ff787a37cd8ab9faa81e Binary files /dev/null and b/concepts/73_10.png differ diff --git a/concepts/73_4.png b/concepts/73_4.png new file mode 100644 index 0000000000000000000000000000000000000000..0673cc8f2762e0123cdc1e60eeffee51ca1a74d5 Binary files /dev/null and b/concepts/73_4.png differ diff --git a/concepts/73_5.png b/concepts/73_5.png new file mode 100644 index 0000000000000000000000000000000000000000..85db6f5e08c17d9902a7c004dbacd5609b77c1e4 Binary files /dev/null and b/concepts/73_5.png differ diff --git a/concepts/73_6.png b/concepts/73_6.png new file mode 100644 index 0000000000000000000000000000000000000000..e4d0b33c4a4fedbe21650176024005f20d23d5cf Binary files /dev/null and b/concepts/73_6.png differ diff --git a/concepts/73_8.png b/concepts/73_8.png new file mode 100644 index 0000000000000000000000000000000000000000..32d40e76c51be9f2780170c663e11ebbd03396a7 Binary files /dev/null and b/concepts/73_8.png differ diff --git a/concepts/73_9.png b/concepts/73_9.png new file mode 100644 index 0000000000000000000000000000000000000000..0d95629683ae06c993867876d882b610a4e4d484 Binary files /dev/null and b/concepts/73_9.png differ diff --git a/concepts/74_0.png b/concepts/74_0.png new file mode 100644 index 0000000000000000000000000000000000000000..7e23eeea5c92ad83addf5a2a2b2f444950bf7efd Binary files /dev/null and b/concepts/74_0.png differ diff --git a/concepts/74_1.png b/concepts/74_1.png new file mode 100644 index 0000000000000000000000000000000000000000..9f34a4fa222ecc8c45927150f2e1c0b8402c1a5d Binary files /dev/null and b/concepts/74_1.png differ diff --git a/concepts/74_10.png b/concepts/74_10.png new file mode 100644 index 0000000000000000000000000000000000000000..dd1be9094da53623820d0521ffb5ba33e13af974 Binary files /dev/null and b/concepts/74_10.png differ diff --git a/concepts/74_3.png b/concepts/74_3.png new file mode 100644 index 0000000000000000000000000000000000000000..ed50aa40f302e51ffad90df0366f67e10fa794fe Binary files /dev/null and b/concepts/74_3.png differ diff --git a/concepts/74_4.png b/concepts/74_4.png new file mode 100644 index 0000000000000000000000000000000000000000..5dea1b39b536a58aa06fb2b18b033d6c2f168bc6 Binary files /dev/null and b/concepts/74_4.png differ diff --git a/concepts/74_5.png b/concepts/74_5.png new file mode 100644 index 0000000000000000000000000000000000000000..208b7ad423b827dbbc7da1dc02d360b11286d8e8 Binary files /dev/null and b/concepts/74_5.png differ diff --git a/concepts/74_6.png b/concepts/74_6.png new file mode 100644 index 0000000000000000000000000000000000000000..fbe71e473d63af8ca77e88844269a2d188b5832f Binary files /dev/null and b/concepts/74_6.png differ diff --git a/concepts/74_8.png b/concepts/74_8.png new file mode 100644 index 0000000000000000000000000000000000000000..e91cfcd330a5a04e5dcaaa8f57a88ad893dc1e03 Binary files /dev/null and b/concepts/74_8.png differ diff --git a/concepts/75_0.png b/concepts/75_0.png new file mode 100644 index 0000000000000000000000000000000000000000..0f4ad2b006cb191bd0a6a36d714272c74702d592 Binary files /dev/null and b/concepts/75_0.png differ diff --git a/concepts/75_1.png b/concepts/75_1.png new file mode 100644 index 0000000000000000000000000000000000000000..c2c502a37cfb13edddf6846230f4d40b92492c85 Binary files /dev/null and b/concepts/75_1.png differ diff --git a/concepts/75_10.png b/concepts/75_10.png new file mode 100644 index 0000000000000000000000000000000000000000..b2551c06a950f9fc37c56fb585913c1feee15b15 Binary files /dev/null and b/concepts/75_10.png differ diff --git a/concepts/75_2.png b/concepts/75_2.png new file mode 100644 index 0000000000000000000000000000000000000000..5d6b1e50bb908dbf2d5d7421e530ee79a68437e3 Binary files /dev/null and b/concepts/75_2.png differ diff --git a/concepts/75_3.png b/concepts/75_3.png new file mode 100644 index 0000000000000000000000000000000000000000..efa391edae509d795f890fad75ccba9a7c51d0dd Binary files /dev/null and b/concepts/75_3.png differ diff --git a/concepts/75_4.png b/concepts/75_4.png new file mode 100644 index 0000000000000000000000000000000000000000..2a9a91c47da5cc5b2df38f84fff28910c9545b23 Binary files /dev/null and b/concepts/75_4.png differ diff --git a/concepts/75_5.png b/concepts/75_5.png new file mode 100644 index 0000000000000000000000000000000000000000..960d95626e45395a93775a04687f8fe768224658 Binary files /dev/null and b/concepts/75_5.png differ diff --git a/concepts/75_8.png b/concepts/75_8.png new file mode 100644 index 0000000000000000000000000000000000000000..8df870c2f062cfc04eb09a2c1eb3e99b96cffb8b Binary files /dev/null and b/concepts/75_8.png differ diff --git a/concepts/76_0.png b/concepts/76_0.png new file mode 100644 index 0000000000000000000000000000000000000000..6031f841bcd2a24e696b01d87efa4e50dc663718 Binary files /dev/null and b/concepts/76_0.png differ diff --git a/concepts/76_1.png b/concepts/76_1.png new file mode 100644 index 0000000000000000000000000000000000000000..0322ac6720fc79cdfdd56811bea7c76f4e5e03b7 Binary files /dev/null and b/concepts/76_1.png differ diff --git a/concepts/76_10.png b/concepts/76_10.png new file mode 100644 index 0000000000000000000000000000000000000000..410d9a3db89e6c123e88d5f76a3ddef143222f72 Binary files /dev/null and b/concepts/76_10.png differ diff --git a/concepts/76_11.png b/concepts/76_11.png new file mode 100644 index 0000000000000000000000000000000000000000..22d898b8ff60e89a3829e41651e1efc3391a01b2 Binary files /dev/null and b/concepts/76_11.png differ diff --git a/concepts/76_3.png b/concepts/76_3.png new file mode 100644 index 0000000000000000000000000000000000000000..b25909d7861bf6d5acc82a354d3dffb03155b998 Binary files /dev/null and b/concepts/76_3.png differ diff --git a/concepts/76_4.png b/concepts/76_4.png new file mode 100644 index 0000000000000000000000000000000000000000..d172f69dc337a73854653559ea23502982c70a47 Binary files /dev/null and b/concepts/76_4.png differ diff --git a/concepts/76_7.png b/concepts/76_7.png new file mode 100644 index 0000000000000000000000000000000000000000..1832d556d89f2888f6ac4140738a42229831a475 Binary files /dev/null and b/concepts/76_7.png differ diff --git a/concepts/76_9.png b/concepts/76_9.png new file mode 100644 index 0000000000000000000000000000000000000000..a848ab219835fdcc6a5b94f98bafcb999d9ff19b Binary files /dev/null and b/concepts/76_9.png differ diff --git a/concepts/77_0.png b/concepts/77_0.png new file mode 100644 index 0000000000000000000000000000000000000000..10533943a62f45ad237b584d0554b5e311618dff Binary files /dev/null and b/concepts/77_0.png differ diff --git a/concepts/77_10.png b/concepts/77_10.png new file mode 100644 index 0000000000000000000000000000000000000000..056f4fc6d73ff2c20e994648e674f13ecaa588a6 Binary files /dev/null and b/concepts/77_10.png differ diff --git a/concepts/77_12.png b/concepts/77_12.png new file mode 100644 index 0000000000000000000000000000000000000000..3617a3e0106d437bba7e8ca83a672de76cafe561 Binary files /dev/null and b/concepts/77_12.png differ diff --git a/concepts/77_13.png b/concepts/77_13.png new file mode 100644 index 0000000000000000000000000000000000000000..e023d7af31928f28ab073ad7e0a98abce3a8e8d0 Binary files /dev/null and b/concepts/77_13.png differ diff --git a/concepts/77_21.png b/concepts/77_21.png new file mode 100644 index 0000000000000000000000000000000000000000..75969e5138e6e2586508465f66b72e0092855447 Binary files /dev/null and b/concepts/77_21.png differ diff --git a/concepts/77_4.png b/concepts/77_4.png new file mode 100644 index 0000000000000000000000000000000000000000..073494538b325c41a4f9569867588b3bf462101f Binary files /dev/null and b/concepts/77_4.png differ diff --git a/concepts/77_7.png b/concepts/77_7.png new file mode 100644 index 0000000000000000000000000000000000000000..a0bcc6b012093944e7cac871202d82728c762910 Binary files /dev/null and b/concepts/77_7.png differ diff --git a/concepts/77_9.png b/concepts/77_9.png new file mode 100644 index 0000000000000000000000000000000000000000..c953e83964d90158ce8ff71d6250cb796dfe1161 Binary files /dev/null and b/concepts/77_9.png differ diff --git a/concepts/78_10.png b/concepts/78_10.png new file mode 100644 index 0000000000000000000000000000000000000000..06d04a7374405b180c5abc2f2d3c9954bf07fc33 Binary files /dev/null and b/concepts/78_10.png differ diff --git a/concepts/78_12.png b/concepts/78_12.png new file mode 100644 index 0000000000000000000000000000000000000000..2497178fad8bcd441a86c8ee2e1a3740bb6550f3 Binary files /dev/null and b/concepts/78_12.png differ diff --git a/concepts/78_3.png b/concepts/78_3.png new file mode 100644 index 0000000000000000000000000000000000000000..b0a8027f5ec435842cf1efb0459b62de30aea36c Binary files /dev/null and b/concepts/78_3.png differ diff --git a/concepts/78_4.png b/concepts/78_4.png new file mode 100644 index 0000000000000000000000000000000000000000..fb7ed41ab425cd20766526f1cbe3199d3006df76 Binary files /dev/null and b/concepts/78_4.png differ diff --git a/concepts/78_5.png b/concepts/78_5.png new file mode 100644 index 0000000000000000000000000000000000000000..0bcf75aa376e09ff0d8acf5ef7d25f30813250c8 Binary files /dev/null and b/concepts/78_5.png differ diff --git a/concepts/78_6.png b/concepts/78_6.png new file mode 100644 index 0000000000000000000000000000000000000000..f84564c92923fc89dfe33f60a61ebb4f431c8197 Binary files /dev/null and b/concepts/78_6.png differ diff --git a/concepts/78_7.png b/concepts/78_7.png new file mode 100644 index 0000000000000000000000000000000000000000..a891d34ddfffab4c76207148138bd13a0581bf0f Binary files /dev/null and b/concepts/78_7.png differ diff --git a/concepts/78_9.png b/concepts/78_9.png new file mode 100644 index 0000000000000000000000000000000000000000..fcd8fa65c4dd933850514a17a0661d0d67d38fcd Binary files /dev/null and b/concepts/78_9.png differ diff --git a/concepts/79_0.png b/concepts/79_0.png new file mode 100644 index 0000000000000000000000000000000000000000..63fcea4a9058c26983201d6ad1a6a26a6227f0c6 Binary files /dev/null and b/concepts/79_0.png differ diff --git a/concepts/79_1.png b/concepts/79_1.png new file mode 100644 index 0000000000000000000000000000000000000000..50b36c881312fc03fabe7f097e3ade1ec31fb279 Binary files /dev/null and b/concepts/79_1.png differ diff --git a/concepts/79_2.png b/concepts/79_2.png new file mode 100644 index 0000000000000000000000000000000000000000..d39b6c971b32fccbd745b224ae38baba4bb27103 Binary files /dev/null and b/concepts/79_2.png differ diff --git a/concepts/79_3.png b/concepts/79_3.png new file mode 100644 index 0000000000000000000000000000000000000000..c3ae027b9ec120c3c386665b998a48038235bad0 Binary files /dev/null and b/concepts/79_3.png differ diff --git a/concepts/79_4.png b/concepts/79_4.png new file mode 100644 index 0000000000000000000000000000000000000000..e464920e8ad0c03e7bfc391a8b60481f01a37e74 Binary files /dev/null and b/concepts/79_4.png differ diff --git a/concepts/79_5.png b/concepts/79_5.png new file mode 100644 index 0000000000000000000000000000000000000000..fd98366bf3bdda8247438433c125461e7dabf7d7 Binary files /dev/null and b/concepts/79_5.png differ diff --git a/concepts/79_7.png b/concepts/79_7.png new file mode 100644 index 0000000000000000000000000000000000000000..bcafb849918aa4be2d259282415ccae62d2435e3 Binary files /dev/null and b/concepts/79_7.png differ diff --git a/concepts/79_8.png b/concepts/79_8.png new file mode 100644 index 0000000000000000000000000000000000000000..37d17ed4962fd01e121c4371c660d8bd4cc923ca Binary files /dev/null and b/concepts/79_8.png differ diff --git a/concepts/7_0.png b/concepts/7_0.png new file mode 100644 index 0000000000000000000000000000000000000000..c0b417a7759bfc7533e188411448b2db29ea4c36 Binary files /dev/null and b/concepts/7_0.png differ diff --git a/concepts/7_1.png b/concepts/7_1.png new file mode 100644 index 0000000000000000000000000000000000000000..4cd0abc1fe05793b6c9e2ae1e192bf33908bb880 Binary files /dev/null and b/concepts/7_1.png differ diff --git a/concepts/7_10.png b/concepts/7_10.png new file mode 100644 index 0000000000000000000000000000000000000000..15fa2bfd832caa3dad77763a162452c6fd6c140c Binary files /dev/null and b/concepts/7_10.png differ diff --git a/concepts/7_2.png b/concepts/7_2.png new file mode 100644 index 0000000000000000000000000000000000000000..0376af2a22873c18133a32e88181bb2de55918fe Binary files /dev/null and b/concepts/7_2.png differ diff --git a/concepts/7_4.png b/concepts/7_4.png new file mode 100644 index 0000000000000000000000000000000000000000..58dd5479ab93d0b9083a986c98f3022bbc073a58 Binary files /dev/null and b/concepts/7_4.png differ diff --git a/concepts/7_6.png b/concepts/7_6.png new file mode 100644 index 0000000000000000000000000000000000000000..655294b69e202ca7bbea55b462f8531d4a10dbc9 Binary files /dev/null and b/concepts/7_6.png differ diff --git a/concepts/7_7.png b/concepts/7_7.png new file mode 100644 index 0000000000000000000000000000000000000000..1e5c7b1ac3adda184e6795e23f83db7853637687 Binary files /dev/null and b/concepts/7_7.png differ diff --git a/concepts/7_9.png b/concepts/7_9.png new file mode 100644 index 0000000000000000000000000000000000000000..2d8637b70b3ca3eb5ea65bc9a99231f878d73e5c Binary files /dev/null and b/concepts/7_9.png differ diff --git a/concepts/80_0.png b/concepts/80_0.png new file mode 100644 index 0000000000000000000000000000000000000000..f253a6583b3f57697e89f3e8b8d4c4ccc63bcee2 Binary files /dev/null and b/concepts/80_0.png differ diff --git a/concepts/80_1.png b/concepts/80_1.png new file mode 100644 index 0000000000000000000000000000000000000000..141bdc337676c0e1ded0321f41eb595efa21ae3c Binary files /dev/null and b/concepts/80_1.png differ diff --git a/concepts/80_2.png b/concepts/80_2.png new file mode 100644 index 0000000000000000000000000000000000000000..60406a9863f59b3ed3c77bf04109270d02a72615 Binary files /dev/null and b/concepts/80_2.png differ diff --git a/concepts/80_4.png b/concepts/80_4.png new file mode 100644 index 0000000000000000000000000000000000000000..2b2ef91ebbec944cd4855b79769b93a440e61be2 Binary files /dev/null and b/concepts/80_4.png differ diff --git a/concepts/80_5.png b/concepts/80_5.png new file mode 100644 index 0000000000000000000000000000000000000000..ee5dc5bd585ac500a3b794b6f7458b0ced0165e5 Binary files /dev/null and b/concepts/80_5.png differ diff --git a/concepts/80_6.png b/concepts/80_6.png new file mode 100644 index 0000000000000000000000000000000000000000..cb0275e6d5de85b033184a7a663e647a37ede6f0 Binary files /dev/null and b/concepts/80_6.png differ diff --git a/concepts/80_7.png b/concepts/80_7.png new file mode 100644 index 0000000000000000000000000000000000000000..a39e1c5d127f812f4cc483359d783111d165ea9e Binary files /dev/null and b/concepts/80_7.png differ diff --git a/concepts/80_8.png b/concepts/80_8.png new file mode 100644 index 0000000000000000000000000000000000000000..83cdedcd17d98b9546c18840834c0a1703a14a7b Binary files /dev/null and b/concepts/80_8.png differ diff --git a/concepts/81_10.png b/concepts/81_10.png new file mode 100644 index 0000000000000000000000000000000000000000..06889bf85fa895ce66812052d6f3417009fef982 Binary files /dev/null and b/concepts/81_10.png differ diff --git a/concepts/81_11.png b/concepts/81_11.png new file mode 100644 index 0000000000000000000000000000000000000000..f58f76f816ed0651daaefbbd95b1ddec5376605a Binary files /dev/null and b/concepts/81_11.png differ diff --git a/concepts/81_14.png b/concepts/81_14.png new file mode 100644 index 0000000000000000000000000000000000000000..03c6ca97002c344703ea591c376244e272789cfe Binary files /dev/null and b/concepts/81_14.png differ diff --git a/concepts/81_2.png b/concepts/81_2.png new file mode 100644 index 0000000000000000000000000000000000000000..e3245d4629a4341f3898fd21a41bbb3bd9b2b6f4 Binary files /dev/null and b/concepts/81_2.png differ diff --git a/concepts/81_20.png b/concepts/81_20.png new file mode 100644 index 0000000000000000000000000000000000000000..36ae6fa4fc516dd64ef638ee73da8e53568f1937 Binary files /dev/null and b/concepts/81_20.png differ diff --git a/concepts/81_4.png b/concepts/81_4.png new file mode 100644 index 0000000000000000000000000000000000000000..19667d0c1a383fb0bbbd19468179c65efe5f6ba4 Binary files /dev/null and b/concepts/81_4.png differ diff --git a/concepts/81_7.png b/concepts/81_7.png new file mode 100644 index 0000000000000000000000000000000000000000..345afa421196b219ded74524853185d6bde06794 Binary files /dev/null and b/concepts/81_7.png differ diff --git a/concepts/81_8.png b/concepts/81_8.png new file mode 100644 index 0000000000000000000000000000000000000000..8099544fbb7839b2fac2110dc02eafcd220ebc2d Binary files /dev/null and b/concepts/81_8.png differ diff --git a/concepts/82_0.png b/concepts/82_0.png new file mode 100644 index 0000000000000000000000000000000000000000..9451ce051e4a2bc13baf629d9082de2f89872562 Binary files /dev/null and b/concepts/82_0.png differ diff --git a/concepts/82_10.png b/concepts/82_10.png new file mode 100644 index 0000000000000000000000000000000000000000..32aa7ec2e541dc969b434ed37eb9c5805808d222 Binary files /dev/null and b/concepts/82_10.png differ diff --git a/concepts/82_12.png b/concepts/82_12.png new file mode 100644 index 0000000000000000000000000000000000000000..008ab2c6378234768fbf61ad95302c6e370d242c Binary files /dev/null and b/concepts/82_12.png differ diff --git a/concepts/82_14.png b/concepts/82_14.png new file mode 100644 index 0000000000000000000000000000000000000000..46dbe525bbaff062773959d4daa7d16d86c25c05 Binary files /dev/null and b/concepts/82_14.png differ diff --git a/concepts/82_19.png b/concepts/82_19.png new file mode 100644 index 0000000000000000000000000000000000000000..0fcfb2e0f00a06e64d930555f61cbd31f5276382 Binary files /dev/null and b/concepts/82_19.png differ diff --git a/concepts/82_2.png b/concepts/82_2.png new file mode 100644 index 0000000000000000000000000000000000000000..44ecf81795af82e38932978a78387ae327d585d4 Binary files /dev/null and b/concepts/82_2.png differ diff --git a/concepts/82_5.png b/concepts/82_5.png new file mode 100644 index 0000000000000000000000000000000000000000..a8e6f099a04fe6cec01bd14f7763063df35df4c3 Binary files /dev/null and b/concepts/82_5.png differ diff --git a/concepts/82_8.png b/concepts/82_8.png new file mode 100644 index 0000000000000000000000000000000000000000..47ffbfc396ae5a3cb8d1669307115465aec09e01 Binary files /dev/null and b/concepts/82_8.png differ diff --git a/concepts/83_0.png b/concepts/83_0.png new file mode 100644 index 0000000000000000000000000000000000000000..4d9956b639683a0b25185ce39922f04b04610113 Binary files /dev/null and b/concepts/83_0.png differ diff --git a/concepts/83_1.png b/concepts/83_1.png new file mode 100644 index 0000000000000000000000000000000000000000..3b73ab854be86ccf8476b79e2d2e2e1d1a0ce47b Binary files /dev/null and b/concepts/83_1.png differ diff --git a/concepts/83_2.png b/concepts/83_2.png new file mode 100644 index 0000000000000000000000000000000000000000..7df7697c8408fd61759734e75055ca89c3a4df2b Binary files /dev/null and b/concepts/83_2.png differ diff --git a/concepts/83_3.png b/concepts/83_3.png new file mode 100644 index 0000000000000000000000000000000000000000..e492e37bf2c5212137274aa8bfcb91283d8c192c Binary files /dev/null and b/concepts/83_3.png differ diff --git a/concepts/83_4.png b/concepts/83_4.png new file mode 100644 index 0000000000000000000000000000000000000000..8c45d0c5bd9558f4ea854dcd66dbcf2af89f7b33 Binary files /dev/null and b/concepts/83_4.png differ diff --git a/concepts/83_5.png b/concepts/83_5.png new file mode 100644 index 0000000000000000000000000000000000000000..3ff8127f78758bce7ce2ef60d5e39f2527121b37 Binary files /dev/null and b/concepts/83_5.png differ diff --git a/concepts/83_7.png b/concepts/83_7.png new file mode 100644 index 0000000000000000000000000000000000000000..ad8af9ee9b8594edf5147758deb3160ea74fac69 Binary files /dev/null and b/concepts/83_7.png differ diff --git a/concepts/83_9.png b/concepts/83_9.png new file mode 100644 index 0000000000000000000000000000000000000000..70f6b8bdf90b278a55337e3f86fcaad48b6a1697 Binary files /dev/null and b/concepts/83_9.png differ diff --git a/concepts/84_0.png b/concepts/84_0.png new file mode 100644 index 0000000000000000000000000000000000000000..a4b194ce20fb190be348208275ce693a7677124f Binary files /dev/null and b/concepts/84_0.png differ diff --git a/concepts/84_1.png b/concepts/84_1.png new file mode 100644 index 0000000000000000000000000000000000000000..2f7310567b45bb3784f693e48b4d6a6510e546a5 Binary files /dev/null and b/concepts/84_1.png differ diff --git a/concepts/84_2.png b/concepts/84_2.png new file mode 100644 index 0000000000000000000000000000000000000000..c25b962fe4ba0e02608a1e57bc024e368c20ddf2 Binary files /dev/null and b/concepts/84_2.png differ diff --git a/concepts/84_3.png b/concepts/84_3.png new file mode 100644 index 0000000000000000000000000000000000000000..681963c909251fe97e6e0cc1392371b9db0bc07b Binary files /dev/null and b/concepts/84_3.png differ diff --git a/concepts/84_5.png b/concepts/84_5.png new file mode 100644 index 0000000000000000000000000000000000000000..134043e741a83b7714d75338b1cf7ff889b38124 Binary files /dev/null and b/concepts/84_5.png differ diff --git a/concepts/84_6.png b/concepts/84_6.png new file mode 100644 index 0000000000000000000000000000000000000000..a667549c8605515715a4326186194ccf534a6424 Binary files /dev/null and b/concepts/84_6.png differ diff --git a/concepts/84_7.png b/concepts/84_7.png new file mode 100644 index 0000000000000000000000000000000000000000..14e3d097f0b762238794568455b5f43263710ea2 Binary files /dev/null and b/concepts/84_7.png differ diff --git a/concepts/84_8.png b/concepts/84_8.png new file mode 100644 index 0000000000000000000000000000000000000000..b7b0258b77f3e2822a6d7cb74190e3a69819c78c Binary files /dev/null and b/concepts/84_8.png differ diff --git a/concepts/85_0.png b/concepts/85_0.png new file mode 100644 index 0000000000000000000000000000000000000000..c4ecd9221c760963cd92dcf774eca3e294ea5810 Binary files /dev/null and b/concepts/85_0.png differ diff --git a/concepts/85_1.png b/concepts/85_1.png new file mode 100644 index 0000000000000000000000000000000000000000..91255b880b4e692cc306da6e8d741eadd6d8138e Binary files /dev/null and b/concepts/85_1.png differ diff --git a/concepts/85_12.png b/concepts/85_12.png new file mode 100644 index 0000000000000000000000000000000000000000..56ab232187326ea18407a8f4e5dbf91cf9936ce0 Binary files /dev/null and b/concepts/85_12.png differ diff --git a/concepts/85_15.png b/concepts/85_15.png new file mode 100644 index 0000000000000000000000000000000000000000..dd5d1ae00d75802a2e9b767363272928bdd11825 Binary files /dev/null and b/concepts/85_15.png differ diff --git a/concepts/85_17.png b/concepts/85_17.png new file mode 100644 index 0000000000000000000000000000000000000000..ca5d309a97422ea1aa999ce5d7f59bd1410531b0 Binary files /dev/null and b/concepts/85_17.png differ diff --git a/concepts/85_3.png b/concepts/85_3.png new file mode 100644 index 0000000000000000000000000000000000000000..3dab143aa1817478f2bcb483fd044678ef94535a Binary files /dev/null and b/concepts/85_3.png differ diff --git a/concepts/85_6.png b/concepts/85_6.png new file mode 100644 index 0000000000000000000000000000000000000000..9d24d795d79dccf6f15eb56dbb16fabe234c4b06 Binary files /dev/null and b/concepts/85_6.png differ diff --git a/concepts/85_8.png b/concepts/85_8.png new file mode 100644 index 0000000000000000000000000000000000000000..0c9b2ac9b3d3bb251e632613f21d599c2eb21785 Binary files /dev/null and b/concepts/85_8.png differ diff --git a/concepts/86_0.png b/concepts/86_0.png new file mode 100644 index 0000000000000000000000000000000000000000..37ab88c15776d631ec32f44d06dc6b737f1cb21c Binary files /dev/null and b/concepts/86_0.png differ diff --git a/concepts/86_1.png b/concepts/86_1.png new file mode 100644 index 0000000000000000000000000000000000000000..f128a5c4032c3329541b617095932a394d6745cf Binary files /dev/null and b/concepts/86_1.png differ diff --git a/concepts/86_14.png b/concepts/86_14.png new file mode 100644 index 0000000000000000000000000000000000000000..0fecd1c140f8b1954c56fb766c2e2daa4af3cd5e Binary files /dev/null and b/concepts/86_14.png differ diff --git a/concepts/86_16.png b/concepts/86_16.png new file mode 100644 index 0000000000000000000000000000000000000000..657ec81e3002ea8411f247ace7cb671e3151282c Binary files /dev/null and b/concepts/86_16.png differ diff --git a/concepts/86_2.png b/concepts/86_2.png new file mode 100644 index 0000000000000000000000000000000000000000..5c31b7c0d1d279c881c3df3d7fb37bb6d7881c81 Binary files /dev/null and b/concepts/86_2.png differ diff --git a/concepts/86_4.png b/concepts/86_4.png new file mode 100644 index 0000000000000000000000000000000000000000..aa15fd785d023409d8027fac88ea86d5f51006a9 Binary files /dev/null and b/concepts/86_4.png differ diff --git a/concepts/86_7.png b/concepts/86_7.png new file mode 100644 index 0000000000000000000000000000000000000000..b7096c33916ba140b74dc39318834fc5518675d2 Binary files /dev/null and b/concepts/86_7.png differ diff --git a/concepts/86_8.png b/concepts/86_8.png new file mode 100644 index 0000000000000000000000000000000000000000..250e691b3e33ed0106a068253dfb475f6f255e5a Binary files /dev/null and b/concepts/86_8.png differ diff --git a/concepts/87_0.png b/concepts/87_0.png new file mode 100644 index 0000000000000000000000000000000000000000..797ca098ee04600c080cadb2a13a576098615a7a Binary files /dev/null and b/concepts/87_0.png differ diff --git a/concepts/87_1.png b/concepts/87_1.png new file mode 100644 index 0000000000000000000000000000000000000000..beb388bbf5923aedb84678a125e5969a9885fd73 Binary files /dev/null and b/concepts/87_1.png differ diff --git a/concepts/87_2.png b/concepts/87_2.png new file mode 100644 index 0000000000000000000000000000000000000000..80a47eb5c8b11fddd35aad5c473ef6eeca846a55 Binary files /dev/null and b/concepts/87_2.png differ diff --git a/concepts/87_3.png b/concepts/87_3.png new file mode 100644 index 0000000000000000000000000000000000000000..52dab5513b1a681ad85424cb1874e605f698c660 Binary files /dev/null and b/concepts/87_3.png differ diff --git a/concepts/87_4.png b/concepts/87_4.png new file mode 100644 index 0000000000000000000000000000000000000000..e00665dd7c4deb71426eb903a97cda0f6e4b961b Binary files /dev/null and b/concepts/87_4.png differ diff --git a/concepts/87_5.png b/concepts/87_5.png new file mode 100644 index 0000000000000000000000000000000000000000..53583cfe345e964e505057a7e2166a4b3bfe57e3 Binary files /dev/null and b/concepts/87_5.png differ diff --git a/concepts/87_6.png b/concepts/87_6.png new file mode 100644 index 0000000000000000000000000000000000000000..54ac5b32a0b7280065cee7bfb8045c457950fae0 Binary files /dev/null and b/concepts/87_6.png differ diff --git a/concepts/87_7.png b/concepts/87_7.png new file mode 100644 index 0000000000000000000000000000000000000000..c9812b67342dbfd07112792456989360a2b5d1ab Binary files /dev/null and b/concepts/87_7.png differ diff --git a/concepts/88_0.png b/concepts/88_0.png new file mode 100644 index 0000000000000000000000000000000000000000..a852b1654505712693a500ea94e448d8933af5d1 Binary files /dev/null and b/concepts/88_0.png differ diff --git a/concepts/88_1.png b/concepts/88_1.png new file mode 100644 index 0000000000000000000000000000000000000000..f4aa2c9b98cc8fe5c54240d43f9920dbe824598d Binary files /dev/null and b/concepts/88_1.png differ diff --git a/concepts/88_10.png b/concepts/88_10.png new file mode 100644 index 0000000000000000000000000000000000000000..33d246d35006210a0f941fd51b9a69d81f5545b0 Binary files /dev/null and b/concepts/88_10.png differ diff --git a/concepts/88_2.png b/concepts/88_2.png new file mode 100644 index 0000000000000000000000000000000000000000..b02ec01e02bafba0303e8671b85d365088944d28 Binary files /dev/null and b/concepts/88_2.png differ diff --git a/concepts/88_5.png b/concepts/88_5.png new file mode 100644 index 0000000000000000000000000000000000000000..5b7e61a6e2fa623876c0159f6333bd96c948db32 Binary files /dev/null and b/concepts/88_5.png differ diff --git a/concepts/88_6.png b/concepts/88_6.png new file mode 100644 index 0000000000000000000000000000000000000000..c3c8590c26ef666bab9b87d879fd19decc34c13d Binary files /dev/null and b/concepts/88_6.png differ diff --git a/concepts/88_7.png b/concepts/88_7.png new file mode 100644 index 0000000000000000000000000000000000000000..f196b3b772013822f4322c5b0506629b9c175de8 Binary files /dev/null and b/concepts/88_7.png differ diff --git a/concepts/88_9.png b/concepts/88_9.png new file mode 100644 index 0000000000000000000000000000000000000000..c92ec0899a3df0549b9a2baad80359918fa87a6f Binary files /dev/null and b/concepts/88_9.png differ diff --git a/concepts/89_0.png b/concepts/89_0.png new file mode 100644 index 0000000000000000000000000000000000000000..94b9959f9a9f1c9f5c796481b413f94208e4bae6 Binary files /dev/null and b/concepts/89_0.png differ diff --git a/concepts/89_1.png b/concepts/89_1.png new file mode 100644 index 0000000000000000000000000000000000000000..a28535f673f1cb03b19713365396f291ad52f5a1 Binary files /dev/null and b/concepts/89_1.png differ diff --git a/concepts/89_10.png b/concepts/89_10.png new file mode 100644 index 0000000000000000000000000000000000000000..300fa27b8d8320f738120e7fd33f0d747a654f3a Binary files /dev/null and b/concepts/89_10.png differ diff --git a/concepts/89_2.png b/concepts/89_2.png new file mode 100644 index 0000000000000000000000000000000000000000..6b66d0c6692d728877e93e608de651c542d7d9ba Binary files /dev/null and b/concepts/89_2.png differ diff --git a/concepts/89_3.png b/concepts/89_3.png new file mode 100644 index 0000000000000000000000000000000000000000..a48aaef860f2d3e755ab0862751613d0c1958449 Binary files /dev/null and b/concepts/89_3.png differ diff --git a/concepts/89_6.png b/concepts/89_6.png new file mode 100644 index 0000000000000000000000000000000000000000..86aad91cdc8eab907dd26d49550abd2e21da5e25 Binary files /dev/null and b/concepts/89_6.png differ diff --git a/concepts/89_7.png b/concepts/89_7.png new file mode 100644 index 0000000000000000000000000000000000000000..99456f276db5d6f042c2beeda3b44ba20d934580 Binary files /dev/null and b/concepts/89_7.png differ diff --git a/concepts/89_9.png b/concepts/89_9.png new file mode 100644 index 0000000000000000000000000000000000000000..69ebddcf3c0c5bb445b07c844709b7a2a235afaa Binary files /dev/null and b/concepts/89_9.png differ diff --git a/concepts/8_1.png b/concepts/8_1.png new file mode 100644 index 0000000000000000000000000000000000000000..84d3baf64ce6016dd95bd2b36539c4d1a4fb2297 Binary files /dev/null and b/concepts/8_1.png differ diff --git a/concepts/8_10.png b/concepts/8_10.png new file mode 100644 index 0000000000000000000000000000000000000000..04064ac9b430ee32048f0ad4a98009a3e3b04c8b Binary files /dev/null and b/concepts/8_10.png differ diff --git a/concepts/8_17.png b/concepts/8_17.png new file mode 100644 index 0000000000000000000000000000000000000000..0e7c05f0fe3504b22e3ede7564639888d93dab4d Binary files /dev/null and b/concepts/8_17.png differ diff --git a/concepts/8_18.png b/concepts/8_18.png new file mode 100644 index 0000000000000000000000000000000000000000..8c4aa9a59f35508988db2d8e66c7b55dd1b7f58d Binary files /dev/null and b/concepts/8_18.png differ diff --git a/concepts/8_4.png b/concepts/8_4.png new file mode 100644 index 0000000000000000000000000000000000000000..bc7fab183b811a5ed15c2e5171c21cc6b74eb5d0 Binary files /dev/null and b/concepts/8_4.png differ diff --git a/concepts/8_7.png b/concepts/8_7.png new file mode 100644 index 0000000000000000000000000000000000000000..bb3d4d50a9407b97f9090fcfc7f754cb3d3b38d3 Binary files /dev/null and b/concepts/8_7.png differ diff --git a/concepts/8_8.png b/concepts/8_8.png new file mode 100644 index 0000000000000000000000000000000000000000..4d985e132a8ecafca4148ed92bfffdfadbaf17a8 Binary files /dev/null and b/concepts/8_8.png differ diff --git a/concepts/8_9.png b/concepts/8_9.png new file mode 100644 index 0000000000000000000000000000000000000000..494e968d41547b8bb7e02ffaf9396296ce156a54 Binary files /dev/null and b/concepts/8_9.png differ diff --git a/concepts/90_0.png b/concepts/90_0.png new file mode 100644 index 0000000000000000000000000000000000000000..e7dad08145715dfec735f956fad80bfb54a2a2ef Binary files /dev/null and b/concepts/90_0.png differ diff --git a/concepts/90_1.png b/concepts/90_1.png new file mode 100644 index 0000000000000000000000000000000000000000..99d59296d5692932dcca5e951cae97a606396022 Binary files /dev/null and b/concepts/90_1.png differ diff --git a/concepts/90_10.png b/concepts/90_10.png new file mode 100644 index 0000000000000000000000000000000000000000..cc2914bc842310daf176cfd97cd377754ec4ffe1 Binary files /dev/null and b/concepts/90_10.png differ diff --git a/concepts/90_14.png b/concepts/90_14.png new file mode 100644 index 0000000000000000000000000000000000000000..d87d098e32c0b5b03f949807d5014869595f1001 Binary files /dev/null and b/concepts/90_14.png differ diff --git a/concepts/90_17.png b/concepts/90_17.png new file mode 100644 index 0000000000000000000000000000000000000000..b4ce832e447c6e7b07937e8d1991f5202dbd3746 Binary files /dev/null and b/concepts/90_17.png differ diff --git a/concepts/90_18.png b/concepts/90_18.png new file mode 100644 index 0000000000000000000000000000000000000000..62ba3610c98ad8b188031cbebd84640589c72d40 Binary files /dev/null and b/concepts/90_18.png differ diff --git a/concepts/90_3.png b/concepts/90_3.png new file mode 100644 index 0000000000000000000000000000000000000000..9ce9a761238d694890ce3eb5d90ae76b1929b985 Binary files /dev/null and b/concepts/90_3.png differ diff --git a/concepts/90_4.png b/concepts/90_4.png new file mode 100644 index 0000000000000000000000000000000000000000..a6594d25b63f867949453900731f214f8847cd6b Binary files /dev/null and b/concepts/90_4.png differ diff --git a/concepts/91_0.png b/concepts/91_0.png new file mode 100644 index 0000000000000000000000000000000000000000..415a6810192fc4ca8e6f114d6aa5ccfae35d3873 Binary files /dev/null and b/concepts/91_0.png differ diff --git a/concepts/91_1.png b/concepts/91_1.png new file mode 100644 index 0000000000000000000000000000000000000000..5086f5b054da27721d7ad3a50a43ddb71633bc14 Binary files /dev/null and b/concepts/91_1.png differ diff --git a/concepts/91_2.png b/concepts/91_2.png new file mode 100644 index 0000000000000000000000000000000000000000..e1165d736d6f3808d807ec578327d32cc2aa1056 Binary files /dev/null and b/concepts/91_2.png differ diff --git a/concepts/91_3.png b/concepts/91_3.png new file mode 100644 index 0000000000000000000000000000000000000000..382d5e01ca914b8cfe974cd7136c721e6b35b0a9 Binary files /dev/null and b/concepts/91_3.png differ diff --git a/concepts/91_4.png b/concepts/91_4.png new file mode 100644 index 0000000000000000000000000000000000000000..001df1d0a85e3ce3ecc51e7dc34eb0a8594fcf02 Binary files /dev/null and b/concepts/91_4.png differ diff --git a/concepts/91_6.png b/concepts/91_6.png new file mode 100644 index 0000000000000000000000000000000000000000..7b00afb2a711570eed117758b8ec723d052ba764 Binary files /dev/null and b/concepts/91_6.png differ diff --git a/concepts/91_8.png b/concepts/91_8.png new file mode 100644 index 0000000000000000000000000000000000000000..a7ce4cbfeeb678eb7fd65dd52a1481b02996952b Binary files /dev/null and b/concepts/91_8.png differ diff --git a/concepts/91_9.png b/concepts/91_9.png new file mode 100644 index 0000000000000000000000000000000000000000..a46ed7eed2a7a8052e4e956b4ce27db53b37cae2 Binary files /dev/null and b/concepts/91_9.png differ diff --git a/concepts/92_0.png b/concepts/92_0.png new file mode 100644 index 0000000000000000000000000000000000000000..50dd38ea83aecadf52c798f5061cee3b7d7a8585 Binary files /dev/null and b/concepts/92_0.png differ diff --git a/concepts/92_1.png b/concepts/92_1.png new file mode 100644 index 0000000000000000000000000000000000000000..b6d92d4ef610ec807d7cd001d0a99e733c30b8a3 Binary files /dev/null and b/concepts/92_1.png differ diff --git a/concepts/92_2.png b/concepts/92_2.png new file mode 100644 index 0000000000000000000000000000000000000000..ce3e3b3e419531c3c5e2e3a518b64a355a46abb2 Binary files /dev/null and b/concepts/92_2.png differ diff --git a/concepts/92_3.png b/concepts/92_3.png new file mode 100644 index 0000000000000000000000000000000000000000..a230e2dbc11049151089bee888ebf3f28de1081a Binary files /dev/null and b/concepts/92_3.png differ diff --git a/concepts/92_4.png b/concepts/92_4.png new file mode 100644 index 0000000000000000000000000000000000000000..3947a928ac7416f3bb91e998083924907e2c1109 Binary files /dev/null and b/concepts/92_4.png differ diff --git a/concepts/92_6.png b/concepts/92_6.png new file mode 100644 index 0000000000000000000000000000000000000000..752ee941e0aa74d66d7dddf1712abcc74d5ec867 Binary files /dev/null and b/concepts/92_6.png differ diff --git a/concepts/92_7.png b/concepts/92_7.png new file mode 100644 index 0000000000000000000000000000000000000000..56a415a4a3ef405b1b148fdbcc3ee9ae46e3dc9f Binary files /dev/null and b/concepts/92_7.png differ diff --git a/concepts/92_8.png b/concepts/92_8.png new file mode 100644 index 0000000000000000000000000000000000000000..792639dbbeedd1fc5dc9218323171804a01a703a Binary files /dev/null and b/concepts/92_8.png differ diff --git a/concepts/93_0.png b/concepts/93_0.png new file mode 100644 index 0000000000000000000000000000000000000000..4db933f3dfae12829f598912ce15ba1e23e93353 Binary files /dev/null and b/concepts/93_0.png differ diff --git a/concepts/93_1.png b/concepts/93_1.png new file mode 100644 index 0000000000000000000000000000000000000000..cb18f89947ccb5d1076804272bc809ce42cceaa2 Binary files /dev/null and b/concepts/93_1.png differ diff --git a/concepts/93_2.png b/concepts/93_2.png new file mode 100644 index 0000000000000000000000000000000000000000..2e3e0994fcb7082a72c99b5d1f31adc2e6e0ff3b Binary files /dev/null and b/concepts/93_2.png differ diff --git a/concepts/93_3.png b/concepts/93_3.png new file mode 100644 index 0000000000000000000000000000000000000000..49e4bc9d6c3e0fe352b04278318f74bfcaf5135d Binary files /dev/null and b/concepts/93_3.png differ diff --git a/concepts/93_4.png b/concepts/93_4.png new file mode 100644 index 0000000000000000000000000000000000000000..0cbc62197a598af3c0d06fa47439b16a13db7ad4 Binary files /dev/null and b/concepts/93_4.png differ diff --git a/concepts/93_5.png b/concepts/93_5.png new file mode 100644 index 0000000000000000000000000000000000000000..897b7f05e39e781dd717338112cf655d4b22c4f2 Binary files /dev/null and b/concepts/93_5.png differ diff --git a/concepts/93_7.png b/concepts/93_7.png new file mode 100644 index 0000000000000000000000000000000000000000..58efb5abbd554bacfeb2977757f74caf5415d020 Binary files /dev/null and b/concepts/93_7.png differ diff --git a/concepts/93_8.png b/concepts/93_8.png new file mode 100644 index 0000000000000000000000000000000000000000..e92edf385194ae5977b3439b0336940dd0f92768 Binary files /dev/null and b/concepts/93_8.png differ diff --git a/concepts/94_10.png b/concepts/94_10.png new file mode 100644 index 0000000000000000000000000000000000000000..abe012545378a7f5c36d2303265280b93292bbb2 Binary files /dev/null and b/concepts/94_10.png differ diff --git a/concepts/94_12.png b/concepts/94_12.png new file mode 100644 index 0000000000000000000000000000000000000000..676deae2c63cdb98a57cd2a055631388dbc065f2 Binary files /dev/null and b/concepts/94_12.png differ diff --git a/concepts/94_15.png b/concepts/94_15.png new file mode 100644 index 0000000000000000000000000000000000000000..b42bf0c1c4e1f7f74e1b3dc37399848b5a24c08f Binary files /dev/null and b/concepts/94_15.png differ diff --git a/concepts/94_17.png b/concepts/94_17.png new file mode 100644 index 0000000000000000000000000000000000000000..2e09d34d087dbb7b87fff817cd6cabfd1554c404 Binary files /dev/null and b/concepts/94_17.png differ diff --git a/concepts/94_3.png b/concepts/94_3.png new file mode 100644 index 0000000000000000000000000000000000000000..a1b50db22a6aa88e7a306f287383653674efb9b3 Binary files /dev/null and b/concepts/94_3.png differ diff --git a/concepts/94_6.png b/concepts/94_6.png new file mode 100644 index 0000000000000000000000000000000000000000..dc7174c6732da3093c64cf87a2ef3b172713d540 Binary files /dev/null and b/concepts/94_6.png differ diff --git a/concepts/94_7.png b/concepts/94_7.png new file mode 100644 index 0000000000000000000000000000000000000000..b2c272c4c235f0d5409ae0a71db278e752533228 Binary files /dev/null and b/concepts/94_7.png differ diff --git a/concepts/94_8.png b/concepts/94_8.png new file mode 100644 index 0000000000000000000000000000000000000000..fd6d01bc0f53a052d4d48e4821c03eb3065271be Binary files /dev/null and b/concepts/94_8.png differ diff --git a/concepts/95_0.png b/concepts/95_0.png new file mode 100644 index 0000000000000000000000000000000000000000..8d2d9879b82dae6d11deb262298205605a92ccab Binary files /dev/null and b/concepts/95_0.png differ diff --git a/concepts/95_1.png b/concepts/95_1.png new file mode 100644 index 0000000000000000000000000000000000000000..bda77e84e5f0750dcc32a0fee4fcf52d6e7bc3c8 Binary files /dev/null and b/concepts/95_1.png differ diff --git a/concepts/95_2.png b/concepts/95_2.png new file mode 100644 index 0000000000000000000000000000000000000000..8d4691fccea00f6fa7e132b1ac15263de34c2679 Binary files /dev/null and b/concepts/95_2.png differ diff --git a/concepts/95_3.png b/concepts/95_3.png new file mode 100644 index 0000000000000000000000000000000000000000..d58dddc84285242f83d3d09a4fb073d68603870f Binary files /dev/null and b/concepts/95_3.png differ diff --git a/concepts/95_4.png b/concepts/95_4.png new file mode 100644 index 0000000000000000000000000000000000000000..729c458323ca622d53c37aabe6f412c7eea410a0 Binary files /dev/null and b/concepts/95_4.png differ diff --git a/concepts/95_5.png b/concepts/95_5.png new file mode 100644 index 0000000000000000000000000000000000000000..0c949b655441200c80b835d02c57d8506c86627b Binary files /dev/null and b/concepts/95_5.png differ diff --git a/concepts/95_8.png b/concepts/95_8.png new file mode 100644 index 0000000000000000000000000000000000000000..a087e9712bb3a86d3ba8295fc89a160d8b74affa Binary files /dev/null and b/concepts/95_8.png differ diff --git a/concepts/95_9.png b/concepts/95_9.png new file mode 100644 index 0000000000000000000000000000000000000000..881f193567c94af842883edad909940158a9e69b Binary files /dev/null and b/concepts/95_9.png differ diff --git a/concepts/96_0.png b/concepts/96_0.png new file mode 100644 index 0000000000000000000000000000000000000000..8ef8a8b17e74815e1203a083a80d844ceb10fc0b Binary files /dev/null and b/concepts/96_0.png differ diff --git a/concepts/96_1.png b/concepts/96_1.png new file mode 100644 index 0000000000000000000000000000000000000000..a7fd5f7c6313ef0f89e080e1319c2e49977eaca2 Binary files /dev/null and b/concepts/96_1.png differ diff --git a/concepts/96_3.png b/concepts/96_3.png new file mode 100644 index 0000000000000000000000000000000000000000..d1fb39b07a0dc6c328b17df52212c99fe0ed40de Binary files /dev/null and b/concepts/96_3.png differ diff --git a/concepts/96_4.png b/concepts/96_4.png new file mode 100644 index 0000000000000000000000000000000000000000..dc5262f65b0eb0147530801d82d3015e422cf905 Binary files /dev/null and b/concepts/96_4.png differ diff --git a/concepts/96_5.png b/concepts/96_5.png new file mode 100644 index 0000000000000000000000000000000000000000..edea94e2d832de788766413e9974206da0acb403 Binary files /dev/null and b/concepts/96_5.png differ diff --git a/concepts/96_6.png b/concepts/96_6.png new file mode 100644 index 0000000000000000000000000000000000000000..877e5b1016476b0be7d235b70c08d2da64a733f6 Binary files /dev/null and b/concepts/96_6.png differ diff --git a/concepts/96_7.png b/concepts/96_7.png new file mode 100644 index 0000000000000000000000000000000000000000..64f34e5054474671966f80374a681e302139c4b7 Binary files /dev/null and b/concepts/96_7.png differ diff --git a/concepts/96_8.png b/concepts/96_8.png new file mode 100644 index 0000000000000000000000000000000000000000..a292c4b8da7ebbfe64b22b764069d87391cbf075 Binary files /dev/null and b/concepts/96_8.png differ diff --git a/concepts/97_1.png b/concepts/97_1.png new file mode 100644 index 0000000000000000000000000000000000000000..5666e385760f092514975d9f0a36e7989aab64c7 Binary files /dev/null and b/concepts/97_1.png differ diff --git a/concepts/97_13.png b/concepts/97_13.png new file mode 100644 index 0000000000000000000000000000000000000000..810996ee212e9040a5fa35c3ac5d8bc1277e6dde Binary files /dev/null and b/concepts/97_13.png differ diff --git a/concepts/97_14.png b/concepts/97_14.png new file mode 100644 index 0000000000000000000000000000000000000000..688d7c4f30f5954685e99ab67021726bcd0a5096 Binary files /dev/null and b/concepts/97_14.png differ diff --git a/concepts/97_3.png b/concepts/97_3.png new file mode 100644 index 0000000000000000000000000000000000000000..8d32930b310bf71450cd2fbbc4f81e5f9939cae0 Binary files /dev/null and b/concepts/97_3.png differ diff --git a/concepts/97_5.png b/concepts/97_5.png new file mode 100644 index 0000000000000000000000000000000000000000..15e399477327edb59c749beb32dc0c332f229003 Binary files /dev/null and b/concepts/97_5.png differ diff --git a/concepts/97_6.png b/concepts/97_6.png new file mode 100644 index 0000000000000000000000000000000000000000..f0b9e8e06168d7d069ebd6c4f79f177f1627607a Binary files /dev/null and b/concepts/97_6.png differ diff --git a/concepts/97_7.png b/concepts/97_7.png new file mode 100644 index 0000000000000000000000000000000000000000..98d86549959588213299378f6934e4ce8764c845 Binary files /dev/null and b/concepts/97_7.png differ diff --git a/concepts/98_0.png b/concepts/98_0.png new file mode 100644 index 0000000000000000000000000000000000000000..cf70e483eaab48ce65bac3cd31b0186d10ecabfc Binary files /dev/null and b/concepts/98_0.png differ diff --git a/concepts/98_1.png b/concepts/98_1.png new file mode 100644 index 0000000000000000000000000000000000000000..aaf86f0049972941b2b9021bf6873ff8f2911fa1 Binary files /dev/null and b/concepts/98_1.png differ diff --git a/concepts/98_2.png b/concepts/98_2.png new file mode 100644 index 0000000000000000000000000000000000000000..ccd7fac6721ebc2191b62c6f33f3ae56951bebbc Binary files /dev/null and b/concepts/98_2.png differ diff --git a/concepts/98_3.png b/concepts/98_3.png new file mode 100644 index 0000000000000000000000000000000000000000..cccbc92c5fe1fd2b4467e24c8f82382751766380 Binary files /dev/null and b/concepts/98_3.png differ diff --git a/concepts/98_4.png b/concepts/98_4.png new file mode 100644 index 0000000000000000000000000000000000000000..6f8366e7a40111ab920e2ed9734751871a9232cd Binary files /dev/null and b/concepts/98_4.png differ diff --git a/concepts/98_6.png b/concepts/98_6.png new file mode 100644 index 0000000000000000000000000000000000000000..793bed68e37052f610ae834398b1ee5ef3277d4a Binary files /dev/null and b/concepts/98_6.png differ diff --git a/concepts/98_7.png b/concepts/98_7.png new file mode 100644 index 0000000000000000000000000000000000000000..78fa99b7e19663ed1ba492de21c1f62b866240ec Binary files /dev/null and b/concepts/98_7.png differ diff --git a/concepts/98_8.png b/concepts/98_8.png new file mode 100644 index 0000000000000000000000000000000000000000..d812b6eac900ffbea510ada262199ef029070dae Binary files /dev/null and b/concepts/98_8.png differ diff --git a/concepts/99_0.png b/concepts/99_0.png new file mode 100644 index 0000000000000000000000000000000000000000..42b2206b195c7db45690efdc085af657602bf540 Binary files /dev/null and b/concepts/99_0.png differ diff --git a/concepts/99_1.png b/concepts/99_1.png new file mode 100644 index 0000000000000000000000000000000000000000..192bf7a1b22c446786adbc3d6b5ef53d39c4dc07 Binary files /dev/null and b/concepts/99_1.png differ diff --git a/concepts/99_16.png b/concepts/99_16.png new file mode 100644 index 0000000000000000000000000000000000000000..2299fcdfd4903783d715dd4fbb4c76d2dff4c792 Binary files /dev/null and b/concepts/99_16.png differ diff --git a/concepts/99_3.png b/concepts/99_3.png new file mode 100644 index 0000000000000000000000000000000000000000..02eb796533ae54ebc60442d7ff36b7f1892aab36 Binary files /dev/null and b/concepts/99_3.png differ diff --git a/concepts/99_4.png b/concepts/99_4.png new file mode 100644 index 0000000000000000000000000000000000000000..c1651a20483d366232d339d9a349a442c89b47d7 Binary files /dev/null and b/concepts/99_4.png differ diff --git a/concepts/99_5.png b/concepts/99_5.png new file mode 100644 index 0000000000000000000000000000000000000000..add187bb1926efe7f980181106e526ebecb64228 Binary files /dev/null and b/concepts/99_5.png differ diff --git a/concepts/99_8.png b/concepts/99_8.png new file mode 100644 index 0000000000000000000000000000000000000000..7d7139ab5e0b7766363c61ec421eab7671fcd290 Binary files /dev/null and b/concepts/99_8.png differ diff --git a/concepts/99_9.png b/concepts/99_9.png new file mode 100644 index 0000000000000000000000000000000000000000..171f3c83e855c76cabdc91b36e28f6d84214b51b Binary files /dev/null and b/concepts/99_9.png differ diff --git a/concepts/9_0.png b/concepts/9_0.png new file mode 100644 index 0000000000000000000000000000000000000000..98f37c83ec93f645699ea8ff0f8556373be35e47 Binary files /dev/null and b/concepts/9_0.png differ diff --git a/concepts/9_1.png b/concepts/9_1.png new file mode 100644 index 0000000000000000000000000000000000000000..b8859edeb9a8c6475a9a3a5ac9a02400ab12fcaf Binary files /dev/null and b/concepts/9_1.png differ diff --git a/concepts/9_2.png b/concepts/9_2.png new file mode 100644 index 0000000000000000000000000000000000000000..9e4e09831e1b0514388ff09a8256d418fe3e7fa0 Binary files /dev/null and b/concepts/9_2.png differ diff --git a/concepts/9_3.png b/concepts/9_3.png new file mode 100644 index 0000000000000000000000000000000000000000..c0d8f04d75c1e9079018437e63e19303eee5766a Binary files /dev/null and b/concepts/9_3.png differ diff --git a/concepts/9_4.png b/concepts/9_4.png new file mode 100644 index 0000000000000000000000000000000000000000..e68185a0371e010605b6d072e95d30b04bec47b6 Binary files /dev/null and b/concepts/9_4.png differ diff --git a/concepts/9_6.png b/concepts/9_6.png new file mode 100644 index 0000000000000000000000000000000000000000..e89c909705ca2b72eb1821a198d776904ec7c364 Binary files /dev/null and b/concepts/9_6.png differ diff --git a/concepts/9_7.png b/concepts/9_7.png new file mode 100644 index 0000000000000000000000000000000000000000..2af4186f21e8a18a77cbe9a3c887af0bc208bb90 Binary files /dev/null and b/concepts/9_7.png differ diff --git a/concepts/9_8.png b/concepts/9_8.png new file mode 100644 index 0000000000000000000000000000000000000000..2fa8cba44f958b6c0c3216eab781fe8a8ddc7083 Binary files /dev/null and b/concepts/9_8.png differ diff --git a/config.yaml b/config.yaml new file mode 100644 index 0000000000000000000000000000000000000000..2f61775c21e0f64d425aa9cd75dc2a1eca314a9c --- /dev/null +++ b/config.yaml @@ -0,0 +1,48 @@ +# Weights & Biases +USE_WANDB: True #@param {type:"boolean"} +WANDB_API_KEY: 'REPLACE_ME' #@param {type:"string"} + +# Data +DATASET_PATH: 'REPLACE_ME' #@param {type:"string"} +MIN_VERTEBRAE_LEVEL: 8 #@param {type:"number"} +INPUT_DIM: 3 #@param [2, 3] {allow-input: true} +INPUT_SIZE: 64 #@param {type:"slider", min:32, max:112, step:4} + +OVERSAMPLING: True +FOLD: 1 + +# Mask +# one of 'none', 'channel' (mask is additional input channel), 'apply' (single vertebra mask is applied to input), +# 'apply_all' (visible vertebra mask applied to input), 'crop' (mask is used to crop input) +MASK: 'none' + +# Whether coordinates are provided in additional channels +# See Liu, Rosanne, et al. "An intriguing failing of convolutional neural networks and the CoordConv solution" (https://arxiv.org/pdf/1807.03247.pdf) +COORDINATES: False + +# Whether to save the best-performing model (wrt validation F1) +SAVE_MODEL: False + +# Data Augmentation +TRANSFORMS: ['modelsgenesis', 'intensity', 'spatial3d-simple'] + +# Task +TASK: "detection" # "detection", "grading", "simple_grading" +LOSS: 'binary_cross_entropy' # "ordinal_regression", "cross_entropy", "focal" + +# Model +BATCH_SIZE: 16 #@param {type:"slider", min:32, max:512, step:32} +LEARNING_RATE: 0.001 #@param {type:"number"} +# AUTO_LR_FIND = True #@param {type: 'boolean'} +DROPOUT: 0.3 #@param {type:"number"} +WEIGHTED_LOSS: True #@param {type:"boolean"} +EARLY_STOPPING_PATIENCE: 40 #@param {type:"number"} + +# Available backbones: +# - DenseNet121 +# - ModelsGenesis (3D) +# - UNet3D +MODEL_NAME: 'UNet3D' #@param ["DenseNet121"] {allow-input: true} + +# Identify all modules to freeze by name, e.g. ['down_tr64', 'down_tr128', 'down_tr256', 'down_tr512'] for Models Genesis/UNet3D +FROZEN_LAYERS: [] \ No newline at end of file diff --git a/data.py b/data.py new file mode 100644 index 0000000000000000000000000000000000000000..bb4b55c6eaaf4b97f804b5c9e22fb9dfcad1098c --- /dev/null +++ b/data.py @@ -0,0 +1,115 @@ +import pandas as pd +import os +from pathlib import Path +from monai.data import Dataset, DataLoader +import numpy as np +from torch.utils.data import Subset +import pytorch_lightning as pl +from torchsampler import ImbalancedDatasetSampler +from torch.utils.data.dataloader import default_collate + +from transforms import get_training_transforms, get_base_transforms + +class VerseDataModule(pl.LightningDataModule): + def __init__(self, hparams): + super().__init__() + self.save_hyperparameters(dict(hparams), logger=False) + self.data_dir = Path(self.hparams.dataset_path) + self.csv_path = self.data_dir / 'fxall_labels.csv' + + if "modelsgenesis" in hparams.transforms: + self.image_dir = self.data_dir / 'raw' + else: + self.image_dir = self.data_dir / 'ct' + + if not os.path.exists(self.image_dir): + # legacy support + self.image_dir = self.data_dir + self.csv_path = self.data_dir / 'slice_labels.csv' + + self.mask_dir = self.data_dir / 'seg' + if hparams.mask != 'none' and not os.path.exists(self.mask_dir): + raise RuntimeError("Configured to use masks, but 'seg' folder missing in dataset path") + + self.df = pd.read_csv(self.csv_path, index_col=0) + + # TODO temporary fix to check for non-existing files + if "path" in self.df.columns: + self.df = self.df[self.df["path"].apply(lambda p: os.path.exists(self.image_dir / p))] + + # FIXME slice_labels.csv provides the path in 'image', fxall_labels.csv in 'path' + if "image" not in self.df.columns: + self.df['image'] = self.df['path'] + + self.transforms = { + 'training': get_training_transforms(hparams, self.image_dir, self.mask_dir), + 'validation': get_base_transforms(hparams, self.image_dir, self.mask_dir), + 'test': get_base_transforms(hparams, self.image_dir, self.mask_dir) + } + + self.datasets = {} + self.idxs = {} + + def setup(self, stage=None): + # dropping samples without fracture grading + # graded_idxs = ~self.df.fx.isna() + # vertebrae_level_idxs = self.df.level_idx >= self.hparams.min_vertebrae_level + # included_idxs = graded_idxs & vertebrae_level_idxs + + if stage == 'fit' or stage is None: + phases = ['training', 'validation'] + else: + phases = ['test'] + + for split in phases: + # get official verse partitions + idxs = self.df[f'split_{self.hparams.fold}'] == split + # idxs = np.where(included_idxs & idxs)[0] + idxs = np.where(idxs)[0] + self.idxs[split] = idxs + self.datasets[split] = Dataset( + self.df.iloc[idxs].to_dict('records'), + transform=self.transforms[split] + ) + + def get_label(self, data): + train_df = self.df.iloc[self.idxs['training']] + grading = train_df.fx_grading + if self.hparams.task == 'detection': + return train_df.fx + elif self.hparams.task == 'grading': + return grading + elif self.hparams.task == 'simple_grading': + if grading in [2,3]: + return 1 + if grading>3: + return grading-2 + else: + return grading + + def train_dataloader(self): + return DataLoader( + self.datasets['training'], + batch_size=self.hparams.batch_size, + sampler=ImbalancedDatasetSampler( + num_samples=self.df.iloc[self.idxs['training']].fx.sum() * 2, + dataset=self.datasets['training'], + callback_get_label=self.get_label, + ) if self.hparams.oversampling else None, + num_workers=2, + shuffle=not self.hparams.oversampling + ) + + def val_dataloader(self): + return DataLoader( + self.datasets['validation'], + batch_size=self.hparams.batch_size, + num_workers=8, + ) + + def test_dataloader(self): + return DataLoader( + self.datasets['test'], + batch_size=self.hparams.batch_size, + num_workers=8, + ) diff --git a/examples/.gitattributes b/examples/.gitattributes new file mode 100644 index 0000000000000000000000000000000000000000..aaae91778657a3d4625f3980929a5769270433ff --- /dev/null +++ b/examples/.gitattributes @@ -0,0 +1,8 @@ +l3.npy filter=lfs diff=lfs merge=lfs -text +l5.npy filter=lfs diff=lfs merge=lfs -text +t11.npy filter=lfs diff=lfs merge=lfs -text +t6.npy filter=lfs diff=lfs merge=lfs -text +l1.npy filter=lfs diff=lfs merge=lfs -text +l1_osteoporotic.npy filter=lfs diff=lfs merge=lfs -text +l2.npy filter=lfs diff=lfs merge=lfs -text +l2_osteoporotic.npy filter=lfs diff=lfs merge=lfs -text diff --git a/examples/l5.npy b/examples/l5.npy new file mode 100644 index 0000000000000000000000000000000000000000..de02639306223326a1680f975a9f7a5391f695f4 --- /dev/null +++ b/examples/l5.npy @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:fa71021670b0c7c247d203717f54e359340e2c58c2b551404cc04e566d26eb0c +size 1769600 diff --git a/globals.yaml b/globals.yaml new file mode 100644 index 0000000000000000000000000000000000000000..e077592f5b002b6fa51809afb76f365b7b60daa6 --- /dev/null +++ b/globals.yaml @@ -0,0 +1,2 @@ +# Miscellaneous +MODELS_GENESIS_PATH: '.' \ No newline at end of file diff --git a/loss.py b/loss.py new file mode 100644 index 0000000000000000000000000000000000000000..2bd776dbf485060a753adffbba21e04ed6003b78 --- /dev/null +++ b/loss.py @@ -0,0 +1,82 @@ +from typing import Optional +import torch +import torch.nn.functional as F + +def get_breadstick_probabilities(logits): + # logits to linear projectsion to probabilities + projections = torch.sigmoid(logits) + batch_size, num_projections = projections.shape + num_classes = num_projections + 1 + probs = torch.zeros(batch_size, num_classes, dtype=projections.dtype, device=projections.device) + prob = 0 + for i in range(projections.shape[-1]): + prob = projections[:,i] * (1 - prob) + probs[:,i] = prob + probs[:, -1] = (1 - projections.select(-1, -1)) * prob + return probs + +def ordinal_regression_loss(logits, targets, tao=1, eta=0.15, class_weights=None): + ''' + ordinal regression loss based on this paper: + Liu, Xiaofeng, et al. "Unimodal regularized neuron stick-breaking for ordinal classification." Neurocomputing 388 (2020): 34-44. + + it is important to have N-1 logits with N classes + + ''' + probs = get_breadstick_probabilities(logits) + batch_size, num_classes = probs.shape + class_weights = class_weights if class_weights is not None else torch.ones(num_classes, device=logits.device) + + # cross entropy loss with unimodal regularization + # distribution of normalized exponential function + + q = torch.softmax( + torch.exp( + -torch.abs( + torch.arange(num_classes, device=targets.device).repeat(batch_size, 1) - targets.reshape(batch_size,1) + ) / tao + ), dim=-1 + ) + # smooth distribution with eta + + q = (1 - eta) * q + eta / num_classes + loss = torch.sum(class_weights * q * -torch.log(probs), dim=-1).mean() + + return loss + +# Adapted from https://github.com/kornia/kornia/blob/c2273bbfe152c86a48923e473a37c05e28f7fe43/kornia/losses/focal.py +def focal_loss(input: torch.Tensor, target: torch.Tensor, alpha: float = 0.25, gamma: Optional[float] = 2.0) -> torch.Tensor: + """Criterion that computes Focal loss. + According to Lin, Tsung-Yi, et al. "Focal Loss for Dense Object Detection". Proceedings of the IEEE international conference on computer vision (2017): 2980-2988, + the Focal loss is computed as follows: + .. math:: + \text{FL}(p_t) = -\alpha_t (1 - p_t)^{\gamma} \, \text{log}(p_t) + """ + assert input.size(0) == target.size(0) + + if len(input.shape) == 1: + # binary focal loss + probs_pos = torch.sigmoid(input) + probs_neg = torch.sigmoid(-input) + loss_tmp = -alpha * torch.pow(probs_neg, gamma) * target * F.logsigmoid(input) - (1 - alpha) * torch.pow(probs_pos, gamma) * (1.0 - target) * F.logsigmoid(-input) + + else: + assert len(input.shape) >= 2 + + assert target.size()[1:] == input.size()[2:] + + # compute softmax over the classes axis + input_soft: torch.Tensor = F.softmax(input, dim=1) + log_input_soft: torch.Tensor = F.log_softmax(input, dim=1) + + # create the labels one hot tensor + one_hot = torch.zeros((target.shape[0], input.shape[1]) + target.shape[1:], device=input.device, dtype=input.dtype) + target_one_hot: torch.Tensor = one_hot.scatter_(1, target.unsqueeze(1), 1.0) + 1e-6 + + # compute the actual focal loss + weight = torch.pow(-input_soft + 1.0, gamma) + + focal = -alpha * weight * log_input_soft + loss_tmp = torch.einsum('bc...,bc...->b...', (target_one_hot, focal)) + + return loss_tmp.mean() \ No newline at end of file diff --git a/model.py b/model.py new file mode 100644 index 0000000000000000000000000000000000000000..b603fe10adc7ff57611eb29ff3a8814cd1c56c40 --- /dev/null +++ b/model.py @@ -0,0 +1,181 @@ +from typing import List +import torch +import torch.nn.functional as F +import torchmetrics +import pytorch_lightning as pl +import matplotlib.pyplot as plt +import wandb +from tqdm import tqdm + +from backbones import get_backbone +from utils.confusion_viz import ConfusionVisualizer + +from utils.plots import get_confusion_matrix_figure +from utils.grad_cam import GradCAMBuilder + +from loss import ordinal_regression_loss, get_breadstick_probabilities, focal_loss +from utils.val_loop_hook import ValidationLoopHook + +class VerseFxClassifier(pl.LightningModule): + def __init__(self, hparams): + super().__init__() + self.save_hyperparameters(dict(hparams)) + self.backbone = get_backbone(self.hparams) + metric_args = dict(average='macro', num_classes=self.hparams.num_classes) + metrics = torchmetrics.MetricCollection([ + torchmetrics.Accuracy(**metric_args), + torchmetrics.F1(**metric_args), + torchmetrics.Precision(**metric_args), + torchmetrics.Recall(**metric_args) + ]) + self.train_metrics = metrics.clone(prefix='train/') + self.val_metrics = metrics.clone(prefix='val/') + + self.class_weights = None + + image_shape = (1 + (self.hparams.mask =='channel') + self.hparams.input_dim * self.hparams.coordinates,) + (self.hparams.input_size,) * self.hparams.input_dim + grad_cam_builder = GradCAMBuilder(image_shape, target_category=0 if self.hparams.task == 'detection' else None) + + confusion_visualizer = ConfusionVisualizer(image_shape, 2 if self.hparams.task == 'detection' else self.hparams.num_classes) + + self.validation_hooks: List[ValidationLoopHook] = [grad_cam_builder, confusion_visualizer] + + def get_class_weights(self, dm: pl.LightningDataModule): + targets = [] + for batch in tqdm(dm.train_dataloader(), desc="Determining class weights"): + targets.append(self.batch_to_targets(batch)) + targets = torch.cat(targets) + classes, counts = torch.unique(targets, return_counts=True) + + return (1 / counts) * torch.sum(counts) / classes.shape[0] + + def on_pretrain_routine_start(self): + # FIXME This is slightly inefficient if multiple GPUs are used as this routine + # is called once per device. There might be a better hook available. + super().on_pretrain_routine_start() + + if self.hparams.weighted_loss: + self.class_weights = self.get_class_weights(self.trainer.datamodule).to(self.device) + + if self.hparams.loss == 'binary_cross_entropy': + # Only keep the positive class weight + self.class_weights = self.class_weights[-1] + + def forward(self, x): + return self.backbone(x) + + def loss(self, logits, targets): + if self.hparams.loss == 'cross_entropy': + return F.cross_entropy(logits, targets, weight=self.class_weights) + elif self.hparams.loss == 'binary_cross_entropy': + return F.binary_cross_entropy_with_logits(logits.squeeze(-1), targets.float(), + pos_weight=self.class_weights) + elif self.hparams.loss == 'ordinal_regression': + return ordinal_regression_loss(logits, targets, class_weights=self.class_weights) + elif self.hparams.loss == 'focal': + return focal_loss(logits.squeeze(-1), targets.float()) + else: + raise ValueError + + def logits_to_predictions(self, logits): + if self.hparams.loss == 'binary_cross_entropy' or (self.hparams.loss == 'focal' and self.hparams.task == 'detection'): + probs = torch.sigmoid(logits.squeeze(-1)) + preds = probs.gt(0.5).long() + elif self.hparams.loss == 'cross_entropy' or self.hparams.loss == 'focal': + probs = torch.softmax(logits) + preds = probs.argmax(-1) + elif self.hparams.loss == 'ordinal_regression': + probs = get_breadstick_probabilities(logits) + preds = probs.argmax(-1) + else: + raise ValueError + + return probs, preds + + def batch_to_targets(self, batch): + if self.hparams.task == 'detection': + return batch['fx'].long() + elif self.hparams.task == 'grading': + return batch['fx_grading'].long() + elif self.hparams.task == 'simple_grading': + targets = batch['fx_grading'].long() + targets[torch.bitwise_or(targets==2, targets==3)] = 1 + targets[targets>3] -= 2 + return targets + + def training_step(self, batch, batch_idx): + logits = self(batch['image']) + targets = self.batch_to_targets(batch) + loss = self.loss(logits, targets) + probs, preds = self.logits_to_predictions(logits) + self.log("train/loss", loss, on_step=True, on_epoch=True, prog_bar=True, logger=True, batch_size=self.hparams.batch_size) + return {'loss': loss, 'probs': probs.detach(), 'preds': preds.detach(), 'targets': targets.detach()} + + def training_epoch_end(self, outputs): + outputs = {k: torch.cat([d[k] for d in outputs]) for k in outputs[0] if k != 'loss'} + metrics = self.train_metrics(outputs['probs'], outputs['targets']) + self.log_dict(metrics) + + targets_flat = outputs['targets'].cpu().numpy() + preds_flat = outputs['preds'].cpu().numpy() + + # sklearn confusion matrix + self.logger.experiment.log({ + "train/confusion_matrix": get_confusion_matrix_figure( + targets_flat, + preds_flat, + title="Training Confusion Matrix" + ) + }) + plt.close('all') + + def validation_step(self, batch, batch_idx): + logits = self(batch['image']) + targets = self.batch_to_targets(batch) + loss = self.loss(logits, targets) + probs, preds = self.logits_to_predictions(logits) + self.log("val/loss", loss, on_step=True, on_epoch=True, prog_bar=True, logger=True, batch_size=self.hparams.batch_size) + for val_hook in self.validation_hooks: + val_hook.process(batch, targets, logits, preds) + metrics = self.val_metrics(probs, targets) + self.log_dict(metrics) + return {'loss': loss, 'probs': probs.detach(), 'preds': preds.detach(), 'targets': targets.detach()} + + def validation_epoch_end(self, outputs): + outputs = {k: torch.cat([d[k] for d in outputs]) for k in outputs[0] if k != 'loss'} + metrics = self.val_metrics(outputs['probs'], outputs['targets']) + self.log_dict(metrics) + + targets_flat = outputs['targets'].cpu().numpy() + preds_flat = outputs['preds'].cpu().numpy() + + # sklearn confusion matrix + self.logger.experiment.log({ + "val/confusion_matrix": get_confusion_matrix_figure( + targets_flat, + preds_flat, + title="Validation Confusion Matrix", + ) + }) + plt.close('all') + # wandb confusion matrix + # print(targets_flat, targets_flat.squeeze(-1).shape, type(preds_flat[0])) + self.logger.experiment.log({ + "full_fx_grading": wandb.plot.confusion_matrix( + # probs=outputs['y_pred'], + preds=list(preds_flat), + y_true=list(targets_flat), + class_names=None, + ), + "epoch": self.current_epoch + }) + + def on_train_epoch_end(self): + # Trigger all validation hooks and reset them afterwards + for val_hook in self.validation_hooks: + val_hook.trigger(self) + val_hook.reset() + + def configure_optimizers(self): + optimizer = torch.optim.Adam(self.parameters(), lr=self.hparams.learning_rate) + return optimizer \ No newline at end of file diff --git a/moonlit-flower-278.ckpt b/moonlit-flower-278.ckpt new file mode 100644 index 0000000000000000000000000000000000000000..d848e369f13a5fdeb55df22ef4c4dc3574618007 --- /dev/null +++ b/moonlit-flower-278.ckpt @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:84d9c8edfebb6f8ff3c8e84105cb12d20b458ca3be45076565d8604abe46e982 +size 153434311 diff --git a/netdissect/LBFGS.py b/netdissect/LBFGS.py new file mode 100644 index 0000000000000000000000000000000000000000..c321f390d199b71ae30422cf3f1a0a9fb262a0a7 --- /dev/null +++ b/netdissect/LBFGS.py @@ -0,0 +1,1107 @@ +import torch +import numpy as np +from functools import reduce +from copy import deepcopy +from torch.optim import Optimizer + +#%% Helper Functions for L-BFGS + +def is_legal(v): + """ + Checks that tensor is not NaN or Inf. + + Inputs: + v (tensor): tensor to be checked + + """ + legal = not torch.isnan(v).any() and not torch.isinf(v) + + return legal + +def polyinterp(points, x_min_bound=None, x_max_bound=None, plot=False): + """ + Gives the minimizer and minimum of the interpolating polynomial over given points + based on function and derivative information. Defaults to bisection if no critical + points are valid. + + Based on polyinterp.m Matlab function in minFunc by Mark Schmidt with some slight + modifications. + + Implemented by: Hao-Jun Michael Shi and Dheevatsa Mudigere + Last edited 12/6/18. + + Inputs: + points (nparray): two-dimensional array with each point of form [x f g] + x_min_bound (float): minimum value that brackets minimum (default: minimum of points) + x_max_bound (float): maximum value that brackets minimum (default: maximum of points) + plot (bool): plot interpolating polynomial + + Outputs: + x_sol (float): minimizer of interpolating polynomial + F_min (float): minimum of interpolating polynomial + + Note: + . Set f or g to np.nan if they are unknown + + """ + no_points = points.shape[0] + order = np.sum(1 - np.isnan(points[:,1:3]).astype('int')) - 1 + + x_min = np.min(points[:, 0]) + x_max = np.max(points[:, 0]) + + # compute bounds of interpolation area + if(x_min_bound is None): + x_min_bound = x_min + if(x_max_bound is None): + x_max_bound = x_max + + # explicit formula for quadratic interpolation + if no_points == 2 and order == 2 and plot is False: + # Solution to quadratic interpolation is given by: + # a = -(f1 - f2 - g1(x1 - x2))/(x1 - x2)^2 + # x_min = x1 - g1/(2a) + # if x1 = 0, then is given by: + # x_min = - (g1*x2^2)/(2(f2 - f1 - g1*x2)) + + if(points[0, 0] == 0): + x_sol = -points[0, 2]*points[1, 0]**2/(2*(points[1, 1] - points[0, 1] - points[0, 2]*points[1, 0])) + else: + a = -(points[0, 1] - points[1, 1] - points[0, 2]*(points[0, 0] - points[1, 0]))/(points[0, 0] - points[1, 0])**2 + x_sol = points[0, 0] - points[0, 2]/(2*a) + + x_sol = np.minimum(np.maximum(x_min_bound, x_sol), x_max_bound) + + # explicit formula for cubic interpolation + elif no_points == 2 and order == 3 and plot is False: + # Solution to cubic interpolation is given by: + # d1 = g1 + g2 - 3((f1 - f2)/(x1 - x2)) + # d2 = sqrt(d1^2 - g1*g2) + # x_min = x2 - (x2 - x1)*((g2 + d2 - d1)/(g2 - g1 + 2*d2)) + d1 = points[0, 2] + points[1, 2] - 3*((points[0, 1] - points[1, 1])/(points[0, 0] - points[1, 0])) + d2 = np.sqrt(d1**2 - points[0, 2]*points[1, 2]) + if np.isreal(d2): + x_sol = points[1, 0] - (points[1, 0] - points[0, 0])*((points[1, 2] + d2 - d1)/(points[1, 2] - points[0, 2] + 2*d2)) + x_sol = np.minimum(np.maximum(x_min_bound, x_sol), x_max_bound) + else: + x_sol = (x_max_bound + x_min_bound)/2 + + # solve linear system + else: + # define linear constraints + A = np.zeros((0, order+1)) + b = np.zeros((0, 1)) + + # add linear constraints on function values + for i in range(no_points): + if not np.isnan(points[i, 1]): + constraint = np.zeros((1, order+1)) + for j in range(order, -1, -1): + constraint[0, order - j] = points[i, 0]**j + A = np.append(A, constraint, 0) + b = np.append(b, points[i, 1]) + + # add linear constraints on gradient values + for i in range(no_points): + if not np.isnan(points[i, 2]): + constraint = np.zeros((1, order+1)) + for j in range(order): + constraint[0, j] = (order-j)*points[i,0]**(order-j-1) + A = np.append(A, constraint, 0) + b = np.append(b, points[i, 2]) + + # check if system is solvable + if(A.shape[0] != A.shape[1] or np.linalg.matrix_rank(A) != A.shape[0]): + x_sol = (x_min_bound + x_max_bound)/2 + f_min = np.Inf + else: + # solve linear system for interpolating polynomial + coeff = np.linalg.solve(A, b) + + # compute critical points + dcoeff = np.zeros(order) + for i in range(len(coeff) - 1): + dcoeff[i] = coeff[i]*(order-i) + + crit_pts = np.array([x_min_bound, x_max_bound]) + crit_pts = np.append(crit_pts, points[:, 0]) + + if not np.isinf(dcoeff).any(): + roots = np.roots(dcoeff) + crit_pts = np.append(crit_pts, roots) + + # test critical points + f_min = np.Inf + x_sol = (x_min_bound + x_max_bound)/2 # defaults to bisection + for crit_pt in crit_pts: + if np.isreal(crit_pt) and crit_pt >= x_min_bound and crit_pt <= x_max_bound: + F_cp = np.polyval(coeff, crit_pt) + if np.isreal(F_cp) and F_cp < f_min: + x_sol = np.real(crit_pt) + f_min = np.real(F_cp) + + if (plot): + import matplotlib.pyplot as plt + plt.figure() + x = np.arange(x_min_bound, x_max_bound, (x_max_bound - x_min_bound)/10000) + f = np.polyval(coeff, x) + plt.plot(x, f) + plt.plot(x_sol, f_min, 'x') + + return x_sol + +#%% L-BFGS Optimizer + +class LBFGS(Optimizer): + """ + Implements the L-BFGS algorithm. Compatible with multi-batch and full-overlap + L-BFGS implementations and (stochastic) Powell damping. Partly based on the + original L-BFGS implementation in PyTorch, Mark Schmidt's minFunc MATLAB code, + and Michael Overton's weak Wolfe line search MATLAB code. + + Implemented by: Hao-Jun Michael Shi and Dheevatsa Mudigere + Last edited 12/6/18. + + Warnings: + . Does not support per-parameter options and parameter groups. + . All parameters have to be on a single device. + + Inputs: + lr (float): steplength or learning rate (default: 1) + history_size (int): update history size (default: 10) + line_search (str): designates line search to use (default: 'Wolfe') + Options: + 'None': uses steplength designated in algorithm + 'Armijo': uses Armijo backtracking line search + 'Wolfe': uses Armijo-Wolfe bracketing line search + dtype: data type (default: torch.float) + debug (bool): debugging mode + + References: + [1] Berahas, Albert S., Jorge Nocedal, and Martin Takác. "A Multi-Batch L-BFGS + Method for Machine Learning." Advances in Neural Information Processing + Systems. 2016. + [2] Bollapragada, Raghu, et al. "A Progressive Batching L-BFGS Method for Machine + Learning." International Conference on Machine Learning. 2018. + [3] Lewis, Adrian S., and Michael L. Overton. "Nonsmooth Optimization via Quasi-Newton + Methods." Mathematical Programming 141.1-2 (2013): 135-163. + [4] Liu, Dong C., and Jorge Nocedal. "On the Limited Memory BFGS Method for + Large Scale Optimization." Mathematical Programming 45.1-3 (1989): 503-528. + [5] Nocedal, Jorge. "Updating Quasi-Newton Matrices With Limited Storage." + Mathematics of Computation 35.151 (1980): 773-782. + [6] Nocedal, Jorge, and Stephen J. Wright. "Numerical Optimization." Springer New York, + 2006. + [7] Schmidt, Mark. "minFunc: Unconstrained Differentiable Multivariate Optimization + in Matlab." Software available at http://www.cs.ubc.ca/~schmidtm/Software/minFunc.html + (2005). + [8] Schraudolph, Nicol N., Jin Yu, and Simon Günter. "A Stochastic Quasi-Newton + Method for Online Convex Optimization." Artificial Intelligence and Statistics. + 2007. + [9] Wang, Xiao, et al. "Stochastic Quasi-Newton Methods for Nonconvex Stochastic + Optimization." SIAM Journal on Optimization 27.2 (2017): 927-956. + + """ + + def __init__(self, params, lr=1, history_size=10, line_search='Wolfe', + dtype=torch.float, debug=False): + + # ensure inputs are valid + if not 0.0 <= lr: + raise ValueError("Invalid learning rate: {}".format(lr)) + if not 0 <= history_size: + raise ValueError("Invalid history size: {}".format(history_size)) + if line_search not in ['Armijo', 'Wolfe', 'None']: + raise ValueError("Invalid line search: {}".format(line_search)) + + defaults = dict(lr=lr, history_size=history_size, line_search=line_search, + dtype=dtype, debug=debug) + super(LBFGS, self).__init__(params, defaults) + + if len(self.param_groups) != 1: + raise ValueError("L-BFGS doesn't support per-parameter options " + "(parameter groups)") + + self._params = self.param_groups[0]['params'] + self._numel_cache = None + + state = self.state['global_state'] + state.setdefault('n_iter', 0) + state.setdefault('curv_skips', 0) + state.setdefault('fail_skips', 0) + state.setdefault('H_diag',1) + state.setdefault('fail', True) + + state['old_dirs'] = [] + state['old_stps'] = [] + + def _numel(self): + if self._numel_cache is None: + self._numel_cache = reduce(lambda total, p: total + p.numel(), self._params, 0) + return self._numel_cache + + def _gather_flat_grad(self): + views = [] + for p in self._params: + if p.grad is None: + view = p.data.new(p.data.numel()).zero_() + elif p.grad.data.is_sparse: + view = p.grad.data.to_dense().view(-1) + else: + view = p.grad.data.view(-1) + views.append(view) + return torch.cat(views, 0) + + def _add_update(self, step_size, update): + offset = 0 + for p in self._params: + numel = p.numel() + # view as to avoid deprecated pointwise semantics + p.data.add_(step_size, update[offset:offset + numel].view_as(p.data)) + offset += numel + assert offset == self._numel() + + def _copy_params(self): + current_params = [] + for param in self._params: + current_params.append(deepcopy(param.data)) + return current_params + + def _load_params(self, current_params): + i = 0 + for param in self._params: + param.data[:] = current_params[i] + i += 1 + + def line_search(self, line_search): + """ + Switches line search option. + + Inputs: + line_search (str): designates line search to use + Options: + 'None': uses steplength designated in algorithm + 'Armijo': uses Armijo backtracking line search + 'Wolfe': uses Armijo-Wolfe bracketing line search + + """ + + group = self.param_groups[0] + group['line_search'] = line_search + + return + + def two_loop_recursion(self, vec): + """ + Performs two-loop recursion on given vector to obtain Hv. + + Inputs: + vec (tensor): 1-D tensor to apply two-loop recursion to + + Output: + r (tensor): matrix-vector product Hv + + """ + + group = self.param_groups[0] + history_size = group['history_size'] + + state = self.state['global_state'] + old_dirs = state.get('old_dirs') # change in gradients + old_stps = state.get('old_stps') # change in iterates + H_diag = state.get('H_diag') + + # compute the product of the inverse Hessian approximation and the gradient + num_old = len(old_dirs) + + if 'rho' not in state: + state['rho'] = [None] * history_size + state['alpha'] = [None] * history_size + rho = state['rho'] + alpha = state['alpha'] + + for i in range(num_old): + rho[i] = 1. / old_stps[i].dot(old_dirs[i]) + + q = vec + for i in range(num_old - 1, -1, -1): + alpha[i] = old_dirs[i].dot(q) * rho[i] + q.add_(-alpha[i], old_stps[i]) + + # multiply by initial Hessian + # r/d is the final direction + r = torch.mul(q, H_diag) + for i in range(num_old): + beta = old_stps[i].dot(r) * rho[i] + r.add_(alpha[i] - beta, old_dirs[i]) + + return r + + def curvature_update(self, flat_grad, eps=1e-2, damping=False): + """ + Performs curvature update. + + Inputs: + flat_grad (tensor): 1-D tensor of flattened gradient for computing + gradient difference with previously stored gradient + eps (float): constant for curvature pair rejection or damping (default: 1e-2) + damping (bool): flag for using Powell damping (default: False) + """ + + assert len(self.param_groups) == 1 + + # load parameters + if(eps <= 0): + raise(ValueError('Invalid eps; must be positive.')) + + group = self.param_groups[0] + history_size = group['history_size'] + debug = group['debug'] + + # variables cached in state (for tracing) + state = self.state['global_state'] + fail = state.get('fail') + + # check if line search failed + if not fail: + + d = state.get('d') + t = state.get('t') + old_dirs = state.get('old_dirs') + old_stps = state.get('old_stps') + H_diag = state.get('H_diag') + prev_flat_grad = state.get('prev_flat_grad') + Bs = state.get('Bs') + + # compute y's + y = flat_grad.sub(prev_flat_grad) + s = d.mul(t) + sBs = s.dot(Bs) + ys = y.dot(s) # y*s + + # update L-BFGS matrix + if ys > eps*sBs or damping == True: + + # perform Powell damping + if damping == True and ys < eps*sBs: + if debug: + print('Applying Powell damping...') + theta = ((1-eps)*sBs)/(sBs - ys) + y = theta*y + (1-theta)*Bs + + # updating memory + if len(old_dirs) == history_size: + # shift history by one (limited-memory) + old_dirs.pop(0) + old_stps.pop(0) + + # store new direction/step + old_dirs.append(s) + old_stps.append(y) + + # update scale of initial Hessian approximation + H_diag = ys / y.dot(y) # (y*y) + + state['old_dirs'] = old_dirs + state['old_stps'] = old_stps + state['H_diag'] = H_diag + + else: + # save skip + state['curv_skips'] += 1 + if debug: + print('Curvature pair skipped due to failed criterion') + + else: + # save skip + state['fail_skips'] += 1 + if debug: + print('Line search failed; curvature pair update skipped') + + return + + def _step(self, p_k, g_Ok, g_Sk=None, options={}): + """ + Performs a single optimization step. + + Inputs: + p_k (tensor): 1-D tensor specifying search direction + g_Ok (tensor): 1-D tensor of flattened gradient over overlap O_k used + for gradient differencing in curvature pair update + g_Sk (tensor): 1-D tensor of flattened gradient over full sample S_k + used for curvature pair damping or rejection criterion, + if None, will use g_Ok (default: None) + options (dict): contains options for performing line search + + Options for Armijo backtracking line search: + 'closure' (callable): reevaluates model and returns function value + 'current_loss' (tensor): objective value at current iterate (default: F(x_k)) + 'gtd' (tensor): inner product g_Ok'd in line search (default: g_Ok'd) + 'eta' (tensor): factor for decreasing steplength > 0 (default: 2) + 'c1' (tensor): sufficient decrease constant in (0, 1) (default: 1e-4) + 'max_ls' (int): maximum number of line search steps permitted (default: 10) + 'interpolate' (bool): flag for using interpolation (default: True) + 'inplace' (bool): flag for inplace operations (default: True) + 'ls_debug' (bool): debugging mode for line search + + Options for Wolfe line search: + 'closure' (callable): reevaluates model and returns function value + 'current_loss' (tensor): objective value at current iterate (default: F(x_k)) + 'gtd' (tensor): inner product g_Ok'd in line search (default: g_Ok'd) + 'eta' (float): factor for extrapolation (default: 2) + 'c1' (float): sufficient decrease constant in (0, 1) (default: 1e-4) + 'c2' (float): curvature condition constant in (0, 1) (default: 0.9) + 'max_ls' (int): maximum number of line search steps permitted (default: 10) + 'interpolate' (bool): flag for using interpolation (default: True) + 'inplace' (bool): flag for inplace operations (default: True) + 'ls_debug' (bool): debugging mode for line search + + Outputs (depends on line search): + . No line search: + t (float): steplength + . Armijo backtracking line search: + F_new (tensor): loss function at new iterate + t (tensor): final steplength + ls_step (int): number of backtracks + closure_eval (int): number of closure evaluations + desc_dir (bool): descent direction flag + True: p_k is descent direction with respect to the line search + function + False: p_k is not a descent direction with respect to the line + search function + fail (bool): failure flag + True: line search reached maximum number of iterations, failed + False: line search succeeded + . Wolfe line search: + F_new (tensor): loss function at new iterate + g_new (tensor): gradient at new iterate + t (float): final steplength + ls_step (int): number of backtracks + closure_eval (int): number of closure evaluations + grad_eval (int): number of gradient evaluations + desc_dir (bool): descent direction flag + True: p_k is descent direction with respect to the line search + function + False: p_k is not a descent direction with respect to the line + search function + fail (bool): failure flag + True: line search reached maximum number of iterations, failed + False: line search succeeded + + Notes: + . If encountering line search failure in the deterministic setting, one + should try increasing the maximum number of line search steps max_ls. + + """ + + assert len(self.param_groups) == 1 + + # load parameter options + group = self.param_groups[0] + lr = group['lr'] + line_search = group['line_search'] + dtype = group['dtype'] + debug = group['debug'] + + # variables cached in state (for tracing) + state = self.state['global_state'] + d = state.get('d') + t = state.get('t') + prev_flat_grad = state.get('prev_flat_grad') + Bs = state.get('Bs') + + # keep track of nb of iterations + state['n_iter'] += 1 + + # set search direction + d = p_k + + # modify previous gradient + if prev_flat_grad is None: + prev_flat_grad = g_Ok.clone() + else: + prev_flat_grad.copy_(g_Ok) + + # set initial step size + t = lr + + # closure evaluation counter + closure_eval = 0 + + if g_Sk is None: + g_Sk = g_Ok.clone() + + # perform Armijo backtracking line search + if(line_search == 'Armijo'): + + # load options + if(options): + if('closure' not in options.keys()): + raise(ValueError('closure option not specified.')) + else: + closure = options['closure'] + + if('gtd' not in options.keys()): + gtd = g_Ok.dot(d) + else: + gtd = options['gtd'] + + if('current_loss' not in options.keys()): + F_k = closure() + closure_eval += 1 + else: + F_k = options['current_loss'] + + if('eta' not in options.keys()): + eta = 2 + elif(options['eta'] <= 0): + raise(ValueError('Invalid eta; must be positive.')) + else: + eta = options['eta'] + + if('c1' not in options.keys()): + c1 = 1e-4 + elif(options['c1'] >= 1 or options['c1'] <= 0): + raise(ValueError('Invalid c1; must be strictly between 0 and 1.')) + else: + c1 = options['c1'] + + if('max_ls' not in options.keys()): + max_ls = 10 + elif(options['max_ls'] <= 0): + raise(ValueError('Invalid max_ls; must be positive.')) + else: + max_ls = options['max_ls'] + + if('interpolate' not in options.keys()): + interpolate = True + else: + interpolate = options['interpolate'] + + if('inplace' not in options.keys()): + inplace = True + else: + inplace = options['inplace'] + + if('ls_debug' not in options.keys()): + ls_debug = False + else: + ls_debug = options['ls_debug'] + + else: + raise(ValueError('Options are not specified; need closure evaluating function.')) + + # initialize values + if(interpolate): + if(torch.cuda.is_available()): + F_prev = torch.tensor(np.nan, dtype=dtype).cuda() + else: + F_prev = torch.tensor(np.nan, dtype=dtype) + + ls_step = 0 + t_prev = 0 # old steplength + fail = False # failure flag + + # begin print for debug mode + if ls_debug: + print('==================================== Begin Armijo line search ===================================') + print('F(x): %.8e g*d: %.8e' %(F_k, gtd)) + + # check if search direction is descent direction + if gtd >= 0: + desc_dir = False + if debug: + print('Not a descent direction!') + else: + desc_dir = True + + # store values if not in-place + if not inplace: + current_params = self._copy_params() + + # update and evaluate at new point + self._add_update(t, d) + F_new = closure() + closure_eval += 1 + + # print info if debugging + if(ls_debug): + print('LS Step: %d t: %.8e F(x+td): %.8e F-c1*t*g*d: %.8e F(x): %.8e' + %(ls_step, t, F_new, F_k + c1*t*gtd, F_k)) + + # check Armijo condition + while F_new > F_k + c1*t*gtd or not is_legal(F_new): + + # check if maximum number of iterations reached + if(ls_step >= max_ls): + if inplace: + self._add_update(-t, d) + else: + self._load_params(current_params) + + t = 0 + F_new = closure() + closure_eval += 1 + fail = True + break + + else: + # store current steplength + t_new = t + + # compute new steplength + + # if first step or not interpolating, then multiply by factor + if(ls_step == 0 or not interpolate or not is_legal(F_new)): + t = t/eta + + # if second step, use function value at new point along with + # gradient and function at current iterate + elif(ls_step == 1 or not is_legal(F_prev)): + t = polyinterp(np.array([[0, F_k.item(), gtd.item()], [t_new, F_new.item(), np.nan]])) + + # otherwise, use function values at new point, previous point, + # and gradient and function at current iterate + else: + t = polyinterp(np.array([[0, F_k.item(), gtd.item()], [t_new, F_new.item(), np.nan], + [t_prev, F_prev.item(), np.nan]])) + + # if values are too extreme, adjust t + if(interpolate): + if(t < 1e-3*t_new): + t = 1e-3*t_new + elif(t > 0.6*t_new): + t = 0.6*t_new + + # store old point + F_prev = F_new + t_prev = t_new + + # update iterate and reevaluate + if inplace: + self._add_update(t-t_new, d) + else: + self._load_params(current_params) + self._add_update(t, d) + + F_new = closure() + closure_eval += 1 + ls_step += 1 # iterate + + # print info if debugging + if(ls_debug): + print('LS Step: %d t: %.8e F(x+td): %.8e F-c1*t*g*d: %.8e F(x): %.8e' + %(ls_step, t, F_new, F_k + c1*t*gtd, F_k)) + + # store Bs + if Bs is None: + Bs = (g_Sk.mul(-t)).clone() + else: + Bs.copy_(g_Sk.mul(-t)) + + # print final steplength + if ls_debug: + print('Final Steplength:', t) + print('===================================== End Armijo line search ====================================') + + state['d'] = d + state['prev_flat_grad'] = prev_flat_grad + state['t'] = t + state['Bs'] = Bs + state['fail'] = fail + + return F_new, t, ls_step, closure_eval, desc_dir, fail + + # perform weak Wolfe line search + elif(line_search == 'Wolfe'): + + # load options + if(options): + if('closure' not in options.keys()): + raise(ValueError('closure option not specified.')) + else: + closure = options['closure'] + + if('current_loss' not in options.keys()): + F_k = closure() + closure_eval += 1 + else: + F_k = options['current_loss'] + + if('gtd' not in options.keys()): + gtd = g_Ok.dot(d) + else: + gtd = options['gtd'] + + if('eta' not in options.keys()): + eta = 2 + elif(options['eta'] <= 1): + raise(ValueError('Invalid eta; must be greater than 1.')) + else: + eta = options['eta'] + + if('c1' not in options.keys()): + c1 = 1e-4 + elif(options['c1'] >= 1 or options['c1'] <= 0): + raise(ValueError('Invalid c1; must be strictly between 0 and 1.')) + else: + c1 = options['c1'] + + if('c2' not in options.keys()): + c2 = 0.9 + elif(options['c2'] >= 1 or options['c2'] <= 0): + raise(ValueError('Invalid c2; must be strictly between 0 and 1.')) + elif(options['c2'] <= c1): + raise(ValueError('Invalid c2; must be strictly larger than c1.')) + else: + c2 = options['c2'] + + if('max_ls' not in options.keys()): + max_ls = 10 + elif(options['max_ls'] <= 0): + raise(ValueError('Invalid max_ls; must be positive.')) + else: + max_ls = options['max_ls'] + + if('interpolate' not in options.keys()): + interpolate = True + else: + interpolate = options['interpolate'] + + if('inplace' not in options.keys()): + inplace = True + else: + inplace = options['inplace'] + + if('ls_debug' not in options.keys()): + ls_debug = False + else: + ls_debug = options['ls_debug'] + + else: + raise(ValueError('Options are not specified; need closure evaluating function.')) + + # initialize counters + ls_step = 0 + grad_eval = 0 # tracks gradient evaluations + t_prev = 0 # old steplength + + # initialize bracketing variables and flag + alpha = 0 + beta = float('Inf') + fail = False + + # initialize values for line search + if(interpolate): + F_a = F_k + g_a = gtd + + if(torch.cuda.is_available()): + F_b = torch.tensor(np.nan, dtype=dtype).cuda() + g_b = torch.tensor(np.nan, dtype=dtype).cuda() + else: + F_b = torch.tensor(np.nan, dtype=dtype) + g_b = torch.tensor(np.nan, dtype=dtype) + + # begin print for debug mode + if ls_debug: + print('==================================== Begin Wolfe line search ====================================') + print('F(x): %.8e g*d: %.8e' %(F_k, gtd)) + + # check if search direction is descent direction + if gtd >= 0: + desc_dir = False + if debug: + print('Not a descent direction!') + else: + desc_dir = True + + # store values if not in-place + if not inplace: + current_params = self._copy_params() + + # update and evaluate at new point + self._add_update(t, d) + F_new = closure() + closure_eval += 1 + + # main loop + while True: + + # check if maximum number of line search steps have been reached + if(ls_step >= max_ls): + if inplace: + self._add_update(-t, d) + else: + self._load_params(current_params) + + t = 0 + F_new = closure() + F_new.backward() + g_new = self._gather_flat_grad() + closure_eval += 1 + grad_eval += 1 + fail = True + break + + # print info if debugging + if(ls_debug): + print('LS Step: %d t: %.8e alpha: %.8e beta: %.8e' + %(ls_step, t, alpha, beta)) + print('Armijo: F(x+td): %.8e F-c1*t*g*d: %.8e F(x): %.8e' + %(F_new, F_k + c1*t*gtd, F_k)) + + # check Armijo condition + if(F_new > F_k + c1*t*gtd): + + # set upper bound + beta = t + t_prev = t + + # update interpolation quantities + if(interpolate): + F_b = F_new + if(torch.cuda.is_available()): + g_b = torch.tensor(np.nan, dtype=dtype).cuda() + else: + g_b = torch.tensor(np.nan, dtype=dtype) + + else: + + # compute gradient + F_new.backward() + g_new = self._gather_flat_grad() + grad_eval += 1 + gtd_new = g_new.dot(d) + + # print info if debugging + if(ls_debug): + print('Wolfe: g(x+td)*d: %.8e c2*g*d: %.8e gtd: %.8e' + %(gtd_new, c2*gtd, gtd)) + + # check curvature condition + if(gtd_new < c2*gtd): + + # set lower bound + alpha = t + t_prev = t + + # update interpolation quantities + if(interpolate): + F_a = F_new + g_a = gtd_new + + else: + break + + # compute new steplength + + # if first step or not interpolating, then bisect or multiply by factor + if(not interpolate or not is_legal(F_b)): + if(beta == float('Inf')): + t = eta*t + else: + t = (alpha + beta)/2.0 + + # otherwise interpolate between a and b + else: + t = polyinterp(np.array([[alpha, F_a.item(), g_a.item()],[beta, F_b.item(), g_b.item()]])) + + # if values are too extreme, adjust t + if(beta == float('Inf')): + if(t > 2*eta*t_prev): + t = 2*eta*t_prev + elif(t < eta*t_prev): + t = eta*t_prev + else: + if(t < alpha + 0.2*(beta - alpha)): + t = alpha + 0.2*(beta - alpha) + elif(t > (beta - alpha)/2.0): + t = (beta - alpha)/2.0 + + # if we obtain nonsensical value from interpolation + if(t <= 0): + t = (beta - alpha)/2.0 + + # update parameters + if inplace: + self._add_update(t - t_prev, d) + else: + self._load_params(current_params) + self._add_update(t, d) + + # evaluate closure + F_new = closure() + closure_eval += 1 + ls_step += 1 + + # store Bs + if Bs is None: + Bs = (g_Sk.mul(-t)).clone() + else: + Bs.copy_(g_Sk.mul(-t)) + + # print final steplength + if ls_debug: + print('Final Steplength:', t) + print('===================================== End Wolfe line search =====================================') + + state['d'] = d + state['prev_flat_grad'] = prev_flat_grad + state['t'] = t + state['Bs'] = Bs + state['fail'] = fail + + return F_new, g_new, t, ls_step, closure_eval, grad_eval, desc_dir, fail + + else: + + # perform update + self._add_update(t, d) + + # store Bs + if Bs is None: + Bs = (g_Sk.mul(-t)).clone() + else: + Bs.copy_(g_Sk.mul(-t)) + + state['d'] = d + state['prev_flat_grad'] = prev_flat_grad + state['t'] = t + state['Bs'] = Bs + state['fail'] = False + + return t + + def step(self, p_k, g_Ok, g_Sk=None, options={}): + return self._step(p_k, g_Ok, g_Sk, options) + +#%% Full-Batch (Deterministic) L-BFGS Optimizer (Wrapper) + +class FullBatchLBFGS(LBFGS): + """ + Implements full-batch or deterministic L-BFGS algorithm. Compatible with + Powell damping. Can be used when evaluating a deterministic function and + gradient. Wraps the LBFGS optimizer. Performs the two-loop recursion, + updating, and curvature updating in a single step. + + Implemented by: Hao-Jun Michael Shi and Dheevatsa Mudigere + Last edited 11/15/18. + + Warnings: + . Does not support per-parameter options and parameter groups. + . All parameters have to be on a single device. + + Inputs: + lr (float): steplength or learning rate (default: 1) + history_size (int): update history size (default: 10) + line_search (str): designates line search to use (default: 'Wolfe') + Options: + 'None': uses steplength designated in algorithm + 'Armijo': uses Armijo backtracking line search + 'Wolfe': uses Armijo-Wolfe bracketing line search + dtype: data type (default: torch.float) + debug (bool): debugging mode + + """ + + def __init__(self, params, lr=1, history_size=10, line_search='Wolfe', + dtype=torch.float, debug=False): + super(FullBatchLBFGS, self).__init__(params, lr, history_size, line_search, + dtype, debug) + + def step(self, options={}): + """ + Performs a single optimization step. + + Inputs: + options (dict): contains options for performing line search + + General Options: + 'eps' (float): constant for curvature pair rejection or damping (default: 1e-2) + 'damping' (bool): flag for using Powell damping (default: False) + + Options for Armijo backtracking line search: + 'closure' (callable): reevaluates model and returns function value + 'current_loss' (tensor): objective value at current iterate (default: F(x_k)) + 'gtd' (tensor): inner product g_Ok'd in line search (default: g_Ok'd) + 'eta' (tensor): factor for decreasing steplength > 0 (default: 2) + 'c1' (tensor): sufficient decrease constant in (0, 1) (default: 1e-4) + 'max_ls' (int): maximum number of line search steps permitted (default: 10) + 'interpolate' (bool): flag for using interpolation (default: True) + 'inplace' (bool): flag for inplace operations (default: True) + 'ls_debug' (bool): debugging mode for line search + + Options for Wolfe line search: + 'closure' (callable): reevaluates model and returns function value + 'current_loss' (tensor): objective value at current iterate (default: F(x_k)) + 'gtd' (tensor): inner product g_Ok'd in line search (default: g_Ok'd) + 'eta' (float): factor for extrapolation (default: 2) + 'c1' (float): sufficient decrease constant in (0, 1) (default: 1e-4) + 'c2' (float): curvature condition constant in (0, 1) (default: 0.9) + 'max_ls' (int): maximum number of line search steps permitted (default: 10) + 'interpolate' (bool): flag for using interpolation (default: True) + 'inplace' (bool): flag for inplace operations (default: True) + 'ls_debug' (bool): debugging mode for line search + + Outputs (depends on line search): + . No line search: + t (float): steplength + . Armijo backtracking line search: + F_new (tensor): loss function at new iterate + t (tensor): final steplength + ls_step (int): number of backtracks + closure_eval (int): number of closure evaluations + desc_dir (bool): descent direction flag + True: p_k is descent direction with respect to the line search + function + False: p_k is not a descent direction with respect to the line + search function + fail (bool): failure flag + True: line search reached maximum number of iterations, failed + False: line search succeeded + . Wolfe line search: + F_new (tensor): loss function at new iterate + g_new (tensor): gradient at new iterate + t (float): final steplength + ls_step (int): number of backtracks + closure_eval (int): number of closure evaluations + grad_eval (int): number of gradient evaluations + desc_dir (bool): descent direction flag + True: p_k is descent direction with respect to the line search + function + False: p_k is not a descent direction with respect to the line + search function + fail (bool): failure flag + True: line search reached maximum number of iterations, failed + False: line search succeeded + + Notes: + . If encountering line search failure in the deterministic setting, one + should try increasing the maximum number of line search steps max_ls. + + """ + + # load options for damping and eps + if('damping' not in options.keys()): + damping = False + else: + damping = options['damping'] + + if('eps' not in options.keys()): + eps = 1e-2 + else: + eps = options['eps'] + + # gather gradient + grad = self._gather_flat_grad() + + # update curvature if after 1st iteration + state = self.state['global_state'] + if(state['n_iter'] > 0): + self.curvature_update(grad, eps, damping) + + # compute search direction + p = self.two_loop_recursion(-grad) + + # take step + return self._step(p, grad, options=options) diff --git a/netdissect/README.md b/netdissect/README.md new file mode 100644 index 0000000000000000000000000000000000000000..f49a7f77264cb1ebed19cb96eaf376b55fa2bf78 --- /dev/null +++ b/netdissect/README.md @@ -0,0 +1 @@ +The code for network dissection in this folder is taken from the original implementation here: https://github.com/davidbau/dissect \ No newline at end of file diff --git a/netdissect/__init__.py b/netdissect/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..89e9b6988092e8fa287491afabe704a6d8a8222b --- /dev/null +++ b/netdissect/__init__.py @@ -0,0 +1,82 @@ +''' +Netdissect package. + +To run dissection: + +1. Load up the convolutional model you wish to dissect, and wrap it + in an InstrumentedModel. Call imodel.retain_layers([layernames,..]) + to analyze a specified set of layers. +2. Load the segmentation dataset using the BrodenDataset class; + use the transform_image argument to normalize images to be + suitable for the model, or the size argument to truncate the dataset. +3. Write a function to recover the original image (with RGB scaled to + [0...1]) given a normalized dataset image; ReverseNormalize in this + package inverts transforms.Normalize for this purpose. +4. Choose a directory in which to write the output, and call + dissect(outdir, model, dataset). + +Example: + + from netdissect import InstrumentedModel, dissect + from netdissect import BrodenDataset, ReverseNormalize + + model = InstrumentedModel(load_my_model()) + model.eval() + model.cuda() + model.retain_layers(['conv1', 'conv2', 'conv3', 'conv4', 'conv5']) + bds = BrodenDataset('datasets/broden1_227', + transform_image=transforms.Compose([ + transforms.ToTensor(), + transforms.Normalize(IMAGE_MEAN, IMAGE_STDEV)]), + size=1000) + dissect('result/dissect', model, bds, + recover_image=ReverseNormalize(IMAGE_MEAN, IMAGE_STDEV), + examples_per_unit=10) +''' + +__all__ = [ + 'actviz', + 'autoeval', + 'bargraph', + 'broden', + 'customnet', + 'easydict', + 'encoder_loss', + 'encoder_net', + 'evalablate', + 'frechet_distance', + 'fsd', + 'fullablate', + 'imgsave', + 'imgviz', + 'invert', + 'LBFGS', + 'make_z_dataset', + 'modelconfig', + 'multilayer_graph', + 'nethook', + 'oldalexnet', + 'oldresnet152', + 'oldvgg16', + 'optimize_residuals', + 'optimize_z_lbfgs', + 'parallelfolder', + 'pbar', + 'pidfile', + 'plotutil', + 'proggan', + 'renormalize', + 'runningstats', + 'samplegan', + 'sampler', + 'segdata', + 'segmenter', + 'segviz', + 'setting', + 'show', + 'statedict', + 'tally', + 'upsample', + 'workerpool', + 'zdataset', +] diff --git a/netdissect/__main__.py b/netdissect/__main__.py new file mode 100644 index 0000000000000000000000000000000000000000..12e34d4b10e9c93e4fe0607a6b2f614a257738ec --- /dev/null +++ b/netdissect/__main__.py @@ -0,0 +1,431 @@ +import torch, sys, os, argparse, textwrap, numbers, numpy, json, PIL +from torchvision import transforms +from torch.utils.data import TensorDataset +from netdissect import pbar +from netdissect import InstrumentedModel, BrodenDataset, dissect +from netdissect import MultiSegmentDataset, GeneratorSegRunner +from netdissect import ImageOnlySegRunner +from netdissect.parallelfolder import ParallelImageFolders +from netdissect.zdataset import z_dataset_for_model +from netdissect.autoeval import autoimport_eval +from netdissect.modelconfig import create_instrumented_model +from netdissect.pidfile import exit_if_job_done, mark_job_done + +help_epilog = '''\ +Example: to dissect three layers of the pretrained alexnet in torchvision: + +python -m netdissect \\ + --model "torchvision.models.alexnet(pretrained=True)" \\ + --layers features.6:conv3 features.8:conv4 features.10:conv5 \\ + --imgsize 227 \\ + --outdir dissect/alexnet-imagenet + +To dissect a progressive GAN model: + +python -m netdissect \\ + --model "proggan.from_pth_file('model/churchoutdoor.pth')" \\ + --gan +''' + +def main(): + # Training settings + def strpair(arg): + p = tuple(arg.split(':')) + if len(p) == 1: + p = p + p + return p + def intpair(arg): + p = arg.split(',') + if len(p) == 1: + p = p + p + return tuple(int(v) for v in p) + + parser = argparse.ArgumentParser(description='Net dissect utility', + prog='python -m netdissect', + epilog=textwrap.dedent(help_epilog), + formatter_class=argparse.RawDescriptionHelpFormatter) + parser.add_argument('--model', type=str, default=None, + help='constructor for the model to test') + parser.add_argument('--pthfile', type=str, default=None, + help='filename of .pth file for the model') + parser.add_argument('--unstrict', action='store_true', default=False, + help='ignore unexpected pth parameters') + parser.add_argument('--modelkey', type=str, default=None, + help='key within pthfile containing state_dict') + parser.add_argument('--submodule', type=str, default=None, + help='submodule to load from pthfile state dict') + parser.add_argument('--outdir', type=str, default='dissect', + help='directory for dissection output') + parser.add_argument('--layers', type=strpair, nargs='+', + help='space-separated list of layer names to dissect' + + ', in the form layername[:reportedname]') + parser.add_argument('--segments', type=str, default='datasets/broden', + help='directory containing segmentation dataset') + parser.add_argument('--segmenter', type=str, default=None, + help='constructor for asegmenter class') + parser.add_argument('--normalizer', type=str, default=None, + help='Normalize rgb with imagenet, zc, or pt ranges') + parser.add_argument('--download', action='store_true', default=False, + help='downloads Broden dataset if needed') + parser.add_argument('--imagedir', type=str, default=None, + help='directory containing image-only dataset') + parser.add_argument('--imgsize', type=intpair, default=(227, 227), + help='input image size to use') + parser.add_argument('--netname', type=str, default=None, + help='name for network in generated reports') + parser.add_argument('--meta', type=str, nargs='+', + help='json files of metadata to add to report') + parser.add_argument('--merge', type=str, + help='json file of unit data to merge in report') + parser.add_argument('--examples', type=int, default=20, + help='number of image examples per unit') + parser.add_argument('--size', type=int, default=10000, + help='dataset subset size to use') + parser.add_argument('--batch_size', type=int, default=100, + help='batch size for forward pass') + parser.add_argument('--num_workers', type=int, default=24, + help='number of DataLoader workers') + parser.add_argument('--quantile_threshold', type=strfloat, default=None, + choices=[FloatRange(0.0, 1.0), 'iqr'], + help='quantile to use for masks') + parser.add_argument('--whiten', default=None, + help='set to pca to whiten units') + parser.add_argument('--no-labels', action='store_true', default=False, + help='disables labeling of units') + parser.add_argument('--maxiou', action='store_true', default=False, + help='enables maxiou calculation') + parser.add_argument('--covariance', action='store_true', default=False, + help='enables covariance calculation') + parser.add_argument('--rank_all_labels', action='store_true', default=False, + help='include low-information labels in rankings') + parser.add_argument('--no-images', action='store_true', default=False, + help='disables generation of unit images') + parser.add_argument('--no-report', action='store_true', default=False, + help='disables generation report summary') + parser.add_argument('--no-cuda', action='store_true', default=False, + help='disables CUDA usage') + parser.add_argument('--gen', action='store_true', default=False, + help='test a generator model (e.g., a GAN)') + parser.add_argument('--gan', action='store_true', default=False, + help='synonym for --gen') + parser.add_argument('--perturbation', default=None, + help='filename of perturbation attack to apply') + parser.add_argument('--add_scale_offset', action='store_true', default=None, + help='offsets masks according to stride and padding') + parser.add_argument('--quiet', action='store_true', default=False, + help='silences console output') + if len(sys.argv) == 1: + parser.print_usage(sys.stderr) + sys.exit(1) + args = parser.parse_args() + args.images = not args.no_images + args.report = not args.no_report + args.labels = not args.no_labels + if args.gan: + args.gen = args.gan + + # Set up console output + pbar.verbose(not args.quiet) + + # Exit right away if job is already done or being done. + if args.outdir is not None: + exit_if_job_done(args.outdir) + + # Speed up pytorch + torch.backends.cudnn.benchmark = True + + # Special case: download flag without model to test. + if args.model is None and args.download: + from netdissect.broden import ensure_broden_downloaded + for resolution in [224, 227, 384]: + ensure_broden_downloaded(args.segments, resolution, 1) + from netdissect.segmenter import ensure_upp_segmenter_downloaded + ensure_upp_segmenter_downloaded('datasets/segmodel') + sys.exit(0) + + # Help if broden is not present + if not args.gen and not args.imagedir and not os.path.isdir(args.segments): + pbar.print('Segmentation dataset not found at %s.' % args.segments) + pbar.print('Specify dataset directory using --segments [DIR]') + pbar.print('To download Broden, run: netdissect --download') + sys.exit(1) + + # Default segmenter class + if args.gen and args.segmenter is None: + args.segmenter = ("netdissect.segmenter.UnifiedParsingSegmenter(" + + "segsizes=[256], segdiv='quad')") + + # Default threshold + if args.quantile_threshold is None: + if args.gen: + args.quantile_threshold = 'iqr' + else: + args.quantile_threshold = 0.005 + + # Set up CUDA + args.cuda = not args.no_cuda and torch.cuda.is_available() + if args.cuda: + torch.backends.cudnn.benchmark = True + + # Construct the network with specified layers instrumented + if args.model is None: + pbar.print('No model specified') + sys.exit(1) + model = create_instrumented_model(args) + + # Update any metadata from files, if any + meta = getattr(model, 'meta', {}) + if args.meta: + for mfilename in args.meta: + with open(mfilename) as f: + meta.update(json.load(f)) + + # Load any merge data from files + mergedata = None + if args.merge: + with open(args.merge) as f: + mergedata = json.load(f) + + # Set up the output directory, verify write access + if args.outdir is None: + args.outdir = os.path.join('dissect', type(model).__name__) + exit_if_job_done(args.outdir) + pbar.print('Writing output into %s.' % args.outdir) + os.makedirs(args.outdir, exist_ok=True) + train_dataset = None + + if not args.gen: + # Load dataset for classifier case. + # Load perturbation + perturbation = numpy.load(args.perturbation + ) if args.perturbation else None + segrunner = None + + # Load broden dataset + if args.imagedir is not None: + dataset = try_to_load_images(args.imagedir, args.imgsize, + perturbation, args.size) + segrunner = ImageOnlySegRunner(dataset) + else: + dataset = try_to_load_broden(args.segments, args.imgsize, 1, + perturbation, args.download, args.size, + normalizer_named(args.normalizer)) + if dataset is None: + dataset = try_to_load_multiseg(args.segments, args.imgsize, + perturbation, args.size) + if dataset is None: + pbar.print('No segmentation dataset found in %s', + args.segments) + pbar.print('use --download to download Broden.') + sys.exit(1) + else: + # For segmenter case the dataset is just a random z + dataset = z_dataset_for_model(model, args.size) + train_dataset = z_dataset_for_model(model, args.size, seed=2) + segrunner = GeneratorSegRunner(autoimport_eval(args.segmenter)) + + # Run dissect + dissect(args.outdir, model, dataset, + train_dataset=train_dataset, + segrunner=segrunner, + examples_per_unit=args.examples, + netname=args.netname, + quantile_threshold=args.quantile_threshold, + meta=meta, + merge=mergedata, + pca_units=(args.whiten == 'pca'), + make_images=args.images, + make_labels=args.labels, + make_maxiou=args.maxiou, + make_covariance=args.covariance, + make_report=args.report, + make_row_images=args.images, + make_single_images=True, + rank_all_labels=args.rank_all_labels, + batch_size=args.batch_size, + num_workers=args.num_workers, + settings=vars(args)) + + # Mark the directory so that it's not done again. + mark_job_done(args.outdir) + +class AddPerturbation(object): + def __init__(self, perturbation): + self.perturbation = perturbation + + def __call__(self, pic): + if self.perturbation is None: + return pic + # Convert to a numpy float32 array + npyimg = numpy.array(pic, numpy.uint8, copy=False + ).astype(numpy.float32) + # Center the perturbation + oy, ox = ((self.perturbation.shape[d] - npyimg.shape[d]) // 2 + for d in [0, 1]) + npyimg += self.perturbation[ + oy:oy+npyimg.shape[0], ox:ox+npyimg.shape[1]] + # Pytorch conventions: as a float it should be [0..1] + npyimg.clip(0, 255, npyimg) + return npyimg / 255.0 + +def test_dissection(): + pbar.verbose(True) + from torchvision.models import alexnet + from torchvision import transforms + model = InstrumentedModel(alexnet(pretrained=True)) + model.eval() + # Load an alexnet + model.retain_layers([ + ('features.0', 'conv1'), + ('features.3', 'conv2'), + ('features.6', 'conv3'), + ('features.8', 'conv4'), + ('features.10', 'conv5') ]) + # load broden dataset + bds = BrodenDataset('datasets/broden', + transform=transforms.Compose([ + transforms.ToTensor(), + transforms.Normalize(IMAGE_MEAN, IMAGE_STDEV)]), + size=100) + # run dissect + dissect('dissect/test', model, bds, + examples_per_unit=10) + +def try_to_load_images(directory, imgsize, perturbation, size): + # Load plain image dataset + # TODO: allow other normalizations. + return ParallelImageFolders( + [directory], + transform=transforms.Compose([ + transforms.Resize(imgsize), + AddPerturbation(perturbation), + transforms.ToTensor(), + transforms.Normalize(IMAGE_MEAN, IMAGE_STDEV)]), + size=size) + +def try_to_load_broden(directory, imgsize, broden_version, perturbation, + download, size, normalizer=None): + # Load broden dataset + ds_resolution = (224 if max(imgsize) <= 224 else + 227 if max(imgsize) <= 227 else 384) + if not os.path.isfile(os.path.join(directory, + 'broden%d_%d' % (broden_version, ds_resolution), 'index.csv')): + return None + # normalizers are "imagenet", "pm1", "pt" + if normalizer is None: + normalizer = transforms.Normalize(IMAGE_MEAN, IMAGE_STDEV) + return BrodenDataset(directory, + resolution=ds_resolution, + download=download, + broden_version=broden_version, + transform=transforms.Compose([ + transforms.Resize(imgsize), + AddPerturbation(perturbation), + transforms.ToTensor(), + normalizer]), + size=size) + +def try_to_load_multiseg(directory, imgsize, perturbation, size): + if not os.path.isfile(os.path.join(directory, 'labelnames.json')): + return None + minsize = min(imgsize) if hasattr(imgsize, '__iter__') else imgsize + return MultiSegmentDataset(directory, + transform=(transforms.Compose([ + transforms.Resize(minsize), + transforms.CenterCrop(imgsize), + AddPerturbation(perturbation), + transforms.ToTensor(), + transforms.Normalize(IMAGE_MEAN, IMAGE_STDEV)]), + transforms.Compose([ + transforms.Resize(minsize, interpolation=PIL.Image.NEAREST), + transforms.CenterCrop(imgsize)])), + size=size) + +def add_scale_offset_info(model, layer_names): + ''' + Creates a 'scale_offset' property on the model which guesses + how to offset the featuremap, in cases where the convolutional + padding does not exacly correspond to keeping featuremap pixels + centered on the downsampled regions of the input. This mainly + shows up in AlexNet: ResNet and VGG pad convolutions to keep + them centered and do not need this. + ''' + model.scale_offset = {} + seen = set() + sequence = [] + aka_map = {} + for name in layer_names: + aka = name + if not isinstance(aka, str): + name, aka = name + aka_map[name] = aka + for name, layer in model.named_modules(): + sequence.append(layer) + if name in aka_map: + seen.add(name) + aka = aka_map[name] + model.scale_offset[aka] = sequence_scale_offset(sequence) + for name in aka_map: + assert name in seen, ('Layer %s not found' % name) + +def dilation_scale_offset(dilations): + '''Composes a list of (k, s, p) into a single total scale and offset.''' + if len(dilations) == 0: + return (1, 0) + scale, offset = dilation_scale_offset(dilations[1:]) + kernel, stride, padding = dilations[0] + scale *= stride + offset *= stride + offset += (kernel - 1) / 2.0 - padding + return scale, offset + +def dilations(modulelist): + '''Converts a list of modules to (kernel_size, stride, padding)''' + result = [] + for module in modulelist: + settings = tuple(getattr(module, n, d) + for n, d in (('kernel_size', 1), ('stride', 1), ('padding', 0))) + settings = (((s, s) if not isinstance(s, tuple) else s) + for s in settings) + if settings != ((1, 1), (1, 1), (0, 0)): + result.append(zip(*settings)) + return zip(*result) + +def sequence_scale_offset(modulelist): + '''Returns (yscale, yoffset), (xscale, xoffset) given a list of modules''' + return tuple(dilation_scale_offset(d) for d in dilations(modulelist)) + + +def strfloat(s): + try: + return float(s) + except: + return s + +class FloatRange(object): + def __init__(self, start, end): + self.start = start + self.end = end + def __eq__(self, other): + return isinstance(other, float) and self.start <= other <= self.end + def __repr__(self): + return '[%g-%g]' % (self.start, self.end) + +# Many models use this normalization. +IMAGE_MEAN = [0.485, 0.456, 0.406] +IMAGE_STDEV = [0.229, 0.224, 0.225] +def normalizer_named(n): + if n is None: + return None + if n == 'imagenet': + return transforms.Normalize(IMAGE_MEAN, IMAGE_STDEV) + if n == 'zc': + # Transform pytorch [0..1] to [-1..1] + return transforms.Normalize([0.5, 0.5, 0.5], [0.5, 0.5, 0.5]) + if n == 'pt': + # Leave pytorch [0..1] unchanged. + return transforms.Normalize([0.0, 0.0, 0.0], [1.0, 1.0, 1.0]) + assert False, 'unknown normalizer %s' % n + +if __name__ == '__main__': + main() diff --git a/netdissect/actviz.py b/netdissect/actviz.py new file mode 100644 index 0000000000000000000000000000000000000000..5989013931ff2c2b241715db5eea1f391c768ef9 --- /dev/null +++ b/netdissect/actviz.py @@ -0,0 +1,170 @@ +import os +import numpy +from scipy.interpolate import RectBivariateSpline + +def activation_visualization(image, data, level, alpha=0.5, source_shape=None, + target_shape=None, crop=False, zoom=None, border=2, + negate=False, return_mask=False, **kwargs): + """ + Makes a visualiztion image of activation data overlaid on the image. + Params: + image The original image. + data The single channel feature map. + alpha The darkening to apply in inactive regions of the image. + level The threshold of activation levels to highlight. + """ + if len(image.shape) == 2: + # Puff up grayscale image to RGB. + image = image[:,:,None] * numpy.array([[[1, 1, 1]]]) + surface = activation_surface(data, target_shape=image.shape[:2], + source_shape=source_shape, **kwargs) + if negate: + surface = -surface + level = -level + if crop: + # crop to source_shape + if source_shape is not None: + ch, cw = ((t - s) // 2 for s, t in zip( + source_shape, image.shape[:2])) + image = image[ch:ch+source_shape[0], cw:cw+source_shape[1]] + surface = surface[ch:ch+source_shape[0], cw:cw+source_shape[1]] + if crop is True: + crop = surface.shape + elif not hasattr(crop, '__len__'): + crop = (crop, crop) + if zoom is not None: + source_rect = best_sub_rect(surface >= level, crop, zoom, + pad=border) + else: + source_rect = (0, surface.shape[0], 0, surface.shape[1]) + image = zoom_image(image, source_rect, crop) + surface = zoom_image(surface, source_rect, crop) + # Rescale visualization to target_shape if specified. + if target_shape is not None and (image.shape[0] != target_shape[0] + or image.shape[1] != target_shape[1]): + image = zoom_image(image, target_shape=target_shape) + surface = zoom_image(surface, target_shape=target_shape) + mask = (surface >= level) + # Add a yellow border at the edge of the mask for contrast + result = (mask[:, :, None] * (1 - alpha) + alpha) * image + if border: + edge = mask_border(mask)[:,:,None] + result = numpy.maximum(edge * numpy.array([[[200, 200, 0]]]), result) + if not return_mask: + return result + mask_image = (1 - mask[:, :, None]) * numpy.array( + [[[0, 0, 0, 255 * (1 - alpha)]]], dtype=numpy.uint8) + if border: + mask_image = numpy.maximum(edge * numpy.array([[[200, 200, 0, 255]]]), + mask_image) + return result, mask_image + +def activation_surface(data, target_shape=None, source_shape=None, + scale_offset=None, deg=1, pad=True): + """ + Generates an upsampled activation sample. + Params: + target_shape Shape of the output array. + source_shape The centered shape of the output to match with data + when upscaling. Defaults to the whole target_shape. + scale_offset The amount by which to scale, then offset data + dimensions to end up with target dimensions. A pair of pairs. + deg Degree of interpolation to apply (1 = linear, etc). + pad True to zero-pad the edge instead of doing a funny edge interp. + """ + # Default is that nothing is resized. + if target_shape is None: + target_shape = data.shape + # Make a default scale_offset to fill the image if there isn't one + if scale_offset is None: + scale = tuple(float(ts) / ds + for ts, ds in zip(target_shape, data.shape)) + offset = tuple(0.5 * s - 0.5 for s in scale) + else: + scale, offset = (v for v in zip(*scale_offset)) + # Now we adjust offsets to take into account cropping and so on + if source_shape is not None: + offset = tuple(o + (ts - ss) / 2.0 + for o, ss, ts in zip(offset, source_shape, target_shape)) + # Pad the edge with zeros for sensible edge behavior + if pad: + zeropad = numpy.zeros( + (data.shape[0] + 2, data.shape[1] + 2), dtype=data.dtype) + zeropad[1:-1, 1:-1] = data + data = zeropad + offset = tuple((o - s) for o, s in zip(offset, scale)) + # Upsample linearly + ty, tx = (numpy.arange(ts) for ts in target_shape) + sy, sx = (numpy.arange(ss) * s + o + for ss, s, o in zip(data.shape, scale, offset)) + levels = RectBivariateSpline( + sy, sx, data, kx=deg, ky=deg)(ty, tx, grid=True) + # Return the mask. + return levels + +def mask_border(mask, border=2): + """Given a mask computes a border mask""" + from scipy import ndimage + struct = ndimage.generate_binary_structure(2, 2) + erosion = numpy.ones((mask.shape[0] + 10, mask.shape[1] + 10), dtype='int') + erosion[5:5+mask.shape[0], 5:5+mask.shape[1]] = ~mask + for _ in range(border): + erosion = ndimage.binary_erosion(erosion, struct) + return ~mask ^ erosion[5:5+mask.shape[0], 5:5+mask.shape[1]] + +def bounding_rect(mask, pad=0): + """Returns (r, b, l, r) boundaries so that all nonzero pixels in mask + have locations (i, j) with t <= i < b, and l <= j < r.""" + nz = mask.nonzero() + if len(nz[0]) == 0: + # print('no pixels') + return (0, mask.shape[0], 0, mask.shape[1]) + (t, b), (l, r) = [(max(0, p.min() - pad), min(s, p.max() + 1 + pad)) + for p, s in zip(nz, mask.shape)] + return (t, b, l, r) + +def best_sub_rect(mask, shape, max_zoom=None, pad=2): + """Finds the smallest subrectangle containing all the nonzeros of mask, + matching the aspect ratio of shape, and where the zoom-up ratio is no + more than max_zoom""" + t, b, l, r = bounding_rect(mask, pad=pad) + height = max(b - t, int(round(float(shape[0]) * (r - l) / shape[1]))) + if max_zoom is not None: + height = int(max(round(float(shape[0]) / max_zoom), height)) + width = int(round(float(shape[1]) * height / shape[0])) + nt = min(mask.shape[0] - height, max(0, (b + t - height) // 2)) + nb = nt + height + nl = min(mask.shape[1] - width, max(0, (r + l - width) // 2)) + nr = nl + width + return (nt, nb, nl, nr) + +def zoom_image(img, source_rect=None, target_shape=None): + """Zooms pixels from the source_rect of img to target_shape.""" + import warnings + from scipy.ndimage import zoom + if target_shape is None: + target_shape = img.shape + if source_rect is None: + st, sb, sl, sr = (0, img.shape[0], 0, img.shape[1]) + else: + st, sb, sl, sr = source_rect + source = img[st:sb, sl:sr] + if source.shape == target_shape: + return source + zoom_tuple = tuple(float(t) / s + for t, s in zip(target_shape, source.shape[:2]) + ) + (1,) * (img.ndim - 2) + with warnings.catch_warnings(): + warnings.simplefilter('ignore', UserWarning) # "output shape of zoom" + target = zoom(source, zoom_tuple) + assert target.shape[:2] == target_shape, (target.shape, target_shape) + return target + +def choose_level(feature_map, percentile=0.8): + ''' + Chooses the top 80% level (or whatever the level chosen). + ''' + data_range = numpy.sort(feature_map.flatten()) + return numpy.interp( + percentile, numpy.linspace(0, 1, len(data_range)), data_range) + diff --git a/netdissect/autoeval.py b/netdissect/autoeval.py new file mode 100644 index 0000000000000000000000000000000000000000..ecc86a1f7b403f57821dde2a2b4f0619c0d6cae3 --- /dev/null +++ b/netdissect/autoeval.py @@ -0,0 +1,37 @@ +from collections import defaultdict +from importlib import import_module + +def autoimport_eval(term): + ''' + Used to evaluate an arbitrary command-line constructor specifying + a class, with automatic import of global module names. + ''' + + class DictNamespace(object): + def __init__(self, d): + self.__d__ = d + def __getattr__(self, key): + return self.__d__[key] + + class AutoImportDict(defaultdict): + def __init__(self, wrapped=None, parent=None): + super().__init__() + self.wrapped = wrapped + self.parent = parent + def __missing__(self, key): + if self.wrapped is not None: + if key in self.wrapped: + return self.wrapped[key] + if self.parent is not None: + key = self.parent + '.' + key + if key in __builtins__: + return __builtins__[key] + mdl = import_module(key) + # Return an AutoImportDict for any namespace packages + if hasattr(mdl, '__path__'): # and not hasattr(mdl, '__file__'): + return DictNamespace( + AutoImportDict(wrapped=mdl.__dict__, parent=key)) + return mdl + + return eval(term, {}, AutoImportDict()) + diff --git a/netdissect/bargraph.py b/netdissect/bargraph.py new file mode 100644 index 0000000000000000000000000000000000000000..b139175894d739cb2a6edc2ba1403f89a1488005 --- /dev/null +++ b/netdissect/bargraph.py @@ -0,0 +1,109 @@ +from xml.etree import ElementTree as et + +def make_svg_bargraph(labels, heights, categories=None, palette=None, + barheight=100, barwidth=12, show_labels=True, file_header=False, + data_url=False): + if palette is None: + palette = default_bargraph_palette + if categories is None: + categories = [('', len(labels))] + unitheight = float(barheight) / max(max(heights, default=1), 1) + textheight = barheight if show_labels else 0 + labelsize = float(barwidth) + gap = float(barwidth) / 4 + # textsize = barwidth + gap + textsize = barwidth + gap / 2 + rollup = max(heights, default=1) + textmargin = float(labelsize) * 2 / 3 + leftmargin = 32 + rightmargin = 8 + svgwidth = len(heights) * (barwidth + gap) + 2 * leftmargin + rightmargin + svgheight = barheight + textheight + + # create an SVG XML element + svg = et.Element('svg', width=str(svgwidth), height=str(svgheight), + version='1.1', xmlns='http://www.w3.org/2000/svg') + + # Draw the bar graph + basey = svgheight - textheight + x = leftmargin + # Add units scale on left + if len(heights): + for h in [1, (max(heights) + 1) // 2, max(heights)]: + et.SubElement(svg, 'text', x='0', y='0', + style=('font-family:sans-serif;font-size:%dpx;' + + 'text-anchor:end;alignment-baseline:hanging;' + + 'transform:translate(%dpx, %dpx);') % + (textsize, x - gap, basey - h * unitheight)).text = str(h) + et.SubElement(svg, 'text', x='0', y='0', + style=('font-family:sans-serif;font-size:%dpx;' + + 'text-anchor:middle;' + + 'transform:translate(%dpx, %dpx) rotate(-90deg)') % + (textsize, x - gap - textsize, basey - h * unitheight / 2) + ).text = 'units' + # Draw big category background rectangles + for catindex, (cat, catcount) in enumerate(categories): + if not catcount: + continue + et.SubElement(svg, 'rect', x=str(x), y=str(basey - rollup * unitheight), + width=(str((barwidth + gap) * catcount - gap)), + height = str(rollup*unitheight), + fill=palette[catindex % len(palette)][1]) + x += (barwidth + gap) * catcount + # Draw small bars as well as 45degree text labels + x = leftmargin + catindex = -1 + catcount = 0 + for label, height in zip(labels, heights): + while not catcount and catindex <= len(categories): + catindex += 1 + catcount = categories[catindex][1] + color = palette[catindex % len(palette)][0] + et.SubElement(svg, 'rect', x=str(x), y=str(basey-(height * unitheight)), + width=str(barwidth), height=str(height * unitheight), + fill=color) + x += barwidth + if show_labels: + et.SubElement(svg, 'text', x='0', y='0', + style=('font-family:sans-serif;font-size:%dpx;text-anchor:end;'+ + 'transform:translate(%dpx, %dpx) rotate(-45deg);') % + (labelsize, x, basey + textmargin)).text = label + x += gap + catcount -= 1 + # Text labels for each category + x = leftmargin + for cat, catcount in categories: + if not catcount: + continue + et.SubElement(svg, 'text', x='0', y='0', + style=('font-family:sans-serif;font-size:%dpx;text-anchor:end;'+ + 'transform:translate(%dpx, %dpx) rotate(-90deg);') % + (textsize, x + (barwidth + gap) * catcount - gap, + basey - rollup * unitheight + gap)).text = '%d %s' % ( + catcount, cat + ('s' if catcount != 1 else '')) + x += (barwidth + gap) * catcount + # Output - this is the bare svg. + result = et.tostring(svg).decode('utf-8') + if file_header or data_url: + result = ''.join([ + '\n', + '\n', + result]) + if data_url: + import base64 + result = 'data:image/svg+xml;base64,' + base64.b64encode( + result.encode('utf-8')).decode('utf-8') + return result + +default_bargraph_palette = [ + ('#4B4CBF', '#B6B6F2'), + ('#55B05B', '#B6F2BA'), + ('#50BDAC', '#A5E5DB'), + ('#81C679', '#C0FF9B'), + ('#F0883B', '#F2CFB6'), + ('#D4CF24', '#F2F1B6'), + ('#D92E2B', '#F2B6B6'), + ('#AB6BC6', '#CFAAFF'), +] + diff --git a/netdissect/broden.py b/netdissect/broden.py new file mode 100644 index 0000000000000000000000000000000000000000..4e51181a7c70877e0c0991c60467ac3cec071447 --- /dev/null +++ b/netdissect/broden.py @@ -0,0 +1,272 @@ +import os, errno, numpy, torch, csv, re, shutil, os, zipfile +from collections import OrderedDict +from torchvision.datasets.folder import default_loader +from torchvision import transforms +from scipy import ndimage +from urllib.request import urlopen + +class BrodenDataset(torch.utils.data.Dataset): + ''' + A multicategory segmentation data set. + + Returns three streams: + (1) The image (3, h, w). + (2) The multicategory segmentation (labelcount, h, w). + (3) A bincount of pixels in the segmentation (labelcount). + + Net dissect also assumes that the dataset object has three properties + with human-readable labels: + + ds.labels = ['red', 'black', 'car', 'tree', 'grid', ...] + ds.categories = ['color', 'part', 'object', 'texture'] + ds.label_category = [0, 0, 2, 2, 3, ...] # The category for each label + ''' + def __init__(self, directory='datasets/broden', resolution=384, + split='train', categories=None, + transform=None, transform_segment=None, + download=False, size=None, include_bincount=True, + broden_version=1, max_segment_depth=6): + assert resolution in [224, 227, 384] + if download: + ensure_broden_downloaded(directory, resolution, broden_version) + self.directory = directory + self.resolution = resolution + self.resdir = os.path.join(directory, 'broden%d_%d' % + (broden_version, resolution)) + self.loader = default_loader + self.transform = transform + self.transform_segment = transform_segment + self.include_bincount = include_bincount + # The maximum number of multilabel layers that coexist at an image. + self.max_segment_depth = max_segment_depth + with open(os.path.join(self.resdir, 'category.csv'), + encoding='utf-8') as f: + self.category_info = OrderedDict() + for row in csv.DictReader(f): + self.category_info[row['name']] = row + if categories is not None: + # Filter out unused categories + categories = set([c for c in categories if c in self.category_info]) + for cat in list(self.category_info.keys()): + if cat not in categories: + del self.category_info[cat] + categories = list(self.category_info.keys()) + self.categories = categories + + # Filter out unneeded images. + with open(os.path.join(self.resdir, 'index.csv'), + encoding='utf-8') as f: + all_images = [decode_index_dict(r) for r in csv.DictReader(f)] + self.image = [row for row in all_images + if index_has_any_data(row, categories) + and (split is None or row['split'] == split)] + if size is not None: + self.image = self.image[:size] + with open(os.path.join(self.resdir, 'label.csv'), + encoding='utf-8') as f: + self.label_info = build_dense_label_array([ + decode_label_dict(r) for r in csv.DictReader(f)]) + self.labels = [l['name'] for l in self.label_info] + # Build dense remapping arrays for labels, so that you can + # get dense ranges of labels for each category. + self.category_map = {} + self.category_unmap = {} + self.category_label = {} + for cat in self.categories: + with open(os.path.join(self.resdir, 'c_%s.csv' % cat), + encoding='utf-8') as f: + c_data = [decode_label_dict(r) for r in csv.DictReader(f)] + self.category_unmap[cat], self.category_map[cat] = ( + build_numpy_category_map(c_data)) + self.category_label[cat] = build_dense_label_array( + c_data, key='code') + self.num_labels = len(self.labels) + # Primary categories for each label is the category in which it + # appears with the maximum coverage. + self.label_category = numpy.zeros(self.num_labels, dtype=int) + for i in range(self.num_labels): + maxcoverage, self.label_category[i] = max( + (self.category_label[cat][self.category_map[cat][i]]['coverage'] + if i < len(self.category_map[cat]) + and self.category_map[cat][i] else 0, ic) + for ic, cat in enumerate(categories)) + + def __len__(self): + return len(self.image) + + def __getitem__(self, idx): + record = self.image[idx] + # example record: { + # 'image': 'opensurfaces/25605.jpg', 'split': 'train', + # 'ih': 384, 'iw': 384, 'sh': 192, 'sw': 192, + # 'color': ['opensurfaces/25605_color.png'], + # 'object': [], 'part': [], + # 'material': ['opensurfaces/25605_material.png'], + # 'scene': [], 'texture': []} + image = self.loader(os.path.join(self.resdir, 'images', + record['image'])) + segment = numpy.zeros(shape=(self.max_segment_depth, + record['sh'], record['sw']), dtype=int) + if self.include_bincount: + bincount = numpy.zeros(shape=(self.num_labels,), dtype=int) + depth = 0 + for cat in self.categories: + for layer in record[cat]: + if isinstance(layer, int): + segment[depth,:,:] = layer + if self.include_bincount: + bincount[layer] += segment.shape[1] * segment.shape[2] + else: + png = numpy.asarray(self.loader(os.path.join( + self.resdir, 'images', layer))) + segment[depth,:,:] = png[:,:,0] + png[:,:,1] * 256 + if self.include_bincount: + bincount += numpy.bincount(segment[depth,:,:].flatten(), + minlength=self.num_labels) + depth += 1 + if self.transform: + image = self.transform(image) + if self.transform_segment: + segment = self.transform_segment(segment) + if self.include_bincount: + bincount[0] = 0 + return (image, segment, bincount) + else: + return (image, segment) + +def build_dense_label_array(label_data, key='number', allow_none=False): + ''' + Input: set of rows with 'number' fields (or another field name key). + Output: array such that a[number] = the row with the given number. + ''' + result = [None] * (max([d[key] for d in label_data]) + 1) + for d in label_data: + result[d[key]] = d + # Fill in none + if not allow_none: + example = label_data[0] + def make_empty(k): + return dict((c, k if c is key else type(v)()) + for c, v in example.items()) + for i, d in enumerate(result): + if d is None: + result[i] = dict(make_empty(i)) + return result + +def build_numpy_category_map(map_data, key1='code', key2='number'): + ''' + Input: set of rows with 'number' fields (or another field name key). + Output: array such that a[number] = the row with the given number. + ''' + results = list(numpy.zeros((max([d[key] for d in map_data]) + 1), + dtype=numpy.int16) for key in (key1, key2)) + for d in map_data: + results[0][d[key1]] = d[key2] + results[1][d[key2]] = d[key1] + return results + +def index_has_any_data(row, categories): + for c in categories: + for data in row[c]: + if data: return True + return False + +def decode_label_dict(row): + result = {} + for key, val in row.items(): + if key == 'category': + result[key] = dict((c, int(n)) + for c, n in [re.match('^([^(]*)\(([^)]*)\)$', f).groups() + for f in val.split(';')]) + elif key == 'name': + result[key] = val + elif key == 'syns': + result[key] = val.split(';') + elif re.match('^\d+$', val): + result[key] = int(val) + elif re.match('^\d+\.\d*$', val): + result[key] = float(val) + else: + result[key] = val + return result + +def decode_index_dict(row): + result = {} + for key, val in row.items(): + if key in ['image', 'split']: + result[key] = val + elif key in ['sw', 'sh', 'iw', 'ih']: + result[key] = int(val) + else: + item = [s for s in val.split(';') if s] + for i, v in enumerate(item): + if re.match('^\d+$', v): + item[i] = int(v) + result[key] = item + return result + +class ScaleSegmentation: + ''' + Utility for scaling segmentations, using nearest-neighbor zooming. + ''' + def __init__(self, target_height, target_width): + self.target_height = target_height + self.target_width = target_width + def __call__(self, seg): + ratio = (1, self.target_height / float(seg.shape[1]), + self.target_width / float(seg.shape[2])) + return ndimage.zoom(seg, ratio, order=0) + +def scatter_batch(seg, num_labels, omit_zero=True, dtype=torch.uint8): + ''' + Utility for scattering semgentations into a one-hot representation. + ''' + result = torch.zeros(*((seg.shape[0], num_labels,) + seg.shape[2:]), + dtype=dtype, device=seg.device) + result.scatter_(1, seg, 1) + if omit_zero: + result[:,0] = 0 + return result + +def ensure_broden_downloaded(directory, resolution, broden_version=1): + assert resolution in [224, 227, 384] + baseurl = 'http://netdissect.csail.mit.edu/data/' + dirname = 'broden%d_%d' % (broden_version, resolution) + if os.path.isfile(os.path.join(directory, dirname, 'index.csv')): + return # Already downloaded + zipfilename = 'broden1_%d.zip' % resolution + download_dir = os.path.join(directory, 'download') + os.makedirs(download_dir, exist_ok=True) + full_zipfilename = os.path.join(download_dir, zipfilename) + if not os.path.exists(full_zipfilename): + url = '%s/%s' % (baseurl, zipfilename) + print('Downloading %s' % url) + data = urlopen(url) + with open(full_zipfilename, 'wb') as f: + f.write(data.read()) + print('Unzipping %s' % zipfilename) + with zipfile.ZipFile(full_zipfilename, 'r') as zip_ref: + zip_ref.extractall(directory) + assert os.path.isfile(os.path.join(directory, dirname, 'index.csv')) + +def test_broden_dataset(): + ''' + Testing code. + ''' + bds = BrodenDataset('datasets/broden', resolution=384, + transform=transforms.Compose([ + transforms.Resize(224), + transforms.ToTensor()]), + transform_segment=transforms.Compose([ + ScaleSegmentation(224, 224) + ]), + include_bincount=True) + loader = torch.utils.data.DataLoader(bds, batch_size=100, num_workers=24) + for i in range(1,20): + print(bds.label[i]['name'], + list(bds.category.keys())[bds.primary_category[i]]) + for i, (im, seg, bc) in enumerate(loader): + print(i, im.shape, seg.shape, seg.max(), bc.shape) + +if __name__ == '__main__': + test_broden_dataset() diff --git a/netdissect/customnet.py b/netdissect/customnet.py new file mode 100644 index 0000000000000000000000000000000000000000..e450ca395015d76af44da20693ad0ab5bf431b80 --- /dev/null +++ b/netdissect/customnet.py @@ -0,0 +1,194 @@ +''' +Customized version of pytorch resnet, alexnets. +''' + +import numpy, torch, math, os +from torch import nn +from collections import OrderedDict +from torchvision.models import resnet +from torchvision.models.alexnet import model_urls as alexnet_model_urls + +class CustomResNet(nn.Module): + ''' + Customizable ResNet, compatible with pytorch's resnet, but: + * The top-level sequence of modules can be modified to add + or remove or alter layers. + * Extra outputs can be produced, to allow backprop and access + to internal features. + * Pooling is replaced by resizable GlobalAveragePooling so that + any size can be input (e.g., any multiple of 32 pixels). + * halfsize=True halves striding on the first pooling to + set the default size to 112x112 instead of 224x224. + ''' + def __init__(self, size=None, block=None, layers=None, num_classes=1000, + extra_output=None, modify_sequence=None, halfsize=False): + standard_sizes = { + 18: (resnet.BasicBlock, [2, 2, 2, 2]), + 34: (resnet.BasicBlock, [3, 4, 6, 3]), + 50: (resnet.Bottleneck, [3, 4, 6, 3]), + 101: (resnet.Bottleneck, [3, 4, 23, 3]), + 152: (resnet.Bottleneck, [3, 8, 36, 3]) + } + assert (size in standard_sizes) == (block is None) == (layers is None) + if size in standard_sizes: + block, layers = standard_sizes[size] + if modify_sequence is None: + modify_sequence = lambda x: x + self.inplanes = 64 + norm_layer = nn.BatchNorm2d + self._norm_layer = norm_layer # for recent resnet + self.dilation = 1 + self.groups = 1 + self.base_width = 64 + sequence = modify_sequence([ + ('conv1', nn.Conv2d(3, 64, kernel_size=7, stride=2, + padding=3, bias=False)), + ('bn1', norm_layer(64)), + ('relu', nn.ReLU(inplace=True)), + ('maxpool', nn.MaxPool2d(3, stride=1 if halfsize else 2, + padding=1)), + ('layer1', self._make_layer(block, 64, layers[0])), + ('layer2', self._make_layer(block, 128, layers[1], stride=2)), + ('layer3', self._make_layer(block, 256, layers[2], stride=2)), + ('layer4', self._make_layer(block, 512, layers[3], stride=2)), + ('avgpool', GlobalAveragePool2d()), + ('fc', nn.Linear(512 * block.expansion, num_classes)) + ]) + super(CustomResNet, self).__init__() + for name, layer in sequence: + setattr(self, name, layer) + self.extra_output = extra_output + + def _make_layer(self, block, channels, depth, stride=1): + return resnet.ResNet._make_layer(self, block, channels, depth, stride) + + def forward(self, x): + extra = [] + for name, module in self._modules.items(): + x = module(x) + if self.extra_output and name in self.extra_output: + extra.append(x) + if self.extra_output: + return (x,) + tuple(extra) + return x + +class CustomAlexNet(nn.Module): + ''' + Customizable AlexNet, compatible with pytorch's alexnet, but: + * The top-level sequence of modules can be modified to add + or remove or alter layers. + * Extra outputs can be produced, to allow backprop and access + to internal features. + * halfsize=True halves striding on the first convolution to + allow 119x119 images to be processed rather than 227x227 only. + ''' + def __init__(self, channels=None, num_classes=1000, + extra_output=None, modify_sequence=None, halfsize=False): + if channels is None: + channels = [3, 64, 192, 384, 256, 256, 4096, 4096] + if modify_sequence is None: + modify_sequence = lambda x: x + sequence = modify_sequence([ + ('conv1', nn.Conv2d(channels[0], channels[1], + kernel_size=11, stride=4, padding=2)), + ('relu1', nn.ReLU(inplace=True)), + ('pool1', nn.MaxPool2d(kernel_size=3, stride=1 if halfsize else 2)), + ('conv2', nn.Conv2d(channels[1], channels[2], + kernel_size=5, padding=2)), + ('relu2', nn.ReLU(inplace=True)), + ('pool2', nn.MaxPool2d(kernel_size=3, stride=2)), + ('conv3', nn.Conv2d(channels[2], channels[3], + kernel_size=3, padding=1)), + ('relu3', nn.ReLU(inplace=True)), + ('conv4', nn.Conv2d(channels[3], channels[4], + kernel_size=3, padding=1)), + ('relu4', nn.ReLU(inplace=True)), + ('conv5', nn.Conv2d(channels[4], channels[5], + kernel_size=3, padding=1)), + ('relu5', nn.ReLU(inplace=True)), + ('pool5', nn.MaxPool2d(kernel_size=3, stride=2)), + ('flatten', Vectorize()), + ('dropout6', nn.Dropout()), + ('fc6', nn.Linear(channels[5] * 6 * 6, channels[6])), + ('relu6', nn.ReLU(inplace=True)), + ('dropout7', nn.Dropout()), + ('fc7', nn.Linear(channels[6], channels[7])), + ('relu7', nn.ReLU(inplace=True)), + ('fc8', nn.Linear(channels[7], num_classes)) + ]) + super(CustomAlexNet, self).__init__() + for name, layer in sequence: + setattr(self, name, layer) + self.extra_output = extra_output + + def forward(self, x): + extra = [] + for name, module in self._modules.items(): + x = module(x) + if self.extra_output and name in self.extra_output: + extra.append(x) + if self.extra_output: + return (x,) + tuple(extra) + return x + + def load_state_dict(self, state_dict, **kwargs): + ''' + Translates from pytorch's AlexNet parameter names + into the custom parameter names. + ''' + custom_names = [ + ('features.0.', 'conv1.'), + ('features.3.', 'conv2.'), + ('features.6.', 'conv3.'), + ('features.8.', 'conv4.'), + ('features.10.', 'conv5.'), + ('classifier.1.', 'fc6.'), + ('classifier.4.', 'fc7.'), + ('classifier.6.', 'fc8.') + ] + custom_state_dict = {} + for k, v in state_dict.items(): + for op, np in custom_names: + if k.startswith(op): + k = np + k[len(op):] + break + custom_state_dict[k] = v + super(CustomAlexNet, self).load_state_dict(custom_state_dict, **kwargs) + +class Vectorize(nn.Module): + def __init__(self): + super(Vectorize, self).__init__() + def forward(self, x): + x = x.view(x.size(0), int(numpy.prod(x.size()[1:]))) + return x + +class GlobalAveragePool2d(nn.Module): + def __init__(self): + super(GlobalAveragePool2d, self).__init__() + def forward(self, x): + x = torch.mean(x.view(x.size(0), x.size(1), -1), dim=2) + return x + +if __name__ == '__main__': + import torch.utils.model_zoo as model_zoo + # Verify that at the default settings, pytorch standard pretrained + # models can be loaded into each of the custom nets. + print('Loading alexnet') + model = CustomAlexNet() + model.load_state_dict(model_zoo.load_url(alexnet_model_urls['alexnet'])) + print('Loading resnet18') + model = CustomResNet(18) + model.load_state_dict(model_zoo.load_url(resnet.model_urls['resnet18'])) + print('Loading resnet34') + model = CustomResNet(34) + model.load_state_dict(model_zoo.load_url(resnet.model_urls['resnet34'])) + print('Loading resnet50') + model = CustomResNet(50) + model.load_state_dict(model_zoo.load_url(resnet.model_urls['resnet50'])) + print('Loading resnet101') + model = CustomResNet(101) + model.load_state_dict(model_zoo.load_url(resnet.model_urls['resnet101'])) + print('Loading resnet152') + model = CustomResNet(152) + model.load_state_dict(model_zoo.load_url(resnet.model_urls['resnet152'])) + diff --git a/netdissect/easydict.py b/netdissect/easydict.py new file mode 100644 index 0000000000000000000000000000000000000000..0188f524b87eef75c175772ff262b93b47919ba7 --- /dev/null +++ b/netdissect/easydict.py @@ -0,0 +1,126 @@ +''' +From https://github.com/makinacorpus/easydict. +''' + +class EasyDict(dict): + """ + Get attributes + + >>> d = EasyDict({'foo':3}) + >>> d['foo'] + 3 + >>> d.foo + 3 + >>> d.bar + Traceback (most recent call last): + ... + AttributeError: 'EasyDict' object has no attribute 'bar' + + Works recursively + + >>> d = EasyDict({'foo':3, 'bar':{'x':1, 'y':2}}) + >>> isinstance(d.bar, dict) + True + >>> d.bar.x + 1 + + Bullet-proof + + >>> EasyDict({}) + {} + >>> EasyDict(d={}) + {} + >>> EasyDict(None) + {} + >>> d = {'a': 1} + >>> EasyDict(**d) + {'a': 1} + + Set attributes + + >>> d = EasyDict() + >>> d.foo = 3 + >>> d.foo + 3 + >>> d.bar = {'prop': 'value'} + >>> d.bar.prop + 'value' + >>> d + {'foo': 3, 'bar': {'prop': 'value'}} + >>> d.bar.prop = 'newer' + >>> d.bar.prop + 'newer' + + + Values extraction + + >>> d = EasyDict({'foo':0, 'bar':[{'x':1, 'y':2}, {'x':3, 'y':4}]}) + >>> isinstance(d.bar, list) + True + >>> from operator import attrgetter + >>> map(attrgetter('x'), d.bar) + [1, 3] + >>> map(attrgetter('y'), d.bar) + [2, 4] + >>> d = EasyDict() + >>> d.keys() + [] + >>> d = EasyDict(foo=3, bar=dict(x=1, y=2)) + >>> d.foo + 3 + >>> d.bar.x + 1 + + Still like a dict though + + >>> o = EasyDict({'clean':True}) + >>> o.items() + [('clean', True)] + + And like a class + + >>> class Flower(EasyDict): + ... power = 1 + ... + >>> f = Flower() + >>> f.power + 1 + >>> f = Flower({'height': 12}) + >>> f.height + 12 + >>> f['power'] + 1 + >>> sorted(f.keys()) + ['height', 'power'] + """ + def __init__(self, d=None, **kwargs): + if d is None: + d = {} + if kwargs: + d.update(**kwargs) + for k, v in d.items(): + setattr(self, k, v) + # Class attributes + for k in self.__class__.__dict__.keys(): + if not (k.startswith('__') and k.endswith('__')): + setattr(self, k, getattr(self, k)) + + def __setattr__(self, name, value): + if isinstance(value, (list, tuple)): + value = [self.__class__(x) + if isinstance(x, dict) else x for x in value] + elif isinstance(value, dict) and not isinstance(value, self.__class__): + value = self.__class__(value) + super(EasyDict, self).__setattr__(name, value) + super(EasyDict, self).__setitem__(name, value) + + __setitem__ = __setattr__ + +def load_json(filename): + import json + with open(filename) as f: + return EasyDict(json.load(f)) + +if __name__ == "__main__": + import doctest + doctest.testmod() diff --git a/netdissect/encoder_loss.py b/netdissect/encoder_loss.py new file mode 100644 index 0000000000000000000000000000000000000000..27e449b4ac2f701dabd6784fb1ad49f8ff5f8ec1 --- /dev/null +++ b/netdissect/encoder_loss.py @@ -0,0 +1,9 @@ +from torch.nn.functional import cosine_similarity + +def cor_distance(x, y, eps=1e-12): + # Analogous to L1 distance, but in terms of Pearson's correlation + return (1.0 - cosine_similarity(x, y, eps=eps)).sqrt().mean() + +def cor_square_error(x, y, eps=1e-12): + # Analogous to MSE, but in terms of Pearson's correlation + return (1.0 - cosine_similarity(x, y, eps=eps)).mean() diff --git a/netdissect/encoder_net.py b/netdissect/encoder_net.py new file mode 100644 index 0000000000000000000000000000000000000000..af96213f1b3835bb6ae5dd24c00c2219a53c29aa --- /dev/null +++ b/netdissect/encoder_net.py @@ -0,0 +1,296 @@ +import numpy, math +from . import customnet, nethook +from collections import OrderedDict +import torch.nn +import re + +def make_over5_resnet(halfsize=False): + # A resnet with the global pooling layer replaced by a single 1x1 + # conv layer, to produce a 512x8x8 featuremap. Also adds a leaky + # ReLU to better resemble the distribution of r produced by the GAN. + resnet_depth = 18 + # Make an encoder model. + def change_out(layers): + numch = 512 if resnet_depth < 50 else 2048 + ind = [i for i, (n, l) in enumerate(layers) if n == 'layer4'][0] + 1 + layers[ind:] = [('layer5', + torch.nn.Sequential(OrderedDict([ + ('conv5', torch.nn.Conv2d(numch, 512, kernel_size=1)), + ('relu5', torch.nn.LeakyReLU( + inplace=True, negative_slope=0.2)) + ])))] + return layers + encoder = customnet.CustomResNet( + resnet_depth, modify_sequence=change_out, halfsize=halfsize) + return encoder + +class HybridLayerNormEncoder(torch.nn.Sequential): + def __init__(self, halfsize=False): + sequence = [ + ('resnet', make_over5_resnet(halfsize=halfsize)), + ('inv4', LayerNormEncoder(512, 512)), + ('inv3', LayerNormEncoder(512, 512, stride=2)), + ('inv2', LayerNormEncoder(512, 512, skip_conv3=True)), + ('inv1', Layer1toZNormEncoder()) + ] + super().__init__(OrderedDict(sequence)) + +class LayerNormEncoder(torch.nn.Sequential): + def __init__(self, chan_in, chan_out=None, stride=1, + skip_conv3=False, skip_pnorm=False): + if chan_out is None: + chan_out = chan_in + sequence = [] + if not skip_pnorm: + sequence.append(('pnorm', PixelNormLayer())) + sequence.extend([ + ('conv1', torch.nn.Conv2d(chan_in, chan_out, + kernel_size=3, padding=1)), + ('bn1', torch.nn.BatchNorm2d(chan_out)), + ('relu1', torch.nn.LeakyReLU(inplace=True, negative_slope=0.2)), + ('conv2', torch.nn.Conv2d(chan_out, chan_out, + kernel_size=3, padding=1)), + ('bn2', torch.nn.BatchNorm2d(chan_out)), + ('relu2', torch.nn.LeakyReLU(inplace=True, negative_slope=0.2)), + ]) + if not skip_conv3: + sequence.append( + ('conv3', torch.nn.Conv2d(chan_out, chan_out, + kernel_size=1, padding=0, stride=stride))) + super().__init__(OrderedDict(sequence)) + with torch.no_grad(): + for n, p in self.named_parameters(): + if n.endswith('.bias'): + p.zero_() + elif not n.startswith('bn'): + torch.nn.init.kaiming_normal_(p) + +class Layer1toZNormEncoder(torch.nn.Sequential): + def __init__(self): + super().__init__(OrderedDict([ + ('pnorm', PixelNormLayer()), + ('conv1', torch.nn.Conv2d(512, 512, kernel_size=4, padding=0)), + ('bn1', torch.nn.BatchNorm2d(512)), + ('relu1', torch.nn.LeakyReLU(inplace=True, negative_slope=0.2)), + ('conv2', torch.nn.Conv2d(512, 512, kernel_size=1, padding=0)), + ('pnormout', PixelNormLayer()) + ])) + with torch.no_grad(): + for n, p in self.named_parameters(): + if n.endswith('.bias'): + p.zero_() + elif not n.startswith('bn'): + torch.nn.init.kaiming_normal_(p) + +class ResidualGenerator(nethook.InstrumentedModel): + ''' + ''' + def __init__(self, generator, z, residual_layers): + ''' + ResidualGenerator(generator, z, ['z', 'layer1', 'layer2']) + Returns a model that computes generator(z), but which has + additional internal parameters dz, d1, d2, etc, that + adjust the computation so that the output of layerN is + adjusted by dN, for example, if a network normally computes + + x = layer4(layer3(layer2(layer1(z)))), then specifying + + the innermost three layers will cause this to compute: + + x = layer4(d3 + layer3(d2 + layer2(d1 + layer1(dz + z)))) + ''' + # First temporarily hook the layers of the generator to + # collect initial values (and output shapes) of each layer. + with torch.no_grad(), nethook.InstrumentedModel(generator) as g: + g.retain_layers([n for n in residual_layers if n != 'z']) + init_out = g(z) + init_layers = g.retained_features() + init_layers['z'] = z + # Then, permanently hook the layers of the generator to add + # residual adjustments dz, d1, d2, etc at each layer. + super().__init__(generator) + for k, v in init_layers.items(): + # layer3.conv1 -> 3_conv1, shortened name. + name = k.replace('layer', '', 1).replace('.', '_') + # 3_conv1 -> self.init_3_conv1, buffer with unperturbed value + self.register_buffer('init_%s' % name, v.clone()) + # Add parameter 'dz', etc for any variable listed in residuals + if k in residual_layers: + # 3_conv1 -> self.d3_conv1, parameter initialized to 0 + dname = 'd' + name + setattr(self, dname, torch.nn.Parameter(torch.zeros_like(v))) + # Change model to add self.d[name] after computing layer k. + if k != 'z': + self.edit_layer(k, add_adjustment, attr=dname) + + def forward(self): + return super().forward(self.init_z + getattr(self, 'dz', 0)) + +class FixedGANPriorGenerator(nethook.InstrumentedModel): + ''' + Combines the ideas of ResidualGenerator and GANPriorRUNetGenerator. + ''' + def __init__(self, generator, z, additive=False): + self.additive = additive + # To begin with, we want to glue skip connections into our + # generator. Modify its 'forward' method to accept skip args. + generator = SkipAdjustedSequence(generator) + skip_layers = ['layer8', 'layer10', 'layer12', 'layer14'] + # Gather some initial values programmatically with a temporary hook. + with torch.no_grad(), nethook.InstrumentedModel(generator) as g: + g.retain_layers([n for n in ( + skip_layers) + if n != 'z']) + init_out = g(z) + init_layers = g.retained_features() + init_layers['z'] = z + # Then, permanently hook the layers of the generator to add + # residual adjustments dz, d1, d2, etc at each layer. + super().__init__(generator) + for k, v in init_layers.items(): + # Record all the init_N values for reporting and reference. + name = k.replace('layer', '', 1).replace('.', '_') + self.register_buffer('init_%s' % name, v.clone()) + # Now the deep image prior u-net side, melding with pixels. + # Start with a fixed random featuremap + seed = 1 + rng = numpy.random.RandomState(seed) + self.register_buffer('noise', torch.from_numpy( + rng.randn(1, 32, 256, 256)).float()) + # put through 8 conv layers + self.down14 = UnetDownsample(32, 32, self.init_14.size(1), 4, stride=1, + rng=rng) + self.down12 = UnetDownsample(32, 32, self.init_12.size(1), 4, rng=rng) + self.down10 = UnetDownsample(32, 32, self.init_10.size(1), 4, rng=rng) + self.down8 = UnetDownsample(32, 0, self.init_8.size(1), 4, rng=rng) + # Finally, also retain the editing layer, layer4 + self.train(True) + + def forward(self, z=None): + # First run the deep-image-prior noise maker. + z14, s14 = self.down14(self.noise) + z12, s12 = self.down12(z14) + z10, s10 = self.down10(z12) + _, s8 = self.down8(z10) + # _, s6 = self.down6(z8) + # _, s4 = self.down4(z6) + if z is None: + z = self.init_z + # Collect together adjustments before running the generator. + if self.additive: + x = super().forward(z, + add_layer8=(s8), + add_layer10=(s10), + add_layer12=(s12), + add_layer14=(s14), + ) + else: + x = super().forward(z, + mult_layer8=(1 + s8), + mult_layer10=(1 + s10), + mult_layer12=(1 + s12), + mult_layer14=(1 + s14), + ) + return dict( + x=x, + # Note: this is retained before it is multiplied + s8=s8, + s10=s10, + s12=s12, + s14=s14) + +class BaselineTunedDirectGenerator(nethook.InstrumentedModel): + ''' + Combines the ideas of ResidualGenerator and GANPriorRUNetGenerator. + ''' + def __init__(self, generator, z, tune_layers=None): + # To begin with, we want to glue skip connections into our + # generator. Modify its 'forward' method to accept skip args. + generator = SkipAdjustedSequence(generator) + if tune_layers is None: + tune_layers = ['layer8', 'layer10', 'layer12', 'layer14'] + # Gather some initial values programmatically with a temporary hook. + with torch.no_grad(), nethook.InstrumentedModel(generator) as g: + g.retain_layers([n for n in ( + tune_layers) + if n != 'z']) + init_out = g(z) + init_layers = g.retained_features() + init_layers['z'] = z + # Then, permanently hook the layers of the generator to add + # residual adjustments dz, d1, d2, etc at each layer. + super().__init__(generator) + self.adjustments = [] + for k, v in init_layers.items(): + # Record all the init_N values for reporting and reference. + name = k.replace('layer', '', 1).replace('.', '_') + dname = 'd%s' % name + self.register_buffer('init_%s' % name, v.clone()) + if 'layer' in k: + self.adjustments.append(('mult_%s' % k, dname)) + setattr(self, dname, torch.nn.Parameter(torch.zeros_like(v))) + self.train(True) + + def forward(self, z=None, **kwargs): + # Collect together adjustments before running the generator. + kwadj = {k: 1 + + kwargs.get(dname, getattr(self, dname)) # Allow kwargs to override + for k, dname in self.adjustments} + if z is None: + z = self.init_z + x = super().forward(z, **kwadj) + kwout = {dname: getattr(self, dname) for k, dname in self.adjustments} + return dict(x=x, **kwout) + +class SkipAdjustedSequence(torch.nn.Sequential): + def __init__(self, sequential, share_weights=False): + ''' + Creates a subsequence of a pytorch Sequential model, copying over + modules together with parameters for the subsequence. Only + modules from first_layer to last_layer (inclusive) are included. + + If share_weights is True, then references the original modules + and their parameters without copying them. Otherwise, by default, + makes a separate brand-new copy. + ''' + included_children = OrderedDict() + for name, layer in sequential._modules.items(): + included_children[name] = layer if share_weights else ( + copy.deepcopy(layer)) + if not len(included_children): + raise ValueError('Empty subsequence') + super().__init__(OrderedDict(included_children)) + + def forward(this, x, **kwargs): + ''' + Runs the sequence, except after each step 'layer', adds + any 'add_layer' value from kwargs to the output; similarly + multiplies any 'mult_layer' value from kwargs if present. + ''' + seen = set() + for name, layer in this._modules.items(): + x = layer(x) + add = kwargs.get('add_' + name, None) + if add is not None: + x = x + add + seen.add('add_' + name) + mult = kwargs.get('mult_' + name, None) + if mult is not None: + x = x * mult + seen.add('mult_' + name) + for name in kwargs.keys(): + assert name in seen, '%s not applied' % name + return x + +class PixelNormLayer(torch.nn.Module): + def __init__(self): + super(PixelNormLayer, self).__init__() + + def forward(self, x): + return x / torch.sqrt(torch.mean(x**2, dim=1, keepdim=True) + 1e-8) + +def add_adjustment(x, idecoder, attr): + adjustment = getattr(idecoder, attr) + x = x + adjustment + return x + diff --git a/netdissect/evalablate.py b/netdissect/evalablate.py new file mode 100644 index 0000000000000000000000000000000000000000..cc0422638699e4b7fe15dc7ed8193ecdd5a5a44a --- /dev/null +++ b/netdissect/evalablate.py @@ -0,0 +1,231 @@ +import torch, sys, os, argparse, textwrap, numbers, numpy, json, PIL +from torchvision import transforms +from torch.utils.data import TensorDataset +from netdissect import pbar +from netdissect.nethook import edit_layers +from netdissect.zdataset import standard_z_sample +from netdissect.autoeval import autoimport_eval +from netdissect.easydict import EasyDict +from netdissect.modelconfig import create_instrumented_model + +help_epilog = '''\ +Example: + +python -m netdissect.evalablate \ + --segmenter "netdissect.segmenter.UnifiedParsingSegmenter(segsizes=[256], segdiv='quad')" \ + --model "proggan.from_pth_file('models/lsun_models/${SCENE}_lsun.pth')" \ + --outdir dissect/dissectdir \ + --classes mirror coffeetable tree \ + --layers layer4 \ + --size 1000 + +Output layout: +dissectdir/layer5/ablation/mirror-iqr.json +{ class: "mirror", + classnum: 43, + pixel_total: 41342300, + class_pixels: 1234531, + layer: "layer5", + ranking: "mirror-iqr", + ablation_units: [341, 23, 12, 142, 83, ...] + ablation_pixels: [143242, 132344, 429931, ...] +} + +''' + +def main(): + # Training settings + def strpair(arg): + p = tuple(arg.split(':')) + if len(p) == 1: + p = p + p + return p + + parser = argparse.ArgumentParser(description='Ablation eval', + epilog=textwrap.dedent(help_epilog), + formatter_class=argparse.RawDescriptionHelpFormatter) + parser.add_argument('--model', type=str, default=None, + help='constructor for the model to test') + parser.add_argument('--pthfile', type=str, default=None, + help='filename of .pth file for the model') + parser.add_argument('--outdir', type=str, default='dissect', required=True, + help='directory for dissection output') + parser.add_argument('--layers', type=strpair, nargs='+', + help='space-separated list of layer names to edit' + + ', in the form layername[:reportedname]') + parser.add_argument('--classes', type=str, nargs='+', + help='space-separated list of class names to ablate') + parser.add_argument('--metric', type=str, default='iou', + help='ordering metric for selecting units') + parser.add_argument('--unitcount', type=int, default=30, + help='number of units to ablate') + parser.add_argument('--segmenter', type=str, + help='directory containing segmentation dataset') + parser.add_argument('--netname', type=str, default=None, + help='name for network in generated reports') + parser.add_argument('--batch_size', type=int, default=5, + help='batch size for forward pass') + parser.add_argument('--size', type=int, default=200, + help='number of images to test') + parser.add_argument('--no-cuda', action='store_true', default=False, + help='disables CUDA usage') + parser.add_argument('--quiet', action='store_true', default=False, + help='silences console output') + if len(sys.argv) == 1: + parser.print_usage(sys.stderr) + sys.exit(1) + args = parser.parse_args() + + # Set up console output + pbar.verbose(not args.quiet) + + # Speed up pytorch + torch.backends.cudnn.benchmark = True + + # Set up CUDA + args.cuda = not args.no_cuda and torch.cuda.is_available() + if args.cuda: + torch.backends.cudnn.benchmark = True + + # Take defaults for model constructor etc from dissect.json settings. + with open(os.path.join(args.outdir, 'dissect.json')) as f: + dissection = EasyDict(json.load(f)) + if args.model is None: + args.model = dissection.settings.model + if args.pthfile is None: + args.pthfile = dissection.settings.pthfile + if args.segmenter is None: + args.segmenter = dissection.settings.segmenter + + # Instantiate generator + model = create_instrumented_model(args, gen=True, edit=True) + if model is None: + print('No model specified') + sys.exit(1) + + # Instantiate model + device = next(model.parameters()).device + input_shape = model.input_shape + + # 4d input if convolutional, 2d input if first layer is linear. + raw_sample = standard_z_sample(args.size, input_shape[1], seed=2).view( + (args.size,) + input_shape[1:]) + dataset = TensorDataset(raw_sample) + + # Create the segmenter + segmenter = autoimport_eval(args.segmenter) + + # Now do the actual work. + labelnames, catnames = ( + segmenter.get_label_and_category_names(dataset)) + label_category = [catnames.index(c) if c in catnames else 0 + for l, c in labelnames] + labelnum_from_name = {n[0]: i for i, n in enumerate(labelnames)} + + segloader = torch.utils.data.DataLoader(dataset, + batch_size=args.batch_size, num_workers=10, + pin_memory=(device.type == 'cuda')) + + # Index the dissection layers by layer name. + dissect_layer = {lrec.layer: lrec for lrec in dissection.layers} + + # First, collect a baseline + for l in model.ablation: + model.ablation[l] = None + + # For each sort-order, do an ablation + for classname in pbar(args.classes): + pbar.post(c=classname) + for layername in pbar(model.ablation): + pbar.post(l=layername) + rankname = '%s-%s' % (classname, args.metric) + classnum = labelnum_from_name[classname] + try: + ranking = next(r for r in dissect_layer[layername].rankings + if r.name == rankname) + except: + print('%s not found' % rankname) + sys.exit(1) + ordering = numpy.argsort(ranking.score) + # Check if already done + ablationdir = os.path.join(args.outdir, layername, 'pixablation') + if os.path.isfile(os.path.join(ablationdir, '%s.json'%rankname)): + with open(os.path.join(ablationdir, '%s.json'%rankname)) as f: + data = EasyDict(json.load(f)) + # If the unit ordering is not the same, something is wrong + if not all(a == o + for a, o in zip(data.ablation_units, ordering)): + continue + if len(data.ablation_effects) >= args.unitcount: + continue # file already done. + measurements = data.ablation_effects + measurements = measure_ablation(segmenter, segloader, + model, classnum, layername, ordering[:args.unitcount]) + measurements = measurements.cpu().numpy().tolist() + os.makedirs(ablationdir, exist_ok=True) + with open(os.path.join(ablationdir, '%s.json'%rankname), 'w') as f: + json.dump(dict( + classname=classname, + classnum=classnum, + baseline=measurements[0], + layer=layername, + metric=args.metric, + ablation_units=ordering.tolist(), + ablation_effects=measurements[1:]), f) + +def measure_ablation(segmenter, loader, model, classnum, layer, ordering): + total_bincount = 0 + data_size = 0 + device = next(model.parameters()).device + for l in model.ablation: + model.ablation[l] = None + feature_units = model.feature_shape[layer][1] + feature_shape = model.feature_shape[layer][2:] + repeats = len(ordering) + total_scores = torch.zeros(repeats + 1) + for i, batch in enumerate(pbar(loader)): + z_batch = batch[0] + model.ablation[layer] = None + tensor_images = model(z_batch.to(device)) + seg = segmenter.segment_batch(tensor_images, downsample=2) + mask = (seg == classnum).max(1)[0] + downsampled_seg = torch.nn.functional.adaptive_avg_pool2d( + mask.float()[:,None,:,:], feature_shape)[:,0,:,:] + total_scores[0] += downsampled_seg.sum().cpu() + # Now we need to do an intervention for every location + # that had a nonzero downsampled_seg, if any. + interventions_needed = downsampled_seg.nonzero() + location_count = len(interventions_needed) + if location_count == 0: + continue + interventions_needed = interventions_needed.repeat(repeats, 1) + inter_z = batch[0][interventions_needed[:,0]].to(device) + inter_chan = torch.zeros(repeats, location_count, feature_units, + device=device) + for j, u in enumerate(ordering): + inter_chan[j:, :, u] = 1 + inter_chan = inter_chan.view(len(inter_z), feature_units) + inter_loc = interventions_needed[:,1:] + scores = torch.zeros(len(inter_z)) + batch_size = len(batch[0]) + for j in range(0, len(inter_z), batch_size): + ibz = inter_z[j:j+batch_size] + ibl = inter_loc[j:j+batch_size].t() + imask = torch.zeros((len(ibz),) + feature_shape, device=ibz.device) + imask[(torch.arange(len(ibz)),) + tuple(ibl)] = 1 + ibc = inter_chan[j:j+batch_size] + model.ablation[layer] = ( + imask.float()[:,None,:,:] * ibc[:,:,None,None]) + tensor_images = model(ibz) + seg = segmenter.segment_batch(tensor_images, downsample=2) + mask = (seg == classnum).max(1)[0] + downsampled_iseg = torch.nn.functional.adaptive_avg_pool2d( + mask.float()[:,None,:,:], feature_shape)[:,0,:,:] + scores[j:j+batch_size] = downsampled_iseg[ + (torch.arange(len(ibz)),) + tuple(ibl)] + scores = scores.view(repeats, location_count).sum(1) + total_scores[1:] += scores + return total_scores + +if __name__ == '__main__': + main() diff --git a/netdissect/frechet_distance.py b/netdissect/frechet_distance.py new file mode 100644 index 0000000000000000000000000000000000000000..8ce1435aa7eff4d18489193acdba13df391f8a9b --- /dev/null +++ b/netdissect/frechet_distance.py @@ -0,0 +1,118 @@ +#!/usr/bin/env python3 +"""Calculates the Frechet Distance (FD) between two samples. + +Code apapted from https://github.com/bioinf-jku/TTUR to use PyTorch instead +of Tensorflow + +Copyright 2018 Institute of Bioinformatics, JKU Linz + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +""" +import numpy as np +import torch +from scipy import linalg + +def sample_frechet_distance(sample1, sample2, eps=1e-6, + return_components=False): + ''' + Both samples should be numpy arrays. + Returns the Frechet distance. + ''' + (mu1, sigma1), (mu2, sigma2) = [calculate_activation_statistics(s) + for s in [sample1, sample2]] + return calculate_frechet_distance(mu1, sigma1, mu2, sigma2, eps=eps, + return_components=return_components) + +def calculate_frechet_distance(mu1, sigma1, mu2, sigma2, eps=1e-6, + return_components=False): + """Numpy implementation of the Frechet Distance. + The Frechet distance between two multivariate Gaussians X_1 ~ N(mu_1, C_1) + and X_2 ~ N(mu_2, C_2) is + d^2 = ||mu_1 - mu_2||^2 + Tr(C_1 + C_2 - 2*sqrt(C_1*C_2)). + + Stable version by Dougal J. Sutherland. + + Params: + -- mu1 : Numpy array containing the activations of a layer of the + inception net (like returned by the function 'get_predictions') + for generated samples. + -- mu2 : The sample mean over activations, precalculated on an + representative data set. + -- sigma1: The covariance matrix over activations for generated samples. + -- sigma2: The covariance matrix over activations, precalculated on an + representative data set. + + Returns: + -- : The Frechet Distance. + """ + + mu1 = np.atleast_1d(mu1) + mu2 = np.atleast_1d(mu2) + + sigma1 = np.atleast_2d(sigma1) + sigma2 = np.atleast_2d(sigma2) + + assert mu1.shape == mu2.shape, \ + 'Training and test mean vectors have different lengths' + assert sigma1.shape == sigma2.shape, \ + 'Training and test covariances have different dimensions' + + diff = mu1 - mu2 + + # Product might be almost singular + covmean, _ = linalg.sqrtm(sigma1.dot(sigma2), disp=False) + if not np.isfinite(covmean).all(): + msg = ('fid calculation produces singular product; ' + 'adding %s to diagonal of cov estimates') % eps + print(msg) + offset = np.eye(sigma1.shape[0]) * eps + covmean = linalg.sqrtm((sigma1 + offset).dot(sigma2 + offset)) + + # Numerical error might give slight imaginary component + if np.iscomplexobj(covmean): + if not np.allclose(np.diagonal(covmean).imag, 0, atol=1e-3): + m = np.max(np.abs(covmean.imag)) + raise ValueError('Imaginary component {}'.format(m)) + covmean = covmean.real + + tr_covmean = np.trace(covmean) + + meandiff = diff.dot(diff) + covdiff = np.trace(sigma1) + np.trace(sigma2) - 2 * tr_covmean + if return_components: + return (meandiff + covdiff, meandiff, covdiff) + else: + return meandiff + covdiff + + +def calculate_activation_statistics(act): + """Calculation of the statistics used by the FID. + Params: + -- files : List of image files paths + -- model : Instance of inception model + -- batch_size : The images numpy array is split into batches with + batch size batch_size. A reasonable batch size + depends on the hardware. + -- dims : Dimensionality of features returned by Inception + -- cuda : If set to True, use GPU + -- verbose : If set to True and parameter out_step is given, the + number of calculated batches is reported. + Returns: + -- mu : The mean over samples of the activations of the pool_3 layer of + the inception model. + -- sigma : The covariance matrix of the activations of the pool_3 layer of + the inception model. + """ + mu = np.mean(act, axis=0) + sigma = np.cov(act, rowvar=False) + return mu, sigma diff --git a/netdissect/fsd.py b/netdissect/fsd.py new file mode 100644 index 0000000000000000000000000000000000000000..86f70663516a7113962f02ad6d959b0a75fe2f3c --- /dev/null +++ b/netdissect/fsd.py @@ -0,0 +1,221 @@ +import torch, argparse, sys, os, numpy +from .sampler import FixedRandomSubsetSampler, FixedSubsetSampler +from torch.utils.data import DataLoader +from torchvision import transforms +from . import pbar +from . import zdataset +from . import segmenter +from . import frechet_distance +from . import parallelfolder + + +NUM_OBJECTS=336 + +def main(): + parser = argparse.ArgumentParser(description='Net dissect utility', + prog='python -m %s.fsd' % __package__) + parser.add_argument('true_dir') + parser.add_argument('gen_dir') + parser.add_argument('--size', type=int, default=10000) + parser.add_argument('--cachedir', default=None) + parser.add_argument('--histout', default=None) + parser.add_argument('--maxscale', type=float, default=50) + parser.add_argument('--labelcount', type=int, default=30) + parser.add_argument('--dpi', type=float, default=100) + if len(sys.argv) == 1: + parser.print_usage(sys.stderr) + sys.exit(1) + args = parser.parse_args() + true_dir, gen_dir = args.true_dir, args.gen_dir + seed1, seed2 = [1, 1 if true_dir != gen_dir else 2] + true_tally, gen_tally = [ + cached_tally_directory(d, size=args.size, cachedir=args.cachedir, + seed=seed) + for d, seed in [(true_dir, seed1), (gen_dir, seed2)]] + fsd, meandiff, covdiff = frechet_distance.sample_frechet_distance( + true_tally * 100, gen_tally * 100, return_components=True) + print('fsd: %f; meandiff: %f; covdiff: %f' % (fsd, meandiff, covdiff)) + if args.histout is not None: + diff_figure(true_tally * 100, gen_tally * 100, + labelcount=args.labelcount, + maxscale=args.maxscale, + dpi=args.dpi + ).savefig(args.histout) + +def cached_tally_directory(directory, size=10000, cachedir=None, seed=1, + download_from=None): + basename = ('%s_segtally_%d.npy' % (directory, size)).replace('/', '_') + if seed != 1: + basename = '%d_%s' % (seed, basename) + if cachedir is not None: + filename = os.path.join(cachedir, basename.replace('/', '_')) + else: + filename = basename + if not os.path.isfile(filename) and download_from: + from urllib.request import urlretrieve + from urllib.parse import urljoin + with pbar.reporthook() as hook: + urlretrieve(urljoin(download_from, basename), filename, + reporthook=hook) + if os.path.isfile(filename): + return numpy.load(filename) + os.makedirs(cachedir, exist_ok=True) + result = tally_directory(directory, size, seed=seed) + numpy.save(filename, result) + return result + +def tally_directory(directory, size=10000, seed=1): + dataset = parallelfolder.ParallelImageFolders( + [directory], + transform=transforms.Compose([ + transforms.Resize(256), + transforms.CenterCrop(256), + transforms.ToTensor(), + transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5)) + ])) + loader = DataLoader(dataset, + sampler=FixedRandomSubsetSampler(dataset, end=size, + seed=seed), + batch_size=10, pin_memory=True) + upp = segmenter.UnifiedParsingSegmenter() + labelnames, catnames = upp.get_label_and_category_names() + result = numpy.zeros((size, NUM_OBJECTS), dtype=numpy.float) + batch_result = torch.zeros(loader.batch_size, NUM_OBJECTS, + dtype=torch.float).cuda() + with torch.no_grad(): + batch_index = 0 + for [batch] in pbar(loader): + seg_result = upp.segment_batch(batch.cuda()) + for i in range(len(batch)): + batch_result[i] = ( + seg_result[i,0].view(-1).bincount( + minlength=NUM_OBJECTS).float() + / (seg_result.shape[2] * seg_result.shape[3]) + ) + result[batch_index:batch_index+len(batch)] = ( + batch_result.cpu().numpy()) + batch_index += len(batch) + return result + +def tally_dataset_objects(dataset, size=10000): + loader = DataLoader(dataset, + sampler=FixedRandomSubsetSampler(dataset, end=size), + batch_size=10, pin_memory=True) + upp = segmenter.UnifiedParsingSegmenter() + labelnames, catnames = upp.get_label_and_category_names() + result = numpy.zeros((size, NUM_OBJECTS), dtype=numpy.float) + batch_result = torch.zeros(loader.batch_size, NUM_OBJECTS, + dtype=torch.float).cuda() + with torch.no_grad(): + batch_index = 0 + for [batch] in pbar(loader): + seg_result = upp.segment_batch(batch.cuda()) + for i in range(len(batch)): + batch_result[i] = ( + seg_result[i,0].view(-1).bincount( + minlength=NUM_OBJECTS).float() + / (seg_result.shape[2] * seg_result.shape[3]) + ) + result[batch_index:batch_index+len(batch)] = ( + batch_result.cpu().numpy()) + batch_index += len(batch) + return result + +def tally_generated_objects(model, size=10000): + zds = zdataset.z_dataset_for_model(model, size) + loader = DataLoader(zds, batch_size=10, pin_memory=True) + upp = segmenter.UnifiedParsingSegmenter() + labelnames, catnames = upp.get_label_and_category_names() + result = numpy.zeros((size, NUM_OBJECTS), dtype=numpy.float) + batch_result = torch.zeros(loader.batch_size, NUM_OBJECTS, + dtype=torch.float).cuda() + with torch.no_grad(): + batch_index = 0 + for [zbatch] in pbar(loader): + img = model(zbatch.cuda()) + seg_result = upp.segment_batch(img) + for i in range(len(zbatch)): + batch_result[i] = ( + seg_result[i,0].view(-1).bincount( + minlength=NUM_OBJECTS).float() + / (seg_result.shape[2] * seg_result.shape[3]) + ) + result[batch_index:batch_index+len(zbatch)] = ( + batch_result.cpu().numpy()) + batch_index += len(zbatch) + return result + +def diff_figure(ttally, gtally, + labelcount=30, labelleft=True, dpi=100, + maxscale=50.0, legend=False): + from matplotlib.backends.backend_agg import FigureCanvasAgg as FigureCanvas + from matplotlib.figure import Figure + tresult, gresult = [t.mean(0) for t in [ttally, gtally]] + upp = segmenter.UnifiedParsingSegmenter() + labelnames, catnames = upp.get_label_and_category_names() + x = [] + labels = [] + gen_amount = [] + change_frac = [] + true_amount = [] + for label in numpy.argsort(-tresult): + if label == 0 or labelnames[label][1] == 'material': + continue + if tresult[label] == 0: + break + x.append(len(x)) + labels.append(labelnames[label][0].split()[0]) + true_amount.append(tresult[label].item()) + gen_amount.append(gresult[label].item()) + change_frac.append((float(gresult[label] - tresult[label]) + / tresult[label])) + if len(x) >= labelcount: + break + fig = Figure(dpi=dpi, figsize=(1.4 + 5.0 * labelcount / 30, 4.0)) + FigureCanvas(fig) + a1, a0 = fig.subplots(2, 1, gridspec_kw = {'height_ratios':[1, 2]}) + a0.bar(x, change_frac, label='relative delta') + a0.set_xticks(x) + a0.set_xticklabels(labels, rotation='vertical') + if labelleft: + a0.set_ylabel('relative delta\n(gen - train) / train') + a0.set_xlim(-1.0, len(x)) + a0.set_ylim([-1, 1.1]) + a0.grid(axis='y', antialiased=False, alpha=0.25) + if legend: + a0.legend(loc=2) + prev_high = None + for ix, cf in enumerate(change_frac): + if cf > 1.15: + if prev_high == (ix - 1): + offset = 0.1 + else: + offset = 0.0 + prev_high = ix + a0.text(ix, 1.15 + offset, + '%.1f' % cf, horizontalalignment='center', size=6) + + a1.bar(x, true_amount, label='training') + a1.plot(x, gen_amount, linewidth=3, color='red', label='generated') + a1.set_yscale('log') + a1.set_xlim(-1.0, len(x)) + a1.set_ylim(maxscale / 5000, maxscale) + from matplotlib.ticker import LogLocator + # a1.yaxis.set_major_locator(LogLocator(subs=(1,))) + # a1.yaxis.set_minor_locator(LogLocator(subs=(1,), numdecs=10)) + # a1.yaxis.set_minor_locator(LogLocator(subs=(1,2,3,4,5,6,7,8,9))) + # a1.yaxis.set_minor_locator(yminor_locator) + if labelleft: + a1.set_ylabel('mean area\nlog scale') + if legend: + a1.legend() + a1.set_yticks([1e-2, 1e-1, 1.0, 1e+1]) + a1.set_yticks([a * b for a in [1e-2, 1e-1, 1.0, 1e+1] for b in range(1,10) + if maxscale / 5000 <= a * b <= maxscale], + True) # minor ticks. + a1.set_xticks([]) + fig.tight_layout() + return fig + +if __name__ == '__main__': + main() diff --git a/netdissect/fullablate.py b/netdissect/fullablate.py new file mode 100644 index 0000000000000000000000000000000000000000..4f89381c6ec3119bc4fa3d1de3a5b92c14b62cc5 --- /dev/null +++ b/netdissect/fullablate.py @@ -0,0 +1,218 @@ +import torch, sys, os, argparse, textwrap, numbers, numpy, json, PIL +from torchvision import transforms +from torch.utils.data import TensorDataset +from netdissect import pbar +from netdissect.nethook import edit_layers +from netdissect.zdataset import standard_z_sample +from netdissect.autoeval import autoimport_eval +from netdissect.easydict import EasyDict +from netdissect.modelconfig import create_instrumented_model + +help_epilog = '''\ +Example: + +python -m netdissect.evalablate \ + --segmenter "netdissect.GanImageSegmenter(segvocab='lowres', segsizes=[160,288], segdiv='quad')" \ + --model "proggan.from_pth_file('models/lsun_models/${SCENE}_lsun.pth')" \ + --outdir dissect/dissectdir \ + --classname tree \ + --layer layer4 \ + --size 1000 + +Output layout: +dissectdir/layer5/ablation/mirror-iqr.json +{ class: "mirror", + classnum: 43, + pixel_total: 41342300, + class_pixels: 1234531, + layer: "layer5", + ranking: "mirror-iqr", + ablation_units: [341, 23, 12, 142, 83, ...] + ablation_pixels: [143242, 132344, 429931, ...] +} + +''' + +def main(): + # Training settings + def strpair(arg): + p = tuple(arg.split(':')) + if len(p) == 1: + p = p + p + return p + + parser = argparse.ArgumentParser(description='Ablation eval', + epilog=textwrap.dedent(help_epilog), + formatter_class=argparse.RawDescriptionHelpFormatter) + parser.add_argument('--model', type=str, default=None, + help='constructor for the model to test') + parser.add_argument('--pthfile', type=str, default=None, + help='filename of .pth file for the model') + parser.add_argument('--outdir', type=str, default='dissect', required=True, + help='directory for dissection output') + parser.add_argument('--layer', type=strpair, + help='space-separated list of layer names to edit' + + ', in the form layername[:reportedname]') + parser.add_argument('--classname', type=str, + help='class name to ablate') + parser.add_argument('--metric', type=str, default='iou', + help='ordering metric for selecting units') + parser.add_argument('--unitcount', type=int, default=30, + help='number of units to ablate') + parser.add_argument('--segmenter', type=str, + help='directory containing segmentation dataset') + parser.add_argument('--netname', type=str, default=None, + help='name for network in generated reports') + parser.add_argument('--batch_size', type=int, default=25, + help='batch size for forward pass') + parser.add_argument('--mixed_units', action='store_true', default=False, + help='true to keep alpha for non-zeroed units') + parser.add_argument('--size', type=int, default=200, + help='number of images to test') + parser.add_argument('--no-cuda', action='store_true', default=False, + help='disables CUDA usage') + parser.add_argument('--quiet', action='store_true', default=False, + help='silences console output') + if len(sys.argv) == 1: + parser.print_usage(sys.stderr) + sys.exit(1) + args = parser.parse_args() + + # Set up console output + pbar.verbose(not args.quiet) + + # Speed up pytorch + torch.backends.cudnn.benchmark = True + + # Set up CUDA + args.cuda = not args.no_cuda and torch.cuda.is_available() + if args.cuda: + torch.backends.cudnn.benchmark = True + + # Take defaults for model constructor etc from dissect.json settings. + with open(os.path.join(args.outdir, 'dissect.json')) as f: + dissection = EasyDict(json.load(f)) + if args.model is None: + args.model = dissection.settings.model + if args.pthfile is None: + args.pthfile = dissection.settings.pthfile + if args.segmenter is None: + args.segmenter = dissection.settings.segmenter + if args.layer is None: + args.layer = dissection.settings.layers[0] + args.layers = [args.layer] + + # Also load specific analysis + layername = args.layer[1] + if args.metric == 'iou': + summary = dissection + else: + with open(os.path.join(args.outdir, layername, args.metric, + args.classname, 'summary.json')) as f: + summary = EasyDict(json.load(f)) + + # Instantiate generator + model = create_instrumented_model(args, gen=True, edit=True) + if model is None: + print('No model specified') + sys.exit(1) + + # Instantiate model + device = next(model.parameters()).device + input_shape = model.input_shape + + # 4d input if convolutional, 2d input if first layer is linear. + raw_sample = standard_z_sample(args.size, input_shape[1], seed=3).view( + (args.size,) + input_shape[1:]) + dataset = TensorDataset(raw_sample) + + # Create the segmenter + segmenter = autoimport_eval(args.segmenter) + + # Now do the actual work. + labelnames, catnames = ( + segmenter.get_label_and_category_names(dataset)) + label_category = [catnames.index(c) if c in catnames else 0 + for l, c in labelnames] + labelnum_from_name = {n[0]: i for i, n in enumerate(labelnames)} + + segloader = torch.utils.data.DataLoader(dataset, + batch_size=args.batch_size, num_workers=10, + pin_memory=(device.type == 'cuda')) + + # Index the dissection layers by layer name. + + # First, collect a baseline + for l in model.ablation: + model.ablation[l] = None + + # For each sort-order, do an ablation + classname = args.classname + classnum = labelnum_from_name[classname] + + # Get iou ranking from dissect.json + iou_rankname = '%s-%s' % (classname, 'iou') + dissect_layer = {lrec.layer: lrec for lrec in dissection.layers} + iou_ranking = next(r for r in dissect_layer[layername].rankings + if r.name == iou_rankname) + + # Get trained ranking from summary.json + rankname = '%s-%s' % (classname, args.metric) + summary_layer = {lrec.layer: lrec for lrec in summary.layers} + ranking = next(r for r in summary_layer[layername].rankings + if r.name == rankname) + + # Get ordering, first by ranking, then break ties by iou. + ordering = [t[2] for t in sorted([(s1, s2, i) + for i, (s1, s2) in enumerate(zip(ranking.score, iou_ranking.score))])] + values = (-numpy.array(ranking.score))[ordering] + if not args.mixed_units: + values[...] = 1 + + ablationdir = os.path.join(args.outdir, layername, 'fullablation') + measurements = measure_full_ablation(segmenter, segloader, + model, classnum, layername, + ordering[:args.unitcount], values[:args.unitcount]) + measurements = measurements.cpu().numpy().tolist() + os.makedirs(ablationdir, exist_ok=True) + with open(os.path.join(ablationdir, '%s.json'%rankname), 'w') as f: + json.dump(dict( + classname=classname, + classnum=classnum, + baseline=measurements[0], + layer=layername, + metric=args.metric, + ablation_units=ordering, + ablation_values=values.tolist(), + ablation_effects=measurements[1:]), f) + +def measure_full_ablation(segmenter, loader, model, classnum, layer, + ordering, values): + ''' + Quick and easy counting of segmented pixels reduced by ablating units. + ''' + device = next(model.parameters()).device + feature_units = model.feature_shape[layer][1] + feature_shape = model.feature_shape[layer][2:] + repeats = len(ordering) + total_scores = torch.zeros(repeats + 1) + print(ordering) + print(values.tolist()) + with torch.no_grad(): + for l in model.ablation: + model.ablation[l] = None + for i, [ibz] in enumerate(pbar(loader)): + ibz = ibz.cuda() + for num_units in pbar(range(len(ordering) + 1)): + ablation = torch.zeros(feature_units, device=device) + ablation[ordering[:num_units]] = torch.tensor( + values[:num_units]).to(ablation.device, ablation.dtype) + model.ablation[layer] = ablation + tensor_images = model(ibz) + seg = segmenter.segment_batch(tensor_images, downsample=2) + mask = (seg == classnum).max(1)[0] + total_scores[num_units] += mask.sum().float().cpu() + return total_scores + +if __name__ == '__main__': + main() diff --git a/netdissect/imgsave.py b/netdissect/imgsave.py new file mode 100644 index 0000000000000000000000000000000000000000..66915e15b4785b4819f00e677ed58e59f9756f85 --- /dev/null +++ b/netdissect/imgsave.py @@ -0,0 +1,62 @@ +# A utility for saving a large number of images quickly without +# blocking a single thread to wait for each individual image to save. + +import os +import PIL +from .workerpool import WorkerBase, WorkerPool +from . import pbar + + +def all_items_and_filenames(img_array, filename_pattern, index=()): + for i, data in enumerate(img_array): + inner_index = index + (i,) + if PIL.Image.isImageType(data): + yield data, (filename_pattern % inner_index) + else: + for img, name in all_items_and_filenames(data, filename_pattern, + inner_index): + yield img, name + +def expand_last_filename(img_array, filename_pattern): + index, data = (), img_array + while not PIL.Image.isImageType(data): + index += (len(data) - 1,) + data = data[len(data) - 1] + return filename_pattern % index + +def num_items(img_array): + num = 1 + while not PIL.Image.isImageType(img_array): + num *= len(img_array) + img_array = img_array[-1] + return num + +def save_image_set(img_array, filename_pattern, sourcefile=None): + ''' + Saves all the (PIL) images in the given array, using the + given filename pattern (which should contain a `%d` to get + the index number of the image). + ''' + if sourcefile is not None: + last_filename = expand_last_filename(img_array, filename_pattern) + # Do nothing if the last file exists and is newer than the sourcefile + if os.path.isfile(last_filename) and (os.path.getmtime(last_filename) + >= os.path.getmtime(sourcefile)): + pbar.descnext(None) + return + # Use multiple threads to write all the image files faster. + pool = WorkerPool(worker=SaveImageWorker) + for img, filename in pbar( + all_items_and_filenames(img_array, filename_pattern), + total=num_items(img_array)): + pool.add(img, filename) + pool.join() + +class SaveImageWorker(WorkerBase): + def work(self, img, filename, quality=99): + os.makedirs(os.path.dirname(filename), exist_ok=True) + img.save(filename, optimize=True, quality=quality) + +class SaveImagePool(WorkerPool): + def __init__(self, *args, **kwargs): + super().__init__(*args, worker=SaveImageWorker, **kwargs) diff --git a/netdissect/imgviz.py b/netdissect/imgviz.py new file mode 100644 index 0000000000000000000000000000000000000000..69ae33d14c72eadb0ab1c5c009bebdd8d292725d --- /dev/null +++ b/netdissect/imgviz.py @@ -0,0 +1,454 @@ +import PIL, torch, os +from monai.transforms import CenterSpatialCrop +import numpy as np +from . import upsample, renormalize, segviz, tally +from matplotlib import cm + +class ImageVisualizer: + def __init__(self, size, image_size=None, data_size=None, + renormalizer=None, scale_offset=None, level=None, actrange=None, + source=None, convolutions=None, quantiles=None, + percent_level=None): + ''' + An ImageVisualizer produces visualizations of unit activations + as heatmaps or overlays on top of the original image. The output + visualization size is given by `size`. This may be scaled + from the original image size `image_size` (inferred from source + if not specified) and activation `data_size` (inferred from + convolutions if not specified). Imagedata is renormalized as + rendered RGB using renormalizer (inferred from source if not + specified) and upsampling can be offset using scale_offset + (inferred from convolutions if not specified). Per-unit + `quantiles` can be provided for computing heatmap ranges + (default to 1% to 99% quantiles), and threshold levels + (default to `percent_level`=0.95). + ''' + if image_size is None and source is not None: + image_size = upsample.image_size_from_source(source) + if renormalizer is None and source is not None: + renormalizer = renormalize.renormalizer( + source=source, target='byte') + if scale_offset is None and convolutions is not None: + scale_offset = upsample.sequence_scale_offset(convolutions) + if data_size is None and convolutions is not None: + data_size = upsample.sequence_data_size(convolutions, image_size) + if level is None and quantiles is not None: + level = quantiles.quantiles([percent_level or 0.95])[:,0] + if actrange is None and quantiles is not None: + actrange = quantiles.quantiles([0.01, 0.99]) + if isinstance(size, int): + size = (size, size) + self.size = size + self.image_size = image_size + self.data_size = data_size + self.renormalizer = renormalizer + self.scale_offset = scale_offset + self.percent_level = percent_level + self.level = level + self.actrange = actrange + self.quantiles = quantiles + self.upsampler = None + if self.data_size is not None: + self.upsampler = upsample.upsampler(size, data_size, + image_size=self.image_size, + scale_offset=scale_offset) + + def heatmap(self, activations, unit=None, mode='bilinear', + amax=None, amin=None): + ''' + Produces a heatmap from the given activations. The unit, + if specified, is an index into the activations tensor, + and is also used to dereference quantile ranges. + ''' + if amax is None or amin is None: + amin, amax = self.range_for(activations, unit) + if unit is None: + a = activations + else: + a = activations[unit] + upsampler = self.upsampler_for(a) + a = upsampler(a[None,None,...], mode=mode)[0,0].cpu() + return PIL.Image.fromarray( + (cm.hot(((a - amin) / (1e-10 + amax - amin)).numpy()) * 255 + ).astype('uint8')) + + def segmentation(self, segmentations, label=None): + ''' + Visualizes the given segmentation tensor. If label is specified, + zeros all labels other than the given one. + ''' + if label is not None: + segmentations = segmentations.clone() + segmentations[segmentations != label] = 0 + return segviz.seg_as_image(segmentations, size=self.size) + + def segment_key(self, segmentations, segmodel, num=None, label=None): + ''' + Obtains a list of the top segment labels present in the given + segmetation tensor, for use in a legend. + ''' + if label is not None: + segmentations = segmentations.clone() + segmentations[segmentations != label] = 0 + if num is None: + num = self.size[0] // 17 + return segviz.segment_key(segmentations, segmodel, num) + + def segment_key_with_lbls(self, segmentations, seglbs): + ''' + Obtains a list of the top segment labels present in the given + segmetation tensor, for use in a legend. + ''' + return segviz.segment_key_with_lbls(segmentations, seglbs) + + def image(self, imagedata): + ''' + Converts the given tensor imagedata to a PIL image, scaling + and renormalizing as needed. + ''' + return PIL.Image.fromarray(self.pytorch_image(imagedata) + .permute(1, 2, 0).byte().cpu().numpy()) + + def masked_image(self, imagedata, activations=None, unit=None, + level=None, percent_level=None, **kwargs): + ''' + Visualizes the given activations, thresholded at a specified level, + overlaid on the given image, as a PIL image. + ''' + result_image = self.pytorch_masked_image(imagedata, + activations=activations, + unit=unit, level=level, percent_level=percent_level, + **kwargs) + return PIL.Image.fromarray( + result_image.permute(1, 2, 0).cpu().numpy()) + + def pytorch_masked_image(self, imagedata, activations=None, unit=None, + level=None, percent_level=None, thickness=1, mask=None, + border_color=None, outside_bright=0.5, inside_color=None): + ''' + Visualizes the given activations, thresholded at a specified level, + overlaid on the given image, as a pytorch byte tensor (channel first). + ''' + scaled_image = self.pytorch_image(imagedata).float().cpu() + if mask is None: + mask = self.pytorch_mask(activations, unit, level=level, + percent_level=percent_level).cpu() + border = border_from_mask(mask, thickness) + inside = (mask & (~border)) + outside = (~mask & (~border)) + inside, outside, border = [d.float() for d in [inside, outside, border]] + if border_color is None: + border_color = [255.0, 255.0, 0] # yellow + border_color = torch.tensor(border_color, + dtype=border.dtype, device=border.device)[:,None,None] + if inside_color is not None: + inside_color = torch.tensor(inside_color, + dtype=border.dtype, device=border.device)[:,None,None] + result_image = ( + (scaled_image if inside_color is None + else inside_color) * inside + + border_color * border + + outside_bright * scaled_image * outside).clamp(0, 255).byte() + return result_image + + def masked_delta(self, imagedata, activations, unit=None, + above=None, below=None): + ''' + Visualizes the given activations, thresholded at a specified level, + overlaid on the given image, as a PIL image. + ''' + result_image = self.pytorch_masked_delta(imagedata, activations, + unit=unit, above=above, below=below) + return PIL.Image.fromarray( + result_image.permute(1, 2, 0).cpu().numpy()) + + def pytorch_masked_delta(self, imagedata, delta, unit=None, + above=None, below=None): + ''' + Visualizes the given activations, thresholded at a specified level, + with green for high numbrers and red for low numbers. + ''' + scaled_image = self.pytorch_image(imagedata).float().cpu() + amask, bmask, aborder, bborder = [torch.tensor(0) for _ in range(4)] + if above is not None: + amask = self.pytorch_mask(delta, unit, level=above).cpu() + aborder = border_from_mask(amask) + if below is not None: + bmask = ~self.pytorch_mask(delta, unit, level=below).cpu() + bborder = border_from_mask(bmask) + inside = ((amask | bmask) & ~(aborder | bborder)) + outside = (~(amask | bmask) & ~(aborder | bborder)) + inside, outside, aborder, bborder = [d.float() + for d in [inside, outside, aborder, bborder]] + red, green = [torch.tensor(c, dtype=torch.float, device=aborder.device + )[:,None,None] for c in [[255, 0, 0], [0, 255, 0]]] + result_image = ( + scaled_image * inside + + green * aborder + + red * bborder + + 0.5 * scaled_image * outside).clamp(0, 255).byte() + return result_image + + def pytorch_mask(self, activations, unit, level=None, percent_level=None): + ''' + Computes a pytorch mask of the (upsampled) activations above a + specified level. + ''' + if unit is None: + a = activations + else: + a = activations[unit] + if level is None: + level = self.level_for(activations, unit, + percent_level=percent_level) + upsampler = self.upsampler_for(a) + return (upsampler(a[None, None,...])[0,0] > level) + + def pytorch_image(self, imagedata): + ''' + Scales the given image to the visualized size. returns as a + pytorch byte tensor, in (rgb, y, x) channel order. + ''' + if len(imagedata.shape) == 4: + imagedata = imagedata[0] + renormalizer = self.renormalizer_for(imagedata) + return torch.nn.functional.interpolate( + renormalizer(imagedata).float()[None,...], + size=self.size)[0] + + def upsampler_for(self, a): + ''' + Returns an upsampler instance, defaulting to simple upscaling + if a specific upsampler is not specified. + ''' + if self.upsampler is not None: + return self.upsampler + return upsample.upsampler(self.size, a.shape, + image_size=self.image_size, + scale_offset=self.scale_offset, + dtype=a.dtype, device=a.device) + + def range_for(self, activations, unit): + ''' + Returns a range of activations, using quantiles (1% to 99%) + if given, or just using the min and max of the data if + quantiles are not given. + ''' + if unit is not None and self.actrange is not None: + if hasattr(unit, '__len__'): + unit = unit[1] + return tuple(i.item() for i in self.actrange[unit]) + return activations.min().item(), activations.max().item() + + def level_for(self, activations, unit, percent_level=None): + ''' + Returns the cutoff level for a unit, using quantiles if given + or just using stats over the specific instance if not. + ''' + if unit is not None: + if hasattr(unit, '__len__'): + unit = unit[1] + if percent_level is not None and self.quantiles is not None: + return self.quantiles.quantiles(percent_level)[unit].item() + if self.level is not None: + return self.level[unit].item() + s, _ = activations.view(-1).sort() + if percent_level is None: + percent_level = self.percent_level or 0.95 + return s[int(len(s) * percent_level)] + + def renormalizer_for(self, image): + ''' + Returns the renormalizer to use for visualizing the tensor + image data as RGB. + ''' + if self.renormalizer is not None: + return self.renormalizer + return renormalize.renormalizer('zc', 'byte') + + def masked_image_grid_for_topk( + self, compute, dataset, topk, k=None, **kwargs): + def compute_viz(gather_indices, *data_batch): + acts_batch = compute(*data_batch) + if isinstance(acts_batch, tuple): + acts_batch, image_batch = acts_batch + else: + image_batch = data_batch[0] + for gather_for, acts, imgt in (zip(gather_indices, acts_batch, image_batch["image"])): + # TODO This is only a single direction + # Visualize all low-dimensional activations in that direction + ld_res = acts.shape[-1] + img_slices = torch.linspace(int(64/ld_res/2), 64-int(64/ld_res/2), ld_res, dtype=torch.long) + for unit, rank in gather_for: + yield((unit, rank), torch.stack([ + self.pytorch_masked_image( + # This will break when used for any other tasks + (imgt[..., img_depth]).repeat(3, 1, 1), + acts[..., ld_depth], + unit).permute(1,2,0).cpu() + for ld_depth, img_depth in enumerate(img_slices)])) + #for unit, rank in gather_for: + # three_channel_image = imgt[..., 0][0].repeat(3, 1, 1) + # yield((unit, rank), self.pytorch_masked_image(three_channel_image, acts[..., 0], unit).permute(1,2,0).cpu()) + gt = tally.gather_topk(compute_viz, dataset, topk=topk, k=k, **kwargs) + return gt.result() + + def masked_single_image_for_topk( + self, compute, dataset, topk, k=None, **kwargs): + def compute_viz(gather_indices, *data_batch): + acts_batch = compute(*data_batch) + if isinstance(acts_batch, tuple): + acts_batch, image_batch = acts_batch + else: + image_batch = data_batch[0] + for gather_for, acts, imgt in (zip(gather_indices, acts_batch, image_batch["image"])): + # TODO This is only a single direction + # Visualize all low-dimensional activations in that direction + ld_res = acts.shape[-1] + img_slices = torch.linspace(int(64/ld_res/2), 64-int(64/ld_res/2), ld_res, dtype=torch.long) + for unit, rank in gather_for: + #masked_acts = torch.zeros_like(acts[unit]) + #mask = (acts[unit] > self.level_for(acts[unit], unit)) + #masked_acts[mask] = acts[unit][mask] + masked_acts = torch.zeros_like(acts) + mask = (acts > self.level_for(acts, unit)) + masked_acts[mask] = acts[mask] + selected_dim = torch.argmax(torch.sum(masked_acts.view(-1, ld_res), dim=0)).item() + + yield((unit, rank), + self.pytorch_masked_image( + (imgt[..., img_slices[selected_dim]]).repeat(3, 1, 1), + acts[..., selected_dim], + unit).permute(1,2,0).cpu()[None, ...]) + #for unit, rank in gather_for: + # three_channel_image = imgt[..., 0][0].repeat(3, 1, 1) + # yield((unit, rank), self.pytorch_masked_image(three_channel_image, acts[..., 0], unit).permute(1,2,0).cpu()) + gt = tally.gather_topk(compute_viz, dataset, topk=topk, k=k, **kwargs) + return gt.result() + + def individual_masked_images_for_topk( + self, compute, dataset, topk, k=None, **kwargs): + # Example compute function: + # def compute(image_batch): + # image_batch = image_batch.cuda() + # acts_batch = model.retained_layer(layername) + gt = self.masked_image_grid_for_topk( + compute, dataset, topk, k=k, **kwargs) + return [[PIL.Image.fromarray(d.cpu().numpy()) for d in row] + for row in gt] + + def masked_images_for_topk( + self, compute, dataset, topk, k=None, gap=5, **kwargs): + # Example compute function: + # def compute(image_batch): + # image_batch = image_batch.cuda() + # acts_batch = model.retained_layer(layername) + gt = self.masked_image_grid_for_topk( + compute, dataset, topk, k=k, **kwargs) + return [strip_image_from_grid_row(row, gap=gap) for row in gt] + + def masked_single_images_for_topk( + self, compute, dataset, topk, k=None, gap=5, per_row=5, **kwargs): + # Example compute function: + # def compute(image_batch): + # image_batch = image_batch.cuda() + # acts_batch = model.retained_layer(layername) + gt = self.masked_single_image_for_topk( + compute, dataset, topk, k=k, **kwargs) + return [strip_image_from_grid_row(torch.vstack([x.unsqueeze(0) for x in row.squeeze(1).split(per_row, dim=0) if x.shape[0] == per_row]), gap=gap) for row in gt] + #return [strip_image_from_grid_row(torch.stack([gt[i+j] for j in range(per_row)]), gap=gap) for i in range(len(gt)//per_row)] + + def image_activation_tuples_for_topk( + self, compute, dataset, data_path, topk, k=None, **kwargs): + + def compute_viz(gather_indices, *data_batch): + acts_batch = compute(*data_batch) + if isinstance(acts_batch, tuple): + acts_batch, image_batch = acts_batch + else: + image_batch = data_batch[0] + + for gather_for, acts, path, level_idx in zip(gather_indices, acts_batch, image_batch["path"], image_batch["level_idx"]): + raw_ct = torch.tensor(np.load(os.path.join(data_path, 'raw', path)))[None, ...] + seg = torch.tensor(np.load(os.path.join(data_path, 'seg', path))) + + mask = torch.zeros_like(seg) + mask[seg == level_idx] = 1 + + crop = CenterSpatialCrop(64) + raw_ct_crop = crop(raw_ct) + mask_ct_crop = crop(raw_ct * mask[None, ...]) + + upsampled_acts = torch.nn.Upsample(size=(64,)*3, mode="trilinear", align_corners=True)(acts[None, ...]) + + # normalize activations to [0, 1] per unit + normalized_upsampled_acts = torch.clone(upsampled_acts) + normalized_upsampled_acts -= torch.amin(normalized_upsampled_acts, dim=(-3, -2, -1), keepdim=True) + normalized_upsampled_acts /= torch.amax(normalized_upsampled_acts, dim=(-3, -2, -1), keepdim=True) + + for unit, rank in gather_for: + mask = upsampled_acts[0, unit] > self.level_for(upsampled_acts, unit) + normalized_upsampled_acts[0, unit][~mask] = 0 + + yield ((unit, rank), torch.cat((raw_ct_crop.cpu(), normalized_upsampled_acts[0, unit][None, ...].detach().cpu(), mask_ct_crop.cpu()), dim=0)) + + gt = tally.gather_topk(compute_viz, dataset, topk=topk, k=k, **kwargs) + return gt.result() + + def masked_image_grid_for_row(self, compute, dataset, unit, indexes): + results = [] + for rank in indexes: + img_batch = dataset[rank][0][None,...] + acts_batch = compute(img_batch) + results.append(self.pytorch_masked_image( + img_batch[0], acts_batch[0], unit) + .permute(1,2,0).cpu()[None,...]) + return torch.cat(results) + + def masked_image_row(self, compute, dataset, unit, indexes, gap=5): + row = self.masked_image_grid_for_row( + compute, dataset, unit, indexes) + return strip_image_from_grid_row(row, gap=gap) + + def masked_image_for_conditional_topk(self, compute, dataset, + ctk, classnum, unit, k=10, gap=5): + row = self.masked_image_grid_for_row( + compute, dataset, unit, + ctk.conditional(classnum).result()[1][unit][:k]) + return strip_image_from_grid_row(row, gap=gap) + +def strip_image_from_grid_row(row, gap=5, bg=255): + strip = torch.full( + (row.shape[0] * (row.shape[3] + gap) - gap, + row.shape[1] * (row.shape[3] + gap) - gap, + row.shape[4]), bg, dtype=row.dtype) + for i in range(0, row.shape[0] * row.shape[1]): + strip[(i // row.shape[1]) * (row.shape[2] + gap) : ((i // row.shape[1])+1) * (row.shape[2] + gap) - gap, + (i % row.shape[1]) * (row.shape[3] + gap) : ((i % row.shape[1])+1) * (row.shape[3] + gap) - gap, + :] = row[i // row.shape[1]][i % row.shape[1]] + return PIL.Image.fromarray(strip.numpy()) + +def border_from_mask(mask, thickness=1, outside=True): + a = mask + out = torch.zeros_like(a) + for it in range(thickness): + h = (a[:-1,:] != a[1:,:]) + v = (a[:,:-1] != a[:,1:]) + d = (a[:-1,:-1] != a[1:,1:]) + u = (a[1:,:-1] != a[:-1,1:]) + out[:-1,:-1] |= d + out[1:,1:] |= d + out[1:,:-1] |= u + out[:-1,1:] |= u + out[:-1,:] |= h + out[1:,:] |= h + out[:,:-1] |= v + out[:,1:] |= v + if it > 0: + out |= a + a = out + if outside: + out &= ~mask + return out + + diff --git a/netdissect/invert.py b/netdissect/invert.py new file mode 100644 index 0000000000000000000000000000000000000000..7f50f32cd0d869db0ffa1114d03e6fcdf90a0aba --- /dev/null +++ b/netdissect/invert.py @@ -0,0 +1,293 @@ +import torch, itertools, os +from collections import defaultdict, OrderedDict +from gan_training import checkpoints +from . import nethook, pbar, LBFGS +from seeing.nethook import InstrumentedModel +from torch.nn.functional import mse_loss + +def refine_z_lbfgs(init_z, G, target_x, F=None, lambda_f=0, + R=None, lambda_r=0, num_steps=1000, quiet=False, + show=None, show_every=100): + ''' + Starting at init_z, uss LBFGS to find a z for which G(z) -> target_x. + By default uses l1_loss, but can also mse(F(G(z)), F(target_x)) + ''' + z = init_z.clone() + parameters = [z] + nethook.set_requires_grad(False, G) + nethook.set_requires_grad(True, *parameters) + if lambda_f: + with torch.no_grad(): + target_f = F(target_x) + nethook.set_requires_grad(False, F) + + optimizer = LBFGS.FullBatchLBFGS(parameters) + + def closure(): + optimizer.zero_grad() + current_x = G(z) + loss = torch.nn.functional.l1_loss(target_x, current_x) + if lambda_f: + loss += torch.nn.functional.mse_loss(target_f, F(current_x) + ) * lambda_f + if lambda_r: + loss += R(z) * lambda_r + return loss + + pb = (lambda x: x) if quiet else pbar + + with torch.enable_grad(): + for step_num in pb(range(num_steps + 1)): + if step_num == 0: + loss = closure() + loss.backward() + lr, F_eval, G_eval = 0, 0, 0 + else: + options = {'closure': closure, 'current_loss': loss, + 'max_ls': 10} + loss, _, lr, _, _, _, _, _ = optimizer.step(options) + if show and (step_num % show_every == 0): + with torch.no_grad(): + show(x=G(z), z=z, loss=loss, it=step_num) + + return z + +def split_gen_layers(enc, gen, layername): + ''' + Given an inverter layername, splits the generator sequence into three: + (1) generator sequence before the layers to be inverted + (2) sequence of generator layers to be inverted by enc[layername] + (3) generator sequence after the layers to be inverted + ''' + info = list(enc.inverse_info().items()) + index = [i for i, (n, v) in enumerate(info) if n == layername][0] + upto_layer = info[index - 1][1]['first_layer'] if index > 0 else None + args = info[index][1] + first_layer = args['first_layer'] + layers = nethook.subsequence(gen, + first_layer=first_layer, upto_layer=upto_layer) + prev_layers = nethook.subsequence(gen, upto_layer=first_layer) + next_layers = (nethook.subsequence(gen, first_layer=upto_layer) if + upto_layer else torch.nn.Sequential()) + return prev_layers, layers, next_layers + +def last_gen_layername(enc, gen, layername): + _, layers, _ = split_gen_layers(enc, gen, layername) + return [n for n, c in layers.named_children()][-1] + +def layers_after(enc, layername): + layernames = [n for n, c in enc.named_children()] + index = layernames.index(layername) + if index + 1 < len(layernames): + return nethook.subsequence(enc, layernames[index + 1]) + else: + return torch.nn.Sequential() + +def train_inv_layer(enc, gen, dists, layername, combine_z=None, + batch_size=100, test_batches=10, checkpoint_dir='ckpts', + resume_from=None, logfile=None, **kwargs): + ''' + Inverts a single layer of a multilayer inverter. + Both enc and should be a nn.Sequential subclasses, and + layername specifies the layer of enc to train. That layer + of enc will be trained to invert a set of gen layers. + Which layers specifically are determined by split_gen_layers, + which depends on enc.inverse_info(), to specify how each inverter + layer relates to layers of gen. + ''' + if logfile is None: + logfile = os.path.join(checkpoint_dir, 'log.txt') + prev_layers, layers, next_layers = split_gen_layers(enc, gen, layername) + inv = getattr(enc, layername) + device = next(gen.parameters()).device + args = enc.inverse_info()[layername] + kwargs_out = {k: v for k, v in args.items() if k != 'first_layer'} + kwargs_out.update(kwargs) + if 'x_weight' not in kwargs_out: + kwargs_out['x_weight'] = 0 + nethook.set_requires_grad(False, layers, prev_layers, next_layers) + if combine_z is not None: + nethook.set_requires_grad(False, combine_z) + prev_layers_old = prev_layers + prev_layers = lambda *a: prev_layers_old(combine_z(*a)) + zsampler = infinite_sampler(dists, prev_layers, batch_size, device) + tsample = test_sampler(dists, prev_layers, batch_size, test_batches, device) + train_inverse(inv, layers, zsampler, test_sampler=tsample, + resume_from=resume_from, + checkpoint_dir=checkpoint_dir, logfile=logfile, + **kwargs_out) + +def train_inv_joint(enc, gen, dists, combine_z=None, + inv_layer=None, gen_layer=None, + batch_size=50, test_batches=10, + checkpoint_dir='ckpts', + logfile=None, **kwargs): + if logfile is None: + logfile = os.path.join(checkpoint_dir, 'log.txt') + device = next(gen.parameters()).device + zsampler = infinite_sampler(dists, combine_z, batch_size, device) + tsample = test_sampler(dists, combine_z, batch_size, test_batches, device) + + with InstrumentedModel(gen) as G, InstrumentedModel(enc) as E: + G.retain_layer(gen_layer, detach=False) + nethook.set_requires_grad(False, G) + E.retain_layer(inv_layer, detach=False) + train_inverse(E, G, zsampler, inv_layer, gen_layer, + r_weight=1.0, ir_weight=1.0, test_sampler=tsample, + checkpoint_dir=checkpoint_dir, + checkpoint_selector=lambda x: x.model, + logfile=logfile, **kwargs) + +def train_inverse(inv, gen, sampler, inv_layer=None, gen_layer=None, + z_weight=1.0, x_weight=1.0, r_weight=0.0, ir_weight=0.0, reg_weight=0.0, + adjust_z=None, regularize_z=None, + test_sampler=None, lr=0.01, lr_milestones=None, + epoch_batches=100, num_epochs=100, save_every=50, + logfile=None, + checkpoint_dir=None, checkpoint_selector=None, resume_from=None): + ''' + To set this up: + inv and gen should both be instrumented models, + and inv layer and gen layer should be retained on both of them + without detach. + ''' + if lr_milestones is None: + lr_milestones = [] + optimizer = torch.optim.Adam(inv.parameters(), lr=lr) + scheduler = torch.optim.lr_scheduler.MultiStepLR( + optimizer, milestones=lr_milestones, gamma=0.1) + + ckpts = checkpoints.CheckpointIO(checkpoint_dir) + ckpts.register_modules(optimizer=optimizer, scheduler=scheduler, + inv=inv if not checkpoint_selector else checkpoint_selector(inv)) + if resume_from is not None: + ckpts.load('ckpt_%d.pt' % resume_from) + start_epoch = resume_from + 1 + else: + start_epoch = 0 + + def inv_loss(z): + return sum(loss * weight + for loss, weight in component_loss(z).values()) + + def component_loss(true_z): + observed_x = gen(true_z) + if gen_layer: + true_r = gen.retained_layer(gen_layer, clear=True) + estimated_z = inv(observed_x) + if inv_layer: + inverted_r = inv.retained_layer(inv_layer, clear=True) + if adjust_z: + fixed_z = adjust_z(estimated_z, true_z) + else: + fixed_z = estimated_z + if x_weight or r_weight: + reconstructed_x = gen(fixed_z) + if gen_layer: + reconstructed_r = gen.retained_layer(gen_layer, clear=True) + losses = OrderedDict() + if reg_weight: + losses['reg'] = (regularize_z(estimated_z, true_z), reg_weight) + if z_weight: + losses['z'] = (mse_loss(true_z, estimated_z), z_weight) + if ir_weight: + losses['ir'] = (cor_square_error(true_r, inverted_r), ir_weight) + if x_weight: + losses['x'] = (mse_loss(observed_x, reconstructed_x), x_weight) + if r_weight: + losses['r'] = (cor_square_error(true_r, reconstructed_r), r_weight) + return losses + + with torch.no_grad(): + for epoch, epoch_loader in pbar( + epoch_grouper(sampler, epoch_batches, num_epochs=1+num_epochs, + start_epoch=start_epoch), + total=(1+num_epochs-start_epoch)): + if epoch > 0: + for (z_batch,) in epoch_loader: + with torch.enable_grad(): + optimizer.zero_grad() + loss = inv_loss(z_batch) + loss.backward() + pbar.post(l=loss.item()) + optimizer.step() + scheduler.step() + if test_sampler is not None: + stats = MeanStats() + for (z_batch,) in test_sampler: + stats.add(component_loss(z_batch), len(z_batch)) + logline = stats.logline(epoch) + pbar.print(logline) + if logfile is not None: + with open(logfile, 'a') as f: + f.write(logline + '\n') + elif epoch > 0: + pbar.print('%d: loss=%4g' % (epoch, loss.item())) + if epoch % save_every == 0 or epoch == num_epochs: + ckpts.save(epoch, 'ckpt_%d.pt' % epoch) + +def infinite_sampler(dists, f, batch_size, device): + ''' + Returns an infinite generator that runs through randomized z + batches, forever. + ''' + while True: + zs = [dist.sample([batch_size]).to(device) for dist in dists] + r = zs[0] if f is None else f(*zs) + yield (r,) + +def test_sampler(dists, f, batch_size, test_batches, device): + class TestSampler(): + def __init__(self): + self.num_batches = test_batches + self.zs_batches = [ + dist.sample([test_batches, batch_size]).to(device) + for dist in dists] + + def __iter__(self): + for i in range(self.num_batches): + zs = [uncombined[i] for uncombined in self.zs_batches] + r = zs[0] if f is None else f(*zs) + yield (r,) + return TestSampler() + +def epoch_grouper(loader, epoch_size, num_epochs=None, start_epoch=0): + ''' + To use with an infinite training loader: groups the training data + batches into epochs of the given size. + ''' + it = iter(loader) + epoch = start_epoch + while True: + chunk_it = itertools.islice(it, epoch_size) + try: + first_el = next(chunk_it) + except StopIteration: + return + yield epoch, itertools.chain((first_el,), chunk_it) + epoch += 1 + if num_epochs is not None and epoch >= num_epochs: + return + +def cor_square_error(x, y, eps=1e-12): + # Analogous to MSE, but in terms of Pearson's correlation + return (1.0 - torch.nn.functional.cosine_similarity(x, y, eps=eps)).mean() + + +class MeanStats: + def __init__(self): + self.tally = defaultdict(float) + self.count = 0 + + def add(self, c, size): + for n, (loss, weight) in c.items(): + self.tally[n] += loss.item() * size + self.count += size + + def summary(self): + return {n: v / self.count for n, v in self.tally.items()} + + def logline(self, i=None): + prefix = '' if i is None else '%d: ' % i + return prefix + ' '.join('%s=%4g' % (n, v) + for n, v in self.summary().items()) diff --git a/netdissect/labwidget.py b/netdissect/labwidget.py new file mode 100644 index 0000000000000000000000000000000000000000..def8a1dcfcae8947d9ce5d901607919fdc68705e --- /dev/null +++ b/netdissect/labwidget.py @@ -0,0 +1,965 @@ +""" +labwidget by David Bau. + +Base class for a lightweight javascript notebook widget framework +that is portable across Google colab and Jupyter notebooks. +No use of requirejs: the design uses all inline javascript. + +Defines Model, Widget, Trigger, and Property, which set up data binding +using the communication channels available in either google colab +environment or jupyter notebook. + +This module also defines Label, Textbox, Range, Choice, and Div +widgets; the code for these are good examples of usage of Widget, +Trigger, and Property objects. + +Within HTML widgets, user interaction should update the javascript +model using model.set('propname', value); this will propagate to +the python model and notify any registered python listeners; similarly +model.on('propname', callback) will listen for property changes +that come from python. + +TODO: Support jupyterlab also. +""" + +import json, html, re +from inspect import signature + +class Model(object): + ''' + Abstract base class that supports data binding. Within __init__, + a model subclass defines databound events and properties using: + + self.evtname = Trigger() + self.propname = Property(initval) + + Any Trigger or Property member can be watched by registering a + listener with `model.on('propname', callback)`. + + An event can be triggered by `model.evtname.trigger(value)`. + A property can be read with `model.propname`, and can be set by + `model.propname = value`; this also triggers notifications. + In both these cases, any registered listeners will be called + with the given value. + ''' + def on(self, name, cb): + ''' + Registers a listener for named events and properties. + A space-separated list of names can be provided as `name`. + ''' + for n in name.split(): + self.prop(n).on(cb) + return self + + def off(self, name, cb=None): + ''' + Unregisters a listener for named events and properties. + A space-separated list of names can be provided as `name`. + ''' + for n in name.split(): + self.prop(n).off(cb) + return self + + def prop(self, name): + ''' + Returns the underlying Trigger or Property object for a + property, rather than its held value. + ''' + curvalue = super().__getattribute__(name) + if not isinstance(curvalue, Trigger): + raise AttributeError('%s not a property or trigger but %s' + % (name, str(type(curvalue)))) + return curvalue + + def _initprop_(self, name, value): + ''' + To be overridden in base classes. Handles initialization of + a new Trigger or Property member. + ''' + value.name = name + value.target = self + return + + def __setattr__(self, name, value): + ''' + When a member is an Trigger or Property, then assignment notation + is delegated to the Trigger or Property so that notifications + and reparenting can be handled. That is, `model.name = value` + turns into `prop(name).set(value)`. + ''' + if hasattr(self, name): + curvalue = super().__getattribute__(name) + if isinstance(curvalue, Trigger): + # Delegte "set" to the underlying Property. + curvalue.set(value) + else: + super().__setattr__(name, value) + else: + super().__setattr__(name, value) + if isinstance(value, Trigger): + self._initprop_(name, value) + + def __getattribute__(self, name): + ''' + When a member is a Property, then property getter + notation is delegated to the peoperty object. + ''' + curvalue = super().__getattribute__(name) + if isinstance(curvalue, Property): + return curvalue.value + return curvalue + +class Widget(Model): + ''' + Base class for an HTML widget that uses a Javascript model object + to syncrhonize HTML view state with the backend Python model state. + Each widget subclass overrides widget_js to provide Javascript code + that defines the widget's behavior. This javascript will be wrapped + in an immediately-invoked function and included in the widget's HTML + representation (_repr_html_) when the widget is viewed. + + A widget's javascript is provided with two local variables: + + element - the widget's root HTML element. By default this is + a
but can be overridden in widget_html. + model - the object representing the data model for the widget. + within javascript. + + The model object provides the following javascript API: + + model.get('propname') obtains a current property value. + model.set('propname', 'value') requests a change in value. + model.on('propname', callback) listens for property changes. + model.trigger('evtname', value) triggers an event. + + Note that model.set just requests a change but does not change the + value immediately: model.get will not reflect the change until the + python backend has handled it and notified the javascript of the new + value, which will trigger any callbacks previously registered using + .on('propname', callback). Thus Widget impelements a V-shaped + notification protocol: + + User entry -> | -> User-visible feedback + js model.set -> | -> js.model.on callback + python prop.trigger -> | -> python prop.notify + python prop.handle + + Finally, all widgets provide standard databinding for style and data + properties, which are write-only (python-to-js) properties that + let python directly control CSS styles and HTML dataset attributes + for the top-level widget element. + ''' + + def __init__(self, style=None, data=None): + # In the jupyter case, there can be some delay between js injection + # and comm creation, so we need to queue some initial messages. + if WIDGET_ENV == 'jupyter': + self._comms = [] + self._queue = [] + # Each call to _repr_html_ creates a unique view instance. + self._viewcount = 0 + # Python notification is handled by Property objects. + def handle_remote_set(name, value): + with capture_output(self): # make errors visible. + self.prop(name).trigger(value) + self._recv_from_js_(handle_remote_set) + # The style and data properties come standard, and are used to + # control the style and data attributes on the toplevel element. + self.style = Property(style) + self.data = Property(data) + # Each widget has a "write" event that is used to insert + # html before the widget. + self.write = Trigger() + + def widget_js(self): + ''' + Override to define the javascript logic for the widget. Should + render the initial view based on the current model state (if not + already rendered using widget_html) and set up listeners to keep + the model and the view synchornized. + ''' + return '' + + def widget_html(self): + ''' + Override to define the initial HTML view of the widget. Should + define an element with id given by view_id(). + ''' + return f'
' + + def view_id(self): + ''' + Returns an HTML element id for the view currently being rendered. + Note that each time _repr_html_ is called, this id will change. + ''' + return f"_{id(self)}_{self._viewcount}" + + def std_attrs(self): + ''' + Returns id and (if applicable) style attributes, escaped and + formatted for use within the top-level element of widget HTML. + ''' + return (f'id="{self.view_id()}"' + + style_attr(self.style) + + data_attrs(self.data)) + + + def _repr_html_(self): + ''' + Returns the HTML code for the widget. + ''' + self._viewcount += 1 + json_data = json.dumps({ + k: v.value for k, v in vars(self).items() + if isinstance(v, Property)}) + json_data = re.sub(' {{ + var dummy = document.createElement('div'); + dummy.innerHTML = ev.value.trim(); + dummy.childNodes.forEach((item) => {{ + element.parentNode.insertBefore(item, element); + }}); + }}); + function upd(a) {{ return (e) => {{ for (k in e.value) {{ + element[a][k] = e.value[k]; + }}}}}} + model.on('style', upd('style')); + model.on('data', upd('dataset')); + ''') + + return ''.join([ + self.widget_html(), + '' + ]); + + def _initprop_(self, name, value): + if not hasattr(self, '_viewcount'): + raise ValueError('base Model __init__ must be called') + super()._initprop_(name, value) + def notify_js(event): + self._send_to_js_(id(self), name, event.value) + if isinstance(value, Trigger): + value.on(notify_js, internal=True) + + def _send_to_js_(self, *args): + if self._viewcount > 0: + if WIDGET_ENV == 'colab': + colab_output.eval_js(minify(f""" + (window.send_{id(self)} = window.send_{id(self)} || + new BroadcastChannel("channel_{id(self)}") + ).postMessage({json.dumps(args)}); + """), ignore_result=True) + elif WIDGET_ENV == 'jupyter': + if not self._comms: + self._queue.append(args) + return + for comm in self._comms: + comm.send(args) + + def _recv_from_js_(self, fn): + if WIDGET_ENV == 'colab': + colab_output.register_callback(f"invoke_{id(self)}", fn) + elif WIDGET_ENV == 'jupyter': + def handle_comm(msg): + fn(*(msg['content']['data'])) + # TODO: handle closing also. + def handle_close(close_msg): + comm_id = close_msg['content']['comm_id'] + self._comms = [c for c in self._comms if c.comm_id != comm_id] + def open_comm(comm, open_msg): + self._comms.append(comm) + comm.on_msg(handle_comm) + comm.on_close(handle_close) + comm.send('ok') + if self._queue: + for args in self._queue: + comm.send(args) + self._queue.clear() + if open_msg['content']['data']: + handle_comm(open_msg) + cname = "comm_" + str(id(self)) + COMM_MANAGER.register_target(cname, open_comm) + + def display(self): + from IPython.core.display import display + display(self) + return self + +class Trigger(object): + """ + Trigger is the base class for Property and other data-bound + field objects. Trigger holds a list of listeners that need to + be notified about the event. + + Multple Trigger objects can be tied (typically a parent Model can + have Triggers that are triggered by children models). To support + this, each Trigger can have a parent. + + Trigger objects provide a notification protocol where view + interactions trigger events at a leaf that are sent up to the + root Trigger to be handled. By default, the root handler accepts + events by notifying all listeners and children in the tree. + """ + def __init__(self): + self._listeners = [] + self.parent = None + # name and target are set in Model._initprop_. + self.name = None + self.target = None + def handle(self, value): + ''' + Method to override; called at the root when an event has been + triggered, and on a child when the parent has notified. By + default notifies all listeners. + ''' + self.notify(value) + def trigger(self, value=None): + ''' + Triggers an event to be handled by the root. By default, the root + handler will accept the event so all the listeners will be notified. + ''' + if self.parent is not None: + self.parent.trigger(value) + else: + self.handle(value) + def set(self, value): + ''' + Sets the parent Trigger. Child Triggers trigger events by + triggering parents, and in turn they handle notifications + that come from parents. + ''' + if self.parent is not None: + self.parent.off(self.handle) + self.parent = None + if isinstance(value, Trigger): + ancestor = value.parent + while ancestor is not None: + if ancestor == self: + raise ValueError('bound properties should not form a loop') + ancestor = ancestor.parent + self.parent = value + self.parent.on(self.handle, internal=True) + elif not isinstance(self, Property): + raise ValueError('only properties can be set to a value') + def notify(self, value=None): + ''' + Notifies listeners and children. If a listener accepts an argument, + the value will be passed as a single argument. + ''' + for cb, internal in self._listeners: + with enter_handler(self.name, internal) as ctx: + if ctx.silence: + # do not notify recursively... + # print(f'silenced recursive {self.name} {cb.__name__}') + pass + elif len(signature(cb).parameters) == 0: + cb() # no-parameter callback. + else: + cb(Event(value, self.name, self.target)) + def on(self, cb, internal=False): + ''' + Registers a listener. Calling multiple times registers + multiple listeners. + ''' + self._listeners.append((cb, internal)) + def off(self, cb=None): + ''' + Unregisters a listener. + ''' + self._listeners = [(c, i) for c, i in self._listeners + if c != cb and cb is not None] + +class Property(Trigger): + """ + A Property is just an Trigger that remembers its last value. + """ + def __init__(self, value=None): + ''' + Can be initialized with a starting value. + ''' + super().__init__() + self.set(value) + def handle(self, value): + ''' + The default handling for a Property is to store the value, + then notify listeners. This method can be overridden, + for example to validate values. + ''' + self.value = value + self.notify(value) + def set(self, value): + ''' + When a Property value is set to an ordinary value, it + triggers an event which causes a notification to be + sent to update all linked Properties. A Property set + to another Property becomes a child of the value. + ''' + # Handle setting a parent Property + if isinstance(value, Property): + super().set(value) + self.handle(value.value) + elif isinstance(value, Trigger): + raise ValueError('Cannot set a Property to an Trigger') + else: + self.trigger(value) + +class Event(object): + def __init__(self, value, name, target, **kwargs): + for k, v in kwargs.items(): + setattr(self, k, v) + self.value = value + self.name = name + self.target = target + +entered_handler_stack = [] +class enter_handler(object): + def __init__(self, name, internal): + global entered_handler_stack + self.internal = internal + self.name = name + self.silence = (not internal) and (len(entered_handler_stack) > 0) + def __enter__(self): + global entered_handler_stack + if not self.internal: + entered_handler_stack.append(self) + return self + def __exit__(self, exc_type, exc_value, exc_tb): + global entered_handler_stack + if not self.internal: + entered_handler_stack.pop() + +class capture_output(object): + """Context manager for capturing stdout/stderr. This is used, + by default, to wrap handler code that is invoked by a triggering + event coming from javascript. Any stdout/stderr or exceptions + that are thrown are formatted and written above the relevant widget.""" + def __init__(self, widget): + from io import StringIO + self.widget = widget + self.buffer = StringIO() + def __enter__(self): + import sys + self.saved = dict(stdout=sys.stdout, stderr=sys.stderr) + sys.stdout = self.buffer + sys.stderr = self.buffer + def __exit__(self, exc_type, exc_value, exc_tb): + import sys, traceback + captured = self.buffer.getvalue() + if len(captured): + self.widget.write.trigger(f'
{html.escape(captured)}
') + if exc_type: + import traceback + tbtxt = ''.join( + traceback.format_exception(exc_type, exc_value, exc_tb)) + self.widget.write.trigger( + f'
{tbtxt}
') + sys.stdout = self.saved['stdout'] + sys.stderr = self.saved['stderr'] + + +########################################################################## +## Specific widgets +########################################################################## + +class Button(Widget): + def __init__(self, label='button', style=None, **kwargs): + super().__init__(style=defaulted(style, display='block'), **kwargs) + self.click = Trigger() + self.label = Property(label) + def widget_js(self): + return minify(''' + element.addEventListener('click', (e) => { + model.trigger('click'); + }) + model.on('label', (ev) => { + element.value = ev.value; + }) + ''') + def widget_html(self): + return f'''''' + +class Label(Widget): + def __init__(self, value='', **kwargs): + super().__init__(**kwargs) + # databinding is defined using Property objects. + self.value = Property(value) + + def widget_js(self): + # Both "model" and "element" objects are defined within the scope + # where the js is run. "element" looks for the element with id + # self.view_id(); if widget_html is overridden, this id should be used. + return minify(''' + model.on('value', (ev) => { + element.innerText = model.get('value'); + }); + ''') + def widget_html(self): + return f'''''' + +class Textbox(Widget): + def __init__(self, value='', size=20, style=None, desc=None, **kwargs): + super().__init__(style=defaulted(style, display='inline-block'), **kwargs) + # databinding is defined using Property objects. + self.value = Property(value) + self.size = Property(size) + self.desc = Property(desc) + + def widget_js(self): + # Both "model" and "element" objects are defined within the scope + # where the js is run. "element" looks for the element with id + # self.view_id(); if widget_html is overridden, this id should be used. + return minify(''' + element.value = model.get('value'); + element.size = model.get('size'); + element.addEventListener('keydown', (e) => { + if (e.code == 'Enter') { + model.set('value', element.value); + } + }); + element.addEventListener('blur', (e) => { + model.set('value', element.value); + }); + model.on('value', (ev) => { + element.value = model.get('value'); + }); + model.on('size', (ev) => { + element.size = model.get('size'); + }); + ''') + def widget_html(self): + + html_str = f'''''' + if self.desc is not None: + html_str = f"""{self.desc}{html_str}""" + return html_str + +class Range(Widget): + def __init__(self, value=50, min=0, max=100, **kwargs): + super().__init__(**kwargs) + # databinding is defined using Property objects. + self.value = Property(value) + self.min = Property(min) + self.max = Property(max) + + def widget_js(self): + # Note that the 'input' event would enable during-drag feedback, + # but this is pretty slow on google colab. + return minify(''' + element.addEventListener('change', (e) => { + model.set('value', element.value); + }); + model.on('value', (e) => { + if (!element.matches(':active')) { + element.value = e.value; + } + }) + ''') + def widget_html(self): + return f'''''' + +class Choice(Widget): + """ + A set of radio button choices. + """ + def __init__(self, choices=None, selection=None, horizontal=False, + **kwargs): + super().__init__(**kwargs) + if choices is None: + choices = [] + self.choices = Property(choices) + self.horizontal = Property(horizontal) + self.selection = Property(selection) + def widget_js(self): + # Note that the 'input' event would enable during-drag feedback, + # but this is pretty slow on google colab. + return minify(''' + function esc(unsafe) { + return unsafe.replace(/&/g, "&").replace(//g, ">").replace(/"/g, """); + } + function render() { + var lines = model.get('choices').map((c) => { + return '' + }); + element.innerHTML = lines.join(model.get('horizontal')?' ':'
'); + } + model.on('choices horizontal', render); + model.on('selection', (ev) => { + [...element.querySelectorAll('input')].forEach((e) => { + e.checked = (e.value == ev.value); + }) + }); + element.addEventListener('change', (e) => { + model.set('selection', element.choice.value); + }); + ''') + def widget_html(self): + radios = [ + f"""""" + for value in self.choices ] + sep = " " if self.horizontal else "
" + return f'
{sep.join(radios)}
' + +class Menu(Widget): + """ + A dropdown choice. + """ + def __init__(self, choices=None, selection=None, **kwargs): + super().__init__(**kwargs) + if choices is None: + choices = [] + self.choices = Property(choices) + self.selection = Property(selection) + def widget_js(self): + return minify(''' + function esc(unsafe) { + return unsafe.replace(/&/g, "&").replace(//g, ">").replace(/"/g, """); + } + function render() { + var selection = model.get('selection'); + var lines = model.get('choices').map((c) => { + return ''; + }); + element.menu.innerHTML = lines.join('\\n'); + } + model.on('choices horizontal', render); + model.on('selection', (ev) => { + [...element.querySelectorAll('option')].forEach((e) => { + e.selected = (e.value == ev.value); + }) + }); + element.addEventListener('change', (e) => { + model.set('selection', element.menu.value); + }); + ''') + def widget_html(self): + options = [ + f"""""" + for value in self.choices ] + sep = "\n" + return f'''
''' + +class Datalist(Widget): + """ + An input with a dropdown choice. + """ + def __init__(self, choices=None, value=None, **kwargs): + super().__init__(**kwargs) + if choices is None: + choices = [] + self.choices = Property(choices) + self.value = Property(value) + def datalist_id(self): + return self.view_id() + '-dl' + def widget_js(self): + # The mousedown/mouseleave dance defeats the prefix-matching behavior + # of the built-in datalist by erasing value momentarily on mousedown. + return minify(''' + function esc(unsafe) { + return unsafe.replace(/&/g, "&").replace(//g, ">").replace(/"/g, """); + } + function render() { + var lines = model.get('choices').map((c) => { + return '