objc2_pass_kit/generated/
PKPaymentRequest.rs

1//! This file has been automatically generated by `objc2`'s `header-translator`.
2//! DO NOT EDIT
3use core::ffi::*;
4use core::ptr::NonNull;
5use objc2::__framework_prelude::*;
6use objc2_foundation::*;
7
8use crate::*;
9
10/// [Apple's documentation](https://developer.apple.com/documentation/passkit/pkmerchantcapability?language=objc)
11// NS_OPTIONS
12#[repr(transparent)]
13#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
14pub struct PKMerchantCapability(pub NSUInteger);
15bitflags::bitflags! {
16    impl PKMerchantCapability: NSUInteger {
17        #[doc(alias = "PKMerchantCapability3DS")]
18        const Capability3DS = 1<<0;
19        #[doc(alias = "PKMerchantCapabilityEMV")]
20        const CapabilityEMV = 1<<1;
21        #[doc(alias = "PKMerchantCapabilityCredit")]
22        const CapabilityCredit = 1<<2;
23        #[doc(alias = "PKMerchantCapabilityDebit")]
24        const CapabilityDebit = 1<<3;
25        #[doc(alias = "PKMerchantCapabilityInstantFundsOut")]
26        const CapabilityInstantFundsOut = 1<<7;
27    }
28}
29
30unsafe impl Encode for PKMerchantCapability {
31    const ENCODING: Encoding = NSUInteger::ENCODING;
32}
33
34unsafe impl RefEncode for PKMerchantCapability {
35    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
36}
37
38/// [Apple's documentation](https://developer.apple.com/documentation/passkit/pkmerchantcategorycode?language=objc)
39// NS_TYPED_EXTENSIBLE_ENUM
40pub type PKMerchantCategoryCode = i16;
41
42extern "C" {
43    /// [Apple's documentation](https://developer.apple.com/documentation/passkit/pkmerchantcategorycodenone?language=objc)
44    pub static PKMerchantCategoryCodeNone: PKMerchantCategoryCode;
45}
46
47/// [Apple's documentation](https://developer.apple.com/documentation/passkit/pkaddressfield?language=objc)
48// NS_OPTIONS
49#[deprecated = "Use PKContactField and -requiredShippingContactFields / -requiredBillingContactFields"]
50#[repr(transparent)]
51#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
52pub struct PKAddressField(pub NSUInteger);
53bitflags::bitflags! {
54    impl PKAddressField: NSUInteger {
55        #[doc(alias = "PKAddressFieldNone")]
56#[deprecated = "Use PKContactField and -requiredShippingContactFields / -requiredBillingContactFields"]
57        const None = 0;
58        #[doc(alias = "PKAddressFieldPostalAddress")]
59#[deprecated = "Use PKContactField and -requiredShippingContactFields / -requiredBillingContactFields"]
60        const PostalAddress = 1<<0;
61        #[doc(alias = "PKAddressFieldPhone")]
62#[deprecated = "Use PKContactField and -requiredShippingContactFields / -requiredBillingContactFields"]
63        const Phone = 1<<1;
64        #[doc(alias = "PKAddressFieldEmail")]
65#[deprecated = "Use PKContactField and -requiredShippingContactFields / -requiredBillingContactFields"]
66        const Email = 1<<2;
67        #[doc(alias = "PKAddressFieldName")]
68        const Name = 1<<3;
69        #[doc(alias = "PKAddressFieldAll")]
70#[deprecated = "Use PKContactField and -requiredShippingContactFields / -requiredBillingContactFields"]
71        const All = PKAddressField::PostalAddress.0|PKAddressField::Phone.0|PKAddressField::Email.0|PKAddressField::Name.0;
72    }
73}
74
75unsafe impl Encode for PKAddressField {
76    const ENCODING: Encoding = NSUInteger::ENCODING;
77}
78
79unsafe impl RefEncode for PKAddressField {
80    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
81}
82
83/// [Apple's documentation](https://developer.apple.com/documentation/passkit/pkshippingtype?language=objc)
84// NS_ENUM
85#[repr(transparent)]
86#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
87pub struct PKShippingType(pub NSUInteger);
88impl PKShippingType {
89    #[doc(alias = "PKShippingTypeShipping")]
90    pub const Shipping: Self = Self(0);
91    #[doc(alias = "PKShippingTypeDelivery")]
92    pub const Delivery: Self = Self(1);
93    #[doc(alias = "PKShippingTypeStorePickup")]
94    pub const StorePickup: Self = Self(2);
95    #[doc(alias = "PKShippingTypeServicePickup")]
96    pub const ServicePickup: Self = Self(3);
97}
98
99unsafe impl Encode for PKShippingType {
100    const ENCODING: Encoding = NSUInteger::ENCODING;
101}
102
103unsafe impl RefEncode for PKShippingType {
104    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
105}
106
107/// [Apple's documentation](https://developer.apple.com/documentation/passkit/pkshippingcontacteditingmode?language=objc)
108// NS_ENUM
109#[repr(transparent)]
110#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
111pub struct PKShippingContactEditingMode(pub NSUInteger);
112impl PKShippingContactEditingMode {
113    #[doc(alias = "PKShippingContactEditingModeAvailable")]
114    pub const Available: Self = Self(1);
115    #[doc(alias = "PKShippingContactEditingModeStorePickup")]
116    pub const StorePickup: Self = Self(2);
117    #[doc(alias = "PKShippingContactEditingModeEnabled")]
118    pub const Enabled: Self = Self(PKShippingContactEditingMode::Available.0);
119}
120
121unsafe impl Encode for PKShippingContactEditingMode {
122    const ENCODING: Encoding = NSUInteger::ENCODING;
123}
124
125unsafe impl RefEncode for PKShippingContactEditingMode {
126    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
127}
128
129/// [Apple's documentation](https://developer.apple.com/documentation/passkit/pkapplepaylateravailability?language=objc)
130// NS_ENUM
131#[repr(transparent)]
132#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord)]
133pub struct PKApplePayLaterAvailability(pub NSInteger);
134impl PKApplePayLaterAvailability {
135    #[doc(alias = "PKApplePayLaterAvailable")]
136    pub const Available: Self = Self(0);
137    /// Default state where Apple Pay Later is available
138    #[doc(alias = "PKApplePayLaterUnavailableItemIneligible")]
139    pub const UnavailableItemIneligible: Self = Self(1);
140    /// One or more ineligible items are in the basket, such as items with long fulfillment or prohibited MCCs
141    #[doc(alias = "PKApplePayLaterUnavailableRecurringTransaction")]
142    pub const UnavailableRecurringTransaction: Self = Self(2);
143}
144
145unsafe impl Encode for PKApplePayLaterAvailability {
146    const ENCODING: Encoding = NSInteger::ENCODING;
147}
148
149unsafe impl RefEncode for PKApplePayLaterAvailability {
150    const ENCODING_REF: Encoding = Encoding::Pointer(&Self::ENCODING);
151}
152
153extern_class!(
154    /// [Apple's documentation](https://developer.apple.com/documentation/passkit/pkpaymentrequest?language=objc)
155    #[unsafe(super(NSObject))]
156    #[derive(Debug, PartialEq, Eq, Hash)]
157    pub struct PKPaymentRequest;
158);
159
160extern_conformance!(
161    unsafe impl NSObjectProtocol for PKPaymentRequest {}
162);
163
164impl PKPaymentRequest {
165    extern_methods!(
166        #[cfg(feature = "PKConstants")]
167        #[unsafe(method(availableNetworks))]
168        #[unsafe(method_family = none)]
169        pub unsafe fn availableNetworks() -> Retained<NSArray<PKPaymentNetwork>>;
170
171        #[cfg(feature = "PKConstants")]
172        #[unsafe(method(paymentContactInvalidErrorWithContactField:localizedDescription:))]
173        #[unsafe(method_family = none)]
174        pub unsafe fn paymentContactInvalidErrorWithContactField_localizedDescription(
175            field: &PKContactField,
176            localized_description: Option<&NSString>,
177        ) -> Retained<NSError>;
178
179        #[unsafe(method(paymentShippingAddressInvalidErrorWithKey:localizedDescription:))]
180        #[unsafe(method_family = none)]
181        pub unsafe fn paymentShippingAddressInvalidErrorWithKey_localizedDescription(
182            postal_address_key: &NSString,
183            localized_description: Option<&NSString>,
184        ) -> Retained<NSError>;
185
186        #[unsafe(method(paymentBillingAddressInvalidErrorWithKey:localizedDescription:))]
187        #[unsafe(method_family = none)]
188        pub unsafe fn paymentBillingAddressInvalidErrorWithKey_localizedDescription(
189            postal_address_key: &NSString,
190            localized_description: Option<&NSString>,
191        ) -> Retained<NSError>;
192
193        #[unsafe(method(paymentShippingAddressUnserviceableErrorWithLocalizedDescription:))]
194        #[unsafe(method_family = none)]
195        pub unsafe fn paymentShippingAddressUnserviceableErrorWithLocalizedDescription(
196            localized_description: Option<&NSString>,
197        ) -> Retained<NSError>;
198
199        #[unsafe(method(paymentCouponCodeInvalidErrorWithLocalizedDescription:))]
200        #[unsafe(method_family = none)]
201        pub unsafe fn paymentCouponCodeInvalidErrorWithLocalizedDescription(
202            localized_description: Option<&NSString>,
203        ) -> Retained<NSError>;
204
205        #[unsafe(method(paymentCouponCodeExpiredErrorWithLocalizedDescription:))]
206        #[unsafe(method_family = none)]
207        pub unsafe fn paymentCouponCodeExpiredErrorWithLocalizedDescription(
208            localized_description: Option<&NSString>,
209        ) -> Retained<NSError>;
210
211        #[unsafe(method(merchantIdentifier))]
212        #[unsafe(method_family = none)]
213        pub unsafe fn merchantIdentifier(&self) -> Retained<NSString>;
214
215        /// Setter for [`merchantIdentifier`][Self::merchantIdentifier].
216        #[unsafe(method(setMerchantIdentifier:))]
217        #[unsafe(method_family = none)]
218        pub unsafe fn setMerchantIdentifier(&self, merchant_identifier: &NSString);
219
220        #[unsafe(method(countryCode))]
221        #[unsafe(method_family = none)]
222        pub unsafe fn countryCode(&self) -> Retained<NSString>;
223
224        /// Setter for [`countryCode`][Self::countryCode].
225        #[unsafe(method(setCountryCode:))]
226        #[unsafe(method_family = none)]
227        pub unsafe fn setCountryCode(&self, country_code: &NSString);
228
229        #[cfg(feature = "PKConstants")]
230        #[unsafe(method(supportedNetworks))]
231        #[unsafe(method_family = none)]
232        pub unsafe fn supportedNetworks(&self) -> Retained<NSArray<PKPaymentNetwork>>;
233
234        #[cfg(feature = "PKConstants")]
235        /// Setter for [`supportedNetworks`][Self::supportedNetworks].
236        #[unsafe(method(setSupportedNetworks:))]
237        #[unsafe(method_family = none)]
238        pub unsafe fn setSupportedNetworks(&self, supported_networks: &NSArray<PKPaymentNetwork>);
239
240        #[unsafe(method(merchantCapabilities))]
241        #[unsafe(method_family = none)]
242        pub unsafe fn merchantCapabilities(&self) -> PKMerchantCapability;
243
244        /// Setter for [`merchantCapabilities`][Self::merchantCapabilities].
245        #[unsafe(method(setMerchantCapabilities:))]
246        #[unsafe(method_family = none)]
247        pub unsafe fn setMerchantCapabilities(&self, merchant_capabilities: PKMerchantCapability);
248
249        #[unsafe(method(supportsCouponCode))]
250        #[unsafe(method_family = none)]
251        pub unsafe fn supportsCouponCode(&self) -> bool;
252
253        /// Setter for [`supportsCouponCode`][Self::supportsCouponCode].
254        #[unsafe(method(setSupportsCouponCode:))]
255        #[unsafe(method_family = none)]
256        pub unsafe fn setSupportsCouponCode(&self, supports_coupon_code: bool);
257
258        #[unsafe(method(couponCode))]
259        #[unsafe(method_family = none)]
260        pub unsafe fn couponCode(&self) -> Option<Retained<NSString>>;
261
262        /// Setter for [`couponCode`][Self::couponCode].
263        #[unsafe(method(setCouponCode:))]
264        #[unsafe(method_family = none)]
265        pub unsafe fn setCouponCode(&self, coupon_code: Option<&NSString>);
266
267        #[unsafe(method(merchantCategoryCode))]
268        #[unsafe(method_family = none)]
269        pub unsafe fn merchantCategoryCode(&self) -> PKMerchantCategoryCode;
270
271        /// Setter for [`merchantCategoryCode`][Self::merchantCategoryCode].
272        #[unsafe(method(setMerchantCategoryCode:))]
273        #[unsafe(method_family = none)]
274        pub unsafe fn setMerchantCategoryCode(
275            &self,
276            merchant_category_code: PKMerchantCategoryCode,
277        );
278
279        #[cfg(feature = "PKPaymentSummaryItem")]
280        #[unsafe(method(paymentSummaryItems))]
281        #[unsafe(method_family = none)]
282        pub unsafe fn paymentSummaryItems(&self) -> Retained<NSArray<PKPaymentSummaryItem>>;
283
284        #[cfg(feature = "PKPaymentSummaryItem")]
285        /// Setter for [`paymentSummaryItems`][Self::paymentSummaryItems].
286        #[unsafe(method(setPaymentSummaryItems:))]
287        #[unsafe(method_family = none)]
288        pub unsafe fn setPaymentSummaryItems(
289            &self,
290            payment_summary_items: &NSArray<PKPaymentSummaryItem>,
291        );
292
293        #[unsafe(method(currencyCode))]
294        #[unsafe(method_family = none)]
295        pub unsafe fn currencyCode(&self) -> Retained<NSString>;
296
297        /// Setter for [`currencyCode`][Self::currencyCode].
298        #[unsafe(method(setCurrencyCode:))]
299        #[unsafe(method_family = none)]
300        pub unsafe fn setCurrencyCode(&self, currency_code: &NSString);
301
302        #[cfg(feature = "PKConstants")]
303        #[unsafe(method(requiredBillingContactFields))]
304        #[unsafe(method_family = none)]
305        pub unsafe fn requiredBillingContactFields(&self) -> Retained<NSSet<PKContactField>>;
306
307        #[cfg(feature = "PKConstants")]
308        /// Setter for [`requiredBillingContactFields`][Self::requiredBillingContactFields].
309        #[unsafe(method(setRequiredBillingContactFields:))]
310        #[unsafe(method_family = none)]
311        pub unsafe fn setRequiredBillingContactFields(
312            &self,
313            required_billing_contact_fields: &NSSet<PKContactField>,
314        );
315
316        #[deprecated]
317        #[unsafe(method(requiredBillingAddressFields))]
318        #[unsafe(method_family = none)]
319        pub unsafe fn requiredBillingAddressFields(&self) -> PKAddressField;
320
321        /// Setter for [`requiredBillingAddressFields`][Self::requiredBillingAddressFields].
322        #[deprecated]
323        #[unsafe(method(setRequiredBillingAddressFields:))]
324        #[unsafe(method_family = none)]
325        pub unsafe fn setRequiredBillingAddressFields(
326            &self,
327            required_billing_address_fields: PKAddressField,
328        );
329
330        #[cfg(feature = "PKContact")]
331        #[unsafe(method(billingContact))]
332        #[unsafe(method_family = none)]
333        pub unsafe fn billingContact(&self) -> Option<Retained<PKContact>>;
334
335        #[cfg(feature = "PKContact")]
336        /// Setter for [`billingContact`][Self::billingContact].
337        #[unsafe(method(setBillingContact:))]
338        #[unsafe(method_family = none)]
339        pub unsafe fn setBillingContact(&self, billing_contact: Option<&PKContact>);
340
341        #[cfg(feature = "PKConstants")]
342        #[unsafe(method(requiredShippingContactFields))]
343        #[unsafe(method_family = none)]
344        pub unsafe fn requiredShippingContactFields(&self) -> Retained<NSSet<PKContactField>>;
345
346        #[cfg(feature = "PKConstants")]
347        /// Setter for [`requiredShippingContactFields`][Self::requiredShippingContactFields].
348        #[unsafe(method(setRequiredShippingContactFields:))]
349        #[unsafe(method_family = none)]
350        pub unsafe fn setRequiredShippingContactFields(
351            &self,
352            required_shipping_contact_fields: &NSSet<PKContactField>,
353        );
354
355        #[deprecated]
356        #[unsafe(method(requiredShippingAddressFields))]
357        #[unsafe(method_family = none)]
358        pub unsafe fn requiredShippingAddressFields(&self) -> PKAddressField;
359
360        /// Setter for [`requiredShippingAddressFields`][Self::requiredShippingAddressFields].
361        #[deprecated]
362        #[unsafe(method(setRequiredShippingAddressFields:))]
363        #[unsafe(method_family = none)]
364        pub unsafe fn setRequiredShippingAddressFields(
365            &self,
366            required_shipping_address_fields: PKAddressField,
367        );
368
369        #[cfg(feature = "PKContact")]
370        #[unsafe(method(shippingContact))]
371        #[unsafe(method_family = none)]
372        pub unsafe fn shippingContact(&self) -> Option<Retained<PKContact>>;
373
374        #[cfg(feature = "PKContact")]
375        /// Setter for [`shippingContact`][Self::shippingContact].
376        #[unsafe(method(setShippingContact:))]
377        #[unsafe(method_family = none)]
378        pub unsafe fn setShippingContact(&self, shipping_contact: Option<&PKContact>);
379
380        #[cfg(all(feature = "PKPaymentSummaryItem", feature = "PKShippingMethod"))]
381        #[unsafe(method(shippingMethods))]
382        #[unsafe(method_family = none)]
383        pub unsafe fn shippingMethods(&self) -> Option<Retained<NSArray<PKShippingMethod>>>;
384
385        #[cfg(all(feature = "PKPaymentSummaryItem", feature = "PKShippingMethod"))]
386        /// Setter for [`shippingMethods`][Self::shippingMethods].
387        #[unsafe(method(setShippingMethods:))]
388        #[unsafe(method_family = none)]
389        pub unsafe fn setShippingMethods(
390            &self,
391            shipping_methods: Option<&NSArray<PKShippingMethod>>,
392        );
393
394        #[unsafe(method(shippingType))]
395        #[unsafe(method_family = none)]
396        pub unsafe fn shippingType(&self) -> PKShippingType;
397
398        /// Setter for [`shippingType`][Self::shippingType].
399        #[unsafe(method(setShippingType:))]
400        #[unsafe(method_family = none)]
401        pub unsafe fn setShippingType(&self, shipping_type: PKShippingType);
402
403        #[unsafe(method(shippingContactEditingMode))]
404        #[unsafe(method_family = none)]
405        pub unsafe fn shippingContactEditingMode(&self) -> PKShippingContactEditingMode;
406
407        /// Setter for [`shippingContactEditingMode`][Self::shippingContactEditingMode].
408        #[unsafe(method(setShippingContactEditingMode:))]
409        #[unsafe(method_family = none)]
410        pub unsafe fn setShippingContactEditingMode(
411            &self,
412            shipping_contact_editing_mode: PKShippingContactEditingMode,
413        );
414
415        #[unsafe(method(applicationData))]
416        #[unsafe(method_family = none)]
417        pub unsafe fn applicationData(&self) -> Option<Retained<NSData>>;
418
419        /// Setter for [`applicationData`][Self::applicationData].
420        #[unsafe(method(setApplicationData:))]
421        #[unsafe(method_family = none)]
422        pub unsafe fn setApplicationData(&self, application_data: Option<&NSData>);
423
424        #[unsafe(method(supportedCountries))]
425        #[unsafe(method_family = none)]
426        pub unsafe fn supportedCountries(&self) -> Option<Retained<NSSet<NSString>>>;
427
428        /// Setter for [`supportedCountries`][Self::supportedCountries].
429        #[unsafe(method(setSupportedCountries:))]
430        #[unsafe(method_family = none)]
431        pub unsafe fn setSupportedCountries(&self, supported_countries: Option<&NSSet<NSString>>);
432
433        #[cfg(feature = "PKPaymentTokenContext")]
434        #[unsafe(method(multiTokenContexts))]
435        #[unsafe(method_family = none)]
436        pub unsafe fn multiTokenContexts(&self) -> Retained<NSArray<PKPaymentTokenContext>>;
437
438        #[cfg(feature = "PKPaymentTokenContext")]
439        /// Setter for [`multiTokenContexts`][Self::multiTokenContexts].
440        #[unsafe(method(setMultiTokenContexts:))]
441        #[unsafe(method_family = none)]
442        pub unsafe fn setMultiTokenContexts(
443            &self,
444            multi_token_contexts: &NSArray<PKPaymentTokenContext>,
445        );
446
447        #[cfg(feature = "PKRecurringPaymentRequest")]
448        #[unsafe(method(recurringPaymentRequest))]
449        #[unsafe(method_family = none)]
450        pub unsafe fn recurringPaymentRequest(&self)
451            -> Option<Retained<PKRecurringPaymentRequest>>;
452
453        #[cfg(feature = "PKRecurringPaymentRequest")]
454        /// Setter for [`recurringPaymentRequest`][Self::recurringPaymentRequest].
455        #[unsafe(method(setRecurringPaymentRequest:))]
456        #[unsafe(method_family = none)]
457        pub unsafe fn setRecurringPaymentRequest(
458            &self,
459            recurring_payment_request: Option<&PKRecurringPaymentRequest>,
460        );
461
462        #[cfg(feature = "PKAutomaticReloadPaymentRequest")]
463        #[unsafe(method(automaticReloadPaymentRequest))]
464        #[unsafe(method_family = none)]
465        pub unsafe fn automaticReloadPaymentRequest(
466            &self,
467        ) -> Option<Retained<PKAutomaticReloadPaymentRequest>>;
468
469        #[cfg(feature = "PKAutomaticReloadPaymentRequest")]
470        /// Setter for [`automaticReloadPaymentRequest`][Self::automaticReloadPaymentRequest].
471        #[unsafe(method(setAutomaticReloadPaymentRequest:))]
472        #[unsafe(method_family = none)]
473        pub unsafe fn setAutomaticReloadPaymentRequest(
474            &self,
475            automatic_reload_payment_request: Option<&PKAutomaticReloadPaymentRequest>,
476        );
477
478        #[cfg(feature = "PKDeferredPaymentRequest")]
479        #[unsafe(method(deferredPaymentRequest))]
480        #[unsafe(method_family = none)]
481        pub unsafe fn deferredPaymentRequest(&self) -> Option<Retained<PKDeferredPaymentRequest>>;
482
483        #[cfg(feature = "PKDeferredPaymentRequest")]
484        /// Setter for [`deferredPaymentRequest`][Self::deferredPaymentRequest].
485        #[unsafe(method(setDeferredPaymentRequest:))]
486        #[unsafe(method_family = none)]
487        pub unsafe fn setDeferredPaymentRequest(
488            &self,
489            deferred_payment_request: Option<&PKDeferredPaymentRequest>,
490        );
491
492        #[unsafe(method(applePayLaterAvailability))]
493        #[unsafe(method_family = none)]
494        pub unsafe fn applePayLaterAvailability(&self) -> PKApplePayLaterAvailability;
495
496        /// Setter for [`applePayLaterAvailability`][Self::applePayLaterAvailability].
497        #[unsafe(method(setApplePayLaterAvailability:))]
498        #[unsafe(method_family = none)]
499        pub unsafe fn setApplePayLaterAvailability(
500            &self,
501            apple_pay_later_availability: PKApplePayLaterAvailability,
502        );
503    );
504}
505
506/// Methods declared on superclass `NSObject`.
507impl PKPaymentRequest {
508    extern_methods!(
509        #[unsafe(method(init))]
510        #[unsafe(method_family = init)]
511        pub unsafe fn init(this: Allocated<Self>) -> Retained<Self>;
512
513        #[unsafe(method(new))]
514        #[unsafe(method_family = new)]
515        pub unsafe fn new() -> Retained<Self>;
516    );
517}