From 30a06278f3d1824f275174679599b5e80e532f7d Mon Sep 17 00:00:00 2001 From: Matt Sylvia Date: Tue, 19 Sep 2017 11:11:29 -0400 Subject: [PATCH 001/145] Branching for d15-5 --- .gitmodules | 2 +- Make.config | 6 +++--- mk/xamarin.mk | 4 ++-- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.gitmodules b/.gitmodules index 5ce256fa7f..bb019dc557 100644 --- a/.gitmodules +++ b/.gitmodules @@ -31,4 +31,4 @@ [submodule "external/Xamarin.MacDev"] path = external/Xamarin.MacDev url = ../../xamarin/Xamarin.MacDev - branch = master + branch = d15-5 diff --git a/Make.config b/Make.config index 9239051e95..53464280ee 100644 --- a/Make.config +++ b/Make.config @@ -31,7 +31,7 @@ PACKAGE_HEAD_REV=$(shell git rev-parse HEAD) # on wrench, because wrench technically builds hashes, not branches) # # -PACKAGE_HEAD_BRANCH=master +PACKAGE_HEAD_BRANCH=d15-5 ifeq ($(BUILD_REVISION),) CURRENT_BRANCH:=$(shell git rev-parse --abbrev-ref HEAD) else @@ -45,7 +45,7 @@ IOS_PRODUCT=Xamarin.iOS IOS_PACKAGE_NAME=Xamarin.iOS IOS_PACKAGE_NAME_LOWER=$(shell echo $(IOS_PACKAGE_NAME) | tr "[:upper:]" "[:lower:]") # NEVER customize IOS_PACKAGE_VERSION itself, other parts (mtouch, web updater) are using the IOS_PACKAGE_VERSION_* variables -IOS_PACKAGE_VERSION=11.3.$(PACKAGE_VERSION_REV).$(IOS_COMMIT_DISTANCE) +IOS_PACKAGE_VERSION=11.4.$(PACKAGE_VERSION_REV).$(IOS_COMMIT_DISTANCE) IOS_PACKAGE_VERSION_MAJOR=$(word 1, $(subst ., ,$(IOS_PACKAGE_VERSION))) IOS_PACKAGE_VERSION_MINOR=$(word 2, $(subst ., ,$(IOS_PACKAGE_VERSION))) IOS_PACKAGE_VERSION_REV=$(PACKAGE_VERSION_REV) @@ -252,7 +252,7 @@ MAC_PRODUCT=Xamarin.Mac MAC_PACKAGE_NAME=xamarin.mac MAC_PACKAGE_NAME_LOWER=$(shell echo $(MAC_PACKAGE_NAME) | tr "[:upper:]" "[:lower:]") -MAC_PACKAGE_VERSION=4.1.$(PACKAGE_VERSION_REV).$(MAC_COMMIT_DISTANCE) +MAC_PACKAGE_VERSION=4.0.$(PACKAGE_VERSION_REV).$(MAC_COMMIT_DISTANCE) MAC_PACKAGE_VERSION_MAJOR=$(word 1, $(subst ., ,$(MAC_PACKAGE_VERSION))) MAC_PACKAGE_VERSION_MINOR=$(word 2, $(subst ., ,$(MAC_PACKAGE_VERSION))) MAC_PACKAGE_VERSION_REV=$(PACKAGE_VERSION_REV) diff --git a/mk/xamarin.mk b/mk/xamarin.mk index 5ea227abed..3e0311a37c 100644 --- a/mk/xamarin.mk +++ b/mk/xamarin.mk @@ -1,6 +1,6 @@ ifdef ENABLE_XAMARIN -NEEDED_MACCORE_VERSION := e2905474b133977db654cf4036e78616ed92c3bf -NEEDED_MACCORE_BRANCH := master +NEEDED_MACCORE_VERSION := 3f2a0e6cf4c8549d9582703ca71d28df8724e294 +NEEDED_MACCORE_BRANCH := d15-5 MACCORE_DIRECTORY := maccore MACCORE_MODULE := git@github.com:xamarin/maccore.git From 8956c230c24cb7d8de4f7c68aa7d2dc3cb7cfefd Mon Sep 17 00:00:00 2001 From: Chris Hamons Date: Tue, 19 Sep 2017 20:56:40 -0500 Subject: [PATCH 002/145] [apidiff] Update XML references for XM from d15-4 (#2718) (#2726) --- tools/apidiff/references/xm/4.5/OpenTK.xml | 0 .../apidiff/references/xm/4.5/Xamarin.Mac.xml | 1235 ++++++++++++++++- .../references/xm/XamMac.CFNetwork.xml | 0 tools/apidiff/references/xm/XamMac.xml | 253 +++- .../xm/Xamarin.Mac/Mono.Data.Sqlite.xml | 0 .../xm/Xamarin.Mac/Mono.Data.Tds.xml | 0 .../xm/Xamarin.Mac/Mono.Security.xml | 0 .../references/xm/Xamarin.Mac/OpenTK.xml | 0 .../System.ComponentModel.Composition.xml | 0 .../System.ComponentModel.DataAnnotations.xml | 0 .../references/xm/Xamarin.Mac/System.Core.xml | 0 .../System.Data.Services.Client.xml | 0 .../references/xm/Xamarin.Mac/System.Data.xml | 0 .../System.IO.Compression.FileSystem.xml | 0 .../xm/Xamarin.Mac/System.IO.Compression.xml | 0 .../references/xm/Xamarin.Mac/System.Json.xml | 0 .../references/xm/Xamarin.Mac/System.Net.xml | 0 .../xm/Xamarin.Mac/System.Numerics.xml | 0 .../System.Runtime.Serialization.xml | 0 .../Xamarin.Mac/System.ServiceModel.Web.xml | 0 .../xm/Xamarin.Mac/System.ServiceModel.xml | 0 .../xm/Xamarin.Mac/System.Transactions.xml | 0 .../xm/Xamarin.Mac/System.Web.Services.xml | 0 .../xm/Xamarin.Mac/System.Windows.xml | 0 .../xm/Xamarin.Mac/System.Xml.Linq.xml | 0 .../Xamarin.Mac/System.Xml.Serialization.xml | 0 .../references/xm/Xamarin.Mac/System.Xml.xml | 0 .../references/xm/Xamarin.Mac/System.xml | 0 .../references/xm/Xamarin.Mac/Xamarin.Mac.xml | 1235 ++++++++++++++++- .../references/xm/Xamarin.Mac/mscorlib.xml | 0 30 files changed, 2708 insertions(+), 15 deletions(-) mode change 100644 => 100755 tools/apidiff/references/xm/4.5/OpenTK.xml mode change 100644 => 100755 tools/apidiff/references/xm/4.5/Xamarin.Mac.xml mode change 100644 => 100755 tools/apidiff/references/xm/XamMac.CFNetwork.xml mode change 100644 => 100755 tools/apidiff/references/xm/XamMac.xml mode change 100644 => 100755 tools/apidiff/references/xm/Xamarin.Mac/Mono.Data.Sqlite.xml mode change 100644 => 100755 tools/apidiff/references/xm/Xamarin.Mac/Mono.Data.Tds.xml mode change 100644 => 100755 tools/apidiff/references/xm/Xamarin.Mac/Mono.Security.xml mode change 100644 => 100755 tools/apidiff/references/xm/Xamarin.Mac/OpenTK.xml mode change 100644 => 100755 tools/apidiff/references/xm/Xamarin.Mac/System.ComponentModel.Composition.xml mode change 100644 => 100755 tools/apidiff/references/xm/Xamarin.Mac/System.ComponentModel.DataAnnotations.xml mode change 100644 => 100755 tools/apidiff/references/xm/Xamarin.Mac/System.Core.xml mode change 100644 => 100755 tools/apidiff/references/xm/Xamarin.Mac/System.Data.Services.Client.xml mode change 100644 => 100755 tools/apidiff/references/xm/Xamarin.Mac/System.Data.xml mode change 100644 => 100755 tools/apidiff/references/xm/Xamarin.Mac/System.IO.Compression.FileSystem.xml mode change 100644 => 100755 tools/apidiff/references/xm/Xamarin.Mac/System.IO.Compression.xml mode change 100644 => 100755 tools/apidiff/references/xm/Xamarin.Mac/System.Json.xml mode change 100644 => 100755 tools/apidiff/references/xm/Xamarin.Mac/System.Net.xml mode change 100644 => 100755 tools/apidiff/references/xm/Xamarin.Mac/System.Numerics.xml mode change 100644 => 100755 tools/apidiff/references/xm/Xamarin.Mac/System.Runtime.Serialization.xml mode change 100644 => 100755 tools/apidiff/references/xm/Xamarin.Mac/System.ServiceModel.Web.xml mode change 100644 => 100755 tools/apidiff/references/xm/Xamarin.Mac/System.ServiceModel.xml mode change 100644 => 100755 tools/apidiff/references/xm/Xamarin.Mac/System.Transactions.xml mode change 100644 => 100755 tools/apidiff/references/xm/Xamarin.Mac/System.Web.Services.xml mode change 100644 => 100755 tools/apidiff/references/xm/Xamarin.Mac/System.Windows.xml mode change 100644 => 100755 tools/apidiff/references/xm/Xamarin.Mac/System.Xml.Linq.xml mode change 100644 => 100755 tools/apidiff/references/xm/Xamarin.Mac/System.Xml.Serialization.xml mode change 100644 => 100755 tools/apidiff/references/xm/Xamarin.Mac/System.Xml.xml mode change 100644 => 100755 tools/apidiff/references/xm/Xamarin.Mac/System.xml mode change 100644 => 100755 tools/apidiff/references/xm/Xamarin.Mac/Xamarin.Mac.xml mode change 100644 => 100755 tools/apidiff/references/xm/Xamarin.Mac/mscorlib.xml diff --git a/tools/apidiff/references/xm/4.5/OpenTK.xml b/tools/apidiff/references/xm/4.5/OpenTK.xml old mode 100644 new mode 100755 diff --git a/tools/apidiff/references/xm/4.5/Xamarin.Mac.xml b/tools/apidiff/references/xm/4.5/Xamarin.Mac.xml old mode 100644 new mode 100755 index 9a1c1221bd..64271a7ddb --- a/tools/apidiff/references/xm/4.5/Xamarin.Mac.xml +++ b/tools/apidiff/references/xm/4.5/Xamarin.Mac.xml @@ -16,7 +16,7 @@ - + @@ -71813,6 +71813,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -92715,10 +92753,37 @@ - - + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + @@ -93563,6 +93628,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -93603,6 +93694,20 @@ + + + + + + + + + + + + + + @@ -94936,6 +95041,17 @@ + + + + + + + + + + + @@ -94949,6 +95065,17 @@ + + + + + + + + + + + @@ -94992,6 +95119,17 @@ + + + + + + + + + + + @@ -95020,6 +95158,17 @@ + + + + + + + + + + + @@ -95227,6 +95376,17 @@ + + + + + + + + + + + @@ -95477,6 +95637,17 @@ + + + + + + + + + + + @@ -95487,6 +95658,17 @@ + + + + + + + + + + + @@ -95521,6 +95703,17 @@ + + + + + + + + + + + @@ -95543,6 +95736,17 @@ + + + + + + + + + + + @@ -95705,6 +95909,17 @@ + + + + + + + + + + + @@ -218257,6 +218472,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -577750,6 +577993,545 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -577855,6 +578637,290 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -577925,6 +578991,18 @@ + + + + + + + + + + + + @@ -578410,6 +579488,7 @@ + @@ -628635,7 +629714,7 @@ - + @@ -757239,6 +758318,17 @@ + + + + + + + + + + + @@ -759719,6 +760809,96 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -760619,6 +761799,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + @@ -760703,6 +761907,27 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/tools/apidiff/references/xm/XamMac.CFNetwork.xml b/tools/apidiff/references/xm/XamMac.CFNetwork.xml old mode 100644 new mode 100755 diff --git a/tools/apidiff/references/xm/XamMac.xml b/tools/apidiff/references/xm/XamMac.xml old mode 100644 new mode 100755 index 85ed7bb88b..af8b8f0328 --- a/tools/apidiff/references/xm/XamMac.xml +++ b/tools/apidiff/references/xm/XamMac.xml @@ -16,7 +16,7 @@ - + @@ -124,7 +124,7 @@ - + @@ -73164,6 +73164,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -94156,10 +94194,37 @@ - - + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + @@ -95002,6 +95067,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -95042,6 +95133,20 @@ + + + + + + + + + + + + + + @@ -96372,6 +96477,17 @@ + + + + + + + + + + + @@ -96385,6 +96501,17 @@ + + + + + + + + + + + @@ -96428,6 +96555,17 @@ + + + + + + + + + + + @@ -96456,6 +96594,17 @@ + + + + + + + + + + + @@ -96618,6 +96767,17 @@ + + + + + + + + + + + @@ -96851,6 +97011,17 @@ + + + + + + + + + + + @@ -96861,6 +97032,17 @@ + + + + + + + + + + + @@ -96895,6 +97077,17 @@ + + + + + + + + + + + @@ -96917,6 +97110,17 @@ + + + + + + + + + + + @@ -97043,6 +97247,17 @@ + + + + + + + + + + + @@ -219708,6 +219923,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/tools/apidiff/references/xm/Xamarin.Mac/Mono.Data.Sqlite.xml b/tools/apidiff/references/xm/Xamarin.Mac/Mono.Data.Sqlite.xml old mode 100644 new mode 100755 diff --git a/tools/apidiff/references/xm/Xamarin.Mac/Mono.Data.Tds.xml b/tools/apidiff/references/xm/Xamarin.Mac/Mono.Data.Tds.xml old mode 100644 new mode 100755 diff --git a/tools/apidiff/references/xm/Xamarin.Mac/Mono.Security.xml b/tools/apidiff/references/xm/Xamarin.Mac/Mono.Security.xml old mode 100644 new mode 100755 diff --git a/tools/apidiff/references/xm/Xamarin.Mac/OpenTK.xml b/tools/apidiff/references/xm/Xamarin.Mac/OpenTK.xml old mode 100644 new mode 100755 diff --git a/tools/apidiff/references/xm/Xamarin.Mac/System.ComponentModel.Composition.xml b/tools/apidiff/references/xm/Xamarin.Mac/System.ComponentModel.Composition.xml old mode 100644 new mode 100755 diff --git a/tools/apidiff/references/xm/Xamarin.Mac/System.ComponentModel.DataAnnotations.xml b/tools/apidiff/references/xm/Xamarin.Mac/System.ComponentModel.DataAnnotations.xml old mode 100644 new mode 100755 diff --git a/tools/apidiff/references/xm/Xamarin.Mac/System.Core.xml b/tools/apidiff/references/xm/Xamarin.Mac/System.Core.xml old mode 100644 new mode 100755 diff --git a/tools/apidiff/references/xm/Xamarin.Mac/System.Data.Services.Client.xml b/tools/apidiff/references/xm/Xamarin.Mac/System.Data.Services.Client.xml old mode 100644 new mode 100755 diff --git a/tools/apidiff/references/xm/Xamarin.Mac/System.Data.xml b/tools/apidiff/references/xm/Xamarin.Mac/System.Data.xml old mode 100644 new mode 100755 diff --git a/tools/apidiff/references/xm/Xamarin.Mac/System.IO.Compression.FileSystem.xml b/tools/apidiff/references/xm/Xamarin.Mac/System.IO.Compression.FileSystem.xml old mode 100644 new mode 100755 diff --git a/tools/apidiff/references/xm/Xamarin.Mac/System.IO.Compression.xml b/tools/apidiff/references/xm/Xamarin.Mac/System.IO.Compression.xml old mode 100644 new mode 100755 diff --git a/tools/apidiff/references/xm/Xamarin.Mac/System.Json.xml b/tools/apidiff/references/xm/Xamarin.Mac/System.Json.xml old mode 100644 new mode 100755 diff --git a/tools/apidiff/references/xm/Xamarin.Mac/System.Net.xml b/tools/apidiff/references/xm/Xamarin.Mac/System.Net.xml old mode 100644 new mode 100755 diff --git a/tools/apidiff/references/xm/Xamarin.Mac/System.Numerics.xml b/tools/apidiff/references/xm/Xamarin.Mac/System.Numerics.xml old mode 100644 new mode 100755 diff --git a/tools/apidiff/references/xm/Xamarin.Mac/System.Runtime.Serialization.xml b/tools/apidiff/references/xm/Xamarin.Mac/System.Runtime.Serialization.xml old mode 100644 new mode 100755 diff --git a/tools/apidiff/references/xm/Xamarin.Mac/System.ServiceModel.Web.xml b/tools/apidiff/references/xm/Xamarin.Mac/System.ServiceModel.Web.xml old mode 100644 new mode 100755 diff --git a/tools/apidiff/references/xm/Xamarin.Mac/System.ServiceModel.xml b/tools/apidiff/references/xm/Xamarin.Mac/System.ServiceModel.xml old mode 100644 new mode 100755 diff --git a/tools/apidiff/references/xm/Xamarin.Mac/System.Transactions.xml b/tools/apidiff/references/xm/Xamarin.Mac/System.Transactions.xml old mode 100644 new mode 100755 diff --git a/tools/apidiff/references/xm/Xamarin.Mac/System.Web.Services.xml b/tools/apidiff/references/xm/Xamarin.Mac/System.Web.Services.xml old mode 100644 new mode 100755 diff --git a/tools/apidiff/references/xm/Xamarin.Mac/System.Windows.xml b/tools/apidiff/references/xm/Xamarin.Mac/System.Windows.xml old mode 100644 new mode 100755 diff --git a/tools/apidiff/references/xm/Xamarin.Mac/System.Xml.Linq.xml b/tools/apidiff/references/xm/Xamarin.Mac/System.Xml.Linq.xml old mode 100644 new mode 100755 diff --git a/tools/apidiff/references/xm/Xamarin.Mac/System.Xml.Serialization.xml b/tools/apidiff/references/xm/Xamarin.Mac/System.Xml.Serialization.xml old mode 100644 new mode 100755 diff --git a/tools/apidiff/references/xm/Xamarin.Mac/System.Xml.xml b/tools/apidiff/references/xm/Xamarin.Mac/System.Xml.xml old mode 100644 new mode 100755 diff --git a/tools/apidiff/references/xm/Xamarin.Mac/System.xml b/tools/apidiff/references/xm/Xamarin.Mac/System.xml old mode 100644 new mode 100755 diff --git a/tools/apidiff/references/xm/Xamarin.Mac/Xamarin.Mac.xml b/tools/apidiff/references/xm/Xamarin.Mac/Xamarin.Mac.xml old mode 100644 new mode 100755 index 76891f8016..2f893813dc --- a/tools/apidiff/references/xm/Xamarin.Mac/Xamarin.Mac.xml +++ b/tools/apidiff/references/xm/Xamarin.Mac/Xamarin.Mac.xml @@ -16,7 +16,7 @@ - + @@ -71812,6 +71812,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -92714,10 +92752,37 @@ - - + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + @@ -93562,6 +93627,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -93602,6 +93693,20 @@ + + + + + + + + + + + + + + @@ -94935,6 +95040,17 @@ + + + + + + + + + + + @@ -94948,6 +95064,17 @@ + + + + + + + + + + + @@ -94991,6 +95118,17 @@ + + + + + + + + + + + @@ -95019,6 +95157,17 @@ + + + + + + + + + + + @@ -95226,6 +95375,17 @@ + + + + + + + + + + + @@ -95476,6 +95636,17 @@ + + + + + + + + + + + @@ -95486,6 +95657,17 @@ + + + + + + + + + + + @@ -95520,6 +95702,17 @@ + + + + + + + + + + + @@ -95542,6 +95735,17 @@ + + + + + + + + + + + @@ -95704,6 +95908,17 @@ + + + + + + + + + + + @@ -218268,6 +218483,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -577809,6 +578052,545 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -577914,6 +578696,290 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -577984,6 +579050,18 @@ + + + + + + + + + + + + @@ -578469,6 +579547,7 @@ + @@ -628679,7 +629758,7 @@ - + @@ -758383,6 +759462,17 @@ + + + + + + + + + + + @@ -760863,6 +761953,96 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -761763,6 +762943,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + @@ -761847,6 +763051,27 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/tools/apidiff/references/xm/Xamarin.Mac/mscorlib.xml b/tools/apidiff/references/xm/Xamarin.Mac/mscorlib.xml old mode 100644 new mode 100755 From e6ce94b038fc09e3145d9195a1bea57920689862 Mon Sep 17 00:00:00 2001 From: Sebastien Pouliot Date: Wed, 20 Sep 2017 02:32:54 -0400 Subject: [PATCH 003/145] Bump maccore to get latest dependencies, including xcode9 support (#2727) --- mk/xamarin.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mk/xamarin.mk b/mk/xamarin.mk index 3e0311a37c..2de000160f 100644 --- a/mk/xamarin.mk +++ b/mk/xamarin.mk @@ -1,5 +1,5 @@ ifdef ENABLE_XAMARIN -NEEDED_MACCORE_VERSION := 3f2a0e6cf4c8549d9582703ca71d28df8724e294 +NEEDED_MACCORE_VERSION := 1f4948d28255d013cbf7e982018b849e656ad233 NEEDED_MACCORE_BRANCH := d15-5 MACCORE_DIRECTORY := maccore From 1c04b18e045cdb87eb83bac4b451f1e237df168e Mon Sep 17 00:00:00 2001 From: Sebastien Pouliot Date: Wed, 20 Sep 2017 22:44:15 -0400 Subject: [PATCH 004/145] [foundation] Remove [Preserve(Conditional=true)] on the NSProxy hack (#2732) (#2734) The attribute is not needed and makes everything link against WebKit even when not needed. Also update comment to be more accurate. Update fix for https://bugzilla.xamarin.com/show_bug.cgi?id=59247 Adds test to verify presence/absence of NSProxy depending on WKWebView usage --- src/Foundation/NSProxy.cs | 7 +++---- tests/linker-ios/link all/LinkAllTest.cs | 9 +++++++++ tests/linker-ios/link sdk/LinkSdkRegressionTest.cs | 12 ++++++++++++ 3 files changed, 24 insertions(+), 4 deletions(-) diff --git a/src/Foundation/NSProxy.cs b/src/Foundation/NSProxy.cs index 6763f20738..6d7838fb5e 100644 --- a/src/Foundation/NSProxy.cs +++ b/src/Foundation/NSProxy.cs @@ -27,11 +27,10 @@ namespace XamCore.Foundation { } namespace XamCore.WebKit { - // We need to keep NSProxy (avoid linking it) if WKNavigationDelegate or IWKNavigationDelegate - // is used. Unfortunately [Preserve] can't help us here because we do not generate partial - // interfaces rigth now, so we know WKWebView will be there and can hold a reference to it. + // We need to keep NSProxy if WKNavigationDelegate or IWKNavigationDelegate are used + // This cannot be done on an interface but the protocol won't be used without a WKWebView + // so a reference (from the static constructor) ensure NSProxy will be available public partial class WKWebView { - [Preserve (Conditional = true)] static Type hack = typeof (NSProxy); } } diff --git a/tests/linker-ios/link all/LinkAllTest.cs b/tests/linker-ios/link all/LinkAllTest.cs index 45d6d17650..b5fd67d055 100644 --- a/tests/linker-ios/link all/LinkAllTest.cs +++ b/tests/linker-ios/link all/LinkAllTest.cs @@ -533,5 +533,14 @@ namespace LinkAll { var fqn = typeof (NSObject).AssemblyQualifiedName.Replace ("Foundation.NSObject", "Security.Tls.AppleTlsProvider"); Assert.Null (Type.GetType (fqn), "Should NOT be included (no SslStream or Socket support)"); } + + [Test] + // https://bugzilla.xamarin.com/show_bug.cgi?id=59247 + public void WebKit_NSProxy () + { + // this test works only because "Link all" does not use WebKit + var fqn = typeof (NSObject).AssemblyQualifiedName.Replace ("Foundation.NSObject", "Foundation.NSProxy"); + Assert.Null (Type.GetType (fqn), fqn); + } } } diff --git a/tests/linker-ios/link sdk/LinkSdkRegressionTest.cs b/tests/linker-ios/link sdk/LinkSdkRegressionTest.cs index 48c4c62e0e..7f4c6e15d5 100644 --- a/tests/linker-ios/link sdk/LinkSdkRegressionTest.cs +++ b/tests/linker-ios/link sdk/LinkSdkRegressionTest.cs @@ -38,6 +38,7 @@ using UIKit; #if !__WATCHOS__ using OpenGLES; #endif +using WebKit; #else using MonoTouch; using MonoTouch.AddressBook; @@ -50,6 +51,7 @@ using MonoTouch.ObjCRuntime; using MonoTouch.MapKit; using MonoTouch.UIKit; using MonoTouch.OpenGLES; +using MonoTouch.WebKit; #endif using NUnit.Framework; @@ -1048,5 +1050,15 @@ namespace LinkSdk { var fqn = typeof (NSObject).AssemblyQualifiedName.Replace ("Foundation.NSObject", "Security.Tls.AppleTlsProvider"); Assert.Null (Type.GetType (fqn), "Should be included"); } + + [Test] + // https://bugzilla.xamarin.com/show_bug.cgi?id=59247 + public void WebKit_NSProxy () + { + // a reference to WKWebView will bring the internal NSProxy type + var t = typeof (WKWebView); + var fqn = typeof (NSObject).AssemblyQualifiedName.Replace ("Foundation.NSObject", "Foundation.NSProxy"); + Assert.NotNull (Type.GetType (fqn), fqn); + } } } \ No newline at end of file From c39e6edd98030140b36302186de2baf92ee1e787 Mon Sep 17 00:00:00 2001 From: Emanuel Fernandez Dell'Oca Date: Thu, 21 Sep 2017 05:13:57 -0300 Subject: [PATCH 005/145] [msbuild] Check Microsoft.NET.Build.Extensions.Tasks.dll exists before using it (#2719) The existence of Microsoft.NET.Build.Extensions.Tasks.dll depends on the installed workloads on VS. -Note: For XI/XM projects referencing a ns2.0 project the build will continue failing (with a different error message) if the dependency does not exist, because the GetDependsOnNETStandard task is being skipped. Fixes Bug #59588 - XI GetDependsOnNETStandard task could not be loaded from Microsoft.NET.Build.Extensions.Tasks.dll https://bugzilla.xamarin.com/show_bug.cgi?id=59588 --- .../Xamarin.Mac.Common.ImplicitFacade.msbuild.targets | 5 +++-- msbuild/Xamarin.iOS.Tasks.Core/Xamarin.iOS.Common.targets | 5 +++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/msbuild/Xamarin.Mac.Tasks/Xamarin.Mac.Common.ImplicitFacade.msbuild.targets b/msbuild/Xamarin.Mac.Tasks/Xamarin.Mac.Common.ImplicitFacade.msbuild.targets index e668f779cf..ee2d88f931 100644 --- a/msbuild/Xamarin.Mac.Tasks/Xamarin.Mac.Common.ImplicitFacade.msbuild.targets +++ b/msbuild/Xamarin.Mac.Tasks/Xamarin.Mac.Common.ImplicitFacade.msbuild.targets @@ -36,7 +36,7 @@ Copyright (c) 2017 Microsoft Corp. (www.microsoft.com) @@ -63,7 +63,8 @@ Copyright (c) 2017 Microsoft Corp. (www.microsoft.com) If $(_HasReferenceToSystemRuntime) is true, then the facades are going to be expanded anyway, so don't run this. --> diff --git a/msbuild/Xamarin.iOS.Tasks.Core/Xamarin.iOS.Common.targets b/msbuild/Xamarin.iOS.Tasks.Core/Xamarin.iOS.Common.targets index f601b56c04..318e6cd226 100644 --- a/msbuild/Xamarin.iOS.Tasks.Core/Xamarin.iOS.Common.targets +++ b/msbuild/Xamarin.iOS.Tasks.Core/Xamarin.iOS.Common.targets @@ -158,7 +158,7 @@ Copyright (C) 2013-2016 Xamarin. All rights reserved. @@ -185,7 +185,8 @@ Copyright (C) 2013-2016 Xamarin. All rights reserved. If $(_HasReferenceToSystemRuntime) is true, then the facades are going to be expanded anyway, so don't run this. --> From 70728f507d9ae711da37ed17e438b3828dbf3d18 Mon Sep 17 00:00:00 2001 From: Sebastien Pouliot Date: Thu, 21 Sep 2017 10:52:18 -0400 Subject: [PATCH 006/145] [tests][monotouch] Fix GKAgent3D not to run before iOS 9 (#2733) (#2735) --- tests/monotouch-test/GameplayKit/GKAgent3DTest.cs | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/tests/monotouch-test/GameplayKit/GKAgent3DTest.cs b/tests/monotouch-test/GameplayKit/GKAgent3DTest.cs index e20b39d8e2..656e6894c5 100644 --- a/tests/monotouch-test/GameplayKit/GKAgent3DTest.cs +++ b/tests/monotouch-test/GameplayKit/GKAgent3DTest.cs @@ -35,6 +35,13 @@ namespace MonoTouchFixtures.GamePlayKit [Preserve (AllMembers = true)] public class GKAgent3DTest { + [SetUp] + public void Setup () + { + if (!TestRuntime.CheckXcodeVersion (7, 0)) + Assert.Ignore ("Ignoring GameplayKit tests: Requires iOS9+"); + } + [Test] public void RotationTest () { From ea03366e617beeca5699a8037d9660ce2e16c466 Mon Sep 17 00:00:00 2001 From: Sebastien Pouliot Date: Thu, 21 Sep 2017 11:30:13 -0400 Subject: [PATCH 007/145] Bump maccore (maciostools) to bring all the required xcode9 changes and fix simulator failures on wrench (#2736) --- mk/xamarin.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mk/xamarin.mk b/mk/xamarin.mk index 2de000160f..85b6cbf03b 100644 --- a/mk/xamarin.mk +++ b/mk/xamarin.mk @@ -1,5 +1,5 @@ ifdef ENABLE_XAMARIN -NEEDED_MACCORE_VERSION := 1f4948d28255d013cbf7e982018b849e656ad233 +NEEDED_MACCORE_VERSION := f55b0f66537c833a54f73b971fad615088f127ba NEEDED_MACCORE_BRANCH := d15-5 MACCORE_DIRECTORY := maccore From 3d139a33150d47a9e51b03fc29cf792b97ada9f1 Mon Sep 17 00:00:00 2001 From: Chris Hamons Date: Fri, 22 Sep 2017 09:03:00 -0500 Subject: [PATCH 008/145] Disable link-keep-resources-2 in d15-5 branch (#2744) - A change in mono added a small xml file to the resources, causing the test to fail - Fix exists in mono/linker but 20 commits behind head, took risky to bump just for a test fix - https://bugzilla.xamarin.com/show_bug.cgi?id=59277 --- tests/mmptest/regression/Makefile | 1 - 1 file changed, 1 deletion(-) diff --git a/tests/mmptest/regression/Makefile b/tests/mmptest/regression/Makefile index 88fba7a6be..7e0271c9e2 100644 --- a/tests/mmptest/regression/Makefile +++ b/tests/mmptest/regression/Makefile @@ -17,7 +17,6 @@ TESTS_4_0 = \ link-posix-2 \ link-system.web-icalls \ link-keep-resources-1 \ - link-keep-resources-2 \ link-preserve-assembly \ link-uithread-1 \ link-uithread-2 \ From 8b0992574a97bec4bc1324ed0a049538cdc67d55 Mon Sep 17 00:00:00 2001 From: Sebastien Pouliot Date: Fri, 22 Sep 2017 12:04:37 -0400 Subject: [PATCH 009/145] [tests] Fix linksdk WebKit_NSProxy test. Fixes #59671 (#2746) (#2756) In release (optimize) mode the compiler would eliminate the unused > var t = typeof (WKWebView); which means the linker would never see `WKWebView`, which in turns removed `NSProxy`. Original bug: https://bugzilla.xamarin.com/show_bug.cgi?id=59247 Original PR: https://github.com/xamarin/xamarin-macios/pull/2732 https://bugzilla.xamarin.com/show_bug.cgi?id=59671 --- tests/linker-ios/link sdk/LinkSdkRegressionTest.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/linker-ios/link sdk/LinkSdkRegressionTest.cs b/tests/linker-ios/link sdk/LinkSdkRegressionTest.cs index 7f4c6e15d5..e49b2bfc85 100644 --- a/tests/linker-ios/link sdk/LinkSdkRegressionTest.cs +++ b/tests/linker-ios/link sdk/LinkSdkRegressionTest.cs @@ -1057,6 +1057,7 @@ namespace LinkSdk { { // a reference to WKWebView will bring the internal NSProxy type var t = typeof (WKWebView); + Assert.NotNull (t, "avoid compiler optimization of unused variable"); var fqn = typeof (NSObject).AssemblyQualifiedName.Replace ("Foundation.NSObject", "Foundation.NSProxy"); Assert.NotNull (Type.GetType (fqn), fqn); } From 4bb8d79e7da1d0b8ec9c4a81f730e59dd632faf7 Mon Sep 17 00:00:00 2001 From: Chris Hamons Date: Fri, 22 Sep 2017 15:45:45 -0500 Subject: [PATCH 010/145] [macos] Add objc_msgSends to un-break classic API (#2757) (#2762) - https://bugzilla.xamarin.com/show_bug.cgi?id=59673 --- src/ObjCRuntime/Messaging.mac.cs | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/ObjCRuntime/Messaging.mac.cs b/src/ObjCRuntime/Messaging.mac.cs index 0e4a0570d2..2ec01d9699 100644 --- a/src/ObjCRuntime/Messaging.mac.cs +++ b/src/ObjCRuntime/Messaging.mac.cs @@ -581,6 +581,23 @@ namespace XamCore.ObjCRuntime { [DllImport (LIBOBJC_DYLIB, EntryPoint="objc_msgSend_stret")] public extern static void SizeF_objc_msgSend_stret_int (out global::System.Drawing.SizeF retval, IntPtr receiver, IntPtr selector, int arg1); + [DllImport (LIBOBJC_DYLIB, EntryPoint="objc_msgSendSuper")] + public extern static uint UInt32_objc_msgSendSuper_IntPtr_NSRange (IntPtr receiver, IntPtr selector, IntPtr arg1, MonoMac.Foundation.NSRange arg2); + + [DllImport (LIBOBJC_DYLIB, EntryPoint="objc_msgSend")] + public extern static uint UInt32_objc_msgSend_IntPtr_NSRange (IntPtr receiver, IntPtr selector, IntPtr arg1, MonoMac.Foundation.NSRange arg2); + + [DllImport (LIBOBJC_DYLIB, EntryPoint="objc_msgSendSuper")] + public extern static int int_objc_msgSendSuper_NSRange_IntPtr_IntPtr_IntPtr_IntPtr (IntPtr receiver, IntPtr selector, MonoMac.Foundation.NSRange arg1, IntPtr arg2, IntPtr arg3, IntPtr arg4, IntPtr arg5); + + [DllImport (LIBOBJC_DYLIB, EntryPoint="objc_msgSendSuper")] + public extern static int int_objc_msgSendSuper_NSRange_IntPtr_IntPtr_IntPtr_IntPtr_IntPtr (IntPtr receiver, IntPtr selector, MonoMac.Foundation.NSRange arg1, IntPtr arg2, IntPtr arg3, IntPtr arg4, IntPtr arg5, IntPtr arg6); + + [DllImport (LIBOBJC_DYLIB, EntryPoint="objc_msgSend")] + public extern static int int_objc_msgSend_NSRange_IntPtr_IntPtr_IntPtr_IntPtr (IntPtr receiver, IntPtr selector, MonoMac.Foundation.NSRange arg1, IntPtr arg2, IntPtr arg3, IntPtr arg4, IntPtr arg5); + + [DllImport (LIBOBJC_DYLIB, EntryPoint="objc_msgSend")] + public extern static int int_objc_msgSend_NSRange_IntPtr_IntPtr_IntPtr_IntPtr_IntPtr (IntPtr receiver, IntPtr selector, MonoMac.Foundation.NSRange arg1, IntPtr arg2, IntPtr arg3, IntPtr arg4, IntPtr arg5, IntPtr arg6); #endif From 333560445420f2ef209bbd0a3e3f81b8a4997e9a Mon Sep 17 00:00:00 2001 From: Rolf Bjarne Kvinge Date: Mon, 25 Sep 2017 16:16:07 +0200 Subject: [PATCH 011/145] [xharness] Add support for generating only specific variations for iOS projects. Fixes #57529 (#2751) (#2767) And use it to skip watchOS tests for Mono.Security, since we don't ship Mono.Security.dll for watchOS. https://bugzilla.xamarin.com/show_bug.cgi?id=57529 --- tests/xharness/Harness.cs | 88 ++++++++++++--------- tests/xharness/Jenkins.cs | 118 ++++++++++++++-------------- tests/xharness/MakefileGenerator.cs | 105 +++++++++++++++++-------- tests/xharness/Program.cs | 8 +- tests/xharness/TVOSTarget.cs | 2 +- tests/xharness/TestProject.cs | 16 ++++ tests/xharness/UnifiedTarget.cs | 2 +- tests/xharness/WatchOSTarget.cs | 2 +- tests/xharness/iOSTarget.cs | 10 +++ tests/xharness/xharness.csproj | 1 + 10 files changed, 217 insertions(+), 135 deletions(-) create mode 100644 tests/xharness/iOSTarget.cs diff --git a/tests/xharness/Harness.cs b/tests/xharness/Harness.cs index 7ef270839f..d30036386b 100644 --- a/tests/xharness/Harness.cs +++ b/tests/xharness/Harness.cs @@ -90,7 +90,7 @@ namespace xharness } } - public List IOSTestProjects { get; set; } = new List (); + public List IOSTestProjects { get; set; } = new List (); public List MacTestProjects { get; set; } = new List (); public List IOSBclTests { get; set; } = new List (); @@ -308,26 +308,31 @@ namespace xharness var fsharp_test_suites = new string [] { "fsharp" }; var fsharp_library_projects = new string [] { "fsharplibrary" }; var bcl_suites = new string [] { "mscorlib", "System", "System.Core", "System.Data", "System.Net.Http", "System.Numerics", "System.Runtime.Serialization", "System.Transactions", "System.Web.Services", "System.Xml", "System.Xml.Linq", "Mono.Security", "System.ComponentModel.DataAnnotations", "System.Json", "System.ServiceModel.Web", "Mono.Data.Sqlite" }; - IOSTestProjects.Add (new TestProject (Path.GetFullPath (Path.Combine (RootDirectory, "bcl-test/mscorlib/mscorlib-0.csproj")), false)); - IOSTestProjects.Add (new TestProject (Path.GetFullPath (Path.Combine (RootDirectory, "bcl-test/mscorlib/mscorlib-1.csproj")), false)); + var bcl_skip_watchos = new string [] { + "Mono.Security", + }; + IOSTestProjects.Add (new iOSTestProject (Path.GetFullPath (Path.Combine (RootDirectory, "bcl-test/mscorlib/mscorlib-0.csproj")), false)); + IOSTestProjects.Add (new iOSTestProject (Path.GetFullPath (Path.Combine (RootDirectory, "bcl-test/mscorlib/mscorlib-1.csproj")), false)); foreach (var p in test_suites) - IOSTestProjects.Add (new TestProject (Path.GetFullPath (Path.Combine (RootDirectory, p + "/" + p + ".csproj")))); + IOSTestProjects.Add (new iOSTestProject (Path.GetFullPath (Path.Combine (RootDirectory, p + "/" + p + ".csproj")))); foreach (var p in fsharp_test_suites) - IOSTestProjects.Add (new TestProject (Path.GetFullPath (Path.Combine (RootDirectory, p + "/" + p + ".fsproj")))); + IOSTestProjects.Add (new iOSTestProject (Path.GetFullPath (Path.Combine (RootDirectory, p + "/" + p + ".fsproj")))); foreach (var p in library_projects) - IOSTestProjects.Add (new TestProject (Path.GetFullPath (Path.Combine (RootDirectory, p + "/" + p + ".csproj")), false)); + IOSTestProjects.Add (new iOSTestProject (Path.GetFullPath (Path.Combine (RootDirectory, p + "/" + p + ".csproj")), false)); foreach (var p in fsharp_library_projects) - IOSTestProjects.Add (new TestProject (Path.GetFullPath (Path.Combine (RootDirectory, p + "/" + p + ".fsproj")), false)); + IOSTestProjects.Add (new iOSTestProject (Path.GetFullPath (Path.Combine (RootDirectory, p + "/" + p + ".fsproj")), false)); foreach (var p in bcl_suites) { - IOSTestProjects.Add (new TestProject (Path.GetFullPath (Path.Combine (RootDirectory, "bcl-test/" + p + "/" + p + ".csproj")))); + IOSTestProjects.Add (new iOSTestProject (Path.GetFullPath (Path.Combine (RootDirectory, "bcl-test/" + p + "/" + p + ".csproj"))) { + SkipwatchOSVariation = bcl_skip_watchos.Contains (p), + }); IOSBclTests.Add (new BCLTest (p)); } - IOSTestProjects.Add (new TestProject (Path.GetFullPath (Path.Combine (RootDirectory, "introspection", "iOS", "introspection-ios.csproj"))) { Name = "introspection" }); - IOSTestProjects.Add (new TestProject (Path.GetFullPath (Path.Combine (RootDirectory, "linker-ios", "dont link", "dont link.csproj")))); - IOSTestProjects.Add (new TestProject (Path.GetFullPath (Path.Combine (RootDirectory, "linker-ios", "link all", "link all.csproj")))); - IOSTestProjects.Add (new TestProject (Path.GetFullPath (Path.Combine (RootDirectory, "linker-ios", "link sdk", "link sdk.csproj")))); + IOSTestProjects.Add (new iOSTestProject (Path.GetFullPath (Path.Combine (RootDirectory, "introspection", "iOS", "introspection-ios.csproj"))) { Name = "introspection" }); + IOSTestProjects.Add (new iOSTestProject (Path.GetFullPath (Path.Combine (RootDirectory, "linker-ios", "dont link", "dont link.csproj")))); + IOSTestProjects.Add (new iOSTestProject (Path.GetFullPath (Path.Combine (RootDirectory, "linker-ios", "link all", "link all.csproj")))); + IOSTestProjects.Add (new iOSTestProject (Path.GetFullPath (Path.Combine (RootDirectory, "linker-ios", "link sdk", "link sdk.csproj")))); WatchOSContainerTemplate = Path.GetFullPath (Path.Combine (RootDirectory, "templates/WatchContainer")); WatchOSAppTemplate = Path.GetFullPath (Path.Combine (RootDirectory, "templates/WatchApp")); @@ -472,34 +477,43 @@ namespace xharness if (!File.Exists (file)) throw new FileNotFoundException (file); - var watchos = new WatchOSTarget () { - TemplateProjectPath = file, - Harness = this, - }; - watchos.Execute (); - watchos_targets.Add (watchos); + if (!proj.SkipwatchOSVariation) { + var watchos = new WatchOSTarget () { + TemplateProjectPath = file, + Harness = this, + TestProject = proj, + }; + watchos.Execute (); + watchos_targets.Add (watchos); + } - var tvos = new TVOSTarget () { - TemplateProjectPath = file, - Harness = this, - }; - tvos.Execute (); - tvos_targets.Add (tvos); + if (!proj.SkiptvOSVariation) { + var tvos = new TVOSTarget () { + TemplateProjectPath = file, + Harness = this, + TestProject = proj, + }; + tvos.Execute (); + tvos_targets.Add (tvos); + } - var unified = new UnifiedTarget () { - TemplateProjectPath = file, - Harness = this, - }; - unified.Execute (); - unified_targets.Add (unified); + if (!proj.SkipiOSVariation) { + var unified = new UnifiedTarget () { + TemplateProjectPath = file, + Harness = this, + TestProject = proj, + }; + unified.Execute (); + unified_targets.Add (unified); - var today = new TodayExtensionTarget - { - TemplateProjectPath = file, - Harness = this, - }; - today.Execute (); - today_targets.Add (today); + var today = new TodayExtensionTarget { + TemplateProjectPath = file, + Harness = this, + TestProject = proj, + }; + today.Execute (); + today_targets.Add (today); + } } SolutionGenerator.CreateSolution (this, watchos_targets, "watchos"); diff --git a/tests/xharness/Jenkins.cs b/tests/xharness/Jenkins.cs index 68b34c30ba..34cc6d9a6f 100644 --- a/tests/xharness/Jenkins.cs +++ b/tests/xharness/Jenkins.cs @@ -148,64 +148,65 @@ namespace xharness bool ignored = !IncludeDevice; if (!IsIncluded (project)) ignored = true; - - var build64 = new XBuildTask - { - Jenkins = this, - TestProject = project, - ProjectConfiguration = "Debug64", - ProjectPlatform = "iPhone", - Platform = TestPlatform.iOS_Unified64, - TestName = project.Name, - }; - rv.Add (new RunDeviceTask (build64, Devices.ConnectedDevices.Where ((dev) => dev.DevicePlatform == DevicePlatform.iOS && dev.Supports64Bit)) { Ignored = ignored || !IncludeiOS }); - var build32 = new XBuildTask - { - Jenkins = this, - TestProject = project, - ProjectConfiguration = "Debug32", - ProjectPlatform = "iPhone", - Platform = TestPlatform.iOS_Unified32, - TestName = project.Name, - }; - rv.Add (new RunDeviceTask (build32, Devices.ConnectedDevices.Where ((dev) => dev.DevicePlatform == DevicePlatform.iOS)) { Ignored = ignored || !IncludeiOS }); + if (!project.SkipiOSVariation) { + var build64 = new XBuildTask { + Jenkins = this, + TestProject = project, + ProjectConfiguration = "Debug64", + ProjectPlatform = "iPhone", + Platform = TestPlatform.iOS_Unified64, + TestName = project.Name, + }; + rv.Add (new RunDeviceTask (build64, Devices.ConnectedDevices.Where ((dev) => dev.DevicePlatform == DevicePlatform.iOS && dev.Supports64Bit)) { Ignored = ignored || !IncludeiOS }); - var todayProject = project.AsTodayExtensionProject (); - var buildToday = new XBuildTask - { - Jenkins = this, - TestProject = todayProject, - ProjectConfiguration = "Debug64", - ProjectPlatform = "iPhone", - Platform = TestPlatform.iOS_TodayExtension64, - TestName = project.Name, - }; - rv.Add (new RunDeviceTask (buildToday, Devices.ConnectedDevices.Where ((dev) => dev.DevicePlatform == DevicePlatform.iOS && dev.Supports64Bit)) { Ignored = ignored || !IncludeiOSExtensions }); + var build32 = new XBuildTask { + Jenkins = this, + TestProject = project, + ProjectConfiguration = "Debug32", + ProjectPlatform = "iPhone", + Platform = TestPlatform.iOS_Unified32, + TestName = project.Name, + }; + rv.Add (new RunDeviceTask (build32, Devices.ConnectedDevices.Where ((dev) => dev.DevicePlatform == DevicePlatform.iOS)) { Ignored = ignored || !IncludeiOS }); - var tvOSProject = project.AsTvOSProject (); - var buildTV = new XBuildTask - { - Jenkins = this, - TestProject = tvOSProject, - ProjectConfiguration = "Debug", - ProjectPlatform = "iPhone", - Platform = TestPlatform.tvOS, - TestName = project.Name, - }; - rv.Add (new RunDeviceTask (buildTV, Devices.ConnectedDevices.Where ((dev) => dev.DevicePlatform == DevicePlatform.tvOS)) { Ignored = ignored || !IncludetvOS }); + var todayProject = project.AsTodayExtensionProject (); + var buildToday = new XBuildTask { + Jenkins = this, + TestProject = todayProject, + ProjectConfiguration = "Debug64", + ProjectPlatform = "iPhone", + Platform = TestPlatform.iOS_TodayExtension64, + TestName = project.Name, + }; + rv.Add (new RunDeviceTask (buildToday, Devices.ConnectedDevices.Where ((dev) => dev.DevicePlatform == DevicePlatform.iOS && dev.Supports64Bit)) { Ignored = ignored || !IncludeiOSExtensions }); + } - var watchOSProject = project.AsWatchOSProject (); - var buildWatch = new XBuildTask - { - Jenkins = this, - TestProject = watchOSProject, - ProjectConfiguration = "Debug", - ProjectPlatform = "iPhone", - Platform = TestPlatform.watchOS, - TestName = project.Name, - }; - rv.Add (new RunDeviceTask (buildWatch, Devices.ConnectedDevices.Where ((dev) => dev.DevicePlatform == DevicePlatform.watchOS)){ Ignored = ignored || !IncludewatchOS }); + if (!project.SkiptvOSVariation) { + var tvOSProject = project.AsTvOSProject (); + var buildTV = new XBuildTask { + Jenkins = this, + TestProject = tvOSProject, + ProjectConfiguration = "Debug", + ProjectPlatform = "iPhone", + Platform = TestPlatform.tvOS, + TestName = project.Name, + }; + rv.Add (new RunDeviceTask (buildTV, Devices.ConnectedDevices.Where ((dev) => dev.DevicePlatform == DevicePlatform.tvOS)) { Ignored = ignored || !IncludetvOS }); + } + + if (!project.SkipwatchOSVariation) { + var watchOSProject = project.AsWatchOSProject (); + var buildWatch = new XBuildTask { + Jenkins = this, + TestProject = watchOSProject, + ProjectConfiguration = "Debug", + ProjectPlatform = "iPhone", + Platform = TestPlatform.watchOS, + TestName = project.Name, + }; + rv.Add (new RunDeviceTask (buildWatch, Devices.ConnectedDevices.Where ((dev) => dev.DevicePlatform == DevicePlatform.watchOS)) { Ignored = ignored || !IncludewatchOS }); + } } var assembly_build_targets = new [] @@ -449,9 +450,12 @@ namespace xharness ignored = true; var ps = new List> (); - ps.Add (new Tuple (project, TestPlatform.iOS_Unified, ignored || !IncludeiOS)); - ps.Add (new Tuple (project.AsTvOSProject (), TestPlatform.tvOS, ignored || !IncludetvOS)); - ps.Add (new Tuple (project.AsWatchOSProject (), TestPlatform.watchOS, ignored || !IncludewatchOS)); + if (!project.SkipiOSVariation) + ps.Add (new Tuple (project, TestPlatform.iOS_Unified, ignored || !IncludeiOS)); + if (!project.SkiptvOSVariation) + ps.Add (new Tuple (project.AsTvOSProject (), TestPlatform.tvOS, ignored || !IncludetvOS)); + if (!project.SkipwatchOSVariation) + ps.Add (new Tuple (project.AsWatchOSProject (), TestPlatform.watchOS, ignored || !IncludewatchOS)); foreach (var pair in ps) { var derived = new XBuildTask () { Jenkins = this, diff --git a/tests/xharness/MakefileGenerator.cs b/tests/xharness/MakefileGenerator.cs index d28f8abdca..916181d929 100644 --- a/tests/xharness/MakefileGenerator.cs +++ b/tests/xharness/MakefileGenerator.cs @@ -275,7 +275,7 @@ namespace xharness writer.WriteLine ("\t$(Q) touch $@"); writer.WriteLine (); - var allTargets = new List (); + var allTargets = new List (); allTargets.AddRange (unified_targets); allTargets.AddRange (tvos_targets); allTargets.AddRange (watchos_targets); @@ -608,9 +608,9 @@ namespace xharness writer.WriteLine ("\t$(Q) if test -e \".$@-failure.stamp\"; then cat \".$@-failure.stamp\"; rm \".$@-failure.stamp\"; exit 1; fi"); foreach (var mode in new string [] { "sim", "dev" }) { - WriteCollectionTarget (writer, "run-ios-" + mode, unified_targets.Where ((v) => v.IsExe), mode); - WriteCollectionTarget (writer, "run-tvos-" + mode, tvos_targets.Where ((v) => v.IsExe), mode); - WriteCollectionTarget (writer, "run-watchos-" + mode, watchos_targets.Where ((v) => v.IsExe), mode); + WriteCollectionTarget (writer, "run-ios-" + mode, unified_targets.Where ((v) => v.IsExe && v.TestProject?.SkipiOSVariation != true), mode); + WriteCollectionTarget (writer, "run-tvos-" + mode, tvos_targets.Where ((v) => v.IsExe && v.TestProject?.SkiptvOSVariation != true), mode); + WriteCollectionTarget (writer, "run-watchos-" + mode, watchos_targets.Where ((v) => v.IsExe && v.TestProject?.SkipwatchOSVariation != true), mode); } writer.WriteLine (); @@ -631,11 +631,24 @@ namespace xharness continue; var make_escaped_name = target.GetMakeName (); - writer.WriteTarget ("build-sim-{0}", "build-ios-sim-{0} build-tvos-sim-{0} build-watchos-sim-{0}", make_escaped_name); + var proj = target.TestProject; + var includeiOS = harness.INCLUDE_IOS && proj?.SkipiOSVariation != true; + var includetvOS = harness.INCLUDE_TVOS && proj?.SkiptvOSVariation != true; + var includewatchOS = harness.INCLUDE_WATCH && proj?.SkipwatchOSVariation != true; + + var dependencies = new List (); + if (includeiOS) + dependencies.Add ("ios"); + if (includetvOS) + dependencies.Add ("tvos"); + if (includewatchOS) + dependencies.Add ("watchos"); + + writer.WriteTarget ("build-sim-{0}", string.Join (" ", dependencies.Select ((v) => $"build-{v}-sim-{{0}}")), make_escaped_name); writer.WriteLine ("\t$(Q) echo Simulator builds succeeded"); // This is important, otherwise we'll end up executing the catch-all build-% target writer.WriteLine (); - writer.WriteTarget ("build-dev-{0}", "build-ios-dev-{0} build-tvos-dev-{0} build-watchos-dev-{0}", make_escaped_name); + writer.WriteTarget ("build-dev-{0}", string.Join (" ", dependencies.Select ((v) => $"build-{v}-dev-{{0}}")), make_escaped_name); writer.WriteLine ("\t$(Q) echo Device builds succeeded"); // This is important, otherwise we'll end up executing the catch-all build-% target writer.WriteLine (); @@ -644,56 +657,80 @@ namespace xharness writer.WriteLine (); writer.WriteTarget ("run-sim-{0}", "build-sim-{0}", make_escaped_name); - writer.WriteLine ("\t$(Q) $(MAKE) \"exec-ios-sim32-{0}\" || echo \"exec-ios-sim32-{0} failed\" >> \".$@-failure.stamp\"", target.GetMakeName (false)); - writer.WriteLine ("\t$(Q) $(MAKE) \"exec-ios-sim64-{0}\" || echo \"exec-ios-sim64-{0} failed\" >> \".$@-failure.stamp\"", target.GetMakeName (false)); - writer.WriteLine ("\t$(Q) $(MAKE) \"exec-tvos-sim-{0}\" || echo \"exec-tvos-sim-{0} failed\" >> \".$@-failure.stamp\"", target.GetMakeName (false)); - writer.WriteLine ("\t$(Q) $(MAKE) \"exec-watchos-sim-{0}\" || echo \"exec-watchos-sim-{0} failed\" >> \".$@-failure.stamp\"", target.GetMakeName (false)); + if (includeiOS) { + writer.WriteLine ("\t$(Q) $(MAKE) \"exec-ios-sim32-{0}\" || echo \"exec-ios-sim32-{0} failed\" >> \".$@-failure.stamp\"", target.GetMakeName (false)); + writer.WriteLine ("\t$(Q) $(MAKE) \"exec-ios-sim64-{0}\" || echo \"exec-ios-sim64-{0} failed\" >> \".$@-failure.stamp\"", target.GetMakeName (false)); + } + if (includetvOS) + writer.WriteLine ("\t$(Q) $(MAKE) \"exec-tvos-sim-{0}\" || echo \"exec-tvos-sim-{0} failed\" >> \".$@-failure.stamp\"", target.GetMakeName (false)); + if (includewatchOS) + writer.WriteLine ("\t$(Q) $(MAKE) \"exec-watchos-sim-{0}\" || echo \"exec-watchos-sim-{0} failed\" >> \".$@-failure.stamp\"", target.GetMakeName (false)); writer.WriteLine ("\t$(Q) if test -e \".$@-failure.stamp\"; then cat \".$@-failure.stamp\"; rm \".$@-failure.stamp\"; exit 1; fi"); writer.WriteLine (); writer.WriteTarget ("run-dev-{0}", "build-dev-{0}", make_escaped_name); - writer.WriteLine ("\t$(Q) $(MAKE) \"install-ios-dev-{0}\" || echo \"install-ios-dev-{0} failed\" >> \".$@-failure.stamp\"", target.GetMakeName (false)); - writer.WriteLine ("\t$(Q) $(MAKE) \"exec-ios-dev-{0}\" || echo \"exec-ios-dev-{0} failed\" >> \".$@-failure.stamp\"", target.GetMakeName (false)); - writer.WriteLine ("\t$(Q) $(MAKE) \"install-tvos-dev-{0}\" || echo \"install-tvos-dev-{0} failed\" >> \".$@-failure.stamp\"", target.GetMakeName (false)); - writer.WriteLine ("\t$(Q) $(MAKE) \"exec-tvos-dev-{0}\" || echo \"exec-tvos-dev-{0} failed\" >> \".$@-failure.stamp\"", target.GetMakeName (false)); - writer.WriteLine ("\t$(Q) $(MAKE) \"install-watchos-dev-{0}\" || echo \"install-watchos-dev-{0} failed\" >> \".$@-failure.stamp\"", target.GetMakeName (false)); - writer.WriteLine ("\t$(Q) $(MAKE) \"exec-watchos-dev-{0}\" || echo \"exec-watchos-dev-{0} failed\" >> \".$@-failure.stamp\"", target.GetMakeName (false)); + if (includeiOS) { + writer.WriteLine ("\t$(Q) $(MAKE) \"install-ios-dev-{0}\" || echo \"install-ios-dev-{0} failed\" >> \".$@-failure.stamp\"", target.GetMakeName (false)); + writer.WriteLine ("\t$(Q) $(MAKE) \"exec-ios-dev-{0}\" || echo \"exec-ios-dev-{0} failed\" >> \".$@-failure.stamp\"", target.GetMakeName (false)); + } + if (includetvOS) { + writer.WriteLine ("\t$(Q) $(MAKE) \"install-tvos-dev-{0}\" || echo \"install-tvos-dev-{0} failed\" >> \".$@-failure.stamp\"", target.GetMakeName (false)); + writer.WriteLine ("\t$(Q) $(MAKE) \"exec-tvos-dev-{0}\" || echo \"exec-tvos-dev-{0} failed\" >> \".$@-failure.stamp\"", target.GetMakeName (false)); + } + if (includewatchOS) { + writer.WriteLine ("\t$(Q) $(MAKE) \"install-watchos-dev-{0}\" || echo \"install-watchos-dev-{0} failed\" >> \".$@-failure.stamp\"", target.GetMakeName (false)); + writer.WriteLine ("\t$(Q) $(MAKE) \"exec-watchos-dev-{0}\" || echo \"exec-watchos-dev-{0} failed\" >> \".$@-failure.stamp\"", target.GetMakeName (false)); + } writer.WriteLine ("\t$(Q) if test -e \".$@-failure.stamp\"; then cat \".$@-failure.stamp\"; rm \".$@-failure.stamp\"; exit 1; fi"); writer.WriteLine (); writer.WriteTarget ("run-{0}", "build-{0}", make_escaped_name); // sim - writer.WriteLine ("\t$(Q) $(MAKE) \"exec-ios-sim32-{0}\" || echo \"exec-ios-sim32-{0} failed\" >> \".$@-failure.stamp\"", target.GetMakeName (false)); - writer.WriteLine ("\t$(Q) $(MAKE) \"exec-ios-sim64-{0}\" || echo \"exec-ios-sim64-{0} failed\" >> \".$@-failure.stamp\"", target.GetMakeName (false)); - writer.WriteLine ("\t$(Q) $(MAKE) \"exec-tvos-sim-{0}\" || echo \"exec-tvos-sim-{0} failed\" >> \".$@-failure.stamp\"", target.GetMakeName (false)); - writer.WriteLine ("\t$(Q) $(MAKE) \"exec-watchos-sim-{0}\" || echo \"exec-watchos-sim-{0} failed\" >> \".$@-failure.stamp\"", target.GetMakeName (false)); + if (includeiOS) { + writer.WriteLine ("\t$(Q) $(MAKE) \"exec-ios-sim32-{0}\" || echo \"exec-ios-sim32-{0} failed\" >> \".$@-failure.stamp\"", target.GetMakeName (false)); + writer.WriteLine ("\t$(Q) $(MAKE) \"exec-ios-sim64-{0}\" || echo \"exec-ios-sim64-{0} failed\" >> \".$@-failure.stamp\"", target.GetMakeName (false)); + } + if (includetvOS) + writer.WriteLine ("\t$(Q) $(MAKE) \"exec-tvos-sim-{0}\" || echo \"exec-tvos-sim-{0} failed\" >> \".$@-failure.stamp\"", target.GetMakeName (false)); + if (includewatchOS) + writer.WriteLine ("\t$(Q) $(MAKE) \"exec-watchos-sim-{0}\" || echo \"exec-watchos-sim-{0} failed\" >> \".$@-failure.stamp\"", target.GetMakeName (false)); // dev - writer.WriteLine ("\t$(Q) $(MAKE) \"install-ios-dev-{0}\" || echo \"install-ios-dev-{0} failed\" >> \".$@-failure.stamp\"", target.GetMakeName (false)); - writer.WriteLine ("\t$(Q) $(MAKE) \"exec-ios-dev-{0}\" || echo \"exec-ios-dev-{0} failed\" >> \".$@-failure.stamp\"", target.GetMakeName (false)); - writer.WriteLine ("\t$(Q) $(MAKE) \"install-tvos-dev-{0}\" || echo \"install-tvos-dev-{0} failed\" >> \".$@-failure.stamp\"", target.GetMakeName (false)); - writer.WriteLine ("\t$(Q) $(MAKE) \"exec-tvos-dev-{0}\" || echo \"exec-tvos-dev-{0} failed\" >> \".$@-failure.stamp\"", target.GetMakeName (false)); - writer.WriteLine ("\t$(Q) $(MAKE) \"install-watchos-dev-{0}\" || echo \"install-watchos-dev-{0} failed\" >> \".$@-failure.stamp\"", target.GetMakeName (false)); - writer.WriteLine ("\t$(Q) $(MAKE) \"exec-watchos-dev-{0}\" || echo \"exec-watchos-dev-{0} failed\" >> \".$@-failure.stamp\"", target.GetMakeName (false)); + if (includeiOS) { + writer.WriteLine ("\t$(Q) $(MAKE) \"install-ios-dev-{0}\" || echo \"install-ios-dev-{0} failed\" >> \".$@-failure.stamp\"", target.GetMakeName (false)); + writer.WriteLine ("\t$(Q) $(MAKE) \"exec-ios-dev-{0}\" || echo \"exec-ios-dev-{0} failed\" >> \".$@-failure.stamp\"", target.GetMakeName (false)); + } + if (includetvOS) { + writer.WriteLine ("\t$(Q) $(MAKE) \"install-tvos-dev-{0}\" || echo \"install-tvos-dev-{0} failed\" >> \".$@-failure.stamp\"", target.GetMakeName (false)); + writer.WriteLine ("\t$(Q) $(MAKE) \"exec-tvos-dev-{0}\" || echo \"exec-tvos-dev-{0} failed\" >> \".$@-failure.stamp\"", target.GetMakeName (false)); + } + if (includewatchOS) { + writer.WriteLine ("\t$(Q) $(MAKE) \"install-watchos-dev-{0}\" || echo \"install-watchos-dev-{0} failed\" >> \".$@-failure.stamp\"", target.GetMakeName (false)); + writer.WriteLine ("\t$(Q) $(MAKE) \"exec-watchos-dev-{0}\" || echo \"exec-watchos-dev-{0} failed\" >> \".$@-failure.stamp\"", target.GetMakeName (false)); + } writer.WriteLine ("\t$(Q) if test -e \".$@-failure.stamp\"; then cat \".$@-failure.stamp\"; rm \".$@-failure.stamp\"; exit 1; fi"); writer.WriteLine (); // Wrench needs a slightly different approach, because we want to run some tests, even if other tests failed to build // (the default is to build all, then run all if everything built). The problem is that there's no way (that I've found) // to make the build parallelizable and support the wrench mode at the same time. - writer.WriteLine ("wrenchhelper-{0}:", make_escaped_name); writer.WriteLine ("\t$(Q) rm -f \".$@-failure.stamp\" \".$@-ios-sim-build-failure.stamp\" \".$@-tvos-sim-build-failure.stamp\" \".$@-watchos-sim-build-failure.stamp\""); writer.WriteLine ("\t$(Q) echo \"@MonkeyWrench: SetSummary:\""); // first build (serialized) - writer.WriteLine ("\t$(Q) $(MAKE) \"build-ios-sim-{0}\" || echo \"@MonkeyWrench: AddSummary: ios failed to build
\" >> \".$@-ios-sim-build-failure.stamp\"", target.GetMakeName (false)); - writer.WriteLine ("\t$(Q) $(MAKE) \"build-tvos-sim-{0}\" || echo \"@MonkeyWrench: AddSummary: tvos failed to build
\" >> \".$@-tvos-sim-build-failure.stamp\"", target.GetMakeName (false)); - if (harness.INCLUDE_WATCH) + if (includeiOS) + writer.WriteLine ("\t$(Q) $(MAKE) \"build-ios-sim-{0}\" || echo \"@MonkeyWrench: AddSummary: ios failed to build
\" >> \".$@-ios-sim-build-failure.stamp\"", target.GetMakeName (false)); + if (includetvOS) + writer.WriteLine ("\t$(Q) $(MAKE) \"build-tvos-sim-{0}\" || echo \"@MonkeyWrench: AddSummary: tvos failed to build
\" >> \".$@-tvos-sim-build-failure.stamp\"", target.GetMakeName (false)); + if (includewatchOS) writer.WriteLine ("\t$(Q) $(MAKE) \"build-watchos-sim-{0}\" || echo \"@MonkeyWrench: AddSummary: watchos failed to build
\" >> \".$@-watchos-sim-build-failure.stamp\"", target.GetMakeName (false)); // then run - writer.WriteLine ("\t$(Q) (test -e \".$@-ios-sim-build-failure.stamp\" && cat \".$@-ios-sim-build-failure.stamp\" >> \".$@-failure.stamp\") || $(MAKE) \"exec-ios-sim32-{0}\" || echo \"exec-ios-sim32-{0} failed\" >> \".$@-failure.stamp\"", target.GetMakeName (false)); - writer.WriteLine ("\t$(Q) test -e \".$@-ios-sim-build-failure.stamp\" || $(MAKE) \"exec-ios-sim64-{0}\" || echo \"exec-ios-sim64-{0} failed\" >> \".$@-failure.stamp\"", target.GetMakeName (false)); - writer.WriteLine ("\t$(Q) (test -e \".$@-tvos-sim-build-failure.stamp\" && cat \".$@-tvos-sim-build-failure.stamp\" >> \".$@-failure.stamp\") || $(MAKE) \"exec-tvos-sim-{0}\" || echo \"exec-tvos-sim-{0} failed\" >> \".$@-failure.stamp\"", target.GetMakeName (false)); - if (harness.INCLUDE_WATCH) { + if (includeiOS) { + writer.WriteLine ("\t$(Q) (test -e \".$@-ios-sim-build-failure.stamp\" && cat \".$@-ios-sim-build-failure.stamp\" >> \".$@-failure.stamp\") || $(MAKE) \"exec-ios-sim32-{0}\" || echo \"exec-ios-sim32-{0} failed\" >> \".$@-failure.stamp\"", target.GetMakeName (false)); + writer.WriteLine ("\t$(Q) test -e \".$@-ios-sim-build-failure.stamp\" || $(MAKE) \"exec-ios-sim64-{0}\" || echo \"exec-ios-sim64-{0} failed\" >> \".$@-failure.stamp\"", target.GetMakeName (false)); + } + if (includetvOS) + writer.WriteLine ("\t$(Q) (test -e \".$@-tvos-sim-build-failure.stamp\" && cat \".$@-tvos-sim-build-failure.stamp\" >> \".$@-failure.stamp\") || $(MAKE) \"exec-tvos-sim-{0}\" || echo \"exec-tvos-sim-{0} failed\" >> \".$@-failure.stamp\"", target.GetMakeName (false)); + if (includewatchOS) { if (harness.DisableWatchOSOnWrench) { writer.WriteLine ("\t$(Q) (test -e \".$@-watchos-sim-build-failure.stamp\" && cat \".$@-watchos-sim-build-failure.stamp\" ) || $(MAKE) \"exec-watchos-sim-{0}\" || echo \"exec-watchos-sim-{0} failed\" ", target.GetMakeName (false)); } else { diff --git a/tests/xharness/Program.cs b/tests/xharness/Program.cs index 35a261da0a..2139cd0f56 100644 --- a/tests/xharness/Program.cs +++ b/tests/xharness/Program.cs @@ -20,26 +20,26 @@ namespace xharness { "configure", "Creates project files and makefiles.", (v) => harness.Action = HarnessAction.Configure }, { "autoconf", "Automatically decide what to configure.", (v) => harness.AutoConf = true }, { "rootdir=", "The root directory for the tests.", (v) => harness.RootDirectory = v }, - { "project=", "Add a project file to process. This can be specified multiple times.", (v) => harness.IOSTestProjects.Add (new TestProject (v)) }, + { "project=", "Add a project file to process. This can be specified multiple times.", (v) => harness.IOSTestProjects.Add (new iOSTestProject (v)) }, { "watchos-container-template=", "The directory to use as a template for a watchos container app.", (v) => harness.WatchOSContainerTemplate = v }, { "watchos-app-template=", "The directory to use as a template for a watchos app.", (v) => harness.WatchOSAppTemplate = v }, // Run { "run=", "Executes a project.", (v) => { harness.Action = HarnessAction.Run; - harness.IOSTestProjects.Add (new TestProject (v)); + harness.IOSTestProjects.Add (new iOSTestProject (v)); } }, { "install=", "Installs a project.", (v) => { harness.Action = HarnessAction.Install; - harness.IOSTestProjects.Add (new TestProject (v)); + harness.IOSTestProjects.Add (new iOSTestProject (v)); } }, { "uninstall=", "Uninstalls a project.", (v) => { harness.Action = HarnessAction.Uninstall; - harness.IOSTestProjects.Add (new TestProject (v)); + harness.IOSTestProjects.Add (new iOSTestProject (v)); } }, { "sdkroot=", "Where Xcode is", (v) => harness.SdkRoot = v }, diff --git a/tests/xharness/TVOSTarget.cs b/tests/xharness/TVOSTarget.cs index c1a163a69b..9118211456 100644 --- a/tests/xharness/TVOSTarget.cs +++ b/tests/xharness/TVOSTarget.cs @@ -5,7 +5,7 @@ using System.Xml; namespace xharness { - public class TVOSTarget : Target + public class TVOSTarget : iOSTarget { public override string Suffix { get { diff --git a/tests/xharness/TestProject.cs b/tests/xharness/TestProject.cs index 3b511b293c..536204c3db 100644 --- a/tests/xharness/TestProject.cs +++ b/tests/xharness/TestProject.cs @@ -122,6 +122,22 @@ namespace xharness } } + public class iOSTestProject : TestProject + { + public bool SkipiOSVariation; + public bool SkipwatchOSVariation; + public bool SkiptvOSVariation; + + public iOSTestProject () + { + } + + public iOSTestProject (string path, bool isExecutableProject = true, bool generateVariations = true) + : base (path, isExecutableProject, generateVariations) + { + } + } + public class MacTestProject : TestProject { public bool SkipXMVariations; diff --git a/tests/xharness/UnifiedTarget.cs b/tests/xharness/UnifiedTarget.cs index 397a6a18d1..9510395f02 100644 --- a/tests/xharness/UnifiedTarget.cs +++ b/tests/xharness/UnifiedTarget.cs @@ -2,7 +2,7 @@ namespace xharness { - public class UnifiedTarget : Target + public class UnifiedTarget : iOSTarget { public override string Suffix { get { diff --git a/tests/xharness/WatchOSTarget.cs b/tests/xharness/WatchOSTarget.cs index 6644cc6220..0698fde3b5 100644 --- a/tests/xharness/WatchOSTarget.cs +++ b/tests/xharness/WatchOSTarget.cs @@ -5,7 +5,7 @@ using System.Xml; namespace xharness { - public class WatchOSTarget : Target + public class WatchOSTarget : iOSTarget { public string AppName { get; private set; } public string ExtensionName { get; private set; } diff --git a/tests/xharness/iOSTarget.cs b/tests/xharness/iOSTarget.cs new file mode 100644 index 0000000000..9d56a34843 --- /dev/null +++ b/tests/xharness/iOSTarget.cs @@ -0,0 +1,10 @@ +using System; + +namespace xharness +{ + // iOS here means Xamarin.iOS, not iOS as opposed to tvOS/watchOS. + public class iOSTarget : Target + { + public iOSTestProject TestProject; + } +} diff --git a/tests/xharness/xharness.csproj b/tests/xharness/xharness.csproj index 7d18da0e98..fcdcab336b 100644 --- a/tests/xharness/xharness.csproj +++ b/tests/xharness/xharness.csproj @@ -83,6 +83,7 @@ StringUtils.cs + From d44907a3ac12972280d98f611798466413e0f9d6 Mon Sep 17 00:00:00 2001 From: Timothy Risi Date: Mon, 25 Sep 2017 06:18:36 -0800 Subject: [PATCH 012/145] [macOS][AOT] Remove 'experimental', indicate hybrid is only for 'all' (#2742) (#2763) --aot[=VALUE] Specify assemblies that should be AOT compiled - none - No AOT (default) - all - Every assembly in MonoBundle - core - Xamarin.Mac, System, mscorlib - sdk - Xamarin.Mac.dll and BCL assemblies - |hybrid after option enables hybrid AOT which allows IL stripping but is slower (only valid for 'all') - Individual files can be included for AOT via + FileName.dll and excluded via -FileName.dll Examples: --aot:all,-MyAssembly.dll --aot:core|hybrid,+MyOtherAssembly.dll,- mscorlib.dll --- tools/mmp/driver.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/mmp/driver.cs b/tools/mmp/driver.cs index 98e4f58d75..72f5b45c11 100644 --- a/tools/mmp/driver.cs +++ b/tools/mmp/driver.cs @@ -358,7 +358,7 @@ namespace Xamarin.Bundler { { "xamarin-framework-directory=", "The framework directory", v => { xm_framework_dir = v; }, true }, { "xamarin-full-framework", "Used with --target-framework=4.5 to select XM Full Target Framework", v => { IsUnifiedFullXamMacFramework = true; } }, { "xamarin-system-framework", "Used with --target-framework=4.5 to select XM Full Target Framework", v => { IsUnifiedFullSystemFramework = true; } }, - { "aot:", "Specify assemblies that should be experimentally AOT compiled\n- none - No AOT (default)\n- all - Every assembly in MonoBundle\n- core - Xamarin.Mac, System, mscorlib\n- sdk - Xamarin.Mac.dll and BCL assemblies\n- |hybrid after option enables hybrid AOT which allows IL stripping but is slower\n - Individual files can be included for AOT via +FileName.dll and excluded via -FileName.dll\n\nExamples:\n --aot:all,-MyAssembly.dll\n --aot:core|hybrid,+MyOtherAssembly.dll,-mscorlib.dll", + { "aot:", "Specify assemblies that should be AOT compiled\n- none - No AOT (default)\n- all - Every assembly in MonoBundle\n- core - Xamarin.Mac, System, mscorlib\n- sdk - Xamarin.Mac.dll and BCL assemblies\n- |hybrid after option enables hybrid AOT which allows IL stripping but is slower (only valid for 'all')\n - Individual files can be included for AOT via +FileName.dll and excluded via -FileName.dll\n\nExamples:\n --aot:all,-MyAssembly.dll\n --aot:core|hybrid,+MyOtherAssembly.dll,-mscorlib.dll", v => { aotOptions = new AOTOptions (v); } From b3aca493439a3799773128450694dd727c4fd98e Mon Sep 17 00:00:00 2001 From: Chris Hamons Date: Tue, 19 Sep 2017 16:38:50 -0500 Subject: [PATCH 013/145] Fix XM Full netstandard to copy in correct assemblies (#2685) - Applications will build but crash on launch otherwise --- msbuild/Xamarin.Mac.Tasks/Xamarin.Mac.Common.targets | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/msbuild/Xamarin.Mac.Tasks/Xamarin.Mac.Common.targets b/msbuild/Xamarin.Mac.Tasks/Xamarin.Mac.Common.targets index f843d8619d..baa4d97ce3 100644 --- a/msbuild/Xamarin.Mac.Tasks/Xamarin.Mac.Common.targets +++ b/msbuild/Xamarin.Mac.Tasks/Xamarin.Mac.Common.targets @@ -536,6 +536,9 @@ Copyright (C) 2014 Xamarin. All rights reserved. + + + Date: Thu, 21 Sep 2017 13:40:48 -0500 Subject: [PATCH 014/145] Fix netstd2 issue on XM full by expanding facades the same as Modern (#2731) - https://bugzilla.xamarin.com/show_bug.cgi?id=59474 - The idea is to force Full and Modern to expand facades the same way. That way, we get the same, working behavior. - f79f2e4 was not sufficient, even though it matched XI, because of the difference between XI (and Modern) and what Full was doing. - Some context: PR #2685 And that was problematic because it was expanding the netstandard facades from `Microsoft.NET.Build.Extensions` in the `ImplicitlyExpandNETStandardFacades` target. But we want to build against XM's bundled facades *only*. So we disable the ns facades completely by setting `$(ImplicitlyExpandNETStandardFacades) = false`. But now we are in the situation where a XM/Full project referencing a ns project might fail to build because of a missing `netstandard.dll` reference! And this same case was fixed for XM/Modern projects in https://github.com/xamarin/xamarin-macios/pull/2643 . So, we enable the use of that for XM/Full projects too through `Xamarin.Mac.msbuild.targets`. --- .../Xamarin.Mac.Tasks/Xamarin.Mac.Common.targets | 16 +--------------- .../Xamarin.Mac.msbuild.targets | 3 +-- 2 files changed, 2 insertions(+), 17 deletions(-) diff --git a/msbuild/Xamarin.Mac.Tasks/Xamarin.Mac.Common.targets b/msbuild/Xamarin.Mac.Tasks/Xamarin.Mac.Common.targets index baa4d97ce3..d7327f40e1 100644 --- a/msbuild/Xamarin.Mac.Tasks/Xamarin.Mac.Common.targets +++ b/msbuild/Xamarin.Mac.Tasks/Xamarin.Mac.Common.targets @@ -87,21 +87,7 @@ Copyright (C) 2014 Xamarin. All rights reserved. $(XamarinMacFrameworkRoot)/lib/reference/full;$(XamarinMacFrameworkRoot)/lib/mono;$(AssemblySearchPaths) - - - false + False diff --git a/msbuild/Xamarin.Mac.Tasks/Xamarin.Mac.msbuild.targets b/msbuild/Xamarin.Mac.Tasks/Xamarin.Mac.msbuild.targets index 748e3d8c0b..1a2a5f497b 100644 --- a/msbuild/Xamarin.Mac.Tasks/Xamarin.Mac.msbuild.targets +++ b/msbuild/Xamarin.Mac.Tasks/Xamarin.Mac.msbuild.targets @@ -29,6 +29,5 @@ Copyright (c) 2017 Microsoft Corp. (www.microsoft.com) - - + From 9ffe563de4921384c4c853549b873fb79e722285 Mon Sep 17 00:00:00 2001 From: Timothy Risi Date: Mon, 25 Sep 2017 09:50:44 -0800 Subject: [PATCH 015/145] [macOS] Fix new xtro failures introduced by the xcode9 branch (#2741) --- src/AVFoundation/Enums.cs | 2 +- src/AppKit/XEnums.cs | 8 ++++- src/avfoundation.cs | 4 +-- src/metal.cs | 2 ++ tests/xtro-sharpie/Helpers.cs | 1 + tests/xtro-sharpie/common.ignore | 4 +++ tests/xtro-sharpie/common.pending | 59 ++++++++++++++++++++++++++++++- tests/xtro-sharpie/osx.ignore | 2 +- tests/xtro-sharpie/osx.pending | 15 ++++++++ 9 files changed, 91 insertions(+), 6 deletions(-) diff --git a/src/AVFoundation/Enums.cs b/src/AVFoundation/Enums.cs index 0f1900cde4..814fe3d82f 100644 --- a/src/AVFoundation/Enums.cs +++ b/src/AVFoundation/Enums.cs @@ -873,7 +873,7 @@ namespace XamCore.AVFoundation { CannotDoInCurrentContext = 2 } - [TV (11,0), NoWatch, Mac (10,13), iOS (11,0)] + [TV (11,0), NoWatch, NoMac, iOS (11,0)] [Native] public enum AVAudioSessionRouteSharingPolicy : nuint { Default = 0, diff --git a/src/AppKit/XEnums.cs b/src/AppKit/XEnums.cs index 2bf903b1a0..61b30203b6 100644 --- a/src/AppKit/XEnums.cs +++ b/src/AppKit/XEnums.cs @@ -91,7 +91,13 @@ namespace XamCore.AppKit { // Untyped enum (NSAttributedString.h). Only used as a convience enum in our API. [Flags] - public enum NSSpellingState : int { + public enum NSSpellingState : +#if XAMCORE_4_0 + nint +#else + int +#endif + { None = 0x0, Spelling = 0x1, Grammar = 0x2 diff --git a/src/avfoundation.cs b/src/avfoundation.cs index 83249423be..3618f43f78 100644 --- a/src/avfoundation.cs +++ b/src/avfoundation.cs @@ -12176,12 +12176,12 @@ namespace XamCore.AVFoundation { AVContentKeyResponse Create (NSData keyData, [NullAllowed] NSData initializationVector); } - [TV (11,0), NoWatch, Mac (10,13), iOS (11,0)] + [TV (11,0), NoWatch, NoMac, iOS (11,0)] [DisableDefaultCtor] [BaseType (typeof(NSObject))] interface AVRouteDetector { [Notification] - [TV (11, 0), NoWatch, Mac (10, 13), iOS (11, 0)] + [TV (11, 0), NoWatch, NoMac, iOS (11, 0)] [Field ("AVRouteDetectorMultipleRoutesDetectedDidChangeNotification")] NSString MultipleRoutesDetectedDidChange { get; } diff --git a/src/metal.cs b/src/metal.cs index 6ce8f72266..2b70a04281 100644 --- a/src/metal.cs +++ b/src/metal.cs @@ -287,6 +287,7 @@ namespace XamCore.Metal { [Export ("renderCommandEncoderWithDescriptor:")] IMTLRenderCommandEncoder CreateRenderCommandEncoder (MTLRenderPassDescriptor renderPassDescriptor); +#if !XAMCORE_4_0 || !MONOMAC // These were incorrectly released as available for mac, but are actually iOS/tvOS only. Have to wait for XAMCORE_4_0 to remove the mac availability since it's a breaking change. #if XAMCORE_4_0 [Abstract] // @required but we can't add abstract members in C# and keep binary compatibility #endif @@ -314,6 +315,7 @@ namespace XamCore.Metal { [iOS (10,3)][TV (10,2)][Mac (10,12,4, onlyOn64 : true)] [Export ("GPUEndTime")] double /* CFTimeInterval */ GpuEndTime { get; } +#endif // !XAMCORE_4_0 || !MONOMAC [Mac (10,13, onlyOn64: true), iOS (11,0), TV (11,0), NoWatch] #if XAMCORE_4_0 diff --git a/tests/xtro-sharpie/Helpers.cs b/tests/xtro-sharpie/Helpers.cs index dad43bd7f9..4a209215ce 100644 --- a/tests/xtro-sharpie/Helpers.cs +++ b/tests/xtro-sharpie/Helpers.cs @@ -77,6 +77,7 @@ namespace Extrospection { // not enums { "NSMutableURLRequest", "NSMutableUrlRequest" }, { "UIImagePickerControllerImageURLExportPreset", "UIImagePickerControllerImageUrlExportPreset" }, + { "NSURLSessionDelayedRequestDisposition", "NSUrlSessionDelayedRequestDisposition" }, }; public static string GetManagedName (string nativeName) diff --git a/tests/xtro-sharpie/common.ignore b/tests/xtro-sharpie/common.ignore index 9f6b3d9dfe..6ea55d6447 100644 --- a/tests/xtro-sharpie/common.ignore +++ b/tests/xtro-sharpie/common.ignore @@ -278,3 +278,7 @@ !missing-enum! PDFTextAnnotationIconType not bound !missing-enum! PDFWidgetCellState not bound !missing-enum! PDFWidgetControlType not bound + +# WebKit +## Header file missing from umbrella header, but used by WKWebView, which IS included in the umbrella. +!unknown-type! WKSnapshotConfiguration bound \ No newline at end of file diff --git a/tests/xtro-sharpie/common.pending b/tests/xtro-sharpie/common.pending index ed528daa7f..9c74d9bb4f 100644 --- a/tests/xtro-sharpie/common.pending +++ b/tests/xtro-sharpie/common.pending @@ -343,7 +343,64 @@ !incorrect-protocol-member! NSProgressReporting::progress is REQUIRED and should be abstract - +# fixed in XAMCORE_4_0 - API Break +!incorrect-protocol-member! MTLBlitCommandEncoder::updateFence: is REQUIRED and should be abstract +!incorrect-protocol-member! MTLBlitCommandEncoder::waitForFence: is REQUIRED and should be abstract +!incorrect-protocol-member! MTLCommandBuffer::GPUEndTime is REQUIRED and should be abstract +!incorrect-protocol-member! MTLCommandBuffer::GPUStartTime is REQUIRED and should be abstract +!incorrect-protocol-member! MTLCommandBuffer::kernelEndTime is REQUIRED and should be abstract +!incorrect-protocol-member! MTLCommandBuffer::kernelStartTime is REQUIRED and should be abstract +!incorrect-protocol-member! MTLCommandBuffer::popDebugGroup is REQUIRED and should be abstract +!incorrect-protocol-member! MTLCommandBuffer::pushDebugGroup: is REQUIRED and should be abstract +!incorrect-protocol-member! MTLComputeCommandEncoder::dispatchThreads:threadsPerThreadgroup: is REQUIRED and should be abstract +!incorrect-protocol-member! MTLComputeCommandEncoder::updateFence: is REQUIRED and should be abstract +!incorrect-protocol-member! MTLComputeCommandEncoder::useHeap: is REQUIRED and should be abstract +!incorrect-protocol-member! MTLComputeCommandEncoder::useHeaps:count: is REQUIRED and should be abstract +!incorrect-protocol-member! MTLComputeCommandEncoder::useResource:usage: is REQUIRED and should be abstract +!incorrect-protocol-member! MTLComputeCommandEncoder::useResources:count:usage: is REQUIRED and should be abstract +!incorrect-protocol-member! MTLComputeCommandEncoder::waitForFence: is REQUIRED and should be abstract +!incorrect-protocol-member! MTLComputePipelineState::label is REQUIRED and should be abstract +!incorrect-protocol-member! MTLComputePipelineState::staticThreadgroupMemoryLength is REQUIRED and should be abstract +!incorrect-protocol-member! MTLDevice::areProgrammableSamplePositionsSupported is REQUIRED and should be abstract +!incorrect-protocol-member! MTLDevice::areRasterOrderGroupsSupported is REQUIRED and should be abstract +!incorrect-protocol-member! MTLDevice::argumentBuffersSupport is REQUIRED and should be abstract +!incorrect-protocol-member! MTLDevice::currentAllocatedSize is REQUIRED and should be abstract +!incorrect-protocol-member! MTLDevice::getDefaultSamplePositions:count: is REQUIRED and should be abstract +!incorrect-protocol-member! MTLDevice::heapBufferSizeAndAlignWithLength:options: is REQUIRED and should be abstract +!incorrect-protocol-member! MTLDevice::heapTextureSizeAndAlignWithDescriptor: is REQUIRED and should be abstract +!incorrect-protocol-member! MTLDevice::isRemovable is REQUIRED and should be abstract +!incorrect-protocol-member! MTLDevice::maxThreadgroupMemoryLength is REQUIRED and should be abstract +!incorrect-protocol-member! MTLDevice::minimumLinearTextureAlignmentForPixelFormat: is REQUIRED and should be abstract +!incorrect-protocol-member! MTLDevice::newArgumentEncoderWithArguments: is REQUIRED and should be abstract +!incorrect-protocol-member! MTLDevice::newFence is REQUIRED and should be abstract +!incorrect-protocol-member! MTLDevice::newHeapWithDescriptor: is REQUIRED and should be abstract +!incorrect-protocol-member! MTLDevice::newLibraryWithURL:error: is REQUIRED and should be abstract +!incorrect-protocol-member! MTLDevice::newTextureWithDescriptor:iosurface:plane: is REQUIRED and should be abstract +!incorrect-protocol-member! MTLDevice::readWriteTextureSupport is REQUIRED and should be abstract +!incorrect-protocol-member! MTLDevice::registryID is REQUIRED and should be abstract +!incorrect-protocol-member! MTLFunction::newArgumentEncoderWithBufferIndex: is REQUIRED and should be abstract +!incorrect-protocol-member! MTLFunction::newArgumentEncoderWithBufferIndex:reflection: is REQUIRED and should be abstract +!incorrect-protocol-member! MTLHeap::currentAllocatedSize is REQUIRED and should be abstract +!incorrect-protocol-member! MTLParallelRenderCommandEncoder::setColorStoreActionOptions:atIndex: is REQUIRED and should be abstract +!incorrect-protocol-member! MTLParallelRenderCommandEncoder::setDepthStoreActionOptions: is REQUIRED and should be abstract +!incorrect-protocol-member! MTLParallelRenderCommandEncoder::setStencilStoreActionOptions: is REQUIRED and should be abstract +!incorrect-protocol-member! MTLRenderCommandEncoder::setColorStoreActionOptions:atIndex: is REQUIRED and should be abstract +!incorrect-protocol-member! MTLRenderCommandEncoder::setDepthStoreActionOptions: is REQUIRED and should be abstract +!incorrect-protocol-member! MTLRenderCommandEncoder::setScissorRects:count: is REQUIRED and should be abstract +!incorrect-protocol-member! MTLRenderCommandEncoder::setStencilStoreActionOptions: is REQUIRED and should be abstract +!incorrect-protocol-member! MTLRenderCommandEncoder::setViewports:count: is REQUIRED and should be abstract +!incorrect-protocol-member! MTLRenderCommandEncoder::updateFence:afterStages: is REQUIRED and should be abstract +!incorrect-protocol-member! MTLRenderCommandEncoder::useHeap: is REQUIRED and should be abstract +!incorrect-protocol-member! MTLRenderCommandEncoder::useHeaps:count: is REQUIRED and should be abstract +!incorrect-protocol-member! MTLRenderCommandEncoder::useResource:usage: is REQUIRED and should be abstract +!incorrect-protocol-member! MTLRenderCommandEncoder::useResources:count:usage: is REQUIRED and should be abstract +!incorrect-protocol-member! MTLRenderCommandEncoder::waitForFence:beforeStages: is REQUIRED and should be abstract +!incorrect-protocol-member! MTLResource::allocatedSize is REQUIRED and should be abstract +!incorrect-protocol-member! MTLResource::heap is REQUIRED and should be abstract +!incorrect-protocol-member! MTLResource::isAliasable is REQUIRED and should be abstract +!incorrect-protocol-member! MTLResource::makeAliasable is REQUIRED and should be abstract +!incorrect-protocol-member! MTLTexture::iosurface is REQUIRED and should be abstract +!incorrect-protocol-member! MTLTexture::iosurfacePlane is REQUIRED and should be abstract # not public !missing-type! NSConstantString not bound diff --git a/tests/xtro-sharpie/osx.ignore b/tests/xtro-sharpie/osx.ignore index 580c8f28ef..2fb114f4bd 100644 --- a/tests/xtro-sharpie/osx.ignore +++ b/tests/xtro-sharpie/osx.ignore @@ -444,4 +444,4 @@ ## PDFKit # The following enums are bound as PdfFoo, lowercase Pdf prefix -!missing-enum! PDFPrintScalingMode not bound +!missing-enum! PDFPrintScalingMode not bound \ No newline at end of file diff --git a/tests/xtro-sharpie/osx.pending b/tests/xtro-sharpie/osx.pending index 0409da99d9..1c7b3ba9df 100644 --- a/tests/xtro-sharpie/osx.pending +++ b/tests/xtro-sharpie/osx.pending @@ -344,6 +344,21 @@ !unknown-native-enum! NSType bound !unknown-native-enum! SLComposeViewControllerResult bound !wrong-base-type! MDLVoxelArray expected MDLObject actual NSObject +!incorrect-protocol-member! NSAccessibility::accessibilityChildrenInNavigationOrder is REQUIRED and should be abstract +!incorrect-protocol-member! NSAccessibility::accessibilityCustomActions is REQUIRED and should be abstract +!incorrect-protocol-member! NSAccessibility::accessibilityCustomRotors is REQUIRED and should be abstract +!incorrect-protocol-member! NSAccessibility::setAccessibilityChildrenInNavigationOrder: is REQUIRED and should be bstract +!incorrect-protocol-member! NSAccessibility::setAccessibilityCustomActions: is REQUIRED and should be abstract +!incorrect-protocol-member! NSAccessibility::setAccessibilityCustomRotors: is REQUIRED and should be abstract +!incorrect-protocol-member! CIImageProcessorInput::surface is REQUIRED and should be abstract +!incorrect-protocol-member! CIImageProcessorOutput::surface is REQUIRED and should be abstract +!incorrect-protocol-member! INSpeakable::alternativeSpeakableMatches is REQUIRED and should be abstract +!incorrect-protocol-member! INSpeakable::vocabularyIdentifier is REQUIRED and should be abstract +!wrong-enum-size! NSSpellingState managed 4 vs native 8 +!extra-protocol-member! unexpected selector MTLCommandBuffer::GPUEndTime found +!extra-protocol-member! unexpected selector MTLCommandBuffer::GPUStartTime found +!extra-protocol-member! unexpected selector MTLCommandBuffer::kernelEndTime found +!extra-protocol-member! unexpected selector MTLCommandBuffer::kernelStartTime found # Bound but commented out until we can test w\ template !missing-selector! +SFSafariExtensionManager::getStateOfSafariExtensionWithIdentifier:completionHandler: not bound From ad82e6cc163578ec1662774a808bc83691e446c6 Mon Sep 17 00:00:00 2001 From: Rolf Bjarne Kvinge Date: Mon, 25 Sep 2017 21:41:38 +0200 Subject: [PATCH 016/145] Bump maccore to get fix for #59667. (#2770) (#2771) https://bugzilla.xamarin.com/show_bug.cgi?id=59667 --- mk/xamarin.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mk/xamarin.mk b/mk/xamarin.mk index 85b6cbf03b..02f0d5df59 100644 --- a/mk/xamarin.mk +++ b/mk/xamarin.mk @@ -1,5 +1,5 @@ ifdef ENABLE_XAMARIN -NEEDED_MACCORE_VERSION := f55b0f66537c833a54f73b971fad615088f127ba +NEEDED_MACCORE_VERSION := 3c66cba4e25855b50de6c10b2d02e28e1ee4fbde NEEDED_MACCORE_BRANCH := d15-5 MACCORE_DIRECTORY := maccore From 444f51c068e32c9e58a3338d56de7dc3baeb0dce Mon Sep 17 00:00:00 2001 From: Alex Soto Date: Fri, 16 Jun 2017 09:08:56 -0500 Subject: [PATCH 017/145] [generator] Persist BindAs attribute information in generated code. Persisting BindAs attributes is required for the registrars to be able to handle methods with BindAs attributes correctly. Generator diff: https://gist.github.com/rolfbjarne/0fafbce9373ff1f407839a20ea5e72e9 --- src/Makefile.generator | 1 + src/ObjCRuntime/BindAsAttribute.cs | 60 ++++++++++++++++++++++ src/frameworks.sources | 1 + src/generator-attributes.cs | 53 ------------------- src/generator.cs | 38 ++++++++++++-- tests/generator/bindas1048error.cs | 1 + tests/generator/bindas1049error.cs | 1 + tests/generator/bindas1050modelerror.cs | 1 + tests/generator/bindas1050protocolerror.cs | 1 + tests/generator/bindastests.cs | 22 ++++---- 10 files changed, 112 insertions(+), 67 deletions(-) create mode 100644 src/ObjCRuntime/BindAsAttribute.cs diff --git a/src/Makefile.generator b/src/Makefile.generator index 6ae3f48d12..41ffb3f935 100644 --- a/src/Makefile.generator +++ b/src/Makefile.generator @@ -41,6 +41,7 @@ GENERATOR_ATTRIBUTE_SOURCES = \ $(TOP)/src/Foundation/RegisterAttribute.cs \ $(TOP)/src/ObjCRuntime/AlphaAttribute.cs \ $(TOP)/src/ObjCRuntime/ArgumentSemantic.cs \ + $(TOP)/src/ObjCRuntime/BindAsAttribute.cs \ $(TOP)/src/ObjCRuntime/LinkWithAttribute.cs \ $(TOP)/src/ObjCRuntime/NativeAttribute.cs \ $(TOP)/src/ObjCRuntime/PlatformAvailability2.cs \ diff --git a/src/ObjCRuntime/BindAsAttribute.cs b/src/ObjCRuntime/BindAsAttribute.cs new file mode 100644 index 0000000000..24efd1fda6 --- /dev/null +++ b/src/ObjCRuntime/BindAsAttribute.cs @@ -0,0 +1,60 @@ +using System; +#if IKVM +using IKVM.Reflection; +using Type = IKVM.Reflection.Type; +#endif +namespace XamCore.ObjCRuntime { + // + // BindAsAttribute + // + // The BindAsAttribute allows binding NSNumber, NSValue and NSString(enums) into more accurate C# types. + // It can be used in methods, parameters and properties. The only restriction is that your member must not + // be inside a [Protocol] or [Model] interface. + // + // For example: + // + // [return: BindAs (typeof (bool?))] + // [Export ("shouldDrawAt:")] + // NSNumber ShouldDraw ([BindAs (typeof (CGRect))] NSValue rect); + // + // Would output: + // + // [Export ("shouldDrawAt:")] + // bool? ShouldDraw (CGRect rect) { ... } + // + // Internally we will do the bool? <-> NSNumber and CGRect <-> NSValue conversions. + // + // BindAs also supports arrays of NSNumber|NSValue|NSString(enums) + // + // For example: + // + // [BindAs (typeof (CAScroll []))] + // [Export ("supportedScrollModes")] + // NSString [] SupportedScrollModes { get; set; } + // + // Would output: + // + // [Export ("supportedScrollModes")] + // CAScroll [] SupportedScrollModes { get; set; } + // + // CAScroll is a NSString backed enum, we will fetch the right NSString value and handle the type conversion. + // + [AttributeUsage (AttributeTargets.ReturnValue | AttributeTargets.Property | AttributeTargets.Parameter, AllowMultiple = false)] + public class BindAsAttribute : Attribute { + public BindAsAttribute (Type type) + { + Type = type; +#if BGENERATOR + var nullable = type.IsArray ? TypeManager.GetUnderlyingNullableType (type.GetElementType ()) : TypeManager.GetUnderlyingNullableType (type); + IsNullable = nullable != null; + IsValueType = IsNullable ? nullable.IsValueType : type.IsValueType; +#endif + } + public Type Type; + public Type OriginalType; +#if BGENERATOR + internal readonly bool IsNullable; + internal readonly bool IsValueType; +#endif + } +} diff --git a/src/frameworks.sources b/src/frameworks.sources index 197eb22ae6..67d0241783 100644 --- a/src/frameworks.sources +++ b/src/frameworks.sources @@ -1519,6 +1519,7 @@ SHARED_CORE_SOURCES = \ build/common/NativeTypes/Primitives.cs \ ObjCRuntime/AlphaAttribute.cs \ ObjCRuntime/ArgumentSemantic.cs \ + ObjCRuntime/BindAsAttribute.cs \ ObjCRuntime/Blocks.cs \ ObjCRuntime/Class.cs \ ObjCRuntime/INativeObject.cs \ diff --git a/src/generator-attributes.cs b/src/generator-attributes.cs index 9da23127df..d590774d85 100644 --- a/src/generator-attributes.cs +++ b/src/generator-attributes.cs @@ -54,59 +54,6 @@ public class ForcedTypeAttribute : Attribute { public bool Owns; } -// -// BindAsAttribute -// -// The BindAsAttribute allows binding NSNumber, NSValue and NSString(enums) into more accurate C# types. -// It can be used in methods, parameters and properties. The only restriction is that your member must not -// be inside a [Protocol] or [Model] interface. -// -// For example: -// -// [return: BindAs (typeof (bool?))] -// [Export ("shouldDrawAt:")] -// NSNumber ShouldDraw ([BindAs (typeof (CGRect))] NSValue rect); -// -// Would output: -// -// [Export ("shouldDrawAt:")] -// bool? ShouldDraw (CGRect rect) { ... } -// -// Internally we will do the bool? <-> NSNumber and CGRect <-> NSValue conversions. -// -// BindAs also supports arrays of NSNumber|NSValue|NSString(enums) -// -// For example: -// -// [BindAs (typeof (CAScroll []))] -// [Export ("supportedScrollModes")] -// NSString [] SupportedScrollModes { get; set; } -// -// Would output: -// -// [Export ("supportedScrollModes")] -// CAScroll [] SupportedScrollModes { get; set; } -// -// CAScroll is a NSString backed enum, we will fetch the right NSString value and handle the type conversion. -// -[AttributeUsage (AttributeTargets.ReturnValue | AttributeTargets.Property | AttributeTargets.Parameter, AllowMultiple = false)] -public class BindAsAttribute : Attribute { - public BindAsAttribute (Type type) - { - Type = type; -#if BGENERATOR - var nullable = type.IsArray ? TypeManager.GetUnderlyingNullableType (type.GetElementType ()) : TypeManager.GetUnderlyingNullableType (type); - IsNullable = nullable != null; - IsValueType = IsNullable ? nullable.IsValueType : type.IsValueType; -#endif - } - public Type Type; -#if BGENERATOR - internal readonly bool IsNullable; - internal readonly bool IsValueType; -#endif -} - // Used to flag a type as needing to be turned into a protocol on output for Unified // For example: // [Protocolize, Wrap ("WeakDelegate")] diff --git a/src/generator.cs b/src/generator.cs index a1c982d9e1..df8cfe25fb 100644 --- a/src/generator.cs +++ b/src/generator.cs @@ -3269,7 +3269,7 @@ public partial class Generator : IMemberGatherer { string name = minfo.is_ctor ? GetGeneratedTypeName (mi.DeclaringType) : is_async ? GetAsyncName (mi) : mi.Name; // Some codepaths already write preservation info - PrintAttributes (minfo.mi, preserve:!alreadyPreserved, advice:true); + PrintAttributes (minfo.mi, preserve:!alreadyPreserved, advice:true, bindAs:true); if (!minfo.is_ctor && !is_async){ var prefix = ""; @@ -3375,8 +3375,10 @@ public partial class Generator : IMemberGatherer { } var bindAsAtt = GetBindAsAttribute (pi); - if (bindAsAtt != null) + if (bindAsAtt != null) { + PrintBindAsAttribute (pi, sb); sb.Append (FormatType (bindAsAtt.Type.DeclaringType, bindAsAtt.Type, protocolized)); + } else sb.Append (FormatType (declaringType, parType, protocolized)); @@ -4512,7 +4514,7 @@ public partial class Generator : IMemberGatherer { // we must look if the type has an [Availability] attribute PrintPlatformAttributesIfInlined (minfo); - PrintAttributes (pi, preserve:true, advice:true); + PrintAttributes (pi, preserve:true, advice:true, bindAs:true); string propertyTypeName; if (minfo.protocolize) { @@ -5533,16 +5535,42 @@ public partial class Generator : IMemberGatherer { print ($"[NotImplemented ({Quote (p.Message)})]"); } - public void PrintAttributes (MemberInfo mi, bool platform = false, bool preserve = false, bool advice = false, bool notImplemented = false) + public void PrintBindAsAttribute (ICustomAttributeProvider mi, StringBuilder sb = null) + { + var p = GetBindAsAttribute (mi); + if (p == null) + return; + + var property = mi as PropertyInfo; + var method = mi as MethodInfo; + var param = mi as ParameterInfo; + var originalType = method?.ReturnType ?? property?.PropertyType; + originalType = originalType ?? param?.ParameterType; + + var type = TypeManager.GetUnderlyingNullableType (p.Type) ?? p.Type; + var pReturn = method != null ? "return: " : string.Empty; + var pBoolean = p.IsNullable ? "?" : string.Empty; + + var attribstr = $"[{pReturn}BindAs (typeof ({type.FullName}{pBoolean}), OriginalType = typeof ({originalType.FullName}))]"; + + if (sb != null) + sb.Append ($"{attribstr} "); + else + print (attribstr); + } + + public void PrintAttributes (ICustomAttributeProvider mi, bool platform = false, bool preserve = false, bool advice = false, bool notImplemented = false, bool bindAs = false) { if (platform) - PrintPlatformAttributes (mi); + PrintPlatformAttributes (mi as MemberInfo); if (preserve) PrintPreserveAttribute (mi); if (advice) PrintAdviceAttribute (mi); if (notImplemented) PrintNotImplementedAttribute (mi); + if (bindAs) + PrintBindAsAttribute (mi); } public void ComputeLibraryName (FieldAttribute fieldAttr, Type type, string propertyName, out string library_name, out string library_path) diff --git a/tests/generator/bindas1048error.cs b/tests/generator/bindas1048error.cs index 0de14d9792..5462f42801 100644 --- a/tests/generator/bindas1048error.cs +++ b/tests/generator/bindas1048error.cs @@ -2,6 +2,7 @@ using System; using System.Drawing; using Foundation; using CoreMedia; +using ObjCRuntime; namespace BindAs1048ErrorTests { diff --git a/tests/generator/bindas1049error.cs b/tests/generator/bindas1049error.cs index d39169f86c..fd531a3b75 100644 --- a/tests/generator/bindas1049error.cs +++ b/tests/generator/bindas1049error.cs @@ -2,6 +2,7 @@ using System; using System.Drawing; using Foundation; using CoreMedia; +using ObjCRuntime; namespace BindAs1049ErrorTests { diff --git a/tests/generator/bindas1050modelerror.cs b/tests/generator/bindas1050modelerror.cs index c55af97774..5836983f2e 100644 --- a/tests/generator/bindas1050modelerror.cs +++ b/tests/generator/bindas1050modelerror.cs @@ -2,6 +2,7 @@ using System; using System.Drawing; using Foundation; using CoreAnimation; +using ObjCRuntime; namespace BindAs1050ModelErrorTests { diff --git a/tests/generator/bindas1050protocolerror.cs b/tests/generator/bindas1050protocolerror.cs index fde0a95686..8524c20fbe 100644 --- a/tests/generator/bindas1050protocolerror.cs +++ b/tests/generator/bindas1050protocolerror.cs @@ -2,6 +2,7 @@ using System; using System.Drawing; using Foundation; using CoreAnimation; +using ObjCRuntime; namespace BindAs1050ProtocolErrorTests { diff --git a/tests/generator/bindastests.cs b/tests/generator/bindastests.cs index 8b93cd2fa6..80f03ce3e9 100644 --- a/tests/generator/bindastests.cs +++ b/tests/generator/bindastests.cs @@ -3,6 +3,7 @@ using System.Drawing; using Foundation; using CoreMedia; using CoreAnimation; +using ObjCRuntime; namespace BindAsTests { @@ -80,9 +81,10 @@ namespace BindAsTests { [Export ("getScrollArrayEnum:")] NSString [] GetScrollArrayEnum ([BindAs (typeof (CAScroll []))] NSString [] arg1); - [return: BindAs (typeof (CAScroll? []))] - [Export ("getScrollArrayNullableEnum:")] - NSString [] GetScrollArrayEnumNullable ([BindAs (typeof (CAScroll? []))] NSString [] arg1); + // Bug #57797 + // [return: BindAs (typeof (CAScroll? []))] + // [Export ("getScrollArrayNullableEnum:")] + // NSString [] GetScrollArrayEnumNullable ([BindAs (typeof (CAScroll? []))] NSString [] arg1); [BindAs (typeof (CAScroll []))] [Export ("scrollEnumArray2")] @@ -92,9 +94,10 @@ namespace BindAsTests { [Export ("getScrollArrayEnum2:")] NSNumber [] GetScrollArrayEnum2 ([BindAs (typeof (CAScroll []))] NSNumber [] arg1); - [return: BindAs (typeof (CAScroll? []))] - [Export ("getScrollArrayNullableEnum2:")] - NSNumber [] GetScrollArrayNullableEnum2 ([BindAs (typeof (CAScroll? []))] NSNumber [] arg1); + // Bug #57797 + // [return: BindAs (typeof (CAScroll? []))] + // [Export ("getScrollArrayNullableEnum2:")] + // NSNumber [] GetScrollArrayNullableEnum2 ([BindAs (typeof (CAScroll? []))] NSNumber [] arg1); [BindAs (typeof (CMTime []))] [Export ("timeEnumArray")] @@ -104,9 +107,10 @@ namespace BindAsTests { [Export ("getTimeEnumArray:")] NSValue [] GetTimeEnumArray ([BindAs (typeof (CMTime []))] NSValue [] arg1); - [return: BindAs (typeof (CMTime? []))] - [Export ("getTimeEnumNullableArray:")] - NSValue [] GetTimeEnumNullableArray ([BindAs (typeof (CMTime? []))] NSValue [] arg1); + // Bug #57797 + // [return: BindAs (typeof (CMTime? []))] + // [Export ("getTimeEnumNullableArray:")] + // NSValue [] GetTimeEnumNullableArray ([BindAs (typeof (CMTime? []))] NSValue [] arg1); [BindAs (typeof (CAScroll))] [Export ("scrollFooEnum")] From 73a886701920083def343bd8713f3ef11e1fbd18 Mon Sep 17 00:00:00 2001 From: Alex Soto Date: Tue, 20 Jun 2017 23:29:49 -0500 Subject: [PATCH 018/145] [generator] Add nullcheck (?.) when using nullables with BindAs Generator diff: https://gist.github.com/rolfbjarne/8dcc78f9355b4fc621e98e3e7544baa9 --- src/generator.cs | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/src/generator.cs b/src/generator.cs index df8cfe25fb..7d1e766326 100644 --- a/src/generator.cs +++ b/src/generator.cs @@ -1388,7 +1388,9 @@ public partial class Generator : IMemberGatherer { throw new BindingException (1050, true, "[BindAs] cannot be used inside Protocol or Model types. Type: {0}", declaringType.Name); var attrib = GetBindAsAttribute (minfo.mi); - var retType = TypeManager.GetUnderlyingNullableType (attrib.Type) ?? attrib.Type; + var nullableRetType = TypeManager.GetUnderlyingNullableType (attrib.Type); + var isNullable = nullableRetType != null; + var retType = isNullable ? nullableRetType : attrib.Type; var isValueType = retType.IsValueType; var append = string.Empty; var property = minfo.mi as PropertyInfo; @@ -1405,6 +1407,8 @@ public partial class Generator : IMemberGatherer { else throw new BindingException (1049, true, GetBindAsExceptionString ("unbox", retType.Name, originalReturnType.Name, "container", minfo.mi.Name)); } + if (isNullable) + append = $"?{append}"; } else if (originalReturnType == TypeManager.NSValue) { if (!NSValueReturnMap.TryGetValue (retType, out append)) { // HACK: These are problematic for X.M due to we do not ship System.Drawing for Full profile @@ -1413,22 +1417,28 @@ public partial class Generator : IMemberGatherer { else throw new BindingException (1049, true, GetBindAsExceptionString ("unbox", retType.Name, originalReturnType.Name, "container", minfo.mi.Name)); } + if (isNullable) + append = $"?{append}"; } else if (originalReturnType == TypeManager.NSString && IsSmartEnum (retType)) { append = $"{FormatType (retType.DeclaringType, retType)}Extensions.GetValue ("; } else if (originalReturnType.IsArray) { var arrType = originalReturnType.GetElementType (); - var arrRetType = TypeManager.GetUnderlyingNullableType (retType.GetElementType ()) ?? retType.GetElementType (); + var nullableElementType = TypeManager.GetUnderlyingNullableType (retType.GetElementType ()); + var arrIsNullable = nullableElementType != null; + var arrRetType = arrIsNullable ? nullableElementType : retType.GetElementType (); var valueFetcher = string.Empty; if (arrType == TypeManager.NSString) append = $"ptr => {{\n\tusing (var str = Runtime.GetNSObject (ptr)) {{\n\t\treturn {FormatType (arrRetType.DeclaringType, arrRetType)}Extensions.GetValue (str);\n\t}}\n}}"; else if (arrType == TypeManager.NSNumber) { - if (NSNumberReturnMap.TryGetValue (arrRetType, out valueFetcher) || arrRetType.IsEnum) - append = string.Format ("ptr => {{\n\tusing (var num = Runtime.GetNSObject (ptr)) {{\n\t\treturn ({1}) num{0};\n\t}}\n}}", arrRetType.IsEnum ? ".Int32Value" : valueFetcher, FormatType (arrRetType.DeclaringType, arrRetType)); + if (NSNumberReturnMap.TryGetValue (arrRetType, out valueFetcher) || arrRetType.IsEnum) { + var getterStr = string.Format ("{0}{1}", arrIsNullable ? "?" : string.Empty, arrRetType.IsEnum ? ".Int32Value" : valueFetcher); + append = string.Format ("ptr => {{\n\tusing (var num = Runtime.GetNSObject (ptr)) {{\n\t\treturn ({1}) num{0};\n\t}}\n}}", getterStr, FormatType (arrRetType.DeclaringType, arrRetType)); + } else throw new BindingException (1049, true, GetBindAsExceptionString ("unbox", retType.Name, arrType.Name, "array", minfo.mi.Name)); } else if (arrType == TypeManager.NSValue) { if (arrRetType.Name == "RectangleF" || arrRetType.Name == "SizeF" || arrRetType.Name == "PointF") - valueFetcher = $".{arrRetType.Name}Value"; + valueFetcher = $"{(arrIsNullable ? "?" : string.Empty)}.{arrRetType.Name}Value"; else if (!NSValueReturnMap.TryGetValue (arrRetType, out valueFetcher)) throw new BindingException (1049, true, GetBindAsExceptionString ("unbox", retType.Name, arrType.Name, "array", minfo.mi.Name)); From 50f682fab4a4eeca88f8486147f5f97367e907ed Mon Sep 17 00:00:00 2001 From: Rolf Bjarne Kvinge Date: Fri, 23 Jun 2017 12:58:30 +0200 Subject: [PATCH 019/145] [generator] Don't try creating NSNumber/NSValue for null. Generator diff (empty): https://gist.github.com/rolfbjarne/eaf290c19bdd1845a2bdd40d5fe0d88f --- src/generator.cs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/generator.cs b/src/generator.cs index 7d1e766326..9a1799bf07 100644 --- a/src/generator.cs +++ b/src/generator.cs @@ -1264,13 +1264,14 @@ public partial class Generator : IMemberGatherer { var isEnum = retType.IsEnum; var parameterName = pi != null ? pi.Name.GetSafeParamName () : "value"; var denullify = isNullable ? ".Value" : string.Empty; + var nullCheck = isNullable ? $"{parameterName} == null ? null : " : string.Empty; if (isNullable || !isValueType) temp = string.Format ("{0} == null ? null : ", parameterName); if (originalType == TypeManager.NSNumber) { var enumCast = isEnum ? $"(int)" : string.Empty; - temp = string.Format ("new NSNumber ({2}{1}{0});", denullify, parameterName, enumCast); + temp = string.Format ("{3}new NSNumber ({2}{1}{0});", denullify, parameterName, enumCast, nullCheck); } else if (originalType == TypeManager.NSValue) { var typeStr = string.Empty; @@ -1281,7 +1282,7 @@ public partial class Generator : IMemberGatherer { else throw new BindingException (1049, true, GetBindAsExceptionString ("box", retType.Name, originalType.Name, "container", minfo?.mi?.Name ?? pi?.Name)); } - temp = string.Format ("NSValue.From{0} ({2}{1});", typeStr, denullify, parameterName); + temp = string.Format ("{3}NSValue.From{0} ({2}{1});", typeStr, denullify, parameterName, nullCheck); } else if (originalType == TypeManager.NSString && IsSmartEnum (retType)) { temp = string.Format ("{1}{0}.GetConstant ();", denullify, parameterName); } else if (originalType.IsArray) { From eb3d329bb44612c7042c873a5d5e9fc99272f337 Mon Sep 17 00:00:00 2001 From: Rolf Bjarne Kvinge Date: Mon, 3 Jul 2017 14:40:50 +0200 Subject: [PATCH 020/145] [generator] Add helpful make target to only rebuild the generator. --- src/Makefile.generator | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/Makefile.generator b/src/Makefile.generator index 41ffb3f935..709072ca28 100644 --- a/src/Makefile.generator +++ b/src/Makefile.generator @@ -322,3 +322,11 @@ $(MAC_BUILD_DIR)/Xamarin.Mac-%.BindingAttributes.dll: generator-attributes.cs Ma $(Q) mkdir -p $(dir $@) $(Q_GEN) $(SYSTEM_MONO) --debug $(PMCS_EXE) -profile:"$(TOP)/src/pmcs-profiles/$*" -compiler:$(SYSTEM_MCS) -global-replace:"^XamCore.=" -out:$@ -debug generator-attributes.cs -target:library endif + +bgen: \ + $(IOS_DESTDIR)$(MONOTOUCH_PREFIX)/lib/bgen/monotouch.BindingAttributes.dll \ + $(IOS_DESTDIR)$(MONOTOUCH_PREFIX)/lib/bgen/Xamarin.iOS.BindingAttributes.dll \ + $(IOS_DESTDIR)$(MONOTOUCH_PREFIX)/lib/bgen/bgen.exe \ + $(IOS_DESTDIR)$(MONOTOUCH_PREFIX)/bin/bgen \ + + From 1c779fc1769017fa811698234cc51998847b8497 Mon Sep 17 00:00:00 2001 From: Rolf Bjarne Kvinge Date: Mon, 3 Jul 2017 15:29:20 +0200 Subject: [PATCH 021/145] [src] Change Stret.Need* to take the return type itself, instead of the MethodInfo. This makes it possible to check if a type that isn't the return type of a MethodInfo needs stret. --- src/ObjCRuntime/Registrar.cs | 10 +++++----- src/ObjCRuntime/Stret.cs | 20 ++++++++++---------- src/generator.cs | 16 ++++++++-------- 3 files changed, 23 insertions(+), 23 deletions(-) diff --git a/src/ObjCRuntime/Registrar.cs b/src/ObjCRuntime/Registrar.cs index 6c02135f64..fff21ff744 100644 --- a/src/ObjCRuntime/Registrar.cs +++ b/src/ObjCRuntime/Registrar.cs @@ -621,17 +621,17 @@ namespace XamCore.Registrar { var mi = (System.Reflection.MethodInfo) Method; bool is_stret; #if __WATCHOS__ - is_stret = Runtime.Arch == Arch.DEVICE ? Stret.ArmNeedStret (mi) : Stret.X86NeedStret (mi); + is_stret = Runtime.Arch == Arch.DEVICE ? Stret.ArmNeedStret (mi.ReturnType) : Stret.X86NeedStret (mi.ReturnType); #elif MONOMAC - is_stret = IntPtr.Size == 8 ? Stret.X86_64NeedStret (mi) : Stret.X86NeedStret (mi); + is_stret = IntPtr.Size == 8 ? Stret.X86_64NeedStret (mi.ReturnType) : Stret.X86NeedStret (mi.ReturnType); #elif __IOS__ if (Runtime.Arch == Arch.DEVICE) { - is_stret = IntPtr.Size == 4 && Stret.ArmNeedStret (mi); + is_stret = IntPtr.Size == 4 && Stret.ArmNeedStret (mi.ReturnType); } else { - is_stret = IntPtr.Size == 4 ? Stret.X86NeedStret (mi) : Stret.X86_64NeedStret (mi); + is_stret = IntPtr.Size == 4 ? Stret.X86NeedStret (mi.ReturnType) : Stret.X86_64NeedStret (mi.ReturnType); } #elif __TVOS__ - is_stret = Runtime.Arch == Arch.SIMULATOR && Stret.X86_64NeedStret (mi); + is_stret = Runtime.Arch == Arch.SIMULATOR && Stret.X86_64NeedStret (mi.ReturnType); #else #error unknown architecture #endif diff --git a/src/ObjCRuntime/Stret.cs b/src/ObjCRuntime/Stret.cs index 4666d69af7..47528c1bfa 100644 --- a/src/ObjCRuntime/Stret.cs +++ b/src/ObjCRuntime/Stret.cs @@ -111,7 +111,7 @@ namespace XamCore.ObjCRuntime } } - public static bool ArmNeedStret (MethodInfo mi) + public static bool ArmNeedStret (Type returnType) { bool has32bitArm; #if BGENERATOR @@ -124,7 +124,7 @@ namespace XamCore.ObjCRuntime if (!has32bitArm) return false; - Type t = mi.ReturnType; + Type t = returnType; if (!t.IsValueType || t.IsEnum || IsMagicTypeOrCorlibType (t)) return false; @@ -184,9 +184,9 @@ namespace XamCore.ObjCRuntime return true; } - public static bool X86NeedStret (MethodInfo mi) + public static bool X86NeedStret (Type returnType) { - Type t = mi.ReturnType; + Type t = returnType; if (!t.IsValueType || t.IsEnum || IsMagicTypeOrCorlibType (t)) return false; @@ -203,12 +203,12 @@ namespace XamCore.ObjCRuntime return false; } - public static bool X86_64NeedStret (MethodInfo mi) + public static bool X86_64NeedStret (Type returnType) { if (!isUnified) return false; - Type t = mi.ReturnType; + Type t = returnType; if (!t.IsValueType || t.IsEnum || IsMagicTypeOrCorlibType (t)) return false; @@ -341,15 +341,15 @@ namespace XamCore.ObjCRuntime } } - public static bool NeedStret (MethodInfo mi) + public static bool NeedStret (Type returnType) { - if (X86NeedStret (mi)) + if (X86NeedStret (returnType)) return true; - if (X86_64NeedStret (mi)) + if (X86_64NeedStret (returnType)) return true; - if (ArmNeedStret (mi)) + if (ArmNeedStret (returnType)) return true; return false; diff --git a/src/generator.cs b/src/generator.cs index 9a1799bf07..46c91d102e 100644 --- a/src/generator.cs +++ b/src/generator.cs @@ -1972,12 +1972,12 @@ public partial class Generator : IMemberGatherer { try { if (Compat) { - bool arm_stret = Stret.ArmNeedStret (mi); + bool arm_stret = Stret.ArmNeedStret (mi.ReturnType); bool is_aligned = AttributeManager.HasAttribute (mi); RegisterMethod (arm_stret, mi, MakeSig (mi, arm_stret, arm_stret && is_aligned), arm_stret && is_aligned); RegisterMethod (arm_stret, mi, MakeSuperSig (mi, arm_stret, arm_stret && is_aligned), arm_stret && is_aligned); - bool x86_stret = Stret.X86NeedStret (mi); + bool x86_stret = Stret.X86NeedStret (mi.ReturnType); if (x86_stret != arm_stret){ RegisterMethod (x86_stret, mi, MakeSig (mi, x86_stret, x86_stret && is_aligned), x86_stret && is_aligned); RegisterMethod (x86_stret, mi, MakeSuperSig (mi, x86_stret, x86_stret && is_aligned), x86_stret && is_aligned); @@ -3602,8 +3602,8 @@ public partial class Generator : IMemberGatherer { return; } - bool arm_stret = Stret.ArmNeedStret (mi); - bool x86_stret = Stret.X86NeedStret (mi); + bool arm_stret = Stret.ArmNeedStret (mi.ReturnType); + bool x86_stret = Stret.X86NeedStret (mi.ReturnType); bool aligned = AttributeManager.HasAttribute (mi); if (CurrentPlatform == PlatformName.MacOSX) { @@ -3629,9 +3629,9 @@ public partial class Generator : IMemberGatherer { void GenerateNewStyleInvoke (bool supercall, MethodInfo mi, MemberInformation minfo, string selector, string[] args, bool assign_to_temp, Type category_type) { - bool arm_stret = Stret.ArmNeedStret (mi); - bool x86_stret = Stret.X86NeedStret (mi); - bool x64_stret = Stret.X86_64NeedStret (mi); + bool arm_stret = Stret.ArmNeedStret (mi.ReturnType); + bool x86_stret = Stret.X86NeedStret (mi.ReturnType); + bool x64_stret = Stret.X86_64NeedStret (mi.ReturnType); bool dual_enum = HasNativeEnumInSignature (mi); bool is_stret_multi = arm_stret || x86_stret || x64_stret; bool need_multi_path = is_stret_multi || dual_enum; @@ -3984,7 +3984,7 @@ public partial class Generator : IMemberGatherer { bool CheckNeedStret (MethodInfo mi) { try { - return Stret.NeedStret (mi); + return Stret.NeedStret (mi.ReturnType); } catch (TypeLoadException ex) { throw new BindingException (0001, true, $"The .NET runtime could not load the {mi.ReturnType.Name} type. Message: {ex.Message}"); From cc66404f6413407a172870a0d07a7bca478c0bc8 Mon Sep 17 00:00:00 2001 From: Rolf Bjarne Kvinge Date: Mon, 3 Jul 2017 15:39:12 +0200 Subject: [PATCH 022/145] [generator] Generate a 'GetConstant (T?)' and 'GetNullableValue' for smart enums. This makes it possible to also generate code that works properly with nullable smart enums (both the managed enum and the native string). Generator diff: https://gist.github.com/rolfbjarne/90324a90de2d812eec078756d3ad2b66 --- src/generator-enums.cs | 24 ++++++++++++++++++++++++ src/generator.cs | 8 ++++---- 2 files changed, 28 insertions(+), 4 deletions(-) diff --git a/src/generator-enums.cs b/src/generator-enums.cs index 8eba548a1c..22cadb74b3 100644 --- a/src/generator-enums.cs +++ b/src/generator-enums.cs @@ -165,6 +165,18 @@ public partial class Generator { print (""); } + print ("public static NSString GetConstant (this {0}? self)", type.Name); + print ("{"); + indent++; + print ("if (self == null)"); + indent++; + print ("return null;"); + indent--; + print ("return GetConstant (self.Value);"); + indent--; + print ("}"); + print (""); + print ("public static NSString GetConstant (this {0} self)", type.Name); print ("{"); indent++; @@ -189,6 +201,18 @@ public partial class Generator { print (""); + print ("public static {0}? GetNullableValue (NSString constant)", type.Name); + print ("{"); + indent++; + print ("if (constant == null)"); + indent++; + print ("return null;"); + indent--; + print ("return GetValue (constant);"); + indent--; + print ("}"); + print (""); + print ("public static {0} GetValue (NSString constant)", type.Name); print ("{"); indent++; diff --git a/src/generator.cs b/src/generator.cs index 46c91d102e..63272def07 100644 --- a/src/generator.cs +++ b/src/generator.cs @@ -1284,14 +1284,14 @@ public partial class Generator : IMemberGatherer { } temp = string.Format ("{3}NSValue.From{0} ({2}{1});", typeStr, denullify, parameterName, nullCheck); } else if (originalType == TypeManager.NSString && IsSmartEnum (retType)) { - temp = string.Format ("{1}{0}.GetConstant ();", denullify, parameterName); + temp = $"{parameterName}.GetConstant ();"; } else if (originalType.IsArray) { var arrType = originalType.GetElementType (); var arrRetType = TypeManager.GetUnderlyingNullableType (retType.GetElementType ()) ?? retType.GetElementType (); var valueConverter = string.Empty; if (arrType == TypeManager.NSString) - valueConverter = $"o{denullify}.GetConstant (), {parameterName});"; + valueConverter = $"o.GetConstant (), {parameterName});"; else if (arrType == TypeManager.NSNumber) { var cast = arrRetType.IsEnum ? "(int)" : string.Empty; valueConverter = $"new NSNumber ({cast}o{denullify}), {parameterName});"; @@ -1421,7 +1421,7 @@ public partial class Generator : IMemberGatherer { if (isNullable) append = $"?{append}"; } else if (originalReturnType == TypeManager.NSString && IsSmartEnum (retType)) { - append = $"{FormatType (retType.DeclaringType, retType)}Extensions.GetValue ("; + append = $"{FormatType (retType.DeclaringType, retType)}Extensions.{(isNullable ? "GetNullableValue" : "GetValue")} ("; } else if (originalReturnType.IsArray) { var arrType = originalReturnType.GetElementType (); var nullableElementType = TypeManager.GetUnderlyingNullableType (retType.GetElementType ()); @@ -1429,7 +1429,7 @@ public partial class Generator : IMemberGatherer { var arrRetType = arrIsNullable ? nullableElementType : retType.GetElementType (); var valueFetcher = string.Empty; if (arrType == TypeManager.NSString) - append = $"ptr => {{\n\tusing (var str = Runtime.GetNSObject (ptr)) {{\n\t\treturn {FormatType (arrRetType.DeclaringType, arrRetType)}Extensions.GetValue (str);\n\t}}\n}}"; + append = $"ptr => {{\n\tusing (var str = Runtime.GetNSObject (ptr)) {{\n\t\treturn {FormatType (arrRetType.DeclaringType, arrRetType)}Extensions.{(isNullable ? "GetNullableValue" : "GetValue")} (str);\n\t}}\n}}"; else if (arrType == TypeManager.NSNumber) { if (NSNumberReturnMap.TryGetValue (arrRetType, out valueFetcher) || arrRetType.IsEnum) { var getterStr = string.Format ("{0}{1}", arrIsNullable ? "?" : string.Empty, arrRetType.IsEnum ? ".Int32Value" : valueFetcher); From e82c59815fdaf4636d995ddabd4c9285ffe41ed2 Mon Sep 17 00:00:00 2001 From: Rolf Bjarne Kvinge Date: Mon, 3 Jul 2017 19:06:06 +0200 Subject: [PATCH 023/145] [Foundation] Make NSArray.FromNSObjects return null on null input. This makes it easier to generate code that uses this function and which can get null input from Objective-C. --- src/Foundation/NSArray.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Foundation/NSArray.cs b/src/Foundation/NSArray.cs index 3405a9a788..37ba1ab521 100644 --- a/src/Foundation/NSArray.cs +++ b/src/Foundation/NSArray.cs @@ -64,7 +64,7 @@ namespace XamCore.Foundation { if (nsobjectificator == null) throw new ArgumentNullException (nameof (nsobjectificator)); if (items == null) - throw new ArgumentNullException (nameof (items)); + return null; var arr = new NSObject [items.Length]; for (int i = 0; i < items.Length; i++) { From fecf315fab1a5e5fb38d1e308e617d44935b8437 Mon Sep 17 00:00:00 2001 From: Rolf Bjarne Kvinge Date: Mon, 3 Jul 2017 19:16:33 +0200 Subject: [PATCH 024/145] [tests] Add generated runtime tests for the BindAs attribute. --- tests/test-libraries/.gitignore | 2 + tests/test-libraries/libtest.h | 3 + tests/test-libraries/libtest.m | 2 + tests/test-libraries/testgenerator.cs | 1128 ++++++++++++++++++++++++- tests/tests.sln | 28 + 5 files changed, 1160 insertions(+), 3 deletions(-) diff --git a/tests/test-libraries/.gitignore b/tests/test-libraries/.gitignore index dcb5821d82..444f92e71a 100644 --- a/tests/test-libraries/.gitignore +++ b/tests/test-libraries/.gitignore @@ -6,4 +6,6 @@ libtest-object.m libtest.structs.h libtest.properties.h libtest.decompile.m +libtest.methods.h +libtest.methods.m diff --git a/tests/test-libraries/libtest.h b/tests/test-libraries/libtest.h index 5f1918d86b..c2ed31508e 100644 --- a/tests/test-libraries/libtest.h +++ b/tests/test-libraries/libtest.h @@ -101,6 +101,9 @@ typedef unsigned int (^RegistrarTestBlock) (unsigned int magic); -(bool) testBlocks; -(void) idAsIntPtr: (id)p1; + +#include "libtest.methods.h" + -(void) outNSErrorOnStack:(int)i1 i:(int)i2 i:(int)i3 i:(int)i4 i:(int)i5 i:(int)i6 err:(NSError **)err; // 6 in regs, 7th (out) in mem (on all architectures) -(void) outNSErrorOnStack:(id)obj1 obj:(id)obj2 obj:(id)obj3 int64:(long long)l4 i:(int)i5 err:(NSError **)err; // 5 in regs, 6th (out) in mem (on at least x86-64) @end diff --git a/tests/test-libraries/libtest.m b/tests/test-libraries/libtest.m index cc6eab828c..b24420e9ae 100644 --- a/tests/test-libraries/libtest.m +++ b/tests/test-libraries/libtest.m @@ -429,6 +429,8 @@ static UltimateMachine *shared; // Nothing to do here. } +#include "libtest.methods.m" + -(void) outNSErrorOnStack:(int)i1 i:(int)i2 i:(int)i3 i:(int)i4 i:(int)i5 i:(int)i6 err:(NSError **)err { // Nothing to do here diff --git a/tests/test-libraries/testgenerator.cs b/tests/test-libraries/testgenerator.cs index a0fed5a378..506f6bfafd 100644 --- a/tests/test-libraries/testgenerator.cs +++ b/tests/test-libraries/testgenerator.cs @@ -49,6 +49,56 @@ static class C { static string [] structs = structs_and_stret.Select ((v) => v.IndexOf (':') >= 0 ? v.Substring (0, v.IndexOf (':')) : v).ToArray (); static Architecture [] strets = structs_and_stret.Select ((v) => v.IndexOf (':') >= 0 ? (Architecture) int.Parse (v.Substring (v.IndexOf (':') + 1)) : Architecture.None).ToArray (); + class BindAsData + { + public string Managed; + public string Native; + public string ManagedCondition; + public string ManagedNewExpression; + public string Map; + public string MapFrom; + } + + static BindAsData [] bindas_nsnumber = new [] { + new BindAsData { Managed = "Byte", Native = "uint8_t", ManagedNewExpression = "((byte) 1)", Map = ".ByteValue" }, + new BindAsData { Managed = "SByte", Native = "int8_t", ManagedNewExpression = "((sbyte) 1)", Map = ".SByteValue" }, + new BindAsData { Managed = "Int16", Native = "int16_t", ManagedNewExpression = "((short) 1)", Map = ".Int16Value" }, + new BindAsData { Managed = "UInt16", Native = "uint16_t", ManagedNewExpression = "((ushort) 1)", Map = ".UInt16Value" }, + new BindAsData { Managed = "Int32", Native = "int32_t", ManagedNewExpression = "((int) 1)", Map = ".Int32Value" }, + new BindAsData { Managed = "UInt32", Native = "uint32_t", ManagedNewExpression = "((uint) 1)", Map = ".UInt32Value" }, + new BindAsData { Managed = "Int64", Native = "int64_t", ManagedNewExpression = "((long) 1)", Map = ".Int64Value" }, + new BindAsData { Managed = "UInt64", Native = "uint64_t", ManagedNewExpression = "((ulong) 1)", Map = ".UInt64Value" }, + new BindAsData { Managed = "Single", Native = "float", ManagedNewExpression = "((float) 1.1)", Map = ".FloatValue" }, + new BindAsData { Managed = "Double", Native = "double", ManagedNewExpression = "((double) 1.2)", Map = ".DoubleValue" }, + new BindAsData { Managed = "nint", Native = "NSInteger", ManagedNewExpression = "((nint) 1)", Map = ".NIntValue" }, + new BindAsData { Managed = "nuint", Native = "NSUInteger", ManagedNewExpression = "((nuint) 1)", Map = ".NUIntValue" }, + new BindAsData { Managed = "nfloat", Native = "NSFloat", ManagedNewExpression = "((nfloat) 1)", Map = ".NFloatValue" }, + new BindAsData { Managed = "Boolean", Native = "BOOL", ManagedNewExpression = "true", Map = ".BoolValue" }, + }; + static BindAsData[] bindas_nsvalue = new [] { + new BindAsData { Managed = "CGAffineTransform", Native = "CGAffineTransform", ManagedNewExpression = "new CGAffineTransform (1, 2, 3, 4, 5, 6)", Map = ".CGAffineTransformValue", MapFrom = "FromCGAffineTransform" }, + new BindAsData { Managed = "NSRange", Native = "NSRange", ManagedNewExpression = "new NSRange (7, 8)", Map = ".RangeValue", MapFrom = "FromRange" }, + new BindAsData { Managed = "CGVector", Native = "CGVector", ManagedNewExpression = "new CGVector (9, 10)", Map = ".CGVectorValue", MapFrom = "FromCGVector" }, + new BindAsData { Managed = "SCNMatrix4", Native = "SCNMatrix4", ManagedNewExpression = "SCNMatrix4.Identity", Map = ".SCNMatrix4Value", MapFrom = "FromSCNMatrix4" }, + new BindAsData { Managed = "CLLocationCoordinate2D", Native = "CLLocationCoordinate2D", ManagedNewExpression = "new CLLocationCoordinate2D (11, 12)", Map = ".CoordinateValue", MapFrom = "FromMKCoordinate" }, + new BindAsData { Managed = "SCNVector3", Native = "SCNVector3", ManagedNewExpression = "new SCNVector3 (13, 14, 15)", Map = ".Vector3Value", MapFrom = "FromVector" }, + new BindAsData { Managed = "SCNVector4", Native = "SCNVector4", ManagedNewExpression = "new SCNVector4 (16, 17, 18, 19)", Map = ".Vector4Value", MapFrom = "FromVector" }, + new BindAsData { Managed = "CGPoint", Native = "CGPoint", ManagedCondition = "XAMCORE_2_0", ManagedNewExpression = "new CGPoint (19, 20)", Map = ".CGPointValue", MapFrom = "FromCGPoint" }, + new BindAsData { Managed = "CGSize", Native = "CGSize", ManagedCondition = "XAMCORE_2_0", ManagedNewExpression = "new CGSize (21, 22)", Map = ".CGSizeValue", MapFrom = "FromCGSize" }, + new BindAsData { Managed = "CGRect", Native = "CGRect", ManagedCondition = "XAMCORE_2_0", ManagedNewExpression = "new CGRect (23, 24, 25, 26)", Map = ".CGRectValue", MapFrom = "FromCGRect" }, + new BindAsData { Managed = "UIEdgeInsets", Native = "UIEdgeInsets", ManagedCondition = "HAVE_UIKIT", ManagedNewExpression = "new UIEdgeInsets (27, 28, 29, 30)", Map = ".UIEdgeInsetsValue", MapFrom = "FromUIEdgeInsets" }, + new BindAsData { Managed = "UIOffset", Native = "UIOffset", ManagedCondition = "HAVE_UIKIT", ManagedNewExpression = "new UIOffset (31, 32)", Map = ".UIOffsetValue", MapFrom = "FromUIOffset" }, + new BindAsData { Managed = "MKCoordinateSpan", Native = "MKCoordinateSpan", ManagedCondition = "HAVE_MAPKIT", ManagedNewExpression = "new MKCoordinateSpan (33, 34)", Map = ".CoordinateSpanValue", MapFrom = "FromMKCoordinateSpan" }, + new BindAsData { Managed = "CMTimeRange", Native = "CMTimeRange", ManagedCondition = "HAVE_COREMEDIA", ManagedNewExpression = "new CMTimeRange { Duration = new CMTime (37, 38), Start = new CMTime (39, 40) }", Map = ".CMTimeRangeValue", MapFrom = "FromCMTimeRange" }, + new BindAsData { Managed = "CMTime", Native = "CMTime", ManagedCondition = "HAVE_COREMEDIA", ManagedNewExpression = "new CMTime (35, 36)", Map = ".CMTimeValue", MapFrom = "FromCMTime" }, + new BindAsData { Managed = "CMTimeMapping", Native = "CMTimeMapping", ManagedCondition = "HAVE_COREMEDIA", ManagedNewExpression = "new CMTimeMapping { Source = new CMTimeRange { Duration = new CMTime (42, 43), Start = new CMTime (44, 45) } }", Map = ".CMTimeMappingValue", MapFrom = "FromCMTimeMapping" }, + new BindAsData { Managed = "CATransform3D", Native = "CATransform3D", ManagedCondition = "HAVE_COREANIMATION", ManagedNewExpression = "new CATransform3D { m11 = 41 }", Map = ".CATransform3DValue", MapFrom = "FromCATransform3D" }, + }; + + static BindAsData [] bindas_nsstring = new [] { + new BindAsData { Managed = "AVMediaTypes", ManagedNewExpression = "AVMediaTypes.Audio" }, + }; + static string GetNativeName (char t) { switch (t) { @@ -144,22 +194,178 @@ static class C { foreach (var s in structs) w.AppendLine ($"\t@property struct S{s} PS{s};"); + w.AppendLine (); + foreach (var v in bindas_nsnumber) { + w.AppendLine ($"\t@property (retain) NSNumber* P{v.Managed}Number;"); + w.AppendLine ($"\t@property (retain) NSArray * P{v.Managed}Array;"); + } + + w.AppendLine (); + foreach (var v in bindas_nsvalue) { + w.AppendLine ($"\t@property (retain) NSValue* P{v.Managed}Value;"); + w.AppendLine ($"\t@property (retain) NSArray * P{v.Managed}Array;"); + } + + w.AppendLine (); + foreach (var v in bindas_nsstring) { + w.AppendLine ($"\t@property (retain) NSString *PSmart{v.Managed}Property;"); + w.AppendLine ($"\t@property (retain) NSArray * PSmart{v.Managed}Properties;"); + } File.WriteAllText ("libtest.properties.h", w.ToString ()); } + static void WriteLibTestMethodsH () + { + var w = new StringBuilder (); + + w.AppendLine (); + foreach (var v in bindas_nsnumber) { + w.AppendLine ($"\t-(NSNumber *) get{v.Managed}NumberNonNullable;"); + w.AppendLine ($"\t-(void) set{v.Managed}NumberNonNullable: (NSNumber *) value;"); + w.AppendLine (); + w.AppendLine ($"\t-(NSNumber *) get{v.Managed}NumberNullable;"); + w.AppendLine ($"\t-(void) set{v.Managed}NumberNullable: (NSNumber *) value;"); + w.AppendLine (); + w.AppendLine ($"\t-(NSArray *) get{v.Managed}Array;"); + w.AppendLine ($"\t-(void) set{v.Managed}Array: (NSArray *) value;"); + w.AppendLine (); + } + + w.AppendLine (); + foreach (var v in bindas_nsvalue) { + w.AppendLine ($"\t-(NSValue *) get{v.Managed}ValueNonNullable;"); + w.AppendLine ($"\t-(void) set{v.Managed}ValueNonNullable: (NSValue *) value;"); + w.AppendLine (); + w.AppendLine ($"\t-(NSValue *) get{v.Managed}ValueNullable;"); + w.AppendLine ($"\t-(void) set{v.Managed}ValueNullable: (NSValue *) value;"); + w.AppendLine (); + w.AppendLine ($"\t-(NSArray *) get{v.Managed}Array;"); + w.AppendLine ($"\t-(void) set{v.Managed}Array: (NSArray *) value;"); + w.AppendLine (); + } + + w.AppendLine (); + foreach (var v in bindas_nsstring) { + // plain value + w.AppendLine ($"\t-(NSString *) getSmart{v.Managed}Value;"); + w.AppendLine ($"\t-(void) setSmart{v.Managed}Value: (NSString *) value;"); + w.AppendLine (); + + // nullable + w.AppendLine ($"\t-(NSString *) getSmartNullable{v.Managed}Value;"); + w.AppendLine ($"\t-(void) setSmartNullable{v.Managed}Value: (NSString *) value;"); + w.AppendLine (); + + // array of plain value + w.AppendLine ($"\t-(NSArray *) getSmart{v.Managed}Values;"); + w.AppendLine ($"\t-(void) setSmart{v.Managed}Values: (NSArray *) value;"); + w.AppendLine (); + } + + File.WriteAllText ("libtest.methods.h", w.ToString ()); + } + + static void WriteLibTestMethodsM () + { + var w = new StringBuilder (); + + w.AppendLine (); + foreach (var v in bindas_nsnumber) { + w.AppendLine ($"\t-(NSNumber *) get{v.Managed}NumberNonNullable {{ return self.P{v.Managed}Number; }}"); + w.AppendLine ($"\t-(void) set{v.Managed}NumberNonNullable: (NSNumber *) value {{ self.P{v.Managed}Number = value; }}"); + w.AppendLine (); + w.AppendLine ($"\t-(NSNumber *) get{v.Managed}NumberNullable {{ return self.P{v.Managed}Number; }}"); + w.AppendLine ($"\t-(void) set{v.Managed}NumberNullable: (NSNumber *) value {{ self.P{v.Managed}Number = value; }}"); + w.AppendLine (); + w.AppendLine ($"\t-(NSArray *) get{v.Managed}Array {{ return self.P{v.Managed}Array; }}"); + w.AppendLine ($"\t-(void) set{v.Managed}Array: (NSArray *) value {{ self.P{v.Managed}Array = value; }}"); + w.AppendLine (); + } + + w.AppendLine (); + foreach (var v in bindas_nsvalue) { + w.AppendLine ($"\t-(NSValue *) get{v.Managed}ValueNonNullable {{ return self.P{v.Managed}Value; }}"); + w.AppendLine ($"\t-(void) set{v.Managed}ValueNonNullable: (NSValue *) value {{ self.P{v.Managed}Value = value; }}"); + w.AppendLine (); + w.AppendLine ($"\t-(NSValue *) get{v.Managed}ValueNullable {{ return self.P{v.Managed}Value; }}"); + w.AppendLine ($"\t-(void) set{v.Managed}ValueNullable: (NSValue *) value {{ self.P{v.Managed}Value = value; }}"); + w.AppendLine (); + w.AppendLine ($"\t-(NSArray *) get{v.Managed}Array {{ return self.P{v.Managed}Array; }}"); + w.AppendLine ($"\t-(void) set{v.Managed}Array: (NSArray *) value {{ self.P{v.Managed}Array = value; }}"); + w.AppendLine (); + } + + w.AppendLine (); + foreach (var v in bindas_nsstring) { + // plain value + w.AppendLine ($"\t-(NSString *) getSmart{v.Managed}Value {{ return self.PSmart{v.Managed}Property; }}"); + w.AppendLine ($"\t-(void) setSmart{v.Managed}Value: (NSString *) value {{ self.PSmart{v.Managed}Property = value; }}"); + w.AppendLine (); + + // nullable + w.AppendLine ($"\t-(NSString *) getSmartNullable{v.Managed}Value {{ return self.PSmart{v.Managed}Property; }}"); + w.AppendLine ($"\t-(void) setSmartNullable{v.Managed}Value: (NSString *) value {{ self.PSmart{v.Managed}Property = value; }}"); + w.AppendLine (); + + // array of plain value + w.AppendLine ($"\t-(NSArray *) getSmart{v.Managed}Values {{ return self.PSmart{v.Managed}Properties; }}"); + w.AppendLine ($"\t-(void) setSmart{v.Managed}Values: (NSArray *) value {{ self.PSmart{v.Managed}Properties = value; }}"); + w.AppendLine (); + } + + File.WriteAllText ("libtest.methods.m", w.ToString ()); + } + + static void WriteFrameworkDefines (StringBuilder w) + { + w.AppendLine (@" +#if __IOS__ || __MACOS__ || __TVOS__ +#define HAVE_COREANIMATION +#endif + +#if __IOS__ || __MACOS__ || __TVOS__ +#define HAVE_COREMEDIA +#endif + +#if __IOS__ || __WATCHOS__ || __TVOS__ +#define HAVE_UIKIT +#endif + +#if XAMCORE_2_0 +#define HAVE_MAPKIT +#endif"); + + } + static void WriteApiDefinition () { var w = new StringBuilder (); - - w.AppendLine (@"using System; + WriteFrameworkDefines (w); + w.AppendLine (@" +using System; #if !__WATCHOS__ using System.Drawing; #endif #if __UNIFIED__ -using ObjCRuntime; +using AVFoundation; +#if HAVE_COREANIMATION +using CoreAnimation; +#endif +using CoreGraphics; +using CoreLocation; +#if HAVE_COREMEDIA +using CoreMedia; +#endif using Foundation; +#if HAVE_MAPKIT +using MapKit; +#endif +using ObjCRuntime; +using SceneKit; +#if HAVE_UIKIT using UIKit; +#endif #else using MonoTouch.ObjCRuntime; using MonoTouch.Foundation; @@ -177,6 +383,336 @@ namespace Bindings.Test { w.AppendLine (); } + w.AppendLine ("\t\t// BindAs: NSNumber"); + foreach (var v in bindas_nsnumber) { + if (v.ManagedCondition != null) + w.AppendLine ($"#if {v.ManagedCondition}"); + + // no BindAs + + w.AppendLine ($"\t\t[Export (\"P{v.Managed}Number\")]"); + w.AppendLine ($"\t\tNSNumber P{v.Managed}Number {{ get; set; }}"); + + // plain value + w.AppendLine (); + w.AppendLine ("\t\t[Sealed]"); + w.AppendLine ($"\t\t[Export (\"P{v.Managed}Number\")]"); + w.AppendLine ($"\t\t[BindAs (typeof ({v.Managed}))]"); + w.AppendLine ($"\t\tNSNumber P{v.Managed}NumberNonNullable {{ get; set; }}"); + + w.AppendLine (); + w.AppendLine ($"\t\t[Export (\"get{v.Managed}NumberNonNullable\")]"); + w.AppendLine ($"\t\t[return: BindAs (typeof ({v.Managed}))]"); + w.AppendLine ($"\t\t[return: NullAllowed] // This should be the default"); + w.AppendLine ($"\t\tNSNumber Get{v.Managed}NumberNonNullable ();"); + + w.AppendLine (); + w.AppendLine ($"\t\t[Export (\"set{v.Managed}NumberNonNullable:\")]"); + w.AppendLine ($"\t\tvoid Set{v.Managed}NumberNonNullable ([BindAs (typeof ({v.Managed}))] NSNumber value);"); + + // nullable value + w.AppendLine (); + w.AppendLine ("\t\t[Sealed]"); + w.AppendLine ($"\t\t[Export (\"P{v.Managed}Number\")]"); + w.AppendLine ($"\t\t[BindAs (typeof ({v.Managed}?))]"); + w.AppendLine ($"\t\t[NullAllowed] // This should be the default"); + w.AppendLine ($"\t\tNSNumber P{v.Managed}NumberNullable {{ get; set; }}"); + + w.AppendLine (); + w.AppendLine ($"\t\t[Export (\"get{v.Managed}NumberNullable\")]"); + w.AppendLine ($"\t\t[return: BindAs (typeof ({v.Managed}?))]"); + w.AppendLine ($"\t\tNSNumber Get{v.Managed}NumberNullable ();"); + + w.AppendLine (); + w.AppendLine ($"\t\t[Export (\"set{v.Managed}NumberNullable:\")]"); + w.AppendLine ($"\t\tvoid Set{v.Managed}NumberNullable ([BindAs (typeof ({v.Managed}?))] [NullAllowed /* this should be the default */] NSNumber value);"); + + // ref/out plain value is not supported (error BI1048: bgen: Unsupported type Boolean decorated with [BindAs]) + // ref/out nullable value is not supported (error BI1048: bgen: Unsupported type Boolean decorated with [BindAs]) + + // array of plain value + w.AppendLine (); + w.AppendLine ("\t\t[Sealed]"); + w.AppendLine ($"\t\t[Export (\"P{v.Managed}Array\")]"); + w.AppendLine ($"\t\t[BindAs (typeof ({v.Managed}[]))]"); + w.AppendLine ($"\t\t[NullAllowed]"); + w.AppendLine ($"\t\tNSNumber[] P{v.Managed}Array {{ get; set; }}"); + + w.AppendLine (); + w.AppendLine ($"\t\t[Export (\"get{v.Managed}Array\")]"); + w.AppendLine ($"\t\t[return: BindAs (typeof ({v.Managed}[]))]"); + w.AppendLine ($"\t\t[return: NullAllowed]"); + w.AppendLine ($"\t\tNSNumber[] Get{v.Managed}Array ();"); + + w.AppendLine (); + w.AppendLine ($"\t\t[Export (\"set{v.Managed}Array:\")]"); + w.AppendLine ($"\t\tvoid Set{v.Managed}Array ([NullAllowed] [BindAs (typeof ({v.Managed}[]))] NSNumber[] value);"); + + // multidimensional array of plain value + // https://bugzilla.xamarin.com/show_bug.cgi?id=57795 + //w.AppendLine (); + //w.AppendLine ("\t\t[Sealed]"); + //w.AppendLine ($"\t\t[Export (\"P{v.Managed}Multi1Array\")]"); + //w.AppendLine ($"\t\t[BindAs (typeof ({v.Managed}[,]))]"); + //w.AppendLine ($"\t\tNSNumber[,] P{v.Managed}Multi1ArrayValue {{ get; set; }}"); + + // BI1048: bgen: Unsupported type Boolean[][] decorated with [BindAs] + //w.AppendLine (); + //w.AppendLine ("\t\t[Sealed]"); + //w.AppendLine ($"\t\t[Export (\"P{v.Managed}Multi2Array\")]"); + //w.AppendLine ($"\t\t[BindAs (typeof ({v.Managed}[][]))]"); + //w.AppendLine ($"\t\tNSNumber[][] P{v.Managed}Multi2ArrayValue {{ get; set; }}"); + + // array of nullable value + // https://bugzilla.xamarin.com/show_bug.cgi?id=57797 + //w.AppendLine (); + //w.AppendLine ("\t\t[Sealed]"); + //w.AppendLine ($"\t\t[Export (\"P{v.Managed}NullableArray\")]"); + //w.AppendLine ($"\t\t[BindAs (typeof ({v.Managed}?[]))]"); + //w.AppendLine ($"\t\tNSNumber[] P{v.Managed}NullableArrayValue {{ get; set; }}"); + + //w.AppendLine (); + //w.AppendLine ($"\t\t[Export (\"get{v.Managed}NullableArray\")]"); + //w.AppendLine ($"\t\t[return: BindAs (typeof ({v.Managed}?[]))]"); + //w.AppendLine ($"\t\tNSNumber[] Get{v.Managed}NullableArrayValue ();"); + + //w.AppendLine (); + //w.AppendLine ($"\t\t[Export (\"set{v.Managed}NullableArray:\")]"); + //w.AppendLine ($"\t\tvoid Set{v.Managed}NullableArray ([BindAs (typeof ({v.Managed}?[]))] NSNumber[] value);"); + + // multidimensional array of nullable value + // https://bugzilla.xamarin.com/show_bug.cgi?id=57797 + //w.AppendLine (); + //w.AppendLine ("\t\t[Sealed]"); + //w.AppendLine ($"\t\t[Export (\"P{v.Managed}NullableMulti1Array\")]"); + //w.AppendLine ($"\t\t[BindAs (typeof ({v.Managed}?[,]))]"); + //w.AppendLine ($"\t\tNSNumber[,] P{v.Managed}NullableMulti1ArrayValue {{ get; set; }}"); + + // BI1048: bgen: Unsupported type Nullable`1[][] decorated with [BindAs] + //w.AppendLine (); + //w.AppendLine ("\t\t[Sealed]"); + //w.AppendLine ($"\t\t[Export (\"P{v.Managed}NullableMulti2Array\")]"); + //w.AppendLine ($"\t\t[BindAs (typeof ({v.Managed}?[][]))]"); + //w.AppendLine ($"\t\tNSNumber[][] P{v.Managed}NullableMulti2ArrayValue {{ get; set; }}"); + + if (v.ManagedCondition != null) + w.AppendLine ("#endif"); + w.AppendLine (); + } + + w.AppendLine ("\t\t// BindAs: NSValue"); + foreach (var v in bindas_nsvalue) { + if (v.ManagedCondition != null) + w.AppendLine ($"#if {v.ManagedCondition}"); + + // no BindAs + + w.AppendLine ($"\t\t[Export (\"P{v.Managed}Value\")]"); + w.AppendLine ($"\t\tNSValue P{v.Managed}Value {{ get; set; }}"); + + // plain value + w.AppendLine (); + w.AppendLine ("\t\t[Sealed]"); + w.AppendLine ($"\t\t[Export (\"P{v.Managed}Value\")]"); + w.AppendLine ($"\t\t[BindAs (typeof ({v.Managed}))]"); + w.AppendLine ($"\t\tNSValue P{v.Managed}ValueNonNullable {{ get; set; }}"); + + w.AppendLine (); + w.AppendLine ($"\t\t[Export (\"get{v.Managed}ValueNonNullable\")]"); + w.AppendLine ($"\t\t[return: BindAs (typeof ({v.Managed}))]"); + w.AppendLine ($"\t\t[return: NullAllowed] // This should be the default"); + w.AppendLine ($"\t\tNSValue Get{v.Managed}ValueNonNullable ();"); + + w.AppendLine (); + w.AppendLine ($"\t\t[Export (\"set{v.Managed}ValueNonNullable:\")]"); + w.AppendLine ($"\t\tvoid Set{v.Managed}ValueNonNullable ([BindAs (typeof ({v.Managed}))] NSValue value);"); + + // nullable + + w.AppendLine (); + w.AppendLine ($"\t\t[Sealed]"); + w.AppendLine ($"\t\t[Export (\"P{v.Managed}Value\")]"); + w.AppendLine ($"\t\t[BindAs (typeof ({v.Managed}?))]"); + w.AppendLine ($"\t\t[NullAllowed] // This should be the default"); + w.AppendLine ($"\t\tNSValue P{v.Managed}ValueNullable {{ get; set; }}"); + + w.AppendLine (); + w.AppendLine ($"\t\t[Export (\"get{v.Managed}ValueNullable\")]"); + w.AppendLine ($"\t\t[return: BindAs (typeof ({v.Managed}?))]"); + w.AppendLine ($"\t\tNSValue Get{v.Managed}ValueNullable ();"); + + w.AppendLine (); + w.AppendLine ($"\t\t[Export (\"set{v.Managed}ValueNullable:\")]"); + w.AppendLine ($"\t\tvoid Set{v.Managed}ValueNullable ([BindAs (typeof ({v.Managed}?))] [NullAllowed /* this should be the default */] NSValue value);"); + + // ref/out plain value is not supported (error BI1048: bgen: Unsupported type CATransform3D decorated with [BindAs]) + // ref/out nullable value is not supported (error BI1048: bgen: Unsupported type CATransform3D decorated with [BindAs]) + + // array of plain value + w.AppendLine (); + w.AppendLine ("\t\t[Sealed]"); + w.AppendLine ($"\t\t[Export (\"P{v.Managed}Array\")]"); + w.AppendLine ($"\t\t[BindAs (typeof ({v.Managed}[]))]"); + w.AppendLine ($"\t\t[NullAllowed]"); + w.AppendLine ($"\t\tNSValue[] P{v.Managed}Array {{ get; set; }}"); + + w.AppendLine (); + w.AppendLine ($"\t\t[Export (\"get{v.Managed}Array\")]"); + w.AppendLine ($"\t\t[return: BindAs (typeof ({v.Managed}[]))]"); + w.AppendLine ($"\t\t[return: NullAllowed]"); + w.AppendLine ($"\t\tNSValue[] Get{v.Managed}Array ();"); + + w.AppendLine (); + w.AppendLine ($"\t\t[Export (\"set{v.Managed}Array:\")]"); + w.AppendLine ($"\t\tvoid Set{v.Managed}Array ([NullAllowed] [BindAs (typeof ({v.Managed}[]))] NSValue[] value);"); + + // multidimensional array of plain value + // https://bugzilla.xamarin.com/show_bug.cgi?id=57795 + //w.AppendLine (); + //w.AppendLine ("\t\t[Sealed]"); + //w.AppendLine ($"\t\t[Export (\"P{v.Managed}Multi1Array\")]"); + //w.AppendLine ($"\t\t[BindAs (typeof ({v.Managed}[,]))]"); + //w.AppendLine ($"\t\tNSValue[,] P{v.Managed}Multi1ArrayValue {{ get; set; }}"); + + // BI1048: bgen: Unsupported type CATransform3D[][] decorated with [BindAs] + //w.AppendLine (); + //w.AppendLine ("\t\t[Sealed]"); + //w.AppendLine ($"\t\t[Export (\"P{v.Managed}Multi2Array\")]"); + //w.AppendLine ($"\t\t[BindAs (typeof ({v.Managed}[][]))]"); + //w.AppendLine ($"\t\tNSValue[][] P{v.Managed}Multi2ArrayValue {{ get; set; }}"); + + // array of nullable value + // https://bugzilla.xamarin.com/show_bug.cgi?id=57797 + //w.AppendLine (); + //w.AppendLine ("\t\t[Sealed]"); + //w.AppendLine ($"\t\t[Export (\"P{v.Managed}NullableArray\")]"); + //w.AppendLine ($"\t\t[BindAs (typeof ({v.Managed}?[]))]"); + //w.AppendLine ($"\t\tNSValue[] P{v.Managed}NullableArrayValue {{ get; set; }}"); + + //w.AppendLine (); + //w.AppendLine ($"\t\t[Export (\"get{v.Managed}NullableArray\")]"); + //w.AppendLine ($"\t\t[return: BindAs (typeof ({v.Managed}?[]))]"); + //w.AppendLine ($"\t\tNSValue[] Get{v.Managed}NullableArrayValue ();"); + + //w.AppendLine (); + //w.AppendLine ($"\t\t[Export (\"set{v.Managed}NullableArray:\")]"); + //w.AppendLine ($"\t\tvoid Set{v.Managed}NullableArray ([BindAs (typeof ({v.Managed}?[]))] NSValue[] value);"); + + // multidimensional array of nullable value + // https://bugzilla.xamarin.com/show_bug.cgi?id=57797 + //w.AppendLine (); + //w.AppendLine ("\t\t[Sealed]"); + //w.AppendLine ($"\t\t[Export (\"P{v.Managed}NullableMulti1Array\")]"); + //w.AppendLine ($"\t\t[BindAs (typeof ({v.Managed}?[,]))]"); + //w.AppendLine ($"\t\tNSValue[,] P{v.Managed}NullableMulti1 {{ get; set; }}"); + + // BI1048: bgen: Unsupported type Nullable`1[][] decorated with [BindAs] + //w.AppendLine (); + //w.AppendLine ("\t\t[Sealed]"); + //w.AppendLine ($"\t\t[Export (\"P{v.Managed}NullableMulti2Array\")]"); + //w.AppendLine ($"\t\t[BindAs (typeof ({v.Managed}?[][]))]"); + //w.AppendLine ($"\t\tNSValue[][] P{v.Managed}NullableMulti2ArrayValue {{ get; set; }}"); + + + if (v.ManagedCondition != null) + w.AppendLine ("#endif"); + w.AppendLine (); + } + + w.AppendLine ("\t\t// BindAs: NSString"); + foreach (var v in bindas_nsstring) { + if (v.ManagedCondition != null) + w.AppendLine ($"#if {v.ManagedCondition}"); + // plain value + w.AppendLine ($"\t\t[return: BindAs (typeof ({v.Managed}))]"); + w.AppendLine ($"\t\t[Export (\"getSmart{v.Managed}Value\")]"); + w.AppendLine ($"\t\tNSString GetSmart{v.Managed}Value ();"); + + w.AppendLine (); + w.AppendLine ($"\t\t[Export (\"setSmart{v.Managed}Value:\")]"); + w.AppendLine ($"\t\tvoid SetSmart{v.Managed}Value ([BindAs (typeof ({v.Managed}))] NSString value);"); + + w.AppendLine (); + w.AppendLine ($"\t\t[BindAs (typeof ({v.Managed}))]"); + w.AppendLine ($"\t\t[Export (\"PSmart{v.Managed}Property\")]"); + w.AppendLine ($"\t\tNSString PSmart{v.Managed}Property {{ get; set; }}"); + + // nullable + w.AppendLine (); + w.AppendLine ($"\t\t[return: NullAllowed]"); + w.AppendLine ($"\t\t[return: BindAs (typeof ({v.Managed}?))]"); + w.AppendLine ($"\t\t[Export (\"getSmartNullable{v.Managed}Value\")]"); + w.AppendLine ($"\t\tNSString GetSmartNullable{v.Managed}Value ();"); + + w.AppendLine (); + w.AppendLine ($"\t\t[Export (\"setSmartNullable{v.Managed}Value:\")]"); + w.AppendLine ($"\t\tvoid SetSmartNullable{v.Managed}Value ([NullAllowed] [BindAs (typeof ({v.Managed}?))] NSString value);"); + + w.AppendLine (); + w.AppendLine ($"\t\t[NullAllowed]"); + w.AppendLine ($"\t\t[BindAs (typeof ({v.Managed}?))]"); + w.AppendLine ($"\t\t[Export (\"smartNullable{v.Managed}Property\")]"); + w.AppendLine ($"\t\tNSString SmartNullable{v.Managed}Property {{ get; set; }}"); + + // array of plain value + w.AppendLine (); + w.AppendLine ($"\t\t[return: NullAllowed]"); + w.AppendLine ($"\t\t[return: BindAs (typeof ({v.Managed}[]))]"); + w.AppendLine ($"\t\t[Export (\"getSmart{v.Managed}Values\")]"); + w.AppendLine ($"\t\tNSString[] GetSmart{v.Managed}Values ();"); + + w.AppendLine (); + w.AppendLine ($"\t\t[Export (\"setSmart{v.Managed}Values:\")]"); + w.AppendLine ($"\t\tvoid SetSmart{v.Managed}Values ([NullAllowed] [BindAs (typeof ({v.Managed}[]))] NSString[] value);"); + + w.AppendLine (); + w.AppendLine ($"\t\t[NullAllowed]"); + w.AppendLine ($"\t\t[BindAs (typeof ({v.Managed}[]))]"); + w.AppendLine ($"\t\t[Export (\"PSmart{v.Managed}Properties\")]"); + w.AppendLine ($"\t\tNSString[] PSmart{v.Managed}Properties {{ get; set; }}"); + + // array of nullable values + // https://bugzilla.xamarin.com/show_bug.cgi?id=57797 + //w.AppendLine (); + //w.AppendLine ($"\t\t[return: NullAllowed]"); + //w.AppendLine ($"\t\t[return: BindAs (typeof ({v.Managed}?[]))]"); + //w.AppendLine ($"\t\t[Export (\"getSmartNullable{v.Managed}Values\")]"); + //w.AppendLine ($"\t\tNSString[] GetSmartNullable{v.Managed}Values ();"); + + //w.AppendLine (); + //w.AppendLine ($"\t\t[Export (\"setSmartNullable{v.Managed}Values\")]"); + //w.AppendLine ($"\t\tvoid SetSmartNullable{v.Managed}Values ([NullAllowed] [BindAs (typeof ({v.Managed}?[]))] NSString[] value);"); + + //w.AppendLine (); + //w.AppendLine ($"\t\t[NullAllowed]"); + //w.AppendLine ($"\t\t[BindAs (typeof ({v.Managed}?[]))]"); + //w.AppendLine ($"\t\t[Export (\"smartNullable{v.Managed}Properties:\")]"); + //w.AppendLine ($"\t\tNSString[] SmartNullable{v.Managed}Properties {{ get; set; }}"); + + // multidimensional array of plain value + // https://bugzilla.xamarin.com/show_bug.cgi?id=57795 + //w.AppendLine (); + //w.AppendLine ($"\t\t[return: BindAs (typeof ({v.Managed}[,]))]"); + //w.AppendLine ($"\t\t[Export (\"getSmart{v.Managed}ValuesMulti\")]"); + //w.AppendLine ($"\t\tNSString[,] GetSmart{v.Managed}ValuesMulti ();"); + + //w.AppendLine (); + //w.AppendLine ($"\t\t[Export (\"setSmart{v.Managed}ValuesMulti:\")]"); + //w.AppendLine ($"\t\tvoid SetSmart{v.Managed}ValuesMulti ([BindAs (typeof ({v.Managed}[]))] NSString[,] value);"); + + //w.AppendLine (); + //w.AppendLine ($"\t\t[BindAs (typeof ({v.Managed}[,]))]"); + //w.AppendLine ($"\t\t[Export (\"PSmart{v.Managed}PropertiesMulti:\")]"); + //w.AppendLine ($"\t\tNSString[,] PSmart{v.Managed}PropertiesMulti {{ get; set; }}"); + + if (v.ManagedCondition != null) + w.AppendLine ("#endif"); + w.AppendLine (); + } + + + // multi-dimensional array of plain value + w.AppendLine (@" } }"); @@ -224,10 +760,28 @@ namespace Bindings.Test { var w = new StringBuilder (); + WriteFrameworkDefines (w); w.AppendLine (@" +using System; #if XAMCORE_2_0 +using AVFoundation; +#if HAVE_COREANIMATION +using CoreAnimation; +#endif +using CoreGraphics; +using CoreLocation; +#if HAVE_COREMEDIA +using CoreMedia; +#endif using Foundation; +#if HAVE_MAPKIT +using MapKit; +#endif using ObjCRuntime; +using SceneKit; +#if HAVE_UIKIT +using UIKit; +#endif using MonoTouchException=ObjCRuntime.RuntimeException; using NativeException=Foundation.MonoTouchException; #else @@ -270,6 +824,572 @@ namespace MonoTouchFixtures.ObjCRuntime { w.AppendLine (); } + w.AppendLine ("\t\tinternal class BindAsTestClassGenerated : ObjCRegistrarTest {"); + + w.AppendLine ("\t\t\t// BindAs: NSNumber"); + foreach (var v in bindas_nsnumber) { + if (v.ManagedCondition != null) + w.AppendLine ($"#if {v.ManagedCondition}"); + + w.AppendLine ($"\t\t\t{v.Managed}? _{v.Managed};"); + w.AppendLine ($"\t\t\tpublic {v.Managed}? {v.Managed}Number {{ get {{ return _{v.Managed}; }} set {{ _{v.Managed} = value; }} }}"); + w.AppendLine ($"\t\t\tpublic override {v.Managed}? Get{v.Managed}NumberNullable () {{ return _{v.Managed}; }}"); + w.AppendLine ($"\t\t\tpublic override {v.Managed} Get{v.Managed}NumberNonNullable () {{ return _{v.Managed}.Value; }}"); + w.AppendLine ($"\t\t\tpublic override void Set{v.Managed}NumberNullable ({v.Managed}? value) {{ _{v.Managed} = value; }}"); + w.AppendLine ($"\t\t\tpublic override void Set{v.Managed}NumberNonNullable ({v.Managed} value) {{ _{v.Managed} = value; }}"); + + w.AppendLine (); + w.AppendLine ($"\t\t\t{v.Managed}[] _{v.Managed}Array;"); + w.AppendLine ($"\t\t\tpublic {v.Managed}[] {v.Managed}Array {{ get {{ return _{v.Managed}Array; }} set {{ _{v.Managed}Array = value; }} }}"); + w.AppendLine ($"\t\t\tpublic override {v.Managed}[] Get{v.Managed}Array () {{ return _{v.Managed}Array; }}"); + w.AppendLine ($"\t\t\tpublic override void Set{v.Managed}Array ({v.Managed}[] value) {{ _{v.Managed}Array = value; }}"); + + if (v.ManagedCondition != null) + w.AppendLine ("#endif"); + w.AppendLine (); + } + + w.AppendLine ("\t\t\t// BindAs: NSValue"); + foreach (var v in bindas_nsvalue) { + if (v.ManagedCondition != null) + w.AppendLine ($"#if {v.ManagedCondition}"); + + w.AppendLine ($"\t\t\t{v.Managed}? _{v.Managed};"); + w.AppendLine ($"\t\t\tpublic {v.Managed}? {v.Managed}Value {{ get {{ return _{v.Managed}; }} set {{ _{v.Managed} = value; }} }}"); + w.AppendLine ($"\t\t\tpublic override {v.Managed}? Get{v.Managed}ValueNullable () {{ return _{v.Managed}; }}"); + w.AppendLine ($"\t\t\tpublic override {v.Managed} Get{v.Managed}ValueNonNullable () {{ return _{v.Managed}.Value; }}"); + w.AppendLine ($"\t\t\tpublic override void Set{v.Managed}ValueNullable ({v.Managed}? value) {{ _{v.Managed} = value; }}"); + w.AppendLine ($"\t\t\tpublic override void Set{v.Managed}ValueNonNullable ({v.Managed} value) {{ _{v.Managed} = value; }}"); + + w.AppendLine (); + w.AppendLine ($"\t\t\t{v.Managed}[] _{v.Managed}Array;"); + w.AppendLine ($"\t\t\tpublic {v.Managed}[] {v.Managed}Array {{ get {{ return _{v.Managed}Array; }} set {{ _{v.Managed}Array = value; }} }}"); + w.AppendLine ($"\t\t\tpublic override {v.Managed}[] Get{v.Managed}Array () {{ return _{v.Managed}Array; }}"); + w.AppendLine ($"\t\t\tpublic override void Set{v.Managed}Array ({v.Managed}[] value) {{ _{v.Managed}Array = value; }}"); + + if (v.ManagedCondition != null) + w.AppendLine ("#endif"); + w.AppendLine (); + } + + w.AppendLine ("\t\t\t// BindAs: NSString"); + foreach (var v in bindas_nsstring) { + if (v.ManagedCondition != null) + w.AppendLine ($"#if {v.ManagedCondition}"); + + w.AppendLine ($"\t\t\t{v.Managed}? _{v.Managed};"); + w.AppendLine ($"\t\t\tpublic {v.Managed}? {v.Managed}Value {{ get {{ return _{v.Managed}; }} set {{ _{v.Managed} = value; }} }}"); + w.AppendLine ($"\t\t\tpublic override {v.Managed} PSmart{v.Managed}Property {{ get {{ return {v.Managed}Value.Value; }} set {{ {v.Managed}Value = value; }} }}"); + w.AppendLine ($"\t\t\tpublic override {v.Managed} GetSmart{v.Managed}Value () {{ return _{v.Managed}.Value; }}"); + w.AppendLine ($"\t\t\tpublic override {v.Managed}? GetSmartNullable{v.Managed}Value () {{ return _{v.Managed}; }}"); + w.AppendLine ($"\t\t\tpublic override void SetSmart{v.Managed}Value ({v.Managed} value) {{ _{v.Managed} = value; }}"); + w.AppendLine ($"\t\t\tpublic override void SetSmartNullable{v.Managed}Value ({v.Managed}? value) {{ _{v.Managed} = value; }}"); + + w.AppendLine (); + w.AppendLine ($"\t\t\t{v.Managed}[] _{v.Managed}Array;"); + w.AppendLine ($"\t\t\tpublic {v.Managed}[] {v.Managed}Array {{ get {{ return _{v.Managed}Array; }} set {{ _{v.Managed}Array = value; }} }}"); + w.AppendLine ($"\t\t\tpublic override {v.Managed}[] PSmart{v.Managed}Properties {{ get {{ return _{v.Managed}Array; }} set {{ _{v.Managed}Array = value; }} }}"); + w.AppendLine ($"\t\t\tpublic override {v.Managed}[] GetSmart{v.Managed}Values () {{ return _{v.Managed}Array; }}"); + w.AppendLine ($"\t\t\tpublic override void SetSmart{v.Managed}Values ({v.Managed}[] value) {{ _{v.Managed}Array = value; }}"); + + if (v.ManagedCondition != null) + w.AppendLine ("#endif"); + w.AppendLine (); + } + w.AppendLine ("\t\t}"); + + foreach (var v in bindas_nsnumber) { + if (v.ManagedCondition != null) + w.AppendLine ($"#if {v.ManagedCondition}"); + + // Bindings + w.AppendLine ("\t\t[Test]"); + w.AppendLine ($"\t\tpublic void NSNumberBindAs_{v.Managed}_Bindings ()"); + w.AppendLine ("\t\t{"); + w.AppendLine ($"\t\t\tusing (var obj = new ObjCRegistrarTest ()) {{"); + w.AppendLine ($"\t\t\t\tAssert.IsNull (obj.P{v.Managed}Number, \"initial null property\");"); + w.AppendLine ($"\t\t\t\tAssert.IsNull (obj.P{v.Managed}NumberNullable, \"initial nullable null property\");"); + w.AppendLine ($"\t\t\t\tAssert.IsNull (obj.Get{v.Managed}NumberNullable (), \"initial null method\");"); + w.AppendLine (); + + w.AppendLine ($"\t\t\t\t{v.Managed}? value = default ({v.Managed});"); + w.AppendLine ($"\t\t\t\tobj.Set{v.Managed}NumberNonNullable (value.Value);"); + w.AppendLine ($"\t\t\t\tAssert.AreEqual (value, obj.P{v.Managed}NumberNullable, \"nullable property after setting default value\");"); + w.AppendLine ($"\t\t\t\tAssert.AreEqual (value.Value, obj.P{v.Managed}NumberNonNullable, \"non-nullable property after setting default value\");"); + w.AppendLine ($"\t\t\t\tAssert.AreEqual (value, obj.Get{v.Managed}NumberNullable (), \"nullable get method after setting default value\");"); + w.AppendLine ($"\t\t\t\tAssert.AreEqual (value.Value, obj.Get{v.Managed}NumberNonNullable (), \"non-nullable get method after setting default value\");"); + w.AppendLine (); + + w.AppendLine ($"\t\t\t\tvalue = {v.ManagedNewExpression};"); + w.AppendLine ($"\t\t\t\tobj.Set{v.Managed}NumberNonNullable (value.Value);"); + w.AppendLine ($"\t\t\t\tAssert.AreEqual (value, obj.P{v.Managed}NumberNullable, \"nullable property after setting custom value\");"); + w.AppendLine ($"\t\t\t\tAssert.AreEqual (value.Value, obj.P{v.Managed}NumberNonNullable, \"non-nullable property after setting custom value\");"); + w.AppendLine ($"\t\t\t\tAssert.AreEqual (value, obj.Get{v.Managed}NumberNullable (), \"nullable get method after setting custom value\");"); + w.AppendLine ($"\t\t\t\tAssert.AreEqual (value.Value, obj.Get{v.Managed}NumberNonNullable (), \"non-nullable get method after setting custom value\");"); + w.AppendLine (); + + w.AppendLine ($"\t\t\t\tvalue = null;"); + w.AppendLine ($"\t\t\t\tobj.Set{v.Managed}NumberNullable (value);"); + w.AppendLine ($"\t\t\t\tAssert.IsNull (obj.P{v.Managed}Number, \"null property after setting null value\");"); + w.AppendLine ($"\t\t\t\tAssert.IsNull (obj.P{v.Managed}NumberNullable, \"nullable null property after setting null value\");"); + w.AppendLine ($"\t\t\t\tAssert.IsNull (obj.Get{v.Managed}NumberNullable (), \"null method after setting null value\");"); + w.AppendLine ($"\t\t\t}}"); + w.AppendLine ("\t\t}"); + w.AppendLine (); + + // Overrides + w.AppendLine ("\t\t[Test]"); + w.AppendLine ($"\t\tpublic void NSNumberBindAs_{v.Managed}_Overrides ()"); + w.AppendLine ("\t\t{"); + w.AppendLine ($"\t\t\tusing (var obj = new BindAsTestClassGenerated ()) {{"); + w.AppendLine ($"\t\t\t\tAssert.IsNull (obj.{v.Managed}Number, \"initial null\");"); + w.AppendLine ($"\t\t\t\tMessaging.void_objc_msgSend_IntPtr (obj.Handle, Selector.GetHandle (\"set{v.Managed}NumberNullable:\"), IntPtr.Zero);"); + w.AppendLine ($"\t\t\t\tAssert.IsNull (obj.{v.Managed}Number, \"null after setting null\");"); + w.AppendLine (); + + w.AppendLine ($"\t\t\t\tobj.{v.Managed}Number = {v.ManagedNewExpression};"); + w.AppendLine ($"\t\t\t\tMessaging.void_objc_msgSend_IntPtr (obj.Handle, Selector.GetHandle (\"set{v.Managed}NumberNullable:\"), IntPtr.Zero);"); + w.AppendLine ($"\t\t\t\tAssert.IsNull (obj.{v.Managed}Number, \"null after re-setting null\");"); + w.AppendLine (); + + w.AppendLine ($"\t\t\t\tvar value = {v.ManagedNewExpression};"); + w.AppendLine ($"\t\t\t\tusing (var input = new NSNumber (value))"); + w.AppendLine ($"\t\t\t\t\tMessaging.void_objc_msgSend_IntPtr (obj.Handle, Selector.GetHandle (\"set{v.Managed}NumberNullable:\"), input.Handle);"); + w.AppendLine ($"\t\t\t\tAssert.AreEqual (value, obj.{v.Managed}Number, \"after setting A\");"); + w.AppendLine (); + + w.AppendLine ($"\t\t\t\tobj.{v.Managed}Number = null;"); + w.AppendLine ($"\t\t\t\tusing (var input = new NSNumber (value))"); + w.AppendLine ($"\t\t\t\t\tMessaging.void_objc_msgSend_IntPtr (obj.Handle, Selector.GetHandle (\"set{v.Managed}NumberNonNullable:\"), input.Handle);"); + w.AppendLine ($"\t\t\t\tAssert.AreEqual (value, obj.{v.Managed}Number.Value, \"after setting B\");"); + w.AppendLine (); + + w.AppendLine ($"\t\t\t\tobj.{v.Managed}Number = null;"); + w.AppendLine ($"\t\t\t\tvar number = Runtime.GetNSObject (Messaging.IntPtr_objc_msgSend (obj.Handle, Selector.GetHandle (\"get{v.Managed}NumberNullable\")));"); + w.AppendLine ($"\t\t\t\tAssert.IsNull (number, \"null from getter A\");"); + w.AppendLine (); + + w.AppendLine ($"\t\t\t\tvalue = {v.ManagedNewExpression};"); + w.AppendLine ($"\t\t\t\tobj.{v.Managed}Number = value;"); + w.AppendLine ($"\t\t\t\tnumber = Runtime.GetNSObject (Messaging.IntPtr_objc_msgSend (obj.Handle, Selector.GetHandle (\"get{v.Managed}NumberNullable\")));"); + w.AppendLine ($"\t\t\t\tAssert.AreEqual (value, number{v.Map}, \"getter B\");"); + w.AppendLine (); + + w.AppendLine ($"\t\t\t\tvalue = {v.ManagedNewExpression};"); + w.AppendLine ($"\t\t\t\tobj.{v.Managed}Number = value;"); + w.AppendLine ($"\t\t\t\tnumber = Runtime.GetNSObject (Messaging.IntPtr_objc_msgSend (obj.Handle, Selector.GetHandle (\"get{v.Managed}NumberNonNullable\")));"); + w.AppendLine ($"\t\t\t\tAssert.AreEqual (value, number{v.Map}, \"getter C\");"); + w.AppendLine ($"\t\t\t}}"); + w.AppendLine ("\t\t}"); + + // Array_Bindings + w.AppendLine ("\t\t[Test]"); + w.AppendLine ($"\t\tpublic void NSNumberBindAs_{v.Managed}Array_Bindings ()"); + w.AppendLine ("\t\t{"); + w.AppendLine ($"\t\t\tusing (var obj = new ObjCRegistrarTest ()) {{"); + w.AppendLine ($"\t\t\t\tAssert.IsNull (obj.P{v.Managed}Array, \"initial null property\");"); + w.AppendLine ($"\t\t\t\tAssert.IsNull (obj.Get{v.Managed}Array (), \"initial null method\");"); + w.AppendLine (); + + w.AppendLine ($"\t\t\t\t{v.Managed}[] value = null;"); + w.AppendLine ($"\t\t\t\tobj.Set{v.Managed}Array (value);"); + w.AppendLine ($"\t\t\t\tAssert.AreEqual (value, obj.P{v.Managed}Array, \"nullable property after setting default value\");"); + w.AppendLine ($"\t\t\t\tAssert.AreEqual (value, obj.Get{v.Managed}Array (), \"nullable get method after setting default value\");"); + w.AppendLine (); + + w.AppendLine ($"\t\t\t\tvalue = new {v.Managed} [] {{ {v.ManagedNewExpression} }};"); + w.AppendLine ($"\t\t\t\tobj.Set{v.Managed}Array (value);"); + w.AppendLine ($"\t\t\t\tAssert.AreEqual (1, obj.P{v.Managed}Array.Length, \"nullable property after setting custom value\");"); + w.AppendLine ($"\t\t\t\tAssert.AreEqual (1, obj.Get{v.Managed}Array ().Length, \"nullable get method after setting custom value\");"); + w.AppendLine ($"\t\t\t\tAssert.AreEqual (value [0], obj.P{v.Managed}Array [0], \"nullable property after setting custom value element\");"); + w.AppendLine ($"\t\t\t\tAssert.AreEqual (value [0], obj.Get{v.Managed}Array () [0], \"nullable get method after setting custom value element\");"); + w.AppendLine (); + + w.AppendLine ($"\t\t\t\tvalue = null;"); + w.AppendLine ($"\t\t\t\tobj.Set{v.Managed}Array (value);"); + w.AppendLine ($"\t\t\t\tAssert.IsNull (obj.P{v.Managed}Array, \"null property after setting null value\");"); + w.AppendLine ($"\t\t\t\tAssert.IsNull (obj.Get{v.Managed}Array (), \"null method after setting null value\");"); + w.AppendLine ($"\t\t\t}}"); + w.AppendLine ("\t\t}"); + w.AppendLine (); + + // Array_Overrides + w.AppendLine ("\t\t[Test]"); + w.AppendLine ($"\t\tpublic void NSNumberBindAs_{v.Managed}_Array_Overrides ()"); + w.AppendLine ("\t\t{"); + w.AppendLine ($"\t\t\tusing (var obj = new BindAsTestClassGenerated ()) {{"); + w.AppendLine ($"\t\t\t\tAssert.IsNull (obj.{v.Managed}Array, \"initial null\");"); + w.AppendLine ($"\t\t\t\tMessaging.void_objc_msgSend_IntPtr (obj.Handle, Selector.GetHandle (\"set{v.Managed}Array:\"), IntPtr.Zero);"); + w.AppendLine ($"\t\t\t\tAssert.IsNull (obj.{v.Managed}Array, \"null after setting null\");"); + w.AppendLine (); + + w.AppendLine ($"\t\t\t\tobj.{v.Managed}Array = new {v.Managed} [] {{ {v.ManagedNewExpression} }};"); + w.AppendLine ($"\t\t\t\tMessaging.void_objc_msgSend_IntPtr (obj.Handle, Selector.GetHandle (\"set{v.Managed}Array:\"), IntPtr.Zero);"); + w.AppendLine ($"\t\t\t\tAssert.IsNull (obj.{v.Managed}Array, \"null after re-setting null\");"); + w.AppendLine (); + + w.AppendLine ($"\t\t\t\tvar value = new {v.Managed} [] {{ {v.ManagedNewExpression} }};"); + w.AppendLine ($"\t\t\t\tusing (var input = NSArray.FromNSObjects<{v.Managed}> ((v) => new NSNumber (v), value))"); + w.AppendLine ($"\t\t\t\t\tMessaging.void_objc_msgSend_IntPtr (obj.Handle, Selector.GetHandle (\"set{v.Managed}Array:\"), input.Handle);"); + w.AppendLine ($"\t\t\t\tAssert.AreEqual (value.Length, obj.{v.Managed}Array.Length, \"after setting A\");"); + w.AppendLine ($"\t\t\t\tAssert.AreEqual (value [0], obj.{v.Managed}Array [0], \"after setting A element\");"); + w.AppendLine (); + + w.AppendLine ($"\t\t\t\tobj.{v.Managed}Array = null;"); + w.AppendLine ($"\t\t\t\tusing (var input = NSArray.FromNSObjects<{v.Managed}> ((v) => new NSNumber (v), value))"); + w.AppendLine ($"\t\t\t\t\tMessaging.void_objc_msgSend_IntPtr (obj.Handle, Selector.GetHandle (\"set{v.Managed}Array:\"), input.Handle);"); + w.AppendLine ($"\t\t\t\tAssert.AreEqual (value.Length, obj.{v.Managed}Array.Length, \"after setting B\");"); + w.AppendLine ($"\t\t\t\tAssert.AreEqual (value [0], obj.{v.Managed}Array [0], \"after setting B element\");"); + w.AppendLine (); + + w.AppendLine ($"\t\t\t\tobj.{v.Managed}Array = null;"); + w.AppendLine ($"\t\t\t\tvar array = Runtime.GetNSObject (Messaging.IntPtr_objc_msgSend (obj.Handle, Selector.GetHandle (\"get{v.Managed}Array\")));"); + w.AppendLine ($"\t\t\t\tAssert.IsNull (array, \"null from getter A\");"); + w.AppendLine (); + + w.AppendLine ($"\t\t\t\tvalue = new {v.Managed} [] {{ {v.ManagedNewExpression} }};"); + w.AppendLine ($"\t\t\t\tobj.{v.Managed}Array = value;"); + w.AppendLine ($"\t\t\t\tarray = Runtime.GetNSObject (Messaging.IntPtr_objc_msgSend (obj.Handle, Selector.GetHandle (\"get{v.Managed}Array\")));"); + w.AppendLine ($"\t\t\t\tAssert.AreEqual (value.Length, array.Count, \"getter B\");"); + w.AppendLine ($"\t\t\t\tAssert.AreEqual (value [0], array.GetItem (0){v.Map}, \"getter B element\");"); + w.AppendLine (); + + w.AppendLine ($"\t\t\t}}"); + w.AppendLine ("\t\t}"); + + if (v.ManagedCondition != null) + w.AppendLine ("#endif"); + + w.AppendLine (); + } + + + foreach (var v in bindas_nsvalue) { + if (v.ManagedCondition != null) + w.AppendLine ($"#if {v.ManagedCondition}"); + + // Bindings + w.AppendLine ("\t\t[Test]"); + w.AppendLine ($"\t\tpublic void NSValueBindAs_{v.Managed}_Bindings ()"); + w.AppendLine ("\t\t{"); + w.AppendLine ($"\t\t\tusing (var obj = new ObjCRegistrarTest ()) {{"); + w.AppendLine ($"\t\t\t\tAssert.IsNull (obj.P{v.Managed}Value, \"initial null property\");"); + w.AppendLine ($"\t\t\t\tAssert.IsNull (obj.P{v.Managed}ValueNullable, \"initial nullable null property\");"); + w.AppendLine ($"\t\t\t\tAssert.IsNull (obj.Get{v.Managed}ValueNullable (), \"initial null method\");"); + w.AppendLine (); + + w.AppendLine ($"\t\t\t\t{v.Managed}? value = default ({v.Managed});"); + w.AppendLine ($"\t\t\t\tobj.Set{v.Managed}ValueNonNullable (value.Value);"); + w.AppendLine ($"\t\t\t\tAssert.AreEqual (value, obj.P{v.Managed}ValueNullable, \"nullable property after setting default value\");"); + w.AppendLine ($"\t\t\t\tAssert.AreEqual (value.Value, obj.P{v.Managed}ValueNonNullable, \"non-nullable property after setting default value\");"); + w.AppendLine ($"\t\t\t\tAssert.AreEqual (value, obj.Get{v.Managed}ValueNullable (), \"nullable get method after setting default value\");"); + w.AppendLine ($"\t\t\t\tAssert.AreEqual (value.Value, obj.Get{v.Managed}ValueNonNullable (), \"non-nullable get method after setting default value\");"); + w.AppendLine (); + + w.AppendLine ($"\t\t\t\tvalue = {v.ManagedNewExpression};"); + w.AppendLine ($"\t\t\t\tobj.Set{v.Managed}ValueNonNullable (value.Value);"); + w.AppendLine ($"\t\t\t\tAssert.AreEqual (value, obj.P{v.Managed}ValueNullable, \"nullable property after setting custom value\");"); + w.AppendLine ($"\t\t\t\tAssert.AreEqual (value.Value, obj.P{v.Managed}ValueNonNullable, \"non-nullable property after setting custom value\");"); + w.AppendLine ($"\t\t\t\tAssert.AreEqual (value, obj.Get{v.Managed}ValueNullable (), \"nullable get method after setting custom value\");"); + w.AppendLine ($"\t\t\t\tAssert.AreEqual (value.Value, obj.Get{v.Managed}ValueNonNullable (), \"non-nullable get method after setting custom value\");"); + w.AppendLine (); + + w.AppendLine ($"\t\t\t\tvalue = null;"); + w.AppendLine ($"\t\t\t\tobj.Set{v.Managed}ValueNullable (value);"); + w.AppendLine ($"\t\t\t\tAssert.IsNull (obj.P{v.Managed}Value, \"null property after setting null value\");"); + w.AppendLine ($"\t\t\t\tAssert.IsNull (obj.P{v.Managed}ValueNullable, \"nullable null property after setting null value\");"); + w.AppendLine ($"\t\t\t\tAssert.IsNull (obj.Get{v.Managed}ValueNullable (), \"null method after setting null value\");"); + w.AppendLine ($"\t\t\t}}"); + w.AppendLine ("\t\t}"); + w.AppendLine (); + + // Overrides + w.AppendLine ("\t\t[Test]"); + w.AppendLine ($"\t\tpublic void NSValueBindAs_{v.Managed}_Overrides ()"); + w.AppendLine ("\t\t{"); + w.AppendLine ($"\t\t\tusing (var obj = new BindAsTestClassGenerated ()) {{"); + w.AppendLine ($"\t\t\t\tAssert.IsNull (obj.{v.Managed}Value, \"initial null\");"); + w.AppendLine ($"\t\t\t\tMessaging.void_objc_msgSend_IntPtr (obj.Handle, Selector.GetHandle (\"set{v.Managed}ValueNullable:\"), IntPtr.Zero);"); + w.AppendLine ($"\t\t\t\tAssert.IsNull (obj.{v.Managed}Value, \"null after setting null\");"); + w.AppendLine (); + + w.AppendLine ($"\t\t\t\tobj.{v.Managed}Value = {v.ManagedNewExpression};"); + w.AppendLine ($"\t\t\t\tMessaging.void_objc_msgSend_IntPtr (obj.Handle, Selector.GetHandle (\"set{v.Managed}ValueNullable:\"), IntPtr.Zero);"); + w.AppendLine ($"\t\t\t\tAssert.IsNull (obj.{v.Managed}Value, \"null after re-setting null\");"); + w.AppendLine (); + + w.AppendLine ($"\t\t\t\tvar value = {v.ManagedNewExpression};"); + w.AppendLine ($"\t\t\t\tusing (var input = NSValue.{v.MapFrom} (value))"); + w.AppendLine ($"\t\t\t\tMessaging.void_objc_msgSend_IntPtr (obj.Handle, Selector.GetHandle (\"set{v.Managed}ValueNullable:\"), input.Handle);"); + w.AppendLine ($"\t\t\t\tAssert.AreEqual (value, obj.{v.Managed}Value, \"after setting A\");"); + w.AppendLine (); + + w.AppendLine ($"\t\t\t\tobj.{v.Managed}Value = null;"); + w.AppendLine ($"\t\t\t\tusing (var input = NSValue.{v.MapFrom} (value))"); + w.AppendLine ($"\t\t\t\tMessaging.void_objc_msgSend_IntPtr (obj.Handle, Selector.GetHandle (\"set{v.Managed}ValueNonNullable:\"), input.Handle);"); + w.AppendLine ($"\t\t\t\tAssert.AreEqual (value, obj.{v.Managed}Value, \"after setting B\");"); + w.AppendLine (); + + w.AppendLine ($"\t\t\t\tobj.{v.Managed}Value = null;"); + w.AppendLine ($"\t\t\t\tvar Value = Runtime.GetNSObject (Messaging.IntPtr_objc_msgSend (obj.Handle, Selector.GetHandle (\"get{v.Managed}ValueNullable\")));"); + w.AppendLine ($"\t\t\t\tAssert.IsNull (Value, \"null from getter A\");"); + w.AppendLine (); + + w.AppendLine ($"\t\t\t\tvalue = {v.ManagedNewExpression};"); + w.AppendLine ($"\t\t\t\tobj.{v.Managed}Value = value;"); + w.AppendLine ($"\t\t\t\tValue = Runtime.GetNSObject (Messaging.IntPtr_objc_msgSend (obj.Handle, Selector.GetHandle (\"get{v.Managed}ValueNullable\")));"); + w.AppendLine ($"\t\t\t\tAssert.AreEqual (value, Value{v.Map}, \"getter B\");"); + w.AppendLine (); + + w.AppendLine ($"\t\t\t\tvalue = {v.ManagedNewExpression};"); + w.AppendLine ($"\t\t\t\tobj.{v.Managed}Value = value;"); + w.AppendLine ($"\t\t\t\tValue = Runtime.GetNSObject (Messaging.IntPtr_objc_msgSend (obj.Handle, Selector.GetHandle (\"get{v.Managed}ValueNonNullable\")));"); + w.AppendLine ($"\t\t\t\tAssert.AreEqual (value, Value{v.Map}, \"getter C\");"); + w.AppendLine ($"\t\t\t}}"); + w.AppendLine ("\t\t}"); + + // Array_Bindings + w.AppendLine ("\t\t[Test]"); + w.AppendLine ($"\t\tpublic void NSValueBindAs_{v.Managed}Array_Bindings ()"); + w.AppendLine ("\t\t{"); + w.AppendLine ($"\t\t\tusing (var obj = new ObjCRegistrarTest ()) {{"); + w.AppendLine ($"\t\t\t\tAssert.IsNull (obj.P{v.Managed}Array, \"initial null property\");"); + w.AppendLine ($"\t\t\t\tAssert.IsNull (obj.Get{v.Managed}Array (), \"initial null method\");"); + w.AppendLine (); + + w.AppendLine ($"\t\t\t\t{v.Managed}[] value = null;"); + w.AppendLine ($"\t\t\t\tobj.Set{v.Managed}Array (value);"); + w.AppendLine ($"\t\t\t\tAssert.AreEqual (value, obj.P{v.Managed}Array, \"nullable property after setting default value\");"); + w.AppendLine ($"\t\t\t\tAssert.AreEqual (value, obj.Get{v.Managed}Array (), \"nullable get method after setting default value\");"); + w.AppendLine (); + + w.AppendLine ($"\t\t\t\tvalue = new {v.Managed} [] {{ {v.ManagedNewExpression} }};"); + w.AppendLine ($"\t\t\t\tobj.Set{v.Managed}Array (value);"); + w.AppendLine ($"\t\t\t\tAssert.AreEqual (1, obj.P{v.Managed}Array.Length, \"nullable property after setting custom value\");"); + w.AppendLine ($"\t\t\t\tAssert.AreEqual (1, obj.Get{v.Managed}Array ().Length, \"nullable get method after setting custom value\");"); + w.AppendLine ($"\t\t\t\tAssert.AreEqual (value [0], obj.P{v.Managed}Array [0], \"nullable property after setting custom value element\");"); + w.AppendLine ($"\t\t\t\tAssert.AreEqual (value [0], obj.Get{v.Managed}Array () [0], \"nullable get method after setting custom value element\");"); + w.AppendLine (); + + w.AppendLine ($"\t\t\t\tvalue = null;"); + w.AppendLine ($"\t\t\t\tobj.Set{v.Managed}Array (value);"); + w.AppendLine ($"\t\t\t\tAssert.IsNull (obj.P{v.Managed}Array, \"null property after setting null value\");"); + w.AppendLine ($"\t\t\t\tAssert.IsNull (obj.Get{v.Managed}Array (), \"null method after setting null value\");"); + w.AppendLine ($"\t\t\t}}"); + w.AppendLine ("\t\t}"); + w.AppendLine (); + + // Array_Overrides + w.AppendLine ("\t\t[Test]"); + w.AppendLine ($"\t\tpublic void NSValueBindAs_{v.Managed}_Array_Overrides ()"); + w.AppendLine ("\t\t{"); + w.AppendLine ($"\t\t\tusing (var obj = new BindAsTestClassGenerated ()) {{"); + w.AppendLine ($"\t\t\t\tAssert.IsNull (obj.{v.Managed}Array, \"initial null\");"); + w.AppendLine ($"\t\t\t\tMessaging.void_objc_msgSend_IntPtr (obj.Handle, Selector.GetHandle (\"set{v.Managed}Array:\"), IntPtr.Zero);"); + w.AppendLine ($"\t\t\t\tAssert.IsNull (obj.{v.Managed}Array, \"null after setting null\");"); + w.AppendLine (); + + w.AppendLine ($"\t\t\t\tobj.{v.Managed}Array = new {v.Managed} [] {{ {v.ManagedNewExpression} }};"); + w.AppendLine ($"\t\t\t\tMessaging.void_objc_msgSend_IntPtr (obj.Handle, Selector.GetHandle (\"set{v.Managed}Array:\"), IntPtr.Zero);"); + w.AppendLine ($"\t\t\t\tAssert.IsNull (obj.{v.Managed}Array, \"null after re-setting null\");"); + w.AppendLine (); + + w.AppendLine ($"\t\t\t\tvar value = new {v.Managed} [] {{ {v.ManagedNewExpression} }};"); + w.AppendLine ($"\t\t\t\tusing (var input = NSArray.FromNSObjects<{v.Managed}> ((v) => NSValue.{v.MapFrom} (v), value))"); + w.AppendLine ($"\t\t\t\t\tMessaging.void_objc_msgSend_IntPtr (obj.Handle, Selector.GetHandle (\"set{v.Managed}Array:\"), input.Handle);"); + w.AppendLine ($"\t\t\t\tAssert.AreEqual (value.Length, obj.{v.Managed}Array.Length, \"after setting A\");"); + w.AppendLine ($"\t\t\t\tAssert.AreEqual (value [0], obj.{v.Managed}Array [0], \"after setting A element\");"); + w.AppendLine (); + + w.AppendLine ($"\t\t\t\tobj.{v.Managed}Array = null;"); + w.AppendLine ($"\t\t\t\tusing (var input = NSArray.FromNSObjects<{v.Managed}> ((v) => NSValue.{v.MapFrom} (v), value))"); + w.AppendLine ($"\t\t\t\t\tMessaging.void_objc_msgSend_IntPtr (obj.Handle, Selector.GetHandle (\"set{v.Managed}Array:\"), input.Handle);"); + w.AppendLine ($"\t\t\t\tAssert.AreEqual (value.Length, obj.{v.Managed}Array.Length, \"after setting B\");"); + w.AppendLine ($"\t\t\t\tAssert.AreEqual (value [0], obj.{v.Managed}Array [0], \"after setting B element\");"); + w.AppendLine (); + + w.AppendLine ($"\t\t\t\tobj.{v.Managed}Array = null;"); + w.AppendLine ($"\t\t\t\tvar array = Runtime.GetNSObject (Messaging.IntPtr_objc_msgSend (obj.Handle, Selector.GetHandle (\"get{v.Managed}Array\")));"); + w.AppendLine ($"\t\t\t\tAssert.IsNull (array, \"null from getter A\");"); + w.AppendLine (); + + w.AppendLine ($"\t\t\t\tvalue = new {v.Managed} [] {{ {v.ManagedNewExpression} }};"); + w.AppendLine ($"\t\t\t\tobj.{v.Managed}Array = value;"); + w.AppendLine ($"\t\t\t\tarray = Runtime.GetNSObject (Messaging.IntPtr_objc_msgSend (obj.Handle, Selector.GetHandle (\"get{v.Managed}Array\")));"); + w.AppendLine ($"\t\t\t\tAssert.AreEqual (value.Length, array.Count, \"getter B\");"); + w.AppendLine ($"\t\t\t\tAssert.AreEqual (value [0], array.GetItem (0){v.Map}, \"getter B element\");"); + w.AppendLine ($"\t\t\t}}"); + w.AppendLine ("\t\t}"); + w.AppendLine (); + + if (v.ManagedCondition != null) + w.AppendLine ("#endif"); + + w.AppendLine (); + } + + foreach (var v in bindas_nsstring) { + if (v.ManagedCondition != null) + w.AppendLine ($"#if {v.ManagedCondition}"); + + // Bindings + w.AppendLine ("\t\t[Test]"); + w.AppendLine ($"\t\tpublic void NSStringBindAs_{v.Managed}_Bindings ()"); + w.AppendLine ("\t\t{"); + w.AppendLine ($"\t\t\tusing (var obj = new ObjCRegistrarTest ()) {{"); + w.AppendLine ($"\t\t\t\tAssert.Throws (() => {{ Console.WriteLine (obj.PSmart{v.Managed}Property); }}, \"initial zero property\");"); + w.AppendLine ($"\t\t\t\tAssert.Throws (() => {{ Console.WriteLine (obj.GetSmart{v.Managed}Value ()); }}, \"initial zero method\");"); + w.AppendLine ($"\t\t\t\tAssert.IsNull (obj.GetSmartNullable{v.Managed}Value (), \"initial null method\");"); + w.AppendLine (); + + w.AppendLine ($"\t\t\t\t{v.Managed}? value = default ({v.Managed});"); + w.AppendLine ($"\t\t\t\tobj.SetSmartNullable{v.Managed}Value (value);"); + w.AppendLine ($"\t\t\t\tAssert.AreEqual (value.Value, obj.PSmart{v.Managed}Property, \"zero property after setting default value\");"); + w.AppendLine ($"\t\t\t\tAssert.AreEqual (value.Value, obj.GetSmart{v.Managed}Value (), \"non-nullable property after setting default value\");"); + w.AppendLine ($"\t\t\t\tAssert.AreEqual (value, obj.GetSmartNullable{v.Managed}Value (), \"nullable get method after setting default value\");"); + w.AppendLine (); + + w.AppendLine ($"\t\t\t\tvalue = {v.ManagedNewExpression};"); + w.AppendLine ($"\t\t\t\tobj.SetSmart{v.Managed}Value (value.Value);"); + w.AppendLine ($"\t\t\t\tAssert.AreEqual (value.Value, obj.PSmart{v.Managed}Property, \"non-nullable property after setting custom value\");"); + w.AppendLine ($"\t\t\t\tAssert.AreEqual (value, obj.GetSmartNullable{v.Managed}Value (), \"nullable get method after setting custom value\");"); + w.AppendLine ($"\t\t\t\tAssert.AreEqual (value.Value, obj.GetSmart{v.Managed}Value (), \"non-nullable get method after setting custom value\");"); + w.AppendLine (); + + w.AppendLine ($"\t\t\t\tvalue = null;"); + w.AppendLine ($"\t\t\t\tobj.SetSmartNullable{v.Managed}Value (value);"); + w.AppendLine ($"\t\t\t\tAssert.Throws (() => {{ Console.WriteLine (obj.PSmart{v.Managed}Property); }}, \"null property after setting null value\");"); + w.AppendLine ($"\t\t\t\tAssert.Throws (() => {{ Console.WriteLine (obj.GetSmart{v.Managed}Value ()); }}, \"non-nullable method after setting null value\");"); + w.AppendLine ($"\t\t\t\tAssert.IsNull (obj.GetSmartNullable{v.Managed}Value (), \"null method after setting null value\");"); + w.AppendLine ($"\t\t\t}}"); + w.AppendLine ("\t\t}"); + w.AppendLine (); + + // Overrides + w.AppendLine ("\t\t[Test]"); + w.AppendLine ($"\t\tpublic void NSStringBindAs_{v.Managed}_Overrides ()"); + w.AppendLine ("\t\t{"); + w.AppendLine ($"\t\t\tusing (var obj = new BindAsTestClassGenerated ()) {{"); + w.AppendLine ($"\t\t\t\tAssert.Throws (() => {{ Console.WriteLine (obj.PSmart{v.Managed}Property); }}, \"initial null\");"); + w.AppendLine ($"\t\t\t\tMessaging.void_objc_msgSend_IntPtr (obj.Handle, Selector.GetHandle (\"setSmartNullable{v.Managed}Value:\"), IntPtr.Zero);"); + w.AppendLine ($"\t\t\t\tAssert.Throws (() => {{ Console.WriteLine (obj.PSmart{v.Managed}Property); }}, \"null after setting null\");"); + w.AppendLine (); + + w.AppendLine ($"\t\t\t\tobj.PSmart{v.Managed}Property = {v.ManagedNewExpression};"); + w.AppendLine ($"\t\t\t\tMessaging.void_objc_msgSend_IntPtr (obj.Handle, Selector.GetHandle (\"setSmartNullable{v.Managed}Value:\"), IntPtr.Zero);"); + w.AppendLine ($"\t\t\t\tAssert.Throws (() => {{ Console.WriteLine (obj.PSmart{v.Managed}Property); }}, \"null after re-setting null\");"); + w.AppendLine (); + + w.AppendLine ($"\t\t\t\tvar value = {v.ManagedNewExpression};"); + w.AppendLine ($"\t\t\t\tusing (var input = value.GetConstant ())"); + w.AppendLine ($"\t\t\t\t\tMessaging.void_objc_msgSend_IntPtr (obj.Handle, Selector.GetHandle (\"setSmartNullable{v.Managed}Value:\"), input.Handle);"); + w.AppendLine ($"\t\t\t\tAssert.AreEqual (value, obj.PSmart{v.Managed}Property, \"after setting A\");"); + w.AppendLine (); + + w.AppendLine ($"\t\t\t\tobj.PSmart{v.Managed}Property = 0;"); + w.AppendLine ($"\t\t\t\tusing (var input = value.GetConstant ())"); + w.AppendLine ($"\t\t\t\t\tMessaging.void_objc_msgSend_IntPtr (obj.Handle, Selector.GetHandle (\"setSmart{v.Managed}Value:\"), input.Handle);"); + w.AppendLine ($"\t\t\t\tAssert.AreEqual (value, obj.PSmart{v.Managed}Property, \"after setting B\");"); + w.AppendLine (); + + w.AppendLine ($"\t\t\t\tobj.PSmart{v.Managed}Property = 0;"); + w.AppendLine ($"\t\t\t\tvar Value = Runtime.GetNSObject (Messaging.IntPtr_objc_msgSend (obj.Handle, Selector.GetHandle (\"getSmartNullable{v.Managed}Value\")));"); + w.AppendLine ($"\t\t\t\tAssert.AreEqual (default ({v.Managed}).GetConstant ().ToString (), Value.ToString (), \"zero from getter A\");"); + w.AppendLine (); + + w.AppendLine ($"\t\t\t\tvalue = {v.ManagedNewExpression};"); + w.AppendLine ($"\t\t\t\tobj.PSmart{v.Managed}Property = value;"); + w.AppendLine ($"\t\t\t\tValue = Runtime.GetNSObject (Messaging.IntPtr_objc_msgSend (obj.Handle, Selector.GetHandle (\"getSmartNullable{v.Managed}Value\")));"); + w.AppendLine ($"\t\t\t\tAssert.AreEqual (value, {v.Managed}Extensions.GetValue (Value), \"getter B\");"); + w.AppendLine (); + + w.AppendLine ($"\t\t\t\tvalue = {v.ManagedNewExpression};"); + w.AppendLine ($"\t\t\t\tobj.PSmart{v.Managed}Property = value;"); + w.AppendLine ($"\t\t\t\tValue = Runtime.GetNSObject (Messaging.IntPtr_objc_msgSend (obj.Handle, Selector.GetHandle (\"getSmart{v.Managed}Value\")));"); + w.AppendLine ($"\t\t\t\tAssert.AreEqual (value, {v.Managed}Extensions.GetValue (Value), \"getter C\");"); + w.AppendLine ($"\t\t\t}}"); + w.AppendLine ("\t\t}"); + + // Array_Bindings + w.AppendLine ("\t\t[Test]"); + w.AppendLine ($"\t\tpublic void NSStringBindAs_{v.Managed}Array_Bindings ()"); + w.AppendLine ("\t\t{"); + w.AppendLine ($"\t\t\tusing (var obj = new ObjCRegistrarTest ()) {{"); + w.AppendLine ($"\t\t\t\tAssert.IsNull (obj.PSmart{v.Managed}Properties, \"initial null property\");"); + w.AppendLine ($"\t\t\t\tAssert.IsNull (obj.GetSmart{v.Managed}Values (), \"initial null method\");"); + w.AppendLine (); + + w.AppendLine ($"\t\t\t\t{v.Managed}[] value = null;"); + w.AppendLine ($"\t\t\t\tobj.SetSmart{v.Managed}Values (value);"); + w.AppendLine ($"\t\t\t\tAssert.AreEqual (value, obj.PSmart{v.Managed}Properties, \"nullable property after setting default value\");"); + w.AppendLine ($"\t\t\t\tAssert.AreEqual (value, obj.GetSmart{v.Managed}Values (), \"nullable get method after setting default value\");"); + w.AppendLine (); + + w.AppendLine ($"\t\t\t\tvalue = new {v.Managed} [] {{ {v.ManagedNewExpression} }};"); + w.AppendLine ($"\t\t\t\tobj.SetSmart{v.Managed}Values (value);"); + w.AppendLine ($"\t\t\t\tAssert.AreEqual (1, obj.PSmart{v.Managed}Properties.Length, \"nullable property after setting custom value\");"); + w.AppendLine ($"\t\t\t\tAssert.AreEqual (1, obj.GetSmart{v.Managed}Values ().Length, \"nullable get method after setting custom value\");"); + w.AppendLine ($"\t\t\t\tAssert.AreEqual (value [0], obj.PSmart{v.Managed}Properties [0], \"nullable property after setting custom value element\");"); + w.AppendLine ($"\t\t\t\tAssert.AreEqual (value [0], obj.GetSmart{v.Managed}Values () [0], \"nullable get method after setting custom value element\");"); + w.AppendLine (); + + w.AppendLine ($"\t\t\t\tvalue = null;"); + w.AppendLine ($"\t\t\t\tobj.SetSmart{v.Managed}Values (value);"); + w.AppendLine ($"\t\t\t\tAssert.IsNull (obj.PSmart{v.Managed}Properties, \"null property after setting null value\");"); + w.AppendLine ($"\t\t\t\tAssert.IsNull (obj.GetSmart{v.Managed}Values (), \"null method after setting null value\");"); + w.AppendLine ($"\t\t\t}}"); + w.AppendLine ("\t\t}"); + w.AppendLine (); + + // Array_Overrides + w.AppendLine ("\t\t[Test]"); + w.AppendLine ($"\t\tpublic void NSStringBindAs_{v.Managed}_Array_Overrides ()"); + w.AppendLine ("\t\t{"); + w.AppendLine ($"\t\t\tusing (var obj = new BindAsTestClassGenerated ()) {{"); + w.AppendLine ($"\t\t\t\tAssert.IsNull (obj.PSmart{v.Managed}Properties, \"initial null\");"); + w.AppendLine ($"\t\t\t\tMessaging.void_objc_msgSend_IntPtr (obj.Handle, Selector.GetHandle (\"setSmart{v.Managed}Values:\"), IntPtr.Zero);"); + w.AppendLine ($"\t\t\t\tAssert.IsNull (obj.PSmart{v.Managed}Properties, \"null after setting null\");"); + w.AppendLine (); + + w.AppendLine ($"\t\t\t\tobj.PSmart{v.Managed}Properties = new {v.Managed} [] {{ {v.ManagedNewExpression} }};"); + w.AppendLine ($"\t\t\t\tMessaging.void_objc_msgSend_IntPtr (obj.Handle, Selector.GetHandle (\"setSmart{v.Managed}Values:\"), IntPtr.Zero);"); + w.AppendLine ($"\t\t\t\tAssert.IsNull (obj.PSmart{v.Managed}Properties, \"null after re-setting null\");"); + w.AppendLine (); + + w.AppendLine ($"\t\t\t\tvar value = new {v.Managed} [] {{ {v.ManagedNewExpression} }};"); + w.AppendLine ($"\t\t\t\tusing (var input = NSArray.FromNSObjects<{v.Managed}> ((v) => v.GetConstant (), value))"); + w.AppendLine ($"\t\t\t\t\tMessaging.void_objc_msgSend_IntPtr (obj.Handle, Selector.GetHandle (\"setSmart{v.Managed}Values:\"), input.Handle);"); + w.AppendLine ($"\t\t\t\tAssert.AreEqual (value.Length, obj.PSmart{v.Managed}Properties.Length, \"after setting A\");"); + w.AppendLine ($"\t\t\t\tAssert.AreEqual (value [0], obj.PSmart{v.Managed}Properties [0], \"after setting A element\");"); + w.AppendLine (); + + w.AppendLine ($"\t\t\t\tobj.PSmart{v.Managed}Properties = null;"); + w.AppendLine ($"\t\t\t\tusing (var input = NSArray.FromNSObjects<{v.Managed}> ((v) => v.GetConstant (), value))"); + w.AppendLine ($"\t\t\t\t\tMessaging.void_objc_msgSend_IntPtr (obj.Handle, Selector.GetHandle (\"setSmart{v.Managed}Values:\"), input.Handle);"); + w.AppendLine ($"\t\t\t\tAssert.AreEqual (value.Length, obj.PSmart{v.Managed}Properties.Length, \"after setting B\");"); + w.AppendLine ($"\t\t\t\tAssert.AreEqual (value [0], obj.PSmart{v.Managed}Properties [0], \"after setting B element\");"); + w.AppendLine (); + + w.AppendLine ($"\t\t\t\tobj.PSmart{v.Managed}Properties = null;"); + w.AppendLine ($"\t\t\t\tvar array = Runtime.GetNSObject (Messaging.IntPtr_objc_msgSend (obj.Handle, Selector.GetHandle (\"getSmart{v.Managed}Values\")));"); + w.AppendLine ($"\t\t\t\tAssert.IsNull (array, \"null from getter A\");"); + w.AppendLine (); + + w.AppendLine ($"\t\t\t\tvalue = new {v.Managed} [] {{ {v.ManagedNewExpression} }};"); + w.AppendLine ($"\t\t\t\tobj.PSmart{v.Managed}Properties = value;"); + w.AppendLine ($"\t\t\t\tarray = Runtime.GetNSObject (Messaging.IntPtr_objc_msgSend (obj.Handle, Selector.GetHandle (\"getSmart{v.Managed}Values\")));"); + w.AppendLine ($"\t\t\t\tAssert.AreEqual (value.Length, array.Count, \"getter B\");"); + w.AppendLine ($"\t\t\t\tAssert.AreEqual (value [0], {v.Managed}Extensions.GetValue (array.GetItem (0)), \"getter B element\");"); + w.AppendLine ($"\t\t\t}}"); + w.AppendLine ("\t\t}"); + w.AppendLine (); + + if (v.ManagedCondition != null) + w.AppendLine ("#endif"); + + w.AppendLine (); + } + w.AppendLine (@" } }"); @@ -524,6 +1644,8 @@ namespace MonoTouchFixtures.ObjCRuntime { WriteLibTestStructH (); WriteLibTestDecompileM (); WriteLibTestPropertiesH (); + WriteLibTestMethodsH (); + WriteLibTestMethodsM (); /* binding code */ WriteApiDefinition (); diff --git a/tests/tests.sln b/tests/tests.sln index ac36fbc5d2..b433295466 100644 --- a/tests/tests.sln +++ b/tests/tests.sln @@ -69,6 +69,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "mscorlib-0", "bcl-test\msco EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "mscorlib-1", "bcl-test\mscorlib\mscorlib-1.csproj", "{6F47C092-2F85-43D6-2222-E687426F6BF3}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "testgenerator", "test-libraries\testgenerator.csproj", "{CD430449-8E59-4ECD-ADD9-ACF79E9E660B}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|iPhoneSimulator = Debug|iPhoneSimulator @@ -758,5 +760,31 @@ Global {6F47C092-2F85-43D6-2222-E687426F6BF3}.Release32|iPhone.Build.0 = Release|Any CPU {6F47C092-2F85-43D6-2222-E687426F6BF3}.Release64|iPhone.ActiveCfg = Release|Any CPU {6F47C092-2F85-43D6-2222-E687426F6BF3}.Release64|iPhone.Build.0 = Release|Any CPU + {CD430449-8E59-4ECD-ADD9-ACF79E9E660B}.Debug|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {CD430449-8E59-4ECD-ADD9-ACF79E9E660B}.Debug|iPhoneSimulator.Build.0 = Debug|Any CPU + {CD430449-8E59-4ECD-ADD9-ACF79E9E660B}.Release|iPhoneSimulator.ActiveCfg = Release|Any CPU + {CD430449-8E59-4ECD-ADD9-ACF79E9E660B}.Release|iPhoneSimulator.Build.0 = Release|Any CPU + {CD430449-8E59-4ECD-ADD9-ACF79E9E660B}.Debug|iPhone.ActiveCfg = Debug|Any CPU + {CD430449-8E59-4ECD-ADD9-ACF79E9E660B}.Debug|iPhone.Build.0 = Debug|Any CPU + {CD430449-8E59-4ECD-ADD9-ACF79E9E660B}.Release|iPhone.ActiveCfg = Release|Any CPU + {CD430449-8E59-4ECD-ADD9-ACF79E9E660B}.Release|iPhone.Build.0 = Release|Any CPU + {CD430449-8E59-4ECD-ADD9-ACF79E9E660B}.Release-bitcode|iPhone.ActiveCfg = Release|Any CPU + {CD430449-8E59-4ECD-ADD9-ACF79E9E660B}.Release-bitcode|iPhone.Build.0 = Release|Any CPU + {CD430449-8E59-4ECD-ADD9-ACF79E9E660B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {CD430449-8E59-4ECD-ADD9-ACF79E9E660B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {CD430449-8E59-4ECD-ADD9-ACF79E9E660B}.Release|Any CPU.ActiveCfg = Release|Any CPU + {CD430449-8E59-4ECD-ADD9-ACF79E9E660B}.Release|Any CPU.Build.0 = Release|Any CPU + {CD430449-8E59-4ECD-ADD9-ACF79E9E660B}.Release-bitcode|Any CPU.ActiveCfg = Debug|Any CPU + {CD430449-8E59-4ECD-ADD9-ACF79E9E660B}.Release-bitcode|Any CPU.Build.0 = Debug|Any CPU + {CD430449-8E59-4ECD-ADD9-ACF79E9E660B}.Release-bitcode|iPhoneSimulator.ActiveCfg = Debug|Any CPU + {CD430449-8E59-4ECD-ADD9-ACF79E9E660B}.Release-bitcode|iPhoneSimulator.Build.0 = Debug|Any CPU + {CD430449-8E59-4ECD-ADD9-ACF79E9E660B}.Debug32|iPhone.ActiveCfg = Debug|Any CPU + {CD430449-8E59-4ECD-ADD9-ACF79E9E660B}.Debug32|iPhone.Build.0 = Debug|Any CPU + {CD430449-8E59-4ECD-ADD9-ACF79E9E660B}.Debug64|iPhone.ActiveCfg = Debug|Any CPU + {CD430449-8E59-4ECD-ADD9-ACF79E9E660B}.Debug64|iPhone.Build.0 = Debug|Any CPU + {CD430449-8E59-4ECD-ADD9-ACF79E9E660B}.Release32|iPhone.ActiveCfg = Release|Any CPU + {CD430449-8E59-4ECD-ADD9-ACF79E9E660B}.Release32|iPhone.Build.0 = Release|Any CPU + {CD430449-8E59-4ECD-ADD9-ACF79E9E660B}.Release64|iPhone.ActiveCfg = Release|Any CPU + {CD430449-8E59-4ECD-ADD9-ACF79E9E660B}.Release64|iPhone.Build.0 = Release|Any CPU EndGlobalSection EndGlobal From eea87f488909a55bb81331baf6ff9dbd696e0ee2 Mon Sep 17 00:00:00 2001 From: Rolf Bjarne Kvinge Date: Mon, 3 Jul 2017 19:16:53 +0200 Subject: [PATCH 025/145] [tests] Add mtouch tests for the BindAs attribute. --- tests/common/ExecutionHelper.cs | 17 +++++++ tests/mtouch/RegistrarTest.cs | 80 +++++++++++++++++++++++++++++++++ 2 files changed, 97 insertions(+) diff --git a/tests/common/ExecutionHelper.cs b/tests/common/ExecutionHelper.cs index f0bcee1be7..6d579826d2 100644 --- a/tests/common/ExecutionHelper.cs +++ b/tests/common/ExecutionHelper.cs @@ -154,6 +154,18 @@ namespace Xamarin.Tests return false; } + public int ErrorCount { + get { + return messages.Count ((v) => v.IsError); + } + } + + public int WarningCount { + get { + return messages.Count ((v) => v.IsWarning); + } + } + public bool HasError (string prefix, int number, string message) { foreach (var msg in messages) { @@ -163,6 +175,11 @@ namespace Xamarin.Tests return false; } + public void AssertErrorCount (int count, string message = "errors") + { + Assert.AreEqual (count, ErrorCount, message); + } + public void AssertErrorPattern (int number, string messagePattern) { AssertErrorPattern (MessagePrefix, number, messagePattern); diff --git a/tests/mtouch/RegistrarTest.cs b/tests/mtouch/RegistrarTest.cs index 8f7ede292a..3576c1e91b 100644 --- a/tests/mtouch/RegistrarTest.cs +++ b/tests/mtouch/RegistrarTest.cs @@ -720,6 +720,86 @@ class X : ReplayKit.RPBroadcastControllerDelegate } } + [Test] + public void MT4170 () + { + using (var mtouch = new MTouchTool ()) { + var code = @" + namespace NS { + using System; + using Foundation; + using ObjCRuntime; + class X : NSObject { + [Export (""a"")] + [return: BindAs (typeof (ConsoleColor), OriginalType = typeof (NSNumber))] + ConsoleColor A () { throw new NotImplementedException (); } + [Export (""b"")] + [return: BindAs (typeof (ConsoleColor?), OriginalType = typeof (NSNumber))] + ConsoleColor? B () { throw new NotImplementedException (); } + } + }"; + mtouch.Linker = MTouchLinker.DontLink; // faster + mtouch.Registrar = MTouchRegistrar.Static; + mtouch.CreateTemporaryApp (extraCode: code, extraArg: "-debug"); + mtouch.AssertExecuteFailure (MTouchAction.BuildSim, "build"); + mtouch.AssertError (4170, "The registrar can't convert from 'System.ConsoleColor' to 'Foundation.NSNumber' for the return value in the method NS.X.A.", "testApp.cs", 9); + mtouch.AssertError (4170, "The registrar can't convert from 'System.Nullable`1' to 'Foundation.NSNumber' for the return value in the method NS.X.B.", "testApp.cs", 12); + mtouch.AssertErrorCount (4 /* errors are duplicated */); + } + } + + [Test] + public void MT4172 () + { + using (var mtouch = new MTouchTool ()) { + var code = @" + namespace NS { + using System; + using Foundation; + using ObjCRuntime; + class X : NSObject { + [Export (""a:"")] + void A ([BindAs (typeof (ConsoleColor), OriginalType = typeof (NSNumber))] ConsoleColor value) {} + [Export (""b:"")] + void B ([BindAs (typeof (ConsoleColor?), OriginalType = typeof (NSNumber))] ConsoleColor? value) {} + [Export (""d:"")] + void D ([BindAs (typeof (int?[]), OriginalType = typeof (NSNumber[]))] int?[] value) {} + [Export (""e:"")] + void E ([BindAs (typeof (int), OriginalType = typeof (NSNumber))] ref int value) {} + [Export (""f:"")] + void F ([BindAs (typeof (int), OriginalType = typeof (NSNumber))] out int value) { throw new NotImplementedException (); } + [Export (""g:"")] + void G ([BindAs (typeof (int[,]), OriginalType = typeof (NSNumber[,]))] int[,] value) {} + [Export (""h:"")] + void H ([BindAs (typeof (int?[,]), OriginalType = typeof (NSNumber[,]))] int?[,] value) {} + } + enum E { + V, + } + class EClass : NSObject { + [Export (""a:"")] + void A ([BindAs (typeof (E), OriginalType = typeof (NSString))] E value) {} + [Export (""d:"")] + void D ([BindAs (typeof (E?[]), OriginalType = typeof (NSString[]))] E?[] value) {} + } + }"; + mtouch.Linker = MTouchLinker.DontLink; // faster + mtouch.Registrar = MTouchRegistrar.Static; + mtouch.CreateTemporaryApp (extraCode: code, extraArg: "-debug"); + mtouch.AssertExecuteFailure (MTouchAction.BuildSim, "build"); + mtouch.AssertError (4172, "The registrar can't convert from 'System.ConsoleColor' to 'Foundation.NSNumber' for the parameter 'value' in the method NS.X.A.", "testApp.cs", 8); + mtouch.AssertError (4172, "The registrar can't convert from 'System.Nullable`1' to 'Foundation.NSNumber' for the parameter 'value' in the method NS.X.B.", "testApp.cs", 10); + mtouch.AssertError (4172, "The registrar can't convert from 'System.Nullable`1[]' to 'Foundation.NSNumber[]' for the parameter 'value' in the method NS.X.D.", "testApp.cs", 12); + mtouch.AssertError (4172, "The registrar can't convert from 'System.Int32&' to 'Foundation.NSNumber' for the parameter 'value' in the method NS.X.E.", "testApp.cs", 14); + mtouch.AssertError (4172, "The registrar can't convert from 'System.Int32&' to 'Foundation.NSNumber' for the parameter 'value' in the method NS.X.F.", "testApp.cs", 16); + mtouch.AssertError (4172, "The registrar can't convert from 'System.Int32[0...,0...]' to 'Foundation.NSNumber[,]' for the parameter 'value' in the method NS.X.G.", "testApp.cs", 18); + mtouch.AssertError (4172, "The registrar can't convert from 'System.Nullable`1[0...,0...]' to 'Foundation.NSNumber[,]' for the parameter 'value' in the method NS.X.H.", "testApp.cs", 20); + mtouch.AssertError (4172, "The registrar can't convert from 'NS.E' to 'Foundation.NSString' for the parameter 'value' in the method NS.EClass.A.", "testApp.cs", 27); + mtouch.AssertError (4172, "The registrar can't convert from 'System.Nullable`1[]' to 'Foundation.NSString[]' for the parameter 'value' in the method NS.EClass.D.", "testApp.cs", 29); + mtouch.AssertErrorCount (9); + } + } + [Test] public void NoWarnings () { From 0730312d51fbb7deadf8f1562490457e6654279e Mon Sep 17 00:00:00 2001 From: Rolf Bjarne Kvinge Date: Mon, 3 Jul 2017 19:18:02 +0200 Subject: [PATCH 026/145] [registrar] Add support for the BindAs attribute. --- docs/website/mtouch-errors.md | 9 + runtime/delegates.t4 | 19 +- runtime/exports.t4 | 18 + runtime/frameworks.h | 23 + runtime/runtime-internal.h | 2 +- runtime/runtime.m | 72 +++- runtime/trampolines-i386.m | 4 +- runtime/trampolines-internal.h | 3 +- runtime/trampolines-invoke.m | 40 +- runtime/trampolines-varargs.m | 4 +- runtime/trampolines-x86_64.m | 4 +- runtime/trampolines.m | 601 ++++++++++++++++++++++++++- runtime/xamarin/runtime.h | 20 +- runtime/xamarin/trampolines.h | 101 +++++ src/ObjCRuntime/DynamicRegistrar.cs | 104 ++++- src/ObjCRuntime/MethodDescription.cs | 66 +-- src/ObjCRuntime/Registrar.cs | 295 +++++++++++-- src/ObjCRuntime/Runtime.cs | 36 +- tools/common/StaticRegistrar.cs | 421 ++++++++++++++++++- 19 files changed, 1693 insertions(+), 149 deletions(-) create mode 100644 runtime/frameworks.h diff --git a/docs/website/mtouch-errors.md b/docs/website/mtouch-errors.md index 79a05a67d1..dcd98fe183 100644 --- a/docs/website/mtouch-errors.md +++ b/docs/website/mtouch-errors.md @@ -1544,6 +1544,10 @@ Please use a valid Objective-C identifier. Xamarin.iOS failed to generate a P/Invoke wrapper function for the mentioned. Please check the reported error message for the underlying cause. +### MT4170: The registrar can't convert from '{managed type}' to '{native type}' for the return value in the method {method}. + +### MT4172: The registrar can't convert from '{native type}' to '{managed type}' for the parameter '{parameter name}' in the method {method}. + # MT5xxx: GCC and toolchain error messages ### MT51xx: Compilation @@ -2234,3 +2238,8 @@ This indicates a bug in Xamarin.iOS. Please file a bug at [http://bugzilla.xamar ### MT8023: An instance object is required to construct a closed generic method for the open generic method: * (token reference: *). Please file a bug report at http://bugzilla.xamarin.com. This indicates a bug in Xamarin.iOS. Please file a bug at [http://bugzilla.xamarin.com](https://bugzilla.xamarin.com/enter_bug.cgi?product=iOS). + +### MT8024: Could not find a valid extension type for the smart enum '{smart_type}'. Please file a bug at https://bugzilla.xamarin.com. + +This indicates a bug in Xamarin.iOS. Please file a bug at [http://bugzilla.xamarin.com](https://bugzilla.xamarin.com/enter_bug.cgi?product=iOS). + diff --git a/runtime/delegates.t4 b/runtime/delegates.t4 index f56fb31141..5ed2ea87ad 100644 --- a/runtime/delegates.t4 +++ b/runtime/delegates.t4 @@ -69,10 +69,11 @@ "MonoObject *", "IntPtr", "obj" ) { WrappedManagedFunction = "GetSelectorHandle" }, - new XDelegate ("MethodDescription", "UnmanagedMethodDescription", "xamarin_get_method_for_selector", + new XDelegate ("void", "void", "xamarin_get_method_for_selector", "Class", "IntPtr", "cls", "SEL", "IntPtr", "sel", - "bool", "bool", "is_static" + "bool", "bool", "is_static", + "MethodDescription *", "IntPtr", "desc" ) { WrappedManagedFunction = "GetMethodForSelector" }, new XDelegate ("MonoObject *", "IntPtr", "xamarin_get_nsobject", @@ -138,12 +139,13 @@ "int", "int", "parameter" ) { WrappedManagedFunction = "IsParameterOut" }, - new XDelegate ("MethodDescription", "UnmanagedMethodDescription", "xamarin_get_method_and_object_for_selector", + new XDelegate ("void", "void", "xamarin_get_method_and_object_for_selector", "Class", "IntPtr", "cls", "SEL", "IntPtr", "sel", "bool", "bool", "is_static", "id", "IntPtr", "obj", - "MonoObject **", "ref IntPtr", "mthis" + "MonoObject **", "ref IntPtr", "mthis", + "MethodDescription *", "IntPtr", "desc" ) { WrappedManagedFunction = "GetMethodAndObjectForSelector" }, new XDelegate ("guint32", "int", "xamarin_create_product_exception_for_error", @@ -167,6 +169,15 @@ "id", "IntPtr", "exception", "bool", "bool", "throwManagedAsDefault" ) { WrappedManagedFunction = "OnMarshalObjectiveCException" }, + + new XDelegate ("NSString *", "IntPtr", "xamarin_convert_smart_enum_to_nsstring", + "void *", "IntPtr", "value" + ) { WrappedManagedFunction = "ConvertSmartEnumToNSString" }, + + new XDelegate ("void *", "IntPtr", "xamarin_convert_nsstring_to_smart_enum", + "NSString *", "IntPtr", "value", + "MonoReflectionType *", "IntPtr", "type" + ) { WrappedManagedFunction = "ConvertNSStringToSmartEnum" }, }; delegates.CalculateLengths (); #><#+ diff --git a/runtime/exports.t4 b/runtime/exports.t4 index 66967cfdba..b6b0abb4a9 100644 --- a/runtime/exports.t4 +++ b/runtime/exports.t4 @@ -76,7 +76,16 @@ new Export ("MonoType *", "mono_class_get_type", "MonoClass *", "klass" ), + #endregion + #region metadata/class-internals.h + new Export ("gboolean", "mono_class_is_nullable", + "MonoClass *", "klass" + ), + + new Export ("MonoClass *", "mono_class_get_nullable_param", + "MonoClass *", "klass" + ), #endregion #region metadata/debug-helpers.h @@ -173,6 +182,12 @@ "void *", "value" ), + new Export ("MonoObject *", "mono_value_box", + "MonoDomain *", "domain", + "MonoClass *", "klass", + "void *", "val" + ), + #endregion #region metadata/profiler.h @@ -348,6 +363,9 @@ "MonoType *", "type" ), + new Export ("MonoType *", "mono_reflection_type_get_type", + "MonoReflectionType *", "reftype" + ), #endregion #region metadata/metadata.h diff --git a/runtime/frameworks.h b/runtime/frameworks.h new file mode 100644 index 0000000000..8e9c62d750 --- /dev/null +++ b/runtime/frameworks.h @@ -0,0 +1,23 @@ +#if TARGET_OS_IOS || TARGET_OS_TV || TARGET_OS_WATCH +#define HAVE_UIKIT 1 +#else +#define HAVE_UIKIT 0 +#endif + +#if TARGET_OS_IOS || TARGET_OS_TV || TARGET_OS_WATCH || defined (__x86_64__) +#define HAVE_MAPKIT 1 +#else +#define HAVE_MAPKIT 0 +#endif + +#if !TARGET_OS_WATCH +#define HAVE_COREMEDIA 1 +#else +#define HAVE_COREMEDIA 0 +#endif + +#if !TARGET_OS_WATCH +#define HAVE_COREANIMATION 1 +#else +#define HAVE_COREANIMATION 0 +#endif diff --git a/runtime/runtime-internal.h b/runtime/runtime-internal.h index 3bdb5936ff..ace1efaf82 100644 --- a/runtime/runtime-internal.h +++ b/runtime/runtime-internal.h @@ -29,7 +29,7 @@ extern "C" { #endif -void *xamarin_marshal_return_value (MonoType *mtype, const char *type, MonoObject *retval, bool retain, MonoMethod *method, guint32 *exception_gchandle); +void *xamarin_marshal_return_value (MonoType *mtype, const char *type, MonoObject *retval, bool retain, MonoMethod *method, MethodDescription *desc, guint32 *exception_gchandle); #ifdef __cplusplus } diff --git a/runtime/runtime.m b/runtime/runtime.m index f820eb6df0..e9c20f1248 100644 --- a/runtime/runtime.m +++ b/runtime/runtime.m @@ -90,8 +90,12 @@ xamarin_extension_main_callback xamarin_extension_main = NULL; /* Local variable */ +static MonoImage *platform_image; static MonoClass *inativeobject_class; static MonoClass *nsobject_class; +static MonoClass *nsvalue_class; +static MonoClass *nsnumber_class; +static MonoClass *nsstring_class; static pthread_mutex_t framework_peer_release_lock; static MonoGHashTable *xamarin_wrapper_hash; @@ -240,8 +244,12 @@ xamarin_get_parameter_type (MonoMethod *managed_method, int index) void *iter = NULL; MonoType *p = NULL; - for (int i = 0; i < index + 1; i++) - p = mono_signature_get_params (msig, &iter); + if (index == -1) { + p = mono_signature_get_return_type (msig); + } else { + for (int i = 0; i < index + 1; i++) + p = mono_signature_get_params (msig, &iter); + } return p; } @@ -345,6 +353,18 @@ void xamarin_framework_peer_unlock () pthread_mutex_unlock (&framework_peer_release_lock); } +MonoClass * +xamarin_get_nsvalue_class () +{ + return nsvalue_class; +} + +MonoClass * +xamarin_get_nsnumber_class () +{ + return nsnumber_class; +} + bool xamarin_is_class_nsobject (MonoClass *cls) { @@ -372,6 +392,33 @@ xamarin_is_class_array (MonoClass *cls) return mono_class_is_subclass_of (cls, mono_get_array_class (), false); } +bool +xamarin_is_class_nsnumber (MonoClass *cls) +{ + // COOP: Reading managed data, must be in UNSAFE mode + MONO_ASSERT_GC_UNSAFE; + + return mono_class_is_subclass_of (cls, nsnumber_class, false); +} + +bool +xamarin_is_class_nsvalue (MonoClass *cls) +{ + // COOP: Reading managed data, must be in UNSAFE mode + MONO_ASSERT_GC_UNSAFE; + + return mono_class_is_subclass_of (cls, nsvalue_class, false); +} + +bool +xamarin_is_class_nsstring (MonoClass *cls) +{ + // COOP: Reading managed data, must be in UNSAFE mode + MONO_ASSERT_GC_UNSAFE; + + return mono_class_is_subclass_of (cls, nsstring_class, false); +} + #define MANAGED_REF_BIT (1 << 31) #define GCHANDLE_WEAK (1 << 30) #define GCHANDLE_MASK (MANAGED_REF_BIT | GCHANDLE_WEAK) @@ -1154,7 +1201,6 @@ xamarin_initialize () MonoClass *runtime_class; MonoAssembly *assembly = NULL; - MonoImage *image; MonoMethod *runtime_initialize; void* params[2]; const char *product_dll = NULL; @@ -1199,14 +1245,17 @@ xamarin_initialize () if (!assembly) xamarin_assertion_message ("Failed to load %s.", product_dll); - image = mono_assembly_get_image (assembly); + platform_image = mono_assembly_get_image (assembly); const char *objcruntime = xamarin_use_new_assemblies ? "ObjCRuntime" : PRODUCT_COMPAT_NAMESPACE ".ObjCRuntime"; const char *foundation = xamarin_use_new_assemblies ? "Foundation" : PRODUCT_COMPAT_NAMESPACE ".Foundation"; - runtime_class = get_class_from_name (image, objcruntime, "Runtime"); - inativeobject_class = get_class_from_name (image, objcruntime, "INativeObject"); - nsobject_class = get_class_from_name (image, foundation, "NSObject"); + runtime_class = get_class_from_name (platform_image, objcruntime, "Runtime"); + inativeobject_class = get_class_from_name (platform_image, objcruntime, "INativeObject"); + nsobject_class = get_class_from_name (platform_image, foundation, "NSObject"); + nsnumber_class = get_class_from_name (platform_image, foundation, "NSNumber"); + nsvalue_class = get_class_from_name (platform_image, foundation, "NSValue"); + nsstring_class = get_class_from_name (platform_image, foundation, "NSString"); mono_add_internal_call (xamarin_use_new_assemblies ? "Foundation.NSObject::xamarin_release_managed_ref" : PRODUCT_COMPAT_NAMESPACE ".Foundation.NSObject::xamarin_release_managed_ref", (const void *) xamarin_release_managed_ref); mono_add_internal_call (xamarin_use_new_assemblies ? "Foundation.NSObject::xamarin_create_managed_ref" : PRODUCT_COMPAT_NAMESPACE ".Foundation.NSObject::xamarin_create_managed_ref", (const void *) xamarin_create_managed_ref); @@ -1293,10 +1342,19 @@ xamarin_set_bundle_path (const char *path) x_bundle_path = strdup (path); } +void * +xamarin_calloc (size_t size) +{ + // COOP: no managed memory access: any mode + return calloc (size, 1); +} + void xamarin_free (void *ptr) { // COOP: no managed memory access: any mode + // We use this method to free memory returned by mono, + // which means we have to use the free function mono expects. if (ptr) free (ptr); } diff --git a/runtime/trampolines-i386.m b/runtime/trampolines-i386.m index d085f2df3e..e1324d6678 100644 --- a/runtime/trampolines-i386.m +++ b/runtime/trampolines-i386.m @@ -82,7 +82,7 @@ param_iter_next (enum IteratorAction action, void *context, const char *type, si } static void -marshal_return_value (void *context, const char *type, size_t size, void *vvalue, MonoType *mtype, bool retain, MonoMethod *method, guint32 *exception_gchandle) +marshal_return_value (void *context, const char *type, size_t size, void *vvalue, MonoType *mtype, bool retain, MonoMethod *method, MethodDescription *desc, guint32 *exception_gchandle) { MonoObject *value = (MonoObject *) vvalue; struct ParamIterator *it = (struct ParamIterator *) context; @@ -164,7 +164,7 @@ marshal_return_value (void *context, const char *type, size_t size, void *vvalue break; } - it->state->eax = (uint32_t) xamarin_marshal_return_value (mtype, type, value, retain, method, exception_gchandle); + it->state->eax = (uint32_t) xamarin_marshal_return_value (mtype, type, value, retain, method, desc, exception_gchandle); break; case _C_VOID: break; diff --git a/runtime/trampolines-internal.h b/runtime/trampolines-internal.h index 53a4026d56..708f4436ec 100644 --- a/runtime/trampolines-internal.h +++ b/runtime/trampolines-internal.h @@ -4,6 +4,7 @@ #include #include "xamarin/mono-runtime.h" +#include "xamarin/runtime.h" #ifdef __cplusplus extern "C" { @@ -36,7 +37,7 @@ enum IteratorAction { // type: pass NULL to start iterating. // target: can be null if not interested in the value. typedef void (*iterator_func) (enum IteratorAction action, void *context, const char *type, size_t size, void *target, guint32 *exception_gchandle); -typedef void (*marshal_return_value_func) (void *context, const char *type, size_t size, void *value, MonoType *mtype, bool retain, MonoMethod *method, guint32 *exception_gchandle); +typedef void (*marshal_return_value_func) (void *context, const char *type, size_t size, void *value, MonoType *mtype, bool retain, MonoMethod *method, MethodDescription *desc, guint32 *exception_gchandle); void xamarin_invoke_trampoline (enum TrampolineType type, id self, SEL sel, iterator_func iterator, marshal_return_value_func marshal_return_value, void *context); diff --git a/runtime/trampolines-invoke.m b/runtime/trampolines-invoke.m index 28aa4db00f..f648578683 100644 --- a/runtime/trampolines-invoke.m +++ b/runtime/trampolines-invoke.m @@ -48,7 +48,7 @@ xamarin_invoke_trampoline (enum TrampolineType type, id self, SEL sel, iterator_ if (has_nsobject) { self = xamarin_invoke_objc_method_implementation (self, sel, (IMP) xamarin_ctor_trampoline); - marshal_return_value (context, "|", sizeof (id), self, NULL, false, NULL, &exception_gchandle); + marshal_return_value (context, "|", sizeof (id), self, NULL, false, NULL, NULL, &exception_gchandle); xamarin_process_managed_exception_gchandle (exception_gchandle); return; } @@ -58,6 +58,7 @@ xamarin_invoke_trampoline (enum TrampolineType type, id self, SEL sel, iterator_ // pre-prolog SList *dispose_list = NULL; + SList *free_list = NULL; int num_arg; NSMethodSignature *sig; @@ -70,7 +71,7 @@ xamarin_invoke_trampoline (enum TrampolineType type, id self, SEL sel, iterator_ // prolog MonoObject *mthis = NULL; - MethodDescription desc; + MethodDescription *desc = NULL; MonoMethod *method; MonoMethodSignature *msig; int semantic; @@ -87,18 +88,24 @@ xamarin_invoke_trampoline (enum TrampolineType type, id self, SEL sel, iterator_ int i; int mofs = 0; + int desc_arg_count = num_arg + 2; /* 1 for the return value + 1 if this is a category instance method */ + size_t desc_size = desc_arg_count * sizeof (BindAsData) + sizeof (MethodDescription); + desc = (MethodDescription *) xamarin_calloc (desc_size); + desc->bindas_count = desc_arg_count; + free_list = s_list_prepend (free_list, desc); + if (is_ctor || is_static) { - desc = xamarin_get_method_for_selector ([self class], sel, is_static, &exception_gchandle); + xamarin_get_method_for_selector ([self class], sel, is_static, desc, &exception_gchandle); } else { - desc = xamarin_get_method_and_object_for_selector ([self class], sel, is_static, self, &mthis, &exception_gchandle); + xamarin_get_method_and_object_for_selector ([self class], sel, is_static, self, &mthis, desc, &exception_gchandle); } if (exception_gchandle != 0) goto exception_handling; - method = xamarin_get_reflection_method_method (desc.method); + method = xamarin_get_reflection_method_method (desc->method); msig = mono_method_signature (method); - semantic = desc.semantic & ArgumentSemanticMask; - isCategoryInstance = (desc.semantic & ArgumentSemanticCategoryInstance) == ArgumentSemanticCategoryInstance; + semantic = desc->semantic & ArgumentSemanticMask; + isCategoryInstance = (desc->semantic & ArgumentSemanticCategoryInstance) == ArgumentSemanticCategoryInstance; frame_length = [sig frameLength] - (sizeof (void *) * (isCategoryInstance ? 1 : 2)); arg_frame = (void **) alloca (frame_length); @@ -158,6 +165,13 @@ xamarin_invoke_trampoline (enum TrampolineType type, id self, SEL sel, iterator_ iterator (IteratorIterate, context, type, size, &arg, &exception_gchandle); if (exception_gchandle != 0) goto exception_handling; + if (desc->bindas [i + 1].original_type != NULL) { + arg_ptrs [i + mofs] = xamarin_generate_conversion_to_managed ((id) arg, mono_reflection_type_get_type (desc->bindas [i + 1].original_type), p, method, &exception_gchandle, (void **) &free_list); + if (exception_gchandle != 0) + goto exception_handling; + ofs++; + continue; + } switch (type [0]) { case _C_PTR: { switch (type [1]) { @@ -531,9 +545,9 @@ xamarin_invoke_trampoline (enum TrampolineType type, id self, SEL sel, iterator_ ret_type = [sig methodReturnType]; ret_type = xamarin_skip_encoding_flags (ret_type); if (is_ctor) { - marshal_return_value (context, "|", sizeof (id), self, mono_signature_get_return_type (msig), (desc.semantic & ArgumentSemanticRetainReturnValue) != 0, method, &exception_gchandle); + marshal_return_value (context, "|", sizeof (id), self, mono_signature_get_return_type (msig), (desc->semantic & ArgumentSemanticRetainReturnValue) != 0, method, desc, &exception_gchandle); } else if (*ret_type != 'v') { - marshal_return_value (context, ret_type, [sig methodReturnLength], retval, mono_signature_get_return_type (msig), (desc.semantic & ArgumentSemanticRetainReturnValue) != 0, method, &exception_gchandle); + marshal_return_value (context, ret_type, [sig methodReturnLength], retval, mono_signature_get_return_type (msig), (desc->semantic & ArgumentSemanticRetainReturnValue) != 0, method, desc, &exception_gchandle); } exception_handling: @@ -559,6 +573,14 @@ exception_handling: } s_list_free (dispose_list); } + if (free_list) { + SList *list = free_list; + while (list) { + xamarin_free (list->data); + list = list->next; + } + s_list_free (free_list); + } MONO_THREAD_DETACH; // COOP: This will switch to GC_SAFE diff --git a/runtime/trampolines-varargs.m b/runtime/trampolines-varargs.m index 81a682f2fb..854040593b 100644 --- a/runtime/trampolines-varargs.m +++ b/runtime/trampolines-varargs.m @@ -89,7 +89,7 @@ param_iter_next (enum IteratorAction action, void *context, const char *type, si } static void -marshal_return_value (void *context, const char *type, size_t size, void *vvalue, MonoType *mtype, bool retain, MonoMethod *method, guint32 *exception_gchandle) +marshal_return_value (void *context, const char *type, size_t size, void *vvalue, MonoType *mtype, bool retain, MonoMethod *method, MethodDescription *desc, guint32 *exception_gchandle) { MonoObject *value = (MonoObject *) vvalue; struct ParamIterator *it = (struct ParamIterator *) context; @@ -157,7 +157,7 @@ marshal_return_value (void *context, const char *type, size_t size, void *vvalue break; } - state->ptr_ret = xamarin_marshal_return_value (mtype, type, value, retain, method, exception_gchandle); + state->ptr_ret = xamarin_marshal_return_value (mtype, type, value, retain, method, desc, exception_gchandle); break; case _C_VOID: break; diff --git a/runtime/trampolines-x86_64.m b/runtime/trampolines-x86_64.m index e6ce7db810..02aa72f941 100644 --- a/runtime/trampolines-x86_64.m +++ b/runtime/trampolines-x86_64.m @@ -303,7 +303,7 @@ param_iter_next (enum IteratorAction action, void *context, const char *type, si } static void -marshal_return_value (void *context, const char *type, size_t size, void *vvalue, MonoType *mtype, bool retain, MonoMethod *method, guint32 *exception_gchandle) +marshal_return_value (void *context, const char *type, size_t size, void *vvalue, MonoType *mtype, bool retain, MonoMethod *method, MethodDescription *desc, guint32 *exception_gchandle) { // COOP: accessing managed memory (as input), so must be in unsafe mode. MONO_ASSERT_GC_UNSAFE; @@ -514,7 +514,7 @@ marshal_return_value (void *context, const char *type, size_t size, void *vvalue break; } - it->state->rax = (uint64_t) xamarin_marshal_return_value (mtype, type, value, retain, method, exception_gchandle); + it->state->rax = (uint64_t) xamarin_marshal_return_value (mtype, type, value, retain, method, desc, exception_gchandle); break; case _C_VOID: break; diff --git a/runtime/trampolines.m b/runtime/trampolines.m index d8901b641e..8ca1013136 100644 --- a/runtime/trampolines.m +++ b/runtime/trampolines.m @@ -12,6 +12,25 @@ #include #include +#include "frameworks.h" + +#include +#include +#include +#if HAVE_COREMEDIA +#include +#endif +#if HAVE_MAPKIT +#include +#endif +#include +#if HAVE_COREANIMATION +#include +#endif +#if HAVE_UIKIT +#include +#endif + #include #include "product.h" @@ -36,7 +55,7 @@ x_init_mutex () } void * -xamarin_marshal_return_value (MonoType *mtype, const char *type, MonoObject *retval, bool retain, MonoMethod *method, guint32 *exception_gchandle) +xamarin_marshal_return_value (MonoType *mtype, const char *type, MonoObject *retval, bool retain, MonoMethod *method, MethodDescription *desc, guint32 *exception_gchandle) { // COOP: accesses managed memory: unsafe mode. MONO_ASSERT_GC_UNSAFE; @@ -59,7 +78,10 @@ xamarin_marshal_return_value (MonoType *mtype, const char *type, MonoObject *ret } case _C_ID: { MonoClass *r_klass = mono_object_get_class ((MonoObject *) retval); - if (r_klass == mono_get_string_class ()) { + + if (desc && desc->bindas [0].original_type != NULL) { + return xamarin_generate_conversion_to_native (retval, mono_class_get_type (r_klass), mono_reflection_type_get_type (desc->bindas [0].original_type), method, exception_gchandle); + } else if (r_klass == mono_get_string_class ()) { char *str = mono_string_to_utf8 ((MonoString *) retval); NSString *rv = [[NSString alloc] initWithUTF8String:str]; @@ -591,3 +613,578 @@ xamarin_get_gchandle_trampoline (id self, SEL sel) pthread_mutex_unlock (&gchandle_hash_lock); return gc_handle; } + +id +xamarin_generate_conversion_to_native (MonoObject *value, MonoType *inputType, MonoType *outputType, MonoMethod *method, guint32 *exception_gchandle) +{ + // COOP: Reads managed memory, needs to be in UNSAFE mode + MONO_ASSERT_GC_UNSAFE; + + // This method is a mirror of StaticRegistrar.GenerateConversionToNative + // These methods must be kept in sync. + + id convertedValue = NULL; + MonoClass *managedType = mono_class_from_mono_type (inputType); + MonoClass *nativeType = mono_class_from_mono_type (outputType); + + bool isManagedNullable = mono_class_is_nullable (managedType); + + MonoClass *underlyingManagedType = managedType; + MonoClass *underlyingNativeType = nativeType; + + bool isManagedArray = xamarin_is_class_array (managedType); + bool isNativeArray = xamarin_is_class_array (nativeType); + + if (isManagedArray != isNativeArray) { + *exception_gchandle = xamarin_create_bindas_exception (inputType, outputType, method); + goto exception_handling; + } + + if (isManagedArray) { + if (isManagedNullable) { + *exception_gchandle = xamarin_create_bindas_exception (inputType, outputType, method); + goto exception_handling; + } + underlyingNativeType = mono_class_get_element_class (nativeType); + underlyingManagedType = mono_class_get_element_class (managedType); + } else if (isManagedNullable) { + underlyingManagedType = mono_class_get_nullable_param (managedType); + } + + if (value) { + xamarin_managed_to_id_func func; + if (xamarin_is_class_nsnumber (underlyingNativeType)) { + func = xamarin_get_managed_to_nsnumber_func (underlyingManagedType, method, exception_gchandle); + } else if (xamarin_is_class_nsvalue (underlyingNativeType)) { + func = xamarin_get_managed_to_nsvalue_func (underlyingManagedType, method, exception_gchandle); + } else if (xamarin_is_class_nsstring (underlyingNativeType)) { + func = xamarin_get_smart_enum_to_nsstring_func (underlyingManagedType, method, exception_gchandle); + } else { + *exception_gchandle = xamarin_create_bindas_exception (inputType, outputType, method); + goto exception_handling; + } + if (*exception_gchandle != 0) + goto exception_handling; + + if (isManagedArray) { + convertedValue = xamarin_convert_managed_to_nsarray_with_func ((MonoArray *) value, func, exception_gchandle); + if (*exception_gchandle != 0) + goto exception_handling; + } else { + convertedValue = func (value, exception_gchandle); + if (*exception_gchandle != 0) + goto exception_handling; + } + } + +exception_handling: + + return convertedValue; +} + + +void * +xamarin_generate_conversion_to_managed (id value, MonoType *inputType, MonoType *outputType, MonoMethod *method, guint32 *exception_gchandle, /*SList*/ void **free_list) +{ + // COOP: Reads managed memory, needs to be in UNSAFE mode + MONO_ASSERT_GC_UNSAFE; + + // This method is a mirror of StaticRegistrar.GenerateConversionToManaged + // These methods must be kept in sync. + + void *convertedValue = NULL; + MonoClass *managedType = mono_class_from_mono_type (outputType); + MonoClass *nativeType = mono_class_from_mono_type (inputType); + + bool isManagedNullable = mono_class_is_nullable (managedType); + + MonoClass *underlyingManagedType = managedType; + MonoClass *underlyingNativeType = nativeType; + + bool isManagedArray = xamarin_is_class_array (managedType); + bool isNativeArray = xamarin_is_class_array (nativeType); + + if (isManagedArray != isNativeArray) { + *exception_gchandle = xamarin_create_bindas_exception (inputType, outputType, method); + goto exception_handling; + } + + if (isManagedArray) { + if (isManagedNullable) { + *exception_gchandle = xamarin_create_bindas_exception (inputType, outputType, method); + goto exception_handling; + } + underlyingNativeType = mono_class_get_element_class (nativeType); + underlyingManagedType = mono_class_get_element_class (managedType); + } else if (isManagedNullable) { + underlyingManagedType = mono_class_get_nullable_param (managedType); + } + + if (value) { + xamarin_id_to_managed_func func; + if (xamarin_is_class_nsnumber (underlyingNativeType)) { + func = xamarin_get_nsnumber_to_managed_func (underlyingManagedType, method, exception_gchandle); + } else if (xamarin_is_class_nsvalue (underlyingNativeType)) { + func = xamarin_get_nsvalue_to_managed_func (underlyingManagedType, method, exception_gchandle); + } else if (xamarin_is_class_nsstring (underlyingNativeType)) { + func = xamarin_get_nsstring_to_smart_enum_func (underlyingManagedType, method, exception_gchandle); + } else { + *exception_gchandle = xamarin_create_bindas_exception (inputType, outputType, method); + goto exception_handling; + } + if (*exception_gchandle != 0) + goto exception_handling; + + if (isManagedArray) { + convertedValue = xamarin_convert_nsarray_to_managed_with_func (value, underlyingManagedType, func, exception_gchandle); + if (*exception_gchandle != 0) + goto exception_handling; + } else { + convertedValue = func (value, NULL, underlyingManagedType, exception_gchandle); + if (*exception_gchandle != 0) + goto exception_handling; + *(SList **) free_list = s_list_prepend (*(SList **) free_list, convertedValue); + + if (isManagedNullable) + convertedValue = mono_value_box (mono_domain_get (), underlyingManagedType, convertedValue); + } + } + +exception_handling: + + return convertedValue; +} + +// Returns a pointer to the value type, which must be freed using xamarin_free. +// If called multiple times in succession, the returned pointer can be passed as the second ptr argument, and it need only be freed once done iterating. +void *xamarin_nsnumber_to_bool (NSNumber *number, void *ptr, MonoClass *managedType, guint32 *exception_gchandle) { BOOL *valueptr = (BOOL *) (ptr ? ptr : xamarin_calloc (sizeof (BOOL))); *valueptr = [number boolValue]; return valueptr; } +void *xamarin_nsnumber_to_sbyte (NSNumber *number, void *ptr, MonoClass *managedType, guint32 *exception_gchandle) { int8_t *valueptr = (int8_t *) (ptr ? ptr : xamarin_calloc (sizeof (int8_t))); *valueptr = [number charValue]; return valueptr; } +void *xamarin_nsnumber_to_byte (NSNumber *number, void *ptr, MonoClass *managedType, guint32 *exception_gchandle) { uint8_t *valueptr = (uint8_t *) (ptr ? ptr : xamarin_calloc (sizeof (uint8_t))); *valueptr = [number unsignedCharValue]; return valueptr; } +void *xamarin_nsnumber_to_short (NSNumber *number, void *ptr, MonoClass *managedType, guint32 *exception_gchandle) { int16_t *valueptr = (int16_t *) (ptr ? ptr : xamarin_calloc (sizeof (int16_t))); *valueptr = [number shortValue]; return valueptr; } +void *xamarin_nsnumber_to_ushort (NSNumber *number, void *ptr, MonoClass *managedType, guint32 *exception_gchandle) { uint16_t *valueptr = (uint16_t *) (ptr ? ptr : xamarin_calloc (sizeof (uint16_t))); *valueptr = [number unsignedShortValue]; return valueptr; } +void *xamarin_nsnumber_to_int (NSNumber *number, void *ptr, MonoClass *managedType, guint32 *exception_gchandle) { int32_t *valueptr = (int32_t *) (ptr ? ptr : xamarin_calloc (sizeof (int32_t))); *valueptr = [number intValue]; return valueptr; } +void *xamarin_nsnumber_to_uint (NSNumber *number, void *ptr, MonoClass *managedType, guint32 *exception_gchandle) { uint32_t *valueptr = (uint32_t *) (ptr ? ptr : xamarin_calloc (sizeof (uint32_t))); *valueptr = [number unsignedIntValue]; return valueptr; } +void *xamarin_nsnumber_to_long (NSNumber *number, void *ptr, MonoClass *managedType, guint32 *exception_gchandle) { int64_t *valueptr = (int64_t *) (ptr ? ptr : xamarin_calloc (sizeof (int64_t))); *valueptr = [number longLongValue]; return valueptr; } +void *xamarin_nsnumber_to_ulong (NSNumber *number, void *ptr, MonoClass *managedType, guint32 *exception_gchandle) { uint64_t *valueptr = (uint64_t *) (ptr ? ptr : xamarin_calloc (sizeof (uint64_t))); *valueptr = [number unsignedLongLongValue]; return valueptr; } +void *xamarin_nsnumber_to_nint (NSNumber *number, void *ptr, MonoClass *managedType, guint32 *exception_gchandle) { NSInteger *valueptr = (NSInteger *) (ptr ? ptr : xamarin_calloc (sizeof (NSInteger))); *valueptr = [number integerValue]; return valueptr; } +void *xamarin_nsnumber_to_nuint (NSNumber *number, void *ptr, MonoClass *managedType, guint32 *exception_gchandle) { NSUInteger *valueptr = (NSUInteger *) (ptr ? ptr : xamarin_calloc (sizeof (NSUInteger))); *valueptr = [number unsignedIntegerValue]; return valueptr; } +void *xamarin_nsnumber_to_float (NSNumber *number, void *ptr, MonoClass *managedType, guint32 *exception_gchandle) { float *valueptr = (float *) (ptr ? ptr : xamarin_calloc (sizeof (float))); *valueptr = [number floatValue]; return valueptr; } +void *xamarin_nsnumber_to_double (NSNumber *number, void *ptr, MonoClass *managedType, guint32 *exception_gchandle) { double *valueptr = (double *) (ptr ? ptr : xamarin_calloc (sizeof (double))); *valueptr = [number doubleValue]; return valueptr; } +#if __POINTER_WIDTH__ == 32 +void *xamarin_nsnumber_to_nfloat (NSNumber *number, void *ptr, MonoClass *managedType, guint32 *exception_gchandle) { float *valueptr = (float *) (ptr ? ptr : xamarin_calloc (sizeof (float))); *valueptr = [number floatValue]; return valueptr; } +#elif __POINTER_WIDTH__ == 64 +void *xamarin_nsnumber_to_nfloat (NSNumber *number, void *ptr, MonoClass *managedType, guint32 *exception_gchandle) { double *valueptr = (double *) (ptr ? ptr : xamarin_calloc (sizeof (double))); *valueptr = [number doubleValue]; return valueptr; } +#else + #error Invalid pointer size. +#endif + +// Returns a pointer to the value type, which must be freed using xamarin_free. +// If called multiple times in succession, the returned pointer can be passed as the second ptr argument, and it need only be freed once done iterating. +void *xamarin_nsvalue_to_nsrange (NSValue *value, void *ptr, MonoClass *managedType, guint32 *exception_gchandle) { NSRange *valueptr = (NSRange *) (ptr ? ptr : xamarin_calloc (sizeof (NSRange))); *valueptr = [value rangeValue]; return valueptr; } +#if HAVE_UIKIT // Yep, these CoreGraphics-looking category method is defined in UIKit. +void *xamarin_nsvalue_to_cgaffinetransform (NSValue *value, void *ptr, MonoClass *managedType, guint32 *exception_gchandle) { CGAffineTransform *valueptr = (CGAffineTransform *) (ptr ? ptr : xamarin_calloc (sizeof (CGAffineTransform))); *valueptr = [value CGAffineTransformValue]; return valueptr; } +void *xamarin_nsvalue_to_cgpoint (NSValue *value, void *ptr, MonoClass *managedType, guint32 *exception_gchandle) { CGPoint *valueptr = (CGPoint *) (ptr ? ptr : xamarin_calloc (sizeof (CGPoint))); *valueptr = [value CGPointValue]; return valueptr; } +void *xamarin_nsvalue_to_cgrect (NSValue *value, void *ptr, MonoClass *managedType, guint32 *exception_gchandle) { CGRect *valueptr = (CGRect *) (ptr ? ptr : xamarin_calloc (sizeof (CGRect))); *valueptr = [value CGRectValue]; return valueptr; } +void *xamarin_nsvalue_to_cgsize (NSValue *value, void *ptr, MonoClass *managedType, guint32 *exception_gchandle) { CGSize *valueptr = (CGSize *) (ptr ? ptr : xamarin_calloc (sizeof (CGSize))); *valueptr = [value CGSizeValue]; return valueptr; } +void *xamarin_nsvalue_to_cgvector (NSValue *value, void *ptr, MonoClass *managedType, guint32 *exception_gchandle) { CGVector *valueptr = (CGVector *) (ptr ? ptr : xamarin_calloc (sizeof (CGVector))); *valueptr = [value CGVectorValue]; return valueptr; } +#endif +#if HAVE_COREANIMATION +void *xamarin_nsvalue_to_catransform3d (NSValue *value, void *ptr, MonoClass *managedType, guint32 *exception_gchandle) { CATransform3D *valueptr = (CATransform3D *) (ptr ? ptr : xamarin_calloc (sizeof (CATransform3D))); *valueptr = [value CATransform3DValue]; return valueptr; } +#endif +#if HAVE_MAPKIT // Yep, this is defined in MapKit. +void *xamarin_nsvalue_to_cllocationcoordinate2d (NSValue *value, void *ptr, MonoClass *managedType, guint32 *exception_gchandle) { CLLocationCoordinate2D *valueptr = (CLLocationCoordinate2D *) (ptr ? ptr : xamarin_calloc (sizeof (CLLocationCoordinate2D))); *valueptr = [value MKCoordinateValue]; return valueptr; } +#endif +#if HAVE_COREMEDIA +void *xamarin_nsvalue_to_cmtime (NSValue *value, void *ptr, MonoClass *managedType, guint32 *exception_gchandle) { CMTime *valueptr = (CMTime *) (ptr ? ptr : xamarin_calloc (sizeof (CMTime))); *valueptr = [value CMTimeValue]; return valueptr; } +void *xamarin_nsvalue_to_cmtimemapping (NSValue *value, void *ptr, MonoClass *managedType, guint32 *exception_gchandle) { CMTimeMapping *valueptr = (CMTimeMapping *) (ptr ? ptr : xamarin_calloc (sizeof (CMTimeMapping))); *valueptr = [value CMTimeMappingValue]; return valueptr; } +void *xamarin_nsvalue_to_cmtimerange (NSValue *value, void *ptr, MonoClass *managedType, guint32 *exception_gchandle) { CMTimeRange *valueptr = (CMTimeRange *) (ptr ? ptr : xamarin_calloc (sizeof (CMTimeRange))); *valueptr = [value CMTimeRangeValue]; return valueptr; } +#endif +#if HAVE_MAPKIT +void *xamarin_nsvalue_to_mkcoordinatespan (NSValue *value, void *ptr, MonoClass *managedType, guint32 *exception_gchandle) { MKCoordinateSpan *valueptr = (MKCoordinateSpan *) (ptr ? ptr : xamarin_calloc (sizeof (MKCoordinateSpan))); *valueptr = [value MKCoordinateSpanValue]; return valueptr; } +#endif +void *xamarin_nsvalue_to_scnmatrix4 (NSValue *value, void *ptr, MonoClass *managedType, guint32 *exception_gchandle) { SCNMatrix4 *valueptr = (SCNMatrix4 *) (ptr ? ptr : xamarin_calloc (sizeof (SCNMatrix4))); *valueptr = [value SCNMatrix4Value]; return valueptr; } +void * +xamarin_nsvalue_to_scnvector3 (NSValue *value, void *ptr, MonoClass *managedType, guint32 *exception_gchandle) +{ +#if TARGET_OS_IOS && defined (__arm__) + // In earlier versions of iOS [NSValue SCNVector3Value] would return 4 + // floats. This does not cause problems on 64-bit architectures, because + // the 4 floats end up in floating point registers that doesn't need to be + // preserved. On 32-bit architectures it becomes a real problem though, + // since objc_msgSend_stret will be called, and the return value will be + // written to the stack. Writing 4 floats to the stack, when clang + // allocates 3 bytes, is a bad idea. There's no radar since this has + // already been fixed in iOS, it only affects older versions. + + // So we have to avoid the SCNVector3Value selector on 32-bit + // architectures, since we can't influence how clang generates the call. + // Instead use [NSValue getValue:]. Interestingly enough this function has + // the same bug: it will write 4 floats on 32-bit architectures (and + // amazingly 4 *doubles* on 64-bit architectures - this has been filed as + // radar 33104111), but since we control the input buffer, we can just + // allocate the necessary bytes. And for good measure allocate 32 bytes, + // just to be sure. + + // Just to complicate matters, everything works fine on watchOS because + // armv7k does not use objc_msgSend_stret for this signature, this only + // happens on iOS. + SCNVector3 *valueptr = (SCNVector3 *) xamarin_calloc (32); + [value getValue: valueptr]; + if (ptr) { + memcpy (ptr, valueptr, sizeof (SCNVector3)); + xamarin_free (valueptr); + valueptr = (SCNVector3 *) ptr; + } +#else + SCNVector3 *valueptr = (SCNVector3 *) (ptr ? ptr : xamarin_calloc (sizeof (SCNVector3))); + *valueptr = [value SCNVector3Value]; +#endif + + return valueptr; +} +void *xamarin_nsvalue_to_scnvector4 (NSValue *value, void *ptr, MonoClass *managedType, guint32 *exception_gchandle) { SCNVector4 *valueptr = (SCNVector4 *) (ptr ? ptr : xamarin_calloc (sizeof (SCNVector4))); *valueptr = [value SCNVector4Value]; return valueptr; } +#if HAVE_UIKIT +void *xamarin_nsvalue_to_uiedgeinsets (NSValue *value, void *ptr, MonoClass *managedType, guint32 *exception_gchandle) { UIEdgeInsets *valueptr = (UIEdgeInsets *) (ptr ? ptr : xamarin_calloc (sizeof (UIEdgeInsets))); *valueptr = [value UIEdgeInsetsValue]; return valueptr; } +void *xamarin_nsvalue_to_uioffset (NSValue *value, void *ptr, MonoClass *managedType, guint32 *exception_gchandle) { UIOffset *valueptr = (UIOffset *) (ptr ? ptr : xamarin_calloc (sizeof (UIOffset))); *valueptr = [value UIOffsetValue]; return valueptr; } +#endif + +id xamarin_bool_to_nsnumber (MonoObject *value, guint32 *exception_gchandle) { return [NSNumber numberWithBool: *(BOOL *) mono_object_unbox (value)]; } +id xamarin_sbyte_to_nsnumber (MonoObject *value, guint32 *exception_gchandle) { return [NSNumber numberWithChar: *(int8_t *) mono_object_unbox (value)]; } +id xamarin_byte_to_nsnumber (MonoObject *value, guint32 *exception_gchandle) { return [NSNumber numberWithUnsignedChar: *(uint8_t *) mono_object_unbox (value)]; } +id xamarin_short_to_nsnumber (MonoObject *value, guint32 *exception_gchandle) { return [NSNumber numberWithShort: *(int16_t *) mono_object_unbox (value)]; } +id xamarin_ushort_to_nsnumber (MonoObject *value, guint32 *exception_gchandle) { return [NSNumber numberWithUnsignedShort: *(uint16_t *) mono_object_unbox (value)]; } +id xamarin_int_to_nsnumber (MonoObject *value, guint32 *exception_gchandle) { return [NSNumber numberWithInt: *(int32_t *) mono_object_unbox (value)]; } +id xamarin_uint_to_nsnumber (MonoObject *value, guint32 *exception_gchandle) { return [NSNumber numberWithUnsignedInt: *(uint32_t *) mono_object_unbox (value)]; } +id xamarin_long_to_nsnumber (MonoObject *value, guint32 *exception_gchandle) { return [NSNumber numberWithLongLong: *(int64_t *) mono_object_unbox (value)]; } +id xamarin_ulong_to_nsnumber (MonoObject *value, guint32 *exception_gchandle) { return [NSNumber numberWithUnsignedLongLong: *(uint64_t *) mono_object_unbox (value)]; } +id xamarin_nint_to_nsnumber (MonoObject *value, guint32 *exception_gchandle) { return [NSNumber numberWithInteger: *(NSInteger *) mono_object_unbox (value)]; } +id xamarin_nuint_to_nsnumber (MonoObject *value, guint32 *exception_gchandle) { return [NSNumber numberWithUnsignedInteger: *(NSUInteger *) mono_object_unbox (value)]; } +id xamarin_float_to_nsnumber (MonoObject *value, guint32 *exception_gchandle) { return [NSNumber numberWithFloat: *(float *) mono_object_unbox (value)]; } +id xamarin_double_to_nsnumber (MonoObject *value, guint32 *exception_gchandle) { return [NSNumber numberWithDouble: *(double *) mono_object_unbox (value)]; } +#if __POINTER_WIDTH__ == 32 +id xamarin_nfloat_to_nsnumber (MonoObject *value, guint32 *exception_gchandle) { return [NSNumber numberWithFloat: *(float *) mono_object_unbox (value)]; } +#elif __POINTER_WIDTH__ == 64 +id xamarin_nfloat_to_nsnumber (MonoObject *value, guint32 *exception_gchandle) { return [NSNumber numberWithDouble: *(double *) mono_object_unbox (value)]; } +#else + #error Invalid pointer size. +#endif + +id xamarin_nsrange_to_nsvalue (MonoObject *value, guint32 *exception_gchandle) { return [NSValue valueWithRange: *(NSRange *) mono_object_unbox (value)]; } +#if HAVE_UIKIT // yep, these CoreGraphics-looking category methods are defined in UIKit +id xamarin_cgaffinetransform_to_nsvalue (MonoObject *value, guint32 *exception_gchandle) { return [NSValue valueWithCGAffineTransform: *(CGAffineTransform *) mono_object_unbox (value)]; } +id xamarin_cgpoint_to_nsvalue (MonoObject *value, guint32 *exception_gchandle) { return [NSValue valueWithCGPoint: *(CGPoint *) mono_object_unbox (value)]; } +id xamarin_cgrect_to_nsvalue (MonoObject *value, guint32 *exception_gchandle) { return [NSValue valueWithCGRect: *(CGRect *) mono_object_unbox (value)]; } +id xamarin_cgsize_to_nsvalue (MonoObject *value, guint32 *exception_gchandle) { return [NSValue valueWithCGSize: *(CGSize *) mono_object_unbox (value)]; } +id xamarin_cgvector_to_nsvalue (MonoObject *value, guint32 *exception_gchandle) { return [NSValue valueWithCGVector: *(CGVector *) mono_object_unbox (value)]; } +#endif +#if HAVE_COREANIMATION +id xamarin_catransform3d_to_nsvalue (MonoObject *value, guint32 *exception_gchandle) { return [NSValue valueWithCATransform3D: *(CATransform3D *) mono_object_unbox (value)]; } +#endif +#if HAVE_MAPKIT // Yep, this is defined in MapKit. +id xamarin_cllocationcoordinate2d_to_nsvalue (MonoObject *value, guint32 *exception_gchandle) { return [NSValue valueWithMKCoordinate: *(CLLocationCoordinate2D *) mono_object_unbox (value)]; } +#endif +#if HAVE_COREMEDIA +id xamarin_cmtime_to_nsvalue (MonoObject *value, guint32 *exception_gchandle) { return [NSValue valueWithCMTime: *(CMTime *) mono_object_unbox (value)]; } +id xamarin_cmtimemapping_to_nsvalue (MonoObject *value, guint32 *exception_gchandle) { return [NSValue valueWithCMTimeMapping: *(CMTimeMapping *) mono_object_unbox (value)]; } +id xamarin_cmtimerange_to_nsvalue (MonoObject *value, guint32 *exception_gchandle) { return [NSValue valueWithCMTimeRange: *(CMTimeRange *) mono_object_unbox (value)]; } +#endif +#if HAVE_MAPKIT +id xamarin_mkcoordinatespan_to_nsvalue (MonoObject *value, guint32 *exception_gchandle) { return [NSValue valueWithMKCoordinateSpan: *(MKCoordinateSpan *) mono_object_unbox (value)]; } +#endif +id xamarin_scnmatrix4_to_nsvalue (MonoObject *value, guint32 *exception_gchandle) { return [NSValue valueWithSCNMatrix4: *(SCNMatrix4 *) mono_object_unbox (value)]; } +id xamarin_scnvector3_to_nsvalue (MonoObject *value, guint32 *exception_gchandle) { return [NSValue valueWithSCNVector3: *(SCNVector3 *) mono_object_unbox (value)]; } +id xamarin_scnvector4_to_nsvalue (MonoObject *value, guint32 *exception_gchandle) { return [NSValue valueWithSCNVector4: *(SCNVector4 *) mono_object_unbox (value)]; } +#if HAVE_UIKIT +id xamarin_uiedgeinsets_to_nsvalue (MonoObject *value, guint32 *exception_gchandle) { return [NSValue valueWithUIEdgeInsets: *(UIEdgeInsets *) mono_object_unbox (value)]; } +id xamarin_uioffset_to_nsvalue (MonoObject *value, guint32 *exception_gchandle) { return [NSValue valueWithUIOffset: *(UIOffset *) mono_object_unbox (value)]; } +#endif + +static void * +xamarin_get_nsnumber_converter (MonoClass *managedType, MonoMethod *method, bool to_managed, guint32 *exception_gchandle) +{ + void * func = NULL; + char *fullname = xamarin_class_get_full_name (managedType, exception_gchandle); + if (*exception_gchandle != 0) + goto exception_handling; + + if (!strcmp (fullname, "System.SByte")) { + func = to_managed ? (void *) xamarin_nsnumber_to_sbyte : (void *) xamarin_sbyte_to_nsnumber; + } else if (!strcmp (fullname, "System.Byte")) { + func = to_managed ? (void *) xamarin_nsnumber_to_byte : (void *) xamarin_byte_to_nsnumber; + } else if (!strcmp (fullname, "System.Int16")) { + func = to_managed ? (void *) xamarin_nsnumber_to_short : (void *) xamarin_short_to_nsnumber; + } else if (!strcmp (fullname, "System.UInt16")) { + func = to_managed ? (void *) xamarin_nsnumber_to_ushort : (void *) xamarin_ushort_to_nsnumber; + } else if (!strcmp (fullname, "System.Int32")) { + func = to_managed ? (void *) xamarin_nsnumber_to_int : (void *) xamarin_int_to_nsnumber; + } else if (!strcmp (fullname, "System.UInt32")) { + func = to_managed ? (void *) xamarin_nsnumber_to_uint : (void *) xamarin_uint_to_nsnumber; + } else if (!strcmp (fullname, "System.Int64")) { + func = to_managed ? (void *) xamarin_nsnumber_to_long : (void *) xamarin_long_to_nsnumber; + } else if (!strcmp (fullname, "System.UInt64")) { + func = to_managed ? (void *) xamarin_nsnumber_to_ulong : (void *) xamarin_ulong_to_nsnumber; + } else if (!strcmp (fullname, "System.nint")) { + func = to_managed ? (void *) xamarin_nsnumber_to_nint : (void *) xamarin_nint_to_nsnumber; + } else if (!strcmp (fullname, "System.nuint")) { + func = to_managed ? (void *) xamarin_nsnumber_to_nuint : (void *) xamarin_nuint_to_nsnumber; + } else if (!strcmp (fullname, "System.Single")) { + func = to_managed ? (void *) xamarin_nsnumber_to_float : (void *) xamarin_float_to_nsnumber; + } else if (!strcmp (fullname, "System.Double")) { + func = to_managed ? (void *) xamarin_nsnumber_to_double : (void *) xamarin_double_to_nsnumber; + } else if (!strcmp (fullname, "System.nfloat")) { + func = to_managed ? (void *) xamarin_nsnumber_to_nfloat : (void *) xamarin_nfloat_to_nsnumber; + } else if (!strcmp (fullname, "System.Boolean")) { + func = to_managed ? (void *) xamarin_nsnumber_to_bool : (void *) xamarin_bool_to_nsnumber; + } else { + *exception_gchandle = xamarin_create_bindas_exception (mono_class_get_type (managedType), mono_class_get_type (xamarin_get_nsnumber_class ()), method); + goto exception_handling; + } + +exception_handling: + xamarin_free (fullname); + + return func; +} + +static void * +xamarin_get_nsvalue_converter (MonoClass *managedType, MonoMethod *method, bool to_managed, guint32 *exception_gchandle) +{ + void * func = NULL; + char *fullname = xamarin_class_get_full_name (managedType, exception_gchandle); + if (*exception_gchandle != 0) + goto exception_handling; + +#if MONOMAC + if (xamarin_use_new_assemblies && !strncmp (fullname, "MonoMac.", 8)) { + char *tmp_to_name = xamarin_strdup_printf ("%s", fullname + 8); + xamarin_free (fullname); + fullname = tmp_to_name; + } +#endif + + if (!strcmp (fullname, "Foundation.NSRange")) { + func = to_managed ? (void *) xamarin_nsvalue_to_nsrange : (void *) xamarin_nsrange_to_nsvalue; +#if HAVE_UIKIT // yep, these CoreGraphics-looking category methods are defined in UIKit + } else if (!strcmp (fullname, "CoreGraphics.CGAffineTransform")) { + func = to_managed ? (void *) xamarin_nsvalue_to_cgaffinetransform : (void *) xamarin_cgaffinetransform_to_nsvalue; + } else if (!strcmp (fullname, "CoreGraphics.CGPoint")) { + func = to_managed ? (void *) xamarin_nsvalue_to_cgpoint : (void *) xamarin_cgpoint_to_nsvalue; + } else if (!strcmp (fullname, "CoreGraphics.CGRect")) { + func = to_managed ? (void *) xamarin_nsvalue_to_cgrect : (void *) xamarin_cgrect_to_nsvalue; + } else if (!strcmp (fullname, "CoreGraphics.CGSize")) { + func = to_managed ? (void *) xamarin_nsvalue_to_cgsize : (void *) xamarin_cgsize_to_nsvalue; + } else if (!strcmp (fullname, "CoreGraphics.CGVector")) { + func = to_managed ? (void *) xamarin_nsvalue_to_cgvector : (void *) xamarin_cgvector_to_nsvalue; +#endif +#if HAVE_COREANIMATION + } else if (!strcmp (fullname, "CoreAnimation.CATransform3D")) { + func = to_managed ? (void *) xamarin_nsvalue_to_catransform3d : (void *) xamarin_catransform3d_to_nsvalue; +#endif +#if HAVE_MAPKIT // Yep, this is defined in MapKit. + } else if (!strcmp (fullname, "CoreLocation.CLLocationCoordinate2D")) { + func = to_managed ? (void *) xamarin_nsvalue_to_cllocationcoordinate2d : (void *) xamarin_cllocationcoordinate2d_to_nsvalue; +#endif +#if HAVE_COREMEDIA + } else if (!strcmp (fullname, "CoreMedia.CMTime")) { + func = to_managed ? (void *) xamarin_nsvalue_to_cmtime : (void *) xamarin_cmtime_to_nsvalue; + } else if (!strcmp (fullname, "CoreMedia.CMTimeMapping")) { + func = to_managed ? (void *) xamarin_nsvalue_to_cmtimemapping : (void *) xamarin_cmtimemapping_to_nsvalue; + } else if (!strcmp (fullname, "CoreMedia.CMTimeRange")) { + func = to_managed ? (void *) xamarin_nsvalue_to_cmtimerange : (void *) xamarin_cmtimerange_to_nsvalue; +#endif +#if HAVE_MAPKIT + } else if (!strcmp (fullname, "MapKit.MKCoordinateSpan")) { + func = to_managed ? (void *) xamarin_nsvalue_to_mkcoordinatespan : (void *) xamarin_mkcoordinatespan_to_nsvalue; +#endif + } else if (!strcmp (fullname, "SceneKit.SCNMatrix4")) { + func = to_managed ? (void *) xamarin_nsvalue_to_scnmatrix4 : (void *) xamarin_scnmatrix4_to_nsvalue; + } else if (!strcmp (fullname, "SceneKit.SCNVector3")) { + func = to_managed ? (void *) xamarin_nsvalue_to_scnvector3 : (void *) xamarin_scnvector3_to_nsvalue; + } else if (!strcmp (fullname, "SceneKit.SCNVector4")) { + func = to_managed ? (void *) xamarin_nsvalue_to_scnvector4 : (void *) xamarin_scnvector4_to_nsvalue; +#if HAVE_UIKIT + } else if (!strcmp (fullname, "UIKit.UIEdgeInsets")) { + func = to_managed ? (void *) xamarin_nsvalue_to_uiedgeinsets : (void *) xamarin_uiedgeinsets_to_nsvalue; + } else if (!strcmp (fullname, "UIKit.UIOffset")) { + func = to_managed ? (void *) xamarin_nsvalue_to_uioffset : (void *) xamarin_uioffset_to_nsvalue; +#endif + } else { + *exception_gchandle = xamarin_create_bindas_exception (mono_class_get_type (managedType), mono_class_get_type (xamarin_get_nsvalue_class ()), method); + goto exception_handling; + } + +exception_handling: + xamarin_free (fullname); + + return func; +} + +xamarin_id_to_managed_func +xamarin_get_nsnumber_to_managed_func (MonoClass *managedType, MonoMethod *method, guint32 *exception_gchandle) +{ + return (xamarin_id_to_managed_func) xamarin_get_nsnumber_converter (managedType, method, true, exception_gchandle); +} + +xamarin_managed_to_id_func +xamarin_get_managed_to_nsnumber_func (MonoClass *managedType, MonoMethod *method, guint32 *exception_gchandle) +{ + return (xamarin_managed_to_id_func) xamarin_get_nsnumber_converter (managedType, method, false, exception_gchandle); +} + +xamarin_id_to_managed_func +xamarin_get_nsvalue_to_managed_func (MonoClass *managedType, MonoMethod *method, guint32 *exception_gchandle) +{ + return (xamarin_id_to_managed_func) xamarin_get_nsvalue_converter (managedType, method, true, exception_gchandle); +} + +xamarin_managed_to_id_func +xamarin_get_managed_to_nsvalue_func (MonoClass *managedType, MonoMethod *method, guint32 *exception_gchandle) +{ + return (xamarin_managed_to_id_func) xamarin_get_nsvalue_converter (managedType, method, false, exception_gchandle); +} + +void * +xamarin_smart_enum_to_nsstring (MonoObject *value, guint32 *exception_gchandle) +{ + int handle = mono_gchandle_new (value, FALSE); + NSString *rv = xamarin_convert_smart_enum_to_nsstring (GINT_TO_POINTER (handle), exception_gchandle); + mono_gchandle_free (handle); + return rv; +} + +void * +xamarin_nsstring_to_smart_enum (id value, void *ptr, MonoClass *managedType, guint32 *exception_gchandle) +{ + void *rv = xamarin_convert_nsstring_to_smart_enum (value, mono_type_get_object (mono_domain_get (), mono_class_get_type (managedType)), exception_gchandle); + if (*exception_gchandle != 0) + return ptr; + int handle = GPOINTER_TO_INT (rv); + int size = mono_class_value_size (managedType, NULL); + if (!ptr) + ptr = xamarin_calloc (size); + void *value_ptr = mono_object_unbox (mono_gchandle_get_target (handle)); + memcpy (ptr, value_ptr, size); + mono_gchandle_free (handle); + return ptr; +} + +xamarin_id_to_managed_func +xamarin_get_nsstring_to_smart_enum_func (MonoClass *managedType, MonoMethod *method, guint32 *exception_gchandle) +{ + return xamarin_nsstring_to_smart_enum; +} + +xamarin_managed_to_id_func +xamarin_get_smart_enum_to_nsstring_func (MonoClass *managedType, MonoMethod *method, guint32 *exception_gchandle) +{ + return (xamarin_managed_to_id_func) xamarin_smart_enum_to_nsstring; +} + +NSArray * +xamarin_convert_managed_to_nsarray_with_func (MonoArray *array, xamarin_managed_to_id_func convert, guint32 *exception_gchandle) +{ + id *buf = NULL; + NSArray *rv = NULL; + + if (array == NULL) + return NULL; + + int length = mono_array_length (array); + if (length == 0) + return [NSArray array]; + + buf = (id *) malloc (sizeof (id) * length); + MonoClass *element_class = mono_class_get_element_class (mono_object_get_class ((MonoObject *) array)); + int element_size = mono_class_value_size (element_class, NULL); + char *ptr = (char *) mono_array_addr_with_size (array, element_size, 0); + for (int i = 0; i < length; i++) { + MonoObject *value = mono_value_box (mono_domain_get (), element_class, ptr + element_size * i); + buf [i] = convert (value, exception_gchandle); + if (*exception_gchandle != 0) + goto exception_handling; + } + rv = [NSArray arrayWithObjects: buf count: length]; + +exception_handling: + free (buf); + + return rv; +} + +MonoArray * +xamarin_convert_nsarray_to_managed_with_func (NSArray *array, MonoClass *managedElementType, xamarin_id_to_managed_func convert, guint32 *exception_gchandle) +{ + if (array == NULL) + return NULL; + + int length = [array count]; + MonoArray *rv = mono_array_new (mono_domain_get (), managedElementType, length); + + if (length == 0) + return rv; + + void *valueptr = NULL; + int element_size = mono_class_value_size (managedElementType, NULL); + char *ptr = (char *) mono_array_addr_with_size (rv, element_size, 0); + for (int i = 0; i < length; i++) { + valueptr = convert ([array objectAtIndex: i], valueptr, managedElementType, exception_gchandle); + if (*exception_gchandle != 0) + goto exception_handling; + memcpy (ptr, valueptr, element_size); + ptr += element_size; + } + +exception_handling: + xamarin_free (valueptr); + + return rv; +} + +NSNumber * +xamarin_convert_managed_to_nsnumber (MonoObject *value, MonoClass *managedType, MonoMethod *method, guint32 *exception_gchandle) +{ + xamarin_managed_to_id_func convert = xamarin_get_managed_to_nsnumber_func (managedType, method, exception_gchandle); + if (*exception_gchandle != 0) + return NULL; + + return convert (value, exception_gchandle); +} + +NSValue * +xamarin_convert_managed_to_nsvalue (MonoObject *value, MonoClass *managedType, MonoMethod *method, guint32 *exception_gchandle) +{ + xamarin_managed_to_id_func convert = xamarin_get_managed_to_nsvalue_func (managedType, method, exception_gchandle); + if (*exception_gchandle != 0) + return NULL; + + return convert (value, exception_gchandle); +} + +guint32 +xamarin_create_bindas_exception (MonoType *inputType, MonoType *outputType, MonoMethod *method) +{ + guint32 exception_gchandle; + char *to_name = NULL; + char *from_name = NULL; + char *method_full_name = NULL; + char *msg = NULL; + + from_name = xamarin_type_get_full_name (inputType, &exception_gchandle); + if (exception_gchandle != 0) + goto exception_handling; + to_name = xamarin_type_get_full_name (outputType, &exception_gchandle); + if (exception_gchandle != 0) + goto exception_handling; + + method_full_name = mono_method_full_name (method, TRUE); + msg = xamarin_strdup_printf ("Internal error: can't convert from '%s' to '%s' in %s. Please file a bug report with a test case (https://bugzilla.xamarin.com).", + from_name, to_name, method_full_name); + exception_gchandle = mono_gchandle_new ((MonoObject *) xamarin_create_exception (msg), false); + +exception_handling: + xamarin_free (to_name); + xamarin_free (from_name); + xamarin_free (method_full_name); + xamarin_free (msg); + return exception_gchandle; +} diff --git a/runtime/xamarin/runtime.h b/runtime/xamarin/runtime.h index 32affb4bee..e4b6b47ed5 100644 --- a/runtime/xamarin/runtime.h +++ b/runtime/xamarin/runtime.h @@ -83,9 +83,19 @@ struct MTRegistrationMap { int full_token_reference_count; }; +typedef struct { + MonoReflectionType *original_type; +} BindAsData; + typedef struct { MonoReflectionMethod *method; int32_t semantic; + int32_t bindas_count; // The number of elements available in the bindas_types array. + // An array of BindAs original types. Element 0 is for the return value, + // the rest are for parameters (parameters start at 1 even for void methods). + // The array must contain space for the return value and all the parameters, + // even for those that don't have BindAs attributes (the original_type entry will be NULL). + BindAsData bindas[]; } MethodDescription; // This has a managed equivalent in NSObject2.cs @@ -122,6 +132,9 @@ int xamarin_objc_type_size (const char *type); bool xamarin_is_class_nsobject (MonoClass *cls); bool xamarin_is_class_inativeobject (MonoClass *cls); bool xamarin_is_class_array (MonoClass *cls); +bool xamarin_is_class_nsnumber (MonoClass *cls); +bool xamarin_is_class_nsvalue (MonoClass *cls); +bool xamarin_is_class_nsstring (MonoClass *cls); MonoType * xamarin_get_parameter_type (MonoMethod *managed_method, int index); MonoObject * xamarin_get_nsobject_with_type_for_ptr (id self, bool owns, MonoType* type, guint32 *exception_gchandle); MonoObject * xamarin_get_nsobject_with_type_for_ptr_created (id self, bool owns, MonoType *type, int32_t *created, guint32 *exception_gchandle); @@ -136,6 +149,7 @@ void xamarin_rethrow_managed_exception (guint32 original_gchandle, guint32 *ex MonoException * xamarin_create_exception (const char *msg); id xamarin_get_handle (MonoObject *obj, guint32 *exception_gchandle); char * xamarin_strdup_printf (const char *msg, ...); +void * xamarin_calloc (size_t size); void xamarin_free (void *ptr); MonoMethod * xamarin_get_reflection_method_method (MonoReflectionMethod *method); void xamarin_framework_peer_lock (); @@ -182,6 +196,8 @@ void xamarin_throw_product_exception (int code, const char *message); NSString * xamarin_print_all_exceptions (MonoObject *exc); id xamarin_invoke_objc_method_implementation (id self, SEL sel, IMP xamarin_impl); +MonoClass * xamarin_get_nsnumber_class (); +MonoClass * xamarin_get_nsvalue_class (); bool xamarin_is_managed_exception_marshaling_disabled (); @@ -225,7 +241,7 @@ MonoObject* xamarin_get_class (Class ptr, guint32 *exception_gchandle) MonoObject* xamarin_get_selector (SEL ptr, guint32 *exception_gchandle); Class xamarin_get_class_handle (MonoObject *obj, guint32 *exception_gchandle); SEL xamarin_get_selector_handle (MonoObject *obj, guint32 *exception_gchandle); -MethodDescription xamarin_get_method_for_selector (Class cls, SEL sel, bool is_static, guint32 *exception_gchandle); +void xamarin_get_method_for_selector (Class cls, SEL sel, bool is_static, MethodDescription *desc, guint32 *exception_gchandle); bool xamarin_has_nsobject (id obj, guint32 *exception_gchandle); MonoObject* xamarin_get_nsobject (id obj, guint32 *exception_gchandle); id xamarin_get_handle_for_inativeobject (MonoObject *obj, guint32 *exception_gchandle); @@ -239,7 +255,7 @@ MonoObject* xamarin_get_nsobject_with_type (id obj, void *type, int32_t * void xamarin_dispose (MonoObject *mobj, guint32 *exception_gchandle); bool xamarin_is_parameter_transient (MonoReflectionMethod *method, int parameter /* 0-based */, guint32 *exception_gchandle); bool xamarin_is_parameter_out (MonoReflectionMethod *method, int parameter /* 0-based */, guint32 *exception_gchandle); -MethodDescription xamarin_get_method_and_object_for_selector (Class cls, SEL sel, bool is_static, id self, MonoObject **mthis, guint32 *exception_gchandle); +void xamarin_get_method_and_object_for_selector (Class cls, SEL sel, bool is_static, id self, MonoObject **mthis, MethodDescription *desc, guint32 *exception_gchandle); guint32 xamarin_create_product_exception_for_error (int code, const char *message, guint32 *exception_gchandle); #ifdef __cplusplus diff --git a/runtime/xamarin/trampolines.h b/runtime/xamarin/trampolines.h index b963943eba..19c6a68000 100644 --- a/runtime/xamarin/trampolines.h +++ b/runtime/xamarin/trampolines.h @@ -47,6 +47,107 @@ enum ArgumentSemantic /* Xcode 4.4 doesn't like this ': int' */ { ArgumentSemanticCategoryInstance = 1 << 11, }; +/* Conversion functions */ + +// Function to convert from id to managed. If `ptr` is passed, the value type +// will be stored in this pointer. Otherwise a memory is allocated, and the +// return value must be freed using xamarin_free. +// Returns: a pointer to the value type. In case of an exception, 'ptr' is returned (and no memory allocated in any circumstances). +typedef void * (*xamarin_id_to_managed_func) (id value, void *ptr, MonoClass *managedType, guint32 *exception_gchandle); +// Function to convert from managed to id. +typedef id (*xamarin_managed_to_id_func) (MonoObject *value, guint32 *exception_gchandle); + +id xamarin_generate_conversion_to_native (MonoObject *value, MonoType *inputType, MonoType *outputType, MonoMethod *method, guint32 *exception_gchandle); +void * xamarin_generate_conversion_to_managed (id value, MonoType *inputType, MonoType *outputType, MonoMethod *method, guint32 *exception_gchandle, /*SList*/ void **free_list); +NSNumber * xamarin_convert_managed_to_nsnumber (MonoObject *value, MonoType *managedType, MonoType *nativeType, MonoMethod *method, guint32 *exception_gchandle); +NSValue * xamarin_convert_managed_to_nsvalue (MonoObject *value, MonoType *managedType, MonoType *nativeType, MonoMethod *method, guint32 *exception_gchandle); +NSString * xamarin_convert_managed_to_nsstring (MonoObject *value, MonoType *managedType, MonoType *nativeType, MonoMethod *method, guint32 *exception_gchandle); +MonoObject * xamarin_convert_nsnumber_to_managed (NSNumber *value, MonoType *nativeType, MonoType *managedType, MonoMethod *method, guint32 *exception_gchandle); +MonoObject * xamarin_convert_nsvalue_to_managed (NSValue *value, MonoType *nativeType, MonoType *managedType, MonoMethod *method, guint32 *exception_gchandle); +MonoObject * xamarin_convert_nsstring_to_managed (NSString *value, MonoType *nativeType, MonoType *managedType, MonoMethod *method, guint32 *exception_gchandle); +guint32 xamarin_create_bindas_exception (MonoType *inputType, MonoType *outputType, MonoMethod *method); + +xamarin_id_to_managed_func xamarin_get_nsnumber_to_managed_func (MonoClass *managedType, MonoMethod *method, guint32 *exception_gchandle); +xamarin_managed_to_id_func xamarin_get_managed_to_nsnumber_func (MonoClass *managedType, MonoMethod *method, guint32 *exception_gchandle); + +xamarin_id_to_managed_func xamarin_get_nsvalue_to_managed_func (MonoClass *managedType, MonoMethod *method, guint32 *exception_gchandle); +xamarin_managed_to_id_func xamarin_get_managed_to_nsvalue_func (MonoClass *managedType, MonoMethod *method, guint32 *exception_gchandle); + +xamarin_id_to_managed_func xamarin_get_nsstring_to_smart_enum_func (MonoClass *managedType, MonoMethod *method, guint32 *exception_gchandle); +xamarin_managed_to_id_func xamarin_get_smart_enum_to_nsstring_func (MonoClass *managedType, MonoMethod *method, guint32 *exception_gchandle); + +NSArray * xamarin_convert_managed_to_nsarray_with_func (MonoArray *array, xamarin_managed_to_id_func convert, guint32 *exception_gchandle); +MonoArray * xamarin_convert_nsarray_to_managed_with_func (NSArray *array, MonoClass *managedElementType, xamarin_id_to_managed_func convert, guint32 *exception_gchandle); + +// Returns a pointer to the value type, which must be freed using xamarin_free. +void *xamarin_nsnumber_to_bool (NSNumber *number, void *ptr, MonoClass *managedType, guint32 *exception_gchandle); +void *xamarin_nsnumber_to_sbyte (NSNumber *number, void *ptr, MonoClass *managedType, guint32 *exception_gchandle); +void *xamarin_nsnumber_to_byte (NSNumber *number, void *ptr, MonoClass *managedType, guint32 *exception_gchandle); +void *xamarin_nsnumber_to_short (NSNumber *number, void *ptr, MonoClass *managedType, guint32 *exception_gchandle); +void *xamarin_nsnumber_to_ushort (NSNumber *number, void *ptr, MonoClass *managedType, guint32 *exception_gchandle); +void *xamarin_nsnumber_to_int (NSNumber *number, void *ptr, MonoClass *managedType, guint32 *exception_gchandle); +void *xamarin_nsnumber_to_uint (NSNumber *number, void *ptr, MonoClass *managedType, guint32 *exception_gchandle); +void *xamarin_nsnumber_to_long (NSNumber *number, void *ptr, MonoClass *managedType, guint32 *exception_gchandle); +void *xamarin_nsnumber_to_ulong (NSNumber *number, void *ptr, MonoClass *managedType, guint32 *exception_gchandle); +void *xamarin_nsnumber_to_nint (NSNumber *number, void *ptr, MonoClass *managedType, guint32 *exception_gchandle); +void *xamarin_nsnumber_to_nuint (NSNumber *number, void *ptr, MonoClass *managedType, guint32 *exception_gchandle); +void *xamarin_nsnumber_to_float (NSNumber *number, void *ptr, MonoClass *managedType, guint32 *exception_gchandle); +void *xamarin_nsnumber_to_double (NSNumber *number, void *ptr, MonoClass *managedType, guint32 *exception_gchandle); +void *xamarin_nsnumber_to_nfloat (NSNumber *number, void *ptr, MonoClass *managedType, guint32 *exception_gchandle); + +// Returns a pointer to the value type, which must be freed using xamarin_free +void *xamarin_nsvalue_to_nsrange (NSValue *value, void *ptr, MonoClass *managedType, guint32 *exception_ghandle); +void *xamarin_nsvalue_to_cgaffinetransform (NSValue *value, void *ptr, MonoClass *managedType, guint32 *exception_ghandle); +void *xamarin_nsvalue_to_cgpoint (NSValue *value, void *ptr, MonoClass *managedType, guint32 *exception_ghandle); +void *xamarin_nsvalue_to_cgrect (NSValue *value, void *ptr, MonoClass *managedType, guint32 *exception_ghandle); +void *xamarin_nsvalue_to_cgsize (NSValue *value, void *ptr, MonoClass *managedType, guint32 *exception_ghandle); +void *xamarin_nsvalue_to_cgvector (NSValue *value, void *ptr, MonoClass *managedType, guint32 *exception_ghandle); +void *xamarin_nsvalue_to_catransform3d (NSValue *value, void *ptr, MonoClass *managedType, guint32 *exception_ghandle); +void *xamarin_nsvalue_to_cllocationcoordinate2d (NSValue *value, void *ptr, MonoClass *managedType, guint32 *exception_ghandle); +void *xamarin_nsvalue_to_cmtime (NSValue *value, void *ptr, MonoClass *managedType, guint32 *exception_ghandle); +void *xamarin_nsvalue_to_cmtimemapping (NSValue *value, void *ptr, MonoClass *managedType, guint32 *exception_ghandle); +void *xamarin_nsvalue_to_cmtimerange (NSValue *value, void *ptr, MonoClass *managedType, guint32 *exception_ghandle); +void *xamarin_nsvalue_to_mkcoordinatespan (NSValue *value, void *ptr, MonoClass *managedType, guint32 *exception_ghandle); +void *xamarin_nsvalue_to_scnmatrix4 (NSValue *value, void *ptr, MonoClass *managedType, guint32 *exception_ghandle); +void *xamarin_nsvalue_to_scnvector3 (NSValue *value, void *ptr, MonoClass *managedType, guint32 *exception_ghandle); +void *xamarin_nsvalue_to_scnvector4 (NSValue *value, void *ptr, MonoClass *managedType, guint32 *exception_ghandle); +void *xamarin_nsvalue_to_uiedgeinsets (NSValue *value, void *ptr, MonoClass *managedType, guint32 *exception_ghandle); +void *xamarin_nsvalue_to_uioffset (NSValue *value, void *ptr, MonoClass *managedType, guint32 *exception_ghandle); + +id xamarin_bool_to_nsnumber (MonoObject *value, guint32 *exception_gchandle); +id xamarin_sbyte_to_nsnumber (MonoObject *value, guint32 *exception_gchandle); +id xamarin_byte_to_nsnumber (MonoObject *value, guint32 *exception_gchandle); +id xamarin_short_to_nsnumber (MonoObject *value, guint32 *exception_gchandle); +id xamarin_ushort_to_nsnumber (MonoObject *value, guint32 *exception_gchandle); +id xamarin_int_to_nsnumber (MonoObject *value, guint32 *exception_gchandle); +id xamarin_uint_to_nsnumber (MonoObject *value, guint32 *exception_gchandle); +id xamarin_long_to_nsnumber (MonoObject *value, guint32 *exception_gchandle); +id xamarin_ulong_to_nsnumber (MonoObject *value, guint32 *exception_gchandle); +id xamarin_nint_to_nsnumber (MonoObject *value, guint32 *exception_gchandle); +id xamarin_nuint_to_nsnumber (MonoObject *value, guint32 *exception_gchandle); +id xamarin_float_to_nsnumber (MonoObject *value, guint32 *exception_gchandle); +id xamarin_double_to_nsnumber (MonoObject *value, guint32 *exception_gchandle); +id xamarin_nfloat_to_nsnumber (MonoObject *value, guint32 *exception_gchandle); +id xamarin_nfloat_to_nsnumber (MonoObject *value, guint32 *exception_gchandle); + +id xamarin_nsrange_to_nsvalue (MonoObject *value, guint32 *exception_gchandle); +id xamarin_cgaffinetransform_to_nsvalue (MonoObject *value, guint32 *exception_gchandle); +id xamarin_cgpoint_to_nsvalue (MonoObject *value, guint32 *exception_gchandle); +id xamarin_cgrect_to_nsvalue (MonoObject *value, guint32 *exception_gchandle); +id xamarin_cgsize_to_nsvalue (MonoObject *value, guint32 *exception_gchandle); +id xamarin_cgvector_to_nsvalue (MonoObject *value, guint32 *exception_gchandle); +id xamarin_catransform3d_to_nsvalue (MonoObject *value, guint32 *exception_gchandle); +id xamarin_cllocationcoordinate2d_to_nsvalue (MonoObject *value, guint32 *exception_gchandle); +id xamarin_cmtime_to_nsvalue (MonoObject *value, guint32 *exception_gchandle); +id xamarin_cmtimemapping_to_nsvalue (MonoObject *value, guint32 *exception_gchandle); +id xamarin_cmtimerange_to_nsvalue (MonoObject *value, guint32 *exception_gchandle); +id xamarin_mkcoordinatespan_to_nsvalue (MonoObject *value, guint32 *exception_gchandle); +id xamarin_scnmatrix4_to_nsvalue (MonoObject *value, guint32 *exception_gchandle); +id xamarin_scnvector3_to_nsvalue (MonoObject *value, guint32 *exception_gchandle); +id xamarin_scnvector4_to_nsvalue (MonoObject *value, guint32 *exception_gchandle); +id xamarin_uiedgeinsets_to_nsvalue (MonoObject *value, guint32 *exception_gchandle); +id xamarin_uioffset_to_nsvalue (MonoObject *value, guint32 *exception_gchandle); + /* Copied from SGen */ static inline void diff --git a/src/ObjCRuntime/DynamicRegistrar.cs b/src/ObjCRuntime/DynamicRegistrar.cs index b10d69020e..21c923cce3 100644 --- a/src/ObjCRuntime/DynamicRegistrar.cs +++ b/src/ObjCRuntime/DynamicRegistrar.cs @@ -178,6 +178,27 @@ namespace XamCore.Registrar { throw exceptions.Count == 1 ? exceptions [0] : new AggregateException (exceptions); } + protected override IEnumerable FindMethods (Type type, string name) + { + foreach (var method in type.GetMethods (BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Static | BindingFlags.Instance | BindingFlags.DeclaredOnly)) + if (method.Name == name) + yield return method; + } + + protected override PropertyInfo FindProperty (Type type, string name) + { + return type.GetProperty (name, BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Static | BindingFlags.Instance | BindingFlags.DeclaredOnly); + } + + public override Type FindType (Type relative, string @namespace, string name) + { + foreach (var type in relative.Assembly.GetTypes ()) { + if (type.Namespace == @namespace && type.Name == name) + return type; + } + return null; + } + protected override int GetValueTypeSize (Type type) { return Marshal.SizeOf (type); @@ -209,6 +230,54 @@ namespace XamCore.Registrar { return assembly.GetTypes (); } + protected override BindAsAttribute GetBindAsAttribute (PropertyInfo property) + { + return property?.GetCustomAttribute (false); + } + + protected override BindAsAttribute GetBindAsAttribute (MethodBase method, int parameter_index) + { + ICustomAttributeProvider provider; + + if (method == null) + return null; + + var minfo = method as MethodInfo; + if (minfo != null) { + minfo = minfo.GetBaseDefinition (); + if (parameter_index == -1) { + provider = minfo.ReturnTypeCustomAttributes; + } else { + provider = minfo.GetParameters () [parameter_index]; + } + } else { + var cinfo = method as ConstructorInfo; + if (parameter_index == -1) { + throw new Exception (); + } else { + provider = cinfo.GetParameters () [parameter_index]; + } + } + + var attribs = provider.GetCustomAttributes (typeof (BindAsAttribute), false); + if (attribs.Length == 0) + return null; + + if (attribs.Length != 1) + throw new AmbiguousMatchException (/* FIXME */); + + return (BindAsAttribute) attribs [0]; + } + + protected override Type GetNullableType (Type type) + { + if (!type.IsGenericType) + return null; + if (type.GetGenericTypeDefinition () != typeof (Nullable<>)) + return null; + return type.GetGenericArguments () [0]; + } + protected override ConnectAttribute GetConnectAttribute (PropertyInfo property) { return SharedDynamic.GetOneAttribute (property); @@ -500,9 +569,14 @@ namespace XamCore.Registrar { return type.IsDefined (typeof (ModelAttribute), false); } - protected override bool IsArray (Type type) + protected override bool IsArray (Type type, out int rank) { - return type.IsArray; + if (!type.IsArray) { + rank = 0; + return false; + } + rank = type.GetArrayRank (); + return true; } protected override bool IsByRef (Type type) @@ -535,6 +609,14 @@ namespace XamCore.Registrar { return type.IsSubclassOf (typeof (System.Delegate)); } + protected override bool IsNullable (Type type) + { + if (!type.IsGenericType) + return false; + + return type.GetGenericTypeDefinition () == typeof (Nullable<>); + } + protected override bool IsEnum (Type type, out bool isNativeEnum) { isNativeEnum = false; @@ -809,25 +891,25 @@ namespace XamCore.Registrar { custom_type_map [type] = null; } - public UnmanagedMethodDescription GetMethodDescriptionAndObject (Type type, IntPtr selector, bool is_static, IntPtr obj, ref IntPtr mthis) + public void GetMethodDescriptionAndObject (Type type, IntPtr selector, bool is_static, IntPtr obj, ref IntPtr mthis, IntPtr desc) { var sel = new Selector (selector); var res = GetMethodNoThrow (type, type, sel.Name, is_static); if (res == null) throw ErrorHelper.CreateError (8006, "Failed to find the selector '{0}' on the type '{1}'", sel.Name, type.FullName); - var md = res.MethodDescription; - - if (md.IsInstanceCategory) { + if (res.IsInstanceCategory) { mthis = IntPtr.Zero; } else { var nsobj = Runtime.GetNSObject (obj, Runtime.MissingCtorResolution.ThrowConstructor1NotFound, true); mthis = ObjectWrapper.Convert (nsobj); - if (res.Method.ContainsGenericParameters) - return new MethodDescription (FindClosedMethod (nsobj.GetType (), res.Method), res.ArgumentSemantic).GetUnmanagedDescription (); + if (res.Method.ContainsGenericParameters) { + res.WriteUnmanagedDescription (desc, FindClosedMethod (nsobj.GetType (), res.Method)); + return; + } } - return md.GetUnmanagedDescription (); + res.WriteUnmanagedDescription (desc); } internal static MethodInfo FindClosedMethod (Type closed_type, MethodBase open_method) @@ -856,7 +938,7 @@ namespace XamCore.Registrar { throw ErrorHelper.CreateError (8003, "Failed to find the closed generic method '{0}' on the type '{1}'.", open_method.Name, closed_type.FullName); } - public UnmanagedMethodDescription GetMethodDescription (Type type, IntPtr selector, bool is_static) + public void GetMethodDescription (Type type, IntPtr selector, bool is_static, IntPtr desc) { var sel = new Selector (selector); var res = GetMethodNoThrow (type, type, sel.Name, is_static); @@ -865,7 +947,7 @@ namespace XamCore.Registrar { if (type.IsGenericType && res.Method is ConstructorInfo) throw ErrorHelper.CreateError (4133, "Cannot construct an instance of the type '{0}' from Objective-C because the type is generic.", type.FullName); - return res.MethodDescription.GetUnmanagedDescription (); + res.WriteUnmanagedDescription (desc); } ObjCMethod GetMethodNoThrow (Type original_type, Type type, string selector, bool is_static) diff --git a/src/ObjCRuntime/MethodDescription.cs b/src/ObjCRuntime/MethodDescription.cs index a4736e1e54..ba76c00b3f 100644 --- a/src/ObjCRuntime/MethodDescription.cs +++ b/src/ObjCRuntime/MethodDescription.cs @@ -1,72 +1,16 @@ using System; using System.Reflection; +#if !XAMCORE_2_0 namespace XamCore.ObjCRuntime { -#if XAMCORE_2_0 - internal -#else - public -#endif - struct MethodDescription { -#if XAMCORE_2_0 || MONOTOUCH - internal -#else - public -#endif - MethodBase method; - -#if XAMCORE_2_0 || MONOTOUCH - internal -#else - public -#endif - ArgumentSemantic semantic; - -#if !COREBUILD - - // The ArgumentSemantic enum is public, and - // I don't want to add another enum value there which - // is just an internal implementation detail, so just - // use a constant instead. Eventually we'll use an internal - // enum instead. - const int RetainReturnValueFlag = 1 << 10; - const int InstanceCategoryFlag = 1 << 11; - - internal bool IsInstanceCategory { - get { return (semantic & (ArgumentSemantic) InstanceCategoryFlag) == (ArgumentSemantic) InstanceCategoryFlag; } - } - - public MethodDescription (MethodBase method, ArgumentSemantic semantic) { - var minfo = method as MethodInfo; - var retainReturnValue = minfo != null && minfo.GetBaseDefinition ().ReturnTypeCustomAttributes.IsDefined (typeof (ReleaseAttribute), false); - var instanceCategory = minfo != null && XamCore.Registrar.DynamicRegistrar.HasThisAttributeImpl (minfo); - - // bitfields and a default value of -1 don't go very well together. - if (semantic == ArgumentSemantic.None) - semantic = ArgumentSemantic.Assign; - - if (retainReturnValue) - semantic = semantic | (ArgumentSemantic) (RetainReturnValueFlag); - if (instanceCategory) - semantic |= (ArgumentSemantic) (InstanceCategoryFlag); - - this.method = method; - this.semantic = semantic; - } - - internal UnmanagedMethodDescription GetUnmanagedDescription () { - return new UnmanagedMethodDescription (ObjectWrapper.Convert (method), semantic); - } -#endif // !COREBUILD - } - - internal struct UnmanagedMethodDescription { - public IntPtr method; + public struct MethodDescription { + public MethodBase method; public ArgumentSemantic semantic; - public UnmanagedMethodDescription (IntPtr method, ArgumentSemantic semantic) { + public MethodDescription (MethodBase method, ArgumentSemantic semantic) { this.method = method; this.semantic = semantic; } } } +#endif // !XAMCORE_2_0 diff --git a/src/ObjCRuntime/Registrar.cs b/src/ObjCRuntime/Registrar.cs index fff21ff744..227d616fc6 100644 --- a/src/ObjCRuntime/Registrar.cs +++ b/src/ObjCRuntime/Registrar.cs @@ -483,11 +483,10 @@ namespace XamCore.Registrar { Trampoline trampoline; bool? is_static; bool? is_ctor; -#if !MMP && !MTOUCH - MethodDescription? methodDescription; -#endif TType[] parameters; + TType[] native_parameters; TType return_type; + TType native_return_type; public ObjCMethod (Registrar registrar, ObjCType declaringType, TMethod method) : base (registrar, declaringType) @@ -530,14 +529,54 @@ namespace XamCore.Registrar { } #if !MMP && !MTOUCH - public MethodDescription MethodDescription { + // The ArgumentSemantic enum is public, and + // I don't want to add another enum value there which + // is just an internal implementation detail, so just + // use a constant instead. Eventually we'll use an internal + // enum instead. + const int RetainReturnValueFlag = 1 << 10; + const int InstanceCategoryFlag = 1 << 11; + + internal bool IsInstanceCategory { get { - if (!methodDescription.HasValue) { - // This should never be called from the static registrar - methodDescription = new MethodDescription ((System.Reflection.MethodBase) (object) Method, ArgumentSemantic); - } - - return methodDescription.Value; + return DynamicRegistrar.HasThisAttributeImpl (Method); + } + } + + internal void WriteUnmanagedDescription (IntPtr desc) + { + WriteUnmanagedDescription (desc, (System.Reflection.MethodBase) (object) Method); + } + + internal void WriteUnmanagedDescription (IntPtr desc, System.Reflection.MethodBase method_base) + { + var semantic = ArgumentSemantic; + var minfo = method_base as System.Reflection.MethodInfo; + var retainReturnValue = minfo != null && minfo.GetBaseDefinition ().ReturnTypeCustomAttributes.IsDefined (typeof (ReleaseAttribute), false); + var instanceCategory = minfo != null && DynamicRegistrar.HasThisAttributeImpl (minfo); + + // bitfields and a default value of -1 don't go very well together. + if (semantic == ArgumentSemantic.None) + semantic = ArgumentSemantic.Assign; + + if (retainReturnValue) + semantic |= (ArgumentSemantic) (RetainReturnValueFlag); + if (instanceCategory) + semantic |= (ArgumentSemantic) (InstanceCategoryFlag); + + var bindas_count = Marshal.ReadInt32 (desc + IntPtr.Size + 4); + if (bindas_count < 1 + Parameters.Length) + throw ErrorHelper.CreateError (8018, $"Internal consistency error: BindAs array is not big enough (expected at least {1 + parameters.Length} elements, got {bindas_count} elements) for {method_base.DeclaringType.FullName + "." + method_base.Name}. Please file a bug report at https://bugzilla.xamarin.com."); + + Marshal.WriteIntPtr (desc, ObjectWrapper.Convert (method_base)); + Marshal.WriteInt32 (desc + IntPtr.Size, (int) semantic); + + if (!IsConstructor && ReturnType != NativeReturnType) + Marshal.WriteIntPtr (desc + IntPtr.Size + 8, ObjectWrapper.Convert (NativeReturnType)); + for (int i = 0; i < NativeParameters.Length; i++) { + if (parameters [i] == native_parameters [i]) + continue; + Marshal.WriteIntPtr (desc + IntPtr.Size + 8 + IntPtr.Size * (i + 1), ObjectWrapper.Convert (native_parameters [i])); } } #endif @@ -556,9 +595,109 @@ namespace XamCore.Registrar { } set { parameters = value; + native_parameters = null; } } + public TType [] NativeParameters { + get { + if (native_parameters == null && Parameters != null) { + native_parameters = new TType [parameters.Length]; + for (int i = 0; i < parameters.Length; i++) { + var originalType = Registrar.GetBindAsAttribute (this, i)?.OriginalType; + if (originalType != null) { + if (!IsValidToManagedTypeConversion (originalType, parameters [i])) + throw Registrar.CreateException (4172, Method, $"The registrar can't convert from '{Registrar.GetTypeFullName (parameters [i])}' to '{originalType.FullName}' for the parameter '{Registrar.GetParameterName (Method, i)}' in the method {DescriptiveMethodName}."); + native_parameters [i] = originalType; + } else { + native_parameters [i] = parameters [i]; + } + } + } + return native_parameters; + } + } + + bool IsValidToManagedTypeConversion (TType inputType, TType outputType) + { + var nullableType = Registrar.GetNullableType (outputType); + var isNullable = nullableType != null; + var arrayRank = 0; + var isArray = Registrar.IsArray (outputType, out arrayRank); + + TType underlyingOutputType = outputType; + TType underlyingInputType = inputType; + if (isNullable) { + underlyingOutputType = nullableType; + } else if (isArray) { + if (arrayRank != 1) + return false; + if (!Registrar.IsArray (inputType)) + return false; + underlyingOutputType = Registrar.GetElementType (outputType); + underlyingInputType = Registrar.GetElementType (inputType); + } + var outputTypeName = Registrar.GetTypeFullName (underlyingOutputType); + + if (Registrar.Is (underlyingInputType, Foundation, "NSNumber")) { + switch (outputTypeName) { + case "System.Byte": + case "System.SByte": + case "System.Int16": + case "System.UInt16": + case "System.Int32": + case "System.UInt32": + case "System.Int64": + case "System.UInt64": + case "System.nint": + case "System.nuint": + case "System.Single": + case "System.Double": + case "System.nfloat": + case "System.Boolean": + return true; + default: + return false; + } + } else if (Registrar.Is (underlyingInputType, Foundation, "NSValue")) { + // Remove 'MonoMac.' namespace prefix to make switch smaller + if (!Registrar.IsDualBuild && outputTypeName.StartsWith ("MonoMac.", StringComparison.Ordinal)) + outputTypeName = outputTypeName.Substring ("MonoMac.".Length); + + switch (outputTypeName) { + case "CoreAnimation.CATransform3D": + case "CoreGraphics.CGAffineTransform": + case "CoreGraphics.CGPoint": + case "CoreGraphics.CGRect": + case "CoreGraphics.CGSize": + case "CoreGraphics.CGVector": + case "CoreLocation.CLLocationCoordinate2D": + case "CoreMedia.CMTime": + case "CoreMedia.CMTimeMapping": + case "CoreMedia.CMTimeRange": + case "MapKit.MKCoordinateSpan": + case "Foundation.NSRange": + case "SceneKit.SCNMatrix4": + case "SceneKit.SCNVector3": + case "SceneKit.SCNVector4": + case "UIKit.UIEdgeInsets": + case "UIKit.UIOffset": + return true; + default: + return false; + } + } else if (Registrar.Is (underlyingInputType, Foundation, "NSString")) { + return Registrar.IsSmartEnum (underlyingOutputType); + } else { + return false; + } + } + + bool IsValidToNativeTypeConversion (TType inputType, TType outputType) + { + return IsValidToManagedTypeConversion (inputType: outputType, outputType: inputType); + } + public bool HasReturnType { get { return return_type != null; @@ -573,6 +712,27 @@ namespace XamCore.Registrar { } set { return_type = value; + native_return_type = null; + } + } + + public TType NativeReturnType { + get { + if (native_return_type == null) { + if (Registrar.Is (ReturnType, "System", "Void")) { + native_return_type = ReturnType; + } else { + var originalType = Registrar.GetBindAsAttribute (this, -1)?.OriginalType; + if (originalType != null) { + if (!IsValidToManagedTypeConversion (originalType, ReturnType)) + throw Registrar.CreateException (4170, Method, $"The registrar can't convert from '{Registrar.GetTypeFullName (ReturnType)}' to '{originalType.FullName}' for the return value in the method {DescriptiveMethodName}."); + native_return_type = originalType; + } else { + native_return_type = ReturnType; + } + } + } + return native_return_type; } } @@ -621,25 +781,25 @@ namespace XamCore.Registrar { var mi = (System.Reflection.MethodInfo) Method; bool is_stret; #if __WATCHOS__ - is_stret = Runtime.Arch == Arch.DEVICE ? Stret.ArmNeedStret (mi.ReturnType) : Stret.X86NeedStret (mi.ReturnType); + is_stret = Runtime.Arch == Arch.DEVICE ? Stret.ArmNeedStret (NativeReturnType) : Stret.X86NeedStret (NativeReturnType); #elif MONOMAC - is_stret = IntPtr.Size == 8 ? Stret.X86_64NeedStret (mi.ReturnType) : Stret.X86NeedStret (mi.ReturnType); + is_stret = IntPtr.Size == 8 ? Stret.X86_64NeedStret (NativeReturnType) : Stret.X86NeedStret (NativeReturnType); #elif __IOS__ if (Runtime.Arch == Arch.DEVICE) { - is_stret = IntPtr.Size == 4 && Stret.ArmNeedStret (mi.ReturnType); + is_stret = IntPtr.Size == 4 && Stret.ArmNeedStret (NativeReturnType); } else { - is_stret = IntPtr.Size == 4 ? Stret.X86NeedStret (mi.ReturnType) : Stret.X86_64NeedStret (mi.ReturnType); + is_stret = IntPtr.Size == 4 ? Stret.X86NeedStret (NativeReturnType) : Stret.X86_64NeedStret (NativeReturnType); } #elif __TVOS__ - is_stret = Runtime.Arch == Arch.SIMULATOR && Stret.X86_64NeedStret (mi.ReturnType); + is_stret = Runtime.Arch == Arch.SIMULATOR && Stret.X86_64NeedStret (NativeReturnType); #else #error unknown architecture #endif var is_static_trampoline = IsStatic && !IsCategoryInstance; - var is_value_type = Registrar.IsValueType (ReturnType) && !Registrar.IsEnum (ReturnType); + var is_value_type = Registrar.IsValueType (NativeReturnType) && !Registrar.IsEnum (NativeReturnType); - if (is_value_type && Registrar.IsGenericType (ReturnType)) - throw Registrar.CreateException (4104, Method, "The registrar cannot marshal the return value of type `{0}` in the method `{1}.{2}`.", Registrar.GetTypeFullName (ReturnType), Registrar.GetTypeFullName (DeclaringType.Type), Registrar.GetDescriptiveMethodName (Method)); + if (is_value_type && Registrar.IsGenericType (NativeReturnType)) + throw Registrar.CreateException (4104, Method, "The registrar cannot marshal the return value of type `{0}` in the method `{1}.{2}`.", Registrar.GetTypeFullName (NativeReturnType), Registrar.GetTypeFullName (DeclaringType.Type), Registrar.GetDescriptiveMethodName (Method)); if (is_stret) { if (Registrar.IsSimulatorOrDesktop && !Registrar.Is64Bits) { @@ -703,7 +863,7 @@ namespace XamCore.Registrar { string ComputeSignature () { - return Registrar.ComputeSignature (DeclaringType.Type, Method, this, IsCategoryInstance); + return Registrar.ComputeSignature (DeclaringType.Type, null, this, IsCategoryInstance); } public override string ToString () @@ -854,11 +1014,15 @@ namespace XamCore.Registrar { protected abstract List GetAvailabilityAttributes (TType obj); // must only return attributes for the current platform. protected abstract Version GetSDKVersion (); protected abstract TType GetProtocolAttributeWrapperType (TType type); // Return null if no attribute is found. Do not consider base types. + protected abstract BindAsAttribute GetBindAsAttribute (TMethod method, int parameter_index); // If parameter_index = -1 then get the attribute for the return type. Return null if no attribute is found. Must consider base method. + protected abstract BindAsAttribute GetBindAsAttribute (TProperty property); + protected abstract TType GetNullableType (TType type); // For T? returns T. For T returns null. protected abstract bool HasReleaseAttribute (TMethod method); // Returns true of the method's return type/value has a [Release] attribute. protected abstract bool IsINativeObject (TType type); protected abstract bool IsValueType (TType type); - protected abstract bool IsArray (TType type); + protected abstract bool IsArray (TType type, out int rank); protected abstract bool IsEnum (TType type, out bool isNativeEnum); + protected abstract bool IsNullable (TType type); protected abstract bool IsDelegate (TType type); protected abstract bool IsGenericType (TType type); protected abstract bool IsGenericMethod (TMethod method); @@ -876,6 +1040,9 @@ namespace XamCore.Registrar { protected abstract Exception CreateException (int code, Exception innerException, TMethod method, string message, params object[] args); protected abstract Exception CreateException (int code, Exception innerException, TType type, string message, params object [] args); protected abstract string PlatformName { get; } + public abstract TType FindType (TType relative, string @namespace, string name); + protected abstract IEnumerable FindMethods (TType type, string name); // will return null if nothing was found + protected abstract TProperty FindProperty (TType type, string name); // will return null if nothing was found protected abstract string GetAssemblyName (TAssembly assembly); protected abstract string GetTypeFullName (TType type); @@ -895,12 +1062,81 @@ namespace XamCore.Registrar { IsDualBuild = IsDualBuildImpl; } - bool IsEnum (TType type) + protected bool IsArray (TType type) + { + int rank; + return IsArray (type, out rank); + } + + protected bool IsEnum (TType type) { bool dummy; return IsEnum (type, out dummy); } + public BindAsAttribute GetBindAsAttribute (ObjCMethod method, int parameter_index) + { + var attrib = GetBindAsAttribute (method.Method, parameter_index); + if (attrib != null) + return attrib; + + if (!method.IsPropertyAccessor) + return null; + + return GetBindAsAttribute (FindProperty (method.DeclaringType.Type, method.MethodName.Substring (4))); + } + + bool IsSmartEnum (TType type) + { + TMethod getConstant, getValue; + return IsSmartEnum (type, out getConstant, out getValue); + } + + public bool IsSmartEnum (TType type, out TMethod getConstantMethod, out TMethod getValueMethod) + { + getConstantMethod = null; + getValueMethod = null; + + if (!IsEnum (type)) + return false; + + var extension = FindType (type, type.Namespace, type.Name + "Extensions"); + if (extension == null) + return false; + + var getConstantMethods = FindMethods (extension, "GetConstant"); + foreach (var m in getConstantMethods) { + if (!Is (GetReturnType (m), Foundation, "NSString")) + continue; + var parameters = GetParameters (m); + if (parameters?.Length != 1) + continue; + if (!AreEqual (parameters [0], type)) + continue; + getConstantMethod = m; + break; + } + if (getConstantMethod == null) + return false; + + var getValueMethods = FindMethods (extension, "GetValue"); + foreach (var m in getValueMethods) { + if (!AreEqual (GetReturnType (m), type)) + continue; + var parameters = GetParameters (m); + if (parameters?.Length != 1) + continue; + if (!Is (parameters [0], Foundation, "NSString")) + continue; + getValueMethod = m; + break; + } + if (getValueMethod == null) + return false; + + return true; + } + protected string GetMemberName (ObjCMember member) { var method = member as ObjCMethod; @@ -1086,6 +1322,11 @@ namespace XamCore.Registrar { return false; } + protected virtual bool AreEqual (TType a, TType b) + { + return a == b; + } + protected bool Is (TType type, string @namespace, string name) { string ns, n; @@ -1148,8 +1389,8 @@ namespace XamCore.Registrar { void VerifyInSdk (ref List exceptions, ObjCMethod method) { - if (method.HasReturnType || (method.Method != null && !method.IsConstructor && method.ReturnType != null)) - VerifyTypeInSDK (ref exceptions, method.ReturnType, returnTypeOf: method); + if (method.HasReturnType || (method.Method != null && !method.IsConstructor && method.NativeReturnType != null)) + VerifyTypeInSDK (ref exceptions, method.NativeReturnType, returnTypeOf: method); if (method.HasParameters || (method.Method != null && method.Parameters != null)) { foreach (var p in method.Parameters) @@ -2060,7 +2301,7 @@ namespace XamCore.Registrar { if (is_ctor) { signature.Append ('@'); } else { - var ReturnType = Method != null ? GetReturnType (Method) : method.ReturnType; + var ReturnType = Method != null ? GetReturnType (Method) : method.NativeReturnType; signature.Append (ToSignature (ReturnType, member, ref success)); if (!success) throw CreateException (4104, Method, "The registrar cannot marshal the return value of type `{0}` in the method `{1}.{2}`.", GetTypeFullName (ReturnType), GetTypeFullName (DeclaringType), GetDescriptiveMethodName (Method)); @@ -2072,7 +2313,7 @@ namespace XamCore.Registrar { if (Method != null) { parameters = GetParameters (Method); } else { - parameters = method.Parameters; + parameters = method.NativeParameters; } if (parameters != null) { @@ -2163,7 +2404,9 @@ namespace XamCore.Registrar { { bool isNativeEnum; - switch (GetTypeFullName (type)) { + var typeFullName = GetTypeFullName (type); + + switch (typeFullName) { case "System.IntPtr": return "^v"; case "System.SByte": return "c"; case "System.Byte": return "C"; diff --git a/src/ObjCRuntime/Runtime.cs b/src/ObjCRuntime/Runtime.cs index 0cccffad8d..97876b838a 100644 --- a/src/ObjCRuntime/Runtime.cs +++ b/src/ObjCRuntime/Runtime.cs @@ -308,6 +308,34 @@ namespace XamCore.ObjCRuntime { return Marshal.GetFunctionPointerForDelegate (d); } + // value_handle: GCHandle to a (smart) enum value + // returns: a handle to a native NSString * + static IntPtr ConvertSmartEnumToNSString (IntPtr value_handle) + { + var value = GCHandle.FromIntPtr (value_handle).Target; + var smart_type = value.GetType (); + MethodBase getConstantMethod, getValueMethod; + if (!Registrar.IsSmartEnum (smart_type, out getConstantMethod, out getValueMethod)) + throw ErrorHelper.CreateError (8024, $"Could not find a valid extension type for the smart enum '{smart_type.FullName}'. Please file a bug at https://bugzilla.xamarin.com."); + var rv = (NSString) ((MethodInfo) getConstantMethod).Invoke (null, new object [] { value }); + rv.DangerousRetain ().DangerousAutorelease (); + return rv.Handle; + } + + + // value: native NSString * + // returns: GCHandle to a (smart) enum value. Caller must free the GCHandle. + static IntPtr ConvertNSStringToSmartEnum (IntPtr value, IntPtr type) + { + var smart_type = (Type) ObjectWrapper.Convert (type); + var str = GetNSObject (value); + MethodBase getConstantMethod, getValueMethod; + if (!Registrar.IsSmartEnum (smart_type, out getConstantMethod, out getValueMethod)) + throw ErrorHelper.CreateError (8024, $"Could not find a valid extension type for the smart enum '{smart_type.FullName}'. Please file a bug at https://bugzilla.xamarin.com."); + var rv = ((MethodInfo) getValueMethod).Invoke (null, new object [] { str }); + return GCHandle.ToIntPtr (GCHandle.Alloc (rv)); + } + #region Wrappers for delegate callbacks static void RegisterNSObject (IntPtr managed_obj, IntPtr native_obj) { @@ -556,10 +584,10 @@ namespace XamCore.ObjCRuntime { return ((Selector) ObjectWrapper.Convert (sel)).Handle; } - static UnmanagedMethodDescription GetMethodForSelector (IntPtr cls, IntPtr sel, bool is_static) + static void GetMethodForSelector (IntPtr cls, IntPtr sel, bool is_static, IntPtr desc) { // This is called by the old registrar code. - return Registrar.GetMethodDescription (Class.Lookup (cls), sel, is_static); + Registrar.GetMethodDescription (Class.Lookup (cls), sel, is_static, desc); } static IntPtr GetNSObjectWrapped (IntPtr ptr) @@ -675,9 +703,9 @@ namespace XamCore.ObjCRuntime { return parameters [parameter].IsOut; } - static UnmanagedMethodDescription GetMethodAndObjectForSelector (IntPtr klass, IntPtr sel, bool is_static, IntPtr obj, ref IntPtr mthis) + static void GetMethodAndObjectForSelector (IntPtr klass, IntPtr sel, bool is_static, IntPtr obj, ref IntPtr mthis, IntPtr desc) { - return Registrar.GetMethodDescriptionAndObject (Class.Lookup (klass), sel, is_static, obj, ref mthis); + Registrar.GetMethodDescriptionAndObject (Class.Lookup (klass), sel, is_static, obj, ref mthis, desc); } static int CreateProductException (int code, string msg) diff --git a/tools/common/StaticRegistrar.cs b/tools/common/StaticRegistrar.cs index c39fd7ffec..93d1e9e47a 100644 --- a/tools/common/StaticRegistrar.cs +++ b/tools/common/StaticRegistrar.cs @@ -563,6 +563,44 @@ namespace XamCore.Registrar { this.Target = target; } + protected override PropertyDefinition FindProperty (TypeReference type, string name) + { + var td = type.Resolve (); + if (td?.HasProperties != true) + return null; + + foreach (var prop in td.Properties) { + if (prop.Name == name) + return prop; + } + + return null; + } + + protected override IEnumerable FindMethods (TypeReference type, string name) + { + var td = type.Resolve (); + if (td?.HasMethods != true) + return null; + + List list = null; + foreach (var method in td.Methods) { + if (method.Name != name) + continue; + + if (list == null) + list = new List (); + + list.Add (method); + } + return list; + } + + public override TypeReference FindType (TypeReference relative, string @namespace, string name) + { + return relative.Resolve ().Module.GetType (@namespace, name); + } + protected override bool LaxMode { get { return IsSingleAssembly; @@ -910,6 +948,11 @@ namespace XamCore.Registrar { return IsDualBuild && SharedStatic.HasAttribute (td, ObjCRuntime, StringConstants.NativeAttribute); } + protected override bool IsNullable (TypeReference type) + { + return GetNullableType (type) != null; + } + protected override bool IsEnum (TypeReference tr, out bool isNativeEnum) { var type = tr.Resolve (); @@ -921,9 +964,16 @@ namespace XamCore.Registrar { return type.IsEnum; } - protected override bool IsArray (TypeReference type) + protected override bool IsArray (TypeReference type, out int rank) { - return type is ArrayType; + var arrayType = type as ArrayType; + if (arrayType == null) { + rank = 0; + return false; + } + + rank = arrayType.Rank; + return true; } protected override bool IsGenericType (TypeReference type) @@ -960,6 +1010,17 @@ namespace XamCore.Registrar { return type; } + protected override bool AreEqual (TypeReference a, TypeReference b) + { + if (a == b) + return true; + + if (a == null ^ b == null) + return false; + + return SharedStatic.TypeMatch (a, b); + } + protected override bool VerifyIsConstrainedToNSObject (TypeReference type, out TypeReference constrained_type) { constrained_type = null; @@ -1481,6 +1542,70 @@ namespace XamCore.Registrar { return null; } + protected override BindAsAttribute GetBindAsAttribute (PropertyDefinition property) + { + CustomAttribute attrib; + + if (property == null) + return null; + + property = GetBasePropertyInTypeHierarchy (property); + + if (!SharedStatic.TryGetAttributeImpl (property, ObjCRuntime, "BindAsAttribute", out attrib)) + return null; + + return CreateBindAsAttribute (attrib, property); + } + + protected override BindAsAttribute GetBindAsAttribute (MethodDefinition method, int parameter_index) + { + CustomAttribute attrib; + + if (method == null) + return null; + + method = GetBaseMethodInTypeHierarchy (method); + + if (!SharedStatic.TryGetAttributeImpl (parameter_index == -1 ? (ICustomAttributeProvider) method.MethodReturnType : method.Parameters [parameter_index], ObjCRuntime, "BindAsAttribute", out attrib)) + return null; + + return CreateBindAsAttribute (attrib, method); + } + + static BindAsAttribute CreateBindAsAttribute (CustomAttribute attrib, IMemberDefinition member) + { + TypeReference originalType = null; + if (attrib.HasFields) { + foreach (var field in attrib.Fields) { + switch (field.Name) { + case "OriginalType": + originalType = ((TypeReference) field.Argument.Value); + break; + default: + throw ErrorHelper.CreateError (4124, "Invalid BindAsAttribute found on '{0}.{1}': unknown field {2}. Please file a bug report at https://bugzilla.xamarin.com", member.DeclaringType.FullName, member.Name, field.Name); + } + } + } + + switch (attrib.ConstructorArguments.Count) { + case 1: + var t1 = (TypeReference) attrib.ConstructorArguments [0].Value; + return new BindAsAttribute (t1 != null ? t1.Resolve () : null) { OriginalType = originalType }; + default: + throw ErrorHelper.CreateError (4124, "Invalid BindAsAttribute found on '{0}.{1}'. Please file a bug report at https://bugzilla.xamarin.com", member.DeclaringType.FullName, member.Name); + } + } + + protected override TypeReference GetNullableType (TypeReference type) + { + var git = type as GenericInstanceType; + if (git == null) + return null; + if (!git.GetElementType ().Is ("System", "Nullable`1")) + return null; + return git.GenericArguments [0]; + } + protected override ConnectAttribute GetConnectAttribute (PropertyDefinition property) { CustomAttribute attrib; @@ -2151,7 +2276,7 @@ namespace XamCore.Registrar { sb.Append ((method.IsStatic && !method.IsCategoryInstance) ? '+' : '-'); sb.Append ('('); - sb.Append (isCtor ? "id" : this.ToObjCParameterType (method.ReturnType, GetDescriptiveMethodName (method.Method), exceptions, method.Method)); + sb.Append (isCtor ? "id" : this.ToObjCParameterType (method.NativeReturnType, GetDescriptiveMethodName (method.Method), exceptions, method.Method)); sb.Append (')'); var split = method.Selector.Split (':'); @@ -2166,7 +2291,7 @@ namespace XamCore.Registrar { sb.Append (split [i]); sb.Append (':'); sb.Append ('('); - sb.Append (ToObjCParameterType (method.Parameters [i + indexOffset], method.DescriptiveMethodName, exceptions, method.Method)); + sb.Append (ToObjCParameterType (method.NativeParameters [i + indexOffset], method.DescriptiveMethodName, exceptions, method.Method)); sb.Append (')'); sb.AppendFormat ("p{0}", i); } @@ -2729,7 +2854,7 @@ namespace XamCore.Registrar { } var rettype = string.Empty; - var returntype = method.Method.ReturnType; + var returntype = method.ReturnType; var isStatic = method.IsStatic; var isInstanceCategory = method.IsCategoryInstance; var isCtor = false; @@ -2753,7 +2878,7 @@ namespace XamCore.Registrar { case Trampoline.X86_DoubleABI_StretTrampoline: case Trampoline.StaticStret: case Trampoline.Stret: - switch (returntype.FullName) { + switch (method.NativeReturnType.FullName) { case "System.Int64": rettype = "long long"; break; @@ -2767,7 +2892,7 @@ namespace XamCore.Registrar { rettype = "double"; break; default: - rettype = ToObjCParameterType (returntype, descriptiveMethodName, exceptions, method.Method); + rettype = ToObjCParameterType (method.NativeReturnType, descriptiveMethodName, exceptions, method.Method); break; } break; @@ -2912,7 +3037,8 @@ namespace XamCore.Registrar { var param = method.Method.Parameters [i]; var paramBase = baseMethod.Parameters [i]; var type = method.Parameters [i]; - var objctype = ToObjCParameterType (type, descriptiveMethodName, exceptions, method.Method); + var nativetype = method.NativeParameters [i]; + var objctype = ToObjCParameterType (nativetype, descriptiveMethodName, exceptions, method.Method); var original_objctype = objctype; var isRef = type.IsByReference; var isOut = param.IsOut || paramBase.IsOut; @@ -2921,7 +3047,12 @@ namespace XamCore.Registrar { var td = type.Resolve (); var isVariadic = i + 1 == num_arg && method.IsVariadic; - if (isRef) { + if (type != nativetype) { + GenerateConversionToManaged (nativetype, type, setup_call_stack, descriptiveMethodName, ref exceptions, method, $"p{i}", $"arg_ptrs [{i}]", $"mono_class_from_mono_type (xamarin_get_parameter_type (managed_method, {i}))"); + if (isRef || isOut) + throw new Exception (); + continue; + } else if (isRef) { type = type.GetElementType (); td = type.Resolve (); original_objctype = ToObjCParameterType (type, descriptiveMethodName, exceptions, method.Method); @@ -3292,7 +3423,9 @@ namespace XamCore.Registrar { var type = returntype.Resolve () ?? returntype; var retain = method.RetainReturnValue; - if (returntype.IsValueType) { + if (returntype != method.NativeReturnType) { + GenerateConversionToNative (returntype, method.NativeReturnType, setup_return, descriptiveMethodName, ref exceptions, method, "retval", "res", "mono_class_from_mono_type (xamarin_get_parameter_type (managed_method, -1))"); + } else if (returntype.IsValueType) { setup_return.AppendLine ("res = *({0} *) mono_object_unbox ((MonoObject *) retval);", rettype); } else if (isArray) { var elementType = ((ArrayType) returntype).ElementType; @@ -3320,7 +3453,7 @@ namespace XamCore.Registrar { setup_return.AppendLine ("goto exception_handling;"); setup_return.AppendLine ("}"); } else { - throw ErrorHelper.CreateError (App, 4111, method.Method, "The registrar cannot build a signature for type `{0}' in method `{1}`.", returntype.FullName, descriptiveMethodName); + throw ErrorHelper.CreateError (App, 4111, method.Method, "The registrar cannot build a signature for type `{0}' in method `{1}`.", method.NativeReturnType.FullName, descriptiveMethodName); } setup_return.AppendLine ("}"); @@ -3491,8 +3624,8 @@ namespace XamCore.Registrar { var objc_signature = new StringBuilder ().Append (rettype).Append (":"); if (method.Method.HasParameters) { - for (int i = 0; i < method.Method.Parameters.Count; i++) - objc_signature.Append (ToObjCParameterType (method.Method.Parameters [i].ParameterType, descriptiveMethodName, exceptions, method.Method)).Append (":"); + for (int i = 0; i < method.NativeParameters.Length; i++) + objc_signature.Append (ToObjCParameterType (method.NativeParameters [i], descriptiveMethodName, exceptions, method.Method)).Append (":"); } Body existing; @@ -3513,9 +3646,9 @@ namespace XamCore.Registrar { if (merge_bodies) { methods.Append ("static "); methods.Append (rettype).Append (" ").Append (b.Name).Append (" (id self, SEL _cmd, MonoMethod **managed_method_ptr"); - var pcount = method.Method.HasParameters ? method.Method.Parameters.Count : 0; + var pcount = method.Method.HasParameters ? method.NativeParameters.Length : 0; for (int i = (isInstanceCategory ? 1 : 0); i < pcount; i++) { - methods.Append (", ").Append (ToObjCParameterType (method.Method.Parameters [i].ParameterType, descriptiveMethodName, exceptions, method.Method)); + methods.Append (", ").Append (ToObjCParameterType (method.NativeParameters [i], descriptiveMethodName, exceptions, method.Method)); methods.Append (" ").Append ("p").Append (i.ToString ()); } if (isCtor) @@ -3582,6 +3715,253 @@ namespace XamCore.Registrar { } } + string GetManagedToNSNumberFunc (TypeReference managedType, TypeReference inputType, TypeReference outputType, string descriptiveMethodName) + { + var typeName = managedType.FullName; + switch (typeName) { + case "System.SByte": return "xamarin_sbyte_to_nsnumber"; + case "System.Byte": return "xamarin_byte_to_nsnumber"; + case "System.Int16": return "xamarin_short_to_nsnumber"; + case "System.UInt16": return "xamarin_ushort_to_nsnumber"; + case "System.Int32": return "xamarin_int_to_nsnumber"; + case "System.UInt32": return "xamarin_uint_to_nsnumber"; + case "System.Int64": return "xamarin_long_to_nsnumber"; + case "System.UInt64": return "xamarin_ulong_to_nsnumber"; + case "System.nint": return "xamarin_nint_to_nsnumber"; + case "System.nuint": return "xamarin_nuint_to_nsnumber"; + case "System.Single": return "xamarin_float_to_nsnumber"; + case "System.Double": return "xamarin_double_to_nsnumber"; + case "System.nfloat": return "xamarin_nfloat_to_nsnumber"; + case "System.Boolean": return "xamarin_bool_to_nsnumber"; + default: + throw ErrorHelper.CreateError (99, $"Internal error: can't convert from '{inputType.FullName}' to '{outputType.FullName}' in {descriptiveMethodName}. Please file a bug report with a test case (https://bugzilla.xamarin.com)."); + } + } + + string GetNSNumberToManagedFunc (TypeReference managedType, TypeReference inputType, TypeReference outputType, string descriptiveMethodName, out string nativeType) + { + var typeName = managedType.FullName; + switch (typeName) { + case "System.SByte": nativeType = "int8_t"; return "xamarin_nsnumber_to_sbyte"; + case "System.Byte": nativeType = "uint8_t"; return "xamarin_nsnumber_to_byte"; + case "System.Int16": nativeType = "int16_t"; return "xamarin_nsnumber_to_short"; + case "System.UInt16": nativeType = "uint16_t"; return "xamarin_nsnumber_to_ushort"; + case "System.Int32": nativeType = "int32_t"; return "xamarin_nsnumber_to_int"; + case "System.UInt32": nativeType = "uint32_t"; return "xamarin_nsnumber_to_uint"; + case "System.Int64": nativeType = "int64_t"; return "xamarin_nsnumber_to_long"; + case "System.UInt64": nativeType = "uint64_t"; return "xamarin_nsnumber_to_ulong"; + case "System.nint": nativeType = "NSInteger"; return "xamarin_nsnumber_to_nint"; + case "System.nuint": nativeType = "NSUInteger"; return "xamarin_nsnumber_to_nuint"; + case "System.Single": nativeType = "float"; return "xamarin_nsnumber_to_float"; + case "System.Double": nativeType = "double"; return "xamarin_nsnumber_to_double"; + case "System.nfloat": nativeType = "CGFloat"; return "xamarin_nsnumber_to_nfloat"; + case "System.Boolean": nativeType = "BOOL"; return "xamarin_nsnumber_to_bool"; + default: + throw ErrorHelper.CreateError (99, $"Internal error: can't convert from '{inputType.FullName}' to '{outputType.FullName}' in {descriptiveMethodName}. Please file a bug report with a test case (https://bugzilla.xamarin.com)."); + } + } + + string GetNSValueToManagedFunc (TypeReference managedType, TypeReference inputType, TypeReference outputType, string descriptiveMethodName, out string nativeType) + { + var underlyingTypeName = managedType.FullName; + + // Remove 'MonoMac.' namespace prefix to make switch smaller + if (!Registrar.IsDualBuild && underlyingTypeName.StartsWith ("MonoMac.", StringComparison.Ordinal)) + underlyingTypeName = underlyingTypeName.Substring ("MonoMac.".Length); + + switch (underlyingTypeName) { + case "Foundation.NSRange": nativeType = "NSRange"; return "xamarin_nsvalue_to_nsrange"; + case "CoreGraphics.CGAffineTransform": nativeType = "CGAffineTransform"; return "xamarin_nsvalue_to_cgaffinetransform"; + case "CoreGraphics.CGPoint": nativeType = "CGPoint"; return "xamarin_nsvalue_to_cgpoint"; + case "CoreGraphics.CGRect": nativeType = "CGRect"; return "xamarin_nsvalue_to_cgrect"; + case "CoreGraphics.CGSize": nativeType = "CGSize"; return "xamarin_nsvalue_to_cgsize"; + case "CoreGraphics.CGVector": nativeType = "CGVector"; return "xamarin_nsvalue_to_cgvector"; + case "CoreAnimation.CATransform3D": nativeType = "CATransform3D"; return "xamarin_nsvalue_to_catransform3d"; + case "CoreLocation.CLLocationCoordinate2D": nativeType = "CLLocationCoordinate2D"; return "xamarin_nsvalue_to_cllocationcoordinate2d"; + case "CoreMedia.CMTime": nativeType = "CMTime"; return "xamarin_nsvalue_to_cmtime"; + case "CoreMedia.CMTimeMapping": nativeType = "CMTimeMapping"; return "xamarin_nsvalue_to_cmtimemapping"; + case "CoreMedia.CMTimeRange": nativeType = "CMTimeRange"; return "xamarin_nsvalue_to_cmtimerange"; + case "MapKit.MKCoordinateSpan": nativeType = "MKCoordinateSpan"; return "xamarin_nsvalue_to_mkcoordinatespan"; + case "SceneKit.SCNMatrix4": nativeType = "SCNMatrix4"; return "xamarin_nsvalue_to_scnmatrix4"; + case "SceneKit.SCNVector3": nativeType = "SCNVector3"; return "xamarin_nsvalue_to_scnvector3"; + case "SceneKit.SCNVector4": nativeType = "SCNVector4"; return "xamarin_nsvalue_to_scnvector4"; + case "UIKit.UIEdgeInsets": nativeType = "UIEdgeInsets"; return "xamarin_nsvalue_to_uiedgeinsets"; + case "UIKit.UIOffset": nativeType = "UIOffset"; return "xamarin_nsvalue_to_uioffset"; + default: + throw ErrorHelper.CreateError (99, $"Internal error: can't convert from '{inputType.FullName}' to '{outputType.FullName}' in {descriptiveMethodName}. Please file a bug report with a test case (https://bugzilla.xamarin.com)."); + } + } + + string GetManagedToNSValueFunc (TypeReference managedType, TypeReference inputType, TypeReference outputType, string descriptiveMethodName) + { + var underlyingTypeName = managedType.FullName; + + // Remove 'MonoMac.' namespace prefix to make switch smaller + if (!Registrar.IsDualBuild && underlyingTypeName.StartsWith ("MonoMac.", StringComparison.Ordinal)) + underlyingTypeName = underlyingTypeName.Substring ("MonoMac.".Length); + + switch (underlyingTypeName) { + case "Foundation.NSRange": return "xamarin_nsrange_to_nsvalue"; + case "CoreGraphics.CGAffineTransform": return "xamarin_cgaffinetransform_to_nsvalue"; + case "CoreGraphics.CGPoint": return "xamarin_cgpoint_to_nsvalue"; + case "CoreGraphics.CGRect": return "xamarin_cgrect_to_nsvalue"; + case "CoreGraphics.CGSize": return "xamarin_cgsize_to_nsvalue"; + case "CoreGraphics.CGVector": return "xamarin_cgvector_to_nsvalue"; + case "CoreAnimation.CATransform3D": return "xamarin_catransform3d_to_nsvalue"; + case "CoreLocation.CLLocationCoordinate2D": return "xamarin_cllocationcoordinate2d_to_nsvalue"; + case "CoreMedia.CMTime": return "xamarin_cmtime_to_nsvalue"; + case "CoreMedia.CMTimeMapping": return "xamarin_cmtimemapping_to_nsvalue"; + case "CoreMedia.CMTimeRange": return "xamarin_cmtimerange_to_nsvalue"; + case "MapKit.MKCoordinateSpan": return "xamarin_mkcoordinatespan_to_nsvalue"; + case "SceneKit.SCNMatrix4": return "xamarin_scnmatrix4_to_nsvalue"; + case "SceneKit.SCNVector3": return "xamarin_scnvector3_to_nsvalue"; + case "SceneKit.SCNVector4": return "xamarin_scnvector4_to_nsvalue"; + case "UIKit.UIEdgeInsets": return "xamarin_uiedgeinsets_to_nsvalue"; + case "UIKit.UIOffset": return "xamarin_uioffset_to_nsvalue"; + default: + throw ErrorHelper.CreateError (99, $"Internal error: can't convert from '{inputType.FullName}' to '{outputType.FullName}' in {descriptiveMethodName}. Please file a bug report with a test case (https://bugzilla.xamarin.com)."); + } + } + + string GetNSStringToSmartEnumFunc (TypeReference managedType, TypeReference inputType, TypeReference outputType, string descriptiveMethodName, string parameterClass, out string nativeType) + { + nativeType = "NSString *"; + return $"xamarin_get_nsstring_to_smart_enum_func ({parameterClass}, managed_method, &exception_gchandle)"; + } + + string GetSmartEnumToNSStringFunc (TypeReference managedType, TypeReference inputType, TypeReference outputType, string descriptiveMethodName, string parameterClass) + { + return $"xamarin_get_smart_enum_to_nsstring_func ({parameterClass}, managed_method, &exception_gchandle)"; + } + + void GenerateConversionToManaged (TypeReference inputType, TypeReference outputType, AutoIndentStringBuilder sb, string descriptiveMethodName, ref List exceptions, ObjCMethod method, string inputName, string outputName, string managedClassExpression) + { + // This is a mirror of the native method xamarin_generate_conversion_to_managed (for the dynamic registrar). + // These methods must be kept in sync. + var managedType = outputType; + var nativeType = inputType; + + var isManagedNullable = IsNullable (managedType); + + var underlyingManagedType = managedType; + var underlyingNativeType = nativeType; + + var isManagedArray = IsArray (managedType); + var isNativeArray = IsArray (nativeType); + + if (isManagedArray != isNativeArray) + throw ErrorHelper.CreateError (99, $"Internal error: can't convert from '{inputType.FullName}' to '{outputType.FullName}' in {descriptiveMethodName}. Please file a bug report with a test case (https://bugzilla.xamarin.com)."); + + if (isManagedArray) { + if (isManagedNullable) + throw ErrorHelper.CreateError (99, $"Internal error: can't convert from '{inputType.FullName}' to '{outputType.FullName}' in {descriptiveMethodName}. Please file a bug report with a test case (https://bugzilla.xamarin.com)."); + underlyingNativeType = GetElementType (nativeType); + underlyingManagedType = GetElementType (managedType); + managedClassExpression = $"mono_class_get_element_class ({managedClassExpression})"; + } else if (isManagedNullable) { + underlyingManagedType = GetNullableType (managedType); + managedClassExpression = $"mono_class_get_nullable_param ({managedClassExpression})"; + } + + if (isManagedNullable || isManagedArray) + sb.AppendLine ($"if ({inputName}) {{"); + + string func; + string nativeTypeName; + if (underlyingNativeType.Is (Foundation, "NSNumber")) { + func = GetNSNumberToManagedFunc (underlyingManagedType, inputType, outputType, descriptiveMethodName, out nativeTypeName); + } else if (underlyingNativeType.Is (Foundation, "NSValue")) { + func = GetNSValueToManagedFunc (underlyingManagedType, inputType, outputType, descriptiveMethodName, out nativeTypeName); + } else if (underlyingNativeType.Is (Foundation, "NSString")) { + func = GetNSStringToSmartEnumFunc (underlyingManagedType, inputType, outputType, descriptiveMethodName, managedClassExpression, out nativeTypeName); + } else { + throw ErrorHelper.CreateError (99, $"Internal error: can't convert from '{inputType.FullName}' to '{outputType.FullName}' in {descriptiveMethodName}. Please file a bug report with a test case (https://bugzilla.xamarin.com)."); + } + var classVariableName = $"{inputName}_conv_class"; + body_setup.AppendLine ($"MonoClass *{classVariableName} = NULL;"); + sb.AppendLine ($"{classVariableName} = {managedClassExpression};"); + if (isManagedArray) { + sb.AppendLine ($"{outputName} = xamarin_convert_nsarray_to_managed_with_func ({inputName}, {classVariableName}, (xamarin_id_to_managed_func) {func}, &exception_gchandle);"); + sb.AppendLine ("if (exception_gchandle != 0) goto exception_handling;"); + } else { + var tmpName = $"{inputName}_conv_tmp"; + body_setup.AppendLine ($"{nativeTypeName} {tmpName};"); + if (isManagedNullable) { + var tmpName2 = $"{inputName}_conv_ptr"; + body_setup.AppendLine ($"void *{tmpName2} = NULL;"); + sb.AppendLine ($"{tmpName2} = {func} ({inputName}, &{tmpName}, {classVariableName}, &exception_gchandle);"); + sb.AppendLine ("if (exception_gchandle != 0) goto exception_handling;"); + sb.AppendLine ($"{outputName} = mono_value_box (mono_domain_get (), {classVariableName}, {tmpName2});"); + } else { + sb.AppendLine ($"{outputName} = {func} ({inputName}, &{tmpName}, {classVariableName}, &exception_gchandle);"); + sb.AppendLine ("if (exception_gchandle != 0) goto exception_handling;"); + } + } + + if (isManagedNullable || isManagedArray) { + sb.AppendLine ($"}} else {{"); + sb.AppendLine ($"{outputName} = NULL;"); + sb.AppendLine ($"}}"); + } + } + + void GenerateConversionToNative (TypeReference inputType, TypeReference outputType, AutoIndentStringBuilder sb, string descriptiveMethodName, ref List exceptions, ObjCMethod method, string inputName, string outputName, string managedClassExpression) + { + // This is a mirror of the native method xamarin_generate_conversion_to_native (for the dynamic registrar). + // These methods must be kept in sync. + var managedType = inputType; + var nativeType = outputType; + + var isManagedNullable = IsNullable (managedType); + + var underlyingManagedType = managedType; + var underlyingNativeType = nativeType; + + var isManagedArray = IsArray (managedType); + var isNativeArray = IsArray (nativeType); + + if (isManagedArray != isNativeArray) + throw ErrorHelper.CreateError (99, $"Internal error: can't convert from '{inputType.FullName}' to '{outputType.FullName}' in {descriptiveMethodName}. Please file a bug report with a test case (https://bugzilla.xamarin.com)."); + + if (isManagedArray) { + if (isManagedNullable) + throw ErrorHelper.CreateError (99, $"Internal error: can't convert from '{inputType.FullName}' to '{outputType.FullName}' in {descriptiveMethodName}. Please file a bug report with a test case (https://bugzilla.xamarin.com)."); + underlyingNativeType = GetElementType (nativeType); + underlyingManagedType = GetElementType (managedType); + managedClassExpression = $"mono_class_get_element_class ({managedClassExpression})"; + } else if (isManagedNullable) { + underlyingManagedType = GetNullableType (managedType); + managedClassExpression = $"mono_class_get_nullable_param ({managedClassExpression})"; + } + + if (isManagedNullable || isManagedArray) + sb.AppendLine ($"if ({inputName}) {{"); + + string func; + if (underlyingNativeType.Is (Foundation, "NSNumber")) { + func = GetManagedToNSNumberFunc (underlyingManagedType, inputType, outputType, descriptiveMethodName); + } else if (underlyingNativeType.Is (Foundation, "NSValue")) { + func = GetManagedToNSValueFunc (underlyingManagedType, inputType, outputType, descriptiveMethodName); + } else if (underlyingNativeType.Is (Foundation, "NSString")) { + func = GetSmartEnumToNSStringFunc (underlyingManagedType, inputType, outputType, descriptiveMethodName, managedClassExpression); + } else { + throw ErrorHelper.CreateError (99, $"Internal error: can't convert from '{inputType.FullName}' to '{outputType.FullName}' in {descriptiveMethodName}. Please file a bug report with a test case (https://bugzilla.xamarin.com)."); + } + + if (isManagedArray) { + sb.AppendLine ($"{outputName} = xamarin_convert_managed_to_nsarray_with_func ((MonoArray *) {inputName}, (xamarin_managed_to_id_func) {func}, &exception_gchandle);"); + } else { + sb.AppendLine ($"{outputName} = {func} ({inputName}, &exception_gchandle);"); + } + sb.AppendLine ($"if (exception_gchandle != 0) goto exception_handling;"); + + if (isManagedNullable || isManagedArray) { + sb.AppendLine ($"}} else {{"); + sb.AppendLine ($"{outputName} = NULL;"); + sb.AppendLine ($"}}"); + } + } + class Body { public string Code; public string Signature; @@ -3888,6 +4268,17 @@ namespace XamCore.Registrar { public Version FormalSinceVersion { get; set; } } + class BindAsAttribute : Attribute + { + public BindAsAttribute (TypeDefinition type) + { + this.Type = type; + } + + public TypeDefinition Type { get; set; } + public TypeReference OriginalType { get; set; } + } + public sealed class ProtocolMemberAttribute : Attribute { public ProtocolMemberAttribute () {} From 1165a1aac6b619d12e1555aebfbcb8d6ade8e8fc Mon Sep 17 00:00:00 2001 From: Rolf Bjarne Kvinge Date: Tue, 4 Jul 2017 18:33:31 +0200 Subject: [PATCH 027/145] [registrar] Don't require private mono symbols for BindAs support. The two functions mono_class_is_nullable and mono_class_get_nullable_param are private mono symbols, which means we can't call them when using Xamarin.Mac with libmono from a dynamic library. Implement a fallback for this case, where we call a managed method when these functions are not available (and restrict this workaround to Xamarin.Mac only, since it's not needed for Xamarin.iOS). --- runtime/exports.t4 | 4 +-- runtime/mono-runtime.h.t4 | 7 +++++ runtime/mono-runtime.m.t4 | 10 ++++++ runtime/runtime.m | 48 ++++++++++++++++++++++++++++- runtime/trampolines.m | 18 +++++++---- runtime/xamarin/runtime.h | 2 ++ src/ObjCRuntime/DynamicRegistrar.cs | 2 +- src/ObjCRuntime/Registrar.cs | 2 +- src/ObjCRuntime/Runtime.mac.cs | 6 ++++ tools/common/StaticRegistrar.cs | 25 +++++++++------ 10 files changed, 104 insertions(+), 20 deletions(-) diff --git a/runtime/exports.t4 b/runtime/exports.t4 index b6b0abb4a9..7d29a3f1d6 100644 --- a/runtime/exports.t4 +++ b/runtime/exports.t4 @@ -79,11 +79,11 @@ #endregion #region metadata/class-internals.h - new Export ("gboolean", "mono_class_is_nullable", + new Export (true, "gboolean", "mono_class_is_nullable", "MonoClass *", "klass" ), - new Export ("MonoClass *", "mono_class_get_nullable_param", + new Export (true, "MonoClass *", "mono_class_get_nullable_param", "MonoClass *", "klass" ), #endregion diff --git a/runtime/mono-runtime.h.t4 b/runtime/mono-runtime.h.t4 index 1149fc5ef9..a5921a7c05 100644 --- a/runtime/mono-runtime.h.t4 +++ b/runtime/mono-runtime.h.t4 @@ -238,6 +238,13 @@ MONO_API <#= export.ReturnType #> <#= export.EntryPoint #> (<#= export.ArgumentSignature #>); <# } #> +<# foreach (var export in exports) { + if (!export.Optional) + continue; #> +bool +<#= export.EntryPoint #>_exists (); + +<# } #> #ifdef __cplusplus } /* extern "C" */ #endif diff --git a/runtime/mono-runtime.m.t4 b/runtime/mono-runtime.m.t4 index 118fa52449..87ce21417a 100644 --- a/runtime/mono-runtime.m.t4 +++ b/runtime/mono-runtime.m.t4 @@ -130,6 +130,16 @@ MONO_API <#= export.ReturnType #> <# } #> return <#= export.EntryPoint #>_func (<#= export.ArgumentNames #>); } +<# } #> + +<# foreach (var export in exports) { + if (!export.Optional) + continue; #> +bool +<#= export.EntryPoint #>_exists () +{ + return <#= export.EntryPoint #>_func != NULL; +} <# } #> #else diff --git a/runtime/runtime.m b/runtime/runtime.m index e9c20f1248..cb39d62e54 100644 --- a/runtime/runtime.m +++ b/runtime/runtime.m @@ -96,6 +96,7 @@ static MonoClass *nsobject_class; static MonoClass *nsvalue_class; static MonoClass *nsnumber_class; static MonoClass *nsstring_class; +static MonoClass *runtime_class; static pthread_mutex_t framework_peer_release_lock; static MonoGHashTable *xamarin_wrapper_hash; @@ -419,6 +420,52 @@ xamarin_is_class_nsstring (MonoClass *cls) return mono_class_is_subclass_of (cls, nsstring_class, false); } +// Returns if a MonoClass is nullable. +// Will also return the element type (it the type is nullable, and if out pointer is not NULL). +bool +xamarin_is_class_nullable (MonoClass *cls, MonoClass **element_type, guint32 *exception_gchandle) +{ +#ifdef DYNAMIC_MONO_RUNTIME + // mono_class_is_nullable/mono_class_get_nullable_param are private + // functions, and as such we can't call find them in libmono.dylib. In + // this case we manually call a managed function to do the work for us (we + // don't use the normal delegate mechanism, because how it's currently + // implemented it would inflict size costs on all platforms, not just + // Xamarin.Mac). + if (!mono_class_is_nullable_exists () || !mono_class_get_nullable_param_exists ()) { + static MonoMethod *get_nullable_type = NULL; + + if (get_nullable_type == NULL) + get_nullable_type = mono_class_get_method_from_name (runtime_class, "GetNullableType", 1); + + void *args [1] { mono_type_get_object (mono_domain_get (), mono_class_get_type (cls)) }; + MonoObject *exc = NULL; + MonoReflectionType *nullable_type = (MonoReflectionType *) mono_runtime_invoke (get_nullable_type, NULL, args, &exc); + if (exc != NULL) { + *exception_gchandle = mono_gchandle_new (exc, FALSE); + return false; + } + + if (element_type != NULL && nullable_type != NULL) + *element_type = mono_class_from_mono_type (mono_reflection_type_get_type (nullable_type)); + return nullable_type != NULL; + } +#endif + + bool rv = mono_class_is_nullable (cls); + if (rv && element_type) + *element_type = mono_class_get_nullable_param (cls); + return rv; +} + +MonoClass * +xamarin_get_nullable_type (MonoClass *cls, guint32 *exception_gchandle) +{ + MonoClass *rv = NULL; + xamarin_is_class_nullable (cls, &rv, exception_gchandle); + return rv; +} + #define MANAGED_REF_BIT (1 << 31) #define GCHANDLE_WEAK (1 << 30) #define GCHANDLE_MASK (MANAGED_REF_BIT | GCHANDLE_WEAK) @@ -1199,7 +1246,6 @@ xamarin_initialize () // COOP: accessing managed memory: UNSAFE mode MONO_ASSERT_GC_UNSAFE; - MonoClass *runtime_class; MonoAssembly *assembly = NULL; MonoMethod *runtime_initialize; void* params[2]; diff --git a/runtime/trampolines.m b/runtime/trampolines.m index 8ca1013136..e5111923c1 100644 --- a/runtime/trampolines.m +++ b/runtime/trampolines.m @@ -627,14 +627,17 @@ xamarin_generate_conversion_to_native (MonoObject *value, MonoType *inputType, M MonoClass *managedType = mono_class_from_mono_type (inputType); MonoClass *nativeType = mono_class_from_mono_type (outputType); - bool isManagedNullable = mono_class_is_nullable (managedType); - MonoClass *underlyingManagedType = managedType; MonoClass *underlyingNativeType = nativeType; bool isManagedArray = xamarin_is_class_array (managedType); bool isNativeArray = xamarin_is_class_array (nativeType); + MonoClass *nullableManagedType = NULL; + bool isManagedNullable = xamarin_is_class_nullable (managedType, &nullableManagedType, exception_gchandle); + if (*exception_gchandle != 0) + goto exception_handling; + if (isManagedArray != isNativeArray) { *exception_gchandle = xamarin_create_bindas_exception (inputType, outputType, method); goto exception_handling; @@ -648,7 +651,7 @@ xamarin_generate_conversion_to_native (MonoObject *value, MonoType *inputType, M underlyingNativeType = mono_class_get_element_class (nativeType); underlyingManagedType = mono_class_get_element_class (managedType); } else if (isManagedNullable) { - underlyingManagedType = mono_class_get_nullable_param (managedType); + underlyingManagedType = nullableManagedType; } if (value) { @@ -696,14 +699,17 @@ xamarin_generate_conversion_to_managed (id value, MonoType *inputType, MonoType MonoClass *managedType = mono_class_from_mono_type (outputType); MonoClass *nativeType = mono_class_from_mono_type (inputType); - bool isManagedNullable = mono_class_is_nullable (managedType); - MonoClass *underlyingManagedType = managedType; MonoClass *underlyingNativeType = nativeType; bool isManagedArray = xamarin_is_class_array (managedType); bool isNativeArray = xamarin_is_class_array (nativeType); + MonoClass *nullableManagedType = NULL; + bool isManagedNullable = xamarin_is_class_nullable (managedType, &nullableManagedType, exception_gchandle); + if (*exception_gchandle != 0) + goto exception_handling; + if (isManagedArray != isNativeArray) { *exception_gchandle = xamarin_create_bindas_exception (inputType, outputType, method); goto exception_handling; @@ -717,7 +723,7 @@ xamarin_generate_conversion_to_managed (id value, MonoType *inputType, MonoType underlyingNativeType = mono_class_get_element_class (nativeType); underlyingManagedType = mono_class_get_element_class (managedType); } else if (isManagedNullable) { - underlyingManagedType = mono_class_get_nullable_param (managedType); + underlyingManagedType = nullableManagedType; } if (value) { diff --git a/runtime/xamarin/runtime.h b/runtime/xamarin/runtime.h index e4b6b47ed5..0b78f9ca64 100644 --- a/runtime/xamarin/runtime.h +++ b/runtime/xamarin/runtime.h @@ -135,6 +135,8 @@ bool xamarin_is_class_array (MonoClass *cls); bool xamarin_is_class_nsnumber (MonoClass *cls); bool xamarin_is_class_nsvalue (MonoClass *cls); bool xamarin_is_class_nsstring (MonoClass *cls); +bool xamarin_is_class_nullable (MonoClass *cls, MonoClass **element_type, guint32 *exception_gchandle); +MonoClass * xamarin_get_nullable_type (MonoClass *cls, guint32 *exception_gchandle); MonoType * xamarin_get_parameter_type (MonoMethod *managed_method, int index); MonoObject * xamarin_get_nsobject_with_type_for_ptr (id self, bool owns, MonoType* type, guint32 *exception_gchandle); MonoObject * xamarin_get_nsobject_with_type_for_ptr_created (id self, bool owns, MonoType *type, int32_t *created, guint32 *exception_gchandle); diff --git a/src/ObjCRuntime/DynamicRegistrar.cs b/src/ObjCRuntime/DynamicRegistrar.cs index 21c923cce3..ee63bef9c1 100644 --- a/src/ObjCRuntime/DynamicRegistrar.cs +++ b/src/ObjCRuntime/DynamicRegistrar.cs @@ -269,7 +269,7 @@ namespace XamCore.Registrar { return (BindAsAttribute) attribs [0]; } - protected override Type GetNullableType (Type type) + public override Type GetNullableType (Type type) { if (!type.IsGenericType) return null; diff --git a/src/ObjCRuntime/Registrar.cs b/src/ObjCRuntime/Registrar.cs index 227d616fc6..f48eddfc4e 100644 --- a/src/ObjCRuntime/Registrar.cs +++ b/src/ObjCRuntime/Registrar.cs @@ -1016,7 +1016,7 @@ namespace XamCore.Registrar { protected abstract TType GetProtocolAttributeWrapperType (TType type); // Return null if no attribute is found. Do not consider base types. protected abstract BindAsAttribute GetBindAsAttribute (TMethod method, int parameter_index); // If parameter_index = -1 then get the attribute for the return type. Return null if no attribute is found. Must consider base method. protected abstract BindAsAttribute GetBindAsAttribute (TProperty property); - protected abstract TType GetNullableType (TType type); // For T? returns T. For T returns null. + public abstract TType GetNullableType (TType type); // For T? returns T. For T returns null. protected abstract bool HasReleaseAttribute (TMethod method); // Returns true of the method's return type/value has a [Release] attribute. protected abstract bool IsINativeObject (TType type); protected abstract bool IsValueType (TType type); diff --git a/src/ObjCRuntime/Runtime.mac.cs b/src/ObjCRuntime/Runtime.mac.cs index 3709cf740b..9d7fe260b5 100644 --- a/src/ObjCRuntime/Runtime.mac.cs +++ b/src/ObjCRuntime/Runtime.mac.cs @@ -140,6 +140,12 @@ namespace XamCore.ObjCRuntime { ResourcesPath = Path.Combine (basePath, "Resources"); FrameworksPath = Path.Combine (basePath, "Frameworks"); } + + [Preserve] + static IntPtr GetNullableType (IntPtr type) + { + return ObjectWrapper.Convert (Registrar.GetNullableType ((Type) ObjectWrapper.Convert (type))); + } #endif // !COREBUILD } } diff --git a/tools/common/StaticRegistrar.cs b/tools/common/StaticRegistrar.cs index 93d1e9e47a..77321eec0c 100644 --- a/tools/common/StaticRegistrar.cs +++ b/tools/common/StaticRegistrar.cs @@ -1596,7 +1596,7 @@ namespace XamCore.Registrar { } } - protected override TypeReference GetNullableType (TypeReference type) + public override TypeReference GetNullableType (TypeReference type) { var git = type as GenericInstanceType; if (git == null) @@ -3852,15 +3852,20 @@ namespace XamCore.Registrar { if (isManagedArray != isNativeArray) throw ErrorHelper.CreateError (99, $"Internal error: can't convert from '{inputType.FullName}' to '{outputType.FullName}' in {descriptiveMethodName}. Please file a bug report with a test case (https://bugzilla.xamarin.com)."); + var classVariableName = $"{inputName}_conv_class"; + body_setup.AppendLine ($"MonoClass *{classVariableName} = NULL;"); if (isManagedArray) { if (isManagedNullable) throw ErrorHelper.CreateError (99, $"Internal error: can't convert from '{inputType.FullName}' to '{outputType.FullName}' in {descriptiveMethodName}. Please file a bug report with a test case (https://bugzilla.xamarin.com)."); underlyingNativeType = GetElementType (nativeType); underlyingManagedType = GetElementType (managedType); - managedClassExpression = $"mono_class_get_element_class ({managedClassExpression})"; + sb.AppendLine ($"{classVariableName} = mono_class_get_element_class ({managedClassExpression});"); } else if (isManagedNullable) { underlyingManagedType = GetNullableType (managedType); - managedClassExpression = $"mono_class_get_nullable_param ({managedClassExpression})"; + sb.AppendLine ($"{classVariableName} = xamarin_get_nullable_type ({managedClassExpression}, &exception_gchandle);"); + sb.AppendLine ($"if (exception_gchandle != 0) goto exception_handling;"); + } else { + sb.AppendLine ($"{classVariableName} = {managedClassExpression};"); } if (isManagedNullable || isManagedArray) @@ -3877,9 +3882,6 @@ namespace XamCore.Registrar { } else { throw ErrorHelper.CreateError (99, $"Internal error: can't convert from '{inputType.FullName}' to '{outputType.FullName}' in {descriptiveMethodName}. Please file a bug report with a test case (https://bugzilla.xamarin.com)."); } - var classVariableName = $"{inputName}_conv_class"; - body_setup.AppendLine ($"MonoClass *{classVariableName} = NULL;"); - sb.AppendLine ($"{classVariableName} = {managedClassExpression};"); if (isManagedArray) { sb.AppendLine ($"{outputName} = xamarin_convert_nsarray_to_managed_with_func ({inputName}, {classVariableName}, (xamarin_id_to_managed_func) {func}, &exception_gchandle);"); sb.AppendLine ("if (exception_gchandle != 0) goto exception_handling;"); @@ -3923,15 +3925,20 @@ namespace XamCore.Registrar { if (isManagedArray != isNativeArray) throw ErrorHelper.CreateError (99, $"Internal error: can't convert from '{inputType.FullName}' to '{outputType.FullName}' in {descriptiveMethodName}. Please file a bug report with a test case (https://bugzilla.xamarin.com)."); + var classVariableName = $"{inputName}_conv_class"; + body_setup.AppendLine ($"MonoClass *{classVariableName} = NULL;"); if (isManagedArray) { if (isManagedNullable) throw ErrorHelper.CreateError (99, $"Internal error: can't convert from '{inputType.FullName}' to '{outputType.FullName}' in {descriptiveMethodName}. Please file a bug report with a test case (https://bugzilla.xamarin.com)."); underlyingNativeType = GetElementType (nativeType); underlyingManagedType = GetElementType (managedType); - managedClassExpression = $"mono_class_get_element_class ({managedClassExpression})"; + sb.AppendLine ($"{classVariableName} = mono_class_get_element_class ({managedClassExpression});"); } else if (isManagedNullable) { underlyingManagedType = GetNullableType (managedType); - managedClassExpression = $"mono_class_get_nullable_param ({managedClassExpression})"; + sb.AppendLine ($"{classVariableName} = xamarin_get_nullable_type ({managedClassExpression}, &exception_gchandle);"); + sb.AppendLine ($"if (exception_gchandle != 0) goto exception_handling;"); + } else { + sb.AppendLine ($"{classVariableName} = {managedClassExpression};"); } if (isManagedNullable || isManagedArray) @@ -3943,7 +3950,7 @@ namespace XamCore.Registrar { } else if (underlyingNativeType.Is (Foundation, "NSValue")) { func = GetManagedToNSValueFunc (underlyingManagedType, inputType, outputType, descriptiveMethodName); } else if (underlyingNativeType.Is (Foundation, "NSString")) { - func = GetSmartEnumToNSStringFunc (underlyingManagedType, inputType, outputType, descriptiveMethodName, managedClassExpression); + func = GetSmartEnumToNSStringFunc (underlyingManagedType, inputType, outputType, descriptiveMethodName, classVariableName); } else { throw ErrorHelper.CreateError (99, $"Internal error: can't convert from '{inputType.FullName}' to '{outputType.FullName}' in {descriptiveMethodName}. Please file a bug report with a test case (https://bugzilla.xamarin.com)."); } From 30a3b27358ee8d6d611cf3649c9b99c47f5ae046 Mon Sep 17 00:00:00 2001 From: Rolf Bjarne Kvinge Date: Tue, 4 Jul 2017 18:56:42 +0200 Subject: [PATCH 028/145] [generator] Don't use extension methods in generated code. Extension methods require the containing class' namespace to be in a `using`, which we can't easily do (currently) for user code, since we hardcode all our `using`s. So just call the static extension method directly instead of relying on syntax sugar. --- src/generator.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/generator.cs b/src/generator.cs index 63272def07..33f1f797a2 100644 --- a/src/generator.cs +++ b/src/generator.cs @@ -1284,14 +1284,14 @@ public partial class Generator : IMemberGatherer { } temp = string.Format ("{3}NSValue.From{0} ({2}{1});", typeStr, denullify, parameterName, nullCheck); } else if (originalType == TypeManager.NSString && IsSmartEnum (retType)) { - temp = $"{parameterName}.GetConstant ();"; + temp = $"{FormatType (retType.DeclaringType, retType)}Extensions.GetConstant ({parameterName});"; } else if (originalType.IsArray) { var arrType = originalType.GetElementType (); var arrRetType = TypeManager.GetUnderlyingNullableType (retType.GetElementType ()) ?? retType.GetElementType (); var valueConverter = string.Empty; if (arrType == TypeManager.NSString) - valueConverter = $"o.GetConstant (), {parameterName});"; + valueConverter = $"{FormatType (retType.DeclaringType, arrRetType)}Extensions.GetConstant (o), {parameterName});"; else if (arrType == TypeManager.NSNumber) { var cast = arrRetType.IsEnum ? "(int)" : string.Empty; valueConverter = $"new NSNumber ({cast}o{denullify}), {parameterName});"; From 4ee7792151d8615d5449fdb39a118c3717337c15 Mon Sep 17 00:00:00 2001 From: Rolf Bjarne Kvinge Date: Tue, 4 Jul 2017 18:58:17 +0200 Subject: [PATCH 029/145] [tests] Use a smart enum type available in all profiles for generated tests. --- tests/test-libraries/testgenerator.cs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tests/test-libraries/testgenerator.cs b/tests/test-libraries/testgenerator.cs index 506f6bfafd..0b61979f58 100644 --- a/tests/test-libraries/testgenerator.cs +++ b/tests/test-libraries/testgenerator.cs @@ -96,7 +96,7 @@ static class C { }; static BindAsData [] bindas_nsstring = new [] { - new BindAsData { Managed = "AVMediaTypes", ManagedNewExpression = "AVMediaTypes.Audio" }, + new BindAsData { Managed = "SecKeyAlgorithm", ManagedNewExpression = "SecKeyAlgorithm.RsaSignatureRaw" }, }; static string GetNativeName (char t) @@ -363,6 +363,7 @@ using MapKit; #endif using ObjCRuntime; using SceneKit; +using Security; #if HAVE_UIKIT using UIKit; #endif @@ -779,6 +780,7 @@ using MapKit; #endif using ObjCRuntime; using SceneKit; +using Security; #if HAVE_UIKIT using UIKit; #endif From 66a25bb6efcb496e27e20a377298d5932a562354 Mon Sep 17 00:00:00 2001 From: Rolf Bjarne Kvinge Date: Tue, 4 Jul 2017 20:07:15 +0200 Subject: [PATCH 030/145] [mtouch] Minor adjustments to get error messages right. --- src/ObjCRuntime/Registrar.cs | 8 ++++--- tests/mtouch/RegistrarTest.cs | 39 ++++++++++++++++++++++++++--------- 2 files changed, 34 insertions(+), 13 deletions(-) diff --git a/src/ObjCRuntime/Registrar.cs b/src/ObjCRuntime/Registrar.cs index f48eddfc4e..8c7f2c337a 100644 --- a/src/ObjCRuntime/Registrar.cs +++ b/src/ObjCRuntime/Registrar.cs @@ -2327,9 +2327,11 @@ namespace XamCore.Registrar { } else { signature.Append (ToSignature (type, member, ref success)); } - if (!success) - throw CreateException (4136, Method, "The registrar cannot marshal the parameter type '{0}' of the parameter '{1}' in the method '{2}.{3}'", - GetTypeFullName (type), GetParameterName (Method, i), GetTypeFullName (DeclaringType), GetDescriptiveMethodName (Method)); + if (!success) { + var mi = Method ?? method.Method; + throw CreateException (4136, mi, "The registrar cannot marshal the parameter type '{0}' of the parameter '{1}' in the method '{2}.{3}'", + GetTypeFullName (GetParameters (mi) [i]), GetParameterName (mi, i), GetTypeFullName (DeclaringType), GetDescriptiveMethodName (mi)); + } } } return signature.ToString (); diff --git a/tests/mtouch/RegistrarTest.cs b/tests/mtouch/RegistrarTest.cs index 3576c1e91b..3767652d7d 100644 --- a/tests/mtouch/RegistrarTest.cs +++ b/tests/mtouch/RegistrarTest.cs @@ -1071,15 +1071,25 @@ class Open : NSObject public void GenericType_WithInvalidParameterTypes () { var code = @" + using System.Collections.Generic; + using Foundation; class Open : NSObject where U: NSObject { [Export (""bar:"")] public void Bar (List arg) {} // Not OK, can't marshal lists. } + class C { static void Main () {} } "; - Verify (R.Static, code, false, - ".*Test.cs.*: error MT4136: The registrar cannot marshal the parameter type 'System.Collections.Generic.List`1' of the parameter 'arg' in the method 'Open`1.Bar(System.Collections.Generic.List`1)'"); + using (var mtouch = new MTouchTool ()) { + mtouch.CreateTemporaryCacheDirectory (); + mtouch.CreateTemporaryApp (code: code, extraArg: "-debug:full"); + mtouch.Registrar = MTouchRegistrar.Static; + mtouch.Linker = MTouchLinker.DontLink; // faster test + mtouch.AssertExecuteFailure (MTouchAction.BuildSim, "build"); + mtouch.AssertError (4136, "The registrar cannot marshal the parameter type 'System.Collections.Generic.List`1' of the parameter 'arg' in the method 'Open`1.Bar(System.Collections.Generic.List`1)'", "testApp.cs", 7); + mtouch.AssertErrorCount (1); + } } [Test] @@ -1192,6 +1202,7 @@ class GenericMethodClass : NSObject { public void GenericMethods2 () { var str1 = @" +using Foundation; class NullableGenericTestClass : NSObject where T: struct { [Export (""init:"")] @@ -1231,15 +1242,23 @@ class NullableGenericTestClass : NSObject where T: struct throw new System.NotImplementedException (); } } +class C { static void Main () {} } "; - Verify (R.Static, str1, false, - ".*Test.cs.*: error MT4113: The registrar found a generic method: 'NullableGenericTestClass`1.Z1(System.Nullable`1)'. Exporting generic methods is not supported, and will lead to random behavior and/or crashes", - ".*Test.cs.*: error MT4113: The registrar found a generic method: 'NullableGenericTestClass`1.Z2()'. Exporting generic methods is not supported, and will lead to random behavior and/or crashes", - ".*Test.cs.*: error MT4113: The registrar found a generic method: 'NullableGenericTestClass`1.Z3(Z)'. Exporting generic methods is not supported, and will lead to random behavior and/or crashes", - ".*Test.cs.*: error MT4128: The registrar found an invalid generic parameter type 'T' in the parameter foo of the method 'NullableGenericTestClass`1.T1(T)'. The generic parameter must have an 'NSObject' constraint.", - ".*Test.cs.*: error MT4128: The registrar found an invalid generic parameter type 'System.Nullable`1' in the parameter foo of the method 'NullableGenericTestClass`1.T2(System.Nullable`1)'. The generic parameter must have an 'NSObject' constraint.", - ".*Test.cs.*: error MT4129: The registrar found an invalid generic return type 'T' in the method 'NullableGenericTestClass`1.T3()'. The generic return type must have an 'NSObject' constraint.", - ".*Test.cs.*: error MT4136: The registrar cannot marshal the parameter type 'System.Nullable`1' of the parameter 'foo' in the method 'NullableGenericTestClass`1..ctor(System.Nullable`1)'"); + using (var mtouch = new MTouchTool ()) { + mtouch.CreateTemporaryCacheDirectory (); + mtouch.CreateTemporaryApp (code: str1, extraArg: "-debug:full"); + mtouch.Registrar = MTouchRegistrar.Static; + mtouch.Linker = MTouchLinker.DontLink; // faster test + mtouch.AssertExecuteFailure (MTouchAction.BuildSim, "build"); + mtouch.AssertError (4113, "The registrar found a generic method: 'NullableGenericTestClass`1.Z1(System.Nullable`1)'. Exporting generic methods is not supported, and will lead to random behavior and/or crashes", "testApp.cs", 12); + mtouch.AssertError (4113, "The registrar found a generic method: 'NullableGenericTestClass`1.Z2()'. Exporting generic methods is not supported, and will lead to random behavior and/or crashes", "testApp.cs", 17); + mtouch.AssertError (4113, "The registrar found a generic method: 'NullableGenericTestClass`1.Z3(Z)'. Exporting generic methods is not supported, and will lead to random behavior and/or crashes", "testApp.cs", 23); + mtouch.AssertError (4128, "The registrar found an invalid generic parameter type 'T' in the parameter foo of the method 'NullableGenericTestClass`1.T1(T)'. The generic parameter must have an 'NSObject' constraint.", "testApp.cs", 28); + mtouch.AssertError (4128, "The registrar found an invalid generic parameter type 'System.Nullable`1' in the parameter foo of the method 'NullableGenericTestClass`1.T2(System.Nullable`1)'. The generic parameter must have an 'NSObject' constraint.", "testApp.cs", 33); + mtouch.AssertError (4129, "The registrar found an invalid generic return type 'T' in the method 'NullableGenericTestClass`1.T3()'. The generic return type must have an 'NSObject' constraint.", "testApp.cs", 38); + mtouch.AssertError (4136, "The registrar cannot marshal the parameter type 'System.Nullable`1' of the parameter 'foo' in the method 'NullableGenericTestClass`1..ctor(System.Nullable`1)'", "testApp.cs", 6); + mtouch.AssertErrorCount (7); + } } [Test] From 580b55215700b5af530eab9e4144ef50c94bb88e Mon Sep 17 00:00:00 2001 From: Rolf Bjarne Kvinge Date: Tue, 4 Jul 2017 20:10:54 +0200 Subject: [PATCH 031/145] [registrar] Make mmp-specific code mmp-specific. --- tools/common/StaticRegistrar.cs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tools/common/StaticRegistrar.cs b/tools/common/StaticRegistrar.cs index 77321eec0c..e7415ab1ac 100644 --- a/tools/common/StaticRegistrar.cs +++ b/tools/common/StaticRegistrar.cs @@ -3765,9 +3765,11 @@ namespace XamCore.Registrar { { var underlyingTypeName = managedType.FullName; +#if MMP // Remove 'MonoMac.' namespace prefix to make switch smaller if (!Registrar.IsDualBuild && underlyingTypeName.StartsWith ("MonoMac.", StringComparison.Ordinal)) underlyingTypeName = underlyingTypeName.Substring ("MonoMac.".Length); +#endif switch (underlyingTypeName) { case "Foundation.NSRange": nativeType = "NSRange"; return "xamarin_nsvalue_to_nsrange"; @@ -3796,9 +3798,11 @@ namespace XamCore.Registrar { { var underlyingTypeName = managedType.FullName; +#if MMP // Remove 'MonoMac.' namespace prefix to make switch smaller if (!Registrar.IsDualBuild && underlyingTypeName.StartsWith ("MonoMac.", StringComparison.Ordinal)) underlyingTypeName = underlyingTypeName.Substring ("MonoMac.".Length); +#endif switch (underlyingTypeName) { case "Foundation.NSRange": return "xamarin_nsrange_to_nsvalue"; From 5e7768e5ff8412c4f289d11dbc86e38538399424 Mon Sep 17 00:00:00 2001 From: Rolf Bjarne Kvinge Date: Wed, 5 Jul 2017 08:54:42 +0200 Subject: [PATCH 032/145] [mtouch] Minor adjustments to get error messages right. --- src/ObjCRuntime/Registrar.cs | 2 +- tests/mtouch/RegistrarTest.cs | 36 ++++++++++++++++++++++------------- 2 files changed, 24 insertions(+), 14 deletions(-) diff --git a/src/ObjCRuntime/Registrar.cs b/src/ObjCRuntime/Registrar.cs index 8c7f2c337a..dcb107b5f6 100644 --- a/src/ObjCRuntime/Registrar.cs +++ b/src/ObjCRuntime/Registrar.cs @@ -2304,7 +2304,7 @@ namespace XamCore.Registrar { var ReturnType = Method != null ? GetReturnType (Method) : method.NativeReturnType; signature.Append (ToSignature (ReturnType, member, ref success)); if (!success) - throw CreateException (4104, Method, "The registrar cannot marshal the return value of type `{0}` in the method `{1}.{2}`.", GetTypeFullName (ReturnType), GetTypeFullName (DeclaringType), GetDescriptiveMethodName (Method)); + throw CreateException (4104, Method ?? method.Method, "The registrar cannot marshal the return value of type `{0}` in the method `{1}.{2}`.", GetTypeFullName (ReturnType), GetTypeFullName (DeclaringType), GetDescriptiveMethodName (Method ?? method.Method)); } signature.Append (isBlockSignature ? "@?" : "@:"); diff --git a/tests/mtouch/RegistrarTest.cs b/tests/mtouch/RegistrarTest.cs index 3767652d7d..16e30ac710 100644 --- a/tests/mtouch/RegistrarTest.cs +++ b/tests/mtouch/RegistrarTest.cs @@ -23,6 +23,8 @@ namespace Xamarin public void InvalidParameterTypes () { var code = @" +using System; +using Foundation; class Foo : NSObject { [Export (""bar1:"")] public void Bar1 (object[] arg) @@ -82,20 +84,28 @@ class Foo : NSObject { set {} } } +class C { static void Main () {} } "; - Verify (R.Static, code, false, - ".*/Test.cs(.*): error MT4138: The registrar cannot marshal the property type 'System.Object' of the property 'Foo.Bar10'.", - ".*/Test.cs(.*): error MT4136: The registrar cannot marshal the parameter type 'System.Object[]' of the parameter 'arg' in the method 'Foo.Bar1(System.Object[])'", - ".*/Test.cs(.*): error MT4136: The registrar cannot marshal the parameter type 'System.Object&' of the parameter 'arg' in the method 'Foo.Bar2(System.Object&)'", - ".*/Test.cs(.*): error MT4136: The registrar cannot marshal the parameter type 'System.Object&' of the parameter 'arg' in the method 'Foo.Bar3(System.Object&)'", - ".*/Test.cs(.*): error MT4136: The registrar cannot marshal the parameter type 'System.Object' of the parameter 'arg' in the method 'Foo.Bar4(System.Object)'", - ".*/Test.cs(.*): error MT4104: The registrar cannot marshal the return value of type `System.Object` in the method `Foo.Bar5()`.", - ".*/Test.cs(.*): error MT4136: The registrar cannot marshal the parameter type 'System.Nullable`1' of the parameter 'arg' in the method 'Foo.Bar6(System.Nullable`1)'", - ".*/Test.cs(.*): error MT4104: The registrar cannot marshal the return value of type `System.Nullable`1` in the method `Foo.Bar7()`.", - ".*/Test.cs(.*): error MT4136: The registrar cannot marshal the parameter type 'System.Nullable`1[]&' of the parameter 'arg' in the method 'Foo.Bar8(System.Nullable`1[]&)'", - ".*/Test.cs(.*): error MT4136: The registrar cannot marshal the parameter type 'System.Attribute' of the parameter 'attribute' in the method 'Foo.Bar9(System.Attribute)'", - ".*/Test.cs(.*): error MT4104: The registrar cannot marshal the return value of type `System.Object[]` in the method `Foo.get_Bar11()`.", - ".*/Test.cs(.*): error MT4136: The registrar cannot marshal the parameter type 'System.Object[]' of the parameter 'value' in the method 'Foo.set_Bar11(System.Object[])'"); + + using (var mtouch = new MTouchTool ()) { + mtouch.Linker = MTouchLinker.DontLink; // faster + mtouch.Registrar = MTouchRegistrar.Static; + mtouch.CreateTemporaryApp (code: code, extraArg: "-debug"); + mtouch.AssertExecuteFailure (MTouchAction.BuildSim, "build"); + mtouch.AssertError (4138, "The registrar cannot marshal the property type 'System.Object' of the property 'Foo.Bar10'.", "testApp.cs", 54); + mtouch.AssertError (4136, "The registrar cannot marshal the parameter type 'System.Object[]' of the parameter 'arg' in the method 'Foo.Bar1(System.Object[])'", "testApp.cs", 7); + mtouch.AssertError (4136, "The registrar cannot marshal the parameter type 'System.Object&' of the parameter 'arg' in the method 'Foo.Bar2(System.Object&)'", "testApp.cs", 12); + mtouch.AssertError (4136, "The registrar cannot marshal the parameter type 'System.Object&' of the parameter 'arg' in the method 'Foo.Bar3(System.Object&)'", "testApp.cs", 17); + mtouch.AssertError (4136, "The registrar cannot marshal the parameter type 'System.Object' of the parameter 'arg' in the method 'Foo.Bar4(System.Object)'", "testApp.cs", 23); + mtouch.AssertError (4104, "The registrar cannot marshal the return value of type `System.Object` in the method `Foo.Bar5()`.", "testApp.cs", 28); + mtouch.AssertError (4136, "The registrar cannot marshal the parameter type 'System.Nullable`1' of the parameter 'arg' in the method 'Foo.Bar6(System.Nullable`1)'", "testApp.cs", 34); + mtouch.AssertError (4104, "The registrar cannot marshal the return value of type `System.Nullable`1` in the method `Foo.Bar7()`.", "testApp.cs", 39); + mtouch.AssertError (4136, "The registrar cannot marshal the parameter type 'System.Nullable`1[]&' of the parameter 'arg' in the method 'Foo.Bar8(System.Nullable`1[]&)'", "testApp.cs", 45); + mtouch.AssertError (4136, "The registrar cannot marshal the parameter type 'System.Attribute' of the parameter 'attribute' in the method 'Foo.Bar9(System.Attribute)'", "testApp.cs", 50); + mtouch.AssertError (4104, "The registrar cannot marshal the return value of type `System.Object[]` in the method `Foo.get_Bar11()`.", "testApp.cs", 58); + mtouch.AssertError (4136, "The registrar cannot marshal the parameter type 'System.Object[]' of the parameter 'value' in the method 'Foo.set_Bar11(System.Object[])'", "testApp.cs", 60); + mtouch.AssertErrorCount (12); + } } [Test] From a24fa2f8588f6e5f6eef8ffc72c721e8310576cb Mon Sep 17 00:00:00 2001 From: Rolf Bjarne Kvinge Date: Wed, 5 Jul 2017 09:03:25 +0200 Subject: [PATCH 033/145] [ObjCRuntime] Add a null check. --- src/ObjCRuntime/Runtime.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/ObjCRuntime/Runtime.cs b/src/ObjCRuntime/Runtime.cs index 97876b838a..ceaaffae7c 100644 --- a/src/ObjCRuntime/Runtime.cs +++ b/src/ObjCRuntime/Runtime.cs @@ -318,6 +318,8 @@ namespace XamCore.ObjCRuntime { if (!Registrar.IsSmartEnum (smart_type, out getConstantMethod, out getValueMethod)) throw ErrorHelper.CreateError (8024, $"Could not find a valid extension type for the smart enum '{smart_type.FullName}'. Please file a bug at https://bugzilla.xamarin.com."); var rv = (NSString) ((MethodInfo) getConstantMethod).Invoke (null, new object [] { value }); + if (rv == null) + return IntPtr.Zero; rv.DangerousRetain ().DangerousAutorelease (); return rv.Handle; } From c6cd2335459de30e68196f8515822634ac0c6f45 Mon Sep 17 00:00:00 2001 From: Rolf Bjarne Kvinge Date: Wed, 5 Jul 2017 09:10:53 +0200 Subject: [PATCH 034/145] [registrar] Simplify code a bit and fix a FIXME. --- src/ObjCRuntime/DynamicRegistrar.cs | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/src/ObjCRuntime/DynamicRegistrar.cs b/src/ObjCRuntime/DynamicRegistrar.cs index ee63bef9c1..5ccd3fcbc7 100644 --- a/src/ObjCRuntime/DynamicRegistrar.cs +++ b/src/ObjCRuntime/DynamicRegistrar.cs @@ -56,14 +56,21 @@ namespace XamCore.Registrar { return rv; } - public static T GetOneAttribute (MemberInfo provider) where T : Attribute + public static T GetOneAttribute (ICustomAttributeProvider provider) where T : Attribute { var attribs = provider.GetCustomAttributes (typeof (T), false); if (attribs.Length == 0) return null; else if (attribs.Length == 1) return (T) attribs [0]; - throw new AmbiguousMatchException (string.Format ("The member '{0}' contains more than one '{1}'", provider.Name, typeof (T).FullName)); + var member = provider as MemberInfo; + if (member != null) + throw new AmbiguousMatchException (string.Format ("The member '{0}' contains more than one '{1}'", member.Name, typeof (T).FullName)); + var parameter = provider as ParameterInfo; + if (parameter != null) + throw new AmbiguousMatchException (string.Format ("The parameter '{0}' contains more than one '{1}'", parameter.Name, typeof (T).FullName)); + + throw new AmbiguousMatchException (string.Format ("The member '{0}' contains more than one '{1}'", provider, typeof (T).FullName)); } } @@ -259,14 +266,7 @@ namespace XamCore.Registrar { } } - var attribs = provider.GetCustomAttributes (typeof (BindAsAttribute), false); - if (attribs.Length == 0) - return null; - - if (attribs.Length != 1) - throw new AmbiguousMatchException (/* FIXME */); - - return (BindAsAttribute) attribs [0]; + return SharedDynamic.GetOneAttribute (provider); } public override Type GetNullableType (Type type) From f6e6e7e14bb02d38e3fa85809ee3ed81caba61b1 Mon Sep 17 00:00:00 2001 From: Rolf Bjarne Kvinge Date: Wed, 5 Jul 2017 09:13:54 +0200 Subject: [PATCH 035/145] [registrar] Improve an error message. --- src/ObjCRuntime/DynamicRegistrar.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ObjCRuntime/DynamicRegistrar.cs b/src/ObjCRuntime/DynamicRegistrar.cs index 5ccd3fcbc7..2189a7e38a 100644 --- a/src/ObjCRuntime/DynamicRegistrar.cs +++ b/src/ObjCRuntime/DynamicRegistrar.cs @@ -260,7 +260,7 @@ namespace XamCore.Registrar { } else { var cinfo = method as ConstructorInfo; if (parameter_index == -1) { - throw new Exception (); + throw ErrorHelper.CreateError (99, $"Internal error: can't get the BindAs attribute for the return value of a constructor ({GetDescriptiveMethodName (method)}). Please file a bug report with a test case (https://bugzilla.xamarin.com)."); } else { provider = cinfo.GetParameters () [parameter_index]; } From d44b9cb8244e4eedf8958009979eb35eb6a31579 Mon Sep 17 00:00:00 2001 From: Rolf Bjarne Kvinge Date: Wed, 5 Jul 2017 10:40:44 +0200 Subject: [PATCH 036/145] [generator] Print nicer typenames in the BindAs attribute. Diff (empty): https://gist.github.com/rolfbjarne/8604c61ce33f8352e7ee75cb5c7a318e --- src/generator.cs | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/generator.cs b/src/generator.cs index 33f1f797a2..5f8559d4d5 100644 --- a/src/generator.cs +++ b/src/generator.cs @@ -5558,11 +5558,10 @@ public partial class Generator : IMemberGatherer { var originalType = method?.ReturnType ?? property?.PropertyType; originalType = originalType ?? param?.ParameterType; - var type = TypeManager.GetUnderlyingNullableType (p.Type) ?? p.Type; + var declaringType = (mi as MemberInfo)?.DeclaringType ?? param.Member.DeclaringType; var pReturn = method != null ? "return: " : string.Empty; - var pBoolean = p.IsNullable ? "?" : string.Empty; - var attribstr = $"[{pReturn}BindAs (typeof ({type.FullName}{pBoolean}), OriginalType = typeof ({originalType.FullName}))]"; + var attribstr = $"[{pReturn}BindAs (typeof ({FormatType (declaringType, p.Type)}), OriginalType = typeof ({FormatType (declaringType, originalType)}))]"; if (sb != null) sb.Append ($"{attribstr} "); From 8b8ff9a33940e42848271d53dee8c437e3399299 Mon Sep 17 00:00:00 2001 From: Rolf Bjarne Kvinge Date: Wed, 5 Jul 2017 10:42:28 +0200 Subject: [PATCH 037/145] [generator] Don't generate a 'GetConstant (T?)' and 'GetNullableValue' for smart enums. Instead inline the corresponding code in the generator, so that we don't add a lot of metadata for little benefit. Generator diff (compared with the commit before starting to generate GetConstant/GetNullableValue (32fb0b65ddb52c2bbc6962bdf40dab6ef41bc5c2)): https://gist.github.com/rolfbjarne/440f3a78089098881145dfb231d86d66 (empty). --- src/generator-enums.cs | 24 ------------------- src/generator.cs | 52 ++++++++++++++++++++++++++++++------------ 2 files changed, 37 insertions(+), 39 deletions(-) diff --git a/src/generator-enums.cs b/src/generator-enums.cs index 22cadb74b3..3a98c69293 100644 --- a/src/generator-enums.cs +++ b/src/generator-enums.cs @@ -164,18 +164,6 @@ public partial class Generator { print ("}"); print (""); } - - print ("public static NSString GetConstant (this {0}? self)", type.Name); - print ("{"); - indent++; - print ("if (self == null)"); - indent++; - print ("return null;"); - indent--; - print ("return GetConstant (self.Value);"); - indent--; - print ("}"); - print (""); print ("public static NSString GetConstant (this {0} self)", type.Name); print ("{"); @@ -200,18 +188,6 @@ public partial class Generator { print ("}"); print (""); - - print ("public static {0}? GetNullableValue (NSString constant)", type.Name); - print ("{"); - indent++; - print ("if (constant == null)"); - indent++; - print ("return null;"); - indent--; - print ("return GetValue (constant);"); - indent--; - print ("}"); - print (""); print ("public static {0} GetValue (NSString constant)", type.Name); print ("{"); diff --git a/src/generator.cs b/src/generator.cs index 5f8559d4d5..c2c78c7dc8 100644 --- a/src/generator.cs +++ b/src/generator.cs @@ -1284,15 +1284,17 @@ public partial class Generator : IMemberGatherer { } temp = string.Format ("{3}NSValue.From{0} ({2}{1});", typeStr, denullify, parameterName, nullCheck); } else if (originalType == TypeManager.NSString && IsSmartEnum (retType)) { - temp = $"{FormatType (retType.DeclaringType, retType)}Extensions.GetConstant ({parameterName});"; + temp = isNullable ? $"{parameterName} == null ? null : " : string.Empty; + temp += $"{FormatType (retType.DeclaringType, retType)}Extensions.GetConstant ({parameterName}{denullify});"; } else if (originalType.IsArray) { var arrType = originalType.GetElementType (); var arrRetType = TypeManager.GetUnderlyingNullableType (retType.GetElementType ()) ?? retType.GetElementType (); var valueConverter = string.Empty; - if (arrType == TypeManager.NSString) - valueConverter = $"{FormatType (retType.DeclaringType, arrRetType)}Extensions.GetConstant (o), {parameterName});"; - else if (arrType == TypeManager.NSNumber) { + if (arrType == TypeManager.NSString) { + valueConverter = isNullable ? "o == null ? null : " : string.Empty; + valueConverter += $"{FormatType (retType.DeclaringType, arrRetType)}Extensions.GetConstant (o), {parameterName});"; + } else if (arrType == TypeManager.NSNumber) { var cast = arrRetType.IsEnum ? "(int)" : string.Empty; valueConverter = $"new NSNumber ({cast}o{denullify}), {parameterName});"; } else if (arrType == TypeManager.NSValue) { @@ -1382,12 +1384,14 @@ public partial class Generator : IMemberGatherer { } } - string GetFromBindAsWrapper (MemberInformation minfo) + string GetFromBindAsWrapper (MemberInformation minfo, out string suffix) { var declaringType = minfo.mi.DeclaringType; if (IsMemberInsideProtocol (declaringType)) throw new BindingException (1050, true, "[BindAs] cannot be used inside Protocol or Model types. Type: {0}", declaringType.Name); + suffix = string.Empty; + var attrib = GetBindAsAttribute (minfo.mi); var nullableRetType = TypeManager.GetUnderlyingNullableType (attrib.Type); var isNullable = nullableRetType != null; @@ -1421,7 +1425,8 @@ public partial class Generator : IMemberGatherer { if (isNullable) append = $"?{append}"; } else if (originalReturnType == TypeManager.NSString && IsSmartEnum (retType)) { - append = $"{FormatType (retType.DeclaringType, retType)}Extensions.{(isNullable ? "GetNullableValue" : "GetValue")} ("; + append = $"{FormatType (retType.DeclaringType, retType)}Extensions.GetValue ("; + suffix = ")"; } else if (originalReturnType.IsArray) { var arrType = originalReturnType.GetElementType (); var nullableElementType = TypeManager.GetUnderlyingNullableType (retType.GetElementType ()); @@ -3467,15 +3472,28 @@ public partial class Generator : IMemberGatherer { cast_a = " Runtime.GetINativeObject<" + FormatType (declaringType, GetCorrectGenericType (mi.ReturnType)) + "> ("; cast_b = $", {minfo.is_forced_owns})"; } else if (minfo != null && minfo.is_bindAs) { + var bindAs = GetBindAsAttribute (minfo.mi); + var nullableBindAsType = TypeManager.GetUnderlyingNullableType (bindAs.Type); + var isNullable = nullableBindAsType != null; + var bindAsType = TypeManager.GetUnderlyingNullableType (bindAs.Type) ?? bindAs.Type; + var formattedBindAsType = FormatType (declaringType, GetCorrectGenericType (bindAs.Type)); + string suffix; + var wrapper = GetFromBindAsWrapper (minfo, out suffix); + var formattedReturnType = FormatType (declaringType, GetCorrectGenericType (mi.ReturnType)); if (mi.ReturnType == TypeManager.NSString) { - cast_a = $" {GetFromBindAsWrapper (minfo)}Runtime.GetNSObject<{FormatType (declaringType, GetCorrectGenericType (mi.ReturnType))}> ("; - cast_b = "))"; + if (isNullable) { + print ("IntPtr retvaltmp;"); + cast_a = "((retvaltmp = "; + cast_b = $") == IntPtr.Zero ? default ({formattedBindAsType}) : ({wrapper}Runtime.GetNSObject<{formattedReturnType}> (retvaltmp)){suffix})"; + } else { + cast_a = $"{wrapper}Runtime.GetNSObject<{formattedReturnType}> ("; + cast_b = $"){suffix}"; + } } else { - var bindAs = GetBindAsAttribute (minfo.mi); - var bindAsType = TypeManager.GetUnderlyingNullableType (bindAs.Type) ?? bindAs.Type; - var enumCast = (bindAsType.IsEnum && !minfo.type.IsArray) ? $"({FormatType (bindAsType.DeclaringType, GetCorrectGenericType (bindAsType))})" : string.Empty; - cast_a = $" {enumCast}Runtime.GetNSObject<{FormatType (declaringType, GetCorrectGenericType (mi.ReturnType))}> ("; - cast_b = ")" + GetFromBindAsWrapper (minfo); + var enumCast = (bindAsType.IsEnum && !minfo.type.IsArray) ? $"({formattedBindAsType}) " : string.Empty; + print ("IntPtr retvaltmp;"); + cast_a = "((retvaltmp = "; + cast_b = $") == IntPtr.Zero ? default ({formattedBindAsType}) : ({enumCast}Runtime.GetNSObject<{formattedReturnType}> (retvaltmp){wrapper})){suffix}"; } } else { cast_a = " Runtime.GetNSObject<" + FormatType (declaringType, GetCorrectGenericType (mi.ReturnType)) + "> ("; @@ -3494,8 +3512,12 @@ public partial class Generator : IMemberGatherer { Type etype = mai.Type.GetElementType (); if (minfo != null && minfo.is_bindAs) { var bindAsT = GetBindAsAttribute (minfo.mi).Type.GetElementType (); - cast_a = $"NSArray.ArrayFromHandleFunc <{FormatType (bindAsT.DeclaringType, bindAsT)}> ("; - cast_b = $", {GetFromBindAsWrapper (minfo)})"; + var suffix = string.Empty; + print ("IntPtr retvalarrtmp;"); + cast_a = "((retvalarrtmp = "; + cast_b = ") == IntPtr.Zero ? null : ("; + cast_b += $"NSArray.ArrayFromHandleFunc <{FormatType (bindAsT.DeclaringType, bindAsT)}> (retvalarrtmp, {GetFromBindAsWrapper (minfo, out suffix)})" + suffix; + cast_b += "))"; } else if (etype == TypeManager.System_String) { cast_a = "NSArray.StringArrayFromHandle ("; cast_b = ")"; From ef682e44630472255e917fa6fac78e18e3cc26e7 Mon Sep 17 00:00:00 2001 From: Rolf Bjarne Kvinge Date: Wed, 5 Jul 2017 10:54:45 +0200 Subject: [PATCH 038/145] [runtime] Use the native equivalent of Type.GetTypeCode to do fewer string comparisons. --- runtime/exports.t4 | 4 +++ runtime/mono-runtime.h.t4 | 46 +++++++++++++++++++++++++++++++ runtime/trampolines.m | 57 +++++++++++++++++++++++++-------------- 3 files changed, 87 insertions(+), 20 deletions(-) diff --git a/runtime/exports.t4 b/runtime/exports.t4 index 7d29a3f1d6..005a030fd7 100644 --- a/runtime/exports.t4 +++ b/runtime/exports.t4 @@ -383,6 +383,10 @@ "MonoMethodSignature *", "sig" ), + new Export ("int", "mono_type_get_type", + "MonoType *", "type" + ), + #endregion #region metadata/mono-debug.h diff --git a/runtime/mono-runtime.h.t4 b/runtime/mono-runtime.h.t4 index a5921a7c05..ff3e9d8309 100644 --- a/runtime/mono-runtime.h.t4 +++ b/runtime/mono-runtime.h.t4 @@ -170,6 +170,52 @@ typedef void (*MonoUnhandledExceptionFunc) (MonoObject *exc, gpointer u typedef unsigned char* (*MonoLoadAotDataFunc) (MonoAssembly *assembly, int size, gpointer user_data, void **out_handle); typedef void (*MonoFreeAotDataFunc) (MonoAssembly *assembly, int size, gpointer user_data, void *handle); +/* metadata/blob.h */ + +/* + * Encoding for type signatures used in the Metadata + */ +typedef enum { + MONO_TYPE_END = 0x00, /* End of List */ + MONO_TYPE_VOID = 0x01, + MONO_TYPE_BOOLEAN = 0x02, + MONO_TYPE_CHAR = 0x03, + MONO_TYPE_I1 = 0x04, + MONO_TYPE_U1 = 0x05, + MONO_TYPE_I2 = 0x06, + MONO_TYPE_U2 = 0x07, + MONO_TYPE_I4 = 0x08, + MONO_TYPE_U4 = 0x09, + MONO_TYPE_I8 = 0x0a, + MONO_TYPE_U8 = 0x0b, + MONO_TYPE_R4 = 0x0c, + MONO_TYPE_R8 = 0x0d, + MONO_TYPE_STRING = 0x0e, + MONO_TYPE_PTR = 0x0f, /* arg: token */ + MONO_TYPE_BYREF = 0x10, /* arg: token */ + MONO_TYPE_VALUETYPE = 0x11, /* arg: token */ + MONO_TYPE_CLASS = 0x12, /* arg: token */ + MONO_TYPE_VAR = 0x13, /* number */ + MONO_TYPE_ARRAY = 0x14, /* type, rank, boundsCount, bound1, loCount, lo1 */ + MONO_TYPE_GENERICINST= 0x15, /* \x{2026} */ + MONO_TYPE_TYPEDBYREF = 0x16, + MONO_TYPE_I = 0x18, + MONO_TYPE_U = 0x19, + MONO_TYPE_FNPTR = 0x1b, /* arg: full method signature */ + MONO_TYPE_OBJECT = 0x1c, + MONO_TYPE_SZARRAY = 0x1d, /* 0-based one-dim-array */ + MONO_TYPE_MVAR = 0x1e, /* number */ + MONO_TYPE_CMOD_REQD = 0x1f, /* arg: typedef or typeref token */ + MONO_TYPE_CMOD_OPT = 0x20, /* optional arg: typedef or typref token */ + MONO_TYPE_INTERNAL = 0x21, /* CLR internal type */ + + MONO_TYPE_MODIFIER = 0x40, /* Or with the following types */ + MONO_TYPE_SENTINEL = 0x41, /* Sentinel for varargs method signature */ + MONO_TYPE_PINNED = 0x45, /* Local var that points to pinned object */ + + MONO_TYPE_ENUM = 0x55 /* an enumeration */ +} MonoTypeEnum; + /* * From internal headers */ diff --git a/runtime/trampolines.m b/runtime/trampolines.m index e5111923c1..52dd448da3 100644 --- a/runtime/trampolines.m +++ b/runtime/trampolines.m @@ -908,42 +908,59 @@ id xamarin_uioffset_to_nsvalue (MonoObject *value, guint32 *except static void * xamarin_get_nsnumber_converter (MonoClass *managedType, MonoMethod *method, bool to_managed, guint32 *exception_gchandle) { + int type; void * func = NULL; char *fullname = xamarin_class_get_full_name (managedType, exception_gchandle); if (*exception_gchandle != 0) goto exception_handling; - if (!strcmp (fullname, "System.SByte")) { + type = mono_type_get_type (mono_class_get_type (managedType)); + + switch (type) { + case MONO_TYPE_I1: func = to_managed ? (void *) xamarin_nsnumber_to_sbyte : (void *) xamarin_sbyte_to_nsnumber; - } else if (!strcmp (fullname, "System.Byte")) { + break; + case MONO_TYPE_U1: func = to_managed ? (void *) xamarin_nsnumber_to_byte : (void *) xamarin_byte_to_nsnumber; - } else if (!strcmp (fullname, "System.Int16")) { + break; + case MONO_TYPE_I2: func = to_managed ? (void *) xamarin_nsnumber_to_short : (void *) xamarin_short_to_nsnumber; - } else if (!strcmp (fullname, "System.UInt16")) { + break; + case MONO_TYPE_U2: func = to_managed ? (void *) xamarin_nsnumber_to_ushort : (void *) xamarin_ushort_to_nsnumber; - } else if (!strcmp (fullname, "System.Int32")) { + break; + case MONO_TYPE_I4: func = to_managed ? (void *) xamarin_nsnumber_to_int : (void *) xamarin_int_to_nsnumber; - } else if (!strcmp (fullname, "System.UInt32")) { + break; + case MONO_TYPE_U4: func = to_managed ? (void *) xamarin_nsnumber_to_uint : (void *) xamarin_uint_to_nsnumber; - } else if (!strcmp (fullname, "System.Int64")) { + break; + case MONO_TYPE_I8: func = to_managed ? (void *) xamarin_nsnumber_to_long : (void *) xamarin_long_to_nsnumber; - } else if (!strcmp (fullname, "System.UInt64")) { + break; + case MONO_TYPE_U8: func = to_managed ? (void *) xamarin_nsnumber_to_ulong : (void *) xamarin_ulong_to_nsnumber; - } else if (!strcmp (fullname, "System.nint")) { - func = to_managed ? (void *) xamarin_nsnumber_to_nint : (void *) xamarin_nint_to_nsnumber; - } else if (!strcmp (fullname, "System.nuint")) { - func = to_managed ? (void *) xamarin_nsnumber_to_nuint : (void *) xamarin_nuint_to_nsnumber; - } else if (!strcmp (fullname, "System.Single")) { + break; + case MONO_TYPE_R4: func = to_managed ? (void *) xamarin_nsnumber_to_float : (void *) xamarin_float_to_nsnumber; - } else if (!strcmp (fullname, "System.Double")) { + break; + case MONO_TYPE_R8: func = to_managed ? (void *) xamarin_nsnumber_to_double : (void *) xamarin_double_to_nsnumber; - } else if (!strcmp (fullname, "System.nfloat")) { - func = to_managed ? (void *) xamarin_nsnumber_to_nfloat : (void *) xamarin_nfloat_to_nsnumber; - } else if (!strcmp (fullname, "System.Boolean")) { + break; + case MONO_TYPE_BOOLEAN: func = to_managed ? (void *) xamarin_nsnumber_to_bool : (void *) xamarin_bool_to_nsnumber; - } else { - *exception_gchandle = xamarin_create_bindas_exception (mono_class_get_type (managedType), mono_class_get_type (xamarin_get_nsnumber_class ()), method); - goto exception_handling; + break; + default: + if (!strcmp (fullname, "System.nint")) { + func = to_managed ? (void *) xamarin_nsnumber_to_nint : (void *) xamarin_nint_to_nsnumber; + } else if (!strcmp (fullname, "System.nuint")) { + func = to_managed ? (void *) xamarin_nsnumber_to_nuint : (void *) xamarin_nuint_to_nsnumber; + } else if (!strcmp (fullname, "System.nfloat")) { + func = to_managed ? (void *) xamarin_nsnumber_to_nfloat : (void *) xamarin_nfloat_to_nsnumber; + } else { + *exception_gchandle = xamarin_create_bindas_exception (mono_class_get_type (managedType), mono_class_get_type (xamarin_get_nsnumber_class ()), method); + goto exception_handling; + } } exception_handling: From 90415031497143e6be128be9f587bf8fdf0045f1 Mon Sep 17 00:00:00 2001 From: Rolf Bjarne Kvinge Date: Thu, 6 Jul 2017 10:40:54 +0200 Subject: [PATCH 039/145] [runtime] Don't freak out at startup if we can't find the NSValue or NSNumber classes. They might have been linked away. --- runtime/runtime.m | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/runtime/runtime.m b/runtime/runtime.m index cb39d62e54..6bf1c9cd24 100644 --- a/runtime/runtime.m +++ b/runtime/runtime.m @@ -357,12 +357,16 @@ void xamarin_framework_peer_unlock () MonoClass * xamarin_get_nsvalue_class () { + if (nsvalue_class == NULL) + xamarin_assertion_message ("Internal consistency error, please file a bug (https://bugzilla.xamarin.com). Additional data: can't get the NSValue class because it's been linked away.\n"); return nsvalue_class; } MonoClass * xamarin_get_nsnumber_class () { + if (nsnumber_class == NULL) + xamarin_assertion_message ("Internal consistency error, please file a bug (https://bugzilla.xamarin.com). Additional data: can't get the NSNumber class because it's been linked away.\n"); return nsnumber_class; } @@ -399,6 +403,9 @@ xamarin_is_class_nsnumber (MonoClass *cls) // COOP: Reading managed data, must be in UNSAFE mode MONO_ASSERT_GC_UNSAFE; + if (nsnumber_class == NULL) + return false; + return mono_class_is_subclass_of (cls, nsnumber_class, false); } @@ -408,6 +415,9 @@ xamarin_is_class_nsvalue (MonoClass *cls) // COOP: Reading managed data, must be in UNSAFE mode MONO_ASSERT_GC_UNSAFE; + if (nsvalue_class == NULL) + return false; + return mono_class_is_subclass_of (cls, nsvalue_class, false); } @@ -417,6 +427,9 @@ xamarin_is_class_nsstring (MonoClass *cls) // COOP: Reading managed data, must be in UNSAFE mode MONO_ASSERT_GC_UNSAFE; + if (nsstring_class == NULL) + return false; + return mono_class_is_subclass_of (cls, nsstring_class, false); } @@ -874,11 +887,11 @@ gc_enable_new_refcount (void) } static MonoClass * -get_class_from_name (MonoImage* image, const char *nmspace, const char *name) +get_class_from_name (MonoImage* image, const char *nmspace, const char *name, bool optional = false) { // COOP: this is a convenience function executed only at startup, I believe the mode here doesn't matter. MonoClass *rv = mono_class_from_name (image, nmspace, name); - if (!rv) + if (!rv && !optional) xamarin_assertion_message ("Fatal error: failed to load the class '%s.%s'\n.", nmspace, name); return rv; } @@ -1299,9 +1312,9 @@ xamarin_initialize () runtime_class = get_class_from_name (platform_image, objcruntime, "Runtime"); inativeobject_class = get_class_from_name (platform_image, objcruntime, "INativeObject"); nsobject_class = get_class_from_name (platform_image, foundation, "NSObject"); - nsnumber_class = get_class_from_name (platform_image, foundation, "NSNumber"); - nsvalue_class = get_class_from_name (platform_image, foundation, "NSValue"); - nsstring_class = get_class_from_name (platform_image, foundation, "NSString"); + nsnumber_class = get_class_from_name (platform_image, foundation, "NSNumber", true); + nsvalue_class = get_class_from_name (platform_image, foundation, "NSValue", true); + nsstring_class = get_class_from_name (platform_image, foundation, "NSString", true); mono_add_internal_call (xamarin_use_new_assemblies ? "Foundation.NSObject::xamarin_release_managed_ref" : PRODUCT_COMPAT_NAMESPACE ".Foundation.NSObject::xamarin_release_managed_ref", (const void *) xamarin_release_managed_ref); mono_add_internal_call (xamarin_use_new_assemblies ? "Foundation.NSObject::xamarin_create_managed_ref" : PRODUCT_COMPAT_NAMESPACE ".Foundation.NSObject::xamarin_create_managed_ref", (const void *) xamarin_create_managed_ref); From 34f31b5b34258aa3457aa4411aecb9d031ec37a0 Mon Sep 17 00:00:00 2001 From: Rolf Bjarne Kvinge Date: Thu, 6 Jul 2017 10:42:27 +0200 Subject: [PATCH 040/145] [linker] Preserve smart enum conversion methods when needed. --- docs/website/mtouch-errors.md | 4 + tests/linker-ios/link all/PreserveTest.cs | 55 +++++++ .../PreserveSmartEnumConversionsSubStep.cs | 146 ++++++++++++++++++ tools/mmp/Makefile | 1 + tools/mmp/mmp.csproj | 3 + tools/mtouch/Makefile | 1 + tools/mtouch/Tuning.cs | 1 + tools/mtouch/mtouch.csproj | 3 + 8 files changed, 214 insertions(+) create mode 100644 tools/linker/MonoTouch.Tuner/PreserveSmartEnumConversionsSubStep.cs diff --git a/docs/website/mtouch-errors.md b/docs/website/mtouch-errors.md index dcd98fe183..a95f0b5954 100644 --- a/docs/website/mtouch-errors.md +++ b/docs/website/mtouch-errors.md @@ -1201,6 +1201,10 @@ Something unexpected occured when trying to mark `NSObject` subclasses from the Something unexpected occured when trying to inline code from the application. The assembly causing the issue is named in the error message. In order to fix this issue the assembly will need to be provided in a [bug report](https://bugzilla.xamarin.com) along with a complete build log with verbosity enabled (i.e. `-v -v -v -v` in the **Additional mtouch arguments**). +### MT2100: Smart Enum Conversion Preserver failed processing `...`. + +Something unexpected occured when trying to mark the conversion methods for smart enums from the application. The assembly causing the issue is named in the error message. In order to fix this issue the assembly will need to be provided in a [bug report](https://bugzilla.xamarin.com) along with a complete build log with verbosity enabled (i.e. `-v -v -v -v` in the **Additional mtouch arguments**). + diff --git a/tests/linker-ios/link all/PreserveTest.cs b/tests/linker-ios/link all/PreserveTest.cs index f83addf096..2eac93a15a 100644 --- a/tests/linker-ios/link all/PreserveTest.cs +++ b/tests/linker-ios/link all/PreserveTest.cs @@ -164,5 +164,60 @@ namespace LinkAll.Attributes { var method = klass.GetMethod ("GetHandle", BindingFlags.Public | BindingFlags.Static); Assert.NotNull (method, "GetHandle"); } + + [Test] + public void SmartEnumTest () + { + var consumer = GetType ().Assembly.GetType ("LinkAll.Attributes.SmartConsumer"); + Assert.NotNull (consumer, "SmartConsumer"); + Assert.NotNull (consumer.GetMethod ("GetSmartEnumValue"), "GetSmartEnumValue"); + Assert.NotNull (consumer.GetMethod ("SetSmartEnumValue"), "SetSmartEnumValue"); + var smartEnum = GetType ().Assembly.GetType ("LinkAll.Attributes.SmartEnum"); + Assert.NotNull (smartEnum, "SmartEnum"); + var smartExtensions = GetType ().Assembly.GetType ("LinkAll.Attributes.SmartEnumExtensions"); + Assert.NotNull (smartExtensions, "SmartEnumExtensions"); + Assert.NotNull (smartExtensions.GetMethod ("GetConstant"), "GetConstant"); + Assert.NotNull (smartExtensions.GetMethod ("GetValue"), "GetValue"); + + // Unused smart enums and their extensions should be linked away + Assert.IsNull (typeof (NSObject).Assembly.GetType ("AVFoundation.AVMediaTypes"), "AVMediaTypes"); + Assert.IsNull (typeof (NSObject).Assembly.GetType ("AVFoundation.AVMediaTypesExtensions"), "AVMediaTypesExtensions"); + } } + + [Preserve (AllMembers = true)] + class SmartConsumer : NSObject + { + // The Smart Get/Set methods should not be linked away, and neither should the Smart enums + extensions + [Export ("getSmartEnumValue")] + [return: BindAs (typeof (SmartEnum), OriginalType = typeof (NSString))] + public SmartEnum GetSmartEnumValue () + { + return SmartEnum.Smart; + } + + [Export ("setSmartEnumValue:")] + public void SetSmartEnumValue ([BindAs (typeof (SmartEnum), OriginalType = typeof (NSString))] SmartEnum value) + { + } + } + + public enum SmartEnum : int + { + Smart = 0, + } + + public static class SmartEnumExtensions + { + public static NSString GetConstant (this SmartEnum self) + { + return (NSString) "Smart"; + } + + public static SmartEnum GetValue (NSString constant) + { + return SmartEnum.Smart; + } + } + } \ No newline at end of file diff --git a/tools/linker/MonoTouch.Tuner/PreserveSmartEnumConversionsSubStep.cs b/tools/linker/MonoTouch.Tuner/PreserveSmartEnumConversionsSubStep.cs new file mode 100644 index 0000000000..aef98062bf --- /dev/null +++ b/tools/linker/MonoTouch.Tuner/PreserveSmartEnumConversionsSubStep.cs @@ -0,0 +1,146 @@ +// Copyright 2017 Xamarin Inc. + +using System; +using System.Collections.Generic; + +using Mono.Cecil; +using Mono.Cecil.Cil; +using Mono.Linker; +using Mono.Tuner; +using MonoTouch.Tuner; + +namespace Xamarin.Linker.Steps +{ + public class PreserveSmartEnumConversionsSubStep : ExceptionalSubStep + { + Dictionary> cache; + protected override string Name { get; } = "Smart Enum Conversion Preserver"; + protected override int ErrorCode { get; } = 2100; + + public override SubStepTargets Targets { + get { + return SubStepTargets.Method | SubStepTargets.Property; + } + } + + public override bool IsActiveFor (AssemblyDefinition assembly) + { + // we need to process all assemblies, because the functions we want to + // preserve are not necessarily in the assembly we're processing. + return true; + } + + void Preserve (Tuple pair, MethodDefinition conditionA, MethodDefinition conditionB = null) + { + if (conditionA != null) { + context.Annotations.AddPreservedMethod (conditionA, pair.Item1); + context.Annotations.AddPreservedMethod (conditionA, pair.Item2); + } + if (conditionB != null) { + context.Annotations.AddPreservedMethod (conditionB, pair.Item1); + context.Annotations.AddPreservedMethod (conditionB, pair.Item2); + } + } + + void ProcessAttributeProvider (ICustomAttributeProvider provider, MethodDefinition conditionA, MethodDefinition conditionB = null) + { + if (provider?.HasCustomAttributes != true) + return; + + foreach (var ca in provider.CustomAttributes) { + var tr = ca.Constructor.DeclaringType; + + if (!tr.IsPlatformType ("ObjCRuntime", "BindAsAttribute")) + continue; + + if (ca.ConstructorArguments.Count != 1) { + Console.WriteLine ("WARNING"); + continue; + } + + var managedType = ca.ConstructorArguments [0].Value as TypeReference; + var managedEnumType = managedType?.GetElementType ().Resolve (); + if (managedEnumType == null) { + Console.WriteLine ("WARNING"); + continue; + } + + Tuple pair; + if (cache != null && cache.TryGetValue (managedEnumType, out pair)) { + Preserve (pair, conditionA, conditionB); + continue; + } + + Console.WriteLine (managedEnumType); + // Find the Extension type + TypeDefinition extensionType = null; + var extensionName = managedEnumType.Name + "Extensions"; + foreach (var type in managedEnumType.Module.Types) { + if (type.Namespace != managedEnumType.Namespace) + continue; + if (type.Name != extensionName) + continue; + extensionType = type; + break; + } + if (extensionType == null) { + Console.WriteLine ("WARNING"); + continue; + } + + // Find the GetConstant/GetValue methods + MethodDefinition getConstant = null; + MethodDefinition getValue = null; + + foreach (var method in extensionType.Methods) { + if (!method.IsStatic) + continue; + if (!method.HasParameters || method.Parameters.Count != 1) + continue; + if (method.Name == "GetConstant") { + if (!method.ReturnType.IsPlatformType ("Foundation", "NSString")) + continue; + if (method.Parameters [0].ParameterType != managedEnumType) + continue; + getConstant = method; + } else if (method.Name == "GetValue") { + if (!method.Parameters [0].ParameterType.IsPlatformType ("Foundation", "NSString")) + continue; + if (method.ReturnType != managedEnumType) + continue; + getValue = method; + } + } + if (getConstant == null || getValue == null) { + Console.WriteLine ("WARNING"); + continue; + } + + pair = new Tuple (getConstant, getValue); + if (cache == null) + cache = new Dictionary> (); + cache.Add (managedEnumType, pair); + Preserve (pair, conditionA, conditionB); + } + } + + protected override void Process (MethodDefinition method) + { + ProcessAttributeProvider (method, method); + ProcessAttributeProvider (method.MethodReturnType, method); + if (method.HasParameters) { + foreach (var p in method.Parameters) + ProcessAttributeProvider (p, method); + } + } + + protected override void Process (PropertyDefinition property) + { + ProcessAttributeProvider (property, property.GetMethod, property.SetMethod); + if (property.GetMethod != null) + Process (property.GetMethod); + if (property.SetMethod != null) + Process (property.SetMethod); + } + } +} diff --git a/tools/mmp/Makefile b/tools/mmp/Makefile index ffe6ac8093..594f1f9709 100644 --- a/tools/mmp/Makefile +++ b/tools/mmp/Makefile @@ -94,6 +94,7 @@ tuner_sources = \ ../linker/MonoTouch.Tuner/Extensions.cs \ ../linker/MonoTouch.Tuner/ListExportedSymbols.cs \ ../linker/MonoTouch.Tuner/ProcessExportedFields.cs \ + ../linker/MonoTouch.Tuner/PreserveSmartEnumConversionsSubStep.cs \ ../../src/build/mac/Constants.cs linker_resources = \ diff --git a/tools/mmp/mmp.csproj b/tools/mmp/mmp.csproj index 5638b23f9c..e8e0239ca9 100644 --- a/tools/mmp/mmp.csproj +++ b/tools/mmp/mmp.csproj @@ -265,6 +265,9 @@ MonoTouch.Tuner\ProcessExportedFields.cs + + MonoTouch.Tuner\PreserveSmartEnumConversionsSubStep.cs + external\Constants.cs diff --git a/tools/mtouch/Makefile b/tools/mtouch/Makefile index 5f7565d54b..86472ff2c3 100644 --- a/tools/mtouch/Makefile +++ b/tools/mtouch/Makefile @@ -71,6 +71,7 @@ LINKER_SOURCES = \ $(LINKER_DIR)/MonoTouch.Tuner/RemoveAttributes.cs \ $(LINKER_DIR)/MonoTouch.Tuner/RemoveCode.cs \ $(LINKER_DIR)/MonoTouch.Tuner/SealerSubStep.cs \ + $(LINKER_DIR)/MonoTouch.Tuner/PreserveSmartEnumConversionsSubStep.cs \ $(TOP)/tools/linker/ApplyPreserveAttribute.cs \ $(TOP)/tools/linker/BaseProfile.cs \ $(TOP)/tools/linker/CoreHttpMessageHandler.cs \ diff --git a/tools/mtouch/Tuning.cs b/tools/mtouch/Tuning.cs index 0686fd1c67..72b78729d9 100644 --- a/tools/mtouch/Tuning.cs +++ b/tools/mtouch/Tuning.cs @@ -157,6 +157,7 @@ namespace MonoTouch.Tuner { sub.Add (new PreserveSoapHttpClients ()); sub.Add (new CoreHttpMessageHandler (options)); sub.Add (new InlinerSubStep ()); + sub.Add (new PreserveSmartEnumConversionsSubStep ()); return sub; } diff --git a/tools/mtouch/mtouch.csproj b/tools/mtouch/mtouch.csproj index 62d0b69f75..312f775fec 100644 --- a/tools/mtouch/mtouch.csproj +++ b/tools/mtouch/mtouch.csproj @@ -335,6 +335,9 @@ MonoTouch.Tuner\InlinerSubStep.cs + + MonoTouch.Tuner\PreserveSmartEnumConversionsSubStep.cs + common\BuildTasks.cs From fcd760c73fa828784fe322c1fe9c543c969e9532 Mon Sep 17 00:00:00 2001 From: Rolf Bjarne Kvinge Date: Thu, 6 Jul 2017 12:56:32 +0200 Subject: [PATCH 041/145] [registrar] Make sure to include the required headers for the generated BindAs glue code. Since the native signature doesn't match the managed signature, we need to manually check the type of each conversion and make sure the required headers are included. --- tools/common/StaticRegistrar.cs | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/tools/common/StaticRegistrar.cs b/tools/common/StaticRegistrar.cs index e7415ab1ac..c308dd0ceb 100644 --- a/tools/common/StaticRegistrar.cs +++ b/tools/common/StaticRegistrar.cs @@ -3872,6 +3872,9 @@ namespace XamCore.Registrar { sb.AppendLine ($"{classVariableName} = {managedClassExpression};"); } + CheckNamespace (underlyingNativeType.Resolve (), exceptions); + CheckNamespace (underlyingManagedType.Resolve (), exceptions); + if (isManagedNullable || isManagedArray) sb.AppendLine ($"if ({inputName}) {{"); @@ -3945,6 +3948,9 @@ namespace XamCore.Registrar { sb.AppendLine ($"{classVariableName} = {managedClassExpression};"); } + CheckNamespace (underlyingNativeType.Resolve (), exceptions); + CheckNamespace (underlyingManagedType.Resolve (), exceptions); + if (isManagedNullable || isManagedArray) sb.AppendLine ($"if ({inputName}) {{"); From 2d12c1864531631a8c3b54600b4b3b870897bed0 Mon Sep 17 00:00:00 2001 From: Rolf Bjarne Kvinge Date: Thu, 6 Jul 2017 13:51:21 +0200 Subject: [PATCH 042/145] [tests] Restrict some tests to the required Xcode version. --- tests/test-libraries/testgenerator.cs | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/tests/test-libraries/testgenerator.cs b/tests/test-libraries/testgenerator.cs index 0b61979f58..c6a2e4c3b7 100644 --- a/tests/test-libraries/testgenerator.cs +++ b/tests/test-libraries/testgenerator.cs @@ -57,6 +57,7 @@ static class C { public string ManagedNewExpression; public string Map; public string MapFrom; + public Version MinXcodeVersion; } static BindAsData [] bindas_nsnumber = new [] { @@ -96,7 +97,7 @@ static class C { }; static BindAsData [] bindas_nsstring = new [] { - new BindAsData { Managed = "SecKeyAlgorithm", ManagedNewExpression = "SecKeyAlgorithm.RsaSignatureRaw" }, + new BindAsData { Managed = "SecKeyAlgorithm", ManagedNewExpression = "SecKeyAlgorithm.RsaSignatureRaw", MinXcodeVersion = new Version (8, 0) }, }; static string GetNativeName (char t) @@ -1238,6 +1239,10 @@ namespace MonoTouchFixtures.ObjCRuntime { w.AppendLine ("\t\t[Test]"); w.AppendLine ($"\t\tpublic void NSStringBindAs_{v.Managed}_Bindings ()"); w.AppendLine ("\t\t{"); + if (v.MinXcodeVersion != null) { + w.AppendLine ($"\t\t\tTestRuntime.AssertXcodeVersion ({v.MinXcodeVersion.Major}, {v.MinXcodeVersion.Minor});"); + w.AppendLine (); + } w.AppendLine ($"\t\t\tusing (var obj = new ObjCRegistrarTest ()) {{"); w.AppendLine ($"\t\t\t\tAssert.Throws (() => {{ Console.WriteLine (obj.PSmart{v.Managed}Property); }}, \"initial zero property\");"); w.AppendLine ($"\t\t\t\tAssert.Throws (() => {{ Console.WriteLine (obj.GetSmart{v.Managed}Value ()); }}, \"initial zero method\");"); @@ -1271,6 +1276,10 @@ namespace MonoTouchFixtures.ObjCRuntime { w.AppendLine ("\t\t[Test]"); w.AppendLine ($"\t\tpublic void NSStringBindAs_{v.Managed}_Overrides ()"); w.AppendLine ("\t\t{"); + if (v.MinXcodeVersion != null) { + w.AppendLine ($"\t\t\tTestRuntime.AssertXcodeVersion ({v.MinXcodeVersion.Major}, {v.MinXcodeVersion.Minor});"); + w.AppendLine (); + } w.AppendLine ($"\t\t\tusing (var obj = new BindAsTestClassGenerated ()) {{"); w.AppendLine ($"\t\t\t\tAssert.Throws (() => {{ Console.WriteLine (obj.PSmart{v.Managed}Property); }}, \"initial null\");"); w.AppendLine ($"\t\t\t\tMessaging.void_objc_msgSend_IntPtr (obj.Handle, Selector.GetHandle (\"setSmartNullable{v.Managed}Value:\"), IntPtr.Zero);"); @@ -1316,6 +1325,10 @@ namespace MonoTouchFixtures.ObjCRuntime { w.AppendLine ("\t\t[Test]"); w.AppendLine ($"\t\tpublic void NSStringBindAs_{v.Managed}Array_Bindings ()"); w.AppendLine ("\t\t{"); + if (v.MinXcodeVersion != null) { + w.AppendLine ($"\t\t\tTestRuntime.AssertXcodeVersion ({v.MinXcodeVersion.Major}, {v.MinXcodeVersion.Minor});"); + w.AppendLine (); + } w.AppendLine ($"\t\t\tusing (var obj = new ObjCRegistrarTest ()) {{"); w.AppendLine ($"\t\t\t\tAssert.IsNull (obj.PSmart{v.Managed}Properties, \"initial null property\");"); w.AppendLine ($"\t\t\t\tAssert.IsNull (obj.GetSmart{v.Managed}Values (), \"initial null method\");"); @@ -1347,6 +1360,10 @@ namespace MonoTouchFixtures.ObjCRuntime { w.AppendLine ("\t\t[Test]"); w.AppendLine ($"\t\tpublic void NSStringBindAs_{v.Managed}_Array_Overrides ()"); w.AppendLine ("\t\t{"); + if (v.MinXcodeVersion != null) { + w.AppendLine ($"\t\t\tTestRuntime.AssertXcodeVersion ({v.MinXcodeVersion.Major}, {v.MinXcodeVersion.Minor});"); + w.AppendLine (); + } w.AppendLine ($"\t\t\tusing (var obj = new BindAsTestClassGenerated ()) {{"); w.AppendLine ($"\t\t\t\tAssert.IsNull (obj.PSmart{v.Managed}Properties, \"initial null\");"); w.AppendLine ($"\t\t\t\tMessaging.void_objc_msgSend_IntPtr (obj.Handle, Selector.GetHandle (\"setSmart{v.Managed}Values:\"), IntPtr.Zero);"); From 7816a686e8efff891b1a9e7a09366a759d93761e Mon Sep 17 00:00:00 2001 From: Rolf Bjarne Kvinge Date: Thu, 6 Jul 2017 17:25:01 +0200 Subject: [PATCH 043/145] [registrar] Add support for BindAs conversion between NSNumber and enums. --- runtime/exports.t4 | 4 ++++ runtime/trampolines.m | 2 ++ src/ObjCRuntime/Registrar.cs | 2 +- tests/test-libraries/testgenerator.cs | 17 ++++++++++------- tools/common/StaticRegistrar.cs | 4 ++++ 5 files changed, 21 insertions(+), 8 deletions(-) diff --git a/runtime/exports.t4 b/runtime/exports.t4 index 005a030fd7..43d15a7d34 100644 --- a/runtime/exports.t4 +++ b/runtime/exports.t4 @@ -68,6 +68,10 @@ "MonoClass *", "klass" ), + new Export ("MonoType *", "mono_class_enum_basetype", + "MonoClass *", "klass" + ), + new Export ("int32_t", "mono_class_value_size", "MonoClass *", "klass", "uint32_t *", "align" diff --git a/runtime/trampolines.m b/runtime/trampolines.m index 52dd448da3..917e85566f 100644 --- a/runtime/trampolines.m +++ b/runtime/trampolines.m @@ -957,6 +957,8 @@ xamarin_get_nsnumber_converter (MonoClass *managedType, MonoMethod *method, bool func = to_managed ? (void *) xamarin_nsnumber_to_nuint : (void *) xamarin_nuint_to_nsnumber; } else if (!strcmp (fullname, "System.nfloat")) { func = to_managed ? (void *) xamarin_nsnumber_to_nfloat : (void *) xamarin_nfloat_to_nsnumber; + } else if (mono_class_is_enum (managedType)) { + func = xamarin_get_nsnumber_converter (mono_class_from_mono_type (mono_class_enum_basetype (managedType)), method, to_managed, exception_gchandle); } else { *exception_gchandle = xamarin_create_bindas_exception (mono_class_get_type (managedType), mono_class_get_type (xamarin_get_nsnumber_class ()), method); goto exception_handling; diff --git a/src/ObjCRuntime/Registrar.cs b/src/ObjCRuntime/Registrar.cs index dcb107b5f6..eb58f614f9 100644 --- a/src/ObjCRuntime/Registrar.cs +++ b/src/ObjCRuntime/Registrar.cs @@ -657,7 +657,7 @@ namespace XamCore.Registrar { case "System.Boolean": return true; default: - return false; + return Registrar.IsEnum (underlyingOutputType); } } else if (Registrar.Is (underlyingInputType, Foundation, "NSValue")) { // Remove 'MonoMac.' namespace prefix to make switch smaller diff --git a/tests/test-libraries/testgenerator.cs b/tests/test-libraries/testgenerator.cs index c6a2e4c3b7..47c6a27402 100644 --- a/tests/test-libraries/testgenerator.cs +++ b/tests/test-libraries/testgenerator.cs @@ -58,6 +58,8 @@ static class C { public string Map; public string MapFrom; public Version MinXcodeVersion; + public string ToNSNumberCastExpression; + public string FromNSNumberCastExpression; } static BindAsData [] bindas_nsnumber = new [] { @@ -75,6 +77,7 @@ static class C { new BindAsData { Managed = "nuint", Native = "NSUInteger", ManagedNewExpression = "((nuint) 1)", Map = ".NUIntValue" }, new BindAsData { Managed = "nfloat", Native = "NSFloat", ManagedNewExpression = "((nfloat) 1)", Map = ".NFloatValue" }, new BindAsData { Managed = "Boolean", Native = "BOOL", ManagedNewExpression = "true", Map = ".BoolValue" }, + new BindAsData { Managed = "NSStreamStatus", Native = "NSStreamStatus", ManagedNewExpression = "NSStreamStatus.Closed", Map = ".UInt64Value", ToNSNumberCastExpression = "(ulong) ", FromNSNumberCastExpression = "(NSStreamStatus) " }, }; static BindAsData[] bindas_nsvalue = new [] { new BindAsData { Managed = "CGAffineTransform", Native = "CGAffineTransform", ManagedNewExpression = "new CGAffineTransform (1, 2, 3, 4, 5, 6)", Map = ".CGAffineTransformValue", MapFrom = "FromCGAffineTransform" }, @@ -956,13 +959,13 @@ namespace MonoTouchFixtures.ObjCRuntime { w.AppendLine (); w.AppendLine ($"\t\t\t\tvar value = {v.ManagedNewExpression};"); - w.AppendLine ($"\t\t\t\tusing (var input = new NSNumber (value))"); + w.AppendLine ($"\t\t\t\tusing (var input = new NSNumber ({v.ToNSNumberCastExpression}value))"); w.AppendLine ($"\t\t\t\t\tMessaging.void_objc_msgSend_IntPtr (obj.Handle, Selector.GetHandle (\"set{v.Managed}NumberNullable:\"), input.Handle);"); w.AppendLine ($"\t\t\t\tAssert.AreEqual (value, obj.{v.Managed}Number, \"after setting A\");"); w.AppendLine (); w.AppendLine ($"\t\t\t\tobj.{v.Managed}Number = null;"); - w.AppendLine ($"\t\t\t\tusing (var input = new NSNumber (value))"); + w.AppendLine ($"\t\t\t\tusing (var input = new NSNumber ({v.ToNSNumberCastExpression}value))"); w.AppendLine ($"\t\t\t\t\tMessaging.void_objc_msgSend_IntPtr (obj.Handle, Selector.GetHandle (\"set{v.Managed}NumberNonNullable:\"), input.Handle);"); w.AppendLine ($"\t\t\t\tAssert.AreEqual (value, obj.{v.Managed}Number.Value, \"after setting B\");"); w.AppendLine (); @@ -975,13 +978,13 @@ namespace MonoTouchFixtures.ObjCRuntime { w.AppendLine ($"\t\t\t\tvalue = {v.ManagedNewExpression};"); w.AppendLine ($"\t\t\t\tobj.{v.Managed}Number = value;"); w.AppendLine ($"\t\t\t\tnumber = Runtime.GetNSObject (Messaging.IntPtr_objc_msgSend (obj.Handle, Selector.GetHandle (\"get{v.Managed}NumberNullable\")));"); - w.AppendLine ($"\t\t\t\tAssert.AreEqual (value, number{v.Map}, \"getter B\");"); + w.AppendLine ($"\t\t\t\tAssert.AreEqual (value, {v.FromNSNumberCastExpression}number{v.Map}, \"getter B\");"); w.AppendLine (); w.AppendLine ($"\t\t\t\tvalue = {v.ManagedNewExpression};"); w.AppendLine ($"\t\t\t\tobj.{v.Managed}Number = value;"); w.AppendLine ($"\t\t\t\tnumber = Runtime.GetNSObject (Messaging.IntPtr_objc_msgSend (obj.Handle, Selector.GetHandle (\"get{v.Managed}NumberNonNullable\")));"); - w.AppendLine ($"\t\t\t\tAssert.AreEqual (value, number{v.Map}, \"getter C\");"); + w.AppendLine ($"\t\t\t\tAssert.AreEqual (value, {v.FromNSNumberCastExpression}number{v.Map}, \"getter C\");"); w.AppendLine ($"\t\t\t}}"); w.AppendLine ("\t\t}"); @@ -1032,14 +1035,14 @@ namespace MonoTouchFixtures.ObjCRuntime { w.AppendLine (); w.AppendLine ($"\t\t\t\tvar value = new {v.Managed} [] {{ {v.ManagedNewExpression} }};"); - w.AppendLine ($"\t\t\t\tusing (var input = NSArray.FromNSObjects<{v.Managed}> ((v) => new NSNumber (v), value))"); + w.AppendLine ($"\t\t\t\tusing (var input = NSArray.FromNSObjects<{v.Managed}> ((v) => new NSNumber ({v.ToNSNumberCastExpression}v), value))"); w.AppendLine ($"\t\t\t\t\tMessaging.void_objc_msgSend_IntPtr (obj.Handle, Selector.GetHandle (\"set{v.Managed}Array:\"), input.Handle);"); w.AppendLine ($"\t\t\t\tAssert.AreEqual (value.Length, obj.{v.Managed}Array.Length, \"after setting A\");"); w.AppendLine ($"\t\t\t\tAssert.AreEqual (value [0], obj.{v.Managed}Array [0], \"after setting A element\");"); w.AppendLine (); w.AppendLine ($"\t\t\t\tobj.{v.Managed}Array = null;"); - w.AppendLine ($"\t\t\t\tusing (var input = NSArray.FromNSObjects<{v.Managed}> ((v) => new NSNumber (v), value))"); + w.AppendLine ($"\t\t\t\tusing (var input = NSArray.FromNSObjects<{v.Managed}> ((v) => new NSNumber ({v.ToNSNumberCastExpression}v), value))"); w.AppendLine ($"\t\t\t\t\tMessaging.void_objc_msgSend_IntPtr (obj.Handle, Selector.GetHandle (\"set{v.Managed}Array:\"), input.Handle);"); w.AppendLine ($"\t\t\t\tAssert.AreEqual (value.Length, obj.{v.Managed}Array.Length, \"after setting B\");"); w.AppendLine ($"\t\t\t\tAssert.AreEqual (value [0], obj.{v.Managed}Array [0], \"after setting B element\");"); @@ -1054,7 +1057,7 @@ namespace MonoTouchFixtures.ObjCRuntime { w.AppendLine ($"\t\t\t\tobj.{v.Managed}Array = value;"); w.AppendLine ($"\t\t\t\tarray = Runtime.GetNSObject (Messaging.IntPtr_objc_msgSend (obj.Handle, Selector.GetHandle (\"get{v.Managed}Array\")));"); w.AppendLine ($"\t\t\t\tAssert.AreEqual (value.Length, array.Count, \"getter B\");"); - w.AppendLine ($"\t\t\t\tAssert.AreEqual (value [0], array.GetItem (0){v.Map}, \"getter B element\");"); + w.AppendLine ($"\t\t\t\tAssert.AreEqual (value [0], {v.FromNSNumberCastExpression}array.GetItem (0){v.Map}, \"getter B element\");"); w.AppendLine (); w.AppendLine ($"\t\t\t}}"); diff --git a/tools/common/StaticRegistrar.cs b/tools/common/StaticRegistrar.cs index c308dd0ceb..d97cea876d 100644 --- a/tools/common/StaticRegistrar.cs +++ b/tools/common/StaticRegistrar.cs @@ -3734,6 +3734,8 @@ namespace XamCore.Registrar { case "System.nfloat": return "xamarin_nfloat_to_nsnumber"; case "System.Boolean": return "xamarin_bool_to_nsnumber"; default: + if (IsEnum (managedType)) + return GetManagedToNSNumberFunc (GetEnumUnderlyingType (managedType), inputType, outputType, descriptiveMethodName); throw ErrorHelper.CreateError (99, $"Internal error: can't convert from '{inputType.FullName}' to '{outputType.FullName}' in {descriptiveMethodName}. Please file a bug report with a test case (https://bugzilla.xamarin.com)."); } } @@ -3757,6 +3759,8 @@ namespace XamCore.Registrar { case "System.nfloat": nativeType = "CGFloat"; return "xamarin_nsnumber_to_nfloat"; case "System.Boolean": nativeType = "BOOL"; return "xamarin_nsnumber_to_bool"; default: + if (IsEnum (managedType)) + return GetNSNumberToManagedFunc (GetEnumUnderlyingType (managedType), inputType, outputType, descriptiveMethodName, out nativeType); throw ErrorHelper.CreateError (99, $"Internal error: can't convert from '{inputType.FullName}' to '{outputType.FullName}' in {descriptiveMethodName}. Please file a bug report with a test case (https://bugzilla.xamarin.com)."); } } From 1702359b21e239e5ab9357ff01b991b37d5ed050 Mon Sep 17 00:00:00 2001 From: Rolf Bjarne Kvinge Date: Fri, 7 Jul 2017 12:27:13 +0200 Subject: [PATCH 044/145] [registrar] Verify if the BindAs type matches the type in the method signature. --- src/ObjCRuntime/Registrar.cs | 25 +++++++++++++++-- tests/mtouch/RegistrarTest.cs | 48 +++++++++++++++++++++++++++++++++ tools/common/StaticRegistrar.cs | 6 ++--- 3 files changed, 74 insertions(+), 5 deletions(-) diff --git a/src/ObjCRuntime/Registrar.cs b/src/ObjCRuntime/Registrar.cs index eb58f614f9..188027a3f5 100644 --- a/src/ObjCRuntime/Registrar.cs +++ b/src/ObjCRuntime/Registrar.cs @@ -1077,13 +1077,34 @@ namespace XamCore.Registrar { public BindAsAttribute GetBindAsAttribute (ObjCMethod method, int parameter_index) { var attrib = GetBindAsAttribute (method.Method, parameter_index); - if (attrib != null) + if (attrib != null) { + var type = parameter_index == -1 ? GetReturnType (method.Method) : GetParameters (method.Method) [parameter_index]; + if (parameter_index == -1) { + var returnType = GetReturnType (method.Method); + if (!AreEqual (returnType, attrib.Type)) + throw CreateException (4171, method.Method, $"The BindAs attribute on the return value of the method {method.DescriptiveMethodName} is invalid: the BindAs type {GetTypeFullName (attrib.Type)} is different from the return type {GetTypeFullName (returnType)}."); + } else { + var parameterType = GetParameters (method.Method) [parameter_index]; + if (IsByRef (parameterType)) + parameterType = GetElementType (parameterType); + if (!AreEqual (parameterType, attrib.Type)) + throw CreateException (4171, method.Method, $"The BindAs attribute on the parameter #{parameter_index + 1} is invalid: the BindAs type {GetTypeFullName (attrib.Type)} is different from the parameter type {GetTypeFullName (parameterType)}."); + } + return attrib; + } if (!method.IsPropertyAccessor) return null; - return GetBindAsAttribute (FindProperty (method.DeclaringType.Type, method.MethodName.Substring (4))); + var property = FindProperty (method.DeclaringType.Type, method.MethodName.Substring (4)); + attrib = GetBindAsAttribute (property); + if (attrib != null) { + var propertyType = GetPropertyType (property); + if (!AreEqual (propertyType, attrib.Type)) + throw CreateException (4171, property, $"The BindAs attribute on the property {GetTypeFullName (method.DeclaringType.Type)}.{GetPropertyName (property)} is invalid: the BindAs type {GetTypeFullName (attrib.Type)} is different from the property type {GetTypeFullName (propertyType)}."); + } + return attrib; } bool IsSmartEnum (TType type) diff --git a/tests/mtouch/RegistrarTest.cs b/tests/mtouch/RegistrarTest.cs index 16e30ac710..d7dfc91ef3 100644 --- a/tests/mtouch/RegistrarTest.cs +++ b/tests/mtouch/RegistrarTest.cs @@ -758,6 +758,54 @@ class X : ReplayKit.RPBroadcastControllerDelegate } } + [Test] + public void MT4171 () + { + using (var mtouch = new MTouchTool ()) { + var code = @" + namespace NS { + using System; + using Foundation; + using ObjCRuntime; + class X : NSObject { + [Export (""a:"")] + void A ([BindAs (typeof (DateTime), OriginalType = typeof (NSNumber))] ConsoleColor value) {} + + [Export (""b:"")] + void B ([BindAs (typeof (DateTime?), OriginalType = typeof (NSNumber))] ConsoleColor? value) {} + + [Export (""C"")] + [return: BindAs (typeof (DateTime), OriginalType = typeof (NSNumber))] + ConsoleColor C () { throw new NotImplementedException (); } + + [Export (""d"")] + [return: BindAs (typeof (DateTime?), OriginalType = typeof (NSNumber))] + ConsoleColor? D () { throw new NotImplementedException (); } + + [Export (""E"")] + [BindAs (typeof (DateTime), OriginalType = typeof (NSNumber))] + ConsoleColor E { get; set; } + + [Export (""F"")] + [BindAs (typeof (DateTime?), OriginalType = typeof (NSNumber))] + ConsoleColor? F { get; set; } + } + }"; + mtouch.Linker = MTouchLinker.DontLink; // faster + mtouch.Registrar = MTouchRegistrar.Static; + mtouch.CreateTemporaryApp (extraCode: code, extraArg: "-debug"); + mtouch.CreateTemporaryCacheDirectory (); + mtouch.AssertExecuteFailure (MTouchAction.BuildSim, "build"); + mtouch.AssertError (4138, "The registrar cannot marshal the property type 'System.ConsoleColor' of the property 'NS.X.E'.", "testApp.cs", 23); + mtouch.AssertError (4138, "The registrar cannot marshal the property type 'System.Nullable`1' of the property 'NS.X.F'.", "testApp.cs", 27); + mtouch.AssertError (4171, "The BindAs attribute on the parameter #1 is invalid: the BindAs type System.DateTime is different from the parameter type System.ConsoleColor.", "testApp.cs", 8); + mtouch.AssertError (4171, "The BindAs attribute on the parameter #1 is invalid: the BindAs type System.Nullable`1 is different from the parameter type System.Nullable`1.", "testApp.cs", 11); + mtouch.AssertError (4171, "The BindAs attribute on the return value of the method NS.X.C is invalid: the BindAs type System.DateTime is different from the return type System.ConsoleColor.", "testApp.cs", 15); + mtouch.AssertError (4171, "The BindAs attribute on the return value of the method NS.X.D is invalid: the BindAs type System.Nullable`1 is different from the return type System.Nullable`1.", "testApp.cs", 19); + mtouch.AssertErrorCount (8 /* 2 errors are duplicated */); + } + } + [Test] public void MT4172 () { diff --git a/tools/common/StaticRegistrar.cs b/tools/common/StaticRegistrar.cs index d97cea876d..9abd7d5894 100644 --- a/tools/common/StaticRegistrar.cs +++ b/tools/common/StaticRegistrar.cs @@ -1590,7 +1590,7 @@ namespace XamCore.Registrar { switch (attrib.ConstructorArguments.Count) { case 1: var t1 = (TypeReference) attrib.ConstructorArguments [0].Value; - return new BindAsAttribute (t1 != null ? t1.Resolve () : null) { OriginalType = originalType }; + return new BindAsAttribute (t1) { OriginalType = originalType }; default: throw ErrorHelper.CreateError (4124, "Invalid BindAsAttribute found on '{0}.{1}'. Please file a bug report at https://bugzilla.xamarin.com", member.DeclaringType.FullName, member.Name); } @@ -4291,12 +4291,12 @@ namespace XamCore.Registrar { class BindAsAttribute : Attribute { - public BindAsAttribute (TypeDefinition type) + public BindAsAttribute (TypeReference type) { this.Type = type; } - public TypeDefinition Type { get; set; } + public TypeReference Type { get; set; } public TypeReference OriginalType { get; set; } } From e540eb7cac570d4b9dbfd56a60ea0ee73b28b567 Mon Sep 17 00:00:00 2001 From: Rolf Bjarne Kvinge Date: Fri, 7 Jul 2017 12:28:53 +0200 Subject: [PATCH 045/145] [tests] Update tests since BindAs supports conversions between enums and NSNumber. --- tests/mtouch/RegistrarTest.cs | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/tests/mtouch/RegistrarTest.cs b/tests/mtouch/RegistrarTest.cs index d7dfc91ef3..4dc7f44af9 100644 --- a/tests/mtouch/RegistrarTest.cs +++ b/tests/mtouch/RegistrarTest.cs @@ -741,19 +741,20 @@ class X : ReplayKit.RPBroadcastControllerDelegate using ObjCRuntime; class X : NSObject { [Export (""a"")] - [return: BindAs (typeof (ConsoleColor), OriginalType = typeof (NSNumber))] - ConsoleColor A () { throw new NotImplementedException (); } + [return: BindAs (typeof (DateTime), OriginalType = typeof (NSNumber))] + DateTime A () { throw new NotImplementedException (); } [Export (""b"")] - [return: BindAs (typeof (ConsoleColor?), OriginalType = typeof (NSNumber))] - ConsoleColor? B () { throw new NotImplementedException (); } + [return: BindAs (typeof (DateTime?), OriginalType = typeof (NSNumber))] + DateTime? B () { throw new NotImplementedException (); } } }"; mtouch.Linker = MTouchLinker.DontLink; // faster mtouch.Registrar = MTouchRegistrar.Static; mtouch.CreateTemporaryApp (extraCode: code, extraArg: "-debug"); + mtouch.CreateTemporaryCacheDirectory (); mtouch.AssertExecuteFailure (MTouchAction.BuildSim, "build"); - mtouch.AssertError (4170, "The registrar can't convert from 'System.ConsoleColor' to 'Foundation.NSNumber' for the return value in the method NS.X.A.", "testApp.cs", 9); - mtouch.AssertError (4170, "The registrar can't convert from 'System.Nullable`1' to 'Foundation.NSNumber' for the return value in the method NS.X.B.", "testApp.cs", 12); + mtouch.AssertError (4170, "The registrar can't convert from 'System.DateTime' to 'Foundation.NSNumber' for the return value in the method NS.X.A.", "testApp.cs", 9); + mtouch.AssertError (4170, "The registrar can't convert from 'System.Nullable`1' to 'Foundation.NSNumber' for the return value in the method NS.X.B.", "testApp.cs", 12); mtouch.AssertErrorCount (4 /* errors are duplicated */); } } @@ -817,9 +818,9 @@ class X : ReplayKit.RPBroadcastControllerDelegate using ObjCRuntime; class X : NSObject { [Export (""a:"")] - void A ([BindAs (typeof (ConsoleColor), OriginalType = typeof (NSNumber))] ConsoleColor value) {} + void A ([BindAs (typeof (DateTime), OriginalType = typeof (NSNumber))] DateTime value) {} [Export (""b:"")] - void B ([BindAs (typeof (ConsoleColor?), OriginalType = typeof (NSNumber))] ConsoleColor? value) {} + void B ([BindAs (typeof (DateTime?), OriginalType = typeof (NSNumber))] DateTime? value) {} [Export (""d:"")] void D ([BindAs (typeof (int?[]), OriginalType = typeof (NSNumber[]))] int?[] value) {} [Export (""e:"")] @@ -845,8 +846,8 @@ class X : ReplayKit.RPBroadcastControllerDelegate mtouch.Registrar = MTouchRegistrar.Static; mtouch.CreateTemporaryApp (extraCode: code, extraArg: "-debug"); mtouch.AssertExecuteFailure (MTouchAction.BuildSim, "build"); - mtouch.AssertError (4172, "The registrar can't convert from 'System.ConsoleColor' to 'Foundation.NSNumber' for the parameter 'value' in the method NS.X.A.", "testApp.cs", 8); - mtouch.AssertError (4172, "The registrar can't convert from 'System.Nullable`1' to 'Foundation.NSNumber' for the parameter 'value' in the method NS.X.B.", "testApp.cs", 10); + mtouch.AssertError (4172, "The registrar can't convert from 'System.DateTime' to 'Foundation.NSNumber' for the parameter 'value' in the method NS.X.A.", "testApp.cs", 8); + mtouch.AssertError (4172, "The registrar can't convert from 'System.Nullable`1' to 'Foundation.NSNumber' for the parameter 'value' in the method NS.X.B.", "testApp.cs", 10); mtouch.AssertError (4172, "The registrar can't convert from 'System.Nullable`1[]' to 'Foundation.NSNumber[]' for the parameter 'value' in the method NS.X.D.", "testApp.cs", 12); mtouch.AssertError (4172, "The registrar can't convert from 'System.Int32&' to 'Foundation.NSNumber' for the parameter 'value' in the method NS.X.E.", "testApp.cs", 14); mtouch.AssertError (4172, "The registrar can't convert from 'System.Int32&' to 'Foundation.NSNumber' for the parameter 'value' in the method NS.X.F.", "testApp.cs", 16); From f795fc9b4a3cee847768806395f626eedb828b11 Mon Sep 17 00:00:00 2001 From: Rolf Bjarne Kvinge Date: Fri, 7 Jul 2017 17:13:14 +0200 Subject: [PATCH 046/145] [docs] Add MT4171, and describe MT4172/4170. --- docs/website/mtouch-errors.md | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/docs/website/mtouch-errors.md b/docs/website/mtouch-errors.md index a95f0b5954..d4012e3590 100644 --- a/docs/website/mtouch-errors.md +++ b/docs/website/mtouch-errors.md @@ -1550,8 +1550,27 @@ Please check the reported error message for the underlying cause. ### MT4170: The registrar can't convert from '{managed type}' to '{native type}' for the return value in the method {method}. +See the description of error MT4172. + +### MT4171: The BindAs attribute on the member {member} is invalid: the BindAs type {type} is different from the property type {type}. + +Please make sure the type in the BindAs attribute matches the type of the member it's attached to. + ### MT4172: The registrar can't convert from '{native type}' to '{managed type}' for the parameter '{parameter name}' in the method {method}. +The registrar does not support converting between the mentioned types. + +This is a bug in Xamarin.iOS if the API in question is provided by Xamarin.iOS; +please file a bug at [http://bugzilla.xamarin.com][1]. + +If you run into this while developing a binding project for a native library, +we're open to adding support for new combinations of types. If this is the +case, please file an enhancement request ([http://bugzilla.xamarin.com][2]) +with a test case and we'll evaluate it. + +[1]: https://bugzilla.xamarin.com/enter_bug.cgi?product=iOS +[2]: https://bugzilla.xamarin.com/enter_bug.cgi?product=iOS&component=General&bug_severity=enhancement + # MT5xxx: GCC and toolchain error messages ### MT51xx: Compilation From 516232c79c1b25092c7d3ae05e8f80a9f751f531 Mon Sep 17 00:00:00 2001 From: Rolf Bjarne Kvinge Date: Tue, 11 Jul 2017 09:48:56 +0200 Subject: [PATCH 047/145] [runtime] Optimize code that doesn't need an alloc/free pair. --- runtime/trampolines.m | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/runtime/trampolines.m b/runtime/trampolines.m index 917e85566f..3bfdfe068f 100644 --- a/runtime/trampolines.m +++ b/runtime/trampolines.m @@ -980,11 +980,8 @@ xamarin_get_nsvalue_converter (MonoClass *managedType, MonoMethod *method, bool goto exception_handling; #if MONOMAC - if (xamarin_use_new_assemblies && !strncmp (fullname, "MonoMac.", 8)) { - char *tmp_to_name = xamarin_strdup_printf ("%s", fullname + 8); - xamarin_free (fullname); - fullname = tmp_to_name; - } + if (xamarin_use_new_assemblies && !strncmp (fullname, "MonoMac.", 8)) + memmove (fullname, fullname + 8, strlen (fullname) - 7 /* also copy the null char */); #endif if (!strcmp (fullname, "Foundation.NSRange")) { From e040f0603af5e1227da62b116980076ca494b95f Mon Sep 17 00:00:00 2001 From: Rolf Bjarne Kvinge Date: Tue, 11 Jul 2017 09:49:26 +0200 Subject: [PATCH 048/145] [linker] Fix debug spew to be proper warnings. --- src/ObjCRuntime/ErrorHelper.cs | 89 ++++++++++++++++--- .../PreserveSmartEnumConversionsSubStep.cs | 26 ++++-- 2 files changed, 96 insertions(+), 19 deletions(-) diff --git a/src/ObjCRuntime/ErrorHelper.cs b/src/ObjCRuntime/ErrorHelper.cs index f6703f5aa1..b9ea1ebfd1 100644 --- a/src/ObjCRuntime/ErrorHelper.cs +++ b/src/ObjCRuntime/ErrorHelper.cs @@ -118,6 +118,77 @@ namespace XamCore.ObjCRuntime { } public static ProductException CreateError (Application app, int code, Mono.Cecil.MemberReference member, string message, params object[] args) + { + return Create (app, code, true, null, member, message, args); + } + + public static ProductException CreateError (Application app, int code, Mono.Cecil.MethodDefinition location, string message, params object[] args) + { + return Create (app, code, true, null, location, message, args); + } + + public static ProductException CreateError (Application app, int code, Mono.Cecil.ICustomAttributeProvider provider, string message, params object [] args) + { + return Create (app, code, true, null, provider, message, args); + } + + public static ProductException CreateError (Application app, int code, Exception innerException, Mono.Cecil.MethodDefinition location, string message, params object[] args) + { + return Create (app, code, true, innerException, location, message, args); + } + + public static ProductException CreateError (Application app, int code, Exception innerException, Mono.Cecil.TypeReference location, string message, params object[] args) + { + return Create (app, code, true, innerException, location, message, args); + } + + public static ProductException CreateError (Application app, int code, Exception innerException, Mono.Cecil.ICustomAttributeProvider provider, string message, params object [] args) + { + return Create (app, code, true, innerException, provider, message, args); + } + + public static ProductException CreateWarning (Application app, int code, Mono.Cecil.MemberReference member, string message, params object [] args) + { + return Create (app, code, false, null, member, message, args); + } + + public static ProductException CreateWarning (Application app, int code, Mono.Cecil.MethodDefinition location, string message, params object[] args) + { + return Create (app, code, false, null, location, message, args); + } + + public static ProductException CreateWarning (Application app, int code, Mono.Cecil.ICustomAttributeProvider provider, string message, params object [] args) + { + return Create (app, code, false, null, provider, message, args); + } + + public static ProductException CreateWarning (Application app, int code, Exception innerException, Mono.Cecil.MethodDefinition location, string message, params object[] args) + { + return Create (app, code, false, innerException, location, message, args); + } + + public static ProductException CreateWarning (Application app, int code, Exception innerException, Mono.Cecil.TypeReference location, string message, params object[] args) + { + return Create (app, code, false, innerException, location, message, args); + } + + public static ProductException CreateWarning (Application app, int code, Exception innerException, Mono.Cecil.ICustomAttributeProvider provider, string message, params object [] args) + { + return Create (app, code, false, innerException, provider, message, args); + } + + public static ProductException Create (Application app, int code, bool error, Exception innerException, Mono.Cecil.ICustomAttributeProvider provider, string message, params object [] args) + { + if (provider is Mono.Cecil.MemberReference member) + return Create (app, code, error, innerException, member, message, args); + + if (provider is Mono.Cecil.TypeReference type) + return Create (app, code, error, innerException, type, message, args); + + return new ProductException (code, error, innerException, message, args); + } + + public static ProductException Create (Application app, int code, bool error, Exception innerException, Mono.Cecil.MemberReference member, string message, params object [] args) { Mono.Cecil.MethodReference method = member as Mono.Cecil.MethodReference; if (method == null) { @@ -128,28 +199,20 @@ namespace XamCore.ObjCRuntime { method = property.SetMethod; } } - return CreateError (app, code, method == null ? null : method.Resolve (), message, args); + return Create (app, code, error, innerException, method == null ? null : method.Resolve (), message, args); } - public static ProductException CreateError (Application app, int code, Mono.Cecil.MethodDefinition location, string message, params object[] args) + public static ProductException Create (Application app, int code, bool error, Exception innerException, Mono.Cecil.MethodDefinition location, string message, params object [] args) { - var e = new ProductException (code, true, message, args); + var e = new ProductException (code, error, innerException, message, args); if (location != null) SetLocation (app, e, location); return e; } - public static ProductException CreateError (Application app, int code, Exception innerException, Mono.Cecil.MethodDefinition location, string message, params object[] args) + public static ProductException Create (Application app, int code, bool error, Exception innerException, Mono.Cecil.TypeReference location, string message, params object [] args) { - var e = new ProductException (code, true, innerException, message, args); - if (location != null) - SetLocation (app, e, location); - return e; - } - - public static ProductException CreateError (Application app, int code, Exception innerException, Mono.Cecil.TypeReference location, string message, params object[] args) - { - var e = new ProductException (code, true, innerException, message, args); + var e = new ProductException (code, error, innerException, message, args); if (location != null) { var td = location.Resolve (); diff --git a/tools/linker/MonoTouch.Tuner/PreserveSmartEnumConversionsSubStep.cs b/tools/linker/MonoTouch.Tuner/PreserveSmartEnumConversionsSubStep.cs index aef98062bf..328c7cbb25 100644 --- a/tools/linker/MonoTouch.Tuner/PreserveSmartEnumConversionsSubStep.cs +++ b/tools/linker/MonoTouch.Tuner/PreserveSmartEnumConversionsSubStep.cs @@ -9,6 +9,8 @@ using Mono.Linker; using Mono.Tuner; using MonoTouch.Tuner; +using Xamarin.Bundler; + namespace Xamarin.Linker.Steps { public class PreserveSmartEnumConversionsSubStep : ExceptionalSubStep @@ -42,6 +44,13 @@ namespace Xamarin.Linker.Steps } } + static string ProviderToString (ICustomAttributeProvider provider) + { + if (provider is MemberReference member) + return member.DeclaringType.FullName + "." + member.Name; + return provider.ToString (); + } + void ProcessAttributeProvider (ICustomAttributeProvider provider, MethodDefinition conditionA, MethodDefinition conditionB = null) { if (provider?.HasCustomAttributes != true) @@ -54,14 +63,14 @@ namespace Xamarin.Linker.Steps continue; if (ca.ConstructorArguments.Count != 1) { - Console.WriteLine ("WARNING"); + ErrorHelper.Show (ErrorHelper.CreateWarning (LinkContext.Target.App, 4124, provider, "Invalid BindAsAttribute found on '{0}': should have 1 constructor arguments, found {1}. Please file a bug report at https://bugzilla.xamarin.com", ProviderToString (provider), ca.ConstructorArguments.Count)); continue; } var managedType = ca.ConstructorArguments [0].Value as TypeReference; var managedEnumType = managedType?.GetElementType ().Resolve (); if (managedEnumType == null) { - Console.WriteLine ("WARNING"); + ErrorHelper.Show (ErrorHelper.CreateWarning (LinkContext.Target.App, 4124, provider, "Invalid BindAsAttribute found on '{0}': could not find the underlying enum type of {1}. Please file a bug report at https://bugzilla.xamarin.com", ProviderToString (provider), managedType?.FullName)); continue; } @@ -71,7 +80,6 @@ namespace Xamarin.Linker.Steps continue; } - Console.WriteLine (managedEnumType); // Find the Extension type TypeDefinition extensionType = null; var extensionName = managedEnumType.Name + "Extensions"; @@ -84,7 +92,7 @@ namespace Xamarin.Linker.Steps break; } if (extensionType == null) { - Console.WriteLine ("WARNING"); + ErrorHelper.Show (ErrorHelper.CreateWarning (LinkContext.Target.App, 4124, provider, "Invalid BindAsAttribute found on '{0}': could not find the smart extension type {1}.{2}. Please file a bug report at https://bugzilla.xamarin.com", ProviderToString (provider), managedEnumType.Namespace, extensionName)); continue; } @@ -111,8 +119,14 @@ namespace Xamarin.Linker.Steps getValue = method; } } - if (getConstant == null || getValue == null) { - Console.WriteLine ("WARNING"); + + if (getConstant == null) { + ErrorHelper.Show (ErrorHelper.CreateWarning (LinkContext.Target.App, 4124, provider, "Invalid BindAsAttribute found on '{0}': could not find the GetConstant method in the type {1}. Please file a bug report at https://bugzilla.xamarin.com", ProviderToString (provider), extensionType.FullName)); + continue; + } + + if (getValue == null) { + ErrorHelper.Show (ErrorHelper.CreateWarning (LinkContext.Target.App, 4124, provider, "Invalid BindAsAttribute found on '{0}': could not find the GetValue method in the type {1}. Please file a bug report at https://bugzilla.xamarin.com", ProviderToString (provider), extensionType.FullName)); continue; } From 9859e04ee2847346b63581d19a7503cdc9e783f1 Mon Sep 17 00:00:00 2001 From: Rolf Bjarne Kvinge Date: Tue, 11 Jul 2017 09:49:37 +0200 Subject: [PATCH 049/145] [registrar] Limit XM-only code to XM. --- src/ObjCRuntime/Registrar.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/ObjCRuntime/Registrar.cs b/src/ObjCRuntime/Registrar.cs index 188027a3f5..ffee375176 100644 --- a/src/ObjCRuntime/Registrar.cs +++ b/src/ObjCRuntime/Registrar.cs @@ -660,9 +660,11 @@ namespace XamCore.Registrar { return Registrar.IsEnum (underlyingOutputType); } } else if (Registrar.Is (underlyingInputType, Foundation, "NSValue")) { +#if MMP || MONOMAC // Remove 'MonoMac.' namespace prefix to make switch smaller if (!Registrar.IsDualBuild && outputTypeName.StartsWith ("MonoMac.", StringComparison.Ordinal)) outputTypeName = outputTypeName.Substring ("MonoMac.".Length); +#endif switch (outputTypeName) { case "CoreAnimation.CATransform3D": From 99cc47e99b3c493b8d08745f0d3174c3fd7c39d5 Mon Sep 17 00:00:00 2001 From: Rolf Bjarne Kvinge Date: Tue, 11 Jul 2017 09:57:18 +0200 Subject: [PATCH 050/145] [linker] Only look for BindAs attributes in assemblies that reference the BindAsAttribute type. --- .../PreserveSmartEnumConversionsSubStep.cs | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/tools/linker/MonoTouch.Tuner/PreserveSmartEnumConversionsSubStep.cs b/tools/linker/MonoTouch.Tuner/PreserveSmartEnumConversionsSubStep.cs index 328c7cbb25..4dde346037 100644 --- a/tools/linker/MonoTouch.Tuner/PreserveSmartEnumConversionsSubStep.cs +++ b/tools/linker/MonoTouch.Tuner/PreserveSmartEnumConversionsSubStep.cs @@ -27,9 +27,16 @@ namespace Xamarin.Linker.Steps public override bool IsActiveFor (AssemblyDefinition assembly) { - // we need to process all assemblies, because the functions we want to - // preserve are not necessarily in the assembly we're processing. - return true; + if (Profile.IsProductAssembly (assembly)) + return true; + + // We don't need to process assemblies that don't reference ObjCRuntime.BindAsAttribute. + foreach (var tr in assembly.MainModule.GetTypeReferences ()) { + if (tr.IsPlatformType ("ObjCRuntime", "BindAsAttribute")) + return true; + } + + return false; } void Preserve (Tuple pair, MethodDefinition conditionA, MethodDefinition conditionB = null) From 4d393a683de9bc1f401245c61c239ba79269e6eb Mon Sep 17 00:00:00 2001 From: Rolf Bjarne Kvinge Date: Tue, 11 Jul 2017 12:29:15 +0200 Subject: [PATCH 051/145] [runtime] Use composable strings to save space. --- runtime/runtime.m | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/runtime/runtime.m b/runtime/runtime.m index 6bf1c9cd24..82b164ac8b 100644 --- a/runtime/runtime.m +++ b/runtime/runtime.m @@ -358,7 +358,7 @@ MonoClass * xamarin_get_nsvalue_class () { if (nsvalue_class == NULL) - xamarin_assertion_message ("Internal consistency error, please file a bug (https://bugzilla.xamarin.com). Additional data: can't get the NSValue class because it's been linked away.\n"); + xamarin_assertion_message ("Internal consistency error, please file a bug (https://bugzilla.xamarin.com). Additional data: can't get the %s class because it's been linked away.\n", "NSValue"); return nsvalue_class; } @@ -366,7 +366,7 @@ MonoClass * xamarin_get_nsnumber_class () { if (nsnumber_class == NULL) - xamarin_assertion_message ("Internal consistency error, please file a bug (https://bugzilla.xamarin.com). Additional data: can't get the NSNumber class because it's been linked away.\n"); + xamarin_assertion_message ("Internal consistency error, please file a bug (https://bugzilla.xamarin.com). Additional data: can't get the %s class because it's been linked away.\n", "NSNumber"); return nsnumber_class; } From f1dd9985f41e4c890e4cff207a6990cdf00b6b07 Mon Sep 17 00:00:00 2001 From: Rolf Bjarne Kvinge Date: Tue, 11 Jul 2017 13:28:36 +0200 Subject: [PATCH 052/145] [generator] Refactor to extract common code (property fetch) into a variable. --- src/generator.cs | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/src/generator.cs b/src/generator.cs index c2c78c7dc8..3d5e5d6ea0 100644 --- a/src/generator.cs +++ b/src/generator.cs @@ -1977,12 +1977,13 @@ public partial class Generator : IMemberGatherer { try { if (Compat) { - bool arm_stret = Stret.ArmNeedStret (mi.ReturnType); + var returnType = mi.ReturnType; + bool arm_stret = Stret.ArmNeedStret (returnType); bool is_aligned = AttributeManager.HasAttribute (mi); RegisterMethod (arm_stret, mi, MakeSig (mi, arm_stret, arm_stret && is_aligned), arm_stret && is_aligned); RegisterMethod (arm_stret, mi, MakeSuperSig (mi, arm_stret, arm_stret && is_aligned), arm_stret && is_aligned); - bool x86_stret = Stret.X86NeedStret (mi.ReturnType); + bool x86_stret = Stret.X86NeedStret (returnType); if (x86_stret != arm_stret){ RegisterMethod (x86_stret, mi, MakeSig (mi, x86_stret, x86_stret && is_aligned), x86_stret && is_aligned); RegisterMethod (x86_stret, mi, MakeSuperSig (mi, x86_stret, x86_stret && is_aligned), x86_stret && is_aligned); @@ -3624,8 +3625,9 @@ public partial class Generator : IMemberGatherer { return; } - bool arm_stret = Stret.ArmNeedStret (mi.ReturnType); - bool x86_stret = Stret.X86NeedStret (mi.ReturnType); + var returnType = mi.ReturnType; + bool arm_stret = Stret.ArmNeedStret (returnType); + bool x86_stret = Stret.X86NeedStret (returnType); bool aligned = AttributeManager.HasAttribute (mi); if (CurrentPlatform == PlatformName.MacOSX) { @@ -3651,9 +3653,10 @@ public partial class Generator : IMemberGatherer { void GenerateNewStyleInvoke (bool supercall, MethodInfo mi, MemberInformation minfo, string selector, string[] args, bool assign_to_temp, Type category_type) { - bool arm_stret = Stret.ArmNeedStret (mi.ReturnType); - bool x86_stret = Stret.X86NeedStret (mi.ReturnType); - bool x64_stret = Stret.X86_64NeedStret (mi.ReturnType); + var returnType = mi.ReturnType; + bool arm_stret = Stret.ArmNeedStret (returnType); + bool x86_stret = Stret.X86NeedStret (returnType); + bool x64_stret = Stret.X86_64NeedStret (returnType); bool dual_enum = HasNativeEnumInSignature (mi); bool is_stret_multi = arm_stret || x86_stret || x64_stret; bool need_multi_path = is_stret_multi || dual_enum; From e97f2f3244917f0d017318995e3cd49b08a89b63 Mon Sep 17 00:00:00 2001 From: Rolf Bjarne Kvinge Date: Tue, 11 Jul 2017 13:35:25 +0200 Subject: [PATCH 053/145] [src] Revert accidental whitespace change. --- src/generator-enums.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/generator-enums.cs b/src/generator-enums.cs index 3a98c69293..8eba548a1c 100644 --- a/src/generator-enums.cs +++ b/src/generator-enums.cs @@ -164,7 +164,7 @@ public partial class Generator { print ("}"); print (""); } - + print ("public static NSString GetConstant (this {0} self)", type.Name); print ("{"); indent++; @@ -188,7 +188,7 @@ public partial class Generator { print ("}"); print (""); - + print ("public static {0} GetValue (NSString constant)", type.Name); print ("{"); indent++; From 607f947831d589d24d009852edbebb03f1aad737 Mon Sep 17 00:00:00 2001 From: Rolf Bjarne Kvinge Date: Tue, 11 Jul 2017 13:38:05 +0200 Subject: [PATCH 054/145] [src] Simplify conditional expression that would always be false. --- src/generator.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/generator.cs b/src/generator.cs index 3d5e5d6ea0..924e359773 100644 --- a/src/generator.cs +++ b/src/generator.cs @@ -1434,7 +1434,7 @@ public partial class Generator : IMemberGatherer { var arrRetType = arrIsNullable ? nullableElementType : retType.GetElementType (); var valueFetcher = string.Empty; if (arrType == TypeManager.NSString) - append = $"ptr => {{\n\tusing (var str = Runtime.GetNSObject (ptr)) {{\n\t\treturn {FormatType (arrRetType.DeclaringType, arrRetType)}Extensions.{(isNullable ? "GetNullableValue" : "GetValue")} (str);\n\t}}\n}}"; + append = $"ptr => {{\n\tusing (var str = Runtime.GetNSObject (ptr)) {{\n\t\treturn {FormatType (arrRetType.DeclaringType, arrRetType)}Extensions.GetValue (str);\n\t}}\n}}"; else if (arrType == TypeManager.NSNumber) { if (NSNumberReturnMap.TryGetValue (arrRetType, out valueFetcher) || arrRetType.IsEnum) { var getterStr = string.Format ("{0}{1}", arrIsNullable ? "?" : string.Empty, arrRetType.IsEnum ? ".Int32Value" : valueFetcher); From 2dd10e7cb410b0687f891d4cf5312dbcf12c57cb Mon Sep 17 00:00:00 2001 From: Rolf Bjarne Kvinge Date: Tue, 11 Jul 2017 18:27:28 +0200 Subject: [PATCH 055/145] [registrar] Improve error message. --- tools/common/StaticRegistrar.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/common/StaticRegistrar.cs b/tools/common/StaticRegistrar.cs index 9abd7d5894..582c3ebe1b 100644 --- a/tools/common/StaticRegistrar.cs +++ b/tools/common/StaticRegistrar.cs @@ -3050,7 +3050,7 @@ namespace XamCore.Registrar { if (type != nativetype) { GenerateConversionToManaged (nativetype, type, setup_call_stack, descriptiveMethodName, ref exceptions, method, $"p{i}", $"arg_ptrs [{i}]", $"mono_class_from_mono_type (xamarin_get_parameter_type (managed_method, {i}))"); if (isRef || isOut) - throw new Exception (); + throw ErrorHelper.CreateError (4163, $"Internal error in the registrar (BindAs parameters can't be ref/out: {descriptiveMethodName}). Please file a bug report at https://bugzilla.xamarin.com"); continue; } else if (isRef) { type = type.GetElementType (); From ee36719d8a95334193b1b6dc938eb24bf069dd4c Mon Sep 17 00:00:00 2001 From: Rolf Bjarne Kvinge Date: Fri, 22 Sep 2017 11:58:37 +0200 Subject: [PATCH 056/145] [runtime] Ask clang to be quiet about using new API for our conversion methods. --- runtime/trampolines.m | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/runtime/trampolines.m b/runtime/trampolines.m index 3bfdfe068f..d0ca72ae7b 100644 --- a/runtime/trampolines.m +++ b/runtime/trampolines.m @@ -761,6 +761,9 @@ exception_handling: return convertedValue; } +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wunguarded-availability-new" + // Returns a pointer to the value type, which must be freed using xamarin_free. // If called multiple times in succession, the returned pointer can be passed as the second ptr argument, and it need only be freed once done iterating. void *xamarin_nsnumber_to_bool (NSNumber *number, void *ptr, MonoClass *managedType, guint32 *exception_gchandle) { BOOL *valueptr = (BOOL *) (ptr ? ptr : xamarin_calloc (sizeof (BOOL))); *valueptr = [number boolValue]; return valueptr; } @@ -905,6 +908,8 @@ id xamarin_uiedgeinsets_to_nsvalue (MonoObject *value, guint32 *except id xamarin_uioffset_to_nsvalue (MonoObject *value, guint32 *exception_gchandle) { return [NSValue valueWithUIOffset: *(UIOffset *) mono_object_unbox (value)]; } #endif +#pragma clang diagnostic pop + static void * xamarin_get_nsnumber_converter (MonoClass *managedType, MonoMethod *method, bool to_managed, guint32 *exception_gchandle) { From 9114a12800654c2ed9abb92e2557c8958db59914 Mon Sep 17 00:00:00 2001 From: Rolf Bjarne Kvinge Date: Mon, 25 Sep 2017 16:06:39 +0200 Subject: [PATCH 057/145] [tests] Make more tests Xcode-version-aware. --- tests/test-libraries/testgenerator.cs | 32 +++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/tests/test-libraries/testgenerator.cs b/tests/test-libraries/testgenerator.cs index 47c6a27402..efd007082e 100644 --- a/tests/test-libraries/testgenerator.cs +++ b/tests/test-libraries/testgenerator.cs @@ -912,6 +912,10 @@ namespace MonoTouchFixtures.ObjCRuntime { w.AppendLine ("\t\t[Test]"); w.AppendLine ($"\t\tpublic void NSNumberBindAs_{v.Managed}_Bindings ()"); w.AppendLine ("\t\t{"); + if (v.MinXcodeVersion != null) { + w.AppendLine ($"\t\t\tTestRuntime.AssertXcodeVersion ({v.MinXcodeVersion.Major}, {v.MinXcodeVersion.Minor});"); + w.AppendLine (); + } w.AppendLine ($"\t\t\tusing (var obj = new ObjCRegistrarTest ()) {{"); w.AppendLine ($"\t\t\t\tAssert.IsNull (obj.P{v.Managed}Number, \"initial null property\");"); w.AppendLine ($"\t\t\t\tAssert.IsNull (obj.P{v.Managed}NumberNullable, \"initial nullable null property\");"); @@ -947,6 +951,10 @@ namespace MonoTouchFixtures.ObjCRuntime { w.AppendLine ("\t\t[Test]"); w.AppendLine ($"\t\tpublic void NSNumberBindAs_{v.Managed}_Overrides ()"); w.AppendLine ("\t\t{"); + if (v.MinXcodeVersion != null) { + w.AppendLine ($"\t\t\tTestRuntime.AssertXcodeVersion ({v.MinXcodeVersion.Major}, {v.MinXcodeVersion.Minor});"); + w.AppendLine (); + } w.AppendLine ($"\t\t\tusing (var obj = new BindAsTestClassGenerated ()) {{"); w.AppendLine ($"\t\t\t\tAssert.IsNull (obj.{v.Managed}Number, \"initial null\");"); w.AppendLine ($"\t\t\t\tMessaging.void_objc_msgSend_IntPtr (obj.Handle, Selector.GetHandle (\"set{v.Managed}NumberNullable:\"), IntPtr.Zero);"); @@ -992,6 +1000,10 @@ namespace MonoTouchFixtures.ObjCRuntime { w.AppendLine ("\t\t[Test]"); w.AppendLine ($"\t\tpublic void NSNumberBindAs_{v.Managed}Array_Bindings ()"); w.AppendLine ("\t\t{"); + if (v.MinXcodeVersion != null) { + w.AppendLine ($"\t\t\tTestRuntime.AssertXcodeVersion ({v.MinXcodeVersion.Major}, {v.MinXcodeVersion.Minor});"); + w.AppendLine (); + } w.AppendLine ($"\t\t\tusing (var obj = new ObjCRegistrarTest ()) {{"); w.AppendLine ($"\t\t\t\tAssert.IsNull (obj.P{v.Managed}Array, \"initial null property\");"); w.AppendLine ($"\t\t\t\tAssert.IsNull (obj.Get{v.Managed}Array (), \"initial null method\");"); @@ -1023,6 +1035,10 @@ namespace MonoTouchFixtures.ObjCRuntime { w.AppendLine ("\t\t[Test]"); w.AppendLine ($"\t\tpublic void NSNumberBindAs_{v.Managed}_Array_Overrides ()"); w.AppendLine ("\t\t{"); + if (v.MinXcodeVersion != null) { + w.AppendLine ($"\t\t\tTestRuntime.AssertXcodeVersion ({v.MinXcodeVersion.Major}, {v.MinXcodeVersion.Minor});"); + w.AppendLine (); + } w.AppendLine ($"\t\t\tusing (var obj = new BindAsTestClassGenerated ()) {{"); w.AppendLine ($"\t\t\t\tAssert.IsNull (obj.{v.Managed}Array, \"initial null\");"); w.AppendLine ($"\t\t\t\tMessaging.void_objc_msgSend_IntPtr (obj.Handle, Selector.GetHandle (\"set{v.Managed}Array:\"), IntPtr.Zero);"); @@ -1078,6 +1094,10 @@ namespace MonoTouchFixtures.ObjCRuntime { w.AppendLine ("\t\t[Test]"); w.AppendLine ($"\t\tpublic void NSValueBindAs_{v.Managed}_Bindings ()"); w.AppendLine ("\t\t{"); + if (v.MinXcodeVersion != null) { + w.AppendLine ($"\t\t\tTestRuntime.AssertXcodeVersion ({v.MinXcodeVersion.Major}, {v.MinXcodeVersion.Minor});"); + w.AppendLine (); + } w.AppendLine ($"\t\t\tusing (var obj = new ObjCRegistrarTest ()) {{"); w.AppendLine ($"\t\t\t\tAssert.IsNull (obj.P{v.Managed}Value, \"initial null property\");"); w.AppendLine ($"\t\t\t\tAssert.IsNull (obj.P{v.Managed}ValueNullable, \"initial nullable null property\");"); @@ -1113,6 +1133,10 @@ namespace MonoTouchFixtures.ObjCRuntime { w.AppendLine ("\t\t[Test]"); w.AppendLine ($"\t\tpublic void NSValueBindAs_{v.Managed}_Overrides ()"); w.AppendLine ("\t\t{"); + if (v.MinXcodeVersion != null) { + w.AppendLine ($"\t\t\tTestRuntime.AssertXcodeVersion ({v.MinXcodeVersion.Major}, {v.MinXcodeVersion.Minor});"); + w.AppendLine (); + } w.AppendLine ($"\t\t\tusing (var obj = new BindAsTestClassGenerated ()) {{"); w.AppendLine ($"\t\t\t\tAssert.IsNull (obj.{v.Managed}Value, \"initial null\");"); w.AppendLine ($"\t\t\t\tMessaging.void_objc_msgSend_IntPtr (obj.Handle, Selector.GetHandle (\"set{v.Managed}ValueNullable:\"), IntPtr.Zero);"); @@ -1158,6 +1182,10 @@ namespace MonoTouchFixtures.ObjCRuntime { w.AppendLine ("\t\t[Test]"); w.AppendLine ($"\t\tpublic void NSValueBindAs_{v.Managed}Array_Bindings ()"); w.AppendLine ("\t\t{"); + if (v.MinXcodeVersion != null) { + w.AppendLine ($"\t\t\tTestRuntime.AssertXcodeVersion ({v.MinXcodeVersion.Major}, {v.MinXcodeVersion.Minor});"); + w.AppendLine (); + } w.AppendLine ($"\t\t\tusing (var obj = new ObjCRegistrarTest ()) {{"); w.AppendLine ($"\t\t\t\tAssert.IsNull (obj.P{v.Managed}Array, \"initial null property\");"); w.AppendLine ($"\t\t\t\tAssert.IsNull (obj.Get{v.Managed}Array (), \"initial null method\");"); @@ -1189,6 +1217,10 @@ namespace MonoTouchFixtures.ObjCRuntime { w.AppendLine ("\t\t[Test]"); w.AppendLine ($"\t\tpublic void NSValueBindAs_{v.Managed}_Array_Overrides ()"); w.AppendLine ("\t\t{"); + if (v.MinXcodeVersion != null) { + w.AppendLine ($"\t\t\tTestRuntime.AssertXcodeVersion ({v.MinXcodeVersion.Major}, {v.MinXcodeVersion.Minor});"); + w.AppendLine (); + } w.AppendLine ($"\t\t\tusing (var obj = new BindAsTestClassGenerated ()) {{"); w.AppendLine ($"\t\t\t\tAssert.IsNull (obj.{v.Managed}Array, \"initial null\");"); w.AppendLine ($"\t\t\t\tMessaging.void_objc_msgSend_IntPtr (obj.Handle, Selector.GetHandle (\"set{v.Managed}Array:\"), IntPtr.Zero);"); From 49223162bebe43852eaa4c20c1f409ccc1808427 Mon Sep 17 00:00:00 2001 From: Rolf Bjarne Kvinge Date: Fri, 22 Sep 2017 12:00:08 +0200 Subject: [PATCH 058/145] Add support for NSDirectionalEdgeInsets NSValues to the BindAs attribute. --- runtime/trampolines.m | 4 ++++ runtime/xamarin/trampolines.h | 2 ++ src/ObjCRuntime/Registrar.cs | 1 + src/generator.cs | 1 + tests/test-libraries/testgenerator.cs | 1 + tools/common/StaticRegistrar.cs | 2 ++ 6 files changed, 11 insertions(+) diff --git a/runtime/trampolines.m b/runtime/trampolines.m index d0ca72ae7b..1a03734293 100644 --- a/runtime/trampolines.m +++ b/runtime/trampolines.m @@ -796,6 +796,7 @@ void *xamarin_nsvalue_to_cgpoint (NSValue *value, void *ptr, Mono void *xamarin_nsvalue_to_cgrect (NSValue *value, void *ptr, MonoClass *managedType, guint32 *exception_gchandle) { CGRect *valueptr = (CGRect *) (ptr ? ptr : xamarin_calloc (sizeof (CGRect))); *valueptr = [value CGRectValue]; return valueptr; } void *xamarin_nsvalue_to_cgsize (NSValue *value, void *ptr, MonoClass *managedType, guint32 *exception_gchandle) { CGSize *valueptr = (CGSize *) (ptr ? ptr : xamarin_calloc (sizeof (CGSize))); *valueptr = [value CGSizeValue]; return valueptr; } void *xamarin_nsvalue_to_cgvector (NSValue *value, void *ptr, MonoClass *managedType, guint32 *exception_gchandle) { CGVector *valueptr = (CGVector *) (ptr ? ptr : xamarin_calloc (sizeof (CGVector))); *valueptr = [value CGVectorValue]; return valueptr; } +void *xamarin_nsvalue_to_nsdirectionaledgeinsets(NSValue *value, void *ptr, MonoClass *managedType, guint32 *exception_gchandle) {NSDirectionalEdgeInsets *valueptr =(NSDirectionalEdgeInsets *) (ptr ? ptr : xamarin_calloc (sizeof (NSDirectionalEdgeInsets)));*valueptr = [value directionalEdgeInsetsValue];return valueptr; } #endif #if HAVE_COREANIMATION void *xamarin_nsvalue_to_catransform3d (NSValue *value, void *ptr, MonoClass *managedType, guint32 *exception_gchandle) { CATransform3D *valueptr = (CATransform3D *) (ptr ? ptr : xamarin_calloc (sizeof (CATransform3D))); *valueptr = [value CATransform3DValue]; return valueptr; } @@ -885,6 +886,7 @@ id xamarin_cgpoint_to_nsvalue (MonoObject *value, guint32 *except id xamarin_cgrect_to_nsvalue (MonoObject *value, guint32 *exception_gchandle) { return [NSValue valueWithCGRect: *(CGRect *) mono_object_unbox (value)]; } id xamarin_cgsize_to_nsvalue (MonoObject *value, guint32 *exception_gchandle) { return [NSValue valueWithCGSize: *(CGSize *) mono_object_unbox (value)]; } id xamarin_cgvector_to_nsvalue (MonoObject *value, guint32 *exception_gchandle) { return [NSValue valueWithCGVector: *(CGVector *) mono_object_unbox (value)]; } +id xamarin_nsdirectionaledgeinsets_to_nsvalue(MonoObject *value, guint32 *exception_gchandle) { return [NSValue valueWithDirectionalEdgeInsets:*(NSDirectionalEdgeInsets *)mono_object_unbox (value)]; } #endif #if HAVE_COREANIMATION id xamarin_catransform3d_to_nsvalue (MonoObject *value, guint32 *exception_gchandle) { return [NSValue valueWithCATransform3D: *(CATransform3D *) mono_object_unbox (value)]; } @@ -1002,6 +1004,8 @@ xamarin_get_nsvalue_converter (MonoClass *managedType, MonoMethod *method, bool func = to_managed ? (void *) xamarin_nsvalue_to_cgsize : (void *) xamarin_cgsize_to_nsvalue; } else if (!strcmp (fullname, "CoreGraphics.CGVector")) { func = to_managed ? (void *) xamarin_nsvalue_to_cgvector : (void *) xamarin_cgvector_to_nsvalue; + } else if (!strcmp (fullname, "UIKit.NSDirectionalEdgeInsets")) { + func = to_managed ? (void *) xamarin_nsvalue_to_nsdirectionaledgeinsets : (void *) xamarin_nsdirectionaledgeinsets_to_nsvalue; #endif #if HAVE_COREANIMATION } else if (!strcmp (fullname, "CoreAnimation.CATransform3D")) { diff --git a/runtime/xamarin/trampolines.h b/runtime/xamarin/trampolines.h index 19c6a68000..599da75240 100644 --- a/runtime/xamarin/trampolines.h +++ b/runtime/xamarin/trampolines.h @@ -113,6 +113,7 @@ void *xamarin_nsvalue_to_scnvector3 (NSValue *value, void *ptr, Mono void *xamarin_nsvalue_to_scnvector4 (NSValue *value, void *ptr, MonoClass *managedType, guint32 *exception_ghandle); void *xamarin_nsvalue_to_uiedgeinsets (NSValue *value, void *ptr, MonoClass *managedType, guint32 *exception_ghandle); void *xamarin_nsvalue_to_uioffset (NSValue *value, void *ptr, MonoClass *managedType, guint32 *exception_ghandle); +void *xamarin_nsvalue_to_nsdirectionaledgeinsets(NSValue *value, void *ptr, MonoClass *managedType, guint32 *exception_ghandle); id xamarin_bool_to_nsnumber (MonoObject *value, guint32 *exception_gchandle); id xamarin_sbyte_to_nsnumber (MonoObject *value, guint32 *exception_gchandle); @@ -147,6 +148,7 @@ id xamarin_scnvector3_to_nsvalue (MonoObject *value, guint32 *except id xamarin_scnvector4_to_nsvalue (MonoObject *value, guint32 *exception_gchandle); id xamarin_uiedgeinsets_to_nsvalue (MonoObject *value, guint32 *exception_gchandle); id xamarin_uioffset_to_nsvalue (MonoObject *value, guint32 *exception_gchandle); +id xamarin_nsdirectionaledgeinsets_to_nsvalue(MonoObject *value, guint32 *exception_gchandle); /* Copied from SGen */ diff --git a/src/ObjCRuntime/Registrar.cs b/src/ObjCRuntime/Registrar.cs index ffee375176..f6e1d37081 100644 --- a/src/ObjCRuntime/Registrar.cs +++ b/src/ObjCRuntime/Registrar.cs @@ -684,6 +684,7 @@ namespace XamCore.Registrar { case "SceneKit.SCNVector4": case "UIKit.UIEdgeInsets": case "UIKit.UIOffset": + case "UIKit.NSDirectionalEdgeInsets": return true; default: return false; diff --git a/src/generator.cs b/src/generator.cs index 924e359773..bee1309a40 100644 --- a/src/generator.cs +++ b/src/generator.cs @@ -1220,6 +1220,7 @@ public partial class Generator : IMemberGatherer { if (Frameworks.HaveUIKit) { nsvalue_create_map [TypeManager.UIEdgeInsets] = "UIEdgeInsets"; nsvalue_create_map [TypeManager.UIOffset] = "UIOffset"; + nsvalue_create_map [TypeManager.NSDirectionalEdgeInsets] = "DirectionalEdgeInsets"; } if (TypeManager.MKCoordinateSpan != null) diff --git a/tests/test-libraries/testgenerator.cs b/tests/test-libraries/testgenerator.cs index efd007082e..6d29d0288d 100644 --- a/tests/test-libraries/testgenerator.cs +++ b/tests/test-libraries/testgenerator.cs @@ -97,6 +97,7 @@ static class C { new BindAsData { Managed = "CMTime", Native = "CMTime", ManagedCondition = "HAVE_COREMEDIA", ManagedNewExpression = "new CMTime (35, 36)", Map = ".CMTimeValue", MapFrom = "FromCMTime" }, new BindAsData { Managed = "CMTimeMapping", Native = "CMTimeMapping", ManagedCondition = "HAVE_COREMEDIA", ManagedNewExpression = "new CMTimeMapping { Source = new CMTimeRange { Duration = new CMTime (42, 43), Start = new CMTime (44, 45) } }", Map = ".CMTimeMappingValue", MapFrom = "FromCMTimeMapping" }, new BindAsData { Managed = "CATransform3D", Native = "CATransform3D", ManagedCondition = "HAVE_COREANIMATION", ManagedNewExpression = "new CATransform3D { m11 = 41 }", Map = ".CATransform3DValue", MapFrom = "FromCATransform3D" }, + new BindAsData { Managed = "NSDirectionalEdgeInsets", Native = "NSDirectionalEdgeInsets", ManagedCondition = "HAVE_UIKIT", ManagedNewExpression = "new NSDirectionalEdgeInsets (42, 43, 44, 45)", Map = ".DirectionalEdgeInsetsValue", MapFrom = "FromDirectionalEdgeInsets", MinXcodeVersion = new Version (9, 0) }, }; static BindAsData [] bindas_nsstring = new [] { diff --git a/tools/common/StaticRegistrar.cs b/tools/common/StaticRegistrar.cs index 582c3ebe1b..caf36eaf80 100644 --- a/tools/common/StaticRegistrar.cs +++ b/tools/common/StaticRegistrar.cs @@ -3793,6 +3793,7 @@ namespace XamCore.Registrar { case "SceneKit.SCNVector4": nativeType = "SCNVector4"; return "xamarin_nsvalue_to_scnvector4"; case "UIKit.UIEdgeInsets": nativeType = "UIEdgeInsets"; return "xamarin_nsvalue_to_uiedgeinsets"; case "UIKit.UIOffset": nativeType = "UIOffset"; return "xamarin_nsvalue_to_uioffset"; + case "UIKit.NSDirectionalEdgeInsets": nativeType = "NSDirectionalEdgeInsets"; return "xamarin_nsvalue_to_nsdirectionaledgeinsets"; default: throw ErrorHelper.CreateError (99, $"Internal error: can't convert from '{inputType.FullName}' to '{outputType.FullName}' in {descriptiveMethodName}. Please file a bug report with a test case (https://bugzilla.xamarin.com)."); } @@ -3826,6 +3827,7 @@ namespace XamCore.Registrar { case "SceneKit.SCNVector4": return "xamarin_scnvector4_to_nsvalue"; case "UIKit.UIEdgeInsets": return "xamarin_uiedgeinsets_to_nsvalue"; case "UIKit.UIOffset": return "xamarin_uioffset_to_nsvalue"; + case "UIKit.NSDirectionalEdgeInsets": return "xamarin_nsdirectionaledgeinsets_to_nsvalue"; default: throw ErrorHelper.CreateError (99, $"Internal error: can't convert from '{inputType.FullName}' to '{outputType.FullName}' in {descriptiveMethodName}. Please file a bug report with a test case (https://bugzilla.xamarin.com)."); } From 8bc81cc68a46bc8f6d2197d3e7e63df2e9826bf8 Mon Sep 17 00:00:00 2001 From: Rolf Bjarne Kvinge Date: Fri, 22 Sep 2017 12:28:37 +0200 Subject: [PATCH 059/145] [registrar] Don't store stuff in instance variables before knowing if the stuff is correct. --- src/ObjCRuntime/Registrar.cs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/ObjCRuntime/Registrar.cs b/src/ObjCRuntime/Registrar.cs index f6e1d37081..4599886de6 100644 --- a/src/ObjCRuntime/Registrar.cs +++ b/src/ObjCRuntime/Registrar.cs @@ -602,7 +602,9 @@ namespace XamCore.Registrar { public TType [] NativeParameters { get { if (native_parameters == null && Parameters != null) { - native_parameters = new TType [parameters.Length]; + // Put the parameters in a temporary variable, and only store them in the instance field once done, + // so that if an exception occurs, the same exception will be raised the next time too. + var native_parameters = new TType [parameters.Length]; for (int i = 0; i < parameters.Length; i++) { var originalType = Registrar.GetBindAsAttribute (this, i)?.OriginalType; if (originalType != null) { @@ -613,6 +615,7 @@ namespace XamCore.Registrar { native_parameters [i] = parameters [i]; } } + this.native_parameters = native_parameters; } return native_parameters; } From b216e74e89d07282ea10b7a570544f7db4442eb2 Mon Sep 17 00:00:00 2001 From: Rolf Bjarne Kvinge Date: Mon, 25 Sep 2017 15:54:04 +0200 Subject: [PATCH 060/145] [linker] Teach 'provider to string' logic about method return types. Prevents these little gems: > warning MT4124: Invalid BindAsAttribute found on 'Mono.Cecil.MethodReturnType': could not find the smart extension type ... --- .../MonoTouch.Tuner/PreserveSmartEnumConversionsSubStep.cs | 2 ++ 1 file changed, 2 insertions(+) diff --git a/tools/linker/MonoTouch.Tuner/PreserveSmartEnumConversionsSubStep.cs b/tools/linker/MonoTouch.Tuner/PreserveSmartEnumConversionsSubStep.cs index 4dde346037..4bb3f9062d 100644 --- a/tools/linker/MonoTouch.Tuner/PreserveSmartEnumConversionsSubStep.cs +++ b/tools/linker/MonoTouch.Tuner/PreserveSmartEnumConversionsSubStep.cs @@ -55,6 +55,8 @@ namespace Xamarin.Linker.Steps { if (provider is MemberReference member) return member.DeclaringType.FullName + "." + member.Name; + if (provider is MethodReturnType returnType) + return ProviderToString ((ICustomAttributeProvider) returnType.Method); return provider.ToString (); } From 0355baa57b3418bf96f0a81e608c7829f9510688 Mon Sep 17 00:00:00 2001 From: Rolf Bjarne Kvinge Date: Mon, 25 Sep 2017 15:55:03 +0200 Subject: [PATCH 061/145] [linker] Filter smart enum conversion to enums, and downgrade warnings to log messages. Only apply smart enum conversion to enums, and downgrade related warnings to log messages. This avoids spurious warnings like this: > warning MT4124: Invalid BindAsAttribute found on 'Bindings.Test.ObjCRegistrarTest.GetBooleanArray': could not find the smart extension type System.BooleanExtensions. Please file a bug report at https://bugzilla.xamarin.com when the BindAs attribute is valid, but just not about a smart enum in the first place. --- .../PreserveSmartEnumConversionsSubStep.cs | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/tools/linker/MonoTouch.Tuner/PreserveSmartEnumConversionsSubStep.cs b/tools/linker/MonoTouch.Tuner/PreserveSmartEnumConversionsSubStep.cs index 4bb3f9062d..00077ac76c 100644 --- a/tools/linker/MonoTouch.Tuner/PreserveSmartEnumConversionsSubStep.cs +++ b/tools/linker/MonoTouch.Tuner/PreserveSmartEnumConversionsSubStep.cs @@ -83,6 +83,10 @@ namespace Xamarin.Linker.Steps continue; } + // We only care about enums, BindAs attributes can be used for other types too. + if (!managedEnumType.IsEnum) + continue; + Tuple pair; if (cache != null && cache.TryGetValue (managedEnumType, out pair)) { Preserve (pair, conditionA, conditionB); @@ -101,7 +105,7 @@ namespace Xamarin.Linker.Steps break; } if (extensionType == null) { - ErrorHelper.Show (ErrorHelper.CreateWarning (LinkContext.Target.App, 4124, provider, "Invalid BindAsAttribute found on '{0}': could not find the smart extension type {1}.{2}. Please file a bug report at https://bugzilla.xamarin.com", ProviderToString (provider), managedEnumType.Namespace, extensionName)); + Driver.Log (1, $"Could not find a smart extension type for the enum {managedEnumType.FullName} (due to BindAs attribute on {ProviderToString (provider)}): most likely this is because the enum isn't a smart enum."); continue; } @@ -130,12 +134,12 @@ namespace Xamarin.Linker.Steps } if (getConstant == null) { - ErrorHelper.Show (ErrorHelper.CreateWarning (LinkContext.Target.App, 4124, provider, "Invalid BindAsAttribute found on '{0}': could not find the GetConstant method in the type {1}. Please file a bug report at https://bugzilla.xamarin.com", ProviderToString (provider), extensionType.FullName)); + Driver.Log (1, $"Could not find the GetConstant method on the supposedly smart extension type {extensionType.FullName} for the enum {managedEnumType.FullName} (due to BindAs attribute on {ProviderToString (provider)}): most likely this is because the enum isn't a smart enum."); continue; } if (getValue == null) { - ErrorHelper.Show (ErrorHelper.CreateWarning (LinkContext.Target.App, 4124, provider, "Invalid BindAsAttribute found on '{0}': could not find the GetValue method in the type {1}. Please file a bug report at https://bugzilla.xamarin.com", ProviderToString (provider), extensionType.FullName)); + Driver.Log (1, $"Could not find the GetValue method on the supposedly smart extension type {extensionType.FullName} for the enum {managedEnumType.FullName} (due to BindAs attribute on {ProviderToString (provider)}): most likely this is because the enum isn't a smart enum."); continue; } From 78e2a483b0b4051857622dce31e59639a3811c00 Mon Sep 17 00:00:00 2001 From: Rolf Bjarne Kvinge Date: Mon, 25 Sep 2017 16:38:21 +0200 Subject: [PATCH 062/145] [docs] Document how to add support for new BindAs types. --- docs/bindas.md | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 docs/bindas.md diff --git a/docs/bindas.md b/docs/bindas.md new file mode 100644 index 0000000000..44e6b187b0 --- /dev/null +++ b/docs/bindas.md @@ -0,0 +1,54 @@ +# How to add BindAs support for new types + +Currently the BindAs code only supports converting between a certain set of +types and NSValue, NSNumber and smart enums. + +If your BindAs support does not involve NSValue or NSNumber, then the required +changes are a bit more extensive than I explain here (but this is still a good +starting point). + +[Sample code][8] + +The sample code is to support a new type for NSValue, the exact code locations will differ slightly for NSNumber (different switches, etc). + +1. Add a test (or three) + + * Add an entry to [tests/test-libraries/testgenerator.cs][1] for the new type. + testgenerator.cs will generate the code required to test your new BindAs + support for all known scenarios. + + * Any other manual tests should go in monotouch-test. + +2. Add native conversions functions to runtime/trampolines.m|h. In the sample + code this is the two functions to convert between NSValue and + NSDirectionalEdgeInsets: + + `xamarin_nsdirectionaledgeinsets_to_nsvalue`: [trampolines.h#151][2], [trampolines.m#889][3] + `xamarin_nsvalue_to_nsdirectionaledgeinsets`: [trampolines.h#116][4], [trampolines.m#799][5] + +3. Add a switch entry to [trampolines.m#1007][6] to use the two new conversion functions. + +4. The registrar also needs to know ([Registrar.cs#687][7]). + +5. And the static registrar needs to know too, so that it can call the right native conversion function ([StaticRegistrar.cs#3796][9], [StaticRegistrar.cs#3830][10]). + +6. Now there's just the generator support left ([generator.cs#1223][11], [generator.cs#1369][12]). + +7. Finally run the following tests (at least) + +* All variations of monotouch-test (iOS/watchOS/tvOS) on both simulator and device. +* link all on both simulator and device. + + +[1]: https://github.com/rolfbjarne/xamarin-macios/blob/b38c114fbe8c9d229ec41a312dc36802cb4f027e/tests/test-libraries/testgenerator.cs#L100 +[2]: https://github.com/rolfbjarne/xamarin-macios/blob/b38c114fbe8c9d229ec41a312dc36802cb4f027e/runtime/xamarin/trampolines.h#L151 +[3]: https://github.com/rolfbjarne/xamarin-macios/blob/b38c114fbe8c9d229ec41a312dc36802cb4f027e/runtime/trampolines.m#L889 +[4]: https://github.com/rolfbjarne/xamarin-macios/blob/b38c114fbe8c9d229ec41a312dc36802cb4f027e/runtime/xamarin/trampolines.h#L116 +[5]: https://github.com/rolfbjarne/xamarin-macios/blob/b38c114fbe8c9d229ec41a312dc36802cb4f027e/runtime/trampolines.m#L799 +[6]: https://github.com/rolfbjarne/xamarin-macios/blob/b38c114fbe8c9d229ec41a312dc36802cb4f027e/runtime/trampolines.m#L1007-L1008 +[7]: https://github.com/rolfbjarne/xamarin-macios/blob/b38c114fbe8c9d229ec41a312dc36802cb4f027e/src/ObjCRuntime/Registrar.cs#L687 +[8]: https://github.com/xamarin/xamarin-macios/pull/2288/commits/b38c114fbe8c9d229ec41a312dc36802cb4f027e +[9]: https://github.com/rolfbjarne/xamarin-macios/blob/b38c114fbe8c9d229ec41a312dc36802cb4f027e/tools/common/StaticRegistrar.cs#L3796 +[10]: https://github.com/rolfbjarne/xamarin-macios/blob/b38c114fbe8c9d229ec41a312dc36802cb4f027e/tools/common/StaticRegistrar.cs#L3830 +[11]: https://github.com/rolfbjarne/xamarin-macios/blob/b38c114fbe8c9d229ec41a312dc36802cb4f027e/src/generator.cs#L1223 +[12]: https://github.com/rolfbjarne/xamarin-macios/blob/b38c114fbe8c9d229ec41a312dc36802cb4f027e/src/generator.cs#L1369 From cecded565a81fa415521223e93d569bd9e1d71ae Mon Sep 17 00:00:00 2001 From: Rolf Bjarne Kvinge Date: Wed, 27 Sep 2017 15:53:41 +0200 Subject: [PATCH 063/145] [mmp/mtouch] Don't link with frameworks not available in the current SDK. Fixes #59636. (#2777) (#2784) We already have this logic for frameworks we detect according to the namespace of the used types, but not for frameworks we detect from P/Invokes. Fix this by using the same framework exclusion logic for frameworks detected from P/Invokes: don't link with frameworks not available in the current SDK. https://bugzilla.xamarin.com/show_bug.cgi?id=59636 --- tests/common/mac/ProjectTestHelpers.cs | 22 +++++++++++----------- tests/mmptest/src/MMPTest.cs | 16 ++++++++++++++++ tools/common/Assembly.cs | 5 ++++- tools/common/Target.cs | 2 ++ 4 files changed, 33 insertions(+), 12 deletions(-) diff --git a/tests/common/mac/ProjectTestHelpers.cs b/tests/common/mac/ProjectTestHelpers.cs index b409e31c15..5a976458cb 100644 --- a/tests/common/mac/ProjectTestHelpers.cs +++ b/tests/common/mac/ProjectTestHelpers.cs @@ -77,11 +77,11 @@ namespace Xamarin.MMP.Tests return new Version (versionRegex.Match (output).Value.Split (' ')[2]); } - public static string RunAndAssert (string exe, string args, string stepName, bool shouldFail = false, Func getAdditionalFailInfo = null) + public static string RunAndAssert (string exe, string args, string stepName, bool shouldFail = false, Func getAdditionalFailInfo = null, string[] environment = null) { StringBuilder output = new StringBuilder (); Environment.SetEnvironmentVariable ("MONO_PATH", null); - int compileResult = Xamarin.Bundler.Driver.RunCommand (exe, args != null ? args.ToString() : string.Empty, null, output, suppressPrintOnErrors: shouldFail); + int compileResult = Xamarin.Bundler.Driver.RunCommand (exe, args != null ? args.ToString() : string.Empty, environment, output, suppressPrintOnErrors: shouldFail); if (!shouldFail && compileResult != 0 && Xamarin.Bundler.Driver.Verbosity < 1) { // Driver.RunCommand won't print failed output unless verbosity > 0, so let's do it ourselves. Console.WriteLine ($"Execution failed; exit code: {compileResult}"); @@ -96,9 +96,9 @@ namespace Xamarin.MMP.Tests return output.ToString (); } - public static string RunAndAssert (string exe, StringBuilder args, string stepName, bool shouldFail = false, Func getAdditionalFailInfo = null) + public static string RunAndAssert (string exe, StringBuilder args, string stepName, bool shouldFail = false, Func getAdditionalFailInfo = null, string[] environment = null) { - return RunAndAssert (exe, args.ToString (), stepName, shouldFail, getAdditionalFailInfo); + return RunAndAssert (exe, args.ToString (), stepName, shouldFail, getAdditionalFailInfo, environment); } // In most cases we generate projects in tmp and this is not needed. But nuget and test projects can make that hard @@ -107,7 +107,7 @@ namespace Xamarin.MMP.Tests RunAndAssert ("/Library/Frameworks/Mono.framework/Commands/" + (useMSBuild ? "msbuild" : "xbuild"), new StringBuilder (csprojTarget + " /t:clean"), "Clean"); } - public static string BuildProject (string csprojTarget, bool isUnified, bool diagnosticMSBuild = false, bool shouldFail = false, bool useMSBuild = false, string configuration = null) + public static string BuildProject (string csprojTarget, bool isUnified, bool diagnosticMSBuild = false, bool shouldFail = false, bool useMSBuild = false, string configuration = null, string[] environment = null) { string rootDirectory = FindRootDirectory (); @@ -140,9 +140,9 @@ namespace Xamarin.MMP.Tests }; if (isUnified) - return RunAndAssert ("/Library/Frameworks/Mono.framework/Commands/" + (useMSBuild ? "msbuild" : "xbuild"), buildArgs, "Compile", shouldFail, getBuildProjectErrorInfo); + return RunAndAssert ("/Library/Frameworks/Mono.framework/Commands/" + (useMSBuild ? "msbuild" : "xbuild"), buildArgs, "Compile", shouldFail, getBuildProjectErrorInfo, environment); else - return RunAndAssert ("/Applications/Visual Studio.app/Contents/MacOS/vstool", buildArgs, "Compile", shouldFail, getBuildProjectErrorInfo); + return RunAndAssert ("/Applications/Visual Studio.app/Contents/MacOS/vstool", buildArgs, "Compile", shouldFail, getBuildProjectErrorInfo, environment); } static string ProjectTextReplacement (UnifiedTestConfig config, string text) @@ -242,10 +242,10 @@ namespace Xamarin.MMP.Tests return GenerateEXEProject (config); } - public static string GenerateAndBuildUnifiedExecutable (UnifiedTestConfig config, bool shouldFail = false, bool useMSBuild = false, string configuration = null) + public static string GenerateAndBuildUnifiedExecutable (UnifiedTestConfig config, bool shouldFail = false, bool useMSBuild = false, string configuration = null, string[] environment = null) { string csprojTarget = GenerateUnifiedExecutableProject (config); - return BuildProject (csprojTarget, isUnified: true, diagnosticMSBuild: config.DiagnosticMSBuild, shouldFail: shouldFail, useMSBuild: useMSBuild, configuration: configuration); + return BuildProject (csprojTarget, isUnified: true, diagnosticMSBuild: config.DiagnosticMSBuild, shouldFail: shouldFail, useMSBuild: useMSBuild, configuration: configuration, environment: environment); } public static string RunGeneratedUnifiedExecutable (UnifiedTestConfig config) @@ -255,7 +255,7 @@ namespace Xamarin.MMP.Tests return RunEXEAndVerifyGUID (config.TmpDir, config.guid, exePath); } - public static OutputText TestUnifiedExecutable (UnifiedTestConfig config, bool shouldFail = false, bool useMSBuild = false, string configuration = null) + public static OutputText TestUnifiedExecutable (UnifiedTestConfig config, bool shouldFail = false, bool useMSBuild = false, string configuration = null, string[] environment = null) { // If we've already generated guid bits for this config, don't tack on a second copy if (config.guid == Guid.Empty) @@ -264,7 +264,7 @@ namespace Xamarin.MMP.Tests config.TestCode += GenerateOutputCommand (config.TmpDir, config.guid); } - string buildOutput = GenerateAndBuildUnifiedExecutable (config, shouldFail, useMSBuild, configuration); + string buildOutput = GenerateAndBuildUnifiedExecutable (config, shouldFail, useMSBuild, configuration, environment); if (shouldFail) return new OutputText (buildOutput, ""); diff --git a/tests/mmptest/src/MMPTest.cs b/tests/mmptest/src/MMPTest.cs index 8b09cc6ef9..81cef0fc6f 100644 --- a/tests/mmptest/src/MMPTest.cs +++ b/tests/mmptest/src/MMPTest.cs @@ -758,5 +758,21 @@ namespace Xamarin.MMP.Tests TI.TestUnifiedExecutable (test); }); } + + [Test] + public void OldXcodeTest () + { + var oldXcode = Xamarin.Tests.Configuration.GetOldXcodeRoot (); + + if (string.IsNullOrEmpty (oldXcode)) + Assert.Ignore ("This test needs an old Xcode."); + + RunMMPTest (tmpDir => { + TI.UnifiedTestConfig test = new TI.UnifiedTestConfig (tmpDir) { + CSProjConfig = "True", // This makes the msbuild tasks pass /debug to mmp + }; + TI.TestUnifiedExecutable (test, shouldFail: false, configuration: "Debug", environment: new string [] { "MD_APPLE_SDK_ROOT", Path.GetDirectoryName (Path.GetDirectoryName (oldXcode)) }); + }); + } } } diff --git a/tools/common/Assembly.cs b/tools/common/Assembly.cs index 7991eba472..224b3c238d 100644 --- a/tools/common/Assembly.cs +++ b/tools/common/Assembly.cs @@ -415,7 +415,10 @@ namespace Xamarin.Bundler { // detect frameworks int f = name.IndexOf (".framework/", StringComparison.Ordinal); if (f > 0) { - if (Frameworks.Add (file)) + Framework framework; + if (Driver.GetFrameworks (App).TryGetValue (file, out framework) && framework.Version > App.SdkVersion) + Driver.Log (3, "Not linking with the framework {0} (referenced by a module reference in {1}) because it was introduced in {2} {3}, and we're using the {2} {4} SDK.", file, FileName, App.PlatformName, framework.Version, App.SdkVersion); + else if (Frameworks.Add (file)) Driver.Log (3, "Linking with the framework {0} because it's referenced by a module reference in {1}", file, FileName); } else { if (UnresolvedModuleReferences == null) diff --git a/tools/common/Target.cs b/tools/common/Target.cs index 39cc4d00f4..38bf80b1b6 100644 --- a/tools/common/Target.cs +++ b/tools/common/Target.cs @@ -172,6 +172,8 @@ namespace Xamarin.Bundler { var add_to = App.DeploymentTarget >= framework.Version ? asm.Frameworks : asm.WeakFrameworks; add_to.Add (framework.Name); continue; + } else { + Driver.Log (3, "Not linking with the framework {0} (used by the type {1}) because it was introduced in {2} {3}, and we're using the {2} {4} SDK.", framework.Name, td.FullName, App.PlatformName, framework.Version, App.SdkVersion); } } } From cdd9ebada998000aeae8ea47311281b7df28cd24 Mon Sep 17 00:00:00 2001 From: Sebastien Pouliot Date: Wed, 27 Sep 2017 11:15:22 -0400 Subject: [PATCH 064/145] [linker] Use correct namespace for async debugging helpers. Fixes #59015 (#2782) (#2788) Replace https://github.com/xamarin/xamarin-macios/pull/2704 It's almost identical but it adds unit tests so this does not regress. The issue was already reported in [1] but the fix [2] was incorrect and that was also missed when the bug was verified by QA [3]. [1] https://bugzilla.xamarin.com/show_bug.cgi?id=55037 [2] https://github.com/xamarin/xamarin-macios/pull/2004 [3] https://bugzilla.xamarin.com/show_bug.cgi?id=55037#c10 --- tests/linker-ios/link all/LinkAllTest.cs | 31 ++++++++++++++++++++++++ tools/linker/MobileMarkStep.cs | 28 ++++++++++++--------- 2 files changed, 48 insertions(+), 11 deletions(-) diff --git a/tests/linker-ios/link all/LinkAllTest.cs b/tests/linker-ios/link all/LinkAllTest.cs index b5fd67d055..83a6909752 100644 --- a/tests/linker-ios/link all/LinkAllTest.cs +++ b/tests/linker-ios/link all/LinkAllTest.cs @@ -15,6 +15,8 @@ using System.Linq; using System.Net; using System.Net.Security; using System.Reflection; +using System.Runtime.CompilerServices; +using System.Threading.Tasks; using System.Security.Cryptography.X509Certificates; using MonoTouch; @@ -542,5 +544,34 @@ namespace LinkAll { var fqn = typeof (NSObject).AssemblyQualifiedName.Replace ("Foundation.NSObject", "Foundation.NSProxy"); Assert.Null (Type.GetType (fqn), fqn); } + + [Test] + public void Bug59015 () + { + CheckAsyncTaskMethodBuilder (typeof (AsyncTaskMethodBuilder)); + CheckAsyncTaskMethodBuilder (typeof (AsyncTaskMethodBuilder)); + var t = typeof (Task); + var snfwc = t.GetMethod ("SetNotificationForWaitCompletion", BindingFlags.Instance | BindingFlags.NonPublic); +#if DEBUG + Assert.NotNull (snfwc, "Task.NotifyDebuggerOfWaitCompletion"); +#else + // something keeps it from being removed + // Assert.Null (snfwc, "Task.NotifyDebuggerOfWaitCompletion"); +#endif + } + + void CheckAsyncTaskMethodBuilder (Type atmb) + { + Assert.NotNull (atmb, "AsyncTaskMethodBuilder"); + var snfwc = atmb.GetMethod ("SetNotificationForWaitCompletion", BindingFlags.Instance | BindingFlags.NonPublic); + var oifd = atmb.GetProperty ("ObjectIdForDebugger", BindingFlags.Instance | BindingFlags.NonPublic); +#if DEBUG + Assert.NotNull (snfwc, atmb.FullName + ".SetNotificationForWaitCompletion"); + Assert.NotNull (oifd, atmb.FullName + ".ObjectIdForDebugger"); +#else + Assert.Null (snfwc, atmb.FullName + ".SetNotificationForWaitCompletion"); + Assert.Null (oifd, atmb.FullName + ".ObjectIdForDebugger"); +#endif + } } } diff --git a/tools/linker/MobileMarkStep.cs b/tools/linker/MobileMarkStep.cs index 1f3a51e577..5b2107ba71 100644 --- a/tools/linker/MobileMarkStep.cs +++ b/tools/linker/MobileMarkStep.cs @@ -259,19 +259,25 @@ namespace Xamarin.Linker.Steps { void ProcessCorlib (TypeDefinition type) { switch (type.Namespace) { - case "System.Runtime.CompilerServices.AsyncTaskMethodBuilder": - if (DebugBuild) - MarkNamedMethod (type, "SetNotificationForWaitCompletion"); + case "System.Runtime.CompilerServices": + switch (type.Name) { + case "AsyncTaskMethodBuilder": + case "AsyncTaskMethodBuilder`1": + if (DebugBuild) { + MarkNamedMethod (type, "SetNotificationForWaitCompletion"); + MarkNamedMethod (type, "get_ObjectIdForDebugger"); + } + break; + } break; - case "System.Runtime.CompilerServices.AsyncTaskMethodBuilder`1": - if (DebugBuild) - MarkNamedMethod (type, "SetNotificationForWaitCompletion"); + case "System.Threading.Tasks": + switch (type.Name) { + case "Task": + if (DebugBuild) + MarkNamedMethod (type, "NotifyDebuggerOfWaitCompletion"); + break; + } break; - case "System.Threading.Tasks.Task": - if (DebugBuild) - MarkNamedMethod (type, "NotifyDebuggerOfWaitCompletion"); - break; - case "System.Security.Cryptography": switch (type.Name) { case "Aes": From 60764e0eda15394070047a294d2c72061f6ebf31 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20K=C3=B6plinger?= Date: Thu, 28 Sep 2017 04:20:27 +0200 Subject: [PATCH 065/145] Bump min Mono version to 5.4.0.201 (#2797) The previous one was a pretty old 5.4 build by now. (cherry picked from commit f7e079cde32c659df9afdc1d7b739bcb43c46406) --- Make.config | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Make.config b/Make.config index 53464280ee..5226618e09 100644 --- a/Make.config +++ b/Make.config @@ -57,9 +57,9 @@ XCODE_URL=http://xamarin-storage/bot-provisioning/Xcode_9_GM_seed.xip XCODE_DEVELOPER_ROOT=/Applications/Xcode9-GM.app/Contents/Developer # Minimum Mono version -MIN_MONO_VERSION=5.4.0.60 +MIN_MONO_VERSION=5.4.0.201 MAX_MONO_VERSION=5.4.99 -MIN_MONO_URL=https://bosstoragemirror.azureedge.net/wrench/mono-2017-06/73/733b51587e8aeb1476c978ad52be37746094c909/MonoFramework-MDK-5.4.0.60.macos10.xamarin.universal.pkg +MIN_MONO_URL=https://bosstoragemirror.azureedge.net/wrench/mono-2017-06/71/71277e78f6ed32889e8c739f4ee4a3ebc946f84a/MonoFramework-MDK-5.4.0.201.macos10.xamarin.universal.pkg # Minimum Visual Studio version MIN_VISUAL_STUDIO_URL=https://bosstoragemirror.blob.core.windows.net/wrench/monodevelop-lion-dogfood-vNext/8f/8f1c13cb983138ee63bd53e09908ea5e737988cd/VisualStudioForMac-Preview-7.0.0.2728.dmg From c44f0b2e9827d38f1fe3cfca3b8dde3eb7bb0d3a Mon Sep 17 00:00:00 2001 From: Manuel de la Pena Date: Thu, 28 Sep 2017 12:48:59 +0200 Subject: [PATCH 066/145] Bump maccore to bring doc fixes to be able to build packages for d15-5 --- mk/xamarin.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mk/xamarin.mk b/mk/xamarin.mk index 02f0d5df59..5d8480eef8 100644 --- a/mk/xamarin.mk +++ b/mk/xamarin.mk @@ -1,5 +1,5 @@ ifdef ENABLE_XAMARIN -NEEDED_MACCORE_VERSION := 3c66cba4e25855b50de6c10b2d02e28e1ee4fbde +NEEDED_MACCORE_VERSION := a7f65d37306d474b08b0314baa57c0e90d7b7c2b NEEDED_MACCORE_BRANCH := d15-5 MACCORE_DIRECTORY := maccore From 0325f5db9acf9c0e878eb2011ed89c17e1c3dd24 Mon Sep 17 00:00:00 2001 From: Sam Schwarz Date: Thu, 28 Sep 2017 11:33:18 -0400 Subject: [PATCH 067/145] Update run-tests to use file. (#2794) --- jenkins/run-tests.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jenkins/run-tests.sh b/jenkins/run-tests.sh index c3f39a463b..8bd7fc5d64 100755 --- a/jenkins/run-tests.sh +++ b/jenkins/run-tests.sh @@ -6,7 +6,7 @@ cd $WORKSPACE security default-keychain -s builder.keychain security list-keychains -s builder.keychain echo "Unlock keychain" -security unlock-keychain -p $OSX_KEYCHAIN_PASS +security unlock-keychain -p `cat ~/.config/keychain` echo "Increase keychain unlock timeout" security set-keychain-settings -lut 7200 From b78579b62e53e22ed596ca7622cf5256e32ead14 Mon Sep 17 00:00:00 2001 From: Rolf Bjarne Kvinge Date: Wed, 27 Sep 2017 13:35:32 +0200 Subject: [PATCH 068/145] [registrar] Remove useless interface. --- tools/common/StaticRegistrar.cs | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/tools/common/StaticRegistrar.cs b/tools/common/StaticRegistrar.cs index caf36eaf80..0b0038ac3b 100644 --- a/tools/common/StaticRegistrar.cs +++ b/tools/common/StaticRegistrar.cs @@ -516,14 +516,7 @@ namespace XamCore.Registrar { } } - public interface IStaticRegistrar - { - void Generate (IEnumerable assemblies, string header_path, string source_path); - void GenerateSingleAssembly (IEnumerable assemblies, string header_path, string source_path, string assembly); - Mono.Linker.LinkContext LinkContext { get; set; } - } - - class StaticRegistrar : Registrar, IStaticRegistrar { + class StaticRegistrar : Registrar{ public Target Target { get; private set; } public bool IsSingleAssembly { get { return !string.IsNullOrEmpty (single_assembly); } } From ce1afac26a7a736c0375fde284d595d91f5bd468 Mon Sep 17 00:00:00 2001 From: Rolf Bjarne Kvinge Date: Wed, 27 Sep 2017 13:36:04 +0200 Subject: [PATCH 069/145] [registrar] Don't store LinkContext in the static registrar when in can be fetched from the Target. Partially fixes #59617. This avoids a problem where our code would store null because LinkContext wasn't created yet when the static registrar instance was created. This fixes the missing error from bug #59617. https://bugzilla.xamarin.com/show_bug.cgi?id=59617 --- tools/common/StaticRegistrar.cs | 17 ++++++++++------- tools/mmp/driver.cs | 1 - tools/mtouch/Target.cs | 5 +---- 3 files changed, 11 insertions(+), 12 deletions(-) diff --git a/tools/common/StaticRegistrar.cs b/tools/common/StaticRegistrar.cs index 0b0038ac3b..8c32ed9570 100644 --- a/tools/common/StaticRegistrar.cs +++ b/tools/common/StaticRegistrar.cs @@ -522,7 +522,6 @@ namespace XamCore.Registrar { string single_assembly; IEnumerable input_assemblies; - Mono.Linker.LinkContext link_context; Dictionary availability_annotations; #if MONOMAC @@ -531,11 +530,15 @@ namespace XamCore.Registrar { public Mono.Linker.LinkContext LinkContext { get { - return link_context; + return Target?.LinkContext; } - set { - link_context = value; - availability_annotations = link_context?.Annotations.GetCustomAnnotations ("Availability"); + } + + Dictionary AvailabilityAnnotations { + get { + if (availability_annotations == null) + availability_annotations = LinkContext?.Annotations?.GetCustomAnnotations ("Availability"); + return availability_annotations; } } @@ -1499,9 +1502,9 @@ namespace XamCore.Registrar { if (td.HasCustomAttributes) CollectAvailabilityAttributes (td.CustomAttributes, ref rv); - if (availability_annotations != null) { + if (AvailabilityAnnotations != null) { object attribObjects; - if (availability_annotations.TryGetValue (td, out attribObjects)) + if (AvailabilityAnnotations.TryGetValue (td, out attribObjects)) CollectAvailabilityAttributes ((List) attribObjects, ref rv); } diff --git a/tools/mmp/driver.cs b/tools/mmp/driver.cs index 72f5b45c11..93cf6039fa 100644 --- a/tools/mmp/driver.cs +++ b/tools/mmp/driver.cs @@ -1178,7 +1178,6 @@ namespace Xamarin.Bundler { if (registrar == RegistrarMode.Static) { registrarPath = Path.Combine (App.Cache.Location, "registrar.m"); var registrarH = Path.Combine (App.Cache.Location, "registrar.h"); - BuildTarget.StaticRegistrar.LinkContext = BuildTarget.LinkContext; BuildTarget.StaticRegistrar.Generate (BuildTarget.Resolver.ResolverCache.Values, registrarH, registrarPath); var platform_assembly = BuildTarget.Resolver.ResolverCache.First ((v) => v.Value.Name.Name == BuildTarget.StaticRegistrar.PlatformAssembly).Value; diff --git a/tools/mtouch/Target.cs b/tools/mtouch/Target.cs index 003e9e25a1..2865811fb6 100644 --- a/tools/mtouch/Target.cs +++ b/tools/mtouch/Target.cs @@ -875,10 +875,7 @@ namespace Xamarin.Bundler case RegistrarMode.Static: case RegistrarMode.Dynamic: case RegistrarMode.Default: - StaticRegistrar = new StaticRegistrar (this) - { - LinkContext = LinkContext, - }; + StaticRegistrar = new StaticRegistrar (this); break; } } From 67dbfbef4bc63bd222e80437e6d752393f29aea4 Mon Sep 17 00:00:00 2001 From: Rolf Bjarne Kvinge Date: Wed, 27 Sep 2017 15:47:08 +0200 Subject: [PATCH 070/145] [registrar] Don't verify the SDK for protocol members. Partially fixes #59617. It's not needed, because protocol members don't end up in the registrar output anyway (and would thus not prevent the registrar code from compiling). Classes that implement any protocol members would still run into the SDK check, so this should not prevent real problematic code from being reported either. https://bugzilla.xamarin.com/show_bug.cgi?id=59617 --- src/ObjCRuntime/Registrar.cs | 9 +++++++-- .../ObjCRuntime/RegistrarTest.cs | 18 ++++++++++++++++++ 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/src/ObjCRuntime/Registrar.cs b/src/ObjCRuntime/Registrar.cs index 4599886de6..c78ca2fca3 100644 --- a/src/ObjCRuntime/Registrar.cs +++ b/src/ObjCRuntime/Registrar.cs @@ -261,7 +261,9 @@ namespace XamCore.Registrar { VerifySelector (method, ref exceptions); method.ValidateSignature (ref exceptions); - if (!method.IsPropertyAccessor) + // Protocol members don't show up in the generated output, so it doesn't matter if we run into those. + // If a class implements a protocol, it will still hit this check on the implemented members. + if (!method.IsPropertyAccessor && !method.DeclaringType.IsProtocol) Registrar.VerifyInSdk (ref exceptions, method); rv = AddToMap (method, ref exceptions); @@ -275,7 +277,10 @@ namespace XamCore.Registrar { Properties = new List (); // Do properties and methods live in the same objc namespace? // AddToMap (property, errorIfExists); Properties.Add (property); - Registrar.VerifyInSdk (ref exceptions, property); + // Protocol members don't show up in the generated output, so it doesn't matter if we run into those. + // If a class implements a protocol, it will still hit this check on the implemented members. + if (!property.DeclaringType.IsProtocol) + Registrar.VerifyInSdk (ref exceptions, property); VerifyIsNotKeyword (ref exceptions, property); } diff --git a/tests/monotouch-test/ObjCRuntime/RegistrarTest.cs b/tests/monotouch-test/ObjCRuntime/RegistrarTest.cs index 7023661c14..e6ffe52cf2 100644 --- a/tests/monotouch-test/ObjCRuntime/RegistrarTest.cs +++ b/tests/monotouch-test/ObjCRuntime/RegistrarTest.cs @@ -2602,4 +2602,22 @@ namespace MonoTouchFixtures.ObjCRuntime { [Export ("method")] public static void StaticMethod () { } } + + // It should be possible to use a protocol with a member we can't use yet (because its signature uses a type not in the current SDK) + [Protocol] + [ProtocolMember (IsRequired = false, IsProperty = false, IsStatic = false, Name = "DetectPremonition", Selector = "detectPremonition:", ParameterType = new Type [] { typeof (FutureClass) }, ParameterByRef = new bool [] { false })] + public interface ISomeDelegate : INativeObject, IDisposable + { + } + [Introduced (PlatformName.MacOSX, 100, 0)] + [Introduced (PlatformName.iOS, 100, 0)] + [Introduced (PlatformName.TvOS, 100, 0)] + [Introduced (PlatformName.WatchOS, 100, 0)] + public class FutureClass : NSObject + { + } + [Preserve] + public class SomeConsumer : NSObject, ISomeDelegate + { + } } From 94c416aff75f399b804eb9244ce1310d8596246b Mon Sep 17 00:00:00 2001 From: Rolf Bjarne Kvinge Date: Thu, 28 Sep 2017 07:45:50 +0200 Subject: [PATCH 071/145] [tests][mtouch] Fix tests after registrar changes. --- tests/mtouch/RegistrarTest.cs | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/tests/mtouch/RegistrarTest.cs b/tests/mtouch/RegistrarTest.cs index 4dc7f44af9..44f04f67e5 100644 --- a/tests/mtouch/RegistrarTest.cs +++ b/tests/mtouch/RegistrarTest.cs @@ -629,11 +629,7 @@ public struct FooF { public NSObject Obj; } $".*/Test.cs(.*): error MT4162: The type 'FutureType' (used as a parameter in CurrentType.Foo) is not available in {name} .* (it was introduced in {name} 99.0.0): 'use Z instead'. Please build with a newer {name} SDK (usually done by using the most recent version of Xcode).", $".*/Test.cs(.*): error MT4162: The type 'FutureType' (used as a parameter in CurrentType.Foo) is not available in {name} .* (it was introduced in {name} 89.0.0). Please build with a newer {name} SDK (usually done by using the most recent version of Xcode).", $".*/Test.cs(.*): error MT4162: The type 'FutureType' (used as a return type in CurrentType.Bar) is not available in {name} .* (it was introduced in {name} 99.0.0): 'use Z instead'. Please build with a newer {name} SDK (usually done by using the most recent version of Xcode).", - $".*/Test.cs(.*): error MT4162: The type 'FutureType' (used as a return type in CurrentType.Bar) is not available in {name} .* (it was introduced in {name} 89.0.0). Please build with a newer {name} SDK (usually done by using the most recent version of Xcode).", - $"error MT4162: The type 'FutureEnum' (used as the property type of IFutureProtocol.FutureProperty) is not available in {name} .* (it was introduced in {name} 99.0.0). Please build with a newer {name} SDK (usually done by using the most recent version of Xcode).", - $"error MT4162: The type 'FutureEnum' (used as a return type in IFutureProtocol.FutureMethod) is not available in {name} .* (it was introduced in {name} 99.0.0). Please build with a newer {name} SDK (usually done by using the most recent version of Xcode).", - $"error MT4162: The type 'FutureEnum' (used as a parameter in IFutureProtocol.FutureMethod) is not available in {name} .* (it was introduced in {name} 99.0.0). Please build with a newer {name} SDK (usually done by using the most recent version of Xcode)." - + $".*/Test.cs(.*): error MT4162: The type 'FutureType' (used as a return type in CurrentType.Bar) is not available in {name} .* (it was introduced in {name} 89.0.0). Please build with a newer {name} SDK (usually done by using the most recent version of Xcode)." ); } From 0412a80f2c9f07f5a93dab81c753fa67fa7da3c1 Mon Sep 17 00:00:00 2001 From: Rolf Bjarne Kvinge Date: Mon, 2 Oct 2017 17:12:29 +0200 Subject: [PATCH 072/145] Bump llvm to revert accidental unbump when merging the xcode9 branch. In 1690ccbc991ab59835f76a15ef510cd182259915 (when merging the Xcode 9 branch into master), llvm was accidentally debumped from mono/llvm@6aa74ae5723b13433adce76e94adcc090f2768ee to mono/llvm@975e3a6903003d7dba1b01f8a3c4a42a55049842. So rebump (and one commit further, to match what we're using in the d15-4 branch). --- external/llvm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/external/llvm b/external/llvm index 975e3a6903..21492ec92e 160000 --- a/external/llvm +++ b/external/llvm @@ -1 +1 @@ -Subproject commit 975e3a6903003d7dba1b01f8a3c4a42a55049842 +Subproject commit 21492ec92e255a43bc6b687468f1eb18a635d94e From 00761c4744ad95c8ede66fb7779491eb698ab7f9 Mon Sep 17 00:00:00 2001 From: "luis.aguilera" Date: Mon, 2 Oct 2017 12:04:34 -0400 Subject: [PATCH 073/145] Updated reference to mono/mono@0dd35e9 --- external/mono | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/external/mono b/external/mono index 7d78877800..0dd35e9d64 160000 --- a/external/mono +++ b/external/mono @@ -1 +1 @@ -Subproject commit 7d7887780057e40f3921ceedca6c1579a928655d +Subproject commit 0dd35e9d6474922034489b23e6604c46605e119a From 75235cdf17ac67e28d072a18bcae22da2da804a1 Mon Sep 17 00:00:00 2001 From: Chris Hamons Date: Tue, 3 Oct 2017 12:59:13 -0500 Subject: [PATCH 074/145] Fix a number of introspection test failures on 10.13 (#2815) (#2833) --- src/AudioUnit/AudioComponent.cs | 4 ++-- src/Constants.mac.cs.in | 2 +- src/Foundation/NSObject.mac.cs | 1 + src/corebluetooth.cs | 21 ++++++++++++++----- src/externalaccessory.cs | 10 ++++----- src/foundation.cs | 20 +++++++++++------- src/safariservices.cs | 2 +- src/spritekit.cs | 2 +- src/wkwebkit.cs | 6 +++--- tests/apitest/src/EveryFrameworkSmokeTest.cs | 1 + tests/introspection/ApiTypoTest.cs | 1 + tests/introspection/Mac/MacApiCtorInitTest.cs | 4 ++++ tests/introspection/Mac/MacApiFieldTest.cs | 4 ++++ tests/introspection/Mac/MacApiProtocolTest.cs | 10 +++++++++ .../Mac/MacApiWeakPropertyTest.cs | 3 +++ tools/common/StaticRegistrar.cs | 3 ++- tools/linker/ObjCExtensions.cs | 2 ++ .../linker/MonoMac.Tuner/MonoMacNamespaces.cs | 1 + 18 files changed, 70 insertions(+), 27 deletions(-) diff --git a/src/AudioUnit/AudioComponent.cs b/src/AudioUnit/AudioComponent.cs index a4fad8fefe..30c40144a0 100644 --- a/src/AudioUnit/AudioComponent.cs +++ b/src/AudioUnit/AudioComponent.cs @@ -397,11 +397,11 @@ namespace XamCore.AudioUnit #endif #if IOS || MONOMAC - [NoWatch, NoTV, Mac (10,13), iOS (11,0)] + [NoWatch, NoTV, Mac (10,13, onlyOn64: true), iOS (11,0)] [DllImport (Constants.AudioUnitLibrary)] static extern int /* OSStatus */ AudioUnitExtensionSetComponentList (IntPtr /* CFString */ extensionIdentifier, /* CFArrayRef */ IntPtr audioComponentInfo); - [NoWatch, NoTV, Mac (10,13), iOS (11,0)] + [NoWatch, NoTV, Mac (10,13, onlyOn64: true), iOS (11,0)] [DllImport (Constants.AudioUnitLibrary)] static extern /* CFArrayRef */ IntPtr AudioUnitExtensionCopyComponentList (IntPtr /* CFString */ extensionIdentifier); diff --git a/src/Constants.mac.cs.in b/src/Constants.mac.cs.in index 5f08f1c7a0..6ad4937a16 100644 --- a/src/Constants.mac.cs.in +++ b/src/Constants.mac.cs.in @@ -130,7 +130,7 @@ namespace MonoMac { public const string CoreMLLibrary = "/System/Library/Frameworks/CoreML.framework/CoreML"; public const string VisionLibrary = "/System/Library/Frameworks/Vision.framework/Vision"; public const string IOSurfaceLibrary = "/System/Library/Frameworks/IOSurface.framework/IOSurface"; - public const string PhotosUILibrary = "/System/Library/Frameworks/Photos.framework/PhotosUI"; + public const string PhotosUILibrary = "/System/Library/Frameworks/PhotosUI.framework/PhotosUI"; public const string ExternalAccessoryLibrary = "/System/Library/Frameworks/ExternalAccessory.framework/ExternalAccessory"; } } diff --git a/src/Foundation/NSObject.mac.cs b/src/Foundation/NSObject.mac.cs index c548884f31..cd97a5ea5e 100644 --- a/src/Foundation/NSObject.mac.cs +++ b/src/Foundation/NSObject.mac.cs @@ -95,6 +95,7 @@ namespace XamCore.Foundation { static IntPtr io = Dlfcn.dlopen (Constants.ModelIOLibrary, 1); static IntPtr nc = Dlfcn.dlopen (Constants.NotificationCenterLibrary, 1); static IntPtr pl = Dlfcn.dlopen (Constants.PhotosLibrary, 1); + static IntPtr pu = Dlfcn.dlopen (Constants.PhotosUILibrary, 1); static IntPtr mp = Dlfcn.dlopen (Constants.MediaPlayerLibrary, 1); static IntPtr pc = Dlfcn.dlopen (Constants.PrintCoreLibrary, 1); static IntPtr cml = Dlfcn.dlopen (Constants.CoreMLLibrary, 1); diff --git a/src/corebluetooth.cs b/src/corebluetooth.cs index ec9d2b2dce..7254f712eb 100644 --- a/src/corebluetooth.cs +++ b/src/corebluetooth.cs @@ -59,6 +59,7 @@ namespace XamCore.CoreBluetooth { [Protocolize] CBCentralManagerDelegate Delegate { get; set; } + [Mac (10, 7, onlyOn64: true)] // Was removed from 32-bit in 10.13 unannounced [Export ("initWithDelegate:queue:")] [PostGet ("WeakDelegate")] IntPtr Constructor ([NullAllowed, Protocolize] CBCentralManagerDelegate centralDelegate, [NullAllowed] DispatchQueue queue); @@ -482,11 +483,11 @@ namespace XamCore.CoreBluetooth { [Export ("state")] CBPeripheralState State { get; } - [iOS (11,0)][TV (11,0)][Mac (10,13)] + [iOS (11,0)][TV (11,0)][Mac (10,13, onlyOn64: true)] [Export ("canSendWriteWithoutResponse")] bool CanSendWriteWithoutResponse { get; } - [iOS (11,0)][TV (11,0)][Mac (10,13)] + [iOS (11,0)][TV (11,0)][Mac (10,13, onlyOn64: true)] [Export ("openL2CAPChannel:")] void OpenL2CapChannel (ushort psm); } @@ -779,8 +780,14 @@ namespace XamCore.CoreBluetooth { [Watch (4,0)] [Since (6, 0), Mac(10,9)] + [DisableDefaultCtor] [BaseType (typeof (CBManager), Delegates=new[] { "WeakDelegate" }, Events=new[] { typeof (CBPeripheralManagerDelegate) })] interface CBPeripheralManager { + + [Mac (10,9, onlyOn64: true)] // Was removed from 32-bit in 10.13 unannounced + [Export ("init")] + IntPtr Constructor (); + [NoTV] [NoWatch] [Export ("initWithDelegate:queue:")] @@ -834,11 +841,11 @@ namespace XamCore.CoreBluetooth { [Export ("updateValue:forCharacteristic:onSubscribedCentrals:")] bool UpdateValue (NSData value, CBMutableCharacteristic characteristic, [NullAllowed] CBCentral[] subscribedCentrals); - [iOS (11,0)][TV (11,0)][Mac (10,13)] + [iOS (11,0)][TV (11,0)][Mac (10,13, onlyOn64: true)] [Export ("publishL2CAPChannelWithEncryption:")] void PublishL2CapChannel (bool encryptionRequired); - [iOS (11,0)][TV (11,0)][Mac (10,13)] + [iOS (11,0)][TV (11,0)][Mac (10,13, onlyOn64: true)] [Export ("unpublishL2CAPChannel:")] void UnpublishL2CapChannel (ushort psm); @@ -935,19 +942,23 @@ namespace XamCore.CoreBluetooth { NSUuid Identifier { get; } } + // The type is available in 32bits macOS 10.13 even if most properties are 64 bits only [Watch (4,0)][iOS (11,0)][TV (11,0)][Mac (10,13)] [BaseType (typeof (NSObject), Name = "CBL2CAPChannel")] interface CBL2CapChannel { - + [Mac (10,13, onlyOn64: true)] [Export ("peer")] CBPeer Peer { get; } + [Mac (10,13, onlyOn64: true)] [Export ("inputStream")] NSInputStream InputStream { get; } + [Mac (10,13, onlyOn64: true)] [Export ("outputStream")] NSOutputStream OutputStream { get; } + [Mac (10,13, onlyOn64: true)] [Export ("PSM")] /* uint16_t */ ushort Psm { get; } } diff --git a/src/externalaccessory.cs b/src/externalaccessory.cs index 534287036a..a5f6f25145 100644 --- a/src/externalaccessory.cs +++ b/src/externalaccessory.cs @@ -14,7 +14,7 @@ using XamCore.UIKit; namespace XamCore.ExternalAccessory { - [Mac (10, 13)][TV (10,0)] + [Mac (10, 13, onlyOn64: true)][TV (10,0)] [BaseType (typeof (NSObject), Delegates=new string [] { "WeakDelegate" }, Events=new Type [] {typeof(EAAccessoryDelegate)})] // Objective-C exception thrown. Name: EAAccessoryInitException Reason: -init not supported. EAAccessoryManager is responsible for creating all objects. [DisableDefaultCtor] @@ -58,7 +58,7 @@ namespace XamCore.ExternalAccessory { string DockType { get; } } - [Mac (10, 13)][TV (10,0)] + [Mac (10, 13, onlyOn64: true)][TV (10,0)] [BaseType (typeof (NSObject))] [Model] [Protocol] @@ -67,7 +67,7 @@ namespace XamCore.ExternalAccessory { void Disconnected (EAAccessory accessory); } - [Mac (10, 13)][TV (10,0)] + [Mac (10, 13, onlyOn64: true)][TV (10,0)] interface EAAccessoryEventArgs { [Export ("EAAccessoryKey")] EAAccessory Accessory { get; } @@ -77,7 +77,7 @@ namespace XamCore.ExternalAccessory { EAAccessory Selected { get; } } - [Mac (10, 13)][TV (10,0)] + [Mac (10, 13, onlyOn64: true)][TV (10,0)] [BaseType (typeof (NSObject))] // Objective-C exception thrown. Name: EAAccessoryManagerInitException Reason: -init is not supported. Use +sharedAccessoryManager. [DisableDefaultCtor] @@ -116,7 +116,7 @@ namespace XamCore.ExternalAccessory { void ShowBluetoothAccessoryPicker ([NullAllowed] NSPredicate predicate, [NullAllowed] Action completion); } - [Mac (10, 13)][TV (10,0)] + [Mac (10, 13, onlyOn64: true)][TV (10,0)] [BaseType (typeof (NSObject))] // Objective-C exception thrown. Name: EASessionInitException Reason: -init not supported. use -initWithAccessory:forProtocol. [DisableDefaultCtor] diff --git a/src/foundation.cs b/src/foundation.cs index b64c8443d5..b893717b7a 100644 --- a/src/foundation.cs +++ b/src/foundation.cs @@ -5280,7 +5280,9 @@ namespace XamCore.Foundation #if MONOMAC , NSPasteboardReading, NSPasteboardWriting #endif +#if !(MONOMAC && !XAMCORE_2_0) // exclude Classic/XM , NSItemProviderWriting, NSItemProviderReading +#endif { [Export ("initWithScheme:host:path:")] IntPtr Constructor (string scheme, string host, string path); @@ -5972,20 +5974,20 @@ namespace XamCore.Foundation #endif // From the NSItemProviderReading protocol - [Watch (4,0), TV (11,0), Mac (10,13), iOS (11,0)] + [Watch (4,0), TV (11,0), Mac (10,13, onlyOn64: true), iOS (11,0)] [Static] [Export ("readableTypeIdentifiersForItemProvider", ArgumentSemantic.Copy)] new string[] ReadableTypeIdentifiers { get; } // From the NSItemProviderReading protocol - [Watch (4,0), TV (11,0), Mac (10,13), iOS (11,0)] + [Watch (4,0), TV (11,0), Mac (10,13, onlyOn64: true), iOS (11,0)] [Static] [Export ("objectWithItemProviderData:typeIdentifier:error:")] [return: NullAllowed] new NSUrl GetObject (NSData data, string typeIdentifier, [NullAllowed] out NSError outError); // From the NSItemProviderWriting protocol - [Watch (4,0), TV (11,0), Mac (10,13), iOS (11,0)] + [Watch (4,0), TV (11,0), Mac (10,13, onlyOn64: true), iOS (11,0)] [Static] [Export ("writableTypeIdentifiersForItemProvider", ArgumentSemantic.Copy)] new string[] WritableTypeIdentifiers { get; } @@ -7788,7 +7790,9 @@ namespace XamCore.Foundation #if MONOMAC , NSPasteboardReading, NSPasteboardWriting // Documented that it implements NSPasteboard protocols even if header doesn't show it #endif +#if !(MONOMAC && !XAMCORE_2_0) // exclude Classic/XM , NSItemProviderReading, NSItemProviderWriting +#endif { [Export ("initWithData:encoding:")] IntPtr Constructor (NSData data, NSStringEncoding encoding); @@ -8050,19 +8054,19 @@ namespace XamCore.Foundation // From the NSItemProviderReading protocol - [Watch (4,0), TV (11,0), Mac (10,13), iOS (11,0)] + [Watch (4,0), TV (11,0), Mac (10,13, onlyOn64: true), iOS (11,0)] [Static] [Export ("readableTypeIdentifiersForItemProvider", ArgumentSemantic.Copy)] new string[] ReadableTypeIdentifiers { get; } - [Watch (4,0), TV (11,0), Mac (10,13), iOS (11,0)] + [Watch (4,0), TV (11,0), Mac (10,13, onlyOn64: true), iOS (11,0)] [Static] [Export ("objectWithItemProviderData:typeIdentifier:error:")] [return: NullAllowed] new NSString GetObject (NSData data, string typeIdentifier, [NullAllowed] out NSError outError); // From the NSItemProviderWriting protocol - [Watch (4,0), TV (11,0), Mac (10,13), iOS (11,0)] + [Watch (4,0), TV (11,0), Mac (10,13, onlyOn64: true), iOS (11,0)] [Static] [Export ("writableTypeIdentifiersForItemProvider", ArgumentSemantic.Copy)] new string[] WritableTypeIdentifiers { get; } @@ -9742,7 +9746,7 @@ namespace XamCore.Foundation interface INSItemProviderReading {} - [Watch (4,0), TV (11,0), Mac (10,13), iOS (11,0)] + [Watch (4,0), TV (11,0), Mac (10,13, onlyOn64: true), iOS (11,0)] [Protocol] interface NSItemProviderReading { @@ -9765,7 +9769,7 @@ namespace XamCore.Foundation interface INSItemProviderWriting {} - [Watch (4,0), TV (11,0), Mac (10,13), iOS (11,0)] + [Watch (4,0), TV (11,0), Mac (10,13, onlyOn64: true), iOS (11,0)] [Protocol] interface NSItemProviderWriting { diff --git a/src/safariservices.cs b/src/safariservices.cs index 838e791d36..e09c9c4cd8 100644 --- a/src/safariservices.cs +++ b/src/safariservices.cs @@ -185,7 +185,7 @@ namespace XamCore.SafariServices { void ShowPreferencesForExtension (string identifier, [NullAllowed] Action completionHandler); [Mac (10,12,4, onlyOn64 : true)] - [Advice ("Unavailable to extensions")] + [Advice ("Unavailable to extensions.")] [Static][Async] [Export ("dispatchMessageWithName:toExtensionWithIdentifier:userInfo:completionHandler:")] void DispatchMessage (string messageName, string identifier, [NullAllowed] NSDictionary userInfo, [NullAllowed] Action completionHandler); diff --git a/src/spritekit.cs b/src/spritekit.cs index ff6516ca72..bc1f7545b1 100644 --- a/src/spritekit.cs +++ b/src/spritekit.cs @@ -3398,7 +3398,7 @@ namespace XamCore.SpriteKit { // SKRenderer is not available for WatchKit apps and the iOS simulator [NoWatch] - [TV (11,0), Mac (10,13), iOS (11,0)] + [TV (11,0), Mac (10,13, onlyOn64 : true), iOS (11,0)] [BaseType (typeof(NSObject))] [DisableDefaultCtor] interface SKRenderer { diff --git a/src/wkwebkit.cs b/src/wkwebkit.cs index b4e50a703d..22454e4023 100644 --- a/src/wkwebkit.cs +++ b/src/wkwebkit.cs @@ -61,7 +61,7 @@ namespace XamCore.WebKit WKBackForwardListItem ItemAtIndex (nint index); } - [Mac (10,13), iOS (11,0)] + [Mac (10,13, onlyOn64: true), iOS (11,0)] [BaseType (typeof(NSObject))] interface WKContentRuleList { @@ -69,7 +69,7 @@ namespace XamCore.WebKit string Identifier { get; } } - [Mac (10,13), iOS (11,0)] + [Mac (10,13, onlyOn64: true), iOS (11,0)] [BaseType (typeof(NSObject))] interface WKContentRuleListStore { @@ -303,7 +303,7 @@ namespace XamCore.WebKit } - [Mac (10,13), iOS (11,0)] + [Mac (10,13, onlyOn64: true), iOS (11,0)] [BaseType (typeof(NSObject))] interface WKSnapshotConfiguration : NSCopying { [Export ("rect")] diff --git a/tests/apitest/src/EveryFrameworkSmokeTest.cs b/tests/apitest/src/EveryFrameworkSmokeTest.cs index 2cda77a1b7..b92e1035d2 100644 --- a/tests/apitest/src/EveryFrameworkSmokeTest.cs +++ b/tests/apitest/src/EveryFrameworkSmokeTest.cs @@ -67,6 +67,7 @@ namespace Xamarin.Mac.Tests case "SocialLibrary": case "SpriteKitLibrary": case "PhotosLibrary": + case "PhotosUILibrary": case "IntentsLibrary": case "MediaPlayerLibrary": return LoadStatus.Acceptable; diff --git a/tests/introspection/ApiTypoTest.cs b/tests/introspection/ApiTypoTest.cs index c38f9b6aef..4f5d8b1b11 100644 --- a/tests/introspection/ApiTypoTest.cs +++ b/tests/introspection/ApiTypoTest.cs @@ -75,6 +75,7 @@ namespace Introspection "Accurracy", "Achivements", "Acos", + "Acn", "Actionname", "Activitiy", "Addin", diff --git a/tests/introspection/Mac/MacApiCtorInitTest.cs b/tests/introspection/Mac/MacApiCtorInitTest.cs index fa293083c5..b9fc1a405b 100644 --- a/tests/introspection/Mac/MacApiCtorInitTest.cs +++ b/tests/introspection/Mac/MacApiCtorInitTest.cs @@ -155,6 +155,10 @@ namespace Introspection { case "MonoMac.AppKit.NSMutableFontCollection": case "AppKit.NSMutableFontCollection": return true; // Crashes in 10.12 + case "CoreBluetooth.CBCentralManager": + if (IntPtr.Size == 4 && Mac.CheckSystemVersion (10, 13)) // 32-bit removed unannounced in 10.13 + return true; + break; } switch (type.Namespace) { diff --git a/tests/introspection/Mac/MacApiFieldTest.cs b/tests/introspection/Mac/MacApiFieldTest.cs index 9026a486d7..07a56fccac 100644 --- a/tests/introspection/Mac/MacApiFieldTest.cs +++ b/tests/introspection/Mac/MacApiFieldTest.cs @@ -155,6 +155,10 @@ namespace Introspection { // MonoMac.CoreServices.CFHTTPMessage - document in 10.9 but returns null case "_AuthenticationSchemeOAuth1": return true; + case "CBUUIDValidRangeString": + if (Mac.CheckSystemVersion (10, 13)); // radar 32858911 + return true; + break; default: return base.Skip (p); } diff --git a/tests/introspection/Mac/MacApiProtocolTest.cs b/tests/introspection/Mac/MacApiProtocolTest.cs index 6f9b5b4596..60c66a28cd 100644 --- a/tests/introspection/Mac/MacApiProtocolTest.cs +++ b/tests/introspection/Mac/MacApiProtocolTest.cs @@ -217,6 +217,16 @@ namespace Introspection { break; } break; + case "NSItemProviderWriting": + switch (type.Name) { + case "NSMutableString": + case "NSString": + case "NSUrl": + if (IntPtr.Size == 4) // Only on 64-bit version of these types + return true; + break; + } + break; } switch (type.Name) { diff --git a/tests/introspection/Mac/MacApiWeakPropertyTest.cs b/tests/introspection/Mac/MacApiWeakPropertyTest.cs index 66fd681cf9..0938c8d759 100644 --- a/tests/introspection/Mac/MacApiWeakPropertyTest.cs +++ b/tests/introspection/Mac/MacApiWeakPropertyTest.cs @@ -20,6 +20,9 @@ namespace Introspection { return true; case "NSAttributedStringDocumentAttributes": // NSAttributedStringDocumentAttributes.WeakDocumentType is done by hand, not a binding return true; + // VNImageOptions is a DictionaryContainer that exposes a Weak* NSDictionary + case "VNImageOptions": + return true; } return base.Skip (type); } diff --git a/tools/common/StaticRegistrar.cs b/tools/common/StaticRegistrar.cs index 8c32ed9570..2ec484f6a0 100644 --- a/tools/common/StaticRegistrar.cs +++ b/tools/common/StaticRegistrar.cs @@ -2376,6 +2376,7 @@ namespace XamCore.Registrar { static bool IsQTKitType (ObjCType type) => IsTypeCore (type, "QTKit"); static bool IsMapKitType (ObjCType type) => IsTypeCore (type, "MapKit"); static bool IsIntentsType (ObjCType type) => IsTypeCore (type, "Intents"); + static bool IsExternalAccessoryType (ObjCType type) => IsTypeCore (type, "ExternalAccessory"); static bool IsMetalType (ObjCType type) { @@ -2434,7 +2435,7 @@ namespace XamCore.Registrar { // These are 64-bit frameworks that extend NSExtensionContext / NSUserActivity, which you can't do // if the header doesn't declare them. So hack it away, since they are useless in 64-bit anyway - if (!Is64Bits && (IsMapKitType (@class) || IsIntentsType (@class))) + if (!Is64Bits && (IsMapKitType (@class) || IsIntentsType (@class) || IsExternalAccessoryType (@class))) continue; #endif diff --git a/tools/linker/ObjCExtensions.cs b/tools/linker/ObjCExtensions.cs index 1fb5bd2340..a4298948f2 100644 --- a/tools/linker/ObjCExtensions.cs +++ b/tools/linker/ObjCExtensions.cs @@ -62,6 +62,7 @@ namespace Xamarin.Linker { IOSurface = profile.GetNamespace ("IOSurface"); PdfKit = profile.GetNamespace ("PdfKit"); #if MONOMAC + PhotosUI = profile.GetNamespace ("PhotosUI"); IOBluetooth = profile.GetNamespace ("IOBluetooth"); IOBluetoothUI = profile.GetNamespace ("IOBluetoothUI"); FinderSync = profile.GetNamespace ("FinderSync"); @@ -147,6 +148,7 @@ namespace Xamarin.Linker { public static string PdfKit { get; private set; } #if MONOMAC + public static string PhotosUI { get; private set; } public static string IOBluetooth { get; private set; } public static string IOBluetoothUI { get; private set; } public static string FinderSync { get; private set; } diff --git a/tools/mmp/linker/MonoMac.Tuner/MonoMacNamespaces.cs b/tools/mmp/linker/MonoMac.Tuner/MonoMacNamespaces.cs index 80a88f7f41..1c883120ef 100644 --- a/tools/mmp/linker/MonoMac.Tuner/MonoMacNamespaces.cs +++ b/tools/mmp/linker/MonoMac.Tuner/MonoMacNamespaces.cs @@ -68,6 +68,7 @@ namespace MonoMac.Tuner { { Constants.MediaPlayerLibrary, Namespaces.MediaPlayer }, { Constants.IntentsLibrary, Namespaces.Intents }, { Constants.PhotosLibrary, Namespaces.Photos }, + { Constants.PhotosUILibrary, Namespaces.PhotosUI }, { Constants.PrintCoreLibrary, Namespaces.PrintCore }, { Constants.CoreMLLibrary, Namespaces.CoreML }, { Constants.VisionLibrary, Namespaces.Vision }, From 706d0e09d72df79f8e4cfd6a54448a61a15d0646 Mon Sep 17 00:00:00 2001 From: Rolf Bjarne Kvinge Date: Wed, 4 Oct 2017 17:42:09 +0200 Subject: [PATCH 075/145] [registrar] Store the attribute type separately for availability attributes saved for the registrar. (#2807) (#2838) The registrar requires the availability attributes to work properly, which is non-trivial when the linker is being used, because the linker runs before the registrar, and will remove availability attributes. For this reason we store the availability attributes separately when the linker removes them so that the registrar can still find them, but unfortunately it's not enough to store the CustomAttribute instance, because it may end up crippled: if the attribute type itself is removed by the linker, then it's not possible to get the attribute type from the CustomAttribute instance, because 'attribute.Constructor.DeclaringType' returns null (the linker sets the declaring type of the constructor to null). Solution: store the attribute type separately; now we use a Tuple of CustomAttribute and TypeReference. Fixes this ugly exception: System.NullReferenceException: Object reference not set to an instance of an object at XamCore.Registrar.Registrar.RegisterAssembly (Mono.Cecil.AssemblyDefinition assembly) [0x00146] in /work/maccore/master/xamarin-macios/src/ObjCRuntime/Registrar.cs:2316 at XamCore.Registrar.StaticRegistrar.Generate (System.Collections.Generic.IEnumerable`1[T] assemblies, System.String header_path, System.String source_path) [0x00035] in /work/maccore/master/xamarin-macios/tools/common/StaticRegistrar.cs:4197 at Xamarin.Bundler.RunRegistrarTask.Execute () [0x00001] in /work/maccore/master/xamarin-macios/tools/mtouch/BuildTasks.mtouch.cs:154 --- tests/linker-ios/link all/LinkAllTest.cs | 13 +++++++++++++ tools/common/StaticRegistrar.cs | 12 +++++++++--- tools/linker/CoreRemoveAttributes.cs | 10 ++++++---- 3 files changed, 28 insertions(+), 7 deletions(-) diff --git a/tests/linker-ios/link all/LinkAllTest.cs b/tests/linker-ios/link all/LinkAllTest.cs index 83a6909752..b92b0a07a4 100644 --- a/tests/linker-ios/link all/LinkAllTest.cs +++ b/tests/linker-ios/link all/LinkAllTest.cs @@ -574,4 +574,17 @@ namespace LinkAll { #endif } } + + [Introduced (PlatformName.MacOSX, 1, 0, PlatformArchitecture.Arch64)] + [Introduced (PlatformName.iOS, 1, 0)] + [Introduced (PlatformName.TvOS, 1, 0)] + [Introduced (PlatformName.WatchOS, 1, 0)] + [Preserve] + public class ClassFromThePast : NSObject + { + [Export ("foo:")] + public void Foo (ClassFromThePast obj) + { + } + } } diff --git a/tools/common/StaticRegistrar.cs b/tools/common/StaticRegistrar.cs index 2ec484f6a0..6f4dfbfa6b 100644 --- a/tools/common/StaticRegistrar.cs +++ b/tools/common/StaticRegistrar.cs @@ -1355,6 +1355,11 @@ namespace XamCore.Registrar { } void CollectAvailabilityAttributes (IEnumerable attributes, ref List list) + { + CollectAvailabilityAttributes (attributes.Select ((v) => new Tuple (v, v.Constructor.DeclaringType)), ref list); + } + + void CollectAvailabilityAttributes (IEnumerable> attributes, ref List list) { PlatformName currentPlatform; #if MTOUCH @@ -1375,8 +1380,9 @@ namespace XamCore.Registrar { currentPlatform = global::XamCore.ObjCRuntime.PlatformName.MacOSX; #endif - foreach (var ca in attributes) { - var caType = ca.Constructor.DeclaringType.Resolve (); + foreach (var tuple in attributes) { + var ca = tuple.Item1; + var caType = tuple.Item2; if (caType.Namespace != ObjCRuntime) continue; @@ -1505,7 +1511,7 @@ namespace XamCore.Registrar { if (AvailabilityAnnotations != null) { object attribObjects; if (AvailabilityAnnotations.TryGetValue (td, out attribObjects)) - CollectAvailabilityAttributes ((List) attribObjects, ref rv); + CollectAvailabilityAttributes ((List>) attribObjects, ref rv); } return rv; diff --git a/tools/linker/CoreRemoveAttributes.cs b/tools/linker/CoreRemoveAttributes.cs index af602fc00b..14558a249b 100644 --- a/tools/linker/CoreRemoveAttributes.cs +++ b/tools/linker/CoreRemoveAttributes.cs @@ -50,19 +50,21 @@ namespace Xamarin.Linker { case "DeprecatedAttribute": case "IntroducedAttribute": var dict = context.Annotations.GetCustomAnnotations ("Availability"); - List attribs; + List> attribs; object attribObjects; if (!dict.TryGetValue (provider, out attribObjects)) { - attribs = new List (); + attribs = new List> (); dict [provider] = attribs; } else { - attribs = (List) attribObjects; + attribs = (List>) attribObjects; } // Make sure the attribute is resolved, since after removing the attribute // it won't be able to do it. The 'CustomAttribute.Resolve' method is private, but fetching // any property will cause it to be called. + // We also need to store the constructor's DeclaringType separately, because it may + // be nulled out from the constructor by the linker if the attribute type itself is linked away. var dummy = attribute.HasConstructorArguments; - attribs.Add (attribute); + attribs.Add (new Tuple (attribute, attribute.Constructor.DeclaringType)); break; } } From 1727778f525ef140605942bdab8f37b3ef916780 Mon Sep 17 00:00:00 2001 From: Rolf Bjarne Kvinge Date: Fri, 6 Oct 2017 12:15:28 +0200 Subject: [PATCH 076/145] =?UTF-8?q?Bump=20mono=20to=20get=20fixes=20for=20?= =?UTF-8?q?bug=C2=A0#58411=20and=20bug=20#59832.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit mono/mono@9b466abc495 (HEAD -> 2017-06) [appletls] Trust SecTrustResult.Proceed as well. Fixes #58411. mono/mono@ab058f8e49e [aot] Don't error out if a method fails to JIT in full-aot mode. This was a regression caused by 9302c31f81abd2f5bbf9a8ddd27993e1ece55db2. Fixes #59832. (#5686) (#5709) mono/mono@cb4c3ca997f Add glib to the list of packages with debugging symbols. (#5658) Diff: https://github.com/mono/mono/compare/0dd35e9d6474922034489b23e6604c46605e119a...9b466abc495c3c4af9146de7a4f3a202fe878230 --- external/mono | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/external/mono b/external/mono index 0dd35e9d64..9b466abc49 160000 --- a/external/mono +++ b/external/mono @@ -1 +1 @@ -Subproject commit 0dd35e9d6474922034489b23e6604c46605e119a +Subproject commit 9b466abc495c3c4af9146de7a4f3a202fe878230 From a4e98d8aff0d690a2a340acc81259fe92105afb9 Mon Sep 17 00:00:00 2001 From: "luis.aguilera" Date: Wed, 11 Oct 2017 16:16:49 -0400 Subject: [PATCH 077/145] Updated reference to mono/mono@fbc487f --- external/mono | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/external/mono b/external/mono index 9b466abc49..fbc487ff42 160000 --- a/external/mono +++ b/external/mono @@ -1 +1 @@ -Subproject commit 9b466abc495c3c4af9146de7a4f3a202fe878230 +Subproject commit fbc487ff424c479c25d0bbd24110d34890ffd793 From 9242e9f16d383aa4cdf577cfb474d250843c12af Mon Sep 17 00:00:00 2001 From: Chris Hamons Date: Thu, 12 Oct 2017 10:06:29 -0500 Subject: [PATCH 078/145] Update branch to d15-5-2017-06 --- .gitmodules | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitmodules b/.gitmodules index bb019dc557..3a68da2c00 100644 --- a/.gitmodules +++ b/.gitmodules @@ -15,7 +15,7 @@ [submodule "external/mono"] path = external/mono url = ../../mono/mono.git - branch = 2017-06 + branch = d15-5-2017-06 [submodule "external/MonoTouch.Dialog"] path = external/MonoTouch.Dialog url = ../../migueldeicaza/MonoTouch.Dialog.git From 7d78802f1508217389f38e3d9cebf4316edecc61 Mon Sep 17 00:00:00 2001 From: "luis.aguilera" Date: Thu, 12 Oct 2017 13:34:18 -0400 Subject: [PATCH 079/145] Updated reference to mono/mono@0429840 --- external/mono | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/external/mono b/external/mono index fbc487ff42..0429840e5b 160000 --- a/external/mono +++ b/external/mono @@ -1 +1 @@ -Subproject commit fbc487ff424c479c25d0bbd24110d34890ffd793 +Subproject commit 0429840e5b28e446ac141f3d35bf37dd67cee2a4 From 5d2bfff6441fa69913b510eba60c9c4ccbb38182 Mon Sep 17 00:00:00 2001 From: "luis.aguilera" Date: Fri, 13 Oct 2017 09:04:18 -0400 Subject: [PATCH 080/145] Updated reference to mono/mono@b21ae3e --- external/mono | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/external/mono b/external/mono index 0429840e5b..b21ae3e874 160000 --- a/external/mono +++ b/external/mono @@ -1 +1 @@ -Subproject commit 0429840e5b28e446ac141f3d35bf37dd67cee2a4 +Subproject commit b21ae3e874e8a3f55c63a33e9e39d143361fe10a From 7d75ca71d202e3b1d11a00b7b553096d9df53303 Mon Sep 17 00:00:00 2001 From: "luis.aguilera" Date: Fri, 13 Oct 2017 15:03:43 -0400 Subject: [PATCH 081/145] Updated reference to mono/mono@38da0b3 --- external/mono | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/external/mono b/external/mono index b21ae3e874..38da0b3b49 160000 --- a/external/mono +++ b/external/mono @@ -1 +1 @@ -Subproject commit b21ae3e874e8a3f55c63a33e9e39d143361fe10a +Subproject commit 38da0b3b4996357a7472e3202c575c9111469721 From 702d108c314a4b51a6eed1bb022b931956f0ef4a Mon Sep 17 00:00:00 2001 From: Rolf Bjarne Kvinge Date: Mon, 16 Oct 2017 12:33:09 +0200 Subject: [PATCH 082/145] =?UTF-8?q?Bump=20linker=20to=20match=20mono/linke?= =?UTF-8?q?r.=20Fixes=C2=A0#60163.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bump our own linker submodule to match mono's (and xamarin-android's) linker submodule. Diff: https://github.com/mono/linker/compare/0cbb1e787172bdfd8b2964f683d979e0ba719b41...99354bf5c13b8055209cb082cddc50c8047ab088 https://bugzilla.xamarin.com/show_bug.cgi?id=60163 --- external/linker | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/external/linker b/external/linker index 0cbb1e7871..99354bf5c1 160000 --- a/external/linker +++ b/external/linker @@ -1 +1 @@ -Subproject commit 0cbb1e787172bdfd8b2964f683d979e0ba719b41 +Subproject commit 99354bf5c13b8055209cb082cddc50c8047ab088 From 2c23c9d99e705fab861aaab0ffa2fd0f425c9447 Mon Sep 17 00:00:00 2001 From: Rolf Bjarne Kvinge Date: Tue, 17 Oct 2017 10:50:14 +0200 Subject: [PATCH 083/145] Bump mono to get fix for #59436. Commit list for mono/mono: * mono/mono@06b96b294fe [llvm] Map byref types to the same type as the this argument so they are called using the same signature if the this argument is passed explicitly. Fixes #59436. (#5572) Diff: https://github.com/mono/mono/compare/38da0b3b4996357a7472e3202c575c9111469721...06b96b294fe5d9a20803fae8f42b42cea05d2bd0 https://bugzilla.xamarin.com/show_bug.cgi?id=59436 --- external/mono | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/external/mono b/external/mono index 38da0b3b49..06b96b294f 160000 --- a/external/mono +++ b/external/mono @@ -1 +1 @@ -Subproject commit 38da0b3b4996357a7472e3202c575c9111469721 +Subproject commit 06b96b294fe5d9a20803fae8f42b42cea05d2bd0 From 25c6ba1ebe39bbe95b9dd74efc6d40ba26e262ee Mon Sep 17 00:00:00 2001 From: Rolf Bjarne Kvinge Date: Fri, 27 Oct 2017 16:22:30 +0200 Subject: [PATCH 084/145] Bump mono to get fix for #59956. (#2929) Commit list for mono/mono: * mono/mono@4005b8a4a6b Merge pull request #5859 from luhenry/backport-d15-5-2017-06-71997d296fbe80baafc98087b92341d6df009c65 * mono/mono@8b1f61433f2 [llvm] Fix the returning of vtypes using a hidden argument in bitcode, in some cases, we forgot to generate the code to return the value, causing random data to be returned. Fixes #59956. (#5786) Diff: https://github.com/mono/mono/compare/06b96b294fe5d9a20803fae8f42b42cea05d2bd0...4005b8a4a6b9ee57c60cb02dc901bc96f027d7ca https://bugzilla.xamarin.com/show_bug.cgi?id=59956 --- external/mono | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/external/mono b/external/mono index 06b96b294f..4005b8a4a6 160000 --- a/external/mono +++ b/external/mono @@ -1 +1 @@ -Subproject commit 06b96b294fe5d9a20803fae8f42b42cea05d2bd0 +Subproject commit 4005b8a4a6b9ee57c60cb02dc901bc96f027d7ca From 0e2df78b724c169f6ba4719a2eb6e75272700cbd Mon Sep 17 00:00:00 2001 From: Sebastien Pouliot Date: Wed, 1 Nov 2017 00:06:29 -0400 Subject: [PATCH 085/145] Fix some merge issues to fix build --- external/linker | 2 +- runtime/bindings-generator.cs | 639 ---------------------------------- runtime/trampolines-invoke.m | 6 - src/avfoundation.cs | 123 ------- tests/xharness/Jenkins.cs | 4 +- 5 files changed, 2 insertions(+), 772 deletions(-) diff --git a/external/linker b/external/linker index ebbd5b4923..0cbb1e7871 160000 --- a/external/linker +++ b/external/linker @@ -1 +1 @@ -Subproject commit ebbd5b492321d092feae425e8f7aefc3c273530e +Subproject commit 0cbb1e787172bdfd8b2964f683d979e0ba719b41 diff --git a/runtime/bindings-generator.cs b/runtime/bindings-generator.cs index 975eef4d83..0d5c223839 100644 --- a/runtime/bindings-generator.cs +++ b/runtime/bindings-generator.cs @@ -2296,645 +2296,6 @@ namespace Xamarin.BindingMethods.Generator } ); - // We must expand functions with native types to their actual type as well. - for (int i = data.Count - 1; i >= 0; i--) { - if (!data [i].HasNativeType) - continue; - data.Add (data [i].CloneAsResolvedNativeType (true)); - data.Add (data [i].CloneAsResolvedNativeType (false)); - } - - return data; - } - - static string GetTypeNameForSignature (string managed_type) - { - return managed_type; - } - - static void MarshalToManaged (StringWriter writer, TypeData type, string nativeVariable, string managedVariable, bool isRef = false) - { - var accessor = isRef ? "->" : "."; - switch (type.ManagedType) { - case "Vector2d": - case "Vector2i": - case "Vector2": - writer.WriteLine ("\t{0}{2}a = {1} [0];", managedVariable, nativeVariable, accessor); - writer.WriteLine ("\t{0}{2}b = {1} [1];", managedVariable, nativeVariable, accessor); - break; - case "Vector3d": - case "Vector3i": - case "Vector3": - case "NVector3": - case "NVector3d": - writer.WriteLine ("\t{0}{2}a = {1} [0];", managedVariable, nativeVariable, accessor); - writer.WriteLine ("\t{0}{2}b = {1} [1];", managedVariable, nativeVariable, accessor); - writer.WriteLine ("\t{0}{2}c = {1} [2];", managedVariable, nativeVariable, accessor); - break; - case "Vector4d": - case "Vector4i": - case "Vector4": - if (type.NativeType == "vector_float3") { - writer.WriteLine ("\t{0}{2}a = {1} [0];", managedVariable, nativeVariable, accessor); - writer.WriteLine ("\t{0}{2}b = {1} [1];", managedVariable, nativeVariable, accessor); - writer.WriteLine ("\t{0}{2}c = {1} [2];", managedVariable, nativeVariable, accessor); - writer.WriteLine ("\t{0}{1}d = 0;", managedVariable, accessor); - } else if (type.NativeType == "vector_float4" || type.NativeType == "vector_int4" || type.NativeType == "vector_double4") { - writer.WriteLine ("\t{0}{2}a = {1} [0];", managedVariable, nativeVariable, accessor); - writer.WriteLine ("\t{0}{2}b = {1} [1];", managedVariable, nativeVariable, accessor); - writer.WriteLine ("\t{0}{2}c = {1} [2];", managedVariable, nativeVariable, accessor); - writer.WriteLine ("\t{0}{2}d = {1} [3];", managedVariable, nativeVariable, accessor); - } else { - goto default; - } - break; - case "Matrix2": - case "NMatrix2": - writer.WriteLine ("\tfor (int i = 0; i < 2; i++) {"); - writer.WriteLine ("\t\t{0}{2}columns [i].a = {1}.columns [i] [0];", managedVariable, nativeVariable, accessor); - writer.WriteLine ("\t\t{0}{2}columns [i].b = {1}.columns [i] [1];", managedVariable, nativeVariable, accessor); - writer.WriteLine ("\t}"); - break; - case "Matrix3": - case "NMatrix3": - writer.WriteLine ("\tfor (int i = 0; i < 3; i++) {"); - writer.WriteLine ("\t\t{0}{2}columns [i].a = {1}.columns [i] [0];", managedVariable, nativeVariable, accessor); - writer.WriteLine ("\t\t{0}{2}columns [i].b = {1}.columns [i] [1];", managedVariable, nativeVariable, accessor); - writer.WriteLine ("\t\t{0}{2}columns [i].c = {1}.columns [i] [2];", managedVariable, nativeVariable, accessor); - writer.WriteLine ("\t}"); - break; - case "Matrix4": - case "NMatrix4": - case "NMatrix4d": - writer.WriteLine ("\tfor (int i = 0; i < 4; i++) {"); - writer.WriteLine ("\t\t{0}{2}columns [i].a = {1}.columns [i] [0];", managedVariable, nativeVariable, accessor); - writer.WriteLine ("\t\t{0}{2}columns [i].b = {1}.columns [i] [1];", managedVariable, nativeVariable, accessor); - writer.WriteLine ("\t\t{0}{2}columns [i].c = {1}.columns [i] [2];", managedVariable, nativeVariable, accessor); - writer.WriteLine ("\t\t{0}{2}columns [i].d = {1}.columns [i] [3];", managedVariable, nativeVariable, accessor); - writer.WriteLine ("\t}"); - break; - case "NMatrix4x3": - writer.WriteLine ("\tfor (int i = 0; i < 4; i++) {"); - writer.WriteLine ("\t\t{0}{2}columns [i].a = {1}.columns [i] [0];", managedVariable, nativeVariable, accessor); - writer.WriteLine ("\t\t{0}{2}columns [i].b = {1}.columns [i] [1];", managedVariable, nativeVariable, accessor); - writer.WriteLine ("\t\t{0}{2}columns [i].c = {1}.columns [i] [2];", managedVariable, nativeVariable, accessor); - writer.WriteLine ("\t}"); - break; - case "MDLAxisAlignedBoundingBox": - writer.WriteLine ("\t{0}{2}maxBounds.a = {1}.maxBounds [0];", managedVariable, nativeVariable, accessor); - writer.WriteLine ("\t{0}{2}maxBounds.b = {1}.maxBounds [1];", managedVariable, nativeVariable, accessor); - writer.WriteLine ("\t{0}{2}maxBounds.c = {1}.maxBounds [2];", managedVariable, nativeVariable, accessor); - writer.WriteLine ("\t{0}{2}minBounds.a = {1}.minBounds [0];", managedVariable, nativeVariable, accessor); - writer.WriteLine ("\t{0}{2}minBounds.b = {1}.minBounds [1];", managedVariable, nativeVariable, accessor); - writer.WriteLine ("\t{0}{2}minBounds.c = {1}.minBounds [2];", managedVariable, nativeVariable, accessor); - break; - case "GKBox": - writer.WriteLine ("\t{0}{2}maxBounds.a = {1}.maxBounds [0];", managedVariable, nativeVariable, accessor); - writer.WriteLine ("\t{0}{2}maxBounds.b = {1}.maxBounds [1];", managedVariable, nativeVariable, accessor); - writer.WriteLine ("\t{0}{2}maxBounds.c = {1}.maxBounds [2];", managedVariable, nativeVariable, accessor); - writer.WriteLine ("\t{0}{2}minBounds.a = {1}.minBounds [0];", managedVariable, nativeVariable, accessor); - writer.WriteLine ("\t{0}{2}minBounds.b = {1}.minBounds [1];", managedVariable, nativeVariable, accessor); - writer.WriteLine ("\t{0}{2}minBounds.c = {1}.minBounds [2];", managedVariable, nativeVariable, accessor); - break; - case "GKQuad": - writer.WriteLine ("\t{0}{2}maxBounds.a = {1}.maxBounds [0];", managedVariable, nativeVariable, accessor); - writer.WriteLine ("\t{0}{2}maxBounds.b = {1}.maxBounds [1];", managedVariable, nativeVariable, accessor); - writer.WriteLine ("\t{0}{2}minBounds.a = {1}.minBounds [0];", managedVariable, nativeVariable, accessor); - writer.WriteLine ("\t{0}{2}minBounds.b = {1}.minBounds [1];", managedVariable, nativeVariable, accessor); - break; - case "GKTriangle": - writer.WriteLine ("\tfor (int i = 0; i < 3; i++) {"); - writer.WriteLine ("\t\t{0}{2}points [i].a = {1}.points [i] [0];", managedVariable, nativeVariable, accessor); - writer.WriteLine ("\t\t{0}{2}points [i].b = {1}.points [i] [1];", managedVariable, nativeVariable, accessor); - writer.WriteLine ("\t\t{0}{2}points [i].c = {1}.points [i] [2];", managedVariable, nativeVariable, accessor); - writer.WriteLine ("\t}"); - break; - case "Quaternion": - writer.WriteLine ("\t{0}{2}vector.a = {1}.vector [0];", managedVariable, nativeVariable, accessor); - writer.WriteLine ("\t{0}{2}vector.b = {1}.vector [1];", managedVariable, nativeVariable, accessor); - writer.WriteLine ("\t{0}{2}vector.c = {1}.vector [2];", managedVariable, nativeVariable, accessor); - writer.WriteLine ("\t{0}{2}vector.d = {1}.vector [3];", managedVariable, nativeVariable, accessor); - break; - case "MPSImageHistogramInfo": - writer.WriteLine ("\t{0}{2}numberOfHistogramEntries = {1}.numberOfHistogramEntries;", managedVariable, nativeVariable, accessor); - writer.WriteLine ("\t{0}{2}histogramForAlpha = {1}.histogramForAlpha;", managedVariable, nativeVariable, accessor); - writer.WriteLine ("\t{0}{2}minPixelValue.a = {1}.minPixelValue [0];", managedVariable, nativeVariable, accessor); - writer.WriteLine ("\t{0}{2}minPixelValue.b = {1}.minPixelValue [1];", managedVariable, nativeVariable, accessor); - writer.WriteLine ("\t{0}{2}minPixelValue.c = {1}.minPixelValue [2];", managedVariable, nativeVariable, accessor); - writer.WriteLine ("\t{0}{2}minPixelValue.d = {1}.minPixelValue [3];", managedVariable, nativeVariable, accessor); - writer.WriteLine ("\t{0}{2}maxPixelValue.a = {1}.maxPixelValue [0];", managedVariable, nativeVariable, accessor); - writer.WriteLine ("\t{0}{2}maxPixelValue.b = {1}.maxPixelValue [1];", managedVariable, nativeVariable, accessor); - writer.WriteLine ("\t{0}{2}maxPixelValue.c = {1}.maxPixelValue [2];", managedVariable, nativeVariable, accessor); - writer.WriteLine ("\t{0}{2}maxPixelValue.d = {1}.maxPixelValue [3];", managedVariable, nativeVariable, accessor); - break; - case "MDLVoxelIndexExtent2": - writer.WriteLine ("\t{0}{2}minimumExtent.a = {1}.minimumExtent [0];", managedVariable, nativeVariable, accessor); - writer.WriteLine ("\t{0}{2}minimumExtent.b = {1}.minimumExtent [1];", managedVariable, nativeVariable, accessor); - writer.WriteLine ("\t{0}{2}minimumExtent.c = {1}.minimumExtent [2];", managedVariable, nativeVariable, accessor); - writer.WriteLine ("\t{0}{2}minimumExtent.d = {1}.minimumExtent [3];", managedVariable, nativeVariable, accessor); - writer.WriteLine ("\t{0}{2}maximumExtent.a = {1}.maximumExtent [0];", managedVariable, nativeVariable, accessor); - writer.WriteLine ("\t{0}{2}maximumExtent.b = {1}.maximumExtent [1];", managedVariable, nativeVariable, accessor); - writer.WriteLine ("\t{0}{2}maximumExtent.c = {1}.maximumExtent [2];", managedVariable, nativeVariable, accessor); - writer.WriteLine ("\t{0}{2}maximumExtent.d = {1}.maximumExtent [3];", managedVariable, nativeVariable, accessor); - break; - default: - throw new NotImplementedException (string.Format ("MarshalToManaged for: NativeType: {0} ManagedType: {1}", type.NativeType, type.ManagedType)); - } - } - - static void MarshalToNative (StringWriter writer, TypeData type, string nativeVariable, string managedVariable, bool isRef) - { - var accessor = isRef ? "->" : "."; - switch (type.ManagedType) { - case "Vector2d": - case "Vector2i": - case "Vector2": - writer.WriteLine ("\t{0} [0] = {1}{2}a;", nativeVariable, managedVariable, accessor); - writer.WriteLine ("\t{0} [1] = {1}{2}b;", nativeVariable, managedVariable, accessor); - break; - case "Vector3d": - case "Vector3i": - case "Vector3": - case "NVector3": - case "NVector3d": - writer.WriteLine ("\t{0} [0] = {1}{2}a;", nativeVariable, managedVariable, accessor); - writer.WriteLine ("\t{0} [1] = {1}{2}b;", nativeVariable, managedVariable, accessor); - writer.WriteLine ("\t{0} [2] = {1}{2}c;", nativeVariable, managedVariable, accessor); - break; - case "Vector4d": - case "Vector4i": - case "Vector4": - if (type.NativeType == "vector_float3") { - writer.WriteLine ("\t{0} [0] = {1}{2}a;", nativeVariable, managedVariable, accessor); - writer.WriteLine ("\t{0} [1] = {1}{2}b;", nativeVariable, managedVariable, accessor); - writer.WriteLine ("\t{0} [2] = {1}{2}c;", nativeVariable, managedVariable, accessor); - } else if (type.NativeType == "vector_float4" || type.NativeType == "vector_int4" || type.NativeType == "vector_double4") { - writer.WriteLine ("\t{0} [0] = {1}{2}a;", nativeVariable, managedVariable, accessor); - writer.WriteLine ("\t{0} [1] = {1}{2}b;", nativeVariable, managedVariable, accessor); - writer.WriteLine ("\t{0} [2] = {1}{2}c;", nativeVariable, managedVariable, accessor); - writer.WriteLine ("\t{0} [3] = {1}{2}d;", nativeVariable, managedVariable, accessor); - } else { - goto default; - } - break; - case "Matrix2": - case "NMatrix2": - writer.WriteLine ("\tfor (int i = 0; i < 2; i++) {"); - writer.WriteLine ("\t\t{0}.columns [i][0] = {1}{2}columns [i].a;", nativeVariable, managedVariable, accessor); - writer.WriteLine ("\t\t{0}.columns [i][1] = {1}{2}columns [i].b;", nativeVariable, managedVariable, accessor); - writer.WriteLine ("\t}"); - break; - case "Matrix3": - case "NMatrix3": - writer.WriteLine ("\tfor (int i = 0; i < 3; i++) {"); - writer.WriteLine ("\t\t{0}.columns [i][0] = {1}{2}columns [i].a;", nativeVariable, managedVariable, accessor); - writer.WriteLine ("\t\t{0}.columns [i][1] = {1}{2}columns [i].b;", nativeVariable, managedVariable, accessor); - writer.WriteLine ("\t\t{0}.columns [i][2] = {1}{2}columns [i].c;", nativeVariable, managedVariable, accessor); - writer.WriteLine ("\t}"); - break; - case "Matrix4": - case "NMatrix4": - case "NMatrix4d": - writer.WriteLine ("\tfor (int i = 0; i < 4; i++) {"); - writer.WriteLine ("\t\t{0}.columns [i][0] = {1}{2}columns [i].a;", nativeVariable, managedVariable, accessor); - writer.WriteLine ("\t\t{0}.columns [i][1] = {1}{2}columns [i].b;", nativeVariable, managedVariable, accessor); - writer.WriteLine ("\t\t{0}.columns [i][2] = {1}{2}columns [i].c;", nativeVariable, managedVariable, accessor); - writer.WriteLine ("\t\t{0}.columns [i][3] = {1}{2}columns [i].d;", nativeVariable, managedVariable, accessor); - writer.WriteLine ("\t}"); - break; - case "NMatrix4x3": - writer.WriteLine ("\tfor (int i = 0; i < 4; i++) {"); - writer.WriteLine ("\t\t{0}.columns [i][0] = {1}{2}columns [i].a;", nativeVariable, managedVariable, accessor); - writer.WriteLine ("\t\t{0}.columns [i][1] = {1}{2}columns [i].b;", nativeVariable, managedVariable, accessor); - writer.WriteLine ("\t\t{0}.columns [i][2] = {1}{2}columns [i].c;", nativeVariable, managedVariable, accessor); - writer.WriteLine ("\t}"); - break; - case "MDLAxisAlignedBoundingBox": - writer.WriteLine ("\t{0}.maxBounds [0] = {1}{2}maxBounds.a;", nativeVariable, managedVariable, accessor); - writer.WriteLine ("\t{0}.maxBounds [1] = {1}{2}maxBounds.b;", nativeVariable, managedVariable, accessor); - writer.WriteLine ("\t{0}.maxBounds [2] = {1}{2}maxBounds.c;", nativeVariable, managedVariable, accessor); - writer.WriteLine ("\t{0}.minBounds [0] = {1}{2}minBounds.a;", nativeVariable, managedVariable, accessor); - writer.WriteLine ("\t{0}.minBounds [1] = {1}{2}minBounds.b;", nativeVariable, managedVariable, accessor); - writer.WriteLine ("\t{0}.minBounds [2] = {1}{2}minBounds.c;", nativeVariable, managedVariable, accessor); - break; - case "GKBox": - writer.WriteLine ("\t{0}.maxBounds [0] = {1}{2}maxBounds.a;", nativeVariable, managedVariable, accessor); - writer.WriteLine ("\t{0}.maxBounds [1] = {1}{2}maxBounds.b;", nativeVariable, managedVariable, accessor); - writer.WriteLine ("\t{0}.maxBounds [2] = {1}{2}maxBounds.c;", nativeVariable, managedVariable, accessor); - writer.WriteLine ("\t{0}.minBounds [0] = {1}{2}minBounds.a;", nativeVariable, managedVariable, accessor); - writer.WriteLine ("\t{0}.minBounds [1] = {1}{2}minBounds.b;", nativeVariable, managedVariable, accessor); - writer.WriteLine ("\t{0}.minBounds [2] = {1}{2}minBounds.c;", nativeVariable, managedVariable, accessor); - break; - case "GKQuad": - writer.WriteLine ("\t{0}.maxBounds [0] = {1}{2}maxBounds.a;", nativeVariable, managedVariable, accessor); - writer.WriteLine ("\t{0}.maxBounds [1] = {1}{2}maxBounds.b;", nativeVariable, managedVariable, accessor); - writer.WriteLine ("\t{0}.minBounds [0] = {1}{2}minBounds.a;", nativeVariable, managedVariable, accessor); - writer.WriteLine ("\t{0}.minBounds [1] = {1}{2}minBounds.b;", nativeVariable, managedVariable, accessor); - break; - case "GKTriangle": - writer.WriteLine ("\tfor (int i = 0; i < 3; i++) {"); - writer.WriteLine ("\t\t{0}.points [i][0] = {1}{2}points [i].a;", nativeVariable, managedVariable, accessor); - writer.WriteLine ("\t\t{0}.points [i][1] = {1}{2}points [i].b;", nativeVariable, managedVariable, accessor); - writer.WriteLine ("\t\t{0}.points [i][2] = {1}{2}points [i].c;", nativeVariable, managedVariable, accessor); - writer.WriteLine ("\t}"); - break; - case "Quaternion": - writer.WriteLine ("\t{0}.vector [0] = {1}{2}vector.a;", nativeVariable, managedVariable, accessor); - writer.WriteLine ("\t{0}.vector [1] = {1}{2}vector.b;", nativeVariable, managedVariable, accessor); - writer.WriteLine ("\t{0}.vector [2] = {1}{2}vector.c;", nativeVariable, managedVariable, accessor); - writer.WriteLine ("\t{0}.vector [3] = {1}{2}vector.d;", nativeVariable, managedVariable, accessor); - break; - case "MPSImageHistogramInfo": - writer.WriteLine ("\t{0}.numberOfHistogramEntries = {1}{2}numberOfHistogramEntries;", nativeVariable, managedVariable, accessor); - writer.WriteLine ("\t{0}.histogramForAlpha = {1}{2}histogramForAlpha;", nativeVariable, managedVariable, accessor); - writer.WriteLine ("\t{0}.minPixelValue [0] = {1}{2}minPixelValue.a;", nativeVariable, managedVariable, accessor); - writer.WriteLine ("\t{0}.minPixelValue [1] = {1}{2}minPixelValue.b;", nativeVariable, managedVariable, accessor); - writer.WriteLine ("\t{0}.minPixelValue [2] = {1}{2}minPixelValue.c;", nativeVariable, managedVariable, accessor); - writer.WriteLine ("\t{0}.minPixelValue [3] = {1}{2}minPixelValue.d;", nativeVariable, managedVariable, accessor); - writer.WriteLine ("\t{0}.maxPixelValue [0] = {1}{2}maxPixelValue.a;", nativeVariable, managedVariable, accessor); - writer.WriteLine ("\t{0}.maxPixelValue [1] = {1}{2}maxPixelValue.b;", nativeVariable, managedVariable, accessor); - writer.WriteLine ("\t{0}.maxPixelValue [2] = {1}{2}maxPixelValue.c;", nativeVariable, managedVariable, accessor); - writer.WriteLine ("\t{0}.maxPixelValue [3] = {1}{2}maxPixelValue.d;", nativeVariable, managedVariable, accessor); - break; - case "MDLVoxelIndexExtent2": - writer.WriteLine ("\t{0}.minimumExtent [0] = {1}{2}minimumExtent.a;", nativeVariable, managedVariable, accessor); - writer.WriteLine ("\t{0}.minimumExtent [1] = {1}{2}minimumExtent.b;", nativeVariable, managedVariable, accessor); - writer.WriteLine ("\t{0}.minimumExtent [2] = {1}{2}minimumExtent.c;", nativeVariable, managedVariable, accessor); - writer.WriteLine ("\t{0}.minimumExtent [3] = {1}{2}minimumExtent.d;", nativeVariable, managedVariable, accessor); - writer.WriteLine ("\t{0}.maximumExtent [0] = {1}{2}maximumExtent.a;", nativeVariable, managedVariable, accessor); - writer.WriteLine ("\t{0}.maximumExtent [1] = {1}{2}maximumExtent.b;", nativeVariable, managedVariable, accessor); - writer.WriteLine ("\t{0}.maximumExtent [2] = {1}{2}maximumExtent.c;", nativeVariable, managedVariable, accessor); - writer.WriteLine ("\t{0}.maximumExtent [3] = {1}{2}maximumExtent.d;", nativeVariable, managedVariable, accessor); - break; - default: - throw new NotImplementedException (string.Format ("MarshalToNative for: NativeType: {0} ManagedType: {1}", type.NativeType, type.ManagedType)); - } - } - - data.Add ( - new FunctionData { - Comment = " // Matrix4 func (/* UIInterfaceOrientation */ Int32, CGSize, nfloat, nfloat)", - Prefix = "simd__", - Variants = Variants.All, - ReturnType = Types.Matrix4f, - Parameters = new ParameterData[] { - new ParameterData { TypeData = Types.Int32 }, - new ParameterData { TypeData = Types.CGSize }, - new ParameterData { TypeData = Types.NFloat }, - new ParameterData { TypeData = Types.NFloat }, - }, - } - ); - - data.Add ( - new FunctionData { - Comment = " // Matrix4 func (/* UIInterfaceOrientation */ Int64, CGSize, nfloat, nfloat)", - Prefix = "simd__", - Variants = Variants.All, - ReturnType = Types.Matrix4f, - Parameters = new ParameterData[] { - new ParameterData { TypeData = Types.Int64 }, - new ParameterData { TypeData = Types.CGSize }, - new ParameterData { TypeData = Types.NFloat }, - new ParameterData { TypeData = Types.NFloat }, - }, - } - ); - - data.Add ( - new FunctionData { - Comment = " // CGPoint func (Vector3, /* UIInterfaceOrientation */ Int32, CGSize)", - Prefix = "simd__", - Variants = Variants.All, - ReturnType = Types.CGPoint, - Parameters = new ParameterData[] { - new ParameterData { TypeData = Types.NVector3 }, - new ParameterData { TypeData = Types.Int32 }, - new ParameterData { TypeData = Types.CGSize }, - }, - } - ); - - data.Add ( - new FunctionData { - Comment = " // CGPoint func (Vector3, /* UIInterfaceOrientation */ Int64, CGSize)", - Prefix = "simd__", - Variants = Variants.All, - ReturnType = Types.CGPoint, - Parameters = new ParameterData[] { - new ParameterData { TypeData = Types.NVector3 }, - new ParameterData { TypeData = Types.Int64 }, - new ParameterData { TypeData = Types.CGSize }, - }, - } - ); - - data.Add ( - new FunctionData { - Comment = " // Matrix4 func (/* UIInterfaceOrientation */ nint)", - Prefix = "simd__", - Variants = Variants.All, - ReturnType = Types.Matrix4f, - Parameters = new ParameterData[] { - new ParameterData { TypeData = Types.NInt }, - }, - } - ); - - data.Add ( - new FunctionData { - Comment = " // MPSImageHistogramInfo func ()", - Prefix = "simd__", - Variants = Variants.All, - ReturnType = Types.MPSImageHistogramInfo, - } - ); - - data.Add ( - new FunctionData { - Comment = " // void func (NMatrix2)", - Prefix = "simd__", - Variants = Variants.NonStret, - Parameters = new ParameterData [] { - new ParameterData { TypeData = Types.NMatrix2 }, - }, - } - ); - - data.Add ( - new FunctionData { - Comment = " // NMatrix2 func ()", - Prefix = "simd__", - Variants = Variants.All, - ReturnType = Types.NMatrix2, - } - ); - - data.Add ( - new FunctionData { - Comment = " // IntPtr func (IntPtr, ref MPSImageHistogramInfo)", - Prefix = "simd__", - Variants = Variants.NonStret, - ReturnType = Types.IntPtr, - Parameters = new ParameterData [] { - new ParameterData { TypeData = Types.IntPtr }, - new ParameterData { TypeData = Types.MPSImageHistogramInfo, IsRef = true }, - }, - } - ); - - data.Add ( - new FunctionData { - Comment = " // IntPtr func (IntPtr, NMatrix2)", - Prefix = "simd__", - Variants = Variants.NonStret, - ReturnType = Types.IntPtr, - Parameters = new ParameterData [] { - new ParameterData { TypeData = Types.IntPtr }, - new ParameterData { TypeData = Types.NMatrix2 }, - }, - } - ); - - data.Add ( - new FunctionData { - Comment = " // void func (NMatrix3)", - Prefix = "simd__", - Variants = Variants.NonStret, - Parameters = new ParameterData [] { - new ParameterData { TypeData = Types.NMatrix3 }, - }, - } - ); - - data.Add ( - new FunctionData { - Comment = " // IntPtr func (NMatrix3)", - Prefix = "simd__", - Variants = Variants.NonStret, - ReturnType = Types.IntPtr, - Parameters = new ParameterData [] { - new ParameterData { TypeData = Types.NMatrix3 }, - }, - } - ); - - data.Add ( - new FunctionData { - Comment = " // MDLVoxelIndexExtent2 func ()", - Prefix = "simd__", - Variants = Variants.All, - ReturnType = Types.MDLVoxelIndexExtent2, - } - ); - - data.Add ( - new FunctionData { - Comment = " // NMatrix3 func ()", - Prefix = "simd__", - Variants = Variants.All, - ReturnType = Types.NMatrix3, - } - ); - - data.Add ( - new FunctionData { - Comment = " // void func (MDLVoxelIndexExtent2)", - Prefix = "simd__", - Variants = Variants.NonStret, - Parameters = new ParameterData [] { - new ParameterData { TypeData = Types.MDLVoxelIndexExtent2 }, - } - } - ); - - data.Add ( - new FunctionData { - Comment = " // IntPtr func (IntPtr, NMatrix3)", - Prefix = "simd__", - Variants = Variants.NonStret, - ReturnType = Types.IntPtr, - Parameters = new ParameterData [] { - new ParameterData { TypeData = Types.IntPtr }, - new ParameterData { TypeData = Types.NMatrix3 }, - }, - } - ); - - data.Add ( - new FunctionData { - Comment = " // void func (NMatrix4)", - Prefix = "simd__", - Variants = Variants.NonStret, - Parameters = new ParameterData[] { - new ParameterData { TypeData = Types.NMatrix4 }, - }, - } - ); - - data.Add ( - new FunctionData { - Comment = " // IntPtr func (NMatrix4)", - Prefix = "simd__", - Variants = Variants.NonStret, - ReturnType = Types.IntPtr, - Parameters = new ParameterData[] { - new ParameterData { TypeData = Types.NMatrix4 }, - }, - } - ); - - data.Add ( - new FunctionData { - Comment = " // void func (NMatrix4, double)", - Prefix = "simd__", - Variants = Variants.NonStret, - Parameters = new ParameterData [] { - new ParameterData { TypeData = Types.NMatrix4 }, - new ParameterData { TypeData = Types.Double }, - }, - } - ); - - data.Add ( - new FunctionData { - Comment = " // IntPtr func (NMatrix4, bool)", - Prefix = "simd__", - Variants = Variants.NonStret, - ReturnType = Types.IntPtr, - Parameters = new ParameterData [] { - new ParameterData { TypeData = Types.NMatrix4 }, - new ParameterData { TypeData = Types.Bool }, - }, - } - ); - - data.Add ( - new FunctionData { - Comment = " // IntPtr func (MDLVoxelIndexExtent2)", - Prefix = "simd__", - Variants = Variants.NonStret, - ReturnType = Types.IntPtr, - Parameters = new ParameterData [] { - new ParameterData { TypeData = Types.MDLVoxelIndexExtent2 }, - }, - } - ); - - - data.Add ( - new FunctionData { - Comment = " // IntPtr func (IntPtr, nuint, NMatrix4)", - Prefix = "simd__", - Variants = Variants.NonStret, - ReturnType = Types.IntPtr, - Parameters = new ParameterData [] { - new ParameterData { TypeData = Types.IntPtr }, - new ParameterData { TypeData = Types.NUInt }, - new ParameterData { TypeData = Types.NMatrix4 }, - }, - } - ); - - data.Add ( - new FunctionData { - Comment = " // NMatrix4 func ()", - Prefix = "simd__", - Variants = Variants.All, - ReturnType = Types.NMatrix4, - } - ); - - data.Add ( - new FunctionData { - Comment = " // NMatrix4 func (int, CGSize, nfloat, nfloat)", - Prefix = "simd__", - Variants = Variants.All, - ReturnType = Types.NMatrix4, - Parameters = new ParameterData [] { - new ParameterData { TypeData = Types.Int32 }, - new ParameterData { TypeData = Types.CGSize }, - new ParameterData { TypeData = Types.NFloat }, - new ParameterData { TypeData = Types.NFloat }, - }, - } - ); - - data.Add ( - new FunctionData { - Comment = " // NMatrix4 func (Int64, CGSize, nfloat, nfloat)", - Prefix = "simd__", - Variants = Variants.All, - ReturnType = Types.NMatrix4, - Parameters = new ParameterData [] { - new ParameterData { TypeData = Types.Int64 }, - new ParameterData { TypeData = Types.CGSize }, - new ParameterData { TypeData = Types.NFloat }, - new ParameterData { TypeData = Types.NFloat }, - }, - } - ); - - data.Add ( - new FunctionData { - Comment = " // NMatrix4 func (double)", - Prefix = "simd__", - Variants = Variants.All, - ReturnType = Types.NMatrix4, - Parameters = new ParameterData [] { - new ParameterData { TypeData = Types.Double }, - }, - } - ); - - data.Add ( - new FunctionData { - Comment = " // NMatrix4 func (nint)", - Prefix = "simd__", - Variants = Variants.All, - ReturnType = Types.NMatrix4, - Parameters = new ParameterData [] { - new ParameterData { TypeData = Types.NInt }, - }, - } - ); - - data.Add ( - new FunctionData { - Comment = " // IntPtr func (IntPtr, nint, NMatrix4)", - Prefix = "simd__", - Variants = Variants.NonStret, - ReturnType = Types.IntPtr, - Parameters = new ParameterData [] { - new ParameterData { TypeData = Types.IntPtr }, - new ParameterData { TypeData = Types.NInt }, - new ParameterData { TypeData = Types.NMatrix4 }, - }, - } - ); - - data.Add ( - new FunctionData { - Comment = " // IntPtr func (IntPtr, NMatrix4)", - Prefix = "simd__", - Variants = Variants.NonStret, - ReturnType = Types.IntPtr, - Parameters = new ParameterData [] { - new ParameterData { TypeData = Types.IntPtr }, - new ParameterData { TypeData = Types.NMatrix4 }, - }, - } - ); - - data.Add ( - new FunctionData { - Comment = " // NMatrix4x3 func ()", - Prefix = "simd__", - Variants = Variants.All, - ReturnType = Types.NMatrix4x3, - } - ); - data.Add ( new FunctionData { Comment = " // IntPtr func (IntPtr, nint, Vector2i, float, float, float, float, float)", diff --git a/runtime/trampolines-invoke.m b/runtime/trampolines-invoke.m index 6ca0ba8d97..f648578683 100644 --- a/runtime/trampolines-invoke.m +++ b/runtime/trampolines-invoke.m @@ -95,15 +95,9 @@ xamarin_invoke_trampoline (enum TrampolineType type, id self, SEL sel, iterator_ free_list = s_list_prepend (free_list, desc); if (is_ctor || is_static) { -<<<<<<< HEAD xamarin_get_method_for_selector ([self class], sel, is_static, desc, &exception_gchandle); } else { xamarin_get_method_and_object_for_selector ([self class], sel, is_static, self, &mthis, desc, &exception_gchandle); -======= - desc = xamarin_get_method_for_selector ([self class], sel, is_static, &exception_gchandle); - } else { - desc = xamarin_get_method_and_object_for_selector ([self class], sel, is_static, self, &mthis, &exception_gchandle); ->>>>>>> xcode9.1 } if (exception_gchandle != 0) goto exception_handling; diff --git a/src/avfoundation.cs b/src/avfoundation.cs index dab7fb4994..d9575b4d06 100644 --- a/src/avfoundation.cs +++ b/src/avfoundation.cs @@ -32,10 +32,8 @@ using System.ComponentModel; #if !WATCH -using XamCore.AudioToolbox; using XamCore.AudioUnit; using XamCore.AVKit; -using XamCore.Foundation; using XamCore.CoreAnimation; using XamCore.CoreImage; using XamCore.CoreMedia; @@ -3316,106 +3314,6 @@ namespace XamCore.AVFoundation { void RemoveTimeObserver (NSObject observer); } -#endif // MONOMAC - - [NoWatch, NoTV, iOS (11,0)] - [BaseType (typeof(NSObject))] - [DisableDefaultCtor] - interface AVCaptureSynchronizedData - { - [Export ("timestamp")] - CMTime Timestamp { get; } - } - - [NoWatch, NoTV, iOS (11,0)] - [BaseType (typeof(NSObject))] - [DisableDefaultCtor] - interface AVCaptureSynchronizedDataCollection : INSFastEnumeration - { - [Export ("synchronizedDataForCaptureOutput:")] - [return: NullAllowed] - AVCaptureSynchronizedData From (AVCaptureOutput captureOutput); - - [Export ("objectForKeyedSubscript:")] - [return: NullAllowed] - AVCaptureSynchronizedData ObjectForKeyedSubscript (AVCaptureOutput key); - - [Export ("count")] - nuint Count { get; } - } - - interface IAVCaptureDataOutputSynchronizerDelegate {} - - [NoWatch, NoTV, iOS (11,0)] - [Protocol, Model] - [BaseType (typeof(NSObject))] - interface AVCaptureDataOutputSynchronizerDelegate - { - [Abstract] - [Export ("dataOutputSynchronizer:didOutputSynchronizedDataCollection:")] - void DidOutputSynchronizedDataCollection (AVCaptureDataOutputSynchronizer synchronizer, AVCaptureSynchronizedDataCollection synchronizedDataCollection); - } - - [NoWatch, NoTV, iOS (11,0)] - [BaseType (typeof(NSObject))] - [DisableDefaultCtor] - interface AVCaptureDataOutputSynchronizer - { - [Export ("initWithDataOutputs:")] - IntPtr Constructor (AVCaptureOutput[] dataOutputs); - - [Export ("dataOutputs", ArgumentSemantic.Retain)] - AVCaptureOutput[] DataOutputs { get; } - - [Export ("setDelegate:queue:")] - void SetDelegate ([NullAllowed] IAVCaptureDataOutputSynchronizerDelegate del, [NullAllowed] DispatchQueue delegateCallbackQueue); - - [Wrap ("WeakDelegate")] - [NullAllowed] - IAVCaptureDataOutputSynchronizerDelegate Delegate { get; } - - [NullAllowed, Export ("delegate")] - NSObject WeakDelegate { get; } - - [NullAllowed, Export ("delegateCallbackQueue")] - DispatchQueue DelegateCallbackQueue { get; } - } - - [NoMac, NoWatch, NoTV, iOS (11,0)] - [BaseType (typeof(AVCaptureSynchronizedData))] - interface AVCaptureSynchronizedSampleBufferData - { - [Export ("sampleBuffer")] - CMSampleBuffer SampleBuffer { get; } - - [Export ("sampleBufferWasDropped")] - bool SampleBufferWasDropped { get; } - - [Export ("droppedReason")] - AVCaptureOutputDataDroppedReason DroppedReason { get; } - } - - [NoMac, NoWatch, NoTV, iOS (11,0)] - [BaseType (typeof(AVCaptureSynchronizedData))] - interface AVCaptureSynchronizedMetadataObjectData - { - [Export ("metadataObjects")] - AVMetadataObject[] MetadataObjects { get; } - } - - [NoMac, NoWatch, NoTV, iOS (11,0)] - [BaseType (typeof(AVCaptureSynchronizedData))] - interface AVCaptureSynchronizedDepthData - { - [Export ("depthData")] - AVDepthData DepthData { get; } - - [Export ("depthDataWasDropped")] - bool DepthDataWasDropped { get; } - - [Export ("droppedReason")] - AVCaptureOutputDataDroppedReason DroppedReason { get; } - } #if MONOMAC [Mac (10,10)] @@ -8515,11 +8413,7 @@ namespace XamCore.AVFoundation { interface IAVCaptureDepthDataOutputDelegate {} -<<<<<<< HEAD - [NoWatch, NoTV, iOS (11,0)] -======= [NoWatch, NoTV, iOS (11,0), Mac (10,13)] ->>>>>>> xcode9.1 [Protocol, Model] [BaseType (typeof(NSObject))] interface AVCaptureDepthDataOutputDelegate @@ -8531,14 +8425,8 @@ namespace XamCore.AVFoundation { void DidDropDepthData (AVCaptureDepthDataOutput output, AVDepthData depthData, CMTime timestamp, AVCaptureConnection connection, AVCaptureOutputDataDroppedReason reason); } -<<<<<<< HEAD - [NoWatch, NoTV, iOS (11,0)] - [BaseType (typeof(AVCaptureOutput))] - [DisableDefaultCtor] -======= [NoWatch, NoTV, iOS (11,0), Mac (10,13)] [BaseType (typeof(AVCaptureOutput))] ->>>>>>> xcode9.1 interface AVCaptureDepthDataOutput { [Export ("setDelegate:callbackQueue:")] @@ -12636,20 +12524,12 @@ namespace XamCore.AVFoundation { AVContentKeyResponse Create (NSData keyData, [NullAllowed] NSData initializationVector); } -<<<<<<< HEAD - [TV (11,0), NoWatch, NoMac, iOS (11,0)] -======= [TV (11,0), NoWatch, Mac (10,13), iOS (11,0)] ->>>>>>> xcode9.1 [DisableDefaultCtor] [BaseType (typeof(NSObject))] interface AVRouteDetector { [Notification] -<<<<<<< HEAD - [TV (11, 0), NoWatch, NoMac, iOS (11, 0)] -======= [TV (11, 0), NoWatch, Mac (10, 13), iOS (11, 0)] ->>>>>>> xcode9.1 [Field ("AVRouteDetectorMultipleRoutesDetectedDidChangeNotification")] NSString MultipleRoutesDetectedDidChange { get; } @@ -12706,8 +12586,6 @@ namespace XamCore.AVFoundation { [Wrap ("AVCaptureDeviceTypeExtensions.GetValue (WeakSourceDeviceType)")] AVCaptureDeviceType SourceDeviceType { get; } -<<<<<<< HEAD -======= // From @interface AVCapturePhotoBracketedCapture (AVCapturePhoto) @@ -12724,6 +12602,5 @@ namespace XamCore.AVFoundation { [iOS (11, 0), NoMac] [Export ("sequenceCount")] nint SequenceCount { get; } ->>>>>>> xcode9.1 } } diff --git a/tests/xharness/Jenkins.cs b/tests/xharness/Jenkins.cs index 86a8c73608..2e2c185208 100644 --- a/tests/xharness/Jenkins.cs +++ b/tests/xharness/Jenkins.cs @@ -641,8 +641,6 @@ namespace xharness }; Tasks.Add (runMacBindingProject); - Tasks.AddRange (CreateRunDeviceTasks ()); - var runXtroTests = new MakeTask { Jenkins = this, Platform = TestPlatform.All, @@ -653,7 +651,7 @@ namespace xharness }; Tasks.Add (runXtroTests); - Tasks.AddRange (await CreateRunDeviceTasks ()); + Tasks.AddRange (CreateRunDeviceTasks ()); } RunTestTask CloneExecuteTask (RunTestTask task, TestPlatform platform, string suffix, bool ignore) From 948c4e4f95fc209084e178c079f13466c55f6f37 Mon Sep 17 00:00:00 2001 From: Rolf Bjarne Kvinge Date: Wed, 1 Nov 2017 08:34:03 +0100 Subject: [PATCH 086/145] [xtro-sharpie] Fix wrench build to use the correct MSBuild invocation. --- tests/xtro-sharpie/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/xtro-sharpie/Makefile b/tests/xtro-sharpie/Makefile index c98bbcceba..ca6393d850 100644 --- a/tests/xtro-sharpie/Makefile +++ b/tests/xtro-sharpie/Makefile @@ -12,7 +12,7 @@ clean-local:: rm -rf *os*.pch* bin/Debug/xtro-sharpie.exe build: - $(Q_BUILD) msbuild $(XBUILD_VERBOSITY) xtro-sharpie.sln + $(Q_BUILD) $(SYSTEM_MSBUILD) $(XBUILD_VERBOSITY) xtro-sharpie.sln XIOS ?= $(TOP)/_ios-build/Library/Frameworks/Xamarin.iOS.framework/Versions/git/lib/64bits/Xamarin.iOS.dll XIOS_GL ?= $(TOP)/_ios-build/Library/Frameworks/Xamarin.iOS.framework/Versions/Current/lib/mono/Xamarin.iOS/OpenTK-1.0.dll From 4dfd82c7f71933b00e3d827bafcd561a1f1164ae Mon Sep 17 00:00:00 2001 From: Sebastien Pouliot Date: Wed, 1 Nov 2017 10:04:46 -0400 Subject: [PATCH 087/145] Restore external/linker to latest d15-5 revision --- .gitmodules | 2 +- external/linker | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.gitmodules b/.gitmodules index 7aaaaf6828..1d4b6a3e0c 100644 --- a/.gitmodules +++ b/.gitmodules @@ -8,7 +8,7 @@ [submodule "external/linker"] path = external/linker url = ../../mono/linker.git - branch = d15-4 + branch = master [submodule "external/llvm"] path = external/llvm url = ../../mono/llvm.git diff --git a/external/linker b/external/linker index 0cbb1e7871..99354bf5c1 160000 --- a/external/linker +++ b/external/linker @@ -1 +1 @@ -Subproject commit 0cbb1e787172bdfd8b2964f683d979e0ba719b41 +Subproject commit 99354bf5c13b8055209cb082cddc50c8047ab088 From 6c2e32d7b5af1756a61c4159b1adcb218e0d7d80 Mon Sep 17 00:00:00 2001 From: Timothy Risi Date: Thu, 2 Nov 2017 05:02:54 -0800 Subject: [PATCH 088/145] [Metal] MTLBuffer.CreateTexture shouldn't be abstract on macOS - d15-5 (#2951) --- src/metal.cs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/metal.cs b/src/metal.cs index 2b70a04281..fe49b0325f 100644 --- a/src/metal.cs +++ b/src/metal.cs @@ -158,7 +158,10 @@ namespace XamCore.Metal { #endif [Mac (10,13, onlyOn64: true)] [return: NullAllowed] - [Abstract, Export ("newTextureWithDescriptor:offset:bytesPerRow:")] +#if XAMCORE_4_0 || !MONOMAC + [Abstract] +#endif + [Export ("newTextureWithDescriptor:offset:bytesPerRow:")] IMTLTexture CreateTexture (MTLTextureDescriptor descriptor, nuint offset, nuint bytesPerRow); [iOS (10,0), TV (10,0), NoWatch, Mac (10,12)] From 492121ec3bdec915f4f1efacf30f6094e825c1d9 Mon Sep 17 00:00:00 2001 From: Timothy Risi Date: Mon, 23 Oct 2017 11:22:17 -0800 Subject: [PATCH 090/145] [macOS] Fix Introspection and API tests (#2891) --- src/AVFoundation/AVAssetImageGenerator.cs | 2 +- .../AVAssetReaderVideoCompositionOutput.cs | 2 +- src/AVFoundation/AVAudioPlayer.cs | 8 +- src/AVFoundation/AVAudioRecorder.cs | 6 +- src/AVFoundation/AVAudioSession.cs | 8 +- .../AVAudioSessionPortDescription.cs | 2 +- src/AVFoundation/AVCaptureDeviceInput.cs | 4 +- src/AVFoundation/AVCaptureVideoDataOutput.cs | 8 +- src/AVFoundation/Enums.cs | 6 +- src/AVFoundation/Events.cs | 14 +-- src/Accelerate/vImageTypes.cs | 6 +- src/AppKit/NSApplicationDelegate.cs | 2 +- src/AppKit/NSColor.cs | 2 +- src/AudioToolbox/AudioBufferList.cs | 4 +- src/AudioToolbox/AudioFile.cs | 4 +- src/AudioToolbox/AudioQueue.cs | 8 +- src/AudioToolbox/AudioSession.cs | 2 +- src/AudioToolbox/AudioType.cs | 4 +- src/AudioUnit/AUGraph.cs | 2 +- src/AudioUnit/AudioComponent.cs | 4 +- src/AudioUnit/AudioUnit.cs | 2 +- src/AudioUnit/AudioUnitUtils.cs | 4 +- src/AudioUnit/ExtAudioFile.cs | 4 +- src/AudioUnit/_AudioConverter.cs | 2 +- src/AudioUnit/_AudioConverterEventArgs.cs | 2 +- src/CoreAnimation/CADefs.cs | 2 +- src/CoreAnimation/CALayer.cs | 8 +- src/CoreAnimation/CAMediaTimingFunction.cs | 2 +- src/CoreBluetooth/GuidWrapper.cs | 6 +- .../PeripheralConnectionOptions.cs | 6 +- src/CoreData/NSAttributeDescription.cs | 2 +- src/CoreGraphics/CGPDFDictionary.cs | 2 +- src/CoreGraphics/CGPDFStream.cs | 2 +- src/CoreGraphics/CGPath.cs | 12 +- src/CoreLocation/CLLocationManager.cs | 2 +- src/CoreMedia/CMFormatDescription.cs | 6 +- src/CoreMedia/CMSampleBuffer.cs | 2 +- src/CoreMedia/CMSync.cs | 2 +- src/CoreMedia/CMTime.cs | 4 +- src/CoreMedia/CoreMedia.cs | 2 +- src/CoreMidi/MidiServices.cs | 4 +- src/CoreText/CTFont.cs | 6 +- src/CoreText/CTFontDescriptor.cs | 4 +- src/Foundation/NSFileManager.cs | 16 +-- src/Foundation/NSIndexPath.cs | 2 +- src/Foundation/NSJsonSerialization.cs | 2 +- src/Foundation/NSMutableData.cs | 2 +- src/Foundation/NSNotificationCenter.cs | 6 +- src/Foundation/NSObject2.cs | 6 +- src/Foundation/NSRunLoop.cs | 6 +- src/Foundation/NSString2.cs | 4 +- src/Foundation/NSUrl.cs | 8 +- src/Foundation/NSUrlConnection.cs | 4 +- src/Foundation/NSUrlCredential.cs | 2 +- src/Foundation/NSUrlSession.cs | 6 +- src/GameKit/GameKit2.cs | 6 +- src/ImageIO/CGImageSource.cs | 2 +- src/MapKit/MKMapView.cs | 6 +- src/MediaPlayer/MPMediaItem.cs | 4 +- src/MediaToolbox/MTAudioProcessingTap.cs | 8 +- src/Obsoletes.cs | 108 +++++++++--------- src/Security/Certificate.cs | 6 +- src/Security/Items.cs | 2 +- src/Security/SecureTransport.cs | 2 +- src/SpriteKit/SKAction.cs | 4 +- src/SystemConfiguration/CaptiveNetwork.cs | 2 +- .../NetworkReachability.cs | 2 +- src/appkit.cs | 18 +-- src/avfoundation.cs | 4 +- src/coreanimation.cs | 6 +- src/coreimage.cs | 4 +- src/foundation.cs | 74 ++++++------ src/gamekit.cs | 2 +- src/generator.cs | 2 +- src/intents.cs | 2 +- src/pdfkit.cs | 4 +- src/qtkit.cs | 2 +- src/scenekit.cs | 74 ++++++------ src/webkit.cs | 2 +- .../apitest/src/DelegateAndDataSourceTest.cs | 4 + tests/apitest/src/EveryFrameworkSmokeTest.cs | 3 + tests/apitest/src/MonoMac/CBUUID.cs | 10 ++ tests/introspection/ApiTypoTest.cs | 2 + tests/introspection/Mac/MacApiCtorInitTest.cs | 1 + tests/introspection/Mac/MacApiSelectorTest.cs | 9 ++ 85 files changed, 328 insertions(+), 297 deletions(-) diff --git a/src/AVFoundation/AVAssetImageGenerator.cs b/src/AVFoundation/AVAssetImageGenerator.cs index 926bd48d77..b8adba3a66 100644 --- a/src/AVFoundation/AVAssetImageGenerator.cs +++ b/src/AVFoundation/AVAssetImageGenerator.cs @@ -30,7 +30,7 @@ namespace XamCore.AVFoundation { #if !XAMCORE_2_0 // compatibility method - [Obsolete ("Use the overload that takes NSValue[] instead")] + [Obsolete ("Use the overload that takes 'NSValue[]' instead.")] public virtual void GenerateCGImagesAsynchronously (NSValue cmTimesRequestedTimes, AVAssetImageGeneratorCompletionHandler handler) { NSValue[] values = new NSValue[] { cmTimesRequestedTimes }; diff --git a/src/AVFoundation/AVAssetReaderVideoCompositionOutput.cs b/src/AVFoundation/AVAssetReaderVideoCompositionOutput.cs index f85b9807c5..04f7e4a09b 100644 --- a/src/AVFoundation/AVAssetReaderVideoCompositionOutput.cs +++ b/src/AVFoundation/AVAssetReaderVideoCompositionOutput.cs @@ -39,7 +39,7 @@ namespace XamCore.AVFoundation { { } - [Advice ("Use Create method or constructor")] + [Advice ("Use 'Create' method or constructor.")] public AVAssetReaderVideoCompositionOutput FromTracks (AVAssetTrack [] videoTracks, AVVideoSettings videoSettings) { return WeakFromTracks (videoTracks, videoSettings == null ? null : videoSettings.ToDictionary ()); diff --git a/src/AVFoundation/AVAudioPlayer.cs b/src/AVFoundation/AVAudioPlayer.cs index e20b99274e..ff860473a2 100644 --- a/src/AVFoundation/AVAudioPlayer.cs +++ b/src/AVFoundation/AVAudioPlayer.cs @@ -28,7 +28,7 @@ using System; namespace XamCore.AVFoundation { #if !XAMCORE_2_0 - [Advice ("Use AudioSettings instead")] + [Advice ("Use 'AudioSettings' instead.")] public class AVAudioPlayerSettings { NSDictionary dict; @@ -139,13 +139,13 @@ namespace XamCore.AVFoundation { } #if !XAMCORE_2_0 - [Obsolete ("This method had an invalid signature in MonoMac 1.0.3, use AVAudioPlayer.FromUrl instead")] + [Obsolete ("This method had an invalid signature in MonoMac 1.0.3, use 'AVAudioPlayer.FromUrl' instead.")] public AVAudioPlayer (NSUrl url, NSError error) : this (url, IntPtr.Zero) { } - [Obsolete ("This method had an invalid signature in MonoMac 1.0.3, use AVAudioPlayer.FromData instead")] + [Obsolete ("This method had an invalid signature in MonoMac 1.0.3, use 'AVAudioPlayer.FromData' instead.")] public AVAudioPlayer (NSData data, NSError error) : this (data, IntPtr.Zero) { @@ -158,7 +158,7 @@ namespace XamCore.AVFoundation { } } - [Advice ("This method was incorrectly named, use PlayAtTime instead")] + [Advice ("This method was incorrectly named, use 'PlayAtTime' instead.")] public bool PlayAtTimetime (double time) { return PlayAtTime (time); diff --git a/src/AVFoundation/AVAudioRecorder.cs b/src/AVFoundation/AVAudioRecorder.cs index e8b4e3658b..5f3d79e184 100644 --- a/src/AVFoundation/AVAudioRecorder.cs +++ b/src/AVFoundation/AVAudioRecorder.cs @@ -33,7 +33,7 @@ using System; namespace XamCore.AVFoundation { #if !XAMCORE_2_0 - [Advice ("Use AudioSettings instead")] + [Advice ("Use 'AudioSettings' instead.")] public class AVAudioRecorderSettings { public AVAudioRecorderSettings () { @@ -146,7 +146,7 @@ namespace XamCore.AVFoundation { } #if !XAMCORE_2_0 - [Advice ("Use Create method")] + [Advice ("Use 'Create' method.")] public static AVAudioRecorder ToUrl (NSUrl url, AVAudioRecorderSettings settings, out NSError error) { if (settings == null) @@ -159,7 +159,7 @@ namespace XamCore.AVFoundation { #if XAMCORE_2_0 internal #else - [Advice ("Use Create method")] + [Advice ("Use 'Create' method.")] public #endif static AVAudioRecorder ToUrl (NSUrl url, NSDictionary settings, out NSError error) diff --git a/src/AVFoundation/AVAudioSession.cs b/src/AVFoundation/AVAudioSession.cs index 3c573b102a..1cb623f4f7 100644 --- a/src/AVFoundation/AVAudioSession.cs +++ b/src/AVFoundation/AVAudioSession.cs @@ -56,7 +56,7 @@ namespace XamCore.AVFoundation { } } - [Obsolete ("Use SetActive(bool, out NSError) instead")] + [Obsolete ("Use 'SetActive(bool, out NSError)' instead.")] public bool SetActive (bool beActive, NSError outError) { // Effectively discarded due to original binding error @@ -83,7 +83,7 @@ namespace XamCore.AVFoundation { #endif #if !XAMCORE_2_0 - [Obsolete ("Use SetCategory(bool, out NSError) instead")] + [Obsolete ("Use 'SetCategory(bool, out NSError)' instead.")] public bool SetCategory (NSString theCategory, NSError outError) { // Effectively discarded due to original binding error @@ -137,14 +137,14 @@ namespace XamCore.AVFoundation { } #if !XAMCORE_2_0 - [Obsolete ("Use SetPreferredSampleRate(bool, out NSError) on iOS 6.0 instead")] + [Obsolete ("Use 'SetPreferredSampleRate(bool, out NSError)' on iOS 6.0 instead.")] public bool SetPreferredHardwareSampleRate (double sampleRate, NSError outError) { // Effectively discarded due to original binding error return SetPreferredHardwareSampleRate (sampleRate, out outError); } - [Obsolete ("Use SetPreferredIOBufferDuration(bool, out NSError) instead")] + [Obsolete ("Use 'SetPreferredIOBufferDuration(bool, out NSError)' instead.")] public bool SetPreferredIOBufferDuration (double duration, NSError outError) { // Effectively discarded due to original binding error diff --git a/src/AVFoundation/AVAudioSessionPortDescription.cs b/src/AVFoundation/AVAudioSessionPortDescription.cs index 3a33f33d1f..cd517639a5 100644 --- a/src/AVFoundation/AVAudioSessionPortDescription.cs +++ b/src/AVFoundation/AVAudioSessionPortDescription.cs @@ -17,7 +17,7 @@ using XamCore.AudioToolbox; namespace XamCore.AVFoundation { public partial class AVAudioSessionPortDescription { #if !XAMCORE_3_0 - [Obsolete ("Use DataSourceDescriptions instead")] + [Obsolete ("Use 'DataSourceDescriptions' instead.")] public virtual AVAudioSessionChannelDescription [] DataSources { get { throw new InvalidOperationException ("Call DataSourceDescriptions instead."); diff --git a/src/AVFoundation/AVCaptureDeviceInput.cs b/src/AVFoundation/AVCaptureDeviceInput.cs index 00823bf3dc..713442ee8e 100644 --- a/src/AVFoundation/AVCaptureDeviceInput.cs +++ b/src/AVFoundation/AVCaptureDeviceInput.cs @@ -37,7 +37,7 @@ using XamCore.ObjCRuntime; namespace XamCore.AVFoundation { public partial class AVCaptureDeviceInput { #if !XAMCORE_2_0 - [Obsolete ("Use FromDevice (AVCaptureDevice, out NSError) instead")] + [Obsolete ("Use 'FromDevice (AVCaptureDevice, out NSError)' instead.")] static public AVCaptureDeviceInput FromDevice (AVCaptureDevice device, IntPtr handle) { NSError error; @@ -53,7 +53,7 @@ namespace XamCore.AVFoundation { #if !XAMCORE_2_0 static NSError globalerr; - [Obsolete ("Use AVCaptureDeviceInput (AVCaptureDevice, out NSError) instead")] + [Obsolete ("Use 'AVCaptureDeviceInput (AVCaptureDevice, out NSError)' instead.")] public AVCaptureDeviceInput (AVCaptureDevice device, IntPtr handle) : this (device, out globalerr) { } diff --git a/src/AVFoundation/AVCaptureVideoDataOutput.cs b/src/AVFoundation/AVCaptureVideoDataOutput.cs index 103172fa2f..6ab2faf61f 100644 --- a/src/AVFoundation/AVCaptureVideoDataOutput.cs +++ b/src/AVFoundation/AVCaptureVideoDataOutput.cs @@ -42,16 +42,16 @@ namespace XamCore.AVFoundation { { } - [Advice ("Use PixelBufferAttributes")] + [Advice ("Use 'PixelBufferAttributes'.")] public AVVideoSettings (CVPixelFormatType formatType) { PixelFormat = formatType; } - [Advice ("Use PixelBufferAttributes")] + [Advice ("Use 'PixelBufferAttributes'.")] public CVPixelFormatType? PixelFormat { get; set; } - [Advice ("Use PixelBufferAttributes")] + [Advice ("Use 'PixelBufferAttributes'.")] public NSDictionary ToDictionary () { if (!PixelFormat.HasValue) @@ -62,7 +62,7 @@ namespace XamCore.AVFoundation { } public partial class AVCaptureVideoDataOutput { - [Advice ("Use SetSampleBufferDelegate")] + [Advice ("Use 'SetSampleBufferDelegate'.")] public void SetSampleBufferDelegateAndQueue (AVCaptureVideoDataOutputSampleBufferDelegate sampleBufferDelegate, DispatchQueue queue) { SetSampleBufferDelegate (sampleBufferDelegate, queue); diff --git a/src/AVFoundation/Enums.cs b/src/AVFoundation/Enums.cs index 4ced39721c..5dac02146c 100644 --- a/src/AVFoundation/Enums.cs +++ b/src/AVFoundation/Enums.cs @@ -116,13 +116,13 @@ namespace XamCore.AVFoundation { #if !XAMCORE_2_0 [EditorBrowsable (EditorBrowsableState.Advanced)] - [Obsolete ("use Locked instead")] + [Obsolete ("Use 'Locked' instead.")] ModeLocked = Locked, [EditorBrowsable (EditorBrowsableState.Advanced)] - [Obsolete ("use AutoFocus instead")] + [Obsolete ("Use 'AutoFocus' instead.")] ModeAutoFocus = AutoFocus, [EditorBrowsable (EditorBrowsableState.Advanced)] - [Obsolete ("use ContinuousAutoFocus instead")] + [Obsolete ("Use 'ContinuousAutoFocus' instead.")] ModeContinuousAutoFocus = ContinuousAutoFocus #endif } diff --git a/src/AVFoundation/Events.cs b/src/AVFoundation/Events.cs index f9c7427736..38ac129922 100644 --- a/src/AVFoundation/Events.cs +++ b/src/AVFoundation/Events.cs @@ -320,7 +320,7 @@ namespace XamCore.AVFoundation { return del; } - [Obsolete ("Deprecated since iOS 6, Use AVAudioSession.Notification.ObserveInterruptionInstead")] + [Obsolete ("Deprecated since iOS 6, Use 'AVAudioSession.Notification.ObserveInterruption' instead.")] public event EventHandler BeginInterruption { add { EnsureEventDelegate ().cbBeginInterruption += value; @@ -330,7 +330,7 @@ namespace XamCore.AVFoundation { } } - [Obsolete ("Deprecated since iOS 6, Use AVAudioSession.Notification.ObserveInterruptionInstead")] + [Obsolete ("Deprecated since iOS 6, Use 'AVAudioSession.Notification.ObserveInterruption' instead.")] public event EventHandler EndInterruption { add { EnsureEventDelegate ().cbEndInterruption += value; @@ -340,7 +340,7 @@ namespace XamCore.AVFoundation { } } - [Obsolete ("Deprecated since iOS 6, Use AVAudioSession.Notification.ObserveAudioRouteChange")] + [Obsolete ("Deprecated since iOS 6, Use 'AVAudioSession.Notification.ObserveAudioRouteChange'.")] public event EventHandler CategoryChanged { add { EnsureEventDelegate ().cbCategoryChanged += value; @@ -350,7 +350,7 @@ namespace XamCore.AVFoundation { } } - [Obsolete ("Deprecated since iOS 6, Use AVAudioSession.Notification.ObserveAudioRouteChange")] + [Obsolete ("Deprecated since iOS 6, Use 'AVAudioSession.Notification.ObserveAudioRouteChange'.")] public event EventHandler InputAvailabilityChanged { add { EnsureEventDelegate ().cbInputAvailabilityChanged += value; @@ -360,7 +360,7 @@ namespace XamCore.AVFoundation { } } - [Obsolete ("Deprecated since iOS 6, Use AVAudioSession.Notification.ObserveAudioRouteChange")] + [Obsolete ("Deprecated since iOS 6, Use 'AVAudioSession.Notification.ObserveAudioRouteChange'.")] public event EventHandler SampleRateChanged { add { EnsureEventDelegate ().cbSampleRateChanged += value; @@ -371,7 +371,7 @@ namespace XamCore.AVFoundation { } } - [Obsolete ("Use AVAudioSession.Notification.ObserveAudioRouteChange, this event does nothing")] + [Obsolete ("Use 'AVAudioSession.Notification.ObserveAudioRouteChange', this event does nothing.")] public event EventHandler InputChannelsChanged { add { EnsureEventDelegate ().cbInputChanged += value; @@ -382,7 +382,7 @@ namespace XamCore.AVFoundation { } } - [Obsolete ("Use AVAudioSession.Notification.ObserveAudioRouteChange, this event does nothing")] + [Obsolete ("Use 'AVAudioSession.Notification.ObserveAudioRouteChange', this event does nothing.")] public event EventHandler OutputChannelsChanged { add { EnsureEventDelegate ().cbOutputChanged += value; diff --git a/src/Accelerate/vImageTypes.cs b/src/Accelerate/vImageTypes.cs index c1ca6fdd24..ecc8442590 100644 --- a/src/Accelerate/vImageTypes.cs +++ b/src/Accelerate/vImageTypes.cs @@ -267,7 +267,7 @@ namespace XamCore.Accelerate { vImageFlags flags); #if !XAMCORE_2_0 - [Obsolete ("Use the overload with 'short[][] kernels' instead")] + [Obsolete ("Use the overload with 'short[][] kernels' instead.")] public static vImageError ConvolveMultiKernelARGB8888 (ref vImageBuffer src, ref vImageBuffer dest, IntPtr tempBuffer, @@ -344,7 +344,7 @@ namespace XamCore.Accelerate { vImageFlags flags); #if !XAMCORE_2_0 - [Obsolete ("Use the overload with 'float[][] kernels' instead")] + [Obsolete ("Use the overload with 'float[][] kernels' instead.")] public static vImageError ConvolveMultiKernelARGBFFFF (ref vImageBuffer src, ref vImageBuffer dest, IntPtr tempBuffer, @@ -363,7 +363,7 @@ namespace XamCore.Accelerate { #endif #if !XAMCORE_2_0 - [Obsolete ("Use the overload with 'float[][] kernels' instead")] + [Obsolete ("Use the overload with 'float[][] kernels' instead.")] public static vImageError ConvolveMultiKernelARGBFFFF (ref vImageBuffer src, ref vImageBuffer dest, IntPtr tempBuffer, diff --git a/src/AppKit/NSApplicationDelegate.cs b/src/AppKit/NSApplicationDelegate.cs index cf9cb1abc1..9059f8f875 100644 --- a/src/AppKit/NSApplicationDelegate.cs +++ b/src/AppKit/NSApplicationDelegate.cs @@ -28,7 +28,7 @@ using XamCore.ObjCRuntime; namespace XamCore.AppKit { public partial class NSApplicationDelegate : NSObject { #if !XAMCORE_2_0 - [Obsolete ("Use DidFinishLaunching (NSNotification) instead")] + [Obsolete ("Use 'DidFinishLaunching (NSNotification)' instead.")] [Export ("applicationDidFinishLaunching:")] public virtual void FinishedLaunching (NSObject notification) { diff --git a/src/AppKit/NSColor.cs b/src/AppKit/NSColor.cs index e778b0dbe9..2a32b4f695 100644 --- a/src/AppKit/NSColor.cs +++ b/src/AppKit/NSColor.cs @@ -247,7 +247,7 @@ namespace XamCore.AppKit { } } - [MountainLion][Obsolete ("Use UnderPageBackgroundColor instead")] + [MountainLion][Obsolete ("Use 'UnderPageBackgroundColor' instead.")] public static NSColor UnderPageBackground { get { return UnderPageBackgroundColor; diff --git a/src/AudioToolbox/AudioBufferList.cs b/src/AudioToolbox/AudioBufferList.cs index c1684c0677..f9280ea44c 100644 --- a/src/AudioToolbox/AudioBufferList.cs +++ b/src/AudioToolbox/AudioBufferList.cs @@ -34,7 +34,7 @@ using XamCore.ObjCRuntime; namespace XamCore.AudioToolbox { #if !XAMCORE_2_0 - [Obsolete ("Use AudioBuffers")] + [Obsolete ("Use 'AudioBuffers'.")] [StructLayout(LayoutKind.Sequential)] public class AudioBufferList { // Preserve is support, but Conditional is not, on fields and will mark the type (not optimal) @@ -68,7 +68,7 @@ namespace XamCore.AudioToolbox } } - [Obsolete ("Use AudioBuffers")] + [Obsolete ("Use 'AudioBuffers'.")] public class MutableAudioBufferList : AudioBufferList, IDisposable { public MutableAudioBufferList (int nubuffers, int bufferSize) : base (nubuffers) diff --git a/src/AudioToolbox/AudioFile.cs b/src/AudioToolbox/AudioFile.cs index f6f1ad929f..7340ab21e5 100644 --- a/src/AudioToolbox/AudioFile.cs +++ b/src/AudioToolbox/AudioFile.cs @@ -759,7 +759,7 @@ namespace XamCore.AudioToolbox { [MarshalAs (UnmanagedType.LPArray)] AudioStreamPacketDescription[] packetDescriptions, long startingPacket, ref int numPackets, IntPtr buffer); #if !XAMCORE_2_0 - [Obsolete ("Use ReadPacketData instead")] + [Obsolete ("Use 'ReadPacketData' instead.")] public AudioFileError ReadPackets (bool useCache, out int numBytes, AudioStreamPacketDescription[] packetDescriptions, long startingPacket, ref int numPackets, IntPtr buffer) { @@ -1208,7 +1208,7 @@ namespace XamCore.AudioToolbox { } } - [Advice ("Use DataFormat instead")] + [Advice ("Use 'DataFormat' instead.")] public AudioStreamBasicDescription StreamBasicDescription { get { return GetProperty (AudioFileProperty.DataFormat) ?? default (AudioStreamBasicDescription); diff --git a/src/AudioToolbox/AudioQueue.cs b/src/AudioToolbox/AudioQueue.cs index fde1576377..517f8c26fa 100644 --- a/src/AudioToolbox/AudioQueue.cs +++ b/src/AudioToolbox/AudioQueue.cs @@ -1059,7 +1059,7 @@ namespace XamCore.AudioToolbox { } #if !XAMCORE_3_0 - [Obsolete ("Use AudioStreamDescription instead")] + [Obsolete ("Use 'AudioStreamDescription' instead.")] public AudioStreamBasicDescription AudioStreamPacketDescription { get { return AudioStreamDescription; @@ -1164,7 +1164,7 @@ namespace XamCore.AudioToolbox { out AudioStreamBasicDescription outProcessingFormat, out IntPtr outAQTap); #if !XAMCORE_2_0 - [Obsolete ("Use CreateProcessingTap (AudioQueueProcessingTapDelegate, AudioQueueProcessingTapFlags, out AudioQueueStatus) instead", true)] + [Obsolete ("Use 'CreateProcessingTap (AudioQueueProcessingTapDelegate, AudioQueueProcessingTapFlags, out AudioQueueStatus)' instead.", true)] [iOS (6,0)] public AudioQueueProcessingTap CreateProcessingTap (AudioQueueProcessingTapCallback processingCallback, AudioQueueProcessingTapFlags flags, out AudioQueueStatus status) @@ -1202,7 +1202,7 @@ namespace XamCore.AudioToolbox { out uint outNumberFrames, IntPtr data); #if !XAMCORE_2_0 - [Obsolete ("Use AudioQueueProcessingTapDelegate")] + [Obsolete ("Use 'AudioQueueProcessingTapDelegate'.")] public delegate uint AudioQueueProcessingTapCallback (AudioQueueProcessingTap audioQueueTap, uint numberOfFrames, ref AudioTimeStamp timeStamp, ref AudioQueueProcessingTapFlags flags, AudioBufferList data); @@ -1269,7 +1269,7 @@ namespace XamCore.AudioToolbox { out AudioQueueProcessingTapFlags outFlags, out uint outNumberFrames, AudioBufferList ioData); - [Obsolete ("Use overload with AudioBuffers")] + [Obsolete ("Use overload with 'AudioBuffers'.")] public AudioQueueStatus GetSourceAudio (uint numberOfFrames, ref AudioTimeStamp timeStamp, out AudioQueueProcessingTapFlags flags, out uint parentNumberOfFrames, AudioBufferList data) { diff --git a/src/AudioToolbox/AudioSession.cs b/src/AudioToolbox/AudioSession.cs index 91723e52f9..c55461bbbd 100644 --- a/src/AudioToolbox/AudioSession.cs +++ b/src/AudioToolbox/AudioSession.cs @@ -435,7 +435,7 @@ namespace XamCore.AudioToolbox { } } - [Availability (Deprecated = Platform.iOS_5_0, Message = "Use InputRoute or OutputRoute instead")] + [Availability (Deprecated = Platform.iOS_5_0, Message = "Use 'InputRoute' or 'OutputRoute' instead.")] static public string AudioRoute { get { return CFString.FetchString (GetIntPtr (AudioSessionProperty.AudioRoute)); diff --git a/src/AudioToolbox/AudioType.cs b/src/AudioToolbox/AudioType.cs index 34919b9e5c..5638795d35 100644 --- a/src/AudioToolbox/AudioType.cs +++ b/src/AudioToolbox/AudioType.cs @@ -742,7 +742,7 @@ namespace XamCore.AudioToolbox { } #if !WATCH - [Advice ("Use the strongly typed AudioTag instead")] + [Advice ("Use the strongly typed 'AudioTag' instead.")] public int Tag { get { return (int) AudioTag; @@ -752,7 +752,7 @@ namespace XamCore.AudioToolbox { } } - [Advice ("Use ChannelUsage instead")] + [Advice ("Use 'ChannelUsage' instead.")] public int Bitmap { get { return (int) ChannelUsage; diff --git a/src/AudioUnit/AUGraph.cs b/src/AudioUnit/AUGraph.cs index c3c75d65e5..5281c8460e 100644 --- a/src/AudioUnit/AUGraph.cs +++ b/src/AudioUnit/AUGraph.cs @@ -89,7 +89,7 @@ namespace XamCore.AudioUnit public event EventHandler RenderCallback; #pragma warning restore 612 - [Obsolete ("Use Handle property instead")] + [Obsolete ("Use 'Handle' property instead.")] public IntPtr Handler { get { return handle; diff --git a/src/AudioUnit/AudioComponent.cs b/src/AudioUnit/AudioComponent.cs index 30c40144a0..b673d93390 100644 --- a/src/AudioUnit/AudioComponent.cs +++ b/src/AudioUnit/AudioComponent.cs @@ -226,13 +226,13 @@ namespace XamCore.AudioUnit } #if !XAMCORE_2_0 - [Obsolete ("Use the overload that accept a ref to the AudioComponentDescription parameter")] + [Obsolete ("Use the overload that accept a ref to the 'AudioComponentDescription' parameter.")] public static AudioComponent FindNextComponent (AudioComponent cmp, AudioComponentDescription cd) { return FindNextComponent (cmp, ref cd); } - [Obsolete ("Use the overload that accept a ref to the AudioComponentDescription parameter")] + [Obsolete ("Use the overload that accept a ref to the 'AudioComponentDescription' parameter.")] public static AudioComponent FindComponent (AudioComponentDescription cd) { return FindNextComponent (null, ref cd); diff --git a/src/AudioUnit/AudioUnit.cs b/src/AudioUnit/AudioUnit.cs index 60ae7eef17..3776213bcf 100644 --- a/src/AudioUnit/AudioUnit.cs +++ b/src/AudioUnit/AudioUnit.cs @@ -1234,7 +1234,7 @@ namespace XamCore.AudioUnit internal #elif XAMCORE_2_0 // TODO: Uncomment once bug https://bugzilla.xamarin.com/show_bug.cgi?id=27924 is fixed - //[Obsolete ("Please use the strongly typed properties instead")] + //[Obsolete ("Please use the strongly typed properties instead.")] public #else public diff --git a/src/AudioUnit/AudioUnitUtils.cs b/src/AudioUnit/AudioUnitUtils.cs index 61270b76f3..7bc978f640 100644 --- a/src/AudioUnit/AudioUnitUtils.cs +++ b/src/AudioUnit/AudioUnitUtils.cs @@ -42,7 +42,7 @@ namespace XamCore.AudioUnit public const int SampleFractionBits = 24; #if !XAMCORE_2_0 - [Advice ("Use AudioStreamBasicDescription::CreateLinearPCM instead")] + [Advice ("Use 'AudioStreamBasicDescription::CreateLinearPCM' instead.")] public static AudioStreamBasicDescription AUCanonicalASBD(double sampleRate, int channel) { // setting AudioStreamBasicDescription @@ -68,7 +68,7 @@ namespace XamCore.AudioUnit return audioFormat; } - [Advice ("Use AudioSession::OverrideCategoryDefaultToSpeaker instead")] + [Advice ("Use 'AudioSession::OverrideCategoryDefaultToSpeaker' instead.")] public static void SetOverrideCategoryDefaultToSpeaker(bool isSpeaker) { int val = isSpeaker ? 1 : 0; diff --git a/src/AudioUnit/ExtAudioFile.cs b/src/AudioUnit/ExtAudioFile.cs index f218505e0d..d2cf0de815 100644 --- a/src/AudioUnit/ExtAudioFile.cs +++ b/src/AudioUnit/ExtAudioFile.cs @@ -317,7 +317,7 @@ namespace XamCore.AudioUnit } #if !XAMCORE_2_0 - [Obsolete ("Use overload with AudioBuffers")] + [Obsolete ("Use overload with 'AudioBuffers'.")] public int Read(int numberFrames, AudioBufferList data) { if (data == null) @@ -343,7 +343,7 @@ namespace XamCore.AudioUnit } #if !XAMCORE_2_0 - [Obsolete ("Use overload with AudioBuffers")] + [Obsolete ("Use overload with 'AudioBuffers'.")] public void WriteAsync(int numberFrames, AudioBufferList data) { int err = ExtAudioFileWriteAsync(_extAudioFile, numberFrames, data); diff --git a/src/AudioUnit/_AudioConverter.cs b/src/AudioUnit/_AudioConverter.cs index 797665d59a..421801f402 100644 --- a/src/AudioUnit/_AudioConverter.cs +++ b/src/AudioUnit/_AudioConverter.cs @@ -34,7 +34,7 @@ using XamCore.AudioToolbox; namespace XamCore.AudioUnitWrapper { #if !XAMCORE_2_0 - [Obsolete ("Use AudioConverter")] + [Obsolete ("Use 'AudioConverter'.")] public class _AudioConverter : IDisposable { #region Variables diff --git a/src/AudioUnit/_AudioConverterEventArgs.cs b/src/AudioUnit/_AudioConverterEventArgs.cs index f857901ea4..ad734eab44 100644 --- a/src/AudioUnit/_AudioConverterEventArgs.cs +++ b/src/AudioUnit/_AudioConverterEventArgs.cs @@ -32,7 +32,7 @@ using XamCore.AudioToolbox; namespace XamCore.AudioUnitWrapper { #if !XAMCORE_2_0 - [Obsolete ("Use AudioConverter")] + [Obsolete ("Use 'AudioConverter'.")] public class _AudioConverterEventArgs : EventArgs { #region Variables diff --git a/src/CoreAnimation/CADefs.cs b/src/CoreAnimation/CADefs.cs index f04d68ae67..581038ce31 100644 --- a/src/CoreAnimation/CADefs.cs +++ b/src/CoreAnimation/CADefs.cs @@ -94,7 +94,7 @@ namespace XamCore.CoreAnimation { public partial class CAKeyFrameAnimation { - [Obsolete ("This method in the future will return a CAKeyFrameAnimation, update your source, or use GetFromKeyPath to avoid this warning for now")] + [Obsolete ("This method in the future will return a 'CAKeyFrameAnimation', update your source, or use 'GetFromKeyPath' to avoid this warning for now.")] public static CAPropertyAnimation FromKeyPath (string path) { return GetFromKeyPath (path); diff --git a/src/CoreAnimation/CALayer.cs b/src/CoreAnimation/CALayer.cs index 6ba6842014..cb6d0dbd4b 100644 --- a/src/CoreAnimation/CALayer.cs +++ b/src/CoreAnimation/CALayer.cs @@ -108,13 +108,13 @@ namespace XamCore.CoreAnimation { } #if !XAMCORE_2_0 - [Obsolete ("Use BeginTime instead")] + [Obsolete ("Use 'BeginTime' instead.")] public double CFTimeInterval { get { return BeginTime; } set { BeginTime = value; } } - [Obsolete ("Use ConvertRectFromLayer instead")] + [Obsolete ("Use 'ConvertRectFromLayer' instead.")] public CGRect ConvertRectfromLayer (CGRect rect, CALayer layer) { return ConvertRectFromLayer (rect, layer); @@ -132,7 +132,7 @@ namespace XamCore.CoreAnimation { } #if MONOMAC - [Obsolete ("Use AutoresizingMask instead")] + [Obsolete ("Use 'AutoresizingMask' instead.")] public virtual CAAutoresizingMask AutoresizinMask { get { return AutoresizingMask; @@ -165,7 +165,7 @@ namespace XamCore.CoreAnimation { #if !XAMCORE_2_0 public partial class CAAnimation { - [Obsolete ("Use BeginTime instead")] + [Obsolete ("Use 'BeginTime' instead.")] public double CFTimeInterval { get { return BeginTime; } set { BeginTime = value; } diff --git a/src/CoreAnimation/CAMediaTimingFunction.cs b/src/CoreAnimation/CAMediaTimingFunction.cs index a76379136a..ab6ca11301 100644 --- a/src/CoreAnimation/CAMediaTimingFunction.cs +++ b/src/CoreAnimation/CAMediaTimingFunction.cs @@ -43,7 +43,7 @@ namespace XamCore.CoreAnimation { } #endif - [Advice ("Use FromName(NSString) with one of the CAMediaTimingFunction fields")] + [Advice ("Use 'FromName(NSString)' with one of the CAMediaTimingFunction fields.")] static public CAMediaTimingFunction FromName (string name) { using (NSString s = new NSString (name)) diff --git a/src/CoreBluetooth/GuidWrapper.cs b/src/CoreBluetooth/GuidWrapper.cs index 599496b828..57ff049a65 100644 --- a/src/CoreBluetooth/GuidWrapper.cs +++ b/src/CoreBluetooth/GuidWrapper.cs @@ -166,7 +166,7 @@ namespace XamCore.CoreBluetooth { } #if !XAMCORE_2_0 - [Obsolete ("Use the CBUUID overload since Guid internal memory representation is different")] + [Obsolete ("Use the 'CBUUID' overload since Guid internal memory representation is different.")] public void DiscoverServices (Guid [] services) { if (services == null) @@ -185,7 +185,7 @@ namespace XamCore.CoreBluetooth { } #if !XAMCORE_2_0 - [Obsolete ("Use the CBUUID overload since Guid internal memory representation is different")] + [Obsolete ("Use the 'CBUUID' overload since Guid internal memory representation is different.")] public void DiscoverIncludedServices (Guid [] includedServiceUUIDs, CBService forService) { if (includedServiceUUIDs == null) @@ -209,7 +209,7 @@ namespace XamCore.CoreBluetooth { } #if !XAMCORE_2_0 - [Obsolete ("Use the CBUUID overload since Guid internal memory representation is different")] + [Obsolete ("Use the 'CBUUID' overload since Guid internal memory representation is different.")] public void DiscoverCharacteristics (Guid [] charactersticUUIDs, CBService forService) { if (charactersticUUIDs == null) diff --git a/src/CoreBluetooth/PeripheralConnectionOptions.cs b/src/CoreBluetooth/PeripheralConnectionOptions.cs index 1a6e467978..f1478f0b15 100644 --- a/src/CoreBluetooth/PeripheralConnectionOptions.cs +++ b/src/CoreBluetooth/PeripheralConnectionOptions.cs @@ -50,7 +50,7 @@ namespace XamCore.CoreBluetooth { #if !MONOMAC #if !XAMCORE_2_0 [iOS (6,0)] - [Obsolete ("use NotifyOnConnection property instead")] + [Obsolete ("Use 'NotifyOnConnection' property instead.")] public bool NotifyOnConnectionKey { set { NotifyOnConnection = value; @@ -58,7 +58,7 @@ namespace XamCore.CoreBluetooth { } [iOS (6,0)] - [Obsolete ("use NotifyOnNotification property instead")] + [Obsolete ("Use 'NotifyOnNotification' property instead.")] public bool NotifyOnNotificationKey { set { NotifyOnNotification = value; @@ -101,7 +101,7 @@ namespace XamCore.CoreBluetooth { #if !XAMCORE_2_0 [iOS (5,0)] - [Obsolete ("Use NotifyOnDisconnection property instead")] + [Obsolete ("Use 'NotifyOnDisconnection' property instead.")] public bool NotifyOnDisconnectionKey { set { NotifyOnDisconnection = value; diff --git a/src/CoreData/NSAttributeDescription.cs b/src/CoreData/NSAttributeDescription.cs index f6f68d5b38..7f684b7aa5 100644 --- a/src/CoreData/NSAttributeDescription.cs +++ b/src/CoreData/NSAttributeDescription.cs @@ -38,7 +38,7 @@ namespace XamCore.CoreData { public partial class NSAttributeDescription { #if !XAMCORE_2_0 - [Obsolete ("Use the DefaultValue property")] + [Obsolete ("Use the 'DefaultValue' property.")] public virtual void SetDefaultValue (NSObject value) { DefaultValue = value; diff --git a/src/CoreGraphics/CGPDFDictionary.cs b/src/CoreGraphics/CGPDFDictionary.cs index c51165f196..cf61693785 100644 --- a/src/CoreGraphics/CGPDFDictionary.cs +++ b/src/CoreGraphics/CGPDFDictionary.cs @@ -164,7 +164,7 @@ namespace XamCore.CoreGraphics { callback (key, CGPDFObject.FromHandle (pdfObject)); } - [Obsolete ("Use the Apply(Action method")] + [Obsolete ("Use the 'Apply(Action)' method.")] public void Apply (Action callback) { GCHandle gch = GCHandle.Alloc (callback); diff --git a/src/CoreGraphics/CGPDFStream.cs b/src/CoreGraphics/CGPDFStream.cs index a1370ea3dc..68dc6237fe 100644 --- a/src/CoreGraphics/CGPDFStream.cs +++ b/src/CoreGraphics/CGPDFStream.cs @@ -66,7 +66,7 @@ namespace XamCore.CoreGraphics { extern static /* CFDataRef */ IntPtr CGPDFStreamCopyData (/* CGPDFStreamRef */ IntPtr stream, /* CGPDFDataFormat* */ out CGPDFDataFormat format); #if !XAMCORE_2_0 - [Obsolete ("Use GetData(out CGPDFDataFormat) instead")] + [Obsolete ("Use 'GetData(out CGPDFDataFormat)' instead.")] public NSData Data { get { CGPDFDataFormat format; diff --git a/src/CoreGraphics/CGPath.cs b/src/CoreGraphics/CGPath.cs index 21d6706dd4..06172c5288 100644 --- a/src/CoreGraphics/CGPath.cs +++ b/src/CoreGraphics/CGPath.cs @@ -193,7 +193,7 @@ namespace XamCore.CoreGraphics { unsafe extern static void CGPathAddLineToPoint (/* CGMutablePathRef */ IntPtr path, CGAffineTransform *m, /* CGFloat */ nfloat x, /* CGFloat */ nfloat y); #if !XAMCORE_2_0 - [Advice ("Use AddLineToPoint instead")] // Bad name + [Advice ("Use 'AddLineToPoint' instead.")] // Bad name public void CGPathAddLineToPoint (nfloat x, nfloat y) { AddLineToPoint (x, y); @@ -211,7 +211,7 @@ namespace XamCore.CoreGraphics { } #if !XAMCORE_2_0 - [Advice ("Use AddLineToPoint instead")] // Bad name + [Advice ("Use 'AddLineToPoint' instead.")] // Bad name public void CGPathAddLineToPoint (CGAffineTransform transform, nfloat x, nfloat y) { AddLineToPoint (transform, x, y); @@ -331,7 +331,7 @@ namespace XamCore.CoreGraphics { } #if !XAMCORE_2_0 - [Advice ("Misnamed method, it's AddLines")] + [Advice ("Misnamed method, it's 'AddLines'.")] public unsafe void AddRects (CGAffineTransform m, CGPoint [] points, int count) #else public unsafe void AddLines (CGAffineTransform m, CGPoint [] points, int count) @@ -352,7 +352,7 @@ namespace XamCore.CoreGraphics { } #if !XAMCORE_2_0 - [Advice ("Misnamed method, it's AddLines")] + [Advice ("Misnamed method, it's 'AddLines'.")] public unsafe void AddRects (CGPoint [] points, int count) #else public unsafe void AddLines (CGPoint [] points, int count) @@ -373,7 +373,7 @@ namespace XamCore.CoreGraphics { CGPathAddEllipseInRect (handle, &m, rect); } #if !XAMCORE_2_0 - [Obsolete ("Use AddEllipseInRect instead")] + [Obsolete ("Use 'AddEllipseInRect' instead.")] public unsafe void AddElipseInRect (CGAffineTransform m, CGRect rect) { CGPathAddEllipseInRect (handle, &m, rect); @@ -385,7 +385,7 @@ namespace XamCore.CoreGraphics { CGPathAddEllipseInRect (handle, null, rect); } #if !XAMCORE_2_0 - [Obsolete ("Use AddEllipseInRect instead")] + [Obsolete ("Use 'AddEllipseInRect' instead.")] public unsafe void AddElipseInRect (CGRect rect) { CGPathAddEllipseInRect (handle, null, rect); diff --git a/src/CoreLocation/CLLocationManager.cs b/src/CoreLocation/CLLocationManager.cs index faae776e70..245df85ec6 100644 --- a/src/CoreLocation/CLLocationManager.cs +++ b/src/CoreLocation/CLLocationManager.cs @@ -50,7 +50,7 @@ namespace XamCore.CoreLocation { } #if !XAMCORE_2_0 - [Obsolete ("Use CLAuthorizationChangedEventArgs")] + [Obsolete ("Use 'CLAuthorizationChangedEventArgs'.")] public class CLAuthroziationChangedEventArgs : CLAuthorizationChangedEventArgs { public CLAuthroziationChangedEventArgs (CLAuthorizationStatus status) diff --git a/src/CoreMedia/CMFormatDescription.cs b/src/CoreMedia/CMFormatDescription.cs index 4c5b2e3eb4..8ced4e4b5c 100644 --- a/src/CoreMedia/CMFormatDescription.cs +++ b/src/CoreMedia/CMFormatDescription.cs @@ -324,14 +324,14 @@ namespace XamCore.CoreMedia { internal extern static /* Boolean */ bool CMVideoFormatDescriptionMatchesImageBuffer (/* CMVideoFormatDescriptionRef */ IntPtr videoDesc, /* CVImageBufferRef */ IntPtr imageBuffer); #if !XAMCORE_2_0 - [Advice ("Use CMVideoFormatDescription")] + [Advice ("Use 'CMVideoFormatDescription'.")] public Size VideoDimensions { get { return CMVideoFormatDescriptionGetDimensions (handle); } } - [Advice ("Use CMVideoFormatDescription")] + [Advice ("Use 'CMVideoFormatDescription'.")] public CGRect GetVideoCleanAperture (bool originIsAtTopLeft) { return CMVideoFormatDescriptionGetCleanAperture (handle, originIsAtTopLeft); @@ -344,7 +344,7 @@ namespace XamCore.CoreMedia { return NSArray.ArrayFromHandle (arr); } - [Advice ("Use CMVideoFormatDescription")] + [Advice ("Use 'CMVideoFormatDescription'.")] public CGSize GetVideoPresentationDimensions (bool usePixelAspectRatio, bool useCleanAperture) { return CMVideoFormatDescriptionGetPresentationDimensions (handle, usePixelAspectRatio, useCleanAperture); diff --git a/src/CoreMedia/CMSampleBuffer.cs b/src/CoreMedia/CMSampleBuffer.cs index 2077d90c34..710014221d 100644 --- a/src/CoreMedia/CMSampleBuffer.cs +++ b/src/CoreMedia/CMSampleBuffer.cs @@ -348,7 +348,7 @@ namespace XamCore.CoreMedia { extern static /* CMFormatDescriptionRef */ IntPtr CMSampleBufferGetFormatDescription (/* CMSampleBufferRef */ IntPtr sbuf); #if !XAMCORE_2_0 - [Advice ("Use GetAudioFormatDescription or GetVideoFormatDescription")] + [Advice ("Use 'GetAudioFormatDescription' or 'GetVideoFormatDescription'.")] public CMFormatDescription GetFormatDescription () { var desc = default(CMFormatDescription); diff --git a/src/CoreMedia/CMSync.cs b/src/CoreMedia/CMSync.cs index f5972bcd80..ca3765be94 100644 --- a/src/CoreMedia/CMSync.cs +++ b/src/CoreMedia/CMSync.cs @@ -58,7 +58,7 @@ namespace XamCore.CoreMedia { #if MONOMAC && !XAMCORE_2_0 // avoid breaking change on MonoMac.dll - [Obsolete ("The CMAudioClockCreate API is only available on iOS")] + [Obsolete ("The 'CMAudioClockCreate' API is only available on iOS.")] public static CMClock CreateAudioClock (out CMClockError clockError) { throw new NotSupportedException (); diff --git a/src/CoreMedia/CMTime.cs b/src/CoreMedia/CMTime.cs index ba003ec56c..a853096527 100644 --- a/src/CoreMedia/CMTime.cs +++ b/src/CoreMedia/CMTime.cs @@ -338,7 +338,7 @@ namespace XamCore.CoreMedia { } #if !XAMCORE_2_0 - [Obsolete ("Use ToDictionary instead")] + [Obsolete ("Use 'ToDictionary' instead.")] public IntPtr AsDictionary { get { return CMTimeCopyAsDictionary (this, IntPtr.Zero); @@ -371,7 +371,7 @@ namespace XamCore.CoreMedia { } #if !XAMCORE_2_0 - [Obsolete ("Use FromDictionary (NSDictionary) instead")] + [Obsolete ("Use 'FromDictionary (NSDictionary)' instead.")] public static CMTime FromDictionary (IntPtr dict) { return CMTimeMakeFromDictionary (dict); diff --git a/src/CoreMedia/CoreMedia.cs b/src/CoreMedia/CoreMedia.cs index 54382224bd..caac2544d8 100644 --- a/src/CoreMedia/CoreMedia.cs +++ b/src/CoreMedia/CoreMedia.cs @@ -26,7 +26,7 @@ namespace XamCore.CoreMedia { TimeCode = 1953325924, // 'tmcd' #if !XAMCORE_2_0 // not part of the header file anymore - [Obsolete ("Use Metadata instead")] + [Obsolete ("Use 'Metadata' instead.")] TimedMetadata = 1953326452, // 'tmet' #endif // note: the 4CC was obsoleted, i.e. Metadata is a new 4CC diff --git a/src/CoreMidi/MidiServices.cs b/src/CoreMidi/MidiServices.cs index 2b596d22df..71ee35acdf 100644 --- a/src/CoreMidi/MidiServices.cs +++ b/src/CoreMidi/MidiServices.cs @@ -418,7 +418,7 @@ namespace XamCore.CoreMidi { } #if !XAMCORE_2_0 - [Obsolete ("Use the (int) overload instead")] + [Obsolete ("Use the (int) overload instead.")] public MidiObject (IntPtr handle) : this ((int) handle, true) { @@ -565,7 +565,7 @@ namespace XamCore.CoreMidi { } #if !XAMCORE_2_0 - [Obsolete ("It is better to use CreateVirtualSource (string name, out MidiError statusCode) to flag errors")] + [Obsolete ("It is better to use 'CreateVirtualSource (string name, out MidiError statusCode)' to flag errors.")] public MidiEndpoint CreateVirtualSource (string name) { using (var nsstr = new NSString (name)){ diff --git a/src/CoreText/CTFont.cs b/src/CoreText/CTFont.cs index e11f665bbb..9945406c0e 100644 --- a/src/CoreText/CTFont.cs +++ b/src/CoreText/CTFont.cs @@ -227,7 +227,7 @@ namespace XamCore.CoreText { public NSDictionary Dictionary {get; private set;} #if !XAMCORE_2_0 - [Advice ("Use FeatureGroup property instead")] + [Advice ("Use 'FeatureGroup' property instead.")] public NSNumber Identifier { get {return (NSNumber) Dictionary [CTFontFeatureKey.Identifier];} set {Adapter.SetValue (Dictionary, CTFontFeatureKey.Identifier, value);} @@ -1377,7 +1377,7 @@ namespace XamCore.CoreText { public NSDictionary Dictionary {get; private set;} #if !XAMCORE_2_0 - [Advice ("Use FeatureGroup property instead")] + [Advice ("Use 'FeatureGroup' property instead.")] public NSNumber TypeIdentifier { get {return (NSNumber) Dictionary [CTFontFeatureKey.Identifier];} set {Adapter.SetValue (Dictionary, CTFontFeatureKey.Identifier, value);} @@ -1391,7 +1391,7 @@ namespace XamCore.CoreText { } #if !XAMCORE_2_0 - [Advice ("Use FeatureWeak or FeatureGroup instead")] + [Advice ("Use 'FeatureWeak' or 'FeatureGroup' instead.")] public NSNumber SelectorIdentifier { get {return (NSNumber) Dictionary [CTFontFeatureSelectorKey.Identifier];} set {Adapter.SetValue (Dictionary, CTFontFeatureSelectorKey.Identifier, value);} diff --git a/src/CoreText/CTFontDescriptor.cs b/src/CoreText/CTFontDescriptor.cs index 4b7cdce146..12336f0283 100644 --- a/src/CoreText/CTFontDescriptor.cs +++ b/src/CoreText/CTFontDescriptor.cs @@ -465,7 +465,7 @@ namespace XamCore.CoreText { static extern IntPtr CTFontDescriptorCreateCopyWithFeature (IntPtr original, IntPtr featureTypeIdentifier, IntPtr featureSelectorIdentifier); #if !XAMCORE_2_0 - [Advice ("Use WithFeature with specific selector")] + [Advice ("Use 'WithFeature' with specific selector.")] public CTFontDescriptor WithFeature (NSNumber featureTypeIdentifier, NSNumber featureSelectorIdentifier) { if (featureTypeIdentifier == null) @@ -492,7 +492,7 @@ namespace XamCore.CoreText { } #if !XAMCORE_2_0 - [Obsolete ("Deprecated")] + [Obsolete] public CTFontDescriptor WithFeature (CTFontFeatureLetterCase.Selector featureSelector) { return WithFeature (FontFeatureGroup.LetterCase, (int) featureSelector); diff --git a/src/Foundation/NSFileManager.cs b/src/Foundation/NSFileManager.cs index 73703c19ea..f401682b20 100644 --- a/src/Foundation/NSFileManager.cs +++ b/src/Foundation/NSFileManager.cs @@ -51,7 +51,7 @@ namespace XamCore.Foundation { #if XAMCORE_2_0 public bool? ExtensionHidden { get ; set; } #else - [Obsolete ("Use ExtensionHidden instead")] + [Obsolete ("Use 'ExtensionHidden' instead.")] public bool? FileExtensionHidden { get; set; } public bool? ExtensionHidden { get { return FileExtensionHidden; } set { FileExtensionHidden = value; } } #endif @@ -63,7 +63,7 @@ namespace XamCore.Foundation { #if XAMCORE_2_0 public nuint? GroupOwnerAccountID { get ; set; } // unsigned long #else - [Obsolete ("Use GroupOwnerAccountID instead")] + [Obsolete ("Use 'GroupOwnerAccountID' instead.")] public nuint? FileGroupOwnerAccountID { get; set; } // unsigned long public nuint? GroupOwnerAccountID { get { return FileGroupOwnerAccountID; } set { FileGroupOwnerAccountID = value; } } #endif @@ -73,7 +73,7 @@ namespace XamCore.Foundation { #if XAMCORE_2_0 public nuint? OwnerAccountID { get; set; } // unsigned long #else - [Obsolete ("Use GroupOwnerAccountID instead")] + [Obsolete ("Use 'GroupOwnerAccountID' instead.")] public nuint? FileOwnerAccountID { get; set; } // unsigned long public nuint? OwnerAccountID { get { return FileOwnerAccountID; } set { FileOwnerAccountID = value; } } #endif @@ -93,19 +93,19 @@ namespace XamCore.Foundation { public ulong? Size { get; set; } // unsigned long long public NSFileType? Type { get; set; } #else - [Obsolete ("Use ReferenceCount instead")] + [Obsolete ("Use 'ReferenceCount' instead.")] public nuint? FileReferenceCount { get; set; } // unsigned long public nuint? ReferenceCount { get { return FileReferenceCount; } set { FileReferenceCount = value; } } - [Obsolete ("Use SystemFileNumber instead")] + [Obsolete ("Use 'SystemFileNumber' instead.")] public nuint? FileSystemFileNumber { get; set; } // unsigned long public nuint? SystemFileNumber { get { return FileSystemFileNumber; } set { FileSystemFileNumber = value; } } - [Obsolete ("Use Size instead")] + [Obsolete ("Use 'Size' instead.")] public ulong? FileSize { get; set; } // unsigned long long public ulong? Size { get { return FileSize; } set { FileSize = value; } } - [Obsolete ("Use Type instead")] + [Obsolete ("Use 'Type' instead.")] public NSFileType? FileType { get; set; } public NSFileType? Type { get { return FileType; } set { FileType = value; } } #endif @@ -283,7 +283,7 @@ namespace XamCore.Foundation { #endregion #if !XAMCORE_2_0 - [Obsolete ("Use FromDictionary instead")] + [Obsolete ("Use FromDictionary instead.")] public static NSFileAttributes FromDict (NSDictionary dict) { return FromDictionary (dict); diff --git a/src/Foundation/NSIndexPath.cs b/src/Foundation/NSIndexPath.cs index 05bd15397f..9331506571 100644 --- a/src/Foundation/NSIndexPath.cs +++ b/src/Foundation/NSIndexPath.cs @@ -18,7 +18,7 @@ namespace XamCore.Foundation { public partial class NSIndexPath { #if !XAMCORE_2_0 - [Advice ("Use NSIndexPath.Create (int[]) instead")] + [Advice ("Use 'NSIndexPath.Create (int[])' instead.")] public unsafe NSIndexPath FromIndexes (uint [] indexes) { if (indexes == null) diff --git a/src/Foundation/NSJsonSerialization.cs b/src/Foundation/NSJsonSerialization.cs index 44dd76fdac..4a38c5ac64 100644 --- a/src/Foundation/NSJsonSerialization.cs +++ b/src/Foundation/NSJsonSerialization.cs @@ -19,7 +19,7 @@ namespace XamCore.Foundation { public partial class NSJsonSerialization { #if !XAMCORE_2_0 - [Obsolete ("Use the Deserialize(NSData,NSJsonReadingOptions,out NSError) overload instead")] + [Obsolete ("Use the 'Deserialize(NSData,NSJsonReadingOptions,out NSError)' overload instead.")] public static NSObject Deserialize (NSData data, NSJsonReadingOptions opt, NSError error) { return Deserialize (data, opt, out error); diff --git a/src/Foundation/NSMutableData.cs b/src/Foundation/NSMutableData.cs index 39a0521638..256f077aa0 100644 --- a/src/Foundation/NSMutableData.cs +++ b/src/Foundation/NSMutableData.cs @@ -80,7 +80,7 @@ namespace XamCore.Foundation { } #if !XAMCORE_2_0 // note: duplicate selector were registered for the method and the Length property setter - [Obsolete ("Use the Length property setter")] + [Obsolete ("Use the 'Length' property setter.")] public virtual void SetLength (nuint len) { Length = len; diff --git a/src/Foundation/NSNotificationCenter.cs b/src/Foundation/NSNotificationCenter.cs index 130f92acee..42716bf0da 100644 --- a/src/Foundation/NSNotificationCenter.cs +++ b/src/Foundation/NSNotificationCenter.cs @@ -73,7 +73,7 @@ namespace XamCore.Foundation { List __mt_ObserverList_var = new List (); #if !XAMCORE_2_0 - [Advice ("Use AddObserver(NSString, Action, NSObject)")] + [Advice ("Use 'AddObserver(NSString, Action, NSObject)'.")] public NSObject AddObserver (string aName, Action notify, NSObject fromObject) { return AddObserver (new NSString (aName), notify, fromObject); @@ -98,13 +98,13 @@ namespace XamCore.Foundation { } #if !XAMCORE_2_0 - [Advice ("Use AddObserver(NSString, Action) instead")] + [Advice ("Use 'AddObserver(NSString, Action)' instead.")] public NSObject AddObserver (string aName, Action notify) { return AddObserver (aName, notify, null); } - [Advice ("Use AddObserver(NSObject, Selector, NSString, NSObject) instead")] + [Advice ("Use 'AddObserver(NSObject, Selector, NSString, NSObject)' instead.")] public void AddObserver (NSObject observer, Selector aSelector, string aname, NSObject anObject) { AddObserver (observer, aSelector, new NSString (aname), anObject); diff --git a/src/Foundation/NSObject2.cs b/src/Foundation/NSObject2.cs index 03c8c65606..d4455736e1 100644 --- a/src/Foundation/NSObject2.cs +++ b/src/Foundation/NSObject2.cs @@ -325,7 +325,7 @@ namespace XamCore.Foundation { } #if !XAMCORE_2_0 - [Obsolete ("Low-level API warning: Use at your own risk: this calls the Release method on the underlying object; Use DangerousRelease to avoid this warning")] + [Obsolete ("Low-level API warning: Use at your own risk: this calls the Release method on the underlying object; Use DangerousRelease to avoid this warning.")] [EditorBrowsable (EditorBrowsableState.Advanced)] public void Release () { @@ -371,7 +371,7 @@ namespace XamCore.Foundation { } #if !XAMCORE_2_0 - [Obsolete ("Low-level API warning: Use at your own risk: this calls the Retain method on the underlying object; Use DangerousRetain to avoid this warning")] + [Obsolete ("Low-level API warning: Use at your own risk: this calls the Retain method on the underlying object; Use DangerousRetain to avoid this warning.")] [EditorBrowsable (EditorBrowsableState.Advanced)] public NSObject Retain () { @@ -391,7 +391,7 @@ namespace XamCore.Foundation { } #if !XAMCORE_2_0 - [Obsolete ("Low-level API warning: Use at your own risk: this calls the Retain method on the underlying object; Use DangerousAutorelease to avoid this warning")] + [Obsolete ("Low-level API warning: Use at your own risk: this calls the Retain method on the underlying object; Use DangerousAutorelease to avoid this warning.")] [EditorBrowsable (EditorBrowsableState.Advanced)] public NSObject Autorelease () { diff --git a/src/Foundation/NSRunLoop.cs b/src/Foundation/NSRunLoop.cs index 34fc808c70..0e7acfa14c 100644 --- a/src/Foundation/NSRunLoop.cs +++ b/src/Foundation/NSRunLoop.cs @@ -40,19 +40,19 @@ namespace XamCore.Foundation { return new NSString (mode); } - [Advice ("Use AddTimer (NSTimer, NSRunLoopMode)")] + [Advice ("Use 'AddTimer (NSTimer, NSRunLoopMode)'.")] public void AddTimer (NSTimer timer, string forMode) { AddTimer (timer, GetRealMode (forMode)); } - [Advice ("Use LimitDateForMode (NSRunLoopMode) instead")] + [Advice ("Use 'LimitDateForMode (NSRunLoopMode)' instead.")] public NSDate LimitDateForMode (string mode) { return LimitDateForMode (GetRealMode (mode)); } - [Advice ("Use AcceptInputForMode (NSRunLoopMode, NSDate)")] + [Advice ("Use 'AcceptInputForMode (NSRunLoopMode, NSDate)'.")] public void AcceptInputForMode (string mode, NSDate limitDate) { AcceptInputForMode (GetRealMode (mode), limitDate); diff --git a/src/Foundation/NSString2.cs b/src/Foundation/NSString2.cs index 7986be71b2..849b6bb764 100644 --- a/src/Foundation/NSString2.cs +++ b/src/Foundation/NSString2.cs @@ -37,7 +37,7 @@ namespace XamCore.Foundation { #endif #if !XAMCORE_2_0 - [Advice ("Use Encode instead")] + [Advice ("Use 'Encode' instead.")] public NSData DataUsingEncoding (NSStringEncoding enc) { #if MONOMAC @@ -47,7 +47,7 @@ namespace XamCore.Foundation { #endif } - [Advice ("Use Encode instead")] + [Advice ("Use 'Encode' instead.")] public NSData DataUsingEncoding (NSStringEncoding enc, bool allowLossyConversion) { #if MONOMAC diff --git a/src/Foundation/NSUrl.cs b/src/Foundation/NSUrl.cs index 9d97df13d8..8eb1333029 100644 --- a/src/Foundation/NSUrl.cs +++ b/src/Foundation/NSUrl.cs @@ -96,14 +96,14 @@ namespace XamCore.Foundation { } #if !XAMCORE_2_0 - [Obsolete ("Use the overload with a NSString constant")] + [Obsolete ("Use the overload with an 'NSString' constant.")] public bool TryGetResource (string key, out NSObject value, out NSError error) { using (var nsKey = new NSString (key)) return GetResourceValue (out value, nsKey, out error); } - [Obsolete ("Use the overload with a NSString constant")] + [Obsolete ("Use the overload with an 'NSString' constant.")] public bool TryGetResource (string key, out NSObject value) { NSError error; @@ -111,14 +111,14 @@ namespace XamCore.Foundation { return GetResourceValue (out value, nsKey, out error); } - [Obsolete ("Use the overload with a NSString constant")] + [Obsolete ("Use the overload with an 'NSString' constant.")] public bool SetResource (string key, NSObject value, out NSError error) { using (var nsKey = new NSString (key)) return SetResourceValue (value, nsKey, out error); } - [Obsolete ("Use the overload with a NSString constant")] + [Obsolete ("Use the overload with an 'NSString' constant.")] public bool SetResource (string key, NSObject value) { NSError error; diff --git a/src/Foundation/NSUrlConnection.cs b/src/Foundation/NSUrlConnection.cs index f1e65ebfa6..b88cfc7a71 100644 --- a/src/Foundation/NSUrlConnection.cs +++ b/src/Foundation/NSUrlConnection.cs @@ -47,7 +47,7 @@ namespace XamCore.Foundation { return (NSData) Runtime.GetNSObject (res); } #if !XAMCORE_2_0 - [Advice ("Use Schedule (NSRunLoop, NSString) instead")] + [Advice ("Use 'Schedule (NSRunLoop, NSString)' instead.")] public virtual void Schedule (NSRunLoop aRunLoop, string forMode) { if (aRunLoop == null) @@ -64,7 +64,7 @@ namespace XamCore.Foundation { NSString.ReleaseNative (nsforMode); } - [Advice ("Use Unschedule (NSRunLoop, NSString) instead")] + [Advice ("Use 'Unschedule (NSRunLoop, NSString)' instead.")] public virtual void Unschedule (NSRunLoop aRunLoop, string forMode) { if (aRunLoop == null) diff --git a/src/Foundation/NSUrlCredential.cs b/src/Foundation/NSUrlCredential.cs index 997872cd0b..6f0468a1e8 100644 --- a/src/Foundation/NSUrlCredential.cs +++ b/src/Foundation/NSUrlCredential.cs @@ -12,7 +12,7 @@ namespace XamCore.Foundation { public partial class NSUrlCredential { #if !XAMCORE_2_0 - [Obsolete ("Use NSUrlCredential(SecTrust) constructor")] + [Obsolete ("Use 'NSUrlCredential(SecTrust)' constructor.")] public NSUrlCredential (IntPtr trust, bool ignored) : base (NSObjectFlag.Empty) { if (IsDirectBinding) { diff --git a/src/Foundation/NSUrlSession.cs b/src/Foundation/NSUrlSession.cs index 76f4b76ed1..f1967da28e 100644 --- a/src/Foundation/NSUrlSession.cs +++ b/src/Foundation/NSUrlSession.cs @@ -16,19 +16,19 @@ namespace XamCore.Foundation { }; } - [Obsolete ("Use the override that accept an NSUrlDownloadSessionResponse parameter")] + [Obsolete ("Use the override that accept an 'NSUrlDownloadSessionResponse' parameter.")] public virtual NSUrlSessionDownloadTask CreateDownloadTask (NSUrlRequest request, NSUrlSessionResponse completionHandler) { return CreateDownloadTask (request, GetCompletionHandler (completionHandler)); } - [Obsolete ("Use the override that accept an NSUrlDownloadSessionResponse parameter")] + [Obsolete ("Use the override that accept an 'NSUrlDownloadSessionResponse' parameter.")] public virtual NSUrlSessionDownloadTask CreateDownloadTask (NSUrl url, NSUrlSessionResponse completionHandler) { return CreateDownloadTask (url, GetCompletionHandler (completionHandler)); } - [Obsolete ("Use the override that accept an NSUrlDownloadSessionResponse parameter")] + [Obsolete ("Use the override that accept an 'NSUrlDownloadSessionResponse' parameter.")] public virtual NSUrlSessionDownloadTask CreateDownloadTaskFromResumeData (NSData resumeData, NSUrlSessionResponse completionHandler) { return CreateDownloadTaskFromResumeData (resumeData, GetCompletionHandler (completionHandler)); diff --git a/src/GameKit/GameKit2.cs b/src/GameKit/GameKit2.cs index 5a97267b90..e921f66f21 100644 --- a/src/GameKit/GameKit2.cs +++ b/src/GameKit/GameKit2.cs @@ -336,7 +336,7 @@ namespace XamCore.GameKit { #endif #if !XAMCORE_2_0 - [Obsolete ("Use SendDataToAllPlayers")] + [Obsolete ("Use 'SendDataToAllPlayers'.")] public virtual bool SendDataToAllPlayer (NSData data, GKMatchSendDataMode mode, out NSError error) { return SendDataToAllPlayers (data, mode, out error); @@ -344,7 +344,7 @@ namespace XamCore.GameKit { #if MONOMAC // never been released with XI - [Obsolete ("Use SendDataToAllPlayers that takes out NSError")] + [Obsolete ("Use 'SendDataToAllPlayers' that takes out NSError.")] public bool SendDataToAllPlayers (NSData data, GKMatchSendDataMode mode, IntPtr ptrToNSErrorHandle) { NSError error = new NSError (ptrToNSErrorHandle); @@ -357,7 +357,7 @@ namespace XamCore.GameKit { #if !XAMCORE_2_0 public partial class GKScore { - [Availability (Introduced = Platform.iOS_4_1 | Platform.Mac_10_8, Deprecated = Platform.iOS_8_0 | Platform.Mac_10_10, Message = "Use LeaderboardIdentifier instead")] + [Availability (Introduced = Platform.iOS_4_1 | Platform.Mac_10_8, Deprecated = Platform.iOS_8_0 | Platform.Mac_10_10, Message = "Use 'LeaderboardIdentifier' instead.")] public string Category { get { return category; } set { category = value; } diff --git a/src/ImageIO/CGImageSource.cs b/src/ImageIO/CGImageSource.cs index 51de887d3d..1c15763196 100644 --- a/src/ImageIO/CGImageSource.cs +++ b/src/ImageIO/CGImageSource.cs @@ -345,7 +345,7 @@ namespace XamCore.ImageIO { [MarshalAs (UnmanagedType.I1)] bool final); #if !XAMCORE_2_0 - [Obsolete ("Use UpdateDataProvider(CGDataProvider,bool)")] + [Obsolete ("Use 'UpdateDataProvider(CGDataProvider,bool)'.")] public void UpdateDataProvider (CGDataProvider provider) { UpdateDataProvider (provider, true); diff --git a/src/MapKit/MKMapView.cs b/src/MapKit/MKMapView.cs index 48701bbb97..b084407d33 100644 --- a/src/MapKit/MKMapView.cs +++ b/src/MapKit/MKMapView.cs @@ -21,7 +21,7 @@ namespace XamCore.MapKit AddAnnotationObject (annotation); } - [Obsolete ("Use AddAnnotations")] + [Obsolete ("Use 'AddAnnotations'.")] public void AddAnnotation (MKAnnotation [] annotations) { AddAnnotationObjects (annotations); @@ -39,7 +39,7 @@ namespace XamCore.MapKit AddAnnotationObject (placemark); } - [Obsolete ("Use AddPlacemarks")] + [Obsolete ("Use 'AddPlacemarks'.")] public void AddAnnotation (MKPlacemark [] placemarks) { AddAnnotationObjects (placemarks); @@ -50,7 +50,7 @@ namespace XamCore.MapKit AddAnnotationObjects (placemarks); } - [Obsolete ("Use VisibleMapRect")] + [Obsolete ("Use 'VisibleMapRect'")] public virtual MKMapRect visibleMapRect { get { return VisibleMapRect; } set { VisibleMapRect = value; } diff --git a/src/MediaPlayer/MPMediaItem.cs b/src/MediaPlayer/MPMediaItem.cs index 8e1b48e1a2..1386698745 100644 --- a/src/MediaPlayer/MPMediaItem.cs +++ b/src/MediaPlayer/MPMediaItem.cs @@ -21,14 +21,14 @@ namespace XamCore.MediaPlayer { public partial class MPMediaItem { #if !XAMCORE_2_0 - [Obsolete ("Use CanFilterByProperty (NSString) instead")] + [Obsolete ("Use 'CanFilterByProperty (NSString)' instead.")] public static bool CanFilterByProperty (string property) { using (NSString ns = new NSString (property)) return CanFilterByProperty (ns); } - [Obsolete ("Use ValueForProperty (NSString) instead")] + [Obsolete ("Use 'ValueForProperty (NSString)' instead.")] public virtual NSObject ValueForProperty (string property) { using (NSString ns = new NSString (property)) diff --git a/src/MediaToolbox/MTAudioProcessingTap.cs b/src/MediaToolbox/MTAudioProcessingTap.cs index f20b71e1f0..e48bc55b47 100644 --- a/src/MediaToolbox/MTAudioProcessingTap.cs +++ b/src/MediaToolbox/MTAudioProcessingTap.cs @@ -191,7 +191,7 @@ namespace XamCore.MediaToolbox /* AudioBufferList* */ ref AudioBufferList bufferListInOut, out MTAudioProcessingTapFlags flagsOut, out CMTimeRange timeRangeOut, out int numberFramesOut); - [Obsolete ("Use overload with AudioBuffers")] + [Obsolete ("Use overload with 'AudioBuffers'.")] public MTAudioProcessingTapError GetSourceAudio (long frames, ref AudioBufferList bufferList, out MTAudioProcessingTapFlags flags, out CMTimeRange timeRange, long framesProvided) { @@ -205,7 +205,7 @@ namespace XamCore.MediaToolbox /* AudioBufferList* */ IntPtr bufferListInOut, out MTAudioProcessingTapFlags flagsOut, out CMTimeRange timeRangeOut, out int numberFramesOut); - [Obsolete ("Use GetSourceAudio(int,AudioBuffers,out MTAudioProcessingTapFlags, out CMTimeRange, out int) instead")] + [Obsolete ("Use 'GetSourceAudio(int,AudioBuffers,out MTAudioProcessingTapFlags, out CMTimeRange, out int)' instead.")] public MTAudioProcessingTapError GetSourceAudio (long frames, AudioBuffers bufferList, out MTAudioProcessingTapFlags flags, out CMTimeRange timeRange, long framesProvided) { @@ -323,7 +323,7 @@ namespace XamCore.MediaToolbox public MTAudioProcessingTapPrepareCallback Prepare { get; set; } public Action Unprepare { get; set; } - [Obsolete ("Use Processing property instead")] + [Obsolete ("Use 'Processing' property instead.")] public MTAudioProcessingTapProcessCallback Process { get; private set; } public MTAudioProcessingTapProcessDelegate Processing { get; private set; } @@ -332,7 +332,7 @@ namespace XamCore.MediaToolbox public unsafe delegate void MTAudioProcessingTapInitCallback (MTAudioProcessingTap tap, out void* tapStorage); public delegate void MTAudioProcessingTapPrepareCallback (MTAudioProcessingTap tap, long maxFrames, ref AudioStreamBasicDescription processingFormat); - [Obsolete ("Use MTAudioProcessingTapProcessDelegate instead")] + [Obsolete ("Use 'MTAudioProcessingTapProcessDelegate' instead.")] public delegate void MTAudioProcessingTapProcessCallback (MTAudioProcessingTap tap, long numberFrames, MTAudioProcessingTapFlags flags, ref AudioBufferList bufferList, out long numberFramesOut, out MTAudioProcessingTapFlags flagsOut); diff --git a/src/Obsoletes.cs b/src/Obsoletes.cs index 6fb27d6a08..1b3cca5f93 100644 --- a/src/Obsoletes.cs +++ b/src/Obsoletes.cs @@ -19,7 +19,7 @@ using XamCore.Foundation; namespace XamCore.AppKit { public partial class NSBrowser { - [Obsolete ("Use GetItem instead")] + [Obsolete ("Use 'GetItem' instead.")] public NSObject ItemAtRowinColumn (int row, int column) { return GetItem (row, column); @@ -27,49 +27,49 @@ namespace XamCore.AppKit { } public partial class NSMatrix { - [Obsolete ("Use MakeCell instead")] + [Obsolete ("Use 'MakeCell' instead.")] public NSCell MakeCellAtRowcolumn (int row, int col) { return MakeCell (row, col); } - [Obsolete ("Use SelectCell instead")] + [Obsolete ("Use 'SelectCell' instead.")] public void SelectCellAtRowcolumn(int row, int column) { SelectCell (row, column); } - [Obsolete ("Use GetRowColumnForPoint instead")] + [Obsolete ("Use 'GetRowColumnForPoint' instead.")] public bool GetRowCoumnForPoint (out int row, out int column, CGPoint aPoint) { return GetRowColumnForPoint (out row, out column, aPoint); } - [Obsolete ("Use PutCell instead")] + [Obsolete ("Use 'PutCell' instead.")] public void PutCellatRowColumn (NSCell newCell, int row, int column) { PutCell (newCell, row, column); } - [Obsolete ("Use InsertColumn instead")] + [Obsolete ("Use 'InsertColumn' instead.")] public void InsertColumnwithCells (int column, NSCell [] newCells) { InsertColumn (column, newCells); } - [Obsolete ("Use HighlightCell instead")] + [Obsolete ("Use 'HighlightCell' instead.")] public void HighlightCellatRowColumn(bool highlight, int row, int column) { HighlightCell (highlight, row, column); } - [Obsolete ("Use ScrollCellToVisible instead")] + [Obsolete ("Use 'ScrollCellToVisible' instead.")] public void ScrollCellToVisibleAtRowcolumn (int row, int column) { ScrollCellToVisible (row, column); } - [Obsolete ("Use SetToolTipForCell instead")] + [Obsolete ("Use 'SetToolTipForCell' instead.")] public void SetToolTipforCell (string toolTipString, NSCell cell) { SetToolTipForCell (toolTipString, cell); @@ -77,7 +77,7 @@ namespace XamCore.AppKit { } public partial class NSStatusItem { - [Obsolete ("Use DrawStatusBarBackground instead")] + [Obsolete ("Use 'DrawStatusBarBackground' instead.")] public void DrawStatusBarBackgroundInRectwithHighlight (CGRect rect, bool highlight) { DrawStatusBarBackground (rect, highlight); @@ -85,13 +85,13 @@ namespace XamCore.AppKit { } public partial class NSBitmapImageRep { - [Obsolete ("Use GetCompressionFactor instead")] + [Obsolete ("Use 'GetCompressionFactor' instead.")] public void GetCompressionfactor(out NSTiffCompression compression, out float factor) { GetCompressionFactor (out compression, out factor); } - [Obsolete ("Use SetCompressionFactor instead")] + [Obsolete ("Use 'SetCompressionFactor' instead.")] public void SetCompressionfactor (NSTiffCompression compression, float factor) { SetCompressionFactor (compression, factor); @@ -100,7 +100,7 @@ namespace XamCore.AppKit { } public partial class NSEvent { - [Obsolete ("Use TouchesMatchingPhase instead")] + [Obsolete ("Use 'TouchesMatchingPhase' instead.")] public NSSet TouchesMatchingPhaseinView (NSTouchPhase phase, NSView view) { return TouchesMatchingPhase (phase, view); @@ -109,7 +109,7 @@ namespace XamCore.AppKit { } public partial class NSMenu { - [Obsolete ("Use InsertItem instead")] + [Obsolete ("Use 'InsertItem' instead.")] public void InsertItematIndex (NSMenuItem newItem, int index) { InsertItem (newItem, index); @@ -118,7 +118,7 @@ namespace XamCore.AppKit { } public partial class NSWindow { - [Obsolete ("Use SetFrameFrom instead")] + [Obsolete ("Use 'SetFrameFrom' instead.")] public void SetFrameFroom (string str) { SetFrameFrom (str); @@ -127,13 +127,13 @@ namespace XamCore.AppKit { } public partial class NSBrowserDelegate { - [Obsolete ("Use SelectRowInColumn instead")] + [Obsolete ("Use 'SelectRowInColumn' instead.")] public bool SelectRowinColumn (NSBrowser sender, int row, int column) { return SelectRowInColumn (sender, row, column); } - [Obsolete ("Use DidChangeLastColumn instead")] + [Obsolete ("Use 'DidChangeLastColumn' instead.")] public void DidChangeLastColumntoColumn (NSBrowser browser, int oldLastColumn, int toColumn) { DidChangeLastColumn (browser, oldLastColumn, toColumn); @@ -142,7 +142,7 @@ namespace XamCore.AppKit { } public partial class NSDocumentController { - [Obsolete ("Use RunModalOpenPanelforTypes instead")] + [Obsolete ("Use 'RunModalOpenPanelforTypes' instead.")] public int RunModalOpenPanelforTypes (NSOpenPanel openPanel,string[] types) { return RunModalOpenPanel (openPanel, types); @@ -151,12 +151,12 @@ namespace XamCore.AppKit { } public partial class NSScroller { - [Obsolete ("Use PreferredStyleChangedNotification")] + [Obsolete ("Use 'PreferredStyleChangedNotification'.")] public static NSString NSPreferredScrollerStyleDidChangeNotification { get { return PreferredStyleChangedNotification; } } - [Obsolete ("Use DrawArrow instead")] + [Obsolete ("Use 'DrawArrow' instead.")] public void DrawArrowhighlight (NSScrollerArrow whichArrow, bool highlight) { DrawArrow (whichArrow, highlight); @@ -165,7 +165,7 @@ namespace XamCore.AppKit { } public partial class NSSplitView { - [Obsolete ("Use SetPositionOfDivider instead")] + [Obsolete ("Use 'SetPositionOfDivider' instead.")] public void SetPositionofDivider (float position, int dividerIndex) { SetPositionOfDivider (position, dividerIndex); @@ -174,62 +174,62 @@ namespace XamCore.AppKit { } public partial class NSView { - [Obsolete ("Use FrameChangedNotification instead")] + [Obsolete ("Use 'FrameChangedNotification' instead.")] public static NSString NSViewFrameDidChangeNotification { get { return FrameChangedNotification; } } - [Obsolete ("Use FocusChangedNotification instead")] + [Obsolete ("Use 'FocusChangedNotification' instead.")] public static NSString NSViewFocusDidChangeNotification { get { return FocusChangedNotification; } } - [Obsolete ("Use BoundsChangedNotification instead")] + [Obsolete ("Use 'BoundsChangedNotification' instead.")] public static NSString NSViewBoundsDidChangeNotification { get { return BoundsChangedNotification; } } - [Obsolete ("Use GlobalFrameChangedNotification instead")] + [Obsolete ("Use 'GlobalFrameChangedNotification' instead.")] public static NSString NSViewGlobalFrameDidChangeNotification { get { return GlobalFrameChangedNotification; } } - [Obsolete ("Use UpdatedTrackingAreasNotification instead")] + [Obsolete ("Use 'UpdatedTrackingAreasNotification' instead.")] public static NSString NSViewDidUpdateTrackingAreasNotification { get { return UpdatedTrackingAreasNotification; } } - [Obsolete ("Use DisplayRectIgnoringOpacity instead")] + [Obsolete ("Use 'DisplayRectIgnoringOpacity' instead.")] public void DisplayRectIgnoringOpacityinContext (CGRect aRect, NSGraphicsContext context) { DisplayRectIgnoringOpacity (aRect, context); } - [Obsolete ("Use CacheDisplay instead")] + [Obsolete ("Use 'CacheDisplay' instead.")] public void CacheDisplayInRecttoBitmapImageRep (CGRect rect, NSBitmapImageRep bitmapImageRep) { CacheDisplay (rect, bitmapImageRep); } - [Obsolete ("Use ScrollRect instead")] + [Obsolete ("Use 'ScrollRect' instead.")] public void ScrollRectby (CGRect aRect, CGSize delta) { ScrollRect (aRect, delta); } - [Obsolete ("Use TranslateRectsNeedingDisplay instead")] + [Obsolete ("Use 'TranslateRectsNeedingDisplay' instead.")] public void TranslateRectsNeedingDisplayInRectby (CGRect clipRect, CGSize delta) { TranslateRectsNeedingDisplay (clipRect, delta); } - [Obsolete ("Use IsMouseInRect instead")] + [Obsolete ("Use 'IsMouseInRect' instead.")] public bool MouseinRect (CGPoint aPoint, CGRect aRect) { return IsMouseInRect (aPoint, aRect); } - [Obsolete ("Use SetContentHuggingPriorityForOrientation instead")] + [Obsolete ("Use 'SetContentHuggingPriorityForOrientation' instead.")] public void SetContentHuggingPriorityforOrientation (float priority, NSLayoutConstraintOrientation orientation) { SetContentHuggingPriorityForOrientation (priority, orientation); @@ -239,7 +239,7 @@ namespace XamCore.AppKit { public partial class NSTableRowView { // void NSTableRowView::DrawBackgrounn(CGRect) - [Obsolete ("Use DrawBackground instead")] + [Obsolete ("Use 'DrawBackground' instead.")] public void DrawBackgrounn(CGRect dirtyRect) { DrawBackground (dirtyRect); @@ -249,7 +249,7 @@ namespace XamCore.AppKit { public partial class NSTextAttachmentCell { // bool NSTextAttachmentCell::TrackMouseinRectofViewuntilMouseUp(NSEvent,CGRect,NSView,bool) - [Obsolete ("Use TrackMouse instead")] + [Obsolete ("Use 'TrackMouse' instead.")] public bool TrackMouseinRectofViewuntilMouseUp (NSEvent theEvent, CGRect cellFrame, NSView controlView, bool untilMouseUp) { return TrackMouse (theEvent, cellFrame, controlView, untilMouseUp); @@ -257,7 +257,7 @@ namespace XamCore.AppKit { } public partial class NSTextBlock { - [Obsolete ("Use WidthValueTypeForLayer instead")] + [Obsolete ("Use 'WidthValueTypeForLayer' instead.")] public NSTextBlockValueType WidthValueTypeForLayeredge (NSTextBlockLayer layer, NSRectEdge edge) { return WidthValueTypeForLayer (layer, edge); @@ -266,106 +266,106 @@ namespace XamCore.AppKit { } public partial class NSTextView { - [Obsolete ("Use SetAlignmentRange instead")] + [Obsolete ("Use 'SetAlignmentRange' instead.")] public void SetAlignmentrange (NSTextAlignment alignment, NSRange range) { SetAlignmentRange (alignment, range); } - [Obsolete ("Use SetBaseWritingDirection instead")] + [Obsolete ("Use 'SetBaseWritingDirection' instead.")] public void SetBaseWritingDirectionrange (NSWritingDirection writingDirection, NSRange range) { SetBaseWritingDirection (writingDirection, range); } - [Obsolete ("Use RulerViewWillMoveMarker instead")] + [Obsolete ("Use 'RulerViewWillMoveMarker' instead.")] public float RulerViewWillMoveMarkertoLocation (NSRulerView ruler, NSRulerMarker marker, float location) { return RulerViewWillMoveMarker (ruler, marker, location); } // System.Single NSTextView::RulerViewWillAddMarkeratLocation(NSRulerView,NSRulerMarker,System.Single) - [Obsolete ("Use RulerViewWillAddMarker instead")] + [Obsolete ("Use 'RulerViewWillAddMarker' instead.")] public float RulerViewWillAddMarkeratLocation (NSRulerView ruler, NSRulerMarker marker, float location) { return RulerViewWillAddMarker (ruler, marker, location); } - [Obsolete ("Use DrawInsertionPoint instead")] + [Obsolete ("Use 'DrawInsertionPoint' instead.")] public void DrawInsertionPointInRectcolorturnedOn (CGRect rect, NSColor color, bool turnedOn) { DrawInsertionPoint (rect, color, turnedOn); } - [Obsolete ("Use InsertCompletion instead")] + [Obsolete ("Use 'InsertCompletion' instead.")] public void InsertCompletionforPartialWord (string word, NSRange charRange, int movement, bool isFinal) { InsertCompletion (word, charRange, movement, isFinal); } - [Obsolete ("Use WriteSelectionToPasteboard instead")] + [Obsolete ("Use 'WriteSelectionToPasteboard' instead.")] public bool WriteSelectionToPasteboardtype (NSPasteboard pboard, string type) { return WriteSelectionToPasteboard (pboard, type); } - [Obsolete ("Use __WriteSelectionToPasteboard instead")] + [Obsolete ("Use '__WriteSelectionToPasteboard' instead.")] public bool WriteSelectionToPasteboardtypes(NSPasteboard pboard, string [] types) { return WriteSelectionToPasteboardtypes (pboard, types); } - [Obsolete ("Use GetPreferredPasteboardType instead")] + [Obsolete ("Use 'GetPreferredPasteboardType' instead.")] public string PreferredPasteboardTypeFromArrayrestrictedToTypesFromArray (string [] availableTypes, string [] allowedTypes) { return GetPreferredPasteboardType (availableTypes, allowedTypes); } - [Obsolete ("Use ReadSelectionFromPasteboard instead")] + [Obsolete ("Use 'ReadSelectionFromPasteboard' instead.")] public bool ReadSelectionFromPasteboardtype (NSPasteboard pboard, string type) { return ReadSelectionFromPasteboard (pboard, type); } - [Obsolete ("Use ValidRequestorForSendType instead")] + [Obsolete ("Use 'ValidRequestorForSendType' instead.")] public NSObject ValidRequestorForSendTypereturnType (string sendType, string returnType) { return ValidRequestorForSendType (sendType, returnType); } - [Obsolete ("Use DragOperationForDraggingInfo instead")] + [Obsolete ("Use 'DragOperationForDraggingInfo' instead.")] public NSDragOperation DragOperationForDraggingInfotype (NSDraggingInfo dragInfo, string type) { return DragOperationForDraggingInfo (dragInfo, type); } - [Obsolete ("Use SetSelectedRanges instead")] + [Obsolete ("Use 'SetSelectedRanges' instead.")] public void SetSelectedRangesaffinitystillSelecting (NSArray ranges, NSSelectionAffinity affinity, bool stillSelectingFlag) { SetSelectedRanges (ranges, affinity, stillSelectingFlag); } - [Obsolete ("Use SetSelectedRange instead")] + [Obsolete ("Use 'SetSelectedRange' instead.")] public void SetSelectedRangeaffinitystillSelecting (NSRange charRange, NSSelectionAffinity affinity, bool stillSelectingFlag) { SetSelectedRange (charRange, affinity, stillSelectingFlag); } - [Obsolete ("Use SetSpellingState instead")] + [Obsolete ("Use 'SetSpellingState' instead.")] public void SetSpellingStaterange (int value, NSRange charRange) { SetSpellingState (value, charRange); } // bool MonoMac.AppKit.NSTextView::ShouldChangeTextInRangesreplacementStrings(MonoMac.Foundation.NSArray,string[]) - [Obsolete ("Use ShouldChangeText instead")] + [Obsolete ("Use 'ShouldChangeText' instead.")] public bool ShouldChangeTextInRangesreplacementStrings (NSArray /* NSRange [] */ affectedRanges, string [] replacementStrings) { return ShouldChangeText (affectedRanges, replacementStrings); } // bool MonoMac.AppKit.NSTextView::ShouldChangeTextInRangereplacementString(MonoMac.Foundation.NSRange,string) - [Obsolete ("Use ShouldChangeTextInRangereplacementString instead")] + [Obsolete ("Use 'ShouldChangeTextInRangereplacementString' instead.")] public bool ShouldChangeTextInRangereplacementString (NSRange affectedCharRange, string replacementString) { return ShouldChangeText (affectedCharRange, replacementString); @@ -374,7 +374,7 @@ namespace XamCore.AppKit { } public partial class NSFontCollection { - [Obsolete ("Use ChangedNotification instead")] + [Obsolete ("Use 'ChangedNotification' instead.")] public static NSString DidChangeNotification { get { return ChangedNotification; } } @@ -383,7 +383,7 @@ namespace XamCore.AppKit { namespace XamCore.SceneKit { public partial class SCNNode { - [Obsolete ("Use SCNNode.AddChildNode instead")] + [Obsolete ("Use 'SCNNode.AddChildNode' instead.")] public void AddChildNodechild (SCNNode child) { AddChildNode (child); diff --git a/src/Security/Certificate.cs b/src/Security/Certificate.cs index 7f2f2e276b..ae15a0a92c 100644 --- a/src/Security/Certificate.cs +++ b/src/Security/Certificate.cs @@ -607,7 +607,7 @@ namespace XamCore.Security { extern static SecStatusCode SecKeyEncrypt (IntPtr handle, SecPadding padding, IntPtr plainText, nint plainTextLen, IntPtr cipherText, ref nint cipherTextLengh); #if !XAMCORE_2_0 - [Obsolete ("Use the Encrypt overload which returns (out) the cipherTextLen value so you can adjust it if needed")] + [Obsolete ("Use the 'Encrypt' overload which returns (out) the cipherTextLen value so you can adjust it if needed.")] public unsafe SecStatusCode Encrypt (SecPadding padding, IntPtr plainText, int plainTextLen, IntPtr cipherText, int cipherTextLen) { if (handle == IntPtr.Zero) @@ -653,7 +653,7 @@ namespace XamCore.Security { extern static SecStatusCode SecKeyDecrypt (IntPtr handle, SecPadding padding, IntPtr cipherTextLen, nint cipherLen, IntPtr plainText, ref nint plainTextLen); #if !XAMCORE_2_0 - [Obsolete ("Use the Decrypt overload which returns (ref) the plainTextLen value so you can adjust it if needed")] + [Obsolete ("Use the 'Decrypt' overload which returns (ref) the plainTextLen value so you can adjust it if needed.")] public unsafe SecStatusCode Decrypt (SecPadding padding, IntPtr cipherText, int cipherTextLen, IntPtr plainText, int plainTextLen) { if (handle == IntPtr.Zero) @@ -695,7 +695,7 @@ namespace XamCore.Security { } #if !XAMCORE_2_0 - [Obsolete ("Use the Decrypt overload which returns (out) the plainText array so you can adjust it if needed")] + [Obsolete ("Use the 'Decrypt' overload which returns (out) the plainText array so you can adjust it if needed.")] public SecStatusCode Decrypt (SecPadding padding, byte [] cipherText, byte [] plainText) { if (plainText == null) diff --git a/src/Security/Items.cs b/src/Security/Items.cs index 25dc0d4eb5..b1a343ee28 100644 --- a/src/Security/Items.cs +++ b/src/Security/Items.cs @@ -1427,7 +1427,7 @@ namespace XamCore.Security { } #if !XAMCORE_2_0 - [Obsolete ("Use GetValueRef and SetValueRef instead")] + [Obsolete ("Use 'GetValueRef' and 'SetValueRef' instead.")] public NSObject ValueRef { get { return FetchObject (SecItem.ValueRef); diff --git a/src/Security/SecureTransport.cs b/src/Security/SecureTransport.cs index b73d72fe7a..eaa8b4e215 100644 --- a/src/Security/SecureTransport.cs +++ b/src/Security/SecureTransport.cs @@ -11,7 +11,7 @@ namespace XamCore.Security { Unknown = 0, Ssl_3_0 = 2, #if !XAMCORE_2_0 - [Obsolete ("Use Ssl_3_0")] + [Obsolete ("Use 'Ssl_3_0'.")] Ssl3_0 = Ssl_3_0, #endif Tls_1_0 = 4, diff --git a/src/SpriteKit/SKAction.cs b/src/SpriteKit/SKAction.cs index 25385ee43e..629d0e27c5 100644 --- a/src/SpriteKit/SKAction.cs +++ b/src/SpriteKit/SKAction.cs @@ -21,13 +21,13 @@ namespace XamCore.SpriteKit { } #if !XAMCORE_2_0 - [Obsolete ("Use Run(Action) instead")] + [Obsolete ("Use 'Run(Action)' instead.")] public static SKAction RunBlock (Action block) { return Run (block); } - [Obsolete ("Use Run(Action,DispatchQueue) instead")] + [Obsolete ("Use 'Run(Action,DispatchQueue)' instead.")] public static SKAction RunBlock (Action block, DispatchQueue queue) { return Run (block, queue); diff --git a/src/SystemConfiguration/CaptiveNetwork.cs b/src/SystemConfiguration/CaptiveNetwork.cs index 6942e42bc7..d7b5d30690 100644 --- a/src/SystemConfiguration/CaptiveNetwork.cs +++ b/src/SystemConfiguration/CaptiveNetwork.cs @@ -60,7 +60,7 @@ namespace XamCore.SystemConfiguration { extern static IntPtr /* CFArrayRef __nullable */ CNCopySupportedInterfaces (); #if !XAMCORE_2_0 - [Obsolete ("Replaced by TryGetSupportedInterfaces")] + [Obsolete ("Replaced by 'TryGetSupportedInterfaces'.")] [Mac (10,8)] static public string[] GetSupportedInterfaces () { diff --git a/src/SystemConfiguration/NetworkReachability.cs b/src/SystemConfiguration/NetworkReachability.cs index 1773deb860..b7b432a245 100644 --- a/src/SystemConfiguration/NetworkReachability.cs +++ b/src/SystemConfiguration/NetworkReachability.cs @@ -242,7 +242,7 @@ namespace XamCore.SystemConfiguration { } #if !XAMCORE_2_0 - [Advice ("Use SetNotification instead")] + [Advice ("Use 'SetNotification' instead.")] public bool SetCallback (Notification callback) { return SetNotification (callback) == StatusCode.OK; diff --git a/src/appkit.cs b/src/appkit.cs index e18e3e2327..6d0d83d095 100644 --- a/src/appkit.cs +++ b/src/appkit.cs @@ -551,7 +551,7 @@ namespace XamCore.AppKit { #if !XAMCORE_2_0 [Export ("setMainMenu:")] - [Obsolete ("Use MainMenu property")] + [Obsolete ("Use 'MainMenu' property.")] [Sealed] void SetMainMenu (NSMenu aMenu); #endif @@ -1686,7 +1686,7 @@ namespace XamCore.AppKit { #if !XAMCORE_2_0 [Export ("setColumnResizingType:")] - [Obsolete ("Use the ColumnResizingType property instead")] + [Obsolete ("Use the 'ColumnResizingType' property instead.")] [Sealed] void SetColumnResizingType (NSBrowserColumnResizingType columnResizingType); #endif @@ -1999,7 +1999,7 @@ namespace XamCore.AppKit { #if !XAMCORE_2_0 [Export ("setShowsStateBy:")] - [Obsolete ("Use the ShowsStateBy property instead")] + [Obsolete ("Use the 'ShowsStateBy' property instead.")] [Sealed] void SetShowsStateBy (nint aType); #endif @@ -5401,7 +5401,7 @@ namespace XamCore.AppKit { #if !XAMCORE_2_0 [Lion, Export ("setDisplayName:")] - [Obsolete ("Use the DisplayName property instead")] + [Obsolete ("Use the 'DisplayName' property instead.")] [Sealed] void SetDisplayName ([NullAllowed] string displayNameOrNull); #endif @@ -8149,7 +8149,7 @@ namespace XamCore.AppKit { #if !XAMCORE_2_0 [Export ("setEditable:")] - [Obsolete ("Use the Editable property instead")] + [Obsolete ("Use the 'Editable' property instead.")] [Sealed] void SetEditable (bool editable); #endif @@ -10458,7 +10458,7 @@ namespace XamCore.AppKit { #if XAMCORE_2_0 uint /* NSGlyph = unsigned int */ GlyphAtIndex (nint glyphIndex, ref bool isValidIndex); #else - [Obsolete ("Use GlyphAtIndex instead")] + [Obsolete ("Use 'GlyphAtIndex' instead.")] uint /* NSGlyph = unsigned int */ GlyphAtIndexisValidIndex (nuint glyphIndex, ref bool isValidIndex); #endif @@ -10466,7 +10466,7 @@ namespace XamCore.AppKit { #if XAMCORE_2_0 uint /* NSGlyph = unsigned int */ GlyphAtIndex (nint glyphIndex); #else - [Obsolete ("Use GlyphAtIndex instead")] + [Obsolete ("Use 'GlyphAtIndex' instead.")] uint /* NSGlyph = unsigned int */ GlyphCount (nint glyphIndex); #endif @@ -12367,7 +12367,7 @@ namespace XamCore.AppKit { #if XAMCORE_2_0 NSObject ValidRequestorForSendType ([NullAllowed] string sendType, [NullAllowed] string returnType); #else - [Obsolete ("Use ValidRequestorForSendType instead")] + [Obsolete ("Use 'ValidRequestorForSendType' instead.")] NSObject ValidRequestorForSendTypereturnType (string sendType, string returnType); #endif @@ -21751,7 +21751,7 @@ namespace XamCore.AppKit { #if !XAMCORE_2_0 [Lion, Export ("openDocumentWithContentsOfURL:display:completionHandler:")] - [Obsolete ("Use OpenDocument instead")] + [Obsolete ("Use 'OpenDocument' instead.")] [Sealed] void OpenDocumentWithContentsOfUrl (NSUrl url, bool displayDocument, OpenDocumentCompletionHandler completionHandler); diff --git a/src/avfoundation.cs b/src/avfoundation.cs index d9575b4d06..44e6276cfc 100644 --- a/src/avfoundation.cs +++ b/src/avfoundation.cs @@ -3999,7 +3999,7 @@ namespace XamCore.AVFoundation { #if XAMCORE_2_0 [Internal] #endif - [Advice ("Use constructor or Create method")] + [Advice ("Use constructor or 'Create' method.")] [Static, Export ("assetWriterInputWithMediaType:outputSettings:")] AVAssetWriterInput FromType (string mediaType, [NullAllowed] NSDictionary outputSettings); @@ -4224,7 +4224,7 @@ namespace XamCore.AVFoundation { #if XAMCORE_2_0 [Internal] #endif - [Advice ("Use Create or constructor")] + [Advice ("Use 'Create' or constructor.")] [Static, Export ("URLAssetWithURL:options:")] AVUrlAsset FromUrl (NSUrl url, [NullAllowed] NSDictionary options); diff --git a/src/coreanimation.cs b/src/coreanimation.cs index 164f019f32..810deed43a 100644 --- a/src/coreanimation.cs +++ b/src/coreanimation.cs @@ -988,7 +988,7 @@ namespace XamCore.CoreAnimation { #if !XAMCORE_4_0 [Field ("kCAAnimationDiscrete")] - [Obsolete ("The name has been fixed, use AnimationDiscrete instead")] + [Obsolete ("The name has been fixed, use 'AnimationDiscrete' instead.")] NSString AnimationDescrete { get; } #endif [Field ("kCAAnimationDiscrete")] @@ -1203,7 +1203,7 @@ namespace XamCore.CoreAnimation { #if !XAMCORE_2_0 [Wrap ("Filter")] - [Obsolete ("The name has been fixed, use Filter instead")] + [Obsolete ("The name has been fixed, use 'Filter' instead.")] NSObject filter { get; set; } #endif } @@ -1227,7 +1227,7 @@ namespace XamCore.CoreAnimation { NSString Removed { get; } #if !XAMCORE_2_0 - [Availability (Deprecated = Platform.iOS_4_0, Message = "Use CAFillMode.Forwards instead")] + [Availability (Deprecated = Platform.iOS_4_0, Message = "Use 'CAFillMode.Forwards' instead.")] [Field ("kCAFillModeFrozen")] NSString Frozen { get; } #endif diff --git a/src/coreimage.cs b/src/coreimage.cs index b4072e4ee7..570d324f25 100644 --- a/src/coreimage.cs +++ b/src/coreimage.cs @@ -1947,11 +1947,11 @@ namespace XamCore.CoreImage { [DisableDefaultCtor] // avoid crashes interface CIKernel { #if !XAMCORE_2_0 - [Obsolete ("Use FromProgramSingle")] // better API + [Obsolete ("Use 'FromProgramSingle'.")] // better API [Static, Export ("kernelWithString:")] CIKernel FromProgram (string coreImageShaderProgram); - [Obsolete ("Use FromProgramMultiple")] // better API + [Obsolete ("Use 'FromProgramMultiple'.")] // better API [Static, Export ("kernelsWithString:")] CIKernel [] FromPrograms (string coreImageShaderProgram); #endif diff --git a/src/foundation.cs b/src/foundation.cs index 4cec2bafd9..0503a1afcb 100644 --- a/src/foundation.cs +++ b/src/foundation.cs @@ -2477,11 +2477,11 @@ namespace XamCore.Foundation #if !XAMCORE_2_0 [Field ("NSMetadataQueryUbiquitousDocumentsScope")] - [Obsolete ("Use UbiquitousDocumentsScope instead")] + [Obsolete ("Use 'UbiquitousDocumentsScope' instead.")] NSString QueryUbiquitousDocumentsScope { get; } [Field ("NSMetadataQueryUbiquitousDataScope")] - [Obsolete ("Use UbiquitousDataScope instead")] + [Obsolete ("Use 'UbiquitousDataScope' instead.")] NSString QueryUbiquitousDataScope { get; } #endif @@ -4960,7 +4960,7 @@ namespace XamCore.Foundation #if XAMCORE_2_0 NSDictionary ToDictionary (); #else - [Obsolete ("Use ToDictionary instead")] + [Obsolete ("Use 'ToDictionary' instead.")] NSDictionary DictionaryRepresentation (); #endif @@ -5198,7 +5198,7 @@ namespace XamCore.Foundation #if XAMCORE_2_0 NSDictionary ToDictionary (); #else - [Obsolete ("Use ToDictionary instead")] + [Obsolete ("Use 'ToDictionary' instead.")] NSDictionary AsDictionary (); #endif @@ -6532,7 +6532,7 @@ namespace XamCore.Foundation #if XAMCORE_2_0 [Internal] #else - [Obsolete ("Use NSUrlCredential(SecTrust) constructor")] + [Obsolete ("Use 'NSUrlCredential(SecTrust)' constructor.")] #endif [Static] [Export ("credentialForTrust:")] @@ -7823,19 +7823,19 @@ namespace XamCore.Foundation #else #if !XAMCORE_2_0 [Bind ("sizeWithFont:")] - //[Obsolete ("Deprecated in iOS7. Use NSString.GetSizeUsingAttributes (UIStringAttributes) instead")] + //[Obsolete ("Deprecated in iOS7. Use 'NSString.GetSizeUsingAttributes (UIStringAttributes)' instead.")] CGSize StringSize (UIFont font); [Bind ("sizeWithFont:forWidth:lineBreakMode:")] - //[Obsolete ("Deprecated in iOS7. Use NSString.GetBoundingRect (CGSize, NSStringDrawingOptions, UIStringAttributes,NSStringDrawingContext) instead.")] + //[Obsolete ("Deprecated in iOS7. Use 'NSString.GetBoundingRect (CGSize, NSStringDrawingOptions, UIStringAttributes,NSStringDrawingContext)' instead.")] CGSize StringSize (UIFont font, nfloat forWidth, UILineBreakMode breakMode); [Bind ("sizeWithFont:constrainedToSize:")] - //[Obsolete ("Deprecated in iOS7. Use NSString.GetBoundingRect (CGSize, NSStringDrawingOptions, UIStringAttributes,NSStringDrawingContext) instead.")] + //[Obsolete ("Deprecated in iOS7. Use 'NSString.GetBoundingRect (CGSize, NSStringDrawingOptions, UIStringAttributes,NSStringDrawingContext)' instead.")] CGSize StringSize (UIFont font, CGSize constrainedToSize); [Bind ("sizeWithFont:constrainedToSize:lineBreakMode:")] - //[Obsolete ("Deprecated in iOS7. Use NSString.GetBoundingRect (CGSize, NSStringDrawingOptions, UIStringAttributes,NSStringDrawingContext) instead.")] + //[Obsolete ("Deprecated in iOS7. Use 'NSString.GetBoundingRect (CGSize, NSStringDrawingOptions, UIStringAttributes,NSStringDrawingContext)' instead.")] CGSize StringSize (UIFont font, CGSize constrainedToSize, UILineBreakMode lineBreakMode); [Bind ("sizeWithFont:minFontSize:actualFontSize:forWidth:lineBreakMode:")] @@ -7844,31 +7844,31 @@ namespace XamCore.Foundation CGSize StringSize (UIFont font, nfloat minFontSize, ref nfloat actualFontSize, nfloat forWidth, UILineBreakMode lineBreakMode); [Bind ("drawAtPoint:withFont:")] - //[Obsolete ("Deprecated in iOS7. Use NSString.DrawString(CGPoint, UIStringAttributes) instead")] + //[Obsolete ("Deprecated in iOS7. Use 'NSString.DrawString(CGPoint, UIStringAttributes)' instead.")] CGSize DrawString (CGPoint point, UIFont font); [Bind ("drawAtPoint:forWidth:withFont:lineBreakMode:")] - //[Obsolete ("Deprecated in iOS7. Use NSString.DrawString(CGRect, UIStringAttributes) instead")] + //[Obsolete ("Deprecated in iOS7. Use 'NSString.DrawString(CGRect, UIStringAttributes)' instead.")] CGSize DrawString (CGPoint point, nfloat width, UIFont font, UILineBreakMode breakMode); [Bind ("drawAtPoint:forWidth:withFont:fontSize:lineBreakMode:baselineAdjustment:")] - //[Obsolete ("Deprecated in iOS7. Use NSString.DrawString(CGRect, UIStringAttributes) instead")] + //[Obsolete ("Deprecated in iOS7. Use 'NSString.DrawString(CGRect, UIStringAttributes)' instead.")] CGSize DrawString (CGPoint point, nfloat width, UIFont font, nfloat fontSize, UILineBreakMode breakMode, UIBaselineAdjustment adjustment); [Bind ("drawAtPoint:forWidth:withFont:minFontSize:actualFontSize:lineBreakMode:baselineAdjustment:")] - //[Obsolete ("Deprecated in iOS7. Use NSString.DrawString(CGRect, UIStringAttributes) instead")] + //[Obsolete ("Deprecated in iOS7. Use 'NSString.DrawString(CGRect, UIStringAttributes)' instead.")] CGSize DrawString (CGPoint point, nfloat width, UIFont font, nfloat minFontSize, ref nfloat actualFontSize, UILineBreakMode breakMode, UIBaselineAdjustment adjustment); [Bind ("drawInRect:withFont:")] - //[Obsolete ("Deprecated in iOS7. Use NSString.DrawString(CGRect, UIStringAttributes) instead")] + //[Obsolete ("Deprecated in iOS7. Use 'NSString.DrawString(CGRect, UIStringAttributes)' instead.")] CGSize DrawString (CGRect rect, UIFont font); [Bind ("drawInRect:withFont:lineBreakMode:")] - //[Obsolete ("Deprecated in iOS7. Use NSString.DrawString(CGRect, UIStringAttributes) instead")] + //[Obsolete ("Deprecated in iOS7. Use 'NSString.DrawString(CGRect, UIStringAttributes)' instead.")] CGSize DrawString (CGRect rect, UIFont font, UILineBreakMode mode); [Bind ("drawInRect:withFont:lineBreakMode:alignment:")] - //[Obsolete ("Deprecated in iOS7. Use NSString.DrawString(CGRect, UIStringAttributes) instead")] + //[Obsolete ("Deprecated in iOS7. Use 'NSString.DrawString(CGRect, UIStringAttributes)' instead.")] CGSize DrawString (CGRect rect, UIFont font, UILineBreakMode mode, UITextAlignment alignment); #endif #endif @@ -10571,24 +10571,24 @@ namespace XamCore.Foundation #if IOS && !XAMCORE_4_0 [iOS (9, 3)] [Notification] - [Obsolete ("Use NSUserDefaults.SizeLimitExceededNotification instead")] + [Obsolete ("Use 'NSUserDefaults.SizeLimitExceededNotification' instead.")] [Field ("NSUserDefaultsSizeLimitExceededNotification")] NSString SizeLimitExceededNotification { get; } [iOS (9, 3)] [Notification] - [Obsolete ("Use NSUserDefaults.DidChangeAccountsNotification instead")] + [Obsolete ("Use 'NSUserDefaults.DidChangeAccountsNotification' instead.")] [Field ("NSUbiquitousUserDefaultsDidChangeAccountsNotification")] NSString DidChangeAccountsNotification { get; } [iOS (9, 3)] [Notification] - [Obsolete ("Use NSUserDefaults.CompletedInitialSyncNotification instead")] + [Obsolete ("Use 'NSUserDefaults.CompletedInitialSyncNotification' instead.")] [Field ("NSUbiquitousUserDefaultsCompletedInitialSyncNotification")] NSString CompletedInitialSyncNotification { get; } [Notification] - [Obsolete ("Use NSUserDefaults.DidChangeNotification instead")] + [Obsolete ("Use 'NSUserDefaults.DidChangeNotification' instead.")] [Field ("NSUserDefaultsDidChangeNotification")] NSString UserDefaultsDidChangeNotification { get; } #endif @@ -11685,7 +11685,7 @@ namespace XamCore.Foundation IntPtr Constructor ([NullAllowed] INSFilePresenter filePresenterOrNil); #if !XAMCORE_4_0 - [Obsolete ("Use .ctor(INSFilePresenter) instead")] + [Obsolete ("Use '.ctor(INSFilePresenter)' instead.")] [Wrap ("this ((INSFilePresenter) filePresenterOrNil)")] IntPtr Constructor ([NullAllowed] NSFilePresenter filePresenterOrNil); #endif @@ -12438,63 +12438,63 @@ namespace XamCore.Foundation //unsigned long long FileSize ([Target] NSDictionary fileAttributes); [Bind ("fileModificationDate")] - [Obsolete ("Use ToFileAttributes ().ModificationDate instead")] + [Obsolete ("Use 'ToFileAttributes ().ModificationDate' instead.")] NSDate FileModificationDate ([Target] NSDictionary fileAttributes); [Bind ("fileType")] - [Obsolete ("Use ToFileAttributes ().Type instead")] + [Obsolete ("Use 'ToFileAttributes ().Type' instead.")] string FileType ([Target] NSDictionary fileAttributes); [Bind ("filePosixPermissions")] - [Obsolete ("Use ToFileAttributes ().PosixPermissions instead")] + [Obsolete ("Use 'ToFileAttributes ().PosixPermissions' instead.")] uint /* unsigned short */ FilePosixPermissions ([Target] NSDictionary fileAttributes); [Bind ("fileOwnerAccountName")] - [Obsolete ("Use ToFileAttributes ().OwnerAccountName instead")] + [Obsolete ("Use 'ToFileAttributes ().OwnerAccountName' instead.")] string FileOwnerAccountName ([Target] NSDictionary fileAttributes); [Bind ("fileGroupOwnerAccountName")] - [Obsolete ("Use ToFileAttributes ().GroupOwnerAccountName instead")] + [Obsolete ("Use 'ToFileAttributes ().GroupOwnerAccountName' instead.")] string FileGroupOwnerAccountName ([Target] NSDictionary fileAttributes); [Bind ("fileSystemNumber")] - [Obsolete ("Use ToFileAttributes ().SystemNumber instead")] + [Obsolete ("Use 'ToFileAttributes ().SystemNumber' instead.")] nint FileSystemNumber ([Target] NSDictionary fileAttributes); [Bind ("fileSystemFileNumber")] - [Obsolete ("Use ToFileAttributes ().SystemFileNumber instead")] + [Obsolete ("Use 'ToFileAttributes ().SystemFileNumber' instead.")] nuint FileSystemFileNumber ([Target] NSDictionary fileAttributes); [Bind ("fileExtensionHidden")] - [Obsolete ("Use ToFileAttributes ().ExtensionHidden instead")] + [Obsolete ("Use 'ToFileAttributes ().ExtensionHidden' instead.")] bool FileExtensionHidden ([Target] NSDictionary fileAttributes); [Bind ("fileHFSCreatorCode")] - [Obsolete ("Use ToFileAttributes ().HfsCreatorCode instead")] + [Obsolete ("Use 'ToFileAttributes ().HfsCreatorCode' instead.")] nuint FileHfsCreatorCode ([Target] NSDictionary fileAttributes); [Bind ("fileHFSTypeCode")] - [Obsolete ("Use ToFileAttributes ().HfsTypeCode instead")] + [Obsolete ("Use 'ToFileAttributes ().HfsTypeCode' instead.")] nuint FileHfsTypeCode ([Target] NSDictionary fileAttributes); [Bind ("fileIsImmutable")] - [Obsolete ("Use ToFileAttributes ().IsImmutable instead")] + [Obsolete ("Use 'ToFileAttributes ().IsImmutable' instead.")] bool FileIsImmutable ([Target] NSDictionary fileAttributes); [Bind ("fileIsAppendOnly")] - [Obsolete ("Use ToFileAttributes ().IsAppendOnly instead")] + [Obsolete ("Use 'ToFileAttributes ().IsAppendOnly' instead.")] bool FileIsAppendOnly ([Target] NSDictionary fileAttributes); [Bind ("fileCreationDate")] - [Obsolete ("Use ToFileAttributes ().CreationDate instead")] + [Obsolete ("Use 'ToFileAttributes ().CreationDate' instead.")] NSDate FileCreationDate ([Target] NSDictionary fileAttributes); [Bind ("fileOwnerAccountID")] - [Obsolete ("Use ToFileAttributes ().OwnerAccountID instead")] + [Obsolete ("Use 'ToFileAttributes ().OwnerAccountID' instead.")] NSNumber FileOwnerAccountID ([Target] NSDictionary fileAttributes); [Bind ("fileGroupOwnerAccountID")] - [Obsolete ("Use ToFileAttributes ().GroupOwnerAccountID instead")] + [Obsolete ("Use 'ToFileAttributes ().GroupOwnerAccountID' instead.")] NSNumber FileGroupOwnerAccountID ([Target] NSDictionary fileAttributes); #endif #endif @@ -13997,7 +13997,7 @@ namespace XamCore.Foundation #if XAMCORE_2_0 void RemoveEventHandler (AEEventClass eventClass, AEEventID eventID); #else - [Obsolete ("Use RemoveEventHandler instead")] + [Obsolete ("Use 'RemoveEventHandler' instead.")] void RemoveEventHandlerForEventClassandEventID (AEEventClass eventClass, AEEventID eventID); #endif diff --git a/src/gamekit.cs b/src/gamekit.cs index fe635223c8..886b2c8b11 100644 --- a/src/gamekit.cs +++ b/src/gamekit.cs @@ -525,7 +525,7 @@ namespace XamCore.GameKit { #if !XAMCORE_2_0 [NoWatch] - // [Availability (Deprecated = Platform.iOS_8_0 | Platform.Mac_10_10, Message = "Use Player instead")] - Unlike rest of deprecations we are just ripping out due to poor naming + // [Availability (Deprecated = Platform.iOS_8_0 | Platform.Mac_10_10, Message = "Use 'Player' instead.")] - Unlike rest of deprecations we are just ripping out due to poor naming [Export ("playerID", ArgumentSemantic.Retain)] string Player { get; } diff --git a/src/generator.cs b/src/generator.cs index bee1309a40..bdf94cd731 100644 --- a/src/generator.cs +++ b/src/generator.cs @@ -7198,7 +7198,7 @@ public partial class Generator : IMemberGatherer { if (a == null) throw new BindingException (1006, true, "The delegate method {0}.{1} is missing the [DelegateName] attribute (or EventArgs)", mi.DeclaringType.FullName, mi.Name); - ErrorHelper.Show (new BindingException (1102, false, "Using the deprecated EventArgs for a delegate signature in {0}.{1}, please use DelegateName instead", mi.DeclaringType.FullName, mi.Name)); + ErrorHelper.Show (new BindingException (1102, false, "Using the deprecated 'EventArgs' for a delegate signature in {0}.{1}, please use 'DelegateName' instead.", mi.DeclaringType.FullName, mi.Name)); return ((EventArgsAttribute) a).ArgName; } diff --git a/src/intents.cs b/src/intents.cs index 6fc5416117..d6b6fd842b 100644 --- a/src/intents.cs +++ b/src/intents.cs @@ -4156,7 +4156,7 @@ namespace XamCore.Intents { interface INRideDriver : NSCopying, NSSecureCoding { [Export ("initWithPersonHandle:nameComponents:displayName:image:rating:phoneNumber:")] - [Deprecated (PlatformName.iOS, 10,2, message:"Use the overload signature instead")] + [Deprecated (PlatformName.iOS, 10,2, message:"Use the overload signature instead.")] [Unavailable (PlatformName.WatchOS)] IntPtr Constructor (INPersonHandle personHandle, [NullAllowed] NSPersonNameComponents nameComponents, [NullAllowed] string displayName, [NullAllowed] INImage image, [NullAllowed] string rating, [NullAllowed] string phoneNumber); diff --git a/src/pdfkit.cs b/src/pdfkit.cs index 736a56b320..1ee3205038 100644 --- a/src/pdfkit.cs +++ b/src/pdfkit.cs @@ -545,8 +545,8 @@ namespace XamCore.PdfKit { [Wrap ("this (bounds, annotationType.GetConstant (), properties)")] IntPtr Constructor (CGRect bounds, PdfAnnotationKey annotationType, [NullAllowed] NSDictionary properties); - [Deprecated (PlatformName.iOS, 11, 0, message: "Use '.ctor (CGRect, PDFAnnotationKey, NSDictionary)' instead")] - [Deprecated (PlatformName.MacOSX, 10, 13, message: "Use '.ctor (CGRect, PDFAnnotationKey, NSDictionary)' instead")] + [Deprecated (PlatformName.iOS, 11, 0, message: "Use '.ctor (CGRect, PDFAnnotationKey, NSDictionary)' instead.")] + [Deprecated (PlatformName.MacOSX, 10, 13, message: "Use '.ctor (CGRect, PDFAnnotationKey, NSDictionary)' instead.")] [Export ("initWithBounds:")] IntPtr Constructor (CGRect bounds); diff --git a/src/qtkit.cs b/src/qtkit.cs index 4fea3236cb..fea82ad003 100644 --- a/src/qtkit.cs +++ b/src/qtkit.cs @@ -972,7 +972,7 @@ namespace XamCore.QTKit IntPtr Constructor (NSDictionary attributes, out NSError error); #if !XAMCORE_3_0 - [Obsolete ("Use the MoveWithTimeRange method instead")] + [Obsolete ("Use the 'MoveWithTimeRange' method instead.")] [Export ("movieWithTimeRange:error:")] IntPtr Constructor (QTTimeRange range, out NSError error); #endif diff --git a/src/scenekit.cs b/src/scenekit.cs index 5f3f8537f9..2a575187f3 100644 --- a/src/scenekit.cs +++ b/src/scenekit.cs @@ -528,59 +528,59 @@ namespace XamCore.SceneKit { [Export ("cameraWithMDLCamera:")] SCNCamera FromModelCamera (MDLCamera modelCamera); - [Watch (4, 0), TV (11, 0), Mac (10, 13), iOS (11, 0)] + [Watch (4, 0), TV (11, 0), Mac (10, 13, onlyOn64: true), iOS (11, 0)] [Export ("fieldOfView")] nfloat FieldOfView { get; set; } - [Watch (4, 0), TV (11, 0), Mac (10, 13), iOS (11, 0)] + [Watch (4, 0), TV (11, 0), Mac (10, 13, onlyOn64: true), iOS (11, 0)] [Export ("projectionDirection", ArgumentSemantic.Assign)] SCNCameraProjectionDirection ProjectionDirection { get; set; } - [Watch (4, 0), TV (11, 0), Mac (10, 13), iOS (11, 0)] + [Watch (4, 0), TV (11, 0), Mac (10, 13, onlyOn64: true), iOS (11, 0)] [Export ("focalLength")] nfloat FocalLength { get; set; } - [Watch (4, 0), TV (11, 0), Mac (10, 13), iOS (11, 0)] + [Watch (4, 0), TV (11, 0), Mac (10, 13, onlyOn64: true), iOS (11, 0)] [Export ("sensorHeight")] nfloat SensorHeight { get; set; } - [Watch (4, 0), TV (11, 0), Mac (10, 13), iOS (11, 0)] + [Watch (4, 0), TV (11, 0), Mac (10, 13, onlyOn64: true), iOS (11, 0)] [Export ("wantsDepthOfField")] bool WantsDepthOfField { get; set; } - [Watch (4, 0), TV (11, 0), Mac (10, 13), iOS (11, 0)] + [Watch (4, 0), TV (11, 0), Mac (10, 13, onlyOn64: true), iOS (11, 0)] [Export ("focusDistance")] nfloat FocusDistance { get; set; } - [Watch (4, 0), TV (11, 0), Mac (10, 13), iOS (11, 0)] + [Watch (4, 0), TV (11, 0), Mac (10, 13, onlyOn64: true), iOS (11, 0)] [Export ("focalBlurSampleCount")] nint FocalBlurSampleCount { get; set; } - [Watch (4, 0), TV (11, 0), Mac (10, 13), iOS (11, 0)] + [Watch (4, 0), TV (11, 0), Mac (10, 13, onlyOn64: true), iOS (11, 0)] [Export ("fStop")] nfloat FStop { get; set; } - [Watch (4, 0), TV (11, 0), Mac (10, 13), iOS (11, 0)] + [Watch (4, 0), TV (11, 0), Mac (10, 13, onlyOn64: true), iOS (11, 0)] [Export ("apertureBladeCount")] nint ApertureBladeCount { get; set; } - [Watch (4, 0), TV (11, 0), Mac (10, 13), iOS (11, 0)] + [Watch (4, 0), TV (11, 0), Mac (10, 13, onlyOn64: true), iOS (11, 0)] [Export ("screenSpaceAmbientOcclusionIntensity")] nfloat ScreenSpaceAmbientOcclusionIntensity { get; set; } - [Watch (4, 0), TV (11, 0), Mac (10, 13), iOS (11, 0)] + [Watch (4, 0), TV (11, 0), Mac (10, 13, onlyOn64: true), iOS (11, 0)] [Export ("screenSpaceAmbientOcclusionRadius")] nfloat ScreenSpaceAmbientOcclusionRadius { get; set; } - [Watch (4, 0), TV (11, 0), Mac (10, 13), iOS (11, 0)] + [Watch (4, 0), TV (11, 0), Mac (10, 13, onlyOn64: true), iOS (11, 0)] [Export ("screenSpaceAmbientOcclusionBias")] nfloat ScreenSpaceAmbientOcclusionBias { get; set; } - [Watch (4, 0), TV (11, 0), Mac (10, 13), iOS (11, 0)] + [Watch (4, 0), TV (11, 0), Mac (10, 13, onlyOn64: true), iOS (11, 0)] [Export ("screenSpaceAmbientOcclusionDepthThreshold")] nfloat ScreenSpaceAmbientOcclusionDepthThreshold { get; set; } - [Watch (4, 0), TV (11, 0), Mac (10, 13), iOS (11, 0)] + [Watch (4, 0), TV (11, 0), Mac (10, 13, onlyOn64: true), iOS (11, 0)] [Export ("screenSpaceAmbientOcclusionNormalThreshold")] nfloat ScreenSpaceAmbientOcclusionNormalThreshold { get; set; } @@ -590,7 +590,7 @@ namespace XamCore.SceneKit { interface ISCNCameraControlConfiguration {} [NoWatch] - [TV (11,0), Mac (10,13), iOS (11,0)] + [TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] [Protocol] interface SCNCameraControlConfiguration { @@ -621,7 +621,7 @@ namespace XamCore.SceneKit { interface ISCNCameraControllerDelegate {} - [Watch (4,0), TV (11,0), Mac (10,13), iOS (11,0)] + [Watch (4,0), TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] [Protocol] [Model] // Figured I would keep the model for convenience, as all the methods here are optional [BaseType (typeof(NSObject))] @@ -634,7 +634,7 @@ namespace XamCore.SceneKit { void CameraInertiaDidEnd (SCNCameraController cameraController); } - [Watch (4,0), TV (11,0), Mac (10,13), iOS (11,0)] + [Watch (4,0), TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] [BaseType (typeof(NSObject))] interface SCNCameraController { @@ -1039,7 +1039,7 @@ namespace XamCore.SceneKit { } #if XAMCORE_2_0 && !WATCH - [NoWatch, NoTV, Mac (10,13), iOS (11,0)] + [NoWatch, NoTV, Mac (10, 13, onlyOn64: true), iOS (11,0)] [BaseType (typeof(NSObject))] [DisableDefaultCtor] interface SCNGeometryTessellator : NSCopying, NSSecureCoding @@ -1109,7 +1109,7 @@ namespace XamCore.SceneKit { [Field ("SCNHitTestOptionCategoryBitMask")] NSString OptionCategoryBitMaskKey { get; } - [Watch (4, 0), TV (11, 0), Mac (10, 13), iOS (11, 0)] + [Watch (4, 0), TV (11, 0), Mac (10, 13, onlyOn64: true), iOS (11, 0)] [Field ("SCNHitTestOptionSearchMode")] NSString OptionSearchModeKey { get; } } @@ -1489,15 +1489,15 @@ namespace XamCore.SceneKit { [Export ("materialWithMDLMaterial:")] SCNMaterial FromMaterial (MDLMaterial material); - [Watch (4, 0), TV (11, 0), Mac (10, 13), iOS (11, 0)] + [Watch (4, 0), TV (11, 0), Mac (10, 13, onlyOn64: true), iOS (11, 0)] [Export ("displacement")] SCNMaterialProperty Displacement { get; } - [Watch (4, 0), TV (11, 0), Mac (10, 13), iOS (11, 0)] + [Watch (4, 0), TV (11, 0), Mac (10, 13, onlyOn64: true), iOS (11, 0)] [Export ("fillMode", ArgumentSemantic.Assign)] SCNFillMode FillMode { get; set; } - [Watch (4, 0), TV (11, 0), Mac (10, 13), iOS (11, 0)] + [Watch (4, 0), TV (11, 0), Mac (10, 13, onlyOn64: true), iOS (11, 0)] [Export ("colorBufferWriteMask", ArgumentSemantic.Assign)] SCNColorMask ColorBufferWriteMask { get; set; } @@ -2418,7 +2418,7 @@ namespace XamCore.SceneKit { [Export ("renderAtTime:viewport:commandBuffer:passDescriptor:")] void Render (double timeInSeconds, CGRect viewport, IMTLCommandBuffer commandBuffer, MTLRenderPassDescriptor renderPassDescriptor); - [Watch (4,0), TV (11,0), Mac (10,13), iOS (11,0)] + [Watch (4,0), TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] [Export ("renderWithViewport:commandBuffer:passDescriptor:")] void Render (CGRect viewport, IMTLCommandBuffer commandBuffer, MTLRenderPassDescriptor renderPassDescriptor); #endif @@ -2426,7 +2426,7 @@ namespace XamCore.SceneKit { [Export ("updateProbes:atTime:")] void Update (SCNNode [] lightProbes, double time); - [Watch (4,0), TV (11,0), Mac (10,13), iOS (11,0)] + [Watch (4,0), TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] [Export ("updateAtTime:")] void Update (double time); @@ -3069,7 +3069,7 @@ namespace XamCore.SceneKit { [Export ("renderer:didSimulatePhysicsAtTime:")] void DidSimulatePhysics ([Protocolize]SCNSceneRenderer renderer, double timeInSeconds); - [Watch (4,0), TV (11,0), Mac (10,13), iOS (11,0)] + [Watch (4,0), TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] [Export ("renderer:didApplyConstraintsAtTime:")] void DidApplyConstraints ([Protocolize] SCNSceneRenderer renderer, double atTime); @@ -3339,13 +3339,15 @@ namespace XamCore.SceneKit { [Export ("antialiasingMode")] SCNAntialiasingMode AntialiasingMode { get; set; } - [Watch (4, 0), TV (11, 0), Mac (10, 13), iOS (11, 0)] +#if XAMCORE_2_0 + [Watch (4, 0), TV (11, 0), Mac (10, 13, onlyOn64: true), iOS (11, 0)] [Export ("cameraControlConfiguration")] ISCNCameraControlConfiguration CameraControlConfiguration { get; } - [Watch (4, 0), TV (11, 0), Mac (10, 13), iOS (11, 0)] + [Watch (4, 0), TV (11, 0), Mac (10, 13, onlyOn64: true), iOS (11, 0)] [Export ("defaultCameraController")] SCNCameraController DefaultCameraController { get; } +#endif [Watch (4,0), TV (11,0), Mac (10,13), iOS (11,0)] [Export ("rendersContinuously")] @@ -3481,7 +3483,7 @@ namespace XamCore.SceneKit { [Export ("enabled")] bool Enabled { [Bind ("isEnabled")] get; set; } - [Watch (4, 0), TV (11, 0), Mac (10, 13), iOS (11, 0)] + [Watch (4, 0), TV (11, 0), Mac (10, 13, onlyOn64: true), iOS (11, 0)] [Export ("incremental")] bool Incremental { [Bind ("isIncremental")] get; set; } @@ -3530,15 +3532,15 @@ namespace XamCore.SceneKit { [Static, Export ("lookAtConstraintWithTarget:")] SCNLookAtConstraint Create ([NullAllowed] SCNNode target); - [Watch (4, 0), TV (11, 0), Mac (10, 13), iOS (11, 0)] + [Watch (4, 0), TV (11, 0), Mac (10, 13, onlyOn64: true), iOS (11, 0)] [Export ("targetOffset", ArgumentSemantic.Assign)] SCNVector3 TargetOffset { get; set; } - [Watch (4, 0), TV (11, 0), Mac (10, 13), iOS (11, 0)] + [Watch (4, 0), TV (11, 0), Mac (10, 13, onlyOn64: true), iOS (11, 0)] [Export ("localFront", ArgumentSemantic.Assign)] SCNVector3 LocalFront { get; set; } - [Watch (4, 0), TV (11, 0), Mac (10, 13), iOS (11, 0)] + [Watch (4, 0), TV (11, 0), Mac (10, 13, onlyOn64: true), iOS (11, 0)] [Export ("worldUp", ArgumentSemantic.Assign)] SCNVector3 WorldUp { get; set; } } @@ -3554,12 +3556,12 @@ namespace XamCore.SceneKit { [Static, Export ("transformConstraintInWorldSpace:withBlock:")] SCNTransformConstraint Create (bool inWorldSpace, SCNTransformConstraintHandler transformHandler); - [Watch (4,0), TV (11,0), Mac (10,13), iOS (11,0)] + [Watch (4,0), TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] [Static] [Export ("positionConstraintInWorldSpace:withBlock:")] SCNTransformConstraint CreatePositionConstraint (bool inWorldSpace, Func transformHandler); - [Watch (4,0), TV (11,0), Mac (10,13), iOS (11,0)] + [Watch (4,0), TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] [Static] [Export ("orientationConstraintInWorldSpace:withBlock:")] SCNTransformConstraint CreateOrientationConstraint (bool inWorldSpace, Func transformHandler); @@ -4832,7 +4834,7 @@ namespace XamCore.SceneKit { unsafe void Length (IntPtr bytes, nuint length); } - [Watch (4,0), TV (11,0), Mac (10,13), iOS (11,0)] + [Watch (4,0), TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] [BaseType (typeof(NSObject))] interface SCNTimingFunction : NSSecureCoding { @@ -4852,7 +4854,7 @@ namespace XamCore.SceneKit { interface ISCNAnimationProtocol {} - [Watch (4,0), TV (11,0), Mac (10,13), iOS (11,0)] + [Watch (4,0), TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] [BaseType (typeof(NSObject))] interface SCNAnimation : SCNAnimationProtocol, NSCopying, NSSecureCoding { @@ -4926,7 +4928,7 @@ namespace XamCore.SceneKit { bool Cumulative { [Bind ("isCumulative")] get; set; } } - [Watch (4,0), TV (11,0), Mac (10,13), iOS (11,0)] + [Watch (4,0), TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] [BaseType (typeof(NSObject))] interface SCNAnimationPlayer : SCNAnimatable, NSCopying, NSSecureCoding { diff --git a/src/webkit.cs b/src/webkit.cs index 2ff763ee62..b905fc8ae4 100644 --- a/src/webkit.cs +++ b/src/webkit.cs @@ -2397,7 +2397,7 @@ namespace XamCore.WebKit { #if XAMCORE_2_0 void SetWebScriptValueAtIndex (int /* unsigned int */ index, NSObject value); #else - [Obsolete ("Use SetWebScriptValueAtIndex instead")] + [Obsolete ("Use 'SetWebScriptValueAtIndex' instead.")] void SetWebScriptValueAtIndexvalue (int /* unsigned int */ index, NSObject value); #endif diff --git a/tests/apitest/src/DelegateAndDataSourceTest.cs b/tests/apitest/src/DelegateAndDataSourceTest.cs index b176de5109..4d7d9fb832 100644 --- a/tests/apitest/src/DelegateAndDataSourceTest.cs +++ b/tests/apitest/src/DelegateAndDataSourceTest.cs @@ -126,6 +126,10 @@ namespace Xamarin.Mac.Tests if (Asserts.IsAtLeastElCapitan && IntPtr.Size == 4) return true; break; + case "CBCentralManager": + if (IntPtr.Size == 4 && PlatformHelper.CheckSystemVersion(10, 13)) // Removed from 32-bit in macOS 10.13 + return true; + break; } return false; diff --git a/tests/apitest/src/EveryFrameworkSmokeTest.cs b/tests/apitest/src/EveryFrameworkSmokeTest.cs index b92e1035d2..74507a1a37 100644 --- a/tests/apitest/src/EveryFrameworkSmokeTest.cs +++ b/tests/apitest/src/EveryFrameworkSmokeTest.cs @@ -70,6 +70,9 @@ namespace Xamarin.Mac.Tests case "PhotosUILibrary": case "IntentsLibrary": case "MediaPlayerLibrary": + case "VisionLibrary": + case "CoreMLLibrary": + case "ExternalAccessoryLibrary": return LoadStatus.Acceptable; } } diff --git a/tests/apitest/src/MonoMac/CBUUID.cs b/tests/apitest/src/MonoMac/CBUUID.cs index a92b144bff..b1ef8618b5 100644 --- a/tests/apitest/src/MonoMac/CBUUID.cs +++ b/tests/apitest/src/MonoMac/CBUUID.cs @@ -12,18 +12,28 @@ using System; #if XAMCORE_2_0 using Foundation; using CoreBluetooth; +using ObjCRuntime; #else using MonoMac.Foundation; using MonoMac.CoreBluetooth; +using MonoMac.ObjCRuntime; #endif using NUnit.Framework; +using Xamarin.Mac.Tests; namespace MonoMacFixtures.CoreBluetooth { [TestFixture] public class CBUUIDTest { + [SetUp] + public void SetUp () + { + if (IntPtr.Size == 4 && PlatformHelper.CheckSystemVersion(10, 13)) + Assert.Ignore("CCUUID was removed from 32-bit in macOS 10.13"); + } + [Test] public void Roundtrip_16bits () { diff --git a/tests/introspection/ApiTypoTest.cs b/tests/introspection/ApiTypoTest.cs index 4119b92554..812b55fc20 100644 --- a/tests/introspection/ApiTypoTest.cs +++ b/tests/introspection/ApiTypoTest.cs @@ -262,6 +262,7 @@ namespace Introspection "Lod", "Lopass", "Lowlevel", + "Mapbuffer", "Matchingcoalesce", "Megaampere", "Megaamperes", @@ -375,6 +376,7 @@ namespace Introspection "Shadable", "Sharegroup", "Siemen", + "simd", "Sinh", "Sint", // as in "Signed Integer" "Simd", diff --git a/tests/introspection/Mac/MacApiCtorInitTest.cs b/tests/introspection/Mac/MacApiCtorInitTest.cs index b9fc1a405b..fd4f8c544a 100644 --- a/tests/introspection/Mac/MacApiCtorInitTest.cs +++ b/tests/introspection/Mac/MacApiCtorInitTest.cs @@ -156,6 +156,7 @@ namespace Introspection { case "AppKit.NSMutableFontCollection": return true; // Crashes in 10.12 case "CoreBluetooth.CBCentralManager": + case "MonoMac.CoreBluetooth.CBCentralManager": if (IntPtr.Size == 4 && Mac.CheckSystemVersion (10, 13)) // 32-bit removed unannounced in 10.13 return true; break; diff --git a/tests/introspection/Mac/MacApiSelectorTest.cs b/tests/introspection/Mac/MacApiSelectorTest.cs index 528687b2b6..d9135b29d1 100644 --- a/tests/introspection/Mac/MacApiSelectorTest.cs +++ b/tests/introspection/Mac/MacApiSelectorTest.cs @@ -602,6 +602,15 @@ namespace Introspection { break; } break; + case "MonoMac.CoreBluetooth": + switch (type.Name) { + case "CBCentral": + case "CBPeripheral": + if (selectorName == "UUID" && Mac.CheckSystemVersion (10, 13)) // UUID removed from headers in 10.13 + return true; + break; + } + break; } return base.Skip (type, selectorName); } From d9288c7f22c7f6b6f5992c1098a607d39e434e48 Mon Sep 17 00:00:00 2001 From: Timothy Risi Date: Mon, 6 Nov 2017 08:25:17 -0900 Subject: [PATCH 091/145] Fix build --- src/coreanimation.cs | 4 +- src/scenekit.cs | 158 ++++++++++++++++++++++--------------------- 2 files changed, 84 insertions(+), 78 deletions(-) diff --git a/src/coreanimation.cs b/src/coreanimation.cs index 810deed43a..ca2efb6e4b 100644 --- a/src/coreanimation.cs +++ b/src/coreanimation.cs @@ -1014,10 +1014,12 @@ namespace XamCore.CoreAnimation { #region SceneKitAdditions - [TV (11,0), Mac (10,13), iOS (11,0), NoWatch] +#if XAMCORE_2_0 + [TV (11,0), Mac (10,13, onlyOn64: true), iOS (11,0), NoWatch] [Static] [Export ("animationWithSCNAnimation:")] CAAnimation FromSCNAnimation (SCNAnimation animation); +#endif [iOS (8,0)][Mac (10,9, onlyOn64 : true)] [Export ("usesSceneTimeBase")] diff --git a/src/scenekit.cs b/src/scenekit.cs index 2a575187f3..6faadd12c0 100644 --- a/src/scenekit.cs +++ b/src/scenekit.cs @@ -121,12 +121,14 @@ namespace XamCore.SceneKit { [Export ("addAnimation:forKey:")] void AddAnimation (CAAnimation animation, [NullAllowed] NSString key); +#if XAMCORE_2_0 #if XAMCORE_4_0 [Abstract] #endif - [iOS (11,0), TV (11,0), Watch (4,0), Mac (10,13)] + [iOS (11,0), TV (11,0), Watch (4,0), Mac (10,13, onlyOn64, true)] [Export ("addAnimationPlayer:forKey:")] void AddAnimation (SCNAnimationPlayer player, [NullAllowed] NSString key); +#endif #if XAMCORE_2_0 [Abstract] @@ -146,13 +148,15 @@ namespace XamCore.SceneKit { [Export ("animationKeys")] NSString [] GetAnimationKeys (); +#if XAMCORE_2_0 #if XAMCORE_4_0 [Abstract] #endif [return: NullAllowed] - [iOS (11,0), TV (11,0), Watch (4,0), Mac (10,13)] + [iOS (11,0), TV (11,0), Watch (4,0), Mac (10, 13, onlyOn64: true)] [Export ("animationPlayerForKey:")] SCNAnimationPlayer GetAnimationPlayer (NSString key); +#endif #if XAMCORE_2_0 [Abstract] @@ -215,7 +219,7 @@ namespace XamCore.SceneKit { [Abstract] #endif [return: NullAllowed] - [iOS (11,0), TV (11,0), Watch (4,0), Mac (10,13)] + [iOS (11,0), TV (11,0), Watch (4,0), Mac (10, 13, onlyOn64: true)] [Export ("removeAnimationForKey:blendOutDuration:")] void RemoveAnimationUsingBlendOutDuration (NSString key, nfloat blendOutDuration); @@ -886,7 +890,7 @@ namespace XamCore.SceneKit { [Export ("edgeCreasesSource", ArgumentSemantic.Retain)] SCNGeometrySource EdgeCreasesSource { get; set; } - [Watch (4,0), TV (11,0), Mac (10,13), iOS (11,0)] + [Watch (4,0), TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] [Export ("wantsAdaptiveSubdivision")] bool WantsAdaptiveSubdivision { get; set; } @@ -897,7 +901,7 @@ namespace XamCore.SceneKit { [Export ("geometryWithMDLMesh:")] SCNGeometry FromMesh (MDLMesh mesh); - [NoWatch, NoTV, Mac (10,13), iOS (11,0)] + [NoWatch, NoTV, Mac (10, 13, onlyOn64: true), iOS (11,0)] [NullAllowed, Export ("tessellator", ArgumentSemantic.Retain)] SCNGeometryTessellator Tessellator { get; set; } #endif @@ -1013,19 +1017,19 @@ namespace XamCore.SceneKit { [Export ("geometryElementWithData:primitiveType:primitiveCount:bytesPerIndex:")] SCNGeometryElement FromData ([NullAllowed] NSData data, SCNGeometryPrimitiveType primitiveType, nint primitiveCount, nint bytesPerIndex); - [Watch (4,0), TV (11,0), Mac (10,13), iOS (11,0)] + [Watch (4,0), TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] [Export ("primitiveRange", ArgumentSemantic.Assign)] NSRange PrimitiveRange { get; set; } - [Watch (4,0), TV (11,0), Mac (10,13), iOS (11,0)] + [Watch (4,0), TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] [Export ("pointSize")] nfloat PointSize { get; set; } - [Watch (4,0), TV (11,0), Mac (10,13), iOS (11,0)] + [Watch (4,0), TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] [Export ("minimumPointScreenSpaceRadius")] nfloat MinimumPointScreenSpaceRadius { get; set; } - [Watch (4,0), TV (11,0), Mac (10,13), iOS (11,0)] + [Watch (4,0), TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] [Export ("maximumPointScreenSpaceRadius")] nfloat MaximumPointScreenSpaceRadius { get; set; } @@ -1282,31 +1286,31 @@ namespace XamCore.SceneKit { [Export ("categoryBitMask")] nuint CategoryBitMask { get; set; } - [Watch (4,0), TV (11,0), Mac (10,13), iOS (11,0)] + [Watch (4,0), TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] [Export ("automaticallyAdjustsShadowProjection")] bool AutomaticallyAdjustsShadowProjection { get; set; } - [Watch (4,0), TV (11,0), Mac (10,13), iOS (11,0)] + [Watch (4,0), TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] [Export ("maximumShadowDistance")] nfloat MaximumShadowDistance { get; set; } - [Watch (4,0), TV (11,0), Mac (10,13), iOS (11,0)] + [Watch (4,0), TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] [Export ("forcesBackFaceCasters")] bool ForcesBackFaceCasters { get; set; } - [Watch (4,0), TV (11,0), Mac (10,13), iOS (11,0)] + [Watch (4,0), TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] [Export ("sampleDistributedShadowMaps")] bool SampleDistributedShadowMaps { get; set; } - [Watch (4,0), TV (11,0), Mac (10,13), iOS (11,0)] + [Watch (4,0), TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] [Export ("shadowCascadeCount")] nuint ShadowCascadeCount { get; set; } - [Watch (4,0), TV (11,0), Mac (10,13), iOS (11,0)] + [Watch (4,0), TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] [Export ("shadowCascadeSplittingFactor")] nfloat ShadowCascadeSplittingFactor { get; set; } - [Watch (4,0), TV (11,0), Mac (10,13), iOS (11,0)] + [Watch (4,0), TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] [Export ("sphericalHarmonicsCoefficients", ArgumentSemantic.Copy)] NSData SphericalHarmonicsCoefficients { get; } @@ -1574,7 +1578,7 @@ namespace XamCore.SceneKit { [Export ("maxAnisotropy")] nfloat MaxAnisotropy { get; set; } - [Watch (4,0), TV (11,0), Mac (10,13), iOS (11,0)] + [Watch (4,0), TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] [Export ("textureComponents", ArgumentSemantic.Assign)] SCNColorMask TextureComponents { get; set; } @@ -1653,7 +1657,7 @@ namespace XamCore.SceneKit { [Export ("position")] SCNVector3 Position { get; set; } - [Watch (4,0), TV (11,0), Mac (10,13), iOS (11,0)] + [Watch (4,0), TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] [Export ("worldPosition", ArgumentSemantic.Assign)] SCNVector3 WorldPosition { get; set; } @@ -1667,7 +1671,7 @@ namespace XamCore.SceneKit { SCNMatrix4 Pivot { get; set; } [Export ("worldTransform")] - SCNMatrix4 WorldTransform { get; [Watch (4,0), TV (11,0), Mac (10,13), iOS (11,0)] set; } + SCNMatrix4 WorldTransform { get; [Watch (4,0), TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] set; } [Export ("hidden")] bool Hidden { [Bind ("isHidden")] get; set; } @@ -1749,7 +1753,7 @@ namespace XamCore.SceneKit { [Export ("morpher", ArgumentSemantic.Retain)] SCNMorpher Morpher { get; set; } - [Watch (4,0), TV (11,0), Mac (10,13), iOS (11,0)] + [Watch (4,0), TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] [Export ("worldOrientation", ArgumentSemantic.Assign)] SCNQuaternion WorldOrientation { get; set; } @@ -1778,11 +1782,11 @@ namespace XamCore.SceneKit { [Export ("convertPosition:fromNode:")] SCNVector3 ConvertPositionFromNode (SCNVector3 position, [NullAllowed] SCNNode node); - [Watch (4,0), TV (11,0), Mac (10,13), iOS (11,0)] + [Watch (4,0), TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] [Export ("convertVector:toNode:")] SCNVector3 ConvertVectorToNode (SCNVector3 vector, [NullAllowed] SCNNode node); - [Watch (4,0), TV (11,0), Mac (10,13), iOS (11,0)] + [Watch (4,0), TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] [Export ("convertVector:fromNode:")] SCNVector3 ConvertVectorFromNode (SCNVector3 vector, [NullAllowed] SCNNode node); @@ -1839,7 +1843,7 @@ namespace XamCore.SceneKit { [Export ("enumerateHierarchyUsingBlock:")] void EnumerateHierarchy (SCNNodeHandler handler); - [Watch (4,0), TV (11,0), Mac (10,13), iOS (11,0)] + [Watch (4,0), TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] [Export ("focusBehavior", ArgumentSemantic.Assign)] SCNNodeFocusBehavior FocusBehavior { get; set; } @@ -1893,50 +1897,50 @@ namespace XamCore.SceneKit { // From SCNNode (Transforms) Category - [Watch (4,0), TV (11,0), Mac (10,13), iOS (11,0)] + [Watch (4,0), TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] [Static] [Export ("localUp")] SCNVector3 LocalUp { get; } - [Watch (4,0), TV (11,0), Mac (10,13), iOS (11,0)] + [Watch (4,0), TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] [Static] [Export ("localRight")] SCNVector3 LocalRight { get; } - [Watch (4,0), TV (11,0), Mac (10,13), iOS (11,0)] + [Watch (4,0), TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] [Static] [Export ("localFront")] SCNVector3 LocalFront { get; } - [Watch (4,0), TV (11,0), Mac (10,13), iOS (11,0)] + [Watch (4,0), TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] [Export ("worldUp")] SCNVector3 WorldUp { get; } - [Watch (4,0), TV (11,0), Mac (10,13), iOS (11,0)] + [Watch (4,0), TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] [Export ("worldRight")] SCNVector3 WorldRight { get; } - [Watch (4,0), TV (11,0), Mac (10,13), iOS (11,0)] + [Watch (4,0), TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] [Export ("worldFront")] SCNVector3 WorldFront { get; } - [Watch (4,0), TV (11,0), Mac (10,13), iOS (11,0)] + [Watch (4,0), TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] [Export ("lookAt:")] void Look (SCNVector3 worldTarget); - [Watch (4,0), TV (11,0), Mac (10,13), iOS (11,0)] + [Watch (4,0), TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] [Export ("lookAt:up:localFront:")] void Look (SCNVector3 worldTarget, SCNVector3 worldUp, SCNVector3 localFront); - [Watch (4,0), TV (11,0), Mac (10,13), iOS (11,0)] + [Watch (4,0), TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] [Export ("localTranslateBy:")] void LocalTranslate (SCNVector3 translation); - [Watch (4,0), TV (11,0), Mac (10,13), iOS (11,0)] + [Watch (4,0), TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] [Export ("localRotateBy:")] void LocalRotate (SCNQuaternion rotation); - [Watch (4,0), TV (11,0), Mac (10,13), iOS (11,0)] + [Watch (4,0), TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] [Export ("rotateBy:aroundTarget:")] void Rotate (SCNQuaternion worldRotation, SCNVector3 worldTarget); @@ -2009,7 +2013,7 @@ namespace XamCore.SceneKit { * End of bindings-generator.cs. */ - //[Watch (4,0), TV (11,0), Mac (10,13), iOS (11,0)] + //[Watch (4,0), TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] //[Export ("simdTransform", ArgumentSemantic.Assign)] //NMatrix4 SimdTransform { // [MarshalDirective (NativePrefix = "xamarin_simd__", Library = "__Internal")] @@ -2018,7 +2022,7 @@ namespace XamCore.SceneKit { // set; //} - //[Watch (4,0), TV (11,0), Mac (10,13), iOS (11,0)] + //[Watch (4,0), TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] //[Export ("simdPosition", ArgumentSemantic.Assign)] //NVector3 SimdPosition { // [MarshalDirective (NativePrefix = "xamarin_simd__", Library = "__Internal")] @@ -2027,7 +2031,7 @@ namespace XamCore.SceneKit { // set; //} - //[Watch (4,0), TV (11,0), Mac (10,13), iOS (11,0)] + //[Watch (4,0), TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] //[Export ("simdRotation", ArgumentSemantic.Assign)] //Vector4 SimdRotation { // [MarshalDirective (NativePrefix = "xamarin_simd__", Library = "__Internal")] @@ -2036,7 +2040,7 @@ namespace XamCore.SceneKit { // set; //} - //[Watch (4,0), TV (11,0), Mac (10,13), iOS (11,0)] + //[Watch (4,0), TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] //[Export ("simdOrientation", ArgumentSemantic.Assign)] //Quaternion SimdOrientation { // [MarshalDirective (NativePrefix = "xamarin_simd__", Library = "__Internal")] @@ -2045,7 +2049,7 @@ namespace XamCore.SceneKit { // set; //} - //[Watch (4,0), TV (11,0), Mac (10,13), iOS (11,0)] + //[Watch (4,0), TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] //[Export ("simdEulerAngles", ArgumentSemantic.Assign)] //NVector3 SimdEulerAngles { // [MarshalDirective (NativePrefix = "xamarin_simd__", Library = "__Internal")] @@ -2054,7 +2058,7 @@ namespace XamCore.SceneKit { // set; //} - //[Watch (4,0), TV (11,0), Mac (10,13), iOS (11,0)] + //[Watch (4,0), TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] //[Export ("simdScale", ArgumentSemantic.Assign)] //NVector3 SimdScale { // [MarshalDirective (NativePrefix = "xamarin_simd__", Library = "__Internal")] @@ -2063,7 +2067,7 @@ namespace XamCore.SceneKit { // set; //} - //[Watch (4,0), TV (11,0), Mac (10,13), iOS (11,0)] + //[Watch (4,0), TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] //[Export ("simdPivot", ArgumentSemantic.Assign)] //NMatrix4 SimdPivot { // [MarshalDirective (NativePrefix = "xamarin_simd__", Library = "__Internal")] @@ -2072,7 +2076,7 @@ namespace XamCore.SceneKit { // set; //} - //[Watch (4,0), TV (11,0), Mac (10,13), iOS (11,0)] + //[Watch (4,0), TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] //[Export ("simdWorldPosition", ArgumentSemantic.Assign)] //NVector3 SimdWorldPosition { // [MarshalDirective (NativePrefix = "xamarin_simd__", Library = "__Internal")] @@ -2081,7 +2085,7 @@ namespace XamCore.SceneKit { // set; //} - //[Watch (4,0), TV (11,0), Mac (10,13), iOS (11,0)] + //[Watch (4,0), TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] //[Export ("simdWorldOrientation", ArgumentSemantic.Assign)] //Quaternion SimdWorldOrientation { // [MarshalDirective (NativePrefix = "xamarin_simd__", Library = "__Internal")] @@ -2090,7 +2094,7 @@ namespace XamCore.SceneKit { // set; //} - //[Watch (4,0), TV (11,0), Mac (10,13), iOS (11,0)] + //[Watch (4,0), TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] //[Export ("simdWorldTransform", ArgumentSemantic.Assign)] //NMatrix4 SimdWorldTransform { // [MarshalDirective (NativePrefix = "xamarin_simd__", Library = "__Internal")] @@ -2099,36 +2103,36 @@ namespace XamCore.SceneKit { // set; //} - //[Watch (4,0), TV (11,0), Mac (10,13), iOS (11,0)] + //[Watch (4,0), TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] //[Export ("simdConvertPosition:toNode:")] //[MarshalDirective (NativePrefix = "xamarin_simd__", Library = "__Internal")] //NVector3 ConvertPositionToNode (NVector3 position, [NullAllowed] SCNNode node); - //[Watch (4,0), TV (11,0), Mac (10,13), iOS (11,0)] + //[Watch (4,0), TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] //[Export ("simdConvertPosition:fromNode:")] //[MarshalDirective (NativePrefix = "xamarin_simd__", Library = "__Internal")] //NVector3 ConvertPositionFromNode (NVector3 position, [NullAllowed] SCNNode node); - //[Watch (4,0), TV (11,0), Mac (10,13), iOS (11,0)] + //[Watch (4,0), TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] //[Export ("simdConvertVector:toNode:")] //[MarshalDirective (NativePrefix = "xamarin_simd__", Library = "__Internal")] //NVector3 ConvertVectorToNode (NVector3 vector, [NullAllowed] SCNNode node); - //[Watch (4,0), TV (11,0), Mac (10,13), iOS (11,0)] + //[Watch (4,0), TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] //[Export ("simdConvertVector:fromNode:")] //[MarshalDirective (NativePrefix = "xamarin_simd__", Library = "__Internal")] //NVector3 ConvertVectorFromNode (NVector3 vector, [NullAllowed] SCNNode node); - //[Watch (4,0), TV (11,0), Mac (10,13), iOS (11,0)] + //[Watch (4,0), TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] //[Export ("simdConvertTransform:toNode:")] //[MarshalDirective (NativePrefix = "xamarin_simd__", Library = "__Internal")] //NMatrix4 ConvertTransformToNode (NMatrix4 transform, [NullAllowed] SCNNode node); - //[Watch (4,0), TV (11,0), Mac (10,13), iOS (11,0)] + //[Watch (4,0), TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] //[Export ("simdConvertTransform:fromNode:")] //NMatrix4 ConvertTransformFromNode (NMatrix4 transform, [NullAllowed] SCNNode node); - //[Watch (4,0), TV (11,0), Mac (10,13), iOS (11,0)] + //[Watch (4,0), TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] //[Static] //[Export ("simdLocalUp")] //NVector3 SimdLocalUp { @@ -2136,7 +2140,7 @@ namespace XamCore.SceneKit { // get; //} - //[Watch (4,0), TV (11,0), Mac (10,13), iOS (11,0)] + //[Watch (4,0), TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] //[Static] //[Export ("simdLocalRight")] //NVector3 SimdLocalRight { @@ -2144,7 +2148,7 @@ namespace XamCore.SceneKit { // get; //} - //[Watch (4,0), TV (11,0), Mac (10,13), iOS (11,0)] + //[Watch (4,0), TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] //[Static] //[Export ("simdLocalFront")] //NVector3 SimdLocalFront { @@ -2152,48 +2156,48 @@ namespace XamCore.SceneKit { // get; //} - //[Watch (4,0), TV (11,0), Mac (10,13), iOS (11,0)] + //[Watch (4,0), TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] //[Export ("simdWorldUp")] //NVector3 SimdWorldUp { // [MarshalDirective (NativePrefix = "xamarin_simd__", Library = "__Internal")] // get; //} - //[Watch (4,0), TV (11,0), Mac (10,13), iOS (11,0)] + //[Watch (4,0), TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] //[Export ("simdWorldRight")] //NVector3 SimdWorldRight { // [MarshalDirective (NativePrefix = "xamarin_simd__", Library = "__Internal")] // get; //} - //[Watch (4,0), TV (11,0), Mac (10,13), iOS (11,0)] + //[Watch (4,0), TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] //[Export ("simdWorldFront")] //NVector3 SimdWorldFront { // [MarshalDirective (NativePrefix = "xamarin_simd__", Library = "__Internal")] // get; //} - //[Watch (4,0), TV (11,0), Mac (10,13), iOS (11,0)] + //[Watch (4,0), TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] //[Export ("simdLookAt:")] //[MarshalDirective (NativePrefix = "xamarin_simd__", Library = "__Internal")] //void Look (NVector3 worldTarget); - //[Watch (4,0), TV (11,0), Mac (10,13), iOS (11,0)] + //[Watch (4,0), TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] //[Export ("simdLookAt:up:localFront:")] //[MarshalDirective (NativePrefix = "xamarin_simd__", Library = "__Internal")] //void Look (NVector3 worldTarget, NVector3 worldUp, NVector3 localFront); - //[Watch (4,0), TV (11,0), Mac (10,13), iOS (11,0)] + //[Watch (4,0), TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] //[Export ("simdLocalTranslateBy:")] //[MarshalDirective (NativePrefix = "xamarin_simd__", Library = "__Internal")] //void LocalTranslate (NVector3 translation); - //[Watch (4,0), TV (11,0), Mac (10,13), iOS (11,0)] + //[Watch (4,0), TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] //[Export ("simdLocalRotateBy:")] //[MarshalDirective (NativePrefix = "xamarin_simd__", Library = "__Internal")] //void LocalRotate (Quaternion rotation); - //[Watch (4,0), TV (11,0), Mac (10,13), iOS (11,0)] + //[Watch (4,0), TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] //[Export ("simdRotateBy:aroundTarget:")] //[MarshalDirective (NativePrefix = "xamarin_simd__", Library = "__Internal")] //void Rotate (Quaternion worldRotation, NVector3 worldTarget); @@ -3349,7 +3353,7 @@ namespace XamCore.SceneKit { SCNCameraController DefaultCameraController { get; } #endif - [Watch (4,0), TV (11,0), Mac (10,13), iOS (11,0)] + [Watch (4,0), TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] [Export ("rendersContinuously")] bool RendersContinuously { get; set; } } @@ -3408,25 +3412,25 @@ namespace XamCore.SceneKit { [Export ("calculationMode")] SCNMorpherCalculationMode CalculationMode { get; set; } - [Watch (4,0), TV (11,0), Mac (10,13), iOS (11,0)] + [Watch (4,0), TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] [Export ("weights", ArgumentSemantic.Retain)] NSNumber [] Weights { get; set; } - [Watch (4,0), TV (11,0), Mac (10,13), iOS (11,0)] + [Watch (4,0), TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] [Export ("unifiesNormals")] bool UnifiesNormals { get; set; } [Export ("setWeight:forTargetAtIndex:")] void SetWeight (nfloat weight, nuint targetIndex); - [Watch (4,0), TV (11,0), Mac (10,13), iOS (11,0)] + [Watch (4,0), TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] [Export ("setWeight:forTargetNamed:")] void SetWeight (nfloat weight, string targetName); [Export ("weightForTargetAtIndex:")] nfloat GetWeight (nuint targetIndex); - [Watch (4,0), TV (11,0), Mac (10,13), iOS (11,0)] + [Watch (4,0), TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] [Export ("weightForTargetNamed:")] nfloat GetWeight (string targetName); } @@ -4241,7 +4245,7 @@ namespace XamCore.SceneKit { [Export ("penetrationDistance")] nfloat PenetrationDistance { get; } - [Watch (4,0), TV (11,0), Mac (10,13), iOS (11,0)] + [Watch (4,0), TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] [Export ("sweepTestFraction")] nfloat SweepTestFraction { get; } } @@ -4665,15 +4669,15 @@ namespace XamCore.SceneKit { [Export ("removeAllModifiers")] void RemoveAllModifiers (); - [Watch (4,0), TV (11,0), Mac (10,13), iOS (11,0)] + [Watch (4,0), TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] [Export ("orientationDirection", ArgumentSemantic.Assign)] SCNVector3 OrientationDirection { get; set; } - [Watch (4,0), TV (11,0), Mac (10,13), iOS (11,0)] + [Watch (4,0), TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] [Export ("particleIntensity")] nfloat ParticleIntensity { get; set; } - [Watch (4,0), TV (11,0), Mac (10,13), iOS (11,0)] + [Watch (4,0), TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] [Export ("particleIntensityVariation")] nfloat ParticleIntensityVariation { get; set; } } @@ -4958,7 +4962,7 @@ namespace XamCore.SceneKit { void StopWithBlendOutDuration (double seconds); } - [Watch (4,0), TV (11,0), Mac (10,13), iOS (11,0)] + [Watch (4,0), TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] [BaseType (typeof (SCNConstraint))] interface SCNDistanceConstraint { @@ -4976,7 +4980,7 @@ namespace XamCore.SceneKit { nfloat MaximumDistance { get; set; } } - [Watch (4,0), TV (11,0), Mac (10,13), iOS (11,0)] + [Watch (4,0), TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] [BaseType (typeof (SCNConstraint))] interface SCNReplicatorConstraint { @@ -5006,7 +5010,7 @@ namespace XamCore.SceneKit { SCNVector3 ScaleOffset { get; set; } } - [Watch (4,0), TV (11,0), Mac (10,13), iOS (11,0)] + [Watch (4,0), TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] [BaseType (typeof (SCNConstraint))] interface SCNAccelerationConstraint { @@ -5027,7 +5031,7 @@ namespace XamCore.SceneKit { nfloat Damping { get; set; } } - [Watch (4,0), TV (11,0), Mac (10,13), iOS (11,0)] + [Watch (4,0), TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] [BaseType (typeof (SCNConstraint))] interface SCNSliderConstraint { @@ -5047,7 +5051,7 @@ namespace XamCore.SceneKit { interface ISCNAvoidOccluderConstraintDelegate { } - [Watch (4,0), TV (11,0), Mac (10,13), iOS (11,0)] + [Watch (4,0), TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] [Protocol, Model] [BaseType (typeof (NSObject))] interface SCNAvoidOccluderConstraintDelegate { @@ -5059,7 +5063,7 @@ namespace XamCore.SceneKit { void DidAvoidOccluder (SCNAvoidOccluderConstraint constraint, SCNNode occluder, SCNNode node); } - [Watch (4,0), TV (11,0), Mac (10,13), iOS (11,0)] + [Watch (4,0), TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] [BaseType (typeof (SCNConstraint))] interface SCNAvoidOccluderConstraint { @@ -5080,7 +5084,7 @@ namespace XamCore.SceneKit { nfloat Bias { get; set; } } - [Watch (4,0), TV (11,0), Mac (10,13), iOS (11,0)] + [Watch (4,0), TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] [BaseType (typeof(SCNPhysicsBehavior))] interface SCNPhysicsConeTwistJoint { From 48274ee882f055b38411bff8de293e3a9450cddf Mon Sep 17 00:00:00 2001 From: Sebastien Pouliot Date: Mon, 6 Nov 2017 13:21:30 -0500 Subject: [PATCH 092/145] [apidiff] Update API references to XI 11.3 (xcode9 support) (#2959) --- .../xi/Xamarin.TVOS/Xamarin.TVOS.xml | 11633 ++++++++++- .../xi/Xamarin.WatchOS/Xamarin.WatchOS.xml | 6285 +++++- .../references/xi/Xamarin.iOS/Xamarin.iOS.xml | 16408 +++++++++++++++- 3 files changed, 34184 insertions(+), 142 deletions(-) diff --git a/tools/apidiff/references/xi/Xamarin.TVOS/Xamarin.TVOS.xml b/tools/apidiff/references/xi/Xamarin.TVOS/Xamarin.TVOS.xml index a3a3a1ba22..1e0102c82e 100755 --- a/tools/apidiff/references/xi/Xamarin.TVOS/Xamarin.TVOS.xml +++ b/tools/apidiff/references/xi/Xamarin.TVOS/Xamarin.TVOS.xml @@ -16,7 +16,7 @@
- + @@ -9619,6 +9619,72 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -26065,6 +26131,23 @@ + + + + + + + + + + + + + + + + + @@ -37722,6 +37805,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -45381,6 +45502,408 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -45703,6 +46226,251 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -50739,6 +51507,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + @@ -51919,6 +52711,184 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -80532,6 +81502,7 @@ + @@ -81328,6 +82299,23 @@ + + + + + + + + + + + + + + + + + @@ -81494,6 +82482,7 @@ + @@ -81661,6 +82650,7 @@ + @@ -85202,6 +86192,7 @@ + @@ -89253,6 +90244,7 @@ + @@ -90658,6 +91650,7 @@ + @@ -92118,6 +93111,7 @@ + @@ -93937,6 +94931,7 @@ + @@ -95217,6 +96212,7 @@ + @@ -95227,6 +96223,7 @@ + @@ -95234,6 +96231,7 @@ + @@ -95244,6 +96242,7 @@ + @@ -95251,6 +96250,7 @@ + @@ -95261,6 +96261,7 @@ + @@ -95268,6 +96269,7 @@ + @@ -95278,6 +96280,7 @@ + @@ -96830,11 +97833,7 @@ - - - - - + @@ -113597,7 +114596,7 @@ - + @@ -116448,7 +117447,7 @@ - + @@ -117135,6 +118134,18 @@ + + + + + + + + + + + + @@ -117380,6 +118391,12 @@ + + + + + + @@ -117391,6 +118408,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -117412,6 +118449,13 @@ + + + + + + + @@ -117451,6 +118495,10 @@ + + + + @@ -117661,6 +118709,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -118140,6 +119208,15 @@ + + + + + + + + + @@ -118576,11 +119653,28 @@ + + + + + + + + + + + + + + + + + @@ -120248,6 +121342,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -120574,12 +121689,30 @@ + + + + + + + + + + + + + + + + + + @@ -120591,6 +121724,17 @@ + + + + + + + + + + + @@ -120608,6 +121752,24 @@ + + + + + + + + + + + + + + + + + + @@ -120940,6 +122102,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -156418,6 +157652,115 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -156789,7 +158132,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -156920,6 +158296,86 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -156956,6 +158412,18 @@ + + + + + + + + + + + + @@ -156980,6 +158448,18 @@ + + + + + + + + + + + + @@ -156992,6 +158472,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -157002,6 +158518,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -157841,6 +159393,19 @@ + + + + + + + + + + + + + @@ -157861,6 +159426,19 @@ + + + + + + + + + + + + + @@ -157893,7 +159471,7 @@ - + @@ -161315,7 +162893,11 @@ - + + + + + @@ -161499,15 +163081,22 @@ + + + + + + + @@ -161523,15 +163112,21 @@ + + + + + + @@ -161541,10 +163136,13 @@ + + + @@ -161762,6 +163360,24 @@ + + + + + + + + + + + + + + + + + + @@ -161827,6 +163443,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -163129,6 +164765,24 @@ + + + + + + + + + + + + + + + + + + @@ -163203,6 +164857,8 @@ + + @@ -164199,9 +165855,9 @@ - + @@ -164215,7 +165871,7 @@ - + @@ -164225,9 +165881,9 @@ - + @@ -164241,7 +165897,7 @@ - + @@ -164251,9 +165907,9 @@ - + @@ -164267,9 +165923,9 @@ - + @@ -164283,7 +165939,7 @@ - + @@ -164291,6 +165947,24 @@ + + + + + + + + + + + + + + + + + + @@ -164412,6 +166086,24 @@ + + + + + + + + + + + + + + + + + + @@ -164514,10 +166206,10 @@ - + @@ -164530,9 +166222,27 @@ + + + + + + + + + + + + + + + + + + - + @@ -164542,7 +166252,7 @@ - + @@ -164550,12 +166260,30 @@ + + + + + + + + + + + + + + + + + + - + @@ -164570,7 +166298,7 @@ - + @@ -164578,6 +166306,24 @@ + + + + + + + + + + + + + + + + + + @@ -164590,13 +166336,15 @@ - + + + @@ -164604,9 +166352,9 @@ - + @@ -164620,7 +166368,7 @@ - + @@ -164630,7 +166378,7 @@ - + @@ -164640,13 +166388,15 @@ - + + + @@ -164654,7 +166404,7 @@ - + @@ -164663,6 +166413,265 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -164717,6 +166726,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -164732,6 +166779,12 @@ + + + + + + @@ -164761,6 +166814,19 @@ + + + + + + + + + + + + + @@ -165062,6 +167128,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + @@ -165139,6 +167230,15 @@ + + + + + + + + + @@ -165720,11 +167820,15 @@ + + + + @@ -165735,6 +167839,8 @@ + + @@ -165743,6 +167849,10 @@ + + + + @@ -272153,6 +274263,23 @@ + + + + + + + + + + + + + + + + + @@ -272240,6 +274367,23 @@ + + + + + + + + + + + + + + + + + @@ -279026,6 +281170,175 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -279441,6 +281754,23 @@ + + + + + + + + + + + + + + + + + @@ -281003,6 +283333,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -315767,11 +318136,13 @@ + + @@ -316698,6 +319069,29 @@ + + + + + + + + + + + + + + + + + + + + + + + @@ -351414,6 +353808,77 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -351430,6 +353895,23 @@ + + + + + + + + + + + + + + + + + @@ -352237,6 +354719,1779 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -352511,6 +356766,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -352701,6 +356996,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -352730,6 +357065,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -352927,6 +357302,22 @@ + + + + + + + + + + + + + + + + @@ -352953,6 +357344,20 @@ + + + + + + + + + + + + + + @@ -353045,6 +357450,139 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -354209,6 +358747,24 @@ + + + + + + + + + + + + + + + + + + @@ -355096,6 +359652,22 @@ + + + + + + + + + + + + + + + + @@ -355120,6 +359692,22 @@ + + + + + + + + + + + + + + + + @@ -355770,6 +360358,7 @@ + @@ -355836,6 +360425,22 @@ + + + + + + + + + + + + + + + + @@ -356366,6 +360971,152 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -356832,6 +361583,24 @@ + + + + + + + + + + + + + + + + + + @@ -357161,6 +361930,22 @@ + + + + + + + + + + + + + + + + @@ -357333,10 +362118,28 @@ + + + + + + + + + + + + + + + + + + @@ -359067,6 +363870,295 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -359231,6 +364323,22 @@ + + + + + + + + + + + + + + + + @@ -359797,6 +364905,149 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -360044,6 +365295,127 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -360128,6 +365500,29 @@ + + + + + + + + + + + + + + + + + + + + + + + @@ -360402,6 +365797,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -361966,6 +367399,22 @@ + + + + + + + + + + + + + + + + @@ -362043,6 +367492,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -362056,6 +367540,7 @@ + @@ -363309,6 +368794,1640 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -364666,6 +371785,7 @@ + @@ -368368,7 +375488,7 @@ - + @@ -368377,7 +375497,7 @@ - + @@ -389107,6 +396227,22 @@ + + + + + + + + + + + + + + + + @@ -390281,6 +397417,17 @@ + + + + + + + + + + + @@ -390311,6 +397458,18 @@ + + + + + + + + + + + + @@ -390368,6 +397527,17 @@ + + + + + + + + + + + @@ -390413,6 +397583,12 @@ + + + + + + @@ -390471,6 +397647,14 @@ + + + + + + + + @@ -390513,6 +397697,14 @@ + + + + + + + + @@ -390530,6 +397722,14 @@ + + + + + + + + @@ -390554,6 +397754,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -392176,6 +399417,231 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -393192,6 +400658,24 @@ + + + + + + + + + + + + + + + + + + @@ -393199,6 +400683,9 @@ + + + @@ -393217,6 +400704,23 @@ + + + + + + + + + + + + + + + + + @@ -393245,6 +400749,10 @@ + + + + @@ -393283,6 +400791,10 @@ + + + + @@ -393291,6 +400803,24 @@ + + + + + + + + + + + + + + + + + + @@ -393298,6 +400828,10 @@ + + + + @@ -393312,6 +400846,11 @@ + + + + + @@ -393329,8 +400868,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -394487,6 +402075,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -394533,6 +402142,9 @@ + + + @@ -394557,6 +402169,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -394588,6 +402220,10 @@ + + + + @@ -394646,6 +402282,10 @@ + + + + @@ -394657,6 +402297,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -394664,6 +402325,10 @@ + + + + @@ -394681,6 +402346,11 @@ + + + + + @@ -395273,6 +402943,375 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -395485,7 +403524,14 @@ - + + + + + + + + @@ -398008,6 +406054,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -398068,6 +406135,9 @@ + + + @@ -398092,6 +406162,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -398123,6 +406213,10 @@ + + + + @@ -398170,6 +406264,10 @@ + + + + @@ -398181,6 +406279,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -398188,6 +406307,10 @@ + + + + @@ -398205,6 +406328,11 @@ + + + + + @@ -399265,6 +407393,7 @@ + @@ -399750,6 +407879,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -399783,6 +407933,9 @@ + + + @@ -399807,6 +407960,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -399838,6 +408011,10 @@ + + + + @@ -399885,6 +408062,10 @@ + + + + @@ -399896,6 +408077,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -399903,6 +408105,10 @@ + + + + @@ -399920,6 +408126,11 @@ + + + + + @@ -400196,19 +408407,254 @@ - + + + + + + + + - - - + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -401085,6 +409531,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -401139,6 +409626,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -401214,6 +409722,9 @@ + + + @@ -401238,6 +409749,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -401402,6 +409933,10 @@ + + + + @@ -401449,6 +409984,10 @@ + + + + @@ -401460,6 +409999,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -401494,6 +410054,10 @@ + + + + @@ -401529,6 +410093,11 @@ + + + + + @@ -401669,6 +410238,129 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -401686,6 +410378,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -403322,6 +412057,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -403408,6 +412184,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -403536,6 +412353,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -403599,6 +412457,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -403631,6 +412530,88 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -403771,6 +412752,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -404056,6 +413063,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -404116,6 +413144,9 @@ + + + @@ -404140,6 +413171,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -404171,6 +413222,10 @@ + + + + @@ -404218,6 +413273,10 @@ + + + + @@ -404229,6 +413288,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -404236,6 +413316,10 @@ + + + + @@ -404253,6 +413337,11 @@ + + + + + @@ -405640,6 +414729,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -405700,6 +414810,9 @@ + + + @@ -405724,6 +414837,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -405801,6 +414934,10 @@ + + + + @@ -405848,6 +414985,10 @@ + + + + @@ -405859,6 +415000,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -405866,6 +415028,10 @@ + + + + @@ -405883,6 +415049,11 @@ + + + + + @@ -406364,6 +415535,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -406442,6 +415656,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -406476,6 +415711,9 @@ + + + @@ -406500,6 +415738,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -406531,6 +415789,10 @@ + + + + @@ -406578,6 +415840,10 @@ + + + + @@ -406589,6 +415855,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -406596,6 +415883,10 @@ + + + + @@ -406613,6 +415904,11 @@ + + + + + @@ -407336,6 +416632,90 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -407356,6 +416736,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -407376,6 +416777,9 @@ + + + @@ -407400,6 +416804,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -407444,6 +416885,10 @@ + + + + @@ -407491,6 +416936,10 @@ + + + + @@ -407502,6 +416951,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -407509,6 +416979,10 @@ + + + + @@ -407526,6 +417000,11 @@ + + + + + @@ -407539,6 +417018,24 @@ + + + + + + + + + + + + + + + + + + @@ -407964,6 +417461,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -408055,6 +417595,81 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -408680,6 +418295,142 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -408695,6 +418446,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -408728,6 +418520,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -408850,6 +418663,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -409056,6 +418905,9 @@ + + + @@ -409085,6 +418937,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -409230,6 +419102,76 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -409237,6 +419179,10 @@ + + + + @@ -409349,6 +419295,10 @@ + + + + @@ -409366,6 +419316,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -409427,6 +419398,10 @@ + + + + @@ -409442,6 +419417,24 @@ + + + + + + + + + + + + + + + + + + @@ -409556,6 +419549,11 @@ + + + + + @@ -411506,6 +421504,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -411945,6 +421986,88 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -412478,6 +422601,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -412555,6 +422699,9 @@ + + + @@ -412579,6 +422726,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -412629,6 +422796,10 @@ + + + + @@ -412687,6 +422858,10 @@ + + + + @@ -412698,6 +422873,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -412729,6 +422925,10 @@ + + + + @@ -412746,6 +422946,11 @@ + + + + + @@ -413938,6 +424143,315 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -414094,6 +424608,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + @@ -420396,6 +430935,328 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -420412,6 +431273,7 @@ + @@ -424352,6 +435214,204 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -424652,6 +435712,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -424711,6 +435792,9 @@ + + + @@ -424735,6 +435819,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -424785,6 +435889,10 @@ + + + + @@ -424832,6 +435940,10 @@ + + + + @@ -424843,6 +435955,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -424850,6 +435983,10 @@ + + + + @@ -424867,6 +436004,11 @@ + + + + + @@ -426217,10 +437359,31 @@ - - + + + + + + + + + + + + + + + + - + + + + + + + + @@ -428183,6 +439346,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -445987,6 +457191,7 @@ + @@ -501145,6 +512350,16 @@ + + + + + + + + + + @@ -501158,6 +512373,16 @@ + + + + + + + + + + @@ -514818,6 +526043,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -568219,6 +579479,23 @@ + + + + + + + + + + + + + + + + + @@ -568243,6 +579520,23 @@ + + + + + + + + + + + + + + + + + @@ -568267,6 +579561,23 @@ + + + + + + + + + + + + + + + + + @@ -568342,6 +579653,23 @@ + + + + + + + + + + + + + + + + + @@ -568614,6 +579942,24 @@ + + + + + + + + + + + + + + + + + + @@ -568634,6 +579980,24 @@ + + + + + + + + + + + + + + + + + + @@ -568654,6 +580018,24 @@ + + + + + + + + + + + + + + + + + + @@ -568718,6 +580100,24 @@ + + + + + + + + + + + + + + + + + + @@ -569100,7 +580500,7 @@ - + @@ -569398,6 +580798,23 @@ + + + + + + + + + + + + + + + + + @@ -569737,6 +581154,24 @@ + + + + + + + + + + + + + + + + + + @@ -569911,6 +581346,16 @@ + + + + + + + + + + @@ -570676,6 +582121,20 @@ + + + + + + + + + + + + + + @@ -571138,6 +582597,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -571671,6 +583166,56 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -571843,6 +583388,14 @@ + + + + + + + + diff --git a/tools/apidiff/references/xi/Xamarin.WatchOS/Xamarin.WatchOS.xml b/tools/apidiff/references/xi/Xamarin.WatchOS/Xamarin.WatchOS.xml index 56aaad023b..dc68e8bace 100755 --- a/tools/apidiff/references/xi/Xamarin.WatchOS/Xamarin.WatchOS.xml +++ b/tools/apidiff/references/xi/Xamarin.WatchOS/Xamarin.WatchOS.xml @@ -16,7 +16,7 @@ - + @@ -543,6 +543,72 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -38913,6 +38979,7 @@ + @@ -40165,6 +40232,7 @@ + @@ -40175,6 +40243,7 @@ + @@ -40182,6 +40251,7 @@ + @@ -40192,6 +40262,7 @@ + @@ -40199,6 +40270,7 @@ + @@ -40209,6 +40281,7 @@ + @@ -40216,6 +40289,7 @@ + @@ -40226,6 +40300,7 @@ + @@ -41754,11 +41829,7 @@ - - - - - + @@ -58477,7 +58548,7 @@ - + @@ -61128,7 +61199,7 @@ - + @@ -61815,6 +61886,18 @@ + + + + + + + + + + + + @@ -61978,6 +62061,12 @@ + + + + + + @@ -61989,6 +62078,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -62010,6 +62119,13 @@ + + + + + + + @@ -62049,6 +62165,10 @@ + + + + @@ -62259,6 +62379,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -62738,6 +62878,15 @@ + + + + + + + + + @@ -63174,11 +63323,28 @@ + + + + + + + + + + + + + + + + + @@ -64804,6 +64970,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -65130,12 +65317,30 @@ + + + + + + + + + + + + + + + + + + @@ -65147,6 +65352,17 @@ + + + + + + + + + + + @@ -65164,6 +65380,24 @@ + + + + + + + + + + + + + + + + + + @@ -65496,6 +65730,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -78688,7 +78994,11 @@ - + + + + + @@ -78872,15 +79182,22 @@ + + + + + + + @@ -78896,15 +79213,21 @@ + + + + + + @@ -78914,10 +79237,13 @@ + + + @@ -79135,6 +79461,24 @@ + + + + + + + + + + + + + + + + + + @@ -79200,6 +79544,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -80502,6 +80866,24 @@ + + + + + + + + + + + + + + + + + + @@ -80576,6 +80958,8 @@ + + @@ -81572,9 +81956,9 @@ - + @@ -81588,7 +81972,7 @@ - + @@ -81598,9 +81982,9 @@ - + @@ -81614,7 +81998,7 @@ - + @@ -81624,9 +82008,9 @@ - + @@ -81640,9 +82024,9 @@ - + @@ -81656,7 +82040,7 @@ - + @@ -81664,6 +82048,24 @@ + + + + + + + + + + + + + + + + + + @@ -81785,6 +82187,24 @@ + + + + + + + + + + + + + + + + + + @@ -81887,10 +82307,10 @@ - + @@ -81903,9 +82323,27 @@ + + + + + + + + + + + + + + + + + + - + @@ -81915,7 +82353,7 @@ - + @@ -81923,12 +82361,30 @@ + + + + + + + + + + + + + + + + + + - + @@ -81943,7 +82399,7 @@ - + @@ -81951,6 +82407,24 @@ + + + + + + + + + + + + + + + + + + @@ -81963,13 +82437,15 @@ - + + + @@ -81977,9 +82453,9 @@ - + @@ -81993,7 +82469,7 @@ - + @@ -82003,7 +82479,7 @@ - + @@ -82013,13 +82489,15 @@ - + + + @@ -82027,7 +82505,7 @@ - + @@ -82036,6 +82514,265 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -82919,11 +83656,15 @@ + + + + @@ -82934,6 +83675,8 @@ + + @@ -82942,6 +83685,10 @@ + + + + @@ -174182,6 +174929,22 @@ + + + + + + + + + + + + + + + + @@ -175788,6 +176551,22 @@ + + + + + + + + + + + + + + + + @@ -175806,6 +176585,28 @@ + + + + + + + + + + + + + + + + + + + + + + @@ -177050,6 +177851,23 @@ + + + + + + + + + + + + + + + + + @@ -177071,6 +177889,22 @@ + + + + + + + + + + + + + + + + @@ -177089,6 +177923,17 @@ + + + + + + + + + + + @@ -177197,6 +178042,17 @@ + + + + + + + + + + + @@ -177221,6 +178077,17 @@ + + + + + + + + + + + @@ -177308,6 +178175,28 @@ + + + + + + + + + + + + + + + + + + + + + + @@ -177344,6 +178233,17 @@ + + + + + + + + + + + @@ -177421,6 +178321,22 @@ + + + + + + + + + + + + + + + + @@ -177511,6 +178427,22 @@ + + + + + + + + + + + + + + + + @@ -177531,6 +178463,22 @@ + + + + + + + + + + + + + + + + @@ -177627,6 +178575,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -177657,6 +178637,22 @@ + + + + + + + + + + + + + + + + @@ -178104,6 +179100,21 @@ + + + + + + + + + + + + + + + @@ -178412,6 +179423,22 @@ + + + + + + + + + + + + + + + + @@ -179082,6 +180109,18 @@ + + + + + + + + + + + + @@ -179716,6 +180755,22 @@ + + + + + + + + + + + + + + + + @@ -179736,6 +180791,22 @@ + + + + + + + + + + + + + + + + @@ -179822,6 +180893,22 @@ + + + + + + + + + + + + + + + + @@ -179862,6 +180949,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -180249,6 +181384,22 @@ + + + + + + + + + + + + + + + + @@ -180804,6 +181955,307 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -181151,6 +182603,24 @@ + + + + + + + + + + + + + + + + + + @@ -181160,6 +182630,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -181224,6 +182737,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -182197,6 +183738,7 @@ + @@ -182207,6 +183749,7 @@ + @@ -182444,6 +183987,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -182512,6 +184076,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -182733,6 +184318,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -183093,6 +184699,23 @@ + + + + + + + + + + + + + + + + + @@ -183411,6 +185034,22 @@ + + + + + + + + + + + + + + + + @@ -183463,6 +185102,28 @@ + + + + + + + + + + + + + + + + + + + + + + @@ -183727,6 +185388,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -183798,6 +185500,12 @@ + + + + + + @@ -183823,7 +185531,17 @@ - + + + + + + + + + + + @@ -183870,6 +185588,12 @@ + + + + + + @@ -184216,6 +185940,7 @@ + @@ -184227,6 +185952,29 @@ + + + + + + + + + + + + + + + + + + + + + + + @@ -184309,6 +186057,7 @@ + @@ -184323,7 +186072,7 @@ - + @@ -184340,7 +186089,7 @@ - + @@ -184350,6 +186099,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -184402,9 +186180,426 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -222761,6 +224956,12 @@ + + + + + + @@ -222917,6 +225118,12 @@ + + + + + + @@ -230625,6 +232832,12 @@ + + + + + + @@ -230782,6 +232995,12 @@ + + + + + + @@ -240498,12 +242717,12 @@ - + - + @@ -256026,6 +258245,17 @@ + + + + + + + + + + + @@ -256056,6 +258286,18 @@ + + + + + + + + + + + + @@ -256101,6 +258343,17 @@ + + + + + + + + + + + @@ -256171,6 +258424,14 @@ + + + + + + + + @@ -256213,6 +258474,14 @@ + + + + + + + + @@ -256230,6 +258499,14 @@ + + + + + + + + @@ -256254,6 +258531,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -257413,6 +259731,231 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -258408,6 +260951,24 @@ + + + + + + + + + + + + + + + + + + @@ -258419,6 +260980,23 @@ + + + + + + + + + + + + + + + + + @@ -258447,6 +261025,10 @@ + + + + @@ -258485,6 +261067,10 @@ + + + + @@ -258493,6 +261079,24 @@ + + + + + + + + + + + + + + + + + + @@ -258500,6 +261104,10 @@ + + + + @@ -258514,6 +261122,11 @@ + + + + + @@ -258531,8 +261144,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -259657,6 +262319,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -259710,6 +262393,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -259741,6 +262444,10 @@ + + + + @@ -259799,6 +262506,10 @@ + + + + @@ -259810,6 +262521,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -259817,6 +262549,10 @@ + + + + @@ -259834,6 +262570,11 @@ + + + + + @@ -260426,6 +263167,375 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -260599,7 +263709,14 @@ - + + + + + + + + @@ -263065,6 +266182,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -263116,6 +266254,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -263147,6 +266305,10 @@ + + + + @@ -263194,6 +266356,10 @@ + + + + @@ -263205,6 +266371,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -263212,6 +266399,10 @@ + + + + @@ -263229,6 +266420,11 @@ + + + + + @@ -264289,6 +267485,7 @@ + @@ -264756,6 +267953,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -264796,6 +268014,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -264827,6 +268065,10 @@ + + + + @@ -264874,6 +268116,10 @@ + + + + @@ -264885,6 +268131,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -264892,6 +268159,10 @@ + + + + @@ -264909,6 +268180,11 @@ + + + + + @@ -265185,19 +268461,254 @@ - + + + + + + + + - - - + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -266040,6 +269551,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -266076,6 +269628,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -266142,6 +269715,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -266260,6 +269853,10 @@ + + + + @@ -266307,6 +269904,10 @@ + + + + @@ -266318,6 +269919,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -266352,6 +269974,10 @@ + + + + @@ -266387,6 +270013,11 @@ + + + + + @@ -266527,6 +270158,129 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -266544,6 +270298,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -268120,6 +271917,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -268206,6 +272044,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -268334,6 +272213,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -268397,6 +272317,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -268429,6 +272390,88 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -268569,6 +272612,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -268836,6 +272905,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -268887,6 +272977,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -268934,6 +273044,10 @@ + + + + @@ -268981,6 +273095,10 @@ + + + + @@ -268992,6 +273110,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -268999,6 +273138,10 @@ + + + + @@ -269033,6 +273176,11 @@ + + + + + @@ -270368,6 +274516,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -270419,6 +274588,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -270450,6 +274639,10 @@ + + + + @@ -270497,6 +274690,10 @@ + + + + @@ -270508,6 +274705,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -270515,6 +274733,10 @@ + + + + @@ -270532,6 +274754,11 @@ + + + + + @@ -270968,6 +275195,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -271028,6 +275298,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -271069,6 +275360,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -271100,6 +275411,10 @@ + + + + @@ -271147,6 +275462,10 @@ + + + + @@ -271158,6 +275477,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -271165,6 +275505,10 @@ + + + + @@ -271182,6 +275526,11 @@ + + + + + @@ -271900,8 +276249,113 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -271929,6 +276383,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -271973,6 +276464,10 @@ + + + + @@ -272020,6 +276515,10 @@ + + + + @@ -272031,6 +276530,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -272038,6 +276558,10 @@ + + + + @@ -272055,6 +276579,11 @@ + + + + + @@ -272068,6 +276597,24 @@ + + + + + + + + + + + + + + + + + + @@ -272436,6 +276983,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -272527,6 +277117,81 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -273054,6 +277719,142 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -273069,6 +277870,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -273078,6 +277920,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -273200,6 +278063,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -273361,6 +278260,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -273484,6 +278403,76 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -273491,6 +278480,10 @@ + + + + @@ -273593,6 +278586,10 @@ + + + + @@ -273604,6 +278601,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -273665,6 +278683,10 @@ + + + + @@ -273675,6 +278697,24 @@ + + + + + + + + + + + + + + + + + + @@ -273776,6 +278816,11 @@ + + + + + @@ -275548,6 +280593,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -275987,6 +281075,88 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -276502,6 +281672,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -276586,6 +281777,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -276636,6 +281847,10 @@ + + + + @@ -276694,6 +281909,10 @@ + + + + @@ -276705,6 +281924,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -276736,6 +281976,10 @@ + + + + @@ -276753,6 +281997,11 @@ + + + + + @@ -277945,6 +283194,315 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -278101,6 +283659,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + @@ -282606,6 +288189,328 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -285999,6 +291904,204 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -286281,6 +292384,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -286347,6 +292471,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -286378,6 +292522,10 @@ + + + + @@ -286425,6 +292573,10 @@ + + + + @@ -286436,6 +292588,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -286443,6 +292616,10 @@ + + + + @@ -286460,6 +292637,11 @@ + + + + + @@ -287764,10 +293946,31 @@ - - + + + + + + + + + + + + + + + + - + + + + + + + + diff --git a/tools/apidiff/references/xi/Xamarin.iOS/Xamarin.iOS.xml b/tools/apidiff/references/xi/Xamarin.iOS/Xamarin.iOS.xml index aa69ef27d9..2431b945aa 100755 --- a/tools/apidiff/references/xi/Xamarin.iOS/Xamarin.iOS.xml +++ b/tools/apidiff/references/xi/Xamarin.iOS/Xamarin.iOS.xml @@ -15506,6 +15506,72 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -30590,6 +30656,23 @@ + + + + + + + + + + + + + + + + + @@ -32448,6 +32531,7 @@ + @@ -32458,6 +32542,22 @@ + + + + + + + + + + + + + + + + @@ -32624,6 +32724,7 @@ + @@ -32829,6 +32930,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -33184,6 +33319,25 @@ + + + + + + + + + + + + + + + + + + + @@ -33792,6 +33946,25 @@ + + + + + + + + + + + + + + + + + + + @@ -33830,6 +34003,25 @@ + + + + + + + + + + + + + + + + + + + @@ -33993,6 +34185,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + @@ -34289,6 +34506,15 @@ + + + + + + + + + @@ -34538,6 +34764,20 @@ + + + + + + + + + + + + + + @@ -34557,6 +34797,15 @@ + + + + + + + + + @@ -35040,6 +35289,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -35091,6 +35378,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -35350,6 +35675,11 @@ + + + + + @@ -37020,6 +37350,25 @@ + + + + + + + + + + + + + + + + + + + @@ -37071,6 +37420,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -37166,6 +37536,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -37826,6 +38217,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -37845,6 +38287,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -38172,6 +38642,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -38298,6 +38805,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -38305,6 +38844,168 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -38354,6 +39055,20 @@ + + + + + + + + + + + + + + @@ -38474,6 +39189,72 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -38505,6 +39286,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -38618,6 +39437,23 @@ + + + + + + + + + + + + + + + + + @@ -39040,6 +39876,22 @@ + + + + + + + + + + + + + + + + @@ -39611,6 +40463,11 @@ + + + + + @@ -40159,6 +41016,11 @@ + + + + + @@ -40219,9 +41081,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -40241,6 +41131,17 @@ + + + + + + + + + + + @@ -40587,6 +41488,156 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -43879,6 +44930,23 @@ + + + + + + + + + + + + + + + + + @@ -56489,6 +57557,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -59492,6 +60598,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -64090,6 +65236,408 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -64412,6 +65960,251 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -69477,6 +71270,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + @@ -70651,6 +72468,7 @@ + @@ -71230,6 +73048,184 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -121730,6 +123726,7 @@ + @@ -122526,6 +124523,23 @@ + + + + + + + + + + + + + + + + + @@ -122692,6 +124706,7 @@ + @@ -122859,6 +124874,7 @@ + @@ -126400,6 +128416,7 @@ + @@ -130451,6 +132468,7 @@ + @@ -131856,6 +133874,7 @@ + @@ -133316,6 +135335,7 @@ + @@ -136458,6 +138478,7 @@ + @@ -137838,6 +139859,7 @@ + @@ -137848,6 +139870,7 @@ + @@ -137855,6 +139878,7 @@ + @@ -137865,6 +139889,7 @@ + @@ -137872,6 +139897,7 @@ + @@ -137882,6 +139908,7 @@ + @@ -137889,6 +139916,7 @@ + @@ -137899,6 +139927,7 @@ + @@ -139698,11 +141727,7 @@ - - - - - + @@ -157310,7 +159335,7 @@ - + @@ -160161,7 +162186,7 @@ - + @@ -160874,6 +162899,18 @@ + + + + + + + + + + + + @@ -161145,6 +163182,12 @@ + + + + + + @@ -161156,6 +163199,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -161177,6 +163240,13 @@ + + + + + + + @@ -161216,6 +163286,10 @@ + + + + @@ -161426,6 +163500,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -161905,6 +163999,15 @@ + + + + + + + + + @@ -162341,11 +164444,28 @@ + + + + + + + + + + + + + + + + + @@ -164013,6 +166133,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -164339,12 +166480,30 @@ + + + + + + + + + + + + + + + + + + @@ -164356,6 +166515,17 @@ + + + + + + + + + + + @@ -164373,6 +166543,24 @@ + + + + + + + + + + + + + + + + + + @@ -164705,6 +166893,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -203196,6 +205456,115 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -203567,7 +205936,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -203698,6 +206100,86 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -203734,6 +206216,18 @@ + + + + + + + + + + + + @@ -203758,6 +206252,18 @@ + + + + + + + + + + + + @@ -203770,6 +206276,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -203780,6 +206322,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -204628,6 +207206,19 @@ + + + + + + + + + + + + + @@ -204648,6 +207239,19 @@ + + + + + + + + + + + + + @@ -204680,7 +207284,7 @@ - + @@ -225710,7 +228314,11 @@ - + + + + + @@ -225894,15 +228502,22 @@ + + + + + + + @@ -225918,15 +228533,21 @@ + + + + + + @@ -225936,10 +228557,13 @@ + + + @@ -226157,6 +228781,24 @@ + + + + + + + + + + + + + + + + + + @@ -226222,6 +228864,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -227524,6 +230186,24 @@ + + + + + + + + + + + + + + + + + + @@ -227598,6 +230278,8 @@ + + @@ -228594,9 +231276,9 @@ - + @@ -228610,7 +231292,7 @@ - + @@ -228620,9 +231302,9 @@ - + @@ -228636,7 +231318,7 @@ - + @@ -228646,9 +231328,9 @@ - + @@ -228662,9 +231344,9 @@ - + @@ -228678,7 +231360,7 @@ - + @@ -228697,6 +231379,24 @@ + + + + + + + + + + + + + + + + + + @@ -228818,6 +231518,24 @@ + + + + + + + + + + + + + + + + + + @@ -228920,10 +231638,10 @@ - + @@ -228936,9 +231654,27 @@ + + + + + + + + + + + + + + + + + + - + @@ -228948,7 +231684,7 @@ - + @@ -228956,12 +231692,30 @@ + + + + + + + + + + + + + + + + + + - + @@ -228976,7 +231730,7 @@ - + @@ -228984,6 +231738,24 @@ + + + + + + + + + + + + + + + + + + @@ -228996,13 +231768,15 @@ - + + + @@ -229010,9 +231784,9 @@ - + @@ -229026,7 +231800,7 @@ - + @@ -229036,7 +231810,7 @@ - + @@ -229046,13 +231820,15 @@ - + + + @@ -229060,7 +231836,7 @@ - + @@ -229069,6 +231845,265 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -229123,6 +232158,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -229138,6 +232211,12 @@ + + + + + + @@ -229167,6 +232246,19 @@ + + + + + + + + + + + + + @@ -229468,6 +232560,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + @@ -229545,6 +232662,15 @@ + + + + + + + + + @@ -230079,9 +233205,9 @@ - + @@ -230095,7 +233221,7 @@ - + @@ -230105,9 +233231,9 @@ - + @@ -230121,7 +233247,7 @@ - + @@ -230131,9 +233257,9 @@ - + @@ -230147,9 +233273,9 @@ - + @@ -230163,7 +233289,7 @@ - + @@ -230171,6 +233297,24 @@ + + + + + + + + + + + + + + + + + + @@ -230278,6 +233422,24 @@ + + + + + + + + + + + + + + + + + + @@ -230414,10 +233576,10 @@ - + @@ -230430,9 +233592,27 @@ + + + + + + + + + + + + + + + + + + - + @@ -230442,7 +233622,7 @@ - + @@ -230450,12 +233630,30 @@ + + + + + + + + + + + + + + + + + + - + @@ -230470,7 +233668,7 @@ - + @@ -230478,6 +233676,24 @@ + + + + + + + + + + + + + + + + + + @@ -230497,13 +233713,15 @@ - + + + @@ -230511,9 +233729,9 @@ - + @@ -230527,7 +233745,7 @@ - + @@ -230537,7 +233755,7 @@ - + @@ -230547,13 +233765,15 @@ - + + + @@ -230561,7 +233781,7 @@ - + @@ -230821,11 +234041,15 @@ + + + + @@ -230836,6 +234060,8 @@ + + @@ -230844,6 +234070,10 @@ + + + + @@ -353858,6 +357088,23 @@ + + + + + + + + + + + + + + + + + @@ -353945,6 +357192,23 @@ + + + + + + + + + + + + + + + + + @@ -360731,6 +363995,175 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -361146,6 +364579,23 @@ + + + + + + + + + + + + + + + + + @@ -362708,6 +366158,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -363718,6 +367207,22 @@ + + + + + + + + + + + + + + + + @@ -365449,6 +368954,22 @@ + + + + + + + + + + + + + + + + @@ -365467,6 +368988,28 @@ + + + + + + + + + + + + + + + + + + + + + + @@ -367055,6 +370598,23 @@ + + + + + + + + + + + + + + + + + @@ -367076,6 +370636,22 @@ + + + + + + + + + + + + + + + + @@ -367094,6 +370670,17 @@ + + + + + + + + + + + @@ -367202,6 +370789,17 @@ + + + + + + + + + + + @@ -367226,6 +370824,17 @@ + + + + + + + + + + + @@ -367313,6 +370922,28 @@ + + + + + + + + + + + + + + + + + + + + + + @@ -367349,6 +370980,17 @@ + + + + + + + + + + + @@ -367426,6 +371068,22 @@ + + + + + + + + + + + + + + + + @@ -367516,6 +371174,22 @@ + + + + + + + + + + + + + + + + @@ -367536,6 +371210,22 @@ + + + + + + + + + + + + + + + + @@ -367632,6 +371322,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -367662,6 +371384,22 @@ + + + + + + + + + + + + + + + + @@ -368205,6 +371943,21 @@ + + + + + + + + + + + + + + + @@ -368523,6 +372276,22 @@ + + + + + + + + + + + + + + + + @@ -369193,6 +372962,18 @@ + + + + + + + + + + + + @@ -369827,6 +373608,22 @@ + + + + + + + + + + + + + + + + @@ -369847,6 +373644,22 @@ + + + + + + + + + + + + + + + + @@ -369933,6 +373746,22 @@ + + + + + + + + + + + + + + + + @@ -369973,6 +373802,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -370360,6 +374237,22 @@ + + + + + + + + + + + + + + + + @@ -370915,6 +374808,307 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -371262,6 +375456,24 @@ + + + + + + + + + + + + + + + + + + @@ -371271,6 +375483,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -371335,6 +375590,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -372359,6 +376642,7 @@ + @@ -372369,6 +376653,7 @@ + @@ -372606,6 +376891,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -372674,6 +376980,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -372895,6 +377222,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -373255,6 +377603,23 @@ + + + + + + + + + + + + + + + + + @@ -373573,6 +377938,22 @@ + + + + + + + + + + + + + + + + @@ -373625,6 +378006,28 @@ + + + + + + + + + + + + + + + + + + + + + + @@ -373889,6 +378292,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -373960,6 +378404,12 @@ + + + + + + @@ -373985,7 +378435,17 @@ - + + + + + + + + + + + @@ -374032,6 +378492,12 @@ + + + + + + @@ -374378,6 +378844,7 @@ + @@ -374389,6 +378856,29 @@ + + + + + + + + + + + + + + + + + + + + + + + @@ -374471,6 +378961,7 @@ + @@ -374485,7 +378976,7 @@ - + @@ -374502,7 +378993,7 @@ - + @@ -374512,6 +379003,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -374564,9 +379084,426 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -421007,6 +425944,12 @@ + + + + + + @@ -421163,6 +426106,12 @@ + + + + + + @@ -431355,6 +436304,12 @@ + + + + + + @@ -431512,6 +436467,12 @@ + + + + + + @@ -462467,11 +467428,13 @@ + + @@ -470833,6 +475796,29 @@ + + + + + + + + + + + + + + + + + + + + + + + @@ -512743,6 +517729,77 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -512759,6 +517816,23 @@ + + + + + + + + + + + + + + + + + @@ -513566,6 +518640,1779 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -513840,6 +520687,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -514030,6 +520917,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -514059,6 +520986,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -514256,6 +521223,22 @@ + + + + + + + + + + + + + + + + @@ -514282,6 +521265,20 @@ + + + + + + + + + + + + + + @@ -514374,6 +521371,139 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -515538,6 +522668,24 @@ + + + + + + + + + + + + + + + + + + @@ -516425,6 +523573,22 @@ + + + + + + + + + + + + + + + + @@ -516449,6 +523613,22 @@ + + + + + + + + + + + + + + + + @@ -517099,6 +524279,7 @@ + @@ -517165,6 +524346,22 @@ + + + + + + + + + + + + + + + + @@ -517695,6 +524892,152 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -518161,6 +525504,24 @@ + + + + + + + + + + + + + + + + + + @@ -518490,6 +525851,22 @@ + + + + + + + + + + + + + + + + @@ -518662,10 +526039,28 @@ + + + + + + + + + + + + + + + + + + @@ -520396,6 +527791,295 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -520560,6 +528244,22 @@ + + + + + + + + + + + + + + + + @@ -521126,6 +528826,149 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -521373,6 +529216,127 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -521457,6 +529421,29 @@ + + + + + + + + + + + + + + + + + + + + + + + @@ -521731,6 +529718,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -523295,6 +531320,22 @@ + + + + + + + + + + + + + + + + @@ -523372,6 +531413,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -523385,6 +531461,7 @@ + @@ -524638,6 +532715,1640 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -525995,6 +535706,7 @@ + @@ -530263,6 +539975,607 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -530765,6 +541078,25 @@ + + + + + + + + + + + + + + + + + + + @@ -531076,6 +541408,20 @@ + + + + + + + + + + + + + + @@ -531669,6 +542015,63 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -532232,7 +542635,6 @@ - @@ -532922,6 +543324,161 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -533225,6 +543782,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -533410,6 +543999,1135 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -538856,6 +550574,24 @@ + + + + + + + + + + + + + + + + + + @@ -539948,6 +551684,80 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -543596,7 +555406,7 @@ - + @@ -543607,7 +555417,7 @@ - + @@ -585354,6 +597164,22 @@ + + + + + + + + + + + + + + + + @@ -588000,6 +599826,17 @@ + + + + + + + + + + + @@ -588030,6 +599867,18 @@ + + + + + + + + + + + + @@ -588087,6 +599936,17 @@ + + + + + + + + + + + @@ -588132,6 +599992,12 @@ + + + + + + @@ -588190,6 +600056,14 @@ + + + + + + + + @@ -588232,6 +600106,14 @@ + + + + + + + + @@ -588249,6 +600131,14 @@ + + + + + + + + @@ -588273,6 +600163,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -589895,6 +601826,231 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -590923,6 +603079,24 @@ + + + + + + + + + + + + + + + + + + @@ -590930,6 +603104,9 @@ + + + @@ -590948,6 +603125,23 @@ + + + + + + + + + + + + + + + + + @@ -590976,6 +603170,10 @@ + + + + @@ -591014,6 +603212,10 @@ + + + + @@ -591022,6 +603224,24 @@ + + + + + + + + + + + + + + + + + + @@ -591029,6 +603249,10 @@ + + + + @@ -591043,6 +603267,11 @@ + + + + + @@ -591060,8 +603289,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -592218,6 +604496,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -592264,6 +604563,9 @@ + + + @@ -592288,6 +604590,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -592319,6 +604641,10 @@ + + + + @@ -592377,6 +604703,10 @@ + + + + @@ -592388,6 +604718,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -592395,6 +604746,10 @@ + + + + @@ -592412,6 +604767,11 @@ + + + + + @@ -593004,6 +605364,375 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -593216,7 +605945,14 @@ - + + + + + + + + @@ -595739,6 +608475,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -595799,6 +608556,9 @@ + + + @@ -595823,6 +608583,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -595854,6 +608634,10 @@ + + + + @@ -595901,6 +608685,10 @@ + + + + @@ -595912,6 +608700,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -595919,6 +608728,10 @@ + + + + @@ -595936,6 +608749,11 @@ + + + + + @@ -596996,6 +609814,7 @@ + @@ -597481,6 +610300,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -597514,6 +610354,9 @@ + + + @@ -597538,6 +610381,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -597569,6 +610432,10 @@ + + + + @@ -597616,6 +610483,10 @@ + + + + @@ -597627,6 +610498,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -597634,6 +610526,10 @@ + + + + @@ -597651,6 +610547,11 @@ + + + + + @@ -597927,19 +610828,254 @@ - + + + + + + + + - - - + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -598816,6 +611952,90 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -598870,6 +612090,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -598958,6 +612199,9 @@ + + + @@ -598982,6 +612226,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -599146,6 +612410,10 @@ + + + + @@ -599193,6 +612461,10 @@ + + + + @@ -599204,6 +612476,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -599238,6 +612531,10 @@ + + + + @@ -599273,6 +612570,11 @@ + + + + + @@ -599413,6 +612715,129 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -599430,6 +612855,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -601409,6 +614877,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -601495,6 +615004,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -601623,6 +615173,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -601686,6 +615277,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -601718,6 +615350,88 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -601858,6 +615572,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -602143,6 +615883,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -602203,6 +615964,9 @@ + + + @@ -602227,6 +615991,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -602284,6 +616068,10 @@ + + + + @@ -602331,6 +616119,10 @@ + + + + @@ -602342,6 +616134,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -602349,6 +616162,10 @@ + + + + @@ -602393,6 +616210,11 @@ + + + + + @@ -603780,6 +617602,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -603840,6 +617683,9 @@ + + + @@ -603864,6 +617710,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -603941,6 +617807,10 @@ + + + + @@ -603988,6 +617858,10 @@ + + + + @@ -603999,6 +617873,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -604006,6 +617901,10 @@ + + + + @@ -604023,6 +617922,11 @@ + + + + + @@ -604524,6 +618428,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -604602,6 +618549,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -604636,6 +618604,9 @@ + + + @@ -604660,6 +618631,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -604691,6 +618682,10 @@ + + + + @@ -604738,6 +618733,10 @@ + + + + @@ -604749,6 +618748,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -604756,6 +618776,10 @@ + + + + @@ -604773,6 +618797,11 @@ + + + + + @@ -605496,6 +619525,90 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -605516,6 +619629,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -605536,6 +619670,9 @@ + + + @@ -605560,6 +619697,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -605604,6 +619778,10 @@ + + + + @@ -605651,6 +619829,10 @@ + + + + @@ -605662,6 +619844,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -605669,6 +619872,10 @@ + + + + @@ -605686,6 +619893,11 @@ + + + + + @@ -605699,6 +619911,24 @@ + + + + + + + + + + + + + + + + + + @@ -606124,6 +620354,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -606215,6 +620488,81 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -606840,6 +621188,142 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -606855,6 +621339,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -606888,6 +621413,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -607010,6 +621556,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -607216,6 +621798,9 @@ + + + @@ -607245,6 +621830,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -607373,6 +621978,76 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -607380,6 +622055,10 @@ + + + + @@ -607492,6 +622171,10 @@ + + + + @@ -607509,6 +622192,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -607570,6 +622274,10 @@ + + + + @@ -607585,6 +622293,24 @@ + + + + + + + + + + + + + + + + + + @@ -607699,6 +622425,11 @@ + + + + + @@ -609649,6 +624380,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -610088,6 +624862,88 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -610621,6 +625477,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -610698,6 +625575,9 @@ + + + @@ -610722,6 +625602,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -610772,6 +625672,10 @@ + + + + @@ -610830,6 +625734,10 @@ + + + + @@ -610841,6 +625749,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -610872,6 +625801,10 @@ + + + + @@ -610889,6 +625822,11 @@ + + + + + @@ -612081,6 +627019,315 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -612237,6 +627484,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + @@ -618546,6 +633818,328 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -618562,6 +634156,7 @@ + @@ -622541,6 +638136,204 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -622841,6 +638634,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -622900,6 +638714,9 @@ + + + @@ -622924,6 +638741,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -622974,6 +638811,10 @@ + + + + @@ -623021,6 +638862,10 @@ + + + + @@ -623032,6 +638877,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -623039,6 +638905,10 @@ + + + + @@ -623056,6 +638926,11 @@ + + + + + @@ -624425,10 +640300,31 @@ - - + + + + + + + + + + + + + + + + - + + + + + + + + @@ -626392,6 +642288,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -647522,6 +663459,7 @@ + @@ -715917,6 +731855,16 @@ + + + + + + + + + + @@ -715930,6 +731878,16 @@ + + + + + + + + + + @@ -738678,6 +754636,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -821678,6 +837671,23 @@ + + + + + + + + + + + + + + + + + @@ -821702,6 +837712,23 @@ + + + + + + + + + + + + + + + + + @@ -821726,6 +837753,23 @@ + + + + + + + + + + + + + + + + + @@ -821801,6 +837845,23 @@ + + + + + + + + + + + + + + + + + @@ -822073,6 +838134,24 @@ + + + + + + + + + + + + + + + + + + @@ -822093,6 +838172,24 @@ + + + + + + + + + + + + + + + + + + @@ -822113,6 +838210,24 @@ + + + + + + + + + + + + + + + + + + @@ -822177,6 +838292,24 @@ + + + + + + + + + + + + + + + + + + @@ -822559,7 +838692,7 @@ - + @@ -822857,6 +838990,23 @@ + + + + + + + + + + + + + + + + + @@ -823196,6 +839346,24 @@ + + + + + + + + + + + + + + + + + + @@ -823370,6 +839538,16 @@ + + + + + + + + + + @@ -824135,6 +840313,20 @@ + + + + + + + + + + + + + + @@ -824597,6 +840789,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -825130,6 +841358,56 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -825302,6 +841580,14 @@ + + + + + + + + From d19b089343ed784914d6631bdfe71f705bf2916f Mon Sep 17 00:00:00 2001 From: Sebastien Pouliot Date: Tue, 7 Nov 2017 11:19:09 -0500 Subject: [PATCH 093/145] Bump Xcode and versions for 9.2 beta 2 --- Make.config | 20 ++++++++++---------- Versions-ios.plist.in | 3 +++ 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/Make.config b/Make.config index 7d954497b9..135f0e72c7 100644 --- a/Make.config +++ b/Make.config @@ -31,7 +31,7 @@ PACKAGE_HEAD_REV=$(shell git rev-parse HEAD) # on wrench, because wrench technically builds hashes, not branches) # # -PACKAGE_HEAD_BRANCH=d15-5 +PACKAGE_HEAD_BRANCH=xcode9.2 ifeq ($(BUILD_REVISION),) CURRENT_BRANCH:=$(shell git rev-parse --abbrev-ref HEAD) else @@ -39,22 +39,22 @@ CURRENT_BRANCH:=$(PACKAGE_HEAD_BRANCH) endif # for service releases and previews -PACKAGE_VERSION_REV=0 +PACKAGE_VERSION_REV=1 IOS_PRODUCT=Xamarin.iOS IOS_PACKAGE_NAME=Xamarin.iOS IOS_PACKAGE_NAME_LOWER=$(shell echo $(IOS_PACKAGE_NAME) | tr "[:upper:]" "[:lower:]") # NEVER customize IOS_PACKAGE_VERSION itself, other parts (mtouch, web updater) are using the IOS_PACKAGE_VERSION_* variables -IOS_PACKAGE_VERSION=11.4.$(PACKAGE_VERSION_REV).$(IOS_COMMIT_DISTANCE) +IOS_PACKAGE_VERSION=11.5.$(PACKAGE_VERSION_REV).$(IOS_COMMIT_DISTANCE) IOS_PACKAGE_VERSION_MAJOR=$(word 1, $(subst ., ,$(IOS_PACKAGE_VERSION))) IOS_PACKAGE_VERSION_MINOR=$(word 2, $(subst ., ,$(IOS_PACKAGE_VERSION))) IOS_PACKAGE_VERSION_REV=$(PACKAGE_VERSION_REV) IOS_PACKAGE_VERSION_BUILD=$(IOS_COMMIT_DISTANCE) IOS_PACKAGE_UPDATE_ID=$(shell printf "2%02d%02d%02d%03d" $(IOS_PACKAGE_VERSION_MAJOR) $(IOS_PACKAGE_VERSION_MINOR) $(IOS_PACKAGE_VERSION_REV) $(IOS_PACKAGE_VERSION_BUILD)) -XCODE_VERSION=9.1 -XCODE_URL=http://xamarin-storage/bot-provisioning/Xcode_9.1.xip -XCODE_DEVELOPER_ROOT=/Applications/Xcode91.app/Contents/Developer +XCODE_VERSION=9.2 +XCODE_URL=http://xamarin-storage/bot-provisioning/Xcode_9.2_Beta2.xip +XCODE_DEVELOPER_ROOT=/Applications/Xcode92-beta2.app/Contents/Developer # Minimum Mono version MIN_MONO_VERSION=5.4.0.201 @@ -80,10 +80,10 @@ MIN_OSX_BUILD_VERSION=10.12 MIN_OSX_VERSION_FOR_IOS=10.11 MIN_OSX_VERSION_FOR_MAC=10.11 -IOS_SDK_VERSION=11.1 +IOS_SDK_VERSION=11.2 OSX_SDK_VERSION=10.13 -WATCH_SDK_VERSION=4.1 -TVOS_SDK_VERSION=11.1 +WATCH_SDK_VERSION=4.2 +TVOS_SDK_VERSION=11.2 MIN_IOS_SDK_VERSION=6.0 MIN_OSX_SDK_VERSION=10.7 @@ -258,7 +258,7 @@ MAC_PRODUCT=Xamarin.Mac MAC_PACKAGE_NAME=xamarin.mac MAC_PACKAGE_NAME_LOWER=$(shell echo $(MAC_PACKAGE_NAME) | tr "[:upper:]" "[:lower:]") -MAC_PACKAGE_VERSION=4.0.$(PACKAGE_VERSION_REV).$(MAC_COMMIT_DISTANCE) +MAC_PACKAGE_VERSION=4.1.$(PACKAGE_VERSION_REV).$(MAC_COMMIT_DISTANCE) MAC_PACKAGE_VERSION_MAJOR=$(word 1, $(subst ., ,$(MAC_PACKAGE_VERSION))) MAC_PACKAGE_VERSION_MINOR=$(word 2, $(subst ., ,$(MAC_PACKAGE_VERSION))) MAC_PACKAGE_VERSION_REV=$(PACKAGE_VERSION_REV) diff --git a/Versions-ios.plist.in b/Versions-ios.plist.in index 3b436be6ae..6a25916be2 100644 --- a/Versions-ios.plist.in +++ b/Versions-ios.plist.in @@ -25,6 +25,7 @@ 10.3 11.0 11.1 + 11.2 tvOS @@ -36,6 +37,7 @@ 10.2 11.0 11.1 + 11.2 watchOS @@ -48,6 +50,7 @@ 3.2 4.0 4.1 + 4.2 RecommendedXcodeVersion From d424ed7dd13dd5c5db30403584c0bb188d52e3f7 Mon Sep 17 00:00:00 2001 From: Sebastien Pouliot Date: Tue, 7 Nov 2017 12:03:42 -0500 Subject: [PATCH 094/145] [contacts] CNContactFormatter now conforms to NSSecureCoding --- src/contacts.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/contacts.cs b/src/contacts.cs index a669dd101e..9f1614a794 100644 --- a/src/contacts.cs +++ b/src/contacts.cs @@ -311,7 +311,7 @@ namespace XamCore.Contacts { [iOS (9,0), Mac (10,11, onlyOn64: true)] [BaseType (typeof (NSFormatter))] - interface CNContactFormatter { + interface CNContactFormatter : NSSecureCoding { [Static] [Export ("descriptorForRequiredKeysForStyle:")] From 54d9faf0b040c5170bd42c0120ee3c8a69ad3cda Mon Sep 17 00:00:00 2001 From: Sebastien Pouliot Date: Tue, 7 Nov 2017 12:04:19 -0500 Subject: [PATCH 095/145] [tests] HMHomeAccessControl conformance to NS[Secure]Coding is not documented --- tests/introspection/iOS/iOSApiProtocolTest.cs | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/tests/introspection/iOS/iOSApiProtocolTest.cs b/tests/introspection/iOS/iOSApiProtocolTest.cs index 194afa65ed..e2badb04d2 100644 --- a/tests/introspection/iOS/iOSApiProtocolTest.cs +++ b/tests/introspection/iOS/iOSApiProtocolTest.cs @@ -218,6 +218,9 @@ namespace Introspection { case "HKSeriesBuilder": case "HKWorkoutRouteBuilder": return true; + // Xcode 9.2 undocumented conformance (like due to new base type) + case "HMHomeAccessControl": + return true; #if __WATCHOS__ case "CLKComplicationTemplate": case "CLKComplicationTemplateCircularSmallRingImage": @@ -363,6 +366,9 @@ namespace Introspection { case "HKSeriesBuilder": case "HKWorkoutRouteBuilder": return true; + // Xcode 9.2 undocumented conformance (like due to new base type) + case "HMHomeAccessControl": + return true; #if __WATCHOS__ case "CLKComplicationTemplate": case "CLKComplicationTemplateCircularSmallRingImage": From e3d484681167cacbcb6c85c6d71a62d18d10528e Mon Sep 17 00:00:00 2001 From: Sebastien Pouliot Date: Tue, 7 Nov 2017 13:25:17 -0500 Subject: [PATCH 096/145] [test][dontlink] Simplify 'Autorelease' test not to depend on version specific return values --- .../dont link/DontLinkRegressionTests.cs | 17 ++++------------- 1 file changed, 4 insertions(+), 13 deletions(-) diff --git a/tests/linker-ios/dont link/DontLinkRegressionTests.cs b/tests/linker-ios/dont link/DontLinkRegressionTests.cs index 0e7cd4ea20..22f0ccf0a0 100644 --- a/tests/linker-ios/dont link/DontLinkRegressionTests.cs +++ b/tests/linker-ios/dont link/DontLinkRegressionTests.cs @@ -78,21 +78,12 @@ namespace DontLink { // this same test existed in linksdk.app and linkall.app to test the linker optimizing IL code // around [Autorelease] decorated methods. However iOS7 changed it's behavior and returns null now using (UIImage img = new UIImage ()) { -#if __WATCHOS__ - if (true) { -#else - if (UIDevice.CurrentDevice.CheckSystemVersion (7, 0)) { -#endif + // different versions of iOS returns null or something - so we're not validating the return + // value since it's not the goal of the test #if !__TVOS__ - Assert.Null (img.StretchableImage (10, 10), "StretchableImage"); + img.StretchableImage (10, 10); #endif - Assert.Null (img.CreateResizableImage (new UIEdgeInsets (1, 2, 3, 4)), "CreateResizableImage"); - } else { -#if !__TVOS__ - Assert.NotNull (img.StretchableImage (10, 10), "StretchableImage"); -#endif - Assert.NotNull (img.CreateResizableImage (new UIEdgeInsets (1, 2, 3, 4)), "CreateResizableImage"); - } + img.CreateResizableImage (new UIEdgeInsets (1, 2, 3, 4)); } } From 93118069ee122e81d673678404195b2eeb390b81 Mon Sep 17 00:00:00 2001 From: Sebastien Pouliot Date: Tue, 7 Nov 2017 14:48:16 -0500 Subject: [PATCH 097/145] [tests] Fix monotouch-tests to execute without failure with xcode 9.2 beta 2 --- tests/monotouch-test/AddressBook/SourceTest.cs | 7 ++----- .../ModelIO/MDLAnimatedValueTypesTests.cs | 2 +- tests/monotouch-test/UIKit/TextFieldTest.cs | 13 +++---------- 3 files changed, 6 insertions(+), 16 deletions(-) diff --git a/tests/monotouch-test/AddressBook/SourceTest.cs b/tests/monotouch-test/AddressBook/SourceTest.cs index f51f4eef23..4abe0a9765 100644 --- a/tests/monotouch-test/AddressBook/SourceTest.cs +++ b/tests/monotouch-test/AddressBook/SourceTest.cs @@ -43,11 +43,8 @@ namespace MonoTouchFixtures.AddressBook { // ABRecord // some bots returns -1 (invalid) and I get 0 after a reset (maybe permission related?) Assert.That (source.Id, Is.LessThanOrEqualTo (0), "Id"); - if (TestRuntime.CheckXcodeVersion (9, 0)) { - Assert.That (source.Type, Is.EqualTo (ABRecordType.Person), "Type"); - } else { - Assert.That (source.Type, Is.EqualTo (ABRecordType.Source), "Type"); - } + // iOS [9,11.2[ returned ABRecordType.Person, otherwise ABRecordType.Source + Assert.That (source.Type, Is.Not.EqualTo (ABRecordType.Group), "Type"); } } } diff --git a/tests/monotouch-test/ModelIO/MDLAnimatedValueTypesTests.cs b/tests/monotouch-test/ModelIO/MDLAnimatedValueTypesTests.cs index 60ea39d953..474a154324 100644 --- a/tests/monotouch-test/ModelIO/MDLAnimatedValueTypesTests.cs +++ b/tests/monotouch-test/ModelIO/MDLAnimatedValueTypesTests.cs @@ -341,7 +341,7 @@ namespace MonoTouchFixtures.ModelIO { var onesDoubleArr = TestMatrices.CreateOnesArray ((int) doubleArr.ElementCount); var timesDoubleArr = new [] { 5d }; doubleArr.Reset (onesDoubleArr, timesDoubleArr); - var doubleValues = doubleArr.GetFloatValues (5); + var doubleValues = doubleArr.GetDoubleValues (5); for (int i = 0; i < onesDoubleArr.Length; i++) Asserts.AreEqual (onesDoubleArr [i], doubleValues [i], $"onesDoubleArr iter: {i}"); diff --git a/tests/monotouch-test/UIKit/TextFieldTest.cs b/tests/monotouch-test/UIKit/TextFieldTest.cs index 03e5bc8941..cd3c0b3de2 100644 --- a/tests/monotouch-test/UIKit/TextFieldTest.cs +++ b/tests/monotouch-test/UIKit/TextFieldTest.cs @@ -88,16 +88,9 @@ namespace MonoTouchFixtures.UIKit { { // https://bugzilla.xamarin.com/show_bug.cgi?id=20572 using (UITextField tf = new UITextField ()) { - var rect = tf.GetCaretRectForPosition (null); - if (TestRuntime.CheckXcodeVersion (9, 0)) { -#if __TVOS__ - Assert.AreEqual (new CGRect (0, -24, 2, 19), rect, "IsEmpty"); -#else - Assert.AreEqual (new CGRect (0, -12, 2, 18.5), rect, "IsEmpty"); -#endif - } else { - Assert.AreEqual (CGRect.Empty, rect, "IsEmpty"); - } + // most iOS versions returns `CGRect.Empty` but iOS [9-11.2[ did not + // so we're not checking the return value - just that the call works (original bug) + tf.GetCaretRectForPosition (null); } } From e68acf1caadb24a32dd97092096fee0212a6a6f0 Mon Sep 17 00:00:00 2001 From: Sebastien Pouliot Date: Tue, 7 Nov 2017 15:35:10 -0500 Subject: [PATCH 098/145] [tests] Handle possible access denied in ContactStoreTest.GetUnifiedContacts For some reason this happens with the watchOS 4.2 simulator on our Jenkins bots (but not locally for me). The test is updated to ignore errors as depending on the sim default content does not seems possible. --- tests/monotouch-test/Contacts/ContactStoreTest.cs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tests/monotouch-test/Contacts/ContactStoreTest.cs b/tests/monotouch-test/Contacts/ContactStoreTest.cs index ed8af25686..9958406faa 100644 --- a/tests/monotouch-test/Contacts/ContactStoreTest.cs +++ b/tests/monotouch-test/Contacts/ContactStoreTest.cs @@ -69,7 +69,9 @@ namespace MonoTouchFixtures.Contacts { // it's in the default simulator build #if !MONOMAC if (Runtime.Arch == Arch.SIMULATOR) { - Assert.Null (error, "error"); + // it fails on some bots (watchOS 4.2 on jenkins) so we cannot assume it always work + if (error != null) + return; Assert.NotNull (contact, "contact"); Assert.False (contact.AreKeysAvailable (CNContactOptions.OrganizationName | CNContactOptions.Note), "AreKeysAvailable-1"); Assert.True (contact.AreKeysAvailable (CNContactOptions.None), "AreKeysAvailable-2"); From f702512483168b8ecad14b66454fa0b89163f5e2 Mon Sep 17 00:00:00 2001 From: Sebastien Pouliot Date: Tue, 7 Nov 2017 20:52:35 -0500 Subject: [PATCH 099/145] [tests] Handle a 2nd case where ContactStoreTest.GetUnifiedContacts can fail on bots --- tests/monotouch-test/Contacts/ContactStoreTest.cs | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/tests/monotouch-test/Contacts/ContactStoreTest.cs b/tests/monotouch-test/Contacts/ContactStoreTest.cs index 9958406faa..59a2173a86 100644 --- a/tests/monotouch-test/Contacts/ContactStoreTest.cs +++ b/tests/monotouch-test/Contacts/ContactStoreTest.cs @@ -49,10 +49,9 @@ namespace MonoTouchFixtures.Contacts { using (var store = new CNContactStore ()) { var contacts = store.GetUnifiedContacts (predicate, fetchKeys, out error); // we can't be sure what's on devices, so check there's no error is the only thing we do - Assert.Null (error, "error"); // but it's in the default simulator build (but not the watchOS simulator) -#if !__WATCHOS__ && !MONOMAC - if (Runtime.Arch == Arch.SIMULATOR) { +#if !MONOMAC + if ((error == null) && (Runtime.Arch == Arch.SIMULATOR)) { Assert.That (contacts.Length, Is.EqualTo (1), "Length"); identifier = contacts [0].Identifier; } @@ -76,14 +75,8 @@ namespace MonoTouchFixtures.Contacts { Assert.False (contact.AreKeysAvailable (CNContactOptions.OrganizationName | CNContactOptions.Note), "AreKeysAvailable-1"); Assert.True (contact.AreKeysAvailable (CNContactOptions.None), "AreKeysAvailable-2"); Assert.True (contact.AreKeysAvailable (fetchKeys), "AreKeysAvailable-3"); - } else { #endif - // and it's a safe bet that id does not exists on any device - Assert.NotNull (error, "error"); // Updated Record Does Not Exist - -#if !MONOMAC } -#endif } } } From 526160d12d8eafe243309a65e1f7941aa4e2f2f8 Mon Sep 17 00:00:00 2001 From: Sebastien Pouliot Date: Tue, 7 Nov 2017 22:45:31 -0500 Subject: [PATCH 100/145] [tests] Fix XM build for monotouch/xammac-tests --- tests/monotouch-test/Contacts/ContactStoreTest.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/monotouch-test/Contacts/ContactStoreTest.cs b/tests/monotouch-test/Contacts/ContactStoreTest.cs index 59a2173a86..a2edf389d6 100644 --- a/tests/monotouch-test/Contacts/ContactStoreTest.cs +++ b/tests/monotouch-test/Contacts/ContactStoreTest.cs @@ -75,8 +75,8 @@ namespace MonoTouchFixtures.Contacts { Assert.False (contact.AreKeysAvailable (CNContactOptions.OrganizationName | CNContactOptions.Note), "AreKeysAvailable-1"); Assert.True (contact.AreKeysAvailable (CNContactOptions.None), "AreKeysAvailable-2"); Assert.True (contact.AreKeysAvailable (fetchKeys), "AreKeysAvailable-3"); -#endif } +#endif } } } From 548d0d2192595afda2ed58ecb12d93af3b020a53 Mon Sep 17 00:00:00 2001 From: Sebastien Pouliot Date: Wed, 8 Nov 2017 14:42:38 -0500 Subject: [PATCH 101/145] [passkit] Update up to Xcode 9.2 beta 2 (#2972) Update (again) a typo in a constant --- src/passkit.cs | 10 ++++++++-- tests/introspection/ApiTypoTest.cs | 1 + 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/passkit.cs b/src/passkit.cs index 57b4dba645..044f36b650 100644 --- a/src/passkit.cs +++ b/src/passkit.cs @@ -779,15 +779,21 @@ namespace XamCore.PassKit { NSString Amex { get; } [iOS (10,3), Watch (3,2)] - [Deprecated (PlatformName.WatchOS, 4,0, message: "Use 'CarteBancaires' instead.")] - [Deprecated (PlatformName.iOS, 11,0, message: "Use 'CarteBancaires' instead.")] + [Deprecated (PlatformName.WatchOS, 4,0, message: "Use 'CartesBancaires' instead.")] + [Deprecated (PlatformName.iOS, 11,0, message: "Use 'CartesBancaires' instead.")] [Field ("PKPaymentNetworkCarteBancaire")] NSString CarteBancaire { get; } [iOS (11,0)][Watch (4,0)] + [Deprecated (PlatformName.WatchOS, 4,2, message: "Use 'CartesBancaires' instead.")] + [Deprecated (PlatformName.iOS, 11,2, message: "Use 'CartesBancaires' instead.")] [Field ("PKPaymentNetworkCarteBancaires")] NSString CarteBancaires { get; } + [iOS (11,2)][Watch (4,2)] + [Field ("PKPaymentNetworkCartesBancaires")] + NSString CartesBancaires { get; } + [iOS (9,2)] [Watch (2,2)] [Field ("PKPaymentNetworkChinaUnionPay")] diff --git a/tests/introspection/ApiTypoTest.cs b/tests/introspection/ApiTypoTest.cs index 812b55fc20..8fc592028d 100644 --- a/tests/introspection/ApiTypoTest.cs +++ b/tests/introspection/ApiTypoTest.cs @@ -121,6 +121,7 @@ namespace Introspection "Cabac", "Caf", // acronym: Core Audio Format "Cancellable", + "Cartes", // french "Cavlc", "Cda", // acronym: Clinical Document Architecture "Celp", // MPEG4ObjectID From 9e23972076f89f5bcefa40b31c62a03e3eb2cfed Mon Sep 17 00:00:00 2001 From: Alex Soto Date: Wed, 8 Nov 2017 20:26:51 -0600 Subject: [PATCH 102/145] [HealthKit] Update up to Xcode 9.2 Beta 2 (#2980) --- src/healthkit.cs | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) diff --git a/src/healthkit.cs b/src/healthkit.cs index c53367ffdb..5bce492517 100644 --- a/src/healthkit.cs +++ b/src/healthkit.cs @@ -626,6 +626,26 @@ namespace XamCore.HealthKit { [Watch (4,0), iOS (11,0)] [Export ("HeartRateMotionContext")] HKHeartRateMotionContext HeartRateMotionContext { get; } + + [Watch (4,2), iOS (11,2)] + [Export ("AverageSpeed")] + HKQuantity AverageSpeed { get; set; } + + [Watch (4,2), iOS (11,2)] + [Export ("MaximumSpeed")] + HKQuantity MaximumSpeed { get; set; } + + [Watch (4,2), iOS (11,2)] + [Export ("AlpineSlopeGrade")] + HKQuantity AlpineSlopeGrade { get; set; } + + [Watch (4,2), iOS (11,2)] + [Export ("ElevationAscended")] + HKQuantity ElevationAscended { get; set; } + + [Watch (4,2), iOS (11,2)] + [Export ("ElevationDescended")] + HKQuantity ElevationDescended { get; set; } } [Watch (2,0)] @@ -744,6 +764,26 @@ namespace XamCore.HealthKit { [Watch (4,0), iOS (11,0)] [Field ("HKMetadataKeyHeartRateMotionContext")] NSString HeartRateMotionContext { get; } + + [Watch (4,2), iOS (11,2)] + [Field ("HKMetadataKeyAverageSpeed")] + NSString AverageSpeed { get; } + + [Watch (4,2), iOS (11,2)] + [Field ("HKMetadataKeyMaximumSpeed")] + NSString MaximumSpeed { get; } + + [Watch (4,2), iOS (11,2)] + [Field ("HKMetadataKeyAlpineSlopeGrade")] + NSString AlpineSlopeGrade { get; } + + [Watch (4,2), iOS (11,2)] + [Field ("HKMetadataKeyElevationAscended")] + NSString ElevationAscended { get; } + + [Watch (4,2), iOS (11,2)] + [Field ("HKMetadataKeyElevationDescended")] + NSString ElevationDescended { get; } } [Watch (2,0)] @@ -1533,6 +1573,10 @@ namespace XamCore.HealthKit { [Field ("HKQuantityTypeIdentifierVO2Max")] NSString VO2Max { get; } + [Watch (4,2), iOS (11,2)] + [Field ("HKQuantityTypeIdentifierDistanceDownhillSnowSports")] + NSString DistanceDownhillSnowSports { get; } + // If you add field, add them to the enum too. } From 1d13a065f7e04fd404464d172a545e21093af81b Mon Sep 17 00:00:00 2001 From: Alex Soto Date: Wed, 8 Nov 2017 20:29:47 -0600 Subject: [PATCH 103/145] [ReplayKit] Update up to Xcode 9.2 Beta 2 (#2984) --- src/ReplayKit/RPEnums.cs | 10 ++++++++++ src/replaykit.cs | 8 ++++++++ 2 files changed, 18 insertions(+) diff --git a/src/ReplayKit/RPEnums.cs b/src/ReplayKit/RPEnums.cs index 2689b9d664..746283c101 100644 --- a/src/ReplayKit/RPEnums.cs +++ b/src/ReplayKit/RPEnums.cs @@ -31,6 +31,16 @@ namespace XamCore.ReplayKit { ActivePhoneCall = -5811, FailedToSave = -5812, CarPlay = -5813, + [iOS (11,2), TV (11,2)] + FailedApplicationConnectionInvalid = -5814, + [iOS (11,2), TV (11,2)] + FailedApplicationConnectionInterrupted = -5815, + [iOS (11,2), TV (11,2)] + FailedNoMatchingApplicationContext = -5816, + [iOS (11,2), TV (11,2)] + FailedMediaServicesFailure = -5817, + [iOS (11,2), TV (11,2)] + VideoMixingFailure = -5818, } [NoiOS] diff --git a/src/replaykit.cs b/src/replaykit.cs index 550c03c23b..b81c5db9d3 100644 --- a/src/replaykit.cs +++ b/src/replaykit.cs @@ -302,6 +302,10 @@ namespace XamCore.ReplayKit { [Field ("RPVideoSampleOrientationKey")] NSString VideoSampleOrientationKey { get; } + [NoTV, iOS (11, 2)] + [Field ("RPApplicationInfoBundleIdentifierKey")] + NSString ApplicationInfoBundleIdentifierKey { get; } + [Export ("broadcastStartedWithSetupInfo:")] void BroadcastStarted ([NullAllowed] NSDictionary setupInfo); @@ -314,6 +318,10 @@ namespace XamCore.ReplayKit { [Export ("broadcastFinished")] void BroadcastFinished (); + [NoTV, iOS (11,2)] + [Export ("broadcastAnnotatedWithApplicationInfo:")] + void BroadcastAnnotated (NSDictionary applicationInfo); + [Export ("processSampleBuffer:withType:")] void ProcessSampleBuffer (CMSampleBuffer sampleBuffer, RPSampleBufferType sampleBufferType); From f5c5b794a44cde7d4dadbebbc84ba217c835570d Mon Sep 17 00:00:00 2001 From: Alex Soto Date: Wed, 8 Nov 2017 20:31:55 -0600 Subject: [PATCH 104/145] [PDFKit] Update up to Xcode 9 Beta 2 (#2983) --- src/pdfkit.cs | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/pdfkit.cs b/src/pdfkit.cs index 1ee3205038..bd0a68fe4c 100644 --- a/src/pdfkit.cs +++ b/src/pdfkit.cs @@ -674,6 +674,10 @@ namespace XamCore.PdfKit { [NullAllowed, Export ("fontColor", ArgumentSemantic.Copy)] NSColor FontColor { get; set; } + [Mac (10,13,2), iOS (11,2)] + [NullAllowed, Export ("interiorColor", ArgumentSemantic.Copy)] + NSColor InteriorColor { get; set; } + [Mac (10,13)] [Export ("alignment", ArgumentSemantic.Assign)] NSTextAlignment Alignment { get; set; } @@ -816,6 +820,10 @@ namespace XamCore.PdfKit { [Mac (10,13)] [NullAllowed, Export ("backgroundColor", ArgumentSemantic.Copy)] NSColor BackgroundColor { get; set; } + + [Mac (10,13,2), iOS (11,2)] + [NullAllowed, Export ("stampName")] + string StampName { get; set; } } [NoiOS] @@ -1396,6 +1404,7 @@ namespace XamCore.PdfKit { [Export ("index")] nint Index { get; } + [return: NullAllowed] [Export ("childAtIndex:")] PdfOutline Child (nint index); @@ -1524,7 +1533,7 @@ namespace XamCore.PdfKit { [return: NullAllowed] PdfSelection GetSelection (NSRange range); - [Export ("dataRepresentation")] + [Export ("dataRepresentation"), NullAllowed] NSData DataRepresentation { get; } } From f2da9cde6b8e9599387be14ae84526674097fc52 Mon Sep 17 00:00:00 2001 From: Alex Soto Date: Thu, 9 Nov 2017 08:41:06 -0600 Subject: [PATCH 105/145] [xtro] Re-enable InputMethodKit in xtro tests, fixes bug 57241 (#2987) https://bugzilla.xamarin.com/show_bug.cgi?id=57241 --- tests/xtro-sharpie/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/xtro-sharpie/Makefile b/tests/xtro-sharpie/Makefile index ca6393d850..780aeda3ae 100644 --- a/tests/xtro-sharpie/Makefile +++ b/tests/xtro-sharpie/Makefile @@ -56,7 +56,7 @@ osx.results run-osx: build $(XMAC_PCH) $(MONO) bin/Debug/xtro-sharpie.exe $(XMAC_PCH) $(XMAC) | sort > osx.results $(XMAC_PCH): .stamp-check-sharpie - sharpie sdk-db -s macosx$(OSX_SDK_VERSION) -a $(XMAC_ARCH) -x InputMethodKit + sharpie sdk-db -s macosx$(OSX_SDK_VERSION) -a $(XMAC_ARCH) preclassify: ios.results osx.results @comm -12 ios.results osx.results > common.unclassified.tmp From 26703bc3111da2bcae89c52d23e5b00c4ef9212c Mon Sep 17 00:00:00 2001 From: Alex Soto Date: Thu, 9 Nov 2017 08:45:25 -0600 Subject: [PATCH 106/145] [Intents] Update up to Xcode 9.2 Beta 2 (#2982) * [Intents] Update up to Xcode 9.2 Beta 2 * Fix message --- src/intents.cs | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/intents.cs b/src/intents.cs index d6b6fd842b..681055776c 100644 --- a/src/intents.cs +++ b/src/intents.cs @@ -7818,10 +7818,16 @@ namespace XamCore.Intents { [BaseType (typeof (INIntent))] interface INSearchForNotebookItemsIntent { + [Deprecated (PlatformName.WatchOS, 4, 2, message: "Use the constructor with 'string notebookItemIdentifier' instead.")] + [Deprecated (PlatformName.iOS, 11, 2, message: "Use the constructor with 'string notebookItemIdentifier' instead.")] [Export ("initWithTitle:content:itemType:status:location:locationSearchType:dateTime:dateSearchType:")] - [DesignatedInitializer] IntPtr Constructor ([NullAllowed] INSpeakableString title, [NullAllowed] string content, INNotebookItemType itemType, INTaskStatus status, [NullAllowed] CLPlacemark location, INLocationSearchType locationSearchType, [NullAllowed] INDateComponentsRange dateTime, INDateSearchType dateSearchType); + [Watch (4,2), iOS (11,2)] + [Export ("initWithTitle:content:itemType:status:location:locationSearchType:dateTime:dateSearchType:notebookItemIdentifier:")] + [DesignatedInitializer] + IntPtr Constructor ([NullAllowed] INSpeakableString title, [NullAllowed] string content, INNotebookItemType itemType, INTaskStatus status, [NullAllowed] CLPlacemark location, INLocationSearchType locationSearchType, [NullAllowed] INDateComponentsRange dateTime, INDateSearchType dateSearchType, [NullAllowed] string notebookItemIdentifier); + [NullAllowed, Export ("title", ArgumentSemantic.Copy)] INSpeakableString Title { get; } @@ -7845,6 +7851,10 @@ namespace XamCore.Intents { [Export ("dateSearchType", ArgumentSemantic.Assign)] INDateSearchType DateSearchType { get; } + + [Watch (4,2), iOS (11,2)] + [NullAllowed, Export ("notebookItemIdentifier")] + string NotebookItemIdentifier { get; } } [Watch (4,0), NoMac, iOS (11,0)] From 36bcb4dbde5b7e22c5560dc4416d52e436f3e28e Mon Sep 17 00:00:00 2001 From: Alex Soto Date: Thu, 9 Nov 2017 08:55:11 -0600 Subject: [PATCH 107/145] [StoreKit] Update up to Xcode 9.2 Beta 2 (#2986) --- src/StoreKit/Enums.cs | 16 ++++++++++++++++ src/storekit.cs | 39 +++++++++++++++++++++++++++++++++++++++ 2 files changed, 55 insertions(+) diff --git a/src/StoreKit/Enums.cs b/src/StoreKit/Enums.cs index d63babdb80..9a6d46e846 100644 --- a/src/StoreKit/Enums.cs +++ b/src/StoreKit/Enums.cs @@ -67,4 +67,20 @@ namespace XamCore.StoreKit { Hide, } #endif + [iOS (11,2), TV (11,2), NoMac] + [Native] + public enum SKProductPeriodUnit : nuint { + Day, + Week, + Month, + Year, + } + + [iOS (11,2), TV (11,2), NoMac] + [Native] + public enum SKProductDiscountPaymentMode : nuint { + PayAsYouGo, + PayUpFront, + FreeTrial, + } } diff --git a/src/storekit.cs b/src/storekit.cs index 088939224a..62a80a1319 100644 --- a/src/storekit.cs +++ b/src/storekit.cs @@ -234,6 +234,14 @@ namespace XamCore.StoreKit { [Export ("downloadContentVersion")] #endif string DownloadContentVersion { get; } + + [iOS (11,2), TV (11,2), NoMac] + [NullAllowed, Export ("subscriptionPeriod")] + SKProductSubscriptionPeriod SubscriptionPeriod { get; } + + [iOS (11,2), TV (11,2), NoMac] + [NullAllowed, Export ("introductoryPrice")] + SKProductDiscount IntroductoryPrice { get; } } [BaseType (typeof (NSObject))] @@ -631,4 +639,35 @@ namespace XamCore.StoreKit { void Update (SKProduct[] storePromotionOrder, [NullAllowed] Action completionHandler); } #endif + + [iOS (11,2), TV (11,2), NoMac] + [BaseType (typeof (NSObject))] + interface SKProductSubscriptionPeriod { + + [Export ("numberOfUnits")] + nuint NumberOfUnits { get; } + + [Export ("unit")] + SKProductPeriodUnit Unit { get; } + } + + [iOS (11,2), TV (11,2), NoMac] + [BaseType (typeof (NSObject))] + interface SKProductDiscount { + + [Export ("price")] + NSDecimalNumber Price { get; } + + [Export ("priceLocale")] + NSLocale PriceLocale { get; } + + [Export ("subscriptionPeriod")] + SKProductSubscriptionPeriod SubscriptionPeriod { get; } + + [Export ("numberOfPeriods")] + nuint NumberOfPeriods { get; } + + [Export ("paymentMode")] + SKProductDiscountPaymentMode PaymentMode { get; } + } } From bb05a29b6b698d258dc606edc99df6c051517aba Mon Sep 17 00:00:00 2001 From: Sebastien Pouliot Date: Thu, 9 Nov 2017 15:39:33 -0500 Subject: [PATCH 108/145] [localauthentication] Update up to Xcode 9.2 beta 2 (#2989) ... which adds some existing (iOS) API to macOS. Also provide a better enum name for FaceId [1] [1] https://bugzilla.xamarin.com/show_bug.cgi?id=60537 --- src/localauthentication.cs | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/localauthentication.cs b/src/localauthentication.cs index 22dcb58853..18f51b0462 100644 --- a/src/localauthentication.cs +++ b/src/localauthentication.cs @@ -5,12 +5,18 @@ using XamCore.Security; namespace XamCore.LocalAuthentication { - [iOS (11,0), NoMac] + [Mac (10,13,2)][iOS (11,0)] [Native] public enum LABiometryType : nint { None, TouchId, - TypeFaceId, + [NoMac] + FaceId, +#if !XAMCORE_4_0 + [NoMac] + [Obsolete ("Use 'FaceId' instead.")] + TypeFaceId = FaceId, +#endif } [iOS (8,0), Mac (10,10)] @@ -86,7 +92,7 @@ namespace XamCore.LocalAuthentication { [Export ("interactionNotAllowed")] bool InteractionNotAllowed { get; set; } - [NoMac, iOS (11,0)] + [Mac (10,13,2)][iOS (11,0)] [Export ("biometryType")] LABiometryType BiometryType { get; } } From eeb8f823af859b9bc5e9fe747b50c618484bf765 Mon Sep 17 00:00:00 2001 From: Sebastien Pouliot Date: Thu, 9 Nov 2017 15:44:53 -0500 Subject: [PATCH 109/145] [uikit] Update to Xcode 9.2 beta 2 (#2991) --- src/UIKit/UIEnums.cs | 1 + src/uikit.cs | 12 ++++++------ 2 files changed, 7 insertions(+), 6 deletions(-) diff --git a/src/UIKit/UIEnums.cs b/src/UIKit/UIEnums.cs index e76daeefbe..123a234c94 100644 --- a/src/UIKit/UIEnums.cs +++ b/src/UIKit/UIEnums.cs @@ -300,6 +300,7 @@ namespace XamCore.UIKit { InfoLight, InfoDark, ContactAdd, + [TV (11,0)][NoiOS] Plain, System = RoundedRect, } diff --git a/src/uikit.cs b/src/uikit.cs index 173d1d1390..3a96eff18f 100644 --- a/src/uikit.cs +++ b/src/uikit.cs @@ -14206,8 +14206,8 @@ namespace XamCore.UIKit { bool ExtendedLayoutIncludesOpaqueBars { get; set; } [Since (7,0)] - [Deprecated (PlatformName.iOS, 11, 0, message: "Use UIScrollView's 'ContentInsetAdjustmentBehavior' instead.")] - [Deprecated (PlatformName.TvOS, 11, 0, message: "Use UIScrollView's 'ContentInsetAdjustmentBehavior' instead.")] + [Deprecated (PlatformName.iOS, 11, 0, message: "Use 'UIScrollView.ContentInsetAdjustmentBehavior' instead.")] + [Deprecated (PlatformName.TvOS, 11, 0, message: "Use 'UIScrollView.ContentInsetAdjustmentBehavior' instead.")] [Export ("automaticallyAdjustsScrollViewInsets", ArgumentSemantic.Assign)] bool AutomaticallyAdjustsScrollViewInsets { get; set; } @@ -14254,14 +14254,14 @@ namespace XamCore.UIKit { UIViewController ChildViewControllerForStatusBarHidden (); [Since (7,0)] - [Deprecated (PlatformName.iOS, 11, 0, message: "Use UIView's 'SafeAreaLayoutGuide' instead.")] - [Deprecated (PlatformName.TvOS, 11, 0, message: "Use UIView's 'SafeAreaLayoutGuide' instead.")] + [Deprecated (PlatformName.iOS, 11, 0, message: "Use 'UIView.SafeAreaLayoutGuide.TopAnchor' instead.")] + [Deprecated (PlatformName.TvOS, 11, 0, message: "Use 'UIView.SafeAreaLayoutGuide.TopAnchor' instead.")] [Export ("topLayoutGuide")] IUILayoutSupport TopLayoutGuide { get; } [Since (7,0)] - [Deprecated (PlatformName.iOS, 11, 0, message: "Use UIView's 'SafeAreaLayoutGuide' instead.")] - [Deprecated (PlatformName.TvOS, 11, 0, message: "Use UIView's 'SafeAreaLayoutGuide' instead.")] + [Deprecated (PlatformName.iOS, 11, 0, message: "Use 'UIView.SafeAreaLayoutGuide.BottomAnchor' instead.")] + [Deprecated (PlatformName.TvOS, 11, 0, message: "Use 'UIView.SafeAreaLayoutGuide.BottomAnchor' instead.")] [Export ("bottomLayoutGuide")] IUILayoutSupport BottomLayoutGuide { get; } From 53ff499b269ade49bc2d902de17818939192e2dc Mon Sep 17 00:00:00 2001 From: Sebastien Pouliot Date: Thu, 9 Nov 2017 15:50:28 -0500 Subject: [PATCH 110/145] [watchos][watchkit] Update up to Xcode 9.2 beta 2 (#2988) --- src/watchkit.cs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/watchkit.cs b/src/watchkit.cs index 91ca0bbd16..31cfa0aea9 100644 --- a/src/watchkit.cs +++ b/src/watchkit.cs @@ -892,6 +892,10 @@ namespace XamCore.WatchKit { [Export ("autorotating")] bool Autorotating { [Bind ("isAutorotating")] get; set; } + [Watch (4,2)] + [Export ("autorotated")] + bool Autorotated { [Bind ("isAutorotated")] get; } + [Watch (4,0)] [Export ("frontmostTimeoutExtended")] bool FrontmostTimeoutExtended { [Bind ("isFrontmostTimeoutExtended")] get; set; } From 1d393f9df5553d211b23b6afe4811b24e224f9c2 Mon Sep 17 00:00:00 2001 From: Sebastien Pouliot Date: Thu, 9 Nov 2017 15:51:24 -0500 Subject: [PATCH 111/145] [coreanimation] Update up to Xcode 9.2 beta 2 (#2973) --- src/coreanimation.cs | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/coreanimation.cs b/src/coreanimation.cs index ca2efb6e4b..def3351bd0 100644 --- a/src/coreanimation.cs +++ b/src/coreanimation.cs @@ -643,6 +643,11 @@ namespace XamCore.CoreAnimation { [TV (11,0)][Mac (10,13)][iOS (11,0)] [Export ("allowsNextDrawableTimeout")] bool AllowsNextDrawableTimeout { get; set; } + + [NoWatch] // headers not updated + [TV (11,2)][Mac (10,13,2)][iOS (11,2)] + [Export ("maximumDrawableCount")] + nuint MaximumDrawableCount { get; set; } } #endif From 651a3f73e88c81292b6cded2d9af878900a49c6d Mon Sep 17 00:00:00 2001 From: Alex Soto Date: Thu, 9 Nov 2017 15:27:21 -0600 Subject: [PATCH 112/145] [CoreML] Update up to Xcode 9.2 Beta 2 (#2979) * [CoreML] Update up to Xcode 9.2 Beta 2 * Add global:: --- src/coreml.cs | 35 ++++++++++++++++++++++++++++++ tests/xtro-sharpie/watchos.pending | 4 ++++ 2 files changed, 39 insertions(+) diff --git a/src/coreml.cs b/src/coreml.cs index 74029a3f68..44a430d696 100644 --- a/src/coreml.cs +++ b/src/coreml.cs @@ -15,6 +15,13 @@ using XamCore.CoreFoundation; using XamCore.CoreVideo; using XamCore.Foundation; +#if !WATCH +using XamCore.Metal; +#else +using IMTLCommandBuffer = global::XamCore.Foundation.NSObject; // Won't be used just to make compilation happy. +using IMTLTexture = global::XamCore.Foundation.NSObject; // Won't be used just to make compilation happy. +#endif + namespace XamCore.CoreML { [Watch (4,0), TV (11,0), Mac (10,13, onlyOn64: true), iOS (11,0)] @@ -36,6 +43,8 @@ namespace XamCore.CoreML { Generic = 0, FeatureType = 1, IO = 3, + [Watch (4,2), TV (11,2), Mac (10,13,2, onlyOn64: true), iOS (11,2)] + CustomLayer = 4, } [Watch (4,0), TV (11,0), Mac (10,13, onlyOn64: true), iOS (11,0)] @@ -346,5 +355,31 @@ namespace XamCore.CoreML { [Export ("usesCPUOnly")] bool UsesCpuOnly { get; set; } } + + [NoWatch, TV (11,2), Mac (10,13,2, onlyOn64: true), iOS (11,2)] + [Protocol] + interface MLCustomLayer { + + // Must be manually inlined in classes implementing this protocol + //[Abstract] + //[Export ("initWithParameterDictionary:error:")] + //IntPtr Constructor (NSDictionary parameters, [NullAllowed] out NSError error); + + [Abstract] + [Export ("setWeightData:error:")] + bool SetWeightData (NSData[] weights, [NullAllowed] out NSError error); + + [Abstract] + [Export ("outputShapesForInputShapes:error:")] + [return: NullAllowed] + NSArray[] GetOutputShapes (NSArray[] inputShapes, [NullAllowed] out NSError error); + + [Abstract] + [Export ("evaluateOnCPUWithInputs:outputs:error:")] + bool EvaluateOnCpu (MLMultiArray[] inputs, MLMultiArray[] outputs, [NullAllowed] out NSError error); + + [Export ("encodeToCommandBuffer:inputs:outputs:error:")] + bool Encode (IMTLCommandBuffer commandBuffer, IMTLTexture[] inputs, IMTLTexture[] outputs, [NullAllowed] out NSError error); + } } #endif // XAMCORE_2_0 diff --git a/tests/xtro-sharpie/watchos.pending b/tests/xtro-sharpie/watchos.pending index 6bb74010bd..0e6321df25 100644 --- a/tests/xtro-sharpie/watchos.pending +++ b/tests/xtro-sharpie/watchos.pending @@ -213,3 +213,7 @@ !missing-pinvoke! NSStringFromUIOffset is not bound !missing-pinvoke! UIOffsetFromString is not bound +# CoreML + +## This protocol uses Metal types and it is not available on watchOS +!missing-protocol! MLCustomLayer not bound From 637e95042690d3bf50c5e762194b9ddf243afe19 Mon Sep 17 00:00:00 2001 From: Alex Soto Date: Fri, 10 Nov 2017 11:16:55 -0600 Subject: [PATCH 113/145] [SceneKit] Update up to Xcode 9.2 Beta 2 (#2985) * [SceneKit] Update up to Xcode 9.2 Beta 2 * implement feedback --- src/scenekit.cs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/scenekit.cs b/src/scenekit.cs index 6faadd12c0..764edcf858 100644 --- a/src/scenekit.cs +++ b/src/scenekit.cs @@ -2720,6 +2720,10 @@ namespace XamCore.SceneKit { [Field ("SCNSceneSourceStrictConformanceKey")] NSString StrictConformanceKey { get; } + [Deprecated (PlatformName.WatchOS, 4, 0)] + [Deprecated (PlatformName.TvOS, 11, 0)] + [Deprecated (PlatformName.iOS, 11, 0)] + [Deprecated (PlatformName.MacOSX, 10, 13)] [Field ("SCNSceneSourceUseSafeModeKey")] NSString UseSafeModeKey { get; } From 4c00387fdc191480ee81a444fb29627381a6262a Mon Sep 17 00:00:00 2001 From: Alex Soto Date: Fri, 10 Nov 2017 11:18:24 -0600 Subject: [PATCH 114/145] [HomeKit] Update up to Xcode 9.2 Beta 2 (#2981) * [HomeKit] Update up to Xcode 9.2 Beta 2 * Fix feedback --- src/HomeKit/HMEnums.cs | 81 +++++++++++++++++++ src/homekit.cs | 11 ++- tests/introspection/iOS/iOSApiProtocolTest.cs | 2 + 3 files changed, 93 insertions(+), 1 deletion(-) diff --git a/src/HomeKit/HMEnums.cs b/src/HomeKit/HMEnums.cs index 9849944e27..a72475f945 100644 --- a/src/HomeKit/HMEnums.cs +++ b/src/HomeKit/HMEnums.cs @@ -8,6 +8,8 @@ namespace XamCore.HomeKit { [TV (10,0)] [Native] public enum HMError : nint { + [Watch (4,2), TV (11,2), iOS (11,2)] + UnexpectedError = -1, AlreadyExists = 1, NotFound = 2, InvalidParameter = 3, @@ -576,6 +578,30 @@ namespace XamCore.HomeKit { [iOS (11,0), Watch (4,0), TV (11,0)] [Field ("HMCharacteristicTypeColorTemperature")] ColorTemperature, + + [Watch (4,2), TV (11,2), iOS (11,2)] + [Field ("HMCharacteristicTypeProgramMode")] + ProgramMode, + + [Watch (4,2), TV (11,2), iOS (11,2)] + [Field ("HMCharacteristicTypeInUse")] + InUse, + + [Watch (4,2), TV (11,2), iOS (11,2)] + [Field ("HMCharacteristicTypeSetDuration")] + SetDuration, + + [Watch (4,2), TV (11,2), iOS (11,2)] + [Field ("HMCharacteristicTypeRemainingDuration")] + RemainingDuration, + + [Watch (4,2), TV (11,2), iOS (11,2)] + [Field ("HMCharacteristicTypeValveType")] + ValveType, + + [Watch (4,2), TV (11,2), iOS (11,2)] + [Field ("HMCharacteristicTypeIsConfigured")] + IsConfigured, } // conveniance enum (ObjC uses NSString) @@ -756,6 +782,18 @@ namespace XamCore.HomeKit { [iOS (10,3), Watch (3,2), TV (10,2)] [Field ("HMServiceTypeLabel")] Label, + + [Watch (4,2), TV (11,2), iOS (11,2)] + [Field ("HMServiceTypeIrrigationSystem")] + IrrigationSystem, + + [Watch (4,2), TV (11,2), iOS (11,2)] + [Field ("HMServiceTypeValve")] + Valve, + + [Watch (4,2), TV (11,2), iOS (11,2)] + [Field ("HMServiceTypeFaucet")] + Faucet, } // conveniance enum (ObjC uses NSString) @@ -1070,6 +1108,18 @@ namespace XamCore.HomeKit { [iOS (10,2), TV (10,1)] [Field ("HMAccessoryCategoryTypeAirDehumidifier")] AirDehumidifier, + + [Watch (4,2), TV (11,2), iOS (11,2)] + [Field ("HMAccessoryCategoryTypeSprinkler")] + Sprinkler, + + [Watch (4,2), TV (11,2), iOS (11,2)] + [Field ("HMAccessoryCategoryTypeFaucet")] + Faucet, + + [Watch (4,2), TV (11,2), iOS (11,2)] + [Field ("HMAccessoryCategoryTypeShowerHead")] + ShowerHead, } [iOS (9,0)] @@ -1288,4 +1338,35 @@ namespace XamCore.HomeKit { HomeUsers = 2, CustomUsers = 3, } + + [Watch (4,2), TV (11,2), iOS (11,2)] + [Native] + public enum HMCharacteristicValueProgramMode : nint { + NotScheduled = 0, + Scheduled, + ScheduleOverriddenToManual, + } + + [Watch (4,2), TV (11,2), iOS (11,2)] + [Native] + public enum HMCharacteristicValueUsageState : nint { + NotInUse = 0, + InUse, + } + + [Watch (4,2), TV (11,2), iOS (11,2)] + [Native] + public enum HMCharacteristicValueValveType : nint { + GenericValve = 0, + Irrigation, + ShowerHead, + WaterFaucet, + } + + [Watch (4,2), TV (11,2), iOS (11,2)] + [Native] + public enum HMCharacteristicValueConfigurationState : nint { + NotConfigured = 0, + Configured, + } } diff --git a/src/homekit.cs b/src/homekit.cs index 6a3d922f39..83e2d9e6b8 100644 --- a/src/homekit.cs +++ b/src/homekit.cs @@ -1331,7 +1331,7 @@ namespace XamCore.HomeKit { [iOS (9,0)] [TV (10,0)] - [BaseType (typeof (NSObject))] + [BaseType (typeof (HMAccessControl))] [DisableDefaultCtor] interface HMHomeAccessControl { [Export ("administrator")] @@ -1748,4 +1748,13 @@ namespace XamCore.HomeKit { [Export ("offset", ArgumentSemantic.Strong)] NSDateComponents Offset { get; set; } } + + [Watch (4,2), TV (11,2), iOS (11,2)] + [BaseType (typeof (NSObject))] + [DisableDefaultCtor] + interface HMAccessControl { + + } + + } diff --git a/tests/introspection/iOS/iOSApiProtocolTest.cs b/tests/introspection/iOS/iOSApiProtocolTest.cs index e2badb04d2..2de0a760f6 100644 --- a/tests/introspection/iOS/iOSApiProtocolTest.cs +++ b/tests/introspection/iOS/iOSApiProtocolTest.cs @@ -220,6 +220,7 @@ namespace Introspection { return true; // Xcode 9.2 undocumented conformance (like due to new base type) case "HMHomeAccessControl": + case "HMAccessControl": return true; #if __WATCHOS__ case "CLKComplicationTemplate": @@ -368,6 +369,7 @@ namespace Introspection { return true; // Xcode 9.2 undocumented conformance (like due to new base type) case "HMHomeAccessControl": + case "HMAccessControl": return true; #if __WATCHOS__ case "CLKComplicationTemplate": From 4ab10b0c3a84ccea0b3f012a2d4b3b8e74c7280b Mon Sep 17 00:00:00 2001 From: Alex Soto Date: Fri, 10 Nov 2017 14:19:38 -0600 Subject: [PATCH 115/145] [AVFoundation] Update up to Xcode 9.2 Beta 2 (#2978) * [AVFoundation] Update up to Xcode 9.2 Beta 2 * implement feedback --- src/AVFoundation/AVCompat.cs | 19 ++++++++++++++++ src/AVFoundation/Enums.cs | 23 ++++++++++++++++++++ src/avfoundation.cs | 35 ++++++++++++++++++++++++++++-- tests/introspection/ApiTypoTest.cs | 1 + tests/xtro-sharpie/Helpers.cs | 1 + 5 files changed, 77 insertions(+), 2 deletions(-) diff --git a/src/AVFoundation/AVCompat.cs b/src/AVFoundation/AVCompat.cs index 74031ae398..5826722b58 100644 --- a/src/AVFoundation/AVCompat.cs +++ b/src/AVFoundation/AVCompat.cs @@ -92,6 +92,25 @@ namespace XamCore.AVFoundation { } } +#if !MONOMAC + partial class AVSampleBufferAudioRenderer + { + [Obsolete ("This API is not available on this platform")] + public virtual string AudioOutputDeviceUniqueId { get; set; } + } +#endif + +#if !IOS + partial class AVSampleBufferAudioRenderer + { + [Obsolete ("This API is not available on this platform")] + public virtual void RespondByRequestingPersistableContentKeyRequest () + { + + } + } +#endif + #if TVOS // tvOS removed some types - we need to keep stubs of them for binary compatibility [Obsolete ("Removed in tvOS 10.")] diff --git a/src/AVFoundation/Enums.cs b/src/AVFoundation/Enums.cs index 5dac02146c..c1c005d95e 100644 --- a/src/AVFoundation/Enums.cs +++ b/src/AVFoundation/Enums.cs @@ -243,6 +243,20 @@ namespace XamCore.AVFoundation { UnsupportedOutputSettings = -11861, [NoWatch, iOS (10,0), TV (10,0), Mac (10,12)] OperationNotAllowed = -11862, + [NoWatch, iOS (11,0), TV (11,0), Mac (10,13)] + ContentIsUnavailable = -11863, + [NoWatch, iOS (11,0), TV (11,0), Mac (10,13)] + FormatUnsupported = -11864, + [NoWatch, iOS (11,0), TV (11,0), Mac (10,13)] + MalformedDepth = -11865, + [NoWatch, iOS (11,0), TV (11,0), Mac (10,13)] + ContentNotUpdated = -11866, + [NoWatch, iOS (11,0), TV (11,0), Mac (10,13)] + NoLongerPlayable = -11867, + [NoWatch, iOS (11,0), TV (11,0), Mac (10,13)] + NoCompatibleAlternatesForExternalDisplay = -11868, + [NoWatch, iOS (11,2), TV (11,2), Mac (10,13,2)] + NoSourceTrack = -11869, } [NoWatch] @@ -990,4 +1004,13 @@ namespace XamCore.AVFoundation { PeakPower = (1 << 1), DepthModuleTemperature = (1 << 2) } + + [TV (11,2), NoWatch, NoMac, iOS (11,2)] + [Native] + [Flags] + public enum AVPlayerHdrMode : nint { + Hlg = 0x1, + Hdr10 = 0x2, + DolbyVision = 0x4, + } } diff --git a/src/avfoundation.cs b/src/avfoundation.cs index 44e6276cfc..f99386c38c 100644 --- a/src/avfoundation.cs +++ b/src/avfoundation.cs @@ -2785,6 +2785,12 @@ namespace XamCore.AVFoundation { NSNumber[] AvailableEncodeChannelLayoutTags { get; } } + [TV (11,2), NoWatch, NoMac, NoiOS] + [Abstract] + [BaseType (typeof (NSObject))] + interface AVDisplayCriteria : NSCopying { + } + [NoWatch] [Since (4,0)] [BaseType (typeof (NSObject))] @@ -2807,6 +2813,10 @@ namespace XamCore.AVFoundation { [Availability (Introduced = Platform.iOS_4_0 | Platform.Mac_10_7, Deprecated = Platform.iOS_5_0 | Platform.Mac_10_8, Message = "Use 'NaturalSize/PreferredTransform' as appropriate on the video track instead.")] CGSize NaturalSize { get; } + [TV (11,2), NoWatch, NoMac, NoiOS] + [Export ("preferredDisplayCriteria")] + AVDisplayCriteria PreferredDisplayCriteria { get; } + [Export ("providesPreciseDurationAndTiming")] bool ProvidesPreciseDurationAndTiming { get; } @@ -3233,7 +3243,7 @@ namespace XamCore.AVFoundation { [NullAllowed, Export ("error")] NSError Error { get; } - [NullAllowed, Export ("audioOutputDeviceUniqueID")] + [NullAllowed, Export ("audioOutputDeviceUniqueID"), NoWatch, NoTV, NoiOS] string AudioOutputDeviceUniqueId { get; set; } [Export ("audioTimePitchAlgorithm")] @@ -3837,6 +3847,10 @@ namespace XamCore.AVFoundation { [iOS (8,0), Mac (10, 10)] [Export ("renewalDate", ArgumentSemantic.Copy), NullAllowed] NSDate RenewalDate { get; set; } + + [Watch (4,2), TV (11,2), Mac (10,13,2), iOS (11,2)] + [NullAllowed, Export ("allowedContentTypes")] + string[] AllowedContentTypes { get; } } [NoWatch] @@ -10290,6 +10304,18 @@ namespace XamCore.AVFoundation { [iOS (10, 0), TV (10,0), Mac (10,12)] [Field ("AVPlayerWaitingWithNoItemToPlayReason")] NSString WaitingWithNoItemToPlayReason { get; } + + // From AVPlayer (AVPlayerPlaybackCapabilities) Category + + [TV (11,2), NoWatch, NoMac, iOS (11,2)] + [Static] + [Export ("availableHDRModes")] + AVPlayerHdrMode AvailableHdrModes { get; } + + [TV (11, 2), NoWatch, NoMac, iOS (11, 2)] + [Field ("AVPlayerAvailableHDRModesDidChangeNotification")] + [Notification] + NSString AvailableHdrModesDidChangeNotification { get; } } [NoWatch] @@ -12488,8 +12514,13 @@ namespace XamCore.AVFoundation { [Export ("processContentKeyResponseError:")] void Process (NSError error); - [Export ("respondByRequestingPersistableContentKeyRequest")] + [Deprecated (PlatformName.iOS, 11, 2, message: "Use the 'NSError' overload instead.")] + [Export ("respondByRequestingPersistableContentKeyRequest"), NoWatch, NoTV, NoMac] void RespondByRequestingPersistableContentKeyRequest (); + + [NoWatch, NoTV, NoMac, iOS (11,2)] + [Export ("respondByRequestingPersistableContentKeyRequestAndReturnError:")] + bool RespondByRequestingPersistableContentKeyRequest ([NullAllowed] out NSError error); } [Category] diff --git a/tests/introspection/ApiTypoTest.cs b/tests/introspection/ApiTypoTest.cs index 8fc592028d..78eff6cdd6 100644 --- a/tests/introspection/ApiTypoTest.cs +++ b/tests/introspection/ApiTypoTest.cs @@ -215,6 +215,7 @@ namespace Introspection "Hfp", "Hipass", "Hls", + "Hlg", "Hoa", "Hrtf", // acronym used in AUSpatializationAlgorithm "Hvxc", // MPEG4ObjectID diff --git a/tests/xtro-sharpie/Helpers.cs b/tests/xtro-sharpie/Helpers.cs index d89cb55b53..b1ae5e7b6b 100644 --- a/tests/xtro-sharpie/Helpers.cs +++ b/tests/xtro-sharpie/Helpers.cs @@ -12,6 +12,7 @@ namespace Extrospection { // the original name can be lost and, if not registered (e.g. enums), might not be available static Dictionary map = new Dictionary () { + { "AVPlayerHDRMode", "AVPlayerHdrMode" }, { "CFURLPathStyle", "CFUrlPathStyle" }, { "CIDataMatrixCodeECCVersion", "CIDataMatrixCodeEccVersion" }, { "CXPlayDTMFCallActionType", "CXPlayDtmfCallActionType" }, From e21a5b9a75707ece1121a5a643d55327c6e1974a Mon Sep 17 00:00:00 2001 From: Sebastien Pouliot Date: Fri, 10 Nov 2017 15:38:19 -0500 Subject: [PATCH 116/145] [xharness] Fix clearing simulator state. Fixes #60229 and #58951. (#2904) (#2993) Fix clearing the simulator state by properly finding the correct simulators from tasks that will actually run, and not from potentially ignored/failed tasks (which won't have necessarily simulators). https://bugzilla.xamarin.com/show_bug.cgi?id=58951 https://bugzilla.xamarin.com/show_bug.cgi?id=60229 --- tests/xharness/Jenkins.cs | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/tests/xharness/Jenkins.cs b/tests/xharness/Jenkins.cs index 2e2c185208..2b9a5fe482 100644 --- a/tests/xharness/Jenkins.cs +++ b/tests/xharness/Jenkins.cs @@ -3087,16 +3087,17 @@ function oninitialload () // We need to set the dialog permissions for all the apps // before launching the simulator, because once launched // the simulator caches the values in-memory. - foreach (var task in Tasks) + var executingTasks = Tasks.Where ((v) => !v.Ignored && !v.Failed); + foreach (var task in executingTasks) await task.SelectSimulatorAsync (); - var devices = Tasks.First ().Simulators; + var devices = executingTasks.First ().Simulators; Jenkins.MainLog.WriteLine ("Selected simulator: {0}", devices.Length > 0 ? devices [0].Name : "none"); foreach (var dev in devices) - await dev.PrepareSimulatorAsync (Jenkins.MainLog, Tasks.Where ((v) => !v.Ignored && !v.Failed).Select ((v) => v.BundleIdentifier).ToArray ()); + await dev.PrepareSimulatorAsync (Jenkins.MainLog, executingTasks.Select ((v) => v.BundleIdentifier).ToArray ()); - foreach (var task in Tasks) { + foreach (var task in executingTasks) { task.AcquiredResource = desktop; try { await task.RunAsync (); From 58b6f6eca395179a5f3376cf51d936c245905d8c Mon Sep 17 00:00:00 2001 From: Sebastien Pouliot Date: Fri, 10 Nov 2017 15:47:13 -0500 Subject: [PATCH 117/145] [corebluetooth] Update up to Xcode 9.2 beta 2 (#2990) Add a new constant. This was added in Xcode 9.2 SDK for iOS and tvOS - even if the constant is marked as existing for a while (iOS 6) but that turned out to be incorrect This was added for watchOS in the *final* Xcode 9.1 SDK. This has not _yet_ been exposed in the macOS SDK. --- src/corebluetooth.cs | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/corebluetooth.cs b/src/corebluetooth.cs index 7254f712eb..e6874616f8 100644 --- a/src/corebluetooth.cs +++ b/src/corebluetooth.cs @@ -116,6 +116,11 @@ namespace XamCore.CoreBluetooth { [Field ("CBConnectPeripheralOptionNotifyOnNotificationKey")] NSString OptionNotifyOnNotificationKey { get; } + [NoMac] // xcode 9.2 beta 2 does not include this inside its macOS header files + [iOS (11,2)][TV (11,2)][Watch (4,2)] + [Field ("CBConnectPeripheralOptionStartDelayKey")] + NSString OptionStartDelayKey { get; } + [Field ("CBCentralManagerOptionRestoreIdentifierKey")] [Since (7,0)] [Mac (10,13)] From c0ceb65b7431af31b05302d4e9683229b24435d8 Mon Sep 17 00:00:00 2001 From: Sebastien Pouliot Date: Mon, 13 Nov 2017 09:17:35 -0500 Subject: [PATCH 118/145] [mediaplayer] Update up to Xcode 9.2 beta 2 (#2994) --- src/mediaplayer.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/mediaplayer.cs b/src/mediaplayer.cs index 2ed75e30be..ae0dbf32b3 100644 --- a/src/mediaplayer.cs +++ b/src/mediaplayer.cs @@ -1375,7 +1375,7 @@ namespace XamCore.MediaPlayer { [NoiOS] [NoTV] - [Export ("playbackState", ArgumentSemantic.Assign)] + [Export ("playbackState")] MPNowPlayingPlaybackState PlaybackState { get; set; } [Internal] From c90c32b2b3f42cedb4993dc44639be3c76626f56 Mon Sep 17 00:00:00 2001 From: Sebastien Pouliot Date: Mon, 13 Nov 2017 11:44:28 -0500 Subject: [PATCH 119/145] [apidiff] Update XML references from latest d15-5 build (#2999) --- .../xi/Xamarin.TVOS/Mono.Security.xml | 53 +- .../xi/Xamarin.TVOS/System.Core.xml | 10 +- .../xi/Xamarin.TVOS/System.IO.Compression.xml | 12 + .../references/xi/Xamarin.TVOS/System.xml | 15 +- .../xi/Xamarin.TVOS/Xamarin.TVOS.xml | 32 +- .../references/xi/Xamarin.TVOS/mscorlib.xml | 342 +- .../xi/Xamarin.WatchOS/System.Core.xml | 10 +- .../Xamarin.WatchOS/System.IO.Compression.xml | 12 + .../references/xi/Xamarin.WatchOS/System.xml | 105 +- .../xi/Xamarin.WatchOS/Xamarin.WatchOS.xml | 28 +- .../xi/Xamarin.WatchOS/mscorlib.xml | 342 +- .../xi/Xamarin.iOS/Mono.Security.xml | 53 +- .../references/xi/Xamarin.iOS/System.Core.xml | 10 +- .../xi/Xamarin.iOS/System.IO.Compression.xml | 12 + .../references/xi/Xamarin.iOS/System.xml | 15 +- .../references/xi/Xamarin.iOS/Xamarin.iOS.xml | 59 +- .../references/xi/Xamarin.iOS/mscorlib.xml | 346 +- .../apidiff/references/xm/4.5/Xamarin.Mac.xml | 75671 +++++++++++++++- tools/apidiff/references/xm/XamMac.xml | 34440 ++++++- .../xm/Xamarin.Mac/Mono.Security.xml | 53 +- .../references/xm/Xamarin.Mac/System.Core.xml | 10 +- .../xm/Xamarin.Mac/System.IO.Compression.xml | 12 + .../references/xm/Xamarin.Mac/System.xml | 15 +- .../references/xm/Xamarin.Mac/Xamarin.Mac.xml | 75668 ++++++++++++++- .../references/xm/Xamarin.Mac/mscorlib.xml | 340 +- 25 files changed, 185087 insertions(+), 2578 deletions(-) diff --git a/tools/apidiff/references/xi/Xamarin.TVOS/Mono.Security.xml b/tools/apidiff/references/xi/Xamarin.TVOS/Mono.Security.xml index d0a160d412..99a9e17837 100755 --- a/tools/apidiff/references/xi/Xamarin.TVOS/Mono.Security.xml +++ b/tools/apidiff/references/xi/Xamarin.TVOS/Mono.Security.xml @@ -3794,6 +3794,13 @@ + + + + + + + @@ -3957,6 +3964,9 @@ + + + @@ -4298,15 +4308,10 @@ - - - - - - - - - + + + + @@ -4334,18 +4339,6 @@ - - - - - - - - - - - - @@ -4367,6 +4360,24 @@ + + + + + + + + + + + + + + + + + + diff --git a/tools/apidiff/references/xi/Xamarin.TVOS/System.Core.xml b/tools/apidiff/references/xi/Xamarin.TVOS/System.Core.xml index 6b01388676..75a19fb488 100755 --- a/tools/apidiff/references/xi/Xamarin.TVOS/System.Core.xml +++ b/tools/apidiff/references/xi/Xamarin.TVOS/System.Core.xml @@ -2792,7 +2792,6 @@ - @@ -17660,6 +17659,9 @@ + + + @@ -17675,6 +17677,12 @@ + + + + + + diff --git a/tools/apidiff/references/xi/Xamarin.TVOS/System.IO.Compression.xml b/tools/apidiff/references/xi/Xamarin.TVOS/System.IO.Compression.xml index 16207469b4..ced312abb4 100755 --- a/tools/apidiff/references/xi/Xamarin.TVOS/System.IO.Compression.xml +++ b/tools/apidiff/references/xi/Xamarin.TVOS/System.IO.Compression.xml @@ -185,6 +185,18 @@ + + + + + + + + + + + + diff --git a/tools/apidiff/references/xi/Xamarin.TVOS/System.xml b/tools/apidiff/references/xi/Xamarin.TVOS/System.xml index 820d02f2fa..6e90d40d7e 100755 --- a/tools/apidiff/references/xi/Xamarin.TVOS/System.xml +++ b/tools/apidiff/references/xi/Xamarin.TVOS/System.xml @@ -28245,6 +28245,7 @@ + @@ -36686,7 +36687,7 @@ - + @@ -36855,7 +36856,10 @@ - + + + + @@ -44005,6 +44009,13 @@ + + + + + + + diff --git a/tools/apidiff/references/xi/Xamarin.TVOS/Xamarin.TVOS.xml b/tools/apidiff/references/xi/Xamarin.TVOS/Xamarin.TVOS.xml index 1e0102c82e..1066f049f6 100755 --- a/tools/apidiff/references/xi/Xamarin.TVOS/Xamarin.TVOS.xml +++ b/tools/apidiff/references/xi/Xamarin.TVOS/Xamarin.TVOS.xml @@ -16,7 +16,7 @@ - + @@ -87106,6 +87106,11 @@ + + + + + @@ -190846,7 +190851,7 @@ - + @@ -375238,6 +375243,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -375497,7 +375523,7 @@ - + diff --git a/tools/apidiff/references/xi/Xamarin.TVOS/mscorlib.xml b/tools/apidiff/references/xi/Xamarin.TVOS/mscorlib.xml index b7e0dd06b8..5819a168ea 100755 --- a/tools/apidiff/references/xi/Xamarin.TVOS/mscorlib.xml +++ b/tools/apidiff/references/xi/Xamarin.TVOS/mscorlib.xml @@ -13083,7 +13083,7 @@ - + @@ -13116,7 +13116,7 @@ - + @@ -13141,7 +13141,7 @@ - + @@ -27335,13 +27335,6 @@ - - - - - - - @@ -27376,6 +27369,14 @@ + + + + + + + + @@ -29245,6 +29246,68 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -29439,17 +29502,6 @@ - - - - - - - - - - - @@ -29460,6 +29512,12 @@ + + + + + + @@ -30083,6 +30141,20 @@ + + + + + + + + + + + + + + @@ -30113,6 +30185,12 @@ + + + + + + @@ -32103,12 +32181,12 @@ - + - + @@ -32505,12 +32583,12 @@ - + - + @@ -34063,12 +34141,12 @@ - + - + @@ -34112,7 +34190,7 @@ - + @@ -51902,6 +51980,9 @@ + + + @@ -57054,6 +57135,20 @@ + + + + + + + + + + + + + + @@ -57070,6 +57165,21 @@ + + + + + + + + + + + + + + + @@ -57317,6 +57427,18 @@ + + + + + + + + + + + + @@ -57988,6 +58110,11 @@ + + + + + @@ -58341,7 +58468,12 @@ - + + + + + + @@ -59165,7 +59297,12 @@ - + + + + + + @@ -59357,7 +59494,12 @@ - + + + + + + @@ -59379,6 +59521,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -59517,7 +59679,12 @@ - + + + + + + @@ -59534,10 +59701,15 @@ - + - + + + + + + @@ -59562,7 +59734,12 @@ - + + + + + + @@ -59879,17 +60056,27 @@ - + + + + + + - + - + + + + + + @@ -59974,7 +60161,12 @@ - + + + + + + @@ -59990,7 +60182,12 @@ - + + + + + + @@ -61612,17 +61809,27 @@ - + + + + + + - + - + + + + + + @@ -62456,7 +62663,12 @@ - + + + + + + @@ -62482,17 +62694,27 @@ - + + + + + + - + - + + + + + + @@ -62519,7 +62741,12 @@ - + + + + + + @@ -63006,7 +63233,12 @@ - + + + + + + @@ -63031,10 +63263,15 @@ - + - + + + + + + @@ -80421,7 +80658,7 @@ - + @@ -94922,7 +95159,6 @@ - diff --git a/tools/apidiff/references/xi/Xamarin.WatchOS/System.Core.xml b/tools/apidiff/references/xi/Xamarin.WatchOS/System.Core.xml index 6b01388676..75a19fb488 100755 --- a/tools/apidiff/references/xi/Xamarin.WatchOS/System.Core.xml +++ b/tools/apidiff/references/xi/Xamarin.WatchOS/System.Core.xml @@ -2792,7 +2792,6 @@ - @@ -17660,6 +17659,9 @@ + + + @@ -17675,6 +17677,12 @@ + + + + + + diff --git a/tools/apidiff/references/xi/Xamarin.WatchOS/System.IO.Compression.xml b/tools/apidiff/references/xi/Xamarin.WatchOS/System.IO.Compression.xml index 16207469b4..ced312abb4 100755 --- a/tools/apidiff/references/xi/Xamarin.WatchOS/System.IO.Compression.xml +++ b/tools/apidiff/references/xi/Xamarin.WatchOS/System.IO.Compression.xml @@ -185,6 +185,18 @@ + + + + + + + + + + + + diff --git a/tools/apidiff/references/xi/Xamarin.WatchOS/System.xml b/tools/apidiff/references/xi/Xamarin.WatchOS/System.xml index 0cc12f7b85..a787515a60 100755 --- a/tools/apidiff/references/xi/Xamarin.WatchOS/System.xml +++ b/tools/apidiff/references/xi/Xamarin.WatchOS/System.xml @@ -24009,48 +24009,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -28215,6 +28173,7 @@ + @@ -28408,32 +28367,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -28561,32 +28494,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -36812,6 +36719,9 @@ + + + @@ -43961,6 +43871,13 @@ + + + + + + + diff --git a/tools/apidiff/references/xi/Xamarin.WatchOS/Xamarin.WatchOS.xml b/tools/apidiff/references/xi/Xamarin.WatchOS/Xamarin.WatchOS.xml index dc68e8bace..2eddc61e4e 100755 --- a/tools/apidiff/references/xi/Xamarin.WatchOS/Xamarin.WatchOS.xml +++ b/tools/apidiff/references/xi/Xamarin.WatchOS/Xamarin.WatchOS.xml @@ -16,7 +16,7 @@ - + @@ -109037,7 +109037,7 @@ - + @@ -232826,6 +232826,7 @@ + @@ -242488,6 +242489,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -242722,7 +242744,7 @@ - + diff --git a/tools/apidiff/references/xi/Xamarin.WatchOS/mscorlib.xml b/tools/apidiff/references/xi/Xamarin.WatchOS/mscorlib.xml index 9166a0cb7b..86fd342688 100755 --- a/tools/apidiff/references/xi/Xamarin.WatchOS/mscorlib.xml +++ b/tools/apidiff/references/xi/Xamarin.WatchOS/mscorlib.xml @@ -13088,7 +13088,7 @@ - + @@ -13121,7 +13121,7 @@ - + @@ -13146,7 +13146,7 @@ - + @@ -27340,13 +27340,6 @@ - - - - - - - @@ -27381,6 +27374,14 @@ + + + + + + + + @@ -29250,6 +29251,68 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -29444,17 +29507,6 @@ - - - - - - - - - - - @@ -29465,6 +29517,12 @@ + + + + + + @@ -30088,6 +30146,20 @@ + + + + + + + + + + + + + + @@ -30118,6 +30190,12 @@ + + + + + + @@ -32038,12 +32116,12 @@ - + - + @@ -32085,12 +32163,12 @@ - + - + @@ -34068,12 +34146,12 @@ - + - + @@ -34117,7 +34195,7 @@ - + @@ -51907,6 +51985,9 @@ + + + @@ -57059,6 +57140,20 @@ + + + + + + + + + + + + + + @@ -57075,6 +57170,21 @@ + + + + + + + + + + + + + + + @@ -57322,6 +57432,18 @@ + + + + + + + + + + + + @@ -57993,6 +58115,11 @@ + + + + + @@ -58346,7 +58473,12 @@ - + + + + + + @@ -59170,7 +59302,12 @@ - + + + + + + @@ -59362,7 +59499,12 @@ - + + + + + + @@ -59384,6 +59526,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -59522,7 +59684,12 @@ - + + + + + + @@ -59539,10 +59706,15 @@ - + - + + + + + + @@ -59567,7 +59739,12 @@ - + + + + + + @@ -59884,17 +60061,27 @@ - + + + + + + - + - + + + + + + @@ -59979,7 +60166,12 @@ - + + + + + + @@ -59995,7 +60187,12 @@ - + + + + + + @@ -61617,17 +61814,27 @@ - + + + + + + - + - + + + + + + @@ -62461,7 +62668,12 @@ - + + + + + + @@ -62487,17 +62699,27 @@ - + + + + + + - + - + + + + + + @@ -62524,7 +62746,12 @@ - + + + + + + @@ -63011,7 +63238,12 @@ - + + + + + + @@ -63036,10 +63268,15 @@ - + - + + + + + + @@ -80426,7 +80663,7 @@ - + @@ -94927,7 +95164,6 @@ - diff --git a/tools/apidiff/references/xi/Xamarin.iOS/Mono.Security.xml b/tools/apidiff/references/xi/Xamarin.iOS/Mono.Security.xml index d0a160d412..99a9e17837 100755 --- a/tools/apidiff/references/xi/Xamarin.iOS/Mono.Security.xml +++ b/tools/apidiff/references/xi/Xamarin.iOS/Mono.Security.xml @@ -3794,6 +3794,13 @@ + + + + + + + @@ -3957,6 +3964,9 @@ + + + @@ -4298,15 +4308,10 @@ - - - - - - - - - + + + + @@ -4334,18 +4339,6 @@ - - - - - - - - - - - - @@ -4367,6 +4360,24 @@ + + + + + + + + + + + + + + + + + + diff --git a/tools/apidiff/references/xi/Xamarin.iOS/System.Core.xml b/tools/apidiff/references/xi/Xamarin.iOS/System.Core.xml index 6b01388676..75a19fb488 100755 --- a/tools/apidiff/references/xi/Xamarin.iOS/System.Core.xml +++ b/tools/apidiff/references/xi/Xamarin.iOS/System.Core.xml @@ -2792,7 +2792,6 @@ - @@ -17660,6 +17659,9 @@ + + + @@ -17675,6 +17677,12 @@ + + + + + + diff --git a/tools/apidiff/references/xi/Xamarin.iOS/System.IO.Compression.xml b/tools/apidiff/references/xi/Xamarin.iOS/System.IO.Compression.xml index 16207469b4..ced312abb4 100755 --- a/tools/apidiff/references/xi/Xamarin.iOS/System.IO.Compression.xml +++ b/tools/apidiff/references/xi/Xamarin.iOS/System.IO.Compression.xml @@ -185,6 +185,18 @@ + + + + + + + + + + + + diff --git a/tools/apidiff/references/xi/Xamarin.iOS/System.xml b/tools/apidiff/references/xi/Xamarin.iOS/System.xml index 57705757f2..09b0e8c34b 100755 --- a/tools/apidiff/references/xi/Xamarin.iOS/System.xml +++ b/tools/apidiff/references/xi/Xamarin.iOS/System.xml @@ -28213,6 +28213,7 @@ + @@ -36654,7 +36655,7 @@ - + @@ -36823,7 +36824,10 @@ - + + + + @@ -43973,6 +43977,13 @@ + + + + + + + diff --git a/tools/apidiff/references/xi/Xamarin.iOS/Xamarin.iOS.xml b/tools/apidiff/references/xi/Xamarin.iOS/Xamarin.iOS.xml index 2431b945aa..c13b765580 100755 --- a/tools/apidiff/references/xi/Xamarin.iOS/Xamarin.iOS.xml +++ b/tools/apidiff/references/xi/Xamarin.iOS/Xamarin.iOS.xml @@ -16,7 +16,7 @@ - + @@ -25028,7 +25028,7 @@ - + @@ -25037,7 +25037,7 @@ - + @@ -25046,7 +25046,7 @@ - + @@ -25055,7 +25055,7 @@ - + @@ -25064,7 +25064,7 @@ - + @@ -25073,7 +25073,7 @@ - + @@ -25082,7 +25082,7 @@ - + @@ -26326,7 +26326,7 @@ - + @@ -32531,7 +32531,7 @@ - + @@ -32724,7 +32724,7 @@ - + @@ -72468,7 +72468,7 @@ - + @@ -86517,7 +86517,7 @@ - + @@ -129330,6 +129330,11 @@ + + + + + @@ -265500,7 +265505,7 @@ - + @@ -436298,6 +436303,7 @@ + @@ -468080,6 +468086,8 @@ + + @@ -555102,6 +555110,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -555417,7 +555446,7 @@ - + diff --git a/tools/apidiff/references/xi/Xamarin.iOS/mscorlib.xml b/tools/apidiff/references/xi/Xamarin.iOS/mscorlib.xml index e97e4627e9..89414bb485 100755 --- a/tools/apidiff/references/xi/Xamarin.iOS/mscorlib.xml +++ b/tools/apidiff/references/xi/Xamarin.iOS/mscorlib.xml @@ -13014,7 +13014,7 @@ - + @@ -13047,7 +13047,7 @@ - + @@ -13072,7 +13072,7 @@ - + @@ -27266,13 +27266,6 @@ - - - - - - - @@ -27307,6 +27300,14 @@ + + + + + + + + @@ -29176,6 +29177,68 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -29370,17 +29433,6 @@ - - - - - - - - - - - @@ -29391,6 +29443,12 @@ + + + + + + @@ -30014,6 +30072,20 @@ + + + + + + + + + + + + + + @@ -30044,6 +30116,12 @@ + + + + + + @@ -31964,12 +32042,12 @@ - + - + @@ -31987,12 +32065,12 @@ - + - + @@ -32034,12 +32112,12 @@ - + - + @@ -33994,12 +34072,12 @@ - + - + @@ -34043,7 +34121,7 @@ - + @@ -51833,6 +51911,9 @@ + + + @@ -56985,6 +57066,20 @@ + + + + + + + + + + + + + + @@ -57001,6 +57096,21 @@ + + + + + + + + + + + + + + + @@ -57248,6 +57358,18 @@ + + + + + + + + + + + + @@ -57919,6 +58041,11 @@ + + + + + @@ -58271,7 +58398,12 @@ - + + + + + + @@ -59095,7 +59227,12 @@ - + + + + + + @@ -59287,7 +59424,12 @@ - + + + + + + @@ -59309,6 +59451,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -59447,7 +59609,12 @@ - + + + + + + @@ -59464,10 +59631,15 @@ - + - + + + + + + @@ -59492,7 +59664,12 @@ - + + + + + + @@ -59809,17 +59986,27 @@ - + + + + + + - + - + + + + + + @@ -59904,7 +60091,12 @@ - + + + + + + @@ -59920,7 +60112,12 @@ - + + + + + + @@ -61542,17 +61739,27 @@ - + + + + + + - + - + + + + + + @@ -62386,7 +62593,12 @@ - + + + + + + @@ -62412,17 +62624,27 @@ - + + + + + + - + - + + + + + + @@ -62449,7 +62671,12 @@ - + + + + + + @@ -62936,7 +63163,12 @@ - + + + + + + @@ -62961,10 +63193,15 @@ - + - + + + + + + @@ -80343,7 +80580,7 @@ - + @@ -94844,7 +95081,6 @@ - diff --git a/tools/apidiff/references/xm/4.5/Xamarin.Mac.xml b/tools/apidiff/references/xm/4.5/Xamarin.Mac.xml index 64271a7ddb..55dfdbf741 100755 --- a/tools/apidiff/references/xm/4.5/Xamarin.Mac.xml +++ b/tools/apidiff/references/xm/4.5/Xamarin.Mac.xml @@ -16,7 +16,7 @@ - + @@ -91,6 +91,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + @@ -716,7 +741,7 @@ - + @@ -782,6 +807,51 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -825,9 +895,15 @@ - + - + + + + + + + @@ -1681,6 +1757,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1905,6 +2029,21 @@ + + + + + + + + + + + + + + + @@ -1927,6 +2066,16 @@ + + + + + + + + + + @@ -2055,6 +2204,18 @@ + + + + + + + + + + + + @@ -4936,6 +5097,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + @@ -5394,7 +5580,7 @@ - + @@ -6719,6 +6905,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -7370,6 +7597,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -8741,7 +9010,7 @@ - + @@ -8996,6 +9265,72 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -9125,7 +9460,7 @@ - + @@ -9986,6 +10321,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -10004,10 +10380,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + - - + + @@ -10018,8 +10419,8 @@ - - + + @@ -10042,6 +10443,132 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -10208,6 +10735,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -10262,6 +10809,25 @@ + + + + + + + + + + + + + + + + + + + @@ -10316,6 +10882,100 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -11997,6 +12657,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -12007,8 +12700,8 @@ - - + + @@ -12320,6 +13013,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -13435,6 +14148,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + @@ -13476,6 +14214,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + @@ -13510,6 +14273,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + @@ -14108,7 +14896,7 @@ - + @@ -14122,7 +14910,7 @@ - + @@ -15112,6 +15900,29 @@ + + + + + + + + + + + + + + + + + + + + + + + @@ -15132,6 +15943,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + @@ -15140,6 +15976,19 @@ + + + + + + + + + + + + + @@ -15150,6 +15999,21 @@ + + + + + + + + + + + + + + + @@ -15169,6 +16033,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + @@ -15178,6 +16066,20 @@ + + + + + + + + + + + + + + @@ -15199,6 +16101,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -15210,6 +16138,22 @@ + + + + + + + + + + + + + + + + @@ -15239,6 +16183,25 @@ + + + + + + + + + + + + + + + + + + + @@ -15264,7 +16227,7 @@ - + @@ -15650,7 +16613,7 @@ - + @@ -16349,6 +17312,25 @@ + + + + + + + + + + + + + + + + + + + @@ -16532,6 +17514,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -17058,6 +18060,7 @@ + @@ -17070,6 +18073,7 @@ + @@ -20471,6 +21475,181 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -20817,7 +21996,7 @@ - + @@ -20909,7 +22088,7 @@ - + @@ -20945,7 +22124,7 @@ - + @@ -21851,6 +23030,235 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -22735,7 +24143,7 @@ - + @@ -24122,17 +25530,11 @@ - + - + - - - - - - @@ -24275,6 +25677,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -24529,6 +25951,25 @@ + + + + + + + + + + + + + + + + + + + @@ -25645,6 +27086,224 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -25942,7 +27601,7 @@ - + @@ -26130,6 +27789,7 @@ + @@ -27190,6 +28850,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -27670,6 +29350,24 @@ + + + + + + + + + + + + + + + + + + @@ -27825,6 +29523,23 @@ + + + + + + + + + + + + + + + + + @@ -28230,6 +29945,14 @@ + + + + + + + + @@ -28454,6 +30177,298 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -28955,6 +30970,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -29340,6 +31469,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -29899,6 +32048,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -30298,6 +32467,111 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -31200,6 +33474,12 @@ + + + + + + @@ -32785,6 +35065,22 @@ + + + + + + + + + + + + + + + + @@ -32795,6 +35091,24 @@ + + + + + + + + + + + + + + + + + + @@ -34364,6 +36678,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -39042,6 +41412,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -40318,7 +42708,7 @@ - + @@ -40412,6 +42802,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -42442,6 +44852,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -43023,6 +45453,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -49389,6 +51857,7 @@ + @@ -49783,17 +52252,14 @@ - + + + + + - - - - - - - @@ -50248,6 +52714,549 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -50265,6 +53274,7 @@ + @@ -50680,6 +53690,251 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -51517,6 +54772,7 @@ + @@ -52414,6 +55670,8 @@ + + @@ -52421,6 +55679,8 @@ + + @@ -52432,6 +55692,10 @@ + + + + @@ -52439,6 +55703,10 @@ + + + + @@ -52526,9 +55794,19 @@ + + + + + + + + + + @@ -52536,9 +55814,19 @@ + + + + + + + + + + @@ -52925,6 +56213,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -53084,6 +56415,51 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -53108,6 +56484,24 @@ + + + + + + + + + + + + + + + + + + @@ -54932,6 +58326,24 @@ + + + + + + + + + + + + + + + + + + @@ -54980,6 +58392,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + @@ -55773,7 +59209,7 @@ - + @@ -55870,6 +59306,51 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -56396,6 +59877,184 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -57310,6 +60969,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -58603,6 +62294,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -58759,6 +62478,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -58921,11 +62675,15 @@ + + + + @@ -58952,11 +62710,13 @@ + + @@ -58966,11 +62726,15 @@ + + + + @@ -58980,12 +62744,16 @@ + + + + @@ -58996,9 +62764,15 @@ + + + + + + @@ -59048,7 +62822,7 @@ - + @@ -59092,6 +62866,8 @@ + + @@ -59130,6 +62906,8 @@ + + @@ -59168,6 +62946,7 @@ + @@ -59230,6 +63009,8 @@ + + @@ -59394,6 +63175,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -61373,6 +65187,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -65525,6 +69378,105 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -67330,6 +71282,17 @@ + + + + + + + + + + + @@ -68496,6 +72459,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -69386,6 +73403,7 @@ + @@ -71023,7 +75041,7 @@ - + @@ -74839,6 +78857,106 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -75752,6 +79870,80 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -75949,6 +80141,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -75989,6 +80234,20 @@ + + + + + + + + + + + + + + @@ -76189,6 +80448,20 @@ + + + + + + + + + + + + + + @@ -76553,6 +80826,20 @@ + + + + + + + + + + + + + + @@ -77609,6 +81896,952 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -77873,6 +83106,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -78177,6 +83444,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -82845,6 +88180,23 @@ + + + + + + + + + + + + + + + + + @@ -83691,6 +89043,20 @@ + + + + + + + + + + + + + + @@ -84054,6 +89420,20 @@ + + + + + + + + + + + + + + @@ -84214,6 +89594,20 @@ + + + + + + + + + + + + + + @@ -84282,6 +89676,20 @@ + + + + + + + + + + + + + + @@ -84527,6 +89935,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -84536,6 +89971,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -86224,7 +91689,7 @@ - + @@ -87665,6 +93130,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -87969,6 +93468,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -92753,6 +98320,7 @@ + @@ -93777,7 +99345,7 @@ - + @@ -95034,6 +100602,21 @@ + + + + + + + + + + + + + + + @@ -95635,6 +101218,18 @@ + + + + + + + + + + + + @@ -96241,6 +101836,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -97465,8 +103089,18 @@ - - + + + + + + + + + + + + @@ -98030,6 +103664,28 @@ + + + + + + + + + + + + + + + + + + + + + + @@ -98091,6 +103747,21 @@ + + + + + + + + + + + + + + + @@ -98098,6 +103769,7 @@ + @@ -98106,6 +103778,13 @@ + + + + + + + @@ -98131,6 +103810,7 @@ + @@ -98138,6 +103818,13 @@ + + + + + + + @@ -102311,6 +107998,7 @@ + @@ -102756,6 +108444,7 @@ + @@ -106060,6 +111749,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -106364,6 +112087,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -115153,6 +120944,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -115803,6 +121628,7 @@ + @@ -116419,6 +122245,7 @@ + @@ -116496,6 +122323,7 @@ + @@ -116932,6 +122760,7 @@ + @@ -117054,6 +122883,7 @@ + @@ -117519,6 +123349,7 @@ + @@ -117581,6 +123412,7 @@ + @@ -120443,6 +126275,24 @@ + + + + + + + + + + + + + + + + + + @@ -120536,7 +126386,13 @@ - + + + + + + + @@ -122049,6 +127905,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -122060,6 +127956,146 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -122113,12 +128149,31 @@ + + + + + + + + + + + + + + + + + + + - + @@ -122808,6 +128863,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -122937,6 +129021,20 @@ + + + + + + + + + + + + + + @@ -123082,7 +129180,7 @@ - + @@ -124298,6 +130396,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -125146,6 +131278,22 @@ + + + + + + + + + + + + + + + + @@ -125925,7 +132073,7 @@ - + @@ -130162,6 +136310,7 @@ + @@ -130173,6 +136322,7 @@ + @@ -130184,6 +136334,7 @@ + @@ -130197,6 +136348,7 @@ + @@ -130256,6 +136408,7 @@ + @@ -130269,6 +136422,7 @@ + @@ -133157,6 +139311,25 @@ + + + + + + + + + + + + + + + + + + + @@ -133680,6 +139853,7 @@ + @@ -134085,6 +140259,21 @@ + + + + + + + + + + + + + + + @@ -134360,6 +140549,20 @@ + + + + + + + + + + + + + + @@ -134839,6 +141042,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -135318,6 +141549,25 @@ + + + + + + + + + + + + + + + + + + + @@ -135508,6 +141758,25 @@ + + + + + + + + + + + + + + + + + + + @@ -137191,6 +143460,7 @@ + @@ -137358,6 +143628,7 @@ + @@ -138021,6 +144292,7 @@ + @@ -138102,6 +144374,7 @@ + @@ -138120,6 +144393,7 @@ + @@ -138411,6 +144685,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -138715,6 +145023,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -142333,9 +148709,13 @@ + + + + @@ -142344,9 +148724,13 @@ + + + + @@ -142896,9 +149280,13 @@ + + + + @@ -142907,9 +149295,13 @@ + + + + @@ -143853,6 +150245,7 @@ + @@ -144080,6 +150473,7 @@ + @@ -146669,6 +153063,7 @@ + @@ -146719,7 +153114,7 @@ - + @@ -146765,7 +153160,7 @@ - + @@ -147312,6 +153707,7 @@ + @@ -147322,6 +153718,7 @@ + @@ -147329,6 +153726,7 @@ + @@ -147339,6 +153737,7 @@ + @@ -147346,6 +153745,7 @@ + @@ -147356,6 +153756,7 @@ + @@ -147602,6 +154003,7 @@ + @@ -147628,6 +154030,7 @@ + @@ -147673,6 +154076,11 @@ + + + + + @@ -147715,6 +154123,50 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -147733,6 +154185,7 @@ + @@ -147826,6 +154279,7 @@ + @@ -148005,6 +154459,145 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -148139,6 +154732,7 @@ + @@ -148767,6 +155361,25 @@ + + + + + + + + + + + + + + + + + + + @@ -148972,6 +155585,21 @@ + + + + + + + + + + + + + + + @@ -150030,6 +156658,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + @@ -150071,6 +156724,16 @@ + + + + + + + + + + @@ -152409,7 +159072,7 @@ - + @@ -152512,7 +159175,7 @@ - + @@ -152840,6 +159503,25 @@ + + + + + + + + + + + + + + + + + + + @@ -152881,6 +159563,25 @@ + + + + + + + + + + + + + + + + + + + @@ -152971,10 +159672,27 @@ + + + + + + + + + + + + + + + + + @@ -153009,6 +159727,7 @@ + @@ -155704,6 +162423,25 @@ + + + + + + + + + + + + + + + + + + + @@ -155735,8 +162473,154 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -155751,6 +162635,22 @@ + + + + + + + + + + + + + + + + @@ -156657,6 +163557,7 @@ + @@ -156674,6 +163575,7 @@ + @@ -157394,7 +164296,7 @@ - + @@ -158350,6 +165252,11 @@ + + + + + @@ -158836,6 +165743,7 @@ + @@ -158895,6 +165803,7 @@ + @@ -160092,6 +167001,83 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -160188,6 +167174,14 @@ + + + + + + + + @@ -163684,6 +170678,22 @@ + + + + + + + + + + + + + + + + @@ -163759,6 +170769,22 @@ + + + + + + + + + + + + + + + + @@ -163878,6 +170904,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -163907,6 +170967,104 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -164026,6 +171184,108 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -164084,6 +171344,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -164548,6 +171842,22 @@ + + + + + + + + + + + + + + + + @@ -166754,6 +174064,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -167058,6 +174402,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -173355,6 +180767,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -173659,6 +181105,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -177180,6 +184694,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -178804,6 +186350,7 @@ + @@ -182282,6 +189829,28 @@ + + + + + + + + + + + + + + + + + + + + + + @@ -182891,6 +190460,7 @@ + @@ -186182,6 +193752,7 @@ + @@ -186417,6 +193988,7 @@ + @@ -189271,6 +196843,7 @@ + @@ -189866,9 +197439,13 @@ + + + + @@ -189906,9 +197483,13 @@ + + + + @@ -189916,9 +197497,13 @@ + + + + @@ -189936,9 +197521,13 @@ + + + + @@ -189963,6 +197552,76 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -189977,6 +197636,20 @@ + + + + + + + + + + + + + + @@ -190159,6 +197832,20 @@ + + + + + + + + + + + + + + @@ -190212,9 +197899,13 @@ + + + + @@ -190829,7 +198520,7 @@ - + @@ -191128,7 +198819,7 @@ - + @@ -194914,6 +202605,7 @@ + @@ -195187,6 +202879,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -195491,6 +203217,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -198999,6 +206793,17 @@ + + + + + + + + + + + @@ -199276,6 +207081,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -204076,6 +211901,7 @@ + @@ -204093,6 +211919,7 @@ + @@ -205439,6 +213266,21 @@ + + + + + + + + + + + + + + + @@ -208600,6 +216442,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -210256,6 +218136,7 @@ + @@ -217166,6 +225047,23 @@ + + + + + + + + + + + + + + + + + @@ -217751,6 +225649,7 @@ + @@ -217835,6 +225734,25 @@ + + + + + + + + + + + + + + + + + + + @@ -217915,6 +225833,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -218041,6 +225993,20 @@ + + + + + + + + + + + + + + @@ -218061,6 +226027,20 @@ + + + + + + + + + + + + + + @@ -218113,6 +226093,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -218177,6 +226199,21 @@ + + + + + + + + + + + + + + + @@ -218261,6 +226298,51 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -218275,6 +226357,20 @@ + + + + + + + + + + + + + + @@ -221588,6 +229684,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -221892,6 +230022,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -228333,7 +236531,7 @@ - + @@ -231482,6 +239680,7 @@ + @@ -231911,6 +240110,19 @@ + + + + + + + + + + + + + @@ -235617,6 +243829,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -242523,6 +250755,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -243194,6 +251458,7 @@ + @@ -246165,6 +254430,7 @@ + @@ -247204,6 +255470,20 @@ + + + + + + + + + + + + + + @@ -254018,6 +262298,15 @@ + + + + + + + + + @@ -254147,6 +262436,121 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -258460,6 +266864,7 @@ + @@ -262556,6 +270961,18 @@ + + + + + + + + + + + + @@ -267049,6 +275466,7 @@ + @@ -267337,6 +275755,7 @@ + @@ -267537,6 +275956,7 @@ + @@ -267924,6 +276344,312 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -268349,6 +277075,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -268653,6 +277413,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -272924,9 +281752,13 @@ + + + + @@ -276019,6 +284851,7 @@ + @@ -276056,6 +284889,7 @@ + @@ -276804,6 +285638,7 @@ + @@ -280446,6 +289281,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -280750,6 +289619,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -287150,6 +296087,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -288238,6 +297215,7 @@ + @@ -288551,6 +297529,7 @@ + @@ -288713,7 +297692,7 @@ - + @@ -289538,6 +298517,7 @@ + @@ -289930,6 +298910,20 @@ + + + + + + + + + + + + + + @@ -293418,6 +302412,412 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -294240,6 +303640,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -295782,6 +305220,24 @@ + + + + + + + + + + + + + + + + + + @@ -296022,6 +305478,8 @@ + + @@ -298155,6 +307613,14 @@ + + + + + + + + @@ -298162,6 +307628,14 @@ + + + + + + + + @@ -298278,6 +307752,7 @@ + @@ -298297,6 +307772,7 @@ + @@ -298416,7 +307892,7 @@ - + @@ -300778,6 +310254,117 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -300837,6 +310424,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + @@ -300950,6 +310562,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + @@ -300984,6 +310621,7 @@ + @@ -300997,6 +310635,7 @@ + @@ -301525,6 +311164,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -302051,6 +311731,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -302109,6 +311843,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -302730,6 +312502,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -303055,7 +312866,7 @@ - + @@ -303087,7 +312898,7 @@ - + @@ -303104,6 +312915,7 @@ + @@ -303197,6 +313009,17 @@ + + + + + + + + + + + @@ -303677,7 +313500,7 @@ - + @@ -303701,7 +313524,7 @@ - + @@ -303729,7 +313552,7 @@ - + @@ -304508,6 +314331,7 @@ + @@ -304530,6 +314354,24 @@ + + + + + + + + + + + + + + + + + + @@ -304698,6 +314540,134 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -305094,11 +315064,17 @@ + + + + + + - + @@ -305249,6 +315225,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -305822,6 +315831,14 @@ + + + + + + + + @@ -305833,6 +315850,14 @@ + + + + + + + + @@ -306264,6 +316289,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -306428,7 +316521,7 @@ - + @@ -309513,6 +319606,14 @@ + + + + + + + + @@ -309956,6 +320057,50 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -309966,6 +320111,8 @@ + + @@ -310980,6 +321127,7 @@ + @@ -311150,6 +321298,19 @@ + + + + + + + + + + + + + @@ -312677,6 +322838,8 @@ + + @@ -312810,6 +322973,8 @@ + + @@ -314044,6 +324209,158 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -314101,7 +324418,7 @@ - + @@ -314484,6 +324801,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -314576,6 +324928,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -314608,6 +324995,238 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -314656,6 +325275,7 @@ + @@ -314709,6 +325329,501 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -314779,9 +325894,6 @@ - - - @@ -314792,9 +325904,6 @@ - - - @@ -314805,9 +325914,6 @@ - - - @@ -314815,75 +325921,39 @@ - + - - - - + - - + + - - - - - + - - + + - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -314894,9 +325964,6 @@ - - - @@ -314907,9 +325974,6 @@ - - - @@ -314919,9 +325983,6 @@ - - - @@ -314932,9 +325993,6 @@ - - - @@ -314945,9 +326003,6 @@ - - - @@ -314955,54 +326010,321 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - + - + + - - - - + - + + - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -319161,6 +330483,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -319536,6 +330884,8 @@ + + @@ -320110,6 +331460,28 @@ + + + + + + + + + + + + + + + + + + + + + + @@ -320164,6 +331536,50 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -320249,6 +331665,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -320332,6 +331784,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -321771,7 +333270,7 @@ - + @@ -322620,7 +334119,7 @@ - + @@ -322646,7 +334145,7 @@ - + @@ -322672,7 +334171,7 @@ - + @@ -322714,6 +334213,18 @@ + + + + + + + + + + + + @@ -322723,6 +334234,12 @@ + + + + + + @@ -323039,7 +334556,7 @@ - + @@ -323065,7 +334582,7 @@ - + @@ -323093,7 +334610,7 @@ - + @@ -323514,6 +335031,22 @@ + + + + + + + + + + + + + + + + @@ -323584,6 +335117,22 @@ + + + + + + + + + + + + + + + + @@ -324019,6 +335568,8 @@ + + @@ -325787,6 +337338,9 @@ + + + @@ -326135,6 +337689,10 @@ + + + + @@ -326147,8 +337705,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -326563,6 +338156,14 @@ + + + + + + + + @@ -326575,6 +338176,11 @@ + + + + + @@ -327424,7 +339030,9 @@ + + @@ -328085,6 +339693,7 @@ + @@ -328097,6 +339706,7 @@ + @@ -328108,6 +339718,7 @@ + @@ -328218,6 +339829,23 @@ + + + + + + + + + + + + + + + + + @@ -328382,7 +340010,9 @@ + + @@ -328567,7 +340197,9 @@ + + @@ -328809,6 +340441,7 @@ + @@ -329215,6 +340848,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -329248,6 +340902,7 @@ + @@ -329562,6 +341217,7 @@ + @@ -330987,6 +342643,7 @@ + @@ -331727,6 +343384,7 @@ + @@ -331980,7 +343638,9 @@ + + @@ -332363,6 +344023,7 @@ + @@ -332681,7 +344342,7 @@ - + @@ -332970,6 +344631,11 @@ + + + + + @@ -333710,6 +345376,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -335637,6 +347346,7 @@ + @@ -335828,6 +347538,7 @@ + @@ -335896,6 +347607,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -335932,6 +347684,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -336087,6 +347880,7 @@ + @@ -336306,7 +348100,9 @@ + + @@ -336531,6 +348327,7 @@ + @@ -336929,6 +348726,7 @@ + @@ -337157,6 +348955,7 @@ + @@ -337707,7 +349506,9 @@ + + @@ -337946,6 +349747,7 @@ + @@ -338395,6 +350197,7 @@ + @@ -339049,6 +350852,7 @@ + @@ -339168,7 +350972,9 @@ + + @@ -339421,6 +351227,7 @@ + @@ -340202,6 +352009,218 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -340334,6 +352353,9 @@ + + + @@ -340451,6 +352473,7 @@ + @@ -340481,6 +352504,7 @@ + @@ -340505,6 +352529,7 @@ + @@ -340695,6 +352720,7 @@ + @@ -340797,8 +352823,107 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -340814,7 +352939,7 @@ - + @@ -340823,6 +352948,8 @@ + + @@ -340923,6 +353050,9 @@ + + + @@ -340954,7 +353084,7 @@ - + @@ -340964,6 +353094,7 @@ + @@ -341013,6 +353144,7 @@ + @@ -341039,6 +353171,7 @@ + @@ -341073,6 +353206,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -341083,6 +353253,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -341099,6 +353301,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -341126,18 +353376,8 @@ - - - - - - - - - - @@ -341235,8 +353475,10 @@ + + @@ -341345,6 +353587,7 @@ + @@ -341468,6 +353711,7 @@ + @@ -341485,6 +353729,7 @@ + @@ -341579,6 +353824,7 @@ + @@ -341593,6 +353839,7 @@ + @@ -341620,6 +353867,7 @@ + @@ -341635,7 +353883,7 @@ - + @@ -341644,6 +353892,7 @@ + @@ -341715,6 +353964,7 @@ + @@ -341727,6 +353977,7 @@ + @@ -341792,31 +354043,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - @@ -341905,6 +354131,7 @@ + @@ -341918,9 +354145,17 @@ - + + + + + - + + + + + @@ -341928,6 +354163,7 @@ + @@ -341940,7 +354176,7 @@ - + @@ -341949,6 +354185,7 @@ + @@ -342010,23 +354247,6 @@ - - - - - - - - - - - - - - - - - @@ -342174,6 +354394,7 @@ + @@ -342183,8 +354404,18 @@ - - + + + + + + + + + + + + @@ -342195,10 +354426,18 @@ + + + + + + + + @@ -342213,7 +354452,236 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -342238,6 +354706,7 @@ + @@ -342279,6 +354748,8 @@ + + @@ -342414,6 +354885,7 @@ + @@ -342427,6 +354899,7 @@ + @@ -342438,6 +354911,8 @@ + + @@ -342489,6 +354964,7 @@ + @@ -342530,6 +355006,8 @@ + + @@ -342559,6 +355037,7 @@ + @@ -342600,6 +355079,8 @@ + + @@ -342681,6 +355162,7 @@ + @@ -342693,6 +355175,7 @@ + @@ -342704,6 +355187,7 @@ + @@ -342713,11 +355197,12 @@ + - + @@ -342726,10 +355211,11 @@ + - + @@ -342737,6 +355223,8 @@ + + @@ -342747,15 +355235,17 @@ - + - + + + @@ -342793,6 +355283,119 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -342815,32 +355418,13 @@ - - - - - - - - - - - - - - - - - - - - - + + @@ -342852,8 +355436,10 @@ + + @@ -342880,6 +355466,8 @@ + + @@ -342892,6 +355480,8 @@ + + @@ -342969,22 +355559,15 @@ + + - - - - - - - - - - + @@ -343068,6 +355651,22 @@ + + + + + + + + + + + + + + + + @@ -343160,6 +355759,7 @@ + @@ -343213,6 +355813,24 @@ + + + + + + + + + + + + + + + + + + @@ -343283,6 +355901,23 @@ + + + + + + + + + + + + + + + + + @@ -343308,21 +355943,11 @@ - + - - - - - - - - - - - + @@ -343442,6 +356067,21 @@ + + + + + + + + + + + + + + + @@ -343495,6 +356135,20 @@ + + + + + + + + + + + + + + @@ -343518,17 +356172,7 @@ - - - - - - - - - - - + @@ -343701,7 +356345,7 @@ - + @@ -343711,6 +356355,7 @@ + @@ -343726,11 +356371,7 @@ - - - - - + @@ -343769,6 +356410,7 @@ + @@ -343783,9 +356425,11 @@ + + @@ -343911,18 +356555,8 @@ - - - - - - - - - - @@ -343963,6 +356597,9 @@ + + + @@ -343992,6 +356629,22 @@ + + + + + + + + + + + + + + + + @@ -344076,6 +356729,22 @@ + + + + + + + + + + + + + + + + @@ -344095,6 +356764,7 @@ + @@ -344111,6 +356781,7 @@ + @@ -344136,6 +356807,7 @@ + @@ -344233,6 +356905,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -344358,6 +357084,51 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -344415,6 +357186,102 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -344468,6 +357335,7 @@ + @@ -344531,6 +357399,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -344562,6 +357478,7 @@ + @@ -344573,7 +357490,12 @@ - + + + + + + @@ -344653,7 +357575,7 @@ - + @@ -344662,6 +357584,7 @@ + @@ -344806,24 +357729,6 @@ - - - - - - - - - - - - - - - - - - @@ -344893,6 +357798,7 @@ + @@ -344988,9 +357894,6 @@ - - - @@ -345079,6 +357982,24 @@ + + + + + + + + + + + + + + + + + + @@ -345213,6 +358134,7 @@ + @@ -345415,6 +358337,7 @@ + @@ -345462,7 +358385,7 @@ - + @@ -345599,6 +358522,29 @@ + + + + + + + + + + + + + + + + + + + + + + + @@ -345712,6 +358658,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -345737,6 +358717,9 @@ + + + @@ -345766,6 +358749,9 @@ + + + @@ -345798,6 +358784,9 @@ + + + @@ -345856,6 +358845,7 @@ + @@ -345928,6 +358918,14 @@ + + + + + + + + @@ -346825,6 +359823,22 @@ + + + + + + + + + + + + + + + + @@ -347824,6 +360838,10 @@ + + + + @@ -347836,6 +360854,10 @@ + + + + @@ -347848,6 +360870,10 @@ + + + + @@ -347856,6 +360882,92 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -349015,6 +362127,507 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -351727,6 +365340,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -354194,6 +367848,888 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -354763,6 +369299,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -354780,6 +369356,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -354801,6 +369397,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -355211,6 +369827,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -356487,6 +371123,10 @@ + + + + @@ -356497,6 +371137,10 @@ + + + + @@ -356507,6 +371151,10 @@ + + + + @@ -356635,6 +371283,10 @@ + + + + @@ -356646,6 +371298,10 @@ + + + + @@ -356657,6 +371313,10 @@ + + + + @@ -357023,8 +371683,10 @@ + + @@ -357046,6 +371708,25 @@ + + + + + + + + + + + + + + + + + + + @@ -357114,6 +371795,19 @@ + + + + + + + + + + + + + @@ -357823,6 +372517,14 @@ + + + + + + + + @@ -358190,7 +372892,7 @@ - + @@ -361046,7 +375748,7 @@ - + @@ -361770,6 +376472,18 @@ + + + + + + + + + + + + @@ -361796,7 +376510,7 @@ - + @@ -361906,7 +376620,7 @@ - + @@ -361959,6 +376673,12 @@ + + + + + + @@ -361970,6 +376690,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -361991,6 +376731,13 @@ + + + + + + + @@ -362030,6 +376777,10 @@ + + + + @@ -362260,6 +377011,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -362769,6 +377540,15 @@ + + + + + + + + + @@ -363205,11 +377985,28 @@ + + + + + + + + + + + + + + + + + @@ -365617,6 +380414,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -365943,12 +380761,30 @@ + + + + + + + + + + + + + + + + + + @@ -365960,6 +380796,17 @@ + + + + + + + + + + + @@ -365977,6 +380824,24 @@ + + + + + + + + + + + + + + + + + + @@ -366318,6 +381183,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -367959,7 +382896,7 @@ - + @@ -367972,7 +382909,7 @@ - + @@ -369213,6 +384150,202 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -369322,6 +384455,128 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -369507,6 +384762,829 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -370001,7 +386079,7 @@ - + @@ -370977,6 +387055,7 @@ + @@ -371017,6 +387096,7 @@ + @@ -371047,6 +387127,7 @@ + @@ -371094,6 +387175,7 @@ + @@ -371117,6 +387199,7 @@ + @@ -371157,6 +387240,7 @@ + @@ -371180,6 +387264,7 @@ + @@ -371237,6 +387322,7 @@ + @@ -371260,6 +387346,7 @@ + @@ -371283,6 +387370,7 @@ + @@ -373322,6 +389410,25 @@ + + + + + + + + + + + + + + + + + + + @@ -373481,11 +389588,113 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -373505,6 +389714,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -373525,6 +389755,29 @@ + + + + + + + + + + + + + + + + + + + + + + + @@ -373546,6 +389799,29 @@ + + + + + + + + + + + + + + + + + + + + + + + @@ -374336,6 +390612,223 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -379005,7 +395498,7 @@ - + @@ -380910,6 +397403,22 @@ + + + + + + + + + + + + + + + + @@ -381065,6 +397574,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -381176,6 +397714,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -381318,6 +397896,150 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -381385,9 +398107,13 @@ + + + + @@ -381585,6 +398311,22 @@ + + + + + + + + + + + + + + + + @@ -381660,6 +398402,22 @@ + + + + + + + + + + + + + + + + @@ -381975,6 +398733,51 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -382034,6 +398837,22 @@ + + + + + + + + + + + + + + + + @@ -382139,7 +398958,13 @@ - + + + + + + + @@ -382172,7 +398997,7 @@ - + @@ -382181,11 +399006,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -382271,7 +399131,7 @@ - + @@ -382280,11 +399140,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -382370,6 +399266,22 @@ + + + + + + + + + + + + + + + + @@ -382457,6 +399369,29 @@ + + + + + + + + + + + + + + + + + + + + + + + @@ -382538,6 +399473,22 @@ + + + + + + + + + + + + + + + + @@ -382585,6 +399536,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -382786,6 +399774,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -385773,6 +402798,202 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -387161,19 +404382,23 @@ - + - + + + + + @@ -387195,6 +404420,239 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -387301,6 +404759,29 @@ + + + + + + + + + + + + + + + + + + + + + + + @@ -387338,6 +404819,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -388206,6 +405715,595 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -393536,6 +411634,18 @@ + + + + + + + + + + + + @@ -393740,6 +411850,18 @@ + + + + + + + + + + + + @@ -394325,6 +412447,9 @@ + + + @@ -394373,8 +412498,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -394398,6 +412550,90 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -394416,6 +412652,29 @@ + + + + + + + + + + + + + + + + + + + + + + + @@ -394424,6 +412683,19 @@ + + + + + + + + + + + + + @@ -394641,7 +412913,7 @@ - + @@ -395029,7 +413301,7 @@ - + @@ -396400,6 +414672,9 @@ + + + @@ -396411,6 +414686,9 @@ + + + @@ -396577,6 +414855,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + @@ -397325,6 +415628,1967 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -397349,6 +417613,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -398284,6 +418569,115 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -398655,7 +419049,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -398776,6 +419203,86 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -398812,6 +419319,18 @@ + + + + + + + + + + + + @@ -398836,6 +419355,18 @@ + + + + + + + + + + + + @@ -398848,6 +419379,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -399348,7 +419951,7 @@ - + @@ -399696,6 +420299,19 @@ + + + + + + + + + + + + + @@ -399716,6 +420332,19 @@ + + + + + + + + + + + + + @@ -399748,7 +420377,7 @@ - + @@ -402231,7 +422860,7 @@ - + @@ -405696,7 +426325,11 @@ - + + + + + @@ -405880,15 +426513,22 @@ + + + + + + + @@ -405904,15 +426544,21 @@ + + + + + + @@ -405922,10 +426568,13 @@ + + + @@ -406143,6 +426792,24 @@ + + + + + + + + + + + + + + + + + + @@ -406208,6 +426875,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -407510,6 +428197,24 @@ + + + + + + + + + + + + + + + + + + @@ -407584,6 +428289,8 @@ + + @@ -408141,6 +428848,9 @@ + + + @@ -408154,6 +428864,7 @@ + @@ -408233,6 +428944,23 @@ + + + + + + + + + + + + + + + + + @@ -408412,6 +429140,9 @@ + + + @@ -408447,6 +429178,9 @@ + + + @@ -408456,6 +429190,7 @@ + @@ -408687,9 +429422,9 @@ - + @@ -408703,7 +429438,7 @@ - + @@ -408713,9 +429448,9 @@ - + @@ -408729,7 +429464,7 @@ - + @@ -408739,9 +429474,9 @@ - + @@ -408755,9 +429490,9 @@ - + @@ -408771,7 +429506,7 @@ - + @@ -408790,6 +429525,24 @@ + + + + + + + + + + + + + + + + + + @@ -408911,6 +429664,24 @@ + + + + + + + + + + + + + + + + + + @@ -409013,10 +429784,10 @@ - + @@ -409029,9 +429800,27 @@ + + + + + + + + + + + + + + + + + + - + @@ -409041,7 +429830,7 @@ - + @@ -409049,12 +429838,30 @@ + + + + + + + + + + + + + + + + + + - + @@ -409069,7 +429876,7 @@ - + @@ -409077,6 +429884,24 @@ + + + + + + + + + + + + + + + + + + @@ -409087,11 +429912,27 @@ + + + + + + + + + + + + + + + + - + @@ -409105,7 +429946,7 @@ - + @@ -409115,7 +429956,7 @@ - + @@ -409123,9 +429964,25 @@ + + + + + + + + + + + + + + + + - + @@ -409140,9 +429997,307 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -409155,6 +430310,7 @@ + @@ -409406,6 +430562,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + @@ -409483,6 +430664,15 @@ + + + + + + + + + @@ -409495,7 +430685,7 @@ - + @@ -409512,7 +430702,7 @@ - + @@ -409530,6 +430720,7 @@ + @@ -409709,6 +430900,7 @@ + @@ -409724,6 +430916,7 @@ + @@ -409972,9 +431165,9 @@ - + @@ -409988,7 +431181,7 @@ - + @@ -409998,9 +431191,9 @@ - + @@ -410014,7 +431207,7 @@ - + @@ -410024,9 +431217,9 @@ - + @@ -410040,9 +431233,9 @@ - + @@ -410056,7 +431249,7 @@ - + @@ -410064,6 +431257,24 @@ + + + + + + + + + + + + + + + + + + @@ -410171,6 +431382,24 @@ + + + + + + + + + + + + + + + + + + @@ -410307,10 +431536,10 @@ - + @@ -410323,9 +431552,27 @@ + + + + + + + + + + + + + + + + + + - + @@ -410335,7 +431582,7 @@ - + @@ -410343,12 +431590,30 @@ + + + + + + + + + + + + + + + + + + - + @@ -410363,7 +431628,7 @@ - + @@ -410371,6 +431636,24 @@ + + + + + + + + + + + + + + + + + + @@ -410388,11 +431671,27 @@ + + + + + + + + + + + + + + + + - + @@ -410406,7 +431705,7 @@ - + @@ -410416,7 +431715,7 @@ - + @@ -410424,9 +431723,25 @@ + + + + + + + + + + + + + + + + - + @@ -410468,6 +431783,9 @@ + + + @@ -410497,6 +431815,7 @@ + @@ -410508,6 +431827,9 @@ + + + @@ -410548,6 +431870,7 @@ + @@ -410678,11 +432001,15 @@ + + + + @@ -410693,6 +432020,8 @@ + + @@ -410701,6 +432030,10 @@ + + + + @@ -410710,23 +432043,35 @@ + + + + + + + + + + + + @@ -410734,6 +432079,9 @@ + + + @@ -410763,6 +432111,9 @@ + + + @@ -410777,6 +432128,7 @@ + @@ -410790,6 +432142,9 @@ + + + @@ -410807,6 +432162,9 @@ + + + @@ -410862,6 +432220,7 @@ + @@ -410874,6 +432233,9 @@ + + + @@ -410888,6 +432250,7 @@ + @@ -413511,6 +434874,16 @@ + + + + + + + + + + @@ -413533,6 +434906,16 @@ + + + + + + + + + + @@ -416028,17 +437411,11 @@ - + - + - - - - - - @@ -417867,6 +439244,22 @@ + + + + + + + + + + + + + + + + @@ -420156,6 +441549,789 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -420343,6 +442519,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -420357,6 +442565,21 @@ + + + + + + + + + + + + + + + @@ -420559,6 +442782,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -420588,6 +442839,66 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -420652,6 +442963,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -420662,6 +443002,17 @@ + + + + + + + + + + + @@ -420680,6 +443031,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -420733,6 +443119,29 @@ + + + + + + + + + + + + + + + + + + + + + + + @@ -421753,6 +444162,8 @@ + + @@ -422249,6 +444660,17 @@ + + + + + + + + + + + @@ -422273,6 +444695,18 @@ + + + + + + + + + + + + @@ -422329,6 +444763,135 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -424342,6 +446905,28 @@ + + + + + + + + + + + + + + + + + + + + + + @@ -424394,6 +446979,8 @@ + + @@ -424449,6 +447036,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -424466,6 +447125,91 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -425492,7 +448236,7 @@ - + @@ -425514,7 +448258,7 @@ - + @@ -426500,6 +449244,24 @@ + + + + + + + + + + + + + + + + + + @@ -426632,6 +449394,24 @@ + + + + + + + + + + + + + + + + + + @@ -427856,7 +450636,7 @@ - + @@ -431075,7 +453855,7 @@ - + @@ -431181,7 +453961,7 @@ - + @@ -432968,6 +455748,14 @@ + + + + + + + + @@ -434712,6 +457500,8 @@ + + @@ -435317,6 +458107,8 @@ + + @@ -437891,6 +460683,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -438452,6 +461287,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -440803,6 +463681,24 @@ + + + + + + + + + + + + + + + + + + @@ -441076,6 +463972,24 @@ + + + + + + + + + + + + + + + + + + @@ -441330,7 +464244,7 @@ - + @@ -441452,6 +464366,20 @@ + + + + + + + + + + + + + + @@ -441663,6 +464591,8 @@ + + @@ -442750,6 +465680,22 @@ + + + + + + + + + + + + + + + + @@ -442831,6 +465777,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -443797,7 +466763,7 @@ - + @@ -443889,7 +466855,7 @@ - + @@ -443946,7 +466912,7 @@ - + @@ -445213,7 +468179,7 @@ - + @@ -445478,6 +468444,24 @@ + + + + + + + + + + + + + + + + + + @@ -446297,6 +469281,10 @@ + + + + @@ -447136,6 +470124,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -447721,7 +470743,7 @@ - + @@ -447865,7 +470887,7 @@ - + @@ -448118,6 +471140,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -448203,6 +471251,23 @@ + + + + + + + + + + + + + + + + + @@ -448457,6 +471522,15 @@ + + + + + + + + + @@ -448475,6 +471549,20 @@ + + + + + + + + + + + + + + @@ -448623,6 +471711,80 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -448894,6 +472056,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -449899,7 +473087,7 @@ - + @@ -452344,6 +475532,14 @@ + + + + + + + + @@ -452643,6 +475839,23 @@ + + + + + + + + + + + + + + + + + @@ -452803,6 +476016,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -452816,6 +476058,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -452829,6 +476106,147 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -452857,6 +476275,108 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -452905,7 +476425,7 @@ - + @@ -452931,6 +476451,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -452949,6 +476516,65 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -453020,6 +476646,23 @@ + + + + + + + + + + + + + + + + + @@ -453057,6 +476700,73 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -453243,6 +476953,14 @@ + + + + + + + + @@ -455146,6 +478864,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + @@ -455165,6 +478908,58 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -455185,6 +478980,24 @@ + + + + + + + + + + + + + + + + + + @@ -455198,6 +479011,23 @@ + + + + + + + + + + + + + + + + + @@ -455241,6 +479071,110 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -455289,6 +479223,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -457379,6 +481333,136 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -457396,6 +481480,175 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -457403,6 +481656,97 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -457425,6 +481769,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -457432,6 +481893,19 @@ + + + + + + + + + + + + + @@ -457443,6 +481917,188 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -457471,6 +482127,383 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -457478,6 +482511,344 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -457485,6 +482856,409 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -457600,6 +483374,58 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -457707,6 +483533,466 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -457714,6 +484000,146 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -457746,6 +484172,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -457761,6 +484307,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -457794,6 +484380,426 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -457805,6 +484811,286 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -457853,6 +485139,166 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -457870,6 +485316,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -457904,6 +485390,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -457984,6 +485490,166 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -458004,6 +485670,186 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -458043,6 +485889,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -458080,6 +485946,246 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -458111,6 +486217,86 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -458159,6 +486345,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -458183,6 +486489,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -458227,6 +486573,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -458295,6 +486661,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -458326,6 +486712,246 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -458462,6 +487088,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -458534,6 +487180,166 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -458592,6 +487398,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -458623,6 +487469,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -461285,7 +490171,7 @@ - + @@ -462601,6 +491487,8 @@ + + @@ -468427,7 +497315,7 @@ - + @@ -468791,7 +497679,7 @@ - + @@ -468818,7 +497706,7 @@ - + @@ -468842,7 +497730,7 @@ - + @@ -468866,7 +497754,7 @@ - + @@ -469551,7 +498439,7 @@ - + @@ -469675,7 +498563,7 @@ - + @@ -470314,7 +499202,7 @@ - + @@ -473962,6 +502850,9 @@ + + + @@ -473974,6 +502865,9 @@ + + + @@ -473984,11 +502878,17 @@ + + + + + + @@ -474132,6 +503032,10 @@ + + + + @@ -474361,6 +503265,18 @@ + + + + + + + + + + + + @@ -474395,6 +503311,18 @@ + + + + + + + + + + + + @@ -474419,6 +503347,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -474489,6 +503458,18 @@ + + + + + + + + + + + + @@ -474517,6 +503498,66 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -474721,6 +503762,18 @@ + + + + + + + + + + + + @@ -474910,6 +503963,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -476216,6 +505303,7 @@ + @@ -476223,6 +505311,7 @@ + @@ -479038,6 +508127,8 @@ + + @@ -479295,6 +508386,80 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -479622,6 +508787,23 @@ + + + + + + + + + + + + + + + + + @@ -479638,6 +508820,25 @@ + + + + + + + + + + + + + + + + + + + @@ -479789,7 +508990,7 @@ - + @@ -479821,6 +509022,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -481432,6 +510680,23 @@ + + + + + + + + + + + + + + + + + @@ -484339,17 +513604,11 @@ - + - + - - - - - - @@ -484405,6 +513664,7 @@ + @@ -484492,17 +513752,11 @@ - + - + - - - - - - @@ -484670,17 +513924,11 @@ - + - + - - - - - - @@ -484920,17 +514168,11 @@ - + - + - - - - - - @@ -485314,17 +514556,11 @@ - + - + - - - - - - @@ -485777,17 +515013,11 @@ - + - + - - - - - - @@ -485937,17 +515167,11 @@ - + - + - - - - - - @@ -486133,17 +515357,11 @@ - + - + - - - - - - @@ -486383,17 +515601,11 @@ - + - + - - - - - - @@ -486615,17 +515827,11 @@ - + - + - - - - - - @@ -486847,17 +516053,11 @@ - + - + - - - - - - @@ -487079,17 +516279,11 @@ - + - + - - - - - - @@ -487311,17 +516505,11 @@ - + - + - - - - - - @@ -487597,17 +516785,11 @@ - + - + - - - - - - @@ -487793,17 +516975,11 @@ - + - + - - - - - - @@ -487953,17 +517129,11 @@ - + - + - - - - - - @@ -488491,17 +517661,11 @@ - + - + - - - - - - @@ -488921,17 +518085,11 @@ - + - + - - - - - - @@ -489261,17 +518419,11 @@ - + - + - - - - - - @@ -489583,17 +518735,11 @@ - + - + - - - - - - @@ -489977,17 +519123,11 @@ - + - + - - - - - - @@ -490666,6 +519806,8 @@ + + @@ -491779,6 +520921,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -492074,6 +521242,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -492158,6 +521346,166 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -492175,6 +521523,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -492255,6 +521643,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -492321,6 +521729,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -492383,6 +521811,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -492417,6 +521865,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -492431,6 +521919,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -492441,6 +521949,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -492499,6 +522027,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -492581,6 +522129,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -492830,6 +522426,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -492925,7 +522557,7 @@ - + @@ -492936,6 +522568,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -494164,6 +523843,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -499130,7 +528852,7 @@ - + @@ -500205,6 +529927,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -500568,6 +530331,7 @@ + @@ -500674,6 +530438,25 @@ + + + + + + + + + + + + + + + + + + + @@ -501008,6 +530791,7 @@ + @@ -501600,6 +531384,7 @@ + @@ -501771,6 +531556,7 @@ + @@ -501895,6 +531681,88 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -501913,6 +531781,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -501984,6 +531895,25 @@ + + + + + + + + + + + + + + + + + + + @@ -502283,6 +532213,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -502386,6 +532358,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -502996,6 +533004,7 @@ + @@ -503332,6 +533341,8 @@ + + @@ -503344,7 +533355,7 @@ - + @@ -503433,6 +533444,8 @@ + + @@ -503447,6 +533460,8 @@ + + @@ -503459,6 +533474,8 @@ + + @@ -503468,6 +533485,8 @@ + + @@ -503482,6 +533501,8 @@ + + @@ -503494,6 +533515,8 @@ + + @@ -503503,6 +533526,8 @@ + + @@ -503517,6 +533542,8 @@ + + @@ -503529,6 +533556,8 @@ + + @@ -503538,6 +533567,8 @@ + + @@ -503553,6 +533584,8 @@ + + @@ -503566,6 +533599,8 @@ + + @@ -503575,6 +533610,8 @@ + + @@ -503590,6 +533627,8 @@ + + @@ -503603,6 +533642,8 @@ + + @@ -503639,8 +533680,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -503656,6 +533742,8 @@ + + @@ -503669,6 +533757,8 @@ + + @@ -503904,6 +533994,8 @@ + + @@ -503970,6 +534062,8 @@ + + @@ -506739,6 +536833,8 @@ + + @@ -507020,7 +537116,7 @@ - + @@ -507035,6 +537131,99 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -507632,6 +537821,177 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -512669,7 +543029,7 @@ - + @@ -512692,7 +543052,7 @@ - + @@ -514066,7 +544426,7 @@ - + @@ -514078,7 +544438,7 @@ - + @@ -514127,9 +544487,32 @@ + + + + + + + + + + + + + + + + + + + + + + + - + @@ -514141,7 +544524,7 @@ - + @@ -514216,7 +544599,7 @@ - + @@ -521181,7 +551564,7 @@ - + @@ -521503,7 +551886,7 @@ - + @@ -521667,7 +552050,7 @@ - + @@ -522388,7 +552771,7 @@ - + @@ -522813,7 +553196,7 @@ - + @@ -528332,7 +558715,7 @@ - + @@ -530318,6 +560701,17 @@ + + + + + + + + + + + @@ -530347,6 +560741,21 @@ + + + + + + + + + + + + + + + @@ -532344,6 +562753,23 @@ + + + + + + + + + + + + + + + + + @@ -532431,6 +562857,23 @@ + + + + + + + + + + + + + + + + + @@ -538827,6 +569270,175 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -539242,6 +569854,23 @@ + + + + + + + + + + + + + + + + + @@ -540793,6 +571422,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -540834,6 +571502,910 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -540977,6 +572549,110 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -540999,6 +572675,18 @@ + + + + + + + + + + + + @@ -542155,6 +573843,66 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -543833,6 +575581,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -544239,6 +576007,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -544839,6 +576627,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -545239,6 +577067,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -545481,6 +577329,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -545733,6 +577601,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -545808,6 +577716,18 @@ + + + + + + + + + + + + @@ -554567,6 +586487,17 @@ + + + + + + + + + + + @@ -554682,6 +586613,17 @@ + + + + + + + + + + + @@ -554753,6 +586695,17 @@ + + + + + + + + + + + @@ -554775,6 +586728,17 @@ + + + + + + + + + + + @@ -554837,6 +586801,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + @@ -554941,6 +586929,17 @@ + + + + + + + + + + + @@ -555053,6 +587052,24 @@ + + + + + + + + + + + + + + + + + + @@ -555071,6 +587088,424 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -555084,12 +587519,182 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -555198,27 +587803,11 @@ - - - - - - - - - - - - - - - - @@ -555265,6 +587854,22 @@ + + + + + + + + + + + + + + + + @@ -555317,7 +587922,6 @@ - @@ -555325,6 +587929,25 @@ + + + + + + + + + + + + + + + + + + + @@ -555334,6 +587957,29 @@ + + + + + + + + + + + + + + + + + + + + + + + @@ -555352,6 +587998,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + @@ -555691,6 +588361,24 @@ + + + + + + + + + + + + + + + + + + @@ -555802,6 +588490,29 @@ + + + + + + + + + + + + + + + + + + + + + + + @@ -556775,7 +589486,6 @@ - @@ -556786,6 +589496,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -556812,6 +589568,29 @@ + + + + + + + + + + + + + + + + + + + + + + + @@ -556830,6 +589609,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + @@ -556847,6 +589650,29 @@ + + + + + + + + + + + + + + + + + + + + + + + @@ -556927,6 +589753,13 @@ + + + + + + + @@ -556948,6 +589781,13 @@ + + + + + + + @@ -557061,27 +589901,11 @@ - - - - - - - - - - - - - - - - @@ -557196,33 +590020,51 @@ - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -557350,6 +590192,29 @@ + + + + + + + + + + + + + + + + + + + + + + + @@ -557410,9 +590275,9 @@ - - - + + + @@ -557423,6 +590288,9 @@ + + + @@ -557446,6 +590314,29 @@ + + + + + + + + + + + + + + + + + + + + + + + @@ -557555,6 +590446,29 @@ + + + + + + + + + + + + + + + + + + + + + + + @@ -558253,6 +591167,182 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -558343,7 +591433,9 @@ - + + + @@ -558353,6 +591445,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -558375,6 +591503,9 @@ + + + @@ -558386,6 +591517,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -558434,6 +591592,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -558458,6 +591647,9 @@ + + + @@ -558471,6 +591663,24 @@ + + + + + + + + + + + + + + + + + + @@ -558587,6 +591797,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -558635,7 +591885,21 @@ + + + + + + + + + + + + + + @@ -558722,6 +591986,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + @@ -558729,7 +592017,9 @@ - + + + @@ -558790,6 +592080,9 @@ + + + @@ -558801,6 +592094,9 @@ + + + @@ -558808,6 +592104,9 @@ + + + @@ -558819,6 +592118,9 @@ + + + @@ -559004,6 +592306,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -559058,6 +592408,9 @@ + + + @@ -559101,6 +592454,24 @@ + + + + + + + + + + + + + + + + + + @@ -559259,6 +592630,13 @@ + + + + + + + @@ -559356,7 +592734,9 @@ - + + + @@ -559367,6 +592747,28 @@ + + + + + + + + + + + + + + + + + + + + + + @@ -559393,8 +592795,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -559405,6 +592833,9 @@ + + + @@ -559463,6 +592894,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + @@ -559502,6 +592957,9 @@ + + + @@ -559517,6 +592975,9 @@ + + + @@ -559530,6 +592991,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -559640,6 +593137,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -559664,6 +593201,159 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -559749,15 +593439,6 @@ - - - - - - - - - @@ -559766,6 +593447,29 @@ + + + + + + + + + + + + + + + + + + + + + + + @@ -559775,9 +593479,9 @@ - - - + + + @@ -559788,6 +593492,9 @@ + + + @@ -559833,6 +593540,29 @@ + + + + + + + + + + + + + + + + + + + + + + + @@ -559983,6 +593713,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + @@ -560060,7 +593815,9 @@ - + + + @@ -560080,6 +593837,24 @@ + + + + + + + + + + + + + + + + + + @@ -560107,6 +593882,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + @@ -560144,6 +593943,24 @@ + + + + + + + + + + + + + + + + + + @@ -560283,6 +594100,20 @@ + + + + + + + + + + + + + + @@ -560588,6 +594419,18 @@ + + + + + + + + + + + + @@ -562581,6 +596424,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -562645,6 +596529,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -562845,6 +596770,8 @@ + + @@ -562892,13 +596819,32 @@ + + + + - - - + + + + + + + + + + + + + + + + + + @@ -563253,6 +597199,18 @@ + + + + + + + + + + + + @@ -563710,6 +597668,108 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -563745,6 +597805,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -564072,6 +598171,29 @@ + + + + + + + + + + + + + + + + + + + + + + + @@ -564115,6 +598237,24 @@ + + + + + + + + + + + + + + + + + + @@ -564495,6 +598635,189 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -564548,6 +598871,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -565779,6 +600137,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -567432,6 +601822,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -568410,6 +602820,13 @@ + + + + + + + @@ -568620,6 +603037,18 @@ + + + + + + + + + + + + @@ -569399,6 +603828,23 @@ + + + + + + + + + + + + + + + + + @@ -569582,6 +604028,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -569869,6 +604344,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -569951,6 +604456,24 @@ + + + + + + + + + + + + + + + + + + @@ -570216,6 +604739,21 @@ + + + + + + + + + + + + + + + @@ -571783,6 +606321,23 @@ + + + + + + + + + + + + + + + + + @@ -571828,6 +606383,24 @@ + + + + + + + + + + + + + + + + + + @@ -576403,6 +610976,20 @@ + + + + + + + + + + + + + + @@ -576501,6 +611088,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -577565,6 +612180,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -577640,6 +612290,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -577782,6 +612467,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -577993,10 +612710,87 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -578114,11 +612908,13 @@ + + @@ -578166,6 +612962,13 @@ + + + + + + + @@ -578460,6 +613263,16 @@ + + + + + + + + + + @@ -578531,6 +613344,80 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -578637,6 +613524,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -578699,6 +613624,9 @@ + + + @@ -578814,6 +613742,29 @@ + + + + + + + + + + + + + + + + + + + + + + + @@ -579045,12 +613996,14 @@ + + @@ -579152,6 +614105,24 @@ + + + + + + + + + + + + + + + + + + @@ -580379,6 +615350,13 @@ + + + + + + + @@ -580986,6 +615964,424 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -581104,6 +616500,28 @@ + + + + + + + + + + + + + + + + + + + + + + @@ -581278,6 +616696,18 @@ + + + + + + + + + + + + @@ -581383,6 +616813,170 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -581495,6 +617089,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -582274,6 +617888,10 @@ + + + + @@ -582453,6 +618071,83 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -582713,6 +618408,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + @@ -582858,6 +618577,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -582940,6 +618695,18 @@ + + + + + + + + + + + + @@ -583136,6 +618903,16 @@ + + + + + + + + + + @@ -583160,6 +618937,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -583232,6 +619056,102 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -583679,6 +619599,97 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -583687,6 +619698,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + @@ -583874,6 +619909,332 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -584094,6 +620455,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -584618,6 +621012,28 @@ + + + + + + + + + + + + + + + + + + + + + + @@ -584684,6 +621100,105 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -585247,6 +621762,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -585343,6 +621891,15 @@ + + + + + + + + + @@ -585392,6 +621949,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -585837,6 +622430,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + @@ -586202,6 +622819,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + @@ -586253,6 +622895,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + @@ -586438,6 +623105,322 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -586449,12 +623432,28 @@ + + + + + + + + + + + + + + + + - + @@ -586516,6 +623515,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + @@ -586523,6 +623547,56 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -587060,16 +624134,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + @@ -587079,29 +624177,85 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -587193,6 +624347,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -587504,6 +624686,19 @@ + + + + + + + + + + + + + @@ -587519,6 +624714,362 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -587591,6 +625142,14 @@ + + + + + + + + @@ -587683,6 +625242,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -587907,6 +625493,20 @@ + + + + + + + + + + + + + + @@ -587921,6 +625521,94 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -587986,6 +625674,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + @@ -588241,6 +625954,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + @@ -588320,11 +626058,163 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -588640,12 +626530,108 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -588712,6 +626698,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -588727,6 +626740,80 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -588745,6 +626832,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -588754,6 +626870,15 @@ + + + + + + + + + @@ -588763,6 +626888,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -588772,6 +626938,24 @@ + + + + + + + + + + + + + + + + + + @@ -588936,23 +627120,20 @@ + + - - - + - - - @@ -588970,6 +627151,14 @@ + + + + + + + + @@ -588980,6 +627169,14 @@ + + + + + + + + @@ -588989,6 +627186,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -588997,6 +627242,14 @@ + + + + + + + + @@ -589289,6 +627542,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -589346,6 +627628,202 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -589381,6 +627859,14 @@ + + + + + + + + @@ -589504,6 +627990,25 @@ + + + + + + + + + + + + + + + + + + + @@ -589582,6 +628087,21 @@ + + + + + + + + + + + + + + + @@ -589596,6 +628116,20 @@ + + + + + + + + + + + + + + @@ -589610,6 +628144,20 @@ + + + + + + + + + + + + + + @@ -589631,6 +628179,219 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -589673,6 +628434,14 @@ + + + + + + + + @@ -589743,6 +628512,198 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -589815,6 +628776,25 @@ + + + + + + + + + + + + + + + + + + + @@ -590041,10 +629021,26 @@ + + + + + + + + + + + + + + + - + + @@ -590068,6 +629064,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -590095,6 +629120,20 @@ + + + + + + + + + + + + + + @@ -590125,6 +629164,21 @@ + + + + + + + + + + + + + + + @@ -590138,6 +629192,96 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -590473,6 +629617,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -591058,6 +630245,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -591790,6 +631023,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + @@ -591975,6 +631233,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -592277,6 +631576,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + @@ -592540,7 +631864,7 @@ - + @@ -592565,11 +631889,58 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -592579,8 +631950,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -593064,6 +632462,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -593746,6 +633185,14 @@ + + + + + + + + @@ -593767,6 +633214,25 @@ + + + + + + + + + + + + + + + + + + + @@ -593829,6 +633295,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + @@ -593887,6 +633378,56 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -593913,7 +633454,7 @@ - + @@ -594579,6 +634120,147 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -594665,6 +634347,24 @@ + + + + + + + + + + + + + + + + + + @@ -594737,6 +634437,96 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -595642,16 +635432,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + @@ -595661,29 +635475,85 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -600729,6 +640599,77 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -600745,6 +640686,23 @@ + + + + + + + + + + + + + + + + + @@ -601552,6 +641510,1779 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -601826,6 +643557,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -602016,6 +643787,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -602045,6 +643856,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -602242,6 +644093,22 @@ + + + + + + + + + + + + + + + + @@ -602268,6 +644135,20 @@ + + + + + + + + + + + + + + @@ -602360,6 +644241,139 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -602915,6 +644929,17 @@ + + + + + + + + + + + @@ -602930,6 +644955,16 @@ + + + + + + + + + + @@ -603503,6 +645538,24 @@ + + + + + + + + + + + + + + + + + + @@ -604390,6 +646443,22 @@ + + + + + + + + + + + + + + + + @@ -604414,6 +646483,22 @@ + + + + + + + + + + + + + + + + @@ -604571,6 +646656,17 @@ + + + + + + + + + + + @@ -604579,6 +646675,16 @@ + + + + + + + + + + @@ -604856,6 +646962,17 @@ + + + + + + + + + + + @@ -604885,6 +647002,21 @@ + + + + + + + + + + + + + + + @@ -605017,6 +647149,7 @@ + @@ -605083,6 +647216,22 @@ + + + + + + + + + + + + + + + + @@ -605613,6 +647762,152 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -606079,6 +648374,24 @@ + + + + + + + + + + + + + + + + + + @@ -606408,6 +648721,22 @@ + + + + + + + + + + + + + + + + @@ -606580,10 +648909,28 @@ + + + + + + + + + + + + + + + + + + @@ -608052,7 +650399,7 @@ - + @@ -608314,6 +650661,295 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -608478,6 +651114,22 @@ + + + + + + + + + + + + + + + + @@ -609044,6 +651696,149 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -609291,6 +652086,127 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -609375,6 +652291,29 @@ + + + + + + + + + + + + + + + + + + + + + + + @@ -609649,6 +652588,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -609852,6 +652829,17 @@ + + + + + + + + + + + @@ -609867,6 +652855,16 @@ + + + + + + + + + + @@ -609898,6 +652896,17 @@ + + + + + + + + + + + @@ -609913,6 +652922,16 @@ + + + + + + + + + + @@ -609944,6 +652963,17 @@ + + + + + + + + + + + @@ -609959,6 +652989,16 @@ + + + + + + + + + + @@ -609990,6 +653030,17 @@ + + + + + + + + + + + @@ -610005,6 +653056,16 @@ + + + + + + + + + + @@ -611129,6 +654190,22 @@ + + + + + + + + + + + + + + + + @@ -611206,6 +654283,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -611219,6 +654331,7 @@ + @@ -611717,12 +654830,31 @@ + + + + + + + + + + + + + + + + + + + @@ -611763,6 +654895,17 @@ + + + + + + + + + + + @@ -611770,6 +654913,18 @@ + + + + + + + + + + + + @@ -612056,6 +655211,17 @@ + + + + + + + + + + + @@ -612063,6 +655229,12 @@ + + + + + + @@ -612098,6 +655270,25 @@ + + + + + + + + + + + + + + + + + + + @@ -612195,6 +655386,17 @@ + + + + + + + + + + + @@ -612202,6 +655404,18 @@ + + + + + + + + + + + + @@ -612284,6 +655498,23 @@ + + + + + + + + + + + + + + + + + @@ -612314,6 +655545,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -612326,6 +655585,1640 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -613682,6 +658575,7 @@ + @@ -613855,6 +658749,17 @@ + + + + + + + + + + + @@ -613870,6 +658775,16 @@ + + + + + + + + + + @@ -613999,12 +658914,31 @@ + + + + + + + + + + + + + + + + + + + @@ -614120,6 +659054,13 @@ + + + + + + + @@ -614133,6 +659074,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -617899,6 +662872,159 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -621356,7 +666482,7 @@ - + @@ -621676,7 +666802,7 @@ - + @@ -624095,6 +669221,24 @@ + + + + + + + + + + + + + + + + + + @@ -624466,6 +669610,14 @@ + + + + + + + + @@ -625187,6 +670339,80 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -626552,7 +671778,7 @@ - + @@ -629123,7 +674349,7 @@ - + @@ -629406,6 +674632,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + @@ -629658,6 +674908,7 @@ + @@ -629666,6 +674917,7 @@ + @@ -629675,6 +674927,7 @@ + @@ -629697,6 +674950,7 @@ + @@ -629706,7 +674960,7 @@ - + @@ -629714,8 +674968,9 @@ - + + @@ -629931,6 +675186,18 @@ + + + + + + + + + + + + @@ -629980,6 +675247,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -629994,6 +675282,20 @@ + + + + + + + + + + + + + + @@ -630328,7 +675630,7 @@ - + @@ -630690,7 +675992,7 @@ - + @@ -630770,7 +676072,7 @@ - + @@ -631440,7 +676742,7 @@ - + @@ -634033,6 +679335,959 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -639534,13 +685789,68 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + + + + + + + + + + + + + + + + + + + + + + + @@ -639554,6 +685864,28 @@ + + + + + + + + + + + + + + + + + + + + + + @@ -639610,6 +685942,7 @@ + @@ -639620,9 +685953,9 @@ - + - + @@ -639704,6 +686037,7 @@ + @@ -639718,6 +686052,7 @@ + @@ -639820,6 +686155,7 @@ + @@ -639865,6 +686201,7 @@ + @@ -639932,6 +686269,7 @@ + @@ -639977,6 +686315,7 @@ + @@ -640038,6 +686377,7 @@ + @@ -640068,6 +686408,7 @@ + @@ -640126,6 +686467,7 @@ + @@ -640240,6 +686582,7 @@ + @@ -640368,6 +686711,7 @@ + @@ -640413,6 +686757,7 @@ + @@ -640480,6 +686825,7 @@ + @@ -640513,6 +686859,8 @@ + + @@ -640564,8 +686912,202 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -640624,6 +687166,138 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -640660,6 +687334,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -640689,6 +687395,208 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -640706,6 +687614,189 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -640737,6 +687828,7 @@ + @@ -640747,6 +687839,7 @@ + @@ -640757,6 +687850,7 @@ + @@ -640764,6 +687858,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -640779,10 +687937,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -640793,6 +687983,7 @@ + @@ -640803,6 +687994,7 @@ + @@ -640810,6 +688002,85 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -640868,8 +688139,77 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -640880,6 +688220,7 @@ + @@ -640900,6 +688241,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -640931,8 +688318,186 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -640953,12 +688518,29 @@ + + + + + + + + + + + + + + + + + @@ -640972,6 +688554,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -640979,10 +688604,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -640993,6 +688731,8 @@ + + @@ -641081,6 +688821,18 @@ + + + + + + + + + + + + @@ -641361,6 +689113,8 @@ + + @@ -641654,6 +689408,8 @@ + + @@ -641773,6 +689529,8 @@ + + @@ -641942,6 +689700,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -641950,6 +689748,8 @@ + + @@ -642077,6 +689877,84 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -642085,6 +689963,8 @@ + + @@ -642312,6 +690192,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -642320,6 +690242,8 @@ + + @@ -642483,6 +690407,8 @@ + + @@ -642643,6 +690569,8 @@ + + @@ -642762,6 +690690,8 @@ + + @@ -642881,6 +690811,8 @@ + + @@ -642992,6 +690924,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -643000,6 +690981,8 @@ + + @@ -643111,6 +691094,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -643119,6 +691145,8 @@ + + @@ -643221,6 +691249,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -643344,6 +691401,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -643433,8 +691519,431 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -643464,6 +691973,7 @@ + @@ -643660,6 +692170,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -643742,8 +692272,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -643767,6 +692336,7 @@ + @@ -643825,6 +692395,7 @@ + @@ -643875,6 +692446,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -643907,6 +692510,7 @@ + @@ -643922,8 +692526,25 @@ + + + + + + + + + + + + + + + + + @@ -643946,6 +692567,7 @@ + @@ -643978,6 +692600,7 @@ + @@ -644004,6 +692627,7 @@ + @@ -644025,6 +692649,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -644042,6 +692704,63 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -644093,8 +692812,136 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -644103,6 +692950,7 @@ + @@ -644113,6 +692961,7 @@ + @@ -644139,6 +692988,18 @@ + + + + + + + + + + + + @@ -644287,6 +693148,16 @@ + + + + + + + + + + @@ -644354,7 +693225,9 @@ + + @@ -644407,6 +693280,15 @@ + + + + + + + + + @@ -644414,6 +693296,17 @@ + + + + + + + + + + + @@ -644421,6 +693314,16 @@ + + + + + + + + + + @@ -644428,6 +693331,17 @@ + + + + + + + + + + + @@ -644436,6 +693350,15 @@ + + + + + + + + + @@ -644443,6 +693366,17 @@ + + + + + + + + + + + @@ -644450,6 +693384,15 @@ + + + + + + + + + @@ -644457,6 +693400,17 @@ + + + + + + + + + + + @@ -644488,6 +693442,12 @@ + + + + + + @@ -644514,6 +693474,23 @@ + + + + + + + + + + + + + + + + + @@ -644597,6 +693574,14 @@ + + + + + + + + @@ -644650,6 +693635,16 @@ + + + + + + + + + + @@ -644664,7 +693659,252 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -644672,10 +693912,11 @@ - + + @@ -644736,12 +693977,27 @@ + + + + + + + + + + + + + + + @@ -644755,6 +694011,19 @@ + + + + + + + + + + + + + @@ -644768,6 +694037,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + @@ -644816,6 +694110,8 @@ + + @@ -644824,6 +694120,16 @@ + + + + + + + + + + @@ -644834,6 +694140,16 @@ + + + + + + + + + + @@ -644844,6 +694160,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -644878,6 +694214,7 @@ + @@ -644891,8 +694228,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -644911,6 +694314,7 @@ + @@ -644932,6 +694336,7 @@ + @@ -644986,6 +694391,7 @@ + @@ -644996,6 +694402,7 @@ + @@ -645006,6 +694413,7 @@ + @@ -645225,6 +694633,7 @@ + @@ -645257,6 +694666,7 @@ + @@ -645429,6 +694839,23 @@ + + + + + + + + + + + + + + + + + @@ -645510,12 +694937,29 @@ + + + + + + + + + + + + + + + + + @@ -645608,6 +695052,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -645668,16 +695141,33 @@ + + + + + + + + + + + + + + + + + @@ -645699,6 +695189,7 @@ + @@ -645728,6 +695219,7 @@ + @@ -645783,6 +695275,7 @@ + @@ -645793,6 +695286,7 @@ + @@ -645932,6 +695426,18 @@ + + + + + + + + + + + + @@ -645945,6 +695451,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -645960,6 +695495,7 @@ + @@ -645985,6 +695521,7 @@ + @@ -646016,6 +695553,19 @@ + + + + + + + + + + + + + @@ -646065,6 +695615,7 @@ + @@ -646075,6 +695626,7 @@ + @@ -646085,6 +695637,7 @@ + @@ -646094,6 +695647,7 @@ + @@ -646104,6 +695658,7 @@ + @@ -646114,6 +695669,7 @@ + @@ -646131,6 +695687,7 @@ + @@ -646141,6 +695698,7 @@ + @@ -646157,8 +695715,20 @@ + + + + + + + + + + + + @@ -646169,6 +695739,7 @@ + @@ -646179,6 +695750,7 @@ + @@ -646188,6 +695760,7 @@ + @@ -646198,6 +695771,7 @@ + @@ -646208,6 +695782,7 @@ + @@ -646254,6 +695829,7 @@ + @@ -646291,6 +695867,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -646300,10 +695908,12 @@ + + @@ -646332,6 +695942,19 @@ + + + + + + + + + + + + + @@ -646379,8 +696002,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -646391,6 +696051,8 @@ + + @@ -646401,6 +696063,8 @@ + + @@ -646771,6 +696435,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -646869,6 +696565,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -646957,6 +696685,7 @@ + @@ -646967,6 +696696,7 @@ + @@ -646977,6 +696707,7 @@ + @@ -647013,6 +696744,136 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -647024,6 +696885,17 @@ + + + + + + + + + + + @@ -647064,6 +696936,25 @@ + + + + + + + + + + + + + + + + + + + @@ -647077,6 +696968,7 @@ + @@ -647087,6 +696979,7 @@ + @@ -647097,6 +696990,7 @@ + @@ -647133,6 +697027,17 @@ + + + + + + + + + + + @@ -647185,6 +697090,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -647209,6 +697167,20 @@ + + + + + + + + + + + + + + @@ -647307,12 +697279,28 @@ + + + + + + + + + + + + + + + + @@ -647320,12 +697308,28 @@ + + + + + + + + + + + + + + + + @@ -647611,6 +697615,7 @@ + @@ -647625,6 +697630,7 @@ + @@ -647693,6 +697699,7 @@ + @@ -647706,6 +697713,7 @@ + @@ -647859,6 +697867,17 @@ + + + + + + + + + + + @@ -647881,6 +697900,17 @@ + + + + + + + + + + + @@ -647941,10 +697971,11 @@ - + + @@ -648045,6 +698076,7 @@ + @@ -648058,6 +698090,7 @@ + @@ -648071,6 +698104,7 @@ + @@ -648132,6 +698166,7 @@ + @@ -648142,6 +698177,7 @@ + @@ -648152,6 +698188,7 @@ + @@ -648271,8 +698308,26 @@ + + + + + + + + + + + + + + + + + + @@ -648426,6 +698481,50 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -648603,6 +698702,443 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -648622,6 +699158,317 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -648644,11 +699491,19 @@ + + + + + + + + @@ -648657,6 +699512,14 @@ + + + + + + + + @@ -648714,6 +699577,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -648763,6 +699666,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -648806,6 +699730,450 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -648829,6 +700197,269 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -648850,7 +700481,7 @@ - + @@ -648860,7 +700491,7 @@ - + @@ -649034,6 +700665,24 @@ + + + + + + + + + + + + + + + + + + @@ -649141,6 +700790,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + @@ -649330,6 +701003,876 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -649348,6 +701891,649 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -649634,13 +702820,21 @@ + + + + + + + + + + + + + - - - - - @@ -649653,6 +702847,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + @@ -649662,13 +702881,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - @@ -649681,6 +702920,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + @@ -649690,8 +702954,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -649744,6 +703052,2679 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -653475,6 +709456,7 @@ + @@ -656018,7 +712000,7 @@ - + @@ -658417,6 +714399,7 @@ + @@ -661071,6 +717054,7 @@ + @@ -663520,6 +719504,7 @@ + @@ -663541,6 +719526,7 @@ + @@ -663573,6 +719559,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + @@ -664364,6 +720375,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -664578,6 +720610,7 @@ + @@ -664599,6 +720632,20 @@ + + + + + + + + + + + + + + @@ -665039,6 +721086,17 @@ + + + + + + + + + + + @@ -665069,6 +721127,18 @@ + + + + + + + + + + + + @@ -665126,6 +721196,17 @@ + + + + + + + + + + + @@ -665171,6 +721252,12 @@ + + + + + + @@ -665199,6 +721286,20 @@ + + + + + + + + + + + + + + @@ -665215,6 +721316,14 @@ + + + + + + + + @@ -665257,6 +721366,14 @@ + + + + + + + + @@ -665274,6 +721391,14 @@ + + + + + + + + @@ -665284,6 +721409,61 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -665430,6 +721610,318 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -666494,6 +722986,17 @@ + + + + + + + + + + + @@ -666631,6 +723134,231 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -667249,7 +723977,7 @@ - + @@ -667659,6 +724387,24 @@ + + + + + + + + + + + + + + + + + + @@ -667666,6 +724412,9 @@ + + + @@ -667684,6 +724433,23 @@ + + + + + + + + + + + + + + + + + @@ -667691,6 +724457,13 @@ + + + + + + + @@ -667705,6 +724478,10 @@ + + + + @@ -667743,6 +724520,10 @@ + + + + @@ -667751,6 +724532,24 @@ + + + + + + + + + + + + + + + + + + @@ -667758,6 +724557,10 @@ + + + + @@ -667772,6 +724575,11 @@ + + + + + @@ -667789,8 +724597,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -667805,6 +724662,803 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -667815,7 +725469,7 @@ - + @@ -667932,6 +725586,539 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -668487,6 +726674,375 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -668699,6 +727255,14 @@ + + + + + + + + @@ -669309,6 +727873,10 @@ + + + + @@ -669321,6 +727889,10 @@ + + + + @@ -669333,6 +727905,10 @@ + + + + @@ -669342,6 +727918,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -669822,8 +728439,94 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -669836,6 +728539,10 @@ + + + + @@ -669848,6 +728555,10 @@ + + + + @@ -669857,8 +728568,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -669871,6 +728627,10 @@ + + + + @@ -669883,6 +728643,51 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -669894,6 +728699,10 @@ + + + + @@ -669906,6 +728715,10 @@ + + + + @@ -669918,6 +728731,51 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -670107,6 +728965,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -670181,6 +729082,252 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -670323,6 +729470,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -670439,6 +729627,10 @@ + + + + @@ -670449,6 +729641,10 @@ + + + + @@ -670459,6 +729655,10 @@ + + + + @@ -670468,6 +729668,10 @@ + + + + @@ -670478,6 +729682,10 @@ + + + + @@ -670488,6 +729696,10 @@ + + + + @@ -670573,6 +729785,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -670633,6 +729866,9 @@ + + + @@ -670657,6 +729893,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -670664,6 +729920,13 @@ + + + + + + + @@ -670681,6 +729944,10 @@ + + + + @@ -670728,6 +729995,10 @@ + + + + @@ -670739,6 +730010,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -670746,6 +730038,10 @@ + + + + @@ -670763,6 +730059,11 @@ + + + + + @@ -670778,6 +730079,768 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -671054,6 +731117,29 @@ + + + + + + + + + + + + + + + + + + + + + + + @@ -671390,6 +731476,88 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -671442,6 +731610,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -671475,6 +731664,9 @@ + + + @@ -671499,6 +731691,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -671506,6 +731718,13 @@ + + + + + + + @@ -671523,6 +731742,10 @@ + + + + @@ -671570,6 +731793,10 @@ + + + + @@ -671581,6 +731808,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -671588,6 +731836,10 @@ + + + + @@ -671605,6 +731857,11 @@ + + + + + @@ -671881,14 +732138,254 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -671965,6 +732462,24 @@ + + + + + + + + + + + + + + + + + + @@ -672747,6 +733262,90 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -672801,6 +733400,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -672873,7 +733493,7 @@ - + @@ -672889,6 +733509,9 @@ + + + @@ -672913,6 +733536,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -673053,6 +733696,13 @@ + + + + + + + @@ -673070,6 +733720,10 @@ + + + + @@ -673117,6 +733771,10 @@ + + + + @@ -673128,6 +733786,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -673162,6 +733841,10 @@ + + + + @@ -673197,6 +733880,11 @@ + + + + + @@ -673337,6 +734025,129 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -673354,6 +734165,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -673908,6 +734762,349 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -673999,6 +735196,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -674102,6 +735319,13 @@ + + + + + + + @@ -674358,6 +735582,25 @@ + + + + + + + + + + + + + + + + + + + @@ -674540,6 +735783,29 @@ + + + + + + + + + + + + + + + + + + + + + + + @@ -674568,6 +735834,7 @@ + @@ -675947,6 +737214,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -676033,6 +737341,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -676161,6 +737510,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -676224,6 +737614,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -676256,6 +737687,88 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -676396,6 +737909,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -676681,6 +738220,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -676741,6 +738301,9 @@ + + + @@ -676765,6 +738328,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -676787,6 +738370,13 @@ + + + + + + + @@ -676804,6 +738394,10 @@ + + + + @@ -676851,6 +738445,10 @@ + + + + @@ -676862,6 +738460,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -676869,6 +738488,10 @@ + + + + @@ -676902,6 +738525,11 @@ + + + + + @@ -677253,6 +738881,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -677287,6 +738958,92 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -677473,6 +739230,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -677519,6 +739319,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + @@ -677565,6 +739390,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -678127,6 +739995,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -678187,6 +740076,9 @@ + + + @@ -678211,6 +740103,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -678264,6 +740176,13 @@ + + + + + + + @@ -678281,6 +740200,10 @@ + + + + @@ -678328,6 +740251,10 @@ + + + + @@ -678339,6 +740266,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -678346,6 +740294,10 @@ + + + + @@ -678363,6 +740315,11 @@ + + + + + @@ -678864,6 +740821,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -678942,6 +740942,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -678976,6 +740997,9 @@ + + + @@ -679000,6 +741024,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -679007,6 +741051,13 @@ + + + + + + + @@ -679024,6 +741075,10 @@ + + + + @@ -679071,6 +741126,10 @@ + + + + @@ -679082,6 +741141,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -679089,6 +741169,10 @@ + + + + @@ -679106,6 +741190,11 @@ + + + + + @@ -679829,6 +741918,90 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -679849,6 +742022,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -679869,6 +742063,9 @@ + + + @@ -679893,6 +742090,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -679913,6 +742147,13 @@ + + + + + + + @@ -679930,6 +742171,10 @@ + + + + @@ -679977,6 +742222,10 @@ + + + + @@ -679988,6 +742237,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -679995,6 +742265,10 @@ + + + + @@ -680012,6 +742286,11 @@ + + + + + @@ -680025,6 +742304,24 @@ + + + + + + + + + + + + + + + + + + @@ -680430,6 +742727,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -680521,6 +742861,81 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -681104,6 +743519,142 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -681119,6 +743670,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -681152,6 +743744,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -681274,6 +743887,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -681341,7 +743990,7 @@ - + @@ -681464,6 +744113,9 @@ + + + @@ -681493,6 +744145,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -681599,6 +744271,13 @@ + + + + + + + @@ -681614,6 +744293,76 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -681621,6 +744370,10 @@ + + + + @@ -681733,6 +744486,10 @@ + + + + @@ -681750,6 +744507,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -681811,6 +744589,10 @@ + + + + @@ -681826,6 +744608,24 @@ + + + + + + + + + + + + + + + + + + @@ -681927,6 +744727,11 @@ + + + + + @@ -681942,6 +744747,25 @@ + + + + + + + + + + + + + + + + + + + @@ -683830,6 +746654,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -684269,6 +747136,88 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -684802,6 +747751,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -684879,6 +747849,9 @@ + + + @@ -684903,6 +747876,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -684929,6 +747922,13 @@ + + + + + + + @@ -684946,6 +747946,10 @@ + + + + @@ -685004,6 +748008,10 @@ + + + + @@ -685015,6 +748023,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -685046,6 +748075,10 @@ + + + + @@ -685063,6 +748096,11 @@ + + + + + @@ -686255,6 +749293,315 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -686411,6 +749758,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + @@ -692604,6 +755976,25 @@ + + + + + + + + + + + + + + + + + + + @@ -692640,6 +756031,23 @@ + + + + + + + + + + + + + + + + + @@ -692810,6 +756218,328 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -692826,6 +756556,7 @@ + @@ -693474,7 +757205,7 @@ - + @@ -693509,7 +757240,7 @@ - + @@ -694664,7 +758395,7 @@ - + @@ -694700,7 +758431,7 @@ - + @@ -694821,6 +758552,24 @@ + + + + + + + + + + + + + + + + + + @@ -694900,6 +758649,21 @@ + + + + + + + + + + + + + + + @@ -695695,18 +759459,18 @@ - - - + + + - - - + + + @@ -695715,18 +759479,18 @@ - - - + + + - - - + + + @@ -696858,6 +760622,204 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -697158,6 +761120,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -697217,6 +761200,9 @@ + + + @@ -697241,6 +761227,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -697267,6 +761273,13 @@ + + + + + + + @@ -697284,6 +761297,10 @@ + + + + @@ -697331,6 +761348,10 @@ + + + + @@ -697342,6 +761363,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -697349,6 +761391,10 @@ + + + + @@ -697366,6 +761412,11 @@ + + + + + @@ -697497,6 +761548,25 @@ + + + + + + + + + + + + + + + + + + + @@ -697929,6 +761999,142 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -698502,6 +762708,50 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -698553,7 +762803,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + @@ -700059,6 +764333,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + @@ -700227,6 +764526,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + @@ -700552,6 +764876,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -703905,7 +768270,7 @@ - + @@ -703917,7 +768282,7 @@ - + @@ -705186,7 +769551,7 @@ - + @@ -705308,7 +769673,7 @@ - + @@ -705918,6 +770283,11 @@ + + + + + @@ -706340,7 +770710,7 @@ - + @@ -706947,11 +771317,15 @@ + + + + @@ -706961,11 +771335,13 @@ + + @@ -706975,11 +771351,15 @@ + + + + @@ -706989,12 +771369,16 @@ + + + + @@ -707005,11 +771389,15 @@ + + + + @@ -709630,11 +774018,7 @@ - - - - - + @@ -710790,6 +775174,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -711062,6 +775483,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -711151,6 +775603,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -712617,6 +777106,21 @@ + + + + + + + + + + + + + + + @@ -712628,6 +777132,22 @@ + + + + + + + + + + + + + + + + @@ -713728,6 +778248,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -713944,6 +778507,131 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -714019,6 +778707,23 @@ + + + + + + + + + + + + + + + + + @@ -714487,11 +779192,7 @@ - - - - - + @@ -714574,6 +779275,8 @@ + + @@ -714587,6 +779290,8 @@ + + @@ -714600,6 +779305,8 @@ + + @@ -715483,6 +780190,9 @@ + + + @@ -719352,6 +784062,364 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -719383,6 +784451,7 @@ + @@ -721529,6 +786598,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -722057,6 +787163,21 @@ + + + + + + + + + + + + + + + @@ -722073,6 +787194,22 @@ + + + + + + + + + + + + + + + + @@ -725180,6 +790317,248 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -725610,23 +790989,95 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -725683,6 +791134,13 @@ + + + + + + + @@ -725695,6 +791153,13 @@ + + + + + + + @@ -725707,6 +791172,13 @@ + + + + + + + @@ -725783,6 +791255,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -725883,6 +791475,17 @@ + + + + + + + + + + + @@ -725899,6 +791502,17 @@ + + + + + + + + + + + @@ -725915,6 +791529,17 @@ + + + + + + + + + + + @@ -725922,6 +791547,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -726044,7 +791717,7 @@ - + @@ -726082,7 +791755,6 @@ - @@ -726231,7 +791903,6 @@ - @@ -726250,6 +791921,7 @@ + @@ -726261,6 +791933,7 @@ + @@ -731854,6 +797527,23 @@ + + + + + + + + + + + + + + + + + @@ -731878,6 +797568,23 @@ + + + + + + + + + + + + + + + + + @@ -731902,6 +797609,23 @@ + + + + + + + + + + + + + + + + + @@ -731977,6 +797701,23 @@ + + + + + + + + + + + + + + + + + @@ -732249,6 +797990,24 @@ + + + + + + + + + + + + + + + + + + @@ -732269,6 +798028,24 @@ + + + + + + + + + + + + + + + + + + @@ -732289,6 +798066,24 @@ + + + + + + + + + + + + + + + + + + @@ -732353,6 +798148,24 @@ + + + + + + + + + + + + + + + + + + @@ -732735,7 +798548,7 @@ - + @@ -733033,6 +798846,23 @@ + + + + + + + + + + + + + + + + + @@ -733372,6 +799202,24 @@ + + + + + + + + + + + + + + + + + + @@ -733546,6 +799394,16 @@ + + + + + + + + + + @@ -734311,6 +800169,20 @@ + + + + + + + + + + + + + + @@ -734773,6 +800645,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -735306,6 +801214,56 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -735478,6 +801436,14 @@ + + + + + + + + @@ -735621,6 +801587,7162 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -740072,7 +813194,7 @@ - + @@ -754183,7 +827305,7 @@ - + @@ -754216,7 +827338,7 @@ - + @@ -754766,7 +827888,7 @@ - + @@ -756282,7 +829404,7 @@ - + @@ -757622,7 +830744,7 @@ - + @@ -757792,7 +830914,7 @@ - + @@ -758095,6 +831217,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -758348,6 +831497,222 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -759806,6 +833171,300 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -759818,6 +833477,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + @@ -759975,6 +833658,28 @@ + + + + + + + + + + + + + + + + + + + + + + @@ -759990,6 +833695,189 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -761642,6 +835530,151 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -762038,6 +836071,21 @@ + + + + + + + + + + + + + + + @@ -762078,6 +836126,19 @@ + + + + + + + + + + + + + @@ -762089,6 +836150,21 @@ + + + + + + + + + + + + + + + @@ -762896,6 +836972,21 @@ + + + + + + + + + + + + + + + @@ -763013,6 +837104,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -763399,6 +837518,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -763630,6 +837780,27 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/tools/apidiff/references/xm/XamMac.xml b/tools/apidiff/references/xm/XamMac.xml index af8b8f0328..a8b1b14dd2 100755 --- a/tools/apidiff/references/xm/XamMac.xml +++ b/tools/apidiff/references/xm/XamMac.xml @@ -16,7 +16,7 @@ - + @@ -68,6 +68,7 @@ + @@ -76,6 +77,7 @@ + @@ -85,6 +87,7 @@ + @@ -107,6 +110,7 @@ + @@ -116,7 +120,7 @@ - + @@ -124,8 +128,9 @@ - + + @@ -390,6 +395,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1015,7 +1045,7 @@ - + @@ -1081,6 +1111,51 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1124,9 +1199,15 @@ - + - + + + + + + + @@ -2016,6 +2097,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2240,6 +2369,21 @@ + + + + + + + + + + + + + + + @@ -2262,6 +2406,16 @@ + + + + + + + + + + @@ -2390,6 +2544,18 @@ + + + + + + + + + + + + @@ -2827,7 +2993,7 @@ - + @@ -4987,7 +5153,7 @@ - + @@ -5703,6 +5869,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + @@ -6161,7 +6352,7 @@ - + @@ -7558,6 +7749,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -8242,6 +8474,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -9757,7 +10031,7 @@ - + @@ -10017,6 +10291,72 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -10145,7 +10485,7 @@ - + @@ -11057,6 +11397,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -11075,10 +11456,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + - - + + @@ -11089,8 +11495,8 @@ - - + + @@ -11113,6 +11519,106 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -11279,6 +11785,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -11333,6 +11859,25 @@ + + + + + + + + + + + + + + + + + + + @@ -11387,6 +11932,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -13154,8 +13755,8 @@ - - + + @@ -14731,6 +15332,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + @@ -14765,6 +15391,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + @@ -15244,7 +15895,7 @@ - + @@ -15257,7 +15908,7 @@ - + @@ -15443,7 +16094,7 @@ - + @@ -15457,7 +16108,7 @@ - + @@ -16501,6 +17152,29 @@ + + + + + + + + + + + + + + + + + + + + + + + @@ -16521,6 +17195,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + @@ -16529,6 +17228,19 @@ + + + + + + + + + + + + + @@ -16539,6 +17251,21 @@ + + + + + + + + + + + + + + + @@ -16558,6 +17285,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + @@ -16567,6 +17318,20 @@ + + + + + + + + + + + + + + @@ -16588,6 +17353,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -16599,6 +17390,22 @@ + + + + + + + + + + + + + + + + @@ -16628,6 +17435,25 @@ + + + + + + + + + + + + + + + + + + + @@ -16702,7 +17528,7 @@ - + @@ -17142,7 +17968,7 @@ - + @@ -17901,6 +18727,25 @@ + + + + + + + + + + + + + + + + + + + @@ -18084,6 +18929,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -22199,6 +23064,199 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -22590,7 +23648,7 @@ - + @@ -22691,7 +23749,7 @@ - + @@ -22727,7 +23785,7 @@ - + @@ -23697,6 +24755,272 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -24599,7 +25923,7 @@ - + @@ -25023,7 +26347,7 @@ - + @@ -25083,7 +26407,7 @@ - + @@ -26013,7 +27337,7 @@ - + @@ -26023,7 +27347,7 @@ - + @@ -26033,7 +27357,7 @@ - + @@ -26180,17 +27504,11 @@ - + - + - - - - - - @@ -26352,6 +27670,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -26642,6 +27980,25 @@ + + + + + + + + + + + + + + + + + + + @@ -27812,6 +29169,260 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -28142,7 +29753,7 @@ - + @@ -28357,6 +29968,7 @@ + @@ -29516,6 +31128,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -30033,6 +31665,24 @@ + + + + + + + + + + + + + + + + + + @@ -30206,6 +31856,23 @@ + + + + + + + + + + + + + + + + + @@ -30629,6 +32296,14 @@ + + + + + + + + @@ -30871,6 +32546,316 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -31372,6 +33357,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -31811,6 +33910,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -32424,6 +34543,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -32841,6 +34980,111 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -33815,6 +36059,12 @@ + + + + + + @@ -35400,6 +37650,22 @@ + + + + + + + + + + + + + + + + @@ -35410,6 +37676,24 @@ + + + + + + + + + + + + + + + + + + @@ -36805,6 +39089,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -41491,6 +43831,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -42855,7 +45215,7 @@ - + @@ -42949,6 +45309,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -45069,6 +47449,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -45686,6 +48086,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -52411,6 +54849,7 @@ + @@ -52838,17 +55277,14 @@ - + + + + + - - - - - - - @@ -53339,6 +55775,586 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -53356,6 +56372,7 @@ + @@ -53788,6 +56805,269 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -54657,6 +57937,7 @@ + @@ -55655,6 +58936,8 @@ + + @@ -55662,6 +58945,8 @@ + + @@ -55673,6 +58958,10 @@ + + + + @@ -55680,6 +58969,10 @@ + + + + @@ -55767,9 +59060,19 @@ + + + + + + + + + + @@ -55777,9 +59080,19 @@ + + + + + + + + + + @@ -56166,6 +59479,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -56325,6 +59681,51 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -56349,6 +59750,24 @@ + + + + + + + + + + + + + + + + + + @@ -58281,6 +61700,24 @@ + + + + + + + + + + + + + + + + + + @@ -58329,6 +61766,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + @@ -59122,7 +62583,7 @@ - + @@ -59219,6 +62680,51 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -59726,6 +63232,184 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -60123,7 +63807,7 @@ - + @@ -60162,7 +63846,7 @@ - + @@ -60184,7 +63868,7 @@ - + @@ -60643,7 +64327,7 @@ - + @@ -60735,6 +64419,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -62714,6 +66431,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -66866,6 +70622,105 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -68625,6 +72480,17 @@ + + + + + + + + + + + @@ -69687,6 +73553,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -70577,6 +74497,7 @@ + @@ -72296,7 +76217,7 @@ - + @@ -76190,6 +80111,106 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -77121,6 +81142,80 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -77318,6 +81413,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -77358,6 +81506,20 @@ + + + + + + + + + + + + + + @@ -77558,6 +81720,20 @@ + + + + + + + + + + + + + + @@ -77922,6 +82098,20 @@ + + + + + + + + + + + + + + @@ -78980,6 +83170,1043 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -79262,6 +84489,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -79566,6 +84827,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -84234,6 +89563,23 @@ + + + + + + + + + + + + + + + + + @@ -85086,6 +90432,20 @@ + + + + + + + + + + + + + + @@ -85450,6 +90810,20 @@ + + + + + + + + + + + + + + @@ -85610,6 +90984,20 @@ + + + + + + + + + + + + + + @@ -85678,6 +91066,20 @@ + + + + + + + + + + + + + + @@ -85923,6 +91325,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -85932,6 +91361,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -87663,7 +93122,7 @@ - + @@ -89130,6 +94589,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -89434,6 +94927,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -94194,6 +99755,7 @@ + @@ -95216,7 +100778,7 @@ - + @@ -95332,7 +100894,7 @@ - + @@ -96406,7 +101968,7 @@ - + @@ -96470,6 +102032,21 @@ + + + + + + + + + + + + + + + @@ -97009,6 +102586,18 @@ + + + + + + + + + + + + @@ -97579,6 +103168,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -98709,8 +104327,18 @@ - - + + + + + + + + + + + + @@ -99273,6 +104901,28 @@ + + + + + + + + + + + + + + + + + + + + + + @@ -99334,6 +104984,21 @@ + + + + + + + + + + + + + + + @@ -99341,6 +105006,7 @@ + @@ -99349,6 +105015,13 @@ + + + + + + + @@ -99374,6 +105047,7 @@ + @@ -99381,6 +105055,13 @@ + + + + + + + @@ -100398,7 +106079,7 @@ - + @@ -100556,7 +106237,7 @@ - + @@ -102517,7 +108198,7 @@ - + @@ -102846,7 +108527,7 @@ - + @@ -103482,7 +109163,7 @@ - + @@ -103614,6 +109295,7 @@ + @@ -103699,7 +109381,7 @@ - + @@ -104073,6 +109755,7 @@ + @@ -106188,7 +111871,7 @@ - + @@ -107403,6 +113086,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -107707,6 +113424,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -116289,6 +122074,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -116939,6 +122758,7 @@ + @@ -117591,6 +123411,7 @@ + @@ -117668,6 +123489,7 @@ + @@ -118122,6 +123944,7 @@ + @@ -118244,6 +124067,7 @@ + @@ -118709,6 +124533,7 @@ + @@ -118771,6 +124596,7 @@ + @@ -121671,6 +127497,24 @@ + + + + + + + + + + + + + + + + + + @@ -121763,7 +127607,13 @@ - + + + + + + + @@ -123291,6 +129141,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -123302,6 +129192,146 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -123355,12 +129385,31 @@ + + + + + + + + + + + + + + + + + + + - + @@ -124037,6 +130086,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -124166,6 +130244,20 @@ + + + + + + + + + + + + + + @@ -124311,7 +130403,7 @@ - + @@ -125529,6 +131621,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -126363,6 +132489,22 @@ + + + + + + + + + + + + + + + + @@ -127140,7 +133282,7 @@ - + @@ -131469,6 +137611,7 @@ + @@ -131480,6 +137623,7 @@ + @@ -131491,6 +137635,7 @@ + @@ -131504,6 +137649,7 @@ + @@ -131563,6 +137709,7 @@ + @@ -131576,6 +137723,7 @@ + @@ -134568,6 +140716,25 @@ + + + + + + + + + + + + + + + + + + + @@ -135091,6 +141258,7 @@ + @@ -135457,6 +141625,21 @@ + + + + + + + + + + + + + + + @@ -135732,6 +141915,20 @@ + + + + + + + + + + + + + + @@ -136194,7 +142391,7 @@ - + @@ -136217,6 +142414,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -136681,6 +142906,25 @@ + + + + + + + + + + + + + + + + + + + @@ -136871,6 +143115,25 @@ + + + + + + + + + + + + + + + + + + + @@ -137163,7 +143426,7 @@ - + @@ -137327,7 +143590,7 @@ - + @@ -138634,6 +144897,7 @@ + @@ -138801,6 +145065,7 @@ + @@ -139518,6 +145783,7 @@ + @@ -139599,6 +145865,7 @@ + @@ -139617,6 +145884,7 @@ + @@ -139907,6 +146175,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -140211,6 +146513,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -143829,9 +150199,13 @@ + + + + @@ -143840,9 +150214,13 @@ + + + + @@ -144392,9 +150770,13 @@ + + + + @@ -144403,9 +150785,13 @@ + + + + @@ -145349,6 +151735,7 @@ + @@ -145594,6 +151981,7 @@ + @@ -147450,7 +153838,7 @@ - + @@ -148201,6 +154589,7 @@ + @@ -148251,7 +154640,7 @@ - + @@ -148297,7 +154686,7 @@ - + @@ -148843,6 +155232,7 @@ + @@ -148853,6 +155243,7 @@ + @@ -148860,6 +155251,7 @@ + @@ -148870,6 +155262,7 @@ + @@ -148877,6 +155270,7 @@ + @@ -148887,6 +155281,7 @@ + @@ -149133,6 +155528,7 @@ + @@ -149159,6 +155555,7 @@ + @@ -149191,6 +155588,11 @@ + + + + + @@ -149233,6 +155635,50 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -149251,6 +155697,7 @@ + @@ -149344,6 +155791,7 @@ + @@ -149523,6 +155971,163 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -149656,6 +156261,7 @@ + @@ -149685,7 +156291,7 @@ - + @@ -150284,6 +156890,25 @@ + + + + + + + + + + + + + + + + + + + @@ -150476,6 +157101,21 @@ + + + + + + + + + + + + + + + @@ -151568,6 +158208,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + @@ -151609,6 +158274,16 @@ + + + + + + + + + + @@ -153935,7 +160610,7 @@ - + @@ -154038,7 +160713,7 @@ - + @@ -154383,6 +161058,25 @@ + + + + + + + + + + + + + + + + + + + @@ -154424,6 +161118,25 @@ + + + + + + + + + + + + + + + + + + + @@ -154501,10 +161214,27 @@ + + + + + + + + + + + + + + + + + @@ -154539,6 +161269,7 @@ + @@ -157194,6 +163925,25 @@ + + + + + + + + + + + + + + + + + + + @@ -157225,8 +163975,154 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -157241,6 +164137,22 @@ + + + + + + + + + + + + + + + + @@ -158201,6 +165113,7 @@ + @@ -158218,6 +165131,7 @@ + @@ -158935,7 +165849,7 @@ - + @@ -159917,6 +166831,11 @@ + + + + + @@ -160402,6 +167321,7 @@ + @@ -160461,6 +167381,7 @@ + @@ -163572,7 +170493,7 @@ - + @@ -163597,7 +170518,7 @@ - + @@ -164749,6 +171670,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -164778,6 +171733,104 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -164897,6 +171950,108 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -164955,6 +172110,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -165418,6 +172607,22 @@ + + + + + + + + + + + + + + + + @@ -166761,7 +173966,7 @@ - + @@ -166804,7 +174009,7 @@ - + @@ -166845,7 +174050,7 @@ - + @@ -166899,7 +174104,7 @@ - + @@ -166964,7 +174169,7 @@ - + @@ -167043,7 +174248,7 @@ - + @@ -167083,7 +174288,7 @@ - + @@ -167231,7 +174436,7 @@ - + @@ -167908,6 +175113,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -168212,6 +175451,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -173244,7 +180551,7 @@ - + @@ -174526,6 +181833,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -174830,6 +182171,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -178351,6 +185760,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -179962,6 +187403,7 @@ + @@ -183383,7 +190825,7 @@ - + @@ -183441,6 +190883,28 @@ + + + + + + + + + + + + + + + + + + + + + + @@ -184080,6 +191544,7 @@ + @@ -187407,6 +194872,7 @@ + @@ -187642,6 +195108,7 @@ + @@ -190532,6 +197999,7 @@ + @@ -191132,9 +198600,13 @@ + + + + @@ -191172,9 +198644,13 @@ + + + + @@ -191182,9 +198658,13 @@ + + + + @@ -191202,9 +198682,13 @@ + + + + @@ -191229,6 +198713,76 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -191243,6 +198797,20 @@ + + + + + + + + + + + + + + @@ -191425,6 +198993,20 @@ + + + + + + + + + + + + + + @@ -191478,9 +199060,13 @@ + + + + @@ -192118,7 +199704,7 @@ - + @@ -192454,7 +200040,7 @@ - + @@ -196255,6 +203841,7 @@ + @@ -196527,6 +204114,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -196831,6 +204452,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -200339,6 +208028,17 @@ + + + + + + + + + + + @@ -200616,6 +208316,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -205493,6 +213213,7 @@ + @@ -205510,6 +213231,7 @@ + @@ -206800,6 +214522,21 @@ + + + + + + + + + + + + + + + @@ -207392,7 +215129,7 @@ - + @@ -209924,6 +217661,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -211615,6 +219390,7 @@ + @@ -213675,7 +221451,7 @@ - + @@ -213813,7 +221589,7 @@ - + @@ -218601,6 +226377,23 @@ + + + + + + + + + + + + + + + + + @@ -219185,6 +226978,7 @@ + @@ -219268,6 +227062,25 @@ + + + + + + + + + + + + + + + + + + + @@ -219348,6 +227161,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -219474,6 +227321,20 @@ + + + + + + + + + + + + + + @@ -219494,6 +227355,20 @@ + + + + + + + + + + + + + + @@ -219546,6 +227421,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -219610,6 +227527,21 @@ + + + + + + + + + + + + + + + @@ -219694,6 +227626,51 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -219708,6 +227685,20 @@ + + + + + + + + + + + + + + @@ -223113,6 +231104,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -223417,6 +231442,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -229815,7 +237908,7 @@ - + @@ -233030,7 +241123,7 @@ - + @@ -233084,6 +241177,7 @@ + @@ -233509,6 +241603,19 @@ + + + + + + + + + + + + + @@ -236535,7 +244642,7 @@ - + @@ -237310,6 +245417,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -242378,7 +250505,7 @@ - + @@ -244263,6 +252390,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -244934,6 +253093,7 @@ + @@ -247997,6 +256157,7 @@ + @@ -249035,6 +257196,20 @@ + + + + + + + + + + + + + + @@ -250561,7 +258736,7 @@ - + @@ -251119,7 +259294,7 @@ - + @@ -255957,6 +264132,15 @@ + + + + + + + + + @@ -256073,6 +264257,121 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -259982,7 +268281,7 @@ - + @@ -260097,7 +268396,7 @@ - + @@ -260338,7 +268637,7 @@ - + @@ -260445,6 +268744,7 @@ + @@ -260572,7 +268872,7 @@ - + @@ -260716,7 +269016,7 @@ - + @@ -260906,7 +269206,7 @@ - + @@ -260935,7 +269235,7 @@ - + @@ -261002,7 +269302,7 @@ - + @@ -261029,7 +269329,7 @@ - + @@ -261126,7 +269426,7 @@ - + @@ -261155,7 +269455,7 @@ - + @@ -261183,7 +269483,7 @@ - + @@ -261224,7 +269524,7 @@ - + @@ -261237,7 +269537,7 @@ - + @@ -261755,7 +270055,7 @@ - + @@ -261807,7 +270107,7 @@ - + @@ -261820,7 +270120,7 @@ - + @@ -269387,6 +277687,7 @@ + @@ -269675,6 +277976,7 @@ + @@ -269875,6 +278177,7 @@ + @@ -270261,6 +278564,299 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -270687,6 +279283,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -270991,6 +279621,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -275182,9 +283880,13 @@ + + + + @@ -275950,7 +284652,7 @@ - + @@ -275964,7 +284666,7 @@ - + @@ -275978,7 +284680,7 @@ - + @@ -275992,7 +284694,7 @@ - + @@ -276006,7 +284708,7 @@ - + @@ -277597,7 +286299,7 @@ - + @@ -278189,7 +286891,7 @@ - + @@ -278213,6 +286915,7 @@ + @@ -278250,6 +286953,7 @@ + @@ -278998,6 +287702,7 @@ + @@ -279032,7 +287737,7 @@ - + @@ -279510,7 +288215,7 @@ - + @@ -279594,7 +288299,7 @@ - + @@ -279723,7 +288428,7 @@ - + @@ -282537,6 +291242,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -282841,6 +291580,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -289241,6 +298048,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -290329,6 +299176,7 @@ + @@ -290642,6 +299490,7 @@ + @@ -290804,7 +299653,7 @@ - + @@ -291629,6 +300478,7 @@ + @@ -291880,7 +300730,7 @@ - + @@ -292033,6 +300883,20 @@ + + + + + + + + + + + + + + @@ -295544,6 +304408,448 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -296384,6 +305690,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -297736,7 +307080,7 @@ - + @@ -297990,6 +307334,24 @@ + + + + + + + + + + + + + + + + + + @@ -298230,6 +307592,8 @@ + + @@ -299332,7 +308696,7 @@ - + @@ -300383,6 +309747,14 @@ + + + + + + + + @@ -300390,6 +309762,14 @@ + + + + + + + + @@ -300506,6 +309886,7 @@ + @@ -300525,6 +309906,7 @@ + @@ -300644,7 +310026,7 @@ - + @@ -300840,7 +310222,7 @@ - + @@ -301249,7 +310631,7 @@ - + @@ -301279,7 +310661,7 @@ - + @@ -302706,7 +312088,7 @@ - + @@ -303239,7 +312621,7 @@ - + @@ -303481,6 +312863,17 @@ + + + + + + + + + + + @@ -303832,6 +313225,7 @@ + @@ -303854,6 +313248,24 @@ + + + + + + + + + + + + + + + + + + @@ -303891,7 +313303,7 @@ - + @@ -303943,7 +313355,7 @@ - + @@ -304075,6 +313487,134 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -304515,11 +314055,17 @@ + + + + + + - + @@ -304705,6 +314251,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -305278,6 +314857,14 @@ + + + + + + + + @@ -305289,6 +314876,14 @@ + + + + + + + + @@ -305535,7 +315130,7 @@ - + @@ -305576,7 +315171,7 @@ - + @@ -305721,6 +315316,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -305889,7 +315552,7 @@ - + @@ -305933,7 +315596,7 @@ - + @@ -306091,6 +315754,14 @@ + + + + + + + + @@ -306133,7 +315804,7 @@ - + @@ -306159,6 +315830,7 @@ + @@ -306181,6 +315853,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + @@ -306538,7 +316234,9 @@ + + @@ -306772,7 +316470,7 @@ - + @@ -307217,6 +316915,7 @@ + @@ -307229,6 +316928,7 @@ + @@ -307240,6 +316940,7 @@ + @@ -307519,7 +317220,9 @@ + + @@ -307712,7 +317415,9 @@ + + @@ -307953,6 +317658,7 @@ + @@ -308329,6 +318035,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -308362,6 +318089,7 @@ + @@ -308662,6 +318390,7 @@ + @@ -310073,6 +319802,7 @@ + @@ -310831,6 +320561,7 @@ + @@ -311083,7 +320814,9 @@ + + @@ -311451,7 +321184,7 @@ - + @@ -311502,6 +321235,7 @@ + @@ -311819,7 +321553,7 @@ - + @@ -312043,7 +321777,7 @@ - + @@ -312127,6 +321861,11 @@ + + + + + @@ -312867,6 +322606,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -313884,7 +323666,7 @@ - + @@ -314830,6 +324612,7 @@ + @@ -315172,6 +324955,7 @@ + @@ -315390,7 +325174,9 @@ + + @@ -315614,6 +325400,7 @@ + @@ -316011,6 +325798,7 @@ + @@ -316238,6 +326026,7 @@ + @@ -316787,7 +326576,9 @@ + + @@ -317025,6 +326816,7 @@ + @@ -317473,6 +327265,7 @@ + @@ -318144,6 +327937,7 @@ + @@ -318262,7 +328056,9 @@ + + @@ -318496,7 +328292,7 @@ - + @@ -318540,6 +328336,7 @@ + @@ -318977,6 +328774,9 @@ + + + @@ -319094,6 +328894,7 @@ + @@ -319124,6 +328925,7 @@ + @@ -319148,6 +328950,7 @@ + @@ -319356,6 +329159,7 @@ + @@ -319458,8 +329262,125 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -319475,7 +329396,7 @@ - + @@ -319484,6 +329405,8 @@ + + @@ -319623,6 +329546,9 @@ + + + @@ -319654,7 +329580,7 @@ - + @@ -319664,6 +329590,7 @@ + @@ -319731,6 +329658,7 @@ + @@ -319757,6 +329685,7 @@ + @@ -319791,6 +329720,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -319801,6 +329767,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -319817,6 +329815,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -319844,18 +329890,8 @@ - - - - - - - - - - @@ -319953,8 +329989,10 @@ + + @@ -319997,7 +330035,7 @@ - + @@ -320009,7 +330047,7 @@ - + @@ -320050,7 +330088,7 @@ - + @@ -320062,7 +330100,7 @@ - + @@ -320092,7 +330130,7 @@ - + @@ -320105,7 +330143,7 @@ - + @@ -320118,7 +330156,7 @@ - + @@ -320150,6 +330188,7 @@ + @@ -320291,6 +330330,7 @@ + @@ -320308,6 +330348,7 @@ + @@ -320402,6 +330443,7 @@ + @@ -320416,6 +330458,7 @@ + @@ -320443,6 +330486,7 @@ + @@ -320458,7 +330502,7 @@ - + @@ -320467,6 +330511,7 @@ + @@ -320556,6 +330601,7 @@ + @@ -320568,6 +330614,7 @@ + @@ -320654,31 +330701,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - @@ -320767,6 +330789,7 @@ + @@ -320780,9 +330803,17 @@ - + + + + + - + + + + + @@ -320790,6 +330821,7 @@ + @@ -320802,7 +330834,7 @@ - + @@ -320811,6 +330843,7 @@ + @@ -320890,23 +330923,6 @@ - - - - - - - - - - - - - - - - - @@ -321054,6 +331070,7 @@ + @@ -321063,8 +331080,18 @@ - - + + + + + + + + + + + + @@ -321075,10 +331102,18 @@ + + + + + + + + @@ -321093,7 +331128,272 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -321118,6 +331418,7 @@ + @@ -321177,6 +331478,8 @@ + + @@ -321291,6 +331594,7 @@ + @@ -321304,6 +331608,7 @@ + @@ -321315,6 +331620,8 @@ + + @@ -321366,6 +331673,7 @@ + @@ -321425,6 +331733,8 @@ + + @@ -321454,6 +331764,7 @@ + @@ -321513,6 +331824,8 @@ + + @@ -321594,6 +331907,7 @@ + @@ -321606,6 +331920,7 @@ + @@ -321617,6 +331932,7 @@ + @@ -321626,11 +331942,12 @@ + - + @@ -321639,10 +331956,11 @@ + - + @@ -321650,6 +331968,8 @@ + + @@ -321660,15 +331980,17 @@ - + - + + + @@ -321724,6 +332046,137 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -321746,32 +332199,13 @@ - - - - - - - - - - - - - - - - - - - - - + + @@ -321783,8 +332217,10 @@ + + @@ -321811,6 +332247,8 @@ + + @@ -321823,6 +332261,8 @@ + + @@ -321921,22 +332361,15 @@ + + - - - - - - - - - - + @@ -321974,7 +332407,7 @@ - + @@ -322006,7 +332439,7 @@ - + @@ -322027,7 +332460,7 @@ - + @@ -322058,6 +332491,22 @@ + + + + + + + + + + + + + + + + @@ -322150,6 +332599,7 @@ + @@ -322221,6 +332671,24 @@ + + + + + + + + + + + + + + + + + + @@ -322291,6 +332759,23 @@ + + + + + + + + + + + + + + + + + @@ -322316,21 +332801,11 @@ - + - - - - - - - - - - - + @@ -322450,6 +332925,21 @@ + + + + + + + + + + + + + + + @@ -322503,6 +332993,20 @@ + + + + + + + + + + + + + + @@ -322526,17 +333030,7 @@ - - - - - - - - - - - + @@ -322709,7 +333203,7 @@ - + @@ -322719,6 +333213,7 @@ + @@ -322733,11 +333228,7 @@ - - - - - + @@ -322795,6 +333286,7 @@ + @@ -322809,9 +333301,11 @@ + + @@ -322937,18 +333431,8 @@ - - - - - - - - - - @@ -322989,6 +333473,9 @@ + + + @@ -323018,6 +333505,22 @@ + + + + + + + + + + + + + + + + @@ -323102,6 +333605,22 @@ + + + + + + + + + + + + + + + + @@ -323121,6 +333640,7 @@ + @@ -323137,6 +333657,7 @@ + @@ -323162,6 +333683,7 @@ + @@ -323277,6 +333799,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -323402,6 +333978,51 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -323459,6 +334080,102 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -323512,6 +334229,7 @@ + @@ -323575,6 +334293,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -323606,6 +334372,7 @@ + @@ -323617,7 +334384,12 @@ - + + + + + + @@ -323697,7 +334469,7 @@ - + @@ -323706,6 +334478,7 @@ + @@ -323868,24 +334641,6 @@ - - - - - - - - - - - - - - - - - - @@ -323955,6 +334710,7 @@ + @@ -324068,9 +334824,6 @@ - - - @@ -324159,6 +334912,24 @@ + + + + + + + + + + + + + + + + + + @@ -324293,6 +335064,7 @@ + @@ -324495,6 +335267,7 @@ + @@ -324542,7 +335315,7 @@ - + @@ -324679,6 +335452,29 @@ + + + + + + + + + + + + + + + + + + + + + + + @@ -324792,6 +335588,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -324817,6 +335647,9 @@ + + + @@ -324848,7 +335681,7 @@ - + @@ -324863,6 +335696,9 @@ + + + @@ -324895,6 +335731,9 @@ + + + @@ -324953,6 +335792,7 @@ + @@ -325025,6 +335865,14 @@ + + + + + + + + @@ -325974,7 +336822,7 @@ - + @@ -326007,6 +336855,22 @@ + + + + + + + + + + + + + + + + @@ -327095,6 +337959,10 @@ + + + + @@ -327107,6 +337975,10 @@ + + + + @@ -327119,6 +337991,10 @@ + + + + @@ -327127,6 +338003,92 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -328308,6 +339270,479 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -331074,6 +342509,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -333622,6 +345098,978 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -334255,6 +346703,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -334272,6 +346760,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -334293,6 +346801,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -334703,6 +347231,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -336032,6 +348580,10 @@ + + + + @@ -336042,6 +348594,10 @@ + + + + @@ -336052,6 +348608,10 @@ + + + + @@ -336180,6 +348740,10 @@ + + + + @@ -336191,6 +348755,10 @@ + + + + @@ -336202,6 +348770,10 @@ + + + + @@ -336573,8 +349145,10 @@ + + @@ -337408,6 +349982,14 @@ + + + + + + + + @@ -337791,7 +350373,7 @@ - + @@ -340688,7 +353270,7 @@ - + @@ -341438,7 +354020,7 @@ - + @@ -341548,7 +354130,7 @@ - + @@ -341601,6 +354183,12 @@ + + + + + + @@ -341612,6 +354200,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -341633,6 +354241,13 @@ + + + + + + + @@ -341672,6 +354287,10 @@ + + + + @@ -341902,6 +354521,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -342419,6 +355058,15 @@ + + + + + + + + + @@ -342941,11 +355589,28 @@ + + + + + + + + + + + + + + + + + @@ -345401,6 +358066,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -345601,7 +358287,7 @@ - + @@ -345739,6 +358425,15 @@ + + + + + + + + + @@ -345765,6 +358460,15 @@ + + + + + + + + + @@ -345781,6 +358485,17 @@ + + + + + + + + + + + @@ -345798,6 +358513,24 @@ + + + + + + + + + + + + + + + + + + @@ -346139,6 +358872,66 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -346426,7 +359219,7 @@ - + @@ -346607,7 +359400,7 @@ - + @@ -346619,7 +359412,7 @@ - + @@ -348500,6 +361293,201 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -348608,6 +361596,114 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -348791,6 +361887,847 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -349279,7 +363216,7 @@ - + @@ -350245,6 +364182,7 @@ + @@ -350285,6 +364223,7 @@ + @@ -350315,6 +364254,7 @@ + @@ -350362,6 +364302,7 @@ + @@ -350385,6 +364326,7 @@ + @@ -350425,6 +364367,7 @@ + @@ -350448,6 +364391,7 @@ + @@ -350505,6 +364449,7 @@ + @@ -350528,6 +364473,7 @@ + @@ -350551,6 +364497,7 @@ + @@ -352564,6 +366511,25 @@ + + + + + + + + + + + + + + + + + + + @@ -352704,11 +366670,113 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -352728,6 +366796,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -352748,6 +366837,29 @@ + + + + + + + + + + + + + + + + + + + + + + + @@ -352769,6 +366881,29 @@ + + + + + + + + + + + + + + + + + + + + + + + @@ -353549,6 +367684,222 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -358245,7 +372596,7 @@ - + @@ -360129,6 +374480,22 @@ + + + + + + + + + + + + + + + + @@ -360284,6 +374651,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -360379,6 +374775,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -360521,6 +374957,150 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -360588,9 +375168,13 @@ + + + + @@ -360788,6 +375372,22 @@ + + + + + + + + + + + + + + + + @@ -360863,6 +375463,22 @@ + + + + + + + + + + + + + + + + @@ -361087,7 +375703,7 @@ - + @@ -361177,6 +375793,51 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -361236,6 +375897,22 @@ + + + + + + + + + + + + + + + + @@ -361340,7 +376017,13 @@ - + + + + + + + @@ -361392,7 +376075,7 @@ - + @@ -361401,11 +376084,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -361491,7 +376209,7 @@ - + @@ -361500,11 +376218,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -361590,7 +376344,22 @@ - + + + + + + + + + + + + + + + + @@ -361696,6 +376465,29 @@ + + + + + + + + + + + + + + + + + + + + + + + @@ -361777,7 +376569,22 @@ - + + + + + + + + + + + + + + + + @@ -361826,6 +376633,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -362044,6 +376888,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -362058,7 +376939,7 @@ - + @@ -362108,7 +376989,7 @@ - + @@ -365048,6 +379929,201 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -366437,6 +381513,220 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -366449,7 +381739,10 @@ + + + @@ -366595,6 +381888,29 @@ + + + + + + + + + + + + + + + + + + + + + + + @@ -366632,6 +381948,21 @@ + + + + + + + + + + + + + + + @@ -367515,6 +382846,614 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -372638,6 +388577,18 @@ + + + + + + + + + + + + @@ -372801,6 +388752,18 @@ + + + + + + + + + + + + @@ -373016,7 +388979,7 @@ - + @@ -373034,7 +388997,7 @@ - + @@ -373399,6 +389362,9 @@ + + + @@ -373447,8 +389413,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -373472,6 +389465,20 @@ + + + + + + + + + + + + + + @@ -373490,6 +389497,29 @@ + + + + + + + + + + + + + + + + + + + + + + + @@ -373498,6 +389528,19 @@ + + + + + + + + + + + + + @@ -373714,7 +389757,7 @@ - + @@ -374036,7 +390079,7 @@ - + @@ -375443,6 +391486,9 @@ + + + @@ -375454,6 +391500,9 @@ + + + @@ -376971,7 +393020,7 @@ - + @@ -377347,6 +393396,115 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -377365,7 +393523,7 @@ - + @@ -377733,7 +393891,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -377854,6 +394045,86 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -377890,6 +394161,18 @@ + + + + + + + + + + + + @@ -377914,6 +394197,18 @@ + + + + + + + + + + + + @@ -377926,6 +394221,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -378130,7 +394497,7 @@ - + @@ -378230,7 +394597,7 @@ - + @@ -378452,7 +394819,7 @@ - + @@ -378786,6 +395153,19 @@ + + + + + + + + + + + + + @@ -378803,6 +395183,19 @@ + + + + + + + + + + + + + @@ -378830,7 +395223,7 @@ - + @@ -379037,7 +395430,7 @@ - + @@ -380357,7 +396750,7 @@ - + @@ -381343,7 +397736,7 @@ - + @@ -382628,11 +399021,7 @@ - - - - - + @@ -384906,7 +401295,11 @@ - + + + + + @@ -385090,15 +401483,22 @@ + + + + + + + @@ -385114,15 +401514,21 @@ + + + + + + @@ -385132,10 +401538,13 @@ + + + @@ -385353,6 +401762,24 @@ + + + + + + + + + + + + + + + + + + @@ -385418,6 +401845,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -386712,6 +403159,24 @@ + + + + + + + + + + + + + + + + + + @@ -386786,6 +403251,8 @@ + + @@ -387343,6 +403810,9 @@ + + + @@ -387356,6 +403826,7 @@ + @@ -387571,6 +404042,9 @@ + + + @@ -387606,6 +404080,9 @@ + + + @@ -387615,6 +404092,7 @@ + @@ -387714,6 +404192,9 @@ + + + @@ -387726,6 +404207,7 @@ + @@ -387939,7 +404421,7 @@ - + @@ -387956,7 +404438,7 @@ - + @@ -387974,6 +404456,7 @@ + @@ -388201,6 +404684,7 @@ + @@ -388216,6 +404700,7 @@ + @@ -388312,6 +404797,9 @@ + + + @@ -388341,6 +404829,7 @@ + @@ -388352,6 +404841,9 @@ + + + @@ -388392,6 +404884,7 @@ + @@ -388522,11 +405015,15 @@ + + + + @@ -388537,6 +405034,8 @@ + + @@ -388545,6 +405044,10 @@ + + + + @@ -388554,23 +405057,35 @@ + + + + + + + + + + + + @@ -388578,6 +405093,9 @@ + + + @@ -388607,6 +405125,9 @@ + + + @@ -388621,6 +405142,7 @@ + @@ -388634,6 +405156,9 @@ + + + @@ -388651,6 +405176,9 @@ + + + @@ -388706,6 +405234,7 @@ + @@ -388718,6 +405247,9 @@ + + + @@ -388732,6 +405264,7 @@ + @@ -391349,6 +407882,16 @@ + + + + + + + + + + @@ -391371,6 +407914,16 @@ + + + + + + + + + + @@ -394217,6 +410770,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -395060,6 +411655,8 @@ + + @@ -395495,6 +412092,17 @@ + + + + + + + + + + + @@ -395519,6 +412127,18 @@ + + + + + + + + + + + + @@ -397552,6 +414172,28 @@ + + + + + + + + + + + + + + + + + + + + + + @@ -397610,6 +414252,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -398655,7 +415334,7 @@ - + @@ -398677,7 +415356,7 @@ - + @@ -399006,7 +415685,7 @@ - + @@ -399702,6 +416381,24 @@ + + + + + + + + + + + + + + + + + + @@ -399834,6 +416531,24 @@ + + + + + + + + + + + + + + + + + + @@ -401253,7 +417968,7 @@ - + @@ -404534,7 +421249,7 @@ - + @@ -404640,7 +421355,7 @@ - + @@ -406399,6 +423114,14 @@ + + + + + + + + @@ -408127,6 +424850,8 @@ + + @@ -408750,6 +425475,8 @@ + + @@ -409935,7 +426662,7 @@ - + @@ -411362,6 +428089,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -411922,6 +428692,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -414243,6 +431056,24 @@ + + + + + + + + + + + + + + + + + + @@ -414503,6 +431334,24 @@ + + + + + + + + + + + + + + + + + + @@ -414701,6 +431550,20 @@ + + + + + + + + + + + + + + @@ -414903,7 +431766,7 @@ - + @@ -414922,7 +431785,7 @@ - + @@ -414941,7 +431804,7 @@ - + @@ -414960,7 +431823,7 @@ - + @@ -414979,7 +431842,7 @@ - + @@ -414998,7 +431861,7 @@ - + @@ -415017,7 +431880,7 @@ - + @@ -415036,7 +431899,7 @@ - + @@ -415055,7 +431918,7 @@ - + @@ -415074,7 +431937,7 @@ - + @@ -415093,7 +431956,7 @@ - + @@ -415112,7 +431975,7 @@ - + @@ -415131,7 +431994,7 @@ - + @@ -415150,7 +432013,7 @@ - + @@ -415169,7 +432032,7 @@ - + @@ -415201,6 +432064,8 @@ + + @@ -416358,6 +433223,22 @@ + + + + + + + + + + + + + + + + @@ -416439,6 +433320,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -417364,7 +434265,7 @@ - + @@ -417456,7 +434357,7 @@ - + @@ -417513,7 +434414,7 @@ - + @@ -417971,7 +434872,7 @@ - + @@ -417996,7 +434897,7 @@ - + @@ -418021,7 +434922,7 @@ - + @@ -418046,7 +434947,7 @@ - + @@ -418071,7 +434972,7 @@ - + @@ -418096,7 +434997,7 @@ - + @@ -418121,7 +435022,7 @@ - + @@ -418364,7 +435265,7 @@ - + @@ -418453,7 +435354,7 @@ - + @@ -418718,6 +435619,24 @@ + + + + + + + + + + + + + + + + + + @@ -419589,6 +436508,10 @@ + + + + @@ -420446,6 +437369,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -421049,7 +438006,7 @@ - + @@ -421193,7 +438150,7 @@ - + @@ -421464,6 +438421,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -421549,6 +438532,23 @@ + + + + + + + + + + + + + + + + + @@ -421812,6 +438812,15 @@ + + + + + + + + + @@ -421830,6 +438839,20 @@ + + + + + + + + + + + + + + @@ -421978,6 +439001,98 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -422267,6 +439382,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -423244,7 +440385,7 @@ - + @@ -425526,6 +442667,14 @@ + + + + + + + + @@ -425793,6 +442942,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -425885,7 +443071,7 @@ - + @@ -425983,6 +443169,14 @@ + + + + + + + + @@ -427975,6 +445169,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + @@ -427994,6 +445213,58 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -428014,6 +445285,24 @@ + + + + + + + + + + + + + + + + + + @@ -428027,6 +445316,23 @@ + + + + + + + + + + + + + + + + + @@ -428070,6 +445376,110 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -428118,6 +445528,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -430160,6 +447590,136 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -430177,6 +447737,175 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -430184,6 +447913,97 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -430206,6 +448026,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -430213,6 +448150,19 @@ + + + + + + + + + + + + + @@ -430224,6 +448174,188 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -430252,6 +448384,383 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -430259,6 +448768,344 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -430266,6 +449113,409 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -430381,6 +449631,58 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -430506,6 +449808,466 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -430513,6 +450275,146 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -430545,6 +450447,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -430560,6 +450582,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -430593,6 +450655,426 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -430604,6 +451086,286 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -430652,6 +451414,166 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -430669,6 +451591,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -430703,6 +451665,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -430783,6 +451765,166 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -430803,6 +451945,186 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -430842,6 +452164,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -430879,6 +452221,246 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -430910,6 +452492,86 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -430998,6 +452660,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -431022,6 +452804,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -431066,6 +452888,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -431134,6 +452976,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -431165,6 +453027,246 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -431301,6 +453403,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -431373,6 +453495,166 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -431431,6 +453713,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -431462,6 +453784,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -433657,7 +456019,7 @@ - + @@ -440822,7 +463184,7 @@ - + @@ -441135,7 +463497,7 @@ - + @@ -441189,7 +463551,7 @@ - + @@ -441216,7 +463578,7 @@ - + @@ -441240,7 +463602,7 @@ - + @@ -441264,7 +463626,7 @@ - + @@ -441867,7 +464229,7 @@ - + @@ -441948,7 +464310,7 @@ - + @@ -441978,7 +464340,7 @@ - + @@ -442102,7 +464464,7 @@ - + @@ -442759,7 +465121,7 @@ - + @@ -446309,6 +468671,9 @@ + + + @@ -446321,6 +468686,9 @@ + + + @@ -446331,11 +468699,17 @@ + + + + + + @@ -446479,6 +468853,10 @@ + + + + @@ -446784,6 +469162,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -446882,6 +469301,66 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -447275,6 +469754,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -448607,6 +471120,7 @@ + @@ -448614,6 +471128,7 @@ + @@ -451597,6 +474112,58 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -451949,6 +474516,25 @@ + + + + + + + + + + + + + + + + + + + @@ -452100,7 +474686,7 @@ - + @@ -453760,6 +476346,23 @@ + + + + + + + + + + + + + + + + + @@ -455778,7 +478381,7 @@ - + @@ -456849,17 +479452,11 @@ - + - + - - - - - - @@ -456915,6 +479512,7 @@ + @@ -456988,17 +479586,11 @@ - + - + - - - - - - @@ -457150,17 +479742,11 @@ - + - + - - - - - - @@ -457384,17 +479970,11 @@ - + - + - - - - - - @@ -457762,17 +480342,11 @@ - + - + - - - - - - @@ -458213,17 +480787,11 @@ - + - + - - - - - - @@ -458357,17 +480925,11 @@ - + - + - - - - - - @@ -458537,17 +481099,11 @@ - + - + - - - - - - @@ -458771,17 +481327,11 @@ - + - + - - - - - - @@ -458987,17 +481537,11 @@ - + - + - - - - - - @@ -459203,17 +481747,11 @@ - + - + - - - - - - @@ -459419,17 +481957,11 @@ - + - + - - - - - - @@ -459635,17 +482167,11 @@ - + - + - - - - - - @@ -459905,17 +482431,11 @@ - + - + - - - - - - @@ -460085,17 +482605,11 @@ - + - + - - - - - - @@ -460229,17 +482743,11 @@ - + - + - - - - - - @@ -460751,17 +483259,11 @@ - + - + - - - - - - @@ -461165,17 +483667,11 @@ - + - + - - - - - - @@ -461489,17 +483985,11 @@ - + - + - - - - - - @@ -461795,17 +484285,11 @@ - + - + - - - - - - @@ -462157,17 +484641,11 @@ - + - + - - - - - - @@ -463943,6 +486421,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -464238,6 +486742,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -464322,6 +486846,166 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -464339,6 +487023,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -464419,6 +487143,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -464485,6 +487229,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -464547,6 +487311,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -464581,6 +487365,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -464595,6 +487419,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -464605,6 +487449,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -464663,6 +487527,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -464745,6 +487629,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -464989,6 +487899,25 @@ + + + + + + + + + + + + + + + + + + + @@ -465084,7 +488013,7 @@ - + @@ -465190,7 +488119,7 @@ - + @@ -465210,7 +488139,7 @@ - + @@ -465275,7 +488204,7 @@ - + @@ -465295,7 +488224,7 @@ - + @@ -466410,6 +489339,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -467938,7 +490910,7 @@ - + @@ -468139,7 +491111,7 @@ - + @@ -471271,7 +494243,7 @@ - + @@ -471302,7 +494274,7 @@ - + @@ -471367,7 +494339,7 @@ - + @@ -471576,7 +494548,7 @@ - + @@ -472685,6 +495657,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -473066,6 +496079,7 @@ + @@ -473190,6 +496204,25 @@ + + + + + + + + + + + + + + + + + + + @@ -473572,6 +496605,7 @@ + @@ -474142,6 +497176,7 @@ + @@ -474331,6 +497366,7 @@ + @@ -474473,6 +497509,88 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -474491,6 +497609,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -474527,6 +497688,25 @@ + + + + + + + + + + + + + + + + + + + @@ -474844,6 +498024,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -474947,6 +498169,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -475555,6 +498813,7 @@ + @@ -476057,7 +499316,7 @@ - + @@ -478499,6 +501758,8 @@ + + @@ -478798,7 +502059,7 @@ - + @@ -478813,6 +502074,83 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -486811,7 +510149,7 @@ - + @@ -486980,7 +510318,7 @@ - + @@ -486994,7 +510332,7 @@ - + @@ -487179,7 +510517,7 @@ - + @@ -487343,7 +510681,7 @@ - + @@ -488074,7 +511412,7 @@ - + @@ -488517,7 +511855,7 @@ - + @@ -490702,7 +514040,7 @@ - + @@ -491438,7 +514776,7 @@ - + @@ -491531,7 +514869,7 @@ - + @@ -494385,7 +517723,7 @@ - + @@ -494431,7 +517769,7 @@ - + @@ -495506,8 +518844,960 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -495530,6 +519820,18 @@ + + + + + + + + + + + + @@ -496514,6 +520816,66 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -498192,6 +522554,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -498598,6 +522980,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -499198,6 +523600,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -499598,6 +524040,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -499840,6 +524302,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -500092,6 +524574,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -500167,6 +524689,18 @@ + + + + + + + + + + + + @@ -500291,7 +524825,7 @@ - + @@ -509112,6 +533646,8 @@ + + @@ -509159,13 +533695,32 @@ + + + + - - - + + + + + + + + + + + + + + + + + + @@ -509575,7 +534130,7 @@ - + @@ -509591,7 +534146,7 @@ - + @@ -509691,7 +534246,7 @@ - + @@ -509851,7 +534406,7 @@ - + @@ -512884,7 +537439,7 @@ - + @@ -513167,6 +537722,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + @@ -513605,6 +538184,18 @@ + + + + + + + + + + + + @@ -513675,6 +538266,20 @@ + + + + + + + + + + + + + + @@ -514029,7 +538634,7 @@ - + @@ -515895,6 +540500,19 @@ + + + + + + + + + + + + + @@ -515986,6 +540604,17 @@ + + + + + + + + + + + @@ -516111,6 +540740,17 @@ + + + + + + + + + + + @@ -516151,6 +540791,18 @@ + + + + + + + + + + + + @@ -516310,6 +540962,16 @@ + + + + + + + + + + @@ -516487,6 +541149,25 @@ + + + + + + + + + + + + + + + + + + + @@ -516774,6 +541455,17 @@ + + + + + + + + + + + @@ -517102,6 +541794,15 @@ + + + + + + + + + @@ -517201,6 +541902,16 @@ + + + + + + + + + + @@ -517218,6 +541929,16 @@ + + + + + + + + + + @@ -518640,6 +543361,19 @@ + + + + + + + + + + + + + @@ -518731,6 +543465,17 @@ + + + + + + + + + + + @@ -518856,6 +543601,17 @@ + + + + + + + + + + + @@ -518896,6 +543652,18 @@ + + + + + + + + + + + + @@ -519055,6 +543823,16 @@ + + + + + + + + + + @@ -519232,6 +544010,25 @@ + + + + + + + + + + + + + + + + + + + @@ -519519,6 +544316,17 @@ + + + + + + + + + + + @@ -519847,6 +544655,15 @@ + + + + + + + + + @@ -519946,6 +544763,16 @@ + + + + + + + + + + @@ -519963,6 +544790,16 @@ + + + + + + + + + + @@ -520876,6 +545713,22 @@ + + + + + + + + + + + + + + + + @@ -521203,6 +546056,22 @@ + + + + + + + + + + + + + + + + @@ -521941,6 +546810,13 @@ + + + + + + + @@ -522253,6 +547129,14 @@ + + + + + + + + @@ -522538,6 +547422,13 @@ + + + + + + + @@ -522850,6 +547741,14 @@ + + + + + + + + @@ -523235,6 +548134,13 @@ + + + + + + + @@ -523507,6 +548413,13 @@ + + + + + + + @@ -524868,6 +549781,17 @@ + + + + + + + + + + + @@ -525272,6 +550196,14 @@ + + + + + + + + @@ -525391,6 +550323,16 @@ + + + + + + + + + + @@ -526049,6 +550991,17 @@ + + + + + + + + + + + @@ -526453,6 +551406,14 @@ + + + + + + + + @@ -526572,6 +551533,16 @@ + + + + + + + + + + @@ -527390,6 +552361,23 @@ + + + + + + + + + + + + + + + + + @@ -527710,6 +552698,23 @@ + + + + + + + + + + + + + + + + + @@ -528049,6 +553054,15 @@ + + + + + + + + + @@ -528114,6 +553128,18 @@ + + + + + + + + + + + + @@ -528443,6 +553469,17 @@ + + + + + + + + + + + @@ -528584,6 +553621,19 @@ + + + + + + + + + + + + + @@ -528733,6 +553783,15 @@ + + + + + + + + + @@ -529236,6 +554295,17 @@ + + + + + + + + + + + @@ -529687,6 +554757,14 @@ + + + + + + + + @@ -529694,6 +554772,15 @@ + + + + + + + + + @@ -529756,6 +554843,14 @@ + + + + + + + + @@ -530675,6 +555770,15 @@ + + + + + + + + + @@ -530740,6 +555844,18 @@ + + + + + + + + + + + + @@ -531069,6 +556185,17 @@ + + + + + + + + + + + @@ -531210,6 +556337,19 @@ + + + + + + + + + + + + + @@ -531359,6 +556499,15 @@ + + + + + + + + + @@ -531862,6 +557011,17 @@ + + + + + + + + + + + @@ -532313,6 +557473,14 @@ + + + + + + + + @@ -532320,6 +557488,15 @@ + + + + + + + + + @@ -532382,6 +557559,14 @@ + + + + + + + + @@ -533322,6 +558507,58 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -533447,7 +558684,7 @@ - + @@ -533545,7 +558782,7 @@ - + @@ -534232,7 +559469,7 @@ - + @@ -567953,6 +593190,959 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -579651,13 +605841,68 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + + + + + + + + + + + + + + + + + + + + + + + @@ -579671,6 +605916,28 @@ + + + + + + + + + + + + + + + + + + + + + + @@ -579727,6 +605994,7 @@ + @@ -579737,9 +606005,9 @@ - + - + @@ -579821,6 +606089,7 @@ + @@ -579835,6 +606104,7 @@ + @@ -579955,6 +606225,7 @@ + @@ -580018,6 +606289,7 @@ + @@ -580085,6 +606357,7 @@ + @@ -580148,6 +606421,7 @@ + @@ -580209,6 +606483,7 @@ + @@ -580239,6 +606514,7 @@ + @@ -580315,6 +606591,7 @@ + @@ -580429,6 +606706,7 @@ + @@ -580575,6 +606853,7 @@ + @@ -580638,6 +606917,7 @@ + @@ -580705,6 +606985,7 @@ + @@ -580769,6 +607050,8 @@ + + @@ -580788,8 +607071,190 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -580848,6 +607313,138 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -580884,6 +607481,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -580913,6 +607542,208 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -580930,6 +607761,189 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -580961,6 +607975,7 @@ + @@ -580971,6 +607986,7 @@ + @@ -580981,6 +607997,7 @@ + @@ -580988,6 +608005,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -581003,10 +608084,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -581017,6 +608130,7 @@ + @@ -581027,6 +608141,7 @@ + @@ -581034,6 +608149,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -581092,8 +608271,77 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -581104,6 +608352,7 @@ + @@ -581124,6 +608373,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -581155,8 +608450,186 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -581177,12 +608650,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -581190,10 +608708,98 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -581204,6 +608810,8 @@ + + @@ -581291,6 +608899,18 @@ + + + + + + + + + + + + @@ -581571,6 +609191,8 @@ + + @@ -581863,6 +609485,8 @@ + + @@ -581981,6 +609605,8 @@ + + @@ -582149,6 +609775,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -582157,6 +609823,8 @@ + + @@ -582283,6 +609951,84 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -582291,6 +610037,8 @@ + + @@ -582517,6 +610265,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -582525,6 +610315,8 @@ + + @@ -582687,6 +610479,8 @@ + + @@ -582846,6 +610640,8 @@ + + @@ -582964,6 +610760,8 @@ + + @@ -583082,6 +610880,8 @@ + + @@ -583192,6 +610992,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -583200,6 +611049,8 @@ + + @@ -583310,6 +611161,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -583318,6 +611212,8 @@ + + @@ -583419,6 +611315,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -583542,6 +611467,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -583631,8 +611585,449 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -583662,6 +612057,7 @@ + @@ -583888,6 +612284,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -583926,8 +612342,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -583951,6 +612406,7 @@ + @@ -584027,6 +612483,7 @@ + @@ -584077,6 +612534,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -584109,6 +612598,7 @@ + @@ -584124,8 +612614,25 @@ + + + + + + + + + + + + + + + + + @@ -584148,6 +612655,7 @@ + @@ -584198,6 +612706,7 @@ + @@ -584224,6 +612733,7 @@ + @@ -584245,6 +612755,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -584262,6 +612810,63 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -584313,8 +612918,136 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -584323,6 +613056,7 @@ + @@ -584333,6 +613067,7 @@ + @@ -584359,6 +613094,18 @@ + + + + + + + + + + + + @@ -584507,6 +613254,16 @@ + + + + + + + + + + @@ -584574,7 +613331,9 @@ + + @@ -584627,6 +613386,15 @@ + + + + + + + + + @@ -584634,6 +613402,17 @@ + + + + + + + + + + + @@ -584641,6 +613420,16 @@ + + + + + + + + + + @@ -584648,6 +613437,17 @@ + + + + + + + + + + + @@ -584656,6 +613456,15 @@ + + + + + + + + + @@ -584663,6 +613472,17 @@ + + + + + + + + + + + @@ -584670,6 +613490,15 @@ + + + + + + + + + @@ -584677,6 +613506,17 @@ + + + + + + + + + + + @@ -584708,6 +613548,12 @@ + + + + + + @@ -584734,6 +613580,23 @@ + + + + + + + + + + + + + + + + + @@ -584817,6 +613680,14 @@ + + + + + + + + @@ -584870,6 +613741,16 @@ + + + + + + + + + + @@ -584884,7 +613765,252 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -584892,10 +614018,11 @@ - + + @@ -584974,12 +614101,27 @@ + + + + + + + + + + + + + + + @@ -584993,6 +614135,19 @@ + + + + + + + + + + + + + @@ -585006,6 +614161,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + @@ -585054,6 +614234,8 @@ + + @@ -585062,6 +614244,16 @@ + + + + + + + + + + @@ -585072,6 +614264,16 @@ + + + + + + + + + + @@ -585082,6 +614284,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -585116,6 +614338,7 @@ + @@ -585129,8 +614352,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -585149,6 +614438,7 @@ + @@ -585170,6 +614460,7 @@ + @@ -585242,6 +614533,7 @@ + @@ -585252,6 +614544,7 @@ + @@ -585262,6 +614555,7 @@ + @@ -585481,6 +614775,7 @@ + @@ -585512,6 +614807,7 @@ + @@ -585703,6 +614999,23 @@ + + + + + + + + + + + + + + + + + @@ -585784,12 +615097,29 @@ + + + + + + + + + + + + + + + + + @@ -585882,6 +615212,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -585942,16 +615301,33 @@ + + + + + + + + + + + + + + + + + @@ -585973,6 +615349,7 @@ + @@ -586020,6 +615397,7 @@ + @@ -586075,6 +615453,7 @@ + @@ -586085,6 +615464,7 @@ + @@ -586224,6 +615604,18 @@ + + + + + + + + + + + + @@ -586237,6 +615629,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -586252,6 +615673,7 @@ + @@ -586277,6 +615699,7 @@ + @@ -586339,6 +615762,19 @@ + + + + + + + + + + + + + @@ -586356,6 +615792,7 @@ + @@ -586366,6 +615803,7 @@ + @@ -586376,6 +615814,7 @@ + @@ -586385,6 +615824,7 @@ + @@ -586395,6 +615835,7 @@ + @@ -586405,6 +615846,7 @@ + @@ -586422,6 +615864,7 @@ + @@ -586432,6 +615875,7 @@ + @@ -586448,8 +615892,20 @@ + + + + + + + + + + + + @@ -586460,6 +615916,7 @@ + @@ -586470,6 +615927,7 @@ + @@ -586479,6 +615937,7 @@ + @@ -586489,6 +615948,7 @@ + @@ -586499,6 +615959,7 @@ + @@ -586545,6 +616006,7 @@ + @@ -586582,6 +616044,23 @@ + + + + + + + + + + + + + + + + + @@ -586591,10 +616070,12 @@ + + @@ -586654,6 +616135,19 @@ + + + + + + + + + + + + + @@ -586669,8 +616163,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -586681,6 +616212,8 @@ + + @@ -586691,6 +616224,8 @@ + + @@ -587061,6 +616596,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -587159,6 +616726,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -587247,6 +616846,7 @@ + @@ -587257,6 +616857,7 @@ + @@ -587267,6 +616868,7 @@ + @@ -587303,6 +616905,136 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -587314,6 +617046,17 @@ + + + + + + + + + + + @@ -587354,6 +617097,25 @@ + + + + + + + + + + + + + + + + + + + @@ -587367,6 +617129,7 @@ + @@ -587377,6 +617140,7 @@ + @@ -587387,6 +617151,7 @@ + @@ -587423,6 +617188,17 @@ + + + + + + + + + + + @@ -587475,6 +617251,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -587499,6 +617328,20 @@ + + + + + + + + + + + + + + @@ -587597,12 +617440,28 @@ + + + + + + + + + + + + + + + + @@ -587610,12 +617469,28 @@ + + + + + + + + + + + + + + + + @@ -587901,6 +617776,7 @@ + @@ -587915,6 +617791,7 @@ + @@ -587983,6 +617860,7 @@ + @@ -587996,6 +617874,7 @@ + @@ -588149,6 +618028,17 @@ + + + + + + + + + + + @@ -588171,6 +618061,17 @@ + + + + + + + + + + + @@ -588231,10 +618132,11 @@ - + + @@ -588353,6 +618255,7 @@ + @@ -588366,6 +618269,7 @@ + @@ -588379,6 +618283,7 @@ + @@ -588440,6 +618345,7 @@ + @@ -588450,6 +618356,7 @@ + @@ -588460,6 +618367,7 @@ + @@ -588579,8 +618487,26 @@ + + + + + + + + + + + + + + + + + + @@ -592470,6 +622396,7 @@ + @@ -595122,7 +625049,7 @@ - + @@ -597508,6 +627435,7 @@ + @@ -600175,6 +630103,7 @@ + @@ -602451,6 +632380,17 @@ + + + + + + + + + + + @@ -602471,6 +632411,20 @@ + + + + + + + + + + + + + + @@ -603147,6 +633101,17 @@ + + + + + + + + + + + @@ -603888,7 +633853,7 @@ - + @@ -604431,6 +634396,9 @@ + + + @@ -604456,6 +634424,13 @@ + + + + + + + @@ -604470,6 +634445,10 @@ + + + + @@ -604508,6 +634487,10 @@ + + + + @@ -604516,6 +634499,24 @@ + + + + + + + + + + + + + + + + + + @@ -604523,6 +634524,10 @@ + + + + @@ -604537,6 +634542,11 @@ + + + + + @@ -604568,6 +634578,9 @@ + + + @@ -604588,6 +634601,13 @@ + + + + + + + @@ -604599,6 +634619,10 @@ + + + + @@ -604629,6 +634653,10 @@ + + + + @@ -604639,8 +634667,27 @@ + + + + + + + + + + + + + + + + + + + @@ -604652,6 +634699,11 @@ + + + + + @@ -604676,7 +634728,7 @@ - + @@ -604811,6 +634863,7 @@ + @@ -605581,6 +635634,14 @@ + + + + + + + + @@ -606237,6 +636298,10 @@ + + + + @@ -606249,6 +636314,10 @@ + + + + @@ -606261,6 +636330,10 @@ + + + + @@ -606752,6 +636825,10 @@ + + + + @@ -606764,6 +636841,10 @@ + + + + @@ -606776,6 +636857,10 @@ + + + + @@ -606787,6 +636872,10 @@ + + + + @@ -606799,6 +636888,10 @@ + + + + @@ -606811,6 +636904,10 @@ + + + + @@ -606822,6 +636919,10 @@ + + + + @@ -606834,6 +636935,10 @@ + + + + @@ -606846,6 +636951,10 @@ + + + + @@ -607367,6 +637476,10 @@ + + + + @@ -607377,6 +637490,10 @@ + + + + @@ -607387,6 +637504,10 @@ + + + + @@ -607396,6 +637517,10 @@ + + + + @@ -607406,6 +637531,10 @@ + + + + @@ -607416,6 +637545,10 @@ + + + + @@ -607532,6 +637665,9 @@ + + + @@ -607563,6 +637699,13 @@ + + + + + + + @@ -607580,6 +637723,10 @@ + + + + @@ -607627,6 +637774,10 @@ + + + + @@ -607638,6 +637789,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -607645,6 +637817,10 @@ + + + + @@ -607662,6 +637838,11 @@ + + + + + @@ -607677,6 +637858,24 @@ + + + + + + + + + + + + + + + + + + @@ -607952,6 +638151,29 @@ + + + + + + + + + + + + + + + + + + + + + + + @@ -608286,6 +638508,88 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -608358,6 +638662,9 @@ + + + @@ -608389,6 +638696,13 @@ + + + + + + + @@ -608406,6 +638720,10 @@ + + + + @@ -608453,6 +638771,10 @@ + + + + @@ -608464,6 +638786,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -608471,6 +638814,10 @@ + + + + @@ -608488,6 +638835,11 @@ + + + + + @@ -608763,11 +639115,51 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -608847,6 +639239,24 @@ + + + + + + + + + + + + + + + + + + @@ -609627,6 +640037,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -609724,7 +640175,7 @@ - + @@ -609740,6 +640191,9 @@ + + + @@ -609904,6 +640358,13 @@ + + + + + + + @@ -609921,6 +640382,10 @@ + + + + @@ -609968,6 +640433,10 @@ + + + + @@ -609979,6 +640448,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -610013,6 +640503,10 @@ + + + + @@ -610048,6 +640542,11 @@ + + + + + @@ -610187,6 +640686,129 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -610204,6 +640826,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -610791,6 +641456,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -610894,6 +641579,13 @@ + + + + + + + @@ -611168,6 +641860,25 @@ + + + + + + + + + + + + + + + + + + + @@ -611349,6 +642060,29 @@ + + + + + + + + + + + + + + + + + + + + + + + @@ -611364,6 +642098,7 @@ + @@ -612515,6 +643250,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -612601,6 +643377,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -612729,6 +643546,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -612792,6 +643650,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -612824,6 +643723,88 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -612964,6 +643945,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -613280,6 +644287,9 @@ + + + @@ -613326,6 +644336,13 @@ + + + + + + + @@ -613343,6 +644360,10 @@ + + + + @@ -613390,6 +644411,10 @@ + + + + @@ -613401,6 +644426,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -613408,6 +644454,10 @@ + + + + @@ -613441,6 +644491,11 @@ + + + + + @@ -613807,6 +644862,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -613841,6 +644939,92 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -614711,6 +645895,9 @@ + + + @@ -614788,6 +645975,13 @@ + + + + + + + @@ -614805,6 +645999,10 @@ + + + + @@ -614852,6 +646050,10 @@ + + + + @@ -614863,6 +646065,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -614870,6 +646093,10 @@ + + + + @@ -614887,6 +646114,11 @@ + + + + + @@ -615357,6 +646589,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -615456,6 +646731,9 @@ + + + @@ -615487,6 +646765,13 @@ + + + + + + + @@ -615504,6 +646789,10 @@ + + + + @@ -615551,6 +646840,10 @@ + + + + @@ -615562,6 +646855,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -615569,6 +646883,10 @@ + + + + @@ -615586,6 +646904,11 @@ + + + + + @@ -616415,6 +647738,90 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -616442,6 +647849,9 @@ + + + @@ -616466,6 +647876,23 @@ + + + + + + + + + + + + + + + + + @@ -616486,6 +647913,13 @@ + + + + + + + @@ -616503,6 +647937,10 @@ + + + + @@ -616550,6 +647988,10 @@ + + + + @@ -616561,6 +648003,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -616568,6 +648031,10 @@ + + + + @@ -616585,6 +648052,11 @@ + + + + + @@ -616598,6 +648070,24 @@ + + + + + + + + + + + + + + + + + + @@ -617002,6 +648492,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -617093,6 +648626,81 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -617676,6 +649284,142 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -617691,6 +649435,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -617756,7 +649541,7 @@ - + @@ -617858,6 +649643,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -617912,7 +649733,7 @@ - + @@ -618019,6 +649840,9 @@ + + + @@ -618154,6 +649978,13 @@ + + + + + + + @@ -618169,6 +650000,76 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -618176,6 +650077,10 @@ + + + + @@ -618288,6 +650193,10 @@ + + + + @@ -618305,6 +650214,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -618366,6 +650296,10 @@ + + + + @@ -618381,6 +650315,24 @@ + + + + + + + + + + + + + + + + + + @@ -618482,6 +650434,11 @@ + + + + + @@ -618497,6 +650454,25 @@ + + + + + + + + + + + + + + + + + + + @@ -620388,6 +652364,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -620827,6 +652846,88 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -621424,6 +653525,9 @@ + + + @@ -621474,6 +653578,13 @@ + + + + + + + @@ -621491,6 +653602,10 @@ + + + + @@ -621549,6 +653664,10 @@ + + + + @@ -621560,6 +653679,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -621591,6 +653731,10 @@ + + + + @@ -621608,6 +653752,11 @@ + + + + + @@ -622937,6 +655086,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + @@ -627694,7 +659868,7 @@ - + @@ -628930,6 +661104,23 @@ + + + + + + + + + + + + + + + + + @@ -629722,7 +661913,7 @@ - + @@ -629757,7 +661948,7 @@ - + @@ -630900,6 +663091,24 @@ + + + + + + + + + + + + + + + + + + @@ -630979,6 +663188,21 @@ + + + + + + + + + + + + + + + @@ -631961,18 +664185,18 @@ - - - + + + - - - + + + @@ -631981,18 +664205,18 @@ - - - + + + - - - + + + @@ -633509,6 +665733,9 @@ + + + @@ -633559,6 +665786,13 @@ + + + + + + + @@ -633576,6 +665810,10 @@ + + + + @@ -633623,6 +665861,10 @@ + + + + @@ -633634,6 +665876,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -633641,6 +665904,10 @@ + + + + @@ -633658,6 +665925,11 @@ + + + + + @@ -633800,6 +666072,25 @@ + + + + + + + + + + + + + + + + + + + @@ -634852,6 +667143,50 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -634903,7 +667238,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + @@ -637083,6 +669442,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -639737,7 +672137,7 @@ - + @@ -639758,7 +672158,7 @@ - + @@ -639805,7 +672205,7 @@ - + @@ -640392,7 +672792,7 @@ - + @@ -640404,7 +672804,7 @@ - + @@ -641514,7 +673914,7 @@ - + @@ -641704,7 +674104,7 @@ - + @@ -641826,7 +674226,7 @@ - + @@ -642436,6 +674836,11 @@ + + + + + @@ -642858,7 +675263,7 @@ - + @@ -642890,7 +675295,7 @@ - + @@ -646367,7 +678772,7 @@ - + @@ -646723,6 +679128,23 @@ + + + + + + + + + + + + + + + + + @@ -646735,6 +679157,23 @@ + + + + + + + + + + + + + + + + + @@ -646759,6 +679198,23 @@ + + + + + + + + + + + + + + + + + @@ -646834,6 +679290,23 @@ + + + + + + + + + + + + + + + + + @@ -647106,6 +679579,24 @@ + + + + + + + + + + + + + + + + + + @@ -647126,6 +679617,24 @@ + + + + + + + + + + + + + + + + + + @@ -647146,6 +679655,24 @@ + + + + + + + + + + + + + + + + + + @@ -647210,6 +679737,24 @@ + + + + + + + + + + + + + + + + + + @@ -647592,7 +680137,7 @@ - + @@ -647890,6 +680435,23 @@ + + + + + + + + + + + + + + + + + @@ -648229,6 +680791,24 @@ + + + + + + + + + + + + + + + + + + @@ -648403,6 +680983,16 @@ + + + + + + + + + + @@ -649153,6 +681743,20 @@ + + + + + + + + + + + + + + @@ -649615,6 +682219,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -650148,6 +682788,56 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -650320,6 +683010,14 @@ + + + + + + + + @@ -655328,7 +688026,7 @@ - + @@ -670597,7 +703295,7 @@ - + @@ -670630,7 +703328,7 @@ - + @@ -671216,7 +703914,7 @@ - + @@ -672859,7 +705557,7 @@ - + @@ -674325,7 +707023,7 @@ - + @@ -674513,7 +707211,7 @@ - + @@ -674768,6 +707466,179 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -675942,6 +708813,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + @@ -675973,6 +708868,199 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -676040,6 +709128,7 @@ + @@ -676056,6 +709145,13 @@ + + + + + + + @@ -682400,7 +715496,7 @@ - + diff --git a/tools/apidiff/references/xm/Xamarin.Mac/Mono.Security.xml b/tools/apidiff/references/xm/Xamarin.Mac/Mono.Security.xml index 5ca091c5a4..4d59838b6b 100755 --- a/tools/apidiff/references/xm/Xamarin.Mac/Mono.Security.xml +++ b/tools/apidiff/references/xm/Xamarin.Mac/Mono.Security.xml @@ -3784,6 +3784,13 @@ + + + + + + + @@ -3947,6 +3954,9 @@ + + + @@ -4288,15 +4298,10 @@ - - - - - - - - - + + + + @@ -4324,18 +4329,6 @@ - - - - - - - - - - - - @@ -4357,6 +4350,24 @@ + + + + + + + + + + + + + + + + + + diff --git a/tools/apidiff/references/xm/Xamarin.Mac/System.Core.xml b/tools/apidiff/references/xm/Xamarin.Mac/System.Core.xml index d5b48f6dae..8236e08b0a 100755 --- a/tools/apidiff/references/xm/Xamarin.Mac/System.Core.xml +++ b/tools/apidiff/references/xm/Xamarin.Mac/System.Core.xml @@ -2792,7 +2792,6 @@ - @@ -17711,6 +17710,9 @@ + + + @@ -17726,6 +17728,12 @@ + + + + + + diff --git a/tools/apidiff/references/xm/Xamarin.Mac/System.IO.Compression.xml b/tools/apidiff/references/xm/Xamarin.Mac/System.IO.Compression.xml index 16207469b4..ced312abb4 100755 --- a/tools/apidiff/references/xm/Xamarin.Mac/System.IO.Compression.xml +++ b/tools/apidiff/references/xm/Xamarin.Mac/System.IO.Compression.xml @@ -185,6 +185,18 @@ + + + + + + + + + + + + diff --git a/tools/apidiff/references/xm/Xamarin.Mac/System.xml b/tools/apidiff/references/xm/Xamarin.Mac/System.xml index 32a922a4a3..8e8019a174 100755 --- a/tools/apidiff/references/xm/Xamarin.Mac/System.xml +++ b/tools/apidiff/references/xm/Xamarin.Mac/System.xml @@ -28198,6 +28198,7 @@ + @@ -36639,7 +36640,7 @@ - + @@ -36808,7 +36809,10 @@ - + + + + @@ -43958,6 +43962,13 @@ + + + + + + + diff --git a/tools/apidiff/references/xm/Xamarin.Mac/Xamarin.Mac.xml b/tools/apidiff/references/xm/Xamarin.Mac/Xamarin.Mac.xml index 2f893813dc..a01bd8427a 100755 --- a/tools/apidiff/references/xm/Xamarin.Mac/Xamarin.Mac.xml +++ b/tools/apidiff/references/xm/Xamarin.Mac/Xamarin.Mac.xml @@ -16,7 +16,7 @@ - + @@ -91,6 +91,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + @@ -716,7 +741,7 @@ - + @@ -782,6 +807,51 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -825,9 +895,15 @@ - + - + + + + + + + @@ -1681,6 +1757,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1905,6 +2029,21 @@ + + + + + + + + + + + + + + + @@ -1927,6 +2066,16 @@ + + + + + + + + + + @@ -2055,6 +2204,18 @@ + + + + + + + + + + + + @@ -4936,6 +5097,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + @@ -5394,7 +5580,7 @@ - + @@ -6719,6 +6905,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -7370,6 +7597,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -8741,7 +9010,7 @@ - + @@ -8996,6 +9265,72 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -9125,7 +9460,7 @@ - + @@ -9986,6 +10321,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -10004,10 +10380,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + - - + + @@ -10018,8 +10419,8 @@ - - + + @@ -10042,6 +10443,132 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -10208,6 +10735,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -10262,6 +10809,25 @@ + + + + + + + + + + + + + + + + + + + @@ -10316,6 +10882,100 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -11997,6 +12657,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -12007,8 +12700,8 @@ - - + + @@ -12320,6 +13013,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -13435,6 +14148,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + @@ -13476,6 +14214,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + @@ -13510,6 +14273,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + @@ -14108,7 +14896,7 @@ - + @@ -14122,7 +14910,7 @@ - + @@ -15112,6 +15900,29 @@ + + + + + + + + + + + + + + + + + + + + + + + @@ -15132,6 +15943,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + @@ -15140,6 +15976,19 @@ + + + + + + + + + + + + + @@ -15150,6 +15999,21 @@ + + + + + + + + + + + + + + + @@ -15169,6 +16033,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + @@ -15178,6 +16066,20 @@ + + + + + + + + + + + + + + @@ -15199,6 +16101,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -15210,6 +16138,22 @@ + + + + + + + + + + + + + + + + @@ -15239,6 +16183,25 @@ + + + + + + + + + + + + + + + + + + + @@ -15264,7 +16227,7 @@ - + @@ -15650,7 +16613,7 @@ - + @@ -16349,6 +17312,25 @@ + + + + + + + + + + + + + + + + + + + @@ -16532,6 +17514,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -17058,6 +18060,7 @@ + @@ -17070,6 +18073,7 @@ + @@ -20471,6 +21475,181 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -20817,7 +21996,7 @@ - + @@ -20909,7 +22088,7 @@ - + @@ -20945,7 +22124,7 @@ - + @@ -21851,6 +23030,235 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -22735,7 +24143,7 @@ - + @@ -24122,17 +25530,11 @@ - + - + - - - - - - @@ -24275,6 +25677,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -24529,6 +25951,25 @@ + + + + + + + + + + + + + + + + + + + @@ -25645,6 +27086,224 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -25942,7 +27601,7 @@ - + @@ -26130,6 +27789,7 @@ + @@ -27190,6 +28850,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -27670,6 +29350,24 @@ + + + + + + + + + + + + + + + + + + @@ -27825,6 +29523,23 @@ + + + + + + + + + + + + + + + + + @@ -28230,6 +29945,14 @@ + + + + + + + + @@ -28454,6 +30177,298 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -28955,6 +30970,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -29340,6 +31469,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -29899,6 +32048,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -30298,6 +32467,111 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -31200,6 +33474,12 @@ + + + + + + @@ -32785,6 +35065,22 @@ + + + + + + + + + + + + + + + + @@ -32795,6 +35091,24 @@ + + + + + + + + + + + + + + + + + + @@ -34364,6 +36678,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -39042,6 +41412,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -40318,7 +42708,7 @@ - + @@ -40412,6 +42802,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -42442,6 +44852,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -43023,6 +45453,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -49389,6 +51857,7 @@ + @@ -49783,17 +52252,14 @@ - + + + + + - - - - - - - @@ -50248,6 +52714,549 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -50265,6 +53274,7 @@ + @@ -50680,6 +53690,251 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -51517,6 +54772,7 @@ + @@ -52414,6 +55670,8 @@ + + @@ -52421,6 +55679,8 @@ + + @@ -52432,6 +55692,10 @@ + + + + @@ -52439,6 +55703,10 @@ + + + + @@ -52526,9 +55794,19 @@ + + + + + + + + + + @@ -52536,9 +55814,19 @@ + + + + + + + + + + @@ -52925,6 +56213,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -53084,6 +56415,51 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -53108,6 +56484,24 @@ + + + + + + + + + + + + + + + + + + @@ -54932,6 +58326,24 @@ + + + + + + + + + + + + + + + + + + @@ -54980,6 +58392,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + @@ -55773,7 +59209,7 @@ - + @@ -55870,6 +59306,51 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -56396,6 +59877,184 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -57310,6 +60969,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -58603,6 +62294,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -58759,6 +62478,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -58921,11 +62675,15 @@ + + + + @@ -58952,11 +62710,13 @@ + + @@ -58966,11 +62726,15 @@ + + + + @@ -58980,12 +62744,16 @@ + + + + @@ -58996,9 +62764,15 @@ + + + + + + @@ -59048,7 +62822,7 @@ - + @@ -59092,6 +62866,8 @@ + + @@ -59130,6 +62906,8 @@ + + @@ -59168,6 +62946,7 @@ + @@ -59230,6 +63009,8 @@ + + @@ -59393,6 +63174,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -61372,6 +65186,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -65524,6 +69377,105 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -67329,6 +71281,17 @@ + + + + + + + + + + + @@ -68495,6 +72458,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -69385,6 +73402,7 @@ + @@ -71022,7 +75040,7 @@ - + @@ -74838,6 +78856,106 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -75751,6 +79869,80 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -75948,6 +80140,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -75988,6 +80233,20 @@ + + + + + + + + + + + + + + @@ -76188,6 +80447,20 @@ + + + + + + + + + + + + + + @@ -76552,6 +80825,20 @@ + + + + + + + + + + + + + + @@ -77608,6 +81895,952 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -77872,6 +83105,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -78176,6 +83443,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -82844,6 +88179,23 @@ + + + + + + + + + + + + + + + + + @@ -83690,6 +89042,20 @@ + + + + + + + + + + + + + + @@ -84053,6 +89419,20 @@ + + + + + + + + + + + + + + @@ -84213,6 +89593,20 @@ + + + + + + + + + + + + + + @@ -84281,6 +89675,20 @@ + + + + + + + + + + + + + + @@ -84526,6 +89934,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -84535,6 +89970,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -86223,7 +91688,7 @@ - + @@ -87664,6 +93129,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -87968,6 +93467,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -92752,6 +98319,7 @@ + @@ -93776,7 +99344,7 @@ - + @@ -95033,6 +100601,21 @@ + + + + + + + + + + + + + + + @@ -95634,6 +101217,18 @@ + + + + + + + + + + + + @@ -96240,6 +101835,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -97464,8 +103088,18 @@ - - + + + + + + + + + + + + @@ -98029,6 +103663,28 @@ + + + + + + + + + + + + + + + + + + + + + + @@ -98090,6 +103746,21 @@ + + + + + + + + + + + + + + + @@ -98097,6 +103768,7 @@ + @@ -98105,6 +103777,13 @@ + + + + + + + @@ -98130,6 +103809,7 @@ + @@ -98137,6 +103817,13 @@ + + + + + + + @@ -102310,6 +107997,7 @@ + @@ -102755,6 +108443,7 @@ + @@ -106059,6 +111748,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -106363,6 +112086,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -115152,6 +120943,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -115802,6 +121627,7 @@ + @@ -116418,6 +122244,7 @@ + @@ -116495,6 +122322,7 @@ + @@ -116931,6 +122759,7 @@ + @@ -117053,6 +122882,7 @@ + @@ -117518,6 +123348,7 @@ + @@ -117580,6 +123411,7 @@ + @@ -120442,6 +126274,24 @@ + + + + + + + + + + + + + + + + + + @@ -120535,7 +126385,13 @@ - + + + + + + + @@ -122048,6 +127904,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -122059,6 +127955,146 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -122112,12 +128148,31 @@ + + + + + + + + + + + + + + + + + + + - + @@ -122807,6 +128862,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -122936,6 +129020,20 @@ + + + + + + + + + + + + + + @@ -123081,7 +129179,7 @@ - + @@ -124297,6 +130395,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -125145,6 +131277,22 @@ + + + + + + + + + + + + + + + + @@ -125924,7 +132072,7 @@ - + @@ -130161,6 +136309,7 @@ + @@ -130172,6 +136321,7 @@ + @@ -130183,6 +136333,7 @@ + @@ -130196,6 +136347,7 @@ + @@ -130255,6 +136407,7 @@ + @@ -130268,6 +136421,7 @@ + @@ -133156,6 +139310,25 @@ + + + + + + + + + + + + + + + + + + + @@ -133679,6 +139852,7 @@ + @@ -134084,6 +140258,21 @@ + + + + + + + + + + + + + + + @@ -134359,6 +140548,20 @@ + + + + + + + + + + + + + + @@ -134838,6 +141041,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -135317,6 +141548,25 @@ + + + + + + + + + + + + + + + + + + + @@ -135507,6 +141757,25 @@ + + + + + + + + + + + + + + + + + + + @@ -137190,6 +143459,7 @@ + @@ -137357,6 +143627,7 @@ + @@ -138020,6 +144291,7 @@ + @@ -138101,6 +144373,7 @@ + @@ -138119,6 +144392,7 @@ + @@ -138410,6 +144684,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -138714,6 +145022,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -142332,9 +148708,13 @@ + + + + @@ -142343,9 +148723,13 @@ + + + + @@ -142895,9 +149279,13 @@ + + + + @@ -142906,9 +149294,13 @@ + + + + @@ -143852,6 +150244,7 @@ + @@ -144079,6 +150472,7 @@ + @@ -146668,6 +153062,7 @@ + @@ -146718,7 +153113,7 @@ - + @@ -146764,7 +153159,7 @@ - + @@ -147311,6 +153706,7 @@ + @@ -147321,6 +153717,7 @@ + @@ -147328,6 +153725,7 @@ + @@ -147338,6 +153736,7 @@ + @@ -147345,6 +153744,7 @@ + @@ -147355,6 +153755,7 @@ + @@ -147601,6 +154002,7 @@ + @@ -147627,6 +154029,7 @@ + @@ -147672,6 +154075,11 @@ + + + + + @@ -147714,6 +154122,50 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -147732,6 +154184,7 @@ + @@ -147825,6 +154278,7 @@ + @@ -148004,6 +154458,145 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -148138,6 +154731,7 @@ + @@ -148766,6 +155360,25 @@ + + + + + + + + + + + + + + + + + + + @@ -148971,6 +155584,21 @@ + + + + + + + + + + + + + + + @@ -150029,6 +156657,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + @@ -150070,6 +156723,16 @@ + + + + + + + + + + @@ -152408,7 +159071,7 @@ - + @@ -152511,7 +159174,7 @@ - + @@ -152839,6 +159502,25 @@ + + + + + + + + + + + + + + + + + + + @@ -152880,6 +159562,25 @@ + + + + + + + + + + + + + + + + + + + @@ -152970,10 +159671,27 @@ + + + + + + + + + + + + + + + + + @@ -153008,6 +159726,7 @@ + @@ -155703,6 +162422,25 @@ + + + + + + + + + + + + + + + + + + + @@ -155734,8 +162472,154 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -155750,6 +162634,22 @@ + + + + + + + + + + + + + + + + @@ -156656,6 +163556,7 @@ + @@ -156673,6 +163574,7 @@ + @@ -157393,7 +164295,7 @@ - + @@ -158349,6 +165251,11 @@ + + + + + @@ -158835,6 +165742,7 @@ + @@ -158894,6 +165802,7 @@ + @@ -160091,6 +167000,83 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -160187,6 +167173,14 @@ + + + + + + + + @@ -163683,6 +170677,22 @@ + + + + + + + + + + + + + + + + @@ -163758,6 +170768,22 @@ + + + + + + + + + + + + + + + + @@ -163877,6 +170903,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -163906,6 +170966,104 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -164025,6 +171183,108 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -164083,6 +171343,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -164547,6 +171841,22 @@ + + + + + + + + + + + + + + + + @@ -166753,6 +174063,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -167057,6 +174401,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -173354,6 +180766,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -173658,6 +181104,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -177179,6 +184693,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -178803,6 +186349,7 @@ + @@ -182281,6 +189828,28 @@ + + + + + + + + + + + + + + + + + + + + + + @@ -182902,6 +190471,7 @@ + @@ -186193,6 +193763,7 @@ + @@ -186428,6 +193999,7 @@ + @@ -189282,6 +196854,7 @@ + @@ -189877,9 +197450,13 @@ + + + + @@ -189917,9 +197494,13 @@ + + + + @@ -189927,9 +197508,13 @@ + + + + @@ -189947,9 +197532,13 @@ + + + + @@ -189974,6 +197563,76 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -189988,6 +197647,20 @@ + + + + + + + + + + + + + + @@ -190170,6 +197843,20 @@ + + + + + + + + + + + + + + @@ -190223,9 +197910,13 @@ + + + + @@ -190840,7 +198531,7 @@ - + @@ -191139,7 +198830,7 @@ - + @@ -194925,6 +202616,7 @@ + @@ -195198,6 +202890,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -195502,6 +203228,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -199010,6 +206804,17 @@ + + + + + + + + + + + @@ -199287,6 +207092,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -204087,6 +211912,7 @@ + @@ -204104,6 +211930,7 @@ + @@ -205450,6 +213277,21 @@ + + + + + + + + + + + + + + + @@ -208611,6 +216453,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -210267,6 +218147,7 @@ + @@ -217177,6 +225058,23 @@ + + + + + + + + + + + + + + + + + @@ -217762,6 +225660,7 @@ + @@ -217846,6 +225745,25 @@ + + + + + + + + + + + + + + + + + + + @@ -217926,6 +225844,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -218052,6 +226004,20 @@ + + + + + + + + + + + + + + @@ -218072,6 +226038,20 @@ + + + + + + + + + + + + + + @@ -218124,6 +226104,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -218188,6 +226210,21 @@ + + + + + + + + + + + + + + + @@ -218272,6 +226309,51 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -218286,6 +226368,20 @@ + + + + + + + + + + + + + + @@ -221599,6 +229695,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -221903,6 +230033,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -228344,7 +236542,7 @@ - + @@ -231493,6 +239691,7 @@ + @@ -231922,6 +240121,19 @@ + + + + + + + + + + + + + @@ -235628,6 +243840,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -242534,6 +250766,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -243205,6 +251469,7 @@ + @@ -246176,6 +254441,7 @@ + @@ -247215,6 +255481,20 @@ + + + + + + + + + + + + + + @@ -254029,6 +262309,15 @@ + + + + + + + + + @@ -254158,6 +262447,121 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -258471,6 +266875,7 @@ + @@ -262567,6 +270972,18 @@ + + + + + + + + + + + + @@ -267060,6 +275477,7 @@ + @@ -267348,6 +275766,7 @@ + @@ -267548,6 +275967,7 @@ + @@ -267935,6 +276355,312 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -268360,6 +277086,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -268664,6 +277424,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -272935,9 +281763,13 @@ + + + + @@ -276030,6 +284862,7 @@ + @@ -276067,6 +284900,7 @@ + @@ -276815,6 +285649,7 @@ + @@ -280457,6 +289292,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -280761,6 +289630,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -287161,6 +296098,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -288249,6 +297226,7 @@ + @@ -288562,6 +297540,7 @@ + @@ -288724,7 +297703,7 @@ - + @@ -289549,6 +298528,7 @@ + @@ -289941,6 +298921,20 @@ + + + + + + + + + + + + + + @@ -293429,6 +302423,412 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -294251,6 +303651,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -295793,6 +305231,24 @@ + + + + + + + + + + + + + + + + + + @@ -296033,6 +305489,8 @@ + + @@ -298166,6 +307624,14 @@ + + + + + + + + @@ -298173,6 +307639,14 @@ + + + + + + + + @@ -298289,6 +307763,7 @@ + @@ -298308,6 +307783,7 @@ + @@ -298427,7 +307903,7 @@ - + @@ -300788,6 +310264,117 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -300847,6 +310434,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + @@ -300960,6 +310572,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + @@ -300994,6 +310631,7 @@ + @@ -301007,6 +310645,7 @@ + @@ -301535,6 +311174,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -302061,6 +311741,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -302119,6 +311853,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -302740,6 +312512,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -303065,7 +312876,7 @@ - + @@ -303097,7 +312908,7 @@ - + @@ -303114,6 +312925,7 @@ + @@ -303207,6 +313019,17 @@ + + + + + + + + + + + @@ -303687,7 +313510,7 @@ - + @@ -303711,7 +313534,7 @@ - + @@ -303739,7 +313562,7 @@ - + @@ -304518,6 +314341,7 @@ + @@ -304540,6 +314364,24 @@ + + + + + + + + + + + + + + + + + + @@ -304708,6 +314550,134 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -305104,11 +315074,17 @@ + + + + + + - + @@ -305258,6 +315234,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -305831,6 +315840,14 @@ + + + + + + + + @@ -305842,6 +315859,14 @@ + + + + + + + + @@ -306273,6 +316298,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -306437,7 +316530,7 @@ - + @@ -309522,6 +319615,14 @@ + + + + + + + + @@ -309965,6 +320066,50 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -309975,6 +320120,8 @@ + + @@ -310989,6 +321136,7 @@ + @@ -311159,6 +321307,19 @@ + + + + + + + + + + + + + @@ -312686,6 +322847,8 @@ + + @@ -312819,6 +322982,8 @@ + + @@ -314053,6 +324218,158 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -314110,7 +324427,7 @@ - + @@ -314493,6 +324810,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -314585,6 +324937,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -314617,6 +325004,238 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -314665,6 +325284,7 @@ + @@ -314718,6 +325338,501 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -314788,9 +325903,6 @@ - - - @@ -314801,9 +325913,6 @@ - - - @@ -314814,9 +325923,6 @@ - - - @@ -314824,75 +325930,39 @@ - + - - - - + - - + + - - - - - + - - + + - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -314903,9 +325973,6 @@ - - - @@ -314916,9 +325983,6 @@ - - - @@ -314928,9 +325992,6 @@ - - - @@ -314941,9 +326002,6 @@ - - - @@ -314954,9 +326012,6 @@ - - - @@ -314964,54 +326019,321 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - + - + + - - - - + - + + - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -319170,6 +330492,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -319545,6 +330893,8 @@ + + @@ -320119,6 +331469,28 @@ + + + + + + + + + + + + + + + + + + + + + + @@ -320173,6 +331545,50 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -320258,6 +331674,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -320341,6 +331793,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -321780,7 +333279,7 @@ - + @@ -322629,7 +334128,7 @@ - + @@ -322655,7 +334154,7 @@ - + @@ -322681,7 +334180,7 @@ - + @@ -322723,6 +334222,18 @@ + + + + + + + + + + + + @@ -322732,6 +334243,12 @@ + + + + + + @@ -323048,7 +334565,7 @@ - + @@ -323074,7 +334591,7 @@ - + @@ -323102,7 +334619,7 @@ - + @@ -323523,6 +335040,22 @@ + + + + + + + + + + + + + + + + @@ -323593,6 +335126,22 @@ + + + + + + + + + + + + + + + + @@ -324028,6 +335577,8 @@ + + @@ -325796,6 +337347,9 @@ + + + @@ -326144,6 +337698,10 @@ + + + + @@ -326156,8 +337714,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -326572,6 +338165,14 @@ + + + + + + + + @@ -326584,6 +338185,11 @@ + + + + + @@ -327433,7 +339039,9 @@ + + @@ -328094,6 +339702,7 @@ + @@ -328106,6 +339715,7 @@ + @@ -328117,6 +339727,7 @@ + @@ -328227,6 +339838,23 @@ + + + + + + + + + + + + + + + + + @@ -328391,7 +340019,9 @@ + + @@ -328576,7 +340206,9 @@ + + @@ -328818,6 +340450,7 @@ + @@ -329224,6 +340857,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -329257,6 +340911,7 @@ + @@ -329571,6 +341226,7 @@ + @@ -330996,6 +342652,7 @@ + @@ -331736,6 +343393,7 @@ + @@ -331989,7 +343647,9 @@ + + @@ -332372,6 +344032,7 @@ + @@ -332690,7 +344351,7 @@ - + @@ -332979,6 +344640,11 @@ + + + + + @@ -333719,6 +345385,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -335646,6 +347355,7 @@ + @@ -335837,6 +347547,7 @@ + @@ -335905,6 +347616,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -335941,6 +347693,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -336096,6 +347889,7 @@ + @@ -336315,7 +348109,9 @@ + + @@ -336540,6 +348336,7 @@ + @@ -336938,6 +348735,7 @@ + @@ -337166,6 +348964,7 @@ + @@ -337716,7 +349515,9 @@ + + @@ -337955,6 +349756,7 @@ + @@ -338404,6 +350206,7 @@ + @@ -339058,6 +350861,7 @@ + @@ -339177,7 +350981,9 @@ + + @@ -339430,6 +351236,7 @@ + @@ -340211,6 +352018,218 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -340343,6 +352362,9 @@ + + + @@ -340460,6 +352482,7 @@ + @@ -340490,6 +352513,7 @@ + @@ -340514,6 +352538,7 @@ + @@ -340704,6 +352729,7 @@ + @@ -340806,8 +352832,107 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -340823,7 +352948,7 @@ - + @@ -340832,6 +352957,8 @@ + + @@ -340932,6 +353059,9 @@ + + + @@ -340963,7 +353093,7 @@ - + @@ -340973,6 +353103,7 @@ + @@ -341022,6 +353153,7 @@ + @@ -341048,6 +353180,7 @@ + @@ -341082,6 +353215,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -341092,6 +353262,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -341108,6 +353310,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -341135,18 +353385,8 @@ - - - - - - - - - - @@ -341244,8 +353484,10 @@ + + @@ -341354,6 +353596,7 @@ + @@ -341477,6 +353720,7 @@ + @@ -341494,6 +353738,7 @@ + @@ -341588,6 +353833,7 @@ + @@ -341602,6 +353848,7 @@ + @@ -341629,6 +353876,7 @@ + @@ -341644,7 +353892,7 @@ - + @@ -341653,6 +353901,7 @@ + @@ -341724,6 +353973,7 @@ + @@ -341736,6 +353986,7 @@ + @@ -341801,31 +354052,6 @@ - - - - - - - - - - - - - - - - - - - - - - - - - @@ -341914,6 +354140,7 @@ + @@ -341927,9 +354154,17 @@ - + + + + + - + + + + + @@ -341937,6 +354172,7 @@ + @@ -341949,7 +354185,7 @@ - + @@ -341958,6 +354194,7 @@ + @@ -342019,23 +354256,6 @@ - - - - - - - - - - - - - - - - - @@ -342183,6 +354403,7 @@ + @@ -342192,8 +354413,18 @@ - - + + + + + + + + + + + + @@ -342204,10 +354435,18 @@ + + + + + + + + @@ -342222,7 +354461,236 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -342247,6 +354715,7 @@ + @@ -342288,6 +354757,8 @@ + + @@ -342423,6 +354894,7 @@ + @@ -342436,6 +354908,7 @@ + @@ -342447,6 +354920,8 @@ + + @@ -342498,6 +354973,7 @@ + @@ -342539,6 +355015,8 @@ + + @@ -342568,6 +355046,7 @@ + @@ -342609,6 +355088,8 @@ + + @@ -342690,6 +355171,7 @@ + @@ -342702,6 +355184,7 @@ + @@ -342713,6 +355196,7 @@ + @@ -342722,11 +355206,12 @@ + - + @@ -342735,10 +355220,11 @@ + - + @@ -342746,6 +355232,8 @@ + + @@ -342756,15 +355244,17 @@ - + - + + + @@ -342802,6 +355292,119 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -342824,32 +355427,13 @@ - - - - - - - - - - - - - - - - - - - - - + + @@ -342861,8 +355445,10 @@ + + @@ -342889,6 +355475,8 @@ + + @@ -342901,6 +355489,8 @@ + + @@ -342978,22 +355568,15 @@ + + - - - - - - - - - - + @@ -343077,6 +355660,22 @@ + + + + + + + + + + + + + + + + @@ -343169,6 +355768,7 @@ + @@ -343222,6 +355822,24 @@ + + + + + + + + + + + + + + + + + + @@ -343292,6 +355910,23 @@ + + + + + + + + + + + + + + + + + @@ -343317,21 +355952,11 @@ - + - - - - - - - - - - - + @@ -343451,6 +356076,21 @@ + + + + + + + + + + + + + + + @@ -343504,6 +356144,20 @@ + + + + + + + + + + + + + + @@ -343527,17 +356181,7 @@ - - - - - - - - - - - + @@ -343710,7 +356354,7 @@ - + @@ -343720,6 +356364,7 @@ + @@ -343735,11 +356380,7 @@ - - - - - + @@ -343778,6 +356419,7 @@ + @@ -343792,9 +356434,11 @@ + + @@ -343920,18 +356564,8 @@ - - - - - - - - - - @@ -343972,6 +356606,9 @@ + + + @@ -344001,6 +356638,22 @@ + + + + + + + + + + + + + + + + @@ -344085,6 +356738,22 @@ + + + + + + + + + + + + + + + + @@ -344104,6 +356773,7 @@ + @@ -344120,6 +356790,7 @@ + @@ -344145,6 +356816,7 @@ + @@ -344242,6 +356914,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -344367,6 +357093,51 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -344424,6 +357195,102 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -344477,6 +357344,7 @@ + @@ -344540,6 +357408,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -344571,6 +357487,7 @@ + @@ -344582,7 +357499,12 @@ - + + + + + + @@ -344662,7 +357584,7 @@ - + @@ -344671,6 +357593,7 @@ + @@ -344815,24 +357738,6 @@ - - - - - - - - - - - - - - - - - - @@ -344902,6 +357807,7 @@ + @@ -344997,9 +357903,6 @@ - - - @@ -345088,6 +357991,24 @@ + + + + + + + + + + + + + + + + + + @@ -345222,6 +358143,7 @@ + @@ -345424,6 +358346,7 @@ + @@ -345471,7 +358394,7 @@ - + @@ -345608,6 +358531,29 @@ + + + + + + + + + + + + + + + + + + + + + + + @@ -345721,6 +358667,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -345746,6 +358726,9 @@ + + + @@ -345775,6 +358758,9 @@ + + + @@ -345807,6 +358793,9 @@ + + + @@ -345865,6 +358854,7 @@ + @@ -345937,6 +358927,14 @@ + + + + + + + + @@ -346834,6 +359832,22 @@ + + + + + + + + + + + + + + + + @@ -347833,6 +360847,10 @@ + + + + @@ -347845,6 +360863,10 @@ + + + + @@ -347857,6 +360879,10 @@ + + + + @@ -347865,6 +360891,92 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -349024,6 +362136,507 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -351736,6 +365349,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -354203,6 +367857,888 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -354772,6 +369308,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -354789,6 +369365,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -354810,6 +369406,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -355220,6 +369836,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -356496,6 +371132,10 @@ + + + + @@ -356506,6 +371146,10 @@ + + + + @@ -356516,6 +371160,10 @@ + + + + @@ -356644,6 +371292,10 @@ + + + + @@ -356655,6 +371307,10 @@ + + + + @@ -356666,6 +371322,10 @@ + + + + @@ -357032,8 +371692,10 @@ + + @@ -357055,6 +371717,25 @@ + + + + + + + + + + + + + + + + + + + @@ -357123,6 +371804,19 @@ + + + + + + + + + + + + + @@ -357832,6 +372526,14 @@ + + + + + + + + @@ -358199,7 +372901,7 @@ - + @@ -361053,7 +375755,7 @@ - + @@ -361777,6 +376479,18 @@ + + + + + + + + + + + + @@ -361803,7 +376517,7 @@ - + @@ -361913,7 +376627,7 @@ - + @@ -361966,6 +376680,12 @@ + + + + + + @@ -361977,6 +376697,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -361998,6 +376738,13 @@ + + + + + + + @@ -362037,6 +376784,10 @@ + + + + @@ -362267,6 +377018,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -362776,6 +377547,15 @@ + + + + + + + + + @@ -363212,11 +377992,28 @@ + + + + + + + + + + + + + + + + + @@ -365624,6 +380421,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -365950,12 +380768,30 @@ + + + + + + + + + + + + + + + + + + @@ -365967,6 +380803,17 @@ + + + + + + + + + + + @@ -365984,6 +380831,24 @@ + + + + + + + + + + + + + + + + + + @@ -366325,6 +381190,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -368006,7 +382943,7 @@ - + @@ -368019,7 +382956,7 @@ - + @@ -369280,6 +384217,202 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -369389,6 +384522,128 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -369574,6 +384829,829 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -370068,7 +386146,7 @@ - + @@ -371044,6 +387122,7 @@ + @@ -371084,6 +387163,7 @@ + @@ -371114,6 +387194,7 @@ + @@ -371161,6 +387242,7 @@ + @@ -371184,6 +387266,7 @@ + @@ -371224,6 +387307,7 @@ + @@ -371247,6 +387331,7 @@ + @@ -371304,6 +387389,7 @@ + @@ -371327,6 +387413,7 @@ + @@ -371350,6 +387437,7 @@ + @@ -373389,6 +389477,25 @@ + + + + + + + + + + + + + + + + + + + @@ -373548,11 +389655,113 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -373572,6 +389781,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -373592,6 +389822,29 @@ + + + + + + + + + + + + + + + + + + + + + + + @@ -373613,6 +389866,29 @@ + + + + + + + + + + + + + + + + + + + + + + + @@ -374403,6 +390679,223 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -379072,7 +395565,7 @@ - + @@ -380977,6 +397470,22 @@ + + + + + + + + + + + + + + + + @@ -381132,6 +397641,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -381243,6 +397781,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -381385,6 +397963,150 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -381452,9 +398174,13 @@ + + + + @@ -381652,6 +398378,22 @@ + + + + + + + + + + + + + + + + @@ -381727,6 +398469,22 @@ + + + + + + + + + + + + + + + + @@ -382042,6 +398800,51 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -382101,6 +398904,22 @@ + + + + + + + + + + + + + + + + @@ -382206,7 +399025,13 @@ - + + + + + + + @@ -382239,7 +399064,7 @@ - + @@ -382248,11 +399073,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -382338,7 +399198,7 @@ - + @@ -382347,11 +399207,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -382437,6 +399333,22 @@ + + + + + + + + + + + + + + + + @@ -382524,6 +399436,29 @@ + + + + + + + + + + + + + + + + + + + + + + + @@ -382605,6 +399540,22 @@ + + + + + + + + + + + + + + + + @@ -382652,6 +399603,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -382853,6 +399841,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -385840,6 +402865,202 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -387228,19 +404449,23 @@ - + - + + + + + @@ -387262,6 +404487,239 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -387368,6 +404826,29 @@ + + + + + + + + + + + + + + + + + + + + + + + @@ -387405,6 +404886,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -388273,6 +405782,595 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -393603,6 +411701,18 @@ + + + + + + + + + + + + @@ -393807,6 +411917,18 @@ + + + + + + + + + + + + @@ -394392,6 +412514,9 @@ + + + @@ -394440,8 +412565,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -394465,6 +412617,90 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -394483,6 +412719,29 @@ + + + + + + + + + + + + + + + + + + + + + + + @@ -394491,6 +412750,19 @@ + + + + + + + + + + + + + @@ -394708,7 +412980,7 @@ - + @@ -395096,7 +413368,7 @@ - + @@ -396467,6 +414739,9 @@ + + + @@ -396478,6 +414753,9 @@ + + + @@ -396644,6 +414922,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + @@ -397392,6 +415695,1967 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -397416,6 +417680,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -398351,6 +418636,115 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -398722,7 +419116,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -398843,6 +419270,86 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -398879,6 +419386,18 @@ + + + + + + + + + + + + @@ -398903,6 +419422,18 @@ + + + + + + + + + + + + @@ -398915,6 +419446,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -399415,7 +420018,7 @@ - + @@ -399763,6 +420366,19 @@ + + + + + + + + + + + + + @@ -399783,6 +420399,19 @@ + + + + + + + + + + + + + @@ -399815,7 +420444,7 @@ - + @@ -402297,7 +422926,7 @@ - + @@ -405762,7 +426391,11 @@ - + + + + + @@ -405946,15 +426579,22 @@ + + + + + + + @@ -405970,15 +426610,21 @@ + + + + + + @@ -405988,10 +426634,13 @@ + + + @@ -406209,6 +426858,24 @@ + + + + + + + + + + + + + + + + + + @@ -406274,6 +426941,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -407576,6 +428263,24 @@ + + + + + + + + + + + + + + + + + + @@ -407650,6 +428355,8 @@ + + @@ -408207,6 +428914,9 @@ + + + @@ -408220,6 +428930,7 @@ + @@ -408299,6 +429010,23 @@ + + + + + + + + + + + + + + + + + @@ -408478,6 +429206,9 @@ + + + @@ -408513,6 +429244,9 @@ + + + @@ -408522,6 +429256,7 @@ + @@ -408753,9 +429488,9 @@ - + @@ -408769,7 +429504,7 @@ - + @@ -408779,9 +429514,9 @@ - + @@ -408795,7 +429530,7 @@ - + @@ -408805,9 +429540,9 @@ - + @@ -408821,9 +429556,9 @@ - + @@ -408837,7 +429572,7 @@ - + @@ -408856,6 +429591,24 @@ + + + + + + + + + + + + + + + + + + @@ -408977,6 +429730,24 @@ + + + + + + + + + + + + + + + + + + @@ -409079,10 +429850,10 @@ - + @@ -409095,9 +429866,27 @@ + + + + + + + + + + + + + + + + + + - + @@ -409107,7 +429896,7 @@ - + @@ -409115,12 +429904,30 @@ + + + + + + + + + + + + + + + + + + - + @@ -409135,7 +429942,7 @@ - + @@ -409143,6 +429950,24 @@ + + + + + + + + + + + + + + + + + + @@ -409153,11 +429978,27 @@ + + + + + + + + + + + + + + + + - + @@ -409171,7 +430012,7 @@ - + @@ -409181,7 +430022,7 @@ - + @@ -409189,9 +430030,25 @@ + + + + + + + + + + + + + + + + - + @@ -409206,9 +430063,307 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -409221,6 +430376,7 @@ + @@ -409472,6 +430628,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + @@ -409549,6 +430730,15 @@ + + + + + + + + + @@ -409561,7 +430751,7 @@ - + @@ -409578,7 +430768,7 @@ - + @@ -409596,6 +430786,7 @@ + @@ -409775,6 +430966,7 @@ + @@ -409790,6 +430982,7 @@ + @@ -410038,9 +431231,9 @@ - + @@ -410054,7 +431247,7 @@ - + @@ -410064,9 +431257,9 @@ - + @@ -410080,7 +431273,7 @@ - + @@ -410090,9 +431283,9 @@ - + @@ -410106,9 +431299,9 @@ - + @@ -410122,7 +431315,7 @@ - + @@ -410130,6 +431323,24 @@ + + + + + + + + + + + + + + + + + + @@ -410237,6 +431448,24 @@ + + + + + + + + + + + + + + + + + + @@ -410373,10 +431602,10 @@ - + @@ -410389,9 +431618,27 @@ + + + + + + + + + + + + + + + + + + - + @@ -410401,7 +431648,7 @@ - + @@ -410409,12 +431656,30 @@ + + + + + + + + + + + + + + + + + + - + @@ -410429,7 +431694,7 @@ - + @@ -410437,6 +431702,24 @@ + + + + + + + + + + + + + + + + + + @@ -410454,11 +431737,27 @@ + + + + + + + + + + + + + + + + - + @@ -410472,7 +431771,7 @@ - + @@ -410482,7 +431781,7 @@ - + @@ -410490,9 +431789,25 @@ + + + + + + + + + + + + + + + + - + @@ -410534,6 +431849,9 @@ + + + @@ -410563,6 +431881,7 @@ + @@ -410574,6 +431893,9 @@ + + + @@ -410614,6 +431936,7 @@ + @@ -410744,11 +432067,15 @@ + + + + @@ -410759,6 +432086,8 @@ + + @@ -410767,6 +432096,10 @@ + + + + @@ -410776,23 +432109,35 @@ + + + + + + + + + + + + @@ -410800,6 +432145,9 @@ + + + @@ -410829,6 +432177,9 @@ + + + @@ -410843,6 +432194,7 @@ + @@ -410856,6 +432208,9 @@ + + + @@ -410873,6 +432228,9 @@ + + + @@ -410928,6 +432286,7 @@ + @@ -410940,6 +432299,9 @@ + + + @@ -410954,6 +432316,7 @@ + @@ -413577,6 +434940,16 @@ + + + + + + + + + + @@ -413599,6 +434972,16 @@ + + + + + + + + + + @@ -416094,17 +437477,11 @@ - + - + - - - - - - @@ -417933,6 +439310,22 @@ + + + + + + + + + + + + + + + + @@ -420222,6 +441615,789 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -420409,6 +442585,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -420423,6 +442631,21 @@ + + + + + + + + + + + + + + + @@ -420625,6 +442848,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -420654,6 +442905,66 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -420718,6 +443029,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -420728,6 +443068,17 @@ + + + + + + + + + + + @@ -420746,6 +443097,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -420799,6 +443185,29 @@ + + + + + + + + + + + + + + + + + + + + + + + @@ -421804,6 +444213,8 @@ + + @@ -422300,6 +444711,17 @@ + + + + + + + + + + + @@ -422324,6 +444746,18 @@ + + + + + + + + + + + + @@ -422380,6 +444814,135 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -424393,6 +446956,28 @@ + + + + + + + + + + + + + + + + + + + + + + @@ -424445,6 +447030,8 @@ + + @@ -424500,6 +447087,78 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -424514,6 +447173,91 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -425536,7 +448280,7 @@ - + @@ -425558,7 +448302,7 @@ - + @@ -426544,6 +449288,24 @@ + + + + + + + + + + + + + + + + + + @@ -426676,6 +449438,24 @@ + + + + + + + + + + + + + + + + + + @@ -427900,7 +450680,7 @@ - + @@ -431119,7 +453899,7 @@ - + @@ -431225,7 +454005,7 @@ - + @@ -433012,6 +455792,14 @@ + + + + + + + + @@ -434756,6 +457544,8 @@ + + @@ -435361,6 +458151,8 @@ + + @@ -437935,6 +460727,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -438496,6 +461331,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -440847,6 +463725,24 @@ + + + + + + + + + + + + + + + + + + @@ -441120,6 +464016,24 @@ + + + + + + + + + + + + + + + + + + @@ -441374,7 +464288,7 @@ - + @@ -441496,6 +464410,20 @@ + + + + + + + + + + + + + + @@ -441707,6 +464635,8 @@ + + @@ -442794,6 +465724,22 @@ + + + + + + + + + + + + + + + + @@ -442875,6 +465821,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -443840,7 +466806,7 @@ - + @@ -443932,7 +466898,7 @@ - + @@ -443989,7 +466955,7 @@ - + @@ -445256,7 +468222,7 @@ - + @@ -445521,6 +468487,24 @@ + + + + + + + + + + + + + + + + + + @@ -446340,6 +469324,10 @@ + + + + @@ -447179,6 +470167,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -447764,7 +470786,7 @@ - + @@ -447908,7 +470930,7 @@ - + @@ -448161,6 +471183,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -448246,6 +471294,23 @@ + + + + + + + + + + + + + + + + + @@ -448500,6 +471565,15 @@ + + + + + + + + + @@ -448518,6 +471592,20 @@ + + + + + + + + + + + + + + @@ -448666,6 +471754,80 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -448937,6 +472099,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -449942,7 +473130,7 @@ - + @@ -452387,6 +475575,14 @@ + + + + + + + + @@ -452686,6 +475882,23 @@ + + + + + + + + + + + + + + + + + @@ -452846,6 +476059,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -452859,6 +476101,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -452872,6 +476149,147 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -452900,6 +476318,108 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -452948,7 +476468,7 @@ - + @@ -452974,6 +476494,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -452992,6 +476559,65 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -453063,6 +476689,23 @@ + + + + + + + + + + + + + + + + + @@ -453100,6 +476743,73 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -453286,6 +476996,14 @@ + + + + + + + + @@ -455189,6 +478907,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + @@ -455208,6 +478951,58 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -455228,6 +479023,24 @@ + + + + + + + + + + + + + + + + + + @@ -455241,6 +479054,23 @@ + + + + + + + + + + + + + + + + + @@ -455284,6 +479114,110 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -455332,6 +479266,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -457422,6 +481376,136 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -457439,6 +481523,175 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -457446,6 +481699,97 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -457468,6 +481812,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -457475,6 +481936,19 @@ + + + + + + + + + + + + + @@ -457486,6 +481960,188 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -457514,6 +482170,383 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -457521,6 +482554,344 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -457528,6 +482899,409 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -457643,6 +483417,58 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -457750,6 +483576,466 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -457757,6 +484043,146 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -457789,6 +484215,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -457804,6 +484350,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -457837,6 +484423,426 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -457848,6 +484854,286 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -457896,6 +485182,166 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -457913,6 +485359,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -457947,6 +485433,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -458027,6 +485533,166 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -458047,6 +485713,186 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -458086,6 +485932,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -458123,6 +485989,246 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -458154,6 +486260,86 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -458202,6 +486388,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -458226,6 +486532,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -458270,6 +486616,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -458338,6 +486704,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -458369,6 +486755,246 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -458505,6 +487131,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -458577,6 +487223,166 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -458635,6 +487441,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -458666,6 +487512,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -461328,7 +490214,7 @@ - + @@ -462644,6 +491530,8 @@ + + @@ -468470,7 +497358,7 @@ - + @@ -468834,7 +497722,7 @@ - + @@ -468861,7 +497749,7 @@ - + @@ -468885,7 +497773,7 @@ - + @@ -468909,7 +497797,7 @@ - + @@ -469594,7 +498482,7 @@ - + @@ -469718,7 +498606,7 @@ - + @@ -470357,7 +499245,7 @@ - + @@ -474005,6 +502893,9 @@ + + + @@ -474017,6 +502908,9 @@ + + + @@ -474027,11 +502921,17 @@ + + + + + + @@ -474175,6 +503075,10 @@ + + + + @@ -474404,6 +503308,18 @@ + + + + + + + + + + + + @@ -474438,6 +503354,18 @@ + + + + + + + + + + + + @@ -474462,6 +503390,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -474532,6 +503501,18 @@ + + + + + + + + + + + + @@ -474560,6 +503541,66 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -474764,6 +503805,18 @@ + + + + + + + + + + + + @@ -474953,6 +504006,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -476259,6 +505346,7 @@ + @@ -476266,6 +505354,7 @@ + @@ -479081,6 +508170,8 @@ + + @@ -479338,6 +508429,80 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -479665,6 +508830,23 @@ + + + + + + + + + + + + + + + + + @@ -479681,6 +508863,25 @@ + + + + + + + + + + + + + + + + + + + @@ -479832,7 +509033,7 @@ - + @@ -479864,6 +509065,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -481475,6 +510723,23 @@ + + + + + + + + + + + + + + + + + @@ -484382,17 +513647,11 @@ - + - + - - - - - - @@ -484448,6 +513707,7 @@ + @@ -484535,17 +513795,11 @@ - + - + - - - - - - @@ -484713,17 +513967,11 @@ - + - + - - - - - - @@ -484963,17 +514211,11 @@ - + - + - - - - - - @@ -485357,17 +514599,11 @@ - + - + - - - - - - @@ -485820,17 +515056,11 @@ - + - + - - - - - - @@ -485980,17 +515210,11 @@ - + - + - - - - - - @@ -486176,17 +515400,11 @@ - + - + - - - - - - @@ -486426,17 +515644,11 @@ - + - + - - - - - - @@ -486658,17 +515870,11 @@ - + - + - - - - - - @@ -486890,17 +516096,11 @@ - + - + - - - - - - @@ -487122,17 +516322,11 @@ - + - + - - - - - - @@ -487354,17 +516548,11 @@ - + - + - - - - - - @@ -487640,17 +516828,11 @@ - + - + - - - - - - @@ -487836,17 +517018,11 @@ - + - + - - - - - - @@ -487996,17 +517172,11 @@ - + - + - - - - - - @@ -488534,17 +517704,11 @@ - + - + - - - - - - @@ -488964,17 +518128,11 @@ - + - + - - - - - - @@ -489304,17 +518462,11 @@ - + - + - - - - - - @@ -489626,17 +518778,11 @@ - + - + - - - - - - @@ -490020,17 +519166,11 @@ - + - + - - - - - - @@ -490709,6 +519849,8 @@ + + @@ -491822,6 +520964,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -492117,6 +521285,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -492201,6 +521389,166 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -492218,6 +521566,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -492298,6 +521686,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -492364,6 +521772,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -492426,6 +521854,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -492460,6 +521908,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -492474,6 +521962,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -492484,6 +521992,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -492542,6 +522070,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -492624,6 +522172,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -492873,6 +522469,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -492968,7 +522600,7 @@ - + @@ -492979,6 +522611,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -494207,6 +523886,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -499173,7 +528895,7 @@ - + @@ -500248,6 +529970,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -500611,6 +530374,7 @@ + @@ -500717,6 +530481,25 @@ + + + + + + + + + + + + + + + + + + + @@ -501051,6 +530834,7 @@ + @@ -501643,6 +531427,7 @@ + @@ -501814,6 +531599,7 @@ + @@ -501938,6 +531724,88 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -501956,6 +531824,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -502027,6 +531938,25 @@ + + + + + + + + + + + + + + + + + + + @@ -502326,6 +532256,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -502429,6 +532401,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -503039,6 +533047,7 @@ + @@ -503375,6 +533384,8 @@ + + @@ -503387,7 +533398,7 @@ - + @@ -503476,6 +533487,8 @@ + + @@ -503490,6 +533503,8 @@ + + @@ -503502,6 +533517,8 @@ + + @@ -503511,6 +533528,8 @@ + + @@ -503525,6 +533544,8 @@ + + @@ -503537,6 +533558,8 @@ + + @@ -503546,6 +533569,8 @@ + + @@ -503560,6 +533585,8 @@ + + @@ -503572,6 +533599,8 @@ + + @@ -503581,6 +533610,8 @@ + + @@ -503596,6 +533627,8 @@ + + @@ -503609,6 +533642,8 @@ + + @@ -503618,6 +533653,8 @@ + + @@ -503633,6 +533670,8 @@ + + @@ -503646,6 +533685,8 @@ + + @@ -503682,8 +533723,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -503699,6 +533785,8 @@ + + @@ -503712,6 +533800,8 @@ + + @@ -503947,6 +534037,8 @@ + + @@ -504013,6 +534105,8 @@ + + @@ -506818,6 +536912,8 @@ + + @@ -507099,7 +537195,7 @@ - + @@ -507114,6 +537210,99 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -507692,6 +537881,177 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -512728,7 +543088,7 @@ - + @@ -512751,7 +543111,7 @@ - + @@ -514125,7 +544485,7 @@ - + @@ -514137,7 +544497,7 @@ - + @@ -514186,9 +544546,32 @@ + + + + + + + + + + + + + + + + + + + + + + + - + @@ -514200,7 +544583,7 @@ - + @@ -514275,7 +544658,7 @@ - + @@ -521240,7 +551623,7 @@ - + @@ -521562,7 +551945,7 @@ - + @@ -521726,7 +552109,7 @@ - + @@ -522447,7 +552830,7 @@ - + @@ -522872,7 +553255,7 @@ - + @@ -528391,7 +558774,7 @@ - + @@ -530377,6 +560760,17 @@ + + + + + + + + + + + @@ -530406,6 +560800,21 @@ + + + + + + + + + + + + + + + @@ -532403,6 +562812,23 @@ + + + + + + + + + + + + + + + + + @@ -532490,6 +562916,23 @@ + + + + + + + + + + + + + + + + + @@ -538886,6 +569329,175 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -539301,6 +569913,23 @@ + + + + + + + + + + + + + + + + + @@ -540852,6 +571481,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -540893,6 +571561,910 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -541036,6 +572608,110 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -541058,6 +572734,18 @@ + + + + + + + + + + + + @@ -542214,6 +573902,66 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -543892,6 +575640,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -544298,6 +576066,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -544898,6 +576686,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -545298,6 +577126,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -545540,6 +577388,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -545792,6 +577660,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -545867,6 +577775,18 @@ + + + + + + + + + + + + @@ -554626,6 +586546,17 @@ + + + + + + + + + + + @@ -554741,6 +586672,17 @@ + + + + + + + + + + + @@ -554812,6 +586754,17 @@ + + + + + + + + + + + @@ -554834,6 +586787,17 @@ + + + + + + + + + + + @@ -554896,6 +586860,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + @@ -555000,6 +586988,17 @@ + + + + + + + + + + + @@ -555112,6 +587111,24 @@ + + + + + + + + + + + + + + + + + + @@ -555130,6 +587147,424 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -555143,12 +587578,182 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -555257,27 +587862,11 @@ - - - - - - - - - - - - - - - - @@ -555324,6 +587913,22 @@ + + + + + + + + + + + + + + + + @@ -555376,7 +587981,6 @@ - @@ -555384,6 +587988,25 @@ + + + + + + + + + + + + + + + + + + + @@ -555393,6 +588016,29 @@ + + + + + + + + + + + + + + + + + + + + + + + @@ -555411,6 +588057,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + @@ -555750,6 +588420,24 @@ + + + + + + + + + + + + + + + + + + @@ -555861,6 +588549,29 @@ + + + + + + + + + + + + + + + + + + + + + + + @@ -556834,7 +589545,6 @@ - @@ -556845,6 +589555,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -556871,6 +589627,29 @@ + + + + + + + + + + + + + + + + + + + + + + + @@ -556889,6 +589668,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + @@ -556906,6 +589709,29 @@ + + + + + + + + + + + + + + + + + + + + + + + @@ -556986,6 +589812,13 @@ + + + + + + + @@ -557007,6 +589840,13 @@ + + + + + + + @@ -557120,27 +589960,11 @@ - - - - - - - - - - - - - - - - @@ -557255,33 +590079,51 @@ - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -557409,6 +590251,29 @@ + + + + + + + + + + + + + + + + + + + + + + + @@ -557469,9 +590334,9 @@ - - - + + + @@ -557482,6 +590347,9 @@ + + + @@ -557505,6 +590373,29 @@ + + + + + + + + + + + + + + + + + + + + + + + @@ -557614,6 +590505,29 @@ + + + + + + + + + + + + + + + + + + + + + + + @@ -558312,6 +591226,182 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -558402,7 +591492,9 @@ - + + + @@ -558412,6 +591504,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -558434,6 +591562,9 @@ + + + @@ -558445,6 +591576,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -558493,6 +591651,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -558517,6 +591706,9 @@ + + + @@ -558530,6 +591722,24 @@ + + + + + + + + + + + + + + + + + + @@ -558646,6 +591856,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -558694,7 +591944,21 @@ + + + + + + + + + + + + + + @@ -558781,6 +592045,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + @@ -558788,7 +592076,9 @@ - + + + @@ -558849,6 +592139,9 @@ + + + @@ -558860,6 +592153,9 @@ + + + @@ -558867,6 +592163,9 @@ + + + @@ -558878,6 +592177,9 @@ + + + @@ -559063,6 +592365,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -559117,6 +592467,9 @@ + + + @@ -559160,6 +592513,24 @@ + + + + + + + + + + + + + + + + + + @@ -559318,6 +592689,13 @@ + + + + + + + @@ -559415,7 +592793,9 @@ - + + + @@ -559426,6 +592806,28 @@ + + + + + + + + + + + + + + + + + + + + + + @@ -559452,8 +592854,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -559464,6 +592892,9 @@ + + + @@ -559522,6 +592953,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + @@ -559561,6 +593016,9 @@ + + + @@ -559576,6 +593034,9 @@ + + + @@ -559589,6 +593050,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -559699,6 +593196,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -559723,6 +593260,159 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -559808,15 +593498,6 @@ - - - - - - - - - @@ -559825,6 +593506,29 @@ + + + + + + + + + + + + + + + + + + + + + + + @@ -559834,9 +593538,9 @@ - - - + + + @@ -559847,6 +593551,9 @@ + + + @@ -559892,6 +593599,29 @@ + + + + + + + + + + + + + + + + + + + + + + + @@ -560042,6 +593772,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + @@ -560119,7 +593874,9 @@ - + + + @@ -560139,6 +593896,24 @@ + + + + + + + + + + + + + + + + + + @@ -560166,6 +593941,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + @@ -560203,6 +594002,24 @@ + + + + + + + + + + + + + + + + + + @@ -560342,6 +594159,20 @@ + + + + + + + + + + + + + + @@ -560647,6 +594478,18 @@ + + + + + + + + + + + + @@ -562640,6 +596483,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -562704,6 +596588,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -562904,6 +596829,8 @@ + + @@ -562951,13 +596878,32 @@ + + + + - - - + + + + + + + + + + + + + + + + + + @@ -563312,6 +597258,18 @@ + + + + + + + + + + + + @@ -563769,6 +597727,108 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -563804,6 +597864,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -564131,6 +598230,29 @@ + + + + + + + + + + + + + + + + + + + + + + + @@ -564174,6 +598296,24 @@ + + + + + + + + + + + + + + + + + + @@ -564554,6 +598694,189 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -564607,6 +598930,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -565838,6 +600196,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -567491,6 +601881,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -568469,6 +602879,13 @@ + + + + + + + @@ -568679,6 +603096,18 @@ + + + + + + + + + + + + @@ -569458,6 +603887,23 @@ + + + + + + + + + + + + + + + + + @@ -569641,6 +604087,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -569928,6 +604403,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -570010,6 +604515,24 @@ + + + + + + + + + + + + + + + + + + @@ -570275,6 +604798,21 @@ + + + + + + + + + + + + + + + @@ -571842,6 +606380,23 @@ + + + + + + + + + + + + + + + + + @@ -571887,6 +606442,24 @@ + + + + + + + + + + + + + + + + + + @@ -576462,6 +611035,20 @@ + + + + + + + + + + + + + + @@ -576560,6 +611147,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -577624,6 +612239,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -577699,6 +612349,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -577841,6 +612526,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -578052,10 +612769,87 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -578173,11 +612967,13 @@ + + @@ -578225,6 +613021,13 @@ + + + + + + + @@ -578519,6 +613322,16 @@ + + + + + + + + + + @@ -578590,6 +613403,80 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -578696,6 +613583,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -578758,6 +613683,9 @@ + + + @@ -578873,6 +613801,29 @@ + + + + + + + + + + + + + + + + + + + + + + + @@ -579104,12 +614055,14 @@ + + @@ -579211,6 +614164,24 @@ + + + + + + + + + + + + + + + + + + @@ -580438,6 +615409,13 @@ + + + + + + + @@ -581045,6 +616023,424 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -581163,6 +616559,28 @@ + + + + + + + + + + + + + + + + + + + + + + @@ -581337,6 +616755,18 @@ + + + + + + + + + + + + @@ -581442,6 +616872,170 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -581554,6 +617148,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -582333,6 +617947,10 @@ + + + + @@ -582512,6 +618130,83 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -582772,6 +618467,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + @@ -582917,6 +618636,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -582999,6 +618754,18 @@ + + + + + + + + + + + + @@ -583195,6 +618962,16 @@ + + + + + + + + + + @@ -583219,6 +618996,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -583291,6 +619115,102 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -583738,6 +619658,97 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -583746,6 +619757,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + @@ -583933,6 +619968,332 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -584153,6 +620514,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -584677,6 +621071,28 @@ + + + + + + + + + + + + + + + + + + + + + + @@ -584743,6 +621159,105 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -585306,6 +621821,39 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -585402,6 +621950,15 @@ + + + + + + + + + @@ -585451,6 +622008,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -585896,6 +622489,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + @@ -586261,6 +622878,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + @@ -586312,6 +622954,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + @@ -586497,6 +623164,322 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -586508,12 +623491,28 @@ + + + + + + + + + + + + + + + + - + @@ -586575,6 +623574,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + @@ -586582,6 +623606,56 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -587119,16 +624193,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + @@ -587138,29 +624236,85 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -587252,6 +624406,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -587563,6 +624745,19 @@ + + + + + + + + + + + + + @@ -587578,6 +624773,362 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -587650,6 +625201,14 @@ + + + + + + + + @@ -587742,6 +625301,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -587966,6 +625552,20 @@ + + + + + + + + + + + + + + @@ -587980,6 +625580,94 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -588045,6 +625733,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + @@ -588300,6 +626013,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + @@ -588379,11 +626117,163 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -588699,12 +626589,108 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -588771,6 +626757,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -588786,6 +626799,80 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -588804,6 +626891,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -588813,6 +626929,15 @@ + + + + + + + + + @@ -588822,6 +626947,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -588831,6 +626997,24 @@ + + + + + + + + + + + + + + + + + + @@ -588995,23 +627179,20 @@ + + - - - + - - - @@ -589029,6 +627210,14 @@ + + + + + + + + @@ -589039,6 +627228,14 @@ + + + + + + + + @@ -589048,6 +627245,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -589056,6 +627301,14 @@ + + + + + + + + @@ -589348,6 +627601,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -589405,6 +627687,202 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -589440,6 +627918,14 @@ + + + + + + + + @@ -589563,6 +628049,25 @@ + + + + + + + + + + + + + + + + + + + @@ -589641,6 +628146,21 @@ + + + + + + + + + + + + + + + @@ -589655,6 +628175,20 @@ + + + + + + + + + + + + + + @@ -589669,6 +628203,20 @@ + + + + + + + + + + + + + + @@ -589690,6 +628238,219 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -589732,6 +628493,14 @@ + + + + + + + + @@ -589802,6 +628571,198 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -589874,6 +628835,25 @@ + + + + + + + + + + + + + + + + + + + @@ -590100,10 +629080,26 @@ + + + + + + + + + + + + + + + - + + @@ -590127,6 +629123,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -590154,6 +629179,20 @@ + + + + + + + + + + + + + + @@ -590184,6 +629223,21 @@ + + + + + + + + + + + + + + + @@ -590197,6 +629251,96 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -590532,6 +629676,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -591117,6 +630304,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -591849,6 +631082,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + @@ -592034,6 +631292,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -592336,6 +631635,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + @@ -592599,7 +631923,7 @@ - + @@ -592624,11 +631948,58 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -592638,8 +632009,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -593123,6 +632521,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -593805,6 +633244,14 @@ + + + + + + + + @@ -593826,6 +633273,25 @@ + + + + + + + + + + + + + + + + + + + @@ -593888,6 +633354,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + @@ -593946,6 +633437,56 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -593972,7 +633513,7 @@ - + @@ -594638,6 +634179,147 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -594724,6 +634406,24 @@ + + + + + + + + + + + + + + + + + + @@ -594796,6 +634496,96 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -595701,16 +635491,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + @@ -595720,29 +635534,85 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -600788,6 +640658,77 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -600804,6 +640745,23 @@ + + + + + + + + + + + + + + + + + @@ -601611,6 +641569,1779 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -601885,6 +643616,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -602075,6 +643846,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -602104,6 +643915,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -602301,6 +644152,22 @@ + + + + + + + + + + + + + + + + @@ -602327,6 +644194,20 @@ + + + + + + + + + + + + + + @@ -602419,6 +644300,139 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -602974,6 +644988,17 @@ + + + + + + + + + + + @@ -602989,6 +645014,16 @@ + + + + + + + + + + @@ -603562,6 +645597,24 @@ + + + + + + + + + + + + + + + + + + @@ -604449,6 +646502,22 @@ + + + + + + + + + + + + + + + + @@ -604473,6 +646542,22 @@ + + + + + + + + + + + + + + + + @@ -604630,6 +646715,17 @@ + + + + + + + + + + + @@ -604638,6 +646734,16 @@ + + + + + + + + + + @@ -604915,6 +647021,17 @@ + + + + + + + + + + + @@ -604944,6 +647061,21 @@ + + + + + + + + + + + + + + + @@ -605076,6 +647208,7 @@ + @@ -605142,6 +647275,22 @@ + + + + + + + + + + + + + + + + @@ -605672,6 +647821,152 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -606138,6 +648433,24 @@ + + + + + + + + + + + + + + + + + + @@ -606467,6 +648780,22 @@ + + + + + + + + + + + + + + + + @@ -606639,10 +648968,28 @@ + + + + + + + + + + + + + + + + + + @@ -608111,7 +650458,7 @@ - + @@ -608373,6 +650720,295 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -608537,6 +651173,22 @@ + + + + + + + + + + + + + + + + @@ -609103,6 +651755,149 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -609350,6 +652145,127 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -609434,6 +652350,29 @@ + + + + + + + + + + + + + + + + + + + + + + + @@ -609708,6 +652647,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -609911,6 +652888,17 @@ + + + + + + + + + + + @@ -609926,6 +652914,16 @@ + + + + + + + + + + @@ -609957,6 +652955,17 @@ + + + + + + + + + + + @@ -609972,6 +652981,16 @@ + + + + + + + + + + @@ -610003,6 +653022,17 @@ + + + + + + + + + + + @@ -610018,6 +653048,16 @@ + + + + + + + + + + @@ -610049,6 +653089,17 @@ + + + + + + + + + + + @@ -610064,6 +653115,16 @@ + + + + + + + + + + @@ -611188,6 +654249,22 @@ + + + + + + + + + + + + + + + + @@ -611265,6 +654342,41 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -611278,6 +654390,7 @@ + @@ -611776,12 +654889,31 @@ + + + + + + + + + + + + + + + + + + + @@ -611822,6 +654954,17 @@ + + + + + + + + + + + @@ -611829,6 +654972,18 @@ + + + + + + + + + + + + @@ -612115,6 +655270,17 @@ + + + + + + + + + + + @@ -612122,6 +655288,12 @@ + + + + + + @@ -612157,6 +655329,25 @@ + + + + + + + + + + + + + + + + + + + @@ -612254,6 +655445,17 @@ + + + + + + + + + + + @@ -612261,6 +655463,18 @@ + + + + + + + + + + + + @@ -612343,6 +655557,23 @@ + + + + + + + + + + + + + + + + + @@ -612373,6 +655604,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -612385,6 +655644,1640 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -613741,6 +658634,7 @@ + @@ -613914,6 +658808,17 @@ + + + + + + + + + + + @@ -613929,6 +658834,16 @@ + + + + + + + + + + @@ -614058,12 +658973,31 @@ + + + + + + + + + + + + + + + + + + + @@ -614179,6 +659113,13 @@ + + + + + + + @@ -614192,6 +659133,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -617958,6 +662931,159 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -621415,7 +666541,7 @@ - + @@ -621735,7 +666861,7 @@ - + @@ -624154,6 +669280,24 @@ + + + + + + + + + + + + + + + + + + @@ -624525,6 +669669,14 @@ + + + + + + + + @@ -625246,6 +670398,80 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -626611,7 +671837,7 @@ - + @@ -629179,7 +674405,7 @@ - + @@ -629456,6 +674682,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -629702,6 +674949,7 @@ + @@ -629710,6 +674958,7 @@ + @@ -629719,6 +674968,7 @@ + @@ -629741,6 +674991,7 @@ + @@ -629750,7 +675001,7 @@ - + @@ -629758,8 +675009,9 @@ - + + @@ -629963,6 +675215,18 @@ + + + + + + + + + + + + @@ -630012,6 +675276,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -630026,6 +675311,20 @@ + + + + + + + + + + + + + + @@ -630354,7 +675653,7 @@ - + @@ -630701,7 +676000,7 @@ - + @@ -630781,7 +676080,7 @@ - + @@ -631444,7 +676743,7 @@ - + @@ -634034,6 +679333,959 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -639535,13 +685787,68 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + - + + + + + + + + + + + + + + + + + + + + + + + @@ -639555,6 +685862,28 @@ + + + + + + + + + + + + + + + + + + + + + + @@ -639611,6 +685940,7 @@ + @@ -639621,9 +685951,9 @@ - + - + @@ -639705,6 +686035,7 @@ + @@ -639719,6 +686050,7 @@ + @@ -639821,6 +686153,7 @@ + @@ -639866,6 +686199,7 @@ + @@ -639933,6 +686267,7 @@ + @@ -639978,6 +686313,7 @@ + @@ -640039,6 +686375,7 @@ + @@ -640069,6 +686406,7 @@ + @@ -640127,6 +686465,7 @@ + @@ -640241,6 +686580,7 @@ + @@ -640369,6 +686709,7 @@ + @@ -640414,6 +686755,7 @@ + @@ -640481,6 +686823,7 @@ + @@ -640514,6 +686857,8 @@ + + @@ -640565,8 +686910,202 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -640625,6 +687164,138 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -640661,6 +687332,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -640690,6 +687393,208 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -640707,6 +687612,189 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -640738,6 +687826,7 @@ + @@ -640748,6 +687837,7 @@ + @@ -640758,6 +687848,7 @@ + @@ -640765,6 +687856,70 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -640780,10 +687935,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -640794,6 +687981,7 @@ + @@ -640804,6 +687992,7 @@ + @@ -640811,6 +688000,85 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -640869,8 +688137,77 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -640881,6 +688218,7 @@ + @@ -640901,6 +688239,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -640932,8 +688316,186 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -640954,12 +688516,29 @@ + + + + + + + + + + + + + + + + + @@ -640973,6 +688552,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -640980,10 +688602,123 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -640994,6 +688729,8 @@ + + @@ -641082,6 +688819,18 @@ + + + + + + + + + + + + @@ -641362,6 +689111,8 @@ + + @@ -641655,6 +689406,8 @@ + + @@ -641774,6 +689527,8 @@ + + @@ -641943,6 +689698,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -641951,6 +689746,8 @@ + + @@ -642078,6 +689875,84 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -642086,6 +689961,8 @@ + + @@ -642313,6 +690190,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -642321,6 +690240,8 @@ + + @@ -642484,6 +690405,8 @@ + + @@ -642644,6 +690567,8 @@ + + @@ -642763,6 +690688,8 @@ + + @@ -642882,6 +690809,8 @@ + + @@ -642993,6 +690922,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -643001,6 +690979,8 @@ + + @@ -643112,6 +691092,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -643120,6 +691143,8 @@ + + @@ -643222,6 +691247,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -643345,6 +691399,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -643434,8 +691517,431 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -643465,6 +691971,7 @@ + @@ -643661,6 +692168,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -643743,8 +692270,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -643768,6 +692334,7 @@ + @@ -643826,6 +692393,7 @@ + @@ -643876,6 +692444,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -643908,6 +692508,7 @@ + @@ -643923,8 +692524,25 @@ + + + + + + + + + + + + + + + + + @@ -643947,6 +692565,7 @@ + @@ -643979,6 +692598,7 @@ + @@ -644005,6 +692625,7 @@ + @@ -644026,6 +692647,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -644043,6 +692702,63 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -644094,8 +692810,136 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -644104,6 +692948,7 @@ + @@ -644114,6 +692959,7 @@ + @@ -644140,6 +692986,18 @@ + + + + + + + + + + + + @@ -644288,6 +693146,16 @@ + + + + + + + + + + @@ -644355,7 +693223,9 @@ + + @@ -644408,6 +693278,15 @@ + + + + + + + + + @@ -644415,6 +693294,17 @@ + + + + + + + + + + + @@ -644422,6 +693312,16 @@ + + + + + + + + + + @@ -644429,6 +693329,17 @@ + + + + + + + + + + + @@ -644437,6 +693348,15 @@ + + + + + + + + + @@ -644444,6 +693364,17 @@ + + + + + + + + + + + @@ -644451,6 +693382,15 @@ + + + + + + + + + @@ -644458,6 +693398,17 @@ + + + + + + + + + + + @@ -644489,6 +693440,12 @@ + + + + + + @@ -644515,6 +693472,23 @@ + + + + + + + + + + + + + + + + + @@ -644598,6 +693572,14 @@ + + + + + + + + @@ -644651,6 +693633,16 @@ + + + + + + + + + + @@ -644665,7 +693657,252 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -644673,10 +693910,11 @@ - + + @@ -644737,12 +693975,27 @@ + + + + + + + + + + + + + + + @@ -644756,6 +694009,19 @@ + + + + + + + + + + + + + @@ -644769,6 +694035,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + @@ -644817,6 +694108,8 @@ + + @@ -644825,6 +694118,16 @@ + + + + + + + + + + @@ -644835,6 +694138,16 @@ + + + + + + + + + + @@ -644845,6 +694158,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -644879,6 +694212,7 @@ + @@ -644892,8 +694226,74 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -644912,6 +694312,7 @@ + @@ -644933,6 +694334,7 @@ + @@ -644987,6 +694389,7 @@ + @@ -644997,6 +694400,7 @@ + @@ -645007,6 +694411,7 @@ + @@ -645226,6 +694631,7 @@ + @@ -645258,6 +694664,7 @@ + @@ -645430,6 +694837,23 @@ + + + + + + + + + + + + + + + + + @@ -645511,12 +694935,29 @@ + + + + + + + + + + + + + + + + + @@ -645609,6 +695050,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -645669,16 +695139,33 @@ + + + + + + + + + + + + + + + + + @@ -645700,6 +695187,7 @@ + @@ -645729,6 +695217,7 @@ + @@ -645784,6 +695273,7 @@ + @@ -645794,6 +695284,7 @@ + @@ -645933,6 +695424,18 @@ + + + + + + + + + + + + @@ -645946,6 +695449,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -645961,6 +695493,7 @@ + @@ -645986,6 +695519,7 @@ + @@ -646017,6 +695551,19 @@ + + + + + + + + + + + + + @@ -646066,6 +695613,7 @@ + @@ -646076,6 +695624,7 @@ + @@ -646086,6 +695635,7 @@ + @@ -646095,6 +695645,7 @@ + @@ -646105,6 +695656,7 @@ + @@ -646115,6 +695667,7 @@ + @@ -646132,6 +695685,7 @@ + @@ -646142,6 +695696,7 @@ + @@ -646158,8 +695713,20 @@ + + + + + + + + + + + + @@ -646170,6 +695737,7 @@ + @@ -646180,6 +695748,7 @@ + @@ -646189,6 +695758,7 @@ + @@ -646199,6 +695769,7 @@ + @@ -646209,6 +695780,7 @@ + @@ -646255,6 +695827,7 @@ + @@ -646292,6 +695865,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -646301,10 +695906,12 @@ + + @@ -646333,6 +695940,19 @@ + + + + + + + + + + + + + @@ -646380,8 +696000,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -646392,6 +696049,8 @@ + + @@ -646402,6 +696061,8 @@ + + @@ -646772,6 +696433,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -646870,6 +696563,38 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -646958,6 +696683,7 @@ + @@ -646968,6 +696694,7 @@ + @@ -646978,6 +696705,7 @@ + @@ -647014,6 +696742,136 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -647025,6 +696883,17 @@ + + + + + + + + + + + @@ -647065,6 +696934,25 @@ + + + + + + + + + + + + + + + + + + + @@ -647078,6 +696966,7 @@ + @@ -647088,6 +696977,7 @@ + @@ -647098,6 +696988,7 @@ + @@ -647134,6 +697025,17 @@ + + + + + + + + + + + @@ -647186,6 +697088,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -647210,6 +697165,20 @@ + + + + + + + + + + + + + + @@ -647308,12 +697277,28 @@ + + + + + + + + + + + + + + + + @@ -647321,12 +697306,28 @@ + + + + + + + + + + + + + + + + @@ -647612,6 +697613,7 @@ + @@ -647626,6 +697628,7 @@ + @@ -647694,6 +697697,7 @@ + @@ -647707,6 +697711,7 @@ + @@ -647860,6 +697865,17 @@ + + + + + + + + + + + @@ -647882,6 +697898,17 @@ + + + + + + + + + + + @@ -647942,10 +697969,11 @@ - + + @@ -648046,6 +698074,7 @@ + @@ -648059,6 +698088,7 @@ + @@ -648072,6 +698102,7 @@ + @@ -648133,6 +698164,7 @@ + @@ -648143,6 +698175,7 @@ + @@ -648153,6 +698186,7 @@ + @@ -648272,8 +698306,26 @@ + + + + + + + + + + + + + + + + + + @@ -648427,6 +698479,50 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -648604,6 +698700,443 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -648623,6 +699156,317 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -648645,11 +699489,19 @@ + + + + + + + + @@ -648658,6 +699510,14 @@ + + + + + + + + @@ -648715,6 +699575,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -648764,6 +699664,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -648807,6 +699728,450 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -648830,6 +700195,269 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -648851,7 +700479,7 @@ - + @@ -648861,7 +700489,7 @@ - + @@ -649035,6 +700663,24 @@ + + + + + + + + + + + + + + + + + + @@ -649142,6 +700788,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + @@ -649331,6 +701001,876 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -649349,6 +701889,649 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -649635,13 +702818,21 @@ + + + + + + + + + + + + + - - - - - @@ -649654,6 +702845,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + @@ -649663,13 +702879,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - @@ -649682,6 +702918,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + @@ -649691,8 +702952,52 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -649745,6 +703050,2679 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -653475,6 +709453,7 @@ + @@ -656018,7 +711997,7 @@ - + @@ -658417,6 +714396,7 @@ + @@ -661071,6 +717051,7 @@ + @@ -663520,6 +719501,7 @@ + @@ -663541,6 +719523,7 @@ + @@ -663573,6 +719556,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + @@ -664364,6 +720372,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -664578,6 +720607,7 @@ + @@ -664599,6 +720629,20 @@ + + + + + + + + + + + + + + @@ -665039,6 +721083,17 @@ + + + + + + + + + + + @@ -665069,6 +721124,18 @@ + + + + + + + + + + + + @@ -665126,6 +721193,17 @@ + + + + + + + + + + + @@ -665171,6 +721249,12 @@ + + + + + + @@ -665199,6 +721283,20 @@ + + + + + + + + + + + + + + @@ -665215,6 +721313,14 @@ + + + + + + + + @@ -665257,6 +721363,14 @@ + + + + + + + + @@ -665274,6 +721388,14 @@ + + + + + + + + @@ -665284,6 +721406,61 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -665430,6 +721607,318 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -666494,6 +722983,17 @@ + + + + + + + + + + + @@ -666631,6 +723131,231 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -667249,7 +723974,7 @@ - + @@ -667659,6 +724384,24 @@ + + + + + + + + + + + + + + + + + + @@ -667666,6 +724409,9 @@ + + + @@ -667684,6 +724430,23 @@ + + + + + + + + + + + + + + + + + @@ -667691,6 +724454,13 @@ + + + + + + + @@ -667705,6 +724475,10 @@ + + + + @@ -667743,6 +724517,10 @@ + + + + @@ -667751,6 +724529,24 @@ + + + + + + + + + + + + + + + + + + @@ -667758,6 +724554,10 @@ + + + + @@ -667772,6 +724572,11 @@ + + + + + @@ -667789,8 +724594,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -667805,6 +724659,803 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -667815,7 +725466,7 @@ - + @@ -667932,6 +725583,539 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -668487,6 +726671,375 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -668699,6 +727252,14 @@ + + + + + + + + @@ -669309,6 +727870,10 @@ + + + + @@ -669321,6 +727886,10 @@ + + + + @@ -669333,6 +727902,10 @@ + + + + @@ -669342,6 +727915,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -669822,8 +728436,94 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -669836,6 +728536,10 @@ + + + + @@ -669848,6 +728552,10 @@ + + + + @@ -669857,8 +728565,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -669871,6 +728624,10 @@ + + + + @@ -669883,6 +728640,51 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -669894,6 +728696,10 @@ + + + + @@ -669906,6 +728712,10 @@ + + + + @@ -669918,6 +728728,51 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -670107,6 +728962,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -670181,6 +729079,252 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -670323,6 +729467,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -670439,6 +729624,10 @@ + + + + @@ -670449,6 +729638,10 @@ + + + + @@ -670459,6 +729652,10 @@ + + + + @@ -670468,6 +729665,10 @@ + + + + @@ -670478,6 +729679,10 @@ + + + + @@ -670488,6 +729693,10 @@ + + + + @@ -670573,6 +729782,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -670633,6 +729863,9 @@ + + + @@ -670657,6 +729890,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -670664,6 +729917,13 @@ + + + + + + + @@ -670681,6 +729941,10 @@ + + + + @@ -670728,6 +729992,10 @@ + + + + @@ -670739,6 +730007,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -670746,6 +730035,10 @@ + + + + @@ -670763,6 +730056,11 @@ + + + + + @@ -670778,6 +730076,768 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -671054,6 +731114,29 @@ + + + + + + + + + + + + + + + + + + + + + + + @@ -671390,6 +731473,88 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -671442,6 +731607,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -671475,6 +731661,9 @@ + + + @@ -671499,6 +731688,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -671506,6 +731715,13 @@ + + + + + + + @@ -671523,6 +731739,10 @@ + + + + @@ -671570,6 +731790,10 @@ + + + + @@ -671581,6 +731805,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -671588,6 +731833,10 @@ + + + + @@ -671605,6 +731854,11 @@ + + + + + @@ -671881,14 +732135,254 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -671965,6 +732459,24 @@ + + + + + + + + + + + + + + + + + + @@ -672747,6 +733259,90 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -672801,6 +733397,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -672873,7 +733490,7 @@ - + @@ -672889,6 +733506,9 @@ + + + @@ -672913,6 +733533,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -673053,6 +733693,13 @@ + + + + + + + @@ -673070,6 +733717,10 @@ + + + + @@ -673117,6 +733768,10 @@ + + + + @@ -673128,6 +733783,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -673162,6 +733838,10 @@ + + + + @@ -673197,6 +733877,11 @@ + + + + + @@ -673337,6 +734022,129 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -673354,6 +734162,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -673908,6 +734759,349 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -673999,6 +735193,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -674102,6 +735316,13 @@ + + + + + + + @@ -674358,6 +735579,25 @@ + + + + + + + + + + + + + + + + + + + @@ -674540,6 +735780,29 @@ + + + + + + + + + + + + + + + + + + + + + + + @@ -674568,6 +735831,7 @@ + @@ -675947,6 +737211,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -676033,6 +737338,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -676161,6 +737507,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -676224,6 +737611,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -676256,6 +737684,88 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -676396,6 +737906,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -676681,6 +738217,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -676741,6 +738298,9 @@ + + + @@ -676765,6 +738325,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -676787,6 +738367,13 @@ + + + + + + + @@ -676804,6 +738391,10 @@ + + + + @@ -676851,6 +738442,10 @@ + + + + @@ -676862,6 +738457,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -676869,6 +738485,10 @@ + + + + @@ -676902,6 +738522,11 @@ + + + + + @@ -677253,6 +738878,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -677287,6 +738955,92 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -677473,6 +739227,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -677519,6 +739316,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + @@ -677565,6 +739387,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -678127,6 +739992,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -678187,6 +740073,9 @@ + + + @@ -678211,6 +740100,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -678264,6 +740173,13 @@ + + + + + + + @@ -678281,6 +740197,10 @@ + + + + @@ -678328,6 +740248,10 @@ + + + + @@ -678339,6 +740263,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -678346,6 +740291,10 @@ + + + + @@ -678363,6 +740312,11 @@ + + + + + @@ -678864,6 +740818,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -678942,6 +740939,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -678976,6 +740994,9 @@ + + + @@ -679000,6 +741021,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -679007,6 +741048,13 @@ + + + + + + + @@ -679024,6 +741072,10 @@ + + + + @@ -679071,6 +741123,10 @@ + + + + @@ -679082,6 +741138,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -679089,6 +741166,10 @@ + + + + @@ -679106,6 +741187,11 @@ + + + + + @@ -679829,6 +741915,90 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -679849,6 +742019,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -679869,6 +742060,9 @@ + + + @@ -679893,6 +742087,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -679913,6 +742144,13 @@ + + + + + + + @@ -679930,6 +742168,10 @@ + + + + @@ -679977,6 +742219,10 @@ + + + + @@ -679988,6 +742234,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -679995,6 +742262,10 @@ + + + + @@ -680012,6 +742283,11 @@ + + + + + @@ -680025,6 +742301,24 @@ + + + + + + + + + + + + + + + + + + @@ -680430,6 +742724,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -680521,6 +742858,81 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -681104,6 +743516,142 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -681119,6 +743667,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -681152,6 +743741,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -681274,6 +743884,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -681341,7 +743987,7 @@ - + @@ -681464,6 +744110,9 @@ + + + @@ -681493,6 +744142,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -681599,6 +744268,13 @@ + + + + + + + @@ -681614,6 +744290,76 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -681621,6 +744367,10 @@ + + + + @@ -681733,6 +744483,10 @@ + + + + @@ -681750,6 +744504,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -681811,6 +744586,10 @@ + + + + @@ -681826,6 +744605,24 @@ + + + + + + + + + + + + + + + + + + @@ -681927,6 +744724,11 @@ + + + + + @@ -681942,6 +744744,25 @@ + + + + + + + + + + + + + + + + + + + @@ -683830,6 +746651,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -684269,6 +747133,88 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -684802,6 +747748,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -684879,6 +747846,9 @@ + + + @@ -684903,6 +747873,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -684929,6 +747919,13 @@ + + + + + + + @@ -684946,6 +747943,10 @@ + + + + @@ -685004,6 +748005,10 @@ + + + + @@ -685015,6 +748020,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -685046,6 +748072,10 @@ + + + + @@ -685063,6 +748093,11 @@ + + + + + @@ -686255,6 +749290,315 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -686411,6 +749755,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + @@ -692604,6 +755973,25 @@ + + + + + + + + + + + + + + + + + + + @@ -692640,6 +756028,23 @@ + + + + + + + + + + + + + + + + + @@ -692810,6 +756215,328 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -692826,6 +756553,7 @@ + @@ -693474,7 +757202,7 @@ - + @@ -693509,7 +757237,7 @@ - + @@ -694664,7 +758392,7 @@ - + @@ -694700,7 +758428,7 @@ - + @@ -694821,6 +758549,24 @@ + + + + + + + + + + + + + + + + + + @@ -694900,6 +758646,21 @@ + + + + + + + + + + + + + + + @@ -695695,18 +759456,18 @@ - - - + + + - - - + + + @@ -695715,18 +759476,18 @@ - - - + + + - - - + + + @@ -696858,6 +760619,204 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -697158,6 +761117,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -697217,6 +761197,9 @@ + + + @@ -697241,6 +761224,26 @@ + + + + + + + + + + + + + + + + + + + + @@ -697267,6 +761270,13 @@ + + + + + + + @@ -697284,6 +761294,10 @@ + + + + @@ -697331,6 +761345,10 @@ + + + + @@ -697342,6 +761360,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -697349,6 +761388,10 @@ + + + + @@ -697366,6 +761409,11 @@ + + + + + @@ -697497,6 +761545,25 @@ + + + + + + + + + + + + + + + + + + + @@ -697929,6 +761996,142 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -698502,6 +762705,50 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -698553,7 +762800,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + @@ -700059,6 +764330,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + @@ -700227,6 +764523,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + @@ -700552,6 +764873,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -703905,7 +768267,7 @@ - + @@ -703917,7 +768279,7 @@ - + @@ -705186,7 +769548,7 @@ - + @@ -705308,7 +769670,7 @@ - + @@ -705917,6 +770279,11 @@ + + + + + @@ -706339,7 +770706,7 @@ - + @@ -706946,11 +771313,15 @@ + + + + @@ -706960,11 +771331,13 @@ + + @@ -706974,11 +771347,15 @@ + + + + @@ -706988,12 +771365,16 @@ + + + + @@ -707004,11 +771385,15 @@ + + + + @@ -709629,11 +774014,7 @@ - - - - - + @@ -710789,6 +775170,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -711061,6 +775479,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -711150,6 +775599,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -712616,6 +777102,21 @@ + + + + + + + + + + + + + + + @@ -712627,6 +777128,22 @@ + + + + + + + + + + + + + + + + @@ -713727,6 +778244,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -713943,6 +778503,131 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -714018,6 +778703,23 @@ + + + + + + + + + + + + + + + + + @@ -714486,11 +779188,7 @@ - - - - - + @@ -714573,6 +779271,8 @@ + + @@ -714586,6 +779286,8 @@ + + @@ -714599,6 +779301,8 @@ + + @@ -715482,6 +780186,9 @@ + + + @@ -719351,6 +784058,364 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -719382,6 +784447,7 @@ + @@ -721528,6 +786594,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -722056,6 +787159,21 @@ + + + + + + + + + + + + + + + @@ -722072,6 +787190,22 @@ + + + + + + + + + + + + + + + + @@ -725179,6 +790313,248 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -725609,23 +790985,95 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -725682,6 +791130,13 @@ + + + + + + + @@ -725694,6 +791149,13 @@ + + + + + + + @@ -725706,6 +791168,13 @@ + + + + + + + @@ -725782,6 +791251,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -725882,6 +791471,17 @@ + + + + + + + + + + + @@ -725898,6 +791498,17 @@ + + + + + + + + + + + @@ -725914,6 +791525,17 @@ + + + + + + + + + + + @@ -725921,6 +791543,54 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -726043,7 +791713,7 @@ - + @@ -726081,7 +791751,6 @@ - @@ -726230,7 +791899,6 @@ - @@ -726249,6 +791917,7 @@ + @@ -726260,6 +791929,7 @@ + @@ -732998,6 +798668,23 @@ + + + + + + + + + + + + + + + + + @@ -733022,6 +798709,23 @@ + + + + + + + + + + + + + + + + + @@ -733046,6 +798750,23 @@ + + + + + + + + + + + + + + + + + @@ -733121,6 +798842,23 @@ + + + + + + + + + + + + + + + + + @@ -733393,6 +799131,24 @@ + + + + + + + + + + + + + + + + + + @@ -733413,6 +799169,24 @@ + + + + + + + + + + + + + + + + + + @@ -733433,6 +799207,24 @@ + + + + + + + + + + + + + + + + + + @@ -733497,6 +799289,24 @@ + + + + + + + + + + + + + + + + + + @@ -733879,7 +799689,7 @@ - + @@ -734177,6 +799987,23 @@ + + + + + + + + + + + + + + + + + @@ -734516,6 +800343,24 @@ + + + + + + + + + + + + + + + + + + @@ -734690,6 +800535,16 @@ + + + + + + + + + + @@ -735455,6 +801310,20 @@ + + + + + + + + + + + + + + @@ -735917,6 +801786,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -736450,6 +802355,56 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -736622,6 +802577,14 @@ + + + + + + + + @@ -736765,6 +802728,7162 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -741216,7 +814335,7 @@ - + @@ -755327,7 +828446,7 @@ - + @@ -755360,7 +828479,7 @@ - + @@ -755910,7 +829029,7 @@ - + @@ -757426,7 +830545,7 @@ - + @@ -758766,7 +831885,7 @@ - + @@ -758936,7 +832055,7 @@ - + @@ -759239,6 +832358,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -759492,6 +832638,222 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -760950,6 +834312,300 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -760962,6 +834618,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + @@ -761119,6 +834799,28 @@ + + + + + + + + + + + + + + + + + + + + + + @@ -761134,6 +834836,189 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -762786,6 +836671,151 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -763182,6 +837212,21 @@ + + + + + + + + + + + + + + + @@ -763222,6 +837267,19 @@ + + + + + + + + + + + + + @@ -763233,6 +837291,21 @@ + + + + + + + + + + + + + + + @@ -764040,6 +838113,21 @@ + + + + + + + + + + + + + + + @@ -764157,6 +838245,34 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -764543,6 +838659,37 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -764774,6 +838921,27 @@ + + + + + + + + + + + + + + + + + + + + + diff --git a/tools/apidiff/references/xm/Xamarin.Mac/mscorlib.xml b/tools/apidiff/references/xm/Xamarin.Mac/mscorlib.xml index 7cf1f7aeec..eae6d610e0 100755 --- a/tools/apidiff/references/xm/Xamarin.Mac/mscorlib.xml +++ b/tools/apidiff/references/xm/Xamarin.Mac/mscorlib.xml @@ -13171,7 +13171,7 @@ - + @@ -13204,7 +13204,7 @@ - + @@ -13229,7 +13229,7 @@ - + @@ -27478,13 +27478,6 @@ - - - - - - - @@ -27519,6 +27512,14 @@ + + + + + + + + @@ -29388,6 +29389,68 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -29582,17 +29645,6 @@ - - - - - - - - - - - @@ -29603,6 +29655,12 @@ + + + + + + @@ -30226,6 +30284,20 @@ + + + + + + + + + + + + + + @@ -30256,6 +30328,12 @@ + + + + + + @@ -32176,12 +32254,12 @@ - + - + @@ -32199,12 +32277,12 @@ - + - + @@ -32223,12 +32301,12 @@ - + - + @@ -34206,12 +34284,12 @@ - + - + @@ -34255,7 +34333,7 @@ - + @@ -52038,6 +52116,9 @@ + + + @@ -60442,6 +60523,20 @@ + + + + + + + + + + + + + + @@ -60458,6 +60553,21 @@ + + + + + + + + + + + + + + + @@ -60705,6 +60815,18 @@ + + + + + + + + + + + + @@ -61376,6 +61498,11 @@ + + + + + @@ -61728,7 +61855,12 @@ - + + + + + + @@ -62552,7 +62684,12 @@ - + + + + + + @@ -62744,7 +62881,12 @@ - + + + + + + @@ -62768,7 +62910,12 @@ - + + + + + + @@ -62919,7 +63066,12 @@ - + + + + + + @@ -62936,10 +63088,15 @@ - + - + + + + + + @@ -62964,7 +63121,12 @@ - + + + + + + @@ -63281,17 +63443,27 @@ - + + + + + + - + - + + + + + + @@ -63376,7 +63548,12 @@ - + + + + + + @@ -63392,7 +63569,12 @@ - + + + + + + @@ -65395,17 +65577,27 @@ - + + + + + + - + - + + + + + + @@ -66239,7 +66431,12 @@ - + + + + + + @@ -66265,17 +66462,27 @@ - + + + + + + - + - + + + + + + @@ -66302,7 +66509,12 @@ - + + + + + + @@ -67467,7 +67679,12 @@ - + + + + + + @@ -67827,7 +68044,12 @@ - + + + + + + @@ -67852,10 +68074,15 @@ - + - + + + + + + @@ -86159,7 +86386,7 @@ - + @@ -100685,7 +100912,6 @@ - From f2ae295b9b313af09e046cb5d7e21236ff9b992a Mon Sep 17 00:00:00 2001 From: Alex Soto Date: Mon, 13 Nov 2017 10:45:04 -0600 Subject: [PATCH 120/145] [AVKit] Update to Xcode 9.2 Beta 2 (#2995) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * [AVKit] Update to Xcode 9.2 Beta 2 * Implement feedback * Fix typo * Fix breaking change 🙈 oops! Also throw something so the code path just doesn't do anything * Idk what happened, fixing breaking change now for reals 🙃 --- src/AVFoundation/AVCompat.cs | 13 ++++++++----- src/avkit.cs | 25 +++++++++++++++++++++++++ 2 files changed, 33 insertions(+), 5 deletions(-) diff --git a/src/AVFoundation/AVCompat.cs b/src/AVFoundation/AVCompat.cs index 5826722b58..253b605e0d 100644 --- a/src/AVFoundation/AVCompat.cs +++ b/src/AVFoundation/AVCompat.cs @@ -95,18 +95,21 @@ namespace XamCore.AVFoundation { #if !MONOMAC partial class AVSampleBufferAudioRenderer { - [Obsolete ("This API is not available on this platform")] - public virtual string AudioOutputDeviceUniqueId { get; set; } + [Obsolete ("This API is not available on this platform.")] + public virtual string AudioOutputDeviceUniqueId { + get { throw new NotImplementedException (); } + set { throw new NotImplementedException (); } + } } #endif #if !IOS - partial class AVSampleBufferAudioRenderer + partial class AVContentKeyRequest { - [Obsolete ("This API is not available on this platform")] + [Obsolete ("This API is not available on this platform.")] public virtual void RespondByRequestingPersistableContentKeyRequest () { - + throw new NotImplementedException (); } } #endif diff --git a/src/avkit.cs b/src/avkit.cs index 466cf96de3..0cedff4a5e 100644 --- a/src/avkit.cs +++ b/src/avkit.cs @@ -204,6 +204,10 @@ namespace XamCore.AVKit { [NoiOS, TV (11, 0), NoWatch, NoMac] [Export ("customInfoViewController", ArgumentSemantic.Assign)] UIViewController CustomInfoViewController { get; set; } + + [NoiOS, TV (11,2), NoMac, NoWatch] + [Export ("appliesPreferredDisplayCriteriaAutomatically")] + bool AppliesPreferredDisplayCriteriaAutomatically { get; set; } } [Protocol, Model] @@ -549,5 +553,26 @@ namespace XamCore.AVKit { [Export ("routePickerViewDidEndPresentingRoutes:")] void DidEndPresentingRoutes (AVRoutePickerView routePickerView); } + + [TV (11,2), NoiOS, NoMac, NoWatch] + [BaseType (typeof (NSObject))] + [DisableDefaultCtor] + interface AVDisplayManager { + + [NullAllowed, Export ("preferredDisplayCriteria", ArgumentSemantic.Copy)] + AVDisplayCriteria PreferredDisplayCriteria { get; set; } + + [Export ("displayModeSwitchInProgress")] + bool DisplayModeSwitchInProgress { [Bind ("isDisplayModeSwitchInProgress")] get; } + } + + [TV (11,2), NoiOS, NoMac, NoWatch] + [Category] + [BaseType (typeof (UIWindow))] + interface UIWindow_AVAdditions { + + [Export ("avDisplayManager")] + AVDisplayManager GetAVDisplayManager (); + } #endif } From e05048f182891b646e9d489b81220dbc9b0aa41d Mon Sep 17 00:00:00 2001 From: Sebastien Pouliot Date: Tue, 14 Nov 2017 08:51:41 -0500 Subject: [PATCH 121/145] Merge latest d15-5 (#3002) * Updated reference to mono/mono@950ea65 (#2975) * [macos] Fix AVCaptureDepthDataOutput on HS and 10.13 typo (#2977) * [tests] Remove merge dupe for 'Hlg' typo --- external/mono | 2 +- src/avfoundation.cs | 4 ++-- tests/introspection/ApiTypoTest.cs | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/external/mono b/external/mono index 4005b8a4a6..950ea65c3b 160000 --- a/external/mono +++ b/external/mono @@ -1 +1 @@ -Subproject commit 4005b8a4a6b9ee57c60cb02dc901bc96f027d7ca +Subproject commit 950ea65c3ba571cd139dc34b48d7101a2e894993 diff --git a/src/avfoundation.cs b/src/avfoundation.cs index f99386c38c..7832ac3948 100644 --- a/src/avfoundation.cs +++ b/src/avfoundation.cs @@ -8427,7 +8427,7 @@ namespace XamCore.AVFoundation { interface IAVCaptureDepthDataOutputDelegate {} - [NoWatch, NoTV, iOS (11,0), Mac (10,13)] + [NoWatch, NoTV, iOS (11,0), NoMac] [Protocol, Model] [BaseType (typeof(NSObject))] interface AVCaptureDepthDataOutputDelegate @@ -8439,7 +8439,7 @@ namespace XamCore.AVFoundation { void DidDropDepthData (AVCaptureDepthDataOutput output, AVDepthData depthData, CMTime timestamp, AVCaptureConnection connection, AVCaptureOutputDataDroppedReason reason); } - [NoWatch, NoTV, iOS (11,0), Mac (10,13)] + [NoWatch, NoTV, iOS (11,0), NoMac] [BaseType (typeof(AVCaptureOutput))] interface AVCaptureDepthDataOutput { diff --git a/tests/introspection/ApiTypoTest.cs b/tests/introspection/ApiTypoTest.cs index 78eff6cdd6..b5f40cb826 100644 --- a/tests/introspection/ApiTypoTest.cs +++ b/tests/introspection/ApiTypoTest.cs @@ -214,8 +214,8 @@ namespace Introspection "Heif", // High Efficiency Image File Format "Hfp", "Hipass", + "Hlg", // Hybrid Log-Gamma "Hls", - "Hlg", "Hoa", "Hrtf", // acronym used in AUSpatializationAlgorithm "Hvxc", // MPEG4ObjectID From 6f8cb8e9e8f2a04531c38b8065f2473e237c9c98 Mon Sep 17 00:00:00 2001 From: Rolf Bjarne Kvinge Date: Tue, 14 Nov 2017 15:11:52 +0100 Subject: [PATCH 122/145] [xharness] Try to fix apparently impossible infinite loop. Might fix bug #59208. (#3004) https://bugzilla.xamarin.com/show_bug.cgi?id=59208 --- tests/xharness/Log.cs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/tests/xharness/Log.cs b/tests/xharness/Log.cs index ecfc99f187..7c795cd3ea 100644 --- a/tests/xharness/Log.cs +++ b/tests/xharness/Log.cs @@ -294,6 +294,10 @@ namespace xharness if (read > 0) { writer.Write (buffer, 0, read); availableLength -= read; + } else { + // There's nothing more to read. + // I can't see how we get here, since we calculate the amount to read based on what's available, but it does happen randomly. + break; } } } From 311fe265f8a872e638646529b437dcbf61fdcdd0 Mon Sep 17 00:00:00 2001 From: Vincent Dondain Date: Tue, 14 Nov 2017 10:12:58 -0500 Subject: [PATCH 123/145] [storekit] Fix SKCloudServiceSetupOptions strong dictionary's 'Action' (#2998) - Fixes bug #59928: SKCloudServiceSetupViewController.LoadAsync() does not work correctly when passed an SKCloudServiceSetupOptions object instead of a manually-created NSDictionary (https://bugzilla.xamarin.com/show_bug.cgi?id=59928) --- src/StoreKit/SKCloudServiceSetupOptions.cs | 23 ++++++++++++ src/frameworks.sources | 1 + src/storekit.cs | 6 ++- .../SKCloudServiceSetupOptionsTest.cs | 37 +++++++++++++++++++ tests/monotouch-test/monotouch-test.csproj | 1 + 5 files changed, 67 insertions(+), 1 deletion(-) create mode 100644 src/StoreKit/SKCloudServiceSetupOptions.cs create mode 100644 tests/monotouch-test/StoreKit/SKCloudServiceSetupOptionsTest.cs diff --git a/src/StoreKit/SKCloudServiceSetupOptions.cs b/src/StoreKit/SKCloudServiceSetupOptions.cs new file mode 100644 index 0000000000..90b25886fb --- /dev/null +++ b/src/StoreKit/SKCloudServiceSetupOptions.cs @@ -0,0 +1,23 @@ +#if __IOS__ + +using System; +using XamCore.ObjCRuntime; +using XamCore.Foundation; + +namespace XamCore.StoreKit { + + partial class SKCloudServiceSetupOptions { + + [iOS (10,1)] + public virtual SKCloudServiceSetupAction? Action { + get { + return (SKCloudServiceSetupAction?) (SKCloudServiceSetupActionExtensions.GetValue (_Action)); + } + set { + _Action = value != null ? SKCloudServiceSetupActionExtensions.GetConstant (value.Value) : null; + } + } + } +} + +#endif // __IOS__ \ No newline at end of file diff --git a/src/frameworks.sources b/src/frameworks.sources index d0346cf29d..1ca802dda5 100644 --- a/src/frameworks.sources +++ b/src/frameworks.sources @@ -1300,6 +1300,7 @@ STOREKIT_CORE_SOURCES = \ STOREKIT_SOURCES = \ StoreKit/NativeMethods.cs \ + StoreKit/SKCloudServiceSetupOptions.cs \ StoreKit/SKPayment.cs \ StoreKit/SKPaymentTransactionObserver.cs \ diff --git a/src/storekit.cs b/src/storekit.cs index 62a80a1319..7a95d6823d 100644 --- a/src/storekit.cs +++ b/src/storekit.cs @@ -546,7 +546,11 @@ namespace XamCore.StoreKit { interface SKCloudServiceSetupOptions { // Headers comment: Action for setup entry point (of type SKCloudServiceSetupAction). - SKCloudServiceSetupAction Action { get; set; } + // FIXME: Once https://bugzilla.xamarin.com/show_bug.cgi?id=57870 is fixed we should have a wrapper on a new property + // `SKCloudServiceSetupAction Action { get; set; }` and avoid manual code. + [Internal] + [Export ("ActionKey")] + NSString _Action { get; set; } // Headers comment: Identifier of the iTunes Store item the user is trying to access which requires cloud service setup (NSNumber). nint ITunesItemIdentifier { get; set; } diff --git a/tests/monotouch-test/StoreKit/SKCloudServiceSetupOptionsTest.cs b/tests/monotouch-test/StoreKit/SKCloudServiceSetupOptionsTest.cs new file mode 100644 index 0000000000..81f7c3ec7b --- /dev/null +++ b/tests/monotouch-test/StoreKit/SKCloudServiceSetupOptionsTest.cs @@ -0,0 +1,37 @@ +// +// Unit tests for SKCloudServiceSetupOptionsTest +// +// Authors: +// Vincent Dondain +// +// Copyright 2017 Microsoft. All rights reserved. +// + +#if __IOS__ + +using System; +using Foundation; +using NUnit.Framework; +using StoreKit; + +namespace MonoTouchFixtures.StoreKit { + + [TestFixture] + [Preserve (AllMembers = true)] + public class SKCloudServiceSetupOptionsTest { + + [Test] + public void ActionTest () + { + TestRuntime.AssertXcodeVersion (8, 1); + + var optionsObject = new SKCloudServiceSetupOptions { + Action = SKCloudServiceSetupAction.Subscribe + }; + Assert.AreEqual ("sdkSubscribe", optionsObject.Dictionary ["SKCloudServiceSetupOptionsActionKey"].ToString (), "SKCloudServiceSetupOptionsActionKey"); + Assert.AreEqual (SKCloudServiceSetupAction.Subscribe, optionsObject.Action, "SKCloudServiceSetupOptions.Action"); + } + } +} + +#endif // __IOS__ \ No newline at end of file diff --git a/tests/monotouch-test/monotouch-test.csproj b/tests/monotouch-test/monotouch-test.csproj index 1712c4b015..320b0e867a 100644 --- a/tests/monotouch-test/monotouch-test.csproj +++ b/tests/monotouch-test/monotouch-test.csproj @@ -704,6 +704,7 @@ + From f4fc3d0be0176b77d23fbe6bb1120054e03f6a9d Mon Sep 17 00:00:00 2001 From: Sebastien Pouliot Date: Tue, 14 Nov 2017 16:10:19 -0500 Subject: [PATCH 124/145] [monotouch-test] Fix ContactStoreTest for watchOS (#3006) Backport/merge of PR #306 to avoid random failures on bots. Should fix https://github.com/xamarin/maccore/issues/577 --- tests/monotouch-test/Contacts/ContactStoreTest.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/monotouch-test/Contacts/ContactStoreTest.cs b/tests/monotouch-test/Contacts/ContactStoreTest.cs index a2edf389d6..ff3d716c75 100644 --- a/tests/monotouch-test/Contacts/ContactStoreTest.cs +++ b/tests/monotouch-test/Contacts/ContactStoreTest.cs @@ -50,7 +50,7 @@ namespace MonoTouchFixtures.Contacts { var contacts = store.GetUnifiedContacts (predicate, fetchKeys, out error); // we can't be sure what's on devices, so check there's no error is the only thing we do // but it's in the default simulator build (but not the watchOS simulator) -#if !MONOMAC +#if !MONOMAC && !__WATCHOS__ if ((error == null) && (Runtime.Arch == Arch.SIMULATOR)) { Assert.That (contacts.Length, Is.EqualTo (1), "Length"); identifier = contacts [0].Identifier; From 30a057ddc0734ffcb7a897dac37fd56414265810 Mon Sep 17 00:00:00 2001 From: Vincent Dondain Date: Thu, 16 Nov 2017 16:38:14 -0500 Subject: [PATCH 125/145] [CoreImage] Update filters for Xcode 9 (#2974) - Fixes bug #57350: Review new CoreImage filters added in Xcode 9 (https://bugzilla.xamarin.com/show_bug.cgi?id=57350). - Adds `AVCameraCalibrationData` and `CIBarcodeDescriptor` to `generator-filters`. - Fixes `ApiCoreImageFiltersTest`'s `GenerateBinding` to use valid `[CoreImageFilterProperty]`. - In `CheckManagedFilters` generate code of SuperClass when detected so it's easier to bind. --- src/CoreImage/CIFilter.cs | 58 +++- src/coreimage.cs | 310 +++++++++--------- src/generator-filters.cs | 12 +- .../introspection/ApiCoreImageFiltersTest.cs | 31 +- tests/monotouch-test/CoreImage/FilterTest.cs | 41 +++ 5 files changed, 279 insertions(+), 173 deletions(-) diff --git a/src/CoreImage/CIFilter.cs b/src/CoreImage/CIFilter.cs index df6245ed98..0902a0abf7 100644 --- a/src/CoreImage/CIFilter.cs +++ b/src/CoreImage/CIFilter.cs @@ -31,7 +31,7 @@ // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. // // Adding new Filters: -// * Create new class with the two constructors +// * Create a new class/interface in coreimage.cs // * Add it to CIFilter.FromName switch // * Implement properties for each parameter // * Use the documented string in "Parameter" in each section as the key for the get/set methods @@ -86,6 +86,26 @@ // CIPDF417BarcodeGenerator // * most of OSX specicic filters are now available on iOS9 // +// New filters on Xcode 9 +// CIAreaMinMaxRed +// CIAttributedTextImageGenerator +// CIBarcodeGenerator +// CIBicubicScaleTransform +// CIBokehBlur +// CIColorCubesMixedWithMask +// CIColorCurves +// CIDepthBlurEffect +// CIDepthToDisparity +// CIDisparityToDepth +// CIEdgePreserveUpsampleFilter +// CILabDeltaE +// CITextImageGenerator +// CIMorphologyGradient +// CIMorphologyMaximum +// CIMorphologyMinimum +// CIBlendWithBlueMask +// CIBlendWithRedMask +// using System; using System.Diagnostics; using XamCore.Foundation; @@ -612,6 +632,42 @@ namespace XamCore.CoreImage { case "CIPDF417BarcodeGenerator": case "CIPdf417BarcodeGenerator": return new CIPdf417BarcodeGenerator (handle); + case "CIAreaMinMaxRed": + return new CIAreaMinMaxRed (handle); + case "CIAttributedTextImageGenerator": + return new CIAttributedTextImageGenerator (handle); + case "CIBarcodeGenerator": + return new CIBarcodeGenerator (handle); + case "CIBicubicScaleTransform": + return new CIBicubicScaleTransform (handle); + case "CIBokehBlur": + return new CIBokehBlur (handle); + case "CIColorCubesMixedWithMask": + return new CIColorCubesMixedWithMask (handle); + case "CIColorCurves": + return new CIColorCurves (handle); + case "CIDepthBlurEffect": + return new CIDepthBlurEffect (handle); + case "CIDepthToDisparity": + return new CIDepthToDisparity (handle); + case "CIDisparityToDepth": + return new CIDisparityToDepth (handle); + case "CIEdgePreserveUpsampleFilter": + return new CIEdgePreserveUpsampleFilter (handle); + case "CILabDeltaE": + return new CILabDeltaE (handle); + case "CITextImageGenerator": + return new CITextImageGenerator (handle); + case "CIMorphologyGradient": + return new CIMorphologyGradient (handle); + case "CIMorphologyMaximum": + return new CIMorphologyMaximum (handle); + case "CIMorphologyMinimum": + return new CIMorphologyMinimum (handle); + case "CIBlendWithBlueMask": + return new CIBlendWithBlueMask (handle); + case "CIBlendWithRedMask": + return new CIBlendWithRedMask (handle); default: throw new NotImplementedException (String.Format ("Unknown filter type returned: `{0}', returning a default CIFilter", filterName)); } diff --git a/src/coreimage.cs b/src/coreimage.cs index 570d324f25..0755611fbc 100644 --- a/src/coreimage.cs +++ b/src/coreimage.cs @@ -2615,7 +2615,7 @@ namespace XamCore.CoreImage { CIVector Extent { get; set; } } - [CoreImageFilter] + [CoreImageFilter (StringCtorVisibility = MethodAttributes.Public)] [iOS (9,0)] [BaseType (typeof (CIFilter))] interface CIAreaMaximum { @@ -3723,12 +3723,9 @@ namespace XamCore.CoreImage { [CoreImageFilter] [iOS (8,3)] - [BaseType (typeof (CIFilter))] + [BaseType (typeof (CILinearBlur))] interface CIMotionBlur { - [CoreImageFilterProperty ("inputRadius")] - float Radius { get; set; } - [CoreImageFilterProperty ("inputAngle")] float Angle { get; set; } } @@ -4696,31 +4693,35 @@ namespace XamCore.CoreImage { interface CIXRay { } -#if false // Needs review: https://bugzilla.xamarin.com/show_bug.cgi?id=57350 [CoreImageFilter] [iOS (11,0)] [Mac (10,13)] [TV (11,0)] - [BaseType (typeof (CIFilter))] + [BaseType (typeof (CIAreaMaximum))] interface CIAreaMinMaxRed { - // TODO: Needs review - //[CoreImageProperty ("inputExtent")] - //CIVector Extent { get; set; } + [CoreImageFilterProperty ("inputExtent")] + CIVector Extent { get; set; } + } + + [CoreImageFilter] + [Abstract] + [iOS (11,0)] + [Mac (10,13)] + [TV (11,0)] + [BaseType (typeof (CIFilter))] + interface CIImageGenerator { + [CoreImageFilterProperty ("inputScaleFactor")] + float ScaleFactor { get; set; } } [CoreImageFilter] [iOS (11,0)] [Mac (10,13)] [TV (11,0)] - [BaseType (typeof (CIFilter))] + [BaseType (typeof (CIImageGenerator))] interface CIAttributedTextImageGenerator { - // TODO: Needs review - //[CoreImageProperty ("inputText")] - //NSAttributedString Text { get; set; } - - //[CoreImageProperty ("inputScaleFactor")] - //// TODO: this was an NSNumber transformed to float, but maybe an int or bool is more appropriate - //float ScaleFactor { get; set; } + [CoreImageFilterProperty ("inputText")] + NSAttributedString Text { get; set; } } [CoreImageFilter] @@ -4729,70 +4730,75 @@ namespace XamCore.CoreImage { [TV (11,0)] [BaseType (typeof (CIFilter))] interface CIBarcodeGenerator { - // TODO: Needs review - //[CoreImageProperty ("inputBarcodeDescriptor")] - //CIBarcodeDescriptor BarcodeDescriptor { get; set; } + [CoreImageFilterProperty ("inputBarcodeDescriptor")] + CIBarcodeDescriptor BarcodeDescriptor { get; set; } } [CoreImageFilter] [iOS (11,0)] [Mac (10,13)] [TV (11,0)] + // Maybe 'typeof (CIScaleTransform)' (shared 'Scale' and 'AspectRatio' property). + // It's possible to add ours but it can bite us back in the future if Apple introduce the same with different properties. [BaseType (typeof (CIFilter))] interface CIBicubicScaleTransform { - // TODO: Needs review - //[CoreImageProperty ("inputB")] - //// TODO: this was an NSNumber transformed to float, but maybe an int or bool is more appropriate - //float B { get; set; } - //[CoreImageProperty ("inputScale")] - //// TODO: this was an NSNumber transformed to float, but maybe an int or bool is more appropriate - //float Scale { get; set; } - //[CoreImageProperty ("inputC")] - //// TODO: this was an NSNumber transformed to float, but maybe an int or bool is more appropriate - //float C { get; set; } - //[CoreImageProperty ("inputAspectRatio")] - //// TODO: this was an NSNumber transformed to float, but maybe an int or bool is more appropriate - //float AspectRatio { get; set; } + [CoreImageFilterProperty ("inputB")] + float B { get; set; } + + [CoreImageFilterProperty ("inputC")] + float C { get; set; } + + [CoreImageFilterProperty ("inputScale")] + float Scale { get; set; } + + [CoreImageFilterProperty ("inputAspectRatio")] + float AspectRatio { get; set; } + } + + [CoreImageFilter] + [Abstract] + [BaseType (typeof (CIFilter))] + interface CILinearBlur { + [CoreImageFilterProperty ("inputRadius")] + float Radius { get; set; } } [CoreImageFilter] [iOS (11,0)] [Mac (10,13)] [TV (11,0)] - [BaseType (typeof (CIFilter))] + [BaseType (typeof (CILinearBlur))] interface CIBokehBlur { - // TODO: Needs review - //[CoreImageProperty ("inputSoftness")] - //// TODO: this was an NSNumber transformed to float, but maybe an int or bool is more appropriate - //float Softness { get; set; } - //[CoreImageProperty ("inputRadius")] - //// TODO: this was an NSNumber transformed to float, but maybe an int or bool is more appropriate - //float Radius { get; set; } - //[CoreImageProperty ("inputRingSize")] - //// TODO: this was an NSNumber transformed to float, but maybe an int or bool is more appropriate - //float RingSize { get; set; } - //[CoreImageProperty ("inputRingAmount")] - //// TODO: this was an NSNumber transformed to float, but maybe an int or bool is more appropriate - //float RingAmount { get; set; } + [CoreImageFilterProperty ("inputSoftness")] + float Softness { get; set; } + + [CoreImageFilterProperty ("inputRingSize")] + float RingSize { get; set; } + + [CoreImageFilterProperty ("inputRingAmount")] + float RingAmount { get; set; } } + [CoreImageFilter] [iOS (11,0)] [Mac (10,13)] [TV (11,0)] - [BaseType (typeof (CIFilter))] + [BaseType (typeof (CIFilter))] // Could almost be typeof 'CIColorCube' but property is 'inputCube0Data' not 'inputCubeData' interface CIColorCubesMixedWithMask { - // TODO: Needs review - //[CoreImageProperty ("inputCubeDimension")] - //// TODO: this was an NSNumber transformed to float, but maybe an int or bool is more appropriate - //float CubeDimension { get; set; } - //[CoreImageProperty ("inputMaskImage")] - //CIImage MaskImage { get; set; } - //[CoreImageProperty ("inputCube0Data")] - //NSData Cube0Data { get; set; } - //[CoreImageProperty ("inputCube1Data")] - //NSData Cube1Data { get; set; } - //[CoreImageProperty ("inputColorSpace")] - //NSObject ColorSpace { get; set; } + [CoreImageFilterProperty ("inputCubeDimension")] + float CubeDimension { get; set; } + + [CoreImageFilterProperty ("inputMaskImage")] + CIImage MaskImage { get; set; } + + [CoreImageFilterProperty ("inputCube0Data")] + NSData Cube0Data { get; set; } + + [CoreImageFilterProperty ("inputCube1Data")] + NSData Cube1Data { get; set; } + + [CoreImageFilterProperty ("inputColorSpace")] + CGColorSpace ColorSpace { get; set; } } [CoreImageFilter] @@ -4801,13 +4807,14 @@ namespace XamCore.CoreImage { [TV (11,0)] [BaseType (typeof (CIFilter))] interface CIColorCurves { - // TODO: Needs review - //[CoreImageProperty ("inputColorSpace")] - //NSObject ColorSpace { get; set; } - //[CoreImageProperty ("inputCurvesDomain")] - //CIVector CurvesDomain { get; set; } - //[CoreImageProperty ("inputCurvesData")] - //NSData CurvesData { get; set; } + [CoreImageFilterProperty ("inputColorSpace")] + CGColorSpace ColorSpace { get; set; } + + [CoreImageFilterProperty ("inputCurvesDomain")] + CIVector CurvesDomain { get; set; } + + [CoreImageFilterProperty ("inputCurvesData")] + NSData CurvesData { get; set; } } [CoreImageFilter] @@ -4816,67 +4823,78 @@ namespace XamCore.CoreImage { [TV (11,0)] [BaseType (typeof (CIFilter))] interface CIDepthBlurEffect { - // TODO: Needs review - //[CoreImageProperty ("inputAperture")] - //// TODO: this was an NSNumber transformed to float, but maybe an int or bool is more appropriate - //float Aperture { get; set; } - //[CoreImageProperty ("inputCalibrationData")] - //AVCameraCalibrationData CalibrationData { get; set; } - //[CoreImageProperty ("inputTuningParameters")] - //NSDictionary TuningParameters { get; set; } - //[CoreImageProperty ("inputNosePositions")] - //CIVector NosePositions { get; set; } - //[CoreImageProperty ("inputLumaNoiseScale")] - //// TODO: this was an NSNumber transformed to float, but maybe an int or bool is more appropriate - //float LumaNoiseScale { get; set; } - //[CoreImageProperty ("inputChinPositions")] - //CIVector ChinPositions { get; set; } - //[CoreImageProperty ("inputDisparityImage")] - //CIImage DisparityImage { get; set; } - //[CoreImageProperty ("inputScaleFactor")] - //// TODO: this was an NSNumber transformed to float, but maybe an int or bool is more appropriate - //float ScaleFactor { get; set; } - //[CoreImageProperty ("inputRightEyePositions")] - //CIVector RightEyePositions { get; set; } - //[CoreImageProperty ("inputLeftEyePositions")] - //CIVector LeftEyePositions { get; set; } - //[CoreImageProperty ("inputFocusRect")] - //CIVector FocusRect { get; set; } + [CoreImageFilterProperty ("inputAperture")] + float Aperture { get; set; } + + [CoreImageFilterProperty ("inputCalibrationData")] + AVCameraCalibrationData CalibrationData { get; set; } + + // Radar: https://trello.com/c/9eA2BA2o + // Don't know how to test this as I don't know which keys are valid. + // [CoreImageFilterProperty ("inputTuningParameters")] + // NSDictionary WeakTuningParameters { get; set; } + + [CoreImageFilterProperty ("inputNosePositions")] + CIVector NosePositions { get; set; } + + [CoreImageFilterProperty ("inputLumaNoiseScale")] + float LumaNoiseScale { get; set; } + + [CoreImageFilterProperty ("inputChinPositions")] + CIVector ChinPositions { get; set; } + + [CoreImageFilterProperty ("inputDisparityImage")] + CIImage DisparityImage { get; set; } + + [CoreImageFilterProperty ("inputScaleFactor")] + float ScaleFactor { get; set; } + + [CoreImageFilterProperty ("inputRightEyePositions")] + CIVector RightEyePositions { get; set; } + + [CoreImageFilterProperty ("inputLeftEyePositions")] + CIVector LeftEyePositions { get; set; } + + [CoreImageFilterProperty ("inputFocusRect")] + CIVector FocusRect { get; set; } } + [CoreImageFilter] + [Abstract] + [iOS (11,0)] + [Mac (10,13)] + [TV (11,0)] + [BaseType (typeof (CIFilter))] + interface CIDepthDisparityConverter {} + [CoreImageFilter] [iOS (11,0)] [Mac (10,13)] [TV (11,0)] - [BaseType (typeof (CIFilter))] - interface CIDepthToDisparity { - // TODO: Needs review - } + [BaseType (typeof (CIDepthDisparityConverter))] + interface CIDepthToDisparity {} [CoreImageFilter] [iOS (11,0)] [Mac (10,13)] [TV (11,0)] - [BaseType (typeof (CIFilter))] - interface CIDisparityToDepth { - // TODO: Needs review - } + [BaseType (typeof (CIDepthDisparityConverter))] + interface CIDisparityToDepth {} [CoreImageFilter] [iOS (11,0)] - [NoMac] + [Mac (10,13)] [TV (11,0)] [BaseType (typeof (CIFilter))] interface CIEdgePreserveUpsampleFilter { - // TODO: Needs review - //[CoreImageProperty ("inputLumaSigma")] - //// TODO: this was an NSNumber transformed to float, but maybe an int or bool is more appropriate - //float LumaSigma { get; set; } - //[CoreImageProperty ("inputSmallImage")] - //CIImage SmallImage { get; set; } - //[CoreImageProperty ("inputSpatialSigma")] - //// TODO: this was an NSNumber transformed to float, but maybe an int or bool is more appropriate - //float SpatialSigma { get; set; } + [CoreImageFilterProperty ("inputLumaSigma")] + float LumaSigma { get; set; } + + [CoreImageFilterProperty ("inputSmallImage")] + CIImage SmallImage { get; set; } + + [CoreImageFilterProperty ("inputSpatialSigma")] + float SpatialSigma { get; set; } } [CoreImageFilter] @@ -4885,75 +4903,71 @@ namespace XamCore.CoreImage { [TV (11,0)] [BaseType (typeof (CIFilter))] interface CILabDeltaE { - // TODO: Needs review - //[CoreImageProperty ("inputImage2")] - //CIImage Image2 { get; set; } + [CoreImageFilterProperty ("inputImage2")] + CIImage Image2 { get; set; } } [CoreImageFilter] [iOS (11,0)] [Mac (10,13)] [TV (11,0)] - [BaseType (typeof (CIFilter))] + [BaseType (typeof (CIImageGenerator))] interface CITextImageGenerator { - // TODO: Needs review - //[CoreImageProperty ("inputText")] - //NSString Text { get; set; } - //[CoreImageProperty ("inputFontName")] - //NSString FontName { get; set; } - //[CoreImageProperty ("inputScaleFactor")] - //// TODO: this was an NSNumber transformed to float, but maybe an int or bool is more appropriate - //float ScaleFactor { get; set; } - //[CoreImageProperty ("inputFontSize")] - //// TODO: this was an NSNumber transformed to float, but maybe an int or bool is more appropriate - //float FontSize { get; set; } + [CoreImageFilterProperty ("inputText")] + string Text { get; set; } + + [CoreImageFilterProperty ("inputFontName")] + string FontName { get; set; } + + [CoreImageFilterProperty ("inputFontSize")] + float FontSize { get; set; } + } + + [CoreImageFilter] + [Abstract] + [iOS (11,0)] + [Mac (10,13)] + [TV (11,0)] + [BaseType (typeof (CIFilter))] + interface CIMorphology { + [CoreImageFilterProperty ("inputRadius")] + float Radius { get; set; } } [CoreImageFilter] [iOS (11,0)] [Mac (10,13)] [TV (11,0)] - [BaseType (typeof (CIFilter))] - interface CIMorphologyGradient { - // TODO: Needs review: https://bugzilla.xamarin.com/show_bug.cgi?id=57350 - } + [BaseType (typeof (CIMorphology))] + interface CIMorphologyGradient {} [CoreImageFilter] [iOS (11,0)] [Mac (10,13)] [TV (11,0)] - [BaseType (typeof (CIFilter))] - interface CIMorphologyMaximum { - // TODO: Needs review: https://bugzilla.xamarin.com/show_bug.cgi?id=57350 - } + [BaseType (typeof (CIMorphology))] + interface CIMorphologyMaximum {} [CoreImageFilter] [iOS (11,0)] [Mac (10,13)] [TV (11,0)] - [BaseType (typeof (CIFilter))] - interface CIMorphologyMinimum { - // TODO: Needs review: https://bugzilla.xamarin.com/show_bug.cgi?id=57350 - } + [BaseType (typeof (CIMorphology))] + interface CIMorphologyMinimum {} [CoreImageFilter] [iOS (11,0)] [Mac (10,13)] [TV (11,0)] - [BaseType (typeof (CIFilter))] - interface CIBlendWithBlueMask { - // TODO: Needs review: https://bugzilla.xamarin.com/show_bug.cgi?id=57350 - } + [BaseType (typeof (CIBlendWithMask))] + interface CIBlendWithBlueMask {} [CoreImageFilter] [iOS (11,0)] [Mac (10,13)] [TV (11,0)] - [BaseType (typeof (CIFilter))] - interface CIBlendWithRedMask { - // TODO: Needs review: https://bugzilla.xamarin.com/show_bug.cgi?id=57350 - } -#endif // false + [BaseType (typeof (CIBlendWithMask))] + interface CIBlendWithRedMask {} [iOS (11,0)] [Mac (10,13)] diff --git a/src/generator-filters.cs b/src/generator-filters.cs index 76ec503b43..dffa39fa88 100644 --- a/src/generator-filters.cs +++ b/src/generator-filters.cs @@ -172,8 +172,10 @@ public partial class Generator { indent--; print ("return new CGAffineTransform (1, 0, 0, 1, 0, 0);"); break; - // NSObject should not be added - the only case it's found (right now) is for CGColorSpace + // NSObject should not be added + case "AVCameraCalibrationData": case "CGColorSpace": + case "CIBarcodeDescriptor": print ("return Runtime.GetINativeObject <{0}> (GetHandle (\"{1}\"), true);", propertyType, propertyName); break; case "CIColor": @@ -191,11 +193,13 @@ public partial class Generator { case "int": print ("return GetInt (\"{0}\");", propertyName); break; + case "NSAttributedString": case "NSData": // NSNumber should not be added - it should be bound as a float (common), int32 or bool print ("return ValueForKey (\"{0}\") as {1};", propertyName, propertyType); break; case "string": + // NSString should not be added - it should be bound as a string print ("return (string) (ValueForKey (\"{0}\") as NSString);", propertyName); break; default: @@ -224,18 +228,22 @@ public partial class Generator { case "int": print ("SetInt (\"{0}\", value);", propertyName); break; - // NSObject should not be added - the only case it's found (right now) is for CGColorSpace + // NSObject should not be added + case "AVCameraCalibrationData": case "CGColorSpace": + case "CIBarcodeDescriptor": print ("SetHandle (\"{0}\", value == null ? IntPtr.Zero : value.Handle);", propertyName); break; case "CIColor": case "CIImage": case "CIVector": + case "NSAttributedString": case "NSData": // NSNumber should not be added - it should be bound as a int or a float print ("SetValue (\"{0}\", value);", propertyName); break; case "string": + // NSString should not be added - it should be bound as a string print ("using (var ns = new NSString (value))"); indent++; print ("SetValue (\"{0}\", ns);", propertyName); diff --git a/tests/introspection/ApiCoreImageFiltersTest.cs b/tests/introspection/ApiCoreImageFiltersTest.cs index f6fcdab760..b55606766e 100644 --- a/tests/introspection/ApiCoreImageFiltersTest.cs +++ b/tests/introspection/ApiCoreImageFiltersTest.cs @@ -65,26 +65,6 @@ namespace Introspection { // Both reported in radar #21548819 // NSUnknownKeyException [ valueForUndefinedKey:]: this class is not key value coding-compliant for the key inputPoint2. case "CIDepthOfField": - // NSUnknownKeyException [ valueForUndefinedKey:]: this class is not key value coding-compliant for the key inputCropAmount. - case "CISunbeamsGenerator": - case "CIAreaMinMaxRed": // https://bugzilla.xamarin.com/show_bug.cgi?id=57350 - case "CIAttributedTextImageGenerator": // https://bugzilla.xamarin.com/show_bug.cgi?id=57350 - case "CIBarcodeGenerator": // https://bugzilla.xamarin.com/show_bug.cgi?id=57350 - case "CIBicubicScaleTransform": // https://bugzilla.xamarin.com/show_bug.cgi?id=57350 - case "CIBlendWithBlueMask": // https://bugzilla.xamarin.com/show_bug.cgi?id=57350 - case "CIBlendWithRedMask": // https://bugzilla.xamarin.com/show_bug.cgi?id=57350 - case "CIBokehBlur": // https://bugzilla.xamarin.com/show_bug.cgi?id=57350 - case "CIColorCubesMixedWithMask": // https://bugzilla.xamarin.com/show_bug.cgi?id=57350 - case "CIColorCurves": // https://bugzilla.xamarin.com/show_bug.cgi?id=57350 - case "CIDepthBlurEffect": // https://bugzilla.xamarin.com/show_bug.cgi?id=57350 - case "CIDepthToDisparity": // https://bugzilla.xamarin.com/show_bug.cgi?id=57350 - case "CIDisparityToDepth": // https://bugzilla.xamarin.com/show_bug.cgi?id=57350 - case "CIEdgePreserveUpsampleFilter": // https://bugzilla.xamarin.com/show_bug.cgi?id=57350 - case "CILabDeltaE": // https://bugzilla.xamarin.com/show_bug.cgi?id=57350 - case "CIMorphologyGradient": // https://bugzilla.xamarin.com/show_bug.cgi?id=57350 - case "CIMorphologyMaximum": // https://bugzilla.xamarin.com/show_bug.cgi?id=57350 - case "CIMorphologyMinimum": // https://bugzilla.xamarin.com/show_bug.cgi?id=57350 - case "CITextImageGenerator": // https://bugzilla.xamarin.com/show_bug.cgi?id=57350 return true; // FIXME: Remove if fixed. Doesn't appear to exist in El Capitan. Reported in radar #22099780 // case "CIMaskedVariableBlur": @@ -121,6 +101,7 @@ namespace Introspection { public void CheckManagedFilters () { List filters = new List (CIFilter.FilterNamesInCategories (null)); + var superFilters = new List (); var nspace = CIFilterType.Namespace; var types = CIFilterType.Assembly.GetTypes (); foreach (Type t in types) { @@ -144,8 +125,14 @@ namespace Introspection { // check base type - we might have our own base type or different names, so it's debug only (not failure) var super = new Class (obj.Class.SuperClass).Name; var bt = t.BaseType.Name; - if ((super != bt) && (bt == "CIFilter")) // check if we should (like Apple) use a non-default base type for filters + if ((super != bt) && (bt == "CIFilter")) { // check if we should (like Apple) use a non-default base type for filters Console.WriteLine ("[WARN] {0}.SuperClass == {1} (native) and {2} managed", t.Name, super, bt); + if (!superFilters.Contains (super)) { + superFilters.Add (super); + Console.WriteLine ("[GENERATED] {0}", super); + GenerateBinding (CIFilter.FromName (super), Console.Out); + } + } #endif int result = filters.RemoveAll (s => StringComparer.OrdinalIgnoreCase.Compare (t.Name, s) == 0); Assert.That (result, Is.GreaterThan (0), t.Name); @@ -206,7 +193,7 @@ namespace Introspection { writer.WriteLine (); var dict = attributes [k] as NSDictionary; var type = dict [(NSString) "CIAttributeClass"]; - writer.WriteLine ("\t[CoreImageProperty (\"{0}\")]", key); + writer.WriteLine ("\t[CoreImageFilterProperty (\"{0}\")]", key); // by default we drop the "input" prefix, but keep the "output" prefix to avoid confusion if (key.StartsWith ("input", StringComparison.Ordinal)) diff --git a/tests/monotouch-test/CoreImage/FilterTest.cs b/tests/monotouch-test/CoreImage/FilterTest.cs index 84d305d6fe..9885c571b5 100644 --- a/tests/monotouch-test/CoreImage/FilterTest.cs +++ b/tests/monotouch-test/CoreImage/FilterTest.cs @@ -14,14 +14,18 @@ using System.IO; using System.Runtime.InteropServices; #if XAMCORE_2_0 +using AVFoundation; using CoreGraphics; using CoreImage; +using CoreText; using Foundation; using ObjCRuntime; #else using MonoTouch; +using MonoTouch.AVFoundation; using MonoTouch.CoreGraphics; using MonoTouch.CoreImage; +using MonoTouch.CoreText; using MonoTouch.Foundation; using MonoTouch.ObjCRuntime; #endif @@ -109,6 +113,43 @@ namespace MonoTouchFixtures.CoreImage { Assert.Null (f.ColorSpace, "ColorSpace/reset-null"); } } + + [Test] + public void CIBarcodeDescriptorTest () + { + TestRuntime.AssertXcodeVersion (9, 0); + + using (var f = new CIBarcodeGenerator ()) { + Assert.Null (f.BarcodeDescriptor, "CIBarcodeDescriptor/default"); + using (var b = new CIQRCodeDescriptor (new NSData (), 1, 0, CIQRCodeErrorCorrectionLevel.Q)) { + f.BarcodeDescriptor = b; + var rc = CFGetRetainCount (b.Handle); + for (int i = 0; i < 5; i++) + Assert.NotNull (f.BarcodeDescriptor, i.ToString ()); + Assert.That (CFGetRetainCount (b.Handle), Is.EqualTo (rc), "RetainCount"); + f.BarcodeDescriptor = null; + } + Assert.Null (f.BarcodeDescriptor, "CIBarcodeDescriptor/reset-null"); + } + } + + [Test] + public void CIAttributedTextImageGenerator () + { + TestRuntime.AssertXcodeVersion (9, 0); + + using (var f = new CIAttributedTextImageGenerator ()) { + Assert.Null (f.Text, "NSAttributedString/default"); + var attr = new CTStringAttributes () { + ForegroundColorFromContext = true, + Font = new CTFont ("Arial", 24) + }; + using (var s = new NSAttributedString ("testString", attr)) { + f.Text = s; + Assert.NotNull (f.Text, "NSAttributedString/not-null"); + } + } + } } } From 9453395baeb1eeb5e4ae4cff13013ea1c00978d7 Mon Sep 17 00:00:00 2001 From: Sebastien Pouliot Date: Fri, 17 Nov 2017 15:40:39 -0500 Subject: [PATCH 126/145] Kick a new build so it gets published publicly thru jenkins --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 1ac8445b60..3ad16fb71e 100644 --- a/README.md +++ b/README.md @@ -142,3 +142,4 @@ We use [Mono's Coding Guidelines](http://www.mono-project.com/community/contribu ### Reporting Bugs We use [Bugzilla](https://bugzilla.xamarin.com/newbug) to track issues. + From fc7f6ce1be45fc37510de6882ba0fe891d489f26 Mon Sep 17 00:00:00 2001 From: Vincent Dondain Date: Thu, 16 Nov 2017 16:29:31 -0500 Subject: [PATCH 127/145] [coreimage] Add EditorBrowsableState.Advanced to CIImage's NSDictionary .ctor --- src/coreimage.cs | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/coreimage.cs b/src/coreimage.cs index 0755611fbc..71452e0a83 100644 --- a/src/coreimage.cs +++ b/src/coreimage.cs @@ -25,6 +25,7 @@ // using System; +using System.ComponentModel; using System.Reflection; using XamCore.AVFoundation; using XamCore.Foundation; @@ -1270,6 +1271,7 @@ namespace XamCore.CoreImage { [Export ("imageWithCGImage:")] CIImage FromCGImage (CGImage image); + [EditorBrowsable (EditorBrowsableState.Advanced)] [Static] [Export ("imageWithCGImage:options:")] CIImage FromCGImage (CGImage image, [NullAllowed] NSDictionary d); @@ -1306,6 +1308,7 @@ namespace XamCore.CoreImage { [Export ("imageWithContentsOfURL:")] CIImage FromUrl (NSUrl url); + [EditorBrowsable (EditorBrowsableState.Advanced)] [Static] [Export ("imageWithContentsOfURL:options:")] CIImage FromUrl (NSUrl url, [NullAllowed] NSDictionary d); @@ -1318,6 +1321,7 @@ namespace XamCore.CoreImage { [Export ("imageWithData:")] CIImage FromData (NSData data); + [EditorBrowsable (EditorBrowsableState.Advanced)] [Static] [Export ("imageWithData:options:")] CIImage FromData (NSData data, [NullAllowed] NSDictionary d); @@ -1332,18 +1336,21 @@ namespace XamCore.CoreImage { CIImage FromImageBuffer (CVImageBuffer imageBuffer); #if MONOMAC && !XAMCORE_4_0 + [EditorBrowsable (EditorBrowsableState.Advanced)] [Static] [Mac(10,4)] [Export ("imageWithCVImageBuffer:options:")] CIImage FromImageBuffer (CVImageBuffer imageBuffer, [NullAllowed] NSDictionary dict); #else #if XAMCORE_2_0 + [EditorBrowsable (EditorBrowsableState.Advanced)] [Static] [iOS(9,0)] [Internal] // This overload is needed for our strong dictionary support (but only for Unified, since for Classic the generic version is transformed to this signature) [Export ("imageWithCVImageBuffer:options:")] CIImage FromImageBuffer (CVImageBuffer imageBuffer, [NullAllowed] NSDictionary dict); #endif + [EditorBrowsable (EditorBrowsableState.Advanced)] [Static] [iOS(9,0)] [Export ("imageWithCVImageBuffer:options:")] @@ -1359,6 +1366,7 @@ namespace XamCore.CoreImage { [Export ("imageWithCVPixelBuffer:")] CIImage FromImageBuffer (CVPixelBuffer buffer); + [EditorBrowsable (EditorBrowsableState.Advanced)] [Static] [Export ("imageWithCVPixelBuffer:options:")] CIImage FromImageBuffer (CVPixelBuffer buffer, [NullAllowed] NSDictionary dict); @@ -1377,6 +1385,7 @@ namespace XamCore.CoreImage { [iOS (11,0)] [TV (11,0)] [Mac (10,13)] + [EditorBrowsable (EditorBrowsableState.Advanced)] [Static] [Export ("imageWithIOSurface:options:")] CIImage FromSurface (IOSurface.IOSurface surface, NSDictionary options); @@ -1399,6 +1408,7 @@ namespace XamCore.CoreImage { [Export ("initWithCGImage:")] IntPtr Constructor (CGImage image); + [EditorBrowsable (EditorBrowsableState.Advanced)] [Export ("initWithCGImage:options:")] IntPtr Constructor (CGImage image, [NullAllowed] NSDictionary d); @@ -1409,6 +1419,7 @@ namespace XamCore.CoreImage { [Export ("initWithCGLayer:")] IntPtr Constructor (CGLayer layer); + [EditorBrowsable (EditorBrowsableState.Advanced)] [Export ("initWithCGLayer:options:")] IntPtr Constructor (CGLayer layer, [NullAllowed] NSDictionary d); From f307f377a19d30d7cbac05478e37dd4d81350741 Mon Sep 17 00:00:00 2001 From: Vincent Dondain Date: Thu, 16 Nov 2017 13:47:21 -0500 Subject: [PATCH 128/145] [coreimage] Add new Image Dictionary Keys - Fixes bug #59296: [coreimage] Some `kCI*`keys are not bound (https://bugzilla.xamarin.com/show_bug.cgi?id=59296) - Generate a StrongDictionary for `CIImageInitializationOptions` to avoid manual code. - Move `CGImageProperties Properties { get; set; }` to parent type `CIImageInitializationOptions` (avoid 2 strong dictionaries). Reason: Even though the headers give us an indication of which constructors should use some CIImage keys it's hard to apply that to all constructors consistently. We could have 1 strong dictionary per constructor (duplicate members) with just the exact members we know it supports (based on headers) however it's better to have a single strong dictionary and document the options because A might be available only in X today and Y next too next year. - Fix `DictionaryContainer`'s `GetStrongDictionary` to return null and not throw if target StrongDictionary is not yet set. Basically: ``` var options = new CIImageInitializationOptionsWithMetadata (); Assert.That (options.Dictionary.Count, Is.EqualTo (0), "Count"); ``` Would throw: ``` System.Reflection.TargetInvocationException : Exception has been thrown by the target of an invocation. ----> System.ArgumentNullException : Value cannot be null. ``` --- src/CoreImage/CIImage.cs | 2 +- src/CoreImage/CIImageInitializationOptions.cs | 29 ++------- src/Foundation/DictionaryContainer.cs | 2 + src/coreimage.cs | 63 ++++++++++++++++--- tests/xtro-sharpie/common.pending | 8 --- 5 files changed, 63 insertions(+), 41 deletions(-) diff --git a/src/CoreImage/CIImage.cs b/src/CoreImage/CIImage.cs index 259eaf9b3c..205bf301d4 100644 --- a/src/CoreImage/CIImage.cs +++ b/src/CoreImage/CIImage.cs @@ -144,7 +144,7 @@ namespace XamCore.CoreImage { throw new ArgumentNullException ("colorSpace"); using (var arr = NSArray.FromIntPtrs (new IntPtr [] { colorSpace.Handle })){ - using (var keys = NSArray.FromIntPtrs (new IntPtr [] { CIImageColorSpaceKey.Handle } )){ + using (var keys = NSArray.FromIntPtrs (new IntPtr [] { CIImageInitializationOptionsKeys.ColorSpaceKey.Handle } )){ using (var dict = NSDictionary.FromObjectsAndKeysInternal (arr, keys)){ return FromCGImage (image, dict); } diff --git a/src/CoreImage/CIImageInitializationOptions.cs b/src/CoreImage/CIImageInitializationOptions.cs index 387c6e7e26..8a803fd2e9 100644 --- a/src/CoreImage/CIImageInitializationOptions.cs +++ b/src/CoreImage/CIImageInitializationOptions.cs @@ -34,30 +34,21 @@ using XamCore.CoreGraphics; namespace XamCore.CoreImage { - public class CIImageInitializationOptions : DictionaryContainer + public partial class CIImageInitializationOptions { #if !COREBUILD - public CIImageInitializationOptions () - : base (new NSMutableDictionary ()) - { - } - - public CIImageInitializationOptions (NSDictionary dictionary) - : base (dictionary) - { - } - public CGColorSpace ColorSpace { get { - return GetNativeValue (CIImage.CIImageColorSpaceKey); + return GetNativeValue (CIImageInitializationOptionsKeys.ColorSpaceKey); } set { - SetNativeValue (CIImage.CIImageColorSpaceKey, value == null ? null : value); + SetNativeValue (CIImageInitializationOptionsKeys.ColorSpaceKey, value == null ? null : value); } } #endif } + // Keeping 'CIImageInitializationOptionsWithMetadata' to avoid breaking change public class CIImageInitializationOptionsWithMetadata : CIImageInitializationOptions { #if !COREBUILD @@ -69,18 +60,6 @@ namespace XamCore.CoreImage { : base (dictionary) { } - - public CGImageProperties Properties { - get { - var dict = GetNativeValue (CIImage.CIImagePropertiesKey); - if (dict == null) - return null; - return new CGImageProperties (dict); - } - set { - SetNativeValue (CIImage.CIImagePropertiesKey, value == null ? null : value.Dictionary, false); - } - } #endif } } diff --git a/src/Foundation/DictionaryContainer.cs b/src/Foundation/DictionaryContainer.cs index 51db962f09..e282c63f4f 100644 --- a/src/Foundation/DictionaryContainer.cs +++ b/src/Foundation/DictionaryContainer.cs @@ -237,6 +237,8 @@ namespace XamCore.Foundation { throw new ArgumentNullException ("key"); var dict = GetNSDictionary (key); + if (dict == null) + return null; T value = (T)Activator.CreateInstance (typeof(T), new object[] { dict } ); diff --git a/src/coreimage.cs b/src/coreimage.cs index 71452e0a83..7670b223c6 100644 --- a/src/coreimage.cs +++ b/src/coreimage.cs @@ -942,6 +942,14 @@ namespace XamCore.CoreImage { [Since (7,0)] [Field ("kCIInputExtentKey", "+CoreImage")] NSString Extent { get; } + + [iOS (11,0), TV (11,0), Mac (10,13)] + [Field ("kCIInputDepthImageKey", "+CoreImage")] + NSString DepthImage { get; } + + [iOS (11,0), TV (11,0), Mac (10,13)] + [Field ("kCIInputDisparityImageKey", "+CoreImage")] + NSString DisparityImage { get; } } [Since (5,0)] @@ -1262,6 +1270,54 @@ namespace XamCore.CoreImage { [Export ("extent")] CGRect Extent { get; } } + + [StrongDictionary ("CIImageInitializationOptionsKeys")] + interface CIImageInitializationOptions { + // Bug #60726: [Generator] Support INativeObject in StrongDictionary + // (https://bugzilla.xamarin.com/show_bug.cgi?id=60726) + // CGColorSpace ColorSpace { get; set; } + + CoreGraphics.CGImageProperties Properties { get; set; } + + [iOS (11,0), TV (11,0), Mac (10,13)] + bool ApplyOrientationProperty { get; set; } + + [iOS (11,0), TV (11,0), Mac (10,13)] + bool NearestSampling { get; set; } + + [iOS (11,0), TV (11,0), Mac (10,13)] + bool AuxiliaryDepth { get; set; } + + [iOS (11,0), TV (11,0), Mac (10,13)] + bool AuxiliaryDisparity { get; set; } + } + + [Internal] + [Static] + interface CIImageInitializationOptionsKeys { + [Field ("kCIImageColorSpace")] + NSString ColorSpaceKey { get; } + + [MountainLion] + [Field ("kCIImageProperties")] + NSString PropertiesKey { get; } + + [iOS (11,0), TV (11,0), Mac (10,13)] + [Field ("kCIImageNearestSampling")] + NSString NearestSamplingKey { get; } + + [iOS (11,0), TV (11,0), Mac (10,13)] + [Field ("kCIImageApplyOrientationProperty")] + NSString ApplyOrientationPropertyKey { get; } + + [iOS (11,0), TV (11,0), Mac (10,13)] + [Field ("kCIImageAuxiliaryDepth")] + NSString AuxiliaryDepthKey { get; } + + [iOS (11,0), TV (11,0), Mac (10,13)] + [Field ("kCIImageAuxiliaryDisparity")] + NSString AuxiliaryDisparityKey { get; } + } [BaseType (typeof (NSObject))] [Since (5,0)] @@ -1692,13 +1748,6 @@ namespace XamCore.CoreImage { [Export ("autoAdjustmentFiltersWithOptions:"), Internal] NSArray _GetAutoAdjustmentFilters ([NullAllowed] NSDictionary opts); - [Field ("kCIImageColorSpace"), Internal] - NSString CIImageColorSpaceKey { get; } - - [MountainLion] - [Field ("kCIImageProperties"), Internal] - NSString CIImagePropertiesKey { get; } - [Since (6,0)] // publicly documented in 7.0 but really available since 6.0 [Mac (10,12)] [Export ("regionOfInterestForImage:inRect:")] diff --git a/tests/xtro-sharpie/common.pending b/tests/xtro-sharpie/common.pending index bd8cb9cb99..8a6ad07cff 100644 --- a/tests/xtro-sharpie/common.pending +++ b/tests/xtro-sharpie/common.pending @@ -65,14 +65,6 @@ !missing-selector! CISampler::initWithImage:keysAndValues: not bound !missing-selector! +CISampler::samplerWithImage:keysAndValues: not bound -## https://bugzilla.xamarin.com/show_bug.cgi?id=59296 -!missing-field! kCIImageApplyOrientationProperty not bound -!missing-field! kCIImageAuxiliaryDepth not bound -!missing-field! kCIImageAuxiliaryDisparity not bound -!missing-field! kCIImageNearestSampling not bound -!missing-field! kCIInputDepthImageKey not bound -!missing-field! kCIInputDisparityImageKey not bound - # Foundation From aee2c96d9e9ff3aa6a73cbdc9c2e2e0a8793b7c1 Mon Sep 17 00:00:00 2001 From: Sebastien Pouliot Date: Mon, 20 Nov 2017 11:36:20 -0500 Subject: [PATCH 129/145] kick a new build on jenkins (and publish it) --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index 3ad16fb71e..1ac8445b60 100644 --- a/README.md +++ b/README.md @@ -142,4 +142,3 @@ We use [Mono's Coding Guidelines](http://www.mono-project.com/community/contribu ### Reporting Bugs We use [Bugzilla](https://bugzilla.xamarin.com/newbug) to track issues. - From a2d9c80cb5606ab7669c299c557c69fbb4eb786e Mon Sep 17 00:00:00 2001 From: Sebastien Pouliot Date: Tue, 21 Nov 2017 20:50:33 -0500 Subject: [PATCH 130/145] [homekit] Expose weakly-typed API since the constants are extensible. Fixed #60303 (#3025) This is a case of NSString enum extensibility - even if this framework does not use the usual `NS_EXTENSIBLE_STRING_ENUM` macro (which is recent and have not been applied for all framework / headers). Minimally we need to provide alternative, weakly typed, `NSString`-based API wherever the (extensible) enums types are used. Not the best API (even if we can minimize it's use with `[EditorBrowsable (EditorBrowsableState.Advanced)]`) but C# enums can't be extended this way. Also, even if less urgent, we need to make the enum-generated helper aware of the extensibility so they do not throw, making it easier to mix strongly and weakly typed code (instead of choosing one over the other). Taking the first step for `xcode92` with the enum-backed constants in HomeKit, i.e. * HMAccessoryCategoryType * HMCharacteristicType * HMServiceType * HMSignificantEvent Reference https://bugzilla.xamarin.com/show_bug.cgi?id=60303 * [tests] WeakSignificantEvent is a weakly typed alternative (not a weak argument semantic) --- src/HomeKit/HMEnums.cs | 2 ++ src/HomeKit/HMHome.cs | 2 +- src/HomeKit/HMMutableSignificantTimeEvent.cs | 4 +-- src/HomeKit/HMSignificantTimeEvent.cs | 4 +-- src/homekit.cs | 34 ++++++++++---------- tests/introspection/ApiWeakPropertyTest.cs | 3 ++ 6 files changed, 27 insertions(+), 22 deletions(-) diff --git a/src/HomeKit/HMEnums.cs b/src/HomeKit/HMEnums.cs index a72475f945..cf2e69cdde 100644 --- a/src/HomeKit/HMEnums.cs +++ b/src/HomeKit/HMEnums.cs @@ -148,8 +148,10 @@ namespace XamCore.HomeKit { [Field ("HMCharacteristicTypeHeatingThreshold")] HeatingThreshold, +#if !XAMCORE_4_0 [Obsolete ("This value does not exist anymore and will always return null.")] HeatingCoolingStatus, +#endif [Field ("HMCharacteristicTypeCurrentRelativeHumidity")] CurrentRelativeHumidity, diff --git a/src/HomeKit/HMHome.cs b/src/HomeKit/HMHome.cs index 16cf2b2916..460c288e6a 100644 --- a/src/HomeKit/HMHome.cs +++ b/src/HomeKit/HMHome.cs @@ -78,7 +78,7 @@ namespace XamCore.HomeKit { if ((serviceTypes & HMServiceType.Slats) == HMServiceType.Slats) arr.Add (HMServiceType.Slats.GetConstant ()); - return _ServicesWithTypes (arr.ToArray ()); + return GetServices (arr.ToArray ()); } } } diff --git a/src/HomeKit/HMMutableSignificantTimeEvent.cs b/src/HomeKit/HMMutableSignificantTimeEvent.cs index 027d6c120c..92a10719c9 100644 --- a/src/HomeKit/HMMutableSignificantTimeEvent.cs +++ b/src/HomeKit/HMMutableSignificantTimeEvent.cs @@ -7,10 +7,10 @@ namespace XamCore.HomeKit { public virtual HMSignificantEvent SignificantEvent { get { - return (HMSignificantEvent) (HMSignificantEventExtensions.GetValue (_SignificantEvent)); + return (HMSignificantEvent) (HMSignificantEventExtensions.GetValue (WeakSignificantEvent)); } set { - _SignificantEvent = HMSignificantEventExtensions.GetConstant (value); + WeakSignificantEvent = HMSignificantEventExtensions.GetConstant (value); } } } diff --git a/src/HomeKit/HMSignificantTimeEvent.cs b/src/HomeKit/HMSignificantTimeEvent.cs index e99ef3d006..c9b3e795b0 100644 --- a/src/HomeKit/HMSignificantTimeEvent.cs +++ b/src/HomeKit/HMSignificantTimeEvent.cs @@ -7,10 +7,10 @@ namespace XamCore.HomeKit { public virtual HMSignificantEvent SignificantEvent { get { - return (HMSignificantEvent) (HMSignificantEventExtensions.GetValue (_SignificantEvent)); + return (HMSignificantEvent) (HMSignificantEventExtensions.GetValue (WeakSignificantEvent)); } set { - _SignificantEvent = HMSignificantEventExtensions.GetConstant (value); + WeakSignificantEvent = HMSignificantEventExtensions.GetConstant (value); } } } diff --git a/src/homekit.cs b/src/homekit.cs index 83e2d9e6b8..5552aeffee 100644 --- a/src/homekit.cs +++ b/src/homekit.cs @@ -344,11 +344,11 @@ namespace XamCore.HomeKit { [BaseType (typeof (NSObject))] partial interface HMCharacteristic { - [Internal] + [EditorBrowsable (EditorBrowsableState.Advanced)] [Export ("characteristicType", ArgumentSemantic.Copy)] - NSString _CharacteristicType { get; } + NSString WeakCharacteristicType { get; } - [Wrap ("HMCharacteristicTypeExtensions.GetValue (_CharacteristicType)")] + [Wrap ("HMCharacteristicTypeExtensions.GetValue (WeakCharacteristicType)")] HMCharacteristicType CharacteristicType { get; } [Export ("service", ArgumentSemantic.Weak)] @@ -583,9 +583,9 @@ namespace XamCore.HomeKit { [Export ("assignAccessory:toRoom:completionHandler:")] void AssignAccessory (HMAccessory accessory, HMRoom room, Action completion); - [Internal] + [EditorBrowsable (EditorBrowsableState.Advanced)] [Export ("servicesWithTypes:")] - HMService [] _ServicesWithTypes (NSString [] serviceTypes); + HMService [] GetServices (NSString [] serviceTypes); [NoTV] [NoWatch] @@ -871,11 +871,11 @@ namespace XamCore.HomeKit { [Export ("accessory", ArgumentSemantic.Weak)] HMAccessory Accessory { get; } - [Internal] + [EditorBrowsable (EditorBrowsableState.Advanced)] [Export ("serviceType", ArgumentSemantic.Copy)] - NSString _ServiceType { get; } + NSString WeakServiceType { get; } - [Wrap ("HMServiceTypeExtensions.GetValue (_ServiceType)")] + [Wrap ("HMServiceTypeExtensions.GetValue (WeakServiceType)")] HMServiceType ServiceType { get; } [Export ("name")] @@ -1140,11 +1140,11 @@ namespace XamCore.HomeKit { [BaseType (typeof (NSObject))] [DisableDefaultCtor] // NSInternalInconsistencyException Reason: init is unavailable interface HMAccessoryCategory { - [Internal] + [EditorBrowsable (EditorBrowsableState.Advanced)] [Export ("categoryType")] - NSString _CategoryType { get; } + NSString WeakCategoryType { get; } - [Wrap ("HMAccessoryCategoryTypeExtensions.GetValue (_CategoryType)")] + [Wrap ("HMAccessoryCategoryTypeExtensions.GetValue (WeakCategoryType)")] HMAccessoryCategoryType CategoryType { get; } [Export ("localizedDescription")] @@ -1711,12 +1711,12 @@ namespace XamCore.HomeKit { [Wrap ("this (HMSignificantEventExtensions.GetConstant (significantEvent), offset)")] IntPtr Constructor (HMSignificantEvent significantEvent, [NullAllowed] NSDateComponents offset); - [Internal] + [EditorBrowsable (EditorBrowsableState.Advanced)] [Export ("significantEvent", ArgumentSemantic.Strong)] - NSString _SignificantEvent { get; [NotImplemented] set; } + NSString WeakSignificantEvent { get; [NotImplemented] set; } // FIXME: Bug https://bugzilla.xamarin.com/show_bug.cgi?id=57870 - // [Wrap ("HMSignificantEventExtensions.GetValue (_SignificantEvent)")] + // [Wrap ("HMSignificantEventExtensions.GetValue (WeakSignificantEvent)")] // HMSignificantEvent SignificantEvent { get; [NotImplemented] set; } [NullAllowed, Export ("offset", ArgumentSemantic.Strong)] @@ -1734,14 +1734,14 @@ namespace XamCore.HomeKit { [Wrap ("this (HMSignificantEventExtensions.GetConstant (significantEvent), offset)")] IntPtr Constructor (HMSignificantEvent significantEvent, [NullAllowed] NSDateComponents offset); - [Internal] + [EditorBrowsable (EditorBrowsableState.Advanced)] [Override] [Export ("significantEvent", ArgumentSemantic.Strong)] - NSString _SignificantEvent { get; set; } + NSString WeakSignificantEvent { get; set; } // FIXME: Bug https://bugzilla.xamarin.com/show_bug.cgi?id=57870 // [Override] - // [Wrap ("HMSignificantEventExtensions.GetValue (_SignificantEvent)")] + // [Wrap ("HMSignificantEventExtensions.GetValue (WeakSignificantEvent)")] // HMSignificantEvent SignificantEvent { get; set; } [Override] diff --git a/tests/introspection/ApiWeakPropertyTest.cs b/tests/introspection/ApiWeakPropertyTest.cs index f46f0095a2..b0987d8f96 100644 --- a/tests/introspection/ApiWeakPropertyTest.cs +++ b/tests/introspection/ApiWeakPropertyTest.cs @@ -43,6 +43,9 @@ namespace Introspection { // the selector starts with `weak` case "WeakRelatedUniqueIdentifier": return property.DeclaringType.Name == "CSSearchableItemAttributeSet"; + // this is a weakly typed API (not a weak reference) with a [NotImplemented] so there's no [Export] + case "WeakSignificantEvent": + return property.DeclaringType.Name == "HMSignificantTimeEvent"; } return false; } From da591eae51fa666db9753ff290f1c0c60c575bce Mon Sep 17 00:00:00 2001 From: Timothy Risi Date: Wed, 22 Nov 2017 16:52:10 -0900 Subject: [PATCH 131/145] [mac-introspection] Use en-US for ApiTypoTest, fix typo failures (#3018) Also disables typo check for XM classic because: `We have 823 typos!` I'm not sure why but switching to the new API, which specify `en_US`, seems to report more errors. Unified API are already fixed and I don't see value in adding _ignore_ entries for classic (we don't add classic-only API anyway) so this just makes then test built/executed for XAMCORE_2_0 --- src/AppKit/Enums.cs | 12 +++++++-- src/AppKit/NSCollectionView.cs | 9 +++++++ src/AppKit/NSLayoutManager.cs | 8 ++++++ src/CoreGraphics/CGEvent.cs | 12 +++++++++ src/appkit.cs | 21 ++++++++++++--- src/imagekit.cs | 5 ++++ src/notificationcenter.cs | 6 +++++ src/pdfkit.cs | 8 ++++++ src/scriptingbridge.cs | 7 ++++- src/webkit.cs | 5 ++++ tests/common/mac/Mac.cs | 1 + tests/introspection/ApiTypoTest.cs | 33 +++++++++++++++++++++++ tests/introspection/Mac/MacApiTypoTest.cs | 14 ++++------ 13 files changed, 126 insertions(+), 15 deletions(-) diff --git a/src/AppKit/Enums.cs b/src/AppKit/Enums.cs index 11dfbb68b7..58e26d89bb 100644 --- a/src/AppKit/Enums.cs +++ b/src/AppKit/Enums.cs @@ -1223,7 +1223,11 @@ namespace XamCore.AppKit { // NSStackView.h:typedef float NSStackViewVisibilityPriority public enum NSStackViewVisibilityPriority : int { - Musthold = 1000, + MustHold = 1000, +#if !XAMCORE_4_0 + [Obsolete ("Use 'MustHold' instead.")] + Musthold = MustHold, +#endif DetachOnlyIfNecessary = 900, NotVisible = 0 } @@ -1981,7 +1985,11 @@ namespace XamCore.AppKit { public enum NSOpenGLPixelFormatAttribute : uint_compat_int { // uint32_t NSOpenGLPixelFormatAttribute AllRenderers = 1, DoubleBuffer = 5, - [Lion] TrippleBuffer = 3, + [Lion] TripleBuffer = 3, +#if !XAMCORE_4_0 + [Obsolete ("Use 'TripleBuffer' instead.")] + [Lion] TrippleBuffer = TripleBuffer, +#endif Stereo = 6, AuxBuffers = 7, ColorSize = 8, diff --git a/src/AppKit/NSCollectionView.cs b/src/AppKit/NSCollectionView.cs index 16b183204f..10239bdd49 100644 --- a/src/AppKit/NSCollectionView.cs +++ b/src/AppKit/NSCollectionView.cs @@ -13,5 +13,14 @@ namespace XamCore.AppKit { { _RegisterClassForSupplementaryView (viewClass == null ? IntPtr.Zero : Class.GetHandle (viewClass), kind, identifier); } + +#if !XAMCORE_4_0 + [Mac (10, 11)] + [Obsolete ("Use 'GetLayoutAttributes' instead.")] + public virtual NSCollectionViewLayoutAttributes GetLayoutAttributest (string kind, NSIndexPath indexPath) + { + return GetLayoutAttributes (kind, indexPath); + } +#endif } } diff --git a/src/AppKit/NSLayoutManager.cs b/src/AppKit/NSLayoutManager.cs index 702a8a5179..e58393152d 100644 --- a/src/AppKit/NSLayoutManager.cs +++ b/src/AppKit/NSLayoutManager.cs @@ -37,5 +37,13 @@ namespace XamCore.AppKit { } return returnArray; } + +#if !XAMCORE_4_0 + [Obsolete ("Use 'GetIntAttribute' instead.")] + public virtual nint IntAttributeforGlyphAtIndex (nint attributeTag, nint glyphIndex) + { + return GetIntAttribute (attributeTag, glyphIndex); + } +#endif } } diff --git a/src/CoreGraphics/CGEvent.cs b/src/CoreGraphics/CGEvent.cs index 559d0e266a..dac059285b 100644 --- a/src/CoreGraphics/CGEvent.cs +++ b/src/CoreGraphics/CGEvent.cs @@ -311,6 +311,8 @@ namespace XamCore.CoreGraphics { [DllImport (Constants.ApplicationServicesCoreGraphicsLibrary)] extern static void CGEventSetTimestamp (IntPtr handle, ulong timeStampp); +#if !XAMCORE_4_0 + [Obsolete ("Use 'Timestamp' instead.")] public ulong Timestampe { get { return CGEventGetTimestamp (handle); @@ -319,6 +321,16 @@ namespace XamCore.CoreGraphics { CGEventSetTimestamp (handle, value); } } +#endif + + public ulong Timestamp { + get { + return CGEventGetTimestamp (handle); + } + set { + CGEventSetTimestamp (handle, value); + } + } [DllImport (Constants.ApplicationServicesCoreGraphicsLibrary)] extern static void CGEventTapEnable (IntPtr machPort, bool enable); diff --git a/src/appkit.cs b/src/appkit.cs index 6d0d83d095..abe70ef46f 100644 --- a/src/appkit.cs +++ b/src/appkit.cs @@ -2781,7 +2781,7 @@ namespace XamCore.AppKit { [Mac (10,11)] [Export ("layoutAttributesForSupplementaryElementOfKind:atIndexPath:")] [return: NullAllowed] - NSCollectionViewLayoutAttributes GetLayoutAttributest (string kind, NSIndexPath indexPath); + NSCollectionViewLayoutAttributes GetLayoutAttributes (string kind, NSIndexPath indexPath); // -(NSInteger)numberOfSections __attribute__((availability(macosx, introduced=10.11))); [Mac (10,11)] @@ -10480,7 +10480,7 @@ namespace XamCore.AppKit { nuint GlyphIndexForCharacterAtIndex (nint charIndex); [Export ("intAttribute:forGlyphAtIndex:")] - nint IntAttributeforGlyphAtIndex (nint attributeTag, nint glyphIndex); + nint GetIntAttribute (nint attributeTag, nint glyphIndex); [Export ("setTextContainer:forGlyphRange:")] void SetTextContainerForRange (NSTextContainer container, NSRange glyphRange); @@ -14950,9 +14950,13 @@ namespace XamCore.AppKit { #if !XAMCORE_4_0 [Abstract] -#endif [Export ("drawCharactersInRange:forContentView:")] void DrawCharactersInRangeforContentView (NSRange range, NSView view); +#else + [Export ("drawCharactersInRange:forContentView:")] + void DrawCharacters (NSRange range, NSView view); +#endif + } [BaseType (typeof (NSObject)), Model, Protocol] @@ -18876,8 +18880,13 @@ namespace XamCore.AppKit { [Export ("textView:didCheckTextInRange:types:options:results:orthography:wordCount:"), DelegateName ("NSTextViewTextChecked"), DefaultValueFromArgument ("results")] NSTextCheckingResult [] DidCheckText (NSTextView view, NSRange range, NSTextCheckingTypes checkingTypes, NSDictionary options, NSTextCheckingResult [] results, NSOrthography orthography, nint wordCount); +#if !XAMCORE_4_0 [Export ("textView:draggedCell:inRect:event:"), EventArgs ("NSTextViewDraggedCell")] void DraggedCell (NSTextView view, NSTextAttachmentCell cell, CGRect rect, NSEvent theevent); +#else + [Export ("textView:draggedCell:inRect:event:"), EventArgs ("NSTextViewDraggedCell")] + void DraggedCell (NSTextView view, NSTextAttachmentCell cell, CGRect rect, NSEvent theEvent); +#endif [Export ("undoManagerForTextView:"), DelegateName ("NSTextViewGetUndoManager"), DefaultValue (null)] NSUndoManager GetUndoManager (NSTextView view); @@ -23750,8 +23759,14 @@ namespace XamCore.AppKit { [Field ("NSAccessibilityWindowAttribute")] NSString WindowAttribute { get; } +#if !XAMCORE_4_0 + [Obsolete ("Use 'TopLevelUIElementAttribute' instead.")] [Field ("NSAccessibilityTopLevelUIElementAttribute")] NSString ToplevelUIElementAttribute { get; } +#endif + + [Field ("NSAccessibilityTopLevelUIElementAttribute")] + NSString TopLevelUIElementAttribute { get; } [Field ("NSAccessibilitySelectedChildrenAttribute")] NSString SelectedChildrenAttribute { get; } diff --git a/src/imagekit.cs b/src/imagekit.cs index 977fae8db3..d8a84b86e7 100644 --- a/src/imagekit.cs +++ b/src/imagekit.cs @@ -730,8 +730,13 @@ namespace XamCore.ImageKit { [Export ("backgroundColor", ArgumentSemantic.Assign)] NSColor BackgroundColor { get; set; } +#if !XAMCORE_4_0 [Export ("setImage:imageProperties:")] void SetImageimageProperties (CGImage image, NSDictionary metaData); +#else + [Export ("setImage:imageProperties:")] + void SetImage (CGImage image, NSDictionary metaData); +#endif [Export ("setImageWithURL:")] void SetImageWithURL (NSUrl url); diff --git a/src/notificationcenter.cs b/src/notificationcenter.cs index 1c242481ff..402018d2bc 100644 --- a/src/notificationcenter.cs +++ b/src/notificationcenter.cs @@ -192,9 +192,15 @@ namespace XamCore.NotificationCenter { [BaseType (typeof(NSObject))] interface NCWidgetSearchViewDelegate { +#if !XAMCORE_4_0 [Abstract] [Export ("widgetSearch:searchForTerm:maxResults:"), EventArgs ("NSWidgetSearchForTerm"), DefaultValue (false)] void SearchForTearm (NCWidgetSearchViewController controller, string searchTerm, nuint max); +#else + [Abstract] + [Export ("widgetSearch:searchForTerm:maxResults:"), EventArgs ("NSWidgetSearchForTerm"), DefaultValue (false)] + void SearchForTerm (NCWidgetSearchViewController controller, string searchTerm, nuint max); +#endif [Abstract] [Export ("widgetSearchTermCleared:"), EventArgs ("NSWidgetSearchViewController"), DefaultValue (false)] diff --git a/src/pdfkit.cs b/src/pdfkit.cs index bd0a68fe4c..809ba974cd 100644 --- a/src/pdfkit.cs +++ b/src/pdfkit.cs @@ -917,11 +917,19 @@ namespace XamCore.PdfKit { [Export ("paths")] NSBezierPath [] Paths { get; } +#if !XAMCORE_4_0 [Export ("addBezierPath:")] void AddBezierPathpath (NSBezierPath path); [Export ("removeBezierPath:")] void RemoveBezierPathpath (NSBezierPath path); +#else + [Export ("addBezierPath:")] + void AddBezierPath (NSBezierPath path); + + [Export ("removeBezierPath:")] + void RemoveBezierPath (NSBezierPath path); +#endif } [NoiOS] diff --git a/src/scriptingbridge.cs b/src/scriptingbridge.cs index b26a601ee6..7bcc0c7c71 100644 --- a/src/scriptingbridge.cs +++ b/src/scriptingbridge.cs @@ -155,11 +155,16 @@ namespace XamCore.ScriptingBridge { [Model] [Protocol] interface SBApplicationDelegate { +#if !XAMCORE_4_0 [Abstract] [Export ("eventDidFail:withError:"), DelegateName ("SBApplicationError"), DefaultValue (null)] //NSObject EventDidFailwithError (const AppleEvent event, NSError error); NSObject EventDidFailwithError (IntPtr appleEvent, NSError error); - +#else + [Abstract] + [Export ("eventDidFail:withError:"), DelegateName ("SBApplicationError"), DefaultValue (null)] + NSObject EventFailed (IntPtr appleEvent, NSError error); +#endif } } diff --git a/src/webkit.cs b/src/webkit.cs index b905fc8ae4..d819b5c249 100644 --- a/src/webkit.cs +++ b/src/webkit.cs @@ -2323,8 +2323,13 @@ namespace XamCore.WebKit { [Export ("webView:validateUserInterfaceItem:defaultValidation:"), DelegateName ("WebViewValidateUserInterface"), DefaultValueFromArgument ("defaultValidation")] bool UIValidateUserInterfaceItem (WebView webView, NSObject validatedUserInterfaceItem, bool defaultValidation); +#if !XAMCORE_4_0 [Export ("webView:shouldPerformAction:fromSender:"), DelegateName("WebViewPerformAction"), DefaultValue (null)] bool UIShouldPerformActionfromSender (WebView webView, Selector action, NSObject sender); +#else + [Export ("webView:shouldPerformAction:fromSender:"), DelegateName("WebViewPerformAction"), DefaultValue (null)] + bool UIShouldPerformAction (WebView webView, Selector action, NSObject sender); +#endif [Export ("webView:dragDestinationActionMaskForDraggingInfo:"), DelegateName ("DragDestinationGetActionMask"), DefaultValue (0)] NSEventModifierMask UIGetDragDestinationActionMask (WebView webView, NSDraggingInfo draggingInfo); diff --git a/tests/common/mac/Mac.cs b/tests/common/mac/Mac.cs index c95b99381b..9cede0930b 100644 --- a/tests/common/mac/Mac.cs +++ b/tests/common/mac/Mac.cs @@ -21,6 +21,7 @@ namespace Xamarin.Tests { static PlatformInfo host => PlatformInfo.Host; public static bool CheckSystemVersion (int major, int minor) => host.Version >= new Version (major, minor); + public static bool CheckSystemVersion (int major, int minor, int build) => host.Version >= new Version (major, minor, build); public static bool Is32BitMavericks => host.IsArch32 && IsAtLeast (Version_10_9); public static bool IsYosemiteOrHigher => IsAtLeast (Version_10_10); public static bool IsElCapitanOrHigher => IsAtLeast (Version_10_11); diff --git a/tests/introspection/ApiTypoTest.cs b/tests/introspection/ApiTypoTest.cs index b5f40cb826..d3fdc2863e 100644 --- a/tests/introspection/ApiTypoTest.cs +++ b/tests/introspection/ApiTypoTest.cs @@ -83,6 +83,7 @@ namespace Introspection "Adjustmentfor", "Aifc", "Aiff", + "Aio", "Alg", // short for Algorithm "Amete", "Amr", @@ -99,9 +100,11 @@ namespace Introspection "Automapping", "Automounted", "Autoredirect", + "Autospace", "Avci", // file type "Aliasable", "Arcball", + "Avg", "Backface", "Bancaire", // french "Bancaires", // french @@ -132,6 +135,7 @@ namespace Introspection "Cinepak", "Clearcoat", "Cnn", // Convolutional Neural Network + "Cns", "Colos", "Commerical", "Composable", @@ -160,6 +164,7 @@ namespace Introspection "dlerror", "Dlfcn", "dlopen", + "Dls", "Dlsym", "dlsym", "Dng", @@ -194,6 +199,7 @@ namespace Introspection "Fov", "Framebuffer", "Framesetter", + "Froms", // NSMetadataItemWhereFromsKey "Freq", "Ftps", "Func", @@ -202,9 +208,11 @@ namespace Introspection "Geocoder", "Gigapascals", "Gpp", + "Gps", "Gpu", // acronym for Graphics Processing Unit "Grbg", // acronym for Green-Red-Blue-Green "Greeking", + "Hardlink", "Hdmi", "Hdr", "Hectopascals", @@ -230,7 +238,9 @@ namespace Introspection "Indoorrun", "Indoorcycle", "Inklist", + "Indeterm", "Indoorwalk", + "Inode", "Inser", "Interac", "Interframe", @@ -305,6 +315,7 @@ namespace Introspection "Ntsc", "nuint", "Ndef", + "Nop", "Numbernumber", "Nyquist", "Oaep", // Optimal asymmetric encryption padding @@ -342,6 +353,7 @@ namespace Introspection "Preds", // short for Predicates "Prerolls", "Preseti", + "Prev", "Propogate", "Psec", "Psm", // Protocol/Service Multiplexer @@ -353,6 +365,7 @@ namespace Introspection "Reacquirer", "Reinvitation", "Reinvite", + "Rel", "Reprandial", "Replayable", "Requestwith", @@ -405,6 +418,8 @@ namespace Introspection "Submesh", "Submeshes", "Subpixel", + "Subresource", + "Subresources", "Subsec", "Suica", // Japanese contactless smart card type "Superentity", @@ -449,6 +464,7 @@ namespace Introspection "Untrash", "Utf", "Upce", + "Uri", "Uti", "Varispeed", "Vergence", @@ -589,6 +605,7 @@ namespace Introspection "Usedby", "Viewwrite", "Wep", + "Wlan", "Wme", "Writeln", "Xattr", @@ -724,6 +741,22 @@ namespace Introspection "Ycbcr", "Ycrcba", #endif +#endif +#if !XAMCORE_4_0 + "Actionfrom", + "Attributefor", + "Attributest", + "Failwith", + "Imageimage", + "Musthold", + "Pathpath", + "Rangefor", + "Failwith", + "Tearm", + "Theevent", + "Timestampe", // Existing binding so we can't just remove it. + "Toplevel", + "Tripple", #endif }; diff --git a/tests/introspection/Mac/MacApiTypoTest.cs b/tests/introspection/Mac/MacApiTypoTest.cs index 40535c4a0e..9f310fb6ee 100644 --- a/tests/introspection/Mac/MacApiTypoTest.cs +++ b/tests/introspection/Mac/MacApiTypoTest.cs @@ -1,16 +1,10 @@ -using System; +#if XAMCORE_2_0 +using System; using NUnit.Framework; -#if XAMCORE_2_0 using Foundation; using ObjCRuntime; using AppKit; -#else -using MonoMac; -using MonoMac.Foundation; -using MonoMac.ObjCRuntime; -using MonoMac.AppKit; -#endif namespace Introspection { @@ -31,7 +25,8 @@ namespace Introspection public override string GetTypo (string txt) { var checkRange = new NSRange (0, txt.Length); - var typoRange = checker.CheckSpelling (txt, 0); + nint wordCount; + var typoRange = checker.CheckSpelling (txt, 0, "en_US", false, 0, out wordCount); if (typoRange.Length == 0) return String.Empty; return txt.Substring ((int)typoRange.Location, (int)typoRange.Length); @@ -46,3 +41,4 @@ namespace Introspection } } } +#endif From f0915df335d5ea1833f21cb194e281ab06c208ee Mon Sep 17 00:00:00 2001 From: Sebastien Pouliot Date: Fri, 24 Nov 2017 09:55:11 -0500 Subject: [PATCH 132/145] [coreimage] Fix the pointer used in CIVector(nfloat[]) until the native call completes (#3038) However there's a small window between the time we get a pointer and the call to the native selector where the memory is not fixed. During this time the GC can move the memory resulting in hard to diagnose crashes. Note: `initWithValues:count:` copies the provided memory so what happens afterward is not an issue. --- src/CoreImage/CIVector.cs | 46 +++++++++++++------ src/ObjCRuntime/Messaging.iOS.cs | 5 ++ src/ObjCRuntime/Messaging.mac.cs | 5 +- src/coreimage.cs | 4 -- .../CoreImage/CoreVectorTest.cs | 31 ++++++++++--- 5 files changed, 65 insertions(+), 26 deletions(-) diff --git a/src/CoreImage/CIVector.cs b/src/CoreImage/CIVector.cs index c2ed733d06..520c0519d0 100644 --- a/src/CoreImage/CIVector.cs +++ b/src/CoreImage/CIVector.cs @@ -27,6 +27,8 @@ // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. // using System; +using XamCore.Foundation; +using XamCore.ObjCRuntime; namespace XamCore.CoreImage { public partial class CIVector { @@ -35,24 +37,38 @@ namespace XamCore.CoreImage { return ValueAtIndex (index); } } - - static IntPtr GetPtr (nfloat [] values) + + public CIVector (nfloat [] values) : + this (values, values == null ? 0 : values.Length) + { + } + + [DesignatedInitializer] + [Export ("initWithValues:count:")] + public unsafe CIVector (nfloat [] values, nint count) : base (NSObjectFlag.Empty) + { + if (values == null) + throw new ArgumentNullException (@nameof (values)); + if (count > values.Length) + throw new ArgumentOutOfRangeException (@nameof (count)); + + fixed (nfloat *ptr = values) { + var handle = IntPtr.Zero; + if (IsDirectBinding) { + handle = Messaging.IntPtr_objc_msgSend_IntPtr_nint (Handle, Selector.GetHandle ("initWithValues:count:"), (IntPtr) ptr, count); + } else { + handle = Messaging.IntPtr_objc_msgSendSuper_IntPtr_nint (SuperHandle, Selector.GetHandle ("initWithValues:count:"), (IntPtr) ptr, count); + } + InitializeHandle (handle, "initWithValues:count:"); + } + } + + public unsafe static CIVector FromValues (nfloat [] values) { if (values == null) throw new ArgumentNullException ("values"); - unsafe { - fixed (nfloat *ptr = values) - return (IntPtr) ptr; - } - } - - public CIVector (nfloat [] values) : this (GetPtr (values), values.Length) - { - } - - public static CIVector FromValues (nfloat [] values) - { - return _FromValues (GetPtr (values), values.Length); + fixed (nfloat *ptr = values) + return _FromValues ((IntPtr) ptr, values.Length); } public override string ToString () diff --git a/src/ObjCRuntime/Messaging.iOS.cs b/src/ObjCRuntime/Messaging.iOS.cs index 759a328cf2..db4abe468f 100644 --- a/src/ObjCRuntime/Messaging.iOS.cs +++ b/src/ObjCRuntime/Messaging.iOS.cs @@ -329,6 +329,11 @@ namespace XamCore.ObjCRuntime { public extern static void void_objc_msgSendSuper_IntPtr_RectangleF_IntPtr (IntPtr receiver, IntPtr selector, IntPtr arg1, System.Drawing.RectangleF arg2, IntPtr arg3); [DllImport (LIBOBJC_DYLIB, EntryPoint="objc_msgSendSuper")] public extern static void void_objc_msgSend_IntPtr_RectangleF_IntPtr (IntPtr receiver, IntPtr selector, IntPtr arg1, System.Drawing.RectangleF arg2, IntPtr arg3); + + [DllImport (LIBOBJC_DYLIB, EntryPoint="objc_msgSend")] + public extern static IntPtr IntPtr_objc_msgSend_IntPtr_nint (IntPtr receiver, IntPtr selector, global::System.IntPtr arg1, nint arg2); + [DllImport (LIBOBJC_DYLIB, EntryPoint="objc_msgSendSuper")] + public extern static IntPtr IntPtr_objc_msgSendSuper_IntPtr_nint (IntPtr receiver, IntPtr selector, global::System.IntPtr arg1, nint arg2); #endif } } diff --git a/src/ObjCRuntime/Messaging.mac.cs b/src/ObjCRuntime/Messaging.mac.cs index 2ec01d9699..e72bb96b5e 100644 --- a/src/ObjCRuntime/Messaging.mac.cs +++ b/src/ObjCRuntime/Messaging.mac.cs @@ -599,7 +599,10 @@ namespace XamCore.ObjCRuntime { [DllImport (LIBOBJC_DYLIB, EntryPoint="objc_msgSend")] public extern static int int_objc_msgSend_NSRange_IntPtr_IntPtr_IntPtr_IntPtr_IntPtr (IntPtr receiver, IntPtr selector, MonoMac.Foundation.NSRange arg1, IntPtr arg2, IntPtr arg3, IntPtr arg4, IntPtr arg5, IntPtr arg6); - + [DllImport (LIBOBJC_DYLIB, EntryPoint="objc_msgSend")] + public extern static IntPtr IntPtr_objc_msgSend_IntPtr_nint (IntPtr receiver, IntPtr selector, global::System.IntPtr arg1, nint arg2); + [DllImport (LIBOBJC_DYLIB, EntryPoint="objc_msgSendSuper")] + public extern static IntPtr IntPtr_objc_msgSendSuper_IntPtr_nint (IntPtr receiver, IntPtr selector, global::System.IntPtr arg1, nint arg2); #endif } } diff --git a/src/coreimage.cs b/src/coreimage.cs index 7670b223c6..04f9618149 100644 --- a/src/coreimage.cs +++ b/src/coreimage.cs @@ -2238,10 +2238,6 @@ namespace XamCore.CoreImage { [Export ("vectorWithString:")] CIVector FromString (string representation); - [DesignatedInitializer] - [Internal, Export ("initWithValues:count:")] - IntPtr Constructor (IntPtr values, nint count); - [Mac (10,9)] [iOS (5,0)] [Export ("initWithCGPoint:")] diff --git a/tests/monotouch-test/CoreImage/CoreVectorTest.cs b/tests/monotouch-test/CoreImage/CoreVectorTest.cs index e1540dffb1..f7696c9d5e 100644 --- a/tests/monotouch-test/CoreImage/CoreVectorTest.cs +++ b/tests/monotouch-test/CoreImage/CoreVectorTest.cs @@ -37,14 +37,33 @@ namespace MonoTouchFixtures.CoreImage { public class CIVectorTest { [Test] - public void Constructors () + public void CtorFloatArray () { // Make sure these do not crash - Assert.That (new CIVector (new nfloat [0]).Count, Is.EqualTo ((nint) 0)); - Assert.That (new CIVector (new nfloat [] {1}).Count, Is.EqualTo ((nint) 1)); - Assert.That (new CIVector (new nfloat [] {1,2}).Count, Is.EqualTo ((nint) 2)); - Assert.That (new CIVector (new nfloat [] {1,2,3}).Count, Is.EqualTo ((nint) 3)); - Assert.That (new CIVector (new nfloat [] {1,2,3,4}).Count, Is.EqualTo ((nint) 4)); + Assert.That (new CIVector (new nfloat [0]).Count, Is.EqualTo ((nint) 0), "0"); + Assert.That (new CIVector (new nfloat [] {1}).Count, Is.EqualTo ((nint) 1), "1"); + Assert.That (new CIVector (new nfloat [] {1,2}).Count, Is.EqualTo ((nint) 2), "2'"); + Assert.That (new CIVector (new nfloat [] {1,2,3}).Count, Is.EqualTo ((nint) 3), "3"); + Assert.That (new CIVector (new nfloat [] {1,2,3,4}).Count, Is.EqualTo ((nint) 4), "4"); + + Assert.Throws (() => new CIVector ((nfloat[]) null), "null"); + } + + [Test] + public void CtorFloatArrayCount () + { + Assert.That (new CIVector (new nfloat [0], 0).Count, Is.EqualTo ((nint) 0), "0"); + Assert.That (new CIVector (new nfloat [] {1}, 1).Count, Is.EqualTo ((nint) 1), "1"); + Assert.That (new CIVector (new nfloat [] {1,2}, 2).Count, Is.EqualTo ((nint) 2), "2'"); + Assert.That (new CIVector (new nfloat [] {1,2,3,4}, 2).Count, Is.EqualTo ((nint) 2), "4/2"); + + Assert.Throws (() => new CIVector ((nfloat[]) null, 0), "null"); + Assert.Throws (() => new CIVector (new nfloat [] {1}, 2), "out-of-range"); + } + + [Test] + public void CtorInts () + { Assert.That (new CIVector (1).Count, Is.EqualTo ((nint) 1)); Assert.That (new CIVector (1,2).Count, Is.EqualTo ((nint) 2)); Assert.That (new CIVector (1,2,3).Count, Is.EqualTo ((nint) 3)); From 4ad96b03fa35c801f252e294d0a89ed7e9b7f8d2 Mon Sep 17 00:00:00 2001 From: Sebastien Pouliot Date: Sun, 26 Nov 2017 09:53:04 -0500 Subject: [PATCH 133/145] [security] Add bindings for Xcode 9 (#3043) Also covers the missing enum value (added in xcode9) from https://bugzilla.xamarin.com/show_bug.cgi?id=59278 --- src/Security/Certificate.cs | 17 +++ src/Security/Enums.cs | 1 + src/Security/Items.cs | 10 ++ src/Security/SecureTransport.cs | 9 ++ src/Security/SslContext.cs | 66 +++++++++++ src/security.cs | 104 +++++++++++++++++- tests/introspection/ApiTypoTest.cs | 2 + .../Security/CertificateTest.cs | 5 + .../Security/SecureTransportTest.cs | 16 +++ 9 files changed, 227 insertions(+), 3 deletions(-) diff --git a/src/Security/Certificate.cs b/src/Security/Certificate.cs index ae15a0a92c..10aaf5e50b 100644 --- a/src/Security/Certificate.cs +++ b/src/Security/Certificate.cs @@ -343,6 +343,10 @@ namespace XamCore.Security { #endif [iOS (10,3)] [Mac (10,7)] + [Deprecated (PlatformName.iOS, 11,0, message: "Use 'GetSerialNumber(out NSError)' instead.")] + [Deprecated (PlatformName.MacOSX, 10,13, message: "Use 'GetSerialNumber(out NSError)' instead.")] + [Deprecated (PlatformName.WatchOS, 4,0, message: "Use 'GetSerialNumber(out NSError)' instead.")] + [Deprecated (PlatformName.TvOS, 11,0, message: "Use 'GetSerialNumber(out NSError)' instead.")] public NSData GetSerialNumber () { #if MONOMAC @@ -353,6 +357,19 @@ namespace XamCore.Security { return (data == IntPtr.Zero) ? null : new NSData (data, true); } + [iOS (11,0)][TV (11,0)][Watch (4,0)][Mac (10,13)] + [DllImport (Constants.SecurityLibrary)] + static extern /* __nullable CFDataRef */ IntPtr SecCertificateCopySerialNumberData (IntPtr /* SecCertificateRef */ certificate, ref IntPtr /* CFErrorRef * */ error); + + [iOS (11,0)][TV (11,0)][Watch (4,0)][Mac (10,13)] + public NSData GetSerialNumber (out NSError error) + { + IntPtr err = IntPtr.Zero; + IntPtr data = SecCertificateCopySerialNumberData (handle, ref err); + error = Runtime.GetNSObject (err); + return (data == IntPtr.Zero) ? null : new NSData (data, true); + } + #endif // COREBUILD ~SecCertificate () diff --git a/src/Security/Enums.cs b/src/Security/Enums.cs index 400a06004d..e3743ac643 100644 --- a/src/Security/Enums.cs +++ b/src/Security/Enums.cs @@ -68,6 +68,7 @@ namespace XamCore.Security { NoTrustSettings = -25263, Pkcs12VerifyFailure = -25264, NotSigner = -26267, + MissingEntitlement = -34018, ServiceNotAvailable = -67585, InsufficientClientID = -67586, DeviceReset = -67587, diff --git a/src/Security/Items.cs b/src/Security/Items.cs index b1a343ee28..9511821756 100644 --- a/src/Security/Items.cs +++ b/src/Security/Items.cs @@ -1306,6 +1306,16 @@ namespace XamCore.Security { } } + [iOS (11,0)][TV (11,0)][Watch (4,0)][Mac (10,13)] + public bool PersistentReference { + get { + return Fetch (SecAttributeKey.PersistentReference) == CFBoolean.True.Handle; + } + set { + SetValue (CFBoolean.FromBoolean (value).Handle, SecAttributeKey.PersistentReference); + } + } + // // Matches // diff --git a/src/Security/SecureTransport.cs b/src/Security/SecureTransport.cs index eaa8b4e215..b65cec1a94 100644 --- a/src/Security/SecureTransport.cs +++ b/src/Security/SecureTransport.cs @@ -18,6 +18,8 @@ namespace XamCore.Security { Tls_1_1 = 7, Tls_1_2 = 8, Dtls_1_0 = 9, + [iOS (11,0)][TV (11,0)][Watch (4,0)][Mac (10,13)] + Tls_1_3 = 10, /* Obsolete on iOS */ Ssl_2_0 = 1, @@ -107,6 +109,9 @@ namespace XamCore.Security { [iOS (10,0)][Mac (10,12)] AllowRenegotiation = 8, + + [iOS (11,0)][TV (11,0)][Watch (4,0)][Mac (10,13)] + EnableSessionTickets = 9, } // Security.framework/Headers/SecureTransport.h @@ -267,6 +272,10 @@ namespace XamCore.Security { TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256 = 0xC031, // iOS 9+ TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384 = 0xC032, // iOS 9+ + // https://tools.ietf.org/html/rfc7905 + TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 = 0xCCA8, // Xcode 9+ + TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256 = 0xCCA9, // Xcode 9+ + TLS_AES_128_GCM_SHA256 = 0x1301, // iOS 11+ TLS_AES_256_GCM_SHA384 = 0x1302, // iOS 11+ TLS_CHACHA20_POLY1305_SHA256 = 0x1303, // iOS 11+ diff --git a/src/Security/SslContext.cs b/src/Security/SslContext.cs index b37eea5688..014ef350c7 100644 --- a/src/Security/SslContext.cs +++ b/src/Security/SslContext.cs @@ -608,5 +608,71 @@ namespace XamCore.Security { } return result; } + + [iOS (11,0)][TV (11,0)][Watch (4,0)][Mac (10,13)] + [DllImport (Constants.SecurityLibrary)] + static extern /* OSStatus */ int SSLSetSessionTicketsEnabled (IntPtr /* SSLContextRef */ context, [MarshalAs (UnmanagedType.I1)] bool /* Boolean */ enabled); + + [iOS (11,0)][TV (11,0)][Watch (4,0)][Mac (10,13)] + public int SetSessionTickets (bool enabled) + { + return SSLSetSessionTicketsEnabled (Handle, enabled); + } + + [iOS (11,0)][TV (11,0)][Watch (4,0)][Mac (10,13)] + [DllImport (Constants.SecurityLibrary)] + static extern /* OSStatus */ int SSLSetError (IntPtr /* SSLContextRef */ context, SecStatusCode /* OSStatus */ status); + + [iOS (11,0)][TV (11,0)][Watch (4,0)][Mac (10,13)] + public int SetError (SecStatusCode status) + { + return SSLSetError (Handle, status); + } + + [iOS (11,0)][TV (11,0)][Watch (4,0)][Mac (10,13)] + [DllImport (Constants.SecurityLibrary)] + static extern /* OSStatus */ int SSLSetOCSPResponse (IntPtr /* SSLContextRef */ context, IntPtr /* CFDataRef __nonnull */ response); + + [iOS (11,0)][TV (11,0)][Watch (4,0)][Mac (10,13)] + public int SetOcspResponse (NSData response) + { + if (response == null) + throw new ArgumentNullException (nameof (response)); + return SSLSetOCSPResponse (Handle, response.Handle); + } + + [iOS (11,0)][TV (11,0)][Watch (4,0)][Mac (10,13)] + [DllImport (Constants.SecurityLibrary)] + static extern /* OSStatus */ int SSLSetALPNProtocols (IntPtr /* SSLContextRef */ context, IntPtr /* CFArrayRef */ protocols); + + [iOS (11,0)][TV (11,0)][Watch (4,0)][Mac (10,13)] + public int SetAlpnProtocols (string[] protocols) + { + using (var array = NSArray.FromStrings (protocols)) + return SSLSetALPNProtocols (Handle, array.Handle); + } + + [iOS (11,0)][TV (11,0)][Watch (4,0)][Mac (10,13)] + [DllImport (Constants.SecurityLibrary)] + static extern /* OSStatus */ int SSLCopyALPNProtocols (IntPtr /* SSLContextRef */ context, ref IntPtr /* CFArrayRef* */ protocols); + + [iOS (11,0)][TV (11,0)][Watch (4,0)][Mac (10,13)] + public string[] GetAlpnProtocols (out int error) + { + IntPtr protocols = IntPtr.Zero; // must be null, CFArray allocated by SSLCopyALPNProtocols + error = SSLCopyALPNProtocols (Handle, ref protocols); + if (protocols == IntPtr.Zero) + return Array.Empty (); + var result = NSArray.StringArrayFromHandle (protocols); + CFObject.CFRelease (protocols); + return result; + } + + [iOS (11,0)][TV (11,0)][Watch (4,0)][Mac (10,13)] + public string[] GetAlpnProtocols () + { + int error; + return GetAlpnProtocols (out error); + } } } diff --git a/src/security.cs b/src/security.cs index 4ea562fdff..b3ec8106a8 100644 --- a/src/security.cs +++ b/src/security.cs @@ -134,9 +134,10 @@ namespace XamCore.Security { [Field ("kSecTrustCertificateTransparency")] NSString CertificateTransparency { get; } - [iOS (10,0)][Mac (10,12)] - [Watch (3,0)] - [TV (10,0)] + [iOS (10,0)][Deprecated (PlatformName.iOS, 11,0)] + [Mac (10,12)][Deprecated (PlatformName.MacOSX, 10,13)] + [Watch (3,0)][Deprecated (PlatformName.WatchOS, 4,0)] + [TV (10,0)][Deprecated (PlatformName.TvOS, 11,0)] [Field ("kSecTrustCertificateTransparencyWhiteList")] NSString CertificateTransparencyWhiteList { get; } } @@ -503,6 +504,11 @@ namespace XamCore.Security { [TV (10,0)] [Field ("kSecAttrAccessGroupToken")] IntPtr AccessGroupToken { get; } + + // note: kSecAttrPersistentReference (beta 1) is a typo that was not removed + [iOS (11,0)][TV (11,0)][Watch (4,0)][Mac (10,13)] + [Field ("kSecAttrPersistentReference")] + IntPtr PersistentReference { get; } } [Static][Internal] @@ -828,10 +834,86 @@ namespace XamCore.Security { [Field ("kSecKeyAlgorithmECDHKeyExchangeCofactorX963SHA512")] EcdhKeyExchangeCofactorX963Sha512, + + [iOS (11,0)][TV (11,0)][Watch (4,0)][Mac (10,13)] + [Field ("kSecKeyAlgorithmRSASignatureDigestPSSSHA1")] + RsaSignatureDigestPssSha1, + + [iOS (11,0)][TV (11,0)][Watch (4,0)][Mac (10,13)] + [Field ("kSecKeyAlgorithmRSASignatureDigestPSSSHA224")] + RsaSignatureDigestPssSha224, + + [iOS (11,0)][TV (11,0)][Watch (4,0)][Mac (10,13)] + [Field ("kSecKeyAlgorithmRSASignatureDigestPSSSHA256")] + RsaSignatureDigestPssSha256, + + [iOS (11,0)][TV (11,0)][Watch (4,0)][Mac (10,13)] + [Field ("kSecKeyAlgorithmRSASignatureDigestPSSSHA384")] + RsaSignatureDigestPssSha384, + + [iOS (11,0)][TV (11,0)][Watch (4,0)][Mac (10,13)] + [Field ("kSecKeyAlgorithmRSASignatureDigestPSSSHA512")] + RsaSignatureDigestPssSha512, + + [iOS (11,0)][TV (11,0)][Watch (4,0)][Mac (10,13)] + [Field ("kSecKeyAlgorithmRSASignatureMessagePSSSHA1")] + RsaSignatureMessagePssSha1, + + [iOS (11,0)][TV (11,0)][Watch (4,0)][Mac (10,13)] + [Field ("kSecKeyAlgorithmRSASignatureMessagePSSSHA224")] + RsaSignatureMessagePssSha224, + + [iOS (11,0)][TV (11,0)][Watch (4,0)][Mac (10,13)] + [Field ("kSecKeyAlgorithmRSASignatureMessagePSSSHA256")] + RsaSignatureMessagePssSha256, + + [iOS (11,0)][TV (11,0)][Watch (4,0)][Mac (10,13)] + [Field ("kSecKeyAlgorithmRSASignatureMessagePSSSHA384")] + RsaSignatureMessagePssSha384, + + [iOS (11,0)][TV (11,0)][Watch (4,0)][Mac (10,13)] + [Field ("kSecKeyAlgorithmRSASignatureMessagePSSSHA512")] + RsaSignatureMessagePssSha512, + + [iOS (11,0)][TV (11,0)][Watch (4,0)][Mac (10,13)] + [Field ("kSecKeyAlgorithmECIESEncryptionStandardVariableIVX963SHA224AESGCM")] + EciesEncryptionStandardVariableIvx963Sha224AesGcm, + + [iOS (11,0)][TV (11,0)][Watch (4,0)][Mac (10,13)] + [Field ("kSecKeyAlgorithmECIESEncryptionStandardVariableIVX963SHA256AESGCM")] + EciesEncryptionStandardVariableIvx963Sha256AesGcm, + + [iOS (11,0)][TV (11,0)][Watch (4,0)][Mac (10,13)] + [Field ("kSecKeyAlgorithmECIESEncryptionStandardVariableIVX963SHA384AESGCM")] + EciesEncryptionStandardVariableIvx963Sha384AesGcm, + + [iOS (11,0)][TV (11,0)][Watch (4,0)][Mac (10,13)] + [Field ("kSecKeyAlgorithmECIESEncryptionStandardVariableIVX963SHA512AESGCM")] + EciesEncryptionStandardVariableIvx963Sha512AesGcm, + + [iOS (11,0)][TV (11,0)][Watch (4,0)][Mac (10,13)] + [Field ("kSecKeyAlgorithmECIESEncryptionCofactorVariableIVX963SHA224AESGCM")] + EciesEncryptionCofactorVariableIvx963Sha224AesGcm, + + [iOS (11,0)][TV (11,0)][Watch (4,0)][Mac (10,13)] + [Field ("kSecKeyAlgorithmECIESEncryptionCofactorVariableIVX963SHA256AESGCM")] + EciesEncryptionCofactorVariableIvx963Sha256AesGcm, + + [iOS (11,0)][TV (11,0)][Watch (4,0)][Mac (10,13)] + [Field ("kSecKeyAlgorithmECIESEncryptionCofactorVariableIVX963SHA384AESGCM")] + EciesEncryptionCofactorVariableIvx963Sha384AesGcm, + + [iOS (11,0)][TV (11,0)][Watch (4,0)][Mac (10,13)] + [Field ("kSecKeyAlgorithmECIESEncryptionCofactorVariableIVX963SHA512AESGCM")] + EciesEncryptionCofactorVariableIvx963Sha512AesGcm, } [iOS (10,0)][TV (10,0)][Watch (3,0)][Mac (10,12)] enum SslSessionConfig { + [Deprecated (PlatformName.iOS, 11,0)] + [Deprecated (PlatformName.MacOSX, 10,13)] + [Deprecated (PlatformName.WatchOS, 4,0)] + [Deprecated (PlatformName.TvOS, 11,0)] [Field ("kSSLSessionConfig_default")] Default, @@ -844,12 +926,20 @@ namespace XamCore.Security { [Field ("kSSLSessionConfig_standard")] Standard, + [Deprecated (PlatformName.iOS, 11,0)] + [Deprecated (PlatformName.MacOSX, 10,13)] + [Deprecated (PlatformName.WatchOS, 4,0)] + [Deprecated (PlatformName.TvOS, 11,0)] [Field ("kSSLSessionConfig_RC4_fallback")] RC4Fallback, [Field ("kSSLSessionConfig_TLSv1_fallback")] Tls1Fallback, + [Deprecated (PlatformName.iOS, 11,0)] + [Deprecated (PlatformName.MacOSX, 10,13)] + [Deprecated (PlatformName.WatchOS, 4,0)] + [Deprecated (PlatformName.TvOS, 11,0)] [Field ("kSSLSessionConfig_TLSv1_RC4_fallback")] Tls1RC4Fallback, @@ -864,11 +954,19 @@ namespace XamCore.Security { [iOS (10,2)][TV (10,1)][Mac (10,12,2)] [Watch (3,2)] + [Deprecated (PlatformName.iOS, 11,0)] + [Deprecated (PlatformName.MacOSX, 10,13)] + [Deprecated (PlatformName.WatchOS, 4,0)] + [Deprecated (PlatformName.TvOS, 11,0)] [Field ("kSSLSessionConfig_3DES_fallback")] ThreeDesFallback, [iOS (10,2)][TV (10,1)][Mac (10,12,2)] [Watch (3,2)] + [Deprecated (PlatformName.iOS, 11,0)] + [Deprecated (PlatformName.MacOSX, 10,13)] + [Deprecated (PlatformName.WatchOS, 4,0)] + [Deprecated (PlatformName.TvOS, 11,0)] [Field ("kSSLSessionConfig_TLSv1_3DES_fallback")] Tls1ThreeDesFallback, } diff --git a/tests/introspection/ApiTypoTest.cs b/tests/introspection/ApiTypoTest.cs index d3fdc2863e..733944c4fc 100644 --- a/tests/introspection/ApiTypoTest.cs +++ b/tests/introspection/ApiTypoTest.cs @@ -85,6 +85,7 @@ namespace Introspection "Aiff", "Aio", "Alg", // short for Algorithm + "Alpn", // Application-Layer Protocol Negotiation RFC7301 "Amete", "Amr", "Anglet", @@ -322,6 +323,7 @@ namespace Introspection "Objectfor", "Occlussion", "Ocurrences", + "Ocsp", // Online Certificate Status Protocol "Octree", "Oid", "Olus", diff --git a/tests/monotouch-test/Security/CertificateTest.cs b/tests/monotouch-test/Security/CertificateTest.cs index 7a61963284..34b2718eee 100644 --- a/tests/monotouch-test/Security/CertificateTest.cs +++ b/tests/monotouch-test/Security/CertificateTest.cs @@ -525,6 +525,11 @@ namespace MonoTouchFixtures.Security { Assert.NotNull (cert.GetNormalizedSubjectSequence (), "GetNormalizedSubjectSequence"); Assert.NotNull (cert.GetPublicKey (), "GetPublicKey"); } + if (TestRuntime.CheckXcodeVersion (9,0)) { + NSError err; + Assert.That (cert.GetSerialNumber (out err).Description, Is.EqualTo ("<2b9f7ee5 ca25a625 14204782 753a9bb9>"), "GetSerialNumber/NSError"); + Assert.Null (err, "err") ; + } } [Test] diff --git a/tests/monotouch-test/Security/SecureTransportTest.cs b/tests/monotouch-test/Security/SecureTransportTest.cs index 2f8c1582b4..357cd53d23 100644 --- a/tests/monotouch-test/Security/SecureTransportTest.cs +++ b/tests/monotouch-test/Security/SecureTransportTest.cs @@ -90,6 +90,22 @@ namespace MonoTouchFixtures.Security { Assert.That ((int)ssl.SetDatagramHelloCookie (new byte [32]), Is.EqualTo (-50), "no cookie in stream"); // Assert.Null (ssl.GetDistinguishedNames (), "GetDistinguishedNames"); + + if (TestRuntime.CheckXcodeVersion (9,0)) { + Assert.That (ssl.SetSessionTickets (false), Is.EqualTo (0), "SetSessionTickets"); + Assert.That (ssl.SetError (SecStatusCode.Success), Is.EqualTo (0), "SetError"); + + Assert.Throws (() => ssl.SetOcspResponse (null), "SetOcspResponse/null"); + using (var data = new NSData ()) + Assert.That (ssl.SetOcspResponse (data), Is.EqualTo (0), "SetOcspResponse/empty"); + + int error; + var alpn = ssl.GetAlpnProtocols (out error); + Assert.That (alpn, Is.Empty, "alpn"); + Assert.That (error, Is.EqualTo ((int) SecStatusCode.Param), "GetAlpnProtocols"); + var protocols = new [] { "HTTP/1.1", "SPDY/1" }; + Assert.That (ssl.SetAlpnProtocols (protocols), Is.EqualTo (0), "SetAlpnProtocols"); + } } } From d2b1b7578a45106dd74b1295e923c0a5599686ac Mon Sep 17 00:00:00 2001 From: Alex Soto Date: Mon, 27 Nov 2017 16:46:20 -0600 Subject: [PATCH 134/145] [HealthKit] Fix availability metadata on HKWorkoutRoute in order to fix intro in i --- src/healthkit.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/healthkit.cs b/src/healthkit.cs index 5bce492517..d2c3420ea1 100644 --- a/src/healthkit.cs +++ b/src/healthkit.cs @@ -2400,10 +2400,11 @@ namespace XamCore.HealthKit { nuint Count { get; } } + [Watch (4, 0), iOS (11, 0)] [BaseType (typeof(HKSeriesSample))] [DisableDefaultCtor] interface HKWorkoutRoute : NSCopying { - [Watch (4, 0), iOS (11, 0)] + [Field ("HKWorkoutRouteTypeIdentifier")] NSString TypeIdentifier { get; } } From 87f9e239898c16a64de153e6fb631b7ad8fb3865 Mon Sep 17 00:00:00 2001 From: Timothy Risi Date: Tue, 28 Nov 2017 11:29:05 -0900 Subject: [PATCH 135/145] [MetalPerformanceShaders] Xcode 9 bindings (#3005) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * [MetalPerformanceShaders] Activate bindings for Xamarin.Mac and add n… (#2816) * [MetalPerformaceShaders] Several MPSCnnKernel properties should be readonly (#2938) The subclasses versions of the properties need Override, cannot be removed since it would break visibility for iOS 10 * Remove some [Model] attributes that sholdn't be needed * Fix introspection test crashes * More introspection fixes * NN does not need to be PascalCased Remove unneeded Models and BaseTypes * PR Whitespace fixes and renamings * Paste fail * More fixes from PR comments * [MPS] Adds new intro test, fixes ctors and xtro output * Removes duplicated availability attributes. * Removes obsoleted API from macOS since mps is new to it. * Fixes xtro output. * Adds missing API. * Fixes parameterless ctors, some of them do not really work, found by our new intro test and disabled the one that seem to not make sense due to the presence of DesignatedInitializers. * Fixes a selector typo. * Adds new `ShouldNotExposeDefaultCtorTest` to intro. ShouldNotExposeDefaultCtorTest ============================== This test checks for types with a parameterless ctor that are subclasses of `NSObject` and then cheks if the BaseType of said objects also expose a parameterless ctor (all in .NET land), if this is not the case it reports them and so they can manually audited. Also this test has the ability to print alloc/init ObjC code by setting `genObjCTestCode` to `true` so you can take this code into an Xcode project and easily tests the ctors. It seems that xtro (sharpie) does not have a complete picture of when a ctor must be exposed hence the hability to generate this code and manually test. Right now this test is just enabled for MPS since it is the scope of this PR. In the future it should be enabled for all other frameworks and the output be manually audited. * [MPS] Fixes premature collection possible in bindings (bug 59547) and implements feedback. https://bugzilla.xamarin.com/show_bug.cgi?id=59547 * Fixes premature collection possible in bindings im MPSKernel.cs * Fixes MPSImageHistogramTest from using deprecated API. * Removes renamed selectors and typos from ApiSelectorTest and ApiTypoTest. * [MPS] Reenable Copy API and DesignatedInitializer xtro feedback * Implement more feedback * More feedback --- src/Constants.mac.cs.in | 1 + src/Foundation/NSObject.mac.cs | 1 + .../MPSCnnConvolutionDescriptor.cs | 16 + src/MetalPerformanceShaders/MPSCnnKernel.cs | 31 + src/MetalPerformanceShaders/MPSCnnNeuron.cs | 15 + src/MetalPerformanceShaders/MPSDefs.cs | 129 +- .../MPSImageHistogram.cs | 15 + .../MPSImageLanczosScale.cs | 7 +- src/MetalPerformanceShaders/MPSKernel.cs | 134 +- .../MPSMatrixDescriptor.cs | 16 + src/ObjCRuntime/Dlfcn.cs | 2 +- src/frameworks.sources | 6 + src/metalperformanceshaders.cs | 2715 ++++++++++++++++- tests/introspection/ApiCtorInitTest.cs | 96 + tests/introspection/ApiProtocolTest.cs | 2 + tests/introspection/ApiSelectorTest.cs | 72 + tests/introspection/ApiTypoTest.cs | 12 +- tests/monotouch-test/Asserts.cs | 6 +- .../MetalPerformanceShaders/KernelTest.cs | 49 +- .../MPSImageHistogramEqualizationTest.cs | 6 +- .../MPSImageHistogramSpecificationTest.cs | 6 +- .../MPSImageHistogramTest.cs | 8 +- tests/xammac_tests/xammac_tests.csproj | 12 + tests/xtro-sharpie/Helpers.cs | 6 + tests/xtro-sharpie/common.pending | 8 + tools/common/Frameworks.cs | 1 + tools/linker/ObjCExtensions.cs | 2 + tools/mmp/driver.cs | 2 + .../linker/MonoMac.Tuner/MonoMacNamespaces.cs | 1 + 29 files changed, 3233 insertions(+), 144 deletions(-) create mode 100644 src/MetalPerformanceShaders/MPSCnnConvolutionDescriptor.cs create mode 100644 src/MetalPerformanceShaders/MPSCnnKernel.cs create mode 100644 src/MetalPerformanceShaders/MPSCnnNeuron.cs create mode 100644 src/MetalPerformanceShaders/MPSImageHistogram.cs create mode 100644 src/MetalPerformanceShaders/MPSMatrixDescriptor.cs diff --git a/src/Constants.mac.cs.in b/src/Constants.mac.cs.in index 6ad4937a16..b6e5ed6e88 100644 --- a/src/Constants.mac.cs.in +++ b/src/Constants.mac.cs.in @@ -132,5 +132,6 @@ namespace MonoMac { public const string IOSurfaceLibrary = "/System/Library/Frameworks/IOSurface.framework/IOSurface"; public const string PhotosUILibrary = "/System/Library/Frameworks/PhotosUI.framework/PhotosUI"; public const string ExternalAccessoryLibrary = "/System/Library/Frameworks/ExternalAccessory.framework/ExternalAccessory"; + public const string MetalPerformanceShadersLibrary = "/System/Library/Frameworks/MetalPerformanceShaders.framework/MetalPerformanceShaders"; } } diff --git a/src/Foundation/NSObject.mac.cs b/src/Foundation/NSObject.mac.cs index cd97a5ea5e..7b9412a7fb 100644 --- a/src/Foundation/NSObject.mac.cs +++ b/src/Foundation/NSObject.mac.cs @@ -102,6 +102,7 @@ namespace XamCore.Foundation { static IntPtr vn = Dlfcn.dlopen (Constants.VisionLibrary, 1); static IntPtr ios = Dlfcn.dlopen (Constants.IOSurfaceLibrary, 1); static IntPtr ex = Dlfcn.dlopen (Constants.ExternalAccessoryLibrary, 1); + static IntPtr ms = Dlfcn.dlopen (Constants.MetalPerformanceShadersLibrary, 1); #endif // ** IF YOU ADD ITEMS HERE PLEASE UPDATE linker/ObjCExtensions.cs and mmp/linker/MonoMac.Tuner/MonoMacNamespaces.cs diff --git a/src/MetalPerformanceShaders/MPSCnnConvolutionDescriptor.cs b/src/MetalPerformanceShaders/MPSCnnConvolutionDescriptor.cs new file mode 100644 index 0000000000..527dc5b2a4 --- /dev/null +++ b/src/MetalPerformanceShaders/MPSCnnConvolutionDescriptor.cs @@ -0,0 +1,16 @@ +#if XAMCORE_2_0 || !MONOMAC +using System; +namespace XamCore.MetalPerformanceShaders { + public partial class MPSCnnConvolutionDescriptor { + public unsafe void SetBatchNormalizationParameters (float [] mean, float [] variance, float [] gamma, float [] beta, float epsilon) + { + fixed (void* meanHandle = mean) + fixed (void* varianceHandle = variance) + fixed (void* gammaHandle = gamma) + fixed (void* betaHandle = beta) + SetBatchNormalizationParameters ((IntPtr) meanHandle, (IntPtr) varianceHandle, (IntPtr) gammaHandle, (IntPtr) betaHandle, epsilon); + } + + } +} +#endif \ No newline at end of file diff --git a/src/MetalPerformanceShaders/MPSCnnKernel.cs b/src/MetalPerformanceShaders/MPSCnnKernel.cs new file mode 100644 index 0000000000..3fe4782dff --- /dev/null +++ b/src/MetalPerformanceShaders/MPSCnnKernel.cs @@ -0,0 +1,31 @@ +#if XAMCORE_2_0 || !MONOMAC +using System; +using XamCore.Metal; +using XamCore.Foundation; + +namespace XamCore.MetalPerformanceShaders { + public partial class MPSCnnBinaryConvolution { + public unsafe MPSCnnBinaryConvolution (IMTLDevice device, IMPSCnnConvolutionDataSource convolutionData, float [] outputBiasTerms, float [] outputScaleTerms, float [] inputBiasTerms, float [] inputScaleTerms, MPSCnnBinaryConvolutionType type, MPSCnnBinaryConvolutionFlags flags) + : base (NSObjectFlag.Empty) + { + fixed (void *outputBiasTermsHandle = outputBiasTerms) + fixed (void* outputScaleTermsHandle = outputScaleTerms) + fixed (void* inputBiasTermsHandle = inputBiasTerms) + fixed (void* inputScaleTermsHandle = inputScaleTerms) + InitializeHandle (InitWithDevice (device, convolutionData, (IntPtr) outputBiasTermsHandle, (IntPtr) outputScaleTermsHandle, (IntPtr) inputBiasTermsHandle, (IntPtr) inputScaleTermsHandle, type, flags)); + } + } + + public partial class MPSCnnBinaryFullyConnected { + public unsafe MPSCnnBinaryFullyConnected (IMTLDevice device, IMPSCnnConvolutionDataSource convolutionData, float [] outputBiasTerms, float [] outputScaleTerms, float [] inputBiasTerms, float [] inputScaleTerms, MPSCnnBinaryConvolutionType type, MPSCnnBinaryConvolutionFlags flags) + : base (NSObjectFlag.Empty) + { + fixed (void *outputBiasTermsHandle = outputBiasTerms) + fixed (void* outputScaleTermsHandle = outputScaleTerms) + fixed (void* inputBiasTermsHandle = inputBiasTerms) + fixed (void* inputScaleTermsHandle = inputScaleTerms) + InitializeHandle (InitWithDevice (device, convolutionData, (IntPtr) outputBiasTermsHandle, (IntPtr) outputScaleTermsHandle, (IntPtr) inputBiasTermsHandle, (IntPtr) inputScaleTermsHandle, type, flags)); + } + } +} +#endif \ No newline at end of file diff --git a/src/MetalPerformanceShaders/MPSCnnNeuron.cs b/src/MetalPerformanceShaders/MPSCnnNeuron.cs new file mode 100644 index 0000000000..e0dd7ce50e --- /dev/null +++ b/src/MetalPerformanceShaders/MPSCnnNeuron.cs @@ -0,0 +1,15 @@ +#if XAMCORE_2_0 || !MONOMAC +using System; +using XamCore.Metal; +using XamCore.Foundation; + +namespace XamCore.MetalPerformanceShaders { + public partial class MPSCnnNeuronPReLU { + public unsafe MPSCnnNeuronPReLU (IMTLDevice device, float [] a) : this (NSObjectFlag.Empty) + { + fixed (void* aHandle = a) + InitializeHandle (InitWithDevice (device, (IntPtr) aHandle, (nuint)a.Length)); + } + } +} +#endif \ No newline at end of file diff --git a/src/MetalPerformanceShaders/MPSDefs.cs b/src/MetalPerformanceShaders/MPSDefs.cs index f59259cd6b..5b242c22b1 100644 --- a/src/MetalPerformanceShaders/MPSDefs.cs +++ b/src/MetalPerformanceShaders/MPSDefs.cs @@ -1,4 +1,5 @@ -using System; +#if XAMCORE_2_0 || !MONOMAC +using System; using System.Runtime.InteropServices; using XamCore.Foundation; @@ -8,23 +9,24 @@ using Vector4 = global::OpenTK.Vector4; namespace XamCore.MetalPerformanceShaders { - [iOS (9,0)] + [iOS (9,0)][Mac (10, 13, onlyOn64: true)] [Native] // NSUInteger [Flags] // NS_OPTIONS public enum MPSKernelOptions : nuint { None = 0, SkipApiValidation = 1 << 0, MPSKernelOptionsAllowReducedPrecision = 1 << 1, + Verbose = 1 << 4, } - [iOS (9,0)] + [iOS (9,0)][Mac (10, 13, onlyOn64: true)] [Native] // NSUInteger public enum MPSImageEdgeMode : nuint { Zero, Clamp = 1 } - [iOS (10,0)][TV (10,0)] + [iOS (10,0)][TV (10,0)][Mac (10, 13, onlyOn64: true)] [Native] public enum MPSAlphaType : nuint { NonPremultiplied = 0, @@ -32,13 +34,17 @@ namespace XamCore.MetalPerformanceShaders { Premultiplied = 2, } - [iOS (10,0)][TV (10,0)] + [iOS (10,0)][TV (10,0)][Mac (10, 13, onlyOn64: true)] public enum MPSDataType : uint { // uint32_t FloatBit = 0x10000000, + Float16 = FloatBit | 16, Float32 = FloatBit | 32, + NormalizedBit = 0x40000000, + Unorm1 = NormalizedBit | 1, + Unorm8 = NormalizedBit | 8, } - [iOS (10,0)][TV (10,0)] + [iOS (10,0)][TV (10,0)][Mac (10, 13, onlyOn64: true)] [Native] public enum MPSImageFeatureChannelFormat : nuint { Invalid = 0, @@ -49,6 +55,7 @@ namespace XamCore.MetalPerformanceShaders { } // uses NSInteger + [Mac (10, 13, onlyOn64: true)] public struct MPSOffset { public nint X; public nint Y; @@ -56,6 +63,7 @@ namespace XamCore.MetalPerformanceShaders { } // really use double, not CGFloat + [Mac (10, 13, onlyOn64: true)] public struct MPSOrigin { public double X; public double Y; @@ -63,18 +71,21 @@ namespace XamCore.MetalPerformanceShaders { } // really use double, not CGFloat + [Mac (10, 13, onlyOn64: true)] public struct MPSSize { public double Width; public double Height; public double Depth; } + [Mac (10, 13, onlyOn64: true)] public struct MPSRegion { public MPSOrigin Origin; public MPSSize Size; } // really use double, not CGFloat + [Mac (10, 13, onlyOn64: true)] public struct MPSScaleTransform { public double ScaleX; public double ScaleY; @@ -83,6 +94,7 @@ namespace XamCore.MetalPerformanceShaders { } // MPSImageHistogram.h + [Mac (10, 13, onlyOn64: true)] [StructLayout (LayoutKind.Explicit)] public struct MPSImageHistogramInfo { [FieldOffset (0)] @@ -99,8 +111,111 @@ namespace XamCore.MetalPerformanceShaders { public Vector4 MaxPixelValue; } + [TV (11, 0), Mac (10, 13, onlyOn64: true), iOS (11, 0)] + public enum MPSMatrixDecompositionStatus { + Success = 0, + Failure = -1, + Singular = -2, + NonPositiveDefinite = -3, + } + // MPSTypes.h // FIXME: public delegate IMTLTexture MPSCopyAllocator (MPSKernel filter, IMTLCommandBuffer commandBuffer, IMTLTexture sourceTexture); public delegate NSObject MPSCopyAllocator (MPSKernel filter, NSObject commandBuffer, NSObject sourceTexture); // https://trello.com/c/GqtNId1C/517-generator-our-block-delegates-needs-to-use-wrapper-for-protocols -} \ No newline at end of file + + [TV (11, 0), Mac (10, 13, onlyOn64: true), iOS (11, 0)] + [Native] + public enum MPSRnnSequenceDirection : nuint { + Forward = 0, + Backward, + } + + [TV (11, 0), Mac (10, 13, onlyOn64: true), iOS (11, 0)] + [Native] + public enum MPSRnnBidirectionalCombineMode : nuint { + None = 0, + Add, + Concatenate, + } + + [TV (11, 0), Mac (10, 13, onlyOn64: true), iOS (11, 0)] + public enum MPSCnnNeuronType { + None = 0, + ReLU, + Linear, + Sigmoid, + HardSigmoid, + TanH, + Absolute, + SoftPlus, + SoftSign, + Elu, + PReLU, + ReLun, + Count, + } + + [TV (11, 0), Mac (10, 13, onlyOn64: true), iOS (11, 0)] + [Native] + public enum MPSCnnBinaryConvolutionFlags : nuint { + None = 0, + UseBetaScaling = 1 << 0, + } + + [TV (11, 0), Mac (10, 13, onlyOn64: true), iOS (11, 0)] + [Native] + public enum MPSCnnBinaryConvolutionType : nuint { + BinaryWeights = 0, + Xnor, + And, + } + + [TV (11, 0), Mac (10, 13, onlyOn64: true), iOS (11, 0)] + [Native] + public enum MPSNNPaddingMethod : nuint { + AlignCentered = 0, + AlignTopLeft = 1, + AlignBottomRight = 2, + AlignReserved = 3, + AddRemainderToTopLeft = 0 << 2, + AddRemainderToTopRight = 1 << 2, + AddRemainderToBottomLeft = 2 << 2, + AddRemainderToBottomRight = 3 << 2, + SizeValidOnly = 0, + SizeSame = 1 << 4, + SizeFull = 2 << 4, + SizeReserved = 3 << 4, + Custom = (1 << 14), + SizeMask = 2032, + ExcludeEdges = (1 << 15), + } + + [TV (11, 0), Mac (10, 13, onlyOn64: true), iOS (11, 0)] + [Native] + public enum MPSDataLayout : nuint { + HeightPerWidthPerFeatureChannels = 0, + FeatureChannelsPerHeightPerWidth = 1, + } + + [TV (11, 0), Mac (10, 13, onlyOn64: true), iOS (11, 0)] + public struct MPSMatrixCopyOffsets { + public uint SourceRowOffset; + public uint SourceColumnOffset; + public uint DestinationRowOffset; + public uint DestinationColumnOffset; + } + + [TV (11, 0), Mac (10, 13, onlyOn64: true), iOS (11, 0)] + public struct MPSImageReadWriteParams { + public nuint FeatureChannelOffset; + public nuint NumberOfFeatureChannelsToReadWrite; + } + + [TV (11, 0), Mac (10, 13, onlyOn64: true), iOS (11, 0)] + public struct MPSImageKeypointRangeInfo { + public nuint MaximumKeypoints; + public float MinimumThresholdValue; + } +} +#endif \ No newline at end of file diff --git a/src/MetalPerformanceShaders/MPSImageHistogram.cs b/src/MetalPerformanceShaders/MPSImageHistogram.cs new file mode 100644 index 0000000000..465244bf08 --- /dev/null +++ b/src/MetalPerformanceShaders/MPSImageHistogram.cs @@ -0,0 +1,15 @@ +#if (XAMCORE_2_0 && !MONOMAC) && !XAMCORE_4_0 +using System; +using XamCore.Metal; +using XamCore.Foundation; + +namespace XamCore.MetalPerformanceShaders { + public partial class MPSImageHistogram { + [Obsolete ("Please use 'GetHistogramSize' instead.")] + public virtual nuint HistogramSizeForSourceFormat (MTLPixelFormat sourceFormat) + { + return GetHistogramSize (sourceFormat); + } + } +} +#endif \ No newline at end of file diff --git a/src/MetalPerformanceShaders/MPSImageLanczosScale.cs b/src/MetalPerformanceShaders/MPSImageLanczosScale.cs index 76aa20fba3..27f46fb7e1 100644 --- a/src/MetalPerformanceShaders/MPSImageLanczosScale.cs +++ b/src/MetalPerformanceShaders/MPSImageLanczosScale.cs @@ -1,7 +1,6 @@ +#if XAMCORE_2_0 || !MONOMAC // Copyright 2015 Xamarin Inc. All rights reserved. -#if IOS - using System; using System.Runtime.InteropServices; using XamCore.Foundation; @@ -11,7 +10,6 @@ using XamCore.ObjCRuntime; namespace XamCore.MetalPerformanceShaders { public partial class MPSImageLanczosScale { - static int size_of_scale_transform = Marshal.SizeOf (typeof(MPSScaleTransform)); public virtual MPSScaleTransform? ScaleTransform { @@ -37,5 +35,4 @@ namespace XamCore.MetalPerformanceShaders { } } } - -#endif +#endif \ No newline at end of file diff --git a/src/MetalPerformanceShaders/MPSKernel.cs b/src/MetalPerformanceShaders/MPSKernel.cs index 8cbed520c1..78847cfa3b 100644 --- a/src/MetalPerformanceShaders/MPSKernel.cs +++ b/src/MetalPerformanceShaders/MPSKernel.cs @@ -1,3 +1,4 @@ +#if XAMCORE_2_0 || !MONOMAC // Copyright 2015-2016 Xamarin Inc. All rights reserved. using System; @@ -8,7 +9,6 @@ using XamCore.Metal; using XamCore.ObjCRuntime; namespace XamCore.MetalPerformanceShaders { - public partial class MPSKernel : NSObject { #if !COREBUILD @@ -20,28 +20,6 @@ namespace XamCore.MetalPerformanceShaders { return MPSSupportsMTLDevice (device == null ? IntPtr.Zero : device.Handle); } - internal static IntPtr GetPtr (float [] values, bool throwOnNull) - { - if (throwOnNull && (values == null)) - throw new ArgumentNullException ("values"); - unsafe { - fixed (float *ptr = values) - return (IntPtr) ptr; - } - } - -#if XAMCORE_2_0 - internal static IntPtr GetPtr (nfloat [] values, bool throwOnNull) - { - if (throwOnNull && (values == null)) - throw new ArgumentNullException ("values"); - unsafe { - fixed (nfloat *ptr = values) - return (IntPtr) ptr; - } - } -#endif - internal unsafe static float [] GetTransform (IntPtr transform) { var t = (float*) transform; @@ -68,9 +46,17 @@ namespace XamCore.MetalPerformanceShaders { #if !COREBUILD public partial class MPSImageDilate { + [DesignatedInitializer] public MPSImageDilate (IMTLDevice device, nuint kernelWidth, nuint kernelHeight, float[] values) - : this (device, kernelWidth, kernelHeight, MPSKernel.GetPtr (values, true)) + : base (NSObjectFlag.Empty) { + if (values == null) + throw new ArgumentNullException (nameof (values)); + + unsafe { + fixed (float* ptr = values) + InitializeHandle (InitWithDevice (device, kernelWidth, kernelHeight, (IntPtr) ptr), "initWithDevice:kernelWidth:kernelHeight:values:"); + } } } @@ -85,8 +71,14 @@ namespace XamCore.MetalPerformanceShaders { public partial class MPSImageThresholdBinary { public MPSImageThresholdBinary (IMTLDevice device, float thresholdValue, float maximumValue, /*[NullAllowed]*/ float[] transform) - : this (device, thresholdValue, maximumValue, MPSKernel.GetPtr (transform, false)) + : base (NSObjectFlag.Empty) { + // From: https://github.com/dotnet/csharplang/blob/master/spec/unsafe-code.md#unsafe-code + // If the array expression is null or if the array has zero elements, the initializer computes an address equal to zero. + unsafe { + fixed (float* ptr = transform) + InitializeHandle (InitWithDevice (device, thresholdValue, maximumValue, (IntPtr) ptr), "initWithDevice:thresholdValue:maximumValue:linearGrayColorTransform:"); + } } public float[] Transform { @@ -96,9 +88,14 @@ namespace XamCore.MetalPerformanceShaders { public partial class MPSImageThresholdBinaryInverse { + [DesignatedInitializer] public MPSImageThresholdBinaryInverse (IMTLDevice device, float thresholdValue, float maximumValue, /*[NullAllowed]*/ float[] transform) - : this (device, thresholdValue, maximumValue, MPSKernel.GetPtr (transform, false)) + : base (NSObjectFlag.Empty) { + unsafe { + fixed (float* ptr = transform) + InitializeHandle (InitWithDevice (device, thresholdValue, maximumValue, (IntPtr) ptr), "initWithDevice:thresholdValue:maximumValue:linearGrayColorTransform:"); + } } public float[] Transform { @@ -108,9 +105,14 @@ namespace XamCore.MetalPerformanceShaders { public partial class MPSImageThresholdTruncate { + [DesignatedInitializer] public MPSImageThresholdTruncate (IMTLDevice device, float thresholdValue, /*[NullAllowed]*/ float[] transform) - : this (device, thresholdValue, MPSKernel.GetPtr (transform, false)) + : base (NSObjectFlag.Empty) { + unsafe { + fixed (float* ptr = transform) + InitializeHandle (InitWithDevice (device, thresholdValue, (IntPtr) ptr), "initWithDevice:thresholdValue:linearGrayColorTransform:"); + } } public float[] Transform { @@ -120,9 +122,14 @@ namespace XamCore.MetalPerformanceShaders { public partial class MPSImageThresholdToZero { + [DesignatedInitializer] public MPSImageThresholdToZero (IMTLDevice device, float thresholdValue, /*[NullAllowed]*/ float[] transform) - : this (device, thresholdValue, MPSKernel.GetPtr (transform, false)) + : base (NSObjectFlag.Empty) { + unsafe { + fixed (float* ptr = transform) + InitializeHandle (InitWithDevice (device, thresholdValue, (IntPtr) ptr), "initWithDevice:thresholdValue:linearGrayColorTransform:"); + } } public float[] Transform { @@ -132,9 +139,14 @@ namespace XamCore.MetalPerformanceShaders { public partial class MPSImageThresholdToZeroInverse { + [DesignatedInitializer] public MPSImageThresholdToZeroInverse (IMTLDevice device, float thresholdValue, /*[NullAllowed]*/ float[] transform) - : this (device, thresholdValue, MPSKernel.GetPtr (transform, false)) + : base (NSObjectFlag.Empty) { + unsafe { + fixed (float* ptr = transform) + InitializeHandle (InitWithDevice (device, thresholdValue, (IntPtr) ptr), "initWithDevice:thresholdValue:linearGrayColorTransform:"); + } } public float[] Transform { @@ -143,9 +155,18 @@ namespace XamCore.MetalPerformanceShaders { } public partial class MPSImageSobel { + + [DesignatedInitializer] public MPSImageSobel (IMTLDevice device, float[] transform) - : this (device, MPSKernel.GetPtr (transform, true)) + : base (NSObjectFlag.Empty) { + if (transform == null) + throw new ArgumentNullException (nameof (transform)); + + unsafe { + fixed (float* ptr = transform) + InitializeHandle (InitWithDevice (device, (IntPtr) ptr), "initWithDevice:linearGrayColorTransform:"); + } } public float[] ColorTransform { @@ -154,38 +175,81 @@ namespace XamCore.MetalPerformanceShaders { } public partial class MPSCnnConvolution { + + [DesignatedInitializer] public MPSCnnConvolution (IMTLDevice device, MPSCnnConvolutionDescriptor convolutionDescriptor, float[] kernelWeights, float[] biasTerms, MPSCnnConvolutionFlags flags) - : this (device, convolutionDescriptor, MPSKernel.GetPtr (kernelWeights, true), MPSKernel.GetPtr (biasTerms, false), flags) + : base (NSObjectFlag.Empty) { + if (kernelWeights == null) + throw new ArgumentNullException (nameof (kernelWeights)); + + unsafe { + fixed (float* kernelWeightsptr = kernelWeights) + fixed (float* biasTermsptr = biasTerms) + InitializeHandle (InitWithDevice (device, convolutionDescriptor, (IntPtr) kernelWeightsptr, (IntPtr) biasTermsptr, flags), "initWithDevice:convolutionDescriptor:kernelWeights:biasTerms:flags:"); + } } } public partial class MPSCnnFullyConnected { + + [DesignatedInitializer] public MPSCnnFullyConnected (IMTLDevice device, MPSCnnConvolutionDescriptor convolutionDescriptor, float[] kernelWeights, float[] biasTerms, MPSCnnConvolutionFlags flags) - : this (device, convolutionDescriptor, MPSKernel.GetPtr (kernelWeights, true), MPSKernel.GetPtr (biasTerms, false), flags) + : base (NSObjectFlag.Empty) { + if (kernelWeights == null) + throw new ArgumentNullException (nameof (kernelWeights)); + + unsafe { + fixed (float* kernelWeightsptr = kernelWeights) + fixed (float* biasTermsptr = biasTerms) + InitializeHandle (InitWithDevice (device, convolutionDescriptor, (IntPtr) kernelWeightsptr, (IntPtr) biasTermsptr, flags), "initWithDevice:convolutionDescriptor:kernelWeights:biasTerms:flags:"); + } } } public partial class MPSImageConversion { public MPSImageConversion (IMTLDevice device, MPSAlphaType srcAlpha, MPSAlphaType destAlpha, nfloat[] backgroundColor, CGColorConversionInfo conversionInfo) - : this (device, srcAlpha, destAlpha, MPSKernel.GetPtr (backgroundColor, false), conversionInfo) + : base (NSObjectFlag.Empty) { + unsafe { + fixed (nfloat* ptr = backgroundColor) + InitializeHandle (InitWithDevice (device, srcAlpha, destAlpha, (IntPtr) ptr, conversionInfo), "initWithDevice:srcAlpha:destAlpha:backgroundColor:conversionInfo:"); + } } } public partial class MPSImagePyramid { + + [DesignatedInitializer] public MPSImagePyramid (IMTLDevice device, nuint kernelWidth, nuint kernelHeight, float[] kernelWeights) - : this (device, kernelWidth, kernelHeight, MPSKernel.GetPtr (kernelWeights, true)) + : base (NSObjectFlag.Empty) { + if (kernelWeights == null) + throw new ArgumentNullException (nameof (kernelWeights)); + + unsafe { + fixed (float* ptr = kernelWeights) + InitializeHandle (InitWithDevice (device, kernelWidth, kernelHeight, (IntPtr) ptr), "initWithDevice:kernelWidth:kernelHeight:weights:"); + } } } public partial class MPSImageGaussianPyramid { + + [DesignatedInitializer] public MPSImageGaussianPyramid (IMTLDevice device, nuint kernelWidth, nuint kernelHeight, float[] kernelWeights) - : this (device, kernelWidth, kernelHeight, MPSKernel.GetPtr (kernelWeights, true)) + : base (NSObjectFlag.Empty) { + if (kernelWeights == null) + throw new ArgumentNullException (nameof (kernelWeights)); + + unsafe { + fixed (float* ptr = kernelWeights) + InitializeHandle (InitWithDevice (device, kernelWidth, kernelHeight, (IntPtr) ptr), "initWithDevice:kernelWidth:kernelHeight:weights:"); + } } } #endif } +#endif \ No newline at end of file diff --git a/src/MetalPerformanceShaders/MPSMatrixDescriptor.cs b/src/MetalPerformanceShaders/MPSMatrixDescriptor.cs new file mode 100644 index 0000000000..85d35bc8d6 --- /dev/null +++ b/src/MetalPerformanceShaders/MPSMatrixDescriptor.cs @@ -0,0 +1,16 @@ +#if (XAMCORE_2_0 && !MONOMAC) && !XAMCORE_4_0 +using System; +using XamCore.Metal; +using XamCore.Foundation; + +namespace XamCore.MetalPerformanceShaders { + public partial class MPSMatrixDescriptor { + + [Obsolete ("Please use 'GetRowBytesFromColumns' instead.")] + public static nuint GetRowBytes (nuint columns, MPSDataType dataType) + { + return GetRowBytesFromColumns (columns, dataType); + } + } +} +#endif diff --git a/src/ObjCRuntime/Dlfcn.cs b/src/ObjCRuntime/Dlfcn.cs index 764c2e8327..e7a4d892b4 100644 --- a/src/ObjCRuntime/Dlfcn.cs +++ b/src/ObjCRuntime/Dlfcn.cs @@ -51,7 +51,7 @@ namespace XamCore.ObjCRuntime { static public class System { static public readonly IntPtr Handle = Dlfcn.dlopen (Constants.libSystemLibrary, 0); } -#if IOS || TVOS +#if !WATCH static public class MetalPerformanceShaders { static public readonly IntPtr Handle = Dlfcn.dlopen (Constants.MetalPerformanceShadersLibrary, 0); } diff --git a/src/frameworks.sources b/src/frameworks.sources index 1ca802dda5..d4923928fc 100644 --- a/src/frameworks.sources +++ b/src/frameworks.sources @@ -1004,6 +1004,11 @@ METALPERFORMANCESHADERS_CORE_SOURCES = \ METALPERFORMANCESHADERS_SOURCES = \ MetalPerformanceShaders/MPSImageLanczosScale.cs \ + MetalPerformanceShaders/MPSCnnConvolutionDescriptor.cs \ + MetalPerformanceShaders/MPSCnnNeuron.cs \ + MetalPerformanceShaders/MPSCnnKernel.cs \ + MetalPerformanceShaders/MPSMatrixDescriptor.cs \ + MetalPerformanceShaders/MPSImageHistogram.cs \ # MobileCoreServices @@ -1653,6 +1658,7 @@ MAC_FRAMEWORKS = \ MediaToolbox \ Metal \ MetalKit \ + MetalPerformanceShaders \ MobileCoreServices \ ModelIO \ MultipeerConnectivity \ diff --git a/src/metalperformanceshaders.cs b/src/metalperformanceshaders.cs index 3b3c6669be..717b967955 100644 --- a/src/metalperformanceshaders.cs +++ b/src/metalperformanceshaders.cs @@ -1,14 +1,15 @@ -using System; +#if XAMCORE_2_0 || !MONOMAC +using System; using XamCore.CoreGraphics; using XamCore.Foundation; using XamCore.Metal; using XamCore.ObjCRuntime; +using Vector4 = global::OpenTK.Vector4; namespace XamCore.MetalPerformanceShaders { - // MPSImageConvolution.h - [iOS (9,0)] + [iOS (9,0)][Mac (10, 13, onlyOn64: true)] [BaseType (typeof (MPSUnaryImageKernel))] [DisableDefaultCtor] interface MPSImageConvolution { @@ -30,9 +31,14 @@ namespace XamCore.MetalPerformanceShaders { [Export ("initWithDevice:")] IntPtr Constructor (IMTLDevice device); + + [TV (11,0), iOS (11,0)] + [Export ("initWithCoder:device:")] + [DesignatedInitializer] + IntPtr Constructor (NSCoder aDecoder, IMTLDevice device); } - [iOS (10,0)][TV (10,0)] + [iOS (10,0)][TV (10,0)][Mac (10, 13, onlyOn64: true)] [BaseType (typeof (MPSUnaryImageKernel))] [DisableDefaultCtor] interface MPSImageLaplacian { @@ -44,12 +50,23 @@ namespace XamCore.MetalPerformanceShaders { [Export ("initWithDevice:")] IntPtr Constructor (IMTLDevice device); + + // inlining ctor from base class + [TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] + [Export ("initWithCoder:device:")] + [DesignatedInitializer] + IntPtr Constructor (NSCoder aDecoder, IMTLDevice device); } - [iOS (9,0)] + [iOS (9,0)][Mac (10, 13, onlyOn64: true)] [BaseType (typeof (MPSUnaryImageKernel))] [DisableDefaultCtor] interface MPSImageBox { + [TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] + [Export ("initWithCoder:device:")] + [DesignatedInitializer] + IntPtr Constructor (NSCoder aDecoder, IMTLDevice device); + [Export ("kernelHeight")] nuint KernelHeight { get; } @@ -63,7 +80,7 @@ namespace XamCore.MetalPerformanceShaders { // [Export ("initWithDevice:")] marked as NS_UNAVAILABLE - You must use initWithDevice:kernelWidth:kernelHeight: instead. } - [iOS (9,0)] + [iOS (9,0)][Mac (10, 13, onlyOn64: true)] [BaseType (typeof (MPSImageBox))] [DisableDefaultCtor] interface MPSImageTent { @@ -75,10 +92,15 @@ namespace XamCore.MetalPerformanceShaders { IntPtr Constructor (IMTLDevice device, nuint kernelWidth, nuint kernelHeight); } - [iOS (9,0)] + [iOS (9,0)][Mac (10, 13, onlyOn64: true)] [BaseType (typeof (MPSUnaryImageKernel))] [DisableDefaultCtor] interface MPSImageGaussianBlur { + [TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] + [Export ("initWithCoder:device:")] + [DesignatedInitializer] + IntPtr Constructor (NSCoder aDecoder, IMTLDevice device); + [Export ("initWithDevice:sigma:")] [DesignatedInitializer] IntPtr Constructor (IMTLDevice device, float sigma); @@ -89,29 +111,36 @@ namespace XamCore.MetalPerformanceShaders { float Sigma { get; } } - [iOS (9,0)] + [iOS (9,0)][Mac (10, 13, onlyOn64: true)] [BaseType (typeof (MPSUnaryImageKernel))] [DisableDefaultCtor] interface MPSImageSobel { // inlining .ctor from base class + [TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] + [Export ("initWithCoder:device:")] + [DesignatedInitializer] + IntPtr Constructor (NSCoder aDecoder, IMTLDevice device); [Export ("initWithDevice:")] IntPtr Constructor (IMTLDevice device); [Export ("initWithDevice:linearGrayColorTransform:")] - [DesignatedInitializer] [Internal] - IntPtr Constructor (IMTLDevice device, IntPtr /* float* */ transform); + IntPtr InitWithDevice (IMTLDevice device, IntPtr /* float* */ transform); [Export ("colorTransform")] [Internal] IntPtr /* float* */ _ColorTransform { get; } } - [iOS (10,0)][TV (10,0)] + [iOS (10,0)][TV (10,0)][Mac (10, 13, onlyOn64: true)] [BaseType (typeof (MPSUnaryImageKernel))] [DisableDefaultCtor] interface MPSImagePyramid { + [TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] + [Export ("initWithCoder:device:")] + [DesignatedInitializer] + IntPtr Constructor (NSCoder aDecoder, IMTLDevice device); [Export ("initWithDevice:")] IntPtr Constructor (IMTLDevice device); @@ -120,9 +149,8 @@ namespace XamCore.MetalPerformanceShaders { IntPtr Constructor (IMTLDevice device, float centerWeight); [Export ("initWithDevice:kernelWidth:kernelHeight:weights:")] - [DesignatedInitializer] [Internal] - IntPtr Constructor (IMTLDevice device, nuint kernelWidth, nuint kernelHeight, /* float* */ IntPtr kernelWeights); + IntPtr InitWithDevice (IMTLDevice device, nuint kernelWidth, nuint kernelHeight, /* float* */ IntPtr kernelWeights); [Export ("kernelHeight")] nuint KernelHeight { get; } @@ -131,7 +159,7 @@ namespace XamCore.MetalPerformanceShaders { nuint KernelWidth { get; } } - [iOS (10,0)][TV (10,0)] + [iOS (10,0)][TV (10,0)][Mac (10, 13, onlyOn64: true)] [BaseType (typeof (MPSImagePyramid))] [DisableDefaultCtor] interface MPSImageGaussianPyramid { @@ -139,17 +167,27 @@ namespace XamCore.MetalPerformanceShaders { // inlining .ctor from base class [Export ("initWithDevice:kernelWidth:kernelHeight:weights:")] - [DesignatedInitializer] [Internal] - IntPtr Constructor (IMTLDevice device, nuint kernelWidth, nuint kernelHeight, /* float* */ IntPtr kernelWeights); + IntPtr InitWithDevice (IMTLDevice device, nuint kernelWidth, nuint kernelHeight, /* float* */ IntPtr kernelWeights); + + // inlining ctor from base class + [TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] + [Export ("initWithCoder:device:")] + [DesignatedInitializer] + IntPtr Constructor (NSCoder aDecoder, IMTLDevice device); } // MPSImageHistogram.h - [iOS (9,0)] + [iOS (9,0)][Mac (10, 13, onlyOn64: true)] [BaseType (typeof (MPSKernel))] [DisableDefaultCtor] interface MPSImageHistogram { + [TV (11,0), iOS (11,0)] + [Export ("initWithCoder:device:")] + [DesignatedInitializer] + IntPtr Constructor (NSCoder aDecoder, IMTLDevice device); + [Export ("clipRectSource", ArgumentSemantic.Assign)] MTLRegion ClipRectSource { get; set; } @@ -174,10 +212,17 @@ namespace XamCore.MetalPerformanceShaders { void EncodeToCommandBuffer (IMTLCommandBuffer commandBuffer, IMTLTexture source, IMTLBuffer histogram, nuint histogramOffset); [Export ("histogramSizeForSourceFormat:")] - nuint HistogramSizeForSourceFormat (MTLPixelFormat sourceFormat); + nuint GetHistogramSize (MTLPixelFormat sourceFormat); + + [TV (11,0), iOS (11,0)] + [Export ("minPixelThresholdValue", ArgumentSemantic.Assign)] + Vector4 MinPixelThresholdValue { + [MarshalDirective (NativePrefix = "xamarin_simd__", Library = "__Internal")] get; + [MarshalDirective (NativePrefix = "xamarin_simd__", Library = "__Internal")] set; + } } - [iOS (9,0)] + [iOS (9,0)][Mac (10, 13, onlyOn64: true)] [BaseType (typeof (MPSUnaryImageKernel))] [DisableDefaultCtor] interface MPSImageHistogramEqualization { @@ -193,9 +238,14 @@ namespace XamCore.MetalPerformanceShaders { [Export ("encodeTransformToCommandBuffer:sourceTexture:histogram:histogramOffset:")] void EncodeTransformToCommandBuffer (IMTLCommandBuffer commandBuffer, IMTLTexture source, IMTLBuffer histogram, nuint histogramOffset); + + [TV (11, 0), iOS (11, 0)] + [Export ("initWithCoder:device:")] + [DesignatedInitializer] + IntPtr Constructor (NSCoder aDecoder, IMTLDevice device); } - [iOS (9,0)] + [iOS (9,0)][Mac (10, 13, onlyOn64: true)] [BaseType (typeof (MPSUnaryImageKernel))] [DisableDefaultCtor] interface MPSImageHistogramSpecification { @@ -211,11 +261,16 @@ namespace XamCore.MetalPerformanceShaders { [Export ("encodeTransformToCommandBuffer:sourceTexture:sourceHistogram:sourceHistogramOffset:desiredHistogram:desiredHistogramOffset:")] void EncodeTransformToCommandBuffer (IMTLCommandBuffer commandBuffer, IMTLTexture source, IMTLBuffer sourceHistogram, nuint sourceHistogramOffset, IMTLBuffer desiredHistogram, nuint desiredHistogramOffset); + + [TV (11, 0), iOS (11, 0)] + [Export ("initWithCoder:device:")] + [DesignatedInitializer] + IntPtr Constructor (NSCoder aDecoder, IMTLDevice device); } // MPSImageIntegral.h - [iOS (9,0)] + [iOS (9,0)][Mac (10, 13, onlyOn64: true)] [BaseType (typeof (MPSUnaryImageKernel))] [DisableDefaultCtor] interface MPSImageIntegral { @@ -223,9 +278,15 @@ namespace XamCore.MetalPerformanceShaders { [Export ("initWithDevice:")] IntPtr Constructor (IMTLDevice device); + + // inlining ctor from base class + [TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] + [Export ("initWithCoder:device:")] + [DesignatedInitializer] + IntPtr Constructor (NSCoder aDecoder, IMTLDevice device); } - [iOS (9,0)] + [iOS (9,0)][Mac (10, 13, onlyOn64: true)] [BaseType (typeof (MPSUnaryImageKernel))] [DisableDefaultCtor] interface MPSImageIntegralOfSquares { @@ -233,11 +294,17 @@ namespace XamCore.MetalPerformanceShaders { [Export ("initWithDevice:")] IntPtr Constructor (IMTLDevice device); + + // inlining ctor from base class + [TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] + [Export ("initWithCoder:device:")] + [DesignatedInitializer] + IntPtr Constructor (NSCoder aDecoder, IMTLDevice device); } // MPSImageKernel.h - [iOS (9,0)] + [iOS (9,0)][Mac (10, 13, onlyOn64: true)] [BaseType (typeof (MPSKernel))] [DisableDefaultCtor] interface MPSUnaryImageKernel { @@ -257,19 +324,34 @@ namespace XamCore.MetalPerformanceShaders { [Export ("encodeToCommandBuffer:sourceTexture:destinationTexture:")] void EncodeToCommandBuffer (IMTLCommandBuffer commandBuffer, IMTLTexture sourceTexture, IMTLTexture destinationTexture); + [iOS (11,0), TV (11,0)] + [Export ("encodeToCommandBuffer:sourceImage:destinationImage:")] + void EncodeToCommandBuffer (IMTLCommandBuffer commandBuffer, MPSImage sourceImage, MPSImage destinationImage); + [Export ("sourceRegionForDestinationSize:")] MPSRegion SourceRegionForDestinationSize (MTLSize destinationSize); // inlining .ctor from base class [Export ("initWithDevice:")] + [DesignatedInitializer] IntPtr Constructor (IMTLDevice device); + + [TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] + [Export ("initWithCoder:device:")] + [DesignatedInitializer] + IntPtr Constructor (NSCoder aDecoder, IMTLDevice device); } - [iOS (9,0)] + [iOS (9,0)][Mac (10, 13, onlyOn64: true)] [BaseType (typeof (MPSKernel))] [DisableDefaultCtor] interface MPSBinaryImageKernel { + [TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] + [Export ("initWithCoder:device:")] + [DesignatedInitializer] + IntPtr Constructor (NSCoder aDecoder, IMTLDevice device); + [Export ("primaryOffset", ArgumentSemantic.Assign)] MPSOffset PrimaryOffset { get; set; } @@ -296,6 +378,10 @@ namespace XamCore.MetalPerformanceShaders { [Export ("encodeToCommandBuffer:primaryTexture:secondaryTexture:destinationTexture:")] void EncodeToCommandBuffer (IMTLCommandBuffer commandBuffer, IMTLTexture primaryTexture, IMTLTexture secondaryTexture, IMTLTexture destinationTexture); + [iOS (11,0), TV (11,0)] + [Export ("encodeToCommandBuffer:primaryImage:secondaryImage:destinationImage:")] + void EncodeToCommandBuffer (IMTLCommandBuffer commandBuffer, MPSImage primaryImage, MPSImage secondaryImage, MPSImage destinationImage); + [Export ("primarySourceRegionForDestinationSize:")] MPSRegion PrimarySourceRegionForDestinationSize (MTLSize destinationSize); @@ -305,12 +391,13 @@ namespace XamCore.MetalPerformanceShaders { // inlining .ctor from base class [Export ("initWithDevice:")] + [DesignatedInitializer] IntPtr Constructor (IMTLDevice device); } // MPSImageMedian.h - [iOS (9,0)] + [iOS (9,0)][Mac (10, 13, onlyOn64: true)] [BaseType (typeof (MPSUnaryImageKernel))] [DisableDefaultCtor] interface MPSImageMedian { @@ -330,11 +417,16 @@ namespace XamCore.MetalPerformanceShaders { [Static] [Export ("minKernelDiameter")] nuint MinKernelDiameter { get; } + + [TV (11, 0), Mac (10, 13, onlyOn64: true), iOS (11, 0)] + [Export ("initWithCoder:device:")] + [DesignatedInitializer] + IntPtr Constructor (NSCoder aDecoder, IMTLDevice device); } // MPSImageMorphology.h - [iOS (9,0)] + [iOS (9,0)][Mac (10, 13, onlyOn64: true)] [BaseType (typeof (MPSUnaryImageKernel))] [DisableDefaultCtor] interface MPSImageAreaMax { @@ -348,10 +440,15 @@ namespace XamCore.MetalPerformanceShaders { [DesignatedInitializer] IntPtr Constructor (IMTLDevice device, nuint kernelWidth, nuint kernelHeight); + [TV (11, 0), Mac (10, 13, onlyOn64: true), iOS (11, 0)] + [Export ("initWithCoder:device:")] + [DesignatedInitializer] + IntPtr Constructor (NSCoder aDecoder, IMTLDevice device); + // [Export ("initWithDevice:")] is NS_UNAVAILABLE - You must use initWithDevice:kernelWidth:kernelHeight: instead. } - [iOS (9,0)] + [iOS (9,0)][Mac (10, 13, onlyOn64: true)] [BaseType (typeof (MPSImageAreaMax))] [DisableDefaultCtor] interface MPSImageAreaMin { @@ -362,7 +459,7 @@ namespace XamCore.MetalPerformanceShaders { IntPtr Constructor (IMTLDevice device, nuint kernelWidth, nuint kernelHeight); } - [iOS (9,0)] + [iOS (9,0)][Mac (10, 13, onlyOn64: true)] [BaseType (typeof (MPSUnaryImageKernel))] [DisableDefaultCtor] interface MPSImageDilate { @@ -373,24 +470,35 @@ namespace XamCore.MetalPerformanceShaders { nuint KernelWidth { get; } [Export ("initWithDevice:kernelWidth:kernelHeight:values:")] - [DesignatedInitializer] [Internal] - IntPtr Constructor (IMTLDevice device, nuint kernelWidth, nuint kernelHeight, IntPtr values); + IntPtr InitWithDevice (IMTLDevice device, nuint kernelWidth, nuint kernelHeight, IntPtr values); // [Export ("initWithDevice:")] is NS_UNAVAILABLE - You must use initWithDevice:kernelWidth:kernelHeight:values: instead. instead. + + // inlining ctor from base class + [TV (11,0), iOS (11,0)] + [Export ("initWithCoder:device:")] + [DesignatedInitializer] + IntPtr Constructor (NSCoder aDecoder, IMTLDevice device); } - [iOS (9,0)] + [iOS (9,0)][Mac (10, 13, onlyOn64: true)] [BaseType (typeof (MPSImageDilate))] [DisableDefaultCtor] interface MPSImageErode { // inlining ctor from base class -> done in manual bindings (wrt float* argument) + + // inlining ctor from base class + [TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] + [Export ("initWithCoder:device:")] + [DesignatedInitializer] + IntPtr Constructor (NSCoder aDecoder, IMTLDevice device); } // MPSImageResampling.h - [iOS (9,0)] + [iOS (9,0)][Mac (10, 13, onlyOn64: true)] [BaseType (typeof (MPSUnaryImageKernel))] [DisableDefaultCtor] interface MPSImageLanczosScale { @@ -408,19 +516,25 @@ namespace XamCore.MetalPerformanceShaders { // inlining .ctor from base class [Export ("initWithDevice:")] + [DesignatedInitializer] IntPtr Constructor (IMTLDevice device); + + // inlining ctor from base class + [TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] + [Export ("initWithCoder:device:")] + [DesignatedInitializer] + IntPtr Constructor (NSCoder aDecoder, IMTLDevice device); } // MPSImageThreshold.h - [iOS (9,0)] + [iOS (9,0)][Mac (10, 13, onlyOn64: true)] [BaseType (typeof (MPSUnaryImageKernel))] [DisableDefaultCtor] interface MPSImageThresholdBinary { [Export ("initWithDevice:thresholdValue:maximumValue:linearGrayColorTransform:")] - [DesignatedInitializer] [Internal] - IntPtr Constructor (IMTLDevice device, float thresholdValue, float maximumValue, /* [NullAllowed] float* */ IntPtr transform); + IntPtr InitWithDevice (IMTLDevice device, float thresholdValue, float maximumValue, /* [NullAllowed] float* */ IntPtr transform); // [Export ("initWithDevice:")] marked as NS_UNAVAILABLE - You must use initWithDevice:thresholdValue:maximumValue:linearGrayColorTransform: instead @@ -433,16 +547,21 @@ namespace XamCore.MetalPerformanceShaders { [Export ("transform")] [Internal] IntPtr _Transform { get; } + + // inlining ctor from base class + [TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] + [Export ("initWithCoder:device:")] + [DesignatedInitializer] + IntPtr Constructor (NSCoder aDecoder, IMTLDevice device); } - [iOS (9,0)] + [iOS (9,0)][Mac (10, 13, onlyOn64: true)] [BaseType (typeof (MPSUnaryImageKernel))] [DisableDefaultCtor] interface MPSImageThresholdBinaryInverse { [Export ("initWithDevice:thresholdValue:maximumValue:linearGrayColorTransform:")] - [DesignatedInitializer] [Internal] - IntPtr Constructor (IMTLDevice device, float thresholdValue, float maximumValue, /* [NullAllowed] float* */ IntPtr transform); + IntPtr InitWithDevice (IMTLDevice device, float thresholdValue, float maximumValue, /* [NullAllowed] float* */ IntPtr transform); // [Export ("initWithDevice:")] marked as NS_UNAVAILABLE - You must use initWithDevice:thresholdValue:maximumValue:linearGrayColorTransform: instead @@ -455,16 +574,21 @@ namespace XamCore.MetalPerformanceShaders { [Export ("transform")] [Internal] IntPtr _Transform { get; } + + // inlining ctor from base class + [TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] + [Export ("initWithCoder:device:")] + [DesignatedInitializer] + IntPtr Constructor (NSCoder aDecoder, IMTLDevice device); } - [iOS (9,0)] + [iOS (9,0)][Mac (10, 13, onlyOn64: true)] [BaseType (typeof (MPSUnaryImageKernel))] [DisableDefaultCtor] interface MPSImageThresholdTruncate { [Export ("initWithDevice:thresholdValue:linearGrayColorTransform:")] - [DesignatedInitializer] [Internal] - IntPtr Constructor (IMTLDevice device, float thresholdValue, /* [NullAllowed] float* */ IntPtr transform); + IntPtr InitWithDevice (IMTLDevice device, float thresholdValue, /* [NullAllowed] float* */ IntPtr transform); // [Export ("initWithDevice:")] marked as NS_UNAVAILABLE - You must use initWithDevice:thresholdValue:linearGrayColorTransform: instead @@ -474,16 +598,21 @@ namespace XamCore.MetalPerformanceShaders { [Export ("transform")] [Internal] IntPtr _Transform { get; } + + // inlining ctor from base class + [TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] + [Export ("initWithCoder:device:")] + [DesignatedInitializer] + IntPtr Constructor (NSCoder aDecoder, IMTLDevice device); } - [iOS (9,0)] + [iOS (9,0)][Mac (10, 13, onlyOn64: true)] [BaseType (typeof (MPSUnaryImageKernel))] [DisableDefaultCtor] interface MPSImageThresholdToZero { [Export ("initWithDevice:thresholdValue:linearGrayColorTransform:")] - [DesignatedInitializer] [Internal] - IntPtr Constructor (IMTLDevice device, float thresholdValue, /* [NullAllowed] float* */ IntPtr transform); + IntPtr InitWithDevice (IMTLDevice device, float thresholdValue, /* [NullAllowed] float* */ IntPtr transform); // [Export ("initWithDevice:")] marked as NS_UNAVAILABLE - You must use initWithDevice:thresholdValue:linearGrayColorTransform: instead @@ -493,16 +622,21 @@ namespace XamCore.MetalPerformanceShaders { [Export ("transform")] [Internal] IntPtr _Transform { get; } + + // inlining ctor from base class + [TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] + [Export ("initWithCoder:device:")] + [DesignatedInitializer] + IntPtr Constructor (NSCoder aDecoder, IMTLDevice device); } - [iOS (9,0)] + [iOS (9,0)][Mac (10, 13, onlyOn64: true)] [BaseType (typeof (MPSUnaryImageKernel))] [DisableDefaultCtor] interface MPSImageThresholdToZeroInverse { [Export ("initWithDevice:thresholdValue:linearGrayColorTransform:")] - [DesignatedInitializer] [Internal] - IntPtr Constructor (IMTLDevice device, float thresholdValue, /* [NullAllowed] float* */ IntPtr transform); + IntPtr InitWithDevice (IMTLDevice device, float thresholdValue, /* [NullAllowed] float* */ IntPtr transform); // [Export ("initWithDevice:")] marked as NS_UNAVAILABLE - You must use initWithDevice:thresholdValue:linearGrayColorTransform: instead @@ -512,14 +646,25 @@ namespace XamCore.MetalPerformanceShaders { [Export ("transform")] [Internal] IntPtr _Transform { get; } + + // inlining ctor from base class + [TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] + [Export ("initWithCoder:device:")] + [DesignatedInitializer] + IntPtr Constructor (NSCoder aDecoder, IMTLDevice device); } // MPSKernel.h - [iOS (9,0)] + [iOS (9,0)][Mac (10, 13, onlyOn64: true)] [BaseType (typeof (NSObject))] [DisableDefaultCtor] interface MPSKernel : NSCopying, NSSecureCoding { + [TV (11,0), iOS (11,0)] + [Export ("initWithCoder:device:")] + [DesignatedInitializer] + IntPtr Constructor (NSCoder aDecoder, IMTLDevice device); + [Export ("options", ArgumentSemantic.Assign)] MPSKernelOptions Options { get; set; } @@ -534,12 +679,13 @@ namespace XamCore.MetalPerformanceShaders { IntPtr Constructor (IMTLDevice device); [Export ("copyWithZone:device:")] + [return: Release ()] MPSKernel CopyWithZone ([NullAllowed] NSZone zone, [NullAllowed] IMTLDevice device); } // MPSImageTranspose.h - [iOS (9,0)] + [iOS (9,0)][Mac (10, 13, onlyOn64: true)] [BaseType (typeof (MPSUnaryImageKernel))] [DisableDefaultCtor] interface MPSImageTranspose { @@ -548,11 +694,17 @@ namespace XamCore.MetalPerformanceShaders { [Export ("initWithDevice:")] IntPtr Constructor (IMTLDevice device); + + // inlining ctor from base class + [TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] + [Export ("initWithCoder:device:")] + [DesignatedInitializer] + IntPtr Constructor (NSCoder aDecoder, IMTLDevice device); } // MPSCNN.h - [iOS (10,0)][TV (10,0)] + [iOS (10,0)][TV (10,0)][Mac (10, 13, onlyOn64: true)] [BaseType (typeof (MPSKernel), Name = "MPSCNNKernel")] [Abstract] [DisableDefaultCtor] @@ -560,6 +712,7 @@ namespace XamCore.MetalPerformanceShaders { // inlining .ctor from base class [Export ("initWithDevice:")] + [DesignatedInitializer] IntPtr Constructor (IMTLDevice device); [Export ("offset", ArgumentSemantic.Assign)] @@ -579,9 +732,47 @@ namespace XamCore.MetalPerformanceShaders { [Export ("sourceRegionForDestinationSize:")] MPSRegion GetSourceRegion (MTLSize destinationSize); + + //inlining ctor from base class + [TV (11,0), iOS (11,0)] + [Export ("initWithCoder:device:")] + [DesignatedInitializer] + IntPtr Constructor (NSCoder aDecoder, IMTLDevice device); + + [TV (11, 0), iOS (11, 0)] + [Export ("isBackwards")] + bool IsBackwards { get; } + + [TV (11, 0), iOS (11, 0)] + [Export ("padding", ArgumentSemantic.Retain)] + IMPSNNPadding Padding { get; set; } + + [TV (11, 0), iOS (11, 0)] + [Export ("destinationImageAllocator", ArgumentSemantic.Retain)] + IMPSImageAllocator DestinationImageAllocator { get; set; } + + [TV (11, 0), iOS (11, 0)] + [Export ("encodeToCommandBuffer:sourceImage:")] + MPSImage EncodeToCommandBuffer (IMTLCommandBuffer commandBuffer, MPSImage sourceImage); + + [TV (11, 0), iOS (11, 0)] + [Export ("kernelWidth")] + nuint KernelWidth { get; } + + [TV (11, 0), iOS (11, 0)] + [Export ("kernelHeight")] + nuint KernelHeight { get; } + + [TV (11, 0), iOS (11, 0)] + [Export ("strideInPixelsX")] + nuint StrideInPixelsX { get; } + + [TV (11, 0), iOS (11, 0)] + [Export ("strideInPixelsY")] + nuint StrideInPixelsY { get; } } - [iOS (10,0)][TV (10,0)] + [iOS (10,0)][TV (10,0)][Mac (10, 13, onlyOn64: true)] [BaseType (typeof (MPSCnnKernel), Name = "MPSCNNNeuron")] [Abstract] // You must use one of the sub-classes of MPSCNNNeuron [DisableDefaultCtor] @@ -590,9 +781,14 @@ namespace XamCore.MetalPerformanceShaders { [Export ("initWithDevice:")] IntPtr Constructor (IMTLDevice device); + + // inlining ctor from base class + [TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] + [Export ("initWithCoder:device:")] + IntPtr Constructor (NSCoder aDecoder, IMTLDevice device); } - [iOS (10,0)][TV (10,0)] + [iOS (10,0)][TV (10,0)][Mac (10, 13, onlyOn64: true)] [BaseType (typeof (MPSCnnNeuron), Name = "MPSCNNNeuronLinear")] [DisableDefaultCtor] interface MPSCnnNeuronLinear { @@ -610,7 +806,7 @@ namespace XamCore.MetalPerformanceShaders { // [Export ("initWithDevice:")] marked as NS_UNAVAILABLE - You must use initWithDevice:a:b instead } - [iOS (10,0)][TV (10,0)] + [iOS (10,0)][TV (10,0)][Mac (10, 13, onlyOn64: true)] [BaseType (typeof (MPSCnnNeuron), Name = "MPSCNNNeuronReLU")] [DisableDefaultCtor] interface MPSCnnNeuronReLU { @@ -625,7 +821,7 @@ namespace XamCore.MetalPerformanceShaders { // [Export ("initWithDevice:")] marked as NS_UNAVAILABLE - Use initWithDevice:a: instead } - [iOS (10,0)][TV (10,0)] + [iOS (10,0)][TV (10,0)][Mac (10, 13, onlyOn64: true)] [BaseType (typeof (MPSCnnNeuron), Name = "MPSCNNNeuronSigmoid")] [DisableDefaultCtor] interface MPSCnnNeuronSigmoid { @@ -635,7 +831,7 @@ namespace XamCore.MetalPerformanceShaders { IntPtr Constructor (IMTLDevice device); } - [iOS (10,0)][TV (10,0)] + [iOS (10,0)][TV (10,0)][Mac (10, 13, onlyOn64: true)] [BaseType (typeof (MPSCnnNeuron), Name = "MPSCNNNeuronTanH")] [DisableDefaultCtor] interface MPSCnnNeuronTanH { @@ -653,7 +849,7 @@ namespace XamCore.MetalPerformanceShaders { // [Export ("initWithDevice:")] marked as NS_UNAVAILABLE - Use initWithDevice:a:b: instead } - [iOS (10,0)][TV (10,0)] + [iOS (10,0)][TV (10,0)][Mac (10, 13, onlyOn64: true)] [BaseType (typeof (MPSCnnNeuron), Name = "MPSCNNNeuronAbsolute")] [DisableDefaultCtor] interface MPSCnnNeuronAbsolute { @@ -663,7 +859,7 @@ namespace XamCore.MetalPerformanceShaders { IntPtr Constructor (IMTLDevice device); } - [iOS (10,0)][TV (10,0)] + [iOS (10,0)][TV (10,0)][Mac (10, 13, onlyOn64: true)] [BaseType (typeof (NSObject), Name = "MPSCNNConvolutionDescriptor")] [DisableDefaultCtor] interface MPSCnnConvolutionDescriptor : NSCopying, NSSecureCoding { @@ -695,22 +891,67 @@ namespace XamCore.MetalPerformanceShaders { [Static] [Export ("cnnConvolutionDescriptorWithKernelWidth:kernelHeight:inputFeatureChannels:outputFeatureChannels:neuronFilter:")] MPSCnnConvolutionDescriptor GetConvolutionDescriptor (nuint kernelWidth, nuint kernelHeight, nuint inputFeatureChannels, nuint outputFeatureChannels, [NullAllowed] MPSCnnNeuron neuronFilter); + + [TV (11, 0), iOS (11, 0)] + [Static] + [Export ("supportsSecureCoding")] + bool SupportsSecureCoding { get; } + + [TV (11, 0), iOS (11, 0)] + [Static] + [Export ("cnnConvolutionDescriptorWithKernelWidth:kernelHeight:inputFeatureChannels:outputFeatureChannels:")] + MPSCnnConvolutionDescriptor CreateCnnConvolutionDescriptor (nuint kernelWidth, nuint kernelHeight, nuint inputFeatureChannels, nuint outputFeatureChannels); + + [TV (11, 0), iOS (11, 0)] + [Internal, Export ("setBatchNormalizationParametersForInferenceWithMean:variance:gamma:beta:epsilon:")] + void SetBatchNormalizationParameters (IntPtr /* float* */ mean, IntPtr /* float* */ variance, [NullAllowed] IntPtr /* float* */ gamma, [NullAllowed] IntPtr /* float* */ beta, float epsilon); + + [TV (11, 0), iOS (11, 0)] + [Export ("setNeuronType:parameterA:parameterB:")] + void SetNeuronType (MPSCnnNeuronType neuronType, float parameterA, float parameterB); + + [TV (11, 0), iOS (11, 0)] + [Export ("neuronType")] + MPSCnnNeuronType NeuronType { get; } + + [TV (11, 0), iOS (11, 0)] + [Export ("neuronParameterA")] + float NeuronParameterA { get; } + + [TV (11, 0), iOS (11, 0)] + [Export ("neuronParameterB")] + float NeuronParameterB { get; } + + [TV (11, 0), iOS (11, 0)] + [Export ("setNeuronToPReLUWithParametersA:")] + void SetNeuronToPReLU (NSData A); + + [TV (11, 0), iOS (11, 0)] + [Export ("dilationRateX")] + nuint DilationRateX { get; set; } + + [TV (11, 0), iOS (11, 0)] + [Export ("dilationRateY")] + nuint DilationRateY { get; set; } + } - [iOS (10,0)][TV (10,0)] + [iOS (10,0)][TV (10,0)][Mac (10, 13, onlyOn64: true)] [Native][Flags] public enum MPSCnnConvolutionFlags : nuint { None = 0 } - [iOS (10,0)][TV (10,0)] + [iOS (10,0)][TV (10,0)][Mac (10, 13, onlyOn64: true)] [BaseType (typeof (MPSCnnKernel), Name = "MPSCNNConvolution")] [DisableDefaultCtor] interface MPSCnnConvolution { + [Override] [Export ("kernelWidth")] nuint KernelWidth { get; } + [Override] [Export ("kernelHeight")] nuint KernelHeight { get; } @@ -720,9 +961,11 @@ namespace XamCore.MetalPerformanceShaders { [Export ("outputFeatureChannels")] nuint OutputFeatureChannels { get; } + [Override] [Export ("strideInPixelsX")] nuint StrideInPixelsX { get; } + [Override] [Export ("strideInPixelsY")] nuint StrideInPixelsY { get; } @@ -733,40 +976,99 @@ namespace XamCore.MetalPerformanceShaders { MPSCnnNeuron Neuron { get; } [Export ("initWithDevice:convolutionDescriptor:kernelWeights:biasTerms:flags:")] - [DesignatedInitializer] [Internal] - IntPtr Constructor (IMTLDevice device, MPSCnnConvolutionDescriptor convolutionDescriptor, /* float* */ IntPtr kernelWeights, [NullAllowed] /* float* */ IntPtr biasTerms, MPSCnnConvolutionFlags flags); + IntPtr InitWithDevice (IMTLDevice device, MPSCnnConvolutionDescriptor convolutionDescriptor, /* float* */ IntPtr kernelWeights, [NullAllowed] /* float* */ IntPtr biasTerms, MPSCnnConvolutionFlags flags); // [Export ("initWithDevice:")] marked as NS_UNAVAILABLE - Use initWithDevice:convolutionDescriptor:kernelWeights:biasTerms instead + + [TV (11, 0), iOS (11, 0)] + [Export ("initWithDevice:weights:")] + [DesignatedInitializer] + IntPtr Constructor (IMTLDevice device, IMPSCnnConvolutionDataSource weights); + + [TV (11, 0), iOS (11, 0)] + [Export ("initWithCoder:device:")] + [DesignatedInitializer] + IntPtr Constructor (NSCoder aDecoder, IMTLDevice device); + + [TV (11, 0), iOS (11, 0)] + [Export ("encodeToCommandBuffer:sourceImage:destinationImage:state:")] + void EncodeToCommandBuffer (IMTLCommandBuffer commandBuffer, MPSImage sourceImage, MPSImage destinationImage, out MPSCnnConvolutionState state); + + [TV (11, 0), iOS (11, 0)] + [Export ("dilationRateX")] + nuint DilationRateX { get; } + + [TV (11, 0), iOS (11, 0)] + [Export ("dilationRateY")] + nuint DilationRateY { get; } + + [TV (11, 0), iOS (11, 0)] + [Export ("channelMultiplier")] + nuint ChannelMultiplier { get; } + + [TV (11, 0), iOS (11, 0)] + [Export ("neuronType")] + MPSCnnNeuronType NeuronType { get; } + + [TV (11, 0), iOS (11, 0)] + [Export ("neuronParameterA")] + float NeuronParameterA { get; } + + [TV (11, 0), iOS (11, 0)] + [Export ("neuronParameterB")] + float NeuronParameterB { get; } + + [TV (11,2), iOS (11,2), Mac (10,13,2, onlyOn64: true)] + [Export ("neuronParameterC")] + float NeuronParameterC { get; } + + [TV (11, 0), iOS (11, 0)] + [Export ("subPixelScaleFactor")] + nuint SubPixelScaleFactor { get; } } - [iOS (10,0)][TV (10,0)] + [iOS (10,0)][TV (10,0)][Mac (10, 13, onlyOn64: true)] [BaseType (typeof (MPSCnnConvolution), Name = "MPSCNNFullyConnected")] [DisableDefaultCtor] interface MPSCnnFullyConnected { [Export ("initWithDevice:convolutionDescriptor:kernelWeights:biasTerms:flags:")] - [DesignatedInitializer] [Internal] - IntPtr Constructor (IMTLDevice device, MPSCnnConvolutionDescriptor fullyConnectedDescriptor, /* float* */ IntPtr kernelWeights, [NullAllowed] /* float* */ IntPtr biasTerms, MPSCnnConvolutionFlags flags); + IntPtr InitWithDevice (IMTLDevice device, MPSCnnConvolutionDescriptor fullyConnectedDescriptor, /* float* */ IntPtr kernelWeights, [NullAllowed] /* float* */ IntPtr biasTerms, MPSCnnConvolutionFlags flags); // [Export ("initWithDevice:")] marked as NS_UNAVAILABLE - Use initWithDevice:convolutionDescriptor:kernelWeights:biasTerms instead + + // inlining ctor from base class + [TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] + [Export ("initWithCoder:device:")] + [DesignatedInitializer] + IntPtr Constructor (NSCoder aDecoder, IMTLDevice device); + + [TV (11, 0), Mac (10, 13, onlyOn64: true), iOS (11, 0)] + [Export ("initWithDevice:weights:")] + [DesignatedInitializer] + IntPtr Constructor (IMTLDevice device, IMPSCnnConvolutionDataSource weights); } - [iOS (10,0)][TV (10,0)] + [iOS (10,0)][TV (10,0)][Mac (10, 13, onlyOn64: true)] [BaseType (typeof (MPSCnnKernel), Name = "MPSCNNPooling")] [DisableDefaultCtor] interface MPSCnnPooling { + [Override] [Export ("kernelWidth")] nuint KernelWidth { get; } + [Override] [Export ("kernelHeight")] nuint KernelHeight { get; } + [Override] [Export ("strideInPixelsX")] nuint StrideInPixelsX { get; } + [Override] [Export ("strideInPixelsY")] nuint StrideInPixelsY { get; } @@ -778,9 +1080,14 @@ namespace XamCore.MetalPerformanceShaders { IntPtr Constructor (IMTLDevice device, nuint kernelWidth, nuint kernelHeight, nuint strideInPixelsX, nuint strideInPixelsY); // [Export ("initWithDevice:")] marked as NS_UNAVAILABLE - Use initWithDevice:kernelWidth:kernelHeight:strideInPixelsX:strideInPixelsY: instead + + [TV (11, 0), Mac (10, 13, onlyOn64: true), iOS (11, 0)] + [Export ("initWithCoder:device:")] + [DesignatedInitializer] + IntPtr Constructor (NSCoder aDecoder, IMTLDevice device); } - [iOS (10,0)][TV (10,0)] + [iOS (10,0)][TV (10,0)][Mac (10, 13, onlyOn64: true)] [BaseType (typeof (MPSCnnPooling), Name = "MPSCNNPoolingMax")] [DisableDefaultCtor] interface MPSCnnPoolingMax { @@ -790,9 +1097,14 @@ namespace XamCore.MetalPerformanceShaders { [Export ("initWithDevice:kernelWidth:kernelHeight:strideInPixelsX:strideInPixelsY:")] [DesignatedInitializer] IntPtr Constructor (IMTLDevice device, nuint kernelWidth, nuint kernelHeight, nuint strideInPixelsX, nuint strideInPixelsY); + + [TV (11, 0), iOS (11, 0)] + [Export ("initWithCoder:device:")] + [DesignatedInitializer] + IntPtr Constructor (NSCoder aDecoder, IMTLDevice device); } - [iOS (10,0)][TV (10,0)] + [iOS (10,0)][TV (10,0)][Mac (10, 13, onlyOn64: true)] [BaseType (typeof (MPSCnnPooling), Name = "MPSCNNPoolingAverage")] [DisableDefaultCtor] interface MPSCnnPoolingAverage { @@ -802,9 +1114,22 @@ namespace XamCore.MetalPerformanceShaders { [Export ("initWithDevice:kernelWidth:kernelHeight:strideInPixelsX:strideInPixelsY:")] [DesignatedInitializer] IntPtr Constructor (IMTLDevice device, nuint kernelWidth, nuint kernelHeight, nuint strideInPixelsX, nuint strideInPixelsY); + + [TV (11, 0), iOS (11, 0)] + [Export ("initWithCoder:device:")] + [DesignatedInitializer] + IntPtr Constructor (NSCoder aDecoder, IMTLDevice device); + + [TV (11, 0), iOS (11, 0)] + [Export ("zeroPadSizeX")] + nuint ZeroPadSizeX { get; set; } + + [TV (11, 0), iOS (11, 0)] + [Export ("zeroPadSizeY")] + nuint ZeroPadSizeY { get; set; } } - [iOS (10,0)][TV (10,0)] + [iOS (10,0)][TV (10,0)][Mac (10, 13, onlyOn64: true)] [BaseType (typeof (MPSCnnKernel), Name = "MPSCNNSpatialNormalization")] [DisableDefaultCtor] interface MPSCnnSpatialNormalization { @@ -818,9 +1143,11 @@ namespace XamCore.MetalPerformanceShaders { [Export ("delta")] float Delta { get; set; } + [Override] [Export ("kernelWidth")] nuint KernelWidth { get; } + [Override] [Export ("kernelHeight")] nuint KernelHeight { get; } @@ -829,9 +1156,14 @@ namespace XamCore.MetalPerformanceShaders { IntPtr Constructor (IMTLDevice device, nuint kernelWidth, nuint kernelHeight); // [Export ("initWithDevice:")] marked as NS_UNAVAILABLE - Use initWithDevice:kernelWidth:kernelHeight instead + + [TV (11, 0), iOS (11, 0)] + [Export ("initWithCoder:device:")] + [DesignatedInitializer] + IntPtr Constructor (NSCoder aDecoder, IMTLDevice device); } - [iOS (10,0)][TV (10,0)] + [iOS (10,0)][TV (10,0)][Mac (10, 13, onlyOn64: true)] [BaseType (typeof (MPSCnnKernel), Name = "MPSCNNLocalContrastNormalization")] [DisableDefaultCtor] interface MPSCnnLocalContrastNormalization { @@ -854,9 +1186,11 @@ namespace XamCore.MetalPerformanceShaders { [Export ("ps")] float Ps { get; set; } + [Override] [Export ("kernelWidth")] nuint KernelWidth { get; } + [Override] [Export ("kernelHeight")] nuint KernelHeight { get; } @@ -865,9 +1199,14 @@ namespace XamCore.MetalPerformanceShaders { IntPtr Constructor (IMTLDevice device, nuint kernelWidth, nuint kernelHeight); // [Export ("initWithDevice:")] marked as NS_UNAVAILABLE - Use initWithDevice:kernelWidth:kernelHeight instead + + [TV (11, 0), iOS (11, 0)] + [Export ("initWithCoder:device:")] + [DesignatedInitializer] + IntPtr Constructor (NSCoder aDecoder, IMTLDevice device); } - [iOS (10,0)][TV (10,0)] + [iOS (10,0)][TV (10,0)][Mac (10, 13, onlyOn64: true)] [BaseType (typeof (MPSCnnKernel), Name = "MPSCNNCrossChannelNormalization")] [DisableDefaultCtor] interface MPSCnnCrossChannelNormalization { @@ -889,9 +1228,14 @@ namespace XamCore.MetalPerformanceShaders { IntPtr Constructor (IMTLDevice device, nuint kernelSize); // [Export ("initWithDevice:")] marked as NS_UNAVAILABLE - Use initWithDevice:kernelSize: instead + + [TV (11, 0), iOS (11, 0)] + [Export ("initWithCoder:device:")] + [DesignatedInitializer] + IntPtr Constructor (NSCoder aDecoder, IMTLDevice device); } - [iOS (10,0)][TV (10,0)] + [iOS (10,0)][TV (10,0)][Mac (10, 13, onlyOn64: true)] [BaseType (typeof (MPSCnnKernel), Name = "MPSCNNSoftMax")] [DisableDefaultCtor] interface MPSCnnSoftMax { @@ -903,7 +1247,7 @@ namespace XamCore.MetalPerformanceShaders { IntPtr Constructor (IMTLDevice device); } - [iOS (10,0)][TV (10,0)] + [iOS (10,0)][TV (10,0)][Mac (10, 13, onlyOn64: true)] [BaseType (typeof (MPSCnnKernel), Name = "MPSCNNLogSoftMax")] [DisableDefaultCtor] interface MPSCnnLogSoftMax { @@ -917,7 +1261,7 @@ namespace XamCore.MetalPerformanceShaders { // MPSImage.h - [iOS (10,0)][TV (10,0)] + [iOS (10,0)][TV (10,0)][Mac (10, 13, onlyOn64: true)] [BaseType (typeof (NSObject))] [DisableDefaultCtor] interface MPSImageDescriptor { @@ -958,7 +1302,7 @@ namespace XamCore.MetalPerformanceShaders { MPSImageDescriptor GetImageDescriptor (MPSImageFeatureChannelFormat channelFormat, nuint width, nuint height, nuint featureChannels, nuint numberOfImages, MTLTextureUsage usage); } - [iOS (10,0)][TV (10,0)] + [iOS (10,0)][TV (10,0)][Mac (10, 13, onlyOn64: true)] [Native][Flags] public enum MPSPurgeableState : nuint { AllocationDeferred = 0, @@ -968,7 +1312,7 @@ namespace XamCore.MetalPerformanceShaders { Empty = MTLPurgeableState.Empty } - [iOS (10,0)][TV (10,0)] + [iOS (10,0)][TV (10,0)][Mac (10, 13, onlyOn64: true)] [BaseType (typeof (NSObject))] [DisableDefaultCtor] interface MPSImage { @@ -1016,9 +1360,25 @@ namespace XamCore.MetalPerformanceShaders { [Export ("setPurgeableState:")] MPSPurgeableState SetPurgeableState (MPSPurgeableState state); + + [TV (11,0), iOS (11,0)] + [Export ("readBytes:dataLayout:bytesPerRow:region:featureChannelInfo:imageIndex:")] + void ReadBytes (IntPtr /* void* */ dataBytes, MPSDataLayout dataLayout, nuint bytesPerRow, MTLRegion region, MPSImageReadWriteParams featureChannelInfo, nuint imageIndex); + + [TV (11,0), iOS (11,0)] + [Export ("writeBytes:dataLayout:bytesPerRow:region:featureChannelInfo:imageIndex:")] + void WriteBytes (IntPtr /* void* */ dataBytes, MPSDataLayout dataLayout, nuint bytesPerRow, MTLRegion region, MPSImageReadWriteParams featureChannelInfo, nuint imageIndex); + + [TV (11,0), iOS (11,0)] + [Export ("readBytes:dataLayout:imageIndex:")] + void ReadBytes (IntPtr /* void* */ dataBytes, MPSDataLayout dataLayout, nuint imageIndex); + + [TV (11,0), iOS (11,0)] + [Export ("writeBytes:dataLayout:imageIndex:")] + void WriteBytes (IntPtr /* void* */ dataBytes, MPSDataLayout dataLayout, nuint imageIndex); } - [iOS (10,0)][TV (10,0)] + [iOS (10,0)][TV (10,0)][Mac (10, 13, onlyOn64: true)] [BaseType (typeof (MPSImage))] [DisableDefaultCtor] interface MPSTemporaryImage { @@ -1041,7 +1401,7 @@ namespace XamCore.MetalPerformanceShaders { // MPSImageConversion.h - [iOS (10,0)][TV (10,0)] + [iOS (10,0)][TV (10,0)][Mac (10, 13, onlyOn64: true)] [BaseType (typeof (MPSUnaryImageKernel))] [DisableDefaultCtor] interface MPSImageConversion { @@ -1054,12 +1414,18 @@ namespace XamCore.MetalPerformanceShaders { [Export ("initWithDevice:srcAlpha:destAlpha:backgroundColor:conversionInfo:")] [Internal] - IntPtr Constructor (IMTLDevice device, MPSAlphaType srcAlpha, MPSAlphaType destAlpha, [NullAllowed] /* nfloat* */ IntPtr backgroundColor, [NullAllowed] CGColorConversionInfo conversionInfo); + IntPtr InitWithDevice (IMTLDevice device, MPSAlphaType srcAlpha, MPSAlphaType destAlpha, [NullAllowed] /* nfloat* */ IntPtr backgroundColor, [NullAllowed] CGColorConversionInfo conversionInfo); + + // inlining ctor from base class + [TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] + [Export ("initWithCoder:device:")] + [DesignatedInitializer] + IntPtr Constructor (NSCoder aDecoder, IMTLDevice device); } // MPSMatrix.h - [iOS (10,0)][TV (10,0)] + [iOS (10,0)][TV (10,0)][Mac (10, 13, onlyOn64: true)] [BaseType (typeof (NSObject))] [DisableDefaultCtor] interface MPSMatrixDescriptor { @@ -1082,10 +1448,33 @@ namespace XamCore.MetalPerformanceShaders { [Static] [Export ("rowBytesFromColumns:dataType:")] - nuint GetRowBytes (nuint columns, MPSDataType dataType); + nuint GetRowBytesFromColumns (nuint columns, MPSDataType dataType); + + [TV (11, 0), iOS (11, 0)] + [Export ("matrices")] + nuint Matrices { get; } + + [TV (11, 0), iOS (11, 0)] + [Export ("matrixBytes")] + nuint MatrixBytes { get; } + + [TV (11,0), iOS (11,0)] + [Static] + [Export ("matrixDescriptorWithRows:columns:rowBytes:dataType:")] + MPSMatrixDescriptor GetMatrixDescriptor (nuint rows, nuint columns, nuint rowBytes, MPSDataType dataType); + + [TV (11,0), iOS (11,0)] + [Static] + [Export ("matrixDescriptorWithRows:columns:matrices:rowBytes:matrixBytes:dataType:")] + MPSMatrixDescriptor GetMatrixDescriptor (nuint rows, nuint columns, nuint matrices, nuint rowBytes, nuint matrixBytes, MPSDataType dataType); + + [TV (11,0), iOS (11,0)] + [Static] + [Export ("rowBytesForColumns:dataType:")] + nuint GetRowBytesForColumns (nuint columns, MPSDataType dataType); } - [iOS (10,0)][TV (10,0)] + [iOS (10,0)][TV (10,0)][Mac (10, 13, onlyOn64: true)] [BaseType (typeof (NSObject))] [DisableDefaultCtor] // init NS_UNAVAILABLE; interface MPSMatrix { @@ -1110,14 +1499,25 @@ namespace XamCore.MetalPerformanceShaders { [Export ("initWithBuffer:descriptor:")] IntPtr Constructor (IMTLBuffer buffer, MPSMatrixDescriptor descriptor); + + [TV (11, 0), iOS (11, 0)] + [Export ("matrices")] + nuint Matrices { get; } + + [TV (11, 0), iOS (11, 0)] + [Export ("matrixBytes")] + nuint MatrixBytes { get; } } // MPSMatrixMultiplication.h - [iOS (10,0)][TV (10,0)] + [iOS (10,0)][TV (10,0)][Mac (10, 13, onlyOn64: true)] [BaseType (typeof (MPSKernel))] [DisableDefaultCtor] interface MPSMatrixMultiplication { + [TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] + [Export ("initWithDevice:resultRows:resultColumns:interiorColumns:")] + IntPtr Constructor (IMTLDevice device, nuint resultRows, nuint resultColumns, nuint interiorColumns); [Export ("resultMatrixOrigin", ArgumentSemantic.Assign)] MTLOrigin ResultMatrixOrigin { get; set; } @@ -1135,5 +1535,2156 @@ namespace XamCore.MetalPerformanceShaders { void EncodeToCommandBuffer (IMTLCommandBuffer commandBuffer, MPSMatrix leftMatrix, MPSMatrix rightMatrix, MPSMatrix resultMatrix); // [Export ("initWithDevice:")] marked as NS_UNAVAILABLE - Use the above initialization method instead. + + // inlining ctor from base class + [TV (11,0), iOS (11,0)] + [Export ("initWithCoder:device:")] + [DesignatedInitializer] + IntPtr Constructor (NSCoder aDecoder, IMTLDevice device); + + [TV (11,0), iOS (11,0)] + [Export ("batchStart")] + nuint BatchStart { get; set; } + + [TV (11,0), iOS (11,0)] + [Export ("batchSize")] + nuint BatchSize { get; set; } + } + + [TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] + [BaseType (typeof (NSObject))] + [DisableDefaultCtor] + interface MPSState { + [Export ("readCount")] + nuint ReadCount { get; set; } + + [Export ("isTemporary")] + bool IsTemporary { get; } + + [NullAllowed, Export ("label")] + string Label { get; set; } + } + + [TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] + [BaseType (typeof(MPSMatrix))] + [DisableDefaultCtor] + interface MPSTemporaryMatrix { + [Static] + [Export ("temporaryMatrixWithCommandBuffer:matrixDescriptor:")] + MPSTemporaryMatrix Create (IMTLCommandBuffer commandBuffer, MPSMatrixDescriptor matrixDescriptor); + + [Static] + [Export ("prefetchStorageWithCommandBuffer:matrixDescriptorList:")] + void PrefetchStorage (IMTLCommandBuffer commandBuffer, MPSMatrixDescriptor[] descriptorList); + + [Export ("readCount")] + nuint ReadCount { get; set; } + } + + [TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] + [BaseType (typeof (NSObject))] + [DisableDefaultCtor] + interface MPSVector { + [Export ("device", ArgumentSemantic.Retain)] + IMTLDevice Device { get; } + + [Export ("length")] + nuint Length { get; } + + [Export ("vectors")] + nuint Vectors { get; } + + [Export ("dataType")] + MPSDataType DataType { get; } + + [Export ("vectorBytes")] + nuint VectorBytes { get; } + + [Export ("data")] + IMTLBuffer Data { get; } + + [Export ("initWithBuffer:descriptor:")] + IntPtr Constructor (IMTLBuffer buffer, MPSVectorDescriptor descriptor); + } + + [TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] + [BaseType (typeof (NSObject))] + [DisableDefaultCtor] + interface MPSVectorDescriptor { + [Export ("length")] + nuint Length { get; set; } + + [Export ("vectors")] + nuint Vectors { get; } + + [Export ("dataType", ArgumentSemantic.Assign)] + MPSDataType DataType { get; set; } + + [Export ("vectorBytes")] + nuint VectorBytes { get; } + + [Static] + [Export ("vectorDescriptorWithLength:dataType:")] + MPSVectorDescriptor Create (nuint length, MPSDataType dataType); + + [Static] + [Export ("vectorDescriptorWithLength:vectors:vectorBytes:dataType:")] + MPSVectorDescriptor Create (nuint length, nuint vectors, nuint vectorBytes, MPSDataType dataType); + + [Static] + [Export ("vectorBytesForLength:dataType:")] + nuint GetVectorBytes (nuint length, MPSDataType dataType); + } + + [TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] + [BaseType (typeof(MPSKernel))] + [DisableDefaultCtor] // According to docs needs a Metal Device so initWithDevice: makes more sense. + interface MPSMatrixUnaryKernel { + [Export ("sourceMatrixOrigin", ArgumentSemantic.Assign)] + MTLOrigin SourceMatrixOrigin { get; set; } + + [Export ("resultMatrixOrigin", ArgumentSemantic.Assign)] + MTLOrigin ResultMatrixOrigin { get; set; } + + [Export ("batchStart")] + nuint BatchStart { get; set; } + + [Export ("batchSize")] + nuint BatchSize { get; set; } + + // inlining ctor from base class + [Export ("initWithDevice:")] + [DesignatedInitializer] + IntPtr Constructor (IMTLDevice device); + + [Export ("initWithCoder:device:")] + [DesignatedInitializer] + IntPtr Constructor (NSCoder aDecoder, IMTLDevice device); + } + + [TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] + [BaseType (typeof(MPSKernel))] + [DisableDefaultCtor] // According to docs needs a Metal Device so initWithDevice: makes more sense. + interface MPSMatrixBinaryKernel { + [Export ("primarySourceMatrixOrigin", ArgumentSemantic.Assign)] + MTLOrigin PrimarySourceMatrixOrigin { get; set; } + + [Export ("secondarySourceMatrixOrigin", ArgumentSemantic.Assign)] + MTLOrigin SecondarySourceMatrixOrigin { get; set; } + + [Export ("resultMatrixOrigin", ArgumentSemantic.Assign)] + MTLOrigin ResultMatrixOrigin { get; set; } + + [Export ("batchStart")] + nuint BatchStart { get; set; } + + [Export ("batchSize")] + nuint BatchSize { get; set; } + + // inlining ctor from base class + [Export ("initWithDevice:")] + [DesignatedInitializer] + IntPtr Constructor (IMTLDevice device); + + [Export ("initWithCoder:device:")] + [DesignatedInitializer] + IntPtr Constructor (NSCoder aDecoder, IMTLDevice device); + } + + [TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] + [BaseType (typeof(MPSMatrixBinaryKernel))] + [DisableDefaultCtor] // According to docs needs a Metal Device so initWithDevice: makes more sense. + interface MPSMatrixVectorMultiplication { + [Export ("initWithDevice:transpose:rows:columns:alpha:beta:")] + IntPtr Constructor (IMTLDevice device, bool transpose, nuint rows, nuint columns, double alpha, double beta); + + [Export ("initWithDevice:rows:columns:")] + IntPtr Constructor (IMTLDevice device, nuint rows, nuint columns); + + [Export ("encodeToCommandBuffer:inputMatrix:inputVector:resultVector:")] + void EncodeToCommandBuffer (IMTLCommandBuffer commandBuffer, MPSMatrix inputMatrix, MPSVector inputVector, MPSVector resultVector); + + // inlining ctor from base class + [Export ("initWithDevice:")] + [DesignatedInitializer] + IntPtr Constructor (IMTLDevice device); + + [Export ("initWithCoder:device:")] + [DesignatedInitializer] + IntPtr Constructor (NSCoder aDecoder, IMTLDevice device); + } + + [TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] + [BaseType (typeof(MPSMatrixBinaryKernel))] + [DisableDefaultCtor] // According to docs needs a Metal Device so initWithDevice: makes more sense. + interface MPSMatrixSolveTriangular { + [Export ("initWithDevice:right:upper:transpose:unit:order:numberOfRightHandSides:alpha:")] + IntPtr Constructor (IMTLDevice device, bool right, bool upper, bool transpose, bool unit, nuint order, nuint numberOfRightHandSides, double alpha); + + [Export ("encodeToCommandBuffer:sourceMatrix:rightHandSideMatrix:solutionMatrix:")] + void EncodeToCommandBuffer (IMTLCommandBuffer commandBuffer, MPSMatrix sourceMatrix, MPSMatrix rightHandSideMatrix, MPSMatrix solutionMatrix); + + // inlining ctor from base class + [Export ("initWithDevice:")] + [DesignatedInitializer] + IntPtr Constructor (IMTLDevice device); + + [Export ("initWithCoder:device:")] + [DesignatedInitializer] + IntPtr Constructor (NSCoder aDecoder, IMTLDevice device); + } + + [TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] + [BaseType (typeof(MPSMatrixBinaryKernel))] + [DisableDefaultCtor] // According to docs needs a Metal Device so initWithDevice: makes more sense. + interface MPSMatrixSolveLU { + [Export ("initWithDevice:transpose:order:numberOfRightHandSides:")] + IntPtr Constructor (IMTLDevice device, bool transpose, nuint order, nuint numberOfRightHandSides); + + [Export ("encodeToCommandBuffer:sourceMatrix:rightHandSideMatrix:pivotIndices:solutionMatrix:")] + void EncodeToCommandBuffer (IMTLCommandBuffer commandBuffer, MPSMatrix sourceMatrix, MPSMatrix rightHandSideMatrix, MPSMatrix pivotIndices, MPSMatrix solutionMatrix); + + // inlining ctor from base class + [Export ("initWithDevice:")] + [DesignatedInitializer] + IntPtr Constructor (IMTLDevice device); + + [Export ("initWithCoder:device:")] + [DesignatedInitializer] + IntPtr Constructor (NSCoder aDecoder, IMTLDevice device); + } + + [TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] + [BaseType (typeof(MPSMatrixBinaryKernel))] + [DisableDefaultCtor] // According to docs needs a Metal Device so initWithDevice: makes more sense. + interface MPSMatrixSolveCholesky { + [Export ("initWithDevice:upper:order:numberOfRightHandSides:")] + IntPtr Constructor (IMTLDevice device, bool upper, nuint order, nuint numberOfRightHandSides); + + [Export ("encodeToCommandBuffer:sourceMatrix:rightHandSideMatrix:solutionMatrix:")] + void EncodeToCommandBuffer (IMTLCommandBuffer commandBuffer, MPSMatrix sourceMatrix, MPSMatrix rightHandSideMatrix, MPSMatrix solutionMatrix); + + // inlining ctor from base class + [Export ("initWithDevice:")] + [DesignatedInitializer] + IntPtr Constructor (IMTLDevice device); + + [Export ("initWithCoder:device:")] + [DesignatedInitializer] + IntPtr Constructor (NSCoder aDecoder, IMTLDevice device); + } + + [TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] + [BaseType (typeof(MPSMatrixUnaryKernel))] + [DisableDefaultCtor] // According to docs needs a Metal Device so initWithDevice: makes more sense. + interface MPSMatrixDecompositionLU { + [Export ("initWithDevice:rows:columns:")] + IntPtr Constructor (IMTLDevice device, nuint rows, nuint columns); + + [Export ("encodeToCommandBuffer:sourceMatrix:resultMatrix:pivotIndices:status:")] + void EncodeToCommandBuffer (IMTLCommandBuffer commandBuffer, MPSMatrix sourceMatrix, MPSMatrix resultMatrix, MPSMatrix pivotIndices, [NullAllowed] IMTLBuffer status); + + // inlining ctor from base class + [Export ("initWithDevice:")] + [DesignatedInitializer] + IntPtr Constructor (IMTLDevice device); + + [Export ("initWithCoder:device:")] + [DesignatedInitializer] + IntPtr Constructor (NSCoder aDecoder, IMTLDevice device); + } + + [TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] + [BaseType (typeof(MPSMatrixUnaryKernel))] + [DisableDefaultCtor] // According to docs needs a Metal Device so initWithDevice: makes more sense. + interface MPSMatrixDecompositionCholesky { + [Export ("initWithDevice:lower:order:")] + IntPtr Constructor (IMTLDevice device, bool lower, nuint order); + + [Export ("encodeToCommandBuffer:sourceMatrix:resultMatrix:status:")] + void EncodeToCommandBuffer (IMTLCommandBuffer commandBuffer, MPSMatrix sourceMatrix, MPSMatrix resultMatrix, [NullAllowed] IMTLBuffer status); + + // inlining ctor from base class + [Export ("initWithDevice:")] + [DesignatedInitializer] + IntPtr Constructor (IMTLDevice device); + + [Export ("initWithCoder:device:")] + [DesignatedInitializer] + IntPtr Constructor (NSCoder aDecoder, IMTLDevice device); + } + + [TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] + [BaseType (typeof (NSObject))] + [DisableDefaultCtor] + interface MPSMatrixCopyDescriptor { + [Static] + [Export ("descriptorWithSourceMatrix:destinationMatrix:offsets:")] + MPSMatrixCopyDescriptor Create (MPSMatrix sourceMatrix, MPSMatrix destinationMatrix, MPSMatrixCopyOffsets offsets); + + [Export ("initWithDevice:count:")] + [DesignatedInitializer] + IntPtr Constructor (IMTLDevice device, nuint count); + + [Export ("setCopyOperationAtIndex:sourceMatrix:destinationMatrix:offsets:")] + void SetCopyOperation (nuint index, MPSMatrix sourceMatrix, MPSMatrix destinationMatrix, MPSMatrixCopyOffsets offsets); + + [Export ("initWithSourceMatrices:destinationMatrices:offsetVector:offset:")] + [DesignatedInitializer] + IntPtr Constructor (MPSMatrix[] sourceMatrices, MPSMatrix[] destinationMatrices, [NullAllowed] MPSVector offsets, nuint byteOffset); + } + + [TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] + [BaseType (typeof(MPSKernel))] + [DisableDefaultCtor] // There is a DesignatedInitializer, file a bug if needed. + interface MPSMatrixCopy { + [Export ("initWithDevice:copyRows:copyColumns:sourcesAreTransposed:destinationsAreTransposed:")] + [DesignatedInitializer] + IntPtr Constructor (IMTLDevice device, nuint copyRows, nuint copyColumns, bool areSourcesTransposed, bool areDestinationsTransposed); + + [Export ("copyRows")] + nuint CopyRows { get; } + + [Export ("copyColumns")] + nuint CopyColumns { get; } + + [Export ("sourcesAreTransposed")] + bool AreSourcesTransposed { get; } + + [Export ("destinationsAreTransposed")] + bool AreDestinationsTransposed { get; } + + [Export ("encodeToCommandBuffer:copyDescriptor:")] + void EncodeToCommandBuffer (IMTLCommandBuffer cmdBuf, MPSMatrixCopyDescriptor copyDescriptor); + + [TV (11,2), Mac (10,13,2, onlyOn64: true), iOS (11,2)] + [Export ("encodeToCommandBuffer:copyDescriptor:rowPermuteIndices:rowPermuteOffset:columnPermuteIndices:columnPermuteOffset:")] + void EncodeToCommandBuffer (IMTLCommandBuffer commandBuffer, MPSMatrixCopyDescriptor copyDescriptor, [NullAllowed] MPSVector rowPermuteIndices, nuint rowPermuteOffset, [NullAllowed] MPSVector columnPermuteIndices, nuint columnPermuteOffset); + + [Export ("initWithCoder:device:")] + [DesignatedInitializer] + IntPtr Constructor (NSCoder aDecoder, IMTLDevice device); + } + + [TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] + [DisableDefaultCtor] + [BaseType (typeof(MPSKernel))] + interface MPSImageCopyToMatrix { + [Export ("destinationMatrixOrigin", ArgumentSemantic.Assign)] + MTLOrigin DestinationMatrixOrigin { get; set; } + + [Export ("destinationMatrixBatchIndex")] + nuint DestinationMatrixBatchIndex { get; set; } + + [Export ("dataLayout")] + MPSDataLayout DataLayout { get; } + + [Export ("initWithDevice:dataLayout:")] + [DesignatedInitializer] + IntPtr Constructor (IMTLDevice device, MPSDataLayout dataLayout); + + [Export ("initWithCoder:device:")] + [DesignatedInitializer] + IntPtr Constructor (NSCoder aDecoder, IMTLDevice device); + + [Export ("encodeToCommandBuffer:sourceImage:destinationMatrix:")] + void EncodeToCommandBuffer (IMTLCommandBuffer commandBuffer, MPSImage sourceImage, MPSMatrix destinationMatrix); + } + + [TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] + [BaseType (typeof(MPSKernel))] + [DisableDefaultCtor] // There is a DesignatedInitializer, file a bug if needed. + interface MPSImageFindKeypoints { + [Export ("keypointRangeInfo")] + MPSImageKeypointRangeInfo KeypointRangeInfo { get; } + + [Export ("initWithDevice:info:")] + [DesignatedInitializer] + IntPtr Constructor (IMTLDevice device, MPSImageKeypointRangeInfo info); + + [Export ("initWithCoder:device:")] + [DesignatedInitializer] + IntPtr Constructor (NSCoder aDecoder, IMTLDevice device); + + [Export ("encodeToCommandBuffer:sourceTexture:regions:numberOfRegions:keypointCountBuffer:keypointCountBufferOffset:keypointDataBuffer:keypointDataBufferOffset:")] + void EncodeToCommandBuffer (IMTLCommandBuffer commandBuffer, IMTLTexture source, MTLRegion regions, nuint numberOfRegions, IMTLBuffer keypointCountBuffer, nuint keypointCountBufferOffset, IMTLBuffer keypointDataBuffer, nuint keypointDataBufferOffset); + } + + [TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] + [BaseType (typeof(MPSBinaryImageKernel))] + [DisableDefaultCtor] + interface MPSImageArithmetic { + [Export ("primaryScale")] + float PrimaryScale { get; set; } + + [Export ("secondaryScale")] + float SecondaryScale { get; set; } + + [Export ("bias")] + float Bias { get; set; } + + [Export ("primaryStrideInPixels", ArgumentSemantic.Assign)] + MTLSize PrimaryStrideInPixels { get; set; } + + [Export ("secondaryStrideInPixels", ArgumentSemantic.Assign)] + MTLSize SecondaryStrideInPixels { get; set; } + + //inlining ctor from base class + [Export ("initWithCoder:device:")] + [DesignatedInitializer] + IntPtr Constructor (NSCoder aDecoder, IMTLDevice device); + } + + [TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] + [BaseType (typeof(MPSImageArithmetic))] + [DisableDefaultCtor] + interface MPSImageAdd { + [Export ("initWithDevice:")] + [DesignatedInitializer] + IntPtr Constructor (IMTLDevice device); + } + + [TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] + [BaseType (typeof(MPSImageArithmetic))] + [DisableDefaultCtor] + interface MPSImageSubtract { + [Export ("initWithDevice:")] + [DesignatedInitializer] + IntPtr Constructor (IMTLDevice device); + } + + [TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] + [BaseType (typeof(MPSImageArithmetic))] + [DisableDefaultCtor] + interface MPSImageMultiply { + [Export ("initWithDevice:")] + [DesignatedInitializer] + IntPtr Constructor (IMTLDevice device); + } + + [TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] + [BaseType (typeof(MPSImageArithmetic))] + [DisableDefaultCtor] + interface MPSImageDivide { + [Export ("initWithDevice:")] + [DesignatedInitializer] + IntPtr Constructor (IMTLDevice device); + } + + [TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] + [BaseType (typeof(MPSUnaryImageKernel))] + [DisableDefaultCtor] + interface MPSImageScale { + [Export ("initWithDevice:")] + [DesignatedInitializer] + IntPtr Constructor (IMTLDevice device); + + [NullAllowed, Export ("scaleTransform", ArgumentSemantic.Assign)] + MPSScaleTransform ScaleTransform { get; set; } + + [Export ("initWithCoder:device:")] + [DesignatedInitializer] + IntPtr Constructor (NSCoder aDecoder, IMTLDevice device); + } + + [TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] + [BaseType (typeof(MPSImageScale))] + [DisableDefaultCtor] + interface MPSImageBilinearScale { + [Export ("initWithDevice:")] + [DesignatedInitializer] + IntPtr Constructor (IMTLDevice device); + + [Export ("initWithCoder:device:")] + [DesignatedInitializer] + IntPtr Constructor (NSCoder aDecoder, IMTLDevice device); + } + + [TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] + [BaseType (typeof(MPSUnaryImageKernel))] + [DisableDefaultCtor] + interface MPSImageStatisticsMinAndMax { + [Export ("clipRectSource", ArgumentSemantic.Assign)] + MTLRegion ClipRectSource { get; set; } + + [Export ("initWithDevice:")] + [DesignatedInitializer] + IntPtr Constructor (IMTLDevice device); + + [Export ("initWithCoder:device:")] + [DesignatedInitializer] + IntPtr Constructor (NSCoder aDecoder, IMTLDevice device); + } + + [TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] + [BaseType (typeof(MPSUnaryImageKernel))] + [DisableDefaultCtor] + interface MPSImageStatisticsMeanAndVariance { + [Export ("clipRectSource", ArgumentSemantic.Assign)] + MTLRegion ClipRectSource { get; set; } + + [Export ("initWithDevice:")] + [DesignatedInitializer] + IntPtr Constructor (IMTLDevice device); + + [Export ("initWithCoder:device:")] + [DesignatedInitializer] + IntPtr Constructor (NSCoder aDecoder, IMTLDevice device); + } + + [TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] + [BaseType (typeof(MPSUnaryImageKernel))] + [DisableDefaultCtor] + interface MPSImageStatisticsMean { + [Export ("clipRectSource", ArgumentSemantic.Assign)] + MTLRegion ClipRectSource { get; set; } + + [Export ("initWithDevice:")] + [DesignatedInitializer] + IntPtr Constructor (IMTLDevice device); + + [Export ("initWithCoder:device:")] + [DesignatedInitializer] + IntPtr Constructor (NSCoder aDecoder, IMTLDevice device); + } + + [TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] + [BaseType (typeof (NSObject))] + [DisableDefaultCtor] + interface MPSNNDefaultPadding : MPSNNPadding { + [Static] + [Export ("paddingWithMethod:")] + MPSNNDefaultPadding Create (MPSNNPaddingMethod method); + + [Static] + [Export ("paddingForTensorflowAveragePooling")] + MPSNNDefaultPadding CreatePaddingForTensorflowAveragePooling (); + } + + [TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] + [BaseType (typeof(MPSKernel), Name = "MPSCNNBinaryKernel")] + [DisableDefaultCtor] + interface MPSCnnBinaryKernel { + [Export ("initWithDevice:")] + [DesignatedInitializer] + IntPtr Constructor (IMTLDevice device); + + [Export ("primaryOffset", ArgumentSemantic.Assign)] + MPSOffset PrimaryOffset { get; set; } + + [Export ("secondaryOffset", ArgumentSemantic.Assign)] + MPSOffset SecondaryOffset { get; set; } + + [Export ("clipRect", ArgumentSemantic.Assign)] + MTLRegion ClipRect { get; set; } + + [Export ("destinationFeatureChannelOffset")] + nuint DestinationFeatureChannelOffset { get; set; } + + [Export ("primaryEdgeMode", ArgumentSemantic.Assign)] + MPSImageEdgeMode PrimaryEdgeMode { get; set; } + + [Export ("secondaryEdgeMode", ArgumentSemantic.Assign)] + MPSImageEdgeMode SecondaryEdgeMode { get; set; } + + [Export ("kernelWidth")] + nuint KernelWidth { get; } + + [Export ("kernelHeight")] + nuint KernelHeight { get; } + + [Export ("primaryStrideInPixelsX")] + nuint PrimaryStrideInPixelsX { get; } + + [Export ("primaryStrideInPixelsY")] + nuint PrimaryStrideInPixelsY { get; } + + [Export ("secondaryStrideInPixelsX")] + nuint SecondaryStrideInPixelsX { get; } + + [Export ("secondaryStrideInPixelsY")] + nuint SecondaryStrideInPixelsY { get; } + + [Export ("isBackwards")] + bool IsBackwards { get; } + + [Export ("padding", ArgumentSemantic.Retain)] + IMPSNNPadding Padding { get; set; } + + [Export ("destinationImageAllocator", ArgumentSemantic.Retain)] + IMPSImageAllocator DestinationImageAllocator { get; set; } + + [Export ("initWithCoder:device:")] + [DesignatedInitializer] + IntPtr Constructor (NSCoder aDecoder, IMTLDevice device); + + [Export ("encodeToCommandBuffer:primaryImage:secondaryImage:destinationImage:")] + void EncodeToCommandBuffer (IMTLCommandBuffer commandBuffer, MPSImage primaryImage, MPSImage secondaryImage, MPSImage destinationImage); + + [Export ("encodeToCommandBuffer:primaryImage:secondaryImage:")] + MPSImage EncodeToCommandBuffer (IMTLCommandBuffer commandBuffer, MPSImage primaryImage, MPSImage secondaryImage); + } + + [TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] + [BaseType (typeof(MPSCnnNeuron), Name = "MPSCNNNeuronPReLU")] + [DisableDefaultCtor] + interface MPSCnnNeuronPReLU { + [Export ("initWithDevice:a:count:")] + [Internal, Sealed] + IntPtr InitWithDevice (IMTLDevice device, IntPtr /* float* */ a, nuint count); + + // inlining ctor from base class + [Export ("initWithCoder:device:")] + [DesignatedInitializer] + IntPtr Constructor (NSCoder aDecoder, IMTLDevice device); + } + + [TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] + [BaseType (typeof(MPSCnnNeuron), Name = "MPSCNNNeuronHardSigmoid")] + [DisableDefaultCtor] + interface MPSCnnNeuronHardSigmoid { + [Export ("a")] + float A { get; } + + [Export ("b")] + float B { get; } + + [Export ("initWithDevice:a:b:")] + [DesignatedInitializer] + IntPtr Constructor (IMTLDevice device, float a, float b); + } + + [TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] + [BaseType (typeof(MPSCnnNeuron), Name = "MPSCNNNeuronSoftPlus")] + [DisableDefaultCtor] + interface MPSCnnNeuronSoftPlus { + [Export ("a")] + float A { get; } + + [Export ("b")] + float B { get; } + + [Export ("initWithDevice:a:b:")] + [DesignatedInitializer] + IntPtr Constructor (IMTLDevice device, float a, float b); + } + + [TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] + [BaseType (typeof(MPSCnnNeuron), Name = "MPSCNNNeuronSoftSign")] + [DisableDefaultCtor] + interface MPSCnnNeuronSoftSign { + [Export ("initWithDevice:")] + [DesignatedInitializer] + IntPtr Constructor (IMTLDevice device); + } + + [TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] + [BaseType (typeof(MPSCnnNeuron), Name = "MPSCNNNeuronELU")] + [DisableDefaultCtor] + interface MPSCnnNeuronElu { + [Export ("a")] + float A { get; } + + [Export ("initWithDevice:a:")] + [DesignatedInitializer] + IntPtr Constructor (IMTLDevice device, float a); + } + + [TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] + [BaseType (typeof(MPSCnnNeuron), Name = "MPSCNNNeuronReLUN")] + [DisableDefaultCtor] + interface MPSCnnNeuronReLun { + [Export ("a")] + float A { get; } + + [Export ("b")] + float B { get; } + + [Export ("initWithDevice:a:b:")] + [DesignatedInitializer] + IntPtr Constructor (IMTLDevice device, float a, float b); + } + + [TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] + [BaseType (typeof(MPSCnnConvolutionDescriptor), Name = "MPSCNNSubPixelConvolutionDescriptor")] + [DisableDefaultCtor] + interface MPSCnnSubPixelConvolutionDescriptor { + [Export ("subPixelScaleFactor")] + nuint SubPixelScaleFactor { get; set; } + } + + [TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] + [BaseType (typeof(MPSCnnConvolutionDescriptor), Name = "MPSCNNDepthWiseConvolutionDescriptor")] + [DisableDefaultCtor] + interface MPSCnnDepthWiseConvolutionDescriptor { + [Export ("channelMultiplier")] + nuint ChannelMultiplier { get; } + } + + [TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] + [BaseType (typeof(MPSState), Name = "MPSCNNConvolutionState")] + [DisableDefaultCtor] + interface MPSCnnConvolutionState : MPSImageSizeEncodingState { + [Export ("kernelWidth")] + nuint KernelWidth { get; } + + [Export ("kernelHeight")] + nuint KernelHeight { get; } + + [Export ("sourceOffset")] + MPSOffset SourceOffset { get; } + } + + [TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] + [BaseType (typeof(MPSCnnKernel), Name = "MPSCNNConvolutionTranspose")] + [DisableDefaultCtor] // There is a DesignatedInitializer, file a bug if needed. + interface MPSCnnConvolutionTranspose { + [Export ("inputFeatureChannels")] + nuint InputFeatureChannels { get; } + + [Export ("outputFeatureChannels")] + nuint OutputFeatureChannels { get; } + + [Export ("kernelOffsetX")] + nint KernelOffsetX { get; set; } + + [Export ("kernelOffsetY")] + nint KernelOffsetY { get; set; } + + [Export ("groups")] + nuint Groups { get; } + + [Export ("initWithDevice:weights:")] + [DesignatedInitializer] + IntPtr Constructor (IMTLDevice device, IMPSCnnConvolutionDataSource weights); + + [Export ("initWithCoder:device:")] + [DesignatedInitializer] + IntPtr Constructor (NSCoder aDecoder, IMTLDevice device); + + [Export ("encodeToCommandBuffer:sourceImage:convolutionState:")] + MPSImage EncodeToCommandBuffer (IMTLCommandBuffer commandBuffer, MPSImage sourceImage, [NullAllowed]MPSCnnConvolutionState convolutionState); + } + + [TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] + [BaseType (typeof(MPSCnnKernel), Name = "MPSCNNBinaryConvolution")] + [DisableDefaultCtor] + interface MPSCnnBinaryConvolution { + [Export ("inputFeatureChannels")] + nuint InputFeatureChannels { get; } + + [Export ("outputFeatureChannels")] + nuint OutputFeatureChannels { get; } + + [Export ("initWithDevice:convolutionData:scaleValue:type:flags:")] + IntPtr Constructor (IMTLDevice device, IMPSCnnConvolutionDataSource convolutionData, float scaleValue, MPSCnnBinaryConvolutionType type, MPSCnnBinaryConvolutionFlags flags); + + [Internal, Sealed, Export ("initWithDevice:convolutionData:outputBiasTerms:outputScaleTerms:inputBiasTerms:inputScaleTerms:type:flags:")] + IntPtr InitWithDevice (IMTLDevice device, IMPSCnnConvolutionDataSource convolutionData, [NullAllowed] IntPtr /* float* */ outputBiasTerms, [NullAllowed] IntPtr /* float* */ outputScaleTerms, [NullAllowed] IntPtr /* float* */ inputBiasTerms, [NullAllowed] IntPtr /* float* */ inputScaleTerms,MPSCnnBinaryConvolutionType type, MPSCnnBinaryConvolutionFlags flags); + + [Export ("initWithCoder:device:")] + [DesignatedInitializer] + IntPtr Constructor (NSCoder aDecoder, IMTLDevice device); + } + + [TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] + [BaseType (typeof (MPSCnnBinaryConvolution), Name = "MPSCNNBinaryFullyConnected")] + [DisableDefaultCtor] + interface MPSCnnBinaryFullyConnected { + [Export ("initWithDevice:convolutionData:scaleValue:type:flags:")] + IntPtr Constructor (IMTLDevice device, IMPSCnnConvolutionDataSource convolutionData, float scaleValue, MPSCnnBinaryConvolutionType type, MPSCnnBinaryConvolutionFlags flags); + + [Internal, Sealed, Export ("initWithDevice:convolutionData:outputBiasTerms:outputScaleTerms:inputBiasTerms:inputScaleTerms:type:flags:")] + IntPtr InitWithDevice (IMTLDevice device, IMPSCnnConvolutionDataSource convolutionData, [NullAllowed] IntPtr /* float* */ outputBiasTerms, [NullAllowed] IntPtr /* float* */ outputScaleTerms, [NullAllowed] IntPtr /* float* */ inputBiasTerms, [NullAllowed] IntPtr /* float* */ inputScaleTerms, MPSCnnBinaryConvolutionType type, MPSCnnBinaryConvolutionFlags flags); + + [Export ("initWithCoder:device:")] + [DesignatedInitializer] + IntPtr Constructor (NSCoder aDecoder, IMTLDevice device); + } + + [TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] + [BaseType (typeof(MPSCnnPooling), Name = "MPSCNNPoolingL2Norm")] + [DisableDefaultCtor] // failed assertion. + interface MPSCnnPoolingL2Norm { + [Export ("initWithDevice:kernelWidth:kernelHeight:strideInPixelsX:strideInPixelsY:")] + [DesignatedInitializer] + IntPtr Constructor (IMTLDevice device, nuint kernelWidth, nuint kernelHeight, nuint strideInPixelsX, nuint strideInPixelsY); + + [Export ("initWithCoder:device:")] + [DesignatedInitializer] + IntPtr Constructor (NSCoder aDecoder, IMTLDevice device); + } + + [TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] + [BaseType (typeof(MPSCnnPooling), Name = "MPSCNNDilatedPoolingMax")] + [DisableDefaultCtor] // failed assertion. + interface MPSCnnDilatedPoolingMax { + [Export ("dilationRateX")] + nuint DilationRateX { get; } + + [Export ("dilationRateY")] + nuint DilationRateY { get; } + + [Export ("initWithDevice:kernelWidth:kernelHeight:dilationRateX:dilationRateY:strideInPixelsX:strideInPixelsY:")] + [DesignatedInitializer] + IntPtr Constructor (IMTLDevice device, nuint kernelWidth, nuint kernelHeight, nuint dilationRateX, nuint dilationRateY, nuint strideInPixelsX, nuint strideInPixelsY); + + [Export ("initWithCoder:device:")] + [DesignatedInitializer] + IntPtr Constructor (NSCoder aDecoder, IMTLDevice device); + } + + [TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] + [BaseType (typeof(MPSCnnKernel), Name = "MPSCNNUpsampling")] + [DisableDefaultCtor] // failed assertion + interface MPSCnnUpsampling { + [Export ("scaleFactorX")] + double ScaleFactorX { get; } + + [Export ("scaleFactorY")] + double ScaleFactorY { get; } + + // inlining ctor from base class + [Export ("initWithCoder:device:")] + [DesignatedInitializer] + IntPtr Constructor (NSCoder aDecoder, IMTLDevice device); + } + + [TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] + [BaseType (typeof (MPSCnnUpsampling), Name = "MPSCNNUpsamplingNearest")] + [DisableDefaultCtor] // failed assertion. + interface MPSCnnUpsamplingNearest { + [Export ("initWithDevice:integerScaleFactorX:integerScaleFactorY:")] + [DesignatedInitializer] + IntPtr Constructor (IMTLDevice device, nuint integerScaleFactorX, nuint integerScaleFactorY); + } + + [TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] + [BaseType (typeof (MPSCnnUpsampling), Name = "MPSCNNUpsamplingBilinear")] + [DisableDefaultCtor] // failed assertion. + interface MPSCnnUpsamplingBilinear { + [Export ("initWithDevice:integerScaleFactorX:integerScaleFactorY:")] + [DesignatedInitializer] + IntPtr Constructor (IMTLDevice device, nuint integerScaleFactorX, nuint integerScaleFactorY); + } + + [TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] + [BaseType (typeof (NSObject), Name = "MPSRNNDescriptor")] + interface MPSRnnDescriptor { + [Export ("inputFeatureChannels")] + nuint InputFeatureChannels { get; set; } + + [Export ("outputFeatureChannels")] + nuint OutputFeatureChannels { get; set; } + + [Export ("useLayerInputUnitTransformMode")] + bool UseLayerInputUnitTransformMode { get; set; } + + [Export ("useFloat32Weights")] + bool UseFloat32Weights { get; set; } + + [Export ("layerSequenceDirection", ArgumentSemantic.Assign)] + MPSRnnSequenceDirection LayerSequenceDirection { get; set; } + } + + [TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] + [BaseType (typeof(MPSRnnDescriptor), Name = "MPSRNNSingleGateDescriptor")] + interface MPSRnnSingleGateDescriptor { + [NullAllowed, Export ("inputWeights", ArgumentSemantic.Retain)] + IMPSCnnConvolutionDataSource InputWeights { get; set; } + + [NullAllowed, Export ("recurrentWeights", ArgumentSemantic.Retain)] + IMPSCnnConvolutionDataSource RecurrentWeights { get; set; } + + [Static] + [Export ("createRNNSingleGateDescriptorWithInputFeatureChannels:outputFeatureChannels:")] + MPSRnnSingleGateDescriptor Create (nuint inputFeatureChannels, nuint outputFeatureChannels); + } + + [TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] + [BaseType (typeof(MPSRnnDescriptor))] + interface MPSGRUDescriptor { + [NullAllowed, Export ("inputGateInputWeights", ArgumentSemantic.Retain)] + IMPSCnnConvolutionDataSource InputGateInputWeights { get; set; } + + [NullAllowed, Export ("inputGateRecurrentWeights", ArgumentSemantic.Retain)] + IMPSCnnConvolutionDataSource InputGateRecurrentWeights { get; set; } + + [NullAllowed, Export ("recurrentGateInputWeights", ArgumentSemantic.Retain)] + IMPSCnnConvolutionDataSource RecurrentGateInputWeights { get; set; } + + [NullAllowed, Export ("recurrentGateRecurrentWeights", ArgumentSemantic.Retain)] + IMPSCnnConvolutionDataSource RecurrentGateRecurrentWeights { get; set; } + + [NullAllowed, Export ("outputGateInputWeights", ArgumentSemantic.Retain)] + IMPSCnnConvolutionDataSource OutputGateInputWeights { get; set; } + + [NullAllowed, Export ("outputGateRecurrentWeights", ArgumentSemantic.Retain)] + IMPSCnnConvolutionDataSource OutputGateRecurrentWeights { get; set; } + + [NullAllowed, Export ("outputGateInputGateWeights", ArgumentSemantic.Retain)] + IMPSCnnConvolutionDataSource OutputGateInputGateWeights { get; set; } + + [Export ("gatePnormValue")] + float GatePnormValue { get; set; } + + [Export ("flipOutputGates")] + bool FlipOutputGates { get; set; } + + [Static] + [Export ("createGRUDescriptorWithInputFeatureChannels:outputFeatureChannels:")] + MPSGRUDescriptor Create (nuint inputFeatureChannels, nuint outputFeatureChannels); + } + + [TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] + [BaseType (typeof(MPSRnnDescriptor))] + interface MPSLSTMDescriptor { + [Export ("memoryWeightsAreDiagonal")] + bool AreMemoryWeightsDiagonal { get; set; } + + [NullAllowed, Export ("inputGateInputWeights", ArgumentSemantic.Retain)] + IMPSCnnConvolutionDataSource InputGateInputWeights { get; set; } + + [NullAllowed, Export ("inputGateRecurrentWeights", ArgumentSemantic.Retain)] + IMPSCnnConvolutionDataSource InputGateRecurrentWeights { get; set; } + + [NullAllowed, Export ("inputGateMemoryWeights", ArgumentSemantic.Retain)] + IMPSCnnConvolutionDataSource InputGateMemoryWeights { get; set; } + + [NullAllowed, Export ("forgetGateInputWeights", ArgumentSemantic.Retain)] + IMPSCnnConvolutionDataSource ForgetGateInputWeights { get; set; } + + [NullAllowed, Export ("forgetGateRecurrentWeights", ArgumentSemantic.Retain)] + IMPSCnnConvolutionDataSource ForgetGateRecurrentWeights { get; set; } + + [NullAllowed, Export ("forgetGateMemoryWeights", ArgumentSemantic.Retain)] + IMPSCnnConvolutionDataSource ForgetGateMemoryWeights { get; set; } + + [NullAllowed, Export ("outputGateInputWeights", ArgumentSemantic.Retain)] + IMPSCnnConvolutionDataSource OutputGateInputWeights { get; set; } + + [NullAllowed, Export ("outputGateRecurrentWeights", ArgumentSemantic.Retain)] + IMPSCnnConvolutionDataSource OutputGateRecurrentWeights { get; set; } + + [NullAllowed, Export ("outputGateMemoryWeights", ArgumentSemantic.Retain)] + IMPSCnnConvolutionDataSource OutputGateMemoryWeights { get; set; } + + [NullAllowed, Export ("cellGateInputWeights", ArgumentSemantic.Retain)] + IMPSCnnConvolutionDataSource CellGateInputWeights { get; set; } + + [NullAllowed, Export ("cellGateRecurrentWeights", ArgumentSemantic.Retain)] + IMPSCnnConvolutionDataSource CellGateRecurrentWeights { get; set; } + + [NullAllowed, Export ("cellGateMemoryWeights", ArgumentSemantic.Retain)] + IMPSCnnConvolutionDataSource CellGateMemoryWeights { get; set; } + + [Export ("cellToOutputNeuronType", ArgumentSemantic.Assign)] + MPSCnnNeuronType CellToOutputNeuronType { get; set; } + + [Export ("cellToOutputNeuronParamA")] + float CellToOutputNeuronParamA { get; set; } + + [Export ("cellToOutputNeuronParamB")] + float CellToOutputNeuronParamB { get; set; } + + [TV (11,2), Mac (10,13,2, onlyOn64: true), iOS (11,2)] + [Export ("cellToOutputNeuronParamC")] + float CellToOutputNeuronParamC { get; set; } + + [Static] + [Export ("createLSTMDescriptorWithInputFeatureChannels:outputFeatureChannels:")] + MPSLSTMDescriptor Create (nuint inputFeatureChannels, nuint outputFeatureChannels); + } + + [TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] + [BaseType (typeof(MPSState), Name = "MPSRNNRecurrentImageState")] + [DisableDefaultCtor] // 'init' is unavailable + interface MPSRnnRecurrentImageState { + [Export ("getRecurrentOutputImageForLayerIndex:")] + [return: NullAllowed] + MPSImage GetRecurrentOutputImage (nuint layerIndex); + + [Export ("getMemoryCellImageForLayerIndex:")] + [return: NullAllowed] + MPSImage GetMemoryCellImage (nuint layerIndex); + } + + [TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] + [BaseType (typeof(MPSCnnKernel), Name = "MPSRNNImageInferenceLayer")] + [DisableDefaultCtor] // There is a DesignatedInitializer, file a bug if needed. + interface MPSRnnImageInferenceLayer { + [Export ("inputFeatureChannels")] + nuint InputFeatureChannels { get; } + + [Export ("outputFeatureChannels")] + nuint OutputFeatureChannels { get; } + + [Export ("numberOfLayers")] + nuint NumberOfLayers { get; } + + [Export ("recurrentOutputIsTemporary")] + bool IsRecurrentOutputTemporary { get; set; } + + [Export ("storeAllIntermediateStates")] + bool StoreAllIntermediateStates { get; set; } + + [Export ("bidirectionalCombineMode", ArgumentSemantic.Assign)] + MPSRnnBidirectionalCombineMode BidirectionalCombineMode { get; set; } + + [Export ("initWithDevice:rnnDescriptor:")] + [DesignatedInitializer] + IntPtr Constructor (IMTLDevice device, MPSRnnDescriptor rnnDescriptor); + + [Export ("initWithDevice:rnnDescriptors:")] + [DesignatedInitializer] + IntPtr Constructor (IMTLDevice device, MPSRnnDescriptor[] rnnDescriptors); + + [Export ("encodeSequenceToCommandBuffer:sourceImages:destinationImages:recurrentInputState:recurrentOutputStates:")] + void EncodeSequence (IMTLCommandBuffer commandBuffer, MPSImage[] sourceImages, MPSImage[] destinationImages, [NullAllowed] MPSRnnRecurrentImageState recurrentInputState, [NullAllowed] NSMutableArray recurrentOutputStates); + + [Export ("encodeBidirectionalSequenceToCommandBuffer:sourceSequence:destinationForwardImages:destinationBackwardImages:")] + void EncodeBidirectionalSequence (IMTLCommandBuffer commandBuffer, MPSImage[] sourceSequence, MPSImage[] destinationForwardImages, [NullAllowed] MPSImage[] destinationBackwardImages); + + [Export ("initWithCoder:device:")] + [DesignatedInitializer] + IntPtr Constructor (NSCoder aDecoder, IMTLDevice device); + + [Export ("copyWithZone:device:")] + [return: Release ()] + MPSRnnImageInferenceLayer Copy ([NullAllowed] NSZone zone, [NullAllowed] IMTLDevice device); + } + + [TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] + [BaseType (typeof(MPSState), Name = "MPSRNNRecurrentMatrixState")] + [DisableDefaultCtor] // 'init' is unavailable + interface MPSRnnRecurrentMatrixState { + [Export ("getRecurrentOutputMatrixForLayerIndex:")] + [return: NullAllowed] + MPSMatrix GetRecurrentOutputMatrix (nuint layerIndex); + + [Export ("getMemoryCellMatrixForLayerIndex:")] + [return: NullAllowed] + MPSMatrix GetMemoryCellMatrix (nuint layerIndex); + } + + [TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] + [BaseType (typeof(MPSKernel), Name = "MPSRNNMatrixInferenceLayer")] + [DisableDefaultCtor] // There is a DesignatedInitializer, file a bug if needed. + interface MPSRnnMatrixInferenceLayer { + [Export ("inputFeatureChannels")] + nuint InputFeatureChannels { get; } + + [Export ("outputFeatureChannels")] + nuint OutputFeatureChannels { get; } + + [Export ("numberOfLayers")] + nuint NumberOfLayers { get; } + + [Export ("recurrentOutputIsTemporary")] + bool IsRecurrentOutputTemporary { get; set; } + + [Export ("storeAllIntermediateStates")] + bool StoreAllIntermediateStates { get; set; } + + [Export ("bidirectionalCombineMode", ArgumentSemantic.Assign)] + MPSRnnBidirectionalCombineMode BidirectionalCombineMode { get; set; } + + [Export ("initWithDevice:rnnDescriptor:")] + [DesignatedInitializer] + IntPtr Constructor (IMTLDevice device, MPSRnnDescriptor rnnDescriptor); + + [Export ("initWithDevice:rnnDescriptors:")] + [DesignatedInitializer] + IntPtr Constructor (IMTLDevice device, MPSRnnDescriptor[] rnnDescriptors); + + [Export ("encodeSequenceToCommandBuffer:sourceMatrices:destinationMatrices:recurrentInputState:recurrentOutputStates:")] + void EncodeSequence (IMTLCommandBuffer commandBuffer, MPSMatrix[] sourceMatrices, MPSMatrix[] destinationMatrices, [NullAllowed] MPSRnnRecurrentMatrixState recurrentInputState, [NullAllowed] NSMutableArray recurrentOutputStates); + + [Export ("encodeBidirectionalSequenceToCommandBuffer:sourceSequence:destinationForwardMatrices:destinationBackwardMatrices:")] + void EncodeBidirectionalSequence (IMTLCommandBuffer commandBuffer, MPSMatrix[] sourceSequence, MPSMatrix[] destinationForwardMatrices, [NullAllowed] MPSMatrix[] destinationBackwardMatrices); + + [Export ("initWithCoder:device:")] + [DesignatedInitializer] + IntPtr Constructor (NSCoder aDecoder, IMTLDevice device); + + [Export ("copyWithZone:device:")] + [return: Release ()] + MPSRnnMatrixInferenceLayer Copy ([NullAllowed] NSZone zone, [NullAllowed] IMTLDevice device); + } + + [TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] + [BaseType (typeof (NSObject))] + [DisableDefaultCtor] + interface MPSNNImageNode { + [Export ("initWithHandle:")] + [DesignatedInitializer] + IntPtr Constructor ([NullAllowed] IMPSHandle handle); + + [Static] + [Export ("nodeWithHandle:")] + MPSNNImageNode Create ([NullAllowed] IMPSHandle handle); + + [Static] + [Export ("exportedNodeWithHandle:")] + MPSNNImageNode GetExportedNode ([NullAllowed] IMPSHandle handle); + + [NullAllowed, Export ("handle", ArgumentSemantic.Retain)] + IMPSHandle MPSHandle { get; set; } + + [Export ("format", ArgumentSemantic.Assign)] + MPSImageFeatureChannelFormat Format { get; set; } + + [Export ("imageAllocator", ArgumentSemantic.Retain)] + IMPSImageAllocator ImageAllocator { get; set; } + + [Export ("exportFromGraph")] + bool ExportFromGraph { get; set; } + } + + [TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] + [BaseType (typeof (NSObject))] + [DisableDefaultCtor] + interface MPSNNStateNode { + [NullAllowed, Export ("handle", ArgumentSemantic.Retain)] + IMPSHandle MPSHandle { get; set; } + } + + [TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] + [BaseType (typeof (NSObject))] + [DisableDefaultCtor] + interface MPSNNFilterNode { + [Export ("resultImage")] + MPSNNImageNode ResultImage { get; } + + [NullAllowed, Export ("resultState")] + MPSNNStateNode ResultState { get; } + + [NullAllowed, Export ("resultStates")] + MPSNNStateNode[] ResultStates { get; } + + [Export ("paddingPolicy", ArgumentSemantic.Retain)] + IMPSNNPadding PaddingPolicy { get; set; } + + [NullAllowed, Export ("label")] + string Label { get; set; } + } + + [TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] + [BaseType (typeof(MPSNNFilterNode), Name = "MPSCNNConvolutionNode")] + [DisableDefaultCtor] // 'init' is unavailable + interface MPSCnnConvolutionNode { + [Static] + [Export ("nodeWithSource:weights:")] + MPSCnnConvolutionNode Create (MPSNNImageNode sourceNode, IMPSCnnConvolutionDataSource weights); + + [Export ("initWithSource:weights:")] + IntPtr Constructor (MPSNNImageNode sourceNode, IMPSCnnConvolutionDataSource weights); + + [NullAllowed, Export ("convolutionState")] + MPSCnnConvolutionStateNode ConvolutionState { get; } + } + + [TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] + [BaseType (typeof (MPSCnnConvolutionNode), Name = "MPSCNNFullyConnectedNode")] + [DisableDefaultCtor] // 'init' is unavailable + interface MPSCnnFullyConnectedNode { + [Static] + [Export ("nodeWithSource:weights:")] + MPSCnnFullyConnectedNode Create (MPSNNImageNode sourceNode, IMPSCnnConvolutionDataSource weights); + + [Export ("initWithSource:weights:")] + IntPtr Constructor (MPSNNImageNode sourceNode, IMPSCnnConvolutionDataSource weights); + } + + [TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] + [BaseType (typeof (MPSCnnConvolutionNode), Name = "MPSCNNBinaryConvolutionNode")] + [DisableDefaultCtor] // 'init' is unavailable + interface MPSCnnBinaryConvolutionNode { + [Static] + [Export ("nodeWithSource:weights:scaleValue:type:flags:")] + MPSCnnBinaryConvolutionNode Create (MPSNNImageNode sourceNode, IMPSCnnConvolutionDataSource weights, float scaleValue,MPSCnnBinaryConvolutionType type,MPSCnnBinaryConvolutionFlags flags); + + [Export ("initWithSource:weights:scaleValue:type:flags:")] + IntPtr Constructor (MPSNNImageNode sourceNode, IMPSCnnConvolutionDataSource weights, float scaleValue,MPSCnnBinaryConvolutionType type,MPSCnnBinaryConvolutionFlags flags); + } + + [TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] + [BaseType (typeof (MPSCnnBinaryConvolutionNode), Name = "MPSCNNBinaryFullyConnectedNode")] + [DisableDefaultCtor] // 'init' is unavailable + interface MPSCnnBinaryFullyConnectedNode { + [Static] + [Export ("nodeWithSource:weights:scaleValue:type:flags:")] + MPSCnnBinaryFullyConnectedNode Create (MPSNNImageNode sourceNode, IMPSCnnConvolutionDataSource weights, float scaleValue,MPSCnnBinaryConvolutionType type,MPSCnnBinaryConvolutionFlags flags); + + [Export ("initWithSource:weights:scaleValue:type:flags:")] + IntPtr Constructor (MPSNNImageNode sourceNode, IMPSCnnConvolutionDataSource weights, float scaleValue,MPSCnnBinaryConvolutionType type,MPSCnnBinaryConvolutionFlags flags); + } + + [TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] + [BaseType (typeof (MPSCnnConvolutionNode), Name = "MPSCNNConvolutionTransposeNode")] + [DisableDefaultCtor] // 'init' is unavailable + interface MPSCnnConvolutionTransposeNode { + [Static] + [Export ("nodeWithSource:convolutionState:weights:")] + MPSCnnConvolutionTransposeNode Create (MPSNNImageNode sourceNode, [NullAllowed]MPSCnnConvolutionStateNode convolutionState, IMPSCnnConvolutionDataSource weights); + + [Export ("initWithSource:convolutionState:weights:")] + IntPtr Constructor (MPSNNImageNode sourceNode, [NullAllowed]MPSCnnConvolutionStateNode convolutionState, IMPSCnnConvolutionDataSource weights); + } + + [TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] + [BaseType (typeof(MPSNNFilterNode), Name = "MPSCNNNeuronNode")] + [DisableDefaultCtor] + interface MPSCnnNeuronNode { + [Export ("a")] + float A { get; } + + [Export ("b")] + float B { get; } + + [TV (11,2), iOS (11,2), Mac (10,13,2, onlyOn64: true)] + [Export ("c")] + float C { get; } + } + + [TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] + [BaseType (typeof (MPSCnnNeuronNode), Name = "MPSCNNNeuronAbsoluteNode")] + [DisableDefaultCtor] // 'init' is unavailable + interface MPSCnnNeuronAbsoluteNode { + [Static] + [Export ("nodeWithSource:")] + MPSCnnNeuronAbsoluteNode Create (MPSNNImageNode sourceNode); + + [Export ("initWithSource:")] + IntPtr Constructor (MPSNNImageNode sourceNode); + } + + [TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] + [BaseType (typeof (MPSCnnNeuronNode), Name = "MPSCNNNeuronELUNode")] + [DisableDefaultCtor] // 'init' is unavailable + interface MPSCnnNeuronEluNode { + [Static] + [Export ("nodeWithSource:a:")] + MPSCnnNeuronEluNode Create (MPSNNImageNode sourceNode, float a); + + [Static] + [Export ("nodeWithSource:")] + MPSCnnNeuronEluNode Create (MPSNNImageNode sourceNode); + + [Export ("initWithSource:")] + IntPtr Constructor (MPSNNImageNode sourceNode); + + [Export ("initWithSource:a:")] + IntPtr Constructor (MPSNNImageNode sourceNode, float a); + } + + [TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] + [BaseType (typeof (MPSCnnNeuronNode), Name = "MPSCNNNeuronReLUNNode")] + [DisableDefaultCtor] // 'init' is unavailable + interface MPSCnnNeuronReLunNode { + [Static] + [Export ("nodeWithSource:a:b:")] + MPSCnnNeuronReLunNode Create (MPSNNImageNode sourceNode, float a, float b); + + [Export ("initWithSource:a:b:")] + IntPtr Constructor (MPSNNImageNode sourceNode, float a, float b); + + [Static] + [Export ("nodeWithSource:")] + MPSCnnNeuronReLunNode Create (MPSNNImageNode sourceNode); + + [Export ("initWithSource:")] + IntPtr Constructor (MPSNNImageNode sourceNode); + } + + [TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] + [BaseType (typeof (MPSCnnNeuronNode), Name = "MPSCNNNeuronLinearNode")] + [DisableDefaultCtor] // 'init' is unavailable + interface MPSCnnNeuronLinearNode { + [Static] + [Export ("nodeWithSource:a:b:")] + MPSCnnNeuronLinearNode Create (MPSNNImageNode sourceNode, float a, float b); + + [Export ("initWithSource:a:b:")] + IntPtr Constructor (MPSNNImageNode sourceNode, float a, float b); + + [Static] + [Export ("nodeWithSource:")] + MPSCnnNeuronLinearNode Create (MPSNNImageNode sourceNode); + + [Export ("initWithSource:")] + IntPtr Constructor (MPSNNImageNode sourceNode); + } + + [TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] + [BaseType (typeof (MPSCnnNeuronNode), Name = "MPSCNNNeuronReLUNode")] + [DisableDefaultCtor] // 'init' is unavailable + interface MPSCnnNeuronReLUNode { + [Static] + [Export ("nodeWithSource:a:")] + MPSCnnNeuronReLUNode Create (MPSNNImageNode sourceNode, float a); + + [Static] + [Export ("nodeWithSource:")] + MPSCnnNeuronReLUNode Create (MPSNNImageNode sourceNode); + + [Export ("initWithSource:")] + IntPtr Constructor (MPSNNImageNode sourceNode); + + [Export ("initWithSource:a:")] + IntPtr Constructor (MPSNNImageNode sourceNode, float a); + } + + [TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] + [BaseType (typeof (MPSCnnNeuronNode), Name = "MPSCNNNeuronSigmoidNode")] + [DisableDefaultCtor] // 'init' is unavailable + interface MPSCnnNeuronSigmoidNode { + [Static] + [Export ("nodeWithSource:")] + MPSCnnNeuronSigmoidNode Create (MPSNNImageNode sourceNode); + + [Export ("initWithSource:")] + IntPtr Constructor (MPSNNImageNode sourceNode); + } + + [TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] + [BaseType (typeof (MPSCnnNeuronNode), Name = "MPSCNNNeuronHardSigmoidNode")] + [DisableDefaultCtor] // 'init' is unavailable + interface MPSCnnNeuronHardSigmoidNode { + [Static] + [Export ("nodeWithSource:a:b:")] + MPSCnnNeuronHardSigmoidNode Create (MPSNNImageNode sourceNode, float a, float b); + + [Export ("initWithSource:a:b:")] + IntPtr Constructor (MPSNNImageNode sourceNode, float a, float b); + + [Static] + [Export ("nodeWithSource:")] + MPSCnnNeuronHardSigmoidNode Create (MPSNNImageNode sourceNode); + + [Export ("initWithSource:")] + IntPtr Constructor (MPSNNImageNode sourceNode); + } + + [TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] + [BaseType (typeof (MPSCnnNeuronNode), Name = "MPSCNNNeuronSoftPlusNode")] + [DisableDefaultCtor] // 'init' is unavailable + interface MPSCnnNeuronSoftPlusNode { + [Static] + [Export ("nodeWithSource:a:b:")] + MPSCnnNeuronSoftPlusNode Create (MPSNNImageNode sourceNode, float a, float b); + + [Export ("initWithSource:a:b:")] + IntPtr Constructor (MPSNNImageNode sourceNode, float a, float b); + + [Static] + [Export ("nodeWithSource:")] + MPSCnnNeuronSoftPlusNode Create (MPSNNImageNode sourceNode); + + [Export ("initWithSource:")] + IntPtr Constructor (MPSNNImageNode sourceNode); + } + + [TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] + [BaseType (typeof (MPSCnnNeuronNode), Name = "MPSCNNNeuronSoftSignNode")] + [DisableDefaultCtor] // 'init' is unavailable + interface MPSCnnNeuronSoftSignNode { + [Static] + [Export ("nodeWithSource:")] + MPSCnnNeuronSoftSignNode Create (MPSNNImageNode sourceNode); + + [Export ("initWithSource:")] + IntPtr Constructor (MPSNNImageNode sourceNode); + } + + [TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] + [BaseType (typeof (MPSCnnNeuronNode), Name = "MPSCNNNeuronTanHNode")] + [DisableDefaultCtor] // 'init' is unavailable + interface MPSCnnNeuronTanHNode { + [Static] + [Export ("nodeWithSource:a:b:")] + MPSCnnNeuronTanHNode Create (MPSNNImageNode sourceNode, float a, float b); + + [Export ("initWithSource:a:b:")] + IntPtr Constructor (MPSNNImageNode sourceNode, float a, float b); + + [Static] + [Export ("nodeWithSource:")] + MPSCnnNeuronTanHNode Create (MPSNNImageNode sourceNode); + + [Export ("initWithSource:")] + IntPtr Constructor (MPSNNImageNode sourceNode); + } + + [TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] + [BaseType (typeof (MPSCnnNeuronNode), Name = "MPSCNNNeuronPReLUNode")] + [DisableDefaultCtor] // 'init' is unavailable + interface MPSCnnNeuronPReLUNode { + [Static] + [Export ("nodeWithSource:aData:")] + MPSCnnNeuronPReLUNode Create (MPSNNImageNode sourceNode, NSData aData); + + [Export ("initWithSource:aData:")] + IntPtr Constructor (MPSNNImageNode sourceNode, NSData aData); + } + + [TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] + [BaseType (typeof(MPSNNFilterNode), Name = "MPSCNNPoolingNode")] + [DisableDefaultCtor] // 'init' is unavailable + interface MPSCnnPoolingNode { + [Static] + [Export ("nodeWithSource:filterSize:")] + MPSCnnPoolingNode Create (MPSNNImageNode sourceNode, nuint size); + + [Static] + [Export ("nodeWithSource:filterSize:stride:")] + MPSCnnPoolingNode Create (MPSNNImageNode sourceNode, nuint size, nuint stride); + + [Export ("initWithSource:kernelWidth:kernelHeight:strideInPixelsX:strideInPixelsY:")] + IntPtr Constructor (MPSNNImageNode sourceNode, nuint kernelWidth, nuint kernelHeight, nuint strideInPixelsX, nuint strideInPixelsY); + + [Export ("initWithSource:filterSize:stride:")] + IntPtr Constructor (MPSNNImageNode sourceNode, nuint size, nuint stride); + + [Export ("initWithSource:filterSize:")] + IntPtr Constructor (MPSNNImageNode sourceNode, nuint size); + } + + [TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] + [BaseType (typeof(MPSNNFilterNode), Name = "MPSCNNDilatedPoolingMaxNode")] + [DisableDefaultCtor] // 'init' is unavailable + interface MPSCnnDilatedPoolingMaxNode { + [Export ("dilationRateX")] + nuint DilationRateX { get; } + + [Export ("dilationRateY")] + nuint DilationRateY { get; } + + [Static] + [Export ("nodeWithSource:filterSize:")] + MPSCnnDilatedPoolingMaxNode Create (MPSNNImageNode sourceNode, nuint size); + + [Static] + [Export ("nodeWithSource:filterSize:stride:dilationRate:")] + MPSCnnDilatedPoolingMaxNode Create (MPSNNImageNode sourceNode, nuint size, nuint stride, nuint dilationRate); + + [Export ("initWithSource:kernelWidth:kernelHeight:strideInPixelsX:strideInPixelsY:dilationRateX:dilationRateY:")] + IntPtr Constructor (MPSNNImageNode sourceNode, nuint kernelWidth, nuint kernelHeight, nuint strideInPixelsX, nuint strideInPixelsY, nuint dilationRateX, nuint dilationRateY); + + [Export ("initWithSource:filterSize:stride:dilationRate:")] + IntPtr Constructor (MPSNNImageNode sourceNode, nuint size, nuint stride, nuint dilationRate); + + [Export ("initWithSource:filterSize:")] + IntPtr Constructor (MPSNNImageNode sourceNode, nuint size); + } + + [TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] + [BaseType (typeof(MPSNNFilterNode), Name = "MPSCNNNormalizationNode")] + [DisableDefaultCtor] // 'init' is unavailable + interface MPSCnnNormalizationNode { + [Export ("alpha")] + float Alpha { get; set; } + + [Export ("beta")] + float Beta { get; set; } + + [Export ("delta")] + float Delta { get; set; } + + [Static] + [Export ("nodeWithSource:")] + MPSCnnNormalizationNode Create (MPSNNImageNode sourceNode); + + [Export ("initWithSource:")] + [DesignatedInitializer] + IntPtr Constructor (MPSNNImageNode sourceNode); + } + + [TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] + [BaseType (typeof (MPSCnnNormalizationNode), Name = "MPSCNNSpatialNormalizationNode")] + [DisableDefaultCtor] // 'init' is unavailable + interface MPSCnnSpatialNormalizationNode { + [Export ("kernelWidth")] + nuint KernelWidth { get; set; } + + [Export ("kernelHeight")] + nuint KernelHeight { get; set; } + + [Static] + [Export ("nodeWithSource:kernelSize:")] + MPSCnnSpatialNormalizationNode Create (MPSNNImageNode sourceNode, nuint kernelSize); + + [Export ("initWithSource:kernelSize:")] + [DesignatedInitializer] + IntPtr Constructor (MPSNNImageNode sourceNode, nuint kernelSize); + + [Export ("initWithSource:")] + [DesignatedInitializer] + IntPtr Constructor (MPSNNImageNode sourceNode); + } + + [TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] + [BaseType (typeof (MPSCnnNormalizationNode), Name = "MPSCNNLocalContrastNormalizationNode")] + [DisableDefaultCtor] // 'init' is unavailable + interface MPSCnnLocalContrastNormalizationNode { + [Export ("pm")] + float Pm { get; set; } + + [Export ("ps")] + float Ps { get; set; } + + [Export ("p0")] + float P0 { get; set; } + + [Export ("kernelWidth")] + nuint KernelWidth { get; set; } + + [Export ("kernelHeight")] + nuint KernelHeight { get; set; } + + [Static] + [Export ("nodeWithSource:kernelSize:")] + MPSCnnLocalContrastNormalizationNode Create (MPSNNImageNode sourceNode, nuint kernelSize); + + [Export ("initWithSource:kernelSize:")] + [DesignatedInitializer] + IntPtr Constructor (MPSNNImageNode sourceNode, nuint kernelSize); + + [Export ("initWithSource:")] + [DesignatedInitializer] + IntPtr Constructor (MPSNNImageNode sourceNode); + } + + [TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] + [BaseType (typeof (MPSCnnNormalizationNode), Name = "MPSCNNCrossChannelNormalizationNode")] + [DisableDefaultCtor] // 'init' is unavailable + interface MPSCnnCrossChannelNormalizationNode { + [Export ("kernelSizeInFeatureChannels")] + nuint KernelSizeInFeatureChannels { get; set; } + + [Static] + [Export ("nodeWithSource:kernelSize:")] + MPSCnnCrossChannelNormalizationNode Create (MPSNNImageNode sourceNode, nuint kernelSize); + + [Export ("initWithSource:kernelSize:")] + [DesignatedInitializer] + IntPtr Constructor (MPSNNImageNode sourceNode, nuint kernelSize); + + [Export ("initWithSource:")] + [DesignatedInitializer] + IntPtr Constructor (MPSNNImageNode sourceNode); + } + + [TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] + [BaseType (typeof(MPSNNFilterNode))] + [DisableDefaultCtor] // 'init' is unavailable + interface MPSNNScaleNode { + [Static] + [Export ("nodeWithSource:outputSize:")] + MPSNNScaleNode Create (MPSNNImageNode sourceNode, MTLSize size); + + [Static] + [Export ("nodeWithSource:transformProvider:outputSize:")] + MPSNNScaleNode Create (MPSNNImageNode sourceNode, [NullAllowed] IMPSImageTransformProvider transformProvider, MTLSize size); + + [Export ("initWithSource:outputSize:")] + IntPtr Constructor (MPSNNImageNode sourceNode, MTLSize size); + + [Export ("initWithSource:transformProvider:outputSize:")] + IntPtr Constructor (MPSNNImageNode sourceNode, [NullAllowed] IMPSImageTransformProvider transformProvider, MTLSize size); + } + + [TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] + [BaseType (typeof(MPSNNFilterNode))] + [DisableDefaultCtor] + interface MPSNNBinaryArithmeticNode { + [Static] + [Export ("nodeWithSources:")] + MPSNNBinaryArithmeticNode Create (MPSNNImageNode[] sourceNodes); + + [Static] + [Export ("nodeWithLeftSource:rightSource:")] + MPSNNBinaryArithmeticNode Create (MPSNNImageNode left, MPSNNImageNode right); + + [Export ("initWithSources:")] + IntPtr Constructor (MPSNNImageNode[] sourceNodes); + + [Export ("initWithLeftSource:rightSource:")] + IntPtr Constructor (MPSNNImageNode left, MPSNNImageNode right); + } + + [TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] + [BaseType (typeof(MPSNNFilterNode))] + [DisableDefaultCtor] + interface MPSNNConcatenationNode { + [Static] + [Export ("nodeWithSources:")] + MPSNNConcatenationNode Create (MPSNNImageNode[] sourceNodes); + + [Export ("initWithSources:")] + IntPtr Constructor (MPSNNImageNode[] sourceNodes); + } + + [TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] + [BaseType (typeof(MPSNNFilterNode), Name = "MPSCNNSoftMaxNode")] + [DisableDefaultCtor] + interface MPSCnnSoftMaxNode { + [Static] + [Export ("nodeWithSource:")] + MPSCnnSoftMaxNode Create (MPSNNImageNode sourceNode); + + [Export ("initWithSource:")] + IntPtr Constructor (MPSNNImageNode sourceNode); + } + + [TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] + [BaseType (typeof(MPSNNFilterNode), Name = "MPSCNNLogSoftMaxNode")] + [DisableDefaultCtor] + interface MPSCnnLogSoftMaxNode { + [Static] + [Export ("nodeWithSource:")] + MPSCnnLogSoftMaxNode Create (MPSNNImageNode sourceNode); + + [Export ("initWithSource:")] + IntPtr Constructor (MPSNNImageNode sourceNode); + } + + [TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] + [BaseType (typeof(MPSNNFilterNode), Name = "MPSCNNUpsamplingNearestNode")] + [DisableDefaultCtor] + interface MPSCnnUpsamplingNearestNode { + [Static] + [Export ("nodeWithSource:integerScaleFactorX:integerScaleFactorY:")] + MPSCnnUpsamplingNearestNode Create (MPSNNImageNode sourceNode, nuint integerScaleFactorX, nuint integerScaleFactorY); + + [Export ("initWithSource:integerScaleFactorX:integerScaleFactorY:")] + IntPtr Constructor (MPSNNImageNode sourceNode, nuint integerScaleFactorX, nuint integerScaleFactorY); + + [Export ("scaleFactorX")] + double ScaleFactorX { get; } + + [Export ("scaleFactorY")] + double ScaleFactorY { get; } + } + + [TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] + [BaseType (typeof(MPSNNFilterNode), Name = "MPSCNNUpsamplingBilinearNode")] + [DisableDefaultCtor] + interface MPSCnnUpsamplingBilinearNode { + [Static] + [Export ("nodeWithSource:integerScaleFactorX:integerScaleFactorY:")] + MPSCnnUpsamplingBilinearNode Create (MPSNNImageNode sourceNode, nuint integerScaleFactorX, nuint integerScaleFactorY); + + [Export ("initWithSource:integerScaleFactorX:integerScaleFactorY:")] + IntPtr Constructor (MPSNNImageNode sourceNode, nuint integerScaleFactorX, nuint integerScaleFactorY); + + [Export ("scaleFactorX")] + double ScaleFactorX { get; } + + [Export ("scaleFactorY")] + double ScaleFactorY { get; } + } + + [TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] + [BaseType (typeof(MPSKernel))] + [DisableDefaultCtor] // There is a DesignatedInitializer, file a bug if needed. + interface MPSNNGraph : NSCopying, NSSecureCoding { + [Export ("initWithDevice:resultImage:")] + [DesignatedInitializer] + IntPtr Constructor (IMTLDevice device, MPSNNImageNode resultImage); + + [Export ("initWithCoder:device:")] + [DesignatedInitializer] + IntPtr Constructor (NSCoder aDecoder, IMTLDevice device); + + [Export ("sourceImageHandles", ArgumentSemantic.Copy)] + IMPSHandle[] SourceImageHandles { get; } + + [NullAllowed, Export ("sourceStateHandles", ArgumentSemantic.Copy)] + IMPSHandle[] SourceStateHandles { get; } + + [NullAllowed, Export ("intermediateImageHandles", ArgumentSemantic.Copy)] + IMPSHandle[] IntermediateImageHandles { get; } + + [NullAllowed, Export ("resultStateHandles", ArgumentSemantic.Copy)] + IMPSHandle[] ResultStateHandles { get; } + + [NullAllowed, Export ("resultHandle")] + IMPSHandle ResultHandle { get; } + + [Export ("outputStateIsTemporary")] + bool IsOutputStateTemporary { get; set; } + + [Export ("destinationImageAllocator", ArgumentSemantic.Retain)] + IMPSImageAllocator DestinationImageAllocator { get; set; } + + [Export ("encodeToCommandBuffer:sourceImages:sourceStates:intermediateImages:destinationStates:")] + MPSImage EncodeToCommandBuffer (IMTLCommandBuffer commandBuffer, MPSImage[] sourceImages, [NullAllowed] MPSState[] sourceStates, [NullAllowed] NSMutableArray intermediateImages, [NullAllowed] NSMutableArray destinationStates); + + [Export ("encodeToCommandBuffer:sourceImages:")] + MPSImage EncodeToCommandBuffer (IMTLCommandBuffer commandBuffer, MPSImage[] sourceImages); + + [Async, Export ("executeAsyncWithSourceImages:completionHandler:")] + MPSImage Execute (MPSImage[] sourceImages, Action handler); + } + + interface IMPSHandle { } + + [TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] + [Protocol] + interface MPSHandle : NSCoding { + [Abstract] + [NullAllowed, Export ("label")] + string Label { get; } + } + + interface IMPSCnnConvolutionDataSource { } + + [TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] + [Protocol, Model] + [BaseType (typeof (NSObject), Name = "MPSCNNConvolutionDataSource")] + interface MPSCnnConvolutionDataSource { + [Abstract] + [Export ("dataType")] + MPSDataType DataType { get; } + + [Abstract] + [Export ("descriptor")] + MPSCnnConvolutionDescriptor Descriptor { get; } + + [Abstract] + [Export ("weights")] + IntPtr Weights { get; } + + [Abstract] + [NullAllowed, Export ("biasTerms")] + IntPtr /* float* */ BiasTerms { get; } + + [Abstract] + [Export ("load")] + bool Load { get; } + + [Abstract] + [Export ("purge")] + void Purge (); + + [Abstract] + [NullAllowed, Export ("label")] + string Label { get; } + + [Export ("rangesForUInt8Kernel")] + IntPtr GetRangesForUInt8Kernel (); + + [Export ("lookupTableForUInt8Kernel")] + IntPtr /* float* */ GetLookupTableForUInt8Kernel (); + } + + interface IMPSNNPadding { } + + [TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] + [Protocol] + interface MPSNNPadding : NSSecureCoding { + [Abstract] + [Export ("paddingMethod")] + MPSNNPaddingMethod PaddingMethod { get; } + + [Export ("label")] + string GetLabel (); + + [Export ("destinationImageDescriptorForSourceImages:sourceStates:forKernel:suggestedDescriptor:")] + MPSImageDescriptor GetDestinationImageDescriptor (MPSImage[] sourceImages, [NullAllowed] MPSState[] sourceStates, MPSKernel kernel, MPSImageDescriptor inDescriptor); + } + + interface IMPSImageSizeEncodingState { } + + [TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] + [Protocol] + interface MPSImageSizeEncodingState { + [Abstract] + [Export ("sourceWidth")] + nuint SourceWidth { get; } + + [Abstract] + [Export ("sourceHeight")] + nuint SourceHeight { get; } + } + + interface IMPSImageAllocator { } + + [TV (11,0), Mac (10, 13, onlyOn64: true), iOS (11,0)] + [Protocol] + interface MPSImageAllocator : NSSecureCoding { + [Abstract] + [Export ("imageForCommandBuffer:imageDescriptor:kernel:")] + MPSImage GetImage (IMTLCommandBuffer cmdBuf, MPSImageDescriptor descriptor, MPSKernel kernel); + } + + [TV (11,0), Mac (10,13, onlyOn64: true), iOS (11,0)] + [BaseType (typeof(MPSNNStateNode), Name = "MPSCNNConvolutionStateNode")] + [DisableDefaultCtor] + interface MPSCnnConvolutionStateNode { + } + + interface IMPSImageTransformProvider { } + + [TV (11,0), Mac (10,13, onlyOn64: true), iOS (11,0)] + [Protocol] + interface MPSImageTransformProvider : NSCoding { + [Abstract] + [Export ("transformForSourceImage:handle:")] + MPSScaleTransform GetTransform (MPSImage image, [NullAllowed] IMPSHandle handle); + } + + [TV (11, 0), Mac (10,13, onlyOn64: true), iOS (11, 0)] + [Protocol] + interface MPSDeviceProvider { + [Abstract] + [Export ("mpsMTLDevice")] + IMTLDevice GetMTLDevice (); + } + + [TV (11,0), Mac (10,13, onlyOn64: true), iOS (11,0)] + [BaseType (typeof(MPSCnnPoolingNode), Name="MPSCNNPoolingAverageNode")] + [DisableDefaultCtor] // 'init' is unavailable + interface MPSCnnPoolingAverageNode { + [Export ("initWithSource:kernelWidth:kernelHeight:strideInPixelsX:strideInPixelsY:")] + IntPtr Constructor (MPSNNImageNode sourceNode, nuint kernelWidth, nuint kernelHeight, nuint strideInPixelsX, nuint strideInPixelsY); + + [Export ("initWithSource:filterSize:stride:")] + IntPtr Constructor (MPSNNImageNode sourceNode, nuint size, nuint stride); + + [Export ("initWithSource:filterSize:")] + IntPtr Constructor (MPSNNImageNode sourceNode, nuint size); + } + + [TV (11,0), Mac (10,13, onlyOn64: true), iOS (11,0)] + [BaseType (typeof(MPSCnnPoolingNode), Name="MPSCNNPoolingL2NormNode")] + [DisableDefaultCtor] // 'init' is unavailable + interface MPSCnnPoolingL2NormNode { + [Export ("initWithSource:kernelWidth:kernelHeight:strideInPixelsX:strideInPixelsY:")] + IntPtr Constructor (MPSNNImageNode sourceNode, nuint kernelWidth, nuint kernelHeight, nuint strideInPixelsX, nuint strideInPixelsY); + + [Export ("initWithSource:filterSize:stride:")] + IntPtr Constructor (MPSNNImageNode sourceNode, nuint size, nuint stride); + + [Export ("initWithSource:filterSize:")] + IntPtr Constructor (MPSNNImageNode sourceNode, nuint size); + } + + [TV (11,0), Mac (10,13, onlyOn64: true), iOS (11,0)] + [BaseType (typeof(MPSCnnPoolingNode), Name="MPSCNNPoolingMaxNode")] + [DisableDefaultCtor] // 'init' is unavailable + interface MPSCnnPoolingMaxNode { + [Export ("initWithSource:kernelWidth:kernelHeight:strideInPixelsX:strideInPixelsY:")] + IntPtr Constructor (MPSNNImageNode sourceNode, nuint kernelWidth, nuint kernelHeight, nuint strideInPixelsX, nuint strideInPixelsY); + + [Export ("initWithSource:filterSize:stride:")] + IntPtr Constructor (MPSNNImageNode sourceNode, nuint size, nuint stride); + + [Export ("initWithSource:filterSize:")] + IntPtr Constructor (MPSNNImageNode sourceNode, nuint size); + } + + [TV (11,0), Mac (10,13, onlyOn64: true), iOS (11,0)] + [BaseType (typeof(MPSNNBinaryArithmeticNode))] + [DisableDefaultCtor] // 'init' is unavailable + interface MPSNNAdditionNode { + [Export ("initWithSources:")] + IntPtr Constructor (MPSNNImageNode[] sourceNodes); + + [Export ("initWithLeftSource:rightSource:")] + IntPtr Constructor (MPSNNImageNode left, MPSNNImageNode right); + } + + [TV (11,0), Mac (10,13, onlyOn64: true), iOS (11,0)] + [BaseType (typeof(MPSNNScaleNode))] + [DisableDefaultCtor] // 'init' is unavailable + interface MPSNNBilinearScaleNode { + [Export ("initWithSource:outputSize:")] + IntPtr Constructor (MPSNNImageNode sourceNode, MTLSize size); + + [Export ("initWithSource:transformProvider:outputSize:")] + IntPtr Constructor (MPSNNImageNode sourceNode, [NullAllowed] IMPSImageTransformProvider transformProvider, MTLSize size); + } + + [TV (11,0), Mac (10,13, onlyOn64: true), iOS (11,0)] + [BaseType (typeof(MPSNNBinaryArithmeticNode))] + [DisableDefaultCtor] // 'init' is unavailable + interface MPSNNDivisionNode { + [Export ("initWithSources:")] + IntPtr Constructor (MPSNNImageNode[] sourceNodes); + + [Export ("initWithLeftSource:rightSource:")] + IntPtr Constructor (MPSNNImageNode left, MPSNNImageNode right); + } + + [TV (11,0), Mac (10,13, onlyOn64: true), iOS (11,0)] + [BaseType (typeof(MPSNNScaleNode))] + [DisableDefaultCtor] // 'init' is unavailable + interface MPSNNLanczosScaleNode { + [Export ("initWithSource:outputSize:")] + IntPtr Constructor (MPSNNImageNode sourceNode, MTLSize size); + + [Export ("initWithSource:transformProvider:outputSize:")] + IntPtr Constructor (MPSNNImageNode sourceNode, [NullAllowed] IMPSImageTransformProvider transformProvider, MTLSize size); + } + + [TV (11,0), Mac (10,13, onlyOn64: true), iOS (11,0)] + [BaseType (typeof(MPSNNBinaryArithmeticNode))] + [DisableDefaultCtor] // 'init' is unavailable + interface MPSNNMultiplicationNode { + [Export ("initWithSources:")] + IntPtr Constructor (MPSNNImageNode[] sourceNodes); + + [Export ("initWithLeftSource:rightSource:")] + IntPtr Constructor (MPSNNImageNode left, MPSNNImageNode right); + } + + [TV (11,0), Mac (10,13, onlyOn64: true), iOS (11,0)] + [BaseType (typeof(MPSNNBinaryArithmeticNode))] + [DisableDefaultCtor] // 'init' is unavailable + interface MPSNNSubtractionNode { + [Export ("initWithSources:")] + IntPtr Constructor (MPSNNImageNode[] sourceNodes); + + [Export ("initWithLeftSource:rightSource:")] + IntPtr Constructor (MPSNNImageNode left, MPSNNImageNode right); + } + + [TV (11,2), Mac (10,13,2, onlyOn64: true), iOS (11,2)] + [BaseType (typeof (MPSVector))] + [DisableDefaultCtor] + interface MPSTemporaryVector { + + [Static] + [Export ("temporaryVectorWithCommandBuffer:descriptor:")] + MPSTemporaryVector Create (IMTLCommandBuffer commandBuffer, MPSVectorDescriptor descriptor); + + [Static] + [Export ("prefetchStorageWithCommandBuffer:descriptorList:")] + void PrefetchStorage (IMTLCommandBuffer commandBuffer, MPSVectorDescriptor[] descriptorList); + + [Export ("readCount")] + nuint ReadCount { get; set; } + } + + [TV (11,2), Mac (10,13,2, onlyOn64: true), iOS (11,2)] + [BaseType (typeof(MPSKernel))] + [DisableDefaultCtor] + interface MPSMatrixSum { + + [Export ("initWithDevice:count:rows:columns:transpose:")] + [DesignatedInitializer] + IntPtr Constructor (IMTLDevice device, nuint count, nuint rows, nuint columns, bool transpose); + + [Export ("rows")] + nuint Rows { get; } + + [Export ("columns")] + nuint Columns { get; } + + [Export ("count")] + nuint Count { get; } + + [Export ("transpose")] + bool Transpose { get; } + + [Export ("setNeuronType:parameterA:parameterB:parameterC:")] + void SetNeuronType (MPSCnnNeuronType neuronType, float parameterA, float parameterB, float parameterC); + + [Export ("neuronType")] + MPSCnnNeuronType NeuronType { get; } + + [Export ("neuronParameterA")] + float NeuronParameterA { get; } + + [Export ("neuronParameterB")] + float NeuronParameterB { get; } + + [Export ("neuronParameterC")] + float NeuronParameterC { get; } + + // Keeping the same name as in the parent class so it ends up in an overload + [Export ("encodeToCommandBuffer:sourceMatrices:resultMatrix:scaleVector:offsetVector:biasVector:startIndex:")] + void EncodeToCommandBuffer (IMTLCommandBuffer buffer, MPSMatrix[] sourceMatrices, MPSMatrix resultMatrix, [NullAllowed] MPSVector scaleVector, [NullAllowed] MPSVector offsetVector, [NullAllowed] MPSVector biasVector, nuint startIndex); + + [Export ("initWithCoder:device:")] + [DesignatedInitializer] + IntPtr Constructor (NSCoder aDecoder, IMTLDevice device); + } + + [TV (11,2), Mac (10,13,2, onlyOn64: true), iOS (11,2)] + [BaseType (typeof(MPSMatrixUnaryKernel))] + [DisableDefaultCtor] + interface MPSMatrixSoftMax { + + [Export ("sourceRows")] + nuint SourceRows { get; set; } + + [Export ("sourceColumns")] + nuint SourceColumns { get; set; } + + [Export ("initWithDevice:")] + [DesignatedInitializer] + IntPtr Constructor (IMTLDevice device); + + // Keeping the same name as in the parent class so it ends up in an overload + [Export ("encodeToCommandBuffer:inputMatrix:resultMatrix:")] + void EncodeToCommandBuffer (IMTLCommandBuffer commandBuffer, MPSMatrix inputMatrix, MPSMatrix resultMatrix); + + [Export ("initWithCoder:device:")] + [DesignatedInitializer] + IntPtr Constructor (NSCoder aDecoder, IMTLDevice device); + + [Export ("copyWithZone:device:")] + [return: Release ()] + MPSMatrixSoftMax Copy ([NullAllowed] NSZone zone, [NullAllowed] IMTLDevice device); + } + + [TV (11,2), Mac (10,13,2, onlyOn64: true), iOS (11,2)] + [BaseType (typeof (MPSMatrixUnaryKernel))] + [DisableDefaultCtor] + interface MPSMatrixNeuron { + + [Export ("sourceNumberOfFeatureVectors")] + nuint SourceNumberOfFeatureVectors { get; set; } + + [Export ("sourceInputFeatureChannels")] + nuint SourceInputFeatureChannels { get; set; } + + [Export ("alpha")] + double Alpha { get; set; } + + [Export ("setNeuronType:parameterA:parameterB:parameterC:")] + void SetNeuronType (MPSCnnNeuronType neuronType, float parameterA, float parameterB, float parameterC); + + [Export ("neuronType")] + MPSCnnNeuronType NeuronType { get; } + + [Export ("neuronParameterA")] + float NeuronParameterA { get; } + + [Export ("neuronParameterB")] + float NeuronParameterB { get; } + + [Export ("neuronParameterC")] + float NeuronParameterC { get; } + + [Export ("setNeuronToPReLUWithParametersA:")] + void SetNeuronToPReLU (NSData parametersA); + + [Export ("initWithDevice:")] + [DesignatedInitializer] + IntPtr Constructor (IMTLDevice device); + + // Keeping the same name as in the parent class so it ends up in an overload + [Export ("encodeToCommandBuffer:inputMatrix:biasVector:resultMatrix:")] + void EncodeToCommandBuffer (IMTLCommandBuffer commandBuffer, MPSMatrix inputMatrix, [NullAllowed] MPSVector biasVector, MPSMatrix resultMatrix); + + [Export ("initWithCoder:device:")] + [DesignatedInitializer] + IntPtr Constructor (NSCoder aDecoder, IMTLDevice device); + + [Export ("copyWithZone:device:")] + [return: Release ()] + MPSMatrixNeuron Copy ([NullAllowed] NSZone zone, [NullAllowed] IMTLDevice device); + } + + [TV (11,2), Mac (10,13,2, onlyOn64: true), iOS (11,2)] + [BaseType (typeof (MPSMatrixSoftMax))] + [DisableDefaultCtor] + interface MPSMatrixLogSoftMax { + + [Export ("initWithDevice:")] + [DesignatedInitializer] + IntPtr Constructor (IMTLDevice device); + + [Export ("initWithCoder:device:")] + [DesignatedInitializer] + IntPtr Constructor (NSCoder aDecoder, IMTLDevice device); + } + + [TV (11,2), Mac (10,13,2, onlyOn64: true), iOS (11,2)] + [BaseType (typeof (MPSMatrixBinaryKernel))] + [DisableDefaultCtor] + interface MPSMatrixFullyConnected { + + [Export ("sourceNumberOfFeatureVectors")] + nuint SourceNumberOfFeatureVectors { get; set; } + + [Export ("sourceInputFeatureChannels")] + nuint SourceInputFeatureChannels { get; set; } + + [Export ("sourceOutputFeatureChannels")] + nuint SourceOutputFeatureChannels { get; set; } + + [Export ("alpha")] + double Alpha { get; set; } + + [Export ("setNeuronType:parameterA:parameterB:parameterC:")] + void SetNeuronType (MPSCnnNeuronType neuronType, float parameterA, float parameterB, float parameterC); + + [Export ("neuronType")] + MPSCnnNeuronType NeuronType { get; } + + [Export ("neuronParameterA")] + float NeuronParameterA { get; } + + [Export ("neuronParameterB")] + float NeuronParameterB { get; } + + [Export ("neuronParameterC")] + float NeuronParameterC { get; } + + [Export ("initWithDevice:")] + [DesignatedInitializer] + IntPtr Constructor (IMTLDevice device); + + // Keeping the same name as in the parent class so it ends up in an overload + [Export ("encodeToCommandBuffer:inputMatrix:weightMatrix:biasVector:resultMatrix:")] + void EncodeToCommandBuffer (IMTLCommandBuffer commandBuffer, MPSMatrix inputMatrix, MPSMatrix weightMatrix, [NullAllowed] MPSVector biasVector, MPSMatrix resultMatrix); + + [Export ("initWithCoder:device:")] + [DesignatedInitializer] + IntPtr Constructor (NSCoder aDecoder, IMTLDevice device); + + [Export ("copyWithZone:device:")] + [return: Release ()] + MPSMatrixFullyConnected Copy ([NullAllowed] NSZone zone, [NullAllowed] IMTLDevice device); + } + + [TV (11,2), Mac (10,13,2, onlyOn64: true), iOS (11,2)] + [BaseType (typeof (MPSMatrixUnaryKernel))] + [DisableDefaultCtor] + interface MPSMatrixFindTopK { + + [Export ("sourceRows")] + nuint SourceRows { get; set; } + + [Export ("sourceColumns")] + nuint SourceColumns { get; set; } + + [Export ("indexOffset")] + nuint IndexOffset { get; set; } + + [Export ("numberOfTopKValues")] + nuint NumberOfTopKValues { get; set; } + + [Export ("initWithDevice:numberOfTopKValues:")] + [DesignatedInitializer] + IntPtr Constructor (IMTLDevice device, nuint numberOfTopKValues); + + // Keeping the same name as in the parent class so it ends up in an overload + [Export ("encodeToCommandBuffer:inputMatrix:resultIndexMatrix:resultValueMatrix:")] + void EncodeToCommandBuffer (IMTLCommandBuffer commandBuffer, MPSMatrix inputMatrix, MPSMatrix resultIndexMatrix, MPSMatrix resultValueMatrix); + + [Export ("initWithCoder:device:")] + [DesignatedInitializer] + IntPtr Constructor (NSCoder aDecoder, IMTLDevice device); + + [Export ("copyWithZone:device:")] + [return: Release ()] + MPSMatrixFindTopK Copy ([NullAllowed] NSZone zone, [NullAllowed] IMTLDevice device); } } +#endif \ No newline at end of file diff --git a/tests/introspection/ApiCtorInitTest.cs b/tests/introspection/ApiCtorInitTest.cs index d13d5451c3..9f5e9df97f 100644 --- a/tests/introspection/ApiCtorInitTest.cs +++ b/tests/introspection/ApiCtorInitTest.cs @@ -21,6 +21,8 @@ using System; using System.Reflection; +using System.Linq; +using System.Text; using NUnit.Framework; @@ -99,6 +101,23 @@ namespace Introspection { case "NSUnitPressure": // -init should never be called on NSUnit! case "NSUnitSpeed": // -init should never be called on NSUnit! return true; + case "MPSCnnNeuron": // Cannot directly initialize MPSCNNNeuron. Use one of the sub-classes of MPSCNNNeuron + case "MPSCnnNeuronPReLU": + case "MPSCnnNeuronHardSigmoid": + case "MPSCnnNeuronSoftPlus": + return true; + case "MPSCnnBinaryConvolution": // [MPSCNNBinaryConvolution initWithDevice:] is not allowed. Please use initializers that are not marked NS_UNAVAILABLE. + case "MPSCnnDilatedPoolingMax": // [MPSCNNDilatedPoolingMax initWithDevice:] is not allowed. Please use initializers that are not marked NS_UNAVAILABLE. + case "MPSCnnPoolingL2Norm": // [MPSCNNPoolingL2Norm initWithDevice:] is not allowed. Please use initializers that are not marked NS_UNAVAILABLE. + return true; + case "MPSCnnBinaryFullyConnected": // Please initialize the MPSCNNBinaryFullyConnected class with initWithDevice:convolutionDescriptor:kernelWeights:biasTerms + return true; + case "MPSCnnUpsampling": // Cannot directly initialize MPSCNNUpsampling. Use one of the sub-classes of MPSCNNUpsampling + case "MPSCnnUpsamplingBilinear": + case "MPSCnnUpsamplingNearest": + return true; + case "MPSImageArithmetic": // Cannot directly initialize MPSImageArithmetic. Use one of the sub-classes of MPSImageArithmetic. + return true; } return SkipDueToAttribute (type); @@ -389,5 +408,82 @@ namespace Introspection { } return false; } + + [Test] + public void ShouldNotExposeDefaultCtorTest () + { + Errors = 0; + int n = 0; + + // Set to 'true' to generate alloc/init ObjC code of types that fail this test. + bool genObjCTestCode = false; + var objCCode = genObjCTestCode ? new StringBuilder () : null; + + var types = Assembly.GetTypes (); + var cifiltertype = types.FirstOrDefault (c => c.Name == "CIFilter"); + foreach (Type t in types) { + // TODO: Remove this MPS check in the future, at the time of writing this we currently only care about MPS. + if (!t.Name.StartsWith ("MPS", StringComparison.OrdinalIgnoreCase)) + continue; + + if (!t.IsPublic || !NSObjectType.IsAssignableFrom (t)) + continue; + + // ignore CIFilter derived subclasses since they are specially generated + if (cifiltertype != null && t.IsSubclassOf (cifiltertype)) + continue; + + if (SkipCheckShouldNotExposeDefaultCtor (t)) + continue; + + var ctor = t.GetConstructor (Type.EmptyTypes); + if (SkipDueToAttribute (ctor)) + continue; + + if (ctor == null || ctor.IsAbstract) { + if (LogUntestedTypes) + Console.WriteLine ("[WARNING] {0} was skipped because it had no default constructor", t); + continue; + } + + if (LogProgress) + Console.WriteLine ($"{n}: {t.FullName}"); + + var parentType = t.BaseType; + var parentCtor = parentType.GetConstructor (BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic, null, Type.EmptyTypes, null); + + if (parentCtor == null) { + ReportError ($"Type '{t.FullName}' is a possible candidate for [DisableDefaultCtor] because its BaseType '{parentType.FullName}' does not have one."); + + // Useful to test in Xcode + if (genObjCTestCode) { + var export = t.GetCustomAttribute (); + var typeName = export?.Name ?? t.Name; + objCCode.AppendLine ($"{typeName}* test{n} = [[{typeName} alloc] init];"); + } + } + n++; + } + Assert.AreEqual (0, Errors, $"{Errors} potential errors found in {n} BaseType empty ctor validated: \n{ErrorData}\n{(genObjCTestCode ? $"\n\n{objCCode}\n" : string.Empty)}"); + } + + protected virtual bool SkipCheckShouldNotExposeDefaultCtor (Type type) + { + if (type.ContainsGenericParameters) + return true; + + foreach (object ca in type.GetCustomAttributes (false)) { + if (ca is ProtocolAttribute || ca is ModelAttribute) + return true; + } + + // Add Skipped types here + //switch (type.Namespace) { + //case "": + // return true; + //} + + return SkipDueToAttribute (type); + } } } diff --git a/tests/introspection/ApiProtocolTest.cs b/tests/introspection/ApiProtocolTest.cs index be467524b3..a9e816f340 100644 --- a/tests/introspection/ApiProtocolTest.cs +++ b/tests/introspection/ApiProtocolTest.cs @@ -152,6 +152,8 @@ namespace Introspection { case "NSConstraintConflict": // Conformance not in headers case "VSSubscription": return true; + case "MPSImageAllocator": // Header shows NSSecureCoding, but intro gives: MPSImageAllocator conforms to NSSecureCoding but SupportsSecureCoding returned false + return true; } break; // conformance added in Xcode 8 (iOS 10 / macOS 10.12) diff --git a/tests/introspection/ApiSelectorTest.cs b/tests/introspection/ApiSelectorTest.cs index 2acd387ec8..d82ffc9193 100644 --- a/tests/introspection/ApiSelectorTest.cs +++ b/tests/introspection/ApiSelectorTest.cs @@ -473,6 +473,78 @@ namespace Introspection { return !TestRuntime.CheckXcodeVersion (9,0); } break; + case "MPSCnnConvolution": + switch (selectorName) { + case "initWithDevice:convolutionDescriptor:kernelWeights:biasTerms:flags:": + return true; + } + break; + case "MPSCnnFullyConnected": + switch (selectorName) { + case "initWithDevice:convolutionDescriptor:kernelWeights:biasTerms:flags:": + return true; + } + break; + case "MPSImageConversion": + switch (selectorName) { + case "initWithDevice:srcAlpha:destAlpha:backgroundColor:conversionInfo:": + return true; + } + break; + case "MPSImageDilate": + switch (selectorName) { + case "initWithDevice:kernelWidth:kernelHeight:values:": + return true; + } + break; + case "MPSImageGaussianPyramid": + switch (selectorName) { + case "initWithDevice:kernelWidth:kernelHeight:weights:": + return true; + } + break; + case "MPSImagePyramid": + switch (selectorName) { + case "initWithDevice:kernelWidth:kernelHeight:weights:": + return true; + } + break; + case "MPSImageSobel": + switch (selectorName) { + case "initWithDevice:linearGrayColorTransform:": + return true; + } + break; + case "MPSImageThresholdBinary": + switch (selectorName) { + case "initWithDevice:thresholdValue:maximumValue:linearGrayColorTransform:": + return true; + } + break; + case "MPSImageThresholdBinaryInverse": + switch (selectorName) { + case "initWithDevice:thresholdValue:maximumValue:linearGrayColorTransform:": + return true; + } + break; + case "MPSImageThresholdToZero": + switch (selectorName) { + case "initWithDevice:thresholdValue:linearGrayColorTransform:": + return true; + } + break; + case "MPSImageThresholdToZeroInverse": + switch (selectorName) { + case "initWithDevice:thresholdValue:linearGrayColorTransform:": + return true; + } + break; + case "MPSImageThresholdTruncate": + switch (selectorName) { + case "initWithDevice:thresholdValue:linearGrayColorTransform:": + return true; + } + break; } // old binding mistake diff --git a/tests/introspection/ApiTypoTest.cs b/tests/introspection/ApiTypoTest.cs index 733944c4fc..2e0a47d5a1 100644 --- a/tests/introspection/ApiTypoTest.cs +++ b/tests/introspection/ApiTypoTest.cs @@ -1,4 +1,4 @@ -// +// // Test the generated API selectors against typos or non-existing cases // // Authors: @@ -131,6 +131,7 @@ namespace Introspection "Celp", // MPEG4ObjectID "Characterteristic", "Chapv", + "Cholesky", "Chromaticities", "Ciff", "Cinepak", @@ -188,6 +189,7 @@ namespace Introspection "Ecies", // Elliptic Curve Integrated Encryption Scheme "Editability", "Eof", // acronym End-Of-File + "Elu", "Emagic", "Emaili", "Eppc", @@ -260,6 +262,8 @@ namespace Introspection "Json", "Keyerror", "Keyi", + "Keypoint", + "Keypoints", "Keyspace", "ks", "Kiloampere", @@ -275,6 +279,7 @@ namespace Introspection "Lod", "Lopass", "Lowlevel", + "Lun", "Mapbuffer", "Matchingcoalesce", "Megaampere", @@ -298,6 +303,7 @@ namespace Introspection "Mobike", // acronym "Morpher", "Mpe", // acronym + "Mps", "Mtu", // acronym "Mtc", // acronym "Mul", @@ -349,6 +355,7 @@ namespace Introspection "Pkcs", "Placemark", "Playthrough", + "Pnorm", "Pointillize", "Polyline", "Popularimeter", @@ -375,6 +382,7 @@ namespace Introspection "Rgb", "Rgba", "Rggb", // acronym for Red, Green, Green, Blue + "Rnn", "Roi", "Romm", // acronym: Reference Output Medium Metric "Rpa", @@ -429,6 +437,7 @@ namespace Introspection "Synchronizable", "Symbologies", "Tanh", + "Tensorflow", "Tessellator", "Texcoord", "Texel", @@ -478,6 +487,7 @@ namespace Introspection "Warpable", "Whitespaces", "Writeability", + "Xnor", "Xpc", "xy", "Xyz", diff --git a/tests/monotouch-test/Asserts.cs b/tests/monotouch-test/Asserts.cs index cb1cbbb4a7..c68a5ca8ba 100644 --- a/tests/monotouch-test/Asserts.cs +++ b/tests/monotouch-test/Asserts.cs @@ -2,10 +2,8 @@ #if XAMCORE_2_0 #if !__WATCHOS__ using ModelIO; -#if !MONOMAC using MetalPerformanceShaders; #endif -#endif #else using MonoTouch.ModelIO; #endif @@ -188,7 +186,7 @@ public static class Asserts Assert.AreEqual (expected.W, actual.W, message + " (W)"); } -#if !MONOMAC && !__WATCHOS__ +#if !__WATCHOS__ public static void AreEqual (MPSImageHistogramInfo expected, MPSImageHistogramInfo actual, string message) { Assert.AreEqual (expected.HistogramForAlpha, actual.HistogramForAlpha, message + " HistogramForAlpha"); @@ -196,7 +194,7 @@ public static class Asserts Asserts.AreEqual (expected.MinPixelValue, actual.MinPixelValue, message + " MinPixelValue"); Assert.AreEqual (expected.NumberOfHistogramEntries, actual.NumberOfHistogramEntries, message + " NumberOfHistogramEntries"); } -#endif // !MONOMAC && !__WATCHOS__ +#endif // !__WATCHOS__ public static void AreEqual (MatrixFloat2x2 expected, MatrixFloat2x2 actual, string message) { diff --git a/tests/monotouch-test/MetalPerformanceShaders/KernelTest.cs b/tests/monotouch-test/MetalPerformanceShaders/KernelTest.cs index a540947f82..8c9673d73c 100644 --- a/tests/monotouch-test/MetalPerformanceShaders/KernelTest.cs +++ b/tests/monotouch-test/MetalPerformanceShaders/KernelTest.cs @@ -3,15 +3,14 @@ #if !__WATCHOS__ using System; +using Foundation; #if XAMCORE_2_0 using Metal; using MetalPerformanceShaders; -using UIKit; #else using MonoTouch.Metal; using MonoTouch.MetalPerformanceShaders; -using MonoTouch.UIKit; #endif using NUnit.Framework; @@ -24,7 +23,11 @@ namespace MonoTouchFixtures.MetalPerformanceShaders { [Test] public void RectNoClip () { +#if !MONOMAC TestRuntime.AssertXcodeVersion (7,0); +#else + TestRuntime.AssertXcodeVersion (9, 0); +#endif var d = MTLDevice.SystemDefault; // some older hardware won't have a default @@ -41,6 +44,48 @@ namespace MonoTouchFixtures.MetalPerformanceShaders { Assert.That (s.Height, Is.EqualTo (-1), "Height"); Assert.That (s.Width, Is.EqualTo (-1), "Width"); } + + [Test] + public void MPSKernelCopyTest () + { +#if !MONOMAC + TestRuntime.AssertDevice (); +#endif + + TestRuntime.AssertXcodeVersion (9, 0); + + var kernel = new MPSKernel (MTLDevice.SystemDefault); + var kernel2 = kernel.CopyWithZone (NSZone.Default, MTLDevice.SystemDefault); + Assert.That (kernel2.RetainCount, Is.EqualTo (1)); + } + + [Test] + public void MPSRnnImageInferenceLayerCopyTest () + { +#if !MONOMAC + TestRuntime.AssertDevice (); +#endif + + TestRuntime.AssertXcodeVersion (9, 0); + + var layer = new MPSRnnImageInferenceLayer (MTLDevice.SystemDefault, MPSRnnSingleGateDescriptor.Create (1, 1)); + var layer2 = layer.Copy (NSZone.Default, MTLDevice.SystemDefault); + Assert.That (layer2.RetainCount, Is.EqualTo (1)); + } + + [Test] + public void MPSRnnMatrixInferenceLayerTest () + { +#if !MONOMAC + TestRuntime.AssertDevice (); +#endif + + TestRuntime.AssertXcodeVersion (9, 0); + + var layer = new MPSRnnMatrixInferenceLayer (MTLDevice.SystemDefault, MPSRnnSingleGateDescriptor.Create (1, 1)); + var layer2 = layer.Copy (NSZone.Default, MTLDevice.SystemDefault); + Assert.That (layer2.RetainCount, Is.EqualTo (1)); + } } } diff --git a/tests/monotouch-test/MetalPerformanceShaders/MPSImageHistogramEqualizationTest.cs b/tests/monotouch-test/MetalPerformanceShaders/MPSImageHistogramEqualizationTest.cs index e55242264e..f5abda5237 100644 --- a/tests/monotouch-test/MetalPerformanceShaders/MPSImageHistogramEqualizationTest.cs +++ b/tests/monotouch-test/MetalPerformanceShaders/MPSImageHistogramEqualizationTest.cs @@ -7,11 +7,9 @@ using System; #if XAMCORE_2_0 using Metal; using MetalPerformanceShaders; -using UIKit; #else using MonoTouch.Metal; using MonoTouch.MetalPerformanceShaders; -using MonoTouch.UIKit; #endif using NUnit.Framework; @@ -26,8 +24,12 @@ namespace MonoTouchFixtures.MetalPerformanceShaders [Test] public void Constructors () { +#if !MONOMAC TestRuntime.AssertDevice (); TestRuntime.AssertXcodeVersion (7, 0); +#else + TestRuntime.AssertXcodeVersion (9, 0); +#endif MPSImageHistogramInfo info = new MPSImageHistogramInfo (); info.NumberOfHistogramEntries = 256; diff --git a/tests/monotouch-test/MetalPerformanceShaders/MPSImageHistogramSpecificationTest.cs b/tests/monotouch-test/MetalPerformanceShaders/MPSImageHistogramSpecificationTest.cs index 06d489e2c1..bd1d701000 100644 --- a/tests/monotouch-test/MetalPerformanceShaders/MPSImageHistogramSpecificationTest.cs +++ b/tests/monotouch-test/MetalPerformanceShaders/MPSImageHistogramSpecificationTest.cs @@ -7,11 +7,9 @@ using System; #if XAMCORE_2_0 using Metal; using MetalPerformanceShaders; -using UIKit; #else using MonoTouch.Metal; using MonoTouch.MetalPerformanceShaders; -using MonoTouch.UIKit; #endif using NUnit.Framework; @@ -26,8 +24,12 @@ namespace MonoTouchFixtures.MetalPerformanceShaders [Test] public void Constructors () { +#if !MONOMAC TestRuntime.AssertDevice (); TestRuntime.AssertXcodeVersion (7, 0); +#else + TestRuntime.AssertXcodeVersion (9, 0); +#endif MPSImageHistogramInfo info = new MPSImageHistogramInfo (); info.NumberOfHistogramEntries = 256; diff --git a/tests/monotouch-test/MetalPerformanceShaders/MPSImageHistogramTest.cs b/tests/monotouch-test/MetalPerformanceShaders/MPSImageHistogramTest.cs index d393888506..b3b327849d 100644 --- a/tests/monotouch-test/MetalPerformanceShaders/MPSImageHistogramTest.cs +++ b/tests/monotouch-test/MetalPerformanceShaders/MPSImageHistogramTest.cs @@ -7,11 +7,9 @@ using System; #if XAMCORE_2_0 using Metal; using MetalPerformanceShaders; -using UIKit; #else using MonoTouch.Metal; using MonoTouch.MetalPerformanceShaders; -using MonoTouch.UIKit; #endif using NUnit.Framework; @@ -26,8 +24,12 @@ namespace MonoTouchFixtures.MetalPerformanceShaders [Test] public void Constructors () { +#if !MONOMAC TestRuntime.AssertDevice (); TestRuntime.AssertXcodeVersion (7, 0); +#else + TestRuntime.AssertXcodeVersion (9, 0); +#endif MPSImageHistogramInfo info = new MPSImageHistogramInfo (); info.NumberOfHistogramEntries = 256; @@ -36,7 +38,7 @@ namespace MonoTouchFixtures.MetalPerformanceShaders Asserts.AreEqual (info, rv, "HistogramForAlpha"); Assert.IsTrue (obj.ZeroHistogram, "ZeroHistogram"); - Assert.AreEqual (3072, obj.HistogramSizeForSourceFormat (MTLPixelFormat.RGBA16Sint), "HistogramSizeForSourceFormat"); + Assert.AreEqual (3072, obj.GetHistogramSize (MTLPixelFormat.RGBA16Sint), "HistogramSizeForSourceFormat"); var crs = obj.ClipRectSource; Assert.AreEqual (0, crs.Origin.X, "ClipRectSource.Origin.X"); Assert.AreEqual (0, crs.Origin.Y, "ClipRectSource.Origin.Y"); diff --git a/tests/xammac_tests/xammac_tests.csproj b/tests/xammac_tests/xammac_tests.csproj index ce1a8d036c..12327c0bd8 100644 --- a/tests/xammac_tests/xammac_tests.csproj +++ b/tests/xammac_tests/xammac_tests.csproj @@ -1069,6 +1069,18 @@ Metal\MTLDeviceTests.cs + + MetalPerformanceShaders\KernelTest.cs + + + MetalPerformanceShaders\MPSImageHistogramEqualizationTest.cs + + + MetalPerformanceShaders\MPSImageHistogramSpecificationTest.cs + + + MetalPerformanceShaders\MPSImageHistogramTest.cs + diff --git a/tests/xtro-sharpie/Helpers.cs b/tests/xtro-sharpie/Helpers.cs index b1ae5e7b6b..60b534362a 100644 --- a/tests/xtro-sharpie/Helpers.cs +++ b/tests/xtro-sharpie/Helpers.cs @@ -80,6 +80,12 @@ namespace Extrospection { { "UITableViewCellAccessoryType", "UITableViewCellAccessory" }, { "UITableViewCellStateMask", "UITableViewCellState" }, { "WatchKitErrorCode", "WKErrorCode" }, // WebKit already had that name + { "MPSCNNBinaryConvolutionFlags", "MPSCnnBinaryConvolutionFlags"}, + { "MPSCNNBinaryConvolutionType", "MPSCnnBinaryConvolutionType" }, + { "MPSCNNNeuronType", "MPSCnnNeuronType" }, + { "MPSNNPaddingMethod", "MPSNnPaddingMethod" }, + { "MPSRNNBidirectionalCombineMode", "MPSRnnBidirectionalCombineMode" }, + { "MPSRNNSequenceDirection", "MPSRnnSequenceDirection" }, // not enums { "NSMutableURLRequest", "NSMutableUrlRequest" }, { "UIImagePickerControllerImageURLExportPreset", "UIImagePickerControllerImageUrlExportPreset" }, diff --git a/tests/xtro-sharpie/common.pending b/tests/xtro-sharpie/common.pending index 8a6ad07cff..7da4890b39 100644 --- a/tests/xtro-sharpie/common.pending +++ b/tests/xtro-sharpie/common.pending @@ -101,6 +101,14 @@ ## autogenerated, likely due to the addition (xcode9) of `initWithCoder:device:` !extra-designated-initializer! MPSKernel::initWithCoder: is incorrectly decorated with an [DesignatedInitializer] attribute +## Manually bound and Sealed +!missing-selector! MPSCNNBinaryConvolution::initWithDevice:convolutionData:outputBiasTerms:outputScaleTerms:inputBiasTerms:inputScaleTerms:type:flags: not bound +!missing-selector! MPSCNNBinaryFullyConnected::initWithDevice:convolutionData:outputBiasTerms:outputScaleTerms:inputBiasTerms:inputScaleTerms:type:flags: not bound +!missing-selector! MPSCNNNeuronPReLU::initWithDevice:a:count: not bound + +## Header says it is Native -> NSUInteger, MPSNNPaddingMethod +!missing-enum! MPSNNPaddingMethod not bound +!unknown-native-enum! MPSNNPaddingMethod bound # Photos diff --git a/tools/common/Frameworks.cs b/tools/common/Frameworks.cs index a4c2cfc76c..a6d77881d4 100644 --- a/tools/common/Frameworks.cs +++ b/tools/common/Frameworks.cs @@ -142,6 +142,7 @@ public class Frameworks : Dictionary { "CoreML", "CoreML", 10, 13 }, { "Vision", "Vision", 10, 13 }, + { "MetalPerformanceShaders", "MetalPerformanceShaders", 10, 13 }, }; } return mac_frameworks; diff --git a/tools/linker/ObjCExtensions.cs b/tools/linker/ObjCExtensions.cs index a4298948f2..0aa428532d 100644 --- a/tools/linker/ObjCExtensions.cs +++ b/tools/linker/ObjCExtensions.cs @@ -54,6 +54,7 @@ namespace Xamarin.Linker { NetworkExtension = profile.GetNamespace ("NetworkExtension"); MultipeerConnectivity = profile.GetNamespace ("MultipeerConnectivity"); MetalKit = profile.GetNamespace ("MetalKit"); + MetalPerformanceShaders = profile.GetNamespace ("MetalPerformanceShaders"); ModelIO = profile.GetNamespace ("ModelIO"); Intents = profile.GetNamespace ("Intents"); Photos = profile.GetNamespace ("Photos"); @@ -107,6 +108,7 @@ namespace Xamarin.Linker { public static string NetworkExtension { get; private set; } public static string MultipeerConnectivity { get; private set; } public static string MetalKit { get; private set; } + public static string MetalPerformanceShaders { get; private set; } public static string ModelIO { get; private set; } public static string AddressBook { get; private set; } diff --git a/tools/mmp/driver.cs b/tools/mmp/driver.cs index 93cf6039fa..1f382603c6 100644 --- a/tools/mmp/driver.cs +++ b/tools/mmp/driver.cs @@ -627,6 +627,8 @@ namespace Xamarin.Bundler { static Version MutateSDKVersionToPointRelease (Version rv) { if (rv.Major == 10 && (rv.Revision == 0 || rv.Revision == -1)) { + if (rv.Minor == 13 && XcodeVersion >= new Version (9, 2)) + return new Version (rv.Major, rv.Minor, 2); if (rv.Minor == 12 && XcodeVersion >= new Version (8, 3)) return new Version (rv.Major, rv.Minor, 4); if (rv.Minor == 12 && XcodeVersion >= new Version (8, 2)) diff --git a/tools/mmp/linker/MonoMac.Tuner/MonoMacNamespaces.cs b/tools/mmp/linker/MonoMac.Tuner/MonoMacNamespaces.cs index 1c883120ef..ffdbc5bd6d 100644 --- a/tools/mmp/linker/MonoMac.Tuner/MonoMacNamespaces.cs +++ b/tools/mmp/linker/MonoMac.Tuner/MonoMacNamespaces.cs @@ -74,6 +74,7 @@ namespace MonoMac.Tuner { { Constants.VisionLibrary, Namespaces.Vision }, { Constants.IOSurfaceLibrary, Namespaces.IOSurface }, { Constants.ExternalAccessoryLibrary, Namespaces.ExternalAccessory }, + { Constants.MetalPerformanceShadersLibrary, Namespaces.MetalPerformanceShaders }, }; public void Process (LinkContext context) From f21f48b7275ee8039e66ccb9c607373762309950 Mon Sep 17 00:00:00 2001 From: Rolf Bjarne Kvinge Date: Tue, 28 Nov 2017 22:10:56 +0100 Subject: [PATCH 136/145] [tests] Enable xammac-tests on wrench. (#3056) Wrench runs `wrench-mac-xammac_tests`, but since there were no such target, make would execute the `wrench-%` target, which is disabled when iOS is disabled. Thus this strange behavior would be seen on wrench for xammac tests when iOS is disabled: /Applications/Xcode92-beta2.app/Contents/Developer/usr/bin/make -C /Users/builder/data/lanes/5665/d2b1b757/source/xamarin-macios/tests wrench-mac-xammac_tests git clean -xfdq iOS tests have been disabled [wrench-mac-xammac_tests] By creating the `wrench-mac-xammac_tests` target, we'll end up doing the right thing instead. --- tests/Makefile | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/tests/Makefile b/tests/Makefile index 1852b66f10..baeae74081 100644 --- a/tests/Makefile +++ b/tests/Makefile @@ -300,6 +300,11 @@ wrench-mac-introspection: $(Q) $(MAKE) clean-mac-introspection git clean -xfdq +wrench-mac-xammac_tests: + @# This entire target can be removed when merging to master. + $(Q) $(MAKE) run-mac-xammac_tests + $(Q) $(MAKE) clean-mac-xammac_tests + git clean -xfdq else wrench-mac-%: @echo "Mac tests have been disabled [$@]" From 74d2dcadfb59ee1f9841f09eefe2491b95a0b1a7 Mon Sep 17 00:00:00 2001 From: Alex Soto Date: Tue, 28 Nov 2017 17:27:20 -0600 Subject: [PATCH 137/145] [tests] Fix introspection tests for macOS (#3054) * [tests] Fix introspection tests for macOS It seems that apple forgot to ship SSLSetALPNProtocols and SSLCopyALPNProtocols in macOS there are already radars filled about this https://bugs.swift.org/browse/SR-6131 So this test will fail once Apple fixes this issue. when this happens we need to do two things, reenable the API and reenable the [Get|Set]AlpnProtocols tests, the one insides 'StreamDefaults' for the mac. * Implement feedback --- src/Security/SslContext.cs | 12 ++++++----- tests/introspection/ApiTypoTest.cs | 1 + .../Security/SecureTransportTest.cs | 20 +++++++++++++++++++ 3 files changed, 28 insertions(+), 5 deletions(-) diff --git a/src/Security/SslContext.cs b/src/Security/SslContext.cs index 014ef350c7..44747eaa0b 100644 --- a/src/Security/SslContext.cs +++ b/src/Security/SslContext.cs @@ -641,22 +641,23 @@ namespace XamCore.Security { return SSLSetOCSPResponse (Handle, response.Handle); } - [iOS (11,0)][TV (11,0)][Watch (4,0)][Mac (10,13)] +#if !MONOMAC + [iOS (11,0)][TV (11,0)][Watch (4,0)] //[Mac (10,13)] Apple forgot to export SSLSetALPNProtocols. https://bugs.swift.org/browse/SR-6131 [DllImport (Constants.SecurityLibrary)] static extern /* OSStatus */ int SSLSetALPNProtocols (IntPtr /* SSLContextRef */ context, IntPtr /* CFArrayRef */ protocols); - [iOS (11,0)][TV (11,0)][Watch (4,0)][Mac (10,13)] + [iOS (11,0)][TV (11,0)][Watch (4,0)] //[Mac (10,13)] Apple forgot to export SSLSetALPNProtocols. https://bugs.swift.org/browse/SR-6131 public int SetAlpnProtocols (string[] protocols) { using (var array = NSArray.FromStrings (protocols)) return SSLSetALPNProtocols (Handle, array.Handle); } - [iOS (11,0)][TV (11,0)][Watch (4,0)][Mac (10,13)] + [iOS (11,0)][TV (11,0)][Watch (4,0)] //[Mac (10,13)] Apple forgot to export SSLCopyALPNProtocols. [DllImport (Constants.SecurityLibrary)] static extern /* OSStatus */ int SSLCopyALPNProtocols (IntPtr /* SSLContextRef */ context, ref IntPtr /* CFArrayRef* */ protocols); - [iOS (11,0)][TV (11,0)][Watch (4,0)][Mac (10,13)] + [iOS (11,0)][TV (11,0)][Watch (4,0)] //[Mac (10,13)] Apple forgot to export the SSLCopyALPNProtocols. public string[] GetAlpnProtocols (out int error) { IntPtr protocols = IntPtr.Zero; // must be null, CFArray allocated by SSLCopyALPNProtocols @@ -668,11 +669,12 @@ namespace XamCore.Security { return result; } - [iOS (11,0)][TV (11,0)][Watch (4,0)][Mac (10,13)] + [iOS (11,0)][TV (11,0)][Watch (4,0)] //[Mac (10,13)] Apple forgot to export the SSLCopyALPNProtocols. public string[] GetAlpnProtocols () { int error; return GetAlpnProtocols (out error); } +#endif } } diff --git a/tests/introspection/ApiTypoTest.cs b/tests/introspection/ApiTypoTest.cs index 2e0a47d5a1..933e6e7756 100644 --- a/tests/introspection/ApiTypoTest.cs +++ b/tests/introspection/ApiTypoTest.cs @@ -280,6 +280,7 @@ namespace Introspection "Lopass", "Lowlevel", "Lun", + "Luma", "Mapbuffer", "Matchingcoalesce", "Megaampere", diff --git a/tests/monotouch-test/Security/SecureTransportTest.cs b/tests/monotouch-test/Security/SecureTransportTest.cs index 357cd53d23..fd8f884809 100644 --- a/tests/monotouch-test/Security/SecureTransportTest.cs +++ b/tests/monotouch-test/Security/SecureTransportTest.cs @@ -99,16 +99,36 @@ namespace MonoTouchFixtures.Security { using (var data = new NSData ()) Assert.That (ssl.SetOcspResponse (data), Is.EqualTo (0), "SetOcspResponse/empty"); +// Test disabled for macOS due to Apple is not shipping SSLSetALPNProtocols and SSLCopyALPNProtocols on macOS +#if !MONOMAC int error; var alpn = ssl.GetAlpnProtocols (out error); Assert.That (alpn, Is.Empty, "alpn"); Assert.That (error, Is.EqualTo ((int) SecStatusCode.Param), "GetAlpnProtocols"); var protocols = new [] { "HTTP/1.1", "SPDY/1" }; Assert.That (ssl.SetAlpnProtocols (protocols), Is.EqualTo (0), "SetAlpnProtocols"); +#endif } } } +#if MONOMAC + [Test] + public void ReenableSSLGetSetAlpnProtocols () + { + TestRuntime.AssertXcodeVersion (9,0); + + // It seems that apple forgot to ship SSLSetALPNProtocols and SSLCopyALPNProtocols in macOS + // there are already radars filled about this https://bugs.swift.org/browse/SR-6131 + // So this test will fail once Apple fixes this issue. when this happens we need to do two things, reenable + // the API and reenable the [Get|Set]AlpnProtocols test above, the one inside 'StreamDefaults' for the mac. + + IntPtr seclib = Dlfcn.dlopen (Constants.SecurityLibrary, 0); + Assert.IsTrue (Dlfcn.GetIndirect (seclib, "SSLSetALPNProtocols") == IntPtr.Zero, "Reenable 'SetAlpnProtocols' inside src/Security/SslContext.cs and remove this test."); + Assert.IsTrue (Dlfcn.GetIndirect (seclib, "SSLCopyALPNProtocols") == IntPtr.Zero, "Reenable 'GetAlpnProtocols' inside src/Security/SslContext.cs and remove this test."); + } +#endif + [Test] public void DatagramDefaults () { From 7fd2b6775929af59cf9c324e224d619d5758267c Mon Sep 17 00:00:00 2001 From: Rolf Bjarne Kvinge Date: Wed, 29 Nov 2017 15:57:15 +0100 Subject: [PATCH 138/145] [xharness] Make it possible to select from the command line whether tests requiring system permissions should be executed or not. (#3053) (#3062) --- tests/xharness/AppRunner.cs | 4 +--- tests/xharness/Harness.cs | 2 ++ tests/xharness/Jenkins.cs | 10 ++++------ tests/xharness/Program.cs | 34 ++++++++++++++++++++++++++++++++++ 4 files changed, 41 insertions(+), 9 deletions(-) diff --git a/tests/xharness/AppRunner.cs b/tests/xharness/AppRunner.cs index 65ff89621b..857a304c87 100644 --- a/tests/xharness/AppRunner.cs +++ b/tests/xharness/AppRunner.cs @@ -75,8 +75,6 @@ namespace xharness } } - public bool IncludeSystemPermissionTests { get; set; } = true; - // For watch apps we end up with 2 simulators, the watch simulator (the main one), and the iphone simulator (the companion one). SimDevice[] simulators; SimDevice simulator { get { return simulators [0]; } } @@ -453,7 +451,7 @@ namespace xharness args.Append (" -setenv=NUNIT_ENABLE_XML_MODE=wrapped"); } - if (!IncludeSystemPermissionTests) + if (!Harness.IncludeSystemPermissionTests) args.Append (" -setenv=DISABLE_SYSTEM_PERMISSION_TESTS=1"); if (isSimulator) { diff --git a/tests/xharness/Harness.cs b/tests/xharness/Harness.cs index d30036386b..03cc60820e 100644 --- a/tests/xharness/Harness.cs +++ b/tests/xharness/Harness.cs @@ -127,6 +127,8 @@ namespace xharness public string JenkinsConfiguration { get; set; } public Dictionary EnvironmentVariables { get; set; } = new Dictionary (); public string MarkdownSummaryPath { get; set; } + // whether tests that require access to system resources (system contacts, photo library, etc) should be executed or not + public bool IncludeSystemPermissionTests { get; set; } = true; public Harness () { diff --git a/tests/xharness/Jenkins.cs b/tests/xharness/Jenkins.cs index 2b9a5fe482..2c386b841c 100644 --- a/tests/xharness/Jenkins.cs +++ b/tests/xharness/Jenkins.cs @@ -30,7 +30,6 @@ namespace xharness public bool IncludeMacBindingProject; public bool IncludeSimulator = true; public bool IncludeDevice; - public bool IncludeSystemPermissionTests = true; // tests that require access to system resources (system contacts, photo library, etc) in order to work public bool IncludeXtro; public Logs Logs = new Logs (); @@ -135,7 +134,7 @@ namespace xharness if (!IncludeBcl && project.IsBclTest) return false; - if (!IncludeSystemPermissionTests && project.Name == "introspection") + if (!Harness.IncludeSystemPermissionTests && project.Name == "introspection") return false; return true; @@ -416,7 +415,9 @@ namespace xharness SetEnabled (labels, "mac-classic", ref IncludeClassicMac); SetEnabled (labels, "ios-msbuild", ref IncludeiOSMSBuild); SetEnabled (labels, "ios-simulator", ref IncludeSimulator); - SetEnabled (labels, "system-permission", ref IncludeSystemPermissionTests); + bool inc_permission_tests = Harness.IncludeSystemPermissionTests; + SetEnabled (labels, "system-permission", ref inc_permission_tests); + Harness.IncludeSystemPermissionTests = inc_permission_tests; } void SetEnabled (HashSet labels, string testname, ref bool value) @@ -2857,7 +2858,6 @@ function oninitialload () DeviceName = Device.Name, CompanionDeviceName = CompanionDevice?.Name, Configuration = ProjectConfiguration, - IncludeSystemPermissionTests = Jenkins.IncludeSystemPermissionTests, }; // Sometimes devices can't upgrade (depending on what has changed), so make sure to uninstall any existing apps first. @@ -2907,7 +2907,6 @@ function oninitialload () DeviceName = Device.Name, CompanionDeviceName = CompanionDevice?.Name, Configuration = ProjectConfiguration, - IncludeSystemPermissionTests = Jenkins.IncludeSystemPermissionTests, }; additional_runner = todayRunner; await todayRunner.RunAsync (); @@ -2994,7 +2993,6 @@ function oninitialload () Target = AppRunnerTarget, LogDirectory = LogDirectory, MainLog = Logs.CreateStream (LogDirectory, $"run-{Device.UDID}-{Timestamp}.log", "Run log"), - IncludeSystemPermissionTests = Jenkins.IncludeSystemPermissionTests, }; runner.Simulators = Simulators; runner.Initialize (); diff --git a/tests/xharness/Program.cs b/tests/xharness/Program.cs index 2139cd0f56..5c67b627a7 100644 --- a/tests/xharness/Program.cs +++ b/tests/xharness/Program.cs @@ -67,6 +67,7 @@ namespace xharness } }, { "markdown-summary=", "The path where a summary (in Markdown format) will be written.", (v) => harness.MarkdownSummaryPath = v }, + { "include-system-permission-tests:", "If tests that require system permissions (which could cause the OS to launch dialogs that hangs the test) should be executed or not. Default is to include such tests.", (v) => harness.IncludeSystemPermissionTests = ParseBool (v, "include-system-permission-tests") }, }; showHelp = () => { @@ -85,5 +86,38 @@ namespace xharness return harness.Execute (); } + + internal static bool TryParseBool (string value, out bool result) + { + if (string.IsNullOrEmpty (value)) { + result = true; + return true; + } + + switch (value.ToLowerInvariant ()) { + case "1": + case "yes": + case "true": + case "enable": + result = true; + return true; + case "0": + case "no": + case "false": + case "disable": + result = false; + return true; + default: + return bool.TryParse (value, out result); + } + } + + internal static bool ParseBool (string value, string name, bool show_error = true) + { + bool result; + if (!TryParseBool (value, out result)) + throw new Exception ($"Could not parse the command line argument '-{name}:{value}'"); + return result; + } } } From 2bfbc8a834d587ebf45b4555883aaa28e57fbe5a Mon Sep 17 00:00:00 2001 From: Sebastien Pouliot Date: Wed, 29 Nov 2017 14:16:27 -0500 Subject: [PATCH 139/145] [tests] Fix mac-apitest on High-Sierra (#3064) MetalPerformanceShadersLibrary is new in macOS 10.13 and only available for 64bits. from https://wrench.internalx.com/Wrench/WebServices/Download.aspx?workfile_id=19778531 Tests run: 248, Passed: 238, Errors: 0, Failures: 1, Inconclusive: 0 Not run: 9, Invalid: 0, Ignored: 9, Skipped: 0 Elapsed time: 00:00:11.3800000 Errors and Failures: 1) ExpectedLibrariesAreLoaded (Xamarin.Mac.Tests.EveryFrameworkSmokeTests.ExpectedLibrariesAreLoaded) MetalPerformanceShadersLibrary (/System/Library/Frameworks/MetalPerformanceShaders.framework/MetalPerformanceShaders) failed to load but this was not expected at Xamarin.Mac.Tests.EveryFrameworkSmokeTests.ExpectedLibrariesAreLoaded () [0x000c5] in /Users/builder/data/lanes/5665/74d2dcad/source/xamarin-macios/tests/apitest/src/EveryFrameworkSmokeTest.cs:99 at (wrapper managed-to-native) System.Reflection.MonoMethod:InternalInvoke (System.Reflection.MonoMethod,object,object[],System.Exception&) at System.Reflection.MonoMethod.Invoke (System.Object obj, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x00032] in /Library/Frameworks/Xamarin.Mac.framework/Versions/4.1.1.45/src/mono/mcs/class/corlib/System.Reflection/MonoMethod.cs:305 --- tests/apitest/src/EveryFrameworkSmokeTest.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/apitest/src/EveryFrameworkSmokeTest.cs b/tests/apitest/src/EveryFrameworkSmokeTest.cs index 74507a1a37..a2aeaccfb7 100644 --- a/tests/apitest/src/EveryFrameworkSmokeTest.cs +++ b/tests/apitest/src/EveryFrameworkSmokeTest.cs @@ -59,6 +59,7 @@ namespace Xamarin.Mac.Tests case "MapKitLibrary": case "MediaLibraryLibrary": case "MetalKitLibrary": + case "MetalPerformanceShadersLibrary": case "ModelIOLibrary": case "MultipeerConnectivityLibrary": case "NetworkExtensionLibrary": From b87b3ba8785816fb01668fed6fea29af4f59b455 Mon Sep 17 00:00:00 2001 From: Chris Hamons Date: Fri, 1 Dec 2017 06:40:56 -0600 Subject: [PATCH 140/145] Fix test failures on 10.13 (#3065) (#3072) --- tests/introspection/Mac/MacApiCtorInitTest.cs | 5 +++++ tests/introspection/Mac/MacApiProtocolTest.cs | 1 + 2 files changed, 6 insertions(+) diff --git a/tests/introspection/Mac/MacApiCtorInitTest.cs b/tests/introspection/Mac/MacApiCtorInitTest.cs index fd4f8c544a..a17280a2f9 100644 --- a/tests/introspection/Mac/MacApiCtorInitTest.cs +++ b/tests/introspection/Mac/MacApiCtorInitTest.cs @@ -248,6 +248,11 @@ namespace Introspection { { switch (type.FullName) { // FIXME: those crash the application when Dispose is called + case "MonoMac.AppKit.NSTextInputContext": + case "AppKit.NSTextInputContext": + if (Mac.CheckSystemVersion (10, 13)) + goto case "MonoMac.ImageKit.IKScannerDeviceView"; // fallthrough + goto default; case "MonoMac.JavaScriptCore.JSManagedValue": case "JavaScriptCore.JSManagedValue": // JSManagedValue crashes in Yosemite (b7), but not Mavericks. diff --git a/tests/introspection/Mac/MacApiProtocolTest.cs b/tests/introspection/Mac/MacApiProtocolTest.cs index 22810d1b49..88735fe268 100644 --- a/tests/introspection/Mac/MacApiProtocolTest.cs +++ b/tests/introspection/Mac/MacApiProtocolTest.cs @@ -31,6 +31,7 @@ namespace Introspection { switch (protocolName) { case "NSSecureCoding": switch (type.Name) { + case "CNContactFormatter": // iOS declares but macOS header does not. Failure was missed :( case "NSCachedImageRep": // Not declared in header file case "NSCIImageRep": case "NSCustomImageRep": From 113e518d9d04ce404414d810111af95a666d5280 Mon Sep 17 00:00:00 2001 From: Rolf Bjarne Kvinge Date: Fri, 1 Dec 2017 17:46:47 +0100 Subject: [PATCH 141/145] [monotouch-test] Update permission checks. (#3071) Apparently iOS 11 shows system dialogs for more API, so sprinkle permission checks in more places. --- tests/monotouch-test/AddressBook/AddressBookTest.cs | 3 +++ tests/monotouch-test/AddressBook/PersonTest.cs | 1 + 2 files changed, 4 insertions(+) diff --git a/tests/monotouch-test/AddressBook/AddressBookTest.cs b/tests/monotouch-test/AddressBook/AddressBookTest.cs index eb1fdac8bf..e88f7a25fb 100644 --- a/tests/monotouch-test/AddressBook/AddressBookTest.cs +++ b/tests/monotouch-test/AddressBook/AddressBookTest.cs @@ -34,6 +34,7 @@ namespace MonoTouchFixtures.AddressBook { [Test] public void GetAllSources () { + TestRuntime.CheckAddressBookPermission (); ABAddressBook ab = new ABAddressBook (); var sources = ab.GetAllSources (); int value = Runtime.Arch == Arch.DEVICE || TestRuntime.CheckSystemAndSDKVersion (7,0) ? 0 : 1; @@ -43,6 +44,7 @@ namespace MonoTouchFixtures.AddressBook { [Test] public void GetDefaultSource () { + TestRuntime.CheckAddressBookPermission (); ABAddressBook ab = new ABAddressBook (); Assert.NotNull (ab.GetDefaultSource (), "GetDefaultSource"); } @@ -50,6 +52,7 @@ namespace MonoTouchFixtures.AddressBook { [Test] public void GetSource () { + TestRuntime.CheckAddressBookPermission (); ABAddressBook ab = new ABAddressBook (); Assert.Null (ab.GetSource (-1), "-1"); // GetSource(0) is not reliable across device/simulator and iOS versions diff --git a/tests/monotouch-test/AddressBook/PersonTest.cs b/tests/monotouch-test/AddressBook/PersonTest.cs index e2064e5811..480bf6c686 100644 --- a/tests/monotouch-test/AddressBook/PersonTest.cs +++ b/tests/monotouch-test/AddressBook/PersonTest.cs @@ -32,6 +32,7 @@ namespace MonoTouchFixtures.AddressBook { [Test] public void UpdateAddressLine () { + TestRuntime.CheckAddressBookPermission (); if (!TestRuntime.CheckSystemAndSDKVersion (6,0)) Assert.Inconclusive ("System.EntryPointNotFoundException : ABAddressBookCreateWithOptions before 6.0"); From 4c966e3e717549ec0ab030811a5868604c63df6e Mon Sep 17 00:00:00 2001 From: Chris Hamons Date: Sun, 3 Dec 2017 18:45:28 -0600 Subject: [PATCH 142/145] Fix macOS 10.13 test failures (#3066) --- .../monotouch-test/CoreBluetooth/UuidTest.cs | 18 +++++-------- tests/monotouch-test/Security/KeyTest.cs | 25 +++++++++---------- .../SpriteKit/SpriteNodeTest.cs | 2 +- tests/xammac_tests/xammac_tests.csproj | 3 --- 4 files changed, 19 insertions(+), 29 deletions(-) diff --git a/tests/monotouch-test/CoreBluetooth/UuidTest.cs b/tests/monotouch-test/CoreBluetooth/UuidTest.cs index 9fbeaa40cf..69a16f90fe 100644 --- a/tests/monotouch-test/CoreBluetooth/UuidTest.cs +++ b/tests/monotouch-test/CoreBluetooth/UuidTest.cs @@ -39,12 +39,9 @@ namespace MonoTouchFixtures.CoreBluetooth { using (CBUUID uuid = CBUUID.FromString ("1234")) { Assert.That (uuid.Handle, Is.Not.EqualTo (IntPtr.Zero), "Handle"); Assert.IsNotNull (uuid.Data, "Data"); -#if MONOMAC - var expected = "Unknown (<1234>)"; -#else - var expected = UIDevice.CurrentDevice.CheckSystemVersion (7, 1) ? "1234" : "Unknown (<1234>)"; -#endif - Assert.That (uuid.Description, Is.EqualTo (expected), "Description"); + var firstExpected = "Unknown (<1234>)"; + var secondExpected = "1234"; + Assert.That (uuid.Description, Is.EqualTo (firstExpected).Or.EqualTo (secondExpected), "Description"); Assert.That (uuid.ToString (false), Is.EqualTo ("1234"), "ToString(false)"); Assert.That (uuid.ToString (true), Is.EqualTo ("00001234-0000-1000-8000-00805f9b34fb"), "ToString(true)"); using (CBUUID u2 = CBUUID.FromString (uuid.ToString ())) { @@ -59,12 +56,9 @@ namespace MonoTouchFixtures.CoreBluetooth { using (CBUUID uuid = CBUUID.FromString ("12345678-90AB-CDEF-cafe-c80c20443d0b")) { Assert.That (uuid.Handle, Is.Not.EqualTo (IntPtr.Zero), "Handle"); Assert.IsNotNull (uuid.Data, "Data"); -#if MONOMAC - var expected = "Unknown (<12345678 90abcdef cafec80c 20443d0b>)"; -#else - var expected = UIDevice.CurrentDevice.CheckSystemVersion (7, 1) ? "12345678-90AB-CDEF-CAFE-C80C20443D0B" : "Unknown (<12345678 90abcdef cafec80c 20443d0b>)"; -#endif - Assert.That (uuid.Description, Is.EqualTo (expected), "Description"); + var firstExpected = "Unknown (<12345678 90abcdef cafec80c 20443d0b>)"; + var secondExpected = "12345678-90AB-CDEF-CAFE-C80C20443D0B"; + Assert.That (uuid.Description, Is.EqualTo (firstExpected).Or.EqualTo (secondExpected), "Description"); Assert.That (uuid.ToString (false), Is.EqualTo (uuid.ToString (true)), "ToString"); using (CBUUID u2 = CBUUID.FromString (uuid.ToString ())) { Assert.That (u2.ToString (), Is.EqualTo (uuid.ToString ()), "Roundtrip"); diff --git a/tests/monotouch-test/Security/KeyTest.cs b/tests/monotouch-test/Security/KeyTest.cs index d59e1475e4..c9e9f781c5 100644 --- a/tests/monotouch-test/Security/KeyTest.cs +++ b/tests/monotouch-test/Security/KeyTest.cs @@ -114,20 +114,19 @@ namespace MonoTouchFixtures.Security { byte [] cipher; if (TestRuntime.CheckXcodeVersion (8,0)) { Assert.True (public_key.IsAlgorithmSupported (SecKeyOperationType.Encrypt, SecKeyAlgorithm.RsaEncryptionPkcs1), "public/IsAlgorithmSupported/Encrypt"); + Action decryptTest = v => { + Assert.That (public_key.IsAlgorithmSupported (SecKeyOperationType.Decrypt, SecKeyAlgorithm.RsaEncryptionPkcs1), Is.EqualTo (v), "public/IsAlgorithmSupported/Decrypt"); + + using (var pub = public_key.GetPublicKey ()) + { + // a new native instance of the key is returned (so having a new managed SecKey is fine) + Assert.That (pub.Handle == public_key.Handle, Is.Not.EqualTo (v), "public/GetPublicKey"); + } + }; #if MONOMAC - Assert.False (public_key.IsAlgorithmSupported (SecKeyOperationType.Decrypt, SecKeyAlgorithm.RsaEncryptionPkcs1), "public/IsAlgorithmSupported/Decrypt"); - - using (var pub = public_key.GetPublicKey ()) { - Assert.That (pub.Handle, Is.EqualTo (public_key.Handle), "public/GetPublicKey"); - } + decryptTest (TestRuntime.CheckMacSystemVersion (10, 13)); #else - // I would have expect false - Assert.True (public_key.IsAlgorithmSupported (SecKeyOperationType.Decrypt, SecKeyAlgorithm.RsaEncryptionPkcs1), "public/IsAlgorithmSupported/Decrypt"); - - using (var pub = public_key.GetPublicKey ()) { - // a new native instance of the key is returned (so having a new managed SecKey is fine) - Assert.That (pub.Handle, Is.Not.EqualTo (public_key.Handle), "public/GetPublicKey"); - } + decryptTest (true); #endif using (var attrs = public_key.GetAttributes ()) { Assert.That (attrs.Count, Is.GreaterThan (0), "public/GetAttributes"); @@ -214,7 +213,7 @@ namespace MonoTouchFixtures.Security { Assert.True (public_key.IsAlgorithmSupported (SecKeyOperationType.Encrypt, SecKeyAlgorithm.RsaEncryptionOaepSha1), "public/IsAlgorithmSupported/Encrypt"); // I would have expect false #if MONOMAC - Assert.False (public_key.IsAlgorithmSupported (SecKeyOperationType.Decrypt, SecKeyAlgorithm.RsaEncryptionOaepSha1), "public/IsAlgorithmSupported/Decrypt"); + Assert.That (public_key.IsAlgorithmSupported (SecKeyOperationType.Decrypt, SecKeyAlgorithm.RsaEncryptionOaepSha1), Is.EqualTo (TestRuntime.CheckMacSystemVersion (10, 13)), "public/IsAlgorithmSupported/Decrypt"); #else Assert.True (public_key.IsAlgorithmSupported (SecKeyOperationType.Decrypt, SecKeyAlgorithm.RsaEncryptionOaepSha1), "public/IsAlgorithmSupported/Decrypt"); #endif diff --git a/tests/monotouch-test/SpriteKit/SpriteNodeTest.cs b/tests/monotouch-test/SpriteKit/SpriteNodeTest.cs index 3dfc97c5db..6931c15165 100644 --- a/tests/monotouch-test/SpriteKit/SpriteNodeTest.cs +++ b/tests/monotouch-test/SpriteKit/SpriteNodeTest.cs @@ -101,7 +101,7 @@ namespace MonoTouchFixtures.SpriteKit { { using (var n = new SKSpriteNode (UIColor.Blue, SizeF.Empty)) { #if MONOMAC - Assert.That (n.Color.ToString (), Is.EqualTo ("Device RGB(0.016804177314043,0.198350995779037,1,1)"), "Color-1"); + Assert.That (n.Color.ToString (), Is.EqualTo ("Device RGB(0.016804177314043,0.198350995779037,1,1)").Or.EqualTo ("Device RGB(0,0,1,1)"), "Color-1"); #else Assert.That (n.Color.ToString (), Is.EqualTo ("UIColor [A=255, R=0, G=0, B=255]"), "Color-1"); #endif diff --git a/tests/xammac_tests/xammac_tests.csproj b/tests/xammac_tests/xammac_tests.csproj index 12327c0bd8..726306860a 100644 --- a/tests/xammac_tests/xammac_tests.csproj +++ b/tests/xammac_tests/xammac_tests.csproj @@ -692,9 +692,6 @@ ObjCRuntime\RegistrarTest.cs - - api-shared\ObjCRuntime\Registrar.cs - api-shared\ObjCRuntime\RegistrarTest.cs From dfd10bd5b7e60e1b636da8fdfecddee225b40be4 Mon Sep 17 00:00:00 2001 From: Vincent Dondain Date: Mon, 4 Dec 2017 17:13:07 -0500 Subject: [PATCH 143/145] Bump xcode to 9.2 final --- Make.config | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Make.config b/Make.config index 135f0e72c7..e27cdb4f65 100644 --- a/Make.config +++ b/Make.config @@ -45,7 +45,7 @@ IOS_PRODUCT=Xamarin.iOS IOS_PACKAGE_NAME=Xamarin.iOS IOS_PACKAGE_NAME_LOWER=$(shell echo $(IOS_PACKAGE_NAME) | tr "[:upper:]" "[:lower:]") # NEVER customize IOS_PACKAGE_VERSION itself, other parts (mtouch, web updater) are using the IOS_PACKAGE_VERSION_* variables -IOS_PACKAGE_VERSION=11.5.$(PACKAGE_VERSION_REV).$(IOS_COMMIT_DISTANCE) +IOS_PACKAGE_VERSION=11.6.$(PACKAGE_VERSION_REV).$(IOS_COMMIT_DISTANCE) IOS_PACKAGE_VERSION_MAJOR=$(word 1, $(subst ., ,$(IOS_PACKAGE_VERSION))) IOS_PACKAGE_VERSION_MINOR=$(word 2, $(subst ., ,$(IOS_PACKAGE_VERSION))) IOS_PACKAGE_VERSION_REV=$(PACKAGE_VERSION_REV) @@ -53,8 +53,8 @@ IOS_PACKAGE_VERSION_BUILD=$(IOS_COMMIT_DISTANCE) IOS_PACKAGE_UPDATE_ID=$(shell printf "2%02d%02d%02d%03d" $(IOS_PACKAGE_VERSION_MAJOR) $(IOS_PACKAGE_VERSION_MINOR) $(IOS_PACKAGE_VERSION_REV) $(IOS_PACKAGE_VERSION_BUILD)) XCODE_VERSION=9.2 -XCODE_URL=http://xamarin-storage/bot-provisioning/Xcode_9.2_Beta2.xip -XCODE_DEVELOPER_ROOT=/Applications/Xcode92-beta2.app/Contents/Developer +XCODE_URL=http://xamarin-storage/bot-provisioning/Xcode_9.2.xip +XCODE_DEVELOPER_ROOT=/Applications/Xcode92.app/Contents/Developer # Minimum Mono version MIN_MONO_VERSION=5.4.0.201 From 9568331b345e75b2538919856f1a802e995adbaf Mon Sep 17 00:00:00 2001 From: Vincent Dondain Date: Mon, 4 Dec 2017 14:14:50 -0500 Subject: [PATCH 144/145] [storekit] Update for Xcode 9.2 final --- src/StoreKit/Enums.cs | 4 ++-- src/storekit.cs | 8 ++++---- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/StoreKit/Enums.cs b/src/StoreKit/Enums.cs index 9a6d46e846..4f08e16c35 100644 --- a/src/StoreKit/Enums.cs +++ b/src/StoreKit/Enums.cs @@ -67,7 +67,7 @@ namespace XamCore.StoreKit { Hide, } #endif - [iOS (11,2), TV (11,2), NoMac] + [iOS (11,2), TV (11,2), Mac (10,13,2)] [Native] public enum SKProductPeriodUnit : nuint { Day, @@ -76,7 +76,7 @@ namespace XamCore.StoreKit { Year, } - [iOS (11,2), TV (11,2), NoMac] + [iOS (11,2), TV (11,2), Mac (10,13,2)] [Native] public enum SKProductDiscountPaymentMode : nuint { PayAsYouGo, diff --git a/src/storekit.cs b/src/storekit.cs index 7a95d6823d..7faeb55f21 100644 --- a/src/storekit.cs +++ b/src/storekit.cs @@ -235,11 +235,11 @@ namespace XamCore.StoreKit { #endif string DownloadContentVersion { get; } - [iOS (11,2), TV (11,2), NoMac] + [iOS (11,2), TV (11,2), Mac (10,13,2)] [NullAllowed, Export ("subscriptionPeriod")] SKProductSubscriptionPeriod SubscriptionPeriod { get; } - [iOS (11,2), TV (11,2), NoMac] + [iOS (11,2), TV (11,2), Mac (10,13,2)] [NullAllowed, Export ("introductoryPrice")] SKProductDiscount IntroductoryPrice { get; } } @@ -644,7 +644,7 @@ namespace XamCore.StoreKit { } #endif - [iOS (11,2), TV (11,2), NoMac] + [iOS (11,2), TV (11,2), Mac (10,13,2)] [BaseType (typeof (NSObject))] interface SKProductSubscriptionPeriod { @@ -655,7 +655,7 @@ namespace XamCore.StoreKit { SKProductPeriodUnit Unit { get; } } - [iOS (11,2), TV (11,2), NoMac] + [iOS (11,2), TV (11,2), Mac (10,13,2)] [BaseType (typeof (NSObject))] interface SKProductDiscount { From 18378d752eb3db146be8ba48336bed1a229b21c3 Mon Sep 17 00:00:00 2001 From: Vincent Dondain Date: Wed, 6 Dec 2017 15:18:11 -0500 Subject: [PATCH 145/145] Fix merge mistake in monotouch-test.csproj --- tests/monotouch-test/monotouch-test.csproj | 84 ---------------------- 1 file changed, 84 deletions(-) diff --git a/tests/monotouch-test/monotouch-test.csproj b/tests/monotouch-test/monotouch-test.csproj index 527d4fd988..20c638f76c 100644 --- a/tests/monotouch-test/monotouch-test.csproj +++ b/tests/monotouch-test/monotouch-test.csproj @@ -201,90 +201,6 @@ ConditionalCompilation.cs - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -