аЯрЁБс>ўџ ТўџџџўџџџРСџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџn№„ѕчš ШŒЃФиССbеœџ‰PNG  IHDRЅ,3JˆјРPLTEfџ™џџџ™џџџŒПџРРцrПхВ9_П&?Вr?џLЬ|Яыяџ•яџy_џЅ…пџ’пџ…Ÿџ/OИuOџ‰Џџo/џiЏп/Ќ|oџlџЯџ_Ÿи‚џVвBoХŸррџааьџџџt ƒ&tRNSџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџЇzМbKGD%УЩgIFg$0c( cmPPJCmp0712HsМIDATXGэ™ыnт@ …‰іŒvеХч3ит ?AљўіиіўЩ”эЏЧЖV(ЃХc[єЂМ[^ZоMЪХKЫЄeвлyо=бЯCз8bШ„&dчќYJњЅaХ3a„эgQ~NYŸ™я[”еyŽ2!Ъ‹]’_ЈљsJхЫlіG-ЧТЮPж Y.\вPэ‘їПЁЌц›dVŽЪoЉ Ul~z?[ѓПЁ vЄ†Q~KЫ†КЄw.ЋЌ2fчб“• O‰ЃТ›lQcЖе;SiЧз –аKГ‰б• гƒкхЫ Ъ+YЋ+œWМ&вАЙЫЄm€e˜QJt0›dEv'ƒRwЬ^зљ2ш1w{ЪќцrхГўˆўІDЌ1$Ђю‘ЙЛJh]tSN…1g1FЎ+ЖСWN9І*pЩIММѕYjdОSsHЩZВЮoТ ОDціщ:ыtLЅМЇј‰sАЮ›e…ўaЋ,Їэ№n)ЫЌРU-Y@Љјє М—~“ М—QД%ІгR‡1bВ:XbSЊ7˜-"wЬ}-)ЦЎеЩ­уї+oТ™kЗuЅѓЋ8ЂЧИŠ'oњ?Š(ZЕ~n}ZЕ%у=ВRnЎщ5Mёs RРИ9Ќ4ядQі ‚w~Ї”i2каЪŸ_јH9икЁt*ЫђXK п-б јR„ЪN)ЈЅnК„)ЏДё”–оo”p`[­жS-З]яx-Џи*uзvˆ ‡/fW0е’лЪвV6qОНљŠsМ“‹N,kуДнpKt‘#жJј†Уi_z­QxЯЇ}yбш-> хU7i†ˆгЂѕ9)HС0ˆM1@q”`ŠѓUŠ)%ї‹рЙŠ7IwO=:5иэ2>ЦqМ!j„kQЅ]*хeЉmиkљ›IXжœ–Я‰ьctLф Gd—ј`ж@_тLšтп>?њ;ЄчФ=РМImX$й€БJ+woDЅ№ я‹и…9_Хпqју[Lрпj ђ#0йK#i Ђuя ѕrL)O nœ& ‹УSJ$эћ‹иЂ>эhЧНћЕдhж†чpА?зnc—uш,т‰ёdг т_„§пK/ЪћUрЅхKЫћ)p?OЏОМГ–§‡”ЗЉјиsPўжŸЛИэђˆ IENDЎB`‚шS}щ(€ррш '$  fзˆгMК6http://www.bygsoftware.com/К6http://www.bygsoftware.com/зxгNК.http://www.appspro.com/К.http://www.appspro.com/зtгOК,http://www.j-walk.com/К,http://www.j-walk.com/з|гPК0http://www.mz-tools.com/К0http://www.mz-tools.com/з€гQК2http://www.codematic.net/К2http://www.codematic.net/зhгSКwww.oaltd.co.ukК.http://www.oaltd.co.uk/ђ/Ш 0веLЗDTahomaSО 0м–0вtЉtЉDuќ–О 0ќ–е"Є€@џџЅ .Љ  @Ѓnџ§?" dџd@џџяџџџџџџ  @@``€€ є№ь№pА­ы,     "##$&(28; >? FG H,LTV\jl ovwxyz{|}~€‚ƒ„…†‡ˆ‰ŒŽ‘’“o№№$џ№$џ№$џ№$џ№$џb№$ѕчš ШŒЃФиССbеœџŒƒ №0ƒ†AПРХAџ0ё ЬЬfџ@ёї№ѓ€аkК“АіЪš;­”ЧЪš;њgў§4KdKdј—О 0рўџџИџџџpћppћ@ <§4dddd@—Ёk 0tЉ uџ ˆpŠhК___PPT10‹H pЕpЕф.0КSimon Murphyх.?й к %Oй к №ЌnѓŸЈExcel VBA Best PracticeЁ$Ÿ ‚Simon Murphy simon.murphy@codematic.net Developer  Codematic LtdЁ*B ЬўЊ$ ђѓ 0п'ѓ@ŸЈSpreadsheet backgroundŸ @Up to 200 Mb size Up to 1 Million formulas 1-10,000 unique formulas 5-10,000 lines of VBA ЃBillions in values Often linked to other technologies such as OLAP, ADO, COM or .net etc. Finance, Banking and Sales and Marketing areas Development cost up to $1M Active member of Eusprig  European Spreadsheet Risk group  dedicated to raising awareness of dangers and error rates in commercial spreadsheets www.eusprig.orgЁЁZЁЊ,zѓŸЈAgendaЁ(ŸЈўSecurity Fundamental Imperative Development process Development environment Design considerations High quality code General Modules Procedures Blocks Variables Excel Specific advice Classes Avoiding common errors Debugging Testing Documentation ResourcesЁPtPJPAPtJ@ЬўѓtFŸЈSecurityЁ (Ÿ bIs everybody s concern Spreadsheets can be used as a staging board for privilege escalation (with your login details!) Consider SD3 +C Secure by Design Default Deployment Communication Threat Modelling  Assets, Threats Threat Types  STRIDE (Spoofing, Tampering, Repudiation, Information Disclosure, Denial of Service, Elevation of Privilege) Threats  rate with DREAD (Damage potential, Reproducibility, Exploitability, Affected Users, Discoverability) Spreadsheets (all flavours) are fairly insecure Compiled UDFs (.net, COM, XLL) and Database servers can help Set macro security to high and use code signing certificates. See Microsoft MOC 2840A  Implementing security for more info.Ё‡P P(P:PfPPUP0P=P}P‚  (:  f  U0=}Њ­ѓ‚RŸЈFundamental ImperativeЁŸ rManage complexity (McConnell) Solution complexity grows at 4 x the rate of problem complexity. (Glass) [Things] should be as simple as they can be, but no simpler (Einstein) K.I.S.S. This principle should drive all other work. Easier to build, easier to test, easier to document, easier to use, etc& [No conflict]Ё(: ((ѓ ŸЈDevelopment ProcessŸЈASystems Development lifecycle Requirements, Analysis, Logical Design, , Physical Design, Construction, Test, Release, Maintain. In some shape or form. Understanding the requirements is critical and difficult Some sort of structured approach is useful Build a library of useful code and referencesЁ€PP’PP’PP ЬўV’ѓ„SŸ DDesign  2 Questions, 2 ApproachesЁ##(ŸЈЈ2 Questions What will happen when things go right? What will happen when things go wrong? 2 Approaches: What will the system do? What real world objects am I modelling?ЁL NA NAѓ…TŸЈCouplingЁ $ŸЈ8How strongly 2 separate elements depend on each other Low coupling is better, especially through clearly defined interfaces High coupling often means hidden dependencies which generally leads to incorrect modifications (side effects) Example: hard coded cell addresses in VBA code Example: Gobal/Public variablesЁ99Њ"ѓ†UŸЈFan in / fan outŸ Low fan in  a VBA routine depends on only a few other units Good because it minimises dependencies and reduces complexity High fan out  a VBA routine is used by many others Good because it minimises duplication Good because routine is more thoroughly exercised Ёf=Z>Z4Z&Z3’-Z=>4YѓnCŸЈDevelopment EnvironmentŸ ЦOption explicit Don t warn about syntax errors Actual set up - which windows are visible etc Use a code library Use MZ tools Other tools  call tree, indenter, reference checker, BYG Source control, even just exporting as textЁффѓoDŸЈDesign ConsiderationsŸ ~Simplicity Testability Cohesion and coupling Fan in fan out Encapsulation and separation Reusability What does it do, or what are you modelling? N tier  especially msgbox and error handling Consider future changes and/or enhancements Design patterns eg: singleton, factory, facade Design  normal case and  error caseЁ@@Њ,ЅPCѓpEŸ :High Quality Code  General 1Ÿ bNaming convention: Option 1 fit in with current standards (eg Reddick 3 letter) Option 2 give everything a simple, distinctive, non abbreviated descriptive name Procedures  verb noun combination Variables  add scope prefix, data type maybe, usage more useful  eg m_rwCustomer for row in customer table or colMonth for month column. Only use a type prefix if you know what it is doing for you and you value that. (eg probably don t need  obj ) Avoid most comments  make meaning crystal clear in the code. Move non standard code and workarounds to named routines, and comment if necessary refactor early and often build test routines as you go, and at least step through in the debugger.ЁVŽЎcŽЎc  Њ˜;Т d”[ѓvGŸ :High Quality Code  General 2Ÿ JRecognise when you move from procedure based design to module/object based (eg procs need to return >1 value, lots of parameters get passed all around) Object Oriented designs can be useful, but can cost performance The biggest factor on performance is design Be aware of Excel/VBA limitations, and clear on its strengths Use  TODO and maybe  Enhancement comments (don t release until TODOs cleared  (use edit find in project) Use shift+F2 for definitions, F8, Shift+F8 and Ctrl+Shift+F8 (step out) and stop Note compiler is weak compared to C++ Use code cleaner regularly Differentiate style from quality Use the most restrictive scope that works for variables and routinesЁІPІЊ>L/ѓd<ŸЈHigh Quality Code - ModulesŸЈRAs solution complexity increases think in terms of modules rather than procedures Use enums to add understanding Could use types but probably better to go straight to classes. Module name should explain what it does, a comment at the top may be useful. May need 1 or 2 global variables, but may need lots of module level variables A module should represent a bunch of closely related things eg: use common data Use Option private module otherwise public routines will be listed in the user defined functions list. Forms should usually call straight out to a class or module to do the real work.ЁSPSЊ,V,ЪѓwHŸЈHigh Quality Code - ProceduresŸ xAnatomy of a procedure/object  initialisation, process, clear up, error handling Short routines 40-50 lines max (one screens worth) (easier to understand  but not proven to reduce errors) A procedure should do one thing well Prefer functions (Boolean success/failure) Use parameters rather than global variables (max 7+/- 2) Avoid application.run  breaks VBA error handling Use separate routines for separate error handling Consider error handling early, use break on all errors when testing Use environ rather than api where possible (simple) All call tree parents should have error handling Test performance don t guess (see perfmon) Protect procedures from bad input (including malicious input)ЁНPНЊ>MЋl@ѓxIŸЈHigh Quality Code - BlocksŸ ”Code block start and end together IF using If& then code an Else if, add a comment, only remove it if you are sure there is no  else case (missing the else is a common error) Code the expected behavoir first, usually. Use do while and do until loops, be sure they will end, I generally mainly use for next and for each next, finding out the end first helps with status bar updates. In a Select Case always have a default case, possibly with an error warning.ЁЫZЫЊСѓyJŸЈHigh Quality Code - VariablesŸ єDon t reuse variables for different purposes, avoid  temp Use clear data types, and control them (watch out for implicit coercion) Variants are often easier to work with than arrays Pass parameters byVal if they are not to be changed (watch for coercion) Explicitly use byRef in an input parameter is to be changed, but watch for signs to redesign Don t implicitly use the default property, be explicit (eg range.value) Magic numbers and strings should be made into constants. Use explicit data casting Cstr() Cbool() etc Code with early binding if at all possible (new), change to late binding to support multiple versions or if component may not be installed. Late can be slower and may need better error handling. Can define all variables together at top or just before they are needed both have pros and cons. Sometimes a simple i, j, x or y is better than a long datatype prefixed descriptive name for a loop index Boolean variable should be named so True or False make sense  eg use done rather than status Booleans should be positive eg if not found then& rather than if not notFound then& Never mess with a loop counter within the loop.Ё„{P4Ѕ ' 6ЊМЧC Uak9'7ѓzKŸ 6High Quality Code  Excel 1Ÿ 6Its usually dangerous to hardcode a range reference in VBA. Use range names to connect code to worksheet ranges Choose a single cell range name as a start point Choose a multi-cell range to allow the user to insert/delete rows/columns Use in cell text where possible, closely ties the mechanics to what the user uses. Always check cell text thoroughly before depending on it Note data validation is easily bypassed Give sheets code names and use them Take the first few rows and columns for system use, hide them if necessary Check the selection type with typeOf if you are going to use it. Generally avoid selecting and copying  set values instead where possible. Be clear and explicit which workbook and worksheet code should operate on, especially ThisWorkbook v ActiveWorkbook for add-ins.ЁPЊ>-О ѓ{LŸ 6High Quality Code  Excel 2Ÿ &Pulling Range.Value or Range.Formula into a variant is much faster than looping the cells. Use worksheet.cells(r,c) structure rather than range( A & someNumber) Be consistent how you use ranges (I usually use sheet.[rangeName].value) Remember the power of R1C1 notation Its often easier to set the formulaR1C1 than the formula of a range. If distributing code with references, consider making it late bound. Use standard environment management routines Use Excel functionality wherever possible Use doEvents where needed Work upwards when deleting rows, otherwise counters get messed up Watch for inadvertently firing events, don t hog the onCalculate eventЁ”P”Њ˜  ; 2 … ѓ|MŸЈHigh Quality Code - ClassesŸ ^Classes result from asking  what am I modelling? rather than  what is this system to do? Full class based design may be overkill for most VBA applications Hard/impossible to combine the best of spreadsheets with proper OO  data hiding is not possible. Classes may be useful when a set of routines share lots of data and it becomes cumbersome to pass around as parameters Or when you need to return a complex type from a routineЁАPАѓ~NŸЈAvoiding Common ErrorsŸ  Consider lifetime  initialise, set, use, destroy (CRUD  Create, read, update, delete) Off by one errors, especially ranges into variants, arrays, loops and ubound() Watch for index cross talk Dim x, y as integer => x is a variant StrComp, InStr  check the documentationЁPЊ>žDѓOŸЈDebugging and TestingŸ >Debugging Immediate window Locals Debug.print debug.assert Testing Pre-conditions and post conditions Use a  test module, and application.run for private routines Test early and test often Keep all test code  it can act as a specification, and can give comfort that later changes do not break anything Get good test data  realistic, test full range including boundary conditions, but weight testing towards real world use. Execution testing v static testing and code inspection/review. Unit testing, system testing, user acceptance testing.Ё\ P1PPнP 1нЊ>"  E’ѓŸЈ DocumentationЁ$ŸЈШIf you design for simplicity only very minor additional documentation is needed Design and build the user Interface with the Users needs primary, the documentation will automatically be there Design and build the business logic parts with the maintainers needs primary, the main documentation will automatically be there, expand as required. Integral tests should explicitly clarify intent. Reports should contain enough description to be meaningful. External documentation is almost always so out of date its worse than useless. Excessive documentation is too hard to plod through Poorly targeted documentation is pointless Working software is more useful than documentation Sometimes documentation is importantЁЩPЩѓ€PŸЈ DocumentationŸЈ[Call tree print out should be enough for most uses Be clear who the target audience is Should be auto generated from source code if it is to be up to date. Stepping through code is often the easiest way to understand it. Download a VBA to HTML addin to pretty up code for printing. PUP provides a nice summary, MZ Tools creates a weighty document.Ё\P\ЊєcѓP'ŸЈExtending ExcelŸЈ=Excel is powerful not perfect Leverage benefits whilst managing weaknesses by using complimentary technologies Data: VBA, ADO, ODBC, OLAP, .net, COM, Info Bridge, XML, DDE, Web Queries, SOX Solution Accelerator Logic: VBA, COM, .net, xll, Pivots, Filters Search the web for vast array of free or cheap tips and tools.Ё>>ЊъQѓW.ŸЈSummaryŸЈ)Manage complexity Consider security carefully Excel/VBA not the best tool for everything Be defensive, especially with inputs Understand your data Aim for cohesive models with low coupling Use names to connect VBA to worksheets Use complimentary technologies where appropriate Manage documentationЁ*Z*ѓQŸЈ ResourcesŸ 6Books Code complete 2  Steve McConnell Professional Excel Development  Stephen Bullen, Rob Bovey & John Green VBA Developers Handbook  Ken Getz Tools www.oaltd.co.uk (Stephen Bullen), Call Tree, Smart Indenter www.BYGSoftware.com Toolbar creator and back up. www.appspro.com (Rob Bovey) code cleaner www.j-walk.com  (John W), PUP www.MZ-tools.com MZ tools VBA IDE addin. www.codematic.net reference checker.Ё\PPPPЊаQB ђѓS 0п™ЈђѓM 0пдшђѓN 0пђѓO 0п.=ђѓP 0пM^ђѓQ 0пvˆѓ#ŸЈ Questions?Њ  ŸЈЭsimon.murphy@codematic.net Spreadsheet consulting, reviewing, maintaining, rescuing, migrating, add-in development etc. Staff coaching, mentoring and training Websites www.codematic.net www.xlanalyst.co.ukЁV„ &Ьў„ &ЬўЊX  Ž    ђѓ 0пђѓ 0пЈЙђѓ 0пКЭ/№lѓ(ѓ*ѓ,ѓ6ѓ<ѓGѓqѓrѓsѓuѓ}ѓƒѓ‡!ъј’ я  0`№ џџџ€€€Лру33™™™™Ь`№ џџџ–––ћпSџ™fЬ3™f`№ џџџ€€€™ЬџЬЬџ33ЬЏgџ`№ оіё–––џџџЦџfЬЈ`№ џџйwwwџџї3ЬЬџPPџ™`№ €€џџџZXџџ™dbmoЧџџџ`№ €џџџ\пв“Ь3Оy`џџ™гЂ`№ ™џџџ3fЬџџ3fЬАfЬџџч`№ џџџ3f™уыё3™FŠKfЬџ№х`№ hk]џџџwwwббЫ‚€žЈџЬfщмЙ`№ ff™џџџ>>\џџџ`Y{ffџ™Ьџџџ™`№ R>&џџџ- пРŒ{p_/ЬДŒž Ѓ>џ§?" dџd@џџяџџџџџџ,Ѓ|џ§?" dџdи@џџяџџџџџџ € д €" а@€ №`€Л€ Ѓnџ§?" dџd@џџяџџџџџџ   @@``€€PЃR    @ ` €`Ѓ pЃ>€Ѓ> Ф№М№ №T№( № №№в № “ №6€ьХ‡ƒПРџ №­ `}№У  №TŸЈ Click to edit Master title styleЂ!Њ !№ № ƒ №0€иШƒПРџ №№ `№У  №žŸЈRClick to edit Master text styles Second level Third level Fourth level Fifth levelЂ!    Њ S№а № ƒ №0€ЄЯƒПРџ №^ `Š№У  №XŸ *ЁјЊ№в № ƒ №0€мдƒПРџ №^АаŠ№У   №ZŸ *ЁњЊ№в № ƒ №0€МйƒПРџ №^ `Š№У  №ZŸ *ЁиЊ№`B № s №*DПРЬџЫŸoџ"ёП№ќ)№`В № C №*€€AСCodoLogo"ёП№†)Ž№ШЂ №  ƒ №0€TЪПƒПР3™fџ#"ё П`П№†qќš №TŸЈUK XL User Conference 2006Ё(2 Ьfў№H № ƒ №0ƒ“ŽŸ‹”оНhПџ ?№ џџџ€€€Лру33™™™™Ьˆ8Š0К___PPT10‹ы.‚ZХ№ющ КDefault Design№њё€ 0 z№r0№ № №( № № №Ш №  ƒ №0€ФИeƒПРџ №P2№У  e №PŸ *Ё љЊ №Ъ №  ƒ №0€МНeƒПРџ № п2№У e №RŸ *Ё јЊ №d №  c №$‡Пџ ?№ЫvjТ №У e№ №  ƒ №0€ЈРeƒПРџ №[ А0№У e №žŸЈRClick to edit Master text styles Second level Third level Fourth level Fifth levelЂ!    Њ S№Ю №  “ №6€ФХe‡ƒПРџ №ЕPч№У  e №PŸ *Ё њЊ №а №  “ №6€ЄЪe‡ƒПРџ №Е пч№У e №RŸ *Ё иЊ №H №  ƒ №0ƒ“оНh”њW”Пџ ?№ џџџ€€€Лру33™™™™Ьˆ8Š0К___PPT10‹ы.ђrХpЇtœЩ€ №а№t№ №( № №t№а №t ƒ №0€Иe§ƒПРџ №P2№У  § №XŸ *Ё љЊ№в №t ƒ №0€j§ƒПРџ № п2№У § №ZŸ *Ё јЊ№ж №t “ №6€Tn§‡ƒПРџ №ЕPч№У  § №XŸ *Ё њЊ№и №t “ №6€Шr§‡ƒПРџ №Е пч№У § №ZŸ *Ё иЊ№H №t ƒ №0ƒ“оНh”њW”Пџ ?№ џџџ€€€Лру33™™™™Ьˆ8Š0К___PPT10‹ы.ЬiХ`ФЇю}я€ 0 ”№Œ №№$№( № №№r № S №€H‰eПџ№‡мќE№У e № ž№r № S №€№‰eПџ№ dяб№У e № ž№H № ƒ №0ƒ“ŽŸ‹”оНhПџ ?№ џџџ€€€Лру33™™™™Ьˆ‘ЉК___PPT10‹iы.‚ZХ№ющ+Dё='ё §џџџџ=ё @Bё +ю}я € 0 ”№Œр№№$№( № №№r № S №€XѓeПџ№­ `}№У  e № ž№r № S №€0єeПџ№'gб№У e № ž№H № ƒ №0ƒ“ŽŸ‹”оНhПџ ?№ џџџ€€€Лру33™™™™Ьˆ‘ЉК___PPT10‹iы.zwХEРљ+Dё='ё §џџџџ=ё @Bё +ю}я € 0 ”№Œ0№ №$№( № № №r № S №€ˆsПџ№џ `Х№У  s № ž№r № S №€˜љeПџ№j'gY№У e № ž№H № ƒ №0ƒ“ŽŸ‹”оНhПџ ?№ џџџ€€€Лру33™™™™Ьˆ‘ЉК___PPT10‹iы.ƒZХ?љ+Dё='ё §џџџџ=ё @Bё +ю‰я € 0  №˜Р№T№0№( № №T№x №T c №$€sПџˆ№­ `<№У  s № ž№x №T c №$€№sПџˆ№jT`џ№У s № ž№H №T ƒ №0ƒ“ŽŸ‹”оНhПџ ?№ џџџ€€€Лру33™™™™Ьˆ‘ЉК___PPT10‹iы.ZiХАЦm+Dё='ё §џџџџ=ё @Bё +ю‰я € 0  №˜Р№”№0№( № №”№x №” c №$€$5sПџˆ№в'g@№У  s № ž№x №” c №$€ќ5sПџˆ№Х'Лц№У s № ž№H №” ƒ №0ƒ“ŽŸ‹”оНhПџ ?№ џџџ€€€Лру33™™™™Ьˆ‘ЉК___PPT10‹iы.бgХpŽл+Dё='ё §џџџџ=ё @Bё +ю›я € 0 В№Њ№$№B№( № №$№r №$ S №€ЬisПџ№wљ9š№У  s № ž№ №$ Ѓ №<€jsƒПРџ ˆ№jЬтY№У s № ž№H №$ ƒ №0ƒ“ŽŸ‹”оНhПџ ?№ џџџ€€€Лру33™™™™Ьˆ‘ЉК___PPT10‹iы.ЉhХPžc„+Dё='ё §џџџџ=ё @Bё +ю‰я € 0  №˜р№œ№0№( № №œ№x №œ c №$€lAsПџˆ№wžДj№У  s № ž№x №œ c №$€DBsПџˆ№Хљ9ш №У s № ž№H №œ ƒ №0ƒ“ŽŸ‹”оНhПџ ?№ џџџ€€€Лру33™™™™Ьˆ‘ЉК___PPT10‹iы.>ЈХPlL§+Dё='ё §џџџџ=ё @Bё +ю‰я €! 0  №˜ №Ј№0№( № №Ј№x №Ј c №$€рIsПџˆ№Zљ`Х№У  s № ž№x №Ј c №$€ИJsПџˆ№Mљ9Є№У s № ž№H №Ј ƒ №0ƒ“ŽŸ‹”оНhПџ ?№ џџџ€€€Лру33™™™™Ьˆ‘ЉК___PPT10‹iы.ЉhХ€u0ƒ+Dё='ё §џџџџ=ё @Bё +ю‰я € 0  №˜0 №А№0№( № №А№x №А c №$€$[sПџˆ№­ `}№У  s № ž№x №А c №$€ќ[sПџˆ№№ `№У s № ž№H №А ƒ №0ƒ“ŽŸ‹”оНhПџ ?№ џџџ€€€Лру33™™™™Ьˆ‘ЉК___PPT10‹iы.IЈХ№YЕe+Dё='ё §џџџџ=ё @Bё +юЁя € 0 И№А`№<№H№( № №<№x №< c №$€zsПџˆ№wљ9š№У  s № ž№ №< Ѓ №<€№zsƒПРџ ˆ№jЬтY№У s № ž№H №< ƒ №0ƒ“ŽŸ‹”оНhПџ ?№ џџџ€€€Лру33™™™™Ьˆ‘ЉК___PPT10‹iы.ЉhХPžc„+Dё='ё §џџџџ=ё @Bё +юЁя € 0 И№А€№D№H№( № №D№x №D c №$€фˆsПџˆ№wљ9š№У  s № ž№ №D Ѓ №<€Ј‰sƒПРџ ˆ№jЬтY№У s № ž№H №D ƒ №0ƒ“ŽŸ‹”оНhПџ ?№ џџџ€€€Лру33™™™™Ьˆ‘ЉК___PPT10‹iы.ЉhХPžc„+Dё='ё §џџџџ=ё @Bё +юЁя € 0 И№А №L№H№( № №L№x №L c №$€а—sПџˆ№wљ9š№У  s № ž№ №L Ѓ №<€ іbƒПРџ ˆ№jЬтY№У s № ž№H №L ƒ №0ƒ“ŽŸ‹”оНhПџ ?№ џџџ€€€Лру33™™™™Ьˆ‘ЉК___PPT10‹iы.ЉhХPžc„+Dё='ё §џџџџ=ё @Bё +юЁя € 0 И№Ар№\№H№( № №\№x №\ c №$€ЃsПџˆ№wљ9š№У  s № ž№ №\ Ѓ №<€мЃsƒПРџ ˆ№—Ьтv№У s № ž№H №\ ƒ №0ƒ“ŽŸ‹”оНhПџ ?№ џџџ€€€Лру33™™™™Ьˆ‘ЉК___PPT10‹iы.ЉhХPžc„+Dё='ё §џџџџ=ё @Bё +ю}я € 0 ”№Œ №є№$№( № №є№r №є S №€ КsПџ№­ `}№У  s № ž№r №є S №€xЛsПџ№zљ9№У s № ž№H №є ƒ №0ƒ“ŽŸ‹”оНhПџ ?№ џџџ€€€Лру33™™™™Ьˆ‘ЉК___PPT10‹iы.ЕХ@њю+Dё='ё §џџџџ=ё @Bё +ю‰я € 0  №˜№d№0№( № №d№x №d c №$€ŒЮsПџˆ№­ `}№У  s № ž№x №d c №$€LХsПџˆ№zљ9№У s № ž№H №d ƒ №0ƒ“ŽŸ‹”оНhПџ ?№ џџџ€€€Лру33™™™™Ьˆ‘ЉК___PPT10‹iы.ЕХ@њю+Dё='ё §џџџџ=ё @Bё +ю‰я € 0  №˜№h№0№( № №h№x №h c №$€| bПџˆ№­ `}№У  s № ž№x №h c №$€фпsПџˆ№zљ9№У b № ž№H №h ƒ №0ƒ“ŽŸ‹”оНhПџ ?№ џџџ€€€Лру33™™™™Ьˆ‘ЉК___PPT10‹iы.ЕХ@њю+Dё='ё §џџџџ=ё @Bё +ю‰я € 0  №˜ №l№0№( № №l№x №l c №$€,эsПџˆ№­ `}№У  s № ž№x №l c №$€юsПџˆ№љ†№У s № ž№H №l ƒ №0ƒ“ŽŸ‹”оНhПџ ?№ џџџ€€€Лру33™™™™Ьˆ‘ЉК___PPT10‹iы.ЕХ@њю+Dё='ё §џџџџ=ё @Bё +ю‰я € 0  №˜0№p№0№( № №p№x №p c №$€Œ uПџˆ№­ `Х№У  u № ž№x №p c №$€PuПџˆ№љ†№У u № ž№H №p ƒ №0ƒ“ŽŸ‹”оНhПџ ?№ џџџ€€€Лру33™™™™Ьˆ‘ЉК___PPT10‹iы.ЕХ@њю+Dё='ё §џџџџ=ё @Bё +ю‰я € 0  №˜@№t№0№( № №t№x №t c №$€ЈuПџˆ№­ `}№У  u № ž№x №t c №$€€uПџˆ№љ†№У u № ž№H №t ƒ №0ƒ“ŽŸ‹”оНhПџ ?№ џџџ€€€Лру33™™™™Ьˆ‘ЉК___PPT10‹iы.ЕХ@њю+Dё='ё §џџџџ=ё @Bё +ю‰я € 0  №˜P№x№0№( № №x№x №x c №$€`+uПџˆ№­ `}№У  u № ž№x №x c №$€8,uПџˆ№љ†№У u № ž№H №x ƒ №0ƒ“ŽŸ‹”оНhПџ ?№ џџџ€€€Лру33™™™™Ьˆ‘ЉК___PPT10‹iы.ЕХ@њю+Dё='ё §џџџџ=ё @Bё +ю‰я € 0  №˜`№|№0№( № №|№x №| c №$€P1uПџˆ№­ `}№У  u № ž№x №| c №$€(2uПџˆ№љ†№У u № ž№H №| ƒ №0ƒ“ŽŸ‹”оНhПџ ?№ џџџ€€€Лру33™™™™Ьˆ‘ЉК___PPT10‹iы.ЕХ@њю+Dё='ё §џџџџ=ё @Bё +ю‰я € 0  №˜p№€№0№( № №€№x №€ c №$€(?uПџˆ№­ `}№У  u № ž№x №€ c №$€,uПџˆ№љ†№У u № ž№H №€ ƒ №0ƒ“ŽŸ‹”оНhПџ ?№ џџџ€€€Лру33™™™™Ьˆ‘ЉК___PPT10‹iы.ЕХ@њю+Dё='ё §џџџџ=ё @Bё +ю‰я € 0  №˜`№X№0№( № №X№x №X c №$€JuПџˆ№wљ`№У  u № ž№x №X c №$€рJuПџˆ№žДў№У u № ž№H №X ƒ №0ƒ“ŽŸ‹”оНhПџ ?№ џџџ€€€Лру33™™™™Ьˆ‘ЉК___PPT10‹iы.ЉhХ€u0ƒ+Dё='ё §џџџџ=ё @Bё +ю‰я € 0  №˜€№„№0№( № №„№x №„ c №$€l`uПџˆ№­ `}№У  u № ž№x №„ c №$€DauПџˆ№љ†№У u № ž№H №„ ƒ №0ƒ“ŽŸ‹”оНhПџ ?№ џџџ€€€Лру33™™™™Ьˆ‘ЉК___PPT10‹iы.ЕХ@њю+Dё='ё §џџџџ=ё @Bё +ю}я € 0 ”№Œ@№№$№( № №№r № S №€аnuПџ№­ `}№У  u № ž№r № S №€ЈouПџ№№ `№У u № ž№H № ƒ №0ƒ“ŽŸ‹”оНhПџ ?№ џџџ€€€Лру33™™™™Ьˆ‘ЉК___PPT10‹iы.}œХ &+Dё='ё §џџџџ=ё @Bё +ю}я € 0 ”№ŒР№М№$№( № №М№r №М S №€Ј|uПџ№­ `}№У  u № ž№r №М S №€l}uПџ№ђ т№У u № ž№H №М ƒ №0ƒ“ŽŸ‹”оНhПџ ?№ џџџ€€€Лру33™™™™Ьˆ‘ЉК___PPT10‹iы.BЈХ^5+Dё='ё §џџџџ=ё @Bё +ю‰я € 0  №˜№ˆ№0№( № №ˆ№x №ˆ c №$€јŠuПџˆ№­ `}№У  u № ž№x №ˆ c №$€а‹uПџˆ№Ьт†№У u № ž№H №ˆ ƒ №0ƒ“ŽŸ‹”оНhПџ ?№ џџџ€€€Лру33™™™™Ьˆ‘ЉК___PPT10‹iы.ЕХ@њю+Dё='ё §џџџџ=ё @Bё +ю‘я € 0й к % ”№ŒР№p№$№( № №p№r №p S №€ xeПџ№­ `}№У  e № ž№r №p S №€xyeПџ№№ `№У e № ž№H №p ƒ №0ƒ“ŽŸ‹”оНhПџ ?№ џџџ€€€Лру33™™™™Ьˆ‘ЉК___PPT10‹iы.diХp‡A+Dё='ё §џџџџ=ё @Bё +№ё 0 ˜№@№Є№(№( № №Є№^ №Є S №Пџ №ЫvjТ №У  e№Š №Є c №$€єжeПџ №[ А0№У  e №ŸЊ №H №Є ƒ №0ƒ“оНh”њW”Пџ ?№ џџџ€€€Лру33™™™™Ьˆ8Š0К___PPT10‹ы.ђrХpЇtœ№ё 0 ˜№`№Ќ№(№( № №Ќ№^ №Ќ S №Пџ №ЫvjТ №У  u№Š №Ќ c №$€єюuПџ №[ А0№У  u №ŸЊ №H №Ќ ƒ №0ƒ“оНh”њW”Пџ ?№ џџџ€€€Лру33™™™™Ьˆ8Š0К___PPT10‹ы.ђrХpЇtœ№ё 0 ˜№€№Д№(№( № №Д№^ №Д S №Пџ №ЫvjТ №У  u№Š №Д c №$€œяuПџ №[ А0№У  u №ŸЊ №H №Д ƒ №0ƒ“оНh”њW”Пџ ?№ џџџ€€€Лру33™™™™Ьˆ8Š0К___PPT10‹ы.ђrХpЇtœ№ё 0 ˜№ №м№(№( № №м№^ №м S №Пџ №ЫvjТ №У  §№Š №м c №$€ˆ2§Пџ №[ А0№У  § №ŸЊ №H №м ƒ №0ƒ“оНh”њW”Пџ ?№ џџџ€€€Лру33™™™™Ьˆ8Š0К___PPT10‹ы.ђrХ.vœ№ё 0 ˜№€№є№(№( № №є№^ №є S №Пџ №ЫvjТ №У  §№Š №є c №$€,E§Пџ №[ А0№У  § №ŸЊ №H №є ƒ №0ƒ“оНh”њW”Пџ ?№ џџџ€€€Лру33™™™™Ьˆ8Š0К___PPT10‹ы.ђrХ.vœ№ё 0 ˜№`№4№(№( № №4№^ №4 S №Пџ №ЫvjТ №У  u№Š №4 c №$€ФфuПџ №[ А0№У  u №ŸЊ №H №4 ƒ №0ƒ“оНh”њW”Пџ ?№ џџџ€€€Лру33™™™™Ьˆ8Š0К___PPT10‹ы.|ХРј’|№$ёC 0 Є№œp№@№4№( № №@№d №@ c №$Пџ ˆ№ЫvjТ №У  e№ №@ s №*€tхeПџ ˆ№[ А0№У  e №ŸЊ №H №@ ƒ №0ƒ“оНh”њW”Пџ ?№ џџџ€€€Лру33™™™™Ьˆ8Š0К___PPT10‹ы.ђrХpЇtœ№$ёD 0 Є№œ№H№4№( № №H№d №H c №$Пџ ˆ№ЫvjТ №У  §№ №H s №*€XT§Пџ ˆ№[ А0№У  § №ŸЊ №H №H ƒ №0ƒ“оНh”њW”Пџ ?№ џџџ€€€Лру33™™™™Ьˆ8Š0К___PPT10‹ы.ђrХpЇtœ№$ёE 0 Є№œА№P№4№( № №P№d №P c №$Пџ ˆ№ЫvjТ №У  §№ №P s №*€(Z§Пџ ˆ№[ А0№У  § №ŸЊ №H №P ƒ №0ƒ“оНh”њW”Пџ ?№ џџџ€€€Лру33™™™™Ьˆ8Š0К___PPT10‹ы.ђrХpЇtœ№$ёF 0 Є№œа№X№4№( № №X№d №X c №$Пџ ˆ№ЫvjТ №У  §№ №X s №*€l§Пџ ˆ№[ А0№У  § №ŸЊ №H №X ƒ №0ƒ“оНh”њW”Пџ ?№ џџџ€€€Лру33™™™™Ьˆ8Š0К___PPT10‹ы.ђrХ.vœ№$ёG 0 Є№œ№№`№4№( № №`№d №` c №$Пџ ˆ№ЫvjТ №У  §№ №` s №*€U§Пџ ˆ№[ А0№У  § №ŸЊ №H №` ƒ №0ƒ“оНh”њW”Пџ ?№ џџџ€€€Лру33™™™™Ьˆ8Š0К___PPT10‹ы.ђrХpЇtœ№$ёR 0 Є№œа№˜№4№( № №˜№d №˜ c №$Пџ ˆ№ЫvjТ №У  §№ №˜ s №*€§Пџ ˆ№[ А0№У  § №ŸЊ №H №˜ ƒ №0ƒ“оНh”њW”Пџ ?№ џџџ€€€Лру33™™™™Ьˆ8Š0К___PPT10‹ы.ђrХpЇtœ№$ёT 0 Є№œ №Ќ№4№( № №Ќ№d №Ќ c №$Пџ ˆ№ЫvjТ №У  §№ №Ќ s №*€Ш%§Пџ ˆ№[ А0№У  § №ŸЊ №H №Ќ ƒ №0ƒ“оНh”њW”Пџ ?№ џџџ€€€Лру33™™™™Ьˆ8Š0К___PPT10‹ы.ђrХ.vœr№@[}“‰˜ 0 7Ь# єиїŽ' ѕˆл*­н,Эп6эс< ф@–G-цPYбWогd*Еn †Њ/­иЏMшyъЅь›бюВЏЗ@КбМbПѓС„Ф§№ЧІЩШЮcжŸ)ѓгЂdЅѕЇUѕѕMйї‡Х1ўџр…ŸђљOhЋ‘+'Гй0ШT `hŒЄ МШ ь ј фSpreadsheet Design ConceptsSimon MurphySimon Murphy114Microsoft Office PowerPoint@P.˜А@Аh^`„ZХ@аeЂЌЦэGЈSџџџџ‰g  Ь)Ё'  бС ї€€€€€€€€€РРРРмРІЪ№ """)))UUUMMMBBB999џ|€џPPж“ЬьџяжЦччж­Љ3f™Ь333f3™3Ь3џ3f3fff™fЬfџf™3™f™™™Ь™џ™Ь3ЬfЬ™ЬЬЬџЬfџ™џЬџ333f3™3Ь3џ333333f33™33Ь33џ33f33f3ff3™f3Ьf3џf3™33™3f™3™™3Ь™3џ™3Ь33Ь3fЬ3™Ь3ЬЬ3џЬ33џ3fџ3™џ3Ьџ3џџ3f3fff™fЬfџf3f33ff3f™3fЬ3fџ3fff3fffff™ffЬff™f3™ff™f™™fЬ™fџ™fЬf3Ьf™ЬfЬЬfџЬfџf3џf™џfЬџfџЬЬџ™™™3™™™Ь™™33™f™Ь3™џ™f™3f™f3™™f™Ьf™џ3™3™™f™™™™™Ь™™џ™™Ь™3Ь™fЬf™Ь™ЬЬ™џЬ™џ™3џ™fЬ™™џ™Ьџ™џџ™Ь3™fЬ™ЬЬЬ3™33Ьf3Ь™3ЬЬ3Ьџ3ЬfЬ3fЬff™™fЬЬfЬџf™™Ь3™Ьf™Ь™™ЬЬ™Ьџ™ЬЬЬ3ЬЬfЬЬ™ЬЬЬЬЬџЬЬџЬ3џЬfџ™™џЬЬџЬџџЬ3Ьfџ™џ3Ь33џf3џ™3џЬ3џџ3џfџ3fџffЬ™fџЬfџџfЬ™џ3™џf™џ™™џЬ™џџ™џЬџ3ЬџfЬџ™ЬџЬЬџџЬџ3џџfџЬ™џџЬџџџfffџfџџfffџџfџfџџЅ!___www†††–––ЫЫЫВВВзззнннуууъъъёёёјјјџћ№  Є€€€џџџџџџџџџџ\VC94Ё'A Ьx аР( xK€€€€€€€€€РРРРмР№ЪІ """)))UUUMMMBBB999€|џPPџ“жџьЬЦжяжччЉ­3f™Ь3333f3™3Ь3џff3fff™fЬfџ™™3™f™™™Ь™џЬЬ3ЬfЬ™ЬЬЬџџfџ™џЬ3333f3™3Ь3џ3333333f33™33Ь33џ3f3f33ff3f™3fЬ3fџ3™3™33™f3™™3™Ь3™џ3Ь3Ь33Ьf3Ь™3ЬЬ3Ьџ3џ33џf3џ™3џЬ3џџff3fff™fЬfџf3f33f3ff3™f3Ьf3џffff3fffff™ffЬf™f™3f™ff™™f™Ьf™џfЬfЬ3fЬ™fЬЬfЬџfџfџ3fџ™fџЬЬџџЬ™™™3™™™™Ь™™33™f™3Ь™џ™f™f3™3f™f™™fЬ™3џ™™3™™f™™™™™Ь™™џ™Ь™Ь3fЬf™Ь™™ЬЬ™Ьџ™џ™џ3™Ьf™џ™™џЬ™џџЬ™3ЬfЬ™ЬЬ™3Ь33Ь3fЬ3™Ь3ЬЬ3џЬfЬf3™ffЬf™ЬfЬ™fџЬ™Ь™3Ь™fЬ™™Ь™ЬЬ™џЬЬЬЬ3ЬЬfЬЬ™ЬЬЬЬЬџЬџЬџ3™џfЬџ™ЬџЬЬџџЬ3џfџ™Ь3џ33џ3fџ3™џ3Ьџ3џџfџf3Ьffџf™џfЬЬfџџ™џ™3џ™fџ™™џ™Ьџ™џџЬџЬ3џЬfџЬ™џЬЬџЬџџџ3Ьџfџџ™џџЬffџfџffџџџffџfџџџf!Ѕ___www†††–––ЫЫЫВВВзззнннуууъъъёёёјјј№ћџЄ  €€€џџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџqqqqqqqqqqqqqqqqqqqqqqqqqџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџqџџџџџџџџџџџџџџџџџџџџџџџџqџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџнЯЕЯЕЯЕЯЕЯЕЯЕЯЕЯЕЯЕЯЕЯЕЯЕЯЕЕџџџџџџqџџџџџџџџџџџџџџџџџџџџџџџџqџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџЎЁ…………………………………………………………………ЯџџџџџџqџџvvџvvvџџvvvџvџvџvvџvџџqџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџЕ­­‹­­­­Я­­І­ЇД­­­­††­­†Я­ЇЯџџџџџџqџџџџџџvџџџџџџџџџџџџџџџџџqййййййййййййййййййййййййййййййййййййййййййййййййййййййййййййййййййййййййййййййййййййййййййййййййййййЯцФЩЇЯЯцЯцЯц­цЯеЇцЯЈФЩФц­ЯФЏџџџџџџqџџџџџџџџџџџџџџџџџџџџџџџџqџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџжцаЩЪЩЪцЪЩЪЩаЩЪЩаЩЪЩХЩЦцЪцЪаџџџџџџqџџџџџvvџџvvџџvvvџџџџџџџџqџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџЯЪЩЩХХХХХХХХХХХХХХХХХЩХХХХХаџџџџџџqџџџџџџџџџџџџџџџџџџџџџџџџqџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџназазжзазжзазжзазазазазазаззџџџџџџqqqqqqqqqqqqqqqqqqqqqqqqqqџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџЁЁЁЁџЁџџџџџџЁЁџЁџџџџЁЁџџџџџџЁЁџЁџџЁЁЁџЁџџџџЁџџЁџЁџџџЁЁџЁЁџџЁЁџџЁЁџЁџџџџџЁЁЁџџЁЁџџЁЁџЁЁџџџџЁЁџџЁџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџЁЁЁџЁџЁџЁџЁџџЁЁџЁџџџЁџЁџЁџЁџЁџЁџџЁџџЁЁџЁџџЁЁЁџЁџЁЁЁџџЁџџЁЁџЁџЁџџџЁџЁџЁџЁџЁџЁџЁџЁџџџџЁџЁџЁџџџЁџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџЁџџЁџЁџЁџЁџЁџџЁЁџЁџџџЁџЁџЁџЁџЁџЁџџЁџџЁЁџЁџЁџЁЁџЁџЁЁЁџџЁџџЁЁџЁџЁЁЁЁЁџЁџЁџџЁЁџЁџЁџЁџџџџЁџЁџЁЁЁЁЁџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџЁЁЁџЁЁЁЁЁџџЁЁџЁЁЁџџџЁЁЁЁЁџЁџџџЁЁџЁЁЁџЁЁЁџЁџџЁџЁЁџЁџЁЁџЁЁџџЁЁџџЁЁџЁЁЁЁЁџџЁЁџЁЁЁџџЁЁџџЁЁЁџџЁЁџЁЁџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџЁџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџЁџџџџџџџЁЁЁЁџџџџџџџџџџџџџџџџџџџџџџџџџџЁџЁџџџџџџџџџџџџџџЁџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџўџеЭеœ.“—+,љЎDеЭеœ.“—+,љЎЄ`ˆЈРШаи р ш№ ј  §фOn-screen ShowCodematic Ltd и TahomaDefault DesignExcel VBA Best PracticeSpreadsheet backgroundAgenda SecurityFundamental ImperativeDevelopment Process#Design – 2 Questions, 2 Approaches CouplingFan in / fan outDevelopment EnvironmentDesign ConsiderationsHigh Quality Code – General 1High Quality Code – General 2High Quality Code - ModulesHigh Quality Code - ProceduresHigh Quality Code - BlocksHigh Quality Code - VariablesHigh Quality Code – Excel 1High Quality Code – Excel 2High Quality Code - ClassesAvoiding Common ErrorsDebugging and TestingDocumentationDocumentationExtending ExcelSummary Resources Questions?  Fonts UsedDesign Template Slide TitlesД 8@ _PID_HLINKSфAl$http://www.bygsoftware.com/http://www.appspro.com/http://www.j-walk.com/http://www.mz-tools.com/http://www.codematic.net/http://www.oaltd.co.uk/і$_Р‘уyј єк0Simon MurphySimon Murphyўџџџ  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~€‚ƒ„ўџџџ†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ЁЂЃЄЅІЇЈЉЊЋЌ­ЎЏўџџџБВГДЕЖЗўџџџЙКЛМНОПўџџџ§џџџ§џџџУўџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџџRoot Entryџџџџџџџџd›OЯ†ъЊЙ)шўџџџPicturesџџџџџџџџџџџџCurrent UserџџџџџџџџИSummaryInformation(џџџџ…јTPowerPoint Document(џџџџџџџџџџџџјDocumentSummaryInformation8џџџџџџџџАџџџџџџџџџџџџџџџџџџџџџџџџ