aspose_pdf_cloud 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/LICENSE +22 -0
- data/README.md +41 -0
- data/aspose_pdf_cloud.gemspec +26 -0
- data/lib/aspose_pdf_cloud.rb +91 -0
- data/lib/aspose_pdf_cloud/api/pdf_api.rb +3318 -0
- data/lib/aspose_pdf_cloud/api_client.rb +335 -0
- data/lib/aspose_pdf_cloud/api_error.rb +24 -0
- data/lib/aspose_pdf_cloud/configuration.rb +166 -0
- data/lib/aspose_pdf_cloud/models/annotation.rb +87 -0
- data/lib/aspose_pdf_cloud/models/annotation_response.rb +61 -0
- data/lib/aspose_pdf_cloud/models/annotations.rb +49 -0
- data/lib/aspose_pdf_cloud/models/annotations_response.rb +61 -0
- data/lib/aspose_pdf_cloud/models/append_document.rb +53 -0
- data/lib/aspose_pdf_cloud/models/attachment.rb +95 -0
- data/lib/aspose_pdf_cloud/models/attachment_response.rb +61 -0
- data/lib/aspose_pdf_cloud/models/attachments.rb +49 -0
- data/lib/aspose_pdf_cloud/models/attachments_response.rb +61 -0
- data/lib/aspose_pdf_cloud/models/barcode_response_list.rb +45 -0
- data/lib/aspose_pdf_cloud/models/base_object.rb +86 -0
- data/lib/aspose_pdf_cloud/models/base_response.rb +61 -0
- data/lib/aspose_pdf_cloud/models/bookmarks.rb +49 -0
- data/lib/aspose_pdf_cloud/models/bookmarks_response.rb +61 -0
- data/lib/aspose_pdf_cloud/models/color.rb +61 -0
- data/lib/aspose_pdf_cloud/models/document.rb +55 -0
- data/lib/aspose_pdf_cloud/models/document_pages_response.rb +61 -0
- data/lib/aspose_pdf_cloud/models/document_properties.rb +49 -0
- data/lib/aspose_pdf_cloud/models/document_properties_response.rb +61 -0
- data/lib/aspose_pdf_cloud/models/document_property.rb +63 -0
- data/lib/aspose_pdf_cloud/models/document_property_response.rb +61 -0
- data/lib/aspose_pdf_cloud/models/document_response.rb +61 -0
- data/lib/aspose_pdf_cloud/models/document_text_replace_response.rb +69 -0
- data/lib/aspose_pdf_cloud/models/field.rb +83 -0
- data/lib/aspose_pdf_cloud/models/field_response.rb +61 -0
- data/lib/aspose_pdf_cloud/models/fields.rb +49 -0
- data/lib/aspose_pdf_cloud/models/fields_response.rb +61 -0
- data/lib/aspose_pdf_cloud/models/image.rb +55 -0
- data/lib/aspose_pdf_cloud/models/image_response.rb +61 -0
- data/lib/aspose_pdf_cloud/models/images.rb +49 -0
- data/lib/aspose_pdf_cloud/models/images_response.rb +61 -0
- data/lib/aspose_pdf_cloud/models/link.rb +61 -0
- data/lib/aspose_pdf_cloud/models/link_annotation.rb +71 -0
- data/lib/aspose_pdf_cloud/models/link_annotation_response.rb +61 -0
- data/lib/aspose_pdf_cloud/models/link_annotations.rb +49 -0
- data/lib/aspose_pdf_cloud/models/link_annotations_response.rb +61 -0
- data/lib/aspose_pdf_cloud/models/link_element.rb +39 -0
- data/lib/aspose_pdf_cloud/models/merge_documents.rb +39 -0
- data/lib/aspose_pdf_cloud/models/page.rb +63 -0
- data/lib/aspose_pdf_cloud/models/page_response.rb +61 -0
- data/lib/aspose_pdf_cloud/models/page_text_replace_response.rb +69 -0
- data/lib/aspose_pdf_cloud/models/page_word_count.rb +45 -0
- data/lib/aspose_pdf_cloud/models/pages.rb +49 -0
- data/lib/aspose_pdf_cloud/models/rectangle.rb +61 -0
- data/lib/aspose_pdf_cloud/models/signature.rb +109 -0
- data/lib/aspose_pdf_cloud/models/split_result.rb +39 -0
- data/lib/aspose_pdf_cloud/models/split_result_document.rb +69 -0
- data/lib/aspose_pdf_cloud/models/split_result_response.rb +61 -0
- data/lib/aspose_pdf_cloud/models/stamp.rb +205 -0
- data/lib/aspose_pdf_cloud/models/text_format.rb +63 -0
- data/lib/aspose_pdf_cloud/models/text_format_response.rb +61 -0
- data/lib/aspose_pdf_cloud/models/text_item.rb +55 -0
- data/lib/aspose_pdf_cloud/models/text_item_response.rb +61 -0
- data/lib/aspose_pdf_cloud/models/text_items.rb +49 -0
- data/lib/aspose_pdf_cloud/models/text_items_response.rb +61 -0
- data/lib/aspose_pdf_cloud/models/text_replace.rb +53 -0
- data/lib/aspose_pdf_cloud/models/text_replace_list_request.rb +39 -0
- data/lib/aspose_pdf_cloud/models/text_state.rb +69 -0
- data/lib/aspose_pdf_cloud/models/tiff_export_options.rb +157 -0
- data/lib/aspose_pdf_cloud/models/word_count.rb +39 -0
- data/lib/aspose_pdf_cloud/models/word_count_response.rb +61 -0
- data/lib/aspose_pdf_cloud/version.rb +3 -0
- data/test/data/Sample-Annotation-Property.pdf +0 -0
- data/test/data/Sample-Annotation.pdf +0 -0
- data/test/data/Sample-Bookmark.pdf +0 -0
- data/test/data/Sample.pdf +0 -0
- data/test/data/SampleAttachment.pdf +0 -0
- data/test/data/SampleBarCodeImage.pdf +0 -0
- data/test/data/SampleImage.pdf +0 -0
- data/test/data/aspose-cloud.png +0 -0
- data/test/data/pkc7-sample.pfx +0 -0
- data/test/data/sample-field.pdf +0 -0
- data/test/data/sample-home.jpg +0 -0
- data/test/data/sample-input-2.pdf +0 -0
- data/test/data/sample-input.pdf +0 -0
- data/test/data/sample-merged.pdf +0 -0
- data/test/data/sample.tiff +0 -0
- data/test/pdf_tests.rb +623 -0
- metadata +216 -0
@@ -0,0 +1,61 @@
|
|
1
|
+
module AsposePDFCloud
|
2
|
+
#
|
3
|
+
class Link < BaseObject
|
4
|
+
attr_accessor :href, :rel, :type, :title
|
5
|
+
# attribute mapping from ruby-style variable name to JSON key
|
6
|
+
def self.attribute_map
|
7
|
+
{
|
8
|
+
|
9
|
+
#
|
10
|
+
:'href' => :'Href',
|
11
|
+
|
12
|
+
#
|
13
|
+
:'rel' => :'Rel',
|
14
|
+
|
15
|
+
#
|
16
|
+
:'type' => :'Type',
|
17
|
+
|
18
|
+
#
|
19
|
+
:'title' => :'Title'
|
20
|
+
|
21
|
+
}
|
22
|
+
end
|
23
|
+
|
24
|
+
# attribute type
|
25
|
+
def self.swagger_types
|
26
|
+
{
|
27
|
+
:'href' => :'String',
|
28
|
+
:'rel' => :'String',
|
29
|
+
:'type' => :'String',
|
30
|
+
:'title' => :'String'
|
31
|
+
|
32
|
+
}
|
33
|
+
end
|
34
|
+
|
35
|
+
def initialize(attributes = {})
|
36
|
+
return if !attributes.is_a?(Hash) || attributes.empty?
|
37
|
+
|
38
|
+
# convert string to symbol for hash key
|
39
|
+
attributes = attributes.inject({}){|memo,(k,v)| memo[k.to_sym] = v; memo}
|
40
|
+
|
41
|
+
|
42
|
+
if attributes[:'Href']
|
43
|
+
self.href = attributes[:'Href']
|
44
|
+
end
|
45
|
+
|
46
|
+
if attributes[:'Rel']
|
47
|
+
self.rel = attributes[:'Rel']
|
48
|
+
end
|
49
|
+
|
50
|
+
if attributes[:'Type']
|
51
|
+
self.type = attributes[:'Type']
|
52
|
+
end
|
53
|
+
|
54
|
+
if attributes[:'Title']
|
55
|
+
self.title = attributes[:'Title']
|
56
|
+
end
|
57
|
+
|
58
|
+
end
|
59
|
+
|
60
|
+
end
|
61
|
+
end
|
@@ -0,0 +1,71 @@
|
|
1
|
+
module AsposePDFCloud
|
2
|
+
#
|
3
|
+
class LinkAnnotation < BaseObject
|
4
|
+
attr_accessor :action_type, :action, :highlighting, :color, :links
|
5
|
+
# attribute mapping from ruby-style variable name to JSON key
|
6
|
+
def self.attribute_map
|
7
|
+
{
|
8
|
+
|
9
|
+
#
|
10
|
+
:'action_type' => :'ActionType',
|
11
|
+
|
12
|
+
#
|
13
|
+
:'action' => :'Action',
|
14
|
+
|
15
|
+
#
|
16
|
+
:'highlighting' => :'Highlighting',
|
17
|
+
|
18
|
+
#
|
19
|
+
:'color' => :'Color',
|
20
|
+
|
21
|
+
#
|
22
|
+
:'links' => :'Links'
|
23
|
+
|
24
|
+
}
|
25
|
+
end
|
26
|
+
|
27
|
+
# attribute type
|
28
|
+
def self.swagger_types
|
29
|
+
{
|
30
|
+
:'action_type' => :'String',
|
31
|
+
:'action' => :'String',
|
32
|
+
:'highlighting' => :'String',
|
33
|
+
:'color' => :'Color',
|
34
|
+
:'links' => :'Array<Link>'
|
35
|
+
|
36
|
+
}
|
37
|
+
end
|
38
|
+
|
39
|
+
def initialize(attributes = {})
|
40
|
+
return if !attributes.is_a?(Hash) || attributes.empty?
|
41
|
+
|
42
|
+
# convert string to symbol for hash key
|
43
|
+
attributes = attributes.inject({}){|memo,(k,v)| memo[k.to_sym] = v; memo}
|
44
|
+
|
45
|
+
|
46
|
+
if attributes[:'ActionType']
|
47
|
+
self.action_type = attributes[:'ActionType']
|
48
|
+
end
|
49
|
+
|
50
|
+
if attributes[:'Action']
|
51
|
+
self.action = attributes[:'Action']
|
52
|
+
end
|
53
|
+
|
54
|
+
if attributes[:'Highlighting']
|
55
|
+
self.highlighting = attributes[:'Highlighting']
|
56
|
+
end
|
57
|
+
|
58
|
+
if attributes[:'Color']
|
59
|
+
self.color = attributes[:'Color']
|
60
|
+
end
|
61
|
+
|
62
|
+
if attributes[:'Links']
|
63
|
+
if (value = attributes[:'Links']).is_a?(Array)
|
64
|
+
self.links = value
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
68
|
+
end
|
69
|
+
|
70
|
+
end
|
71
|
+
end
|
@@ -0,0 +1,61 @@
|
|
1
|
+
module AsposePDFCloud
|
2
|
+
#
|
3
|
+
class LinkAnnotationResponse < BaseObject
|
4
|
+
attr_accessor :link, :status, :code
|
5
|
+
# attribute mapping from ruby-style variable name to JSON key
|
6
|
+
def self.attribute_map
|
7
|
+
{
|
8
|
+
|
9
|
+
#
|
10
|
+
:'link' => :'Link',
|
11
|
+
|
12
|
+
#
|
13
|
+
:'status' => :'Status',
|
14
|
+
|
15
|
+
#
|
16
|
+
:'code' => :'Code'
|
17
|
+
|
18
|
+
}
|
19
|
+
end
|
20
|
+
|
21
|
+
# attribute type
|
22
|
+
def self.swagger_types
|
23
|
+
{
|
24
|
+
:'link' => :'LinkAnnotation',
|
25
|
+
:'status' => :'String',
|
26
|
+
:'code' => :'String'
|
27
|
+
|
28
|
+
}
|
29
|
+
end
|
30
|
+
|
31
|
+
def initialize(attributes = {})
|
32
|
+
return if !attributes.is_a?(Hash) || attributes.empty?
|
33
|
+
|
34
|
+
# convert string to symbol for hash key
|
35
|
+
attributes = attributes.inject({}){|memo,(k,v)| memo[k.to_sym] = v; memo}
|
36
|
+
|
37
|
+
|
38
|
+
if attributes[:'Link']
|
39
|
+
self.link = attributes[:'Link']
|
40
|
+
end
|
41
|
+
|
42
|
+
if attributes[:'Status']
|
43
|
+
self.status = attributes[:'Status']
|
44
|
+
end
|
45
|
+
|
46
|
+
if attributes[:'Code']
|
47
|
+
self.code = attributes[:'Code']
|
48
|
+
end
|
49
|
+
|
50
|
+
end
|
51
|
+
|
52
|
+
def status=(status)
|
53
|
+
allowed_values = ["Continue", "SwitchingProtocols", "OK", "Created", "Accepted", "NonAuthoritativeInformation", "NoContent", "ResetContent", "PartialContent", "MultipleChoices", "Ambiguous", "MovedPermanently", "Moved", "Found", "Redirect", "SeeOther", "RedirectMethod", "NotModified", "UseProxy", "Unused", "TemporaryRedirect", "RedirectKeepVerb", "BadRequest", "Unauthorized", "PaymentRequired", "Forbidden", "NotFound", "MethodNotAllowed", "NotAcceptable", "ProxyAuthenticationRequired", "RequestTimeout", "Conflict", "Gone", "LengthRequired", "PreconditionFailed", "RequestEntityTooLarge", "RequestUriTooLong", "UnsupportedMediaType", "RequestedRangeNotSatisfiable", "ExpectationFailed", "UpgradeRequired", "InternalServerError", "NotImplemented", "BadGateway", "ServiceUnavailable", "GatewayTimeout", "HttpVersionNotSupported"]
|
54
|
+
if status && !allowed_values.include?(status)
|
55
|
+
fail "invalid value for 'status', must be one of #{allowed_values}"
|
56
|
+
end
|
57
|
+
@status = status
|
58
|
+
end
|
59
|
+
|
60
|
+
end
|
61
|
+
end
|
@@ -0,0 +1,49 @@
|
|
1
|
+
module AsposePDFCloud
|
2
|
+
#
|
3
|
+
class LinkAnnotations < BaseObject
|
4
|
+
attr_accessor :list, :links
|
5
|
+
# attribute mapping from ruby-style variable name to JSON key
|
6
|
+
def self.attribute_map
|
7
|
+
{
|
8
|
+
|
9
|
+
#
|
10
|
+
:'list' => :'List',
|
11
|
+
|
12
|
+
#
|
13
|
+
:'links' => :'Links'
|
14
|
+
|
15
|
+
}
|
16
|
+
end
|
17
|
+
|
18
|
+
# attribute type
|
19
|
+
def self.swagger_types
|
20
|
+
{
|
21
|
+
:'list' => :'Array<LinkElement>',
|
22
|
+
:'links' => :'Array<Link>'
|
23
|
+
|
24
|
+
}
|
25
|
+
end
|
26
|
+
|
27
|
+
def initialize(attributes = {})
|
28
|
+
return if !attributes.is_a?(Hash) || attributes.empty?
|
29
|
+
|
30
|
+
# convert string to symbol for hash key
|
31
|
+
attributes = attributes.inject({}){|memo,(k,v)| memo[k.to_sym] = v; memo}
|
32
|
+
|
33
|
+
|
34
|
+
if attributes[:'List']
|
35
|
+
if (value = attributes[:'List']).is_a?(Array)
|
36
|
+
self.list = value
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
if attributes[:'Links']
|
41
|
+
if (value = attributes[:'Links']).is_a?(Array)
|
42
|
+
self.links = value
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
end
|
47
|
+
|
48
|
+
end
|
49
|
+
end
|
@@ -0,0 +1,61 @@
|
|
1
|
+
module AsposePDFCloud
|
2
|
+
#
|
3
|
+
class LinkAnnotationsResponse < BaseObject
|
4
|
+
attr_accessor :links, :status, :code
|
5
|
+
# attribute mapping from ruby-style variable name to JSON key
|
6
|
+
def self.attribute_map
|
7
|
+
{
|
8
|
+
|
9
|
+
#
|
10
|
+
:'links' => :'Links',
|
11
|
+
|
12
|
+
#
|
13
|
+
:'status' => :'Status',
|
14
|
+
|
15
|
+
#
|
16
|
+
:'code' => :'Code'
|
17
|
+
|
18
|
+
}
|
19
|
+
end
|
20
|
+
|
21
|
+
# attribute type
|
22
|
+
def self.swagger_types
|
23
|
+
{
|
24
|
+
:'links' => :'LinkAnnotations',
|
25
|
+
:'status' => :'String',
|
26
|
+
:'code' => :'String'
|
27
|
+
|
28
|
+
}
|
29
|
+
end
|
30
|
+
|
31
|
+
def initialize(attributes = {})
|
32
|
+
return if !attributes.is_a?(Hash) || attributes.empty?
|
33
|
+
|
34
|
+
# convert string to symbol for hash key
|
35
|
+
attributes = attributes.inject({}){|memo,(k,v)| memo[k.to_sym] = v; memo}
|
36
|
+
|
37
|
+
|
38
|
+
if attributes[:'Links']
|
39
|
+
self.links = attributes[:'Links']
|
40
|
+
end
|
41
|
+
|
42
|
+
if attributes[:'Status']
|
43
|
+
self.status = attributes[:'Status']
|
44
|
+
end
|
45
|
+
|
46
|
+
if attributes[:'Code']
|
47
|
+
self.code = attributes[:'Code']
|
48
|
+
end
|
49
|
+
|
50
|
+
end
|
51
|
+
|
52
|
+
def status=(status)
|
53
|
+
allowed_values = ["Continue", "SwitchingProtocols", "OK", "Created", "Accepted", "NonAuthoritativeInformation", "NoContent", "ResetContent", "PartialContent", "MultipleChoices", "Ambiguous", "MovedPermanently", "Moved", "Found", "Redirect", "SeeOther", "RedirectMethod", "NotModified", "UseProxy", "Unused", "TemporaryRedirect", "RedirectKeepVerb", "BadRequest", "Unauthorized", "PaymentRequired", "Forbidden", "NotFound", "MethodNotAllowed", "NotAcceptable", "ProxyAuthenticationRequired", "RequestTimeout", "Conflict", "Gone", "LengthRequired", "PreconditionFailed", "RequestEntityTooLarge", "RequestUriTooLong", "UnsupportedMediaType", "RequestedRangeNotSatisfiable", "ExpectationFailed", "UpgradeRequired", "InternalServerError", "NotImplemented", "BadGateway", "ServiceUnavailable", "GatewayTimeout", "HttpVersionNotSupported"]
|
54
|
+
if status && !allowed_values.include?(status)
|
55
|
+
fail "invalid value for 'status', must be one of #{allowed_values}"
|
56
|
+
end
|
57
|
+
@status = status
|
58
|
+
end
|
59
|
+
|
60
|
+
end
|
61
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
module AsposePDFCloud
|
2
|
+
#
|
3
|
+
class LinkElement < BaseObject
|
4
|
+
attr_accessor :links
|
5
|
+
# attribute mapping from ruby-style variable name to JSON key
|
6
|
+
def self.attribute_map
|
7
|
+
{
|
8
|
+
|
9
|
+
#
|
10
|
+
:'links' => :'Links'
|
11
|
+
|
12
|
+
}
|
13
|
+
end
|
14
|
+
|
15
|
+
# attribute type
|
16
|
+
def self.swagger_types
|
17
|
+
{
|
18
|
+
:'links' => :'Array<Link>'
|
19
|
+
|
20
|
+
}
|
21
|
+
end
|
22
|
+
|
23
|
+
def initialize(attributes = {})
|
24
|
+
return if !attributes.is_a?(Hash) || attributes.empty?
|
25
|
+
|
26
|
+
# convert string to symbol for hash key
|
27
|
+
attributes = attributes.inject({}){|memo,(k,v)| memo[k.to_sym] = v; memo}
|
28
|
+
|
29
|
+
|
30
|
+
if attributes[:'Links']
|
31
|
+
if (value = attributes[:'Links']).is_a?(Array)
|
32
|
+
self.links = value
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
end
|
37
|
+
|
38
|
+
end
|
39
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
module AsposePDFCloud
|
2
|
+
#
|
3
|
+
class MergeDocuments < BaseObject
|
4
|
+
attr_accessor :list
|
5
|
+
# attribute mapping from ruby-style variable name to JSON key
|
6
|
+
def self.attribute_map
|
7
|
+
{
|
8
|
+
|
9
|
+
#
|
10
|
+
:'list' => :'List'
|
11
|
+
|
12
|
+
}
|
13
|
+
end
|
14
|
+
|
15
|
+
# attribute type
|
16
|
+
def self.swagger_types
|
17
|
+
{
|
18
|
+
:'list' => :'Array<String>'
|
19
|
+
|
20
|
+
}
|
21
|
+
end
|
22
|
+
|
23
|
+
def initialize(attributes = {})
|
24
|
+
return if !attributes.is_a?(Hash) || attributes.empty?
|
25
|
+
|
26
|
+
# convert string to symbol for hash key
|
27
|
+
attributes = attributes.inject({}){|memo,(k,v)| memo[k.to_sym] = v; memo}
|
28
|
+
|
29
|
+
|
30
|
+
if attributes[:'List']
|
31
|
+
if (value = attributes[:'List']).is_a?(Array)
|
32
|
+
self.list = value
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
end
|
37
|
+
|
38
|
+
end
|
39
|
+
end
|
@@ -0,0 +1,63 @@
|
|
1
|
+
module AsposePDFCloud
|
2
|
+
#
|
3
|
+
class Page < BaseObject
|
4
|
+
attr_accessor :id, :images, :rectangle, :links
|
5
|
+
# attribute mapping from ruby-style variable name to JSON key
|
6
|
+
def self.attribute_map
|
7
|
+
{
|
8
|
+
|
9
|
+
#
|
10
|
+
:'id' => :'Id',
|
11
|
+
|
12
|
+
#
|
13
|
+
:'images' => :'Images',
|
14
|
+
|
15
|
+
#
|
16
|
+
:'rectangle' => :'Rectangle',
|
17
|
+
|
18
|
+
#
|
19
|
+
:'links' => :'Links'
|
20
|
+
|
21
|
+
}
|
22
|
+
end
|
23
|
+
|
24
|
+
# attribute type
|
25
|
+
def self.swagger_types
|
26
|
+
{
|
27
|
+
:'id' => :'Integer',
|
28
|
+
:'images' => :'Images',
|
29
|
+
:'rectangle' => :'Rectangle',
|
30
|
+
:'links' => :'Array<Link>'
|
31
|
+
|
32
|
+
}
|
33
|
+
end
|
34
|
+
|
35
|
+
def initialize(attributes = {})
|
36
|
+
return if !attributes.is_a?(Hash) || attributes.empty?
|
37
|
+
|
38
|
+
# convert string to symbol for hash key
|
39
|
+
attributes = attributes.inject({}){|memo,(k,v)| memo[k.to_sym] = v; memo}
|
40
|
+
|
41
|
+
|
42
|
+
if attributes[:'Id']
|
43
|
+
self.id = attributes[:'Id']
|
44
|
+
end
|
45
|
+
|
46
|
+
if attributes[:'Images']
|
47
|
+
self.images = attributes[:'Images']
|
48
|
+
end
|
49
|
+
|
50
|
+
if attributes[:'Rectangle']
|
51
|
+
self.rectangle = attributes[:'Rectangle']
|
52
|
+
end
|
53
|
+
|
54
|
+
if attributes[:'Links']
|
55
|
+
if (value = attributes[:'Links']).is_a?(Array)
|
56
|
+
self.links = value
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
end
|
61
|
+
|
62
|
+
end
|
63
|
+
end
|