diff --git a/ChangeLog.txt b/ChangeLog.txt index 1eeb5fc4..1280030b 100644 --- a/ChangeLog.txt +++ b/ChangeLog.txt @@ -526,3 +526,57 @@ Other Commits: on relevant script/XML/header files. This does not affect the specification source copyright. +----------------------------------------------------- + +Change log for April 29, 2016 Vulkan 1.0.12 spec update: + + * Bump API patch number and header version number to 12 for this + update. + +Github Issues: + + * Change valid usage statements intended to be "sub-points" to + be actual sub-points (public issue 66). + * Replace double negation in description of + slink:VkRenderPassBeginInfo::pname:pClearValues (based on public + merge 142). + * Cleanup minor typos in spec, ref pages and XML, including those + proposed in public pull requests 144, 150, 151, 167, 168, 181, and + 186. + * Use *strict subset* in describing the partial order of memory + property types for slink:VkMemoryType, and update the style guide + accordingly (public issue 190). + * Fix various "a image" -> "an image" typos (public issue 191). + * Note in the <> and + <> sections that + structures defined by extensions which may be passed in structure + chains using the ptext:pNext member must: include initial + ptext:sType and ptext:pNext members (public issue 192). + +Internal Issues: + + * Remove duplicate language from the description of the pname:fence + parameter to flink:vkQueueSubmit and improve validity language + (internal issue 91). + * Added documentation for "optional" attribute to XML readme.tex/pdf + (internal issue 149). + * Clarify the host-side data validity rules and behavior of + flink:vkFlushMappedMemoryRanges and + flink:vkInvalidateMappedMemoryRanges (internal issue 266). + +Other Commits: + + * Added clarification to flink:vkCmdFillBuffer regarding the use of + ename:VK_WHOLE_SIZE. + * Fixed and documented implementation of "validextensionstructs" + attribute. in XML processing scripts and readme.tex/pdf. + * Add missing validity statements to flink:vkResetEvent and + flink:vkCmdResetEvent. + * Fix validity for the + ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag. + Correct all the draw/dispatch commands to mention optimally tiled + images as well as linear tiled images, and say image VIEWS instead + of images. Add validity statement to flink:vkCmdBlitImage + * Replace the {apiname} macro with hardcoded "Vulkan", now that we've + committed to that name. + * Add the VK_AMD_rasterization_order extension to vk.xml. diff --git a/doc/specs/vulkan/Makefile b/doc/specs/vulkan/Makefile index b09702da..138084bf 100644 --- a/doc/specs/vulkan/Makefile +++ b/doc/specs/vulkan/Makefile @@ -26,7 +26,6 @@ allchecks: checkinc checklinks # Note that the := assignments below are immediate, not deferred, and # are therefore order-dependent in the Makefile -APINAME=Vulkan QUIET?=@ ASCIIDOC ?= asciidoc.py A2X ?= a2x.py @@ -64,14 +63,14 @@ KEEP = # asciidoc / a2x attributes to set. # XMLLINT normally unset - to detect problems with intermediate files # NOTEOPTS sets options controlling which NOTEs are generated -# ATTRIBOPTS sets {apiname} to "Vulkan" and enables MathJax generation +# ATTRIBOPTS sets the api revision and enables MathJax generation # VKCONF contains Vulkan-specific Asciidoc macros # ADOCOPTS options for asciidoc->HTML output # ADOCPDFOPTS options for asciidoc->PDF output via dblatex (not using a2x) # A2XOPTS options for a2x->{HTML,PDF} output XMLLINT = --no-xmllint NOTEOPTS = -a editing-notes -a implementation-guide -ATTRIBOPTS = -a apiname=$(APINAME)@ -a apirevision="$(SPECREVISION)" -a mathjax +ATTRIBOPTS = -a apirevision="$(SPECREVISION)" -a mathjax VKCONF = config/vkspec.conf ADOCOPTS = $(ATTRIBOPTS) $(NOTEOPTS) -f config/mathjax-asciidoc.conf \ -f $(VKCONF) $(VERBOSE) @@ -126,7 +125,7 @@ INCLUDES := $(wildcard protos/*.txt structs/*.txt flags/*.txt enums/*.txt funcpo COMMONDOCS := $(CHAPTERS) $(INCLUDES) # A generated included file with the spec version, date, and git commit SPECVERSION = specversion.txt -SPECREVISION = 1.0.11 +SPECREVISION = 1.0.12 SPECREMARK = # Spec targets diff --git a/doc/specs/vulkan/appendices/VK_KHR_sampler_mirror_clamp_to_edge.txt b/doc/specs/vulkan/appendices/VK_KHR_sampler_mirror_clamp_to_edge.txt index 054334ba..3bc18fed 100644 --- a/doc/specs/vulkan/appendices/VK_KHR_sampler_mirror_clamp_to_edge.txt +++ b/doc/specs/vulkan/appendices/VK_KHR_sampler_mirror_clamp_to_edge.txt @@ -7,7 +7,7 @@ *Last Modified Date*:: 16/02/2016 *Revision*:: 1 *Dependencies*:: - - This extension is written against version 1.0. of the {apiname} API. + - This extension is written against version 1.0. of the Vulkan API. *Contributors*:: - Tobias Hector, Imagination Technologies *Contacts*:: diff --git a/doc/specs/vulkan/appendices/compressedtex.txt b/doc/specs/vulkan/appendices/compressedtex.txt index f4c9d3eb..880fb9d2 100644 --- a/doc/specs/vulkan/appendices/compressedtex.txt +++ b/doc/specs/vulkan/appendices/compressedtex.txt @@ -26,7 +26,7 @@ Format Specification. [[appendix-compressedtex-bc]] == Block-Compressed Image Formats -.Mapping of {apiname} BC formats to descriptions +.Mapping of Vulkan BC formats to descriptions [width="90%",options="header",cols="5,4"] |============================== | VkFormat | Data Format Specification description @@ -59,7 +59,7 @@ Format Specification. The following formats are described in the ``ETC2 Compressed Texture Image Formats'' chapter of the Khronos Data Format Specification. -.Mapping of {apiname} ETC formats to descriptions +.Mapping of Vulkan ETC formats to descriptions [options="header",cols="1,1"] |============================== | VkFormat | Data Format Specification description @@ -83,7 +83,7 @@ Formats'' chapter of the Khronos Data Format Specification. ASTC formats are described in the ``ASTC Compressed Texture Image Formats'' chapter of the Khronos Data Format Specification. -.Mapping of {apiname} ASTC formats to descriptions +.Mapping of Vulkan ASTC formats to descriptions [width="75%",options="header",cols="63%,15%,22%"] |============================== | VkFormat ^| Compressed texel block dimensions ^| sRGB-encoded diff --git a/doc/specs/vulkan/appendices/extensions.txt b/doc/specs/vulkan/appendices/extensions.txt index f03c812c..f99c3f63 100644 --- a/doc/specs/vulkan/appendices/extensions.txt +++ b/doc/specs/vulkan/appendices/extensions.txt @@ -6,9 +6,9 @@ [[extensions]] = Layers & Extensions -Extensions to the {apiname} API can: be defined by authors, groups of -authors, and the Khronos {apiname} Working Group. In order not to compromise -the readability of the {apiname} Specification, the core Specification does +Extensions to the Vulkan API can: be defined by authors, groups of +authors, and the Khronos Vulkan Working Group. In order not to compromise +the readability of the Vulkan Specification, the core Specification does not incorporate most extensions. The online registry of extensions is available at URL @@ -41,7 +41,7 @@ several purposes: * Provides a central repository for documentation and header changes associated with extensions -{apiname}'s design and general software development trends introduces two +Vulkan's design and general software development trends introduces two new paradigms that require rethinking the existing mechanisms: * Layers, and with them a focus on a more open ecosystem where non-Khronos @@ -63,7 +63,7 @@ Some general rules to simplify the specific rules below: * All extensions must: be registered with Khronos. * Extensions must: be strictly additive and backwards-compatible. That is, extensions mustnot: remove existing functionality, or change existing - default behaviors. A {apiname} implementation may: support any + default behaviors. A Vulkan implementation may: support any combination of extensions, but applications written using only the core API, or a subset of the supported extensions, must: continue to work in such an implementation without changes in behavior. @@ -78,8 +78,8 @@ Both extensions and layer names include a +VK_+ prefix. In addition, layers add a +LAYER_+ prefix. Extension and layer names also contain an _author prefix_ identifying the author of the extension/layer. This prefix is a short, capitalized, registered string identifying an author, such as a -Khronos member developing {apiname} implementations for their devices, or a -non-Khronos developer creating {apiname} layers. +Khronos member developing Vulkan implementations for their devices, or a +non-Khronos developer creating Vulkan layers. Some authors have platform communities they wish to distinguish between, and can: register additional author prefixes for that purpose. For example, @@ -98,7 +98,7 @@ only for layers. will use the prefix +VK_KHR_+. ** The following author prefixes are reserved and mustnot: be used: *** +VK+ - To avoid confusion with the top-level +VK_+ prefix. - *** +VULKAN+ - To avoid confusion with the name of the {apiname} API. + *** +VULKAN+ - To avoid confusion with the name of the Vulkan API. *** +LAYER+ - To avoid confusion with the higher-level ``LAYER'' prefix. *** +KHRONOS+ - To avoid confusion with the Khronos organization. ** Multi-author extensions that have not been ratified by Khronos (those @@ -143,7 +143,7 @@ browser. == Extension Command, Type, and Token Naming Conventions Extensions may: add new commands, types, and tokens, or collectively -``objects'', to the {apiname} API. These objects are given globally unique +``objects'', to the Vulkan API. These objects are given globally unique names by appending the author prefix defined above for the extension name according to the following templates. @@ -184,10 +184,10 @@ enum VkSomeValuesGRPHX { [[extensions-api-registry]] -== The {apiname} Registry +== The Vulkan Registry -The canonical definition of the {apiname} APIs is kept in an XML file known -as the *{apiname} registry*. The registry is kept in +src/spec/vk.xml+ in +The canonical definition of the Vulkan APIs is kept in an XML file known +as the *Vulkan registry*. The registry is kept in +src/spec/vk.xml+ in the branch of the vulkan project containing the most recently released core API specification. The registry contains reserved author prefixes, core and extension interface definitions, definitions of individual commands and @@ -202,7 +202,7 @@ documentation used in generating the API specification and reference pages. == Registering an Author Prefix with Khronos Previous Khronos APIs could only officially be modified by Khronos members. -In an effort to build a more flexible platform, {apiname} allows non-Khronos +In an effort to build a more flexible platform, Vulkan allows non-Khronos developers to extend and modify the API via layers and extensions in the same manner as Khronos members. However, extensions must: still be registered with Khronos. A mechanism for non-members to register layers and @@ -222,7 +222,7 @@ contact email address, respectively. The author prefix will be reserved only once this merge request is accepted. Please do not try to reserve author names which clearly belong to another -existing company or software project which may: wish to develop {apiname} +existing company or software project which may: wish to develop Vulkan extensions or layers in the future, as a matter of courtesy and respect. Khronos may: decline to register author names that are not requested in good faith. @@ -231,7 +231,7 @@ faith. [[extensions-vendor-id]] == Registering a Vendor ID with Khronos -{apiname} implementers must report a valid vendor ID for their +Vulkan implementers must report a valid vendor ID for their implementation, as reported by <>. If there is no valid PCI vendor ID defined for the physical device, @@ -251,7 +251,7 @@ available ID in the list of ++ tags. The vendor ID will be reserved only once this merge request has been accepted. Please do not try to reserve vendor IDs unless you are making a good faith -effort to develop a {apiname} implementation and require one for that +effort to develop a Vulkan implementation and require one for that purpose. @@ -264,7 +264,7 @@ registration is strongly recommended. Registration means: * Adding the extension or layer name to the list in +vk.xml+ and appearing on the Khronos registry website, which will link to associated documentation hosted on Khronos. - * For extensions which add to the {apiname} API, including definitions of + * For extensions which add to the Vulkan API, including definitions of those additions to +vk.xml+. Registration for Khronos members is handled by filing a merge request in the @@ -298,7 +298,7 @@ extension number assignment prior to extension publication: * Develop and test the extension using the registered extension number. * Publish the extension to Khronos using the previously registered extension number, by creating a branch of the repository with - appropriate changes relative to the core {apiname} API branch. + appropriate changes relative to the core Vulkan API branch. * Mark the extension as enabled, by proposing a merge to master changing the +supported+ attribute value of the ++ to +supported="vulkan"+. This should: be completely automated and under the @@ -326,15 +326,15 @@ endif::editing-notes[] == Documenting Extensions -Extensions are documented as modifications to the {apiname} specification. +Extensions are documented as modifications to the Vulkan specification. These modifications will be on Git branches that are named with the following syntax: +-+ For example, the VK_KHR_surface extension will be documented relative -to version 1.0 of the {apiname} specification. As such, the branch name will +to version 1.0 of the Vulkan specification. As such, the branch name will be: +1.0-VK_KHR_surface+ -If the extension modifies an existing section of the {apiname} +If the extension modifies an existing section of the Vulkan specification, those modifications are made in-place. Since the changes are on a branch, the core-only specification can: be easily produced. A specification with an extension is created by merging in the extension's @@ -347,7 +347,7 @@ higher-numbered extension should: take care to deal with any conflicts. The WSI extensions were used to help pioneer what should: be done for extensions. This includes the following: - * All extensions should: add to the appendix of the {apiname} + * All extensions should: add to the appendix of the Vulkan specification. This should: be modeled after what was done for the +VK_KHR_surface+ extension, which contains some high-level information about the extension (as well as code examples, and revision history) in @@ -360,12 +360,12 @@ extensions. This includes the following: multiple extensions' branches are merged in order to create the ``full'' branch specification. * If there are any other places where 2 or more extensions will extend the - {apiname} specification, it is best to put that content in a file, and + Vulkan specification, it is best to put that content in a file, and use an +include+ statement to put that content into the spec. Again, this +include+ line should: be put on the master branch in order to avoid merge conflicts. - * If an extension is more of an addition to the {apiname} specification, - the extension should: add a chapter to the {apiname} specification. + * If an extension is more of an addition to the Vulkan specification, + the extension should: add a chapter to the Vulkan specification. == Assigning Extension Token Values @@ -443,7 +443,7 @@ all extensions must: define two additional tokens. extension specification, and is incremented when significant changes (bugfixes or added functionality) are made. Note that the revision of an extension defined in +vulkan.h+ and the revision supported by the - {apiname} implementation (the pname:specVersion field of the + Vulkan implementation (the pname:specVersion field of the slink:VkExtensionProperties structure corresponding to the extension and returned by one of the <>) may: differ. In such cases, only the functionality and @@ -472,7 +472,7 @@ be included in the +vulkan.h+ header supplied by Khronos. .Note ==== Application developers are encouraged to be careful when using +switch+ -statements with {apiname} API enums. This is because extensions can: add new +statements with Vulkan API enums. This is because extensions can: add new values to existing enums. The use of a +default:+ statement, within a +switch+, may: avoid future compilation issues. ==== @@ -481,23 +481,23 @@ values to existing enums. The use of a +default:+ statement, within a [[extension-function_prototypes]] == Extension Function Prototypes -Function pointer declarations and function prototypes for all core {apiname} +Function pointer declarations and function prototypes for all core Vulkan API commands are included in the +vulkan.h+ file. These come from the -official XML specification of the {apiname} API hosted by Khronos. +official XML specification of the Vulkan API hosted by Khronos. Function pointer declarations are also included in the +vulkan.h+ file for all commands defined by registered extensions. Function prototypes for extensions may: be included in +vulkan.h+. Extension commands that are part -of the {apiname} ABI must: be flagged in the XML. Function prototypes will +of the Vulkan ABI must: be flagged in the XML. Function prototypes will be included in +vulkan.h+ for all extension commands that are part of the -{apiname} ABI. +Vulkan ABI. An extension can: be considered platform specific, in which case its interfaces in +vulkan.h+ are protected by #ifdefs. This is orthogonal to -whether an extension command is considered to be part of the {apiname} ABI. +whether an extension command is considered to be part of the Vulkan ABI. The initial set of WSI extension commands are considered to be part of the -{apiname} ABI. Function prototypes for these WSI commands are included in +Vulkan ABI. Function prototypes for these WSI commands are included in the +vulkan.h+ provided by Khronos, though the platform-specific portions of +vulkan.h+ are protected by #ifdefs. @@ -505,7 +505,7 @@ the +vulkan.h+ provided by Khronos, though the platform-specific portions of .Note ==== Based on feedback from implementers, Khronos expects that the Android, -Linux, and Windows {apiname} SDKs will include our +vulkan.h+ and export +Linux, and Windows Vulkan SDKs will include our +vulkan.h+ and export the supported WSI functions for those platforms from their loader libraries. Other implementations can: make different choices for their headers and loader libraries, but are encouraged to be consistent with @@ -518,8 +518,8 @@ these implementations. flink:vkGetInstanceProcAddr and flink:vkGetDeviceProcAddr can: be used in order to obtain function pointer addresses for core and extension commands (per the description in <>). Different {apiname} API loaders can: choose to statically -export functions for some or all of the core {apiname} API commands, and +Pointers>>). Different Vulkan API loaders can: choose to statically +export functions for some or all of the core Vulkan API commands, and can: statically export functions for some or all extension commands. If a loader statically exports a function, an application can: link against that function without needing to call one of the ftext:vkGet*ProcAddr commands. @@ -527,8 +527,8 @@ function without needing to call one of the ftext:vkGet*ProcAddr commands. [NOTE] .Note ==== -The Khronos-provided {apiname} API loader for Android, Linux, and Windows -exports functions for all core {apiname} API and WSI extension commands. The +The Khronos-provided Vulkan API loader for Android, Linux, and Windows +exports functions for all core Vulkan API and WSI extension commands. The WSI functions are considered special, because they are required for many applications. ==== @@ -556,6 +556,7 @@ defined and locked down, it's safest to refer to the listed contact. ==== +[[extensions-interactions]] == Extension Interactions Extensions modifying the behavior of existing commands should: provide @@ -563,7 +564,14 @@ additional parameters by using the pname:pNext field of an existing structure, pointing to a new structure defined by the extension, as described in the <> section. Extension structures defined by multiple extensions affecting the same structure can -be chained together in this fashion. +be chained together in this fashion. Any structure which can: be chained +in this fashion must: begin with the following two members: + +["source","{basebackend@docbook:c++:cpp}",title=""] +------------------------------------------------------------------------------ +VkStructureType sType; +const void* pNext; +------------------------------------------------------------------------------ It is in principle possible for extensions to provide additional parameters through alternate means, such as passing a handle parameter to a structure diff --git a/doc/specs/vulkan/appendices/glossary.txt b/doc/specs/vulkan/appendices/glossary.txt index 9c2123e5..913630ab 100644 --- a/doc/specs/vulkan/appendices/glossary.txt +++ b/doc/specs/vulkan/appendices/glossary.txt @@ -216,7 +216,7 @@ Device-Local Memory:: Dispatchable Handle:: A handle of a pointer handle type which may: be used by layers as part - of intercepting API commands. The first argument to each {apiname} + of intercepting API commands. The first argument to each Vulkan command is a dispatchable handle type. Dispatching Commands:: @@ -229,7 +229,7 @@ Drawing Commands:: flink:vkCmdDrawIndexedIndirect. Duration (Command):: - The _duration_ of a {apiname} command refers to the interval between + The _duration_ of a Vulkan command refers to the interval between calling the command and its return to the caller. Dynamic Storage Buffer:: @@ -314,7 +314,7 @@ Global Workgroup:: A collection of local workgroups dispatched by a single dispatch command. Handle:: - An opaque integer or pointer value used to refer to a {apiname} object. + An opaque integer or pointer value used to refer to a Vulkan object. Each object type has a unique handle type. Happen-after:: @@ -378,7 +378,7 @@ Immutable Sampler:: the layout, and cannot be changed. Implicitly-Enabled Layer:: - A layer enabled by a loader-defined mechanism outside the {apiname} API, + A layer enabled by a loader-defined mechanism outside the Vulkan API, rather than explicitly by the application during instance or device creation. @@ -402,7 +402,7 @@ Input Attachment:: view. Instance:: - The top-level {apiname} object, which represents the application's + The top-level Vulkan object, which represents the application's connection to the implementation. Represented by a sname:VkInstance object. @@ -427,7 +427,7 @@ Local Workgroup:: Logical Device:: An object that represents the application's interface to the physical - device. The logical device is the parent of most {apiname} objects. + device. The logical device is the parent of most Vulkan objects. Represented by a sname:VkDevice object. Logical Operation:: @@ -802,7 +802,7 @@ A:: = Prefixes Prefixes are used in the API to denote specific semantic meaning of -{apiname} names, or as a label to avoid name clashes, and are explained +Vulkan names, or as a label to avoid name clashes, and are explained here: VK/Vk/vk:: diff --git a/doc/specs/vulkan/appendices/invariance.txt b/doc/specs/vulkan/appendices/invariance.txt index efcb0875..4656c409 100644 --- a/doc/specs/vulkan/appendices/invariance.txt +++ b/doc/specs/vulkan/appendices/invariance.txt @@ -4,8 +4,8 @@ [appendix] = Invariance -The {apiname} specification is not pixel exact. It therefore does not -guarantee an exact match between images produced by different {apiname} +The Vulkan specification is not pixel exact. It therefore does not +guarantee an exact match between images produced by different Vulkan implementations. However, the specification does specify exact matches, in some cases, for images produced by the same implementation. The purpose of this appendix is to identify and provide justification for those cases that @@ -14,10 +14,10 @@ require exact matches. == Repeatability The obvious and most fundamental case is repeated issuance of a series of -{apiname} commands. For any given {apiname} and framebuffer state vector, -and for any {apiname} command, the resulting {apiname} and framebuffer state +Vulkan commands. For any given Vulkan and framebuffer state vector, +and for any Vulkan command, the resulting Vulkan and framebuffer state must: be identical whenever the command is executed on that initial -{apiname} and framebuffer state. This repeatability requirement doesn't +Vulkan and framebuffer state. This repeatability requirement doesn't apply when using shaders containing side effects (image and buffer variable stores and atomic operations), because these memory operations are not guaranteed to be processed in a defined order. @@ -38,7 +38,7 @@ Additional invariance rules are desirable to ensure useful operation. == Multi-pass Algorithms Invariance is necessary for a whole set of useful multi-pass algorithms. -Such algorithms render multiple times, each time with a different {apiname} +Such algorithms render multiple times, each time with a different Vulkan mode vector, to eventually produce a result in the framebuffer. Examples of these algorithms include: @@ -49,11 +49,11 @@ these algorithms include: == Invariance Rules -For a given instantiation of an {apiname} rendering context: +For a given instantiation of an Vulkan rendering context: -*Rule 1* _For any given {apiname} and framebuffer state vector, and for any -given {apiname} command, the resulting {apiname} and framebuffer state must: -be identical each time the command is executed on that initial {apiname} and +*Rule 1* _For any given Vulkan and framebuffer state vector, and for any +given Vulkan command, the resulting Vulkan and framebuffer state must: +be identical each time the command is executed on that initial Vulkan and framebuffer state._ *Rule 2* _Changes to the following state values have no side effects (the @@ -89,7 +89,7 @@ sequence, are pixel identical._ when run multiple times with the same input. The wording ``the same shader'' means a program object that is populated with the same SPIR-V binary, which is used to create pipelines, possibly multiple times, and which program -object is then executed using the same {apiname} state vector. Invariance is +object is then executed using the same Vulkan state vector. Invariance is relaxed for shaders with side effects, such as performing stores or atomics._ @@ -98,19 +98,19 @@ assign_ code:FragCoord.z _to_ code:FragDepth _are depth-invariant with respect to each other, for those fragments where the assignment to_ code:FragDepth _actually is done._ -If a sequence of {apiname} commands specifies primitives to be rendered with +If a sequence of Vulkan commands specifies primitives to be rendered with shaders containing side effects (image and buffer variable stores and atomic operations), invariance rules are relaxed. In particular, rule 1, corollary 2, and rule 4 do not apply in the presence of shader side effects. -The following weaker versions of rules 1 and 4 apply to {apiname} commands +The following weaker versions of rules 1 and 4 apply to Vulkan commands involving shader side effects: -*Rule 6* _For any given {apiname} and framebuffer state vector, and for any -given {apiname} command, the contents of any framebuffer state not directly +*Rule 6* _For any given Vulkan and framebuffer state vector, and for any +given Vulkan command, the contents of any framebuffer state not directly or indirectly affected by results of shader image or buffer variable stores or atomic operations must: be identical each time the command is executed on -that initial {apiname} and framebuffer state._ +that initial Vulkan and framebuffer state._ *Rule 7* _The same vertex or fragment shader will produce the same result when run multiple times with the same input as long as:_ @@ -121,8 +121,8 @@ when run multiple times with the same input as long as:_ * _no shader invocation, or other operation performed to process the sequence of commands, reads memory written to by an image store._ -When any sequence of {apiname} commands triggers shader invocations that -perform image stores or atomic operations, and subsequent {apiname} commands +When any sequence of Vulkan commands triggers shader invocations that +perform image stores or atomic operations, and subsequent Vulkan commands read the memory written by those shader invocations, these operations must: be explicitly synchronized. diff --git a/doc/specs/vulkan/appendices/spirvenv.txt b/doc/specs/vulkan/appendices/spirvenv.txt index a931148d..01830247 100644 --- a/doc/specs/vulkan/appendices/spirvenv.txt +++ b/doc/specs/vulkan/appendices/spirvenv.txt @@ -3,16 +3,16 @@ [appendix] [[spirvenv]] -= {apiname} Environment for SPIR-V += Vulkan Environment for SPIR-V -Shaders for {apiname} are defined by the <> as +Shaders for Vulkan are defined by the <> as well as the <>. -This appendix defines additional SPIR-V requirements applying to {apiname} +This appendix defines additional SPIR-V requirements applying to Vulkan shaders. == Required Versions and Formats -A {apiname} 1.0 implementation must: support the 1.0 version of SPIR-V and +A Vulkan 1.0 implementation must: support the 1.0 version of SPIR-V and the 1.0 version of the SPIR-V Extended Instructions for GLSL. A SPIR-V module passed into flink:vkCreateShaderModule is interpreted as @@ -47,7 +47,7 @@ to that feature must: also be supported. .SPIR-V Capabilities which are not required:, and corresponding feature names [options="header"] |==== -| SPIR-V OpCapability | {apiname} feature name +| SPIR-V OpCapability | Vulkan feature name | code:Geometry | <> | code:Tessellation | <> | code:Float64 | <> @@ -81,7 +81,7 @@ following to flink:vkCreateShaderModule: - any OpCapability not listed above, - an unsupported capability, or - - a capability which corresponds to a {apiname} feature which has not been + - a capability which corresponds to a Vulkan feature which has not been enabled. @@ -198,18 +198,18 @@ negative the result is undefined. .Note ==== While the code:OpSRem and code:OpSMod instructions are supported by the -{apiname} environment, they require non-negative values and thus do not +Vulkan environment, they require non-negative values and thus do not enable additional functionality beyond what code:OpUMod provides. ==== [[spirvenv-image-formats]] -Compatibility Between SPIR-V Image Formats And {apiname} Formats ----------------------------------------------------------------- +Compatibility Between SPIR-V Image Formats And Vulkan Formats +------------------------------------------------------------- [cols="2*", options="header"] |=== -|SPIR-V Image Format |{apiname} Format +|SPIR-V Image Format |Vulkan Format |code:Rgba32f |ename:VK_FORMAT_R32G32B32A32_SFLOAT |code:Rgba16f |ename:VK_FORMAT_R16G16B16A16_SFLOAT |code:R32f |ename:VK_FORMAT_R32_SFLOAT diff --git a/doc/specs/vulkan/chapters/clears.txt b/doc/specs/vulkan/chapters/clears.txt index b946f5f1..39ff7d81 100644 --- a/doc/specs/vulkan/chapters/clears.txt +++ b/doc/specs/vulkan/chapters/clears.txt @@ -221,7 +221,9 @@ include::../protos/vkCmdFillBuffer.txt[] filling, and must: be a multiple of 4. * pname:size is the number of bytes to fill, and must: be either a multiple of 4, or ename:VK_WHOLE_SIZE to fill the range from - pname:offset to the end of the buffer. + pname:offset to the end of the buffer. If ename:VK_WHOLE_SIZE is used + and the remaining size of the buffer is not a multiple of 4, then the + nearest smaller multiple is used. * pname:data is the 4-byte word written repeatedly to the buffer to fill pname:size bytes of data. The data word is written to memory according to the host endianness. diff --git a/doc/specs/vulkan/chapters/cmdbuffers.txt b/doc/specs/vulkan/chapters/cmdbuffers.txt index cb4e7744..68189dbd 100644 --- a/doc/specs/vulkan/chapters/cmdbuffers.txt +++ b/doc/specs/vulkan/chapters/cmdbuffers.txt @@ -400,25 +400,13 @@ include::../protos/vkQueueSubmit.txt[] which describe the work to submit. All work described by pname:pSubmits must: be submitted to the queue before the command returns. * pname:fence is an optional handle to a fence. If pname:fence is not - code:VK_NULL_HANDLE, the fence is signaled when execution of all - sname:VkSubmitInfo::pname:pCommandBuffers members of pname:pSubmits is - completed. If pname:submitCount is zero but pname:fence is not - code:VK_NULL_HANDLE, the fence will still be submitted to the queue and - will become signaled when all work previously submitted to the queue has - completed. - -ifdef::editing-notes[] -[NOTE] -.editing-note -==== -(Jon) The description of pname:fence here was added from the ref page -because it was missing from the starting point of MR #1048, which is just -about cleaning up the markup of command parameters. It needs to be resolved -with the description far below of pname:fence, as noted by @jbolz, because -they're not very similar and because most of the second description belongs -in validity XML language. -==== -endif::editing-notes[] + code:VK_NULL_HANDLE, the fence is signaled when execution of all command + buffers specified in the sname:VkSubmitInfo::pname:pCommandBuffers + members of pname:pSubmits is complete, providing certain + <>. If + pname:submitCount is zero but pname:fence is not code:VK_NULL_HANDLE, + the fence will still be submitted to the queue and will become signaled + when all work previously submitted to the queue has completed. include::../validity/protos/vkQueueSubmit.txt[] @@ -444,7 +432,7 @@ signalled before executing any work, followed by a number of command buffers that will be executed, and finally, zero or more semaphores that will be signaled after command buffer execution completes. Each batch is represented as an instance of the slink:VkSubmitInfo structure stored in an array, the -address of which is passed in pname:pSubmitInfo. +address of which is passed in pname:pSubmits. The sname:VkSubmitInfo structure is defined as: @@ -473,13 +461,6 @@ include::../structs/VkSubmitInfo.txt[] include::../validity/structs/VkSubmitInfo.txt[] -If pname:fence is provided, it must: be in the unsignaled state (see -<>) and a fence must: only be associated with -a single submission until that submission completes, and the fence is -subsequently reset. When all command buffers in pname:pCommandBuffers have -completed execution, the status of pname:fence is set to signaled, providing -certain <>. - [[commandbuffers-submission-progress]] == Queue Forward Progress diff --git a/doc/specs/vulkan/chapters/copies.txt b/doc/specs/vulkan/chapters/copies.txt index 6fefdd6d..07a7506f 100644 --- a/doc/specs/vulkan/chapters/copies.txt +++ b/doc/specs/vulkan/chapters/copies.txt @@ -197,7 +197,7 @@ pname:extent.height is not a multiple of the compressed texel block height then (pname:extent.height + pname:srcOffset.y) must: equal the image subresource height and if pname:extent.depth is not a multiple of the compressed texel block depth then (pname:extent.depth + pname:srcOffset.z) -must: equal the image subresource depth. Similarily if the pname:dstImage is +must: equal the image subresource depth. Similarly, if the pname:dstImage is compressed and if pname:extent.width is not a multiple of the compressed texel block width then (pname:extent.width + pname:dstOffset.x) must: equal the image subresource width, if pname:extent.height is not a multiple of the diff --git a/doc/specs/vulkan/chapters/descriptorsets.txt b/doc/specs/vulkan/chapters/descriptorsets.txt index 65ecdd4a..9fa9970b 100644 --- a/doc/specs/vulkan/chapters/descriptorsets.txt +++ b/doc/specs/vulkan/chapters/descriptorsets.txt @@ -79,7 +79,7 @@ layout (set=m, binding=n) uniform sampler2D variableNameArray[L]; == Descriptor Types The following sections outline the various descriptor types supported by -{apiname}. Each section defines a descriptor type, and each descriptor type +Vulkan. Each section defines a descriptor type, and each descriptor type has a manifestation in the shading language and SPIR-V as well as in descriptor sets. There is mostly a one-to-one correspondence between descriptor types and classes of opaque types in the shading language, where @@ -1478,7 +1478,7 @@ include::../validity/protos/vkCmdBindDescriptorSets.txt[] As described above in section <>, the pipeline layout defines shader push constants which are -updated via {apiname} commands rather than via writes to memory or copy +updated via Vulkan commands rather than via writes to memory or copy commands. [NOTE] diff --git a/doc/specs/vulkan/chapters/devsandqueues.txt b/doc/specs/vulkan/chapters/devsandqueues.txt index 4d40bc51..563d508a 100644 --- a/doc/specs/vulkan/chapters/devsandqueues.txt +++ b/doc/specs/vulkan/chapters/devsandqueues.txt @@ -4,10 +4,10 @@ [[devsandqueues]] = Devices and Queues -Once {apiname} is initialized, devices and queues are the primary objects -used to interact with a {apiname} implementation. +Once Vulkan is initialized, devices and queues are the primary objects +used to interact with a Vulkan implementation. -{apiname} separates the concept of _physical_ and _logical_ devices. A +Vulkan separates the concept of _physical_ and _logical_ devices. A physical device usually represents a single device in a system (perhaps made up of several individual hardware devices working together), of which there are a finite number. A logical device represents an application's view of @@ -21,7 +21,7 @@ physical devices installed in the system, call: include::../protos/vkEnumeratePhysicalDevices.txt[] - * pname:instance is a handle to a {apiname} instance previously created + * pname:instance is a handle to a Vulkan instance previously created with fname:vkCreateInstance. * pname:pPhysicalDeviceCount is a pointer to an integer related to the number of physical devices available or queried, as described below. @@ -60,7 +60,7 @@ The sname:VkPhysicalDeviceProperties structure is defined as: include::../structs/VkPhysicalDeviceProperties.txt[] - * pname:apiVersion is the version of {apiname} supported by the device, + * pname:apiVersion is the version of Vulkan supported by the device, encoded as described in the <> section. * pname:driverVersion is the vendor-specified version of the driver. @@ -279,7 +279,7 @@ device exposes a number of _queue families_ each having one or more _queues_. All queues in a queue family support the same operations. As described in <>, a {apiname} application will first query for all physical devices +Devices>>, a Vulkan application will first query for all physical devices in a system. Each physical device can: then be queried for its capabilities, including its queue and queue family properties. Once an acceptable physical device is identified, an application will create a corresponding logical @@ -418,7 +418,7 @@ error is largely informational and intended only to inform the user that their hardware has probably developed a fault or become physically disconnected, and should: be investigated further. In many cases, physical device loss may: cause other more serious issues such as the operating -system crashing; in which case it may: not be reported via the {apiname} +system crashing; in which case it may: not be reported via the Vulkan API. ==== @@ -482,7 +482,7 @@ include::../validity/protos/vkDestroyDevice.txt[] To ensure that no work is active on the device, flink:vkDeviceWaitIdle can: be used to gate the destruction of the device. Prior to destroying a -device, an application is responsible for destroying/freeing any {apiname} +device, an application is responsible for destroying/freeing any Vulkan objects that were created using that device as the first parameter of the corresponding ftext:vkCreate* or ftext:vkAllocate* command. @@ -581,7 +581,7 @@ include::../validity/protos/vkGetDeviceQueue.txt[] [[devsandqueues-index]] === Queue Family Index -The queue family index is used in multiple places in {apiname} in order to +The queue family index is used in multiple places in Vulkan in order to tie operations to a specific family of queues. When retrieving a handle to the queue via fname:vkGetDeviceQueue, the queue @@ -647,7 +647,7 @@ binding operations in the queue have completed. include::../validity/protos/vkQueueWaitIdle.txt[] -Synchronization between queues is done using {apiname} semaphores as +Synchronization between queues is done using Vulkan semaphores as described in the <> chapter. @@ -655,7 +655,7 @@ chapter. [[devsandqueues-sparsebinding]] === Sparse Memory Binding -In {apiname} it is possible to sparsely bind memory to buffers and +In Vulkan it is possible to sparsely bind memory to buffers and images as described in the <> chapter. Sparse memory binding is a queue operation. A queue whose flags include the ename:VK_QUEUE_SPARSE_BINDING_BIT must: be able to support the diff --git a/doc/specs/vulkan/chapters/extensions.txt b/doc/specs/vulkan/chapters/extensions.txt index 9e564ab3..844ee097 100644 --- a/doc/specs/vulkan/chapters/extensions.txt +++ b/doc/specs/vulkan/chapters/extensions.txt @@ -5,7 +5,7 @@ = Extended Functionality Additional functionality may: be provided by layers or extensions. A layer -cannot: add or modify {apiname} commands, while an extension may: do so. +cannot: add or modify Vulkan commands, while an extension may: do so. There are two kinds of layers and extensions, instance and device. Instance layers and extensions are general purpose and do not depend on a specific @@ -24,10 +24,10 @@ extensions tend to be hardware-specific. Examples of these might be: [[extended-functionality-layers]] == Layers -When a layer is enabled, it inserts itself into the call chain for {apiname} +When a layer is enabled, it inserts itself into the call chain for Vulkan commands the layer is interested in. A common use of layers is to validate application behavior during development. For example, the implementation -will not check that {apiname} enums used by the application fall within +will not check that Vulkan enums used by the application fall within allowed ranges. Instead, a validation layer would do those checks and flag issues. This avoids a performance penalty during production use of the application because those layers would not be enabled in production. @@ -85,7 +85,7 @@ include::../structs/VkLayerProperties.txt[] in the slink:VkInstanceCreateInfo and slink:VkDeviceCreateInfo structures passed to flink:vkCreateInstance and flink:vkCreateDevice, respectively, to enable this layer for an instance or device. - * pname:specVersion is the {apiname} version the layer was written to, + * pname:specVersion is the Vulkan version the layer was written to, encoded as described in the <> section. * pname:implementationVersion is the version of this layer. It is an @@ -95,7 +95,7 @@ include::../structs/VkLayerProperties.txt[] include::../validity/structs/VkLayerProperties.txt[] -Loader implementations may: provide mechanisms outside the {apiname} API for +Loader implementations may: provide mechanisms outside the Vulkan API for enabling specific layers. Layers enabled through such a mechanism are _implicitly enabled_, while layers enabled by including the layer name in the pname:ppEnabledLayerNames member of slink:VkDeviceCreateInfo are @@ -108,7 +108,7 @@ effect. [[extended-functionality-extensions]] == Extensions -Extensions may: define new {apiname} commands, structures, and enumerants. +Extensions may: define new Vulkan commands, structures, and enumerants. For compilation purposes, the interfaces defined by registered extensions, including new structures and enumerants as well as function pointer types for new commands, are defined in the Khronos-supplied +vulkan.h+ together @@ -116,7 +116,7 @@ with the core API. However, commands defined by extensions may: not be available for static linking - in which case function pointers to these commands should: be queried at runtime as described in <>. Extensions may: be provided by layers -as well as by a {apiname} implementation. +as well as by a Vulkan implementation. To query the available instance extensions, call: @@ -131,7 +131,7 @@ include::../protos/vkEnumerateInstanceExtensionProperties.txt[] include::../validity/protos/vkEnumerateInstanceExtensionProperties.txt[] -When pLayerName parameter is NULL, only extensions provided by the {apiname} +When pLayerName parameter is NULL, only extensions provided by the Vulkan implementation or by implicitly enabled layers are returned. When pname:pLayerName is the name of a layer, the instance extensions provided by that layer are returned. @@ -154,7 +154,7 @@ include::../protos/vkEnumerateDeviceExtensionProperties.txt[] include::../validity/protos/vkEnumerateDeviceExtensionProperties.txt[] -When pLayerName parameter is NULL, only extensions provided by the {apiname} +When pLayerName parameter is NULL, only extensions provided by the Vulkan implementation or by implicitly enabled layers are returned. When pname:pLayerName is the name of a layer, the device extensions provided by that layer are returned. diff --git a/doc/specs/vulkan/chapters/features.txt b/doc/specs/vulkan/chapters/features.txt index 55e0968b..1f259769 100644 --- a/doc/specs/vulkan/chapters/features.txt +++ b/doc/specs/vulkan/chapters/features.txt @@ -4,7 +4,7 @@ [[features]] = Features, Limits, and Formats -{apiname} is designed to support a wide range of hardware and as such there +Vulkan is designed to support a wide range of hardware and as such there are a number of features, limits, and formats which are not supported on all hardware. Features describe functionality that is not required: and which must: be explicitly enabled. Limits describe implementation-dependent @@ -20,7 +20,7 @@ by the implementation. The features and limits are reported via basic structures (that is slink:VkPhysicalDeviceFeatures and slink:VkPhysicalDeviceLimits). It is expected that when new features or limits are added in a future -{apiname} version, new structure(s) and entry point(s) will be added as +Vulkan version, new structure(s) and entry point(s) will be added as necessary to query these. New functionality added by <> is not expected to modify the core feature and limit structures. @@ -30,7 +30,7 @@ modify the core feature and limit structures. == Features The Specification defines a set of fine-grained features that are not -required:, but may: be supported by a {apiname} implementation. Support for +required:, but may: be supported by a Vulkan implementation. Support for features is reported and enabled on a per-feature basis. Features are properties of the physical device. @@ -565,7 +565,7 @@ include::../validity/structs/VkPhysicalDeviceFeatures.txt[] [[features-features-requirements]] === Feature Requirements -All {apiname} graphics implementations must: support the following features: +All Vulkan graphics implementations must: support the following features: * robustBufferAccess. @@ -1233,7 +1233,7 @@ include::../validity/structs/VkPhysicalDeviceLimits.txt[] [[features-limits-minmax]] === Limit Requirements -The following table specifies the required minimum/maximum for all {apiname} +The following table specifies the required minimum/maximum for all Vulkan graphics implementations. Where a limit corresponds to a fine-grained device feature which is optional:, the feature name is listed with two required limits, one when the feature is supported and one when it is not @@ -3097,11 +3097,16 @@ ename:VK_FORMAT_FEATURE_BLIT_DST_BIT:: fname:vkCmdBlitImage command. ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT:: - sname:VkImage can: be used with a sampler that has either of + If ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT is also set, + sname:VkImageView can: be used with a sampler that has either of pname:magFilter or pname:minFilter set to ename:VK_FILTER_LINEAR, - or pname:mipmapMode set to ename:VK_SAMPLER_MIPMAP_MODE_LINEAR. This bit - must: only be exposed for formats that also support the - ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT. + or pname:mipmapMode set to ename:VK_SAMPLER_MIPMAP_MODE_LINEAR. + If ename:VK_FORMAT_FEATURE_BLIT_SRC_BIT is also set, sname:VkImage + can be used as the pname:srcImage to flink:vkCmdBlitImage + with a pname:filter of ename:VK_FILTER_LINEAR. This bit must: only be + exposed for formats that also support the + ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_BIT or + ename:VK_FORMAT_FEATURE_BLIT_SRC_BIT. + If the format being queried is a depth/stencil format, this bit only indicates that the depth aspect (not the stencil aspect) supports linear filtering, diff --git a/doc/specs/vulkan/chapters/fragops.txt b/doc/specs/vulkan/chapters/fragops.txt index 2b833451..710be615 100644 --- a/doc/specs/vulkan/chapters/fragops.txt +++ b/doc/specs/vulkan/chapters/fragops.txt @@ -432,7 +432,7 @@ include::../enums/VkCompareOp.txt[] * ename:VK_COMPARE_OP_ALWAYS: the test always passes. As described earlier, the pname:failOp, pname:passOp, and pname:depthFailOp -members of pname:VkStencilOpState indicate what happens to the stored +members of slink:VkStencilOpState indicate what happens to the stored stencil value if this or certain subsequent tests fail or pass. Each enum is of type elink:VkStencilOp, which is defined as: diff --git a/doc/specs/vulkan/chapters/framebuffer.txt b/doc/specs/vulkan/chapters/framebuffer.txt index fd2713b9..1ad5a5a6 100644 --- a/doc/specs/vulkan/chapters/framebuffer.txt +++ b/doc/specs/vulkan/chapters/framebuffer.txt @@ -326,7 +326,7 @@ include::../enums/VkLogicOp.txt[] <<< -The logical operations supported by {apiname} are summarized in the +The logical operations supported by Vulkan are summarized in the following table in which * latexmath:[$\lnot$] is bitwise invert, diff --git a/doc/specs/vulkan/chapters/fundamentals.txt b/doc/specs/vulkan/chapters/fundamentals.txt index 15dfb32f..a62a2c92 100644 --- a/doc/specs/vulkan/chapters/fundamentals.txt +++ b/doc/specs/vulkan/chapters/fundamentals.txt @@ -4,7 +4,7 @@ [[fundamentals]] = Fundamentals -This chapter introduces fundamental concepts including the {apiname} +This chapter introduces fundamental concepts including the Vulkan architecture and execution model, API syntax, queues, pipeline configurations, numeric representation, state and state queries, and the different types of objects and shaders. It provides a framework for @@ -55,9 +55,9 @@ external standards such as the Linux Standard Base. [[fundamentals-execmodel]] == Execution Model -This section outlines the execution model of a {apiname} system. +This section outlines the execution model of a Vulkan system. -{apiname} exposes one or more _devices_, +Vulkan exposes one or more _devices_, each of which exposes one or more _queues_ which may: process work asynchronously to one another. The set of queues supported by a device is partitioned into _families_. Each family supports one or more types of @@ -94,8 +94,8 @@ an implementation include: On other architectures, there may: only be a single heap that can: be used for any purpose. -A {apiname} application controls a set of devices through the submission of -command buffers which have recorded device commands issued via {apiname} +A Vulkan application controls a set of devices through the submission of +command buffers which have recorded device commands issued via Vulkan library calls. The content of command buffers is specific to the underlying hardware and is opaque to the application. Once constructed, a command buffer can: be submitted once or many times to a queue for execution. @@ -115,7 +115,7 @@ the responsibility of the application. [[fundamentals-queueoperation]] === Queue Operation -{apiname} queues provide an interface to the execution engines of a device. +Vulkan queues provide an interface to the execution engines of a device. Commands are recorded into command buffers ahead of execution time. These command buffers are then submitted to queues for execution. Command buffers submitted to a single queue are played back in the order they were @@ -128,7 +128,7 @@ specified. Therefore, the application must: explicitly synchronize work between queues when needed. In order to control relative order of execution of work both within a queue -and across multiple queues, {apiname} provides several synchronization +and across multiple queues, Vulkan provides several synchronization primitives, which include _semaphores_, _events_, _pipeline barriers_, and _fences_. These are covered in depth in <>. In broad terms, semaphores are used to synchronize work @@ -142,7 +142,7 @@ to synchronize work between the device and the host. ==== Implementations have significant freedom to overlap execution of work submitted to a queue, and this is common due to deep pipelining and -parallelism in {apiname} devices. +parallelism in Vulkan devices. ==== Work is submitted to queues using queue submission commands that typically @@ -246,8 +246,8 @@ command buffers to execute. This is covered in more detail in [[fundamentals-objectmodel-overview]] == Object Model -The devices, queues, and other entities in {apiname} are represented by -{apiname} objects. At the API level, all objects are referred to by handles. +The devices, queues, and other entities in Vulkan are represented by +Vulkan objects. At the API level, all objects are referred to by handles. There are two classes of handles, dispatchable and non-dispatchable. _Dispatchable_ handle types are a pointer to an opaque type. This pointer may: be used by layers as part of intercepting API commands, and thus each @@ -280,19 +280,19 @@ ftext:vkDestroy* and ftext:vkFree* commands, respectively. Objects that are allocated (rather than created) take resources from an existing pool object or memory heap, and when freed return resources to that pool or heap. While object creation and destruction are generally expected -to be low-frequency occurences during runtime, allocating and freeing +to be low-frequency occurrences during runtime, allocating and freeing objects can: occur at high frequency. Pool objects help accommodate improved performance of the allocations and frees. -It is an application's responsibility to track the lifetime of {apiname} +It is an application's responsibility to track the lifetime of Vulkan objects, and not to destroy them while they are still in use. -Application-owned memory is immediately consumed by any {apiname} command it +Application-owned memory is immediately consumed by any Vulkan command it is passed into. The application can: alter or free this memory as soon as the commands that consume it have returned. The following object types are consumed when they are passed into a -{apiname} command and not further accessed by the objects they are used to +Vulkan command and not further accessed by the objects they are used to create. They can: be destroyed at any time they are not in use by an API command: @@ -306,11 +306,11 @@ sets mustnot: be updated with flink:vkUpdateDescriptorSets after the descriptor set layout has been destroyed. Otherwise, descriptor set layouts can: be destroyed any time they are not in use by an API command. -The application mustnot: destroy any other type of {apiname} object until +The application mustnot: destroy any other type of Vulkan object until all uses of that object by the device (such as via command buffer execution) have completed. -The following {apiname} objects can: be destroyed when no command buffers +The following Vulkan objects can: be destroyed when no command buffers using the object are executing: * sname:VkEvent @@ -328,7 +328,7 @@ using the object are executing: * sname:VkDeviceMemory * sname:VkDescriptorSet -The following {apiname} objects can: be destroyed when work on the queue +The following Vulkan objects can: be destroyed when work on the queue that uses the object has been completed: * sname:VkFence @@ -354,7 +354,7 @@ sname:VkDescriptorPool objects are parents of sname:VkDescriptorSet objects. sname:VkDevice objects are parents of many object types (all that take a sname:VkDevice as a parameter to their creation). -The following {apiname} objects have specific restrictions for when they +The following Vulkan objects have specific restrictions for when they can: be destroyed: * sname:VkQueue objects cannot: be explicitly destroyed. Instead, they are @@ -399,32 +399,32 @@ can: be destroyed: [[fundamentals-commandsyntax]] == Command Syntax and Duration -The Specification describes {apiname} commands as functions or procedures +The Specification describes Vulkan commands as functions or procedures using C99 syntax. Language bindings for other languages such as C++ and Javascript may: allow for stricter parameter passing, or object-oriented interfaces. -With few exceptions, {apiname} uses the standard C types for parameters (int +With few exceptions, Vulkan uses the standard C types for parameters (int types from stdint.h, etc). Exceptions to this are using basetype:VkResult for return values, using basetype:VkBool32 for boolean values, basetype:VkDeviceSize for sizes and offsets pertaining to device address space, and basetype:VkFlags for passing bits or sets of bits of predefined values. -Commands that create {apiname} objects are of the form ftext:vkCreate* and +Commands that create Vulkan objects are of the form ftext:vkCreate* and take stext:Vk*CreateInfo structures with the parameters needed to create the -object. These {apiname} objects are destroyed with commands of the form +object. These Vulkan objects are destroyed with commands of the form ftext:vkDestroy*. -The last in-parameter to each command that creates or destroys a {apiname} +The last in-parameter to each command that creates or destroys a Vulkan object is pname:pAllocator. The pname:pAllocator parameter can: be set to a non-`NULL` value such that allocations for the given object are delegated to an application provided callback; refer to the <> chapter for further details. -Commands that allocate {apiname} objects owned by pool objects are of the +Commands that allocate Vulkan objects owned by pool objects are of the form ftext:vkAllocate*, and take stext:Vk*AllocateInfo structures. These -{apiname} objects are freed with commands of the form ftext:vkFree*. +Vulkan objects are freed with commands of the form ftext:vkFree*. These objects do not take allocators; if host memory is needed, they will use the allocator that was specified when their parent pool was created. @@ -438,21 +438,21 @@ and/or outside a render pass, and in one or more of the supported queue types. These restrictions are documented together with the definition of each such command. -The _duration_ of a {apiname} command refers to the interval between calling +The _duration_ of a Vulkan command refers to the interval between calling the command and its return to the caller. [[fundamentals-threadingbehavior]] == Threading Behavior -{apiname} is intended to provide scalable performance when used on multiple +Vulkan is intended to provide scalable performance when used on multiple host threads. All commands support being called concurrently from multiple threads, but certain parameters, or components of parameters are defined to be _externally synchronized_. This means that the caller must: guarantee that no more than one thread is using such a parameter at a given time. -More precisely, {apiname} commands use simple stores to update software -structures representing {apiname} objects. A parameter declared as +More precisely, Vulkan commands use simple stores to update software +structures representing Vulkan objects. A parameter declared as externally synchronized may: have its software structures updated at any time during the host execution of the command. If two commands operate on the same object and at least one of the commands @@ -468,7 +468,7 @@ Memory barriers are particularly relevant on the ARM CPU architecture which is more weakly ordered than many developers are accustomed to from x86/x64 programming. Fortunately, most higher-level synchronization primitives (like the pthread library) perform memory barriers as a part of -mutual exclusion, so mutexing {apiname} objects via these primitives will +mutual exclusion, so mutexing Vulkan objects via these primitives will have the desired effect. ==== @@ -513,11 +513,11 @@ include::../hostsynctable/implicit.txt[] [[fundamentals-errors]] == Errors -{apiname} is a layered API. The lowest layer is the core {apiname} layer, as +Vulkan is a layered API. The lowest layer is the core Vulkan layer, as defined by this Specification. The application can: use additional layers above the core for debugging, validation, and other purposes. -One of the core principles of {apiname} is that building and submitting +One of the core principles of Vulkan is that building and submitting command buffers should: be highly efficient. Thus error checking and validation of state in the core layer is minimal, although more rigorous validation can: be enabled through the use of layers. @@ -602,18 +602,21 @@ ename:VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO. The values ename:VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO and ename:VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO are reserved for internal -use by the loader, and don't have corresponding {apiname} structures in this +use by the loader, and don't have corresponding Vulkan structures in this specification. Any parameter that is a structure containing a basetype:void* ptext:pNext -member must: have a value of ptext:pNext that is either `NULL`, or points to a -valid structure defined by an extension. If that extension is supported by -the implementation, then it must: be enabled. -Any component of the implementation (the loader, any enabled layers, and -drivers) must: ignore extension structures with pname:sType values defined -by extensions not supported by that component. +member must: have a value of ptext:pNext that is either `NULL`, or points to +a valid structure defined by an extension, containing ptext:sType and +ptext:pNext members as described in the <> section. If that extension is supported by the +implementation, then it must: be enabled. Any component of the +implementation (the loader, any enabled layers, and drivers) must: skip +over, without processing (other than reading the pname:sType and pname:pNext +members) any chained structures with pname:sType values not defined by +extensions supported by that component. -Extension structures are not described in the base {apiname} specification, +Extension structures are not described in the base Vulkan specification, but either in layered specifications incorporating those extensions, or in separate vendor-provided documents. @@ -628,8 +631,8 @@ sections. [[fundamentals-returncodes]] === Return Codes -While the core {apiname} API is not designed to capture incorrect usage, -some circumstances still require return codes. Commands in {apiname} return +While the core Vulkan API is not designed to capture incorrect usage, +some circumstances still require return codes. Commands in Vulkan return their status via return codes that are in one of two categories: * Successful completion codes are returned when a command needs to @@ -639,7 +642,7 @@ their status via return codes that are in one of two categories: failure that could only be detected at run time. All run time error codes are negative values. -All return codes in {apiname} are reported via basetype:VkResult return +All return codes in Vulkan are reported via basetype:VkResult return values. The possible codes are: include::../enums/VkResult.txt[] @@ -681,7 +684,7 @@ include::VK_KHR_swapchain/VkResultSuccessDescriptions_swapchain.txt[] * ename:VK_ERROR_FEATURE_NOT_PRESENT A requested feature is not supported. * ename:VK_ERROR_INCOMPATIBLE_DRIVER - The requested version of {apiname} is not supported by the driver or + The requested version of Vulkan is not supported by the driver or is otherwise incompatible for implementation-specific reasons. * ename:VK_ERROR_TOO_MANY_OBJECTS Too many objects of the type have already been created. @@ -694,7 +697,7 @@ include::VK_KHR_display_swapchain/VkResultErrorDescriptions_display_swapchain.tx If a command returns a run time error, it will leave any result pointers unmodified. -Out of memory errors do not damage any currently existing {apiname} objects. +Out of memory errors do not damage any currently existing Vulkan objects. Objects that have already been successfully created can: still be used by the application. @@ -711,7 +714,7 @@ Implementations normally perform computations in floating-point, and must: meet the range and precision requirements defined under ``Floating-Point Computation'' below. -These requirements only apply to computations performed in {apiname} +These requirements only apply to computations performed in Vulkan operations outside of shader execution, such as texture image specification and sampling, and per-fragment operations. Range and precision requirements during shader execution differ and are specified @@ -720,7 +723,7 @@ Instructions>> section. In some cases, the representation and/or precision of operations is implicitly limited by the specified format of vertex or texel -data consumed by {apiname}. Specific floating-point formats are +data consumed by Vulkan. Specific floating-point formats are described later in this section. @@ -769,12 +772,12 @@ arithmetic operations such as latexmath:[$0 / 0$]. Implementations may: support latexmath:[$Inf$]s and latexmath:[$NaN$]s in their floating-point computations. -Any representable floating-point value is legal as input to a {apiname} +Any representable floating-point value is legal as input to a Vulkan command that requires floating-point data. The result of providing a value that is not a floating-point number to such a command is unspecified, but -mustnot: lead to {apiname} interruption or termination. In <> +mustnot: lead to Vulkan interruption or termination. In <> arithmetic, for example, providing a negative zero or a denormalized number -to an {apiname} command must: yield deterministic results, while providing a +to an Vulkan command must: yield deterministic results, while providing a latexmath:[$NaN$] or latexmath:[$Inf$] yields unspecified results. @@ -786,11 +789,11 @@ latexmath:[$NaN$] or latexmath:[$Inf$] yields unspecified results. section of the Khronos Data Format Specification. Any representable 16-bit floating-point value is legal as input to a -{apiname} command that accepts 16-bit floating-point data. The result of +Vulkan command that accepts 16-bit floating-point data. The result of providing a value that is not a floating-point number (such as latexmath:[$Inf$] or latexmath:[$NaN$]) to such a command is -unspecified, but mustnot: lead to {apiname} interruption or termination. -Providing a denormalized number or negative zero to {apiname} must: yield +unspecified, but mustnot: lead to Vulkan interruption or termination. +Providing a denormalized number or negative zero to Vulkan must: yield deterministic results. @@ -814,11 +817,11 @@ converted to positive infinity; and both positive and negative latexmath:[$NaN$] are converted to positive latexmath:[$NaN$]. Any representable unsigned 11-bit floating-point value is legal as input -to a {apiname} command that accepts 11-bit floating-point data. The +to a Vulkan command that accepts 11-bit floating-point data. The result of providing a value that is not a floating-point number (such as latexmath:[$Inf$] or latexmath:[$NaN$]) to such a command is -unspecified, but mustnot: lead to {apiname} interruption or termination. -Providing a denormalized number to {apiname} must: yield deterministic +unspecified, but mustnot: lead to Vulkan interruption or termination. +Providing a denormalized number to Vulkan must: yield deterministic results. @@ -842,11 +845,11 @@ converted to positive infinity; and both positive and negative latexmath:[$NaN$] are converted to positive latexmath:[$NaN$]. Any representable unsigned 10-bit floating-point value is legal as input to -a {apiname} command that accepts 10-bit floating-point data. The result of +a Vulkan command that accepts 10-bit floating-point data. The result of providing a value that is not a floating-point number (such as latexmath:[$Inf$] or latexmath:[$NaN$]) to such a command is unspecified, -but mustnot: lead to {apiname} interruption or termination. Providing a -denormalized number to {apiname} must: yield deterministic results. +but mustnot: lead to Vulkan interruption or termination. Providing a +denormalized number to Vulkan must: yield deterministic results. [[fundamentals-general]] @@ -854,7 +857,7 @@ denormalized number to {apiname} must: yield deterministic results. Some calculations require division. In such cases (including implied divisions performed by vector normalization), division by zero produces an -unspecified result but mustnot: lead to {apiname} interruption or +unspecified result but mustnot: lead to Vulkan interruption or termination. @@ -911,7 +914,7 @@ representation, one value (latexmath:[$-128$] in the example) is outside the representable range, and must: be clamped before use. This equation is used everywhere that signed normalized fixed-point values are converted to floating-point, including for all signed normalized fixed-point parameters -in {apiname} commands, such as vertex attribute values, as well as for +in Vulkan commands, such as vertex attribute values, as well as for specifying texture or framebuffer values using signed normalized fixed-point. @@ -967,7 +970,7 @@ or framebuffer values using floating-point. [[fundamentals-versionnum]] == API Version Numbers and Semantics -The {apiname} version number is used in several places in the API. In each +The Vulkan version number is used in several places in the API. In each such use, the API _major version number_, _minor version number_, and _patch version number_ are packed into a 32-bit integer as follows: @@ -975,7 +978,7 @@ version number_ are packed into a 32-bit integer as follows: * The minor version number is a 10-bit integer packed into bits 21-12. * The patch version number is a 12-bit integer packed into bits 11-0. -Differences in any of the {apiname} version numbers indicates a change to +Differences in any of the Vulkan version numbers indicates a change to the API in some way, with each part of the version number indicating a different scope of changes. @@ -1005,7 +1008,7 @@ significant modification to an application in order for it to function. [[fundamentals-common-objects]] == Common Object Types -Some types of {apiname} objects are used in many different structures and +Some types of Vulkan objects are used in many different structures and command parameters, and are described here. These types include _offsets_, _extents_, and _rectangles_. diff --git a/doc/specs/vulkan/chapters/fxvertex.txt b/doc/specs/vulkan/chapters/fxvertex.txt index 651acab2..9fd3d8fb 100644 --- a/doc/specs/vulkan/chapters/fxvertex.txt +++ b/doc/specs/vulkan/chapters/fxvertex.txt @@ -6,7 +6,7 @@ Some implementations have specialized fixed-function hardware for fetching and format-converting vertex input data from buffers, rather than performing -the fetch as part of the vertex shader. {apiname} includes a vertex +the fetch as part of the vertex shader. Vulkan includes a vertex attribute fetch stage in the graphics pipeline in order to take advantage of this. diff --git a/doc/specs/vulkan/chapters/initialization.txt b/doc/specs/vulkan/chapters/initialization.txt index 100a64d1..c9f5d396 100644 --- a/doc/specs/vulkan/chapters/initialization.txt +++ b/doc/specs/vulkan/chapters/initialization.txt @@ -4,14 +4,14 @@ [[initialization]] = Initialization -Before using {apiname}, an application must: initialize it by loading the -{apiname} commands, and creating a sname:VkInstance object. +Before using Vulkan, an application must: initialize it by loading the +Vulkan commands, and creating a sname:VkInstance object. [[initialization-functionpointers]] == Command Function Pointers -{apiname} commands are not necessarily exposed statically on a platform. -Function pointers for all {apiname} commands can: be obtained with the +Vulkan commands are not necessarily exposed statically on a platform. +Function pointers for all Vulkan commands can: be obtained with the command: include::../protos/vkGetInstanceProcAddr.txt[] @@ -27,8 +27,8 @@ specific manner. Typically, the loader library will export this command as a function symbol, so applications can: link against the loader library, or load it dynamically and look up the symbol using platform-specific APIs. Loaders are encouraged to export function symbols for all other core -{apiname} commands as well; if this is done, then applications that use only -the core {apiname} commands have no need to use fname:vkGetInstanceProcAddr. +Vulkan commands as well; if this is done, then applications that use only +the core Vulkan commands have no need to use fname:vkGetInstanceProcAddr. Function pointers to commands that don't operate on a specific instance can: be obtained by using this command with pname:instance equal to `NULL`. The @@ -43,7 +43,7 @@ commands that operate on pname:instance or a child of pname:instance can: be obtained. The returned function pointer must: only be called with a dispatchable object (the first parameter) that is a child of pname:instance. -If pname:pName is not the name of a core {apiname} command, or is an +If pname:pName is not the name of a core Vulkan command, or is an extension command for any extension not supported by any available layer or implementation, then fname:vkGetInstanceProcAddr will return `NULL`. @@ -66,7 +66,7 @@ it. ==== endif::editing-notes[] -In order to support systems with multiple {apiname} implementations +In order to support systems with multiple Vulkan implementations comprising heterogeneous collections of hardware and software, the function pointers returned by fname:vkGetInstanceProcAddr may: point to dispatch code, which calls a different real implementation for different @@ -79,13 +79,13 @@ command: include::../protos/vkGetDeviceProcAddr.txt[] * pname:device is the logical device that provides the function pointer. - * pname:pName is the name of any {apiname} command whose first parameter + * pname:pName is the name of any Vulkan command whose first parameter is one of ** sname:VkDevice ** sname:VkQueue ** sname:VkCommandBuffer -If pname:pName is not the name of one of these {apiname} commands, and is +If pname:pName is not the name of one of these Vulkan commands, and is not the name of an extension command belonging to an extension enabled for pname:device, then fname:vkGetDeviceProcAddr will return `NULL`. @@ -94,9 +94,9 @@ include::../validity/protos/vkGetDeviceProcAddr.txt[] [[initialization-instances]] == Instances -There is no global state in {apiname} and all per-application state is +There is no global state in Vulkan and all per-application state is stored in a sname:VkInstance object. Creating a sname:VkInstance object -initializes the {apiname} library and allows the application to pass +initializes the Vulkan library and allows the application to pass information about itself to the implementation. To create an instance object, call: @@ -160,7 +160,7 @@ include::../structs/VkApplicationInfo.txt[] * pname:engineVersion is an unsigned integer variable containing the developer-supplied version number of the engine used to create the application. - * pname:apiVersion is the version of the {apiname} API against which the + * pname:apiVersion is the version of the Vulkan API against which the application expects to run, encoded as described in the <> section. If pname:apiVersion is 0 the implementation must: ignore it, otherwise diff --git a/doc/specs/vulkan/chapters/interfaces.txt b/doc/specs/vulkan/chapters/interfaces.txt index 1e09f03b..b283d564 100644 --- a/doc/specs/vulkan/chapters/interfaces.txt +++ b/doc/specs/vulkan/chapters/interfaces.txt @@ -889,9 +889,9 @@ within the local workgroup. The range of possible values for each component of LocalInvocationID range from zero through the size of the workgroup in that dimension minus one. If the size of the workgroup in a particular dimension is one, then LocalInvocationID in that dimension will be zero. That is, if the -workgroup is effectively two-dimensional, then pname:LocalInvocationID.z will +workgroup is effectively two-dimensional, then code:LocalInvocationID.z will be zero, and if the workgroup is one-dimensional, then both -pname:LocalInvocationID.y and pname:LocalInvocationID.z will be zero. +code:LocalInvocationID.y and code:LocalInvocationID.z will be zero. + The code:LocalInvocationID decoration is only supported in compute shaders. + diff --git a/doc/specs/vulkan/chapters/introduction.txt b/doc/specs/vulkan/chapters/introduction.txt index 3eb1031e..7fcac7cc 100644 --- a/doc/specs/vulkan/chapters/introduction.txt +++ b/doc/specs/vulkan/chapters/introduction.txt @@ -7,23 +7,23 @@ This chapter is Informative except for the sections on Terminology and Normative References. -This document, referred to as the ``{apiname} Specification'' or just the -``Specification'' hereafter, describes the {apiname} graphics system: what +This document, referred to as the ``Vulkan Specification'' or just the +``Specification'' hereafter, describes the Vulkan graphics system: what it is, how it acts, and what is required to implement it. We assume that the reader has at least a rudimentary understanding of computer graphics. This means familiarity with the essentials of computer graphics algorithms and terminology as well as with modern GPUs (Graphic Processing Units). The canonical version of the Specification is available in the official -{apiname} Registry, located at URL +Vulkan Registry, located at URL http://www.khronos.org/registry/vulkan/ [[introduction-whatis]] -== What is the {apiname} Graphics System? +== What is the Vulkan Graphics System? -{apiname} is an API (Application Programming Interface) for graphics and +Vulkan is an API (Application Programming Interface) for graphics and compute hardware. The API consists of many commands that allow a programmer to specify shader programs, compute kernels, objects, and operations involved in producing high-quality graphical images, specifically @@ -31,18 +31,18 @@ color images of three-dimensional objects. [[introduction-programmer]] -=== The Programmer's View of {apiname} +=== The Programmer's View of Vulkan -To the programmer, {apiname} is a set of commands that allow the +To the programmer, Vulkan is a set of commands that allow the specification of _shader programs_ or _shaders_, _kernels_, data used by -kernels or shaders, and state controlling aspects of {apiname} outside the +kernels or shaders, and state controlling aspects of Vulkan outside the scope of shaders. Typically, the data represents geometry in two or three dimensions and texture images, while the shaders and kernels control the processing of the data, rasterization of the geometry, and the lighting and shading of _fragments_ generated by rasterization, resulting in the rendering of geometry into the framebuffer. -A typical {apiname} program begins with platform-specific calls to open a +A typical Vulkan program begins with platform-specific calls to open a window or otherwise prepare a display device onto which the program will draw. Then, calls are made to open _queues_ to which _command buffers_ are submitted. The command buffers contain lists of commands which will be @@ -56,24 +56,24 @@ transfer the resulting image to a display device or window. [[introduction-implementor]] -=== The Implementor's View of {apiname} +=== The Implementor's View of Vulkan -To the implementor, {apiname} is a set of commands that allow the +To the implementor, Vulkan is a set of commands that allow the construction and submission of command buffers to a device. Modern devices -accelerate virtually all {apiname} operations, storing data and framebuffer +accelerate virtually all Vulkan operations, storing data and framebuffer images in high-speed memory and executing shaders in dedicated GPU processing resources. The implementor's task is to provide a software library on the host which -implements the {apiname} API, while mapping the work for each {apiname} +implements the Vulkan API, while mapping the work for each Vulkan command to the graphics hardware as appropriate for the capabilities of the device. [[introduction-ourview]] -=== Our View of {apiname} +=== Our View of Vulkan -We view {apiname} as a pipeline having some programmable stages and some +We view Vulkan as a pipeline having some programmable stages and some state-driven fixed-function stages that are invoked by a set of specific drawing operations. We expect this model to result in a specification that satisfies the needs of both programmers and implementors. It does not, @@ -86,7 +86,7 @@ efficient than the one specified. [[introduction-bugs]] == Filing Bug Reports -Issues with and bug reports on the {apiname} Specification and the API +Issues with and bug reports on the Vulkan Specification and the API Registry can: be filed in the Khronos Vulkan Github repository, located at URL @@ -173,7 +173,7 @@ endif::editing-notes[] == Normative References Normative references are references to external documents or resources to -which implementers of {apiname} must: comply. +which implementers of Vulkan must: comply. [[IEEE 754]]:: _IEEE Standard for Floating-Point Arithmetic_, IEEE Std 754-2008, diff --git a/doc/specs/vulkan/chapters/memory.txt b/doc/specs/vulkan/chapters/memory.txt index 0ba4c388..cc8f7505 100644 --- a/doc/specs/vulkan/chapters/memory.txt +++ b/doc/specs/vulkan/chapters/memory.txt @@ -4,20 +4,20 @@ [[memory]] = Memory Allocation -{apiname} memory is broken up into two categories, _host memory_ and +Vulkan memory is broken up into two categories, _host memory_ and _device memory_. [[memory-host]] == Host Memory -Host memory is memory needed by the {apiname} implementation for +Host memory is memory needed by the Vulkan implementation for non-device-visible storage. This storage may: be used for e.g. internal software structures. [[memory-allocation]] -{apiname} provides applications the opportunity to perform host memory -allocations on behalf of the {apiname} implementation. If this feature is +Vulkan provides applications the opportunity to perform host memory +allocations on behalf of the Vulkan implementation. If this feature is not used, the implementation will perform its own memory allocations. Since most memory allocations are off the critical path, this is not meant as a performance feature. Rather, this can: be useful for certain embedded @@ -31,7 +31,7 @@ include::../structs/VkAllocationCallbacks.txt[] * pname:pUserData is a value to be interpreted by the implementation of the callbacks. When any of the callbacks in sname:VkAllocationCallbacks - are called, the {apiname} implementation will pass this value as the + are called, the Vulkan implementation will pass this value as the first parameter to the callback. This value can: vary each time an allocator is passed into a command, even when the same object takes an allocator in multiple commands. @@ -190,17 +190,17 @@ parameter and takes a value of type elink:VkSystemAllocationScope: include::../enums/VkSystemAllocationScope.txt[] * ename:VK_SYSTEM_ALLOCATION_SCOPE_COMMAND - The allocation is scoped to - the duration of the {apiname} command. + the duration of the Vulkan command. * ename:VK_SYSTEM_ALLOCATION_SCOPE_OBJECT - The allocation is scoped to - the lifetime of the {apiname} object that is being created or used. + the lifetime of the Vulkan object that is being created or used. * ename:VK_SYSTEM_ALLOCATION_SCOPE_CACHE - The allocation is scoped to the lifetime of a sname:VkPipelineCache object. * ename:VK_SYSTEM_ALLOCATION_SCOPE_DEVICE - The allocation is scoped to - the lifetime of the {apiname} device. + the lifetime of the Vulkan device. * ename:VK_SYSTEM_ALLOCATION_SCOPE_INSTANCE - The allocation is scoped to - the lifetime of the {apiname} instance. + the lifetime of the Vulkan instance. -Most {apiname} commands operate on a single object, or there is a sole +Most Vulkan commands operate on a single object, or there is a sole object that is being created or manipulated. When an allocation uses a scope of ename:VK_SYSTEM_ALLOCATION_SCOPE_OBJECT or ename:VK_SYSTEM_ALLOCATION_SCOPE_CACHE, the allocation is scoped to the @@ -292,7 +292,7 @@ If pname:pfnAllocation or pname:pfnReallocation fail, the implementation may: fail object creation and/or generate an ename:VK_ERROR_OUT_OF_HOST_MEMORY error, as appropriate. -Allocation callbacks must: not call any {apiname} commands. +Allocation callbacks must: not call any Vulkan commands. The following sets of rules define when an implementation is permitted to call the allocator callbacks. @@ -493,8 +493,8 @@ The memory types are sorted according to a preorder which serves to aid in easily selecting an appropriate memory type. Given two memory types X and Y, the preorder defines latexmath:[$X \leq Y$] if: - * the memory property bits set for X are a subset of the memory property - bits set for Y. Or, + * the memory property bits set for X are a strict subset of the memory + property bits set for Y. Or, * the memory property bits set for X are the same as the memory property bits set for Y, and X uses a memory heap with greater or equal performance (as determined in an implementation-specific manner). @@ -539,7 +539,7 @@ accesses, as appropriate for the intended usage, and if such a memory type is not present can: fallback to searching for a less optimal but guaranteed set of properties such as "0" or "host-visible and coherent". -A {apiname} device operates on data in device memory via memory objects that +A Vulkan device operates on data in device memory via memory objects that are represented in the API by a sname:VkDeviceMemory handle. Memory objects are allocated by calling fname:vkAllocateMemory: @@ -657,16 +657,6 @@ include::../validity/protos/vkMapMemory.txt[] It is an application error to call fname:vkMapMemory on a memory object that is already mapped. -ifdef::editing-notes[] -[NOTE] -.editing-note -==== -TODO (Tobias) - There's a circular section reference in this next section. -The information is all covered by both places, but it seems a bit weird to -have them reference each other. Not sure how to resolve it. -==== -endif::editing-notes[] - [[memory-device-hostaccess-hazards]] fname:vkMapMemory does not check whether the device memory is currently in use before returning the host-accessible pointer. The application @@ -696,35 +686,11 @@ familiar with all of the mechanisms described in the chapter on to maintaining memory access ordering. ==== -Host-visible memory types that advertise the -ename:VK_MEMORY_PROPERTY_HOST_COHERENT_BIT property still require -<> between host and -device in order to be coherent, but do not require additional cache -management operations (fname:vkFlushMappedMemoryRanges or -fname:vkInvalidateMappedMemoryRanges) to achieve coherency. For host writes -to be seen by subsequent command buffer operations, a pipeline barrier from -a source of ename:VK_ACCESS_HOST_WRITE_BIT and -ename:VK_PIPELINE_STAGE_HOST_BIT to a destination of the relevant device -pipeline stages and access types must: be performed. Note that such a -barrier is performed -<> upon each -command buffer submission, so an explicit barrier is only rarely needed -(e.g. if a command buffer waits upon an event signaled by the host, where -the host wrote some data after submission). For device writes to be seen by -subsequent host reads, a pipeline barrier is required: to -<>. +Two commands are provided to enable applications to work with +non-coherent memory allocations: fname:vkFlushMappedMemoryRanges and +fname:vkInvalidateMappedMemoryRanges. -In order to enable applications to work with non-coherent memory -allocations, two entry points are provided. To flush host write caches, an -application must: use fname:vkFlushMappedMemoryRanges, while -fname:vkInvalidateMappedMemoryRanges allows invalidating host input caches -so that device writes become visible to the host. -fname:vkFlushMappedMemoryRanges must: be called after the host writes to -non-coherent memory have completed and before command buffers that will read -or write any of those memory locations are submitted to a queue. Similarly, -fname:vkInvalidateMappedMemoryRanges must: be called after command buffers -that execute and flush (via memory barriers) the device writes have -completed, and before the host will read or write any of those locations. +To flush ranges of non-coherent memory from the host caches, call: include::../protos/vkFlushMappedMemoryRanges.txt[] @@ -736,6 +702,13 @@ include::../protos/vkFlushMappedMemoryRanges.txt[] include::../validity/protos/vkFlushMappedMemoryRanges.txt[] +fname:vkFlushMappedMemoryRanges must: be used to guarantee that host writes to +non-coherent memory are visible to the device. It must: be called after the host +writes to non-coherent memory have completed and before command buffers that will +read or write any of those memory locations are submitted to a queue. + +To invalidate ranges of non-coherent memory from the host caches, call: + include::../protos/vkInvalidateMappedMemoryRanges.txt[] * pname:device is the logical device that owns the memory ranges. @@ -770,8 +743,42 @@ fname:vkFlushMappedMemoryRanges and fname:vkInvalidateMappedMemoryRanges are unnecessary and may: have performance cost. ==== +fname:vkInvalidateMappedMemoryRanges must: be used to guarantee that device writes to +non-coherent memory are visible to the host. It must: be called after command buffers +that execute and flush (via memory barriers) the device writes have completed, and +before the host will read or write any of those locations. If a range of non-coherent +memory is written by the host and then invalidated without first being flushed, its +contents are undefined. + +ifdef::editing-notes[] +[NOTE] +.editing-note +==== +TODO (Tobias) - There's a circular section reference between this next section +and the <>. The +information is all covered by both places, but it seems a bit weird to have them +reference each other. Not sure how to resolve it. +==== +endif::editing-notes[] + +Host-visible memory types that advertise the +ename:VK_MEMORY_PROPERTY_HOST_COHERENT_BIT property still require +<> between host and device +in order to be coherent, but do not require additional cache management +operations to achieve coherency. For host writes to +be seen by subsequent command buffer operations, a pipeline barrier from +a source of ename:VK_ACCESS_HOST_WRITE_BIT and ename:VK_PIPELINE_STAGE_HOST_BIT +to a destination of the relevant device pipeline stages and access types must: +be performed. Note that such a barrier is performed +<> upon each +command buffer submission, so an explicit barrier is only rarely needed +(e.g. if a command buffer waits upon an event signaled by the host, where +the host wrote some data after submission). For device writes to be seen by +subsequent host reads, a pipeline barrier is required: to +<>. + Once host access to a memory object is no longer needed by the application, -it can: be unmapped by calling : +it can: be unmapped by calling: include::../protos/vkUnmapMemory.txt[] diff --git a/doc/specs/vulkan/chapters/pipelines.txt b/doc/specs/vulkan/chapters/pipelines.txt index f6908236..0c9382dd 100644 --- a/doc/specs/vulkan/chapters/pipelines.txt +++ b/doc/specs/vulkan/chapters/pipelines.txt @@ -5,7 +5,7 @@ = Pipelines The following <> shows a block diagram of -the {apiname} pipelines. Some {apiname} commands specify geometric objects +the Vulkan pipelines. Some Vulkan commands specify geometric objects to be drawn or computational work to be performed, while others specify state controlling how objects are handled by the various pipeline stages, or control data transfer between memory organized as images and buffers. @@ -46,8 +46,8 @@ The <> is a separate pipeline from the graphics pipeline, which operates on one-, two-, or three-dimensional workgroups which can: read from and write to buffer and image memory. -This ordering is meant only as a tool for describing {apiname}, not as a -strict rule of how {apiname} is implemented, and we present it only as a +This ordering is meant only as a tool for describing Vulkan, not as a +strict rule of how Vulkan is implemented, and we present it only as a means to organize the various operations of the pipelines. [[pipelines-block-diagram]] @@ -98,7 +98,7 @@ include::../protos/vkCreateComputePipelines.txt[] <> object, in which case use of that cache is enabled for the duration of the command. * pname:createInfoCount is the length of the pname:pCreateInfos and - pname:Pipelines arrays. + pname:pPipelines arrays. * pname:pCreateInfos is an array of sname:VkComputePipelineCreateInfo structures. * pname:pAllocator controls host memory allocation as described in the @@ -183,7 +183,7 @@ include::../protos/vkCreateGraphicsPipelines.txt[] <> object, in which case use of that cache is enabled for the duration of the command. * pname:createInfoCount is the length of the pname:pCreateInfos and - pname:Pipelines arrays. + pname:pPipelines arrays. * pname:pCreateInfos is an array of sname:VkGraphicsPipelineCreateInfo structures. * pname:pAllocator controls host memory allocation as described in the diff --git a/doc/specs/vulkan/chapters/primsrast.txt b/doc/specs/vulkan/chapters/primsrast.txt index 54a00b6a..36eb9d04 100644 --- a/doc/specs/vulkan/chapters/primsrast.txt +++ b/doc/specs/vulkan/chapters/primsrast.txt @@ -122,7 +122,7 @@ stage in the pipeline before rasterization. [[primsrast-multisampling]] == Multisampling -Multisampling is a mechanism to antialias all {apiname} primitives: points, +Multisampling is a mechanism to antialias all Vulkan primitives: points, lines, and polygons. The technique is to sample all primitives multiple times at each pixel. Each sample in each framebuffer attachment has storage for a color, depth, and/or stencil value, such that per-fragment operations @@ -131,7 +131,7 @@ _resolved_ to a single color (see <> and the <> chapter for more details on how to resolve multisample images to non-multisample images). -{apiname} defines rasterization rules for single-sample modes in a way that +Vulkan defines rasterization rules for single-sample modes in a way that is equivalent to a multisample mode with a single sample in the center of each pixel. diff --git a/doc/specs/vulkan/chapters/queries.txt b/doc/specs/vulkan/chapters/queries.txt index a831f1f0..8921c430 100644 --- a/doc/specs/vulkan/chapters/queries.txt +++ b/doc/specs/vulkan/chapters/queries.txt @@ -5,7 +5,7 @@ = Queries _Queries_ provide a mechanism to return information about the processing of -a sequence of {apiname} commands. Query operations are asynchronous, and as +a sequence of Vulkan commands. Query operations are asynchronous, and as such, their results are not returned immediately. Instead, their results, and their availability status, are stored in a <>. The state of these queries can: be read back on the host, or copied @@ -246,7 +246,7 @@ These bits have the following meanings: * ename:VK_QUERY_RESULT_64_BIT indicates the results will be written as an array of 64-bit unsigned integer values. If this bit is not set, the results will be written as an array of 32-bit unsigned integer values. - * ename:VK_QUERY_RESULT_WAIT_BIT indicates that {apiname} will wait for + * ename:VK_QUERY_RESULT_WAIT_BIT indicates that Vulkan will wait for each query's status to become available before retrieving its results. * ename:VK_QUERY_RESULT_WITH_AVAILABILITY_BIT indicates that the availability status accompanies the results. @@ -263,7 +263,7 @@ If ename:VK_QUERY_RESULT_64_BIT is not set and the result overflows a ename:VK_QUERY_RESULT_64_BIT is set and the result overflows a 64-bit value, the value may: either wrap or saturate. -If ename:VK_QUERY_RESULT_WAIT_BIT is set, {apiname} will wait for each +If ename:VK_QUERY_RESULT_WAIT_BIT is set, Vulkan will wait for each query to be in the available state before retrieving the numerical results for that query. In this case, fname:vkGetQueryPoolResults is guaranteed to succeed and return ename:VK_SUCCESS if the queries @@ -458,7 +458,7 @@ but still not be visible in a final image. == Pipeline Statistics Queries Pipeline statistics queries allow the application to sample a specified set -of sname:VkPipeline counters. These counters are accumulated by {apiname} +of sname:VkPipeline counters. These counters are accumulated by Vulkan for a set of either draw or dispatch commands while a pipeline statistics query is active. As such, pipeline statistics queries are available on queue families supporting either graphics or compute operations. Further, diff --git a/doc/specs/vulkan/chapters/renderpass.txt b/doc/specs/vulkan/chapters/renderpass.txt index 6d50f16c..cea83b21 100644 --- a/doc/specs/vulkan/chapters/renderpass.txt +++ b/doc/specs/vulkan/chapters/renderpass.txt @@ -758,8 +758,8 @@ include::../structs/VkRenderPassBeginInfo.txt[] * pname:pClearValues is an array of slink:VkClearValue structures that contains clear values for each attachment, if the attachment uses a pname:loadOp value of ename:VK_ATTACHMENT_LOAD_OP_CLEAR. The array is - indexed by attachment number, with elements corresponding to uncleared - attachments being unused. + indexed by attachment number. Only elements corresponding to cleared + attachments are used. Other elements of pname:pClearValues are ignored. include::../validity/structs/VkRenderPassBeginInfo.txt[] diff --git a/doc/specs/vulkan/chapters/resources.txt b/doc/specs/vulkan/chapters/resources.txt index 5dae7823..712a8cdf 100644 --- a/doc/specs/vulkan/chapters/resources.txt +++ b/doc/specs/vulkan/chapters/resources.txt @@ -4,7 +4,7 @@ [[resources]] = Resource Creation -{apiname} supports two primary resource types: _buffers_ and _images_. +Vulkan supports two primary resource types: _buffers_ and _images_. Resources are views of memory with associated formatting and dimensionality. Buffers are essentially unformatted arrays of bytes whereas images contain format information, can: be multidimensional and may: have associated @@ -449,7 +449,7 @@ pname:depthPitch is defined only for 3D images. For color formats, the pname:aspectMask member of sname:VkImageSubresource must: be ename:VK_IMAGE_ASPECT_COLOR_BIT. For depth/stencil formats, -pname:aspect must: be either ename:VK_IMAGE_ASPECT_DEPTH_BIT or +pname:aspectMask must: be either ename:VK_IMAGE_ASPECT_DEPTH_BIT or ename:VK_IMAGE_ASPECT_STENCIL_BIT. On implementations that store depth and stencil aspects separately, querying each of these image subresource layouts will return a different pname:offset and pname:size representing the region @@ -997,7 +997,7 @@ include::../protos/vkBindBufferMemory.txt[] include::../validity/protos/vkBindBufferMemory.txt[] -To attach memory to a image object, call: +To attach memory to an image object, call: include::../protos/vkBindImageMemory.txt[] diff --git a/doc/specs/vulkan/chapters/samplers.txt b/doc/specs/vulkan/chapters/samplers.txt index 3c7c1419..7dcc205a 100644 --- a/doc/specs/vulkan/chapters/samplers.txt +++ b/doc/specs/vulkan/chapters/samplers.txt @@ -109,7 +109,7 @@ include::../enums/VkBorderColor.txt[] ** The functions mustnot: use offsets. [NOTE] -.Mapping of OpenGL to {apiname} filter modes +.Mapping of OpenGL to Vulkan filter modes ================== pname:magFilter values of ename:VK_FILTER_NEAREST and ename:VK_FILTER_LINEAR directly correspond to code:GL_NEAREST and code:GL_LINEAR magnification @@ -120,7 +120,7 @@ ename:VK_FILTER_LINEAR and pname:mipmapMode of ename:VK_SAMPLER_MIPMAP_MODE_NEAREST correspond to code:GL_LINEAR_MIPMAP_NEAREST). -There are no {apiname} filter modes that directly correspond to OpenGL +There are no Vulkan filter modes that directly correspond to OpenGL minification filters of code:GL_LINEAR or code:GL_NEAREST, but they can: be emulated using ename:VK_SAMPLER_MIPMAP_MODE_NEAREST, pname:minLod = 0, and pname:maxLod = 0.25, and using pname:minFilter = ename:VK_FILTER_LINEAR or diff --git a/doc/specs/vulkan/chapters/shaders.txt b/doc/specs/vulkan/chapters/shaders.txt index 70e29756..dc59d5d5 100644 --- a/doc/specs/vulkan/chapters/shaders.txt +++ b/doc/specs/vulkan/chapters/shaders.txt @@ -40,7 +40,7 @@ _Shader modules_ contain _shader code_ and one or more entry points. Shaders are selected from a shader module by specifying an entry point as part of <> creation. The stages of a pipeline can: use shaders that come from different modules. The shader code defining a shader module -must: be in the SPIR-V format, as described by the <> appendix. A shader module is created by calling: diff --git a/doc/specs/vulkan/chapters/sparsemem.txt b/doc/specs/vulkan/chapters/sparsemem.txt index e8fa836b..39ef1bfc 100644 --- a/doc/specs/vulkan/chapters/sparsemem.txt +++ b/doc/specs/vulkan/chapters/sparsemem.txt @@ -5,7 +5,7 @@ = Sparse Resources As documented in <>, -sname:VkBuffer and sname:VkImage resources in {apiname} must: be bound +sname:VkBuffer and sname:VkImage resources in Vulkan must: be bound completely and contiguously to a single sname:VkDeviceMemory object. This binding must: be done before the resource is used, and the binding is immutable for the lifetime of the resource. @@ -1027,7 +1027,7 @@ arrayMipTailOffset = imageMipTailOffset + arrayLayer * imageMipTailStride; and the mip tail can: be bound with code:layerCount slink:VkSparseMemoryBind structures, each using pname:size = pname:imageMipTailSize and -pname:resourceOffset = pname:arrayMipTailOffset as defined above. +pname:resourceOffset = ptext:arrayMipTailOffset as defined above. Sparse memory binding is handled by the following APIs and related data structures. @@ -1167,7 +1167,7 @@ include::../structs/VkSparseImageMemoryBind.txt[] * pname:extent is the size in texels of the region within the image subresource to bind. The extent must: be a multiple of the sparse image block dimensions, except when binding sparse image blocks along the edge - of a image subresource it can: instead be such that any coordinate of + of an image subresource it can: instead be such that any coordinate of latexmath:[$\mathit{offset} + \mathit{extent}$] equals the corresponding dimensions of the image subresource. * pname:memory is the sname:VkDeviceMemory object that the sparse image diff --git a/doc/specs/vulkan/chapters/synchronization.txt b/doc/specs/vulkan/chapters/synchronization.txt index 6f8f43bb..8f74e2df 100644 --- a/doc/specs/vulkan/chapters/synchronization.txt +++ b/doc/specs/vulkan/chapters/synchronization.txt @@ -5,17 +5,17 @@ = Synchronization and Cache Control Synchronization of access to resources is primarily the responsibility of -the application. In {apiname}, there are four forms of concurrency during +the application. In Vulkan, there are four forms of concurrency during execution: between the host and device, between the queues, between queue submissions, and between commands within a command buffer. -{apiname} provides the application with a set of +Vulkan provides the application with a set of synchronization primitives for these purposes. Further, memory caches and other optimizations mean that the normal flow of command execution does not guarantee that all memory transactions from a command are immediately -visible to other agents with views into a given range of memory. {apiname} +visible to other agents with views into a given range of memory. Vulkan also provides barrier operations to ensure this type of synchronization. -Four synchronization primitive types are exposed by {apiname}. These are: +Four synchronization primitive types are exposed by Vulkan. These are: * <> * <> @@ -225,7 +225,7 @@ include::../protos/vkDestroySemaphore.txt[] include::../validity/protos/vkDestroySemaphore.txt[] To signal a semaphore from a queue, include it in an element of the array -of slink:VkSubmitInfo structures passed through the pname:pSubmitInfo +of slink:VkSubmitInfo structures passed through the pname:pSubmits parameter to a call to flink:vkQueueSubmit, or in an element of the array of slink:VkBindSparseInfo structures passed through the pname:pBindInfo parameter to a call to flink:vkQueueBindSparse. @@ -297,7 +297,7 @@ performed in between. (The primary use case for this example is with the presentation extensions, thus the etext:VK_IMAGE_LAYOUT_PRESENT_SRC_KHR token is used even though it -is not defined in the core {apiname} specification.) +is not defined in the core Vulkan specification.) ==== When a queue signals or waits upon a semaphore, certain @@ -313,7 +313,7 @@ the host. Events represent a fine-grained synchronization primitive that can: be used to gauge progress through a sequence of commands executed on a queue by -{apiname}. An event is initially in the unsignaled state. It can: be +Vulkan. An event is initially in the unsignaled state. It can: be signaled by a device, using commands inserted into the command buffer, or by the host. It can: also be reset to the unsignaled state by a device or the host. The host can: query the state of an event. A device can: wait for one @@ -936,7 +936,7 @@ Enumeration>> and <>. _Memory barriers_ express the two halves of a memory dependency between an earlier set of memory accesses against a later set of memory accesses. -{apiname} provides three types of memory barriers: global memory, buffer +Vulkan provides three types of memory barriers: global memory, buffer memory, and image memory. @@ -1142,7 +1142,7 @@ include::../validity/structs/VkBufferMemoryBarrier.txt[] The image memory barrier type is specified with an instance of the sname:VkImageMemoryBarrier structure. This type of barrier only applies to memory accesses involving a specific image subresource range of the -specified image object. That is, a memory dependency formed from a image +specified image object. That is, a memory dependency formed from an image memory barrier is <> to the specified image subresources of the image. It is also used to perform a diff --git a/doc/specs/vulkan/copyright.txt b/doc/specs/vulkan/copyright.txt index 9d45fbb5..e2eea321 100644 --- a/doc/specs/vulkan/copyright.txt +++ b/doc/specs/vulkan/copyright.txt @@ -62,6 +62,6 @@ representatives be liable for any damages, whether direct, indirect, special or consequential damages for lost revenues, lost profits, or otherwise, arising from or in connection with these materials. -Khronos and {apiname} are trademarks of The Khronos Group Inc. OpenCL is a trademark of +Khronos and Vulkan are trademarks of The Khronos Group Inc. OpenCL is a trademark of Apple Inc. and OpenGL is a registered trademark of Silicon Graphics International, both used under license by Khronos. diff --git a/doc/specs/vulkan/man/vkAllocateCommandBuffers.txt b/doc/specs/vulkan/man/vkAllocateCommandBuffers.txt index 3af458c9..948b2386 100644 --- a/doc/specs/vulkan/man/vkAllocateCommandBuffers.txt +++ b/doc/specs/vulkan/man/vkAllocateCommandBuffers.txt @@ -25,7 +25,7 @@ pname:pCommandBuffers:: Description ----------- -fname::vkAllocateCommandBuffers allocates command buffers from an existing command pool. pname:pAllocateInfo +fname:vkAllocateCommandBuffers allocates command buffers from an existing command pool. pname:pAllocateInfo is a pointer to an instance of the slink:VkCommandBufferAllocateInfo structure which describes the command buffer allocation. The definition of slink:VkCommandBufferAllocateInfo is: diff --git a/doc/specs/vulkan/man/vkCmdCopyBuffer.txt b/doc/specs/vulkan/man/vkCmdCopyBuffer.txt index 626ada51..e8ca4bf1 100644 --- a/doc/specs/vulkan/man/vkCmdCopyBuffer.txt +++ b/doc/specs/vulkan/man/vkCmdCopyBuffer.txt @@ -39,7 +39,7 @@ the slink:VkBufferCopy structure, whose definition is: include::../structs/VkBufferCopy.txt[] If any two or more regions within pname:pRegions overlap, the resulting data will be -undefined. It is recomended, but not required, that the regions given in pname:pRegions +undefined. It is recommended, but not required, that the regions given in pname:pRegions start on multiples of four bytes and have a length which is a multiple of four bytes. include::../validity/protos/vkCmdCopyBuffer.txt[] diff --git a/doc/specs/vulkan/man/vkCmdResolveImage.txt b/doc/specs/vulkan/man/vkCmdResolveImage.txt index 8bff87d7..261c065b 100644 --- a/doc/specs/vulkan/man/vkCmdResolveImage.txt +++ b/doc/specs/vulkan/man/vkCmdResolveImage.txt @@ -14,7 +14,7 @@ Parameters ---------- pname:commandBuffer:: - Ths command buffer into which the command is to be placed. + The command buffer into which the command is to be placed. pname:srcImage:: The image that is the source of the resolve operation. diff --git a/doc/specs/vulkan/man/vkCreateBuffer.txt b/doc/specs/vulkan/man/vkCreateBuffer.txt index 3374be4e..dec66c0b 100644 --- a/doc/specs/vulkan/man/vkCreateBuffer.txt +++ b/doc/specs/vulkan/man/vkCreateBuffer.txt @@ -20,7 +20,7 @@ pname:pCreateInfo:: Pointer to data structure containing information about the object to be created. pname:pBuffer:: - Pointer to a variable to recieve a handle to the new buffer object. + Pointer to a variable to receive a handle to the new buffer object. Description ----------- diff --git a/doc/specs/vulkan/man/vkCreateComputePipelines.txt b/doc/specs/vulkan/man/vkCreateComputePipelines.txt index 4b914d3a..fa6fdb6a 100644 --- a/doc/specs/vulkan/man/vkCreateComputePipelines.txt +++ b/doc/specs/vulkan/man/vkCreateComputePipelines.txt @@ -66,7 +66,7 @@ to fname:vkCreateComputePipelines. The parameters pname:basePipelineHandle and pname:basePipelineIndex are ignored unless pname:flags has the ename:VK_PIPELINE_CREATE_DERIVATIVE_BIT bit set. If using the pname:basePipelineIndex parameter, the index must refer to a -pname:pCreateInfos parameter pased to vkCreateComputePipelines that appeared +pname:pCreateInfos parameter passed to vkCreateComputePipelines that appeared earlier than the current sname:VkComputePipelineCreateInfo in the list. The parameters pname:basePipelineHandle and pname:basePipelineIndex are mutually exclusive. If you specify a valid pname:basePipelineHandle, diff --git a/doc/specs/vulkan/man/vkCreateImageView.txt b/doc/specs/vulkan/man/vkCreateImageView.txt index 33731b6d..facd64b4 100644 --- a/doc/specs/vulkan/man/vkCreateImageView.txt +++ b/doc/specs/vulkan/man/vkCreateImageView.txt @@ -25,7 +25,7 @@ pname:pView:: Description ----------- -fname:vkCreateImageView creates a new view of a source image in a compatible format, alowing casting +fname:vkCreateImageView creates a new view of a source image in a compatible format, allowing casting of image data from one format to another. Image views may be bound into descriptor sets to allow them to be accessed in shaders, or be bound as color attachments. pname:device specifies the device that is to be used to create the new view. pname:pCreateInfo is a pointer to an instance of the diff --git a/doc/specs/vulkan/man/vkCreatePipelineLayout.txt b/doc/specs/vulkan/man/vkCreatePipelineLayout.txt index 3a6828f9..987e5380 100644 --- a/doc/specs/vulkan/man/vkCreatePipelineLayout.txt +++ b/doc/specs/vulkan/man/vkCreatePipelineLayout.txt @@ -20,7 +20,7 @@ pname:pCreateInfo:: A pointer to structure specifying the properties of the new pipeline layout. pname:pPipelineLayout:: - Pointer to a variable to recieve a handle to the new pipeline layout object. + Pointer to a variable to receive a handle to the new pipeline layout object. Description ----------- diff --git a/doc/specs/vulkan/man/vkEnumeratePhysicalDevices.txt b/doc/specs/vulkan/man/vkEnumeratePhysicalDevices.txt index f51f0136..17334512 100644 --- a/doc/specs/vulkan/man/vkEnumeratePhysicalDevices.txt +++ b/doc/specs/vulkan/man/vkEnumeratePhysicalDevices.txt @@ -41,7 +41,7 @@ If pname:pPhysicalDevices is not code:NULL, then pname:pPhysicalDeviceCount shou to a variable that has been initialized with the size of the array pointed to by pname:pPhysicalDevices. No more than this number of physical device handles will be written into the output array. The actual number of device handles written into pname:pPhysicalDevices is then written into -the variable pointed to pname:pPhysicalDevices. +the variable pointed to by pname:pPhysicalDeviceCount. include::../validity/protos/vkEnumeratePhysicalDevices.txt[] diff --git a/doc/specs/vulkan/man/vkGetImageSubresourceLayout.txt b/doc/specs/vulkan/man/vkGetImageSubresourceLayout.txt index 4e4e16ae..ad37fc16 100644 --- a/doc/specs/vulkan/man/vkGetImageSubresourceLayout.txt +++ b/doc/specs/vulkan/man/vkGetImageSubresourceLayout.txt @@ -30,7 +30,7 @@ Description ----------- fname:vkGetImageSubresourceLayout returns information about the memory -layout of a image subresource of an image. pname:device is a handle to the +layout of an image subresource of an image. pname:device is a handle to the device that owns pname:image, which is the image about which to retrieve information. A description of the image subresource is passsed to the command through an instance of the slink:VkImageSubresource structure, the diff --git a/doc/specs/vulkan/man/vkGetInstanceProcAddr.txt b/doc/specs/vulkan/man/vkGetInstanceProcAddr.txt index 8548f830..156e8cbe 100644 --- a/doc/specs/vulkan/man/vkGetInstanceProcAddr.txt +++ b/doc/specs/vulkan/man/vkGetInstanceProcAddr.txt @@ -30,7 +30,7 @@ different values of pname:instance. If pname:instance is code:NULL, fname:vkGetInstanceProcAddr will return non-code:NULL function pointers for the global commands -fname::vkEnumerateInstanceExtensionProperties, +fname:vkEnumerateInstanceExtensionProperties, fname:vkEnumerateInstanceLayerProperties, and fname:vkCreateInstance. It will return code:NULL for all other commands, since they may have different implementations in different instances. diff --git a/doc/specs/vulkan/man/vkGetPhysicalDeviceQueueFamilyProperties.txt b/doc/specs/vulkan/man/vkGetPhysicalDeviceQueueFamilyProperties.txt index ad7e2bd7..9ccfabfd 100644 --- a/doc/specs/vulkan/man/vkGetPhysicalDeviceQueueFamilyProperties.txt +++ b/doc/specs/vulkan/man/vkGetPhysicalDeviceQueueFamilyProperties.txt @@ -73,8 +73,8 @@ operations such as binding graphics state and graphics pipelines and executing d * If a queue's ptext:queueFlags member contains ename:VK_QUEUE_COMPUTE_BIT, then it supports compute operations such as binding compute pipelines and executing compute dispatches. -* If a queue's ptext:queueFlags member contains ename:VK_QUEUE_TRANSFER_BIT, then it supports transsfer -operations, which include copying data an images. +* If a queue's ptext:queueFlags member contains ename:VK_QUEUE_TRANSFER_BIT, then it supports transfer +operations, which include copying data and images. * If a queue's ptext:queueFlags member contains ename:VK_QUEUE_SPARSE_BINDING_BIT, then it supports binding memory to sparse buffer and image resources. diff --git a/doc/specs/vulkan/style/styleguide.txt b/doc/specs/vulkan/style/styleguide.txt index 770d18aa..245ea937 100644 --- a/doc/specs/vulkan/style/styleguide.txt +++ b/doc/specs/vulkan/style/styleguide.txt @@ -583,6 +583,13 @@ See Gitlab issue #61. ==== +=== Terms to Use With Caution + +The term _subset_ is sometimes used to refer to a _strict subset_, and +sometimes used to refer to a subset which may be equal to the entire set. +This is particularly likely to come up when describing bitmasks. Make sure +to use either _subset_ or _strict subset_ as appropriate. + === Terms to Avoid Don't describe anything in the documentation using vague or wishy-washy @@ -852,7 +859,7 @@ autogenerated from vk.xml, and included from the `../validity/` directories: include::../validity/protos/vkCreateCommandPool.txt[] ==== -The sname:VkCommandPoolCreateInfo structure is defined as follows: +The sname:VkCommandPoolCreateInfo structure is defined as: include::../structs/VkCommandPoolCreateInfo.txt[] diff --git a/doc/specs/vulkan/validity/protos/vkCmdBlitImage.txt b/doc/specs/vulkan/validity/protos/vkCmdBlitImage.txt index efdd9194..9726e9ce 100644 --- a/doc/specs/vulkan/validity/protos/vkCmdBlitImage.txt +++ b/doc/specs/vulkan/validity/protos/vkCmdBlitImage.txt @@ -35,6 +35,7 @@ endif::doctype-manpage[] * If either of pname:srcImage or pname:dstImage was created with an unsigned integer elink:VkFormat, the other must: also have been created with an unsigned integer elink:VkFormat * If either of pname:srcImage or pname:dstImage was created with a depth/stencil format, the other must: have exactly the same format * If pname:srcImage was created with a depth/stencil format, pname:filter must: be ename:VK_FILTER_NEAREST +* If pname:filter is ename:VK_FILTER_LINEAR, pname:srcImage must: be of a format which supports linear filtering, as specified by the ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in sname:VkFormatProperties::pname:linearTilingFeatures (for a linear image) or sname:VkFormatProperties::pname:optimalTilingFeatures(for an optimally tiled image) returned by fname:vkGetPhysicalDeviceFormatProperties ifndef::doctype-manpage[] ******************************************************************************** endif::doctype-manpage[] diff --git a/doc/specs/vulkan/validity/protos/vkCmdClearColorImage.txt b/doc/specs/vulkan/validity/protos/vkCmdClearColorImage.txt index ba5d69e1..6baaf8fa 100644 --- a/doc/specs/vulkan/validity/protos/vkCmdClearColorImage.txt +++ b/doc/specs/vulkan/validity/protos/vkCmdClearColorImage.txt @@ -20,7 +20,7 @@ endif::doctype-manpage[] * pname:image must: have been created with ename:VK_IMAGE_USAGE_TRANSFER_DST_BIT usage flag * pname:imageLayout must: specify the layout of the image subresource ranges of pname:image specified in pname:pRanges at the time this command is executed on a sname:VkDevice * pname:imageLayout must: be either of ename:VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL or ename:VK_IMAGE_LAYOUT_GENERAL -* The image range of any given element of pname:pRanges must: be a image subresource range that is contained within pname:image +* The image range of any given element of pname:pRanges must: be an image subresource range that is contained within pname:image * pname:image mustnot: have a compressed or depth/stencil format ifndef::doctype-manpage[] ******************************************************************************** diff --git a/doc/specs/vulkan/validity/protos/vkCmdClearDepthStencilImage.txt b/doc/specs/vulkan/validity/protos/vkCmdClearDepthStencilImage.txt index 1d635617..f08d7358 100644 --- a/doc/specs/vulkan/validity/protos/vkCmdClearDepthStencilImage.txt +++ b/doc/specs/vulkan/validity/protos/vkCmdClearDepthStencilImage.txt @@ -20,7 +20,7 @@ endif::doctype-manpage[] * pname:image must: have been created with ename:VK_IMAGE_USAGE_TRANSFER_DST_BIT usage flag * pname:imageLayout must: specify the layout of the image subresource ranges of pname:image specified in pname:pRanges at the time this command is executed on a sname:VkDevice * pname:imageLayout must: be either of ename:VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL or ename:VK_IMAGE_LAYOUT_GENERAL -* The image range of any given element of pname:pRanges must: be a image subresource range that is contained within pname:image +* The image range of any given element of pname:pRanges must: be an image subresource range that is contained within pname:image * pname:image must: have a depth/stencil format ifndef::doctype-manpage[] ******************************************************************************** diff --git a/doc/specs/vulkan/validity/protos/vkCmdDispatch.txt b/doc/specs/vulkan/validity/protos/vkCmdDispatch.txt index d91b3f33..9f394a3b 100644 --- a/doc/specs/vulkan/validity/protos/vkCmdDispatch.txt +++ b/doc/specs/vulkan/validity/protos/vkCmdDispatch.txt @@ -23,7 +23,7 @@ endif::doctype-manpage[] * If any sname:VkSampler object that is accessed from a shader by the sname:VkPipeline currently bound to ename:VK_PIPELINE_BIND_POINT_COMPUTE uses unnormalized coordinates, it mustnot: be used with any of the SPIR-V `OpImageSample*` or `OpImageSparseSample*` instructions that includes a lod bias or any offset values, in any shader stage * If the <> feature is not enabled, and any shader stage in the sname:VkPipeline object currently bound to ename:VK_PIPELINE_BIND_POINT_COMPUTE accesses a uniform buffer, it mustnot: access values outside of the range of that buffer specified in the currently bound descriptor set * If the <> feature is not enabled, and any shader stage in the sname:VkPipeline object currently bound to ename:VK_PIPELINE_BIND_POINT_COMPUTE accesses a storage buffer, it mustnot: access values outside of the range of that buffer specified in the currently bound descriptor set -* Any sname:VkImage being sampled with ename:VK_FILTER_LINEAR as a result of this command must: be of a format which supports linear filtering, as specified by the ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in sname:VkFormatProperties::pname:linearTilingFeatures returned by fname:vkGetPhysicalDeviceFormatProperties +* Any sname:VkImageView being sampled with ename:VK_FILTER_LINEAR as a result of this command must: be of a format which supports linear filtering, as specified by the ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in sname:VkFormatProperties::pname:linearTilingFeatures (for a linear image) or sname:VkFormatProperties::pname:optimalTilingFeatures(for an optimally tiled image) returned by fname:vkGetPhysicalDeviceFormatProperties ifndef::doctype-manpage[] ******************************************************************************** endif::doctype-manpage[] diff --git a/doc/specs/vulkan/validity/protos/vkCmdDispatchIndirect.txt b/doc/specs/vulkan/validity/protos/vkCmdDispatchIndirect.txt index 9af07848..15f3975a 100644 --- a/doc/specs/vulkan/validity/protos/vkCmdDispatchIndirect.txt +++ b/doc/specs/vulkan/validity/protos/vkCmdDispatchIndirect.txt @@ -25,7 +25,7 @@ endif::doctype-manpage[] * If any sname:VkSampler object that is accessed from a shader by the sname:VkPipeline currently bound to ename:VK_PIPELINE_BIND_POINT_COMPUTE uses unnormalized coordinates, it mustnot: be used with any of the SPIR-V `OpImageSample*` or `OpImageSparseSample*` instructions that includes a lod bias or any offset values, in any shader stage * If the <> feature is not enabled, and any shader stage in the sname:VkPipeline object currently bound to ename:VK_PIPELINE_BIND_POINT_COMPUTE accesses a uniform buffer, it mustnot: access values outside of the range of that buffer specified in the currently bound descriptor set * If the <> feature is not enabled, and any shader stage in the sname:VkPipeline object currently bound to ename:VK_PIPELINE_BIND_POINT_COMPUTE accesses a storage buffer, it mustnot: access values outside of the range of that buffer specified in the currently bound descriptor set -* Any sname:VkImage being sampled with ename:VK_FILTER_LINEAR as a result of this command must: be of a format which supports linear filtering, as specified by the ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in sname:VkFormatProperties::pname:linearTilingFeatures returned by fname:vkGetPhysicalDeviceFormatProperties +* Any sname:VkImageView being sampled with ename:VK_FILTER_LINEAR as a result of this command must: be of a format which supports linear filtering, as specified by the ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in sname:VkFormatProperties::pname:linearTilingFeatures (for a linear image) or sname:VkFormatProperties::pname:optimalTilingFeatures(for an optimally tiled image) returned by fname:vkGetPhysicalDeviceFormatProperties ifndef::doctype-manpage[] ******************************************************************************** endif::doctype-manpage[] diff --git a/doc/specs/vulkan/validity/protos/vkCmdDraw.txt b/doc/specs/vulkan/validity/protos/vkCmdDraw.txt index b0e12e44..4a8848b6 100644 --- a/doc/specs/vulkan/validity/protos/vkCmdDraw.txt +++ b/doc/specs/vulkan/validity/protos/vkCmdDraw.txt @@ -24,7 +24,7 @@ endif::doctype-manpage[] * If any sname:VkSampler object that is accessed from a shader by the sname:VkPipeline currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS uses unnormalized coordinates, it mustnot: be used with any of the SPIR-V `OpImageSample*` or `OpImageSparseSample*` instructions that includes a lod bias or any offset values, in any shader stage * If the <> feature is not enabled, and any shader stage in the sname:VkPipeline object currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS accesses a uniform buffer, it mustnot: access values outside of the range of that buffer specified in the currently bound descriptor set * If the <> feature is not enabled, and any shader stage in the sname:VkPipeline object currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS accesses a storage buffer, it mustnot: access values outside of the range of that buffer specified in the currently bound descriptor set -* Any sname:VkImage being sampled with ename:VK_FILTER_LINEAR as a result of this command must: be of a format which supports linear filtering, as specified by the ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in sname:VkFormatProperties::pname:linearTilingFeatures returned by fname:vkGetPhysicalDeviceFormatProperties +* Any sname:VkImageView being sampled with ename:VK_FILTER_LINEAR as a result of this command must: be of a format which supports linear filtering, as specified by the ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in sname:VkFormatProperties::pname:linearTilingFeatures (for a linear image) or sname:VkFormatProperties::pname:optimalTilingFeatures(for an optimally tiled image) returned by fname:vkGetPhysicalDeviceFormatProperties ifndef::doctype-manpage[] ******************************************************************************** endif::doctype-manpage[] diff --git a/doc/specs/vulkan/validity/protos/vkCmdDrawIndexed.txt b/doc/specs/vulkan/validity/protos/vkCmdDrawIndexed.txt index 94aa5840..60071f8f 100644 --- a/doc/specs/vulkan/validity/protos/vkCmdDrawIndexed.txt +++ b/doc/specs/vulkan/validity/protos/vkCmdDrawIndexed.txt @@ -25,7 +25,7 @@ endif::doctype-manpage[] * If any sname:VkSampler object that is accessed from a shader by the sname:VkPipeline currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS uses unnormalized coordinates, it mustnot: be used with any of the SPIR-V `OpImageSample*` or `OpImageSparseSample*` instructions that includes a lod bias or any offset values, in any shader stage * If the <> feature is not enabled, and any shader stage in the sname:VkPipeline object currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS accesses a uniform buffer, it mustnot: access values outside of the range of that buffer specified in the currently bound descriptor set * If the <> feature is not enabled, and any shader stage in the sname:VkPipeline object currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS accesses a storage buffer, it mustnot: access values outside of the range of that buffer specified in the currently bound descriptor set -* Any sname:VkImage being sampled with ename:VK_FILTER_LINEAR as a result of this command must: be of a format which supports linear filtering, as specified by the ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in sname:VkFormatProperties::pname:linearTilingFeatures returned by fname:vkGetPhysicalDeviceFormatProperties +* Any sname:VkImageView being sampled with ename:VK_FILTER_LINEAR as a result of this command must: be of a format which supports linear filtering, as specified by the ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in sname:VkFormatProperties::pname:linearTilingFeatures (for a linear image) or sname:VkFormatProperties::pname:optimalTilingFeatures(for an optimally tiled image) returned by fname:vkGetPhysicalDeviceFormatProperties ifndef::doctype-manpage[] ******************************************************************************** endif::doctype-manpage[] diff --git a/doc/specs/vulkan/validity/protos/vkCmdDrawIndexedIndirect.txt b/doc/specs/vulkan/validity/protos/vkCmdDrawIndexedIndirect.txt index 54d65d2d..1efbd99d 100644 --- a/doc/specs/vulkan/validity/protos/vkCmdDrawIndexedIndirect.txt +++ b/doc/specs/vulkan/validity/protos/vkCmdDrawIndexedIndirect.txt @@ -32,7 +32,7 @@ endif::doctype-manpage[] * If any sname:VkSampler object that is accessed from a shader by the sname:VkPipeline currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS uses unnormalized coordinates, it mustnot: be used with any of the SPIR-V `OpImageSample*` or `OpImageSparseSample*` instructions that includes a lod bias or any offset values, in any shader stage * If the <> feature is not enabled, and any shader stage in the sname:VkPipeline object currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS accesses a uniform buffer, it mustnot: access values outside of the range of that buffer specified in the currently bound descriptor set * If the <> feature is not enabled, and any shader stage in the sname:VkPipeline object currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS accesses a storage buffer, it mustnot: access values outside of the range of that buffer specified in the currently bound descriptor set -* Any sname:VkImage being sampled with ename:VK_FILTER_LINEAR as a result of this command must: be of a format which supports linear filtering, as specified by the ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in sname:VkFormatProperties::pname:linearTilingFeatures returned by fname:vkGetPhysicalDeviceFormatProperties +* Any sname:VkImageView being sampled with ename:VK_FILTER_LINEAR as a result of this command must: be of a format which supports linear filtering, as specified by the ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in sname:VkFormatProperties::pname:linearTilingFeatures (for a linear image) or sname:VkFormatProperties::pname:optimalTilingFeatures(for an optimally tiled image) returned by fname:vkGetPhysicalDeviceFormatProperties ifndef::doctype-manpage[] ******************************************************************************** endif::doctype-manpage[] diff --git a/doc/specs/vulkan/validity/protos/vkCmdDrawIndirect.txt b/doc/specs/vulkan/validity/protos/vkCmdDrawIndirect.txt index 52ee2b89..a41ad304 100644 --- a/doc/specs/vulkan/validity/protos/vkCmdDrawIndirect.txt +++ b/doc/specs/vulkan/validity/protos/vkCmdDrawIndirect.txt @@ -32,7 +32,7 @@ endif::doctype-manpage[] * If any sname:VkSampler object that is accessed from a shader by the sname:VkPipeline currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS uses unnormalized coordinates, it mustnot: be used with any of the SPIR-V `OpImageSample*` or `OpImageSparseSample*` instructions that includes a lod bias or any offset values, in any shader stage * If the <> feature is not enabled, and any shader stage in the sname:VkPipeline object currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS accesses a uniform buffer, it mustnot: access values outside of the range of that buffer specified in the currently bound descriptor set * If the <> feature is not enabled, and any shader stage in the sname:VkPipeline object currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS accesses a storage buffer, it mustnot: access values outside of the range of that buffer specified in the currently bound descriptor set -* Any sname:VkImage being sampled with ename:VK_FILTER_LINEAR as a result of this command must: be of a format which supports linear filtering, as specified by the ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in sname:VkFormatProperties::pname:linearTilingFeatures returned by fname:vkGetPhysicalDeviceFormatProperties +* Any sname:VkImageView being sampled with ename:VK_FILTER_LINEAR as a result of this command must: be of a format which supports linear filtering, as specified by the ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in sname:VkFormatProperties::pname:linearTilingFeatures (for a linear image) or sname:VkFormatProperties::pname:optimalTilingFeatures(for an optimally tiled image) returned by fname:vkGetPhysicalDeviceFormatProperties ifndef::doctype-manpage[] ******************************************************************************** endif::doctype-manpage[] diff --git a/doc/specs/vulkan/validity/protos/vkCmdResetEvent.txt b/doc/specs/vulkan/validity/protos/vkCmdResetEvent.txt index 948aad98..711bf340 100644 --- a/doc/specs/vulkan/validity/protos/vkCmdResetEvent.txt +++ b/doc/specs/vulkan/validity/protos/vkCmdResetEvent.txt @@ -17,6 +17,7 @@ endif::doctype-manpage[] * Each of pname:commandBuffer and pname:event must: have been created, allocated or retrieved from the same sname:VkDevice * If the <> feature is not enabled, pname:stageMask mustnot: contain ename:VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT * If the <> feature is not enabled, pname:stageMask mustnot: contain ename:VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT or ename:VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT +* When this command executes, pname:event mustnot: be waited on by a fname:vkCmdWaitEvents command that is currently executing ifndef::doctype-manpage[] ******************************************************************************** endif::doctype-manpage[] diff --git a/doc/specs/vulkan/validity/protos/vkQueueSubmit.txt b/doc/specs/vulkan/validity/protos/vkQueueSubmit.txt index cae39038..d066a965 100644 --- a/doc/specs/vulkan/validity/protos/vkQueueSubmit.txt +++ b/doc/specs/vulkan/validity/protos/vkQueueSubmit.txt @@ -11,8 +11,8 @@ endif::doctype-manpage[] * If pname:submitCount is not `0`, pname:pSubmits must: be a pointer to an array of pname:submitCount valid sname:VkSubmitInfo structures * If pname:fence is not sname:VK_NULL_HANDLE, pname:fence must: be a valid sname:VkFence handle * Each of pname:queue and pname:fence that are valid handles must: have been created, allocated or retrieved from the same sname:VkDevice -* pname:fence must: be unsignalled -* pname:fence mustnot: be associated with any other queue command that has not yet completed execution on that queue +* If pname:fence is not sname:VK_NULL_HANDLE, pname:fence must: be unsignalled +* If pname:fence is not sname:VK_NULL_HANDLE, pname:fence mustnot: be associated with any other queue command that has not yet completed execution on that queue ifndef::doctype-manpage[] ******************************************************************************** endif::doctype-manpage[] diff --git a/doc/specs/vulkan/validity/protos/vkResetEvent.txt b/doc/specs/vulkan/validity/protos/vkResetEvent.txt index 856449b4..0a1bda1d 100644 --- a/doc/specs/vulkan/validity/protos/vkResetEvent.txt +++ b/doc/specs/vulkan/validity/protos/vkResetEvent.txt @@ -11,6 +11,7 @@ endif::doctype-manpage[] * pname:event must: be a valid sname:VkEvent handle * pname:event must: have been created, allocated or retrieved from pname:device * Each of pname:device and pname:event must: have been created, allocated or retrieved from the same sname:VkPhysicalDevice +* pname:event mustnot: be waited on by a fname:vkCmdWaitEvents command that is currently executing ifndef::doctype-manpage[] ******************************************************************************** endif::doctype-manpage[] diff --git a/doc/specs/vulkan/validity/structs/VkBufferImageCopy.txt b/doc/specs/vulkan/validity/structs/VkBufferImageCopy.txt index 3a8df78b..bdfb59e4 100644 --- a/doc/specs/vulkan/validity/structs/VkBufferImageCopy.txt +++ b/doc/specs/vulkan/validity/structs/VkBufferImageCopy.txt @@ -16,13 +16,13 @@ endif::doctype-manpage[] * pname:imageOffset.y and (imageExtent.height + pname:imageOffset.y) must: both be greater than or equal to `0` and less than or equal to the image subresource height * pname:imageOffset.z and (imageExtent.depth + pname:imageOffset.z) must: both be greater than or equal to `0` and less than or equal to the image subresource depth * If the calling command's sname:VkImage parameter is a compressed format image: -* pname:bufferRowLength must: be a multiple of the compressed texel block width -* pname:bufferImageHeight must: be a multiple of the compressed texel block height -* all members of pname:imageOffset must: be a multiple of the corresponding dimensions of the compressed texel block -* pname:bufferOffset must: be a multiple of the compressed texel block size in bytes -* pname:imageExtent.width must: be a multiple of the compressed texel block width or (pname:imageExtent.width + pname:imageOffset.x) must: equal the image subresource width -* pname:imageExtent.height must: be a multiple of the compressed texel block height or (pname:imageExtent.height + pname:imageOffset.y) must: equal the image subresource height -* pname:imageExtent.depth must: be a multiple of the compressed texel block depth or (pname:imageExtent.depth + pname:imageOffset.z) must: equal the image subresource depth + ** pname:bufferRowLength must: be a multiple of the compressed texel block width + ** pname:bufferImageHeight must: be a multiple of the compressed texel block height + ** all members of pname:imageOffset must: be a multiple of the corresponding dimensions of the compressed texel block + ** pname:bufferOffset must: be a multiple of the compressed texel block size in bytes + ** pname:imageExtent.width must: be a multiple of the compressed texel block width or (pname:imageExtent.width + pname:imageOffset.x) must: equal the image subresource width + ** pname:imageExtent.height must: be a multiple of the compressed texel block height or (pname:imageExtent.height + pname:imageOffset.y) must: equal the image subresource height + ** pname:imageExtent.depth must: be a multiple of the compressed texel block depth or (pname:imageExtent.depth + pname:imageOffset.z) must: equal the image subresource depth * pname:bufferOffset, pname:bufferRowLength, pname:bufferImageHeight and all members of pname:imageOffset and pname:imageExtent must: respect the image transfer granularity requirements of the queue family that it will be submitted against, as described in <> * The pname:aspectMask member of pname:imageSubresource must: specify aspects present in the calling command's sname:VkImage parameter * The pname:aspectMask member of pname:imageSubresource must: only have a single bit set diff --git a/doc/specs/vulkan/validity/structs/VkBufferViewCreateInfo.txt b/doc/specs/vulkan/validity/structs/VkBufferViewCreateInfo.txt index 9d9efb1d..adae18c6 100644 --- a/doc/specs/vulkan/validity/structs/VkBufferViewCreateInfo.txt +++ b/doc/specs/vulkan/validity/structs/VkBufferViewCreateInfo.txt @@ -15,10 +15,10 @@ endif::doctype-manpage[] * pname:offset must: be less than the size of pname:buffer * pname:offset must: be a multiple of sname:VkPhysicalDeviceLimits::pname:minTexelBufferOffsetAlignment * If pname:range is not equal to ename:VK_WHOLE_SIZE: -* pname:range must: be greater than `0` -* pname:range must: be a multiple of the element size of pname:format -* pname:range divided by the size of an element of pname:format, must: be less than or equal to sname:VkPhysicalDeviceLimits::pname:maxTexelBufferElements -* the sum of pname:offset and pname:range must: be less than or equal to the size of pname:buffer + ** pname:range must: be greater than `0` + ** pname:range must: be a multiple of the element size of pname:format + ** pname:range divided by the size of an element of pname:format, must: be less than or equal to sname:VkPhysicalDeviceLimits::pname:maxTexelBufferElements + ** the sum of pname:offset and pname:range must: be less than or equal to the size of pname:buffer * pname:buffer must: have been created with a pname:usage value containing at least one of ename:VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT or ename:VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT * If pname:buffer was created with pname:usage containing ename:VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT, pname:format must: be supported for uniform texel buffers, as specified by the ename:VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT flag in sname:VkFormatProperties::pname:bufferFeatures returned by fname:vkGetPhysicalDeviceFormatProperties * If pname:buffer was created with pname:usage containing ename:VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT, pname:format must: be supported for storage texel buffers, as specified by the ename:VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT flag in sname:VkFormatProperties::pname:bufferFeatures returned by fname:vkGetPhysicalDeviceFormatProperties diff --git a/doc/specs/vulkan/validity/structs/VkImageCopy.txt b/doc/specs/vulkan/validity/structs/VkImageCopy.txt index 0254a1d7..fca2cdf4 100644 --- a/doc/specs/vulkan/validity/structs/VkImageCopy.txt +++ b/doc/specs/vulkan/validity/structs/VkImageCopy.txt @@ -21,15 +21,15 @@ endif::doctype-manpage[] * pname:dstOffset.y and (pname:extent.height + pname:dstOffset.y) must: both be greater than or equal to `0` and less than or equal to the destination image subresource height * pname:dstOffset.z and (pname:extent.depth + pname:dstOffset.z) must: both be greater than or equal to `0` and less than or equal to the destination image subresource depth * If the calling command's pname:srcImage is a compressed format image: -* all members of pname:srcOffset must: be a multiple of the corresponding dimensions of the compressed texel block -* pname:extent.width must: be a multiple of the compressed texel block width or (pname:extent.width + pname:srcOffset.x) must: equal the source image subresource width -* pname:extent.height must: be a multiple of the compressed texel block height or (pname:extent.height + pname:srcOffset.y) must: equal the source image subresource height -* pname:extent.depth must: be a multiple of the compressed texel block depth or (pname:extent.depth + pname:srcOffset.z) must: equal the source image subresource depth + ** all members of pname:srcOffset must: be a multiple of the corresponding dimensions of the compressed texel block + ** pname:extent.width must: be a multiple of the compressed texel block width or (pname:extent.width + pname:srcOffset.x) must: equal the source image subresource width + ** pname:extent.height must: be a multiple of the compressed texel block height or (pname:extent.height + pname:srcOffset.y) must: equal the source image subresource height + ** pname:extent.depth must: be a multiple of the compressed texel block depth or (pname:extent.depth + pname:srcOffset.z) must: equal the source image subresource depth * If the calling command's pname:dstImage is a compressed format image: -* all members of pname:dstOffset must: be a multiple of the corresponding dimensions of the compressed texel block -* pname:extent.width must: be a multiple of the compressed texel block width or (pname:extent.width + pname:dstOffset.x) must: equal the destination image subresource width -* pname:extent.height must: be a multiple of the compressed texel block height or (pname:extent.height + pname:dstOffset.y) must: equal the destination image subresource height -* pname:extent.depth must: be a multiple of the compressed texel block depth or (pname:extent.depth + pname:dstOffset.z) must: equal the destination image subresource depth + ** all members of pname:dstOffset must: be a multiple of the corresponding dimensions of the compressed texel block + ** pname:extent.width must: be a multiple of the compressed texel block width or (pname:extent.width + pname:dstOffset.x) must: equal the destination image subresource width + ** pname:extent.height must: be a multiple of the compressed texel block height or (pname:extent.height + pname:dstOffset.y) must: equal the destination image subresource height + ** pname:extent.depth must: be a multiple of the compressed texel block depth or (pname:extent.depth + pname:dstOffset.z) must: equal the destination image subresource depth * pname:srcOffset, pname:dstOffset, and pname:extent must: respect the image transfer granularity requirements of the queue family that it will be submitted against, as described in <> ifndef::doctype-manpage[] ******************************************************************************** diff --git a/doc/specs/vulkan/vkapi.py b/doc/specs/vulkan/vkapi.py index 4b29f962..78369de4 100644 --- a/doc/specs/vulkan/vkapi.py +++ b/doc/specs/vulkan/vkapi.py @@ -113,7 +113,8 @@ consts['VK_STRUCTURE_TYPE_MIR_SURFACE_CREATE_INFO_KHR'] = 'VkStructureType' consts['VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR'] = 'VkStructureType' consts['VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR'] = 'VkStructureType' consts['VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT'] = 'VkStructureType' -enums['VkStructureType'] = ['VK_STRUCTURE_TYPE_APPLICATION_INFO', 'VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO', 'VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO', 'VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO', 'VK_STRUCTURE_TYPE_SUBMIT_INFO', 'VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO', 'VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE', 'VK_STRUCTURE_TYPE_BIND_SPARSE_INFO', 'VK_STRUCTURE_TYPE_FENCE_CREATE_INFO', 'VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO', 'VK_STRUCTURE_TYPE_EVENT_CREATE_INFO', 'VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO', 'VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO', 'VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO', 'VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO', 'VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO', 'VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO', 'VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO', 'VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO', 'VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO', 'VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO', 'VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO', 'VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO', 'VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO', 'VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO', 'VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO', 'VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO', 'VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO', 'VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO', 'VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO', 'VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO', 'VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO', 'VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO', 'VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO', 'VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO', 'VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET', 'VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET', 'VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO', 'VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO', 'VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO', 'VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO', 'VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO', 'VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO', 'VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO', 'VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER', 'VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER', 'VK_STRUCTURE_TYPE_MEMORY_BARRIER', 'VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO', 'VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO', 'VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR', 'VK_STRUCTURE_TYPE_PRESENT_INFO_KHR', 'VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR', 'VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR', 'VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR', 'VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR', 'VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR', 'VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR', 'VK_STRUCTURE_TYPE_MIR_SURFACE_CREATE_INFO_KHR', 'VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR', 'VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR', 'VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT'] +consts['VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD'] = 'VkStructureType' +enums['VkStructureType'] = ['VK_STRUCTURE_TYPE_APPLICATION_INFO', 'VK_STRUCTURE_TYPE_INSTANCE_CREATE_INFO', 'VK_STRUCTURE_TYPE_DEVICE_QUEUE_CREATE_INFO', 'VK_STRUCTURE_TYPE_DEVICE_CREATE_INFO', 'VK_STRUCTURE_TYPE_SUBMIT_INFO', 'VK_STRUCTURE_TYPE_MEMORY_ALLOCATE_INFO', 'VK_STRUCTURE_TYPE_MAPPED_MEMORY_RANGE', 'VK_STRUCTURE_TYPE_BIND_SPARSE_INFO', 'VK_STRUCTURE_TYPE_FENCE_CREATE_INFO', 'VK_STRUCTURE_TYPE_SEMAPHORE_CREATE_INFO', 'VK_STRUCTURE_TYPE_EVENT_CREATE_INFO', 'VK_STRUCTURE_TYPE_QUERY_POOL_CREATE_INFO', 'VK_STRUCTURE_TYPE_BUFFER_CREATE_INFO', 'VK_STRUCTURE_TYPE_BUFFER_VIEW_CREATE_INFO', 'VK_STRUCTURE_TYPE_IMAGE_CREATE_INFO', 'VK_STRUCTURE_TYPE_IMAGE_VIEW_CREATE_INFO', 'VK_STRUCTURE_TYPE_SHADER_MODULE_CREATE_INFO', 'VK_STRUCTURE_TYPE_PIPELINE_CACHE_CREATE_INFO', 'VK_STRUCTURE_TYPE_PIPELINE_SHADER_STAGE_CREATE_INFO', 'VK_STRUCTURE_TYPE_PIPELINE_VERTEX_INPUT_STATE_CREATE_INFO', 'VK_STRUCTURE_TYPE_PIPELINE_INPUT_ASSEMBLY_STATE_CREATE_INFO', 'VK_STRUCTURE_TYPE_PIPELINE_TESSELLATION_STATE_CREATE_INFO', 'VK_STRUCTURE_TYPE_PIPELINE_VIEWPORT_STATE_CREATE_INFO', 'VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_CREATE_INFO', 'VK_STRUCTURE_TYPE_PIPELINE_MULTISAMPLE_STATE_CREATE_INFO', 'VK_STRUCTURE_TYPE_PIPELINE_DEPTH_STENCIL_STATE_CREATE_INFO', 'VK_STRUCTURE_TYPE_PIPELINE_COLOR_BLEND_STATE_CREATE_INFO', 'VK_STRUCTURE_TYPE_PIPELINE_DYNAMIC_STATE_CREATE_INFO', 'VK_STRUCTURE_TYPE_GRAPHICS_PIPELINE_CREATE_INFO', 'VK_STRUCTURE_TYPE_COMPUTE_PIPELINE_CREATE_INFO', 'VK_STRUCTURE_TYPE_PIPELINE_LAYOUT_CREATE_INFO', 'VK_STRUCTURE_TYPE_SAMPLER_CREATE_INFO', 'VK_STRUCTURE_TYPE_DESCRIPTOR_SET_LAYOUT_CREATE_INFO', 'VK_STRUCTURE_TYPE_DESCRIPTOR_POOL_CREATE_INFO', 'VK_STRUCTURE_TYPE_DESCRIPTOR_SET_ALLOCATE_INFO', 'VK_STRUCTURE_TYPE_WRITE_DESCRIPTOR_SET', 'VK_STRUCTURE_TYPE_COPY_DESCRIPTOR_SET', 'VK_STRUCTURE_TYPE_FRAMEBUFFER_CREATE_INFO', 'VK_STRUCTURE_TYPE_RENDER_PASS_CREATE_INFO', 'VK_STRUCTURE_TYPE_COMMAND_POOL_CREATE_INFO', 'VK_STRUCTURE_TYPE_COMMAND_BUFFER_ALLOCATE_INFO', 'VK_STRUCTURE_TYPE_COMMAND_BUFFER_INHERITANCE_INFO', 'VK_STRUCTURE_TYPE_COMMAND_BUFFER_BEGIN_INFO', 'VK_STRUCTURE_TYPE_RENDER_PASS_BEGIN_INFO', 'VK_STRUCTURE_TYPE_BUFFER_MEMORY_BARRIER', 'VK_STRUCTURE_TYPE_IMAGE_MEMORY_BARRIER', 'VK_STRUCTURE_TYPE_MEMORY_BARRIER', 'VK_STRUCTURE_TYPE_LOADER_INSTANCE_CREATE_INFO', 'VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO', 'VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR', 'VK_STRUCTURE_TYPE_PRESENT_INFO_KHR', 'VK_STRUCTURE_TYPE_DISPLAY_MODE_CREATE_INFO_KHR', 'VK_STRUCTURE_TYPE_DISPLAY_SURFACE_CREATE_INFO_KHR', 'VK_STRUCTURE_TYPE_DISPLAY_PRESENT_INFO_KHR', 'VK_STRUCTURE_TYPE_XLIB_SURFACE_CREATE_INFO_KHR', 'VK_STRUCTURE_TYPE_XCB_SURFACE_CREATE_INFO_KHR', 'VK_STRUCTURE_TYPE_WAYLAND_SURFACE_CREATE_INFO_KHR', 'VK_STRUCTURE_TYPE_MIR_SURFACE_CREATE_INFO_KHR', 'VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR', 'VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR', 'VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT', 'VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD'] # Unprocessed type: void # Unprocessed type: uint32_t # Unprocessed type: VkFlags category: basetype @@ -988,7 +989,7 @@ protos['vkCmdCopyBuffer'] = ['commandBuffer', 'srcBuffer', 'dstBuffer', 'region structs['VkImageSubresourceLayers'] = ['aspectMask', 'mipLevel', 'baseArrayLayer', 'layerCount'] structs['VkImageCopy'] = ['srcSubresource', 'srcOffset', 'dstSubresource', 'dstOffset', 'extent'] protos['vkCmdCopyImage'] = ['commandBuffer', 'srcImage', 'srcImageLayout', 'dstImage', 'dstImageLayout', 'regionCount', 'pRegions'] -structs['VkImageBlit'] = ['srcSubresource', 'srcOffsets[2]', 'dstSubresource', 'dstOffsets[2]'] +structs['VkImageBlit'] = ['srcSubresource', 'srcOffsets', 'dstSubresource', 'dstOffsets'] protos['vkCmdBlitImage'] = ['commandBuffer', 'srcImage', 'srcImageLayout', 'dstImage', 'dstImageLayout', 'regionCount', 'pRegions', 'filter'] structs['VkBufferImageCopy'] = ['bufferOffset', 'bufferRowLength', 'bufferImageHeight', 'imageSubresource', 'imageOffset', 'imageExtent'] protos['vkCmdCopyBufferToImage'] = ['commandBuffer', 'srcBuffer', 'dstImage', 'dstImageLayout', 'regionCount', 'pRegions'] diff --git a/doc/specs/vulkan/vkspec.txt b/doc/specs/vulkan/vkspec.txt index 70d7dbc8..f4de8be6 100644 --- a/doc/specs/vulkan/vkspec.txt +++ b/doc/specs/vulkan/vkspec.txt @@ -3,7 +3,7 @@ include::specversion.txt[] -= {apiname} {apirevision} - A Specification += Vulkan {apirevision} - A Specification The Khronos Vulkan Working Group :icons: :toc2: diff --git a/src/spec/generator.py b/src/spec/generator.py index 00a274be..c9b09b0a 100644 --- a/src/spec/generator.py +++ b/src/spec/generator.py @@ -1745,11 +1745,14 @@ class ValidityOutputGenerator(OutputGenerator): asciidoc += self.makeParameterName(paramname.text) validextensionstructs = param.attrib.get('validextensionstructs') - if validextensionstructs is None: - asciidoc += ' must: be `NULL`' - else: - extensionstructs = validextensionstructs.split(',') - asciidoc += ' must: point to one of ' + extensionstructs[:-1].join(', ') + ' or ' + extensionstructs[-1] + 'if the extension that introduced them is enabled ' + asciidoc += ' must: be `NULL`' + if validextensionstructs is not None: + extensionstructs = ['slink:' + x for x in validextensionstructs.split(',')] + asciidoc += ', or a pointer to a valid instance of ' + if len(extensionstructs) == 1: + asciidoc += validextensionstructs + else: + asciidoc += (', ').join(extensionstructs[:-1]) + ' or ' + extensionstructs[-1] asciidoc += '\n' diff --git a/src/spec/readme.pdf b/src/spec/readme.pdf index 1353273e..14f8f22e 100644 --- a/src/spec/readme.pdf +++ b/src/spec/readme.pdf @@ -640,14 +640,17 @@ endobj /ProcSet [ /PDF /Text ] >> endobj 398 0 obj << -/Length 1388 +/Length 1387 /Filter /FlateDecode >> stream xÚåšMoÛF†ïþ7—”pØþ._ ÞÉ<ˆã‚˜b@ÖÃ0DGé,Ý\g›4é‰R‚=ˆÒS~'Ï)ú´Èø—Íê~½òÿÒþO>`ˆ’¢à£ü· ˜,“å·$íLäZõ Ôª_ѤV¡‰yužÆ=÷\·Ö§Ô€IÂŒ­FQï!±zÀ©ÆŒG¢H•‰‹r°€WpõÈøÂMõ „œl&·–P0U\Ÿg˜ãÅÃýÍ"ÃÜЩ>¡°Û&¥óïnÕ}öÜHÎŒ¨6ý)`GE Üy@[ÃL‘mê:8ʺhañ`*è-´¤Sb$1!$WÿxQÿ. -VÙ_e’/Š ¡j -]Ôë€b˜¤!¨ƒ:§äÚÕËËLJdUùqÑT ‘¬ÅÑÐ.GƒÅO¨I“…F²“›Ç€bÛÊ4h¿SXÇ¢e]eðÛ‡õõßÝÒ5dðÒ¶ž»V´ÝBòÞ4g&Öé!Y"5¯m"+{è 'R6í¨a­-þ°:h¹Ìÿ8ˆê‰$»V¸ s¨ܶl×Ìf §Ë¶žî(1Î9äéÎx6LwÝ9Ns„XMM®6Ù3$£Šñx÷” ;K¡«qb_%Áý4S2-|Ș̎Ls?Û˜¬ qML‹¼*‚Ä®0¿×§Õæ©—õ'Pîþ¥Ùä—hÒgnZYÿDZI÷éæ8m N¡r„@«›Øç¼íÑIt¬(™"€b ©2Ou¸(‡ñTrÚB=+£"F«@ˆàïõn½\.V7½mÖ)N_æ×~y£È=½"CÐážšd¨xÅñóH†ÛØ7šÇãF…Š ´QPz°‡¢´òDU' 1<,¬¢º=Ïl-Ò†` žÊ‡æ½•†e™íU¦aCƒy°WRZc†w᧩V¼v½!BŒ¿€Ö[_ fªµN¶¶ØB-LyÉs§¼=¦ëlí…Ý}&¾…íë<_ÕÏrû)¿F·7=Œ—nlWãè¯éÁAÌÎÄb>lÈ~d]ˆè×…l È<ÁÚ6”H£cÇO@Ëî¡5¯#Mb^¤‹e’íy\¸ZÊ¢nÕ1KiŽ—£j3'Vë:ÇÑbîobV½Ä¬v.æ!ì&$f5PÌÒ‹ùÐ}{ý…®<ëSbjNM·ò¤D[Vã©<Ï3q5'~Ÿ1ÙóÅ÷N•ìÞlÔN‚&(BùÿNƒžÂ; ºŸ£Å„¦Ž–û{mßE~ï‚.Yd›t&.‹Ëø<<7IŸ0÷L{͇V%èÛü’I«û5ýݯÀ‡{®¹_÷ã…ZãcÍo°‰“5¿º—ù}Áz°ùt²æ× 1¿¼4¿‡–Ø!T1á[uJP·pÁ…™~Ž 1E¶«>Š¾¼:û¡ŒN +Z'—¤Ŧ]£–dÐTPÿûÎrIY\~ˆÝFTNl.©}4ï̼CÒè.¢Ñ‡3Zß^½y/Xd‰ULEW·pN´2‘’š0.£«›èK¬gs ”ÆÍ™¤qöü˜<ù_©¤³?¯~Ãë˜ë(F$.§þçù‚_Šóvï'á\”çe‹;¼¸óÎÿH£ô.ò~ÿp}™3PTÇ&?¡Ü^‘î\qnX&£9àQ–; àö€ß÷"ËÒûo3FãMVîa}Û°-‰Õ”ؽ7„Kµ³¼¦Ò*&³¹DdGyإ׌ÙýÚUÊåÑq„Q³ð»õ*KVY'Z ŠÁAh¹¤GvaÛBØhB¯ÎcÆ—«Í2IYrS“ã¼7àuÌVc׸în>7—”pØþ._ ÞÉ<ˆã‚˜b@ÖÃ0DGé,Ý\g›4é‰R‚=ˆÒS~'Ï)ú´Èø—Íê~½òÿÒþO>`ˆ’¢à£ü· ˜,“å·$íLäZõ Ôª_ѤV¡‰yužÆ=÷\·Ö§Ô€IÂŒ­FQï!±zÀ©ÆŒG¢H•‰‹r°€WpõÈøÂMõ „<æLî< -À¬%L•×çfäxñp³È09tÊO(lǶYéü»[uŸ=7¢³CªM€ +Ø„°Ud›»³.ZX=˜ +š -§Z 1!$WyQ/ +VÙ_e–/ª ¡j +mÔë€b˜¥!(„:§äúÕËËLJdUùqÑT ‘¬ÅÒÐ.KƒÕO¨I“…F²•›Ç€bßÊ4h¿SxÇ¢g]eðÛ‡õõßÝÒudðÒ·ž»^´ÝCòÞ4g&Öi"Y"5¯í"+{è 'R6í¨a­=þ°:è¹Ì9ˆê‰$»V¸ s¨ܶl×Ìf §Ë¶žî(1Î:äéÎx6LwÝ9Ns„XMM®6 Ù3%£Šñx÷˜ ;K¡«qb_%Áý4c2-|Ȝ̎Ls?Ûœ¬ qML‹¼*‚Ä®0¿×§Õæ©œ—õ'Pöþ¥Ùä—hÒgîZYÿDZI÷éæXm N¡r„@«›Øg½íÑIt¬(™"€b ©2Ou¸(‡ñTrÚB=+£"F«@ˆàïõn½\.V7½mÖ)N_×~y£È=½"CÐážšd¨xÅñóH†ÛØ7šÇãF…Š ´QPz°‡¢´òDU' 1<,¬¢º=m-Ò†` žÊ§æ½•†e™íU¦aCƒy°WRZc†w᧩V¼v½!BŒ¿€Ö[_ fªµN¶¶ØB-LyÉs§¼=¦ëlí…Ý}&¾…íë<_ÕÏrû)¿F·7=Œ—nlWãè¯éÁAÌÎÄb>lÈ~d]ˆè×…l È<ÁÚ6”H£cǧ£eÕú Ecͬ#Mb^¤‹e’íy^¸ZÊ¢nÕ1Ki&È‘sbµ®s-æþø¦!fÕKÌj‡àábÂî„Å,½˜}з×_èʳ>%¦æÔt+OJ´e5žÊóü8Wsâ÷“=_lp/¥QÉ^áÍAí$h‚"”ÿ÷ï4è)¼Ó û9ZLhXàh¹¿×öeä÷.è’E¶Ig`Ⲹ¼ñ‡Ï3Às“ô ãqÏ´—Ñ|hU‚¾Í/™´º_Óßý +üw¸çšûu?^¨5>Öü›8Yó«{™ß¬›ß@'k~ÍóËKó{h‰B¾U§u ,Q˜éçØ Sd»ê£èË«³ƒŒ{ endstream endobj 397 0 obj << @@ -711,7 +714,7 @@ endobj /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [471.502 572.334 478.476 581.34] +/Rect [466.521 572.414 478.476 581.34] /A << /S /GoTo /D (section*.4) >> >> endobj 362 0 obj << @@ -953,19 +956,14 @@ endobj /ProcSet [ /PDF /Text ] >> endobj 425 0 obj << -/Length 1846 +/Length 1844 /Filter /FlateDecode >> stream -xÚÝYYsÛ6~÷¯Ð#9Á¸IÎtÚq'MÇ™¤¶zÌ$} )Xâ˜"U>þ})J¢9Ic;/‚ ì‡Ýow!<šðèÍvíËÉÁákNGŠ$•£Éåˆ0†Ž¤eb4™Ž>z„ûc±wr[«¼J‹ÜS½—Y‘\U¶ÿ ìÿ3ù Ä…=qC‚G°–‘ó“jT?»ÉýµŽ(%íä:žP¢çèA<*g#Û9{s0ú8&<Š¸GB3£ÕDâžÈ1…Ђ"ÑéƒhÛ>ªë2½ð)öšZ9UŠËEB.v(‚7¡=E@2lÂCÆïßôÆRÏÛ€²m5ˆalH-ˆÇEhÔ;á#H®Žö à{ܾÅhÅ [‰Q¦0%¡ÃTصŽ>¼µ`v·ÛÍB‰—Ûðy™ å|/“Œ›Jmy‹ä›^&¾™— YÉ– Xòy[ È9Âa´å×ûÚ¾ 2ñø®ö°³ ¥ØÂ’Y,OnãÅ2S”¦ó!ÿ‚0†ƒ‡ÐW?ŒùcΟ<ùS¼mÉ€nЖ´k©›´ôIè©i‹¦ëœ©Eáì]ëŸöí[°åò2NÔnv#R"­è­4˨!rÑ°Ë7ôêâB$DOØ¢¸–…#ýs¬v3%¥˜x”ì$JHÄ1Ý°HùµD¹~("…Ap$x'$@!}$‹%÷¹}!F·Aþb -}LxC,Ÿ¼á(tðÊÞuV­Öiu£t8É›…*cs -aôôÉ‘íGŽEM-7˜#á*‡¶yíGàó>Þïk㿪¼±¯ -G–¿ìHÒ¢@ï’ïâžvsýS;ÒÄÒÐ{£r8ŽÌ®t^—q­|"¼Ù?ŽdðTÒÿùù°Áãu"9Ò<¢1ë’ô×*®›Òå¯ÔRåS•'©>쀑JÁÎù<Ú¨¢à>€þòCÈ ²«z^ÍlS9{.8ˆ{(qfí¼™ŠÖ›'Z{çÑGS—Ùæ¸X,ÓL'>^ºPíh^ÕÀ”PÝ|ß,rOL¢=½†? `¡&©])mûGÞEóéÝRéz%zê†Ãðn::{ƒ´Hë6¥^Á£虸#{š@§¾ß™¦ú`ýqb£{BX¨Þ¥Z‘K–&+KéØùL-KUAF×ö¢Iü jÎöÔ<ü¬æï›zÙÔm -iNQ.â¶8j+Ö÷õ\9Ú9óYÏt@g˜<¦r‘K=¦ÓTV—±)°õ:MzÏfin®‚gmðû"C0@s^Çi–Öwëõ¦íüýîÔ%j1ÌŒ+µqQqžÌLÈÜDø$ôç¯<Ü­ÌK°Ƽã9X¯Óò´˜í¸¿!› š…@:ã’ê•wÆ 8æ®ìóÇcs“cî}Š)Äl£·‹[lÒ$*]]4ѤôJ[i¤U]ÞÙ‘¦2ž½8·­94;¹ÏUvL±nëVâŸ~ ¼&»j¿¦{á¦3eÝZ?ݤõÜ­c›JÕHP`ÓÈ>ÜÕs»(õª¤L—uet Ò-8aºl2]<Ùñ¹ëlêH½"OÜ»¬ˆ§jŠlz7i¿X“_ª¬ûlCrv»Èví•Bô»Hó)pAeŸLÀŒ˜·ŒKcü0d:ÅÒäîÁ}à#Û3I|j}(Ò»´Î²&äZGç8K§qmò6½fl¬ÀÚkÜ2uš'YcÀÐ³Ö -Vѳ*Ùje觕mµ7ë=H{¡;Òs—ivB^¸N -Ð¥¡Ox4ÀWµO¼y\Û‡Æ cÞ¥QCÏkW#ÔJ^§ESé£1cÍE–Vsen€VÙßý{( ßœêqîlÿäܶC=о±Q:=‚ÊéHzoõ^¡|ºÑ÷qegš‰úºeªœ4£Ÿ‘á¼Ç­¶Š"ýSqÉh Y¤V¸mš‰6[c–zØÁ)½\)» :°´;ƾ` ”8wçQ5ÉÜ ­ÜˆÉómyØ_KµWDvÜlçÅ ù¸È}£2Û‘x#L¶*õâ -VU¶ùAš_šŒ «5ª¥JÒOÓd=ç\Íg,–Ól¦HTeŒŠCœ:¶£sÞ_Ú!½Bæf'E Gµ,ŒçÚ×zUýªn%®³Šž¢=Á|=WÉU{Ó®ÒÜNhr½Úöå ¹VerxmÔs šð:! ‰ û u7éVµâݤ1 ‘èþ6@møhƒ®I×æEªÿŒ $D2ìSå'KK}6JÛYÕtg-l5ËØKÔú5ŒX?º³S[fÀÙŽ9_st¼ Ô,_ú{:°`Çåª =£T`Îù©<Ìã…5Ö4…‘ -£`„•vÁVoúþã µ¸hgÑ–:™7U:b\(÷QšÛv‘ÞjQÓñ¢˜*;¦ÿ‘ê‡ø‘búo2†'Änu=ï:™ü?eÃ] +xÚÝYYsÛ6~÷¯Ð#9Á¸IÎtÚq'MÇ™¤¶zÌ$} )Xâ˜"U>þ})J¢9Ic;/‚ ì‡Ýow!<šðèÍvíËÉÁákNGŠ$•£Éåˆ0†Ž¤eb4™Ž>z„ûc±wr[«¼J‹ÜS½—Y‘\U¶ÿ ìÿ3ù Ä…=qC‚G°–‘ó“jT?»ÉýµŽ(%íä:žP¢çèA<*g#Û9{s0ú8&<Š¸G"3£ÕDâžÈ1…Ђ"ÑéƒhÛ>ªë2½ð)öšZ9UŠËEB.v(‚7¡=E@2lÂCÆïßôÆRÏÛ€²m5ˆalH-ˆÇEhÔ;á#H®Žö à{ܾ!Š¶>&£ L)`JB‡©°k}xkÁìëe,B’oz™øf^6d%[z€`Èçm%€ ç‡Ñ”_ïkû‚ÈÄã»Úƒ°¤ø>,Á,C)¶°dË“Ûx±ÌT¥iã|È¿ Œáà!ôÕcþ˜sùLAÜ¢­€"Ð Ú’v­3õo“–> =5mÑt3µ(|‚½kýÓ¾} ¶\^ƉÚÍnDJD¢½•f5DnB"vù†^}@\ˆ„è [×ò0b¤ŽÕn¦¤’DI‰8¦)¿–(7ÁED¢0îï„è"¤d±ä>·"Äè6È_L¡ oˆå“ƒW …^ÙÁ»ÎªÕ:­n”'y³PelN!Œž>9²ýÈ‘£¢©åÆÀsäƒ Ü@åÐ6¯ý|ÞçÂû}müWC•7öáUáÈò—IZè]Š]ÜÓn®jGšxBzoTÇ‘Ù•Îë2®•O„7»óÇ‘ žJ:ð?²6x¼N$GšG4f]’þZÅuSº<â•Zª|ªò$Õ‡0ò#C)Ø9ß‚GUÜÐ_~yAvUÏË¢™Ía*gÏy%Á¬€7SÑzóDkï<úhêò #Û‹eš©ñÄgÂKªÍ«˜ª›ï›Eî‡ Ã{z  ÀBMR»(RÚö¼‹ æÓ»¥ÒõJôÔ ‡‘Ý ut,öi=ÖmJ½‚…GÑ3q+F÷4!9€N}¿3-LõÁ"úãÄ(Æö„*°P½+Jµ"—,MV–Ò±ó™Z–ª‚Œ8®íE“ øÔœï©yøYÍß7õ²©Û Òœ¢\Äm=pÔV¬ïë¹r´sç³&žé€Î0yLå"—zL§©>¬.cS`ëušô8 žÍÒÜ\=ÏÚà÷E†`8€æ¼Ž/Ò,­ïÖë8LÛùûÝ©KÔb˜Wjã¢â<™˜¹‰ðIè/^y¸[™—`+ŒyÇs°^§åi1Ûq!C,64 tÆ%Õ+îŒAqÌ]Ùç Ææ&ÇÜûSˆÙ:Fo·Ø¤ITººh¢„I镶ÒH«º¼³#Me< zqn[shvrŸ«ì˜>bÝÖ­Ä?ý@xMvÕ~ L÷ÂM)fʺµ~ºIë¹[Ç6•ª;‘ À¦‘}¸«çvQêUI™.ëÊ>è¤[pÂtÙdºx²ãs×ÙÔ‘zEž¸wYOÕÙônÒ~±&¿TY÷Ù†äìv‘íÚ+…èw‘æSà‚Ê>™€1o—ÆøaÈ?tŠ¥É%܃ûÀG¶g’øÔúP¤wieMȵŽÎq–NãÚämzÍØX€?´×¸eê4O²Æ€¡g­¬¢g5T²ÕÊÐO+ÛjoÖ{öþBw¤ç.Ó센p +4 KCŸðh ¯jŸxó¸¶ƼK£†ž×®F¨•¼N‹¦ÒGcÆš‹,­æÊÜ­<²¿û÷P¾9Õ;ãÜ=Øþɹm-†z }c£4tz&•%Ò‘(ôÞê½Bùt£ï âÊÎ4õuËT9iF?#Ãy[mEú§â’ѲH¬pÛ4m¶Æ,õ°ƒSz¹Rv-t`iw,Œ}Á(qîΣj’¹Z¹“çÛò°¿–j¯ˆì¸Ù΋Aóq‘ûFe.¶#ñF˜lUêÅ…¬ªlóƒ4¿4AWkTK•¤Ÿ0¦Ézι"šÏX,§ØL‘¨Ê‡8ulGç +¼¿´Cz…ÌÍNŠŽjYϵ¯õªúUÝJ\g=E{‚ùz®’«ö¦]¤¹Ðäzµí+ÊAs­ÊäðÚ¨ç4àuBA÷ênÒ­(jÅ»Ic"Ñým€ÚðÑ]“®Í‹Tÿ#0AHˆdاËO––úl”:¶³6ªéÎZØj>0–±—¨õk±~tg¦¶Ì€³s¾æèx¨X¾ô9öt`Á ŽËUzF©Àœó!S5x˜Ç k†-i +#FÁ+í(‚­ÞôýÆjqÑ΢-u2oªtĸPî£4·í"½Õ6¢¦ãE1UvLÿ#Õñ#"#Äôßd #NˆÝêz¡q29øÊÃ[ endstream endobj 424 0 obj << @@ -987,7 +985,7 @@ endobj /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [466.521 644.145 478.476 653.071] +/Rect [466.521 644.065 478.476 653.071] /A << /S /GoTo /D (subsection.14.1) >> >> endobj 401 0 obj << @@ -1015,7 +1013,7 @@ endobj /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [466.521 586.281 478.476 595.288] +/Rect [466.521 586.361 478.476 595.288] /A << /S /GoTo /D (subsection.15.2) >> >> endobj 405 0 obj << @@ -1057,21 +1055,21 @@ endobj /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [466.521 494.844 478.476 503.701] +/Rect [466.521 494.78 478.476 503.701] /A << /S /GoTo /D (appendix.A) >> >> endobj 411 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [466.521 482.889 478.476 491.676] +/Rect [466.521 482.75 478.476 491.676] /A << /S /GoTo /D (subsection.A.1) >> >> endobj 412 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [466.521 470.934 478.476 479.721] +/Rect [466.521 470.795 478.476 479.721] /A << /S /GoTo /D (subsection.A.2) >> >> endobj 413 0 obj << @@ -1085,7 +1083,7 @@ endobj /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [466.521 446.805 478.476 455.811] +/Rect [466.521 446.884 478.476 455.811] /A << /S /GoTo /D (subsection.A.3) >> >> endobj 415 0 obj << @@ -1433,19 +1431,39 @@ endobj /ProcSet [ /PDF /Text ] >> endobj 461 0 obj << -/Length 2192 +<<<<<<< HEAD +/Length 2179 /Filter /FlateDecode >> stream -xÚ¥Xmܸ þ¾¿b>Ð £èÝv¸ns×´Áh·‡ÉáàõhgÝóØs¶'Éô×—å·‰&Y¤Ÿ$ËIQäCR|µ_ñÕ7<Œº»yþƒ–+!XfŒ\Ý=¬„R,±éÊš„IeVw»Õ»5L7[Á9_ß6uïê¾Ûl¥áëæaóËÝ_E:g‘¦Ìš ø½/ûóѽ -t QÚ2.Ó®Ï÷] â«ŒeVZ$Ú -¥™M˜Û”hï)ða#Í:¯Ê} ívîèêð§©iìaç ò$eH˜UŠ¼wû¦=GÔ1œ)!¼ïÛò~#ùúÔ;6žq®}ª™Q ½´ÌÈÉœLƒ¾®OׂÀ (Z+è¿i* Ë´¹¢©¼ªé{)µQ8F­l-“Æ.¬üæô×l&%Ë2ù“i˜ -9»fâú˜w{? —yŠI³ SR Lð$IR¤ñÈÏk:±GËÒ¬ ’snaà™gŠ7Q65ƒ•, n÷ÍîL³fi4œfB¥0ñŽ=?¤$ Ç}Ý´tÅðá}Q®ûX?…vàA[%ÔàÝbfÿéeÃxŇ8}2Ú¹Î.f"Ëôt ÿ%æ‡S×Óì>¬Ûf#ÌúC¹STI"öfÜ-ÕK3ò¾x„3)sEg­˜äæk*C¸qEeävQÊÂu~.Á–L›_âw¯bNj„êÂI‘õ{nxçñï\λo%_µûMþñãÍêß‘úßÀbäq#àbµt±H\­î‰ñxÏ]ð©D0•‰¥1wî=ç²pâcÙ?–_µD3­ŸprÍ”Zžyæm€ØS7BSCãÞÕ±! ·Q°’ÌdÉ×¢\’W¢ÔÃwQåC­Ã'Æ×i|ìâÄ徇ÿt¿XÖ»²¥²cåz&Òuj¶D=XÉ=RrÌ‚9ÕýüB?ï’.Vbá£êSUm{×ÊÕ¦êJÛ V&}‚€oØ gŸí-ÖHŠÊÇ°Zö@Ïîèë?!KR9ÄǦLji -âë؈Î^ `ê-‹ó°»C£ RY2ô -Ý律ø…rš¾Íï6 _»ã§Æ&è1ìÀ”òé•F7îÛ¹ª<”£Üûs$àø½+0Á'äúâÝwOð)c*(Z>+M èCø»_"l‚‰ ûbä -¡öÿ]÷ ¬]w纈%;¨E°ˆªà¤SyFþè— ]gn‹‹Ýcsªv´Ž¡Škt(5¯ Ò#:ÿØ6uùßà*Û zá0]À×¼(à.‡ö£ÇŸ7‰YŸªßòúËpçÏÿí&»¨$.©eæjSPËL…2—ço ð£ð ið¿ï¤Ç)\<ÓâT†Bã³” ¥o6^ÙOÿzû6Þø¥ÒÌr5§BcˆÞmBh@Äå%„Ø|Ï×™Ùþü·_Qü¯ùþ§?¿}Ñ"µLL±0iað‰ªÞU®£*bžcyhíæÄ÷eȻߺçS3å7~9p¬¯kÈ ì7xAÝ䧾JÅøñä 6njsÂsiºFF+eADcYˆ|=Á¼(LÀA(oÁtxØÝ5«-É^¾Œù[,ö>i PîøD’éõßk F$èNG•¾mD[ìÑJ,§ -"Z*‰d[úyNFÝ|–]w¹¾`±D0¾xt}YU¡°ÍXaíâÐKðdYÞÎÞÇ“äJý$,åÓê'³x“êâý£˜Êz:É}À7ü‚Ü_¹ÃB+?ÆÞË ƒ"ô)Åî¥rX¥Ú¿K‘ÐÜåyÜ ±,ÙØ~Ùy‡„­;®xÇÜŽe7¨ë‡jêÌÿ[fïE—çôCx¹ðºù …µ¡X†é¼XöEÛð#ßwdeÈós̉°ÊÇw¹|2^åy¢‹ú‘˧B|/PÐKo¡¹Ã×?Ï/[м¾»ùiå•& +xÚ¥XmÛ6þ¾¿Â +Ôb†ï’zA€6—öz¤@o¯8 ) +­Íµu•%W”“ø~}g8Ô›WÞ,ÒO¤(’3>óÌ ùb·à‹nxl¿»½yþ½– !XfŒ\ÜÞ/„R,±éš„Ie·ÛÅ»%tWkÁ9_¾ª«ÖU­_­¥áËú~õëí?a‹t¼Eš2k2Ö¾hÏG÷2ΛˆÒ–q™vóÚ|çã,¾ÈXf¥ÅIk¡4³iØ6¥¹·{G +|XI³ÌËbKŸ›‰v[wtUüSWÔ¶°²Sy‚2$t£*›¼u»º9Ϩc8SBtó¶mŠ»•äËSëXƱö©fFöÒ2#s2 úº:\£¢h­¨ÿzNSaX¦ÍMåUMßK©ˆÂvÖÊÖ2iìÄÊ?ÞƒâšÍ¤dY&Ÿ`2 ]!G×L»îs?l:ñ2OsÒl”TÝ&x’IR¤þÈÏp×tØ-K½"JΩy ϦxE]1É’3˜qWoÏÔ«§6AÃi&T +ìñ! IØ¡+†€E¹lWb¹§ èAk%T‡n12Hø ²¡½‚áNŸôv®òƒ›3‘ez¸Œ ~ióÃÉ·Ô»‹#Ǧ^ ³üPl»ääU’&3HpKõÔ ‡¼ÝìáLÊ\ÑY+&¹ùœÊà.F\Q÷F»(eá:J0†%ÃâxÇþåH W€·~Ï ÷ÎÑþÞm¸ú·ä‹f· ÎÏ?Ü,Þ…iøÝ,z7.ÖXK‹“"Ôª–6îïÙGL%‚©LL¹uï9—UÇ‹v_PûÂÓHNÍ+õñÒ#=KeY*’©+áÕ¨,% P€ÒËÆù#ú7Zâò+Ï+k–ຠ0Ý-ia+HØaí5r-b?Ïnir•Ý@2ʾ‹#cBŽFÆC\ʦÕÅÁ‡üH¥Ë°WßÆ•œÍâ.®}¸u‚XÙ#t¨ñ®)\¸¯lœ4Ž@Ø·=S¼8¸Ãk^ÎcÚr3Iƒ„HEµ:´•ïà Áa*ØAˆ¸ó‚ÝôïV`Ú6Ž¢ÀÜJÚÁqEÝl]³Ò|ÆÍò¾.Ëô9gÜã–ÝŠ#òY^Î&T ËT—0¯-Úóœ¬d©Í¦f˜YlJH*N[48ã,{Ñ#Iæ~SÛzs‘Cª¥±2¯v§|Yó¾ã²¶Ë»/›äÝs<ÍpëLCp ²/HY«î†¨wÆ6PRpc®Àc,Mƒ; ”‡±—ö½R]ÑÃîvÞ33ú)Є¬ž«É¥ è.pû¨ ÚPË,2¡÷ÒmiÉô…ÏÞ読qĽ¸ƒîŽˆVC7Ö ‹Í^Ì8r~;¦ž‡õÝ蘖%Yò„»˜ÆÈîúÜèù÷Bã`æ³èš0ÖUJï¹H.MtÁ^oñà0î у Èú]ÿ¬«Ë‚Þú‰øà)…(¨?OŸÈÄAœ"v\*:øOç ƒEµ-*Žq¿A~DW5¨ÙÐìòi„|J°C-ùÏ¿Á.Vbú¬ªSY®[׊ +Õ¦ +¤¨V&ƒ dØpöÑJ1ÌÅꧢ² +ê0Z´_#?zúú_̵ȧ`ò±. ²54† ÕÐŒÎA )ð|°,öãjFA¥ ?ë¦!*°uœbØÅ/”S÷M~»ÿsÿÅO¥ô>®ÀÄäÓœ×÷붮,E/wÖM/.ÁŸp×oÞ}5ƒ÷Ćw +P\H]{¿ÿê×9ª%‰q +{Ôs…PŒ~øR×Eîo*®6s)TYÆŽzñÔ™(3¦¼L¡ÚáÙ*°|S=„½51ýt4² Ô@làM5`”:qðLƒC5“ÖéW6~DèÀÃG„TêQÞÇ)ií|xéŠYa.bPôÐgó¹_&züò¯ßPüoÿøöíßß¼žÑ"µL$ÉC- >wVÛÒyÊHÇùÏãÉwE{ÈýïþùP˜‡…» 9ò—c¡ªóS[weÇüñF/qˆƒÕ¨jæøöž.q'`—bC“ú” +7#ã +K[ +_ð£{]ÚÒŸ{zIX¬£ð‰QŦ &—»Ï´Jw|pËôò'Êé`‚?e†”'NZcÅ_`r¾¡IS-qÚš~@¼„£Qm Ÿ…÷§n#×nØ\@èßÏ|[”e,“ò#f]Û).„ÖLÒ ˜:.Ï&S^ßÞü uq +======= +/Length 2224 +/Filter /FlateDecode +>> +stream +xÚµX[¯ÛÆ~?¿B,Özï$Ã@â:iZÃÚÓ €<ÔJbC‘ +/¶Õ_ß™åM¦ìƒyÚ ggfçòÍ,ùê°â«îx¿»¿{ö½–+!XbŒ\ÝïWB)ÙxeMĤ2«ûÝêí¦›­àœ¯_VeëʶÙl¥áëj¿ùùþoÀ"ž²ˆcfMüÙçíåì^º™(m—qOצ‡&PñUÂ+-m…ÒÌÆL€mL´÷GG +¼ßH³N‹|GËl¦ÝÎ]¾T%-œìU…  Ó J–¶îPÕ—u gJˆž0mÛ:ØH¾îZdž;Nµ53 +´—–9š“‰`ÐWewr5 Š¢µ‚þÛ%M…a‰674•75}'¥v +ÇE+[ˤ±3+ÿ¸=Ä-›IÉ’D>Âd¦BNÜL\i3²÷“àÌnIš˜’ªg‚7Y$H®ü¹Æ#{´,Íò 9¥á% <ñLÑyU2ØI¢f@ñPí.4«æ6AÃi&T ØÓKA’p<”UM.†…E¹n7b}$ + l ‚¶J¨>ºÅÄ ~éeÃx#†#¸}4عLOnÉD–éѳø%槮iiövÎuµfý>ßõH)«${3Háë¹Ni›áNÊÜÐY+&¹ù’Ê.FÜPy£]”²àÎO%âñðsôqób)H ƒT)²~Ç oœ#þË08ðô²ä«ú°¢É?¸[½õ'bÿ¹X̸(d©‡ï¬Hû|\€V *‚€'hµ#´öµê_mÝemWoÜãЕ+fbñ»ÐµñÒ<¾RÅ©iÄ®„KÜ„^£X Hz ½*º•êpa)S¬F̃˜zäU‘$hÄy^ÇQÄì tÍa*aƹ ·_Š(Ccಠ‹ãx‚âšOT¥ø@íó†vR^ÒnœàY*ËbÍS ]£’˜4@J¯kל1¿Ñïï\qÙX³†Ôé~,éHë[Aq@Àögo›°hûet‹£›èrQöCØ™rÐÀ#2~ëR1­®.>öG*¦Z†ã²úÖ0®äbwåöÑëbq@?¡¡qu’iÓ8 2ˆ}; Åó“;=¸úÅrL[nfM£—à1/ã¥ü„X5}8h°ÆU™òv"Á¾àpýÁć ˜¶ »h0·’ÖWp9)FZì;‘•ÍŽa7oŸ`d7´úo¨’Ôñ¹Ê“jÚC‹ø>vAg¯‰°‡ õ–Åy8Ý QP)¨¬=FŽî·.&®PBJÓ×éý&âk÷\j|à ,)ÏÐi4ù+òS>È}¸,$Ÿ£w&øˆ\¿~ûÕB¼Gø+cl(Z>iM éRø«ŸØöÙÌB1.ìH]÷¬]6—2[*vÐ;É`-U!H=¦ò„âÑoºNÂ7›cÕ;ÚÇTÅ=rJM èôˆäëªÌÿBeDÏæÃÑ|M³ |Ù?0qüi™uWüš–Ÿ‡;ÿßo²«NâªG’vj0¥­Ï m§ÿpé3Z›õ¬Ç½îIدi|²ß`÷R4ý‡£töݬÁ+`ºcà7 ìfd‰Õ6è5³¦‡NéY@?Á`áM©¦nhh® Õ~ˆÑ7ÿ~ýzùy)£iGÀ©Aö“,ºTé"x ]ÖOÿEüò×oßüåõ«I±e\G‹’Ž‡…ó‚º[x¼šhžÙÞèQ´æ8Ø‘î=äí)m~mžoµðgÁÆIx/Fý3)í|è¡ÑCÉNT´Iõ6ªSÕ8úæÍO—°óÔm~.šÉ+Ö1•Güà.°qõpQ:™U4*š¤ŠæËÌ·ô‰4”I(0Š†ÐhÑßjAËI‘ó?b’õ›ª ÿt9hæí„¡X" ø?J{¼ÒÎ6a£k+€Þ<›ý¸ñm:mZ¸Ì)¼±€bKC€þ"Ïò…s<†R»SÚÿÝé” w;ö§âIYáåúGÇrxK3í£ &¨ÌAûxj%$š[ ¦Ï mGLû_K;¢ÛÓo„Õ–dÏ’…B ˃­¡)p'ôq¢×ÿ /AÓ}Ñ%È"¢-¾öslÌ3"ºr%méÄ'܌ޕ°Ì›¦ë¹6cKÞþ5m^ቔž±W¿râJhÍ´6/2`èp>™Ñ¼º¿û?Ÿhž¥ +>>>>>>> 1.0 endstream endobj 460 0 obj << @@ -1481,24 +1499,25 @@ endobj 90 0 obj << /D [460 0 R /XYZ 133.768 400.449 null] >> endobj -94 0 obj << -/D [460 0 R /XYZ 133.768 187.622 null] ->> endobj 459 0 obj << /Font << /F42 352 0 R /F48 355 0 R /F40 351 0 R /F14 432 0 R >> /ProcSet [ /PDF /Text ] >> endobj 465 0 obj << -/Length 2150 +/Length 2181 /Filter /FlateDecode >> stream -xÚ­X[¯Û¸~ϯ0°/63ERR±X lÚôù /Ý>Èm +K®.9=ýõáº8´cdû$‰¤†œÛ7ßoN¾ùÛ;~óüõå݇O‘Üd,ÓBo^Ž›H¦,‰ÄF«„‰Xm^ÊÍ?·¿ó(ÙýëåÓ>I¾ø ßb˜°‹_Î×Â’t)7a‰Ô~ÍÏÃÛÕüâ–-%Å)ƒÍݪ!?íöBèmÕã3ٶסj›¼f»}ÌÅöó@ÓEÛ yÕôô5˜]¤¶ÿè—×sUœ—Rô6§Ç×PÛ¼®JZˆ'¢‰&¿¸·c;6nºjð´›½R,Õz³"–)gž¼i‡³éZÇ‚I?£µŒ¢…ÚïaS•€`Ü])ؽ¬Š|0¨Ïù@ùòct~»Œý@c7rí *ûµjǾ~£¹ÒüιhŒÛáØv¤`ÂY˵‚ YÁýT¡p$ݶGg>¿¤h/:7Ì- öcQS:¿ý:VõP9gó;/÷çv¬ÙÁ²´ìàÄ¿vùõJ¶{­NI.º;΄Œžñ@¬’…zvð«,Ù«”)Áþ0&þYá/åtZŒÄ;§UQ²Nížù÷Xu¦Ä(J"Ez•'Z;ÁK?tc1|r*Œ\Ìå6†÷ÄgƒÆhªš“ËÍ´Uͯé¥é‹®: —éÄbi0!YÆ“Í>N˜L%ýñe— ›¹' FT<`™1™ÍnüŠUÃÛ/­TÆ’dB9\§†l)˜Nåàu÷¥8-ò&•ãh[Ù<±©Ø›Æ—ÏÁ>€Hj;ö†¬-D˜|:EÞpÜ ý&µ}!¡Oòorw.r»|„ã‚<g˜ìßQˆì)×h á½Ê²€E¢(õ‹~˾¿ÝÂI¤És¹Ý”t™“¿þkºßÐ:¹´](À™É"];ãç±ÏOÁT•°zÖ†€e/S}O1©Y¬gk>/¡5³ó°ÜV"¸ã(Â0Žvf -?Îi´¿š¢Â@,hx -C—–8Ö™=Åbk&¸Z«oáæBa*v©r/ËøƒO -ØëZQ¥íÕÐåÝ›ûì‹äMU¶…“6vørpƒäöÊÝŒƒ¿}¨Fà!ÐL ‡eÀ}X¼ÛGœóí_ëš²†Š¼}¥jõ­Wp·”é$#1Ÿ!飌[;bX0•)ïB,倫ø-š0%Ð{'øv‹Xùèu|¶&ªÎ,;1ÀËû%,ܽE)S|*eàµce bß‘ô=A“f¥9VMè@1’.õôŽcS\[L.„Š%J>¶•`Yª×õíÔµã5„WKÓôñá29¥ô‚¿6w(È\ÔÛ.Lf’Y’Ož€Ù#–Êx>TßÄ›Ž%À“¨¼LùŒáÛMSÎbù‡]A5䊒ק䋳Ô^àšä7¥î´C<¢ÌûH¢-ÍMËçÔ¤·ÒuÞYCâqj°þåoo½@{`úÀòX–ÆUUí¿±^›"ÅŠqØŸË!èYm(Ö&Ȳ¥Åí,}¯ÄWö,ÐVÑ0é4±[Ä)ån슑¦”É`î&üqÖ#˜š–Ûº&:¬M¶uÕö¦ISJhš÷¡fÀ›*‘tŒ$¶%>o #Ó¥ζ ÁµµúÂOö–+q¹EÒ|÷…Ó×±»¶½›ºÕ †ÔQµ0·ûC*³Ðñ±» ‹ºøÁÎoß`k¡2] -)žZ/,F7DºÆa½ŽÛW‡ÚxùöXZÍWF þX»hÔSu³Swô'úz§åÉLM@ǽVµçk£‡oÇÉÚqطǽˆrwE7Eõb·"gÉ»4[²8–‹›¦ÐÍU¼¤Å?ݦ€fÏwÀ%ð/¨5s¬Øâõ°¨G<±´éÇËúýþkUÖQQ"<m¡CáþþtW¢5]üg´±½±ýq²ø ^ûõíæ‹ ÅzÇÔúÑÂê¢L<$ÈŠC5U19È/|ªÃWcë¾î»6:a*QÂF›ÕuDTŽ×j‹ÜÑ%»³!Ó¯ Ó8žvkÞ>`ÚÀ -ÏX4'à—?>7ý7EÐ¥x+¬îšlNYŠÍ?`d».â«U¿½¼û£fÿH +xÚµXͯ㸠¿Ï_`/ 0ÑȲ%ÛÅ @w°ÛNϽtzpl%1àØ©?æ5ýëKŠ”íø9™·Ûö’Ø”LñóGRrsÚÈÍŸ?Hþÿùåç_#µIEj”Ù¼7AŠØ$£c¡B½y)6ß~iêÞÖ}·Û«8Þ6ÇÝ?^þ +ß%³ï´2PÀÔ}ðùb/Ûþ‘7ÎÐRè$òûìÔñ&9Û¤b‰ßôr¶trowÞþ«Ç·dk+{¹“Êýg+Â¥J¨è‘pò™pim_ËþL‡fUÅçõgÛ"‹ ¼*¡£Í>DªõL1·±µ—ÅþŽ?¶`ŽeçÅu•Óì´ÓpQ¾Ð_aó*k³¾l꥞î¯ëÛ!gƒ4-цzÜMªî´ÞŠÝ>LƒíW^ÈŠ¢œ˜–=oÏnN%y¯LþÏJÜ«å¶ÝrÛÐKg/YÝ—9/Ò@c€}ú5ˆæщ4K©@$!æßd/¾¹ó >…óPxëß qdFÿö·«]ón˜ˆ)DAVZò„Ã^ÑY…†’jûµ§eÖ½£·YÂ'¯ç2?Ϲçøû¾Sèʲ (-ÔÙ…ŸŽÍPó2˜Ö’Ö"1†mÏæÉê1ÒZ‡JD*|ÖQ,bZC¸Ó!2ʺ(ó¬·¨ÏYO ý¹ô4’h—¡ë‰v`ʵµ¨ì÷²ºêFk…ý&¥ª-Ÿpl8Sb)’p™).»Uì?òa©Šu4Ÿß’7— É «}CÄnÈsk öÛÏCYõ%3ø2™Ÿ½Ü›¡b³ƒeiÛÙ¿¶ÙõÊY½HrÑ2î$àJð„:žCžx–${m8?I¢ÿwYáàö#ñ´:ˆïÓÄp€Ãkÿ9”-áXp™»<1†=„OŸ<$…! žcŸ £©¬OœF§þÌü…íò¶< —ß–”½X‘ñfÆ"2œ7Û¥Êe ÇNH¹oRËÃD©ˆÒÉßñ«²¿­V¯TÄñˆ4À/`\X¯c¢fª'OÀëñésvŠ¬Z–§0Ø–.O\*vPI$ŸƒÝ +"éíÐY.^€Åq`€ŸuÒÄô ¿ptåk€sñÐZz%ÿvkŽ’÷.šÚŠ(L´Z(•¾Ë5&‚ðŽScñKðýöP'•ÄïóÈòPÒeJ|û·m|¢ +”KÓ®…8"Y%÷Îø+ㆿýZ@!„½2BB¹mÐX‹p·¤”Û?¹v²†Š\Ë°r^,5¢Ýǵ K• œv,-ìœ~ÄhÔ¬°Ç²^(ÄžK¿[ ãPç×3 ]ƒ-b=c¶aRJ“ÞžÚf¸®ÁvÉsáÒhÌè3Ä~et SMoÚõ^&ž8ùÜY1;´îQ8‰Å7¦É#â&þ©³‚‡1ý±ax{h"E½«…‰?ë4¢»ŽÞ|G>“¥òè¢Ö"¹´¼¹ ñ¾Ð_ÞvQâ²)3éi6–aß ‘›°üe7þ¦êÏp6>au, +[üž‰)~Ü &zÁgF5Éèð=Â[¸…v¡w²ÁˆÊÚ•‡Y MªÙcîདké:"zg5k™•oéípã£ÎÜ°P‹Þïn.Ð’æ´(ä™çM5å‡=õc;f×ð½½}Zí!'¼Ec†X€:ÛöôœÑßµÊzˆª ½åYUQÁÐ.’|MP³²@¿d9¶øæ¶ôT íøáÙf…¿Š`9îCÜÖ–Bõ# z?¿KÓõÕmìq“­=ØM¥éÿlç'sI¨ÍÜÄSjù(8szò\ñ0Tè Ç’× ±\fÏFW¹o=6öøæÄ•Eâ®ÓVJFïÔEŒ]‹ûÆÖÃe%*â*îÓ +©…ÑcÃÁ×e«Ñ•¤êy… D¨Æ§‰vuäKg Uë- „†Iaq©™]sï£Í•K_B:“<ý2ù0»P¤ »sÇÜ_ôð«üÜ"À ¤X)­ƒq3â5»þ¶X¦oü= +lzÅ0†¤ªéÕf„ô±óÚ)Ž cL]A?ðjžÄÚɺÒÂ'G~ + ïØ—N˜ªèXdMÜaB¹z…BlS +‡d°¶\uÅ–ÆíǦªÈ†Œµñ¶*»Þ]4JiMûqmð¦Š##éÆ6Z(ã®6- ÁµqúÂGî’+æÜ"n~øÂåëÐ^›Ž—–:‰@ùг<ßàÅðŠø8]Ð=Ýûààƒ—op´¿Oï„4ƒ§13‹Ñ‘Iéjy¶ÄíÊCe='–ÑÓ¨?Tf¬nn ᎾDŸÀè´"ùä |¿6xø枬ú}sÜûˆX4wW4q—?(vÿusö¤ÍŽDF³‹¦µ‹«pÞÿô˜™†6{º. ÿ‚Z3ÅŠ+^O‹z c‘*Íe=úš>ž¿îÊ:*J ÏŠ¶0¡ÈzÈÑ™.ü ÚnT"t M [î»@ÞíùååÃï´ç endstream endobj 464 0 obj << @@ -1511,33 +1530,32 @@ endobj 466 0 obj << /D [464 0 R /XYZ 132.768 705.06 null] >> endobj +94 0 obj << +/D [464 0 R /XYZ 133.768 669.191 null] +>> endobj 98 0 obj << -/D [464 0 R /XYZ 133.768 563.96 null] +/D [464 0 R /XYZ 133.768 518.292 null] >> endobj 102 0 obj << -/D [464 0 R /XYZ 133.768 514.521 null] +/D [464 0 R /XYZ 133.768 468.871 null] >> endobj 106 0 obj << -/D [464 0 R /XYZ 133.768 452.015 null] +/D [464 0 R /XYZ 133.768 406.384 null] >> endobj 463 0 obj << -/Font << /F14 432 0 R /F40 351 0 R /F48 355 0 R /F42 352 0 R >> +/Font << /F42 352 0 R /F48 355 0 R /F40 351 0 R /F14 432 0 R >> /ProcSet [ /PDF /Text ] >> endobj 469 0 obj << -/Length 1268 +/Length 1173 /Filter /FlateDecode >> stream -xÚ¥W[£6~ß_²Ò -¤Åñ…k“‰ÔK¦j÷&mÓémªN‚†@ -f§QÕÿÞclÌ&Ú}òÁ>þÎÅç|6ØØØøþ~2~³z1½&Ž¢Ð£ž±ZÄ O¨á¹>¢Ì5V‰ñ‡y‹‰oý¹ú±Û7½v‚Þ&)1Xh”y^ï¤2èàžõƒI«t‹],y‰´È-›ºØ‡=¯”å‰ÆØñÆa‹ñ2áë4ç#¶1æ´zë¢T q‘W"Ê…úúdQ׌²šWà yÞ '6ñ=äc˜¤Ÿ“”MYÔûOEÌûY‰ë²ä¹ÈÊË:¯+žœõЇ~ƒ÷©ØEÕÃÙdž;¸ÇmQq%îøîž—í–zV:Ÿt×A4ü’œ¯ë<Þi.x9– ê Â’úǘÚ]€Pmçöµ+ï3œ®DYÇb¬RÄ\¯Uïâ¡À÷[:—Áœ¨¹ Õņ‹m¨Ìƒv¡ëC]‡ÃÓn3ØÔ …®KU¯Š\6 š±1â#fÙcl.ÿŽvûL×B±ÖVºXzHÐì¡×¹9o¬.ÆLº rÞ1‹ˆ6ƒdŸHºM\Œˆ‚ /xfÄ  …„Èx¤¡Þºe{GíøÕ¤ ”Ådñ2Íã¬NôÚ«LÌÔ -Ú¾ÚˆÙ|*÷)X|±äÕiÉ«#ª®:µ¼e’®×wB}Î¥‹›7Y‘o PçÓæûBSÊù›‡%4òDMÅ‘à›¢<\MdwO¦ç Žúª\&CäŸÔd/•I÷Ä\‘âA\(OZß{ñUe¬Vš¯ùTïõí2Ĥ'í¾£-l/¡öhML{Eƒ[ µ$SYL¹Ü§Ó=Rr^Cé’—ÕÕSýænùþçww¿/?~8ujÏ :Šqýáãê·»Õ/Љ€›°#ÌB§ÚÔÛÖ_mùS»Ý½×ÖË$t) ŽdÕÔu3mîßLø-Æ4牚…u3) 7½ÚÜS#Þ8QÿèÍrü ì0v–‚C·Óéús,21ïHè•Ê8c.r¦ü‘g²lÇÌÖ#F™ƒpÈ.Ëfàui—9dØ3Ó\¢.µ¤Ó—¨¯ûƒ#5ÄÅn×Ü òC¾­šµ¼P·HÔ“”’ºLó’·ˆW‰^Qo˹ÙeÅö2)¯Oztm@„º£œ CÞaÒ>ô’¤’Ÿ¤\î3t%åÔuªì¿ÈËêrÇT¸]ÿòëÏ·¬?}<õÕž¹ Øêãêã§Íï·›ß:G®Ñ\…µ²( " šêbaÞ–þfÏlJèG}óù”ìÉŽ4ìÅJåöÃi¦î• m¨Xª§ëR¦˜´iKCsOYÐpУYÛ[!ÁÄóÎJpäw6]}Ú"£À£½ s͸牖ycÊYžƒ™K‚púÞÖG{ÀÈ{›!íh—zNE«Æº©Ì“¡/ÕowOzŒõ”‡ƒºä‹ì­ÔZQê[D9RŸI>¥M¥z]ù¼gqª¯bÇ ‰Ä4®¤+LWa~02s =fy®Ÿ„<6¹™ÍŠ£ŸŽm™ç¥lê»ö:e‰h¯uSþÝK®h’70-æH×—­¨[¥ükjÝå°ÈÄhc_«ÿžÔ„aÍkÛK=Àw¶úVÞ£=Ÿ.õÿ zU‹tö¶q8ƒ^——‹‰03r¼°â¾ÿÉò(L¯ã|ñ´:ýÇ=×H©¨l•Ä"¿%¾ {»õæâaèé endstream endobj 468 0 obj << @@ -1551,24 +1569,28 @@ endobj /D [468 0 R /XYZ 132.768 705.06 null] >> endobj 110 0 obj << -/D [468 0 R /XYZ 133.768 560.807 null] +/D [468 0 R /XYZ 133.768 520.957 null] >> endobj 467 0 obj << /Font << /F14 432 0 R /F48 355 0 R /F40 351 0 R /F42 352 0 R >> /ProcSet [ /PDF /Text ] >> endobj 474 0 obj << -/Length 1969 +/Length 2153 /Filter /FlateDecode >> stream -xÚµXmÛ6 þÞ_t_ Qõâh ¤ÝuèÚ^‡-Ø´ÃÁ‰u‰ÑØÎlçºÛ¯)ÊŽ•úzm}²LÉ”D>äCšÏ¶3>ûéwÏç«_†r&B¦ÂXÎV×3¡Kb=‹£„IÍVùì} ç Á9.ªciš¬êæ ñàù¾Þ|liüG|þ×êgЧ=}aÈdÂvVÓ*Úgn¥·s¬˜E¿°Ë¶ R¸…|–²4–1®[H®™à $¨Žiýjg†íOkEÊuÇæca̸G{íB›ºê²¢¢—b.Š /æðzSäÇl?±iªáXÊÛtrO·H>ß37í¦)ÖEµÅ÷(0ÙfG3õ5=;¸+ êsÁS¡z4LÈ„Ö³…,œïª¬4 YÅ28¶&Ç‘ -ðJ(±šP°üå#Ñ«Š$m]’l²–4(\ßöÒºiL{¨«Ü©ªiIF¯/& Va|0 ÚeÂ,R±t@Á#P–Š ë7éÏmGwÖ1KCÿÊîÀK¼ ˆ‚[zËCƒ¶({'ÜÔå¡Ø›EW”¦—Tm(AÛ°-›ºWàë¨?î¹¹.*3ålà†Èf§°G—„í0T¤x/ í €Ë®hÌ%Ž]E@Åw'MiÄxÝv§…Ü€ †°jH_Šp|˜”0Ð,ÖýuDrö‘0ÜŽxœr;¸1¢an`ׇ®¨«lÐ uü—ǨÀ)P3Œ Å0˜P`z¥ïC·}w{p?íêÖ KS®MƒÀSBJsósYA`Y8 -ÁnÒáÑå¦õmÆÂù̞Ž¶M}<0Òõêšd,SuοÊÆÞQ˜í®>îsš.³3Eû ´†à3×½žO€8ßs@4Œ ?ô²>‚úä€Núü$1ì1`­=• •f*'Höed—$hyÉè;i½> =&×>0Ã0ajœ¾ñÀ‰Y—9Á `„Ý[t3‡ŒŸí6áâFÂÂI,`†Ir„=¡çïpº’å²Ã¤©{XáKÒg~PRa"DQ¶Ù˜CG¡!‰v6un릠ôŸXÔOÀJÄ+q_„%,JN°ªò©XÕŒ‡ƒÇ×EWfíÇ»²©òH×’5° ¥oçãBemö5ZúÓ<Ž‚/Ê B¨Š¿UÀ$M7e”i­OwøÜ ¡º¬šO)áL 1§„49§L€Ð#mò’Z÷9ËB?°XÀÕ-åâÀô„¢¡‚©¹AÅÆ-€ÂpëX9Š™Zô\`¿ÚâÑ-½_× H1¼à Åæ¸Ïz§=ª¼vïýòñ9@rf“eä—TÞç%-PܪòØv´ÃÚ¡ÜðPɉÁe8UúHÔ—]&–ªaSð‘LS¬^Û¡ IYtVР»Ì>·4 ”Co`¾ÊPÇ'ÓÒT¶‡=C0´–K´ój”ô•P¤‘»±”Ë ¨íõ®©«Úmú+a¨hö˜Ü?`×Xo!9TôlÌßÄ\£pÝÔŽî°î2%d!#ÎÕ{‹„GÇ^g4yºŠ£Èz_l¨²û¦þ^¸!ðM”HÔ8ú”GŸâj œSƒTÂÝ&<ˆ£Ž†8ˆ“ lBIR’$£G}É8) ÒÙ¼:„´çðÁÂC0¢ZÏÞ&ÿM µ7‚a*ÅCcxêÜîÔ#ÛB½´l€"y®¼j{S»šýXaÃsw­§LBÃyVjKWj¿€ÖÏ v™.²5ÔSQúÝEöyc+×b¯´¾Àæo‚r‹ý}mÌ”_óçâT! &{N›Sá¹-ðf.×Óm³µïe\í,Óš¥;L¥¨”Ϛ팿þô`öÞ.JÀ©ã\k+ - -) ÎJ°UO¬¤ë{bDTŸÁ ª«…ƒs×ÒèÖ'Š;’?bÎÓcr¬ÞzÞyŸPho0hž>„ºä! °{}úð÷×Wo—^]ü¹º¸üíջ˫ËåÛ‹‡ŸMÕçÚðÓ—oÞ-W RÛHé›w?^½x³|ûËÕå»ËAáÂ;¤cÕ'ïL¿Ð‘¦aèîœÐò?vÖù‘„~¬Þ˜¶%Sâ¿-Ëð‘¢&¡ÙÇbòUȃGnºr_dm{,%R6 ÜO:;ÜCïŸLãf°>+ …9¶¿¤?îÌ^á`Úã~(ªoñtâÿ³ÖŸtx@Ã8Øó]<ý½ïlt@>¸ó¼þð|ÇL'¡b -ÿ<£z!½O.Vþ(ˆá¨ +xÚµXmÛ6þž_aä¾Ø@ÌðE/ÐpÓM±×dS´Æ]€æ° -®-T–|’¼¹½_3R–¼Úl®@?‰RÃáÌ3oä³ÝŒÏ~zÁý÷‡õ‹×ï">ËX–Èd¶¾›‰H³TÈY§Lªx¶Îg¿ÏoêÎ.–R&óno:¥0ò$SíJK´Mc¶,ŸÛ®õ‹M}ªòÅ¿Ö‡sôèÉT"A +wBÛå¹½c{¿s(QÌO“°Ñ4þØÆÛÚª³9nü‘Ÿ>¼'¬]a=¹¨÷l)yÊ”–³¥,‹ýé2Z×…ˆç»¢íš‡EÏÙbq5_ï‹–6lëS™ÓДmM£ÿ;¯+?:µEµóÛèóöÇEÄç«…b¾^d +†@çóMYƒÎˆÍBòù©óªÒ¶þP¯ñŒML…¢>¸[ññu¶{–èlƒÿÇnõïSÑD0mv[˜2¬y=š®¨+¢þ ª|E£pÔŠ[ý˜ÜÙ¦±9ó&”`b¦"01ØäSŠ‰,#ùôb)8çó«êt°©:âñªÂóûÌcÞÃfÀID“Iàðí÷Sg&ŠéH„ÙK1/@„f‚Ç0À:¥ýk@Äj3–ª'òŒÆu48n·5赋“b!æàK#˜Þù ŒòøÐLƒXjtèä™n‘>>3·í¶)6Î~‘ŒçÖl÷´RßÑ×¡ß jòÞÞU"&´c«2´=ø.€}O%Ê)ŽV¿\3"]WDiëƒ%ÊÖ´ÄAáþ6Pk@O{¬«Ü³ªi‹¡éÛ Å€Vïƒz™P‹T,ëQhV8Q8$Èí„£;ë„eÑ…;‘ÀK¼ ó:7#gD*ÇÒ·õáX”vÙ(UÛÊжlǦnÄØ:âþ bbQÙ)c w0DöÀïœè’°Å€Š ïÅ8Ü‹Ü ï€«®hPØ WTô~wæ”ÅŒÇñ“nwÞà ¸Ávõçõ; O@\Pñf‰×éÅOc‡€QovÄã”ÙÁŒYï K03»>bŒ3%FuÍë(&â°éÇ„bLN(P½ÒÏ¡nt|÷pô¿ìëÖö°qZñŒ„ÔÜ~æ\V6'8 +ÃiÙjóÀ¢¯“ÂvpŒx]ßõ±ü«Ë¿ÌÐú@Š²y»÷ù –¦ÃH`?V¨׳–ˆÎ€¸<³@4Œ‰ñUMð ÐH%IàŒ›¨í©©4Sñ0@²¯#rIJÀÌ ^øÿ‘é¬> =&×c`Fg`ÂÒ0|ãœÀ‰ ¦3žDðaDmº_@Ä7åÉ\<¨ßPxŠL¿H†pŽìàü¤K X®: š:À +'iˆüÀ¤Â@ˆ$³ÝÚcG)BCí¨¶ª›‚ÂêP?+‘¬Äs–²8=ÃjºÈ„ õßÝÁ´<MÕ(I¸zÒiCAäIpÁ„öx«Xï*[Ö¨é/T3~ V‘?*È$M7¥Œi­Ïwx¬˜EIrÖj>Å„3-ÄœÂäœPV_WÞT^jb–¯x³PMg^V7t)6 Šn…>¦æ[¿ +ÃÏÊq¤Å$ÝÿB;|¸"²¥ù]Ýà€Ãü2ÛSišÓU^ûyØ~<5GÎl²ìƒø’ÉçL ¤Šßu8µ°ñ(ëa%Î\FS¥ˤúºÉDÊ2Õ +6’Y†ÕkÛ4‹/ +4—-s—Ò>åÐ Ôw Þ 9«––L ºkZ—K´·jœ†J(…¤‘ûe©Ð(·Ÿ÷M]ÕþÐ_C£µœj`ºÆY “Cunalë…»¦öéë.{À.0ô:wué}±ïX¼Ã4y¾ŠO‘uYl©²ûË=øžÀ7™ Dª†Þ§äÐût¢!5àÒ05H%ü=aaqäÑÐq"bD(ID1ôi /:#EA’md%rÐÃ{ ÷Î8h½¾}{ø—©joÃTˆ‡Æðܹ-½ÔÝB½´j Eò|yÕvç–köS… ÏÓµv’1 çE©-}©ýZ?ÛëeºÈÖPOÅÙŸ.²/-•ÖWØüM¤\Å’TC_CfîsˆºP©-æõ4ÿ×65Ñyø=Ô“©^H|Üy¾·UK¤~6Ù‹è¬<²Ö3°_ºšÜlŠ²èžÄ7¿D¶ +¯8ÿ1…Ÿ6¤˜oö·ÀZòq˸‹DéÜ)»—'ÒØÐ ’ì0ôæ4øRt{¿2jM&†/J±|®¼¾7¼ù,'óºØGò[^.Îrrrº˜ +ß]7ó±žnk6c+ãn¯™Ön]ºÃPŠLù¬ÙÍhðëO/f¿»M)uk]EAn ¸ÁE ¶‰u"éŽ-1HTŸÁ ª«¥‡s +éþª'Š'‚?Âʛ䮂òFâ~Gù?Ìޣϼy eÉK"`óúæå?~¾ý°út{õi}uóÛõǛۛՇ«—¯¿Ÿò©ÇÜð×wï?®ÖÀ"Û€éû?Þ¾}¿úðËíÍÇ›žárRÈ×OF_hH³(]ùŸ{gúXB7VomÛ’"ñeËå÷XQ hî³O‡hñù+¿\ù?LÛžÞ|6 üöÆ¡ùz•†=0ÛÜótÝ%½_‘‡eƒmOe_ TcÀ håuŠ±Ôϸ?„mºZ¿ø*­V endstream endobj 473 0 obj << @@ -1583,50 +1605,44 @@ endobj /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [461.539 267.059 475.985 278.003] +/Rect [461.539 214.995 475.985 225.939] /A << /S /GoTo /D (subsection.7.3) >> >> endobj 475 0 obj << /D [473 0 R /XYZ 132.768 705.06 null] >> endobj 114 0 obj << -/D [473 0 R /XYZ 133.768 667.198 null] +/D [473 0 R /XYZ 133.768 615.902 null] >> endobj 118 0 obj << -/D [473 0 R /XYZ 133.768 594.331 null] +/D [473 0 R /XYZ 133.768 537.646 null] >> endobj 122 0 obj << -/D [473 0 R /XYZ 133.768 371.791 null] +/D [473 0 R /XYZ 133.768 319.303 null] >> endobj 126 0 obj << -/D [473 0 R /XYZ 133.768 300.683 null] +/D [473 0 R /XYZ 133.768 248.619 null] >> endobj 472 0 obj << -/Font << /F42 352 0 R /F48 355 0 R /F40 351 0 R /F14 432 0 R >> +/Font << /F40 351 0 R /F48 355 0 R /F42 352 0 R /F14 432 0 R >> /ProcSet [ /PDF /Text ] >> endobj 478 0 obj << -/Length 2210 +/Length 2136 /Filter /FlateDecode >> stream -xÚµYK㸾ϯð-2Ðæò- -L³ÁHd{sÉä ¶é¶2¶äè1³_Ÿ*%™nu·w9‰&‹d±_=ÌW+¾úÓ;¿¼÷ÃZ®„fJ[¹ºß¯„R,·neMΤ2«ûÝêŸY±ÞÎyö±N¾-ë¾[o¤áÙgnøú_÷†C\r7Ìr w„í¿÷°ï‘0¹Í¸Dt}ù'ŠHÈW+¬´H·–3ìl¤dÒZ¢ÿXnÓõ31hn/¿Äg·þÜ6[ßu#$NÐ7Ÿõú»•eÊêßððò\-½[0=»¼[™éZ‡…!¨—~¡Ò\®£æ`æ"F„ù5€4YœÈ%6Uìߢmr•!x).ƒÞðwIŸ‰™m\ùWÚºìÃТM…`Á£PDaa<‰X‚cÅL€wá€kÔp<.©³BO‰MÈZ$aƒ´žŸm ë(uW=Ö~·”‰Ê®pWN«$≹‚²"³zBN&A'fßC¦\ð‹"î+œ'¿1Z“!,i“ýäÏe[ö~GÛ÷msZ -yÕ9-Þ´7 3QAb”Ç#\rœ)%¯€©ìÆä¸Á„8ºs¿Ÿf)ÁâéSròžò2BŒÿ¯Ë\—ݲ4„T—Qø½ðy£töW -¸°§oYÇD_I&hf 0¿eM„ÄC<5¯uÄJ\i}̉©DüIÍC ÚpÏà> &2—meýHhœge¿´F7{š"u9ß úù1DÛã6 -è.â ®BâXu½¯·x÷bH8-$Bˆç hâ«-‘ÁÏQ00 2˱à:¨à2}Ò ¶`ÿªmÞJrfÜ”†·àáž‘µ±fˆ|̧¸´ Á"yíkY^¼Uæäî†tÕ0g§*c¹˜\ŠëjRÆjòCp4•ðËu¤ƒT×ß[G^ËJ( ecž”¯—åyrd`ôÚÊ!““‹´`ãh—á…1™}<ŽYGåEVÞÍʪ÷É:ÅS¼!)ÀÙR'cùFßµR÷‚G™ÿ\Ï9ÑÍM+™)f% áŒÅ6 -u­Ý m©ÐEòÛÚ(Š™ü¥ë/O…L;•4RøúE#EÙœœ@…†LaÅ_çÇL†Õ¸T¼Åˆ¨YÀ‘.ˆ°˜O¾'üÌá•ö*|•]ŒéàŽSø^f6Ò/h7ù>9Rý{èú¸¯-·_:¢%ó€ÉaÔ.Œ“´Ú`‰;‰:ÏþN¹'DÀß­É")r—`¨³¡Ä\ÃÓD{?V[w?úäŠæ¾wðžéLj!§ÈÕí='À”ø=§®/Û~9âÛÙ­0â;5Õ¿w ŽŒs£Ð×»åâ2×Iqéäe‘s—}šÓÀŽn«ELšp!X ÞÃe”0çi@½+œ»F‚cSéªk4Ú¤‚ôqô9øÎ>·ØÌßWÂÜ I%'¨>'ÁÃb L -ÈcÍ„QŸ¹Ô‹%ν.j( -%ç¸1…É>í{réæo*î¢oð^@ƒ3$IJîb^lO½JÌ–«?¨D¤ÑoŠJD7±x ™‚:oð{Ï8žÔ -ãI‡ˆW…Šx…+£Âqó¡Žq½ -w†gëÇ>T?†«gyz8ŒºDo)GÜyxº -•ÔƒÍPïЦ4b0³MÔÝRLÑÜ’?^¯$‡ÚPŠßÐ3ú -æ1%f‰†ræÔe»LIÛH‚ä -]JZÚùn à9ý’ÁÉ-Ü¿]Fß|J‘#yCßo¨ñ]I‰ì©J Î’X1jžkru®Òð -óUüN1Í'ÇÎÆØôE¢X}µ -^8ƒúÔaXÊ äÔ7ˆÒ17WžIR5±[­šé\¿`¯›˜5LÍ Ý``/eäÐ<€$®š±hҙϩ UBññþÝÿ™Uò% +xÚµYëoã¸ÿ¾…~8ˆy|ˆÒ4[l»›=Üåt‹@±éX][rõؽô¯ï ‡z9JâÛ¢ŸDó1œçofh¾xXðÅ_ßðg¾¾}óýÛØ.R–i·Û…PŠ%Æ.ŒN˜Tzq»Yü#úÃÆmóÂ-W†óè—¿ß}¸üõîú×Û뛟Þ}¼¹»¹üp½\ kR›å?oÿ´WB°T?sþýÇ¿Ü]½¿üðÃÝÍÇ8K˜G¢oß¼¼E +À•\ˆ˜©ØHd cFÆD0…û8œ¹.Úƒ«²¢©—+©yô‰kŽÛñqÁ53\üÎýiî­AjÕík² (ÂF>RÓJÎ,èg%%“ÆÐþël½ë¯6Ö˜›ÙËÇ4•eJ›ÑÝ$ÓÆ}â\.ˆ˜Ñ§Î‹‡½£ñ/ËDGíþsV Z(+—ÍÎ…áåï¼4þGS~^ +¹‚ jðójCHÎ2-lP:Aí—MSå÷KÉ£¶éø*·ƒâB©f¼à½ûbø´#ÙkÜÕûé÷oE<Ѿ4L¨–™ÀÞ'.’“C+਷ì—lߺ9H¦Ò¸ÛJ|jM†çý–û¼9–õ3ÖLD·m…J’‘[ +ý–­›ý#Nˆ¨,­€úü˜«SyMSÙ~_.¥Ž¾º -dņV*÷ï6¯Ü†Í±i “Öü>éJ¼Á‡ñJqÎdœN£ÙuA·\))¢/È›§îæ}AlËê@#”QI‰.Œ?÷^K.á"Àuy“—#òb'°ëÕŸÙ‹QG´ð•ú‚®Ès.±ói¤ð‘k¯”=­"¥‹‰Sg™« våŽU¹vuÝAb}­—åV†)ÿ‚gÇ|NnÁâ!ô@n¥“¨<¢²=Èm”Š. šìÆ%ú©¯»²ÖGðélŸÿÁw5»¼¦¥=‚åqÍG!¬P€’›àRÄÒ“pG]Õ%~Aƒ»¬¡Ñ&ߢßo]åŠ0¬Ö4:d4Øe˜+¾ …<¶¥sçz §·Þ^þ6GƒÚËìuA}€›fBþ>$ȶ&èăÁk6› +\bšRÛû¦K©y±.ǬÉïsˆ¹ÜÕçG†ùiÏD†Qc‘‰{ˆ²"ú™dÃ…Âg}ݹb.%ÉRŸ‘ŒšÞÇЗ(&­Gk¿ÐzSâÒo4C–Kâ`9˜å?¿&‰dÂLÍç×è›\E^ŠKo7üѧgf–AÀUlltÕVèS>Yð ”U÷êog´`Y:lÀŒ;C$àêÕî÷s&ä,ûÂÆ' d =“0^[Oik(ÃEŠmQç…ÛÌU¢2+ìIÐ*‰xbB­ ŒˆL¼ò©''I'†ØC¦l +ð‹*nrœ§¸5!,Å:úɳ*k܆Žo«ò0—ò ª³±xÕ߀N¿ +[o| ëQŒpÉr¦”<¦¬îŠOà âÎEv@ü¦Ÿ¥‹OEl‡$ï¨.#Äøÿ†<ÀuVÏkCH5Î +Àï(浊£J¸°¥oV„B_ÉxZ é.À¨ûfm$!´|¬ÄU@‘Ê…:˜š¨’FŸE¼5ì¸Oˆi›Ö»¬x 4N¢¬_Z§k÷ M‘¹,¤ïã|ÑñpŒº xƒ«P8æuãŠ5Þ=›Žm…âùÊZøüjÒ‰Êàg§z%ØpŽTp™>Ó$6ãÿºŸX¿Vþ$LÛ¾.ô² qJÏÈZ×3>*v±ôÉb"íKU’¾Öæ$öŒrU3kú.c¾™\ŠÓnR†nòª8ê[øù>ÒB©«Óoí#Ou%T mc2i_nË“ IÏè©—C%ÙÓ†£_z C1{¹ßwU6GÙ¨*¯‡Y^tç»bò)Þ0iÀÙÜKÆ*ð=y7<èüçb¨‰Î~D1’ét0BëiÌ>£@Rc{Æ3ŠT"ÉyÏ(Šéä¹ëÇT¡‹­š<¤(ˆõÑCŠ2 1€ + =˜ÂŠ)ç»J†ywL¼Æˆ¨™À‘-h`1 ]Cø™€”FN;µ¬9ÂÂRa +ßqe#-ñ‚~ ßz Ç]ÿjë&œ«²õçšö’{ÀdÛYÆ“²Úv`‰'iwýHµ'dÀï–ZGa+¹˜ÃÐ>cvîêžÚÛ®ÛÚ9è¸ÃøÁ Wt÷Y àS„úýN‚ Ƈ¼§N:l5PS$êü7'À–Øñßœê&«šùŒo†°ÂŒoUßÿ^Ì0’…®ØÌ7—I ©ð¤¯qÖ®{‡€îGbÁp"VW§{bôJT»ŠRpÀûÇ“TYC?X¶Å}zÆ"+Ûéu=—SbHn“?¦Ý°¬>”*Á4d]05Ùs}û濪/zý endstream endobj 477 0 obj << @@ -1640,33 +1656,37 @@ endobj /D [477 0 R /XYZ 132.768 705.06 null] >> endobj 130 0 obj << -/D [477 0 R /XYZ 133.768 667.198 null] +/D [477 0 R /XYZ 133.768 628.339 null] >> endobj 134 0 obj << -/D [477 0 R /XYZ 133.768 618.242 null] +/D [477 0 R /XYZ 133.768 572.663 null] >> endobj 138 0 obj << -/D [477 0 R /XYZ 133.768 360.429 null] +/D [477 0 R /XYZ 133.768 314.85 null] >> endobj 142 0 obj << -/D [477 0 R /XYZ 133.768 311.517 null] +/D [477 0 R /XYZ 133.768 265.938 null] >> endobj 146 0 obj << -/D [477 0 R /XYZ 133.768 232.837 null] +/D [477 0 R /XYZ 133.768 187.258 null] >> endobj 476 0 obj << -/Font << /F42 352 0 R /F48 355 0 R /F40 351 0 R /F14 432 0 R >> +/Font << /F48 355 0 R /F42 352 0 R /F40 351 0 R /F14 432 0 R >> /ProcSet [ /PDF /Text ] >> endobj 483 0 obj << -/Length 1594 +/Length 1561 /Filter /FlateDecode >> stream -xÚÍXKÛF ¾çW>É@<™·$ °)’¢==,zizey-DWî¯/g8’FŽìl79ô²š—IÎðãGriðÐà§WôêûîñÕ›L I4×Áã1`2&ãVáB‡àð#eÑöÏÇ_¦ß½ù cïGf$`ÃΚªÊëÞœ‡cÔ;&%BŽçvÛW4lÎ}ÑÔiI¶;ÁhøÐMÛ îv}[ÔO8þHê¡Ë0bÄ)àc$QŠ ;.Y°ã1Q,FEŒ¾Ý1JiøcS÷`[çTŒØ—‘H¢E4Zùj|»¦MS"¢é>}úÔ­\zÇ”"”M,&Ú™ôkSçÞà]¤¶"i°‚h.œél2¼ªÒú€v¿+›ìS7?Ê|‹Y“ŠÄj¾F†º·kZã„hí_Ä<ðÚ]Dqó¾œpáùÇS>Yà)&Œ‰›ú}±š‘hO=\M RݧEÝá줔ׅA‹[ÿÙožf§åJ&ÙÁq¨3ïæµFKìíªq°1+ØÅ”(š€«¬“Ñž¢Æ—F™0xøíçUðÑ+Ø12zï¡ï·œ†CŸß£ŒP!î¹m>Iñ¯Â/R$Râüî]á"ç;Øá,ľíﳿ„RRþ\¸q=Ý›`Â[y€“IøOÞ6î¶-®TM»Št›\«^Ó¬4á±òoý5XŒ†tÉ~M{È[D&Wæq¯ iàœ–ý©ž DÂ-H™ -/f&@\î–/ç"KËÒ­[¹€y»·¿à·kÚÞr­=QÏòì  ÈìÖi•ƒå’Çaßà~Qá¹@õgóÇ>“A“oíi x±6Oé¾(‹þrÅå_R¡tXäK*üÿш°DÝòÊ’þ æ”~ý±8&\=—þ(—ÏÅðH~JúX„YŠȆCÖÖufîs"®XTjú8´Ìq ´5Šžr‰´ïgHr‡0ƒ°J.ýf¤ß̸׌Á¿é­ç܈(©¯‰Ã+LÕ $_€”1>ƒü§jæ¯!ò5rI¿–a¯ex‡¸:Õ00.@¢Åñâ¤Ë*Lx^‰ÓjÇý©èðìâH±d]††,<¶72¥ÏešY¬H@Fm*,[¼ÚÝcÓViïv¸†æH µbËB€ ŸpÏš! 7¸3È‹yq]LŸ·U·F×@ŠM~ÜÀÕΓÍZ|%ñxòõŠ0(!†Øl7‡*]“ÇÇž< Ló¬+V2¨¡¦£›§6=ŸŠ¬[µ2!Q¤¯¤þ]ô'UCÙçÒUø*Xàæç´MûÜ•vû˘ŠÀÕkç1LšL@ݼ^3‹8æÈš¢øf¼˜—T¶X…Eþ’ò¿²,ﺬ9¬†M„”>Ç Kè2n¨‰³:ƃ° ØdšŸ›®+öæ=íIÔyJœ·9dãÉ 7Ô½@ɱmª«úÎ…Ùˆ ç…ÔÛÜ]y­,º~"8ûý}©p(?Í ¯Œ"N“É£Ý}‡àÛ¢;ô Ü‘·mÓÞraéÌ#±$ñ!!“<àêDb0áóÐÝìsÈ*ÆÑfM±Ëöé­cœˬó¿wÇK¢£Ík(½ÎiwÃRhß:ZôÇšYwÀêä/s -,ü}ÊáõZœ¸V(ò²‡™Ø—€ÁÞíÝnò…1bá‹n0Ok#µ65¤AmR\ü¥cؙ˹5W´£[ôä*£™¾PއɈĜùf°@¹gL3ôßh ”ƒlV²q¿žÐLĉ!3»§sÁjcÀ{3¦‚¨¼Øl€9¿¦ðXëç:t´61¾°YuØÇcÞ–ùç¼\1(†Ô+Å=ÐR­¾Z}§X?·\…GD´aøØg”ŽÚW b«ÛÅØÚÅocx"\˜(w»Ð"YÁ¶H«Ð ˆ\Í«SÍ”¸6Œ=’ÌÉÃQ!K¶çÂW,™­ãZ—„½]:ÉÅ6綨 aܬwñä™õ -êɦ–}ÓåÐwnˆÓæ Ò+q‹]‰cìKœÙz*¿Ä1;ð°Öe,6QËÛ?£î ¡ìËž VОqˆYèWÆÖE.Ž¼|õ/’”_0 +xÚÝXKÛ6¾çW{Ò1÷$ °)’¢=ºí¥éA–èµYr))Áö×wÈ¡dÊ•7Û$§žD‘ô<¿ùfdºyØÐÍ/èÅóÍý‹Wï˜Üä$×\oî÷&3’2¾Ñ*%\¨Í}µù#yOYzûçýOóï^½“Yô#·pà/4mÕYwnÑè–HI&Øtm{»eyšt§¡îÚ¢!·[ž‹ä×ÁÖíU¦/m½›ß‡ƒÁÅÇ[¦ÔïY‚Ï49öÔõ¦×;|~:tG¼Wà†5½±(£rfn¶Á²-c$WÁg[´ OP™t{÷ r<Øzܯóhš®,S2eÉoý[áReÚ¡.‹e8«Ü¶sC"NTöŒPf$ËçPDmwËi2g“½g<•D¦réš$W4éGk»±­\ˆÿmŒVDP5)qÎ÷k¦p"ÒlºµƒH| XYlËhJ´Ô°€Mþ%+»ã‚ºbŒ”DAÌyAL0šÜÙ]=ØÂ>†Ĺõ{ªèØŽ½©`ÅHPÀ7<îÍ×9á°Â3¢X†Š%°E)M¾ïÚÁx„xÕû9®‘Œ\-ÒÉÊïPãë5mšBpg†âa-[¦¡Ìá7#:˜ôsךȈ‹Ô^$¸ ¢¹ ¦³Ùðã±h+´ûKcÊÙ‹³ &ÉÔÙô¯×´f9Ñ:vÄxÍ_ÜÅ—®5Þ¿_-ð–1qU,VHs©×´ µCQ·=¾Uæ=¥¼­Z–«|÷4EyXî` Áb?¶eô ­Éï£ßu Æ‚Ì(Q4õÜ«[Œô\—w¿ü¸ +>z;F¦ìÝÅð$øe„ +ñTÚΗ=RþYø¥Š¤J<¿§\øŠÊù¶C9 qlû[—ìnæDRþ\¸qÍœˆ^E€“yò·±]ðÖâᳫHgP±ù¥ê5ÍJž©Øë—¨Ác 4KöëlelhÊ7_¶ +ç¢Ýø rîA +­Óu7è×…5aûñäš\ö½\À¼?Û=â³ïìà¹ÖßhÏòü¢œȶÅÑ€å’gØ1á¼>ž \ [·7š.­=Œ ³¦¨Š]ÝÔÃã—_§B¾¤ÂÏñô1–«kYYÒÔœÒÏ ?–e„«çÒåò™ 8<’Ÿ’1á­ÀtñFŸ:÷s"îxTjþ$´1¸ÚšDϽDúø9’Ü"Ì ,…ºH@úÕŽ{ÉüÛ‘ÞzÏM‰’ú’8®3 + ƒrÌ ÿišùk4£é×çåœ^˜DTA“ë£ýÓ ÁØ~y: |CÚkÉ€"LUüÍÏó> endobj 150 0 obj << -/D [482 0 R /XYZ 133.768 640.508 null] +/D [482 0 R /XYZ 133.768 596.673 null] >> endobj 154 0 obj << -/D [482 0 R /XYZ 133.768 594.232 null] +/D [482 0 R /XYZ 133.768 550.396 null] >> endobj 158 0 obj << -/D [482 0 R /XYZ 133.768 527.507 null] +/D [482 0 R /XYZ 133.768 483.672 null] >> endobj 162 0 obj << -/D [482 0 R /XYZ 133.768 480.309 null] +/D [482 0 R /XYZ 133.768 436.474 null] >> endobj 166 0 obj << -/D [482 0 R /XYZ 133.768 406.038 null] +/D [482 0 R /XYZ 133.768 362.202 null] >> endobj 170 0 obj << -/D [482 0 R /XYZ 133.768 339.702 null] +/D [482 0 R /XYZ 133.768 295.866 null] >> endobj 481 0 obj << /Font << /F14 432 0 R /F48 355 0 R /F40 351 0 R /F42 352 0 R >> /ProcSet [ /PDF /Text ] >> endobj 488 0 obj << -/Length 1797 +/Length 1870 /Filter /FlateDecode >> stream -xÚ­X_Û6 ¿OáGhTI¶d{( -Ük× †áöÔîAq”Ä«ÏÊl§·Û§)ÊŽùO’)J¢øçGÒ<ÚGÇ4Û×K×錩tdí;»ÐÒLµk‘‚NSs¦ó/Ðì«cëz÷zI³Š 9 -RÁû’„Ç­ýëTµv _²ˆáD¾;u=‘6–(ý!L>p.ÛaÕÖ †Qi¿ë‰ÅŽÇ…­fOß[‹›o­ó™°pƒòFë âšÔG‚îNM‰ÖGÓ±]ÿp´ô Öñ£¡!Ø!Ð:·¶+Ûjcyck·’*¾_i¿@9t|:ÒZïÂxçÏ/oÌõ‚ò¹ˆþJt–Öö§¶¡9 ‰³ÍJòøÔÓGã¤jÊú´÷|~M wõ¶íØ“ÞB¦_ ¥ú"oÁ‹^/Ç¡’ÅÀÌŒ1‘¬®…‰ë›ò@¤QóøAÒ¯D vÔs­ËLͼO«†ó½žý $Ï qfjG ãQ©ð¶–I>µµL.làÁuünGk†vœZo>®_l8­qµ]‰<ÞŸ¼ -ÂUO<ºº@æ(ÎZ”™†¹x^Ýë“^¨ÏhñM€?æ×èÚZŒ»ð%?ãÆ«O¦®¶Uÿ°ô -°$K'XG‡O\?MWVÕÖ•ôõ „gšh@«M³?™=¡–änHÆ°ôÞ „b)sw8[ò¿4*J†ó߬„ŠGÇ$ñÒ oéðæTn0‘‰ ÀÒÚ;S5ãŽstপ!ªYò VÎMS]bnUÉ\—xjdsÇ5½LyzdM¯‹Q)w&dÌ0hà@U„E×nmûÝS^'RV¤é\™ÿvÀÞ¦[„„å|šþE‘MÓ¿,dü#†Ò1>q4=TemXó…·hz0Ö@¦a(p~¨ÅpZ.ohÜLHäeØ "/ðßÁ‰zâ†ðÑðH©3$ +tr˜&Œ¨šºÝ B?,cˆûþ`$À;×ÌÔÅ`³ÇBvÚÁ„¾B ¬l›­'øöéŽËøçCë×Ñ"ÓßPuŽ@øŸæ“á¼Þêf׿¾£I×›þ±¸Nu_/‰yÎ݈û¤ ºÒ;Z¡ÄŒc|”(§µãj¨f¤Ý#¦;ú˜$tàAó†sÉ ¦r nmçjÒ\Hì.Œ„F¾Þ›„­f\Œy³ Ã…—Ë”ñ9†Jö誦Ÿ‡¦/NN „eý0 µyð.ç `S~|&OpÆ¡ýŠJìà#q)psÎDQ<]·ÿÞÆwÿyVl¡¿JìêîXWeÕ[pÕ¶éšÒ§†Eð*gi"'ðÞ~D -¡x3â .òüºò1rï`_@5?©¦>» Pç2SÊBÅ…5kÀµ -P…Êi_Ÿ+|uîÔ–¾fW£¶i%„T(Ã•Ç ¤»ÍŸ¶ì‰PÉÔ*h*]=ÿRüŽ±Ëã%Œyðß,â¡-O'5q°0ôZ›Þ;ntá Æ†=¡¾¹Lݹa³odÂQ:µxÏz)®}zL”ŒÑ'ت† -ˆ}T2k€\…åÎŽp{…ÕÚ}D“ßÞ^Eï=ô”)3W…{Á´Èâ[cÀ51 ^î­°Ý×z`…q³Ø~@yåÚ£kƒî(|jžŒ³4ÏF…¿8võÁt/L£4+¢eðÖŸo&r–‰ºÛzè@í4ý((áÔžz»·€䊔&Iú’ÉL¬6²`JtL®7‚sž¼uí²­’×ù»Lö(3¦Óè¯C˜¼Y:NçLe‘u0wý“ª@O†æfºø +;>vnpo–4«˜Q ¸4åIgÿ:Õw6Yz¯÷ä鈄ÁŽ +´UÌe7ÎÚÆ¢!Á0*+“÷±øÍq»°ÔÜÑÿÖââÖ[ë¼'L¼%"’‹ktwj+´>š¾Lü톇£¥_ÄüúD¸ò´ž¾[ÛW]}kùÖ6ññ +£2ÕÉéHsƒ ß}Ø~xkv ƒ!*s8u-IH(ôÓº0¨Ûª9m£ãžOÂ?D€ƒPèŸD2ý×ÇákЛå8T²ù‚™1&rŽ¨Ž©¬oª=‘Ή"¥_ DµqE3׺ÌÕÌp·zÜßëÙ +ƒg8sè ãV™ð¶–i1µµL/làÁuò~Gs†VœÚ`>®_lØ­uµ[tß¼ +‰õ@<{:ºDæÏÁW怔Z<¯îÍÈ9¿! Å—;€~Üøcp®­EDØ…;(Éø7^2M½­‡‡¥[ètšk)ìaó‰«ã¯é«ºÞºŠþ>¡pO hiïNæƒPKr7$cXR.Še\,äÂ1/(*J‚óßaI“ÄËr<¥Ç“3Ýa"€¥³S·qÅ9:pQÝÕ,ùƒ+&ŽY5y@¥s]â®]Í7t3Y–LÙ…ç5½.¢R&dÌ[;bÐȪ“®ÛÚ¼Nd¬Ì²¹2ÿ쀽M¿;)+ø4ý‹rVc!ø†Ò1>ñk¨ÊÚ0ç/-J nÑ`¬‘LŸ±dÀñý¾FÃa¸¼¡q1!‘—a€ˆ¼À+B¹=©ÇõXIS™€x®Ô‰®_Sã5BC·{Iè‡e qßïmàƒxpCl }böXÈN;XЗ† Ýúx‚Ÿî¸L~Úw®u=-2ý POáÈ©ÇïÓ|2삯ÙqtýË{ôƒN=¶º€þfAÌsîFÜ'm`ÐÞÓ Å fã£8@9³] šH»GLwô3IèÀƒæ û’,ÈÕÙÞ5¤¹Ø]øùzoÖDpóf*† /—ã9ÆJöèêv˜‡&uK08µ–ÍC,óà]ÎÀ¦úøLžàŒC=úl¢x—ºQ–O×í¿µÁ£ñ^Áž[hù +œúplêª,¸j×ömåSÃ"øU°,•“Kxï?_"ƒP|ñ' y~Sû‚˜§Ó~a²1Tó“jêkÊLA*Ö¬×j@*§ur}N¬ð×»SWùš]EmÓL©P†+AHw·Új Z@E$S« ©tõüKq3.bWNÝ~^ÿÍã;B[‘Mjâ<`aŽiµ¡¾×/ta£Ö†5¡¾Œˆ\¦éݸØ72a«:x&è)3&f® +ç‚ižHkbEï xn=èv<Ö«ò/Ó›„8†òÊuGÞ <¦ å‰=XmUcá]ùë.·ÈP% Ôe‹œÆyZjùê8¶eŸ=ELö™fR>Ò«Î$P)“\L»fìç—"P‡ecÇœ—´à&bóÅëMY|I§<{ƒð¥Þ*ô+¶¿Pír×õºzK )ú„ˆ` Yd£AÙ  8ôÙàOd‚ë‹šçâ­b‡‚i­Sù—îµêÙÛÄÏžs_ ­YU…`Jƒ5cúîæê_7žŽ‹ endstream endobj 487 0 obj << @@ -1730,42 +1748,54 @@ endobj /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [336.998 327.93 363.898 338.874] +/Rect [336.998 272.14 363.898 283.083] /A << /S /GoTo /D (subsubsection.12.4.1) >> >> endobj 489 0 obj << /D [487 0 R /XYZ 132.768 705.06 null] >> endobj 174 0 obj << -/D [487 0 R /XYZ 133.768 640.508 null] +/D [487 0 R /XYZ 133.768 584.717 null] >> endobj 178 0 obj << -/D [487 0 R /XYZ 133.768 302.401 null] +/D [487 0 R /XYZ 133.768 246.61 null] >> endobj 182 0 obj << -/D [487 0 R /XYZ 133.768 255.203 null] ->> endobj -186 0 obj << -/D [487 0 R /XYZ 133.768 212.04 null] +/D [487 0 R /XYZ 133.768 199.413 null] >> endobj 486 0 obj << /Font << /F14 432 0 R /F48 355 0 R /F40 351 0 R /F42 352 0 R >> /ProcSet [ /PDF /Text ] >> endobj 492 0 obj << -/Length 2063 +<<<<<<< HEAD +/Length 2173 /Filter /FlateDecode >> stream -xÚíYKÜ6¾ûW4r‰pÓ"%êá'Ùd×Hr˜ä/u‹3­D^‰òxòëSR-uklû{É"U,²ê«nî6áæO‹öË›'Ͼ‘ñ&y¢’ÍÍíFÆ™H¥Ú$:*Ò››róKð:”éöß7ÿœ¾{öMÎ>Â^´øæhp-,Éæ|S‘+é×|nNæ ·lÎ)ʄʵ_f‹»íNÅqP Üv'[umQ?Å¡Š¶dú¡kmQµ´* -¬ÙJ¼µ°Øîâ4 ¾³Ì¹jËêPX3ðÐ ë{•§‘ÜØkÆfu°w”SoðoªnꦕæuªÖ”<¼ízÏѸ“¦Bfñò¤î£ -ï–G*èn±•ô]ÓFp`;žÆÃÁ˜N¥u|9Vµ¥Kƒ©—n%ˆ?€B#­‚éó¢E>ðÂÒôi¦œ}Fò†KI¾£0 Šž®Al's@ÓJ&’ˆ°Šï*tº¦)Öktp¸ž»GS”¾WQ³Ð2 -†c7Ö%Ï´ežé}_œNÆÍÛk;¹ÿ]–édf)ƒ¸ÀäÈ;r$s`4$ýœ©É®*J›.¬CF ´½ùÏXõ¦|ÊC2tf@†™“iáÀ¡S£æªÖ1.Ípè«=Z £6|«Š.#“BÅ^• -3J*ow2żœó?=ì`QÙ8|êpº‡O©C‡ÙtôÙk»ëH¨¹Þ€£\¹² -#‘ǸŽ${§ræl=gkÇÙB Q¢&0ðœ(ïIÄDºËF᧸9ß’ÖÀ;‰pZŽ#ªÑ´<’†@f÷ìf’Xèø¡USÕ…»y¨7ƒë;ÐZ„éd¬Ÿ7¦Ù›~í@O‘”W¦8¦\î㯅Gƒíǃ½°Ï±%ÿ‡]Þp8ÛÛL“2Ô"Bª¡•>Û›Îâ^X æºUÀ’œ;r„¾>f.E’$YÙLÕ±ˆ¢y Þ餒"ÔÉÂÖÖ¼Cö˜w¨M»r×*i:ÝõΕ頺å–á <øáÆMÜ­kû¾xØ&:@çÇ´LÄAdZ±w|ºÖwzn›®÷”åž1x÷ºî0ŠÜ³Ï 9è‚'kt’/­Ñ ¤–ÜwûnÉ ÜGï@bà€C)tLA!(Ýaˆˆ¡¼‡„à9‡Ä¢õA–v¹Kpƒ–"þJ˜s.ñ38Jb(µc]ïMÕ¢Ì@ŠÑ®r ;7`ÙpðÙ—ò¼–±Oy‡ÙOæ~£4CéÌ3Çó{¯ü(dØü9žê@ŒO^×]Té9lòÖ¡råÒ=$»¬u4Åëïzõj ݉ÈÔäcP ¬PÜ•¸sPJ!ÔžÝ)øéz4ËåtúŸÿõ+nÿë·/¾ÿêÕ×+Rd‰iz-(ôˆ€ÄŒT¹0¤ðl9Óâ}eÆ¿ϦÞkR&à6õamWŒ¶{ƒeGeÖ§ôÂ…êtÊãÉŽ)°ü€ØouàES=ƒŒ‰RíÝXÜ^>¥KipgZã<ÎàêÜæ Ðrzå•;ò…XJYÓ`Rþù‡–* X0Œ'‚%nÑn€´»BxÑRJ\¶ã p~p4‡Õ0Œž‘±±æ)³à`]յˋ“{—þßÀlÞ‚Ëj‡‡ö°¢ÂDÌæTrB¿àúàS÷]WB0 Ø/cÔSéT¶Ë:ì ÌØ -˜ÂñM©™[¸˜‚à–ëÜKô d6æ“Õ 4S"ò‹"CiD68€‚¨ö}€`‹Š²ÀnQ<ëì­ð£Y2 C wâ\qÒúnÿ›¡\ –Ü0”yº7·à>˜n;'@çXú²õ*>úT¥ §iÂ[Ë*Õ´PÎ1 ӆзs'Я­éJ2iÂð 7›úAÇEg5sÙôü{,Wd/m±F¥ ×w[ª!Ëc¿ëÁÇÂ8§J•æF(¬9â—§w챇ºuÀû–að#ŽWÈÀ+¦ç‘<(;n/¥s~àÂø(1÷õ\1OgÉc³ 7—¹6ʳJpÂY…C3"ìØwmõz5ÛV±ÈÃt%ÙVSy7ÙÂci68¾(úè4ûG2 -E’^rЩÙëeŠµi\¥”ª)é[{OÊ‘§ÉÕ|ZÏ%#ŒÃÈ¥=¸K®’rLŸy*> {Óp®À9“ûºrÖ$=fÍ”—>).Ý󑌕ÐÑåó•ç.õN}ZžúG7è1H²Ì×÷@â$ž]4·c{p–Ÿ¥Wh Nð;7W”eu^YYn]ýúW'Áý Ñ­áq0b^Cº¢çï -*ì0Æ¢XÈìï§Ó÷=®5™Öôhš.-0kÐ4Ç ¢ùÍí‰À!c¼}™#ð…$ŸÈ¤v8˜b’\QÊS9 1˜÷„AÈ/9(Ví”Ô&ìT’êJfM1è„Ì…?ÇtÔ0&iÇÓiÙÔ-ê ¢qU²ZبøȆƒÏþ©/sÙÊ)óžÿ ºùÀ½(Ñ0¶ ž»ºÆ,É"ä[+ÑY4wƒî'ÿ&Zü\<¡~Ç_ˆ•Ÿ<w¨ÄIëæ|‡•0ß»a˜¦B}úcÈPÆu-go*|‰ç¬ü¤Ë0ü9¢ÚÿÀcBúºNQybçnSBýst˜°€®”ÂD=‹9õÖd°#ž¿Ò%küV]S{¶rÉàE!”aT,ÕôƒµÐR*[Ní»?¿}»æç™*ÌÄ6x!|µ¸^çNœ*‡dÒ^q¼\õóõ¸VêÉùÃ÷¸ý÷ß¾úî·o¿^Ñj`çµ€«=‚o@’F—º€T|ÁÐ4ù¶öàÐ^L~ Zg@ ögà¡íªÑwﱩýÃúñŒ]©Í§œž-Oàˆ° ™ë¼üRÛàÂ$9UíýXÝ;ž>¥NytïZ'‡#hº:Ù|Á9œ(@éáåžXË*ïLð©ÿØR•†ñLŽH)†LÚ ‚×èŽ{ž´Ô§íxhŽF*b·†1,äü^­1 å¶k|- ¼±:C­.Iá/æÖî#W;<´û•+Ì@Åb~ƒFO< ¸VxÅÒÛ®;9ò`è0Ccü3ùT‚œKm.¨i ¹±]òù¯÷u‚#€’Ú%À/…(®³Å¤¯ožý kðË +======= +/Length 2291 +/Filter /FlateDecode +>> +stream +xÚÍXK“ܶ¾ëWLù"N•"A€Ùå*Y±c%*Ù‡M.QÊÅÁìÐácBb´Úüúô Î,WŽ¤’ 4@ Ñ¯»¯îVñê÷Ïbi¿¹yöò;£W¥*3­nö«$MUž«ÌæJ§vu³[ý%J´J•^o’8Ž£7}ç]çÇõFÛ8ê÷ë¿Þü6)f›™JÓ N ¿¿:½ï¿–uóÃŒu&¬óÕÝ(‹âÙ¢M’Æ*Ë¡-0FKon½Isy·NlôÉã(\ãZf ç€5¢V –™*ó'8œn¬²vÎá‹õÆÄit_ûŸR5 Óûƒ„+¼ ×öÈáGü¸ü] ‡ q·¶° SÞðoÛ~縴ÑʦÐ&ª´¢Ž·C}[ww ƒÌF¥¡³ Nó§¡âÃÑq¯êv<ÝU­P4H©x¸íÛV)8ÜfÑÛN&w»Ú¯“¨î…à{ÙZ„þ‡e‹hº­Âv¯êŽ._²îï×  ÛÎèàT_oy„B{…ÿLÖùò»ÄÌMÓ¨Ò˜ÕFÃ~‰‡8ɯþ¹ÐöÒ >´šÇ¦äªÔÉd +(·%KH ¥K;³àÚR%¶ýуœªeb‚Ì.² UéÌ\qîþPo—ÛTÜ|\k´‰Z6]BOT[íûœA6b3¥“ìRÐ þMg‹ÆŽ¤óåÂe27}0“Ñ[Ï;×Ý®ÞVÞ<ô‡Ê‡^hÄ7öÚÓH³6ºÊqpxÉu›¦í܇8ÖÛñpßaGñ¥¤0×Þ@?Õžì4MÅñÓ„ý bß<@+ÆÙñ´Ý:‡FoÁè¿9Õ'¡ÁÔY ì/Ð)t4ý^u¨Â^¸sCM·`÷žý¶dü¢ï@´H IÄqt[ô4¾xÂ,Â*–U,º¦)Ök<¡ t®Ú…>Š¢a¦“4ý©ÙñL×{Þ!lz?TÇ£“YöÖ+;¹bÿs–¸1‡qõ9?ÞXŸ”°9ÐôtäBOv®ò$·ù¥#üÔÐ÷÷S=Tã:3GF°"È%²˜Ä;-jŽÑº‚Öhi!²T5 £H”6༺P6 Ä[3EÛÙþÇj€<*‡bOr˜í™ØX™øìáôÛ×K§[ëq2×ì™,a§*‹‹GQxA ¥ŠËbùð«ÐjLq¡‡4ÓŒ{øwÂÉ÷àßXýâpªøjÿÀÿŽnž3`ņA’¦ÞÖ~‰ÅùoœÏ¶X‹K†°Û¹“Tô¿&]—ûn³hÛÚ^Db›O!Á¡°_ÌÅ„‹.Å„”.tªî/Ÿòî<ºscÀT49‹~ù,A–H¹É™Öä GÔ2„ùX°`< űxÑf„ú­F,ßò¢+e² O€yÂÕˆEÖãx +9¿UKú¤•s¾Ÿš¨è¨Žþ4ü5f¿AîxA7>tÛfÀb1× N¦ ¢¸Ð|ÍÔÛ¾oKpxÇäIçÓûÐù}{‡ +O¶¦pš¤õ,Ú>>>>>> 1.0 endstream endobj 491 0 obj << @@ -1778,30 +1808,62 @@ endobj 493 0 obj << /D [491 0 R /XYZ 132.768 705.06 null] >> endobj +186 0 obj << +/D [491 0 R /XYZ 133.768 667.198 null] +>> endobj 190 0 obj << -/D [491 0 R /XYZ 133.768 572.762 null] +/D [491 0 R /XYZ 133.768 508.254 null] >> endobj 194 0 obj << -/D [491 0 R /XYZ 133.768 513.609 null] +/D [491 0 R /XYZ 133.768 449.101 null] >> endobj 198 0 obj << -/D [491 0 R /XYZ 133.768 289.076 null] +<<<<<<< HEAD +/D [491 0 R /XYZ 133.768 224.568 null] +======= +/D [491 0 R /XYZ 133.768 176.748 null] +>>>>>>> 1.0 >> endobj 490 0 obj << -/Font << /F14 432 0 R /F40 351 0 R /F48 355 0 R /F42 352 0 R >> +/Font << /F42 352 0 R /F48 355 0 R /F40 351 0 R /F14 432 0 R >> /ProcSet [ /PDF /Text ] >> endobj 497 0 obj << -/Length 1823 +<<<<<<< HEAD +/Length 1645 /Filter /FlateDecode >> stream -xÚ¥XÝrä4½ß§˜;<_í(’¬R©Z¶v©…* –°\µ¥ØJâ/3öàŸ@xzZjÉc;ÎàJãV»Õê>}º=ts³¡›¯^а~yùâì­àÆH.%ß\^oXš­²’šðTn.ËÍÏ ãDnwŒRš¼ùÃŽ{»ÝqI“æW³ýõòk°”Í,QNr¡à oã¼hS—ÝEPž«Ñ<ªöæÆéŒnÆÕŸ“\qåÞÙ1­‰R -~d\^9fÃS’3þ¨¹ÊDc¡pl›¾¹8ïŽöâÃÝ{Û ûþüÌ?nw -¢p^›ƒ½¸¿{ÝZÓÛwu×›º°çg^|~†ï{ótiÚ´æpQ4ðJ0N‰F¢Éë&žè½„å*cD ¶þçw‚õ‰;N E¿üáþµÏɹXuoéÓÔ¦s’òìŸxò8>S?˜$,O~œÍr´›¥Q-tFDÑ 8ÄK¸Û優`õ§[[#`!A…í:[âcU÷MD²_^ãrkMiÛ­ ÉKô·U‡¿ZŠ.¾ÿ<¼®øá…`X"ê*é“8ž€h >˜)‰`³•>‘­ Ÿ æ%†)MR¨ËÙ±§³¼’̉ÖêYp8N®Å¾X£].‰ “PzbØçû-ƒxlyñ±¿÷¢}Uš¾jBzcØQ’ÈËÄHI÷X§$ðgj†cLF7†ðäf×SÛðŽûž„Ä{wÆÍšªëu@r(:À'D…ßå®s»’Ç*…{©øÑþùZºsA²|ì"¾ùšsܘÏþoÞÿðî»o?²tm:’DËôy°Ð ËÔAÅp¸‚Ø?ö"…Ÿ§Ápç&æY9jHÖÛXqbžT¦ñ³O@¡ t°ýªTê€ÐÜÈ bò,>C^'TLÓR@Ïf_±óÿíNê–|ëøpå€çÏU½¶µR“)÷£ïy癇é0“cârÆÒ¨&yÊŸ—QN5Jþ‡”˜¯O¨)›Q¬€éúè¨Ðì ¶ÊW5ŠM Ó»ßÀçEƒdZÄðxÀo¸UŽ =\"IûâþÌj#46¸¤”N~Œ¸1ºh$à¦Y•MØñ#.¬a,µu(~Y«”©²¿ãEÿ‡Ö Α÷@%Ñw]7]ÀàqOnÊ2NF‚ˆådTTm1ðÓÝQS&í¬''øHS΀?SÀjp9õ9øÆDTËÅ¥½(k8jŒ›?¬Y›†®BwœÎ_¾sRÞvý¶0ÛE`8’ea X ôÍå‹¿‘Bw +xÚ•XÝoÜ6 ï_á·ù†œÎ’eÉÞ‚]Ý€­è‚î¡ +ç¬$Fîì›?ÒfýHQöÉŽ¯Ëž,K4I‘?~9 +î‚(øùUäž?]¿Ú¼‘Q±L \ßßÐ÷–ý€Z5°F]€ûÚαrR&ËÛzhµe +QÊ´Œ‰×÷öÄ)îí“rŸÑ —n?ÿ*À»œßÜRÌuò5á:c±Hÿ&ÏíãëÁƳx¦Çfâ£õ¢7sDMRØKJd_:lüyo*'M½5mk\4•æ8B²}\ÒÃå2…gC AÑß¿ ¯ : ð"0Ìõ)J¢“8ö@´òI’0Éõ‹¼å!æŒÌΕf1ÄåDìQ–%J2¦µ"ò„·ð®Å\Ì>YÂlͳrÙçÝŠcµòsÜ£ÝÚ•EÞ•µsï`¶g) r=O嘒ñ»²{ZNI yÌZTÙa*ÊàÀ«ð“I6:Q ‚¸:©…ÏUÅÌ/eCðfXBÞS 06­©:z) –ÛÊ´ôú¸‰µ ¾ÆaßÚßæí@b«‰GÛ·uC_¹#4¤Ï¹š‚a,8íhÂIÅŽ5“©sÿ%Ô,ÐdÈ8ÃÚñÜ2€V!²oødzŒd\ú…sÉ)B30rDW94<Ï… +ÉDª_æšNª5ÞåXñíÓÔ¸JC4#îìëf Ö #ˆlV"ú6¿[줴ycÒÙ@û¢N]L*«£5_λ°Ìö q”bv4UA½YæºÁà}°Ón ½c‰8ÜÒöˆB¸×˜µK/±b"J¦ˆ²ýΞøêÈAQsêqpÇaCúG°ö;"¤Î››²kòæ‰óv[–E½u¬¨Íu\?dû#”»“AÑ脆^%Y,•@A+èyìR×ëwo)¼A“@¢í›OCãJȆ ›E!„X«]JfGA;µø˜Ìn-Os±¤F“žØ¦³¥$¦C@ +x(H«yœòÐI°Ib`{l(éÕÎ)Ţī>–EŸï–Ò ‚$ïÞì¾^0·$Ÿ!_G"|=ÑÌ ni“‹ÖttB9o§×é4îæÍ­­&[ë•L[Û›ªß›&·‰Kd©ëÁáph?\i€£!;‚›'zæt +¹²+·ý.oh›ás|D\’óÏ(VÚž"{ŽÁ¼𢓰ß=ä®òŸç£BYmw}1à,ßíÆÈgÓ^žà«±#+O¿Åá!šî˜ñý]Y‰(ì;OââØwˆãoÀúH íI"Õ¼œœôxO+ôÒ¤—žšôòC¹Td"&ÅH³žn g_Ï–Ç‘ìØKŽèõ'?›ø†øo;ma4ÇDŠc> +stream +xÚ­WKoÜ8 ¾çWøèYd=,?°A€6h‹î©(‚î¡Ýƒb+#3ö¬e§Íþú¥DÙ#;Nö$‰¢(ŠüH‘4ºhôéŒ.Æ÷7gY¤HyÝÜE,ÉIÆx”ÊŒp!£›*úÿ ,ÛüuóÇtîâcBƒCv&`Ã1ßì´å–<”›‘‚³‘ç²:ê+ÏJ9á…Ùzu¿Ùò$‰kƒc{ìë¶Qûs»”±j*¤—mÓ«ºq\"îõ†ÉøW{?wu¹›‹Q8ï±n³½Jÿ ”7ºB–»¶%j|cRœËùý¡ÚZØÛ;;2wÌÊöp@½aÑ·¸k†²Ôº"›­”iü~¨÷}ÝàÖµçõ}¶äñt\5ÖyOÈXé®v¯°4]Çœ¾t®©÷´ 4VU²¡pÔe¿a(ˆNEàr¶‚½ì¶œŠ@jáqNwZUãÜšbJ3›];ì+ÜiÚ%ŒBvêxÔ~w( õ_CŠiCÑ8 á-„°`š%ý!œó ×6H^Ô6›‡°¤{0vúï¡îtuŽK a˜! +-;9ªîé­ýíÒG¦´¾«/ºÒ¦ìê[‹5T‡GhWîÌ‘3Â\žÉrT‹q"7[FÁ5~©Ãqï¥Zh;µ¦÷’å¤H&G\zØ›«µk³„d<´BhüÀ ¡…·,ËHšÚ$““4_»&â‚Œ-ãYŽñkûö +öíá«6þ¿¼@ÀmS°ºóñáºÓs>7¦WM©//ùòϯÝ¥óиÏf 'Êß2 +EÞµãNK0P‘Z”’,IPÖonÇKè¨Ü14êå.ÇäÅó𞬪·Ô)Ô„e<ÿ/š<·O¨“„b¡ÇÅÌGÛ™ÓY‹+ö5@<œÌðÄŸ;Ýø8éÚR£}4ÕÍqˆd7\ãàsYBãó1ÐNiAaÆóoÃk¨“Çë/ÃQ?¨¤/â8Ñ|Ð'R’Þÿoˆ9G³³4#ârf÷Ó]ŽI$ËR¼@¼p§ƒg±ßW³O!I +¤eöI}öù²aö· +sÜ£#AY¢ð˵´ÑlÏRäz–'SJz´çêþi=%æbªÁ¬Ê𣬼 + &1eÅ«„K_T#› +’ÎËpg\Ûš"OlÙbtÓãb¬W .ƒzMä"ŒFz©ÌÈ‚eĉw7°ÖSc­âàCBŸj:†éÇ1“ g_¶ÈH’{€]çÚ‰(ìçñÜ2W΋WX&!, Î5¯ðŒ0À‘gú  ây~)Oϳ·¹Ã^šÏ¾kû–ÓwlWÿ讵³<¶f´”CÛ­áò¤^,’ß`Ôýj±$.qÌJ¨_Ò—–¤D¤'k¾]®-à +W„šÛô¨› +‹³Â—ƒ9dÀú€¬j x¬-K$O(ôáiiÞúü" K ‹ +Ú<”›QÅl¬Ÿ3:bÒ†ˆá,,‰,·ênë¾SÝn*SÖuÕ–^ÔÔòØ=_¹ /R~gT”Î1?iTP IÊGÐCÐrŸô˜ð¹ëݗϘ@>Z“@¦º Ëcíÿ ¾A:£1„Xˬe³ÓEÌ–jâ”ÍîœL}µ¦°ÒYQìòÙZK9±€ä0¤þßtš‹Z ¼Á%‰±kÈÙ©¢Ä¥k +rêZ2lªªAí×Ò` +Y>¼ÅB½ ¿–[ ?£<~7ÓÌ_lˆˆ‰Ñ=î`α¯K Ëòe{ +iìÎ}'¥óJ‘9Ûëf8èN¹ÄÅ‹Üá°9Öþo€­ e´ ·O8*Ü…\Ù×å°W’¡DìÜœóÏ1V /Ü­’ÊŒxÉd<ì”ÿúÀÏË^¡nÊýP8SûýTùþl^Ì#üílBì$*Ðoµ{ ‹Ÿ[6¢¿ï"Nã¡n\íà B¼ë/Ô'2I—À‹­“˜BΆµV/©ÕSÇzí“¡$áÏvÞ¹Ûü¶<õd§brBoØú¹Ä7Æ¿Ñ~×@on©ÕØƺû'_?Eß“ |ö$_¿x`8H¡_ÍÚo¥“QÖªkD¢g™÷׶Î- è„BÌ]$#æVþpsö/×Åÿ˜ +>>>>>>> 1.0 endstream endobj 496 0 obj << @@ -1816,138 +1878,181 @@ endobj /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [384.815 244.183 399.26 255.127] +<<<<<<< HEAD +/Rect [384.815 176.025 399.26 186.969] +======= +/Rect [384.815 140.16 399.26 151.104] +>>>>>>> 1.0 /A << /S /GoTo /D (subsection.3.2) >> >> endobj 498 0 obj << /D [496 0 R /XYZ 132.768 705.06 null] >> endobj 202 0 obj << -/D [496 0 R /XYZ 133.768 667.198 null] +<<<<<<< HEAD +/D [496 0 R /XYZ 133.768 608.628 null] >> endobj 206 0 obj << -/D [496 0 R /XYZ 133.768 489.163 null] +/D [496 0 R /XYZ 133.768 422.546 null] >> endobj 210 0 obj << -/D [496 0 R /XYZ 133.768 421.129 null] +/D [496 0 R /XYZ 133.768 353.998 null] >> endobj 214 0 obj << -/D [496 0 R /XYZ 133.768 355.974 null] +/D [496 0 R /XYZ 133.768 288.329 null] >> endobj 218 0 obj << -/D [496 0 R /XYZ 133.768 277.807 null] +/D [496 0 R /XYZ 133.768 209.649 null] >> endobj 495 0 obj << -/Font << /F42 352 0 R /F48 355 0 R /F40 351 0 R /F14 432 0 R /F11 499 0 R >> +/Font << /F40 351 0 R /F48 355 0 R /F14 432 0 R /F42 352 0 R >> /ProcSet [ /PDF /Text ] >> endobj -503 0 obj << -/Length 1351 +502 0 obj << +/Length 1506 /Filter /FlateDecode >> stream -xÚW_s›8ϧ`ܸ ²$„€»KgÜÔisMlOÂäÚkn<Ø–c&6ø§—ûô·’À€KLŸVûO»¿]-Øx0°ñá|ß…'ý ÂŒœr#\„ùÈ#Ôஇ¨ãáÂøjÞcâY‡ìåúÌoÉ•Šyžn6")$?°ácÈqXÅg[6u±™n‹8M¢5²l‡`sÍâ"‹²g}šYœ<èõ=vñ.Ùåb+‚JÔ ®K¥›ˆ2bØÔG.ñµ!â jÙclž§I¾å¥ée©ÃoêâŽWyùûRDÅ.o»Ìq¹lÏZDyÇ­mÂ)">ƒ…xéÓ_"KáÂÔ5ÓL7i&öîÔÒ2 Ù{“‰vqí nsbHXÉ%‹mÄCœ: m›ô©[AØmßLy)s ¡7¹˜ËÜ)dH±‘=zqóáÄøª˜o!G¡É%§ 9fœhMQu“…È,×5U’eà„1‡…Š½vjÍWGêH÷ôb!òyÏ„Ì/ef¤©¹(ôò­¾1€ [Z€¶h®yAÇ**´T\R2‘oå-pèÉ"®)ÖÏÕ‰JÂBï–A†ÍS¹ T:5Ï&•BZ²bÍÒÍ©ºnߥXÅ%&K¸ê]TR«‹-ôv&Ö©të›ÅË"WNYãÍv-ö ítÁŒÿ\%´’þƒ¶a#8­Ê¨ÌX6o£m|Ö{Ú­£¤§)I´g½»OÓ»áÍíåx4%S\í63‘õ»=å¥AÒŽuUCZ¦ìVg½"’ SÄY¯E¶]G…h*:ÐS¸š¾Þ]ž§£Áõ°r¿¬âjü~z~5¸žLGãÑð'nx<þïÅS}tæÏ—iÖµõuØ,àQUÇ àÙðs²\-ôs§Ð̦P$’¢–„w Ið­ÍvqZís¡$„‹ü{Jº*òJO«?„  5å"òóU%K&THÌ Ãåd6KqçP0<Õei +U~߃Üh§°.MÙpÃ|Ã#h?spÎë;Z•œéß)å™=\R*ô©q(ÀD–WwP:˜l­Ù¼À¯6@ü\éÌBñëŠqJ‰TцÉRwäŠ$f G®’B×~˜p×A ^Ô'ç³ƹ "ŒÚ‘MÓbº^–U’A ¥ÿ "Ñ8„ pÐL®äsü&øÙÍ#á/w‚¶KŽ¬î¨MÞìa¹õ“::xclO¶œ05“¢¬¾ [Dà÷ƒvš/—:{ ´h‚|j‚08(nÒªHŠ/¸[7ô^Òufª#FÜÜÃÊp뼊  ÊÉ"<ˆ@eh”ú'94¦¬*ÝÑó ¦6bAT°i—G®F/ºŽS!‘ÛÎZ%·eGÔ}¦8a‘€AD”óé7]µ.ëð]æ…¹¶è=rHxÑqHR¸8œd’Í:¬AûRõ”ËÑ.2éWܸažÓEF9\Ïêû˜Ð*ú#m£ÏBJD´˜q´iŠ +¼MVéñþÃzqŸdû¸bšüñþõ›ÉõðêÝÙÅhÂ&´Þ²Oã}Àî¾õ[?kçºæê¸nu¼ÿZ'tvñ&Oð~Y$•nÚ±S}Yé¦O÷£xXî¾p×GCÏõæ£Ã&‰w‘ðˆwƒË³z%3÷NU~Ã1 ‰ØIÖÛÁûÉåëïÎNç“—Ã볓ád4x;¬¥ÿnâüâåää|ðör2º ;#”ÿ#—ú!ºÅÔÜ™É"ý;1ý¥#Ò:•FÛtºVN +@>Ëð~þŽö;ár¸ƒûÖsPC ³sP¨¹öë}G«Ü+«f-´¼¦›ýœàçÎ!ÏÒ?wƒë^(}‹{× +¶-ÓzQßaiöüiTëðôY:ÏfzŽÙk3ª«pÏ@6Ít§¸]cOÑ2H¾GV×`S{\ª§è·aðôÑÓó‹Á¸³¹O·aÞ_ÙôáÌ\g×o€\“Ëñ•ÕeÐɂд$B¾¬ìŽ$qzåËÓÑdmæn3F-MëëÍZtŽo6)xb‰Ž£œ÷õÕV÷`×,ªð³ɧkzû#B_0”ŠwrŸÎ›ø¸¼º_Œ?\ßu½91ƒ1$²#Ó¸ Ýç牣¶ì§d“II 1A+ð&cå56ZéDê+xbìþÁìäXÆ$ UÇ œÂ3['täx[ðfŽu6KçÈÇö¡!‰8{R;èÅPañ²£¦òáîc¿Õóð4„ß(DZ{_D-áxï[Öd' +======= +/D [496 0 R /XYZ 133.768 572.762 null] +>> endobj +206 0 obj << +/D [496 0 R /XYZ 133.768 386.68 null] +>> endobj +210 0 obj << +/D [496 0 R /XYZ 133.768 318.132 null] +>> endobj +214 0 obj << +/D [496 0 R /XYZ 133.768 252.464 null] +>> endobj +218 0 obj << +/D [496 0 R /XYZ 133.768 173.784 null] +>> endobj +495 0 obj << +/Font << /F14 432 0 R /F40 351 0 R /F48 355 0 R /F42 352 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +502 0 obj << +/Length 1665 +/Filter /FlateDecode +>> +stream +xÚ¥XmWÛ6þίȡæì!É’lw¥çd4´¬84cíº“(à‘Ø™íÐv¿~WºrbÓ2öI–tuu_žçê&´wÝ£½×;´5þ<ÞÙ?b¢‘HqÕÏ{L„$`¼§d@¸/{ãYï“÷eAÿÏñ/›sûG"¬2_>lXá4^j# 2´&à "V úF^®ÿ^'¹ž‘þ@ðÀ»ì3Æ<I–¢€Q¶ŸQä­ =ß0+Ô+o4.â°Êõ*Ϧº(²WÊì¶Ï¨§¶u:ÓnçóM2½1föβc$’ÎcTM#ï®Ï¤³è‡¾”ž¹4&i©ó¹ÑÃ}(çî QêiiÍ5×}éÅIZô™WâÒr½(“ÕÂÉ'ét±67ã—òF_úæÅ ¾™ç.˜õ€óH0U4/ßNηÑpærtñþøìtÂ&´#1J’@n²GZyn€c€,S ="”GOÇzy)¸o…Ÿ"¨ÁC@˜jð gG:.×&È¢™vªõ0BRÌ:^,¾¢xŒBE™'é5~Ûfl¢¬L†1V÷ÙYÖˆè2þ«?‡8óN!_p €ùóe’vmÝw›ùÜFtý–¾Äe^(ÊMâá]Jùüqå4 BIL©ÿ„Œ:°w˜!ñ™_g¼½lUBÆâ…ñâ2Lq9žÍÜÀy‹Ê°R§2L]5°f 6† >æ1–ΞF"gúJyjï“” +¼_+Øø + ‘fP +r3Ùj³;YŽ£68üRêÔ"±ƒª”©ÂïUGŸl‹£3ä +Je‡q`íG`Eus6›9ÒsAD6=›&ùt½,Ê8ÅJ¨yÚ–(øt¥S6€+ÙLJÓ<ï²å´]r\uWmâf/ˬ´ià•Ñ 4uØtÂÔLò¢ü6jO/CÓl¹ÔéC õE´`S´€Áa~•”yœÅݪ¦ õ’®S“-øbÄ]À{è8·Æ«ˆpï  c.Ì&C¥ Ô;Ì .¥eᮞo0UÓU^ù›jùÂåèe×u* r[XËøºèðzÀ',4ïFH¬Vöwµ|.ë0.³\w@Ü´ +[ô¾pHxÙqHRh*œdœÎ:´AõRܯi[fwÝÊ¡²é™µÒä Ð'”GÌc"íå×=ü¸x½Óûd…˜j Ç¢I2Ã7áÃ3šâmÖ1&¦—€Ž€ YèJU㣚 à§oÌÙ.¦yre‰Â…e¬ºÄË>îßo0ŒŽ›¸ÄS‰[¾­Œƒ}0DS0pŸNœ™š#çXºPf™™Cx²ͳå^_Ë›ÄaÒÁmgqQñs<¾Ò‹Ì˜õ¹¯\ŒÚȤ÷(à; +¸÷oü§‹ŒrxÕÓ˜ÐHúecÀJDä7˜ñbSX¯’ƒÝ»õâ6NwqÅùƒ]èÊjWµe;ƒ]ÀK«ý¬8„g\µ:Ø}£cÛÀšÅ«,Y@û²ˆK]WÔÒS~]éºMw·sð°ÜÝéžÚ9åÎí×IÜFÂÖ Ï«•Ô¼;eñ Ã4¢¬wÓó7ßO&¯F—LJ£Ééðݨ2”~_ÅÉÙ«ÉáÉðÝùäôìtÔé¡ü¾ÒwÉÔ-&æÍŒÉ?±©/žV¡4§M¥kdá0éãßçÿ`è .û-Ü7ºA ö±Tðo7¶V¹.«b-”¬¢›q¸qȳôÏÜÇe?žÅ½+Û… ~â•Òç£ZÝÒ-}–ÌáGÛ£×dT#q.ÚÏ@6Iu§¸]c]énŸ2H}NíYƒA(L!ìq©s¾ CóÛÖÒ£“³á¸³¸O·nÞ^ØðáÌ>>>>>> 1.0 endstream endobj -502 0 obj << +501 0 obj << /Type /Page -/Contents 503 0 R -/Resources 501 0 R +/Contents 502 0 R +/Resources 500 0 R /MediaBox [0 0 612 792] /Parent 480 0 R -/Annots [ 500 0 R ] +/Annots [ 499 0 R ] >> endobj -500 0 obj << +499 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [385.801 606.884 397.756 617.828] +<<<<<<< HEAD +/Rect [385.801 519.213 397.756 530.157] +======= +/Rect [385.801 478.469 397.756 489.413] +>>>>>>> 1.0 /A << /S /GoTo /D (section.16) >> >> endobj -504 0 obj << -/D [502 0 R /XYZ 132.768 705.06 null] +503 0 obj << +/D [501 0 R /XYZ 132.768 705.06 null] >> endobj 222 0 obj << -/D [502 0 R /XYZ 133.768 640.508 null] +<<<<<<< HEAD +/D [501 0 R /XYZ 133.768 552.837 null] >> endobj 226 0 obj << -/D [502 0 R /XYZ 133.768 570.152 null] +/D [501 0 R /XYZ 133.768 482.481 null] +======= +/D [501 0 R /XYZ 133.768 512.093 null] >> endobj -230 0 obj << -/D [502 0 R /XYZ 133.768 227.094 null] +226 0 obj << +/D [501 0 R /XYZ 133.768 442.14 null] +>>>>>>> 1.0 >> endobj -234 0 obj << -/D [502 0 R /XYZ 133.768 161.505 null] ->> endobj -501 0 obj << -/Font << /F14 432 0 R /F48 355 0 R /F40 351 0 R /F42 352 0 R >> +500 0 obj << +/Font << /F14 432 0 R /F48 355 0 R /F40 351 0 R /F11 504 0 R /F42 352 0 R >> /ProcSet [ /PDF /Text ] >> endobj -508 0 obj << -/Length 2379 +507 0 obj << +/Length 1975 /Filter /FlateDecode >> stream -xÚµYY#·~Ÿ_!yh#šG³`c`Œ7ëq°ž,‚xƒ¥ni:nuË}ìxòëSÅb_çˆ7yQó(’EVÕW)¾:¬øêíwßo﮾þ.”+!Xªµ\ÝíWB)GÉ*Ò1“J¯î²ÕO™\oç<øc]uyÕµëÔ<¨÷ëÞ}s$ó9ÒE*†ìà7ù¯0¢-êªýÆI/VLRÆ£hîÌ¡uR|•²4’ -mDzq…êYÙ[³»ןd¥ba¨žY~>q¬™Ôé ¼-ëÝÏëÒa°ƒš¢j©öI©T7ô=ÖMîY\€~Iš^®î[2FÖç@-%Yœ†Î¿µón{r8Éíè4TÇ3™\}šH(Á´O›{±lš0‹™½QAŸ·K™²< -LF1É“ri²<'T0É(Ø™åÖ)ÐXEsÛïZUV¬%œ[‘õ¦ôùn2Î_ë» ‹E:÷]¶Þ„à`7•GK§„S-NN‚dræ$y‡>!ºÀ7†=ty³_ ˜]ÞR_–ä\Vän1º›m6T=ð³]_š†š]DÄçJa_{ÊwN¶3Ý&IÐö6aˆi=G¥„b‰Aææý·Ÿ\œ=‹-û²+:8Ï~ «Ñ/˜g=p‡T½T¢p4 ¹JEÐÇ‚Ž*J—KhX=¡ö>7¨­o”L“A,”Q°]Kô-¸ÙARÅš¾÷E>x¦“KÓ#6xü2b<3Ä缱ƻÔ+ÔL¤£œ©2¯³8DHöE™¿0¼ˆhÚÙDò§¹@áRôlÝ Àè2?BírL‘ÛØa­L®ó1–1dùd@g&|^â9"¸`\©gyÆA$muÎAFžôõw"\‘(f)ÂóŒŒ|ä">tÁi4®€gî1¿Ô,™ÈÈ6FÏ~é È« ±SN™ {õ˜ yì벬àlŠÅ^kEœØÌ:ä.eVå ì(ª3ÉëX}ù³©¨þ#Àã²V½eÄNÈ -*©Ó õï „8'KTý_}øó§·ï|÷Ã_>‰Oü+Ï©XWËtOšF‚·pÇ9˜è7ئ?n -]ê¡`ƉW‚u¤H—ÖIƒjÍ ¥!ÇB%&´.°Ù&Ch"ú µC°¢QÁ–}UüÒç$¹ EÊ6¤ÓÂ$ãzûºñØ!Œç±ñ”3*– -ñºS$Jyü‡þ,(FLL× '6€ó§Ó’=Û–#E.læ*ø[ÛS²Æ~SÕà UœhÚ5^ÎùM›‡ãú5@2áˆ=©÷p_!=hó62……+»reÎéáž ½Üã®hvý±íLeïØì$§"*æ@-ÖO‘Ó»úùš°´ƒàpF~i‚× ~ã.¥@ FMÊ|y“ݺúì.3ˆ6Ž=éê䵿ÝÑM|o–ƒ$3?Wq8÷ó(Á%‡±f±2Ž‰„€Æîò„-uúìû²¤Ž]}<Ü«‚'8{—åH§… ¦“AZá …½è„b §ÜqQ¸ì˜1Ô°yßÔG×A—ƒ. Lvªá~ì½H8nþ€È‡VJZ /y‡éD"z–Û[¸¥b ²²kÏšà]°ip¨Å¦oÿ~ç 0—=Ï>…àDž« ÄìýsãØ_f-&/߬¤y¤N<|Ûâ®mî±» }ò²ÜÌïá <:®ß¸&õ–Œ¯k;—%Šó‡ 8àÿ¯÷Ë{a>œÐ -a>Š0¯crlŸv•‡{ ëHŸñ87CC_Kúpd.Wu#äøè~m±µsì‡Ãsú,ïÒnr°º Jód*÷-½ B‘œ æpMn_T»r-‚x~Ù÷!'Ûö{ôPËì Ð’ZÇÍb¥¨@ã!dµÓÖ¾÷¾Æ=dÎXÌãB -B -;óâ•Ê¶ÙÄâ–9äƒ[KGä°”MQº‰² éžÛä[é·>Ý í4Ã퉼¾a0æD53¯TóÛF0…=6R°0A’”©ƒ$;åoE€ß$a• Év¸‡±³|ò@é”…Iü">I¦âÄ‹Ovÿê[‘eA -zÖŠR`oÉËi~åÇ,â‹âùˆ¯ þxV*œÇ3ÒÒY<Ã6o¦§pË^á`Vï¾}… åì-yz;Øà+~(.Þ,þÿ˜ü˜ÄÈ…Oÿ ?1 ¸¢õSbà?¾q”èÿƒWúÅ'·hº3ÀlÇú³2Áøôi7fµD#´yN•X±c£W¨"_5‡Þ¿½Zýd…D´pëNZXHpÿ€€Ðü{&HÖ´&g¥œ8?OÀÏ(†T˜½¸!~j¥+êý€ËGl -wÓѨ*0ÌqƒC –¬Æ ¯ƒŒÚ1 5u3ÈgÿŒdº\ûÐÔù/îiÚœNÿ'XÎêÞ˜Ö‘> k¸áF,ž´‘)KÆHHB·wWÿu¦Y +xÚ­XÙ®Û6}ÏWEd f¹h!‹´@RÜ´i´HoƒMж‘%WKÒÛ¯ï ‡’%[71’¼Ø9$‡³œ9#¾x³à‹ððÿäöÁ7Oc¹1Sq*·»…PŠe©^¤IƤJ·ÛÅ_‘ˆ—+Á9nþmó²qU¹\É„GOŠjó¶¡çW<áË¿o† õdÃX0­œç·z”÷[4ßñéù(q’š)}@…ñÆYÌR™€ûmª²µ®ÄÛmóWœËÒµ¸ T;šÊíf?iA)?/Eáá§Uï÷ŽÄydë ¶ÍW¨×beã"^¬„`& ¾ðçæ[2ú®ªéŽ€‡Ç¿=c'»úuÞ®ì¤Y"tïQ&‚O·míÖKÉ£®Íƒ3AóÁ•§=Œ«¸ò$® ãà—“!›97 +Ã74KƒvÏ«2¿ò2ÜâpO^¶Ô߀gUö…Õ×/\MÔ¿Á¸ŒB©X«k£0a2Ò`‰¶\©$Å!¾ý—×=a$àÿ¡ªgSôÓÆ\ž>wxj˜Ôb|õ‡°¹îcbTjHX-§AÚl ¤\ ©£”Œl‰ÿ +c“†<@pëDE® ÂõÚµµ­ïhMUoóšfalÑî«îÍž&1êa§»~eNíÝÑmlQŒ·ÀŒÁ¹õW›Ÿé[Õ­W×Oy–Sui¨´‡üa«èߎà |‡?aé¾;Ø°¤ÎíÖ®]áÚ;„46‡~ ào*ãßIŸ£h9Üdà¡®&â~wOŽ5šÉL\ƒ¹Ò°L÷˜›‘<)gôÔNß²Ô4Œ +\ðŠîÆyWnÝR‚Ñܶ³Å\às~màBIãâÑ°å*†èz\Ψ4 š¶T:°°H–I}!y‹”zPW +oóz·€Û„Mœ Ub-ÃXóÖ^‚lÓ¶¦áÙ¹R8×óÃÍ6¶ísDGMçÓ–ØfÆTJ(¦å€0_9ëÕ›¦ì :AA%°pZôþ·3‰™q©DÕ¿ûêå/¯_Þ¼øýÙ¯Ï_‹×ü««87‘f‚÷ºFB´pÏaP&Ÿâ›î°"t©‡ÒŒŸX%xG +Ó{g ½Þc”&¶PVPgáE÷{ú‰¾¡ Âñ¨}¶½q€,àqô+¸³+Ý?]N’Ól¤ŠCjM¼2œ:—KWÄÙ8=î‹GÅŒ×ÀÈðì3ìþA\L™8õhz•ŒCñÄÛ]Ž ©ø£™ìXçMàÀRŒºvOÓž4*‚,·qí\Ñ0)˲^IÁgt„ÎWd©>°0Î óõÇ6Y×zH©¼µÈ'h:Ðiע܇<6@â‹ÐÃlÛ·óÝ;8\ħKÝ\PpŸ¨uíÃþ߆s±ÞœÁóÄŸ™¸ŽlÀ…õÏü`þ§)K”ùŒ8RÐæ›vŽ@+/ä8 +¥Žª#bŸ-|J¢¿0l·[Gôñmü‡i+ò­_E]ã »Ÿè—"´_ DDÐiÊ ‰qËtòñÄ+¨¢?šŽê5ÎÛ²‚H¨é%xΩÂààœ·ÚxO®’ŽxK½€†…ô ËûÌáC œ\m·!è•d©H¦wܸzÓšÖ–¾'ÀÁÞÃMrz$@…‡±hÄÇ)òúð~Þ§ÀP–¦ìm4/MðzÞç†4ØCì5)òi+»ï£~¦­;º7Ô)j)ÐÓOtÛA‡?[è Lk=Šs•Åã8OµðŸÿ`\õ»x™@Fb@ãÐ@¡@C“–þv]Ų —Mu8‚#—…°C8áÙŽÖƒùC¡#µ&fFX>ƒä8ů¾ß‰EOQy`¤ÐóØ!ÛpxWW‡0AD—ƒ.5lv¬ MžmC$(ʆHX4XJ¿èL(<\,Ñ2ú‰HZî›qOÈjäfg΄ƒKÐO.}óçí\Ž hY’qZ)Ä' +^YæÛÐUà€[ï4yù-ÁKÚ;šDãû‘н….8eéï}^«q;ÂCLàùuÈbRošÄø…m +…;ÿž&€ÿÂm€p¯Rh ÀÈÔ˜‰ÐÍíƒÿ> endobj -505 0 obj << -/Type /Annot -/Subtype /Link -/Border[0 0 0]/H/I/C[1 0 0] -/Rect [385.801 140.01 397.756 150.954] -/A << /S /GoTo /D (section.16) >> +508 0 obj << +/D [506 0 R /XYZ 132.768 705.06 null] >> endobj -509 0 obj << -/D [507 0 R /XYZ 132.768 705.06 null] +230 0 obj << +/D [506 0 R /XYZ 133.768 667.198 null] +>> endobj +234 0 obj << +/D [506 0 R /XYZ 133.768 608.329 null] >> endobj 238 0 obj << -/D [507 0 R /XYZ 133.768 667.198 null] +/D [506 0 R /XYZ 133.768 561.131 null] >> endobj 242 0 obj << -/D [507 0 R /XYZ 133.768 597.627 null] +/D [506 0 R /XYZ 133.768 486.86 null] >> endobj 246 0 obj << -/D [507 0 R /XYZ 133.768 483.911 null] +/D [506 0 R /XYZ 133.768 372.314 null] >> endobj -250 0 obj << -/D [507 0 R /XYZ 133.768 173.634 null] ->> endobj -506 0 obj << +505 0 obj << /Font << /F42 352 0 R /F48 355 0 R /F40 351 0 R /F14 432 0 R >> /ProcSet [ /PDF /Text ] >> endobj 513 0 obj << -/Length 1261 +/Length 1716 /Filter /FlateDecode >> stream -xÚµVmoÛ6þž_!¸À 1#’¢^–¥€ã¸k–Ä1l-m±†bÓ±`YRõ’6ößw)Gre'°O”ÈãsoÏÝÑÐ4CûíÈPë¹wtòÎ$ÆÈeŒhÞRÔ"Ûr4‹ÙˆP¦y íO3D»=l†>üæo’w{„z¼”«uÿò~(§e¸ˆ¹4• ¿òo9² Ž²·J¼¡Ùq‘aY•tî?¡­©ÕZ*q‘kK\êa×AsáVgWS·gÍ‘¿ág»«ÙÕûÉldIè?Ͳ¯~2_ùAÔQBÅ枧gSýgE’ÄiÎgÇ"\ûQ§´Z#¹ƒ¾Òr¥0å_Š å5‰ð÷Ñ °Æí´Øvq9_÷?ͦúãÁûþåh6³»ádzy;êœH|ã%lóuØÃÞp$€g£?n·“Wãÿô¥ˆóÓ}ñ”§Š2ä@Nx¯·ª3¬lê5,eYþ”ð†«ë iÍ8åòËhƒ–}ŽÍãÍÆu„Çõ å~Χ+?å‹iåSVCéµå÷¤Á€^+IN¶´¬øoÔ˜ŒMäš&\…+XÙ[ñmaÕ$(”ªN¶4md¢–]Iúyž÷]bèE^Ö¯£gþS&¾l=_ù¹ÜËWêw1ÓŸ IlJzÁ?‰@i¹½ŒÓ» ¾ìbè E¨P“4WB.ãµNíø|6˜Ñâ-E¡|•ØâjIV‰Fݳ±þaÅÁxJmaÂœg™0šRð%ÊcyàËe —÷<•ß¥câ#oO„í ÊðËƹˆ³Û†â°™ Ø"¬B ¦~‚HQ ²h3§«­‘Œêó8‚$•×˜©gñ†bô Ã`-Á埱ŸeÅF›p9­I-¶WTrƒ\tj¹%ú¼.ó+6²„Ï!¶å]=.»u&Ê´òT„Q¶coÙ^•ìÛv¶Ç­$y˜ñ.aú×OÕ´ -"¹*–úÇ›kÁ”_^7hÀ%FH³@ßуHõ } Qžâ¶Ôvÿð¢nÌú°Ý®/ÅÍÿn]³aKáÃVé‘MTŽz ‡hrìæi1Ï•Êöv.ÿÞ;ïÖÓ¤H¹Wl›Yüœ¶ù ”)•qP²Pc.²m1o ]¹ûYj4(<Œl­vŒ ³Ÿªrµ(20mfæn=áóœ\ípéd:­ÆìÊ.²ü€ìy‡”T² O³ Ýàtÿúç`pO jË00+»ø-åîª?¾œ½Iy[64w*CGë¡cȵeàÔöøÝhv`âŠâ¬¦À™.2©» þÌGå÷±ü) ÃS2Svn8ˆ‹(?~@¡­|i]E½ÒA¦±[Thµýäùzv¬üp14*r@w? ã¹/úïÀÃ{¾ÎTd1¢®ÙBJE¶:'HœVjm˜¤ì»J©Ü¬œs(<£­}*XCÅs²D¦å0†W?#M½ –Ïü¹š'·Þ­÷i<œ¶²º¤Sßó&m„“§ƒþõµªØƒü1t‰Š9ªÎwZ zf’*ßÿ‰Kx«DÔãý=—šÝæǹÄÚm`dÁ€;D¦=]î ›š•¢ü®—J+ˆc!—˜;ƒ‰Ã{eÙÛ»¯iK¼À=xLMkb4® ½£qñ` +xÚ­XmoÛ6þž_axÀ ±BQïK MÝ6k›‰—vëC±èX‹-¹¢”4ößwÇ£dËaÒ Ø'ñåx¼×çŽb½ëë½Ùa[ß—ã½×Ž×‹í8àAo<ë9^d‡ï~hs×ïÓÞgëO愃¿Æ¿´çö^{ÑÆ!¹°¡ˆ§E^%Ó +éŒmyžíÅNC7 yXŪʊ²¦}ÇJdÃ9ÍðöÛ,­“­åɲ‘¾¸À©¤Ù]Viîb™d Í(MÁœR+ùHê+“lµ%2BÎ#ò÷¬‚Øsîn¸&c0Ç:™ÑN^h’Ü æR cPX9ù$9 ®}«äfà0KèåYY,õÉ ê´()BRô'íflû±íEA´àâCCh»Üvø¡JªªÌ®œYu…bùÌú»– h¸+ˆ!÷–K]Í)T·/óí(hE²·2³“ÎCÎBÛs0ÈcÛçñwåór‰jÌg×õ6óÔÛÌgPó¨¼Êª2)ïiW‚a0pü'óYC¨¤0rl}ï‘w¸,Â=žGp•–ÞñmiųŽ!Š@6©¯žµ6Ýà{và¶F=Mrš.Œ;Š[ÕÁÙÒ ÷Ð ÛwáÙAD¤ˆ²ÀñU°ãwY”&#®®Að _ꬦ˜JÜD€ÐCnNhÜÝà¶,nÍÌ›ùaG1%%:A +A)¦ +u04PDÖ+¯{48³Óû¬ˆœ :*œ|GAf2qJÖn'›¤ø¾OÁŠ†smÆ‚n&ŽžQ_Ó r +™$$áGB«RhP(f ~@9˜aV%S!›tO*:Õ@¦9*¨a^¨¡v”R àA@7 5EÙÐ, Ú,D–LîB„ ŠÁšêñpÐZÊ4u*°¯Ì O"dݳ© ”¬šëª,ðÈ‚Z£!$»nÙ+„A[×v¨Ñ2ñ±V¥­aTç‡~èXçØ¡¹nˆ"hKÚu#Äò‚6úÓg.’Tõ¦0VŠá 2;"Œôo Íoû—ÖXÊü¦ÇÄ[ hÁ`z’å:”À‹¡uC·Ò§—z×÷,Y,¡¹¦'l¶M š¡‰)ë¥Þ÷¶ºRE¤›UúaâSýCjêÿa \†dÂÔ,0Cš›Y4_øÆ#°£pÝë”=4G;ÚÖX,¤P5^º\e9}u”2ëÓ‡÷)??¯Ò€J>çÝý=Ë5=ˆ´ë˜°Õtþé"@¤ñ÷3ÛF}"÷þ†ØDüD±Õ÷h„¤bñˆAu·*k|¯©;ÍxN›ÿ<,ÇZîË› Ť.ÅXU'ô3NöÍo³\ê+o‹L…!¾Ç Žzºú‰nd®Í¡ÑßØX´ïë|  åtÜm‰Î¡#ä¯ î¥d9Å…}SYÚ¦Meõ¶åû²(.ohW¢”øÏ"o¥1˜çß'»ßñÁA(ŸTÀŽ3„”ËwGg'“³ñ¹:ê!€»k°œoÇaÇng¯O'OT\LΦ*;^Èn¼m€Wâ6›êMÕx—&5 ¼Ë'ZÎ6‹Ÿ÷[¯Òn%æ0ÆRÛQ¤ß]œuŽŒÆ;ÿÑà p endstream endobj 512 0 obj << @@ -1955,33 +2060,38 @@ endobj /Contents 513 0 R /Resources 511 0 R /MediaBox [0 0 612 792] -/Parent 510 0 R +/Parent 509 0 R +/Annots [ 510 0 R ] +>> endobj +510 0 obj << +/Type /Annot +/Subtype /Link +/Border[0 0 0]/H/I/C[1 0 0] +/Rect [385.801 539.714 397.756 550.658] +/A << /S /GoTo /D (section.16) >> >> endobj 514 0 obj << /D [512 0 R /XYZ 132.768 705.06 null] >> endobj +250 0 obj << +/D [512 0 R /XYZ 133.768 573.338 null] +>> endobj 254 0 obj << -/D [512 0 R /XYZ 133.768 667.198 null] +/D [512 0 R /XYZ 133.768 503.161 null] >> endobj 511 0 obj << -/Font << /F42 352 0 R /F48 355 0 R /F40 351 0 R >> +/Font << /F14 432 0 R /F48 355 0 R /F40 351 0 R /F42 352 0 R >> /ProcSet [ /PDF /Text ] >> endobj 518 0 obj << -/Length 2003 +/Length 1913 /Filter /FlateDecode >> stream -xÚÍYMÛ6½çWø¨ÖŒø!J -‚Û" ÒCQ¤{jÒƒÖ¦×BmÉ•ä¤ûï;Ã!%Ѧ7Ûm‘öbQ$5ä̼73¤ÓÅý"]¼{‘ºç÷·/^¾UbÁ“J‹ÅífÁ¥d¹.:Ë™Ùâv½ø˜p}µäiš&ÌǺ»âEbÖÐU¦IոƳo¯xš|Æ?ú¾L·©V¦§÷Oi–^ývû#¬ZÌWJ²4°)»Þëήc¾ssƒ)ãeæ§âúKQ*–ej±ä9+¥åîÛÏq±¹` -d8±CußÃf¹›™.JVj¡­hžrƇ5:§nÆ]L3yÊTž]Rj.ŒÜϼ۵«ß¯–R¦ÉÚ|JSÑ ý¤(“Š½h¸ÝPGm팖'[ãÚzx8˜þÞU™˜æ¸7]Õ nÜz?^µû=¼Œú.–:ÛiД³2Ë&C/•TIµ^×CÝ6ÕŽÞ?_‰,©v5ô>PO?TƒÙ\‰TUs£€«óÒ«Ú]Éø‡®ÞW]½{ î ªŒý›#J¤ÎC×¢ wÆ}ƒ&Ãþª¡÷›ŸßSÇ—m½ÚRß¾rWÛ¶í u-õ­ÍaI8pÛ#u´³—Yqa¦ÎX/í–´N:kà ƒh–¸ñ¾Ý=õŽ.iˆdN9è‚ßoP²Ç²³{¾°z€ Ô' 3¡„aXÑÉ›¹ð¬Húm{Ü­±]&Ai$¾£®³5á“PÏk܇= é~KSçå29öÕ½¡fí–¬v»úBH<ݲE¶†ýjkö†?ÐA%è°2‡­Eƒé ‘‚:ÕÞuQ,…ÆÙVWHPÃg*M0öÂNÆoW-èF!8µ(‹D±Ú\>%m,ýܳH‰2šyþ”(“2Éù<:*x®ÔkР^U;6åQ»¥¼{±øh'I&‚-[5lâÀ¥Î©Ä•„§’ðT„+œbicIåô9)F*q1Q Úq*Á€¥ç>ïˆ*qo œÚÓÓ“šs©2#A?’èTÚuŒVß„Dý”~&<àF 2M…/M,,;‡Õ\ ¢TLédž²è [»-õY’ˆŒè³"•ÎgBè'ûÌf½HðÐL¥ü¤ðÎq*ÿdfŸÎ–ì±­ÃYB²¡¹Ðê{ÿJ #¿I “CdâÊy@=‡5x,X9݉”Átk+x./òR! §K?úfFµ¥ .½LËYYˆ`ï—£áåä¢kΘŸµ!ïûS ùëš‘N.“~=>—=êÞÑ=ÿ-þÕ#Àb©($cCÔô9n¬‡/X"¶1lœã±Ä®ŸB%™Ó«H]µäR°¬aµøÁl ý¹ÔR”Ü:(–ØsðD‘O%×þ`¯á‹ÃÑ¢½¤ÂŸämh8öÙÛsê±€€§½f,Åœ®Ø}_O÷eM(´¢G?^3º…7AXÅÇKA-˯Sø" .œíAA¦"3á d¦ñ~`vu ±ºé‡éŸT{í½ûkbü+¨ÿ"×êD™ØÅ,ÒyNUMDՂϣؓXüÈý™þ»„±>;'P`’*ÓƒœB -W4 -Lzsûâ/K»L +xÚ½X[oÛ6~ϯÐyˆY‘”(i+dYÛe-Ð"1líP( µ%O’ÓåßïR[΂ Ø‹Åë¹~çBÞxoÏûýiqöòM˜x)K•PÞbåñ(f*N=_!#o‘{ŸüeU6íl®‚ÀÿíëÍ·l·\gEyYë¬ÕWåªz÷ËõìÏůS&EìÍ9‹CIw¿£ÎÒ(òë»þzsnÎÌyÊ™H èô1ï‹Í¦ZfmQ•—Ùfs›-¿6D^q&Óðc5bl‰TµcKšŽ¸ÔtÊ%’©D=M·îró9ˆø–OYzB²”ÓÉÅ*×+«Þ»/¯?,>,~ÿøúÆ\ ¬PÊ +õîâãÕ—‹ÅâÚÙãZ7û³ŽÙ½¼xÿžæ÷_ÉÂ7ë¬Öy/èB†‘„ªþ³¾/–z6éäfv>ÈÝe+Å—Öm:hTû²¼ò,(…Cs[? Ö' $”d—ÿJ#Æ<àLñtÄùK“|ÿLc&Vï!“I4‰D±T„c„¼Ðe^¬ð„µðxÈd¨Æ5¸AOaÊÕlÎ0ĵþk_Ô3žø:‡¥4ð³Ò®õ¶šqþ¸Ý«²Õõ*[ê†æJ& ø‰ `ˆß«ÚðÑ?NÉ–Œ§‘;Šü'ÎEBø Â1K¥ìèn«ûi²±`!аdÛìΘϞ 9oŽžå!ÄL¨˜.\tR ²cÀÂ8:¥Ô&¤Ï áîä- äë <€áô9D‰ö“"õ3ú4º¥íjE …±3Zžl{hëöa§äs¦¾.÷[]gek÷çðò²ÚnaÒéëÍU ¶ScXšã¡ ý,Ï „lCóû™ˆülSÀê­4-Ä×V#'R5\ êZÏdì¨pOØFÆ,I;ÇÜZÙ„½!?2ì콂0ߟ°w¸èàVÕSÎÿŽ˜þ»ÕejO‘S‹£Ž1##Êê“8H—'`’ðt“!FGRs€h|ˆŽP¢BƒøJ``Pß#”à^Mß±ÍõǼ(DÄÒXŽÝhÀ)/†jèDôØɈ©4ÛíQg*è:ë/Ö¨&¢À7_þ®.¶Y]lhy…*ãújiqWWh¶wÐd¸ž•4‡bI ßÖÅrMkÛÌR\®«ªÑ´ØV´–ëÝœp`Å©Sk(xCEX/HJùµ±a„I4òí~Sm5íúwç´E"«,Œ‚ ·®‘²Ã²Ý32Ÿà>ÂÅD…îQÂ0­(ÿõx”øͺÚor§~©‘‘¯iéˆ'\ëyŽ‚p¡Jwk:ÒZ/§þ¾Éî4 Ë*t…Œ¾#ƒ> Þ®5 šåZo3L C˜¤ ÃRïZÚ4‡ÚƒÔɶv‰r) nõ:› ‚®…¹$éîBSÑjJÁAÙDK`ÌåSÊÆÜ=ÊÔYF±$ŽŸ’e&9B +.VŠ4(–Ù†õuÔ°§Ê Ń' ÊÆ"ž¸‚qÛB\´m]Ü¢ö­¶¤vPÂ:HùHSПŊÕç—QSÐ2õšŸ0Á˜Ø ÏnÆpª{½|ÃÑ$ĸ”•@£F—><>¸4òŽ:­«b£'¼FŒóN±9Â)ñ«`€+hí߀EË;Ú²˜©í “ÂpnR.t©Á^¿:, C.pa@-H­)¯YÉFЫJ̲2‰|묜fØ‹˜8J³Lnºs¨XÑ—x Ùée¢™AR³úÞjR†wº„§Õ9èsÐÍÒ,«v2{õÎ-¸sìù½R8sJÑ΄R}µA"› ºRÒ§hö(º)Ð?C=\ØßAÄN Úß¾ašÛ`ìÁ…뢾-Ú:«m­k,Öœöå¾!}W" +™Hc«…z†Ù®˜Ð@@+.“QxˆQx@ò½(iÙïbD m'^â=#f‰À«ï<\¿=ó>™C’‰‘ÈF S8Õq(qJÂ…’p¡$WxÄ„ ½ÓHŸƒf¡ %.úP‚ñt(Á† %Î]Ý¡Ä1ðhC_D0Q˜FD°ŽAtHmòÙþ¿QÓ—Ÿ(t¦¡ëõT%„ÂtŒª!i"új2¬XôŽ-ì{–òŽšýnWÕ­{øÂëÊäs ã <ý®ÊUMõU ËÐùt ¨¨{?4E¹œb ÅOªè)#ê*Æ´›Zgùƒëréáa·lŠpèXv¾šîD¦ˆ:a;…Ë®W:Ý#À+_Éøé-Bü”áù‘%!Ã&<5èÚ¾ª·•‹ ÷ì0qKÈw½l—u ¶Xu¯ˆ˜G5×õ÷%cv‡×&›”?§]yeÿ2˜lñõÖ5Y}¦hÜÿEôí³€û_­A;Y7,Sš8äuñfÉO"jO_$œðÍ4öc,Pè7Om[Î5&ã`Yˆ–Ö¯¶É·N²™£ß¿æ¬ßF½ðØgà%@3— xJ’>:ôzqö³ƒ endstream endobj 517 0 obj << @@ -1989,96 +2099,99 @@ endobj /Contents 518 0 R /Resources 516 0 R /MediaBox [0 0 612 792] -/Parent 510 0 R +/Parent 509 0 R /Annots [ 515 0 R ] >> endobj 515 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [335.813 419.424 350.258 430.368] +/Rect [335.813 254.107 350.258 265.051] /A << /S /GoTo /D (subsection.3.2) >> >> endobj 519 0 obj << /D [517 0 R /XYZ 132.768 705.06 null] >> endobj 258 0 obj << -/D [517 0 R /XYZ 133.768 667.198 null] +/D [517 0 R /XYZ 133.768 509.719 null] >> endobj 262 0 obj << -/D [517 0 R /XYZ 133.768 516.657 null] +/D [517 0 R /XYZ 133.768 351.492 null] >> endobj 266 0 obj << -/D [517 0 R /XYZ 133.768 354.117 null] +/D [517 0 R /XYZ 133.768 188.728 null] >> endobj 516 0 obj << -/Font << /F42 352 0 R /F48 355 0 R /F40 351 0 R /F44 353 0 R /F14 432 0 R >> +/Font << /F48 355 0 R /F42 352 0 R /F40 351 0 R /F44 353 0 R /F14 432 0 R >> /ProcSet [ /PDF /Text ] >> endobj -526 0 obj << -/Length 2383 +525 0 obj << +/Length 2356 /Filter /FlateDecode >> stream -xÚÅYK㸾ϯ0ödc.I›`²Ø »’Æ^69ȶl cKŽ$OOÿûT±HJrÓÝN‚=ñ)²XõÕS|qXðŸoÿøðáÛ?erQ°BK½xØ/Dn™6ùBç†I•/v‹_—Ÿ¾UÓ×m³Z‹‚/«æzîWÿ|ø3|Ë'ßÅr¥à`÷Ñ®ú粩è›áè;_V2_–§«¶{jËÉÙUW6 ëæT‡#ê&n¥»í”n“±¬ÈÃåßUäþ J×2³ŒK»X ÁŠÜ?ssj·ŸÙjzùp¬:¸We@,uô²¯ö/+‘/Ä­Ò{ºHî?”.àå—ªÙÕÍv ÛðóÇc½=ú#w»zâÂ!CyèiSnÝUk$4£‘xºû®E1ÞÊö¯%g: ßI©o¿™r{QtßCWoV’/¯CÕ'¸¤{~û'Îç\VŠ­Ã®²ÙÁËlOÈy{¡çŸž`$7è‚ ›…o‡§Kêi˜±ö9àð–’š- `ppRsðá"" -['òz(’@òŒå}y†ý2çËýJüú£Óœ({ߦ i 4Œˆd§°¨,Syä Ž¬›ŽVšY.gG'qžeLéðM§¢ úÊ?«¯¶( ›ù¢;,¨ó·>,~u›ŠzsÁ^‚!àÈ” -¸™3^Èÿˆ)>ïLDɦ.mŸfq¦³[œ ì´@ `3G›z%–ùì?Óx:á@ë¬våŒÐy+nƒý¼á²ÔL`{™ËÜD6ÏdçŽGÐUìž9³X•ðšq3âGeF±;Áãëá˜Ö.¢ô·ÀÚCÛ=%NÍ9³6ê+5Ca`û‘d)µb™sÞ]®§“ ^UÚ\2«Å»”6êÚb]& -T*tÝíñAŽ»9t†G4`- \¿|ò^nð³ñ»H5ÍO0èöƒn‘M(†PS§çZg1¾QoÖó÷ vLor ¹ŒB«/0 ã}K½‰b@T'M´õÆ›Zè̉&GbðÊà7Ìè7ü!Øþ¶ÝÎû†Ì0+Š9@êÏ-â5.`ÄK‚€" :Ñà8Öã§þ¸4ÓpœØ<¥t•çLJó&eµ³*wæ \©ç&b)Q³mÏ—úT­‡:ÄVÁÿ²—³&ñˆÕÿ -1èæqK»ß÷Õ‚ kÔ/gA•õÁÞ2Jû¤—ÈÖàn9ô(>…‰Æå4˜ú N£Uå¤N`A:Œg³öÆ oÊø\UQx àÊÜÔÃRè{ùS¿ˆR²È4°Í&/РÐÙåv¸brƒOŸQ1±Y +Á‹d~ƒ–9ó‰2Œ+J£`’˜ÊŸ;^XƒÇoªŽ–Ñk¤“0Ð-ªÿ(i#¬-î:&åý_vÇÿ­¥°ÌÜèÃ+‰©É™bâ¢\z´VÀ[ÊŸ"ª`®Î"ZoÖ8%Ã…il É»àtü|“úKùTu=mÀ£)F¥ëgÇä¿G—Êj!f¾¸ ÷+Ž(‡ÇY2GÐùeeòåõôÙ9ÿ=@¼(„ŽœK–„%’èvdÁ®NI2[£Ò‚!S”9Ëor.1¶"¨,„_‘‰Ý€…²OÚ 1Å öûoÖß܉h²ÑHîéb?¾-OÛëÉ먘%¸ÜÛëÉ/mBbšiHuo”¾qpXÁÇC=–&ç&šfh/!³_XO·¢$€o?ß?HO‰íiLìkÚîŒ }*P¼ö!&h `]2ÝvÔ™¡È® KÛvWõ>€É8ËA³ªÆ§¯åùrBR2éôa)K2íÕ/ œîöÆxàgñ¡~«{vžø½›Ê'´5 [Ȉ’U›×Ó$¡™ºÍ”Þæ - }M0žÂܺB{ÏÞ’ &FíUÃ9.IŽK.»ê_׺s†‘«étaåÜ"¯ˆa;oÁ`Áç$Л(:¥Ò¡½ä…Ë„¦T§Ãßœ‰\ÌÂ_ˆáEf.’ŸÚÞ»ÙR}ˆóÐw·—’^‰H³¼^h¾ÄÕÛzp‰˜2”1Áüµ§ŠŸ2÷ò!|–½…ÿr,®ùÒ \༠œ±Ó,v²‹Lºäg^ÊŒq¦!öb[R³!¶e_õ.85³ª$®yµÁnS96”±b‹¦Ûy| ¤Y‘G:Çà@ŠÿÈñg^›SMNáXâ"s„cMA-LPŽâ¬$§uYšqÔÁ'7XćJtØØÑöGGô®}yð†©˜õWþ.·#æèié·Çê\²Ô \8ä2¡P9†8¸icØ‹éõGbóK%˜qoOÕóð·W~õýÊÉ]£à* «YÆ£n­‰¢`P¼ ŽŸc™4ÄüC|>îå’$Û -R@*ùˆwŽJìy5-ö´‡ú³§ýû²¶®ì¼kê! ©9Z¶kƒ,U¸š›d£™·…÷ÿÈ&;&­›‚ˆG'²û'BÍh”qŒ2­$ŒòäL ªÿD3† k4܇#’ÖY‚M³cåå‹?)ýÓEk¦…1¡¸ˆ™38Õæ@œ×>ËÅ49q¯…4t ¿»tíÐÞ©‰ä<ÚÒ¶KgoòŠ–åêÖ½n%Ä/•ž…Hz¨'œ[ÁÌÄÔQ¡¥ùàëkåûq#44£œüáó]„«Q¸ª$¬¶ |uk&Qk þê~ÒQlê×íàç::Å;š<_{¿ìI½±q—®ê«çiû»~HÝÕ OeÒWj;5Lʪ©r^xÃäöÔR$:÷ÚUaÞeõЛk΄•P¼µ¾®kUÐ3'GOÐËbtáoמ_/…‡ ï•JøûÌb!ò)ç¸r.³yà/f•^71bÄÍ:îp{Ë7ØVß8)6.MùæÉy/ß°Åá{%˜¦EÊÙžOþ f:ÜV +xÚÍYKãƾï¯|’€Ó/v7 Ç€ l ‰Î o”ÄK‘ +IíìüûTuu7¢fµNŒÍEýdwuÕWO±ÕÓŠ­~zÃfíoþô%VY’i¡W+nX¢åJ§&2]=V¿­ß ¡7ÿzøkü ¾±£o°'aÁm®óS›aí:QŒ‡MÛÍV¤lÝÿ¾”mqH6[ÉÙúüÔ-4ÔöG?±oN§¼†32Ƥo¥N¤V«-W‰IÍï o)ê~|¥)ÕŒüæÜ—MWžüÚ]Ù·yûB«]ß–õõß³”]êKW Çç¯àjü +£ÁÓÕV°„+é_Á¸¹ûßõåôýÂ#¤M2“…mݹؗïE‡ô‹u^c+£Th„¤oøºÙlùº¥mqj6<]ÄzíÅ‹‹6º}‡¯ÃIeíïñ¤ ¤I2+&Oè–Þ°ÀŸLs2O²Ô#tW5ûA UELlÚS7ÇSégúÜ‹¦»œÏMÛÏðöØTU³éú9Ê0ïA »`ëK_tß¾†DOÚT„__‰¢x¾@ìÿ¹­¶ô%Sf?‹Ö?:þy§7KظÆc¦Àüé{4J¦q`Šp1ç(—"I3 ‘§‰Tž¥¿E»áIJG3îÔ-\cÒÄZ·<«úâ|qh‡j¶$mèxí+‘¹4ãmîÆb¬®8ýT"àI©ëé¡95]qÞÓ=E¤„šèÊÛ¼/–t[€GÉ>¯Ú*M¸Hþ Ò©²Ä*b“”̳i+EFÒÅŽ{6.žš®§)„!>g/]þT¼…¾‚oêm¨ “ø‘E™j»G +\Ò&^?Õò±»K‹‘šëƒ¸N¬Ñ_ªPëÞ¨¡åõh¦à”,"Tg€PéšÑqï>õEÝ9øðŒÝF§LR•?}úƉ;[yuñC„"¶ùèlE–uU†#Ê:n]à“Q‰ÊÒ\äÎCÙ„ »ì<ÒLÃ!Uê¡¥4 ~Ћ6¯h•ÞÓ–@r‡¸Ò¼ü\Ôg¬p‡ƒ|þ|,÷GäáP’­£1 Ú”‡[i›ÒèéÿÄë°[vû‡)毹­@ÒÀ=¿ý£ç‚Q” NzŒï­´™3ÞÁÔW/.h¸¾`ÈmÄsÿr^T ÐWk¯‡·äÔì="SðᢠD,Ù gEHž°¼‹ŽôGÞÉ¢Oña’Æ€û̾ÜuБeýÊÑà™-»#HrVAN,éà@»"‰bï|ÂÍ[µO+êüúÓ›ÕonS6ACâu;µ%‚™B~>¿ˆK|Þ™ˆÎM·Ìb¥Õ'(;M. š(8Ú•êö§¼û@ãppè„£ƒ…ŽÇô¦Ñ#ä)ÒÎ<å¢)ã‰[²¯…õµpǧý±°±YÜí\Å¡[ffÁ€…L £4&¤I:„ÁC^å?rÝ7Ôî +Ÿø! +K95C`eebÓy,‚F|R¤“¤J¤áÊ>ŒÉt½çcÓù® D\¯ì¨’?ÿÝÎOqt@1àm}·äÐ{KfƒÇ{:ÑÚ^g3‹Qí$à¢ãuEò®YÙå´bf`ãão%¾r¢2xüsÙ—•…ñ!ôÖ>5Œ\Ÿš2ˆ£ÂR +Û·$K¡e¢¸˜ò#ö˜Ð¼ªµ©HìÃ/ÒÚQz”™„g¨UÒÙûÒ#×Ï_B®ìg#â‘êq^ÃM÷¯Õ8l¢µq±&×"8ònEÿy1eKDv—OH‡$ÃU´ïêÂ:a¢±7ÞÖBgâI4yƒWÇaÇáñÀö·Þ9(“XžMCÙã¹™¹Jà, V|ŽgƒãX;œúãÒDÃqb÷²¤«,M„0w)«eQ+JpšE~ð0E`R^›ˆI¨ëxç²*¶}yŠ•=rÀ¯ÅHüÿ÷ˆá@7‹[šÇÇ®Xʱ$ kÐ/gA¥õÁÞ2R³ŒZokp7Šz ÂDí’ŠgŒý ÇáªtR'° fÊfw“bS”Yæ€+SSK‹@@爠ú @˜¢"ÓÀ6›4CƒBgçûþ‚Ù ^<~F–ÅÌfË­sÌ´ÌÊgRÈ0&)‚Ib*»v¼°ßajŽËè5–7Ð-ªÿhÑFX›ÝtLÒû?uÃÿm·‰™éÃg2Si7ç#勪i(WDTÁ \œE´"Þ¬qJ† ãØ@“wÁéø!ø&ù·ü¥h;Úàk®œƒ×OìPÌþ;ti ¬‚æ³Kq?áÈm°ÐùçƤëKõÁ9ÿ#@¼(„Žœ –¥*‘ËYp(—$©­‘Ë‚!S¤Àœ¥3hrŒm8* ‘Ed|¦¢u‹v‚q¤ýù›í77"5ÉGº„؇ïój©¼ŽòIvËݱ¹T~i2S¥!×)}í4ài÷£šòÜDÓ í%dÖà ËñV”ðí—ÛéIuÐŽT èÁÆ>i¯ÿ3zîßú0LŬ¿ðw¡¸1GOK·?§> endobj 520 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [450.329 597.572 457.303 608.515] +/Rect [450.329 441.567 457.303 452.51] /A << /S /GoTo /D (section.9) >> >> endobj 521 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [384.856 570.525 391.829 581.469] +/Rect [384.856 414.854 391.829 425.798] /A << /S /GoTo /D (section.9) >> >> endobj 522 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [175.671 338.678 195.098 347.604] +/Rect [175.671 184.68 195.098 193.606] /A << /S /GoTo /D (subsection.16.3) >> >> endobj -527 0 obj << -/D [525 0 R /XYZ 132.768 705.06 null] +526 0 obj << +/D [524 0 R /XYZ 132.768 705.06 null] >> endobj -524 0 obj << -/Font << /F42 352 0 R /F40 351 0 R /F48 355 0 R /F14 432 0 R >> +523 0 obj << +/Font << /F42 352 0 R /F48 355 0 R /F40 351 0 R /F14 432 0 R >> /ProcSet [ /PDF /Text ] >> endobj 530 0 obj << -/Length 1101 +/Length 1594 /Filter /FlateDecode >> stream -xÚ¥VmÛ6 þž_!d_là¬H²%ÛÛ2 ·åÚ[¯wm’ -tEà‹•Äˆc»~¹ ýïÓ›“8u€óKɇ¤HŠ¬¯Èü/çƒÑ•GÆ0¤”€ù -`×…> £>$.ó|¶0ƒ®í`„5yŽvEÊ+Û!YùJÿ'Ï5Ϫ$ÏÌ6kv¼Œ²º²¿Ìÿ„0d„I@¡Té#F--7]J½ášP5E‘—5õ–Û˜ZGèR¸E7àÁ8!.$Â…ý»äü£ÇD7€ˆº-[­yQÉ5Ä:± µ%6ÏôÙOsI|²µ T -Â0$B‘£¬ÕÝæµr… -Ÿ¢Z¯N½¤C Õ^c‹E'ÔʳôE®<+Ò1ïu:„Øwn·H}¾3†!myÒ|¹58ú—åµñ.ô!÷Øñ.Éz Àïöê¦ä}è”A„'è‚m€ r ôbúz $ }7PN2ˆ0.d¸ÍZ%ØæúéÃ0 À9b‡ö#±cOœAJ„ÏDøŒƒÓ€VÊ' ’,ĸ˜“í0QHY´ããáýÛÅÛ7ÓEÍ«z±gŽf÷ÀËñ›ýþâÇÃÇ&ÝFÙðí¬ä_›Ä„¸—A¦—Vû¥°Ä#Ã>Ã6<ʪ'^GZ:«ç!©‹¼IاHœî¢j{ª†}§&_­*^‡Èh‰ÇlTˆbr¿òªIë¡ÒæR0Öµl>™N曆ÙÇéÕ«?'‹›»Ù\ÔâôÉö˜ƒÿ‡³—wïç×ï^Ýü rO÷g Ù ´ ýäÓ|r;»¾»]\^ϯ®'7íM !ôýSFäqú²gÔm!†éãz…Û§©ùQAÓÓZ‡ˆq¨“R“ùà«y¼ð~¸ÂbÀð0X ‹3Ý0OŠs'8|èòÉLÁlðÁLjPñÞù¦z<Ȉԅ!Éyxò£xÅ}„Õ“ -=OŒ ØÕ\oô Â3Li{Ⱥeá1I×]Vµ6‘-Í©Ïê\Ÿ˜3Ô(ŽUµEFîÓ»î'(AŠ²x”—šZ½duô¬é«–¸jäh ‰¢ÍÆÊÊ”²8Ss¡8¹·}j©×Ðä‘œU‘ð7„3QQÖŠ‚/ʼॗdùG¦¯›ôb]æM±o?¦Ktæ0±×–ŠÅYï1Dí -›¯—gÇŠN+d >•3 Ñf÷4“þyP Ñ +xÚµkoÛ6ð{~…à}‘š!)‰’¶&@»¹kÖ4Ù7(ÐbÑŽYrõÈCÿûŽ<Ê–¹kW,Bêîxw¼7M­•E­ßho}9?8|år+$¡àš/-æS"Kx>áŽgÍcëƒý‘s1þ4ÿc{ έ3jçBgÑZ*b ¡-.ˆKYC4O¸GíB~®“BÆdÍÎgWïf¯^ü:½:=¿˜+…E&CgÔa? ÁÅ»—çÎOÞ¾8Ý/Y쵧ó#¢•é§ïçÓ³‹“󳫗'óW'ÓÓ߶*x!ñýþå;Á3 +¯Ãn1Dû©Ê¡TgЯ\·“Ióæ¹³È Š6yo_‰±šÇðEAyjHï“4Å]’-Ò:6àX*¢,©p´S f€lžVIùó7¥ü€¢jÄåÒ8fë³Æ3øõ÷þb#ß]’×¥*Ý:Êå2ÉTEÊe×ÍvéZ~y6”F{£á¢û8þíãÒØÎéía¶ïðpÌu˜Ð‡ £A7~L.|ù¥€!¨?¡¥Œ¡†ª§Q³ãÙéüà³é Ìb<¡m1èòN(¬ÅúàÃ'jÅ€i +¬{MºŸ¸úm–Z™Ÿ ¨³¤ÊÄ.\1cð¸iõM­Ô‡G¿êkÄua€§^3½¿ÆiAî‰bìRûD§+WŒn׳o¢1§†qúê +Sb‚#(bß¿=5ä8ƦÎCõRQÐò1«¢„/à²Æ‰^ø¨ÑÒ<–Ng€¹ûž­{’ñ§©£†oW¸&erÌ;xhnd‘šß @)ÜèIXmVE^o¶UÀ$kgòÌ‹Zmv’ñ›ú¬Ù1³“Õbooï$x\¾}Cx‘›ù”;ýHúݯ¡ endstream endobj 529 0 obj << @@ -2086,30 +2199,58 @@ endobj /Contents 530 0 R /Resources 528 0 R /MediaBox [0 0 612 792] -/Parent 510 0 R -/Annots [ 523 0 R ] +/Parent 509 0 R +/Annots [ 527 0 R ] >> endobj -523 0 obj << +527 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] -/Rect [225.315 613.524 231.292 624.013] +/Rect [225.315 449.532 231.292 460.02] /A << /S /GoTo /D (Hfootnote.1) >> >> endobj 531 0 obj << /D [529 0 R /XYZ 132.768 705.06 null] >> endobj 270 0 obj << -/D [529 0 R /XYZ 133.768 667.198 null] +/D [529 0 R /XYZ 133.768 505.422 null] >> endobj 532 0 obj << -/D [529 0 R /XYZ 148.115 138.196 null] +/D [529 0 R /XYZ 148.115 138.182 null] >> endobj 528 0 obj << -/Font << /F42 352 0 R /F40 351 0 R /F48 355 0 R >> +/Font << /F42 352 0 R /F48 355 0 R /F40 351 0 R /F14 432 0 R >> /ProcSet [ /PDF /Text ] >> endobj +535 0 obj << +/Length 152 +/Filter /FlateDecode +>> +stream +xÚ3PHW0Ppç2€ÒN!\ún& +–z–fFf +!i +†ÆÆzæf +f¦æzFƦ +!) +ÑÊ)©i™y©šºfaÞñÞAñ%©‰yÅå©EQ#ÍØ/ ¡º††z–¦x4&e–ä&gCÄ *Œ ¤î. £ ef¦ganª kjjªgi5ÜÈEkx5 +endstream +endobj +534 0 obj << +/Type /Page +/Contents 535 0 R +/Resources 533 0 R +/MediaBox [0 0 612 792] +/Parent 509 0 R +>> endobj 536 0 obj << +/D [534 0 R /XYZ 132.768 705.06 null] +>> endobj +533 0 obj << +/Font << /F48 355 0 R /F40 351 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +540 0 obj << /Length 2314 /Filter /FlateDecode >> @@ -2123,41 +2264,41 @@ veDns Hæ%—Fæá|ÙËl³¨ü8ÆÐmvrÌ9±¤œC“B?‘Ås—±áf?ä%ð´žHè<»’º°”Ep=+¢í·W-˜‹ÆÉq`ì#*Rx8Ëf i£´WÍdЄ2ŒåôÛÁ}ìÖ³NrÅh$›ŒÁê0jâé¡'"箢5Ê ÒÈy§‰ÉY/rjÎCø~Ò·z7ÜÊä¶wXd\Ü¢±’meÅÖ†‚®³Â>›Öçκ‚UChlÇ\zòW±eìú&؃3¾‘f‹Ö攳ñQ+±^Xƒ¾É&ïK\“9{ɾð|ÕišÈk±è"\7k­¼Œ}o‚Î?áH“ 3–`©Å}É O^ |É/ëóǘô¨zÿk+°®.›}S+8ù–ýiv*o‹ã6÷º]àúeOŒk+]<2ŒÝ¯iK†^ry„øÂ;ÌÛ× ÌœŠ†”{IÎÁÂÍo\wëÆmÞ½þýýÝ÷ýšþÞ³Ķ‚ Aéʤ*üÝ©}I…´#†ë~³oFoÃIù©|uMO:×ÄAdöêúýŸ?¼ýöáƒøàÛ¡ÑØ«kpÅë5ŸYëÍï QZKì›åB}d¡OÆQ8õI#6'XÛÃ0k¨\%¾C¯ôÌ¡£kß´¦h<¿a4ï8ÜPúüU§f»'µè½#EH9û C¥ëÌ)2É3ÊL„ßJÊÂ<=ÁAôãšZa™-»š~Ù¿3Hâ•Sä0î;"M[ßY°oÙóÈ -{…ÕDª‡Ã‘æ]J²9N~&1Ç| ú ¢ÄCºµ”ʱÁÞ|£VÓCxl[j‹0ñB§@ä³/Ë`<⧠1!¦ƒQ c„å lÿµ›·ŠÇ^š ¯f^š2¢’álÒëû«ÿH3¨P +{…ÕDª‡Ã‘æ]J²9N~&1Ç| ú ¢ÄCºµ”ʱÁÞ|£VÓCxl[j‹0ñB§@ä³/Ë`<⧠1!¦ƒQ c„å lÿµ›·ŠÇ^š ¯f^š2¢’ÑlÒëû«ÿHD¨Q endstream endobj -535 0 obj << +539 0 obj << /Type /Page -/Contents 536 0 R -/Resources 534 0 R +/Contents 540 0 R +/Resources 538 0 R /MediaBox [0 0 612 792] -/Parent 510 0 R -/Annots [ 533 0 R ] +/Parent 542 0 R +/Annots [ 537 0 R ] >> endobj -533 0 obj << +537 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [281.391 595.95 288.365 606.894] /A << /S /GoTo /D (section.2) >> >> endobj -537 0 obj << -/D [535 0 R /XYZ 132.768 705.06 null] +541 0 obj << +/D [539 0 R /XYZ 132.768 705.06 null] >> endobj 274 0 obj << -/D [535 0 R /XYZ 133.768 667.198 null] +/D [539 0 R /XYZ 133.768 667.198 null] >> endobj 278 0 obj << -/D [535 0 R /XYZ 133.768 558.643 null] +/D [539 0 R /XYZ 133.768 558.643 null] >> endobj 282 0 obj << -/D [535 0 R /XYZ 133.768 311.142 null] +/D [539 0 R /XYZ 133.768 311.142 null] >> endobj -534 0 obj << +538 0 obj << /Font << /F42 352 0 R /F40 351 0 R /F48 355 0 R /F14 432 0 R >> /ProcSet [ /PDF /Text ] >> endobj -540 0 obj << +545 0 obj << /Length 1925 /Filter /FlateDecode >> @@ -2169,39 +2310,7 @@ xÚ­Xmo µIÜ,™3+ú¦ŠÖÓ¬íÒ’hkÃBU¬ÇÝ‘;uqÞ´PÜX9úÊ\H©0MÄ0hËÒ&WäRý²–RÛ£g‡Zê*“Mƒ©|ÑZ§$ò>Íêê˜(ú‡½ÁG% œ×•¾#ßɸÓÃ}çLÑž+©d ‘L@’„,á“G âWÖ­„±íCsÔc c¥®J³˜MVuuz¥I ­ÌqÕ1¾};×É¥¡Æ"MYÐ;2àÎÃh¡ñÝã¾£àgËBÙ>SÆBLÊB”nšYë÷N“šj/‰9v€giÕ{£Lß;,]3χ|E» ˜³2øàb{(Žêñh„µJgÙ˪ëÙï!ïÃŲB7D¡îC®öüIµgovŸ]pò7Ä €,ƒ?ÙhB×Í“`Òh~±ZQÉón³ÞB•ö•©ÝtÒƒðÇ£¯¥ÚêZª¡jÒUy•eµ²‹®‹Æ~štM¯!þÍ®]ZçXä“.ÒÈ4uje™è×öÛMÃåG“ӆ˚LFén­éë¾ÚǼÓÂv¦šÝÍ÷ÞÇæcjRoÒ²ƒ[á vü÷t¾ŸúgzáOu’þf„-u>_aø> endobj -541 0 obj << -/D [539 0 R /XYZ 132.768 705.06 null] ->> endobj -286 0 obj << -/D [539 0 R /XYZ 133.768 667.198 null] ->> endobj -538 0 obj << -/Font << /F42 352 0 R /F40 351 0 R /F48 355 0 R >> -/ProcSet [ /PDF /Text ] ->> endobj -545 0 obj << -/Length 1647 -/Filter /FlateDecode ->> -stream -xÚ•X[Sã6~ß_‘ò”t°lË—N`† ¡¥»bvf§ídG!.ŽÚ,ÿ¾G;¾ˆÀ>YR¤sýÎ-xð8Àƒß?á7¾ŸƒOg׶7ð‘ï˜Î Xˆe!×ñu‘iÑA°ü5GÙv¦«âbôOðçÀ´OÈÀ ù´s¥q£sa—gev1._wìâÛÓ=+öI9>Û‘á`<§á–]²Lïg$éÛ§)¡ˆø–’ÃQÏZ>ê!Ä¸Ã¥Ë ‚C=yó&ÄÇÃrŸ§§#ÃÄæ°Ü0õ¸‰%ÛF1Q!6”"£n–á£ä³ÿöqÎ -ÅOËÄ1!nͤ¶i‡ƒE‘çÐêZ¡!DîÕ… - J¶‹<³–õT§7¢Ø:PêƒPC•Qj¶È Ë'»VÛS`C Sâ"ç à«†—c!LíêjæµLø)å*[Ëo\ªŸVìoŒÍ4.ã,E#ƒÚÞ0gô~+ÚïÁa…ºÅÝ¢~ óúeÉò‘‰‡†TÖÃÈ%~[×mœ²`Œb!'ÿ®³$ÉF&¾¿É(¶;1w="t˜å:;9ˆ|ØÍwÖbe9Àr—¥«8}”G -«Z×þûõÁª®ÅR½^Îî7L‹G€ßŽQÁCæBžÎO*MOäaH|Ìò×ó–î·'g:qp›ä<æhÏ°C,œ‰‡òK“òË©±<ä`PWA°žey'yTÄÛ]ò*ß'qú¤H”YMªoBÓt <ê s>…Nh›"ly­L‰¾ÄåFr,7J‰좲¥KíÖ+n¶9 c&)ÚÓs‹(³+_@^diy~2Ís€¬8ã1.9ãi¶º¸bÅÉ‘ü‹aÈ›÷ÝWr¹®Èû(bE±Þ'rŸíj§ñ-ûÁ¢ýaû7¦x—âÏ -SÏa²gœ¹7 }aæZ6^œŸ`ÐÙÂÓ|YÌ&“é|® ø>Ò£ð0›?ÜÝÝÞÓ«S1{Tf·Áâ~zyõ½KÃùp}t*÷Œu•Aib<±óV.:’x ¬Z–ù±¼ãþtÞ¡²ŽäCŠ)Ê|Uð¯b¢¯û1doÙvÉòº‡š Šûœ°¯›HÛ«»ÈBþ Z#õÚ*ºÃ:Næ›lŸ¨H[*¹9&ƒû‡Iðp?]ß曆›Ù<¸œM¦‹ $àûëÛã¸W és¯dµÂ.$G×ê»lQ¿×›±åûÊÜeqÊ+ªÌ2™27-µ,ðµŽ6aÞ%<zL5ø¢Èw[è’´„y|äyºñÃ&È»ô!¹›¦á2a«i¥É Ž‹>HeLÖMÂ× -¡U-ªmqÈmWÉ$Ç.|µ#×Ù[¹®S­Õɸª“ñ†¡Ü6¢…ŸVmŒíÖ oú(o†òÆD—奄¨;mIS—€}D̺0T½ -NÅ^6-îPÚU‰ª$á&¤ò˜…ÑF# ÌP&²¡hq¥Ê0–¶[)B$b‚ÿVàJJ‡0Ø>c!ÿ=\­Ä0pª¤*åõÃ,Ç/÷² ºåòP êÙË&+Ôö„!œ®DkE¹*ˆ¶PQÔÔ°|•_ +¾âòó/ãeúG•Ék§¢õÝõˆðÁc#æžÞ¬á´ë}=¤Š…9LäfšƒçåšíXºbiÄŸ½Ê3>1µ^«YY7]˜ ÍÃX}tÒ£>rÝVç †õæx­í,äPïÝÎück'A°èöÍuŽä¬È—/›°¬Ú‰´DE«,|E;¯DIXí §ª²¼Qe’°¬Ûð]œT¹'Þ²ã%^–œ/‹«éõÍlºø|9Ÿ.þ¸œ]}òvYfÉoO·Ë•J‹¼_n¦êwH^ÝÌï =þ<ùz9Ÿkhwþ:m׊³Øv87]Òê4y.ÄTK×SåÐtZO¦Á§ÿRpn" +ÿÅᨲiˆ ¡¿T‡€e9þsHct険^b¡3uo ¡<é͘s[(Ž&bºÜ€ùq|lØ,ÎrFÉ_‚™…+8n‚"‹cóÿ®˜6Û'ÿ<ì endstream endobj 544 0 obj << @@ -2214,24 +2323,26 @@ endobj 546 0 obj << /D [544 0 R /XYZ 132.768 705.06 null] >> endobj +286 0 obj << +/D [544 0 R /XYZ 133.768 667.198 null] +>> endobj 543 0 obj << -/Font << /F48 355 0 R /F40 351 0 R >> +/Font << /F42 352 0 R /F40 351 0 R /F48 355 0 R >> /ProcSet [ /PDF /Text ] >> endobj 549 0 obj << -/Length 1268 +/Length 1647 /Filter /FlateDecode >> stream -xÚ½W[oÛ6~ϯð “Û†!©‹¥6à8NêÆq‚X :,ƒ ËtÌX–]ÒÛþûH‘ºÙÊ’Ø ŠçúG2ì)âó.$¬‰¦4 ÄîN`ÐÓa©M Ê€XCÊ€‡B¶eëa…(b -~î"SIÅ6rãTè0ò'’Hp#—æ$"ÁœÇo#ÔÝÀõ7 MrF©Êc–¤ {¨ÌBÖÖ8òÝTºÉ†=¯6  œª:”–LX—µ¬«ë -Èõ‘,MkXºÈÊ"D7&å3!„¿iimÏFEïãqÓ,&¿´µ–ã]¶¶ÄrÂñ,õ]÷†0,Ý?­À÷µßâ[Õi”jGˆ«Ôc’d~Jƒ‡–,+U-™ù”ù+7Ë–œgÀ0ŠKc oõ7êûBòÃp%%ºê"¨¢+4ùÀ}—¨X·²b]eƒÈìaå€.V¬K„ÊÝíø¢?q>;þË|˜ ȶf¾E…f# •žKÇŽãE~–ð_µÈ÷”ÄPÝì á6ÍÖYºhD“áŽò‡:°z&3=MÏߊ;YÔ|½G¨,UíÔLa´‰éÃ2‰ð›ë‰ùÀ·"‘bk/%$Ë8 ÂDlÎã0‹„8 -<ÐÈ­–⨨ä©ŒÉV=saųÓê…ýGˆ¡ÄÓ/hÈåâÙ HÌÆ\lq¸RÚ -Æ]N}!½ ¡= y Io@1<ó\f#Í-Bî&/:o¦ÊÐó|ÄÉC³%â`Ÿ†ÖÛqáÜ o¦£«‰ƒ¸uEt¦çgsi¶ÿ´rø f¯‰5Xî·l…¹ì_ ‹Xœ§k÷1Œß‹ã5 J9rSoYqø©Zî¾äÝÖ›ªô%ô%p¸òñgu;òHMM´«YåР|ƒÁG»Œ)‰òDâ„ÍL²( -ã²ÇüÓE°à肽Ö^ƒ s_ø,ªP¢ˆ &%XÖ±3ô$Ùò(ó -£Ú¬yó¦R`qoGûÚ¾ûSÛÐX_Åñ§Ob•çü ŒßÖÁíí_¯‡Î´6tW—×}{t2:Ÿû“ÓñpZgça«³gGîv±²ŠŠ¶[úOMãÓÑ´Ïõ+'uË×|:<M†ÇJ˜çgU|6r2ONx~rpàØÅ‹'_¼¥+9í̳õzóQlþ’+ÿîªÞo…ƒ|j@@KkÁ2åÚsnøQ Ô¬W6½=ŒûÓéV…’ ÎŒýxMµäåÌf>õj¶5<^.Ù`Ÿ–%kÏ”¬í”lh:Ð{VóµW|ÒŸŸíå‹ñs¦tÀøwýcÐþ»®¼b2I¯“«Éÿ˜Tý³±ñïUÃLfV0åk÷C{ïoZ%×› +xÚ•X[Sã6~ß_‘ò”t°lË—N`† ¡¥»bvf§ídG!.ŽÚ,ÿ¾G;¾ˆÀ>YR¤sýÎ-xð8Àƒß?á7¾ŸƒOg׶7ð‘ï˜Î Xˆe!×ñu‘iÑA°ü5GÙv¦«âbôOðçÀ´OÈÀ ù´s¥q£sa—gev1._wìâÛÓ=+öI9>Û‘á`<§á–]²Lïg$éÛ§)¡ˆø–’ÃQÏZ>ê!Ä¸Ã¥Ë ‚C=yó&ÄÇÃrŸ§§#ÃÄæ°Ü0õ¸‰%ÛF1Q!6”"£n–á£ä³ÿöqÎ +ÅOËÄ1!nͤ¶i‡ƒE‘çÐêZ¡!DîÕ… + J¶‹<³–õT§7¢Ø:PêƒPC•Qj¶È Ë'»VÛS`C Sâ"ç à«†—c!LíêjæµLø)å*[Ëo\ªŸVìoŒÍ4.ã,E#ƒÚÞ0gô~+ÚïÁa…ºÅÝ¢~ óúeÉò‘‰‡†TÖÃÈ%~[×mœ²`Œb!'ÿ®³$ÉF&¾¿É(¶;1w="t˜å:;9ˆ|ØÍwÖbe9Àr—¥«8}”G +«Z×þûõÁª®ÅR½^Îî7L‹G€ßŽQÁCæBžÎO*MOäaH|Ìò×ó–î·'g:qp›ä<æhÏ°C,œ‰‡òK“òË©±<ä`PWA°žey'yTÄÛ]ò*ß'qú¤H”YMªoBÓt <ê s>…Nh›"ly­L‰¾ÄåFr,7J‰좲¥KíÖ+n¶9 c&)ÚÓs‹(³+_@^diy~2Ís€¬8ã1.9ãi¶º¸bÅÉ‘ü‹aÈ›÷ÝWr¹®Èû(bE±Þ'rŸíj§ñ-ûÁ¢ýaû7¦x—âÏ +SÏa²gœ¹7 }aæZ6^œŸ`ÐÙÂÓ|YÌ&“é|® ø>Ò£ð0›?ÜÝÝÞÓ«S1{Tf·Áâ~zyõ½KÃùp}t*÷Œu•Aib<±óV.:’x ¬Z–ù±¼ãþtÞ¡²ŽäCŠ)Ê|Uð¯b¢¯û1doÙvÉòº‡š Šûœ°¯›HÛ«»ÈBþ Z#õÚ*ºÃ:Næ›lŸ¨H[*¹9&ƒû‡Iðp?]ß曆›Ù<¸œM¦‹ $àûëÛã¸W és¯dµÂ.$G×ê»lQ¿×›±åûÊÜeqÊ+ªÌ2™27-µ,ðµŽ6aÞ%<zL5ø¢Èw[è’´„y|äyºñÃ&È»ô!¹›¦á2a«i¥É Ž‹>HeLÖMÂ× +¡U-ªmqÈmWÉ$Ç.|µ#×Ù[¹®S­Õɸª“ñ†¡Ü6¢…ŸVmŒíÖ oú(o†òÆD—奄¨;mIS—€}D̺0T½ +NÅ^6-îPÚU‰ª$á&¤ò˜…ÑF# ÌP&²¡hq¥Ê0–¶[)B$b‚ÿVàJJ‡0Ø>c!ÿ=\­Ä0pª¤*åõÃ,Ç/÷² ºåòP êÙË&+Ôö„!œ®DkE¹*ˆ¶PQÔÔ°|•_ +¾âòó/ãeúG•Ék§¢õÝõˆðÁc#æžÞ¬á´ë}=¤Š…9LäfšƒçåšíXºbiÄŸ½Ê3>1µ^«YY7]˜ ÍÃX}tÒ£>rÝVç †õæx­í,äPïÝÎück'A°èöÍuŽä¬È—/›°¬Ú‰´DE«,|E;¯DIXí §ª²¼Qe’°¬Ûð]œT¹'Þ²ã%^–œ/‹«éõÍlºø|9Ÿ.þ¸œ]}òvYfÉoO·Ë•J‹¼_n¦êwH^ÝÌï =þ<ùz9Ÿkhwþ:m׊³Øv87]Òê4y.ÄTK×SåÐt[O¦Á§ÿRn# endstream endobj 548 0 obj << @@ -2245,21 +2356,23 @@ endobj /D [548 0 R /XYZ 132.768 705.06 null] >> endobj 547 0 obj << -/Font << /F40 351 0 R /F48 355 0 R >> +/Font << /F48 355 0 R /F40 351 0 R >> /ProcSet [ /PDF /Text ] >> endobj 553 0 obj << -/Length 802 +/Length 1268 /Filter /FlateDecode >> stream -xÚ½VÛnÚ@}ÏWXêK¨Âv×ë«¢>0- 1¶‘¢¶²XR0–m¢¦Uÿ½»¾ Ö@èåÉöî™™3ggf …G -.`ùì¸ïú’&è@WDEp稊&(² -D, îLøtù†,SÒúâÞ":BB! ËÕîŒÌÈ´Ú -„—“[¿gö–éw Çô?Voh~†2ô×ßè°ì9&Ô¬´Yxa”ÙY2$Aš)R±Ê ®ó ð¤x½cûŽ×é Çyøªtù¤¤Ä†Rˆ³ÄÏ΋n¬?$pL…6W{ÍÂyųDä;5ß$Ú¬Š·ŸÇHsq¼n×tœù¾xÀ+ž -ìYŽgÛ£±köj¨ÉÀ¹þØ4z÷5¸È…8I+Åæ¯J°1I7ËŒ{Lg¥ïŽ½®ëMß½·Mß°íá k¸ƒ‘å¬þèYø´å:í['K6Ól“—’<Î>ÍáüKQ&‹šÛV©3nŒ1]GiéõiÎrˆ¬UU(¨.`o‹ˆÓq  -;±E¾gUi*@„L¿Éëql+r(ëZ,²¦ Äñ„$i¸ŽŽåÌ¥$5Q*7b3z¤ÍÿZV$·âSšòkðƒµ B-ÃiQø š¯ÿ^CÜ;®yçÃá¨[õÄÀunÌ®{v7¼lbç9ÍÈÊX.×ÓÓúa[­*=Œ8ÅTÆÙYgsxrËØÛî8Ç(2PeÌ1–®j»¶vßòŸ9Áþ&š2•Ùg.‹ôF@†jò–ež<¤¢¬ŠµŠ÷R’ô‚,¸*눚Xwœ†?+$çÃ~qůÂeø­H”ñ‡óËChµu˜[•ß,ßëæ³Ü?žüm_t$a )âéª÷BDe ‹úý,Çwdµ+’Òñùƒþ•úÜÂ:@×æV•ã¡©Å©sV>¬ây”¯sg×þIUUGÍØòI#Œ¹ïÒ‚{¦‹ô/Eù]ŠG/ˆW\Š{s»($¬I“8áªŠß G=l'þö¯žþÒÃ_zÚ*@‰¶Š¨MÓ -SQ«Ù˜îÅo_!&P +xÚ½W[oÛ6~ϯð “Û†!©‹¥6à8NêÆq‚X :,ƒ ËtÌX–]ÒÛþûH‘ºÙÊ’Ø ŠçúG2ì)âó.$¬‰¦4 ÄîN`ÐÓa©M Ê€XCÊ€‡B¶eëa…(b +~î"SIÅ6rãTè0ò'’Hp#—æ$"ÁœÇo#ÔÝÀõ7 MrF©Êc–¤ {¨ÌBÖÖ8òÝTºÉ†=¯6  œª:”–LX—µ¬«ë +Èõ‘,MkXºÈÊ"D7&å3!„¿iimÏFEïãqÓ,&¿´µ–ã]¶¶ÄrÂñ,õ]÷†0,Ý?­À÷µßâ[Õi”jGˆ«Ôc’d~Jƒ‡–,+U-™ù”ù+7Ë–œgÀ0ŠKc oõ7êûBòÃp%%ºê"¨¢+4ùÀ}—¨X·²b]eƒÈìaå€.V¬K„ÊÝíø¢?q>;þË|˜ ȶf¾E…f# •žKÇŽãE~–ð_µÈ÷”ÄPÝì á6ÍÖYºhD“áŽò‡:°z&3=MÏߊ;YÔ|½G¨,UíÔLa´‰éÃ2‰ð›ë‰ùÀ·"‘bk/%$Ë8 ÂDlÎã0‹„8 +<ÐÈ­–⨨ä©ŒÉV=saųÓê…ýGˆ¡ÄÓ/hÈåâÙ HÌÆ\lq¸RÚ +Æ]N}!½ ¡= y Io@1<ó\f#Í-Bî&/:o¦ÊÐó|ÄÉC³%â`Ÿ†ÖÛqáÜ o¦£«‰ƒ¸uEt¦çgsi¶ÿ´rø f¯‰5Xî·l…¹ì_ ‹Xœ§k÷1Œß‹ã5 J9rSoYqø©Zî¾äÝÖ›ªô%ô%p¸òñgu;òHMM´«YåР|ƒÁG»Œ)‰òDâ„ÍL²( +ã²ÇüÓE°à肽Ö^ƒ s_ø,ªP¢ˆ &%XÖ±3ô$Ùò(ó +£Ú¬yó¦R`qoGûÚ¾ûSÛÐX_Åñ§Ob•çü ŒßÖÁíí_¯‡Î´6tW—×}{t2:Ÿû“ÓñpZgça«³gGîv±²ŠŠ¶[úOMãÓÑ´Ïõ+'uË×|:<M†ÇJ˜çgU|6r2ONx~rpàØÅ‹'_¼¥+9í̳õzóQlþ’+ÿîªÞo…ƒ|j@@KkÁ2åÚsnøQ Ô¬W6½=ŒûÓéV…’ ÎŒýxMµäåÌf>õj¶5<^.Ù`Ÿ–%kÏ”¬í”lh:Ð{VóµW|ÒŸŸíå‹ñs¦tÀøwýcÐþ»®¼b2I¯“«Éÿ˜Tý³±ñïUÃLfV0åk› ‹¡½÷7Z6ל endstream endobj 552 0 obj << @@ -2273,18 +2386,21 @@ endobj /D [552 0 R /XYZ 132.768 705.06 null] >> endobj 551 0 obj << -/Font << /F48 355 0 R /F40 351 0 R >> +/Font << /F40 351 0 R /F48 355 0 R >> /ProcSet [ /PDF /Text ] >> endobj 557 0 obj << -/Length 1267 +/Length 802 /Filter /FlateDecode >> stream -xÚVQs£6~ϯ`r/v'Ö!ÚË͇\Ü$Ž'¦éÝô: 9¦Æ@皇ûï]!ဃ;¾>0¡ÝýöÛO+©Ê“¢*ŸNTù¾ðNÞ_é–b#›ªxK&¢¦­PxÍP¼HùcfiY GTUk'I²p$É"×åðOïWkª©Œ02uMØüÔúC•Ö\8XüR/ª!k`‹‘mÈ€Û8­4âCL‚yTöOÅÒ2ÎÒq¶M+a©vMZÃUPÔK ™&íe Û4Û „5ÿEldYV_*ÔDšI:©än,¹ ¾i°ae“™E‘Mô.Ìï ¤!,¨Ø$]f½i=Þø—îÕdêúÎÜõ¯éå­ûU5ÔÇõýâ/V0ÆCºox9™Ïüùoã[g>ïxh0œ5 ¸”XÞEl§L.¾ñïœÏþìúË|2vn!ØãdìúSçÎŽt+ˆAõâ~öÜé|r?•ö¦uؾzɸh ?°r›ÈÂ×YÝ8³‰?óZEÓD9õ~ ÈéÙÕÔ^7åÄp&¸ÓÎx[9!œ]¹÷CIô­ùüÕölß­Ü7&Ò-ã8gm´R{”`D©½Ç|¼|%îÆŸ=Ü{÷Þ—™;ïçÑñ€È¦Å_¨û­øî!N¬hÈƸ+ÍcØĆtÜÛRTv·¥´é<ÜUö8>؈ªAïëô‡>Ž{÷÷;–Fñ²!´Îþ-ù¾æɶäOõßûöóaÇ»ÐÊÕv+ב  -k-±xšU°ó4 ªUPñ”lHŒÁóV‰øDQ\ACߤÞu¥üU01—oè}b2NÅ{ñ"ׯš8`(¦"–T–†<Ò‹ô^ʸ”ek ·ÙX ‰:ØV˜ËÒ„[Ú6Èx=Ycƒ}¤k&hk³ ÒH|RðÉ5Ùzˆá IKñ]°¿·qQ£gu½ªF eÎÂø«ª&í— °mQS¿9=…{b)0X±Ér¹] ¯/›…Œ¦Ò†#¬‚ïëŒCû‡¡¼¡M™;Q$â5Î6yœ°‘7ÄÖ Þ°f¶ÖfÕ#ŽÏBTFü$ÝVÍ{ŤMû ÙÈ€cN6dâ{¼ËnVVÁ“p[sÎ% Šp%Æˬx ZRVVL®\À`-†I°`µ¬ ÞîžÒ¼÷ ŽlYw%þA–VÞ@,­ÎO¡_53‚®òôã‘›f’6Ðã²…÷L¦Û)Ëxï ò¼Èò"1pÁòé˜k2®OWá¯a,‰…8ÉÙ‚‘)ñ™2c–n7"¹îç§Ðܽk×w¦óß݇Ó÷}yŽÚ~džÞŠÉžŽR -U‘ýOm¡(ûbé:Ҵݺÿ[kŒmDU²Wì:è^©ïâ2Dbn‚Q˜E\gÚ‹Ï‘$-“§¯`}ݧb#‹oÞ`~L-„6jÑN-¢¯ŠÉ€¿L©øþV÷³·$ó´ 7ìñ÷!aº£8¨ª"–}“ ÷›  -W¬l õE²tD(ÐK¶#Æ›eÊšäoòâL‘§¥‰‘®íÝHv­âPö ‹ìšÑslû@i.yö¡ìùÞ+÷šÏ3?òjo?ůGážE#Ÿ«7»Gªò¶Ä#ŸŸêä|ëÿ¹mÛºÊ#0éY;–wbwL\ïä_u) ¦ +xÚ½VÛnÚ@}ÏWXêK¨Âv×ë«¢>0- 1¶‘¢¶²XR0–m¢¦Uÿ½»¾ Ö@èåÉöî™™3ggf …G +.`ùì¸ïú’&è@WDEp稊&(² +D, îLøtù†,SÒúâÞ":BB! ËÕîŒÌÈ´Ú +„—“[¿gö–éw Çô?Voh~†2ô×ßè°ì9&Ô¬´Yxa”ÙY2$Aš)R±Ê ®ó ð¤x½cûŽ×é Çyøªtù¤¤Ä†Rˆ³ÄÏ΋n¬?$pL…6W{ÍÂyųDä;5ß$Ú¬Š·ŸÇHsq¼n×tœù¾xÀ+ž +ìYŽgÛ£±köj¨ÉÀ¹þØ4z÷5¸È…8I+Åæ¯J°1I7ËŒ{Lg¥ïŽ½®ëMß½·Mß°íá k¸ƒ‘å¬þèYø´å:í['K6Ól“—’<Î>ÍáüKQ&‹šÛV©3nŒ1]GiéõiÎrˆ¬UU(¨.`o‹ˆÓq  +;±E¾gUi*@„L¿Éëql+r(ëZ,²¦ Äñ„$i¸ŽŽåÌ¥$5Q*7b3z¤ÍÿZV$·âSšòkðƒµ B-ÃiQø š¯ÿ^CÜ;®yçÃá¨[õÄÀunÌ®{v7¼lbç9ÍÈÊX.×ÓÓúa[­*=Œ8ÅTÆÙYgsxrËØÛî8Ç(2PeÌ1–®j»¶vßòŸ9Áþ&š2•Ùg.‹ôF@†jò–ež<¤¢¬ŠµŠ÷R’ô‚,¸*눚Xwœ†?+$çÃ~qůÂeø­H”ñ‡óËChµu˜[•ß,ßëæ³Ü?žüm_t$a )âéª÷BDe ‹úý,Çwdµ+’Òñùƒþ•úÜÂ:@×æV•ã¡©Å©sV>¬ây”¯sg×þIUUGÍØòI#Œ¹ïÒ‚{¦‹ô/Eù]ŠG/ˆW\Š{s»($¬I“8áªŠß G=l'þö¯žþÒÃ_zÚ*@‰¶Š¨MÓ +SQ¯Ù˜îÅo_2&Q endstream endobj 556 0 obj << @@ -2297,23 +2413,19 @@ endobj 558 0 obj << /D [556 0 R /XYZ 132.768 705.06 null] >> endobj -290 0 obj << -/D [556 0 R /XYZ 133.768 367.532 null] ->> endobj 555 0 obj << -/Font << /F48 355 0 R /F40 351 0 R /F42 352 0 R >> +/Font << /F48 355 0 R /F40 351 0 R >> /ProcSet [ /PDF /Text ] >> endobj 561 0 obj << -/Length 1483 +/Length 1267 /Filter /FlateDecode >> stream -xÚµW[oÛ6~ï¯Ðò2y˜RuÙÒYÐvÙC7 ^_Öa%:bKžH/-†ý÷òPŠä0­»Ë(ò\?~‡¤Ám@ƒWϨ¿[>;™Äc¤"–ë€qN²4R‘‘˜‹`Y¿„W$YDŒR~ß- ïQ,h¸\qØ¡|U×NÀáî•F¹ëqü¹mºvØš%ᇽ\üºü\ AAŠ4N4ˆXNÀkúå‚ «€ç"Ô›F) ¥™~_îö[ùõ"JX–Jv×ÝK\uoœ-[_ºÃ¿µ|Giܺ5¥Smœ±U×÷Rí»¶nÚ[÷³›­½v^ç¯9ÍHž¤à½u[aø£‹†…&—.¹– -Çu·Ýv‹Rß]cá†ñÈ H]ÌH µZMLµ\/¢*ç<²òŸFYsR06wäíîÐË¥ÍHjª®Œü­ÝDçë«®UNé]SÛ%¢ Yf$YÂqÙWöG^4åÁd~ÿZ¾×¨8bIA^<©ÿíÝÕ~¿mªRŠnÚug·1ž‘$OÐZ2µæÔLæ÷ Àl<Ý ¤¿º.·ÛUYÝ)gA3Ÿ½Œ<žÛ³ûW³whZÍãß´9_1…|ÈVA„×Ý¡Õóœ§\¬6eÿñœ RdÙ4å¸ÛÖ¿ yžûöù¬Nûm¹ÚÊúÅàÞër'ÕXÆ PÅ,®¿†Þ€¹²­äu/K-Çô –Ò6ƒïÍÚsÎ%,Ã1ó©÷i¨Ó” »,‰ˆèÄyÁ‡ÃSÝLJ}ÙCœZö¸îèoÕíve[ãGÓ:]9”;'ì(+W?Ý]Å wå!'i¾à€ÁyÃy½)5JNû— !B…SŽ&< -ßQA•t{WÒ±~®-ï‚°y˜¥–ËÌdi Û8ïÌB†óûƒVžÐcÂ8±1¡€¦¡® ´RiYûèr—lza -téQ ˸—éòÖçýFÚ„‚Øè1ƒðuP²&®>9'irÄ?BùúûF™®Âó"lLÅÓ*)iÔÈ6ðÛ" -fÚÎý2vðWÝô²ÒÛ8¿rc‰?sAFíÆiE´ Þ~ž“©Ï½üýF,Z€Ñb41 Ƚc«¦îe[˶j¤Âå3v±IŠÎIeS®·¸[°aäFº!>Y§¢óÌ1%y¨6Ýa[£¼’8Š¥›²MÚŒéãè9‰ãb `…CçóÈÜ|Ò)¨ˆá²$|Õb(å€\> [ù¬$‚p61ââi±‡Fœ:ódÎüJ–}µîîVeá29LV^Aã¹Cq[/lñ”z`Î{-×l²ÕÏÏ—8cƒCÑ"߈|#$û ~Î._;\`„4r³¹K7†9Òá*§ †jX5-©¥ýæŸÍ«ù¾ßtÊ à¥XdCZ`{#qJls‹J­ûfµˆ!V-Qý®ÔÕF:‡ü¸ÈÉxþY†ÌÅX%jÈÇNºÛ3¤'K =î¿+io¯ãåòŸÜ!ÿˆÉIqŠ 9ÏÏ|åìüÒw#:>Ë4â4¼ípÔÃè­Ü«Ä)‡9!Œ‹Ùi6:-µ[¡àña;òcƒp•bYqJãc"dp¸ ´·AYaDÇô*¸#÷ºl¢×œÜ­doxß|©n‡^?ôÖé…cÊDGO(œ²Èqº¶Íxû±ûšÏ{ß°GõðBÊÁâ-_DíÍäM4rMt>‰RxˆÈÛ®ÿðü “{öIð>­3}‰å>zƒ]œ  ‰åññfcñRáR+_œ;}Xdï&·Â÷~cÐEá{âDã3ƒ’˜ÅSûö%÷¯ìÁ½ò¦áÇÐ\)K«ŒÓÙŽËg"w¾b +xÚVQs£6~ϯ`r/v'Ö!ÚË͇\Ü$Ž'¦éÝô: 9¦Æ@皇ûï]!ဃ;¾>0¡ÝýöÛO+©Ê“¢*ŸNTù¾ðNÞ_é–b#›ªxK&¢¦­PxÍP¼HùcfiY GTUk'I²p$É"×åðOïWkª©Œ02uMØüÔúC•Ö\8XüR/ª!k`‹‘mÈ€Û8­4âCL‚yTöOÅÒ2ÎÒq¶M+a©vMZÃUPÔK ™&íe Û4Û „5ÿEldYV_*ÔDšI:©än,¹ ¾i°ae“™E‘Mô.Ìï ¤!,¨Ø$]f½i=Þø—îÕdêúÎÜõ¯éå­ûU5ÔÇõýâ/V0ÆCºox9™Ïüùoã[g>ïxh0œ5 ¸”XÞEl§L.¾ñïœÏþìúË|2vn!ØãdìúSçÎŽt+ˆAõâ~öÜé|r?•ö¦uؾzɸh ?°r›ÈÂ×YÝ8³‰?óZEÓD9õ~ ÈéÙÕÔ^7åÄp&¸ÓÎx[9!œ]¹÷CIô­ùüÕölß­Ü7&Ò-ã8gm´R{”`D©½Ç|¼|%îÆŸ=Ü{÷Þ—™;ïçÑñ€È¦Å_¨û­øî!N¬hÈƸ+ÍcØĆtÜÛRTv·¥´é<ÜUö8>؈ªAïëô‡>Ž{÷÷;–Fñ²!´Îþ-ù¾æɶäOõßûöóaÇ»ÐÊÕv+ב  +k-±xšU°ó4 ªUPñ”lHŒÁóV‰øDQ\ACߤÞu¥üU01—oè}b2NÅ{ñ"ׯš8`(¦"–T–†<Ò‹ô^ʸ”ek ·ÙX ‰:ØV˜ËÒ„[Ú6Èx=Ycƒ}¤k&hk³ ÒH|RðÉ5Ùzˆá IKñ]°¿·qQ£gu½ªF eÎÂø«ª&í— °mQS¿9=…{b)0X±Ér¹] ¯/›…Œ¦Ò†#¬‚ïëŒCû‡¡¼¡M™;Q$â5Î6yœ°‘7ÄÖ Þ°f¶ÖfÕ#ŽÏBTFü$ÝVÍ{ŤMû ÙÈ€cN6dâ{¼ËnVVÁ“p[sÎ% Šp%Æˬx ZRVVL®\À`-†I°`µ¬ ÞîžÒ¼÷ ŽlYw%þA–VÞ@,­ÎO¡_53‚®òôã‘›f’6Ðã²…÷L¦Û)Ëxï ò¼Èò"1pÁòé˜k2®OWá¯a,‰…8ÉÙ‚‘)ñ™2c–n7"¹îç§Ðܽk×w¦óß݇Ó÷}yŽÚ~džÞŠÉžŽR +U‘ýOm¡(ûbé:Ҵݺÿ[kŒmDU²Wì:è^©ïâ2Dbn‚Q˜E\gÚ‹Ï‘$-“§¯`}ݧb#‹oÞ`~L-„6jÑN-¢¯ŠÉ€¿L©øþV÷³·$ó´ 7ìñ÷!aº£8¨ª"–}“ ÷›  +W¬l õE²tD(ÐK¶#Æ›eÊšäoòâL‘§¥‰‘®íÝHv­âPö ‹ìšÑslû@i.yö¡ìùÞ+÷šÏ3?òjo?ůGážE#Ÿ«7»Gªò¶Ä#ŸŸêä|ëÿ¹mÛºÊ#0éY;–wM호ÞÉ¿t¢ ž endstream endobj 560 0 obj << @@ -2326,27 +2438,23 @@ endobj 562 0 obj << /D [560 0 R /XYZ 132.768 705.06 null] >> endobj -294 0 obj << -/D [560 0 R /XYZ 133.768 667.198 null] +290 0 obj << +/D [560 0 R /XYZ 133.768 367.532 null] >> endobj 559 0 obj << -/Font << /F42 352 0 R /F40 351 0 R /F48 355 0 R >> +/Font << /F48 355 0 R /F40 351 0 R /F42 352 0 R >> /ProcSet [ /PDF /Text ] >> endobj 565 0 obj << -/Length 1915 +/Length 1483 /Filter /FlateDecode >> stream -xÚXÝsÛ6Ï_¡ÓËQ7! ?ZÅ3¶£´º¶i{Õ好ñÐ"dqL‘ªHÅÉtú¿w ФL%½øÁøàb¿°»¿…øä~Â'ß¼àv¼^½¸x&“”¥‘ˆ&«ÍD(ɤ˜D*fBªÉ*ŸüêÍ«l§/õ‡VWMQW7õ±jçfs~±Ó»;}¸œýoõï‰Æ,ÁÄ–*wÚR¬ëªig~Ĺ7o?îõåz›æfjN‰b’+8ÍâPÒá™/Š¥q2ém/ü$R–$ÉÈ?ˆÁäÆ™Dß’ý~Qew¥ÎΤ·°ÝŒ›gyjROk>üÄÃmð*ïyÕ—‚%q<ñ ‘.73?H¥—U³@yiQÛÍv«qz»Yà}h‰‚{î -mo¯ljšåú7ÎE¥sZÕ€¯ô¶:ËiȽ—3_påí²‡YÀ=û¹9vÜ-C]­ËºÑÖ¹!KÃphz»ÅϾH£ÎR]ÚÐ&ª`¶tÓ‚Zä¥~ìÀ-À£ääÎÇ'Δ KdâÈÚì¾ $¨ž5$ ÙÖ3¡¼ÇŠäfw5:ø=þÓlæ‡Jy×YS¬‰úæIe«(œ?–¹U¶n­ÅŠ3&C“ïÐJÅQ‰{3 -ã¾k¢þUsç}n„³¢¡1£áfÄ/‘b"Ù|¬ `GÜb3ÁR™KÞ!‘'<«œ¬çB¨Jw¼iÇu;æ|Å’(:‘2,çF·'–¾Ç«ÈÊ£]Ö=O%ôÛ“õ‘”YÍRáÕ4¿Ê­†W‹ê¸Ó:wÄqèaø=W kYÂ"+ì &L Á#B÷…Š3۲ݾÄÊ„Fz H!‚G7¢†YÕâ*4ew]]¢Uf¹S½²u}8èf_WyQÝÛõ€v,CD#»èÕ`òX†DL†©#z*&¿%ä­„KTC>ÛÔeI5¥ù -É;uã‰>|XéѼ\oüŒrfö!˜Â€y÷ÝíëÅ»åÍâöæ?‹«ÕâöÝÕ÷Ë×W«åoo¯—+:þŠþÓ_ðr ž±úá¿ß¯–noùóíW«›oÏs_“ÆÔü“hß=¼Ö¾9h³7ev]´ÍºÚxƒ#…€ع›ç?Æ^†P?ºêd"VÅT‹Ì„ fX†„ŠLLÁrŸ§Z¬”†®¦Ñ~]×»]Vå´0('mC`H˜à'XxõÓAIÆ&̸ÁÑHÄåÎb:Α%ŽQPÙ0øÛg`ª2UI«ñKÓÑB‰oiÖéŒ{æYŽ#bK¾/“Èj÷Ï eƒ;]Ú-‚¡Ù»;€¸ XÄÕÜbO WX!g{…³$ý|¯àK¥6Œ†pŒ=%ö# £EŠ¢uöâêØŒâ¹õÕˆªEƒåOŠÐ+ðryB‘&yj’Ü]\Säá ƒGl,Ì”D[yqÐë¶üH«;;f4<](2©Nä™x;Û™U&†ÂÄ;èß $§•‘#JAÂ63|aÇkèú8œåz¯«zÀ»$ÜÙ8¦V3»M:„âÉôf±irÍ.¡Ç¾,ÖE;r­'1y¾LYýtWÊ­r¶‘†:Þ5q2‘¦MÃ1Ësc;|ÆÇ­ñ>$ažtüç^H²1Mà¡ñ´×_ -`áÐÒ^«H -BJÚÒ -퀈åÐôAÏfkò #ÒaQ®›5t9ÎÝ­C«Ã˜MPÁE¾ÃK »jÚbæB+¯§C=ß’…íK’}_w}[«TYTn–Ý鲤¬þúcˆ1ÿ‡ïòü²¸ALüÊâб|À8s( XÙço\ñ¶~ÐLÚ@.¨ž}fÇ÷/ÿ&f]kÛ EÒ5G*4V¾¤iFXˆ¡?p€TAׂÎQÝæòL %ƒðB‰[û;-‹n¨#¯lˆ=ïƒBÙÝð³¦Y¼´ë­¶&g¼ÕC.þßú«žé5èâÀ'"ùäÀ¶;î¿I˜êiCí³ºÔu]Áƒ¿mÜʵš´¦>3²! ' hBñ–ß¹ï°^1e~TèYsÌJ -lDH]æM÷Bf€>iÄÑg_ÒMR°PÈ¢'_MÇ]5%ójzW´»¬y˜^ží9çO)ïëæÕ”OR>Ý”N/†?ˆDgÙŸf{¶AuF{ÑùÅÙËà_´¹YS5xB½¦Ç²„dEc?oèÛÌ€ðMÅßÈhès"5 `¾6©,XÁ<¥±.‰À[VNnÑ8bj=âôœ2Ð «Xô«øhv)KxðÉW´„·¥‘ £yÞË4VÇ¿I÷ëBn 4%‹Óþo¡ˆMºÁ“ß¼ûP˜mfÍÌéñ”‘&ëP•®Ò[zi inSV@JNLÔ¥ÞÙBÐËÔŒ«7¤æ$ˆ"–ÄEP‘Ce£H¢ÅêÅ_Ð†× +xÚµW[oÛ6~ï¯Ðò2y˜RuÙÒYÐvÙC7 ^_Öa%:bKžH/-†ý÷òPŠä0­»Ë(ò\?~‡¤Ám@ƒWϨ¿[>;™Äc¤"–ë€qN²4R‘‘˜‹`Y¿„W$YDŒR~ß- ïQ,h¸\qØ¡|U×NÀáî•F¹ëqü¹mºvØš%ᇽ\üºü\ AAŠ4N4ˆXNÀkúå‚ «€ç"Ô›F) ¥™~_îö[ùõ"JX–Jv×ÝK\uoœ-[_ºÃ¿µ|Giܺ5¥Smœ±U×÷Rí»¶nÚ[÷³›­½v^ç¯9ÍHž¤à½u[aø£‹†…&—.¹– +Çu·Ýv‹Rß]cá†ñÈ H]ÌH µZMLµ\/¢*ç<²òŸFYsR06wäíîÐË¥ÍHjª®Œü­ÝDçë«®UNé]SÛ%¢ Yf$YÂqÙWöG^4åÁd~ÿZ¾×¨8bIA^<©ÿíÝÕ~¿mªRŠnÚug·1ž‘$OÐZ2µæÔLæ÷ Àl<Ý ¤¿º.·ÛUYÝ)gA3Ÿ½Œ<žÛ³ûW³whZÍãß´9_1…|ÈVA„×Ý¡Õóœ§\¬6eÿñœ RdÙ4å¸ÛÖ¿ yžûöù¬Nûm¹ÚÊúÅàÞër'ÕXÆ PÅ,®¿†Þ€¹²­äu/K-Çô –Ò6ƒïÍÚsÎ%,Ã1ó©÷i¨Ó” »,‰ˆèÄyÁ‡ÃSÝLJ}ÙCœZö¸îèoÕíve[ãGÓ:]9”;'ì(+W?Ý]Å wå!'i¾à€ÁyÃy½)5JNû— !B…SŽ&< +ßQA•t{WÒ±~®-ï‚°y˜¥–ËÌdi Û8ïÌB†óûƒVžÐcÂ8±1¡€¦¡® ´RiYûèr—lza +téQ ˸—éòÖçýFÚ„‚Øè1ƒðuP²&®>9'irÄ?BùúûF™®Âó"lLÅÓ*)iÔÈ6ðÛ" +fÚÎý2vðWÝô²ÒÛ8¿rc‰?sAFíÆiE´ Þ~ž“©Ï½üýF,Z€Ñb41 Ƚc«¦îe[˶j¤Âå3v±IŠÎIeS®·¸[°aäFº!>Y§¢óÌ1%y¨6Ýa[£¼’8Š¥›²MÚŒéãè9‰ãb `…CçóÈÜ|Ò)¨ˆá²$|Õb(å€\> [ù¬$‚p61ââi±‡Fœ:ódÎüJ–}µîîVeá29LV^Aã¹Cq[/lñ”z`Î{-×l²ÕÏÏ—8cƒCÑ"߈|#$û ~Î._;\`„4r³¹K7†9Òá*§ †jX5-©¥ýæŸÍ«ù¾ßtÊ à¥XdCZ`{#qJls‹J­ûfµˆ!V-Qý®ÔÕF:‡ü¸ÈÉxþY†ÌÅX%jÈÇNºÛ3¤'K =î¿+io¯ãåòŸÜ!ÿˆÉIqŠ 9ÏÏ|åìüÒw#:>Ë4â4¼ípÔÃè­Ü«Ä)‡9!Œ‹Ùi6:-µ[¡àña;òcƒp•bYqJãc"dp¸ ´·AYaDÇô*¸#÷ºl¢×œÜ­doxß|©n‡^?ôÖé…cÊDGO(œ²Èqº¶Íxû±ûšÏ{ß°GõðBÊÁâ-_DíÍäM4rMt>‰RxˆÈÛ®ÿðü “{öIð>­3}‰å>zƒ]œ  ‰åññfcñRáR+_œ;}Xdï&·Â÷~cÐEá{âDã3ƒ’˜ÅSûö%÷¯ìÁ½ò¦áÇÐ\)K«Œ³ÙŽËg"ˆ¾c endstream endobj 564 0 obj << @@ -2359,24 +2467,27 @@ endobj 566 0 obj << /D [564 0 R /XYZ 132.768 705.06 null] >> endobj -298 0 obj << -/D [564 0 R /XYZ 133.768 524.981 null] +294 0 obj << +/D [564 0 R /XYZ 133.768 667.198 null] >> endobj 563 0 obj << -/Font << /F48 355 0 R /F40 351 0 R /F42 352 0 R >> +/Font << /F42 352 0 R /F40 351 0 R /F48 355 0 R >> /ProcSet [ /PDF /Text ] >> endobj 570 0 obj << -/Length 1918 +/Length 1915 /Filter /FlateDecode >> stream -xÚX[sÛD~ï¯0y’™x£]Ý[73¡´`€)ž¾”NG¶ÖöYº$„_Ï9{veIx±ö~¾sÙ»8,ÜÅ7/\óýjóâêï.–„"\lö îÇ,âb^°Ød‹Îæ(—+ßUdj)ç^e]š/?m¾ƒíñ`{è±(Œál½o-‹îtm– ¥xо]Ö¦‡†ÎÏ䯮+ ---vZ+‘uZ´Í% ø‘ó[×´4•«»%w³ÐìˆíAªUeASû²F ‹ç1 ½, Œ†»òT©\®Zu‚DÂHÑ´(»Øìjµ•ͦÛrÉÁø#ÙråÅ‘s[ÐÒö¨sFÚH@,bálå.íiW!gÅ̱µY±UíJÃuÇ8Q+™ghái}UM €_Ò¼“ õé(h4•Ü)½/£®QÅšä©y0 ëÀR•ÍœcXÖ;;m[0ÐR¸N×j“¸>Žð|‹nÉÎŒ”{ AYÄÃÈWÂõ˜MpÒ¾[<Ê«ÔWì‡dMÊL½aL}0>KüÐjòÑ¥%œÖD,ò»âÕÓ3|æ‹Þÿ4c/Žfí¥h¿ìɨaEçä.Xž!L¶ ”ï:—4ÙT5Ùty‹§Q”‚yn26]#°%pmxøV5Z.£NjSúµEÿH3{êA{7l¯áU Ü u¡¶4ßcj*L#ãhjßà - ×­V3é¥ySÒ^£¶¹ £ÆtÔéï­Ý˜¶ÑÍùhÂc±è]{¯í3ì`ÏHÌû¥1'DwA͇£ÚMGœq?˜ÐMÚX•Ž¦1¾¦0 ÕR»‰VÏ¥Mc׷ǺìÇ©ÌŽ7ÖàÉšÚ]±;â}ȘQW,£@}xDÌüˆß°p¹â®ë:ß–È·c17™qc¤•§†èS3"ŸÿÆtì; ®²¶X­Z&æNUnm zv'£Êƒý"ÞïÊ9…Œôߢ—©Oö;‰T³0ðä‡ïo~¾ý|³Ù¼_®B°À‡»÷ú®™žž}sóÃÔ¿¿{SË´•·úŠìM éda–£Œ__${ªÝa÷ïKº0AÀ|Ž$ d }I3nÄ‚$\ &ªóæK’]îãï,L/ -EáŒä_È3# Åø«ëˆOâ± M@4˜)]CáØ”`=ùhf‘Ö½(1QPåj§Úü‘æjù{§j yì!¿ã÷ï.¶`ðúbd–éj9W@±ÄÞ üS0¥#ÍcdÎ$`îä6ÃúKb˜Ç²ÃF ¼ å|˜²¤•j,UOs/Gžé1}g1‡Lœ i›—»;’ Š]Þe=ëAxҸѿ¡Q”nš’8pk€fL áž'Lë¤垀;ͱìrÝ”‹aì$TI3ø Úã%5é’óÑõä”dD/WiM°~; ø÷ü ü”+„43RSZ>TÆ_;-Â2Ka¨Ë˜zž7L{4ÌÙœ3Ý|ƒô­Í)çÆ8„žaø¢Q™|’Eø³8 **,sýñ5\±ZÝüòöÍæö§_òéò; PlëxÁõ>ŽÐÝLîÔ ¬V×s%ª½g´(­Ôë‹{}üéI¾¾øðýçoßÿ>óÏ®ÒeÎë Î܋매i0ÆfåöÄ£Ðâ²h__|-ï•UAãOsõgŠj EŒãcÝ{ý xÊëW׆û-”«á½µøWsÊ­¯þ¦lí¤]êŸßfsÈ7yÀ;‡ñ|Ï9¥Ô >‘ÔIg„Å!<û`7–ŸåL„³ýp,ÓÔ;Bc¥ëO&WÆ‚`B·¯& ñ¡VµôNÕï3L¢Ç®_8¨ï9ÍB´ëwö†i†k£T#Ì]Ä–å©È èóDˆ2§e;»êæB§6!"ÌH3"¦g ŒôÅ´²€"ÃV?ý@<™ŽvœÔáØÒBMÄ"2‡Xr‡}‡aevëúš„Ò2¼¡ásý:ÁœZ‚¬Ê\µrB¡'™ÀŒû.×d ¥6¥~&ZýòoŸËˆ.Øq.„"v^g®9óƒx <‚ BçPÒ·µßÙ ú,ðã)a7s7 -*Ox#ÆÆsµt#³ ú ÑDh”pñ¬, óI/ÓþÍQFºa –°Ï'o/§U-÷R[]Z…ð¨*kýÄ6P?Z+­:¦[ÙâCgÊZ‡$6ñZ˜A[ÓúݹЃ üÓE7¤~ðèµû¹Œ ÔŠËåø º/ó¼ÔÆkþOáþœl7búg§¸Qxü§$5ôñlê©ê²-¯×íc%¯íKc}¥»zÏYìOÊù5¦¨ëi†Z_éáõI1»½Jëôt=xŒXñOŸ$C("‚|&3ïü?‡qO -Ò‹¬†‡Y„À¿"œÂ‚áñž0Ï$f,£wJÐ"O?s¹Ýá‰Ñ–·›Hw— +xÚXÝsÛ6Ï_¡ÓËQ7! ?ZÅ3¶£´º¶i{Õ好ñÐ"dqL‘ªHÅÉtú¿w ФL%½øÁøàb¿°»¿…øä~Â'ß¼àv¼^½¸x&“”¥‘ˆ&«ÍD(ɤ˜D*fBªÉ*ŸüêÍ«l§/õ‡VWMQW7õ±jçfs~±Ó»;}¸œýoõï‰Æ,ÁÄ–*wÚR¬ëªig~Ĺ7o?îõåz›æfjN‰b’+8ÍâPÒá™/Š¥q2ém/ü$R–$ÉÈ?ˆÁäÆ™Dß’ý~Qew¥ÎΤ·°ÝŒ›gyjROk>üÄÃmð*ïyÕ—‚%q<ñ ‘.73?H¥—U³@yiQÛÍv«qz»Yà}h‰‚{î -mo¯ljšåú7ÎE¥sZÕ€¯ô¶:ËiȽ—3_påí²‡YÀ=û¹9vÜ-C]­ËºÑÖ¹!KÃphz»ÅϾH£ÎR]ÚÐ&ª`¶tÓ‚Zä¥~ìÀ-À£ääÎÇ'Δ KdâÈÚì¾ $¨ž5$ ÙÖ3¡¼ÇŠäfw5:ø=þÓlæ‡Jy×YS¬‰úæIe«(œ?–¹U¶n­ÅŠ3&C“ïÐJÅQ‰{3 +ã¾k¢þUsç}n„³¢¡1£áfÄ/‘b"Ù|¬ `GÜb3ÁR™KÞ!‘'<«œ¬çB¨Jw¼iÇu;æ|Å’(:‘2,çF·'–¾Ç«ÈÊ£]Ö=O%ôÛ“õ‘”YÍRáÕ4¿Ê­†W‹ê¸Ó:wÄqèaø=W kYÂ"+ì &L Á#B÷…Š3۲ݾÄÊ„Fz H!‚G7¢†YÕâ*4ew]]¢Uf¹S½²u}8èf_WyQÝÛõ€v,CD#»èÕ`òX†DL†©#z*&¿%ä­„KTC>ÛÔeI5¥ù +É;uã‰>|XéѼ\oüŒrfö!˜Â€y÷ÝíëÅ»åÍâöæ?‹«ÕâöÝÕ÷Ë×W«åoo¯—+:þŠþÓ_ðr ž±úá¿ß¯–noùóíW«›oÏs_“ÆÔü“hß=¼Ö¾9h³7ev]´ÍºÚxƒ#…€ع›ç?Æ^†P?ºêd"VÅT‹Ì„ fX†„ŠLLÁrŸ§Z¬”†®¦Ñ~]×»]Vå´0('mC`H˜à'XxõÓAIÆ&̸ÁÑHÄåÎb:Α%ŽQPÙ0øÛg`ª2UI«ñKÓÑB‰oiÖéŒ{æYŽ#bK¾/“Èj÷Ï eƒ;]Ú-‚¡Ù»;€¸ XÄÕÜbO WX!g{…³$ý|¯àK¥6Œ†pŒ=%ö# £EŠ¢uöâêØŒâ¹õÕˆªEƒåOŠÐ+ðryB‘&yj’Ü]\Säá ƒGl,Ì”D[yqÐë¶üH«;;f4<](2©Nä™x;Û™U&†ÂÄ;èß $§•‘#JAÂ63|aÇkèú8œåz¯«zÀ»$ÜÙ8¦V3»M:„âÉôf±irÍ.¡Ç¾,ÖE;r­'1y¾LYýtWÊ­r¶‘†:Þ5q2‘¦MÃ1Ësc;|ÆÇ­ñ>$ažtüç^H²1Mà¡ñ´×_ +`áÐÒ^«H +BJÚÒ +퀈åÐôAÏfkò #ÒaQ®›5t9ÎÝ­C«Ã˜MPÁE¾ÃK »jÚbæB+¯§C=ß’…íK’}_w}[«TYTn–Ý鲤¬þúcˆ1ÿ‡ïòü²¸ALüÊâб|À8s( XÙço\ñ¶~ÐLÚ@.¨ž}fÇ÷/ÿ&f]kÛ EÒ5G*4V¾¤iFXˆ¡?p€TAׂÎQÝæòL %ƒðB‰[û;-‹n¨#¯lˆ=ïƒBÙÝð³¦Y¼´ë­¶&g¼ÕC.þßú«žé5èâÀ'"ùäÀ¶;î¿I˜êiCí³ºÔu]Áƒ¿mÜʵš´¦>3²! ' hBñ–ß¹ï°^1e~TèYsÌJ +lDH]æM÷Bf€>iÄÑg_ÒMR°PÈ¢'_MÇ]5%ójzW´»¬y˜^ží9çO)ïëæÕ”OR>Ý”N/†?ˆDgÙŸf{¶AuF{ÑùÅÙËà_´¹YS5xB½¦Ç²„dEc?oèÛÌ€ðMÅßÈhès"5 `¾6©,XÁ<¥±.‰À[VNnÑ8bj=âôœ2Ð «Xô«øhv)KxðÉW´„·¥‘ £yÞË4VÇ¿I÷ëBn 4%‹Óþo¡ˆMºÁ“ß¼ûP˜mfÍÌéñ”‘&ëP•®Ò[zi inSV@JNLÔ¥ÞÙBÐËÔŒ«7¤æ$ˆ"–ÄEP‘Ce£HŠÑbõâ/Ð+†Ø endstream endobj 569 0 obj << @@ -2389,14 +2500,44 @@ endobj 571 0 obj << /D [569 0 R /XYZ 132.768 705.06 null] >> endobj -302 0 obj << -/D [569 0 R /XYZ 133.768 568.825 null] +298 0 obj << +/D [569 0 R /XYZ 133.768 524.981 null] >> endobj 568 0 obj << -/Font << /F40 351 0 R /F48 355 0 R /F8 572 0 R /F11 499 0 R /F42 352 0 R >> +/Font << /F48 355 0 R /F40 351 0 R /F42 352 0 R >> /ProcSet [ /PDF /Text ] >> endobj +574 0 obj << +/Length 1918 +/Filter /FlateDecode +>> +stream +xÚX[sÛD~ï¯0y’™x£]Ý[73¡´`€)ž¾”NG¶ÖöYº$„_Ï9{veIx±ö~¾sÙ»8,ÜÅ7/\óýjóâêï.–„"\lö îÇ,âb^°Ød‹Îæ(—+ßUdj)ç^e]š/?m¾ƒíñ`{è±(Œál½o-‹îtm– ¥xо]Ö¦‡†ÎÏ䯮+ +--vZ+‘uZ´Í% ø‘ó[×´4•«»%w³ÐìˆíAªUeASû²F ‹ç1 ½, Œ†»òT©\®Zu‚DÂHÑ´(»Øìjµ•ͦÛrÉÁø#ÙråÅ‘s[ÐÒö¨sFÚH@,bálå.íiW!gÅ̱µY±UíJÃuÇ8Q+™ghái}UM €_Ò¼“ õé(h4•Ü)½/£®QÅšä©y0 ëÀR•ÍœcXÖ;;m[0ÐR¸N×j“¸>Žð|‹nÉÎŒ”{ AYÄÃÈWÂõ˜MpÒ¾[<Ê«ÔWì‡dMÊL½aL}0>KüÐjòÑ¥%œÖD,ò»âÕÓ3|æ‹Þÿ4c/Žfí¥h¿ìɨaEçä.Xž!L¶ ”ï:—4ÙT5Ùty‹§Q”‚yn26]#°%pmxøV5Z.£NjSúµEÿH3{êA{7l¯áU Ü u¡¶4ßcj*L#ãhjßà + ×­V3é¥ySÒ^£¶¹ £ÆtÔéï­Ý˜¶ÑÍùhÂc±è]{¯í3ì`ÏHÌû¥1'DwA͇£ÚMGœq?˜ÐMÚX•Ž¦1¾¦0 ÕR»‰VÏ¥Mc׷ǺìÇ©ÌŽ7ÖàÉšÚ]±;â}ȘQW,£@}xDÌüˆß°p¹â®ë:ß–È·c17™qc¤•§†èS3"ŸÿÆtì; ®²¶X­Z&æNUnm zv'£Êƒý"ÞïÊ9…Œôߢ—©Oö;‰T³0ðä‡ïo~¾ý|³Ù¼_®B°À‡»÷ú®™žž}sóÃÔ¿¿{SË´•·úŠìM éda–£Œ__${ªÝa÷ïKº0AÀ|Ž$ d }I3nÄ‚$\ &ªóæK’]îãï,L/ +EáŒä_È3# Åø«ëˆOâ± M@4˜)]CáØ”`=ùhf‘Ö½(1QPåj§Úü‘æjù{§j yì!¿ã÷ï.¶`ðúbd–éj9W@±ÄÞ üS0¥#ÍcdÎ$`îä6ÃúKb˜Ç²ÃF ¼ å|˜²¤•j,UOs/Gžé1}g1‡Lœ i›—»;’ Š]Þe=ëAxҸѿ¡Q”nš’8pk€fL áž'Lë¤垀;ͱìrÝ”‹aì$TI3ø Úã%5é’óÑõä”dD/WiM°~; ø÷ü ü”+„43RSZ>TÆ_;-Â2Ka¨Ë˜zž7L{4ÌÙœ3Ý|ƒô­Í)çÆ8„žaø¢Q™|’Eø³8 **,sýñ5\±ZÝüòöÍæö§_òéò; PlëxÁõ>ŽÐÝLîÔ ¬V×s%ª½g´(­Ôë‹{}üéI¾¾øðýçoßÿ>óÏ®ÒeÎë Î܋매i0ÆfåöÄ£Ðâ²h__|-ï•UAãOsõgŠj EŒãcÝ{ý xÊëW׆û-”«á½µøWsÊ­¯þ¦lí¤]êŸßfsÈ7yÀ;‡ñ|Ï9¥Ô >‘ÔIg„Å!<û`7–ŸåL„³ýp,ÓÔ;Bc¥ëO&WÆ‚`B·¯& ñ¡VµôNÕï3L¢Ç®_8¨ï9ÍB´ëwö†i†k£T#Ì]Ä–å©È èóDˆ2§e;»êæB§6!"ÌH3"¦g ŒôÅ´²€"ÃV?ý@<™ŽvœÔáØÒBMÄ"2‡Xr‡}‡aevëúš„Ò2¼¡ásý:ÁœZ‚¬Ê\µrB¡'™ÀŒû.×d ¥6¥~&ZýòoŸËˆ.Øq.„"v^g®9óƒx <‚ BçPÒ·µßÙ ú,ðã)a7s7 +*Ox#ÆÆsµt#³ ú ÑDh”pñ¬, óI/ÓþÍQFºa –°Ï'o/§U-÷R[]Z…ð¨*kýÄ6P?Z+­:¦[ÙâCgÊZ‡$6ñZ˜A[ÓúݹЃ üÓE7¤~ðèµû¹Œ ÔŠËåø º/ó¼ÔÆkþOáþœl7búg§¸Qxü§$5ôñlê©ê²-¯×íc%¯íKc}¥»zÏYìOÊù5¦¨ëi†Z_éáõI1»½Jëôt=xŒXñOŸ$C("‚|&3ïü?‡qO +Ò‹¬†‡Y„À¿"œÂ‚áñž0Ï$f,£wJÐ"O?s¹Ýáy£-o7/þHˆ— +endstream +endobj +573 0 obj << +/Type /Page +/Contents 574 0 R +/Resources 572 0 R +/MediaBox [0 0 612 792] +/Parent 567 0 R +>> endobj 575 0 obj << +/D [573 0 R /XYZ 132.768 705.06 null] +>> endobj +302 0 obj << +/D [573 0 R /XYZ 133.768 568.825 null] +>> endobj +572 0 obj << +/Font << /F40 351 0 R /F48 355 0 R /F8 576 0 R /F11 504 0 R /F42 352 0 R >> +/ProcSet [ /PDF /Text ] +>> endobj +579 0 obj << /Length 2050 /Filter /FlateDecode >> @@ -2410,33 +2551,33 @@ ct ìI:¥WðÄ{%+¯^AŒÊ* &D§'jJ*ðXç샑?Lʸ‘ ™¬ºGž¤·P¬[a¸wuÆ$¼ÅIµbÙEä mŒü{ªÌÜ&¹»QŒ¬>PÍGÚAÍRð=ˆ–?!lâ·—µ´V¸† (g—wÚB^J¨ˆ”K³‚,¶"ôA«Vš¡…ÆærGîh¨¹‰¹&þõíFÄüø80@{s<Übÿ5YÝÀ?g ±oëÒ*îÒž–m=œóWè jÖ4zÙbžN`o뺮 V V ¦§ ‹“kÝHî“œâ¹Á,î'ó ŸßfóqÔ-|›|>@Hªõôu1¾|mñkÂ>Ü[TØ_ãóß7ãìÿü+ò%Š‹»=7Cjþ³RÚ0¡èÕ ::$€/„;‡yC [ È&¢IÝvrøsüÅŸ 0ºùGÆ•½îwúÛçÏÄê±jW;'*Kh©T;PÝ $e#ɱ’~Î>;RvÃ7É}ZÙŸFö…÷š0F\¬o~nÀ{™# càó%÷¯ˆ…eÞ*üþß)[CŽtq™DÑ2.a“N‘ûOÿâR Á(¦R [_Ï’¡<òÿ -W ô¢"EñDCöbGÙ­z,ð_4œïÅ _ÉÏð*o¬8ò”³÷Ôpû'0˜$ Û0¿aÔ &¼_Y;¹h*0Àßóó€õyû SXioÁÔU’Weåü~¾>/}(èëÒì÷× ¾ñ'¤4p¶ËÒ°ˆc(MoýöåÝÿÑÑìj +W ô¢"EñDCöbGÙ­z,ð_4œïÅ _ÉÏð*o¬8ò”³÷Ôpû'0˜$ Û0¿aÔ &¼_Y;¹h*0Àßóó€õyû SXioÁÔU’Weåü~¾>/}(èëÒì÷× ¾ñ'¤4p¶ËÒ°ˆc(ÍnýöåÝÿÑâìk endstream endobj -574 0 obj << +578 0 obj << /Type /Page -/Contents 575 0 R -/Resources 573 0 R +/Contents 579 0 R +/Resources 577 0 R /MediaBox [0 0 612 792] /Parent 567 0 R >> endobj -576 0 obj << -/D [574 0 R /XYZ 132.768 705.06 null] +580 0 obj << +/D [578 0 R /XYZ 132.768 705.06 null] >> endobj 306 0 obj << -/D [574 0 R /XYZ 133.768 546.859 null] +/D [578 0 R /XYZ 133.768 546.859 null] >> endobj 310 0 obj << -/D [574 0 R /XYZ 133.768 463.796 null] +/D [578 0 R /XYZ 133.768 463.796 null] >> endobj 314 0 obj << -/D [574 0 R /XYZ 133.768 273.136 null] +/D [578 0 R /XYZ 133.768 273.136 null] >> endobj -573 0 obj << +577 0 obj << /Font << /F48 355 0 R /F40 351 0 R /F42 352 0 R /F14 432 0 R >> /ProcSet [ /PDF /Text ] >> endobj -582 0 obj << +586 0 obj << /Length 2209 /Filter /FlateDecode >> @@ -2446,115 +2587,115 @@ xÚ½] ° ²3âæ 4™L–ìæ6½É¼ 4Ú˜Þ<´]&X–•9dŸËÀçJð}¿ìYÕïvÀÊ·sÑ/sÉ8psZ(­ù&…ôŠ:c%‘¢ÁŽëÃÜ7]X åHšn0}=‘ø¬J7ò1étë\mû¦r×4žÕÕs·È¶Ç’àƒ/Rz)SF!%m–pé5Ίš“’-ä¡¿ÝÕxN§¯hxÀÕbÇS¸Ó]Ý›¦žsŒ|¨˜÷!°/uüskú®÷X_i×aòÇïŸ0—,-r/wñçäN¯„ÿl¹¡ß§—BÇPŦٓÁUäy òjPÕ0——àΉã‡"+¨òrÿn§ûà}¦?º³àêsÁ•L&ɱ‘×zÌ“¿HëgÞöªG /˜SÉ„œö¸sð5 l;#W)™Hïåò¨B+³®)¢ÿ”ð…}Y|‘Äâ³ýìZäÛ'ýl&¸¼‡R^yÒ¬BBO“/6«¸œ™dNH^jN %gèÙEU!Í"Œµ ŽÎh¸Ž^’ð‘„ŽÀ»µGu°¹ÁðXͶ$Ýðö—(€K|jˆQq&ƒs¦DQÓdÓ=HTŽîÞ‚9Rb°¿'È¿4¨–Á¥x—@Õˆ"‚ª¢{ÔªCÿvé‚i9Éõìßl ŸMPÁòì4}@Ž( m§Ç&¸)éå[ƒAãè·7ËŒG7„¾0jraTHú)ËËòÒ¶_“§ûü®Så!ÿòPuT¥Ûß…þvŸàå5/NŠ¸7ºS»¹,WäŒßgüak´ª­ºÕŸWvMåøLÕÙ;™êa¼Lg]5w}—,Ï'Óº>Z>p¡I5û´k³Û·MÕ c‡¬ï•Q;;_ÖÅÐÔÉ‹²nªf‚RýÞÝÂAŠ!xÞ<ݶO¤A¨ø“,û+,ž“‡¯hø×Þ9ýŒÅ–'ŸTc9%"6¦ÂuRª,„ÑèÝñJs³=¸ãÙ§y˜¦d\–¼÷@ü‰Ol>‚í[Uyl3ÐèóL+B€ÜP|‡ÄX$ó=ƒ€[=Íå)§äfs}NÊŽ*±³êÉÑQR‘P‰øÌ›®n\Šmêó«ÌEä|YáY:¨¾ãÐÛ€÷£ÎÄœ…¡;eRȳKÎ=îN ŠTíÓ!Ê¢SÆ!Uƒ•Ïw^;ôvºþ7Ô<ç…ÂÔtxßûdÄâš'xhIµPñp-”–S[‹»Ãa?gꔳ¸|ºê0ÐÜŽ]µï¡t¿:€‘ âsÓÓ ù¹] @ð ŸôÃwqeÐdæ(J²<½ìXÑo2^«Šð´Ù*zˆ*ƒ5 -ìQ¡¢wª’ÞTíW–Qojm)¡>l÷3ƳâÙ£Y8JÑ$‰êúK—v5³oÍz× ƒ>óˆ…H€$+@Ê’…wzX™ˆþqsõ?­&Ô3 +ìQ¡¢wª’ÞTíW–Qojm)¡>l÷3ƳâÙ£Y8JÑ$‰êúK—v5³oÍz× ƒ>óˆ…H€$+@Ê’…w‚8=!úÇÍÕÿ­7Ô4 endstream endobj -581 0 obj << +585 0 obj << /Type /Page -/Contents 582 0 R -/Resources 580 0 R +/Contents 586 0 R +/Resources 584 0 R /MediaBox [0 0 612 792] /Parent 567 0 R -/Annots [ 577 0 R ] +/Annots [ 581 0 R ] >> endobj -577 0 obj << +581 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [375.641 523.341 384.279 534.285] /A << /S /GoTo /D (appendix.B) >> >> endobj -583 0 obj << -/D [581 0 R /XYZ 132.768 705.06 null] +587 0 obj << +/D [585 0 R /XYZ 132.768 705.06 null] >> endobj 318 0 obj << -/D [581 0 R /XYZ 133.768 604.786 null] +/D [585 0 R /XYZ 133.768 604.786 null] >> endobj 322 0 obj << -/D [581 0 R /XYZ 133.768 496.834 null] +/D [585 0 R /XYZ 133.768 496.834 null] >> endobj -580 0 obj << -/Font << /F40 351 0 R /F42 352 0 R /F48 355 0 R /F14 432 0 R /F13 584 0 R /F11 499 0 R /F8 572 0 R >> +584 0 obj << +/Font << /F40 351 0 R /F42 352 0 R /F48 355 0 R /F14 432 0 R /F13 588 0 R /F11 504 0 R /F8 576 0 R >> /ProcSet [ /PDF /Text ] >> endobj -589 0 obj << -/Length 937 +593 0 obj << +/Length 938 /Filter /FlateDecode >> stream xÚÕVÝœF ¿¿‚GÂì|0|HQ¥$JNªUj·}Éåa³,:è0\’ÿ¾6†½Û-—H©T©/ŒÇc<öÏ?xP<¸½áWëëýÍîH‚‚©Lƒý!IÎ2!ƒTgL*ì«àCxÇE}Üÿ|~o÷.áO^BIÁÁl,¹Ð;ží¸ŒbQð0¦å¡2Þ’\Ù±tÍà›¾#E õ½¹íç²]Œ½q‘ÈÃÚú‘E±Í«ªú‡Ÿñìâ„ðò'áÉE’‡“‡ b™'ÛHhÎruæeÙŸNÊO[8¤ ¥2S/n›ŽÖÑ–sùÌxàꀄßno‚`¤B!/X³æ¯ÖüƒXÊ°L/±Ü ]p–åÅЩ¯šCc«­È9S@àç ÑüYhD*ÎÐ Æ™Ó0I”J®€§30°~0’%Ð<6ÖE7Æ"ÕLëPÊoÇt¯¸þDÒ¯Àí/$ƒ-×ßÜW}9lç:ȘŽ´4©@øä0ç)¦—Á†oâ¨Úè¢Ï?Òl)'ž6F™gâ-²òhOæ%ø=Gð+«B2-sò¨ô…ÕÛýÍßgH•t +~t~5ì E=RºáÚCá¦Ò曆 a%J„¿Ã‡ÛÓ1Ö‚o<ò¢œ;”sáJ%”ÏTBƒ…ñÐÿˆÛX!+pyíLWI>¸þDÒ¯Àí/$ƒ-×ßÜW}9lç:ȘŽ´4©@øä0ç)¦—Á†oâ¨Úè¢Ï?Òl)'ž6F™gâ-²òhOæ%ø=Gð+«B2-sò¨Ò «·û›¿gY•u endstream endobj -588 0 obj << +592 0 obj << /Type /Page -/Contents 589 0 R -/Resources 587 0 R +/Contents 593 0 R +/Resources 591 0 R /MediaBox [0 0 612 792] /Parent 567 0 R -/Annots [ 578 0 R 579 0 R 585 0 R 586 0 R ] +/Annots [ 582 0 R 583 0 R 589 0 R 590 0 R ] >> endobj -578 0 obj << +582 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [446.732 642.127 458.687 653.071] /A << /S /GoTo /D (section.12) >> >> endobj -579 0 obj << +583 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [372.771 630.172 392.198 641.116] /A << /S /GoTo /D (subsection.12.4) >> >> endobj -585 0 obj << +589 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [196.692 554.456 205.878 565.4] /A << /S /GoTo /D (appendix.A) >> >> endobj -586 0 obj << +590 0 obj << /Type /Annot /Subtype /Link /Border[0 0 0]/H/I/C[1 0 0] /Rect [196.692 510.62 205.878 521.564] /A << /S /GoTo /D (appendix.A) >> >> endobj -590 0 obj << -/D [588 0 R /XYZ 132.768 705.06 null] +594 0 obj << +/D [592 0 R /XYZ 132.768 705.06 null] >> endobj -587 0 obj << +591 0 obj << /Font << /F14 432 0 R /F40 351 0 R /F48 355 0 R >> /ProcSet [ /PDF /Text ] >> endobj -591 0 obj +595 0 obj [329.4] endobj -592 0 obj +596 0 obj [500 500 500 500 500 500 500 500 500 500 277.8 277.8 277.8 777.8 472.2 472.2 777.8 750 708.3 722.2 763.9 680.6 652.8 784.7 750 361.1 513.9 777.8 625 916.7 750 777.8 680.6 777.8 736.1 555.6 722.2 750 750 1027.8 750 750 611.1 277.8 500 277.8] endobj -593 0 obj +597 0 obj [277.8 277.8 777.8 500 777.8 500 530.9 750 758.5 714.7 827.9 738.2 643.1 786.3 831.3 439.6 554.5 849.3 680.6 970.1 803.5 762.8 642 790.6 759.3 613.2 584.4 682.8 583.3 944.4 828.5 580.6 682.6 388.9 388.9 388.9 1000 1000 416.7 528.6 429.2 432.8 520.5 465.6 489.6 477 576.2 344.5 411.8 520.6 298.4 878 600.2 484.7 503.1 446.4 451.2 468.8 361.1 572.5] endobj -594 0 obj +598 0 obj [500 777.8 500 777.8 777.8 777.8 777.8 777.8 777.8 777.8 1000 500 500 777.8 777.8 777.8 777.8 777.8] endobj -596 0 obj +600 0 obj [600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 0 0 0 600 600 600 600 600 600 600] endobj -597 0 obj +601 0 obj [250 278 500 500 500 500 500 500 500 500 500 500 333 333 675 675 675 500 920 611 611 667 722 611 611 722 722 333 444 667 556 833 667 722 611 722 611 500 556 722 611 833 611 556 556 389 278 389 422 500 333 500 500 444 500 444 278 500 500 278 278 444 278 722 500 500 500 500 389 389 278 500 444] endobj -598 0 obj +602 0 obj [556 556 167 333 667 278 333 333 0 333 570 0 667 444 333 278 0 0 0 0 0 0 0 0 0 0 0 0 333 278 250 333 555 500 500 1000 833 333 333 333 500 570 250 333 250 278 500 500 500 500 500 500 500 500 500 500 333 333 570 570 570 500 930 722 667 722 722 667 611 778 778 389 500 778 667 944 722 778 611 778 722 556 667 722 722 1000 722 722 667 333 278 333 581 500 333 500 556 444 556 444 333 500 556 278 333 556 278 833 556 500 556 556 444 389 333 556 500 722 500 500 444 394 220 394 520 0 0 0 333 500 500 1000 500 500 333 1000 556 333 1000 0 0 0 0 0 0 500 500 350 500] endobj -599 0 obj +603 0 obj [556 556 167 333 611 278 333 333 0 333 564 0 611 444 333 278 0 0 0 0 0 0 0 0 0 0 0 0 333 180 250 333 408 500 500 833 778 333 333 333 500 564 250 333 250 278 500 500 500 500 500 500 500 500 500 500 278 278 564 564 564 444 921 722 667 667 722 611 556 722 722 333 389 722 611 889 722 722 556 722 667 556 611 722 722 944 722 722 611 333 278 333 469 500 333 444 500 444 500 444 333 500 500 278 278 500 278 778 500 500 500 500 333 389 278 500 500 722 500 500 444 480 200 480 541 0 0 0 333 500 444 1000 500 500 333 1000 556 333 889 0 0 0 0 0 0 444 444] endobj -600 0 obj << +604 0 obj << /Length1 1615 /Length2 8425 /Length3 0 @@ -2594,7 +2735,7 @@ C hBñ©ôÅAtn÷=oÞsËln–àPT²znÍs=7È[½ªÂ·”c pÁÇÀüâÿUZŠAoÏwŽe£^±^˜ó¤1;½ßVPþÙ…è™ÌLù<¿¬`Ã^¥l3Î|—(žNP[Ú¢¨$w€°—˜éeßÇ{wh©ûa WØå¶ÑÒ Ó°’ÍI²,ÔÿŽHb† endstream endobj -601 0 obj << +605 0 obj << /Type /FontDescriptor /FontName /PVCURR+CMMI10 /Flags 4 @@ -2606,9 +2747,9 @@ endobj /StemV 72 /XHeight 431 /CharSet (/N/a/b/comma/d/e/i/j/m/n/o/period/r/u) -/FontFile 600 0 R +/FontFile 604 0 R >> endobj -602 0 obj << +606 0 obj << /Length1 1496 /Length2 8632 /Length3 0 @@ -2647,7 +2788,7 @@ J N0ýÎ*#ÑÍ ¿ühݘ:ó)4]´7Ò©9/Œ©†ÝØÇÎíUùya¹ªµþÔ÷S°Œ(ý;!É:(®›•ð̶XàL(Ç<ºQ©ÄºÐ#eKÄ}G§$N0‘pXÒÓÚ:rŠ%4bjø3ºh é[{£˜QÈç¢v £…ýºü~—]Ú ¢Ïö‹­»²Ð2yãQ~mÄw½¼gWœÑi-ñs.íšûˆÞ­F“ŸÈ&+7¨BåºÏO¯î–¾w¿0ÎÝæšZLüPœ¶|óbb®"–±· Ÿ*žvfÉ^¡ ®ЉÐb¨^.&á”N„³IÊ98;#™kjX*Î)MpU5¯Ó¸ùZš§«S4œ–Ë]GqkW«ÈzŠ¹‹=¢òîé'y©xÚ ‰bÑ/Q¸,=–Xñ|+¬(CØ%ƒ¦à(c+Î(ÈH­;{ÇÆšµ+ïh:«@ôröH¯\æ WQ­Ö—ꊪڛ|™‡½áBè®fùhhìW¯Þ€¬Ð‡li‰L§7žtÊQ"™> ïvÆohýô­ó endstream endobj -603 0 obj << +607 0 obj << /Type /FontDescriptor /FontName /JHJBYF+CMR10 /Flags 4 @@ -2659,9 +2800,9 @@ endobj /StemV 69 /XHeight 431 /CharSet (/bracketleft/bracketright/one/quotedblleft/three/zero) -/FontFile 602 0 R +/FontFile 606 0 R >> endobj -604 0 obj << +608 0 obj << /Length1 1449 /Length2 6401 /Length3 0 @@ -2697,7 +2838,7 @@ vh OÇ‚Ev­ÐPÁŽ]\Ãìæ—Uöº·ïϱ+„4éùÿƒ,Q endstream endobj -605 0 obj << +609 0 obj << /Type /FontDescriptor /FontName /ROGAYD+CMSY10 /Flags 4 @@ -2709,9 +2850,9 @@ endobj /StemV 40 /XHeight 431 /CharSet (/asteriskmath/bullet/lessequal) -/FontFile 604 0 R +/FontFile 608 0 R >> endobj -606 0 obj << +610 0 obj << /Length1 1394 /Length2 5926 /Length3 0 @@ -2750,7 +2891,7 @@ O ¥¸Ða›¼f2àmw¦f‰ +®U°ºãe 3%º;@> endobj -608 0 obj << +612 0 obj << /Length1 1612 /Length2 18542 /Length3 0 @@ -2854,7 +2995,7 @@ T -¿À5DE/–_ßØsˆ— ÕïN•ª®¼fÔn¾glj sÁö ¯ç*cñ­3¶&KÇ´éÄ îÂRðǦ-i¢ªpXøìµ¾œ¤dál‰®Ø ö¼ <ØÓÈêF¯¯Î4f®dŒí—‚¬ÕÔ®·VJ„À2á!¨".ö“wø*?ñáµÃ˜¯D£@Î56“è>I\ž!«?pÀ9Á*Ý~a‹‘[×:J endstream endobj -609 0 obj << +613 0 obj << /Type /FontDescriptor /FontName /MLARYO+NimbusMonL-Regu /Flags 4 @@ -2866,9 +3007,9 @@ endobj /StemV 41 /XHeight 426 /CharSet (/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/a/ampersand/asterisk/b/backslash/bar/braceleft/braceright/bracketleft/bracketright/c/circumflex/colon/comma/d/dollar/e/eight/equal/exclam/f/five/four/g/greater/h/hyphen/i/j/k/l/less/m/n/nine/numbersign/o/one/p/parenleft/parenright/period/q/quotedbl/r/s/semicolon/six/slash/t/three/two/u/underscore/v/w/x/y/z/zero) -/FontFile 608 0 R +/FontFile 612 0 R >> endobj -610 0 obj << +614 0 obj << /Length1 1626 /Length2 16047 /Length3 0 @@ -2940,7 +3081,7 @@ w> WS”“@È—%0§”C¿¦> endobj -612 0 obj << +616 0 obj << /Length1 1630 /Length2 17718 /Length3 0 @@ -3040,7 +3181,7 @@ Z< IœÐ:Je_ï~X÷°;ÔèøùV½sFB9bV…EL\Яn¢B– Ðb …¡“©g5 ×Z®¢VI•L e2w‘àÒ¢ÙÙ endstream endobj -613 0 obj << +617 0 obj << /Type /FontDescriptor /FontName /DJKLXJ+NimbusRomNo9L-Regu /Flags 4 @@ -3052,9 +3193,9 @@ endobj /StemV 85 /XHeight 450 /CharSet (/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/R/S/T/U/V/W/X/Y/Z/a/b/bracketleft/bracketright/c/colon/comma/d/e/eight/equal/f/fi/five/fl/four/g/h/hyphen/i/j/k/l/m/n/nine/o/one/p/parenleft/parenright/period/plus/q/quotedblleft/quotedblright/quoteright/r/s/semicolon/seven/six/slash/t/three/two/u/v/w/x/y/z/zero) -/FontFile 612 0 R +/FontFile 616 0 R >> endobj -614 0 obj << +618 0 obj << /Length1 1647 /Length2 5603 /Length3 0 @@ -3088,7 +3229,7 @@ xÚ­Tw8 |a{¿†íZmsi™`…ÌWªM÷Š^ò·Ô~Zê»ÕxÃòÇø,‹ü5{f6FÎö ì5³rÐ .U*Óoå_¡à$-Š@Öˆ¯õ/&eßöëè½{óRŸjŠûseþù½1P=Ä«lv_›SqÏ|*wàæMÕ²Âz£iWw£›,As‡ó™–Ÿ>mE\m±‹R7 qIt Äà^ïâ¦Ò>_Ù^èÝã-†pÓhÔ¿ô¨É_DZWxIÑn,rÑ–™ïÄ!ƒ,µTÞ¤¸”¹¿^'èR\[ËCN:p†³,2‰N«ÇÒ½ûd„× endstream endobj -615 0 obj << +619 0 obj << /Type /FontDescriptor /FontName /LAOMOF+NimbusRomNo9L-ReguItal /Flags 4 @@ -3100,130 +3241,130 @@ endobj /StemV 78 /XHeight 441 /CharSet (/d/e/i/m/o/one/period/q/r/u/v/zero) -/FontFile 614 0 R +/FontFile 618 0 R >> endobj -595 0 obj << +599 0 obj << /Type /Encoding /Differences [2/fi/fl 33/exclam/quotedbl/numbersign/dollar 38/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon/less/equal/greater/question 65/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright 95/underscore 97/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright 136/circumflex 147/quotedblleft/quotedblright 150/endash] >> endobj -499 0 obj << +504 0 obj << /Type /Font /Subtype /Type1 /BaseFont /PVCURR+CMMI10 -/FontDescriptor 601 0 R +/FontDescriptor 605 0 R /FirstChar 58 /LastChar 117 -/Widths 593 0 R +/Widths 597 0 R >> endobj -572 0 obj << +576 0 obj << /Type /Font /Subtype /Type1 /BaseFont /JHJBYF+CMR10 -/FontDescriptor 603 0 R +/FontDescriptor 607 0 R /FirstChar 48 /LastChar 93 -/Widths 592 0 R +/Widths 596 0 R >> endobj 432 0 obj << /Type /Font /Subtype /Type1 /BaseFont /ROGAYD+CMSY10 -/FontDescriptor 605 0 R +/FontDescriptor 609 0 R /FirstChar 3 /LastChar 20 -/Widths 594 0 R +/Widths 598 0 R >> endobj -584 0 obj << +588 0 obj << /Type /Font /Subtype /Type1 /BaseFont /NSJEOL+CMSY7 -/FontDescriptor 607 0 R +/FontDescriptor 611 0 R /FirstChar 48 /LastChar 48 -/Widths 591 0 R +/Widths 595 0 R >> endobj 355 0 obj << /Type /Font /Subtype /Type1 /BaseFont /MLARYO+NimbusMonL-Regu -/FontDescriptor 609 0 R +/FontDescriptor 613 0 R /FirstChar 33 /LastChar 136 -/Widths 596 0 R -/Encoding 595 0 R +/Widths 600 0 R +/Encoding 599 0 R >> endobj 352 0 obj << /Type /Font /Subtype /Type1 /BaseFont /DCFLXI+NimbusRomNo9L-Medi -/FontDescriptor 611 0 R +/FontDescriptor 615 0 R /FirstChar 2 /LastChar 150 -/Widths 598 0 R -/Encoding 595 0 R +/Widths 602 0 R +/Encoding 599 0 R >> endobj 351 0 obj << /Type /Font /Subtype /Type1 /BaseFont /DJKLXJ+NimbusRomNo9L-Regu -/FontDescriptor 613 0 R +/FontDescriptor 617 0 R /FirstChar 2 /LastChar 148 -/Widths 599 0 R -/Encoding 595 0 R +/Widths 603 0 R +/Encoding 599 0 R >> endobj 353 0 obj << /Type /Font /Subtype /Type1 /BaseFont /LAOMOF+NimbusRomNo9L-ReguItal -/FontDescriptor 615 0 R +/FontDescriptor 619 0 R /FirstChar 46 /LastChar 118 -/Widths 597 0 R -/Encoding 595 0 R +/Widths 601 0 R +/Encoding 599 0 R >> endobj 356 0 obj << /Type /Pages /Count 6 -/Parent 616 0 R +/Parent 620 0 R /Kids [326 0 R 397 0 R 424 0 R 429 0 R 435 0 R 439 0 R] >> endobj 453 0 obj << /Type /Pages /Count 6 -/Parent 616 0 R +/Parent 620 0 R /Kids [450 0 R 455 0 R 460 0 R 464 0 R 468 0 R 473 0 R] >> endobj 480 0 obj << /Type /Pages /Count 6 -/Parent 616 0 R -/Kids [477 0 R 482 0 R 487 0 R 491 0 R 496 0 R 502 0 R] +/Parent 620 0 R +/Kids [477 0 R 482 0 R 487 0 R 491 0 R 496 0 R 501 0 R] >> endobj -510 0 obj << +509 0 obj << /Type /Pages /Count 6 -/Parent 616 0 R -/Kids [507 0 R 512 0 R 517 0 R 525 0 R 529 0 R 535 0 R] +/Parent 620 0 R +/Kids [506 0 R 512 0 R 517 0 R 524 0 R 529 0 R 534 0 R] >> endobj 542 0 obj << /Type /Pages /Count 6 -/Parent 616 0 R +/Parent 620 0 R /Kids [539 0 R 544 0 R 548 0 R 552 0 R 556 0 R 560 0 R] >> endobj 567 0 obj << /Type /Pages -/Count 5 -/Parent 616 0 R -/Kids [564 0 R 569 0 R 574 0 R 581 0 R 588 0 R] +/Count 6 +/Parent 620 0 R +/Kids [564 0 R 569 0 R 573 0 R 578 0 R 585 0 R 592 0 R] >> endobj -616 0 obj << +620 0 obj << /Type /Pages -/Count 35 -/Kids [356 0 R 453 0 R 480 0 R 510 0 R 542 0 R 567 0 R] +/Count 36 +/Kids [356 0 R 453 0 R 480 0 R 509 0 R 542 0 R 567 0 R] >> endobj -617 0 obj << +621 0 obj << /Type /Outlines /First 3 0 R /Last 323 0 R @@ -3232,7 +3373,7 @@ endobj 323 0 obj << /Title 324 0 R /A 321 0 R -/Parent 617 0 R +/Parent 621 0 R /Prev 275 0 R >> endobj 319 0 obj << @@ -3314,7 +3455,7 @@ endobj 275 0 obj << /Title 276 0 R /A 273 0 R -/Parent 617 0 R +/Parent 621 0 R /Prev 259 0 R /Next 323 0 R /First 279 0 R @@ -3343,7 +3484,7 @@ endobj 259 0 obj << /Title 260 0 R /A 257 0 R -/Parent 617 0 R +/Parent 621 0 R /Prev 243 0 R /Next 275 0 R /First 263 0 R @@ -3372,7 +3513,7 @@ endobj 243 0 obj << /Title 244 0 R /A 241 0 R -/Parent 617 0 R +/Parent 621 0 R /Prev 231 0 R /Next 259 0 R /First 247 0 R @@ -3394,7 +3535,7 @@ endobj 231 0 obj << /Title 232 0 R /A 229 0 R -/Parent 617 0 R +/Parent 621 0 R /Prev 215 0 R /Next 243 0 R /First 235 0 R @@ -3423,7 +3564,7 @@ endobj 215 0 obj << /Title 216 0 R /A 213 0 R -/Parent 617 0 R +/Parent 621 0 R /Prev 167 0 R /Next 231 0 R /First 219 0 R @@ -3511,7 +3652,7 @@ endobj 167 0 obj << /Title 168 0 R /A 165 0 R -/Parent 617 0 R +/Parent 621 0 R /Prev 155 0 R /Next 215 0 R /First 171 0 R @@ -3533,7 +3674,7 @@ endobj 155 0 obj << /Title 156 0 R /A 153 0 R -/Parent 617 0 R +/Parent 621 0 R /Prev 143 0 R /Next 167 0 R /First 159 0 R @@ -3555,7 +3696,7 @@ endobj 143 0 obj << /Title 144 0 R /A 141 0 R -/Parent 617 0 R +/Parent 621 0 R /Prev 131 0 R /Next 155 0 R /First 147 0 R @@ -3577,7 +3718,7 @@ endobj 131 0 obj << /Title 132 0 R /A 129 0 R -/Parent 617 0 R +/Parent 621 0 R /Prev 115 0 R /Next 143 0 R /First 135 0 R @@ -3606,7 +3747,7 @@ endobj 115 0 obj << /Title 116 0 R /A 113 0 R -/Parent 617 0 R +/Parent 621 0 R /Prev 67 0 R /Next 131 0 R /First 119 0 R @@ -3693,7 +3834,7 @@ endobj 67 0 obj << /Title 68 0 R /A 65 0 R -/Parent 617 0 R +/Parent 621 0 R /Prev 59 0 R /Next 115 0 R /First 71 0 R @@ -3708,7 +3849,7 @@ endobj 59 0 obj << /Title 60 0 R /A 57 0 R -/Parent 617 0 R +/Parent 621 0 R /Prev 51 0 R /Next 67 0 R /First 63 0 R @@ -3723,7 +3864,7 @@ endobj 51 0 obj << /Title 52 0 R /A 49 0 R -/Parent 617 0 R +/Parent 621 0 R /Prev 39 0 R /Next 59 0 R /First 55 0 R @@ -3745,7 +3886,7 @@ endobj 39 0 obj << /Title 40 0 R /A 37 0 R -/Parent 617 0 R +/Parent 621 0 R /Prev 27 0 R /Next 51 0 R /First 43 0 R @@ -3767,7 +3908,7 @@ endobj 27 0 obj << /Title 28 0 R /A 25 0 R -/Parent 617 0 R +/Parent 621 0 R /Prev 11 0 R /Next 39 0 R /First 31 0 R @@ -3796,7 +3937,7 @@ endobj 11 0 obj << /Title 12 0 R /A 9 0 R -/Parent 617 0 R +/Parent 621 0 R /Prev 3 0 R /Next 27 0 R /First 15 0 R @@ -3811,456 +3952,785 @@ endobj 3 0 obj << /Title 4 0 R /A 1 0 R -/Parent 617 0 R +/Parent 621 0 R /Next 11 0 R /First 7 0 R /Last 7 0 R /Count -1 >> endobj -618 0 obj << +622 0 obj << /Names [(Doc-Start) 350 0 R (Hfootnote.1) 532 0 R (appendix.A) 274 0 R (appendix.B) 322 0 R (page.1) 349 0 R (page.10) 466 0 R] /Limits [(Doc-Start) (page.10)] >> endobj -619 0 obj << +623 0 obj << /Names [(page.11) 470 0 R (page.12) 475 0 R (page.13) 479 0 R (page.14) 484 0 R (page.15) 489 0 R (page.16) 493 0 R] /Limits [(page.11) (page.16)] >> endobj -620 0 obj << -/Names [(page.17) 498 0 R (page.18) 504 0 R (page.19) 509 0 R (page.2) 399 0 R (page.20) 514 0 R (page.21) 519 0 R] +624 0 obj << +/Names [(page.17) 498 0 R (page.18) 503 0 R (page.19) 508 0 R (page.2) 399 0 R (page.20) 514 0 R (page.21) 519 0 R] /Limits [(page.17) (page.21)] >> endobj -621 0 obj << -/Names [(page.22) 527 0 R (page.23) 531 0 R (page.24) 537 0 R (page.25) 541 0 R (page.26) 546 0 R (page.27) 550 0 R] +625 0 obj << +/Names [(page.22) 526 0 R (page.23) 531 0 R (page.24) 536 0 R (page.25) 541 0 R (page.26) 546 0 R (page.27) 550 0 R] /Limits [(page.22) (page.27)] >> endobj -622 0 obj << +626 0 obj << /Names [(page.28) 554 0 R (page.29) 558 0 R (page.3) 426 0 R (page.30) 562 0 R (page.31) 566 0 R (page.32) 571 0 R] /Limits [(page.28) (page.32)] >> endobj -623 0 obj << -/Names [(page.33) 576 0 R (page.34) 583 0 R (page.35) 590 0 R (page.4) 431 0 R (page.5) 437 0 R (page.6) 441 0 R] -/Limits [(page.33) (page.6)] ->> endobj -624 0 obj << -/Names [(page.7) 452 0 R (page.8) 457 0 R (page.9) 462 0 R (section*.1) 354 0 R (section*.2) 86 0 R (section*.3) 90 0 R] -/Limits [(page.7) (section*.3)] ->> endobj -625 0 obj << -/Names [(section*.4) 94 0 R (section*.5) 98 0 R (section*.6) 102 0 R (section*.7) 210 0 R (section.1) 2 0 R (section.10) 142 0 R] -/Limits [(section*.4) (section.10)] ->> endobj -626 0 obj << -/Names [(section.11) 154 0 R (section.12) 166 0 R (section.13) 214 0 R (section.14) 230 0 R (section.15) 242 0 R (section.16) 258 0 R] -/Limits [(section.11) (section.16)] ->> endobj 627 0 obj << -/Names [(section.2) 10 0 R (section.3) 26 0 R (section.4) 38 0 R (section.5) 50 0 R (section.6) 58 0 R (section.7) 66 0 R] -/Limits [(section.2) (section.7)] +/Names [(page.33) 575 0 R (page.34) 580 0 R (page.35) 587 0 R (page.36) 594 0 R (page.4) 431 0 R (page.5) 437 0 R] +/Limits [(page.33) (page.5)] >> endobj 628 0 obj << -/Names [(section.8) 114 0 R (section.9) 130 0 R (subsection.1.1) 6 0 R (subsection.10.1) 146 0 R (subsection.10.2) 150 0 R (subsection.11.1) 158 0 R] -/Limits [(section.8) (subsection.11.1)] +/Names [(page.6) 441 0 R (page.7) 452 0 R (page.8) 457 0 R (page.9) 462 0 R (section*.1) 354 0 R (section*.2) 86 0 R] +/Limits [(page.6) (section*.2)] >> endobj 629 0 obj << -/Names [(subsection.11.2) 162 0 R (subsection.12.1) 170 0 R (subsection.12.2) 174 0 R (subsection.12.3) 178 0 R (subsection.12.4) 190 0 R (subsection.12.5) 202 0 R] -/Limits [(subsection.11.2) (subsection.12.5)] +/Names [(section*.3) 90 0 R (section*.4) 94 0 R (section*.5) 98 0 R (section*.6) 102 0 R (section*.7) 210 0 R (section.1) 2 0 R] +/Limits [(section*.3) (section.1)] >> endobj 630 0 obj << -/Names [(subsection.12.6) 206 0 R (subsection.13.1) 218 0 R (subsection.13.2) 222 0 R (subsection.13.3) 226 0 R (subsection.14.1) 234 0 R (subsection.14.2) 238 0 R] -/Limits [(subsection.12.6) (subsection.14.2)] +/Names [(section.10) 142 0 R (section.11) 154 0 R (section.12) 166 0 R (section.13) 214 0 R (section.14) 230 0 R (section.15) 242 0 R] +/Limits [(section.10) (section.15)] >> endobj 631 0 obj << -/Names [(subsection.15.1) 246 0 R (subsection.15.2) 250 0 R (subsection.15.3) 254 0 R (subsection.16.1) 262 0 R (subsection.16.2) 266 0 R (subsection.16.3) 270 0 R] -/Limits [(subsection.15.1) (subsection.16.3)] +/Names [(section.16) 258 0 R (section.2) 10 0 R (section.3) 26 0 R (section.4) 38 0 R (section.5) 50 0 R (section.6) 58 0 R] +/Limits [(section.16) (section.6)] >> endobj 632 0 obj << -/Names [(subsection.2.1) 14 0 R (subsection.2.2) 18 0 R (subsection.2.3) 22 0 R (subsection.3.1) 30 0 R (subsection.3.2) 34 0 R (subsection.4.1) 42 0 R] -/Limits [(subsection.2.1) (subsection.4.1)] +/Names [(section.7) 66 0 R (section.8) 114 0 R (section.9) 130 0 R (subsection.1.1) 6 0 R (subsection.10.1) 146 0 R (subsection.10.2) 150 0 R] +/Limits [(section.7) (subsection.10.2)] >> endobj 633 0 obj << -/Names [(subsection.4.2) 46 0 R (subsection.5.1) 54 0 R (subsection.6.1) 62 0 R (subsection.7.1) 70 0 R (subsection.7.2) 74 0 R (subsection.7.3) 110 0 R] -/Limits [(subsection.4.2) (subsection.7.3)] +/Names [(subsection.11.1) 158 0 R (subsection.11.2) 162 0 R (subsection.12.1) 170 0 R (subsection.12.2) 174 0 R (subsection.12.3) 178 0 R (subsection.12.4) 190 0 R] +/Limits [(subsection.11.1) (subsection.12.4)] >> endobj 634 0 obj << -/Names [(subsection.8.1) 118 0 R (subsection.8.2) 122 0 R (subsection.8.3) 126 0 R (subsection.9.1) 134 0 R (subsection.9.2) 138 0 R (subsection.A.1) 278 0 R] -/Limits [(subsection.8.1) (subsection.A.1)] +/Names [(subsection.12.5) 202 0 R (subsection.12.6) 206 0 R (subsection.13.1) 218 0 R (subsection.13.2) 222 0 R (subsection.13.3) 226 0 R (subsection.14.1) 234 0 R] +/Limits [(subsection.12.5) (subsection.14.1)] >> endobj 635 0 obj << -/Names [(subsection.A.10) 318 0 R (subsection.A.2) 282 0 R (subsection.A.3) 290 0 R (subsection.A.4) 294 0 R (subsection.A.5) 298 0 R (subsection.A.6) 302 0 R] -/Limits [(subsection.A.10) (subsection.A.6)] +/Names [(subsection.14.2) 238 0 R (subsection.15.1) 246 0 R (subsection.15.2) 250 0 R (subsection.15.3) 254 0 R (subsection.16.1) 262 0 R (subsection.16.2) 266 0 R] +/Limits [(subsection.14.2) (subsection.16.2)] >> endobj 636 0 obj << -/Names [(subsection.A.7) 306 0 R (subsection.A.8) 310 0 R (subsection.A.9) 314 0 R (subsubsection.12.3.1) 182 0 R (subsubsection.12.3.2) 186 0 R (subsubsection.12.4.1) 194 0 R] -/Limits [(subsection.A.7) (subsubsection.12.4.1)] +/Names [(subsection.16.3) 270 0 R (subsection.2.1) 14 0 R (subsection.2.2) 18 0 R (subsection.2.3) 22 0 R (subsection.3.1) 30 0 R (subsection.3.2) 34 0 R] +/Limits [(subsection.16.3) (subsection.3.2)] >> endobj 637 0 obj << -/Names [(subsubsection.12.4.2) 198 0 R (subsubsection.7.2.1) 78 0 R (subsubsection.7.2.2) 82 0 R (subsubsection.7.2.3) 106 0 R (subsubsection.A.2.1) 286 0 R] -/Limits [(subsubsection.12.4.2) (subsubsection.A.2.1)] +/Names [(subsection.4.1) 42 0 R (subsection.4.2) 46 0 R (subsection.5.1) 54 0 R (subsection.6.1) 62 0 R (subsection.7.1) 70 0 R (subsection.7.2) 74 0 R] +/Limits [(subsection.4.1) (subsection.7.2)] >> endobj 638 0 obj << -/Kids [618 0 R 619 0 R 620 0 R 621 0 R 622 0 R 623 0 R] -/Limits [(Doc-Start) (page.6)] +/Names [(subsection.7.3) 110 0 R (subsection.8.1) 118 0 R (subsection.8.2) 122 0 R (subsection.8.3) 126 0 R (subsection.9.1) 134 0 R (subsection.9.2) 138 0 R] +/Limits [(subsection.7.3) (subsection.9.2)] >> endobj 639 0 obj << -/Kids [624 0 R 625 0 R 626 0 R 627 0 R 628 0 R 629 0 R] -/Limits [(page.7) (subsection.12.5)] +/Names [(subsection.A.1) 278 0 R (subsection.A.10) 318 0 R (subsection.A.2) 282 0 R (subsection.A.3) 290 0 R (subsection.A.4) 294 0 R (subsection.A.5) 298 0 R] +/Limits [(subsection.A.1) (subsection.A.5)] >> endobj 640 0 obj << -/Kids [630 0 R 631 0 R 632 0 R 633 0 R 634 0 R 635 0 R] -/Limits [(subsection.12.6) (subsection.A.6)] +/Names [(subsection.A.6) 302 0 R (subsection.A.7) 306 0 R (subsection.A.8) 310 0 R (subsection.A.9) 314 0 R (subsubsection.12.3.1) 182 0 R (subsubsection.12.3.2) 186 0 R] +/Limits [(subsection.A.6) (subsubsection.12.3.2)] >> endobj 641 0 obj << -/Kids [636 0 R 637 0 R] -/Limits [(subsection.A.7) (subsubsection.A.2.1)] +/Names [(subsubsection.12.4.1) 194 0 R (subsubsection.12.4.2) 198 0 R (subsubsection.7.2.1) 78 0 R (subsubsection.7.2.2) 82 0 R (subsubsection.7.2.3) 106 0 R (subsubsection.A.2.1) 286 0 R] +/Limits [(subsubsection.12.4.1) (subsubsection.A.2.1)] >> endobj 642 0 obj << -/Kids [638 0 R 639 0 R 640 0 R 641 0 R] -/Limits [(Doc-Start) (subsubsection.A.2.1)] +/Kids [622 0 R 623 0 R 624 0 R 625 0 R 626 0 R 627 0 R] +/Limits [(Doc-Start) (page.5)] >> endobj 643 0 obj << -/Dests 642 0 R +/Kids [628 0 R 629 0 R 630 0 R 631 0 R 632 0 R 633 0 R] +/Limits [(page.6) (subsection.12.4)] >> endobj 644 0 obj << +/Kids [634 0 R 635 0 R 636 0 R 637 0 R 638 0 R 639 0 R] +/Limits [(subsection.12.5) (subsection.A.5)] +>> endobj +645 0 obj << +/Kids [640 0 R 641 0 R] +/Limits [(subsection.A.6) (subsubsection.A.2.1)] +>> endobj +646 0 obj << +/Kids [642 0 R 643 0 R 644 0 R 645 0 R] +/Limits [(Doc-Start) (subsubsection.A.2.1)] +>> endobj +647 0 obj << +/Dests 646 0 R +>> endobj +648 0 obj << /Type /Catalog -/Pages 616 0 R -/Outlines 617 0 R -/Names 643 0 R +/Pages 620 0 R +/Outlines 621 0 R +/Names 647 0 R /PageMode/UseOutlines /OpenAction 325 0 R >> endobj -645 0 obj << +649 0 obj << /Author()/Title(The Khronos Vulkan API Registry)/Subject()/Creator(LaTeX with hyperref package)/Producer(pdfTeX-1.40.13)/Keywords() -/CreationDate (D:20160322164457Z) -/ModDate (D:20160322164457Z) +<<<<<<< HEAD +/CreationDate (D:20160421144350+01'00') +/ModDate (D:20160421144350+01'00') +======= +/CreationDate (D:20160421121335+01'00') +/ModDate (D:20160421121335+01'00') +>>>>>>> 1.0 /Trapped /False /PTEX.Fullbanner (This is MiKTeX-pdfTeX 2.9.4535 (1.40.13)) >> endobj xref -0 646 +0 650 0000000000 65535 f 0000000015 00000 n -0000027701 00000 n -0000218236 00000 n +0000027696 00000 n +<<<<<<< HEAD +0000219341 00000 n 0000000060 00000 n 0000000092 00000 n -0000027761 00000 n -0000218179 00000 n +0000027756 00000 n +0000219284 00000 n 0000000142 00000 n 0000000178 00000 n -0000030553 00000 n -0000218056 00000 n +0000030548 00000 n +0000219161 00000 n 0000000223 00000 n 0000000259 00000 n -0000033853 00000 n -0000217982 00000 n +0000033848 00000 n +0000219087 00000 n 0000000310 00000 n 0000000368 00000 n -0000036163 00000 n -0000217895 00000 n +0000036158 00000 n +0000219000 00000 n 0000000419 00000 n 0000000477 00000 n -0000036224 00000 n -0000217821 00000 n +0000036219 00000 n +0000218926 00000 n 0000000528 00000 n 0000000589 00000 n -0000036285 00000 n -0000217696 00000 n +0000036280 00000 n +0000218801 00000 n 0000000635 00000 n 0000000678 00000 n -0000036346 00000 n -0000217622 00000 n +0000036341 00000 n +0000218727 00000 n 0000000729 00000 n 0000000760 00000 n -0000036407 00000 n -0000217548 00000 n +0000036402 00000 n +0000218653 00000 n 0000000811 00000 n 0000000843 00000 n -0000036468 00000 n -0000217423 00000 n +0000036463 00000 n +0000218528 00000 n 0000000889 00000 n 0000000942 00000 n -0000036529 00000 n -0000217349 00000 n +0000036524 00000 n +0000218454 00000 n 0000000993 00000 n 0000001045 00000 n -0000040001 00000 n -0000217275 00000 n +0000039996 00000 n +0000218380 00000 n 0000001096 00000 n 0000001146 00000 n -0000040062 00000 n -0000217150 00000 n +0000040057 00000 n +0000218255 00000 n 0000001192 00000 n 0000001243 00000 n -0000040122 00000 n -0000217089 00000 n +0000040117 00000 n +0000218194 00000 n 0000001294 00000 n 0000001346 00000 n -0000040183 00000 n -0000216964 00000 n +0000040178 00000 n +0000218069 00000 n 0000001392 00000 n 0000001443 00000 n -0000042757 00000 n -0000216903 00000 n +0000042752 00000 n +0000218008 00000 n 0000001494 00000 n 0000001541 00000 n -0000042818 00000 n -0000216776 00000 n +0000042813 00000 n +0000217881 00000 n 0000001587 00000 n 0000001633 00000 n -0000042879 00000 n -0000216702 00000 n +0000042874 00000 n +0000217807 00000 n 0000001684 00000 n 0000001732 00000 n -0000045668 00000 n -0000216576 00000 n +0000045650 00000 n +0000217681 00000 n 0000001783 00000 n 0000001829 00000 n -0000045729 00000 n -0000216502 00000 n +0000045711 00000 n +0000217607 00000 n 0000001885 00000 n 0000001944 00000 n -0000045790 00000 n -0000216376 00000 n +0000045772 00000 n +0000217481 00000 n 0000002000 00000 n 0000002071 00000 n -0000045851 00000 n -0000216302 00000 n +0000045833 00000 n +0000217407 00000 n 0000002118 00000 n 0000002171 00000 n -0000045912 00000 n -0000216215 00000 n +0000045894 00000 n +0000217320 00000 n 0000002218 00000 n 0000002264 00000 n -0000045973 00000 n -0000216128 00000 n +0000048501 00000 n +0000217233 00000 n 0000002311 00000 n 0000002355 00000 n -0000048549 00000 n -0000216039 00000 n +0000048562 00000 n +0000217144 00000 n 0000002402 00000 n 0000002452 00000 n -0000048609 00000 n -0000215962 00000 n +0000048623 00000 n +0000217067 00000 n 0000002500 00000 n 0000002547 00000 n -0000048671 00000 n -0000215885 00000 n +0000048685 00000 n +0000216990 00000 n 0000002604 00000 n 0000002645 00000 n -0000050366 00000 n -0000215808 00000 n +0000050285 00000 n +0000216913 00000 n 0000002697 00000 n 0000002745 00000 n -0000052939 00000 n -0000215677 00000 n +0000053042 00000 n +0000216782 00000 n 0000002792 00000 n 0000002846 00000 n -0000053001 00000 n -0000215598 00000 n +0000053104 00000 n +0000216703 00000 n 0000002898 00000 n 0000002948 00000 n -0000053063 00000 n -0000215505 00000 n +0000053166 00000 n +0000216610 00000 n 0000003000 00000 n 0000003048 00000 n -0000053125 00000 n -0000215426 00000 n +0000053228 00000 n +0000216531 00000 n 0000003100 00000 n 0000003147 00000 n -0000055762 00000 n -0000215294 00000 n +0000055791 00000 n +0000216399 00000 n 0000003194 00000 n 0000003241 00000 n -0000055824 00000 n -0000215215 00000 n +0000055853 00000 n +0000216320 00000 n 0000003293 00000 n 0000003342 00000 n -0000055886 00000 n -0000215136 00000 n +0000055915 00000 n +0000216241 00000 n 0000003394 00000 n 0000003441 00000 n -0000055948 00000 n -0000215004 00000 n +0000055976 00000 n +0000216109 00000 n 0000003489 00000 n 0000003546 00000 n -0000056010 00000 n -0000214925 00000 n +0000056038 00000 n +0000216030 00000 n 0000003599 00000 n 0000003651 00000 n -0000058031 00000 n -0000214846 00000 n +0000058026 00000 n +0000215951 00000 n 0000003704 00000 n 0000003754 00000 n -0000058093 00000 n -0000214714 00000 n +0000058088 00000 n +0000215819 00000 n 0000003802 00000 n 0000003858 00000 n -0000058155 00000 n -0000214635 00000 n +0000058150 00000 n +0000215740 00000 n 0000003911 00000 n 0000003965 00000 n -0000058217 00000 n -0000214556 00000 n +0000058212 00000 n +0000215661 00000 n 0000004018 00000 n 0000004070 00000 n -0000058279 00000 n -0000214424 00000 n +0000058274 00000 n +0000215529 00000 n 0000004118 00000 n 0000004167 00000 n -0000058341 00000 n -0000214345 00000 n +0000058336 00000 n +0000215450 00000 n 0000004220 00000 n 0000004273 00000 n -0000060747 00000 n -0000214252 00000 n +0000060815 00000 n +0000215357 00000 n 0000004326 00000 n 0000004377 00000 n -0000060809 00000 n -0000214120 00000 n +0000060877 00000 n +0000215225 00000 n 0000004430 00000 n 0000004489 00000 n -0000060871 00000 n -0000214041 00000 n +0000060938 00000 n +0000215146 00000 n 0000004547 00000 n 0000004600 00000 n -0000060933 00000 n -0000213962 00000 n +0000063538 00000 n +0000215067 00000 n 0000004658 00000 n 0000004709 00000 n -0000063422 00000 n -0000213830 00000 n +0000063600 00000 n +0000214935 00000 n 0000004762 00000 n 0000004821 00000 n -0000063484 00000 n -0000213751 00000 n +0000063662 00000 n +0000214856 00000 n 0000004879 00000 n 0000004932 00000 n -0000063546 00000 n -0000213672 00000 n +0000063724 00000 n +0000214777 00000 n 0000004990 00000 n 0000005041 00000 n 0000065972 00000 n -0000213579 00000 n +0000214684 00000 n 0000005094 00000 n 0000005146 00000 n 0000066034 00000 n -0000213461 00000 n +0000214566 00000 n 0000005199 00000 n 0000005264 00000 n 0000066096 00000 n -0000213396 00000 n +0000214501 00000 n 0000005312 00000 n 0000005359 00000 n 0000066158 00000 n -0000213264 00000 n +0000214369 00000 n 0000005407 00000 n 0000005471 00000 n 0000066220 00000 n -0000213185 00000 n +0000214290 00000 n 0000005524 00000 n 0000005577 00000 n -0000068184 00000 n -0000213092 00000 n +0000068326 00000 n +0000214197 00000 n 0000005630 00000 n 0000005681 00000 n -0000068246 00000 n -0000213013 00000 n +0000068388 00000 n +0000214118 00000 n 0000005734 00000 n 0000005785 00000 n -0000068308 00000 n -0000212881 00000 n +0000070803 00000 n +0000213986 00000 n 0000005833 00000 n 0000005893 00000 n -0000068370 00000 n -0000212802 00000 n +0000070865 00000 n +0000213907 00000 n 0000005946 00000 n 0000006002 00000 n -0000071348 00000 n -0000212723 00000 n +0000070927 00000 n +0000213828 00000 n 0000006055 00000 n 0000006109 00000 n -0000071410 00000 n -0000212591 00000 n +0000070989 00000 n +0000213696 00000 n 0000006157 00000 n 0000006214 00000 n -0000071472 00000 n -0000212512 00000 n +0000071050 00000 n +0000213617 00000 n 0000006267 00000 n 0000006322 00000 n -0000071534 00000 n -0000212419 00000 n +0000073366 00000 n +0000213524 00000 n 0000006375 00000 n 0000006428 00000 n -0000073222 00000 n -0000212340 00000 n +0000073428 00000 n +0000213445 00000 n 0000006481 00000 n 0000006536 00000 n -0000075816 00000 n -0000212208 00000 n +0000075945 00000 n +0000213313 00000 n 0000006584 00000 n 0000006670 00000 n -0000075878 00000 n -0000212129 00000 n +0000076007 00000 n +0000213234 00000 n 0000006723 00000 n 0000006789 00000 n -0000075940 00000 n -0000212036 00000 n +0000076069 00000 n +0000213141 00000 n 0000006842 00000 n 0000006906 00000 n -0000080901 00000 n -0000211957 00000 n +0000081493 00000 n +0000213062 00000 n 0000006959 00000 n 0000007016 00000 n -0000083862 00000 n -0000211824 00000 n +0000084958 00000 n +0000212929 00000 n 0000007064 00000 n 0000007112 00000 n -0000083924 00000 n -0000211745 00000 n +0000085020 00000 n +0000212850 00000 n 0000007164 00000 n 0000007204 00000 n -0000083986 00000 n -0000211613 00000 n +0000085082 00000 n +0000212718 00000 n 0000007256 00000 n 0000007304 00000 n -0000086338 00000 n -0000211548 00000 n +0000087434 00000 n +0000212653 00000 n 0000007361 00000 n 0000007410 00000 n -0000092753 00000 n -0000211455 00000 n +0000093849 00000 n +0000212560 00000 n 0000007462 00000 n 0000007520 00000 n -0000094650 00000 n -0000211362 00000 n +0000095746 00000 n +0000212467 00000 n 0000007572 00000 n 0000007629 00000 n -0000096979 00000 n -0000211269 00000 n +0000098075 00000 n +0000212374 00000 n 0000007681 00000 n 0000007734 00000 n -0000099311 00000 n -0000211176 00000 n +0000100407 00000 n +0000212281 00000 n 0000007786 00000 n 0000007830 00000 n -0000101800 00000 n -0000211083 00000 n +0000102896 00000 n +0000212188 00000 n 0000007882 00000 n 0000007942 00000 n -0000101862 00000 n -0000210990 00000 n +0000102958 00000 n +0000212095 00000 n 0000007994 00000 n 0000008069 00000 n -0000101924 00000 n -0000210897 00000 n +0000103020 00000 n +0000212002 00000 n 0000008121 00000 n 0000008172 00000 n -0000104733 00000 n -0000210818 00000 n +0000105829 00000 n +0000211923 00000 n 0000008225 00000 n 0000008290 00000 n -0000104795 00000 n -0000210739 00000 n +0000105891 00000 n +0000211844 00000 n +======= +0000219696 00000 n +0000000060 00000 n +0000000092 00000 n +0000027756 00000 n +0000219639 00000 n +0000000142 00000 n +0000000178 00000 n +0000030548 00000 n +0000219516 00000 n +0000000223 00000 n +0000000259 00000 n +0000033848 00000 n +0000219442 00000 n +0000000310 00000 n +0000000368 00000 n +0000036158 00000 n +0000219355 00000 n +0000000419 00000 n +0000000477 00000 n +0000036219 00000 n +0000219281 00000 n +0000000528 00000 n +0000000589 00000 n +0000036280 00000 n +0000219156 00000 n +0000000635 00000 n +0000000678 00000 n +0000036341 00000 n +0000219082 00000 n +0000000729 00000 n +0000000760 00000 n +0000036402 00000 n +0000219008 00000 n +0000000811 00000 n +0000000843 00000 n +0000036463 00000 n +0000218883 00000 n +0000000889 00000 n +0000000942 00000 n +0000036524 00000 n +0000218809 00000 n +0000000993 00000 n +0000001045 00000 n +0000039996 00000 n +0000218735 00000 n +0000001096 00000 n +0000001146 00000 n +0000040057 00000 n +0000218610 00000 n +0000001192 00000 n +0000001243 00000 n +0000040117 00000 n +0000218549 00000 n +0000001294 00000 n +0000001346 00000 n +0000040178 00000 n +0000218424 00000 n +0000001392 00000 n +0000001443 00000 n +0000042752 00000 n +0000218363 00000 n +0000001494 00000 n +0000001541 00000 n +0000042813 00000 n +0000218236 00000 n +0000001587 00000 n +0000001633 00000 n +0000042874 00000 n +0000218162 00000 n +0000001684 00000 n +0000001732 00000 n +0000045695 00000 n +0000218036 00000 n +0000001783 00000 n +0000001829 00000 n +0000045756 00000 n +0000217962 00000 n +0000001885 00000 n +0000001944 00000 n +0000045817 00000 n +0000217836 00000 n +0000002000 00000 n +0000002071 00000 n +0000045878 00000 n +0000217762 00000 n +0000002118 00000 n +0000002171 00000 n +0000045939 00000 n +0000217675 00000 n +0000002218 00000 n +0000002264 00000 n +0000048546 00000 n +0000217588 00000 n +0000002311 00000 n +0000002355 00000 n +0000048607 00000 n +0000217499 00000 n +0000002402 00000 n +0000002452 00000 n +0000048668 00000 n +0000217422 00000 n +0000002500 00000 n +0000002547 00000 n +0000048730 00000 n +0000217345 00000 n +0000002604 00000 n +0000002645 00000 n +0000050330 00000 n +0000217268 00000 n +0000002697 00000 n +0000002745 00000 n +0000053087 00000 n +0000217137 00000 n +0000002792 00000 n +0000002846 00000 n +0000053149 00000 n +0000217058 00000 n +0000002898 00000 n +0000002948 00000 n +0000053211 00000 n +0000216965 00000 n +0000003000 00000 n +0000003048 00000 n +0000053273 00000 n +0000216886 00000 n +0000003100 00000 n +0000003147 00000 n +0000055836 00000 n +0000216754 00000 n +0000003194 00000 n +0000003241 00000 n +0000055898 00000 n +0000216675 00000 n +0000003293 00000 n +0000003342 00000 n +0000055960 00000 n +0000216596 00000 n +0000003394 00000 n +0000003441 00000 n +0000056021 00000 n +0000216464 00000 n +0000003489 00000 n +0000003546 00000 n +0000056083 00000 n +0000216385 00000 n +0000003599 00000 n +0000003651 00000 n +0000058071 00000 n +0000216306 00000 n +0000003704 00000 n +0000003754 00000 n +0000058133 00000 n +0000216174 00000 n +0000003802 00000 n +0000003858 00000 n +0000058195 00000 n +0000216095 00000 n +0000003911 00000 n +0000003965 00000 n +0000058257 00000 n +0000216016 00000 n +0000004018 00000 n +0000004070 00000 n +0000058319 00000 n +0000215884 00000 n +0000004118 00000 n +0000004167 00000 n +0000058381 00000 n +0000215805 00000 n +0000004220 00000 n +0000004273 00000 n +0000060860 00000 n +0000215712 00000 n +0000004326 00000 n +0000004377 00000 n +0000060922 00000 n +0000215580 00000 n +0000004430 00000 n +0000004489 00000 n +0000060983 00000 n +0000215501 00000 n +0000004547 00000 n +0000004600 00000 n +0000063701 00000 n +0000215422 00000 n +0000004658 00000 n +0000004709 00000 n +0000063763 00000 n +0000215290 00000 n +0000004762 00000 n +0000004821 00000 n +0000063825 00000 n +0000215211 00000 n +0000004879 00000 n +0000004932 00000 n +0000063887 00000 n +0000215132 00000 n +0000004990 00000 n +0000005041 00000 n +0000066170 00000 n +0000215039 00000 n +0000005094 00000 n +0000005146 00000 n +0000066232 00000 n +0000214921 00000 n +0000005199 00000 n +0000005264 00000 n +0000066293 00000 n +0000214856 00000 n +0000005312 00000 n +0000005359 00000 n +0000066355 00000 n +0000214724 00000 n +0000005407 00000 n +0000005471 00000 n +0000066417 00000 n +0000214645 00000 n +0000005524 00000 n +0000005577 00000 n +0000068682 00000 n +0000214552 00000 n +0000005630 00000 n +0000005681 00000 n +0000068744 00000 n +0000214473 00000 n +0000005734 00000 n +0000005785 00000 n +0000071158 00000 n +0000214341 00000 n +0000005833 00000 n +0000005893 00000 n +0000071220 00000 n +0000214262 00000 n +0000005946 00000 n +0000006002 00000 n +0000071282 00000 n +0000214183 00000 n +0000006055 00000 n +0000006109 00000 n +0000071344 00000 n +0000214051 00000 n +0000006157 00000 n +0000006214 00000 n +0000071405 00000 n +0000213972 00000 n +0000006267 00000 n +0000006322 00000 n +0000073721 00000 n +0000213879 00000 n +0000006375 00000 n +0000006428 00000 n +0000073783 00000 n +0000213800 00000 n +0000006481 00000 n +0000006536 00000 n +0000076300 00000 n +0000213668 00000 n +0000006584 00000 n +0000006670 00000 n +0000076362 00000 n +0000213589 00000 n +0000006723 00000 n +0000006789 00000 n +0000076424 00000 n +0000213496 00000 n +0000006842 00000 n +0000006906 00000 n +0000081848 00000 n +0000213417 00000 n +0000006959 00000 n +0000007016 00000 n +0000085313 00000 n +0000213284 00000 n +0000007064 00000 n +0000007112 00000 n +0000085375 00000 n +0000213205 00000 n +0000007164 00000 n +0000007204 00000 n +0000085437 00000 n +0000213073 00000 n +0000007256 00000 n +0000007304 00000 n +0000087789 00000 n +0000213008 00000 n +0000007361 00000 n +0000007410 00000 n +0000094204 00000 n +0000212915 00000 n +0000007462 00000 n +0000007520 00000 n +0000096101 00000 n +0000212822 00000 n +0000007572 00000 n +0000007629 00000 n +0000098430 00000 n +0000212729 00000 n +0000007681 00000 n +0000007734 00000 n +0000100762 00000 n +0000212636 00000 n +0000007786 00000 n +0000007830 00000 n +0000103251 00000 n +0000212543 00000 n +0000007882 00000 n +0000007942 00000 n +0000103313 00000 n +0000212450 00000 n +0000007994 00000 n +0000008069 00000 n +0000103375 00000 n +0000212357 00000 n +0000008121 00000 n +0000008172 00000 n +0000106184 00000 n +0000212278 00000 n +0000008225 00000 n +0000008290 00000 n +0000106246 00000 n +0000212199 00000 n +>>>>>>> 1.0 0000008338 00000 n 0000008370 00000 n 0000009915 00000 n @@ -4281,313 +4751,535 @@ xref 0000012377 00000 n 0000012534 00000 n 0000012686 00000 n -0000015060 00000 n -0000015210 00000 n -0000015367 00000 n +0000015059 00000 n +0000015209 00000 n +0000015366 00000 n 0000013028 00000 n 0000008420 00000 n 0000012843 00000 n 0000012904 00000 n -0000209516 00000 n -0000209343 00000 n -0000209689 00000 n +<<<<<<< HEAD +0000210613 00000 n +0000210440 00000 n +0000210786 00000 n 0000012966 00000 n -0000209172 00000 n -0000209867 00000 n -0000015523 00000 n -0000015685 00000 n -0000015847 00000 n -0000015999 00000 n -0000016152 00000 n -0000016304 00000 n -0000016457 00000 n -0000016609 00000 n -0000016771 00000 n -0000016928 00000 n -0000017080 00000 n -0000017237 00000 n -0000017394 00000 n -0000017551 00000 n -0000017703 00000 n -0000017860 00000 n -0000018017 00000 n -0000018169 00000 n -0000018327 00000 n -0000018484 00000 n -0000018637 00000 n -0000018794 00000 n -0000018952 00000 n -0000019105 00000 n -0000019263 00000 n -0000019421 00000 n -0000019579 00000 n -0000019742 00000 n -0000019905 00000 n -0000020063 00000 n -0000020226 00000 n -0000020389 00000 n -0000020547 00000 n -0000020704 00000 n -0000020857 00000 n -0000021010 00000 n -0000021168 00000 n -0000021326 00000 n -0000023886 00000 n -0000021545 00000 n -0000014608 00000 n +0000210269 00000 n +0000210964 00000 n +======= +0000210968 00000 n +0000210795 00000 n +0000211141 00000 n +0000012966 00000 n +0000210624 00000 n +0000211319 00000 n +>>>>>>> 1.0 +0000015522 00000 n +0000015684 00000 n +0000015846 00000 n +0000015998 00000 n +0000016151 00000 n +0000016303 00000 n +0000016456 00000 n +0000016608 00000 n +0000016770 00000 n +0000016927 00000 n +0000017079 00000 n +0000017236 00000 n +0000017393 00000 n +0000017550 00000 n +0000017702 00000 n +0000017859 00000 n +0000018016 00000 n +0000018168 00000 n +0000018326 00000 n +0000018483 00000 n +0000018636 00000 n +0000018793 00000 n +0000018951 00000 n +0000019104 00000 n +0000019262 00000 n +0000019420 00000 n +0000019578 00000 n +0000019741 00000 n +0000019904 00000 n +0000020062 00000 n +0000020225 00000 n +0000020388 00000 n +0000020546 00000 n +0000020703 00000 n +0000020856 00000 n +0000021009 00000 n +0000021167 00000 n +0000021325 00000 n +0000023883 00000 n +0000021544 00000 n +0000014607 00000 n 0000013139 00000 n -0000021484 00000 n -0000024037 00000 n -0000024195 00000 n -0000024352 00000 n -0000024505 00000 n -0000024663 00000 n -0000024821 00000 n -0000024979 00000 n -0000025132 00000 n -0000025290 00000 n -0000025448 00000 n -0000025606 00000 n -0000025759 00000 n -0000025916 00000 n -0000026073 00000 n -0000026235 00000 n -0000026392 00000 n -0000026549 00000 n -0000026704 00000 n -0000026861 00000 n -0000027017 00000 n -0000027174 00000 n -0000027330 00000 n -0000027488 00000 n -0000027821 00000 n -0000023570 00000 n -0000021643 00000 n -0000027640 00000 n -0000030295 00000 n -0000030614 00000 n -0000030163 00000 n -0000027919 00000 n -0000030492 00000 n -0000208888 00000 n -0000033639 00000 n -0000033914 00000 n -0000033507 00000 n -0000030725 00000 n -0000033792 00000 n -0000036590 00000 n -0000035990 00000 n -0000034025 00000 n -0000036102 00000 n -0000038877 00000 n -0000039029 00000 n -0000039181 00000 n -0000039333 00000 n -0000039485 00000 n -0000039637 00000 n -0000039788 00000 n -0000040244 00000 n -0000038697 00000 n -0000036688 00000 n -0000039940 00000 n -0000209984 00000 n -0000042940 00000 n -0000042584 00000 n -0000040355 00000 n -0000042696 00000 n -0000045456 00000 n -0000046034 00000 n -0000045324 00000 n -0000043051 00000 n -0000045607 00000 n -0000048733 00000 n -0000048376 00000 n -0000046145 00000 n -0000048488 00000 n -0000050428 00000 n -0000050193 00000 n -0000048844 00000 n -0000050305 00000 n -0000052721 00000 n -0000053187 00000 n -0000052589 00000 n -0000050539 00000 n -0000052878 00000 n -0000056072 00000 n -0000055589 00000 n -0000053298 00000 n -0000055701 00000 n -0000210101 00000 n -0000058403 00000 n -0000057858 00000 n -0000056183 00000 n -0000057970 00000 n -0000060524 00000 n -0000060994 00000 n -0000060392 00000 n -0000058514 00000 n -0000060686 00000 n -0000063608 00000 n -0000063249 00000 n -0000061105 00000 n -0000063361 00000 n +0000021483 00000 n +0000024034 00000 n +0000024192 00000 n +0000024349 00000 n +0000024502 00000 n +0000024660 00000 n +0000024818 00000 n +0000024976 00000 n +0000025129 00000 n +0000025287 00000 n +0000025445 00000 n +0000025603 00000 n +0000025755 00000 n +0000025911 00000 n +0000026068 00000 n +0000026230 00000 n +0000026387 00000 n +0000026544 00000 n +0000026699 00000 n +0000026856 00000 n +0000027012 00000 n +0000027169 00000 n +0000027325 00000 n +0000027483 00000 n +0000027816 00000 n +0000023567 00000 n +0000021642 00000 n +0000027635 00000 n +0000030290 00000 n +0000030609 00000 n +0000030158 00000 n +0000027914 00000 n +0000030487 00000 n +<<<<<<< HEAD +0000209985 00000 n +======= +0000210340 00000 n +>>>>>>> 1.0 +0000033634 00000 n +0000033909 00000 n +0000033502 00000 n +0000030720 00000 n +0000033787 00000 n +0000036585 00000 n +0000035985 00000 n +0000034020 00000 n +0000036097 00000 n +0000038872 00000 n +0000039024 00000 n +0000039176 00000 n +0000039328 00000 n +0000039480 00000 n +0000039632 00000 n +0000039783 00000 n +0000040239 00000 n +0000038692 00000 n +0000036683 00000 n +0000039935 00000 n +<<<<<<< HEAD +0000211081 00000 n +======= +0000211436 00000 n +>>>>>>> 1.0 +0000042935 00000 n +0000042579 00000 n +0000040350 00000 n +0000042691 00000 n +<<<<<<< HEAD +0000045438 00000 n +0000045955 00000 n +0000045306 00000 n +0000043046 00000 n +0000045589 00000 n +0000048747 00000 n +0000048328 00000 n +0000046066 00000 n +0000048440 00000 n +0000050347 00000 n +0000050112 00000 n +0000048858 00000 n +0000050224 00000 n +0000052824 00000 n +0000053290 00000 n +0000052692 00000 n +0000050458 00000 n +0000052981 00000 n +0000056100 00000 n +0000055618 00000 n +0000053401 00000 n +0000055730 00000 n +0000211198 00000 n +0000058398 00000 n +0000057853 00000 n +0000056211 00000 n +0000057965 00000 n +0000060592 00000 n +0000061000 00000 n +0000060460 00000 n +0000058509 00000 n +0000060754 00000 n +0000063786 00000 n +0000063365 00000 n +0000061111 00000 n +0000063477 00000 n 0000065755 00000 n 0000066282 00000 n 0000065623 00000 n -0000063719 00000 n +0000063897 00000 n 0000065911 00000 n -0000208602 00000 n -0000067970 00000 n -0000068432 00000 n -0000067838 00000 n -0000066406 00000 n -0000068123 00000 n -0000071135 00000 n -0000071596 00000 n -0000071003 00000 n -0000068543 00000 n -0000071287 00000 n -0000210218 00000 n -0000073284 00000 n -0000073049 00000 n -0000071707 00000 n -0000073161 00000 n -0000075598 00000 n -0000076002 00000 n -0000075466 00000 n -0000073382 00000 n -0000075755 00000 n -0000078738 00000 n -0000078890 00000 n -0000079042 00000 n -0000080686 00000 n -0000079261 00000 n -0000078590 00000 n -0000076126 00000 n -0000079200 00000 n -0000081025 00000 n -0000080554 00000 n -0000079372 00000 n -0000080840 00000 n -0000080963 00000 n -0000083650 00000 n -0000084048 00000 n -0000083518 00000 n -0000081123 00000 n -0000083801 00000 n -0000086400 00000 n -0000086165 00000 n -0000084159 00000 n -0000086277 00000 n -0000210335 00000 n -0000088399 00000 n -0000088226 00000 n -0000086498 00000 n -0000088338 00000 n -0000090006 00000 n -0000089833 00000 n -0000088484 00000 n -0000089945 00000 n -0000091147 00000 n -0000090974 00000 n -0000090091 00000 n -0000091086 00000 n -0000092815 00000 n -0000092580 00000 n -0000091232 00000 n -0000092692 00000 n -0000094712 00000 n -0000094477 00000 n -0000092913 00000 n -0000094589 00000 n -0000097041 00000 n -0000096806 00000 n -0000094810 00000 n -0000096918 00000 n -0000210452 00000 n -0000099373 00000 n -0000099138 00000 n -0000097139 00000 n -0000099250 00000 n -0000208746 00000 n -0000101986 00000 n -0000101627 00000 n -0000099496 00000 n -0000101739 00000 n -0000104519 00000 n -0000106180 00000 n -0000106333 00000 n -0000104857 00000 n -0000104387 00000 n -0000102097 00000 n -0000104672 00000 n -0000209030 00000 n -0000106491 00000 n -0000106642 00000 n -0000106855 00000 n -0000106024 00000 n -0000105006 00000 n -0000106794 00000 n -0000106953 00000 n -0000106978 00000 n -0000107236 00000 n -0000107601 00000 n -0000208083 00000 n -0000107719 00000 n -0000108148 00000 n -0000108459 00000 n -0000109033 00000 n -0000109596 00000 n -0000119195 00000 n -0000119452 00000 n -0000129217 00000 n -0000129487 00000 n -0000136993 00000 n -0000137243 00000 n -0000144238 00000 n -0000144463 00000 n -0000163964 00000 n -0000164555 00000 n -0000181572 00000 n -0000182045 00000 n -0000200729 00000 n -0000201255 00000 n -0000207812 00000 n -0000210561 00000 n -0000210663 00000 n -0000218343 00000 n -0000218526 00000 n -0000218696 00000 n -0000218865 00000 n -0000219035 00000 n -0000219204 00000 n -0000219370 00000 n -0000219546 00000 n -0000219735 00000 n -0000219929 00000 n -0000220109 00000 n -0000220322 00000 n -0000220556 00000 n -0000220790 00000 n -0000221024 00000 n -0000221244 00000 n -0000221465 00000 n -0000221691 00000 n -0000221919 00000 n -0000222169 00000 n -0000222405 00000 n -0000222515 00000 n -0000222631 00000 n -0000222755 00000 n -0000222851 00000 n -0000222958 00000 n -0000222996 00000 n -0000223124 00000 n +0000068112 00000 n +0000068450 00000 n +0000067980 00000 n +0000066393 00000 n +0000068265 00000 n +0000209699 00000 n +0000071112 00000 n +0000070630 00000 n +0000068574 00000 n +0000070742 00000 n +0000211315 00000 n +0000073152 00000 n +0000073490 00000 n +0000073020 00000 n +0000071223 00000 n +0000073305 00000 n +0000075727 00000 n +0000076131 00000 n +0000075595 00000 n +0000073601 00000 n +0000075884 00000 n +0000078840 00000 n +0000078991 00000 n +0000079143 00000 n +0000079361 00000 n +0000078692 00000 n +0000076255 00000 n +0000079300 00000 n +0000081279 00000 n +0000081617 00000 n +0000081147 00000 n +0000079472 00000 n +0000081432 00000 n +0000081555 00000 n +0000082134 00000 n +0000081961 00000 n +0000081728 00000 n +0000082073 00000 n +0000084746 00000 n +0000085144 00000 n +0000084614 00000 n +0000082219 00000 n +0000084897 00000 n +0000211432 00000 n +0000087496 00000 n +0000087261 00000 n +0000085255 00000 n +0000087373 00000 n +0000089495 00000 n +0000089322 00000 n +0000087594 00000 n +0000089434 00000 n +0000091102 00000 n +0000090929 00000 n +0000089580 00000 n +0000091041 00000 n +0000092243 00000 n +0000092070 00000 n +0000091187 00000 n +0000092182 00000 n +0000093911 00000 n +0000093676 00000 n +0000092328 00000 n +0000093788 00000 n +0000095808 00000 n +0000095573 00000 n +0000094009 00000 n +0000095685 00000 n +0000211549 00000 n +0000098137 00000 n +0000097902 00000 n +0000095906 00000 n +0000098014 00000 n +0000100469 00000 n +0000100234 00000 n +0000098235 00000 n +0000100346 00000 n +0000209843 00000 n +0000103082 00000 n +0000102723 00000 n +0000100592 00000 n +0000102835 00000 n +0000105615 00000 n +0000107277 00000 n +0000107430 00000 n +0000105953 00000 n +0000105483 00000 n +0000103193 00000 n +0000105768 00000 n +0000210127 00000 n +0000107588 00000 n +0000107739 00000 n +0000107952 00000 n +0000107121 00000 n +0000106102 00000 n +0000107891 00000 n +0000108050 00000 n +0000108075 00000 n +0000108333 00000 n +0000108698 00000 n +0000209180 00000 n +0000108816 00000 n +0000109245 00000 n +0000109556 00000 n +0000110130 00000 n +0000110693 00000 n +0000120292 00000 n +0000120549 00000 n +0000130314 00000 n +0000130584 00000 n +0000138090 00000 n +0000138340 00000 n +0000145335 00000 n +0000145560 00000 n +0000165061 00000 n +0000165652 00000 n +0000182669 00000 n +0000183142 00000 n +0000201826 00000 n +0000202352 00000 n +0000208909 00000 n +0000211666 00000 n +0000211768 00000 n +0000219448 00000 n +0000219631 00000 n +0000219801 00000 n +0000219970 00000 n +0000220140 00000 n +0000220309 00000 n +0000220476 00000 n +0000220649 00000 n +0000220836 00000 n +0000221030 00000 n +0000221213 00000 n +0000221419 00000 n +0000221653 00000 n +0000221887 00000 n +0000222121 00000 n +0000222344 00000 n +0000222564 00000 n +0000222790 00000 n +0000223017 00000 n +0000223261 00000 n +0000223528 00000 n +0000223638 00000 n +0000223754 00000 n +0000223878 00000 n +0000223974 00000 n +0000224081 00000 n +0000224119 00000 n +0000224247 00000 n +======= +0000045483 00000 n +0000046000 00000 n +0000045351 00000 n +0000043046 00000 n +0000045634 00000 n +0000048792 00000 n +0000048373 00000 n +0000046111 00000 n +0000048485 00000 n +0000050392 00000 n +0000050157 00000 n +0000048903 00000 n +0000050269 00000 n +0000052869 00000 n +0000053335 00000 n +0000052737 00000 n +0000050503 00000 n +0000053026 00000 n +0000056145 00000 n +0000055663 00000 n +0000053446 00000 n +0000055775 00000 n +0000211553 00000 n +0000058443 00000 n +0000057898 00000 n +0000056256 00000 n +0000058010 00000 n +0000060637 00000 n +0000061045 00000 n +0000060505 00000 n +0000058554 00000 n +0000060799 00000 n +0000063949 00000 n +0000063528 00000 n +0000061156 00000 n +0000063640 00000 n +0000065954 00000 n +0000066479 00000 n +0000065822 00000 n +0000064060 00000 n +0000066109 00000 n +0000068468 00000 n +0000068805 00000 n +0000068336 00000 n +0000066590 00000 n +0000068621 00000 n +0000210054 00000 n +0000071467 00000 n +0000070985 00000 n +0000068929 00000 n +0000071097 00000 n +0000211670 00000 n +0000073507 00000 n +0000073845 00000 n +0000073375 00000 n +0000071578 00000 n +0000073660 00000 n +0000076082 00000 n +0000076486 00000 n +0000075950 00000 n +0000073956 00000 n +0000076239 00000 n +0000079195 00000 n +0000079346 00000 n +0000079498 00000 n +0000079716 00000 n +0000079047 00000 n +0000076610 00000 n +0000079655 00000 n +0000081634 00000 n +0000081972 00000 n +0000081502 00000 n +0000079827 00000 n +0000081787 00000 n +0000081910 00000 n +0000082489 00000 n +0000082316 00000 n +0000082083 00000 n +0000082428 00000 n +0000085101 00000 n +0000085499 00000 n +0000084969 00000 n +0000082574 00000 n +0000085252 00000 n +0000211787 00000 n +0000087851 00000 n +0000087616 00000 n +0000085610 00000 n +0000087728 00000 n +0000089850 00000 n +0000089677 00000 n +0000087949 00000 n +0000089789 00000 n +0000091457 00000 n +0000091284 00000 n +0000089935 00000 n +0000091396 00000 n +0000092598 00000 n +0000092425 00000 n +0000091542 00000 n +0000092537 00000 n +0000094266 00000 n +0000094031 00000 n +0000092683 00000 n +0000094143 00000 n +0000096163 00000 n +0000095928 00000 n +0000094364 00000 n +0000096040 00000 n +0000211904 00000 n +0000098492 00000 n +0000098257 00000 n +0000096261 00000 n +0000098369 00000 n +0000100824 00000 n +0000100589 00000 n +0000098590 00000 n +0000100701 00000 n +0000210198 00000 n +0000103437 00000 n +0000103078 00000 n +0000100947 00000 n +0000103190 00000 n +0000105970 00000 n +0000107632 00000 n +0000107785 00000 n +0000106308 00000 n +0000105838 00000 n +0000103548 00000 n +0000106123 00000 n +0000210482 00000 n +0000107943 00000 n +0000108094 00000 n +0000108307 00000 n +0000107476 00000 n +0000106457 00000 n +0000108246 00000 n +0000108405 00000 n +0000108430 00000 n +0000108688 00000 n +0000109053 00000 n +0000209535 00000 n +0000109171 00000 n +0000109600 00000 n +0000109911 00000 n +0000110485 00000 n +0000111048 00000 n +0000120647 00000 n +0000120904 00000 n +0000130669 00000 n +0000130939 00000 n +0000138445 00000 n +0000138695 00000 n +0000145690 00000 n +0000145915 00000 n +0000165416 00000 n +0000166007 00000 n +0000183024 00000 n +0000183497 00000 n +0000202181 00000 n +0000202707 00000 n +0000209264 00000 n +0000212021 00000 n +0000212123 00000 n +0000219803 00000 n +0000219986 00000 n +0000220156 00000 n +0000220325 00000 n +0000220495 00000 n +0000220664 00000 n +0000220831 00000 n +0000221004 00000 n +0000221191 00000 n +0000221385 00000 n +0000221568 00000 n +0000221774 00000 n +0000222008 00000 n +0000222242 00000 n +0000222476 00000 n +0000222699 00000 n +0000222919 00000 n +0000223145 00000 n +0000223372 00000 n +0000223616 00000 n +0000223883 00000 n +0000223993 00000 n +0000224109 00000 n +0000224233 00000 n +0000224329 00000 n +0000224436 00000 n +0000224474 00000 n +0000224602 00000 n +>>>>>>> 1.0 trailer -<< /Size 646 -/Root 644 0 R -/Info 645 0 R -/ID [<5C037A030D5E034C732ED870C431FD96> <5C037A030D5E034C732ED870C431FD96>] >> +<< /Size 650 +/Root 648 0 R +/Info 649 0 R +<<<<<<< HEAD +/ID [ ] >> startxref -223418 +224553 +======= +/ID [<761474DAF29E3B552170784BBD125F98> <761474DAF29E3B552170784BBD125F98>] >> +startxref +224908 +>>>>>>> 1.0 %%EOF diff --git a/src/spec/readme.tex b/src/spec/readme.tex index ded33a17..409efef6 100644 --- a/src/spec/readme.tex +++ b/src/spec/readme.tex @@ -411,6 +411,9 @@ member. \paragraph{Attributes of \tag{member} tags} \begin{itemize} +\item \attr{validextensionstructs} - only valid on the \code{pNext} member of a + struct. This is a comma-separated list of structures that may be + accepted by \code{pNext} instead of \code{NULL} \item \attr{len} - if the member is an array, len may be one or more of the following things, separated by commas (one for each array indirection): another member of that struct; ``null-terminated'' for a @@ -419,9 +422,13 @@ member. latexmath:[\$} and {\tt \$]}. \item \attr{externsync} - denotes that the member should be externally synchronized when accessed by Vulkan -\item \attr{optional} - whether this value can be omitted by providing - \code{NULL} (for pointers), \code{VK_NULL_HANDLE} (for handles) or 0 - (for bitmasks/values) +\item \attr{optional} - a value of 'true' or 'false' determines whether this + member can be omitted by providing \code{NULL} (for pointers), + \code{VK_NULL_HANDLE} (for handles) or 0 (for bitmasks/values). If the + member is a pointer to one of those types, multiple values may be + provided, separated by commas - one for each pointer indirection. + Note that this only affects automatic validity statements - explicit + statements remain unchanged. \item \attr{noautovalidity} - prevents automatic validity language being generated for the tagged item. Only suppresses item-specific validity - parenting issues etc. are still captured. @@ -795,9 +802,13 @@ members. string; ``1'' to indicate it's just a pointer (used for nested pointers); or an equation (a simple expression prefixed with ``math:'') -\item \attr{optional} - whether this value can be omitted by providing - \code{NULL} (for pointers), \code{VK_NULL_HANDLE} (for handles) or 0 - (for bitmasks/values) +\item \attr{optional} - a value of 'true' or 'false' determines whether this + member can be omitted by providing \code{NULL} (for pointers), + \code{VK_NULL_HANDLE} (for handles) or 0 (for bitmasks/values). If the + member is a pointer to one of those types, multiple values may be + provided, separated by commas - one for each pointer indirection. + Note that this only affects automatic validity statements - explicit + statements remain unchanged. \item \attr{noautovalidity} - prevents automatic validity language being generated for the tagged item. Only suppresses item-specific validity - parenting issues etc. are still captured. @@ -918,7 +929,7 @@ When processed into a C header for Vulkan, this results in: #define VK_MAX_EXTENSION_NAME 256 #define VK_LOD_CLAMP_NONE MAX_FLOAT typedef VkResult (VKAPI_PTR *PFN_vkCreateInstance)(const VkInstanceCreateInfo* pCreateInfo, VkInstance* pInstance); -#ifdef VK_PROTOTYPES +#ifndef VK_NO_PROTOTYPES VKAPI_ATTR VkResult VKAPI_CALL vkCreateInstance( const VkInstanceCreateInfo* pCreateInfo, VkInstance* pInstance); @@ -1033,7 +1044,7 @@ typedef VkResult (VKAPI_PTR *PFN_vkCreateSharedSwapchainsKHR)( const VkAllocationCallbacks* pAllocator, VkSwapchainKHR* pSwapchains); -#ifdef VK_PROTOTYPES +#ifndef VK_NO_PROTOTYPES VKAPI_ATTR VkResult VKAPI_CALL vkCreateSharedSwapchainsKHR( VkDevice device, uint32_t swapchainCount, @@ -1503,7 +1514,7 @@ VK_DEFINE_DISP_SUBCLASS_HANDLE(VkInstance, VkObject) #define VK_MAX_PHYSICAL_DEVICE_NAME 256 #define VK_MAX_EXTENSION_NAME 256 typedef VkResult (VKAPI_PTR *PFN_vkCreateInstance)(const VkInstanceCreateInfo* pCreateInfo, VkInstance* pInstance); -#ifdef VK_PROTOTYPES +#ifndef VK_NO_PROTOTYPES VKAPI_ATTR VkResult VKAPI_CALL vkCreateInstance( const VkInstanceCreateInfo* pCreateInfo, VkInstance* pInstance); diff --git a/src/spec/registry.rnc b/src/spec/registry.rnc index 1ac7d095..aeea0e24 100644 --- a/src/spec/registry.rnc +++ b/src/spec/registry.rnc @@ -298,7 +298,7 @@ Command = element command { # Each defines the interface of an API version (e.g. OpenGL 1.2) # api - API tag (e.g. 'gl', 'gles2', etc. - used internally, not -# neccessarily an actual API name +# necessarily an actual API name # name - version name (C preprocessor name, e.g. GL_VERSION_4_2) # number - version number, e.g. 4.2 # protect - additional #ifdef symbol to place around the feature diff --git a/src/spec/test.c b/src/spec/test.c index a72a20f8..3f7eaa4b 100644 --- a/src/spec/test.c +++ b/src/spec/test.c @@ -13,7 +13,7 @@ int main(int ac, const char **av) { VkStructureType sType; VkResult result; - // Supress warnings about unused variables + // Suppress warnings about unused variables (void)sType; (void)result; sType = VK_STRUCTURE_TYPE_SWAPCHAIN_CREATE_INFO_KHR; diff --git a/src/spec/vk.xml b/src/spec/vk.xml index 9d6d4d7c..b43bcfca 100644 --- a/src/spec/vk.xml +++ b/src/spec/vk.xml @@ -101,7 +101,7 @@ maintained in the master branch of the Khronos Vulkan Github project. // Vulkan 1.0 version number #define VK_API_VERSION_1_0 VK_MAKE_VERSION(1, 0, 0) // Version of this file -#define VK_HEADER_VERSION 11 +#define VK_HEADER_VERSION 12 #define VK_DEFINE_HANDLE(object) typedef struct object##_T* object; @@ -336,6 +336,7 @@ maintained in the master branch of the Khronos Vulkan Github project. + typedef void (VKAPI_PTR *PFN_vkInternalAllocationNotification)( @@ -692,11 +693,11 @@ maintained in the master branch of the Khronos Vulkan Github project. pname:offset must: be less than the size of pname:buffer pname:offset must: be a multiple of sname:VkPhysicalDeviceLimits::pname:minTexelBufferOffsetAlignment - If pname:range is not equal to ename:VK_WHOLE_SIZE: - pname:range must: be greater than `0` - pname:range must: be a multiple of the element size of pname:format - pname:range divided by the size of an element of pname:format, must: be less than or equal to sname:VkPhysicalDeviceLimits::pname:maxTexelBufferElements - the sum of pname:offset and pname:range must: be less than or equal to the size of pname:buffer + If pname:range is not equal to ename:VK_WHOLE_SIZE: + ** pname:range must: be greater than `0` + ** pname:range must: be a multiple of the element size of pname:format + ** pname:range divided by the size of an element of pname:format, must: be less than or equal to sname:VkPhysicalDeviceLimits::pname:maxTexelBufferElements + ** the sum of pname:offset and pname:range must: be less than or equal to the size of pname:buffer pname:buffer must: have been created with a pname:usage value containing at least one of ename:VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT or ename:VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT If pname:buffer was created with pname:usage containing ename:VK_BUFFER_USAGE_UNIFORM_TEXEL_BUFFER_BIT, pname:format must: be supported for uniform texel buffers, as specified by the ename:VK_FORMAT_FEATURE_UNIFORM_TEXEL_BUFFER_BIT flag in sname:VkFormatProperties::pname:bufferFeatures returned by fname:vkGetPhysicalDeviceFormatProperties If pname:buffer was created with pname:usage containing ename:VK_BUFFER_USAGE_STORAGE_TEXEL_BUFFER_BIT, pname:format must: be supported for storage texel buffers, as specified by the ename:VK_FORMAT_FEATURE_STORAGE_TEXEL_BUFFER_BIT flag in sname:VkFormatProperties::pname:bufferFeatures returned by fname:vkGetPhysicalDeviceFormatProperties @@ -977,24 +978,24 @@ maintained in the master branch of the Khronos Vulkan Github project. pname:dstOffset.x and (pname:extent.width + pname:dstOffset.x) must: both be greater than or equal to `0` and less than or equal to the destination image subresource width pname:dstOffset.y and (pname:extent.height + pname:dstOffset.y) must: both be greater than or equal to `0` and less than or equal to the destination image subresource height pname:dstOffset.z and (pname:extent.depth + pname:dstOffset.z) must: both be greater than or equal to `0` and less than or equal to the destination image subresource depth - If the calling command's pname:srcImage is a compressed format image: - all members of pname:srcOffset must: be a multiple of the corresponding dimensions of the compressed texel block - pname:extent.width must: be a multiple of the compressed texel block width or (pname:extent.width + pname:srcOffset.x) must: equal the source image subresource width - pname:extent.height must: be a multiple of the compressed texel block height or (pname:extent.height + pname:srcOffset.y) must: equal the source image subresource height - pname:extent.depth must: be a multiple of the compressed texel block depth or (pname:extent.depth + pname:srcOffset.z) must: equal the source image subresource depth - If the calling command's pname:dstImage is a compressed format image: - all members of pname:dstOffset must: be a multiple of the corresponding dimensions of the compressed texel block - pname:extent.width must: be a multiple of the compressed texel block width or (pname:extent.width + pname:dstOffset.x) must: equal the destination image subresource width - pname:extent.height must: be a multiple of the compressed texel block height or (pname:extent.height + pname:dstOffset.y) must: equal the destination image subresource height - pname:extent.depth must: be a multiple of the compressed texel block depth or (pname:extent.depth + pname:dstOffset.z) must: equal the destination image subresource depth + If the calling command's pname:srcImage is a compressed format image: + ** all members of pname:srcOffset must: be a multiple of the corresponding dimensions of the compressed texel block + ** pname:extent.width must: be a multiple of the compressed texel block width or (pname:extent.width + pname:srcOffset.x) must: equal the source image subresource width + ** pname:extent.height must: be a multiple of the compressed texel block height or (pname:extent.height + pname:srcOffset.y) must: equal the source image subresource height + ** pname:extent.depth must: be a multiple of the compressed texel block depth or (pname:extent.depth + pname:srcOffset.z) must: equal the source image subresource depth + If the calling command's pname:dstImage is a compressed format image: + ** all members of pname:dstOffset must: be a multiple of the corresponding dimensions of the compressed texel block + ** pname:extent.width must: be a multiple of the compressed texel block width or (pname:extent.width + pname:dstOffset.x) must: equal the destination image subresource width + ** pname:extent.height must: be a multiple of the compressed texel block height or (pname:extent.height + pname:dstOffset.y) must: equal the destination image subresource height + ** pname:extent.depth must: be a multiple of the compressed texel block depth or (pname:extent.depth + pname:dstOffset.z) must: equal the destination image subresource depth pname:srcOffset, pname:dstOffset, and pname:extent must: respect the image transfer granularity requirements of the queue family that it will be submitted against, as described in <<devsandqueues-physical-device-enumeration,Physical Device Enumeration>> VkImageSubresourceLayers srcSubresource - VkOffset3D srcOffsets[2] + VkOffset3D srcOffsets[2] VkImageSubresourceLayers dstSubresource - VkOffset3D dstOffsets[2] + VkOffset3D dstOffsets[2] The pname:aspectMask member of pname:srcSubresource and pname:dstSubresource must: match The pname:layerCount member of pname:srcSubresource and pname:dstSubresource must: match @@ -1024,14 +1025,14 @@ maintained in the master branch of the Khronos Vulkan Github project. pname:imageOffset.x and (pname:imageExtent.width + pname:imageOffset.x) must: both be greater than or equal to `0` and less than or equal to the image subresource width pname:imageOffset.y and (imageExtent.height + pname:imageOffset.y) must: both be greater than or equal to `0` and less than or equal to the image subresource height pname:imageOffset.z and (imageExtent.depth + pname:imageOffset.z) must: both be greater than or equal to `0` and less than or equal to the image subresource depth - If the calling command's sname:VkImage parameter is a compressed format image: - pname:bufferRowLength must: be a multiple of the compressed texel block width - pname:bufferImageHeight must: be a multiple of the compressed texel block height - all members of pname:imageOffset must: be a multiple of the corresponding dimensions of the compressed texel block - pname:bufferOffset must: be a multiple of the compressed texel block size in bytes - pname:imageExtent.width must: be a multiple of the compressed texel block width or (pname:imageExtent.width + pname:imageOffset.x) must: equal the image subresource width - pname:imageExtent.height must: be a multiple of the compressed texel block height or (pname:imageExtent.height + pname:imageOffset.y) must: equal the image subresource height - pname:imageExtent.depth must: be a multiple of the compressed texel block depth or (pname:imageExtent.depth + pname:imageOffset.z) must: equal the image subresource depth + If the calling command's sname:VkImage parameter is a compressed format image: + ** pname:bufferRowLength must: be a multiple of the compressed texel block width + ** pname:bufferImageHeight must: be a multiple of the compressed texel block height + ** all members of pname:imageOffset must: be a multiple of the corresponding dimensions of the compressed texel block + ** pname:bufferOffset must: be a multiple of the compressed texel block size in bytes + ** pname:imageExtent.width must: be a multiple of the compressed texel block width or (pname:imageExtent.width + pname:imageOffset.x) must: equal the image subresource width + ** pname:imageExtent.height must: be a multiple of the compressed texel block height or (pname:imageExtent.height + pname:imageOffset.y) must: equal the image subresource height + ** pname:imageExtent.depth must: be a multiple of the compressed texel block depth or (pname:imageExtent.depth + pname:imageOffset.z) must: equal the image subresource depth pname:bufferOffset, pname:bufferRowLength, pname:bufferImageHeight and all members of pname:imageOffset and pname:imageExtent must: respect the image transfer granularity requirements of the queue family that it will be submitted against, as described in <<devsandqueues-physical-device-enumeration,Physical Device Enumeration>> The pname:aspectMask member of pname:imageSubresource must: specify aspects present in the calling command's sname:VkImage parameter The pname:aspectMask member of pname:imageSubresource must: only have a single bit set @@ -1251,7 +1252,7 @@ maintained in the master branch of the Khronos Vulkan Github project. VkStructureType sType - const void* pNext + const void* pNext VkPipelineRasterizationStateCreateFlags flags VkBool32 depthClampEnable VkBool32 rasterizerDiscardEnable @@ -2129,6 +2130,11 @@ maintained in the master branch of the Khronos Vulkan Github project. PFN_vkDebugReportCallbackEXT pfnCallback void* pUserData + + VkStructureType sType + const void* pNext + VkRasterizationOrderAMD rasterizationOrder + @@ -2630,12 +2636,12 @@ maintained in the master branch of the Khronos Vulkan Github project. - + - - + + @@ -2933,6 +2939,10 @@ maintained in the master branch of the Khronos Vulkan Github project. + + + + @@ -3077,8 +3087,8 @@ maintained in the master branch of the Khronos Vulkan Github project. const VkSubmitInfo* pSubmits VkFence fence - pname:fence must: be unsignalled - pname:fence mustnot: be associated with any other queue command that has not yet completed execution on that queue + If pname:fence is not sname:VK_NULL_HANDLE, pname:fence must: be unsignalled + If pname:fence is not sname:VK_NULL_HANDLE, pname:fence mustnot: be associated with any other queue command that has not yet completed execution on that queue @@ -3327,6 +3337,9 @@ maintained in the master branch of the Khronos Vulkan Github project. VkResult vkResetEvent VkDevice device VkEvent event + + pname:event mustnot: be waited on by a fname:vkCmdWaitEvents command that is currently executing + VkResult vkCreateQueryPool @@ -3918,7 +3931,7 @@ maintained in the master branch of the Khronos Vulkan Github project. If any sname:VkSampler object that is accessed from a shader by the sname:VkPipeline currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS uses unnormalized coordinates, it mustnot: be used with any of the SPIR-V `OpImageSample*` or `OpImageSparseSample*` instructions that includes a lod bias or any offset values, in any shader stage If the <<features-features-robustBufferAccess,robust buffer access>> feature is not enabled, and any shader stage in the sname:VkPipeline object currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS accesses a uniform buffer, it mustnot: access values outside of the range of that buffer specified in the currently bound descriptor set If the <<features-features-robustBufferAccess,robust buffer access>> feature is not enabled, and any shader stage in the sname:VkPipeline object currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS accesses a storage buffer, it mustnot: access values outside of the range of that buffer specified in the currently bound descriptor set - Any sname:VkImage being sampled with ename:VK_FILTER_LINEAR as a result of this command must: be of a format which supports linear filtering, as specified by the ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in sname:VkFormatProperties::pname:linearTilingFeatures returned by fname:vkGetPhysicalDeviceFormatProperties + Any sname:VkImageView being sampled with ename:VK_FILTER_LINEAR as a result of this command must: be of a format which supports linear filtering, as specified by the ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in sname:VkFormatProperties::pname:linearTilingFeatures (for a linear image) or sname:VkFormatProperties::pname:optimalTilingFeatures(for an optimally tiled image) returned by fname:vkGetPhysicalDeviceFormatProperties @@ -3944,7 +3957,7 @@ maintained in the master branch of the Khronos Vulkan Github project. If any sname:VkSampler object that is accessed from a shader by the sname:VkPipeline currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS uses unnormalized coordinates, it mustnot: be used with any of the SPIR-V `OpImageSample*` or `OpImageSparseSample*` instructions that includes a lod bias or any offset values, in any shader stage If the <<features-features-robustBufferAccess,robust buffer access>> feature is not enabled, and any shader stage in the sname:VkPipeline object currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS accesses a uniform buffer, it mustnot: access values outside of the range of that buffer specified in the currently bound descriptor set If the <<features-features-robustBufferAccess,robust buffer access>> feature is not enabled, and any shader stage in the sname:VkPipeline object currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS accesses a storage buffer, it mustnot: access values outside of the range of that buffer specified in the currently bound descriptor set - Any sname:VkImage being sampled with ename:VK_FILTER_LINEAR as a result of this command must: be of a format which supports linear filtering, as specified by the ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in sname:VkFormatProperties::pname:linearTilingFeatures returned by fname:vkGetPhysicalDeviceFormatProperties + Any sname:VkImageView being sampled with ename:VK_FILTER_LINEAR as a result of this command must: be of a format which supports linear filtering, as specified by the ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in sname:VkFormatProperties::pname:linearTilingFeatures (for a linear image) or sname:VkFormatProperties::pname:optimalTilingFeatures(for an optimally tiled image) returned by fname:vkGetPhysicalDeviceFormatProperties @@ -3974,7 +3987,7 @@ maintained in the master branch of the Khronos Vulkan Github project. If any sname:VkSampler object that is accessed from a shader by the sname:VkPipeline currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS uses unnormalized coordinates, it mustnot: be used with any of the SPIR-V `OpImageSample*` or `OpImageSparseSample*` instructions that includes a lod bias or any offset values, in any shader stage If the <<features-features-robustBufferAccess,robust buffer access>> feature is not enabled, and any shader stage in the sname:VkPipeline object currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS accesses a uniform buffer, it mustnot: access values outside of the range of that buffer specified in the currently bound descriptor set If the <<features-features-robustBufferAccess,robust buffer access>> feature is not enabled, and any shader stage in the sname:VkPipeline object currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS accesses a storage buffer, it mustnot: access values outside of the range of that buffer specified in the currently bound descriptor set - Any sname:VkImage being sampled with ename:VK_FILTER_LINEAR as a result of this command must: be of a format which supports linear filtering, as specified by the ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in sname:VkFormatProperties::pname:linearTilingFeatures returned by fname:vkGetPhysicalDeviceFormatProperties + Any sname:VkImageView being sampled with ename:VK_FILTER_LINEAR as a result of this command must: be of a format which supports linear filtering, as specified by the ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in sname:VkFormatProperties::pname:linearTilingFeatures (for a linear image) or sname:VkFormatProperties::pname:optimalTilingFeatures(for an optimally tiled image) returned by fname:vkGetPhysicalDeviceFormatProperties @@ -4004,7 +4017,7 @@ maintained in the master branch of the Khronos Vulkan Github project. If any sname:VkSampler object that is accessed from a shader by the sname:VkPipeline currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS uses unnormalized coordinates, it mustnot: be used with any of the SPIR-V `OpImageSample*` or `OpImageSparseSample*` instructions that includes a lod bias or any offset values, in any shader stage If the <<features-features-robustBufferAccess,robust buffer access>> feature is not enabled, and any shader stage in the sname:VkPipeline object currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS accesses a uniform buffer, it mustnot: access values outside of the range of that buffer specified in the currently bound descriptor set If the <<features-features-robustBufferAccess,robust buffer access>> feature is not enabled, and any shader stage in the sname:VkPipeline object currently bound to ename:VK_PIPELINE_BIND_POINT_GRAPHICS accesses a storage buffer, it mustnot: access values outside of the range of that buffer specified in the currently bound descriptor set - Any sname:VkImage being sampled with ename:VK_FILTER_LINEAR as a result of this command must: be of a format which supports linear filtering, as specified by the ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in sname:VkFormatProperties::pname:linearTilingFeatures returned by fname:vkGetPhysicalDeviceFormatProperties + Any sname:VkImageView being sampled with ename:VK_FILTER_LINEAR as a result of this command must: be of a format which supports linear filtering, as specified by the ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in sname:VkFormatProperties::pname:linearTilingFeatures (for a linear image) or sname:VkFormatProperties::pname:optimalTilingFeatures(for an optimally tiled image) returned by fname:vkGetPhysicalDeviceFormatProperties @@ -4026,7 +4039,7 @@ maintained in the master branch of the Khronos Vulkan Github project. If any sname:VkSampler object that is accessed from a shader by the sname:VkPipeline currently bound to ename:VK_PIPELINE_BIND_POINT_COMPUTE uses unnormalized coordinates, it mustnot: be used with any of the SPIR-V `OpImageSample*` or `OpImageSparseSample*` instructions that includes a lod bias or any offset values, in any shader stage If the <<features-features-robustBufferAccess,robust buffer access>> feature is not enabled, and any shader stage in the sname:VkPipeline object currently bound to ename:VK_PIPELINE_BIND_POINT_COMPUTE accesses a uniform buffer, it mustnot: access values outside of the range of that buffer specified in the currently bound descriptor set If the <<features-features-robustBufferAccess,robust buffer access>> feature is not enabled, and any shader stage in the sname:VkPipeline object currently bound to ename:VK_PIPELINE_BIND_POINT_COMPUTE accesses a storage buffer, it mustnot: access values outside of the range of that buffer specified in the currently bound descriptor set - Any sname:VkImage being sampled with ename:VK_FILTER_LINEAR as a result of this command must: be of a format which supports linear filtering, as specified by the ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in sname:VkFormatProperties::pname:linearTilingFeatures returned by fname:vkGetPhysicalDeviceFormatProperties + Any sname:VkImageView being sampled with ename:VK_FILTER_LINEAR as a result of this command must: be of a format which supports linear filtering, as specified by the ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in sname:VkFormatProperties::pname:linearTilingFeatures (for a linear image) or sname:VkFormatProperties::pname:optimalTilingFeatures(for an optimally tiled image) returned by fname:vkGetPhysicalDeviceFormatProperties @@ -4047,7 +4060,7 @@ maintained in the master branch of the Khronos Vulkan Github project. If any sname:VkSampler object that is accessed from a shader by the sname:VkPipeline currently bound to ename:VK_PIPELINE_BIND_POINT_COMPUTE uses unnormalized coordinates, it mustnot: be used with any of the SPIR-V `OpImageSample*` or `OpImageSparseSample*` instructions that includes a lod bias or any offset values, in any shader stage If the <<features-features-robustBufferAccess,robust buffer access>> feature is not enabled, and any shader stage in the sname:VkPipeline object currently bound to ename:VK_PIPELINE_BIND_POINT_COMPUTE accesses a uniform buffer, it mustnot: access values outside of the range of that buffer specified in the currently bound descriptor set If the <<features-features-robustBufferAccess,robust buffer access>> feature is not enabled, and any shader stage in the sname:VkPipeline object currently bound to ename:VK_PIPELINE_BIND_POINT_COMPUTE accesses a storage buffer, it mustnot: access values outside of the range of that buffer specified in the currently bound descriptor set - Any sname:VkImage being sampled with ename:VK_FILTER_LINEAR as a result of this command must: be of a format which supports linear filtering, as specified by the ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in sname:VkFormatProperties::pname:linearTilingFeatures returned by fname:vkGetPhysicalDeviceFormatProperties + Any sname:VkImageView being sampled with ename:VK_FILTER_LINEAR as a result of this command must: be of a format which supports linear filtering, as specified by the ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in sname:VkFormatProperties::pname:linearTilingFeatures (for a linear image) or sname:VkFormatProperties::pname:optimalTilingFeatures(for an optimally tiled image) returned by fname:vkGetPhysicalDeviceFormatProperties @@ -4118,6 +4131,7 @@ maintained in the master branch of the Khronos Vulkan Github project. If either of pname:srcImage or pname:dstImage was created with an unsigned integer elink:VkFormat, the other must: also have been created with an unsigned integer elink:VkFormat If either of pname:srcImage or pname:dstImage was created with a depth/stencil format, the other must: have exactly the same format If pname:srcImage was created with a depth/stencil format, pname:filter must: be ename:VK_FILTER_NEAREST + If pname:filter is ename:VK_FILTER_LINEAR, pname:srcImage must: be of a format which supports linear filtering, as specified by the ename:VK_FORMAT_FEATURE_SAMPLED_IMAGE_FILTER_LINEAR_BIT flag in sname:VkFormatProperties::pname:linearTilingFeatures (for a linear image) or sname:VkFormatProperties::pname:optimalTilingFeatures(for an optimally tiled image) returned by fname:vkGetPhysicalDeviceFormatProperties @@ -4203,7 +4217,7 @@ maintained in the master branch of the Khronos Vulkan Github project. pname:image must: have been created with ename:VK_IMAGE_USAGE_TRANSFER_DST_BIT usage flag pname:imageLayout must: specify the layout of the image subresource ranges of pname:image specified in pname:pRanges at the time this command is executed on a sname:VkDevice pname:imageLayout must: be either of ename:VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL or ename:VK_IMAGE_LAYOUT_GENERAL - The image range of any given element of pname:pRanges must: be a image subresource range that is contained within pname:image + The image range of any given element of pname:pRanges must: be an image subresource range that is contained within pname:image pname:image mustnot: have a compressed or depth/stencil format @@ -4219,7 +4233,7 @@ maintained in the master branch of the Khronos Vulkan Github project. pname:image must: have been created with ename:VK_IMAGE_USAGE_TRANSFER_DST_BIT usage flag pname:imageLayout must: specify the layout of the image subresource ranges of pname:image specified in pname:pRanges at the time this command is executed on a sname:VkDevice pname:imageLayout must: be either of ename:VK_IMAGE_LAYOUT_TRANSFER_DST_OPTIMAL or ename:VK_IMAGE_LAYOUT_GENERAL - The image range of any given element of pname:pRanges must: be a image subresource range that is contained within pname:image + The image range of any given element of pname:pRanges must: be an image subresource range that is contained within pname:image pname:image must: have a depth/stencil format @@ -4278,6 +4292,7 @@ maintained in the master branch of the Khronos Vulkan Github project. If the <<features-features-geometryShader,geometry shaders>> feature is not enabled, pname:stageMask mustnot: contain ename:VK_PIPELINE_STAGE_GEOMETRY_SHADER_BIT If the <<features-features-tessellationShader,tessellation shaders>> feature is not enabled, pname:stageMask mustnot: contain ename:VK_PIPELINE_STAGE_TESSELLATION_CONTROL_SHADER_BIT or ename:VK_PIPELINE_STAGE_TESSELLATION_EVALUATION_SHADER_BIT + When this command executes, pname:event mustnot: be waited on by a fname:vkCmdWaitEvents command that is currently executing @@ -5168,10 +5183,13 @@ maintained in the master branch of the Khronos Vulkan Github project. - + - - + + + + + diff --git a/src/vulkan/vulkan.h b/src/vulkan/vulkan.h index cbc83022..c26d4ce9 100644 --- a/src/vulkan/vulkan.h +++ b/src/vulkan/vulkan.h @@ -43,7 +43,7 @@ extern "C" { #define VK_VERSION_MINOR(version) (((uint32_t)(version) >> 12) & 0x3ff) #define VK_VERSION_PATCH(version) ((uint32_t)(version) & 0xfff) // Version of this file -#define VK_HEADER_VERSION 11 +#define VK_HEADER_VERSION 12 #define VK_NULL_HANDLE 0 @@ -210,6 +210,7 @@ typedef enum VkStructureType { VK_STRUCTURE_TYPE_ANDROID_SURFACE_CREATE_INFO_KHR = 1000008000, VK_STRUCTURE_TYPE_WIN32_SURFACE_CREATE_INFO_KHR = 1000009000, VK_STRUCTURE_TYPE_DEBUG_REPORT_CALLBACK_CREATE_INFO_EXT = 1000011000, + VK_STRUCTURE_TYPE_PIPELINE_RASTERIZATION_STATE_RASTERIZATION_ORDER_AMD = 1000018000, VK_STRUCTURE_TYPE_BEGIN_RANGE = VK_STRUCTURE_TYPE_APPLICATION_INFO, VK_STRUCTURE_TYPE_END_RANGE = VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO, VK_STRUCTURE_TYPE_RANGE_SIZE = (VK_STRUCTURE_TYPE_LOADER_DEVICE_CREATE_INFO - VK_STRUCTURE_TYPE_APPLICATION_INFO + 1), @@ -3828,6 +3829,28 @@ VKAPI_ATTR void VKAPI_CALL vkDebugReportMessageEXT( #define VK_IMG_FILTER_CUBIC_EXTENSION_NAME "VK_IMG_filter_cubic" +#define VK_AMD_rasterization_order 1 +#define VK_AMD_RASTERIZATION_ORDER_SPEC_VERSION 1 +#define VK_AMD_RASTERIZATION_ORDER_EXTENSION_NAME "VK_AMD_rasterization_order" + + +typedef enum VkRasterizationOrderAMD { + VK_RASTERIZATION_ORDER_STRICT_AMD = 0, + VK_RASTERIZATION_ORDER_RELAXED_AMD = 1, + VK_RASTERIZATION_ORDER_BEGIN_RANGE_AMD = VK_RASTERIZATION_ORDER_STRICT_AMD, + VK_RASTERIZATION_ORDER_END_RANGE_AMD = VK_RASTERIZATION_ORDER_RELAXED_AMD, + VK_RASTERIZATION_ORDER_RANGE_SIZE_AMD = (VK_RASTERIZATION_ORDER_RELAXED_AMD - VK_RASTERIZATION_ORDER_STRICT_AMD + 1), + VK_RASTERIZATION_ORDER_MAX_ENUM_AMD = 0x7FFFFFFF +} VkRasterizationOrderAMD; + +typedef struct VkPipelineRasterizationStateRasterizationOrderAMD { + VkStructureType sType; + const void* pNext; + VkRasterizationOrderAMD rasterizationOrder; +} VkPipelineRasterizationStateRasterizationOrderAMD; + + + #ifdef __cplusplus } #endif