Compare commits
325
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
55aa03aa41 | ||
|
|
0ffd2c099a | ||
|
|
6828b1bd88 | ||
|
|
78aee43e5f | ||
|
|
745c9d01dd | ||
|
|
e00fe0965a | ||
|
|
caa19dd85a | ||
|
|
3bf17944b3 | ||
|
|
30f89e86f0 | ||
|
|
8850dd4a08 | ||
|
|
8946091b93 | ||
|
|
9e3e06f0a0 | ||
|
|
12fea4c37e | ||
|
|
ad02e0711d | ||
|
|
869235a8c2 | ||
|
|
15f6d2c59a | ||
|
|
d0c11aa527 | ||
|
|
c7a847f677 | ||
|
|
0791fdd3d4 | ||
|
|
e5f18d3c78 | ||
|
|
0d3cf24714 | ||
|
|
a8ed0dbbe0 | ||
|
|
84f4f8e358 | ||
|
|
7085fea1b7 | ||
|
|
1f195024e1 | ||
|
|
a91980e603 | ||
|
|
8de957b59b | ||
|
|
206fee797c | ||
|
|
6ef2a190cd | ||
|
|
9a7028a44f | ||
|
|
a7218c68ed | ||
|
|
1f31ef223d | ||
|
|
444fea85f0 | ||
|
|
e92ce64b17 | ||
|
|
8d2a0e6c0d | ||
|
|
6b8b494739 | ||
|
|
d8d9ec6543 | ||
|
|
cb48e238a8 | ||
|
|
2bf229b5da | ||
|
|
bde080eadd | ||
|
|
1fe397ca81 | ||
|
|
5a13519189 | ||
|
|
9f4574e176 | ||
|
|
eaee64dca4 | ||
|
|
a232f78ac7 | ||
|
|
061fe89b7f | ||
|
|
c0ddc32997 | ||
|
|
9521b5e7c5 | ||
|
|
efcdf5d525 | ||
|
|
8faf5cadc7 | ||
|
|
656e155625 | ||
|
|
ff07b90c73 | ||
|
|
d265c81735 | ||
|
|
998156d345 | ||
|
|
aaa7c6d5b5 | ||
|
|
48118efeeb | ||
|
|
79d4e76090 | ||
|
|
ea39be0510 | ||
|
|
7bac55ca43 | ||
|
|
435da61405 | ||
|
|
f3e7c7b43b | ||
|
|
eded415df4 | ||
|
|
34029fe001 | ||
|
|
ffb700545f | ||
|
|
70ad09a13e | ||
|
|
74c22c7313 | ||
|
|
2c1b4b9261 | ||
|
|
e5128b6783 | ||
|
|
b22c8307fd | ||
|
|
cb54bbe414 | ||
|
|
096cff28b6 | ||
|
|
197df8f022 | ||
|
|
009dd1d695 | ||
|
|
bdafc93315 | ||
|
|
ef5b06d66e | ||
|
|
65b81612bc | ||
|
|
6269665e79 | ||
|
|
cae7d5b8f4 | ||
|
|
fca43e64b5 | ||
|
|
bc395a0788 | ||
|
|
1d879cbf9f | ||
|
|
240a3d9a73 | ||
|
|
3d73460934 | ||
|
|
0c518a9ce2 | ||
|
|
5cbb6d7b1d | ||
|
|
b0bd16fd04 | ||
|
|
55175c9c40 | ||
|
|
06e5a06680 | ||
|
|
dbb0dcd2dc | ||
|
|
02f723b83a | ||
|
|
1f58dec491 | ||
|
|
a6d264c79d | ||
|
|
d62e729052 | ||
|
|
9ce665865e | ||
|
|
7d395b2cc7 | ||
|
|
2b69211a6c | ||
|
|
67377c4690 | ||
|
|
1d65a0ec14 | ||
|
|
ad58edbfe1 | ||
|
|
f8e7bfbec6 | ||
|
|
2e618b613f | ||
|
|
cc2b5fcfcb | ||
|
|
8ef3936be5 | ||
|
|
b06e4b537b | ||
|
|
7b4cd41d3b | ||
|
|
2c9434729a | ||
|
|
7f02925ff7 | ||
|
|
b217691c8a | ||
|
|
4bce196c09 | ||
|
|
aa17d8ccf3 | ||
|
|
26a5ca4496 | ||
|
|
51f942ee18 | ||
|
|
2c773391f0 | ||
|
|
c66d969c82 | ||
|
|
bc9d722ee0 | ||
|
|
6482f11620 | ||
|
|
75024c7c11 | ||
|
|
dc78d51def | ||
|
|
5f0ad1b0e0 | ||
|
|
6db0ca5230 | ||
|
|
049617c22e | ||
|
|
d431d3382a | ||
|
|
a848c8eb72 | ||
|
|
871fd5fdcc | ||
|
|
e3dd37f515 | ||
|
|
3557b32298 | ||
|
|
20db674d25 | ||
|
|
2a4da0a73e | ||
|
|
e6335c1d6e | ||
|
|
f40fea0ec5 | ||
|
|
96503e40f6 | ||
|
|
c95e9bb4cc | ||
|
|
825fe0f2fb | ||
|
|
4ea689f426 | ||
|
|
f0bb6d1926 | ||
|
|
13436abd1a | ||
|
|
bed60a8a67 | ||
|
|
2b8ef759df | ||
|
|
9318bb9091 | ||
|
|
847f2eb8ca | ||
|
|
0b7201779c | ||
|
|
2b37c00ed0 | ||
|
|
2e5a78e1d8 | ||
|
|
277c904bc5 | ||
|
|
8945a3943b | ||
|
|
1cfd80ac3d | ||
|
|
b4e6a34aca | ||
|
|
b3c8699635 | ||
|
|
223495a04a | ||
|
|
40a015363c | ||
|
|
2869e7c160 | ||
|
|
30a72d91b8 | ||
|
|
efb36f705c | ||
|
|
6a30b1d6f0 | ||
|
|
7b45b8761b | ||
|
|
a89ef8fc4c | ||
|
|
bae79a5320 | ||
|
|
0f14ece4da | ||
|
|
b1c6850ce1 | ||
|
|
bd99cfaa6d | ||
|
|
3ab17cf9b0 | ||
|
|
4bd7962182 | ||
|
|
09f099171b | ||
|
|
4fff7069a8 | ||
|
|
3e2153b39c | ||
|
|
d0fa6ab15c | ||
|
|
9f8024d488 | ||
|
|
1df3bc1db9 | ||
|
|
a8c1b9c754 | ||
|
|
7600c48cc7 | ||
|
|
2e31560d6c | ||
|
|
2a07f193ec | ||
|
|
b720b325b3 | ||
|
|
80573a84ea | ||
|
|
bc94d66002 | ||
|
|
aca5fccaa7 | ||
|
|
ee6ced1390 | ||
|
|
af8e5907b9 | ||
|
|
9cf9fd198f | ||
|
|
0c2db10082 | ||
|
|
fae9c38098 | ||
|
|
0799bf658f | ||
|
|
2cec7c5699 | ||
|
|
b10a2572ec | ||
|
|
657cf22f71 | ||
|
|
dce58357ae | ||
|
|
7abe427c03 | ||
|
|
1a55150ddd | ||
|
|
3e879f3687 | ||
|
|
0eb932dc3c | ||
|
|
eb26b42543 | ||
|
|
d082ce3374 | ||
|
|
faccc3e912 | ||
|
|
af8edb8999 | ||
|
|
0abe5fc3e4 | ||
|
|
5a444ea08c | ||
|
|
dfb2ad2950 | ||
|
|
256e11d320 | ||
|
|
467098a9e4 | ||
|
|
9532e0ec89 | ||
|
|
c14850a048 | ||
|
|
d0aec5c501 | ||
|
|
ccef87f0a3 | ||
|
|
34140c0bba | ||
|
|
0ad064725f | ||
|
|
886dccb6b8 | ||
|
|
57e8a06383 | ||
|
|
ab14f58079 | ||
|
|
4106215180 | ||
|
|
cdea376f94 | ||
|
|
d157dfc9b6 | ||
|
|
773625b842 | ||
|
|
22ca5c98f3 | ||
|
|
08deedea8f | ||
|
|
86b769d7ed | ||
|
|
e139eae06d | ||
|
|
34e8c1f812 | ||
|
|
cc3128d65a | ||
|
|
d04544030a | ||
|
|
e13c435afa | ||
|
|
4429bbecd1 | ||
|
|
2099eeb97e | ||
|
|
c22ed0dc83 | ||
|
|
494aeeb401 | ||
|
|
298b1368e8 | ||
|
|
b20a1a5964 | ||
|
|
af8e04473a | ||
|
|
351f606d29 | ||
|
|
da376647af | ||
|
|
2ec8d9cfdb | ||
|
|
2dd75edc03 | ||
|
|
e08580925d | ||
|
|
63659a4934 | ||
|
|
af4e06411d | ||
|
|
4426925ebb | ||
|
|
8632bb8c3c | ||
|
|
7ff271ff2d | ||
|
|
5540bb2c4e | ||
|
|
9a73f2147b | ||
|
|
01b88994f3 | ||
|
|
424f65dc8a | ||
|
|
cf814c6c72 | ||
|
|
7972bab46c | ||
|
|
3fa30903cd | ||
|
|
9ef568202c | ||
|
|
b0e422ac01 | ||
|
|
2184515938 | ||
|
|
489457c63c | ||
|
|
9b3c9b22aa | ||
|
|
1f2824246f | ||
|
|
63e8327125 | ||
|
|
e608363a24 | ||
|
|
e3903e5312 | ||
|
|
5e7103befd | ||
|
|
0723fe0c6a | ||
|
|
cbe08cd8a7 | ||
|
|
db3e18e586 | ||
|
|
8fb29a953c | ||
|
|
c00d3d0186 | ||
|
|
a534975601 | ||
|
|
b55e1bc200 | ||
|
|
c58dbd19b0 | ||
|
|
2fcd608102 | ||
|
|
546f2db327 | ||
|
|
856c94723f | ||
|
|
2393bf2fa5 | ||
|
|
bf06de0f5e | ||
|
|
f3f070ca2b | ||
|
|
34edcf97a7 | ||
|
|
9dd18ed972 | ||
|
|
332cf3f13a | ||
|
|
c5a1cdea5f | ||
|
|
542d4198e7 | ||
|
|
98afe7384a | ||
|
|
e890108591 | ||
|
|
0126101b1b | ||
|
|
5bf2588d41 | ||
|
|
a5f84754ea | ||
|
|
4bfb06b682 | ||
|
|
72b8bc9c6c | ||
|
|
1ae654c266 | ||
|
|
74ee76c5da | ||
|
|
36d27f1642 | ||
|
|
9469c2c7a2 | ||
|
|
a8921e9cf6 | ||
|
|
f9ad769d9f | ||
|
|
ec2efee5d5 | ||
|
|
d147d71519 | ||
|
|
b22b77c535 | ||
|
|
b98513864a | ||
|
|
5a1194358b | ||
|
|
43d02b4b00 | ||
|
|
e6032f995f | ||
|
|
a86aa0daeb | ||
|
|
cb1c51db05 | ||
|
|
5576dd8d3f | ||
|
|
19fb713aaa | ||
|
|
dc2094bd50 | ||
|
|
b0c555f547 | ||
|
|
7e06c23175 | ||
|
|
49d809d695 | ||
|
|
f32cc1e651 | ||
|
|
8059c07ebf | ||
|
|
a04ec970f2 | ||
|
|
b844c4c24c | ||
|
|
c5b5585f1e | ||
|
|
16067a1acc | ||
|
|
d6fb4b6caf | ||
|
|
5b5e008b5e | ||
|
|
079b996f5a | ||
|
|
c9a7e15f89 | ||
|
|
be41389006 | ||
|
|
399f160718 | ||
|
|
fae0fa7699 | ||
|
|
107a85b384 | ||
|
|
05688a08e2 | ||
|
|
5bcdd45b10 | ||
|
|
96c6273419 | ||
|
|
7d8c6ae82e | ||
|
|
024742c053 | ||
|
|
cdcd4b9b7f | ||
|
|
d13bc45d67 | ||
|
|
b134bea670 | ||
|
|
4bd9100954 | ||
|
|
0cbc0f93b5 |
@@ -1,3 +0,0 @@
|
|||||||
[submodule "std"]
|
|
||||||
path = std
|
|
||||||
url = git@github.com:koka-community/std.git
|
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
when:
|
||||||
|
- event: push
|
||||||
|
branch: main
|
||||||
|
- event: pull_request
|
||||||
|
- event: manual
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: test
|
||||||
|
image: golang:1.26-alpine
|
||||||
|
commands:
|
||||||
|
- go vet ./...
|
||||||
|
- go test ./...
|
||||||
@@ -0,0 +1,15 @@
|
|||||||
|
when:
|
||||||
|
- event: push
|
||||||
|
branch: main
|
||||||
|
- event: pull_request
|
||||||
|
- event: manual
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: test
|
||||||
|
image: node:24-alpine
|
||||||
|
commands:
|
||||||
|
- cd zenno
|
||||||
|
- npm ci
|
||||||
|
- npm run check
|
||||||
|
- npm run lint
|
||||||
|
- npm run test
|
||||||
@@ -2,5 +2,5 @@
|
|||||||
|
|
||||||
Models, data, algorithms, and tools for Umamusume: Pretty Derby.
|
Models, data, algorithms, and tools for Umamusume: Pretty Derby.
|
||||||
|
|
||||||
Data generally comes from GameTora.
|
Data is generated from the game's local database.
|
||||||
Algorithms come from either Erzzy and Kireina's reference document or Crazyfellow's parenting and gene guide.
|
Algorithms come from Erzzy and Kireina's reference, KuromiAK's race mechanics reference, and Crazyfellow's parenting and gene guide.
|
||||||
|
|||||||
@@ -0,0 +1,58 @@
|
|||||||
|
// Code generated by "stringer -type AbilityTarget -trimprefix Target -linecomment"; DO NOT EDIT.
|
||||||
|
|
||||||
|
package horse
|
||||||
|
|
||||||
|
import "strconv"
|
||||||
|
|
||||||
|
func _() {
|
||||||
|
// An "invalid array index" compiler error signifies that the constant values have changed.
|
||||||
|
// Re-run the stringer command to generate them again.
|
||||||
|
var x [1]struct{}
|
||||||
|
_ = x[TargetSelf-1]
|
||||||
|
_ = x[TargetSympathizers-2]
|
||||||
|
_ = x[TargetInView-4]
|
||||||
|
_ = x[TargetFrontmost-7]
|
||||||
|
_ = x[TargetAhead-9]
|
||||||
|
_ = x[TargetBehind-10]
|
||||||
|
_ = x[TargetAllTeammates-11]
|
||||||
|
_ = x[TargetStyle-18]
|
||||||
|
_ = x[TargetRushingAhead-19]
|
||||||
|
_ = x[TargetRushingBehind-20]
|
||||||
|
_ = x[TargetRushingStyle-21]
|
||||||
|
_ = x[TargetCharacter-22]
|
||||||
|
_ = x[TargetTriggering-23]
|
||||||
|
}
|
||||||
|
|
||||||
|
const (
|
||||||
|
_AbilityTarget_name_0 = "selfothers with Sympathy"
|
||||||
|
_AbilityTarget_name_1 = "others in view"
|
||||||
|
_AbilityTarget_name_2 = "frontmost"
|
||||||
|
_AbilityTarget_name_3 = "aheadbehindall teammates"
|
||||||
|
_AbilityTarget_name_4 = "using stylerushing others aheadrushing others behindrushing using stylespecific characterwhosoever triggered this skill"
|
||||||
|
)
|
||||||
|
|
||||||
|
var (
|
||||||
|
_AbilityTarget_index_0 = [...]uint8{0, 4, 24}
|
||||||
|
_AbilityTarget_index_3 = [...]uint8{0, 5, 11, 24}
|
||||||
|
_AbilityTarget_index_4 = [...]uint8{0, 11, 31, 52, 71, 89, 119}
|
||||||
|
)
|
||||||
|
|
||||||
|
func (i AbilityTarget) String() string {
|
||||||
|
switch {
|
||||||
|
case 1 <= i && i <= 2:
|
||||||
|
i -= 1
|
||||||
|
return _AbilityTarget_name_0[_AbilityTarget_index_0[i]:_AbilityTarget_index_0[i+1]]
|
||||||
|
case i == 4:
|
||||||
|
return _AbilityTarget_name_1
|
||||||
|
case i == 7:
|
||||||
|
return _AbilityTarget_name_2
|
||||||
|
case 9 <= i && i <= 11:
|
||||||
|
i -= 9
|
||||||
|
return _AbilityTarget_name_3[_AbilityTarget_index_3[i]:_AbilityTarget_index_3[i+1]]
|
||||||
|
case 18 <= i && i <= 23:
|
||||||
|
i -= 18
|
||||||
|
return _AbilityTarget_name_4[_AbilityTarget_index_4[i]:_AbilityTarget_index_4[i+1]]
|
||||||
|
default:
|
||||||
|
return "AbilityTarget(" + strconv.FormatInt(int64(i), 10) + ")"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,77 @@
|
|||||||
|
// Code generated by "stringer -type AbilityType -trimprefix Ability -linecomment"; DO NOT EDIT.
|
||||||
|
|
||||||
|
package horse
|
||||||
|
|
||||||
|
import "strconv"
|
||||||
|
|
||||||
|
func _() {
|
||||||
|
// An "invalid array index" compiler error signifies that the constant values have changed.
|
||||||
|
// Re-run the stringer command to generate them again.
|
||||||
|
var x [1]struct{}
|
||||||
|
_ = x[AbilityPassiveSpeed-1]
|
||||||
|
_ = x[AbilityPassiveStamina-2]
|
||||||
|
_ = x[AbilityPassivePower-3]
|
||||||
|
_ = x[AbilityPassiveGuts-4]
|
||||||
|
_ = x[AbilityPassiveWit-5]
|
||||||
|
_ = x[AbilityGreatEscape-6]
|
||||||
|
_ = x[AbilityVision-8]
|
||||||
|
_ = x[AbilityHP-9]
|
||||||
|
_ = x[AbilityGateDelay-10]
|
||||||
|
_ = x[AbilityFrenzy-13]
|
||||||
|
_ = x[AbilityAddGateDelay-14]
|
||||||
|
_ = x[AbilityCurrentSpeed-21]
|
||||||
|
_ = x[AbilityCurrentSpeedUp-22]
|
||||||
|
_ = x[AbilityTargetSpeed-27]
|
||||||
|
_ = x[AbilityLaneSpeed-28]
|
||||||
|
_ = x[AbilityRushedChance-29]
|
||||||
|
_ = x[AbilityAccel-31]
|
||||||
|
_ = x[AbilityLaneChange-35]
|
||||||
|
_ = x[AbilityActivateRare-37]
|
||||||
|
}
|
||||||
|
|
||||||
|
const (
|
||||||
|
_AbilityType_name_0 = "SpeedStaminaPowerGutsWitEnable Great Escape"
|
||||||
|
_AbilityType_name_1 = "VisionHPGate delay multiplier"
|
||||||
|
_AbilityType_name_2 = "FrenzyAdded gate delay"
|
||||||
|
_AbilityType_name_3 = "Current speedCurrent speed"
|
||||||
|
_AbilityType_name_4 = "Target speedLane change speedRushed chance"
|
||||||
|
_AbilityType_name_5 = "Acceleration"
|
||||||
|
_AbilityType_name_6 = "Set target lane"
|
||||||
|
_AbilityType_name_7 = "Activate rare skills"
|
||||||
|
)
|
||||||
|
|
||||||
|
var (
|
||||||
|
_AbilityType_index_0 = [...]uint8{0, 5, 12, 17, 21, 24, 43}
|
||||||
|
_AbilityType_index_1 = [...]uint8{0, 6, 8, 29}
|
||||||
|
_AbilityType_index_2 = [...]uint8{0, 6, 22}
|
||||||
|
_AbilityType_index_3 = [...]uint8{0, 13, 26}
|
||||||
|
_AbilityType_index_4 = [...]uint8{0, 12, 29, 42}
|
||||||
|
)
|
||||||
|
|
||||||
|
func (i AbilityType) String() string {
|
||||||
|
switch {
|
||||||
|
case 1 <= i && i <= 6:
|
||||||
|
i -= 1
|
||||||
|
return _AbilityType_name_0[_AbilityType_index_0[i]:_AbilityType_index_0[i+1]]
|
||||||
|
case 8 <= i && i <= 10:
|
||||||
|
i -= 8
|
||||||
|
return _AbilityType_name_1[_AbilityType_index_1[i]:_AbilityType_index_1[i+1]]
|
||||||
|
case 13 <= i && i <= 14:
|
||||||
|
i -= 13
|
||||||
|
return _AbilityType_name_2[_AbilityType_index_2[i]:_AbilityType_index_2[i+1]]
|
||||||
|
case 21 <= i && i <= 22:
|
||||||
|
i -= 21
|
||||||
|
return _AbilityType_name_3[_AbilityType_index_3[i]:_AbilityType_index_3[i+1]]
|
||||||
|
case 27 <= i && i <= 29:
|
||||||
|
i -= 27
|
||||||
|
return _AbilityType_name_4[_AbilityType_index_4[i]:_AbilityType_index_4[i+1]]
|
||||||
|
case i == 31:
|
||||||
|
return _AbilityType_name_5
|
||||||
|
case i == 35:
|
||||||
|
return _AbilityType_name_6
|
||||||
|
case i == 37:
|
||||||
|
return _AbilityType_name_7
|
||||||
|
default:
|
||||||
|
return "AbilityType(" + strconv.FormatInt(int64(i), 10) + ")"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,63 @@
|
|||||||
|
// Code generated by "stringer -type AbilityValueUsage -trimprefix ValueUsage -linecomment"; DO NOT EDIT.
|
||||||
|
|
||||||
|
package horse
|
||||||
|
|
||||||
|
import "strconv"
|
||||||
|
|
||||||
|
func _() {
|
||||||
|
// An "invalid array index" compiler error signifies that the constant values have changed.
|
||||||
|
// Re-run the stringer command to generate them again.
|
||||||
|
var x [1]struct{}
|
||||||
|
_ = x[ValueUsageDirect-1]
|
||||||
|
_ = x[ValueUsageSkillCount-2]
|
||||||
|
_ = x[ValueUsageTeamSpeed-3]
|
||||||
|
_ = x[ValueUsageTeamStamina-4]
|
||||||
|
_ = x[ValueUsageTeamPower-5]
|
||||||
|
_ = x[ValueUsageTeamGuts-6]
|
||||||
|
_ = x[ValueUsageTeamWit-7]
|
||||||
|
_ = x[ValueUsageRandom-8]
|
||||||
|
_ = x[ValueUsageRandom2-9]
|
||||||
|
_ = x[ValueUsageClimax-10]
|
||||||
|
_ = x[ValueUsageFans-12]
|
||||||
|
_ = x[ValueUsageMaxStat-13]
|
||||||
|
_ = x[ValueUsageGreenCount-14]
|
||||||
|
_ = x[ValueUsageDistAdd-19]
|
||||||
|
_ = x[ValueUsageMidSideBlock-20]
|
||||||
|
_ = x[ValueUsageSpeed-22]
|
||||||
|
_ = x[ValueUsageSpeed2-23]
|
||||||
|
_ = x[ValueUsageArcPotential-24]
|
||||||
|
_ = x[ValueUsageMaxLead-25]
|
||||||
|
}
|
||||||
|
|
||||||
|
const (
|
||||||
|
_AbilityValueUsage_name_0 = "directlyscaling with the number of skillsscaling with team Speedscaling with team Staminascaling with team Powerscaling with team Gutsscaling with team Witwith a random 0× to 0.04× multiplierwith a random 0× to 0.04× multiplierscaling with the number of races won in the career"
|
||||||
|
_AbilityValueUsage_name_1 = "scaling with the number of fans earned in the careerscaling with the highest raw statscaling with the number of Passive skills activated"
|
||||||
|
_AbilityValueUsage_name_2 = "plus extra when far from the leadscaling with mid-race phase blocked side time"
|
||||||
|
_AbilityValueUsage_name_3 = "scaling with overall speedscaling with overall speedscaling with L'Arc global potentialscaling with the longest lead obtained in the first ⅔"
|
||||||
|
)
|
||||||
|
|
||||||
|
var (
|
||||||
|
_AbilityValueUsage_index_0 = [...]uint16{0, 8, 41, 64, 89, 112, 134, 155, 193, 231, 281}
|
||||||
|
_AbilityValueUsage_index_1 = [...]uint8{0, 52, 85, 136}
|
||||||
|
_AbilityValueUsage_index_2 = [...]uint8{0, 33, 78}
|
||||||
|
_AbilityValueUsage_index_3 = [...]uint8{0, 26, 52, 87, 142}
|
||||||
|
)
|
||||||
|
|
||||||
|
func (i AbilityValueUsage) String() string {
|
||||||
|
switch {
|
||||||
|
case 1 <= i && i <= 10:
|
||||||
|
i -= 1
|
||||||
|
return _AbilityValueUsage_name_0[_AbilityValueUsage_index_0[i]:_AbilityValueUsage_index_0[i+1]]
|
||||||
|
case 12 <= i && i <= 14:
|
||||||
|
i -= 12
|
||||||
|
return _AbilityValueUsage_name_1[_AbilityValueUsage_index_1[i]:_AbilityValueUsage_index_1[i+1]]
|
||||||
|
case 19 <= i && i <= 20:
|
||||||
|
i -= 19
|
||||||
|
return _AbilityValueUsage_name_2[_AbilityValueUsage_index_2[i]:_AbilityValueUsage_index_2[i+1]]
|
||||||
|
case 22 <= i && i <= 25:
|
||||||
|
i -= 22
|
||||||
|
return _AbilityValueUsage_name_3[_AbilityValueUsage_index_3[i]:_AbilityValueUsage_index_3[i+1]]
|
||||||
|
default:
|
||||||
|
return "AbilityValueUsage(" + strconv.FormatInt(int64(i), 10) + ")"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,31 @@
|
|||||||
|
// Code generated by "stringer -type AptitudeLevel -trimprefix AptitudeLv"; DO NOT EDIT.
|
||||||
|
|
||||||
|
package horse
|
||||||
|
|
||||||
|
import "strconv"
|
||||||
|
|
||||||
|
func _() {
|
||||||
|
// An "invalid array index" compiler error signifies that the constant values have changed.
|
||||||
|
// Re-run the stringer command to generate them again.
|
||||||
|
var x [1]struct{}
|
||||||
|
_ = x[AptitudeLvG-1]
|
||||||
|
_ = x[AptitudeLvF-2]
|
||||||
|
_ = x[AptitudeLvE-3]
|
||||||
|
_ = x[AptitudeLvD-4]
|
||||||
|
_ = x[AptitudeLvC-5]
|
||||||
|
_ = x[AptitudeLvB-6]
|
||||||
|
_ = x[AptitudeLvA-7]
|
||||||
|
_ = x[AptitudeLvS-8]
|
||||||
|
}
|
||||||
|
|
||||||
|
const _AptitudeLevel_name = "GFEDCBAS"
|
||||||
|
|
||||||
|
var _AptitudeLevel_index = [...]uint8{0, 1, 2, 3, 4, 5, 6, 7, 8}
|
||||||
|
|
||||||
|
func (i AptitudeLevel) String() string {
|
||||||
|
idx := int(i) - 1
|
||||||
|
if i < 1 || idx >= len(_AptitudeLevel_index)-1 {
|
||||||
|
return "AptitudeLevel(" + strconv.FormatInt(int64(i), 10) + ")"
|
||||||
|
}
|
||||||
|
return _AptitudeLevel_name[_AptitudeLevel_index[idx]:_AptitudeLevel_index[idx+1]]
|
||||||
|
}
|
||||||
@@ -0,0 +1,67 @@
|
|||||||
|
package horse
|
||||||
|
|
||||||
|
type CharacterID int16
|
||||||
|
|
||||||
|
type Character struct {
|
||||||
|
ID CharacterID `json:"chara_id"`
|
||||||
|
Name string `json:"name"`
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c Character) String() string {
|
||||||
|
return c.Name
|
||||||
|
}
|
||||||
|
|
||||||
|
// AffinityRelation holds precomputed affinity values for a pair or trio.
|
||||||
|
type AffinityRelation struct {
|
||||||
|
IDA CharacterID `json:"chara_a"`
|
||||||
|
IDB CharacterID `json:"chara_b"`
|
||||||
|
IDC CharacterID `json:"chara_c,omitzero"`
|
||||||
|
Affinity int `json:"affinity"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// AffinityDetail holds a single affinity entry.
|
||||||
|
type AffinityDetail struct {
|
||||||
|
CharaID CharacterID `json:"chara_id"`
|
||||||
|
Relation uint16 `json:"relation"`
|
||||||
|
Affinity uint16 `json:"affinity"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// Conversation describes a lobby conversation.
|
||||||
|
type Conversation struct {
|
||||||
|
// ID is the conversation ID.
|
||||||
|
ID int32 `json:"id"`
|
||||||
|
// CharacterID is the ID of the character who has the conversation as
|
||||||
|
// a gallery entry.
|
||||||
|
CharacterID CharacterID `json:"chara_id"`
|
||||||
|
// Number is the conversation number within the character's gallery.
|
||||||
|
Number int `json:"number"`
|
||||||
|
// Location is the ID of the location the conversation occurs in the lobby.
|
||||||
|
Location LobbyConversationLocationID `json:"location"`
|
||||||
|
// Chara1 is the first conversation participant ID.
|
||||||
|
// It does not necessarily match CharacterID.
|
||||||
|
Chara1 CharacterID `json:"chara_1"`
|
||||||
|
// Chara2 is the second conversation participant ID.
|
||||||
|
Chara2 CharacterID `json:"chara_2,omitzero"`
|
||||||
|
// Chara3 is the third conversation participant ID.
|
||||||
|
Chara3 CharacterID `json:"chara_3,omitzero"`
|
||||||
|
// ConditionType is a complete mystery to me.
|
||||||
|
ConditionType int `json:"condition_type"`
|
||||||
|
}
|
||||||
|
|
||||||
|
type LobbyConversationLocationID int
|
||||||
|
|
||||||
|
//go:generate go run golang.org/x/tools/cmd/stringer@v0.41.0 -type LobbyConversationLocationID -trimprefix Lobby -linecomment
|
||||||
|
const (
|
||||||
|
LobbyRightFront1 LobbyConversationLocationID = 110 // right side front
|
||||||
|
LobbyRightFront2 LobbyConversationLocationID = 120 // right side front
|
||||||
|
LobbyRightFront3 LobbyConversationLocationID = 130 // right side front
|
||||||
|
LobbyLeftTable1 LobbyConversationLocationID = 210 // left side table
|
||||||
|
LobbyLeftTable2 LobbyConversationLocationID = 220 // left side table
|
||||||
|
LobbyBackSeat LobbyConversationLocationID = 310 // center back seat
|
||||||
|
LobbyPosters1 LobbyConversationLocationID = 410 // center posters
|
||||||
|
LobbyPosters2 LobbyConversationLocationID = 420 // center posters
|
||||||
|
LobbyPosters3 LobbyConversationLocationID = 430 // center posters
|
||||||
|
LobbySchoolMap1 LobbyConversationLocationID = 510 // left side school map
|
||||||
|
LobbySchoolMap2 LobbyConversationLocationID = 520 // left side school map
|
||||||
|
LobbySchoolMap3 LobbyConversationLocationID = 530 // left side school map
|
||||||
|
)
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
token
|
||||||
@@ -0,0 +1,20 @@
|
|||||||
|
# horsebot
|
||||||
|
|
||||||
|
Website and Discord bot serving horse game data.
|
||||||
|
|
||||||
|
Production instance is named Zenno Rob Roy, because she has read all about Umamusume and is always happy to share her knowledge and give recommendations.
|
||||||
|
|
||||||
|
The `-mdb` flag is mandatory for both website and Discord bot modes.
|
||||||
|
It provides data for both the horsebot API and the discord bot.
|
||||||
|
|
||||||
|
## Running the Website
|
||||||
|
|
||||||
|
If the `-public` flag is provided, its value gives the directory to serve at `/`.
|
||||||
|
The `-img` flag gives a separate directory into which images are synced from GameTora; obtain permission from Gertas prior to using it.
|
||||||
|
The images are served on `/img/`.
|
||||||
|
|
||||||
|
## Running the Discord Bot
|
||||||
|
|
||||||
|
Provide the `-token` flag pointing to a file containing the token.
|
||||||
|
The bot always uses the Gateway API.
|
||||||
|
If the `-http` argument is provided, it will also use the HTTP API, and `-key` must also be provided.
|
||||||
@@ -0,0 +1,56 @@
|
|||||||
|
package autocomplete
|
||||||
|
|
||||||
|
import (
|
||||||
|
"bytes"
|
||||||
|
"cmp"
|
||||||
|
"slices"
|
||||||
|
"sync"
|
||||||
|
|
||||||
|
"github.com/junegunn/fzf/src/algo"
|
||||||
|
"github.com/junegunn/fzf/src/util"
|
||||||
|
)
|
||||||
|
|
||||||
|
// Set is an autocomplete set.
|
||||||
|
type Set[V any] struct {
|
||||||
|
keys []util.Chars
|
||||||
|
vals []V
|
||||||
|
}
|
||||||
|
|
||||||
|
// Add associates a value with a key in the autocomplete set.
|
||||||
|
// The behavior is undefined if the key already has a value.
|
||||||
|
func (s *Set[V]) Add(key string, val V) {
|
||||||
|
k := util.ToChars([]byte(key))
|
||||||
|
i, _ := slices.BinarySearchFunc(s.keys, k, func(a, b util.Chars) int {
|
||||||
|
return bytes.Compare(a.Bytes(), b.Bytes())
|
||||||
|
})
|
||||||
|
s.keys = slices.Insert(s.keys, i, k)
|
||||||
|
s.vals = slices.Insert(s.vals, i, val)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Find appends to r all values in the set with keys that key matches.
|
||||||
|
func (s *Set[V]) Find(r []V, key string) []V {
|
||||||
|
initFzf()
|
||||||
|
var (
|
||||||
|
p = []rune(key)
|
||||||
|
|
||||||
|
got []V
|
||||||
|
t []algo.Result
|
||||||
|
slab util.Slab
|
||||||
|
)
|
||||||
|
for i := range s.keys {
|
||||||
|
res, _ := algo.FuzzyMatchV2(false, true, true, &s.keys[i], p, false, &slab)
|
||||||
|
if res.Score <= 0 {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
j, _ := slices.BinarySearchFunc(t, res, func(a, b algo.Result) int { return -cmp.Compare(a.Score, b.Score) })
|
||||||
|
// Insert after all other matches with the same score for stability.
|
||||||
|
for j < len(t) && t[j].Score == res.Score {
|
||||||
|
j++
|
||||||
|
}
|
||||||
|
t = slices.Insert(t, j, res)
|
||||||
|
got = slices.Insert(got, j, s.vals[i])
|
||||||
|
}
|
||||||
|
return append(r, got...)
|
||||||
|
}
|
||||||
|
|
||||||
|
var initFzf = sync.OnceFunc(func() { algo.Init("default") })
|
||||||
@@ -0,0 +1,70 @@
|
|||||||
|
package autocomplete_test
|
||||||
|
|
||||||
|
import (
|
||||||
|
"slices"
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"git.sunturtle.xyz/zephyr/horse/cmd/horsebot/autocomplete"
|
||||||
|
)
|
||||||
|
|
||||||
|
func these(s ...string) []string { return s }
|
||||||
|
|
||||||
|
func TestAutocomplete(t *testing.T) {
|
||||||
|
cases := []struct {
|
||||||
|
name string
|
||||||
|
add []string
|
||||||
|
search string
|
||||||
|
want []string
|
||||||
|
}{
|
||||||
|
{
|
||||||
|
name: "empty",
|
||||||
|
add: nil,
|
||||||
|
search: "",
|
||||||
|
want: nil,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "exact",
|
||||||
|
add: these("bocchi"),
|
||||||
|
search: "bocchi",
|
||||||
|
want: these("bocchi"),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "extra",
|
||||||
|
add: these("bocchi", "ryo", "nijika", "kita"),
|
||||||
|
search: "bocchi",
|
||||||
|
want: these("bocchi"),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "short",
|
||||||
|
add: these("bocchi", "ryo", "nijika", "kita"),
|
||||||
|
search: "o",
|
||||||
|
want: these("bocchi", "ryo"),
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "unrelated",
|
||||||
|
add: these("bocchi", "ryo", "nijika", "kita"),
|
||||||
|
search: "x",
|
||||||
|
want: nil,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "map",
|
||||||
|
add: these("Corazón ☆ Ardiente"),
|
||||||
|
search: "corazo",
|
||||||
|
want: these("Corazón ☆ Ardiente"),
|
||||||
|
},
|
||||||
|
}
|
||||||
|
for _, c := range cases {
|
||||||
|
t.Run(c.name, func(t *testing.T) {
|
||||||
|
var set autocomplete.Set[string]
|
||||||
|
for _, s := range c.add {
|
||||||
|
set.Add(s, s)
|
||||||
|
}
|
||||||
|
got := set.Find(nil, c.search)
|
||||||
|
slices.Sort(c.want)
|
||||||
|
slices.Sort(got)
|
||||||
|
if !slices.Equal(c.want, got) {
|
||||||
|
t.Errorf("wrong results: want %q, got %q", c.want, got)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,55 @@
|
|||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"log/slog"
|
||||||
|
|
||||||
|
"github.com/disgoorg/disgo/discord"
|
||||||
|
"github.com/disgoorg/disgo/handler"
|
||||||
|
)
|
||||||
|
|
||||||
|
func logMiddleware(next handler.Handler) handler.Handler {
|
||||||
|
return func(e *handler.InteractionEvent) error {
|
||||||
|
var msg string
|
||||||
|
attrs := make([]slog.Attr, 0, 8)
|
||||||
|
attrs = append(attrs,
|
||||||
|
slog.Uint64("interaction", uint64(e.Interaction.ID())),
|
||||||
|
slog.Uint64("user", uint64(e.Interaction.User().ID)),
|
||||||
|
)
|
||||||
|
if guild := e.Interaction.GuildID(); guild != nil {
|
||||||
|
attrs = append(attrs, slog.String("guild", guild.String()))
|
||||||
|
}
|
||||||
|
switch i := e.Interaction.(type) {
|
||||||
|
case discord.ApplicationCommandInteraction:
|
||||||
|
msg = "command"
|
||||||
|
attrs = append(attrs,
|
||||||
|
slog.String("name", i.Data.CommandName()),
|
||||||
|
slog.Int("type", int(i.Data.Type())),
|
||||||
|
)
|
||||||
|
switch data := i.Data.(type) {
|
||||||
|
case discord.SlashCommandInteractionData:
|
||||||
|
attrs = append(attrs, slog.String("path", data.CommandPath()))
|
||||||
|
}
|
||||||
|
|
||||||
|
case discord.AutocompleteInteraction:
|
||||||
|
msg = "autocomplete"
|
||||||
|
attrs = append(attrs,
|
||||||
|
slog.String("name", i.Data.CommandName),
|
||||||
|
slog.String("path", i.Data.CommandPath()),
|
||||||
|
slog.String("focus", i.Data.Focused().Name),
|
||||||
|
)
|
||||||
|
|
||||||
|
case discord.ComponentInteraction:
|
||||||
|
msg = "component"
|
||||||
|
attrs = append(attrs,
|
||||||
|
slog.Int("type", int(i.Data.Type())),
|
||||||
|
slog.String("custom", i.Data.CustomID()),
|
||||||
|
)
|
||||||
|
|
||||||
|
default:
|
||||||
|
slog.WarnContext(e.Ctx, "unknown interaction", slog.Any("event", e))
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
slog.LogAttrs(e.Ctx, slog.LevelInfo, msg, attrs...)
|
||||||
|
return next(e)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,255 @@
|
|||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"bytes"
|
||||||
|
"context"
|
||||||
|
"encoding/hex"
|
||||||
|
"encoding/json"
|
||||||
|
"errors"
|
||||||
|
"flag"
|
||||||
|
"fmt"
|
||||||
|
"log/slog"
|
||||||
|
"net"
|
||||||
|
"net/http"
|
||||||
|
"os"
|
||||||
|
"os/signal"
|
||||||
|
"strconv"
|
||||||
|
"time"
|
||||||
|
|
||||||
|
"github.com/disgoorg/disgo"
|
||||||
|
"github.com/disgoorg/disgo/bot"
|
||||||
|
"github.com/disgoorg/disgo/discord"
|
||||||
|
"github.com/disgoorg/disgo/handler"
|
||||||
|
"github.com/disgoorg/disgo/handler/middleware"
|
||||||
|
"github.com/disgoorg/disgo/httpserver"
|
||||||
|
"github.com/disgoorg/disgo/rest"
|
||||||
|
httpmiddle "github.com/go-chi/chi/v5/middleware"
|
||||||
|
"zombiezen.com/go/sqlite"
|
||||||
|
"zombiezen.com/go/sqlite/sqlitex"
|
||||||
|
|
||||||
|
"git.sunturtle.xyz/zephyr/horse/mdb"
|
||||||
|
)
|
||||||
|
|
||||||
|
func main() {
|
||||||
|
var (
|
||||||
|
// public site
|
||||||
|
addr string
|
||||||
|
mdbf string
|
||||||
|
public string
|
||||||
|
img string
|
||||||
|
// discord
|
||||||
|
tokenFile string
|
||||||
|
apiRoute string
|
||||||
|
pubkey string
|
||||||
|
// logging
|
||||||
|
level slog.Level
|
||||||
|
textfmt string
|
||||||
|
)
|
||||||
|
flag.StringVar(&addr, "http", ":13669", "`address` to bind HTTP server")
|
||||||
|
flag.StringVar(&mdbf, "mdb", "", "`path` to master.mdb")
|
||||||
|
flag.StringVar(&public, "public", "", "`dir`ectory containing the website to serve")
|
||||||
|
flag.StringVar(&img, "img", "", "`dir`ectory to save and serve images")
|
||||||
|
flag.StringVar(&tokenFile, "token", "", "`file` containing the Discord bot token")
|
||||||
|
flag.StringVar(&apiRoute, "route", "/interactions/callback", "`path` to serve Discord HTTP API calls")
|
||||||
|
flag.StringVar(&pubkey, "key", "", "Discord public key")
|
||||||
|
flag.TextVar(&level, "log", slog.LevelInfo, "slog logging `level`")
|
||||||
|
flag.StringVar(&textfmt, "log-format", "text", "slog logging `format`, text or json")
|
||||||
|
flag.Parse()
|
||||||
|
|
||||||
|
var lh slog.Handler
|
||||||
|
switch textfmt {
|
||||||
|
case "text":
|
||||||
|
lh = slog.NewTextHandler(os.Stderr, &slog.HandlerOptions{Level: level})
|
||||||
|
case "json":
|
||||||
|
lh = slog.NewJSONHandler(os.Stderr, &slog.HandlerOptions{Level: level})
|
||||||
|
default:
|
||||||
|
fmt.Fprintf(os.Stderr, "invalid log format %q, must be text or json", textfmt)
|
||||||
|
os.Exit(1)
|
||||||
|
}
|
||||||
|
slog.SetDefault(slog.New(lh))
|
||||||
|
|
||||||
|
if public != "" {
|
||||||
|
stat, err := os.Stat(public)
|
||||||
|
if err != nil {
|
||||||
|
slog.Error("public", slog.Any("err", err))
|
||||||
|
os.Exit(1)
|
||||||
|
}
|
||||||
|
if !stat.IsDir() {
|
||||||
|
slog.Error("public", slog.String("err", "not a directory"))
|
||||||
|
os.Exit(1)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ctx, stop := signal.NotifyContext(context.Background(), os.Interrupt)
|
||||||
|
|
||||||
|
db, err := sqlitex.NewPool(mdbf, sqlitex.PoolOptions{Flags: sqlite.OpenReadOnly})
|
||||||
|
if err != nil {
|
||||||
|
slog.Error("mdb", slog.Any("err", err))
|
||||||
|
os.Exit(1)
|
||||||
|
}
|
||||||
|
|
||||||
|
if img != "" {
|
||||||
|
// Ensure the img directory is in fact a directory
|
||||||
|
// before we start trying to fill it out.
|
||||||
|
err := os.MkdirAll(img, 0777)
|
||||||
|
if err != nil {
|
||||||
|
slog.Error("img", slog.Any("err", err))
|
||||||
|
os.Exit(1)
|
||||||
|
}
|
||||||
|
go saveImgs(ctx, db, img)
|
||||||
|
}
|
||||||
|
|
||||||
|
var client *bot.Client
|
||||||
|
if tokenFile != "" {
|
||||||
|
skills, err := mdb.Skills(ctx, db)
|
||||||
|
slog.Info("loaded skills", slog.Int("count", len(skills)))
|
||||||
|
groups, err2 := mdb.SkillGroups(ctx, db)
|
||||||
|
slog.Info("loaded skill groups", slog.Int("count", len(groups)))
|
||||||
|
if err = errors.Join(err, err2); err != nil {
|
||||||
|
slog.Error("loading data", slog.Any("err", err))
|
||||||
|
os.Exit(1)
|
||||||
|
}
|
||||||
|
skillSrv := newSkillServer(skills, groups)
|
||||||
|
slog.Info("skill server ready")
|
||||||
|
|
||||||
|
r := handler.New()
|
||||||
|
r.DefaultContext(func() context.Context { return ctx })
|
||||||
|
r.Use(middleware.Go)
|
||||||
|
r.Use(logMiddleware)
|
||||||
|
r.Route("/skill", func(r handler.Router) {
|
||||||
|
r.SlashCommand("/", skillSrv.slash)
|
||||||
|
r.Autocomplete("/", skillSrv.autocomplete)
|
||||||
|
r.SelectMenuComponent("/swap", skillSrv.menu)
|
||||||
|
r.ButtonComponent("/swap/{id}", skillSrv.button)
|
||||||
|
})
|
||||||
|
|
||||||
|
slog.Info("connect", slog.String("disgo", disgo.Version))
|
||||||
|
token, err := os.ReadFile(tokenFile)
|
||||||
|
if err != nil {
|
||||||
|
slog.Error("reading token", slog.Any("err", err))
|
||||||
|
os.Exit(1)
|
||||||
|
}
|
||||||
|
token = bytes.TrimSuffix(token, []byte{'\n'})
|
||||||
|
client, err = disgo.New(string(token), bot.WithDefaultGateway(), bot.WithEventListeners(r))
|
||||||
|
if err != nil {
|
||||||
|
slog.Error("building bot", slog.Any("err", err))
|
||||||
|
os.Exit(1)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
mux := http.NewServeMux()
|
||||||
|
if public != "" {
|
||||||
|
mux.Handle("GET /", httpmiddle.Compress(5)(http.FileServerFS(os.DirFS(public))))
|
||||||
|
}
|
||||||
|
if img != "" {
|
||||||
|
mux.Handle("GET /img/", http.StripPrefix("/img", http.FileServerFS(os.DirFS(img))))
|
||||||
|
}
|
||||||
|
mux.Handle("GET /api/global/affinity", httpmiddle.Compress(5)(dataroute(ctx, db, mdb.AffinitySummary)))
|
||||||
|
mux.Handle("GET /api/global/affinity-detail", httpmiddle.Compress(5)(dataroute(ctx, db, mdb.AffinityDetail)))
|
||||||
|
mux.Handle("GET /api/global/character", httpmiddle.Compress(5)(dataroute(ctx, db, mdb.Characters)))
|
||||||
|
mux.Handle("GET /api/global/conversation", httpmiddle.Compress(5)(dataroute(ctx, db, mdb.Conversations)))
|
||||||
|
mux.Handle("GET /api/global/race", httpmiddle.Compress(5)(dataroute(ctx, db, mdb.Races)))
|
||||||
|
mux.Handle("GET /api/global/racecourse", httpmiddle.Compress(5)(dataroute(ctx, db, mdb.Racecourses)))
|
||||||
|
mux.Handle("GET /api/global/saddle", httpmiddle.Compress(5)(dataroute(ctx, db, mdb.Saddles)))
|
||||||
|
mux.Handle("GET /api/global/scenario", httpmiddle.Compress(5)(dataroute(ctx, db, mdb.Scenarios)))
|
||||||
|
mux.Handle("GET /api/global/skill", httpmiddle.Compress(5)(dataroute(ctx, db, mdb.Skills)))
|
||||||
|
mux.Handle("GET /api/global/skill-group", httpmiddle.Compress(5)(dataroute(ctx, db, mdb.SkillGroups)))
|
||||||
|
mux.Handle("GET /api/global/spark", httpmiddle.Compress(5)(dataroute(ctx, db, mdb.Sparks)))
|
||||||
|
mux.Handle("GET /api/global/support", httpmiddle.Compress(5)(dataroute(ctx, db, mdb.SupportCards)))
|
||||||
|
mux.Handle("GET /api/global/uma", httpmiddle.Compress(5)(dataroute(ctx, db, mdb.Umas)))
|
||||||
|
if pubkey != "" {
|
||||||
|
pk, err := hex.DecodeString(pubkey)
|
||||||
|
if err != nil {
|
||||||
|
slog.Error("pubkey", slog.Any("err", err))
|
||||||
|
os.Exit(1)
|
||||||
|
}
|
||||||
|
mux.Handle("POST "+apiRoute, httpserver.HandleInteraction(httpserver.DefaultVerifier{}, pk, slog.Default(), client.EventManager.HandleHTTPEvent))
|
||||||
|
slog.Info("Discord HTTP API enabled", slog.String("pubkey", pubkey))
|
||||||
|
}
|
||||||
|
l, err := net.Listen("tcp", addr)
|
||||||
|
if err != nil {
|
||||||
|
slog.Error("listen", slog.String("addr", addr), slog.Any("err", err))
|
||||||
|
os.Exit(1)
|
||||||
|
}
|
||||||
|
srv := http.Server{
|
||||||
|
Addr: addr,
|
||||||
|
Handler: httpmiddle.Logger(mux),
|
||||||
|
ReadTimeout: 15 * time.Second,
|
||||||
|
WriteTimeout: 15 * time.Second,
|
||||||
|
BaseContext: func(l net.Listener) context.Context { return ctx },
|
||||||
|
}
|
||||||
|
go func() {
|
||||||
|
slog.Info("HTTP", slog.Any("addr", l.Addr()))
|
||||||
|
err := srv.Serve(l)
|
||||||
|
if err == http.ErrServerClosed {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
slog.Error("HTTP server closed", slog.Any("err", err))
|
||||||
|
}()
|
||||||
|
|
||||||
|
if client != nil {
|
||||||
|
if err := handler.SyncCommands(client, commands, nil, rest.WithCtx(ctx)); err != nil {
|
||||||
|
slog.Error("syncing commands", slog.Any("err", err))
|
||||||
|
os.Exit(1)
|
||||||
|
}
|
||||||
|
|
||||||
|
slog.Info("start gateway")
|
||||||
|
if err := client.OpenGateway(ctx); err != nil {
|
||||||
|
slog.Error("starting gateway", slog.Any("err", err))
|
||||||
|
stop()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
slog.Info("ready")
|
||||||
|
<-ctx.Done()
|
||||||
|
stop()
|
||||||
|
|
||||||
|
ctx, stop = context.WithTimeout(context.Background(), 5*time.Second)
|
||||||
|
defer stop()
|
||||||
|
if client != nil {
|
||||||
|
client.Close(ctx)
|
||||||
|
}
|
||||||
|
if err := srv.Shutdown(ctx); err != nil {
|
||||||
|
slog.Error("HTTP API shutdown", slog.Any("err", err))
|
||||||
|
os.Exit(1)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var commands = []discord.ApplicationCommandCreate{
|
||||||
|
discord.SlashCommandCreate{
|
||||||
|
Name: "skill",
|
||||||
|
Description: "Umamusume skill data",
|
||||||
|
Options: []discord.ApplicationCommandOption{
|
||||||
|
discord.ApplicationCommandOptionString{
|
||||||
|
Name: "query",
|
||||||
|
Description: "Skill name or ID",
|
||||||
|
Required: true,
|
||||||
|
Autocomplete: true,
|
||||||
|
},
|
||||||
|
discord.ApplicationCommandOptionBool{
|
||||||
|
Name: "share",
|
||||||
|
Description: "Share the skill info",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
func dataroute[T any](ctx context.Context, db *sqlitex.Pool, f func(context.Context, *sqlitex.Pool) ([]T, error)) http.HandlerFunc {
|
||||||
|
return func(w http.ResponseWriter, r *http.Request) {
|
||||||
|
data, err := f(ctx, db)
|
||||||
|
if err != nil {
|
||||||
|
http.Error(w, err.Error(), http.StatusInternalServerError)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
b, err := json.Marshal(data)
|
||||||
|
if err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
w.Header().Set("Content-Type", "application/json")
|
||||||
|
w.Header().Set("Content-Length", strconv.Itoa(len(b)))
|
||||||
|
if _, err := w.Write(b); err != nil {
|
||||||
|
slog.Error("writing response", slog.Any("err", err))
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,250 @@
|
|||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
"log/slog"
|
||||||
|
"strconv"
|
||||||
|
"strings"
|
||||||
|
|
||||||
|
"github.com/disgoorg/disgo/discord"
|
||||||
|
"github.com/disgoorg/disgo/handler"
|
||||||
|
|
||||||
|
"git.sunturtle.xyz/zephyr/horse"
|
||||||
|
"git.sunturtle.xyz/zephyr/horse/cmd/horsebot/autocomplete"
|
||||||
|
)
|
||||||
|
|
||||||
|
type skillServer struct {
|
||||||
|
skills map[horse.SkillID]horse.Skill
|
||||||
|
byName map[string]horse.SkillID
|
||||||
|
groups map[horse.SkillGroupID]horse.SkillGroup
|
||||||
|
autocom autocomplete.Set[discord.AutocompleteChoice]
|
||||||
|
}
|
||||||
|
|
||||||
|
func newSkillServer(skills []horse.Skill, groups []horse.SkillGroup) *skillServer {
|
||||||
|
s := skillServer{
|
||||||
|
skills: make(map[horse.SkillID]horse.Skill, len(skills)),
|
||||||
|
byName: make(map[string]horse.SkillID, len(skills)),
|
||||||
|
groups: make(map[horse.SkillGroupID]horse.SkillGroup, len(groups)),
|
||||||
|
}
|
||||||
|
for _, skill := range skills {
|
||||||
|
s.skills[skill.ID] = skill
|
||||||
|
id := strconv.Itoa(int(skill.ID))
|
||||||
|
switch {
|
||||||
|
case skill.UniqueOwner == "":
|
||||||
|
s.byName[skill.Name] = skill.ID
|
||||||
|
s.autocom.Add(skill.Name, discord.AutocompleteChoiceString{Name: skill.Name, Value: id})
|
||||||
|
case skill.Rarity >= 3:
|
||||||
|
s.byName[skill.Name] = skill.ID
|
||||||
|
s.autocom.Add(skill.Name, discord.AutocompleteChoiceString{Name: skill.Name, Value: id})
|
||||||
|
s.autocom.Add(skill.UniqueOwner, discord.AutocompleteChoiceString{Name: "Unique: " + skill.UniqueOwner, Value: id})
|
||||||
|
default:
|
||||||
|
name := skill.Name + " (Inherited)"
|
||||||
|
s.byName[name] = skill.ID
|
||||||
|
s.autocom.Add(name, discord.AutocompleteChoiceString{Name: name, Value: id})
|
||||||
|
s.autocom.Add(skill.UniqueOwner, discord.AutocompleteChoiceString{Name: "Inherited unique: " + skill.UniqueOwner, Value: id})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for _, g := range groups {
|
||||||
|
s.groups[g.ID] = g
|
||||||
|
}
|
||||||
|
return &s
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *skillServer) slash(data discord.SlashCommandInteractionData, e *handler.CommandEvent) error {
|
||||||
|
q := data.String("query")
|
||||||
|
id, err := strconv.ParseInt(q, 10, 32)
|
||||||
|
if err == nil {
|
||||||
|
// note inverted condition; this is when we have an id
|
||||||
|
id = int64(s.skills[horse.SkillID(id)].ID)
|
||||||
|
}
|
||||||
|
if id == 0 {
|
||||||
|
// Either we weren't given a number or the number doesn't match any skill ID.
|
||||||
|
v := s.byName[q]
|
||||||
|
if v == 0 {
|
||||||
|
// No such skill.
|
||||||
|
m := discord.MessageCreate{
|
||||||
|
Content: "No such skill.",
|
||||||
|
Flags: discord.MessageFlagEphemeral,
|
||||||
|
}
|
||||||
|
return e.CreateMessage(m)
|
||||||
|
}
|
||||||
|
id = int64(v)
|
||||||
|
}
|
||||||
|
m := discord.MessageCreate{
|
||||||
|
Components: []discord.LayoutComponent{s.render(horse.SkillID(id))},
|
||||||
|
Flags: discord.MessageFlagIsComponentsV2,
|
||||||
|
}
|
||||||
|
if !data.Bool("share") {
|
||||||
|
m.Flags |= discord.MessageFlagEphemeral
|
||||||
|
}
|
||||||
|
return e.CreateMessage(m)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *skillServer) autocomplete(e *handler.AutocompleteEvent) error {
|
||||||
|
q := e.Data.String("query")
|
||||||
|
opts := s.autocom.Find(nil, q)
|
||||||
|
return e.AutocompleteResult(opts[:min(len(opts), 25)])
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *skillServer) button(data discord.ButtonInteractionData, e *handler.ComponentEvent) error {
|
||||||
|
id, err := strconv.ParseInt(e.Vars["id"], 10, 32)
|
||||||
|
if err != nil {
|
||||||
|
m := discord.MessageCreate{
|
||||||
|
Content: "That button produced an invalid skill ID. That's not supposed to happen.",
|
||||||
|
Flags: discord.MessageFlagEphemeral,
|
||||||
|
}
|
||||||
|
return e.CreateMessage(m)
|
||||||
|
}
|
||||||
|
m := discord.MessageUpdate{
|
||||||
|
Components: &[]discord.LayoutComponent{s.render(horse.SkillID(id))},
|
||||||
|
}
|
||||||
|
return e.UpdateMessage(m)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *skillServer) menu(data discord.SelectMenuInteractionData, e *handler.ComponentEvent) error {
|
||||||
|
d, ok := data.(discord.StringSelectMenuInteractionData)
|
||||||
|
if !ok {
|
||||||
|
return fmt.Errorf("wrong select menu type %T", data)
|
||||||
|
}
|
||||||
|
if len(d.Values) != 1 {
|
||||||
|
return fmt.Errorf("wrong number of values: %q", d.Values)
|
||||||
|
}
|
||||||
|
id, err := strconv.ParseInt(d.Values[0], 10, 32)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
m := discord.MessageUpdate{
|
||||||
|
Components: &[]discord.LayoutComponent{s.render(horse.SkillID(id))},
|
||||||
|
}
|
||||||
|
return e.UpdateMessage(m)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *skillServer) render(id horse.SkillID) discord.ContainerComponent {
|
||||||
|
skill, ok := s.skills[id]
|
||||||
|
if !ok {
|
||||||
|
slog.Error("invalid skill id", slog.Int("id", int(id)))
|
||||||
|
return discord.NewContainer(discord.NewTextDisplayf("invalid skill ID %v made it to render", id))
|
||||||
|
}
|
||||||
|
|
||||||
|
top := "### " + skill.Name
|
||||||
|
if skill.UniqueOwner != "" {
|
||||||
|
top += "\n-# " + skill.UniqueOwner
|
||||||
|
}
|
||||||
|
r := discord.NewContainer(
|
||||||
|
discord.NewTextDisplay(top),
|
||||||
|
discord.NewSmallSeparator(),
|
||||||
|
)
|
||||||
|
var skilltype string
|
||||||
|
switch {
|
||||||
|
case skill.Rarity == 3, skill.Rarity == 4, skill.Rarity == 5:
|
||||||
|
// unique of various star levels
|
||||||
|
r.AccentColor = 0xaca4d4
|
||||||
|
skilltype = "Unique Skill"
|
||||||
|
case skill.UniqueOwner != "":
|
||||||
|
r.AccentColor = 0xcccccc
|
||||||
|
skilltype = "Inherited Unique"
|
||||||
|
case skill.Rarity == 2:
|
||||||
|
// rare (gold)
|
||||||
|
r.AccentColor = 0xd7c25b
|
||||||
|
skilltype = "Rare Skill"
|
||||||
|
case skill.GroupRate == -1:
|
||||||
|
// negative (purple) skill
|
||||||
|
r.AccentColor = 0x9151d4
|
||||||
|
skilltype = "Negative Skill"
|
||||||
|
case !skill.WitCheck:
|
||||||
|
// should be passive (green)
|
||||||
|
r.AccentColor = 0x66ae1c
|
||||||
|
skilltype = "Passive Skill"
|
||||||
|
case isDebuff(skill):
|
||||||
|
// debuff (red)
|
||||||
|
r.AccentColor = 0xe34747
|
||||||
|
skilltype = "Debuff Skill"
|
||||||
|
case skill.Rarity == 1:
|
||||||
|
// common (white)
|
||||||
|
r.AccentColor = 0xcccccc
|
||||||
|
skilltype = "Common Skill"
|
||||||
|
}
|
||||||
|
text := make([]string, 0, 3)
|
||||||
|
abils := make([]string, 0, 3)
|
||||||
|
for _, act := range skill.Activations {
|
||||||
|
text, abils = text[:0], abils[:0]
|
||||||
|
if act.Precondition != "" {
|
||||||
|
text = append(text, "Precondition: "+formatCondition(act.Precondition))
|
||||||
|
}
|
||||||
|
text = append(text, "Condition: "+formatCondition(act.Condition))
|
||||||
|
var t string
|
||||||
|
switch {
|
||||||
|
case act.Duration <= 0:
|
||||||
|
// passive or instantaneous, e.g. recoveries; do nothing
|
||||||
|
case act.Duration >= 500e4:
|
||||||
|
t = "Permanent "
|
||||||
|
case act.DurScale == horse.DurationDirect:
|
||||||
|
t = "For " + act.Duration.String() + "s, "
|
||||||
|
default:
|
||||||
|
t = "For " + act.Duration.String() + "s " + act.DurScale.String() + ", "
|
||||||
|
}
|
||||||
|
for _, a := range act.Abilities {
|
||||||
|
abils = append(abils, a.String())
|
||||||
|
}
|
||||||
|
t += strings.Join(abils, ", ")
|
||||||
|
if act.Cooldown > 0 && act.Cooldown < 500e4 {
|
||||||
|
t += " on " + act.Cooldown.String() + "s cooldown"
|
||||||
|
}
|
||||||
|
text = append(text, t)
|
||||||
|
r.Components = append(r.Components, discord.NewTextDisplay(strings.Join(text, "\n")))
|
||||||
|
}
|
||||||
|
|
||||||
|
l := discord.NewTextDisplayf("%s ・ SP cost %d ・ Grade value %d ・ [Conditions on GameTora](https://gametora.com/umamusume/skill-condition-viewer?skill=%d)", skilltype, skill.SPCost, skill.GradeValue, skill.ID)
|
||||||
|
r.Components = append(r.Components, discord.NewSmallSeparator(), l)
|
||||||
|
rel := make([]horse.Skill, 0, 4)
|
||||||
|
group := s.groups[skill.Group]
|
||||||
|
for _, id := range [...]horse.SkillID{group.Skill1, group.Skill2, group.Skill3, group.SkillBad} {
|
||||||
|
if id != 0 {
|
||||||
|
rel = append(rel, s.skills[id])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if len(rel) > 1 {
|
||||||
|
opts := make([]discord.StringSelectMenuOption, 0, 4)
|
||||||
|
for _, rs := range rel {
|
||||||
|
name := rs.Name
|
||||||
|
emoji := "⚪"
|
||||||
|
switch {
|
||||||
|
case rs.Rarity == 3, rs.Rarity == 4, rs.Rarity == 5:
|
||||||
|
emoji = "🟠"
|
||||||
|
case rs.UniqueOwner != "":
|
||||||
|
name += " (Inherited)"
|
||||||
|
case rs.Rarity == 2:
|
||||||
|
emoji = "🟡"
|
||||||
|
case rs.GroupRate == -1:
|
||||||
|
emoji = "🟣"
|
||||||
|
}
|
||||||
|
b := discord.NewStringSelectMenuOption(name, strconv.Itoa(int(rs.ID))).WithEmoji(discord.NewComponentEmoji(emoji))
|
||||||
|
if rs.ID == skill.ID {
|
||||||
|
b = b.WithDefault(true)
|
||||||
|
}
|
||||||
|
opts = append(opts, b)
|
||||||
|
}
|
||||||
|
row := discord.NewActionRow(discord.NewStringSelectMenu("/skill/swap", "Related skills", opts...))
|
||||||
|
r.Components = append(r.Components, row)
|
||||||
|
}
|
||||||
|
return r
|
||||||
|
}
|
||||||
|
|
||||||
|
func formatCondition(s string) string {
|
||||||
|
s = strings.ReplaceAll(s, "&", " & ")
|
||||||
|
if strings.ContainsRune(s, '@') {
|
||||||
|
return "```\n" + strings.ReplaceAll(s, "@", "\n@\n") + "```"
|
||||||
|
}
|
||||||
|
return "`" + s + "`"
|
||||||
|
}
|
||||||
|
|
||||||
|
func isDebuff(s horse.Skill) bool {
|
||||||
|
for _, act := range s.Activations {
|
||||||
|
for _, a := range act.Abilities {
|
||||||
|
if a.Value < 0 {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
@@ -0,0 +1,185 @@
|
|||||||
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"errors"
|
||||||
|
"fmt"
|
||||||
|
"image"
|
||||||
|
"image/png"
|
||||||
|
"log/slog"
|
||||||
|
"net/http"
|
||||||
|
"os"
|
||||||
|
"path/filepath"
|
||||||
|
"strconv"
|
||||||
|
"time"
|
||||||
|
|
||||||
|
"github.com/gen2brain/avif"
|
||||||
|
"golang.org/x/image/draw"
|
||||||
|
"golang.org/x/sync/errgroup"
|
||||||
|
"zombiezen.com/go/sqlite"
|
||||||
|
"zombiezen.com/go/sqlite/sqlitex"
|
||||||
|
)
|
||||||
|
|
||||||
|
func saveImgs(ctx context.Context, db *sqlitex.Pool, out string) {
|
||||||
|
skill, err := skillIconIDs(ctx, db)
|
||||||
|
if err != nil {
|
||||||
|
slog.Error("skills", slog.Any("err", err))
|
||||||
|
}
|
||||||
|
chara, err := charaIDs(ctx, db)
|
||||||
|
if err != nil {
|
||||||
|
slog.Error("characters", slog.Any("err", err))
|
||||||
|
}
|
||||||
|
rank, err := rankIDs(ctx, db)
|
||||||
|
if err != nil {
|
||||||
|
slog.Error("ranks", slog.Any("err", err))
|
||||||
|
}
|
||||||
|
supps, err := suppIDs(ctx, db)
|
||||||
|
if err != nil {
|
||||||
|
slog.Error("supports", slog.Any("err", err))
|
||||||
|
}
|
||||||
|
|
||||||
|
g, ctx := errgroup.WithContext(ctx)
|
||||||
|
tick := time.NewTicker(250 * time.Millisecond)
|
||||||
|
idouts(ctx, g, tick, skill, filepath.Join(out, "skill"), "https://media.gametora.com/umamusume/skills/icon/%d.png", image.Pt(64, 64), image.Pt(32, 32), image.Pt(16, 16))
|
||||||
|
idouts(ctx, g, tick, chara, filepath.Join(out, "chara"), "https://gametora.com/images/umamusume/characters/icons/chr_icon_%d.png", image.Pt(256, 256), image.Pt(64, 64), image.Pt(32, 32), image.Pt(16, 16))
|
||||||
|
idouts(ctx, g, tick, rank, filepath.Join(out, "rank"), "https://media.gametora.com/umamusume/ui/rank/%02d.png", image.Pt(128, 128), image.Pt(64, 64), image.Pt(32, 32), image.Pt(16, 16))
|
||||||
|
idouts(ctx, g, tick, rank, filepath.Join(out, "rank", "simple"), "https://media.gametora.com/umamusume/ui/rank/simple/%02d.png", image.Pt(50, 50), image.Pt(32, 32), image.Pt(16, 16))
|
||||||
|
idouts(ctx, g, tick, supps, filepath.Join(out, "support"), "https://gametora.com/images/umamusume/supports/support_card_s_%d.png", image.Pt(128, 128), image.Pt(64, 64), image.Pt(32, 32))
|
||||||
|
idouts(ctx, g, tick, []int32{0, 1, 2, 3, 4, 5, 6}, filepath.Join(out, "support", "type"), "https://gametora.com/images/umamusume/icons/utx_ico_obtain_%02d.png", image.Pt(70, 70), image.Pt(35, 35), image.Pt(16, 16))
|
||||||
|
if err := g.Wait(); err != nil {
|
||||||
|
slog.Error("output", slog.Any("err", err))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// load scans all results of sql and appends them to r.
|
||||||
|
func load[T any](ctx context.Context, db *sqlitex.Pool, r []T, sql string, row func(*sqlite.Stmt) T) ([]T, error) {
|
||||||
|
conn, err := db.Take(ctx)
|
||||||
|
defer db.Put(conn)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
stmt, err := conn.Prepare(sql)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
|
for {
|
||||||
|
ok, err := stmt.Step()
|
||||||
|
if err != nil {
|
||||||
|
return r, err
|
||||||
|
}
|
||||||
|
if !ok {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
r = append(r, row(stmt))
|
||||||
|
}
|
||||||
|
return r, err
|
||||||
|
}
|
||||||
|
|
||||||
|
func skillIconIDs(ctx context.Context, db *sqlitex.Pool) ([]int32, error) {
|
||||||
|
return load(ctx, db, nil, "SELECT DISTINCT icon_id FROM skill_data", func(s *sqlite.Stmt) int32 {
|
||||||
|
return s.ColumnInt32(0)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
func charaIDs(ctx context.Context, db *sqlitex.Pool) ([]int32, error) {
|
||||||
|
return load(ctx, db, nil, "SELECT id FROM chara_data", func(s *sqlite.Stmt) int32 {
|
||||||
|
return s.ColumnInt32(0)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
func rankIDs(ctx context.Context, db *sqlitex.Pool) ([]int32, error) {
|
||||||
|
return load(ctx, db, nil, "SELECT id-1 FROM single_mode_rank", func(s *sqlite.Stmt) int32 {
|
||||||
|
return s.ColumnInt32(0)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
func suppIDs(ctx context.Context, db *sqlitex.Pool) ([]int32, error) {
|
||||||
|
return load(ctx, db, nil, "SELECT id FROM support_card_data", func(s *sqlite.Stmt) int32 {
|
||||||
|
return s.ColumnInt32(0)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
var pngenc = &png.Encoder{CompressionLevel: png.BestCompression}
|
||||||
|
|
||||||
|
func idouts(ctx context.Context, g *errgroup.Group, tick *time.Ticker, ids []int32, p, urlf string, sizes ...image.Point) {
|
||||||
|
for _, id := range ids {
|
||||||
|
g.Go(func() error {
|
||||||
|
n := strconv.Itoa(int(id))
|
||||||
|
p := filepath.Join(p, n)
|
||||||
|
_, err := os.Stat(p)
|
||||||
|
if !errors.Is(err, os.ErrNotExist) {
|
||||||
|
slog.DebugContext(ctx, "exists", slog.String("path", p))
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
if err := os.MkdirAll(p, 0777); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
url := fmt.Sprintf(urlf, id)
|
||||||
|
select {
|
||||||
|
case <-ctx.Done():
|
||||||
|
return ctx.Err()
|
||||||
|
case <-tick.C: // continue on
|
||||||
|
}
|
||||||
|
img, err := dlimg(ctx, url)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
slog.InfoContext(ctx, "resize", slog.String("url", url))
|
||||||
|
rs := resize(img, sizes...)
|
||||||
|
for _, r := range rs {
|
||||||
|
g.Go(func() error {
|
||||||
|
m := r.Bounds().Max
|
||||||
|
o := filepath.Join(p, fmt.Sprintf("%dx%d.png", m.X, m.Y))
|
||||||
|
slog.InfoContext(ctx, "write", slog.String("path", o))
|
||||||
|
f, err := os.Create(o)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
defer f.Close()
|
||||||
|
return pngenc.Encode(f, r)
|
||||||
|
})
|
||||||
|
g.Go(func() error {
|
||||||
|
m := r.Bounds().Max
|
||||||
|
o := filepath.Join(p, fmt.Sprintf("%dx%d.avif", m.X, m.Y))
|
||||||
|
slog.InfoContext(ctx, "write", slog.String("path", o))
|
||||||
|
f, err := os.Create(o)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
defer f.Close()
|
||||||
|
return avif.Encode(f, r)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func dlimg(ctx context.Context, url string) (image.Image, error) {
|
||||||
|
slog.InfoContext(ctx, "download", slog.String("url", url))
|
||||||
|
ctx, stop := context.WithTimeout(ctx, 5*time.Second)
|
||||||
|
defer stop()
|
||||||
|
req, err := http.NewRequestWithContext(ctx, "GET", url, nil)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
resp, err := http.DefaultClient.Do(req)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
defer resp.Body.Close()
|
||||||
|
slog.InfoContext(ctx, "decode", slog.String("url", url))
|
||||||
|
img, _, err := image.Decode(resp.Body)
|
||||||
|
return img, err
|
||||||
|
}
|
||||||
|
|
||||||
|
func resize(img image.Image, sizes ...image.Point) []image.Image {
|
||||||
|
rs := make([]image.Image, 0, len(sizes))
|
||||||
|
for _, sz := range sizes {
|
||||||
|
d := image.NewNRGBA(image.Rectangle{Min: image.Point{}, Max: sz})
|
||||||
|
draw.CatmullRom.Scale(d, d.Bounds(), img, img.Bounds(), draw.Src, nil)
|
||||||
|
rs = append(rs, d)
|
||||||
|
}
|
||||||
|
return rs
|
||||||
|
}
|
||||||
+122197
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
+123780
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
+137122
File diff suppressed because it is too large
Load Diff
+190767
File diff suppressed because it is too large
Load Diff
+487
@@ -0,0 +1,487 @@
|
|||||||
|
# doc
|
||||||
|
|
||||||
|
This is documentation relevant to the project.
|
||||||
|
SQL files are master.mdb dumps labeled by date and region.
|
||||||
|
This file is my notes from exploring the database.
|
||||||
|
|
||||||
|
# text_data categories
|
||||||
|
|
||||||
|
- 6 is character names, 4 is [variant] character name, 5 is [variant], 14 is clothing names
|
||||||
|
- 47 is skill names, 48 is skill descriptions
|
||||||
|
- 75 is support card names incl. variant, 76 is support card variant, 77 is support card character
|
||||||
|
- 147 is spark names, 172 is spark descriptions
|
||||||
|
- 33 is race names by race id, 28 is race names by race instance id, 31 is race courses, 111 is saddle names
|
||||||
|
- 65 is player titles, 66 is title descriptions - ties with honor_data?
|
||||||
|
- 119 is scenario full titles (e.g. The Beginning: URA Finale), 120 is scenario descriptions, 237 is scenario names (e.g. URA Finale)
|
||||||
|
- 130 is epithet names, 131 is epithet descriptions
|
||||||
|
|
||||||
|
in the decomp, text data categories are named in `public enum MasterString.Category`.
|
||||||
|
some categories seem to be missing, though.
|
||||||
|
|
||||||
|
# succession factor (sparks)
|
||||||
|
|
||||||
|
tables are succession_factor and succession_factor_effect
|
||||||
|
|
||||||
|
factor_type:
|
||||||
|
- 1 stat
|
||||||
|
- 2 aptitude
|
||||||
|
- 5 race
|
||||||
|
- 4 skill
|
||||||
|
- 6 scenario
|
||||||
|
- 7 carnival bonus
|
||||||
|
- 10 surface gene (white, on jp)
|
||||||
|
- 8 distance gene (white)
|
||||||
|
- 11 style gene (white)
|
||||||
|
- 9 hidden (white, for things like many wins in west japan, summer sprint series, &c.)
|
||||||
|
- 3 unique
|
||||||
|
|
||||||
|
target_type:
|
||||||
|
- 1 speed; value 1 is amount, value 2 is 0
|
||||||
|
- 2 stam
|
||||||
|
- 3 power
|
||||||
|
- 4 guts
|
||||||
|
- 5 wit
|
||||||
|
- 6 skill points
|
||||||
|
- 7 random stat; value 1 is amount, value 2 is always 1?
|
||||||
|
- 11 turf; value 1 is number of levels (1 or 2), value 2 is 0
|
||||||
|
- 12 dirt
|
||||||
|
- 21 front
|
||||||
|
- 22 pace
|
||||||
|
- 23 late
|
||||||
|
- 24 end
|
||||||
|
- 31 sprint
|
||||||
|
- 32 mile
|
||||||
|
- 33 medium
|
||||||
|
- 34 long
|
||||||
|
- 41 skill; value 1 is skill id, value 2 is hint level (1-5)
|
||||||
|
- 51 carnival bonus; value 1 is skill id, value 2 is 1
|
||||||
|
- 61 speed cap; value 1 is presumably amount but the numbers are very small, 1-4; value 2 is 0
|
||||||
|
- 62 stam cap
|
||||||
|
- 63 power cap
|
||||||
|
- 64 guts cap
|
||||||
|
- 65 wit cap
|
||||||
|
|
||||||
|
grade is 2 for unique sparks and 1 otherwise.
|
||||||
|
|
||||||
|
every possible result has a row in succession_factor_effect.
|
||||||
|
effect_id distinguishes possibilities; factors with multiple effects (race and scenario sparks) have multiple rows with equal effect_id.
|
||||||
|
effect_group_id determines the pmf, but no tables have non-empty joins with the same column name, so the distribution values are mystery.
|
||||||
|
even searching for 51 and 52 (effect group ids for 1\* and 2\* race and scenario sparks) on consecutive lines gives nothing.
|
||||||
|
|
||||||
|
getting all interesting spark data, fully expanded with all effects:
|
||||||
|
```sql
|
||||||
|
WITH spark AS (
|
||||||
|
SELECT
|
||||||
|
n."index" AS "id",
|
||||||
|
n."text" AS "name",
|
||||||
|
d."text" AS "description"
|
||||||
|
FROM text_data n
|
||||||
|
LEFT JOIN text_data d ON n."index" = d."index" AND d."category" = 172
|
||||||
|
WHERE n.category = 147
|
||||||
|
)
|
||||||
|
SELECT
|
||||||
|
spark.name,
|
||||||
|
spark.description,
|
||||||
|
sf.factor_id,
|
||||||
|
sf.factor_group_id,
|
||||||
|
sf.factor_type,
|
||||||
|
sf.effect_group_id,
|
||||||
|
sfe.effect_id,
|
||||||
|
sfe.target_type,
|
||||||
|
sfe.value_1,
|
||||||
|
sfe.value_2
|
||||||
|
FROM spark
|
||||||
|
JOIN succession_factor sf ON spark.id = sf.factor_id
|
||||||
|
JOIN succession_factor_effect sfe ON sf.factor_group_id = sfe.factor_group_id
|
||||||
|
ORDER BY sf.factor_id, sfe.effect_id, sfe.target_type
|
||||||
|
```
|
||||||
|
|
||||||
|
(change joins to left to include sparks that aren't implemented yet, mostly uniques)
|
||||||
|
|
||||||
|
getting all skills' levels that each spark can give:
|
||||||
|
```sql
|
||||||
|
WITH spark AS (
|
||||||
|
SELECT
|
||||||
|
n."index" AS "id",
|
||||||
|
n."text" AS "name",
|
||||||
|
d."text" AS "description"
|
||||||
|
FROM text_data n
|
||||||
|
LEFT JOIN text_data d ON n."index" = d."index" AND d."category" = 172
|
||||||
|
WHERE n.category = 147
|
||||||
|
), spark_skills AS (
|
||||||
|
SELECT DISTINCT
|
||||||
|
factor_group_id,
|
||||||
|
value_1,
|
||||||
|
value_2
|
||||||
|
FROM succession_factor_effect
|
||||||
|
WHERE target_type = 41
|
||||||
|
)
|
||||||
|
SELECT
|
||||||
|
spark.name,
|
||||||
|
spark.description,
|
||||||
|
sf.factor_id,
|
||||||
|
sf.factor_group_id,
|
||||||
|
sf.factor_type,
|
||||||
|
sf.effect_group_id,
|
||||||
|
ss.value_1 AS skill,
|
||||||
|
JSON_GROUP_ARRAY(ss.value_2) AS levels
|
||||||
|
FROM spark
|
||||||
|
JOIN succession_factor sf ON spark.id = sf.factor_id
|
||||||
|
JOIN spark_skills ss ON sf.factor_group_id = ss.factor_group_id
|
||||||
|
GROUP BY sf.factor_id
|
||||||
|
ORDER BY sf.factor_id
|
||||||
|
```
|
||||||
|
although realistically you can just use effect_group_id to determine both probabilities and support.
|
||||||
|
race sparks with skills always give +1, skill sparks always give +1-5, unique sparks always give +1-3.
|
||||||
|
|
||||||
|
# support cards
|
||||||
|
|
||||||
|
- hints are defined in single_mode_hint_gain, grouped by hint_group
|
||||||
|
- hint_gain_type is 0 for skill, 1 for stat or skill points
|
||||||
|
- hint_value_1 is skill id or stat target 1 = speed 2 = stam ... 5 = guts; 30 = skill points
|
||||||
|
- hint_value_2 appears to be base skill hint level (1 always) or stat amount (6, 2, 1 for guts speed/pow, 5 for wit skill points)
|
||||||
|
|
||||||
|
# skills
|
||||||
|
|
||||||
|
- single_mode_skill_need_point is base number of skill points to buy each skill
|
||||||
|
- support card skill hints are defined in single_mode_hint_gain
|
||||||
|
- skill_set includes trainee unique starting skills, among many other things
|
||||||
|
- available_skill_set has trainee starting skills other than their uniques
|
||||||
|
|
||||||
|
skill categories:
|
||||||
|
- 0 passive
|
||||||
|
- 1 early race
|
||||||
|
- 2 mid-race
|
||||||
|
- 3 late race or last spurt
|
||||||
|
- 4 anytime
|
||||||
|
- 5 unique
|
||||||
|
|
||||||
|
unique_skill_id_1 is for inherited uniques, points to non-inherited version.
|
||||||
|
unique_skill_id_2 is same but points to 1\*/2\* version.
|
||||||
|
|
||||||
|
exp_type appears to be whether the skill gains levels, i.e. own unique.
|
||||||
|
|
||||||
|
ability time and cooldown time are given in tenths of milliseconds, i.e. divide by 10000 to get seconds.
|
||||||
|
|
||||||
|
ability types:
|
||||||
|
- 1 speed bonus => ability_value / 10000 is flat gain
|
||||||
|
- 2 stamina bonus
|
||||||
|
- 3 power bonus
|
||||||
|
- 4 guts bonus
|
||||||
|
- 5 wit bonus
|
||||||
|
- 6 runaway => ability_value = 0
|
||||||
|
- 8 vision => ability_value / 10000 is amount (what are the units? what does vision do??)
|
||||||
|
- 9 heal or stam debuff => ability_value / 10000 is hp modify
|
||||||
|
- 10 starting gate delay (focus, concentration, gatekept) => ability_value / 10000 is multiplier
|
||||||
|
- 13 frenzy => ability_value / 10000 is rush time modifier (add?)
|
||||||
|
- 21 current speed => ability_value / 10000 is multiplier modifier
|
||||||
|
- 27 target speed => ''
|
||||||
|
- 28 lane change speed => ''
|
||||||
|
- 31 accel => ''
|
||||||
|
- 35 force lane change? it's only on dodging danger/sixth sense with a value of 5000 on both, gametora says "change lane (50% of the track)"
|
||||||
|
|
||||||
|
target types:
|
||||||
|
- 0 none (second and third abilities on skills that only have one)
|
||||||
|
- 1 self
|
||||||
|
- 2 others who have sympathy? only on autumn neo universe's rare green skill which triggers everyone's sympathy, and there's no target value
|
||||||
|
- 4 others in view
|
||||||
|
- 7 frontmost? only on daiichi ruby's unique, has a target value of 5 but the description says 先頭から4人まで
|
||||||
|
- 9 others ahead, target_value is number of targets (18 for all)
|
||||||
|
- 10 others behind, target_value is number of targets
|
||||||
|
- 11 all teammates
|
||||||
|
- 18 others in style, target_value is style (1=front, 2=pace, 3=late, 4=end)
|
||||||
|
- 19 rushing others ahead
|
||||||
|
- 20 rushing others behind
|
||||||
|
- 21 rushing others in style, target_value is style
|
||||||
|
- 22 specific character, target value is character id
|
||||||
|
- 23 other who triggered the skill
|
||||||
|
|
||||||
|
ability_value_usage can be 1 for plain or 2-6 for aoharu stat skill stat scaling
|
||||||
|
|
||||||
|
seems to be activate_lot = 1 means wit check, 0 means guaranteed
|
||||||
|
|
||||||
|
tag_id is a slash-separated list of numeric IDs that roughly describe all effects relevant to the skill.
|
||||||
|
- 101..104 style front, pace, late, end
|
||||||
|
- 201..204 distance sprint, mile, medium, long
|
||||||
|
- 301..303 timing early, mid, late race
|
||||||
|
- 401 affects speed stat or target speed
|
||||||
|
- 402 affects stamina stat or hp
|
||||||
|
- 403 affects power stat or acceleration
|
||||||
|
- 404 affects guts stat
|
||||||
|
- 405 affects wit stat or vision
|
||||||
|
- 406 is a debuff of any type, or is a main story self-debuff (creeping anxiety, blatant fear), or is Behold Thine Emperor's Divine Might (both own unique and inherited versions are tagged only 406??)
|
||||||
|
- 407 modifies gate delay
|
||||||
|
- 501..502 turf/dirt
|
||||||
|
- 801..812 scenario skill
|
||||||
|
|
||||||
|
600 series applies to skills available in global but are only used in jp.
|
||||||
|
- 601 ground condition passive
|
||||||
|
- 602 weather passive
|
||||||
|
- 603 season passive
|
||||||
|
- 604 race track passive
|
||||||
|
- 605 time of day passive
|
||||||
|
- 606 exchange race passive (kawasaki, funabashi, morioka, ooi)
|
||||||
|
- 607 distance passive (non/standard)
|
||||||
|
- 608 track direction or corner count passive
|
||||||
|
- 609 gate position passive
|
||||||
|
- 610 ground type passive
|
||||||
|
- 611 popularity passive
|
||||||
|
- 612 running style passive
|
||||||
|
- 613 passive depending on other horses' styles or skills
|
||||||
|
- 614 base stat threshold passive
|
||||||
|
- 615 mood passive
|
||||||
|
|
||||||
|
unrelated, query to get all condition types:
|
||||||
|
```sql
|
||||||
|
WITH RECURSIVE condition AS (
|
||||||
|
SELECT DISTINCT precondition_1 AS c FROM skill_data
|
||||||
|
UNION
|
||||||
|
SELECT DISTINCT condition_1 AS c FROM skill_data
|
||||||
|
UNION
|
||||||
|
SELECT DISTINCT precondition_2 AS c FROM skill_data
|
||||||
|
UNION
|
||||||
|
SELECT DISTINCT condition_2 AS c FROM skill_data
|
||||||
|
), disj AS (
|
||||||
|
SELECT
|
||||||
|
IIF(INSTR(c, '@') != 0, SUBSTR(c, 1, INSTR(c, '@')-1), c) AS c,
|
||||||
|
IIF(INSTR(c, '@') != 0, SUBSTR(c, 1 + INSTR(c, '@')), '') AS rest
|
||||||
|
FROM condition
|
||||||
|
UNION
|
||||||
|
SELECT
|
||||||
|
IIF(INSTR(rest, '@') != 0, SUBSTR(rest, 1, INSTR(rest, '@')-1), rest) AS c,
|
||||||
|
IIF(INSTR(rest, '@') != 0, SUBSTR(rest, 1 + INSTR(rest, '@')), '') AS rest
|
||||||
|
FROM disj
|
||||||
|
WHERE rest != ''
|
||||||
|
), term AS (
|
||||||
|
SELECT
|
||||||
|
IIF(INSTR(c, '&') != 0, SUBSTR(c, 1, INSTR(c, '&')-1), c) AS term,
|
||||||
|
IIF(INSTR(c, '&') != 0, SUBSTR(c, 1 + INSTR(c, '&')), '') AS rest
|
||||||
|
FROM disj
|
||||||
|
UNION
|
||||||
|
SELECT
|
||||||
|
IIF(INSTR(rest, '&') != 0, SUBSTR(rest, 1, INSTR(rest, '&')-1), rest) AS term,
|
||||||
|
IIF(INSTR(rest, '&') != 0, SUBSTR(rest, 1 + INSTR(rest, '&')), '') AS rest
|
||||||
|
FROM term
|
||||||
|
WHERE rest != ''
|
||||||
|
), op AS (
|
||||||
|
SELECT
|
||||||
|
term,
|
||||||
|
CASE
|
||||||
|
WHEN INSTR(term, '==') != 0 THEN '=='
|
||||||
|
WHEN INSTR(term, '!=') != 0 THEN '!='
|
||||||
|
WHEN INSTR(term, '<=') != 0 THEN '<='
|
||||||
|
WHEN INSTR(term, '>=') != 0 THEN '>='
|
||||||
|
WHEN INSTR(term, '<') != 0 THEN '<'
|
||||||
|
WHEN INSTR(term, '>') != 0 THEN '>'
|
||||||
|
END AS op
|
||||||
|
FROM term WHERE term != ''
|
||||||
|
), type_op_arg AS (
|
||||||
|
SELECT DISTINCT
|
||||||
|
term,
|
||||||
|
SUBSTR(term, 1, INSTR(term, op) - 1) AS "type",
|
||||||
|
op,
|
||||||
|
CAST(SUBSTR(term, INSTR(term, op) + LENGTH(op)) AS INTEGER) AS arg
|
||||||
|
FROM op
|
||||||
|
)
|
||||||
|
SELECT DISTINCT CONCAT(type, op), arg FROM type_op_arg
|
||||||
|
```
|
||||||
|
|
||||||
|
final select can be adjusted to get different info, but type+op together seems most useful
|
||||||
|
|
||||||
|
# races
|
||||||
|
|
||||||
|
- group 1, grade: g1 100, g2 200, g3 300, op 400, pre-op 700
|
||||||
|
- group 61 is ....?? don't match anything
|
||||||
|
- several races are defined twice for "weird" races that appear in certain careers (maruzensky's 5 opponent spring stakes, mcqueen/ryan/rice's kyoto takarazuka kinen, &c.); these **do not** count as the same race as the normal versions for shared saddle bonus
|
||||||
|
|
||||||
|
single_mode_wins_saddle defines titles (classic triple crown, tenno sweep, &c.) using win_saddle_type = 0
|
||||||
|
|
||||||
|
race_instance is a combination of race, npc group, race date (month*100 + day), and time of day.
|
||||||
|
it isn't actually anything i care about.
|
||||||
|
|
||||||
|
which is to say, what i do care about is mapping races to each turn they're offered, and having a "race instance" enum like Hopeful-Stakes-Junior, Yasuda-Kinen-Classic, &c.
|
||||||
|
|
||||||
|
single_mode_program defines the race instances available for each turn, but the year is expressed a bit weirdly in the race_permission column:
|
||||||
|
- 1 = junior year
|
||||||
|
- 2 = classic year
|
||||||
|
- 3 = classic and senior year
|
||||||
|
- 4 = senior year
|
||||||
|
- 5 = ura finale
|
||||||
|
|
||||||
|
grade_rate_id appears to be consistently 800 iff maiden race and 900 iff debut race, but the values particularly for g1s are all over the place.
|
||||||
|
recommend_class_id appears to be consistently 1 iff maiden race or debut race, 2 iff pre-op, 3 iff op; but other values are confusing.
|
||||||
|
so, it doesn't seem like there's a particular flag that identifies maiden races, despite the restrictions on when they appear in the ui.
|
||||||
|
|
||||||
|
race_course_set defines the racecourse, e.g. hanshin 1600 turf, that a given race occurs on.
|
||||||
|
notably, stat thresholds are defined here via join to race_course_set_status, rather than in course event data.
|
||||||
|
|
||||||
|
# trainee definitions
|
||||||
|
|
||||||
|
- card_data has universal trainee stats: base skill set, stat growth bonuses ("talent"), default running style
|
||||||
|
- card_rarity_data has per-star-level stats: initial numbers, stat caps (!!), aptitudes (!!)
|
||||||
|
- card_talent_upgrade has costs to increase potential level, but it doesn't seem to have skill sets
|
||||||
|
- card_talent_hint_upgrade has costs to raise hint levels, but it's actually universal, only six rows
|
||||||
|
- single_mode_route_race is career goals (not only races)
|
||||||
|
- available_skill_set has starting skills including those unlocked by potential level given under need_rank (0 for pl1, 2 for pl2)
|
||||||
|
- single_mode_special_chara is scenario links
|
||||||
|
|
||||||
|
# gl
|
||||||
|
|
||||||
|
single_mode_live_song_list has the song list for lives ha ha.
|
||||||
|
this is defined from the perspective of bonuses they grant when you have them, not the shop per se.
|
||||||
|
- text_data category for song names is 210, look up by live_id; for post-concert effect text, category 208 indexed by song list id
|
||||||
|
- command_id and live_id are always equal
|
||||||
|
- level is 1 for all songs except the two instances of girls' legend u
|
||||||
|
- master_bonus_content_text_id corresponds to text_data categories 207 for pickup effect text and 209 for song name
|
||||||
|
- live_bonus_type is 1 for specialty prio, 2 for chain frequency, 3 for fb
|
||||||
|
- girls' legend u is defined twice as ids 22 and 24
|
||||||
|
|
||||||
|
costs are in single_mode_live_square.
|
||||||
|
- square_type is 1 for stat up, 2 for skill up, 3 for energy up, 4 for live
|
||||||
|
- perf_type_n is token type: 1 for dance, 2 for passion, 3 for vocals, 4 for visuals, 5 for composure
|
||||||
|
- perf_value_n is number of tokens
|
||||||
|
|
||||||
|
immediate bonuses are in single_mode_live_master_bonus.
|
||||||
|
- master_bonus_type is 1 for stat up, 2 for skill hint, 3 for energy up, 4 for song
|
||||||
|
- master_bonus_type_value is 1 for type 1, live id for type 4, 0 otherwise
|
||||||
|
- master_bonus_gain_type_n is 1 for stat, 2 for skill hint, 3 for energy, 5 for permanent training bonus
|
||||||
|
+ 1 for stat: then master_bonus_gain_value_n_1 is 1-5 for stat id or 6 for sp, n_2 is 1 for fixed or 2 for random (not actually in the game), n_3 is lower bound on gain, n_4 is 0 for fixed or upper bound for random
|
||||||
|
+ 2 for skill hint: then gain_value_n_1 is 3(*), n_2 is skill tag, n_3 is hint level
|
||||||
|
+ 3 for energy: then gain_value_n_1 is amount
|
||||||
|
+ 5 for permanent training bonus: then gain_value_n_1 is stat id (6 for sp), n_2 is amount
|
||||||
|
(*) MasterSingleModeLiveMasterBonus.SingleModeLiveMasterBonus.GainSkillHintTypeEnum defines values of Random = 1 and SkillId = 2, but they are unused in the db.
|
||||||
|
|
||||||
|
there is some ostensibly unused data.
|
||||||
|
- master bonus ids 12001-12206 grant random amounts of stats
|
||||||
|
- id 20000 corresponds to "Group Lesson" "Skill hint appropriate for aptitude"
|
||||||
|
|
||||||
|
# lobby conversations!!!
|
||||||
|
|
||||||
|
table is home_story_trigger.
|
||||||
|
|
||||||
|
pos_id values:
|
||||||
|
- 110 right side, toward the front
|
||||||
|
- 120 same, but two characters
|
||||||
|
- 130 same, but three characters
|
||||||
|
- 210 left side table
|
||||||
|
- 220
|
||||||
|
- 310 center back seat
|
||||||
|
- 410 center posters
|
||||||
|
- 420
|
||||||
|
- 430
|
||||||
|
- 510 left school map
|
||||||
|
- 520
|
||||||
|
- 530
|
||||||
|
|
||||||
|
num is how many characters are involved, but also can just check chara_id_{1,2,3} for nonzero.
|
||||||
|
|
||||||
|
unsure what condition_type is.
|
||||||
|
values of 2 and 3 always have two or three characters, and values of 4 (jp only) always have three, but 0 and 1 can have any number.
|
||||||
|
there's no requirement for stories like having a horse at all, much less an affinity level.
|
||||||
|
|
||||||
|
gallery_chara_id is the character whose conversation it is; chara_id_{1,2,3} are the characters involved.
|
||||||
|
gallery_chara_id is always one of the three, but it can be any one of the three.
|
||||||
|
disp_order then is the conversation number within their gallery.
|
||||||
|
|
||||||
|
getting all conversation data:
|
||||||
|
```sql
|
||||||
|
WITH chara_name AS (
|
||||||
|
SELECT "index" AS id, "text" AS name
|
||||||
|
FROM text_data
|
||||||
|
WHERE category = 6
|
||||||
|
), convo_loc_names AS (
|
||||||
|
SELECT 110 AS pos_id, 'right side front' AS name UNION ALL
|
||||||
|
SELECT 120 AS pos_id, 'right side front' AS name UNION ALL
|
||||||
|
SELECT 130 AS pos_id, 'right side front' AS name UNION ALL
|
||||||
|
SELECT 210 AS pos_id, 'left side table' AS name UNION ALL
|
||||||
|
SELECT 220 AS pos_id, 'left side table' AS name UNION ALL
|
||||||
|
SELECT 310 AS pos_id, 'center back seat' AS name UNION ALL
|
||||||
|
SELECT 410 AS pos_id, 'center posters' AS name UNION ALL
|
||||||
|
SELECT 420 AS pos_id, 'center posters' AS name UNION ALL
|
||||||
|
SELECT 430 AS pos_id, 'center posters' AS name UNION ALL
|
||||||
|
SELECT 510 AS pos_id, 'left side school map' AS name UNION ALL
|
||||||
|
SELECT 520 AS pos_id, 'left side school map' AS name UNION ALL
|
||||||
|
SELECT 530 AS pos_id, 'left side school map' AS name
|
||||||
|
)
|
||||||
|
SELECT
|
||||||
|
n.name,
|
||||||
|
s.disp_order,
|
||||||
|
l.name,
|
||||||
|
c1.name,
|
||||||
|
c2.name,
|
||||||
|
c3.name,
|
||||||
|
s.condition_type
|
||||||
|
FROM home_story_trigger s
|
||||||
|
LEFT JOIN chara_name n ON s.gallery_chara_id = n.id
|
||||||
|
LEFT JOIN chara_name c1 ON s.chara_id_1 = c1.id
|
||||||
|
LEFT JOIN chara_name c2 ON s.chara_id_2 = c2.id
|
||||||
|
LEFT JOIN chara_name c3 ON s.chara_id_3 = c3.id
|
||||||
|
LEFT JOIN convo_loc_names l ON s.pos_id = l.pos_id
|
||||||
|
ORDER BY s.gallery_chara_id, s.disp_order
|
||||||
|
```
|
||||||
|
|
||||||
|
# update diffs
|
||||||
|
|
||||||
|
complete list of tables with inserts in both the 2026-01-15 update adding fine motion, manhattan cafe ssr, inari one sr and the 2026-01-22 update adding tamamo cross and main story 5:
|
||||||
|
|
||||||
|
- announce_character
|
||||||
|
- announce_data
|
||||||
|
- available_skill_set
|
||||||
|
- background_data
|
||||||
|
- banner_data
|
||||||
|
- campaign_chara_story_schedule
|
||||||
|
- campaign_data
|
||||||
|
- campaign_single_race_add_data
|
||||||
|
- campaign_single_race_add_reward
|
||||||
|
- card_data
|
||||||
|
- card_rarity_data
|
||||||
|
- card_talent_upgrade
|
||||||
|
- champions_news_chara_comment
|
||||||
|
- chara_category_motion
|
||||||
|
- character_system_lottery
|
||||||
|
- character_system_text
|
||||||
|
- chara_motion_set
|
||||||
|
- chara_story_data
|
||||||
|
- dress_data
|
||||||
|
- gacha_available
|
||||||
|
- gacha_data
|
||||||
|
- gacha_exchange
|
||||||
|
- gacha_top_bg
|
||||||
|
- home_story_trigger
|
||||||
|
- home_walk_group
|
||||||
|
- honor_data
|
||||||
|
- item_exchange
|
||||||
|
- item_place
|
||||||
|
- jukebox_chara_tag_data
|
||||||
|
- jukebox_comment
|
||||||
|
- jukebox_reaction_data
|
||||||
|
- mission_data
|
||||||
|
- nickname
|
||||||
|
- piece_data
|
||||||
|
- race
|
||||||
|
- race_bgm_cutin_extension_time
|
||||||
|
- race_instance
|
||||||
|
- race_jikkyo_base
|
||||||
|
- race_jikkyo_race
|
||||||
|
- race_jikkyo_trigger
|
||||||
|
- single_mode_chara_program
|
||||||
|
- single_mode_conclusion_set
|
||||||
|
- single_mode_event_production
|
||||||
|
- single_mode_hint_gain
|
||||||
|
- single_mode_npc
|
||||||
|
- single_mode_rival
|
||||||
|
- single_mode_route
|
||||||
|
- single_mode_route_race
|
||||||
|
- single_mode_scout_chara
|
||||||
|
- single_mode_skill_need_point
|
||||||
|
- single_mode_story_data
|
||||||
|
- single_mode_tag_card_pos
|
||||||
|
- skill_data
|
||||||
|
- skill_set
|
||||||
|
- succession_factor
|
||||||
|
- succession_factor_effect
|
||||||
|
- succession_relation_member
|
||||||
|
- support_card_data
|
||||||
|
- support_card_effect_table
|
||||||
|
- support_card_unique_effect
|
||||||
|
- text_data
|
||||||
@@ -0,0 +1,38 @@
|
|||||||
|
// Code generated by "stringer -type DurScale -trimprefix Duration -linecomment"; DO NOT EDIT.
|
||||||
|
|
||||||
|
package horse
|
||||||
|
|
||||||
|
import "strconv"
|
||||||
|
|
||||||
|
func _() {
|
||||||
|
// An "invalid array index" compiler error signifies that the constant values have changed.
|
||||||
|
// Re-run the stringer command to generate them again.
|
||||||
|
var x [1]struct{}
|
||||||
|
_ = x[DurationDirect-1]
|
||||||
|
_ = x[DurationFrontDistance-2]
|
||||||
|
_ = x[DurationRemainingHP-3]
|
||||||
|
_ = x[DurationIncrementPass-4]
|
||||||
|
_ = x[DurationMidSideBlock-5]
|
||||||
|
_ = x[DurationRemainingHP2-7]
|
||||||
|
}
|
||||||
|
|
||||||
|
const (
|
||||||
|
_DurScale_name_0 = "directlyscaling with distance from the frontscaling with remaining HPincreasing with each pass while activescaling with mid-race phase blocked side time"
|
||||||
|
_DurScale_name_1 = "scaling with remaining HP"
|
||||||
|
)
|
||||||
|
|
||||||
|
var (
|
||||||
|
_DurScale_index_0 = [...]uint8{0, 8, 44, 69, 107, 152}
|
||||||
|
)
|
||||||
|
|
||||||
|
func (i DurScale) String() string {
|
||||||
|
switch {
|
||||||
|
case 1 <= i && i <= 5:
|
||||||
|
i -= 1
|
||||||
|
return _DurScale_name_0[_DurScale_index_0[i]:_DurScale_index_0[i+1]]
|
||||||
|
case i == 7:
|
||||||
|
return _DurScale_name_1
|
||||||
|
default:
|
||||||
|
return "DurScale(" + strconv.FormatInt(int64(i), 10) + ")"
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,40 @@
|
|||||||
|
module git.sunturtle.xyz/zephyr/horse
|
||||||
|
|
||||||
|
go 1.25.5
|
||||||
|
|
||||||
|
require (
|
||||||
|
github.com/disgoorg/disgo v0.19.6
|
||||||
|
github.com/gen2brain/avif v0.6.0
|
||||||
|
github.com/go-chi/chi/v5 v5.3.1
|
||||||
|
github.com/google/go-cmp v0.7.0
|
||||||
|
github.com/junegunn/fzf v0.74.1
|
||||||
|
golang.org/x/image v0.44.0
|
||||||
|
golang.org/x/sync v0.22.0
|
||||||
|
zombiezen.com/go/sqlite v1.4.2
|
||||||
|
)
|
||||||
|
|
||||||
|
require (
|
||||||
|
github.com/disgoorg/godave v0.3.0 // indirect
|
||||||
|
github.com/disgoorg/json/v2 v2.0.0 // indirect
|
||||||
|
github.com/disgoorg/omit v1.0.0 // indirect
|
||||||
|
github.com/disgoorg/snowflake/v2 v2.0.3 // indirect
|
||||||
|
github.com/dustin/go-humanize v1.0.1 // indirect
|
||||||
|
github.com/ebitengine/purego v0.10.2 // indirect
|
||||||
|
github.com/google/uuid v1.6.0 // indirect
|
||||||
|
github.com/gorilla/websocket v1.5.3 // indirect
|
||||||
|
github.com/junegunn/go-shellwords v0.0.0-20250127100254-2aa3b3277741 // indirect
|
||||||
|
github.com/klauspost/compress v1.19.1 // indirect
|
||||||
|
github.com/mattn/go-isatty v0.0.24 // indirect
|
||||||
|
github.com/ncruces/go-strftime v1.0.0 // indirect
|
||||||
|
github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec // indirect
|
||||||
|
github.com/rivo/uniseg v0.4.7 // indirect
|
||||||
|
github.com/sasha-s/go-csync v0.0.0-20240107134140-fcbab37b09ad // indirect
|
||||||
|
github.com/tetratelabs/wazero v1.12.0 // indirect
|
||||||
|
golang.org/x/crypto v0.54.0 // indirect
|
||||||
|
golang.org/x/sys v0.47.0 // indirect
|
||||||
|
golang.org/x/tools v0.48.0 // indirect
|
||||||
|
modernc.org/libc v1.74.3 // indirect
|
||||||
|
modernc.org/mathutil v1.7.1 // indirect
|
||||||
|
modernc.org/memory v1.11.0 // indirect
|
||||||
|
modernc.org/sqlite v1.54.0 // indirect
|
||||||
|
)
|
||||||
@@ -0,0 +1,96 @@
|
|||||||
|
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
|
||||||
|
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||||
|
github.com/disgoorg/disgo v0.19.6 h1:1xJQt6KZgiqvBOnjuziG1gE4Iqd0aJn8DNfE6eE+0qw=
|
||||||
|
github.com/disgoorg/disgo v0.19.6/go.mod h1:NnV63iw4lJdF1fnV0gX27XR43ZgRGqnL122svRMTgTE=
|
||||||
|
github.com/disgoorg/godave v0.3.0 h1:37F3ZuiMd8/EXeoCtTeE8iP2eT2nWsfEa4/ITwoKfe4=
|
||||||
|
github.com/disgoorg/godave v0.3.0/go.mod h1:OreAC3hpabr39bMVA+jwOVDq1EUPXH5A0XUBiZaDI1Y=
|
||||||
|
github.com/disgoorg/json/v2 v2.0.0 h1:U16yy/ARK7/aEpzjjqK1b/KaqqGHozUdeVw/DViEzQI=
|
||||||
|
github.com/disgoorg/json/v2 v2.0.0/go.mod h1:jZTBC0nIE1WeetSEI3/Dka8g+qglb4FPVmp5I5HpEfI=
|
||||||
|
github.com/disgoorg/omit v1.0.0 h1:y0LkVUOyUHT8ZlnhIAeOZEA22UYykeysK8bLJ0SfT78=
|
||||||
|
github.com/disgoorg/omit v1.0.0/go.mod h1:RTmSARkf6PWT/UckwI0bV8XgWkWQoPppaT01rYKLcFQ=
|
||||||
|
github.com/disgoorg/snowflake/v2 v2.0.3 h1:3B+PpFjr7j4ad7oeJu4RlQ+nYOTadsKapJIzgvSI2Ro=
|
||||||
|
github.com/disgoorg/snowflake/v2 v2.0.3/go.mod h1:W6r7NUA7DwfZLwr00km6G4UnZ0zcoLBRufhkFWgAc4c=
|
||||||
|
github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY=
|
||||||
|
github.com/dustin/go-humanize v1.0.1/go.mod h1:Mu1zIs6XwVuF/gI1OepvI0qD18qycQx+mFykh5fBlto=
|
||||||
|
github.com/ebitengine/purego v0.10.2 h1:W809HbnvzAxgdm+aOvlSekrM16wGCdT/e76+9tS7gzE=
|
||||||
|
github.com/ebitengine/purego v0.10.2/go.mod h1:iIjxzd6CiRiOG0UyXP+V1+jWqUXVjPKLAI0mRfJZTmQ=
|
||||||
|
github.com/gen2brain/avif v0.6.0 h1:/8WSgcU+IEF0jhKYsUZ/mzlziFuTeJFpIKBj2siTQps=
|
||||||
|
github.com/gen2brain/avif v0.6.0/go.mod h1:QgrYqdVE9y40PCfArK9VakcMIpYeDYpZmCSLkW6C1n8=
|
||||||
|
github.com/go-chi/chi/v5 v5.3.1 h1:3j4HZLGZQ3JpMCrPJF/Jl3mYJfWLKBfNJ6quurUGCf8=
|
||||||
|
github.com/go-chi/chi/v5 v5.3.1/go.mod h1:R+tYY2hNuVUUjxoPtqUdgBqevM9s9njzkTLutVsOCto=
|
||||||
|
github.com/google/go-cmp v0.7.0 h1:wk8382ETsv4JYUZwIsn6YpYiWiBsYLSJiTsyBybVuN8=
|
||||||
|
github.com/google/go-cmp v0.7.0/go.mod h1:pXiqmnSA92OHEEa9HXL2W4E7lf9JzCmGVUdgjX3N/iU=
|
||||||
|
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
|
||||||
|
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
||||||
|
github.com/gorilla/websocket v1.5.3 h1:saDtZ6Pbx/0u+bgYQ3q96pZgCzfhKXGPqt7kZ72aNNg=
|
||||||
|
github.com/gorilla/websocket v1.5.3/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
|
||||||
|
github.com/hashicorp/golang-lru/v2 v2.0.7 h1:a+bsQ5rvGLjzHuww6tVxozPZFVghXaHOwFs4luLUK2k=
|
||||||
|
github.com/hashicorp/golang-lru/v2 v2.0.7/go.mod h1:QeFd9opnmA6QUJc5vARoKUSoFhyfM2/ZepoAG6RGpeM=
|
||||||
|
github.com/junegunn/fzf v0.74.1 h1:rCGVdCSoOkfcfTxtxCO/vG2yceDjRlKSlv7IfCGkc/Y=
|
||||||
|
github.com/junegunn/fzf v0.74.1/go.mod h1:hKDkO8orBWT5VLIZOL8oyhxn7mRLXdGyu+gz1Ss58pU=
|
||||||
|
github.com/junegunn/go-shellwords v0.0.0-20250127100254-2aa3b3277741 h1:7dYDtfMDfKzjT+DVfIS4iqknSEKtZpEcXtu6vuaasHs=
|
||||||
|
github.com/junegunn/go-shellwords v0.0.0-20250127100254-2aa3b3277741/go.mod h1:6EILKtGpo5t+KLb85LNZLAF6P9LKp78hJI80PXMcn3c=
|
||||||
|
github.com/klauspost/compress v1.19.1 h1:VsB4HPswih7mmZ8WleSFQ75c/Ui1M4trX5oAsJnhSlk=
|
||||||
|
github.com/klauspost/compress v1.19.1/go.mod h1:cwPg85FWrGar70rWktvGQj8/hthj3wpl0PGDogxkrSQ=
|
||||||
|
github.com/mattn/go-isatty v0.0.24 h1:tGZZoVgT/KiqK1c8ocVLeDS8BSWMRd47J3Lbz7vsReI=
|
||||||
|
github.com/mattn/go-isatty v0.0.24/go.mod h1:nMCL3Zebbrt45jsMDgnfIwz6ydEQApk5oEI3HqDio6A=
|
||||||
|
github.com/ncruces/go-strftime v1.0.0 h1:HMFp8mLCTPp341M/ZnA4qaf7ZlsbTc+miZjCLOFAw7w=
|
||||||
|
github.com/ncruces/go-strftime v1.0.0/go.mod h1:Fwc5htZGVVkseilnfgOVb9mKy6w1naJmn9CehxcKcls=
|
||||||
|
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
|
||||||
|
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
|
||||||
|
github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec h1:W09IVJc94icq4NjY3clb7Lk8O1qJ8BdBEF8z0ibU0rE=
|
||||||
|
github.com/remyoudompheng/bigfft v0.0.0-20230129092748-24d4a6f8daec/go.mod h1:qqbHyh8v60DhA7CoWK5oRCqLrMHRGoxYCSS9EjAz6Eo=
|
||||||
|
github.com/rivo/uniseg v0.4.7 h1:WUdvkW8uEhrYfLC4ZzdpI2ztxP1I582+49Oc5Mq64VQ=
|
||||||
|
github.com/rivo/uniseg v0.4.7/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88=
|
||||||
|
github.com/sasha-s/go-csync v0.0.0-20240107134140-fcbab37b09ad h1:qIQkSlF5vAUHxEmTbaqt1hkJ/t6skqEGYiMag343ucI=
|
||||||
|
github.com/sasha-s/go-csync v0.0.0-20240107134140-fcbab37b09ad/go.mod h1:/pA7k3zsXKdjjAiUhB5CjuKib9KJGCaLvZwtxGC8U0s=
|
||||||
|
github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA=
|
||||||
|
github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
|
||||||
|
github.com/tetratelabs/wazero v1.12.0 h1:DuWcpNu/FzgEXgGBDp8J1Spc+CWOvvtvVyjKlaZopYU=
|
||||||
|
github.com/tetratelabs/wazero v1.12.0/go.mod h1:LvKtzl2RqO4gyF27BiXU+nKAjcV8f38U+kP/q2vgxh0=
|
||||||
|
golang.org/x/crypto v0.54.0 h1:YLIA59K4fiNzHzjnZt2tUJQjQtUWfWbeHBqKtk3eScw=
|
||||||
|
golang.org/x/crypto v0.54.0/go.mod h1:KWL8ny2AZdGR2cWmzeHrp2azQPGogOv+HeQaVEXC2dk=
|
||||||
|
golang.org/x/image v0.44.0 h1:+tDekMZED9+LrtB3G5xzRggpVh9CARjZqROla3R3R+I=
|
||||||
|
golang.org/x/image v0.44.0/go.mod h1:V8K3KE9KKKE+pLpQDOeN18w9oacNSvy1tDOirTu4xtY=
|
||||||
|
golang.org/x/mod v0.38.0 h1:MECBjubtXD7yj4HrhIUcywNaGeNVUdfVnxmPajOk4yk=
|
||||||
|
golang.org/x/mod v0.38.0/go.mod h1:V6Xz0pq8TQ3dGqVQ1FVHuelZpAL0uNhSkk9ogYP3c40=
|
||||||
|
golang.org/x/sync v0.22.0 h1:SZjpbeLmrCk4xhRSZFNZW5gFUeCeFgjekvI/+gfScek=
|
||||||
|
golang.org/x/sync v0.22.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0=
|
||||||
|
golang.org/x/sys v0.47.0 h1:o7XGOvZQCADBQQ4Y7VNq2dRWQR7JmOUW8Kxx4ZsNgWs=
|
||||||
|
golang.org/x/sys v0.47.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw=
|
||||||
|
golang.org/x/text v0.40.0 h1:Ub2Z6/xjgF1WrYQz2nuITOEegKFtiIy+rieRJ5lHZKs=
|
||||||
|
golang.org/x/text v0.40.0/go.mod h1:hpnzDAfGV753zIKo+wk3u1bVKCGPbrnF7+7LBF/UHVY=
|
||||||
|
golang.org/x/tools v0.48.0 h1:3+hClM1aLL5mjMKm5ovokw9epgRXPuu2tILgismM6RE=
|
||||||
|
golang.org/x/tools v0.48.0/go.mod h1:08xX0orndb/F7jJxGDicx061tyd5pcMto75YMAXr6lk=
|
||||||
|
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
|
||||||
|
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
||||||
|
modernc.org/cc/v4 v4.29.1 h1:MKgdCV3WykTSPqpVrnxdEDS0HEd2FHpKZDzxzU5LyeI=
|
||||||
|
modernc.org/cc/v4 v4.29.1/go.mod h1:OnovgIhbbMXMu1aISnJ0wvVD1KnW+cAUJkIrAWh+kVI=
|
||||||
|
modernc.org/ccgo/v4 v4.34.6 h1:sBgfIwyN0TQ9C5hwIeuqyeAKyMWnbvj2fvpF4L11uzU=
|
||||||
|
modernc.org/ccgo/v4 v4.34.6/go.mod h1:SZ8YcN9NG7XVsQYdm6jYBvi8PQP1qi+kqB6OhjqI3Fk=
|
||||||
|
modernc.org/fileutil v1.4.0 h1:j6ZzNTftVS054gi281TyLjHPp6CPHr2KCxEXjEbD6SM=
|
||||||
|
modernc.org/fileutil v1.4.0/go.mod h1:EqdKFDxiByqxLk8ozOxObDSfcVOv/54xDs/DUHdvCUU=
|
||||||
|
modernc.org/gc/v2 v2.6.5 h1:nyqdV8q46KvTpZlsw66kWqwXRHdjIlJOhG6kxiV/9xI=
|
||||||
|
modernc.org/gc/v2 v2.6.5/go.mod h1:YgIahr1ypgfe7chRuJi2gD7DBQiKSLMPgBQe9oIiito=
|
||||||
|
modernc.org/gc/v3 v3.1.4 h1:2g65LGVSmFQrXeITAw97x7hCRvZFcyE1uDP+7Vng7JI=
|
||||||
|
modernc.org/gc/v3 v3.1.4/go.mod h1:HFK/6AGESC7Ex+EZJhJ2Gni6cTaYpSMmU/cT9RmlfYY=
|
||||||
|
modernc.org/goabi0 v0.2.0 h1:HvEowk7LxcPd0eq6mVOAEMai46V+i7Jrj13t4AzuNks=
|
||||||
|
modernc.org/goabi0 v0.2.0/go.mod h1:CEFRnnJhKvWT1c1JTI3Avm+tgOWbkOu5oPA8eH8LnMI=
|
||||||
|
modernc.org/libc v1.74.3 h1:a4J+Z8aVaxPyjyxRAdJzw246PqpcFGvVPnfT/AuM5Ws=
|
||||||
|
modernc.org/libc v1.74.3/go.mod h1:4H7h/MJ8wnjL8RAbp9v3OXgnk22X7MouHIhDbvP3gj4=
|
||||||
|
modernc.org/mathutil v1.7.1 h1:GCZVGXdaN8gTqB1Mf/usp1Y/hSqgI2vAGGP4jZMCxOU=
|
||||||
|
modernc.org/mathutil v1.7.1/go.mod h1:4p5IwJITfppl0G4sUEDtCr4DthTaT47/N3aT6MhfgJg=
|
||||||
|
modernc.org/memory v1.11.0 h1:o4QC8aMQzmcwCK3t3Ux/ZHmwFPzE6hf2Y5LbkRs+hbI=
|
||||||
|
modernc.org/memory v1.11.0/go.mod h1:/JP4VbVC+K5sU2wZi9bHoq2MAkCnrt2r98UGeSK7Mjw=
|
||||||
|
modernc.org/opt v0.2.0 h1:tGyef5ApycA7FSEOMraay9SaTk5zmbx7Tu+cJs4QKZg=
|
||||||
|
modernc.org/opt v0.2.0/go.mod h1:03fq9lsNfvkYSfxrfUhZCWPk1lm4cq4N+Bh//bEtgns=
|
||||||
|
modernc.org/sortutil v1.2.1 h1:+xyoGf15mM3NMlPDnFqrteY07klSFxLElE2PVuWIJ7w=
|
||||||
|
modernc.org/sortutil v1.2.1/go.mod h1:7ZI3a3REbai7gzCLcotuw9AC4VZVpYMjDzETGsSMqJE=
|
||||||
|
modernc.org/sqlite v1.54.0 h1:JCxR4qwkJvOaqAoYcgDoO25Nc+ROg6EJ2LfBVzdrgog=
|
||||||
|
modernc.org/sqlite v1.54.0/go.mod h1:4ntCLuNmnH8+GNqjka1wNg7KJd5/Hi5FYp8K+XQ7GZw=
|
||||||
|
modernc.org/strutil v1.2.1 h1:UneZBkQA+DX2Rp35KcM69cSsNES9ly8mQWD71HKlOA0=
|
||||||
|
modernc.org/strutil v1.2.1/go.mod h1:EHkiggD70koQxjVdSBM3JKM7k6L0FbGE5eymy9i3B9A=
|
||||||
|
modernc.org/token v1.1.0 h1:Xl7Ap9dKaEs5kLoOQeQmPWevfnk/DM5qcLcYlA8ys6Y=
|
||||||
|
modernc.org/token v1.1.0/go.mod h1:UGzOrNV1mAFSEB63lOFHIpNRUVMvYTc6yu1SMY/XTDM=
|
||||||
|
zombiezen.com/go/sqlite v1.4.2 h1:KZXLrBuJ7tKNEm+VJcApLMeQbhmAUOKA5VWS93DfFRo=
|
||||||
|
zombiezen.com/go/sqlite v1.4.2/go.mod h1:5Kd4taTAD4MkBzT25mQ9uaAlLjyR0rFhsR6iINO70jc=
|
||||||
-2366
File diff suppressed because it is too large
Load Diff
@@ -1,17 +0,0 @@
|
|||||||
module horse/legacy
|
|
||||||
|
|
||||||
import horse/character
|
|
||||||
import horse/race
|
|
||||||
import horse/spark
|
|
||||||
|
|
||||||
pub struct legacy
|
|
||||||
uma: veteran
|
|
||||||
parents: (veteran, veteran)
|
|
||||||
|
|
||||||
pub struct veteran
|
|
||||||
character: character
|
|
||||||
stat: spark<stat>
|
|
||||||
aptitude: spark<aptitude>
|
|
||||||
unique: maybe<spark<unique>>
|
|
||||||
generic: list<spark<generic>>
|
|
||||||
results: list<race-result>
|
|
||||||
-861
@@ -1,861 +0,0 @@
|
|||||||
module horse/race
|
|
||||||
|
|
||||||
import std/data/linearset
|
|
||||||
|
|
||||||
// Exhaustive enumeration of graded races that can be run in career.
|
|
||||||
// Races that can be run in multiple years are listed only once.
|
|
||||||
pub type career-race
|
|
||||||
February-Stakes
|
|
||||||
Takamatsunomiya-Kinen
|
|
||||||
Osaka-Hai
|
|
||||||
Oka-Sho
|
|
||||||
Satsuki-Sho
|
|
||||||
Tenno-Sho-Spring
|
|
||||||
NHK-Mile-Cup
|
|
||||||
Victoria-Mile
|
|
||||||
Japanese-Oaks
|
|
||||||
Japanese-Derby
|
|
||||||
Yasuda-Kinen
|
|
||||||
Takarazuka-Kinen
|
|
||||||
Sprinters-Stakes
|
|
||||||
Shuka-Sho
|
|
||||||
Kikuka-Sho
|
|
||||||
Tenno-Sho-Autumn
|
|
||||||
Queen-Elizabeth-II-Cup
|
|
||||||
Mile-Championship
|
|
||||||
Japan-Cup
|
|
||||||
Champions-Cup
|
|
||||||
Hanshin-Juvenile-Fillies
|
|
||||||
Asahi-Hai-Futurity-Stakes
|
|
||||||
Arima-Kinen
|
|
||||||
Hopeful-Stakes
|
|
||||||
Tokyo-Daishoten
|
|
||||||
JBC-Classic
|
|
||||||
JBC-Sprint
|
|
||||||
JBC-Ladies-Classic
|
|
||||||
Japan-Dirt-Derby
|
|
||||||
Teio-Sho
|
|
||||||
Nikkei-Shinshun-Hai
|
|
||||||
Tokai-Stakes
|
|
||||||
American-Jockey-Club-Cup
|
|
||||||
Kyoto-Kinen
|
|
||||||
Nakayama-Kinen
|
|
||||||
Tulip-Sho
|
|
||||||
Yayoi-Sho
|
|
||||||
Kinko-Sho
|
|
||||||
Fillies-Revue
|
|
||||||
Hanshin-Daishoten
|
|
||||||
Spring-Stakes
|
|
||||||
Nikkei-Sho
|
|
||||||
Hanshin-Umamusume-Stakes
|
|
||||||
New-Zealand-Trophy
|
|
||||||
Yomiuri-Milers-Cup
|
|
||||||
Flora-Stakes
|
|
||||||
Aoba-Sho
|
|
||||||
Kyoto-Shimbun-Hai
|
|
||||||
Keio-Hai-Spring-Cup
|
|
||||||
Meguro-Kinen
|
|
||||||
Sapporo-Kinen
|
|
||||||
Centaur-Stakes
|
|
||||||
Rose-Stakes
|
|
||||||
St-Lite-Kinen
|
|
||||||
Kobe-Shimbun-Hai
|
|
||||||
All-Comers
|
|
||||||
Mainichi-Okan
|
|
||||||
Kyoto-Daishoten
|
|
||||||
Fuchu-Umamusume-Stakes
|
|
||||||
Fuji-Stakes
|
|
||||||
Swan-Stakes
|
|
||||||
Keio-Hai-Junior-Stakes
|
|
||||||
Copa-Republica-Argentina
|
|
||||||
Daily-Hai-Junior-Stakes
|
|
||||||
Stayers-Stakes
|
|
||||||
Hanshin-Cup
|
|
||||||
Kyoto-Kimpai
|
|
||||||
Nakayama-Kimpai
|
|
||||||
Shinzan-Kinen
|
|
||||||
Fairy-Stakes
|
|
||||||
Aichi-Hai
|
|
||||||
Keisei-Hai
|
|
||||||
Silk-Road-Stakes
|
|
||||||
Negishi-Stakes
|
|
||||||
Kisaragi-Sho
|
|
||||||
Tokyo-Shimbun-Hai
|
|
||||||
Queen-Cup
|
|
||||||
Kyodo-News-Hai
|
|
||||||
Kyoto-Umamusume-Stakes
|
|
||||||
Diamond-Stakes
|
|
||||||
Kokura-Daishoten
|
|
||||||
Arlington-Cup
|
|
||||||
Hankyu-Hai
|
|
||||||
Ocean-Stakes
|
|
||||||
Nakayama-Umamusume-Stakes
|
|
||||||
Falcon-Stakes
|
|
||||||
Flower-Cup
|
|
||||||
Mainichi-Hai
|
|
||||||
March-Stakes
|
|
||||||
Lord-Derby-Challenge-Trophy
|
|
||||||
Antares-Stakes
|
|
||||||
Fukushima-Umamusume-Stakes
|
|
||||||
Niigata-Daishoten
|
|
||||||
Heian-Stakes
|
|
||||||
Aoi-Stakes
|
|
||||||
Naruo-Kinen
|
|
||||||
Mermaid-Stakes
|
|
||||||
Epsom-Cup
|
|
||||||
Unicorn-Stakes
|
|
||||||
Hakodate-Sprint-Stakes
|
|
||||||
CBC-Sho
|
|
||||||
Radio-Nikkei-Sho
|
|
||||||
Procyon-Stakes
|
|
||||||
Tanabata-Sho
|
|
||||||
Hakodate-Kinen
|
|
||||||
Chukyo-Kinen
|
|
||||||
Hakodate-Junior-Stakes
|
|
||||||
Ibis-Summer-Dash
|
|
||||||
Queen-Stakes
|
|
||||||
Kokura-Kinen
|
|
||||||
Leopard-Stakes
|
|
||||||
Sekiya-Kinen
|
|
||||||
Elm-Stakes
|
|
||||||
Kitakyushu-Kinen
|
|
||||||
Niigata-Junior-Stakes
|
|
||||||
Keeneland-Cup
|
|
||||||
Sapporo-Junior-Stakes
|
|
||||||
Kokura-Junior-Stakes
|
|
||||||
Niigata-Kinen
|
|
||||||
Shion-Stakes
|
|
||||||
Keisei-Hai-Autumn-Handicap
|
|
||||||
Sirius-Stakes
|
|
||||||
Saudi-Arabia-Royal-Cup
|
|
||||||
Artemis-Stakes
|
|
||||||
Fantasy-Stakes
|
|
||||||
Miyako-Stakes
|
|
||||||
Musashino-Stakes
|
|
||||||
Fukushima-Kinen
|
|
||||||
Tokyo-Sports-Hai-Junior-Stakes
|
|
||||||
Kyoto-Junior-Stakes
|
|
||||||
Keihan-Hai
|
|
||||||
Challenge-Cup
|
|
||||||
Chunichi-Shimbun-Hai
|
|
||||||
Capella-Stakes
|
|
||||||
Turquoise-Stakes
|
|
||||||
|
|
||||||
// Automatically generated.
|
|
||||||
// Shows a string representation of the `career-race` type.
|
|
||||||
pub fun career-race/show(this : career-race) : e string
|
|
||||||
match this
|
|
||||||
February-Stakes -> "February Stakes"
|
|
||||||
Takamatsunomiya-Kinen -> "Takamatsunomiya Kinen"
|
|
||||||
Osaka-Hai -> "Osaka Hai"
|
|
||||||
Oka-Sho -> "Oka Sho"
|
|
||||||
Satsuki-Sho -> "Satsuki Sho"
|
|
||||||
Tenno-Sho-Spring -> "Tenno Sho Spring"
|
|
||||||
NHK-Mile-Cup -> "NHK Mile Cup"
|
|
||||||
Victoria-Mile -> "Victoria Mile"
|
|
||||||
Japanese-Oaks -> "Japanese Oaks"
|
|
||||||
Japanese-Derby -> "Japanese Derby"
|
|
||||||
Yasuda-Kinen -> "Yasuda Kinen"
|
|
||||||
Takarazuka-Kinen -> "Takarazuka Kinen"
|
|
||||||
Sprinters-Stakes -> "Sprinters Stakes"
|
|
||||||
Shuka-Sho -> "Shuka Sho"
|
|
||||||
Kikuka-Sho -> "Kikuka Sho"
|
|
||||||
Tenno-Sho-Autumn -> "Tenno Sho Autumn"
|
|
||||||
Queen-Elizabeth-II-Cup -> "Queen Elizabeth II Cup"
|
|
||||||
Mile-Championship -> "Mile Championship"
|
|
||||||
Japan-Cup -> "Japan Cup"
|
|
||||||
Champions-Cup -> "Champions Cup"
|
|
||||||
Hanshin-Juvenile-Fillies -> "Hanshin Juvenile Fillies"
|
|
||||||
Asahi-Hai-Futurity-Stakes -> "Asahi Hai Futurity Stakes"
|
|
||||||
Arima-Kinen -> "Arima Kinen"
|
|
||||||
Hopeful-Stakes -> "Hopeful Stakes"
|
|
||||||
Tokyo-Daishoten -> "Tokyo Daishoten"
|
|
||||||
JBC-Classic -> "JBC Classic"
|
|
||||||
JBC-Sprint -> "JBC Sprint"
|
|
||||||
JBC-Ladies-Classic -> "JBC Ladies Classic"
|
|
||||||
Japan-Dirt-Derby -> "Japan Dirt Derby"
|
|
||||||
Teio-Sho -> "Teio Sho"
|
|
||||||
Nikkei-Shinshun-Hai -> "Nikkei Shinshun Hai"
|
|
||||||
Tokai-Stakes -> "Tokai Stakes"
|
|
||||||
American-Jockey-Club-Cup -> "American Jockey Club Cup"
|
|
||||||
Kyoto-Kinen -> "Kyoto Kinen"
|
|
||||||
Nakayama-Kinen -> "Nakayama Kinen"
|
|
||||||
Tulip-Sho -> "Tulip Sho"
|
|
||||||
Yayoi-Sho -> "Yayoi Sho"
|
|
||||||
Kinko-Sho -> "Kinko Sho"
|
|
||||||
Fillies-Revue -> "Fillies Revue"
|
|
||||||
Hanshin-Daishoten -> "Hanshin Daishoten"
|
|
||||||
Spring-Stakes -> "Spring Stakes"
|
|
||||||
Nikkei-Sho -> "Nikkei Sho"
|
|
||||||
Hanshin-Umamusume-Stakes -> "Hanshin Umamusume Stakes"
|
|
||||||
New-Zealand-Trophy -> "New Zealand Trophy"
|
|
||||||
Yomiuri-Milers-Cup -> "Yomiuri Milers Cup"
|
|
||||||
Flora-Stakes -> "Flora Stakes"
|
|
||||||
Aoba-Sho -> "Aoba Sho"
|
|
||||||
Kyoto-Shimbun-Hai -> "Kyoto Shimbun Hai"
|
|
||||||
Keio-Hai-Spring-Cup -> "Keio Hai Spring Cup"
|
|
||||||
Meguro-Kinen -> "Meguro Kinen"
|
|
||||||
Sapporo-Kinen -> "Sapporo Kinen"
|
|
||||||
Centaur-Stakes -> "Centaur Stakes"
|
|
||||||
Rose-Stakes -> "Rose Stakes"
|
|
||||||
St-Lite-Kinen -> "St Lite Kinen"
|
|
||||||
Kobe-Shimbun-Hai -> "Kobe Shimbun Hai"
|
|
||||||
All-Comers -> "All Comers"
|
|
||||||
Mainichi-Okan -> "Mainichi Okan"
|
|
||||||
Kyoto-Daishoten -> "Kyoto Daishoten"
|
|
||||||
Fuchu-Umamusume-Stakes -> "Fuchu Umamusume Stakes"
|
|
||||||
Fuji-Stakes -> "Fuji Stakes"
|
|
||||||
Swan-Stakes -> "Swan Stakes"
|
|
||||||
Keio-Hai-Junior-Stakes -> "Keio Hai Junior Stakes"
|
|
||||||
Copa-Republica-Argentina -> "Copa Republica Argentina"
|
|
||||||
Daily-Hai-Junior-Stakes -> "Daily Hai Junior Stakes"
|
|
||||||
Stayers-Stakes -> "Stayers Stakes"
|
|
||||||
Hanshin-Cup -> "Hanshin Cup"
|
|
||||||
Kyoto-Kimpai -> "Kyoto Kimpai"
|
|
||||||
Nakayama-Kimpai -> "Nakayama Kimpai"
|
|
||||||
Shinzan-Kinen -> "Shinzan Kinen"
|
|
||||||
Fairy-Stakes -> "Fairy Stakes"
|
|
||||||
Aichi-Hai -> "Aichi Hai"
|
|
||||||
Keisei-Hai -> "Keisei Hai"
|
|
||||||
Silk-Road-Stakes -> "Silk Road Stakes"
|
|
||||||
Negishi-Stakes -> "Negishi Stakes"
|
|
||||||
Kisaragi-Sho -> "Kisaragi Sho"
|
|
||||||
Tokyo-Shimbun-Hai -> "Tokyo Shimbun Hai"
|
|
||||||
Queen-Cup -> "Queen Cup"
|
|
||||||
Kyodo-News-Hai -> "Kyodo News Hai"
|
|
||||||
Kyoto-Umamusume-Stakes -> "Kyoto Umamusume Stakes"
|
|
||||||
Diamond-Stakes -> "Diamond Stakes"
|
|
||||||
Kokura-Daishoten -> "Kokura Daishoten"
|
|
||||||
Arlington-Cup -> "Arlington Cup"
|
|
||||||
Hankyu-Hai -> "Hankyu Hai"
|
|
||||||
Ocean-Stakes -> "Ocean Stakes"
|
|
||||||
Nakayama-Umamusume-Stakes -> "Nakayama Umamusume Stakes"
|
|
||||||
Falcon-Stakes -> "Falcon Stakes"
|
|
||||||
Flower-Cup -> "Flower Cup"
|
|
||||||
Mainichi-Hai -> "Mainichi Hai"
|
|
||||||
March-Stakes -> "March Stakes"
|
|
||||||
Lord-Derby-Challenge-Trophy -> "Lord Derby Challenge Trophy"
|
|
||||||
Antares-Stakes -> "Antares Stakes"
|
|
||||||
Fukushima-Umamusume-Stakes -> "Fukushima Umamusume Stakes"
|
|
||||||
Niigata-Daishoten -> "Niigata Daishoten"
|
|
||||||
Heian-Stakes -> "Heian Stakes"
|
|
||||||
Aoi-Stakes -> "Aoi Stakes"
|
|
||||||
Naruo-Kinen -> "Naruo Kinen"
|
|
||||||
Mermaid-Stakes -> "Mermaid Stakes"
|
|
||||||
Epsom-Cup -> "Epsom Cup"
|
|
||||||
Unicorn-Stakes -> "Unicorn Stakes"
|
|
||||||
Hakodate-Sprint-Stakes -> "Hakodate Sprint Stakes"
|
|
||||||
CBC-Sho -> "CBC Sho"
|
|
||||||
Radio-Nikkei-Sho -> "Radio Nikkei Sho"
|
|
||||||
Procyon-Stakes -> "Procyon Stakes"
|
|
||||||
Tanabata-Sho -> "Tanabata Sho"
|
|
||||||
Hakodate-Kinen -> "Hakodate Kinen"
|
|
||||||
Chukyo-Kinen -> "Chukyo Kinen"
|
|
||||||
Hakodate-Junior-Stakes -> "Hakodate Junior Stakes"
|
|
||||||
Ibis-Summer-Dash -> "Ibis Summer Dash"
|
|
||||||
Queen-Stakes -> "Queen Stakes"
|
|
||||||
Kokura-Kinen -> "Kokura Kinen"
|
|
||||||
Leopard-Stakes -> "Leopard Stakes"
|
|
||||||
Sekiya-Kinen -> "Sekiya Kinen"
|
|
||||||
Elm-Stakes -> "Elm Stakes"
|
|
||||||
Kitakyushu-Kinen -> "Kitakyushu Kinen"
|
|
||||||
Niigata-Junior-Stakes -> "Niigata Junior Stakes"
|
|
||||||
Keeneland-Cup -> "Keeneland Cup"
|
|
||||||
Sapporo-Junior-Stakes -> "Sapporo Junior Stakes"
|
|
||||||
Kokura-Junior-Stakes -> "Kokura Junior Stakes"
|
|
||||||
Niigata-Kinen -> "Niigata Kinen"
|
|
||||||
Shion-Stakes -> "Shion Stakes"
|
|
||||||
Keisei-Hai-Autumn-Handicap -> "Keisei Hai Autumn Handicap"
|
|
||||||
Sirius-Stakes -> "Sirius Stakes"
|
|
||||||
Saudi-Arabia-Royal-Cup -> "Saudi Arabia Royal Cup"
|
|
||||||
Artemis-Stakes -> "Artemis Stakes"
|
|
||||||
Fantasy-Stakes -> "Fantasy Stakes"
|
|
||||||
Miyako-Stakes -> "Miyako Stakes"
|
|
||||||
Musashino-Stakes -> "Musashino Stakes"
|
|
||||||
Fukushima-Kinen -> "Fukushima Kinen"
|
|
||||||
Tokyo-Sports-Hai-Junior-Stakes -> "Tokyo Sports Hai Junior Stakes"
|
|
||||||
Kyoto-Junior-Stakes -> "Kyoto Junior Stakes"
|
|
||||||
Keihan-Hai -> "Keihan Hai"
|
|
||||||
Challenge-Cup -> "Challenge Cup"
|
|
||||||
Chunichi-Shimbun-Hai -> "Chunichi Shimbun Hai"
|
|
||||||
Capella-Stakes -> "Capella Stakes"
|
|
||||||
Turquoise-Stakes -> "Turquoise Stakes"
|
|
||||||
|
|
||||||
// Automatically generated.
|
|
||||||
// Equality comparison of the `career-race` type.
|
|
||||||
pub fun career-race/(==)(this : career-race, other : career-race) : e bool
|
|
||||||
match (this, other)
|
|
||||||
(February-Stakes, February-Stakes) -> True
|
|
||||||
(Takamatsunomiya-Kinen, Takamatsunomiya-Kinen) -> True
|
|
||||||
(Osaka-Hai, Osaka-Hai) -> True
|
|
||||||
(Oka-Sho, Oka-Sho) -> True
|
|
||||||
(Satsuki-Sho, Satsuki-Sho) -> True
|
|
||||||
(Tenno-Sho-Spring, Tenno-Sho-Spring) -> True
|
|
||||||
(NHK-Mile-Cup, NHK-Mile-Cup) -> True
|
|
||||||
(Victoria-Mile, Victoria-Mile) -> True
|
|
||||||
(Japanese-Oaks, Japanese-Oaks) -> True
|
|
||||||
(Japanese-Derby, Japanese-Derby) -> True
|
|
||||||
(Yasuda-Kinen, Yasuda-Kinen) -> True
|
|
||||||
(Takarazuka-Kinen, Takarazuka-Kinen) -> True
|
|
||||||
(Sprinters-Stakes, Sprinters-Stakes) -> True
|
|
||||||
(Shuka-Sho, Shuka-Sho) -> True
|
|
||||||
(Kikuka-Sho, Kikuka-Sho) -> True
|
|
||||||
(Tenno-Sho-Autumn, Tenno-Sho-Autumn) -> True
|
|
||||||
(Queen-Elizabeth-II-Cup, Queen-Elizabeth-II-Cup) -> True
|
|
||||||
(Mile-Championship, Mile-Championship) -> True
|
|
||||||
(Japan-Cup, Japan-Cup) -> True
|
|
||||||
(Champions-Cup, Champions-Cup) -> True
|
|
||||||
(Hanshin-Juvenile-Fillies, Hanshin-Juvenile-Fillies) -> True
|
|
||||||
(Asahi-Hai-Futurity-Stakes, Asahi-Hai-Futurity-Stakes) -> True
|
|
||||||
(Arima-Kinen, Arima-Kinen) -> True
|
|
||||||
(Hopeful-Stakes, Hopeful-Stakes) -> True
|
|
||||||
(Tokyo-Daishoten, Tokyo-Daishoten) -> True
|
|
||||||
(JBC-Classic, JBC-Classic) -> True
|
|
||||||
(JBC-Sprint, JBC-Sprint) -> True
|
|
||||||
(JBC-Ladies-Classic, JBC-Ladies-Classic) -> True
|
|
||||||
(Japan-Dirt-Derby, Japan-Dirt-Derby) -> True
|
|
||||||
(Teio-Sho, Teio-Sho) -> True
|
|
||||||
(Nikkei-Shinshun-Hai, Nikkei-Shinshun-Hai) -> True
|
|
||||||
(Tokai-Stakes, Tokai-Stakes) -> True
|
|
||||||
(American-Jockey-Club-Cup, American-Jockey-Club-Cup) -> True
|
|
||||||
(Kyoto-Kinen, Kyoto-Kinen) -> True
|
|
||||||
(Nakayama-Kinen, Nakayama-Kinen) -> True
|
|
||||||
(Tulip-Sho, Tulip-Sho) -> True
|
|
||||||
(Yayoi-Sho, Yayoi-Sho) -> True
|
|
||||||
(Kinko-Sho, Kinko-Sho) -> True
|
|
||||||
(Fillies-Revue, Fillies-Revue) -> True
|
|
||||||
(Hanshin-Daishoten, Hanshin-Daishoten) -> True
|
|
||||||
(Spring-Stakes, Spring-Stakes) -> True
|
|
||||||
(Nikkei-Sho, Nikkei-Sho) -> True
|
|
||||||
(Hanshin-Umamusume-Stakes, Hanshin-Umamusume-Stakes) -> True
|
|
||||||
(New-Zealand-Trophy, New-Zealand-Trophy) -> True
|
|
||||||
(Yomiuri-Milers-Cup, Yomiuri-Milers-Cup) -> True
|
|
||||||
(Flora-Stakes, Flora-Stakes) -> True
|
|
||||||
(Aoba-Sho, Aoba-Sho) -> True
|
|
||||||
(Kyoto-Shimbun-Hai, Kyoto-Shimbun-Hai) -> True
|
|
||||||
(Keio-Hai-Spring-Cup, Keio-Hai-Spring-Cup) -> True
|
|
||||||
(Meguro-Kinen, Meguro-Kinen) -> True
|
|
||||||
(Sapporo-Kinen, Sapporo-Kinen) -> True
|
|
||||||
(Centaur-Stakes, Centaur-Stakes) -> True
|
|
||||||
(Rose-Stakes, Rose-Stakes) -> True
|
|
||||||
(St-Lite-Kinen, St-Lite-Kinen) -> True
|
|
||||||
(Kobe-Shimbun-Hai, Kobe-Shimbun-Hai) -> True
|
|
||||||
(All-Comers, All-Comers) -> True
|
|
||||||
(Mainichi-Okan, Mainichi-Okan) -> True
|
|
||||||
(Kyoto-Daishoten, Kyoto-Daishoten) -> True
|
|
||||||
(Fuchu-Umamusume-Stakes, Fuchu-Umamusume-Stakes) -> True
|
|
||||||
(Fuji-Stakes, Fuji-Stakes) -> True
|
|
||||||
(Swan-Stakes, Swan-Stakes) -> True
|
|
||||||
(Keio-Hai-Junior-Stakes, Keio-Hai-Junior-Stakes) -> True
|
|
||||||
(Copa-Republica-Argentina, Copa-Republica-Argentina) -> True
|
|
||||||
(Daily-Hai-Junior-Stakes, Daily-Hai-Junior-Stakes) -> True
|
|
||||||
(Stayers-Stakes, Stayers-Stakes) -> True
|
|
||||||
(Hanshin-Cup, Hanshin-Cup) -> True
|
|
||||||
(Kyoto-Kimpai, Kyoto-Kimpai) -> True
|
|
||||||
(Nakayama-Kimpai, Nakayama-Kimpai) -> True
|
|
||||||
(Shinzan-Kinen, Shinzan-Kinen) -> True
|
|
||||||
(Fairy-Stakes, Fairy-Stakes) -> True
|
|
||||||
(Aichi-Hai, Aichi-Hai) -> True
|
|
||||||
(Keisei-Hai, Keisei-Hai) -> True
|
|
||||||
(Silk-Road-Stakes, Silk-Road-Stakes) -> True
|
|
||||||
(Negishi-Stakes, Negishi-Stakes) -> True
|
|
||||||
(Kisaragi-Sho, Kisaragi-Sho) -> True
|
|
||||||
(Tokyo-Shimbun-Hai, Tokyo-Shimbun-Hai) -> True
|
|
||||||
(Queen-Cup, Queen-Cup) -> True
|
|
||||||
(Kyodo-News-Hai, Kyodo-News-Hai) -> True
|
|
||||||
(Kyoto-Umamusume-Stakes, Kyoto-Umamusume-Stakes) -> True
|
|
||||||
(Diamond-Stakes, Diamond-Stakes) -> True
|
|
||||||
(Kokura-Daishoten, Kokura-Daishoten) -> True
|
|
||||||
(Arlington-Cup, Arlington-Cup) -> True
|
|
||||||
(Hankyu-Hai, Hankyu-Hai) -> True
|
|
||||||
(Ocean-Stakes, Ocean-Stakes) -> True
|
|
||||||
(Nakayama-Umamusume-Stakes, Nakayama-Umamusume-Stakes) -> True
|
|
||||||
(Falcon-Stakes, Falcon-Stakes) -> True
|
|
||||||
(Flower-Cup, Flower-Cup) -> True
|
|
||||||
(Mainichi-Hai, Mainichi-Hai) -> True
|
|
||||||
(March-Stakes, March-Stakes) -> True
|
|
||||||
(Lord-Derby-Challenge-Trophy, Lord-Derby-Challenge-Trophy) -> True
|
|
||||||
(Antares-Stakes, Antares-Stakes) -> True
|
|
||||||
(Fukushima-Umamusume-Stakes, Fukushima-Umamusume-Stakes) -> True
|
|
||||||
(Niigata-Daishoten, Niigata-Daishoten) -> True
|
|
||||||
(Heian-Stakes, Heian-Stakes) -> True
|
|
||||||
(Aoi-Stakes, Aoi-Stakes) -> True
|
|
||||||
(Naruo-Kinen, Naruo-Kinen) -> True
|
|
||||||
(Mermaid-Stakes, Mermaid-Stakes) -> True
|
|
||||||
(Epsom-Cup, Epsom-Cup) -> True
|
|
||||||
(Unicorn-Stakes, Unicorn-Stakes) -> True
|
|
||||||
(Hakodate-Sprint-Stakes, Hakodate-Sprint-Stakes) -> True
|
|
||||||
(CBC-Sho, CBC-Sho) -> True
|
|
||||||
(Radio-Nikkei-Sho, Radio-Nikkei-Sho) -> True
|
|
||||||
(Procyon-Stakes, Procyon-Stakes) -> True
|
|
||||||
(Tanabata-Sho, Tanabata-Sho) -> True
|
|
||||||
(Hakodate-Kinen, Hakodate-Kinen) -> True
|
|
||||||
(Chukyo-Kinen, Chukyo-Kinen) -> True
|
|
||||||
(Hakodate-Junior-Stakes, Hakodate-Junior-Stakes) -> True
|
|
||||||
(Ibis-Summer-Dash, Ibis-Summer-Dash) -> True
|
|
||||||
(Queen-Stakes, Queen-Stakes) -> True
|
|
||||||
(Kokura-Kinen, Kokura-Kinen) -> True
|
|
||||||
(Leopard-Stakes, Leopard-Stakes) -> True
|
|
||||||
(Sekiya-Kinen, Sekiya-Kinen) -> True
|
|
||||||
(Elm-Stakes, Elm-Stakes) -> True
|
|
||||||
(Kitakyushu-Kinen, Kitakyushu-Kinen) -> True
|
|
||||||
(Niigata-Junior-Stakes, Niigata-Junior-Stakes) -> True
|
|
||||||
(Keeneland-Cup, Keeneland-Cup) -> True
|
|
||||||
(Sapporo-Junior-Stakes, Sapporo-Junior-Stakes) -> True
|
|
||||||
(Kokura-Junior-Stakes, Kokura-Junior-Stakes) -> True
|
|
||||||
(Niigata-Kinen, Niigata-Kinen) -> True
|
|
||||||
(Shion-Stakes, Shion-Stakes) -> True
|
|
||||||
(Keisei-Hai-Autumn-Handicap, Keisei-Hai-Autumn-Handicap) -> True
|
|
||||||
(Sirius-Stakes, Sirius-Stakes) -> True
|
|
||||||
(Saudi-Arabia-Royal-Cup, Saudi-Arabia-Royal-Cup) -> True
|
|
||||||
(Artemis-Stakes, Artemis-Stakes) -> True
|
|
||||||
(Fantasy-Stakes, Fantasy-Stakes) -> True
|
|
||||||
(Miyako-Stakes, Miyako-Stakes) -> True
|
|
||||||
(Musashino-Stakes, Musashino-Stakes) -> True
|
|
||||||
(Fukushima-Kinen, Fukushima-Kinen) -> True
|
|
||||||
(Tokyo-Sports-Hai-Junior-Stakes, Tokyo-Sports-Hai-Junior-Stakes) -> True
|
|
||||||
(Kyoto-Junior-Stakes, Kyoto-Junior-Stakes) -> True
|
|
||||||
(Keihan-Hai, Keihan-Hai) -> True
|
|
||||||
(Challenge-Cup, Challenge-Cup) -> True
|
|
||||||
(Chunichi-Shimbun-Hai, Chunichi-Shimbun-Hai) -> True
|
|
||||||
(Capella-Stakes, Capella-Stakes) -> True
|
|
||||||
(Turquoise-Stakes, Turquoise-Stakes) -> True
|
|
||||||
(_, _) -> False
|
|
||||||
|
|
||||||
// Race grades.
|
|
||||||
pub type grade
|
|
||||||
Pre-OP
|
|
||||||
OP
|
|
||||||
G3
|
|
||||||
G2
|
|
||||||
G1
|
|
||||||
EX
|
|
||||||
|
|
||||||
pub fun career-race/grade(r: career-race): grade
|
|
||||||
match r
|
|
||||||
February-Stakes -> G1
|
|
||||||
Takamatsunomiya-Kinen -> G1
|
|
||||||
Osaka-Hai -> G1
|
|
||||||
Oka-Sho -> G1
|
|
||||||
Satsuki-Sho -> G1
|
|
||||||
Tenno-Sho-Spring -> G1
|
|
||||||
NHK-Mile-Cup -> G1
|
|
||||||
Victoria-Mile -> G1
|
|
||||||
Japanese-Oaks -> G1
|
|
||||||
Japanese-Derby -> G1
|
|
||||||
Yasuda-Kinen -> G1
|
|
||||||
Takarazuka-Kinen -> G1
|
|
||||||
Sprinters-Stakes -> G1
|
|
||||||
Shuka-Sho -> G1
|
|
||||||
Kikuka-Sho -> G1
|
|
||||||
Tenno-Sho-Autumn -> G1
|
|
||||||
Queen-Elizabeth-II-Cup -> G1
|
|
||||||
Mile-Championship -> G1
|
|
||||||
Japan-Cup -> G1
|
|
||||||
Champions-Cup -> G1
|
|
||||||
Hanshin-Juvenile-Fillies -> G1
|
|
||||||
Asahi-Hai-Futurity-Stakes -> G1
|
|
||||||
Arima-Kinen -> G1
|
|
||||||
Hopeful-Stakes -> G1
|
|
||||||
Tokyo-Daishoten -> G1
|
|
||||||
JBC-Classic -> G1
|
|
||||||
JBC-Sprint -> G1
|
|
||||||
JBC-Ladies-Classic -> G1
|
|
||||||
Japan-Dirt-Derby -> G1
|
|
||||||
Teio-Sho -> G1
|
|
||||||
Nikkei-Shinshun-Hai -> G2
|
|
||||||
Tokai-Stakes -> G2
|
|
||||||
American-Jockey-Club-Cup -> G2
|
|
||||||
Kyoto-Kinen -> G2
|
|
||||||
Nakayama-Kinen -> G2
|
|
||||||
Tulip-Sho -> G2
|
|
||||||
Yayoi-Sho -> G2
|
|
||||||
Kinko-Sho -> G2
|
|
||||||
Fillies-Revue -> G2
|
|
||||||
Hanshin-Daishoten -> G2
|
|
||||||
Spring-Stakes -> G2
|
|
||||||
Nikkei-Sho -> G2
|
|
||||||
Hanshin-Umamusume-Stakes -> G2
|
|
||||||
New-Zealand-Trophy -> G2
|
|
||||||
Yomiuri-Milers-Cup -> G2
|
|
||||||
Flora-Stakes -> G2
|
|
||||||
Aoba-Sho -> G2
|
|
||||||
Kyoto-Shimbun-Hai -> G2
|
|
||||||
Keio-Hai-Spring-Cup -> G2
|
|
||||||
Meguro-Kinen -> G2
|
|
||||||
Sapporo-Kinen -> G2
|
|
||||||
Centaur-Stakes -> G2
|
|
||||||
Rose-Stakes -> G2
|
|
||||||
St-Lite-Kinen -> G2
|
|
||||||
Kobe-Shimbun-Hai -> G2
|
|
||||||
All-Comers -> G2
|
|
||||||
Mainichi-Okan -> G2
|
|
||||||
Kyoto-Daishoten -> G2
|
|
||||||
Fuchu-Umamusume-Stakes -> G2
|
|
||||||
Fuji-Stakes -> G2
|
|
||||||
Swan-Stakes -> G2
|
|
||||||
Keio-Hai-Junior-Stakes -> G2
|
|
||||||
Copa-Republica-Argentina -> G2
|
|
||||||
Daily-Hai-Junior-Stakes -> G2
|
|
||||||
Stayers-Stakes -> G2
|
|
||||||
Hanshin-Cup -> G2
|
|
||||||
Kyoto-Kimpai -> G3
|
|
||||||
Nakayama-Kimpai -> G3
|
|
||||||
Shinzan-Kinen -> G3
|
|
||||||
Fairy-Stakes -> G3
|
|
||||||
Aichi-Hai -> G3
|
|
||||||
Keisei-Hai -> G3
|
|
||||||
Silk-Road-Stakes -> G3
|
|
||||||
Negishi-Stakes -> G3
|
|
||||||
Kisaragi-Sho -> G3
|
|
||||||
Tokyo-Shimbun-Hai -> G3
|
|
||||||
Queen-Cup -> G3
|
|
||||||
Kyodo-News-Hai -> G3
|
|
||||||
Kyoto-Umamusume-Stakes -> G3
|
|
||||||
Diamond-Stakes -> G3
|
|
||||||
Kokura-Daishoten -> G3
|
|
||||||
Arlington-Cup -> G3
|
|
||||||
Hankyu-Hai -> G3
|
|
||||||
Ocean-Stakes -> G3
|
|
||||||
Nakayama-Umamusume-Stakes -> G3
|
|
||||||
Falcon-Stakes -> G3
|
|
||||||
Flower-Cup -> G3
|
|
||||||
Mainichi-Hai -> G3
|
|
||||||
March-Stakes -> G3
|
|
||||||
Lord-Derby-Challenge-Trophy -> G3
|
|
||||||
Antares-Stakes -> G3
|
|
||||||
Fukushima-Umamusume-Stakes -> G3
|
|
||||||
Niigata-Daishoten -> G3
|
|
||||||
Heian-Stakes -> G3
|
|
||||||
Aoi-Stakes -> G3
|
|
||||||
Naruo-Kinen -> G3
|
|
||||||
Mermaid-Stakes -> G3
|
|
||||||
Epsom-Cup -> G3
|
|
||||||
Unicorn-Stakes -> G3
|
|
||||||
Hakodate-Sprint-Stakes -> G3
|
|
||||||
CBC-Sho -> G3
|
|
||||||
Radio-Nikkei-Sho -> G3
|
|
||||||
Procyon-Stakes -> G3
|
|
||||||
Tanabata-Sho -> G3
|
|
||||||
Hakodate-Kinen -> G3
|
|
||||||
Chukyo-Kinen -> G3
|
|
||||||
Hakodate-Junior-Stakes -> G3
|
|
||||||
Ibis-Summer-Dash -> G3
|
|
||||||
Queen-Stakes -> G3
|
|
||||||
Kokura-Kinen -> G3
|
|
||||||
Leopard-Stakes -> G3
|
|
||||||
Sekiya-Kinen -> G3
|
|
||||||
Elm-Stakes -> G3
|
|
||||||
Kitakyushu-Kinen -> G3
|
|
||||||
Niigata-Junior-Stakes -> G3
|
|
||||||
Keeneland-Cup -> G3
|
|
||||||
Sapporo-Junior-Stakes -> G3
|
|
||||||
Kokura-Junior-Stakes -> G3
|
|
||||||
Niigata-Kinen -> G3
|
|
||||||
Shion-Stakes -> G3
|
|
||||||
Keisei-Hai-Autumn-Handicap -> G3
|
|
||||||
Sirius-Stakes -> G3
|
|
||||||
Saudi-Arabia-Royal-Cup -> G3
|
|
||||||
Artemis-Stakes -> G3
|
|
||||||
Fantasy-Stakes -> G3
|
|
||||||
Miyako-Stakes -> G3
|
|
||||||
Musashino-Stakes -> G3
|
|
||||||
Fukushima-Kinen -> G3
|
|
||||||
Tokyo-Sports-Hai-Junior-Stakes -> G3
|
|
||||||
Kyoto-Junior-Stakes -> G3
|
|
||||||
Keihan-Hai -> G3
|
|
||||||
Challenge-Cup -> G3
|
|
||||||
Chunichi-Shimbun-Hai -> G3
|
|
||||||
Capella-Stakes -> G3
|
|
||||||
Turquoise-Stakes -> G3
|
|
||||||
|
|
||||||
pub type title
|
|
||||||
Classic-Triple-Crown
|
|
||||||
Triple-Tiara
|
|
||||||
Senior-Spring-Triple-Crown
|
|
||||||
Senior-Autumn-Triple-Crown
|
|
||||||
Tenno-Sweep
|
|
||||||
Dual-Grand-Prix
|
|
||||||
Dual-Miles
|
|
||||||
Dual-Sprints
|
|
||||||
Dual-Dirts
|
|
||||||
|
|
||||||
// Get the titles that a race contributes to.
|
|
||||||
inline fun career-race/titles(r: career-race): list<title>
|
|
||||||
match r
|
|
||||||
Satsuki-Sho -> [Classic-Triple-Crown]
|
|
||||||
Japanese-Derby -> [Classic-Triple-Crown]
|
|
||||||
Kikuka-Sho -> [Classic-Triple-Crown]
|
|
||||||
Oka-Sho -> [Triple-Tiara]
|
|
||||||
Japanese-Oaks -> [Triple-Tiara]
|
|
||||||
Shuka-Sho -> [Triple-Tiara]
|
|
||||||
Osaka-Hai -> [Senior-Spring-Triple-Crown]
|
|
||||||
Tenno-Sho-Spring -> [Senior-Spring-Triple-Crown, Tenno-Sweep]
|
|
||||||
Takarazuka-Kinen -> [Senior-Spring-Triple-Crown, Dual-Grand-Prix]
|
|
||||||
Tenno-Sho-Autumn -> [Senior-Autumn-Triple-Crown, Tenno-Sweep]
|
|
||||||
Japan-Cup -> [Senior-Autumn-Triple-Crown]
|
|
||||||
Arima-Kinen -> [Senior-Autumn-Triple-Crown, Dual-Grand-Prix]
|
|
||||||
Yasuda-Kinen -> [Dual-Miles]
|
|
||||||
Mile-Championship -> [Dual-Miles]
|
|
||||||
Takamatsunomiya-Kinen -> [Dual-Sprints]
|
|
||||||
Sprinters-Stakes -> [Dual-Sprints]
|
|
||||||
February-Stakes -> [Dual-Dirts]
|
|
||||||
Champions-Cup -> [Dual-Dirts]
|
|
||||||
_ -> []
|
|
||||||
|
|
||||||
// Get the races that a title requires.
|
|
||||||
inline fun title/races(t: title): list<career-race>
|
|
||||||
match t
|
|
||||||
Classic-Triple-Crown -> [Satsuki-Sho, Japanese-Derby, Kikuka-Sho]
|
|
||||||
Triple-Tiara -> [Oka-Sho, Japanese-Oaks, Shuka-Sho]
|
|
||||||
Senior-Spring-Triple-Crown -> [Osaka-Hai, Tenno-Sho-Spring, Takarazuka-Kinen]
|
|
||||||
Senior-Autumn-Triple-Crown -> [Tenno-Sho-Autumn, Japan-Cup, Arima-Kinen]
|
|
||||||
Tenno-Sweep -> [Tenno-Sho-Spring, Tenno-Sho-Autumn]
|
|
||||||
Dual-Grand-Prix -> [Takarazuka-Kinen, Arima-Kinen]
|
|
||||||
Dual-Miles -> [Yasuda-Kinen, Mile-Championship]
|
|
||||||
Dual-Sprints -> [Takamatsunomiya-Kinen, Sprinters-Stakes]
|
|
||||||
Dual-Dirts -> [February-Stakes, Champions-Cup]
|
|
||||||
|
|
||||||
// Get all titles earned by an uma.
|
|
||||||
pub fun career/titles(results: list<race-result>): list<title>
|
|
||||||
val wins = results.flatmap-maybe() fn(r) (if r.place == 1 then Just(r.race) else Nothing)
|
|
||||||
val title-wins = wins.filter(_.titles.is-cons).linear-set
|
|
||||||
val titles = title-wins.list.flatmap(_.titles).linear-set.list
|
|
||||||
titles.filter(_.races.linear-set.is-subset-of(title-wins))
|
|
||||||
|
|
||||||
// Automatically generated.
|
|
||||||
// Equality comparison of the `title` type.
|
|
||||||
pub fun title/(==)(this : title, other : title) : e bool
|
|
||||||
match (this, other)
|
|
||||||
(Classic-Triple-Crown, Classic-Triple-Crown) -> True
|
|
||||||
(Triple-Tiara, Triple-Tiara) -> True
|
|
||||||
(Senior-Spring-Triple-Crown, Senior-Spring-Triple-Crown) -> True
|
|
||||||
(Senior-Autumn-Triple-Crown, Senior-Autumn-Triple-Crown) -> True
|
|
||||||
(Tenno-Sweep, Tenno-Sweep) -> True
|
|
||||||
(Dual-Grand-Prix, Dual-Grand-Prix) -> True
|
|
||||||
(Dual-Miles, Dual-Miles) -> True
|
|
||||||
(Dual-Sprints, Dual-Sprints) -> True
|
|
||||||
(Dual-Dirts, Dual-Dirts) -> True
|
|
||||||
(_, _) -> False
|
|
||||||
|
|
||||||
// Automatically generated.
|
|
||||||
// Shows a string representation of the `title` type.
|
|
||||||
pub fun title/show(this : title) : e string
|
|
||||||
match this
|
|
||||||
Classic-Triple-Crown -> "Classic Triple Crown"
|
|
||||||
Triple-Tiara -> "Triple Tiara"
|
|
||||||
Senior-Spring-Triple-Crown -> "Senior Spring Triple Crown"
|
|
||||||
Senior-Autumn-Triple-Crown -> "Senior Autumn Triple Crown"
|
|
||||||
Tenno-Sweep -> "Tenno Sweep"
|
|
||||||
Dual-Grand-Prix -> "Dual Grand Prix"
|
|
||||||
Dual-Miles -> "Dual Miles"
|
|
||||||
Dual-Sprints -> "Dual Sprints"
|
|
||||||
Dual-Dirts -> "Dual Dirts"
|
|
||||||
|
|
||||||
// Graded race that a veteran ran.
|
|
||||||
pub struct race-result
|
|
||||||
race: career-race
|
|
||||||
place: int
|
|
||||||
turn: turn
|
|
||||||
|
|
||||||
// Automatically generated.
|
|
||||||
// Equality comparison of the `race-result` type.
|
|
||||||
pub fun race-result/(==)(this : race-result, other : race-result) : e bool
|
|
||||||
match (this, other)
|
|
||||||
(Race-result(race, place, turn), Race-result(race', place', turn')) -> race == race' && place == place' && turn == turn'
|
|
||||||
|
|
||||||
// Automatically generated.
|
|
||||||
// Shows a string representation of the `race-result` type.
|
|
||||||
pub fun race-result/show(this : race-result) : e string
|
|
||||||
match this
|
|
||||||
Race-result(race, place, turn) -> turn.show ++ " " ++ race.show ++ ": " ++ place.show
|
|
||||||
|
|
||||||
// Determine whether two race results are for the same race.
|
|
||||||
// This differs from (==) which also requires the race to be on the same turn.
|
|
||||||
pub fun race-result/same(a: race-result, b: race-result): bool
|
|
||||||
a.race == b.race
|
|
||||||
|
|
||||||
// Turn that a race occurred.
|
|
||||||
pub struct turn
|
|
||||||
year: turn-year
|
|
||||||
month: turn-month
|
|
||||||
half: turn-half
|
|
||||||
|
|
||||||
// Automatically generated.
|
|
||||||
// Equality comparison of the `turn` type.
|
|
||||||
pub fun turn/(==)(this : turn, other : turn) : e bool
|
|
||||||
match (this, other)
|
|
||||||
(Turn(year, month, half), Turn(year', month', half')) -> year == year' && month == month' && half == half'
|
|
||||||
|
|
||||||
// Automatically generated.
|
|
||||||
// Fip comparison of the `turn` type.
|
|
||||||
pub fun turn/order2(this : turn, other : turn) : e order2<turn>
|
|
||||||
match (this, other)
|
|
||||||
(Turn(year, month, half), Turn(year', month', half')) ->
|
|
||||||
match year.order2(year')
|
|
||||||
Eq2(year_eq) ->
|
|
||||||
match month.order2(month')
|
|
||||||
Eq2(month_eq) ->
|
|
||||||
match half.order2(half')
|
|
||||||
Eq2(half_eq) -> Eq2(Turn(year_eq, month_eq, half_eq))
|
|
||||||
Lt2(half_lt, half_gt) -> Lt2(Turn(year_eq, month_eq, half_lt), Turn(year_eq, month_eq, half_gt))
|
|
||||||
Gt2(half_lt, half_gt) -> Gt2(Turn(year_eq, month_eq, half_lt), Turn(year_eq, month_eq, half_gt))
|
|
||||||
Lt2(month_lt, month_gt) -> Lt2(Turn(year_eq, month_lt, half), Turn(year_eq, month_gt, half'))
|
|
||||||
Gt2(month_lt, month_gt) -> Gt2(Turn(year_eq, month_lt, half'), Turn(year_eq, month_gt, half))
|
|
||||||
Lt2(year_lt, year_gt) -> Lt2(Turn(year_lt, month, half), Turn(year_gt, month', half'))
|
|
||||||
Gt2(year_lt, year_gt) -> Gt2(Turn(year_lt, month', half'), Turn(year_gt, month, half))
|
|
||||||
|
|
||||||
// Automatically generated.
|
|
||||||
// Shows a string representation of the `turn` type.
|
|
||||||
pub fun turn/show(this : turn) : e string
|
|
||||||
this.year.show ++ " " ++ this.half.show ++ " " ++ this.month.show
|
|
||||||
|
|
||||||
pub type turn-year
|
|
||||||
Junior
|
|
||||||
Classic
|
|
||||||
Senior
|
|
||||||
Finale
|
|
||||||
|
|
||||||
// Automatically generated.
|
|
||||||
// Equality comparison of the `turn-year` type.
|
|
||||||
pub fun turn-year/(==)(this : turn-year, other : turn-year) : e bool
|
|
||||||
match (this, other)
|
|
||||||
(Junior, Junior) -> True
|
|
||||||
(Classic, Classic) -> True
|
|
||||||
(Senior, Senior) -> True
|
|
||||||
(Finale, Finale) -> True
|
|
||||||
(_, _) -> False
|
|
||||||
|
|
||||||
// Automatically generated.
|
|
||||||
// Fip comparison of the `turn-year` type.
|
|
||||||
pub fun turn-year/order2(this : turn-year, other : turn-year) : e order2<turn-year>
|
|
||||||
match (this, other)
|
|
||||||
(Junior, Junior) -> Eq2(Junior)
|
|
||||||
(Junior, other') -> Lt2(Junior, other')
|
|
||||||
(this', Junior) -> Gt2(Junior, this')
|
|
||||||
(Classic, Classic) -> Eq2(Classic)
|
|
||||||
(Classic, other') -> Lt2(Classic, other')
|
|
||||||
(this', Classic) -> Gt2(Classic, this')
|
|
||||||
(Senior, Senior) -> Eq2(Senior)
|
|
||||||
(Senior, other') -> Lt2(Senior, other')
|
|
||||||
(this', Senior) -> Gt2(Senior, this')
|
|
||||||
(Finale, Finale) -> Eq2(Finale)
|
|
||||||
|
|
||||||
// Automatically generated.
|
|
||||||
// Shows a string representation of the `turn-year` type.
|
|
||||||
pub fun turn-year/show(this : turn-year) : e string
|
|
||||||
match this
|
|
||||||
Junior -> "Junior Year"
|
|
||||||
Classic -> "Classic Year"
|
|
||||||
Senior -> "Senior Year"
|
|
||||||
Finale -> "Finale 1" // the 1 is in the game
|
|
||||||
|
|
||||||
pub type turn-month
|
|
||||||
January
|
|
||||||
February
|
|
||||||
March
|
|
||||||
April
|
|
||||||
May
|
|
||||||
June
|
|
||||||
July
|
|
||||||
August
|
|
||||||
September
|
|
||||||
November
|
|
||||||
December
|
|
||||||
|
|
||||||
// Automatically generated.
|
|
||||||
// Equality comparison of the `turn-month` type.
|
|
||||||
pub fun turn-month/(==)(this : turn-month, other : turn-month) : e bool
|
|
||||||
match (this, other)
|
|
||||||
(January, January) -> True
|
|
||||||
(February, February) -> True
|
|
||||||
(March, March) -> True
|
|
||||||
(April, April) -> True
|
|
||||||
(May, May) -> True
|
|
||||||
(June, June) -> True
|
|
||||||
(July, July) -> True
|
|
||||||
(August, August) -> True
|
|
||||||
(September, September) -> True
|
|
||||||
(November, November) -> True
|
|
||||||
(December, December) -> True
|
|
||||||
(_, _) -> False
|
|
||||||
|
|
||||||
// Automatically generated.
|
|
||||||
// Fip comparison of the `turn-month` type.
|
|
||||||
pub fun turn-month/order2(this : turn-month, other : turn-month) : e order2<turn-month>
|
|
||||||
match (this, other)
|
|
||||||
(January, January) -> Eq2(January)
|
|
||||||
(January, other') -> Lt2(January, other')
|
|
||||||
(this', January) -> Gt2(January, this')
|
|
||||||
(February, February) -> Eq2(February)
|
|
||||||
(February, other') -> Lt2(February, other')
|
|
||||||
(this', February) -> Gt2(February, this')
|
|
||||||
(March, March) -> Eq2(March)
|
|
||||||
(March, other') -> Lt2(March, other')
|
|
||||||
(this', March) -> Gt2(March, this')
|
|
||||||
(April, April) -> Eq2(April)
|
|
||||||
(April, other') -> Lt2(April, other')
|
|
||||||
(this', April) -> Gt2(April, this')
|
|
||||||
(May, May) -> Eq2(May)
|
|
||||||
(May, other') -> Lt2(May, other')
|
|
||||||
(this', May) -> Gt2(May, this')
|
|
||||||
(June, June) -> Eq2(June)
|
|
||||||
(June, other') -> Lt2(June, other')
|
|
||||||
(this', June) -> Gt2(June, this')
|
|
||||||
(July, July) -> Eq2(July)
|
|
||||||
(July, other') -> Lt2(July, other')
|
|
||||||
(this', July) -> Gt2(July, this')
|
|
||||||
(August, August) -> Eq2(August)
|
|
||||||
(August, other') -> Lt2(August, other')
|
|
||||||
(this', August) -> Gt2(August, this')
|
|
||||||
(September, September) -> Eq2(September)
|
|
||||||
(September, other') -> Lt2(September, other')
|
|
||||||
(this', September) -> Gt2(September, this')
|
|
||||||
(November, November) -> Eq2(November)
|
|
||||||
(November, other') -> Lt2(November, other')
|
|
||||||
(this', November) -> Gt2(November, this')
|
|
||||||
(December, December) -> Eq2(December)
|
|
||||||
|
|
||||||
// Automatically generated.
|
|
||||||
// Shows a string representation of the `turn-month` type.
|
|
||||||
pub fun turn-month/show(this : turn-month) : e string
|
|
||||||
match this
|
|
||||||
January -> "January"
|
|
||||||
February -> "February"
|
|
||||||
March -> "March"
|
|
||||||
April -> "April"
|
|
||||||
May -> "May"
|
|
||||||
June -> "June"
|
|
||||||
July -> "July"
|
|
||||||
August -> "August"
|
|
||||||
September -> "September"
|
|
||||||
November -> "November"
|
|
||||||
December -> "December"
|
|
||||||
|
|
||||||
pub type turn-half
|
|
||||||
Early
|
|
||||||
Late
|
|
||||||
|
|
||||||
// Automatically generated.
|
|
||||||
// Equality comparison of the `turn-half` type.
|
|
||||||
pub fun turn-half/(==)(this : turn-half, other : turn-half) : e bool
|
|
||||||
match (this, other)
|
|
||||||
(Early, Early) -> True
|
|
||||||
(Late, Late) -> True
|
|
||||||
(_, _) -> False
|
|
||||||
|
|
||||||
// Automatically generated.
|
|
||||||
// Fip comparison of the `turn-half` type.
|
|
||||||
pub fun turn-half/order2(this : turn-half, other : turn-half) : e order2<turn-half>
|
|
||||||
match (this, other)
|
|
||||||
(Early, Early) -> Eq2(Early)
|
|
||||||
(Early, other') -> Lt2(Early, other')
|
|
||||||
(this', Early) -> Gt2(Early, this')
|
|
||||||
(Late, Late) -> Eq2(Late)
|
|
||||||
|
|
||||||
// Automatically generated.
|
|
||||||
// Shows a string representation of the `turn-half` type.
|
|
||||||
pub fun turn-half/show(this : turn-half) : e string
|
|
||||||
match this
|
|
||||||
Early -> "Early"
|
|
||||||
Late -> "Late"
|
|
||||||
-186
@@ -1,186 +0,0 @@
|
|||||||
module horse/spark
|
|
||||||
|
|
||||||
// A single spark.
|
|
||||||
// Parameterized by the spark type: stat, aptitude, unique, race, or skill.
|
|
||||||
pub struct spark<a>
|
|
||||||
kind: a
|
|
||||||
level: level
|
|
||||||
|
|
||||||
pub fun spark/show(spark: spark<a>, level-fancy: string = "*", ?kind: (a) -> string): string
|
|
||||||
kind(spark.kind) ++ " " ++ spark.level.show ++ level-fancy
|
|
||||||
|
|
||||||
pub type level
|
|
||||||
One
|
|
||||||
Two
|
|
||||||
Three
|
|
||||||
|
|
||||||
pub fun level/show(this: level): string
|
|
||||||
match this
|
|
||||||
One -> "1"
|
|
||||||
Two -> "2"
|
|
||||||
Three -> "3"
|
|
||||||
|
|
||||||
// Stat (blue) spark.
|
|
||||||
pub type stat
|
|
||||||
Speed
|
|
||||||
Stamina
|
|
||||||
Power
|
|
||||||
Guts
|
|
||||||
Wit
|
|
||||||
|
|
||||||
// Automatically generated.
|
|
||||||
// Shows a string representation of the `stat` type.
|
|
||||||
pub fun stat/show(this : stat) : e string
|
|
||||||
match this
|
|
||||||
Speed -> "Speed"
|
|
||||||
Stamina -> "Stamina"
|
|
||||||
Power -> "Power"
|
|
||||||
Guts -> "Guts"
|
|
||||||
Wit -> "Wit"
|
|
||||||
|
|
||||||
// Aptitude (red/pink) spark.
|
|
||||||
pub type aptitude
|
|
||||||
Turf
|
|
||||||
Dirt
|
|
||||||
Sprint
|
|
||||||
Mile
|
|
||||||
Medium
|
|
||||||
Long
|
|
||||||
Front-Runner
|
|
||||||
Pace-Chaser
|
|
||||||
Late-Surger
|
|
||||||
End-Closer
|
|
||||||
|
|
||||||
// Shows a string representation of the `aptitude` type.
|
|
||||||
pub fun aptitude/show(this : aptitude): string
|
|
||||||
match this
|
|
||||||
Turf -> "Turf"
|
|
||||||
Dirt -> "Dirt"
|
|
||||||
Sprint -> "Sprint"
|
|
||||||
Mile -> "Mile"
|
|
||||||
Medium -> "Medium"
|
|
||||||
Long -> "Long"
|
|
||||||
Front-Runner -> "Front Runner"
|
|
||||||
Pace-Chaser -> "Pace Chaser"
|
|
||||||
Late-Surger -> "Late Surger"
|
|
||||||
End-Closer -> "End Closer"
|
|
||||||
|
|
||||||
// Unique (green) spark.
|
|
||||||
// TODO: decide this representation; strings? umas? probably depends on skills generally
|
|
||||||
pub type unique
|
|
||||||
|
|
||||||
pub fun unique/show(this: unique): string
|
|
||||||
"TODO(zeph): unique skills"
|
|
||||||
|
|
||||||
// Race, skill, and scenario (white) sparks.
|
|
||||||
pub type generic
|
|
||||||
February-Stakes
|
|
||||||
Takamatsunomiya-Kinen
|
|
||||||
Osaka-Hai
|
|
||||||
Oka-Sho
|
|
||||||
Satsuki-Sho
|
|
||||||
Tenno-Sho-Spring
|
|
||||||
NHK-Mile-Cup
|
|
||||||
Victoria-Mile
|
|
||||||
Japanese-Oaks
|
|
||||||
Japanese-Derby
|
|
||||||
Yasuda-Kinen
|
|
||||||
Takarazuka-Kinen
|
|
||||||
Sprinters-Stakes
|
|
||||||
Shuka-Sho
|
|
||||||
Kikuka-Sho
|
|
||||||
Tenno-Sho-Autumn
|
|
||||||
Queen-Elizabeth-II-Cup
|
|
||||||
Mile-Championship
|
|
||||||
Japan-Cup
|
|
||||||
Champions-Cup
|
|
||||||
Hanshin-Juvenile-Fillies
|
|
||||||
Asahi-Hai-Futurity-Stakes
|
|
||||||
Arima-Kinen
|
|
||||||
Hopeful-Stakes
|
|
||||||
Tokyo-Daishoten
|
|
||||||
JBC-Classic
|
|
||||||
JBC-Sprint
|
|
||||||
JBC-Ladies-Classic
|
|
||||||
Japan-Dirt-Derby
|
|
||||||
Teio-Sho
|
|
||||||
Skill(skill: string)
|
|
||||||
URA-Finale
|
|
||||||
Unity-Cup
|
|
||||||
|
|
||||||
// Automatically generated.
|
|
||||||
// Equality comparison of the `generic` type.
|
|
||||||
pub fun generic/(==)(this : generic, other : generic) : e bool
|
|
||||||
match (this, other)
|
|
||||||
(February-Stakes, February-Stakes) -> True
|
|
||||||
(Takamatsunomiya-Kinen, Takamatsunomiya-Kinen) -> True
|
|
||||||
(Osaka-Hai, Osaka-Hai) -> True
|
|
||||||
(Oka-Sho, Oka-Sho) -> True
|
|
||||||
(Satsuki-Sho, Satsuki-Sho) -> True
|
|
||||||
(Tenno-Sho-Spring, Tenno-Sho-Spring) -> True
|
|
||||||
(NHK-Mile-Cup, NHK-Mile-Cup) -> True
|
|
||||||
(Victoria-Mile, Victoria-Mile) -> True
|
|
||||||
(Japanese-Oaks, Japanese-Oaks) -> True
|
|
||||||
(Japanese-Derby, Japanese-Derby) -> True
|
|
||||||
(Yasuda-Kinen, Yasuda-Kinen) -> True
|
|
||||||
(Takarazuka-Kinen, Takarazuka-Kinen) -> True
|
|
||||||
(Sprinters-Stakes, Sprinters-Stakes) -> True
|
|
||||||
(Shuka-Sho, Shuka-Sho) -> True
|
|
||||||
(Kikuka-Sho, Kikuka-Sho) -> True
|
|
||||||
(Tenno-Sho-Autumn, Tenno-Sho-Autumn) -> True
|
|
||||||
(Queen-Elizabeth-II-Cup, Queen-Elizabeth-II-Cup) -> True
|
|
||||||
(Mile-Championship, Mile-Championship) -> True
|
|
||||||
(Japan-Cup, Japan-Cup) -> True
|
|
||||||
(Champions-Cup, Champions-Cup) -> True
|
|
||||||
(Hanshin-Juvenile-Fillies, Hanshin-Juvenile-Fillies) -> True
|
|
||||||
(Asahi-Hai-Futurity-Stakes, Asahi-Hai-Futurity-Stakes) -> True
|
|
||||||
(Arima-Kinen, Arima-Kinen) -> True
|
|
||||||
(Hopeful-Stakes, Hopeful-Stakes) -> True
|
|
||||||
(Tokyo-Daishoten, Tokyo-Daishoten) -> True
|
|
||||||
(JBC-Classic, JBC-Classic) -> True
|
|
||||||
(JBC-Sprint, JBC-Sprint) -> True
|
|
||||||
(JBC-Ladies-Classic, JBC-Ladies-Classic) -> True
|
|
||||||
(Japan-Dirt-Derby, Japan-Dirt-Derby) -> True
|
|
||||||
(Teio-Sho, Teio-Sho) -> True
|
|
||||||
(Skill(skill), Skill(skill')) -> skill == skill'
|
|
||||||
(URA-Finale, URA-Finale) -> True
|
|
||||||
(Unity-Cup, Unity-Cup) -> True
|
|
||||||
(_, _) -> False
|
|
||||||
|
|
||||||
// Automatically generated.
|
|
||||||
// Shows a string representation of the `generic` type.
|
|
||||||
pub fun generic/show(this : generic) : e string
|
|
||||||
match this
|
|
||||||
February-Stakes -> "February Stakes"
|
|
||||||
Takamatsunomiya-Kinen -> "Takamatsunomiya Kinen"
|
|
||||||
Osaka-Hai -> "Osaka Hai"
|
|
||||||
Oka-Sho -> "Oka Sho"
|
|
||||||
Satsuki-Sho -> "Satsuki Sho"
|
|
||||||
Tenno-Sho-Spring -> "Tenno Sho Spring"
|
|
||||||
NHK-Mile-Cup -> "NHK Mile Cup"
|
|
||||||
Victoria-Mile -> "Victoria Mile"
|
|
||||||
Japanese-Oaks -> "Japanese Oaks"
|
|
||||||
Japanese-Derby -> "Japanese Derby"
|
|
||||||
Yasuda-Kinen -> "Yasuda Kinen"
|
|
||||||
Takarazuka-Kinen -> "Takarazuka Kinen"
|
|
||||||
Sprinters-Stakes -> "Sprinters Stakes"
|
|
||||||
Shuka-Sho -> "Shuka Sho"
|
|
||||||
Kikuka-Sho -> "Kikuka Sho"
|
|
||||||
Tenno-Sho-Autumn -> "Tenno Sho Autumn"
|
|
||||||
Queen-Elizabeth-II-Cup -> "Queen Elizabeth II Cup"
|
|
||||||
Mile-Championship -> "Mile Championship"
|
|
||||||
Japan-Cup -> "Japan Cup"
|
|
||||||
Champions-Cup -> "Champions Cup"
|
|
||||||
Hanshin-Juvenile-Fillies -> "Hanshin Juvenile Fillies"
|
|
||||||
Asahi-Hai-Futurity-Stakes -> "Asahi Hai Futurity Stakes"
|
|
||||||
Arima-Kinen -> "Arima Kinen"
|
|
||||||
Hopeful-Stakes -> "Hopeful Stakes"
|
|
||||||
Tokyo-Daishoten -> "Tokyo Daishoten"
|
|
||||||
JBC-Classic -> "JBC Classic"
|
|
||||||
JBC-Sprint -> "JBC Sprint"
|
|
||||||
JBC-Ladies-Classic -> "JBC Ladies Classic"
|
|
||||||
Japan-Dirt-Derby -> "Japan Dirt Derby"
|
|
||||||
Teio-Sho -> "Teio Sho"
|
|
||||||
Skill(skill) -> skill.show
|
|
||||||
URA-Finale -> "URA Finale"
|
|
||||||
Unity-Cup -> "Unity Cup"
|
|
||||||
@@ -1,70 +0,0 @@
|
|||||||
module horse/trainee
|
|
||||||
|
|
||||||
import std/data/rb-map
|
|
||||||
|
|
||||||
// Aptitudes of an umamusume being trained.
|
|
||||||
pub struct uma
|
|
||||||
turf: aptitudes
|
|
||||||
dirt: aptitudes
|
|
||||||
sprint: aptitudes
|
|
||||||
mile: aptitudes
|
|
||||||
medium: aptitudes
|
|
||||||
long: aptitudes
|
|
||||||
front-runner: aptitudes
|
|
||||||
pace-chaser: aptitudes
|
|
||||||
late-surger: aptitudes
|
|
||||||
end-closer: aptitudes
|
|
||||||
|
|
||||||
// Aptitude level distribution.
|
|
||||||
pub alias aptitudes = rbmap<level, float64>
|
|
||||||
|
|
||||||
// Starting aptitude levels.
|
|
||||||
pub type level
|
|
||||||
G
|
|
||||||
F
|
|
||||||
E
|
|
||||||
D
|
|
||||||
C
|
|
||||||
B
|
|
||||||
A
|
|
||||||
S
|
|
||||||
|
|
||||||
// Automatically generated.
|
|
||||||
// Fip comparison of the `level` type.
|
|
||||||
pub fun level/order2(this : level, other : level) : order2<level>
|
|
||||||
match (this, other)
|
|
||||||
(G, G) -> Eq2(G)
|
|
||||||
(G, other') -> Lt2(G, other')
|
|
||||||
(this', G) -> Gt2(G, this')
|
|
||||||
(F, F) -> Eq2(F)
|
|
||||||
(F, other') -> Lt2(F, other')
|
|
||||||
(this', F) -> Gt2(F, this')
|
|
||||||
(E, E) -> Eq2(E)
|
|
||||||
(E, other') -> Lt2(E, other')
|
|
||||||
(this', E) -> Gt2(E, this')
|
|
||||||
(D, D) -> Eq2(D)
|
|
||||||
(D, other') -> Lt2(D, other')
|
|
||||||
(this', D) -> Gt2(D, this')
|
|
||||||
(C, C) -> Eq2(C)
|
|
||||||
(C, other') -> Lt2(C, other')
|
|
||||||
(this', C) -> Gt2(C, this')
|
|
||||||
(B, B) -> Eq2(B)
|
|
||||||
(B, other') -> Lt2(B, other')
|
|
||||||
(this', B) -> Gt2(B, this')
|
|
||||||
(A, A) -> Eq2(A)
|
|
||||||
(A, other') -> Lt2(A, other')
|
|
||||||
(this', A) -> Gt2(A, this')
|
|
||||||
(S, S) -> Eq2(S)
|
|
||||||
|
|
||||||
// Automatically generated.
|
|
||||||
// Shows a string representation of the `level` type.
|
|
||||||
pub fun level/show(this : level) : string
|
|
||||||
match this
|
|
||||||
G -> "G"
|
|
||||||
F -> "F"
|
|
||||||
E -> "E"
|
|
||||||
D -> "D"
|
|
||||||
C -> "C"
|
|
||||||
B -> "B"
|
|
||||||
A -> "A"
|
|
||||||
S -> "S"
|
|
||||||
@@ -0,0 +1,47 @@
|
|||||||
|
// Code generated by "stringer -type LobbyConversationLocationID -trimprefix Lobby -linecomment"; DO NOT EDIT.
|
||||||
|
|
||||||
|
package horse
|
||||||
|
|
||||||
|
import "strconv"
|
||||||
|
|
||||||
|
func _() {
|
||||||
|
// An "invalid array index" compiler error signifies that the constant values have changed.
|
||||||
|
// Re-run the stringer command to generate them again.
|
||||||
|
var x [1]struct{}
|
||||||
|
_ = x[LobbyRightFront1-110]
|
||||||
|
_ = x[LobbyRightFront2-120]
|
||||||
|
_ = x[LobbyRightFront3-130]
|
||||||
|
_ = x[LobbyLeftTable1-210]
|
||||||
|
_ = x[LobbyLeftTable2-220]
|
||||||
|
_ = x[LobbyBackSeat-310]
|
||||||
|
_ = x[LobbyPosters1-410]
|
||||||
|
_ = x[LobbyPosters2-420]
|
||||||
|
_ = x[LobbyPosters3-430]
|
||||||
|
_ = x[LobbySchoolMap1-510]
|
||||||
|
_ = x[LobbySchoolMap2-520]
|
||||||
|
_ = x[LobbySchoolMap3-530]
|
||||||
|
}
|
||||||
|
|
||||||
|
const _LobbyConversationLocationID_name = "right side frontright side frontright side frontleft side tableleft side tablecenter back seatcenter posterscenter posterscenter postersleft side school mapleft side school mapleft side school map"
|
||||||
|
|
||||||
|
var _LobbyConversationLocationID_map = map[LobbyConversationLocationID]string{
|
||||||
|
110: _LobbyConversationLocationID_name[0:16],
|
||||||
|
120: _LobbyConversationLocationID_name[16:32],
|
||||||
|
130: _LobbyConversationLocationID_name[32:48],
|
||||||
|
210: _LobbyConversationLocationID_name[48:63],
|
||||||
|
220: _LobbyConversationLocationID_name[63:78],
|
||||||
|
310: _LobbyConversationLocationID_name[78:94],
|
||||||
|
410: _LobbyConversationLocationID_name[94:108],
|
||||||
|
420: _LobbyConversationLocationID_name[108:122],
|
||||||
|
430: _LobbyConversationLocationID_name[122:136],
|
||||||
|
510: _LobbyConversationLocationID_name[136:156],
|
||||||
|
520: _LobbyConversationLocationID_name[156:176],
|
||||||
|
530: _LobbyConversationLocationID_name[176:196],
|
||||||
|
}
|
||||||
|
|
||||||
|
func (i LobbyConversationLocationID) String() string {
|
||||||
|
if str, ok := _LobbyConversationLocationID_map[i]; ok {
|
||||||
|
return str
|
||||||
|
}
|
||||||
|
return "LobbyConversationLocationID(" + strconv.FormatInt(int64(i), 10) + ")"
|
||||||
|
}
|
||||||
@@ -0,0 +1,102 @@
|
|||||||
|
package mdb
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
_ "embed"
|
||||||
|
|
||||||
|
"zombiezen.com/go/sqlite"
|
||||||
|
"zombiezen.com/go/sqlite/sqlitex"
|
||||||
|
|
||||||
|
"git.sunturtle.xyz/zephyr/horse"
|
||||||
|
)
|
||||||
|
|
||||||
|
var (
|
||||||
|
//go:embed sql/character.sql
|
||||||
|
characterSQL string
|
||||||
|
//go:embed sql/affinity.sql
|
||||||
|
affinitySQL string
|
||||||
|
//go:embed sql/affinity-detail.sql
|
||||||
|
affinityDetailSQL string
|
||||||
|
//go:embed sql/uma.sql
|
||||||
|
umaSQL string
|
||||||
|
//go:embed sql/conversation.sql
|
||||||
|
conversationSQL string
|
||||||
|
)
|
||||||
|
|
||||||
|
// Characters retrieves all named characters.
|
||||||
|
func Characters(ctx context.Context, db *sqlitex.Pool) ([]horse.Character, error) {
|
||||||
|
return load(ctx, db, make([]horse.Character, 0, 128), characterSQL, func(s *sqlite.Stmt) horse.Character {
|
||||||
|
return horse.Character{
|
||||||
|
ID: horse.CharacterID(s.ColumnInt(0)),
|
||||||
|
Name: s.ColumnText(1),
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// AffinitySummary gets precomputed base affinity for all pairs and trios of characters.
|
||||||
|
func AffinitySummary(ctx context.Context, db *sqlitex.Pool) ([]horse.AffinityRelation, error) {
|
||||||
|
return load(ctx, db, nil, affinitySQL, func(s *sqlite.Stmt) horse.AffinityRelation {
|
||||||
|
return horse.AffinityRelation{
|
||||||
|
IDA: horse.CharacterID(s.ColumnInt(0)),
|
||||||
|
IDB: horse.CharacterID(s.ColumnInt(1)),
|
||||||
|
IDC: horse.CharacterID(s.ColumnInt(2)),
|
||||||
|
Affinity: s.ColumnInt(3),
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// AffinityDetail gets all individual affinity group entries.
|
||||||
|
func AffinityDetail(ctx context.Context, db *sqlitex.Pool) ([]horse.AffinityDetail, error) {
|
||||||
|
return load(ctx, db, nil, affinityDetailSQL, func(s *sqlite.Stmt) horse.AffinityDetail {
|
||||||
|
return horse.AffinityDetail{
|
||||||
|
CharaID: horse.CharacterID(s.ColumnInt(0)),
|
||||||
|
Relation: uint16(s.ColumnInt(1)),
|
||||||
|
Affinity: uint16(s.ColumnInt(2)),
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// Umas retrieves all trainable Uma variants.
|
||||||
|
func Umas(ctx context.Context, db *sqlitex.Pool) ([]horse.Uma, error) {
|
||||||
|
return load(ctx, db, make([]horse.Uma, 0, 128), umaSQL, func(s *sqlite.Stmt) horse.Uma {
|
||||||
|
return horse.Uma{
|
||||||
|
ID: horse.UmaID(s.ColumnInt(0)),
|
||||||
|
CharacterID: horse.CharacterID(s.ColumnInt(1)),
|
||||||
|
Name: s.ColumnText(2),
|
||||||
|
Variant: s.ColumnText(3),
|
||||||
|
Sprint: horse.AptitudeLevel(s.ColumnInt(5)),
|
||||||
|
Mile: horse.AptitudeLevel(s.ColumnInt(6)),
|
||||||
|
Medium: horse.AptitudeLevel(s.ColumnInt(7)),
|
||||||
|
Long: horse.AptitudeLevel(s.ColumnInt(8)),
|
||||||
|
Front: horse.AptitudeLevel(s.ColumnInt(9)),
|
||||||
|
Pace: horse.AptitudeLevel(s.ColumnInt(10)),
|
||||||
|
Late: horse.AptitudeLevel(s.ColumnInt(11)),
|
||||||
|
End: horse.AptitudeLevel(s.ColumnInt(12)),
|
||||||
|
Turf: horse.AptitudeLevel(s.ColumnInt(13)),
|
||||||
|
Dirt: horse.AptitudeLevel(s.ColumnInt(14)),
|
||||||
|
Unique: horse.SkillID(s.ColumnInt(15)),
|
||||||
|
Skill1: horse.SkillID(s.ColumnInt(16)),
|
||||||
|
Skill2: horse.SkillID(s.ColumnInt(17)),
|
||||||
|
Skill3: horse.SkillID(s.ColumnInt(18)),
|
||||||
|
SkillPL2: horse.SkillID(s.ColumnInt(19)),
|
||||||
|
SkillPL3: horse.SkillID(s.ColumnInt(20)),
|
||||||
|
SkillPL4: horse.SkillID(s.ColumnInt(21)),
|
||||||
|
SkillPL5: horse.SkillID(s.ColumnInt(22)),
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
func Conversations(ctx context.Context, db *sqlitex.Pool) ([]horse.Conversation, error) {
|
||||||
|
return load(ctx, db, make([]horse.Conversation, 0, 1024), conversationSQL, func(s *sqlite.Stmt) horse.Conversation {
|
||||||
|
return horse.Conversation{
|
||||||
|
ID: s.ColumnInt32(0),
|
||||||
|
CharacterID: horse.CharacterID(s.ColumnInt(1)),
|
||||||
|
Number: s.ColumnInt(2),
|
||||||
|
Location: horse.LobbyConversationLocationID(s.ColumnInt(3)),
|
||||||
|
Chara1: horse.CharacterID(s.ColumnInt(4)),
|
||||||
|
Chara2: horse.CharacterID(s.ColumnInt(5)),
|
||||||
|
Chara3: horse.CharacterID(s.ColumnInt(6)),
|
||||||
|
ConditionType: s.ColumnInt(7),
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
@@ -0,0 +1,336 @@
|
|||||||
|
package mdb_test
|
||||||
|
|
||||||
|
import (
|
||||||
|
_ "embed"
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"git.sunturtle.xyz/zephyr/horse"
|
||||||
|
"git.sunturtle.xyz/zephyr/horse/mdb"
|
||||||
|
"github.com/google/go-cmp/cmp"
|
||||||
|
)
|
||||||
|
|
||||||
|
//go:embed testdata/character.sql
|
||||||
|
var characterSQL string
|
||||||
|
|
||||||
|
func TestCharacters(t *testing.T) {
|
||||||
|
db := testdb(t.Context(), "file:TestCharacters?mode=memory&cache=shared", characterSQL)
|
||||||
|
got, err := mdb.Characters(t.Context(), db)
|
||||||
|
if err != nil {
|
||||||
|
t.Error(err)
|
||||||
|
}
|
||||||
|
want := []horse.Character{
|
||||||
|
{ID: 1001, Name: "Special Week"},
|
||||||
|
{ID: 1002, Name: "Silence Suzuka"},
|
||||||
|
{ID: 1078, Name: "Yamanin Zephyr"},
|
||||||
|
{ID: 2001, Name: "Happy Meek"},
|
||||||
|
{ID: 9001, Name: "Tazuna Hayakawa"},
|
||||||
|
}
|
||||||
|
if diff := cmp.Diff(want, got); diff != "" {
|
||||||
|
t.Errorf("wrong characters (+got/-want):\n%s", diff)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestAffinitySummary(t *testing.T) {
|
||||||
|
db := testdb(t.Context(), "file:TestAffinitySummary?mode=memory&cache=shared", characterSQL)
|
||||||
|
got, err := mdb.AffinitySummary(t.Context(), db)
|
||||||
|
if err != nil {
|
||||||
|
t.Error(err)
|
||||||
|
}
|
||||||
|
want := []horse.AffinityRelation{
|
||||||
|
{IDA: 1001, IDB: 1002, Affinity: 23},
|
||||||
|
}
|
||||||
|
if diff := cmp.Diff(want, got); diff != "" {
|
||||||
|
t.Errorf("wrong affinity (+got/-want):\n%s", diff)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestAffinityDetail(t *testing.T) {
|
||||||
|
db := testdb(t.Context(), "file:TestAffinityDetail?mode=memory&cache=shared", characterSQL)
|
||||||
|
got, err := mdb.AffinityDetail(t.Context(), db)
|
||||||
|
if err != nil {
|
||||||
|
t.Error(err)
|
||||||
|
}
|
||||||
|
want := []horse.AffinityDetail{
|
||||||
|
{CharaID: 1001, Relation: 103, Affinity: 2},
|
||||||
|
{CharaID: 1001, Relation: 202, Affinity: 2},
|
||||||
|
{CharaID: 1001, Relation: 301, Affinity: 2},
|
||||||
|
{CharaID: 1001, Relation: 401, Affinity: 2},
|
||||||
|
{CharaID: 1001, Relation: 502, Affinity: 2},
|
||||||
|
{CharaID: 1001, Relation: 510, Affinity: 2},
|
||||||
|
{CharaID: 1001, Relation: 2001, Affinity: 1},
|
||||||
|
{CharaID: 1001, Relation: 2102, Affinity: 1},
|
||||||
|
{CharaID: 1001, Relation: 2301, Affinity: 1},
|
||||||
|
{CharaID: 1001, Relation: 2406, Affinity: 1},
|
||||||
|
{CharaID: 1001, Relation: 2506, Affinity: 1},
|
||||||
|
{CharaID: 1001, Relation: 2510, Affinity: 1},
|
||||||
|
{CharaID: 1001, Relation: 2516, Affinity: 1},
|
||||||
|
{CharaID: 1001, Relation: 2519, Affinity: 1},
|
||||||
|
{CharaID: 1001, Relation: 2601, Affinity: 1},
|
||||||
|
{CharaID: 1001, Relation: 2603, Affinity: 1},
|
||||||
|
{CharaID: 1001, Relation: 2811, Affinity: 1},
|
||||||
|
{CharaID: 1001, Relation: 2903, Affinity: 7},
|
||||||
|
{CharaID: 1001, Relation: 3003, Affinity: 7},
|
||||||
|
{CharaID: 1001, Relation: 3004, Affinity: 7},
|
||||||
|
{CharaID: 1001, Relation: 3101, Affinity: 7},
|
||||||
|
{CharaID: 1001, Relation: 3205, Affinity: 1},
|
||||||
|
{CharaID: 1001, Relation: 7003, Affinity: 1},
|
||||||
|
{CharaID: 1001, Relation: 7004, Affinity: 1},
|
||||||
|
{CharaID: 1001, Relation: 7005, Affinity: 1},
|
||||||
|
{CharaID: 1001, Relation: 7006, Affinity: 1},
|
||||||
|
{CharaID: 1001, Relation: 7007, Affinity: 1},
|
||||||
|
{CharaID: 1001, Relation: 8001, Affinity: 1},
|
||||||
|
{CharaID: 1001, Relation: 8002, Affinity: 1},
|
||||||
|
{CharaID: 1001, Relation: 8003, Affinity: 1},
|
||||||
|
{CharaID: 1001, Relation: 8004, Affinity: 1},
|
||||||
|
{CharaID: 1001, Relation: 8005, Affinity: 1},
|
||||||
|
{CharaID: 1001, Relation: 8006, Affinity: 1},
|
||||||
|
{CharaID: 1001, Relation: 8007, Affinity: 1},
|
||||||
|
{CharaID: 1001, Relation: 8008, Affinity: 1},
|
||||||
|
{CharaID: 1001, Relation: 8009, Affinity: 1},
|
||||||
|
{CharaID: 1001, Relation: 8010, Affinity: 1},
|
||||||
|
{CharaID: 1001, Relation: 8011, Affinity: 1},
|
||||||
|
{CharaID: 1001, Relation: 8012, Affinity: 1},
|
||||||
|
{CharaID: 1001, Relation: 8013, Affinity: 1},
|
||||||
|
{CharaID: 1001, Relation: 8014, Affinity: 1},
|
||||||
|
{CharaID: 1001, Relation: 8015, Affinity: 1},
|
||||||
|
{CharaID: 1001, Relation: 8016, Affinity: 1},
|
||||||
|
{CharaID: 1001, Relation: 8443, Affinity: 1},
|
||||||
|
{CharaID: 1001, Relation: 8479, Affinity: 1},
|
||||||
|
{CharaID: 1001, Relation: 8511, Affinity: 1},
|
||||||
|
{CharaID: 1001, Relation: 8536, Affinity: 1},
|
||||||
|
{CharaID: 1001, Relation: 8640, Affinity: 1},
|
||||||
|
{CharaID: 1002, Relation: 104, Affinity: 2},
|
||||||
|
{CharaID: 1002, Relation: 202, Affinity: 2},
|
||||||
|
{CharaID: 1002, Relation: 301, Affinity: 2},
|
||||||
|
{CharaID: 1002, Relation: 402, Affinity: 2},
|
||||||
|
{CharaID: 1002, Relation: 2001, Affinity: 1},
|
||||||
|
{CharaID: 1002, Relation: 2406, Affinity: 1},
|
||||||
|
{CharaID: 1002, Relation: 2512, Affinity: 1},
|
||||||
|
{CharaID: 1002, Relation: 2601, Affinity: 1},
|
||||||
|
{CharaID: 1002, Relation: 2603, Affinity: 1},
|
||||||
|
{CharaID: 1002, Relation: 2810, Affinity: 1},
|
||||||
|
{CharaID: 1002, Relation: 2901, Affinity: 7},
|
||||||
|
{CharaID: 1002, Relation: 3003, Affinity: 7},
|
||||||
|
{CharaID: 1002, Relation: 3101, Affinity: 7},
|
||||||
|
{CharaID: 1002, Relation: 3205, Affinity: 1},
|
||||||
|
{CharaID: 1002, Relation: 7000, Affinity: 1},
|
||||||
|
{CharaID: 1002, Relation: 7001, Affinity: 1},
|
||||||
|
{CharaID: 1002, Relation: 7002, Affinity: 1},
|
||||||
|
{CharaID: 1002, Relation: 7013, Affinity: 1},
|
||||||
|
{CharaID: 1002, Relation: 7015, Affinity: 1},
|
||||||
|
{CharaID: 1002, Relation: 8017, Affinity: 1},
|
||||||
|
{CharaID: 1002, Relation: 8018, Affinity: 1},
|
||||||
|
{CharaID: 1002, Relation: 8019, Affinity: 1},
|
||||||
|
{CharaID: 1002, Relation: 8020, Affinity: 1},
|
||||||
|
{CharaID: 1002, Relation: 8021, Affinity: 1},
|
||||||
|
{CharaID: 1002, Relation: 8022, Affinity: 1},
|
||||||
|
{CharaID: 1002, Relation: 8023, Affinity: 1},
|
||||||
|
{CharaID: 1002, Relation: 8024, Affinity: 1},
|
||||||
|
{CharaID: 1002, Relation: 8025, Affinity: 1},
|
||||||
|
{CharaID: 1002, Relation: 8026, Affinity: 1},
|
||||||
|
{CharaID: 1002, Relation: 8027, Affinity: 1},
|
||||||
|
{CharaID: 1002, Relation: 8028, Affinity: 1},
|
||||||
|
{CharaID: 1002, Relation: 8029, Affinity: 1},
|
||||||
|
{CharaID: 1002, Relation: 8030, Affinity: 1},
|
||||||
|
{CharaID: 1002, Relation: 8031, Affinity: 1},
|
||||||
|
{CharaID: 1002, Relation: 8032, Affinity: 1},
|
||||||
|
{CharaID: 1002, Relation: 8444, Affinity: 1},
|
||||||
|
{CharaID: 1002, Relation: 8480, Affinity: 1},
|
||||||
|
{CharaID: 1002, Relation: 8512, Affinity: 1},
|
||||||
|
{CharaID: 1002, Relation: 8537, Affinity: 1},
|
||||||
|
{CharaID: 1002, Relation: 8641, Affinity: 1},
|
||||||
|
}
|
||||||
|
if diff := cmp.Diff(want, got); diff != "" {
|
||||||
|
t.Errorf("wrong affinity details (+got/-want):\n%s", diff)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestUmas(t *testing.T) {
|
||||||
|
db := testdb(t.Context(), "file:TestUmas?mode=memory&cache=shared", characterSQL)
|
||||||
|
got, err := mdb.Umas(t.Context(), db)
|
||||||
|
if err != nil {
|
||||||
|
t.Error(err)
|
||||||
|
}
|
||||||
|
want := []horse.Uma{
|
||||||
|
{
|
||||||
|
ID: 100101,
|
||||||
|
CharacterID: 1001,
|
||||||
|
Name: `[Special Dreamer] Special Week`,
|
||||||
|
Variant: `[Special Dreamer]`,
|
||||||
|
Sprint: 2,
|
||||||
|
Mile: 5,
|
||||||
|
Medium: 7,
|
||||||
|
Long: 7,
|
||||||
|
Front: 1,
|
||||||
|
Pace: 7,
|
||||||
|
Late: 7,
|
||||||
|
End: 5,
|
||||||
|
Turf: 7,
|
||||||
|
Dirt: 1,
|
||||||
|
Unique: 100011,
|
||||||
|
Skill1: 200512,
|
||||||
|
Skill2: 201352,
|
||||||
|
Skill3: 200732,
|
||||||
|
SkillPL2: 200162,
|
||||||
|
SkillPL3: 201351,
|
||||||
|
SkillPL4: 200612,
|
||||||
|
SkillPL5: 200511,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
ID: 100102,
|
||||||
|
CharacterID: 1001,
|
||||||
|
Name: `[Hopp'n♪Happy Heart] Special Week`,
|
||||||
|
Variant: `[Hopp'n♪Happy Heart]`,
|
||||||
|
Sprint: 2,
|
||||||
|
Mile: 5,
|
||||||
|
Medium: 7,
|
||||||
|
Long: 7,
|
||||||
|
Front: 1,
|
||||||
|
Pace: 7,
|
||||||
|
Late: 7,
|
||||||
|
End: 5,
|
||||||
|
Turf: 7,
|
||||||
|
Dirt: 1,
|
||||||
|
Unique: 110011,
|
||||||
|
Skill1: 200462,
|
||||||
|
Skill2: 200592,
|
||||||
|
Skill3: 201132,
|
||||||
|
SkillPL2: 200212,
|
||||||
|
SkillPL3: 200591,
|
||||||
|
SkillPL4: 201611,
|
||||||
|
SkillPL5: 200461,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
ID: 100201,
|
||||||
|
CharacterID: 1002,
|
||||||
|
Name: `[Innocent Silence] Silence Suzuka`,
|
||||||
|
Variant: `[Innocent Silence]`,
|
||||||
|
Sprint: 4,
|
||||||
|
Mile: 7,
|
||||||
|
Medium: 7,
|
||||||
|
Long: 3,
|
||||||
|
Front: 7,
|
||||||
|
Pace: 5,
|
||||||
|
Late: 3,
|
||||||
|
End: 1,
|
||||||
|
Turf: 7,
|
||||||
|
Dirt: 1,
|
||||||
|
Unique: 100021,
|
||||||
|
Skill1: 200432,
|
||||||
|
Skill2: 200552,
|
||||||
|
Skill3: 200712,
|
||||||
|
SkillPL2: 200022,
|
||||||
|
SkillPL3: 200431,
|
||||||
|
SkillPL4: 200542,
|
||||||
|
SkillPL5: 200551,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
if diff := cmp.Diff(want, got); diff != "" {
|
||||||
|
t.Errorf("wrong umas (+got/-want):\n%s", diff)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestConversations(t *testing.T) {
|
||||||
|
db := testdb(t.Context(), "file:TestConversations?mode=memory&cache=shared", characterSQL)
|
||||||
|
got, err := mdb.Conversations(t.Context(), db)
|
||||||
|
if err != nil {
|
||||||
|
t.Error(err)
|
||||||
|
}
|
||||||
|
want := []horse.Conversation{
|
||||||
|
{
|
||||||
|
ID: 1,
|
||||||
|
CharacterID: 1001,
|
||||||
|
Number: 1,
|
||||||
|
Location: 410,
|
||||||
|
Chara1: 1001,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
ID: 2,
|
||||||
|
CharacterID: 1001,
|
||||||
|
Number: 2,
|
||||||
|
Location: 510,
|
||||||
|
Chara1: 1001,
|
||||||
|
ConditionType: 1,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
ID: 3,
|
||||||
|
CharacterID: 1001,
|
||||||
|
Number: 3,
|
||||||
|
Location: 310,
|
||||||
|
Chara1: 1001,
|
||||||
|
ConditionType: 1,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
ID: 76,
|
||||||
|
CharacterID: 1001,
|
||||||
|
Number: 4,
|
||||||
|
Location: 120,
|
||||||
|
Chara1: 1001,
|
||||||
|
Chara2: 1002,
|
||||||
|
ConditionType: 2,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
ID: 77,
|
||||||
|
CharacterID: 1001,
|
||||||
|
Number: 5,
|
||||||
|
Location: 520,
|
||||||
|
Chara1: 1003,
|
||||||
|
Chara2: 1001,
|
||||||
|
ConditionType: 3,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
ID: 126,
|
||||||
|
CharacterID: 1001,
|
||||||
|
Number: 6,
|
||||||
|
Location: 430,
|
||||||
|
Chara1: 1001,
|
||||||
|
Chara2: 1014,
|
||||||
|
Chara3: 1011,
|
||||||
|
ConditionType: 1,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
ID: 4,
|
||||||
|
CharacterID: 1002,
|
||||||
|
Number: 1,
|
||||||
|
Location: 310,
|
||||||
|
Chara1: 1002,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
ID: 5,
|
||||||
|
CharacterID: 1002,
|
||||||
|
Number: 2,
|
||||||
|
Location: 210,
|
||||||
|
Chara1: 1002,
|
||||||
|
ConditionType: 1,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
ID: 6,
|
||||||
|
CharacterID: 1002,
|
||||||
|
Number: 3,
|
||||||
|
Location: 110,
|
||||||
|
Chara1: 1002,
|
||||||
|
ConditionType: 1,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
ID: 78,
|
||||||
|
CharacterID: 1002,
|
||||||
|
Number: 4,
|
||||||
|
Location: 520,
|
||||||
|
Chara1: 1010,
|
||||||
|
Chara2: 1002,
|
||||||
|
ConditionType: 3,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
ID: 79,
|
||||||
|
CharacterID: 1002,
|
||||||
|
Number: 5,
|
||||||
|
Location: 220,
|
||||||
|
Chara1: 1002,
|
||||||
|
Chara2: 1018,
|
||||||
|
ConditionType: 2,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
if diff := cmp.Diff(want, got); diff != "" {
|
||||||
|
t.Errorf("wrong conversations (+got/-want):\n%s", diff)
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,72 @@
|
|||||||
|
{
|
||||||
|
"courseParams": [
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
3,
|
||||||
|
275
|
||||||
|
],
|
||||||
|
"_distance": 400.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
4,
|
||||||
|
259
|
||||||
|
],
|
||||||
|
"_distance": 675.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"_distance": 0.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"_distance": 400.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 934.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 1200.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 4,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 725.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 5,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 735.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 8,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 725.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 9,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 735.0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -0,0 +1,80 @@
|
|||||||
|
{
|
||||||
|
"courseParams": [
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
275
|
||||||
|
],
|
||||||
|
"_distance": 150.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
3,
|
||||||
|
275
|
||||||
|
],
|
||||||
|
"_distance": 700.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
4,
|
||||||
|
259
|
||||||
|
],
|
||||||
|
"_distance": 975.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"_distance": 425.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"_distance": 700.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 1234.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 1500.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 4,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 1025.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 5,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 1035.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 8,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 1025.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 9,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 1035.0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -0,0 +1,104 @@
|
|||||||
|
{
|
||||||
|
"courseParams": [
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
275
|
||||||
|
],
|
||||||
|
"_distance": 175.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
275
|
||||||
|
],
|
||||||
|
"_distance": 450.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
3,
|
||||||
|
275
|
||||||
|
],
|
||||||
|
"_distance": 1000.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
4,
|
||||||
|
259
|
||||||
|
],
|
||||||
|
"_distance": 1275.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 0.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 175.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"_distance": 725.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"_distance": 1000.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 1534.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 1800.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 4,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 1325.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 5,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 1335.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 8,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 1325.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 9,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 1335.0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -0,0 +1,104 @@
|
|||||||
|
{
|
||||||
|
"courseParams": [
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
275
|
||||||
|
],
|
||||||
|
"_distance": 375.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
275
|
||||||
|
],
|
||||||
|
"_distance": 650.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
3,
|
||||||
|
275
|
||||||
|
],
|
||||||
|
"_distance": 1200.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
4,
|
||||||
|
259
|
||||||
|
],
|
||||||
|
"_distance": 1475.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 0.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 375.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"_distance": 925.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"_distance": 1200.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 1734.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 2000.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 4,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 1525.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 5,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 1535.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 8,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 1525.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 9,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 1535.0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -0,0 +1,136 @@
|
|||||||
|
{
|
||||||
|
"courseParams": [
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
3,
|
||||||
|
275
|
||||||
|
],
|
||||||
|
"_distance": 175.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
4,
|
||||||
|
275
|
||||||
|
],
|
||||||
|
"_distance": 450.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
275
|
||||||
|
],
|
||||||
|
"_distance": 975.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
275
|
||||||
|
],
|
||||||
|
"_distance": 1250.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
3,
|
||||||
|
275
|
||||||
|
],
|
||||||
|
"_distance": 1800.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
4,
|
||||||
|
259
|
||||||
|
],
|
||||||
|
"_distance": 2075.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"_distance": 0.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"_distance": 175.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 725.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 975.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"_distance": 1525.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"_distance": 1800.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 2334.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 2600.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 4,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 2125.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 5,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 2135.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 8,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 2125.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 9,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 2135.0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -0,0 +1,72 @@
|
|||||||
|
{
|
||||||
|
"courseParams": [
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
3,
|
||||||
|
230
|
||||||
|
],
|
||||||
|
"_distance": 280.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
4,
|
||||||
|
226
|
||||||
|
],
|
||||||
|
"_distance": 510.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"_distance": 0.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"_distance": 280.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 736.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 1000.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 4,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 550.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 5,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 560.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 8,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 550.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 9,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 560.0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -0,0 +1,104 @@
|
|||||||
|
{
|
||||||
|
"courseParams": [
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
230
|
||||||
|
],
|
||||||
|
"_distance": 240.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
230
|
||||||
|
],
|
||||||
|
"_distance": 470.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
3,
|
||||||
|
230
|
||||||
|
],
|
||||||
|
"_distance": 980.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
4,
|
||||||
|
226
|
||||||
|
],
|
||||||
|
"_distance": 1210.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 0.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 240.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"_distance": 700.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"_distance": 980.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 1436.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 1700.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 4,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 1250.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 5,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 1260.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 8,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 1250.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 9,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 1260.0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -0,0 +1,136 @@
|
|||||||
|
{
|
||||||
|
"courseParams": [
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
3,
|
||||||
|
230
|
||||||
|
],
|
||||||
|
"_distance": 200.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
4,
|
||||||
|
230
|
||||||
|
],
|
||||||
|
"_distance": 430.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
230
|
||||||
|
],
|
||||||
|
"_distance": 940.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
230
|
||||||
|
],
|
||||||
|
"_distance": 1170.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
3,
|
||||||
|
230
|
||||||
|
],
|
||||||
|
"_distance": 1680.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
4,
|
||||||
|
226
|
||||||
|
],
|
||||||
|
"_distance": 1910.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"_distance": 0.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"_distance": 200.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 660.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 940.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"_distance": 1408.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"_distance": 1680.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 2136.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 2400.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 4,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 1950.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 5,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 1960.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 8,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 1950.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 9,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 1960.0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -0,0 +1,80 @@
|
|||||||
|
{
|
||||||
|
"courseParams": [
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
3,
|
||||||
|
220
|
||||||
|
],
|
||||||
|
"_distance": 310.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
4,
|
||||||
|
208
|
||||||
|
],
|
||||||
|
"_distance": 530.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"_distance": 0.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"_distance": 310.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 738.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 1000.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 4,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 600.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 5,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 610.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 8,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 600.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 9,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 610.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 11,
|
||||||
|
"_values": [
|
||||||
|
10000,
|
||||||
|
555
|
||||||
|
],
|
||||||
|
"_distance": 0.0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -0,0 +1,80 @@
|
|||||||
|
{
|
||||||
|
"courseParams": [
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
3,
|
||||||
|
220
|
||||||
|
],
|
||||||
|
"_distance": 510.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
4,
|
||||||
|
208
|
||||||
|
],
|
||||||
|
"_distance": 730.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"_distance": 0.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"_distance": 510.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 938.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 1200.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 4,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 800.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 5,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 810.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 8,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 800.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 9,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 810.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 11,
|
||||||
|
"_values": [
|
||||||
|
10000,
|
||||||
|
755
|
||||||
|
],
|
||||||
|
"_distance": 0.0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -0,0 +1,120 @@
|
|||||||
|
{
|
||||||
|
"courseParams": [
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
220
|
||||||
|
],
|
||||||
|
"_distance": 320.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
220
|
||||||
|
],
|
||||||
|
"_distance": 540.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
3,
|
||||||
|
220
|
||||||
|
],
|
||||||
|
"_distance": 1110.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
4,
|
||||||
|
208
|
||||||
|
],
|
||||||
|
"_distance": 1330.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 0.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 320.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"_distance": 760.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"_distance": 1110.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 1538.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 1800.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 4,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 1400.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 5,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 1410.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 8,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 1400.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 9,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 1410.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 11,
|
||||||
|
"_values": [
|
||||||
|
-10000,
|
||||||
|
200
|
||||||
|
],
|
||||||
|
"_distance": 220.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 11,
|
||||||
|
"_values": [
|
||||||
|
10000,
|
||||||
|
720
|
||||||
|
],
|
||||||
|
"_distance": 665.0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -0,0 +1,120 @@
|
|||||||
|
{
|
||||||
|
"courseParams": [
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
220
|
||||||
|
],
|
||||||
|
"_distance": 520.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
220
|
||||||
|
],
|
||||||
|
"_distance": 740.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
3,
|
||||||
|
220
|
||||||
|
],
|
||||||
|
"_distance": 1310.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
4,
|
||||||
|
208
|
||||||
|
],
|
||||||
|
"_distance": 1530.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 0.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 520.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"_distance": 960.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"_distance": 1310.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 1738.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 2000.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 4,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 1600.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 5,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 1610.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 8,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 1600.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 9,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 1610.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 11,
|
||||||
|
"_values": [
|
||||||
|
-10000,
|
||||||
|
200
|
||||||
|
],
|
||||||
|
"_distance": 420.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 11,
|
||||||
|
"_values": [
|
||||||
|
10000,
|
||||||
|
720
|
||||||
|
],
|
||||||
|
"_distance": 865.0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -0,0 +1,160 @@
|
|||||||
|
{
|
||||||
|
"courseParams": [
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
3,
|
||||||
|
240
|
||||||
|
],
|
||||||
|
"_distance": 260.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
4,
|
||||||
|
230
|
||||||
|
],
|
||||||
|
"_distance": 500.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
220
|
||||||
|
],
|
||||||
|
"_distance": 1120.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
220
|
||||||
|
],
|
||||||
|
"_distance": 1340.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
3,
|
||||||
|
220
|
||||||
|
],
|
||||||
|
"_distance": 1910.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
4,
|
||||||
|
208
|
||||||
|
],
|
||||||
|
"_distance": 2130.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"_distance": 0.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"_distance": 260.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 730.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 1120.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"_distance": 1560.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"_distance": 1910.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 2338.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 2600.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 4,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 2200.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 5,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 2210.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 8,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 2200.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 9,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 2210.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 11,
|
||||||
|
"_values": [
|
||||||
|
10000,
|
||||||
|
495
|
||||||
|
],
|
||||||
|
"_distance": 0.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 11,
|
||||||
|
"_values": [
|
||||||
|
-10000,
|
||||||
|
200
|
||||||
|
],
|
||||||
|
"_distance": 970.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 11,
|
||||||
|
"_values": [
|
||||||
|
10000,
|
||||||
|
720
|
||||||
|
],
|
||||||
|
"_distance": 1425.0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -0,0 +1,72 @@
|
|||||||
|
{
|
||||||
|
"courseParams": [
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
3,
|
||||||
|
190
|
||||||
|
],
|
||||||
|
"_distance": 370.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
4,
|
||||||
|
180
|
||||||
|
],
|
||||||
|
"_distance": 560.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"_distance": 0.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"_distance": 370.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 740.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 1000.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 4,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 600.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 5,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 610.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 8,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 600.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 9,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 610.0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -0,0 +1,120 @@
|
|||||||
|
{
|
||||||
|
"courseParams": [
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
190
|
||||||
|
],
|
||||||
|
"_distance": 350.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
190
|
||||||
|
],
|
||||||
|
"_distance": 540.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
3,
|
||||||
|
190
|
||||||
|
],
|
||||||
|
"_distance": 1070.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
4,
|
||||||
|
180
|
||||||
|
],
|
||||||
|
"_distance": 1260.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 0.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 350.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"_distance": 730.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"_distance": 1070.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 1440.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 1700.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 4,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 1300.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 5,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 1310.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 8,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 1300.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 9,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 1310.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 11,
|
||||||
|
"_values": [
|
||||||
|
-10000,
|
||||||
|
340
|
||||||
|
],
|
||||||
|
"_distance": 275.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 11,
|
||||||
|
"_values": [
|
||||||
|
10000,
|
||||||
|
670
|
||||||
|
],
|
||||||
|
"_distance": 615.0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -0,0 +1,136 @@
|
|||||||
|
{
|
||||||
|
"courseParams": [
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
3,
|
||||||
|
190
|
||||||
|
],
|
||||||
|
"_distance": 292.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
4,
|
||||||
|
190
|
||||||
|
],
|
||||||
|
"_distance": 482.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
190
|
||||||
|
],
|
||||||
|
"_distance": 1040.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
190
|
||||||
|
],
|
||||||
|
"_distance": 1230.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
3,
|
||||||
|
190
|
||||||
|
],
|
||||||
|
"_distance": 1770.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
4,
|
||||||
|
180
|
||||||
|
],
|
||||||
|
"_distance": 1960.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"_distance": 0.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"_distance": 292.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 672.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 1040.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"_distance": 1420.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"_distance": 1770.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 2140.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 2400.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 4,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 2000.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 5,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 2010.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 8,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 2000.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 9,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 2010.0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -0,0 +1,63 @@
|
|||||||
|
{
|
||||||
|
"courseParams": [
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 0.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 649.9000244140625
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 650.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 1000.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 4,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 690.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 5,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 700.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 7,
|
||||||
|
"_values": [
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"_distance": 30.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 8,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 696.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 9,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 706.0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -0,0 +1,72 @@
|
|||||||
|
{
|
||||||
|
"courseParams": [
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
3,
|
||||||
|
200
|
||||||
|
],
|
||||||
|
"_distance": 450.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
4,
|
||||||
|
192
|
||||||
|
],
|
||||||
|
"_distance": 650.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"_distance": 0.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"_distance": 450.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 842.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 1200.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 4,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 725.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 5,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 735.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 8,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 750.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 9,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 760.0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -0,0 +1,72 @@
|
|||||||
|
{
|
||||||
|
"courseParams": [
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
3,
|
||||||
|
200
|
||||||
|
],
|
||||||
|
"_distance": 650.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
4,
|
||||||
|
192
|
||||||
|
],
|
||||||
|
"_distance": 850.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"_distance": 0.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"_distance": 650.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 1042.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 1400.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 4,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 925.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 5,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 935.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 8,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 950.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 9,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 960.0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -0,0 +1,88 @@
|
|||||||
|
{
|
||||||
|
"courseParams": [
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
3,
|
||||||
|
200
|
||||||
|
],
|
||||||
|
"_distance": 550.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
4,
|
||||||
|
192
|
||||||
|
],
|
||||||
|
"_distance": 750.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"_distance": 0.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"_distance": 550.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 942.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 1600.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 4,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 800.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 5,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 810.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 8,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 800.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 9,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 810.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 11,
|
||||||
|
"_values": [
|
||||||
|
10000,
|
||||||
|
350
|
||||||
|
],
|
||||||
|
"_distance": 250.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 11,
|
||||||
|
"_values": [
|
||||||
|
-15000,
|
||||||
|
300
|
||||||
|
],
|
||||||
|
"_distance": 600.0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -0,0 +1,88 @@
|
|||||||
|
{
|
||||||
|
"courseParams": [
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
3,
|
||||||
|
200
|
||||||
|
],
|
||||||
|
"_distance": 750.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
4,
|
||||||
|
192
|
||||||
|
],
|
||||||
|
"_distance": 950.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"_distance": 0.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"_distance": 750.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 1142.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 1800.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 4,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 1000.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 5,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 1010.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 8,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 1000.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 9,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 1010.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 11,
|
||||||
|
"_values": [
|
||||||
|
10000,
|
||||||
|
350
|
||||||
|
],
|
||||||
|
"_distance": 450.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 11,
|
||||||
|
"_values": [
|
||||||
|
-15000,
|
||||||
|
300
|
||||||
|
],
|
||||||
|
"_distance": 800.0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -0,0 +1,104 @@
|
|||||||
|
{
|
||||||
|
"courseParams": [
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
200
|
||||||
|
],
|
||||||
|
"_distance": 420.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
200
|
||||||
|
],
|
||||||
|
"_distance": 620.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
3,
|
||||||
|
200
|
||||||
|
],
|
||||||
|
"_distance": 1250.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
4,
|
||||||
|
192
|
||||||
|
],
|
||||||
|
"_distance": 1450.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 0.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 420.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"_distance": 820.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"_distance": 1250.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 1642.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 2000.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 4,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 1525.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 5,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 1535.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 8,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 1525.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 9,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 1535.0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -0,0 +1,88 @@
|
|||||||
|
{
|
||||||
|
"courseParams": [
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
3,
|
||||||
|
200
|
||||||
|
],
|
||||||
|
"_distance": 950.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
4,
|
||||||
|
192
|
||||||
|
],
|
||||||
|
"_distance": 1150.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"_distance": 0.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"_distance": 950.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 1342.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 2000.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 4,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 1200.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 5,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 1210.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 8,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 1200.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 9,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 1210.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 11,
|
||||||
|
"_values": [
|
||||||
|
-15000,
|
||||||
|
300
|
||||||
|
],
|
||||||
|
"_distance": 1000.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 11,
|
||||||
|
"_values": [
|
||||||
|
10000,
|
||||||
|
350
|
||||||
|
],
|
||||||
|
"_distance": 650.0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -0,0 +1,104 @@
|
|||||||
|
{
|
||||||
|
"courseParams": [
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
200
|
||||||
|
],
|
||||||
|
"_distance": 650.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
200
|
||||||
|
],
|
||||||
|
"_distance": 850.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
3,
|
||||||
|
200
|
||||||
|
],
|
||||||
|
"_distance": 1450.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
4,
|
||||||
|
192
|
||||||
|
],
|
||||||
|
"_distance": 1650.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 0.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 650.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"_distance": 1050.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"_distance": 1450.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 1842.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 2200.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 4,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 1725.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 5,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 1735.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 8,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 1725.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 9,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 1735.0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -0,0 +1,104 @@
|
|||||||
|
{
|
||||||
|
"courseParams": [
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
200
|
||||||
|
],
|
||||||
|
"_distance": 810.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
200
|
||||||
|
],
|
||||||
|
"_distance": 1010.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
3,
|
||||||
|
200
|
||||||
|
],
|
||||||
|
"_distance": 1650.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
4,
|
||||||
|
192
|
||||||
|
],
|
||||||
|
"_distance": 1850.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 0.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 810.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"_distance": 1210.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"_distance": 1650.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 2042.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 2400.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 4,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 1925.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 5,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 1935.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 8,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 1925.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 9,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 1935.0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -0,0 +1,86 @@
|
|||||||
|
{
|
||||||
|
"courseParams": [
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
3,
|
||||||
|
160
|
||||||
|
],
|
||||||
|
"_distance": 540.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
4,
|
||||||
|
147
|
||||||
|
],
|
||||||
|
"_distance": 700.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 1,
|
||||||
|
"_values": [
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 0.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 1,
|
||||||
|
"_values": [
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"_distance": 80.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"_distance": 0.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"_distance": 540.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 847.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 1200.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 4,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 750.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 5,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 760.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 8,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 815.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 9,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 825.0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -0,0 +1,104 @@
|
|||||||
|
{
|
||||||
|
"courseParams": [
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
160
|
||||||
|
],
|
||||||
|
"_distance": 400.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
160
|
||||||
|
],
|
||||||
|
"_distance": 560.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
3,
|
||||||
|
160
|
||||||
|
],
|
||||||
|
"_distance": 1140.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
4,
|
||||||
|
147
|
||||||
|
],
|
||||||
|
"_distance": 1300.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 0.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 400.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"_distance": 720.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"_distance": 1140.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 1447.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 1800.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 4,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 1350.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 5,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 1360.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 8,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 1350.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 9,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 1360.0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -0,0 +1,136 @@
|
|||||||
|
{
|
||||||
|
"courseParams": [
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
3,
|
||||||
|
160
|
||||||
|
],
|
||||||
|
"_distance": 380.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
4,
|
||||||
|
160
|
||||||
|
],
|
||||||
|
"_distance": 540.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
160
|
||||||
|
],
|
||||||
|
"_distance": 1120.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
160
|
||||||
|
],
|
||||||
|
"_distance": 1280.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
3,
|
||||||
|
160
|
||||||
|
],
|
||||||
|
"_distance": 1850.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
4,
|
||||||
|
160
|
||||||
|
],
|
||||||
|
"_distance": 2010.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"_distance": 0.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"_distance": 380.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 700.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 1120.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"_distance": 1440.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"_distance": 1850.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 2170.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 2500.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 4,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 2050.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 5,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 2060.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 8,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 2050.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 9,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 2060.0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -0,0 +1,80 @@
|
|||||||
|
{
|
||||||
|
"courseParams": [
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
3,
|
||||||
|
300
|
||||||
|
],
|
||||||
|
"_distance": 420.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
4,
|
||||||
|
188
|
||||||
|
],
|
||||||
|
"_distance": 720.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"_distance": 0.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"_distance": 420.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 908.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 1200.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 4,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 750.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 5,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 760.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 8,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 748.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 9,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 758.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 11,
|
||||||
|
"_values": [
|
||||||
|
15000,
|
||||||
|
100
|
||||||
|
],
|
||||||
|
"_distance": 180.0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -0,0 +1,112 @@
|
|||||||
|
{
|
||||||
|
"courseParams": [
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
200
|
||||||
|
],
|
||||||
|
"_distance": 330.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
200
|
||||||
|
],
|
||||||
|
"_distance": 530.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
3,
|
||||||
|
300
|
||||||
|
],
|
||||||
|
"_distance": 1020.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
4,
|
||||||
|
188
|
||||||
|
],
|
||||||
|
"_distance": 1320.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 0.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 330.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"_distance": 730.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"_distance": 1020.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 1508.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 1800.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 4,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 1350.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 5,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 1360.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 8,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 1350.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 9,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 1360.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 11,
|
||||||
|
"_values": [
|
||||||
|
15000,
|
||||||
|
100
|
||||||
|
],
|
||||||
|
"_distance": 780.0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -0,0 +1,112 @@
|
|||||||
|
{
|
||||||
|
"courseParams": [
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
200
|
||||||
|
],
|
||||||
|
"_distance": 530.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
200
|
||||||
|
],
|
||||||
|
"_distance": 730.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
3,
|
||||||
|
300
|
||||||
|
],
|
||||||
|
"_distance": 1220.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
4,
|
||||||
|
188
|
||||||
|
],
|
||||||
|
"_distance": 1520.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 0.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 530.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"_distance": 930.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"_distance": 1220.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 1708.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 2000.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 4,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 1550.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 5,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 1560.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 8,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 1550.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 9,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 1560.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 11,
|
||||||
|
"_values": [
|
||||||
|
15000,
|
||||||
|
100
|
||||||
|
],
|
||||||
|
"_distance": 980.0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -0,0 +1,152 @@
|
|||||||
|
{
|
||||||
|
"courseParams": [
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
3,
|
||||||
|
300
|
||||||
|
],
|
||||||
|
"_distance": 220.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
4,
|
||||||
|
200
|
||||||
|
],
|
||||||
|
"_distance": 520.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
200
|
||||||
|
],
|
||||||
|
"_distance": 1130.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
200
|
||||||
|
],
|
||||||
|
"_distance": 1330.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
3,
|
||||||
|
300
|
||||||
|
],
|
||||||
|
"_distance": 1820.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
4,
|
||||||
|
188
|
||||||
|
],
|
||||||
|
"_distance": 2120.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"_distance": 0.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"_distance": 220.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 720.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 1130.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"_distance": 1530.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"_distance": 1820.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 2308.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 2600.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 4,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 2150.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 5,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 2160.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 8,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 2150.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 9,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 2160.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 11,
|
||||||
|
"_values": [
|
||||||
|
15000,
|
||||||
|
80
|
||||||
|
],
|
||||||
|
"_distance": 0.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 11,
|
||||||
|
"_values": [
|
||||||
|
15000,
|
||||||
|
100
|
||||||
|
],
|
||||||
|
"_distance": 1580.0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -0,0 +1,86 @@
|
|||||||
|
{
|
||||||
|
"courseParams": [
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
3,
|
||||||
|
210
|
||||||
|
],
|
||||||
|
"_distance": 500.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
4,
|
||||||
|
145
|
||||||
|
],
|
||||||
|
"_distance": 710.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 1,
|
||||||
|
"_values": [
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 0.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 1,
|
||||||
|
"_values": [
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"_distance": 110.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"_distance": 0.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"_distance": 500.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 855.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 1150.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 4,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 751.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 5,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 761.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 8,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 751.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 9,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 761.0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -0,0 +1,132 @@
|
|||||||
|
{
|
||||||
|
"courseParams": [
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
170
|
||||||
|
],
|
||||||
|
"_distance": 360.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
170
|
||||||
|
],
|
||||||
|
"_distance": 530.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
3,
|
||||||
|
210
|
||||||
|
],
|
||||||
|
"_distance": 1050.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
4,
|
||||||
|
145
|
||||||
|
],
|
||||||
|
"_distance": 1260.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 0.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 360.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"_distance": 700.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"_distance": 1050.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 1405.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 1700.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 4,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 1301.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 5,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 1311.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 8,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 1301.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 9,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 1311.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 4,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 1301.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 5,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 1311.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 8,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 1301.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 9,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 1311.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 11,
|
||||||
|
"_values": [
|
||||||
|
-10000,
|
||||||
|
320
|
||||||
|
],
|
||||||
|
"_distance": 285.0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -0,0 +1,136 @@
|
|||||||
|
{
|
||||||
|
"courseParams": [
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
3,
|
||||||
|
210
|
||||||
|
],
|
||||||
|
"_distance": 310.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
4,
|
||||||
|
160
|
||||||
|
],
|
||||||
|
"_distance": 520.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
170
|
||||||
|
],
|
||||||
|
"_distance": 1060.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
170
|
||||||
|
],
|
||||||
|
"_distance": 1230.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
3,
|
||||||
|
210
|
||||||
|
],
|
||||||
|
"_distance": 1750.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
4,
|
||||||
|
145
|
||||||
|
],
|
||||||
|
"_distance": 1960.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"_distance": 0.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"_distance": 310.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 680.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 1060.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"_distance": 1400.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"_distance": 1750.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 2105.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 2400.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 4,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 2001.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 5,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 2011.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 8,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 2001.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 9,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 2011.0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -0,0 +1,72 @@
|
|||||||
|
{
|
||||||
|
"courseParams": [
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
3,
|
||||||
|
350
|
||||||
|
],
|
||||||
|
"_distance": 300.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
4,
|
||||||
|
240
|
||||||
|
],
|
||||||
|
"_distance": 650.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 890.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 1200.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 4,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 700.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 5,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 710.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 8,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 700.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 9,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 710.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 11,
|
||||||
|
"_values": [
|
||||||
|
-15000,
|
||||||
|
200
|
||||||
|
],
|
||||||
|
"_distance": 0.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 11,
|
||||||
|
"_values": [
|
||||||
|
20000,
|
||||||
|
110
|
||||||
|
],
|
||||||
|
"_distance": 1025.0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -0,0 +1,80 @@
|
|||||||
|
{
|
||||||
|
"courseParams": [
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
450
|
||||||
|
],
|
||||||
|
"_distance": 50.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
3,
|
||||||
|
350
|
||||||
|
],
|
||||||
|
"_distance": 700.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
4,
|
||||||
|
240
|
||||||
|
],
|
||||||
|
"_distance": 1050.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 1290.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 1600.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 4,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 1100.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 5,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 1110.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 8,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 1100.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 9,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 1110.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 11,
|
||||||
|
"_values": [
|
||||||
|
-15000,
|
||||||
|
300
|
||||||
|
],
|
||||||
|
"_distance": 300.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 11,
|
||||||
|
"_values": [
|
||||||
|
20000,
|
||||||
|
110
|
||||||
|
],
|
||||||
|
"_distance": 1425.0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -0,0 +1,136 @@
|
|||||||
|
{
|
||||||
|
"courseParams": [
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
250
|
||||||
|
],
|
||||||
|
"_distance": 175.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
250
|
||||||
|
],
|
||||||
|
"_distance": 425.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
3,
|
||||||
|
250
|
||||||
|
],
|
||||||
|
"_distance": 1000.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
4,
|
||||||
|
240
|
||||||
|
],
|
||||||
|
"_distance": 1250.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 0.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 175.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"_distance": 675.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"_distance": 1000.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 1490.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 1800.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 4,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 1300.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 5,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 1310.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 8,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 1300.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 9,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 1310.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 11,
|
||||||
|
"_values": [
|
||||||
|
20000,
|
||||||
|
35
|
||||||
|
],
|
||||||
|
"_distance": 1.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 11,
|
||||||
|
"_values": [
|
||||||
|
15000,
|
||||||
|
200
|
||||||
|
],
|
||||||
|
"_distance": 125.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 11,
|
||||||
|
"_values": [
|
||||||
|
-15000,
|
||||||
|
400
|
||||||
|
],
|
||||||
|
"_distance": 425.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 11,
|
||||||
|
"_values": [
|
||||||
|
20000,
|
||||||
|
110
|
||||||
|
],
|
||||||
|
"_distance": 1625.0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -0,0 +1,150 @@
|
|||||||
|
{
|
||||||
|
"courseParams": [
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
250
|
||||||
|
],
|
||||||
|
"_distance": 375.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
250
|
||||||
|
],
|
||||||
|
"_distance": 625.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
3,
|
||||||
|
250
|
||||||
|
],
|
||||||
|
"_distance": 1200.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
4,
|
||||||
|
240
|
||||||
|
],
|
||||||
|
"_distance": 1450.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 0.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 375.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"_distance": 875.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"_distance": 1200.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 1690.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 2000.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 3,
|
||||||
|
"_values": [
|
||||||
|
7000
|
||||||
|
],
|
||||||
|
"_distance": 875.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 3,
|
||||||
|
"_values": [
|
||||||
|
10000
|
||||||
|
],
|
||||||
|
"_distance": 1450.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 4,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 1500.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 5,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 1510.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 8,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 1500.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 9,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 1510.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 11,
|
||||||
|
"_values": [
|
||||||
|
15000,
|
||||||
|
200
|
||||||
|
],
|
||||||
|
"_distance": 325.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 11,
|
||||||
|
"_values": [
|
||||||
|
20000,
|
||||||
|
110
|
||||||
|
],
|
||||||
|
"_distance": 125.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 11,
|
||||||
|
"_values": [
|
||||||
|
-15000,
|
||||||
|
400
|
||||||
|
],
|
||||||
|
"_distance": 625.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 11,
|
||||||
|
"_values": [
|
||||||
|
20000,
|
||||||
|
110
|
||||||
|
],
|
||||||
|
"_distance": 1825.0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -0,0 +1,120 @@
|
|||||||
|
{
|
||||||
|
"courseParams": [
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
247
|
||||||
|
],
|
||||||
|
"_distance": 403.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
450
|
||||||
|
],
|
||||||
|
"_distance": 650.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
3,
|
||||||
|
350
|
||||||
|
],
|
||||||
|
"_distance": 1300.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
4,
|
||||||
|
240
|
||||||
|
],
|
||||||
|
"_distance": 1650.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 0.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 403.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 1890.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 2200.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 4,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 1700.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 5,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 1710.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 8,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 1700.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 9,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 1710.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 11,
|
||||||
|
"_values": [
|
||||||
|
20000,
|
||||||
|
110
|
||||||
|
],
|
||||||
|
"_distance": 153.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 11,
|
||||||
|
"_values": [
|
||||||
|
15000,
|
||||||
|
200
|
||||||
|
],
|
||||||
|
"_distance": 353.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 11,
|
||||||
|
"_values": [
|
||||||
|
-15000,
|
||||||
|
300
|
||||||
|
],
|
||||||
|
"_distance": 900.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 11,
|
||||||
|
"_values": [
|
||||||
|
20000,
|
||||||
|
110
|
||||||
|
],
|
||||||
|
"_distance": 2025.0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -0,0 +1,152 @@
|
|||||||
|
{
|
||||||
|
"courseParams": [
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
3,
|
||||||
|
146
|
||||||
|
],
|
||||||
|
"_distance": 100.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
4,
|
||||||
|
250
|
||||||
|
],
|
||||||
|
"_distance": 246.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
250
|
||||||
|
],
|
||||||
|
"_distance": 875.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
250
|
||||||
|
],
|
||||||
|
"_distance": 1125.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
3,
|
||||||
|
250
|
||||||
|
],
|
||||||
|
"_distance": 1700.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
4,
|
||||||
|
240
|
||||||
|
],
|
||||||
|
"_distance": 1950.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 496.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 875.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"_distance": 1375.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"_distance": 1700.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 2190.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 2500.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 4,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 2000.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 5,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 2010.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 8,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 2000.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 9,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 2010.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 11,
|
||||||
|
"_values": [
|
||||||
|
20000,
|
||||||
|
110
|
||||||
|
],
|
||||||
|
"_distance": 621.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 11,
|
||||||
|
"_values": [
|
||||||
|
15000,
|
||||||
|
200
|
||||||
|
],
|
||||||
|
"_distance": 825.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 11,
|
||||||
|
"_values": [
|
||||||
|
-15000,
|
||||||
|
400
|
||||||
|
],
|
||||||
|
"_distance": 1125.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 11,
|
||||||
|
"_values": [
|
||||||
|
20000,
|
||||||
|
110
|
||||||
|
],
|
||||||
|
"_distance": 2325.0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -0,0 +1,224 @@
|
|||||||
|
{
|
||||||
|
"courseParams": [
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
250
|
||||||
|
],
|
||||||
|
"_distance": 290.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
250
|
||||||
|
],
|
||||||
|
"_distance": 540.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
3,
|
||||||
|
250
|
||||||
|
],
|
||||||
|
"_distance": 1115.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
4,
|
||||||
|
250
|
||||||
|
],
|
||||||
|
"_distance": 1365.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
250
|
||||||
|
],
|
||||||
|
"_distance": 1975.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
250
|
||||||
|
],
|
||||||
|
"_distance": 2225.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
3,
|
||||||
|
250
|
||||||
|
],
|
||||||
|
"_distance": 2800.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
4,
|
||||||
|
240
|
||||||
|
],
|
||||||
|
"_distance": 3050.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 0.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 290.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"_distance": 790.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"_distance": 1115.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 1615.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 1975.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"_distance": 2475.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"_distance": 2800.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 3290.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 3600.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 4,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 3100.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 5,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 3110.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 8,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 3100.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 9,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 3110.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 11,
|
||||||
|
"_values": [
|
||||||
|
20000,
|
||||||
|
110
|
||||||
|
],
|
||||||
|
"_distance": 40.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 11,
|
||||||
|
"_values": [
|
||||||
|
15000,
|
||||||
|
200
|
||||||
|
],
|
||||||
|
"_distance": 240.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 11,
|
||||||
|
"_values": [
|
||||||
|
-15000,
|
||||||
|
400
|
||||||
|
],
|
||||||
|
"_distance": 540.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 11,
|
||||||
|
"_values": [
|
||||||
|
20000,
|
||||||
|
110
|
||||||
|
],
|
||||||
|
"_distance": 1740.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 11,
|
||||||
|
"_values": [
|
||||||
|
15000,
|
||||||
|
200
|
||||||
|
],
|
||||||
|
"_distance": 1925.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 11,
|
||||||
|
"_values": [
|
||||||
|
-15000,
|
||||||
|
400
|
||||||
|
],
|
||||||
|
"_distance": 2225.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 11,
|
||||||
|
"_values": [
|
||||||
|
20000,
|
||||||
|
110
|
||||||
|
],
|
||||||
|
"_distance": 3425.0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -0,0 +1,102 @@
|
|||||||
|
{
|
||||||
|
"courseParams": [
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
3,
|
||||||
|
200
|
||||||
|
],
|
||||||
|
"_distance": 500.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
4,
|
||||||
|
192
|
||||||
|
],
|
||||||
|
"_distance": 700.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 1,
|
||||||
|
"_values": [
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 0.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 1,
|
||||||
|
"_values": [
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"_distance": 110.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"_distance": 0.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"_distance": 500.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 892.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 1200.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 4,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 700.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 5,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 710.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 8,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 700.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 9,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 710.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 11,
|
||||||
|
"_values": [
|
||||||
|
-15000,
|
||||||
|
175
|
||||||
|
],
|
||||||
|
"_distance": 175.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 11,
|
||||||
|
"_values": [
|
||||||
|
15000,
|
||||||
|
175
|
||||||
|
],
|
||||||
|
"_distance": 1000.0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -0,0 +1,136 @@
|
|||||||
|
{
|
||||||
|
"courseParams": [
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
200
|
||||||
|
],
|
||||||
|
"_distance": 350.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
200
|
||||||
|
],
|
||||||
|
"_distance": 550.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
3,
|
||||||
|
200
|
||||||
|
],
|
||||||
|
"_distance": 1100.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
4,
|
||||||
|
192
|
||||||
|
],
|
||||||
|
"_distance": 1300.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 0.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 350.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 750.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"_distance": 1100.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 1492.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 1800.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 4,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 1300.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 5,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 1310.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 8,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 1300.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 9,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 1310.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 11,
|
||||||
|
"_values": [
|
||||||
|
15000,
|
||||||
|
175
|
||||||
|
],
|
||||||
|
"_distance": 100.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 11,
|
||||||
|
"_values": [
|
||||||
|
10000,
|
||||||
|
175
|
||||||
|
],
|
||||||
|
"_distance": 350.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 11,
|
||||||
|
"_values": [
|
||||||
|
-15000,
|
||||||
|
175
|
||||||
|
],
|
||||||
|
"_distance": 775.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 11,
|
||||||
|
"_values": [
|
||||||
|
15000,
|
||||||
|
175
|
||||||
|
],
|
||||||
|
"_distance": 1600.0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -0,0 +1,136 @@
|
|||||||
|
{
|
||||||
|
"courseParams": [
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
3,
|
||||||
|
200
|
||||||
|
],
|
||||||
|
"_distance": 200.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
4,
|
||||||
|
200
|
||||||
|
],
|
||||||
|
"_distance": 400.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
200
|
||||||
|
],
|
||||||
|
"_distance": 950.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
200
|
||||||
|
],
|
||||||
|
"_distance": 1150.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
3,
|
||||||
|
200
|
||||||
|
],
|
||||||
|
"_distance": 1700.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
4,
|
||||||
|
192
|
||||||
|
],
|
||||||
|
"_distance": 1900.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"_distance": 0.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"_distance": 200.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 600.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 950.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"_distance": 1350.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"_distance": 1700.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 2092.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 2400.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 4,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 1900.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 5,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 1910.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 8,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 1900.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 9,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 1910.0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -0,0 +1,136 @@
|
|||||||
|
{
|
||||||
|
"courseParams": [
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
3,
|
||||||
|
200
|
||||||
|
],
|
||||||
|
"_distance": 300.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
4,
|
||||||
|
200
|
||||||
|
],
|
||||||
|
"_distance": 500.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
200
|
||||||
|
],
|
||||||
|
"_distance": 1050.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
200
|
||||||
|
],
|
||||||
|
"_distance": 1250.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
3,
|
||||||
|
200
|
||||||
|
],
|
||||||
|
"_distance": 1800.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
4,
|
||||||
|
192
|
||||||
|
],
|
||||||
|
"_distance": 2000.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"_distance": 0.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"_distance": 300.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 700.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 1050.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"_distance": 1450.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"_distance": 1800.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 2192.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 2500.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 4,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 2000.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 5,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 2010.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 8,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 2000.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 9,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 2010.0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -0,0 +1,96 @@
|
|||||||
|
{
|
||||||
|
"courseParams": [
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
3,
|
||||||
|
275
|
||||||
|
],
|
||||||
|
"_distance": 350.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
4,
|
||||||
|
250
|
||||||
|
],
|
||||||
|
"_distance": 625.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"_distance": 0.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"_distance": 350.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 875.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 1400.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 4,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 700.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 5,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 710.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 8,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 750.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 9,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 760.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 11,
|
||||||
|
"_values": [
|
||||||
|
20000,
|
||||||
|
75
|
||||||
|
],
|
||||||
|
"_distance": 125.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 11,
|
||||||
|
"_values": [
|
||||||
|
-15000,
|
||||||
|
250
|
||||||
|
],
|
||||||
|
"_distance": 250.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 11,
|
||||||
|
"_values": [
|
||||||
|
15000,
|
||||||
|
150
|
||||||
|
],
|
||||||
|
"_distance": 950.0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -0,0 +1,96 @@
|
|||||||
|
{
|
||||||
|
"courseParams": [
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
3,
|
||||||
|
275
|
||||||
|
],
|
||||||
|
"_distance": 550.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
4,
|
||||||
|
250
|
||||||
|
],
|
||||||
|
"_distance": 825.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"_distance": 0.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"_distance": 550.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 1075.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 1600.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 4,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 900.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 5,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 910.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 8,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 950.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 9,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 960.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 11,
|
||||||
|
"_values": [
|
||||||
|
-15000,
|
||||||
|
250
|
||||||
|
],
|
||||||
|
"_distance": 450.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 11,
|
||||||
|
"_values": [
|
||||||
|
20000,
|
||||||
|
75
|
||||||
|
],
|
||||||
|
"_distance": 325.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 11,
|
||||||
|
"_values": [
|
||||||
|
15000,
|
||||||
|
150
|
||||||
|
],
|
||||||
|
"_distance": 1150.0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -0,0 +1,104 @@
|
|||||||
|
{
|
||||||
|
"courseParams": [
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
250
|
||||||
|
],
|
||||||
|
"_distance": 75.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
3,
|
||||||
|
275
|
||||||
|
],
|
||||||
|
"_distance": 750.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
4,
|
||||||
|
250
|
||||||
|
],
|
||||||
|
"_distance": 1025.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"_distance": 325.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"_distance": 750.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 1275.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 1800.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 4,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 1100.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 5,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 1110.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 8,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 1126.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 9,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 1136.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 11,
|
||||||
|
"_values": [
|
||||||
|
20000,
|
||||||
|
75
|
||||||
|
],
|
||||||
|
"_distance": 525.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 11,
|
||||||
|
"_values": [
|
||||||
|
-15000,
|
||||||
|
250
|
||||||
|
],
|
||||||
|
"_distance": 650.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 11,
|
||||||
|
"_values": [
|
||||||
|
15000,
|
||||||
|
150
|
||||||
|
],
|
||||||
|
"_distance": 1350.0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -0,0 +1,104 @@
|
|||||||
|
{
|
||||||
|
"courseParams": [
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
200
|
||||||
|
],
|
||||||
|
"_distance": 200.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
3,
|
||||||
|
275
|
||||||
|
],
|
||||||
|
"_distance": 950.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
4,
|
||||||
|
250
|
||||||
|
],
|
||||||
|
"_distance": 1225.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"_distance": 400.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"_distance": 950.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 1475.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 2000.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 4,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 1300.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 5,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 1310.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 8,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 1340.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 9,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 1350.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 11,
|
||||||
|
"_values": [
|
||||||
|
20000,
|
||||||
|
75
|
||||||
|
],
|
||||||
|
"_distance": 725.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 11,
|
||||||
|
"_values": [
|
||||||
|
-15000,
|
||||||
|
250
|
||||||
|
],
|
||||||
|
"_distance": 850.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 11,
|
||||||
|
"_values": [
|
||||||
|
15000,
|
||||||
|
150
|
||||||
|
],
|
||||||
|
"_distance": 1550.0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -0,0 +1,128 @@
|
|||||||
|
{
|
||||||
|
"courseParams": [
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
250
|
||||||
|
],
|
||||||
|
"_distance": 225.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
325
|
||||||
|
],
|
||||||
|
"_distance": 475.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
3,
|
||||||
|
275
|
||||||
|
],
|
||||||
|
"_distance": 1250.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
4,
|
||||||
|
250
|
||||||
|
],
|
||||||
|
"_distance": 1525.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 0.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 225.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"_distance": 800.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"_distance": 1250.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 1775.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 2300.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 4,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 1600.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 5,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 1610.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 8,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 1640.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 9,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 1650.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 11,
|
||||||
|
"_values": [
|
||||||
|
20000,
|
||||||
|
75
|
||||||
|
],
|
||||||
|
"_distance": 1025.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 11,
|
||||||
|
"_values": [
|
||||||
|
-15000,
|
||||||
|
250
|
||||||
|
],
|
||||||
|
"_distance": 1150.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 11,
|
||||||
|
"_values": [
|
||||||
|
15000,
|
||||||
|
150
|
||||||
|
],
|
||||||
|
"_distance": 1850.0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -0,0 +1,136 @@
|
|||||||
|
{
|
||||||
|
"courseParams": [
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
250
|
||||||
|
],
|
||||||
|
"_distance": 325.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
325
|
||||||
|
],
|
||||||
|
"_distance": 575.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
3,
|
||||||
|
275
|
||||||
|
],
|
||||||
|
"_distance": 1350.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
4,
|
||||||
|
250
|
||||||
|
],
|
||||||
|
"_distance": 1625.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 0.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 325.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"_distance": 900.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"_distance": 1350.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 1875.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 2400.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 4,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 1700.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 5,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 1710.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 8,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 1740.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 9,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 1750.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 11,
|
||||||
|
"_values": [
|
||||||
|
15000,
|
||||||
|
40
|
||||||
|
],
|
||||||
|
"_distance": 0.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 11,
|
||||||
|
"_values": [
|
||||||
|
20000,
|
||||||
|
75
|
||||||
|
],
|
||||||
|
"_distance": 1125.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 11,
|
||||||
|
"_values": [
|
||||||
|
-15000,
|
||||||
|
250
|
||||||
|
],
|
||||||
|
"_distance": 1250.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 11,
|
||||||
|
"_values": [
|
||||||
|
15000,
|
||||||
|
150
|
||||||
|
],
|
||||||
|
"_distance": 1950.0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -0,0 +1,136 @@
|
|||||||
|
{
|
||||||
|
"courseParams": [
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
250
|
||||||
|
],
|
||||||
|
"_distance": 425.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
325
|
||||||
|
],
|
||||||
|
"_distance": 675.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
3,
|
||||||
|
275
|
||||||
|
],
|
||||||
|
"_distance": 1450.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
4,
|
||||||
|
250
|
||||||
|
],
|
||||||
|
"_distance": 1725.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 0.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 425.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"_distance": 1000.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"_distance": 1450.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 1975.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 2500.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 4,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 1800.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 5,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 1810.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 8,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 1850.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 9,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 1860.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 11,
|
||||||
|
"_values": [
|
||||||
|
15000,
|
||||||
|
140
|
||||||
|
],
|
||||||
|
"_distance": 0.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 11,
|
||||||
|
"_values": [
|
||||||
|
20000,
|
||||||
|
75
|
||||||
|
],
|
||||||
|
"_distance": 1225.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 11,
|
||||||
|
"_values": [
|
||||||
|
-15000,
|
||||||
|
250
|
||||||
|
],
|
||||||
|
"_distance": 1350.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 11,
|
||||||
|
"_values": [
|
||||||
|
15000,
|
||||||
|
150
|
||||||
|
],
|
||||||
|
"_distance": 2050.0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -0,0 +1,184 @@
|
|||||||
|
{
|
||||||
|
"courseParams": [
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
3,
|
||||||
|
275
|
||||||
|
],
|
||||||
|
"_distance": 292.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
4,
|
||||||
|
275
|
||||||
|
],
|
||||||
|
"_distance": 567.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
250
|
||||||
|
],
|
||||||
|
"_distance": 1325.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
325
|
||||||
|
],
|
||||||
|
"_distance": 1575.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
3,
|
||||||
|
275
|
||||||
|
],
|
||||||
|
"_distance": 2350.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
4,
|
||||||
|
250
|
||||||
|
],
|
||||||
|
"_distance": 2625.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"_distance": 0.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"_distance": 292.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 842.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 1325.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"_distance": 1900.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"_distance": 2350.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 2875.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 3400.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 4,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 2700.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 5,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 2710.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 8,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 2750.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 9,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 2760.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 11,
|
||||||
|
"_values": [
|
||||||
|
20000,
|
||||||
|
75
|
||||||
|
],
|
||||||
|
"_distance": 67.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 11,
|
||||||
|
"_values": [
|
||||||
|
-15000,
|
||||||
|
250
|
||||||
|
],
|
||||||
|
"_distance": 192.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 11,
|
||||||
|
"_values": [
|
||||||
|
15000,
|
||||||
|
150
|
||||||
|
],
|
||||||
|
"_distance": 892.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 11,
|
||||||
|
"_values": [
|
||||||
|
20000,
|
||||||
|
75
|
||||||
|
],
|
||||||
|
"_distance": 2125.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 11,
|
||||||
|
"_values": [
|
||||||
|
-15000,
|
||||||
|
250
|
||||||
|
],
|
||||||
|
"_distance": 2250.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 11,
|
||||||
|
"_values": [
|
||||||
|
15000,
|
||||||
|
150
|
||||||
|
],
|
||||||
|
"_distance": 2950.0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -0,0 +1,88 @@
|
|||||||
|
{
|
||||||
|
"courseParams": [
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
3,
|
||||||
|
225
|
||||||
|
],
|
||||||
|
"_distance": 350.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
4,
|
||||||
|
224
|
||||||
|
],
|
||||||
|
"_distance": 575.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"_distance": 0.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"_distance": 350.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 799.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 1300.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 4,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 550.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 5,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 560.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 8,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 700.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 9,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 710.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 11,
|
||||||
|
"_values": [
|
||||||
|
-10000,
|
||||||
|
200
|
||||||
|
],
|
||||||
|
"_distance": 275.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 11,
|
||||||
|
"_values": [
|
||||||
|
15000,
|
||||||
|
250
|
||||||
|
],
|
||||||
|
"_distance": 800.0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -0,0 +1,88 @@
|
|||||||
|
{
|
||||||
|
"courseParams": [
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
3,
|
||||||
|
225
|
||||||
|
],
|
||||||
|
"_distance": 450.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
4,
|
||||||
|
224
|
||||||
|
],
|
||||||
|
"_distance": 675.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"_distance": 0.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"_distance": 450.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 899.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 1400.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 4,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 650.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 5,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 660.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 8,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 800.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 9,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 810.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 11,
|
||||||
|
"_values": [
|
||||||
|
-10000,
|
||||||
|
200
|
||||||
|
],
|
||||||
|
"_distance": 375.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 11,
|
||||||
|
"_values": [
|
||||||
|
15000,
|
||||||
|
250
|
||||||
|
],
|
||||||
|
"_distance": 900.0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -0,0 +1,102 @@
|
|||||||
|
{
|
||||||
|
"courseParams": [
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
3,
|
||||||
|
225
|
||||||
|
],
|
||||||
|
"_distance": 650.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
4,
|
||||||
|
224
|
||||||
|
],
|
||||||
|
"_distance": 875.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 1,
|
||||||
|
"_values": [
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 0.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 1,
|
||||||
|
"_values": [
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"_distance": 120.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"_distance": 0.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"_distance": 650.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 1099.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 1600.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 4,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 900.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 5,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 910.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 8,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 1000.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 9,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 1010.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 11,
|
||||||
|
"_values": [
|
||||||
|
-10000,
|
||||||
|
200
|
||||||
|
],
|
||||||
|
"_distance": 575.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 11,
|
||||||
|
"_values": [
|
||||||
|
15000,
|
||||||
|
250
|
||||||
|
],
|
||||||
|
"_distance": 1100.0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -0,0 +1,120 @@
|
|||||||
|
{
|
||||||
|
"courseParams": [
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
250
|
||||||
|
],
|
||||||
|
"_distance": 200.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
250
|
||||||
|
],
|
||||||
|
"_distance": 450.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
3,
|
||||||
|
225
|
||||||
|
],
|
||||||
|
"_distance": 1150.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
4,
|
||||||
|
224
|
||||||
|
],
|
||||||
|
"_distance": 1375.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 0.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 200.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"_distance": 700.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"_distance": 1150.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 1599.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 2100.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 4,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 1400.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 5,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 1410.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 8,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 1500.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 9,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 1510.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 11,
|
||||||
|
"_values": [
|
||||||
|
-10000,
|
||||||
|
200
|
||||||
|
],
|
||||||
|
"_distance": 1075.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 11,
|
||||||
|
"_values": [
|
||||||
|
15000,
|
||||||
|
250
|
||||||
|
],
|
||||||
|
"_distance": 1600.0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -0,0 +1,112 @@
|
|||||||
|
{
|
||||||
|
"courseParams": [
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
250
|
||||||
|
],
|
||||||
|
"_distance": 500.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
250
|
||||||
|
],
|
||||||
|
"_distance": 750.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
3,
|
||||||
|
225
|
||||||
|
],
|
||||||
|
"_distance": 1450.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
4,
|
||||||
|
225
|
||||||
|
],
|
||||||
|
"_distance": 1675.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
90,
|
||||||
|
500
|
||||||
|
],
|
||||||
|
"_distance": 2348.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 0.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 500.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"_distance": 1000.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"_distance": 1450.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 1900.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 2400.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 4,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 1800.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 5,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 1810.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 8,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 1800.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 9,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 1810.0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -0,0 +1,169 @@
|
|||||||
|
{
|
||||||
|
"courseParams": [
|
||||||
|
{
|
||||||
|
"_paramType": 1,
|
||||||
|
"_values": [
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 5.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
4,
|
||||||
|
276
|
||||||
|
],
|
||||||
|
"_distance": 205.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 4,
|
||||||
|
"_values": [
|
||||||
|
40,
|
||||||
|
6000,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"_distance": 210.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 481.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
250
|
||||||
|
],
|
||||||
|
"_distance": 1000.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 1000.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 5,
|
||||||
|
"_values": [
|
||||||
|
10,
|
||||||
|
20000
|
||||||
|
],
|
||||||
|
"_distance": 1005.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 4,
|
||||||
|
"_values": [
|
||||||
|
10,
|
||||||
|
20000,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"_distance": 1005.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
300
|
||||||
|
],
|
||||||
|
"_distance": 1250.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"_distance": 1550.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
3,
|
||||||
|
275
|
||||||
|
],
|
||||||
|
"_distance": 1950.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"_distance": 1950.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 5,
|
||||||
|
"_values": [
|
||||||
|
100,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"_distance": 1955.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
4,
|
||||||
|
275
|
||||||
|
],
|
||||||
|
"_distance": 2225.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 4,
|
||||||
|
"_values": [
|
||||||
|
40,
|
||||||
|
6000,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"_distance": 2230.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 2500.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 4,
|
||||||
|
"_values": [
|
||||||
|
50,
|
||||||
|
5000,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"_distance": 2600.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 4,
|
||||||
|
"_values": [
|
||||||
|
70,
|
||||||
|
5000,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"_distance": 2800.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 4,
|
||||||
|
"_values": [
|
||||||
|
90,
|
||||||
|
500,
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"_distance": 2950.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 3000.0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -0,0 +1,88 @@
|
|||||||
|
{
|
||||||
|
"courseParams": [
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
3,
|
||||||
|
250
|
||||||
|
],
|
||||||
|
"_distance": 300.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
4,
|
||||||
|
238
|
||||||
|
],
|
||||||
|
"_distance": 550.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"_distance": 0.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"_distance": 300.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 788.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 1200.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 4,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 790.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 5,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 800.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 8,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 790.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 9,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 800.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 11,
|
||||||
|
"_values": [
|
||||||
|
-10000,
|
||||||
|
775
|
||||||
|
],
|
||||||
|
"_distance": 100.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 11,
|
||||||
|
"_values": [
|
||||||
|
20000,
|
||||||
|
100
|
||||||
|
],
|
||||||
|
"_distance": 875.0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -0,0 +1,88 @@
|
|||||||
|
{
|
||||||
|
"courseParams": [
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
3,
|
||||||
|
250
|
||||||
|
],
|
||||||
|
"_distance": 500.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
4,
|
||||||
|
238
|
||||||
|
],
|
||||||
|
"_distance": 750.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"_distance": 0.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"_distance": 500.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 988.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 1400.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 4,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 860.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 5,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 870.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 8,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 850.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 9,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 860.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 11,
|
||||||
|
"_values": [
|
||||||
|
-10000,
|
||||||
|
775
|
||||||
|
],
|
||||||
|
"_distance": 300.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 11,
|
||||||
|
"_values": [
|
||||||
|
20000,
|
||||||
|
100
|
||||||
|
],
|
||||||
|
"_distance": 1075.0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -0,0 +1,96 @@
|
|||||||
|
{
|
||||||
|
"courseParams": [
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
150
|
||||||
|
],
|
||||||
|
"_distance": 150.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
3,
|
||||||
|
250
|
||||||
|
],
|
||||||
|
"_distance": 700.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
4,
|
||||||
|
238
|
||||||
|
],
|
||||||
|
"_distance": 950.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"_distance": 300.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"_distance": 700.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 1188.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 1600.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 4,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 1060.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 5,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 1070.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 8,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 1060.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 9,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 1070.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 11,
|
||||||
|
"_values": [
|
||||||
|
-10000,
|
||||||
|
775
|
||||||
|
],
|
||||||
|
"_distance": 500.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 11,
|
||||||
|
"_values": [
|
||||||
|
20000,
|
||||||
|
100
|
||||||
|
],
|
||||||
|
"_distance": 1275.0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -0,0 +1,128 @@
|
|||||||
|
{
|
||||||
|
"courseParams": [
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
200
|
||||||
|
],
|
||||||
|
"_distance": 300.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
200
|
||||||
|
],
|
||||||
|
"_distance": 500.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
3,
|
||||||
|
250
|
||||||
|
],
|
||||||
|
"_distance": 1100.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 0,
|
||||||
|
"_values": [
|
||||||
|
4,
|
||||||
|
238
|
||||||
|
],
|
||||||
|
"_distance": 1350.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 0.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 300.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"_distance": 700.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
2
|
||||||
|
],
|
||||||
|
"_distance": 1100.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
1,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 1588.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 2,
|
||||||
|
"_values": [
|
||||||
|
2,
|
||||||
|
1
|
||||||
|
],
|
||||||
|
"_distance": 2000.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 4,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 1460.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 5,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 1470.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 8,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 1460.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 9,
|
||||||
|
"_values": [],
|
||||||
|
"_distance": 1470.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 11,
|
||||||
|
"_values": [
|
||||||
|
20000,
|
||||||
|
50
|
||||||
|
],
|
||||||
|
"_distance": 0.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 11,
|
||||||
|
"_values": [
|
||||||
|
-10000,
|
||||||
|
775
|
||||||
|
],
|
||||||
|
"_distance": 900.0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"_paramType": 11,
|
||||||
|
"_values": [
|
||||||
|
20000,
|
||||||
|
100
|
||||||
|
],
|
||||||
|
"_distance": 1675.0
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user