Merge pull request #37959 from kargakis/add-ready-replicas

Automatic merge from submit-queue

Add ready replicas in Deployments

Fixes https://github.com/kubernetes/kubernetes/issues/28381

@kubernetes/deployment PTAL
This commit is contained in:
Kubernetes Submit Queue 2017-01-02 04:46:21 -08:00 committed by GitHub
commit 75c5f4d6d3
17 changed files with 5859 additions and 5727 deletions

View File

@ -35210,6 +35210,11 @@
"type": "integer", "type": "integer",
"format": "int64" "format": "int64"
}, },
"readyReplicas": {
"description": "Total number of ready pods targeted by this deployment.",
"type": "integer",
"format": "int32"
},
"replicas": { "replicas": {
"description": "Total number of non-terminated pods targeted by this deployment (their labels match the selector).", "description": "Total number of non-terminated pods targeted by this deployment (their labels match the selector).",
"type": "integer", "type": "integer",

View File

@ -8947,6 +8947,11 @@
"format": "int32", "format": "int32",
"description": "Total number of non-terminated pods targeted by this deployment that have the desired template spec." "description": "Total number of non-terminated pods targeted by this deployment that have the desired template spec."
}, },
"readyReplicas": {
"type": "integer",
"format": "int32",
"description": "Total number of ready pods targeted by this deployment."
},
"availableReplicas": { "availableReplicas": {
"type": "integer", "type": "integer",
"format": "int32", "format": "int32",

View File

@ -469,6 +469,13 @@ span.icon > [class^="icon-"], span.icon > [class*=" icon-"] { cursor: default; }
<td class="tableblock halign-left valign-top"></td> <td class="tableblock halign-left valign-top"></td>
</tr> </tr>
<tr> <tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">readyReplicas</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Total number of ready pods targeted by this deployment.</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">false</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">integer (int32)</p></td>
<td class="tableblock halign-left valign-top"></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">availableReplicas</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">availableReplicas</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Total number of available pods (ready for at least minReadySeconds) targeted by this deployment.</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">Total number of available pods (ready for at least minReadySeconds) targeted by this deployment.</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">false</p></td> <td class="tableblock halign-left valign-top"><p class="tableblock">false</p></td>
@ -6919,7 +6926,7 @@ Both these may change in the future. Incoming requests are matched against the h
</div> </div>
<div id="footer"> <div id="footer">
<div id="footer-text"> <div id="footer-text">
Last updated 2016-12-16 21:59:42 UTC Last updated 2016-12-21 12:26:48 UTC
</div> </div>
</div> </div>
</body> </body>

View File

@ -11616,6 +11616,11 @@
"type": "integer", "type": "integer",
"format": "int64" "format": "int64"
}, },
"readyReplicas": {
"description": "Total number of ready pods targeted by this deployment.",
"type": "integer",
"format": "int32"
},
"replicas": { "replicas": {
"description": "Total number of non-terminated pods targeted by this deployment (their labels match the selector).", "description": "Total number of non-terminated pods targeted by this deployment (their labels match the selector).",
"type": "integer", "type": "integer",

View File

@ -312,6 +312,10 @@ type DeploymentStatus struct {
// +optional // +optional
UpdatedReplicas int32 UpdatedReplicas int32
// Total number of ready pods targeted by this deployment.
// +optional
ReadyReplicas int32
// Total number of available pods (ready for at least minReadySeconds) targeted by this deployment. // Total number of available pods (ready for at least minReadySeconds) targeted by this deployment.
// +optional // +optional
AvailableReplicas int32 AvailableReplicas int32

View File

@ -1058,6 +1058,9 @@ func (m *DeploymentStatus) MarshalTo(data []byte) (int, error) {
i += n i += n
} }
} }
data[i] = 0x38
i++
i = encodeVarintGenerated(data, i, uint64(m.ReadyReplicas))
return i, nil return i, nil
} }
@ -3060,6 +3063,7 @@ func (m *DeploymentStatus) Size() (n int) {
n += 1 + l + sovGenerated(uint64(l)) n += 1 + l + sovGenerated(uint64(l))
} }
} }
n += 1 + sovGenerated(uint64(m.ReadyReplicas))
return n return n
} }
@ -3903,6 +3907,7 @@ func (this *DeploymentStatus) String() string {
`AvailableReplicas:` + fmt.Sprintf("%v", this.AvailableReplicas) + `,`, `AvailableReplicas:` + fmt.Sprintf("%v", this.AvailableReplicas) + `,`,
`UnavailableReplicas:` + fmt.Sprintf("%v", this.UnavailableReplicas) + `,`, `UnavailableReplicas:` + fmt.Sprintf("%v", this.UnavailableReplicas) + `,`,
`Conditions:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Conditions), "DeploymentCondition", "DeploymentCondition", 1), `&`, ``, 1) + `,`, `Conditions:` + strings.Replace(strings.Replace(fmt.Sprintf("%v", this.Conditions), "DeploymentCondition", "DeploymentCondition", 1), `&`, ``, 1) + `,`,
`ReadyReplicas:` + fmt.Sprintf("%v", this.ReadyReplicas) + `,`,
`}`, `}`,
}, "") }, "")
return s return s
@ -6604,6 +6609,25 @@ func (m *DeploymentStatus) Unmarshal(data []byte) error {
return err return err
} }
iNdEx = postIndex iNdEx = postIndex
case 7:
if wireType != 0 {
return fmt.Errorf("proto: wrong wireType = %d for field ReadyReplicas", wireType)
}
m.ReadyReplicas = 0
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
return ErrIntOverflowGenerated
}
if iNdEx >= l {
return io.ErrUnexpectedEOF
}
b := data[iNdEx]
iNdEx++
m.ReadyReplicas |= (int32(b) & 0x7F) << shift
if b < 0x80 {
break
}
}
default: default:
iNdEx = preIndex iNdEx = preIndex
skippy, err := skipGenerated(data[iNdEx:]) skippy, err := skipGenerated(data[iNdEx:])
@ -12478,226 +12502,227 @@ var (
) )
var fileDescriptorGenerated = []byte{ var fileDescriptorGenerated = []byte{
// 3535 bytes of a gzipped FileDescriptorProto // 3546 bytes of a gzipped FileDescriptorProto
0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xe4, 0x5b, 0x4d, 0x6c, 0x1c, 0xc7, 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xe4, 0x5b, 0x4d, 0x6c, 0x1c, 0xc7,
0xb1, 0xd6, 0xec, 0x72, 0x45, 0xb2, 0x28, 0x92, 0x62, 0x93, 0xa6, 0xd6, 0xb4, 0xcd, 0x95, 0xc7, 0x95, 0x56, 0xcf, 0x70, 0x44, 0xf2, 0x8d, 0x48, 0x8a, 0x45, 0x9a, 0x1a, 0xd3, 0x36, 0x47, 0x6e,
0x78, 0xb6, 0x0c, 0x48, 0xcb, 0x27, 0xbd, 0x27, 0x3f, 0x5b, 0xb6, 0x65, 0x73, 0x49, 0x51, 0xa2, 0x63, 0x6d, 0x19, 0x90, 0x86, 0x2b, 0xed, 0xca, 0x6b, 0xcb, 0xb6, 0x6c, 0x0e, 0x29, 0x4a, 0xf4,
0x1f, 0x29, 0xad, 0x7b, 0x97, 0x8a, 0x63, 0x3b, 0x36, 0x86, 0xbb, 0xcd, 0xe5, 0x88, 0xf3, 0xe7, 0x92, 0xd2, 0xb8, 0x66, 0xa8, 0xf5, 0xda, 0x5e, 0x1b, 0xcd, 0x99, 0xe2, 0xb0, 0xc5, 0xfe, 0x73,
0x99, 0x1e, 0x9a, 0x6b, 0x23, 0xb0, 0x81, 0x20, 0x57, 0xc7, 0xb7, 0xe4, 0x90, 0x1c, 0x72, 0x08, 0x77, 0x35, 0xcd, 0xb1, 0xb1, 0xb0, 0x81, 0xc5, 0x5e, 0xbd, 0xbe, 0x6d, 0x0e, 0xce, 0x21, 0x87,
0x72, 0x8a, 0x11, 0x03, 0x01, 0x7c, 0xcc, 0x25, 0x3f, 0x4a, 0x90, 0x00, 0x4e, 0x80, 0x20, 0x41, 0x20, 0xa7, 0x18, 0x31, 0x10, 0xc0, 0xc7, 0x5c, 0xf2, 0xa3, 0x04, 0x09, 0xe0, 0x04, 0x08, 0x12,
0xe0, 0xd0, 0x31, 0xe3, 0xe4, 0x1e, 0xe4, 0xa6, 0x5c, 0x82, 0xee, 0xe9, 0xf9, 0xdd, 0x99, 0x95, 0x04, 0x0e, 0x13, 0x33, 0x4e, 0xee, 0x41, 0x6e, 0xca, 0x25, 0xa8, 0xea, 0xea, 0xdf, 0xe9, 0x1e,
0x76, 0xc9, 0x35, 0x02, 0xe4, 0xc6, 0xed, 0xae, 0xfa, 0xaa, 0xaa, 0xbb, 0xa6, 0xaa, 0xba, 0xbb, 0x69, 0x86, 0x1a, 0x23, 0x40, 0x6e, 0x9c, 0xaa, 0xf7, 0xbe, 0xf7, 0x53, 0xd5, 0xef, 0xbd, 0xaa,
0x08, 0xcf, 0xee, 0x3c, 0xe9, 0x94, 0x55, 0x73, 0x61, 0xc7, 0xdd, 0x24, 0xb6, 0x41, 0x28, 0x71, 0x7a, 0x84, 0xe7, 0x77, 0x9f, 0x76, 0x2a, 0xaa, 0xb9, 0xb8, 0xeb, 0x6e, 0x11, 0xdb, 0x20, 0x94,
0x16, 0xac, 0x9d, 0xd6, 0x82, 0x62, 0xa9, 0xce, 0x02, 0xd9, 0xa3, 0xc4, 0x70, 0x54, 0xd3, 0x70, 0x38, 0x8b, 0xd6, 0x6e, 0x7b, 0x51, 0xb1, 0x54, 0x67, 0x91, 0xec, 0x53, 0x62, 0x38, 0xaa, 0x69,
0x16, 0x76, 0xcf, 0x6f, 0x12, 0xaa, 0x9c, 0x5f, 0x68, 0x11, 0x83, 0xd8, 0x0a, 0x25, 0xcd, 0xb2, 0x38, 0x8b, 0x7b, 0xe7, 0xb7, 0x08, 0x55, 0xce, 0x2f, 0xb6, 0x89, 0x41, 0x6c, 0x85, 0x92, 0x56,
0x65, 0x9b, 0xd4, 0x44, 0xe7, 0x3c, 0xf6, 0x72, 0xc8, 0x5e, 0xb6, 0x76, 0x5a, 0x65, 0xc6, 0x5e, 0xc5, 0xb2, 0x4d, 0x6a, 0xa2, 0x73, 0x1e, 0x7b, 0x25, 0x64, 0xaf, 0x58, 0xbb, 0xed, 0x0a, 0x63,
0x0e, 0xd9, 0xcb, 0x82, 0x7d, 0xee, 0x5c, 0x4b, 0xa5, 0xdb, 0xee, 0x66, 0xb9, 0x61, 0xea, 0x0b, 0xaf, 0x84, 0xec, 0x15, 0xc1, 0x3e, 0x7f, 0xae, 0xad, 0xd2, 0x1d, 0x77, 0xab, 0xd2, 0x34, 0xf5,
0x2d, 0xb3, 0x65, 0x2e, 0x70, 0x94, 0x4d, 0x77, 0x8b, 0xff, 0xe2, 0x3f, 0xf8, 0x5f, 0x1e, 0xfa, 0xc5, 0xb6, 0xd9, 0x36, 0x17, 0x39, 0xca, 0x96, 0xbb, 0xcd, 0x7f, 0xf1, 0x1f, 0xfc, 0x2f, 0x0f,
0xdc, 0x85, 0x4c, 0xe5, 0x16, 0x6c, 0xe2, 0x98, 0xae, 0xdd, 0x20, 0x49, 0x8d, 0xe6, 0xce, 0x66, 0x7d, 0xfe, 0x42, 0xa6, 0x72, 0x8b, 0x36, 0x71, 0x4c, 0xd7, 0x6e, 0x92, 0xa4, 0x46, 0xf3, 0x67,
0xf3, 0xec, 0x76, 0xe8, 0xdf, 0x45, 0x82, 0xb3, 0xa0, 0x13, 0xaa, 0xa4, 0xf1, 0x9c, 0x4b, 0xe7, 0xb3, 0x79, 0xf6, 0xba, 0xf4, 0xef, 0x21, 0xc1, 0x59, 0xd4, 0x09, 0x55, 0xd2, 0x78, 0xce, 0xa5,
0xb1, 0x5d, 0x83, 0xaa, 0x7a, 0xa7, 0x42, 0xff, 0xdb, 0x9d, 0xdc, 0x69, 0x6c, 0x13, 0x5d, 0xe9, 0xf3, 0xd8, 0xae, 0x41, 0x55, 0xbd, 0x5b, 0xa1, 0x7f, 0xed, 0x4d, 0xee, 0x34, 0x77, 0x88, 0xae,
0xe0, 0x3a, 0x9f, 0xce, 0xe5, 0x52, 0x55, 0x5b, 0x50, 0x0d, 0xea, 0x50, 0x3b, 0xc9, 0x22, 0x97, 0x74, 0x71, 0x9d, 0x4f, 0xe7, 0x72, 0xa9, 0xaa, 0x2d, 0xaa, 0x06, 0x75, 0xa8, 0x9d, 0x64, 0x91,
0x01, 0x16, 0xab, 0xab, 0x37, 0x89, 0xcd, 0xd6, 0x1c, 0x9d, 0x86, 0x21, 0x43, 0xd1, 0x49, 0x51, 0x2b, 0x00, 0x4b, 0xb5, 0xb5, 0x9b, 0xc4, 0x66, 0x3e, 0x47, 0xa7, 0x61, 0xc4, 0x50, 0x74, 0x52,
0x3a, 0x2d, 0x9d, 0x19, 0xad, 0x9c, 0xb8, 0xbd, 0x5f, 0x3a, 0x76, 0xb0, 0x5f, 0x1a, 0xba, 0xae, 0x92, 0x4e, 0x4b, 0x67, 0xc6, 0xab, 0x27, 0x6e, 0x1f, 0x94, 0x8f, 0x1d, 0x1e, 0x94, 0x47, 0xae,
0xe8, 0x04, 0xf3, 0x19, 0xf9, 0x55, 0x98, 0x59, 0xaa, 0x6e, 0xd4, 0x15, 0xbb, 0x45, 0xe8, 0x06, 0x2b, 0x3a, 0xc1, 0x7c, 0x46, 0x7e, 0x1d, 0x66, 0x97, 0x6b, 0x9b, 0x0d, 0xc5, 0x6e, 0x13, 0xba,
0x55, 0x35, 0xf5, 0x2d, 0x85, 0x32, 0xce, 0x65, 0x38, 0x49, 0xf9, 0x60, 0x95, 0xd8, 0x0d, 0x62, 0x49, 0x55, 0x4d, 0x7d, 0x47, 0xa1, 0x8c, 0x73, 0x05, 0x4e, 0x52, 0x3e, 0x58, 0x23, 0x76, 0x93,
0x50, 0xa5, 0xe5, 0xa1, 0x14, 0x2a, 0x45, 0x81, 0x72, 0xb2, 0x9e, 0x98, 0xc7, 0x1d, 0x1c, 0xf2, 0x18, 0x54, 0x69, 0x7b, 0x28, 0x85, 0x6a, 0x49, 0xa0, 0x9c, 0x6c, 0x24, 0xe6, 0x71, 0x17, 0x87,
0x37, 0x25, 0xb8, 0x7f, 0xc9, 0x75, 0xa8, 0xa9, 0xaf, 0x13, 0x6a, 0xab, 0x8d, 0x25, 0xd7, 0xb6, 0xfc, 0xff, 0x12, 0x3c, 0xb8, 0xec, 0x3a, 0xd4, 0xd4, 0x37, 0x08, 0xb5, 0xd5, 0xe6, 0xb2, 0x6b,
0x89, 0x41, 0x6b, 0x54, 0xa1, 0xae, 0x73, 0x77, 0xed, 0xd0, 0x4b, 0x50, 0xd8, 0x55, 0x34, 0x97, 0xdb, 0xc4, 0xa0, 0x75, 0xaa, 0x50, 0xd7, 0xb9, 0xbb, 0x76, 0xe8, 0x15, 0x28, 0xec, 0x29, 0x9a,
0x14, 0x73, 0xa7, 0xa5, 0x33, 0x63, 0x17, 0xce, 0x96, 0x33, 0x3d, 0xad, 0xec, 0xfb, 0x42, 0xf9, 0x4b, 0x4a, 0xb9, 0xd3, 0xd2, 0x99, 0xe2, 0x85, 0xb3, 0x95, 0xcc, 0x9d, 0x56, 0xf1, 0xf7, 0x42,
0x45, 0x57, 0x31, 0xa8, 0x4a, 0xdb, 0x95, 0x19, 0x01, 0x78, 0x42, 0x48, 0xbd, 0xc9, 0x90, 0xb0, 0xe5, 0x65, 0x57, 0x31, 0xa8, 0x4a, 0x3b, 0xd5, 0x59, 0x01, 0x78, 0x42, 0x48, 0xbd, 0xc9, 0x90,
0x07, 0x28, 0xbf, 0x27, 0xc1, 0x43, 0x99, 0x9a, 0xad, 0xa9, 0x0e, 0x45, 0x3a, 0x14, 0x54, 0x4a, 0xb0, 0x07, 0x28, 0x7f, 0x20, 0xc1, 0x23, 0x99, 0x9a, 0xad, 0xab, 0x0e, 0x45, 0x3a, 0x14, 0x54,
0x74, 0xa7, 0x28, 0x9d, 0xce, 0x9f, 0x19, 0xbb, 0x70, 0xad, 0xdc, 0x93, 0x97, 0x97, 0x33, 0xc1, 0x4a, 0x74, 0xa7, 0x24, 0x9d, 0xce, 0x9f, 0x29, 0x5e, 0xb8, 0x56, 0xe9, 0x6b, 0x97, 0x57, 0x32,
0x2b, 0xe3, 0x42, 0xaf, 0xc2, 0x2a, 0x83, 0xc7, 0x9e, 0x14, 0xf9, 0x1b, 0x12, 0xa0, 0x28, 0x8f, 0xc1, 0xab, 0x13, 0x42, 0xaf, 0xc2, 0x1a, 0x83, 0xc7, 0x9e, 0x14, 0xf9, 0xff, 0x24, 0x40, 0x51,
0xb7, 0xba, 0xf7, 0xb0, 0x46, 0x5f, 0x3a, 0xcc, 0x1a, 0x4d, 0x0b, 0xc0, 0x31, 0x4f, 0x5c, 0x6c, 0x1e, 0xcf, 0xbb, 0xf7, 0xe0, 0xa3, 0xff, 0x38, 0x8a, 0x8f, 0x66, 0x04, 0x60, 0xd1, 0x13, 0x17,
0x89, 0xde, 0x95, 0x60, 0xb6, 0x53, 0x23, 0xbe, 0x36, 0x5b, 0xf1, 0xb5, 0x59, 0x3c, 0xc4, 0xda, 0x73, 0xd1, 0xfb, 0x12, 0xcc, 0x75, 0x6b, 0xc4, 0x7d, 0xb3, 0x1d, 0xf7, 0xcd, 0xd2, 0x11, 0x7c,
0x78, 0xa8, 0x19, 0x8b, 0xf2, 0x83, 0x1c, 0x8c, 0x2e, 0x2b, 0x44, 0x37, 0x8d, 0x1a, 0xa1, 0xe8, 0xe3, 0xa1, 0x66, 0x38, 0xe5, 0xdb, 0x39, 0x18, 0x5f, 0x51, 0x88, 0x6e, 0x1a, 0x75, 0x42, 0xd1,
0x25, 0x18, 0x61, 0x9f, 0x63, 0x53, 0xa1, 0x0a, 0x5f, 0x8f, 0xb1, 0x0b, 0x67, 0xba, 0x18, 0xbb, 0x2b, 0x30, 0xc6, 0x3e, 0xc7, 0x96, 0x42, 0x15, 0xee, 0x8f, 0xe2, 0x85, 0x33, 0x3d, 0x8c, 0xdd,
0x7b, 0xbe, 0x7c, 0x63, 0xf3, 0x16, 0x69, 0xd0, 0x75, 0x42, 0x95, 0x0a, 0x12, 0xf8, 0x10, 0x8e, 0x3b, 0x5f, 0xb9, 0xb1, 0x75, 0x8b, 0x34, 0xe9, 0x06, 0xa1, 0x4a, 0x15, 0x09, 0x7c, 0x08, 0xc7,
0xe1, 0x00, 0x0d, 0xbd, 0x06, 0x43, 0x8e, 0x45, 0x1a, 0x62, 0x09, 0x9f, 0xe9, 0xd1, 0x9c, 0x40, 0x70, 0x80, 0x86, 0xde, 0x80, 0x11, 0xc7, 0x22, 0x4d, 0xe1, 0xc2, 0xe7, 0xfa, 0x34, 0x27, 0xd0,
0xc3, 0x9a, 0x45, 0x1a, 0xe1, 0x1e, 0xb1, 0x5f, 0x98, 0xe3, 0xa2, 0x2d, 0x38, 0xee, 0xf0, 0xcd, 0xb0, 0x6e, 0x91, 0x66, 0xb8, 0x46, 0xec, 0x17, 0xe6, 0xb8, 0x68, 0x1b, 0x8e, 0x3b, 0x7c, 0xf1,
0x2f, 0xe6, 0xb9, 0x84, 0xcb, 0x7d, 0x4b, 0xf0, 0x5c, 0x68, 0x42, 0xc8, 0x38, 0xee, 0xfd, 0xc6, 0x4b, 0x79, 0x2e, 0xe1, 0xf2, 0xc0, 0x12, 0xbc, 0x2d, 0x34, 0x29, 0x64, 0x1c, 0xf7, 0x7e, 0x63,
0x02, 0x5d, 0xfe, 0xa5, 0x04, 0xe3, 0x01, 0x2d, 0xdf, 0xa9, 0x97, 0x3b, 0xd6, 0xec, 0x6c, 0x37, 0x81, 0x2e, 0xff, 0x44, 0x82, 0x89, 0x80, 0x96, 0xaf, 0xd4, 0xab, 0x5d, 0x3e, 0x3b, 0xdb, 0x4b,
0xd9, 0x8c, 0x96, 0xad, 0x1c, 0xe3, 0xe5, 0xeb, 0x76, 0x52, 0x48, 0x1a, 0xf1, 0x47, 0x22, 0xab, 0x36, 0xa3, 0x65, 0x9e, 0x63, 0xbc, 0xdc, 0x6f, 0x27, 0x85, 0xa4, 0x31, 0x7f, 0x24, 0xe2, 0xb5,
0xf6, 0x15, 0xdf, 0x0b, 0x72, 0xdc, 0x0b, 0x9e, 0xec, 0xd7, 0xa8, 0x8c, 0xcd, 0xff, 0x45, 0xd4, 0xff, 0xf2, 0x77, 0x41, 0x8e, 0xef, 0x82, 0xa7, 0x07, 0x35, 0x2a, 0x63, 0xf1, 0x7f, 0x1c, 0x35,
0x18, 0xb6, 0x98, 0xe8, 0x15, 0x18, 0x71, 0x88, 0x46, 0x1a, 0xd4, 0xb4, 0x85, 0x31, 0xe7, 0xef, 0x86, 0x39, 0x13, 0xbd, 0x06, 0x63, 0x0e, 0xd1, 0x48, 0x93, 0x9a, 0xb6, 0x30, 0xe6, 0xfc, 0x3d,
0xc9, 0x18, 0x65, 0x93, 0x68, 0x35, 0xc1, 0x58, 0x39, 0xc1, 0xac, 0xf1, 0x7f, 0xe1, 0x00, 0x90, 0x19, 0xa3, 0x6c, 0x11, 0xad, 0x2e, 0x18, 0xab, 0x27, 0x98, 0x35, 0xfe, 0x2f, 0x1c, 0x00, 0x32,
0x81, 0x53, 0xa2, 0x5b, 0x9a, 0x42, 0xfd, 0x4f, 0xe9, 0x5c, 0x77, 0xef, 0xaa, 0x9a, 0xcd, 0xba, 0x70, 0x4a, 0x74, 0x4b, 0x53, 0xa8, 0xff, 0x29, 0x9d, 0xeb, 0xbd, 0xbb, 0x6a, 0x66, 0xab, 0x21,
0x60, 0xe0, 0x1b, 0x1f, 0x2c, 0x95, 0x3f, 0x8a, 0x03, 0x40, 0xf9, 0x27, 0x39, 0x98, 0x4c, 0x6c, 0x18, 0xf8, 0xc2, 0x07, 0xae, 0xf2, 0x47, 0x71, 0x00, 0x28, 0x7f, 0x3f, 0x07, 0x53, 0x89, 0x45,
0x22, 0xba, 0x09, 0xb3, 0x0d, 0x2f, 0x30, 0x5c, 0x77, 0xf5, 0x4d, 0x62, 0xd7, 0x1a, 0xdb, 0xa4, 0x44, 0x37, 0x61, 0xae, 0xe9, 0x05, 0x86, 0xeb, 0xae, 0xbe, 0x45, 0xec, 0x7a, 0x73, 0x87, 0xb4,
0xe9, 0x6a, 0xa4, 0x29, 0x02, 0xed, 0xbc, 0xc0, 0x9b, 0x5d, 0x4a, 0xa5, 0xc2, 0x19, 0xdc, 0xe8, 0x5c, 0x8d, 0xb4, 0x44, 0xa0, 0x5d, 0x10, 0x78, 0x73, 0xcb, 0xa9, 0x54, 0x38, 0x83, 0x1b, 0xbd,
0x05, 0x40, 0x06, 0x1f, 0x5a, 0x57, 0x1d, 0x27, 0xc0, 0xcc, 0x71, 0xcc, 0x39, 0x81, 0x89, 0xae, 0x04, 0xc8, 0xe0, 0x43, 0x1b, 0xaa, 0xe3, 0x04, 0x98, 0x39, 0x8e, 0x39, 0x2f, 0x30, 0xd1, 0xf5,
0x77, 0x50, 0xe0, 0x14, 0x2e, 0xa6, 0x63, 0x93, 0x38, 0xaa, 0x4d, 0x9a, 0x49, 0x1d, 0xf3, 0x71, 0x2e, 0x0a, 0x9c, 0xc2, 0xc5, 0x74, 0x6c, 0x11, 0x47, 0xb5, 0x49, 0x2b, 0xa9, 0x63, 0x3e, 0xae,
0x1d, 0x97, 0x53, 0xa9, 0x70, 0x06, 0x37, 0xba, 0x08, 0x63, 0x9e, 0x34, 0x4c, 0x94, 0x66, 0xbb, 0xe3, 0x4a, 0x2a, 0x15, 0xce, 0xe0, 0x46, 0x17, 0xa1, 0xe8, 0x49, 0xc3, 0x44, 0x69, 0x75, 0x4a,
0x38, 0xc4, 0xc1, 0x82, 0x60, 0x74, 0x3d, 0x9c, 0xc2, 0x51, 0x3a, 0xf9, 0x87, 0x39, 0x80, 0x65, 0x23, 0x1c, 0x2c, 0x08, 0x46, 0xd7, 0xc3, 0x29, 0x1c, 0xa5, 0x93, 0xbf, 0x93, 0x03, 0x58, 0x21,
0x62, 0x69, 0x66, 0x5b, 0x27, 0xc6, 0x20, 0x03, 0xc2, 0xeb, 0xb1, 0x80, 0xf0, 0x6c, 0xaf, 0x9e, 0x96, 0x66, 0x76, 0x74, 0x62, 0x0c, 0x33, 0x20, 0xbc, 0x19, 0x0b, 0x08, 0xcf, 0xf7, 0xbb, 0xb3,
0x1d, 0xa8, 0x98, 0x19, 0x11, 0x5a, 0x89, 0x88, 0xf0, 0x5c, 0xff, 0x22, 0xba, 0x87, 0x84, 0x3f, 0x03, 0x15, 0x33, 0x23, 0x42, 0x3b, 0x11, 0x11, 0x5e, 0x18, 0x5c, 0x44, 0xef, 0x90, 0xf0, 0xdb,
0xe5, 0x61, 0x3a, 0x24, 0x5e, 0x32, 0x8d, 0xa6, 0xca, 0x13, 0xfc, 0xd3, 0x30, 0x44, 0xdb, 0x96, 0x3c, 0xcc, 0x84, 0xc4, 0xcb, 0xa6, 0xd1, 0x52, 0x79, 0x82, 0x7f, 0x16, 0x46, 0x68, 0xc7, 0xf2,
0x9f, 0x58, 0x1e, 0xf3, 0x55, 0xac, 0xb7, 0x2d, 0x72, 0x67, 0xbf, 0x74, 0x2a, 0x85, 0x85, 0x4d, 0x13, 0xcb, 0x13, 0xbe, 0x8a, 0x8d, 0x8e, 0x45, 0xee, 0x1c, 0x94, 0x4f, 0xa5, 0xb0, 0xb0, 0x29,
0x61, 0xce, 0x84, 0x6e, 0x06, 0xda, 0xe7, 0x38, 0xfb, 0xe5, 0xb8, 0xf0, 0x3b, 0xfb, 0xa5, 0xae, 0xcc, 0x99, 0xd0, 0xcd, 0x40, 0xfb, 0x1c, 0x67, 0xbf, 0x1c, 0x17, 0x7e, 0xe7, 0xa0, 0xdc, 0xb3,
0x15, 0x58, 0x39, 0xc0, 0x8c, 0x2b, 0x8b, 0x1e, 0x85, 0xe3, 0x36, 0x51, 0x1c, 0xd3, 0xe0, 0x1e, 0x02, 0xab, 0x04, 0x98, 0x71, 0x65, 0xd1, 0xe3, 0x70, 0xdc, 0x26, 0x8a, 0x63, 0x1a, 0x7c, 0x47,
0x31, 0x1a, 0x1a, 0x85, 0xf9, 0x28, 0x16, 0xb3, 0xe8, 0x71, 0x18, 0xd6, 0x89, 0xe3, 0xb0, 0xa2, 0x8c, 0x87, 0x46, 0x61, 0x3e, 0x8a, 0xc5, 0x2c, 0x7a, 0x12, 0x46, 0x75, 0xe2, 0x38, 0xac, 0x28,
0xa4, 0xc0, 0x09, 0x27, 0x05, 0xe1, 0xf0, 0xba, 0x37, 0x8c, 0xfd, 0x79, 0xb4, 0x0d, 0x13, 0x9a, 0x29, 0x70, 0xc2, 0x29, 0x41, 0x38, 0xba, 0xe1, 0x0d, 0x63, 0x7f, 0x1e, 0xed, 0xc0, 0xa4, 0xa6,
0xe2, 0xd0, 0x0d, 0xab, 0xa9, 0x50, 0x52, 0x57, 0x75, 0x52, 0x3c, 0x7e, 0x37, 0x4f, 0x09, 0x23, 0x38, 0x74, 0xd3, 0x6a, 0x29, 0x94, 0x34, 0x54, 0x9d, 0x94, 0x8e, 0xdf, 0x6d, 0xa7, 0x84, 0x91,
0x07, 0xa3, 0xaf, 0xcc, 0x0a, 0xec, 0x89, 0xb5, 0x18, 0x0e, 0x4e, 0xe0, 0x22, 0x0a, 0x88, 0x8d, 0x83, 0xd1, 0x57, 0xe7, 0x04, 0xf6, 0xe4, 0x7a, 0x0c, 0x07, 0x27, 0x70, 0x11, 0x05, 0xc4, 0x46,
0xd4, 0x6d, 0xc5, 0x70, 0xbc, 0x05, 0x63, 0xd2, 0x86, 0x7b, 0x94, 0x16, 0x7c, 0xa1, 0x6b, 0x1d, 0x1a, 0xb6, 0x62, 0x38, 0x9e, 0xc3, 0x98, 0xb4, 0xd1, 0x3e, 0xa5, 0x05, 0x5f, 0xe8, 0x7a, 0x17,
0x58, 0x38, 0x05, 0x5f, 0xfe, 0x95, 0x04, 0x13, 0xe1, 0x66, 0x0d, 0x3c, 0xe6, 0xbf, 0x16, 0x8f, 0x16, 0x4e, 0xc1, 0x97, 0x7f, 0x2a, 0xc1, 0x64, 0xb8, 0x58, 0x43, 0x8f, 0xf9, 0x6f, 0xc4, 0x63,
0xf9, 0x4f, 0xf5, 0xed, 0xb6, 0x19, 0x41, 0xff, 0x5b, 0x79, 0x40, 0x21, 0x11, 0x36, 0x35, 0x6d, 0xfe, 0x33, 0x03, 0x6f, 0xdb, 0x8c, 0xa0, 0xff, 0xb5, 0x3c, 0xa0, 0x90, 0x08, 0x9b, 0x9a, 0xb6,
0x53, 0x69, 0xec, 0xdc, 0x43, 0x19, 0xf4, 0x3d, 0x09, 0x90, 0xcb, 0x37, 0xa3, 0xb9, 0x68, 0x18, 0xa5, 0x34, 0x77, 0xef, 0xa1, 0x0c, 0xfa, 0xa6, 0x04, 0xc8, 0xe5, 0x8b, 0xd1, 0x5a, 0x32, 0x0c,
0x26, 0xe5, 0x65, 0xac, 0xaf, 0xe6, 0x97, 0xfb, 0x56, 0xd3, 0xd7, 0xa0, 0xbc, 0xd1, 0x81, 0x7d, 0x93, 0xf2, 0x32, 0xd6, 0x57, 0xf3, 0x3f, 0x07, 0x56, 0xd3, 0xd7, 0xa0, 0xb2, 0xd9, 0x85, 0x7d,
0xc5, 0xa0, 0x76, 0x3b, 0xdc, 0xaf, 0x4e, 0x02, 0x9c, 0xa2, 0x10, 0x7a, 0x03, 0xc0, 0x16, 0x98, 0xc5, 0xa0, 0x76, 0x27, 0x5c, 0xaf, 0x6e, 0x02, 0x9c, 0xa2, 0x10, 0x7a, 0x0b, 0xc0, 0x16, 0x98,
0x75, 0x53, 0x7c, 0xfc, 0xbd, 0xc6, 0x17, 0x5f, 0xa9, 0x25, 0xd3, 0xd8, 0x52, 0x5b, 0x61, 0x28, 0x0d, 0x53, 0x7c, 0xfc, 0xfd, 0xc6, 0x17, 0x5f, 0xa9, 0x65, 0xd3, 0xd8, 0x56, 0xdb, 0x61, 0x28,
0xc3, 0x01, 0x30, 0x8e, 0x08, 0x99, 0xbb, 0x02, 0xa7, 0x32, 0xb4, 0x47, 0x27, 0x21, 0xbf, 0x43, 0xc3, 0x01, 0x30, 0x8e, 0x08, 0x99, 0xbf, 0x02, 0xa7, 0x32, 0xb4, 0x47, 0x27, 0x21, 0xbf, 0x4b,
0xda, 0xde, 0xb2, 0x62, 0xf6, 0x27, 0x9a, 0x89, 0x96, 0x93, 0xa3, 0xa2, 0x16, 0xbc, 0x94, 0x7b, 0x3a, 0x9e, 0x5b, 0x31, 0xfb, 0x13, 0xcd, 0x46, 0xcb, 0xc9, 0x71, 0x51, 0x0b, 0x5e, 0xca, 0x3d,
0x52, 0x92, 0x3f, 0x2f, 0x44, 0x3d, 0x8d, 0x27, 0xe4, 0x33, 0x30, 0x62, 0x13, 0x4b, 0x53, 0x1b, 0x2d, 0xc9, 0x5f, 0x16, 0xa2, 0x3b, 0x8d, 0x27, 0xe4, 0x33, 0x30, 0x66, 0x13, 0x4b, 0x53, 0x9b,
0x8a, 0x23, 0x92, 0x16, 0xcf, 0xae, 0x58, 0x8c, 0xe1, 0x60, 0x36, 0x96, 0xba, 0x73, 0x83, 0x4c, 0x8a, 0x23, 0x92, 0x16, 0xcf, 0xae, 0x58, 0x8c, 0xe1, 0x60, 0x36, 0x96, 0xba, 0x73, 0xc3, 0x4c,
0xdd, 0xf9, 0x23, 0x4e, 0xdd, 0xc8, 0x84, 0x11, 0x87, 0xb2, 0x23, 0x56, 0xcb, 0xcb, 0x53, 0xbd, 0xdd, 0xf9, 0xfb, 0x9c, 0xba, 0x91, 0x09, 0x63, 0x0e, 0x65, 0x47, 0xac, 0xb6, 0x97, 0xa7, 0xfa,
0x97, 0xbb, 0xd1, 0x58, 0xed, 0x01, 0x85, 0x02, 0xfd, 0x11, 0x1c, 0x08, 0x41, 0x8b, 0x30, 0xa9, 0x2f, 0x77, 0xa3, 0xb1, 0xda, 0x03, 0x0a, 0x05, 0xfa, 0x23, 0x38, 0x10, 0x82, 0x96, 0x60, 0x4a,
0xab, 0x06, 0x4f, 0x78, 0x35, 0xd2, 0x30, 0x8d, 0xa6, 0xc3, 0x83, 0x5c, 0xa1, 0x72, 0x4a, 0x30, 0x57, 0x0d, 0x9e, 0xf0, 0xea, 0xa4, 0x69, 0x1a, 0x2d, 0x87, 0x07, 0xb9, 0x42, 0xf5, 0x94, 0x60,
0x4d, 0xae, 0xc7, 0xa7, 0x71, 0x92, 0x1e, 0xad, 0xc1, 0x8c, 0x4d, 0x76, 0x55, 0xa6, 0xc6, 0x35, 0x9a, 0xda, 0x88, 0x4f, 0xe3, 0x24, 0x3d, 0x5a, 0x87, 0x59, 0x9b, 0xec, 0xa9, 0x4c, 0x8d, 0x6b,
0xd5, 0xa1, 0xa6, 0xdd, 0x5e, 0x53, 0x75, 0x95, 0xf2, 0xd0, 0x57, 0xa8, 0x14, 0x0f, 0xf6, 0x4b, 0xaa, 0x43, 0x4d, 0xbb, 0xb3, 0xae, 0xea, 0x2a, 0xe5, 0xa1, 0xaf, 0x50, 0x2d, 0x1d, 0x1e, 0x94,
0x33, 0x38, 0x65, 0x1e, 0xa7, 0x72, 0xb1, 0xa8, 0x6c, 0x29, 0xae, 0x43, 0x9a, 0x3c, 0x98, 0x8d, 0x67, 0x71, 0xca, 0x3c, 0x4e, 0xe5, 0x62, 0x51, 0xd9, 0x52, 0x5c, 0x87, 0xb4, 0x78, 0x30, 0x1b,
0x84, 0x51, 0xb9, 0xca, 0x47, 0xb1, 0x98, 0x45, 0x7a, 0xcc, 0xb5, 0x47, 0x8e, 0xc2, 0xb5, 0x27, 0x0b, 0xa3, 0x72, 0x8d, 0x8f, 0x62, 0x31, 0x8b, 0xf4, 0xd8, 0xd6, 0x1e, 0xbb, 0x1f, 0x5b, 0x7b,
0xb2, 0xdd, 0x1a, 0x6d, 0xc0, 0x29, 0xcb, 0x36, 0x5b, 0x36, 0x71, 0x9c, 0x65, 0xa2, 0x34, 0x35, 0x32, 0x7b, 0x5b, 0xa3, 0x4d, 0x38, 0x65, 0xd9, 0x66, 0xdb, 0x26, 0x8e, 0xb3, 0x42, 0x94, 0x96,
0xd5, 0x20, 0xfe, 0x7a, 0x8d, 0x72, 0x3b, 0x1f, 0x38, 0xd8, 0x2f, 0x9d, 0xaa, 0xa6, 0x93, 0xe0, 0xa6, 0x1a, 0xc4, 0xf7, 0xd7, 0x38, 0xb7, 0xf3, 0xa1, 0xc3, 0x83, 0xf2, 0xa9, 0x5a, 0x3a, 0x09,
0x2c, 0x5e, 0xf9, 0xd3, 0x3c, 0x9c, 0x4c, 0x66, 0x57, 0x56, 0x53, 0x99, 0x9b, 0x0e, 0xb1, 0x77, 0xce, 0xe2, 0x95, 0x3f, 0x1a, 0x81, 0x93, 0xc9, 0xec, 0xca, 0x6a, 0x2a, 0x73, 0xcb, 0x21, 0xf6,
0x49, 0xf3, 0xaa, 0x77, 0xe2, 0x56, 0x4d, 0x83, 0xbb, 0x7c, 0x3e, 0x8c, 0x00, 0x37, 0x3a, 0x28, 0x1e, 0x69, 0x5d, 0xf5, 0x4e, 0xdc, 0xaa, 0x69, 0xf0, 0x2d, 0x9f, 0x0f, 0x23, 0xc0, 0x8d, 0x2e,
0x70, 0x0a, 0x17, 0x3a, 0x1b, 0xf9, 0x68, 0xbc, 0xaa, 0x2c, 0xf0, 0x86, 0x94, 0x0f, 0x67, 0x11, 0x0a, 0x9c, 0xc2, 0x85, 0xce, 0x46, 0x3e, 0x1a, 0xaf, 0x2a, 0x0b, 0x76, 0x43, 0xca, 0x87, 0xb3,
0x26, 0x45, 0x14, 0xf1, 0x27, 0x45, 0xe9, 0x15, 0x78, 0xc3, 0x46, 0x7c, 0x1a, 0x27, 0xe9, 0xd1, 0x04, 0x53, 0x22, 0x8a, 0xf8, 0x93, 0xa2, 0xf4, 0x0a, 0x76, 0xc3, 0x66, 0x7c, 0x1a, 0x27, 0xe9,
0x55, 0x98, 0x52, 0x76, 0x15, 0x55, 0x53, 0x36, 0x35, 0x12, 0x80, 0x78, 0x25, 0xd7, 0xfd, 0x02, 0xd1, 0x55, 0x98, 0x56, 0xf6, 0x14, 0x55, 0x53, 0xb6, 0x34, 0x12, 0x80, 0x78, 0x25, 0xd7, 0x83,
0x64, 0x6a, 0x31, 0x49, 0x80, 0x3b, 0x79, 0xd0, 0x3a, 0x4c, 0xbb, 0x46, 0x27, 0x94, 0xe7, 0x9d, 0x02, 0x64, 0x7a, 0x29, 0x49, 0x80, 0xbb, 0x79, 0xd0, 0x06, 0xcc, 0xb8, 0x46, 0x37, 0x94, 0xb7,
0x0f, 0x08, 0xa8, 0xe9, 0x8d, 0x4e, 0x12, 0x9c, 0xc6, 0x87, 0x76, 0x01, 0x1a, 0x7e, 0x21, 0xe0, 0x3b, 0x1f, 0x12, 0x50, 0x33, 0x9b, 0xdd, 0x24, 0x38, 0x8d, 0x0f, 0xed, 0x01, 0x34, 0xfd, 0x42,
0x14, 0x8f, 0xf3, 0x48, 0x5d, 0xe9, 0xfb, 0xdb, 0x0a, 0x6a, 0x8a, 0x30, 0x1e, 0x06, 0x43, 0x0e, 0xc0, 0x29, 0x1d, 0xe7, 0x91, 0xba, 0x3a, 0xf0, 0xb7, 0x15, 0xd4, 0x14, 0x61, 0x3c, 0x0c, 0x86,
0x8e, 0x48, 0x92, 0x7f, 0x23, 0x45, 0x73, 0x8c, 0xff, 0x05, 0xa2, 0x4b, 0xb1, 0x8a, 0xe8, 0xd1, 0x1c, 0x1c, 0x91, 0x84, 0x9e, 0x85, 0x09, 0x9b, 0xd7, 0x96, 0xbe, 0x01, 0xa3, 0xdc, 0x80, 0x07,
0x44, 0x45, 0x34, 0xdb, 0xc9, 0x11, 0x29, 0x88, 0xde, 0x81, 0x71, 0xe6, 0x99, 0xaa, 0xd1, 0xf2, 0x04, 0xdb, 0x04, 0x8e, 0x4e, 0xe2, 0x38, 0xad, 0xfc, 0x73, 0x29, 0x9a, 0xa0, 0xfc, 0xcf, 0x17,
0x76, 0x43, 0xc4, 0xb8, 0x95, 0x3e, 0xbc, 0x3f, 0xc0, 0x88, 0xe4, 0xca, 0xa9, 0x83, 0xfd, 0xd2, 0x5d, 0x8a, 0x95, 0x53, 0x8f, 0x27, 0xca, 0xa9, 0xb9, 0x6e, 0x8e, 0x48, 0x35, 0xf5, 0x1e, 0x4c,
0x78, 0x6c, 0x12, 0xc7, 0xe5, 0xc9, 0x1f, 0x4a, 0x30, 0xbb, 0x52, 0xbb, 0x6a, 0x9b, 0xae, 0xe5, 0xb0, 0x6d, 0xad, 0x1a, 0x6d, 0x6f, 0x29, 0x45, 0x80, 0x5c, 0x1d, 0xe0, 0xd3, 0x09, 0x30, 0x22,
0xab, 0x77, 0xc3, 0xf2, 0x32, 0xce, 0xff, 0xc1, 0x90, 0xed, 0x6a, 0xbe, 0x5d, 0x8f, 0xf8, 0x76, 0x89, 0x76, 0x9a, 0xdb, 0x14, 0x9d, 0xc4, 0x71, 0x79, 0xf2, 0x27, 0x12, 0xcc, 0xad, 0xd6, 0xaf,
0x61, 0x57, 0x63, 0x76, 0x4d, 0x27, 0xb8, 0x3c, 0xa3, 0x18, 0x03, 0x7a, 0x0d, 0x8e, 0xdb, 0x8a, 0xda, 0xa6, 0x6b, 0xf9, 0xea, 0xdd, 0xb0, 0x3c, 0x5f, 0xfd, 0x1b, 0x8c, 0xd8, 0xae, 0xe6, 0xdb,
0xd1, 0x22, 0x7e, 0x16, 0x7d, 0xa2, 0x47, 0x6b, 0x56, 0x97, 0x31, 0x63, 0x8f, 0x54, 0x71, 0x1c, 0xf5, 0x98, 0x6f, 0x17, 0x76, 0x35, 0x66, 0xd7, 0x4c, 0x82, 0xcb, 0x33, 0x8a, 0x31, 0xa0, 0x37,
0x0d, 0x0b, 0x54, 0xf9, 0x3b, 0x12, 0x4c, 0x5e, 0xab, 0xd7, 0xab, 0xab, 0x06, 0xff, 0x10, 0xab, 0xe0, 0xb8, 0xad, 0x18, 0x6d, 0xe2, 0xa7, 0xe0, 0xa7, 0xfa, 0xb4, 0x66, 0x6d, 0x05, 0x33, 0xf6,
0x0a, 0xdd, 0x66, 0x89, 0xde, 0x52, 0xe8, 0x76, 0x32, 0xd1, 0xb3, 0x39, 0xcc, 0x67, 0xd0, 0x36, 0x48, 0x09, 0xc8, 0xd1, 0xb0, 0x40, 0x95, 0xbf, 0x2e, 0xc1, 0xd4, 0xb5, 0x46, 0xa3, 0xb6, 0x66,
0x0c, 0xb3, 0x00, 0x40, 0x8c, 0x66, 0x9f, 0xd5, 0xb9, 0x10, 0x57, 0xf1, 0x40, 0xc2, 0xd2, 0x51, 0xf0, 0xaf, 0xb8, 0xa6, 0xd0, 0x1d, 0x56, 0x25, 0x58, 0x0a, 0xdd, 0x49, 0x56, 0x09, 0x6c, 0x0e,
0x0c, 0x60, 0x1f, 0x5e, 0x7e, 0x1b, 0x66, 0x22, 0xea, 0xb1, 0xf5, 0xe2, 0xf7, 0x23, 0xa8, 0x01, 0xf3, 0x19, 0xb4, 0x03, 0xa3, 0x2c, 0x7a, 0x10, 0xa3, 0x35, 0x60, 0x69, 0x2f, 0xc4, 0x55, 0x3d,
0x05, 0xa6, 0x89, 0x7f, 0xfb, 0xd1, 0xeb, 0x61, 0x3e, 0x61, 0x72, 0x58, 0x08, 0xb1, 0x5f, 0x0e, 0x90, 0xb0, 0xee, 0x14, 0x03, 0xd8, 0x87, 0x97, 0xdf, 0x85, 0xd9, 0x88, 0x7a, 0xcc, 0x5f, 0xfc,
0xf6, 0xb0, 0xe5, 0xdf, 0xe7, 0xe0, 0xd4, 0x35, 0xd3, 0x56, 0xdf, 0x32, 0x0d, 0xaa, 0x68, 0x55, 0x72, 0x05, 0x35, 0xa1, 0xc0, 0x34, 0xf1, 0xaf, 0x4e, 0xfa, 0xbd, 0x09, 0x48, 0x98, 0x1c, 0x56,
0xb3, 0xb9, 0xe8, 0x52, 0xd3, 0x69, 0x28, 0x1a, 0xb1, 0x07, 0x78, 0xee, 0xd1, 0x62, 0xe7, 0x9e, 0x51, 0xec, 0x97, 0x83, 0x3d, 0x6c, 0xf9, 0x57, 0x39, 0x38, 0x75, 0xcd, 0xb4, 0xd5, 0x77, 0x4c,
0x17, 0x7a, 0xb5, 0x2c, 0x5d, 0xdf, 0xcc, 0x43, 0x10, 0x4d, 0x1c, 0x82, 0xd6, 0x8e, 0x48, 0x5e, 0x83, 0x2a, 0x5a, 0xcd, 0x6c, 0x2d, 0xb9, 0xd4, 0x74, 0x9a, 0x8a, 0x46, 0xec, 0x21, 0x1e, 0x9a,
0xf7, 0x13, 0xd1, 0xdf, 0x24, 0x78, 0x20, 0x83, 0x73, 0xe0, 0xe5, 0xf3, 0x4e, 0xbc, 0x7c, 0x5e, 0xb4, 0xd8, 0xa1, 0xe9, 0xa5, 0x7e, 0x2d, 0x4b, 0xd7, 0x37, 0xf3, 0x04, 0x45, 0x13, 0x27, 0xa8,
0x39, 0x1a, 0x83, 0x33, 0x6a, 0xe9, 0x7f, 0xe6, 0x32, 0x0d, 0xe5, 0xd5, 0xdb, 0x1b, 0x30, 0xc2, 0xf5, 0xfb, 0x24, 0xaf, 0xf7, 0x71, 0xea, 0x4f, 0x12, 0x3c, 0x94, 0xc1, 0x39, 0xf4, 0xda, 0x7b,
0x7f, 0x61, 0xb2, 0x25, 0x0c, 0x5d, 0xea, 0x51, 0x9f, 0x9a, 0xbb, 0xe9, 0xdf, 0x29, 0x62, 0xb2, 0x37, 0x5e, 0x7b, 0xaf, 0xde, 0x1f, 0x83, 0x33, 0x0a, 0xf1, 0xbf, 0xe6, 0x32, 0x0d, 0xe5, 0xa5,
0x45, 0x6c, 0x62, 0x34, 0x48, 0xa4, 0xb6, 0x11, 0xe0, 0x38, 0x10, 0x83, 0xce, 0xc3, 0x18, 0xaf, 0xdf, 0x5b, 0x30, 0xc6, 0x7f, 0x61, 0xb2, 0x2d, 0x0c, 0x5d, 0xee, 0x53, 0x9f, 0xba, 0xbb, 0xe5,
0x55, 0x62, 0xe9, 0x6f, 0x92, 0x9d, 0xf9, 0xd7, 0xc3, 0x61, 0x1c, 0xa5, 0x41, 0x17, 0x61, 0x4c, 0x5f, 0x48, 0x62, 0xb2, 0x4d, 0x6c, 0x62, 0x34, 0x49, 0xa4, 0x30, 0x12, 0xe0, 0x38, 0x10, 0x83,
0x57, 0xf6, 0x12, 0xc9, 0x2f, 0xb8, 0x2a, 0x58, 0x0f, 0xa7, 0x70, 0x94, 0x0e, 0xbd, 0x03, 0x13, 0xce, 0x43, 0x91, 0x17, 0x3a, 0xb1, 0xdc, 0x39, 0x75, 0x78, 0x50, 0x2e, 0x6e, 0x84, 0xc3, 0x38,
0x0d, 0xcb, 0x8d, 0x5c, 0x69, 0x8b, 0xe2, 0xad, 0x57, 0x13, 0xd3, 0x6e, 0xc7, 0x2b, 0x88, 0x1d, 0x4a, 0x83, 0x2e, 0x42, 0x51, 0x57, 0xf6, 0x13, 0x99, 0x33, 0xb8, 0x67, 0xd8, 0x08, 0xa7, 0x70,
0x07, 0x97, 0xaa, 0x1b, 0x91, 0x31, 0x9c, 0x10, 0x27, 0xff, 0x38, 0x0f, 0x0f, 0x75, 0x75, 0x50, 0x94, 0x0e, 0xbd, 0x07, 0x93, 0x4d, 0xcb, 0x8d, 0xdc, 0x87, 0x8b, 0xca, 0xaf, 0x5f, 0x13, 0xd3,
0xb4, 0xd2, 0xa5, 0xa8, 0x98, 0xed, 0xa1, 0xa0, 0x50, 0x60, 0x9c, 0x1d, 0x0c, 0xf9, 0x72, 0xf3, 0xae, 0xd6, 0xab, 0x88, 0x9d, 0x25, 0x97, 0x6b, 0x9b, 0x91, 0x31, 0x9c, 0x10, 0x27, 0x7f, 0x2f,
0x33, 0x67, 0xae, 0xc7, 0x33, 0x27, 0x4f, 0x2f, 0x6b, 0x51, 0x08, 0x1c, 0x47, 0x64, 0x55, 0x88, 0x0f, 0x8f, 0xf4, 0xdc, 0xa0, 0x68, 0xb5, 0x47, 0x45, 0x32, 0xd7, 0x47, 0x35, 0xa2, 0xc0, 0x04,
0xb8, 0x6d, 0xca, 0xaa, 0x42, 0x96, 0xe2, 0xd3, 0x38, 0x49, 0xcf, 0x20, 0xc4, 0x65, 0x50, 0xa2, 0x3b, 0x55, 0x72, 0x77, 0xf3, 0x03, 0x6b, 0xae, 0xcf, 0x03, 0x2b, 0x4f, 0x2f, 0xeb, 0x51, 0x08,
0x06, 0x09, 0x20, 0x96, 0xe3, 0xd3, 0x38, 0x49, 0x8f, 0x74, 0x28, 0x09, 0xd4, 0xf8, 0xda, 0x47, 0x1c, 0x47, 0x64, 0x25, 0x8c, 0xb8, 0xaa, 0xca, 0x2a, 0x61, 0x96, 0xe3, 0xd3, 0x38, 0x49, 0xcf,
0xde, 0x28, 0xbc, 0x5a, 0xe4, 0x91, 0x83, 0xfd, 0x52, 0x69, 0xa9, 0x3b, 0x29, 0xbe, 0x1b, 0x96, 0x20, 0xc4, 0x4d, 0x52, 0xa2, 0x80, 0x09, 0x20, 0x56, 0xe2, 0xd3, 0x38, 0x49, 0x8f, 0x74, 0x28,
0xbc, 0x0e, 0xe3, 0xd7, 0x4c, 0x87, 0x56, 0x4d, 0x9b, 0xf2, 0xcc, 0x85, 0x1e, 0x82, 0xbc, 0xae, 0x0b, 0xd4, 0xb8, 0xef, 0x23, 0x0f, 0x1c, 0x5e, 0x21, 0xf3, 0xd8, 0xe1, 0x41, 0xb9, 0xbc, 0xdc,
0x1a, 0xe2, 0xa4, 0x33, 0x26, 0xd4, 0xce, 0x33, 0xcf, 0x65, 0xe3, 0x7c, 0x5a, 0xd9, 0x13, 0x4e, 0x9b, 0x14, 0xdf, 0x0d, 0x4b, 0xde, 0x80, 0x89, 0x6b, 0xa6, 0x43, 0x6b, 0xa6, 0x4d, 0x79, 0xe6,
0x1d, 0x4e, 0x2b, 0x7b, 0x98, 0x8d, 0xcb, 0x57, 0x61, 0x58, 0x64, 0xc4, 0x28, 0x50, 0xbe, 0x3b, 0x42, 0x8f, 0x40, 0x5e, 0x57, 0x0d, 0x71, 0x4c, 0x2a, 0x0a, 0xb5, 0xf3, 0x6c, 0xe7, 0xb2, 0x71,
0x50, 0x3e, 0x05, 0xe8, 0xfb, 0x39, 0x18, 0x16, 0x09, 0x64, 0x80, 0xa9, 0xe0, 0xd5, 0x58, 0x2a, 0x3e, 0xad, 0xec, 0x8b, 0x4d, 0x1d, 0x4e, 0x2b, 0xfb, 0x98, 0x8d, 0xcb, 0x57, 0x61, 0x54, 0x64,
0xb8, 0xd4, 0x5f, 0x92, 0xcd, 0x0c, 0xfd, 0xcd, 0x44, 0xe8, 0x7f, 0xa6, 0x4f, 0xfc, 0xee, 0xa1, 0xc4, 0x28, 0x50, 0xbe, 0x37, 0x50, 0x3e, 0x05, 0xe8, 0x5b, 0x39, 0x18, 0x15, 0x09, 0x64, 0x88,
0xfe, 0x03, 0x09, 0x26, 0xe2, 0xe9, 0x9e, 0x85, 0x13, 0xf6, 0x01, 0xa9, 0x0d, 0x72, 0x3d, 0xbc, 0xa9, 0xe0, 0xf5, 0x58, 0x2a, 0xb8, 0x34, 0x58, 0x92, 0xcd, 0x0c, 0xfd, 0xad, 0x44, 0xe8, 0x7f,
0x50, 0x08, 0xc2, 0x49, 0x2d, 0x9c, 0xc2, 0x51, 0x3a, 0x44, 0x02, 0x36, 0xe6, 0x0e, 0x62, 0x51, 0x6e, 0x40, 0xfc, 0xde, 0xa1, 0xfe, 0x63, 0x09, 0x26, 0xe3, 0xe9, 0x9e, 0x85, 0x13, 0xf6, 0x01,
0xca, 0x19, 0x4a, 0xbb, 0x54, 0xd5, 0xca, 0xde, 0x03, 0x5d, 0x79, 0xd5, 0xa0, 0x37, 0xec, 0x1a, 0xa9, 0x4d, 0x72, 0x3d, 0xbc, 0x8d, 0x08, 0xc2, 0x49, 0x3d, 0x9c, 0xc2, 0x51, 0x3a, 0x44, 0x02,
0xb5, 0x55, 0xa3, 0xd5, 0x21, 0x86, 0x7b, 0x56, 0x14, 0x57, 0xfe, 0x99, 0x04, 0x63, 0x42, 0xe1, 0x36, 0xb6, 0x1d, 0x84, 0x53, 0x2a, 0x19, 0x4a, 0xbb, 0x54, 0xd5, 0x2a, 0xde, 0xeb, 0x5e, 0x65,
0x81, 0xe7, 0xa2, 0x57, 0xe2, 0xb9, 0xe8, 0x89, 0x3e, 0xcb, 0xa8, 0xf4, 0xdc, 0xf3, 0x51, 0x68, 0xcd, 0xa0, 0x37, 0xec, 0x3a, 0xb5, 0x55, 0xa3, 0xdd, 0x25, 0x86, 0xef, 0xac, 0x28, 0xae, 0xfc,
0x08, 0x2b, 0x9c, 0x58, 0x5d, 0xb7, 0x6d, 0x3a, 0x34, 0x59, 0xd7, 0xb1, 0xef, 0x0b, 0xf3, 0x19, 0x43, 0x09, 0x8a, 0x42, 0xe1, 0xa1, 0xe7, 0xa2, 0xd7, 0xe2, 0xb9, 0xe8, 0xa9, 0x01, 0xcb, 0xa8,
0xf4, 0x75, 0x09, 0x4e, 0xaa, 0x89, 0x52, 0x4b, 0xac, 0xf3, 0x73, 0xfd, 0xa9, 0x16, 0xc0, 0x84, 0xf4, 0xdc, 0xf3, 0x69, 0x68, 0x08, 0x2b, 0x9c, 0x58, 0x5d, 0xb7, 0x63, 0x3a, 0x34, 0x59, 0xd7,
0x6f, 0x96, 0xc9, 0x19, 0xdc, 0x21, 0x52, 0x76, 0xa1, 0x83, 0x0a, 0x29, 0x30, 0xb4, 0x4d, 0xa9, 0xb1, 0xef, 0x0b, 0xf3, 0x19, 0xf4, 0xbf, 0x12, 0x9c, 0x54, 0x13, 0xa5, 0x96, 0xf0, 0xf3, 0x0b,
0xd5, 0x67, 0x96, 0x4c, 0x2b, 0x22, 0x2b, 0x23, 0xdc, 0xfc, 0x7a, 0xbd, 0x8a, 0x39, 0xb4, 0xfc, 0x83, 0xa9, 0x16, 0xc0, 0x84, 0x0f, 0x9e, 0xc9, 0x19, 0xdc, 0x25, 0x52, 0x76, 0xa1, 0x8b, 0x0a,
0x41, 0x2e, 0x58, 0xb0, 0x9a, 0xf7, 0x81, 0x04, 0x65, 0xae, 0x74, 0x14, 0x65, 0xee, 0x58, 0x5a, 0x29, 0x30, 0xb2, 0x43, 0xa9, 0x35, 0x60, 0x96, 0x4c, 0x2b, 0x22, 0xab, 0x63, 0xdc, 0xfc, 0x46,
0x89, 0x8b, 0x5e, 0x82, 0x3c, 0xd5, 0xfa, 0xbd, 0xcc, 0x13, 0x12, 0xea, 0x6b, 0xb5, 0x30, 0x48, 0xa3, 0x86, 0x39, 0xb4, 0xfc, 0x71, 0x2e, 0x70, 0x58, 0xdd, 0xfb, 0x40, 0x82, 0x32, 0x57, 0xba,
0xd5, 0xd7, 0x6a, 0x98, 0x41, 0xa2, 0xd7, 0xa1, 0xc0, 0x0e, 0x11, 0xec, 0xfb, 0xce, 0xf7, 0x1f, 0x1f, 0x65, 0x6e, 0x31, 0xad, 0xc4, 0x45, 0xaf, 0x40, 0x9e, 0x6a, 0x83, 0xde, 0x04, 0x0a, 0x09,
0x3f, 0xd8, 0x7a, 0x85, 0x1e, 0xc6, 0x7e, 0x39, 0xd8, 0xc3, 0x95, 0xdf, 0x86, 0xf1, 0x58, 0x10, 0x8d, 0xf5, 0x7a, 0x18, 0xa4, 0x1a, 0xeb, 0x75, 0xcc, 0x20, 0xd1, 0x9b, 0x50, 0x60, 0x87, 0x08,
0x40, 0xb7, 0xe0, 0x84, 0x66, 0x2a, 0xcd, 0x8a, 0xa2, 0x29, 0x46, 0x83, 0xf8, 0x2f, 0x44, 0xff, 0xf6, 0x7d, 0xe7, 0x07, 0x8f, 0x1f, 0xcc, 0x5f, 0xe1, 0x0e, 0x63, 0xbf, 0x1c, 0xec, 0xe1, 0xca,
0xdd, 0x3d, 0x1c, 0xae, 0x45, 0x38, 0x44, 0x30, 0x09, 0xde, 0x8d, 0xa3, 0x73, 0x38, 0x86, 0x2d, 0xef, 0xc2, 0x44, 0x2c, 0x08, 0xa0, 0x5b, 0x70, 0x42, 0x33, 0x95, 0x56, 0x55, 0xd1, 0x14, 0xa3,
0x2b, 0x00, 0xa1, 0xf5, 0xa8, 0x04, 0x05, 0xe6, 0xc2, 0xde, 0x81, 0x60, 0xb4, 0x32, 0xca, 0x74, 0x49, 0xfc, 0xe7, 0xa5, 0x7f, 0xee, 0x1d, 0x0e, 0xd7, 0x23, 0x1c, 0x22, 0x98, 0x04, 0x8f, 0xce,
0x65, 0x9e, 0xed, 0x60, 0x6f, 0x1c, 0x5d, 0x00, 0x70, 0x48, 0xc3, 0x26, 0x94, 0xc7, 0x1c, 0xef, 0xd1, 0x39, 0x1c, 0xc3, 0x96, 0x15, 0x80, 0xd0, 0x7a, 0x54, 0x86, 0x02, 0xdb, 0xc2, 0xde, 0x81,
0xce, 0x3c, 0x88, 0xbe, 0xb5, 0x60, 0x06, 0x47, 0xa8, 0xe4, 0x5f, 0x4b, 0x30, 0x7e, 0x9d, 0xd0, 0x60, 0xbc, 0x3a, 0xce, 0x74, 0x65, 0x3b, 0xdb, 0xc1, 0xde, 0x38, 0xba, 0x00, 0xe0, 0x90, 0xa6,
0x37, 0x4d, 0x7b, 0xa7, 0x6a, 0x6a, 0x6a, 0xa3, 0x3d, 0xc0, 0x58, 0xbf, 0x19, 0x8b, 0xf5, 0xcf, 0x4d, 0x28, 0x8f, 0x39, 0xde, 0x85, 0x7b, 0x10, 0x7d, 0xeb, 0xc1, 0x0c, 0x8e, 0x50, 0xc9, 0x3f,
0xf7, 0xb8, 0x57, 0x31, 0x2d, 0xb3, 0x22, 0xbe, 0xfc, 0x57, 0x09, 0x8a, 0x31, 0xca, 0x68, 0x78, 0x93, 0x60, 0xe2, 0x3a, 0xa1, 0x6f, 0x9b, 0xf6, 0x6e, 0xcd, 0xd4, 0xd4, 0x66, 0x67, 0x88, 0xb1,
0x20, 0x50, 0xb0, 0x4c, 0x9b, 0xfa, 0x47, 0xaa, 0x43, 0x69, 0xc0, 0x02, 0x69, 0xe4, 0x50, 0xc5, 0x7e, 0x2b, 0x16, 0xeb, 0x5f, 0xec, 0x73, 0xad, 0x62, 0x5a, 0x66, 0x45, 0x7c, 0xf9, 0x8f, 0x12,
0x60, 0xb1, 0x87, 0xce, 0xec, 0xdc, 0xb2, 0x4d, 0x5d, 0xf8, 0xfb, 0xe1, 0xa4, 0x10, 0x62, 0x87, 0x94, 0x62, 0x94, 0xd1, 0xf0, 0x40, 0xa0, 0x60, 0x99, 0x36, 0xf5, 0x8f, 0x54, 0x47, 0xd2, 0x80,
0x76, 0xae, 0xd8, 0xa6, 0x8e, 0x39, 0xb6, 0xfc, 0x5b, 0x09, 0xa6, 0x62, 0x94, 0x03, 0x0f, 0xe4, 0x05, 0xd2, 0xc8, 0xa1, 0x8a, 0xc1, 0x62, 0x0f, 0x9d, 0xd9, 0xb9, 0x6d, 0x9b, 0xba, 0xd8, 0xef,
0x4a, 0x3c, 0x90, 0x3f, 0x73, 0x18, 0xb3, 0x32, 0xc2, 0xf9, 0xdf, 0x93, 0x46, 0x31, 0xf3, 0x51, 0x47, 0x93, 0x42, 0x88, 0x1d, 0xda, 0xb9, 0x6a, 0x9b, 0x3a, 0xe6, 0xd8, 0xf2, 0x2f, 0x24, 0x98,
0x13, 0xc6, 0x2c, 0xb3, 0x59, 0x3b, 0xf4, 0x93, 0x2c, 0x3f, 0x00, 0x54, 0x43, 0x24, 0x1c, 0x85, 0x8e, 0x51, 0x0e, 0x3d, 0x90, 0x2b, 0xf1, 0x40, 0xfe, 0xdc, 0x51, 0xcc, 0xca, 0x08, 0xe7, 0x7f,
0x45, 0xbb, 0x30, 0x65, 0x28, 0x3a, 0x71, 0x2c, 0xa5, 0x41, 0x6a, 0x87, 0xbe, 0x43, 0xbe, 0xef, 0x4e, 0x1a, 0xc5, 0xcc, 0x47, 0x2d, 0x28, 0x5a, 0x66, 0xab, 0x7e, 0xe4, 0xf7, 0x5c, 0x7e, 0x00,
0x60, 0xbf, 0x34, 0x75, 0x3d, 0x89, 0x87, 0x3b, 0x45, 0xc8, 0x3f, 0xea, 0xb0, 0xd9, 0xb4, 0x29, 0xa8, 0x85, 0x48, 0x38, 0x0a, 0x8b, 0xf6, 0x60, 0xda, 0x50, 0x74, 0xe2, 0x58, 0x4a, 0x93, 0xd4,
0x7a, 0x11, 0x46, 0x78, 0xa7, 0x4d, 0xc3, 0xd4, 0x44, 0x32, 0xbb, 0xc8, 0xb6, 0xa5, 0x2a, 0xc6, 0x8f, 0x7c, 0x01, 0xfd, 0xc0, 0xe1, 0x41, 0x79, 0xfa, 0x7a, 0x12, 0x0f, 0x77, 0x8b, 0x90, 0xbf,
0xee, 0xec, 0x97, 0xfe, 0xab, 0xeb, 0xd3, 0x97, 0x4f, 0x88, 0x03, 0x18, 0xb4, 0x06, 0x43, 0x56, 0xdb, 0x65, 0xb3, 0x69, 0x53, 0xf4, 0x32, 0x8c, 0xf1, 0x36, 0x9d, 0xa6, 0xa9, 0x89, 0x64, 0x76,
0xff, 0x45, 0x05, 0x4f, 0x24, 0xbc, 0x92, 0xe0, 0x28, 0x9d, 0x5b, 0xc5, 0xd3, 0xc9, 0xf6, 0x11, 0x91, 0x2d, 0x4b, 0x4d, 0x8c, 0xdd, 0x39, 0x28, 0xff, 0x53, 0xcf, 0x77, 0x33, 0x9f, 0x10, 0x07,
0x6d, 0x55, 0x50, 0xc2, 0x64, 0x6e, 0x97, 0x0d, 0xc3, 0x22, 0xa7, 0x0a, 0x7f, 0xbc, 0x7a, 0x18, 0x30, 0x68, 0x1d, 0x46, 0xac, 0xc1, 0x8b, 0x0a, 0x9e, 0x48, 0x78, 0x25, 0xc1, 0x51, 0xba, 0x97,
0x7f, 0x8c, 0xe6, 0x81, 0xe0, 0xa6, 0xc6, 0x1f, 0xf4, 0x05, 0xc9, 0xbf, 0x93, 0x60, 0x8a, 0x2b, 0x8a, 0xa7, 0x93, 0x9d, 0xfb, 0xb4, 0x54, 0x41, 0x09, 0x93, 0xb9, 0x5c, 0x36, 0x8c, 0x8a, 0x9c,
0xd4, 0x70, 0x6d, 0x95, 0xb6, 0x07, 0x1e, 0x2f, 0xb7, 0x62, 0xf1, 0x72, 0xb9, 0x47, 0x03, 0x3b, 0x2a, 0xf6, 0xe3, 0xd5, 0xa3, 0xec, 0xc7, 0x68, 0x1e, 0x08, 0x6e, 0x6a, 0xfc, 0x41, 0x5f, 0x90,
0x34, 0xcd, 0x8c, 0x99, 0x7f, 0x94, 0xe0, 0xbe, 0x0e, 0xea, 0x81, 0xc7, 0x13, 0x12, 0x8f, 0x27, 0xfc, 0x4b, 0x09, 0xa6, 0xb9, 0x42, 0x4d, 0xd7, 0x56, 0x69, 0x67, 0xe8, 0xf1, 0x72, 0x3b, 0x16,
0xcf, 0x1f, 0xd6, 0xbc, 0x8c, 0x98, 0x72, 0x1b, 0x52, 0x8c, 0xe3, 0xce, 0x7a, 0x01, 0xc0, 0xb2, 0x2f, 0x57, 0xfa, 0x34, 0xb0, 0x4b, 0xd3, 0xcc, 0x98, 0xf9, 0x1b, 0x09, 0x1e, 0xe8, 0xa2, 0x1e,
0xd5, 0x5d, 0x55, 0x23, 0x2d, 0xd1, 0x0d, 0x31, 0x12, 0x6e, 0x48, 0x35, 0x98, 0xc1, 0x11, 0x2a, 0x7a, 0x3c, 0x21, 0xf1, 0x78, 0xf2, 0xe2, 0x51, 0xcd, 0xcb, 0x88, 0x29, 0xb7, 0x21, 0xc5, 0x38,
0xf4, 0x55, 0x98, 0x6d, 0x92, 0x2d, 0xc5, 0xd5, 0xe8, 0x62, 0xb3, 0xb9, 0xa4, 0x58, 0xca, 0xa6, 0xbe, 0x59, 0x2f, 0x00, 0x58, 0xb6, 0xba, 0xa7, 0x6a, 0xa4, 0x2d, 0x5a, 0x29, 0xc6, 0xc2, 0x05,
0xaa, 0xa9, 0x54, 0x15, 0x97, 0x97, 0xa3, 0x95, 0x2b, 0x5e, 0x97, 0x42, 0x1a, 0xc5, 0x9d, 0xfd, 0xa9, 0x05, 0x33, 0x38, 0x42, 0x85, 0xfe, 0x1b, 0xe6, 0x5a, 0x64, 0x5b, 0x71, 0x35, 0xba, 0xd4,
0xd2, 0x63, 0xdd, 0x9f, 0xab, 0x7d, 0xe2, 0x36, 0xce, 0x10, 0x82, 0xbe, 0x26, 0x41, 0xd1, 0x26, 0x6a, 0x2d, 0x2b, 0x96, 0xb2, 0xa5, 0x6a, 0x2a, 0x55, 0xc5, 0xe5, 0xe5, 0x78, 0xf5, 0x8a, 0xd7,
0x6f, 0xb8, 0xec, 0xbc, 0xba, 0x6c, 0x9b, 0x56, 0x4c, 0x83, 0x3c, 0xd7, 0xe0, 0xea, 0xc1, 0x7e, 0xe2, 0x90, 0x46, 0x71, 0xe7, 0xa0, 0xfc, 0x44, 0xef, 0xb7, 0x6e, 0x9f, 0xb8, 0x83, 0x33, 0x84,
0xa9, 0x88, 0x33, 0x68, 0x7a, 0xd1, 0x21, 0x53, 0x10, 0xa2, 0x30, 0xad, 0x68, 0x9a, 0xf9, 0x26, 0xa0, 0xff, 0x91, 0xa0, 0x64, 0x93, 0xb7, 0x5c, 0x76, 0x5e, 0x5d, 0xb1, 0x4d, 0x2b, 0xa6, 0x41,
0x89, 0xaf, 0xc0, 0x10, 0x97, 0x5f, 0x39, 0xd8, 0x2f, 0x4d, 0x2f, 0x76, 0x4e, 0xf7, 0x22, 0x3a, 0x9e, 0x6b, 0x70, 0xf5, 0xf0, 0xa0, 0x5c, 0xc2, 0x19, 0x34, 0xfd, 0xe8, 0x90, 0x29, 0x08, 0x51,
0x0d, 0x1e, 0x2d, 0xc0, 0xf0, 0xae, 0xa9, 0xb9, 0x3a, 0x71, 0x8a, 0x05, 0x2e, 0x89, 0xc5, 0xd8, 0x98, 0x51, 0x34, 0xcd, 0x7c, 0x9b, 0xc4, 0x3d, 0x30, 0xc2, 0xe5, 0x57, 0x0f, 0x0f, 0xca, 0x33,
0xe1, 0x9b, 0xde, 0xd0, 0x9d, 0xfd, 0xd2, 0xf1, 0x95, 0x1a, 0xbf, 0x55, 0xf6, 0xa9, 0xd8, 0x19, 0x4b, 0xdd, 0xd3, 0xfd, 0x88, 0x4e, 0x83, 0x47, 0x8b, 0x30, 0xba, 0x67, 0x6a, 0xae, 0x4e, 0x9c,
0x8c, 0xd5, 0x45, 0xe2, 0x43, 0xe7, 0xaf, 0x52, 0x23, 0x61, 0x64, 0xb9, 0x16, 0x4e, 0xe1, 0x28, 0x52, 0x81, 0x4b, 0x62, 0x31, 0x76, 0xf4, 0xa6, 0x37, 0x74, 0xe7, 0xa0, 0x7c, 0x7c, 0xb5, 0xce,
0x1d, 0xd2, 0x61, 0x74, 0x5b, 0x9c, 0xc7, 0x9d, 0xe2, 0x70, 0x5f, 0xb9, 0x2e, 0x76, 0x9e, 0xaf, 0x6f, 0x95, 0x7d, 0x2a, 0x76, 0x06, 0x63, 0x75, 0x91, 0xf8, 0xd0, 0xf9, 0x93, 0xd6, 0x58, 0x18,
0x4c, 0x09, 0x91, 0xa3, 0xfe, 0xb0, 0x83, 0x43, 0x09, 0xe8, 0x71, 0x18, 0xe6, 0x3f, 0x56, 0x97, 0x59, 0xae, 0x85, 0x53, 0x38, 0x4a, 0x87, 0x74, 0x18, 0xdf, 0x11, 0xe7, 0x71, 0xa7, 0x34, 0x3a,
0xf9, 0x5b, 0xd6, 0x48, 0x18, 0x7f, 0xae, 0x79, 0xc3, 0xd8, 0x9f, 0xf7, 0x49, 0x57, 0xab, 0x4b, 0x50, 0xae, 0x8b, 0x9d, 0xe7, 0xab, 0xd3, 0x42, 0xe4, 0xb8, 0x3f, 0xec, 0xe0, 0x50, 0x02, 0x7a,
0xfc, 0xe9, 0x29, 0x41, 0xba, 0x5a, 0x5d, 0xc2, 0xfe, 0x3c, 0xb2, 0x60, 0xd8, 0x21, 0x6b, 0xaa, 0x12, 0x46, 0xf9, 0x8f, 0xb5, 0x15, 0xfe, 0x10, 0x36, 0x16, 0xc6, 0x9f, 0x6b, 0xde, 0x30, 0xf6,
0xe1, 0xee, 0x15, 0x81, 0x7f, 0xb7, 0x57, 0x7a, 0xbd, 0x73, 0xbb, 0xc2, 0xb9, 0x13, 0xb7, 0xfc, 0xe7, 0x7d, 0xd2, 0xb5, 0xda, 0x32, 0x7f, 0xb7, 0x4a, 0x90, 0xae, 0xd5, 0x96, 0xb1, 0x3f, 0x8f,
0xa1, 0x44, 0x31, 0x8f, 0x7d, 0x31, 0x68, 0x0f, 0x46, 0x6d, 0xd7, 0x58, 0x74, 0x36, 0x1c, 0x62, 0x2c, 0x18, 0x75, 0xc8, 0xba, 0x6a, 0xb8, 0xfb, 0x25, 0xe0, 0xdf, 0xed, 0x95, 0x7e, 0xef, 0xdc,
0x17, 0xc7, 0xb8, 0xcc, 0x5e, 0x43, 0x32, 0xf6, 0xf9, 0x93, 0x52, 0x83, 0x15, 0x0c, 0x28, 0x70, 0xae, 0x70, 0xee, 0xc4, 0x2d, 0x7f, 0x28, 0x51, 0xcc, 0x63, 0x5f, 0x0c, 0xda, 0x87, 0x71, 0xdb,
0x28, 0x0c, 0x7d, 0x5b, 0x02, 0xe4, 0xb8, 0x96, 0xa5, 0x11, 0x9d, 0x18, 0x54, 0xd1, 0xf8, 0x43, 0x35, 0x96, 0x9c, 0x4d, 0x87, 0xd8, 0xa5, 0x22, 0x97, 0xd9, 0x6f, 0x48, 0xc6, 0x3e, 0x7f, 0x52,
0x83, 0x53, 0x3c, 0xc1, 0x75, 0xa8, 0xf6, 0x7c, 0xd7, 0x98, 0x04, 0x4a, 0x2a, 0x13, 0x3c, 0xc4, 0x6a, 0xe0, 0xc1, 0x80, 0x02, 0x87, 0xc2, 0xd0, 0x47, 0x12, 0x20, 0xc7, 0xb5, 0x2c, 0x8d, 0xe8,
0x75, 0x92, 0xe2, 0x14, 0x3d, 0xd8, 0x56, 0x6c, 0x39, 0xfc, 0xef, 0xe2, 0x78, 0x5f, 0x5b, 0x91, 0xc4, 0xa0, 0x8a, 0xc6, 0x1f, 0x1a, 0x9c, 0xd2, 0x09, 0xae, 0x43, 0xad, 0xef, 0xbb, 0xc6, 0x24,
0xfe, 0xe0, 0x12, 0x6e, 0x85, 0x98, 0xc7, 0xbe, 0x18, 0x74, 0x13, 0x66, 0x6d, 0xa2, 0x34, 0x6f, 0x50, 0x52, 0x99, 0xe0, 0x15, 0xaf, 0x9b, 0x14, 0xa7, 0xe8, 0xc1, 0x96, 0x62, 0xdb, 0xe1, 0x7f,
0x18, 0x5a, 0x1b, 0x9b, 0x26, 0x5d, 0x51, 0x35, 0xe2, 0xb4, 0x1d, 0x4a, 0xf4, 0xe2, 0x04, 0x77, 0x97, 0x26, 0x06, 0x5a, 0x8a, 0xf4, 0x07, 0x97, 0x70, 0x29, 0xc4, 0x3c, 0xf6, 0xc5, 0xa0, 0x9b,
0x9b, 0xa0, 0x9d, 0x0a, 0xa7, 0x52, 0xe1, 0x0c, 0x6e, 0xde, 0x17, 0x25, 0x6e, 0xc9, 0x06, 0xdb, 0x30, 0x67, 0x13, 0xa5, 0x75, 0xc3, 0xd0, 0x3a, 0xd8, 0x34, 0xe9, 0xaa, 0xaa, 0x11, 0xa7, 0xe3,
0x28, 0x79, 0xb8, 0xbe, 0xa8, 0x50, 0xc5, 0x81, 0xf5, 0x45, 0x45, 0x44, 0x74, 0xbf, 0x1a, 0xfa, 0x50, 0xa2, 0x97, 0x26, 0xf9, 0xb6, 0x09, 0x7a, 0xb1, 0x70, 0x2a, 0x15, 0xce, 0xe0, 0xe6, 0x4d,
0x47, 0x0e, 0xa6, 0x43, 0xe2, 0x7b, 0xee, 0x8b, 0x4a, 0x61, 0xf9, 0x02, 0xfa, 0xa2, 0xd2, 0x5b, 0x55, 0xe2, 0x96, 0x6c, 0xb8, 0x5d, 0x96, 0x47, 0x6b, 0xaa, 0x0a, 0x55, 0x1c, 0x5a, 0x53, 0x55,
0x8b, 0xf2, 0x83, 0x6d, 0x2d, 0x1a, 0x40, 0x37, 0x16, 0xef, 0x56, 0x0a, 0x97, 0xf0, 0xdf, 0xbd, 0x44, 0x44, 0xef, 0xab, 0xa1, 0xbf, 0xe4, 0x60, 0x26, 0x24, 0xbe, 0xe7, 0xa6, 0xaa, 0x14, 0x96,
0x5b, 0x29, 0xd4, 0x34, 0xeb, 0x96, 0x2b, 0x17, 0x35, 0xe7, 0x3f, 0xa6, 0x25, 0x26, 0xa5, 0x43, 0xaf, 0xa0, 0xa9, 0x2a, 0xbd, 0x2f, 0x29, 0x3f, 0xdc, 0xbe, 0xa4, 0x21, 0xb4, 0x72, 0xf1, 0x56,
0x65, 0xa8, 0xb7, 0x0e, 0x15, 0xf9, 0x93, 0x3c, 0x9c, 0x4c, 0x7e, 0xab, 0xb1, 0xce, 0x08, 0xe9, 0xa7, 0xd0, 0x85, 0x7f, 0xef, 0xad, 0x4e, 0xa1, 0xa6, 0x59, 0xb7, 0x5c, 0xb9, 0xa8, 0x39, 0xff,
0xae, 0x9d, 0x11, 0x55, 0x98, 0xd9, 0x72, 0x35, 0xad, 0xcd, 0x17, 0x24, 0xf2, 0xaa, 0xe0, 0xdd, 0x30, 0xfd, 0x34, 0x29, 0xed, 0x2d, 0x23, 0xfd, 0xb5, 0xb7, 0xc8, 0x9f, 0xe7, 0xe1, 0x64, 0xf2,
0xbf, 0x3f, 0x28, 0x38, 0x67, 0x56, 0x52, 0x68, 0x70, 0x2a, 0x67, 0x46, 0x97, 0x47, 0xbe, 0xaf, 0x5b, 0x8d, 0xb5, 0x55, 0x48, 0x77, 0x6d, 0xab, 0xa8, 0xc1, 0xec, 0xb6, 0xab, 0x69, 0x1d, 0xee,
0x2e, 0x8f, 0xa7, 0x61, 0xdc, 0xe6, 0x0d, 0xac, 0xf1, 0xc7, 0x8e, 0xfb, 0x04, 0xcc, 0x38, 0x8e, 0x90, 0xc8, 0xab, 0x82, 0x77, 0xff, 0xfe, 0xb0, 0xe0, 0x9c, 0x5d, 0x4d, 0xa1, 0xc1, 0xa9, 0x9c,
0x4e, 0xe2, 0x38, 0x6d, 0x7a, 0xc7, 0x46, 0xa1, 0x8f, 0x8e, 0x8d, 0xa3, 0x68, 0xb1, 0x48, 0x09, 0x19, 0x2d, 0x22, 0xf9, 0x81, 0x5a, 0x44, 0xba, 0x3a, 0x14, 0x46, 0xee, 0xbd, 0x43, 0x21, 0xbd,
0x79, 0x77, 0x6d, 0xb1, 0x78, 0x10, 0xe6, 0x04, 0x1b, 0xfb, 0xbd, 0x64, 0x1a, 0xd4, 0x36, 0x35, 0xdd, 0xa3, 0x30, 0x40, 0xbb, 0xc7, 0xfd, 0xe8, 0xcf, 0x48, 0x09, 0x79, 0x77, 0xeb, 0xcf, 0x90,
0x8d, 0xd8, 0xcb, 0xae, 0xae, 0xb7, 0xe5, 0xcb, 0x30, 0x11, 0xef, 0xf3, 0xf1, 0x76, 0xde, 0x6b, 0x1f, 0x86, 0x79, 0xc1, 0xc6, 0x7e, 0x2f, 0x9b, 0x06, 0xb5, 0x4d, 0x4d, 0x23, 0xf6, 0x8a, 0xab,
0x3d, 0x12, 0xaf, 0x22, 0x91, 0x9d, 0xf7, 0xc6, 0x71, 0x40, 0x21, 0x7f, 0x2a, 0xc1, 0xa9, 0x8c, 0xeb, 0x1d, 0xf9, 0x32, 0x4c, 0xc6, 0x9b, 0x84, 0xbc, 0x95, 0xf7, 0xfa, 0x96, 0xc4, 0xab, 0x48,
0x56, 0x09, 0x74, 0x0b, 0x26, 0x74, 0x65, 0x2f, 0xd2, 0x83, 0x22, 0x82, 0x4a, 0xaf, 0xc7, 0x6a, 0x64, 0xe5, 0xbd, 0x71, 0x1c, 0x50, 0xc8, 0xbf, 0x93, 0xe0, 0x54, 0x46, 0xab, 0x04, 0xba, 0x05,
0xfe, 0xc4, 0xb7, 0x1e, 0x43, 0xc2, 0x09, 0x64, 0x9e, 0x67, 0x95, 0xbd, 0x9a, 0x6b, 0xb7, 0x48, 0x93, 0xba, 0xb2, 0x1f, 0x69, 0x60, 0x11, 0x41, 0xa5, 0xdf, 0x63, 0x35, 0x7f, 0xe2, 0xdb, 0x88,
0x9f, 0x87, 0x77, 0xfe, 0xf9, 0xae, 0x0b, 0x0c, 0x1c, 0xa0, 0xc9, 0x1f, 0x4a, 0x50, 0xcc, 0x2a, 0x21, 0xe1, 0x04, 0x32, 0xcf, 0xb3, 0xca, 0x7e, 0xdd, 0xb5, 0xdb, 0x64, 0xc0, 0xc3, 0x3b, 0xff,
0xba, 0xd0, 0xc5, 0x58, 0x43, 0xc7, 0xc3, 0x89, 0x86, 0x8e, 0xa9, 0x0e, 0xbe, 0x2f, 0xa8, 0x9d, 0x7c, 0x37, 0x04, 0x06, 0x0e, 0xd0, 0xe4, 0x4f, 0x24, 0x28, 0x65, 0x15, 0x5d, 0xe8, 0x62, 0xac,
0xe3, 0x23, 0x09, 0x66, 0xd3, 0x8b, 0x53, 0xf4, 0x3f, 0x31, 0x8d, 0x4b, 0x09, 0x8d, 0x27, 0x13, 0xa1, 0xe3, 0xd1, 0x44, 0x43, 0xc7, 0x74, 0x17, 0xdf, 0x57, 0xd4, 0xce, 0xf1, 0xa9, 0x04, 0x73,
0x5c, 0x42, 0xdf, 0x6d, 0x98, 0x10, 0x25, 0xac, 0x80, 0xb9, 0x87, 0xff, 0x70, 0xd9, 0x0d, 0xea, 0xe9, 0xc5, 0x29, 0xfa, 0x97, 0x98, 0xc6, 0xe5, 0x84, 0xc6, 0x53, 0x09, 0x2e, 0xa1, 0xef, 0x0e,
0x63, 0xbf, 0x18, 0xe3, 0xfb, 0x18, 0x1f, 0xc3, 0x09, 0x5c, 0xf9, 0xbb, 0x39, 0x28, 0xf0, 0xb7, 0x4c, 0x8a, 0x12, 0x56, 0xc0, 0xdc, 0xc3, 0xbf, 0xc7, 0xec, 0x05, 0xf5, 0xb1, 0x5f, 0x8c, 0xf1,
0xce, 0x01, 0x56, 0x4e, 0x2f, 0xc7, 0x2a, 0xa7, 0x5e, 0xff, 0x57, 0x82, 0x6b, 0x97, 0x59, 0x34, 0x75, 0x8c, 0x8f, 0xe1, 0x04, 0xae, 0xfc, 0x8d, 0x1c, 0x14, 0xf8, 0x5b, 0xe7, 0x10, 0x2b, 0xa7,
0x6d, 0x26, 0x8a, 0xa6, 0x4b, 0x7d, 0xa1, 0x77, 0xaf, 0x97, 0x9e, 0x82, 0xd1, 0x40, 0x89, 0xde, 0x57, 0x63, 0x95, 0x53, 0xbf, 0xff, 0x68, 0xc1, 0xb5, 0xcb, 0x2c, 0x9a, 0xb6, 0x12, 0x45, 0xd3,
0x02, 0x35, 0xab, 0x4e, 0xc7, 0x22, 0x22, 0x7a, 0x0c, 0xf3, 0xbb, 0xb1, 0x34, 0xd9, 0xcf, 0xbf, 0xa5, 0x81, 0xd0, 0x7b, 0xd7, 0x4b, 0xcf, 0xc0, 0x78, 0xa0, 0x44, 0x7f, 0x81, 0x9a, 0x55, 0xa7,
0x62, 0x45, 0x64, 0x97, 0xfd, 0x54, 0xe9, 0x35, 0xef, 0x86, 0xad, 0x0a, 0x9d, 0x19, 0xf4, 0x32, 0xc5, 0x88, 0x88, 0x3e, 0xc3, 0xfc, 0x5e, 0x2c, 0x4d, 0x0e, 0xf2, 0x7f, 0x5c, 0x11, 0xd9, 0x15,
0x4c, 0x78, 0xff, 0xcf, 0x16, 0x5c, 0x9a, 0xe5, 0xb9, 0xf7, 0x06, 0xed, 0xe0, 0xf5, 0xd8, 0x2c, 0x3f, 0x55, 0x7a, 0x9d, 0xbf, 0x61, 0xab, 0x42, 0x77, 0x06, 0xbd, 0x0c, 0x93, 0xde, 0x3f, 0xc3,
0x4e, 0x50, 0xcf, 0x3d, 0x0d, 0xe3, 0x31, 0x61, 0x3d, 0xf5, 0xda, 0xfe, 0x54, 0x82, 0x99, 0xb4, 0x05, 0x97, 0x66, 0x79, 0xbe, 0x7b, 0x83, 0x5e, 0xf2, 0x46, 0x6c, 0x16, 0x27, 0xa8, 0xe7, 0x9f,
0xe6, 0x0a, 0x74, 0x1a, 0x86, 0x76, 0x54, 0xf1, 0x26, 0x14, 0x79, 0x47, 0xfb, 0x7f, 0xd5, 0x68, 0x85, 0x89, 0x98, 0xb0, 0xbe, 0x1a, 0x75, 0x7f, 0x20, 0xc1, 0x6c, 0x5a, 0x73, 0x05, 0x3a, 0x0d,
0x62, 0x3e, 0x13, 0xb4, 0x4a, 0xe7, 0x32, 0x5b, 0xa5, 0x2f, 0x00, 0x28, 0x96, 0x2a, 0xfe, 0x47, 0x23, 0xbb, 0xaa, 0x78, 0x13, 0x8a, 0xbc, 0xa3, 0xfd, 0xbb, 0x6a, 0xb4, 0x30, 0x9f, 0x09, 0xfa,
0x50, 0x58, 0x15, 0x38, 0x6f, 0xf8, 0xdf, 0x83, 0x38, 0x42, 0xc5, 0x9f, 0x4d, 0x43, 0x7d, 0x44, 0xac, 0x73, 0x99, 0x7d, 0xd6, 0x17, 0x00, 0x14, 0x4b, 0x15, 0xff, 0x60, 0x28, 0xac, 0x0a, 0x36,
0x41, 0x18, 0xbe, 0x67, 0x46, 0x54, 0x8d, 0xd2, 0xc9, 0x3f, 0x97, 0xe0, 0xe1, 0xbb, 0x1e, 0xdc, 0x6f, 0xf8, 0xaf, 0x87, 0x38, 0x42, 0xc5, 0x9f, 0x4d, 0x43, 0x7d, 0x44, 0x41, 0x18, 0xbe, 0x67,
0x50, 0x25, 0x16, 0x1e, 0xca, 0x89, 0xf0, 0x30, 0x9f, 0x0d, 0xf0, 0x05, 0x36, 0xab, 0xbd, 0x97, 0x46, 0x54, 0x8d, 0xd2, 0xc9, 0x3f, 0x92, 0xe0, 0xd1, 0xbb, 0x1e, 0xdc, 0x50, 0x35, 0x16, 0x1e,
0x03, 0x54, 0xdf, 0x56, 0xed, 0x66, 0x55, 0xb1, 0x69, 0x1b, 0x0b, 0x03, 0x07, 0x18, 0x30, 0x2e, 0x2a, 0x89, 0xf0, 0xb0, 0x90, 0x0d, 0xf0, 0x15, 0x36, 0xab, 0x7d, 0x90, 0x03, 0xd4, 0xd8, 0x51,
0xc2, 0x58, 0x93, 0x38, 0x0d, 0x5b, 0xe5, 0x8b, 0x24, 0xb6, 0x33, 0x58, 0xf1, 0xe5, 0x70, 0x0a, 0xed, 0x56, 0x4d, 0xb1, 0x69, 0x07, 0x0b, 0x03, 0x87, 0x18, 0x30, 0x2e, 0x42, 0xb1, 0x45, 0x9c,
0x47, 0xe9, 0x50, 0x0b, 0x46, 0x76, 0xbd, 0x3d, 0xf3, 0x9f, 0xde, 0x7a, 0xad, 0x7a, 0x43, 0x0f, 0xa6, 0xad, 0x72, 0x27, 0x89, 0xe5, 0x0c, 0x3c, 0xbe, 0x12, 0x4e, 0xe1, 0x28, 0x1d, 0x6a, 0xc3,
0x08, 0xbf, 0x0f, 0x31, 0xe0, 0xe0, 0x00, 0x5c, 0x7e, 0x5f, 0x82, 0xd9, 0xce, 0x05, 0x59, 0x66, 0xd8, 0x9e, 0xb7, 0x66, 0xfe, 0xd3, 0x5b, 0xbf, 0x55, 0x6f, 0xb8, 0x03, 0xc2, 0xef, 0x43, 0x0c,
0xaa, 0x0f, 0x6e, 0x51, 0x1e, 0x84, 0x21, 0x8e, 0xca, 0x56, 0xe3, 0x84, 0x77, 0xf5, 0xcd, 0x24, 0x38, 0x38, 0x00, 0x97, 0x3f, 0x94, 0x60, 0xae, 0xdb, 0x21, 0x2b, 0x4c, 0xf5, 0xe1, 0x39, 0xe5,
0x62, 0x3e, 0x2a, 0x7f, 0x2e, 0xc1, 0x5c, 0xba, 0x4a, 0x03, 0x3f, 0x69, 0xdc, 0x8a, 0x9f, 0x34, 0x61, 0x18, 0xe1, 0xa8, 0xcc, 0x1b, 0x27, 0xbc, 0xab, 0x6f, 0x26, 0x11, 0xf3, 0x51, 0xf9, 0x4b,
0x7a, 0xbd, 0x49, 0x48, 0xd7, 0x3a, 0xe3, 0xd4, 0xf1, 0x49, 0xea, 0xca, 0x0f, 0xdc, 0xc4, 0xad, 0x09, 0xe6, 0xd3, 0x55, 0x1a, 0xfa, 0x49, 0xe3, 0x56, 0xfc, 0xa4, 0xd1, 0xef, 0x4d, 0x42, 0xba,
0xb8, 0x89, 0x8b, 0x87, 0x36, 0x31, 0xdd, 0xbc, 0xca, 0xe3, 0xb7, 0x3f, 0x9b, 0x3f, 0xf6, 0xf1, 0xd6, 0x19, 0xa7, 0x8e, 0xcf, 0x53, 0x3d, 0x3f, 0x74, 0x13, 0xb7, 0xe3, 0x26, 0x2e, 0x1d, 0xd9,
0x67, 0xf3, 0xc7, 0xfe, 0xf0, 0xd9, 0xfc, 0xb1, 0x77, 0x0f, 0xe6, 0xa5, 0xdb, 0x07, 0xf3, 0xd2, 0xc4, 0x74, 0xf3, 0xaa, 0x4f, 0xde, 0xfe, 0x62, 0xe1, 0xd8, 0x67, 0x5f, 0x2c, 0x1c, 0xfb, 0xf5,
0xc7, 0x07, 0xf3, 0xd2, 0x9f, 0x0f, 0xe6, 0xa5, 0xf7, 0xff, 0x32, 0x7f, 0xec, 0xe5, 0x61, 0x81, 0x17, 0x0b, 0xc7, 0xde, 0x3f, 0x5c, 0x90, 0x6e, 0x1f, 0x2e, 0x48, 0x9f, 0x1d, 0x2e, 0x48, 0xbf,
0xf9, 0xaf, 0x00, 0x00, 0x00, 0xff, 0xff, 0xc1, 0x62, 0xad, 0x66, 0xb9, 0x3e, 0x00, 0x00, 0x3f, 0x5c, 0x90, 0x3e, 0xfc, 0xc3, 0xc2, 0xb1, 0x57, 0x47, 0x05, 0xe6, 0xdf, 0x02, 0x00, 0x00,
0xff, 0xff, 0x15, 0x10, 0xc0, 0xa8, 0xf6, 0x3e, 0x00, 0x00,
} }

View File

@ -262,6 +262,10 @@ message DeploymentStatus {
// +optional // +optional
optional int32 updatedReplicas = 3; optional int32 updatedReplicas = 3;
// Total number of ready pods targeted by this deployment.
// +optional
optional int32 readyReplicas = 7;
// Total number of available pods (ready for at least minReadySeconds) targeted by this deployment. // Total number of available pods (ready for at least minReadySeconds) targeted by this deployment.
// +optional // +optional
optional int32 availableReplicas = 4; optional int32 availableReplicas = 4;

File diff suppressed because it is too large Load Diff

View File

@ -397,6 +397,10 @@ type DeploymentStatus struct {
// +optional // +optional
UpdatedReplicas int32 `json:"updatedReplicas,omitempty" protobuf:"varint,3,opt,name=updatedReplicas"` UpdatedReplicas int32 `json:"updatedReplicas,omitempty" protobuf:"varint,3,opt,name=updatedReplicas"`
// Total number of ready pods targeted by this deployment.
// +optional
ReadyReplicas int32 `json:"readyReplicas,omitempty" protobuf:"varint,7,opt,name=readyReplicas"`
// Total number of available pods (ready for at least minReadySeconds) targeted by this deployment. // Total number of available pods (ready for at least minReadySeconds) targeted by this deployment.
// +optional // +optional
AvailableReplicas int32 `json:"availableReplicas,omitempty" protobuf:"varint,4,opt,name=availableReplicas"` AvailableReplicas int32 `json:"availableReplicas,omitempty" protobuf:"varint,4,opt,name=availableReplicas"`

View File

@ -174,6 +174,7 @@ var map_DeploymentStatus = map[string]string{
"observedGeneration": "The generation observed by the deployment controller.", "observedGeneration": "The generation observed by the deployment controller.",
"replicas": "Total number of non-terminated pods targeted by this deployment (their labels match the selector).", "replicas": "Total number of non-terminated pods targeted by this deployment (their labels match the selector).",
"updatedReplicas": "Total number of non-terminated pods targeted by this deployment that have the desired template spec.", "updatedReplicas": "Total number of non-terminated pods targeted by this deployment that have the desired template spec.",
"readyReplicas": "Total number of ready pods targeted by this deployment.",
"availableReplicas": "Total number of available pods (ready for at least minReadySeconds) targeted by this deployment.", "availableReplicas": "Total number of available pods (ready for at least minReadySeconds) targeted by this deployment.",
"unavailableReplicas": "Total number of unavailable pods targeted by this deployment.", "unavailableReplicas": "Total number of unavailable pods targeted by this deployment.",
"conditions": "Represents the latest available observations of a deployment's current state.", "conditions": "Represents the latest available observations of a deployment's current state.",

View File

@ -553,6 +553,7 @@ func autoConvert_v1beta1_DeploymentStatus_To_extensions_DeploymentStatus(in *Dep
out.ObservedGeneration = in.ObservedGeneration out.ObservedGeneration = in.ObservedGeneration
out.Replicas = in.Replicas out.Replicas = in.Replicas
out.UpdatedReplicas = in.UpdatedReplicas out.UpdatedReplicas = in.UpdatedReplicas
out.ReadyReplicas = in.ReadyReplicas
out.AvailableReplicas = in.AvailableReplicas out.AvailableReplicas = in.AvailableReplicas
out.UnavailableReplicas = in.UnavailableReplicas out.UnavailableReplicas = in.UnavailableReplicas
out.Conditions = *(*[]extensions.DeploymentCondition)(unsafe.Pointer(&in.Conditions)) out.Conditions = *(*[]extensions.DeploymentCondition)(unsafe.Pointer(&in.Conditions))
@ -567,6 +568,7 @@ func autoConvert_extensions_DeploymentStatus_To_v1beta1_DeploymentStatus(in *ext
out.ObservedGeneration = in.ObservedGeneration out.ObservedGeneration = in.ObservedGeneration
out.Replicas = in.Replicas out.Replicas = in.Replicas
out.UpdatedReplicas = in.UpdatedReplicas out.UpdatedReplicas = in.UpdatedReplicas
out.ReadyReplicas = in.ReadyReplicas
out.AvailableReplicas = in.AvailableReplicas out.AvailableReplicas = in.AvailableReplicas
out.UnavailableReplicas = in.UnavailableReplicas out.UnavailableReplicas = in.UnavailableReplicas
out.Conditions = *(*[]DeploymentCondition)(unsafe.Pointer(&in.Conditions)) out.Conditions = *(*[]DeploymentCondition)(unsafe.Pointer(&in.Conditions))

View File

@ -380,6 +380,7 @@ func DeepCopy_v1beta1_DeploymentStatus(in interface{}, out interface{}, c *conve
out.ObservedGeneration = in.ObservedGeneration out.ObservedGeneration = in.ObservedGeneration
out.Replicas = in.Replicas out.Replicas = in.Replicas
out.UpdatedReplicas = in.UpdatedReplicas out.UpdatedReplicas = in.UpdatedReplicas
out.ReadyReplicas = in.ReadyReplicas
out.AvailableReplicas = in.AvailableReplicas out.AvailableReplicas = in.AvailableReplicas
out.UnavailableReplicas = in.UnavailableReplicas out.UnavailableReplicas = in.UnavailableReplicas
if in.Conditions != nil { if in.Conditions != nil {

View File

@ -281,6 +281,7 @@ func ValidateDeploymentStatus(status *extensions.DeploymentStatus, fldPath *fiel
allErrs = append(allErrs, apivalidation.ValidateNonnegativeField(status.ObservedGeneration, fldPath.Child("observedGeneration"))...) allErrs = append(allErrs, apivalidation.ValidateNonnegativeField(status.ObservedGeneration, fldPath.Child("observedGeneration"))...)
allErrs = append(allErrs, apivalidation.ValidateNonnegativeField(int64(status.Replicas), fldPath.Child("replicas"))...) allErrs = append(allErrs, apivalidation.ValidateNonnegativeField(int64(status.Replicas), fldPath.Child("replicas"))...)
allErrs = append(allErrs, apivalidation.ValidateNonnegativeField(int64(status.UpdatedReplicas), fldPath.Child("updatedReplicas"))...) allErrs = append(allErrs, apivalidation.ValidateNonnegativeField(int64(status.UpdatedReplicas), fldPath.Child("updatedReplicas"))...)
allErrs = append(allErrs, apivalidation.ValidateNonnegativeField(int64(status.ReadyReplicas), fldPath.Child("readyReplicas"))...)
allErrs = append(allErrs, apivalidation.ValidateNonnegativeField(int64(status.AvailableReplicas), fldPath.Child("availableReplicas"))...) allErrs = append(allErrs, apivalidation.ValidateNonnegativeField(int64(status.AvailableReplicas), fldPath.Child("availableReplicas"))...)
allErrs = append(allErrs, apivalidation.ValidateNonnegativeField(int64(status.UnavailableReplicas), fldPath.Child("unavailableReplicas"))...) allErrs = append(allErrs, apivalidation.ValidateNonnegativeField(int64(status.UnavailableReplicas), fldPath.Child("unavailableReplicas"))...)
return allErrs return allErrs

View File

@ -359,6 +359,7 @@ func DeepCopy_extensions_DeploymentStatus(in interface{}, out interface{}, c *co
out.ObservedGeneration = in.ObservedGeneration out.ObservedGeneration = in.ObservedGeneration
out.Replicas = in.Replicas out.Replicas = in.Replicas
out.UpdatedReplicas = in.UpdatedReplicas out.UpdatedReplicas = in.UpdatedReplicas
out.ReadyReplicas = in.ReadyReplicas
out.AvailableReplicas = in.AvailableReplicas out.AvailableReplicas = in.AvailableReplicas
out.UnavailableReplicas = in.UnavailableReplicas out.UnavailableReplicas = in.UnavailableReplicas
if in.Conditions != nil { if in.Conditions != nil {

View File

@ -595,6 +595,7 @@ func calculateStatus(allRSs []*extensions.ReplicaSet, newRS *extensions.ReplicaS
ObservedGeneration: deployment.Generation, ObservedGeneration: deployment.Generation,
Replicas: deploymentutil.GetActualReplicaCountForReplicaSets(allRSs), Replicas: deploymentutil.GetActualReplicaCountForReplicaSets(allRSs),
UpdatedReplicas: deploymentutil.GetActualReplicaCountForReplicaSets([]*extensions.ReplicaSet{newRS}), UpdatedReplicas: deploymentutil.GetActualReplicaCountForReplicaSets([]*extensions.ReplicaSet{newRS}),
ReadyReplicas: deploymentutil.GetReadyReplicaCountForReplicaSets(allRSs),
AvailableReplicas: availableReplicas, AvailableReplicas: availableReplicas,
UnavailableReplicas: unavailableReplicas, UnavailableReplicas: unavailableReplicas,
} }

View File

@ -782,6 +782,17 @@ func GetActualReplicaCountForReplicaSets(replicaSets []*extensions.ReplicaSet) i
return totalActualReplicas return totalActualReplicas
} }
// GetReadyReplicaCountForReplicaSets returns the number of ready pods corresponding to the given replica sets.
func GetReadyReplicaCountForReplicaSets(replicaSets []*extensions.ReplicaSet) int32 {
totalReadyReplicas := int32(0)
for _, rs := range replicaSets {
if rs != nil {
totalReadyReplicas += rs.Status.ReadyReplicas
}
}
return totalReadyReplicas
}
// GetAvailableReplicaCountForReplicaSets returns the number of available pods corresponding to the given replica sets. // GetAvailableReplicaCountForReplicaSets returns the number of available pods corresponding to the given replica sets.
func GetAvailableReplicaCountForReplicaSets(replicaSets []*extensions.ReplicaSet) int32 { func GetAvailableReplicaCountForReplicaSets(replicaSets []*extensions.ReplicaSet) int32 {
totalAvailableReplicas := int32(0) totalAvailableReplicas := int32(0)

View File

@ -10275,6 +10275,13 @@ var OpenAPIDefinitions *common.OpenAPIDefinitions = &common.OpenAPIDefinitions{
Format: "int32", Format: "int32",
}, },
}, },
"readyReplicas": {
SchemaProps: spec.SchemaProps{
Description: "Total number of ready pods targeted by this deployment.",
Type: []string{"integer"},
Format: "int32",
},
},
"availableReplicas": { "availableReplicas": {
SchemaProps: spec.SchemaProps{ SchemaProps: spec.SchemaProps{
Description: "Total number of available pods (ready for at least minReadySeconds) targeted by this deployment.", Description: "Total number of available pods (ready for at least minReadySeconds) targeted by this deployment.",